<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>215275</bug_id>
          
          <creation_ts>2020-08-07 10:22:12 -0700</creation_ts>
          <short_desc>Support WebAssembly tail calls</short_desc>
          <delta_ts>2025-05-23 17:04:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Safari 13</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>249492</dependson>
    
    <dependson>265262</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alessandro Pignotti">alessandro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>carlo</cc>
    
    <cc>chi187</cc>
    
    <cc>commit-queue</cc>
    
    <cc>cryze92</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hypertree</cc>
    
    <cc>justin_michaud</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>terrorjack</cc>
    
    <cc>tom</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1678633</commentid>
    <comment_count>0</comment_count>
    <who name="Alessandro Pignotti">alessandro</who>
    <bug_when>2020-08-07 10:22:12 -0700</bug_when>
    <thetext>Hi,

we have a use case that requires WebAssembly tail calls. You can find more information in this thread: https://github.com/WebAssembly/tail-call/issues/12

From what I can see by inspecting the repo, no work has been done so far to support WebAssembly tail calls in JavaScriptCore/Safari. I want to explicitly ask if there are plans to implement this feature and what is the expected timeline, if any.

Regards,
Alessandro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680313</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-14 10:23:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/67081070&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859847</commentid>
    <comment_count>2</comment_count>
      <attachid>457113</attachid>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-04-08 12:55:19 -0700</bug_when>
    <thetext>Created attachment 457113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859851</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-04-08 12:56:59 -0700</bug_when>
    <thetext>This patch modifies one of the wasm.json files. Please ensure that any changes in one have been mirrored to the other. You can find the wasm.json files at &quot;Source/JavaScriptCore/wasm/wasm.json&quot; and &quot;JSTests/wasm/wasm.json&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859853</commentid>
    <comment_count>4</comment_count>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-04-08 12:59:17 -0700</bug_when>
    <thetext>As a follow up:

This is a WIP patch to gather some feedback before potentially going further.

Known limitations:
- B3 and AIR are stubbed
- probably some portability issues (only tested on x86_64)
- tests could be more extensive (multiple return values, recursive calls etc..)
- some thinking could be put into formatting the code in slowPathForWasmReturnCall

From the caller&apos;s point of view, this consists of reusing the previous frame with the callee&apos;s stack arguments/return values.


Right now, a slowPathForWasmTailCall is defined in WebAssembly.asm and will be only invoked for tail variants of call and call_indirect.
Conceptually it is a merge between slowPathForWasmCall and prepareForTailCall, that deals with passing arguments via registers.
The numberOfCallerStackArguments is also encoded in the corresponding bytecode.


Beside formatting and naming in the patch I&apos;d like to discuss the viability of the implementation in the interpreter. In the context of LLIntPlan I didn&apos;t find a satisfactory way to JIT a specific entry thunk, and adding a dynamic check ( similar to what happens in JS) made less sense than creating a slowPath for tail variant of calls in the interpreter.

I also included some tests that cover basic cases.

For reference:
https://github.com/WebAssembly/tail-call</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859854</commentid>
    <comment_count>5</comment_count>
      <attachid>457113</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-08 12:59:49 -0700</bug_when>
    <thetext>Comment on attachment 457113
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=457113&amp;action=review

Cool, will look later today.

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Support for WebAssembly tail calls

Let&apos;s rename bug and patch&apos;s title to say, Support WebAssembly tail calls in LLInt tier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859901</commentid>
    <comment_count>6</comment_count>
    <who name="Alessandro Pignotti">alessandro</who>
    <bug_when>2022-04-08 14:50:13 -0700</bug_when>
    <thetext>Updated the title as suggested</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861023</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-12 21:00:32 -0700</bug_when>
    <thetext>Hmm, seems that EWS gets red. Can you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861044</commentid>
    <comment_count>8</comment_count>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-04-12 23:28:18 -0700</bug_when>
    <thetext>Yes, I&apos;m on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865088</commentid>
    <comment_count>9</comment_count>
      <attachid>458500</attachid>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-04-28 01:27:01 -0700</bug_when>
    <thetext>Created attachment 458500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865114</commentid>
    <comment_count>10</comment_count>
      <attachid>458515</attachid>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-04-28 05:02:40 -0700</bug_when>
    <thetext>Created attachment 458515
with Changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865774</commentid>
    <comment_count>11</comment_count>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-05-01 23:55:03 -0700</bug_when>
    <thetext>To my knowledge, the limitations mentioned in comment 4 have been addressed. B3 and Air still redirect to a normal call as the bug focuses on the LLInt tier for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1879379</commentid>
    <comment_count>12</comment_count>
      <attachid>460584</attachid>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-06-30 09:16:10 -0700</bug_when>
    <thetext>Created attachment 460584
Change returns offsets in wasm convention</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1879380</commentid>
    <comment_count>13</comment_count>
      <attachid>460585</attachid>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-06-30 09:16:59 -0700</bug_when>
    <thetext>Created attachment 460585
Implement wasm tail calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1879385</commentid>
    <comment_count>14</comment_count>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-06-30 09:25:27 -0700</bug_when>
    <thetext>I went on and implemented it in the other tiers, hence we should change the bug title.

I think the convention would need to change the locations of the stack return values if we were to follow the reasoning of unconditionally reusing the previous frame when tail-calling: 
With the current convention, the callee stack values are written from stackPointer + headerSize towards framePointer (caller&apos;s POV). When a frame is reused, the stack size for argument/returns can grow depending on the callee, which means that when at the return location of the original frame, given that the stack pointer is restored, the caller might not found the values at the right offsets, or they may even be lost.
In the first patch, we always align the stack size (max(stackArgs, stackReturns)) in our calculation, and start writing the return values at offset header + stackSize - numberOfReturnValues (still caller&apos;s POV). This way, return values are at the same locations, even if the frame is recycled in between.
In the generators, I am not sure how much refactoring is allowed since most of the code for ReturnCall is similar to Call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1879393</commentid>
    <comment_count>15</comment_count>
      <attachid>460587</attachid>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-06-30 09:37:46 -0700</bug_when>
    <thetext>Created attachment 460587
Implement wasm tail calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1880192</commentid>
    <comment_count>16</comment_count>
      <attachid>460626</attachid>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-07-01 15:22:06 -0700</bug_when>
    <thetext>Created attachment 460626
Implement wasm tail calls

Attempt #1 to fix arm build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1880391</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-07-02 15:52:21 -0700</bug_when>
    <thetext>@Tom BTW, WebKit dev has slack workspace for discussions, where anyone can join.
https://webkit.org/getting-started/#staying-in-touch
And there are #jsc channel, where JSC developers are talking about things.
So, you can join, request reviews, and discuss the design etc. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1880582</commentid>
    <comment_count>18</comment_count>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-07-04 13:33:54 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/2065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1880584</commentid>
    <comment_count>19</comment_count>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-07-04 13:38:02 -0700</bug_when>
    <thetext>*** Bug 242322 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1880585</commentid>
    <comment_count>20</comment_count>
    <who name="Tom Tartarin">tom</who>
    <bug_when>2022-07-04 13:41:19 -0700</bug_when>
    <thetext>Thanks! I joined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1920010</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-12-16 11:29:34 -0800</bug_when>
    <thetext>Committed 258008@main (5ee0680f6669): &lt;https://commits.webkit.org/258008@main&gt;

Reviewed commits have been landed. Closing PR #2065 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1920018</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-12-16 11:50:44 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 249492</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977417</commentid>
    <comment_count>23</comment_count>
    <who name="Sanjay Kumar">hypertree</who>
    <bug_when>2023-09-13 18:18:08 -0700</bug_when>
    <thetext>Why is this still open if blocker is indeed resolved? WASM in Safari still does not have tail calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2062934</commentid>
    <comment_count>24</comment_count>
    <who name="Sergey Rubanov">chi187</who>
    <bug_when>2024-09-24 20:31:42 -0700</bug_when>
    <thetext>Wasm tail calls have been enabled in https://github.com/WebKit/WebKit/commit/c3a1babc1e75481763edce5a9e46cb66c15639b8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2119447</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2025-05-23 17:04:42 -0700</bug_when>
    <thetext>It is enabled.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457113</attachid>
            <date>2022-04-08 12:55:19 -0700</date>
            <delta_ts>2022-04-13 06:25:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215275-20220408215700.patch</filename>
            <type>text/plain</type>
            <size>53988</size>
            <attacher name="Tom Tartarin">tom</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MWRhYzIzY2VmYTQxNmZmMmMwYjlkN2FkN2FmYTFjZDBjMjVmNDU4Li5mMjcyNDBkYTg3NmI2ZWQz
MzBmNDg0NGJjOGYwOTI4ODgyYWYyOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMi0wNC0wOCAgVG9tIFRhcnRhcmluICA8dG9tQGxlYW5pbmd0ZWNoLmNv
bT4KKworICAgICAgICBTdXBwb3J0IGZvciBXZWJBc3NlbWJseSB0YWlsIGNhbGxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUyNzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAgKE9ubHkgZm9yIExM
SW50IHBsYW4pCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAg
ICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0
eUxldmVsKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAg
ICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlz
dC5oOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGwpOgorICAgICAgICAoSlNDOjpX
YXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVy
YXRvcjo6YWRkUmV0dXJuQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6
OmFkZFJldHVybkNhbGxJbmRpcmVjdCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNl
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNtTExJbnRH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6bnVtYmVy
T2ZTdGFja1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpj
YWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVy
YXRvcjo6YWRkUmV0dXJuQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9y
OjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6
YWRkUmV0dXJuQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuY3Bw
OgorICAgICAgICAoSlNDOjpMTEludDo6V0FTTV9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
d2FzbS93YXNtLmpzb246CisKIDIwMjItMDQtMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBGaXJlIHN0cnVjdHVyZSB0cmFuc2l0aW9uIHdhdGNo
cG9pbnQgaW4gU3RydWN0dXJlOjpmaW5pc2hDcmVhdGlvbiBpbnN0ZWFkIG9mIFN0cnVjdHVyZSBj
b25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggYjk2MmIyOGNlNjJmMmM4MTdjNjQxZjdiZjk0MTBlNTZjZjEwNzAyMC4uYzM5
NzU3MDVjNzgwZDVlNDlmZDA4MTVkNTUzZmQ2MmNlZjVlMTk0NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xNDg0LDEwICsxNDg0LDE0
IEBAIG9wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNr
X3VudGFnCiBvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9j
aGVja190YWcKIG9wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2tfdW50YWcKIG9wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2tfdGFnCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJu
X2NhbGwKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9ub190bHMKIG9wIDp3
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsCiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9u
b190bHMKIG9wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0CiBvcCA6d2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHMKK29wIDp3YXNtX3RyYW1wb2xpbmVf
d2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdAorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX3JldHVy
bl9jYWxsX2luZGlyZWN0X25vX3Rscwogb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVm
CiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzCiAKQEAgLTE2ODYsNiAr
MTY5MCwyMiBAQCBvcCA6Y2FsbF9ub190bHMsCiAgICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1
bnNpZ25lZCwKICAgICB9CiAKK29wIDpyZXR1cm5fY2FsbCwKKyAgICBhcmdzOiB7CisgICAgICAg
IGZ1bmN0aW9uSW5kZXg6IHVuc2lnbmVkLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQs
CisgICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZD
YWxsZXJTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgIH0KKworb3AgOnJldHVybl9jYWxsX25vX3Rs
cywKKyAgICBhcmdzOiB7CisgICAgICAgIGZ1bmN0aW9uSW5kZXg6IHVuc2lnbmVkLAorICAgICAg
ICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNp
Z25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZXJTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgIH0K
Kwogb3AgOmNhbGxfaW5kaXJlY3QsCiAgICAgYXJnczogewogICAgICAgICBmdW5jdGlvbkluZGV4
OiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC0xNzA0LDYgKzE3MjQsMjYgQEAgb3AgOmNhbGxfaW5kaXJl
Y3Rfbm9fdGxzLAogICAgICAgICB0YWJsZUluZGV4OiB1bnNpZ25lZCwKICAgICB9CiAKK29wIDpy
ZXR1cm5fY2FsbF9pbmRpcmVjdCwKKyAgICBhcmdzOiB7CisgICAgICAgIGZ1bmN0aW9uSW5kZXg6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVuc2lnbmVkLAorICAg
ICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1
bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZXJTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAg
ICAgICB0YWJsZUluZGV4OiB1bnNpZ25lZCwKKyAgICB9CisKK29wIDpyZXR1cm5fY2FsbF9pbmRp
cmVjdF9ub190bHMsCisgICAgYXJnczogeworICAgICAgICBmdW5jdGlvbkluZGV4OiBWaXJ0dWFs
UmVnaXN0ZXIsCisgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKKyAgICAgICAgc3Rh
Y2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQs
CisgICAgICAgIG51bWJlck9mQ2FsbGVyU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICAgICAgdGFi
bGVJbmRleDogdW5zaWduZWQsCisgICAgfQorCiBvcCA6Y2FsbF9yZWYsCiAgICAgYXJnczogewog
ICAgICAgICBmdW5jdGlvblJlZmVyZW5jZTogVmlydHVhbFJlZ2lzdGVyLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDViZGM1ZTQ0YmQwMDMw
ZjI3NzdlOGY4YTBmZmRhMWRhNGQzMGUwZjguLjdjNWY3YTdjOTk4YWMyZmUzZTMxNmIzODlkOTgy
NmUyMzZhMzUwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKQEAgLTM3MCw4ICszNzAsMTIgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEoKICAg
ICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9j
aGVja190YWc6CiAgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsOgogICAgIGNhc2Ug
d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHM6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xp
bmVfd2FzbV9yZXR1cm5fY2FsbDoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX3JldHVy
bl9jYWxsX25vX3RsczoKICAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJl
Y3Q6CiAgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3RsczoK
KyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0OgorICAg
IGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgog
ICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWY6CiAgICAgY2FzZSB3YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX3JlZl9ub190bHM6CiAgICAgICAgIHJldHVybiBDYW5ub3RDb21w
aWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IDVkNzljZmM4OTAyMGIwNWE0ZTE2Yzg3Y2NlMGU1MTkzMWYyYTgzN2Qu
LmJlZmE1MTIyZjQzYTFkNWE4MGJmZTJjZTM3ZGMwNGU2ZDgyMjA1MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI3
MzAsNiArMjczMCw4IEBAIGVuZCkKIAogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGw6CiBfd2Fz
bV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHM6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0
dXJuX2NhbGw6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfbm9fdGxzOgogX3dh
c21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Q6CiBfd2FzbV90cmFtcG9saW5lX3dhc21f
Y2FsbF9pbmRpcmVjdF9ub190bHM6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWY6CkBA
IC0yNzM4LDYgKzI3NDAsOCBAQCBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF93aWRlMTY6CiBf
d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHNfd2lkZTE2OgogX3dhc21fdHJhbXBvbGlu
ZV93YXNtX2NhbGxfaW5kaXJlY3Rfd2lkZTE2OgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxf
aW5kaXJlY3Rfbm9fdGxzX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2Fs
bF93aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfbm9fdGxzX3dpZGUx
NjoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZl93aWRlMTY6CiBfd2FzbV90cmFtcG9s
aW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzX3dpZGUxNjoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9j
YWxsX3dpZGUzMjoKQEAgLTI3NDYsNiArMjc1MCw4IEBAIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9j
YWxsX2luZGlyZWN0X3dpZGUzMjoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0
X25vX3Rsc193aWRlMzI6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfd2lkZTMyOgog
X3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3Rsc193aWRlMzI6Citfd2FzbV90cmFt
cG9saW5lX3dhc21fcmV0dXJuX2NhbGxfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX3Jl
dHVybl9jYWxsX25vX3Rsc193aWRlMzI6CiAgICAgY3Jhc2goKQogCiBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IDI0YzE0YjNmOGY2YjVmNDU1
YmQwYTVhNzdjNTkzMmJlOWY2OGVlYWYuLjkzMDdmNmE5ZjlhMGUwMzY4Zjc4YmYwMmI0ZWFjY2Vk
NGUzZTNiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3Nl
bWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFz
bQpAQCAtODcxLDYgKzg3MSwxMzIgQEAgbWFjcm8gc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIHNs
b3dQYXRoLCBzdG9yZVdhc21JbnN0YW5jZSkKICAgICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHNs
b3dQYXRoRm9yV2FzbVJldHVybkNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2Up
CisgICAgY2FsbFdhc21DYWxsU2xvd1BhdGgoCisgICAgICAgIHNsb3dQYXRoLAorICAgICAgICAj
IGNhbGxlZSBpcyByMCBhbmQgdGFyZ2V0V2FzbUluc3RhbmNlIGlzIHIxCisgICAgICAgIG1hY3Jv
IChjYWxsZWUsIHRhcmdldFdhc21JbnN0YW5jZSkKKyAgICAgICAgICAgIG1vdmUgY2FsbGVlLCB3
czAKKworICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdP
ZmZzZXRbY2ZyXSwgUEMKKworICAgICAgICAgICAgIyB0aGUgY2FsbCBtaWdodCB0aHJvdyAoZS5n
LiBpbmRpcmVjdCBjYWxsIHdpdGggYmFkIHNpZ25hdHVyZSkKKyAgICAgICAgICAgIGJ0cHogdGFy
Z2V0V2FzbUluc3RhbmNlLCAudGhyb3cKKworICAgICAgICAgICAgd2dldHUoY3R4LCBtX3N0YWNr
T2Zmc2V0LCB3czEpCisgICAgICAgICAgICBsc2hpZnRpIDMsIHdzMQorICAgICAgICAgICAgc3Vi
cCBjZnIsIHdzMSwgc3AKKworICAgICAgICAgICAgIyBnZXQgc3RhY2sgb2Zmc2V0IG5lZWRlZCBm
b3Igd2FzbUFyZ3VtZW50cworICAgICAgICAgICAgbG9hZGkgTnVtYmVyT2ZXYXNtQXJndW1lbnRz
LCB3czEKKyAgICAgICAgICAgIG11bGkgU2xvdFNpemUsIHdzMQorICAgICAgICAgICAgYWRkaSBT
dGFja0FsaWdubWVudCAtIDEsIHdzMQorICAgICAgICAgICAgYW5kaSB+U3RhY2tBbGlnbm1lbnRN
YXNrLCB3czEKKworICAgICAgICAgICAgbW92ZSBzcCwgd2EzCisKKyAgICAgICAgICAgICMgZ3Jv
dyBzdGFjayBieSBudW1iZXIgb2Ygd2FzbUFyZ3VtZW50cworICAgICAgICAgICAgc3VicCB3czEs
IHNwCisKKyAgICAgICAgICAgIHdnZXR1KGN0eCwgbV9udW1iZXJPZlN0YWNrQXJncywgd3MxKQor
CisgICAgICAgICAgICAjIFdoZW4gY29weWluZyB0aGUgY2FsbGVlJ3MgYXJndW1lbnRzLCB0aGUg
ZmluYWwgc3RhY2sgcG9pbnRlciBtaWdodCBiZSBhdCBhIG5lZ2F0aXZlIG9mZnNldCBvZiB0aGUg
Y3VycmVudCBjZnIsCisgICAgICAgICAgICAjIHBvdGVudGlhbGx5IG92ZXJ3cml0aW5nIHRoZSB3
YXNtIGFyZ3VtZW50cywgc28gd2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGVtLgorICAgICAgICAgICAg
IyBXZSBwdXQgdGhlbSBvbiB0aGUgc3RhY2sgc2luY2Ugd2UgbmVlZCBhIGZldyBncHJzIGZvciBs
YXRlciB1c2UuCisKKyAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEdQUihtYWNybyAob2Zmc2V0
LCBncHIpCisgICAgICAgICAgICAgICAgbG9hZHEgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBv
ZmZzZXRbd2EzLCB3czEsIDhdLCB3YTQKKyAgICAgICAgICAgICAgICBzdG9yZXEgd2E0LCBvZmZz
ZXRbc3BdCisgICAgICAgICAgICBlbmQpCisKKyAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEZQ
UihtYWNybyAob2Zmc2V0LCBmcHIpCisgICAgICAgICAgICAgICAgbG9hZGQgQ2FsbEZyYW1lSGVh
ZGVyU2l6ZSArIDggKyBvZmZzZXRbd2EzLCB3czEsIDhdLCB3ZmEwCisgICAgICAgICAgICAgICAg
c3RvcmVkIHdmYTAsIG9mZnNldFtzcF0KKyAgICAgICAgICAgIGVuZCkKKworICAgICAgICAgICAg
bG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKwor
ICAgICAgICAgICAgIyBnZXQgb2xkIHNpemUKKyAgICAgICAgICAgIHdnZXR1KGN0eCwgbV9udW1i
ZXJPZkNhbGxlclN0YWNrQXJncywgd2E0KQorICAgICAgICAgICAgbXVsaSBTbG90U2l6ZSwgd2E0
CisgICAgICAgICAgICBhZGRpIFN0YWNrQWxpZ25tZW50IC0gMSArIENhbGxGcmFtZUhlYWRlclNp
emUsIHdhNAorICAgICAgICAgICAgYW5kaSB+U3RhY2tBbGlnbm1lbnRNYXNrLCB3YTQKKworICAg
ICAgICAgICAgIyBnZXQgbmV3IHNpemUKKyAgICAgICAgICAgIG11bGkgU2xvdFNpemUsIHdzMSwg
d2E1CisgICAgICAgICAgICBhZGRpIFN0YWNrQWxpZ25tZW50IC0gMSArIENhbGxGcmFtZUhlYWRl
clNpemUsIHdhNQorICAgICAgICAgICAgYW5kaSB+U3RhY2tBbGlnbm1lbnRNYXNrLCB3YTUKKwor
ICAgICAgICAgICAgIyByZXN0b3JlIFBCLCBidXQgdXBkYXRlIHdhc21JbnN0YW5jZQorICAgICAg
ICAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCisgICAgICAgICAgICBzdG9yZVdh
c21JbnN0YW5jZSh0YXJnZXRXYXNtSW5zdGFuY2UpCisgICAgICAgICAgICByZWxvYWRNZW1vcnlS
ZWdpc3RlcnNGcm9tSW5zdGFuY2UodGFyZ2V0V2FzbUluc3RhbmNlLCB3YTAsIHdhMSkKKworICAg
ICAgICAgICAgIyBwcmVzZXJ2ZSByZXR1cm4gYWRkcmVzcworICAgICAgICAgICAgYWRkcCBDYWxs
ZXJGcmFtZUFuZFBDU2l6ZSAtIFB0clNpemUsIHdhMworICAgICAgICAgICAgYWRkcCBQdHJTaXpl
LCB3YTUKKyAgICAgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHdhMQorICAgICAgICAgICAg
c3RvcmVwIHdhMSwgW3dhM10KKworICAgICAgICAgICAgIyBuZXcgZnJhbWUgcG9pbnRlciBpcyBv
bGRmcmFtZVBvaW50ZXIgKyBvbGRzaXplIC0gbmV3U2l6ZQorICAgICAgICAgICAgYWRkcCBjZnIs
IHdhNCwgd3MxCisgICAgICAgICAgICBzdWJwIHdhNSwgd3MxCisKKyAgICAgICAgICAgIGxvYWRw
IFtjZnJdLCBjZnIKKworICAgICAgICAgICAgLmNvcHlMb29wOgorICAgICAgICAgICAgc3VicCBQ
dHJTaXplLCB3YTUKKyAgICAgICAgICAgIGxvYWRwIFt3YTMsIHdhNSwgMV0sIHdhMQorICAgICAg
ICAgICAgc3RvcmVwIHdhMSwgW3dzMSwgd2E1LCAxXQorICAgICAgICAgICAgYnRpbnogd2E1LCAu
Y29weUxvb3AKKworICAgICAgICAgICAgIyBmaW5hbGx5IGxvYWQgYXJndW1lbnRzIGZyb20gc3Rh
Y2sgYW5kIHVwZGF0ZSBzcAorICAgICAgICAgICAgZm9yRWFjaEFyZ3VtZW50R1BSKG1hY3JvIChv
ZmZzZXQsIGdwcikKKyAgICAgICAgICAgICAgICBzdG9yZXEgb2Zmc2V0W3NwXSwgZ3ByCisgICAg
ICAgICAgICBlbmQpCisKKyAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEZQUihtYWNybyAob2Zm
c2V0LCBmcHIpCisgICAgICAgICAgICAgICAgc3RvcmVkIG9mZnNldFtzcF0sIGZwcgorICAgICAg
ICAgICAgZW5kKQorCisgICAgICAgICAgICBsb2FkcCB3czEsIHNwCisKKyAgICAgICAgICAgIGN0
eChtYWNybyhvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHNpemUpCisgICAgICAgICAgICAgICAg
bWFjcm8ganVtcE5hcnJvdygpCisgICAgICAgICAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAg
ICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRP
ZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJSkgKiBQdHJT
aXplLCB3czEKKyAgICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJToKKyAg
ICAgICAgICAgICAgICAgICAgam1wIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAg
ICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBtYWNybyBqdW1wV2lkZTE2KCkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAgICAgICBsZWFwIEpT
Q0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25z
dGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUxNikgKiBQdHJTaXplLCB3czEKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRy
eVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAg
ICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgICAgICAgICAg
ICAgICAgIGptcCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVu
ZAorCisgICAgICAgICAgICAgICAgbWFjcm8ganVtcFdpZGUzMigpCisgICAgICAgICAgICAgICAg
ICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBj
b25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6
OiVvcGNvZGVOYW1lJV93aWRlMzIpICogUHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgICAg
ICAgICBqbXAgW3dzMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlTbG93UGF0aFB0
clRhZworICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgX3dhc21f
dHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTMyOgorICAgICAgICAgICAgICAgICAgICBqbXAg
d3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICBlbmQKKworICAgICAg
ICAgICAgICAgIHNpemUoanVtcE5hcnJvdywganVtcFdpZGUxNiwganVtcFdpZGUzMiwgbWFjcm8g
KGdlbikgZ2VuKCkgZW5kKQorICAgICAgICAgICAgZW5kKQorICAgIC50aHJvdzoKKyAgICByZXN0
b3JlU3RhdGVBZnRlckNDYWxsKCkKKyAgICBkaXNwYXRjaChjdHgpCisgICAgZW5kKQorZW5kCisK
IHVucHJlZml4ZWRXYXNtT3Aod2FzbV9jYWxsLCBXYXNtQ2FsbCwgbWFjcm8oY3R4KQogICAgIHNs
b3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbCwgc3RvcmVXYXNtSW5z
dGFuY2VUb1RMUykKIGVuZCkKQEAgLTg3OSw2ICsxMDA1LDE0IEBAIHVucHJlZml4ZWRXYXNtT3Ao
d2FzbV9jYWxsX25vX3RscywgV2FzbUNhbGxOb1RscywgbWFjcm8oY3R4KQogICAgIHNsb3dQYXRo
Rm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbF9ub190bHMsIG1hY3JvKHRhcmdl
dEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQogZW5kKQog
Cit3YXNtT3AocmV0dXJuX2NhbGwsIFdhc21SZXR1cm5DYWxsLCBtYWNybyhjdHgpCisgICAgc2xv
d1BhdGhGb3JXYXNtUmV0dXJuQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9yZXR1cm5fY2FsbCwg
c3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKK2VuZCkKKword2FzbU9wKHJldHVybl9jYWxsX25vX3Rs
cywgV2FzbVJldHVybkNhbGxOb1RscywgbWFjcm8oY3R4KQorICAgIHNsb3dQYXRoRm9yV2FzbVJl
dHVybkNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fcmV0dXJuX2NhbGxfbm9fdGxzLCBtYWNybyh0
YXJnZXRJbnN0YW5jZSkgbW92ZSB0YXJnZXRJbnN0YW5jZSwgd2FzbUluc3RhbmNlIGVuZCkKK2Vu
ZCkKKwogd2FzbU9wKGNhbGxfaW5kaXJlY3QsIFdhc21DYWxsSW5kaXJlY3QsIG1hY3JvKGN0eCkK
ICAgICBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX2NhbGxfaW5kaXJl
Y3QsIHN0b3JlV2FzbUluc3RhbmNlVG9UTFMpCiBlbmQpCkBAIC04ODcsNiArMTAyMSwxNCBAQCB3
YXNtT3AoY2FsbF9pbmRpcmVjdF9ub190bHMsIFdhc21DYWxsSW5kaXJlY3ROb1RscywgbWFjcm8o
Y3R4KQogICAgIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbF9p
bmRpcmVjdF9ub190bHMsIG1hY3JvKHRhcmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNl
LCB3YXNtSW5zdGFuY2UgZW5kKQogZW5kKQogCit3YXNtT3AocmV0dXJuX2NhbGxfaW5kaXJlY3Qs
IFdhc21SZXR1cm5DYWxsSW5kaXJlY3QsIG1hY3JvKGN0eCkKKyAgICBzbG93UGF0aEZvcldhc21S
ZXR1cm5DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0LCBzdG9y
ZVdhc21JbnN0YW5jZVRvVExTKQorZW5kKQorCit3YXNtT3AocmV0dXJuX2NhbGxfaW5kaXJlY3Rf
bm9fdGxzLCBXYXNtUmV0dXJuQ2FsbEluZGlyZWN0Tm9UbHMsIG1hY3JvKGN0eCkKKyAgICBzbG93
UGF0aEZvcldhc21SZXR1cm5DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX3JldHVybl9jYWxsX2lu
ZGlyZWN0X25vX3RscywgbWFjcm8odGFyZ2V0SW5zdGFuY2UpIG1vdmUgdGFyZ2V0SW5zdGFuY2Us
IHdhc21JbnN0YW5jZSBlbmQpCitlbmQpCisKIHdhc21PcChjYWxsX3JlZiwgV2FzbUNhbGxSZWYs
IG1hY3JvKGN0eCkKICAgICBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNt
X2NhbGxfcmVmLCBzdG9yZVdhc21JbnN0YW5jZVRvVExTKQogZW5kKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggNDBmMGM3OTY2Y2Y4N2NjMWM3ZTZi
YWM2NDFhNTZmZTM2YmZlMDJhNi4uODhkNmI3NGUwZjVhZThjMTk5MzcyOGI1YmQ4ZjJlYTRhNWJj
YzE1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBA
IC01NTAsNiArNTUwLDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsKICAg
ICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMsIGZhbHNlLCBO
b3JtYWwsICJBbGxvdyBmdW5jdGlvbiB0eXBlcyBmcm9tIHRoZSB3YXNtIHR5cGVkIGZ1bmN0aW9u
IHJlZmVyZW5jZXMgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseUV4Y2VwdGlv
bnMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRoZSBuZXcgc2VjdGlvbiBhbmQgaW5zdHJ1Y3Rpb25z
IGZyb20gdGhlIHdhc20gZXhjZXB0aW9uIGhhbmRsaW5nIHNwZWMuIikgXAogICAgIHYoQm9vbCwg
dXNlV2ViQXNzZW1ibHlCcmFuY2hIaW50cywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdGhlIG5ldyBz
ZWN0aW9uIGZyb20gdGhlIHdhc20gYnJhbmNoIGhpbnRpbmcgc3BlYy4iKSBcCisgICAgdihCb29s
LCB1c2VXZWJBc3NlbWJseVRhaWxDYWxscywgZmFsc2UsIE5vcm1hbCwgIkFsbG93IHRoZSBuZXcg
aW5zdHJ1Y3Rpb25zIGZyb20gdGhlIHdhc20gdGFpbCBjYWxscyBzcGVjLiIpIFwKIAogCiBlbnVt
IE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDJkNzI5YWUyNWVkMzI0YTU3MmM3ZWQzZGQ0ZjBm
YjQyYmFhNTMyYjMuLjVlN2QyZTIzMmNiNzBkZjQ0NmIzMDkwNWNhMzIxNjg3OWU5MDQxZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNw
cApAQCAtNDEyLDcgKzQxMiw5IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxzCiAgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwg
Y29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlz
dCYgcmVzdWx0cyk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0
dXJuQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4
cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5k
ZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3Vs
dExpc3QmIHJlc3VsdHMpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFk
ZFJldHVybkNhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUm
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25h
dHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMp
OwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdEluZGlyZWN0Q2FsbChU
eXBlZFRtcCBjYWxsZWVJbnN0YW5jZSwgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSwgY29uc3Qg
U2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlz
dCYpOwpAQCAtMzcwOCw2ICszNzEwLDEyIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGwo
dWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbCh1aW50
MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4
cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3Vs
dAoreworICAgIC8vIFRPRE86IGltcGxlbWVudCBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2Fs
bAorICAgIHJldHVybiBhZGRDYWxsKGZ1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZSwgYXJncywgcmVz
dWx0cyk7Cit9CisKIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25l
ZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAogewog
ICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJncy50YWtlTGFzdCgpOwpAQCAtMzc5
MSw2ICszNzk5LDEyIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNp
Z25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAgcmV0dXJuIGVtaXRJ
bmRpcmVjdENhbGwoY2FsbGVlSW5zdGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwgYXJncywg
cmVzdWx0cyk7CiB9CiAKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGxJbmRpcmVj
dCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJl
c3VsdAoreworICAgIC8vIFRPRE86IGltcGxlbWVudCBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJu
Q2FsbEluZGlyZWN0CisgICAgcmV0dXJuIGFkZENhbGxJbmRpcmVjdCh0YWJsZUluZGV4LCBzaWdu
YXR1cmUsIGFyZ3MsIHJlc3VsdHMpOworfQorCiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxs
UmVmKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBh
cmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgbV9tYWtl
c0NhbGxzID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcAppbmRleCA1NzBkZjM2ZmIyNDlhZjkzZWUwOWU0NTVlZGNlZDAxMDUwMzlm
ZjliLi40MTMxZTVhZjA4Y2YwMjUyMTU0MWQxZWE2NzMwOGFhNjMyNGYyNjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0zOTAs
NiArMzkwLDggQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbHMKICAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBTaWdu
YXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRz
KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5DYWxsKHVp
bnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5DYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwg
Y29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlz
dCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2Fs
bEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiwgVmVj
dG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKQEAgLTI5OTQs
NiArMjk5NiwxMiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rp
b25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm5DYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5k
ZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBh
cmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgLy8gVE9E
TzogaW1wbGVtZW50IEIzSVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGwKKyAgICByZXR1cm4gYWRk
Q2FsbChmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUsIGFyZ3MsIHJlc3VsdHMpOworfQorCiBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25z
dCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVz
dWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAogewogICAgIFZhbHVlKiBjYWxsZWVJ
bmRleCA9IGdldChhcmdzLnRha2VMYXN0KCkpOwpAQCAtMzA3Niw2ICszMDg0LDEyIEBAIGF1dG8g
QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0CiAgICAgcmV0dXJuIGVtaXRJbmRpcmVjdENhbGwoY2FsbGVlSW5z
dGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwgYXJncywgcmVzdWx0cyk7CiB9CiAKK2F1dG8g
QjNJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgs
IGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgLy8gVE9ETzog
aW1wbGVtZW50IEIzSVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGxJbmRpcmVjdAorICAgIHJldHVy
biBhZGRDYWxsSW5kaXJlY3QodGFibGVJbmRleCwgc2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKTsK
K30KKwogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRz
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgVmFsdWUqIGNhbGxlZSA9IGdldChhcmdzLnRha2VM
YXN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0
aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJz
ZXIuaAppbmRleCA5YmY5NjYzYzhhMzVmZTc5MGZjYzRiZTFiZWQxZjc0NWRhMDE1Mzc0Li42MjEy
ZWIxMzg0NDg5ODM5OWU5MDRkZDdhZGQ3OTA2MWQwMzQxMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMTE4NSw2ICsxMTg1LDkg
QEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogCisgICAgY2FzZSBSZXR1cm5DYWxsOgorICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVRhaWxDYWxscygpLCAid2FzbSB0
YWlsIGNhbGxzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBj
YXNlIENhbGw6IHsKICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKICAgICAgICAgV0FT
TV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmN0aW9uSW5kZXgoZnVuY3Rpb25JbmRleCkp
OwpAQCAtMTIwNywxNiArMTIxMCw0MCBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChD
UkVBVEVfQ0FTRSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGVlU2lnbmF0dXJlLmFyZ3Vt
ZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7CiAKICAgICAgICAgUmVzdWx0TGlzdCByZXN1bHRz
OwotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRDYWxsKGZ1bmN0aW9uSW5kZXgs
IGNhbGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0cykpOwogCi0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpID09IHJlc3VsdHMuc2l6ZSgpKTsKKyAg
ICAgICAgc3dpdGNoIChtX2N1cnJlbnRPcGNvZGUpIHsKKyAgICAgICAgY2FzZSBSZXR1cm5DYWxs
OgorICAgICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkUmV0dXJuQ2FsbChmdW5j
dGlvbkluZGV4LCBjYWxsZWVTaWduYXR1cmUsIGFyZ3MsIHJlc3VsdHMpKTsKIAotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCk7ICsr
aSkKLSAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChjYWxs
ZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSwgcmVzdWx0c1tpXSk7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKSA9PSByZXN1bHRzLnNpemUo
KSk7CiAKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCkgIT0gbV9zaWduYXR1cmUucmV0dXJuQ291
bnQoKSwgInRhaWwgY2FsbCBmdW5jdGlvbiBpbmRleCAiLCBmdW5jdGlvbkluZGV4LCAiIHdpdGgg
cmV0dXJuIGNvdW50ICIsIGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpLCAiLCBidXQgdGhl
IGNhbGxlciBzaWduYXR1cmUgaGFzICIsIG1fc2lnbmF0dXJlLnJldHVybkNvdW50KCksICIgcmV0
dXJuIHZhbHVlcyIpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2Fs
bGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgICAgIFdBU01f
VkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShtX3NpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCBj
YWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSksICJyZXR1cm4gdHlwZSBtaXNtYXRjaCBpbiB0
YWlsIGNhbGwsIGdvdCAiLCBjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKS5raW5kLCAiLCBl
eHBlY3RlZCAiLCBtX3NpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLmtpbmQpOworICAgICAgICAgICAg
ICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChjYWxsZWVTaWduYXR1cmUu
cmV0dXJuVHlwZShpKSwgcmVzdWx0c1tpXSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisKKyAgICAgICAgY2FzZSBDYWxsOgorICAgICAgICAgICAgV0FTTV9UUllf
QUREX1RPX0NPTlRFWFQoYWRkQ2FsbChmdW5jdGlvbkluZGV4LCBjYWxsZWVTaWduYXR1cmUsIGFy
Z3MsIHJlc3VsdHMpKTsKKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGVlU2lnbmF0
dXJlLnJldHVybkNvdW50KCkgPT0gcmVzdWx0cy5zaXplKCkpOworCisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCk7ICsraSkK
KyAgICAgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoY2Fs
bGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOworCisgICAgICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfQogCisgICAgY2FzZSBSZXR1cm5DYWxs
SW5kaXJlY3Q6CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFz
c2VtYmx5VGFpbENhbGxzKCksICJ3YXNtIHRhaWwgY2FsbHMgYXJlIG5vdCBlbmFibGVkIik7Cisg
ICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2FsbEluZGlyZWN0OiB7CiAgICAgICAgIHVp
bnQzMl90IHNpZ25hdHVyZUluZGV4OwogICAgICAgICB1aW50MzJfdCB0YWJsZUluZGV4OwpAQCAt
MTI0NiwxMiArMTI3MywzMSBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVf
Q0FTRSkKICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suc2hyaW5rKGZpcnN0QXJndW1lbnRJbmRl
eCk7CiAKICAgICAgICAgUmVzdWx0TGlzdCByZXN1bHRzOwotICAgICAgICBXQVNNX1RSWV9BRERf
VE9fQ09OVEVYVChhZGRDYWxsSW5kaXJlY3QodGFibGVJbmRleCwgY2FsbGVlU2lnbmF0dXJlLCBh
cmdzLCByZXN1bHRzKSk7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxl
ZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpCi0gICAgICAgICAgICBtX2V4cHJlc3Npb25T
dGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJl
c3VsdHNbaV0pOworICAgICAgICBzd2l0Y2ggKG1fY3VycmVudE9wY29kZSkgeworICAgICAgICBj
YXNlIFJldHVybkNhbGxJbmRpcmVjdDoKKyAgICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05U
RVhUKGFkZFJldHVybkNhbGxJbmRpcmVjdCh0YWJsZUluZGV4LCBjYWxsZWVTaWduYXR1cmUsIGFy
Z3MsIHJlc3VsdHMpKTsKIAotICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKSAhPSBtX3NpZ25hdHVy
ZS5yZXR1cm5Db3VudCgpLCAidGFpbCBjYWxsIGluZGlyZWN0IGZ1bmN0aW9uIHdpdGggcmV0dXJu
IGNvdW50ICIsIGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpLCAiLCBidXQgdGhlIGNhbGxl
ciBzaWduYXR1cmUgaGFzICIsIG1fc2lnbmF0dXJlLnJldHVybkNvdW50KCksICIgcmV0dXJuIHZh
bHVlcyIpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbGVlU2ln
bmF0dXJlLnJldHVybkNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgICAgIFdBU01fVkFMSURB
VE9SX0ZBSUxfSUYoIWlzU3VidHlwZShtX3NpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCBjYWxsZWVT
aWduYXR1cmUucmV0dXJuVHlwZShpKSksICJyZXR1cm4gdHlwZSBtaXNtYXRjaCBpbiB0YWlsIGNh
bGwgaW5kaXJlY3QsIGdvdCAiLCBjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKS5raW5kLCAi
LCBleHBlY3RlZCAiLCBtX3NpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLmtpbmQpOworICAgICAgICAg
ICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChjYWxsZWVTaWduYXR1
cmUucmV0dXJuVHlwZShpKSwgcmVzdWx0c1tpXSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICAgICAgY2FzZSBDYWxsSW5kaXJlY3Q6CisgICAgICAgICAg
ICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRDYWxsSW5kaXJlY3QodGFibGVJbmRleCwgY2Fs
bGVlU2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKSk7CisKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKQorICAgICAg
ICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChjYWxsZWVTaWdu
YXR1cmUucmV0dXJuVHlwZShpKSwgcmVzdWx0c1tpXSk7CisKKyAgICAgICAgICAgIHJldHVybiB7
IH07CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBjYXNlIENhbGxSZWY6IHsKQEAgLTE3
NTAsNiArMTc5Niw5IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFj
aGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KIAorICAgIGNhc2UgUmV0dXJuQ2FsbEluZGlyZWN0OgorICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVRhaWxDYWxscygpLCAid2FzbSB0YWls
IGNhbGxzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNl
IENhbGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJfdCB1bnVzZWQ7CiAgICAgICAgIHVpbnQz
Ml90IHVudXNlZDI7CkBAIC0xNzk0LDYgKzE4NDMsOSBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENv
bnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICBjYXNlIFJldHVybkNhbGw6CisgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VGFpbENhbGxzKCks
ICJ3YXNtIHRhaWwgY2FsbHMgYXJlIG5vdCBlbmFibGVkIik7CisgICAgICAgIEZBTExUSFJPVUdI
OwogICAgIGNhc2UgQ2FsbDogewogICAgICAgICB1aW50MzJfdCBmdW5jdGlvbkluZGV4OwogICAg
ICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY3Rpb25JbmRleChmdW5jdGlv
bkluZGV4KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJ
bnRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2Vu
ZXJhdG9yLmNwcAppbmRleCAxMzU2OTBkYTJkNjBiN2NiYzY5OWJhMjU2MzRkYjI1ZTQ3YzBkZDAx
Li4zZTYxM2VjMDg4OTZkNjk5ODhmYzlhOTM3YmZkMzg0YTRkZDcxYTZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKQEAgLTMwNSw3
ICszMDUsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25h
dHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMp
OworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldHVybkNhbGwodWlu
dDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBT
aWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1
bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5DYWxs
SW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4
cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbFJlZihjb25zdCBTaWduYXR1cmUmLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogCkBAIC0zMjgs
NiArMzMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXN1
bHRMaXN0Jik+IGNvbW1pdFJlc3VsdHM7CiAgICAgfTsKIAorICAgIHVpbnQzMl90IG51bWJlck9m
U3RhY2tSZWdpc3RlcnMoY29uc3QgU2lnbmF0dXJlJik7CiAgICAgTExJbnRDYWxsSW5mb3JtYXRp
b24gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYpOwogICAgIFZlY3Rv
cjxWaXJ0dWFsUmVnaXN0ZXIsIDI+IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBTaWdu
YXR1cmUmKTsKICAgICB2b2lkIGxpbmtTd2l0Y2hUYXJnZXRzKExhYmVsJiwgdW5zaWduZWQgbG9j
YXRpb24pOwpAQCAtNTY1LDQwICs1NjgsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29k
ZUJsb2NrR2VuZXJhdG9yPiBMTEludEdlbmVyYXRvcjo6ZmluYWxpemUoKQogLy8gR2VuZXJhdGVk
IGZyb20gd2FzbS5qc29uCiAjaW5jbHVkZSAiV2FzbUxMSW50R2VuZXJhdG9ySW5saW5lcy5oIgog
Ci1hdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2ln
bmF0dXJlJiBzaWduYXR1cmUpIC0+IExMSW50Q2FsbEluZm9ybWF0aW9uCit1aW50MzJfdCBMTElu
dEdlbmVyYXRvcjo6bnVtYmVyT2ZTdGFja1JlZ2lzdGVycyhjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSkKIHsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIHNldHMgdXAgdGhlIHN0YWNrIGxheW91dCBm
b3IgY2FsbHMuIFRoZSBkZXNpcmVkIHN0YWNrIGxheW91dCBpczoKLQotICAgIC8vIEZQUm4KLSAg
ICAvLyAuLi4KLSAgICAvLyBGUFIxCi0gICAgLy8gRlBSMAotICAgIC8vIC0tLQotICAgIC8vIEdQ
Um4KLSAgICAvLyAuLi4KLSAgICAvLyBHUFIxCi0gICAgLy8gR1BSMAotICAgIC8vIC0tLS0KLSAg
ICAvLyBzdGFja04KLSAgICAvLyAuLi4KLSAgICAvLyBzdGFjazEKLSAgICAvLyBzdGFjazAKLSAg
ICAvLyAtLS0KLSAgICAvLyBjYWxsIGZyYW1lIGhlYWRlcgotCi0gICAgLy8gV2UgbmVlZCB0byBh
bGxvY2F0ZSBhdCBsZWFzdCBzcGFjZSBmb3IgYWxsIEdQUnMgYW5kIEZQUnMuCi0gICAgLy8gUmV0
dXJuIHZhbHVlcyB1c2UgdGhlIHNhbWUgYWxsb2NhdGlvbiBsYXlvdXQuCi0KLSAgICBjb25zdCBh
dXRvIGluaXRpYWxTdGFja1NpemUgPSBtX3N0YWNrU2l6ZTsKLQogICAgIGNvbnN0IGF1dG8mIGNh
bGxpbmdDb252ZW50aW9uID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCk7CiAgICAgY29uc3QgdWlu
dDMyX3QgZ3ByQ291bnQgPSBjYWxsaW5nQ29udmVudGlvbi5ncHJBcmdzLnNpemUoKTsKICAgICBj
b25zdCB1aW50MzJfdCBmcHJDb3VudCA9IGNhbGxpbmdDb252ZW50aW9uLmZwckFyZ3Muc2l6ZSgp
OwogCiAgICAgdWludDMyX3Qgc3RhY2tDb3VudCA9IDA7CisgICAgdWludDMyX3Qgc3RhY2tJbmRl
eCA9IDA7CiAgICAgdWludDMyX3QgZ3BySW5kZXggPSAwOwogICAgIHVpbnQzMl90IGZwckluZGV4
ID0gMDsKLSAgICB1aW50MzJfdCBzdGFja0luZGV4ID0gMDsKIAogICAgIGF1dG8gYWxsb2NhdGVT
dGFja1JlZ2lzdGVyID0gWyZdKFR5cGUgdHlwZSkgewogICAgICAgICBzd2l0Y2ggKHR5cGUua2lu
ZCkgewpAQCAtNjI2LDE1ICs2MDUsNTAgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9y
bWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICAg
ICAgfQogICAgIH07CiAKLQogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUu
YXJndW1lbnRDb3VudCgpOyBpKyspCiAgICAgICAgIGFsbG9jYXRlU3RhY2tSZWdpc3RlcihzaWdu
YXR1cmUuYXJndW1lbnQoaSkpOwotCiAgICAgZ3BySW5kZXggPSAwOwogICAgIGZwckluZGV4ID0g
MDsKICAgICBzdGFja0luZGV4ID0gMDsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2ln
bmF0dXJlLnJldHVybkNvdW50KCk7IGkrKykKICAgICAgICAgYWxsb2NhdGVTdGFja1JlZ2lzdGVy
KHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpKTsKKyAgICByZXR1cm4gc3RhY2tDb3VudDsKK30KKwor
YXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25h
dHVyZSYgc2lnbmF0dXJlKSAtPiBMTEludENhbGxJbmZvcm1hdGlvbgoreworICAgIC8vIFRoaXMg
ZnVuY3Rpb24gc2V0cyB1cCB0aGUgc3RhY2sgbGF5b3V0IGZvciBjYWxscy4gVGhlIGRlc2lyZWQg
c3RhY2sgbGF5b3V0IGlzOgorCisgICAgLy8gRlBSbgorICAgIC8vIC4uLgorICAgIC8vIEZQUjEK
KyAgICAvLyBGUFIwCisgICAgLy8gLS0tCisgICAgLy8gR1BSbgorICAgIC8vIC4uLgorICAgIC8v
IEdQUjEKKyAgICAvLyBHUFIwCisgICAgLy8gLS0tLQorICAgIC8vIHN0YWNrTgorICAgIC8vIC4u
LgorICAgIC8vIHN0YWNrMQorICAgIC8vIHN0YWNrMAorICAgIC8vIC0tLQorICAgIC8vIGNhbGwg
ZnJhbWUgaGVhZGVyCisKKyAgICAvLyBXZSBuZWVkIHRvIGFsbG9jYXRlIGF0IGxlYXN0IHNwYWNl
IGZvciBhbGwgR1BScyBhbmQgRlBScy4KKyAgICAvLyBSZXR1cm4gdmFsdWVzIHVzZSB0aGUgc2Ft
ZSBhbGxvY2F0aW9uIGxheW91dC4KKworICAgIGNvbnN0IGF1dG8gaW5pdGlhbFN0YWNrU2l6ZSA9
IG1fc3RhY2tTaXplOworCisgICAgY29uc3QgYXV0byYgY2FsbGluZ0NvbnZlbnRpb24gPSB3YXNt
Q2FsbGluZ0NvbnZlbnRpb24oKTsKKyAgICBjb25zdCB1aW50MzJfdCBncHJDb3VudCA9IGNhbGxp
bmdDb252ZW50aW9uLmdwckFyZ3Muc2l6ZSgpOworICAgIGNvbnN0IHVpbnQzMl90IGZwckNvdW50
ID0gY2FsbGluZ0NvbnZlbnRpb24uZnByQXJncy5zaXplKCk7CisKKyAgICB1aW50MzJfdCBzdGFj
a0NvdW50ID0gbnVtYmVyT2ZTdGFja1JlZ2lzdGVycyhzaWduYXR1cmUpOworICAgIHVpbnQzMl90
IGdwckluZGV4ID0gMDsKKyAgICB1aW50MzJfdCBmcHJJbmRleCA9IDA7CisgICAgdWludDMyX3Qg
c3RhY2tJbmRleCA9IDA7CiAKICAgICAvLyBGSVhNRTogd2UgYXJlIGFsbG9jYXRpbmcgdGhlIGV4
dHJhIHNwYWNlIGZvciB0aGUgYXJndW1lbnQvcmV0dXJuIGNvdW50IGluIG9yZGVyIHRvIGF2b2lk
IGludGVyZmVyZW5jZSwgYnV0IHdlIGNvdWxkIGRvIGJldHRlcgogICAgIC8vIE5PVEU6IFdlIGlu
Y3JlYXNlIGFyZyBjb3VudCBieSAxIGZvciB0aGUgY2FzZSBvZiBpbmRpcmVjdCBjYWxscwpAQCAt
MTMzMCw2ICsxMzQ0LDIzIEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3Qg
ZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbCh1aW50MzJfdCBmdW5j
dGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25U
eXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAoreworCisg
ICAgQVNTRVJUKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOworICAg
IExMSW50Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoc2ln
bmF0dXJlKTsKKyAgICBjb25zdCBTaWduYXR1cmVJbmRleCBjdXJyZW50U2lnbmF0dXJlSW5kZXgg
PSBtX2luZm8uc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKG1fZnVuY3Rpb25J
bmRleCk7CisgICAgdWludDMyX3QgbnVtYmVyT2ZDYWxsZXJTdGFja1JlZ2lzdGVycyA9IG51bWJl
ck9mU3RhY2tSZWdpc3RlcnMoU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChjdXJyZW50U2lnbmF0
dXJlSW5kZXgpKTsKKyAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3VtZW50cywgYXJn
cyk7CisgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkKKyAgICAgICAgV2FzbVJldHVybkNh
bGw6OmVtaXQodGhpcywgZnVuY3Rpb25JbmRleCwgaW5mby5zdGFja09mZnNldCwgaW5mby5udW1i
ZXJPZlN0YWNrQXJndW1lbnRzLCBudW1iZXJPZkNhbGxlclN0YWNrUmVnaXN0ZXJzKTsKKyAgICBl
bHNlCisgICAgICAgIFdhc21SZXR1cm5DYWxsTm9UbHM6OmVtaXQodGhpcywgZnVuY3Rpb25JbmRl
eCwgaW5mby5zdGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzLCBudW1iZXJP
ZkNhbGxlclN0YWNrUmVnaXN0ZXJzKTsKKyAgICBpbmZvLmNvbW1pdFJlc3VsdHMocmVzdWx0cyk7
CisKKyAgICByZXR1cm4geyB9OworfQorCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxsSW5k
aXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZl
Y3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRp
YWxSZXN1bHQKIHsKICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVJbmRleCA9IGFyZ3MudGFrZUxh
c3QoKTsKQEAgLTEzNDksNiArMTM4MCwyNiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxs
SW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAg
IHJldHVybiB7IH07CiB9CiAKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFJldHVybkNhbGxJbmRp
cmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVj
dG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlh
bFJlc3VsdAoreworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJncy50YWtlTGFz
dCgpOworCisgICAgQVNTRVJUKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXpl
KCkpOworICAgIEFTU0VSVChtX2luZm8udGFibGVDb3VudCgpID4gdGFibGVJbmRleCk7CisgICAg
QVNTRVJUKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpID09IFRhYmxlRWxlbWVudFR5
cGU6OkZ1bmNyZWYpOworCisgICAgTExJbnRDYWxsSW5mb3JtYXRpb24gaW5mbyA9IGNhbGxJbmZv
cm1hdGlvbkZvckNhbGxlcihzaWduYXR1cmUpOworICAgIHVpbnQzMl90IG51bWJlck9mQ2FsbGVy
U3RhY2tSZWdpc3RlcnMgPSBudW1iZXJPZlN0YWNrUmVnaXN0ZXJzKFNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQoc2lnbmF0dXJlLmluZGV4KCkpKTsKKyAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhp
bmZvLmFyZ3VtZW50cywgYXJncyk7CisgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkKKyAg
ICAgICAgV2FzbVJldHVybkNhbGxJbmRpcmVjdDo6ZW1pdCh0aGlzLCBjYWxsZWVJbmRleCwgbV9j
b2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZv
Lm51bWJlck9mU3RhY2tBcmd1bWVudHMsIG51bWJlck9mQ2FsbGVyU3RhY2tSZWdpc3RlcnMsIHRh
YmxlSW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgV2FzbVJldHVybkNhbGxJbmRpcmVjdE5vVGxz
OjplbWl0KHRoaXMsIGNhbGxlZUluZGV4LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25h
dHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywgbnVt
YmVyT2ZDYWxsZXJTdGFja1JlZ2lzdGVycywgdGFibGVJbmRleCk7CisgICAgaW5mby5jb21taXRS
ZXN1bHRzKHJlc3VsdHMpOworCisgICAgcmV0dXJuIHsgfTsKK30KKwogYXV0byBMTEludEdlbmVy
YXRvcjo6YWRkQ2FsbFJlZihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJl
c3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAog
ewogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZSA9IGFyZ3MudGFrZUxhc3QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5kZXggMmE4NjdkNmM3M2Zk
ZWYzZTkxODcwNmEzZjA3MmMwZDU4Mjk5M2NkNy4uNGEzMzRlYjQyMWI0ODA5Mjc3ZjdlNzM1MzM0
MmY4Mzk1MzVkNDE0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQ
YXRocy5jcHAKQEAgLTQ4Niw2ICs0ODYsMjIgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX25v
X3RscykKICAgICByZXR1cm4gZG9XYXNtQ2FsbChpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9mdW5j
dGlvbkluZGV4KTsKIH0KIAorV0FTTV9TTE9XX1BBVEhfREVDTChyZXR1cm5fY2FsbCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+
YXM8V2FzbVJldHVybkNhbGw+KCk7CisgICAgcmV0dXJuIGRvV2FzbUNhbGwoaW5zdGFuY2UsIGlu
c3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCk7Cit9CisKK1dBU01fU0xPV19QQVRIX0RFQ0wocmV0
dXJuX2NhbGxfbm9fdGxzKQoreworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworCisgICAg
YXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtUmV0dXJuQ2FsbE5vVGxzPigpOworICAgIHJl
dHVybiBkb1dhc21DYWxsKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpOwor
fQorCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRvV2FzbUNhbGxJbmRpcmVjdChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlLCB1bnNpZ25lZCBmdW5jdGlv
bkluZGV4LCB1bnNpZ25lZCB0YWJsZUluZGV4LCB1bnNpZ25lZCBzaWduYXR1cmVJbmRleCkKIHsK
ICAgICBXYXNtOjpGdW5jUmVmVGFibGUqIHRhYmxlID0gaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5k
ZXgpLT5hc0Z1bmNyZWZUYWJsZSgpOwpAQCAtNTIzLDYgKzUzOSwyMCBAQCBXQVNNX1NMT1dfUEFU
SF9ERUNMKGNhbGxfaW5kaXJlY3Rfbm9fdGxzKQogICAgIHJldHVybiBkb1dhc21DYWxsSW5kaXJl
Y3QoY2FsbEZyYW1lLCBpbnN0YW5jZSwgZnVuY3Rpb25JbmRleCwgaW5zdHJ1Y3Rpb24ubV90YWJs
ZUluZGV4LCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKIH0KIAorV0FTTV9TTE9XX1BB
VEhfREVDTChyZXR1cm5fY2FsbF9pbmRpcmVjdCkKK3sKKyAgICBhdXRvIGluc3RydWN0aW9uID0g
cGMtPmFzPFdhc21SZXR1cm5DYWxsSW5kaXJlY3Q+KCk7CisgICAgdW5zaWduZWQgZnVuY3Rpb25J
bmRleCA9IFJFQUQoaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4KS51bmJveGVkSW50MzIoKTsK
KyAgICByZXR1cm4gZG9XYXNtQ2FsbEluZGlyZWN0KGNhbGxGcmFtZSwgaW5zdGFuY2UsIGZ1bmN0
aW9uSW5kZXgsIGluc3RydWN0aW9uLm1fdGFibGVJbmRleCwgaW5zdHJ1Y3Rpb24ubV9zaWduYXR1
cmVJbmRleCk7Cit9CisKK1dBU01fU0xPV19QQVRIX0RFQ0wocmV0dXJuX2NhbGxfaW5kaXJlY3Rf
bm9fdGxzKQoreworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVJldHVybkNhbGxJ
bmRpcmVjdE5vVGxzPigpOworICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXggPSBSRUFEKGluc3Ry
dWN0aW9uLm1fZnVuY3Rpb25JbmRleCkudW5ib3hlZEludDMyKCk7CisgICAgcmV0dXJuIGRvV2Fz
bUNhbGxJbmRpcmVjdChjYWxsRnJhbWUsIGluc3RhbmNlLCBmdW5jdGlvbkluZGV4LCBpbnN0cnVj
dGlvbi5tX3RhYmxlSW5kZXgsIGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOworfQorCiBp
bmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRvV2FzbUNhbGxSZWYoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIFdhc206Okluc3RhbmNlKiBjYWxsZXJJbnN0YW5jZSwgSlNWYWx1ZSB0YXJnZXRSZWZlcmVu
Y2UsIHVuc2lnbmVkIHNpZ25hdHVyZUluZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IGNhYmRlMjBhZWNlYTYz
NDUzOWNkODBiNGNhMWExMzEzODgzNmExMDguLjE2YTBjNjg4ZDA5ODUyZjZlNmYzMGEyMGExM2Vi
YTY5ZGJmMjhkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20u
anNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTk1LDYg
Kzk1LDggQEAKICAgICAgICAgImRhdGEuZHJvcCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJl
eHR0YWJsZSIsICAgInZhbHVlIjogIDI1MiwgInJldHVybiI6IFtdLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInNlZ21lbnRfaW5kZXgiLCAgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJzaHJpbmtzIHRoZSBzaXplIG9mIHRoZSBzZWdtZW50IHRvIHplcm8iLCAiZXh0
ZW5kZWRPcCI6IDkgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAgICAgICB7ICJjYXRlZ29y
eSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAg
ICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAi
dmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAogICAgICAg
ICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFs
dWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBh
cmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjog
InRhYmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2NyaXB0aW9uIjogImNhbGwg
YSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKKyAgICAg
ICAgInJldHVybl9jYWxsIjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAg
ICAgICJ2YWx1ZSI6ICAxOCwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAidGFpbCBjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAorICAgICAgICAicmV0dXJu
X2NhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVl
IjogIDE5LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0
YWJsZV9pbmRleCIsInR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJ0YWlsIGNh
bGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKICAg
ICAgICAgImNhbGxfcmVmIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAg
InZhbHVlIjogIDIwLCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJj
YWxsIGEgZnVuY3Rpb24gcmVmZXJlbmNlIiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3MiOiAgICAg
ICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDQsICJyZXR1cm4iOiBb
ImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAg
ICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAg
ICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAi
dmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAg
ICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZh
bHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6
ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQg
ZnJvbSBtZW1vcnkiIH0sCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDcxZjZjZjliZGUwZDI0MDkwODYzNTZmYzhmODgyYzQ5Y2Q3OTY1NmEu
LmFhZjBmZjRkNzgxOTc2YWJkMDE5YzBmZGZhOGJkOTQxNDA1Mzc4OGIgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMjItMDQtMDggIFRvbSBUYXJ0YXJpbiAgPHRvbUBsZWFuaW5ndGVjaC5jb20+CisKKyAgICAg
ICAgU3VwcG9ydCBmb3IgV2ViQXNzZW1ibHkgdGFpbCBjYWxscworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1Mjc1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciByZXR1cm5fY2FsbCBh
bmQgcmV0dXJuX2NhbGxfaW5kaXJlY3QKKworICAgICAgICAqIHdhc20ueWFtbDoKKyAgICAgICAg
KiB3YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLWluZGlyZWN0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGxldC5nZW5lcmF0ZUJ1aWxkZXIpOgorICAgICAgICAoZ2VuZXJhdGVCdWlsZGVyKToKKyAg
ICAgICAgKiB3YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLXV0aWxzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGV4cG9ydC5jb25zdC50cnlSZXR1cm5DYWxsKToKKyAgICAgICAgKGV4cG9ydC5jb25z
dC50cnlSZXR1cm5DYWxsSW5kaXJlY3QpOgorICAgICAgICAoZXhwb3J0LmNvbnN0LmdlbmVyYXRl
RnVuY3Rpb24pOgorICAgICAgICAoZXhwb3J0LmNvbnN0LmdlbmVyYXRlRXhwb3J0cyk6CisgICAg
ICAgIChleHBvcnQuY29uc3QuZ2VuZXJhdGVUeXBlcyk6CisgICAgICAgIChleHBvcnQuY29uc3Qu
Z2VuZXJhdGVDb2RlKToKKyAgICAgICAgKiB3YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLmpz
OiBBZGRlZC4KKyAgICAgICAgKGxldC5nZW5lcmF0ZUJ1aWxkZXIpOgorICAgICAgICAqIHdhc20v
d2FzbS5qc29uOgorCiAyMDIyLTA0LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gRmlyZSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50
IGluIFN0cnVjdHVyZTo6ZmluaXNoQ3JlYXRpb24gaW5zdGVhZCBvZiBTdHJ1Y3R1cmUgY29uc3Ry
dWN0b3IKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS55YW1sIGIvSlNUZXN0cy93YXNtLnlhbWwK
aW5kZXggYWVlYmJjMDRjZDlkODQ4NzRmMjM0MWExYjExOGJjOWNlYmEzZWFmZC4uZWY5ZTBlZjhj
ZjFhZWQ5YzQ3MWZlZDdmODBhMzk4NDBkYjY1YjhjMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
LnlhbWwKKysrIGIvSlNUZXN0cy93YXNtLnlhbWwKQEAgLTQ5LDYgKzQ5LDggQEAKICAgY21kOiBy
dW5XZWJBc3NlbWJseVN1aXRlKDpub19tb2R1bGUsICJtanN1bml0LmpzIikgdW5sZXNzIHBhcnNl
UnVuQ29tbWFuZHMKIC0gcGF0aDogd2FzbS9icmFuY2gtaGludHMKICAgY21kOiBydW5XZWJBc3Nl
bWJseVN1aXRlKCItLXVzZVdlYkFzc2VtYmx5QnJhbmNoSGludHM9dHJ1ZSIpCistIHBhdGg6IHdh
c20vcmV0dXJuLWNhbGwKKyAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlKCItLXVzZVdlYkFzc2Vt
Ymx5VGFpbENhbGxzPXRydWUiKQogCiAtIHBhdGg6IHdhc20vcmVmZXJlbmNlcy1zcGVjLXRlc3Rz
L2VsZW0ud2FzdC5qcwogICBjbWQ6IHJ1bldlYkFzc2VtYmx5UmVmZXJlbmNlU3BlY1Rlc3QgOm5v
cm1hbApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLWlu
ZGlyZWN0LmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLWluZGlyZWN0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM5ZmM1NzFiMjZjMDE5NDFhODA2NTliMDE3MGZhNTNkZDMxNDc0ZTQK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwvcmV0dXJuLWNhbGwt
aW5kaXJlY3QuanMKQEAgLTAsMCArMSwxNjggQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcu
Li9hc3NlcnQuanMnOworaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi9yZXR1cm4tY2FsbC11dGls
cy5qcycKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCitjb25zdCB0cnlS
ZXR1cm5DYWxsID0gdXRpbHMudHJ5UmV0dXJuQ2FsbAorY29uc3QgdHJ5UmV0dXJuQ2FsbEluZGly
ZWN0ID0gdXRpbHMudHJ5UmV0dXJuQ2FsbEluZGlyZWN0Citjb25zdCBnZW5lcmF0ZUZ1bmN0aW9u
ID0gdXRpbHMuZ2VuZXJhdGVGdW5jdGlvbgorY29uc3QgZ2VuZXJhdGVFeHBvcnRzID0gdXRpbHMu
Z2VuZXJhdGVFeHBvcnRzCitjb25zdCBnZW5lcmF0ZVR5cGVzID0gdXRpbHMuZ2VuZXJhdGVUeXBl
cworY29uc3QgZ2VuZXJhdGVDb2RlID0gdXRpbHMuZ2VuZXJhdGVDb2RlCisKK2NvbnN0IHNpZ25h
dHVyZXMgPSBbCisgIHsgcGFyYW1zOiBbImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIi
LCAiaTMyIiwgImkzMiIsICJpMzIiXSwgcmV0OiAiaTMyIiB9LAorICB7IHBhcmFtczogWyJpMzIi
LCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIl0sIHJldDog
ImkzMiIgfSwKKyAgeyBwYXJhbXM6IFsiaTMyIiwgImkzMiIsICJpMzIiXSwgcmV0OiAiaTMyIiB9
LAorICB7IHBhcmFtczogWyJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIs
ICJpMzIiLCAiaTMyIiwgImkzMiJdLCByZXQ6ICJpMzIiIH0sCisgIHsgcGFyYW1zOiBbImkzMiIs
ICJpMzIiXSwgcmV0OiAiaTMyIiB9LAorICB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSwKKyAg
eyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0sCitdCisKK2NvbnN0IGZ1bjAgPSBnZW5lcmF0ZUZ1
bmN0aW9uKCdmdW4wJywKKyAgKGJ1aWxkZXIsIHVzZVJldHVybkNhbGwpID0+IHsKKyAgICBsZXQg
bmV3QnVpbGRlciA9CisgICAgYnVpbGRlci5GdW5jdGlvbigiZnVuMCIsIHNpZ25hdHVyZXNbMF0p
CisgICAgICAgICAgICAgLkdldExvY2FsKDApLkdldExvY2FsKDEpLkdldExvY2FsKDIpLkdldExv
Y2FsKDMpLkdldExvY2FsKDQpLkdldExvY2FsKDUpCisgICAgICAgICAgICAgLkdldExvY2FsKDYp
LkdldExvY2FsKDcpCisgICAgcmV0dXJuIHRyeVJldHVybkNhbGxJbmRpcmVjdChuZXdCdWlsZGVy
LCB1c2VSZXR1cm5DYWxsLCAxLDApLkVuZCgpOworICB9KTsKKworY29uc3QgZnVuMSA9IGdlbmVy
YXRlRnVuY3Rpb24oJ2Z1bjEnLAorICAoYnVpbGRlciwgdXNlUmV0dXJuQ2FsbCkgPT4geworICAg
IGxldCBuZXdCdWlsZGVyID0gYnVpbGRlcgorICAgICAgICAgICAgICAuRnVuY3Rpb24oImZ1bjEi
LCBzaWduYXR1cmVzWzFdKQorICAgICAgICAgICAgIC5HZXRMb2NhbCgwKS5HZXRMb2NhbCgxKS5H
ZXRMb2NhbCgyKS5HZXRMb2NhbCgzKS5HZXRMb2NhbCg2KS5HZXRMb2NhbCg3KQorICAgICAgICAg
ICAgIC5JMzJBZGQoKS5JMzJBZGQoKS5JMzJBZGQoKQorICAgIHJldHVybiB0cnlSZXR1cm5DYWxs
SW5kaXJlY3QobmV3QnVpbGRlciwgdXNlUmV0dXJuQ2FsbCwgMiwgMCkuRW5kKCk7CisgIH0pOwor
Citjb25zdCBmdW4yID0gZ2VuZXJhdGVGdW5jdGlvbignZnVuMicsCisgIChidWlsZGVyLCB1c2VS
ZXR1cm5DYWxsKSA9PiB7CisgICAgbGV0IG5ld0J1aWxkZXIgPSBidWlsZGVyCisgICAgICAgICAu
RnVuY3Rpb24oImZ1bjIiLCBzaWduYXR1cmVzWzJdKQorICAgICAgICAgICAgIC5HZXRMb2NhbCgw
KS5HZXRMb2NhbCgxKS5HZXRMb2NhbCgyKS5HZXRMb2NhbCgwKQorICAgICAgICAgICAgIC5HZXRM
b2NhbCgxKS5HZXRMb2NhbCgyKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgxKQorICAgICAgICAgICAg
IC5HZXRMb2NhbCgyKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgxKS5HZXRMb2NhbCgyKQorICAgICAg
ICAgICAgIC5HZXRMb2NhbCgyKS5HZXRMb2NhbCgxKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgyKQor
ICAgICAgICAgICAgIC5HZXRMb2NhbCgxKS5HZXRMb2NhbCgwKQorICAgICAgICAgICAgIC5JMzJB
ZGQoKS5JMzJBZGQoKS5JMzJBZGQoKS5JMzJBZGQoKS5JMzJBZGQoKQorICAgICAgICAgICAgIC5J
MzJBZGQoKS5JMzJBZGQoKS5JMzJBZGQoKQorICAgICAgICAgICAgIC5JMzJBZGQoKQorICAgIHJl
dHVybiB0cnlSZXR1cm5DYWxsSW5kaXJlY3QobmV3QnVpbGRlciwgdXNlUmV0dXJuQ2FsbCwgMywg
MCkuRW5kKCk7CisgIH0pOworCitjb25zdCBmdW4zID0gZ2VuZXJhdGVGdW5jdGlvbignZnVuMycs
CisgIChidWlsZGVyLCB1c2VSZXR1cm5DYWxsKSA9PiB7CisgICAgbGV0IG5ld0J1aWxkZXIgPSBi
dWlsZGVyCisgICAgICAgICAuRnVuY3Rpb24oImZ1bjMiLCBzaWduYXR1cmVzWzNdKQorICAgICAg
ICAgICAgIC5HZXRMb2NhbCgwKS5HZXRMb2NhbCgxKS5HZXRMb2NhbCgyKS5HZXRMb2NhbCgzKQor
ICAgICAgICAgICAgIC5HZXRMb2NhbCg0KS5HZXRMb2NhbCg1KS5HZXRMb2NhbCg2KS5HZXRMb2Nh
bCg3KQorICAgICAgICAgICAgIC5HZXRMb2NhbCg4KQorICAgICAgICAgICAgIC5JMzJBZGQoKS5J
MzJBZGQoKQorICAgICAgICAgICAgIC5JMzJBZGQoKS5JMzJBZGQoKQorICAgICAgICAgICAgIC5J
MzJBZGQoKS5JMzJBZGQoKQorICAgICAgICAgICAgIC5JMzJBZGQoKQorICAgIHJldHVybiB0cnlS
ZXR1cm5DYWxsSW5kaXJlY3QobmV3QnVpbGRlciwgdXNlUmV0dXJuQ2FsbCwgNCwgMCkuRW5kKCk7
CisgIH0pOworCitjb25zdCBmdW40ID0gZ2VuZXJhdGVGdW5jdGlvbignZnVuNCcsCisgIChidWls
ZGVyKSA9PiB7CisgICAgcmV0dXJuIGJ1aWxkZXIKKyAgICAgICAgIC5GdW5jdGlvbigiZnVuNCIs
IHNpZ25hdHVyZXNbNF0pCisgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAg
LkdldExvY2FsKDEpCisgICAgICAgICAgICAgLkkzMkFkZCgpCisgICAgICAgICAgICAgLlJldHVy
bigpCisgICAgICAgICAgICAgIC5FbmQoKQorICB9KTsKKworY29uc3QgbWFpbiA9IGdlbmVyYXRl
RnVuY3Rpb24oJ21haW4nLAorICAoYnVpbGRlciwgdXNlUmV0dXJuQ2FsbCkgPT4geworICAgIGxl
dCBuZXdCdWlsZGVyID0gYnVpbGRlcgorICAgICAgICAgLkZ1bmN0aW9uKCJtYWluIiwgc2lnbmF0
dXJlc1s1XSkKKyAgICAgICAgICAgICAuSTMyQ29uc3QoMCkuSTMyQ29uc3QoMSkuSTMyQ29uc3Qo
MikuSTMyQ29uc3QoMykuSTMyQ29uc3QoNCkKKyAgICAgICAgICAgICAuSTMyQ29uc3QoNSkuSTMy
Q29uc3QoNikuSTMyQ29uc3QoNykuSTMyQ29uc3QoOCkuSTMyQ29uc3QoOSkKKyAgICAgICAgICAg
ICAuSTMyQ29uc3QoMTApLkkzMkNvbnN0KDExKS5JMzJDb25zdCgxMikuSTMyQ29uc3QoMTMpLkkz
MkNvbnN0KDE0KS5JMzJDb25zdCgxNSkKKyAgICAgICAgICAgICAuSTMyQWRkKCkuSTMyQWRkKCku
STMyQWRkKCkuSTMyQWRkKCkuSTMyQWRkKCkuSTMyQWRkKCkuSTMyQWRkKCkuSTMyQWRkKCkKKyAg
ICByZXR1cm4gdHJ5UmV0dXJuQ2FsbEluZGlyZWN0KG5ld0J1aWxkZXIsIHVzZVJldHVybkNhbGws
IDAsIDApLkVuZCgpOworICB9CispCisKK2NvbnN0IG1haW4xID0gZ2VuZXJhdGVGdW5jdGlvbign
bWFpbjEnLAorICAoYnVpbGRlciwgdXNlUmV0dXJuQ2FsbCkgPT4geworICAgIGxldCBuZXdCdWls
ZGVyID0gYnVpbGRlcgorICAgICAgICAgLkZ1bmN0aW9uKCJtYWluMSIsIHNpZ25hdHVyZXNbNl0p
CisgICAgICAgICAgICAgLkNhbGwoNSkKKyAgICAgICAgICAgICAuSTMyQ29uc3QoMTYpCisgICAg
ICAgICAgICAgLkkzMkNvbnN0KDE3KQorICAgICAgICAgICAgIC5JMzJBZGQoKQorICAgIHJldHVy
biB0cnlSZXR1cm5DYWxsSW5kaXJlY3QobmV3QnVpbGRlciwgdXNlUmV0dXJuQ2FsbCwgNCwgMCku
RW5kKCk7CisgIH0KKykKKworY29uc3QgZnVuY3Rpb25zID0gW2Z1bjAsIGZ1bjEsIGZ1bjIsIGZ1
bjMsIGZ1bjQsIG1haW4sIG1haW4xXTsKKworbGV0IGdlbmVyYXRlQnVpbGRlciA9IChmdW5jdGlv
bnMsIHNpZ25hdHVyZXMsIHVzZVJldHVybkNhbGwpID0+IHsKKyAgIGxldCBidWlsZGVyID0gbmV3
IEJ1aWxkZXIoKQorICAgIGJ1aWxkZXIgPSBnZW5lcmF0ZVR5cGVzKGJ1aWxkZXIsIHNpZ25hdHVy
ZXMpCisgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAuVGFibGUoKQorICAgICAgLlRhYmxlKHtp
bml0aWFsOiA3LCBlbGVtZW50OiAiZnVuY3JlZiJ9KQorICAgIC5FbmQoKQorICAgIGJ1aWxkZXIg
PSBnZW5lcmF0ZUV4cG9ydHMoYnVpbGRlciwgZnVuY3Rpb25zKQorICAgIC5FbGVtZW50KCkKKyAg
ICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDAsIG9mZnNldDogMCwgZnVuY3Rpb25JbmRpY2Vz
OiBbMCwgMSwgMiwgMywgNCwgNSwgNl19KQorICAgIC5FbmQoKQorICAgIHJldHVybiBnZW5lcmF0
ZUNvZGUoYnVpbGRlciwgZnVuY3Rpb25zLCB1c2VSZXR1cm5DYWxsKQorfQorCitsZXQgbGhzID0g
bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoZ2VuZXJhdGVC
dWlsZGVyKGZ1bmN0aW9ucywgc2lnbmF0dXJlcywvKnVzZVJldHVybkNhbGwqL3RydWUpLldlYkFz
c2VtYmx5KCkuZ2V0KCkpKTsKK2xldCByaHMgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZShnZW5lcmF0ZUJ1aWxkZXIoZnVuY3Rpb25zLCBzaWduYXR1cmVz
LC8qdXNlUmV0dXJuQ2FsbCovZmFsc2UpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworYXNzZXJ0
LmVxKGxocy5leHBvcnRzWydtYWluJ10oKSwgcmhzLmV4cG9ydHNbJ21haW4nXSgpKQorYXNzZXJ0
LmVxKGxocy5leHBvcnRzWydtYWluMSddKCksIHJocy5leHBvcnRzWydtYWluMSddKCkpCisKK2xl
dCB0YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDo3LCBlbGVtZW50OiJmdW5j
cmVmIn0pCitsZXQgaW1wb3J0T2JqZWN0ID0geyBpbXA6IHsgdGFibGUgfSB9OworCisKK2dlbmVy
YXRlQnVpbGRlciA9IChmdW5jdGlvbnMsIHNpZ25hdHVyZXMsIHVzZVJldHVybkNhbGwpID0+IHsK
KyAgIGxldCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAgIGJ1aWxkZXIgPSBnZW5lcmF0ZVR5
cGVzKGJ1aWxkZXIsIHNpZ25hdHVyZXMpCisgICAgLkltcG9ydCgpCisgICAgICAuVGFibGUoImlt
cCIsICJ0YWJsZSIsIHtpbml0aWFsOiA3LCBlbGVtZW50OiAiZnVuY3JlZiJ9KQorICAgIC5FbmQo
KQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgYnVpbGRlciA9IGdlbmVyYXRlRXhwb3J0cyhi
dWlsZGVyLCBmdW5jdGlvbnMpCisgICAgLkVsZW1lbnQoKQorICAgICAgICAuRWxlbWVudCh7dGFi
bGVJbmRleDogMCwgb2Zmc2V0OiAwLCBmdW5jdGlvbkluZGljZXM6IFswXX0pCisgICAgICAgIC5F
bGVtZW50KHt0YWJsZUluZGV4OiAwLCBvZmZzZXQ6IDIsIGZ1bmN0aW9uSW5kaWNlczogWzJdfSkK
KyAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDAsIG9mZnNldDogNCwgZnVuY3Rpb25JbmRp
Y2VzOiBbNF19KQorICAgICAgICAuRWxlbWVudCh7dGFibGVJbmRleDogMCwgb2Zmc2V0OiA2LCBm
dW5jdGlvbkluZGljZXM6IFs2XX0pCisgICAgLkVuZCgpCisgICAgcmV0dXJuIGdlbmVyYXRlQ29k
ZShidWlsZGVyLCBmdW5jdGlvbnMsIHVzZVJldHVybkNhbGwpCit9CisKK2xocyA9IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGdlbmVyYXRlQnVpbGRlcihm
dW5jdGlvbnMsIHNpZ25hdHVyZXMsLyp1c2VSZXR1cm5DYWxsKi90cnVlKS5XZWJBc3NlbWJseSgp
LmdldCgpKSwgaW1wb3J0T2JqZWN0KTsKKworZ2VuZXJhdGVCdWlsZGVyID0gKGZ1bmN0aW9ucywg
c2lnbmF0dXJlcywgdXNlUmV0dXJuQ2FsbCkgPT4geworICAgbGV0IGJ1aWxkZXIgPSBuZXcgQnVp
bGRlcigpCisgICAgYnVpbGRlciA9IGdlbmVyYXRlVHlwZXMoYnVpbGRlciwgc2lnbmF0dXJlcykK
KyAgICAuSW1wb3J0KCkKKyAgICAgIC5UYWJsZSgiaW1wIiwgInRhYmxlIiwge2luaXRpYWw6IDcs
IGVsZW1lbnQ6ICJmdW5jcmVmIn0pCisgICAgLkVuZCgpCisgICAgLkZ1bmN0aW9uKCkuRW5kKCkK
KyAgICBidWlsZGVyID0gZ2VuZXJhdGVFeHBvcnRzKGJ1aWxkZXIsIGZ1bmN0aW9ucykKKyAgICAu
RWxlbWVudCgpCisgICAgICAgIC5FbGVtZW50KHt0YWJsZUluZGV4OiAwLCBvZmZzZXQ6IDEsIGZ1
bmN0aW9uSW5kaWNlczogWzFdfSkKKyAgICAgICAgLkVsZW1lbnQoe3RhYmxlSW5kZXg6IDAsIG9m
ZnNldDogMywgZnVuY3Rpb25JbmRpY2VzOiBbM119KQorICAgICAgICAuRWxlbWVudCh7dGFibGVJ
bmRleDogMCwgb2Zmc2V0OiA1LCBmdW5jdGlvbkluZGljZXM6IFs1XX0pCisgICAgLkVuZCgpCisg
ICAgcmV0dXJuIGdlbmVyYXRlQ29kZShidWlsZGVyLCBmdW5jdGlvbnMsIHVzZVJldHVybkNhbGwp
Cit9CisKK3JocyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKGdlbmVyYXRlQnVpbGRlcihmdW5jdGlvbnMsIHNpZ25hdHVyZXMsLyp1c2VSZXR1cm5DYWxs
Ki9mYWxzZSkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIGltcG9ydE9iamVjdCk7CisKK2Fzc2VydC5l
cShsaHMuZXhwb3J0c1snbWFpbiddKCksIHJocy5leHBvcnRzWydtYWluJ10oKSkKK2Fzc2VydC5l
cShsaHMuZXhwb3J0c1snbWFpbjEnXSgpLCByaHMuZXhwb3J0c1snbWFpbjEnXSgpKQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLXV0aWxzLmpzIGIvSlNU
ZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLXV0aWxzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2
ZGUzZmI0Mzc0ZGRjZTA5ZmQyYTg4ZDg0OTk0MjAzYjRjOTQ2MGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwvcmV0dXJuLWNhbGwtdXRpbHMuanMKQEAgLTAsMCAr
MSwzOCBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CisKK2V4cG9ydCBj
b25zdCB0cnlSZXR1cm5DYWxsID0gKGJ1aWxkZXIsIHVzZVJldHVybkNhbGwsIGluZGV4KSA9PiB7
CisgIHJldHVybiB1c2VSZXR1cm5DYWxsID8gYnVpbGRlci5SZXR1cm5DYWxsKGluZGV4KSA6IGJ1
aWxkZXIuQ2FsbChpbmRleCkKK30KKworZXhwb3J0IGNvbnN0IHRyeVJldHVybkNhbGxJbmRpcmVj
dCA9IChidWlsZGVyLCB1c2VSZXR1cm5DYWxsLCBpbmRleCwgdGFibGVJbmRleCkgPT4geworICBs
ZXQgbmV3QnVpbGRlciA9IGJ1aWxkZXIuSTMyQ29uc3QoaW5kZXgpOworICByZXR1cm4gdXNlUmV0
dXJuQ2FsbCA/IG5ld0J1aWxkZXIuUmV0dXJuQ2FsbEluZGlyZWN0KGluZGV4LCB0YWJsZUluZGV4
KSA6IG5ld0J1aWxkZXIuQ2FsbEluZGlyZWN0KGluZGV4LCB0YWJsZUluZGV4KQorfQorCitleHBv
cnQgY29uc3QgZ2VuZXJhdGVGdW5jdGlvbiA9IChuYW1lLCBib2R5KSA9PiB7CisgIHJldHVybiB7
CisgICAgbmFtZTogbmFtZSwKKyAgICBib2R5OiBib2R5CisgIH0KK30KKworZXhwb3J0IGNvbnN0
IGdlbmVyYXRlRXhwb3J0cyA9IChidWlsZGVyLCBmdW5jdGlvbnMpID0+IHsKKyAgICBsZXQgbmV3
QnVpbGRlciA9IGJ1aWxkZXIuRXhwb3J0KCkKKyAgICBmb3IgKGNvbnN0IGYgb2YgZnVuY3Rpb25z
KQorICAgICAgbmV3QnVpbGRlciA9IG5ld0J1aWxkZXIuRnVuY3Rpb24oZlsnbmFtZSddKQorICAg
IHJldHVybiBuZXdCdWlsZGVyLkVuZCgpCit9CisKK2V4cG9ydCBjb25zdCBnZW5lcmF0ZVR5cGVz
ID0gKGJ1aWxkZXIsIHNpZ25hdHVyZXMpID0+IHsKKyAgICBsZXQgbmV3QnVpbGRlciA9IGJ1aWxk
ZXIuVHlwZSgpCisgICAgZm9yIChjb25zdCBzIG9mIHNpZ25hdHVyZXMpCisgICAgICBuZXdCdWls
ZGVyID0gbmV3QnVpbGRlci5GdW5jKHNbJ3BhcmFtcyddLCBzWydyZXQnXSkKKyAgICByZXR1cm4g
bmV3QnVpbGRlci5FbmQoKQorfQorCitleHBvcnQgY29uc3QgZ2VuZXJhdGVDb2RlID0gKGJ1aWxk
ZXIsIGZ1bmN0aW9ucywgdXNlUmV0dXJuQ2FsbCkgPT4geworICAgIGxldCBuZXdCdWlsZGVyID0g
YnVpbGRlci5Db2RlKCkKKyAgICBmb3IgKGNvbnN0IGYgb2YgZnVuY3Rpb25zKQorICAgICAgbmV3
QnVpbGRlciA9IGZbJ2JvZHknXShuZXdCdWlsZGVyLCB1c2VSZXR1cm5DYWxsKQorICAgIHJldHVy
biBuZXdCdWlsZGVyLkVuZCgpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNh
bGwvcmV0dXJuLWNhbGwuanMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwvcmV0dXJuLWNhbGwu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGVkOTU2Mzg2ZmVlODRkOGJiNmExY2U1NzA0MWNlNTVlYmRlYzA2Zgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC9yZXR1cm4tY2FsbC5q
cwpAQCAtMCwwICsxLDEwOCBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5q
cyc7CitpbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3JldHVybi1jYWxsLXV0aWxzLmpzJworaW1w
b3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CisKK2NvbnN0IHRyeVJldHVybkNhbGwg
PSB1dGlscy50cnlSZXR1cm5DYWxsCitjb25zdCBnZW5lcmF0ZUZ1bmN0aW9uID0gdXRpbHMuZ2Vu
ZXJhdGVGdW5jdGlvbgorY29uc3QgZ2VuZXJhdGVFeHBvcnRzID0gdXRpbHMuZ2VuZXJhdGVFeHBv
cnRzCitjb25zdCBnZW5lcmF0ZVR5cGVzID0gdXRpbHMuZ2VuZXJhdGVUeXBlcworY29uc3QgZ2Vu
ZXJhdGVDb2RlID0gdXRpbHMuZ2VuZXJhdGVDb2RlCisKK2NvbnN0IGZ1bjAgPSBnZW5lcmF0ZUZ1
bmN0aW9uKCdmdW4wJywKKyAgKGJ1aWxkZXIsIHVzZVJldHVybkNhbGwpID0+IHsKKyAgICBsZXQg
bmV3QnVpbGRlciA9CisgICAgYnVpbGRlci5GdW5jdGlvbigiZnVuMCIsIHsgcGFyYW1zOiBbImkz
MiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiXSwgcmV0
OiAiaTMyIiB9KQorICAgICAgICAgICAgIC5HZXRMb2NhbCgwKS5HZXRMb2NhbCgxKS5HZXRMb2Nh
bCgyKS5HZXRMb2NhbCgzKS5HZXRMb2NhbCg0KS5HZXRMb2NhbCg1KQorICAgICAgICAgICAgIC5H
ZXRMb2NhbCg2KS5HZXRMb2NhbCg3KQorICAgIHJldHVybiB0cnlSZXR1cm5DYWxsKG5ld0J1aWxk
ZXIsIHVzZVJldHVybkNhbGwsIDEpLkVuZCgpOworICB9KTsKKworY29uc3QgZnVuMSA9IGdlbmVy
YXRlRnVuY3Rpb24oJ2Z1bjEnLAorICAoYnVpbGRlciwgdXNlUmV0dXJuQ2FsbCkgPT4geworICAg
IGxldCBuZXdCdWlsZGVyID0gYnVpbGRlcgorICAgICAgICAgICAgICAuRnVuY3Rpb24oImZ1bjEi
LCB7IHBhcmFtczogWyJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJp
MzIiLCAiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAuR2V0TG9jYWwoMCkuR2V0
TG9jYWwoMSkuR2V0TG9jYWwoMikuR2V0TG9jYWwoMykuR2V0TG9jYWwoNikuR2V0TG9jYWwoNykK
KyAgICAgICAgICAgICAuSTMyQWRkKCkuSTMyQWRkKCkuSTMyQWRkKCkKKyAgICByZXR1cm4gdHJ5
UmV0dXJuQ2FsbChuZXdCdWlsZGVyLCB1c2VSZXR1cm5DYWxsLCAyKS5FbmQoKTsKKyAgfSk7CisK
K2NvbnN0IGZ1bjIgPSBnZW5lcmF0ZUZ1bmN0aW9uKCdmdW4yJywKKyAgKGJ1aWxkZXIsIHVzZVJl
dHVybkNhbGwpID0+IHsKKyAgICBsZXQgbmV3QnVpbGRlciA9IGJ1aWxkZXIKKyAgICAgICAgIC5G
dW5jdGlvbigiZnVuMiIsIHsgcGFyYW1zOiBbImkzMiIsICJpMzIiLCAiaTMyIl0sIHJldDogImkz
MiIgfSkKKyAgICAgICAgICAgICAuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMSkuR2V0TG9jYWwoMiku
R2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAuR2V0TG9jYWwoMSkuR2V0TG9jYWwoMikuR2V0TG9j
YWwoMCkuR2V0TG9jYWwoMSkKKyAgICAgICAgICAgICAuR2V0TG9jYWwoMikuR2V0TG9jYWwoMCku
R2V0TG9jYWwoMSkuR2V0TG9jYWwoMikKKyAgICAgICAgICAgICAuR2V0TG9jYWwoMikuR2V0TG9j
YWwoMSkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMikKKyAgICAgICAgICAgICAuR2V0TG9jYWwoMSku
R2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAuSTMyQWRkKCkuSTMyQWRkKCkuSTMyQWRkKCkuSTMy
QWRkKCkuSTMyQWRkKCkKKyAgICAgICAgICAgICAuSTMyQWRkKCkuSTMyQWRkKCkuSTMyQWRkKCkK
KyAgICAgICAgICAgICAuSTMyQWRkKCkKKyAgICByZXR1cm4gdHJ5UmV0dXJuQ2FsbChuZXdCdWls
ZGVyLCB1c2VSZXR1cm5DYWxsLCAzKS5FbmQoKTsKKyAgfSk7CisKK2NvbnN0IGZ1bjMgPSBnZW5l
cmF0ZUZ1bmN0aW9uKCdmdW4zJywKKyAgKGJ1aWxkZXIsIHVzZVJldHVybkNhbGwpID0+IHsKKyAg
ICBsZXQgbmV3QnVpbGRlciA9IGJ1aWxkZXIKKyAgICAgICAgIC5GdW5jdGlvbigiZnVuMyIsIHsg
cGFyYW1zOiBbImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIs
ICJpMzIiLCAiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAuR2V0TG9jYWwoMCku
R2V0TG9jYWwoMSkuR2V0TG9jYWwoMikuR2V0TG9jYWwoMykKKyAgICAgICAgICAgICAuR2V0TG9j
YWwoNCkuR2V0TG9jYWwoNSkuR2V0TG9jYWwoNikuR2V0TG9jYWwoNykKKyAgICAgICAgICAgICAu
R2V0TG9jYWwoOCkKKyAgICAgICAgICAgICAuSTMyQWRkKCkuSTMyQWRkKCkKKyAgICAgICAgICAg
ICAuSTMyQWRkKCkuSTMyQWRkKCkKKyAgICAgICAgICAgICAuSTMyQWRkKCkuSTMyQWRkKCkKKyAg
ICAgICAgICAgICAuSTMyQWRkKCkKKyAgICByZXR1cm4gdHJ5UmV0dXJuQ2FsbChuZXdCdWlsZGVy
LCB1c2VSZXR1cm5DYWxsLCA0KS5FbmQoKTsKKyAgfSk7CisKK2NvbnN0IGZ1bjQgPSBnZW5lcmF0
ZUZ1bmN0aW9uKCdmdW40JywKKyAgKGJ1aWxkZXIpID0+IHsKKyAgICByZXR1cm4gYnVpbGRlcgor
ICAgICAgICAgLkZ1bmN0aW9uKCJmdW40IiwgeyBwYXJhbXM6IFsiaTMyIiwgImkzMiJdLCByZXQ6
ICJpMzIiIH0pCisgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgLkdldExv
Y2FsKDEpCisgICAgICAgICAgICAgLkkzMkFkZCgpCisgICAgICAgICAgICAgLlJldHVybigpCisg
ICAgICAgICAgICAgIC5FbmQoKQorICB9KTsKKworY29uc3QgbWFpbiA9IGdlbmVyYXRlRnVuY3Rp
b24oJ21haW4nLAorICAoYnVpbGRlciwgdXNlUmV0dXJuQ2FsbCkgPT4geworICAgIGxldCBuZXdC
dWlsZGVyID0gYnVpbGRlcgorICAgICAgICAgLkZ1bmN0aW9uKCJtYWluIiwge3BhcmFtczogW10s
IHJldDogImkzMiIgfSkKKyAgICAgICAgICAgICAuSTMyQ29uc3QoMCkuSTMyQ29uc3QoMSkuSTMy
Q29uc3QoMikuSTMyQ29uc3QoMykuSTMyQ29uc3QoNCkKKyAgICAgICAgICAgICAuSTMyQ29uc3Qo
NSkuSTMyQ29uc3QoNikuSTMyQ29uc3QoNykuSTMyQ29uc3QoOCkuSTMyQ29uc3QoOSkKKyAgICAg
ICAgICAgICAuSTMyQ29uc3QoMTApLkkzMkNvbnN0KDExKS5JMzJDb25zdCgxMikuSTMyQ29uc3Qo
MTMpLkkzMkNvbnN0KDE0KS5JMzJDb25zdCgxNSkKKyAgICAgICAgICAgICAuSTMyQWRkKCkuSTMy
QWRkKCkuSTMyQWRkKCkuSTMyQWRkKCkuSTMyQWRkKCkuSTMyQWRkKCkuSTMyQWRkKCkuSTMyQWRk
KCkKKyAgICByZXR1cm4gdHJ5UmV0dXJuQ2FsbChuZXdCdWlsZGVyLCB1c2VSZXR1cm5DYWxsLCAw
KS5FbmQoKTsKKyAgfQorKQorCitjb25zdCBtYWluMSA9IGdlbmVyYXRlRnVuY3Rpb24oJ21haW4x
JywKKyAgKGJ1aWxkZXIsIHVzZVJldHVybkNhbGwpID0+IHsKKyAgICBsZXQgbmV3QnVpbGRlciA9
IGJ1aWxkZXIKKyAgICAgICAgIC5GdW5jdGlvbigibWFpbjEiLCB7IHBhcmFtczogW10sIHJldDog
ImkzMiIgfSkKKyAgICAgICAgICAgICAuQ2FsbCg1KQorICAgICAgICAgICAgIC5JMzJDb25zdCgx
NikKKyAgICAgICAgICAgICAuSTMyQ29uc3QoMTcpCisgICAgICAgICAgICAgLkkzMkFkZCgpCisg
ICAgcmV0dXJuIHRyeVJldHVybkNhbGwobmV3QnVpbGRlciwgdXNlUmV0dXJuQ2FsbCwgNCkuRW5k
KCk7CisgIH0KKykKKworY29uc3QgZnVuY3Rpb25zID0gW2Z1bjAsIGZ1bjEsIGZ1bjIsIGZ1bjMs
IGZ1bjQsIG1haW4sIG1haW4xXTsKKworbGV0IGdlbmVyYXRlQnVpbGRlciA9IChmdW5jdGlvbnMs
IHVzZVJldHVybkNhbGwpID0+IHsKKyAgIGxldCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAg
IGJ1aWxkZXIgPSBnZW5lcmF0ZVR5cGVzKGJ1aWxkZXIsIFtdKQorICAgIC5GdW5jdGlvbigpLkVu
ZCgpCisgICAgYnVpbGRlciA9IGdlbmVyYXRlRXhwb3J0cyhidWlsZGVyLCBmdW5jdGlvbnMpCisg
ICAgcmV0dXJuIGdlbmVyYXRlQ29kZShidWlsZGVyLCBmdW5jdGlvbnMsIHVzZVJldHVybkNhbGwp
Cit9CisKK2NvbnN0IGxocyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKGdlbmVyYXRlQnVpbGRlcihmdW5jdGlvbnMsIC8qdXNlUmV0dXJuQ2FsbCovdHJ1
ZSkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpOworY29uc3QgcmhzID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoZ2VuZXJhdGVCdWlsZGVyKGZ1bmN0aW9ucywg
Lyp1c2VyUmV0dXJuQ2FsbCovZmFsc2UpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKTsKKworCithc3Nl
cnQuZXEobGhzLmV4cG9ydHNbJ21haW4nXSgpLCByaHMuZXhwb3J0c1snbWFpbiddKCkpCithc3Nl
cnQuZXEobGhzLmV4cG9ydHNbJ21haW4xJ10oKSwgcmhzLmV4cG9ydHNbJ21haW4xJ10oKSkKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29u
CmluZGV4IDMyYzhhZjhiYmY1N2VhNjA1YjMzNTVhNTZkODgyZThkZGUxZTBlZWQuLjg1Zjg2MGY5
ZTFlMTg4ODQxYTQ0NjkyMDE0MjkzYjY4ZTJiMDBjM2IgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS93YXNtLmpzb24KKysrIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAtOTUsNiArOTUsOCBA
QAogICAgICAgICAiZGF0YS5kcm9wIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImV4dHRhYmxl
IiwgICAidmFsdWUiOiAgMjUyLCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAic2VnbWVudF9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50MzIifV0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogInNocmlua3MgdGhlIHNpemUgb2YgdGhlIHNlZ21lbnQgdG8gemVybyIsICJleHRlbmRlZE9w
IjogOSB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNh
bGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAg
ICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCiAgICAgICAgICJjYWxs
X2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAx
NywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVy
IjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6
ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVf
aW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0
aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAgICAgICAicmV0
dXJuX2NhbGwiOiAgICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZh
bHVlIjogIDE4LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ0YWls
IGNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCisgICAgICAgICJyZXR1cm5fY2FsbF9p
bmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTks
ICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6
IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
dHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInRhYmxlX2lu
ZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2NyaXB0aW9uIjogInRhaWwgY2FsbCBhIGZ1
bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAgICAgICAi
Y2FsbF9yZWYiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUi
OiAgMjAsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFt
ZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBm
dW5jdGlvbiByZWZlcmVuY2UiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsiaTMyIl0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMy
LmxvYWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAg
NDUsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRl
ciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUi
OiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNl
dCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1l
bW9yeSIgfSwK
</data>
<flag name="commit-queue"
          id="485594"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458500</attachid>
            <date>2022-04-28 01:27:01 -0700</date>
            <delta_ts>2022-04-28 05:02:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215275-20220428102850.patch</filename>
            <type>text/plain</type>
            <size>1105848</size>
            <attacher name="Tom Tartarin">tom</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCA5NmNjMTM5MzMwMjNkZmM4YzBmZWJmNmZiNTIx
ZTBlMTFhMjRhOTk4Li4zNWVmMTEyOGE4ZDJhZDlhYmNhMzNmN2JhN2ZmNzZjMDhjN2IzOTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAg
LTE0OTAsNiArMTQ5MCwxMCBAQCBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVj
dAogb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzCiBvcCA6d2Fz
bV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWYKIG9wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxs
X3JlZl9ub190bHMKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbAorb3AgOndh
c21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsX25vX3Rscworb3AgOndhc21fdHJhbXBvbGlu
ZV93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0CitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fcmV0
dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzCiAKIGVuZF9zZWN0aW9uIDpOYXRpdmVIZWxwZXJzCiAK
QEAgLTE2ODYsNiArMTY5MCwyMiBAQCBvcCA6Y2FsbF9ub190bHMsCiAgICAgICAgIG51bWJlck9m
U3RhY2tBcmdzOiB1bnNpZ25lZCwKICAgICB9CiAKK29wIDpyZXR1cm5fY2FsbCwKKyAgICBhcmdz
OiB7CisgICAgICAgIGZ1bmN0aW9uSW5kZXg6IHVuc2lnbmVkLAorICAgICAgICBzdGFja09mZnNl
dDogdW5zaWduZWQsCisgICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICAg
ICAgbnVtYmVyT2ZDYWxsZXJTdGFja1JlZ3M6IHVuc2lnbmVkLAorICAgIH0KKworb3AgOnJldHVy
bl9jYWxsX25vX3RscywKKyAgICBhcmdzOiB7CisgICAgICAgIGZ1bmN0aW9uSW5kZXg6IHVuc2ln
bmVkLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgICAgIG51bWJlck9mU3Rh
Y2tBcmdzOiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZXJTdGFja1JlZ3M6IHVuc2ln
bmVkLAorICAgIH0KKwogb3AgOmNhbGxfaW5kaXJlY3QsCiAgICAgYXJnczogewogICAgICAgICBm
dW5jdGlvbkluZGV4OiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC0xNzA0LDYgKzE3MjQsMjYgQEAgb3Ag
OmNhbGxfaW5kaXJlY3Rfbm9fdGxzLAogICAgICAgICB0YWJsZUluZGV4OiB1bnNpZ25lZCwKICAg
ICB9CiAKK29wIDpyZXR1cm5fY2FsbF9pbmRpcmVjdCwKKyAgICBhcmdzOiB7CisgICAgICAgIGZ1
bmN0aW9uSW5kZXg6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVu
c2lnbmVkLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgICAgIG51bWJlck9m
U3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZXJTdGFja1JlZ3M6IHVu
c2lnbmVkLAorICAgICAgICB0YWJsZUluZGV4OiB1bnNpZ25lZCwKKyAgICB9CisKK29wIDpyZXR1
cm5fY2FsbF9pbmRpcmVjdF9ub190bHMsCisgICAgYXJnczogeworICAgICAgICBmdW5jdGlvbklu
ZGV4OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwK
KyAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJPZlN0YWNrQXJn
czogdW5zaWduZWQsCisgICAgICAgIG51bWJlck9mQ2FsbGVyU3RhY2tSZWdzOiB1bnNpZ25lZCwK
KyAgICAgICAgdGFibGVJbmRleDogdW5zaWduZWQsCisgICAgfQorCiBvcCA6Y2FsbF9yZWYsCiAg
ICAgYXJnczogewogICAgICAgICBmdW5jdGlvblJlZmVyZW5jZTogVmlydHVhbFJlZ2lzdGVyLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDVi
ZGM1ZTQ0YmQwMDMwZjI3NzdlOGY4YTBmZmRhMWRhNGQzMGUwZjguLjEwZWM4YjQ1MDJmZDcxNTU2
MDMzMDI1MzMzNDEyZmNiN2JhZTM0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTM3NCw2ICszNzQsMTAgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IGNvbnN0IEoKICAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9f
dGxzOgogICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWY6CiAgICAgY2FzZSB3
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZl9ub190bHM6CisgICAgY2FzZSB3YXNtX3RyYW1w
b2xpbmVfd2FzbV9yZXR1cm5fY2FsbDoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX3Jl
dHVybl9jYWxsX25vX3RsczoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9j
YWxsX2luZGlyZWN0OgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxf
aW5kaXJlY3Rfbm9fdGxzOgogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICB9CiAg
ICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZjEzNmJkNDUzZGM1NzdmNThkYWIz
Nzg5MzQ1ZTVhNzc4NDc1YjllMy4uMzc5MWY2Y2M1NjU3MDgxMWVkMmI5MmVmMjJmODY0OWY3MmE3
OWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQpAQCAtMjc0Niw2ICsyNzQ2LDE4IEBAIF93YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX2luZGlyZWN0X3dpZGUzMjoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGly
ZWN0X25vX3Rsc193aWRlMzI6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfd2lkZTMy
OgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3Rsc193aWRlMzI6Citfd2FzbV90
cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGw6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJu
X2NhbGxfbm9fdGxzOgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0
OgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0X25vX3RsczoKK193
YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF93aWRlMTY6Citfd2FzbV90cmFtcG9saW5l
X3dhc21fcmV0dXJuX2NhbGxfbm9fdGxzX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9y
ZXR1cm5fY2FsbF9pbmRpcmVjdF93aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJu
X2NhbGxfaW5kaXJlY3Rfbm9fdGxzX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1
cm5fY2FsbF93aWRlMzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfbm9fdGxz
X3dpZGUzMjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdF93aWRl
MzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzX3dp
ZGUzMjoKICAgICBjcmFzaCgpCiAKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9X
ZWJBc3NlbWJseS5hc20KaW5kZXggMjJlYmUyYTdlYjNkMDNlODk3MDhlMGFkOWQzNTMwZjlhZTVi
MjJlOC4uZmU5MmRkYmFiNTEyYmE0YmRjNjcxYTk4NGNjZGVhNzI2M2VmNGExMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCkBAIC0yMjAsNiArMjIwLDUx
IEBAIG1hY3JvIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAgIGVuZAogZW5kCiAK
K21hY3JvIHByZXNlcnZlR1BSc1VzZWRCeVJldHVybkNhbGwoKQorICAgIGlmIEFSTTY0IG9yIEFS
TTY0RQorICAgICAgICBlbWl0ICJzdHAgeDAsIHgxLCBbc3AsICMxNl0iCisgICAgZWxzaWYgWDg2
XzY0IG9yIFJJU0NWNjQKKyAgICAgICAgc3RvcmVwIHdhMCwgQ29kZUJsb2NrW3NwXQorICAgICAg
ICBzdG9yZXAgd2ExLCBDYWxsZWVbc3BdCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVu
ZAorZW5kCisKK21hY3JvIHJlc3RvcmVHUFJzVXNlZEJ5UmV0dXJuQ2FsbCgpCisgICAgaWYgQVJN
NjQgb3IgQVJNNjRFCisgICAgICAgIGVtaXQgImxkcCB4MCwgeDEsIFtzcCwgIzE2XSIKKyAgICBl
bHNpZiBYODZfNjQgb3IgUklTQ1Y2NAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbc3BdLCB3YTAK
KyAgICAgICAgbG9hZHAgQ2FsbGVlW3NwXSwgd2ExCisgICAgZWxzZQorICAgICAgICBlcnJvcgor
ICAgIGVuZAorZW5kCisKK21hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzcyhzY3JhdGNoKQorICAg
IGlmIEFSTTY0IG9yIEFSTTY0RSBvciBSSVNDVjY0CisgICAgICAgIGxvYWRwIFB0clNpemVbY2Zy
XSwgbHIKKyAgICBlbHNpZiBYODZfNjQKKyAgICAgICAgbG9hZHAgUHRyU2l6ZVtjZnJdLCBzY3Jh
dGNoCisgICAgICAgIHN0b3JlcCBzY3JhdGNoLCBQdHJTaXplW3NwXQorICAgIGVsc2UKKyAgICAg
ICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyB1c2VQcmV2aW91c0ZyYW1lKCkKKyAgICBp
ZiBBUk02NCBvciBBUk02NEUKKyAgICAgICAgZW1pdCAibGRwIHgyNiwgeDI5LCBbeDI5LCAjLThd
IgorICAgIGVsc2lmIFg4Nl82NCBvciBSSVNDVjY0CisgICAgICAgIGxvYWRwIC1QdHJTaXplW2Nm
cl0sIFBCCisgICAgICAgIGxvYWRwIFtjZnJdLCBjZnIKKyAgICBlbHNlCisgICAgICAgIGVycm9y
CisgICAgZW5kCitlbmQKKworCiBtYWNybyBsb2FkV2FzbUluc3RhbmNlRnJvbVRMU1RvKHJlZykK
IGlmICBIQVZFX0ZBU1RfVExTCiAgICAgdGxzX2xvYWRwIFdURl9XQVNNX0NPTlRFWFRfS0VZLCBy
ZWcKQEAgLTg3Miw2ICs5MTcsMTIxIEBAIG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBz
bG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgICAgIGVuZCkKIGVuZAogCittYWNybyBz
bG93UGF0aEZvcldhc21SZXR1cm5DYWxsKGN0eCwgc2xvd1BhdGgsIHN0b3JlV2FzbUluc3RhbmNl
KQorICAgIGNhbGxXYXNtQ2FsbFNsb3dQYXRoKAorICAgICAgICBzbG93UGF0aCwKKyAgICAgICAg
IyBjYWxsZWUgaXMgcjAgYW5kIHRhcmdldFdhc21JbnN0YW5jZSBpcyByMQorICAgICAgICBtYWNy
byAoY2FsbGVlLCB0YXJnZXRXYXNtSW5zdGFuY2UpCisgICAgICAgICAgICBtb3ZlIGNhbGxlZSwg
d3MwCisKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCisKKyAgICAgICAgICAgICMgdGhlIGNhbGwgbWlnaHQgdGhyb3cgKGUu
Zy4gaW5kaXJlY3QgY2FsbCB3aXRoIGJhZCBzaWduYXR1cmUpCisgICAgICAgICAgICBidHB6IHRh
cmdldFdhc21JbnN0YW5jZSwgLnRocm93CisKKyAgICAgICAgICAgIHdnZXR1KGN0eCwgbV9zdGFj
a09mZnNldCwgd3MxKQorICAgICAgICAgICAgbXVsaSBTbG90U2l6ZSwgd3MxCisgICAgICAgICAg
ICBzdWJwIGNmciwgd3MxLCBzcAorCisgICAgICAgICAgICBzdG9yZVdhc21JbnN0YW5jZSh0YXJn
ZXRXYXNtSW5zdGFuY2UpCisgICAgICAgICAgICByZWxvYWRNZW1vcnlSZWdpc3RlcnNGcm9tSW5z
dGFuY2UodGFyZ2V0V2FzbUluc3RhbmNlLCB3YTAsIHdhMSkKKworICAgICAgICAgICAgd2dldHUo
Y3R4LCBtX251bWJlck9mU3RhY2tBcmdzLCB3czEpCisgICAgICAgICAgICBmb3JFYWNoQXJndW1l
bnRHUFIobWFjcm8gKG9mZnNldCwgZ3ByKQorICAgICAgICAgICAgICAgIGxvYWRxIENhbGxGcmFt
ZUhlYWRlclNpemUgKyBQdHJTaXplICsgb2Zmc2V0W3NwLCB3czEsIFB0clNpemVdLCBncHIKKyAg
ICAgICAgICAgIGVuZCkKKyAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEZQUihtYWNybyAob2Zm
c2V0LCBmcHIpCisgICAgICAgICAgICAgICAgbG9hZGQgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIFB0
clNpemUgKyBvZmZzZXRbc3AsIHdzMSwgUHRyU2l6ZV0sIGZwcgorICAgICAgICAgICAgZW5kKQor
CisgICAgICAgICAgICAjIFdlIG5lZWQgUEMgdG8gbG9hZCBpbmZvcm1hdGlvbiBmcm9tIGNvbnRl
eHQKKyAgICAgICAgICAgICMgYW5kIHR3byBzY3JhdGNoIHJlZ2lzdGVycyB0byBwZXJmb3JtIHRo
ZSBjb3B5CisgICAgICAgICAgICBwcmVzZXJ2ZUdQUnNVc2VkQnlSZXR1cm5DYWxsKCkKKyAgICAg
ICAgICAgIG1vdmUgUEMsIHdzMQorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKworICAgICAgICAgICAgIyBnZXQgb2xkU2l6
ZQorICAgICAgICAgICAgd2dldHUoY3R4LCBtX251bWJlck9mQ2FsbGVyU3RhY2tSZWdzLCB3YTAp
CisgICAgICAgICAgICBtdWxpIFNsb3RTaXplLCB3YTAKKyAgICAgICAgICAgIGFkZGkgQ2FsbEZy
YW1lSGVhZGVyU2l6ZSwgd2EwCisKKyAgICAgICAgICAgICMgZ2V0IG5ld1NpemUKKyAgICAgICAg
ICAgIHdnZXR1KGN0eCwgbV9udW1iZXJPZlN0YWNrQXJncywgd2ExKQorICAgICAgICAgICAgbXVs
aSBTbG90U2l6ZSwgd2ExCisgICAgICAgICAgICBhZGRpIENhbGxGcmFtZUhlYWRlclNpemUsIHdh
MQorCisgICAgICAgICAgICBtb3ZlIHdzMSwgUEMKKworICAgICAgICAgICAgIyBuZXdTdGFja1Bv
aW50ZXIgPSBvbGRGcmFtZVBvaW50ZXIgKyBvbGRTaXplIC0gbmV3U2l6ZQorICAgICAgICAgICAg
YWRkcCBjZnIsIHdhMAorICAgICAgICAgICAgc3VicCB3YTEsIHdhMAorCisgICAgICAgICAgICBw
cmVzZXJ2ZVJldHVybkFkZHJlc3Mod3MxKQorICAgICAgICAgICAgdXNlUHJldmlvdXNGcmFtZSgp
CisKKyAgICAgICAgICAgIC5jb3B5TG9vcDoKKyAgICAgICAgICAgICAgICBpZiBBUk02NCBhbmQg
bm90IEFERFJFU1M2NAorICAgICAgICAgICAgICAgICAgICBsb2FkcSBbc3AsIHdhMSwgMV0sIHdz
MQorICAgICAgICAgICAgICAgICAgICBzdG9yZXEgd3MxLCBbd2EwLCB3YTEsIDFdCisgICAgICAg
ICAgICAgICAgICAgIGJ0aXogd2ExLCAuZG9uZQorICAgICAgICAgICAgICAgICAgICBzdWJpIE1h
Y2hpbmVSZWdpc3RlclNpemUsIHdhMQorICAgICAgICAgICAgICAgICAgICBqbXAgLmNvcHlMb29w
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2FkcCBbc3AsIHdh
MSwgMV0sIHdzMQorICAgICAgICAgICAgICAgICAgICBzdG9yZXAgd3MxLCBbd2EwLCB3YTEsIDFd
CisgICAgICAgICAgICAgICAgICAgIGJ0aXogd2ExLCAuZG9uZQorICAgICAgICAgICAgICAgICAg
ICBzdWJpIFB0clNpemUsIHdhMQorICAgICAgICAgICAgICAgICAgICBqbXAgLmNvcHlMb29wCisg
ICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgIC5kb25lOgorICAgICAgICAgICAgbW92
ZSB3YTAsIHdzMQorICAgICAgICAgICAgcmVzdG9yZUdQUnNVc2VkQnlSZXR1cm5DYWxsKCkKKwor
ICAgICAgICAgICAgaWYgQVJNNjQgb3IgQVJNNjRFIG9yIFJJU0NWNjQKKyAgICAgICAgICAgICAg
ICBhZGRwIENhbGxlckZyYW1lQW5kUENTaXplLCB3czEsIHNwCisgICAgICAgICAgICBlbHNpZiBY
ODZfNjQKKyAgICAgICAgICAgICAgICBhZGRwIFB0clNpemUsIHdzMSwgc3AKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBlcnJvcgorICAgICAgICAgICAgZW5kCisKKyAgICAgICAg
ICAgIGN0eChtYWNybyhvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHNpemUpCisgICAgICAgICAg
ICAgICAgbWFjcm8ganVtcE5hcnJvdygpCisgICAgICAgICAgICAgICAgICAgIGlmIEFSTTY0RQor
ICAgICAgICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpv
ZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJSkg
KiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1l
JToKKyAgICAgICAgICAgICAgICAgICAgam1wIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisg
ICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBtYWNybyBqdW1wV2lkZTE2KCkK
KyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAgICAgICBs
ZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCAr
IChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUxNikgKiBQdHJTaXplLCB3czEKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgICAg
ICAgICAgICAgICAgIGptcCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAg
ICAgIGVuZAorCisgICAgICAgICAgICAgICAgbWFjcm8ganVtcFdpZGUzMigpCisgICAgICAgICAg
ICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25m
aWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHBy
IEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMzIpICogUHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAg
ICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlTbG93
UGF0aFB0clRhZworICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAg
X3dhc21fdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTMyOgorICAgICAgICAgICAgICAgICAg
ICBqbXAgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICBlbmQKKwor
ICAgICAgICAgICAgICAgIHNpemUoanVtcE5hcnJvdywganVtcFdpZGUxNiwganVtcFdpZGUzMiwg
bWFjcm8gKGdlbikgZ2VuKCkgZW5kKQorICAgICAgICAgICAgZW5kKQorICAgIC50aHJvdzoKKyAg
ICByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKKyAgICBkaXNwYXRjaChjdHgpCisgICAgZW5kKQor
ZW5kCisKIHVucHJlZml4ZWRXYXNtT3Aod2FzbV9jYWxsLCBXYXNtQ2FsbCwgbWFjcm8oY3R4KQog
ICAgIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbCwgc3RvcmVX
YXNtSW5zdGFuY2VUb1RMUykKIGVuZCkKQEAgLTg5Niw2ICsxMDU2LDIyIEBAIHdhc21PcChjYWxs
X3JlZl9ub190bHMsIFdhc21DYWxsUmVmTm9UbHMsIG1hY3JvKGN0eCkKICAgICBzbG93UGF0aEZv
cldhc21DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX2NhbGxfcmVmX25vX3RscywgbWFjcm8odGFy
Z2V0SW5zdGFuY2UpIG1vdmUgdGFyZ2V0SW5zdGFuY2UsIHdhc21JbnN0YW5jZSBlbmQpCiBlbmQp
CiAKK3dhc21PcChyZXR1cm5fY2FsbCwgV2FzbVJldHVybkNhbGwsIG1hY3JvKGN0eCkKKyAgICBz
bG93UGF0aEZvcldhc21SZXR1cm5DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX3JldHVybl9jYWxs
LCBzdG9yZVdhc21JbnN0YW5jZVRvVExTKQorZW5kKQorCit3YXNtT3AocmV0dXJuX2NhbGxfbm9f
dGxzLCBXYXNtUmV0dXJuQ2FsbE5vVGxzLCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNt
UmV0dXJuQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9yZXR1cm5fY2FsbF9ub190bHMsIG1hY3Jv
KHRhcmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQor
ZW5kKQorCit3YXNtT3AocmV0dXJuX2NhbGxfaW5kaXJlY3QsIFdhc21SZXR1cm5DYWxsSW5kaXJl
Y3QsIG1hY3JvKGN0eCkKKyAgICBzbG93UGF0aEZvcldhc21SZXR1cm5DYWxsKGN0eCwgX3Nsb3df
cGF0aF93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0LCBzdG9yZVdhc21JbnN0YW5jZVRvVExTKQor
ZW5kKQorCit3YXNtT3AocmV0dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzLCBXYXNtUmV0dXJuQ2Fs
bEluZGlyZWN0Tm9UbHMsIG1hY3JvKGN0eCkKKyAgICBzbG93UGF0aEZvcldhc21SZXR1cm5DYWxs
KGN0eCwgX3Nsb3dfcGF0aF93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0X25vX3RscywgbWFjcm8o
dGFyZ2V0SW5zdGFuY2UpIG1vdmUgdGFyZ2V0SW5zdGFuY2UsIHdhc21JbnN0YW5jZSBlbmQpCitl
bmQpCisKIHdhc21PcChjdXJyZW50X21lbW9yeSwgV2FzbUN1cnJlbnRNZW1vcnksIG1hY3JvKGN0
eCkKICAgICBsb2FkcCBXYXNtOjpJbnN0YW5jZTo6bV9tZW1vcnlbd2FzbUluc3RhbmNlXSwgdDAK
ICAgICBsb2FkcCBXYXNtOjpNZW1vcnk6Om1faGFuZGxlW3QwXSwgdDAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGRkNjQ1OWM4OGIzZGNhYjM0ZDZh
ZTNkNjQ2NzA5ZjQzNGU0ODVlY2UuLjM3NzMyM2EyZGM5MTRkMzJlNThiMDdiY2M5MGQ4NzM2NGY4
ZDdiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApA
QCAtNTUzLDYgKzU1Myw3IEBAIGJvb2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCk7CiAg
ICAgdihCb29sLCB1c2VXZWJBc3NlbWJseUdDLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgZ2MgdHlw
ZXMgZnJvbSB0aGUgd2FzbSBnYyBwcm9wb3NhbC4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3Nl
bWJseUV4Y2VwdGlvbnMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRoZSBuZXcgc2VjdGlvbiBhbmQg
aW5zdHJ1Y3Rpb25zIGZyb20gdGhlIHdhc20gZXhjZXB0aW9uIGhhbmRsaW5nIHNwZWMuIikgXAog
ICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlCcmFuY2hIaW50cywgdHJ1ZSwgTm9ybWFsLCAiQWxs
b3cgdGhlIG5ldyBzZWN0aW9uIGZyb20gdGhlIHdhc20gYnJhbmNoIGhpbnRpbmcgc3BlYy4iKSBc
CisgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVRhaWxDYWxscywgZmFsc2UsIE5vcm1hbCwgIkFs
bG93IHRoZSBuZXcgaW5zdHJ1Y3Rpb25zIGZyb20gdGhlIHdhc20gdGFpbCBjYWxscyBzcGVjLiIp
IFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDc3YTkyOGQ4MzY1MmVmZmQy
NGM4ZjI2ZGRjZGJmYjc0NGRkMGRhZGMuLjQ2MDhjNDY0NDQxNGEwYTM1NTk5YjVmNGM4OGVlMWE5
MzNiZWE2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcApAQCAtNDE3LDYgKzQxNyw4IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25z
dCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExp
c3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENh
bGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZl
Y3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxSZWYoY29uc3QgVHlwZURlZmlu
aXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRz
KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5DYWxsKHVp
bnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNz
aW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOworICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldHVybkNhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZFVucmVhY2hhYmxlKCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gZW1pdEluZGlyZWN0Q2FsbChUeXBlZFRtcCBjYWxsZWVJbnN0YW5jZSwgRXhwcmVzc2lvblR5
cGUgY2FsbGVlQ29kZSwgY29uc3QgVHlwZURlZmluaXRpb24mLCBjb25zdCBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0Jik7CiAgICAgc3RkOjpwYWlyPEIzOjpQYXRjaHBv
aW50VmFsdWUqLCBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4g
ZW1pdENhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIGNv
bnN0IFJlc3VsdExpc3QmIHJlc3VsdHMsIGNvbnN0IFZlY3RvcjxUeXBlZFRtcD4mIGFyZ3MsIFZl
Y3RvcjxDb25zdHJhaW5lZFRtcD4gZXh0cmFBcmdzID0geyB9KTsKQEAgLTM4MzIsNiArMzgzNCwx
OCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0IFR5cGVEZWZpbml0aW9u
JiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaQogICAgIHJldHVybiBlbWl0SW5kaXJlY3RDYWxs
KGNhbGxlZUluc3RhbmNlLCBjYWxsZWVDb2RlLCBzaWduYXR1cmUsIGFyZ3MsIHJlc3VsdHMpOwog
fQogCithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZXR1cm5DYWxsKHVpbnQzMl90IGZ1bmN0aW9u
SW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAg
ICAvLyBUT0RPOiBpbXBsZW1lbnQgQWlySVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGwKKyAgICBy
ZXR1cm4gYWRkQ2FsbChmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUsIGFyZ3MsIHJlc3VsdHMpOwor
fQorCithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZXR1cm5DYWxsSW5kaXJlY3QodW5zaWduZWQg
dGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJl
c3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAor
eworICAgIC8vIFRPRE86IGltcGxlbWVudCBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbElu
ZGlyZWN0CisgICAgcmV0dXJuIGFkZENhbGxJbmRpcmVjdCh0YWJsZUluZGV4LCBzaWduYXR1cmUs
IGFyZ3MsIHJlc3VsdHMpOworfQorCiBhdXRvIEFpcklSR2VuZXJhdG9yOjplbWl0SW5kaXJlY3RD
YWxsKFR5cGVkVG1wIGNhbGxlZUluc3RhbmNlLCBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlLCBj
b25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAg
YXV0byBjdXJyZW50SW5zdGFuY2UgPSBnNjQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCBmZDk4YjE4MzgzNTllNWFhOGY3MDZm
YTIzMDM5YzVhYzIwNWExZjFkLi40ZTI0MDUwMzY2ZTRkM2RiOGFiMTNkMDFiZjYyMDQ3MTQ5ZTZj
YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCkBAIC0zOTUsNiArMzk1LDggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFR5cGVE
ZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVz
dWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGly
ZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4
cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbFJlZihjb25zdCBUeXBlRGVmaW5pdGlvbiYs
IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOworICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldHVybkNhbGwodWludDMyX3Qg
Y2FsbGVlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBl
PiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkUmV0dXJuQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNv
bnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0
TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
VW5yZWFjaGFibGUoKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBlbWl0
SW5kaXJlY3RDYWxsKFZhbHVlKiBjYWxsZWVJbnN0YW5jZSwgVmFsdWUqIGNhbGxlZUNvZGUsIGNv
bnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0
TGlzdCYpOwogICAgIEIzOjpWYWx1ZSogY3JlYXRlQ2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jayos
IE9yaWdpbiwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBh
cmdzLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChQYXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0Y2hw
b2ludEV4Y2VwdGlvbkhhbmRsZT4pPiYgcGF0Y2hwb2ludEZ1bmN0b3IpOwpAQCAtMzEyMyw2ICsz
MTI1LDE4IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBUeXBlRGVmaW5p
dGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAgICAgcmV0dXJuIGVtaXRJbmRpcmVj
dENhbGwoY2FsbGVlSW5zdGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwgYXJncywgcmVzdWx0
cyk7CiB9CiAKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbCh1aW50MzJfdCBmdW5j
dGlvbkluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7
CisgICAgLy8gVE9ETzogaW1wbGVtZW50IEIzSVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGwKKyAg
ICByZXR1cm4gYWRkQ2FsbChmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUsIGFyZ3MsIHJlc3VsdHMp
OworfQorCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGxJbmRpcmVjdCh1bnNpZ25l
ZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhw
cmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0
Cit7CisgICAgLy8gVE9ETzogaW1wbGVtZW50IEIzSVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGxJ
bmRpcmVjdAorICAgIHJldHVybiBhZGRDYWxsSW5kaXJlY3QodGFibGVJbmRleCwgc2lnbmF0dXJl
LCBhcmdzLCByZXN1bHRzKTsKK30KKwogdm9pZCBCM0lSR2VuZXJhdG9yOjp1bmlmeShWYWx1ZSog
cGhpLCBjb25zdCBFeHByZXNzaW9uVHlwZSBzb3VyY2UpCiB7CiAgICAgbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIGdldChzb3VyY2UpLCBw
aGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9u
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIu
aAppbmRleCBkZWI4N2ZiYzM3YjcxYmY5ZTFkOTAwMGE3N2MyZjQ1NzYyZWZiM2NiLi5kMWQ2MjZh
MzU3YzE3ZTRkMTE5Y2Q3NzJhMzYxYjJjNGFkNWQxOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMTIxNCw2ICsxMjE0LDkgQEAg
Rk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogCisgICAgY2FzZSBSZXR1cm5DYWxsOgorICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVRhaWxDYWxscygpLCAid2FzbSB0YWls
IGNhbGxzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNl
IENhbGw6IHsKICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKICAgICAgICAgV0FTTV9G
QUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmN0aW9uSW5kZXgoZnVuY3Rpb25JbmRleCkpOwpA
QCAtMTIyMSw2ICsxMjI0LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRF
X0NBU0UpCiAgICAgICAgIFR5cGVJbmRleCBjYWxsZWVUeXBlSW5kZXggPSBtX2luZm8udHlwZUlu
ZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KTsKICAgICAgICAgY29uc3Qg
VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoY2Fs
bGVlVHlwZUluZGV4KTsKICAgICAgICAgY29uc3QgYXV0byYgY2FsbGVlU2lnbmF0dXJlID0gKnR5
cGVEZWZpbml0aW9uLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOworICAgICAgICBjb25zdCBhdXRv
JiBjYWxsZXJTaWduYXR1cmUgPSAqbV9zaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7
CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291
bnQoKSA+IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNhbGwgZnVuY3Rpb24gaW5kZXggIiwg
ZnVuY3Rpb25JbmRleCwgIiBoYXMgIiwgY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwg
IiBhcmd1bWVudHMsIGJ1dCB0aGUgZXhwcmVzc2lvbiBzdGFjayBjdXJyZW50bHkgaG9sZHMgIiwg
bV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHZhbHVlcyIpOwogCiAgICAgICAgIHNpemVfdCBm
aXJzdEFyZ3VtZW50SW5kZXggPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSBjYWxsZWVTaWdu
YXR1cmUuYXJndW1lbnRDb3VudCgpOwpAQCAtMTIzNywxNiArMTI0MSw0NCBAQCBGT1JfRUFDSF9X
QVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
Y2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7CiAKICAgICAg
ICAgUmVzdWx0TGlzdCByZXN1bHRzOwotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChh
ZGRDYWxsKGZ1bmN0aW9uSW5kZXgsIHR5cGVEZWZpbml0aW9uLCBhcmdzLCByZXN1bHRzKSk7CiAK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCkgPT0g
cmVzdWx0cy5zaXplKCkpOworICAgICAgICBzd2l0Y2ggKG1fY3VycmVudE9wY29kZSkgeworICAg
ICAgICBjYXNlIFJldHVybkNhbGw6IHsKKyAgICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05U
RVhUKGFkZFJldHVybkNhbGwoZnVuY3Rpb25JbmRleCwgdHlwZURlZmluaXRpb24sIGFyZ3MsIHJl
c3VsdHMpKTsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbGVlU2lnbmF0
dXJlLnJldHVybkNvdW50KCk7ICsraSkKLSAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNv
bnN0cnVjdEFuZEFwcGVuZChjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSwgcmVzdWx0c1tp
XSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291
bnQoKSA9PSByZXN1bHRzLnNpemUoKSk7CiAKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCkgIT0g
Y2FsbGVyU2lnbmF0dXJlLnJldHVybkNvdW50KCksICJ0YWlsIGNhbGwgZnVuY3Rpb24gaW5kZXgg
IiwgZnVuY3Rpb25JbmRleCwgIiB3aXRoIHJldHVybiBjb3VudCAiLCBjYWxsZWVTaWduYXR1cmUu
cmV0dXJuQ291bnQoKSwgIiwgYnV0IHRoZSBjYWxsZXIncyBzaWduYXR1cmUgaGFzICIsIGNhbGxl
clNpZ25hdHVyZS5yZXR1cm5Db3VudCgpLCAiIHJldHVybiB2YWx1ZXMiKTsKKworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgp
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5
cGUoY2FsbGVyU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5U
eXBlKGkpKSwgInJldHVybiB0eXBlIG1pc21hdGNoIGluIHRhaWwgY2FsbCwgZ290ICIsIGNhbGxl
ZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLmtpbmQsICIsIGV4cGVjdGVkICIsIGNhbGxlclNpZ25h
dHVyZS5yZXR1cm5UeXBlKGkpLmtpbmQpOworICAgICAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0
YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSwgcmVz
dWx0c1tpXSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fdW5yZWFjaGFibGVCbG9j
a3MgPSAxOworCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBDYWxsOiB7CisgICAgICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRDYWxs
KGZ1bmN0aW9uSW5kZXgsIHR5cGVEZWZpbml0aW9uLCBhcmdzLCByZXN1bHRzKSk7CisKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpID09IHJl
c3VsdHMuc2l6ZSgpKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNh
bGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpCisgICAgICAgICAgICAgICAgbV9leHBy
ZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBl
KGkpLCByZXN1bHRzW2ldKTsKKworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CiAgICAgfQogCisgICAgY2FzZSBSZXR1cm5DYWxsSW5kaXJlY3Q6Cisg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VGFpbENh
bGxzKCksICJ3YXNtIHRhaWwgY2FsbHMgYXJlIG5vdCBlbmFibGVkIik7CisgICAgICAgIEZBTExU
SFJPVUdIOwogICAgIGNhc2UgQ2FsbEluZGlyZWN0OiB7CiAgICAgICAgIHVpbnQzMl90IHNpZ25h
dHVyZUluZGV4OwogICAgICAgICB1aW50MzJfdCB0YWJsZUluZGV4OwpAQCAtMTI1OSw2ICsxMjkx
LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAKICAgICAg
ICAgY29uc3QgVHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uID0gbV9pbmZvLnR5cGVTaWdu
YXR1cmVzW3NpZ25hdHVyZUluZGV4XS5nZXQoKTsKICAgICAgICAgY29uc3QgYXV0byYgY2FsbGVl
U2lnbmF0dXJlID0gKnR5cGVEZWZpbml0aW9uLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOworICAg
ICAgICBjb25zdCBhdXRvJiBjYWxsZXJTaWduYXR1cmUgPSAqbV9zaWduYXR1cmUuYXM8RnVuY3Rp
b25TaWduYXR1cmU+KCk7CiAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbGVlU2ln
bmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDE7IC8vIEFkZCB0aGUgY2FsbGVlJ3MgaW5kZXguCiAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJndW1lbnRDb3VudCA+IG1fZXhwcmVzc2lvblN0
YWNrLnNpemUoKSwgImNhbGxfaW5kaXJlY3QgZXhwZWN0cyAiLCBhcmd1bWVudENvdW50LCAiIGFy
Z3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBob2xkcyAiLCBtX2V4
cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CiAKQEAgLTEyNzcsMTIgKzEzMTAsMzYg
QEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIG1f
ZXhwcmVzc2lvblN0YWNrLnNocmluayhmaXJzdEFyZ3VtZW50SW5kZXgpOwogCiAgICAgICAgIFJl
c3VsdExpc3QgcmVzdWx0czsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2Fs
bEluZGlyZWN0KHRhYmxlSW5kZXgsIHR5cGVEZWZpbml0aW9uLCBhcmdzLCByZXN1bHRzKSk7CiAK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5D
b3VudCgpOyArK2kpCi0gICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRB
cHBlbmQoY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOworICAgICAg
ICBzd2l0Y2ggKG1fY3VycmVudE9wY29kZSkgeworICAgICAgICBjYXNlIFJldHVybkNhbGxJbmRp
cmVjdDogeworICAgICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkUmV0dXJuQ2Fs
bEluZGlyZWN0KHRhYmxlSW5kZXgsIHR5cGVEZWZpbml0aW9uLCBhcmdzLCByZXN1bHRzKSk7CiAK
LSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoY2Fs
bGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCkgIT0gY2FsbGVyU2lnbmF0dXJlLnJldHVybkNvdW50
KCksICJ0YWlsIGNhbGwgaW5kaXJlY3QgZnVuY3Rpb24gd2l0aCByZXR1cm4gY291bnQgIiwgY2Fs
bGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCksICIsIGJ1dCB0aGUgY2FsbGVyJ3Mgc2lnbmF0dXJl
IGhhcyAiLCBjYWxsZXJTaWduYXR1cmUucmV0dXJuQ291bnQoKSwgIiByZXR1cm4gdmFsdWVzIik7
CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUu
cmV0dXJuQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRighaXNTdWJ0eXBlKGNhbGxlclNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCBjYWxsZWVTaWdu
YXR1cmUucmV0dXJuVHlwZShpKSksICJyZXR1cm4gdHlwZSBtaXNtYXRjaCBpbiB0YWlsIGNhbGwg
aW5kaXJlY3QsIGdvdCAiLCBjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKS5raW5kLCAiLCBl
eHBlY3RlZCAiLCBjYWxsZXJTaWduYXR1cmUucmV0dXJuVHlwZShpKS5raW5kKTsKKyAgICAgICAg
ICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoY2FsbGVlU2lnbmF0
dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBtX3VucmVhY2hhYmxlQmxvY2tzID0gMTsKKworICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2FsbEluZGlyZWN0OiB7CisgICAgICAgICAgICBX
QVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRDYWxsSW5kaXJlY3QodGFibGVJbmRleCwgdHlwZURl
ZmluaXRpb24sIGFyZ3MsIHJlc3VsdHMpKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpCisgICAgICAgICAg
ICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKGNhbGxlZVNpZ25hdHVy
ZS5yZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKworICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBjYXNlIENhbGxSZWY6
IHsKQEAgLTE3ODYsNiArMTg0Myw5IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBh
cnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAorICAgIGNhc2UgUmV0dXJuQ2FsbEluZGlyZWN0OgorICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVRhaWxDYWxscygpLCAi
d2FzbSB0YWlsIGNhbGxzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICBjYXNlIENhbGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJfdCB1bnVzZWQ7CiAgICAg
ICAgIHVpbnQzMl90IHVudXNlZDI7CkBAIC0xODMwLDYgKzE4OTAsOSBAQCBhdXRvIEZ1bmN0aW9u
UGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxS
ZXN1bHQKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICBjYXNlIFJldHVybkNhbGw6
CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VGFp
bENhbGxzKCksICJ3YXNtIHRhaWwgY2FsbHMgYXJlIG5vdCBlbmFibGVkIik7CisgICAgICAgIEZB
TExUSFJPVUdIOwogICAgIGNhc2UgQ2FsbDogewogICAgICAgICB1aW50MzJfdCBmdW5jdGlvbklu
ZGV4OwogICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY3Rpb25JbmRl
eChmdW5jdGlvbkluZGV4KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCBkMzczZmFlZTgxNjgxOGZhYWUyNjRlZGUzYjkxY2E0
OTU1NGE2ZDU4Li5mZDM1NjAyYjk4NDcwZWNlOTA5ZTljZmQ2OGZiYjQ5YzZkYzY1YzczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAK
QEAgLTMxMCw2ICszMTAsOCBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgVHlwZURlZmluaXRp
b24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5z
aWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuQ2FsbCh1aW50MzJfdCBjYWxsZWVJ
bmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRSZXR1cm5DYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlw
ZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiBy
ZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNo
YWJsZSgpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nTG9jYWxzKCk7CkBAIC0zMzEsNiAr
MzMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXN1bHRM
aXN0Jik+IGNvbW1pdFJlc3VsdHM7CiAgICAgfTsKIAorICAgIHVpbnQzMl90IG51bWJlck9mU3Rh
Y2tSZWdpc3RlcnMoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmKTsKICAgICBMTEludENhbGxJbmZv
cm1hdGlvbiBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUm
KTsKICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAyPiBjYWxsSW5mb3JtYXRpb25Gb3JDYWxs
ZWUoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmKTsKICAgICB2b2lkIGxpbmtTd2l0Y2hUYXJnZXRz
KExhYmVsJiwgdW5zaWduZWQgbG9jYXRpb24pOwpAQCAtNTY4LDMyICs1NzEsOCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I+IExMSW50R2VuZXJhdG9yOjpmaW5h
bGl6ZSgpCiAvLyBHZW5lcmF0ZWQgZnJvbSB3YXNtLmpzb24KICNpbmNsdWRlICJXYXNtTExJbnRH
ZW5lcmF0b3JJbmxpbmVzLmgiCiAKLWF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlv
bkZvckNhbGxlcihjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEludENh
bGxJbmZvcm1hdGlvbgordWludDMyX3QgTExJbnRHZW5lcmF0b3I6Om51bWJlck9mU3RhY2tSZWdp
c3RlcnMoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZSkKIHsKLSAgICAvLyBUaGlz
IGZ1bmN0aW9uIHNldHMgdXAgdGhlIHN0YWNrIGxheW91dCBmb3IgY2FsbHMuIFRoZSBkZXNpcmVk
IHN0YWNrIGxheW91dCBpczoKLQotICAgIC8vIEZQUm4KLSAgICAvLyAuLi4KLSAgICAvLyBGUFIx
Ci0gICAgLy8gRlBSMAotICAgIC8vIC0tLQotICAgIC8vIEdQUm4KLSAgICAvLyAuLi4KLSAgICAv
LyBHUFIxCi0gICAgLy8gR1BSMAotICAgIC8vIC0tLS0KLSAgICAvLyBzdGFja04KLSAgICAvLyAu
Li4KLSAgICAvLyBzdGFjazEKLSAgICAvLyBzdGFjazAKLSAgICAvLyAtLS0KLSAgICAvLyBjYWxs
IGZyYW1lIGhlYWRlcgotCi0gICAgLy8gV2UgbmVlZCB0byBhbGxvY2F0ZSBhdCBsZWFzdCBzcGFj
ZSBmb3IgYWxsIEdQUnMgYW5kIEZQUnMuCi0gICAgLy8gUmV0dXJuIHZhbHVlcyB1c2UgdGhlIHNh
bWUgYWxsb2NhdGlvbiBsYXlvdXQuCi0KLSAgICBjb25zdCBhdXRvIGluaXRpYWxTdGFja1NpemUg
PSBtX3N0YWNrU2l6ZTsKLQogICAgIGNvbnN0IGF1dG8mIGNhbGxpbmdDb252ZW50aW9uID0gd2Fz
bUNhbGxpbmdDb252ZW50aW9uKCk7CiAgICAgY29uc3QgdWludDMyX3QgZ3ByQ291bnQgPSBjYWxs
aW5nQ29udmVudGlvbi5ncHJBcmdzLnNpemUoKTsKICAgICBjb25zdCB1aW50MzJfdCBmcHJDb3Vu
dCA9IGNhbGxpbmdDb252ZW50aW9uLmZwckFyZ3Muc2l6ZSgpOwpAQCAtNjMxLDE2ICs2MTAsNTQg
QEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IEZ1
bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUKICAgICAgICAgfQogICAgIH07CiAKLQogICAgIGZv
ciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyBpKyspCiAg
ICAgICAgIGFsbG9jYXRlU3RhY2tSZWdpc3RlcihzaWduYXR1cmUuYXJndW1lbnRUeXBlKGkpKTsK
IAogICAgIGdwckluZGV4ID0gMDsKICAgICBmcHJJbmRleCA9IDA7CiAgICAgc3RhY2tJbmRleCA9
IDA7CisKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50
KCk7IGkrKykKICAgICAgICAgYWxsb2NhdGVTdGFja1JlZ2lzdGVyKHNpZ25hdHVyZS5yZXR1cm5U
eXBlKGkpKTsKIAorICAgIHJldHVybiBzdGFja0NvdW50OworfQorCithdXRvIExMSW50R2VuZXJh
dG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmIHNp
Z25hdHVyZSkgLT4gTExJbnRDYWxsSW5mb3JtYXRpb24KK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9u
IHNldHMgdXAgdGhlIHN0YWNrIGxheW91dCBmb3IgY2FsbHMuIFRoZSBkZXNpcmVkIHN0YWNrIGxh
eW91dCBpczoKKworICAgIC8vIEZQUm4KKyAgICAvLyAuLi4KKyAgICAvLyBGUFIxCisgICAgLy8g
RlBSMAorICAgIC8vIC0tLQorICAgIC8vIEdQUm4KKyAgICAvLyAuLi4KKyAgICAvLyBHUFIxCisg
ICAgLy8gR1BSMAorICAgIC8vIC0tLS0KKyAgICAvLyBzdGFja04KKyAgICAvLyAuLi4KKyAgICAv
LyBzdGFjazEKKyAgICAvLyBzdGFjazAKKyAgICAvLyAtLS0KKyAgICAvLyBjYWxsIGZyYW1lIGhl
YWRlcgorCisgICAgLy8gV2UgbmVlZCB0byBhbGxvY2F0ZSBhdCBsZWFzdCBzcGFjZSBmb3IgYWxs
IEdQUnMgYW5kIEZQUnMuCisgICAgLy8gUmV0dXJuIHZhbHVlcyB1c2UgdGhlIHNhbWUgYWxsb2Nh
dGlvbiBsYXlvdXQuCisKKyAgICBjb25zdCBhdXRvIGluaXRpYWxTdGFja1NpemUgPSBtX3N0YWNr
U2l6ZTsKKworICAgIGNvbnN0IGF1dG8mIGNhbGxpbmdDb252ZW50aW9uID0gd2FzbUNhbGxpbmdD
b252ZW50aW9uKCk7CisgICAgY29uc3QgdWludDMyX3QgZ3ByQ291bnQgPSBjYWxsaW5nQ29udmVu
dGlvbi5ncHJBcmdzLnNpemUoKTsKKyAgICBjb25zdCB1aW50MzJfdCBmcHJDb3VudCA9IGNhbGxp
bmdDb252ZW50aW9uLmZwckFyZ3Muc2l6ZSgpOworCisgICAgdWludDMyX3Qgc3RhY2tDb3VudCA9
IG51bWJlck9mU3RhY2tSZWdpc3RlcnMoc2lnbmF0dXJlKTsKKyAgICB1aW50MzJfdCBncHJJbmRl
eCA9IDA7CisgICAgdWludDMyX3QgZnBySW5kZXggPSAwOworICAgIHVpbnQzMl90IHN0YWNrSW5k
ZXggPSAwOworCiAgICAgLy8gRklYTUU6IHdlIGFyZSBhbGxvY2F0aW5nIHRoZSBleHRyYSBzcGFj
ZSBmb3IgdGhlIGFyZ3VtZW50L3JldHVybiBjb3VudCBpbiBvcmRlciB0byBhdm9pZCBpbnRlcmZl
cmVuY2UsIGJ1dCB3ZSBjb3VsZCBkbyBiZXR0ZXIKICAgICAvLyBOT1RFOiBXZSBpbmNyZWFzZSBh
cmcgY291bnQgYnkgMSBmb3IgdGhlIGNhc2Ugb2YgaW5kaXJlY3QgY2FsbHMKICAgICBtX3N0YWNr
U2l6ZSArPSBzdGQ6Om1heChzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMSwgc2lnbmF0dXJl
LnJldHVybkNvdW50KCkpICsgZ3ByQ291bnQgKyBmcHJDb3VudCArIHN0YWNrQ291bnQgKyBDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyArIDE7CkBAIC0xMzc3LDYgKzEzOTQsNTMgQEAg
YXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2ln
bmF0dXJlLCBWZWN0b3I8RXhwcmVzc2kKICAgICByZXR1cm4geyB9OwogfQogCithdXRvIExMSW50
R2VuZXJhdG9yOjphZGRSZXR1cm5DYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFR5
cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJl
c3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBBU1NFUlQoc2lnbmF0
dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXpl
KCkpOworICAgIExMSW50Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JD
YWxsZXIoKnNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKSk7CisgICAgY29uc3QgVHlw
ZUluZGV4IGN1cnJlbnRUeXBlSW5kZXggPSBtX2luZm8udHlwZUluZGV4RnJvbUZ1bmN0aW9uSW5k
ZXhTcGFjZShtX2Z1bmN0aW9uSW5kZXgpOworICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBjdXJy
ZW50VHlwZURlZmluaXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChjdXJyZW50VHlwZUluZGV4
KTsKKyAgICAvLyBOT1RFOiB3aGVuIHRoZSBmcmFtZSB3ZSB3YW50IHRvIHJldXNlIGhhcyBtb3Jl
IHJldHVybiB2YWx1ZXMgdGhhbiB0aGUgY2FsbGVlLCB3ZSBwcmVzZXJ2ZSB0aGUgZXhjZWRpbmcg
b2Zmc2V0LgorICAgIHVpbnQzMl90IG51bWJlck9mQ2FsbGVyU3RhY2tSZWdpc3RlcnMgPSBzdGQ6
Om1pbjx1aW50MzJfdD4obnVtYmVyT2ZTdGFja1JlZ2lzdGVycygqY3VycmVudFR5cGVEZWZpbml0
aW9uLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKSwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRz
KTsKKworICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCBhcmdzKTsKKwor
ICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCisgICAgICAgIFdhc21SZXR1cm5DYWxsOjpl
bWl0KHRoaXMsIGZ1bmN0aW9uSW5kZXgsIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZT
dGFja0FyZ3VtZW50cywgbnVtYmVyT2ZDYWxsZXJTdGFja1JlZ2lzdGVycyk7CisgICAgZWxzZQor
ICAgICAgICBXYXNtUmV0dXJuQ2FsbE5vVGxzOjplbWl0KHRoaXMsIGZ1bmN0aW9uSW5kZXgsIGlu
Zm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywgbnVtYmVyT2ZDYWxs
ZXJTdGFja1JlZ2lzdGVycyk7CisKKyAgICBpbmZvLmNvbW1pdFJlc3VsdHMocmVzdWx0cyk7CisK
KyAgICByZXR1cm4geyB9OworfQorCithdXRvIExMSW50R2VuZXJhdG9yOjphZGRSZXR1cm5DYWxs
SW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25h
dHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykg
LT4gUGFydGlhbFJlc3VsdAoreworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJn
cy50YWtlTGFzdCgpOworCisgICAgQVNTRVJUKHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVy
ZT4oKS0+YXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9pbmZv
LnRhYmxlQ291bnQoKSA+IHRhYmxlSW5kZXgpOworICAgIEFTU0VSVChtX2luZm8udGFibGVzW3Rh
YmxlSW5kZXhdLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKKworICAgIExM
SW50Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoKnNpZ25h
dHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKSk7CisgICAgY29uc3QgVHlwZUluZGV4IGN1cnJl
bnRUeXBlSW5kZXggPSBtX2luZm8udHlwZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShtX2Z1
bmN0aW9uSW5kZXgpOworICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBjdXJyZW50VHlwZURlZmlu
aXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChjdXJyZW50VHlwZUluZGV4KTsKKyAgICAvLyBO
T1RFOiB3aGVuIHRoZSBmcmFtZSB3ZSB3YW50IHRvIHJldXNlIGhhcyBtb3JlIHJldHVybiB2YWx1
ZXMgdGhhbiB0aGUgY2FsbGVlLCB3ZSBwcmVzZXJ2ZSB0aGUgZXhjZWRpbmcgb2Zmc2V0LgorICAg
IHVpbnQzMl90IG51bWJlck9mQ2FsbGVyU3RhY2tSZWdpc3RlcnMgPSBzdGQ6Om1pbjx1aW50MzJf
dD4obnVtYmVyT2ZTdGFja1JlZ2lzdGVycygqY3VycmVudFR5cGVEZWZpbml0aW9uLmFzPEZ1bmN0
aW9uU2lnbmF0dXJlPigpKSwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzKTsKKworICAgIHVu
aWZ5VmFsdWVzV2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCBhcmdzKTsKKworICAgIGlmIChDb250
ZXh0Ojp1c2VGYXN0VExTKCkpCisgICAgICAgIFdhc21SZXR1cm5DYWxsSW5kaXJlY3Q6OmVtaXQo
dGhpcywgY2FsbGVlSW5kZXgsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoKnNpZ25hdHVyZS5h
czxGdW5jdGlvblNpZ25hdHVyZT4oKSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZT
dGFja0FyZ3VtZW50cywgbnVtYmVyT2ZDYWxsZXJTdGFja1JlZ2lzdGVycywgdGFibGVJbmRleCk7
CisgICAgZWxzZQorICAgICAgICBXYXNtUmV0dXJuQ2FsbEluZGlyZWN0Tm9UbHM6OmVtaXQodGhp
cywgY2FsbGVlSW5kZXgsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoKnNpZ25hdHVyZS5hczxG
dW5jdGlvblNpZ25hdHVyZT4oKSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFj
a0FyZ3VtZW50cywgbnVtYmVyT2ZDYWxsZXJTdGFja1JlZ2lzdGVycywgdGFibGVJbmRleCk7CisK
KyAgICBpbmZvLmNvbW1pdFJlc3VsdHMocmVzdWx0cyk7CisKKyAgICByZXR1cm4geyB9OworfQor
CiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1bHQg
PSBwdXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3Bw
CmluZGV4IDY0MTdmODBiMzVhN2EzMjllYTNmMDRiZTkxM2RlMjkxZDYwZTFlYjkuLjlkZjhkYzg1
MDJmMzkzNjhiZTMwYTYwOTA2ZjIwNmE2MjEzY2Y3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC01NjYsNiArNTY2LDM2IEBAIFdBU01fU0xP
V19QQVRIX0RFQ0woY2FsbF9yZWZfbm9fdGxzKQogICAgIHJldHVybiBkb1dhc21DYWxsUmVmKGNh
bGxGcmFtZSwgaW5zdGFuY2UsIHJlZmVyZW5jZSwgaW5zdHJ1Y3Rpb24ubV90eXBlSW5kZXgpOwog
fQogCitXQVNNX1NMT1dfUEFUSF9ERUNMKHJldHVybl9jYWxsKQoreworICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOworCisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtUmV0dXJu
Q2FsbD4oKTsKKyAgICByZXR1cm4gZG9XYXNtQ2FsbChpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9m
dW5jdGlvbkluZGV4KTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChyZXR1cm5fY2FsbF9ub190
bHMpCit7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisKKyAgICBhdXRvIGluc3RydWN0
aW9uID0gcGMtPmFzPFdhc21SZXR1cm5DYWxsTm9UbHM+KCk7CisgICAgcmV0dXJuIGRvV2FzbUNh
bGwoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCk7Cit9CisKK1dBU01fU0xP
V19QQVRIX0RFQ0wocmV0dXJuX2NhbGxfaW5kaXJlY3QpCit7CisgICAgYXV0byBpbnN0cnVjdGlv
biA9IHBjLT5hczxXYXNtUmV0dXJuQ2FsbEluZGlyZWN0PigpOworICAgIHVuc2lnbmVkIGZ1bmN0
aW9uSW5kZXggPSBSRUFEKGluc3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCkudW5ib3hlZEludDMy
KCk7CisgICAgcmV0dXJuIGRvV2FzbUNhbGxJbmRpcmVjdChjYWxsRnJhbWUsIGluc3RhbmNlLCBm
dW5jdGlvbkluZGV4LCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluc3RydWN0aW9uLm1fc2ln
bmF0dXJlSW5kZXgpOworfQorCitXQVNNX1NMT1dfUEFUSF9ERUNMKHJldHVybl9jYWxsX2luZGly
ZWN0X25vX3RscykKK3sKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21SZXR1cm5D
YWxsSW5kaXJlY3ROb1Rscz4oKTsKKyAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0gUkVBRChp
bnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpLnVuYm94ZWRJbnQzMigpOworICAgIHJldHVybiBk
b1dhc21DYWxsSW5kaXJlY3QoY2FsbEZyYW1lLCBpbnN0YW5jZSwgZnVuY3Rpb25JbmRleCwgaW5z
dHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKK30K
KwogV0FTTV9TTE9XX1BBVEhfREVDTChzZXRfZ2xvYmFsX3JlZikKIHsKICAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21TZXRHbG9iYWxSZWY+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKaW5kZXggNjc4YzE3MjgzNzY4ZjQwYTRlZWZmNzNmZjRh
NjgzY2ZmNjAxNjM1Yy4uZjUwNzRjY2QzYmYwMjNmYzUzMmU2MmNjZGVmMDdkMWIxMjBlZmVhYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaApAQCAtODEsNiAr
ODEsMTAgQEAgV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9pbmRpcmVjdCk7CiBXQVNN
X1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsX2luZGlyZWN0X25vX3Rscyk7CiBXQVNNX1NMT1df
UEFUSF9ISURERU5fREVDTChjYWxsX3JlZik7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChj
YWxsX3JlZl9ub190bHMpOworV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wocmV0dXJuX2NhbGwp
OworV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wocmV0dXJuX2NhbGxfbm9fdGxzKTsKK1dBU01f
U0xPV19QQVRIX0hJRERFTl9ERUNMKHJldHVybl9jYWxsX2luZGlyZWN0KTsKK1dBU01fU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHJldHVybl9jYWxsX2luZGlyZWN0X25vX3Rscyk7CiBXQVNNX1NMT1df
UEFUSF9ISURERU5fREVDTChzZXRfZ2xvYmFsX3JlZik7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5f
REVDTChzZXRfZ2xvYmFsX3JlZl9wb3J0YWJsZV9iaW5kaW5nKTsKIFdBU01fU0xPV19QQVRIX0hJ
RERFTl9ERUNMKG1lbW9yeV9hdG9taWNfd2FpdDMyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dh
c20uanNvbgppbmRleCAxZmE4NmY5MGFjMDBmMmUwNjNjOGZjYzQyNzUzYzM5MGZkNDFhNWZiLi4z
N2NlZTdhZWNiYThiNTdiMWU1YzliZGIxYTljYjUwNWI2NDgxYzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vd2FzbS5qc29uCkBAIC05OCw2ICs5OCw4IEBACiAgICAgICAgICJkYXRhLmRyb3Ai
OiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiZXh0dGFibGUiLCAgICJ2YWx1ZSI6ICAyNTIsICJy
ZXR1cm4iOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogW10s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJzZWdt
ZW50X2luZGV4IiwgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2hyaW5rcyB0aGUgc2l6ZSBv
ZiB0aGUgc2VnbWVudCB0byB6ZXJvIiwgImV4dGVuZGVkT3AiOiA5IH0sCiAgICAgICAgICJjYWxs
IjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAx
NiwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVy
IjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6
ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0
aW9uIGJ5IGl0cyBpbmRleCIgfSwKICAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJj
YXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxsIl0s
ICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAg
ICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5
cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUiOiAidmFydWlu
dDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBhbiBl
eHBlY3RlZCBzaWduYXR1cmUiIH0sCisgICAgICAgICJyZXR1cm5fY2FsbCI6ICAgICAgICAgICAg
ICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTgsICJyZXR1cm4iOiBb
ImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAg
ICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5k
ZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRhaWwgY2FsbCBhIGZ1bmN0aW9uIGJ5IGl0
cyBpbmRleCIgfSwKKyAgICAgICAgInJldHVybl9jYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0
ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxOSwgInJldHVybiI6IFsiY2FsbCJdLCAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAg
ICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBl
IjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0eXBlIjogInZhcnVpbnQz
MiJ9XSwiZGVzY3JpcHRpb24iOiAidGFpbCBjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBh
biBleHBlY3RlZCBzaWduYXR1cmUiIH0sCiAgICAgICAgICJjYWxsX3JlZiI6ICAgICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAyMCwgInJldHVybiI6IFsiY2Fs
bCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIHJlZmVyZW5jZSIgfSwK
ICAgICAgICAgImkzMi5sb2FkOF9zIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAg
ICAgInZhbHVlIjogIDQ0LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsi
bmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjog
ImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDhfdSI6ICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsiaTMyIl0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpz
Yy1zdHJlc3MtdGVzdHMKaW5kZXggMzQzMjI5YjE5MWY0Y2Y3NzNlY2I3YzUzNzU2ZjYxYjZkNTIw
N2IzYi4uMGRmMzc4MWQ5YjczNzU0MWI0ZGE3M2VhNTk5MWFhNTVmMzQ1MDllZiAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRz
L3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC0xODg0LDYgKzE4ODQsMTYgQEAgZGVmIHJ1bldlYkFz
c2VtYmx5RnVuY3Rpb25SZWZlcmVuY2VTcGVjVGVzdChtb2RlKQogICAgIHJ1bldlYkFzc2VtYmx5
U3BlY1Rlc3RCYXNlKG1vZGUsICJzcGVjLWhhcm5lc3MiLCAiLS11c2VXZWJBc3NlbWJseVR5cGVk
RnVuY3Rpb25SZWZlcmVuY2VzPXRydWUiKQogZW5kCiAKK2RlZiBydW5XZWJBc3NlbWJseVJldHVy
bkNhbGxTcGVjVGVzdChtb2RlKQorICAgICRtb2RlID0gbW9kZS50b19zCisgICAgcnVuV2ViQXNz
ZW1ibHlTcGVjVGVzdEJhc2UobW9kZSwgInJldHVybi1jYWxsLXNwZWMtaGFybmVzcyIsICItLXVz
ZVdlYkFzc2VtYmx5VGFpbENhbGxzPXRydWUiLCAiLS11c2VCQlFKSVQ9ZmFsc2UiLCAiLS11c2VP
TUdKSVQ9ZmFsc2UiKQorZW5kCisKK2RlZiBydW5XZWJBc3NlbWJseVJldHVybkNhbGwobW9kZSkK
KyAgICAkbW9kZSA9IG1vZGUudG9fcworICAgIHJ1bldlYkFzc2VtYmx5U3VpdGUoIi0tdXNlV2Vi
QXNzZW1ibHlUYWlsQ2FsbHM9dHJ1ZSIsICItLXVzZUJCUUpJVD1mYWxzZSIsICItLXVzZU9NR0pJ
VD1mYWxzZSIpCitlbmQKKwogZGVmIHJ1bldlYkFzc2VtYmx5TG93RXhlY3V0YWJsZU1lbW9yeSgq
b3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJldHVybiBpZiAhJGppdFRlc3RzCiAg
ICAgcmV0dXJuIGlmICEkaXNGVExQbGF0Zm9ybQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtLnlh
bWwgYi9KU1Rlc3RzL3dhc20ueWFtbAppbmRleCA5Y2Q0MGViZjk4YjkzOWYxYjBmN2I3NDAyZTZk
MDE1MTMwYTQ5NDgyLi42ZGRhMjhmMjYxNWQxMjQ5YWRhZmQ2MTlhODNhYzg4NTEyZGIxNTY1IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3dhc20ueWFtbAorKysgYi9KU1Rlc3RzL3dhc20ueWFtbApAQCAt
Mjk1LDYgKzI5NSwxMyBAQAogLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvdXRmOC1pbnZhbGlkLWVu
Y29kaW5nLndhc3QuanMKICAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwKIAor
LSBwYXRoOiB3YXNtL3JldHVybi1jYWxsCisgIGNtZDogcnVuV2ViQXNzZW1ibHlSZXR1cm5DYWxs
IDpxdWljaworLSBwYXRoOiB3YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGwu
d2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5UmV0dXJuQ2FsbFNwZWNUZXN0IDpxdWljawor
LSBwYXRoOiB3YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5UmV0dXJuQ2FsbFNwZWNUZXN0IDpxdWljawor
CiAtIHBhdGg6IHdhc20vbW9kdWxlcy9ydW4tZnJvbS13YXNtLndhc20KICAgY21kOiBydW5XZWJB
c3NlbWJseQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJu
ZXNzLmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZWVlYjU5MzE2ZTAyNGVlMjdmY2UzZTEwZjQyYTMzZTk4NDNjYzMyCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy5qcwpAQCAtMCww
ICsxLDM4IEBACisidXNlIHN0cmljdCI7CisKKy8vIFRoaXMgaXMgb3VyIG5pZnR5IHdheSB0byBt
YWtlIG1vZHVsZXMgc3luY2hyb25vdXMuCitsZXQgYXNzZXJ0OworaW1wb3J0KCcuL2Fzc2VydC5q
cycpLnRoZW4oKG1vZHVsZSkgPT4geworICAgIGFzc2VydCA9IG1vZHVsZTsKK30sICR2bS5jcmFz
aCk7CitkcmFpbk1pY3JvdGFza3MoKTsKKworZnVuY3Rpb24gdGVzdChmdW5jLCBkZXNjcmlwdGlv
bikgeworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIHByaW50KCJVbmV4cGVjdGVkIGV4Y2VwdGlvbjoiLCBkZXNjcmlwdGlvbik7CisgICAgICAg
IHRocm93IGU7CisgICAgfQorfQorCitmdW5jdGlvbiBwcm9taXNlX3Rlc3QoZnVuYywgZGVzY3Jp
cHRpb24pIHsKKyAgICBhc3NlcnQuYXN5bmNUZXN0KGZ1bmMoKSk7Cit9OworCitsZXQgYXNzZXJ0
X2VxdWFscyA9IGFzc2VydC5lcTsKK2xldCBhc3NlcnRfdHJ1ZSA9ICh4KSA9PiBhc3NlcnQuZXEo
eCx0cnVlKTsKK2xldCBhc3NlcnRfZmFsc2UgPSAoeCkgPT4gYXNzZXJ0LmVxKHgsZmFsc2UpOwor
bGV0IGFzc2VydF91bnJlYWNoZWQgPSAoKSA9PiB7CisgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91
bGQgaGF2ZSBiZWVuIHVucmVhY2hhYmxlIik7Cit9OworCitsZXQgY29uc29sZSA9IHsKKyAgICBs
b2coLi4uYXJncykgeworICAgICAgICBwcmludCguLi5hcmdzKTsKKyAgICB9Cit9OworCitsb2Fk
KCIuL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9zeW5jX2luZGV4LmpzIiwgImNhbGxlciByZWxh
dGl2ZSIpOworbG9hZCgiLi9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMu
anMiLCAiY2FsbGVyIHJlbGF0aXZlIik7Citsb2FkKCIuL3JldHVybi1jYWxsLXNwZWMtaGFybmVz
cy93YXNtLW1vZHVsZS1idWlsZGVyLmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9hc3luY19pbmRleC5qcyBi
L0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3MvYXN5bmNfaW5kZXguanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzIwMDAxOWFjNjk5OTA0NGVmOTUwNGZmMDgxMThjNzM0YzdlMGIxNgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3MvYXN5bmNf
aW5kZXguanMKQEAgLTAsMCArMSw0MjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxOCBXZWJBc3Nl
bWJseSBDb21tdW5pdHkgR3JvdXAgcGFydGljaXBhbnRzCisgKgorICogTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
ICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworInVzZSBzdHJpY3QiOwor
CitsZXQgdGVzdE51bSA9IChmdW5jdGlvbigpIHsKKyAgbGV0IGNvdW50ID0gMTsKKyAgcmV0dXJu
IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBgIyR7Y291bnQrK30gYDsKKyAgfTsKK30pKCk7CisK
K2Z1bmN0aW9uIHVuaXF1ZVRlc3QoZnVuYywgZGVzYykgeworICB0ZXN0KGZ1bmMsIHRlc3ROdW0o
KSArIGRlc2MpOworfQorCisvLyBXUFQncyBhc3NlcnRfdGhyb3cgdXNlcyBhIGxpc3Qgb2YgcHJl
ZGVmaW5lZCwgaGFyZGNvZGVkIGtub3duIGVycm9ycy4gU2luY2UKKy8vIGl0IGlzIG5vdCBhd2Fy
ZSBvZiB0aGUgV2ViQXNzZW1ibHkgZXJyb3IgdHlwZXMgKHlldCksIGltcGxlbWVudCBvdXIgb3du
CisvLyB2ZXJzaW9uLgorZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGZ1bmMsIGVycikgeworICBsZXQg
Y2F1Z2h0ID0gZmFsc2U7CisgIHRyeSB7CisgICAgZnVuYygpOworICB9IGNhdGNoIChlKSB7Cisg
ICAgYXNzZXJ0X3RydWUoCisgICAgICBlIGluc3RhbmNlb2YgZXJyLAorICAgICAgYGV4cGVjdGVk
ICR7ZXJyLm5hbWV9LCBvYnNlcnZlZCAke2UuY29uc3RydWN0b3IubmFtZX1gCisgICAgKTsKKyAg
ICBjYXVnaHQgPSB0cnVlOworICB9CisgIGFzc2VydF90cnVlKGNhdWdodCwgdGVzdE51bSgpICsg
ImFzc2VydFRocm93cyBtdXN0IGNhdGNoIGFueSBlcnJvci4iKTsKK30KKworLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFdBU1QgSEFSTkVTUyAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCisKK2NvbnN0IEVYUEVDVF9JTlZBTElEID0gZmFsc2U7CisKKy8qIERBVEEgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi8KKworbGV0IGV4dGVybnJlZnMgPSB7fTsKK2xldCBleHRlcm5zeW0gPSBTeW1ib2woImV4
dGVybnJlZiIpOworZnVuY3Rpb24gZXh0ZXJucmVmKHMpIHsKKyAgaWYgKCEgKHMgaW4gZXh0ZXJu
cmVmcykpIGV4dGVybnJlZnNbc10gPSB7W2V4dGVybnN5bV06IHN9OworICByZXR1cm4gZXh0ZXJu
cmVmc1tzXTsKK30KK2Z1bmN0aW9uIGlzX2V4dGVybnJlZih4KSB7CisgIHJldHVybiAoeCAhPT0g
bnVsbCAmJiBleHRlcm5zeW0gaW4geCkgPyAxIDogMDsKK30KK2Z1bmN0aW9uIGlzX2Z1bmNyZWYo
eCkgeworICByZXR1cm4gdHlwZW9mIHggPT09ICJmdW5jdGlvbiIgPyAxIDogMDsKK30KK2Z1bmN0
aW9uIGVxX2V4dGVybnJlZih4LCB5KSB7CisgIHJldHVybiB4ID09PSB5ID8gMSA6IDA7Cit9Citm
dW5jdGlvbiBlcV9mdW5jcmVmKHgsIHkpIHsKKyAgcmV0dXJuIHggPT09IHkgPyAxIDogMDsKK30K
KworLy8gRGVmYXVsdCBpbXBvcnRzLgordmFyIHJlZ2lzdHJ5ID0ge307CisKKy8vIEFsbCB0ZXN0
cyBydW4gYXN5bmNocm9ub3VzbHkgYW5kIHJldHVybiB0aGVpciByZXN1bHRzIGFzIHByb21pc2Vz
LiBUbyBlbnN1cmUKKy8vIHRoYXQgYWxsIHRlc3RzIGV4ZWN1dGUgaW4gdGhlIGNvcnJlY3Qgb3Jk
ZXIsIHdlIGNoYWluIHRoZSBwcm9taXNlcyB0b2dldGhlcgorLy8gc28gdGhhdCBhIHRlc3QgaXMg
b25seSBleGVjdXRlZCB3aGVuIGFsbCBwcmV2aW91cyB0ZXN0cyBoYXZlIGZpbmlzaGVkIHRoZWly
CisvLyBleGVjdXRpb24uCitsZXQgY2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTsKKworLy8gUmVz
ZXRzIHRoZSByZWdpc3RyeSBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgV1BUIHRlc3RzLgorZnVuY3Rp
b24gcmVpbml0aWFsaXplUmVnaXN0cnkoKSB7CisgIGlmICh0eXBlb2YgV2ViQXNzZW1ibHkgPT09
ICJ1bmRlZmluZWQiKSByZXR1cm47CisKKyAgY2hhaW4gPSBjaGFpbi50aGVuKF8gPT4geworICAg
IGxldCBzcGVjdGVzdCA9IHsKKyAgICAgIGV4dGVybnJlZjogZXh0ZXJucmVmLAorICAgICAgaXNf
ZXh0ZXJucmVmOiBpc19leHRlcm5yZWYsCisgICAgICBpc19mdW5jcmVmOiBpc19mdW5jcmVmLAor
ICAgICAgZXFfZXh0ZXJucmVmOiBlcV9leHRlcm5yZWYsCisgICAgICBlcV9mdW5jcmVmOiBlcV9m
dW5jcmVmLAorICAgICAgcHJpbnQ6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICBw
cmludF9pMzI6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICBwcmludF9pMzJfZjMy
OiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAorICAgICAgcHJpbnRfZjY0X2Y2NDogY29uc29s
ZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgIHByaW50X2YzMjogY29uc29sZS5sb2cuYmluZChj
b25zb2xlKSwKKyAgICAgIHByaW50X2Y2NDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAg
ICAgIGdsb2JhbF9pMzI6IDY2NiwKKyAgICAgIGdsb2JhbF9mMzI6IDY2NiwKKyAgICAgIGdsb2Jh
bF9mNjQ6IDY2NiwKKyAgICAgIHRhYmxlOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoeworICAgICAg
ICBpbml0aWFsOiAxMCwKKyAgICAgICAgbWF4aW11bTogMjAsCisgICAgICAgIGVsZW1lbnQ6ICJh
bnlmdW5jIgorICAgICAgfSksCisgICAgICBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnko
eyBpbml0aWFsOiAxLCBtYXhpbXVtOiAyIH0pCisgICAgfTsKKyAgICBsZXQgaGFuZGxlciA9IHsK
KyAgICAgIGdldCh0YXJnZXQsIHByb3ApIHsKKyAgICAgICAgcmV0dXJuIHByb3AgaW4gdGFyZ2V0
ID8gdGFyZ2V0W3Byb3BdIDoge307CisgICAgICB9CisgICAgfTsKKyAgICByZWdpc3RyeSA9IG5l
dyBQcm94eSh7IHNwZWN0ZXN0IH0sIGhhbmRsZXIpOworICB9KTsKKworICAvLyBUaGlzIGZ1bmN0
aW9uIGlzIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGdlbmVyYXRlZCBqcyB0ZXN0IGZpbGUu
IEJ5CisgIC8vIGFkZGluZyB0aGUgY2hhaW4gYXMgYSBwcm9taXNlX3Rlc3QgaGVyZSB3ZSBtYWtl
IHN1cmUgdGhhdCB0aGUgV1BUIGhhcm5lc3MKKyAgLy8gd2FpdHMgZm9yIGFsbCB0ZXN0cyBpbiB0
aGUgY2hhaW4gdG8gZmluaXNoLgorICBwcm9taXNlX3Rlc3QoXyA9PiBjaGFpbiwgdGVzdE51bSgp
ICsgIlJlaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBpbXBvcnRzIik7Cit9CisKK3JlaW5pdGlhbGl6
ZVJlZ2lzdHJ5KCk7CisKKy8qIFdBU1QgUE9MWUZJTEwgKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworZnVuY3Rpb24gYmluYXJ5
KGJ5dGVzKSB7CisgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsK
KyAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBmb3IgKGxldCBpID0gMDsg
aSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2RlQXQo
aSk7CisgIH0KKyAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLyoqCisgKiBSZXR1cm5zIGEgY29tcGls
ZWQgbW9kdWxlLCBvciB0aHJvd3MgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGF0IGNvbXBpbGF0aW9u
LgorICovCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBjb25zdCB0
ZXN0ID0gdmFsaWQKKyAgICA/ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgY29tcGlsYXRpb24gc3Vj
Y2VlZHMiCisgICAgOiAiVGVzdCB0aGF0IFdlYkFzc2VtYmx5IGNvbXBpbGF0aW9uIGZhaWxzIjsK
KyAgY29uc3QgbG9jID0gbmV3IEVycm9yKCkuc3RhY2sudG9TdHJpbmcoKS5yZXBsYWNlKCJFcnJv
ciIsICIiKTsKKyAgbGV0IGJ1ZmZlciA9IGJpbmFyeShieXRlcyk7CisgIGxldCB2YWxpZGF0ZWQg
PSBXZWJBc3NlbWJseS52YWxpZGF0ZShidWZmZXIpOworCisgIHVuaXF1ZVRlc3QoXyA9PiB7Cisg
ICAgYXNzZXJ0X2VxdWFscyh2YWxpZCwgdmFsaWRhdGVkKTsKKyAgfSwgdGVzdCk7CisKKyAgY2hh
aW4gPSBjaGFpbi50aGVuKF8gPT4gV2ViQXNzZW1ibHkuY29tcGlsZShidWZmZXIpKS50aGVuKAor
ICAgIG1vZHVsZSA9PiB7CisgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICBhc3NlcnRf
dHJ1ZSh2YWxpZCwgbG9jKTsKKyAgICAgIH0sIHRlc3QpOworICAgICAgcmV0dXJuIG1vZHVsZTsK
KyAgICB9LAorICAgIGVycm9yID0+IHsKKyAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAg
IGFzc2VydF90cnVlKAorICAgICAgICAgICF2YWxpZCwKKyAgICAgICAgICBgV2ViQXNzZW1ibHku
Y29tcGlsZSBmYWlsZWQgdW5leHBlY3RlZGx5IHdpdGggJHtlcnJvcn0gYXQge2xvY31gCisgICAg
ICAgICk7CisgICAgICB9LCB0ZXN0KTsKKyAgICB9CisgICk7CisgIHJldHVybiBjaGFpbjsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X2ludmFsaWQoYnl0ZXMpIHsKKyAgbW9kdWxlKGJ5dGVzLCBFWFBF
Q1RfSU5WQUxJRCk7Cit9CisKK2NvbnN0IGFzc2VydF9tYWxmb3JtZWQgPSBhc3NlcnRfaW52YWxp
ZDsKKworZnVuY3Rpb24gaW5zdGFuY2UoYnl0ZXMsIGltcG9ydHMsIHZhbGlkID0gdHJ1ZSkgewor
ICBjb25zdCB0ZXN0ID0gdmFsaWQKKyAgICA/ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgaW5zdGFu
dGlhdGlvbiBzdWNjZWVkcyIKKyAgICA6ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgaW5zdGFudGlh
dGlvbiBmYWlscyI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCku
cmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGNoYWluID0gUHJvbWlzZS5hbGwoW2ltcG9ydHMsIGNo
YWluXSkKKyAgICAudGhlbih2YWx1ZXMgPT4geworICAgICAgbGV0IGltcG9ydHMgPSB2YWx1ZXNb
MF0gPyB2YWx1ZXNbMF0gOiByZWdpc3RyeTsKKyAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0
YW50aWF0ZShiaW5hcnkoYnl0ZXMpLCBpbXBvcnRzKTsKKyAgICB9KQorICAgIC50aGVuKAorICAg
ICAgcGFpciA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0
X3RydWUodmFsaWQsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgICByZXR1cm4gcGFp
ci5pbnN0YW5jZTsKKyAgICAgIH0sCisgICAgICBlcnJvciA9PiB7CisgICAgICAgIHVuaXF1ZVRl
c3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoCisgICAgICAgICAgICAhdmFsaWQsCisg
ICAgICAgICAgICBgdW5leHBlY3RlZCBpbnN0YW50aWF0aW9uIGVycm9yLCBvYnNlcnZlZCAke2Vy
cm9yfSAke2xvY31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICAgIHJl
dHVybiBlcnJvcjsKKyAgICAgIH0KKyAgICApOworICByZXR1cm4gY2hhaW47Cit9CisKK2Z1bmN0
aW9uIGV4cG9ydHMoaW5zdGFuY2UpIHsKKyAgcmV0dXJuIGluc3RhbmNlLnRoZW4oaW5zdCA9PiB7
CisgICAgcmV0dXJuIHsgbW9kdWxlOiBpbnN0LmV4cG9ydHMsIHNwZWN0ZXN0OiByZWdpc3RyeS5z
cGVjdGVzdCB9OworICB9KTsKK30KKworZnVuY3Rpb24gY2FsbChpbnN0YW5jZSwgbmFtZSwgYXJn
cykgeworICByZXR1cm4gUHJvbWlzZS5hbGwoW2luc3RhbmNlLCBjaGFpbl0pLnRoZW4odmFsdWVz
ID0+IHsKKyAgICByZXR1cm4gdmFsdWVzWzBdLmV4cG9ydHNbbmFtZV0oLi4uYXJncyk7CisgIH0p
OworfQorCitmdW5jdGlvbiBydW4oYWN0aW9uKSB7CisgIGNvbnN0IHRlc3QgPSAiUnVuIGEgV2Vi
QXNzZW1ibHkgdGVzdCB3aXRob3V0IHNwZWNpYWwgYXNzZXJ0aW9ucyI7CisgIGNvbnN0IGxvYyA9
IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGNo
YWluID0gUHJvbWlzZS5hbGwoW2NoYWluLCBhY3Rpb24oKV0pCisgICAgLnRoZW4oCisgICAgICBf
ID0+IHsKKyAgICAgICAgdW5pcXVlVGVzdChfID0+IHt9LCB0ZXN0KTsKKyAgICAgIH0sCisgICAg
ICBlcnJvciA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0
X3RydWUoCisgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgIGB1bmV4cGVjdGVkIHJ1bnRp
bWUgZXJyb3IsIG9ic2VydmVkICR7ZXJyb3J9ICR7bG9jfWAKKyAgICAgICAgICApOworICAgICAg
ICB9LCAicnVuIik7CisgICAgICB9CisgICAgKQorICAgIC8vIENsZWFyIGFsbCBleGNlcHRpb25z
LCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVkLgorICAgIC5jYXRjaChfID0+
IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3RyYXAoYWN0aW9uKSB7CisgIGNvbnN0IHRlc3Qg
PSAiVGVzdCB0aGF0IGEgV2ViQXNzZW1ibHkgY29kZSB0cmFwcyI7CisgIGNvbnN0IGxvYyA9IG5l
dyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGNoYWlu
ID0gUHJvbWlzZS5hbGwoW2NoYWluLCBhY3Rpb24oKV0pCisgICAgLnRoZW4oCisgICAgICByZXN1
bHQgPT4geworICAgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICAgIGFzc2VydF90cnVl
KGZhbHNlLCBsb2MpOworICAgICAgICB9LCB0ZXN0KTsKKyAgICAgIH0sCisgICAgICBlcnJvciA9
PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoCisg
ICAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwKKyAg
ICAgICAgICAgIGBleHBlY3RlZCBydW50aW1lIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xv
Y31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9CisgICAgKQorICAg
IC8vIENsZWFyIGFsbCBleGNlcHRpb25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4
ZWN1dGVkLgorICAgIC5jYXRjaChfID0+IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3JldHVy
bihhY3Rpb24sIC4uLmV4cGVjdGVkKSB7CisgIGNvbnN0IHRlc3QgPSAiVGVzdCB0aGF0IGEgV2Vi
QXNzZW1ibHkgY29kZSByZXR1cm5zIGEgc3BlY2lmaWMgcmVzdWx0IjsKKyAgY29uc3QgbG9jID0g
bmV3IEVycm9yKCkuc3RhY2sudG9TdHJpbmcoKS5yZXBsYWNlKCJFcnJvciIsICIiKTsKKyAgY2hh
aW4gPSBQcm9taXNlLmFsbChbYWN0aW9uKCksIGNoYWluXSkKKyAgICAudGhlbigKKyAgICAgIHZh
bHVlcyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgaWYgKGFjdHVh
bCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBbXTsKKyAgICAgICAgICB9
IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGFjdHVhbCkpIHsKKyAgICAgICAgICAgIGFjdHVhbCA9
IFthY3R1YWxdOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoYWN0dWFsLmxlbmd0aCAhPT0g
ZXhwZWN0ZWQubGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhwZWN0ZWQu
bGVuZ3RoICsgIiB2YWx1ZShzKSBleHBlY3RlZCwgZ290ICIgKyBhY3R1YWwubGVuZ3RoKTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3R1YWwubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRbaV0pIHsKKyAgICAgICAgICAgICAg
Y2FzZSAibmFuOmNhbm9uaWNhbCI6CisgICAgICAgICAgICAgIGNhc2UgIm5hbjphcml0aG1ldGlj
IjoKKyAgICAgICAgICAgICAgY2FzZSAibmFuOmFueSI6CisgICAgICAgICAgICAgICAgLy8gTm90
ZSB0aGF0IEpTIGNhbid0IHJlbGlhYmx5IGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBOYU4gdmFsdWVz
LAorICAgICAgICAgICAgICAgIC8vIHNvIHRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gdGVzdCB0aGF0
IGl0J3MgYSBjYW5vbmljYWwgTmFOLgorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKE51bWJl
ci5pc05hTihhY3R1YWxbaV0pLCBgZXhwZWN0ZWQgTmFOLCBvYnNlcnZlZCAke2FjdHVhbFtpXX0u
YCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlICJyZWYuZnVu
YyI6CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUodHlwZW9mIGFjdHVhbFtpXSA9PT0gImZ1
bmN0aW9uIiwgYGV4cGVjdGVkIFdhc20gZnVuY3Rpb24sIGdvdCAke2FjdHVhbFtpXX1gKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgInJlZi5leHRlcm4iOgor
ICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGFjdHVhbFtpXSAhPT0gbnVsbCwgYGV4cGVjdGVk
IFdhc20gcmVmZXJlbmNlLCBnb3QgJHthY3R1YWxbaV19YCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSwgbG9jKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfSwKKyAgICAgIGVycm9yID0+IHsKKyAgICAg
ICAgdW5pcXVlVGVzdChfID0+IHsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZSgKKyAgICAgICAgICAg
IGZhbHNlLAorICAgICAgICAgICAgYHVuZXhwZWN0ZWQgcnVudGltZSBlcnJvciwgb2JzZXJ2ZWQg
JHtlcnJvcn0gJHtsb2N9YAorICAgICAgICAgICk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAg
fQorICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50
IHRlc3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2xldCBTdGFj
a092ZXJmbG93OwordHJ5IHsKKyAgKGZ1bmN0aW9uIGYoKSB7CisgICAgMSArIGYoKTsKKyAgfSko
KTsKK30gY2F0Y2ggKGUpIHsKKyAgU3RhY2tPdmVyZmxvdyA9IGUuY29uc3RydWN0b3I7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydF9leGhhdXN0aW9uKGFjdGlvbikgeworICBjb25zdCB0ZXN0ID0gIlRl
c3QgdGhhdCBhIFdlYkFzc2VtYmx5IGNvZGUgZXhoYXV0cyB0aGUgc3RhY2sgc3BhY2UiOworICBj
b25zdCBsb2MgPSBuZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9yIiwg
IiIpOworICBjaGFpbiA9IFByb21pc2UuYWxsKFthY3Rpb24oKSwgY2hhaW5dKQorICAgIC50aGVu
KAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNz
ZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfSwKKyAgICAg
IGVycm9yID0+IHsKKyAgICAgICAgdW5pcXVlVGVzdChfID0+IHsKKyAgICAgICAgICBhc3NlcnRf
dHJ1ZSgKKyAgICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgU3RhY2tPdmVyZmxvdywKKyAgICAg
ICAgICAgIGBleHBlY3RlZCBydW50aW1lIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xvY31g
CisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9CisgICAgKQorICAgIC8v
IENsZWFyIGFsbCBleGNlcHRpb25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1
dGVkLgorICAgIC5jYXRjaChfID0+IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3VubGlua2Fi
bGUoYnl0ZXMpIHsKKyAgY29uc3QgdGVzdCA9ICJUZXN0IHRoYXQgYSBXZWJBc3NlbWJseSBtb2R1
bGUgaXMgdW5saW5rYWJsZSI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3Ry
aW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwg
RVhQRUNUX0lOVkFMSUQpCisgICAgLnRoZW4oCisgICAgICByZXN1bHQgPT4geworICAgICAgICB1
bmlxdWVUZXN0KF8gPT4geworICAgICAgICAgIGFzc2VydF90cnVlKAorICAgICAgICAgICAgcmVz
dWx0IGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAorICAgICAgICAgICAgYGV4cGVj
dGVkIGxpbmsgZXJyb3IsIG9ic2VydmVkICR7cmVzdWx0fSAke2xvY31gCisgICAgICAgICAgKTsK
KyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9LAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1
ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAg
IH0sIHRlc3QpOworICAgICAgfQorICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywg
c28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7
fSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF91bmluc3RhbnRpYWJsZShieXRlcykgeworICBjb25z
dCB0ZXN0ID0gIlRlc3QgdGhhdCBhIFdlYkFzc2VtYmx5IG1vZHVsZSBpcyB1bmluc3RhbnRpYWJs
ZSI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgi
RXJyb3IiLCAiIik7CisgIGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lOVkFMSUQp
CisgICAgLnRoZW4oCisgICAgICByZXN1bHQgPT4geworICAgICAgICB1bmlxdWVUZXN0KF8gPT4g
eworICAgICAgICAgIGFzc2VydF90cnVlKAorICAgICAgICAgICAgcmVzdWx0IGluc3RhbmNlb2Yg
V2ViQXNzZW1ibHkuUnVudGltZUVycm9yLAorICAgICAgICAgICAgYGV4cGVjdGVkIGxpbmsgZXJy
b3IsIG9ic2VydmVkICR7cmVzdWx0fSAke2xvY31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwg
dGVzdCk7CisgICAgICB9LAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7
CisgICAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOwor
ICAgICAgfQorICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJz
ZXF1ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2Z1
bmN0aW9uIHJlZ2lzdGVyKG5hbWUsIGluc3RhbmNlKSB7CisgIGNvbnN0IHRlc3QgPQorICAgICJU
ZXN0IHRoYXQgdGhlIGV4cG9ydHMgb2YgYSBXZWJBc3NlbWJseSBtb2R1bGUgY2FuIGJlIHJlZ2lz
dGVyZWQiOworICBjb25zdCBsb2MgPSBuZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxh
Y2UoIkVycm9yIiwgIiIpOworICBsZXQgc3RhY2sgPSBuZXcgRXJyb3IoKTsKKyAgY2hhaW4gPSBQ
cm9taXNlLmFsbChbaW5zdGFuY2UsIGNoYWluXSkKKyAgICAudGhlbigKKyAgICAgIHZhbHVlcyA9
PiB7CisgICAgICAgIHJlZ2lzdHJ5W25hbWVdID0gdmFsdWVzWzBdLmV4cG9ydHM7CisgICAgICB9
LAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNz
ZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfQorICAgICkK
KyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdl
dCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2Z1bmN0aW9uIGdldChpbnN0
YW5jZSwgbmFtZSkgeworICBjb25zdCB0ZXN0ID0gIlRlc3QgdGhhdCBhbiBleHBvcnQgb2YgYSBX
ZWJBc3NlbWJseSBpbnN0YW5jZSBjYW4gYmUgYWNxdWlyZWQiOworICBjb25zdCBsb2MgPSBuZXcg
RXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9yIiwgIiIpOworICBjaGFpbiA9
IFByb21pc2UuYWxsKFtpbnN0YW5jZSwgY2hhaW5dKS50aGVuKAorICAgIHZhbHVlcyA9PiB7Cisg
ICAgICBsZXQgdiA9IHZhbHVlc1swXS5leHBvcnRzW25hbWVdOworICAgICAgcmV0dXJuICh2IGlu
c3RhbmNlb2YgV2ViQXNzZW1ibHkuR2xvYmFsKSA/IHYudmFsdWUgOiB2OworICAgIH0sCisgICAg
XyA9PiB7CisgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShmYWxz
ZSwgbG9jKTsKKyAgICAgIH0sIHRlc3QpOworICAgIH0KKyAgKTsKKyAgcmV0dXJuIGNoYWluOwor
fQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3N5
bmNfaW5kZXguanMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3N5bmNf
aW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VkOWYyOTE1OTdjN2U0Y2ZiMzYwOTFmNGQ4ODEwYmFlYTZj
NGRlZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhh
cm5lc3Mvc3luY19pbmRleC5qcwpAQCAtMCwwICsxLDM4NyBAQAorLyoKKyAqIENvcHlyaWdodCAy
MDE3IFdlYkFzc2VtYmx5IENvbW11bml0eSBHcm91cCBwYXJ0aWNpcGFudHMKKyAqCisgKiBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
KyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisKKyd1c2Ug
c3RyaWN0JzsKKworbGV0IHRlc3ROdW0gPSAoZnVuY3Rpb24oKSB7CisgICAgbGV0IGNvdW50ID0g
MTsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBgIyR7Y291bnQrK30g
YDsKKyAgICB9Cit9KSgpOworCisvLyBXUFQncyBhc3NlcnRfdGhyb3cgdXNlcyBhIGxpc3Qgb2Yg
cHJlZGVmaW5lZCwgaGFyZGNvZGVkIGtub3duIGVycm9ycy4gU2luY2UKKy8vIGl0IGlzIG5vdCBh
d2FyZSBvZiB0aGUgV2ViQXNzZW1ibHkgZXJyb3IgdHlwZXMgKHlldCksIGltcGxlbWVudCBvdXIg
b3duCisvLyB2ZXJzaW9uLgorZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGZ1bmMsIGVycikgeworICAg
IGxldCBjYXVnaHQgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBj
YXRjaChlKSB7CisgICAgICAgIGFzc2VydF90cnVlKGUgaW5zdGFuY2VvZiBlcnIsIGBleHBlY3Rl
ZCAke2Vyci5uYW1lfSwgb2JzZXJ2ZWQgJHtlLmNvbnN0cnVjdG9yLm5hbWV9YCk7CisgICAgICAg
IGNhdWdodCA9IHRydWU7CisgICAgfQorICAgIGFzc2VydF90cnVlKGNhdWdodCwgdGVzdE51bSgp
ICsgImFzc2VydFRocm93cyBtdXN0IGNhdGNoIGFueSBlcnJvci4iKQorfQorCisvKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBXQVNUIEhBUk5FU1Mg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCisKKy8vIEZvciBhc3NlcnRpb25zIGludGVybmFsIHRvIG91ciB0ZXN0IGhhcm5lc3MuCitm
dW5jdGlvbiBfYXNzZXJ0KHgpIHsKKyAgICBpZiAoIXgpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBBc3NlcnRpb24gZmFpbHVyZTogJHt4fWApOworICAgIH0KK30KKworLy8gQSBzaW1wbGUg
c3VtIHR5cGUgdGhhdCBjYW4gZWl0aGVyIGJlIGEgdmFsaWQgVmFsdWUgb3IgYW4gRXJyb3IuCitm
dW5jdGlvbiBSZXN1bHQodHlwZSwgbWF5YmVWYWx1ZSkgeworICAgIHRoaXMudmFsdWUgPSBtYXli
ZVZhbHVlOworICAgIHRoaXMudHlwZSA9IHR5cGU7Cit9OworCitSZXN1bHQuVkFMVUUgPSAnVkFM
VUUnOworUmVzdWx0LkVSUk9SID0gJ0VSUk9SJzsKKworZnVuY3Rpb24gVmFsdWVSZXN1bHQodmFs
KSB7IHJldHVybiBuZXcgUmVzdWx0KFJlc3VsdC5WQUxVRSwgdmFsKTsgfQorZnVuY3Rpb24gRXJy
b3JSZXN1bHQoZXJyKSB7IHJldHVybiBuZXcgUmVzdWx0KFJlc3VsdC5FUlJPUiwgZXJyKTsgfQor
CitSZXN1bHQucHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMudHlw
ZSA9PT0gUmVzdWx0LkVSUk9SOyB9CisKK2NvbnN0IEVYUEVDVF9JTlZBTElEID0gZmFsc2U7CisK
Ky8qIERBVEEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8KKworbGV0IGV4dGVybnJlZnMgPSB7fTsKK2xldCBleHRl
cm5zeW0gPSBTeW1ib2woImV4dGVybnJlZiIpOworZnVuY3Rpb24gZXh0ZXJucmVmKHMpIHsKKyAg
aWYgKCEgKHMgaW4gZXh0ZXJucmVmcykpIGV4dGVybnJlZnNbc10gPSB7W2V4dGVybnN5bV06IHN9
OworICByZXR1cm4gZXh0ZXJucmVmc1tzXTsKK30KK2Z1bmN0aW9uIGlzX2V4dGVybnJlZih4KSB7
CisgIHJldHVybiAoeCAhPT0gbnVsbCAmJiBleHRlcm5zeW0gaW4geCkgPyAxIDogMDsKK30KK2Z1
bmN0aW9uIGlzX2Z1bmNyZWYoeCkgeworICByZXR1cm4gdHlwZW9mIHggPT09ICJmdW5jdGlvbiIg
PyAxIDogMDsKK30KK2Z1bmN0aW9uIGVxX2V4dGVybnJlZih4LCB5KSB7CisgIHJldHVybiB4ID09
PSB5ID8gMSA6IDA7Cit9CitmdW5jdGlvbiBlcV9mdW5jcmVmKHgsIHkpIHsKKyAgcmV0dXJuIHgg
PT09IHkgPyAxIDogMDsKK30KKworbGV0ICQkOworCisvLyBEZWZhdWx0IGltcG9ydHMuCit2YXIg
cmVnaXN0cnkgPSB7fTsKKworLy8gUmVzZXRzIHRoZSByZWdpc3RyeSBiZXR3ZWVuIHR3byBkaWZm
ZXJlbnQgV1BUIHRlc3RzLgorZnVuY3Rpb24gcmVpbml0aWFsaXplUmVnaXN0cnkoKSB7CisgICAg
aWYgKHR5cGVvZiBXZWJBc3NlbWJseSA9PT0gJ3VuZGVmaW5lZCcpCisgICAgICAgIHJldHVybjsK
KworICAgIGxldCBzcGVjdGVzdCA9IHsKKyAgICAgICAgZXh0ZXJucmVmOiBleHRlcm5yZWYsCisg
ICAgICAgIGlzX2V4dGVybnJlZjogaXNfZXh0ZXJucmVmLAorICAgICAgICBpc19mdW5jcmVmOiBp
c19mdW5jcmVmLAorICAgICAgICBlcV9leHRlcm5yZWY6IGVxX2V4dGVybnJlZiwKKyAgICAgICAg
ZXFfZnVuY3JlZjogZXFfZnVuY3JlZiwKKyAgICAgICAgcHJpbnQ6IGNvbnNvbGUubG9nLmJpbmQo
Y29uc29sZSksCisgICAgICAgIHByaW50X2kzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwK
KyAgICAgICAgcHJpbnRfaTMyX2YzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAg
ICAgcHJpbnRfZjY0X2Y2NDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgICAgcHJp
bnRfZjMyOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAorICAgICAgICBwcmludF9mNjQ6IGNv
bnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICAgIGdsb2JhbF9pMzI6IDY2NiwKKyAgICAg
ICAgZ2xvYmFsX2YzMjogNjY2LAorICAgICAgICBnbG9iYWxfZjY0OiA2NjYsCisgICAgICAgIHRh
YmxlOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDEwLCBtYXhpbXVtOiAyMCwgZWxl
bWVudDogJ2FueWZ1bmMnfSksCisgICAgICAgIG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9y
eSh7aW5pdGlhbDogMSwgbWF4aW11bTogMn0pCisgICAgfTsKKyAgICBsZXQgaGFuZGxlciA9IHsK
KyAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkgeworICAgICAgICByZXR1cm4gKHByb3AgaW4gdGFy
Z2V0KSA/ICB0YXJnZXRbcHJvcF0gOiB7fTsKKyAgICAgIH0KKyAgICB9OworICAgIHJlZ2lzdHJ5
ID0gbmV3IFByb3h5KHtzcGVjdGVzdH0sIGhhbmRsZXIpOworfQorCityZWluaXRpYWxpemVSZWdp
c3RyeSgpOworCisvKiBXQVNUIFBPTFlGSUxMICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2Z1bmN0aW9uIGJpbmFyeShieXRl
cykgeworICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKKyAg
ICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2aWV3W2ldID0gYnl0ZXMuY2hhckNv
ZGVBdChpKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLyoqCisgKiBSZXR1cm5z
IGEgY29tcGlsZWQgbW9kdWxlLCBvciB0aHJvd3MgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGF0IGNv
bXBpbGF0aW9uLgorICovCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgewor
ICAgIGxldCBidWZmZXIgPSBiaW5hcnkoYnl0ZXMpOworICAgIGxldCB2YWxpZGF0ZWQ7CisKKyAg
ICB0cnkgeworICAgICAgICB2YWxpZGF0ZWQgPSBXZWJBc3NlbWJseS52YWxpZGF0ZShidWZmZXIp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXZWJBc3NlbWJs
eS52YWxpZGF0ZSB0aHJvd3MgJHt0eXBlb2YgZX06ICR7ZX0ke2Uuc3RhY2t9YCk7CisgICAgfQor
CisgICAgaWYgKHZhbGlkYXRlZCAhPT0gdmFsaWQpIHsKKyAgICAgICAgLy8gVHJ5IHRvIGdldCBh
IG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGZyb20gdGhlIFdlYkFzc2VtYmx5LkNvbXBpbGVF
cnJvci4KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
YnVmZmVyKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKGUgaW5zdGFu
Y2VvZiBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvcihgV2ViQXNzZW1ibHkudmFsaWRhdGUgZXJyb3I6ICR7
ZS50b1N0cmluZygpfSR7ZS5zdGFja31cbmApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgV2ViQXNzZW1ibHkudmFsaWRhdGUgdGhyb3dzICR7dHlw
ZW9mIGV9OiAke2V9JHtlLnN0YWNrfWApOworICAgICAgICB9CisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgV2ViQXNzZW1ibHkudmFsaWRhdGUgd2FzIGV4cGVjdGVkIHRvIGZhaWwsIGJ1dCBkaWRu
J3RgKTsKKyAgICB9CisKKyAgICBsZXQgbW9kdWxlOworICAgIHRyeSB7CisgICAgICAgIG1vZHVs
ZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgaWYgKHZhbGlkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXZWJBc3NlbWJs
eS5Nb2R1bGUgY3RvciB1bmV4cGVjdGVkbHkgdGhyb3dzICR7dHlwZW9mIGV9OiAke2V9JHtlLnN0
YWNrfScpOworICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIHJldHVybiBtb2R1bGU7Cit9
CisKK2Z1bmN0aW9uIHVuaXF1ZVRlc3QoZnVuYywgZGVzYykgeworICAgIHRlc3QoZnVuYywgdGVz
dE51bSgpICsgZGVzYyk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9pbnZhbGlkKGJ5dGVzKSB7Cisg
ICAgdW5pcXVlVGVzdCgoKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtb2R1bGUo
Ynl0ZXMsIC8qIHZhbGlkICovIGZhbHNlKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign
ZGlkIG5vdCBmYWlsJyk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYXNzZXJ0
X3RydWUoZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgImV4cGVjdGVkIGlu
dmFsaWQgZmFpbHVyZToiKTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQg
c2hvdWxkIGJlIGludmFsaWQgb3IgbWFsZm9ybWVkLiIpOworfQorCitjb25zdCBhc3NlcnRfbWFs
Zm9ybWVkID0gYXNzZXJ0X2ludmFsaWQ7CisKK2Z1bmN0aW9uIGluc3RhbmNlKGJ5dGVzLCBpbXBv
cnRzID0gcmVnaXN0cnksIHZhbGlkID0gdHJ1ZSkgeworICAgIGlmIChpbXBvcnRzIGluc3RhbmNl
b2YgUmVzdWx0KSB7CisgICAgICAgIGlmIChpbXBvcnRzLmlzRXJyb3IoKSkKKyAgICAgICAgICAg
IHJldHVybiBpbXBvcnRzOworICAgICAgICBpbXBvcnRzID0gaW1wb3J0cy52YWx1ZTsKKyAgICB9
CisKKyAgICBsZXQgZXJyID0gbnVsbDsKKworICAgIGxldCBtLCBpOworICAgIHRyeSB7CisgICAg
ICAgIGxldCBtID0gbW9kdWxlKGJ5dGVzKTsKKyAgICAgICAgaSA9IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShtLCBpbXBvcnRzKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXJyID0gZTsK
KyAgICB9CisKKyAgICBpZiAodmFsaWQpIHsKKyAgICAgICAgdW5pcXVlVGVzdCgoKSA9PiB7Cisg
ICAgICAgICAgICBsZXQgaW5zdGFudGlhdGVkID0gZXJyID09PSBudWxsOworICAgICAgICAgICAg
YXNzZXJ0X3RydWUoaW5zdGFudGlhdGVkLCBlcnIpOworICAgICAgICB9LCAibW9kdWxlIHN1Y2Nl
c3NmdWxseSBpbnN0YW50aWF0ZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyICE9PSBudWxs
ID8gRXJyb3JSZXN1bHQoZXJyKSA6IFZhbHVlUmVzdWx0KGkpOworfQorCitmdW5jdGlvbiByZWdp
c3RlcihuYW1lLCBpbnN0YW5jZSkgeworICAgIF9hc3NlcnQoaW5zdGFuY2UgaW5zdGFuY2VvZiBS
ZXN1bHQpOworCisgICAgaWYgKGluc3RhbmNlLmlzRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcmVnaXN0cnlbbmFtZV0gPSBpbnN0YW5jZS52YWx1ZS5leHBvcnRzOworfQorCitmdW5j
dGlvbiBjYWxsKGluc3RhbmNlLCBuYW1lLCBhcmdzKSB7CisgICAgX2Fzc2VydChpbnN0YW5jZSBp
bnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICBpZiAoaW5zdGFuY2UuaXNFcnJvcigpKQorICAgICAg
ICByZXR1cm4gaW5zdGFuY2U7CisKKyAgICBsZXQgZXJyID0gbnVsbDsKKyAgICBsZXQgcmVzdWx0
OworICAgIHRyeSB7CisgICAgICAgIHJlc3VsdCA9IGluc3RhbmNlLnZhbHVlLmV4cG9ydHNbbmFt
ZV0oLi4uYXJncyk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGVyciA9IGU7CisgICAgfQor
CisgICAgcmV0dXJuIGVyciAhPT0gbnVsbCA/IEVycm9yUmVzdWx0KGVycikgOiBWYWx1ZVJlc3Vs
dChyZXN1bHQpOworfTsKKworZnVuY3Rpb24gZ2V0KGluc3RhbmNlLCBuYW1lKSB7CisgICAgX2Fz
c2VydChpbnN0YW5jZSBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICBpZiAoaW5zdGFuY2UuaXNF
cnJvcigpKQorICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisKKyAgICBsZXQgdiA9IGluc3RhbmNl
LnZhbHVlLmV4cG9ydHNbbmFtZV07CisgICAgcmV0dXJuIFZhbHVlUmVzdWx0KCh2IGluc3RhbmNl
b2YgV2ViQXNzZW1ibHkuR2xvYmFsKSA/IHYudmFsdWUgOiB2KTsKK30KKworZnVuY3Rpb24gZXhw
b3J0cyhpbnN0YW5jZSkgeworICAgIF9hc3NlcnQoaW5zdGFuY2UgaW5zdGFuY2VvZiBSZXN1bHQp
OworCisgICAgaWYgKGluc3RhbmNlLmlzRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGluc3RhbmNl
OworCisgICAgcmV0dXJuIFZhbHVlUmVzdWx0KHsgbW9kdWxlOiBpbnN0YW5jZS52YWx1ZS5leHBv
cnRzLCBzcGVjdGVzdDogcmVnaXN0cnkuc3BlY3Rlc3QgfSk7Cit9CisKK2Z1bmN0aW9uIHJ1bihh
Y3Rpb24pIHsKKyAgICBsZXQgcmVzdWx0ID0gYWN0aW9uKCk7CisKKyAgICBfYXNzZXJ0KHJlc3Vs
dCBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAgICAgICAg
aWYgKHJlc3VsdC5pc0Vycm9yKCkpCisgICAgICAgICAgICB0aHJvdyByZXN1bHQudmFsdWU7Cisg
ICAgfSwgIkEgd2FzdCB0ZXN0IHRoYXQgcnVucyB3aXRob3V0IGFueSBzcGVjaWFsIGFzc2VydGlv
bi4iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3VubGlua2FibGUoYnl0ZXMpIHsKKyAgICBsZXQg
cmVzdWx0ID0gaW5zdGFuY2UoYnl0ZXMsIHJlZ2lzdHJ5LCBFWFBFQ1RfSU5WQUxJRCk7CisKKyAg
ICBfYXNzZXJ0KHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0KCgp
ID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUocmVzdWx0LmlzRXJyb3IoKSwgJ2V4cGVjdGVkIGVy
cm9yIHJlc3VsdCcpOworICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgeworICAgICAgICAg
ICAgbGV0IGUgPSByZXN1bHQudmFsdWU7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShlIGluc3Rh
bmNlb2YgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgZXhwZWN0ZWQgbGluayBlcnJvciwgb2JzZXJ2
ZWQgJHtlfTpgKTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQgaXMgdW5s
aW5rYWJsZS4iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3VuaW5zdGFudGlhYmxlKGJ5dGVzKSB7
CisgICAgbGV0IHJlc3VsdCA9IGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lOVkFM
SUQpOworCisgICAgX2Fzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAgdW5p
cXVlVGVzdCgoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKHJlc3VsdC5pc0Vycm9yKCksICdl
eHBlY3RlZCBlcnJvciByZXN1bHQnKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsK
KyAgICAgICAgICAgIGxldCBlID0gcmVzdWx0LnZhbHVlOworICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgYGV4cGVjdGVkIHJ1bnRp
bWUgZXJyb3IsIG9ic2VydmVkICR7ZX06YCk7CisgICAgICAgIH0KKyAgICB9LCAiQSB3YXN0IG1v
ZHVsZSB0aGF0IGlzIHVuaW5zdGFudGlhYmxlLiIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfdHJh
cChhY3Rpb24pIHsKKyAgICBsZXQgcmVzdWx0ID0gYWN0aW9uKCk7CisKKyAgICBfYXNzZXJ0KHJl
c3VsdCBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAgICAg
ICAgYXNzZXJ0X3RydWUocmVzdWx0LmlzRXJyb3IoKSwgJ2V4cGVjdGVkIGVycm9yIHJlc3VsdCcp
OworICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgeworICAgICAgICAgICAgbGV0IGUgPSBy
ZXN1bHQudmFsdWU7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShlIGluc3RhbmNlb2YgV2ViQXNz
ZW1ibHkuUnVudGltZUVycm9yLCBgZXhwZWN0ZWQgcnVudGltZSBlcnJvciwgb2JzZXJ2ZWQgJHtl
fTpgKTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQgbXVzdCB0cmFwIGF0
IHJ1bnRpbWUuIik7Cit9CisKK2xldCBTdGFja092ZXJmbG93OwordHJ5IHsgKGZ1bmN0aW9uIGYo
KSB7IDEgKyBmKCkgfSkoKSB9IGNhdGNoIChlKSB7IFN0YWNrT3ZlcmZsb3cgPSBlLmNvbnN0cnVj
dG9yIH0KKworZnVuY3Rpb24gYXNzZXJ0X2V4aGF1c3Rpb24oYWN0aW9uKSB7CisgICAgbGV0IHJl
c3VsdCA9IGFjdGlvbigpOworCisgICAgX2Fzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQp
OworCisgICAgdW5pcXVlVGVzdCgoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKHJlc3VsdC5p
c0Vycm9yKCksICdleHBlY3RlZCBlcnJvciByZXN1bHQnKTsKKyAgICAgICAgaWYgKHJlc3VsdC5p
c0Vycm9yKCkpIHsKKyAgICAgICAgICAgIGxldCBlID0gcmVzdWx0LnZhbHVlOworICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoZSBpbnN0YW5jZW9mIFN0YWNrT3ZlcmZsb3csIGBleHBlY3RlZCBzdGFj
ayBvdmVyZmxvdyBlcnJvciwgb2JzZXJ2ZWQgJHtlfTpgKTsKKyAgICAgICAgfQorICAgIH0sICJB
IHdhc3QgbW9kdWxlIHRoYXQgbXVzdCBleGhhdXN0IHRoZSBzdGFjayBzcGFjZS4iKTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X3JldHVybihhY3Rpb24sIC4uLmV4cGVjdGVkKSB7CisgICAgbGV0IHJl
c3VsdCA9IGFjdGlvbigpOworICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KTsK
KworICAgIHVuaXF1ZVRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSghcmVzdWx0Lmlz
RXJyb3IoKSwgYGV4cGVjdGVkIHN1Y2Nlc3MgcmVzdWx0LCBnb3Q6ICR7cmVzdWx0LnZhbHVlfS5g
KTsKKyAgICAgICAgbGV0IGFjdHVhbCA9IHJlc3VsdC52YWx1ZTsKKyAgICAgICAgaWYgKGFjdHVh
bCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBbXTsKKyAgICAgICAgfSBl
bHNlIGlmICghQXJyYXkuaXNBcnJheShhY3R1YWwpKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBb
YWN0dWFsXTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYWN0dWFsLmxlbmd0aCAhPT0gZXhwZWN0
ZWQubGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhwZWN0ZWQubGVuZ3Ro
ICsgIiB2YWx1ZShzKSBleHBlY3RlZCwgZ290ICIgKyBhY3R1YWwubGVuZ3RoKTsKKyAgICAgICAg
fQorICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdHVhbC5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgaWYgKGV4cGVjdGVkW2ldIGluc3RhbmNlb2YgUmVzdWx0KSB7CisgICAgICAgICAg
ICAgICAgaWYgKGV4cGVjdGVkW2ldLmlzRXJyb3IoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIGV4cGVjdGVkW2ldID0gZXhwZWN0ZWRbaV0udmFsdWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdGVkW2ldKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSAibmFuOmNhbm9uaWNhbCI6CisgICAgICAgICAgICAgICAgY2FzZSAibmFu
OmFyaXRobWV0aWMiOgorICAgICAgICAgICAgICAgIGNhc2UgIm5hbjphbnkiOgorICAgICAgICAg
ICAgICAgICAgICAvLyBOb3RlIHRoYXQgSlMgY2FuJ3QgcmVsaWFibHkgZGlzdGluZ3Vpc2ggZGlm
ZmVyZW50IE5hTiB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgIC8vIHNvIHRoZXJlJ3Mgbm8g
Z29vZCB3YXkgdG8gdGVzdCB0aGF0IGl0J3MgYSBjYW5vbmljYWwgTmFOLgorICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShOdW1iZXIuaXNOYU4oYWN0dWFsW2ldKSwgYGV4cGVjdGVkIE5h
Tiwgb2JzZXJ2ZWQgJHthY3R1YWxbaV19LmApOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgY2FzZSAicmVmLmZ1bmMiOgorICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfdHJ1ZSh0eXBlb2YgYWN0dWFsW2ldID09PSAiZnVuY3Rpb24iLCBgZXhwZWN0ZWQgV2Fz
bSBmdW5jdGlvbiwgZ290ICR7YWN0dWFsW2ldfWApOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgY2FzZSAicmVmLmV4dGVybiI6CisgICAgICAgICAgICAgICAg
ICAgIGFzc2VydF90cnVlKGFjdHVhbFtpXSAhPT0gbnVsbCwgYGV4cGVjdGVkIFdhc20gcmVmZXJl
bmNlLCBnb3QgJHthY3R1YWxbaV19YCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGFjdHVhbFtpXSwgZXhwZWN0ZWRbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fSwgIkEgd2FzdCBtb2R1bGUgdGhhdCBtdXN0IHJldHVybiBhIHBhcnRpY3VsYXIgdmFsdWUuIik7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9yZXR1cm5fbmFuKGFjdGlvbikgeworICAgIGxldCByZXN1
bHQgPSBhY3Rpb24oKTsKKworICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KTsK
KworICAgIHVuaXF1ZVRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSghcmVzdWx0Lmlz
RXJyb3IoKSwgJ2V4cGVjdGVkIHN1Y2Nlc3MgcmVzdWx0Jyk7CisgICAgICAgIGlmICghcmVzdWx0
LmlzRXJyb3IoKSkgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUoTnVtYmVyLmlzTmFOKHJlc3Vs
dC52YWx1ZSksIGBleHBlY3RlZCBOYU4sIG9ic2VydmVkICR7cmVzdWx0LnZhbHVlfS5gKTsKKyAg
ICAgICAgfTsKKyAgICB9LCAiQSB3YXN0IG1vZHVsZSB0aGF0IG11c3QgcmV0dXJuIE5hTi4iKTsK
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2Fz
bS1jb25zdGFudHMuanMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dh
c20tY29uc3RhbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0MzlhMjVkN2RlYTQ5ODZlMzYzMzQ2ZTJjZWNj
MzVhYWNjMTU2NzYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwt
c3BlYy1oYXJuZXNzL3dhc20tY29uc3RhbnRzLmpzCkBAIC0wLDAgKzEsMzg0IEBACisvLyBDb3B5
cmlnaHQgMjAxNSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxh
Z3M6IC0tZXhwb3NlLXdhc20KKworbGV0IGhvc3RyZWZzID0ge307CitsZXQgaG9zdHN5bSA9IFN5
bWJvbCgiaG9zdHJlZiIpOworZnVuY3Rpb24gaG9zdHJlZihzKSB7CisgIGlmICghIChzIGluIGhv
c3RyZWZzKSkgaG9zdHJlZnNbc10gPSB7W2hvc3RzeW1dOiBzfTsKKyAgcmV0dXJuIGhvc3RyZWZz
W3NdOworfQorCitmdW5jdGlvbiBieXRlcygpIHsKKyAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1
ZmZlcihhcmd1bWVudHMubGVuZ3RoKTsKKyAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWZm
ZXIpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAg
IHZhciB2YWwgPSBhcmd1bWVudHNbaV07CisgICAgaWYgKCh0eXBlb2YgdmFsKSA9PSAic3RyaW5n
IikgdmFsID0gdmFsLmNoYXJDb2RlQXQoMCk7CisgICAgdmlld1tpXSA9IHZhbCB8IDA7CisgIH0K
KyAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLy8gSGVhZGVyIGRlY2xhcmF0aW9uIGNvbnN0YW50cwor
dmFyIGtXYXNtSDAgPSAwOwordmFyIGtXYXNtSDEgPSAweDYxOwordmFyIGtXYXNtSDIgPSAweDcz
OwordmFyIGtXYXNtSDMgPSAweDZkOworCit2YXIga1dhc21WMCA9IDB4MTsKK3ZhciBrV2FzbVYx
ID0gMDsKK3ZhciBrV2FzbVYyID0gMDsKK3ZhciBrV2FzbVYzID0gMDsKKwordmFyIGtIZWFkZXJT
aXplID0gODsKK3ZhciBrUGFnZVNpemUgPSA2NTUzNjsKKworZnVuY3Rpb24gYnl0ZXNXaXRoSGVh
ZGVyKCkgeworICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGtIZWFkZXJTaXplICsgYXJn
dW1lbnRzLmxlbmd0aCk7CisgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAg
dmlld1swXSA9IGtXYXNtSDA7CisgIHZpZXdbMV0gPSBrV2FzbUgxOworICB2aWV3WzJdID0ga1dh
c21IMjsKKyAgdmlld1szXSA9IGtXYXNtSDM7CisgIHZpZXdbNF0gPSBrV2FzbVYwOworICB2aWV3
WzVdID0ga1dhc21WMTsKKyAgdmlld1s2XSA9IGtXYXNtVjI7CisgIHZpZXdbN10gPSBrV2FzbVYz
OworICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgIHZh
ciB2YWwgPSBhcmd1bWVudHNbaV07CisgICAgaWYgKCh0eXBlb2YgdmFsKSA9PSAic3RyaW5nIikg
dmFsID0gdmFsLmNoYXJDb2RlQXQoMCk7CisgICAgdmlld1trSGVhZGVyU2l6ZSArIGldID0gdmFs
IHwgMDsKKyAgfQorICByZXR1cm4gYnVmZmVyOworfQorCitsZXQga0RlY2xOb0xvY2FscyA9IDA7
CisKKy8vIFNlY3Rpb24gZGVjbGFyYXRpb24gY29uc3RhbnRzCitsZXQga1Vua25vd25TZWN0aW9u
Q29kZSA9IDA7CitsZXQga1R5cGVTZWN0aW9uQ29kZSA9IDE7ICAgICAgLy8gRnVuY3Rpb24gc2ln
bmF0dXJlIGRlY2xhcmF0aW9ucworbGV0IGtJbXBvcnRTZWN0aW9uQ29kZSA9IDI7ICAgIC8vIElt
cG9ydCBkZWNsYXJhdGlvbnMKK2xldCBrRnVuY3Rpb25TZWN0aW9uQ29kZSA9IDM7ICAvLyBGdW5j
dGlvbiBkZWNsYXJhdGlvbnMKK2xldCBrVGFibGVTZWN0aW9uQ29kZSA9IDQ7ICAgICAvLyBJbmRp
cmVjdCBmdW5jdGlvbiB0YWJsZSBhbmQgb3RoZXIgdGFibGVzCitsZXQga01lbW9yeVNlY3Rpb25D
b2RlID0gNTsgICAgLy8gTWVtb3J5IGF0dHJpYnV0ZXMKK2xldCBrR2xvYmFsU2VjdGlvbkNvZGUg
PSA2OyAgICAvLyBHbG9iYWwgZGVjbGFyYXRpb25zCitsZXQga0V4cG9ydFNlY3Rpb25Db2RlID0g
NzsgICAgLy8gRXhwb3J0cworbGV0IGtTdGFydFNlY3Rpb25Db2RlID0gODsgICAgIC8vIFN0YXJ0
IGZ1bmN0aW9uIGRlY2xhcmF0aW9uCitsZXQga0VsZW1lbnRTZWN0aW9uQ29kZSA9IDk7ICAvLyBF
bGVtZW50cyBzZWN0aW9uCitsZXQga0NvZGVTZWN0aW9uQ29kZSA9IDEwOyAgICAgIC8vIEZ1bmN0
aW9uIGNvZGUKK2xldCBrRGF0YVNlY3Rpb25Db2RlID0gMTE7ICAgICAvLyBEYXRhIHNlZ21lbnRz
CitsZXQga05hbWVTZWN0aW9uQ29kZSA9IDEyOyAgICAgLy8gTmFtZSBzZWN0aW9uIChlbmNvZGVk
IGFzIHN0cmluZykKKworLy8gTmFtZSBzZWN0aW9uIHR5cGVzCitsZXQga01vZHVsZU5hbWVDb2Rl
ID0gMDsKK2xldCBrRnVuY3Rpb25OYW1lc0NvZGUgPSAxOworbGV0IGtMb2NhbE5hbWVzQ29kZSA9
IDI7CisKK2xldCBrV2FzbUZ1bmN0aW9uVHlwZUZvcm0gPSAweDYwOworbGV0IGtXYXNtRnVuY1Jl
ZnRpb25UeXBlRm9ybSA9IDB4NzA7CisKK2xldCBrUmVzaXphYmxlTWF4aW11bUZsYWcgPSAxOwor
CisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbiBmbGFncworbGV0IGtEZWNsRnVuY3Rpb25OYW1lICAg
PSAweDAxOworbGV0IGtEZWNsRnVuY3Rpb25JbXBvcnQgPSAweDAyOworbGV0IGtEZWNsRnVuY3Rp
b25Mb2NhbHMgPSAweDA0OworbGV0IGtEZWNsRnVuY3Rpb25FeHBvcnQgPSAweDA4OworCisvLyBM
b2NhbCB0eXBlcworbGV0IGtXYXNtU3RtdCA9IDB4NDA7CitsZXQga1dhc21JMzIgPSAweDdmOwor
bGV0IGtXYXNtSTY0ID0gMHg3ZTsKK2xldCBrV2FzbUYzMiA9IDB4N2Q7CitsZXQga1dhc21GNjQg
PSAweDdjOworbGV0IGtXYXNtUzEyOCA9IDB4N2I7CisKK2xldCBrRXh0ZXJuYWxGdW5jdGlvbiA9
IDA7CitsZXQga0V4dGVybmFsVGFibGUgPSAxOworbGV0IGtFeHRlcm5hbE1lbW9yeSA9IDI7Cits
ZXQga0V4dGVybmFsR2xvYmFsID0gMzsKKworbGV0IGtUYWJsZVplcm8gPSAwOworbGV0IGtNZW1v
cnlaZXJvID0gMDsKKworLy8gVXNlZnVsIHNpZ25hdHVyZXMKK2xldCBrU2lnX2lfaSA9IG1ha2VT
aWcoW2tXYXNtSTMyXSwgW2tXYXNtSTMyXSk7CitsZXQga1NpZ19sX2wgPSBtYWtlU2lnKFtrV2Fz
bUk2NF0sIFtrV2FzbUk2NF0pOworbGV0IGtTaWdfaV9sID0gbWFrZVNpZyhba1dhc21JNjRdLCBb
a1dhc21JMzJdKTsKK2xldCBrU2lnX2lfaWkgPSBtYWtlU2lnKFtrV2FzbUkzMiwga1dhc21JMzJd
LCBba1dhc21JMzJdKTsKK2xldCBrU2lnX2lfaWlpID0gbWFrZVNpZyhba1dhc21JMzIsIGtXYXNt
STMyLCBrV2FzbUkzMl0sIFtrV2FzbUkzMl0pOworbGV0IGtTaWdfZF9kZCA9IG1ha2VTaWcoW2tX
YXNtRjY0LCBrV2FzbUY2NF0sIFtrV2FzbUY2NF0pOworbGV0IGtTaWdfbF9sbCA9IG1ha2VTaWco
W2tXYXNtSTY0LCBrV2FzbUk2NF0sIFtrV2FzbUk2NF0pOworbGV0IGtTaWdfaV9kZCA9IG1ha2VT
aWcoW2tXYXNtRjY0LCBrV2FzbUY2NF0sIFtrV2FzbUkzMl0pOworbGV0IGtTaWdfdl92ID0gbWFr
ZVNpZyhbXSwgW10pOworbGV0IGtTaWdfaV92ID0gbWFrZVNpZyhbXSwgW2tXYXNtSTMyXSk7Cits
ZXQga1NpZ19sX3YgPSBtYWtlU2lnKFtdLCBba1dhc21JNjRdKTsKK2xldCBrU2lnX2ZfdiA9IG1h
a2VTaWcoW10sIFtrV2FzbUY2NF0pOworbGV0IGtTaWdfZF92ID0gbWFrZVNpZyhbXSwgW2tXYXNt
RjY0XSk7CitsZXQga1NpZ192X2kgPSBtYWtlU2lnKFtrV2FzbUkzMl0sIFtdKTsKK2xldCBrU2ln
X3ZfaWkgPSBtYWtlU2lnKFtrV2FzbUkzMiwga1dhc21JMzJdLCBbXSk7CitsZXQga1NpZ192X2lp
aSA9IG1ha2VTaWcoW2tXYXNtSTMyLCBrV2FzbUkzMiwga1dhc21JMzJdLCBbXSk7CitsZXQga1Np
Z192X2wgPSBtYWtlU2lnKFtrV2FzbUk2NF0sIFtdKTsKK2xldCBrU2lnX3ZfZCA9IG1ha2VTaWco
W2tXYXNtRjY0XSwgW10pOworbGV0IGtTaWdfdl9kZCA9IG1ha2VTaWcoW2tXYXNtRjY0LCBrV2Fz
bUY2NF0sIFtdKTsKK2xldCBrU2lnX3ZfZGRpID0gbWFrZVNpZyhba1dhc21GNjQsIGtXYXNtRjY0
LCBrV2FzbUkzMl0sIFtdKTsKK2xldCBrU2lnX3NfdiA9IG1ha2VTaWcoW10sIFtrV2FzbVMxMjhd
KTsKKworZnVuY3Rpb24gbWFrZVNpZyhwYXJhbXMsIHJlc3VsdHMpIHsKKyAgcmV0dXJuIHtwYXJh
bXM6IHBhcmFtcywgcmVzdWx0czogcmVzdWx0c307Cit9CisKK2Z1bmN0aW9uIG1ha2VTaWdfdl94
KHgpIHsKKyAgcmV0dXJuIG1ha2VTaWcoW3hdLCBbXSk7Cit9CisKK2Z1bmN0aW9uIG1ha2VTaWdf
dl94eCh4KSB7CisgIHJldHVybiBtYWtlU2lnKFt4LCB4XSwgW10pOworfQorCitmdW5jdGlvbiBt
YWtlU2lnX3JfdihyKSB7CisgIHJldHVybiBtYWtlU2lnKFtdLCBbcl0pOworfQorCitmdW5jdGlv
biBtYWtlU2lnX3JfeChyLCB4KSB7CisgIHJldHVybiBtYWtlU2lnKFt4XSwgW3JdKTsKK30KKwor
ZnVuY3Rpb24gbWFrZVNpZ19yX3h4KHIsIHgpIHsKKyAgcmV0dXJuIG1ha2VTaWcoW3gsIHhdLCBb
cl0pOworfQorCisvLyBPcGNvZGVzCitsZXQga0V4cHJVbnJlYWNoYWJsZSA9IDB4MDA7CitsZXQg
a0V4cHJOb3AgPSAweDAxOworbGV0IGtFeHByQmxvY2sgPSAweDAyOworbGV0IGtFeHByTG9vcCA9
IDB4MDM7CitsZXQga0V4cHJJZiA9IDB4MDQ7CitsZXQga0V4cHJFbHNlID0gMHgwNTsKK2xldCBr
RXhwclRyeSA9IDB4MDY7CitsZXQga0V4cHJDYXRjaCA9IDB4MDc7CitsZXQga0V4cHJUaHJvdyA9
IDB4MDg7CitsZXQga0V4cHJFbmQgPSAweDBiOworbGV0IGtFeHByQnIgPSAweDBjOworbGV0IGtF
eHByQnJJZiA9IDB4MGQ7CitsZXQga0V4cHJCclRhYmxlID0gMHgwZTsKK2xldCBrRXhwclJldHVy
biA9IDB4MGY7CitsZXQga0V4cHJDYWxsRnVuY3Rpb24gPSAweDEwOworbGV0IGtFeHByQ2FsbElu
ZGlyZWN0ID0gMHgxMTsKK2xldCBrRXhwckRyb3AgPSAweDFhOworbGV0IGtFeHByU2VsZWN0ID0g
MHgxYjsKK2xldCBrRXhwckdldExvY2FsID0gMHgyMDsKK2xldCBrRXhwclNldExvY2FsID0gMHgy
MTsKK2xldCBrRXhwclRlZUxvY2FsID0gMHgyMjsKK2xldCBrRXhwckdldEdsb2JhbCA9IDB4MjM7
CitsZXQga0V4cHJTZXRHbG9iYWwgPSAweDI0OworbGV0IGtFeHBySTMyQ29uc3QgPSAweDQxOwor
bGV0IGtFeHBySTY0Q29uc3QgPSAweDQyOworbGV0IGtFeHByRjMyQ29uc3QgPSAweDQzOworbGV0
IGtFeHByRjY0Q29uc3QgPSAweDQ0OworbGV0IGtFeHBySTMyTG9hZE1lbSA9IDB4Mjg7CitsZXQg
a0V4cHJJNjRMb2FkTWVtID0gMHgyOTsKK2xldCBrRXhwckYzMkxvYWRNZW0gPSAweDJhOworbGV0
IGtFeHByRjY0TG9hZE1lbSA9IDB4MmI7CitsZXQga0V4cHJJMzJMb2FkTWVtOFMgPSAweDJjOwor
bGV0IGtFeHBySTMyTG9hZE1lbThVID0gMHgyZDsKK2xldCBrRXhwckkzMkxvYWRNZW0xNlMgPSAw
eDJlOworbGV0IGtFeHBySTMyTG9hZE1lbTE2VSA9IDB4MmY7CitsZXQga0V4cHJJNjRMb2FkTWVt
OFMgPSAweDMwOworbGV0IGtFeHBySTY0TG9hZE1lbThVID0gMHgzMTsKK2xldCBrRXhwckk2NExv
YWRNZW0xNlMgPSAweDMyOworbGV0IGtFeHBySTY0TG9hZE1lbTE2VSA9IDB4MzM7CitsZXQga0V4
cHJJNjRMb2FkTWVtMzJTID0gMHgzNDsKK2xldCBrRXhwckk2NExvYWRNZW0zMlUgPSAweDM1Owor
bGV0IGtFeHBySTMyU3RvcmVNZW0gPSAweDM2OworbGV0IGtFeHBySTY0U3RvcmVNZW0gPSAweDM3
OworbGV0IGtFeHByRjMyU3RvcmVNZW0gPSAweDM4OworbGV0IGtFeHByRjY0U3RvcmVNZW0gPSAw
eDM5OworbGV0IGtFeHBySTMyU3RvcmVNZW04ID0gMHgzYTsKK2xldCBrRXhwckkzMlN0b3JlTWVt
MTYgPSAweDNiOworbGV0IGtFeHBySTY0U3RvcmVNZW04ID0gMHgzYzsKK2xldCBrRXhwckk2NFN0
b3JlTWVtMTYgPSAweDNkOworbGV0IGtFeHBySTY0U3RvcmVNZW0zMiA9IDB4M2U7CitsZXQga0V4
cHJNZW1vcnlTaXplID0gMHgzZjsKK2xldCBrRXhwckdyb3dNZW1vcnkgPSAweDQwOworbGV0IGtF
eHBySTMyRXF6ID0gMHg0NTsKK2xldCBrRXhwckkzMkVxID0gMHg0NjsKK2xldCBrRXhwckkzMk5l
ID0gMHg0NzsKK2xldCBrRXhwckkzMkx0UyA9IDB4NDg7CitsZXQga0V4cHJJMzJMdFUgPSAweDQ5
OworbGV0IGtFeHBySTMyR3RTID0gMHg0YTsKK2xldCBrRXhwckkzMkd0VSA9IDB4NGI7CitsZXQg
a0V4cHJJMzJMZVMgPSAweDRjOworbGV0IGtFeHBySTMyTGVVID0gMHg0ZDsKK2xldCBrRXhwckkz
MkdlUyA9IDB4NGU7CitsZXQga0V4cHJJMzJHZVUgPSAweDRmOworbGV0IGtFeHBySTY0RXF6ID0g
MHg1MDsKK2xldCBrRXhwckk2NEVxID0gMHg1MTsKK2xldCBrRXhwckk2NE5lID0gMHg1MjsKK2xl
dCBrRXhwckk2NEx0UyA9IDB4NTM7CitsZXQga0V4cHJJNjRMdFUgPSAweDU0OworbGV0IGtFeHBy
STY0R3RTID0gMHg1NTsKK2xldCBrRXhwckk2NEd0VSA9IDB4NTY7CitsZXQga0V4cHJJNjRMZVMg
PSAweDU3OworbGV0IGtFeHBySTY0TGVVID0gMHg1ODsKK2xldCBrRXhwckk2NEdlUyA9IDB4NTk7
CitsZXQga0V4cHJJNjRHZVUgPSAweDVhOworbGV0IGtFeHByRjMyRXEgPSAweDViOworbGV0IGtF
eHByRjMyTmUgPSAweDVjOworbGV0IGtFeHByRjMyTHQgPSAweDVkOworbGV0IGtFeHByRjMyR3Qg
PSAweDVlOworbGV0IGtFeHByRjMyTGUgPSAweDVmOworbGV0IGtFeHByRjMyR2UgPSAweDYwOwor
bGV0IGtFeHByRjY0RXEgPSAweDYxOworbGV0IGtFeHByRjY0TmUgPSAweDYyOworbGV0IGtFeHBy
RjY0THQgPSAweDYzOworbGV0IGtFeHByRjY0R3QgPSAweDY0OworbGV0IGtFeHByRjY0TGUgPSAw
eDY1OworbGV0IGtFeHByRjY0R2UgPSAweDY2OworbGV0IGtFeHBySTMyQ2x6ID0gMHg2NzsKK2xl
dCBrRXhwckkzMkN0eiA9IDB4Njg7CitsZXQga0V4cHJJMzJQb3BjbnQgPSAweDY5OworbGV0IGtF
eHBySTMyQWRkID0gMHg2YTsKK2xldCBrRXhwckkzMlN1YiA9IDB4NmI7CitsZXQga0V4cHJJMzJN
dWwgPSAweDZjOworbGV0IGtFeHBySTMyRGl2UyA9IDB4NmQ7CitsZXQga0V4cHJJMzJEaXZVID0g
MHg2ZTsKK2xldCBrRXhwckkzMlJlbVMgPSAweDZmOworbGV0IGtFeHBySTMyUmVtVSA9IDB4NzA7
CitsZXQga0V4cHJJMzJBbmQgPSAweDcxOworbGV0IGtFeHBySTMySW9yID0gMHg3MjsKK2xldCBr
RXhwckkzMlhvciA9IDB4NzM7CitsZXQga0V4cHJJMzJTaGwgPSAweDc0OworbGV0IGtFeHBySTMy
U2hyUyA9IDB4NzU7CitsZXQga0V4cHJJMzJTaHJVID0gMHg3NjsKK2xldCBrRXhwckkzMlJvbCA9
IDB4Nzc7CitsZXQga0V4cHJJMzJSb3IgPSAweDc4OworbGV0IGtFeHBySTY0Q2x6ID0gMHg3OTsK
K2xldCBrRXhwckk2NEN0eiA9IDB4N2E7CitsZXQga0V4cHJJNjRQb3BjbnQgPSAweDdiOworbGV0
IGtFeHBySTY0QWRkID0gMHg3YzsKK2xldCBrRXhwckk2NFN1YiA9IDB4N2Q7CitsZXQga0V4cHJJ
NjRNdWwgPSAweDdlOworbGV0IGtFeHBySTY0RGl2UyA9IDB4N2Y7CitsZXQga0V4cHJJNjREaXZV
ID0gMHg4MDsKK2xldCBrRXhwckk2NFJlbVMgPSAweDgxOworbGV0IGtFeHBySTY0UmVtVSA9IDB4
ODI7CitsZXQga0V4cHJJNjRBbmQgPSAweDgzOworbGV0IGtFeHBySTY0SW9yID0gMHg4NDsKK2xl
dCBrRXhwckk2NFhvciA9IDB4ODU7CitsZXQga0V4cHJJNjRTaGwgPSAweDg2OworbGV0IGtFeHBy
STY0U2hyUyA9IDB4ODc7CitsZXQga0V4cHJJNjRTaHJVID0gMHg4ODsKK2xldCBrRXhwckk2NFJv
bCA9IDB4ODk7CitsZXQga0V4cHJJNjRSb3IgPSAweDhhOworbGV0IGtFeHByRjMyQWJzID0gMHg4
YjsKK2xldCBrRXhwckYzMk5lZyA9IDB4OGM7CitsZXQga0V4cHJGMzJDZWlsID0gMHg4ZDsKK2xl
dCBrRXhwckYzMkZsb29yID0gMHg4ZTsKK2xldCBrRXhwckYzMlRydW5jID0gMHg4ZjsKK2xldCBr
RXhwckYzMk5lYXJlc3RJbnQgPSAweDkwOworbGV0IGtFeHByRjMyU3FydCA9IDB4OTE7CitsZXQg
a0V4cHJGMzJBZGQgPSAweDkyOworbGV0IGtFeHByRjMyU3ViID0gMHg5MzsKK2xldCBrRXhwckYz
Mk11bCA9IDB4OTQ7CitsZXQga0V4cHJGMzJEaXYgPSAweDk1OworbGV0IGtFeHByRjMyTWluID0g
MHg5NjsKK2xldCBrRXhwckYzMk1heCA9IDB4OTc7CitsZXQga0V4cHJGMzJDb3B5U2lnbiA9IDB4
OTg7CitsZXQga0V4cHJGNjRBYnMgPSAweDk5OworbGV0IGtFeHByRjY0TmVnID0gMHg5YTsKK2xl
dCBrRXhwckY2NENlaWwgPSAweDliOworbGV0IGtFeHByRjY0Rmxvb3IgPSAweDljOworbGV0IGtF
eHByRjY0VHJ1bmMgPSAweDlkOworbGV0IGtFeHByRjY0TmVhcmVzdEludCA9IDB4OWU7CitsZXQg
a0V4cHJGNjRTcXJ0ID0gMHg5ZjsKK2xldCBrRXhwckY2NEFkZCA9IDB4YTA7CitsZXQga0V4cHJG
NjRTdWIgPSAweGExOworbGV0IGtFeHByRjY0TXVsID0gMHhhMjsKK2xldCBrRXhwckY2NERpdiA9
IDB4YTM7CitsZXQga0V4cHJGNjRNaW4gPSAweGE0OworbGV0IGtFeHByRjY0TWF4ID0gMHhhNTsK
K2xldCBrRXhwckY2NENvcHlTaWduID0gMHhhNjsKK2xldCBrRXhwckkzMkNvbnZlcnRJNjQgPSAw
eGE3OworbGV0IGtFeHBySTMyU0NvbnZlcnRGMzIgPSAweGE4OworbGV0IGtFeHBySTMyVUNvbnZl
cnRGMzIgPSAweGE5OworbGV0IGtFeHBySTMyU0NvbnZlcnRGNjQgPSAweGFhOworbGV0IGtFeHBy
STMyVUNvbnZlcnRGNjQgPSAweGFiOworbGV0IGtFeHBySTY0U0NvbnZlcnRJMzIgPSAweGFjOwor
bGV0IGtFeHBySTY0VUNvbnZlcnRJMzIgPSAweGFkOworbGV0IGtFeHBySTY0U0NvbnZlcnRGMzIg
PSAweGFlOworbGV0IGtFeHBySTY0VUNvbnZlcnRGMzIgPSAweGFmOworbGV0IGtFeHBySTY0U0Nv
bnZlcnRGNjQgPSAweGIwOworbGV0IGtFeHBySTY0VUNvbnZlcnRGNjQgPSAweGIxOworbGV0IGtF
eHByRjMyU0NvbnZlcnRJMzIgPSAweGIyOworbGV0IGtFeHByRjMyVUNvbnZlcnRJMzIgPSAweGIz
OworbGV0IGtFeHByRjMyU0NvbnZlcnRJNjQgPSAweGI0OworbGV0IGtFeHByRjMyVUNvbnZlcnRJ
NjQgPSAweGI1OworbGV0IGtFeHByRjMyQ29udmVydEY2NCA9IDB4YjY7CitsZXQga0V4cHJGNjRT
Q29udmVydEkzMiA9IDB4Yjc7CitsZXQga0V4cHJGNjRVQ29udmVydEkzMiA9IDB4Yjg7CitsZXQg
a0V4cHJGNjRTQ29udmVydEk2NCA9IDB4Yjk7CitsZXQga0V4cHJGNjRVQ29udmVydEk2NCA9IDB4
YmE7CitsZXQga0V4cHJGNjRDb252ZXJ0RjMyID0gMHhiYjsKK2xldCBrRXhwckkzMlJlaW50ZXJw
cmV0RjMyID0gMHhiYzsKK2xldCBrRXhwckk2NFJlaW50ZXJwcmV0RjY0ID0gMHhiZDsKK2xldCBr
RXhwckYzMlJlaW50ZXJwcmV0STMyID0gMHhiZTsKK2xldCBrRXhwckY2NFJlaW50ZXJwcmV0STY0
ID0gMHhiZjsKKworbGV0IGtUcmFwVW5yZWFjaGFibGUgICAgICAgICAgPSAwOworbGV0IGtUcmFw
TWVtT3V0T2ZCb3VuZHMgICAgICAgPSAxOworbGV0IGtUcmFwRGl2QnlaZXJvICAgICAgICAgICAg
PSAyOworbGV0IGtUcmFwRGl2VW5yZXByZXNlbnRhYmxlICAgPSAzOworbGV0IGtUcmFwUmVtQnla
ZXJvICAgICAgICAgICAgPSA0OworbGV0IGtUcmFwRmxvYXRVbnJlcHJlc2VudGFibGUgPSA1Owor
bGV0IGtUcmFwRnVuY0ludmFsaWQgICAgICAgICAgPSA2OworbGV0IGtUcmFwRnVuY1NpZ01pc21h
dGNoICAgICAgPSA3OworbGV0IGtUcmFwSW52YWxpZEluZGV4ICAgICAgICAgPSA4OworCitsZXQg
a1RyYXBNc2dzID0gWworICAidW5yZWFjaGFibGUiLAorICAibWVtb3J5IGFjY2VzcyBvdXQgb2Yg
Ym91bmRzIiwKKyAgImRpdmlkZSBieSB6ZXJvIiwKKyAgImRpdmlkZSByZXN1bHQgdW5yZXByZXNl
bnRhYmxlIiwKKyAgInJlbWFpbmRlciBieSB6ZXJvIiwKKyAgImludGVnZXIgcmVzdWx0IHVucmVw
cmVzZW50YWJsZSIsCisgICJpbnZhbGlkIGZ1bmN0aW9uIiwKKyAgImZ1bmN0aW9uIHNpZ25hdHVy
ZSBtaXNtYXRjaCIsCisgICJpbnZhbGlkIGluZGV4IGludG8gZnVuY3Rpb24gdGFibGUiCitdOwor
CitmdW5jdGlvbiBhc3NlcnRUcmFwcyh0cmFwLCBjb2RlKSB7CisgIHRyeSB7CisgICAgaWYgKHR5
cGVvZiBjb2RlID09PSAnZnVuY3Rpb24nKSB7CisgICAgICBjb2RlKCk7CisgICAgfSBlbHNlIHsK
KyAgICAgIGV2YWwoY29kZSk7CisgICAgfQorICB9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0RXF1
YWxzKCdvYmplY3QnLCB0eXBlb2YgZSk7CisgICAgYXNzZXJ0RXF1YWxzKGtUcmFwTXNnc1t0cmFw
XSwgZS5tZXNzYWdlKTsKKyAgICAvLyBTdWNjZXNzLgorICAgIHJldHVybjsKKyAgfQorICB0aHJv
dyBuZXcgTWpzVW5pdEFzc2VydGlvbkVycm9yKCdEaWQgbm90IHRyYXAsIGV4cGVjdGVkOiAnICsg
a1RyYXBNc2dzW3RyYXBdKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0V2FzbVRocm93cyh2YWx1ZSwg
Y29kZSkgeworICBhc3NlcnRFcXVhbHMoJ251bWJlcicsIHR5cGVvZiB2YWx1ZSk7CisgIHRyeSB7
CisgICAgaWYgKHR5cGVvZiBjb2RlID09PSAnZnVuY3Rpb24nKSB7CisgICAgICBjb2RlKCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIGV2YWwoY29kZSk7CisgICAgfQorICB9IGNhdGNoIChlKSB7Cisg
ICAgYXNzZXJ0RXF1YWxzKCdudW1iZXInLCB0eXBlb2YgZSk7CisgICAgYXNzZXJ0RXF1YWxzKHZh
bHVlLCBlKTsKKyAgICAvLyBTdWNjZXNzLgorICAgIHJldHVybjsKKyAgfQorICB0aHJvdyBuZXcg
TWpzVW5pdEFzc2VydGlvbkVycm9yKCdEaWQgbm90IHRocm93LCBleHBlY3RlZDogJyArIHZhbHVl
KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mv
d2FzbS1tb2R1bGUtYnVpbGRlci5qcyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhh
cm5lc3Mvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTgxYWY4OGZiOTc3YWVl
OTA5NWQxNTI0OGU4MzRmNTczNzE3Mjc0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNt
L3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy93YXNtLW1vZHVsZS1idWlsZGVyLmpzCkBAIC0wLDAg
KzEsNTgzIEBACisvLyBDb3B5cmlnaHQgMjAxNiB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKworLy8gVXNlZCBmb3IgZW5jb2RpbmcgZjMyIGFuZCBkb3VibGUgY29uc3RhbnRz
IHRvIGJpdHMuCitsZXQgX19idWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoOCk7CitsZXQgYnl0ZV92
aWV3ID0gbmV3IEludDhBcnJheShfX2J1ZmZlcik7CitsZXQgZjMyX3ZpZXcgPSBuZXcgRmxvYXQz
MkFycmF5KF9fYnVmZmVyKTsKK2xldCBmNjRfdmlldyA9IG5ldyBGbG9hdDY0QXJyYXkoX19idWZm
ZXIpOworCitjbGFzcyBCaW5hcnkgZXh0ZW5kcyBBcnJheSB7CisgIGVtaXRfdTgodmFsKSB7Cisg
ICAgdGhpcy5wdXNoKHZhbCk7CisgIH0KKworICBlbWl0X3UxNih2YWwpIHsKKyAgICB0aGlzLnB1
c2godmFsICYgMHhmZik7CisgICAgdGhpcy5wdXNoKCh2YWwgPj4gOCkgJiAweGZmKTsKKyAgfQor
CisgIGVtaXRfdTMyKHZhbCkgeworICAgIHRoaXMucHVzaCh2YWwgJiAweGZmKTsKKyAgICB0aGlz
LnB1c2goKHZhbCA+PiA4KSAmIDB4ZmYpOworICAgIHRoaXMucHVzaCgodmFsID4+IDE2KSAmIDB4
ZmYpOworICAgIHRoaXMucHVzaCgodmFsID4+IDI0KSAmIDB4ZmYpOworICB9CisKKyAgZW1pdF91
MzJ2KHZhbCkgeworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBsZXQgdiA9IHZhbCAmIDB4ZmY7
CisgICAgICB2YWwgPSB2YWwgPj4+IDc7CisgICAgICBpZiAodmFsID09IDApIHsKKyAgICAgICAg
dGhpcy5wdXNoKHYpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHRoaXMucHVzaCh2
IHwgMHg4MCk7CisgICAgfQorICB9CisKKyAgZW1pdF9ieXRlcyhkYXRhKSB7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7CisgICAgICB0aGlzLnB1c2goZGF0YVtp
XSAmIDB4ZmYpOworICAgIH0KKyAgfQorCisgIGVtaXRfc3RyaW5nKHN0cmluZykgeworICAgIC8v
IFdoZW4gdGVzdGluZyBpbGxlZ2FsIG5hbWVzLCB3ZSBwYXNzIGEgYnl0ZSBhcnJheSBkaXJlY3Rs
eS4KKyAgICBpZiAoc3RyaW5nIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgIHRoaXMuZW1pdF91
MzJ2KHN0cmluZy5sZW5ndGgpOworICAgICAgdGhpcy5lbWl0X2J5dGVzKHN0cmluZyk7CisgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhpcyBpcyB0aGUgaGFja3kgd2F5IHRvIGNvbnZl
cnQgYSBKYXZhU2NyaXB0IHN0cmluZyB0byBhIFVURjggZW5jb2RlZAorICAgIC8vIHN0cmluZyBv
bmx5IGNvbnRhaW5pbmcgc2luZ2xlLWJ5dGUgY2hhcmFjdGVycy4KKyAgICBsZXQgc3RyaW5nX3V0
ZjggPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKSk7CisgICAgdGhpcy5lbWl0
X3UzMnYoc3RyaW5nX3V0ZjgubGVuZ3RoKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmlu
Z191dGY4Lmxlbmd0aDsgaSsrKSB7CisgICAgICB0aGlzLmVtaXRfdTgoc3RyaW5nX3V0ZjguY2hh
ckNvZGVBdChpKSk7CisgICAgfQorICB9CisKKyAgZW1pdF9oZWFkZXIoKSB7CisgICAgdGhpcy5w
dXNoKGtXYXNtSDAsIGtXYXNtSDEsIGtXYXNtSDIsIGtXYXNtSDMsCisgICAgICAgICAgICAgIGtX
YXNtVjAsIGtXYXNtVjEsIGtXYXNtVjIsIGtXYXNtVjMpOworICB9CisKKyAgZW1pdF9zZWN0aW9u
KHNlY3Rpb25fY29kZSwgY29udGVudF9nZW5lcmF0b3IpIHsKKyAgICAvLyBFbWl0IHNlY3Rpb24g
bmFtZS4KKyAgICB0aGlzLmVtaXRfdTgoc2VjdGlvbl9jb2RlKTsKKyAgICAvLyBFbWl0IHRoZSBz
ZWN0aW9uIHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlcjogaXRzIGZ1bGwgbGVuZ3RoIGlzbid0IGtub3cg
eWV0LgorICAgIGxldCBzZWN0aW9uID0gbmV3IEJpbmFyeTsKKyAgICBjb250ZW50X2dlbmVyYXRv
cihzZWN0aW9uKTsKKyAgICAvLyBFbWl0IHNlY3Rpb24gbGVuZ3RoLgorICAgIHRoaXMuZW1pdF91
MzJ2KHNlY3Rpb24ubGVuZ3RoKTsKKyAgICAvLyBDb3B5IHRoZSB0ZW1wb3JhcnkgYnVmZmVyLgor
ICAgIGZvciAoY29uc3Qgc2VjdGlvbkJ5dGUgb2Ygc2VjdGlvbikgeworICAgICAgdGhpcy5wdXNo
KHNlY3Rpb25CeXRlKTsKKyAgICB9CisgIH0KK30KKworY2xhc3MgV2FzbUZ1bmN0aW9uQnVpbGRl
ciB7CisgIGNvbnN0cnVjdG9yKG1vZHVsZSwgbmFtZSwgdHlwZV9pbmRleCkgeworICAgIHRoaXMu
bW9kdWxlID0gbW9kdWxlOworICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy50eXBlX2lu
ZGV4ID0gdHlwZV9pbmRleDsKKyAgICB0aGlzLmJvZHkgPSBbXTsKKyAgfQorCisgIGV4cG9ydEFz
KG5hbWUpIHsKKyAgICB0aGlzLm1vZHVsZS5hZGRFeHBvcnQobmFtZSwgdGhpcy5pbmRleCk7Cisg
ICAgcmV0dXJuIHRoaXM7CisgIH0KKworICBleHBvcnRGdW5jKCkgeworICAgIHRoaXMuZXhwb3J0
QXModGhpcy5uYW1lKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZEJvZHkoYm9keSkg
eworICAgIGZvciAobGV0IGIgb2YgYm9keSkgeworICAgICAgaWYgKHR5cGVvZiBiICE9ICdudW1i
ZXInKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgYm9keSAoZW50cmllcyBoYXZl
IHRvIGJlIG51bWJlcnMpOiAnICsgYm9keSk7CisgICAgfQorICAgIHRoaXMuYm9keSA9IGJvZHku
c2xpY2UoKTsKKyAgICAvLyBBdXRvbWF0aWNhbGx5IGFkZCB0aGUgZW5kIGZvciB0aGUgZnVuY3Rp
b24gYmxvY2sgdG8gdGhlIGJvZHkuCisgICAgdGhpcy5ib2R5LnB1c2goa0V4cHJFbmQpOworICAg
IHJldHVybiB0aGlzOworICB9CisKKyAgYWRkTG9jYWxzKGxvY2FscykgeworICAgIHRoaXMubG9j
YWxzID0gbG9jYWxzOworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgZW5kKCkgeworICAgIHRo
aXMuYm9keS5wdXNoKGtFeHByRW5kKTsKKyAgICByZXR1cm4gdGhpcy5tb2R1bGU7CisgIH0KK30K
KworY2xhc3MgV2FzbUdsb2JhbEJ1aWxkZXIgeworICBjb25zdHJ1Y3Rvcihtb2R1bGUsIHR5cGUs
IG11dGFibGUpIHsKKyAgICB0aGlzLm1vZHVsZSA9IG1vZHVsZTsKKyAgICB0aGlzLnR5cGUgPSB0
eXBlOworICAgIHRoaXMubXV0YWJsZSA9IG11dGFibGU7CisgICAgdGhpcy5pbml0ID0gMDsKKyAg
fQorCisgIGV4cG9ydEFzKG5hbWUpIHsKKyAgICB0aGlzLm1vZHVsZS5leHBvcnRzLnB1c2goe25h
bWU6IG5hbWUsIGtpbmQ6IGtFeHRlcm5hbEdsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4OiB0aGlzLmluZGV4fSk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KK30KKwor
Y2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnR5
cGVzID0gW107CisgICAgdGhpcy5pbXBvcnRzID0gW107CisgICAgdGhpcy5leHBvcnRzID0gW107
CisgICAgdGhpcy5nbG9iYWxzID0gW107CisgICAgdGhpcy5mdW5jdGlvbnMgPSBbXTsKKyAgICB0
aGlzLmZ1bmN0aW9uX3RhYmxlID0gW107CisgICAgdGhpcy5mdW5jdGlvbl90YWJsZV9sZW5ndGgg
PSAwOworICAgIHRoaXMuZnVuY3Rpb25fdGFibGVfaW5pdHMgPSBbXTsKKyAgICB0aGlzLnNlZ21l
bnRzID0gW107CisgICAgdGhpcy5leHBsaWNpdCA9IFtdOworICAgIHRoaXMubnVtX2ltcG9ydGVk
X2Z1bmNzID0gMDsKKyAgICB0aGlzLm51bV9pbXBvcnRlZF9nbG9iYWxzID0gMDsKKyAgICByZXR1
cm4gdGhpczsKKyAgfQorCisgIGFkZFN0YXJ0KHN0YXJ0X2luZGV4KSB7CisgICAgdGhpcy5zdGFy
dF9pbmRleCA9IHN0YXJ0X2luZGV4OworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYWRkTWVt
b3J5KG1pbiwgbWF4LCBleHApIHsKKyAgICB0aGlzLm1lbW9yeSA9IHttaW46IG1pbiwgbWF4OiBt
YXgsIGV4cDogZXhwfTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZEV4cGxpY2l0U2Vj
dGlvbihieXRlcykgeworICAgIHRoaXMuZXhwbGljaXQucHVzaChieXRlcyk7CisgICAgcmV0dXJu
IHRoaXM7CisgIH0KKworICBzdHJpbmdUb0J5dGVzKG5hbWUpIHsKKyAgICB2YXIgcmVzdWx0ID0g
bmV3IEJpbmFyeSgpOworICAgIHJlc3VsdC5lbWl0X3UzMnYobmFtZS5sZW5ndGgpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykgeworICAgICAgcmVzdWx0LmVtaXRf
dTgobmFtZS5jaGFyQ29kZUF0KGkpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQor
CisgIGFkZEN1c3RvbVNlY3Rpb24obmFtZSwgYnl0ZXMpIHsKKyAgICBuYW1lID0gdGhpcy5zdHJp
bmdUb0J5dGVzKG5hbWUpOworICAgIHZhciBsZW5ndGggPSBuZXcgQmluYXJ5KCk7CisgICAgbGVu
Z3RoLmVtaXRfdTMydihuYW1lLmxlbmd0aCArIGJ5dGVzLmxlbmd0aCk7CisgICAgdGhpcy5leHBs
aWNpdC5wdXNoKFswLCAuLi5sZW5ndGgsIC4uLm5hbWUsIC4uLmJ5dGVzXSk7CisgIH0KKworICBh
ZGRUeXBlKHR5cGUpIHsKKyAgICAvLyBUT0RPOiBjYW5vbmljYWxpemUgdHlwZXM/CisgICAgdGhp
cy50eXBlcy5wdXNoKHR5cGUpOworICAgIHJldHVybiB0aGlzLnR5cGVzLmxlbmd0aCAtIDE7Cisg
IH0KKworICBhZGRHbG9iYWwobG9jYWxfdHlwZSwgbXV0YWJsZSkgeworICAgIGxldCBnbG9iID0g
bmV3IFdhc21HbG9iYWxCdWlsZGVyKHRoaXMsIGxvY2FsX3R5cGUsIG11dGFibGUpOworICAgIGds
b2IuaW5kZXggPSB0aGlzLmdsb2JhbHMubGVuZ3RoICsgdGhpcy5udW1faW1wb3J0ZWRfZ2xvYmFs
czsKKyAgICB0aGlzLmdsb2JhbHMucHVzaChnbG9iKTsKKyAgICByZXR1cm4gZ2xvYjsKKyAgfQor
CisgIGFkZEZ1bmN0aW9uKG5hbWUsIHR5cGUpIHsKKyAgICBsZXQgdHlwZV9pbmRleCA9ICh0eXBl
b2YgdHlwZSkgPT0gIm51bWJlciIgPyB0eXBlIDogdGhpcy5hZGRUeXBlKHR5cGUpOworICAgIGxl
dCBmdW5jID0gbmV3IFdhc21GdW5jdGlvbkJ1aWxkZXIodGhpcywgbmFtZSwgdHlwZV9pbmRleCk7
CisgICAgZnVuYy5pbmRleCA9IHRoaXMuZnVuY3Rpb25zLmxlbmd0aCArIHRoaXMubnVtX2ltcG9y
dGVkX2Z1bmNzOworICAgIHRoaXMuZnVuY3Rpb25zLnB1c2goZnVuYyk7CisgICAgcmV0dXJuIGZ1
bmM7CisgIH0KKworICBhZGRJbXBvcnQobW9kdWxlID0gIiIsIG5hbWUsIHR5cGUpIHsKKyAgICBs
ZXQgdHlwZV9pbmRleCA9ICh0eXBlb2YgdHlwZSkgPT0gIm51bWJlciIgPyB0eXBlIDogdGhpcy5h
ZGRUeXBlKHR5cGUpOworICAgIHRoaXMuaW1wb3J0cy5wdXNoKHttb2R1bGU6IG1vZHVsZSwgbmFt
ZTogbmFtZSwga2luZDoga0V4dGVybmFsRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAg
IHR5cGU6IHR5cGVfaW5kZXh9KTsKKyAgICByZXR1cm4gdGhpcy5udW1faW1wb3J0ZWRfZnVuY3Mr
KzsKKyAgfQorCisgIGFkZEltcG9ydGVkR2xvYmFsKG1vZHVsZSA9ICIiLCBuYW1lLCB0eXBlKSB7
CisgICAgbGV0IG8gPSB7bW9kdWxlOiBtb2R1bGUsIG5hbWU6IG5hbWUsIGtpbmQ6IGtFeHRlcm5h
bEdsb2JhbCwgdHlwZTogdHlwZSwKKyAgICAgICAgICAgICBtdXRhYmxlOiBmYWxzZX0KKyAgICB0
aGlzLmltcG9ydHMucHVzaChvKTsKKyAgICByZXR1cm4gdGhpcy5udW1faW1wb3J0ZWRfZ2xvYmFs
cysrOworICB9CisKKyAgYWRkSW1wb3J0ZWRNZW1vcnkobW9kdWxlID0gIiIsIG5hbWUsIGluaXRp
YWwgPSAwLCBtYXhpbXVtKSB7CisgICAgbGV0IG8gPSB7bW9kdWxlOiBtb2R1bGUsIG5hbWU6IG5h
bWUsIGtpbmQ6IGtFeHRlcm5hbE1lbW9yeSwKKyAgICAgICAgICAgICBpbml0aWFsOiBpbml0aWFs
LCBtYXhpbXVtOiBtYXhpbXVtfTsKKyAgICB0aGlzLmltcG9ydHMucHVzaChvKTsKKyAgICByZXR1
cm4gdGhpczsKKyAgfQorCisgIGFkZEltcG9ydGVkVGFibGUobW9kdWxlID0gIiIsIG5hbWUsIGlu
aXRpYWwsIG1heGltdW0pIHsKKyAgICBsZXQgbyA9IHttb2R1bGU6IG1vZHVsZSwgbmFtZTogbmFt
ZSwga2luZDoga0V4dGVybmFsVGFibGUsIGluaXRpYWw6IGluaXRpYWwsCisgICAgICAgICAgICAg
bWF4aW11bTogbWF4aW11bX07CisgICAgdGhpcy5pbXBvcnRzLnB1c2gobyk7CisgIH0KKworICBh
ZGRFeHBvcnQobmFtZSwgaW5kZXgpIHsKKyAgICB0aGlzLmV4cG9ydHMucHVzaCh7bmFtZTogbmFt
ZSwga2luZDoga0V4dGVybmFsRnVuY3Rpb24sIGluZGV4OiBpbmRleH0pOworICAgIHJldHVybiB0
aGlzOworICB9CisKKyAgYWRkRXhwb3J0T2ZLaW5kKG5hbWUsIGtpbmQsIGluZGV4KSB7CisgICAg
dGhpcy5leHBvcnRzLnB1c2goe25hbWU6IG5hbWUsIGtpbmQ6IGtpbmQsIGluZGV4OiBpbmRleH0p
OworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYWRkRGF0YVNlZ21lbnQoYWRkciwgZGF0YSwg
aXNfZ2xvYmFsID0gZmFsc2UpIHsKKyAgICB0aGlzLnNlZ21lbnRzLnB1c2goe2FkZHI6IGFkZHIs
IGRhdGE6IGRhdGEsIGlzX2dsb2JhbDogaXNfZ2xvYmFsfSk7CisgICAgcmV0dXJuIHRoaXMuc2Vn
bWVudHMubGVuZ3RoIC0gMTsKKyAgfQorCisgIGV4cG9ydE1lbW9yeUFzKG5hbWUpIHsKKyAgICB0
aGlzLmV4cG9ydHMucHVzaCh7bmFtZTogbmFtZSwga2luZDoga0V4dGVybmFsTWVtb3J5LCBpbmRl
eDogMH0pOworICB9CisKKyAgYWRkRnVuY3Rpb25UYWJsZUluaXQoYmFzZSwgaXNfZ2xvYmFsLCBh
cnJheSwgaXNfaW1wb3J0ID0gZmFsc2UpIHsKKyAgICB0aGlzLmZ1bmN0aW9uX3RhYmxlX2luaXRz
LnB1c2goe2Jhc2U6IGJhc2UsIGlzX2dsb2JhbDogaXNfZ2xvYmFsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJyYXk6IGFycmF5fSk7CisgICAgaWYgKCFpc19nbG9iYWwp
IHsKKyAgICAgIHZhciBsZW5ndGggPSBiYXNlICsgYXJyYXkubGVuZ3RoOworICAgICAgaWYgKGxl
bmd0aCA+IHRoaXMuZnVuY3Rpb25fdGFibGVfbGVuZ3RoICYmICFpc19pbXBvcnQpIHsKKyAgICAg
ICAgdGhpcy5mdW5jdGlvbl90YWJsZV9sZW5ndGggPSBsZW5ndGg7CisgICAgICB9CisgICAgfQor
ICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYXBwZW5kVG9UYWJsZShhcnJheSkgeworICAgIGZv
ciAobGV0IG4gb2YgYXJyYXkpIHsKKyAgICAgIGlmICh0eXBlb2YgbiAhPSAnbnVtYmVyJykKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHRhYmxlIChlbnRyaWVzIGhhdmUgdG8gYmUg
bnVtYmVycyk6ICcgKyBhcnJheSk7CisgICAgfQorICAgIHJldHVybiB0aGlzLmFkZEZ1bmN0aW9u
VGFibGVJbml0KHRoaXMuZnVuY3Rpb25fdGFibGUubGVuZ3RoLCBmYWxzZSwgYXJyYXkpOworICB9
CisKKyAgc2V0RnVuY3Rpb25UYWJsZUxlbmd0aChsZW5ndGgpIHsKKyAgICB0aGlzLmZ1bmN0aW9u
X3RhYmxlX2xlbmd0aCA9IGxlbmd0aDsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIHRvQXJy
YXkoZGVidWcgPSBmYWxzZSkgeworICAgIGxldCBiaW5hcnkgPSBuZXcgQmluYXJ5OworICAgIGxl
dCB3YXNtID0gdGhpczsKKworICAgIC8vIEFkZCBoZWFkZXIKKyAgICBiaW5hcnkuZW1pdF9oZWFk
ZXIoKTsKKworICAgIC8vIEFkZCB0eXBlIHNlY3Rpb24KKyAgICBpZiAod2FzbS50eXBlcy5sZW5n
dGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyB0eXBlcyBAICIgKyBi
aW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa1R5cGVTZWN0aW9uQ29k
ZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20udHlwZXMubGVu
Z3RoKTsKKyAgICAgICAgZm9yIChsZXQgdHlwZSBvZiB3YXNtLnR5cGVzKSB7CisgICAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KGtXYXNtRnVuY3Rpb25UeXBlRm9ybSk7CisgICAgICAgICAgc2VjdGlv
bi5lbWl0X3UzMnYodHlwZS5wYXJhbXMubGVuZ3RoKTsKKyAgICAgICAgICBmb3IgKGxldCBwYXJh
bSBvZiB0eXBlLnBhcmFtcykgeworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KHBhcmFtKTsK
KyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYodHlwZS5yZXN1bHRzLmxl
bmd0aCk7CisgICAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHR5cGUucmVzdWx0cykgeworICAg
ICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KHJlc3VsdCk7CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgaW1wb3J0cyBzZWN0aW9uCisgICAgaWYg
KHdhc20uaW1wb3J0cy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0
dGluZyBpbXBvcnRzIEAgIiArIGJpbmFyeS5sZW5ndGgpOworICAgICAgYmluYXJ5LmVtaXRfc2Vj
dGlvbihrSW1wb3J0U2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAgICBzZWN0aW9uLmVt
aXRfdTMydih3YXNtLmltcG9ydHMubGVuZ3RoKTsKKyAgICAgICAgZm9yIChsZXQgaW1wIG9mIHdh
c20uaW1wb3J0cykgeworICAgICAgICAgIHNlY3Rpb24uZW1pdF9zdHJpbmcoaW1wLm1vZHVsZSk7
CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3N0cmluZyhpbXAubmFtZSB8fCAnJyk7CisgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3U4KGltcC5raW5kKTsKKyAgICAgICAgICBpZiAoaW1wLmtpbmQgPT0g
a0V4dGVybmFsRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGltcC50
eXBlKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGltcC5raW5kID09IGtFeHRlcm5hbEdsb2JhbCkg
eworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW1wLnR5cGUpOworICAgICAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KGltcC5tdXRhYmxlKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGltcC5r
aW5kID09IGtFeHRlcm5hbE1lbW9yeSkgeworICAgICAgICAgICAgdmFyIGhhc19tYXggPSAodHlw
ZW9mIGltcC5tYXhpbXVtKSAhPSAidW5kZWZpbmVkIjsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1p
dF91OChoYXNfbWF4ID8gMSA6IDApOyAvLyBmbGFncworICAgICAgICAgICAgc2VjdGlvbi5lbWl0
X3UzMnYoaW1wLmluaXRpYWwpOyAvLyBpbml0aWFsCisgICAgICAgICAgICBpZiAoaGFzX21heCkg
c2VjdGlvbi5lbWl0X3UzMnYoaW1wLm1heGltdW0pOyAvLyBtYXhpbXVtCisgICAgICAgICAgfSBl
bHNlIGlmIChpbXAua2luZCA9PSBrRXh0ZXJuYWxUYWJsZSkgeworICAgICAgICAgICAgc2VjdGlv
bi5lbWl0X3U4KGtXYXNtRnVuY1JlZnRpb25UeXBlRm9ybSk7CisgICAgICAgICAgICB2YXIgaGFz
X21heCA9ICh0eXBlb2YgaW1wLm1heGltdW0pICE9ICJ1bmRlZmluZWQiOworICAgICAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KGhhc19tYXggPyAxIDogMCk7IC8vIGZsYWdzCisgICAgICAgICAgICBz
ZWN0aW9uLmVtaXRfdTMydihpbXAuaW5pdGlhbCk7IC8vIGluaXRpYWwKKyAgICAgICAgICAgIGlm
IChoYXNfbWF4KSBzZWN0aW9uLmVtaXRfdTMydihpbXAubWF4aW11bSk7IC8vIG1heGltdW0KKyAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duL3Vu
c3VwcG9ydGVkIGltcG9ydCBraW5kICIgKyBpbXAua2luZCk7CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZnVuY3Rpb25zIGRlY2xhcmF0aW9u
cworICAgIGxldCBudW1fZnVuY3Rpb25fbmFtZXMgPSAwOworICAgIGxldCBuYW1lcyA9IGZhbHNl
OworICAgIGlmICh3YXNtLmZ1bmN0aW9ucy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcp
IHByaW50KCJlbWl0dGluZyBmdW5jdGlvbiBkZWNscyBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAg
ICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0Z1bmN0aW9uU2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4g
eworICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLmZ1bmN0aW9ucy5sZW5ndGgpOworICAg
ICAgICBmb3IgKGxldCBmdW5jIG9mIHdhc20uZnVuY3Rpb25zKSB7CisgICAgICAgICAgaWYgKGZ1
bmMubmFtZSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICArK251bV9mdW5jdGlvbl9uYW1l
czsKKyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoZnVuYy50eXBlX2lu
ZGV4KTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGZ1bmN0aW9u
X3RhYmxlLgorICAgIGlmICh3YXNtLmZ1bmN0aW9uX3RhYmxlX2xlbmd0aCA+IDApIHsKKyAgICAg
IGlmIChkZWJ1ZykgcHJpbnQoImVtaXR0aW5nIHRhYmxlIEAgIiArIGJpbmFyeS5sZW5ndGgpOwor
ICAgICAgYmluYXJ5LmVtaXRfc2VjdGlvbihrVGFibGVTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7
CisgICAgICAgIHNlY3Rpb24uZW1pdF91OCgxKTsgIC8vIG9uZSB0YWJsZSBlbnRyeQorICAgICAg
ICBzZWN0aW9uLmVtaXRfdTgoa1dhc21GdW5jUmVmdGlvblR5cGVGb3JtKTsKKyAgICAgICAgc2Vj
dGlvbi5lbWl0X3U4KDEpOworICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLmZ1bmN0aW9u
X3RhYmxlX2xlbmd0aCk7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZnVuY3Rpb25f
dGFibGVfbGVuZ3RoKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIC8vIEFkZCBtZW1vcnkgc2Vj
dGlvbgorICAgIGlmICh3YXNtLm1lbW9yeSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBpZiAoZGVi
dWcpIHByaW50KCJlbWl0dGluZyBtZW1vcnkgQCAiICsgYmluYXJ5Lmxlbmd0aCk7CisgICAgICBi
aW5hcnkuZW1pdF9zZWN0aW9uKGtNZW1vcnlTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAg
ICAgIHNlY3Rpb24uZW1pdF91OCgxKTsgIC8vIG9uZSBtZW1vcnkgZW50cnkKKyAgICAgICAgY29u
c3QgaGFzX21heCA9IHdhc20ubWVtb3J5Lm1heCAhPT0gdW5kZWZpbmVkOworICAgICAgICBzZWN0
aW9uLmVtaXRfdTMydihoYXNfbWF4ID8ga1Jlc2l6YWJsZU1heGltdW1GbGFnIDogMCk7CisgICAg
ICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20ubWVtb3J5Lm1pbik7CisgICAgICAgIGlmIChoYXNf
bWF4KSBzZWN0aW9uLmVtaXRfdTMydih3YXNtLm1lbW9yeS5tYXgpOworICAgICAgfSk7CisgICAg
fQorCisgICAgLy8gQWRkIGdsb2JhbCBzZWN0aW9uLgorICAgIGlmICh3YXNtLmdsb2JhbHMubGVu
Z3RoID4gMCkgeworICAgICAgaWYgKGRlYnVnKSBwcmludCAoImVtaXR0aW5nIGdsb2JhbHMgQCAi
ICsgYmluYXJ5Lmxlbmd0aCk7CisgICAgICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtHbG9iYWxTZWN0
aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZ2xv
YmFscy5sZW5ndGgpOworICAgICAgICBmb3IgKGxldCBnbG9iYWwgb2Ygd2FzbS5nbG9iYWxzKSB7
CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGdsb2JhbC50eXBlKTsKKyAgICAgICAgICBzZWN0
aW9uLmVtaXRfdTgoZ2xvYmFsLm11dGFibGUpOworICAgICAgICAgIGlmICgodHlwZW9mIGdsb2Jh
bC5pbml0X2luZGV4KSA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgLy8gRW1pdCBhIGNv
bnN0YW50IGluaXRpYWxpemVyLgorICAgICAgICAgICAgc3dpdGNoIChnbG9iYWwudHlwZSkgewor
ICAgICAgICAgICAgY2FzZSBrV2FzbUkzMjoKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4
KGtFeHBySTMyQ29uc3QpOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihnbG9iYWwu
aW5pdCk7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrV2FzbUk2NDoK
KyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHBySTY0Q29uc3QpOworICAgICAgICAg
ICAgICBzZWN0aW9uLmVtaXRfdTMydihnbG9iYWwuaW5pdCk7CisgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBrV2FzbUYzMjoKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0
X3U4KGtFeHByRjMyQ29uc3QpOworICAgICAgICAgICAgICBmMzJfdmlld1swXSA9IGdsb2JhbC5p
bml0OworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzBdKTsKKyAgICAg
ICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1sxXSk7CisgICAgICAgICAgICAgIHNl
Y3Rpb24uZW1pdF91OChieXRlX3ZpZXdbMl0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRf
dTgoYnl0ZV92aWV3WzNdKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IGtXYXNtRjY0OgorICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJGNjRDb25zdCk7
CisgICAgICAgICAgICAgIGY2NF92aWV3WzBdID0gZ2xvYmFsLmluaXQ7CisgICAgICAgICAgICAg
IHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbMF0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVt
aXRfdTgoYnl0ZV92aWV3WzFdKTsKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVf
dmlld1syXSk7CisgICAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbM10pOwor
ICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzRdKTsKKyAgICAgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1s1XSk7CisgICAgICAgICAgICAgIHNlY3Rpb24u
ZW1pdF91OChieXRlX3ZpZXdbNl0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0
ZV92aWV3WzddKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEVtaXQgYSBnbG9iYWwtaW5kZXggaW5pdGlhbGl6
ZXIuCisgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJHZXRHbG9iYWwpOworICAgICAg
ICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoZ2xvYmFsLmluaXRfaW5kZXgpOworICAgICAgICAgIH0K
KyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJFbmQpOyAgLy8gZW5kIG9mIGluaXQgZXhw
cmVzc2lvbgorICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZXhwb3J0
IHRhYmxlLgorICAgIHZhciBtZW1fZXhwb3J0ID0gKHdhc20ubWVtb3J5ICE9PSB1bmRlZmluZWQg
JiYgd2FzbS5tZW1vcnkuZXhwKTsKKyAgICB2YXIgZXhwb3J0c19jb3VudCA9IHdhc20uZXhwb3J0
cy5sZW5ndGggKyAobWVtX2V4cG9ydCA/IDEgOiAwKTsKKyAgICBpZiAoZXhwb3J0c19jb3VudCA+
IDApIHsKKyAgICAgIGlmIChkZWJ1ZykgcHJpbnQoImVtaXR0aW5nIGV4cG9ydHMgQCAiICsgYmlu
YXJ5Lmxlbmd0aCk7CisgICAgICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtFeHBvcnRTZWN0aW9uQ29k
ZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGV4cG9ydHNfY291bnQp
OworICAgICAgICBmb3IgKGxldCBleHAgb2Ygd2FzbS5leHBvcnRzKSB7CisgICAgICAgICAgc2Vj
dGlvbi5lbWl0X3N0cmluZyhleHAubmFtZSk7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGV4
cC5raW5kKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihleHAuaW5kZXgpOworICAgICAg
ICB9CisgICAgICAgIGlmIChtZW1fZXhwb3J0KSB7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3N0
cmluZygibWVtb3J5Iik7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHRlcm5hbE1lbW9y
eSk7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KDApOworICAgICAgICB9CisgICAgICB9KTsK
KyAgICB9CisKKyAgICAvLyBBZGQgc3RhcnQgZnVuY3Rpb24gc2VjdGlvbi4KKyAgICBpZiAod2Fz
bS5zdGFydF9pbmRleCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJl
bWl0dGluZyBzdGFydCBmdW5jdGlvbiBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFy
eS5lbWl0X3NlY3Rpb24oa1N0YXJ0U2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAgICBz
ZWN0aW9uLmVtaXRfdTMydih3YXNtLnN0YXJ0X2luZGV4KTsKKyAgICAgIH0pOworICAgIH0KKwor
ICAgIC8vIEFkZCB0YWJsZSBlbGVtZW50cy4KKyAgICBpZiAod2FzbS5mdW5jdGlvbl90YWJsZV9p
bml0cy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyB0YWJs
ZSBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0VsZW1l
bnRTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHZhciBpbml0cyA9IHdhc20uZnVu
Y3Rpb25fdGFibGVfaW5pdHM7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGluaXRzLmxlbmd0
aCk7CisKKyAgICAgICAgZm9yIChsZXQgaW5pdCBvZiBpbml0cykgeworICAgICAgICAgIHNlY3Rp
b24uZW1pdF91OCgwKTsgLy8gdGFibGUgaW5kZXgKKyAgICAgICAgICBpZiAoaW5pdC5pc19nbG9i
YWwpIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckdldEdsb2JhbCk7CisgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckkzMkNvbnN0
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW5pdC5iYXNlKTsK
KyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJFbmQpOworICAgICAgICAgIHNlY3Rpb24u
ZW1pdF91MzJ2KGluaXQuYXJyYXkubGVuZ3RoKTsKKyAgICAgICAgICBmb3IgKGxldCBpbmRleCBv
ZiBpbml0LmFycmF5KSB7CisgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihpbmRleCk7Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZnVu
Y3Rpb24gYm9kaWVzLgorICAgIGlmICh3YXNtLmZ1bmN0aW9ucy5sZW5ndGggPiAwKSB7CisgICAg
ICAvLyBlbWl0IGZ1bmN0aW9uIGJvZGllcworICAgICAgaWYgKGRlYnVnKSBwcmludCgiZW1pdHRp
bmcgY29kZSBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24o
a0NvZGVTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2
KHdhc20uZnVuY3Rpb25zLmxlbmd0aCk7CisgICAgICAgIGZvciAobGV0IGZ1bmMgb2Ygd2FzbS5m
dW5jdGlvbnMpIHsKKyAgICAgICAgICAvLyBGdW5jdGlvbiBib2R5IGxlbmd0aCB3aWxsIGJlIHBh
dGNoZWQgbGF0ZXIuCisgICAgICAgICAgbGV0IGxvY2FsX2RlY2xzID0gW107CisgICAgICAgICAg
bGV0IGwgPSBmdW5jLmxvY2FsczsKKyAgICAgICAgICBpZiAobCAhPT0gdW5kZWZpbmVkKSB7Cisg
ICAgICAgICAgICBsZXQgbG9jYWxfZGVjbHNfY291bnQgPSAwOworICAgICAgICAgICAgaWYgKGwu
aTMyX2NvdW50ID4gMCkgeworICAgICAgICAgICAgICBsb2NhbF9kZWNscy5wdXNoKHtjb3VudDog
bC5pMzJfY291bnQsIHR5cGU6IGtXYXNtSTMyfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAobC5pNjRfY291bnQgPiAwKSB7CisgICAgICAgICAgICAgIGxvY2FsX2RlY2xzLnB1c2go
e2NvdW50OiBsLmk2NF9jb3VudCwgdHlwZToga1dhc21JNjR9KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChsLmYzMl9jb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgbG9jYWxfZGVj
bHMucHVzaCh7Y291bnQ6IGwuZjMyX2NvdW50LCB0eXBlOiBrV2FzbUYzMn0pOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKGwuZjY0X2NvdW50ID4gMCkgeworICAgICAgICAgICAgICBs
b2NhbF9kZWNscy5wdXNoKHtjb3VudDogbC5mNjRfY291bnQsIHR5cGU6IGtXYXNtRjY0fSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgbGV0IGhlYWRlciA9IG5ldyBC
aW5hcnk7CisgICAgICAgICAgaGVhZGVyLmVtaXRfdTMydihsb2NhbF9kZWNscy5sZW5ndGgpOwor
ICAgICAgICAgIGZvciAobGV0IGRlY2wgb2YgbG9jYWxfZGVjbHMpIHsKKyAgICAgICAgICAgIGhl
YWRlci5lbWl0X3UzMnYoZGVjbC5jb3VudCk7CisgICAgICAgICAgICBoZWFkZXIuZW1pdF91OChk
ZWNsLnR5cGUpOworICAgICAgICAgIH0KKworICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGhl
YWRlci5sZW5ndGggKyBmdW5jLmJvZHkubGVuZ3RoKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRf
Ynl0ZXMoaGVhZGVyKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfYnl0ZXMoZnVuYy5ib2R5KTsK
KyAgICAgICAgfQorICAgICAgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGRhdGEgc2VnbWVudHMu
CisgICAgaWYgKHdhc20uc2VnbWVudHMubGVuZ3RoID4gMCkgeworICAgICAgaWYgKGRlYnVnKSBw
cmludCgiZW1pdHRpbmcgZGF0YSBzZWdtZW50cyBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAg
IGJpbmFyeS5lbWl0X3NlY3Rpb24oa0RhdGFTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAg
ICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uc2VnbWVudHMubGVuZ3RoKTsKKyAgICAgICAgZm9y
IChsZXQgc2VnIG9mIHdhc20uc2VnbWVudHMpIHsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgo
MCk7ICAvLyBsaW5lYXIgbWVtb3J5IGluZGV4IDAKKyAgICAgICAgICBpZiAoc2VnLmlzX2dsb2Jh
bCkgeworICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZXIgaXMgYSBnbG9iYWwgdmFyaWFibGUKKyAg
ICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckdldEdsb2JhbCk7CisgICAgICAgICAgICBz
ZWN0aW9uLmVtaXRfdTMydihzZWcuYWRkcik7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIGluaXRpYWxpemVyIGlzIGEgY29uc3RhbnQKKyAgICAgICAgICAgIHNlY3Rpb24uZW1p
dF91OChrRXhwckkzMkNvbnN0KTsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHNlZy5h
ZGRyKTsKKyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHByRW5kKTsK
KyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihzZWcuZGF0YS5sZW5ndGgpOworICAgICAgICAg
IHNlY3Rpb24uZW1pdF9ieXRlcyhzZWcuZGF0YSk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAg
IH0KKworICAgIC8vIEFkZCBhbnkgZXhwbGljaXRseSBhZGRlZCBzZWN0aW9ucworICAgIGZvciAo
bGV0IGV4cCBvZiB3YXNtLmV4cGxpY2l0KSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0
dGluZyBleHBsaWNpdCBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X2J5
dGVzKGV4cCk7CisgICAgfQorCisgICAgLy8gQWRkIGZ1bmN0aW9uIG5hbWVzLgorICAgIGlmIChu
dW1fZnVuY3Rpb25fbmFtZXMgPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCdlbWl0dGlu
ZyBuYW1lcyBAICcgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24o
a1Vua25vd25TZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF9z
dHJpbmcoJ25hbWUnKTsKKyAgICAgICAgc2VjdGlvbi5lbWl0X3NlY3Rpb24oa0Z1bmN0aW9uTmFt
ZXNDb2RlLCBuYW1lX3NlY3Rpb24gPT4geworICAgICAgICAgIG5hbWVfc2VjdGlvbi5lbWl0X3Uz
MnYobnVtX2Z1bmN0aW9uX25hbWVzKTsKKyAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIHdhc20u
ZnVuY3Rpb25zKSB7CisgICAgICAgICAgICBpZiAoZnVuYy5uYW1lID09PSB1bmRlZmluZWQpIGNv
bnRpbnVlOworICAgICAgICAgICAgbmFtZV9zZWN0aW9uLmVtaXRfdTMydihmdW5jLmluZGV4KTsK
KyAgICAgICAgICAgIG5hbWVfc2VjdGlvbi5lbWl0X3N0cmluZyhmdW5jLm5hbWUpOworICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gYmluYXJ5
OworICB9CisKKyAgdG9CdWZmZXIoZGVidWcgPSBmYWxzZSkgeworICAgIGxldCBieXRlcyA9IHRo
aXMudG9BcnJheShkZWJ1Zyk7CisgICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRl
cy5sZW5ndGgpOworICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICBsZXQgdmFsID0g
Ynl0ZXNbaV07CisgICAgICBpZiAoKHR5cGVvZiB2YWwpID09ICJzdHJpbmciKSB2YWwgPSB2YWwu
Y2hhckNvZGVBdCgwKTsKKyAgICAgIHZpZXdbaV0gPSB2YWwgfCAwOworICAgIH0KKyAgICByZXR1
cm4gYnVmZmVyOworICB9CisKKyAgaW5zdGFudGlhdGUoZmZpKSB7CisgICAgbGV0IG1vZHVsZSA9
IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUodGhpcy50b0J1ZmZlcigpKTsKKyAgICBsZXQgaW5zdGFu
Y2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCBmZmkpOworICAgIHJldHVybiBp
bnN0YW5jZTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNw
ZWMtaGFybmVzcy93YXN0LmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVz
cy93YXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYTcxYTMzMjhlNTMyYmJiMDcxMzhmMTA1NGM0ZDdmNWY3
Njc5YTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1o
YXJuZXNzL3dhc3QuanMKQEAgLTAsMCArMSwyOTc3NyBAQAorLy8gRE8gTk9UIEVESVQuIEdlbmVy
YXRlZCBmcm9tIFdlYkFzc2VtYmx5IHNwZWMgaW50ZXJwcmV0ZXIKKworbGV0IFdlYkFzc2VtYmx5
VGV4dCA9IChmdW5jdGlvbigpIHsKK8KgIGxldCBfcmVnaXN0cnkgPSB7X19wcm90b19fOiBudWxs
fTsKKyAgZnVuY3Rpb24gbm9ybWFsaXplKGZpbGUpIHsKKyAgICByZXR1cm4gZmlsZS5zcGxpdCgn
LycpLnJldmVyc2UoKVswXS5zcGxpdCgnLicpWzBdOworICB9CivCoCBmdW5jdGlvbiByZXF1aXJl
KGZpbGUpIHsKK8KgIMKgIGxldCBuYW1lID0gbm9ybWFsaXplKGZpbGUpOworICAgIGlmICghKG5h
bWUgaW4gX3JlZ2lzdHJ5KSkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIG1vZHVs
ZTogJyArIG5hbWUpCivCoCDCoCB9IGVsc2UgaWYgKHR5cGVvZiBfcmVnaXN0cnlbbmFtZV0gPT09
ICdmdW5jdGlvbicpIHsKKworCivCoCDCoCDCoCBsZXQgZiA9IF9yZWdpc3RyeVtuYW1lXTsKK8Kg
IMKgIMKgIF9yZWdpc3RyeVtuYW1lXSA9IGZ1bmN0aW9uKCkgeyB0aHJvdyBuZXcgRXJyb3IoJ2N5
Y2xpYyBtb2R1bGU6ICcgKyBuYW1lKSB9OworwqAgwqAgwqAgX3JlZ2lzdHJ5W25hbWVdID0gZigp
OworwqAgwqAgfQorwqAgwqAgcmV0dXJuIF9yZWdpc3RyeVtuYW1lXTsKK8KgIH0KKworCisgIF9y
ZWdpc3RyeVsnYXJyYW5nZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9
OworLy8vLy8vLy8gc3RhcnQgb2YgYXJyYW5nZS5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5
IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNl
IHN0cmljdCc7CisKK3ZhciBGMzIgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjMy
Iik7Cit2YXIgRjY0ICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Y2NCIpOwordmFy
IEkzMiAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9pMzIiKTsKK3ZhciBJNjQgICAg
ICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vaTY0Iik7Cit2YXIgTGliICAgICAgICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2xpYiIpOwordmFyIExpc3QgICAgICAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBCbG9jayAgICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFyIEN1
cnJ5ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5
Iik7Cit2YXIgVHlwZXMgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3R5cGVzIik7Cit2
YXIgQnVmZmVyICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
YnVmZmVyIik7Cit2YXIgRGVjb2RlICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2RlY29k
ZSIpOwordmFyIEVuY29kZSAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9lbmNvZGUiKTsK
K3ZhciBQcmludGYgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9q
cy9wcmludGYiKTsKK3ZhciBTb3VyY2UgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc291
cmNlIik7Cit2YXIgJCRTdHJpbmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvc3RyaW5nIik7Cit2YXIgVmFsdWVzICAgICAgICAgICAgICAgICAgPSByZXF1aXJl
KCIuL3ZhbHVlcyIpOwordmFyIENhbWxfaW50MzIgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2NhbWxfaW50MzIiKTsKK3ZhciBQZXJ2YXNpdmVzICAgICAgICAgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7Cit2YXIgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9idWls
dGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gYWRkX2hleF9jaGFyKGJ1ZiwgYykgeworICBy
ZXR1cm4gQ3VycnkuXzEoUHJpbnRmLmJwcmludGYoYnVmLCAvKiBGb3JtYXQgKi9bCisgICAgICAg
ICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAg
ICAgICAgICAgIC8qICJcXCIgKi85MiwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9C
bG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBaZXJvcyAqLzIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICBdKQorICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICJcXCUwMngi
CisgICAgICAgICAgICAgICAgXSksIGMpOworfQorCitmdW5jdGlvbiBhZGRfY2hhcihidWYsIGMp
IHsKKyAgaWYgKGMgPCAvKiAiICIgKi8zMiB8fCBjID49IC8qICJcMTI3IiAqLzEyNykgeworICAg
IHJldHVybiBhZGRfaGV4X2NoYXIoYnVmLCBjKTsKKyAgfQorICBlbHNlIHsKKyAgICBpZiAoYyA9
PT0gLyogIlwiIiAqLzM0IHx8IGMgPT09IC8qICJcXCIgKi85MikgeworICAgICAgQnVmZmVyLmFk
ZF9jaGFyKGJ1ZiwgLyogIlxcIiAqLzkyKTsKKyAgICB9CisgICAgcmV0dXJuIEJ1ZmZlci5hZGRf
Y2hhcihidWYsIGMpOworICB9Cit9CisKK2Z1bmN0aW9uIHN0cmluZ193aXRoKGFkZF9jaGFyLCBz
KSB7CisgIHZhciBidWYgPSBCdWZmZXIuY3JlYXRlKENhbWxfaW50MzIuaW11bCgzLCBzLmxlbmd0
aCkgKyAyIHwgMCk7CisgIEJ1ZmZlci5hZGRfY2hhcihidWYsIC8qICJcIiIgKi8zNCk7CisgICQk
U3RyaW5nLml0ZXIoQ3VycnkuXzEoYWRkX2NoYXIsIGJ1ZiksIHMpOworICBCdWZmZXIuYWRkX2No
YXIoYnVmLCAvKiAiXCIiICovMzQpOworICByZXR1cm4gQnVmZmVyLmNvbnRlbnRzKGJ1Zik7Cit9
CisKK2Z1bmN0aW9uIGxpc3Rfb2Zfb3B0KHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHJl
dHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIHBhcmFtWzBdLAorICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8wOwor
ICB9Cit9CisKK2Z1bmN0aW9uIGJyZWFrX2J5dGVzKHMpIHsKKyAgdmFyIHNzID0gQ3VycnkuXzIo
TGliLiQkU3RyaW5nWy8qIGJyZWFrdXAgKi8wXSwgcywgMTYpOworICB2YXIgZiA9IGZ1bmN0aW9u
IChwYXJhbSkgeworICAgIHJldHVybiAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRo
KGFkZF9oZXhfY2hhciwgcGFyYW0pXSk7CisgIH07CisgIHJldHVybiBMaXN0Lm1hcChmLCBzcyk7
Cit9CisKK2Z1bmN0aW9uIGRlY2xzKGtpbmQsIHRzKSB7CisgIHZhciBoZWFkID0ga2luZDsKKyAg
dmFyIGYgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2NrLl9f
KDAsIFtUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSldKTsKKyAgfTsKKyAgdmFyIHhz
ID0gdHM7CisgIGlmICh4cykgeworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIC8q
IE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgaGVhZCwKKyAgICAgICAgICAg
ICAgICBMaXN0Lm1hcChmLCB4cykKKyAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAvKiBb
XSAqLzAKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7
CisgIH0KK30KKworZnVuY3Rpb24gZnVuY190eXBlKHBhcmFtKSB7CisgIHJldHVybiAvKiBOb2Rl
ICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgImZ1bmMiLAorICAgICAgICAgICAgUGVydmFz
aXZlcy4kYXQoZGVjbHMoInBhcmFtIiwgcGFyYW1bMF0pLCBkZWNscygicmVzdWx0IiwgcGFyYW1b
MV0pKQorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBsaW1pdHMobmF0LCBwYXJhbSkgewor
ICB2YXIgeHMgPSBsaXN0X29mX29wdChwYXJhbVsvKiBtYXggKi8xXSk7CisgIHJldHVybiAkJFN0
cmluZy5jb25jYXQoIiAiLCAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzEobmF0LCBw
YXJhbVsvKiBtaW4gKi8wXSksCisgICAgICAgICAgICAgIExpc3QubWFwKG5hdCwgeHMpCisgICAg
ICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gZ2xvYmFsX3R5cGUocGFyYW0pIHsKKyAgdmFyIHQg
PSBwYXJhbVswXTsKKyAgaWYgKHBhcmFtWzFdICE9PSAwKSB7CisgICAgcmV0dXJuIC8qIE5vZGUg
Ki9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICJtdXQiLAorICAgICAgICAgICAgICAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW1R5cGVzLnN0cmlu
Z19vZl92YWx1ZV90eXBlKHQpXSksCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgIF0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBB
dG9tICovQmxvY2suX18oMCwgW1R5cGVzLnN0cmluZ19vZl92YWx1ZV90eXBlKHQpXSk7CisgIH0K
K30KKworZnVuY3Rpb24gdGVzdG9wKF8sIF8kMSkgeworICByZXR1cm4gImVxeiI7Cit9CisKK2Z1
bmN0aW9uIHJlbG9wKF8sIHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAg
OiAKKyAgICAgICAgcmV0dXJuICJlcSI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAi
bmUiOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gImx0X3MiOworICAgIGNhc2UgMyA6
IAorICAgICAgICByZXR1cm4gImx0X3UiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4g
Imd0X3MiOworICAgIGNhc2UgNSA6IAorICAgICAgICByZXR1cm4gImd0X3UiOworICAgIGNhc2Ug
NiA6IAorICAgICAgICByZXR1cm4gImxlX3MiOworICAgIGNhc2UgNyA6IAorICAgICAgICByZXR1
cm4gImxlX3UiOworICAgIGNhc2UgOCA6IAorICAgICAgICByZXR1cm4gImdlX3MiOworICAgIGNh
c2UgOSA6IAorICAgICAgICByZXR1cm4gImdlX3UiOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9u
IHVub3AoXywgcGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAg
ICAgICByZXR1cm4gImNseiI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAiY3R6IjsK
KyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuICJwb3BjbnQiOworICAgIAorICB9Cit9CisK
K2Z1bmN0aW9uIGJpbm9wKF8sIHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNl
IDAgOiAKKyAgICAgICAgcmV0dXJuICJhZGQiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1
cm4gInN1YiI7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAibXVsIjsKKyAgICBjYXNl
IDMgOiAKKyAgICAgICAgcmV0dXJuICJkaXZfcyI7CisgICAgY2FzZSA0IDogCisgICAgICAgIHJl
dHVybiAiZGl2X3UiOworICAgIGNhc2UgNSA6IAorICAgICAgICByZXR1cm4gInJlbV9zIjsKKyAg
ICBjYXNlIDYgOiAKKyAgICAgICAgcmV0dXJuICJyZW1fdSI7CisgICAgY2FzZSA3IDogCisgICAg
ICAgIHJldHVybiAiYW5kIjsKKyAgICBjYXNlIDggOiAKKyAgICAgICAgcmV0dXJuICJvciI7Cisg
ICAgY2FzZSA5IDogCisgICAgICAgIHJldHVybiAieG9yIjsKKyAgICBjYXNlIDEwIDogCisgICAg
ICAgIHJldHVybiAic2hsIjsKKyAgICBjYXNlIDExIDogCisgICAgICAgIHJldHVybiAic2hyX3Mi
OworICAgIGNhc2UgMTIgOiAKKyAgICAgICAgcmV0dXJuICJzaHJfdSI7CisgICAgY2FzZSAxMyA6
IAorICAgICAgICByZXR1cm4gInJvdGwiOworICAgIGNhc2UgMTQgOiAKKyAgICAgICAgcmV0dXJu
ICJyb3RyIjsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBjdnRvcCh4eCwgcGFyYW0pIHsKKyAg
c3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gImV4dGVuZF9z
L2kzMiI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAiZXh0ZW5kX3UvaTMyIjsKKyAg
ICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuICJ3cmFwL2k2NCI7CisgICAgY2FzZSAzIDogCisg
ICAgICAgIHJldHVybiAidHJ1bmNfcy9mMzIiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1
cm4gInRydW5jX3UvZjMyIjsKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuICJ0cnVuY19z
L2Y2NCI7CisgICAgY2FzZSA2IDogCisgICAgICAgIHJldHVybiAidHJ1bmNfdS9mNjQiOworICAg
IGNhc2UgNyA6IAorICAgICAgICByZXR1cm4gInJlaW50ZXJwcmV0L2YiICsgeHg7CisgICAgCisg
IH0KK30KKworZnVuY3Rpb24gdGVzdG9wJDEoXywgXyQxKSB7CisgIHRocm93IFsKKyAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgIFsKKyAgICAg
ICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0
ZXIvX2J1aWxkL2pzbGliL3NyYy9hcnJhbmdlLm1sIiwKKyAgICAgICAgICAxMjgsCisgICAgICAg
ICAgMjcKKyAgICAgICAgXQorICAgICAgXTsKK30KKworZnVuY3Rpb24gcmVsb3AkMShfLCBwYXJh
bSkgeworICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVybiAi
ZXEiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gIm5lIjsKKyAgICBjYXNlIDIgOiAK
KyAgICAgICAgcmV0dXJuICJsdCI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAiZ3Qi
OworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gImxlIjsKKyAgICBjYXNlIDUgOiAKKyAg
ICAgICAgcmV0dXJuICJnZSI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gdW5vcCQxKF8sIHBh
cmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJu
ICJuZWciOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gImFicyI7CisgICAgY2FzZSAy
IDogCisgICAgICAgIHJldHVybiAiY2VpbCI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVy
biAiZmxvb3IiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gInRydW5jIjsKKyAgICBj
YXNlIDUgOiAKKyAgICAgICAgcmV0dXJuICJuZWFyZXN0IjsKKyAgICBjYXNlIDYgOiAKKyAgICAg
ICAgcmV0dXJuICJzcXJ0IjsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBiaW5vcCQxKF8sIHBh
cmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJu
ICJhZGQiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gInN1YiI7CisgICAgY2FzZSAy
IDogCisgICAgICAgIHJldHVybiAibXVsIjsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAgcmV0dXJu
ICJkaXYiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gIm1pbiI7CisgICAgY2FzZSA1
IDogCisgICAgICAgIHJldHVybiAibWF4IjsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgcmV0dXJu
ICJjb3B5c2lnbiI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gY3Z0b3AkMSh4eCwgcGFyYW0p
IHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gImNv
bnZlcnRfcy9pMzIiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfdS9p
MzIiOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfcy9pNjQiOworICAg
IGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfdS9pNjQiOworICAgIGNhc2UgNCA6
IAorICAgICAgICByZXR1cm4gInByb21vdGUvZjMyIjsKKyAgICBjYXNlIDUgOiAKKyAgICAgICAg
cmV0dXJuICJkZW1vdGUvZjY0IjsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgcmV0dXJuICJyZWlu
dGVycHJldC9pIiArIHh4OworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIG9wZXIocGFyYW0sIG9w
KSB7CisgIHZhciBmbG9hdG9wID0gcGFyYW1bMV07CisgIHZhciBpbnRvcCA9IHBhcmFtWzBdOwor
ICB2YXIgJGpzOworICBzd2l0Y2ggKG9wLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAg
ICAgJGpzID0gQ3VycnkuXzIoaW50b3AsICIzMiIsIG9wWzBdKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAxIDogCisgICAgICAgICRqcyA9IEN1cnJ5Ll8yKGludG9wLCAiNjQiLCBvcFswXSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMiA6IAorICAgICAgICAkanMgPSBDdXJyeS5fMihm
bG9hdG9wLCAiMzIiLCBvcFswXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMyA6IAorICAg
ICAgICAkanMgPSBDdXJyeS5fMihmbG9hdG9wLCAiNjQiLCBvcFswXSk7CisgICAgICAgIGJyZWFr
OworICAgIAorICB9CisgIHJldHVybiBUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShWYWx1ZXMu
dHlwZV9vZihvcCkpICsgKCIuIiArICRqcyk7Cit9CisKK3ZhciBwYXJ0aWFsX2FyZyA9IC8qIHR1
cGxlICovWworICB1bm9wLAorICB1bm9wJDEKK107CisKK2Z1bmN0aW9uIHVub3AkMihwYXJhbSkg
eworICByZXR1cm4gb3BlcihwYXJ0aWFsX2FyZywgcGFyYW0pOworfQorCit2YXIgcGFydGlhbF9h
cmckMSA9IC8qIHR1cGxlICovWworICBiaW5vcCwKKyAgYmlub3AkMQorXTsKKworZnVuY3Rpb24g
Ymlub3AkMihwYXJhbSkgeworICByZXR1cm4gb3BlcihwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7Cit9
CisKK3ZhciBwYXJ0aWFsX2FyZyQyID0gLyogdHVwbGUgKi9bCisgIHRlc3RvcCwKKyAgdGVzdG9w
JDEKK107CisKK2Z1bmN0aW9uIHRlc3RvcCQyKHBhcmFtKSB7CisgIHJldHVybiBvcGVyKHBhcnRp
YWxfYXJnJDIsIHBhcmFtKTsKK30KKwordmFyIHBhcnRpYWxfYXJnJDMgPSAvKiB0dXBsZSAqL1sK
KyAgcmVsb3AsCisgIHJlbG9wJDEKK107CisKK2Z1bmN0aW9uIHJlbG9wJDIocGFyYW0pIHsKKyAg
cmV0dXJuIG9wZXIocGFydGlhbF9hcmckMywgcGFyYW0pOworfQorCit2YXIgcGFydGlhbF9hcmck
NCA9IC8qIHR1cGxlICovWworICBjdnRvcCwKKyAgY3Z0b3AkMQorXTsKKworZnVuY3Rpb24gY3Z0
b3AkMihwYXJhbSkgeworICByZXR1cm4gb3BlcihwYXJ0aWFsX2FyZyQ0LCBwYXJhbSk7Cit9CisK
K2Z1bmN0aW9uIG1lbV9zaXplKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNl
IDAgOiAKKyAgICAgICAgcmV0dXJuICI4IjsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJu
ICIxNiI7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAiMzIiOworICAgIAorICB9Cit9
CisKK2Z1bmN0aW9uIGV4dGVuc2lvbihwYXJhbSkgeworICBpZiAocGFyYW0gIT09IDApIHsKKyAg
ICByZXR1cm4gIl91IjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gIl9zIjsKKyAgfQorfQor
CitmdW5jdGlvbiBtZW1vcChuYW1lLCBwYXJhbSkgeworICB2YXIgb2Zmc2V0ID0gcGFyYW1bLyog
b2Zmc2V0ICovMl07CisgIHZhciBhbGlnbiA9IHBhcmFtWy8qIGFsaWduICovMV07CisgIHZhciB0
eSA9IHBhcmFtWy8qIHR5ICovMF07CisgIHJldHVybiBUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlw
ZSh0eSkgKyAoIi4iICsgKG5hbWUgKyAoKAorICAgICAgICAgICAgICAgIG9mZnNldCA/ICIgb2Zm
c2V0PSIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG9mZnNldCkgOiAiIgorICAgICAgICAg
ICAgICApICsgKAorICAgICAgICAgICAgICAgICgxIDw8IGFsaWduKSA9PT0gVHlwZXMuc2l6ZSh0
eSkgPyAiIiA6ICIgYWxpZ249IiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgQ3VycnkuXzEo
STMyLm9mX2ludF91LCAoMSA8PCBhbGlnbikpKQorICAgICAgICAgICAgICApKSkpOworfQorCitm
dW5jdGlvbiBsb2Fkb3Aob3ApIHsKKyAgdmFyIG1hdGNoID0gb3BbLyogc3ogKi8zXTsKKyAgaWYg
KG1hdGNoKSB7CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICByZXR1cm4gbWVtb3Ao
ImxvYWQiICsgKG1lbV9zaXplKG1hdGNoJDFbMF0pICsgZXh0ZW5zaW9uKG1hdGNoJDFbMV0pKSwg
b3ApOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBtZW1vcCgibG9hZCIsIG9wKTsKKyAgfQor
fQorCitmdW5jdGlvbiBzdG9yZW9wKG9wKSB7CisgIHZhciBtYXRjaCA9IG9wWy8qIHN6ICovM107
CisgIGlmIChtYXRjaCkgeworICAgIHJldHVybiBtZW1vcCgic3RvcmUiICsgbWVtX3NpemUobWF0
Y2hbMF0pLCBvcCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG1lbW9wKCJzdG9yZSIsIG9w
KTsKKyAgfQorfQorCitmdW5jdGlvbiAkJHZhcih4KSB7CisgIHJldHVybiBDdXJyeS5fMShJMzIu
dG9fc3RyaW5nX3UsIHhbLyogaXQgKi8xXSk7Cit9CisKK2Z1bmN0aW9uIGNvbnN0b3Aodikgewor
ICByZXR1cm4gVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUoVmFsdWVzLnR5cGVfb2YodlsvKiBp
dCAqLzFdKSkgKyAiLmNvbnN0IjsKK30KKworZnVuY3Rpb24gaW5zdHIoZSkgeworICB2YXIgbWF0
Y2ggPSBlWy8qIGl0ICovMV07CisgIHZhciBtYXRjaCQxOworICBpZiAodHlwZW9mIG1hdGNoID09
PSAibnVtYmVyIikgeworICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAgIGNhc2UgMCA6IAorICAg
ICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJ1bnJlYWNoYWJsZSIs
CisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAg
ICAgICAgIm5vcCIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxl
ICovWworICAgICAgICAgICAgInJldHVybiIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgbWF0
Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgImRyb3AiLAorICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6IAor
ICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJzZWxlY3QiLAor
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgNSA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICJjdXJyZW50X21lbW9yeSIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBd
OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgbWF0Y2gkMSA9
IC8qIHR1cGxlICovWworICAgICAgICAgICAgImdyb3dfbWVtb3J5IiwKKyAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9Cisg
IH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChtYXRjaC50YWcgfCAwKSB7CisgICAgICBjYXNlIDAg
OiAKKyAgICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgcmV0
dXJuIC8qIEF0b20gKi9CbG9jay5fXygwLCBbVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUocGFy
YW0pXSk7CisgICAgICAgICAgfTsKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAiYmxvY2siLAorICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoTGlzdC5tYXAo
ZiwgbWF0Y2hbMF0pLCBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMV0pKQorICAgICAgICAgIF07Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB2YXIgZiQxID0gZnVu
Y3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2NrLl9fKDAs
IFtUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSldKTsKKyAgICAgICAgICB9OworICAg
ICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJsb29wIiwKKyAgICAg
ICAgICAgIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFwKGYkMSwgbWF0Y2hbMF0pLCBMaXN0Lm1hcChp
bnN0ciwgbWF0Y2hbMV0pKQorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICB2YXIgZiQyID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAg
ICAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBlcy5zdHJpbmdfb2ZfdmFsdWVf
dHlwZShwYXJhbSldKTsKKyAgICAgICAgICB9OworICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICAgICJpZiIsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChMaXN0
Lm1hcChmJDIsIG1hdGNoWzBdKSwgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAvKiBOb2Rl
ICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAgICAgICJ0aGVuIiwKKyAgICAgICAg
ICAgICAgICAgICAgICBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMV0pCisgICAgICAgICAgICAgICAg
ICAgIF0pLAorICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAiZWxzZSIs
CisgICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMl0pCisgICAg
ICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgXTsKKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICAgICJiciAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXRj
aFswXVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAiYnJfaWYgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdf
dSwgbWF0Y2hbMF1bLyogaXQgKi8xXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIHhz
ID0gUGVydmFzaXZlcy4kYXQobWF0Y2hbMF0sIC8qIDo6ICovWworICAgICAgICAgICAgICAgIG1h
dGNoWzFdLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdKTsKKyAg
ICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAiYnJfdGFibGUgIiAr
ICQkU3RyaW5nLmNvbmNhdCgiICIsIExpc3QubWFwKCQkdmFyLCB4cykpLAorICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6
IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJjYWxsICIg
KyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pLAorICAgICAg
ICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgNyA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJj
YWxsX2luZGlyZWN0ICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0
ICovMV0pLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sK
KyAgICAgICAgICAgICJnZXRfbG9jYWwgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0
Y2hbMF1bLyogaXQgKi8xXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8q
IHR1cGxlICovWworICAgICAgICAgICAgInNldF9sb2NhbCAiICsgQ3VycnkuXzEoSTMyLnRvX3N0
cmluZ191LCBtYXRjaFswXVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAg
ICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEwIDogCisgICAgICAgICAg
bWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgInRlZV9sb2NhbCAiICsgQ3Vycnku
XzEoSTMyLnRvX3N0cmluZ191LCBtYXRjaFswXVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDExIDog
CisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgImdldF9nbG9i
YWwgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSksCisg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAxMiA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICJzZXRfZ2xvYmFsICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8q
IGl0ICovMV0pLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICBsb2Fkb3AobWF0Y2hbMF0pLAorICAgICAgICAgICAgLyogW10gKi8w
CisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAg
ICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBzdG9yZW9wKG1hdGNoWzBd
KSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgdmFyIGxpdCA9IG1hdGNoWzBdOworICAgICAg
ICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIGNvbnN0b3AobGl0KSArICgi
ICIgKyBWYWx1ZXMuc3RyaW5nX29mX3ZhbHVlKGxpdFsvKiBpdCAqLzFdKSksCisgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAx
NiA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5
Ll8xKHRlc3RvcCQyLCBtYXRjaFswXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxNyA6IAorICAgICAgICAgIG1hdGNo
JDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKHJlbG9wJDIsIG1hdGNoWzBd
KSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIDE4IDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAg
ICAgICAgICAgQ3VycnkuXzEodW5vcCQyLCBtYXRjaFswXSksCisgICAgICAgICAgICAvKiBbXSAq
LzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxOSA6IAorICAg
ICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKGJpbm9w
JDIsIG1hdGNoWzBdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIwIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1
cGxlICovWworICAgICAgICAgICAgQ3VycnkuXzEoY3Z0b3AkMiwgbWF0Y2hbMF0pLAorICAgICAg
ICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIAor
ICAgIH0KKyAgfQorICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAg
IG1hdGNoJDFbMF0sCisgICAgICAgICAgICBtYXRjaCQxWzFdCisgICAgICAgICAgXSk7Cit9CisK
K2Z1bmN0aW9uIGZ1bmNfd2l0aF9uYW1lKG5hbWUsIGYpIHsKKyAgdmFyIG1hdGNoID0gZlsvKiBp
dCAqLzFdOworICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICJm
dW5jIiArIG5hbWUsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdCgvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgInR5cGUgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbLyogZnR5cGUgKi8w
XVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
ICAgICBdLCBQZXJ2YXNpdmVzLiRhdChkZWNscygibG9jYWwiLCBtYXRjaFsvKiBsb2NhbHMgKi8x
XSksIExpc3QubWFwKGluc3RyLCBtYXRjaFsvKiBib2R5ICovMl0pKSkKKyAgICAgICAgICBdKTsK
K30KKworZnVuY3Rpb24gZnVuYyhmKSB7CisgIHJldHVybiBmdW5jX3dpdGhfbmFtZSgiIiwgZik7
Cit9CisKK2Z1bmN0aW9uIHN0YXJ0KHgpIHsKKyAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygx
LCBbCisgICAgICAgICAgICAic3RhcnQgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgeFsv
KiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0pOworfQorCitm
dW5jdGlvbiB0YWJsZShvZmYsIGksIHRhYikgeworICB2YXIgbWF0Y2ggPSB0YWJbLyogaXQgKi8x
XTsKKyAgdmFyIG1hdGNoJDEgPSBtYXRjaFsvKiB0dHlwZSAqLzBdOworICByZXR1cm4gLyogTm9k
ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICJ0YWJsZSAkIiArIChDdXJyeS5fMShJMzIu
dG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgb2ZmICsgaSB8IDApKSArICgiICIg
KyBsaW1pdHMoSTMyLnRvX3N0cmluZ191LCBtYXRjaCQxWzBdKSkpLAorICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbVHlwZXMuc3RyaW5n
X29mX2VsZW1fdHlwZShtYXRjaCQxWzFdKV0pLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gbWVtb3J5KG9mZiwgaSwg
bWVtKSB7CisgIHZhciBtYXRjaCA9IG1lbVsvKiBpdCAqLzFdOworICByZXR1cm4gLyogTm9kZSAq
L0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICJtZW1vcnkgJCIgKyAoQ3VycnkuXzEoSTMyLnRv
X3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIG9mZiArIGkgfCAwKSkgKyAoIiAiICsg
bGltaXRzKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbLyogbXR5cGUgKi8wXVswXSkpKSwKKyAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBzZWdtZW50KGhl
YWQsIGRhdCwgc2VnKSB7CisgIHZhciBtYXRjaCA9IHNlZ1svKiBpdCAqLzFdOworICByZXR1cm4g
LyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgIGhlYWQsCisgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtDdXJyeS5fMShJ
MzIudG9fc3RyaW5nX3UsIG1hdGNoWy8qIGluZGV4ICovMF1bLyogaXQgKi8xXSldKSwKKyAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgLyogTm9kZSAqL0Jsb2NrLl9fKDEs
IFsKKyAgICAgICAgICAgICAgICAgICAgIm9mZnNldCIsCisgICAgICAgICAgICAgICAgICAgIExp
c3QubWFwKGluc3RyLCBtYXRjaFsvKiBvZmZzZXQgKi8xXVsvKiBpdCAqLzFdKQorICAgICAgICAg
ICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgQ3VycnkuXzEoZGF0LCBtYXRjaFsvKiBpbml0
ICovMl0pCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0KKyAgICAgICAgICBdKTsKK30K
KworZnVuY3Rpb24gZWxlbXMoc2VnKSB7CisgIHJldHVybiBzZWdtZW50KCJlbGVtIiwgZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiBMaXN0Lm1hcChmdW5jdGlvbiAocGFy
YW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEF0b20gKi9CbG9jay5f
XygwLCBbQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBwYXJhbVsvKiBpdCAqLzFdKV0pOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgc2VnKTsKK30K
KworZnVuY3Rpb24gZGF0YShzZWcpIHsKKyAgcmV0dXJuIHNlZ21lbnQoImRhdGEiLCBicmVha19i
eXRlcywgc2VnKTsKK30KKworZnVuY3Rpb24gdHlwZWRlZihpLCB0KSB7CisgIHJldHVybiAvKiBO
b2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgInR5cGUgJCIgKyBDdXJyeS5fMShJMzIu
dG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgaSkpLAorICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgIGZ1bmNfdHlwZSh0KSwKKyAgICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgICBdCisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGltcG9ydF9r
aW5kKGksIGspIHsKKyAgdmFyIG1hdGNoID0ga1svKiBpdCAqLzFdOworICBzd2l0Y2ggKG1hdGNo
LnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9j
ay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAiZnVuYyAkIiArIEN1cnJ5Ll8xKEkzMi50b19z
dHJpbmdfdSwgQ3VycnkuXzEoSTMyLm9mX2ludF91LCBpKSksCisgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwg
W0N1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSldKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF0pOworICAgIGNhc2UgMSA6
IAorICAgICAgICByZXR1cm4gdGFibGUoMCwgaSwgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9b
LyogdHR5cGUgKi9tYXRjaFswXV0sIGtbLyogYXQgKi8wXSkpOworICAgIGNhc2UgMiA6IAorICAg
ICAgICByZXR1cm4gbWVtb3J5KDAsIGksIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWy8qIG10
eXBlICovbWF0Y2hbMF1dLCBrWy8qIGF0ICovMF0pKTsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAg
cmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAiZ2xvYmFs
ICQiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIGkp
KSwKKyAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICBnbG9i
YWxfdHlwZShtYXRjaFswXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF0pOworICAgIAorICB9Cit9CisKK2Z1bmN0
aW9uICQkaW1wb3J0KGksIGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV07CisgIHJl
dHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgImltcG9ydCIsCisgICAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtz
dHJpbmdfd2l0aChhZGRfY2hhciwgbWF0Y2hbLyogbW9kdWxlX25hbWUgKi8wXSldKSwKKyAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAs
IFtzdHJpbmdfd2l0aChhZGRfY2hhciwgbWF0Y2hbLyogaXRlbV9uYW1lICovMV0pXSksCisgICAg
ICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBpbXBvcnRfa2luZChpLCBt
YXRjaFsvKiBpa2luZCAqLzJdKSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXQorICAgICAgICAgIF0p
OworfQorCitmdW5jdGlvbiBleHBvcnRfa2luZChrKSB7CisgIHZhciBtYXRjaCA9IGtbLyogaXQg
Ki8xXTsKKyAgc3dpdGNoIChtYXRjaCkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4g
ImZ1bmMiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gInRhYmxlIjsKKyAgICBjYXNl
IDIgOiAKKyAgICAgICAgcmV0dXJuICJtZW1vcnkiOworICAgIGNhc2UgMyA6IAorICAgICAgICBy
ZXR1cm4gImdsb2JhbCI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gJCRleHBvcnQoZXgpIHsK
KyAgdmFyIG1hdGNoID0gZXhbLyogaXQgKi8xXTsKKyAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5f
XygxLCBbCisgICAgICAgICAgICAiZXhwb3J0IiwKKyAgICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFkZF9jaGFyLCBt
YXRjaFsvKiBuYW1lICovMF0pXSksCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgIGV4cG9y
dF9raW5kKG1hdGNoWy8qIGVraW5kICovMV0pLAorICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW0N1cnJ5Ll8x
KEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbLyogaXRlbSAqLzJdWy8qIGl0ICovMV0pXSksCisgICAg
ICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICBdCisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIHZhcl9vcHQo
cGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuICIgIiArIHBhcmFtWzBdWy8qIGl0
ICovMV07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuICIiOworICB9Cit9CisKK2Z1bmN0aW9u
IGlzX2Z1bmNfaW1wb3J0KGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV1bLyogaWtp
bmQgKi8yXVsvKiBpdCAqLzFdOworICBpZiAobWF0Y2gudGFnKSB7CisgICAgcmV0dXJuIC8qIGZh
bHNlICovMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgIH0KK30K
KworZnVuY3Rpb24gaXNfdGFibGVfaW1wb3J0KGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0
ICovMV1bLyogaWtpbmQgKi8yXVsvKiBpdCAqLzFdOworICBpZiAobWF0Y2gudGFnID09PSAxKSB7
CisgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBm
YWxzZSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gaXNfbWVtb3J5X2ltcG9ydChpbSkgeworICB2
YXIgbWF0Y2ggPSBpbVsvKiBpdCAqLzFdWy8qIGlraW5kICovMl1bLyogaXQgKi8xXTsKKyAgaWYg
KG1hdGNoLnRhZyA9PT0gMikgeworICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGlzX2dsb2Jh
bF9pbXBvcnQoaW0pIHsKKyAgdmFyIG1hdGNoID0gaW1bLyogaXQgKi8xXVsvKiBpa2luZCAqLzJd
Wy8qIGl0ICovMV07CisgIGlmIChtYXRjaC50YWcgPT09IDMpIHsKKyAgICByZXR1cm4gLyogdHJ1
ZSAqLzE7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgfQorfQor
CitmdW5jdGlvbiBtb2R1bGVfd2l0aF92YXJfb3B0KHhfb3B0LCBtKSB7CisgIHZhciBmdW5jX2lt
cG9ydHMgPSBMaXN0LmZpbHRlcihpc19mdW5jX2ltcG9ydCkobVsvKiBpdCAqLzFdWy8qIGltcG9y
dHMgKi84XSk7CisgIHZhciB0YWJsZV9pbXBvcnRzID0gTGlzdC5maWx0ZXIoaXNfdGFibGVfaW1w
b3J0KShtWy8qIGl0ICovMV1bLyogaW1wb3J0cyAqLzhdKTsKKyAgdmFyIG1lbW9yeV9pbXBvcnRz
ID0gTGlzdC5maWx0ZXIoaXNfbWVtb3J5X2ltcG9ydCkobVsvKiBpdCAqLzFdWy8qIGltcG9ydHMg
Ki84XSk7CisgIHZhciBnbG9iYWxfaW1wb3J0cyA9IExpc3QuZmlsdGVyKGlzX2dsb2JhbF9pbXBv
cnQpKG1bLyogaXQgKi8xXVsvKiBpbXBvcnRzICovOF0pOworICB2YXIgcGFydGlhbF9hcmcgPSBM
aXN0Lmxlbmd0aCh0YWJsZV9pbXBvcnRzKTsKKyAgdmFyIGYgPSBmdW5jdGlvbiAocGFyYW0sIHBh
cmFtJDEpIHsKKyAgICByZXR1cm4gdGFibGUocGFydGlhbF9hcmcsIHBhcmFtLCBwYXJhbSQxKTsK
KyAgfTsKKyAgdmFyIHBhcnRpYWxfYXJnJDEgPSBMaXN0Lmxlbmd0aChtZW1vcnlfaW1wb3J0cyk7
CisgIHZhciBmJDEgPSBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEpIHsKKyAgICByZXR1cm4gbWVt
b3J5KHBhcnRpYWxfYXJnJDEsIHBhcmFtLCBwYXJhbSQxKTsKKyAgfTsKKyAgdmFyIHBhcnRpYWxf
YXJnJDIgPSBMaXN0Lmxlbmd0aChnbG9iYWxfaW1wb3J0cyk7CisgIHZhciBmJDIgPSBmdW5jdGlv
biAocGFyYW0sIHBhcmFtJDEpIHsKKyAgICB2YXIgb2ZmID0gcGFydGlhbF9hcmckMjsKKyAgICB2
YXIgaSA9IHBhcmFtOworICAgIHZhciBnID0gcGFyYW0kMTsKKyAgICB2YXIgbWF0Y2ggPSBnWy8q
IGl0ICovMV07CisgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAg
ICAgICJnbG9iYWwgJCIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5v
Zl9pbnRfdSwgb2ZmICsgaSB8IDApKSwKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAg
ICAgICAgICAgZ2xvYmFsX3R5cGUobWF0Y2hbLyogZ3R5cGUgKi8wXSksCisgICAgICAgICAgICAg
ICAgTGlzdC5tYXAoaW5zdHIsIG1hdGNoWy8qIHZhbHVlICovMV1bLyogaXQgKi8xXSkKKyAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgXSk7CisgIH07CisgIHZhciBwYXJ0aWFsX2FyZyQzID0g
TGlzdC5sZW5ndGgoZnVuY19pbXBvcnRzKTsKKyAgdmFyIGYkMyA9IGZ1bmN0aW9uIChwYXJhbSwg
cGFyYW0kMSkgeworICAgIHZhciBvZmYgPSBwYXJ0aWFsX2FyZyQzOworICAgIHZhciBpID0gcGFy
YW07CisgICAgdmFyIGYkNCA9IHBhcmFtJDE7CisgICAgcmV0dXJuIGZ1bmNfd2l0aF9uYW1lKCIg
JCIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgb2Zm
ICsgaSB8IDApKSwgZiQ0KTsKKyAgfTsKKyAgdmFyIHhzID0gbGlzdF9vZl9vcHQobVsvKiBpdCAq
LzFdWy8qIHN0YXJ0ICovNV0pOworICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAg
ICAgICAgICAgICJtb2R1bGUiICsgdmFyX29wdCh4X29wdCksCisgICAgICAgICAgICBQZXJ2YXNp
dmVzLiRhdChMaXN0Lm1hcGkodHlwZWRlZiwgbVsvKiBpdCAqLzFdWy8qIHR5cGVzICovMF0pLCBQ
ZXJ2YXNpdmVzLiRhdChMaXN0Lm1hcGkoJCRpbXBvcnQsIHRhYmxlX2ltcG9ydHMpLCBQZXJ2YXNp
dmVzLiRhdChMaXN0Lm1hcGkoJCRpbXBvcnQsIG1lbW9yeV9pbXBvcnRzKSwgUGVydmFzaXZlcy4k
YXQoTGlzdC5tYXBpKCQkaW1wb3J0LCBnbG9iYWxfaW1wb3J0cyksIFBlcnZhc2l2ZXMuJGF0KExp
c3QubWFwaSgkJGltcG9ydCwgZnVuY19pbXBvcnRzKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5tYXBp
KGYsIG1bLyogaXQgKi8xXVsvKiB0YWJsZXMgKi8yXSksIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFw
aShmJDEsIG1bLyogaXQgKi8xXVsvKiBtZW1vcmllcyAqLzNdKSwgUGVydmFzaXZlcy4kYXQoTGlz
dC5tYXBpKGYkMiwgbVsvKiBpdCAqLzFdWy8qIGdsb2JhbHMgKi8xXSksIFBlcnZhc2l2ZXMuJGF0
KExpc3QubWFwaShmJDMsIG1bLyogaXQgKi8xXVsvKiBmdW5jcyAqLzRdKSwgUGVydmFzaXZlcy4k
YXQoTGlzdC5tYXAoJCRleHBvcnQsIG1bLyogaXQgKi8xXVsvKiBleHBvcnRzICovOV0pLCBQZXJ2
YXNpdmVzLiRhdChMaXN0Lm1hcChzdGFydCwgeHMpLCBQZXJ2YXNpdmVzLiRhdChMaXN0Lm1hcChl
bGVtcywgbVsvKiBpdCAqLzFdWy8qIGVsZW1zICovNl0pLCBMaXN0Lm1hcChkYXRhLCBtWy8qIGl0
ICovMV1bLyogZGF0YSAqLzddKSkpKSkpKSkpKSkpKQorICAgICAgICAgIF0pOworfQorCitmdW5j
dGlvbiBtb2R1bGVfKHBhcmFtKSB7CisgIHJldHVybiBtb2R1bGVfd2l0aF92YXJfb3B0KC8qIE5v
bmUgKi8wLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGxpdGVyYWwobGl0KSB7CisgIHZhciBtYXRj
aCA9IGxpdFsvKiBpdCAqLzFdOworICBzd2l0Y2ggKG1hdGNoLnRhZyB8IDApIHsKKyAgICBjYXNl
IDAgOiAKKyAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAg
ICAgICAgICAiaTMyLmNvbnN0ICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3MsIG1hdGNoWzBd
KSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgIF0pOworICAg
IGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAg
ICAgICAgICAgICAgICJpNjQuY29uc3QgIiArIEN1cnJ5Ll8xKEk2NC50b19zdHJpbmdfcywgbWF0
Y2hbMF0pLAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSk7
CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWwor
ICAgICAgICAgICAgICAgICAgImYzMi5jb25zdCAiICsgQ3VycnkuXzEoRjMyLnRvX3N0cmluZywg
bWF0Y2hbMF0pLAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAg
XSk7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwg
WworICAgICAgICAgICAgICAgICAgImY2NC5jb25zdCAiICsgQ3VycnkuXzEoRjY0LnRvX3N0cmlu
ZywgbWF0Y2hbMF0pLAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAg
ICAgXSk7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gZGVmaW5pdGlvbihtb2RlLCB4X29wdCwg
ZGVmKSB7CisgIHZhciBtYXRjaCA9IGRlZlsvKiBpdCAqLzFdOworICB2YXIgZXhpdCA9IDA7Cisg
IGV4aXQgPSBtb2RlICE9PSA1NjQxNDYyMDkgJiYgIShtb2RlID49IDk4MzE2NzA4OSAmJiBtYXRj
aC50YWcpID8gMSA6IDI7CisgIHN3aXRjaCAoZXhpdCkgeworICAgIGNhc2UgMSA6IAorICAgICAg
ICB2YXIgbWF0Y2gkMSA9IGRlZlsvKiBpdCAqLzFdOworICAgICAgICB2YXIgbTsKKyAgICAgICAg
bSA9IG1hdGNoJDEudGFnID8gRGVjb2RlLmRlY29kZSgiIiwgbWF0Y2gkMVsxXSkgOiBtYXRjaCQx
WzBdOworICAgICAgICByZXR1cm4gbW9kdWxlX3dpdGhfdmFyX29wdCh4X29wdCwgbSk7CisgICAg
Y2FzZSAyIDogCisgICAgICAgIHZhciBtYXRjaCQyID0gZGVmWy8qIGl0ICovMV07CisgICAgICAg
IHZhciBiczsKKyAgICAgICAgYnMgPSBtYXRjaCQyLnRhZyA/IG1hdGNoJDJbMV0gOiBFbmNvZGUu
ZW5jb2RlKG1hdGNoJDJbMF0pOworICAgICAgICB2YXIgeF9vcHQkMSA9IHhfb3B0OworICAgICAg
ICB2YXIgYnMkMSA9IGJzOworICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsK
KyAgICAgICAgICAgICAgICAgICJtb2R1bGUiICsgdmFyX29wdCh4X29wdCQxKSwKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrX2J5dGVzKGJzJDEpCisgICAgICAgICAgICAgICAgXSk7CisgICAgCisg
IH0KK30KKworZnVuY3Rpb24gYWNjZXNzKHhfb3B0LCBuYW1lKSB7CisgIHJldHVybiAkJFN0cmlu
Zy5jb25jYXQoIiAiLCAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgdmFyX29wdCh4X29wdCksCisg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIHN0cmluZ193aXRoKGFkZF9j
aGFyLCBuYW1lKSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGFjdGlvbihhY3QpIHsKKyAgdmFyIG1hdGNo
ID0gYWN0Wy8qIGl0ICovMV07CisgIGlmIChtYXRjaC50YWcpIHsKKyAgICByZXR1cm4gLyogTm9k
ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgImdldCIgKyBhY2Nlc3MobWF0Y2hbMF0s
IG1hdGNoWzFdKSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdKTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAg
ICAgICAgImludm9rZSIgKyBhY2Nlc3MobWF0Y2hbMF0sIG1hdGNoWzFdKSwKKyAgICAgICAgICAg
ICAgTGlzdC5tYXAobGl0ZXJhbCwgbWF0Y2hbMl0pCisgICAgICAgICAgICBdKTsKKyAgfQorfQor
CitmdW5jdGlvbiBzY3JpcHQobW9kZSwgc2NyKSB7CisgIHJldHVybiBMaXN0Lm1hcChmdW5jdGlv
biAocGFyYW0pIHsKKyAgICAgICAgICAgICAgdmFyIG1vZGUkMSA9IG1vZGU7CisgICAgICAgICAg
ICAgIHZhciBjbWQgPSBwYXJhbTsKKyAgICAgICAgICAgICAgdmFyIG1hdGNoID0gY21kWy8qIGl0
ICovMV07CisgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gudGFnIHwgMCkgeworICAgICAgICAg
ICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5pdGlvbiht
b2RlJDEsIG1hdGNoWzBdLCBtYXRjaFsxXSk7CisgICAgICAgICAgICAgICAgY2FzZSAxIDogCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lzdGVyICIgKyAoc3RyaW5nX3dpdGgoYWRkX2No
YXIsIG1hdGNoWzBdKSArIHZhcl9vcHQobWF0Y2hbMV0pKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAg
ICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0aW9u
KG1hdGNoWzBdKTsKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIG1vZGUkMiA9IG1vZGUkMTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGFzcyA9IG1h
dGNoWzBdOworICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IGFzc1svKiBpdCAqLzFd
OworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDEudGFnIHwgMCkgeworICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJhc3NlcnRfbWFsZm9ybWVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWZpbml0aW9uKC8qIE9yaWdpbmFsICovOTgzMTY3MDg5LCAvKiBOb25lICovMCwgbWF0Y2gkMVsw
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygw
LCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoJDFbMV0pXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5vZGUg
Ki9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNz
ZXJ0X2ludmFsaWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24obW9k
ZSQyLCAvKiBOb25lICovMCwgbWF0Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNo
JDFbMV0pXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3NvZnRfaW52YWxpZCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbihtb2RlJDIsIC8qIE5vbmUgKi8wLCBtYXRjaCQx
WzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9f
KDAsIFtzdHJpbmdfd2l0aChhZGRfY2hhciwgbWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9k
ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJh
c3NlcnRfdW5saW5rYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlv
bihtb2RlJDIsIC8qIE5vbmUgKi8wLCBtYXRjaCQxWzBdKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0aChhZGRfY2hhciwg
bWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdHJhcCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmaW5pdGlvbihtb2RlJDIsIC8qIE5vbmUgKi8wLCBtYXRjaCQxWzBd
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAs
IFtzdHJpbmdfd2l0aChhZGRfY2hhciwgbWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAq
L0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3Nl
cnRfcmV0dXJuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICov
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24obWF0Y2gkMVsw
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwKGxpdGVy
YWwsIG1hdGNoJDFbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBOb2RlICov
QmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzc2Vy
dF9yZXR1cm5fbmFuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24obWF0Y2gk
MVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNyA6IAorICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdHJhcCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWN0aW9uKG1hdGNoJDFbMF0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFkZF9j
aGFyLCBtYXRjaCQxWzFdKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF9leGhhdXN0aW9uIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24obWF0Y2gkMVswXSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5nX3dpdGgo
YWRkX2NoYXIsIG1hdGNoJDFbMV0pXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcv
d2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvYXJyYW5nZS5tbCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE0CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIHNj
cik7Cit9CisKK2V4cG9ydHMuaW5zdHIgICA9IGluc3RyOworZXhwb3J0cy5mdW5jICAgID0gZnVu
YzsKK2V4cG9ydHMubW9kdWxlXyA9IG1vZHVsZV87CitleHBvcnRzLnNjcmlwdCAgPSBzY3JpcHQ7
CisvKiBGMzIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBhcnJhbmdlLmpz
IC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlb
J2FycmF5J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8v
LyBzdGFydCBvZiBhcnJheS5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3Vycnkg
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9hcnJheSAg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1sX2V4Y2VwdGlv
bnMgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9leGNlcHRpb25zIik7Cit2YXIgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisK
K2Z1bmN0aW9uIGluaXQobCwgZikgeworICBpZiAobCkgeworICAgIGlmIChsIDwgMCkgeworICAg
ICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9h
cmd1bWVudCwKKyAgICAgICAgICAgICJBcnJheS5pbml0IgorICAgICAgICAgIF07CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgdmFyIHJlcyA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QobCwg
Q3VycnkuXzEoZiwgMCkpOworICAgICAgZm9yKHZhciBpID0gMSAsaV9maW5pc2ggPSBsIC0gMSB8
IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgICAgIHJlc1tpXSA9IEN1cnJ5Ll8xKGYsIGkp
OworICAgICAgfQorICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIC8qIGFycmF5ICovW107CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9tYXRyaXgoc3gs
IHN5LCBpbml0KSB7CisgIHZhciByZXMgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KHN4LCAv
KiBhcnJheSAqL1tdKTsKKyAgZm9yKHZhciB4ID0gMCAseF9maW5pc2ggPSBzeCAtIDEgfCAwOyB4
IDw9IHhfZmluaXNoOyArK3gpeworICAgIHJlc1t4XSA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3Zl
Y3Qoc3ksIGluaXQpOworICB9CisgIHJldHVybiByZXM7Cit9CisKK2Z1bmN0aW9uIGNvcHkoYSkg
eworICB2YXIgbCA9IGEubGVuZ3RoOworICBpZiAobCkgeworICAgIHJldHVybiBDYW1sX2FycmF5
LmNhbWxfYXJyYXlfc3ViKGEsIDAsIGwpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBh
cnJheSAqL1tdOworICB9Cit9CisKK2Z1bmN0aW9uIGFwcGVuZChhMSwgYTIpIHsKKyAgdmFyIGwx
ID0gYTEubGVuZ3RoOworICBpZiAobDEpIHsKKyAgICBpZiAoYTIubGVuZ3RoKSB7CisgICAgICBy
ZXR1cm4gYTEuY29uY2F0KGEyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gQ2Ft
bF9hcnJheS5jYW1sX2FycmF5X3N1YihhMSwgMCwgbDEpOworICAgIH0KKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gY29weShhMik7CisgIH0KK30KKworZnVuY3Rpb24gc3ViKGEsIG9mcywgbGVu
KSB7CisgIGlmIChsZW4gPCAwIHx8IG9mcyA+IChhLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAg
dGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCisgICAgICAgICAgIkFycmF5LnN1YiIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gQ2FtbF9hcnJheS5jYW1sX2FycmF5X3N1YihhLCBvZnMsIGxlbik7CisgIH0KK30K
KworZnVuY3Rpb24gZmlsbChhLCBvZnMsIGxlbiwgdikgeworICBpZiAob2ZzIDwgMCB8fCBsZW4g
PCAwIHx8IG9mcyA+IChhLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAg
IkFycmF5LmZpbGwiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgZm9yKHZhciBpID0g
b2ZzICxpX2ZpbmlzaCA9IChvZnMgKyBsZW4gfCAwKSAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyAr
K2kpeworICAgICAgYVtpXSA9IHY7CisgICAgfQorICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0K
K30KKworZnVuY3Rpb24gYmxpdChhMSwgb2ZzMSwgYTIsIG9mczIsIGxlbikgeworICBpZiAobGVu
IDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gKGExLmxlbmd0aCAtIGxlbiB8IDApIHx8IG9mczIg
PCAwIHx8IG9mczIgPiAoYTIubGVuZ3RoIC0gbGVuIHwgMCkpIHsKKyAgICB0aHJvdyBbCisgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAiQXJyYXkuYmxpdCIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2Ft
bF9hcnJheS5jYW1sX2FycmF5X2JsaXQoYTEsIG9mczEsIGEyLCBvZnMyLCBsZW4pOworICB9Cit9
CisKK2Z1bmN0aW9uIGl0ZXIoZiwgYSkgeworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGEu
bGVuZ3RoIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgQ3VycnkuXzEoZiwgYVtp
XSk7CisgIH0KKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gbWFwKGYsIGEpIHsK
KyAgdmFyIGwgPSBhLmxlbmd0aDsKKyAgaWYgKGwpIHsKKyAgICB2YXIgciA9IENhbWxfYXJyYXku
Y2FtbF9tYWtlX3ZlY3QobCwgQ3VycnkuXzEoZiwgYVswXSkpOworICAgIGZvcih2YXIgaSA9IDEg
LGlfZmluaXNoID0gbCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgICAgcltpXSA9
IEN1cnJ5Ll8xKGYsIGFbaV0pOworICAgIH0KKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gLyogYXJyYXkgKi9bXTsKKyAgfQorfQorCitmdW5jdGlvbiBpdGVyaShmLCBh
KSB7CisgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gYS5sZW5ndGggLSAxIHwgMDsgaSA8PSBp
X2ZpbmlzaDsgKytpKXsKKyAgICBDdXJyeS5fMihmLCBpLCBhW2ldKTsKKyAgfQorICByZXR1cm4g
LyogKCkgKi8wOworfQorCitmdW5jdGlvbiBtYXBpKGYsIGEpIHsKKyAgdmFyIGwgPSBhLmxlbmd0
aDsKKyAgaWYgKGwpIHsKKyAgICB2YXIgciA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QobCwg
Q3VycnkuXzIoZiwgMCwgYVswXSkpOworICAgIGZvcih2YXIgaSA9IDEgLGlfZmluaXNoID0gbCAt
IDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgICAgcltpXSA9IEN1cnJ5Ll8yKGYsIGks
IGFbaV0pOworICAgIH0KKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
LyogYXJyYXkgKi9bXTsKKyAgfQorfQorCitmdW5jdGlvbiB0b19saXN0KGEpIHsKKyAgdmFyIF9p
ID0gYS5sZW5ndGggLSAxIHwgMDsKKyAgdmFyIF9yZXMgPSAvKiBbXSAqLzA7CisgIHdoaWxlKHRy
dWUpIHsKKyAgICB2YXIgcmVzID0gX3JlczsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChpIDwg
MCkgeworICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBfcmVzID0g
LyogOjogKi9bCisgICAgICAgIGFbaV0sCisgICAgICAgIHJlcworICAgICAgXTsKKyAgICAgIF9p
ID0gaSAtIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICB9OworfQor
CitmdW5jdGlvbiBsaXN0X2xlbmd0aChfYWNjdSwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsK
KyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAo
cGFyYW0pIHsKKyAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgX2FjY3UgPSBhY2N1ICsg
MSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gYWNjdTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG9mX2xpc3QobCkgewor
ICBpZiAobCkgeworICAgIHZhciBhID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChsaXN0X2xl
bmd0aCgwLCBsKSwgbFswXSk7CisgICAgdmFyIF9pID0gMTsKKyAgICB2YXIgX3BhcmFtID0gbFsx
XTsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICB2
YXIgaSA9IF9pOworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIGFbaV0gPSBwYXJhbVswXTsK
KyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIF9pID0gaSArIDEgfCAwOworICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IHJldHVybiBhOworICAgICAgfQorICAgIH07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8q
IGFycmF5ICovW107CisgIH0KK30KKworZnVuY3Rpb24gZm9sZF9sZWZ0KGYsIHgsIGEpIHsKKyAg
dmFyIHIgPSB4OworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGEubGVuZ3RoIC0gMSB8IDA7
IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgciA9IEN1cnJ5Ll8yKGYsIHIsIGFbaV0pOworICB9
CisgIHJldHVybiByOworfQorCitmdW5jdGlvbiBmb2xkX3JpZ2h0KGYsIGEsIHgpIHsKKyAgdmFy
IHIgPSB4OworICBmb3IodmFyIGkgPSBhLmxlbmd0aCAtIDEgfCAwOyBpID49IDA7IC0taSl7Cisg
ICAgciA9IEN1cnJ5Ll8yKGYsIGFbaV0sIHIpOworICB9CisgIHJldHVybiByOworfQorCit2YXIg
Qm90dG9tID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiQXJyYXkuQm90dG9tIik7CisKK2Z1bmN0
aW9uIHNvcnQoY21wLCBhKSB7CisgIHZhciBtYXhzb24gPSBmdW5jdGlvbiAobCwgaSkgeworICAg
IHZhciBpMzEgPSAoKGkgKyBpIHwgMCkgKyBpIHwgMCkgKyAxIHwgMDsKKyAgICB2YXIgeCA9IGkz
MTsKKyAgICBpZiAoKGkzMSArIDIgfCAwKSA8IGwpIHsKKyAgICAgIGlmIChDdXJyeS5fMihjbXAs
IGFbaTMxXSwgYVtpMzEgKyAxIHwgMF0pIDwgMCkgeworICAgICAgICB4ID0gaTMxICsgMSB8IDA7
CisgICAgICB9CisgICAgICBpZiAoQ3VycnkuXzIoY21wLCBhW3hdLCBhW2kzMSArIDIgfCAwXSkg
PCAwKSB7CisgICAgICAgIHggPSBpMzEgKyAyIHwgMDsKKyAgICAgIH0KKyAgICAgIHJldHVybiB4
OworICAgIH0KKyAgICBlbHNlIGlmICgoaTMxICsgMSB8IDApIDwgbCAmJiBDdXJyeS5fMihjbXAs
IGFbaTMxXSwgYVtpMzEgKyAxIHwgMF0pIDwgMCkgeworICAgICAgcmV0dXJuIGkzMSArIDEgfCAw
OworICAgIH0KKyAgICBlbHNlIGlmIChpMzEgPCBsKSB7CisgICAgICByZXR1cm4gaTMxOworICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIEJvdHRvbSwKKyAgICAg
ICAgICAgIGkKKyAgICAgICAgICBdOworICAgIH0KKyAgfTsKKyAgdmFyIHRyaWNrbGUgPSBmdW5j
dGlvbiAobCwgaSwgZSkgeworICAgIHRyeSB7CisgICAgICB2YXIgbCQxID0gbDsKKyAgICAgIHZh
ciBfaSA9IGk7CisgICAgICB2YXIgZSQxID0gZTsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAg
ICAgdmFyIGkkMSA9IF9pOworICAgICAgICB2YXIgaiA9IG1heHNvbihsJDEsIGkkMSk7CisgICAg
ICAgIGlmIChDdXJyeS5fMihjbXAsIGFbal0sIGUkMSkgPiAwKSB7CisgICAgICAgICAgYVtpJDFd
ID0gYVtqXTsKKyAgICAgICAgICBfaSA9IGo7CisgICAgICAgICAgY29udGludWUgOworICAgICAg
ICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGFbaSQxXSA9IGUkMTsK
KyAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9CisgICAgICB9OworICAgIH0K
KyAgICBjYXRjaCAoZXhuKXsKKyAgICAgIGlmIChleG5bMF0gPT09IEJvdHRvbSkgeworICAgICAg
ICBhW2V4blsxXV0gPSBlOworICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07CisgIHZh
ciBidWJibGUgPSBmdW5jdGlvbiAobCwgaSkgeworICAgIHRyeSB7CisgICAgICB2YXIgbCQxID0g
bDsKKyAgICAgIHZhciBfaSA9IGk7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHZhciBp
JDEgPSBfaTsKKyAgICAgICAgdmFyIGogPSBtYXhzb24obCQxLCBpJDEpOworICAgICAgICBhW2kk
MV0gPSBhW2pdOworICAgICAgICBfaSA9IGo7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
CisgICAgICB9OworICAgIH0KKyAgICBjYXRjaCAoZXhuKXsKKyAgICAgIGlmIChleG5bMF0gPT09
IEJvdHRvbSkgeworICAgICAgICByZXR1cm4gZXhuWzFdOworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07CisgIHZhciB0cmlja2xl
dXAgPSBmdW5jdGlvbiAoX2ksIGUpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgaSA9
IF9pOworICAgICAgdmFyIGZhdGhlciA9IChpIC0gMSB8IDApIC8gMyB8IDA7CisgICAgICBpZiAo
aSA9PT0gZmF0aGVyKSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAiYXJyYXkubWwiLAorICAgICAgICAgICAgICAgIDE2OCwKKyAgICAgICAgICAgICAg
ICA0CisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBpZiAo
Q3VycnkuXzIoY21wLCBhW2ZhdGhlcl0sIGUpIDwgMCkgeworICAgICAgICBhW2ldID0gYVtmYXRo
ZXJdOworICAgICAgICBpZiAoZmF0aGVyID4gMCkgeworICAgICAgICAgIF9pID0gZmF0aGVyOwor
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICBhWzBdID0gZTsKKyAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAg
ICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgYVtpXSA9IGU7CisgICAgICAg
IHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIGwgPSBhLmxl
bmd0aDsKKyAgZm9yKHZhciBpID0gKChsICsgMSB8IDApIC8gMyB8IDApIC0gMSB8IDA7IGkgPj0g
MDsgLS1pKXsKKyAgICB0cmlja2xlKGwsIGksIGFbaV0pOworICB9CisgIGZvcih2YXIgaSQxID0g
bCAtIDEgfCAwOyBpJDEgPj0gMjsgLS1pJDEpeworICAgIHZhciBlID0gYVtpJDFdOworICAgIGFb
aSQxXSA9IGFbMF07CisgICAgdHJpY2tsZXVwKGJ1YmJsZShpJDEsIDApLCBlKTsKKyAgfQorICBp
ZiAobCA+IDEpIHsKKyAgICB2YXIgZSQxID0gYVsxXTsKKyAgICBhWzFdID0gYVswXTsKKyAgICBh
WzBdID0gZSQxOworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0
dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gc3RhYmxlX3NvcnQoY21wLCBhKSB7CisgIHZhciBt
ZXJnZSA9IGZ1bmN0aW9uIChzcmMxb2ZzLCBzcmMxbGVuLCBzcmMyLCBzcmMyb2ZzLCBzcmMybGVu
LCBkc3QsIGRzdG9mcykgeworICAgIHZhciBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIHwgMDsK
KyAgICB2YXIgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiB8IDA7CisgICAgdmFyIF9pMSA9IHNy
YzFvZnM7CisgICAgdmFyIF9zMSA9IGFbc3JjMW9mc107CisgICAgdmFyIF9pMiA9IHNyYzJvZnM7
CisgICAgdmFyIF9zMiA9IHNyYzJbc3JjMm9mc107CisgICAgdmFyIF9kID0gZHN0b2ZzOworICAg
IHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBkID0gX2Q7CisgICAgICB2YXIgczIgPSBfczI7Cisg
ICAgICB2YXIgaTIgPSBfaTI7CisgICAgICB2YXIgczEgPSBfczE7CisgICAgICB2YXIgaTEgPSBf
aTE7CisgICAgICBpZiAoQ3VycnkuXzIoY21wLCBzMSwgczIpIDw9IDApIHsKKyAgICAgICAgZHN0
W2RdID0gczE7CisgICAgICAgIHZhciBpMSQxID0gaTEgKyAxIHwgMDsKKyAgICAgICAgaWYgKGkx
JDEgPCBzcmMxcikgeworICAgICAgICAgIF9kID0gZCArIDEgfCAwOworICAgICAgICAgIF9zMSA9
IGFbaTEkMV07CisgICAgICAgICAgX2kxID0gaTEkMTsKKyAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGJs
aXQoc3JjMiwgaTIsIGRzdCwgZCArIDEgfCAwLCBzcmMyciAtIGkyIHwgMCk7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBkc3RbZF0gPSBzMjsKKyAgICAgICAgdmFy
IGkyJDEgPSBpMiArIDEgfCAwOworICAgICAgICBpZiAoaTIkMSA8IHNyYzJyKSB7CisgICAgICAg
ICAgX2QgPSBkICsgMSB8IDA7CisgICAgICAgICAgX3MyID0gc3JjMltpMiQxXTsKKyAgICAgICAg
ICBfaTIgPSBpMiQxOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gYmxpdChhLCBpMSwgZHN0LCBkICsg
MSB8IDAsIHNyYzFyIC0gaTEgfCAwKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH07CisgIH07
CisgIHZhciBpc29ydHRvID0gZnVuY3Rpb24gKHNyY29mcywgZHN0LCBkc3RvZnMsIGxlbikgewor
ICAgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7
ICsraSl7CisgICAgICB2YXIgZSA9IGFbc3Jjb2ZzICsgaSB8IDBdOworICAgICAgdmFyIGogPSAo
ZHN0b2ZzICsgaSB8IDApIC0gMSB8IDA7CisgICAgICB3aGlsZShqID49IGRzdG9mcyAmJiBDdXJy
eS5fMihjbXAsIGRzdFtqXSwgZSkgPiAwKSB7CisgICAgICAgIGRzdFtqICsgMSB8IDBdID0gZHN0
W2pdOworICAgICAgICBqID0gaiAtIDEgfCAwOworICAgICAgfTsKKyAgICAgIGRzdFtqICsgMSB8
IDBdID0gZTsKKyAgICB9CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfTsKKyAgdmFyIHNvcnR0
byA9IGZ1bmN0aW9uIChzcmNvZnMsIGRzdCwgZHN0b2ZzLCBsZW4pIHsKKyAgICBpZiAobGVuIDw9
IDUpIHsKKyAgICAgIHJldHVybiBpc29ydHRvKHNyY29mcywgZHN0LCBkc3RvZnMsIGxlbik7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIGwxID0gbGVuIC8gMiB8IDA7CisgICAgICB2YXIg
bDIgPSBsZW4gLSBsMSB8IDA7CisgICAgICBzb3J0dG8oc3Jjb2ZzICsgbDEgfCAwLCBkc3QsIGRz
dG9mcyArIGwxIHwgMCwgbDIpOworICAgICAgc29ydHRvKHNyY29mcywgYSwgc3Jjb2ZzICsgbDIg
fCAwLCBsMSk7CisgICAgICByZXR1cm4gbWVyZ2Uoc3Jjb2ZzICsgbDIgfCAwLCBsMSwgZHN0LCBk
c3RvZnMgKyBsMSB8IDAsIGwyLCBkc3QsIGRzdG9mcyk7CisgICAgfQorICB9OworICB2YXIgbCA9
IGEubGVuZ3RoOworICBpZiAobCA8PSA1KSB7CisgICAgcmV0dXJuIGlzb3J0dG8oMCwgYSwgMCwg
bCk7CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGwxID0gbCAvIDIgfCAwOworICAgIHZhciBsMiA9
IGwgLSBsMSB8IDA7CisgICAgdmFyIHQgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KGwyLCBh
WzBdKTsKKyAgICBzb3J0dG8obDEsIHQsIDAsIGwyKTsKKyAgICBzb3J0dG8oMCwgYSwgbDIsIGwx
KTsKKyAgICByZXR1cm4gbWVyZ2UobDIsIGwxLCB0LCAwLCBsMiwgYSwgMCk7CisgIH0KK30KKwor
dmFyIGNyZWF0ZV9tYXRyaXggPSBtYWtlX21hdHJpeDsKKwordmFyIGNvbmNhdCA9IENhbWxfYXJy
YXkuY2FtbF9hcnJheV9jb25jYXQ7CisKK3ZhciBmYXN0X3NvcnQgPSBzdGFibGVfc29ydDsKKwor
ZXhwb3J0cy5pbml0ICAgICAgICAgID0gaW5pdDsKK2V4cG9ydHMubWFrZV9tYXRyaXggICA9IG1h
a2VfbWF0cml4OworZXhwb3J0cy5jcmVhdGVfbWF0cml4ID0gY3JlYXRlX21hdHJpeDsKK2V4cG9y
dHMuYXBwZW5kICAgICAgICA9IGFwcGVuZDsKK2V4cG9ydHMuY29uY2F0ICAgICAgICA9IGNvbmNh
dDsKK2V4cG9ydHMuc3ViICAgICAgICAgICA9IHN1YjsKK2V4cG9ydHMuY29weSAgICAgICAgICA9
IGNvcHk7CitleHBvcnRzLmZpbGwgICAgICAgICAgPSBmaWxsOworZXhwb3J0cy5ibGl0ICAgICAg
ICAgID0gYmxpdDsKK2V4cG9ydHMudG9fbGlzdCAgICAgICA9IHRvX2xpc3Q7CitleHBvcnRzLm9m
X2xpc3QgICAgICAgPSBvZl9saXN0OworZXhwb3J0cy5pdGVyICAgICAgICAgID0gaXRlcjsKK2V4
cG9ydHMubWFwICAgICAgICAgICA9IG1hcDsKK2V4cG9ydHMuaXRlcmkgICAgICAgICA9IGl0ZXJp
OworZXhwb3J0cy5tYXBpICAgICAgICAgID0gbWFwaTsKK2V4cG9ydHMuZm9sZF9sZWZ0ICAgICA9
IGZvbGRfbGVmdDsKK2V4cG9ydHMuZm9sZF9yaWdodCAgICA9IGZvbGRfcmlnaHQ7CitleHBvcnRz
LnNvcnQgICAgICAgICAgPSBzb3J0OworZXhwb3J0cy5zdGFibGVfc29ydCAgID0gc3RhYmxlX3Nv
cnQ7CitleHBvcnRzLmZhc3Rfc29ydCAgICAgPSBmYXN0X3NvcnQ7CisvKiBObyBzaWRlIGVmZmVj
dCAqLworLy8vLy8vLy8gZW5kIG9mIGFycmF5LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhw
b3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2FzdCddID0gZnVuY3Rpb24oKSB7CivCoCDC
oCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgYXN0LmpzIC8vLy8vLy8vCisv
LyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBX
SVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIExpYiAgICAgID0gcmVxdWlyZSgiLi9saWIi
KTsKK3ZhciBCbG9jayAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwor
dmFyIEN1cnJ5ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2YXIg
Q2FtbF9vYmogPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9vYmoiKTsKKwordmFy
IEludE9wID0gLyogbW9kdWxlICovW107CisKK3ZhciBGbG9hdE9wID0gLyogbW9kdWxlICovW107
CisKK2Z1bmN0aW9uIGV4cG9ydF9raW5kX29mX2ltcG9ydF9raW5kKHBhcmFtKSB7CisgIHN3aXRj
aCAocGFyYW0udGFnIHwgMCkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gLyogRnVu
Y0V4cG9ydCAqLzA7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiBUYWJsZUV4cG9y
dCAqLzE7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiBNZW1vcnlFeHBvcnQgKi8y
OworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gLyogR2xvYmFsRXhwb3J0ICovMzsKKyAg
ICAKKyAgfQorfQorCitmdW5jdGlvbiBpbXBvcnRfdHlwZShtLCBpbSkgeworICB2YXIgbWF0Y2gg
PSBpbVsvKiBpdCAqLzFdOworICB2YXIgbWF0Y2gkMSA9IG1hdGNoWy8qIGlraW5kICovMl1bLyog
aXQgKi8xXTsKKyAgc3dpdGNoIChtYXRjaCQxLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAg
ICAgICAgcmV0dXJuIC8qIEV4dGVybmFsRnVuY1R5cGUgKi9CbG9jay5fXygwLCBbQ3VycnkuXzIo
TGliLkxpc3QzMlsvKiBudGggKi8xXSwgbVsvKiBpdCAqLzFdWy8qIHR5cGVzICovMF0sIG1hdGNo
JDFbMF1bLyogaXQgKi8xXSldKTsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuIC8qIEV4
dGVybmFsVGFibGVUeXBlICovQmxvY2suX18oMSwgW21hdGNoJDFbMF1dKTsKKyAgICBjYXNlIDIg
OiAKKyAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsTWVtb3J5VHlwZSAqL0Jsb2NrLl9fKDIsIFtt
YXRjaCQxWzBdXSk7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAvKiBFeHRlcm5hbEds
b2JhbFR5cGUgKi9CbG9jay5fXygzLCBbbWF0Y2gkMVswXV0pOworICAgIAorICB9Cit9CisKK2Z1
bmN0aW9uIGV4cG9ydF90eXBlKG0sIGV4KSB7CisgIHZhciBtYXRjaCA9IGV4Wy8qIGl0ICovMV07
CisgIHZhciBla2luZCA9IG1hdGNoWy8qIGVraW5kICovMV07CisgIHZhciBfaSA9IG1hdGNoWy8q
IGl0ZW0gKi8yXVsvKiBpdCAqLzFdOworICB2YXIgX3BhcmFtID0gbVsvKiBpdCAqLzFdWy8qIGlt
cG9ydHMgKi84XTsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAg
ICB2YXIgaSA9IF9pOworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGltcyA9IHBhcmFtWzFd
OworICAgICAgdmFyIGltID0gcGFyYW1bMF07CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVh
bChleHBvcnRfa2luZF9vZl9pbXBvcnRfa2luZChpbVsvKiBpdCAqLzFdWy8qIGlraW5kICovMl1b
LyogaXQgKi8xXSksIGVraW5kWy8qIGl0ICovMV0pKSB7CisgICAgICAgIGlmIChpKSB7CisgICAg
ICAgICAgX3BhcmFtID0gaW1zOworICAgICAgICAgIF9pID0gaSAtIDEgfCAwOworICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICByZXR1cm4gaW1wb3J0X3R5cGUobSwgaW0pOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gaW1zOworICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBtYXRjaCQxID0gZWtp
bmRbLyogaXQgKi8xXTsKKyAgICAgIHN3aXRjaCAobWF0Y2gkMSkgeworICAgICAgICBjYXNlIDAg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFeHRlcm5hbEZ1bmNUeXBlICovQmxvY2suX18oMCwg
W0N1cnJ5Ll8yKExpYi5MaXN0MzJbLyogbnRoICovMV0sIG1bLyogaXQgKi8xXVsvKiB0eXBlcyAq
LzBdLCBDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyogZnVu
Y3MgKi80XSwgaSlbLyogaXQgKi8xXVsvKiBmdHlwZSAqLzBdWy8qIGl0ICovMV0pXSk7CisgICAg
ICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsVGFibGVUeXBlICov
QmxvY2suX18oMSwgW0N1cnJ5Ll8yKExpYi5MaXN0MzJbLyogbnRoICovMV0sIG1bLyogaXQgKi8x
XVsvKiB0YWJsZXMgKi8yXSwgaSlbLyogaXQgKi8xXVsvKiB0dHlwZSAqLzBdXSk7CisgICAgICAg
IGNhc2UgMiA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsTWVtb3J5VHlwZSAqL0Js
b2NrLl9fKDIsIFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1b
LyogbWVtb3JpZXMgKi8zXSwgaSlbLyogaXQgKi8xXVsvKiBtdHlwZSAqLzBdXSk7CisgICAgICAg
IGNhc2UgMyA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsR2xvYmFsVHlwZSAqL0Js
b2NrLl9fKDMsIFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1b
LyogZ2xvYmFscyAqLzFdLCBpKVsvKiBpdCAqLzFdWy8qIGd0eXBlICovMF1dKTsKKyAgICAgICAg
CisgICAgICB9CisgICAgfQorICB9OworfQorCit2YXIgSTMyT3AgPSAwOworCit2YXIgSTY0T3Ag
PSAwOworCit2YXIgRjMyT3AgPSAwOworCit2YXIgRjY0T3AgPSAwOworCit2YXIgZW1wdHlfbW9k
dWxlID0gLyogcmVjb3JkICovWworICAvKiB0eXBlcyA6IFtdICovMCwKKyAgLyogZ2xvYmFscyA6
IFtdICovMCwKKyAgLyogdGFibGVzIDogW10gKi8wLAorICAvKiBtZW1vcmllcyA6IFtdICovMCwK
KyAgLyogZnVuY3MgOiBbXSAqLzAsCisgIC8qIHN0YXJ0IDogTm9uZSAqLzAsCisgIC8qIGVsZW1z
IDogW10gKi8wLAorICAvKiBkYXRhIDogW10gKi8wLAorICAvKiBpbXBvcnRzIDogW10gKi8wLAor
ICAvKiBleHBvcnRzIDogW10gKi8wCitdOworCitleHBvcnRzLkludE9wICAgICAgICAgICAgICAg
ICAgICAgID0gSW50T3A7CitleHBvcnRzLkZsb2F0T3AgICAgICAgICAgICAgICAgICAgID0gRmxv
YXRPcDsKK2V4cG9ydHMuSTMyT3AgICAgICAgICAgICAgICAgICAgICAgPSBJMzJPcDsKK2V4cG9y
dHMuSTY0T3AgICAgICAgICAgICAgICAgICAgICAgPSBJNjRPcDsKK2V4cG9ydHMuRjMyT3AgICAg
ICAgICAgICAgICAgICAgICAgPSBGMzJPcDsKK2V4cG9ydHMuRjY0T3AgICAgICAgICAgICAgICAg
ICAgICAgPSBGNjRPcDsKK2V4cG9ydHMuZW1wdHlfbW9kdWxlICAgICAgICAgICAgICAgPSBlbXB0
eV9tb2R1bGU7CitleHBvcnRzLmV4cG9ydF9raW5kX29mX2ltcG9ydF9raW5kID0gZXhwb3J0X2tp
bmRfb2ZfaW1wb3J0X2tpbmQ7CitleHBvcnRzLmltcG9ydF90eXBlICAgICAgICAgICAgICAgID0g
aW1wb3J0X3R5cGU7CitleHBvcnRzLmV4cG9ydF90eXBlICAgICAgICAgICAgICAgID0gZXhwb3J0
X3R5cGU7CisvKiBMaWIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBhc3Qu
anMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3Ry
eVsnYmlnYXJyYXknXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8v
Ly8vLy8vIHN0YXJ0IG9mIGJpZ2FycmF5LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3Zh
ciBDYW1sX2FycmF5ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9hcnJheSIpOwordmFy
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucyIpOworCitmdW5jdGlvbiBkaW1zKCkgeworICB2YXIgbiA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgIHRocm93ICJjYW1sX2JhX251bV9kaW1zIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3Jp
cHQgeWV0XG4iOworICAgIH0oKTsKKyAgdmFyIGQgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0
KG4sIDApOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IG4gLSAxIHwgMDsgaSA8PSBpX2Zp
bmlzaDsgKytpKXsKKyAgICBkW2ldID0gZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyAiY2Ft
bF9iYV9kaW0gbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICB9
KCk7CisgIH0KKyAgcmV0dXJuIGQ7Cit9CisKK2Z1bmN0aW9uIG1hcF9maWxlKF8sICRzdGFyb3B0
JHN0YXIsIF8kMSwgXyQyLCBfJDMsIF8kNCkgeworICAkc3Rhcm9wdCRzdGFyID8gJHN0YXJvcHQk
c3RhclswXSA6IC8qIGludDY0ICovWworICAgICAgLyogaGkgKi8wLAorICAgICAgLyogbG8gKi8w
CisgICAgXTsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1s
X2JhX21hcF9maWxlX2J5dGVjb2RlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0
XG4iOworICAgICAgICAgIH0oKTsKK30KKwordmFyIEdlbmFycmF5ID0gLyogbW9kdWxlICovWwor
ICAvKiBkaW1zICovZGltcywKKyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZQorXTsKKworZnVuY3Rp
b24gY3JlYXRlKF8sIF8kMSwgXyQyKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB0aHJvdyAiY2FtbF9iYV9jcmVhdGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlw
dCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBvZl9hcnJheShraW5kLCBs
YXlvdXQsIGRhdGEpIHsKKyAgdmFyIGJhID0gY3JlYXRlKGtpbmQsIGxheW91dCwgZGF0YS5sZW5n
dGgpOworICBsYXlvdXQgIT09IDAgPyAxIDogMDsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2gg
PSBkYXRhLmxlbmd0aCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgdGhyb3cgImNhbWxfYmFfc2V0XzEgbm90IGltcGxlbWVudGVkIGJ5
IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgIH0oKSk7CisgIH0KKyAgcmV0dXJuIGJhOwor
fQorCitmdW5jdGlvbiBtYXBfZmlsZSQxKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBk
aW0pIHsKKyAgcmV0dXJuIG1hcF9maWxlKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hhcmVkLCAv
KiBpbnQgYXJyYXkgKi9bZGltXSk7Cit9CisKK3ZhciBBcnJheTEgPSAvKiBtb2R1bGUgKi9bCisg
IC8qIGNyZWF0ZSAqL2NyZWF0ZSwKKyAgLyogb2ZfYXJyYXkgKi9vZl9hcnJheSwKKyAgLyogbWFw
X2ZpbGUgKi9tYXBfZmlsZSQxCitdOworCitmdW5jdGlvbiBjcmVhdGUkMShfLCBfJDEsIF8kMiwg
XyQzKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9i
YV9jcmVhdGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAg
ICAgfSgpOworfQorCitmdW5jdGlvbiBzbGljZV9sZWZ0KF8sIF8kMSkgeworICByZXR1cm4gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfYmFfc2xpY2Ugbm90IGltcGxlbWVu
dGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlv
biBzbGljZV9yaWdodChfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHRocm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQg
eWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gb2ZfYXJyYXkkMShraW5kLCBs
YXlvdXQsIGRhdGEpIHsKKyAgdmFyIGRpbTEgPSBkYXRhLmxlbmd0aDsKKyAgdmFyIGRpbTIgPSBk
aW0xID8gZGF0YVswXS5sZW5ndGggOiAwOworICB2YXIgYmEgPSBjcmVhdGUkMShraW5kLCBsYXlv
dXQsIGRpbTEsIGRpbTIpOworICBsYXlvdXQgIT09IDAgPyAxIDogMDsKKyAgZm9yKHZhciBpID0g
MCAsaV9maW5pc2ggPSBkaW0xIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgdmFy
IHJvdyA9IGRhdGFbaV07CisgICAgaWYgKHJvdy5sZW5ndGggIT09IGRpbTIpIHsKKyAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCisgICAgICAgICAgICAiQmlnYXJyYXkuQXJyYXkyLm9mX2FycmF5OiBub24tcmVjdGFuZ3Vs
YXIgZGF0YSIKKyAgICAgICAgICBdOworICAgIH0KKyAgICBmb3IodmFyIGogPSAwICxqX2Zpbmlz
aCA9IGRpbTIgLSAxIHwgMDsgaiA8PSBqX2ZpbmlzaDsgKytqKXsKKyAgICAgIChmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9zZXRfMiBub3QgaW1wbGVtZW50ZWQgYnkg
YnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCkpOworICAgIH0KKyAgfQorICByZXR1
cm4gYmE7Cit9CisKK2Z1bmN0aW9uIG1hcF9maWxlJDIoZmQsIHBvcywga2luZCwgbGF5b3V0LCBz
aGFyZWQsIGRpbTEsIGRpbTIpIHsKKyAgcmV0dXJuIG1hcF9maWxlKGZkLCBwb3MsIGtpbmQsIGxh
eW91dCwgc2hhcmVkLCAvKiBpbnQgYXJyYXkgKi9bCisgICAgICAgICAgICAgIGRpbTEsCisgICAg
ICAgICAgICAgIGRpbTIKKyAgICAgICAgICAgIF0pOworfQorCit2YXIgQXJyYXkyID0gLyogbW9k
dWxlICovWworICAvKiBjcmVhdGUgKi9jcmVhdGUkMSwKKyAgLyogc2xpY2VfbGVmdCAqL3NsaWNl
X2xlZnQsCisgIC8qIHNsaWNlX3JpZ2h0ICovc2xpY2VfcmlnaHQsCisgIC8qIG9mX2FycmF5ICov
b2ZfYXJyYXkkMSwKKyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZSQyCitdOworCitmdW5jdGlvbiBj
cmVhdGUkMihfLCBfJDEsIF8kMiwgXyQzLCBfJDQpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX2NyZWF0ZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVj
a2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHNsaWNlX2xl
ZnRfMShfLCBfJDEsIF8kMikgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
dGhyb3cgImNhbWxfYmFfc2xpY2Ugbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRc
biI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBzbGljZV9yaWdodF8xKF8sIF8kMSwg
XyQyKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9i
YV9zbGljZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAg
ICB9KCk7Cit9CisKK2Z1bmN0aW9uIHNsaWNlX2xlZnRfMihfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1l
bnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rp
b24gc2xpY2VfcmlnaHRfMihfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHRocm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3Jp
cHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gb2ZfYXJyYXkkMihraW5k
LCBsYXlvdXQsIGRhdGEpIHsKKyAgdmFyIGRpbTEgPSBkYXRhLmxlbmd0aDsKKyAgdmFyIGRpbTIg
PSBkaW0xID8gZGF0YVswXS5sZW5ndGggOiAwOworICB2YXIgZGltMyA9IGRpbTIgPyBkYXRhWzBd
WzBdLmxlbmd0aCA6IDA7CisgIHZhciBiYSA9IGNyZWF0ZSQyKGtpbmQsIGxheW91dCwgZGltMSwg
ZGltMiwgZGltMyk7CisgIGxheW91dCAhPT0gMCA/IDEgOiAwOworICBmb3IodmFyIGkgPSAwICxp
X2ZpbmlzaCA9IGRpbTEgLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICB2YXIgcm93
ID0gZGF0YVtpXTsKKyAgICBpZiAocm93Lmxlbmd0aCAhPT0gZGltMikgeworICAgICAgdGhyb3cg
WworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwK
KyAgICAgICAgICAgICJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhIgor
ICAgICAgICAgIF07CisgICAgfQorICAgIGZvcih2YXIgaiA9IDAgLGpfZmluaXNoID0gZGltMiAt
IDEgfCAwOyBqIDw9IGpfZmluaXNoOyArK2opeworICAgICAgdmFyIGNvbCA9IHJvd1tqXTsKKyAg
ICAgIGlmIChjb2wubGVuZ3RoICE9PSBkaW0zKSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAgICAgIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGEiCisgICAgICAg
ICAgICBdOworICAgICAgfQorICAgICAgZm9yKHZhciBrID0gMCAsa19maW5pc2ggPSBkaW0zIC0g
MSB8IDA7IGsgPD0ga19maW5pc2g7ICsrayl7CisgICAgICAgIChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NldF8zIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVz
Y3JpcHQgeWV0XG4iOworICAgICAgICAgICAgfSgpKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAg
cmV0dXJuIGJhOworfQorCitmdW5jdGlvbiBtYXBfZmlsZSQzKGZkLCBwb3MsIGtpbmQsIGxheW91
dCwgc2hhcmVkLCBkaW0xLCBkaW0yLCBkaW0zKSB7CisgIHJldHVybiBtYXBfZmlsZShmZCwgcG9z
LCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgLyogaW50IGFycmF5ICovWworICAgICAgICAgICAgICBk
aW0xLAorICAgICAgICAgICAgICBkaW0yLAorICAgICAgICAgICAgICBkaW0zCisgICAgICAgICAg
ICBdKTsKK30KKwordmFyIEFycmF5MyA9IC8qIG1vZHVsZSAqL1sKKyAgLyogY3JlYXRlICovY3Jl
YXRlJDIsCisgIC8qIHNsaWNlX2xlZnRfMSAqL3NsaWNlX2xlZnRfMSwKKyAgLyogc2xpY2Vfcmln
aHRfMSAqL3NsaWNlX3JpZ2h0XzEsCisgIC8qIHNsaWNlX2xlZnRfMiAqL3NsaWNlX2xlZnRfMiwK
KyAgLyogc2xpY2VfcmlnaHRfMiAqL3NsaWNlX3JpZ2h0XzIsCisgIC8qIG9mX2FycmF5ICovb2Zf
YXJyYXkkMiwKKyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZSQzCitdOworCitmdW5jdGlvbiBhcnJh
eTFfb2ZfZ2VuYXJyYXkoYSkgeworICBpZiAoZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyAi
Y2FtbF9iYV9udW1fZGltcyBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsK
KyAgICAgIH0oKSA9PT0gMSkgeworICAgIHJldHVybiBhOworICB9CisgIGVsc2UgeworICAgIHRo
cm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50
LAorICAgICAgICAgICJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXkiCisgICAgICAgIF07Cisg
IH0KK30KKworZnVuY3Rpb24gYXJyYXkyX29mX2dlbmFycmF5KGEpIHsKKyAgaWYgKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgdGhyb3cgImNhbWxfYmFfbnVtX2RpbXMgbm90IGltcGxlbWVudGVkIGJ5
IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICB9KCkgPT09IDIpIHsKKyAgICByZXR1cm4gYTsK
KyAgfQorICBlbHNlIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQmlnYXJyYXkuYXJyYXkyX29mX2dl
bmFycmF5IgorICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGFycmF5M19vZl9nZW5hcnJh
eShhKSB7CisgIGlmIChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRocm93ICJjYW1sX2JhX251bV9k
aW1zIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgfSgpID09
PSAzKSB7CisgICAgcmV0dXJuIGE7CisgIH0KKyAgZWxzZSB7CisgICAgdGhyb3cgWworICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAg
IkJpZ2FycmF5LmFycmF5M19vZl9nZW5hcnJheSIKKyAgICAgICAgXTsKKyAgfQorfQorCitmdW5j
dGlvbiByZXNoYXBlXzEoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB0aHJvdyAiY2FtbF9iYV9yZXNoYXBlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3Jp
cHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gcmVzaGFwZV8yKF8sIF8k
MSwgXyQyKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2Ft
bF9iYV9yZXNoYXBlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAg
ICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gcmVzaGFwZV8zKF8sIF8kMSwgXyQyLCBfJDMpIHsK
KyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3Jlc2hh
cGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgp
OworfQorCit2YXIgZmxvYXQzMiA9IC8qIEZsb2F0MzIgKi8wOworCit2YXIgZmxvYXQ2NCA9IC8q
IEZsb2F0NjQgKi8xOworCit2YXIgY29tcGxleDMyID0gLyogQ29tcGxleDMyICovMTA7CisKK3Zh
ciBjb21wbGV4NjQgPSAvKiBDb21wbGV4NjQgKi8xMTsKKwordmFyIGludDhfc2lnbmVkID0gLyog
SW50OF9zaWduZWQgKi8yOworCit2YXIgaW50OF91bnNpZ25lZCA9IC8qIEludDhfdW5zaWduZWQg
Ki8zOworCit2YXIgaW50MTZfc2lnbmVkID0gLyogSW50MTZfc2lnbmVkICovNDsKKwordmFyIGlu
dDE2X3Vuc2lnbmVkID0gLyogSW50MTZfdW5zaWduZWQgKi81OworCit2YXIgJCRpbnQgPSAvKiBJ
bnQgKi84OworCit2YXIgaW50MzIgPSAvKiBJbnQzMiAqLzY7CisKK3ZhciBpbnQ2NCA9IC8qIElu
dDY0ICovNzsKKwordmFyIG5hdGl2ZWludCA9IC8qIE5hdGl2ZWludCAqLzk7CisKK3ZhciAkJGNo
YXIgPSAvKiBDaGFyICovMTI7CisKK3ZhciBjX2xheW91dCA9IC8qIENfbGF5b3V0ICovMDsKKwor
dmFyIGZvcnRyYW5fbGF5b3V0ID0gLyogRm9ydHJhbl9sYXlvdXQgKi8xOworCitmdW5jdGlvbiBy
ZXNoYXBlKF8sIF8kMSkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhy
b3cgImNhbWxfYmFfcmVzaGFwZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxu
IjsKKyAgICAgICAgICB9KCk7Cit9CisKK2V4cG9ydHMuZmxvYXQzMiAgICAgICAgICAgID0gZmxv
YXQzMjsKK2V4cG9ydHMuZmxvYXQ2NCAgICAgICAgICAgID0gZmxvYXQ2NDsKK2V4cG9ydHMuY29t
cGxleDMyICAgICAgICAgID0gY29tcGxleDMyOworZXhwb3J0cy5jb21wbGV4NjQgICAgICAgICAg
PSBjb21wbGV4NjQ7CitleHBvcnRzLmludDhfc2lnbmVkICAgICAgICA9IGludDhfc2lnbmVkOwor
ZXhwb3J0cy5pbnQ4X3Vuc2lnbmVkICAgICAgPSBpbnQ4X3Vuc2lnbmVkOworZXhwb3J0cy5pbnQx
Nl9zaWduZWQgICAgICAgPSBpbnQxNl9zaWduZWQ7CitleHBvcnRzLmludDE2X3Vuc2lnbmVkICAg
ICA9IGludDE2X3Vuc2lnbmVkOworZXhwb3J0cy4kJGludCAgICAgICAgICAgICAgPSAkJGludDsK
K2V4cG9ydHMuaW50MzIgICAgICAgICAgICAgID0gaW50MzI7CitleHBvcnRzLmludDY0ICAgICAg
ICAgICAgICA9IGludDY0OworZXhwb3J0cy5uYXRpdmVpbnQgICAgICAgICAgPSBuYXRpdmVpbnQ7
CitleHBvcnRzLiQkY2hhciAgICAgICAgICAgICA9ICQkY2hhcjsKK2V4cG9ydHMuY19sYXlvdXQg
ICAgICAgICAgID0gY19sYXlvdXQ7CitleHBvcnRzLmZvcnRyYW5fbGF5b3V0ICAgICA9IGZvcnRy
YW5fbGF5b3V0OworZXhwb3J0cy5HZW5hcnJheSAgICAgICAgICAgPSBHZW5hcnJheTsKK2V4cG9y
dHMuQXJyYXkxICAgICAgICAgICAgID0gQXJyYXkxOworZXhwb3J0cy5BcnJheTIgICAgICAgICAg
ICAgPSBBcnJheTI7CitleHBvcnRzLkFycmF5MyAgICAgICAgICAgICA9IEFycmF5MzsKK2V4cG9y
dHMuYXJyYXkxX29mX2dlbmFycmF5ID0gYXJyYXkxX29mX2dlbmFycmF5OworZXhwb3J0cy5hcnJh
eTJfb2ZfZ2VuYXJyYXkgPSBhcnJheTJfb2ZfZ2VuYXJyYXk7CitleHBvcnRzLmFycmF5M19vZl9n
ZW5hcnJheSA9IGFycmF5M19vZl9nZW5hcnJheTsKK2V4cG9ydHMucmVzaGFwZSAgICAgICAgICAg
ID0gcmVzaGFwZTsKK2V4cG9ydHMucmVzaGFwZV8xICAgICAgICAgID0gcmVzaGFwZV8xOworZXhw
b3J0cy5yZXNoYXBlXzIgICAgICAgICAgPSByZXNoYXBlXzI7CitleHBvcnRzLnJlc2hhcGVfMyAg
ICAgICAgICA9IHJlc2hhcGVfMzsKKy8qICBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8g
ZW5kIG9mIGJpZ2FycmF5LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07
CisKKworICBfcmVnaXN0cnlbJ2Jsb2NrJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBv
cnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBibG9jay5qcyAvLy8vLy8vLworJ3VzZSBzdHJp
Y3QnOworCisKK2Z1bmN0aW9uIF9fKHRhZywgYmxvY2spIHsKKyAgYmxvY2sudGFnID0gdGFnOwor
ICByZXR1cm4gYmxvY2s7Cit9CisKK2V4cG9ydHMuX18gPSBfXzsKKy8qIE5vIHNpZGUgZWZmZWN0
ICovCisvLy8vLy8vLyBlbmQgb2YgYmxvY2suanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBv
cnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnYnVmZmVyJ10gPSBmdW5jdGlvbigpIHsKK8Kg
IMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBidWZmZXIuanMgLy8vLy8v
Ly8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5cyAgICAgICAgICAgICAgICAgICAgID0gcmVxdWly
ZSgiLi9zeXMiKTsKK3ZhciBCeXRlcyAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnl0
ZXMiKTsKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsK
K3ZhciAkJFN0cmluZyAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc3RyaW5nIik7Cit2YXIg
UGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBD
YW1sX3N0cmluZyAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMiKTsKKworZnVuY3Rpb24gY3JlYXRlKG4pIHsKKyAgdmFyIG4kMSA9IG4gPCAxID8gMSA6IG47
CisgIHZhciBuJDIgPSBuJDEgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggPyBTeXMubWF4X3N0cmlu
Z19sZW5ndGggOiBuJDE7CisgIHZhciBzID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5n
KG4kMik7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogYnVmZmVyICovcywK
KyAgICAgICAgICAvKiBwb3NpdGlvbiAqLzAsCisgICAgICAgICAgLyogbGVuZ3RoICovbiQyLAor
ICAgICAgICAgIC8qIGluaXRpYWxfYnVmZmVyICovcworICAgICAgICBdOworfQorCitmdW5jdGlv
biBjb250ZW50cyhiKSB7CisgIHJldHVybiBCeXRlcy5zdWJfc3RyaW5nKGJbLyogYnVmZmVyICov
MF0sIDAsIGJbLyogcG9zaXRpb24gKi8xXSk7Cit9CisKK2Z1bmN0aW9uIHRvX2J5dGVzKGIpIHsK
KyAgcmV0dXJuIEJ5dGVzLnN1YihiWy8qIGJ1ZmZlciAqLzBdLCAwLCBiWy8qIHBvc2l0aW9uICov
MV0pOworfQorCitmdW5jdGlvbiBzdWIoYiwgb2ZzLCBsZW4pIHsKKyAgaWYgKG9mcyA8IDAgfHwg
bGVuIDwgMCB8fCBvZnMgPiAoYlsvKiBwb3NpdGlvbiAqLzFdIC0gbGVuIHwgMCkpIHsKKyAgICB0
aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVu
dCwKKyAgICAgICAgICAiQnVmZmVyLnN1YiIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gQnl0ZXMuc3ViX3N0cmluZyhiWy8qIGJ1ZmZlciAqLzBdLCBvZnMsIGxlbik7Cisg
IH0KK30KKworZnVuY3Rpb24gYmxpdChzcmMsIHNyY29mZiwgZHN0LCBkc3RvZmYsIGxlbikgewor
ICBpZiAobGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IChzcmNbLyogcG9zaXRpb24g
Ki8xXSAtIGxlbiB8IDApIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKGRzdC5sZW5ndGggLSBs
ZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJCdWZmZXIuYmxpdCIKKyAgICAgICAgXTsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQnl0ZXMuYmxpdChzcmNbLyogYnVmZmVyICovMF0s
IHNyY29mZiwgZHN0LCBkc3RvZmYsIGxlbik7CisgIH0KK30KKworZnVuY3Rpb24gbnRoKGIsIG9m
cykgeworICBpZiAob2ZzIDwgMCB8fCBvZnMgPj0gYlsvKiBwb3NpdGlvbiAqLzFdKSB7CisgICAg
dGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCisgICAgICAgICAgIkJ1ZmZlci5udGgiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIGJbLyogYnVmZmVyICovMF1bb2ZzXTsKKyAgfQorfQorCitmdW5jdGlvbiBsZW5n
dGgoYikgeworICByZXR1cm4gYlsvKiBwb3NpdGlvbiAqLzFdOworfQorCitmdW5jdGlvbiBjbGVh
cihiKSB7CisgIGJbLyogcG9zaXRpb24gKi8xXSA9IDA7CisgIHJldHVybiAvKiAoKSAqLzA7Cit9
CisKK2Z1bmN0aW9uIHJlc2V0KGIpIHsKKyAgYlsvKiBwb3NpdGlvbiAqLzFdID0gMDsKKyAgYlsv
KiBidWZmZXIgKi8wXSA9IGJbLyogaW5pdGlhbF9idWZmZXIgKi8zXTsKKyAgYlsvKiBsZW5ndGgg
Ki8yXSA9IGJbLyogYnVmZmVyICovMF0ubGVuZ3RoOworICByZXR1cm4gLyogKCkgKi8wOworfQor
CitmdW5jdGlvbiByZXNpemUoYiwgbW9yZSkgeworICB2YXIgbGVuID0gYlsvKiBsZW5ndGggKi8y
XTsKKyAgdmFyIG5ld19sZW4gPSBsZW47CisgIHdoaWxlKChiWy8qIHBvc2l0aW9uICovMV0gKyBt
b3JlIHwgMCkgPiBuZXdfbGVuKSB7CisgICAgbmV3X2xlbiA9IChuZXdfbGVuIDw8IDEpOworICB9
OworICBpZiAobmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgeworICAgIGlmICgoYlsv
KiBwb3NpdGlvbiAqLzFdICsgbW9yZSB8IDApIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgewor
ICAgICAgbmV3X2xlbiA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aDsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWls
dXJlLAorICAgICAgICAgICAgIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlciIKKyAgICAg
ICAgICBdOworICAgIH0KKyAgfQorICB2YXIgbmV3X2J1ZmZlciA9IENhbWxfc3RyaW5nLmNhbWxf
Y3JlYXRlX3N0cmluZyhuZXdfbGVuKTsKKyAgQnl0ZXMuYmxpdChiWy8qIGJ1ZmZlciAqLzBdLCAw
LCBuZXdfYnVmZmVyLCAwLCBiWy8qIHBvc2l0aW9uICovMV0pOworICBiWy8qIGJ1ZmZlciAqLzBd
ID0gbmV3X2J1ZmZlcjsKKyAgYlsvKiBsZW5ndGggKi8yXSA9IG5ld19sZW47CisgIHJldHVybiAv
KiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGFkZF9jaGFyKGIsIGMpIHsKKyAgdmFyIHBvcyA9IGJb
LyogcG9zaXRpb24gKi8xXTsKKyAgaWYgKHBvcyA+PSBiWy8qIGxlbmd0aCAqLzJdKSB7CisgICAg
cmVzaXplKGIsIDEpOworICB9CisgIGJbLyogYnVmZmVyICovMF1bcG9zXSA9IGM7CisgIGJbLyog
cG9zaXRpb24gKi8xXSA9IHBvcyArIDEgfCAwOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitm
dW5jdGlvbiBhZGRfc3Vic3RyaW5nKGIsIHMsIG9mZnNldCwgbGVuKSB7CisgIGlmIChvZmZzZXQg
PCAwIHx8IGxlbiA8IDAgfHwgKG9mZnNldCArIGxlbiB8IDApID4gcy5sZW5ndGgpIHsKKyAgICB0
aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVu
dCwKKyAgICAgICAgICAiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzIgorICAgICAg
ICBdOworICB9CisgIHZhciBuZXdfcG9zaXRpb24gPSBiWy8qIHBvc2l0aW9uICovMV0gKyBsZW4g
fCAwOworICBpZiAobmV3X3Bvc2l0aW9uID4gYlsvKiBsZW5ndGggKi8yXSkgeworICAgIHJlc2l6
ZShiLCBsZW4pOworICB9CisgIEJ5dGVzLmJsaXRfc3RyaW5nKHMsIG9mZnNldCwgYlsvKiBidWZm
ZXIgKi8wXSwgYlsvKiBwb3NpdGlvbiAqLzFdLCBsZW4pOworICBiWy8qIHBvc2l0aW9uICovMV0g
PSBuZXdfcG9zaXRpb247CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGFkZF9z
dWJieXRlcyhiLCBzLCBvZmZzZXQsIGxlbikgeworICByZXR1cm4gYWRkX3N1YnN0cmluZyhiLCBD
YW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocyksIG9mZnNldCwgbGVuKTsKK30KKworZnVuY3Rp
b24gYWRkX3N0cmluZyhiLCBzKSB7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIG5ld19w
b3NpdGlvbiA9IGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDA7CisgIGlmIChuZXdfcG9zaXRp
b24gPiBiWy8qIGxlbmd0aCAqLzJdKSB7CisgICAgcmVzaXplKGIsIGxlbik7CisgIH0KKyAgQnl0
ZXMuYmxpdF9zdHJpbmcocywgMCwgYlsvKiBidWZmZXIgKi8wXSwgYlsvKiBwb3NpdGlvbiAqLzFd
LCBsZW4pOworICBiWy8qIHBvc2l0aW9uICovMV0gPSBuZXdfcG9zaXRpb247CisgIHJldHVybiAv
KiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGFkZF9ieXRlcyhiLCBzKSB7CisgIHJldHVybiBhZGRf
c3RyaW5nKGIsIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzKSk7Cit9CisKK2Z1bmN0aW9u
IGFkZF9idWZmZXIoYiwgYnMpIHsKKyAgcmV0dXJuIGFkZF9zdWJieXRlcyhiLCBic1svKiBidWZm
ZXIgKi8wXSwgMCwgYnNbLyogcG9zaXRpb24gKi8xXSk7Cit9CisKK2Z1bmN0aW9uIGFkZF9jaGFu
bmVsKGIsIGljLCBsZW4pIHsKKyAgaWYgKGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdf
bGVuZ3RoKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkJ1ZmZlci5hZGRfY2hhbm5lbCIKKyAgICAg
ICAgXTsKKyAgfQorICBpZiAoKGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDApID4gYlsvKiBs
ZW5ndGggKi8yXSkgeworICAgIHJlc2l6ZShiLCBsZW4pOworICB9CisgIFBlcnZhc2l2ZXMucmVh
bGx5X2lucHV0KGljLCBiWy8qIGJ1ZmZlciAqLzBdLCBiWy8qIHBvc2l0aW9uICovMV0sIGxlbik7
CisgIGJbLyogcG9zaXRpb24gKi8xXSA9IGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDA7Cisg
IHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIG91dHB1dF9idWZmZXIob2MsIGIpIHsK
KyAgcmV0dXJuIFBlcnZhc2l2ZXMub3V0cHV0KG9jLCBiWy8qIGJ1ZmZlciAqLzBdLCAwLCBiWy8q
IHBvc2l0aW9uICovMV0pOworfQorCitmdW5jdGlvbiBjbG9zaW5nKHBhcmFtKSB7CisgIGlmIChw
YXJhbSAhPT0gNDApIHsKKyAgICBpZiAocGFyYW0gIT09IDEyMykgeworICAgICAgdGhyb3cgWwor
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICJidWZmZXIubWwiLAorICAgICAgICAgICAgICAxMTUs
CisgICAgICAgICAgICAgIDkKKyAgICAgICAgICAgIF0KKyAgICAgICAgICBdOworICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiAifSIgKi8xMjU7CisgICAgfQorICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAvKiAiKSIgKi80MTsKKyAgfQorfQorCitmdW5jdGlvbiBhZHZhbmNlX3Rv
X2Nsb3Npbmcob3BlbmluZywgY2xvc2luZywgaywgcywgc3RhcnQpIHsKKyAgdmFyIF9rID0gazsK
KyAgdmFyIF9pID0gc3RhcnQ7CisgIHZhciBsaW0gPSBzLmxlbmd0aDsKKyAgd2hpbGUodHJ1ZSkg
eworICAgIHZhciBpID0gX2k7CisgICAgdmFyIGskMSA9IF9rOworICAgIGlmIChpID49IGxpbSkg
eworICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgIH0K
KyAgICBlbHNlIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgPT09IG9wZW5pbmcpIHsKKyAgICAg
IF9pID0gaSArIDEgfCAwOworICAgICAgX2sgPSBrJDEgKyAxIHwgMDsKKyAgICAgIGNvbnRpbnVl
IDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgPT09
IGNsb3NpbmcpIHsKKyAgICAgIGlmIChrJDEpIHsKKyAgICAgICAgX2kgPSBpICsgMSB8IDA7Cisg
ICAgICAgIF9rID0gayQxIC0gMSB8IDA7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisg
ICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgICB9CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAg
ICAKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGFkdmFuY2VfdG9fbm9uX2FscGhhKHMsIHN0
YXJ0KSB7CisgIHZhciBfaSA9IHN0YXJ0OworICB2YXIgbGltID0gcy5sZW5ndGg7CisgIHdoaWxl
KHRydWUpIHsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChpID49IGxpbSkgeworICAgICAgcmV0
dXJuIGxpbTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmlu
Zy5nZXQocywgaSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICBpZiAobWF0Y2ggPj0gOTEp
IHsKKyAgICAgICAgaWYgKG1hdGNoID49IDk3KSB7CisgICAgICAgICAgaWYgKG1hdGNoID49IDEy
MykgeworICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKG1hdGNoICE9PSA5NSkgeworICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9
CisgICAgICBlbHNlIGlmIChtYXRjaCA+PSA1OCkgeworICAgICAgICBpZiAobWF0Y2ggPj0gNjUp
IHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAobWF0Y2gg
Pj0gNDgpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg
ICAgcmV0dXJuIGk7CisgICAgICB9CisgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICBf
aSA9IGkgKyAxIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAg
ICAgIAorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmluZF9pZGVudChzLCBzdGFydCwgbGlt
KSB7CisgIGlmIChzdGFydCA+PSBsaW0pIHsKKyAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5ub3RfZm91bmQ7CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGMgPSBDYW1sX3N0cmluZy5n
ZXQocywgc3RhcnQpOworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAoYyAhPT0gNDApIHsKKyAg
ICAgIGlmIChjICE9PSAxMjMpIHsKKyAgICAgICAgdmFyIHN0b3AgPSBhZHZhbmNlX3RvX25vbl9h
bHBoYShzLCBzdGFydCArIDEgfCAwKTsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAg
ICAgICAgICAgICAgICQkU3RyaW5nLnN1YihzLCBzdGFydCwgc3RvcCAtIHN0YXJ0IHwgMCksCisg
ICAgICAgICAgICAgICAgc3RvcAorICAgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IGV4aXQgPSAxOworICAgIH0KKyAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgdmFyIG5ld19z
dGFydCA9IHN0YXJ0ICsgMSB8IDA7CisgICAgICB2YXIgc3RvcCQxID0gYWR2YW5jZV90b19jbG9z
aW5nKGMsIGNsb3NpbmcoYyksIDAsIHMsIG5ld19zdGFydCk7CisgICAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAgICQkU3RyaW5nLnN1YihzLCBuZXdfc3RhcnQsIChzdG9wJDEg
LSBzdGFydCB8IDApIC0gMSB8IDApLAorICAgICAgICAgICAgICBzdG9wJDEgKyAxIHwgMAorICAg
ICAgICAgICAgXTsKKyAgICB9CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gYWRkX3N1YnN0aXR1
dGUoYiwgZiwgcykgeworICB2YXIgbGltID0gcy5sZW5ndGg7CisgIHZhciBfcHJldmlvdXMgPSAv
KiAiICIgKi8zMjsKKyAgdmFyIF9pID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0g
X2k7CisgICAgdmFyIHByZXZpb3VzID0gX3ByZXZpb3VzOworICAgIGlmIChpIDwgbGltKSB7Cisg
ICAgICB2YXIgY3VycmVudCA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICAgIGlmIChjdXJy
ZW50ICE9PSAzNikgeworICAgICAgICBpZiAocHJldmlvdXMgPT09IC8qICJcXCIgKi85Mikgewor
ICAgICAgICAgIGFkZF9jaGFyKGIsIC8qICJcXCIgKi85Mik7CisgICAgICAgICAgYWRkX2NoYXIo
YiwgY3VycmVudCk7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgX3ByZXZp
b3VzID0gLyogIiAiICovMzI7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAg
ICAgICB9CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbnQgIT09IDkyKSB7CisgICAgICAgICAgYWRk
X2NoYXIoYiwgY3VycmVudCk7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAg
X3ByZXZpb3VzID0gY3VycmVudDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAg
ICAgICAgX3ByZXZpb3VzID0gY3VycmVudDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHByZXZpb3VzID09PSAvKiAi
XFwiICovOTIpIHsKKyAgICAgICAgYWRkX2NoYXIoYiwgY3VycmVudCk7CisgICAgICAgIF9pID0g
aSArIDEgfCAwOworICAgICAgICBfcHJldmlvdXMgPSAvKiAiICIgKi8zMjsKKyAgICAgICAgY29u
dGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgaiA9
IGkgKyAxIHwgMDsKKyAgICAgICAgdmFyIG1hdGNoID0gZmluZF9pZGVudChzLCBqLCBsaW0pOwor
ICAgICAgICBhZGRfc3RyaW5nKGIsIEN1cnJ5Ll8xKGYsIG1hdGNoWzBdKSk7CisgICAgICAgIF9p
ID0gbWF0Y2hbMV07CisgICAgICAgIF9wcmV2aW91cyA9IC8qICIgIiAqLzMyOworICAgICAgICBj
b250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChwcmV2aW91
cyA9PT0gLyogIlxcIiAqLzkyKSB7CisgICAgICByZXR1cm4gYWRkX2NoYXIoYiwgcHJldmlvdXMp
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgfTsKK30KKwor
ZXhwb3J0cy5jcmVhdGUgICAgICAgICA9IGNyZWF0ZTsKK2V4cG9ydHMuY29udGVudHMgICAgICAg
PSBjb250ZW50czsKK2V4cG9ydHMudG9fYnl0ZXMgICAgICAgPSB0b19ieXRlczsKK2V4cG9ydHMu
c3ViICAgICAgICAgICAgPSBzdWI7CitleHBvcnRzLmJsaXQgICAgICAgICAgID0gYmxpdDsKK2V4
cG9ydHMubnRoICAgICAgICAgICAgPSBudGg7CitleHBvcnRzLmxlbmd0aCAgICAgICAgID0gbGVu
Z3RoOworZXhwb3J0cy5jbGVhciAgICAgICAgICA9IGNsZWFyOworZXhwb3J0cy5yZXNldCAgICAg
ICAgICA9IHJlc2V0OworZXhwb3J0cy5hZGRfY2hhciAgICAgICA9IGFkZF9jaGFyOworZXhwb3J0
cy5hZGRfc3RyaW5nICAgICA9IGFkZF9zdHJpbmc7CitleHBvcnRzLmFkZF9ieXRlcyAgICAgID0g
YWRkX2J5dGVzOworZXhwb3J0cy5hZGRfc3Vic3RyaW5nICA9IGFkZF9zdWJzdHJpbmc7CitleHBv
cnRzLmFkZF9zdWJieXRlcyAgID0gYWRkX3N1YmJ5dGVzOworZXhwb3J0cy5hZGRfc3Vic3RpdHV0
ZSA9IGFkZF9zdWJzdGl0dXRlOworZXhwb3J0cy5hZGRfYnVmZmVyICAgICA9IGFkZF9idWZmZXI7
CitleHBvcnRzLmFkZF9jaGFubmVsICAgID0gYWRkX2NoYW5uZWw7CitleHBvcnRzLm91dHB1dF9i
dWZmZXIgID0gb3V0cHV0X2J1ZmZlcjsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBl
bmQgb2YgYnVmZmVyLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisK
KworICBfcmVnaXN0cnlbJ2J5dGVzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRz
ID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBieXRlcy5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3Qn
OworCit2YXIgQ2hhciAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NoYXIiKTsKK3Zh
ciBMaXN0ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGlzdCIpOwordmFyIEN1cnJ5
ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfb2JqICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX29iaiIpOwordmFyIENhbWxfaW50MzIgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2ludDMyIik7Cit2YXIgUGVydmFzaXZlcyAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rp
b24gbWFrZShuLCBjKSB7CisgIHZhciBzID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5n
KG4pOworICBDYW1sX3N0cmluZy5jYW1sX2ZpbGxfc3RyaW5nKHMsIDAsIG4sIGMpOworICByZXR1
cm4gczsKK30KKworZnVuY3Rpb24gaW5pdChuLCBmKSB7CisgIHZhciBzID0gQ2FtbF9zdHJpbmcu
Y2FtbF9jcmVhdGVfc3RyaW5nKG4pOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IG4gLSAx
IHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICBzW2ldID0gQ3VycnkuXzEoZiwgaSk7Cisg
IH0KKyAgcmV0dXJuIHM7Cit9CisKK3ZhciBlbXB0eSA9IFtdOworCitmdW5jdGlvbiBjb3B5KHMp
IHsKKyAgdmFyIGxlbiA9IHMubGVuZ3RoOworICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxfY3Jl
YXRlX3N0cmluZyhsZW4pOworICBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMocywgMCwgciwg
MCwgbGVuKTsKKyAgcmV0dXJuIHI7Cit9CisKK2Z1bmN0aW9uIHRvX3N0cmluZyhiKSB7CisgIHJl
dHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoY29weShiKSk7Cit9CisKK2Z1bmN0aW9u
IG9mX3N0cmluZyhzKSB7CisgIHJldHVybiBjb3B5KENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmlu
ZyhzKSk7Cit9CisKK2Z1bmN0aW9uIHN1YihzLCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwgMCB8
fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWwor
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgIlN0cmluZy5zdWIgLyBCeXRlcy5zdWIiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7
CisgICAgdmFyIHIgPSBDYW1sX3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcobGVuKTsKKyAgICBD
YW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMocywgb2ZzLCByLCAwLCBsZW4pOworICAgIHJldHVy
biByOworICB9Cit9CisKK2Z1bmN0aW9uIHN1Yl9zdHJpbmcoYiwgb2ZzLCBsZW4pIHsKKyAgcmV0
dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzdWIoYiwgb2ZzLCBsZW4pKTsKK30KKwor
ZnVuY3Rpb24gZXh0ZW5kKHMsIGxlZnQsIHJpZ2h0KSB7CisgIHZhciBsZW4gPSAocy5sZW5ndGgg
KyBsZWZ0IHwgMCkgKyByaWdodCB8IDA7CisgIHZhciByID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVh
dGVfc3RyaW5nKGxlbik7CisgIHZhciBtYXRjaCA9IGxlZnQgPCAwID8gLyogdHVwbGUgKi9bCisg
ICAgICAtbGVmdCB8IDAsCisgICAgICAwCisgICAgXSA6IC8qIHR1cGxlICovWworICAgICAgMCwK
KyAgICAgIGxlZnQKKyAgICBdOworICB2YXIgZHN0b2ZmID0gbWF0Y2hbMV07CisgIHZhciBzcmNv
ZmYgPSBtYXRjaFswXTsKKyAgdmFyIGNweWxlbiA9IFBlcnZhc2l2ZXMubWluKHMubGVuZ3RoIC0g
c3Jjb2ZmIHwgMCwgbGVuIC0gZHN0b2ZmIHwgMCk7CisgIGlmIChjcHlsZW4gPiAwKSB7CisgICAg
Q2FtbF9zdHJpbmcuY2FtbF9ibGl0X2J5dGVzKHMsIHNyY29mZiwgciwgZHN0b2ZmLCBjcHlsZW4p
OworICB9CisgIHJldHVybiByOworfQorCitmdW5jdGlvbiBmaWxsKHMsIG9mcywgbGVuLCBjKSB7
CisgIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gKHMubGVuZ3RoIC0gbGVuIHwgMCkp
IHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxp
ZF9hcmd1bWVudCwKKyAgICAgICAgICAiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsIgorICAgICAg
ICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5jYW1sX2ZpbGxfc3Ry
aW5nKHMsIG9mcywgbGVuLCBjKTsKKyAgfQorfQorCitmdW5jdGlvbiBibGl0KHMxLCBvZnMxLCBz
Miwgb2ZzMiwgbGVuKSB7CisgIGlmIChsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiAoczEu
bGVuZ3RoIC0gbGVuIHwgMCkgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IChzMi5sZW5ndGggLSBsZW4g
fCAwKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5p
bnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJCeXRlcy5ibGl0IgorICAgICAgICBdOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMoczEsIG9m
czEsIHMyLCBvZnMyLCBsZW4pOworICB9Cit9CisKK2Z1bmN0aW9uIGJsaXRfc3RyaW5nKHMxLCBv
ZnMxLCBzMiwgb2ZzMiwgbGVuKSB7CisgIGlmIChsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEg
PiAoczEubGVuZ3RoIC0gbGVuIHwgMCkgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IChzMi5sZW5ndGgg
LSBsZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJs
aXRfc3RyaW5nIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDYW1sX3N0
cmluZy5jYW1sX2JsaXRfc3RyaW5nKHMxLCBvZnMxLCBzMiwgb2ZzMiwgbGVuKTsKKyAgfQorfQor
CitmdW5jdGlvbiBpdGVyKGYsIGEpIHsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBhLmxl
bmd0aCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIEN1cnJ5Ll8xKGYsIGFbaV0p
OworICB9CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGl0ZXJpKGYsIGEpIHsK
KyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBhLmxlbmd0aCAtIDEgfCAwOyBpIDw9IGlfZmlu
aXNoOyArK2kpeworICAgIEN1cnJ5Ll8yKGYsIGksIGFbaV0pOworICB9CisgIHJldHVybiAvKiAo
KSAqLzA7Cit9CisKK2Z1bmN0aW9uIGNvbmNhdChzZXAsIGwpIHsKKyAgaWYgKGwpIHsKKyAgICB2
YXIgaGQgPSBsWzBdOworICAgIHZhciBudW0gPSBbMF07CisgICAgdmFyIGxlbiA9IFswXTsKKyAg
ICBMaXN0Lml0ZXIoZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICBudW1bMF0gPSBudW1bMF0gKyAx
IHwgMDsKKyAgICAgICAgICBsZW5bMF0gPSBsZW5bMF0gKyBzLmxlbmd0aCB8IDA7CisgICAgICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgfSwgbCk7CisgICAgdmFyIHIgPSBDYW1sX3N0
cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcobGVuWzBdICsgQ2FtbF9pbnQzMi5pbXVsKHNlcC5sZW5n
dGgsIG51bVswXSAtIDEgfCAwKSB8IDApOworICAgIENhbWxfc3RyaW5nLmNhbWxfYmxpdF9ieXRl
cyhoZCwgMCwgciwgMCwgaGQubGVuZ3RoKTsKKyAgICB2YXIgcG9zID0gW2hkLmxlbmd0aF07Cisg
ICAgTGlzdC5pdGVyKGZ1bmN0aW9uIChzKSB7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9i
bGl0X2J5dGVzKHNlcCwgMCwgciwgcG9zWzBdLCBzZXAubGVuZ3RoKTsKKyAgICAgICAgICBwb3Nb
MF0gPSBwb3NbMF0gKyBzZXAubGVuZ3RoIHwgMDsKKyAgICAgICAgICBDYW1sX3N0cmluZy5jYW1s
X2JsaXRfYnl0ZXMocywgMCwgciwgcG9zWzBdLCBzLmxlbmd0aCk7CisgICAgICAgICAgcG9zWzBd
ID0gcG9zWzBdICsgcy5sZW5ndGggfCAwOworICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7Cisg
ICAgICAgIH0sIGxbMV0pOworICAgIHJldHVybiByOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biBlbXB0eTsKKyAgfQorfQorCitmdW5jdGlvbiBjYXQoYSwgYikgeworICByZXR1cm4gYS5jb25j
YXQoYik7Cit9CisKK2Z1bmN0aW9uIGlzX3NwYWNlKHBhcmFtKSB7CisgIHZhciBzd2l0Y2hlciA9
IHBhcmFtIC0gOSB8IDA7CisgIGlmIChzd2l0Y2hlciA+IDQgfHwgc3dpdGNoZXIgPCAwKSB7Cisg
ICAgaWYgKHN3aXRjaGVyICE9PSAyMykgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgfQorICB9Cisg
IGVsc2UgaWYgKHN3aXRjaGVyICE9PSAyKSB7CisgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24g
dHJpbShzKSB7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIGkgPSAwOworICB3aGlsZShp
IDwgbGVuICYmIGlzX3NwYWNlKHNbaV0pKSB7CisgICAgaSA9IGkgKyAxIHwgMDsKKyAgfTsKKyAg
dmFyIGogPSBsZW4gLSAxIHwgMDsKKyAgd2hpbGUoaiA+PSBpICYmIGlzX3NwYWNlKHNbal0pKSB7
CisgICAgaiA9IGogLSAxIHwgMDsKKyAgfTsKKyAgaWYgKGogPj0gaSkgeworICAgIHJldHVybiBz
dWIocywgaSwgKGogLSBpIHwgMCkgKyAxIHwgMCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IGVtcHR5OworICB9Cit9CisKK2Z1bmN0aW9uIGVzY2FwZWQocykgeworICB2YXIgbiA9IDA7Cisg
IGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gcy5sZW5ndGggLSAxIHwgMDsgaSA8PSBpX2Zpbmlz
aDsgKytpKXsKKyAgICB2YXIgbWF0Y2ggPSBzW2ldOworICAgIHZhciAkanM7CisgICAgaWYgKG1h
dGNoID49IDMyKSB7CisgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDM0IHwgMDsKKyAgICAg
ICRqcyA9IHN3aXRjaGVyID4gNTggfHwgc3dpdGNoZXIgPCAwID8gKAorICAgICAgICAgIHN3aXRj
aGVyID49IDkzID8gNCA6IDEKKyAgICAgICAgKSA6ICgKKyAgICAgICAgICBzd2l0Y2hlciA+IDU3
IHx8IHN3aXRjaGVyIDwgMSA/IDIgOiAxCisgICAgICAgICk7CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgJGpzID0gbWF0Y2ggPj0gMTEgPyAoCisgICAgICAgICAgbWF0Y2ggIT09IDEzID8gNCA6
IDIKKyAgICAgICAgKSA6ICgKKyAgICAgICAgICBtYXRjaCA+PSA4ID8gMiA6IDQKKyAgICAgICAg
KTsKKyAgICB9CisgICAgbiA9IG4gKyAkanMgfCAwOworICB9CisgIGlmIChuID09PSBzLmxlbmd0
aCkgeworICAgIHJldHVybiBjb3B5KHMpOworICB9CisgIGVsc2UgeworICAgIHZhciBzJHByaW1l
ID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKG4pOworICAgIG4gPSAwOworICAgIGZv
cih2YXIgaSQxID0gMCAsaV9maW5pc2gkMSA9IHMubGVuZ3RoIC0gMSB8IDA7IGkkMSA8PSBpX2Zp
bmlzaCQxOyArK2kkMSl7CisgICAgICB2YXIgYyA9IHNbaSQxXTsKKyAgICAgIHZhciBleGl0ID0g
MDsKKyAgICAgIGlmIChjID49IDM1KSB7CisgICAgICAgIGlmIChjICE9PSA5MikgeworICAgICAg
ICAgIGlmIChjID49IDEyNykgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcyRwcmltZVtuXSA9IGM7CisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAyOworICAgICAg
ICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChjID49IDMyKSB7CisgICAgICAgIGlmIChjID49
IDM0KSB7CisgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgcyRwcmltZVtuXSA9IGM7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKGMgPj0gMTQpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAg
IHMkcHJpbWVbbl0gPSAvKiAiXFwiICovOTI7CisgICAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7
CisgICAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiYiIgKi85ODsKKyAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAv
KiAiXFwiICovOTI7CisgICAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7CisgICAgICAgICAgICAg
IHMkcHJpbWVbbl0gPSAvKiAidCIgKi8xMTY7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgcyRwcmltZVtuXSA9IC8qICJcXCIgKi85MjsK
KyAgICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgICAgICAgcyRwcmltZVtuXSA9
IC8qICJuIiAqLzExMDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAwIDog
CisgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgY2Fz
ZSAzIDogCisgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgY2FzZSA1IDogCisgICAgICAg
ICAgY2FzZSA2IDogCisgICAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgY2FzZSAxMSA6IAor
ICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgcyRwcmltZVtu
XSA9IC8qICJcXCIgKi85MjsKKyAgICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAg
ICAgICAgcyRwcmltZVtuXSA9IC8qICJyIiAqLzExNDsKKyAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHN3aXRjaCAoZXhpdCkgeworICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiXFwiICovOTI7Cisg
ICAgICAgICAgICBuID0gbiArIDEgfCAwOworICAgICAgICAgICAgcyRwcmltZVtuXSA9IDQ4ICsg
KGMgLyAxMDAgfCAwKSB8IDA7CisgICAgICAgICAgICBuID0gbiArIDEgfCAwOworICAgICAgICAg
ICAgcyRwcmltZVtuXSA9IDQ4ICsgKGMgLyAxMCB8IDApICUgMTAgfCAwOworICAgICAgICAgICAg
biA9IG4gKyAxIHwgMDsKKyAgICAgICAgICAgIHMkcHJpbWVbbl0gPSA0OCArIGMgJSAxMCB8IDA7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICBzJHBy
aW1lW25dID0gLyogIlxcIiAqLzkyOworICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAg
ICAgICAgIHMkcHJpbWVbbl0gPSBjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAg
ICAgfQorICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICB9CisgICAgcmV0dXJuIHMkcHJpbWU7Cisg
IH0KK30KKworZnVuY3Rpb24gbWFwKGYsIHMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsKKyAgaWYg
KGwpIHsKKyAgICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhsKTsKKyAg
ICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGwgLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytp
KXsKKyAgICAgIHJbaV0gPSBDdXJyeS5fMShmLCBzW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIHI7
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHM7CisgIH0KK30KKworZnVuY3Rpb24gbWFwaShm
LCBzKSB7CisgIHZhciBsID0gcy5sZW5ndGg7CisgIGlmIChsKSB7CisgICAgdmFyIHIgPSBDYW1s
X3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcobCk7CisgICAgZm9yKHZhciBpID0gMCAsaV9maW5p
c2ggPSBsIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgICByW2ldID0gQ3Vycnku
XzIoZiwgaSwgc1tpXSk7CisgICAgfQorICAgIHJldHVybiByOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiBzOworICB9Cit9CisKK2Z1bmN0aW9uIHVwcGVyY2FzZShzKSB7CisgIHJldHVybiBt
YXAoQ2hhci51cHBlcmNhc2UsIHMpOworfQorCitmdW5jdGlvbiBsb3dlcmNhc2UocykgeworICBy
ZXR1cm4gbWFwKENoYXIubG93ZXJjYXNlLCBzKTsKK30KKworZnVuY3Rpb24gYXBwbHkxKGYsIHMp
IHsKKyAgaWYgKHMubGVuZ3RoKSB7CisgICAgdmFyIHIgPSBjb3B5KHMpOworICAgIHJbMF0gPSBD
dXJyeS5fMShmLCBzWzBdKTsKKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiBjYXBpdGFsaXplKHMpIHsKKyAgcmV0dXJuIGFwcGx5
MShDaGFyLnVwcGVyY2FzZSwgcyk7Cit9CisKK2Z1bmN0aW9uIHVuY2FwaXRhbGl6ZShzKSB7Cisg
IHJldHVybiBhcHBseTEoQ2hhci5sb3dlcmNhc2UsIHMpOworfQorCitmdW5jdGlvbiBpbmRleF9y
ZWMocywgbGltLCBfaSwgYykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGkgPSBfaTsKKyAg
ICBpZiAoaSA+PSBsaW0pIHsKKyAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5v
dF9mb3VuZDsKKyAgICB9CisgICAgZWxzZSBpZiAoc1tpXSA9PT0gYykgeworICAgICAgcmV0dXJu
IGk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICBjb250
aW51ZSA7CisgICAgICAKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGluZGV4KHMsIGMpIHsK
KyAgcmV0dXJuIGluZGV4X3JlYyhzLCBzLmxlbmd0aCwgMCwgYyk7Cit9CisKK2Z1bmN0aW9uIGlu
ZGV4X2Zyb20ocywgaSwgYykgeworICB2YXIgbCA9IHMubGVuZ3RoOworICBpZiAoaSA8IDAgfHwg
aSA+IGwpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMu
aW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5p
bmRleF9mcm9tIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBpbmRleF9y
ZWMocywgbCwgaSwgYyk7CisgIH0KK30KKworZnVuY3Rpb24gcmluZGV4X3JlYyhzLCBfaSwgYykg
eworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGkgPSBfaTsKKyAgICBpZiAoaSA8IDApIHsKKyAg
ICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAgICB9CisgICAg
ZWxzZSBpZiAoc1tpXSA9PT0gYykgeworICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgX2kgPSBpIC0gMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9
CisgIH07Cit9CisKK2Z1bmN0aW9uIHJpbmRleChzLCBjKSB7CisgIHJldHVybiByaW5kZXhfcmVj
KHMsIHMubGVuZ3RoIC0gMSB8IDAsIGMpOworfQorCitmdW5jdGlvbiByaW5kZXhfZnJvbShzLCBp
LCBjKSB7CisgIGlmIChpIDwgLTEgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsKKyAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAg
ICAgICJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbSIKKyAgICAgICAgXTsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gcmluZGV4X3JlYyhzLCBpLCBjKTsKKyAgfQorfQor
CitmdW5jdGlvbiBjb250YWluc19mcm9tKHMsIGksIGMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsK
KyAgaWYgKGkgPCAwIHx8IGkgPiBsKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIlN0cmluZy5jb250
YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbSIKKyAgICAgICAgXTsKKyAgfQorICBlbHNl
IHsKKyAgICB0cnkgeworICAgICAgaW5kZXhfcmVjKHMsIGwsIGksIGMpOworICAgICAgcmV0dXJu
IC8qIHRydWUgKi8xOworICAgIH0KKyAgICBjYXRjaCAoZXhuKXsKKyAgICAgIGlmIChleG4gPT09
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkgeworICAgICAgICByZXR1cm4gLyog
ZmFsc2UgKi8wOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IGV4bjsKKyAg
ICAgIH0KKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gY29udGFpbnMocywgYykgeworICByZXR1
cm4gY29udGFpbnNfZnJvbShzLCAwLCBjKTsKK30KKworZnVuY3Rpb24gcmNvbnRhaW5zX2Zyb20o
cywgaSwgYykgeworICBpZiAoaSA8IDAgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsK
KyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAg
ICAgICAgICJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbSIKKyAg
ICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICB0cnkgeworICAgICAgcmluZGV4X3JlYyhzLCBp
LCBjKTsKKyAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICB9CisgICAgY2F0Y2ggKGV4bil7
CisgICAgICBpZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsK
KyAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAg
ICAgICB0aHJvdyBleG47CisgICAgICB9CisgICAgfQorICB9Cit9CisKK3ZhciBjb21wYXJlID0g
Q2FtbF9vYmouY2FtbF9jb21wYXJlOworCit2YXIgdW5zYWZlX3RvX3N0cmluZyA9IENhbWxfc3Ry
aW5nLmJ5dGVzX3RvX3N0cmluZzsKKwordmFyIHVuc2FmZV9vZl9zdHJpbmcgPSBDYW1sX3N0cmlu
Zy5ieXRlc19vZl9zdHJpbmc7CisKK2V4cG9ydHMubWFrZSAgICAgICAgICAgICA9IG1ha2U7Citl
eHBvcnRzLmluaXQgICAgICAgICAgICAgPSBpbml0OworZXhwb3J0cy5lbXB0eSAgICAgICAgICAg
ID0gZW1wdHk7CitleHBvcnRzLmNvcHkgICAgICAgICAgICAgPSBjb3B5OworZXhwb3J0cy5vZl9z
dHJpbmcgICAgICAgID0gb2Zfc3RyaW5nOworZXhwb3J0cy50b19zdHJpbmcgICAgICAgID0gdG9f
c3RyaW5nOworZXhwb3J0cy5zdWIgICAgICAgICAgICAgID0gc3ViOworZXhwb3J0cy5zdWJfc3Ry
aW5nICAgICAgID0gc3ViX3N0cmluZzsKK2V4cG9ydHMuZXh0ZW5kICAgICAgICAgICA9IGV4dGVu
ZDsKK2V4cG9ydHMuZmlsbCAgICAgICAgICAgICA9IGZpbGw7CitleHBvcnRzLmJsaXQgICAgICAg
ICAgICAgPSBibGl0OworZXhwb3J0cy5ibGl0X3N0cmluZyAgICAgID0gYmxpdF9zdHJpbmc7Citl
eHBvcnRzLmNvbmNhdCAgICAgICAgICAgPSBjb25jYXQ7CitleHBvcnRzLmNhdCAgICAgICAgICAg
ICAgPSBjYXQ7CitleHBvcnRzLml0ZXIgICAgICAgICAgICAgPSBpdGVyOworZXhwb3J0cy5pdGVy
aSAgICAgICAgICAgID0gaXRlcmk7CitleHBvcnRzLm1hcCAgICAgICAgICAgICAgPSBtYXA7Citl
eHBvcnRzLm1hcGkgICAgICAgICAgICAgPSBtYXBpOworZXhwb3J0cy50cmltICAgICAgICAgICAg
ID0gdHJpbTsKK2V4cG9ydHMuZXNjYXBlZCAgICAgICAgICA9IGVzY2FwZWQ7CitleHBvcnRzLmlu
ZGV4ICAgICAgICAgICAgPSBpbmRleDsKK2V4cG9ydHMucmluZGV4ICAgICAgICAgICA9IHJpbmRl
eDsKK2V4cG9ydHMuaW5kZXhfZnJvbSAgICAgICA9IGluZGV4X2Zyb207CitleHBvcnRzLnJpbmRl
eF9mcm9tICAgICAgPSByaW5kZXhfZnJvbTsKK2V4cG9ydHMuY29udGFpbnMgICAgICAgICA9IGNv
bnRhaW5zOworZXhwb3J0cy5jb250YWluc19mcm9tICAgID0gY29udGFpbnNfZnJvbTsKK2V4cG9y
dHMucmNvbnRhaW5zX2Zyb20gICA9IHJjb250YWluc19mcm9tOworZXhwb3J0cy51cHBlcmNhc2Ug
ICAgICAgID0gdXBwZXJjYXNlOworZXhwb3J0cy5sb3dlcmNhc2UgICAgICAgID0gbG93ZXJjYXNl
OworZXhwb3J0cy5jYXBpdGFsaXplICAgICAgID0gY2FwaXRhbGl6ZTsKK2V4cG9ydHMudW5jYXBp
dGFsaXplICAgICA9IHVuY2FwaXRhbGl6ZTsKK2V4cG9ydHMuY29tcGFyZSAgICAgICAgICA9IGNv
bXBhcmU7CitleHBvcnRzLnVuc2FmZV90b19zdHJpbmcgPSB1bnNhZmVfdG9fc3RyaW5nOworZXhw
b3J0cy51bnNhZmVfb2Zfc3RyaW5nID0gdW5zYWZlX29mX3N0cmluZzsKKy8qIE5vIHNpZGUgZWZm
ZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgYnl0ZXMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBl
eHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9hcnJheSddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9hcnJh
eS5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisKK2Z1bmN0aW9uIGNhbWxfYXJyYXlfc3Vi
KHgsIG9mZnNldCwgbGVuKSB7CisgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkobGVuKTsKKyAgdmFy
IGogPSAwOworICB2YXIgaSA9IG9mZnNldDsKKyAgd2hpbGUoaiA8IGxlbikgeworICAgIHJlc3Vs
dFtqXSA9IHhbaV07CisgICAgaiA9IGogKyAxIHwgMDsKKyAgICBpID0gaSArIDEgfCAwOworICB9
OworICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBsZW4oX2FjYywgX2wpIHsKKyAgd2hp
bGUodHJ1ZSkgeworICAgIHZhciBsID0gX2w7CisgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgaWYg
KGwpIHsKKyAgICAgIF9sID0gbFsxXTsKKyAgICAgIF9hY2MgPSBsWzBdLmxlbmd0aCArIGFjYyB8
IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBy
ZXR1cm4gYWNjOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmlsbChhcnIsIF9pLCBfbCkg
eworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGwgPSBfbDsKKyAgICB2YXIgaSA9IF9pOworICAg
IGlmIChsKSB7CisgICAgICB2YXIgeCA9IGxbMF07CisgICAgICB2YXIgbCQxID0geC5sZW5ndGg7
CisgICAgICB2YXIgayA9IGk7CisgICAgICB2YXIgaiA9IDA7CisgICAgICB3aGlsZShqIDwgbCQx
KSB7CisgICAgICAgIGFycltrXSA9IHhbal07CisgICAgICAgIGsgPSBrICsgMSB8IDA7CisgICAg
ICAgIGogPSBqICsgMSB8IDA7CisgICAgICB9OworICAgICAgX2wgPSBsWzFdOworICAgICAgX2kg
PSBrOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAg
cmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGNhbWxfYXJyYXlf
Y29uY2F0KGwpIHsKKyAgdmFyIHYgPSBsZW4oMCwgbCk7CisgIHZhciByZXN1bHQgPSBuZXcgQXJy
YXkodik7CisgIGZpbGwocmVzdWx0LCAwLCBsKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVu
Y3Rpb24gY2FtbF9tYWtlX3ZlY3QobGVuLCBpbml0KSB7CisgIHZhciBiID0gbmV3IEFycmF5KGxl
bik7CisgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9maW5p
c2g7ICsraSl7CisgICAgYltpXSA9IGluaXQ7CisgIH0KKyAgcmV0dXJuIGI7Cit9CisKK2Z1bmN0
aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7CisgIGlmIChpMiA8PSBp
MSkgeworICAgIGZvcih2YXIgaiA9IDAgLGpfZmluaXNoID0gbGVuIC0gMSB8IDA7IGogPD0gal9m
aW5pc2g7ICsrail7CisgICAgICBhMltqICsgaTIgfCAwXSA9IGExW2ogKyBpMSB8IDBdOworICAg
IH0KKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIGZvcih2YXIgaiQx
ID0gbGVuIC0gMSB8IDA7IGokMSA+PSAwOyAtLWokMSl7CisgICAgICBhMltqJDEgKyBpMiB8IDBd
ID0gYTFbaiQxICsgaTEgfCAwXTsKKyAgICB9CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQor
fQorCitleHBvcnRzLmNhbWxfYXJyYXlfc3ViICAgID0gY2FtbF9hcnJheV9zdWI7CitleHBvcnRz
LmNhbWxfYXJyYXlfY29uY2F0ID0gY2FtbF9hcnJheV9jb25jYXQ7CitleHBvcnRzLmNhbWxfbWFr
ZV92ZWN0ICAgID0gY2FtbF9tYWtlX3ZlY3Q7CitleHBvcnRzLmNhbWxfYXJyYXlfYmxpdCAgID0g
Y2FtbF9hcnJheV9ibGl0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBj
YW1sX2FycmF5LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKwor
ICBfcmVnaXN0cnlbJ2NhbWxfYnVpbHRpbl9leGNlcHRpb25zJ10gPSBmdW5jdGlvbigpIHsKK8Kg
IMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisKK3ZhciBvdXRfb2ZfbWVtb3J5
ID0gLyogdHVwbGUgKi9bCisgICJPdXRfb2ZfbWVtb3J5IiwKKyAgMAorXTsKKwordmFyIHN5c19l
cnJvciA9IC8qIHR1cGxlICovWworICAiU3lzX2Vycm9yIiwKKyAgLTEKK107CisKK3ZhciBmYWls
dXJlID0gLyogdHVwbGUgKi9bCisgICJGYWlsdXJlIiwKKyAgLTIKK107CisKK3ZhciBpbnZhbGlk
X2FyZ3VtZW50ID0gLyogdHVwbGUgKi9bCisgICJJbnZhbGlkX2FyZ3VtZW50IiwKKyAgLTMKK107
CisKK3ZhciBlbmRfb2ZfZmlsZSA9IC8qIHR1cGxlICovWworICAiRW5kX29mX2ZpbGUiLAorICAt
NAorXTsKKwordmFyIGRpdmlzaW9uX2J5X3plcm8gPSAvKiB0dXBsZSAqL1sKKyAgIkRpdmlzaW9u
X2J5X3plcm8iLAorICAtNQorXTsKKwordmFyIG5vdF9mb3VuZCA9IC8qIHR1cGxlICovWworICAi
Tm90X2ZvdW5kIiwKKyAgLTYKK107CisKK3ZhciBtYXRjaF9mYWlsdXJlID0gLyogdHVwbGUgKi9b
CisgICJNYXRjaF9mYWlsdXJlIiwKKyAgLTcKK107CisKK3ZhciBzdGFja19vdmVyZmxvdyA9IC8q
IHR1cGxlICovWworICAiU3RhY2tfb3ZlcmZsb3ciLAorICAtOAorXTsKKwordmFyIHN5c19ibG9j
a2VkX2lvID0gLyogdHVwbGUgKi9bCisgICJTeXNfYmxvY2tlZF9pbyIsCisgIC05CitdOworCit2
YXIgYXNzZXJ0X2ZhaWx1cmUgPSAvKiB0dXBsZSAqL1sKKyAgIkFzc2VydF9mYWlsdXJlIiwKKyAg
LTEwCitdOworCit2YXIgdW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSAvKiB0dXBsZSAqL1sK
KyAgIlVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIiwKKyAgLTExCitdOworCitleHBvcnRzLm91
dF9vZl9tZW1vcnkgICAgICAgICAgICAgID0gb3V0X29mX21lbW9yeTsKK2V4cG9ydHMuc3lzX2Vy
cm9yICAgICAgICAgICAgICAgICAgPSBzeXNfZXJyb3I7CitleHBvcnRzLmZhaWx1cmUgICAgICAg
ICAgICAgICAgICAgID0gZmFpbHVyZTsKK2V4cG9ydHMuaW52YWxpZF9hcmd1bWVudCAgICAgICAg
ICAgPSBpbnZhbGlkX2FyZ3VtZW50OworZXhwb3J0cy5lbmRfb2ZfZmlsZSAgICAgICAgICAgICAg
ICA9IGVuZF9vZl9maWxlOworZXhwb3J0cy5kaXZpc2lvbl9ieV96ZXJvICAgICAgICAgICA9IGRp
dmlzaW9uX2J5X3plcm87CitleHBvcnRzLm5vdF9mb3VuZCAgICAgICAgICAgICAgICAgID0gbm90
X2ZvdW5kOworZXhwb3J0cy5tYXRjaF9mYWlsdXJlICAgICAgICAgICAgICA9IG1hdGNoX2ZhaWx1
cmU7CitleHBvcnRzLnN0YWNrX292ZXJmbG93ICAgICAgICAgICAgID0gc3RhY2tfb3ZlcmZsb3c7
CitleHBvcnRzLnN5c19ibG9ja2VkX2lvICAgICAgICAgICAgID0gc3lzX2Jsb2NrZWRfaW87Citl
eHBvcnRzLmFzc2VydF9mYWlsdXJlICAgICAgICAgICAgID0gYXNzZXJ0X2ZhaWx1cmU7CitleHBv
cnRzLnVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gdW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1
bGU7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKwor
ICBfcmVnaXN0cnlbJ2NhbWxfYnl0ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9y
dHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxfYnl0ZXMuanMgLy8vLy8vLy8KKyd1c2Ug
c3RyaWN0JzsKKwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBnZXQocywgaSkgeworICBpZiAoaSA8
IDAgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJpbmRleCBvdXQgb2Yg
Ym91bmRzIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBzW2ldOworICB9
Cit9CisKK2V4cG9ydHMuZ2V0ID0gZ2V0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8v
IGVuZCBvZiBjYW1sX2J5dGVzLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8Kg
IH07CisKKworICBfcmVnaXN0cnlbJ2NhbWxfZXhjZXB0aW9ucyddID0gZnVuY3Rpb24oKSB7CivC
oCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9leGNlcHRpb25z
LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKKwordmFyIGlkID0gWzBdOworCitmdW5jdGlv
biBjYW1sX3NldF9vb19pZChiKSB7CisgIGJbMV0gPSBpZFswXTsKKyAgaWRbMF0gKz0gMTsKKyAg
cmV0dXJuIGI7Cit9CisKK2Z1bmN0aW9uIGdldF9pZCgpIHsKKyAgaWRbMF0gKz0gMTsKKyAgcmV0
dXJuIGlkWzBdOworfQorCitmdW5jdGlvbiBjcmVhdGUoc3RyKSB7CisgIHZhciB2XzAwMSA9IGdl
dF9pZCgvKiAoKSAqLzApOworICB2YXIgdiA9IC8qIHR1cGxlICovWworICAgIHN0ciwKKyAgICB2
XzAwMQorICBdOworICB2LnRhZyA9IDI0ODsKKyAgcmV0dXJuIHY7Cit9CisKK2V4cG9ydHMuY2Ft
bF9zZXRfb29faWQgPSBjYW1sX3NldF9vb19pZDsKK2V4cG9ydHMuZ2V0X2lkICAgICAgICAgPSBn
ZXRfaWQ7CitleHBvcnRzLmNyZWF0ZSAgICAgICAgID0gY3JlYXRlOworLyogTm8gc2lkZSBlZmZl
Y3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX2V4Y2VwdGlvbnMuanMgLy8vLy8vLy8KK8KgIMKg
IHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9mbG9hdCddID0g
ZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Yg
Y2FtbF9mbG9hdC5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisKK2Z1bmN0aW9uIGNhbWxf
aW50MzJfZmxvYXRfb2ZfYml0cyh4KSB7CisgIHZhciBpbnQzMiA9IG5ldyBJbnQzMkFycmF5KC8q
IGFycmF5ICovW3hdKTsKKyAgdmFyIGZsb2F0MzIgPSBuZXcgRmxvYXQzMkFycmF5KGludDMyLmJ1
ZmZlcik7CisgIHJldHVybiBmbG9hdDMyWzBdOworfQorCitmdW5jdGlvbiBjYW1sX2ludDMyX2Jp
dHNfb2ZfZmxvYXQoeCkgeworICB2YXIgZmxvYXQzMiA9IG5ldyBGbG9hdDMyQXJyYXkoLyogZmxv
YXQgYXJyYXkgKi9beF0pOworICByZXR1cm4gbmV3IEludDMyQXJyYXkoZmxvYXQzMi5idWZmZXIp
WzBdOworfQorCitmdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0KHgpIHsKKyAgaWYgKGlzRmlu
aXRlKHgpKSB7CisgICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4
KSB7CisgICAgICByZXR1cm4gLyogRlBfbm9ybWFsICovMDsKKyAgICB9CisgICAgZWxzZSBpZiAo
eCAhPT0gMCkgeworICAgICAgcmV0dXJuIC8qIEZQX3N1Ym5vcm1hbCAqLzE7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgcmV0dXJuIC8qIEZQX3plcm8gKi8yOworICAgIH0KKyAgfQorICBlbHNl
IGlmIChpc05hTih4KSkgeworICAgIHJldHVybiAvKiBGUF9uYW4gKi80OworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAvKiBGUF9pbmZpbml0ZSAqLzM7CisgIH0KK30KKworZnVuY3Rpb24gY2Ft
bF9tb2RmX2Zsb2F0KHgpIHsKKyAgaWYgKGlzRmluaXRlKHgpKSB7CisgICAgdmFyIG5lZyA9ICso
MSAvIHggPCAwKTsKKyAgICB2YXIgeCQxID0gTWF0aC5hYnMoeCk7CisgICAgdmFyIGkgPSBNYXRo
LmZsb29yKHgkMSk7CisgICAgdmFyIGYgPSB4JDEgLSBpOworICAgIGlmIChuZWcpIHsKKyAgICAg
IHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgLWYsCisgICAgICAgICAgICAgIC1p
CisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICAgICAgZiwKKyAgICAgICAgICAgICAgaQorICAgICAgICAgICAgXTsK
KyAgICB9CisgIH0KKyAgZWxzZSBpZiAoaXNOYU4oeCkpIHsKKyAgICByZXR1cm4gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICBOYU4sCisgICAgICAgICAgICBOYU4KKyAgICAgICAgICBdOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIDEgLyB4LAor
ICAgICAgICAgICAgeAorICAgICAgICAgIF07CisgIH0KK30KKwordmFyIGNhbWxfbGRleHBfZmxv
YXQgPSAoIGZ1bmN0aW9uICh4LGV4cCkgeworICAgIGV4cCB8PSAwOworICAgIGlmIChleHAgPiAx
MDIzKSB7CisgICAgICAgIGV4cCAtPSAxMDIzOworICAgICAgICB4ICo9IE1hdGgucG93KDIsIDEw
MjMpOworICAgICAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5vcm1h
bAorICAgICAgICAgICAgZXhwIC09IDEwMjM7CisgICAgICAgICAgICB4ICo9IE1hdGgucG93KDIs
IDEwMjMpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChleHAgPCAtMTAyMykgeworICAgICAg
ICBleHAgKz0gMTAyMzsKKyAgICAgICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7CisgICAgfQor
ICAgIHggKj0gTWF0aC5wb3coMiwgZXhwKTsKKyAgICByZXR1cm4geDsKK30KKyk7CisKK3ZhciBj
YW1sX2ZyZXhwX2Zsb2F0ID0gKGZ1bmN0aW9uICh4KSB7CisgICAgaWYgKCh4ID09IDApIHx8ICFp
c0Zpbml0ZSh4KSkgcmV0dXJuIFsgeCwgMF07CisgICAgdmFyIG5lZyA9IHggPCAwOworICAgIGlm
IChuZWcpIHggPSAtIHg7CisgICAgdmFyIGV4cCA9IE1hdGguZmxvb3IoTWF0aC5MT0cyRSpNYXRo
LmxvZyh4KSkgKyAxOworICAgIHggKj0gTWF0aC5wb3coMiwtZXhwKTsKKyAgICBpZiAoeCA8IDAu
NSkgeyB4ICo9IDI7IGV4cCAtPSAxOyB9CisgICAgaWYgKG5lZykgeCA9IC0geDsKKyAgICByZXR1
cm4gW3gsIGV4cF07Cit9CispOworCitmdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUoeCwgeSkg
eworICBpZiAoeCA9PT0geSkgeworICAgIHJldHVybiAwOworICB9CisgIGVsc2UgaWYgKHggPCB5
KSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2UgaWYgKHggPiB5IHx8IHggPT09IHgpIHsK
KyAgICByZXR1cm4gMTsKKyAgfQorICBlbHNlIGlmICh5ID09PSB5KSB7CisgICAgcmV0dXJuIC0x
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxf
Y29weXNpZ25fZmxvYXQoeCwgeSkgeworICB2YXIgeCQxID0gTWF0aC5hYnMoeCk7CisgIHZhciB5
JDEgPSB5ID09PSAwID8gMSAvIHkgOiB5OworICBpZiAoeSQxIDwgMCkgeworICAgIHJldHVybiAt
eCQxOworICB9CisgIGVsc2UgeworICAgIHJldHVybiB4JDE7CisgIH0KK30KKworZnVuY3Rpb24g
Y2FtbF9leHBtMV9mbG9hdCh4KSB7CisgIHZhciB5ID0gTWF0aC5leHAoeCk7CisgIHZhciB6ID0g
eSAtIDE7CisgIGlmIChNYXRoLmFicyh4KSA+IDEpIHsKKyAgICByZXR1cm4gejsKKyAgfQorICBl
bHNlIGlmICh6ID09PSAwKSB7CisgICAgcmV0dXJuIHg7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0
dXJuIHggKiB6IC8gTWF0aC5sb2coeSk7CisgIH0KK30KKwordmFyIGNhbWxfaHlwb3RfZmxvYXQg
PSAoIGZ1bmN0aW9uICh4LCB5KSB7CisgICAgdmFyIHgwID0gTWF0aC5hYnMoeCksIHkwID0gTWF0
aC5hYnMoeSk7CisgICAgdmFyIGEgPSBNYXRoLm1heCh4MCwgeTApLCBiID0gTWF0aC5taW4oeDAs
eTApIC8gKGE/YToxKTsKKyAgICByZXR1cm4gYSAqIE1hdGguc3FydCgxICsgYipiKTsKK30KKyk7
CisKK3ZhciBjYW1sX2xvZzEwX2Zsb2F0ID0gKCBmdW5jdGlvbiAgKHgpIHsgCisgICByZXR1cm4g
TWF0aC5MT0cxMEUgKiBNYXRoLmxvZyh4KTsgfQorKTsKKworZXhwb3J0cy5jYW1sX2ludDMyX2Zs
b2F0X29mX2JpdHMgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHM7CitleHBvcnRzLmNhbWxfaW50
MzJfYml0c19vZl9mbG9hdCA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdDsKK2V4cG9ydHMuY2Ft
bF9jbGFzc2lmeV9mbG9hdCAgICAgID0gY2FtbF9jbGFzc2lmeV9mbG9hdDsKK2V4cG9ydHMuY2Ft
bF9tb2RmX2Zsb2F0ICAgICAgICAgID0gY2FtbF9tb2RmX2Zsb2F0OworZXhwb3J0cy5jYW1sX2xk
ZXhwX2Zsb2F0ICAgICAgICAgPSBjYW1sX2xkZXhwX2Zsb2F0OworZXhwb3J0cy5jYW1sX2ZyZXhw
X2Zsb2F0ICAgICAgICAgPSBjYW1sX2ZyZXhwX2Zsb2F0OworZXhwb3J0cy5jYW1sX2Zsb2F0X2Nv
bXBhcmUgICAgICAgPSBjYW1sX2Zsb2F0X2NvbXBhcmU7CitleHBvcnRzLmNhbWxfY29weXNpZ25f
ZmxvYXQgICAgICA9IGNhbWxfY29weXNpZ25fZmxvYXQ7CitleHBvcnRzLmNhbWxfZXhwbTFfZmxv
YXQgICAgICAgICA9IGNhbWxfZXhwbTFfZmxvYXQ7CitleHBvcnRzLmNhbWxfaHlwb3RfZmxvYXQg
ICAgICAgICA9IGNhbWxfaHlwb3RfZmxvYXQ7CitleHBvcnRzLmNhbWxfbG9nMTBfZmxvYXQgICAg
ICAgICA9IGNhbWxfbG9nMTBfZmxvYXQ7CisvKiBjYW1sX2xkZXhwX2Zsb2F0IE5vdCBhIHB1cmUg
bW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9mbG9hdC5qcyAvLy8vLy8vLworwqAgwqAg
cmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX2Zvcm1hdCddID0g
ZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Yg
Y2FtbF9mb3JtYXQuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5ICAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfaW50MzIgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2ludDMyIik7Cit2YXIgQ2FtbF9pbnQ2NCAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2NhbWxfaW50NjQiKTsKK3ZhciBDYW1sX3V0aWxzICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF91dGlscyIpOwordmFyIENhbWxfc3RyaW5nICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBj
YW1sX2ZhaWx3aXRoKHMpIHsKKyAgdGhyb3cgWworICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5mYWlsdXJlLAorICAgICAgICBzCisgICAgICBdOworfQorCitmdW5jdGlvbiBwYXJzZV9k
aWdpdChjKSB7CisgIGlmIChjID49IDY1KSB7CisgICAgaWYgKGMgPj0gOTcpIHsKKyAgICAgIGlm
IChjID49IDEyMykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgcmV0dXJuIGMgLSA4NyB8IDA7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYg
KGMgPj0gOTEpIHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBy
ZXR1cm4gYyAtIDU1IHwgMDsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoYyA+IDU3IHx8IGMgPCA0
OCkgeworICAgIHJldHVybiAtMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYyAtIC8qICIw
IiAqLzQ4IHwgMDsKKyAgfQorfQorCitmdW5jdGlvbiBpbnRfb2Zfc3RyaW5nX2Jhc2UocGFyYW0p
IHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gODsK
KyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuIDE2OworICAgIGNhc2UgMiA6IAorICAgICAg
ICByZXR1cm4gMTA7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAyOworICAgIAorICB9
Cit9CisKK2Z1bmN0aW9uIHBhcnNlX3NpZ25fYW5kX2Jhc2UocykgeworICB2YXIgc2lnbiA9IDE7
CisgIHZhciBiYXNlID0gLyogRGVjICovMjsKKyAgdmFyIGkgPSAwOworICBpZiAoc1tpXSA9PT0g
Ii0iKSB7CisgICAgc2lnbiA9IC0xOworICAgIGkgPSBpICsgMSB8IDA7CisgIH0KKyAgdmFyIG1h
dGNoID0gcy5jaGFyQ29kZUF0KGkpOworICB2YXIgbWF0Y2gkMSA9IHMuY2hhckNvZGVBdChpICsg
MSB8IDApOworICBpZiAobWF0Y2ggPT09IDQ4KSB7CisgICAgaWYgKG1hdGNoJDEgPj0gODkpIHsK
KyAgICAgIGlmIChtYXRjaCQxICE9PSA5OCkgeworICAgICAgICBpZiAobWF0Y2gkMSAhPT0gMTEx
KSB7CisgICAgICAgICAgaWYgKG1hdGNoJDEgPT09IDEyMCkgeworICAgICAgICAgICAgYmFzZSA9
IC8qIEhleCAqLzE7CisgICAgICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgICAgIH0KKyAg
ICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBiYXNlID0gLyog
T2N0ICovMDsKKyAgICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgYmFzZSA9IC8qIEJpbiAqLzM7CisgICAgICAgIGkgPSBpICsg
MiB8IDA7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKG1hdGNoJDEgIT09IDY2KSB7Cisg
ICAgICBpZiAobWF0Y2gkMSAhPT0gNzkpIHsKKyAgICAgICAgaWYgKG1hdGNoJDEgPj0gODgpIHsK
KyAgICAgICAgICBiYXNlID0gLyogSGV4ICovMTsKKyAgICAgICAgICBpID0gaSArIDIgfCAwOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGJhc2Ug
PSAvKiBPY3QgKi8wOworICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgfQorICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIGJhc2UgPSAvKiBCaW4gKi8zOworICAgICAgaSA9IGkgKyAyIHwgMDsK
KyAgICB9CisgIH0KKyAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgIGksCisgICAgICAg
ICAgc2lnbiwKKyAgICAgICAgICBiYXNlCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGNhbWxf
aW50X29mX3N0cmluZyhzKSB7CisgIHZhciBtYXRjaCA9IHBhcnNlX3NpZ25fYW5kX2Jhc2Uocyk7
CisgIHZhciBpID0gbWF0Y2hbMF07CisgIHZhciBiYXNlID0gaW50X29mX3N0cmluZ19iYXNlKG1h
dGNoWzJdKTsKKyAgdmFyIHRocmVzaG9sZCA9IDQyOTQ5NjcyOTU7CisgIHZhciBsZW4gPSBzLmxl
bmd0aDsKKyAgdmFyIGMgPSBpIDwgbGVuID8gcy5jaGFyQ29kZUF0KGkpIDogLyogIlwwMDAiICov
MDsKKyAgdmFyIGQgPSBwYXJzZV9kaWdpdChjKTsKKyAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkg
eworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJl
LAorICAgICAgICAgICJpbnRfb2Zfc3RyaW5nIgorICAgICAgICBdOworICB9CisgIHZhciBhdXgg
PSBmdW5jdGlvbiAoX2FjYywgX2spIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgayA9
IF9rOworICAgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgICBpZiAoayA9PT0gbGVuKSB7CisgICAg
ICAgIHJldHVybiBhY2M7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIGEgPSBz
LmNoYXJDb2RlQXQoayk7CisgICAgICAgIGlmIChhID09PSAvKiAiXyIgKi85NSkgeworICAgICAg
ICAgIF9rID0gayArIDEgfCAwOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgdiA9IHBhcnNlX2RpZ2l0KGEp
OworICAgICAgICAgIGlmICh2IDwgMCB8fCB2ID49IGJhc2UpIHsKKyAgICAgICAgICAgIHRocm93
IFsKKyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisg
ICAgICAgICAgICAgICAgICAiaW50X29mX3N0cmluZyIKKyAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBhY2MkMSA9IGJhc2Ug
KiBhY2MgKyB2OworICAgICAgICAgICAgaWYgKGFjYyQxID4gdGhyZXNob2xkKSB7CisgICAgICAg
ICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgImludF9vZl9zdHJpbmciCisgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgIF9rID0gayArIDEgfCAwOworICAgICAgICAgICAgICBfYWNjID0gYWNjJDE7CisgICAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHJlcyA9IG1h
dGNoWzFdICogYXV4KGQsIGkgKyAxIHwgMCk7CisgIHZhciBvcl9yZXMgPSByZXMgfCAwOworICBp
ZiAoYmFzZSA9PT0gMTAgJiYgcmVzICE9PSBvcl9yZXMpIHsKKyAgICB0aHJvdyBbCisgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAgICAgICAiaW50X29mX3N0
cmluZyIKKyAgICAgICAgXTsKKyAgfQorICByZXR1cm4gb3JfcmVzOworfQorCitmdW5jdGlvbiBj
YW1sX2ludDY0X29mX3N0cmluZyhzKSB7CisgIHZhciBtYXRjaCA9IHBhcnNlX3NpZ25fYW5kX2Jh
c2Uocyk7CisgIHZhciBoYmFzZSA9IG1hdGNoWzJdOworICB2YXIgaSA9IG1hdGNoWzBdOworICB2
YXIgYmFzZSA9IENhbWxfaW50NjQub2ZfaW50MzIoaW50X29mX3N0cmluZ19iYXNlKGhiYXNlKSk7
CisgIHZhciBzaWduID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMihtYXRjaFsxXSk7CisgIHZhciB0aHJl
c2hvbGQ7CisgIHN3aXRjaCAoaGJhc2UpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgdGhyZXNo
b2xkID0gLyogaW50NjQgKi9bCisgICAgICAgICAgLyogaGkgKi81MzY4NzA5MTEsCisgICAgICAg
ICAgLyogbG8gKi80Mjk0OTY3Mjk1CisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgMSA6IAorICAgICAgICB0aHJlc2hvbGQgPSAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAvKiBo
aSAqLzI2ODQzNTQ1NSwKKyAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyOTUKKyAgICAgICAgXTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyIDogCisgICAgICAgIHRocmVzaG9sZCA9IC8qIGlu
dDY0ICovWworICAgICAgICAgIC8qIGhpICovNDI5NDk2NzI5LAorICAgICAgICAgIC8qIGxvICov
MjU3Njk4MDM3NworICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDMgOiAKKyAg
ICAgICAgdGhyZXNob2xkID0gLyogaW50NjQgKi9bCisgICAgICAgICAgLyogaGkgKi8yMTQ3NDgz
NjQ3LAorICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI5NQorICAgICAgICBdOworICAgICAgICBi
cmVhazsKKyAgICAKKyAgfQorICB2YXIgbGVuID0gcy5sZW5ndGg7CisgIHZhciBjID0gaSA8IGxl
biA/IHMuY2hhckNvZGVBdChpKSA6IC8qICJcMDAwIiAqLzA7CisgIHZhciBkID0gQ2FtbF9pbnQ2
NC5vZl9pbnQzMihwYXJzZV9kaWdpdChjKSk7CisgIGlmIChDYW1sX2ludDY0Lmx0KGQsIC8qIGlu
dDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAvKiBsbyAqLzAKKyAgICAg
ICAgXSkgfHwgQ2FtbF9pbnQ2NC5nZShkLCBiYXNlKSkgeworICAgIHRocm93IFsKKyAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAgICJpbnQ2NF9vZl9z
dHJpbmciCisgICAgICAgIF07CisgIH0KKyAgdmFyIGF1eCA9IGZ1bmN0aW9uIChfYWNjLCBfaykg
eworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBrID0gX2s7CisgICAgICB2YXIgYWNjID0g
X2FjYzsKKyAgICAgIGlmIChrID09PSBsZW4pIHsKKyAgICAgICAgcmV0dXJuIGFjYzsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgYSA9IHMuY2hhckNvZGVBdChrKTsKKyAgICAg
ICAgaWYgKGEgPT09IC8qICJfIiAqLzk1KSB7CisgICAgICAgICAgX2sgPSBrICsgMSB8IDA7Cisg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIHZhciB2ID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMihwYXJzZV9kaWdpdChhKSk7
CisgICAgICAgICAgaWYgKENhbWxfaW50NjQubHQodiwgLyogaW50NjQgKi9bCisgICAgICAgICAg
ICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAg
ICAgICAgICBdKSB8fCBDYW1sX2ludDY0LmdlKHYsIGJhc2UpKSB7CisgICAgICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAor
ICAgICAgICAgICAgICAgICAgImludDY0X29mX3N0cmluZyIKKyAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBhY2MkMSA9IENh
bWxfaW50NjQuYWRkKENhbWxfaW50NjQubXVsKGJhc2UsIGFjYyksIHYpOworICAgICAgICAgICAg
aWYgKENhbWxfaW50NjQuZ3QoYWNjJDEsIHRocmVzaG9sZCkpIHsKKyAgICAgICAgICAgICAgdGhy
b3cgWworICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJl
LAorICAgICAgICAgICAgICAgICAgICAiaW50NjRfb2Zfc3RyaW5nIgorICAgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBf
ayA9IGsgKyAxIHwgMDsKKyAgICAgICAgICAgICAgX2FjYyA9IGFjYyQxOworICAgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgfQorICAgIH07CisgIH07CisgIHZhciByZXMgPSBDYW1sX2ludDY0
Lm11bChzaWduLCBhdXgoZCwgaSArIDEgfCAwKSk7CisgIHZhciBvcl9yZXNfMDAwID0gLyogaGkg
Ki9yZXNbMF0gfCAvKiBoaSAqLzA7CisgIHZhciBvcl9yZXNfMDAxID0gLyogbG8gKi8ocmVzWzFd
ID4+PiAwKTsKKyAgdmFyIG9yX3JlcyA9IC8qIGludDY0ICovWworICAgIG9yX3Jlc18wMDAsCisg
ICAgb3JfcmVzXzAwMQorICBdOworICBpZiAoQ2FtbF9pbnQ2NC5lcShiYXNlLCAvKiBpbnQ2NCAq
L1sKKyAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgLyogbG8gKi8xMAorICAgICAgICBd
KSAmJiBDYW1sX2ludDY0Lm5lcShyZXMsIG9yX3JlcykpIHsKKyAgICB0aHJvdyBbCisgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAgICAgICAiaW50NjRfb2Zf
c3RyaW5nIgorICAgICAgICBdOworICB9CisgIHJldHVybiBvcl9yZXM7Cit9CisKK2Z1bmN0aW9u
IGludF9vZl9iYXNlKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAK
KyAgICAgICAgcmV0dXJuIDg7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAxNjsKKyAg
ICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuIDEwOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9u
IGxvd2VyY2FzZShjKSB7CisgIGlmIChjID49IC8qICJBIiAqLzY1ICYmIGMgPD0gLyogIloiICov
OTAgfHwgYyA+PSAvKiAiXDE5MiIgKi8xOTIgJiYgYyA8PSAvKiAiXDIxNCIgKi8yMTQgfHwgYyA+
PSAvKiAiXDIxNiIgKi8yMTYgJiYgYyA8PSAvKiAiXDIyMiIgKi8yMjIpIHsKKyAgICByZXR1cm4g
YyArIDMyIHwgMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYzsKKyAgfQorfQorCitmdW5j
dGlvbiBwYXJzZV9mb3JtYXQoZm10KSB7CisgIHZhciBsZW4gPSBmbXQubGVuZ3RoOworICBpZiAo
bGVuID4gMzEpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBs
b25nIgorICAgICAgICBdOworICB9CisgIHZhciBmID0gLyogcmVjb3JkICovWworICAgIC8qIGp1
c3RpZnkgKi8iKyIsCisgICAgLyogc2lnbnN0eWxlICovIi0iLAorICAgIC8qIGZpbHRlciAqLyIg
IiwKKyAgICAvKiBhbHRlcm5hdGUgOiBmYWxzZSAqLzAsCisgICAgLyogYmFzZSA6IERlYyAqLzIs
CisgICAgLyogc2lnbmVkY29udiA6IGZhbHNlICovMCwKKyAgICAvKiB3aWR0aCAqLzAsCisgICAg
LyogdXBwZXJjYXNlIDogZmFsc2UgKi8wLAorICAgIC8qIHNpZ24gKi8xLAorICAgIC8qIHByZWMg
Ki8tMSwKKyAgICAvKiBjb252ICovImYiCisgIF07CisgIHZhciBfaSA9IDA7CisgIHdoaWxlKHRy
dWUpIHsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChpID49IGxlbikgeworICAgICAgcmV0dXJu
IGY7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIGMgPSBmbXQuY2hhckNvZGVBdChpKTsK
KyAgICAgIHZhciBleGl0ID0gMDsKKyAgICAgIGlmIChjID49IDY5KSB7CisgICAgICAgIGlmIChj
ID49IDg4KSB7CisgICAgICAgICAgaWYgKGMgPj0gMTIxKSB7CisgICAgICAgICAgICBleGl0ID0g
MTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKGMg
LSA4OCB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICBm
Wy8qIGJhc2UgKi80XSA9IC8qIEhleCAqLzE7CisgICAgICAgICAgICAgICAgICBmWy8qIHVwcGVy
Y2FzZSAqLzddID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgICAgICBfaSA9IGkgKyAxIHwg
MDsKKyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAgIGNhc2Ug
MTMgOiAKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICBjYXNlIDE1IDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgIGNhc2UgMTcgOiAKKyAgICAg
ICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgMjMgOiAKKyAgICAgICAgICAgICAgICAgIGZbLyogYmFzZSAqLzRdID0gLyog
T2N0ICovMDsKKyAgICAgICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAg
ICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgICAgY2FzZSAyOSA6IAorICAgICAgICAg
ICAgICAgICAgZlsvKiBiYXNlICovNF0gPSAvKiBEZWMgKi8yOworICAgICAgICAgICAgICAgICAg
X2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAg
IGNhc2UgMyA6IAorICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgY2FzZSA1
IDogCisgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAg
ICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAg
ICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAg
Y2FzZSAxNiA6IAorICAgICAgICAgICAgICBjYXNlIDE4IDogCisgICAgICAgICAgICAgIGNhc2Ug
MTkgOiAKKyAgICAgICAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgICBjYXNlIDIxIDog
CisgICAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgICAgY2FzZSAyNCA6IAorICAg
ICAgICAgICAgICBjYXNlIDI1IDogCisgICAgICAgICAgICAgIGNhc2UgMjYgOiAKKyAgICAgICAg
ICAgICAgY2FzZSAyNyA6IAorICAgICAgICAgICAgICBjYXNlIDI4IDogCisgICAgICAgICAgICAg
IGNhc2UgMzAgOiAKKyAgICAgICAgICAgICAgY2FzZSAzMSA6IAorICAgICAgICAgICAgICAgICAg
ZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAz
MiA6IAorICAgICAgICAgICAgICAgICAgZlsvKiBiYXNlICovNF0gPSAvKiBIZXggKi8xOworICAg
ICAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYyA+PSA3MikgeworICAgICAgICAgIGV4aXQgPSAxOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGZbLyogc2lnbmVkY29udiAqLzVd
ID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgZlsvKiB1cHBlcmNhc2UgKi83XSA9IC8qIHRydWUg
Ki8xOworICAgICAgICAgIGZbLyogY29udiAqLzEwXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUobG93
ZXJjYXNlKGMpKTsKKyAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICB2YXIgc3dpdGNoZXIgPSBjIC0gMzIgfCAwOworICAgICAgICBpZiAoc3dpdGNoZXIgPiAyNSB8
fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICBzd2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgICAgICBjYXNl
IDMgOiAKKyAgICAgICAgICAgICAgICBmWy8qIGFsdGVybmF0ZSAqLzNdID0gLyogdHJ1ZSAqLzE7
CisgICAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgY29udGlu
dWUgOworICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgY2FzZSAxMSA6IAor
ICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgIGZbLyoganVzdGlmeSAqLzBdID0gIi0i
OworICAgICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgZlsvKiBw
cmVjICovOV0gPSAwOworICAgICAgICAgICAgICAgIHZhciBqID0gaSArIDEgfCAwOworICAgICAg
ICAgICAgICAgIHdoaWxlKChmdW5jdGlvbihqKXsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IGZtdC5jaGFyQ29k
ZUF0KGopIC0gLyogIjAiICovNDggfCAwOworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAr
KHcgPj0gMCAmJiB3IDw9IDkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0oaikpKCkpIHsKKyAgICAgICAgICAgICAgICAgIGZbLyogcHJlYyAqLzldID0gKENh
bWxfaW50MzIuaW11bChmWy8qIHByZWMgKi85XSwgMTApICsgZm10LmNoYXJDb2RlQXQoaikgfCAw
KSAtIC8qICIwIiAqLzQ4IHwgMDsKKyAgICAgICAgICAgICAgICAgIGogPSBqICsgMSB8IDA7Cisg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBfaSA9IGo7CisgICAgICAgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIGNhc2UgNSA6IAorICAg
ICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIGNh
c2UgOCA6IAorICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICBjYXNlIDEwIDogCisg
ICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAg
ICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDE2IDogCisgICAgICAgICAgICAgICAgZlsvKiBmaWx0ZXIgKi8yXSA9ICIwIjsKKyAgICAgICAg
ICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICAgICAgY2FzZSAxNyA6IAorICAgICAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICAg
ICAgY2FzZSAxOSA6IAorICAgICAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgY2FzZSAy
MSA6IAorICAgICAgICAgICAgY2FzZSAyMiA6IAorICAgICAgICAgICAgY2FzZSAyMyA6IAorICAg
ICAgICAgICAgY2FzZSAyNCA6IAorICAgICAgICAgICAgY2FzZSAyNSA6IAorICAgICAgICAgICAg
ICAgIGV4aXQgPSAzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBzd2l0Y2ggKGV4aXQpIHsKKyAgICAg
ICAgY2FzZSAxIDogCisgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgZlsvKiBzaWduc3R5
bGUgKi8xXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7CisgICAgICAgICAgICBfaSA9IGkgKyAx
IHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMyA6IAorICAg
ICAgICAgICAgZlsvKiB3aWR0aCAqLzZdID0gMDsKKyAgICAgICAgICAgIHZhciBqJDEgPSBpOwor
ICAgICAgICAgICAgd2hpbGUoKGZ1bmN0aW9uKGokMSl7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgIHZhciB3ID0gZm10LmNoYXJDb2RlQXQo
aiQxKSAtIC8qICIwIiAqLzQ4IHwgMDsKKyAgICAgICAgICAgICAgICAgIHJldHVybiArKHcgPj0g
MCAmJiB3IDw9IDkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KGokMSkp
KCkpIHsKKyAgICAgICAgICAgICAgZlsvKiB3aWR0aCAqLzZdID0gKENhbWxfaW50MzIuaW11bChm
Wy8qIHdpZHRoICovNl0sIDEwKSArIGZtdC5jaGFyQ29kZUF0KGokMSkgfCAwKSAtIC8qICIwIiAq
LzQ4IHwgMDsKKyAgICAgICAgICAgICAgaiQxID0gaiQxICsgMSB8IDA7CisgICAgICAgICAgICB9
OworICAgICAgICAgICAgX2kgPSBqJDE7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIGZbLyogc2lnbmVkY29udiAqLzVdID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgICBmWy8qIGJhc2UgKi80XSA9IC8qIERlYyAqLzI7CisgICAgICAg
ICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
IGNhc2UgNSA6IAorICAgICAgICAgICAgZlsvKiBzaWduZWRjb252ICovNV0gPSAvKiB0cnVlICov
MTsKKyAgICAgICAgICAgIGZbLyogY29udiAqLzEwXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7
CisgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmluaXNoX2Zv
cm1hdHRpbmcocGFyYW0sIHJhd2J1ZmZlcikgeworICB2YXIganVzdGlmeSA9IHBhcmFtWy8qIGp1
c3RpZnkgKi8wXTsKKyAgdmFyIHNpZ25zdHlsZSA9IHBhcmFtWy8qIHNpZ25zdHlsZSAqLzFdOwor
ICB2YXIgZmlsdGVyID0gcGFyYW1bLyogZmlsdGVyICovMl07CisgIHZhciBhbHRlcm5hdGUgPSBw
YXJhbVsvKiBhbHRlcm5hdGUgKi8zXTsKKyAgdmFyIGJhc2UgPSBwYXJhbVsvKiBiYXNlICovNF07
CisgIHZhciBzaWduZWRjb252ID0gcGFyYW1bLyogc2lnbmVkY29udiAqLzVdOworICB2YXIgd2lk
dGggPSBwYXJhbVsvKiB3aWR0aCAqLzZdOworICB2YXIgdXBwZXJjYXNlID0gcGFyYW1bLyogdXBw
ZXJjYXNlICovN107CisgIHZhciBzaWduID0gcGFyYW1bLyogc2lnbiAqLzhdOworICB2YXIgbGVu
ID0gcmF3YnVmZmVyLmxlbmd0aDsKKyAgaWYgKHNpZ25lZGNvbnYgJiYgKHNpZ24gPCAwIHx8IHNp
Z25zdHlsZSAhPT0gIi0iKSkgeworICAgIGxlbiA9IGxlbiArIDEgfCAwOworICB9CisgIGlmIChh
bHRlcm5hdGUpIHsKKyAgICBpZiAoYmFzZSkgeworICAgICAgaWYgKGJhc2UgPT09IC8qIEhleCAq
LzEpIHsKKyAgICAgICAgbGVuID0gbGVuICsgMiB8IDA7CisgICAgICB9CisgICAgICAKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICBsZW4gPSBsZW4gKyAxIHwgMDsKKyAgICB9CisgIH0KKyAgdmFy
IGJ1ZmZlciA9ICIiOworICBpZiAoanVzdGlmeSA9PT0gIisiICYmIGZpbHRlciA9PT0gIiAiKSB7
CisgICAgZm9yKHZhciBpID0gbGVuICxpX2ZpbmlzaCA9IHdpZHRoIC0gMSB8IDA7IGkgPD0gaV9m
aW5pc2g7ICsraSl7CisgICAgICBidWZmZXIgPSBidWZmZXIgKyBmaWx0ZXI7CisgICAgfQorICB9
CisgIGlmIChzaWduZWRjb252KSB7CisgICAgaWYgKHNpZ24gPCAwKSB7CisgICAgICBidWZmZXIg
PSBidWZmZXIgKyAiLSI7CisgICAgfQorICAgIGVsc2UgaWYgKHNpZ25zdHlsZSAhPT0gIi0iKSB7
CisgICAgICBidWZmZXIgPSBidWZmZXIgKyBzaWduc3R5bGU7CisgICAgfQorICAgIAorICB9Cisg
IGlmIChhbHRlcm5hdGUgJiYgYmFzZSA9PT0gLyogT2N0ICovMCkgeworICAgIGJ1ZmZlciA9IGJ1
ZmZlciArICIwIjsKKyAgfQorICBpZiAoYWx0ZXJuYXRlICYmIGJhc2UgPT09IC8qIEhleCAqLzEp
IHsKKyAgICBidWZmZXIgPSBidWZmZXIgKyAiMHgiOworICB9CisgIGlmIChqdXN0aWZ5ID09PSAi
KyIgJiYgZmlsdGVyID09PSAiMCIpIHsKKyAgICBmb3IodmFyIGkkMSA9IGxlbiAsaV9maW5pc2gk
MSA9IHdpZHRoIC0gMSB8IDA7IGkkMSA8PSBpX2ZpbmlzaCQxOyArK2kkMSl7CisgICAgICBidWZm
ZXIgPSBidWZmZXIgKyBmaWx0ZXI7CisgICAgfQorICB9CisgIGJ1ZmZlciA9IHVwcGVyY2FzZSA/
IGJ1ZmZlciArIHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpIDogYnVmZmVyICsgcmF3YnVmZmVyOwor
ICBpZiAoanVzdGlmeSA9PT0gIi0iKSB7CisgICAgZm9yKHZhciBpJDIgPSBsZW4gLGlfZmluaXNo
JDIgPSB3aWR0aCAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gkMjsgKytpJDIpeworICAgICAgYnVm
ZmVyID0gYnVmZmVyICsgIiAiOworICAgIH0KKyAgfQorICByZXR1cm4gYnVmZmVyOworfQorCitm
dW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7CisgIGlmIChmbXQgPT09ICIlZCIpIHsK
KyAgICByZXR1cm4gIiIgKyBpOworICB9CisgIGVsc2UgeworICAgIHZhciBmID0gcGFyc2VfZm9y
bWF0KGZtdCk7CisgICAgdmFyIGYkMSA9IGY7CisgICAgdmFyIGkkMSA9IGk7CisgICAgdmFyIGkk
MiA9IGkkMSA8IDAgPyAoCisgICAgICAgIGYkMVsvKiBzaWduZWRjb252ICovNV0gPyAoZiQxWy8q
IHNpZ24gKi84XSA9IC0xLCAtaSQxKSA6IChpJDEgPj4+IDApCisgICAgICApIDogaSQxOworICAg
IHZhciBzID0gaSQyLnRvU3RyaW5nKGludF9vZl9iYXNlKGYkMVsvKiBiYXNlICovNF0pKTsKKyAg
ICBpZiAoZiQxWy8qIHByZWMgKi85XSA+PSAwKSB7CisgICAgICBmJDFbLyogZmlsdGVyICovMl0g
PSAiICI7CisgICAgICB2YXIgbiA9IGYkMVsvKiBwcmVjICovOV0gLSBzLmxlbmd0aCB8IDA7Cisg
ICAgICBpZiAobiA+IDApIHsKKyAgICAgICAgcyA9IENhbWxfdXRpbHMucmVwZWF0KG4sICIwIikg
KyBzOworICAgICAgfQorICAgICAgCisgICAgfQorICAgIHJldHVybiBmaW5pc2hfZm9ybWF0dGlu
ZyhmJDEsIHMpOworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0KGZtdCwgeCkg
eworICB2YXIgZiA9IHBhcnNlX2Zvcm1hdChmbXQpOworICB2YXIgeCQxID0gZlsvKiBzaWduZWRj
b252ICovNV0gJiYgQ2FtbF9pbnQ2NC5sdCh4LCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgLyogaGkg
Ki8wLAorICAgICAgICAvKiBsbyAqLzAKKyAgICAgIF0pID8gKGZbLyogc2lnbiAqLzhdID0gLTEs
IENhbWxfaW50NjQubmVnKHgpKSA6IHg7CisgIHZhciBzID0gIiI7CisgIHZhciBtYXRjaCA9IGZb
LyogYmFzZSAqLzRdOworICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgY2FzZSAwIDogCisgICAgICAg
IHZhciB3YmFzZSA9IC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAg
ICAvKiBsbyAqLzgKKyAgICAgICAgXTsKKyAgICAgICAgdmFyIGN2dGJsID0gIjAxMjM0NTY3IjsK
KyAgICAgICAgaWYgKENhbWxfaW50NjQubHQoeCQxLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAg
ICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAg
IF0pKSB7CisgICAgICAgICAgdmFyIHkgPSBDYW1sX2ludDY0LmRpc2NhcmRfc2lnbih4JDEpOwor
ICAgICAgICAgIHZhciBtYXRjaCQxID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHksIHdiYXNlKTsKKyAg
ICAgICAgICB2YXIgcXVvdGllbnQgPSBDYW1sX2ludDY0LmFkZCgvKiBpbnQ2NCAqL1sKKyAgICAg
ICAgICAgICAgICAvKiBoaSAqLzI2ODQzNTQ1NiwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLzAK
KyAgICAgICAgICAgICAgXSwgbWF0Y2gkMVswXSk7CisgICAgICAgICAgdmFyIG1vZHVsdXMgPSBt
YXRjaCQxWzFdOworICAgICAgICAgIHMgPSBDYW1sX3N0cmluZy5qc19zdHJpbmdfb2ZfY2hhcihj
dnRibC5jaGFyQ29kZUF0KG1vZHVsdXNbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENh
bWxfaW50NjQubmVxKHF1b3RpZW50LCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgIC8q
IGhpICovMCwKKyAgICAgICAgICAgICAgICAgIC8qIGxvICovMAorICAgICAgICAgICAgICAgIF0p
KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMiA9IENhbWxfaW50NjQuZGl2X21vZChxdW90aWVu
dCwgd2Jhc2UpOworICAgICAgICAgICAgcXVvdGllbnQgPSBtYXRjaCQyWzBdOworICAgICAgICAg
ICAgbW9kdWx1cyA9IG1hdGNoJDJbMV07CisgICAgICAgICAgICBzID0gQ2FtbF9zdHJpbmcuanNf
c3RyaW5nX29mX2NoYXIoY3Z0YmwuY2hhckNvZGVBdChtb2R1bHVzWzFdIHwgMCkpICsgczsKKyAg
ICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBtYXRj
aCQzID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHgkMSwgd2Jhc2UpOworICAgICAgICAgIHZhciBxdW90
aWVudCQxID0gbWF0Y2gkM1swXTsKKyAgICAgICAgICB2YXIgbW9kdWx1cyQxID0gbWF0Y2gkM1sx
XTsKKyAgICAgICAgICBzID0gQ2FtbF9zdHJpbmcuanNfc3RyaW5nX29mX2NoYXIoY3Z0YmwuY2hh
ckNvZGVBdChtb2R1bHVzJDFbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxfaW50
NjQubmVxKHF1b3RpZW50JDEsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkg
Ki8wLAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgICAgXSkpIHsK
KyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1b3RpZW50JDEs
IHdiYXNlKTsKKyAgICAgICAgICAgIHF1b3RpZW50JDEgPSBtYXRjaCQ0WzBdOworICAgICAgICAg
ICAgbW9kdWx1cyQxID0gbWF0Y2gkNFsxXTsKKyAgICAgICAgICAgIHMgPSBDYW1sX3N0cmluZy5q
c19zdHJpbmdfb2ZfY2hhcihjdnRibC5jaGFyQ29kZUF0KG1vZHVsdXMkMVsxXSB8IDApKSArIHM7
CisgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIDEgOiAK
KyAgICAgICAgcyA9IENhbWxfaW50NjQudG9faGV4KHgkMSkgKyBzOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIDIgOiAKKyAgICAgICAgdmFyIHdiYXNlJDEgPSAvKiBpbnQ2NCAqL1sKKyAgICAg
ICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgLyogbG8gKi8xMAorICAgICAgICBdOworICAgICAg
ICB2YXIgY3Z0YmwkMSA9ICIwMTIzNDU2Nzg5IjsKKyAgICAgICAgaWYgKENhbWxfaW50NjQubHQo
eCQxLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAg
ICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgIF0pKSB7CisgICAgICAgICAgdmFyIHkkMSA9
IENhbWxfaW50NjQuZGlzY2FyZF9zaWduKHgkMSk7CisgICAgICAgICAgdmFyIG1hdGNoJDUgPSBD
YW1sX2ludDY0LmRpdl9tb2QoeSQxLCB3YmFzZSQxKTsKKyAgICAgICAgICB2YXIgbWF0Y2gkNiA9
IENhbWxfaW50NjQuZGl2X21vZChDYW1sX2ludDY0LmFkZCgvKiBpbnQ2NCAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAgICAgICAvKiBsbyAqLzgKKyAg
ICAgICAgICAgICAgICAgIF0sIG1hdGNoJDVbMV0pLCB3YmFzZSQxKTsKKyAgICAgICAgICB2YXIg
cXVvdGllbnQkMiA9IENhbWxfaW50NjQuYWRkKENhbWxfaW50NjQuYWRkKC8qIGludDY0ICovWwor
ICAgICAgICAgICAgICAgICAgICAvKiBoaSAqLzIxNDc0ODM2NCwKKyAgICAgICAgICAgICAgICAg
ICAgLyogbG8gKi8zNDM1OTczODM2CisgICAgICAgICAgICAgICAgICBdLCBtYXRjaCQ1WzBdKSwg
bWF0Y2gkNlswXSk7CisgICAgICAgICAgdmFyIG1vZHVsdXMkMiA9IG1hdGNoJDZbMV07CisgICAg
ICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNvZGVB
dChtb2R1bHVzJDJbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxfaW50NjQubmVx
KHF1b3RpZW50JDIsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8wLAor
ICAgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgICAgXSkpIHsKKyAgICAg
ICAgICAgIHZhciBtYXRjaCQ3ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1b3RpZW50JDIsIHdiYXNl
JDEpOworICAgICAgICAgICAgcXVvdGllbnQkMiA9IG1hdGNoJDdbMF07CisgICAgICAgICAgICBt
b2R1bHVzJDIgPSBtYXRjaCQ3WzFdOworICAgICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0
cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNvZGVBdChtb2R1bHVzJDJbMV0gfCAwKSkgKyBzOwor
ICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFyIG1h
dGNoJDggPSBDYW1sX2ludDY0LmRpdl9tb2QoeCQxLCB3YmFzZSQxKTsKKyAgICAgICAgICB2YXIg
cXVvdGllbnQkMyA9IG1hdGNoJDhbMF07CisgICAgICAgICAgdmFyIG1vZHVsdXMkMyA9IG1hdGNo
JDhbMV07CisgICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2dGJs
JDEuY2hhckNvZGVBdChtb2R1bHVzJDNbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENh
bWxfaW50NjQubmVxKHF1b3RpZW50JDMsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAg
LyogaGkgKi8wLAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgICAg
XSkpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1b3Rp
ZW50JDMsIHdiYXNlJDEpOworICAgICAgICAgICAgcXVvdGllbnQkMyA9IG1hdGNoJDlbMF07Cisg
ICAgICAgICAgICBtb2R1bHVzJDMgPSBtYXRjaCQ5WzFdOworICAgICAgICAgICAgcyA9IENhbWxf
c3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNvZGVBdChtb2R1bHVzJDNbMV0g
fCAwKSkgKyBzOworICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
CisgIH0KKyAgaWYgKGZbLyogcHJlYyAqLzldID49IDApIHsKKyAgICBmWy8qIGZpbHRlciAqLzJd
ID0gIiAiOworICAgIHZhciBuID0gZlsvKiBwcmVjICovOV0gLSBzLmxlbmd0aCB8IDA7CisgICAg
aWYgKG4gPiAwKSB7CisgICAgICBzID0gQ2FtbF91dGlscy5yZXBlYXQobiwgIjAiKSArIHM7Cisg
ICAgfQorICAgIAorICB9CisgIHJldHVybiBmaW5pc2hfZm9ybWF0dGluZyhmLCBzKTsKK30KKwor
ZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQoZm10LCB4KSB7CisgIHZhciBmID0gcGFyc2VfZm9y
bWF0KGZtdCk7CisgIHZhciBwcmVjID0gZlsvKiBwcmVjICovOV0gPCAwID8gNiA6IGZbLyogcHJl
YyAqLzldOworICB2YXIgeCQxID0geCA8IDAgPyAoZlsvKiBzaWduICovOF0gPSAtMSwgLXgpIDog
eDsKKyAgdmFyIHMgPSAiIjsKKyAgaWYgKGlzTmFOKHgkMSkpIHsKKyAgICBzID0gIm5hbiI7Cisg
ICAgZlsvKiBmaWx0ZXIgKi8yXSA9ICIgIjsKKyAgfQorICBlbHNlIGlmIChpc0Zpbml0ZSh4JDEp
KSB7CisgICAgdmFyIG1hdGNoID0gZlsvKiBjb252ICovMTBdOworICAgIHN3aXRjaCAobWF0Y2gp
IHsKKyAgICAgIGNhc2UgImUiIDogCisgICAgICAgICAgcyA9IHgkMS50b0V4cG9uZW50aWFsKHBy
ZWMpOworICAgICAgICAgIHZhciBpID0gcy5sZW5ndGg7CisgICAgICAgICAgaWYgKHNbaSAtIDMg
fCAwXSA9PT0gImUiKSB7CisgICAgICAgICAgICBzID0gcy5zbGljZSgwLCBpIC0gMSB8IDApICsg
KCIwIiArIHMuc2xpY2UoaSAtIDEgfCAwKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAiZiIgOiAKKyAgICAgICAgICBzID0geCQxLnRvRml4ZWQocHJlYyk7Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICJnIiA6IAorICAgICAgICAgIHZhciBwcmVjJDEg
PSBwcmVjICE9PSAwID8gcHJlYyA6IDE7CisgICAgICAgICAgcyA9IHgkMS50b0V4cG9uZW50aWFs
KHByZWMkMSAtIDEgfCAwKTsKKyAgICAgICAgICB2YXIgaiA9IHMuaW5kZXhPZigiZSIpOworICAg
ICAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSB8IDApOworICAgICAgICAgIGlmIChleHAg
PCAtNCB8fCB4JDEgPj0gMWUyMSB8fCB4JDEudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjJDEpIHsK
KyAgICAgICAgICAgIHZhciBpJDEgPSBqIC0gMSB8IDA7CisgICAgICAgICAgICB3aGlsZShzW2kk
MV0gPT09ICIwIikgeworICAgICAgICAgICAgICBpJDEgPSBpJDEgLSAxIHwgMDsKKyAgICAgICAg
ICAgIH07CisgICAgICAgICAgICBpZiAoc1tpJDFdID09PSAiLiIpIHsKKyAgICAgICAgICAgICAg
aSQxID0gaSQxIC0gMSB8IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzID0gcy5zbGlj
ZSgwLCBpJDEgKyAxIHwgMCkgKyBzLnNsaWNlKGopOworICAgICAgICAgICAgdmFyIGkkMiA9IHMu
bGVuZ3RoOworICAgICAgICAgICAgaWYgKHNbaSQyIC0gMyB8IDBdID09PSAiZSIpIHsKKyAgICAg
ICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSQyIC0gMSB8IDApICsgKCIwIiArIHMuc2xpY2UoaSQy
IC0gMSB8IDApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBwID0gcHJlYyQxOworICAgICAgICAgICAg
aWYgKGV4cCA8IDApIHsKKyAgICAgICAgICAgICAgcCA9IHAgLSAoZXhwICsgMSB8IDApIHwgMDsK
KyAgICAgICAgICAgICAgcyA9IHgkMS50b0ZpeGVkKHApOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHdoaWxlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcyA9IHgkMS50b0ZpeGVkKHApOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKyhzLmxlbmd0aCA+IChwcmVjJDEgKyAxIHwgMCkpOworICAgICAgICAgICAgICAgICAgfSgp
KSB7CisgICAgICAgICAgICAgICAgcCA9IHAgLSAxIHwgMDsKKyAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwICE9PSAwKSB7CisgICAgICAgICAgICAgIHZh
ciBrID0gcy5sZW5ndGggLSAxIHwgMDsKKyAgICAgICAgICAgICAgd2hpbGUoc1trXSA9PT0gIjAi
KSB7CisgICAgICAgICAgICAgICAgayA9IGsgLSAxIHwgMDsKKyAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgaWYgKHNba10gPT09ICIuIikgeworICAgICAgICAgICAgICAgIGsgPSBrIC0g
MSB8IDA7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwgayAr
IDEgfCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIAorICAgIH0KKyAgfQorICBlbHNl
IHsKKyAgICBzID0gImluZiI7CisgICAgZlsvKiBmaWx0ZXIgKi8yXSA9ICIgIjsKKyAgfQorICBy
ZXR1cm4gZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7Cit9CisKK3ZhciBmbG9hdF9vZl9zdHJpbmcg
PSAoCisgIGZ1bmN0aW9uIChzLCBjYW1sX2ZhaWx3aXRoKSB7CisgICAgdmFyIHJlcyA9ICtzOwor
ICAgIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKQorICAgICAgICByZXR1cm4g
cmVzOworICAgIHMgPSBzLnJlcGxhY2UoL18vZywgIiIpOworICAgIHJlcyA9ICtzOworICAgIGlm
ICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0
KHMpKSB7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIDsKKyAgICBpZiAoL14gKjB4
WzAtOWEtZl9dK3BbKy1dP1swLTlfXSsvaS50ZXN0KHMpKSB7CisgICAgICAgIHZhciBwaWR4ID0g
cy5pbmRleE9mKCdwJyk7CisgICAgICAgIHBpZHggPSAocGlkeCA9PSAtMSkgPyBzLmluZGV4T2Yo
J1AnKSA6IHBpZHg7CisgICAgICAgIHZhciBleHAgPSArcy5zdWJzdHJpbmcocGlkeCArIDEpOwor
ICAgICAgICByZXMgPSArcy5zdWJzdHJpbmcoMCwgcGlkeCk7CisgICAgICAgIHJldHVybiByZXMg
KiBNYXRoLnBvdygyLCBleHApOworICAgIH0KKyAgICBpZiAoL15cKz9pbmYoaW5pdHkpPyQvaS50
ZXN0KHMpKQorICAgICAgICByZXR1cm4gSW5maW5pdHk7CisgICAgaWYgKC9eLWluZihpbml0eSk/
JC9pLnRlc3QocykpCisgICAgICAgIHJldHVybiAtSW5maW5pdHk7CisgICAgY2FtbF9mYWlsd2l0
aCgiZmxvYXRfb2Zfc3RyaW5nIik7Cit9CisKKyk7CisKK2Z1bmN0aW9uIGNhbWxfZmxvYXRfb2Zf
c3RyaW5nKHMpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8yKGZsb2F0X29mX3N0cmluZywgcywgY2FtbF9m
YWlsd2l0aCk7Cit9CisKK3ZhciBjYW1sX25hdGl2ZWludF9mb3JtYXQgPSBjYW1sX2Zvcm1hdF9p
bnQ7CisKK3ZhciBjYW1sX2ludDMyX2Zvcm1hdCA9IGNhbWxfZm9ybWF0X2ludDsKKwordmFyIGNh
bWxfaW50MzJfb2Zfc3RyaW5nID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworCit2YXIgY2FtbF9uYXRp
dmVpbnRfb2Zfc3RyaW5nID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworCitleHBvcnRzLmNhbWxfZm9y
bWF0X2Zsb2F0ICAgICAgICA9IGNhbWxfZm9ybWF0X2Zsb2F0OworZXhwb3J0cy5jYW1sX2Zvcm1h
dF9pbnQgICAgICAgICAgPSBjYW1sX2Zvcm1hdF9pbnQ7CitleHBvcnRzLmNhbWxfbmF0aXZlaW50
X2Zvcm1hdCAgICA9IGNhbWxfbmF0aXZlaW50X2Zvcm1hdDsKK2V4cG9ydHMuY2FtbF9pbnQzMl9m
b3JtYXQgICAgICAgID0gY2FtbF9pbnQzMl9mb3JtYXQ7CitleHBvcnRzLmNhbWxfZmxvYXRfb2Zf
c3RyaW5nICAgICA9IGNhbWxfZmxvYXRfb2Zfc3RyaW5nOworZXhwb3J0cy5jYW1sX2ludDY0X2Zv
cm1hdCAgICAgICAgPSBjYW1sX2ludDY0X2Zvcm1hdDsKK2V4cG9ydHMuY2FtbF9pbnRfb2Zfc3Ry
aW5nICAgICAgID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworZXhwb3J0cy5jYW1sX2ludDMyX29mX3N0
cmluZyAgICAgPSBjYW1sX2ludDMyX29mX3N0cmluZzsKK2V4cG9ydHMuY2FtbF9pbnQ2NF9vZl9z
dHJpbmcgICAgID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmc7CitleHBvcnRzLmNhbWxfbmF0aXZlaW50
X29mX3N0cmluZyA9IGNhbWxfbmF0aXZlaW50X29mX3N0cmluZzsKKy8qIGZsb2F0X29mX3N0cmlu
ZyBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfZm9ybWF0LmpzIC8v
Ly8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2Nh
bWxfaW50MzInXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8v
Ly8vIHN0YXJ0IG9mIGNhbWxfaW50MzIuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFy
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucyIpOworCitmdW5jdGlvbiBkaXYoeCwgeSkgeworICBpZiAoeSA9PT0gMCkgeworICAgIHRo
cm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmRpdmlzaW9uX2J5X3plcm87CisgIH0KKyAgZWxz
ZSB7CisgICAgcmV0dXJuIHggLyB5IHwgMDsKKyAgfQorfQorCitmdW5jdGlvbiBtb2RfKHgsIHkp
IHsKKyAgaWYgKHkgPT09IDApIHsKKyAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5k
aXZpc2lvbl9ieV96ZXJvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiB4ICUgeTsKKyAgfQor
fQorCitmdW5jdGlvbiBjYW1sX2Jzd2FwMTYoeCkgeworICByZXR1cm4gKCh4ICYgMjU1KSA8PCA4
KSB8ICgoeCAmIDY1MjgwKSA+Pj4gOCk7Cit9CisKK2Z1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAo
eCkgeworICByZXR1cm4gKCh4ICYgMjU1KSA8PCAyNCkgfCAoKHggJiA2NTI4MCkgPDwgOCkgfCAo
KHggJiAxNjcxMTY4MCkgPj4+IDgpIHwgKCh4ICYgNDI3ODE5MDA4MCkgPj4+IDI0KTsKK30KKwor
dmFyIGltdWwgPSAoIE1hdGguaW11bCB8fCBmdW5jdGlvbiAoeCx5KSB7CisgIHkgfD0gMDsgcmV0
dXJuICgoKCh4ID4+IDE2KSAqIHkpIDw8IDE2KSArICh4ICYgMHhmZmZmKSAqIHkpfDA7IAorfQor
KTsKKwordmFyIGNhbWxfbmF0aXZlaW50X2Jzd2FwID0gY2FtbF9pbnQzMl9ic3dhcDsKKworZXhw
b3J0cy5kaXYgICAgICAgICAgICAgICAgICA9IGRpdjsKK2V4cG9ydHMubW9kXyAgICAgICAgICAg
ICAgICAgPSBtb2RfOworZXhwb3J0cy5jYW1sX2Jzd2FwMTYgICAgICAgICA9IGNhbWxfYnN3YXAx
NjsKK2V4cG9ydHMuY2FtbF9pbnQzMl9ic3dhcCAgICAgPSBjYW1sX2ludDMyX2Jzd2FwOworZXhw
b3J0cy5jYW1sX25hdGl2ZWludF9ic3dhcCA9IGNhbWxfbmF0aXZlaW50X2Jzd2FwOworZXhwb3J0
cy5pbXVsICAgICAgICAgICAgICAgICA9IGltdWw7CisvKiBpbXVsIE5vdCBhIHB1cmUgbW9kdWxl
ICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9pbnQzMi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJu
IGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX2ludDY0J10gPSBmdW5jdGlv
bigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX2lu
dDY0LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX29iaiAgICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF9vYmoiKTsKK3ZhciBDYW1sX2ludDMyICAgICAgICAgICAg
ICA9IHJlcXVpcmUoIi4vY2FtbF9pbnQzMiIpOwordmFyIENhbWxfdXRpbHMgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9jYW1sX3V0aWxzIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMg
PSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK3ZhciBtaW5faW50ID0g
LyogcmVjb3JkICovWworICAvKiBoaSAqLy0yMTQ3NDgzNjQ4LAorICAvKiBsbyAqLzAKK107CisK
K3ZhciBtYXhfaW50ID0gLyogcmVjb3JkICovWworICAvKiBoaSAqLzEzNDIxNzcyNywKKyAgLyog
bG8gKi8xCitdOworCit2YXIgb25lID0gLyogcmVjb3JkICovWworICAvKiBoaSAqLzAsCisgIC8q
IGxvICovMQorXTsKKwordmFyIHplcm8gPSAvKiByZWNvcmQgKi9bCisgIC8qIGhpICovMCwKKyAg
LyogbG8gKi8wCitdOworCit2YXIgbmVnX29uZSA9IC8qIHJlY29yZCAqL1sKKyAgLyogaGkgKi8t
MSwKKyAgLyogbG8gKi80Mjk0OTY3Mjk1CitdOworCitmdW5jdGlvbiBuZWdfc2lnbmVkKHgpIHsK
KyAgcmV0dXJuICsoKHggJiAyMTQ3NDgzNjQ4KSAhPT0gMCk7Cit9CisKK2Z1bmN0aW9uIGFkZChw
YXJhbSwgcGFyYW0kMSkgeworICB2YXIgb3RoZXJfbG93XyA9IHBhcmFtJDFbLyogbG8gKi8xXTsK
KyAgdmFyIHRoaXNfbG93XyA9IHBhcmFtWy8qIGxvICovMV07CisgIHZhciBsbyA9IHRoaXNfbG93
XyArIG90aGVyX2xvd18gJiA0Mjk0OTY3Mjk1OworICB2YXIgb3ZlcmZsb3cgPSBuZWdfc2lnbmVk
KHRoaXNfbG93XykgJiYgKG5lZ19zaWduZWQob3RoZXJfbG93XykgfHwgIW5lZ19zaWduZWQobG8p
KSB8fCBuZWdfc2lnbmVkKG90aGVyX2xvd18pICYmICFuZWdfc2lnbmVkKGxvKSA/IDEgOiAwOwor
ICB2YXIgaGkgPSBwYXJhbVsvKiBoaSAqLzBdICsgcGFyYW0kMVsvKiBoaSAqLzBdICsgb3ZlcmZs
b3cgJiA0Mjk0OTY3Mjk1OworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGhp
ICovaGksCisgICAgICAgICAgLyogbG8gKi8obG8gPj4+IDApCisgICAgICAgIF07Cit9CisKK2Z1
bmN0aW9uIG5vdChwYXJhbSkgeworICB2YXIgaGkgPSBwYXJhbVsvKiBoaSAqLzBdIF4gLTE7Cisg
IHZhciBsbyA9IHBhcmFtWy8qIGxvICovMV0gXiAtMTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sK
KyAgICAgICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgIC8qIGxvICovKGxvID4+PiAwKQorICAg
ICAgICBdOworfQorCitmdW5jdGlvbiBlcSh4LCB5KSB7CisgIGlmICh4Wy8qIGhpICovMF0gPT09
IHlbLyogaGkgKi8wXSkgeworICAgIHJldHVybiArKHhbLyogbG8gKi8xXSA9PT0geVsvKiBsbyAq
LzFdKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisK
K2Z1bmN0aW9uIG5lZyh4KSB7CisgIGlmIChlcSh4LCBtaW5faW50KSkgeworICAgIHJldHVybiBt
aW5faW50OworICB9CisgIGVsc2UgeworICAgIHJldHVybiBhZGQobm90KHgpLCBvbmUpOworICB9
Cit9CisKK2Z1bmN0aW9uIHN1Yih4LCB5KSB7CisgIHJldHVybiBhZGQoeCwgbmVnKHkpKTsKK30K
KworZnVuY3Rpb24gbHNsXyh4LCBudW1CaXRzKSB7CisgIHZhciBsbyA9IHhbLyogbG8gKi8xXTsK
KyAgaWYgKG51bUJpdHMpIHsKKyAgICBpZiAobnVtQml0cyA+PSAzMikgeworICAgICAgcmV0dXJu
IC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8obG8gPDwgKG51bUJpdHMgLSAz
MiB8IDApKSwKKyAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICBdOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHZhciBoaSA9IChsbyA+Pj4gKDMyIC0gbnVtQml0cyB8IDApKSB8
ICh4Wy8qIGhpICovMF0gPDwgbnVtQml0cyk7CisgICAgICByZXR1cm4gLyogcmVjb3JkICovWwor
ICAgICAgICAgICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgICAgICAvKiBsbyAqLygobG8gPDwg
bnVtQml0cykgPj4+IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4geDsKKyAgfQorfQorCitmdW5jdGlvbiBsc3JfKHgsIG51bUJpdHMpIHsKKyAgdmFy
IGhpID0geFsvKiBoaSAqLzBdOworICBpZiAobnVtQml0cykgeworICAgIHZhciBvZmZzZXQgPSBu
dW1CaXRzIC0gMzIgfCAwOworICAgIGlmIChvZmZzZXQpIHsKKyAgICAgIGlmIChvZmZzZXQgPiAw
KSB7CisgICAgICAgIHZhciBsbyA9IChoaSA+Pj4gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAgICAg
LyogbG8gKi8obG8gPj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgdmFyIGhpJDEgPSAoaGkgPj4+IG51bUJpdHMpOworICAgICAgICB2YXIgbG8k
MSA9IChoaSA8PCAoLW9mZnNldCB8IDApKSB8ICh4Wy8qIGxvICovMV0gPj4+IG51bUJpdHMpOwor
ICAgICAgICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgIC8qIGhpICovaGkk
MSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLyhsbyQxID4+PiAwKQorICAgICAgICAgICAgICBd
OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiByZWNvcmQgKi9b
CisgICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgLyogbG8gKi8oaGkgPj4+
IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4geDsK
KyAgfQorfQorCitmdW5jdGlvbiBhc3JfKHgsIG51bUJpdHMpIHsKKyAgdmFyIGhpID0geFsvKiBo
aSAqLzBdOworICBpZiAobnVtQml0cykgeworICAgIGlmIChudW1CaXRzIDwgMzIpIHsKKyAgICAg
IHZhciBoaSQxID0gKGhpID4+IG51bUJpdHMpOworICAgICAgdmFyIGxvID0gKGhpIDw8ICgzMiAt
IG51bUJpdHMgfCAwKSkgfCAoeFsvKiBsbyAqLzFdID4+PiBudW1CaXRzKTsKKyAgICAgIHJldHVy
biAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICovaGkkMSwKKyAgICAgICAgICAg
ICAgLyogbG8gKi8obG8gPj4+IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHZhciBsbyQxID0gKGhpID4+IChudW1CaXRzIC0gMzIgfCAwKSk7CisgICAgICByZXR1
cm4gLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiBoaSAqL2hpID49IDAgPyAwIDogLTEs
CisgICAgICAgICAgICAgIC8qIGxvICovKGxvJDEgPj4+IDApCisgICAgICAgICAgICBdOworICAg
IH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4geDsKKyAgfQorfQorCitmdW5jdGlvbiBpc196
ZXJvKHBhcmFtKSB7CisgIGlmIChwYXJhbVsvKiBoaSAqLzBdICE9PSAwIHx8IHBhcmFtWy8qIGxv
ICovMV0gIT09IDApIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgfQorfQorCitmdW5jdGlvbiBtdWwoX3RoaXMsIF9v
dGhlcikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG90aGVyID0gX290aGVyOworICAgIHZh
ciAkJHRoaXMgPSBfdGhpczsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgdmFyIGxvOworICAgIHZh
ciB0aGlzX2hpID0gJCR0aGlzWy8qIGhpICovMF07CisgICAgdmFyIGV4aXQkMSA9IDA7CisgICAg
dmFyIGV4aXQkMiA9IDA7CisgICAgdmFyIGV4aXQkMyA9IDA7CisgICAgaWYgKHRoaXNfaGkgIT09
IDApIHsKKyAgICAgIGV4aXQkMyA9IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKCQkdGhpc1svKiBs
byAqLzFdICE9PSAwKSB7CisgICAgICBleGl0JDMgPSA0OworICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIHJldHVybiB6ZXJvOworICAgIH0KKyAgICBpZiAoZXhpdCQzID09PSA0KSB7CisgICAgICBp
ZiAob3RoZXJbLyogaGkgKi8wXSAhPT0gMCkgeworICAgICAgICBleGl0JDIgPSAzOworICAgICAg
fQorICAgICAgZWxzZSBpZiAob3RoZXJbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICBleGl0
JDIgPSAzOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiB6ZXJvOworICAg
ICAgfQorICAgIH0KKyAgICBpZiAoZXhpdCQyID09PSAzKSB7CisgICAgICBpZiAodGhpc19oaSAh
PT0gLTIxNDc0ODM2NDgpIHsKKyAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgIH0KKyAgICAgIGVs
c2UgaWYgKCQkdGhpc1svKiBsbyAqLzFdICE9PSAwKSB7CisgICAgICAgIGV4aXQkMSA9IDI7Cisg
ICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgbG8gPSBvdGhlclsvKiBsbyAqLzFdOworICAg
ICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKGV4aXQkMSA9PT0gMikgewor
ICAgICAgdmFyIG90aGVyX2hpID0gb3RoZXJbLyogaGkgKi8wXTsKKyAgICAgIHZhciBsbyQxID0g
JCR0aGlzWy8qIGxvICovMV07CisgICAgICB2YXIgZXhpdCQ0ID0gMDsKKyAgICAgIGlmIChvdGhl
cl9oaSAhPT0gLTIxNDc0ODM2NDgpIHsKKyAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKG90aGVyWy8qIGxvICovMV0gIT09IDApIHsKKyAgICAgICAgZXhpdCQ0ID0g
MzsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBsbyA9IGxvJDE7CisgICAgICAgIGV4
aXQgPSAxOworICAgICAgfQorICAgICAgaWYgKGV4aXQkNCA9PT0gMykgeworICAgICAgICB2YXIg
b3RoZXJfbG8gPSBvdGhlclsvKiBsbyAqLzFdOworICAgICAgICBpZiAodGhpc19oaSA8IDApIHsK
KyAgICAgICAgICBpZiAob3RoZXJfaGkgPCAwKSB7CisgICAgICAgICAgICBfb3RoZXIgPSBuZWco
b3RoZXIpOworICAgICAgICAgICAgX3RoaXMgPSBuZWcoJCR0aGlzKTsKKyAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHJldHVybiBuZWcobXVsKG5lZygkJHRoaXMpLCBvdGhlcikpOworICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChvdGhlcl9oaSA8IDApIHsKKyAgICAgICAg
ICByZXR1cm4gbmVnKG11bCgkJHRoaXMsIG5lZyhvdGhlcikpKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICB2YXIgYTQ4ID0gKHRoaXNfaGkgPj4+IDE2KTsKKyAgICAgICAg
ICB2YXIgYTMyID0gdGhpc19oaSAmIDY1NTM1OworICAgICAgICAgIHZhciBhMTYgPSAobG8kMSA+
Pj4gMTYpOworICAgICAgICAgIHZhciBhMDAgPSBsbyQxICYgNjU1MzU7CisgICAgICAgICAgdmFy
IGI0OCA9IChvdGhlcl9oaSA+Pj4gMTYpOworICAgICAgICAgIHZhciBiMzIgPSBvdGhlcl9oaSAm
IDY1NTM1OworICAgICAgICAgIHZhciBiMTYgPSAob3RoZXJfbG8gPj4+IDE2KTsKKyAgICAgICAg
ICB2YXIgYjAwID0gb3RoZXJfbG8gJiA2NTUzNTsKKyAgICAgICAgICB2YXIgYzQ4ID0gMDsKKyAg
ICAgICAgICB2YXIgYzMyID0gMDsKKyAgICAgICAgICB2YXIgYzE2ID0gMDsKKyAgICAgICAgICB2
YXIgYzAwID0gYTAwICogYjAwOworICAgICAgICAgIGMxNiA9IChjMDAgPj4+IDE2KSArIGExNiAq
IGIwMDsKKyAgICAgICAgICBjMzIgPSAoYzE2ID4+PiAxNik7CisgICAgICAgICAgYzE2ID0gKGMx
NiAmIDY1NTM1KSArIGEwMCAqIGIxNjsKKyAgICAgICAgICBjMzIgPSBjMzIgKyAoYzE2ID4+PiAx
NikgKyBhMzIgKiBiMDA7CisgICAgICAgICAgYzQ4ID0gKGMzMiA+Pj4gMTYpOworICAgICAgICAg
IGMzMiA9IChjMzIgJiA2NTUzNSkgKyBhMTYgKiBiMTY7CisgICAgICAgICAgYzQ4ICs9IChjMzIg
Pj4+IDE2KTsKKyAgICAgICAgICBjMzIgPSAoYzMyICYgNjU1MzUpICsgYTAwICogYjMyOworICAg
ICAgICAgIGM0OCArPSAoYzMyID4+PiAxNik7CisgICAgICAgICAgYzMyID0gYzMyICYgNjU1MzU7
CisgICAgICAgICAgYzQ4ID0gYzQ4ICsgKGE0OCAqIGIwMCArIGEzMiAqIGIxNiArIGExNiAqIGIz
MiArIGEwMCAqIGI0OCkgJiA2NTUzNTsKKyAgICAgICAgICB2YXIgaGkgPSBjMzIgfCAoYzQ4IDw8
IDE2KTsKKyAgICAgICAgICB2YXIgbG8kMiA9IGMwMCAmIDY1NTM1IHwgKChjMTYgJiA2NTUzNSkg
PDwgMTYpOworICAgICAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAg
ICAvKiBoaSAqL2hpLAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8obG8kMiA+Pj4gMCkKKyAg
ICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAg
aWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIGlmICgobG8gJiAxKSA9PT0gMCkgeworICAgICAgICBy
ZXR1cm4gemVybzsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gbWluX2lu
dDsKKyAgICAgIH0KKyAgICB9CisgICAgCisgIH07Cit9CisKK2Z1bmN0aW9uIHN3YXAocGFyYW0p
IHsKKyAgdmFyIGhpID0gQ2FtbF9pbnQzMi5jYW1sX2ludDMyX2Jzd2FwKHBhcmFtWy8qIGxvICov
MV0pOworICB2YXIgbG8gPSBDYW1sX2ludDMyLmNhbWxfaW50MzJfYnN3YXAocGFyYW1bLyogaGkg
Ki8wXSk7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogaGkgKi9oaSwKKyAg
ICAgICAgICAvKiBsbyAqLyhsbyA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24geG9y
KHBhcmFtLCBwYXJhbSQxKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyog
aGkgKi9wYXJhbVsvKiBoaSAqLzBdIF4gcGFyYW0kMVsvKiBoaSAqLzBdLAorICAgICAgICAgIC8q
IGxvICovKChwYXJhbVsvKiBsbyAqLzFdIF4gcGFyYW0kMVsvKiBsbyAqLzFdKSA+Pj4gMCkKKyAg
ICAgICAgXTsKK30KKworZnVuY3Rpb24gb3JfKHBhcmFtLCBwYXJhbSQxKSB7CisgIHJldHVybiAv
KiByZWNvcmQgKi9bCisgICAgICAgICAgLyogaGkgKi9wYXJhbVsvKiBoaSAqLzBdIHwgcGFyYW0k
MVsvKiBoaSAqLzBdLAorICAgICAgICAgIC8qIGxvICovKChwYXJhbVsvKiBsbyAqLzFdIHwgcGFy
YW0kMVsvKiBsbyAqLzFdKSA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gYW5kXyhw
YXJhbSwgcGFyYW0kMSkgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGhp
ICovcGFyYW1bLyogaGkgKi8wXSAmIHBhcmFtJDFbLyogaGkgKi8wXSwKKyAgICAgICAgICAvKiBs
byAqLygocGFyYW1bLyogbG8gKi8xXSAmIHBhcmFtJDFbLyogbG8gKi8xXSkgPj4+IDApCisgICAg
ICAgIF07Cit9CisKK2Z1bmN0aW9uIGdlKHBhcmFtLCBwYXJhbSQxKSB7CisgIHZhciBvdGhlcl9o
aSA9IHBhcmFtJDFbLyogaGkgKi8wXTsKKyAgdmFyIGhpID0gcGFyYW1bLyogaGkgKi8wXTsKKyAg
aWYgKGhpID4gb3RoZXJfaGkpIHsKKyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgIH0KKyAgZWxz
ZSBpZiAoaGkgPCBvdGhlcl9oaSkgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuICsocGFyYW1bLyogbG8gKi8xXSA+PSBwYXJhbSQxWy8qIGxvICov
MV0pOworICB9Cit9CisKK2Z1bmN0aW9uIG5lcSh4LCB5KSB7CisgIHJldHVybiAxIC0gZXEoeCwg
eSk7Cit9CisKK2Z1bmN0aW9uIGx0KHgsIHkpIHsKKyAgcmV0dXJuIDEgLSBnZSh4LCB5KTsKK30K
KworZnVuY3Rpb24gZ3QoeCwgeSkgeworICBpZiAoeFsvKiBoaSAqLzBdID4geVsvKiBoaSAqLzBd
KSB7CisgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICB9CisgIGVsc2UgaWYgKHhbLyogaGkgKi8w
XSA8IHlbLyogaGkgKi8wXSkgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KKyAgZWxz
ZSB7CisgICAgcmV0dXJuICsoeFsvKiBsbyAqLzFdID4geVsvKiBsbyAqLzFdKTsKKyAgfQorfQor
CitmdW5jdGlvbiBsZSh4LCB5KSB7CisgIHJldHVybiAxIC0gZ3QoeCwgeSk7Cit9CisKK2Z1bmN0
aW9uIHRvX2Zsb2F0KHBhcmFtKSB7CisgIHJldHVybiBwYXJhbVsvKiBoaSAqLzBdICogNDI5NDk2
NzI5NiArIHBhcmFtWy8qIGxvICovMV07Cit9CisKK3ZhciB0d29fcHRyXzMyX2RibCA9IE1hdGgu
cG93KDIsIDMyKTsKKwordmFyIHR3b19wdHJfNjNfZGJsID0gTWF0aC5wb3coMiwgNjMpOworCit2
YXIgbmVnX3R3b19wdHJfNjMgPSAtTWF0aC5wb3coMiwgNjMpOworCitmdW5jdGlvbiBvZl9mbG9h
dCh4KSB7CisgIGlmIChpc05hTih4KSB8fCAhaXNGaW5pdGUoeCkpIHsKKyAgICByZXR1cm4gemVy
bzsKKyAgfQorICBlbHNlIGlmICh4IDw9IG5lZ190d29fcHRyXzYzKSB7CisgICAgcmV0dXJuIG1p
bl9pbnQ7CisgIH0KKyAgZWxzZSBpZiAoeCArIDEgPj0gdHdvX3B0cl82M19kYmwpIHsKKyAgICBy
ZXR1cm4gbWF4X2ludDsKKyAgfQorICBlbHNlIGlmICh4IDwgMCkgeworICAgIHJldHVybiBuZWco
b2ZfZmxvYXQoLXgpKTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgaGkgPSB4IC8gdHdvX3B0cl8z
Ml9kYmwgfCAwOworICAgIHZhciBsbyA9IHggJSB0d29fcHRyXzMyX2RibCB8IDA7CisgICAgcmV0
dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIGhpICovaGksCisgICAgICAgICAgICAv
KiBsbyAqLyhsbyA+Pj4gMCkKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGRpdihf
c2VsZiwgX290aGVyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgb3RoZXIgPSBfb3RoZXI7
CisgICAgdmFyIHNlbGYgPSBfc2VsZjsKKyAgICB2YXIgc2VsZl9oaSA9IHNlbGZbLyogaGkgKi8w
XTsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgaWYgKG90aGVy
Wy8qIGhpICovMF0gIT09IDApIHsKKyAgICAgIGV4aXQkMSA9IDI7CisgICAgfQorICAgIGVsc2Ug
aWYgKG90aGVyWy8qIGxvICovMV0gIT09IDApIHsKKyAgICAgIGV4aXQkMSA9IDI7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZGl2aXNpb25f
YnlfemVybzsKKyAgICB9CisgICAgaWYgKGV4aXQkMSA9PT0gMikgeworICAgICAgaWYgKHNlbGZf
aGkgIT09IC0yMTQ3NDgzNjQ4KSB7CisgICAgICAgIGlmIChzZWxmX2hpICE9PSAwKSB7CisgICAg
ICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc2VsZlsvKiBsbyAq
LzFdICE9PSAwKSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgcmV0dXJuIHplcm87CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVs
c2UgaWYgKHNlbGZbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICBleGl0ID0gMTsKKyAgICAg
IH0KKyAgICAgIGVsc2UgaWYgKGVxKG90aGVyLCBvbmUpIHx8IGVxKG90aGVyLCBuZWdfb25lKSkg
eworICAgICAgICByZXR1cm4gc2VsZjsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGVxKG90aGVy
LCBtaW5faW50KSkgeworICAgICAgICByZXR1cm4gb25lOworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHZhciBvdGhlcl9oaSA9IG90aGVyWy8qIGhpICovMF07CisgICAgICAgIHZhciBo
YWxmX3RoaXMgPSBhc3JfKHNlbGYsIDEpOworICAgICAgICB2YXIgYXBwcm94ID0gbHNsXyhkaXYo
aGFsZl90aGlzLCBvdGhlciksIDEpOworICAgICAgICB2YXIgZXhpdCQyID0gMDsKKyAgICAgICAg
aWYgKGFwcHJveFsvKiBoaSAqLzBdICE9PSAwKSB7CisgICAgICAgICAgZXhpdCQyID0gMzsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmIChhcHByb3hbLyogbG8gKi8xXSAhPT0gMCkgeworICAg
ICAgICAgIGV4aXQkMiA9IDM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAob3RoZXJfaGkg
PCAwKSB7CisgICAgICAgICAgcmV0dXJuIG9uZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICByZXR1cm4gbmVnKG9uZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQk
MiA9PT0gMykgeworICAgICAgICAgIHZhciB5ID0gbXVsKG90aGVyLCBhcHByb3gpOworICAgICAg
ICAgIHZhciByZW0gPSBhZGQoc2VsZiwgbmVnKHkpKTsKKyAgICAgICAgICByZXR1cm4gYWRkKGFw
cHJveCwgZGl2KHJlbSwgb3RoZXIpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgIH0KKyAg
ICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIHZhciBvdGhlcl9oaSQxID0gb3RoZXJb
LyogaGkgKi8wXTsKKyAgICAgIHZhciBleGl0JDMgPSAwOworICAgICAgaWYgKG90aGVyX2hpJDEg
IT09IC0yMTQ3NDgzNjQ4KSB7CisgICAgICAgIGV4aXQkMyA9IDI7CisgICAgICB9CisgICAgICBl
bHNlIGlmIChvdGhlclsvKiBsbyAqLzFdICE9PSAwKSB7CisgICAgICAgIGV4aXQkMyA9IDI7Cisg
ICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHplcm87CisgICAgICB9CisgICAg
ICBpZiAoZXhpdCQzID09PSAyKSB7CisgICAgICAgIGlmIChzZWxmX2hpIDwgMCkgeworICAgICAg
ICAgIGlmIChvdGhlcl9oaSQxIDwgMCkgeworICAgICAgICAgICAgX290aGVyID0gbmVnKG90aGVy
KTsKKyAgICAgICAgICAgIF9zZWxmID0gbmVnKHNlbGYpOworICAgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgcmV0dXJuIG5lZyhkaXYobmVnKHNlbGYpLCBvdGhlcikpOworICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBlbHNlIGlmIChvdGhlcl9oaSQxIDwgMCkgeworICAgICAgICAgIHJldHVy
biBuZWcoZGl2KHNlbGYsIG5lZyhvdGhlcikpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICB2YXIgcmVzID0gemVybzsKKyAgICAgICAgICB2YXIgcmVtJDEgPSBzZWxmOwor
ICAgICAgICAgIHdoaWxlKGdlKHJlbSQxLCBvdGhlcikpIHsKKyAgICAgICAgICAgIHZhciBhcHBy
b3gkMSA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3IodG9fZmxvYXQocmVtJDEpIC8gdG9fZmxvYXQo
b3RoZXIpKSk7CisgICAgICAgICAgICB2YXIgbG9nMiA9IE1hdGguY2VpbChNYXRoLmxvZyhhcHBy
b3gkMSkgLyBNYXRoLkxOMik7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBsb2cyIDw9IDQ4ID8g
MSA6IE1hdGgucG93KDIsIGxvZzIgLSA0OCk7CisgICAgICAgICAgICB2YXIgYXBwcm94UmVzID0g
b2ZfZmxvYXQoYXBwcm94JDEpOworICAgICAgICAgICAgdmFyIGFwcHJveFJlbSA9IG11bChhcHBy
b3hSZXMsIG90aGVyKTsKKyAgICAgICAgICAgIHdoaWxlKGFwcHJveFJlbVsvKiBoaSAqLzBdIDwg
MCB8fCBndChhcHByb3hSZW0sIHJlbSQxKSkgeworICAgICAgICAgICAgICBhcHByb3gkMSAtPSBk
ZWx0YTsKKyAgICAgICAgICAgICAgYXBwcm94UmVzID0gb2ZfZmxvYXQoYXBwcm94JDEpOworICAg
ICAgICAgICAgICBhcHByb3hSZW0gPSBtdWwoYXBwcm94UmVzLCBvdGhlcik7CisgICAgICAgICAg
ICB9OworICAgICAgICAgICAgaWYgKGlzX3plcm8oYXBwcm94UmVzKSkgeworICAgICAgICAgICAg
ICBhcHByb3hSZXMgPSBvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBhZGQo
cmVzLCBhcHByb3hSZXMpOworICAgICAgICAgICAgcmVtJDEgPSBhZGQocmVtJDEsIG5lZyhhcHBy
b3hSZW0pKTsKKyAgICAgICAgICB9OworICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIAorICAgIH0KKyAgICAKKyAgfTsKK30KKworZnVuY3Rpb24gbW9kXyhz
ZWxmLCBvdGhlcikgeworICB2YXIgeSA9IG11bChkaXYoc2VsZiwgb3RoZXIpLCBvdGhlcik7Cisg
IHJldHVybiBhZGQoc2VsZiwgbmVnKHkpKTsKK30KKworZnVuY3Rpb24gZGl2X21vZChzZWxmLCBv
dGhlcikgeworICB2YXIgcXVvdGllbnQgPSBkaXYoc2VsZiwgb3RoZXIpOworICB2YXIgeSA9IG11
bChxdW90aWVudCwgb3RoZXIpOworICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgcXVv
dGllbnQsCisgICAgICAgICAgYWRkKHNlbGYsIG5lZyh5KSkKKyAgICAgICAgXTsKK30KKworZnVu
Y3Rpb24gY29tcGFyZShzZWxmLCBvdGhlcikgeworICB2YXIgdiA9IENhbWxfb2JqLmNhbWxfbmF0
aXZlaW50X2NvbXBhcmUoc2VsZlsvKiBoaSAqLzBdLCBvdGhlclsvKiBoaSAqLzBdKTsKKyAgaWYg
KHYpIHsKKyAgICByZXR1cm4gdjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2FtbF9vYmou
Y2FtbF9uYXRpdmVpbnRfY29tcGFyZShzZWxmWy8qIGxvICovMV0sIG90aGVyWy8qIGxvICovMV0p
OworICB9Cit9CisKK2Z1bmN0aW9uIG9mX2ludDMyKGxvKSB7CisgIHJldHVybiAvKiByZWNvcmQg
Ki9bCisgICAgICAgICAgLyogaGkgKi9sbyA8IDAgPyAtMSA6IDAsCisgICAgICAgICAgLyogbG8g
Ki8obG8gPj4+IDApCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRvX2ludDMyKHgpIHsKKyAg
cmV0dXJuIHhbLyogbG8gKi8xXSB8IDA7Cit9CisKK2Z1bmN0aW9uIHRvX2hleCh4KSB7CisgIHZh
ciBhdXggPSBmdW5jdGlvbiAodikgeworICAgIHJldHVybiAodiA+Pj4gMCkudG9TdHJpbmcoMTYp
OworICB9OworICB2YXIgbWF0Y2ggPSB4Wy8qIGhpICovMF07CisgIHZhciBtYXRjaCQxID0geFsv
KiBsbyAqLzFdOworICB2YXIgZXhpdCA9IDA7CisgIGlmIChtYXRjaCAhPT0gMCkgeworICAgIGV4
aXQgPSAxOworICB9CisgIGVsc2UgaWYgKG1hdGNoJDEgIT09IDApIHsKKyAgICBleGl0ID0gMTsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gIjAiOworICB9CisgIGlmIChleGl0ID09PSAxKSB7
CisgICAgaWYgKG1hdGNoJDEgIT09IDApIHsKKyAgICAgIGlmIChtYXRjaCAhPT0gMCkgeworICAg
ICAgICB2YXIgbG8gPSBhdXgoeFsvKiBsbyAqLzFdKTsKKyAgICAgICAgdmFyIHBhZCA9IDggLSBs
by5sZW5ndGggfCAwOworICAgICAgICBpZiAocGFkIDw9IDApIHsKKyAgICAgICAgICByZXR1cm4g
YXV4KHhbLyogaGkgKi8wXSkgKyBsbzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICByZXR1cm4gYXV4KHhbLyogaGkgKi8wXSkgKyAoQ2FtbF91dGlscy5yZXBlYXQocGFkLCAi
MCIpICsgbG8pOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0
dXJuIGF1eCh4Wy8qIGxvICovMV0pOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHJldHVybiBhdXgoeFsvKiBoaSAqLzBdKSArICIwMDAwMDAwMCI7CisgICAgfQorICB9CisgIAor
fQorCitmdW5jdGlvbiBkaXNjYXJkX3NpZ24oeCkgeworICByZXR1cm4gLyogcmVjb3JkICovWwor
ICAgICAgICAgIC8qIGhpICovMjE0NzQ4MzY0NyAmIHhbLyogaGkgKi8wXSwKKyAgICAgICAgICAv
KiBsbyAqL3hbLyogbG8gKi8xXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBmbG9hdF9vZl9i
aXRzKHgpIHsKKyAgdmFyIGludDMyID0gbmV3IEludDMyQXJyYXkoLyogYXJyYXkgKi9bCisgICAg
ICAgIHhbLyogbG8gKi8xXSwKKyAgICAgICAgeFsvKiBoaSAqLzBdCisgICAgICBdKTsKKyAgcmV0
dXJuIG5ldyBGbG9hdDY0QXJyYXkoaW50MzIuYnVmZmVyKVswXTsKK30KKworZnVuY3Rpb24gYml0
c19vZl9mbG9hdCh4KSB7CisgIHZhciB0b19uYXQgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVy
biB4OworICB9OworICB2YXIgdSA9IG5ldyBGbG9hdDY0QXJyYXkoLyogZmxvYXQgYXJyYXkgKi9b
eF0pOworICB2YXIgaW50MzIgPSBuZXcgSW50MzJBcnJheSh1LmJ1ZmZlcik7CisgIHZhciBoaSA9
IHRvX25hdChpbnQzMlsxXSk7CisgIHZhciBsbyA9IHRvX25hdChpbnQzMlswXSk7CisgIHJldHVy
biAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogaGkgKi9oaSwKKyAgICAgICAgICAvKiBsbyAq
LyhsbyA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZ2V0NjQocywgaSkgeworICB2
YXIgaGkgPSAocy5jaGFyQ29kZUF0KGkgKyA0IHwgMCkgPDwgMzIpIHwgKHMuY2hhckNvZGVBdChp
ICsgNSB8IDApIDw8IDQwKSB8IChzLmNoYXJDb2RlQXQoaSArIDYgfCAwKSA8PCA0OCkgfCAocy5j
aGFyQ29kZUF0KGkgKyA3IHwgMCkgPDwgNTYpOworICB2YXIgbG8gPSBzLmNoYXJDb2RlQXQoaSkg
fCAocy5jaGFyQ29kZUF0KGkgKyAxIHwgMCkgPDwgOCkgfCAocy5jaGFyQ29kZUF0KGkgKyAyIHwg
MCkgPDwgMTYpIHwgKHMuY2hhckNvZGVBdChpICsgMyB8IDApIDw8IDI0KTsKKyAgcmV0dXJuIC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgIC8qIGxvICovKGxv
ID4+PiAwKQorICAgICAgICBdOworfQorCitleHBvcnRzLm1pbl9pbnQgICAgICAgPSBtaW5faW50
OworZXhwb3J0cy5tYXhfaW50ICAgICAgID0gbWF4X2ludDsKK2V4cG9ydHMub25lICAgICAgICAg
ICA9IG9uZTsKK2V4cG9ydHMuemVybyAgICAgICAgICA9IHplcm87CitleHBvcnRzLm5vdCAgICAg
ICAgICAgPSBub3Q7CitleHBvcnRzLm9mX2ludDMyICAgICAgPSBvZl9pbnQzMjsKK2V4cG9ydHMu
dG9faW50MzIgICAgICA9IHRvX2ludDMyOworZXhwb3J0cy5hZGQgICAgICAgICAgID0gYWRkOwor
ZXhwb3J0cy5uZWcgICAgICAgICAgID0gbmVnOworZXhwb3J0cy5zdWIgICAgICAgICAgID0gc3Vi
OworZXhwb3J0cy5sc2xfICAgICAgICAgID0gbHNsXzsKK2V4cG9ydHMubHNyXyAgICAgICAgICA9
IGxzcl87CitleHBvcnRzLmFzcl8gICAgICAgICAgPSBhc3JfOworZXhwb3J0cy5pc196ZXJvICAg
ICAgID0gaXNfemVybzsKK2V4cG9ydHMubXVsICAgICAgICAgICA9IG11bDsKK2V4cG9ydHMueG9y
ICAgICAgICAgICA9IHhvcjsKK2V4cG9ydHMub3JfICAgICAgICAgICA9IG9yXzsKK2V4cG9ydHMu
YW5kXyAgICAgICAgICA9IGFuZF87CitleHBvcnRzLnN3YXAgICAgICAgICAgPSBzd2FwOworZXhw
b3J0cy5nZSAgICAgICAgICAgID0gZ2U7CitleHBvcnRzLmVxICAgICAgICAgICAgPSBlcTsKK2V4
cG9ydHMubmVxICAgICAgICAgICA9IG5lcTsKK2V4cG9ydHMubHQgICAgICAgICAgICA9IGx0Owor
ZXhwb3J0cy5ndCAgICAgICAgICAgID0gZ3Q7CitleHBvcnRzLmxlICAgICAgICAgICAgPSBsZTsK
K2V4cG9ydHMudG9fZmxvYXQgICAgICA9IHRvX2Zsb2F0OworZXhwb3J0cy5vZl9mbG9hdCAgICAg
ID0gb2ZfZmxvYXQ7CitleHBvcnRzLmRpdiAgICAgICAgICAgPSBkaXY7CitleHBvcnRzLm1vZF8g
ICAgICAgICAgPSBtb2RfOworZXhwb3J0cy5kaXZfbW9kICAgICAgID0gZGl2X21vZDsKK2V4cG9y
dHMuY29tcGFyZSAgICAgICA9IGNvbXBhcmU7CitleHBvcnRzLnRvX2hleCAgICAgICAgPSB0b19o
ZXg7CitleHBvcnRzLmRpc2NhcmRfc2lnbiAgPSBkaXNjYXJkX3NpZ247CitleHBvcnRzLmZsb2F0
X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzOworZXhwb3J0cy5iaXRzX29mX2Zsb2F0ID0gYml0c19v
Zl9mbG9hdDsKK2V4cG9ydHMuZ2V0NjQgICAgICAgICA9IGdldDY0OworLyogdHdvX3B0cl8zMl9k
YmwgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX2ludDY0LmpzIC8v
Ly8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2Nh
bWxpbnRlcm5hbEZvcm1hdEJhc2ljcyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0
cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmpzIC8v
Ly8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBCbG9jayA9IHJlcXVpcmUoIi4vYmxvY2siKTsK
KworZnVuY3Rpb24gZXJhc2VfcmVsKHBhcmFtKSB7CisgIGlmICh0eXBlb2YgcGFyYW0gPT09ICJu
dW1iZXIiKSB7CisgICAgcmV0dXJuIC8qIEVuZF9vZl9mbXR0eSAqLzA7CisgIH0KKyAgZWxzZSB7
CisgICAgc3dpdGNoIChwYXJhbS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICByZXR1cm4gLyogQ2hhcl90eSAqL0Jsb2NrLl9fKDAsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7
CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogU3RyaW5nX3R5ICovQmxvY2su
X18oMSwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAg
IHJldHVybiAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOwor
ICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIC8qIEludDMyX3R5ICovQmxvY2suX18o
MywgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJl
dHVybiAvKiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0p
OworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIC8qIEludDY0X3R5ICovQmxvY2su
X18oNSwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAg
IHJldHVybiAvKiBGbG9hdF90eSAqL0Jsb2NrLl9fKDYsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7
CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9f
KDcsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICBy
ZXR1cm4gLyogRm9ybWF0X2FyZ190eSAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW1bMF0sCisgICAgICAgICAgICAgICAgICAgIGVyYXNlX3JlbChwYXJhbVsxXSkKKyAg
ICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgdmFyIHR5MSA9
IHBhcmFtWzBdOworICAgICAgICAgIHJldHVybiAvKiBGb3JtYXRfc3Vic3RfdHkgKi9CbG9jay5f
Xyg5LCBbCisgICAgICAgICAgICAgICAgICAgIHR5MSwKKyAgICAgICAgICAgICAgICAgICAgdHkx
LAorICAgICAgICAgICAgICAgICAgICBlcmFzZV9yZWwocGFyYW1bMl0pCisgICAgICAgICAgICAg
ICAgICBdKTsKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICByZXR1cm4gLyogQWxwaGFfdHkg
Ki9CbG9jay5fXygxMCwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgMTEgOiAK
KyAgICAgICAgICByZXR1cm4gLyogVGhldGFfdHkgKi9CbG9jay5fXygxMSwgW2VyYXNlX3JlbChw
YXJhbVswXSldKTsKKyAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICByZXR1cm4gLyogQW55X3R5
ICovQmxvY2suX18oMTIsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEzIDog
CisgICAgICAgICAgcmV0dXJuIC8qIFJlYWRlcl90eSAqL0Jsb2NrLl9fKDEzLCBbZXJhc2VfcmVs
KHBhcmFtWzBdKV0pOworICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgIHJldHVybiAvKiBJZ25v
cmVkX3JlYWRlcl90eSAqL0Jsb2NrLl9fKDE0LCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOworICAg
ICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNvbmNhdF9mbXR0eShmbXR0eTEsIGZtdHR5
MikgeworICBpZiAodHlwZW9mIGZtdHR5MSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gZm10
dHkyOworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAoZm10dHkxLnRhZyB8IDApIHsKKyAgICAg
IGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxvY2suX18oMCwgW2Nv
bmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAg
ICAgIHJldHVybiAvKiBTdHJpbmdfdHkgKi9CbG9jay5fXygxLCBbY29uY2F0X2ZtdHR5KGZtdHR5
MVswXSwgZm10dHkyKV0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIC8qIElu
dF90eSAqL0Jsb2NrLl9fKDIsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7Cisg
ICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50MzJfdHkgKi9CbG9jay5fXygz
LCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOworICAgICAgY2FzZSA0IDogCisg
ICAgICAgICAgcmV0dXJuIC8qIE5hdGl2ZWludF90eSAqL0Jsb2NrLl9fKDQsIFtjb25jYXRfZm10
dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICByZXR1
cm4gLyogSW50NjRfdHkgKi9CbG9jay5fXyg1LCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10
dHkyKV0pOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3R5ICov
QmxvY2suX18oNiwgW2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNh
c2UgNyA6IAorICAgICAgICAgIHJldHVybiAvKiBCb29sX3R5ICovQmxvY2suX18oNywgW2NvbmNh
dF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAg
IHJldHVybiAvKiBGb3JtYXRfYXJnX3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAg
ICAgICBmbXR0eTFbMF0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXR0eShmbXR0eTFb
MV0sIGZtdHR5MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA5IDogCisgICAg
ICAgICAgcmV0dXJuIC8qIEZvcm1hdF9zdWJzdF90eSAqL0Jsb2NrLl9fKDksIFsKKyAgICAgICAg
ICAgICAgICAgICAgZm10dHkxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXR0eTFbMV0sCisg
ICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXR0eShmbXR0eTFbMl0sIGZtdHR5MikKKyAgICAg
ICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIHJldHVybiAvKiBB
bHBoYV90eSAqL0Jsb2NrLl9fKDEwLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0p
OworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiAvKiBUaGV0YV90eSAqL0Jsb2Nr
Ll9fKDExLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOworICAgICAgY2FzZSAx
MiA6IAorICAgICAgICAgIHJldHVybiAvKiBBbnlfdHkgKi9CbG9jay5fXygxMiwgW2NvbmNhdF9m
bXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICBy
ZXR1cm4gLyogUmVhZGVyX3R5ICovQmxvY2suX18oMTMsIFtjb25jYXRfZm10dHkoZm10dHkxWzBd
LCBmbXR0eTIpXSk7CisgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgcmV0dXJuIC8qIElnbm9y
ZWRfcmVhZGVyX3R5ICovQmxvY2suX18oMTQsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBmbXR0
eTIpXSk7CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gY29uY2F0X2ZtdChmbXQx
LCBmbXQyKSB7CisgIGlmICh0eXBlb2YgZm10MSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4g
Zm10MjsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGZtdDEudGFnIHwgMCkgeworICAgICAg
Y2FzZSAwIDogCisgICAgICAgICAgcmV0dXJuIC8qIENoYXIgKi9CbG9jay5fXygwLCBbY29uY2F0
X2ZtdChmbXQxWzBdLCBmbXQyKV0pOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJu
IC8qIENhbWxfY2hhciAqL0Jsb2NrLl9fKDEsIFtjb25jYXRfZm10KGZtdDFbMF0sIGZtdDIpXSk7
CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gLyogU3RyaW5nICovQmxvY2suX18o
MiwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBj
b25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgIHJldHVybiAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsK
KyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0
X2ZtdChmbXQxWzFdLCBmbXQyKQorICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDQg
OiAKKyAgICAgICAgICByZXR1cm4gLyogSW50ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAg
ICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAgICAg
ICAgICAgICAgICBmbXQxWzJdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFb
M10sIGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAg
ICAgIHJldHVybiAvKiBJbnQzMiAqL0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAgICAgICAgICAg
Zm10MVswXSwKKyAgICAgICAgICAgICAgICAgICAgZm10MVsxXSwKKyAgICAgICAgICAgICAgICAg
ICAgZm10MVsyXSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzNdLCBmbXQy
KQorICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICByZXR1
cm4gLyogTmF0aXZlaW50ICovQmxvY2suX18oNiwgWworICAgICAgICAgICAgICAgICAgICBmbXQx
WzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAgICAgICAgICAgICAgICBm
bXQxWzJdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbM10sIGZtdDIpCisg
ICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiAv
KiBJbnQ2NCAqL0Jsb2NrLl9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAg
ICAgICAgICAgICAgICAgICAgZm10MVsxXSwKKyAgICAgICAgICAgICAgICAgICAgZm10MVsyXSwK
KyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzNdLCBmbXQyKQorICAgICAgICAg
ICAgICAgICAgXSk7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICByZXR1cm4gLyogRmxvYXQg
Ki9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAg
ICAgICAgICAgIGZtdDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMl0sCisgICAgICAg
ICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVszXSwgZm10MikKKyAgICAgICAgICAgICAgICAg
IF0pOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0dXJuIC8qIEJvb2wgKi9CbG9jay5f
Xyg5LCBbY29uY2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0pOworICAgICAgY2FzZSAxMCA6IAorICAg
ICAgICAgIHJldHVybiAvKiBGbHVzaCAqL0Jsb2NrLl9fKDEwLCBbY29uY2F0X2ZtdChmbXQxWzBd
LCBmbXQyKV0pOworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiAvKiBTdHJpbmdf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisg
ICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsxXSwgZm10MikKKyAgICAgICAgICAg
ICAgICAgIF0pOworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyX2xp
dGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAg
ICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAgICAg
ICAgICBdKTsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0X2Fy
ZyAqL0Jsb2NrLl9fKDEzLCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAg
ICAgICAgICAgICAgIGZtdDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10
MVsyXSwgZm10MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAxNCA6IAorICAg
ICAgICAgIHJldHVybiAvKiBGb3JtYXRfc3Vic3QgKi9CbG9jay5fXygxNCwgWworICAgICAgICAg
ICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAg
ICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMl0sIGZtdDIpCisgICAgICAgICAgICAgICAg
ICBdKTsKKyAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICByZXR1cm4gLyogQWxwaGEgKi9CbG9j
ay5fXygxNSwgW2NvbmNhdF9mbXQoZm10MVswXSwgZm10MildKTsKKyAgICAgIGNhc2UgMTYgOiAK
KyAgICAgICAgICByZXR1cm4gLyogVGhldGEgKi9CbG9jay5fXygxNiwgW2NvbmNhdF9mbXQoZm10
MVswXSwgZm10MildKTsKKyAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9y
bWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBd
LAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAg
ICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9y
bWF0dGluZ19nZW4gKi9CbG9jay5fXygxOCwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBd
LAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAg
ICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICByZXR1cm4gLyogUmVh
ZGVyICovQmxvY2suX18oMTksIFtjb25jYXRfZm10KGZtdDFbMF0sIGZtdDIpXSk7CisgICAgICBj
YXNlIDIwIDogCisgICAgICAgICAgcmV0dXJuIC8qIFNjYW5fY2hhcl9zZXQgKi9CbG9jay5fXygy
MCwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBm
bXQxWzFdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMl0sIGZtdDIpCisg
ICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICByZXR1cm4g
LyogU2Nhbl9nZXRfY291bnRlciAqL0Jsb2NrLl9fKDIxLCBbCisgICAgICAgICAgICAgICAgICAg
IGZtdDFbMF0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsxXSwgZm10MikK
KyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAyMiA6IAorICAgICAgICAgIHJldHVy
biAvKiBTY2FuX25leHRfY2hhciAqL0Jsb2NrLl9fKDIyLCBbY29uY2F0X2ZtdChmbXQxWzBdLCBm
bXQyKV0pOworICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgIHJldHVybiAvKiBJZ25vcmVkX3Bh
cmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAgICAg
ICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzFdLCBmbXQyKQorICAgICAgICAgICAgICAg
ICAgXSk7CisgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgcmV0dXJuIC8qIEN1c3RvbSAqL0Js
b2NrLl9fKDI0LCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAgICAg
ICAgICAgIGZtdDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsyXSwg
Zm10MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgCisgICAgfQorICB9Cit9CisKK2V4
cG9ydHMuY29uY2F0X2ZtdHR5ID0gY29uY2F0X2ZtdHR5OworZXhwb3J0cy5lcmFzZV9yZWwgICAg
PSBlcmFzZV9yZWw7CitleHBvcnRzLmNvbmNhdF9mbXQgICA9IGNvbmNhdF9mbXQ7CisvKiBObyBz
aWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5q
cyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5
WydjYW1saW50ZXJuYWxGb3JtYXQnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMg
PSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxpbnRlcm5hbEZvcm1hdC5qcyAvLy8vLy8vLwor
J3VzZSBzdHJpY3QnOworCit2YXIgU3lzICAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgi
Li9zeXMiKTsKK3ZhciBDaGFyICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NoYXIi
KTsKK3ZhciBCbG9jayAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Jsb2NrIik7Cit2
YXIgQnl0ZXMgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ieXRlcyIpOwordmFyIEN1
cnJ5ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBCdWZmZXIg
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2J1ZmZlciIpOwordmFyICQkU3RyaW5nICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc3RyaW5nIik7Cit2YXIgQ2FtbF9pbyAgICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2lvIik7Cit2YXIgQ2FtbF9vYmogICAgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX29iaiIpOwordmFyIENhbWxfYnl0ZXMgICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF9ieXRlcyIpOwordmFyIENhbWxfZmxvYXQgICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF9mbG9hdCIpOwordmFyIENhbWxfaW50MzIgICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF9pbnQzMiIpOwordmFyIFBlcnZhc2l2ZXMgICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxfZm9ybWF0ICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF9mb3JtYXQiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7Cit2YXIgQ2FtbF9leGNlcHRpb25zICAg
ICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2V4Y2VwdGlvbnMiKTsKK3ZhciBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucyAgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7Cit2YXIg
Q2FtbGludGVybmFsRm9ybWF0QmFzaWNzID0gcmVxdWlyZSgiLi9jYW1saW50ZXJuYWxGb3JtYXRC
YXNpY3MiKTsKKworZnVuY3Rpb24gY3JlYXRlX2NoYXJfc2V0KCkgeworICByZXR1cm4gQnl0ZXMu
bWFrZSgzMiwgLyogIlwwMDAiICovMCk7Cit9CisKK2Z1bmN0aW9uIGFkZF9pbl9jaGFyX3NldChj
aGFyX3NldCwgYykgeworICB2YXIgc3RyX2luZCA9IChjID4+PiAzKTsKKyAgdmFyIG1hc2sgPSAo
MSA8PCAoYyAmIDcpKTsKKyAgY2hhcl9zZXRbc3RyX2luZF0gPSBQZXJ2YXNpdmVzLmNoYXJfb2Zf
aW50KENhbWxfYnl0ZXMuZ2V0KGNoYXJfc2V0LCBzdHJfaW5kKSB8IG1hc2spOworICByZXR1cm4g
LyogKCkgKi8wOworfQorCit2YXIgZnJlZXplX2NoYXJfc2V0ID0gQnl0ZXMudG9fc3RyaW5nOwor
CitmdW5jdGlvbiByZXZfY2hhcl9zZXQoY2hhcl9zZXQpIHsKKyAgdmFyIGNoYXJfc2V0JHByaW1l
ID0gQnl0ZXMubWFrZSgzMiwgLyogIlwwMDAiICovMCk7CisgIGZvcih2YXIgaSA9IDA7IGkgPD0g
MzE7ICsraSl7CisgICAgY2hhcl9zZXQkcHJpbWVbaV0gPSBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50
KENhbWxfc3RyaW5nLmdldChjaGFyX3NldCwgaSkgXiAyNTUpOworICB9CisgIHJldHVybiBDYW1s
X3N0cmluZy5ieXRlc190b19zdHJpbmcoY2hhcl9zZXQkcHJpbWUpOworfQorCitmdW5jdGlvbiBp
c19pbl9jaGFyX3NldChjaGFyX3NldCwgYykgeworICB2YXIgc3RyX2luZCA9IChjID4+PiAzKTsK
KyAgdmFyIG1hc2sgPSAoMSA8PCAoYyAmIDcpKTsKKyAgcmV0dXJuICsoKENhbWxfc3RyaW5nLmdl
dChjaGFyX3NldCwgc3RyX2luZCkgJiBtYXNrKSAhPT0gMCk7Cit9CisKK2Z1bmN0aW9uIHBhZF9v
Zl9wYWRfb3B0KHBhZF9vcHQpIHsKKyAgaWYgKHBhZF9vcHQpIHsKKyAgICByZXR1cm4gLyogTGl0
X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgIC8qIFJpZ2h0ICovMSwKKyAg
ICAgICAgICAgICAgcGFkX29wdFswXQorICAgICAgICAgICAgXSk7CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIC8qIE5vX3BhZGRpbmcgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHByZWNfb2Zf
cHJlY19vcHQocHJlY19vcHQpIHsKKyAgaWYgKHByZWNfb3B0KSB7CisgICAgcmV0dXJuIC8qIExp
dF9wcmVjaXNpb24gKi9bcHJlY19vcHRbMF1dOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAv
KiBOb19wcmVjaXNpb24gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHBhcmFtX2Zvcm1hdF9vZl9p
Z25vcmVkX2Zvcm1hdChpZ24sIGZtdCkgeworICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJlciIp
IHsKKyAgICBzd2l0Y2ggKGlnbikgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0dXJu
IC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogQ2hhciAqL0Jsb2NrLl9fKDAsIFtmbXRdKV07Cisg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1sv
KiBDYW1sX2NoYXIgKi9CbG9jay5fXygxLCBbZm10XSldOworICAgICAgY2FzZSAyIDogCisgICAg
ICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogQm9vbCAqL0Jsb2NrLl9fKDks
IFtmbXRdKV07CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9y
bWF0X0VCQiAqL1svKiBSZWFkZXIgKi9CbG9jay5fXygxOSwgW2ZtdF0pXTsKKyAgICAgIGNhc2Ug
NCA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIFNjYW5fbmV4
dF9jaGFyICovQmxvY2suX18oMjIsIFtmbXRdKV07CisgICAgICAKKyAgICB9CisgIH0KKyAgZWxz
ZSB7CisgICAgc3dpdGNoIChpZ24udGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAg
ICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogU3RyaW5nICovQmxvY2suX18oMiwg
WworICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblswXSksCisgICAgICAg
ICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIENhbWxfc3Ry
aW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0
KGlnblswXSksCisgICAgICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAg
IF0pXTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRf
RUJCICovWy8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICBpZ25b
MF0sCisgICAgICAgICAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQoaWduWzFdKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAg
ICAgIGZtdAorICAgICAgICAgICAgICAgICAgICBdKV07CisgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBJbnQzMiAqL0Jsb2NrLl9fKDUs
IFsKKyAgICAgICAgICAgICAgICAgICAgICBpZ25bMF0sCisgICAgICAgICAgICAgICAgICAgICAg
cGFkX29mX3BhZF9vcHQoaWduWzFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVj
aXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAg
ICBdKV07CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0
X0VCQiAqL1svKiBOYXRpdmVpbnQgKi9CbG9jay5fXyg2LCBbCisgICAgICAgICAgICAgICAgICAg
ICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblsxXSks
CisgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAg
ICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgY2FzZSA1IDog
CisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogSW50NjQgKi9CbG9j
ay5fXyg3LCBbCisgICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAg
ICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblsxXSksCisgICAgICAgICAgICAgICAgICAgICAgLyog
Tm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAg
ICAgICAgICAgXSldOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFt
X2Zvcm1hdF9FQkIgKi9bLyogRmxvYXQgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAg
ICAgICAgLyogRmxvYXRfZiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgcGFkX29mX3BhZF9v
cHQoaWduWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICBwcmVjX29mX3ByZWNfb3B0KGlnblsx
XSksCisgICAgICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsK
KyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICov
Wy8qIEZvcm1hdF9hcmcgKi9CbG9jay5fXygxMywgWworICAgICAgICAgICAgICAgICAgICAgIGln
blswXSwKKyAgICAgICAgICAgICAgICAgICAgICBpZ25bMV0sCisgICAgICAgICAgICAgICAgICAg
ICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNhc2UgOCA6IAorICAgICAg
ICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIEZvcm1hdF9zdWJzdCAqL0Jsb2Nr
Ll9fKDE0LCBbCisgICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAg
ICAgICAgIGlnblsxXSwKKyAgICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAg
ICAgICAgXSldOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zv
cm1hdF9FQkIgKi9bLyogU2Nhbl9jaGFyX3NldCAqL0Jsb2NrLl9fKDIwLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgIGlnblsxXSwKKyAgICAg
ICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgY2Fz
ZSAxMCA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIFNjYW5f
Z2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwgWworICAgICAgICAgICAgICAgICAgICAgIGlnblsw
XSwKKyAgICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOwor
ICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGJ1ZmZlcl9jaGVja19zaXplKGJ1Ziwg
b3ZlcmhlYWQpIHsKKyAgdmFyIGxlbiA9IGJ1ZlsvKiBieXRlcyAqLzFdLmxlbmd0aDsKKyAgdmFy
IG1pbl9sZW4gPSBidWZbLyogaW5kICovMF0gKyBvdmVyaGVhZCB8IDA7CisgIGlmIChtaW5fbGVu
ID4gbGVuKSB7CisgICAgdmFyIG5ld19sZW4gPSBQZXJ2YXNpdmVzLm1heCgobGVuIDw8IDEpLCBt
aW5fbGVuKTsKKyAgICB2YXIgbmV3X3N0ciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmlu
ZyhuZXdfbGVuKTsKKyAgICBCeXRlcy5ibGl0KGJ1ZlsvKiBieXRlcyAqLzFdLCAwLCBuZXdfc3Ry
LCAwLCBsZW4pOworICAgIGJ1ZlsvKiBieXRlcyAqLzFdID0gbmV3X3N0cjsKKyAgICByZXR1cm4g
LyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0
aW9uIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGMpIHsKKyAgYnVmZmVyX2NoZWNrX3NpemUoYnVmLCAx
KTsKKyAgYnVmWy8qIGJ5dGVzICovMV1bYnVmWy8qIGluZCAqLzBdXSA9IGM7CisgIGJ1ZlsvKiBp
bmQgKi8wXSA9IGJ1ZlsvKiBpbmQgKi8wXSArIDEgfCAwOworICByZXR1cm4gLyogKCkgKi8wOwor
fQorCitmdW5jdGlvbiBidWZmZXJfYWRkX3N0cmluZyhidWYsIHMpIHsKKyAgdmFyIHN0cl9sZW4g
PSBzLmxlbmd0aDsKKyAgYnVmZmVyX2NoZWNrX3NpemUoYnVmLCBzdHJfbGVuKTsKKyAgJCRTdHJp
bmcuYmxpdChzLCAwLCBidWZbLyogYnl0ZXMgKi8xXSwgYnVmWy8qIGluZCAqLzBdLCBzdHJfbGVu
KTsKKyAgYnVmWy8qIGluZCAqLzBdID0gYnVmWy8qIGluZCAqLzBdICsgc3RyX2xlbiB8IDA7Cisg
IHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGJ1ZmZlcl9jb250ZW50cyhidWYpIHsK
KyAgcmV0dXJuIEJ5dGVzLnN1Yl9zdHJpbmcoYnVmWy8qIGJ5dGVzICovMV0sIDAsIGJ1ZlsvKiBp
bmQgKi8wXSk7Cit9CisKK2Z1bmN0aW9uIGNoYXJfb2ZfaWNvbnYoaWNvbnYpIHsKKyAgc3dpdGNo
IChpY29udikgeworICAgIGNhc2UgMCA6IAorICAgIGNhc2UgMSA6IAorICAgIGNhc2UgMiA6IAor
ICAgICAgICByZXR1cm4gLyogImQiICovMTAwOworICAgIGNhc2UgMyA6IAorICAgIGNhc2UgNCA6
IAorICAgIGNhc2UgNSA6IAorICAgICAgICByZXR1cm4gLyogImkiICovMTA1OworICAgIGNhc2Ug
NiA6IAorICAgIGNhc2UgNyA6IAorICAgICAgICByZXR1cm4gLyogIngiICovMTIwOworICAgIGNh
c2UgOCA6IAorICAgIGNhc2UgOSA6IAorICAgICAgICByZXR1cm4gLyogIlgiICovODg7CisgICAg
Y2FzZSAxMCA6IAorICAgIGNhc2UgMTEgOiAKKyAgICAgICAgcmV0dXJuIC8qICJvIiAqLzExMTsK
KyAgICBjYXNlIDEyIDogCisgICAgICAgIHJldHVybiAvKiAidSIgKi8xMTc7CisgICAgCisgIH0K
K30KKworZnVuY3Rpb24gY2hhcl9vZl9mY29udihmY29udikgeworICBzd2l0Y2ggKGZjb252KSB7
CisgICAgY2FzZSAwIDogCisgICAgY2FzZSAxIDogCisgICAgY2FzZSAyIDogCisgICAgICAgIHJl
dHVybiAvKiAiZiIgKi8xMDI7CisgICAgY2FzZSAzIDogCisgICAgY2FzZSA0IDogCisgICAgY2Fz
ZSA1IDogCisgICAgICAgIHJldHVybiAvKiAiZSIgKi8xMDE7CisgICAgY2FzZSA2IDogCisgICAg
Y2FzZSA3IDogCisgICAgY2FzZSA4IDogCisgICAgICAgIHJldHVybiAvKiAiRSIgKi82OTsKKyAg
ICBjYXNlIDkgOiAKKyAgICBjYXNlIDEwIDogCisgICAgY2FzZSAxMSA6IAorICAgICAgICByZXR1
cm4gLyogImciICovMTAzOworICAgIGNhc2UgMTIgOiAKKyAgICBjYXNlIDEzIDogCisgICAgY2Fz
ZSAxNCA6IAorICAgICAgICByZXR1cm4gLyogIkciICovNzE7CisgICAgY2FzZSAxNSA6IAorICAg
ICAgICByZXR1cm4gLyogIkYiICovNzA7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gY2hhcl9v
Zl9jb3VudGVyKGNvdW50ZXIpIHsKKyAgc3dpdGNoIChjb3VudGVyKSB7CisgICAgY2FzZSAwIDog
CisgICAgICAgIHJldHVybiAvKiAibCIgKi8xMDg7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJl
dHVybiAvKiAibiIgKi8xMTA7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiAiTiIg
Ki83ODsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfY2hhcl9zZXQoYnVmLCBjaGFy
X3NldCkgeworICB2YXIgcHJpbnRfY2hhciA9IGZ1bmN0aW9uIChidWYsIGkpIHsKKyAgICB2YXIg
YyA9IFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoaSk7CisgICAgaWYgKGMgIT09IDM3KSB7CisgICAg
ICBpZiAoYyAhPT0gNjQpIHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGMp
OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8q
ICIlIiAqLzM3KTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJAIiAq
LzY0KTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBidWZmZXJfYWRkX2NoYXIo
YnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyog
IiUiICovMzcpOworICAgIH0KKyAgfTsKKyAgdmFyIHByaW50X291dCA9IGZ1bmN0aW9uIChzZXQs
IF9pKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIGkgPSBfaTsKKyAgICAgIGlmIChp
IDwgMjU2KSB7CisgICAgICAgIGlmIChpc19pbl9jaGFyX3NldChzZXQsIFBlcnZhc2l2ZXMuY2hh
cl9vZl9pbnQoaSkpKSB7CisgICAgICAgICAgdmFyIHNldCQxID0gc2V0OworICAgICAgICAgIHZh
ciBpJDEgPSBpOworICAgICAgICAgIHZhciBtYXRjaCA9IFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQo
aSQxKTsKKyAgICAgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQ1IHwgMDsKKyAgICAgICAg
ICBpZiAoc3dpdGNoZXIgPiA0OCB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICAgIGlmIChz
d2l0Y2hlciA+PSAyMTApIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHByaW50X2NoYXIoYnVmLCAy
NTUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJl
dHVybiBwcmludF9zZWNvbmQoc2V0JDEsIGkkMSArIDEgfCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoc3dpdGNoZXIgPiA0NyB8fCBzd2l0Y2hlciA8
IDEpIHsKKyAgICAgICAgICAgIHJldHVybiBwcmludF9vdXQoc2V0JDEsIGkkMSArIDEgfCAwKTsK
KyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcHJpbnRf
c2Vjb25kKHNldCQxLCBpJDEgKyAxIHwgMCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IHJldHVybiAwOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBwcmludF9zZWNvbmQgPSBm
dW5jdGlvbiAoc2V0LCBpKSB7CisgICAgaWYgKGlzX2luX2NoYXJfc2V0KHNldCwgUGVydmFzaXZl
cy5jaGFyX29mX2ludChpKSkpIHsKKyAgICAgIHZhciBtYXRjaCA9IFBlcnZhc2l2ZXMuY2hhcl9v
Zl9pbnQoaSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRj
aCAtIDQ1IHwgMDsKKyAgICAgIGlmIChzd2l0Y2hlciA+IDQ4IHx8IHN3aXRjaGVyIDwgMCkgewor
ICAgICAgICBpZiAoc3dpdGNoZXIgPj0gMjEwKSB7CisgICAgICAgICAgcHJpbnRfY2hhcihidWYs
IDI1NCk7CisgICAgICAgICAgcmV0dXJuIHByaW50X2NoYXIoYnVmLCAyNTUpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9
CisgICAgICBlbHNlIGlmIChzd2l0Y2hlciA+IDQ3IHx8IHN3aXRjaGVyIDwgMSkgeworICAgICAg
ICBpZiAoaXNfaW5fY2hhcl9zZXQoc2V0LCBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KGkgKyAxIHwg
MCkpKSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgcHJpbnRfY2hhcihidWYsIGkgLSAxIHwgMCk7CisgICAgICAgICAgcmV0dXJuIHBy
aW50X291dChzZXQsIGkgKyAxIHwgMCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGlmIChleGl0ID09PSAxKSB7Cisg
ICAgICAgIGlmIChpc19pbl9jaGFyX3NldChzZXQsIFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoaSAr
IDEgfCAwKSkpIHsKKyAgICAgICAgICB2YXIgc2V0JDEgPSBzZXQ7CisgICAgICAgICAgdmFyIGkk
MSA9IGkgLSAxIHwgMDsKKyAgICAgICAgICB2YXIgX2ogPSBpICsgMiB8IDA7CisgICAgICAgICAg
d2hpbGUodHJ1ZSkgeworICAgICAgICAgICAgdmFyIGogPSBfajsKKyAgICAgICAgICAgIGlmIChq
ID09PSAyNTYgfHwgIWlzX2luX2NoYXJfc2V0KHNldCQxLCBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50
KGopKSkgeworICAgICAgICAgICAgICBwcmludF9jaGFyKGJ1ZiwgaSQxKTsKKyAgICAgICAgICAg
ICAgcHJpbnRfY2hhcihidWYsIC8qICItIiAqLzQ1KTsKKyAgICAgICAgICAgICAgcHJpbnRfY2hh
cihidWYsIGogLSAxIHwgMCk7CisgICAgICAgICAgICAgIGlmIChqIDwgMjU2KSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHByaW50X291dChzZXQkMSwgaiArIDEgfCAwKTsKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgIF9qID0gaiArIDEgfCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgcHJpbnRfY2hhcihidWYsIGkgLSAxIHwgMCk7CisgICAgICAgICAg
cHJpbnRfY2hhcihidWYsIGkpOworICAgICAgICAgIHJldHVybiBwcmludF9vdXQoc2V0LCBpICsg
MiB8IDApOworICAgICAgICB9CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICBwcmludF9jaGFyKGJ1ZiwgaSAtIDEgfCAwKTsKKyAgICAgIHJldHVybiBwcmludF9vdXQo
c2V0LCBpICsgMSB8IDApOworICAgIH0KKyAgfTsKKyAgdmFyIHByaW50X3N0YXJ0ID0gZnVuY3Rp
b24gKHNldCkgeworICAgIHZhciBpc19hbG9uZSA9IGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIg
bWF0Y2hfMDAwID0gQ2hhci5jaHIoYyAtIDEgfCAwKTsKKyAgICAgIHZhciBtYXRjaF8wMDEgPSBD
aGFyLmNocihjICsgMSB8IDApOworICAgICAgaWYgKGlzX2luX2NoYXJfc2V0KHNldCwgYykpIHsK
KyAgICAgICAgcmV0dXJuIDEgLSAoaXNfaW5fY2hhcl9zZXQoc2V0LCBtYXRjaF8wMDApICYmIGlz
X2luX2NoYXJfc2V0KHNldCwgbWF0Y2hfMDAxKSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICAgIH0KKyAgICB9OworICAgIGlmIChpc19h
bG9uZSgvKiAiXSIgKi85MykpIHsKKyAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJdIiAq
LzkzKTsKKyAgICB9CisgICAgcHJpbnRfb3V0KHNldCwgMSk7CisgICAgaWYgKGlzX2Fsb25lKC8q
ICItIiAqLzQ1KSkgeworICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICItIiAq
LzQ1KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH07Cisg
IGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJbIiAqLzkxKTsKKyAgcHJpbnRfc3RhcnQoaXNfaW5f
Y2hhcl9zZXQoY2hhcl9zZXQsIC8qICJcMDAwIiAqLzApID8gKGJ1ZmZlcl9hZGRfY2hhcihidWYs
IC8qICJeIiAqLzk0KSwgcmV2X2NoYXJfc2V0KGNoYXJfc2V0KSkgOiBjaGFyX3NldCk7CisgIHJl
dHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiXSIgKi85Myk7Cit9CisKK2Z1bmN0aW9uIGJw
cmludF9wYWR0eShidWYsIHBhZHR5KSB7CisgIHN3aXRjaCAocGFkdHkpIHsKKyAgICBjYXNlIDAg
OiAKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICItIiAqLzQ1KTsKKyAg
ICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICBjYXNlIDIgOiAKKyAg
ICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIwIiAqLzQ4KTsKKyAgICAKKyAg
fQorfQorCitmdW5jdGlvbiBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpIHsKKyAg
aWYgKGlnbl9mbGFnKSB7CisgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJfIiAq
Lzk1KTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBi
cHJpbnRfcGFkX29wdChidWYsIHBhZF9vcHQpIHsKKyAgaWYgKHBhZF9vcHQpIHsKKyAgICByZXR1
cm4gYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiIiArIHBhZF9vcHRbMF0pOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gYnByaW50X3BhZGRp
bmcoYnVmLCBwYWQpIHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgcmV0
dXJuIC8qICgpICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBicHJpbnRfcGFkdHkoYnVmLCBwYWRb
MF0pOworICAgIGlmIChwYWQudGFnKSB7CisgICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1
ZiwgLyogIioiICovNDIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBidWZmZXJf
YWRkX3N0cmluZyhidWYsICIiICsgcGFkWzFdKTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24g
YnByaW50X3ByZWNpc2lvbihidWYsIHByZWMpIHsKKyAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVt
YmVyIikgeworICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICByZXR1cm4gYnVmZmVyX2FkZF9z
dHJpbmcoYnVmLCAiLioiKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogKCkg
Ki8wOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAi
LiIgKi80Nik7CisgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiIgKyBwcmVjWzBd
KTsKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfaWNvbnZfZmxhZyhidWYsIGljb252KSB7Cisg
IHN3aXRjaCAoaWNvbnYpIHsKKyAgICBjYXNlIDEgOiAKKyAgICBjYXNlIDQgOiAKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIrIiAqLzQzKTsKKyAgICBjYXNlIDIgOiAK
KyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIg
IiAqLzMyKTsKKyAgICBjYXNlIDcgOiAKKyAgICBjYXNlIDkgOiAKKyAgICBjYXNlIDExIDogCisg
ICAgICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiIyIgKi8zNSk7CisgICAgY2Fz
ZSAwIDogCisgICAgY2FzZSAzIDogCisgICAgY2FzZSA2IDogCisgICAgY2FzZSA4IDogCisgICAg
Y2FzZSAxMCA6IAorICAgIGNhc2UgMTIgOiAKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAg
ICAKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfaW50X2ZtdChidWYsIGlnbl9mbGFnLCBpY29u
diwgcGFkLCBwcmVjKSB7CisgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAg
YnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgYnByaW50X2ljb252X2ZsYWco
YnVmLCBpY29udik7CisgIGJwcmludF9wYWRkaW5nKGJ1ZiwgcGFkKTsKKyAgYnByaW50X3ByZWNp
c2lvbihidWYsIHByZWMpOworICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgY2hhcl9vZl9p
Y29udihpY29udikpOworfQorCitmdW5jdGlvbiBicHJpbnRfYWx0aW50X2ZtdChidWYsIGlnbl9m
bGFnLCBpY29udiwgcGFkLCBwcmVjLCBjKSB7CisgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIl
IiAqLzM3KTsKKyAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgYnByaW50
X2ljb252X2ZsYWcoYnVmLCBpY29udik7CisgIGJwcmludF9wYWRkaW5nKGJ1ZiwgcGFkKTsKKyAg
YnByaW50X3ByZWNpc2lvbihidWYsIHByZWMpOworICBidWZmZXJfYWRkX2NoYXIoYnVmLCBjKTsK
KyAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGNoYXJfb2ZfaWNvbnYoaWNvbnYpKTsKK30K
KworZnVuY3Rpb24gYnByaW50X2Zjb252X2ZsYWcoYnVmLCBmY29udikgeworICBzd2l0Y2ggKGZj
b252KSB7CisgICAgY2FzZSAxIDogCisgICAgY2FzZSA0IDogCisgICAgY2FzZSA3IDogCisgICAg
Y2FzZSAxMCA6IAorICAgIGNhc2UgMTMgOiAKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hh
cihidWYsIC8qICIrIiAqLzQzKTsKKyAgICBjYXNlIDIgOiAKKyAgICBjYXNlIDUgOiAKKyAgICBj
YXNlIDggOiAKKyAgICBjYXNlIDExIDogCisgICAgY2FzZSAxNCA6IAorICAgICAgICByZXR1cm4g
YnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiAiICovMzIpOworICAgIGNhc2UgMCA6IAorICAgIGNh
c2UgMyA6IAorICAgIGNhc2UgNiA6IAorICAgIGNhc2UgOSA6IAorICAgIGNhc2UgMTIgOiAKKyAg
ICBjYXNlIDE1IDogCisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgCisgIH0KK30KKwor
ZnVuY3Rpb24gYnByaW50X2Zsb2F0X2ZtdChidWYsIGlnbl9mbGFnLCBmY29udiwgcGFkLCBwcmVj
KSB7CisgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgYnByaW50X2lnbm9y
ZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgYnByaW50X2Zjb252X2ZsYWcoYnVmLCBmY29udik7
CisgIGJwcmludF9wYWRkaW5nKGJ1ZiwgcGFkKTsKKyAgYnByaW50X3ByZWNpc2lvbihidWYsIHBy
ZWMpOworICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgY2hhcl9vZl9mY29udihmY29udikp
OworfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoZm9ybWF0dGluZ19saXQp
IHsKKyAgaWYgKHR5cGVvZiBmb3JtYXR0aW5nX2xpdCA9PT0gIm51bWJlciIpIHsKKyAgICBzd2l0
Y2ggKGZvcm1hdHRpbmdfbGl0KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4g
IkBdIjsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAiQH0iOworICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgcmV0dXJuICJAPyI7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAg
ICByZXR1cm4gIkBcbiI7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gIkAuIjsK
KyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiAiQEAiOworICAgICAgY2FzZSA2IDog
CisgICAgICAgICAgcmV0dXJuICJAJSI7CisgICAgICAKKyAgICB9CisgIH0KKyAgZWxzZSB7Cisg
ICAgc3dpdGNoIChmb3JtYXR0aW5nX2xpdC50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAg
ICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiBmb3JtYXR0aW5nX2xpdFswXTsKKyAgICAg
IGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAiQCIgKyBDYW1sX3N0cmluZy5ieXRlc190b19z
dHJpbmcoQnl0ZXMubWFrZSgxLCBmb3JtYXR0aW5nX2xpdFswXSkpOworICAgICAgCisgICAgfQor
ICB9Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9mb3JtYXR0aW5nX2dlbihmb3JtYXR0aW5nX2dl
bikgeworICByZXR1cm4gZm9ybWF0dGluZ19nZW5bMF1bMV07Cit9CisKK2Z1bmN0aW9uIGJwcmlu
dF9jaGFyX2xpdGVyYWwoYnVmLCBjaHIpIHsKKyAgaWYgKGNociAhPT0gMzcpIHsKKyAgICByZXR1
cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgY2hyKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
YnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJSUiKTsKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRf
c3RyaW5nX2xpdGVyYWwoYnVmLCBzdHIpIHsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBz
dHIubGVuZ3RoIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgYnByaW50X2NoYXJf
bGl0ZXJhbChidWYsIENhbWxfc3RyaW5nLmdldChzdHIsIGkpKTsKKyAgfQorICByZXR1cm4gLyog
KCkgKi8wOworfQorCitmdW5jdGlvbiBicHJpbnRfZm10dHkoYnVmLCBfZm10dHkpIHsKKyAgd2hp
bGUodHJ1ZSkgeworICAgIHZhciBmbXR0eSA9IF9mbXR0eTsKKyAgICBpZiAodHlwZW9mIGZtdHR5
ID09PSAibnVtYmVyIikgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICBzd2l0Y2ggKGZtdHR5LnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDogCisg
ICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlYyIpOworICAgICAgICAgICAgX2Zt
dHR5ID0gZm10dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVzIik7CisgICAgICAg
ICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJWkiKTsK
KyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYs
ICIlbGkiKTsKKyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAgY29u
dGludWUgOworICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0
cmluZyhidWYsICIlbmkiKTsKKyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAg
ICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICBidWZm
ZXJfYWRkX3N0cmluZyhidWYsICIlTGkiKTsKKyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBd
OworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAg
ICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlZiIpOworICAgICAgICAgICAgX2ZtdHR5ID0g
Zm10dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDcgOiAK
KyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVCIik7CisgICAgICAgICAgICBf
Zm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNh
c2UgOCA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJXsiKTsKKyAgICAg
ICAgICAgIGJwcmludF9mbXR0eShidWYsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9h
ZGRfc3RyaW5nKGJ1ZiwgIiV9Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVsxXTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAg
YnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJSgiKTsKKyAgICAgICAgICAgIGJwcmludF9mbXR0eShi
dWYsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiUpIik7
CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVsyXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1
ZiwgIiVhIik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRf
c3RyaW5nKGJ1ZiwgIiV0Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgIGJ1
ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiU/Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVsw
XTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAg
ICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVyIik7CisgICAgICAgICAgICBfZm10dHkg
PSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTQg
OiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVfciIpOworICAgICAgICAg
ICAgX2ZtdHR5ID0gZm10dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICAKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGludF9vZl9jdXN0b21fYXJp
dHkocGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuIDEgKyBpbnRfb2ZfY3VzdG9t
X2FyaXR5KHBhcmFtWzBdKSB8IDA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0K
K30KKworZnVuY3Rpb24gYnByaW50X2ZtdChidWYsIGZtdCkgeworICB2YXIgX2ZtdCA9IGZtdDsK
KyAgdmFyIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZh
ciBpZ25fZmxhZyA9IF9pZ25fZmxhZzsKKyAgICB2YXIgZm10JDEgPSBfZm10OworICAgIGlmICh0
eXBlb2YgZm10JDEgPT09ICJudW1iZXIiKSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoZm10JDEudGFnIHwgMCkgeworICAgICAgICBj
YXNlIDAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsK
KyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAg
ICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiYyIgKi85OSk7CisgICAgICAgICAgICBfaWdu
X2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25v
cmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVm
LCAvKiAiQyIgKi82Nyk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7Cisg
ICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIl
IiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7
CisgICAgICAgICAgICBicHJpbnRfcGFkZGluZyhidWYsIGZtdCQxWzBdKTsKKyAgICAgICAgICAg
IGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJzIiAqLzExNSk7CisgICAgICAgICAgICBfaWduX2Zs
YWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAgICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIGJ1ZmZl
cl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVk
X2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBicHJpbnRfcGFkZGluZyhidWYsIGZt
dCQxWzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJTIiAqLzgzKTsK
KyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQg
PSBmbXQkMVsxXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgNCA6
IAorICAgICAgICAgICAgYnByaW50X2ludF9mbXQoYnVmLCBpZ25fZmxhZywgZm10JDFbMF0sIGZt
dCQxWzFdLCBmbXQkMVsyXSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7
CisgICAgICAgICAgICBfZm10ID0gZm10JDFbM107CisgICAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGJwcmludF9hbHRpbnRfZm10KGJ1Ziwg
aWduX2ZsYWcsIGZtdCQxWzBdLCBmbXQkMVsxXSwgZm10JDFbMl0sIC8qICJsIiAqLzEwOCk7Cisg
ICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0g
Zm10JDFbM107CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDYgOiAK
KyAgICAgICAgICAgIGJwcmludF9hbHRpbnRfZm10KGJ1ZiwgaWduX2ZsYWcsIGZtdCQxWzBdLCBm
bXQkMVsxXSwgZm10JDFbMl0sIC8qICJuIiAqLzExMCk7CisgICAgICAgICAgICBfaWduX2ZsYWcg
PSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbM107CisgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIGJwcmludF9h
bHRpbnRfZm10KGJ1ZiwgaWduX2ZsYWcsIGZtdCQxWzBdLCBmbXQkMVsxXSwgZm10JDFbMl0sIC8q
ICJMIiAqLzc2KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAg
ICAgICAgIF9mbXQgPSBmbXQkMVszXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgYnByaW50X2Zsb2F0X2ZtdChidWYsIGlnbl9mbGFn
LCBmbXQkMVswXSwgZm10JDFbMV0sIGZtdCQxWzJdKTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9
IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVszXTsKKyAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgYnVmZmVyX2Fk
ZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxh
ZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJC
IiAqLzY2KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAg
ICAgIF9mbXQgPSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
IGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiUhIik7Cisg
ICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwoYnVm
LCBmbXQkMVswXSk7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBicHJpbnRfY2hh
cl9saXRlcmFsKGJ1ZiwgZm10JDFbMF0pOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzFdOwor
ICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAg
ICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnByaW50
X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAgIGJwcmludF9wYWRfb3B0
KGJ1ZiwgZm10JDFbMF0pOworICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogInsi
ICovMTIzKTsKKyAgICAgICAgICAgIGJwcmludF9mbXR0eShidWYsIGZtdCQxWzFdKTsKKyAgICAg
ICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICJ9IiAqLzEyNSk7CisgICAgICAgICAgICBfaWduX2ZsYWcg
PSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMl07CisgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICBidWZmZXJf
YWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3JlZF9m
bGFnKGJ1ZiwgaWduX2ZsYWcpOworICAgICAgICAgICAgYnByaW50X3BhZF9vcHQoYnVmLCBmbXQk
MVswXSk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiKCIgKi80MCk7Cisg
ICAgICAgICAgICBicHJpbnRfZm10dHkoYnVmLCBmbXQkMVsxXSk7CisgICAgICAgICAgICBidWZm
ZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2No
YXIoYnVmLCAvKiAiKSIgKi80MSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAq
LzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMl07CisgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVm
LCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWdu
X2ZsYWcpOworICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogImEiICovOTcpOwor
ICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAgX2ZtdCA9
IGZtdCQxWzBdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxNiA6
IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAg
ICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAgIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICJ0IiAqLzExNik7CisgICAgICAgICAgICBfaWduX2ZsYWcg
PSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBicHJpbnRf
c3RyaW5nX2xpdGVyYWwoYnVmLCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoZm10JDFbMF0pKTsK
KyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsxXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbChi
dWYsICJAeyIpOworICAgICAgICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsKGJ1Ziwgc3RyaW5n
X29mX2Zvcm1hdHRpbmdfZ2VuKGZtdCQxWzBdKSk7CisgICAgICAgICAgICBfZm10ID0gZm10JDFb
MV07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDE5IDogCisgICAg
ICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBi
cHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOworICAgICAgICAgICAgYnVmZmVyX2Fk
ZF9jaGFyKGJ1ZiwgLyogInIiICovMTE0KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZh
bHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hh
cihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVm
LCBpZ25fZmxhZyk7CisgICAgICAgICAgICBicHJpbnRfcGFkX29wdChidWYsIGZtdCQxWzBdKTsK
KyAgICAgICAgICAgIGJwcmludF9jaGFyX3NldChidWYsIGZtdCQxWzFdKTsKKyAgICAgICAgICAg
IF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsyXTsK
KyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAg
ICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmlu
dF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2No
YXIoYnVmLCBjaGFyX29mX2NvdW50ZXIoZm10JDFbMF0pKTsKKyAgICAgICAgICAgIF9pZ25fZmxh
ZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsxXTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgIGJ1ZmZl
cl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVk
X2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwo
YnVmLCAiMGMiKTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAg
ICAgICAgIF9mbXQgPSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAgIGNhc2UgMjMgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCA9IHBhcmFtX2Zvcm1hdF9vZl9p
Z25vcmVkX2Zvcm1hdChmbXQkMVswXSwgZm10JDFbMV0pOworICAgICAgICAgICAgX2lnbl9mbGFn
ID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICBfZm10ID0gbWF0Y2hbMF07CisgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgICBmb3IodmFy
IF9pID0gMSAsX2lfZmluaXNoID0gaW50X29mX2N1c3RvbV9hcml0eShmbXQkMVswXSk7IF9pIDw9
IF9pX2ZpbmlzaDsgKytfaSl7CisgICAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8q
ICIlIiAqLzM3KTsKKyAgICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9m
bGFnKTsKKyAgICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIj8iICovNjMpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOworICAg
ICAgICAgICAgX2ZtdCA9IGZtdCQxWzJdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAg
ICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfZm10
KGZtdCkgeworICB2YXIgYnVmID0gLyogcmVjb3JkICovWworICAgIC8qIGluZCAqLzAsCisgICAg
LyogYnl0ZXMgKi9uZXcgQXJyYXkoMTYpCisgIF07CisgIGJwcmludF9mbXQoYnVmLCBmbXQpOwor
ICByZXR1cm4gYnVmZmVyX2NvbnRlbnRzKGJ1Zik7Cit9CisKK2Z1bmN0aW9uIHN5bW0ocGFyYW0p
IHsKKyAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gLyogRW5k
X29mX2ZtdHR5ICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKHBhcmFtLnRhZyB8IDAp
IHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxvY2su
X18oMCwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1
cm4gLyogU3RyaW5nX3R5ICovQmxvY2suX18oMSwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50X3R5ICovQmxvY2suX18oMiwgW3N5bW0o
cGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50MzJf
dHkgKi9CbG9jay5fXygzLCBbc3ltbShwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNCA6IAorICAg
ICAgICAgIHJldHVybiAvKiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbc3ltbShwYXJhbVsw
XSldKTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiAvKiBJbnQ2NF90eSAqL0Js
b2NrLl9fKDUsIFtzeW1tKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAg
cmV0dXJuIC8qIEZsb2F0X3R5ICovQmxvY2suX18oNiwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAg
ICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcsIFtz
eW1tKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSA4IDogCisgICAgICAgICAgcmV0dXJuIC8qIEZv
cm1hdF9hcmdfdHkgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgIHBhcmFtWzBd
LAorICAgICAgICAgICAgICAgICAgICBzeW1tKHBhcmFtWzFdKQorICAgICAgICAgICAgICAgICAg
XSk7CisgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0X3N1YnN0X3R5
ICovQmxvY2suX18oOSwgWworICAgICAgICAgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAgICAg
ICAgICAgICAgICAgcGFyYW1bMF0sCisgICAgICAgICAgICAgICAgICAgIHN5bW0ocGFyYW1bMl0p
CisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICByZXR1
cm4gLyogQWxwaGFfdHkgKi9CbG9jay5fXygxMCwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBj
YXNlIDExIDogCisgICAgICAgICAgcmV0dXJuIC8qIFRoZXRhX3R5ICovQmxvY2suX18oMTEsIFtz
eW1tKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHJldHVybiAvKiBB
bnlfdHkgKi9CbG9jay5fXygxMiwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEzIDog
CisgICAgICAgICAgcmV0dXJuIC8qIFJlYWRlcl90eSAqL0Jsb2NrLl9fKDEzLCBbc3ltbShwYXJh
bVswXSldKTsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICByZXR1cm4gLyogSWdub3JlZF9y
ZWFkZXJfdHkgKi9CbG9jay5fXygxNCwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICAKKyAgICB9
CisgIH0KK30KKworZnVuY3Rpb24gZm10dHlfcmVsX2RldChwYXJhbSkgeworICBpZiAodHlwZW9m
IHBhcmFtID09PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0
dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8w
OworICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNo
IChwYXJhbS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gg
PSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKKyAgICAgICAgICB2YXIgYWYgPSBtYXRjaFsxXTsK
KyAgICAgICAgICB2YXIgZmEgPSBtYXRjaFswXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
IEN1cnJ5Ll8xKGZhLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAv
KiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmLCAvKiBSZWZsICovMCk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgICBtYXRjaFsyXSwKKyAgICAgICAgICAgICAgICAgIG1h
dGNoWzNdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHZh
ciBtYXRjaCQxID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDEg
PSBtYXRjaCQxWzFdOworICAgICAgICAgIHZhciBmYSQxID0gbWF0Y2gkMVswXTsKKyAgICAgICAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGZhJDEsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3Vycnku
XzEoYWYkMSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVm
bCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMVsy
XSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDFbM10KKyAgICAgICAgICAgICAgICBdOworICAg
ICAgY2FzZSAyIDogCisgICAgICAgICAgdmFyIG1hdGNoJDIgPSBmbXR0eV9yZWxfZGV0KHBhcmFt
WzBdKTsKKyAgICAgICAgICB2YXIgYWYkMiA9IG1hdGNoJDJbMV07CisgICAgICAgICAgdmFyIGZh
JDIgPSBtYXRjaCQyWzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEk
MiwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7
CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQyLCAvKiBSZWZsICovMCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICBtYXRjaCQyWzJdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMlsz
XQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgbWF0
Y2gkMyA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAgICAgICAgIHZhciBhZiQzID0gbWF0
Y2gkM1sxXTsKKyAgICAgICAgICB2YXIgZmEkMyA9IG1hdGNoJDNbMF07CisgICAgICAgICAgcmV0
dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICBDdXJyeS5fMShmYSQzLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFm
JDMsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8w
OworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDNbMl0sCisg
ICAgICAgICAgICAgICAgICBtYXRjaCQzWzNdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgIGNh
c2UgNCA6IAorICAgICAgICAgIHZhciBtYXRjaCQ0ID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7
CisgICAgICAgICAgdmFyIGFmJDQgPSBtYXRjaCQ0WzFdOworICAgICAgICAgIHZhciBmYSQ0ID0g
bWF0Y2gkNFswXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGZhJDQsIC8q
IFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkNCwgLyogUmVmbCAqLzApOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgbWF0Y2gkNFsyXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDRbM10KKyAg
ICAgICAgICAgICAgICBdOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIG1hdGNoJDUg
PSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKKyAgICAgICAgICB2YXIgYWYkNSA9IG1hdGNoJDVb
MV07CisgICAgICAgICAgdmFyIGZhJDUgPSBtYXRjaCQ1WzBdOworICAgICAgICAgIHJldHVybiAv
KiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQ3VycnkuXzEoZmEkNSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQ1LCAv
KiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQ1WzJdLAorICAgICAg
ICAgICAgICAgICAgbWF0Y2gkNVszXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDYg
OiAKKyAgICAgICAgICB2YXIgbWF0Y2gkNiA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAg
ICAgICAgIHZhciBhZiQ2ID0gbWF0Y2gkNlsxXTsKKyAgICAgICAgICB2YXIgZmEkNiA9IG1hdGNo
JDZbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQ2LCAvKiBSZWZs
ICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIEN1cnJ5Ll8xKGFmJDYsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgIG1hdGNoJDZbMl0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQ2WzNdCisgICAgICAg
ICAgICAgICAgXTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHZhciBtYXRjaCQ3ID0gZm10
dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDcgPSBtYXRjaCQ3WzFdOwor
ICAgICAgICAgIHZhciBmYSQ3ID0gbWF0Y2gkN1swXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIEN1cnJ5Ll8xKGZhJDcsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkNywgLyogUmVm
bCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkN1syXSwKKyAgICAgICAgICAg
ICAgICAgIG1hdGNoJDdbM10KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSA4IDogCisg
ICAgICAgICAgdmFyIG1hdGNoJDggPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzFdKTsKKyAgICAgICAg
ICB2YXIgYWYkOCA9IG1hdGNoJDhbMV07CisgICAgICAgICAgdmFyIGZhJDggPSBtYXRjaCQ4WzBd
OworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkOCwgLyogUmVmbCAqLzAp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICBDdXJyeS5fMShhZiQ4LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICBtYXRjaCQ4WzJdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkOFszXQorICAgICAgICAgICAg
ICAgIF07CisgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkOSA9IGZtdHR5X3Jl
bF9kZXQocGFyYW1bMl0pOworICAgICAgICAgIHZhciBkZSA9IG1hdGNoJDlbM107CisgICAgICAg
ICAgdmFyIGVkID0gbWF0Y2gkOVsyXTsKKyAgICAgICAgICB2YXIgYWYkOSA9IG1hdGNoJDlbMV07
CisgICAgICAgICAgdmFyIGZhJDkgPSBtYXRjaCQ5WzBdOworICAgICAgICAgIHZhciB0eSA9IHRy
YW5zKHN5bW0ocGFyYW1bMF0pLCBwYXJhbVsxXSk7CisgICAgICAgICAgdmFyIG1hdGNoJDEwID0g
Zm10dHlfcmVsX2RldCh0eSk7CisgICAgICAgICAgdmFyIGpkID0gbWF0Y2gkMTBbM107CisgICAg
ICAgICAgdmFyIGRqID0gbWF0Y2gkMTBbMl07CisgICAgICAgICAgdmFyIGdhID0gbWF0Y2gkMTBb
MV07CisgICAgICAgICAgdmFyIGFnID0gbWF0Y2gkMTBbMF07CisgICAgICAgICAgcmV0dXJuIC8q
IHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICBDdXJyeS5fMShmYSQ5LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAg
IEN1cnJ5Ll8xKGFnLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAv
KiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGdhLCAvKiBSZWZsICovMCk7
CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDksIC8qIFJlZmwgKi8wKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3Vy
cnkuXzEoZWQsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZGos
IC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwor
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoamQsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAg
ICAgICAgICAgQ3VycnkuXzEoZGUsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IF07CisgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgdmFyIG1hdGNoJDExID0gZm10dHlfcmVs
X2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDEwID0gbWF0Y2gkMTFbMV07CisgICAg
ICAgICAgdmFyIGZhJDEwID0gbWF0Y2gkMTFbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICBDdXJyeS5fMShmYSQxMCwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQxMCwgLyogUmVm
bCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMTFbMl0sCisgICAgICAgICAg
ICAgICAgICBtYXRjaCQxMVszXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDExIDog
CisgICAgICAgICAgdmFyIG1hdGNoJDEyID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAg
ICAgICAgdmFyIGFmJDExID0gbWF0Y2gkMTJbMV07CisgICAgICAgICAgdmFyIGZhJDExID0gbWF0
Y2gkMTJbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQxMSwgLyog
UmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICBDdXJyeS5fMShhZiQxMSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMTJbMl0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQxMlszXQor
ICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgdmFyIG1hdGNo
JDEzID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDEyID0gbWF0
Y2gkMTNbMV07CisgICAgICAgICAgdmFyIGZhJDEyID0gbWF0Y2gkMTNbMF07CisgICAgICAgICAg
cmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQxMiwgLyogUmVmbCAqLzApOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5f
MShhZiQxMiwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVm
bCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMTNb
Ml0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQxM1szXQorICAgICAgICAgICAgICAgIF07Cisg
ICAgICBjYXNlIDEzIDogCisgICAgICAgICAgdmFyIG1hdGNoJDE0ID0gZm10dHlfcmVsX2RldChw
YXJhbVswXSk7CisgICAgICAgICAgdmFyIGRlJDEgPSBtYXRjaCQxNFszXTsKKyAgICAgICAgICB2
YXIgZWQkMSA9IG1hdGNoJDE0WzJdOworICAgICAgICAgIHZhciBhZiQxMyA9IG1hdGNoJDE0WzFd
OworICAgICAgICAgIHZhciBmYSQxMyA9IG1hdGNoJDE0WzBdOworICAgICAgICAgIHJldHVybiAv
KiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQ3VycnkuXzEoZmEkMTMsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkMTMs
IC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwor
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZWQkMSwgLyogUmVmbCAqLzApOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5f
MShkZSQxLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZs
ICovMDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2Fz
ZSAxNCA6IAorICAgICAgICAgIHZhciBtYXRjaCQxNSA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0p
OworICAgICAgICAgIHZhciBkZSQyID0gbWF0Y2gkMTVbM107CisgICAgICAgICAgdmFyIGVkJDIg
PSBtYXRjaCQxNVsyXTsKKyAgICAgICAgICB2YXIgYWYkMTQgPSBtYXRjaCQxNVsxXTsKKyAgICAg
ICAgICB2YXIgZmEkMTQgPSBtYXRjaCQxNVswXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
IEN1cnJ5Ll8xKGZhJDE0LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDE0LCAvKiBSZWZs
ICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIEN1cnJ5Ll8xKGVkJDIsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZGUkMiwg
LyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Cisg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXTsKKyAgICAgIAorICAgIH0KKyAg
fQorfQorCitmdW5jdGlvbiB0cmFucyh0eTEsIHR5MikgeworICB2YXIgZXhpdCA9IDA7CisgIGlm
ICh0eXBlb2YgdHkxID09PSAibnVtYmVyIikgeworICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVt
YmVyIikgeworICAgICAgaWYgKHR5MikgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAg
ICAgODE2LAorICAgICAgICAgICAgICAgIDIzCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
IF07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIEVuZF9vZl9mbXR0
eSAqLzA7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoICh0eTIudGFn
IHwgMCkgeworICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIGV4aXQgPSA2OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgZXhpdCA9IDc7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgZXhpdCA9
IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAg
ZXhpdCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMiA6IAorICAgICAg
ICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMyA6IAor
ICAgICAgICAgICAgZXhpdCA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAx
NCA6IAorICAgICAgICAgICAgZXhpdCA9IDU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICA4MTYs
CisgICAgICAgICAgICAgICAgICAyMworICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
XTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoICh0eTEudGFnIHwg
MCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1i
ZXIiKSB7CisgICAgICAgICAgICBleGl0ID0gODsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNh
c2UgMCA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIENoYXJfdHkgKi9CbG9jay5fXygw
LCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBp
ZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8
IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogU3RyaW5nX3R5ICovQmxvY2suX18oMSwgW3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOworICAg
ICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA2OworICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDc7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSAxMCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgZXhp
dCA9IDI7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMiA6
IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7Cisg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAg
ICAgICAgICAgICAgZXhpdCA9IDU7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAyIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICBleGl0ID0gODsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAor
ICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFt0cmFucyh0
eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gNjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA3OworICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQg
PSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTEgOiAK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAg
ICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1OworICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIGlmICh0eXBlb2Yg
dHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgZXhpdCA9IDg7CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgeworICAg
ICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBJbnQzMl90
eSAqL0Jsb2NrLl9fKDMsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAg
Y2FzZSA4IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNjsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQg
PSA3OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAg
ICAgICAgICAgIGV4aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAg
IGV4aXQgPSA1OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6
IAorICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAg
ZXhpdCA9IDg7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dp
dGNoICh0eTIudGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbdHJhbnModHkxWzBd
LCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAg
ZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSA5
IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsK
KyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAg
ICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9
PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAgICAgICAgIH0KKyAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAg
ICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50NjRfdHkgKi9C
bG9jay5fXyg1LCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNhc2Ug
OCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNzsK
KyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAg
ICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDYgOiAKKyAg
ICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQg
PSA4OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAo
dHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogRmxvYXRfdHkgKi9CbG9jay5fXyg2LCBbdHJhbnModHkxWzBdLCB0eTJbMF0p
XSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDY7
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSA5IDogCisgICAg
ICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2Fz
ZSA3IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcs
IFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAg
ICAgICAgICAgICAgICBleGl0ID0gNjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA3OworICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAg
ICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQg
PSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1OworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIGlm
ICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQu
bWwiLAorICAgICAgICAgICAgICAgICAgICA4MDIsCisgICAgICAgICAgICAgICAgICAgIDI2Cisg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAg
ICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9hcmdf
dHkgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnModHkx
WzBdLCB0eTJbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zKHR5MVsxXSwg
dHkyWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgY2Fz
ZSAxMCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9
IDI7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMiA6IAor
ICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7CisgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAg
ICAgICAgICAgZXhpdCA9IDU7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5t
bCIsCisgICAgICAgICAgICAgICAgICAgICAgICA4MDIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAyNgorICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDkg
OiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAg
IHRocm93IFsKKyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2Vy
dF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAiY2Ft
bGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgODEyLAorICAgICAgICAg
ICAgICAgICAgICAyOAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIudGFn
IHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQg
PSA2OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgOSA6IAor
ICAgICAgICAgICAgICAgICAgdmFyIHR5ID0gdHJhbnMoc3ltbSh0eTFbMV0pLCB0eTJbMF0pOwor
ICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gZm10dHlfcmVsX2RldCh0eSk7CisgICAgICAg
ICAgICAgICAgICBDdXJyeS5fMShtYXRjaFsxXSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAg
ICAgICAgQ3VycnkuXzEobWF0Y2hbM10sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAg
IHJldHVybiAvKiBGb3JtYXRfc3Vic3RfdHkgKi9CbG9jay5fXyg5LCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHkxWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5Mlsx
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFucyh0eTFbMl0sIHR5MlsyXSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAg
ICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAg
ICAgICAgIGV4aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4
aXQgPSA1OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgODEyLAorICAgICAgICAgICAgICAgICAgICAgICAgMjgKKyAgICAg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMCA6IAorICAgICAg
ICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgWwor
ICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUs
CisgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxG
b3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgICA3ODAsCisgICAgICAgICAgICAgICAgICAg
IDIxCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSBpZiAodHkyLnRhZyA9PT0gMTApIHsKKyAgICAgICAgICAgIHJldHVy
biAvKiBBbHBoYV90eSAqL0Jsb2NrLl9fKDEwLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQu
bWwiLAorICAgICAgICAgICAgICAgICAgICA3ODAsCisgICAgICAgICAgICAgICAgICAgIDIxCisg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIDExIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIg
PT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAg
ICAgICAgICAgICAgIDc4NCwKKyAgICAgICAgICAgICAgICAgICAgMjEKKyAgICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAx
MCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IFRoZXRhX3R5ICovQmxvY2suX18oMTEsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAg
ICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZv
cm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAgICAgICA3ODQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAyMQorICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDEyIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7CisgICAg
ICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAgIDc4OCwKKyAg
ICAgICAgICAgICAgICAgICAgMTkKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAo
dHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgICAg
ICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSAxMSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIEFueV90eSAqL0Jsb2NrLl9fKDEyLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAg
ICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxG
b3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgNzg4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgMTkKKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSAxMyA6IAorICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAg
ICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgICA3OTIsCisg
ICAgICAgICAgICAgICAgICAgIDIyCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2gg
KHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAg
ICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQg
PSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAK
KyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW3Ry
YW5zKHR5MVswXSwgdHkyWzBdKV0pOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDc5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDIyCisgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAg
IH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICBpZiAodHlw
ZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwK
KyAgICAgICAgICAgICAgICAgICAgNzk3LAorICAgICAgICAgICAgICAgICAgICAzMAorICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgeworICAgICAgICAgICAg
ICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICBl
eGl0ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEy
IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsK
KyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogSWdub3JlZF9yZWFkZXJfdHkgKi9CbG9jay5fXygxNCwg
W3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIDc5NywKKyAgICAgICAgICAgICAgICAgICAgICAgIDMwCisgICAgICAgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAg
ICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAgfQorICBzd2l0Y2ggKGV4
aXQpIHsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgIDc4
MSwKKyAgICAgICAgICAgICAgICAyMQorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdOwor
ICAgIGNhc2UgMiA6IAorICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgNzg1LAorICAg
ICAgICAgICAgICAgIDIxCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgY2Fz
ZSAzIDogCisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAi
Y2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICA3ODksCisgICAgICAgICAg
ICAgICAgMTkKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXTsKKyAgICBjYXNlIDQgOiAK
KyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5h
c3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjYW1saW50
ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgIDc5MywKKyAgICAgICAgICAgICAgICAy
MgorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgIGNhc2UgNSA6IAorICAgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9m
YWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZv
cm1hdC5tbCIsCisgICAgICAgICAgICAgICAgNzk4LAorICAgICAgICAgICAgICAgIDMwCisgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgY2FzZSA2IDogCisgICAgICAgIHRocm93
IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUs
CisgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1s
IiwKKyAgICAgICAgICAgICAgICA4MDMsCisgICAgICAgICAgICAgICAgMjYKKyAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgXTsKKyAgICBjYXNlIDcgOiAKKyAgICAgICAgdGhyb3cgWworICAg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAg
ICAgICAgICAgICAgIDgxMywKKyAgICAgICAgICAgICAgICAyOAorICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICBdOworICAgIGNhc2UgOCA6IAorICAgICAgICB0aHJvdyBbCisgICAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAg
ICAgICAgODE3LAorICAgICAgICAgICAgICAgIDIzCisgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgIF07CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4o
Zm9ybWF0dGluZ19nZW4pIHsKKyAgcmV0dXJuIGZtdHR5X29mX2ZtdChmb3JtYXR0aW5nX2dlblsw
XVswXSk7Cit9CisKK2Z1bmN0aW9uIGZtdHR5X29mX2ZtdChfZm10dHkpIHsKKyAgd2hpbGUodHJ1
ZSkgeworICAgIHZhciBmbXR0eSA9IF9mbXR0eTsKKyAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAi
bnVtYmVyIikgeworICAgICAgcmV0dXJuIC8qIEVuZF9vZl9mbXR0eSAqLzA7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgc3dpdGNoIChmbXR0eS50YWcgfCAwKSB7CisgICAgICAgIGNhc2UgMiA6
IAorICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9wYWRkaW5n
X2ZtdHR5KGZtdHR5WzBdLCAvKiBTdHJpbmdfdHkgKi9CbG9jay5fXygxLCBbZm10dHlfb2ZfZm10
KGZtdHR5WzFdKV0pKTsKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICB2YXIgdHlfcmVz
dCA9IGZtdHR5X29mX2ZtdChmbXR0eVszXSk7CisgICAgICAgICAgICB2YXIgcHJlY190eSA9IGZt
dHR5X29mX3ByZWNpc2lvbl9mbXR0eShmbXR0eVsyXSwgLyogSW50X3R5ICovQmxvY2suX18oMiwg
W3R5X3Jlc3RdKSk7CisgICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfcGFkZGluZ19mbXR0eShm
bXR0eVsxXSwgcHJlY190eSk7CisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgdmFyIHR5
X3Jlc3QkMSA9IGZtdHR5X29mX2ZtdChmbXR0eVszXSk7CisgICAgICAgICAgICB2YXIgcHJlY190
eSQxID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5KGZtdHR5WzJdLCAvKiBJbnQzMl90eSAqL0Js
b2NrLl9fKDMsIFt0eV9yZXN0JDFdKSk7CisgICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfcGFk
ZGluZ19mbXR0eShmbXR0eVsxXSwgcHJlY190eSQxKTsKKyAgICAgICAgY2FzZSA2IDogCisgICAg
ICAgICAgICB2YXIgdHlfcmVzdCQyID0gZm10dHlfb2ZfZm10KGZtdHR5WzNdKTsKKyAgICAgICAg
ICAgIHZhciBwcmVjX3R5JDIgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkoZm10dHlbMl0sIC8q
IE5hdGl2ZWludF90eSAqL0Jsb2NrLl9fKDQsIFt0eV9yZXN0JDJdKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZm10dHlfb2ZfcGFkZGluZ19mbXR0eShmbXR0eVsxXSwgcHJlY190eSQyKTsKKyAgICAg
ICAgY2FzZSA3IDogCisgICAgICAgICAgICB2YXIgdHlfcmVzdCQzID0gZm10dHlfb2ZfZm10KGZt
dHR5WzNdKTsKKyAgICAgICAgICAgIHZhciBwcmVjX3R5JDMgPSBmbXR0eV9vZl9wcmVjaXNpb25f
Zm10dHkoZm10dHlbMl0sIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW3R5X3Jlc3QkM10pKTsK
KyAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5KGZtdHR5WzFdLCBwcmVj
X3R5JDMpOworICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIHZhciB0eV9yZXN0JDQgPSBm
bXR0eV9vZl9mbXQoZm10dHlbM10pOworICAgICAgICAgICAgdmFyIHByZWNfdHkkNCA9IGZtdHR5
X29mX3ByZWNpc2lvbl9mbXR0eShmbXR0eVsyXSwgLyogRmxvYXRfdHkgKi9CbG9jay5fXyg2LCBb
dHlfcmVzdCQ0XSkpOworICAgICAgICAgICAgcmV0dXJuIGZtdHR5X29mX3BhZGRpbmdfZm10dHko
Zm10dHlbMV0sIHByZWNfdHkkNCk7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIEJvb2xfdHkgKi9CbG9jay5fXyg3LCBbZm10dHlfb2ZfZm10KGZtdHR5WzBdKV0pOwor
ICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIHJl
dHVybiAvKiBGb3JtYXRfYXJnX3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAg
ICAgIGZtdHR5WzFdLAorICAgICAgICAgICAgICAgICAgICAgIGZtdHR5X29mX2ZtdChmbXR0eVsy
XSkKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAg
ICAgIHZhciB0eSA9IGZtdHR5WzFdOworICAgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9zdWJz
dF90eSAqL0Jsb2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAgICAgICB0eSwKKyAgICAgICAg
ICAgICAgICAgICAgICB0eSwKKyAgICAgICAgICAgICAgICAgICAgICBmbXR0eV9vZl9mbXQoZm10
dHlbMl0pCisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICBjYXNlIDE1IDogCisgICAg
ICAgICAgICByZXR1cm4gLyogQWxwaGFfdHkgKi9CbG9jay5fXygxMCwgW2ZtdHR5X29mX2ZtdChm
bXR0eVswXSldKTsKKyAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFRo
ZXRhX3R5ICovQmxvY2suX18oMTEsIFtmbXR0eV9vZl9mbXQoZm10dHlbMF0pXSk7CisgICAgICAg
IGNhc2UgMTEgOiAKKyAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICBjYXNlIDE3IDogCisgICAg
ICAgICAgICBfZm10dHkgPSBmbXR0eVsxXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXRC
YXNpY3MuY29uY2F0X2ZtdHR5KGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuKGZtdHR5WzBdKSwgZm10
dHlfb2ZfZm10KGZtdHR5WzFdKSk7CisgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAgIHJl
dHVybiAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW2ZtdHR5X29mX2ZtdChmbXR0eVswXSld
KTsKKyAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFN0cmluZ190eSAq
L0Jsb2NrLl9fKDEsIFtmbXR0eV9vZl9mbXQoZm10dHlbMl0pXSk7CisgICAgICAgIGNhc2UgMjEg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbZm10dHlfb2Zf
Zm10KGZtdHR5WzFdKV0pOworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgY2FzZSAxIDogCisg
ICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxvY2su
X18oMCwgW2ZtdHR5X29mX2ZtdChmbXR0eVswXSldKTsKKyAgICAgICAgY2FzZSAyMyA6IAorICAg
ICAgICAgICAgdmFyIGlnbiA9IGZtdHR5WzBdOworICAgICAgICAgICAgdmFyIGZtdCA9IGZtdHR5
WzFdOworICAgICAgICAgICAgaWYgKHR5cGVvZiBpZ24gPT09ICJudW1iZXIiKSB7CisgICAgICAg
ICAgICAgIHN3aXRjaCAoaWduKSB7CisgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBJZ25vcmVkX3JlYWRlcl90eSAqL0Jsb2NrLl9fKDE0LCBb
Zm10dHlfb2ZfZm10KGZtdCldKTsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAg
ICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZtdHR5X29mX2ZtdChm
bXQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgc3dpdGNoIChpZ24udGFnIHwgMCkgewor
ICAgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ2Ft
bGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXR0eShpZ25bMV0sIGZtdHR5X29mX2ZtdChm
bXQpKTsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAK
KyAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAg
ICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAg
ICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9mbXQoZm10KTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBjYXNlIDI0IDogCisgICAg
ICAgICAgICByZXR1cm4gZm10dHlfb2ZfY3VzdG9tKGZtdHR5WzBdLCBmbXR0eV9vZl9mbXQoZm10
dHlbMl0pKTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBm
bXR0eV9vZl9jdXN0b20oYXJpdHksIGZtdHR5KSB7CisgIGlmIChhcml0eSkgeworICAgIHJldHVy
biAvKiBBbnlfdHkgKi9CbG9jay5fXygxMiwgW2ZtdHR5X29mX2N1c3RvbShhcml0eVswXSwgZm10
dHkpXSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZtdHR5OworICB9Cit9CisKK2Z1bmN0
aW9uIGZtdHR5X29mX3BhZGRpbmdfZm10dHkocGFkLCBmbXR0eSkgeworICBpZiAodHlwZW9mIHBh
ZCA9PT0gIm51bWJlciIgfHwgIXBhZC50YWcpIHsKKyAgICByZXR1cm4gZm10dHk7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFtmbXR0eV0pOworICB9
Cit9CisKK2Z1bmN0aW9uIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eShwcmVjLCBmbXR0eSkgewor
ICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiICYmIHByZWMgIT09IDApIHsKKyAgICByZXR1
cm4gLyogSW50X3R5ICovQmxvY2suX18oMiwgW2ZtdHR5XSk7CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIGZtdHR5OworICB9Cit9CisKK3ZhciBUeXBlX21pc21hdGNoID0gQ2FtbF9leGNlcHRp
b25zLmNyZWF0ZSgiQ2FtbGludGVybmFsRm9ybWF0LlR5cGVfbWlzbWF0Y2giKTsKKworZnVuY3Rp
b24gdHlwZV9wYWRkaW5nKHBhZCwgZm10dHkpIHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1i
ZXIiKSB7CisgICAgcmV0dXJuIC8qIFBhZGRpbmdfZm10dHlfRUJCICovWworICAgICAgICAgICAg
LyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICBmbXR0eQorICAgICAgICAgIF07CisgIH0K
KyAgZWxzZSBpZiAocGFkLnRhZykgeworICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIi
KSB7CisgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgIH0KKyAgICBlbHNlIGlmIChmbXR0
eS50YWcgPT09IDIpIHsKKyAgICAgIHJldHVybiAvKiBQYWRkaW5nX2ZtdHR5X0VCQiAqL1sKKyAg
ICAgICAgICAgICAgLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbcGFkWzBdXSksCisgICAg
ICAgICAgICAgIGZtdHR5WzBdCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVy
biAvKiBQYWRkaW5nX2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExpdF9wYWRkaW5nICov
QmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgIHBhZFswXSwKKyAgICAgICAgICAgICAgICBw
YWRbMV0KKyAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICBmbXR0eQorICAgICAgICAgIF07
CisgIH0KK30KKworZnVuY3Rpb24gdHlwZV9wYWRwcmVjKHBhZCwgcHJlYywgZm10dHkpIHsKKyAg
dmFyIG1hdGNoID0gdHlwZV9wYWRkaW5nKHBhZCwgZm10dHkpOworICBpZiAodHlwZW9mIHByZWMg
PT09ICJudW1iZXIiKSB7CisgICAgaWYgKHByZWMgIT09IDApIHsKKyAgICAgIHZhciBtYXRjaCQx
ID0gbWF0Y2hbMV07CisgICAgICBpZiAodHlwZW9mIG1hdGNoJDEgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICB9CisgICAgICBlbHNlIGlmIChtYXRj
aCQxLnRhZyA9PT0gMikgeworICAgICAgICByZXR1cm4gLyogUGFkcHJlY19mbXR0eV9FQkIgKi9b
CisgICAgICAgICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgICAgLyogQXJnX3ByZWNp
c2lvbiAqLzEsCisgICAgICAgICAgICAgICAgbWF0Y2gkMVswXQorICAgICAgICAgICAgICBdOwor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAg
ICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIFBhZHByZWNfZm10dHlfRUJC
ICovWworICAgICAgICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgICAgICAgLyogTm9fcHJlY2lz
aW9uICovMCwKKyAgICAgICAgICAgICAgbWF0Y2hbMV0KKyAgICAgICAgICAgIF07CisgICAgfQor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdHR5X0VCQiAqL1sKKyAgICAg
ICAgICAgIG1hdGNoWzBdLAorICAgICAgICAgICAgLyogTGl0X3ByZWNpc2lvbiAqL1twcmVjWzBd
XSwKKyAgICAgICAgICAgIG1hdGNoWzFdCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlv
biB0eXBlX2lnbm9yZWRfcGFyYW1fb25lKGlnbiwgZm10LCBmbXR0eSkgeworICB2YXIgbWF0Y2gg
PSB0eXBlX2Zvcm1hdF9nZW4oZm10LCBmbXR0eSk7CisgIHJldHVybiAvKiBGbXRfZm10dHlfRUJC
ICovWworICAgICAgICAgIC8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAg
ICAgICAgICBpZ24sCisgICAgICAgICAgICAgIG1hdGNoWzBdCisgICAgICAgICAgICBdKSwKKyAg
ICAgICAgICBtYXRjaFsxXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0eXBlX2Zvcm1hdF9n
ZW4oZm10LCBmbXR0eSkgeworICBpZiAodHlwZW9mIGZtdCA9PT0gIm51bWJlciIpIHsKKyAgICBy
ZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQg
Ki8wLAorICAgICAgICAgICAgZm10dHkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAg
IHN3aXRjaCAoZm10LnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIGlmICh0
eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21h
dGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcpIHsKKyAgICAg
ICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgdmFyIG1hdGNoID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10dHlb
MF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIENoYXIgKi9CbG9jay5fXygwLCBbbWF0Y2hbMF1dKSwKKyAgICAgICAgICAg
ICAgICAgICAgbWF0Y2hbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0
eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAg
ICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZykgeworICAgICAgICAgICAgdGhy
b3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICB2YXIgbWF0Y2gkMSA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5WzBdKTsKKyAg
ICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAg
ICAvKiBDYW1sX2NoYXIgKi9CbG9jay5fXygxLCBbbWF0Y2gkMVswXV0pLAorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQxWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHZhciBtYXRjaCQyID0g
dHlwZV9wYWRkaW5nKGZtdFswXSwgZm10dHkpOworICAgICAgICAgIHZhciBtYXRjaCQzID0gbWF0
Y2gkMlsxXTsKKyAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDMgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChtYXRjaCQzLnRhZyA9PT0gMSkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDQgPSB0
eXBlX2Zvcm1hdF9nZW4oZm10WzFdLCBtYXRjaCQzWzBdKTsKKyAgICAgICAgICAgIHJldHVybiAv
KiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmcgKi9CbG9j
ay5fXygyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyWzBdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkNFswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQ0WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAg
ICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7
CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgdmFyIG1hdGNoJDUgPSB0eXBlX3BhZGRpbmcoZm10WzBdLCBmbXR0eSk7CisgICAgICAgICAg
dmFyIG1hdGNoJDYgPSBtYXRjaCQ1WzFdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkNiA9
PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDYudGFnID09PSAxKSB7CisgICAgICAgICAg
ICB2YXIgbWF0Y2gkNyA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMV0sIG1hdGNoJDZbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkNVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDdbMF0KKyAgICAgICAg
ICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkN1sxXQorICAgICAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgNCA6IAorICAgICAgICAgIHZhciBtYXRjaCQ4ID0gdHlwZV9wYWRwcmVjKGZtdFsx
XSwgZm10WzJdLCBmbXR0eSk7CisgICAgICAgICAgdmFyIG1hdGNoJDkgPSBtYXRjaCQ4WzJdOwor
ICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkOSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAg
IHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKG1h
dGNoJDkudGFnID09PSAyKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSB0eXBlX2Zvcm1h
dF9nZW4oZm10WzNdLCBtYXRjaCQ5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10
dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBt
YXRjaCQ4WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkOFsxXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDEwWzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisg
ICAgICAgICAgICAgICAgICAgIG1hdGNoJDEwWzFdCisgICAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0
Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAg
ICAgICAgdmFyIG1hdGNoJDExID0gdHlwZV9wYWRwcmVjKGZtdFsxXSwgZm10WzJdLCBmbXR0eSk7
CisgICAgICAgICAgdmFyIG1hdGNoJDEyID0gbWF0Y2gkMTFbMl07CisgICAgICAgICAgaWYgKHR5
cGVvZiBtYXRjaCQxMiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlz
bWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDEyLnRhZyA9PT0g
MykgeworICAgICAgICAgICAgdmFyIG1hdGNoJDEzID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFszXSwg
bWF0Y2gkMTJbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisg
ICAgICAgICAgICAgICAgICAgIC8qIEludDMyICovQmxvY2suX18oNSwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTFbMF0s
CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMVsxXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoJDEzWzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAg
ICAgICAgICAgIG1hdGNoJDEzWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAg
ICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgdmFy
IG1hdGNoJDE0ID0gdHlwZV9wYWRwcmVjKGZtdFsxXSwgZm10WzJdLCBmbXR0eSk7CisgICAgICAg
ICAgdmFyIG1hdGNoJDE1ID0gbWF0Y2gkMTRbMl07CisgICAgICAgICAgaWYgKHR5cGVvZiBtYXRj
aCQxNSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDE1LnRhZyA9PT0gNCkgeworICAg
ICAgICAgICAgdmFyIG1hdGNoJDE2ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFszXSwgbWF0Y2gkMTVb
MF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIE5hdGl2ZWludCAqL0Jsb2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZtdFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE0WzBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTRbMV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaCQxNlswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAg
ICAgICBtYXRjaCQxNlsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAg
IH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHZhciBtYXRj
aCQxNyA9IHR5cGVfcGFkcHJlYyhmbXRbMV0sIGZtdFsyXSwgZm10dHkpOworICAgICAgICAgIHZh
ciBtYXRjaCQxOCA9IG1hdGNoJDE3WzJdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkMTgg
PT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChtYXRjaCQxOC50YWcgPT09IDUpIHsKKyAgICAgICAg
ICAgIHZhciBtYXRjaCQxOSA9IHR5cGVfZm9ybWF0X2dlbihmbXRbM10sIG1hdGNoJDE4WzBdKTsK
KyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAg
ICAgICAvKiBJbnQ2NCAqL0Jsb2NrLl9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZt
dFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE3WzBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMTdbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQx
OVswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRj
aCQxOVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIHZhciBtYXRjaCQyMCA9IHR5
cGVfcGFkcHJlYyhmbXRbMV0sIGZtdFsyXSwgZm10dHkpOworICAgICAgICAgIHZhciBtYXRjaCQy
MSA9IG1hdGNoJDIwWzJdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkMjEgPT09ICJudW1i
ZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIGlmIChtYXRjaCQyMS50YWcgPT09IDYpIHsKKyAgICAgICAgICAgIHZhciBt
YXRjaCQyMiA9IHR5cGVfZm9ybWF0X2dlbihmbXRbM10sIG1hdGNoJDIxWzBdKTsKKyAgICAgICAg
ICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBG
bG9hdCAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFswXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDIwWzBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMjBbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMlswXQorICAg
ICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMlsxXQor
ICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgOSA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1i
ZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDcpIHsKKyAgICAgICAgICAgIHZhciBtYXRj
aCQyMyA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBCb29sICov
QmxvY2suX18oOSwgW21hdGNoJDIzWzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDIz
WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIHZhciBtYXRjaCQyNCA9IHR5cGVf
Zm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5KTsKKyAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5
X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEZsdXNoICovQmxvY2suX18oMTAsIFttYXRj
aCQyNFswXV0pLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMjRbMV0KKyAgICAgICAgICAgICAg
ICBdOworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHZhciBtYXRjaCQyNSA9IHR5cGVfZm9y
bWF0X2dlbihmbXRbMV0sIGZtdHR5KTsKKyAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VC
QiAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEs
IFsKKyAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0sCisgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkMjVbMF0KKyAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICBt
YXRjaCQyNVsxXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDEyIDogCisgICAgICAg
ICAgdmFyIG1hdGNoJDI2ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsxXSwgZm10dHkpOworICAgICAg
ICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgLyogQ2hh
cl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0s
CisgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjZbMF0KKyAgICAgICAgICAgICAgICAgICAg
XSksCisgICAgICAgICAgICAgICAgICBtYXRjaCQyNlsxXQorICAgICAgICAgICAgICAgIF07Cisg
ICAgICBjYXNlIDEzIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIp
IHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAg
ICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gOCkgeworICAgICAgICAgICAgdmFyIHN1Yl9mbXR0
eSRwcmltZSA9IGZtdHR5WzBdOworICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1
YWwoLyogRm10dHlfRUJCICovW2ZtdFsxXV0sIC8qIEZtdHR5X0VCQiAqL1tzdWJfZm10dHkkcHJp
bWVdKSkgeworICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgdmFyIG1hdGNoJDI3ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsyXSwgZm10
dHlbMV0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAg
ICAgICAgICAgICAgIC8qIEZvcm1hdF9hcmcgKi9CbG9jay5fXygxMywgWworICAgICAgICAgICAg
ICAgICAgICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3ViX2ZtdHR5JHBy
aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjdbMF0KKyAgICAgICAgICAgICAg
ICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjdbMV0KKyAgICAgICAgICAg
ICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhy
b3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDE0IDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAg
ICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgaWYgKGZtdHR5LnRhZyA9PT0gOSkgeworICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eTEgPSBm
bXR0eVswXTsKKyAgICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX25vdGVxdWFsKC8qIEZtdHR5
X0VCQiAqL1tDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKGZtdFsxXSldLCAvKiBG
bXR0eV9FQkIgKi9bQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChzdWJfZm10dHkx
KV0pKSB7CisgICAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB2YXIgbWF0Y2gkMjggPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzJdLCBDYW1s
aW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKGZtdHR5WzJdKSk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0
X3N1YnN0ICovQmxvY2suX18oMTQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFswXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9mbXR0eTEsCisgICAgICAgICAgICAgICAgICAg
ICAgICBtYXRjaCQyOFswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQyOFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICBpZiAo
dHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNt
YXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMCkg
eworICAgICAgICAgICAgdmFyIG1hdGNoJDI5ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10
dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAg
ICAgICAgICAgICAgIC8qIEFscGhhICovQmxvY2suX18oMTUsIFttYXRjaCQyOVswXV0pLAorICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQyOVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTYgOiAKKyAgICAg
ICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cg
VHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFn
ID09PSAxMSkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDMwID0gdHlwZV9mb3JtYXRfZ2VuKGZt
dFswXSwgZm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9b
CisgICAgICAgICAgICAgICAgICAgIC8qIFRoZXRhICovQmxvY2suX18oMTYsIFttYXRjaCQzMFsw
XV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQzMFsxXQorICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBl
X21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTcg
OiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMzEgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzFdLCBmbXR0
eSk7CisgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAg
ICAgICAvKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAgICAg
ICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDMxWzBdCisgICAgICAg
ICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMzFbMV0KKyAgICAgICAg
ICAgICAgICBdOworICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgIHZhciBmb3JtYXR0aW5nX2dl
biA9IGZtdFswXTsKKyAgICAgICAgICB2YXIgZm10MCA9IGZtdFsxXTsKKyAgICAgICAgICB2YXIg
Zm10dHkwID0gZm10dHk7CisgICAgICAgICAgaWYgKGZvcm1hdHRpbmdfZ2VuLnRhZykgeworICAg
ICAgICAgICAgdmFyIG1hdGNoJDMyID0gZm9ybWF0dGluZ19nZW5bMF07CisgICAgICAgICAgICB2
YXIgbWF0Y2gkMzMgPSB0eXBlX2Zvcm1hdF9nZW4obWF0Y2gkMzJbMF0sIGZtdHR5MCk7CisgICAg
ICAgICAgICB2YXIgbWF0Y2gkMzQgPSB0eXBlX2Zvcm1hdF9nZW4oZm10MCwgbWF0Y2gkMzNbMV0p
OworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAg
ICAgICAgIC8qIEZvcm1hdHRpbmdfZ2VuICovQmxvY2suX18oMTgsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIE9wZW5fYm94ICovQmxvY2suX18oMSwgWy8qIEZvcm1hdCAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDMzWzBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMzJbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXSks
CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQzNFswXQorICAgICAgICAgICAgICAgICAg
ICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQzNFsxXQorICAgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkMzUgPSBmb3JtYXR0aW5nX2dlblswXTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQzNiA9IHR5
cGVfZm9ybWF0X2dlbihtYXRjaCQzNVswXSwgZm10dHkwKTsKKyAgICAgICAgICAgIHZhciBtYXRj
aCQzNyA9IHR5cGVfZm9ybWF0X2dlbihmbXQwLCBtYXRjaCQzNlsxXSk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0
dGluZ19nZW4gKi9CbG9jay5fXygxOCwgWworICAgICAgICAgICAgICAgICAgICAgICAgLyogT3Bl
bl90YWcgKi9CbG9jay5fXygwLCBbLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2gkMzZbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aCQzNVsxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1dKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoJDM3WzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDM3WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAg
IH0KKyAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVt
YmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMykgeworICAgICAgICAgICAgdmFyIG1h
dGNoJDM4ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10dHlbMF0pOworICAgICAgICAgICAg
cmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIFJlYWRl
ciAqL0Jsb2NrLl9fKDE5LCBbbWF0Y2gkMzhbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0
Y2gkMzhbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIwIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0
eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAg
ICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMSkgeworICAgICAgICAg
ICAgdmFyIG1hdGNoJDM5ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsyXSwgZm10dHlbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIFNjYW5fY2hhcl9zZXQgKi9CbG9jay5fXygyMCwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgZm10WzFdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMzlbMF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkMzlbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsK
KyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIxIDogCisgICAgICAg
ICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5
cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9
PT0gMikgeworICAgICAgICAgICAgdmFyIG1hdGNoJDQwID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsx
XSwgZm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisg
ICAgICAgICAgICAgICAgICAgIC8qIFNjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkNDBbMF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkNDBbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIzIDogCisgICAgICAgICAgdmFyIGlnbiA9
IGZtdFswXTsKKyAgICAgICAgICB2YXIgZm10JDEgPSBmbXRbMV07CisgICAgICAgICAgdmFyIGZt
dHR5JDEgPSBmbXR0eTsKKyAgICAgICAgICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJlciIpIHsK
KyAgICAgICAgICAgIHN3aXRjaCAoaWduKSB7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAg
ICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSQxID09PSAibnVtYmVyIikgeworICAgICAg
ICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZm10dHkkMS50YWcgPT09IDE0KSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBtYXRjaCQ0MSA9IHR5cGVfZm9ybWF0X2dlbihmbXQkMSwgZm10dHkk
MVswXSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygy
MywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmVkX3JlYWRlciAq
LzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDQxWzBdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXRjaCQ0MVsxXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93
IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZShpZ24sIGZtdCQxLCBmbXR0
eSQxKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChpZ24udGFnIHwgMCkgeworICAgICAgICAg
ICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlX2lnbm9yZWRfcGFy
YW1fb25lKC8qIElnbm9yZWRfZm9ybWF0X2FyZyAqL0Jsb2NrLl9fKDcsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZ25bMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQkMSwgZm10
dHkkMSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgdmFyIG1h
dGNoJDQyID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oaWduWzFdLCBmbXQkMSwg
Zm10dHkkMSk7CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNDMgPSBtYXRjaCQ0MlsxXTsK
KyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfZm9ybWF0X3N1YnN0ICovQmxvY2su
X18oOCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0MlswXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo
JDQzWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoJDQzWzFdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAg
ICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAg
IGNhc2UgMiA6IAorICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgY2FzZSA0
IDogCisgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAg
ICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAg
ICAgICAgICAgIHJldHVybiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lKGlnbiwgZm10JDEsIGZtdHR5
JDEpOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICBj
YXNlIDIyIDogCisgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRj
aDsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiB0eXBlX2lnbm9yZWRfZm9ybWF0
X3N1YnN0aXR1dGlvbihzdWJfZm10dHksIGZtdCwgZm10dHkpIHsKKyAgaWYgKHR5cGVvZiBzdWJf
Zm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisg
ICAgICAgICAgICAvKiBFbmRfb2ZfZm10dHkgKi8wLAorICAgICAgICAgICAgdHlwZV9mb3JtYXRf
Z2VuKGZtdCwgZm10dHkpCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2gg
KHN1Yl9mbXR0eS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICBpZiAodHlw
ZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRj
aDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnKSB7CisgICAgICAg
ICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHZhciBtYXRjaCA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9u
KHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICByZXR1cm4gLyogRm10
dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogQ2hhcl90eSAqL0Jsb2NrLl9f
KDAsIFttYXRjaFswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXQorICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAg
ICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAo
Zm10dHkudGFnID09PSAxKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHR5cGVfaWdub3Jl
ZF9mb3JtYXRfc3Vic3RpdHV0aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAg
ICAgICAgICByZXR1cm4gLyogRm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
LyogU3RyaW5nX3R5ICovQmxvY2suX18oMSwgW21hdGNoJDFbMF1dKSwKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkMVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAg
IH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIGlmICh0eXBl
b2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDIpIHsKKyAg
ICAgICAgICAgIHZhciBtYXRjaCQyID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24o
c3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0
eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBJbnRfdHkgKi9CbG9jay5fXygy
LCBbbWF0Y2gkMlswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQyWzFdCisgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAzIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsK
KyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMykgeworICAgICAgICAgICAgdmFyIG1hdGNoJDMgPSB0
eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlb
MF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIEludDMyX3R5ICovQmxvY2suX18oMywgW21hdGNoJDNbMF1dKSwKKyAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkM1sxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg
ICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAg
IGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBl
X21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09
IDQpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJz
dGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVy
biAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBOYXRpdmVpbnRf
dHkgKi9CbG9jay5fXyg0LCBbbWF0Y2gkNFswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRj
aCQ0WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9
PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gNSkgeworICAgICAgICAgICAg
dmFyIG1hdGNoJDUgPSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlb
MF0sIGZtdCwgZm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIg
Ki9bCisgICAgICAgICAgICAgICAgICAgIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW21hdGNo
JDVbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNVsxXQorICAgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBU
eXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
NiA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAg
ICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlm
IChmbXR0eS50YWcgPT09IDYpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ2ID0gdHlwZV9pZ25v
cmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAg
ICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAg
ICAvKiBGbG9hdF90eSAqL0Jsb2NrLl9fKDYsIFttYXRjaCQ2WzBdXSksCisgICAgICAgICAgICAg
ICAgICAgIG1hdGNoJDZbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAg
ICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBpZiAodHlw
ZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRj
aDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSA3KSB7Cisg
ICAgICAgICAgICB2YXIgbWF0Y2gkNyA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9u
KHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICByZXR1cm4gLyogRm10
dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogQm9vbF90eSAqL0Jsb2NrLl9f
KDcsIFttYXRjaCQ3WzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDdbMV0KKyAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIDggOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikg
eworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAg
ICAgZWxzZSBpZiAoZm10dHkudGFnID09PSA4KSB7CisgICAgICAgICAgICB2YXIgc3ViMl9mbXR0
eSRwcmltZSA9IGZtdHR5WzBdOworICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1
YWwoLyogRm10dHlfRUJCICovW3N1Yl9mbXR0eVswXV0sIC8qIEZtdHR5X0VCQiAqL1tzdWIyX2Zt
dHR5JHByaW1lXSkpIHsKKyAgICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHZhciBtYXRjaCQ4ID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9z
dWJzdGl0dXRpb24oc3ViX2ZtdHR5WzFdLCBmbXQsIGZtdHR5WzFdKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBGb3JtYXRf
YXJnX3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMl9mbXR0
eSRwcmltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDhbMF0KKyAgICAgICAgICAg
ICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkOFsxXQorICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0
aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgOSA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChmbXR0eS50YWcgPT09IDkpIHsKKyAgICAgICAgICAgIHZhciBzdWIyX2ZtdHR5JHBy
aW1lJDEgPSBmbXR0eVsxXTsKKyAgICAgICAgICAgIHZhciBzdWIxX2ZtdHR5JHByaW1lID0gZm10
dHlbMF07CisgICAgICAgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBGbXR0eV9F
QkIgKi9bQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChzdWJfZm10dHlbMF0pXSwg
LyogRm10dHlfRUJCICovW0NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3ViMV9m
bXR0eSRwcmltZSldKSkgeworICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyogRm10
dHlfRUJCICovW0NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3ViX2ZtdHR5WzFd
KV0sIC8qIEZtdHR5X0VCQiAqL1tDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKHN1
YjJfZm10dHkkcHJpbWUkMSldKSkgeworICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eSRwcmltZSA9IHRyYW5z
KHN5bW0oc3ViMV9mbXR0eSRwcmltZSksIHN1YjJfZm10dHkkcHJpbWUkMSk7CisgICAgICAgICAg
ICB2YXIgbWF0Y2gkOSA9IGZtdHR5X3JlbF9kZXQoc3ViX2ZtdHR5JHByaW1lKTsKKyAgICAgICAg
ICAgIEN1cnJ5Ll8xKG1hdGNoJDlbMV0sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgIEN1cnJ5
Ll8xKG1hdGNoJDlbM10sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxMCA9
IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKENhbWxpbnRlcm5hbEZvcm1hdEJhc2lj
cy5lcmFzZV9yZWwoc3ViX2ZtdHR5WzJdKSwgZm10LCBmbXR0eVsyXSk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogRm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0
X3N1YnN0X3R5ICovQmxvY2suX18oOSwgWworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMV9m
bXR0eSRwcmltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YjJfZm10dHkkcHJpbWUkMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0obWF0Y2gkMTBbMF0pCisgICAgICAgICAgICAg
ICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEwWzFdCisgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRo
cm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSAxMCA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChmbXR0eS50YWcgPT09IDEwKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTEgPSB0
eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlb
MF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIEFscGhhX3R5ICovQmxvY2suX18oMTAsIFttYXRjaCQxMVswXV0pLAorICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQxMVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTEgOiAKKyAgICAg
ICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cg
VHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFn
ID09PSAxMSkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDEyID0gdHlwZV9pZ25vcmVkX2Zvcm1h
dF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAg
IHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBUaGV0
YV90eSAqL0Jsb2NrLl9fKDExLCBbbWF0Y2gkMTJbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkMTJbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgdGhyb3cgVHlwZV9t
aXNtYXRjaDsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09
PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAg
ICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMykgeworICAgICAgICAgICAg
dmFyIG1hdGNoJDEzID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5
WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJC
ICovWworICAgICAgICAgICAgICAgICAgICAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW21h
dGNoJDEzWzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzWzFdCisgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRo
cm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSAxNCA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChmbXR0eS50YWcgPT09IDE0KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTQgPSB0
eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlb
MF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIElnbm9yZWRfcmVhZGVyX3R5ICovQmxvY2suX18oMTQsIFttYXRjaCQxNFsw
XV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQxNFsxXQorICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBl
X21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0K
KyAgfQorfQorCitmdW5jdGlvbiB0eXBlX2Zvcm1hdChmbXQsIGZtdHR5KSB7CisgIHZhciBtYXRj
aCA9IHR5cGVfZm9ybWF0X2dlbihmbXQsIGZtdHR5KTsKKyAgaWYgKHR5cGVvZiBtYXRjaFsxXSA9
PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gbWF0Y2hbMF07CisgIH0KKyAgZWxzZSB7CisgICAg
dGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgfQorfQorCitmdW5jdGlvbiByZWNhc3QoZm10LCBmbXR0
eSkgeworICByZXR1cm4gdHlwZV9mb3JtYXQoZm10LCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Mu
ZXJhc2VfcmVsKHN5bW0oZm10dHkpKSk7Cit9CisKK2Z1bmN0aW9uIGZpeF9wYWRkaW5nKHBhZHR5
LCB3aWR0aCwgc3RyKSB7CisgIHZhciBsZW4gPSBzdHIubGVuZ3RoOworICB2YXIgbWF0Y2hfMDAw
ID0gUGVydmFzaXZlcy5hYnMod2lkdGgpOworICB2YXIgbWF0Y2hfMDAxID0gd2lkdGggPCAwID8g
LyogTGVmdCAqLzAgOiBwYWR0eTsKKyAgdmFyIHBhZHR5JDEgPSBtYXRjaF8wMDE7CisgIHZhciB3
aWR0aCQxID0gbWF0Y2hfMDAwOworICBpZiAod2lkdGgkMSA8PSBsZW4pIHsKKyAgICByZXR1cm4g
c3RyOworICB9CisgIGVsc2UgeworICAgIHZhciByZXMgPSBCeXRlcy5tYWtlKHdpZHRoJDEsIHBh
ZHR5JDEgPT09IC8qIFplcm9zICovMiA/IC8qICIwIiAqLzQ4IDogLyogIiAiICovMzIpOworICAg
IHN3aXRjaCAocGFkdHkkMSkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgJCRTdHJpbmcu
YmxpdChzdHIsIDAsIHJlcywgMCwgbGVuKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgICQkU3RyaW5nLmJsaXQoc3RyLCAwLCByZXMsIHdpZHRoJDEgLSBsZW4g
fCAwLCBsZW4pOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAg
aWYgKGxlbiA+IDAgJiYgKENhbWxfc3RyaW5nLmdldChzdHIsIDApID09PSAvKiAiKyIgKi80MyB8
fCBDYW1sX3N0cmluZy5nZXQoc3RyLCAwKSA9PT0gLyogIi0iICovNDUgfHwgQ2FtbF9zdHJpbmcu
Z2V0KHN0ciwgMCkgPT09IC8qICIgIiAqLzMyKSkgeworICAgICAgICAgICAgcmVzWzBdID0gQ2Ft
bF9zdHJpbmcuZ2V0KHN0ciwgMCk7CisgICAgICAgICAgICAkJFN0cmluZy5ibGl0KHN0ciwgMSwg
cmVzLCAod2lkdGgkMSAtIGxlbiB8IDApICsgMSB8IDAsIGxlbiAtIDEgfCAwKTsKKyAgICAgICAg
ICB9CisgICAgICAgICAgZWxzZSBpZiAobGVuID4gMSAmJiBDYW1sX3N0cmluZy5nZXQoc3RyLCAw
KSA9PT0gLyogIjAiICovNDggJiYgKENhbWxfc3RyaW5nLmdldChzdHIsIDEpID09PSAvKiAieCIg
Ki8xMjAgfHwgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgMSkgPT09IC8qICJYIiAqLzg4KSkgeworICAg
ICAgICAgICAgcmVzWzFdID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgMSk7CisgICAgICAgICAgICAk
JFN0cmluZy5ibGl0KHN0ciwgMiwgcmVzLCAod2lkdGgkMSAtIGxlbiB8IDApICsgMiB8IDAsIGxl
biAtIDIgfCAwKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAk
JFN0cmluZy5ibGl0KHN0ciwgMCwgcmVzLCB3aWR0aCQxIC0gbGVuIHwgMCwgbGVuKTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9CisgICAgcmV0dXJuIENhbWxf
c3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhyZXMpOworICB9Cit9CisKK2Z1bmN0aW9uIGZpeF9pbnRf
cHJlY2lzaW9uKHByZWMsIHN0cikgeworICB2YXIgcHJlYyQxID0gUGVydmFzaXZlcy5hYnMocHJl
Yyk7CisgIHZhciBsZW4gPSBzdHIubGVuZ3RoOworICB2YXIgYyA9IENhbWxfc3RyaW5nLmdldChz
dHIsIDApOworICB2YXIgZXhpdCA9IDA7CisgIGlmIChjID49IDU4KSB7CisgICAgaWYgKGMgPj0g
NzEpIHsKKyAgICAgIGlmIChjID4gMTAyIHx8IGMgPCA5NykgeworICAgICAgICByZXR1cm4gc3Ry
OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAyOworICAgICAgfQorICAg
IH0KKyAgICBlbHNlIGlmIChjID49IDY1KSB7CisgICAgICBleGl0ID0gMjsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICByZXR1cm4gc3RyOworICAgIH0KKyAgfQorICBlbHNlIGlmIChjICE9PSAz
MikgeworICAgIGlmIChjID49IDQzKSB7CisgICAgICBzd2l0Y2ggKGMgLSA0MyB8IDApIHsKKyAg
ICAgICAgY2FzZSAwIDogCisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgZXhpdCA9IDE7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgIGNhc2UgMyA6
IAorICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAgIGNh
c2UgNSA6IAorICAgICAgICAgICAgaWYgKChwcmVjJDEgKyAyIHwgMCkgPiBsZW4gJiYgbGVuID4g
MSAmJiAoQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgMSkgPT09IC8qICJ4IiAqLzEyMCB8fCBDYW1sX3N0
cmluZy5nZXQoc3RyLCAxKSA9PT0gLyogIlgiICovODgpKSB7CisgICAgICAgICAgICAgIHZhciBy
ZXMgPSBCeXRlcy5tYWtlKHByZWMkMSArIDIgfCAwLCAvKiAiMCIgKi80OCk7CisgICAgICAgICAg
ICAgIHJlc1sxXSA9IENhbWxfc3RyaW5nLmdldChzdHIsIDEpOworICAgICAgICAgICAgICAkJFN0
cmluZy5ibGl0KHN0ciwgMiwgcmVzLCAocHJlYyQxIC0gbGVuIHwgMCkgKyA0IHwgMCwgbGVuIC0g
MiB8IDApOworICAgICAgICAgICAgICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5n
KHJlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ZXhpdCA9IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSA2IDogCisgICAgICAgIGNhc2UgNyA6IAorICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgY2Fz
ZSA5IDogCisgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICBj
YXNlIDEyIDogCisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAgICAg
ICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICB9Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisgIH0KKyAgZWxzZSB7
CisgICAgZXhpdCA9IDE7CisgIH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAgY2FzZSAxIDogCisg
ICAgICAgIGlmICgocHJlYyQxICsgMSB8IDApID4gbGVuKSB7CisgICAgICAgICAgdmFyIHJlcyQx
ID0gQnl0ZXMubWFrZShwcmVjJDEgKyAxIHwgMCwgLyogIjAiICovNDgpOworICAgICAgICAgIHJl
cyQxWzBdID0gYzsKKyAgICAgICAgICAkJFN0cmluZy5ibGl0KHN0ciwgMSwgcmVzJDEsIChwcmVj
JDEgLSBsZW4gfCAwKSArIDIgfCAwLCBsZW4gLSAxIHwgMCk7CisgICAgICAgICAgcmV0dXJuIENh
bWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhyZXMkMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIDIgOiAKKyAgICAgICAgaWYgKHByZWMkMSA+IGxlbikgeworICAgICAgICAgIHZhciBy
ZXMkMiA9IEJ5dGVzLm1ha2UocHJlYyQxLCAvKiAiMCIgKi80OCk7CisgICAgICAgICAgJCRTdHJp
bmcuYmxpdChzdHIsIDAsIHJlcyQyLCBwcmVjJDEgLSBsZW4gfCAwLCBsZW4pOworICAgICAgICAg
IHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocmVzJDIpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX3RvX2NhbWxfc3RyaW5nKHN0
cikgeworICByZXR1cm4gJCRTdHJpbmcuY29uY2F0KCQkU3RyaW5nLmVzY2FwZWQoc3RyKSwgLyog
OjogKi9bCisgICAgICAgICAgICAgICciJywKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgJyInLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gZm9ybWF0X29mX2ljb252KGljb252
KSB7CisgIHN3aXRjaCAoaWNvbnYpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuICIl
ZCI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAiJStkIjsKKyAgICBjYXNlIDIgOiAK
KyAgICAgICAgcmV0dXJuICIlIGQiOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gIiVp
IjsKKyAgICBjYXNlIDQgOiAKKyAgICAgICAgcmV0dXJuICIlK2kiOworICAgIGNhc2UgNSA6IAor
ICAgICAgICByZXR1cm4gIiUgaSI7CisgICAgY2FzZSA2IDogCisgICAgICAgIHJldHVybiAiJXgi
OworICAgIGNhc2UgNyA6IAorICAgICAgICByZXR1cm4gIiUjeCI7CisgICAgY2FzZSA4IDogCisg
ICAgICAgIHJldHVybiAiJVgiOworICAgIGNhc2UgOSA6IAorICAgICAgICByZXR1cm4gIiUjWCI7
CisgICAgY2FzZSAxMCA6IAorICAgICAgICByZXR1cm4gIiVvIjsKKyAgICBjYXNlIDExIDogCisg
ICAgICAgIHJldHVybiAiJSNvIjsKKyAgICBjYXNlIDEyIDogCisgICAgICAgIHJldHVybiAiJXUi
OworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIGZvcm1hdF9vZl9hY29udihpY29udiwgYykgewor
ICB2YXIgc2VwczsKKyAgc3dpdGNoIChpY29udikgeworICAgIGNhc2UgMCA6IAorICAgICAgICBz
ZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUiLAorICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgImQiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAg
ICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6
ICovWworICAgICAgICAgICIlKyIsCisgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAi
ZCIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgMiA6IAorICAgICAgICBzZXBzID0gLyogOjogKi9bCisgICAg
ICAgICAgIiUgIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJkIiwKKyAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAzIDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSIs
CisgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAiaSIsCisgICAgICAgICAgICAvKiBb
XSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
NCA6IAorICAgICAgICBzZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUrIiwKKyAgICAgICAg
ICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJpIiwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAg
ICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA1IDogCisgICAg
ICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSAiLAorICAgICAgICAgIC8qIDo6ICov
WworICAgICAgICAgICAgImkiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQor
ICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgc2VwcyA9
IC8qIDo6ICovWworICAgICAgICAgICIlIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICJ4IiwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA3IDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sK
KyAgICAgICAgICAiJSMiLAorICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgIngiLAor
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDggOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICovWworICAgICAgICAg
ICIlIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJYIiwKKyAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSA5IDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSMiLAorICAg
ICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgIlgiLAorICAgICAgICAgICAgLyogW10gKi8w
CisgICAgICAgICAgXQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDEwIDog
CisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSIsCisgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAibyIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICBdCisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTEgOiAKKyAgICAgICAg
c2VwcyA9IC8qIDo6ICovWworICAgICAgICAgICIlIyIsCisgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAibyIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAg
ICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTIgOiAKKyAgICAgICAgc2VwcyA9IC8q
IDo6ICovWworICAgICAgICAgICIlIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICJ1IiwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAg
ICAgICAgYnJlYWs7CisgICAgCisgIH0KKyAgcmV0dXJuICQkU3RyaW5nLmNvbmNhdChDYW1sX3N0
cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFrZSgxLCBjKSksIHNlcHMpOworfQorCitmdW5j
dGlvbiBmb3JtYXRfb2ZfZmNvbnYoZmNvbnYsIHByZWMpIHsKKyAgaWYgKGZjb252ID09PSAvKiBG
bG9hdF9GICovMTUpIHsKKyAgICByZXR1cm4gIiUuMTJnIjsKKyAgfQorICBlbHNlIHsKKyAgICB2
YXIgcHJlYyQxID0gUGVydmFzaXZlcy5hYnMocHJlYyk7CisgICAgdmFyIHN5bWIgPSBjaGFyX29m
X2Zjb252KGZjb252KTsKKyAgICB2YXIgYnVmID0gLyogcmVjb3JkICovWworICAgICAgLyogaW5k
ICovMCwKKyAgICAgIC8qIGJ5dGVzICovbmV3IEFycmF5KDE2KQorICAgIF07CisgICAgYnVmZmVy
X2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgIGJwcmludF9mY29udl9mbGFnKGJ1Ziwg
ZmNvbnYpOworICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIuIiAqLzQ2KTsKKyAgICBidWZm
ZXJfYWRkX3N0cmluZyhidWYsICIiICsgcHJlYyQxKTsKKyAgICBidWZmZXJfYWRkX2NoYXIoYnVm
LCBzeW1iKTsKKyAgICByZXR1cm4gYnVmZmVyX2NvbnRlbnRzKGJ1Zik7CisgIH0KK30KKworZnVu
Y3Rpb24gY29udmVydF9pbnQoaWNvbnYsIG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxf
Zm9ybWF0X2ludChmb3JtYXRfb2ZfaWNvbnYoaWNvbnYpLCBuKTsKK30KKworZnVuY3Rpb24gY29u
dmVydF9pbnQzMihpY29udiwgbikgeworICByZXR1cm4gQ2FtbF9mb3JtYXQuY2FtbF9pbnQzMl9m
b3JtYXQoZm9ybWF0X29mX2Fjb252KGljb252LCAvKiAibCIgKi8xMDgpLCBuKTsKK30KKworZnVu
Y3Rpb24gY29udmVydF9uYXRpdmVpbnQoaWNvbnYsIG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0
LmNhbWxfbmF0aXZlaW50X2Zvcm1hdChmb3JtYXRfb2ZfYWNvbnYoaWNvbnYsIC8qICJuIiAqLzEx
MCksIG4pOworfQorCitmdW5jdGlvbiBjb252ZXJ0X2ludDY0KGljb252LCBuKSB7CisgIHJldHVy
biBDYW1sX2Zvcm1hdC5jYW1sX2ludDY0X2Zvcm1hdChmb3JtYXRfb2ZfYWNvbnYoaWNvbnYsIC8q
ICJMIiAqLzc2KSwgbik7Cit9CisKK2Z1bmN0aW9uIGNvbnZlcnRfZmxvYXQoZmNvbnYsIHByZWMs
IHgpIHsKKyAgdmFyIHByZWMkMSA9IFBlcnZhc2l2ZXMuYWJzKHByZWMpOworICB2YXIgc3RyID0g
Q2FtbF9mb3JtYXQuY2FtbF9mb3JtYXRfZmxvYXQoZm9ybWF0X29mX2Zjb252KGZjb252LCBwcmVj
JDEpLCB4KTsKKyAgaWYgKGZjb252ICE9PSAvKiBGbG9hdF9GICovMTUpIHsKKyAgICByZXR1cm4g
c3RyOworICB9CisgIGVsc2UgeworICAgIHZhciBsZW4gPSBzdHIubGVuZ3RoOworICAgIHZhciBp
c192YWxpZCA9IGZ1bmN0aW9uIChfaSkgeworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2
YXIgaSA9IF9pOworICAgICAgICBpZiAoaSA9PT0gbGVuKSB7CisgICAgICAgICAgcmV0dXJuIC8q
IGZhbHNlICovMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0
Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBpKTsKKyAgICAgICAgICB2YXIgc3dpdGNoZXIgPSBt
YXRjaCAtIDQ2IHwgMDsKKyAgICAgICAgICBpZiAoc3dpdGNoZXIgPiAyMyB8fCBzd2l0Y2hlciA8
IDApIHsKKyAgICAgICAgICAgIGlmIChzd2l0Y2hlciAhPT0gNTUpIHsKKyAgICAgICAgICAgICAg
X2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAg
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJu
IC8qIHRydWUgKi8xOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IGlmIChzd2l0Y2hlciA+IDIyIHx8IHN3aXRjaGVyIDwgMSkgeworICAgICAgICAgICAgcmV0dXJu
IC8qIHRydWUgKi8xOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9OworICAgIH07CisgICAgdmFyIG1hdGNoID0g
Q2FtbF9mbG9hdC5jYW1sX2NsYXNzaWZ5X2Zsb2F0KHgpOworICAgIGlmIChtYXRjaCAhPT0gMykg
eworICAgICAgaWYgKG1hdGNoID49IDQpIHsKKyAgICAgICAgcmV0dXJuICJuYW4iOworICAgICAg
fQorICAgICAgZWxzZSBpZiAoaXNfdmFsaWQoMCkpIHsKKyAgICAgICAgcmV0dXJuIHN0cjsKKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gc3RyICsgIi4iOworICAgICAgfQor
ICAgIH0KKyAgICBlbHNlIGlmICh4IDwgMC4wKSB7CisgICAgICByZXR1cm4gIm5lZ19pbmZpbml0
eSI7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuICJpbmZpbml0eSI7CisgICAgfQor
ICB9Cit9CisKK2Z1bmN0aW9uIGZvcm1hdF9jYW1sX2NoYXIoYykgeworICByZXR1cm4gJCRTdHJp
bmcuY29uY2F0KENoYXIuZXNjYXBlZChjKSwgLyogOjogKi9bCisgICAgICAgICAgICAgICInIiwK
KyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgIiciLAorICAgICAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdKTsKK30KKwor
ZnVuY3Rpb24gc3RyaW5nX29mX2ZtdHR5KGZtdHR5KSB7CisgIHZhciBidWYgPSAvKiByZWNvcmQg
Ki9bCisgICAgLyogaW5kICovMCwKKyAgICAvKiBieXRlcyAqL25ldyBBcnJheSgxNikKKyAgXTsK
KyAgYnByaW50X2ZtdHR5KGJ1ZiwgZm10dHkpOworICByZXR1cm4gYnVmZmVyX2NvbnRlbnRzKGJ1
Zik7Cit9CisKK2Z1bmN0aW9uIG1ha2VfcHJpbnRmKF9rLCBvLCBfYWNjLCBfZm10KSB7CisgIHdo
aWxlKHRydWUpIHsKKyAgICB2YXIgZm10ID0gX2ZtdDsKKyAgICB2YXIgYWNjID0gX2FjYzsKKyAg
ICB2YXIgayA9IF9rOworICAgIGlmICh0eXBlb2YgZm10ID09PSAibnVtYmVyIikgeworICAgICAg
cmV0dXJuIEN1cnJ5Ll8yKGssIG8sIGFjYyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dp
dGNoIChmbXQudGFnIHwgMCkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHZhciBy
ZXN0ID0gZm10WzBdOworICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrLGFjYyxyZXN0KXsK
KyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICB2YXIgbmV3
X2FjYyA9IC8qIEFjY19kYXRhX2NoYXIgKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICAgICAg
ICBhY2MsCisgICAgICAgICAgICAgICAgICBjCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAg
ICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCByZXN0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0oayxhY2MscmVzdCkpOworICAgICAgICBjYXNlIDEgOiAKKyAg
ICAgICAgICAgIHZhciByZXN0JDEgPSBmbXRbMF07CisgICAgICAgICAgICByZXR1cm4gKGZ1bmN0
aW9uKGssYWNjLHJlc3QkMSl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAg
ICAgICAgICAgICAgdmFyIG5ld19hY2NfMDAxID0gZm9ybWF0X2NhbWxfY2hhcihjKTsKKyAgICAg
ICAgICAgICAgdmFyIG5ld19hY2MgPSAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBb
CisgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICBuZXdfYWNjXzAwMQor
ICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywg
bywgbmV3X2FjYywgcmVzdCQxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0oayxhY2Ms
cmVzdCQxKSk7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgcmV0dXJuIG1ha2Vfc3Ry
aW5nX3BhZGRpbmcoaywgbywgYWNjLCBmbXRbMV0sIGZtdFswXSwgZnVuY3Rpb24gKHN0cikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICByZXR1cm4gbWFrZV9zdHJpbmdf
cGFkZGluZyhrLCBvLCBhY2MsIGZtdFsxXSwgZm10WzBdLCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcp
OworICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2ludF9wYWRkaW5n
X3ByZWNpc2lvbihrLCBvLCBhY2MsIGZtdFszXSwgZm10WzFdLCBmbXRbMl0sIGNvbnZlcnRfaW50
LCBmbXRbMF0pOworICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2lu
dF9wYWRkaW5nX3ByZWNpc2lvbihrLCBvLCBhY2MsIGZtdFszXSwgZm10WzFdLCBmbXRbMl0sIGNv
bnZlcnRfaW50MzIsIGZtdFswXSk7CisgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgcmV0
dXJuIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFjYywgZm10WzNdLCBmbXRbMV0s
IGZtdFsyXSwgY29udmVydF9uYXRpdmVpbnQsIGZtdFswXSk7CisgICAgICAgIGNhc2UgNyA6IAor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFjYywg
Zm10WzNdLCBmbXRbMV0sIGZtdFsyXSwgY29udmVydF9pbnQ2NCwgZm10WzBdKTsKKyAgICAgICAg
Y2FzZSA4IDogCisgICAgICAgICAgICB2YXIgayQxID0gazsKKyAgICAgICAgICAgIHZhciBvJDEg
PSBvOworICAgICAgICAgICAgdmFyIGFjYyQxID0gYWNjOworICAgICAgICAgICAgdmFyIGZtdCQx
ID0gZm10WzNdOworICAgICAgICAgICAgdmFyIHBhZCA9IGZtdFsxXTsKKyAgICAgICAgICAgIHZh
ciBwcmVjID0gZm10WzJdOworICAgICAgICAgICAgdmFyIGZjb252ID0gZm10WzBdOworICAgICAg
ICAgICAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGlmICh0
eXBlb2YgcHJlYyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyAhPT0g
MCkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZt
dCQxLGZjb252KXsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocCwgeCkgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gY29udmVydF9mbG9hdChmY29udiwgcCwgeCk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNj
X2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFjYyQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252KSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252KXsKKyAgICAgICAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgICAgICAgICAgICAgICB2YXIg
c3RyID0gY29udmVydF9mbG9hdChmY29udiwgNiwgeCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18o
NCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
fShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBwID0g
cHJlY1swXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEs
Zm10JDEsZmNvbnYscCl7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7Cisg
ICAgICAgICAgICAgICAgICB2YXIgc3RyID0gY29udmVydF9mbG9hdChmY29udiwgcCwgeCk7Cisg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRh
X3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWNjJDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHApKTsKKyAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocGFkLnRhZykgeworICAgICAg
ICAgICAgICB2YXIgcGFkdHkgPSBwYWRbMF07CisgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJl
YyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAg
ICAgICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252
LHBhZHR5KXsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAodywgcCwgeCkgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHksIHcsIGNvbnZl
cnRfZmxvYXQoZmNvbnYsIHAsIHgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2Vf
cHJpbnRmKGskMSwgbyQxLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBm
bXQkMSk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9KGskMSxvJDEs
YWNjJDEsZm10JDEsZmNvbnYscGFkdHkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEs
YWNjJDEsZm10JDEsZmNvbnYscGFkdHkpeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uICh3LCB4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBjb252ZXJ0X2Zsb2F0
KGZjb252LCA2LCB4KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciRwcmltZSA9IGZpeF9w
YWRkaW5nKHBhZHR5LCB3LCBzdHIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9w
cmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MkMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHIkcHJpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0oayQx
LG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0eSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgcCQx
ID0gcHJlY1swXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNj
JDEsZm10JDEsZmNvbnYscGFkdHkscCQxKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKHcsIHgpIHsKKyAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0
eSwgdywgY29udmVydF9mbG9hdChmY29udiwgcCQxLCB4KSk7CisgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9f
KDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfShrJDEsbyQx
LGFjYyQxLGZtdCQxLGZjb252LHBhZHR5LHAkMSkpOworICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIHcgPSBwYWRbMV07
CisgICAgICAgICAgICAgIHZhciBwYWR0eSQxID0gcGFkWzBdOworICAgICAgICAgICAgICBpZiAo
dHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgIT09
IDApIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayQxLG8kMSxhY2MkMSxm
bXQkMSxmY29udixwYWR0eSQxLHcpeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
IChwLCB4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0
eSQxLCB3LCBjb252ZXJ0X2Zsb2F0KGZjb252LCBwLCB4KSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2su
X18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdykpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAo
ZnVuY3Rpb24oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0eSQxLHcpeworICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBz
dHIgPSBjb252ZXJ0X2Zsb2F0KGZjb252LCA2LCB4KTsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IHN0ciRwcmltZSA9IGZpeF9wYWRkaW5nKHBhZHR5JDEsIHcsIHN0cik7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICov
QmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciRwcmltZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdykpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICB2YXIgcCQyID0gcHJlY1swXTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEsZm10JDEsZmNvbnYscGFkdHkkMSx3LHAkMil7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICAgICAgICB2
YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHkkMSwgdywgY29udmVydF9mbG9hdChmY29udiwgcCQy
LCB4KSk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8q
IEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWNjJDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdyxw
JDIpKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBjYXNlIDkgOiAK
KyAgICAgICAgICAgIHZhciByZXN0JDIgPSBmbXRbMF07CisgICAgICAgICAgICByZXR1cm4gKGZ1
bmN0aW9uKGssYWNjLHJlc3QkMil7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGIpIHsK
KyAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0cmlu
ZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYiA/ICJ0cnVlIiA6ICJmYWxzZSIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSksIHJlc3QkMik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9
KGssYWNjLHJlc3QkMikpOworICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICBfZm10ID0g
Zm10WzBdOworICAgICAgICAgICAgX2FjYyA9IC8qIEFjY19mbHVzaCAqL0Jsb2NrLl9fKDcsIFth
Y2NdKTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAg
ICAgICAgICAgIF9mbXQgPSBmbXRbMV07CisgICAgICAgICAgICBfYWNjID0gLyogQWNjX3N0cmlu
Z19saXRlcmFsICovQmxvY2suX18oMiwgWworICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAg
ICAgICAgICBmbXRbMF0KKyAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBfZm10ID0gZm10WzFdOworICAg
ICAgICAgICAgX2FjYyA9IC8qIEFjY19jaGFyX2xpdGVyYWwgKi9CbG9jay5fXygzLCBbCisgICAg
ICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgIGZtdFswXQorICAgICAgICAgICAgICBd
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAg
ICAgICAgIHZhciByZXN0JDMgPSBmbXRbMl07CisgICAgICAgICAgICB2YXIgdHkgPSBzdHJpbmdf
b2ZfZm10dHkoZm10WzFdKTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2MscmVz
dCQzLHR5KXsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
IHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCByZXN0JDMpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfShrLGFjYyxyZXN0JDMsdHkpKTsKKyAgICAgICAgY2Fz
ZSAxNCA6IAorICAgICAgICAgICAgdmFyIHJlc3QkNCA9IGZtdFsyXTsKKyAgICAgICAgICAgIHZh
ciBmbXR0eSA9IGZtdFsxXTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2MsZm10
dHkscmVzdCQ0KXsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIGFjYywgQ2FtbGludGVybmFsRm9ybWF0
QmFzaWNzLmNvbmNhdF9mbXQocmVjYXN0KHBhcmFtWzBdLCBmbXR0eSksIHJlc3QkNCkpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfShrLGFjYyxmbXR0eSxyZXN0JDQpKTsKKyAgICAgICAg
Y2FzZSAxNSA6IAorICAgICAgICAgICAgdmFyIHJlc3QkNSA9IGZtdFswXTsKKyAgICAgICAgICAg
IHJldHVybiAoZnVuY3Rpb24oayxhY2MscmVzdCQ1KXsKKyAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbiAoZiwgeCkgeworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyog
QWNjX2RlbGF5ICovQmxvY2suX18oNiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFj
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAobykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8yKGYsIG8sIHgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIHJlc3Qk
NSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJlc3QkNSkpOworICAgICAg
ICBjYXNlIDE2IDogCisgICAgICAgICAgICB2YXIgcmVzdCQ2ID0gZm10WzBdOworICAgICAgICAg
ICAgcmV0dXJuIChmdW5jdGlvbihrLGFjYyxyZXN0JDYpeworICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uIChmKSB7CisgICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBB
Y2NfZGVsYXkgKi9CbG9jay5fXyg2LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSksIHJlc3QkNik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJlc3Qk
NikpOworICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBfZm10ID0gZm10WzFdOworICAg
ICAgICAgICAgX2FjYyA9IC8qIEFjY19mb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDAsIFsKKyAg
ICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgZm10WzBdCisgICAgICAgICAgICAg
IF0pOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxOCA6IAorICAg
ICAgICAgICAgdmFyIG1hdGNoID0gZm10WzBdOworICAgICAgICAgICAgaWYgKG1hdGNoLnRhZykg
eworICAgICAgICAgICAgICB2YXIgcmVzdCQ3ID0gZm10WzFdOworICAgICAgICAgICAgICB2YXIg
ayRwcmltZSA9IChmdW5jdGlvbihrLGFjYyxyZXN0JDcpeworICAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24gayRwcmltZShrb2MsIGthY2MpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZV9wcmludGYoaywga29jLCAvKiBBY2NfZm9ybWF0dGluZ19nZW4gKi9CbG9jay5fXygxLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBBY2Nfb3Blbl9ib3ggKi9CbG9jay5fXygxLCBba2FjY10pCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSksIHJlc3QkNyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgfShrLGFjYyxyZXN0JDcpKTsKKyAgICAgICAgICAgICAgX2ZtdCA9IG1hdGNoWzBdWzBd
OworICAgICAgICAgICAgICBfYWNjID0gLyogRW5kX29mX2FjYyAqLzA7CisgICAgICAgICAgICAg
IF9rID0gayRwcmltZTsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICB2YXIgcmVz
dCQ4ID0gZm10WzFdOworICAgICAgICAgICAgICB2YXIgayRwcmltZSQxID0gKGZ1bmN0aW9uKGss
YWNjLHJlc3QkOCl7CisgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBrJHByaW1lJDEoa29j
LCBrYWNjKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIGtvYywgLyog
QWNjX2Zvcm1hdHRpbmdfZ2VuICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWNjX29wZW5f
dGFnICovQmxvY2suX18oMCwgW2thY2NdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
LCByZXN0JDgpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0oayxhY2MscmVzdCQ4
KSk7CisgICAgICAgICAgICAgIF9mbXQgPSBtYXRjaFswXVswXTsKKyAgICAgICAgICAgICAgX2Fj
YyA9IC8qIEVuZF9vZl9hY2MgKi8wOworICAgICAgICAgICAgICBfayA9IGskcHJpbWUkMTsKKyAg
ICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgICB0aHJvdyBb
CisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVy
ZSwKKyAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5h
bEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAgIDE0NDksCisgICAgICAgICAgICAgICAg
ICAgIDQKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICBj
YXNlIDIwIDogCisgICAgICAgICAgICB2YXIgcmVzdCQ5ID0gZm10WzJdOworICAgICAgICAgICAg
dmFyIG5ld19hY2MgPSAvKiBBY2NfaW52YWxpZF9hcmcgKi9CbG9jay5fXyg4LCBbCisgICAgICAg
ICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICJQcmludGY6IGJhZCBjb252ZXJzaW9uICVb
IgorICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxyZXN0
JDksbmV3X2FjYyl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgcmVzdCQ5KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0oayxyZXN0JDksbmV3X2FjYykpOworICAgICAgICBjYXNlIDIx
IDogCisgICAgICAgICAgICB2YXIgcmVzdCQxMCA9IGZtdFsxXTsKKyAgICAgICAgICAgIHJldHVy
biAoZnVuY3Rpb24oayxhY2MscmVzdCQxMCl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KG4pIHsKKyAgICAgICAgICAgICAgdmFyIG5ld19hY2NfMDAxID0gQ2FtbF9mb3JtYXQuY2FtbF9m
b3JtYXRfaW50KCIldSIsIG4pOworICAgICAgICAgICAgICB2YXIgbmV3X2FjYyA9IC8qIEFjY19k
YXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAg
ICAgICAgICAgICAgIG5ld19hY2NfMDAxCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAg
ICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCByZXN0JDEwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0oayxhY2MscmVzdCQxMCkpOworICAgICAgICBjYXNlIDIyIDog
CisgICAgICAgICAgICB2YXIgcmVzdCQxMSA9IGZtdFswXTsKKyAgICAgICAgICAgIHJldHVybiAo
ZnVuY3Rpb24oayxhY2MscmVzdCQxMSl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGMp
IHsKKyAgICAgICAgICAgICAgdmFyIG5ld19hY2MgPSAvKiBBY2NfZGF0YV9jaGFyICovQmxvY2su
X18oNSwgWworICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAgYworICAg
ICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywg
bmV3X2FjYywgcmVzdCQxMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJl
c3QkMTEpKTsKKyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgICAgdmFyIGskMiA9IGs7Cisg
ICAgICAgICAgICB2YXIgbyQyID0gbzsKKyAgICAgICAgICAgIHZhciBhY2MkMiA9IGFjYzsKKyAg
ICAgICAgICAgIHZhciBpZ24gPSBmbXRbMF07CisgICAgICAgICAgICB2YXIgZm10JDIgPSBmbXRb
MV07CisgICAgICAgICAgICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAg
ICAgICAgc3dpdGNoIChpZ24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MTcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDQg
OiAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfaW52YWxpZF9hcmcoayQyLCBvJDIs
IGFjYyQyLCBmbXQkMik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBzd2l0Y2ggKGlnbi50
YWcgfCAwKSB7CisgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBtYWtlX2Zyb21fZm10dHkoayQyLCBvJDIsIGFjYyQyLCBpZ25bMV0sIGZtdCQyKTsK
KyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAg
ICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAg
ICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAg
ICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlX2ludmFsaWRfYXJnKGskMiwgbyQyLCBhY2MkMiwgZm10JDIpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IGNhc2UgMjQgOiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2N1c3RvbShrLCBvLCBhY2MsIGZt
dFsyXSwgZm10WzBdLCBDdXJyeS5fMShmbXRbMV0sIC8qICgpICovMCkpOworICAgICAgICAKKyAg
ICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBh
Y2MsIGZtdHR5LCBmbXQpIHsKKyAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAg
ICByZXR1cm4gbWFrZV9pbnZhbGlkX2FyZyhrLCBvLCBhY2MsIGZtdCk7CisgIH0KKyAgZWxzZSB7
CisgICAgc3dpdGNoIChmbXR0eS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICB2YXIgcmVzdCA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCwgZm10KTsK
KyAgICAgICAgICB9OworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgdmFyIHJlc3QkMSA9IGZt
dHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1
cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQxLCBmbXQpOworICAgICAgICAgIH07
CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICB2YXIgcmVzdCQyID0gZm10dHlbMF07CisgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21f
Zm10dHkoaywgbywgYWNjLCByZXN0JDIsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2Ug
MyA6IAorICAgICAgICAgIHZhciByZXN0JDMgPSBmbXR0eVswXTsKKyAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBh
Y2MsIHJlc3QkMywgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA0IDogCisgICAgICAg
ICAgdmFyIHJlc3QkNCA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQ0LCBm
bXQpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICB2YXIgcmVzdCQ1
ID0gZm10dHlbMF07CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0JDUsIGZtdCk7CisgICAgICAg
ICAgfTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHZhciByZXN0JDYgPSBmbXR0eVswXTsK
KyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2Vf
ZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJlc3QkNiwgZm10KTsKKyAgICAgICAgICB9OworICAgICAg
Y2FzZSA3IDogCisgICAgICAgICAgdmFyIHJlc3QkNyA9IGZtdHR5WzBdOworICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGss
IG8sIGFjYywgcmVzdCQ3LCBmbXQpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDggOiAKKyAg
ICAgICAgICB2YXIgcmVzdCQ4ID0gZm10dHlbMV07CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0
JDgsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgOSA6IAorICAgICAgICAgIHZhciBy
ZXN0JDkgPSBmbXR0eVsyXTsKKyAgICAgICAgICB2YXIgdHkgPSB0cmFucyhzeW1tKGZtdHR5WzBd
KSwgZm10dHlbMV0pOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgQ2FtbGludGVybmFsRm9ybWF0QmFz
aWNzLmNvbmNhdF9mbXR0eSh0eSwgcmVzdCQ5KSwgZm10KTsKKyAgICAgICAgICB9OworICAgICAg
Y2FzZSAxMCA6IAorICAgICAgICAgIHZhciByZXN0JDEwID0gZm10dHlbMF07CisgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uIChfLCBfJDEpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21f
Zm10dHkoaywgbywgYWNjLCByZXN0JDEwLCBmbXQpOworICAgICAgICAgIH07CisgICAgICBjYXNl
IDExIDogCisgICAgICAgICAgdmFyIHJlc3QkMTEgPSBmbXR0eVswXTsKKyAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBv
LCBhY2MsIHJlc3QkMTEsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgMTIgOiAKKyAg
ICAgICAgICB2YXIgcmVzdCQxMiA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVz
dCQxMiwgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFp
bHVyZSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFs
Rm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgIDE1NDAsCisgICAgICAgICAgICAgICAgICAz
MQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgMTQgOiAK
KyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAxNTQxLAorICAgICAg
ICAgICAgICAgICAgMzEKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgIF07CisgICAg
ICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9pbnZhbGlkX2FyZyhrLCBvLCBhY2Ms
IGZtdCkgeworICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2ludmFsaWRfYXJnICov
QmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAiUHJp
bnRmOiBiYWQgY29udmVyc2lvbiAlXyIKKyAgICAgICAgICAgICAgXSksIGZtdCk7Cit9CisKK2Z1
bmN0aW9uIG1ha2Vfc3RyaW5nX3BhZGRpbmcoaywgbywgYWNjLCBmbXQsIHBhZCwgdHJhbnMpIHsK
KyAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICh4
KSB7CisgICAgICB2YXIgbmV3X2FjY18wMDEgPSBDdXJyeS5fMSh0cmFucywgeCk7CisgICAgICB2
YXIgbmV3X2FjYyA9IC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAg
ICBhY2MsCisgICAgICAgICAgbmV3X2FjY18wMDEKKyAgICAgICAgXSk7CisgICAgICByZXR1cm4g
bWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgZm10KTsKKyAgICB9OworICB9CisgIGVsc2UgaWYg
KHBhZC50YWcpIHsKKyAgICB2YXIgcGFkdHkgPSBwYWRbMF07CisgICAgcmV0dXJuIGZ1bmN0aW9u
ICh3LCB4KSB7CisgICAgICB2YXIgbmV3X2FjY18wMDEgPSBmaXhfcGFkZGluZyhwYWR0eSwgdywg
Q3VycnkuXzEodHJhbnMsIHgpKTsKKyAgICAgIHZhciBuZXdfYWNjID0gLyogQWNjX2RhdGFfc3Ry
aW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgIGFjYywKKyAgICAgICAgICBuZXdfYWNjXzAw
MQorICAgICAgICBdKTsKKyAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCBm
bXQpOworICAgIH07CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIHdpZHRoID0gcGFkWzFdOworICAg
IHZhciBwYWR0eSQxID0gcGFkWzBdOworICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAg
dmFyIG5ld19hY2NfMDAxID0gZml4X3BhZGRpbmcocGFkdHkkMSwgd2lkdGgsIEN1cnJ5Ll8xKHRy
YW5zLCB4KSk7CisgICAgICB2YXIgbmV3X2FjYyA9IC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2Nr
Ll9fKDQsIFsKKyAgICAgICAgICBhY2MsCisgICAgICAgICAgbmV3X2FjY18wMDEKKyAgICAgICAg
XSk7CisgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgZm10KTsKKyAgICB9
OworICB9Cit9CisKK2Z1bmN0aW9uIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFj
YywgZm10LCBwYWQsIHByZWMsIHRyYW5zLCBpY29udikgeworICBpZiAodHlwZW9mIHBhZCA9PT0g
Im51bWJlciIpIHsKKyAgICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7CisgICAgICBp
ZiAocHJlYyAhPT0gMCkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHAsIHgpIHsKKyAgICAg
ICAgICB2YXIgc3RyID0gZml4X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGljb252
LCB4KSk7CisgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0
cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQpOwor
ICAgICAgICB9OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBmdW5jdGlv
biAoeCkgeworICAgICAgICAgIHZhciBzdHIgPSBDdXJyeS5fMih0cmFucywgaWNvbnYsIHgpOwor
ICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9C
bG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAgICAg
fTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgcCA9IHByZWNbMF07Cisg
ICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAgICAgdmFyIHN0ciA9IGZpeF9pbnRfcHJl
Y2lzaW9uKHAsIEN1cnJ5Ll8yKHRyYW5zLCBpY29udiwgeCkpOworICAgICAgICByZXR1cm4gbWFr
ZV9wcmludGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAgICAg
ICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAg
ICAgICAgICAgICAgXSksIGZtdCk7CisgICAgICB9OworICAgIH0KKyAgfQorICBlbHNlIGlmIChw
YWQudGFnKSB7CisgICAgdmFyIHBhZHR5ID0gcGFkWzBdOworICAgIGlmICh0eXBlb2YgcHJlYyA9
PT0gIm51bWJlciIpIHsKKyAgICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICAgIHJldHVybiBm
dW5jdGlvbiAodywgcCwgeCkgeworICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0
eSwgdywgZml4X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSkpOwor
ICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9C
bG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAgICAg
fTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHcsIHgp
IHsKKyAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHksIHcsIEN1cnJ5Ll8yKHRy
YW5zLCBpY29udiwgeCkpOworICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBB
Y2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBh
Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBd
KSwgZm10KTsKKyAgICAgICAgfTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2
YXIgcCQxID0gcHJlY1swXTsKKyAgICAgIHJldHVybiBmdW5jdGlvbiAodywgeCkgeworICAgICAg
ICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHksIHcsIGZpeF9pbnRfcHJlY2lzaW9uKHAkMSwg
Q3VycnkuXzIodHJhbnMsIGljb252LCB4KSkpOworICAgICAgICByZXR1cm4gbWFrZV9wcmludGYo
aywgbywgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAg
ICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAg
ICAgXSksIGZtdCk7CisgICAgICB9OworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICB2YXIgdyA9
IHBhZFsxXTsKKyAgICB2YXIgcGFkdHkkMSA9IHBhZFswXTsKKyAgICBpZiAodHlwZW9mIHByZWMg
PT09ICJudW1iZXIiKSB7CisgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgICByZXR1cm4g
ZnVuY3Rpb24gKHAsIHgpIHsKKyAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHkk
MSwgdywgZml4X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSkpOwor
ICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9C
bG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAgICAg
fTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsK
KyAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHkkMSwgdywgQ3VycnkuXzIodHJh
bnMsIGljb252LCB4KSk7CisgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFj
Y19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFj
YywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgIF0p
LCBmbXQpOworICAgICAgICB9OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZh
ciBwJDIgPSBwcmVjWzBdOworICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgIHZh
ciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0eSQxLCB3LCBmaXhfaW50X3ByZWNpc2lvbihwJDIsIEN1
cnJ5Ll8yKHRyYW5zLCBpY29udiwgeCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGss
IG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAgc3RyCisgICAgICAgICAgICAgICAgICAg
IF0pLCBmbXQpOworICAgICAgfTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9jdXN0
b20oaywgbywgYWNjLCByZXN0LCBhcml0eSwgZikgeworICBpZiAoYXJpdHkpIHsKKyAgICB2YXIg
YXJpdHkkMSA9IGFyaXR5WzBdOworICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgcmV0
dXJuIG1ha2VfY3VzdG9tKGssIG8sIGFjYywgcmVzdCwgYXJpdHkkMSwgQ3VycnkuXzEoZiwgeCkp
OworICAgIH07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8q
IEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGFjYywK
KyAgICAgICAgICAgICAgICAgIGYKKyAgICAgICAgICAgICAgICBdKSwgcmVzdCk7CisgIH0KK30K
KworZnVuY3Rpb24gb3V0cHV0X2FjYyhvLCBfYWNjKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2
YXIgYWNjID0gX2FjYzsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHR5cGVvZiBhY2MgPT09
ICJudW1iZXIiKSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHN3aXRjaCAoYWNjLnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAg
ICAgICB2YXIgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdChhY2NbMV0pOworICAgICAgICAg
ICAgb3V0cHV0X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMu
b3V0cHV0X3N0cmluZyhvLCBzKTsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICB2YXIg
bWF0Y2ggPSBhY2NbMV07CisgICAgICAgICAgICB2YXIgcCA9IGFjY1swXTsKKyAgICAgICAgICAg
IG91dHB1dF9hY2MobywgcCk7CisgICAgICAgICAgICBpZiAobWF0Y2gudGFnKSB7CisgICAgICAg
ICAgICAgIFBlcnZhc2l2ZXMub3V0cHV0X3N0cmluZyhvLCAiQFsiKTsKKyAgICAgICAgICAgICAg
X2FjYyA9IG1hdGNoWzBdOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAg
IAorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIFBlcnZh
c2l2ZXMub3V0cHV0X3N0cmluZyhvLCAiQHsiKTsKKyAgICAgICAgICAgICAgX2FjYyA9IG1hdGNo
WzBdOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICBjYXNl
IDQgOiAKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgMyA6IAorICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGV4aXQgPSAyOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgb3V0cHV0X2Fj
YyhvLCBhY2NbMF0pOworICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGFjY1sxXSwgbyk7Cisg
ICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2NbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9mbHVzaChvKTsKKyAgICAgICAgY2FzZSA4
IDogCisgICAgICAgICAgICBvdXRwdXRfYWNjKG8sIGFjY1swXSk7CisgICAgICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2Fy
Z3VtZW50LAorICAgICAgICAgICAgICAgICAgYWNjWzFdCisgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgCisgICAgICB9CisgICAgfQorICAgIHN3aXRjaCAoZXhpdCkgeworICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgIHJldHVybiBQ
ZXJ2YXNpdmVzLm91dHB1dF9zdHJpbmcobywgYWNjWzFdKTsKKyAgICAgIGNhc2UgMiA6IAorICAg
ICAgICAgIG91dHB1dF9hY2MobywgYWNjWzBdKTsKKyAgICAgICAgICByZXR1cm4gQ2FtbF9pby5j
YW1sX21sX291dHB1dF9jaGFyKG8sIGFjY1sxXSk7CisgICAgICAKKyAgICB9CisgIH07Cit9CisK
K2Z1bmN0aW9uIGJ1ZnB1dF9hY2MoYiwgX2FjYykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFy
IGFjYyA9IF9hY2M7CisgICAgdmFyIGV4aXQgPSAwOworICAgIGlmICh0eXBlb2YgYWNjID09PSAi
bnVtYmVyIikgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICBzd2l0Y2ggKGFjYy50YWcgfCAwKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAg
ICAgdmFyIHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoYWNjWzFdKTsKKyAgICAgICAgICAg
IGJ1ZnB1dF9hY2MoYiwgYWNjWzBdKTsKKyAgICAgICAgICAgIHJldHVybiBCdWZmZXIuYWRkX3N0
cmluZyhiLCBzKTsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBh
Y2NbMV07CisgICAgICAgICAgICB2YXIgcCA9IGFjY1swXTsKKyAgICAgICAgICAgIGJ1ZnB1dF9h
Y2MoYiwgcCk7CisgICAgICAgICAgICBpZiAobWF0Y2gudGFnKSB7CisgICAgICAgICAgICAgIEJ1
ZmZlci5hZGRfc3RyaW5nKGIsICJAWyIpOworICAgICAgICAgICAgICBfYWNjID0gbWF0Y2hbMF07
CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcoYiwg
IkB7Iik7CisgICAgICAgICAgICAgIF9hY2MgPSBtYXRjaFswXTsKKyAgICAgICAgICAgICAgY29u
dGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBleGl0
ID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgY2Fz
ZSA1IDogCisgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIDYgOiAKKyAgICAgICAgICAgIGJ1ZnB1dF9hY2MoYiwgYWNjWzBdKTsKKyAgICAgICAg
ICAgIHJldHVybiBDdXJyeS5fMShhY2NbMV0sIGIpOworICAgICAgICBjYXNlIDcgOiAKKyAgICAg
ICAgICAgIF9hY2MgPSBhY2NbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICBjYXNlIDggOiAKKyAgICAgICAgICAgIGJ1ZnB1dF9hY2MoYiwgYWNjWzBdKTsKKyAgICAgICAg
ICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmlu
dmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAgICAgICBhY2NbMV0KKyAgICAgICAgICAgICAg
ICBdOworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgc3dpdGNoIChleGl0KSB7CisgICAg
ICBjYXNlIDEgOiAKKyAgICAgICAgICBidWZwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAg
cmV0dXJuIEJ1ZmZlci5hZGRfc3RyaW5nKGIsIGFjY1sxXSk7CisgICAgICBjYXNlIDIgOiAKKyAg
ICAgICAgICBidWZwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5h
ZGRfY2hhcihiLCBhY2NbMV0pOworICAgICAgCisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBz
dHJwdXRfYWNjKGIsIF9hY2MpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBhY2MgPSBfYWNj
OworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAodHlwZW9mIGFjYyA9PT0gIm51bWJlciIpIHsK
KyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNo
IChhY2MudGFnIHwgMCkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHZhciBzID0g
c3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0KGFjY1sxXSk7CisgICAgICAgICAgICBzdHJwdXRfYWNj
KGIsIGFjY1swXSk7CisgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmFkZF9zdHJpbmcoYiwgcyk7
CisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgdmFyIG1hdGNoID0gYWNjWzFdOworICAg
ICAgICAgICAgdmFyIHAgPSBhY2NbMF07CisgICAgICAgICAgICBzdHJwdXRfYWNjKGIsIHApOwor
ICAgICAgICAgICAgaWYgKG1hdGNoLnRhZykgeworICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0
cmluZyhiLCAiQFsiKTsKKyAgICAgICAgICAgICAgX2FjYyA9IG1hdGNoWzBdOworICAgICAgICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nKGIsICJAeyIpOworICAg
ICAgICAgICAgICBfYWNjID0gbWF0Y2hbMF07CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAyIDogCisgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgZXhpdCA9IDE7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgIGNhc2UgNSA6IAorICAg
ICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2IDog
CisgICAgICAgICAgICBzdHJwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgICByZXR1cm4g
QnVmZmVyLmFkZF9zdHJpbmcoYiwgQ3VycnkuXzEoYWNjWzFdLCAvKiAoKSAqLzApKTsKKyAgICAg
ICAgY2FzZSA3IDogCisgICAgICAgICAgICBfYWNjID0gYWNjWzBdOworICAgICAgICAgICAgY29u
dGludWUgOworICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICBzdHJwdXRfYWNjKGIs
IGFjY1swXSk7CisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAgICAgYWNj
WzFdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIHN3
aXRjaCAoZXhpdCkgeworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgc3RycHV0X2FjYyhiLCBh
Y2NbMF0pOworICAgICAgICAgIHJldHVybiBCdWZmZXIuYWRkX3N0cmluZyhiLCBhY2NbMV0pOwor
ICAgICAgY2FzZSAyIDogCisgICAgICAgICAgc3RycHV0X2FjYyhiLCBhY2NbMF0pOworICAgICAg
ICAgIHJldHVybiBCdWZmZXIuYWRkX2NoYXIoYiwgYWNjWzFdKTsKKyAgICAgIAorICAgIH0KKyAg
fTsKK30KKworZnVuY3Rpb24gZmFpbHdpdGhfbWVzc2FnZShwYXJhbSkgeworICB2YXIgYnVmID0g
QnVmZmVyLmNyZWF0ZSgyNTYpOworICB2YXIgayA9IGZ1bmN0aW9uIChfLCBhY2MpIHsKKyAgICBz
dHJwdXRfYWNjKGJ1ZiwgYWNjKTsKKyAgICB2YXIgcyA9IEJ1ZmZlci5jb250ZW50cyhidWYpOwor
ICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAor
ICAgICAgICAgIHMKKyAgICAgICAgXTsKKyAgfTsKKyAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIC8q
ICgpICovMCwgLyogRW5kX29mX2FjYyAqLzAsIHBhcmFtWzBdKTsKK30KKworZnVuY3Rpb24gb3Bl
bl9ib3hfb2Zfc3RyaW5nKHN0cikgeworICBpZiAoc3RyID09PSAiIikgeworICAgIHJldHVybiAv
KiB0dXBsZSAqL1sKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAvKiBQcF9ib3ggKi80Cisg
ICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgbGVuID0gc3RyLmxlbmd0aDsKKyAg
ICB2YXIgaW52YWxpZF9ib3ggPSBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gQ3VycnkuXzEo
ZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgLyog
U3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGJv
eCBkZXNjcmlwdGlvbiAlUyIKKyAgICAgICAgICAgICAgICAgICAgXSksIHN0cik7CisgICAgfTsK
KyAgICB2YXIgcGFyc2Vfc3BhY2VzID0gZnVuY3Rpb24gKF9pKSB7CisgICAgICB3aGlsZSh0cnVl
KSB7CisgICAgICAgIHZhciBpID0gX2k7CisgICAgICAgIGlmIChpID09PSBsZW4pIHsKKyAgICAg
ICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIg
bWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBpKTsKKyAgICAgICAgICBpZiAobWF0Y2ggIT09
IDkpIHsKKyAgICAgICAgICAgIGlmIChtYXRjaCAhPT0gMzIpIHsKKyAgICAgICAgICAgICAgcmV0
dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
X2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAg
CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAK
KyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH07CisgICAgfTsKKyAgICB2YXIgcGFyc2Vf
bHdvcmQgPSBmdW5jdGlvbiAoXywgX2opIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAg
dmFyIGogPSBfajsKKyAgICAgICAgaWYgKGogPT09IGxlbikgeworICAgICAgICAgIHJldHVybiBq
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBtYXRjaCA9IENhbWxf
c3RyaW5nLmdldChzdHIsIGopOworICAgICAgICAgIGlmIChtYXRjaCA+IDEyMiB8fCBtYXRjaCA8
IDk3KSB7CisgICAgICAgICAgICByZXR1cm4gajsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBfaiA9IGogKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9Owor
ICAgIHZhciBwYXJzZV9pbnQgPSBmdW5jdGlvbiAoXywgX2opIHsKKyAgICAgIHdoaWxlKHRydWUp
IHsKKyAgICAgICAgdmFyIGogPSBfajsKKyAgICAgICAgaWYgKGogPT09IGxlbikgeworICAgICAg
ICAgIHJldHVybiBqOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBt
YXRjaCA9IENhbWxfc3RyaW5nLmdldChzdHIsIGopOworICAgICAgICAgIGlmIChtYXRjaCA+PSA0
OCkgeworICAgICAgICAgICAgaWYgKG1hdGNoID49IDU4KSB7CisgICAgICAgICAgICAgIHJldHVy
biBqOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9q
ID0gaiArIDEgfCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChtYXRjaCAhPT0g
NDUpIHsKKyAgICAgICAgICAgIHJldHVybiBqOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIF9qID0gaiArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9OworICAgIH07Cisg
ICAgdmFyIHdzdGFydCA9IHBhcnNlX3NwYWNlcygwKTsKKyAgICB2YXIgd2VuZCA9IHBhcnNlX2x3
b3JkKHdzdGFydCwgd3N0YXJ0KTsKKyAgICB2YXIgYm94X25hbWUgPSAkJFN0cmluZy5zdWIoc3Ry
LCB3c3RhcnQsIHdlbmQgLSB3c3RhcnQgfCAwKTsKKyAgICB2YXIgbnN0YXJ0ID0gcGFyc2Vfc3Bh
Y2VzKHdlbmQpOworICAgIHZhciBuZW5kID0gcGFyc2VfaW50KG5zdGFydCwgbnN0YXJ0KTsKKyAg
ICB2YXIgaW5kZW50OworICAgIGlmIChuc3RhcnQgPT09IG5lbmQpIHsKKyAgICAgIGluZGVudCA9
IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdHJ5IHsKKyAgICAgICAgaW5kZW50ID0gQ2Ft
bF9mb3JtYXQuY2FtbF9pbnRfb2Zfc3RyaW5nKCQkU3RyaW5nLnN1YihzdHIsIG5zdGFydCwgbmVu
ZCAtIG5zdGFydCB8IDApKTsKKyAgICAgIH0KKyAgICAgIGNhdGNoIChleG4peworICAgICAgICBp
ZiAoZXhuWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7CisgICAgICAg
ICAgaW5kZW50ID0gaW52YWxpZF9ib3goLyogKCkgKi8wKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICB0aHJvdyBleG47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9Cisg
ICAgdmFyIGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMobmVuZCk7CisgICAgaWYgKGV4cF9lbmQgIT09
IGxlbikgeworICAgICAgaW52YWxpZF9ib3goLyogKCkgKi8wKTsKKyAgICB9CisgICAgdmFyIGJv
eF90eXBlOworICAgIHN3aXRjaCAoYm94X25hbWUpIHsKKyAgICAgIGNhc2UgIiIgOiAKKyAgICAg
IGNhc2UgImIiIDogCisgICAgICAgICAgYm94X3R5cGUgPSAvKiBQcF9ib3ggKi80OworICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAiaCIgOiAKKyAgICAgICAgICBib3hfdHlwZSA9IC8qIFBw
X2hib3ggKi8wOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAiaG92IiA6IAorICAgICAg
ICAgIGJveF90eXBlID0gLyogUHBfaG92Ym94ICovMzsKKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgImh2IiA6IAorICAgICAgICAgIGJveF90eXBlID0gLyogUHBfaHZib3ggKi8yOworICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAidiIgOiAKKyAgICAgICAgICBib3hfdHlwZSA9IC8q
IFBwX3Zib3ggKi8xOworICAgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAg
Ym94X3R5cGUgPSBpbnZhbGlkX2JveCgvKiAoKSAqLzApOworICAgIH0KKyAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICBpbmRlbnQsCisgICAgICAgICAgICBib3hfdHlwZQorICAg
ICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9wYWRkaW5nX2ZtdF9lYmIocGFkLCBm
bXQpIHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8qIFBh
ZGRpbmdfZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAg
ICAgICAgZm10CisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIGlmIChwYWQudGFnKSB7CisgICAg
cmV0dXJuIC8qIFBhZGRpbmdfZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIEFyZ19wYWRkaW5n
ICovQmxvY2suX18oMSwgW3BhZFswXV0pLAorICAgICAgICAgICAgZm10CisgICAgICAgICAgXTsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogUGFkZGluZ19mbXRfRUJCICovWworICAgICAg
ICAgICAgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgcGFk
WzBdLAorICAgICAgICAgICAgICAgIHBhZFsxXQorICAgICAgICAgICAgICBdKSwKKyAgICAgICAg
ICAgIGZtdAorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9wcmVjaXNpb25f
Zm10X2ViYihwcmVjLCBmbXQpIHsKKyAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgewor
ICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICByZXR1cm4gLyogUHJlY2lzaW9uX2ZtdF9FQkIg
Ki9bCisgICAgICAgICAgICAgIC8qIEFyZ19wcmVjaXNpb24gKi8xLAorICAgICAgICAgICAgICBm
bXQKKyAgICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIFBy
ZWNpc2lvbl9mbXRfRUJCICovWworICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAor
ICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgIF07CisgICAgfQorICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiAvKiBQcmVjaXNpb25fZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExpdF9w
cmVjaXNpb24gKi9bcHJlY1swXV0sCisgICAgICAgICAgICBmbXQKKyAgICAgICAgICBdOworICB9
Cit9CisKK2Z1bmN0aW9uIG1ha2VfcGFkcHJlY19mbXRfZWJiKHBhZCwgcHJlYywgZm10KSB7Cisg
IHZhciBtYXRjaCA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIocHJlYywgZm10KTsKKyAgdmFyIGZt
dCRwcmltZSA9IG1hdGNoWzFdOworICB2YXIgcHJlYyQxID0gbWF0Y2hbMF07CisgIGlmICh0eXBl
b2YgcGFkID09PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdF9FQkIgKi9b
CisgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgIHByZWMkMSwKKyAg
ICAgICAgICAgIGZtdCRwcmltZQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSBpZiAocGFkLnRh
ZykgeworICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAvKiBB
cmdfcGFkZGluZyAqL0Jsb2NrLl9fKDEsIFtwYWRbMF1dKSwKKyAgICAgICAgICAgIHByZWMkMSwK
KyAgICAgICAgICAgIGZtdCRwcmltZQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIC8qIFBhZHByZWNfZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExpdF9wYWRkaW5n
ICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgIHBhZFswXSwKKyAgICAgICAgICAgICAg
ICBwYWRbMV0KKyAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICBwcmVjJDEsCisgICAgICAg
ICAgICBmbXQkcHJpbWUKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGZtdF9lYmJf
b2Zfc3RyaW5nKGxlZ2FjeV9iZWhhdmlvciwgc3RyKSB7CisgIHZhciBsZWdhY3lfYmVoYXZpb3Ik
MSA9IGxlZ2FjeV9iZWhhdmlvciA/IGxlZ2FjeV9iZWhhdmlvclswXSA6IC8qIHRydWUgKi8xOwor
ICB2YXIgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSA9IGZ1bmN0aW9uIChzdHJfaW5kLCBtc2cpIHsK
KyAgICByZXR1cm4gQ3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAg
ICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIEludF9kICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZyAqL0Jsb2NrLl9fKDIsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQg
Ki8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAg
ICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQs
ICVzIgorICAgICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2luZCwgbXNnKTsKKyAgfTsKKyAg
dmFyIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgPSBmdW5jdGlvbiAoc3RyX2luZCwgYywgcykgewor
ICAgIHJldHVybiBDdXJyeS5fNChmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAg
ICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICI6IGF0IGNoYXJhY3RlciBudW1iZXIgIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogSW50ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsICciLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIENoYXIgKi9CbG9jay5fXygwLCBbLyogU3RyaW5nX2xpdGVy
YWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIicgd2l0aG91dCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogU3RyaW5nICovQmxvY2suX18oMiwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8w
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSldKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNo
YXJhY3RlciBudW1iZXIgJWQsICclYycgd2l0aG91dCAlcyIKKyAgICAgICAgICAgICAgICAgIF0p
LCBzdHIsIHN0cl9pbmQsIGMsIHMpOworICB9OworICB2YXIgZXhwZWN0ZWRfY2hhcmFjdGVyID0g
ZnVuY3Rpb24gKHN0cl9pbmQsIGV4cGVjdGVkLCByZWFkKSB7CisgICAgcmV0dXJuIEN1cnJ5Ll80
KGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAvKiBT
dHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAi
aW52YWxpZCBmb3JtYXQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5n
ICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRp
bmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICov
QmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXQgY2hh
cmFjdGVyIG51bWJlciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQg
Ki9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJ
bnRfZCAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRk
aW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNp
c2lvbiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiwgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBTdHJpbmcgKi9CbG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGV4cGVjdGVk
LCByZWFkICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBDYW1sX2NoYXIgKi9CbG9jay5fXygxLCBbLyogRW5kX29mX2Zvcm1hdCAqLzBdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAi
aW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVkLCBy
ZWFkICVDIgorICAgICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2luZCwgZXhwZWN0ZWQsIHJl
YWQpOworICB9OworICB2YXIgY29tcHV0ZV9pbnRfY29udiA9IGZ1bmN0aW9uIChwY3RfaW5kLCBz
dHJfaW5kLCBfcGx1cywgX3NoYXJwLCBfc3BhY2UsIHN5bWIpIHsKKyAgICB3aGlsZSh0cnVlKSB7
CisgICAgICB2YXIgc3BhY2UgPSBfc3BhY2U7CisgICAgICB2YXIgc2hhcnAgPSBfc2hhcnA7Cisg
ICAgICB2YXIgcGx1cyA9IF9wbHVzOworICAgICAgdmFyIGV4aXQgPSAwOworICAgICAgdmFyIGV4
aXQkMSA9IDA7CisgICAgICBpZiAocGx1cyAhPT0gMCkgeworICAgICAgICBpZiAoc2hhcnAgIT09
IDApIHsKKyAgICAgICAgICBleGl0JDEgPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYg
KHNwYWNlICE9PSAwKSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSBpZiAoc3ltYiAhPT0gMTAwKSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDEwNSkgewor
ICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgcmV0dXJuIC8qIEludF9waSAqLzQ7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAvKiBJbnRfcGQgKi8xOworICAgICAgICB9
CisgICAgICB9CisgICAgICBlbHNlIGlmIChzaGFycCAhPT0gMCkgeworICAgICAgICBpZiAoc3Bh
Y2UgIT09IDApIHsKKyAgICAgICAgICBleGl0JDEgPSAyOworICAgICAgICB9CisgICAgICAgIGVs
c2UgaWYgKHN5bWIgIT09IDg4KSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDExMSkgeworICAg
ICAgICAgICAgaWYgKHN5bWIgIT09IDEyMCkgeworICAgICAgICAgICAgICBleGl0JDEgPSAyOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAv
KiBJbnRfQ3ggKi83OworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHJldHVybiAvKiBJbnRfQ28gKi8xMTsKKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIEludF9DWCAqLzk7Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHNwYWNlICE9PSAwKSB7CisgICAgICAg
IGlmIChzeW1iICE9PSAxMDApIHsKKyAgICAgICAgICBpZiAoc3ltYiAhPT0gMTA1KSB7CisgICAg
ICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICByZXR1cm4gLyogSW50X3NpICovNTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIEludF9zZCAqLzI7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgc3dpdGNoZXIgPSBzeW1iIC0gODggfCAw
OworICAgICAgICBpZiAoc3dpdGNoZXIgPiAzMiB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAg
ICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzd2l0Y2gg
KHN3aXRjaGVyKSB7CisgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICByZXR1
cm4gLyogSW50X1ggKi84OworICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgICAg
IHJldHVybiAvKiBJbnRfZCAqLzA7CisgICAgICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIEludF9pICovMzsKKyAgICAgICAgICAgIGNhc2UgMjMgOiAKKyAgICAg
ICAgICAgICAgICByZXR1cm4gLyogSW50X28gKi8xMDsKKyAgICAgICAgICAgIGNhc2UgMjkgOiAK
KyAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50X3UgKi8xMjsKKyAgICAgICAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICBjYXNl
IDYgOiAKKyAgICAgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgY2FzZSA4IDogCisgICAg
ICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGNh
c2UgMTEgOiAKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIGNhc2UgMTQgOiAK
KyAgICAgICAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAg
ICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAgIGNhc2Ug
MjAgOiAKKyAgICAgICAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAg
ICAgICAgICAgIGNhc2UgMjQgOiAKKyAgICAgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAgICAg
IGNhc2UgMjYgOiAKKyAgICAgICAgICAgIGNhc2UgMjcgOiAKKyAgICAgICAgICAgIGNhc2UgMjgg
OiAKKyAgICAgICAgICAgIGNhc2UgMzAgOiAKKyAgICAgICAgICAgIGNhc2UgMzEgOiAKKyAgICAg
ICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgMzIgOiAKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50X3ggKi82OworICAgICAg
ICAgICAgCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoZXhpdCQx
ID09PSAyKSB7CisgICAgICAgIHZhciBleGl0JDIgPSAwOworICAgICAgICB2YXIgc3dpdGNoZXIk
MSA9IHN5bWIgLSA4OCB8IDA7CisgICAgICAgIGlmIChzd2l0Y2hlciQxID4gMzIgfHwgc3dpdGNo
ZXIkMSA8IDApIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICBzd2l0Y2ggKHN3aXRjaGVyJDEpIHsKKyAgICAgICAgICAgIGNhc2UgMCA6
IAorICAgICAgICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIEludF9DWCAqLzk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMyA6IAorICAg
ICAgICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICAgICAg
cmV0dXJuIC8qIEludF9DbyAqLzExOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAg
ICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIGNhc2UgMjkgOiAKKyAgICAgICAgICAgICAgICBl
eGl0JDIgPSAzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxIDog
CisgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAg
ICAgY2FzZSA0IDogCisgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGNhc2UgNiA6
IAorICAgICAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAg
ICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgY2FzZSAx
MSA6IAorICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgY2FzZSAxNCA6IAorICAg
ICAgICAgICAgY2FzZSAxNSA6IAorICAgICAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAg
Y2FzZSAxOCA6IAorICAgICAgICAgICAgY2FzZSAxOSA6IAorICAgICAgICAgICAgY2FzZSAyMCA6
IAorICAgICAgICAgICAgY2FzZSAyMSA6IAorICAgICAgICAgICAgY2FzZSAyMiA6IAorICAgICAg
ICAgICAgY2FzZSAyNCA6IAorICAgICAgICAgICAgY2FzZSAyNSA6IAorICAgICAgICAgICAgY2Fz
ZSAyNiA6IAorICAgICAgICAgICAgY2FzZSAyNyA6IAorICAgICAgICAgICAgY2FzZSAyOCA6IAor
ICAgICAgICAgICAgY2FzZSAzMCA6IAorICAgICAgICAgICAgY2FzZSAzMSA6IAorICAgICAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAzMiA6IAorICAgICAgICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIEludF9DeCAqLzc7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChleGl0JDIgPT09IDMpIHsKKyAgICAgICAgICBp
ZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIF9zaGFycCA9IC8qIGZhbHNlICov
MDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3Rf
aW5kLCBzdHJfaW5kLCBzeW1iLCAiJyMnIik7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIAorICAgICAgfQorICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKHBsdXMg
IT09IDApIHsKKyAgICAgICAgICBpZiAoc3BhY2UgIT09IDApIHsKKyAgICAgICAgICAgIGlmIChs
ZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICBfc3BhY2UgPSAvKiBmYWxzZSAqLzA7
CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9m
bGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICIgIiAqLzMyLCAiJysnIik7CisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7Cisg
ICAgICAgICAgICBfcGx1cyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJysnIik7
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNwYWNlICE9PSAwKSB7
CisgICAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICBfc3BhY2Ug
PSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gaW5jb21wYXRp
YmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIicgJyIpOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAg
ICAgICAgICAgICAyNzE2LAorICAgICAgICAgICAgICAgICAgMjgKKyAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAgIH07Cisg
IH07CisgIHZhciBpbmNvbXBhdGlibGVfZmxhZyA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5k
LCBzeW1iLCBvcHRpb24pIHsKKyAgICB2YXIgc3ViZm10ID0gJCRTdHJpbmcuc3ViKHN0ciwgcGN0
X2luZCwgc3RyX2luZCAtIHBjdF9pbmQgfCAwKTsKKyAgICByZXR1cm4gQ3VycnkuXzUoZmFpbHdp
dGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19s
aXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlk
IGZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9j
ay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5f
XygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiBhdCBjaGFyYWN0ZXIg
bnVtYmVyICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2Nr
Ll9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF9kICov
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8w
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICov
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFs
ICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmlu
ZyAqL0Jsb2NrLl9fKDIsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaXMgaW5jb21wYXRpYmxl
IHdpdGggJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBDaGFyICovQmxvY2suX18oMCwgWy8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEs
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIicgaW4gc3ViLWZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAi
aW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGlzIGluY29tcGF0
aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlUyIKKyAgICAgICAgICAgICAgICAgIF0pLCBz
dHIsIHBjdF9pbmQsIG9wdGlvbiwgc3ltYiwgc3ViZm10KTsKKyAgfTsKKyAgdmFyIHBhcnNlX3Bv
c2l0aXZlID0gZnVuY3Rpb24gKF9zdHJfaW5kLCBlbmRfaW5kLCBfYWNjKSB7CisgICAgd2hpbGUo
dHJ1ZSkgeworICAgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgICB2YXIgc3RyX2luZCA9IF9zdHJf
aW5kOworICAgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgaW52YWxpZF9m
b3JtYXRfbWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAg
ICB9CisgICAgICB2YXIgYyA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAg
aWYgKGMgPiA1NyB8fCBjIDwgNDgpIHsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAg
ICAgICAgICAgICAgIHN0cl9pbmQsCisgICAgICAgICAgICAgICAgYWNjCisgICAgICAgICAgICAg
IF07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG5ld19hY2MgPSBDYW1sX2lu
dDMyLmltdWwoYWNjLCAxMCkgKyAoYyAtIC8qICIwIiAqLzQ4IHwgMCkgfCAwOworICAgICAgICBp
ZiAobmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgeworICAgICAgICAgIHJldHVybiBD
dXJyeS5fMyhmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IGludGVnZXIgIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2suX18oNCwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNp
b24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3Ry
aW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9f
KDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZh
bGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkIgor
ICAgICAgICAgICAgICAgICAgICAgICAgXSksIHN0ciwgbmV3X2FjYywgU3lzLm1heF9zdHJpbmdf
bGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBfYWNjID0gbmV3
X2FjYzsKKyAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9Owor
ICB2YXIgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uID0gZnVuY3Rpb24gKHBjdF9pbmQsIHN0cl9pbmQs
IGVuZF9pbmQsIG1pbnVzLCBwbHVzLCBzaGFycCwgc3BhY2UsIGlnbiwgcGFkLCBwcmVjKSB7Cisg
ICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgIGludmFsaWRfZm9ybWF0X21lc3Nh
Z2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgIH0KKyAgICB2YXIg
cGFyc2VfY29udiA9IGZ1bmN0aW9uIChwYWRwcmVjKSB7CisgICAgICByZXR1cm4gcGFyc2VfY29u
dmVyc2lvbihwY3RfaW5kLCBzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQsIHBsdXMsIHNoYXJwLCBz
cGFjZSwgaWduLCBwYWQsIHByZWMsIHBhZHByZWMsIENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9p
bmQpKTsKKyAgICB9OworICAgIGlmICh0eXBlb2YgcGFkID09PSAibnVtYmVyIikgeworICAgICAg
dmFyIGV4aXQgPSAwOworICAgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAg
ICAgICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBwYXJzZV9jb252KC8qIE5vX3BhZGRpbmcg
Ki8wKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAx
OworICAgICAgfQorICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKG1pbnVzICE9
PSAwKSB7CisgICAgICAgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlX2NvbnYoLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbLyog
TGVmdCAqLzBdKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
cmV0dXJuIHBhcnNlX2NvbnYoLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIExlZnQgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmVjWzBdCisgICAgICAgICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAg
ICAgICAgIHJldHVybiBwYXJzZV9jb252KC8qIEFyZ19wYWRkaW5nICovQmxvY2suX18oMSwgWy8q
IFJpZ2h0ICovMV0pKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gcGFyc2VfY29udigvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWNb
MF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAg
IAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBwYXJzZV9jb252KHBhZCk7CisgICAg
fQorICB9OworICB2YXIgcGFyc2VfYWZ0ZXJfcGFkZGluZyA9IGZ1bmN0aW9uIChwY3RfaW5kLCBz
dHJfaW5kLCBlbmRfaW5kLCBtaW51cywgcGx1cywgc2hhcnAsIHNwYWNlLCBpZ24sIHBhZCkgewor
ICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNz
YWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICB9CisgICAgdmFy
IHN5bWIgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICBpZiAoc3ltYiAhPT0g
NDYpIHsKKyAgICAgIHJldHVybiBwYXJzZV9jb252ZXJzaW9uKHBjdF9pbmQsIHN0cl9pbmQgKyAx
IHwgMCwgZW5kX2luZCwgcGx1cywgc2hhcnAsIHNwYWNlLCBpZ24sIHBhZCwgLyogTm9fcHJlY2lz
aW9uICovMCwgcGFkLCBzeW1iKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgcGN0X2lu
ZCQxID0gcGN0X2luZDsKKyAgICAgIHZhciBzdHJfaW5kJDEgPSBzdHJfaW5kICsgMSB8IDA7Cisg
ICAgICB2YXIgZW5kX2luZCQxID0gZW5kX2luZDsKKyAgICAgIHZhciBtaW51cyQxID0gbWludXM7
CisgICAgICB2YXIgcGx1cyQxID0gcGx1czsKKyAgICAgIHZhciBzaGFycCQxID0gc2hhcnA7Cisg
ICAgICB2YXIgc3BhY2UkMSA9IHNwYWNlOworICAgICAgdmFyIGlnbiQxID0gaWduOworICAgICAg
dmFyIHBhZCQxID0gcGFkOworICAgICAgaWYgKHN0cl9pbmQkMSA9PT0gZW5kX2luZCQxKSB7Cisg
ICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCQxLCAidW5leHBlY3RlZCBlbmQg
b2YgZm9ybWF0Iik7CisgICAgICB9CisgICAgICB2YXIgcGFyc2VfbGl0ZXJhbCA9IGZ1bmN0aW9u
IChtaW51cywgc3RyX2luZCkgeworICAgICAgICB2YXIgbWF0Y2ggPSBwYXJzZV9wb3NpdGl2ZShz
dHJfaW5kLCBlbmRfaW5kJDEsIDApOworICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcHJlY2lz
aW9uKHBjdF9pbmQkMSwgbWF0Y2hbMF0sIGVuZF9pbmQkMSwgbWludXMsIHBsdXMkMSwgc2hhcnAk
MSwgc3BhY2UkMSwgaWduJDEsIHBhZCQxLCAvKiBMaXRfcHJlY2lzaW9uICovW21hdGNoWzFdXSk7
CisgICAgICB9OworICAgICAgdmFyIHN5bWIkMSA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9p
bmQkMSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAg
IGlmIChzeW1iJDEgPj0gNDgpIHsKKyAgICAgICAgaWYgKHN5bWIkMSA+PSA1OCkgeworICAgICAg
ICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVy
biBwYXJzZV9saXRlcmFsKG1pbnVzJDEsIHN0cl9pbmQkMSk7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIGVsc2UgaWYgKHN5bWIkMSA+PSA0MikgeworICAgICAgICBzd2l0Y2ggKHN5bWIkMSAt
IDQyIHwgMCkgeworICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICByZXR1cm4gcGFy
c2VfYWZ0ZXJfcHJlY2lzaW9uKHBjdF9pbmQkMSwgc3RyX2luZCQxICsgMSB8IDAsIGVuZF9pbmQk
MSwgbWludXMkMSwgcGx1cyQxLCBzaGFycCQxLCBzcGFjZSQxLCBpZ24kMSwgcGFkJDEsIC8qIEFy
Z19wcmVjaXNpb24gKi8xKTsKKyAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBjYXNlIDMg
OiAKKyAgICAgICAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgY2FzZSAyIDogCisgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgY2FzZSA1IDog
CisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOwor
ICAgICAgfQorICAgICAgaWYgKGV4aXQkMSA9PT0gMikgeworICAgICAgICBpZiAobGVnYWN5X2Jl
aGF2aW9yJDEpIHsKKyAgICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbChtaW51cyQxIHx8ICso
c3ltYiQxID09PSAvKiAiLSIgKi80NSksIHN0cl9pbmQkMSArIDEgfCAwKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQor
ICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7
CisgICAgICAgICAgcmV0dXJuIHBhcnNlX2FmdGVyX3ByZWNpc2lvbihwY3RfaW5kJDEsIHN0cl9p
bmQkMSwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGlnbiQx
LCBwYWQkMSwgLyogTGl0X3ByZWNpc2lvbiAqL1swXSk7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgcmV0dXJuIGludmFsaWRfZm9ybWF0X3dpdGhvdXQoc3RyX2luZCQxIC0g
MSB8IDAsIC8qICIuIiAqLzQ2LCAicHJlY2lzaW9uIik7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICAgIAorICAgIH0KKyAgfTsKKyAgdmFyIHBhcnNlX2xpdGVyYWwgPSBmdW5jdGlvbiAobGl0X3N0
YXJ0LCBfc3RyX2luZCwgZW5kX2luZCkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBz
dHJfaW5kID0gX3N0cl9pbmQ7CisgICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAg
ICAgICByZXR1cm4gYWRkX2xpdGVyYWwobGl0X3N0YXJ0LCBzdHJfaW5kLCAvKiBFbmRfb2ZfZm9y
bWF0ICovMCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNoID0gQ2Ft
bF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCk7CisgICAgICAgIGlmIChtYXRjaCAhPT0gMzcpIHsK
KyAgICAgICAgICBpZiAobWF0Y2ggIT09IDY0KSB7CisgICAgICAgICAgICBfc3RyX2luZCA9IHN0
cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxID0gcGFy
c2VfYWZ0ZXJfYXQoc3RyX2luZCArIDEgfCAwLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHJldHVy
biBhZGRfbGl0ZXJhbChsaXRfc3RhcnQsIHN0cl9pbmQsIG1hdGNoJDFbMF0pOworICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMiA9IHBh
cnNlX2Zvcm1hdChzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICByZXR1cm4gYWRkX2xpdGVy
YWwobGl0X3N0YXJ0LCBzdHJfaW5kLCBtYXRjaCQyWzBdKTsKKyAgICAgICAgfQorICAgICAgfQor
ICAgIH07CisgIH07CisgIHZhciBwYXJzZV9mb3JtYXQgPSBmdW5jdGlvbiAocGN0X2luZCwgZW5k
X2luZCkgeworICAgIHZhciBwY3RfaW5kJDEgPSBwY3RfaW5kOworICAgIHZhciBzdHJfaW5kID0g
cGN0X2luZCArIDEgfCAwOworICAgIHZhciBlbmRfaW5kJDEgPSBlbmRfaW5kOworICAgIGlmIChz
dHJfaW5kID09PSBlbmRfaW5kJDEpIHsKKyAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5k
X2luZCQxLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgfQorICAgIHZhciBtYXRj
aCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgIGlmIChtYXRjaCAhPT0gOTUp
IHsKKyAgICAgIHJldHVybiBwYXJzZV9mbGFncyhwY3RfaW5kJDEsIHN0cl9pbmQsIGVuZF9pbmQk
MSwgLyogZmFsc2UgKi8wKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gcGFyc2Vf
ZmxhZ3MocGN0X2luZCQxLCBzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQkMSwgLyogdHJ1ZSAqLzEp
OworICAgIH0KKyAgfTsKKyAgdmFyIHBhcnNlX2FmdGVyX2F0ID0gZnVuY3Rpb24gKHN0cl9pbmQs
IGVuZF9pbmQpIHsKKyAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgcmV0dXJu
IC8qIEZtdF9FQkIgKi9bLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAg
ICAgICAgICAgIC8qICJAIiAqLzY0LAorICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1h
dCAqLzAKKyAgICAgICAgICAgICAgICBdKV07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFy
IGMgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgIHZhciBleGl0ID0gMDsK
KyAgICAgIGlmIChjID49IDY1KSB7CisgICAgICAgIGlmIChjID49IDk0KSB7CisgICAgICAgICAg
dmFyIHN3aXRjaGVyID0gYyAtIDEyMyB8IDA7CisgICAgICAgICAgaWYgKHN3aXRjaGVyID4gMiB8
fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3dpdGNoZXIpIHsKKyAgICAgICAg
ICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfdGFnKC8qIHRy
dWUgKi8xLCBzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQpOworICAgICAgICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQg
PSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSBwYXJzZV9s
aXRlcmFsKGJlZ19pbmQsIGJlZ19pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2xvc2VfdGFnICovMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSldOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSBpZiAoYyA+PSA5MSkgeworICAgICAgICAgIHN3aXRjaCAoYyAtIDkx
IHwgMCkgeworICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgcmV0dXJuIHBh
cnNlX3RhZygvKiBmYWxzZSAqLzAsIHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCk7CisgICAgICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgIHZhciBiZWdf
aW5kJDEgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDEgPSBw
YXJzZV9saXRlcmFsKGJlZ19pbmQkMSwgYmVnX2luZCQxLCBlbmRfaW5kKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2xvc2VfYm94ICovMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxWzBdCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pXTsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxz
ZSBpZiAoYyAhPT0gMTApIHsKKyAgICAgICAgaWYgKGMgPj0gMzIpIHsKKyAgICAgICAgICBzd2l0
Y2ggKGMgLSAzMiB8IDApIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAg
IHZhciBiZWdfaW5kJDIgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFyIG1h
dGNoJDIgPSBwYXJzZV9saXRlcmFsKGJlZ19pbmQkMiwgYmVnX2luZCQyLCBlbmRfaW5kKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Js
b2NrLl9fKDE3LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQnJlYWsgKi9CbG9j
ay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAICIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDJbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOwor
ICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgaWYgKChzdHJfaW5kICsgMSB8
IDApIDwgZW5kX2luZCAmJiBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kICsgMSB8IDApID09
PSAvKiAiJSIgKi8zNykgeworICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkMyA9IHN0cl9p
bmQgKyAyIHwgMDsKKyAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQzID0gcGFyc2VfbGl0ZXJh
bChiZWdfaW5kJDMsIGJlZ19pbmQkMywgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFc2NhcGVkX3BlcmNlbnQgKi82LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkM1swXQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3Ry
X2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1sv
KiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogIkAiICovNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0
WzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAg
ICAgICAgICB2YXIgYmVnX2luZCQ0ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAg
IHZhciBtYXRjaCQ1ID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDQsIGJlZ19pbmQkNCwgZW5kX2lu
ZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19s
aXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJyZWFr
ICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQCwiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQ1WzBdCisgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pXTsKKyAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVnX2lu
ZCQ1ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQ2ID0gcGFy
c2VfbGl0ZXJhbChiZWdfaW5kJDUsIGJlZ19pbmQkNSwgZW5kX2luZCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywg
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZsdXNoX25ld2xpbmUgKi80LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDZbMF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSldOworICAgICAgICAgICAgY2FzZSAyNyA6IAorICAgICAgICAgICAgICAgIHZhciBz
dHJfaW5kJDEgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFyIGVuZF9pbmQk
MSA9IGVuZF9pbmQ7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDc7CisgICAgICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgIGlmIChzdHJfaW5kJDEgPT09IGVuZF9pbmQkMSB8
fCBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kJDEpICE9PSAvKiAiPCIgKi82MCkgeworICAg
ICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7
CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB2YXIgc3RyX2luZF8xID0g
cGFyc2Vfc3BhY2VzKHN0cl9pbmQkMSArIDEgfCAwLCBlbmRfaW5kJDEpOworICAgICAgICAgICAg
ICAgICAgdmFyIG1hdGNoJDggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kXzEpOworICAg
ICAgICAgICAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgICAgICAgICAgICBpZiAobWF0
Y2gkOCA+PSA0OCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkOCA+PSA1OCkgewor
ICAgICAgICAgICAgICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9m
b3VuZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICBleGl0JDEgPSAxOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQ4
ICE9PSA0NSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5ub3RfZm91bmQ7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCQxID0gMTsKKyAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgIGlmIChleGl0JDEgPT09IDEpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIG1hdGNoJDkgPSBwYXJzZV9pbnRlZ2VyKHN0cl9pbmRfMSwgZW5kX2luZCQxKTsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gbWF0Y2gkOVsxXTsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyhtYXRjaCQ5WzBdLCBlbmRfaW5k
JDEpOworICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSBDYW1sX3N0cmluZy5nZXQo
c3RyLCBzdHJfaW5kXzMpOworICAgICAgICAgICAgICAgICAgICB2YXIgc3dpdGNoZXIkMSA9IG1h
dGNoJDEwIC0gNDUgfCAwOworICAgICAgICAgICAgICAgICAgICBpZiAoc3dpdGNoZXIkMSA+IDEy
IHx8IHN3aXRjaGVyJDEgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYgKHN3aXRjaGVy
JDEgIT09IDE3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAkJFN0
cmluZy5zdWIoc3RyLCBzdHJfaW5kJDEgLSAyIHwgMCwgKHN0cl9pbmRfMyAtIHN0cl9pbmQkMSB8
IDApICsgMyB8IDApOworICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNyA9IC8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxIHwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogQnJlYWsgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKHN3aXRjaGVyJDEgPT09IDIgfHwgc3dpdGNoZXIkMSA9PT0gMSkgeworICAgICAgICAgICAg
ICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICB2YXIgbWF0Y2gkMTEgPSBwYXJzZV9pbnRlZ2VyKHN0cl9pbmRfMywgZW5kX2lu
ZCQxKTsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2Vz
KG1hdGNoJDExWzBdLCBlbmRfaW5kJDEpOworICAgICAgICAgICAgICAgICAgICAgIGlmIChDYW1s
X3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kXzUpICE9PSAvKiAiPiIgKi82MikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOwor
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICB2YXIgcyQxID0g
JCRTdHJpbmcuc3ViKHN0ciwgc3RyX2luZCQxIC0gMiB8IDAsIChzdHJfaW5kXzUgLSBzdHJfaW5k
JDEgfCAwKSArIDMgfCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ3ID0gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxIHwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIEJyZWFrICovQmxvY2suX18oMCwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMVsxXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaCAoZXhuKXsKKyAgICAgICAgICAgICAgICAg
IGlmIChleG4gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkgeworICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQ3ID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgc3RyX2luZCQxLAorICAgICAgICAgICAgICAgICAgICAgIC8qIEJyZWFrICovQmxvY2suX18o
MCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAiQDsiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAwCisgICAgICAgICAgICAgICAg
ICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhuWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5mYWlsdXJlKSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDcgPSAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICBzdHJfaW5kJDEsCisgICAgICAgICAgICAgICAgICAg
ICAgLyogQnJlYWsgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICJA
OyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgIF07
CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgZXhuOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgbmV4dF9pbmQgPSBtYXRjaCQ3WzBdOworICAgICAg
ICAgICAgICAgIHZhciBtYXRjaCQxMiA9IHBhcnNlX2xpdGVyYWwobmV4dF9pbmQsIG5leHRfaW5k
LCBlbmRfaW5kJDEpOworICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIEZv
cm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaCQ3WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEyWzBdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgIGNhc2UgMjggOiAKKyAg
ICAgICAgICAgICAgICB2YXIgc3RyX2luZCQyID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAg
ICAgICAgIHZhciBlbmRfaW5kJDIgPSBlbmRfaW5kOworICAgICAgICAgICAgICAgIHZhciBtYXRj
aCQxMzsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgdmFyIHN0cl9p
bmRfMSQxID0gcGFyc2Vfc3BhY2VzKHN0cl9pbmQkMiwgZW5kX2luZCQyKTsKKyAgICAgICAgICAg
ICAgICAgIHZhciBtYXRjaCQxNCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmRfMSQxKTsK
KyAgICAgICAgICAgICAgICAgIHZhciBleGl0JDIgPSAwOworICAgICAgICAgICAgICAgICAgaWYg
KG1hdGNoJDE0ID49IDQ4KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQxNCA+PSA1
OCkgeworICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgZXhpdCQyID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMTQgIT09IDQ1KSB7
CisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7CisgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ZXhpdCQyID0gMTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGlmIChl
eGl0JDIgPT09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE1ID0gcGFyc2Vf
aW50ZWdlcihzdHJfaW5kXzEkMSwgZW5kX2luZCQyKTsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IHN0cl9pbmRfMyQxID0gcGFyc2Vfc3BhY2VzKG1hdGNoJDE1WzBdLCBlbmRfaW5kJDIpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZF8zJDEpICE9
PSAvKiAiPiIgKi82MikgeworICAgICAgICAgICAgICAgICAgICAgIHRocm93IENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB2YXIgcyQyID0gJCRTdHJpbmcuc3ViKHN0ciwgc3RyX2luZCQyIC0gMiB8IDAs
IChzdHJfaW5kXzMkMSAtIHN0cl9pbmQkMiB8IDApICsgMyB8IDApOworICAgICAgICAgICAgICAg
ICAgICBtYXRjaCQxMyA9IC8qIFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJfaW5kXzMkMSArIDEgfCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgLyog
TWFnaWNfc2l6ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
JDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTVbMV0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICBdXTsKKyAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBjYXRjaCAoZXhuJDEpeworICAgICAgICAgICAgICAgICAgaWYgKGV4biQxID09PSBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkMTMgPSAvKiBOb25lICovMDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGV4biQxWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWls
dXJlKSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7CisgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgZXhuJDE7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChtYXRjaCQxMykgeworICAgICAgICAgICAgICAgICAgdmFy
IG1hdGNoJDE2ID0gbWF0Y2gkMTNbMF07CisgICAgICAgICAgICAgICAgICB2YXIgbmV4dF9pbmQk
MSA9IG1hdGNoJDE2WzBdOworICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE3ID0gcGFyc2Vf
bGl0ZXJhbChuZXh0X2luZCQxLCBuZXh0X2luZCQxLCBlbmRfaW5kJDIpOworICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygx
NywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTZbMV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxN1swXQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTggPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQkMiwg
c3RyX2luZCQyLCBlbmRfaW5kJDIpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9F
QkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogU2Nhbl9pbmRpYyAqL0Jsb2NrLl9fKDIsIFsvKiAiPCIgKi82MF0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMThbMF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSAxIDogCisgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGNhc2UgMyA6IAorICAg
ICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgIGNh
c2UgNyA6IAorICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICBjYXNlIDkgOiAKKyAg
ICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAg
IGNhc2UgMTMgOiAKKyAgICAgICAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICAgIGNhc2UgMTYg
OiAKKyAgICAgICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIGNhc2UgMTggOiAKKyAgICAg
ICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAgIGNh
c2UgMjEgOiAKKyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgIGNhc2UgMjMgOiAK
KyAgICAgICAgICAgIGNhc2UgMjQgOiAKKyAgICAgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAg
ICAgIGNhc2UgMjYgOiAKKyAgICAgICAgICAgIGNhc2UgMjkgOiAKKyAgICAgICAgICAgIGNhc2Ug
MzAgOiAKKyAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQ2ID0g
c3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQxOSA9IHBhcnNlX2xp
dGVyYWwoYmVnX2luZCQ2LCBiZWdfaW5kJDYsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGRmx1c2ggKi8yLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDE5WzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsK
KyAgICAgICAgICAgIGNhc2UgMzIgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQ3ID0g
c3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQyMCA9IHBhcnNlX2xp
dGVyYWwoYmVnX2luZCQ3LCBiZWdfaW5kJDcsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFc2NhcGVkX2F0ICovNSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQyMFswXQorICAgICAgICAgICAgICAgICAgICAgICAgICBd
KV07CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICB2YXIgYmVnX2luZCQ4ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICB2YXIgbWF0
Y2gkMjEgPSBwYXJzZV9saXRlcmFsKGJlZ19pbmQkOCwgYmVnX2luZCQ4LCBlbmRfaW5kKTsKKyAg
ICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygx
NywgWworICAgICAgICAgICAgICAgICAgICAvKiBGb3JjZV9uZXdsaW5lICovMywKKyAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMjFbMF0KKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIH0K
KyAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgIHZhciBiZWdfaW5kJDkgPSBzdHJfaW5k
ICsgMSB8IDA7CisgICAgICAgIHZhciBtYXRjaCQyMiA9IHBhcnNlX2xpdGVyYWwoYmVnX2luZCQ5
LCBiZWdfaW5kJDksIGVuZF9pbmQpOworICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBG
b3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAgICAgICAgIC8qIFNj
YW5faW5kaWMgKi9CbG9jay5fXygyLCBbY10pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQy
MlswXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAgICAgCisgICAgfQorICB9
OworICB2YXIgYWRkX2xpdGVyYWwgPSBmdW5jdGlvbiAobGl0X3N0YXJ0LCBzdHJfaW5kLCBmbXQp
IHsKKyAgICB2YXIgc2l6ZSA9IHN0cl9pbmQgLSBsaXRfc3RhcnQgfCAwOworICAgIGlmIChzaXpl
ICE9PSAwKSB7CisgICAgICBpZiAoc2l6ZSAhPT0gMSkgeworICAgICAgICByZXR1cm4gLyogRm10
X0VCQiAqL1svKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAg
ICAgICAgICQkU3RyaW5nLnN1YihzdHIsIGxpdF9zdGFydCwgc2l6ZSksCisgICAgICAgICAgICAg
ICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9f
KDEyLCBbCisgICAgICAgICAgICAgICAgICAgIENhbWxfc3RyaW5nLmdldChzdHIsIGxpdF9zdGFy
dCksCisgICAgICAgICAgICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAgXSldOworICAg
ICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBGbXRfRUJCICovW2ZtdF07
CisgICAgfQorICB9OworICB2YXIgcGFyc2Vfc3BhY2VzID0gZnVuY3Rpb24gKF9zdHJfaW5kLCBl
bmRfaW5kKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHN0cl9pbmQgPSBfc3RyX2lu
ZDsKKyAgICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICAgIGludmFsaWRfZm9y
bWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAg
fQorICAgICAgaWYgKENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpID09PSAvKiAiICIgKi8z
MikgeworICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgY29udGlu
dWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gc3Ry
X2luZDsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgcGFyc2VfaW50ZWdlciA9IGZ1bmN0
aW9uIChzdHJfaW5kLCBlbmRfaW5kKSB7CisgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsK
KyAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9m
IGZvcm1hdCIpOworICAgIH0KKyAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBz
dHJfaW5kKTsKKyAgICBpZiAobWF0Y2ggPj0gNDgpIHsKKyAgICAgIGlmIChtYXRjaCA+PSA1OCkg
eworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNhbWxp
bnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgMjYyMSwKKyAgICAgICAgICAgICAg
ICAxMQorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHJldHVybiBwYXJzZV9wb3NpdGl2ZShzdHJfaW5kLCBlbmRfaW5kLCAwKTsK
KyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobWF0Y2ggIT09IDQ1KSB7CisgICAgICB0aHJv
dyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwK
KyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisg
ICAgICAgICAgICAgIDI2MjEsCisgICAgICAgICAgICAgIDExCisgICAgICAgICAgICBdCisgICAg
ICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBpZiAoKHN0cl9pbmQgKyAxIHwgMCkg
PT09IGVuZF9pbmQpIHsKKyAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAi
dW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgICB9CisgICAgICB2YXIgYyA9IENhbWxf
c3RyaW5nLmdldChzdHIsIHN0cl9pbmQgKyAxIHwgMCk7CisgICAgICBpZiAoYyA+IDU3IHx8IGMg
PCA0OCkgeworICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hhcmFjdGVyKHN0cl9pbmQgKyAxIHwg
MCwgImRpZ2l0IiwgYyk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNo
JDEgPSBwYXJzZV9wb3NpdGl2ZShzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQsIDApOworICAgICAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgbWF0Y2gkMVswXSwKKyAgICAg
ICAgICAgICAgICAtbWF0Y2gkMVsxXSB8IDAKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAg
ICB9CisgIH07CisgIHZhciBjb21wdXRlX2Zsb2F0X2NvbnYgPSBmdW5jdGlvbiAocGN0X2luZCwg
c3RyX2luZCwgX3BsdXMsIF9zcGFjZSwgc3ltYikgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAg
IHZhciBzcGFjZSA9IF9zcGFjZTsKKyAgICAgIHZhciBwbHVzID0gX3BsdXM7CisgICAgICBpZiAo
cGx1cyAhPT0gMCkgeworICAgICAgICBpZiAoc3BhY2UgIT09IDApIHsKKyAgICAgICAgICBpZiAo
bGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIF9zcGFjZSA9IC8qIGZhbHNlICovMDsK
KyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5k
LCBzdHJfaW5kLCAvKiAiICIgKi8zMiwgIicrJyIpOworICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICAgICAgaWYgKHN5
bWIgPj0gNzIpIHsKKyAgICAgICAgICAgIHZhciBzd2l0Y2hlciA9IHN5bWIgLSAxMDEgfCAwOwor
ICAgICAgICAgICAgaWYgKHN3aXRjaGVyID4gMiB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAg
ICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgc3dpdGNoIChzd2l0Y2hlcikgeworICAgICAgICAgICAgICAgIGNhc2UgMCA6IAor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcGUgKi80OworICAgICAgICAgICAg
ICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcGYgKi8x
OworICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogRmxvYXRfcGcgKi8xMDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChzeW1iID49IDY5KSB7
CisgICAgICAgICAgICBzd2l0Y2ggKHN5bWIgLSA2OSB8IDApIHsKKyAgICAgICAgICAgICAgY2Fz
ZSAwIDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcEUgKi83OworICAgICAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIEZsb2F0X3BHICovMTM7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAg
fQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICAgICAgaWYg
KGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICAgIF9wbHVzID0gLyogZmFsc2UgKi8w
OworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVf
ZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJysnIik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChz
cGFjZSAhPT0gMCkgeworICAgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgICAgaWYgKHN5bWIg
Pj0gNzIpIHsKKyAgICAgICAgICB2YXIgc3dpdGNoZXIkMSA9IHN5bWIgLSAxMDEgfCAwOworICAg
ICAgICAgIGlmIChzd2l0Y2hlciQxID4gMiB8fCBzd2l0Y2hlciQxIDwgMCkgeworICAgICAgICAg
ICAgZXhpdCQxID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHN3aXRjaGVyJDEpIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfc2UgKi81OworICAgICAgICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9zZiAqLzI7CisgICAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3NnICovMTE7
CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBlbHNlIGlmIChzeW1iID49IDY5KSB7CisgICAgICAgICAgc3dpdGNoIChzeW1iIC0g
NjkgfCAwKSB7CisgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICByZXR1cm4g
LyogRmxvYXRfc0UgKi84OworICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAg
ZXhpdCQxID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMiA6
IAorICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9zRyAqLzE0OworICAgICAgICAgICAg
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQk
MSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMSA9PT0gMSkgeworICAgICAgICAg
IGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgX3NwYWNlID0gLyogZmFsc2Ug
Ki8wOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBj
dF9pbmQsIHN0cl9pbmQsIHN5bWIsICInICciKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICB9CisgICAgICBlbHNlIGlmIChzeW1iID49IDcyKSB7CisgICAgICAgIHZh
ciBzd2l0Y2hlciQyID0gc3ltYiAtIDEwMSB8IDA7CisgICAgICAgIGlmIChzd2l0Y2hlciQyID4g
MiB8fCBzd2l0Y2hlciQyIDwgMCkgeworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAg
ICAgICAgICAgIDI3NDQsCisgICAgICAgICAgICAgICAgICAyNQorICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBz
d2l0Y2ggKHN3aXRjaGVyJDIpIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBGbG9hdF9lICovMzsKKyAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9mICovMDsKKyAgICAgICAgICAgIGNhc2UgMiA6IAor
ICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9nICovOTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAoc3ltYiA+PSA2OSkg
eworICAgICAgICBzd2l0Y2ggKHN5bWIgLSA2OSB8IDApIHsKKyAgICAgICAgICBjYXNlIDAgOiAK
KyAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X0UgKi82OworICAgICAgICAgIGNhc2UgMSA6
IAorICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfRiAqLzE1OworICAgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfRyAqLzEyOworICAgICAgICAgIAor
ICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAg
ICAgICAgICAgIDI3NDQsCisgICAgICAgICAgICAgICAgMjUKKyAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgc2VhcmNoX3N1YmZvcm1h
dF9lbmQgPSBmdW5jdGlvbiAoX3N0cl9pbmQsIGVuZF9pbmQsIGMpIHsKKyAgICB3aGlsZSh0cnVl
KSB7CisgICAgICB2YXIgc3RyX2luZCA9IF9zdHJfaW5kOworICAgICAgaWYgKHN0cl9pbmQgPT09
IGVuZF9pbmQpIHsKKyAgICAgICAgQ3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQg
Ki9bCisgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBb
CisgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAg
ICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnOiB1bmNsb3NlZCBzdWItZm9ybWF0LCBleHBlY3RlZCAiJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIiUiICovMzcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogQ2hhciAqL0Jsb2NrLl9fKDAsIFsvKiBTdHJpbmdfbGl0
ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNp
c2lvbiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKV0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAg
ICAgIF0pLAorICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3NlZCBz
dWItZm9ybWF0LCBleHBlY3RlZCAiJSUlYyIgYXQgY2hhcmFjdGVyIG51bWJlciAlZCcKKyAgICAg
ICAgICAgICAgICBdKSwgc3RyLCBjLCBlbmRfaW5kKTsKKyAgICAgIH0KKyAgICAgIHZhciBtYXRj
aCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAgaWYgKG1hdGNoICE9PSAz
NykgeworICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgY29udGlu
dWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBpZiAoKHN0cl9p
bmQgKyAxIHwgMCkgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNz
YWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCArIDEgfCAwKSA9PT0gYykgewor
ICAgICAgICAgIHJldHVybiBzdHJfaW5kOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIHZhciBtYXRjaCQxID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCArIDEgfCAw
KTsKKyAgICAgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICAgICAgaWYgKG1hdGNoJDEgPj0gOTUp
IHsKKyAgICAgICAgICAgIGlmIChtYXRjaCQxID49IDEyMykgeworICAgICAgICAgICAgICBpZiAo
bWF0Y2gkMSA+PSAxMjYpIHsKKyAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNo
JDEgLSAxMjMgfCAwKSB7CisgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICB2YXIgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kKHN0cl9pbmQgKyAy
IHwgMCwgZW5kX2luZCwgLyogIn0iICovMTI1KTsKKyAgICAgICAgICAgICAgICAgICAgICBfc3Ry
X2luZCA9IHN1Yl9lbmQgKyAyIHwgMDsKKyAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAg
ZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hhcmFj
dGVyKHN0cl9pbmQgKyAxIHwgMCwgImNoYXJhY3RlciAnKSciLCAvKiAifSIgKi8xMjUpOworICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQxID49IDk2KSB7CisgICAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgIGlmICgoc3RyX2luZCArIDIgfCAwKSA9PT0gZW5kX2luZCkgeworICAgICAgICAg
ICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9m
IGZvcm1hdCIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHZhciBtYXRjaCQyID0g
Q2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCArIDIgfCAwKTsKKyAgICAgICAgICAgICAgaWYg
KG1hdGNoJDIgIT09IDQwKSB7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDIgIT09IDEyMykg
eworICAgICAgICAgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kICsgMyB8IDA7CisgICAgICAg
ICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICB2YXIgc3ViX2Vu
ZCQxID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQoc3RyX2luZCArIDMgfCAwLCBlbmRfaW5kLCAvKiAi
fSIgKi8xMjUpOworICAgICAgICAgICAgICAgICAgX3N0cl9pbmQgPSBzdWJfZW5kJDEgKyAyIHwg
MDsKKyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICB2YXIgc3ViX2VuZCQyID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQoc3RyX2lu
ZCArIDMgfCAwLCBlbmRfaW5kLCAvKiAiKSIgKi80MSk7CisgICAgICAgICAgICAgICAgX3N0cl9p
bmQgPSBzdWJfZW5kJDIgKyAyIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMSAhPT0gNDApIHsKKyAgICAgICAgICAgIGlmICht
YXRjaCQxICE9PSA0MSkgeworICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hhcmFj
dGVyKHN0cl9pbmQgKyAxIHwgMCwgImNoYXJhY3RlciAnfSciLCAvKiAiKSIgKi80MSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFy
IHN1Yl9lbmQkMyA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kKHN0cl9pbmQgKyAyIHwgMCwgZW5kX2lu
ZCwgLyogIikiICovNDEpOworICAgICAgICAgICAgX3N0cl9pbmQgPSBzdWJfZW5kJDMgKyAyIHwg
MDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAg
ICAgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5k
ICsgMiB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAg
ICB9CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIg
cGFyc2VfY29udmVyc2lvbiA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBlbmRfaW5kLCBw
bHVzLCBzaGFycCwgc3BhY2UsIGlnbiwgcGFkLCBwcmVjLCBwYWRwcmVjLCBzeW1iKSB7CisgICAg
dmFyIHBsdXNfdXNlZCA9IC8qIGZhbHNlICovMDsKKyAgICB2YXIgc2hhcnBfdXNlZCA9IC8qIGZh
bHNlICovMDsKKyAgICB2YXIgc3BhY2VfdXNlZCA9IC8qIGZhbHNlICovMDsKKyAgICB2YXIgaWdu
X3VzZWQgPSBbLyogZmFsc2UgKi8wXTsKKyAgICB2YXIgcGFkX3VzZWQgPSAvKiBmYWxzZSAqLzA7
CisgICAgdmFyIHByZWNfdXNlZCA9IFsvKiBmYWxzZSAqLzBdOworICAgIHZhciBjaGVja19ub18w
ID0gZnVuY3Rpb24gKHN5bWIsIHBhZCkgeworICAgICAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1i
ZXIiKSB7CisgICAgICAgIHJldHVybiBwYWQ7CisgICAgICB9CisgICAgICBlbHNlIGlmIChwYWQu
dGFnKSB7CisgICAgICAgIGlmIChwYWRbMF0gPj0gMikgeworICAgICAgICAgIGlmIChsZWdhY3lf
YmVoYXZpb3IkMSkgeworICAgICAgICAgICAgcmV0dXJuIC8qIEFyZ19wYWRkaW5nICovQmxvY2su
X18oMSwgWy8qIFJpZ2h0ICovMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1i
LCAiMCIpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICByZXR1cm4gcGFkOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChwYWRbMF0g
Pj0gMikgeworICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICByZXR1
cm4gLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgIC8q
IFJpZ2h0ICovMSwKKyAgICAgICAgICAgICAgICAgICAgcGFkWzFdCisgICAgICAgICAgICAgICAg
ICBdKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gaW5jb21w
YXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIjAiKTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBwYWQ7CisgICAgICB9CisgICAgfTsK
KyAgICB2YXIgb3B0X29mX3BhZCA9IGZ1bmN0aW9uIChjLCBwYWQpIHsKKyAgICAgIGlmICh0eXBl
b2YgcGFkID09PSAibnVtYmVyIikgeworICAgICAgICByZXR1cm4gLyogTm9uZSAqLzA7CisgICAg
ICB9CisgICAgICBlbHNlIGlmIChwYWQudGFnKSB7CisgICAgICAgIHJldHVybiBpbmNvbXBhdGli
bGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBjLCAiJyonIik7CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgc3dpdGNoIChwYWRbMF0pIHsKKyAgICAgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIFNvbWUgKi9bcGFkWzFdXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3Ry
X2luZCwgYywgIictJyIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgY2FzZSAxIDogCisg
ICAgICAgICAgICAgIHJldHVybiAvKiBTb21lICovW3BhZFsxXV07CisgICAgICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBTb21lICovW3BhZFsxXV07CisgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBj
dF9pbmQsIHN0cl9pbmQsIGMsICInMCciKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIAor
ICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgICB2YXIgZ2V0X3ByZWNfb3B0ID0gZnVuY3Rp
b24gKCkgeworICAgICAgcHJlY191c2VkWzBdID0gLyogdHJ1ZSAqLzE7CisgICAgICBpZiAodHlw
ZW9mIHByZWMgPT09ICJudW1iZXIiKSB7CisgICAgICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAg
ICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICJfIiAq
Lzk1LCAiJyonIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJu
IC8qIE5vbmUgKi8wOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIC8qIFNvbWUgKi9bcHJlY1swXV07CisgICAgICB9CisgICAgfTsKKyAgICB2YXIgZm10
X3Jlc3VsdDsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgdmFy
IGV4aXQkMiA9IDA7CisgICAgaWYgKHN5bWIgPj0gMTI0KSB7CisgICAgICBleGl0JDEgPSA2Owor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoc3ltYikgeworICAgICAgICBjYXNlIDMz
IDogCisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9p
bmQsIGVuZF9pbmQpOworICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyog
Rmx1c2ggKi9CbG9jay5fXygxMCwgW21hdGNoWzBdXSldOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgNDAgOiAKKyAgICAgICAgICAgIHZhciBzdWJfZW5kID0gc2VhcmNoX3N1YmZv
cm1hdF9lbmQoc3RyX2luZCwgZW5kX2luZCwgLyogIikiICovNDEpOworICAgICAgICAgICAgdmFy
IGJlZ19pbmQgPSBzdWJfZW5kICsgMiB8IDA7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHBh
cnNlX2xpdGVyYWwoYmVnX2luZCwgYmVnX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIg
Zm10X3Jlc3QgPSBtYXRjaCQxWzBdOworICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBwYXJzZV9s
aXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIHN1Yl9lbmQpOworICAgICAgICAgICAgdmFyIHN1Yl9m
bXR0eSA9IGZtdHR5X29mX2ZtdChtYXRjaCQyWzBdKTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNl
ZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0
cnVlICovMTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWRfMDAwID0gb3B0X29mX3BhZCgvKiAi
XyIgKi85NSwgcGFkKTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQgPSAvKiBJZ25vcmVkX2Zv
cm1hdF9zdWJzdCAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgIGlnbm9yZWRfMDAw
LAorICAgICAgICAgICAgICAgICAgc3ViX2ZtdHR5CisgICAgICAgICAgICAgICAgXSk7CisgICAg
ICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9C
bG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICBpZ25vcmVkLAorICAgICAgICAgICAg
ICAgICAgICBmbXRfcmVzdAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7
CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIEZvcm1hdF9zdWJz
dCAqL0Jsb2NrLl9fKDE0LCBbCisgICAgICAgICAgICAgICAgICAgIG9wdF9vZl9wYWQoLyogIigi
ICovNDAsIHBhZCksCisgICAgICAgICAgICAgICAgICAgIHN1Yl9mbXR0eSwKKyAgICAgICAgICAg
ICAgICAgICAgZm10X3Jlc3QKKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ0IDogCisgICAgICAgICAgICBmbXRf
cmVzdWx0ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM3IDogCisgICAgICAgIGNhc2UgNjQgOiAKKyAg
ICAgICAgICAgIGV4aXQkMSA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2
NyA6IAorICAgICAgICAgICAgdmFyIG1hdGNoJDMgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0
cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDEgPSBtYXRjaCQzWzBd
OworICAgICAgICAgICAgZm10X3Jlc3VsdCA9IChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBp
Z24pID8gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAg
ICAgICAgICAgICAgICAgICAgLyogSWdub3JlZF9jYW1sX2NoYXIgKi8xLAorICAgICAgICAgICAg
ICAgICAgICBmbXRfcmVzdCQxCisgICAgICAgICAgICAgICAgICBdKV0gOiAvKiBGbXRfRUJCICov
Wy8qIENhbWxfY2hhciAqL0Jsb2NrLl9fKDEsIFtmbXRfcmVzdCQxXSldOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgNzggOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gcGFy
c2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBm
bXRfcmVzdCQyID0gbWF0Y2gkNFswXTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8q
IHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQkMSA9IC8qIElnbm9y
ZWRfc2Nhbl9nZXRfY291bnRlciAqL0Jsb2NrLl9fKDEwLCBbLyogVG9rZW5fY291bnRlciAqLzJd
KTsKKyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9w
YXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQkMSwKKyAg
ICAgICAgICAgICAgICAgICAgZm10X3Jlc3QkMgorICAgICAgICAgICAgICAgICAgXSldOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQg
PSAvKiBGbXRfRUJCICovWy8qIFNjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwgWworICAg
ICAgICAgICAgICAgICAgICAvKiBUb2tlbl9jb3VudGVyICovMiwKKyAgICAgICAgICAgICAgICAg
ICAgZm10X3Jlc3QkMgorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgODMgOiAKKyAgICAgICAgICAgIHBhZF91c2Vk
ID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgcGFkJDEgPSBjaGVja19ub18wKHN5bWIs
IHBhZHByZWMpOworICAgICAgICAgICAgdmFyIG1hdGNoJDUgPSBwYXJzZV9saXRlcmFsKHN0cl9p
bmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDMgPSBtYXRj
aCQ1WzBdOworICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikg
eworICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICB2
YXIgaWdub3JlZCQyID0gLyogSWdub3JlZF9jYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDEsIFtvcHRf
b2ZfcGFkKC8qICJfIiAqLzk1LCBwYWRwcmVjKV0pOworICAgICAgICAgICAgICBmbXRfcmVzdWx0
ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAg
ICAgICAgICAgICAgICAgaWdub3JlZCQyLAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQz
CisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgdmFyIG1hdGNoJDYgPSBtYWtlX3BhZGRpbmdfZm10X2ViYihwYWQk
MSwgZm10X3Jlc3QkMyk7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICov
Wy8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICBtYXRj
aCQ2WzBdLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQ2WzFdCisgICAgICAgICAgICAgICAg
ICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA5
MSA6IAorICAgICAgICAgICAgdmFyIG1hdGNoJDcgPSBwYXJzZV9jaGFyX3NldChzdHJfaW5kLCBl
bmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBjaGFyX3NldCA9IG1hdGNoJDdbMV07CisgICAgICAg
ICAgICB2YXIgbmV4dF9pbmQgPSBtYXRjaCQ3WzBdOworICAgICAgICAgICAgdmFyIG1hdGNoJDgg
PSBwYXJzZV9saXRlcmFsKG5leHRfaW5kLCBuZXh0X2luZCwgZW5kX2luZCk7CisgICAgICAgICAg
ICB2YXIgZm10X3Jlc3QkNCA9IG1hdGNoJDhbMF07CisgICAgICAgICAgICBpZiAoaWduX3VzZWRb
MF0gPSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMCQxID0gb3B0X29mX3BhZCgvKiAi
XyIgKi85NSwgcGFkKTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQkMyA9IC8qIElnbm9yZWRf
c2Nhbl9jaGFyX3NldCAqL0Jsb2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAgIGlnbm9yZWRf
MDAwJDEsCisgICAgICAgICAgICAgICAgICBjaGFyX3NldAorICAgICAgICAgICAgICAgIF0pOwor
ICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFt
ICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlZCQzLAorICAgICAg
ICAgICAgICAgICAgICBmbXRfcmVzdCQ0CisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0
cnVlICovMTsKKyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogU2Nh
bl9jaGFyX3NldCAqL0Jsb2NrLl9fKDIwLCBbCisgICAgICAgICAgICAgICAgICAgIG9wdF9vZl9w
YWQoLyogIlsiICovOTEsIHBhZCksCisgICAgICAgICAgICAgICAgICAgIGNoYXJfc2V0LAorICAg
ICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ0CisgICAgICAgICAgICAgICAgICBdKV07CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzMiA6IAorICAgICAg
ICBjYXNlIDM1IDogCisgICAgICAgIGNhc2UgNDMgOiAKKyAgICAgICAgY2FzZSA0NSA6IAorICAg
ICAgICBjYXNlIDk1IDogCisgICAgICAgICAgICBleGl0JDEgPSA1OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgOTcgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gcGFyc2Vf
bGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIGZtdF9yZXN1
bHQgPSAvKiBGbXRfRUJCICovWy8qIEFscGhhICovQmxvY2suX18oMTUsIFttYXRjaCQ5WzBdXSld
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNjYgOiAKKyAgICAgICAgY2FzZSA5
OCA6IAorICAgICAgICAgICAgZXhpdCQxID0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIDk5IDogCisgICAgICAgICAgICB2YXIgY2hhcl9mb3JtYXQgPSBmdW5jdGlvbiAoZm10
X3Jlc3QpIHsKKyAgICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGln
bikgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFy
YW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9y
ZWRfY2hhciAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3QKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIENoYXIgKi9C
bG9jay5fXygwLCBbZm10X3Jlc3RdKV07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07
CisgICAgICAgICAgICB2YXIgc2Nhbl9mb3JtYXQgPSBmdW5jdGlvbiAoZm10X3Jlc3QpIHsKKyAg
ICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5f
XygyMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfc2Nhbl9uZXh0
X2NoYXIgKi80LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0CisgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBTY2FuX25leHRf
Y2hhciAqL0Jsb2NrLl9fKDIyLCBbZm10X3Jlc3RdKV07CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSBwYXJzZV9saXRlcmFsKHN0cl9p
bmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDUgPSBtYXRj
aCQxMFswXTsKKyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAg
ICB2YXIgbWF0Y2gkMTEgPSBvcHRfb2ZfcGFkKC8qICJjIiAqLzk5LCBwYWQpOworICAgICAgICAg
ICAgZm10X3Jlc3VsdCA9IG1hdGNoJDExID8gKAorICAgICAgICAgICAgICAgIG1hdGNoJDExWzBd
ICE9PSAwID8gKAorICAgICAgICAgICAgICAgICAgICBsZWdhY3lfYmVoYXZpb3IkMSA/IGNoYXJf
Zm9ybWF0KGZtdF9yZXN0JDUpIDogaW52YWxpZF9mb3JtYXRfbWVzc2FnZShzdHJfaW5kLCAibm9u
LXplcm8gd2lkdGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnMiKQorICAgICAg
ICAgICAgICAgICAgKSA6IHNjYW5fZm9ybWF0KGZtdF9yZXN0JDUpCisgICAgICAgICAgICAgICkg
OiBjaGFyX2Zvcm1hdChmbXRfcmVzdCQ1KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIDY5IDogCisgICAgICAgIGNhc2UgNzAgOiAKKyAgICAgICAgY2FzZSA3MSA6IAorICAgICAg
ICBjYXNlIDEwMSA6IAorICAgICAgICBjYXNlIDEwMiA6IAorICAgICAgICBjYXNlIDEwMyA6IAor
ICAgICAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IDc2IDogCisgICAgICAgIGNhc2UgMTA4IDogCisgICAgICAgIGNhc2UgMTEwIDogCisgICAgICAg
ICAgICBleGl0JDIgPSA4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTE0IDog
CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTIgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9p
bmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDYgPSBtYXRjaCQxMlswXTsK
KyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWdu
KSA/IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisgICAg
ICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfcmVhZGVyICovMywKKyAgICAgICAgICAgICAgICAg
ICAgZm10X3Jlc3QkNgorICAgICAgICAgICAgICAgICAgXSldIDogLyogRm10X0VCQiAqL1svKiBS
ZWFkZXIgKi9CbG9jay5fXygxOSwgW2ZtdF9yZXN0JDZdKV07CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAxMTUgOiAKKyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7
CisgICAgICAgICAgICB2YXIgcGFkJDIgPSBjaGVja19ub18wKHN5bWIsIHBhZHByZWMpOworICAg
ICAgICAgICAgdmFyIG1hdGNoJDEzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBl
bmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBmbXRfcmVzdCQ3ID0gbWF0Y2gkMTNbMF07CisgICAg
ICAgICAgICBpZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAg
ICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkJDQg
PSAvKiBJZ25vcmVkX3N0cmluZyAqL0Jsb2NrLl9fKDAsIFtvcHRfb2ZfcGFkKC8qICJfIiAqLzk1
LCBwYWRwcmVjKV0pOworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1sv
KiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgaWdu
b3JlZCQ0LAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ3CisgICAgICAgICAgICAgICAg
ICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
dmFyIG1hdGNoJDE0ID0gbWFrZV9wYWRkaW5nX2ZtdF9lYmIocGFkJDIsIGZtdF9yZXN0JDcpOwor
ICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBTdHJpbmcgKi9CbG9j
ay5fXygyLCBbCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE0WzBdLAorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQxNFsxXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTE2IDogCisgICAgICAgICAgICB2
YXIgbWF0Y2gkMTUgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOwor
ICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogVGhldGEgKi9CbG9jay5f
XygxNiwgW21hdGNoJDE1WzBdXSldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
ODggOiAKKyAgICAgICAgY2FzZSAxMDAgOiAKKyAgICAgICAgY2FzZSAxMDUgOiAKKyAgICAgICAg
Y2FzZSAxMTEgOiAKKyAgICAgICAgY2FzZSAxMTcgOiAKKyAgICAgICAgY2FzZSAxMjAgOiAKKyAg
ICAgICAgICAgIGV4aXQkMiA9IDc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAw
IDogCisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgY2FzZSAz
IDogCisgICAgICAgIGNhc2UgNCA6IAorICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgY2FzZSA2
IDogCisgICAgICAgIGNhc2UgNyA6IAorICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgY2FzZSA5
IDogCisgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICBjYXNl
IDEyIDogCisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICBj
YXNlIDE1IDogCisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgY2FzZSAxNyA6IAorICAgICAg
ICBjYXNlIDE4IDogCisgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgY2FzZSAyMCA6IAorICAg
ICAgICBjYXNlIDIxIDogCisgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgY2FzZSAyMyA6IAor
ICAgICAgICBjYXNlIDI0IDogCisgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAgY2FzZSAyNiA6
IAorICAgICAgICBjYXNlIDI3IDogCisgICAgICAgIGNhc2UgMjggOiAKKyAgICAgICAgY2FzZSAy
OSA6IAorICAgICAgICBjYXNlIDMwIDogCisgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgY2Fz
ZSAzNCA6IAorICAgICAgICBjYXNlIDM2IDogCisgICAgICAgIGNhc2UgMzggOiAKKyAgICAgICAg
Y2FzZSAzOSA6IAorICAgICAgICBjYXNlIDQxIDogCisgICAgICAgIGNhc2UgNDIgOiAKKyAgICAg
ICAgY2FzZSA0NiA6IAorICAgICAgICBjYXNlIDQ3IDogCisgICAgICAgIGNhc2UgNDggOiAKKyAg
ICAgICAgY2FzZSA0OSA6IAorICAgICAgICBjYXNlIDUwIDogCisgICAgICAgIGNhc2UgNTEgOiAK
KyAgICAgICAgY2FzZSA1MiA6IAorICAgICAgICBjYXNlIDUzIDogCisgICAgICAgIGNhc2UgNTQg
OiAKKyAgICAgICAgY2FzZSA1NSA6IAorICAgICAgICBjYXNlIDU2IDogCisgICAgICAgIGNhc2Ug
NTcgOiAKKyAgICAgICAgY2FzZSA1OCA6IAorICAgICAgICBjYXNlIDU5IDogCisgICAgICAgIGNh
c2UgNjAgOiAKKyAgICAgICAgY2FzZSA2MSA6IAorICAgICAgICBjYXNlIDYyIDogCisgICAgICAg
IGNhc2UgNjMgOiAKKyAgICAgICAgY2FzZSA2NSA6IAorICAgICAgICBjYXNlIDY4IDogCisgICAg
ICAgIGNhc2UgNzIgOiAKKyAgICAgICAgY2FzZSA3MyA6IAorICAgICAgICBjYXNlIDc0IDogCisg
ICAgICAgIGNhc2UgNzUgOiAKKyAgICAgICAgY2FzZSA3NyA6IAorICAgICAgICBjYXNlIDc5IDog
CisgICAgICAgIGNhc2UgODAgOiAKKyAgICAgICAgY2FzZSA4MSA6IAorICAgICAgICBjYXNlIDgy
IDogCisgICAgICAgIGNhc2UgODQgOiAKKyAgICAgICAgY2FzZSA4NSA6IAorICAgICAgICBjYXNl
IDg2IDogCisgICAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgY2FzZSA4OSA6IAorICAgICAgICBj
YXNlIDkwIDogCisgICAgICAgIGNhc2UgOTIgOiAKKyAgICAgICAgY2FzZSA5MyA6IAorICAgICAg
ICBjYXNlIDk0IDogCisgICAgICAgIGNhc2UgOTYgOiAKKyAgICAgICAgY2FzZSAxMDQgOiAKKyAg
ICAgICAgY2FzZSAxMDYgOiAKKyAgICAgICAgY2FzZSAxMDcgOiAKKyAgICAgICAgY2FzZSAxMDkg
OiAKKyAgICAgICAgY2FzZSAxMTIgOiAKKyAgICAgICAgY2FzZSAxMTMgOiAKKyAgICAgICAgY2Fz
ZSAxMTggOiAKKyAgICAgICAgY2FzZSAxMTkgOiAKKyAgICAgICAgY2FzZSAxMjEgOiAKKyAgICAg
ICAgY2FzZSAxMjIgOiAKKyAgICAgICAgICAgIGV4aXQkMSA9IDY7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAxMjMgOiAKKyAgICAgICAgICAgIHZhciBzdWJfZW5kJDEgPSBzZWFy
Y2hfc3ViZm9ybWF0X2VuZChzdHJfaW5kLCBlbmRfaW5kLCAvKiAifSIgKi8xMjUpOworICAgICAg
ICAgICAgdmFyIG1hdGNoJDE2ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBzdWJf
ZW5kJDEpOworICAgICAgICAgICAgdmFyIGJlZ19pbmQkMSA9IHN1Yl9lbmQkMSArIDIgfCAwOwor
ICAgICAgICAgICAgdmFyIG1hdGNoJDE3ID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDEsIGJlZ19p
bmQkMSwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIgZm10X3Jlc3QkOCA9IG1hdGNoJDE3WzBd
OworICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eSQxID0gZm10dHlfb2ZfZm10KG1hdGNoJDE2WzBd
KTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAg
ICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgICAgdmFyIGln
bm9yZWRfMDAwJDIgPSBvcHRfb2ZfcGFkKC8qICJfIiAqLzk1LCBwYWQpOworICAgICAgICAgICAg
ICB2YXIgaWdub3JlZCQ1ID0gLyogSWdub3JlZF9mb3JtYXRfYXJnICovQmxvY2suX18oNywgWwor
ICAgICAgICAgICAgICAgICAgaWdub3JlZF8wMDAkMiwKKyAgICAgICAgICAgICAgICAgIHN1Yl9m
bXR0eSQxCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAv
KiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAg
ICAgICAgICAgICBpZ25vcmVkJDUsCisgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDgKKyAg
ICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICBmbXRf
cmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBGb3JtYXRfYXJnICovQmxvY2suX18oMTMsIFsKKyAg
ICAgICAgICAgICAgICAgICAgb3B0X29mX3BhZCgvKiAieyIgKi8xMjMsIHBhZCksCisgICAgICAg
ICAgICAgICAgICAgIHN1Yl9mbXR0eSQxLAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ4
CisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIHN3aXRjaCAoZXhpdCQyKSB7CisgICAg
ICBjYXNlIDcgOiAKKyAgICAgICAgICBwbHVzX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAg
ICBzaGFycF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgc3BhY2VfdXNlZCA9IC8qIHRy
dWUgKi8xOworICAgICAgICAgIHZhciBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYocGN0X2luZCwg
c3RyX2luZCwgcGx1cywgc2hhcnAsIHNwYWNlLCBzeW1iKTsKKyAgICAgICAgICB2YXIgbWF0Y2gk
MTggPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAg
IHZhciBmbXRfcmVzdCQ5ID0gbWF0Y2gkMThbMF07CisgICAgICAgICAgaWYgKGlnbl91c2VkWzBd
ID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICov
MTsKKyAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMSA9IG9wdF9vZl9wYWQoLyogIl8iICovOTUs
IHBhZCk7CisgICAgICAgICAgICB2YXIgaWdub3JlZCQ2ID0gLyogSWdub3JlZF9pbnQgKi9CbG9j
ay5fXygyLCBbCisgICAgICAgICAgICAgICAgaWNvbnYsCisgICAgICAgICAgICAgICAgaWdub3Jl
ZF8wMDEKKyAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10
X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAg
ICAgIGlnbm9yZWQkNiwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDkKKyAgICAgICAgICAg
ICAgICBdKV07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFk
X3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgIHByZWNfdXNlZFswXSA9IC8qIHRydWUg
Ki8xOworICAgICAgICAgICAgdmFyIHBhZCQzOworICAgICAgICAgICAgdmFyIGV4aXQkMyA9IDA7
CisgICAgICAgICAgICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiICYmIHByZWMgPT09IDAp
IHsKKyAgICAgICAgICAgICAgcGFkJDMgPSBwYWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQzID0gOTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChleGl0JDMgPT09IDkpIHsKKyAgICAgICAgICAgICAgcGFkJDMgPSB0eXBlb2Yg
cGFkID09PSAibnVtYmVyIiA/IC8qIE5vX3BhZGRpbmcgKi8wIDogKAorICAgICAgICAgICAgICAg
ICAgcGFkLnRhZyA/ICgKKyAgICAgICAgICAgICAgICAgICAgICBwYWRbMF0gPj0gMiA/ICgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5X2JlaGF2aW9yJDEgPyAvKiBBcmdfcGFkZGlu
ZyAqL0Jsb2NrLl9fKDEsIFsvKiBSaWdodCAqLzFdKSA6IGluY29tcGF0aWJsZV9mbGFnKHBjdF9p
bmQsIHN0cl9pbmQsIC8qICIwIiAqLzQ4LCAicHJlY2lzaW9uIikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICkgOiBwYWQKKyAgICAgICAgICAgICAgICAgICAgKSA6ICgKKyAgICAgICAgICAgICAg
ICAgICAgICBwYWRbMF0gPj0gMiA/ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5
X2JlaGF2aW9yJDEgPyAvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogUmlnaHQgKi8xLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYWRbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pIDogaW5j
b21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgLyogIjAiICovNDgsICJwcmVjaXNpb24i
KQorICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHBhZAorICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBtYXRj
aCQxOSA9IG1ha2VfcGFkcHJlY19mbXRfZWJiKHBhZCQzLCAocHJlY191c2VkWzBdID0gLyogdHJ1
ZSAqLzEsIHByZWMpLCBmbXRfcmVzdCQ5KTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBG
bXRfRUJCICovWy8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGljb252
LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMTlbMF0sCisgICAgICAgICAgICAgICAgICBtYXRj
aCQxOVsxXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDE5WzJdCisgICAgICAgICAgICAgICAg
XSldOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOCA6IAorICAg
ICAgICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kIHx8ICFpc19pbnRfYmFzZShDYW1sX3N0cmlu
Zy5nZXQoc3RyLCBzdHJfaW5kKSkpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyMCA9IHBhcnNl
X2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIgZm10
X3Jlc3QkMTAgPSBtYXRjaCQyMFswXTsKKyAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRl
cl9vZl9jaGFyKHN5bWIpOworICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAq
LzEsIGlnbikgeworICAgICAgICAgICAgICB2YXIgaWdub3JlZCQ3ID0gLyogSWdub3JlZF9zY2Fu
X2dldF9jb3VudGVyICovQmxvY2suX18oMTAsIFtjb3VudGVyXSk7CisgICAgICAgICAgICAgIGZt
dF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywg
WworICAgICAgICAgICAgICAgICAgICBpZ25vcmVkJDcsCisgICAgICAgICAgICAgICAgICAgIGZt
dF9yZXN0JDEwCisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyog
U2Nhbl9nZXRfY291bnRlciAqL0Jsb2NrLl9fKDIxLCBbCisgICAgICAgICAgICAgICAgICAgIGNv
dW50ZXIsCisgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEwCisgICAgICAgICAgICAgICAg
ICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgZXhpdCQxID0gNjsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAg
ICAKKyAgICB9CisgICAgc3dpdGNoIChleGl0JDEpIHsKKyAgICAgIGNhc2UgMiA6IAorICAgICAg
ICAgIHBsdXNfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgIHNwYWNlX3VzZWQgPSAvKiB0
cnVlICovMTsKKyAgICAgICAgICB2YXIgZmNvbnYgPSBjb21wdXRlX2Zsb2F0X2NvbnYocGN0X2lu
ZCwgc3RyX2luZCwgcGx1cywgc3BhY2UsIHN5bWIpOworICAgICAgICAgIHZhciBtYXRjaCQyMSA9
IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgdmFy
IGZtdF9yZXN0JDExID0gbWF0Y2gkMjFbMF07CisgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0g
LyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsK
KyAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMCQzID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwg
cGFkKTsKKyAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMSQxID0gZ2V0X3ByZWNfb3B0KC8qICgp
ICovMCk7CisgICAgICAgICAgICB2YXIgaWdub3JlZCQ4ID0gLyogSWdub3JlZF9mbG9hdCAqL0Js
b2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAgICBpZ25vcmVkXzAwMCQzLAorICAgICAgICAgICAg
ICAgIGlnbm9yZWRfMDAxJDEKKyAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBmbXRfcmVz
dWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAg
ICAgICAgICAgICAgICAgIGlnbm9yZWQkOCwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEx
CisgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgbWF0Y2gk
MjIgPSBtYWtlX3BhZHByZWNfZm10X2ViYihwYWQsIChwcmVjX3VzZWRbMF0gPSAvKiB0cnVlICov
MSwgcHJlYyksIGZtdF9yZXN0JDExKTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRf
RUJCICovWy8qIEZsb2F0ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgZmNvbnYs
CisgICAgICAgICAgICAgICAgICBtYXRjaCQyMlswXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNo
JDIyWzFdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMjJbMl0KKyAgICAgICAgICAgICAgICBd
KV07CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAg
ICAgICAgdmFyIG1hdGNoJDIzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRf
aW5kKTsKKyAgICAgICAgICB2YXIgZm10X3Jlc3QkMTIgPSBtYXRjaCQyM1swXTsKKyAgICAgICAg
ICBmbXRfcmVzdWx0ID0gKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgPyAvKiBGbXRf
RUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICAg
ICAgLyogSWdub3JlZF9ib29sICovMiwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEyCisg
ICAgICAgICAgICAgICAgXSldIDogLyogRm10X0VCQiAqL1svKiBCb29sICovQmxvY2suX18oOSwg
W2ZtdF9yZXN0JDEyXSldOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA0IDogCisgICAg
ICAgICAgdmFyIG1hdGNoJDI0ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRf
aW5kKTsKKyAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBDaGFyX2xpdGVy
YWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgIHN5bWIsCisgICAgICAgICAgICAg
ICAgbWF0Y2gkMjRbMF0KKyAgICAgICAgICAgICAgXSldOworICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSA1IDogCisgICAgICAgICAgZm10X3Jlc3VsdCA9IEN1cnJ5Ll8zKGZhaWx3aXRoX21l
c3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJh
bCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3Jt
YXQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18o
MywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEs
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXQgY2hhcmFjdGVyIG51bWJl
ciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Js
b2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwg
ZmxhZyAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxf
Y2hhciAqL0Jsb2NrLl9fKDEsIFsvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGlzIG9ubHkg
YWxsb3dlZCBhZnRlciB0aGUgJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICIlIiAqLzM3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0
cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIicsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVj
aXNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAg
ICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1h
dCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0
ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb24iCisgICAgICAgICAgICAg
ICAgICBdKSwgc3RyLCBwY3RfaW5kLCBzeW1iKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgNiA6IAorICAgICAgICAgIGlmIChzeW1iID49IDEwOCkgeworICAgICAgICAgICAgaWYgKHN5
bWIgPj0gMTExKSB7CisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHN3aXRjaCAoc3ltYiAtIDEwOCB8IDApIHsK
KyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgcGx1c191c2Vk
ID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgICAgICAgIHNoYXJwX3VzZWQgPSAvKiB0cnVl
ICovMTsKKyAgICAgICAgICAgICAgICAgICAgc3BhY2VfdXNlZCA9IC8qIHRydWUgKi8xOworICAg
ICAgICAgICAgICAgICAgICB2YXIgaWNvbnYkMSA9IGNvbXB1dGVfaW50X2NvbnYocGN0X2luZCwg
c3RyX2luZCArIDEgfCAwLCBwbHVzLCBzaGFycCwgc3BhY2UsIENhbWxfc3RyaW5nLmdldChzdHIs
IHN0cl9pbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkMiA9IHN0cl9pbmQg
KyAxIHwgMDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDI1ID0gcGFyc2VfbGl0ZXJh
bChiZWdfaW5kJDIsIGJlZ19pbmQkMiwgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgICAgIHZh
ciBmbXRfcmVzdCQxMyA9IG1hdGNoJDI1WzBdOworICAgICAgICAgICAgICAgICAgICBpZiAoaWdu
X3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgICAgICAgICAgcGFk
X3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgaWdub3JlZF8w
MDEkMiA9IG9wdF9vZl9wYWQoLyogIl8iICovOTUsIHBhZCk7CisgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGlnbm9yZWQkOSA9IC8qIElnbm9yZWRfaW50MzIgKi9CbG9jay5fXygzLCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGljb252JDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGlnbm9yZWRfMDAxJDIKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAg
ICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9C
bG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQkOSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQxMworICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAg
ICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMjYgPSBtYWtlX3BhZHByZWNfZm10X2ViYihw
YWQsIChwcmVjX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgcHJlYyksIGZtdF9yZXN0JDEzKTsKKyAg
ICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJbnQzMiAq
L0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29udiQxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI2WzBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoJDI2WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo
JDI2WzJdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICBwbHVz
X3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgc2hhcnBfdXNlZCA9IC8q
IHRydWUgKi8xOworICAgICAgICAgICAgICAgICAgICBzcGFjZV91c2VkID0gLyogdHJ1ZSAqLzE7
CisgICAgICAgICAgICAgICAgICAgIHZhciBpY29udiQyID0gY29tcHV0ZV9pbnRfY29udihwY3Rf
aW5kLCBzdHJfaW5kICsgMSB8IDAsIHBsdXMsIHNoYXJwLCBzcGFjZSwgQ2FtbF9zdHJpbmcuZ2V0
KHN0ciwgc3RyX2luZCkpOworICAgICAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQzID0gc3Ry
X2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMjcgPSBwYXJzZV9s
aXRlcmFsKGJlZ19pbmQkMywgYmVnX2luZCQzLCBlbmRfaW5kKTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIGZtdF9yZXN0JDE0ID0gbWF0Y2gkMjdbMF07CisgICAgICAgICAgICAgICAgICAgIGlm
IChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgICAgICAg
ICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICAgICAgICAgIHZhciBpZ25v
cmVkXzAwMSQzID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwgcGFkKTsKKyAgICAgICAgICAgICAg
ICAgICAgICB2YXIgaWdub3JlZCQxMCA9IC8qIElnbm9yZWRfbmF0aXZlaW50ICovQmxvY2suX18o
NCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICBpY29udiQyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZ25vcmVkXzAwMSQzCisgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAg
ICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVk
X3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25v
cmVkJDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDE0CisgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRy
dWUgKi8xOworICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQyOCA9IG1ha2VfcGFkcHJl
Y19mbXRfZWJiKHBhZCwgKHByZWNfdXNlZFswXSA9IC8qIHRydWUgKi8xLCBwcmVjKSwgZm10X3Jl
c3QkMTQpOworICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICov
Wy8qIE5hdGl2ZWludCAqL0Jsb2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpY29udiQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI4WzBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI4WzFdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoJDI4WzJdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIGlmIChzeW1iICE9PSA3NikgeworICAgICAgICAgICAgZXhpdCA9IDE7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGx1c191c2VkID0gLyog
dHJ1ZSAqLzE7CisgICAgICAgICAgICBzaGFycF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAg
ICAgICBzcGFjZV91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgaWNvbnYkMyA9
IGNvbXB1dGVfaW50X2NvbnYocGN0X2luZCwgc3RyX2luZCArIDEgfCAwLCBwbHVzLCBzaGFycCwg
c3BhY2UsIENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpKTsKKyAgICAgICAgICAgIHZhciBi
ZWdfaW5kJDQgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMjkgPSBw
YXJzZV9saXRlcmFsKGJlZ19pbmQkNCwgYmVnX2luZCQ0LCBlbmRfaW5kKTsKKyAgICAgICAgICAg
IHZhciBmbXRfcmVzdCQxNSA9IG1hdGNoJDI5WzBdOworICAgICAgICAgICAgaWYgKGlnbl91c2Vk
WzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRy
dWUgKi8xOworICAgICAgICAgICAgICB2YXIgaWdub3JlZF8wMDEkNCA9IG9wdF9vZl9wYWQoLyog
Il8iICovOTUsIHBhZCk7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkJDExID0gLyogSWdub3Jl
ZF9pbnQ2NCAqL0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAgICAgICAgIGljb252JDMsCisgICAg
ICAgICAgICAgICAgICBpZ25vcmVkXzAwMSQ0CisgICAgICAgICAgICAgICAgXSk7CisgICAgICAg
ICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9j
ay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICBpZ25vcmVkJDExLAorICAgICAgICAgICAg
ICAgICAgICBmbXRfcmVzdCQxNQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAq
LzE7CisgICAgICAgICAgICAgIHZhciBtYXRjaCQzMCA9IG1ha2VfcGFkcHJlY19mbXRfZWJiKHBh
ZCwgKHByZWNfdXNlZFswXSA9IC8qIHRydWUgKi8xLCBwcmVjKSwgZm10X3Jlc3QkMTUpOworICAg
ICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJbnQ2NCAqL0Jsb2NrLl9f
KDcsIFsKKyAgICAgICAgICAgICAgICAgICAgaWNvbnYkMywKKyAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkMzBbMF0sCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDMwWzFdLAorICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQzMFsyXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAgICBp
ZiAoZXhpdCA9PT0gMSkgeworICAgICAgZm10X3Jlc3VsdCA9IEN1cnJ5Ll8zKGZhaWx3aXRoX21l
c3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICov
QmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisg
ICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAg
ICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIjogYXQgY2hhcmFjdGVyIG51bWJlciAiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9f
cHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5n
X2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJywgaW52YWxpZCBjb252ZXJzaW9uICInLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAiJSIgKi8zNywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGFyICovQmxvY2suX18oMCwgWy8qIENoYXJf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiAiXCIiICovMzQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAg
XSksCisgICAgICAgICAgICAgICAgJ2ludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVt
YmVyICVkLCBpbnZhbGlkIGNvbnZlcnNpb24gIiUlJWMiJworICAgICAgICAgICAgICBdKSwgc3Ry
LCBzdHJfaW5kIC0gMSB8IDAsIHN5bWIpOworICAgIH0KKyAgICBpZiAoIWxlZ2FjeV9iZWhhdmlv
ciQxKSB7CisgICAgICBpZiAoIXBsdXNfdXNlZCAmJiBwbHVzKSB7CisgICAgICAgIGluY29tcGF0
aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIsICInKyciKTsKKyAgICAgIH0KKyAgICAg
IGlmICghc2hhcnBfdXNlZCAmJiBzaGFycCkgeworICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyhw
Y3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJyMnIik7CisgICAgICB9CisgICAgICBpZiAoIXNwYWNl
X3VzZWQgJiYgc3BhY2UpIHsKKyAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3Ry
X2luZCwgc3ltYiwgIicgJyIpOworICAgICAgfQorICAgICAgaWYgKCFwYWRfdXNlZCAmJiBDYW1s
X29iai5jYW1sX25vdGVxdWFsKC8qIFBhZGRpbmdfRUJCICovW3BhZF0sIC8qIFBhZGRpbmdfRUJC
ICovWy8qIE5vX3BhZGRpbmcgKi8wXSkpIHsKKyAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcocGN0
X2luZCwgc3RyX2luZCwgc3ltYiwgImBwYWRkaW5nJyIpOworICAgICAgfQorICAgICAgaWYgKCFw
cmVjX3VzZWRbMF0gJiYgQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBQcmVjaXNpb25fRUJCICov
W3ByZWNdLCAvKiBQcmVjaXNpb25fRUJCICovWy8qIE5vX3ByZWNpc2lvbiAqLzBdKSkgeworICAg
ICAgICBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBpZ24gPyAvKiAiXyIgKi85
NSA6IHN5bWIsICJgcHJlY2lzaW9uJyIpOworICAgICAgfQorICAgICAgaWYgKGlnbiAmJiBwbHVz
KSB7CisgICAgICAgIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICJfIiAq
Lzk1LCAiJysnIik7CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgaWYgKCFpZ25fdXNlZFsw
XSAmJiBpZ24pIHsKKyAgICAgIHZhciBleGl0JDQgPSAwOworICAgICAgaWYgKHN5bWIgPj0gMzgp
IHsKKyAgICAgICAgaWYgKHN5bWIgIT09IDQ0KSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDY0
KSB7CisgICAgICAgICAgICBleGl0JDQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IGlmICghbGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9IDE7CisgICAg
ICAgICAgfQorICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFsZWdhY3lf
YmVoYXZpb3IkMSkgeworICAgICAgICAgIGV4aXQkNCA9IDE7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICB9CisgICAgICBlbHNlIGlmIChzeW1iICE9PSAzMykgeworICAgICAgICBpZiAoc3lt
YiA+PSAzNykgeworICAgICAgICAgIGlmICghbGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAg
ICAgIGV4aXQkNCA9IDE7CisgICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgIGV4aXQkNCA9IDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKCFsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICBleGl0JDQgPSAxOwor
ICAgICAgfQorICAgICAgaWYgKGV4aXQkNCA9PT0gMSkgeworICAgICAgICBpbmNvbXBhdGlibGVf
ZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJ18nIik7CisgICAgICB9CisgICAgICAKKyAg
ICB9CisgICAgcmV0dXJuIGZtdF9yZXN1bHQ7CisgIH07CisgIHZhciBwYXJzZV9mbGFncyA9IGZ1
bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBlbmRfaW5kLCBpZ24pIHsKKyAgICB2YXIgemVybyA9
IFsvKiBmYWxzZSAqLzBdOworICAgIHZhciBtaW51cyA9IFsvKiBmYWxzZSAqLzBdOworICAgIHZh
ciBwbHVzID0gWy8qIGZhbHNlICovMF07CisgICAgdmFyIHNwYWNlID0gWy8qIGZhbHNlICovMF07
CisgICAgdmFyIHNoYXJwID0gWy8qIGZhbHNlICovMF07CisgICAgdmFyIHNldF9mbGFnID0gZnVu
Y3Rpb24gKHN0cl9pbmQsIGZsYWcpIHsKKyAgICAgIGlmIChmbGFnWzBdICYmICFsZWdhY3lfYmVo
YXZpb3IkMSkgeworICAgICAgICBDdXJyeS5fMyhmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAq
L1sKKyAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsK
KyAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICI6IGF0IGNoYXJhY3RlciBudW1iZXIgIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBJbnRfZCAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Tm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBT
dHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIsIGR1cGxpY2F0ZSBmbGFnICIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIENhbWxfY2hhciAqL0Jsb2NrLl9fKDEsIFsvKiBFbmRfb2ZfZm9y
bWF0ICovMF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pCisgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICBdKSwK
KyAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJl
ciAlZCwgZHVwbGljYXRlIGZsYWcgJUMiCisgICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2lu
ZCwgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCkpOworICAgICAgfQorICAgICAgZmxhZ1sw
XSA9IC8qIHRydWUgKi8xOworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9OworICAgIHZh
ciBfc3RyX2luZCA9IHN0cl9pbmQ7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHN0cl9p
bmQkMSA9IF9zdHJfaW5kOworICAgICAgaWYgKHN0cl9pbmQkMSA9PT0gZW5kX2luZCkgeworICAg
ICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBm
b3JtYXQiKTsKKyAgICAgIH0KKyAgICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChzdHIs
IHN0cl9pbmQkMSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgc3dpdGNoZXIgPSBt
YXRjaCAtIDMyIHwgMDsKKyAgICAgIGlmIChzd2l0Y2hlciA+IDE2IHx8IHN3aXRjaGVyIDwgMCkg
eworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzd2l0
Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgIHNldF9m
bGFnKHN0cl9pbmQkMSwgc3BhY2UpOworICAgICAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQk
MSArIDEgfCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIGNhc2Ug
MyA6IAorICAgICAgICAgICAgICBzZXRfZmxhZyhzdHJfaW5kJDEsIHNoYXJwKTsKKyAgICAgICAg
ICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kJDEgKyAxIHwgMDsKKyAgICAgICAgICAgICAgY29udGlu
dWUgOworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgIHNldF9mbGFnKHN0
cl9pbmQkMSwgcGx1cyk7CisgICAgICAgICAgICAgIF9zdHJfaW5kID0gc3RyX2luZCQxICsgMSB8
IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgY2FzZSAxMyA6IAor
ICAgICAgICAgICAgICBzZXRfZmxhZyhzdHJfaW5kJDEsIG1pbnVzKTsKKyAgICAgICAgICAgICAg
X3N0cl9pbmQgPSBzdHJfaW5kJDEgKyAxIHwgMDsKKyAgICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICBj
YXNlIDQgOiAKKyAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBjYXNlIDYgOiAKKyAgICAg
ICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICBjYXNlIDkgOiAK
KyAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIGNh
c2UgMTQgOiAKKyAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICAgIGV4aXQgPSAxOwor
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDE2IDogCisgICAgICAgICAgICAg
IHNldF9mbGFnKHN0cl9pbmQkMSwgemVybyk7CisgICAgICAgICAgICAgIF9zdHJfaW5kID0gc3Ry
X2luZCQxICsgMSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAg
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgIHZh
ciBwY3RfaW5kJDEgPSBwY3RfaW5kOworICAgICAgICB2YXIgc3RyX2luZCQyID0gc3RyX2luZCQx
OworICAgICAgICB2YXIgZW5kX2luZCQxID0gZW5kX2luZDsKKyAgICAgICAgdmFyIHplcm8kMSA9
IHplcm9bMF07CisgICAgICAgIHZhciBtaW51cyQxID0gbWludXNbMF07CisgICAgICAgIHZhciBw
bHVzJDEgPSBwbHVzWzBdOworICAgICAgICB2YXIgc2hhcnAkMSA9IHNoYXJwWzBdOworICAgICAg
ICB2YXIgc3BhY2UkMSA9IHNwYWNlWzBdOworICAgICAgICB2YXIgaWduJDEgPSBpZ247CisgICAg
ICAgIGlmIChzdHJfaW5kJDIgPT09IGVuZF9pbmQkMSkgeworICAgICAgICAgIGludmFsaWRfZm9y
bWF0X21lc3NhZ2UoZW5kX2luZCQxLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAg
ICAgIH0KKyAgICAgICAgdmFyIHBhZHR5ID0gemVybyQxICE9PSAwID8gKAorICAgICAgICAgICAg
bWludXMkMSAhPT0gMCA/ICgKKyAgICAgICAgICAgICAgICBsZWdhY3lfYmVoYXZpb3IkMSA/IC8q
IExlZnQgKi8wIDogaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCQxLCBzdHJfaW5kJDIsIC8qICIt
IiAqLzQ1LCAiMCIpCisgICAgICAgICAgICAgICkgOiAvKiBaZXJvcyAqLzIKKyAgICAgICAgICAp
IDogKAorICAgICAgICAgICAgbWludXMkMSAhPT0gMCA/IC8qIExlZnQgKi8wIDogLyogUmlnaHQg
Ki8xCisgICAgICAgICAgKTsKKyAgICAgICAgdmFyIG1hdGNoJDEgPSBDYW1sX3N0cmluZy5nZXQo
c3RyLCBzdHJfaW5kJDIpOworICAgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgICAgaWYgKG1h
dGNoJDEgPj0gNDgpIHsKKyAgICAgICAgICBpZiAobWF0Y2gkMSA+PSA1OCkgeworICAgICAgICAg
ICAgZXhpdCQxID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICB2YXIgbWF0Y2gkMiA9IHBhcnNlX3Bvc2l0aXZlKHN0cl9pbmQkMiwgZW5kX2luZCQxLCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBwYXJzZV9hZnRlcl9wYWRkaW5nKHBjdF9pbmQkMSwgbWF0Y2gk
MlswXSwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGlnbiQx
LCAvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFkdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDJbMV0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIF0pKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSBpZiAobWF0Y2gkMSAhPT0gNDIpIHsKKyAgICAgICAgICBleGl0JDEgPSAxOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBwYXJzZV9hZnRlcl9wYWRkaW5nKHBj
dF9pbmQkMSwgc3RyX2luZCQyICsgMSB8IDAsIGVuZF9pbmQkMSwgbWludXMkMSwgcGx1cyQxLCBz
aGFycCQxLCBzcGFjZSQxLCBpZ24kMSwgLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbcGFk
dHldKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMSA9PT0gMSkgeworICAgICAgICAg
IHN3aXRjaCAocGFkdHkpIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAg
IGlmICghbGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgICAgICAgIGludmFsaWRfZm9y
bWF0X3dpdGhvdXQoc3RyX2luZCQyIC0gMSB8IDAsIC8qICItIiAqLzQ1LCAicGFkZGluZyIpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFk
ZGluZyhwY3RfaW5kJDEsIHN0cl9pbmQkMiwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNo
YXJwJDEsIHNwYWNlJDEsIGlnbiQxLCAvKiBOb19wYWRkaW5nICovMCk7CisgICAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhwY3Rf
aW5kJDEsIHN0cl9pbmQkMiwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNw
YWNlJDEsIGlnbiQxLCAvKiBOb19wYWRkaW5nICovMCk7CisgICAgICAgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhwY3RfaW5kJDEsIHN0
cl9pbmQkMiwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGln
biQxLCAvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICB9CisgICAgICAKKyAgICB9OworICB9Owor
ICB2YXIgaXNfaW50X2Jhc2UgPSBmdW5jdGlvbiAoc3ltYikgeworICAgIHZhciBzd2l0Y2hlciA9
IHN5bWIgLSA4OCB8IDA7CisgICAgaWYgKHN3aXRjaGVyID4gMzIgfHwgc3dpdGNoZXIgPCAwKSB7
CisgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3
aXRjaCAoc3dpdGNoZXIpIHsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgIGNhc2UgMiA6IAor
ICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgIGNhc2UgNSA6IAor
ICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgY2FzZSA3IDogCisgICAgICAgIGNhc2UgOCA6IAor
ICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICBjYXNlIDExIDog
CisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICBjYXNlIDE1
IDogCisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICBjYXNl
IDE5IDogCisgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgY2FzZSAyMSA6IAorICAgICAgICBj
YXNlIDIyIDogCisgICAgICAgIGNhc2UgMjQgOiAKKyAgICAgICAgY2FzZSAyNSA6IAorICAgICAg
ICBjYXNlIDI2IDogCisgICAgICAgIGNhc2UgMjcgOiAKKyAgICAgICAgY2FzZSAyOCA6IAorICAg
ICAgICBjYXNlIDMwIDogCisgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgICAgIHJldHVybiAv
KiBmYWxzZSAqLzA7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICBjYXNlIDEyIDogCisgICAg
ICAgIGNhc2UgMTcgOiAKKyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICBjYXNlIDI5IDogCisg
ICAgICAgIGNhc2UgMzIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICAg
ICAgCisgICAgICB9CisgICAgfQorICB9OworICB2YXIgY291bnRlcl9vZl9jaGFyID0gZnVuY3Rp
b24gKHN5bWIpIHsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHN5bWIgPj0gMTA4KSB7Cisg
ICAgICBpZiAoc3ltYiA+PSAxMTEpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChzeW1iIC0gMTA4IHwgMCkgeworICAgICAgICAgIGNh
c2UgMCA6IAorICAgICAgICAgICAgICByZXR1cm4gLyogTGluZV9jb3VudGVyICovMDsKKyAgICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICByZXR1cm4gLyogQ2hhcl9j
b3VudGVyICovMTsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBl
bHNlIGlmIChzeW1iICE9PSA3NikgeworICAgICAgZXhpdCA9IDE7CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgcmV0dXJuIC8qIFRva2VuX2NvdW50ZXIgKi8yOworICAgIH0KKyAgICBpZiAoZXhp
dCA9PT0gMSkgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICJjYW1s
aW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAyNjgzLAorICAgICAgICAgICAgICAz
NAorICAgICAgICAgICAgXQorICAgICAgICAgIF07CisgICAgfQorICAgIAorICB9OworICB2YXIg
cGFyc2VfY2hhcl9zZXQgPSBmdW5jdGlvbiAoc3RyX2luZCwgZW5kX2luZCkgeworICAgIGlmIChz
dHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9p
bmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICB9CisgICAgdmFyIGNoYXJfc2V0
ID0gQnl0ZXMubWFrZSgzMiwgLyogIlwwMDAiICovMCk7CisgICAgdmFyIGFkZF9yYW5nZSA9IGZ1
bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICBmb3IodmFyIGkgPSBjOyBpIDw9IGMkcHJpbWU7
ICsraSl7CisgICAgICAgIGFkZF9pbl9jaGFyX3NldChjaGFyX3NldCwgUGVydmFzaXZlcy5jaGFy
X29mX2ludChpKSk7CisgICAgICB9CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH07Cisg
ICAgdmFyIGZhaWxfc2luZ2xlX3BlcmNlbnQgPSBmdW5jdGlvbiAoc3RyX2luZCkgeworICAgICAg
cmV0dXJuIEN1cnJ5Ll8yKGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAg
ICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIjogJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogIiUiICovMzcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInIGFsb25lIGlzIG5vdCBhY2NlcHRl
ZCBpbiBjaGFyYWN0ZXIgc2V0cywgdXNlICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICIlIiAqLzM3LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENoYXJfbGl0ZXJhbCAq
L0Jsb2NrLl9fKDEyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qICIlIiAqLzM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGluc3Rl
YWQgYXQgcG9zaXRpb24gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVy
YWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAiLiIgKi80NiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zv
cm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzog
JyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIHVzZSAlJSUlIGlu
c3RlYWQgYXQgcG9zaXRpb24gJWQuIgorICAgICAgICAgICAgICAgICAgICBdKSwgc3RyLCBzdHJf
aW5kKTsKKyAgICB9OworICAgIHZhciBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyID0gZnVuY3Rp
b24gKF9zdHJfaW5kLCBlbmRfaW5kLCBfYykgeworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAg
ICB2YXIgYyA9IF9jOworICAgICAgICB2YXIgc3RyX2luZCA9IF9zdHJfaW5kOworICAgICAgICBp
ZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3Nh
Z2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgICB9CisgICAg
ICAgIHZhciBjJHByaW1lID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCk7CisgICAgICAg
IHZhciBleGl0ID0gMDsKKyAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgIGlmIChjJHBy
aW1lID49IDQ2KSB7CisgICAgICAgICAgaWYgKGMkcHJpbWUgIT09IDY0KSB7CisgICAgICAgICAg
ICBpZiAoYyRwcmltZSAhPT0gOTMpIHsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgYWRkX2luX2NoYXJfc2V0
KGNoYXJfc2V0LCBjKTsKKyAgICAgICAgICAgICAgcmV0dXJuIHN0cl9pbmQgKyAxIHwgMDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBl
eGl0JDEgPSAyOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjJHBy
aW1lICE9PSAzNykgeworICAgICAgICAgIGlmIChjJHByaW1lID49IDQ1KSB7CisgICAgICAgICAg
ICB2YXIgc3RyX2luZCQxID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgdmFyIGVuZF9p
bmQkMSA9IGVuZF9pbmQ7CisgICAgICAgICAgICB2YXIgYyQxID0gYzsKKyAgICAgICAgICAgIGlm
IChzdHJfaW5kJDEgPT09IGVuZF9pbmQkMSkgeworICAgICAgICAgICAgICBpbnZhbGlkX2Zvcm1h
dF9tZXNzYWdlKGVuZF9pbmQkMSwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdmFyIGMkcHJpbWUkMSA9IENhbWxfc3RyaW5nLmdldChzdHIs
IHN0cl9pbmQkMSk7CisgICAgICAgICAgICBpZiAoYyRwcmltZSQxICE9PSAzNykgeworICAgICAg
ICAgICAgICBpZiAoYyRwcmltZSQxICE9PSA5MykgeworICAgICAgICAgICAgICAgIGFkZF9yYW5n
ZShjJDEsIGMkcHJpbWUkMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2NoYXJfc2V0
X2NvbnRlbnQoc3RyX2luZCQxICsgMSB8IDAsIGVuZF9pbmQkMSk7CisgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYWRkX2luX2NoYXJfc2V0KGNo
YXJfc2V0LCBjJDEpOworICAgICAgICAgICAgICAgIGFkZF9pbl9jaGFyX3NldChjaGFyX3NldCwg
LyogIi0iICovNDUpOworICAgICAgICAgICAgICAgIHJldHVybiBzdHJfaW5kJDEgKyAxIHwgMDsK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgIGlmICgoc3RyX2luZCQxICsgMSB8IDApID09PSBlbmRfaW5kJDEpIHsKKyAgICAg
ICAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQkMSwgInVuZXhwZWN0ZWQg
ZW5kIG9mIGZvcm1hdCIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHZhciBjJHBy
aW1lJDIgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kJDEgKyAxIHwgMCk7CisgICAgICAg
ICAgICAgIHZhciBleGl0JDIgPSAwOworICAgICAgICAgICAgICBpZiAoYyRwcmltZSQyICE9PSAz
NykgeworICAgICAgICAgICAgICAgIGlmIChjJHByaW1lJDIgIT09IDY0KSB7CisgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFpbF9zaW5nbGVfcGVyY2VudChzdHJfaW5kJDEpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIGV4aXQk
MiA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIGV4aXQkMiA9IDE7CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgaWYgKGV4aXQkMiA9PT0gMSkgeworICAgICAgICAgICAgICAgIGFkZF9yYW5n
ZShjJDEsIGMkcHJpbWUkMik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2NoYXJfc2V0
X2NvbnRlbnQoc3RyX2luZCQxICsgMiB8IDAsIGVuZF9pbmQkMSk7CisgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgIGV4aXQkMSA9IDI7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGV4aXQkMSA9PT0gMikgeworICAgICAgICAgIGlmIChjID09PSAvKiAiJSIgKi8zNykgeworICAg
ICAgICAgICAgYWRkX2luX2NoYXJfc2V0KGNoYXJfc2V0LCBjJHByaW1lKTsKKyAgICAgICAgICAg
IHJldHVybiBwYXJzZV9jaGFyX3NldF9jb250ZW50KHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCk7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAg
ICAgaWYgKGMgPT09IC8qICIlIiAqLzM3KSB7CisgICAgICAgICAgICBmYWlsX3NpbmdsZV9wZXJj
ZW50KHN0cl9pbmQpOworICAgICAgICAgIH0KKyAgICAgICAgICBhZGRfaW5fY2hhcl9zZXQoY2hh
cl9zZXQsIGMpOworICAgICAgICAgIF9jID0gYyRwcmltZTsKKyAgICAgICAgICBfc3RyX2luZCA9
IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICB9OworICAgIH07CisgICAgdmFyIHBhcnNlX2NoYXJfc2V0
X2NvbnRlbnQgPSBmdW5jdGlvbiAoX3N0cl9pbmQsIGVuZF9pbmQpIHsKKyAgICAgIHdoaWxlKHRy
dWUpIHsKKyAgICAgICAgdmFyIHN0cl9pbmQgPSBfc3RyX2luZDsKKyAgICAgICAgaWYgKHN0cl9p
bmQgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9p
bmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAgICAgfQorICAgICAgICB2YXIg
YyA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAgICBpZiAoYyAhPT0gNDUp
IHsKKyAgICAgICAgICBpZiAoYyAhPT0gOTMpIHsKKyAgICAgICAgICAgIHJldHVybiBwYXJzZV9j
aGFyX3NldF9hZnRlcl9jaGFyKHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCwgYyk7CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN0cl9pbmQgKyAxIHwg
MDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgYWRk
X2luX2NoYXJfc2V0KGNoYXJfc2V0LCAvKiAiLSIgKi80NSk7CisgICAgICAgICAgX3N0cl9pbmQg
PSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAg
ICAgICB9CisgICAgICB9OworICAgIH07CisgICAgdmFyIHBhcnNlX2NoYXJfc2V0X3N0YXJ0ID0g
ZnVuY3Rpb24gKHN0cl9pbmQsIGVuZF9pbmQpIHsKKyAgICAgIGlmIChzdHJfaW5kID09PSBlbmRf
aW5kKSB7CisgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0
ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgfQorICAgICAgdmFyIGMgPSBDYW1sX3N0cmluZy5n
ZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgIHJldHVybiBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFy
KHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCwgYyk7CisgICAgfTsKKyAgICBpZiAoc3RyX2luZCA9
PT0gZW5kX2luZCkgeworICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAidW5l
eHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgfQorICAgIHZhciBtYXRjaCA9IENhbWxfc3Ry
aW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgIHZhciBtYXRjaCQxID0gbWF0Y2ggIT09IDk0ID8g
LyogdHVwbGUgKi9bCisgICAgICAgIHN0cl9pbmQsCisgICAgICAgIC8qIGZhbHNlICovMAorICAg
ICAgXSA6IC8qIHR1cGxlICovWworICAgICAgICBzdHJfaW5kICsgMSB8IDAsCisgICAgICAgIC8q
IHRydWUgKi8xCisgICAgICBdOworICAgIHZhciBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0
YXJ0KG1hdGNoJDFbMF0sIGVuZF9pbmQpOworICAgIHZhciBjaGFyX3NldCQxID0gQnl0ZXMudG9f
c3RyaW5nKGNoYXJfc2V0KTsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBu
ZXh0X2luZCwKKyAgICAgICAgICAgIG1hdGNoJDFbMV0gPyByZXZfY2hhcl9zZXQoY2hhcl9zZXQk
MSkgOiBjaGFyX3NldCQxCisgICAgICAgICAgXTsKKyAgfTsKKyAgdmFyIGNoZWNrX29wZW5fYm94
ID0gZnVuY3Rpb24gKGZtdCkgeworICAgIGlmICh0eXBlb2YgZm10ID09PSAibnVtYmVyIikgewor
ICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSBpZiAoZm10LnRhZyA9PT0g
MTEpIHsKKyAgICAgIGlmICh0eXBlb2YgZm10WzFdID09PSAibnVtYmVyIikgeworICAgICAgICB0
cnkgeworICAgICAgICAgIG9wZW5fYm94X29mX3N0cmluZyhmbXRbMF0pOworICAgICAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGV4bil7CisgICAgICAg
ICAgaWYgKGV4blswXSA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSkgeworICAg
ICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICB0aHJvdyBleG47CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9
CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0KKyAgICB9
CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgfTsKKyAgdmFy
IHBhcnNlX3RhZyA9IGZ1bmN0aW9uIChpc19vcGVuX3RhZywgc3RyX2luZCwgZW5kX2luZCkgewor
ICAgIHRyeSB7CisgICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgICB0aHJv
dyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICB9CisgICAgICB2YXIg
bWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgIGlmIChtYXRjaCAh
PT0gNjApIHsKKyAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5k
OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciBpbmQgPSAkJFN0cmluZy5pbmRl
eF9mcm9tKHN0ciwgc3RyX2luZCArIDEgfCAwLCAvKiAiPiIgKi82Mik7CisgICAgICAgIGlmIChp
bmQgPj0gZW5kX2luZCkgeworICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25z
Lm5vdF9mb3VuZDsKKyAgICAgICAgfQorICAgICAgICB2YXIgc3ViX3N0ciA9ICQkU3RyaW5nLnN1
YihzdHIsIHN0cl9pbmQsIChpbmQgLSBzdHJfaW5kIHwgMCkgKyAxIHwgMCk7CisgICAgICAgIHZh
ciBiZWdfaW5kID0gaW5kICsgMSB8IDA7CisgICAgICAgIHZhciBtYXRjaCQxID0gcGFyc2VfbGl0
ZXJhbChiZWdfaW5kLCBiZWdfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgdmFyIG1hdGNoJDIgPSBw
YXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGluZCArIDEgfCAwKTsKKyAgICAgICAgdmFy
IHN1Yl9mbXQgPSBtYXRjaCQyWzBdOworICAgICAgICB2YXIgc3ViX2Zvcm1hdCA9IC8qIEZvcm1h
dCAqL1sKKyAgICAgICAgICBzdWJfZm10LAorICAgICAgICAgIHN1Yl9zdHIKKyAgICAgICAgXTsK
KyAgICAgICAgdmFyIGZvcm1hdHRpbmcgPSBpc19vcGVuX3RhZyA/IC8qIE9wZW5fdGFnICovQmxv
Y2suX18oMCwgW3N1Yl9mb3JtYXRdKSA6IChjaGVja19vcGVuX2JveChzdWJfZm10KSwgLyogT3Bl
bl9ib3ggKi9CbG9jay5fXygxLCBbc3ViX2Zvcm1hdF0pKTsKKyAgICAgICAgcmV0dXJuIC8qIEZt
dF9FQkIgKi9bLyogRm9ybWF0dGluZ19nZW4gKi9CbG9jay5fXygxOCwgWworICAgICAgICAgICAg
ICAgICAgICBmb3JtYXR0aW5nLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQxWzBdCisgICAg
ICAgICAgICAgICAgICBdKV07CisgICAgICB9CisgICAgfQorICAgIGNhdGNoIChleG4peworICAg
ICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7CisgICAg
ICAgIHZhciBtYXRjaCQzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5k
KTsKKyAgICAgICAgdmFyIHN1Yl9mb3JtYXQkMSA9IC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAv
KiBFbmRfb2ZfZm9ybWF0ICovMCwKKyAgICAgICAgICAiIgorICAgICAgICBdOworICAgICAgICB2
YXIgZm9ybWF0dGluZyQxID0gaXNfb3Blbl90YWcgPyAvKiBPcGVuX3RhZyAqL0Jsb2NrLl9fKDAs
IFtzdWJfZm9ybWF0JDFdKSA6IC8qIE9wZW5fYm94ICovQmxvY2suX18oMSwgW3N1Yl9mb3JtYXQk
MV0pOworICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2dlbiAqL0Js
b2NrLl9fKDE4LCBbCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmckMSwKKyAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkM1swXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07Cisg
IHJldHVybiBwYXJzZV9saXRlcmFsKDAsIDAsIHN0ci5sZW5ndGgpOworfQorCitmdW5jdGlvbiBm
b3JtYXRfb2Zfc3RyaW5nX2ZtdHR5KHN0ciwgZm10dHkpIHsKKyAgdmFyIG1hdGNoID0gZm10X2Vi
Yl9vZl9zdHJpbmcoLyogTm9uZSAqLzAsIHN0cik7CisgIHRyeSB7CisgICAgcmV0dXJuIC8qIEZv
cm1hdCAqL1sKKyAgICAgICAgICAgIHR5cGVfZm9ybWF0KG1hdGNoWzBdLCBmbXR0eSksCisgICAg
ICAgICAgICBzdHIKKyAgICAgICAgICBdOworICB9CisgIGNhdGNoIChleG4peworICAgIGlmIChl
eG4gPT09IFR5cGVfbWlzbWF0Y2gpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihmYWlsd2l0aF9t
ZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0
ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgaW5w
dXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiIGFuZCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IF0pLAorICAgICAgICAgICAgICAgICAgICAgICJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21h
dGNoIGJldHdlZW4gJVMgYW5kICVTIgorICAgICAgICAgICAgICAgICAgICBdKSwgc3RyLCBzdHJp
bmdfb2ZfZm10dHkoZm10dHkpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47
CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0KHN0ciwg
cGFyYW0pIHsKKyAgdmFyIG1hdGNoID0gZm10X2ViYl9vZl9zdHJpbmcoLyogTm9uZSAqLzAsIHN0
cik7CisgIHRyeSB7CisgICAgcmV0dXJuIC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgIHR5cGVf
Zm9ybWF0KG1hdGNoWzBdLCBmbXR0eV9vZl9mbXQocGFyYW1bMF0pKSwKKyAgICAgICAgICAgIHN0
cgorICAgICAgICAgIF07CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0gVHlw
ZV9taXNtYXRjaCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8yKGZhaWx3aXRoX21lc3NhZ2UoLyog
Rm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxv
Y2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBpbnB1dDogZm9ybWF0
IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBD
YW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3Ry
aW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIgYW5kICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2Ft
bF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAg
ICAgICAgICAgICAgICAgICAgImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2Vl
biAlUyBhbmQgJVMiCisgICAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHBhcmFtWzFdKTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9CisKK2V4cG9y
dHMuaXNfaW5fY2hhcl9zZXQgICAgICAgICAgICAgICAgID0gaXNfaW5fY2hhcl9zZXQ7CitleHBv
cnRzLnJldl9jaGFyX3NldCAgICAgICAgICAgICAgICAgICA9IHJldl9jaGFyX3NldDsKK2V4cG9y
dHMuY3JlYXRlX2NoYXJfc2V0ICAgICAgICAgICAgICAgID0gY3JlYXRlX2NoYXJfc2V0OworZXhw
b3J0cy5hZGRfaW5fY2hhcl9zZXQgICAgICAgICAgICAgICAgPSBhZGRfaW5fY2hhcl9zZXQ7Citl
eHBvcnRzLmZyZWV6ZV9jaGFyX3NldCAgICAgICAgICAgICAgICA9IGZyZWV6ZV9jaGFyX3NldDsK
K2V4cG9ydHMucGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0ID0gcGFyYW1fZm9ybWF0X29m
X2lnbm9yZWRfZm9ybWF0OworZXhwb3J0cy5tYWtlX3ByaW50ZiAgICAgICAgICAgICAgICAgICAg
PSBtYWtlX3ByaW50ZjsKK2V4cG9ydHMub3V0cHV0X2FjYyAgICAgICAgICAgICAgICAgICAgID0g
b3V0cHV0X2FjYzsKK2V4cG9ydHMuYnVmcHV0X2FjYyAgICAgICAgICAgICAgICAgICAgID0gYnVm
cHV0X2FjYzsKK2V4cG9ydHMuc3RycHV0X2FjYyAgICAgICAgICAgICAgICAgICAgID0gc3RycHV0
X2FjYzsKK2V4cG9ydHMudHlwZV9mb3JtYXQgICAgICAgICAgICAgICAgICAgID0gdHlwZV9mb3Jt
YXQ7CitleHBvcnRzLmZtdF9lYmJfb2Zfc3RyaW5nICAgICAgICAgICAgICA9IGZtdF9lYmJfb2Zf
c3RyaW5nOworZXhwb3J0cy5mb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5ICAgICAgICAgPSBmb3JtYXRf
b2Zfc3RyaW5nX2ZtdHR5OworZXhwb3J0cy5mb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCAgICAgICAg
PSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdDsKK2V4cG9ydHMuY2hhcl9vZl9pY29udiAgICAgICAg
ICAgICAgICAgID0gY2hhcl9vZl9pY29udjsKK2V4cG9ydHMuc3RyaW5nX29mX2Zvcm1hdHRpbmdf
bGl0ICAgICAgID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0OworZXhwb3J0cy5zdHJpbmdfb2Zf
Zm9ybWF0dGluZ19nZW4gICAgICAgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19nZW47CitleHBvcnRz
LnN0cmluZ19vZl9mbXR0eSAgICAgICAgICAgICAgICA9IHN0cmluZ19vZl9mbXR0eTsKK2V4cG9y
dHMuc3RyaW5nX29mX2ZtdCAgICAgICAgICAgICAgICAgID0gc3RyaW5nX29mX2ZtdDsKK2V4cG9y
dHMub3Blbl9ib3hfb2Zfc3RyaW5nICAgICAgICAgICAgID0gb3Blbl9ib3hfb2Zfc3RyaW5nOwor
ZXhwb3J0cy5zeW1tICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBzeW1tOworZXhwb3J0cy50
cmFucyAgICAgICAgICAgICAgICAgICAgICAgICAgPSB0cmFuczsKK2V4cG9ydHMucmVjYXN0ICAg
ICAgICAgICAgICAgICAgICAgICAgID0gcmVjYXN0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8v
Ly8vLy8vIGVuZCBvZiBjYW1saW50ZXJuYWxGb3JtYXQuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVy
biBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9pbyddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9pby5q
cyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAg
PSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1
aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uICRjYXJldChwcmlt
LCBwcmltJDEpIHsKKyAgcmV0dXJuIHByaW0gKyBwcmltJDE7Cit9CisKK3ZhciBzdGRpbiA9IHVu
ZGVmaW5lZDsKKwordmFyIHN0ZG91dCA9IC8qIHJlY29yZCAqL1sKKyAgLyogYnVmZmVyICovIiIs
CisgIC8qIG91dHB1dCAqL2Z1bmN0aW9uIChfLCBzKSB7CisgICAgdmFyIHYgPSBzLmxlbmd0aCAt
IDEgfCAwOworICAgIGlmICgoICh0eXBlb2YgcHJvY2VzcyAhPT0gInVuZGVmaW5lZCIpICYmIHBy
b2Nlc3Muc3Rkb3V0ICYmIHByb2Nlc3Muc3Rkb3V0LndyaXRlKSkgeworICAgICAgcmV0dXJuICgg
cHJvY2Vzcy5zdGRvdXQud3JpdGUgKShzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc1t2XSA9PT0g
IlxuIikgeworICAgICAgY29uc29sZS5sb2cocy5zbGljZSgwLCB2KSk7CisgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGNvbnNvbGUubG9nKHMpOworICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH0KK107CisKK3ZhciBzdGRlcnIgPSAvKiBy
ZWNvcmQgKi9bCisgIC8qIGJ1ZmZlciAqLyIiLAorICAvKiBvdXRwdXQgKi9mdW5jdGlvbiAoXywg
cykgeworICAgIHZhciB2ID0gcy5sZW5ndGggLSAxIHwgMDsKKyAgICBpZiAoc1t2XSA9PT0gIlxu
IikgeworICAgICAgY29uc29sZS5sb2cocy5zbGljZSgwLCB2KSk7CisgICAgICByZXR1cm4gLyog
KCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGNvbnNvbGUubG9nKHMpOworICAgICAg
cmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH0KK107CisKK2Z1bmN0aW9uIGNhbWxfbWxfb3Bl
bl9kZXNjcmlwdG9yX2luKCkgeworICB0aHJvdyBbCisgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmZhaWx1cmUsCisgICAgICAgICJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiBub3Qg
aW1wbGVtZW50ZWQiCisgICAgICBdOworfQorCitmdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3Jp
cHRvcl9vdXQoKSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMu
ZmFpbHVyZSwKKyAgICAgICAgImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCBub3QgaW1wbGVt
ZW50ZWQiCisgICAgICBdOworfQorCitmdW5jdGlvbiBjYW1sX21sX2ZsdXNoKG9jKSB7CisgIGlm
IChvY1svKiBidWZmZXIgKi8wXSAhPT0gIiIpIHsKKyAgICBDdXJyeS5fMihvY1svKiBvdXRwdXQg
Ki8xXSwgb2MsIG9jWy8qIGJ1ZmZlciAqLzBdKTsKKyAgICBvY1svKiBidWZmZXIgKi8wXSA9ICIi
OworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7Cisg
IH0KK30KKwordmFyIG5vZGVfc3RkX291dHB1dCA9IChmdW5jdGlvbiAocyl7CisgICByZXR1cm4g
KHR5cGVvZiBwcm9jZXNzICE9PSAidW5kZWZpbmVkIikgJiYgcHJvY2Vzcy5zdGRvdXQgJiYgKHBy
b2Nlc3Muc3Rkb3V0LndyaXRlKHMpLCB0cnVlKTsKKyAgIH0KKyk7CisKK2Z1bmN0aW9uIGNhbWxf
bWxfb3V0cHV0KG9jLCBzdHIsIG9mZnNldCwgbGVuKSB7CisgIHZhciBzdHIkMSA9IG9mZnNldCA9
PT0gMCAmJiBsZW4gPT09IHN0ci5sZW5ndGggPyBzdHIgOiBzdHIuc2xpY2Uob2Zmc2V0LCBsZW4p
OworICBpZiAoKCAodHlwZW9mIHByb2Nlc3MgIT09ICJ1bmRlZmluZWQiKSAmJiBwcm9jZXNzLnN0
ZG91dCAmJiBwcm9jZXNzLnN0ZG91dC53cml0ZSApICYmIG9jID09PSBzdGRvdXQpIHsKKyAgICBy
ZXR1cm4gKCBwcm9jZXNzLnN0ZG91dC53cml0ZSApKHN0ciQxKTsKKyAgfQorICBlbHNlIHsKKyAg
ICB2YXIgaWQgPSBzdHIkMS5sYXN0SW5kZXhPZigiXG4iKTsKKyAgICBpZiAoaWQgPCAwKSB7Cisg
ICAgICBvY1svKiBidWZmZXIgKi8wXSA9IG9jWy8qIGJ1ZmZlciAqLzBdICsgc3RyJDE7CisgICAg
ICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIG9jWy8qIGJ1ZmZl
ciAqLzBdID0gb2NbLyogYnVmZmVyICovMF0gKyBzdHIkMS5zbGljZSgwLCBpZCArIDEgfCAwKTsK
KyAgICAgIGNhbWxfbWxfZmx1c2gob2MpOworICAgICAgb2NbLyogYnVmZmVyICovMF0gPSBvY1sv
KiBidWZmZXIgKi8wXSArIHN0ciQxLnNsaWNlKGlkICsgMSB8IDApOworICAgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhcihv
YywgJCRjaGFyKSB7CisgIHJldHVybiBjYW1sX21sX291dHB1dChvYywgU3RyaW5nLmZyb21DaGFy
Q29kZSgkJGNoYXIpLCAwLCAxKTsKK30KKworZnVuY3Rpb24gY2FtbF9tbF9pbnB1dChfLCBfJDEs
IF8kMiwgXyQzKSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMu
ZmFpbHVyZSwKKyAgICAgICAgImNhbWxfbWxfaW5wdXQgaWMgbm90IGltcGxlbWVudGVkIgorICAg
ICAgXTsKK30KKworZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyKCkgeworICB0aHJvdyBbCisg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICJjYW1sX21s
X2lucHV0X2NoYXIgbm90IGltcGxlbW50ZWQiCisgICAgICBdOworfQorCitmdW5jdGlvbiBjYW1s
X21sX291dF9jaGFubmVsc19saXN0KCkgeworICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAg
c3Rkb3V0LAorICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgc3RkZXJyLAorICAgICAg
ICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworfQorCitleHBvcnRzLiRj
YXJldCAgICAgICAgICAgICAgICAgICAgICA9ICRjYXJldDsKK2V4cG9ydHMuc3RkaW4gICAgICAg
ICAgICAgICAgICAgICAgID0gc3RkaW47CitleHBvcnRzLnN0ZG91dCAgICAgICAgICAgICAgICAg
ICAgICA9IHN0ZG91dDsKK2V4cG9ydHMuc3RkZXJyICAgICAgICAgICAgICAgICAgICAgID0gc3Rk
ZXJyOworZXhwb3J0cy5jYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAgPSBjYW1sX21sX29wZW5f
ZGVzY3JpcHRvcl9pbjsKK2V4cG9ydHMuY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0ID0gY2Ft
bF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0OworZXhwb3J0cy5jYW1sX21sX2ZsdXNoICAgICAgICAg
ICAgICAgPSBjYW1sX21sX2ZsdXNoOworZXhwb3J0cy5ub2RlX3N0ZF9vdXRwdXQgICAgICAgICAg
ICAgPSBub2RlX3N0ZF9vdXRwdXQ7CitleHBvcnRzLmNhbWxfbWxfb3V0cHV0ICAgICAgICAgICAg
ICA9IGNhbWxfbWxfb3V0cHV0OworZXhwb3J0cy5jYW1sX21sX291dHB1dF9jaGFyICAgICAgICAg
PSBjYW1sX21sX291dHB1dF9jaGFyOworZXhwb3J0cy5jYW1sX21sX2lucHV0ICAgICAgICAgICAg
ICAgPSBjYW1sX21sX2lucHV0OworZXhwb3J0cy5jYW1sX21sX2lucHV0X2NoYXIgICAgICAgICAg
PSBjYW1sX21sX2lucHV0X2NoYXI7CitleHBvcnRzLmNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Qg
ICA9IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Q7CisvKiBzdGRpbiBOb3QgYSBwdXJlIG1vZHVs
ZSAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfaW8uanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBl
eHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9sZXhlciddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9sZXhl
ci5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIGZh
aWwoKSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVy
ZSwKKyAgICAgICAgImxleGluZzogZW1wdHkgdG9rZW4iCisgICAgICBdOworfQorCisgCisKKy8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAg
ICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KKy8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwg
SU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5
cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVl
IGV0ICAgKi8KKy8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlz
IGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi8KKy8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKi8KKy8qICB0aGUgc3Bl
Y2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAg
ICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogJElkOiBsZXhp
bmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqLworCisvKiBUaGUgdGFi
bGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqLwor
CitmdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7CisgICAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7
CisgICAgdmFyIGEgPSBuZXcgQXJyYXkobCk7CisgICAgLy8gd2hlbiBzLmNoYXJDb2RlQXQoMiAq
IGkgKyAxICkgPiAxMjggKDB4ODApCisgICAgLy8gYVtpXSA8IDAgIAorICAgIC8vIGZvcih2YXIg
aSA9IDAgOyBpIDw9IDB4ZmZmZjsgKytpKSB7IGlmIChpIDw8IDE2ID4+IDE2ICE9PWkpe2NvbnNv
bGUubG9nKGk8PDE2Pj4xNiwgJ3ZzJyxpKX19CisgICAgLy8gCisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBsOyBpKyspCisgICAgICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNo
YXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7CisgICAgcmV0dXJuIGE7Cit9
CisvKioKKyAqIGV4dGVybmFsIGNfZW5naW5lICA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1
ZiAtPiBpbnQKKyAqIGxleGluZy5tbAorICogdHlwZSBsZXhfdGFibGVzID0geworICogICBsZXhf
YmFzZSA6IHN0cmluZzsKKyAqICAgbGV4X2JhY2t0cmsgOiBzdHJpbmc7CisgKiAgIGxleF9kZWZh
dWx0IDogc3RyaW5nOworICogICBsZXhfdHJhbnMgOiBzdHJpbmc7CisgKiAgIGxleF9jaGVjayA6
IHN0cmluZzsKKyAqICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZzsKKyAqICAgbGV4X2JhY2t0cmtf
Y29kZSA6IHN0cmluZzsKKyAqICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZzsKKyAqICAgbGV4
X3RyYW5zX2NvZGUgOiBzdHJpbmc7CisgKiAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nOworICog
ICBsZXhfY29kZSA6IHN0cmluZzsKKyAqIH0KKyAqCisgKiB0eXBlIGxleGJ1ZiA9IHsKKyAqICAg
cmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdCA7CisgKiAgIG11dGFibGUgbGV4X2J1ZmZlciA6
IGJ5dGVzOworICogICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50OworICogICBtdXRhYmxl
IGxleF9hYnNfcG9zIDogaW50OworICogICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7Cisg
KiAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50OworICogICBtdXRhYmxlIGxleF9sYXN0X3Bv
cyA6IGludDsKKyAqICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7CisgKiAgIG11dGFi
bGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDsKKyAqICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFy
cmF5OworICogICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247CisgKiAgIG11dGFibGUg
bGV4X2N1cnJfcDsKKyAqIH0KKyAqIEBwYXJhbSB0YmwKKyAqIEBwYXJhbSBzdGFydF9zdGF0ZQor
ICogQHBhcmFtIGxleGJ1ZgorICogQHJldHVybnMge2FueX0KKyAqLworZnVuY3Rpb24gJCRjYW1s
X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7CisgICAgLy8gTGV4aW5nLmxl
eGJ1ZgorICAgIHZhciBsZXhfYnVmZmVyID0gMTsKKyAgICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAy
OworICAgIHZhciBsZXhfc3RhcnRfcG9zID0gNDsKKyAgICB2YXIgbGV4X2N1cnJfcG9zID0gNTsK
KyAgICB2YXIgbGV4X2xhc3RfcG9zID0gNjsKKyAgICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gNzsK
KyAgICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gODsKKyAgICAvLyBMZXhpbmcubGV4X3RhYmxlcwor
ICAgIHZhciBsZXhfYmFzZSA9IDA7CisgICAgdmFyIGxleF9iYWNrdHJrID0gMTsKKyAgICB2YXIg
bGV4X2RlZmF1bHQgPSAyOworICAgIHZhciBsZXhfdHJhbnMgPSAzOworICAgIHZhciBsZXhfY2hl
Y2sgPSA0OworICAgIGlmICghdGJsLmxleF9kZWZhdWx0KSB7CisgICAgICAgIHRibC5sZXhfYmFz
ZSA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfYmFzZV0pOworICAgICAgICB0YmwubGV4X2JhY2t0
cmsgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTsKKyAgICAgICAgdGJsLmxleF9j
aGVjayA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfY2hlY2tdKTsKKyAgICAgICAgdGJsLmxleF90
cmFucyA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfdHJhbnNdKTsKKyAgICAgICAgdGJsLmxleF9k
ZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7CisgICAgfQorICAgIHZh
ciBjOworICAgIHZhciBzdGF0ZSA9IHN0YXJ0X3N0YXRlOworICAgIC8vdmFyIGJ1ZmZlciA9IGJ5
dGVzX29mX3N0cmluZyhsZXhidWZbbGV4X2J1ZmZlcl0pOworICAgIHZhciBidWZmZXIgPSBsZXhi
dWZbbGV4X2J1ZmZlcl07CisgICAgaWYgKHN0YXRlID49IDApIHsKKyAgICAgICAgLyogRmlyc3Qg
ZW50cnkgKi8KKyAgICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0
X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTsKKyAgICAgICAgbGV4YnVmW2xleF9sYXN0X2Fj
dGlvbl0gPSAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFJlZW50cnkgYWZ0ZXIg
cmVmaWxsICovCisgICAgICAgIHN0YXRlID0gLXN0YXRlIC0gMTsKKyAgICB9CisgICAgZm9yICg7
OykgeworICAgICAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9y
IGN1cnJlbnQgc3RhdGUgKi8KKyAgICAgICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVd
OworICAgICAgICBpZiAoYmFzZSA8IDApCisgICAgICAgICAgICByZXR1cm4gLWJhc2UgLSAxOwor
ICAgICAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqLworICAgICAgICB2YXIg
YmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07CisgICAgICAgIGlmIChiYWNrdHJrID49
IDApIHsKKyAgICAgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJy
X3Bvc107CisgICAgICAgICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7Cisg
ICAgICAgIH0KKyAgICAgICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi8KKyAgICAgICAg
aWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pIHsKKyAg
ICAgICAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PT0gMCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gLXN0YXRlIC0gMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBjID0gMjU2OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogUmVh
ZCBuZXh0IGlucHV0IGNoYXIgKi8KKyAgICAgICAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9j
dXJyX3Bvc11dOworICAgICAgICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10rKzsKKyAgICAgICAg
fQorICAgICAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqLworICAgICAgICBpZiAodGJsLmxl
eF9jaGVja1tiYXNlICsgY10gPT09IHN0YXRlKSB7CisgICAgICAgICAgICBzdGF0ZSA9IHRibC5s
ZXhfdHJhbnNbYmFzZSArIGNdOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdOworICAgICAgICB9CisgICAgICAgIC8q
IElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sg
cG9pbnQgKi8KKyAgICAgICAgaWYgKHN0YXRlIDwgMCkgeworICAgICAgICAgICAgbGV4YnVmW2xl
eF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTsKKyAgICAgICAgICAgIGlmIChsZXhi
dWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSkKKyAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rp
b25dOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogRXJhc2UgdGhl
IEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzCisgICAg
ICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFj
a3RyYWNrIGFib3ZlKQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoYyA9PSAyNTYp
CisgICAgICAgICAgICAgICAgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwOworICAgICAgICB9
CisgICAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCisvKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICov
CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8q
KgorICogcyAtPiBMZXhpbmcubGV4X3RhYmxlcy5sZXhfY29kZQorICogbWVtIC0+IExleGluZy5s
ZXhidWYubGV4X21lbSAoKiBpbnQgYXJyYXkgKikKKyAqLyAgICAgICAgICAKKyAgICAgICAgICAK
K2Z1bmN0aW9uIGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3BvcykgeworICAgIGZv
ciAoOzspIHsKKyAgICAgICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsKKyAgICAgICAgaSsr
OworICAgICAgICBpZiAoZHN0ID09IDB4ZmYpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7CisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKHNy
YyA9PSAweGZmKQorICAgICAgICAgICAgbWVtW2RzdF0gPSBjdXJyX3BvczsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbWVtW2RzdF0gPSBtZW1bc3JjXTsKKyAgICB9Cit9CisKKworLyoqCisg
KiBzIC0+IExleGluZy5sZXhfdGFibGVzLmxleF9jb2RlCisgKiBtZW0gLT4gTGV4aW5nLmxleGJ1
Zi5sZXhfbWVtICgqIGludCBhcnJheSAqKQorICovCisgIAorZnVuY3Rpb24gY2FtbF9sZXhfcnVu
X3RhZyhzLCBpLCBtZW0pIHsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHZhciBkc3QgPSBzLmNo
YXJDb2RlQXQoaSk7CisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKGRzdCA9PSAweGZmKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOworICAg
ICAgICBpKys7CisgICAgICAgIGlmIChzcmMgPT0gMHhmZikKKyAgICAgICAgICAgIG1lbVtkc3Rd
ID0gLTE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbVtkc3RdID0gbWVtW3NyY107Cisg
ICAgfQorfQorLyoqCisgKiBleHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGlu
dCAtPiBsZXhidWYgLT4gaW50ID0gImNhbWxfbmV3X2xleF9lbmdpbmUiCisgKiBAcGFyYW0gdGJs
CisgKiBAcGFyYW0gc3RhcnRfc3RhdGUKKyAqIEBwYXJhbSBsZXhidWYKKyAqIEByZXR1cm5zIHth
bnl9CisgKi8KK2Z1bmN0aW9uICQkY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRl
LCBsZXhidWYpIHsKKyAgICAvLyBMZXhpbmcubGV4YnVmCisgICAgdmFyIGxleF9idWZmZXIgPSAx
OworICAgIHZhciBsZXhfYnVmZmVyX2xlbiA9IDI7CisgICAgdmFyIGxleF9zdGFydF9wb3MgPSA0
OworICAgIHZhciBsZXhfY3Vycl9wb3MgPSA1OworICAgIHZhciBsZXhfbGFzdF9wb3MgPSA2Owor
ICAgIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA3OworICAgIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA4
OworICAgIHZhciBsZXhfbWVtID0gOTsKKyAgICAvLyBMZXhpbmcubGV4X3RhYmxlcworICAgIHZh
ciBsZXhfYmFzZSA9IDA7CisgICAgdmFyIGxleF9iYWNrdHJrID0gMTsKKyAgICB2YXIgbGV4X2Rl
ZmF1bHQgPSAyOworICAgIHZhciBsZXhfdHJhbnMgPSAzOworICAgIHZhciBsZXhfY2hlY2sgPSA0
OworICAgIHZhciBsZXhfYmFzZV9jb2RlID0gNTsKKyAgICB2YXIgbGV4X2JhY2t0cmtfY29kZSA9
IDY7CisgICAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA3OworICAgIHZhciBsZXhfdHJhbnNfY29k
ZSA9IDg7CisgICAgdmFyIGxleF9jaGVja19jb2RlID0gOTsKKyAgICB2YXIgbGV4X2NvZGUgPSAx
MDsKKyAgICBpZiAoIXRibC5sZXhfZGVmYXVsdCkgeworICAgICAgICB0YmwubGV4X2Jhc2UgPSBj
YW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2VdKTsKKyAgICAgICAgdGJsLmxleF9iYWNrdHJrID0g
Y2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYWNrdHJrXSk7CisgICAgICAgIHRibC5sZXhfY2hlY2sg
PSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2NoZWNrXSk7CisgICAgICAgIHRibC5sZXhfdHJhbnMg
PSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7CisgICAgICAgIHRibC5sZXhfZGVmYXVs
dCA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfZGVmYXVsdF0pOworICAgIH0KKyAgICBpZiAoIXRi
bC5sZXhfZGVmYXVsdF9jb2RlKSB7CisgICAgICAgIHRibC5sZXhfYmFzZV9jb2RlID0gY2FtbF9s
ZXhfYXJyYXkodGJsW2xleF9iYXNlX2NvZGVdKTsKKyAgICAgICAgdGJsLmxleF9iYWNrdHJrX2Nv
ZGUgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtfY29kZV0pOworICAgICAgICB0Ymwu
bGV4X2NoZWNrX2NvZGUgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2NoZWNrX2NvZGVdKTsKKyAg
ICAgICAgdGJsLmxleF90cmFuc19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF90cmFuc19j
b2RlXSk7CisgICAgICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJs
W2xleF9kZWZhdWx0X2NvZGVdKTsKKyAgICB9CisgICAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxs
KSB7CisgICAgICAgIC8vdGJsLmxleF9jb2RlID0gY2FtbF9ieXRlc19vZl9zdHJpbmcodGJsW2xl
eF9jb2RlXSk7CisgICAgICAgIHRibC5sZXhfY29kZSA9ICh0YmxbbGV4X2NvZGVdKTsKKyAgICB9
CisgICAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7CisgICAgLy92YXIgYnVmZmVyID0gY2Ft
bF9ieXRlc19vZl9zdHJpbmcobGV4YnVmW2xleF9idWZmZXJdKTsKKyAgICB2YXIgYnVmZmVyID0g
bGV4YnVmW2xleF9idWZmZXJdOworICAgIGlmIChzdGF0ZSA+PSAwKSB7CisgICAgICAgIC8qIEZp
cnN0IGVudHJ5ICovCisgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9z
dGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107CisgICAgICAgIGxleGJ1ZltsZXhfbGFz
dF9hY3Rpb25dID0gLTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBSZWVudHJ5IGFm
dGVyIHJlZmlsbCAqLworICAgICAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7CisgICAgfQorICAgIGZv
ciAoOzspIHsKKyAgICAgICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVy
IGZvciBjdXJyZW50IHN0YXRlICovCisgICAgICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0
YXRlXTsKKyAgICAgICAgaWYgKGJhc2UgPCAwKSB7CisgICAgICAgICAgICB2YXIgcGNfb2ZmID0g
dGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdOworICAgICAgICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0
YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTsKKyAgICAgICAgICAgIHJldHVy
biAtYmFzZSAtIDE7CisgICAgICAgIH0KKyAgICAgICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJh
Y2sgcG9pbnQgKi8KKyAgICAgICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVd
OworICAgICAgICBpZiAoYmFja3RyayA+PSAwKSB7CisgICAgICAgICAgICB2YXIgcGNfb2ZmID0g
dGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdOworICAgICAgICAgICAgY2FtbF9sZXhfcnVuX3Rh
Zyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTsKKyAgICAgICAgICAgIGxl
eGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107CisgICAgICAgICAgICBs
ZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7CisgICAgICAgIH0KKyAgICAgICAgLyog
U2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi8KKyAgICAgICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9w
b3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pIHsKKyAgICAgICAgICAgIGlmIChsZXhidWZb
bGV4X2VvZl9yZWFjaGVkXSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtc3RhdGUgLSAx
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGMgPSAyNTY7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqLwor
ICAgICAgICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07CisgICAgICAgICAg
ICBsZXhidWZbbGV4X2N1cnJfcG9zXSsrOworICAgICAgICB9CisgICAgICAgIC8qIERldGVybWlu
ZSBuZXh0IHN0YXRlICovCisgICAgICAgIHZhciBwc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgaWYg
KHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKQorICAgICAgICAgICAgc3RhdGUgPSB0
YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RhdGUg
PSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdOworICAgICAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9u
IHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovCisgICAgICAgIGlm
IChzdGF0ZSA8IDApIHsKKyAgICAgICAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVm
W2xleF9sYXN0X3Bvc107CisgICAgICAgICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0g
PT0gLTEpCisgICAgICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBw
ZXJmb3JtIG1lbW9yeSBtb3ZlcyAqLworICAgICAgICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5s
ZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjsKKyAgICAgICAgICAgIGlmICh0YmwubGV4X2No
ZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKQorICAgICAgICAgICAgICAgIHBjX29m
ZiA9IHRibC5sZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdOwor
ICAgICAgICAgICAgaWYgKHBjX29mZiA+IDApCisgICAgICAgICAgICAgICAgY2FtbF9sZXhfcnVu
X21lbSh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1
cnJfcG9zXSk7CisgICAgICAgICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlm
IHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXMKKyAgICAgICAgICAgICBjb25zdW1lZCBieSB0
aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpCisgICAgICAg
ICAgICAgKi8KKyAgICAgICAgICAgIGlmIChjID09IDI1NikKKyAgICAgICAgICAgICAgICBsZXhi
dWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7CisgICAgICAgIH0KKyAgICB9Cit9CisKKzsKKworZnVu
Y3Rpb24gY2FtbF9sZXhfZW5naW5lKHByaW0sIHByaW0kMSwgcHJpbSQyKSB7CisgIHJldHVybiAk
JGNhbWxfbGV4X2VuZ2luZShwcmltLCBwcmltJDEsIHByaW0kMik7Cit9CisKK2Z1bmN0aW9uIGNh
bWxfbmV3X2xleF9lbmdpbmUocHJpbSwgcHJpbSQxLCBwcmltJDIpIHsKKyAgcmV0dXJuICQkY2Ft
bF9uZXdfbGV4X2VuZ2luZShwcmltLCBwcmltJDEsIHByaW0kMik7Cit9CisKK2V4cG9ydHMuZmFp
bCAgICAgICAgICAgICAgICA9IGZhaWw7CitleHBvcnRzLmNhbWxfbGV4X2VuZ2luZSAgICAgPSBj
YW1sX2xleF9lbmdpbmU7CitleHBvcnRzLmNhbWxfbmV3X2xleF9lbmdpbmUgPSBjYW1sX25ld19s
ZXhfZW5naW5lOworLyogIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2Ft
bF9sZXhlci5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAg
X3JlZ2lzdHJ5WydjYW1sX29iaiddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9
IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9vYmouanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0
JzsKKwordmFyIEJsb2NrICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ibG9jayIpOwor
dmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucyIpOworCitmdW5jdGlvbiBjYW1sX29ial9kdXAoeCkgeworICB2YXIgbGVuID0geC5s
ZW5ndGg7CisgIHZhciB2ID0gbmV3IEFycmF5KGxlbik7CisgIGZvcih2YXIgaSA9IDAgLGlfZmlu
aXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgdltpXSA9IHhbaV07
CisgIH0KKyAgdi50YWcgPSB4LnRhZyB8IDA7CisgIHJldHVybiB2OworfQorCitmdW5jdGlvbiBj
YW1sX29ial90cnVuY2F0ZSh4LCBuZXdfc2l6ZSkgeworICB2YXIgbGVuID0geC5sZW5ndGg7Cisg
IGlmIChuZXdfc2l6ZSA8PSAwIHx8IG5ld19zaXplID4gbGVuKSB7CisgICAgdGhyb3cgWworICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAg
ICAgIk9iai50cnVuY2F0ZSIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIGlmIChsZW4gIT09IG5l
d19zaXplKSB7CisgICAgZm9yKHZhciBpID0gbmV3X3NpemUgLGlfZmluaXNoID0gbGVuIC0gMSB8
IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgICB4W2ldID0gMDsKKyAgICB9CisgICAgeC5s
ZW5ndGggPSBuZXdfc2l6ZTsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQo
eCkgeworICByZXR1cm4gQmxvY2suX18oMjUwLCBbeF0pOworfQorCitmdW5jdGlvbiBjYW1sX3Vw
ZGF0ZV9kdW1teSh4LCB5KSB7CisgIHZhciBsZW4gPSB5Lmxlbmd0aDsKKyAgZm9yKHZhciBpID0g
MCAsaV9maW5pc2ggPSBsZW4gLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICB4W2ld
ID0geVtpXTsKKyAgfQorICB2YXIgeV90YWcgPSB5LnRhZyB8IDA7CisgIGlmICh5X3RhZyAhPT0g
MCkgeworICAgIHgudGFnID0geV90YWc7CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX2ludF9jb21wYXJl
KHgsIHkpIHsKKyAgaWYgKHggPCB5KSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2UgaWYg
KHggPT09IHkpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMTsK
KyAgfQorfQorCitmdW5jdGlvbiBjYW1sX2NvbXBhcmUoX2EsIF9iKSB7CisgIHdoaWxlKHRydWUp
IHsKKyAgICB2YXIgYiA9IF9iOworICAgIHZhciBhID0gX2E7CisgICAgaWYgKHR5cGVvZiBhID09
PSAic3RyaW5nIikgeworICAgICAgdmFyIHggPSBhOworICAgICAgdmFyIHkgPSBiOworICAgICAg
aWYgKHggPCB5KSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYg
KHggPT09IHkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGVvZiBhID09
PSAibnVtYmVyIikgeworICAgICAgcmV0dXJuIGNhbWxfaW50X2NvbXBhcmUoYSwgYik7CisgICAg
fQorICAgIGVsc2UgaWYgKHR5cGVvZiBhID09PSAiYm9vbGVhbiIgfHwgdHlwZW9mIGEgPT09ICJu
dWxsIiB8fCB0eXBlb2YgYSA9PT0gInVuZGVmaW5lZCIpIHsKKyAgICAgIHZhciB4JDEgPSBhOwor
ICAgICAgdmFyIHkkMSA9IGI7CisgICAgICBpZiAoeCQxID09PSB5JDEpIHsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgICB9CisgICAgICBlbHNlIGlmICh4JDEgPCB5JDEpIHsKKyAgICAgICAgcmV0
dXJuIC0xOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAxOworICAgICAg
fQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciB0YWdfYSA9IGEudGFnIHwgMDsKKyAgICAg
IHZhciB0YWdfYiA9IGIudGFnIHwgMDsKKyAgICAgIGlmICh0YWdfYSA9PT0gMjUwKSB7CisgICAg
ICAgIF9hID0gYVswXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKHRhZ19iID09PSAyNTApIHsKKyAgICAgICAgX2IgPSBiWzBdOworICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSBpZiAodGFnX2EgPT09
IDI0OCkgeworICAgICAgICByZXR1cm4gY2FtbF9pbnRfY29tcGFyZShhWzFdLCBiWzFdKTsKKyAg
ICAgIH0KKyAgICAgIGVsc2UgaWYgKHRhZ19hID09PSAyNTEpIHsKKyAgICAgICAgdGhyb3cgWwor
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAor
ICAgICAgICAgICAgICAiZXF1YWw6IGFic3RyYWN0IHZhbHVlIgorICAgICAgICAgICAgXTsKKyAg
ICAgIH0KKyAgICAgIGVsc2UgaWYgKHRhZ19hICE9PSB0YWdfYikgeworICAgICAgICBpZiAodGFn
X2EgPCB0YWdfYikgeworICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHZhciBsZW5fYSA9IGEubGVuZ3RoOworICAgICAgICB2YXIgbGVuX2IgPSBi
Lmxlbmd0aDsKKyAgICAgICAgaWYgKGxlbl9hID09PSBsZW5fYikgeworICAgICAgICAgIHZhciBh
JDEgPSBhOworICAgICAgICAgIHZhciBiJDEgPSBiOworICAgICAgICAgIHZhciBfaSA9IDA7Cisg
ICAgICAgICAgdmFyIHNhbWVfbGVuZ3RoID0gbGVuX2E7CisgICAgICAgICAgd2hpbGUodHJ1ZSkg
eworICAgICAgICAgICAgdmFyIGkgPSBfaTsKKyAgICAgICAgICAgIGlmIChpID09PSBzYW1lX2xl
bmd0aCkgeworICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICB2YXIgcmVzID0gY2FtbF9jb21wYXJlKGEkMVtpXSwg
YiQxW2ldKTsKKyAgICAgICAgICAgICAgaWYgKHJlcyAhPT0gMCkgeworICAgICAgICAgICAgICAg
IHJldHVybiByZXM7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChsZW5fYSA8IGxlbl9iKSB7CisgICAg
ICAgICAgdmFyIGEkMiA9IGE7CisgICAgICAgICAgdmFyIGIkMiA9IGI7CisgICAgICAgICAgdmFy
IF9pJDEgPSAwOworICAgICAgICAgIHZhciBzaG9ydF9sZW5ndGggPSBsZW5fYTsKKyAgICAgICAg
ICB3aGlsZSh0cnVlKSB7CisgICAgICAgICAgICB2YXIgaSQxID0gX2kkMTsKKyAgICAgICAgICAg
IGlmIChpJDEgPT09IHNob3J0X2xlbmd0aCkgeworICAgICAgICAgICAgICByZXR1cm4gLTE7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIHJlcyQx
ID0gY2FtbF9jb21wYXJlKGEkMltpJDFdLCBiJDJbaSQxXSk7CisgICAgICAgICAgICAgIGlmIChy
ZXMkMSAhPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXMkMTsKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfaSQxID0gaSQxICsg
MSB8IDA7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgYSQzID0gYTsKKyAgICAgICAgICB2YXIgYiQzID0g
YjsKKyAgICAgICAgICB2YXIgX2kkMiA9IDA7CisgICAgICAgICAgdmFyIHNob3J0X2xlbmd0aCQx
ID0gbGVuX2I7CisgICAgICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICAgICAgdmFyIGkkMiA9
IF9pJDI7CisgICAgICAgICAgICBpZiAoaSQyID09PSBzaG9ydF9sZW5ndGgkMSkgeworICAgICAg
ICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICB2YXIgcmVzJDIgPSBjYW1sX2NvbXBhcmUoYSQzW2kkMl0sIGIkM1tpJDJdKTsK
KyAgICAgICAgICAgICAgaWYgKHJlcyQyICE9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHJlcyQyOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIF9pJDIgPSBpJDIgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9OworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBjYW1s
X2VxdWFsKF9hLCBfYikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGIgPSBfYjsKKyAgICB2
YXIgYSA9IF9hOworICAgIGlmIChhID09PSBiKSB7CisgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7
CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGVvZiBhID09PSAic3RyaW5nIiB8fCB0eXBlb2YgYSA9
PT0gIm51bWJlciIgfHwgdHlwZW9mIGEgPT09ICJib29sZWFuIiB8fCB0eXBlb2YgYSA9PT0gInVu
ZGVmaW5lZCIgfHwgdHlwZW9mIGEgPT09ICJudWxsIikgeworICAgICAgcmV0dXJuIC8qIGZhbHNl
ICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgdGFnX2EgPSBhLnRhZyB8IDA7Cisg
ICAgICB2YXIgdGFnX2IgPSBiLnRhZyB8IDA7CisgICAgICBpZiAodGFnX2EgPT09IDI1MCkgewor
ICAgICAgICBfYSA9IGFbMF07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9
CisgICAgICBlbHNlIGlmICh0YWdfYiA9PT0gMjUwKSB7CisgICAgICAgIF9iID0gYlswXTsKKyAg
ICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHRhZ19h
ID09PSAyNDgpIHsKKyAgICAgICAgcmV0dXJuICsoYVsxXSA9PT0gYlsxXSk7CisgICAgICB9Cisg
ICAgICBlbHNlIGlmICh0YWdfYSA9PT0gMjUxKSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAgICAgImVxdWFsOiBhYnN0cmFjdCB2YWx1ZSIKKyAgICAgICAgICAgIF07CisgICAgICB9Cisg
ICAgICBlbHNlIGlmICh0YWdfYSAhPT0gdGFnX2IpIHsKKyAgICAgICAgcmV0dXJuIC8qIGZhbHNl
ICovMDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgbGVuX2EgPSBhLmxlbmd0
aDsKKyAgICAgICAgdmFyIGxlbl9iID0gYi5sZW5ndGg7CisgICAgICAgIGlmIChsZW5fYSA9PT0g
bGVuX2IpIHsKKyAgICAgICAgICB2YXIgYSQxID0gYTsKKyAgICAgICAgICB2YXIgYiQxID0gYjsK
KyAgICAgICAgICB2YXIgX2kgPSAwOworICAgICAgICAgIHZhciBzYW1lX2xlbmd0aCA9IGxlbl9h
OworICAgICAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgICAgIHZhciBpID0gX2k7CisgICAg
ICAgICAgICBpZiAoaSA9PT0gc2FtZV9sZW5ndGgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8q
IHRydWUgKi8xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2FtbF9lcXVh
bChhJDFbaV0sIGIkMVtpXSkpIHsKKyAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH07
Cit9CisKK2Z1bmN0aW9uIGNhbWxfbm90ZXF1YWwoYSwgYikgeworICByZXR1cm4gMSAtIGNhbWxf
ZXF1YWwoYSwgYik7Cit9CisKK2Z1bmN0aW9uIGNhbWxfZ3JlYXRlcmVxdWFsKGEsIGIpIHsKKyAg
cmV0dXJuICsoY2FtbF9jb21wYXJlKGEsIGIpID49IDApOworfQorCitmdW5jdGlvbiBjYW1sX2dy
ZWF0ZXJ0aGFuKGEsIGIpIHsKKyAgcmV0dXJuICsoY2FtbF9jb21wYXJlKGEsIGIpID4gMCk7Cit9
CisKK2Z1bmN0aW9uIGNhbWxfbGVzc2VxdWFsKGEsIGIpIHsKKyAgcmV0dXJuICsoY2FtbF9jb21w
YXJlKGEsIGIpIDw9IDApOworfQorCitmdW5jdGlvbiBjYW1sX2xlc3N0aGFuKGEsIGIpIHsKKyAg
cmV0dXJuICsoY2FtbF9jb21wYXJlKGEsIGIpIDwgMCk7Cit9CisKK3ZhciBjYW1sX2ludDMyX2Nv
bXBhcmUgPSBjYW1sX2ludF9jb21wYXJlOworCit2YXIgY2FtbF9uYXRpdmVpbnRfY29tcGFyZSA9
IGNhbWxfaW50X2NvbXBhcmU7CisKK2V4cG9ydHMuY2FtbF9vYmpfZHVwICAgICAgICAgICA9IGNh
bWxfb2JqX2R1cDsKK2V4cG9ydHMuY2FtbF9vYmpfdHJ1bmNhdGUgICAgICA9IGNhbWxfb2JqX3Ry
dW5jYXRlOworZXhwb3J0cy5jYW1sX2xhenlfbWFrZV9mb3J3YXJkID0gY2FtbF9sYXp5X21ha2Vf
Zm9yd2FyZDsKK2V4cG9ydHMuY2FtbF91cGRhdGVfZHVtbXkgICAgICA9IGNhbWxfdXBkYXRlX2R1
bW15OworZXhwb3J0cy5jYW1sX2ludF9jb21wYXJlICAgICAgID0gY2FtbF9pbnRfY29tcGFyZTsK
K2V4cG9ydHMuY2FtbF9pbnQzMl9jb21wYXJlICAgICA9IGNhbWxfaW50MzJfY29tcGFyZTsKK2V4
cG9ydHMuY2FtbF9uYXRpdmVpbnRfY29tcGFyZSA9IGNhbWxfbmF0aXZlaW50X2NvbXBhcmU7Citl
eHBvcnRzLmNhbWxfY29tcGFyZSAgICAgICAgICAgPSBjYW1sX2NvbXBhcmU7CitleHBvcnRzLmNh
bWxfZXF1YWwgICAgICAgICAgICAgPSBjYW1sX2VxdWFsOworZXhwb3J0cy5jYW1sX25vdGVxdWFs
ICAgICAgICAgID0gY2FtbF9ub3RlcXVhbDsKK2V4cG9ydHMuY2FtbF9ncmVhdGVyZXF1YWwgICAg
ICA9IGNhbWxfZ3JlYXRlcmVxdWFsOworZXhwb3J0cy5jYW1sX2dyZWF0ZXJ0aGFuICAgICAgID0g
Y2FtbF9ncmVhdGVydGhhbjsKK2V4cG9ydHMuY2FtbF9sZXNzdGhhbiAgICAgICAgICA9IGNhbWxf
bGVzc3RoYW47CitleHBvcnRzLmNhbWxfbGVzc2VxdWFsICAgICAgICAgPSBjYW1sX2xlc3NlcXVh
bDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9vYmouanMgLy8v
Ly8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2Ft
bF9vbyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8g
c3RhcnQgb2YgY2FtbF9vby5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9h
cnJheSAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsK
KwordmFyIGNhbWxfbWV0aG9kc19jYWNoZSA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QoMTAw
MCwgMCk7CisKK2Z1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2Qob2JqLCB0YWcsIGNhY2hl
aWQpIHsKKyAgdmFyIG1ldGhzID0gb2JqWzBdOworICB2YXIgb2ZmcyA9IGNhbWxfbWV0aG9kc19j
YWNoZVtjYWNoZWlkXTsKKyAgaWYgKG1ldGhzW29mZnNdID09PSB0YWcpIHsKKyAgICByZXR1cm4g
bWV0aHNbb2ZmcyAtIDEgfCAwXTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgYXV4ID0gZnVuY3Rp
b24gKF9pKSB7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHZhciBpID0gX2k7CisgICAg
ICAgIGlmIChpIDwgMykgeworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAiY2FtbF9vby5tbCIsCisgICAgICAgICAgICAgICAgICA1NCwKKyAg
ICAgICAgICAgICAgICAgIDIwCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICBdOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1ldGhzW2ldID09PSB0YWcpIHsKKyAgICAgICAg
ICBjYW1sX21ldGhvZHNfY2FjaGVbY2FjaGVpZF0gPSBpOworICAgICAgICAgIHJldHVybiBpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIF9pID0gaSAtIDIgfCAwOworICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9
OworICAgIHJldHVybiBtZXRoc1thdXgoKG1ldGhzWzBdIDw8IDEpICsgMSB8IDApIC0gMSB8IDBd
OworICB9Cit9CisKK2V4cG9ydHMuY2FtbF9nZXRfcHVibGljX21ldGhvZCA9IGNhbWxfZ2V0X3B1
YmxpY19tZXRob2Q7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxf
b28uanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdp
c3RyeVsnY2FtbF9wYXJzZXInXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7
fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxfcGFyc2VyLmpzIC8vLy8vLy8vCisndXNlIHN0cmlj
dCc7CisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAg
ICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBw
cm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi8KKy8qICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUg
ZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi8KKy8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi8KKy8qICB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAg
Ki8KKy8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmls
ZSAuLi9MSUNFTlNFLiAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
KworLyogJElkOiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kgJCAq
LworCisvKiBUaGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2FtbHlh
Y2MgKi8KKworLyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovCisKKy8qKgorICogY2FtbF9sZXhf
YXJyYXkoImFiY2QiKQorICogWzI1MTg1LCAyNTY5OV0KKyAqIEBwYXJhbSBzCisgKiBAcmV0dXJu
cyB7YW55W119CisgKiBUT0RPOiBkdXBsaWNhdGVkIHdpdGggbW9kdWxlIHshQ2FtbF9sZXh9Cisg
Ki8KK2Z1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHsKKyAgICB2YXIgbCA9IHMubGVuZ3RoIC8g
MjsKKyAgICB2YXIgYSA9IG5ldyBBcnJheShsKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7
IGkrKykKKyAgICAgICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVB
dCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjsKKyAgICByZXR1cm4gYTsKK30KKy8qKgor
ICogTm90ZSB0aGF0IFRTIGVudW0gaXMgbm90IGZyaWVuZGx5IHRvIENsb3N1cmUgY29tcGlsZXIK
KyAqIEBlbnVte251bWJlcn0KKyAqLwordmFyIEF1dG9tYXRhID0geworICAgIFNUQVJUOiAwLAor
ICAgIExPT1A6IDYsCisgICAgVE9LRU5fUkVBRDogMSwKKyAgICBURVNUX1NISUZUOiA3LAorICAg
IEVSUk9SX0RFVEVDVEVEOiA1LAorICAgIFNISUZUOiA4LAorICAgIFNISUZUX1JFQ09WRVI6IDks
CisgICAgU1RBQ0tfR1JPV05fMTogMiwKKyAgICBSRURVQ0U6IDEwLAorICAgIFNUQUNLX0dST1dO
XzI6IDMsCisgICAgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOiA0Cit9OworLyoqCisgKiBAZW51
bXtudW1iZXJ9CisgKi8KK3ZhciBSZXN1bHQgPSB7CisgICAgUkVBRF9UT0tFTjogMCwKKyAgICBS
QUlTRV9QQVJTRV9FUlJPUjogMSwKKyAgICBHUk9XX1NUQUNLU18xOiAyLAorICAgIEdST1dfU1RB
Q0tTXzI6IDMsCisgICAgQ09NUFVURV9TRU1BTlRJQ19BQ1RJT046IDQsCisgICAgQ0FMTF9FUlJP
Ul9GVU5DVElPTjogNQorfTsKK3ZhciBQQVJTRVJfVFJBQ0UgPSBmYWxzZTsKKy8qKgorICogZXh0
ZXJuYWwgcGFyc2VfZW5naW5lIDogcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2Vy
X2lucHV0IC0+IE9iai50IC0+IHBhcnNlcl9vdXRwdXQKKyAqIHBhcnNpbmcubWwKKyAqCisgKiB0
eXBlIHBhcnNlX3RhYmxlcyA9IHsKKyAqICAgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50
KSBhcnJheQorICogICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7CisgKiAgIHRyYW5zbF9ibG9j
ayA6IGludCBhcnJheTsKKyAqICAgbGhzIDogc3RyaW5nOworICogICBsZW4gOiBzdHJpbmc7Cisg
KiAgIGRlZnJlZCA6IHN0cmluZzsKKyAqICAgZGdvdG8gOiBzdHJpbmc7CisgKiAgIHNpbmRleCA6
IHN0cmluZzsKKyAqICAgcmluZGV4IDogc3RyaW5nOworICogICBnaW5kZXggOiBzdHJpbmc7Cisg
KiAgIHRhYmxlc2l6ZSA6IGludDsKKyAqICAgdGFibGUgOiBzdHJpbmc7CisgKiAgIGNoZWNrIDog
c3RyaW5nOworICogICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0OworICogICBuYW1l
c19jb25zdCA6IHN0cmluZzsKKyAqICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcKKyAqIH0KKyAqCisg
KiB0eXBlIHBhcnNlcl9lbnYgPQorICogeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAg
ICAgICAoKiBTdGF0ZXMgKikKKyAqICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAg
ICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopCisgKiAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNr
IDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKQorICogIG11dGFibGUgc3lt
Yl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopCisgKiAg
bXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tz
ICopCisgKiAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBm
b3IgY3VycmVudCBwYXJzZSAqKQorICogIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAg
ICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKQorICogIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAg
ICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKikKKyAqICBtdXRhYmxlIHN5bWJf
c3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJv
bCopCisgKiAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4g
b2YgdGhlIGN1cnJlbnQgc3ltYm9sICopCisgKiAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAg
ICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKikKKyAqICBtdXRh
YmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGlu
IHRoZSBydWxlICopCisgKiAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCog
UnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopCisgKiAgbXV0YWJsZSBzcCA6IGludDsgICAgICAg
ICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKQorICogIG11dGFibGUg
c3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdp
bmUgKikKKyAqICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBl
cnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKikKKyAqCisgKiAgdHlwZSBwYXJzZXJfaW5wdXQg
PQorICogICB8IFN0YXJ0CisgKiAgIHwgVG9rZW5fcmVhZAorICogICB8IFN0YWNrc19ncm93bl8x
CisgKiAgIHwgU3RhY2tzX2dyb3duXzIKKyAqICAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQK
KyAqICAgfCBFcnJvcl9kZXRlY3RlZAorCisgKiBAcGFyYW0gdGFibGVzCisgKiBAcGFyYW0gZW52
CisgKiBAcGFyYW0gY21kCisgKiBAcGFyYW0gYXJnCisgKiBAcmV0dXJucyB7bnVtYmVyfQorICov
CitmdW5jdGlvbiAkJGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcyAvKiBwYXJzZXJfdGFibGUgKi8s
IGVudiAvKiBwYXJzZXJfZW52ICovLCBjbWQgLyogcGFyc2VyX2lucHV0Ki8sIGFyZyAvKiBPYmou
dCovKSB7CisgICAgdmFyIEVSUkNPREUgPSAyNTY7CisgICAgLy92YXIgU1RBUlQgPSAwOworICAg
IC8vdmFyIFRPS0VOX1JFQUQgPSAxOworICAgIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjsKKyAg
ICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7CisgICAgLy92YXIgU0VNQU5USUNfQUNUSU9OX0NP
TVBVVEVEID0gNDsKKyAgICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7CisgICAgLy92YXIgbG9v
cCA9IDY7CisgICAgLy92YXIgdGVzdHNoaWZ0ID0gNzsKKyAgICAvL3ZhciBzaGlmdCA9IDg7Cisg
ICAgLy92YXIgc2hpZnRfcmVjb3ZlciA9IDk7CisgICAgLy92YXIgcmVkdWNlID0gMTA7CisgICAg
Ly8gUGFyc2luZy5wYXJzZXJfZW52CisgICAgdmFyIGVudl9zX3N0YWNrID0gMDsgLy8gYXJyYXkK
KyAgICB2YXIgZW52X3Zfc3RhY2sgPSAxOyAvLyBhcnJheQorICAgIHZhciBlbnZfc3ltYl9zdGFy
dF9zdGFjayA9IDI7IC8vIGFycmF5CisgICAgdmFyIGVudl9zeW1iX2VuZF9zdGFjayA9IDM7IC8v
IGFycmF5CisgICAgdmFyIGVudl9zdGFja3NpemUgPSA0OworICAgIHZhciBlbnZfc3RhY2tiYXNl
ID0gNTsKKyAgICB2YXIgZW52X2N1cnJfY2hhciA9IDY7CisgICAgdmFyIGVudl9sdmFsID0gNzsg
Ly8gT2JqLnQKKyAgICB2YXIgZW52X3N5bWJfc3RhcnQgPSA4OyAvLyBwb3NpdGlvbgorICAgIHZh
ciBlbnZfc3ltYl9lbmQgPSA5OyAvLyBwb3NpdGlvbgorICAgIHZhciBlbnZfYXNwID0gMTA7Cisg
ICAgdmFyIGVudl9ydWxlX2xlbiA9IDExOworICAgIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMjsK
KyAgICB2YXIgZW52X3NwID0gMTM7CisgICAgdmFyIGVudl9zdGF0ZSA9IDE0OworICAgIHZhciBl
bnZfZXJyZmxhZyA9IDE1OworICAgIC8vIFBhcnNpbmcucGFyc2VfdGFibGVzCisgICAgLy8gdmFy
IF90YmxfYWN0aW9ucyA9IDE7CisgICAgdmFyIHRibF90cmFuc2xfY29uc3QgPSAxOyAvLyBhcnJh
eQorICAgIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMjsgLy8gYXJyYXkKKyAgICB2YXIgdGJsX2xo
cyA9IDM7CisgICAgdmFyIHRibF9sZW4gPSA0OworICAgIHZhciB0YmxfZGVmcmVkID0gNTsKKyAg
ICB2YXIgdGJsX2Rnb3RvID0gNjsKKyAgICB2YXIgdGJsX3NpbmRleCA9IDc7CisgICAgdmFyIHRi
bF9yaW5kZXggPSA4OworICAgIHZhciB0YmxfZ2luZGV4ID0gOTsKKyAgICB2YXIgdGJsX3RhYmxl
c2l6ZSA9IDEwOworICAgIHZhciB0YmxfdGFibGUgPSAxMTsKKyAgICB2YXIgdGJsX2NoZWNrID0g
MTI7CisgICAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDsKKyAgICAvLyB2YXIgX3Ri
bF9uYW1lc19jb25zdCA9IDE1OworICAgIC8vIHZhciBfdGJsX25hbWVzX2Jsb2NrID0gMTY7Cisg
ICAgaWYgKCF0YWJsZXMuZGdvdG8pIHsKKyAgICAgICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4
X2FycmF5KHRhYmxlc1t0YmxfZGVmcmVkXSk7CisgICAgICAgIHRhYmxlcy5zaW5kZXggPSBjYW1s
X2xleF9hcnJheSh0YWJsZXNbdGJsX3NpbmRleF0pOworICAgICAgICB0YWJsZXMuY2hlY2sgPSBj
YW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2NoZWNrXSk7CisgICAgICAgIHRhYmxlcy5yaW5kZXgg
PSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX3JpbmRleF0pOworICAgICAgICB0YWJsZXMudGFi
bGUgPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX3RhYmxlXSk7CisgICAgICAgIHRhYmxlcy5s
ZW4gPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2xlbl0pOworICAgICAgICB0YWJsZXMubGhz
ID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9saHNdKTsKKyAgICAgICAgdGFibGVzLmdpbmRl
eCA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfZ2luZGV4XSk7CisgICAgICAgIHRhYmxlcy5k
Z290byA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfZGdvdG9dKTsKKyAgICB9CisgICAgdmFy
IHJlczsKKyAgICB2YXIgbiwgbjEsIG4yLCBzdGF0ZTE7CisgICAgLy8gUkVTVE9SRQorICAgIHZh
ciBzcCA9IGVudltlbnZfc3BdOworICAgIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdOworICAg
IHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTsKKyAgICBleGl0OiBmb3IgKDs7KSB7Cisg
ICAgICAgIC8vY29uc29sZS5lcnJvcigiU3RhdGUiLCBBdXRvbWF0YVtjbWRdKTsKKyAgICAgICAg
c3dpdGNoIChjbWQpIHsKKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuU1RBUlQ6CisgICAgICAg
ICAgICAgICAgc3RhdGUgPSAwOworICAgICAgICAgICAgICAgIGVycmZsYWcgPSAwOworICAgICAg
ICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICBjYXNlIEF1dG9tYXRhLkxPT1A6Cisg
ICAgICAgICAgICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdOworICAgICAgICAgICAgICAg
IGlmIChuICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgY21kID0gQXV0b21hdGEuUkVEVUNF
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNtZCA9IEF1dG9tYXRhLlRFU1RfU0hJRlQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXMgPSBSZXN1bHQuUkVBRF9U
T0tFTjsKKyAgICAgICAgICAgICAgICBicmVhayBleGl0OworICAgICAgICAgICAgLyogVGhlIE1M
IGNvZGUgY2FsbHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovCisgICAgICAgICAgICAvKiBzeW1i
X3N0YXJ0IGFuZCBzeW1iX2VuZCAqLworICAgICAgICAgICAgY2FzZSBBdXRvbWF0YS5UT0tFTl9S
RUFEOgorICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXJnICE9PSAnbnVtYmVyJykgeworICAg
ICAgICAgICAgICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9i
bG9ja11bYXJnLnRhZyB8IDAgLyogKyAxICovXTsKKyAgICAgICAgICAgICAgICAgICAgZW52W2Vu
dl9sdmFsXSA9IGFyZ1swXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0Ymxf
dHJhbnNsX2NvbnN0XVthcmcgLyogKyAxICovXTsKKyAgICAgICAgICAgICAgICAgICAgZW52W2Vu
dl9sdmFsXSA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChQQVJT
RVJfVFJBQ0UpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiU3RhdGUgJWQs
IHJlYWQgdG9rZW4iLCBzdGF0ZSwgYXJnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAvLyBGYWxsIHRocm91Z2gKKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuVEVTVF9TSElGVDoK
KyAgICAgICAgICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdOworICAgICAgICAgICAg
ICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07CisgICAgICAgICAgICAgICAgaWYgKG4x
ICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAg
ICAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHsK
KyAgICAgICAgICAgICAgICAgICAgY21kID0gQXV0b21hdGEuU0hJRlQ7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuMSA9IHRh
Ymxlcy5yaW5kZXhbc3RhdGVdOworICAgICAgICAgICAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1
cnJfY2hhcl07CisgICAgICAgICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8
PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAgICAgICAgICAgICAgICAgdGFibGVzLmNo
ZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHsKKyAgICAgICAgICAgICAgICAgICAgbiA9
IHRhYmxlcy50YWJsZVtuMl07CisgICAgICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLlJF
RFVDRTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmIChlcnJmbGFnIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmVz
ID0gUmVzdWx0LkNBTExfRVJST1JfRlVOQ1RJT047CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
IGV4aXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisg
ICAgICAgICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi8KKyAg
ICAgICAgICAgIGNhc2UgQXV0b21hdGEuRVJST1JfREVURUNURUQ6CisgICAgICAgICAgICAgICAg
aWYgKGVycmZsYWcgPCAzKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmZsYWcgPSAzOworICAg
ICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwIC8qICsgMSovXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdOworICAgICAgICAgICAgICAgICAgICAgICAg
bjIgPSBuMSArIEVSUkNPREU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobjEgIT0gMCAm
JiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLlNISUZUX1JFQ09WRVI7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gUmVzdWx0LlJBSVNFX1BBUlNFX0VSUk9SOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNwLS07CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuUkFJU0VfUEFSU0VfRVJST1I7
CisgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAq
LworICAgICAgICAgICAgICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTsKKyAgICAgICAg
ICAgICAgICAgICAgY21kID0gQXV0b21hdGEuTE9PUDsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAg
ICAgICAgICBjYXNlIEF1dG9tYXRhLlNISUZUOgorICAgICAgICAgICAgICAgIGVudltlbnZfY3Vy
cl9jaGFyXSA9IC0xOworICAgICAgICAgICAgICAgIGlmIChlcnJmbGFnID4gMCkKKyAgICAgICAg
ICAgICAgICAgICAgZXJyZmxhZy0tOworICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAg
ICAgICAgICBjYXNlIEF1dG9tYXRhLlNISUZUX1JFQ09WRVI6CisgICAgICAgICAgICAgICAgaWYg
KFBBUlNFUl9UUkFDRSkgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJTdGF0
ZSAlZDogc2hpZnQgdG8gc3RhdGUgJWQiLCBzdGF0ZSwgdGFibGVzLnRhYmxlW24yXSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTsK
KyAgICAgICAgICAgICAgICBzcCsrOworICAgICAgICAgICAgICAgIGlmIChzcCA+PSBlbnZbZW52
X3N0YWNrc2l6ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0LkdST1dfU1RB
Q0tTXzE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICAvKiBUaGUgTUwgY29k
ZSByZXNpemVzIHRoZSBzdGFja3MgKi8KKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuU1RBQ0tf
R1JPV05fMToKKyAgICAgICAgICAgICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwIC8qICsgMSAqL10g
PSBzdGF0ZTsKKyAgICAgICAgICAgICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwIC8qICsgMSAqL10g
PSBlbnZbZW52X2x2YWxdOworICAgICAgICAgICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFj
a11bc3AgLyogKyAxICovXSA9IGVudltlbnZfc3ltYl9zdGFydF07CisgICAgICAgICAgICAgICAg
ZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgLyogKyAxICovXSA9IGVudltlbnZfc3ltYl9lbmRd
OworICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLkxPT1A7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlJFRFVDRToKKyAgICAgICAgICAgICAg
ICBpZiAoUEFSU0VSX1RSQUNFKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
IlN0YXRlICVkIDogcmVkdWNlIGJ5IHJ1bGUgJWQiLCBzdGF0ZSwgbik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTsKKyAgICAgICAgICAg
ICAgICBlbnZbZW52X2FzcF0gPSBzcDsKKyAgICAgICAgICAgICAgICBlbnZbZW52X3J1bGVfbnVt
YmVyXSA9IG47CisgICAgICAgICAgICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtOworICAgICAg
ICAgICAgICAgIHNwID0gc3AgLSBtICsgMTsKKyAgICAgICAgICAgICAgICBtID0gdGFibGVzLmxo
c1tuXTsKKyAgICAgICAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwIC0gMV07
IC8vCisgICAgICAgICAgICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dOworICAgICAgICAgICAg
ICAgIG4yID0gbjEgKyBzdGF0ZTE7CisgICAgICAgICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIg
Pj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAgICAgICAgICAgICAg
ICAgdGFibGVzLmNoZWNrW24yXSA9PSBzdGF0ZTEpCisgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gdGFibGVzLnRhYmxlW24yXTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gdGFibGVzLmRnb3RvW21dOworICAgICAgICAgICAgICAgIGlmIChzcCA+
PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0
LkdST1dfU1RBQ0tTXzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICAvKiBU
aGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi8KKyAgICAgICAgICAgIGNhc2UgQXV0b21h
dGEuU1RBQ0tfR1JPV05fMjoKKyAgICAgICAgICAgICAgICByZXMgPSBSZXN1bHQuQ09NUFVURV9T
RU1BTlRJQ19BQ1RJT047CisgICAgICAgICAgICAgICAgYnJlYWsgZXhpdDsKKyAgICAgICAgICAg
IC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi8KKyAgICAgICAgICAg
IGNhc2UgQXV0b21hdGEuU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOgorICAgICAgICAgICAgICAg
IGVudltlbnZfc19zdGFja11bc3AgLyogKyAxICovXSA9IHN0YXRlOworICAgICAgICAgICAgICAg
IGVudltlbnZfdl9zdGFja11bc3AgLyogKyAxKi9dID0gYXJnOworICAgICAgICAgICAgICAgIHZh
ciBhc3AgPSBlbnZbZW52X2FzcF07CisgICAgICAgICAgICAgICAgZW52W2Vudl9zeW1iX2VuZF9z
dGFja11bc3AgLyogKyAxKi9dID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwIC8qICsgMSov
XTsKKyAgICAgICAgICAgICAgICBpZiAoc3AgPiBhc3ApIHsKKyAgICAgICAgICAgICAgICAgICAg
LyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0
byBzeW1iX2VuZC4gKi8KKyAgICAgICAgICAgICAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0
YWNrXVtzcCAvKiArIDEqL10gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgLyorIDEqL107
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLkxPT1A7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKiBTaG91bGQgbm90IGhhcHBl
biAqLworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0
LlJBSVNFX1BBUlNFX0VSUk9SOworICAgICAgICB9CisgICAgfQorICAgIC8vIFNBVkUKKyAgICBl
bnZbZW52X3NwXSA9IHNwOworICAgIGVudltlbnZfc3RhdGVdID0gc3RhdGU7CisgICAgZW52W2Vu
dl9lcnJmbGFnXSA9IGVycmZsYWc7CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqCisgKiBleHRl
cm5hbCBzZXRfdHJhY2U6IGJvb2wgLT4gYm9vbCA9ICJjYW1sX3NldF9wYXJzZXJfdHJhY2UiCisg
KiBwYXJzaW5nLm1sCisgKiBAcGFyYW0ge2Jvb2xlYW59CisgKiBAcmV0dXJucyB7Ym9vbGVhbn0K
KyAqLworZnVuY3Rpb24gJCRjYW1sX3NldF9wYXJzZXJfdHJhY2UodikgeworICAgIHZhciBvbGQg
PSBQQVJTRVJfVFJBQ0U7CisgICAgUEFSU0VSX1RSQUNFID0gdjsKKyAgICByZXR1cm4gb2xkOwor
fQorCisKKzsKKworZnVuY3Rpb24gY2FtbF9wYXJzZV9lbmdpbmUocHJpbSwgcHJpbSQxLCBwcmlt
JDIsIHByaW0kMykgeworICByZXR1cm4gJCRjYW1sX3BhcnNlX2VuZ2luZShwcmltLCBwcmltJDEs
IHByaW0kMiwgcHJpbSQzKTsKK30KKworZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNlKHBy
aW0pIHsKKyAgcmV0dXJuICQkY2FtbF9zZXRfcGFyc2VyX3RyYWNlKHByaW0pOworfQorCitleHBv
cnRzLmNhbWxfcGFyc2VfZW5naW5lICAgICA9IGNhbWxfcGFyc2VfZW5naW5lOworZXhwb3J0cy5j
YW1sX3NldF9wYXJzZXJfdHJhY2UgPSBjYW1sX3NldF9wYXJzZXJfdHJhY2U7CisvKiAgTm90IGEg
cHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX3BhcnNlci5qcyAvLy8vLy8vLwor
wqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX3N0cmlu
ZyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3Rh
cnQgb2YgY2FtbF9zdHJpbmcuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIp
OworCitmdW5jdGlvbiBqc19zdHJpbmdfb2ZfY2hhcihwcmltKSB7CisgIHJldHVybiBTdHJpbmcu
ZnJvbUNoYXJDb2RlKHByaW0pOworfQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQocywgaSkg
eworICBpZiAoaSA+PSBzLmxlbmd0aCB8fCBpIDwgMCkgeworICAgIHRocm93IFsKKyAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJp
bmRleCBvdXQgb2YgYm91bmRzIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biBzLmNoYXJDb2RlQXQoaSk7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5n
KGxlbikgeworICBpZiAobGVuIDwgMCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJTdHJpbmcuY3Jl
YXRlIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBuZXcgQXJyYXkobGVu
KTsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikgeworICBp
ZiAoczEgPT09IHMyKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgZWxzZSBpZiAoczEgPCBzMikg
eworICAgIHJldHVybiAtMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMTsKKyAgfQorfQor
CitmdW5jdGlvbiBjYW1sX2ZpbGxfc3RyaW5nKHMsIGksIGwsIGMpIHsKKyAgaWYgKGwgPiAwKSB7
CisgICAgZm9yKHZhciBrID0gaSAsa19maW5pc2ggPSAobCArIGkgfCAwKSAtIDEgfCAwOyBrIDw9
IGtfZmluaXNoOyArK2speworICAgICAgc1trXSA9IGM7CisgICAgfQorICAgIHJldHVybiAvKiAo
KSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24g
Y2FtbF9ibGl0X3N0cmluZyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7CisgIGlmIChsZW4gPiAwKSB7
CisgICAgdmFyIG9mZjEgPSBzMS5sZW5ndGggLSBpMSB8IDA7CisgICAgaWYgKGxlbiA8PSBvZmYx
KSB7CisgICAgICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9IGlf
ZmluaXNoOyArK2kpeworICAgICAgICBzMltpMiArIGkgfCAwXSA9IHMxLmNoYXJDb2RlQXQoaTEg
KyBpIHwgMCk7CisgICAgICB9CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIGZvcih2YXIgaSQxID0gMCAsaV9maW5pc2gkMSA9IG9mZjEgLSAxIHwgMDsg
aSQxIDw9IGlfZmluaXNoJDE7ICsraSQxKXsKKyAgICAgICAgczJbaTIgKyBpJDEgfCAwXSA9IHMx
LmNoYXJDb2RlQXQoaTEgKyBpJDEgfCAwKTsKKyAgICAgIH0KKyAgICAgIGZvcih2YXIgaSQyID0g
b2ZmMSAsaV9maW5pc2gkMiA9IGxlbiAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gkMjsgKytpJDIp
eworICAgICAgICBzMltpMiArIGkkMiB8IDBdID0gLyogIlwwMDAiICovMDsKKyAgICAgIH0KKyAg
ICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAw
OworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfYmxpdF9ieXRlcyhzMSwgaTEsIHMyLCBpMiwgbGVu
KSB7CisgIGlmIChsZW4gPiAwKSB7CisgICAgaWYgKHMxID09PSBzMikgeworICAgICAgdmFyIHMx
JDEgPSBzMTsKKyAgICAgIHZhciBpMSQxID0gaTE7CisgICAgICB2YXIgaTIkMSA9IGkyOworICAg
ICAgdmFyIGxlbiQxID0gbGVuOworICAgICAgaWYgKGkxJDEgPCBpMiQxKSB7CisgICAgICAgIHZh
ciByYW5nZV9hID0gKHMxJDEubGVuZ3RoIC0gaTIkMSB8IDApIC0gMSB8IDA7CisgICAgICAgIHZh
ciByYW5nZV9iID0gbGVuJDEgLSAxIHwgMDsKKyAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2VfYSA+
IHJhbmdlX2IgPyByYW5nZV9iIDogcmFuZ2VfYTsKKyAgICAgICAgZm9yKHZhciBqID0gcmFuZ2U7
IGogPj0gMDsgLS1qKXsKKyAgICAgICAgICBzMSQxW2kyJDEgKyBqIHwgMF0gPSBzMSQxW2kxJDEg
KyBqIHwgMF07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0K
KyAgICAgIGVsc2UgaWYgKGkxJDEgPiBpMiQxKSB7CisgICAgICAgIHZhciByYW5nZV9hJDEgPSAo
czEkMS5sZW5ndGggLSBpMSQxIHwgMCkgLSAxIHwgMDsKKyAgICAgICAgdmFyIHJhbmdlX2IkMSA9
IGxlbiQxIC0gMSB8IDA7CisgICAgICAgIHZhciByYW5nZSQxID0gcmFuZ2VfYSQxID4gcmFuZ2Vf
YiQxID8gcmFuZ2VfYiQxIDogcmFuZ2VfYSQxOworICAgICAgICBmb3IodmFyIGsgPSAwOyBrIDw9
IHJhbmdlJDE7ICsrayl7CisgICAgICAgICAgczEkMVtpMiQxICsgayB8IDBdID0gczEkMVtpMSQx
ICsgayB8IDBdOworICAgICAgICB9CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9
CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfQorICAgIGVs
c2UgeworICAgICAgdmFyIG9mZjEgPSBzMS5sZW5ndGggLSBpMSB8IDA7CisgICAgICBpZiAobGVu
IDw9IG9mZjEpIHsKKyAgICAgICAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsZW4gLSAxIHwg
MDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICAgICAgICBzMltpMiArIGkgfCAwXSA9IHMxW2kx
ICsgaSB8IDBdOworICAgICAgICB9CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9
CisgICAgICBlbHNlIHsKKyAgICAgICAgZm9yKHZhciBpJDEgPSAwICxpX2ZpbmlzaCQxID0gb2Zm
MSAtIDEgfCAwOyBpJDEgPD0gaV9maW5pc2gkMTsgKytpJDEpeworICAgICAgICAgIHMyW2kyICsg
aSQxIHwgMF0gPSBzMVtpMSArIGkkMSB8IDBdOworICAgICAgICB9CisgICAgICAgIGZvcih2YXIg
aSQyID0gb2ZmMSAsaV9maW5pc2gkMiA9IGxlbiAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gkMjsg
KytpJDIpeworICAgICAgICAgIHMyW2kyICsgaSQyIHwgMF0gPSAvKiAiXDAwMCIgKi8wOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgfQorICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGJ5dGVzX29mX3N0cmlu
ZyhzKSB7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4p
OworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9IGlfZmluaXNo
OyArK2kpeworICAgIHJlc1tpXSA9IHMuY2hhckNvZGVBdChpKTsKKyAgfQorICByZXR1cm4gcmVz
OworfQorCitmdW5jdGlvbiBieXRlc190b19zdHJpbmcoYSkgeworICB2YXIgYnl0ZXMgPSBhOwor
ICB2YXIgaSA9IDA7CisgIHZhciBsZW4gPSBhLmxlbmd0aDsKKyAgdmFyIHMgPSAiIjsKKyAgdmFy
IHNfbGVuID0gbGVuOworICBpZiAoaSA9PT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT09IGJ5
dGVzLmxlbmd0aCkgeworICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGws
Ynl0ZXMpOworICB9CisgIGVsc2UgeworICAgIHZhciBvZmZzZXQgPSAwOworICAgIHdoaWxlKHNf
bGVuID4gMCkgeworICAgICAgdmFyIG5leHQgPSBzX2xlbiA8IDEwMjQgPyBzX2xlbiA6IDEwMjQ7
CisgICAgICB2YXIgdG1wX2J5dGVzID0gbmV3IEFycmF5KG5leHQpOworICAgICAgY2FtbF9ibGl0
X2J5dGVzKGJ5dGVzLCBvZmZzZXQsIHRtcF9ieXRlcywgMCwgbmV4dCk7CisgICAgICBzID0gcyAr
IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0bXBfYnl0ZXMpOworICAgICAgc19sZW4g
PSBzX2xlbiAtIG5leHQgfCAwOworICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICsgbmV4dCB8IDA7Cisg
ICAgfTsKKyAgICByZXR1cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9j
aGFyX2FycmF5KGNoYXJzKSB7CisgIHZhciBsZW4gPSBjaGFycy5sZW5ndGg7CisgIHZhciBieXRl
cyA9IG5ldyBBcnJheShsZW4pOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEg
fCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIGJ5dGVzW2ldID0gY2hhcnNbaV07CisgIH0K
KyAgcmV0dXJuIGJ5dGVzX3RvX3N0cmluZyhieXRlcyk7Cit9CisKK2Z1bmN0aW9uIGNhbWxfaXNf
cHJpbnRhYmxlKGMpIHsKKyAgaWYgKGMgPiAzMSkgeworICAgIHJldHVybiArKGMgPCAxMjcpOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KK30KKworZnVuY3Rp
b24gY2FtbF9zdHJpbmdfZ2V0MTYocywgaSkgeworICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpICsg
KHMuY2hhckNvZGVBdChpICsgMSB8IDApIDw8IDgpIHwgMDsKK30KKworZnVuY3Rpb24gY2FtbF9z
dHJpbmdfZ2V0MzIocywgaSkgeworICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgKyAocy5jaGFy
Q29kZUF0KGkgKyAxIHwgMCkgPDwgOCkgfCAwKSArIChzLmNoYXJDb2RlQXQoaSArIDIgfCAwKSA8
PCAxNikgfCAwKSArIChzLmNoYXJDb2RlQXQoaSArIDMgfCAwKSA8PCAyNCkgfCAwOworfQorCitm
dW5jdGlvbiBnZXQocywgaSkgeworICBpZiAoaSA8IDAgfHwgaSA+PSBzLmxlbmd0aCkgeworICAg
IHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3Vt
ZW50LAorICAgICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIgorICAgICAgICBdOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7CisgIH0KK30KKworZXhwb3J0cy5i
eXRlc19vZl9zdHJpbmcgICAgICAgICAgID0gYnl0ZXNfb2Zfc3RyaW5nOworZXhwb3J0cy5ieXRl
c190b19zdHJpbmcgICAgICAgICAgID0gYnl0ZXNfdG9fc3RyaW5nOworZXhwb3J0cy5jYW1sX2lz
X3ByaW50YWJsZSAgICAgICAgID0gY2FtbF9pc19wcmludGFibGU7CitleHBvcnRzLmNhbWxfc3Ry
aW5nX29mX2NoYXJfYXJyYXkgPSBjYW1sX3N0cmluZ19vZl9jaGFyX2FycmF5OworZXhwb3J0cy5j
YW1sX3N0cmluZ19nZXQgICAgICAgICAgID0gY2FtbF9zdHJpbmdfZ2V0OworZXhwb3J0cy5jYW1s
X3N0cmluZ19jb21wYXJlICAgICAgID0gY2FtbF9zdHJpbmdfY29tcGFyZTsKK2V4cG9ydHMuY2Ft
bF9jcmVhdGVfc3RyaW5nICAgICAgICA9IGNhbWxfY3JlYXRlX3N0cmluZzsKK2V4cG9ydHMuY2Ft
bF9maWxsX3N0cmluZyAgICAgICAgICA9IGNhbWxfZmlsbF9zdHJpbmc7CitleHBvcnRzLmNhbWxf
YmxpdF9zdHJpbmcgICAgICAgICAgPSBjYW1sX2JsaXRfc3RyaW5nOworZXhwb3J0cy5jYW1sX2Js
aXRfYnl0ZXMgICAgICAgICAgID0gY2FtbF9ibGl0X2J5dGVzOworZXhwb3J0cy5jYW1sX3N0cmlu
Z19nZXQxNiAgICAgICAgID0gY2FtbF9zdHJpbmdfZ2V0MTY7CitleHBvcnRzLmNhbWxfc3RyaW5n
X2dldDMyICAgICAgICAgPSBjYW1sX3N0cmluZ19nZXQzMjsKK2V4cG9ydHMuanNfc3RyaW5nX29m
X2NoYXIgICAgICAgICA9IGpzX3N0cmluZ19vZl9jaGFyOworZXhwb3J0cy5nZXQgICAgICAgICAg
ICAgICAgICAgICAgID0gZ2V0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBv
ZiBjYW1sX3N0cmluZy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9Owor
CisKKyAgX3JlZ2lzdHJ5WydjYW1sX3V0aWxzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBl
eHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX3V0aWxzLmpzIC8vLy8vLy8vCisn
dXNlIHN0cmljdCc7CisKKwordmFyIHJlcGVhdCA9ICggKFN0cmluZy5wcm90b3R5cGUucmVwZWF0
ICYmIGZ1bmN0aW9uIChjb3VudCxzZWxmKXtyZXR1cm4gc2VsZi5yZXBlYXQoY291bnQpfSkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24oY291bnQgLCBzZWxmKSB7CisgICAgICAgIGlmIChzZWxmLmxlbmd0aCA9PSAwIHx8IGNvdW50
ID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiAnJzsKKyAgICAgICAgfQorICAgICAgICAvLyBF
bnN1cmluZyBjb3VudCBpcyBhIDMxLWJpdCBpbnRlZ2VyIGFsbG93cyB1cyB0byBoZWF2aWx5IG9w
dGltaXplIHRoZQorICAgICAgICAvLyBtYWluIHBhcnQuIEJ1dCBhbnl3YXksIG1vc3QgY3VycmVu
dCAoQXVndXN0IDIwMTQpIGJyb3dzZXJzIGNhbid0IGhhbmRsZQorICAgICAgICAvLyBzdHJpbmdz
IDEgPDwgMjggY2hhcnMgb3IgbG9uZ2VyLCBzbzoKKyAgICAgICAgaWYgKHNlbGYubGVuZ3RoICog
Y291bnQgPj0gMSA8PCAyOCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3Jl
cGVhdCBjb3VudCBtdXN0IG5vdCBvdmVyZmxvdyBtYXhpbXVtIHN0cmluZyBzaXplJyk7CisgICAg
ICAgIH0KKyAgICAgICAgdmFyIHJwdCA9ICcnOworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAg
ICAgICBpZiAoKGNvdW50ICYgMSkgPT0gMSkgeworICAgICAgICAgICAgICAgIHJwdCArPSBzZWxm
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQgPj4+PSAxOworICAgICAgICAgICAg
aWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHNlbGYgKz0gc2VsZjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcnB0
OworICAgIH0KKyk7CisKK2V4cG9ydHMucmVwZWF0ID0gcmVwZWF0OworLyogcmVwZWF0IE5vdCBh
IHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF91dGlscy5qcyAvLy8vLy8vLwor
wqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjaGFyJ10gPSBm
dW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBj
aGFyLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX3N0cmluZyAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24g
Y2hyKG4pIHsKKyAgaWYgKG4gPCAwIHx8IG4gPiAyNTUpIHsKKyAgICB0aHJvdyBbCisgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAi
Q2hhci5jaHIiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG47CisgIH0K
K30KKworZnVuY3Rpb24gZXNjYXBlZChjKSB7CisgIHZhciBleGl0ID0gMDsKKyAgaWYgKGMgPj0g
NDApIHsKKyAgICBpZiAoYyAhPT0gOTIpIHsKKyAgICAgIGV4aXQgPSBjID49IDEyNyA/IDEgOiAy
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAiXFxcXCI7CisgICAgfQorICB9Cisg
IGVsc2UgaWYgKGMgPj0gMzIpIHsKKyAgICBpZiAoYyA+PSAzOSkgeworICAgICAgcmV0dXJuICJc
XCciOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGV4aXQgPSAyOworICAgIH0KKyAgfQorICBl
bHNlIGlmIChjID49IDE0KSB7CisgICAgZXhpdCA9IDE7CisgIH0KKyAgZWxzZSB7CisgICAgc3dp
dGNoIChjKSB7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICByZXR1cm4gIlxcYiI7CisgICAg
ICBjYXNlIDkgOiAKKyAgICAgICAgICByZXR1cm4gIlxcdCI7CisgICAgICBjYXNlIDEwIDogCisg
ICAgICAgICAgcmV0dXJuICJcXG4iOworICAgICAgY2FzZSAwIDogCisgICAgICBjYXNlIDEgOiAK
KyAgICAgIGNhc2UgMiA6IAorICAgICAgY2FzZSAzIDogCisgICAgICBjYXNlIDQgOiAKKyAgICAg
IGNhc2UgNSA6IAorICAgICAgY2FzZSA2IDogCisgICAgICBjYXNlIDcgOiAKKyAgICAgIGNhc2Ug
MTEgOiAKKyAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICByZXR1cm4gIlxcciI7CisgICAgICAK
KyAgICB9CisgIH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAgY2FzZSAxIDogCisgICAgICAgIHZh
ciBzID0gbmV3IEFycmF5KDQpOworICAgICAgICBzWzBdID0gLyogIlxcIiAqLzkyOworICAgICAg
ICBzWzFdID0gNDggKyAoYyAvIDEwMCB8IDApIHwgMDsKKyAgICAgICAgc1syXSA9IDQ4ICsgKGMg
LyAxMCB8IDApICUgMTAgfCAwOworICAgICAgICBzWzNdID0gNDggKyBjICUgMTAgfCAwOworICAg
ICAgICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHMpOworICAgIGNhc2UgMiA6
IAorICAgICAgICB2YXIgcyQxID0gbmV3IEFycmF5KDEpOworICAgICAgICBzJDFbMF0gPSBjOwor
ICAgICAgICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHMkMSk7CisgICAgCisg
IH0KK30KKworZnVuY3Rpb24gbG93ZXJjYXNlKGMpIHsKKyAgaWYgKGMgPj0gLyogIkEiICovNjUg
JiYgYyA8PSAvKiAiWiIgKi85MCB8fCBjID49IC8qICJcMTkyIiAqLzE5MiAmJiBjIDw9IC8qICJc
MjE0IiAqLzIxNCB8fCBjID49IC8qICJcMjE2IiAqLzIxNiAmJiBjIDw9IC8qICJcMjIyIiAqLzIy
MikgeworICAgIHJldHVybiBjICsgMzIgfCAwOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBj
OworICB9Cit9CisKK2Z1bmN0aW9uIHVwcGVyY2FzZShjKSB7CisgIGlmIChjID49IC8qICJhIiAq
Lzk3ICYmIGMgPD0gLyogInoiICovMTIyIHx8IGMgPj0gLyogIlwyMjQiICovMjI0ICYmIGMgPD0g
LyogIlwyNDYiICovMjQ2IHx8IGMgPj0gLyogIlwyNDgiICovMjQ4ICYmIGMgPD0gLyogIlwyNTQi
ICovMjU0KSB7CisgICAgcmV0dXJuIGMgLSAzMiB8IDA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0
dXJuIGM7CisgIH0KK30KKworZnVuY3Rpb24gY29tcGFyZShjMSwgYzIpIHsKKyAgcmV0dXJuIGMx
IC0gYzIgfCAwOworfQorCitleHBvcnRzLmNociAgICAgICA9IGNocjsKK2V4cG9ydHMuZXNjYXBl
ZCAgID0gZXNjYXBlZDsKK2V4cG9ydHMubG93ZXJjYXNlID0gbG93ZXJjYXNlOworZXhwb3J0cy51
cHBlcmNhc2UgPSB1cHBlcmNhc2U7CitleHBvcnRzLmNvbXBhcmUgICA9IGNvbXBhcmU7CisvKiBO
byBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNoYXIuanMgLy8vLy8vLy8KK8KgIMKg
IHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY3VycnknXSA9IGZ1bmN0
aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGN1cnJ5
LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX29vICAgID0gcmVxdWlyZSgi
Li9jYW1sX29vIik7Cit2YXIgQ2FtbF9hcnJheSA9IHJlcXVpcmUoIi4vY2FtbF9hcnJheSIpOwor
CitmdW5jdGlvbiBhcHAoX2YsIF9hcmdzKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgYXJn
cyA9IF9hcmdzOworICAgIHZhciBmID0gX2Y7CisgICAgdmFyIGFyaXR5ID0gZi5sZW5ndGg7Cisg
ICAgdmFyIGFyaXR5JDEgPSBhcml0eSA/IGFyaXR5IDogMTsKKyAgICB2YXIgbGVuID0gYXJncy5s
ZW5ndGg7CisgICAgdmFyIGQgPSBhcml0eSQxIC0gbGVuIHwgMDsKKyAgICBpZiAoZCkgeworICAg
ICAgaWYgKGQgPCAwKSB7CisgICAgICAgIF9hcmdzID0gQ2FtbF9hcnJheS5jYW1sX2FycmF5X3N1
YihhcmdzLCBhcml0eSQxLCAtZCB8IDApOworICAgICAgICBfZiA9IGYuYXBwbHkobnVsbCwgQ2Ft
bF9hcnJheS5jYW1sX2FycmF5X3N1YihhcmdzLCAwLCBhcml0eSQxKSk7CisgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIChm
dW5jdGlvbihmLGFyZ3MpeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAgICAg
ICByZXR1cm4gYXBwKGYsIGFyZ3MuY29uY2F0KC8qIGFycmF5ICovW3hdKSk7CisgICAgICAgIH0K
KyAgICAgICAgfShmLGFyZ3MpKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBy
ZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGpz
KGxhYmVsLCBjYWNoZWlkLCBvYmosIGFyZ3MpIHsKKyAgdmFyIG1ldGggPSBDYW1sX29vLmNhbWxf
Z2V0X3B1YmxpY19tZXRob2Qob2JqLCBsYWJlbCwgY2FjaGVpZCk7CisgIHJldHVybiBhcHAobWV0
aCwgYXJncyk7Cit9CisKK2Z1bmN0aW9uIGN1cnJ5XzEobywgYTAsIGFyaXR5KSB7CisgIGlmIChh
cml0eSA+IDcgfHwgYXJpdHkgPCAwKSB7CisgICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1th
MF0pOworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6
IAorICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIG8oYTApOworICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgcmV0
dXJuIG8oYTAsIHBhcmFtKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSkgeworICAgICAgICAgICAgcmV0dXJu
IG8oYTAsIHBhcmFtLCBwYXJhbSQxKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA0IDogCisg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgeworICAg
ICAgICAgICAgcmV0dXJuIG8oYTAsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsKKyAgICAgICAg
ICB9OworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwg
cGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMykgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBh
cmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzKTsKKyAgICAgICAgICB9OworICAgICAgY2Fz
ZSA2IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0k
MiwgcGFyYW0kMywgcGFyYW0kNCkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBhcmFtLCBw
YXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0KTsKKyAgICAgICAgICB9OworICAgICAg
Y2FzZSA3IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFy
YW0kMiwgcGFyYW0kMywgcGFyYW0kNCwgcGFyYW0kNSkgeworICAgICAgICAgICAgcmV0dXJuIG8o
YTAsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0LCBwYXJhbSQ1KTsK
KyAgICAgICAgICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF8xKG8sIGEw
KSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDEpIHsKKyAgICBy
ZXR1cm4gbyhhMCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGN1cnJ5XzEobywgYTAsIGFy
aXR5KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczEobGFiZWwsIGNhY2hlaWQsIGEwKSB7CisgIHJl
dHVybiBfMShDYW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAsIGxhYmVsLCBjYWNoZWlk
KSwgYTApOworfQorCitmdW5jdGlvbiBfXzEobykgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsK
KyAgaWYgKGFyaXR5ID09PSAxKSB7CisgICAgcmV0dXJuIG87CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIGZ1bmN0aW9uIChhMCkgeworICAgICAgcmV0dXJuIF8xKG8sIGEwKTsKKyAgICB9Owor
ICB9Cit9CisKK2Z1bmN0aW9uIGN1cnJ5XzIobywgYTAsIGExLCBhcml0eSkgeworICBpZiAoYXJp
dHkgPiA3IHx8IGFyaXR5IDwgMCkgeworICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9bCisg
ICAgICAgICAgICAgICAgYTAsCisgICAgICAgICAgICAgICAgYTEKKyAgICAgICAgICAgICAgXSk7
CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChhcml0eSkgeworICAgICAgY2FzZSAwIDogCisg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAqL1th
MV0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIG8oYTAsIGExKTsKKyAgICAg
IGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAg
ICAgIHJldHVybiBvKGEwLCBhMSwgcGFyYW0pOworICAgICAgICAgIH07CisgICAgICBjYXNlIDQg
OiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxKSB7CisgICAgICAg
ICAgICByZXR1cm4gbyhhMCwgYTEsIHBhcmFtLCBwYXJhbSQxKTsKKyAgICAgICAgICB9OworICAg
ICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwg
cGFyYW0kMikgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBwYXJhbSwgcGFyYW0kMSwg
cGFyYW0kMik7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVy
biBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpIHsKKyAgICAgICAg
ICAgIHJldHVybiBvKGEwLCBhMSwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpOwor
ICAgICAgICAgIH07CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0KSB7CisgICAgICAgICAg
ICByZXR1cm4gbyhhMCwgYTEsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJh
bSQ0KTsKKyAgICAgICAgICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF8y
KG8sIGEwLCBhMSkgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSAy
KSB7CisgICAgcmV0dXJuIG8oYTAsIGExKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gY3Vy
cnlfMihvLCBhMCwgYTEsIGFyaXR5KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczIobGFiZWwsIGNh
Y2hlaWQsIGEwLCBhMSkgeworICByZXR1cm4gXzIoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0
aG9kKGEwLCBsYWJlbCwgY2FjaGVpZCksIGEwLCBhMSk7Cit9CisKK2Z1bmN0aW9uIF9fMihvKSB7
CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDIpIHsKKyAgICByZXR1
cm4gbzsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGEwLCBhMSkgeworICAg
ICAgcmV0dXJuIF8yKG8sIGEwLCBhMSk7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJy
eV8zKG8sIGEwLCBhMSwgYTIsIGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcgfHwgYXJpdHkgPCAw
KSB7CisgICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICBhMCwK
KyAgICAgICAgICAgICAgICBhMSwKKyAgICAgICAgICAgICAgICBhMgorICAgICAgICAgICAgICBd
KTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAgOiAK
KyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5ICov
WworICAgICAgICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgICAgICAgIGEyCisg
ICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJu
IGFwcChvKGEwLCBhMSksIC8qIGFycmF5ICovW2EyXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICByZXR1cm4gbyhhMCwgYTEsIGEyKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIs
IHBhcmFtKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGEx
LCBhMiwgcGFyYW0sIHBhcmFtJDEpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDYgOiAKKyAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKSB7CisgICAg
ICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMik7Cisg
ICAgICAgICAgfTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAo
cGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpIHsKKyAgICAgICAgICAgIHJldHVybiBv
KGEwLCBhMSwgYTIsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzKTsKKyAgICAgICAg
ICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF8zKG8sIGEwLCBhMSwgYTIp
IHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gMykgeworICAgIHJl
dHVybiBvKGEwLCBhMSwgYTIpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBjdXJyeV8zKG8s
IGEwLCBhMSwgYTIsIGFyaXR5KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczMobGFiZWwsIGNhY2hl
aWQsIGEwLCBhMSwgYTIpIHsKKyAgcmV0dXJuIF8zKENhbWxfb28uY2FtbF9nZXRfcHVibGljX21l
dGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEsIGEyKTsKK30KKworZnVuY3Rpb24gX18z
KG8pIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gMykgeworICAg
IHJldHVybiBvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBh
MikgeworICAgICAgcmV0dXJuIF8zKG8sIGEwLCBhMSwgYTIpOworICAgIH07CisgIH0KK30KKwor
ZnVuY3Rpb24gY3VycnlfNChvLCBhMCwgYTEsIGEyLCBhMywgYXJpdHkpIHsKKyAgaWYgKGFyaXR5
ID4gNyB8fCBhcml0eSA8IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovWworICAg
ICAgICAgICAgICAgIGEwLAorICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgIGEy
LAorICAgICAgICAgICAgICAgIGEzCisgICAgICAgICAgICAgIF0pOworICB9CisgIGVsc2Ugewor
ICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgY2FzZSAxIDogCisg
ICAgICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgYTEsCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAg
ICAgYTMKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAg
ICByZXR1cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMKKyAgICAgICAgICAgICAgICAgICAgXSk7
CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiksIC8q
IGFycmF5ICovW2EzXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gbyhhMCwg
YTEsIGEyLCBhMyk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KHBhcmFtKSB7CisgICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgcGFyYW0pOwor
ICAgICAgICAgIH07CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KHBhcmFtLCBwYXJhbSQxKSB7CisgICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywg
cGFyYW0sIHBhcmFtJDEpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAg
ICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKSB7CisgICAgICAgICAg
ICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOworICAg
ICAgICAgIH07CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzQobywgYTAsIGEx
LCBhMiwgYTMpIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNCkg
eworICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gY3VycnlfNChvLCBhMCwgYTEsIGEyLCBhMywgYXJpdHkpOworICB9Cit9CisKK2Z1bmN0aW9u
IGpzNChsYWJlbCwgY2FjaGVpZCwgYTAsIGExLCBhMiwgYTMpIHsKKyAgcmV0dXJuIF80KENhbWxf
b28uY2FtbF9nZXRfcHVibGljX21ldGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEsIGEy
LCBhMyk7Cit9CisKK2Z1bmN0aW9uIF9fNChvKSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOwor
ICBpZiAoYXJpdHkgPT09IDQpIHsKKyAgICByZXR1cm4gbzsKKyAgfQorICBlbHNlIHsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKGEwLCBhMSwgYTIsIGEzKSB7CisgICAgICByZXR1cm4gXzQobywgYTAs
IGExLCBhMiwgYTMpOworICAgIH07CisgIH0KK30KKworZnVuY3Rpb24gY3VycnlfNShvLCBhMCwg
YTEsIGEyLCBhMywgYTQsIGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcgfHwgYXJpdHkgPCAwKSB7
CisgICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICBhMCwKKyAg
ICAgICAgICAgICAgICBhMSwKKyAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICBh
MywKKyAgICAgICAgICAgICAgICBhNAorICAgICAgICAgICAgICBdKTsKKyAgfQorICBlbHNlIHsK
KyAgICBzd2l0Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgIHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAg
ICAgICAgIGExLAorICAgICAgICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgICAg
ICAgIGEzLAorICAgICAgICAgICAgICAgICAgICAgIGE0CisgICAgICAgICAgICAgICAgICAgIF0p
OworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSksIC8qIGFy
cmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgICAgICAg
IGEzLAorICAgICAgICAgICAgICAgICAgICAgIGE0CisgICAgICAgICAgICAgICAgICAgIF0pOwor
ICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIpLCAvKiBh
cnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBhMywKKyAgICAgICAgICAgICAgICAgICAg
ICBhNAorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAg
IHJldHVybiBhcHAobyhhMCwgYTEsIGEyLCBhMyksIC8qIGFycmF5ICovW2E0XSk7CisgICAgICBj
YXNlIDUgOiAKKyAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQpOworICAgICAg
Y2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAg
ICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBwYXJhbSk7CisgICAgICAgICAgfTsKKyAg
ICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEp
IHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgcGFyYW0sIHBhcmFt
JDEpOworICAgICAgICAgIH07CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzUo
bywgYTAsIGExLCBhMiwgYTMsIGE0KSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAo
YXJpdHkgPT09IDUpIHsKKyAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQpOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiBjdXJyeV81KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYXJpdHkp
OworICB9Cit9CisKK2Z1bmN0aW9uIGpzNShsYWJlbCwgY2FjaGVpZCwgYTAsIGExLCBhMiwgYTMs
IGE0KSB7CisgIHJldHVybiBfNShDYW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAsIGxh
YmVsLCBjYWNoZWlkKSwgYTAsIGExLCBhMiwgYTMsIGE0KTsKK30KKworZnVuY3Rpb24gX181KG8p
IHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNSkgeworICAgIHJl
dHVybiBvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBhMiwg
YTMsIGE0KSB7CisgICAgICByZXR1cm4gXzUobywgYTAsIGExLCBhMiwgYTMsIGE0KTsKKyAgICB9
OworICB9Cit9CisKK2Z1bmN0aW9uIGN1cnJ5XzYobywgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwg
YXJpdHkpIHsKKyAgaWYgKGFyaXR5ID4gNyB8fCBhcml0eSA8IDApIHsKKyAgICByZXR1cm4gYXBw
KG8sIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgIGEwLAorICAgICAgICAgICAgICAgIGEx
LAorICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAg
ICAgIGE0LAorICAgICAgICAgICAgICAgIGE1CisgICAgICAgICAgICAgIF0pOworICB9CisgIGVs
c2UgeworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAg
ICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAg
ICAgICAgYTUKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICByZXR1cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAg
ICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAgYTUKKyAgICAgICAgICAgICAgICAgICAgXSk7
CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiksIC8q
IGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgICAg
ICAgIGE0LAorICAgICAgICAgICAgICAgICAgICAgIGE1CisgICAgICAgICAgICAgICAgICAgIF0p
OworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEz
KSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAg
ICAgICAgICAgYTUKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDUgOiAKKyAg
ICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0KSwgLyogYXJyYXkgKi9bYTVd
KTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBh
NCwgYTUpOworICAgICAgY2FzZSA3IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJh
bSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgcGFyYW0p
OworICAgICAgICAgIH07CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzYobywg
YTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYg
KGFyaXR5ID09PSA2KSB7CisgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSk7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGN1cnJ5XzYobywgYTAsIGExLCBhMiwgYTMsIGE0LCBh
NSwgYXJpdHkpOworICB9Cit9CisKK2Z1bmN0aW9uIGpzNihsYWJlbCwgY2FjaGVpZCwgYTAsIGEx
LCBhMiwgYTMsIGE0LCBhNSkgeworICByZXR1cm4gXzYoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNf
bWV0aG9kKGEwLCBsYWJlbCwgY2FjaGVpZCksIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOworfQor
CitmdW5jdGlvbiBfXzYobykgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5
ID09PSA2KSB7CisgICAgcmV0dXJuIG87CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZ1bmN0
aW9uIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSB7CisgICAgICByZXR1cm4gXzYobywgYTAsIGEx
LCBhMiwgYTMsIGE0LCBhNSk7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV83KG8s
IGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhcml0eSkgeworICBpZiAoYXJpdHkgPiA3IHx8
IGFyaXR5IDwgMCkgeworICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9bCisgICAgICAgICAg
ICAgICAgYTAsCisgICAgICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgYTIsCisgICAg
ICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAgYTUs
CisgICAgICAgICAgICAgICAgYTYKKyAgICAgICAgICAgICAgXSk7CisgIH0KKyAgZWxzZSB7Cisg
ICAgc3dpdGNoIChhcml0eSkgeworICAgICAgY2FzZSAwIDogCisgICAgICBjYXNlIDEgOiAKKyAg
ICAgICAgICByZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgICBhMSwKKyAgICAgICAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICAgICAg
ICBhMywKKyAgICAgICAgICAgICAgICAgICAgICBhNCwKKyAgICAgICAgICAgICAgICAgICAgICBh
NSwKKyAgICAgICAgICAgICAgICAgICAgICBhNgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEpLCAvKiBhcnJheSAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICAgICAgICBhMywK
KyAgICAgICAgICAgICAgICAgICAgICBhNCwKKyAgICAgICAgICAgICAgICAgICAgICBhNSwKKyAg
ICAgICAgICAgICAgICAgICAgICBhNgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyKSwgLyogYXJyYXkgKi9b
CisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisg
ICAgICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYKKyAgICAg
ICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gYXBw
KG8oYTAsIGExLCBhMiwgYTMpLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBh
NCwKKyAgICAgICAgICAgICAgICAgICAgICBhNSwKKyAgICAgICAgICAgICAgICAgICAgICBhNgor
ICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVy
biBhcHAobyhhMCwgYTEsIGEyLCBhMywgYTQpLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICBhNSwKKyAgICAgICAgICAgICAgICAgICAgICBhNgorICAgICAgICAgICAgICAgICAg
ICBdKTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEy
LCBhMywgYTQsIGE1KSwgLyogYXJyYXkgKi9bYTZdKTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAg
ICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKKyAgICAgIAorICAgIH0K
KyAgfQorfQorCitmdW5jdGlvbiBfNyhvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgewor
ICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSA3KSB7CisgICAgcmV0dXJu
IG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biBjdXJyeV83KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhcml0eSk7CisgIH0KK30K
KworZnVuY3Rpb24ganM3KGxhYmVsLCBjYWNoZWlkLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBh
NikgeworICByZXR1cm4gXzcoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0aG9kKGEwLCBsYWJl
bCwgY2FjaGVpZCksIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKK30KKworZnVuY3Rpb24g
X183KG8pIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNykgewor
ICAgIHJldHVybiBvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGEx
LCBhMiwgYTMsIGE0LCBhNSwgYTYpIHsKKyAgICAgIHJldHVybiBfNyhvLCBhMCwgYTEsIGEyLCBh
MywgYTQsIGE1LCBhNik7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV84KG8sIGEw
LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYXJpdHkpIHsKKyAgaWYgKGFyaXR5ID4gNyB8
fCBhcml0eSA8IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovWworICAgICAgICAg
ICAgICAgIGEwLAorICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgIGEyLAorICAg
ICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgIGE0LAorICAgICAgICAgICAgICAgIGE1
LAorICAgICAgICAgICAgICAgIGE2LAorICAgICAgICAgICAgICAgIGE3CisgICAgICAgICAgICAg
IF0pOworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6
IAorICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkg
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgICAgICAgYTIs
CisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisg
ICAgICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYsCisgICAg
ICAgICAgICAgICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNl
IDIgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAg
ICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAg
ICAgICAgICAgICAgYTYsCisgICAgICAgICAgICAgICAgICAgICAgYTcKKyAgICAgICAgICAgICAg
ICAgICAgXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGEx
LCBhMiksIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAg
ICAgICAgICAgICAgIGE0LAorICAgICAgICAgICAgICAgICAgICAgIGE1LAorICAgICAgICAgICAg
ICAgICAgICAgIGE2LAorICAgICAgICAgICAgICAgICAgICAgIGE3CisgICAgICAgICAgICAgICAg
ICAgIF0pOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwg
YTIsIGEzKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAg
ICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYsCisgICAgICAgICAg
ICAgICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDUgOiAK
KyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0KSwgLyogYXJyYXkgKi9b
CisgICAgICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYsCisg
ICAgICAgICAgICAgICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBj
YXNlIDYgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSks
IC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGE2LAorICAgICAgICAgICAgICAg
ICAgICAgIGE3CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA3IDogCisgICAg
ICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSwgLyogYXJyYXkg
Ki9bYTddKTsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBfOChvLCBhMCwgYTEs
IGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlm
IChhcml0eSA9PT0gOCkgeworICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2
LCBhNyk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGN1cnJ5XzgobywgYTAsIGExLCBhMiwg
YTMsIGE0LCBhNSwgYTYsIGE3LCBhcml0eSk7CisgIH0KK30KKworZnVuY3Rpb24ganM4KGxhYmVs
LCBjYWNoZWlkLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIHsKKyAgcmV0dXJuIF84
KENhbWxfb28uY2FtbF9nZXRfcHVibGljX21ldGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCwg
YTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOworfQorCitmdW5jdGlvbiBfXzgobykgeworICB2
YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSA4KSB7CisgICAgcmV0dXJuIG87
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyLCBhMywgYTQs
IGE1LCBhNiwgYTcpIHsKKyAgICAgIHJldHVybiBfOChvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1
LCBhNiwgYTcpOworICAgIH07CisgIH0KK30KKworZXhwb3J0cy5hcHAgICAgID0gYXBwOworZXhw
b3J0cy5qcyAgICAgID0ganM7CitleHBvcnRzLmN1cnJ5XzEgPSBjdXJyeV8xOworZXhwb3J0cy5f
MSAgICAgID0gXzE7CitleHBvcnRzLmpzMSAgICAgPSBqczE7CitleHBvcnRzLl9fMSAgICAgPSBf
XzE7CitleHBvcnRzLmN1cnJ5XzIgPSBjdXJyeV8yOworZXhwb3J0cy5fMiAgICAgID0gXzI7Citl
eHBvcnRzLmpzMiAgICAgPSBqczI7CitleHBvcnRzLl9fMiAgICAgPSBfXzI7CitleHBvcnRzLmN1
cnJ5XzMgPSBjdXJyeV8zOworZXhwb3J0cy5fMyAgICAgID0gXzM7CitleHBvcnRzLmpzMyAgICAg
PSBqczM7CitleHBvcnRzLl9fMyAgICAgPSBfXzM7CitleHBvcnRzLmN1cnJ5XzQgPSBjdXJyeV80
OworZXhwb3J0cy5fNCAgICAgID0gXzQ7CitleHBvcnRzLmpzNCAgICAgPSBqczQ7CitleHBvcnRz
Ll9fNCAgICAgPSBfXzQ7CitleHBvcnRzLmN1cnJ5XzUgPSBjdXJyeV81OworZXhwb3J0cy5fNSAg
ICAgID0gXzU7CitleHBvcnRzLmpzNSAgICAgPSBqczU7CitleHBvcnRzLl9fNSAgICAgPSBfXzU7
CitleHBvcnRzLmN1cnJ5XzYgPSBjdXJyeV82OworZXhwb3J0cy5fNiAgICAgID0gXzY7CitleHBv
cnRzLmpzNiAgICAgPSBqczY7CitleHBvcnRzLl9fNiAgICAgPSBfXzY7CitleHBvcnRzLmN1cnJ5
XzcgPSBjdXJyeV83OworZXhwb3J0cy5fNyAgICAgID0gXzc7CitleHBvcnRzLmpzNyAgICAgPSBq
czc7CitleHBvcnRzLl9fNyAgICAgPSBfXzc7CitleHBvcnRzLmN1cnJ5XzggPSBjdXJyeV84Owor
ZXhwb3J0cy5fOCAgICAgID0gXzg7CitleHBvcnRzLmpzOCAgICAgPSBqczg7CitleHBvcnRzLl9f
OCAgICAgPSBfXzg7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGN1cnJ5
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ2RlY29kZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8v
Ly8vLy8gc3RhcnQgb2YgZGVjb2RlLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xF
U0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIEYzMiAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjMyIik7Cit2YXIgRjY0ICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9mNjQiKTsKK3ZhciBJMzIgICAgICAgICAgICAgPSByZXF1
aXJlKCIuL2kzMiIpOwordmFyIExpYiAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGliIik7Cit2
YXIgTGlzdCAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsK
K3ZhciBCbG9jayAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2si
KTsKK3ZhciBDdXJyeSAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3Vy
cnkiKTsKK3ZhciAkJEVycm9yICAgICAgICAgPSByZXF1aXJlKCIuL2Vycm9yIik7Cit2YXIgRW5j
b2RlICAgICAgICAgID0gcmVxdWlyZSgiLi9lbmNvZGUiKTsKK3ZhciBQcmludGYgICAgICAgICAg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcHJpbnRmIik7Cit2YXIgU291cmNlICAgICAg
ICAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciAkJFN0cmluZyAgICAgICAgPSByZXF1aXJl
KCJicy1wbGF0Zm9ybS9saWIvanMvc3RyaW5nIik7Cit2YXIgQ2FtbF9vYmogICAgICAgID0gcmVx
dWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIgT3BlcmF0b3JzICAgICAg
ID0gcmVxdWlyZSgiLi9vcGVyYXRvcnMiKTsKK3ZhciBDYW1sX2ludDY0ICAgICAgPSByZXF1aXJl
KCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9pbnQ2NCIpOwordmFyIENhbWxfc3RyaW5nICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfZXhj
ZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2V4Y2VwdGlvbnMiKTsK
KwordmFyIEVPUyA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIkRlY29kZS5FT1MiKTsKKworZnVu
Y3Rpb24gc3RyZWFtKG5hbWUsIGJzKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAg
ICAgLyogbmFtZSAqL25hbWUsCisgICAgICAgICAgLyogYnl0ZXMgKi9icywKKyAgICAgICAgICAv
KiBwb3MgKi9bMF0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZW9zKHMpIHsKKyAgcmV0dXJu
ICsoc1svKiBwb3MgKi8yXVswXSA9PT0gc1svKiBieXRlcyAqLzFdLmxlbmd0aCk7Cit9CisKK2Z1
bmN0aW9uIGNoZWNrKG4sIHMpIHsKKyAgaWYgKChzWy8qIHBvcyAqLzJdWzBdICsgbiB8IDApID4g
c1svKiBieXRlcyAqLzFdLmxlbmd0aCkgeworICAgIHRocm93IEVPUzsKKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBza2lwKG4sIHMpIHsKKyAgY2hlY2so
biwgcyk7CisgIHNbLyogcG9zICovMl1bMF0gPSBzWy8qIHBvcyAqLzJdWzBdICsgbiB8IDA7Cisg
IHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHJlYWQocykgeworICByZXR1cm4gQ2Ft
bF9zdHJpbmcuZ2V0KHNbLyogYnl0ZXMgKi8xXSwgc1svKiBwb3MgKi8yXVswXSk7Cit9CisKK2Z1
bmN0aW9uIHBlZWsocykgeworICBpZiAoZW9zKHMpKSB7CisgICAgcmV0dXJuIC8qIE5vbmUgKi8w
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBTb21lICovW3JlYWQocyldOworICB9Cit9
CisKK2Z1bmN0aW9uIGdldChzKSB7CisgIGNoZWNrKDEsIHMpOworICB2YXIgYiA9IHJlYWQocyk7
CisgIHNraXAoMSwgcyk7CisgIHJldHVybiBiOworfQorCit2YXIgQ29kZSA9ICQkRXJyb3IuTWFr
ZSgvKiBtb2R1bGUgKi9bXSk7CisKK3ZhciBDb2RlJDEgPSBDb2RlWy8qIEVycm9yICovMF07CisK
K2Z1bmN0aW9uIHN0cmluZ19vZl9ieXRlKGIpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50Zi5z
cHJpbnRmKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9f
KDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfeCAqLzYsCisgICAgICAgICAgICAg
ICAgICAgICAgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFplcm9zICovMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMgorICAg
ICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJl
Y2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAor
ICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICIlMDJ4IgorICAgICAg
ICAgICAgICAgIF0pLCBiKTsKK30KKworZnVuY3Rpb24gcG9zaXRpb24ocywgcG9zKSB7CisgIHJl
dHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogZmlsZSAqL3NbLyogbmFtZSAqLzBdLAor
ICAgICAgICAgIC8qIGxpbmUgKi8tMSwKKyAgICAgICAgICAvKiBjb2x1bW4gKi9wb3MKKyAgICAg
ICAgXTsKK30KKworZnVuY3Rpb24gcmVnaW9uKHMsIGxlZnQsIHJpZ2h0KSB7CisgIHJldHVybiAv
KiByZWNvcmQgKi9bCisgICAgICAgICAgLyogbGVmdCAqL3Bvc2l0aW9uKHMsIGxlZnQpLAorICAg
ICAgICAgIC8qIHJpZ2h0ICovcG9zaXRpb24ocywgcmlnaHQpCisgICAgICAgIF07Cit9CisKK2Z1
bmN0aW9uIGVycm9yKHMsIHBvcywgbXNnKSB7CisgIHRocm93IFsKKyAgICAgICAgQ29kZSQxLAor
ICAgICAgICByZWdpb24ocywgcG9zLCBwb3MpLAorICAgICAgICBtc2cKKyAgICAgIF07Cit9CisK
K2Z1bmN0aW9uICQkcmVxdWlyZShiLCBzLCBwb3MsIG1zZykgeworICBpZiAoYikgeworICAgIHJl
dHVybiAwOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBlcnJvcihzLCBwb3MsIG1zZyk7Cisg
IH0KK30KKworZnVuY3Rpb24gZ3VhcmQoZiwgcykgeworICB0cnkgeworICAgIHJldHVybiBDdXJy
eS5fMShmLCBzKTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBFT1MpIHsK
KyAgICAgIHJldHVybiBlcnJvcihzLCBzWy8qIGJ5dGVzICovMV0ubGVuZ3RoLCAidW5leHBlY3Rl
ZCBlbmQgb2YgYmluYXJ5IG9yIGZ1bmN0aW9uIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
dGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBnZXQkMShwYXJhbSkgeworICBy
ZXR1cm4gZ3VhcmQoZ2V0LCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGV4cGVjdChiLCBzLCBtc2cp
IHsKKyAgcmV0dXJuICQkcmVxdWlyZSgrKGd1YXJkKGdldCQxLCBzKSA9PT0gYiksIHMsIHNbLyog
cG9zICovMl1bMF0gLSAxIHwgMCwgbXNnKTsKK30KKworZnVuY3Rpb24gaWxsZWdhbChzLCBwb3Ms
IGIpIHsKKyAgcmV0dXJuIGVycm9yKHMsIHBvcywgImlsbGVnYWwgb3Bjb2RlICIgKyBzdHJpbmdf
b2ZfYnl0ZShiKSk7Cit9CisKK2Z1bmN0aW9uIGF0KGYsIHMpIHsKKyAgdmFyIGxlZnQgPSBzWy8q
IHBvcyAqLzJdWzBdOworICB2YXIgeCA9IEN1cnJ5Ll8xKGYsIHMpOworICB2YXIgcmlnaHQgPSBz
Wy8qIHBvcyAqLzJdWzBdOworICByZXR1cm4gU291cmNlLiRhdCRhdCh4LCByZWdpb24ocywgbGVm
dCwgcmlnaHQpKTsKK30KKworZnVuY3Rpb24gdTE2KHMpIHsKKyAgdmFyIGxvID0gZ3VhcmQoZ2V0
LCBzKTsKKyAgdmFyIGhpID0gZ3VhcmQoZ2V0LCBzKTsKKyAgcmV0dXJuIChoaSA8PCA4KSArIGxv
IHwgMDsKK30KKworZnVuY3Rpb24gdTMyKHMpIHsKKyAgdmFyIGxvID0gdTE2KHMpOworICB2YXIg
aGkgPSB1MTYocyk7CisgIHJldHVybiBsbyArIChoaSA8PCAxNikgfCAwOworfQorCitmdW5jdGlv
biB1NjQocykgeworICB2YXIgbG8gPSBDYW1sX2ludDY0Lm9mX2ludDMyKHUzMihzKSk7CisgIHZh
ciBoaSA9IENhbWxfaW50NjQub2ZfaW50MzIodTMyKHMpKTsKKyAgcmV0dXJuIENhbWxfaW50NjQu
YWRkKGxvLCBDYW1sX2ludDY0LmxzbF8oaGksIDMyKSk7Cit9CisKK2Z1bmN0aW9uIHZ1TihuLCBz
KSB7CisgICQkcmVxdWlyZSgrKG4gPiAwKSwgcywgc1svKiBwb3MgKi8yXVswXSwgImludGVnZXIg
cmVwcmVzZW50YXRpb24gdG9vIGxvbmciKTsKKyAgdmFyIGIgPSBndWFyZChnZXQsIHMpOworICAk
JHJlcXVpcmUoKyhuID49IDcgfHwgKGIgJiAxMjcpIDwgKDEgPDwgbikpLCBzLCBzWy8qIHBvcyAq
LzJdWzBdIC0gMSB8IDAsICJpbnRlZ2VyIHRvbyBsYXJnZSIpOworICB2YXIgeCA9IENhbWxfaW50
NjQub2ZfaW50MzIoYiAmIDEyNyk7CisgIGlmIChiICYgMTI4KSB7CisgICAgcmV0dXJuIENhbWxf
aW50NjQub3JfKHgsIENhbWxfaW50NjQubHNsXyh2dU4obiAtIDcgfCAwLCBzKSwgNykpOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiB4OworICB9Cit9CisKK2Z1bmN0aW9uIHZzTihuLCBzKSB7
CisgICQkcmVxdWlyZSgrKG4gPiAwKSwgcywgc1svKiBwb3MgKi8yXVswXSwgImludGVnZXIgcmVw
cmVzZW50YXRpb24gdG9vIGxvbmciKTsKKyAgdmFyIGIgPSBndWFyZChnZXQsIHMpOworICB2YXIg
bWFzayA9ICgtMSA8PCBuKSAmIDEyNzsKKyAgJCRyZXF1aXJlKCsobiA+PSA3IHx8IChiICYgbWFz
aykgPT09IDAgfHwgKGIgJiBtYXNrKSA9PT0gbWFzayksIHMsIHNbLyogcG9zICovMl1bMF0gLSAx
IHwgMCwgImludGVnZXIgdG9vIGxhcmdlIik7CisgIHZhciB4ID0gQ2FtbF9pbnQ2NC5vZl9pbnQz
MihiICYgMTI3KTsKKyAgaWYgKGIgJiAxMjgpIHsKKyAgICByZXR1cm4gQ2FtbF9pbnQ2NC5vcl8o
eCwgQ2FtbF9pbnQ2NC5sc2xfKHZzTihuIC0gNyB8IDAsIHMpLCA3KSk7CisgIH0KKyAgZWxzZSBp
ZiAoYiAmIDY0KSB7CisgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgLyogaGkg
Ki94WzBdIHwgLyogaGkgKi8tMSwKKyAgICAgICAgICAgIC8qIGxvICovKCh4WzFdIHwgLyogbG8g
Ki80Mjk0OTY3MTY4KSA+Pj4gMCkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiB4OworICB9Cit9CisKK2Z1bmN0aW9uIHZ1MzIocykgeworICByZXR1cm4gdnVOKDMyLCBz
KVsxXSB8IDA7Cit9CisKK2Z1bmN0aW9uIHZzMzIocykgeworICByZXR1cm4gdnNOKDMyLCBzKVsx
XSB8IDA7Cit9CisKK2Z1bmN0aW9uIHZzNjQocykgeworICByZXR1cm4gdnNOKDY0LCBzKTsKK30K
KworZnVuY3Rpb24gZjMyKHMpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKEYzMi5vZl9iaXRzLCB1MzIo
cykpOworfQorCitmdW5jdGlvbiBmNjQocykgeworICByZXR1cm4gQ3VycnkuXzEoRjY0Lm9mX2Jp
dHMsIHU2NChzKSk7Cit9CisKK2Z1bmN0aW9uIGxlbjMyKHMpIHsKKyAgdmFyIHBvcyA9IHNbLyog
cG9zICovMl1bMF07CisgIHZhciBuID0gdnVOKDMyLCBzKVsxXSB8IDA7CisgIGlmIChuIDw9IHNb
LyogYnl0ZXMgKi8xXS5sZW5ndGgpIHsKKyAgICByZXR1cm4gbjsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gZXJyb3IocywgcG9zLCAibGVuZ3RoIG91dCBvZiBib3VuZHMiKTsKKyAgfQorfQor
CitmdW5jdGlvbiBzdHJpbmcocykgeworICB2YXIgbiA9IGxlbjMyKHMpOworICByZXR1cm4gZ3Vh
cmQoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHZhciBuJDEgPSBuOworICAgICAg
ICAgICAgICB2YXIgcyA9IHBhcmFtOworICAgICAgICAgICAgICB2YXIgaSA9IHNbLyogcG9zICov
Ml1bMF07CisgICAgICAgICAgICAgIHNraXAobiQxLCBzKTsKKyAgICAgICAgICAgICAgcmV0dXJu
ICQkU3RyaW5nLnN1YihzWy8qIGJ5dGVzICovMV0sIGksIG4kMSk7CisgICAgICAgICAgICB9LCBz
KTsKK30KKworZnVuY3Rpb24gbGlzdChmLCBuLCBzKSB7CisgIGlmIChuKSB7CisgICAgdmFyIHgg
PSBDdXJyeS5fMShmLCBzKTsKKyAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICB4LAor
ICAgICAgICAgICAgbGlzdChmLCBuIC0gMSB8IDAsIHMpCisgICAgICAgICAgXTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIG9wdChmLCBi
LCBzKSB7CisgIGlmIChiKSB7CisgICAgcmV0dXJuIC8qIFNvbWUgKi9bQ3VycnkuXzEoZiwgcyld
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBOb25lICovMDsKKyAgfQorfQorCitmdW5j
dGlvbiB2ZWMoZiwgcykgeworICB2YXIgbiA9IGxlbjMyKHMpOworICByZXR1cm4gbGlzdChmLCBu
LCBzKTsKK30KKworZnVuY3Rpb24gc2l6ZWQoZiwgcykgeworICB2YXIgc2l6ZSA9IGxlbjMyKHMp
OworICB2YXIgc3RhcnQgPSBzWy8qIHBvcyAqLzJdWzBdOworICB2YXIgeCA9IEN1cnJ5Ll8yKGYs
IHNpemUsIHMpOworICAkJHJlcXVpcmUoKyhzWy8qIHBvcyAqLzJdWzBdID09PSAoc3RhcnQgKyBz
aXplIHwgMCkpLCBzLCBzdGFydCwgInNlY3Rpb24gc2l6ZSBtaXNtYXRjaCIpOworICByZXR1cm4g
eDsKK30KKworZnVuY3Rpb24gdmFsdWVfdHlwZShzKSB7CisgIHZhciBtYXRjaCA9IHZzTig3LCBz
KVsxXSB8IDA7CisgIHZhciBzd2l0Y2hlciA9IG1hdGNoICsgNCB8IDA7CisgIGlmIChzd2l0Y2hl
ciA+IDMgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICov
Ml1bMF0gLSAxIHwgMCwgImludmFsaWQgdmFsdWUgdHlwZSIpOworICB9CisgIGVsc2UgeworICAg
IHN3aXRjaCAoc3dpdGNoZXIpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiAv
KiBGNjRUeXBlICovMzsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAvKiBGMzJU
eXBlICovMjsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAvKiBJNjRUeXBlICov
MTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiAvKiBJMzJUeXBlICovMDsKKyAg
ICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBlbGVtX3R5cGUocykgeworICB2YXIgbWF0
Y2ggPSB2c04oNywgcylbMV0gfCAwOworICBpZiAobWF0Y2ggIT09IC0xNikgeworICAgIHJldHVy
biBlcnJvcihzLCBzWy8qIHBvcyAqLzJdWzBdIC0gMSB8IDAsICJpbnZhbGlkIGVsZW1lbnQgdHlw
ZSIpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBGdW5jUmVmVHlwZSAqLzA7CisgIH0K
K30KKworZnVuY3Rpb24gc3RhY2tfdHlwZShzKSB7CisgIHZhciBtYXRjaCA9IHBlZWsocyk7Cisg
IGlmIChtYXRjaCkgeworICAgIGlmIChtYXRjaFswXSAhPT0gNjQpIHsKKyAgICAgIHJldHVybiAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgdmFsdWVfdHlwZShzKSwKKyAgICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGd1YXJkKGZ1
bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgcmV0dXJuIHNraXAoMSwgcGFyYW0pOworICAg
ICAgICAgIH0sIHMpOworICAgICAgcmV0dXJuIC8qIFtdICovMDsKKyAgICB9CisgIH0KKyAgZWxz
ZSB7CisgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgdmFsdWVfdHlwZShzKSwKKyAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gZnVu
Y190eXBlKHMpIHsKKyAgdmFyIG1hdGNoID0gdnNOKDcsIHMpWzFdIHwgMDsKKyAgaWYgKG1hdGNo
ICE9PSAtMzIpIHsKKyAgICByZXR1cm4gZXJyb3Iocywgc1svKiBwb3MgKi8yXVswXSAtIDEgfCAw
LCAiaW52YWxpZCBmdW5jdGlvbiB0eXBlIik7CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGlucyA9
IHZlYyh2YWx1ZV90eXBlLCBzKTsKKyAgICB2YXIgb3V0ID0gdmVjKHZhbHVlX3R5cGUsIHMpOwor
ICAgIHJldHVybiAvKiBGdW5jVHlwZSAqL1sKKyAgICAgICAgICAgIGlucywKKyAgICAgICAgICAg
IG91dAorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbGltaXRzKHZ1LCBzKSB7Cisg
IHZhciBoYXNfbWF4ID0gKygodnVOKDEsIHMpWzFdIHwgMCkgPT09IDEpOworICB2YXIgbWluID0g
Q3VycnkuXzEodnUsIHMpOworICB2YXIgbWF4ID0gb3B0KHZ1LCBoYXNfbWF4LCBzKTsKKyAgcmV0
dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBtaW4gKi9taW4sCisgICAgICAgICAgLyog
bWF4ICovbWF4CisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRhYmxlX3R5cGUocykgeworICB2
YXIgdCA9IGVsZW1fdHlwZShzKTsKKyAgdmFyIGxpbSA9IGxpbWl0cyh2dTMyLCBzKTsKKyAgcmV0
dXJuIC8qIFRhYmxlVHlwZSAqL1sKKyAgICAgICAgICBsaW0sCisgICAgICAgICAgdAorICAgICAg
ICBdOworfQorCitmdW5jdGlvbiBtZW1vcnlfdHlwZShzKSB7CisgIHZhciBsaW0gPSBsaW1pdHMo
dnUzMiwgcyk7CisgIHJldHVybiAvKiBNZW1vcnlUeXBlICovW2xpbV07Cit9CisKK2Z1bmN0aW9u
IG11dGFiaWxpdHkocykgeworICB2YXIgbWF0Y2ggPSBndWFyZChnZXQsIHMpOworICBpZiAobWF0
Y2ggIT09IDApIHsKKyAgICBpZiAobWF0Y2ggIT09IDEpIHsKKyAgICAgIHJldHVybiBlcnJvcihz
LCBzWy8qIHBvcyAqLzJdWzBdIC0gMSB8IDAsICJpbnZhbGlkIG11dGFiaWxpdHkiKTsKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogTXV0YWJsZSAqLzE7CisgICAgfQorICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAvKiBJbW11dGFibGUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9u
IGdsb2JhbF90eXBlKHMpIHsKKyAgdmFyIHQgPSB2YWx1ZV90eXBlKHMpOworICB2YXIgbXV0ID0g
bXV0YWJpbGl0eShzKTsKKyAgcmV0dXJuIC8qIEdsb2JhbFR5cGUgKi9bCisgICAgICAgICAgdCwK
KyAgICAgICAgICBtdXQKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gJCR2YXIocykgeworICBy
ZXR1cm4gdnVOKDMyLCBzKVsxXSB8IDA7Cit9CisKK2Z1bmN0aW9uIG1lbW9wKHMpIHsKKyAgdmFy
IGFsaWduID0gdnVOKDMyLCBzKVsxXSB8IDA7CisgICQkcmVxdWlyZShDdXJyeS5fMihJMzIubGVf
dSwgYWxpZ24sIDMyKSwgcywgc1svKiBwb3MgKi8yXVswXSAtIDEgfCAwLCAiaW52YWxpZCBtZW1v
cCBmbGFncyIpOworICB2YXIgb2Zmc2V0ID0gdnVOKDMyLCBzKVsxXSB8IDA7CisgIHJldHVybiAv
KiB0dXBsZSAqL1sKKyAgICAgICAgICBhbGlnbiwKKyAgICAgICAgICBvZmZzZXQKKyAgICAgICAg
XTsKK30KKworZnVuY3Rpb24gaW5zdHIocykgeworICB2YXIgcG9zID0gc1svKiBwb3MgKi8yXVsw
XTsKKyAgdmFyIGIgPSBndWFyZChnZXQsIHMpOworICBpZiAoYiA+IDE5MSB8fCBiIDwgMCkgewor
ICAgIHJldHVybiBpbGxlZ2FsKHMsIHBvcywgYik7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNo
IChiKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLnVucmVh
Y2hhYmxlOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5ub3A7
CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICB2YXIgdHMgPSBzdGFja190eXBlKHMpOworICAg
ICAgICAgIHZhciBlcyRwcmltZSA9IExpc3QucmV2KGluc3RyX2Jsb2NrJHByaW1lKHMsIC8qIFtd
ICovMCkpOworICAgICAgICAgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0ZWQiKTsK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmJsb2NrKHRzLCBlcyRwcmltZSk7CisgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICB2YXIgdHMkMSA9IHN0YWNrX3R5cGUocyk7CisgICAgICAgICAg
dmFyIGVzJHByaW1lJDEgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzAp
KTsKKyAgICAgICAgICBleHBlY3QoMTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7CisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5sb29wKHRzJDEsIGVzJHByaW1lJDEpOworICAgICAgY2Fz
ZSA0IDogCisgICAgICAgICAgdmFyIHRzJDIgPSBzdGFja190eXBlKHMpOworICAgICAgICAgIHZh
ciBlczEgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsKKyAgICAg
ICAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChwZWVrKHMpLCAvKiBTb21lICovWzVdKSkgewor
ICAgICAgICAgICAgZXhwZWN0KDUsIHMsICJFTFNFIG9yIEVORCBvcGNvZGUgZXhwZWN0ZWQiKTsK
KyAgICAgICAgICAgIHZhciBlczIgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBb
XSAqLzApKTsKKyAgICAgICAgICAgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0ZWQi
KTsKKyAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaWZfKHRzJDIsIGVzMSwgZXMyKTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBleHBlY3QoMTEsIHMsICJF
TkQgb3Bjb2RlIGV4cGVjdGVkIik7CisgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmlmXyh0
cyQyLCBlczEsIC8qIFtdICovMCk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIGVycm9yKHMsIHBvcywgIm1pc3BsYWNlZCBF
TFNFIG9wY29kZSIpOworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiBlcnJvcihz
LCBwb3MsICJtaXNwbGFjZWQgRU5EIG9wY29kZSIpOworICAgICAgY2FzZSAxMiA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuYnIoYXQoJCR2YXIsIHMpKTsKKyAgICAgIGNhc2UgMTMgOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmJyX2lmKGF0KCQkdmFyLCBzKSk7CisgICAgICBj
YXNlIDE0IDogCisgICAgICAgICAgdmFyIHhzID0gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBhdCgkJHZhciwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBz
KTsKKyAgICAgICAgICB2YXIgeCA9IGF0KCQkdmFyLCBzKTsKKyAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmJyX3RhYmxlKHhzLCB4KTsKKyAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLiQkcmV0dXJuOworICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuY2FsbChhdCgkJHZhciwgcykpOworICAgICAgY2FzZSAxNyA6IAorICAgICAg
ICAgIHZhciB4JDEgPSBhdCgkJHZhciwgcyk7CisgICAgICAgICAgZXhwZWN0KDAsIHMsICJ6ZXJv
IGZsYWcgZXhwZWN0ZWQiKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmNhbGxfaW5kaXJl
Y3QoeCQxKTsKKyAgICAgIGNhc2UgMjYgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmRy
b3A7CisgICAgICBjYXNlIDI3IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5zZWxlY3Q7
CisgICAgICBjYXNlIDMyIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfbG9jYWwo
YXQoJCR2YXIsIHMpKTsKKyAgICAgIGNhc2UgMzMgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLnNldF9sb2NhbChhdCgkJHZhciwgcykpOworICAgICAgY2FzZSAzNCA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMudGVlX2xvY2FsKGF0KCQkdmFyLCBzKSk7CisgICAgICBjYXNlIDM1
IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfZ2xvYmFsKGF0KCQkdmFyLCBzKSk7
CisgICAgICBjYXNlIDM2IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5zZXRfZ2xvYmFs
KGF0KCQkdmFyLCBzKSk7CisgICAgICBjYXNlIDYgOiAKKyAgICAgIGNhc2UgNyA6IAorICAgICAg
Y2FzZSA4IDogCisgICAgICBjYXNlIDkgOiAKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgIGNhc2Ug
MTggOiAKKyAgICAgIGNhc2UgMTkgOiAKKyAgICAgIGNhc2UgMjAgOiAKKyAgICAgIGNhc2UgMjEg
OiAKKyAgICAgIGNhc2UgMjIgOiAKKyAgICAgIGNhc2UgMjMgOiAKKyAgICAgIGNhc2UgMjQgOiAK
KyAgICAgIGNhc2UgMjUgOiAKKyAgICAgIGNhc2UgMjggOiAKKyAgICAgIGNhc2UgMjkgOiAKKyAg
ICAgIGNhc2UgMzAgOiAKKyAgICAgIGNhc2UgMzEgOiAKKyAgICAgIGNhc2UgMzcgOiAKKyAgICAg
IGNhc2UgMzggOiAKKyAgICAgIGNhc2UgMzkgOiAKKyAgICAgICAgICByZXR1cm4gaWxsZWdhbChz
LCBwb3MsIGIpOworICAgICAgY2FzZSA0MCA6IAorICAgICAgICAgIHZhciBtYXRjaCA9IG1lbW9w
KHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2xvYWQobWF0Y2hbMF0sIG1hdGNo
WzFdKTsKKyAgICAgIGNhc2UgNDEgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IG1lbW9wKHMp
OworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQobWF0Y2gkMVswXSwgbWF0Y2gk
MVsxXSk7CisgICAgICBjYXNlIDQyIDogCisgICAgICAgICAgdmFyIG1hdGNoJDIgPSBtZW1vcChz
KTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9sb2FkKG1hdGNoJDJbMF0sIG1hdGNo
JDJbMV0pOworICAgICAgY2FzZSA0MyA6IAorICAgICAgICAgIHZhciBtYXRjaCQzID0gbWVtb3Ao
cyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbG9hZChtYXRjaCQzWzBdLCBtYXRj
aCQzWzFdKTsKKyAgICAgIGNhc2UgNDQgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkNCA9IG1lbW9w
KHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2xvYWQ4X3MobWF0Y2gkNFswXSwg
bWF0Y2gkNFsxXSk7CisgICAgICBjYXNlIDQ1IDogCisgICAgICAgICAgdmFyIG1hdGNoJDUgPSBt
ZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2FkOF91KG1hdGNoJDVb
MF0sIG1hdGNoJDVbMV0pOworICAgICAgY2FzZSA0NiA6IAorICAgICAgICAgIHZhciBtYXRjaCQ2
ID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbG9hZDE2X3MobWF0
Y2gkNlswXSwgbWF0Y2gkNlsxXSk7CisgICAgICBjYXNlIDQ3IDogCisgICAgICAgICAgdmFyIG1h
dGNoJDcgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2FkMTZf
dShtYXRjaCQ3WzBdLCBtYXRjaCQ3WzFdKTsKKyAgICAgIGNhc2UgNDggOiAKKyAgICAgICAgICB2
YXIgbWF0Y2gkOCA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xv
YWQ4X3MobWF0Y2gkOFswXSwgbWF0Y2gkOFsxXSk7CisgICAgICBjYXNlIDQ5IDogCisgICAgICAg
ICAgdmFyIG1hdGNoJDkgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2
NF9sb2FkOF91KG1hdGNoJDlbMF0sIG1hdGNoJDlbMV0pOworICAgICAgY2FzZSA1MCA6IAorICAg
ICAgICAgIHZhciBtYXRjaCQxMCA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuaTY0X2xvYWQxNl9zKG1hdGNoJDEwWzBdLCBtYXRjaCQxMFsxXSk7CisgICAgICBjYXNlIDUx
IDogCisgICAgICAgICAgdmFyIG1hdGNoJDExID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pNjRfbG9hZDE2X3UobWF0Y2gkMTFbMF0sIG1hdGNoJDExWzFdKTsKKyAgICAg
IGNhc2UgNTIgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMTIgPSBtZW1vcChzKTsKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkMzJfcyhtYXRjaCQxMlswXSwgbWF0Y2gkMTJbMV0p
OworICAgICAgY2FzZSA1MyA6IAorICAgICAgICAgIHZhciBtYXRjaCQxMyA9IG1lbW9wKHMpOwor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQzMl91KG1hdGNoJDEzWzBdLCBtYXRj
aCQxM1sxXSk7CisgICAgICBjYXNlIDU0IDogCisgICAgICAgICAgdmFyIG1hdGNoJDE0ID0gbWVt
b3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmUobWF0Y2gkMTRbMF0s
IG1hdGNoJDE0WzFdKTsKKyAgICAgIGNhc2UgNTUgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMTUg
PSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdG9yZShtYXRjaCQx
NVswXSwgbWF0Y2gkMTVbMV0pOworICAgICAgY2FzZSA1NiA6IAorICAgICAgICAgIHZhciBtYXRj
aCQxNiA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3N0b3JlKG1h
dGNoJDE2WzBdLCBtYXRjaCQxNlsxXSk7CisgICAgICBjYXNlIDU3IDogCisgICAgICAgICAgdmFy
IG1hdGNoJDE3ID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfc3Rv
cmUobWF0Y2gkMTdbMF0sIG1hdGNoJDE3WzFdKTsKKyAgICAgIGNhc2UgNTggOiAKKyAgICAgICAg
ICB2YXIgbWF0Y2gkMTggPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkz
Ml9zdG9yZTgobWF0Y2gkMThbMF0sIG1hdGNoJDE4WzFdKTsKKyAgICAgIGNhc2UgNTkgOiAKKyAg
ICAgICAgICB2YXIgbWF0Y2gkMTkgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmkzMl9zdG9yZTE2KG1hdGNoJDE5WzBdLCBtYXRjaCQxOVsxXSk7CisgICAgICBjYXNlIDYw
IDogCisgICAgICAgICAgdmFyIG1hdGNoJDIwID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pNjRfc3RvcmU4KG1hdGNoJDIwWzBdLCBtYXRjaCQyMFsxXSk7CisgICAgICBj
YXNlIDYxIDogCisgICAgICAgICAgdmFyIG1hdGNoJDIxID0gbWVtb3Aocyk7CisgICAgICAgICAg
cmV0dXJuIE9wZXJhdG9ycy5pNjRfc3RvcmUxNihtYXRjaCQyMVswXSwgbWF0Y2gkMjFbMV0pOwor
ICAgICAgY2FzZSA2MiA6IAorICAgICAgICAgIHZhciBtYXRjaCQyMiA9IG1lbW9wKHMpOworICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMzIobWF0Y2gkMjJbMF0sIG1hdGNoJDIy
WzFdKTsKKyAgICAgIGNhc2UgNjMgOiAKKyAgICAgICAgICBleHBlY3QoMCwgcywgInplcm8gZmxh
ZyBleHBlY3RlZCIpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuY3VycmVudF9tZW1vcnk7
CisgICAgICBjYXNlIDY0IDogCisgICAgICAgICAgZXhwZWN0KDAsIHMsICJ6ZXJvIGZsYWcgZXhw
ZWN0ZWQiKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmdyb3dfbWVtb3J5OworICAgICAg
Y2FzZSA2NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2NvbnN0KGF0KHZzMzIs
IHMpKTsKKyAgICAgIGNhc2UgNjYgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9j
b25zdChhdCh2czY0LCBzKSk7CisgICAgICBjYXNlIDY3IDogCisgICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5mMzJfY29uc3QoYXQoZjMyLCBzKSk7CisgICAgICBjYXNlIDY4IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfY29uc3QoYXQoZjY0LCBzKSk7CisgICAgICBjYXNlIDY5
IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfZXF6OworICAgICAgY2FzZSA3MCA6
IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2VxOworICAgICAgY2FzZSA3MSA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX25lOworICAgICAgY2FzZSA3MiA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2x0X3M7CisgICAgICBjYXNlIDczIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbHRfdTsKKyAgICAgIGNhc2UgNzQgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9ndF9zOworICAgICAgY2FzZSA3NSA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2d0X3U7CisgICAgICBjYXNlIDc2IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbGVfczsKKyAgICAgIGNhc2UgNzcgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sZV91OworICAgICAgY2FzZSA3OCA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaTMyX2dlX3M7CisgICAgICBjYXNlIDc5IDogCisgICAgICAgICAg
cmV0dXJuIE9wZXJhdG9ycy5pMzJfZ2VfdTsKKyAgICAgIGNhc2UgODAgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmk2NF9lcXo7CisgICAgICBjYXNlIDgxIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfZXE7CisgICAgICBjYXNlIDgyIDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pNjRfbmU7CisgICAgICBjYXNlIDgzIDogCisgICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pNjRfbHRfczsKKyAgICAgIGNhc2UgODQgOiAKKyAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmk2NF9sdF91OworICAgICAgY2FzZSA4NSA6IAorICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X2d0X3M7CisgICAgICBjYXNlIDg2IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pNjRfZ3RfdTsKKyAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmk2NF9sZV9zOworICAgICAgY2FzZSA4OCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuaTY0X2xlX3U7CisgICAgICBjYXNlIDg5IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5pNjRfZ2VfczsKKyAgICAgIGNhc2UgOTAgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3Jz
Lmk2NF9nZV91OworICAgICAgY2FzZSA5MSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMu
ZjMyX2VxOworICAgICAgY2FzZSA5MiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMy
X25lOworICAgICAgY2FzZSA5MyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2x0
OworICAgICAgY2FzZSA5NCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2d0Owor
ICAgICAgY2FzZSA5NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2xlOworICAg
ICAgY2FzZSA5NiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2dlOworICAgICAg
Y2FzZSA5NyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2VxOworICAgICAgY2Fz
ZSA5OCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X25lOworICAgICAgY2FzZSA5
OSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2x0OworICAgICAgY2FzZSAxMDAg
OiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9ndDsKKyAgICAgIGNhc2UgMTAxIDog
CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbGU7CisgICAgICBjYXNlIDEwMiA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2dlOworICAgICAgY2FzZSAxMDMgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9jbHo7CisgICAgICBjYXNlIDEwNCA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2N0ejsKKyAgICAgIGNhc2UgMTA1IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfcG9wY250OworICAgICAgY2FzZSAxMDYgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9hZGQ7CisgICAgICBjYXNlIDEwNyA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3N1YjsKKyAgICAgIGNhc2UgMTA4IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbXVsOworICAgICAgY2FzZSAxMDkgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9kaXZfczsKKyAgICAgIGNhc2UgMTEwIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfZGl2X3U7CisgICAgICBjYXNlIDExMSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3JlbV9zOworICAgICAgY2FzZSAxMTIgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9yZW1fdTsKKyAgICAgIGNhc2UgMTEzIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfYW5kOworICAgICAgY2FzZSAxMTQgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9vcjsKKyAgICAgIGNhc2UgMTE1IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfeG9yOworICAgICAgY2FzZSAxMTYgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zaGw7CisgICAgICBjYXNlIDExNyA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3Nocl9zOworICAgICAgY2FzZSAxMTggOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zaHJfdTsKKyAgICAgIGNhc2UgMTE5IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfcm90bDsKKyAgICAgIGNhc2UgMTIwIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfcm90cjsKKyAgICAgIGNhc2UgMTIxIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfY2x6OworICAgICAgY2FzZSAxMjIgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9jdHo7CisgICAgICBjYXNlIDEyMyA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3BvcGNudDsKKyAgICAgIGNhc2UgMTI0IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfYWRkOworICAgICAgY2FzZSAxMjUgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdWI7CisgICAgICBjYXNlIDEyNiA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X211bDsKKyAgICAgIGNhc2UgMTI3IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfZGl2X3M7CisgICAgICBjYXNlIDEyOCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2Rpdl91OworICAgICAgY2FzZSAxMjkgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9yZW1fczsKKyAgICAgIGNhc2UgMTMwIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfcmVtX3U7CisgICAgICBjYXNlIDEzMSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2FuZDsKKyAgICAgIGNhc2UgMTMyIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfb3I7CisgICAgICBjYXNlIDEzMyA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3hvcjsKKyAgICAgIGNhc2UgMTM0IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfc2hsOworICAgICAgY2FzZSAxMzUgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zaHJfczsKKyAgICAgIGNhc2UgMTM2IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfc2hyX3U7CisgICAgICBjYXNlIDEzNyA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3JvdGw7CisgICAgICBjYXNlIDEzOCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3JvdHI7CisgICAgICBjYXNlIDEzOSA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2FiczsKKyAgICAgIGNhc2UgMTQwIDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfbmVnOworICAgICAgY2FzZSAxNDEgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmYzMl9jZWlsOworICAgICAgY2FzZSAxNDIgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmYzMl9mbG9vcjsKKyAgICAgIGNhc2UgMTQzIDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfdHJ1bmM7CisgICAgICBjYXNlIDE0NCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX25lYXJlc3Q7CisgICAgICBjYXNlIDE0NSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3NxcnQ7CisgICAgICBjYXNlIDE0NiA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2FkZDsKKyAgICAgIGNhc2UgMTQ3IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfc3ViOworICAgICAgY2FzZSAxNDggOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9tdWw7CisgICAgICBjYXNlIDE0OSA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2RpdjsKKyAgICAgIGNhc2UgMTUwIDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfbWluOworICAgICAgY2FzZSAxNTEgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmYzMl9tYXg7CisgICAgICBjYXNlIDE1MiA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuZjMyX2NvcHlzaWduOworICAgICAgY2FzZSAxNTMgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9hYnM7CisgICAgICBjYXNlIDE1NCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X25lZzsKKyAgICAgIGNhc2UgMTU1IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfY2VpbDsKKyAgICAgIGNhc2UgMTU2IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfZmxvb3I7CisgICAgICBjYXNlIDE1NyA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X3RydW5jOworICAgICAgY2FzZSAxNTggOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9uZWFyZXN0OworICAgICAgY2FzZSAxNTkgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9zcXJ0OworICAgICAgY2FzZSAxNjAgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9hZGQ7CisgICAgICBjYXNlIDE2MSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X3N1YjsKKyAgICAgIGNhc2UgMTYyIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbXVsOworICAgICAgY2FzZSAxNjMgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9kaXY7CisgICAgICBjYXNlIDE2NCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X21pbjsKKyAgICAgIGNhc2UgMTY1IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbWF4OworICAgICAgY2FzZSAxNjYgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmY2NF9jb3B5c2lnbjsKKyAgICAgIGNhc2UgMTY3IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfd3JhcF9pNjQ7CisgICAgICBjYXNlIDE2OCA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3RydW5jX3NfZjMyOworICAgICAgY2FzZSAx
NjkgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl90cnVuY191X2YzMjsKKyAgICAg
IGNhc2UgMTcwIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfdHJ1bmNfc19mNjQ7
CisgICAgICBjYXNlIDE3MSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3RydW5j
X3VfZjY0OworICAgICAgY2FzZSAxNzIgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2
NF9leHRlbmRfc19pMzI7CisgICAgICBjYXNlIDE3MyA6IAorICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X2V4dGVuZF91X2kzMjsKKyAgICAgIGNhc2UgMTc0IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfdHJ1bmNfc19mMzI7CisgICAgICBjYXNlIDE3NSA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3RydW5jX3VfZjMyOworICAgICAgY2FzZSAxNzYgOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF90cnVuY19zX2Y2NDsKKyAgICAgIGNhc2Ug
MTc3IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfdHJ1bmNfdV9mNjQ7CisgICAg
ICBjYXNlIDE3OCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfc19p
MzI7CisgICAgICBjYXNlIDE3OSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2Nv
bnZlcnRfdV9pMzI7CisgICAgICBjYXNlIDE4MCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuZjMyX2NvbnZlcnRfc19pNjQ7CisgICAgICBjYXNlIDE4MSA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfdV9pNjQ7CisgICAgICBjYXNlIDE4MiA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2RlbW90ZV9mNjQ7CisgICAgICBjYXNlIDE4MyA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pMzI7CisgICAgICBjYXNl
IDE4NCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfdV9pMzI7Cisg
ICAgICBjYXNlIDE4NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRf
c19pNjQ7CisgICAgICBjYXNlIDE4NiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0
X2NvbnZlcnRfdV9pNjQ7CisgICAgICBjYXNlIDE4NyA6IAorICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuZjY0X3Byb21vdGVfZjMyOworICAgICAgY2FzZSAxODggOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmkzMl9yZWludGVycHJldF9mMzI7CisgICAgICBjYXNlIDE4OSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3JlaW50ZXJwcmV0X2Y2NDsKKyAgICAgIGNhc2Ug
MTkwIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfcmVpbnRlcnByZXRfaTMyOwor
ICAgICAgY2FzZSAxOTEgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9yZWludGVy
cHJldF9pNjQ7CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gaW5zdHJfYmxvY2sk
cHJpbWUocywgX2VzKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgZXMgPSBfZXM7CisgICAg
dmFyIG1hdGNoID0gcGVlayhzKTsKKyAgICBpZiAobWF0Y2gpIHsKKyAgICAgIHZhciBtYXRjaCQx
ID0gbWF0Y2hbMF07CisgICAgICBpZiAobWF0Y2gkMSAhPT0gNSkgeworICAgICAgICBpZiAobWF0
Y2gkMSAhPT0gMTEpIHsKKyAgICAgICAgICB2YXIgcG9zID0gc1svKiBwb3MgKi8yXVswXTsKKyAg
ICAgICAgICB2YXIgZSRwcmltZSA9IGluc3RyKHMpOworICAgICAgICAgIF9lcyA9IC8qIDo6ICov
WworICAgICAgICAgICAgU291cmNlLiRhdCRhdChlJHByaW1lLCByZWdpb24ocywgcG9zLCBwb3Mp
KSwKKyAgICAgICAgICAgIGVzCisgICAgICAgICAgXTsKKyAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGVz
OworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGVzOwor
ICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBlczsKKyAgICB9CisgIH07
Cit9CisKK2Z1bmN0aW9uIGluc3RyX2Jsb2NrKHMpIHsKKyAgcmV0dXJuIExpc3QucmV2KGluc3Ry
X2Jsb2NrJHByaW1lKHMsIC8qIFtdICovMCkpOworfQorCitmdW5jdGlvbiAkJGNvbnN0KHMpIHsK
KyAgdmFyIGMgPSBhdChpbnN0cl9ibG9jaywgcyk7CisgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNv
ZGUgZXhwZWN0ZWQiKTsKKyAgcmV0dXJuIGM7Cit9CisKK2Z1bmN0aW9uIGlkKHMpIHsKKyAgdmFy
IGJvID0gcGVlayhzKTsKKyAgcmV0dXJuIEN1cnJ5Ll8yKExpYi5PcHRpb25bLyogbWFwICovMV0s
IGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICBpZiAocGFyYW0gPiAxMSB8fCBwYXJh
bSA8IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Iocywgc1svKiBwb3MgKi8yXVsw
XSwgImludmFsaWQgc2VjdGlvbiBpZCIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIHN3aXRjaCAocGFyYW0pIHsKKyAgICAgICAgICAgICAg
ICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBDdXN0b21TZWN0
aW9uICovLTgwODAxMDIyMDsKKyAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBUeXBlU2VjdGlvbiAqLzgzNjUwMTAzNTsKKyAgICAgICAg
ICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBJbXBv
cnRTZWN0aW9uICovNjk2NTE3MzQ0OworICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZ1bmNTZWN0aW9uICovMjA1NTU2NDQ5OworICAg
ICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IFRhYmxlU2VjdGlvbiAqLzEwMzE4NjQyMTU7CisgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAK
KyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTWVtb3J5U2VjdGlvbiAqLy04NDAyMDMw
Njg7CisgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogR2xvYmFsU2VjdGlvbiAqLy04NzIzMTMxODI7CisgICAgICAgICAgICAgICAgICBj
YXNlIDcgOiAKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRXhwb3J0U2VjdGlvbiAq
Ly00NDA2Nzk3NTk7CisgICAgICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLyogU3RhcnRTZWN0aW9uICovMzk1NzIwMTMxOworICAgICAgICAgICAg
ICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEVsZW1TZWN0
aW9uICovNDQwMzgwNjYyOworICAgICAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBDb2RlU2VjdGlvbiAqLzEwMjExMzM4NDg7CisgICAgICAg
ICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIERh
dGFTZWN0aW9uICovNjY0NDc1NDc7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIGJvKTsKK30KKworZnVuY3Rpb24g
c2VjdGlvbl93aXRoX3NpemUodGFnLCBmLCAkJGRlZmF1bHQsIHMpIHsKKyAgdmFyIG1hdGNoID0g
aWQocyk7CisgIGlmIChtYXRjaCAmJiBDYW1sX29iai5jYW1sX2VxdWFsKG1hdGNoWzBdLCB0YWcp
KSB7CisgICAgZ3VhcmQoZ2V0LCBzKTsKKyAgICByZXR1cm4gc2l6ZWQoZiwgcyk7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuICQkZGVmYXVsdDsKKyAgfQorfQorCitmdW5jdGlvbiBzZWN0aW9u
KHRhZywgZiwgJCRkZWZhdWx0LCBzKSB7CisgIHJldHVybiBzZWN0aW9uX3dpdGhfc2l6ZSh0YWcs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGY7CisgICAgICAgICAgICB9LCAk
JGRlZmF1bHQsIHMpOworfQorCitmdW5jdGlvbiB0eXBlX3NlY3Rpb24ocykgeworICByZXR1cm4g
c2VjdGlvbigvKiBUeXBlU2VjdGlvbiAqLzgzNjUwMTAzNSwgZnVuY3Rpb24gKHBhcmFtKSB7Cisg
ICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY190eXBlLCBwYXJhbSk7CisgICAgICAgICAgICB9
LCAvKiBbXSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBpbXBvcnRfa2luZChzKSB7CisgIHZhciBt
YXRjaCA9IGd1YXJkKGdldCwgcyk7CisgIGlmIChtYXRjaCA+IDMgfHwgbWF0Y2ggPCAwKSB7Cisg
ICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwgImludmFsaWQgaW1w
b3J0IGtpbmQiKTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgICBj
YXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gLyogRnVuY0ltcG9ydCAqL0Jsb2NrLl9fKDAsIFth
dCgkJHZhciwgcyldKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAvKiBUYWJs
ZUltcG9ydCAqL0Jsb2NrLl9fKDEsIFt0YWJsZV90eXBlKHMpXSk7CisgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICByZXR1cm4gLyogTWVtb3J5SW1wb3J0ICovQmxvY2suX18oMiwgW21lbW9yeV90
eXBlKHMpXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogR2xvYmFsSW1w
b3J0ICovQmxvY2suX18oMywgW2dsb2JhbF90eXBlKHMpXSk7CisgICAgICAKKyAgICB9CisgIH0K
K30KKworZnVuY3Rpb24gJCRpbXBvcnQocykgeworICB2YXIgbW9kdWxlX25hbWUgPSBzdHJpbmco
cyk7CisgIHZhciBpdGVtX25hbWUgPSBzdHJpbmcocyk7CisgIHZhciBpa2luZCA9IGF0KGltcG9y
dF9raW5kLCBzKTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBtb2R1bGVf
bmFtZSAqL21vZHVsZV9uYW1lLAorICAgICAgICAgIC8qIGl0ZW1fbmFtZSAqL2l0ZW1fbmFtZSwK
KyAgICAgICAgICAvKiBpa2luZCAqL2lraW5kCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGlt
cG9ydF9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb24oLyogSW1wb3J0U2VjdGlvbiAqLzY5
NjUxNzM0NCwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVu
Y3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdCgkJGlt
cG9ydCwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAg
ICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKworZnVuY3Rpb24gZnVuY19zZWN0aW9uKHMpIHsK
KyAgcmV0dXJuIHNlY3Rpb24oLyogRnVuY1NlY3Rpb24gKi8yMDU1NTY0NDksIGZ1bmN0aW9uIChw
YXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXQoJCR2YXIsIHBhcmFtKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAgICAgIH0sIC8qIFtdICovMCwgcyk7
Cit9CisKK2Z1bmN0aW9uIHRhYmxlKHMpIHsKKyAgdmFyIHR0eXBlID0gdGFibGVfdHlwZShzKTsK
KyAgcmV0dXJuIC8qIHJlY29yZCAqL1svKiB0dHlwZSAqL3R0eXBlXTsKK30KKworZnVuY3Rpb24g
dGFibGVfc2VjdGlvbihzKSB7CisgIHJldHVybiBzZWN0aW9uKC8qIFRhYmxlU2VjdGlvbiAqLzEw
MzE4NjQyMTUsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1
bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXQodGFi
bGUsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAg
ICAgIH0sIC8qIFtdICovMCwgcyk7Cit9CisKK2Z1bmN0aW9uIG1lbW9yeShzKSB7CisgIHZhciBt
dHlwZSA9IG1lbW9yeV90eXBlKHMpOworICByZXR1cm4gLyogcmVjb3JkICovWy8qIG10eXBlICov
bXR5cGVdOworfQorCitmdW5jdGlvbiBtZW1vcnlfc2VjdGlvbihzKSB7CisgIHJldHVybiBzZWN0
aW9uKC8qIE1lbW9yeVNlY3Rpb24gKi8tODQwMjAzMDY4LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICAgICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGF0KG1lbW9yeSwgcGFyYW0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKworZnVu
Y3Rpb24gZ2xvYmFsKHMpIHsKKyAgdmFyIGd0eXBlID0gZ2xvYmFsX3R5cGUocyk7CisgIHZhciB2
YWx1ZSA9ICQkY29uc3Qocyk7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyog
Z3R5cGUgKi9ndHlwZSwKKyAgICAgICAgICAvKiB2YWx1ZSAqL3ZhbHVlCisgICAgICAgIF07Cit9
CisKK2Z1bmN0aW9uIGdsb2JhbF9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb24oLyogR2xv
YmFsU2VjdGlvbiAqLy04NzIzMTMxODIsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAg
ICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gYXQoZ2xvYmFsLCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBw
YXJhbSk7CisgICAgICAgICAgICB9LCAvKiBbXSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBleHBv
cnRfa2luZChzKSB7CisgIHZhciBtYXRjaCA9IGd1YXJkKGdldCwgcyk7CisgIGlmIChtYXRjaCA+
IDMgfHwgbWF0Y2ggPCAwKSB7CisgICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0g
LSAxIHwgMCwgImludmFsaWQgZXhwb3J0IGtpbmQiKTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0
Y2ggKG1hdGNoKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gLyogRnVuY0V4
cG9ydCAqLzA7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogVGFibGVFeHBv
cnQgKi8xOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIC8qIE1lbW9yeUV4cG9y
dCAqLzI7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogR2xvYmFsRXhwb3J0
ICovMzsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiAkJGV4cG9ydChzKSB7Cisg
IHZhciBuYW1lID0gc3RyaW5nKHMpOworICB2YXIgZWtpbmQgPSBhdChleHBvcnRfa2luZCwgcyk7
CisgIHZhciBpdGVtID0gYXQoJCR2YXIsIHMpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAg
ICAgICAgIC8qIG5hbWUgKi9uYW1lLAorICAgICAgICAgIC8qIGVraW5kICovZWtpbmQsCisgICAg
ICAgICAgLyogaXRlbSAqL2l0ZW0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZXhwb3J0X3Nl
Y3Rpb24ocykgeworICByZXR1cm4gc2VjdGlvbigvKiBFeHBvcnRTZWN0aW9uICovLTQ0MDY3OTc1
OSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY3Rpb24g
KHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdCgkJGV4cG9ydCwg
cGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAg
fSwgLyogW10gKi8wLCBzKTsKK30KKworZnVuY3Rpb24gc3RhcnRfc2VjdGlvbihzKSB7CisgIHJl
dHVybiBzZWN0aW9uKC8qIFN0YXJ0U2VjdGlvbiAqLzM5NTcyMDEzMSwgZnVuY3Rpb24gKHBhcmFt
KSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiBTb21lICovW2F0KCQkdmFyLCBwYXJhbSldOwor
ICAgICAgICAgICAgfSwgLyogTm9uZSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBsb2NhbChzKSB7
CisgIHZhciBuID0gbGVuMzIocyk7CisgIHZhciB0ID0gdmFsdWVfdHlwZShzKTsKKyAgcmV0dXJu
IEN1cnJ5Ll8yKExpYi5MaXN0Wy8qIG1ha2UgKi8wXSwgbiwgdCk7Cit9CisKK2Z1bmN0aW9uIGNv
ZGUoXywgcykgeworICB2YXIgbG9jYWxzID0gTGlzdC5mbGF0dGVuKHZlYyhsb2NhbCwgcykpOwor
ICB2YXIgYm9keSA9IExpc3QucmV2KGluc3RyX2Jsb2NrJHByaW1lKHMsIC8qIFtdICovMCkpOwor
ICBleHBlY3QoMTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7CisgIHJldHVybiAvKiByZWNv
cmQgKi9bCisgICAgICAgICAgLyogZnR5cGUgKi9Tb3VyY2UuJGF0JGF0KC0xLCBTb3VyY2Uubm9f
cmVnaW9uKSwKKyAgICAgICAgICAvKiBsb2NhbHMgKi9sb2NhbHMsCisgICAgICAgICAgLyogYm9k
eSAqL2JvZHkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gY29kZV9zZWN0aW9uKHMpIHsKKyAg
cmV0dXJuIHNlY3Rpb24oLyogQ29kZVNlY3Rpb24gKi8xMDIxMTMzODQ4LCBmdW5jdGlvbiAocGFy
YW0pIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0KGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZWQoY29kZSwgcGFyYW0p
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBz
KTsKK30KKworZnVuY3Rpb24gc2VnbWVudChkYXQsIHMpIHsKKyAgdmFyIGluZGV4ID0gYXQoJCR2
YXIsIHMpOworICB2YXIgb2Zmc2V0ID0gJCRjb25zdChzKTsKKyAgdmFyIGluaXQgPSBDdXJyeS5f
MShkYXQsIHMpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGluZGV4ICov
aW5kZXgsCisgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgIC8qIGluaXQg
Ki9pbml0CisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRhYmxlX3NlZ21lbnQocykgeworICBy
ZXR1cm4gc2VnbWVudChmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHZl
YyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0
KCQkdmFyLCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbSk7CisgICAg
ICAgICAgICB9LCBzKTsKK30KKworZnVuY3Rpb24gZWxlbV9zZWN0aW9uKHMpIHsKKyAgcmV0dXJu
IHNlY3Rpb24oLyogRWxlbVNlY3Rpb24gKi80NDAzODA2NjIsIGZ1bmN0aW9uIChwYXJhbSkgewor
ICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYXQodGFibGVfc2VnbWVudCwgcGFyYW0pOworICAgICAgICAg
ICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsK
K30KKworZnVuY3Rpb24gbWVtb3J5X3NlZ21lbnQocykgeworICByZXR1cm4gc2VnbWVudChzdHJp
bmcsIHMpOworfQorCitmdW5jdGlvbiBkYXRhX3NlY3Rpb24ocykgeworICByZXR1cm4gc2VjdGlv
bigvKiBEYXRhU2VjdGlvbiAqLzY2NDQ3NTQ3LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAg
ICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGF0KG1lbW9yeV9zZWdtZW50LCBwYXJhbSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9LCBwYXJhbSk7CisgICAgICAgICAgICB9LCAvKiBbXSAqLzAsIHMpOworfQorCitm
dW5jdGlvbiBjdXN0b20oc2l6ZSwgcykgeworICB2YXIgc3RhcnQgPSBzWy8qIHBvcyAqLzJdWzBd
OworICBzdHJpbmcocyk7CisgIHZhciBwYXJ0aWFsX2FyZyA9IHNpemUgLSAoc1svKiBwb3MgKi8y
XVswXSAtIHN0YXJ0IHwgMCkgfCAwOworICB2YXIgcGFydGlhbF9hcmckMSA9IGZ1bmN0aW9uIChw
YXJhbSkgeworICAgIHJldHVybiBza2lwKHBhcnRpYWxfYXJnLCBwYXJhbSk7CisgIH07CisgIChm
dW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgcmV0dXJuIGd1YXJkKHBhcnRpYWxfYXJnJDEsIHBh
cmFtKTsKKyAgICAgIH0ocykpOworICByZXR1cm4gLyogdHJ1ZSAqLzE7Cit9CisKK2Z1bmN0aW9u
IGN1c3RvbV9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb25fd2l0aF9zaXplKC8qIEN1c3Rv
bVNlY3Rpb24gKi8tODA4MDEwMjIwLCBjdXN0b20sIC8qIGZhbHNlICovMCwgcyk7Cit9CisKK2Z1
bmN0aW9uIGl0ZXJhdGUoZiwgcykgeworICB3aGlsZSh0cnVlKSB7CisgICAgaWYgKEN1cnJ5Ll8x
KGYsIHMpKSB7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICByZXR1cm4gMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1vZHVsZV8ocykgewor
ICB2YXIgbWFnaWMgPSB1MzIocyk7CisgICQkcmVxdWlyZSgrKG1hZ2ljID09PSAxODM2Mjc4MDE2
KSwgcywgMCwgIm1hZ2ljIGhlYWRlciBub3QgZGV0ZWN0ZWQiKTsKKyAgdmFyIHZlcnNpb24gPSB1
MzIocyk7CisgICQkcmVxdWlyZSgrKHZlcnNpb24gPT09IEVuY29kZS52ZXJzaW9uKSwgcywgNCwg
InVua25vd24gYmluYXJ5IHZlcnNpb24iKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7
CisgIHZhciB0eXBlcyA9IHR5cGVfc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlv
biwgcyk7CisgIHZhciBpbXBvcnRzID0gaW1wb3J0X3NlY3Rpb24ocyk7CisgIGl0ZXJhdGUoY3Vz
dG9tX3NlY3Rpb24sIHMpOworICB2YXIgZnVuY190eXBlcyA9IGZ1bmNfc2VjdGlvbihzKTsKKyAg
aXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciB0YWJsZXMgPSB0YWJsZV9zZWN0aW9u
KHMpOworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKKyAgdmFyIG1lbW9yaWVzID0gbWVt
b3J5X3NlY3Rpb24ocyk7CisgIGl0ZXJhdGUoY3VzdG9tX3NlY3Rpb24sIHMpOworICB2YXIgZ2xv
YmFscyA9IGdsb2JhbF9zZWN0aW9uKHMpOworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsK
KyAgdmFyICQkZXhwb3J0cyA9IGV4cG9ydF9zZWN0aW9uKHMpOworICBpdGVyYXRlKGN1c3RvbV9z
ZWN0aW9uLCBzKTsKKyAgdmFyIHN0YXJ0ID0gc3RhcnRfc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShj
dXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciBlbGVtcyA9IGVsZW1fc2VjdGlvbihzKTsKKyAgaXRl
cmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciBmdW5jX2JvZGllcyA9IGNvZGVfc2VjdGlv
bihzKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciBkYXRhID0gZGF0YV9z
ZWN0aW9uKHMpOworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKKyAgJCRyZXF1aXJlKCso
c1svKiBwb3MgKi8yXVswXSA9PT0gc1svKiBieXRlcyAqLzFdLmxlbmd0aCksIHMsIHNbLyogYnl0
ZXMgKi8xXS5sZW5ndGgsICJqdW5rIGFmdGVyIGxhc3Qgc2VjdGlvbiIpOworICAkJHJlcXVpcmUo
KyhMaXN0Lmxlbmd0aChmdW5jX3R5cGVzKSA9PT0gTGlzdC5sZW5ndGgoZnVuY19ib2RpZXMpKSwg
cywgc1svKiBieXRlcyAqLzFdLmxlbmd0aCwgImZ1bmN0aW9uIGFuZCBjb2RlIHNlY3Rpb24gaGF2
ZSBpbmNvbnNpc3RlbnQgbGVuZ3RocyIpOworICB2YXIgZnVuY3MgPSBMaXN0Lm1hcDIoZnVuY3Rp
b24gKHQsIGYpIHsKKyAgICAgICAgdmFyIGluaXQgPSBmWy8qIGl0ICovMV07CisgICAgICAgIHJl
dHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyog
ZnR5cGUgKi90LAorICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2Fs
cyAqLzFdLAorICAgICAgICAgICAgICAgICAgICAvKiBib2R5ICovaW5pdFsvKiBib2R5ICovMl0K
KyAgICAgICAgICAgICAgICAgIF0sIGZbLyogYXQgKi8wXSk7CisgICAgICB9LCBmdW5jX3R5cGVz
LCBmdW5jX2JvZGllcyk7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogdHlw
ZXMgKi90eXBlcywKKyAgICAgICAgICAvKiBnbG9iYWxzICovZ2xvYmFscywKKyAgICAgICAgICAv
KiB0YWJsZXMgKi90YWJsZXMsCisgICAgICAgICAgLyogbWVtb3JpZXMgKi9tZW1vcmllcywKKyAg
ICAgICAgICAvKiBmdW5jcyAqL2Z1bmNzLAorICAgICAgICAgIC8qIHN0YXJ0ICovc3RhcnQsCisg
ICAgICAgICAgLyogZWxlbXMgKi9lbGVtcywKKyAgICAgICAgICAvKiBkYXRhICovZGF0YSwKKyAg
ICAgICAgICAvKiBpbXBvcnRzICovaW1wb3J0cywKKyAgICAgICAgICAvKiBleHBvcnRzICovJCRl
eHBvcnRzCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGRlY29kZShuYW1lLCBicykgeworICBy
ZXR1cm4gYXQobW9kdWxlXywgc3RyZWFtKG5hbWUsIGJzKSk7Cit9CisKK2V4cG9ydHMuQ29kZSAg
ID0gQ29kZSQxOworZXhwb3J0cy5kZWNvZGUgPSBkZWNvZGU7CisvKiBDb2RlIE5vdCBhIHB1cmUg
bW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgZGVjb2RlLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1
cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2VuY29kZSddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgZW5jb2RlLmpz
IC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQ
TEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEYzMiAgICAgICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9mMzIiKTsKK3ZhciBGNjQgICAgICAgICAgICAgICAgICAg
ICA9IHJlcXVpcmUoIi4vZjY0Iik7Cit2YXIgTGliICAgICAgICAgICAgICAgICAgICAgPSByZXF1
aXJlKCIuL2xpYiIpOwordmFyIENoYXIgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2NoYXIiKTsKK3ZhciBMaXN0ICAgICAgICAgICAgICAgICAgICA9IHJl
cXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQnl0ZXMgICAgICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYnl0ZXMiKTsKK3ZhciBDdXJyeSAg
ICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwor
dmFyICQkRXJyb3IgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9lcnJvciIpOwordmFyIEJ1
ZmZlciAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2J1ZmZl
ciIpOwordmFyIFNvdXJjZSAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsK
K3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9q
cy9jYW1sX29iaiIpOwordmFyIENhbWxfaW50NjQgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2NhbWxfaW50NjQiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIp
OworCit2YXIgQ29kZSA9ICQkRXJyb3IuTWFrZSgvKiBtb2R1bGUgKi9bXSk7CisKK3ZhciBDb2Rl
JDEgPSBDb2RlWy8qIEVycm9yICovMF07CisKK2Z1bmN0aW9uIHN0cmVhbSgpIHsKKyAgcmV0dXJu
IC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBidWYgKi9CdWZmZXIuY3JlYXRlKDgxOTIpLAor
ICAgICAgICAgIC8qIHBhdGNoZXMgKi9bLyogW10gKi8wXQorICAgICAgICBdOworfQorCitmdW5j
dGlvbiBwYXRjaChzLCBwb3MsIGIpIHsKKyAgc1svKiBwYXRjaGVzICovMV1bMF0gPSAvKiA6OiAq
L1sKKyAgICAvKiB0dXBsZSAqL1sKKyAgICAgIHBvcywKKyAgICAgIGIKKyAgICBdLAorICAgIHNb
LyogcGF0Y2hlcyAqLzFdWzBdCisgIF07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0
aW9uIGVuY29kZShtKSB7CisgIHZhciBzID0gc3RyZWFtKC8qICgpICovMCk7CisgIHZhciB1OCA9
IGZ1bmN0aW9uIChpKSB7CisgICAgdmFyIGIgPSBDaGFyLmNocihpICYgMjU1KTsKKyAgICByZXR1
cm4gQnVmZmVyLmFkZF9jaGFyKHNbLyogYnVmICovMF0sIGIpOworICB9OworICB2YXIgdTE2ID0g
ZnVuY3Rpb24gKGkpIHsKKyAgICB1OChpICYgMjU1KTsKKyAgICByZXR1cm4gdTgoKGkgPj4+IDgp
KTsKKyAgfTsKKyAgdmFyIHUzMiA9IGZ1bmN0aW9uIChpKSB7CisgICAgdTE2KGkgJiA2NTUzNSk7
CisgICAgcmV0dXJuIHUxNigoaSA+PiAxNikpOworICB9OworICB2YXIgdnU2NCA9IGZ1bmN0aW9u
IChfaSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBpID0gX2k7CisgICAgICB2YXIg
YiA9IGlbMV0gJiAvKiBsbyAqLzEyNyB8IDA7CisgICAgICBpZiAoQ2FtbF9pbnQ2NC5sZSgvKiBp
bnQ2NCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAvKiBsbyAq
LzAKKyAgICAgICAgICAgIF0sIGkpICYmIENhbWxfaW50NjQubHQoaSwgLyogaW50NjQgKi9bCisg
ICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgLyogbG8gKi8xMjgKKyAgICAg
ICAgICAgIF0pKSB7CisgICAgICAgIHJldHVybiB1OChiKTsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICB1OChiIHwgMTI4KTsKKyAgICAgICAgX2kgPSBDYW1sX2ludDY0Lmxzcl8oaSwg
Nyk7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfTsKKyAgfTsK
KyAgdmFyIHZzNjQgPSBmdW5jdGlvbiAoX2kpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2
YXIgaSA9IF9pOworICAgICAgdmFyIGIgPSBpWzFdICYgLyogbG8gKi8xMjcgfCAwOworICAgICAg
aWYgKENhbWxfaW50NjQubGUoLyogaW50NjQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICovLTEs
CisgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzIzMgorICAgICAgICAgICAgXSwgaSkgJiYg
Q2FtbF9pbnQ2NC5sdChpLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8wLAor
ICAgICAgICAgICAgICAvKiBsbyAqLzY0CisgICAgICAgICAgICBdKSkgeworICAgICAgICByZXR1
cm4gdTgoYik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdTgoYiB8IDEyOCk7Cisg
ICAgICAgIF9pID0gQ2FtbF9pbnQ2NC5hc3JfKGksIDcpOworICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgIAorICAgICAgfQorICAgIH07CisgIH07CisgIHZhciB2dTMyID0gZnVuY3Rpb24gKGkp
IHsKKyAgICByZXR1cm4gdnU2NChDYW1sX2ludDY0LmFuZF8oQ2FtbF9pbnQ2NC5vZl9pbnQzMihp
KSwgLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAg
ICAgICAgICAgICAgLyogbG8gKi80Mjk0OTY3Mjk1CisgICAgICAgICAgICAgICAgICBdKSk7Cisg
IH07CisgIHZhciBsZW4gPSBmdW5jdGlvbiAoaSkgeworICAgIGlmIChpICE9PSBpKSB7CisgICAg
ICBDdXJyeS5fMihDb2RlWy8qIGVycm9yICovMl0sIFNvdXJjZS5ub19yZWdpb24sICJjYW5ub3Qg
ZW5jb2RlIGxlbmd0aCB3aXRoIG1vcmUgdGhhbiAzMiBiaXQiKTsKKyAgICB9CisgICAgcmV0dXJu
IHZ1MzIoaSk7CisgIH07CisgIHZhciBib29sID0gZnVuY3Rpb24gKGIpIHsKKyAgICB2YXIgaSA9
IGIgPyAxIDogMDsKKyAgICByZXR1cm4gdnU2NChDYW1sX2ludDY0LmFuZF8oQ2FtbF9pbnQ2NC5v
Zl9pbnQzMihpKSwgLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIGhpICovMCwK
KyAgICAgICAgICAgICAgICAgICAgLyogbG8gKi8xCisgICAgICAgICAgICAgICAgICBdKSk7Cisg
IH07CisgIHZhciBzdHJpbmcgPSBmdW5jdGlvbiAoYnMpIHsKKyAgICBsZW4oYnMubGVuZ3RoKTsK
KyAgICByZXR1cm4gQnVmZmVyLmFkZF9zdHJpbmcoc1svKiBidWYgKi8wXSwgYnMpOworICB9Owor
ICB2YXIgdmVjID0gZnVuY3Rpb24gKGYsIHhzKSB7CisgICAgbGVuKExpc3QubGVuZ3RoKHhzKSk7
CisgICAgcmV0dXJuIExpc3QuaXRlcihmLCB4cyk7CisgIH07CisgIHZhciBnYXAzMiA9IGZ1bmN0
aW9uICgpIHsKKyAgICB2YXIgcCA9IEJ1ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSk7CisgICAg
dTMyKDApOworICAgIHU4KDApOworICAgIHJldHVybiBwOworICB9OworICB2YXIgcGF0Y2hfZ2Fw
MzIgPSBmdW5jdGlvbiAocCwgbikgeworICAgIGlmIChuID4gMjY4NDM1NDU1KSB7CisgICAgICB0
aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVy
ZSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUv
cm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1s
IiwKKyAgICAgICAgICAgICAgODAsCisgICAgICAgICAgICAgIDYKKyAgICAgICAgICAgIF0KKyAg
ICAgICAgICBdOworICAgIH0KKyAgICBwYXRjaChzLCBwLCBDaGFyLmNocigobiB8IDEyOCkgJiAy
NTUpKTsKKyAgICBwYXRjaChzLCBwICsgMSB8IDAsIENoYXIuY2hyKCgobiA+Pj4gNykgfCAxMjgp
ICYgMjU1KSk7CisgICAgcGF0Y2gocywgcCArIDIgfCAwLCBDaGFyLmNocigoKG4gPj4+IDE0KSB8
IDEyOCkgJiAyNTUpKTsKKyAgICBwYXRjaChzLCBwICsgMyB8IDAsIENoYXIuY2hyKCgobiA+Pj4g
MjEpIHwgMTI4KSAmIDI1NSkpOworICAgIHJldHVybiBwYXRjaChzLCBwICsgNCB8IDAsIENoYXIu
Y2hyKChuID4+PiAyOCkgJiAyNTUpKTsKKyAgfTsKKyAgdmFyIHZhbHVlX3R5cGUgPSBmdW5jdGlv
biAocGFyYW0pIHsKKyAgICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICByZXR1cm4gdnM2NCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBo
aSAqLy0xLAorICAgICAgICAgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI5NQorICAgICAg
ICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiB2czY0
KC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgICAgIC8qIGhpICovLTEsCisgICAgICAg
ICAgICAgICAgICAgICAgLyogbG8gKi80Mjk0OTY3Mjk0CisgICAgICAgICAgICAgICAgICAgIF0p
OworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIHZzNjQoLyogaW50NjQgKi9bCisg
ICAgICAgICAgICAgICAgICAgICAgLyogaGkgKi8tMSwKKyAgICAgICAgICAgICAgICAgICAgICAv
KiBsbyAqLzQyOTQ5NjcyOTMKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDMg
OiAKKyAgICAgICAgICByZXR1cm4gdnM2NCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgICAvKiBoaSAqLy0xLAorICAgICAgICAgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI5
MgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIAorICAgIH0KKyAgfTsKKyAgdmFyIHN0
YWNrX3R5cGUgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIGlm
IChwYXJhbVsxXSkgeworICAgICAgICByZXR1cm4gQ3VycnkuXzIoQ29kZVsvKiBlcnJvciAqLzJd
LCBTb3VyY2Uubm9fcmVnaW9uLCAiY2Fubm90IGVuY29kZSBzdGFjayB0eXBlIHdpdGggYXJpdHkg
PiAxICh5ZXQpIik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHZhbHVl
X3R5cGUocGFyYW1bMF0pOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biB2czY0KC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8tMSwKKyAgICAg
ICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzIzMgorICAgICAgICAgICAgICAgIF0pOworICAg
IH0KKyAgfTsKKyAgdmFyIGZ1bmNfdHlwZSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHZzNjQo
LyogaW50NjQgKi9bCisgICAgICAgICAgLyogaGkgKi8tMSwKKyAgICAgICAgICAvKiBsbyAqLzQy
OTQ5NjcyNjQKKyAgICAgICAgXSk7CisgICAgdmVjKHZhbHVlX3R5cGUsIHBhcmFtWzBdKTsKKyAg
ICByZXR1cm4gdmVjKHZhbHVlX3R5cGUsIHBhcmFtWzFdKTsKKyAgfTsKKyAgdmFyIGxpbWl0cyA9
IGZ1bmN0aW9uICh2dSwgcGFyYW0pIHsKKyAgICB2YXIgbWF4ID0gcGFyYW1bLyogbWF4ICovMV07
CisgICAgYm9vbCgrKG1heCAhPT0gLyogTm9uZSAqLzApKTsKKyAgICBDdXJyeS5fMSh2dSwgcGFy
YW1bLyogbWluICovMF0pOworICAgIHJldHVybiBDdXJyeS5fMihMaWIuT3B0aW9uWy8qIGFwcCAq
LzJdLCB2dSwgbWF4KTsKKyAgfTsKKyAgdmFyIHRhYmxlX3R5cGUgPSBmdW5jdGlvbiAocGFyYW0p
IHsKKyAgICB2czY0KC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovLTEsCisgICAgICAg
ICAgLyogbG8gKi80Mjk0OTY3MjgwCisgICAgICAgIF0pOworICAgIHJldHVybiBsaW1pdHModnUz
MiwgcGFyYW1bMF0pOworICB9OworICB2YXIgbWVtb3J5X3R5cGUgPSBmdW5jdGlvbiAocGFyYW0p
IHsKKyAgICByZXR1cm4gbGltaXRzKHZ1MzIsIHBhcmFtWzBdKTsKKyAgfTsKKyAgdmFyIGdsb2Jh
bF90eXBlID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgdmFsdWVfdHlwZShwYXJhbVswXSk7Cisg
ICAgdmFyIHBhcmFtJDEgPSBwYXJhbVsxXTsKKyAgICBpZiAocGFyYW0kMSAhPT0gMCkgeworICAg
ICAgcmV0dXJuIHU4KDEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiB1OCgwKTsK
KyAgICB9CisgIH07CisgIHZhciBtZW1vcCA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHZ1MzIo
cGFyYW1bLyogYWxpZ24gKi8xXSk7CisgICAgcmV0dXJuIHZ1MzIocGFyYW1bLyogb2Zmc2V0ICov
Ml0pOworICB9OworICB2YXIgJCR2YXIgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB2dTMy
KHhbLyogaXQgKi8xXSk7CisgIH07CisgIHZhciBpbnN0ciA9IGZ1bmN0aW9uIChlKSB7CisgICAg
dmFyIG1hdGNoID0gZVsvKiBpdCAqLzFdOworICAgIGlmICh0eXBlb2YgbWF0Y2ggPT09ICJudW1i
ZXIiKSB7CisgICAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgcmV0dXJuIHU4KDApOworICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIHJldHVy
biB1OCgxKTsKKyAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICByZXR1cm4gdTgoMTUpOwor
ICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHJldHVybiB1OCgyNik7CisgICAgICAgIGNh
c2UgNCA6IAorICAgICAgICAgICAgcmV0dXJuIHU4KDI3KTsKKyAgICAgICAgY2FzZSA1IDogCisg
ICAgICAgICAgICB1OCg2Myk7CisgICAgICAgICAgICByZXR1cm4gdTgoMCk7CisgICAgICAgIGNh
c2UgNiA6IAorICAgICAgICAgICAgdTgoNjQpOworICAgICAgICAgICAgcmV0dXJuIHU4KDApOwor
ICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzd2l0Y2ggKG1hdGNo
LnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICB1OCgyKTsKKyAgICAg
ICAgICAgIHN0YWNrX3R5cGUobWF0Y2hbMF0pOworICAgICAgICAgICAgTGlzdC5pdGVyKGluc3Ry
LCBtYXRjaFsxXSk7CisgICAgICAgICAgICByZXR1cm4gdTgoMTEpOworICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgIHU4KDMpOworICAgICAgICAgICAgc3RhY2tfdHlwZShtYXRjaFswXSk7
CisgICAgICAgICAgICBMaXN0Lml0ZXIoaW5zdHIsIG1hdGNoWzFdKTsKKyAgICAgICAgICAgIHJl
dHVybiB1OCgxMSk7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgdmFyIGVzMiA9IG1h
dGNoWzJdOworICAgICAgICAgICAgdTgoNCk7CisgICAgICAgICAgICBzdGFja190eXBlKG1hdGNo
WzBdKTsKKyAgICAgICAgICAgIExpc3QuaXRlcihpbnN0ciwgbWF0Y2hbMV0pOworICAgICAgICAg
ICAgaWYgKGVzMiAhPT0gLyogW10gKi8wKSB7CisgICAgICAgICAgICAgIHU4KDUpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgTGlzdC5pdGVyKGluc3RyLCBlczIpOworICAgICAgICAgICAg
cmV0dXJuIHU4KDExKTsKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICB1OCgxMik7Cisg
ICAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBpdCAqLzFdKTsKKyAgICAgICAgY2Fz
ZSA0IDogCisgICAgICAgICAgICB1OCgxMyk7CisgICAgICAgICAgICByZXR1cm4gdnUzMihtYXRj
aFswXVsvKiBpdCAqLzFdKTsKKyAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICB1OCgxNCk7
CisgICAgICAgICAgICB2ZWMoJCR2YXIsIG1hdGNoWzBdKTsKKyAgICAgICAgICAgIHJldHVybiB2
dTMyKG1hdGNoWzFdWy8qIGl0ICovMV0pOworICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAg
IHU4KDE2KTsKKyAgICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNoWzBdWy8qIGl0ICovMV0pOwor
ICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIHU4KDE3KTsKKyAgICAgICAgICAgIHZ1MzIo
bWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgICAgICByZXR1cm4gdTgoMCk7CisgICAgICAg
IGNhc2UgOCA6IAorICAgICAgICAgICAgdTgoMzIpOworICAgICAgICAgICAgcmV0dXJuIHZ1MzIo
bWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgdTgo
MzMpOworICAgICAgICAgICAgcmV0dXJuIHZ1MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAg
ICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIHU4KDM0KTsKKyAgICAgICAgICAgIHJldHVybiB2
dTMyKG1hdGNoWzBdWy8qIGl0ICovMV0pOworICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAg
ICB1OCgzNSk7CisgICAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBpdCAqLzFdKTsK
KyAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgdTgoMzYpOworICAgICAgICAgICAgcmV0
dXJuIHZ1MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAg
ICAgICAgIHZhciBtbyA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dpdGNoIChtb1svKiB0eSAq
LzBdKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgdmFyIG1h
dGNoJDEgPSBtb1svKiBzeiAqLzNdOworICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDEpIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBtYXRjaCQxWzBdOworICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDJbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICBj
YXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDJbMV0gIT09IDAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCg0NSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1OCg0NCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9w
KG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkMlsxXSAhPT0g
MCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4KDQ3KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHU4KDQ2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVt
b3AobW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2Zh
aWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNt
L3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICB1OCg0MCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBtZW1vcChtbyk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gk
MyA9IG1vWy8qIHN6ICovM107CisgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkMykgeworICAg
ICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IG1hdGNoJDNbMF07CisgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAobWF0Y2gkNFswXSkgeworICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkNFsxXSAhPT0gMCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4KDQ5KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHU4KDQ4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8p
OworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQ0WzFdICE9PSAwKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTgoNTEpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdTgoNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcCht
byk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDRbMV0gIT09IDAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCg1Myk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1OCg1Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9w
KG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdTgoNDEpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAg
ICAgaWYgKG1vWy8qIHN6ICovM10pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFp
bHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnBy
ZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1OCg0
Mik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7CisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAzIDog
CisgICAgICAgICAgICAgICAgICBpZiAobW9bLyogc3ogKi8zXSkgeworICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcv
d2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxOTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OAorICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHU4KDQzKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1v
KTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IDE0IDogCisgICAgICAgICAgICB2YXIgbW8kMSA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dp
dGNoIChtbyQxWy8qIHR5ICovMF0pIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAg
ICAgICAgICAgICB2YXIgbWF0Y2gkNSA9IG1vJDFbLyogc3ogKi8zXTsKKyAgICAgICAgICAgICAg
ICAgIGlmIChtYXRjaCQ1KSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkNVsw
XSkgeworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAg
ICAgICAgICB1OCg1OCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcCht
byQxKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgdTgoNTkpOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3Ao
bW8kMSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2Nh
bC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGli
L3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwNCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdTgoNTQp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7CisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxIDog
CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNiA9IG1vJDFbLyogc3ogKi8zXTsKKyAgICAg
ICAgICAgICAgICAgIGlmIChtYXRjaCQ2KSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
bWF0Y2gkNlswXSkgeworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgICB1OCg2MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBtZW1vcChtbyQxKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgdTgoNjEpOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWVtb3AobW8kMSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHU4KDYyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG1lbW9wKG1vJDEpOworICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgdTgoNTUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVt
b3AobW8kMSk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICBpZiAobW8kMVsvKiBz
eiAqLzNdKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9s
b2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pz
bGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwOCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1OAorICAgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHU4KDU2KTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vJDEpOworICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAg
ICAgICAgICAgaWYgKG1vJDFbLyogc3ogKi8zXSkgeworICAgICAgICAgICAgICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVj
L2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyMDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICB1OCg1Nyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyQxKTsKKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE1IDog
CisgICAgICAgICAgICB2YXIgbWF0Y2gkNyA9IG1hdGNoWzBdWy8qIGl0ICovMV07CisgICAgICAg
ICAgICBzd2l0Y2ggKG1hdGNoJDcudGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDAgOiAK
KyAgICAgICAgICAgICAgICAgIHU4KDY1KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB2czY0
KENhbWxfaW50NjQub2ZfaW50MzIobWF0Y2gkN1swXSkpOworICAgICAgICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgICAgICAgIHU4KDY2KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB2
czY0KG1hdGNoJDdbMF0pOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAg
ICAgIHU4KDY3KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB1MzIoQ3VycnkuXzEoRjMyLnRv
X2JpdHMsIG1hdGNoJDdbMF0pKTsKKyAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAg
ICAgICAgICB1OCg2OCk7CisgICAgICAgICAgICAgICAgICB2YXIgaSA9IEN1cnJ5Ll8xKEY2NC50
b19iaXRzLCBtYXRjaCQ3WzBdKTsKKyAgICAgICAgICAgICAgICAgIHUzMihpWzFdICYgLyogbG8g
Ki80Mjk0OTY3Mjk1IHwgMCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdTMyKENhbWxfaW50
NjQuYXNyXyhpLCAzMilbMV0gfCAwKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgc3dpdGNo
IChtYXRjaFswXS50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDY5KTsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoODApOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVy
Zy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAyMjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDI0
CisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAg
ICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIi91
c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWls
ZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjIxLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAyNAorICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIHZhciBt
YXRjaCQ4ID0gbWF0Y2hbMF07CisgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDgudGFnIHwgMCkg
eworICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0
Y2gkOFswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCg3MCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDcxKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoNzIpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCg3Myk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDc0KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoNzUpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg3Nik7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHU4KDc3KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdTgoNzgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg3OSk7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ4WzBdKSB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDgxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoODIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg4Myk7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDg0KTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoODUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCg4Nik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6
IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDg3KTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoODgpOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCg4OSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHU4KDkwKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDhbMF0pIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
OTEpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCg5Mik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDkzKTsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTQpOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg5
NSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDk2KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAzIDogCisg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDhbMF0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTcpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCg5OCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDk5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdTgoMTAyKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgICAgdmFyIG1h
dGNoJDkgPSBtYXRjaFswXTsKKyAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkOS50YWcgfCAwKSB7
CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRj
aCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDEwMyk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwNCk7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwNSk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgc3dp
dGNoIChtYXRjaCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEyMSk7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEyMik7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDEyMyk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChtYXRjaCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6
IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0MCk7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEzOSk7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDE0MSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0Mik7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
NCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0Myk7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0
NCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDE0NSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAor
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ5WzBdKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1NCk7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHU4KDE1Myk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHU4KDE1NSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6
IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1Nik7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1Nyk7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDE1OCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1OSk7CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IAorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTkgOiAK
KyAgICAgICAgICAgIHZhciBtYXRjaCQxMCA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dpdGNo
IChtYXRjaCQxMC50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChtYXRjaCQxMFswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNl
IDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMDYpOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgx
MDcpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCgxMDgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMDkpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTApOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1
OCgxMTEpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxMTIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTMpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTQpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxMTUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTE2KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMSA6
IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDExNyk7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTgp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoMTE5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEyMCk7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQxMFswXSkgewor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCgxMjQpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxMjUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjYpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjcp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCgxMjgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjkpOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzApOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgx
MzEpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCgxMzIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzMpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDEwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTM0KTsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHU4KDEzNSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxMzYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEzIDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTM3KTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEzOCk7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAg
c3dpdGNoIChtYXRjaCQxMFswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDYpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDcpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxNDgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxNDkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTApOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTEpOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCgxNTIpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTBbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTYwKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dTgoMTYxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdTgoMTYyKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTYzKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY0KTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdTgoMTY1KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTY2KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyMCA6IAorICAg
ICAgICAgICAgdmFyIG1hdGNoJDExID0gbWF0Y2hbMF07CisgICAgICAgICAgICBzd2l0Y2ggKG1h
dGNoJDExLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKG1hdGNoJDExWzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6
IAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRlci9f
YnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVy
Zy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMzIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY3KTsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSAzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY4KTsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dTgoMTY5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdTgoMTcwKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTcxKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSA3IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTg4KTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKG1hdGNoJDExWzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE3Mik7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE3Myk7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNz
ZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dh
c20vc3BlYy9pbnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDM0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNzQpOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNzUpOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgx
NzYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCgxNzcpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODkpOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTFbMF0pIHsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTc4KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoMTc5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTgwKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTgx
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUv
cm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1s
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6
IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE4Mik7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE5MCk7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAg
c3dpdGNoIChtYXRjaCQxMVswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODMpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODQpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxODUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxODYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODcpOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWls
dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMv
aW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzNjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQx
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdTgoMTkxKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICB9CisgICAgfQor
ICB9OworICB2YXIgJCRjb25zdCA9IGZ1bmN0aW9uIChjKSB7CisgICAgTGlzdC5pdGVyKGluc3Ry
LCBjWy8qIGl0ICovMV0pOworICAgIHJldHVybiB1OCgxMSk7CisgIH07CisgIHZhciBzZWN0aW9u
ID0gZnVuY3Rpb24gKGlkLCBmLCB4LCBuZWVkZWQpIHsKKyAgICBpZiAobmVlZGVkKSB7CisgICAg
ICB1OChpZCk7CisgICAgICB2YXIgZyA9IGdhcDMyKC8qICgpICovMCk7CisgICAgICB2YXIgcCA9
IEJ1ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSk7CisgICAgICBDdXJyeS5fMShmLCB4KTsKKyAg
ICAgIHJldHVybiBwYXRjaF9nYXAzMihnLCBCdWZmZXIubGVuZ3RoKHNbLyogYnVmICovMF0pIC0g
cCB8IDApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgfTsK
KyAgdmFyIHR5cGVfc2VjdGlvbiA9IGZ1bmN0aW9uICh0cykgeworICAgIHJldHVybiBzZWN0aW9u
KDEsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY190
eXBlLCBwYXJhbSk7CisgICAgICAgICAgICAgIH0sIHRzLCArKHRzICE9PSAvKiBbXSAqLzApKTsK
KyAgfTsKKyAgdmFyICQkaW1wb3J0ID0gZnVuY3Rpb24gKGltKSB7CisgICAgdmFyIG1hdGNoID0g
aW1bLyogaXQgKi8xXTsKKyAgICBzdHJpbmcobWF0Y2hbLyogbW9kdWxlX25hbWUgKi8wXSk7Cisg
ICAgc3RyaW5nKG1hdGNoWy8qIGl0ZW1fbmFtZSAqLzFdKTsKKyAgICB2YXIgayA9IG1hdGNoWy8q
IGlraW5kICovMl07CisgICAgdmFyIG1hdGNoJDEgPSBrWy8qIGl0ICovMV07CisgICAgc3dpdGNo
IChtYXRjaCQxLnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHU4KDApOwor
ICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNoJDFbMF1bLyogaXQgKi8xXSk7CisgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICB1OCgxKTsKKyAgICAgICAgICByZXR1cm4gdGFibGVfdHlwZShtYXRj
aCQxWzBdKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHU4KDIpOworICAgICAgICAgIHJl
dHVybiBtZW1vcnlfdHlwZShtYXRjaCQxWzBdKTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAg
IHU4KDMpOworICAgICAgICAgIHJldHVybiBnbG9iYWxfdHlwZShtYXRjaCQxWzBdKTsKKyAgICAg
IAorICAgIH0KKyAgfTsKKyAgdmFyIGltcG9ydF9zZWN0aW9uID0gZnVuY3Rpb24gKGltcykgewor
ICAgIHJldHVybiBzZWN0aW9uKDIsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAg
IHJldHVybiB2ZWMoJCRpbXBvcnQsIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgaW1zLCArKGlt
cyAhPT0gLyogW10gKi8wKSk7CisgIH07CisgIHZhciBmdW5jID0gZnVuY3Rpb24gKGYpIHsKKyAg
ICByZXR1cm4gdnUzMihmWy8qIGl0ICovMV1bLyogZnR5cGUgKi8wXVsvKiBpdCAqLzFdKTsKKyAg
fTsKKyAgdmFyIGZ1bmNfc2VjdGlvbiA9IGZ1bmN0aW9uIChmcykgeworICAgIHJldHVybiBzZWN0
aW9uKDMsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVu
YywgcGFyYW0pOworICAgICAgICAgICAgICB9LCBmcywgKyhmcyAhPT0gLyogW10gKi8wKSk7Cisg
IH07CisgIHZhciB0YWJsZSA9IGZ1bmN0aW9uICh0YWIpIHsKKyAgICB2YXIgbWF0Y2ggPSB0YWJb
LyogaXQgKi8xXTsKKyAgICByZXR1cm4gdGFibGVfdHlwZShtYXRjaFsvKiB0dHlwZSAqLzBdKTsK
KyAgfTsKKyAgdmFyIHRhYmxlX3NlY3Rpb24gPSBmdW5jdGlvbiAodGFicykgeworICAgIHJldHVy
biBzZWN0aW9uKDQsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2
ZWModGFibGUsIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgdGFicywgKyh0YWJzICE9PSAvKiBb
XSAqLzApKTsKKyAgfTsKKyAgdmFyIG1lbW9yeSA9IGZ1bmN0aW9uIChtZW0pIHsKKyAgICB2YXIg
bWF0Y2ggPSBtZW1bLyogaXQgKi8xXTsKKyAgICByZXR1cm4gbWVtb3J5X3R5cGUobWF0Y2hbLyog
bXR5cGUgKi8wXSk7CisgIH07CisgIHZhciBtZW1vcnlfc2VjdGlvbiA9IGZ1bmN0aW9uIChtZW1z
KSB7CisgICAgcmV0dXJuIHNlY3Rpb24oNSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHZlYyhtZW1vcnksIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgbWVtcywg
KyhtZW1zICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIGdsb2JhbCA9IGZ1bmN0aW9uIChn
KSB7CisgICAgdmFyIG1hdGNoID0gZ1svKiBpdCAqLzFdOworICAgIGdsb2JhbF90eXBlKG1hdGNo
Wy8qIGd0eXBlICovMF0pOworICAgIHJldHVybiAkJGNvbnN0KG1hdGNoWy8qIHZhbHVlICovMV0p
OworICB9OworICB2YXIgZ2xvYmFsX3NlY3Rpb24gPSBmdW5jdGlvbiAoZ3MpIHsKKyAgICByZXR1
cm4gc2VjdGlvbig2LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dmVjKGdsb2JhbCwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBncywgKyhncyAhPT0gLyogW10g
Ki8wKSk7CisgIH07CisgIHZhciBleHBvcnRfa2luZCA9IGZ1bmN0aW9uIChrKSB7CisgICAgdmFy
IG1hdGNoID0ga1svKiBpdCAqLzFdOworICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAgIGNhc2Ug
MCA6IAorICAgICAgICAgIHJldHVybiB1OCgwKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
IHJldHVybiB1OCgxKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiB1OCgyKTsK
KyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiB1OCgzKTsKKyAgICAgIAorICAgIH0K
KyAgfTsKKyAgdmFyICQkZXhwb3J0ID0gZnVuY3Rpb24gKGV4KSB7CisgICAgdmFyIG1hdGNoID0g
ZXhbLyogaXQgKi8xXTsKKyAgICBzdHJpbmcobWF0Y2hbLyogbmFtZSAqLzBdKTsKKyAgICBleHBv
cnRfa2luZChtYXRjaFsvKiBla2luZCAqLzFdKTsKKyAgICByZXR1cm4gdnUzMihtYXRjaFsvKiBp
dGVtICovMl1bLyogaXQgKi8xXSk7CisgIH07CisgIHZhciBleHBvcnRfc2VjdGlvbiA9IGZ1bmN0
aW9uIChleHMpIHsKKyAgICByZXR1cm4gc2VjdGlvbig3LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdmVjKCQkZXhwb3J0LCBwYXJhbSk7CisgICAgICAgICAgICAg
IH0sIGV4cywgKyhleHMgIT09IC8qIFtdICovMCkpOworICB9OworICB2YXIgc3RhcnRfc2VjdGlv
biA9IGZ1bmN0aW9uICh4bykgeworICAgIHJldHVybiBzZWN0aW9uKDgsIGZ1bmN0aW9uIChwYXJh
bSkgeworICAgICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMihMaWIuT3B0aW9uWy8qIGFwcCAq
LzJdLCAkJHZhciwgcGFyYW0pOworICAgICAgICAgICAgICB9LCB4bywgKyh4byAhPT0gLyogTm9u
ZSAqLzApKTsKKyAgfTsKKyAgdmFyIGNvbXByZXNzID0gZnVuY3Rpb24gKHRzKSB7CisgICAgdmFy
IGNvbWJpbmUgPSBmdW5jdGlvbiAodCwgdHMpIHsKKyAgICAgIGlmICh0cykgeworICAgICAgICB2
YXIgbWF0Y2ggPSB0c1swXTsKKyAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwodCwgbWF0
Y2hbMF0pKSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgIHQsCisgICAgICAgICAgICAgICAgICAg
IG1hdGNoWzFdICsgMSB8IDAKKyAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICB0c1sxXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgLyogdHVwbGUgKi9b
CisgICAgICAgICAgICAgICAgICAgIHQsCisgICAgICAgICAgICAgICAgICAgIDEKKyAgICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICB0cworICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogOjogKi9b
CisgICAgICAgICAgICAgICAgLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICB0LAorICAg
ICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgdHMK
KyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBMaXN0LmZvbGRf
cmlnaHQoY29tYmluZSwgdHMsIC8qIFtdICovMCk7CisgIH07CisgIHZhciBsb2NhbCA9IGZ1bmN0
aW9uIChwYXJhbSkgeworICAgIGxlbihwYXJhbVsxXSk7CisgICAgcmV0dXJuIHZhbHVlX3R5cGUo
cGFyYW1bMF0pOworICB9OworICB2YXIgY29kZSA9IGZ1bmN0aW9uIChmKSB7CisgICAgdmFyIG1h
dGNoID0gZlsvKiBpdCAqLzFdOworICAgIHZhciBnID0gZ2FwMzIoLyogKCkgKi8wKTsKKyAgICB2
YXIgcCA9IEJ1ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSk7CisgICAgdmVjKGxvY2FsLCBjb21w
cmVzcyhtYXRjaFsvKiBsb2NhbHMgKi8xXSkpOworICAgIExpc3QuaXRlcihpbnN0ciwgbWF0Y2hb
LyogYm9keSAqLzJdKTsKKyAgICB1OCgxMSk7CisgICAgcmV0dXJuIHBhdGNoX2dhcDMyKGcsIEJ1
ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSkgLSBwIHwgMCk7CisgIH07CisgIHZhciBjb2RlX3Nl
Y3Rpb24gPSBmdW5jdGlvbiAoZnMpIHsKKyAgICByZXR1cm4gc2VjdGlvbigxMCwgZnVuY3Rpb24g
KHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYyhjb2RlLCBwYXJhbSk7CisgICAg
ICAgICAgICAgIH0sIGZzLCArKGZzICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIHNlZ21l
bnQgPSBmdW5jdGlvbiAoZGF0LCBzZWcpIHsKKyAgICB2YXIgbWF0Y2ggPSBzZWdbLyogaXQgKi8x
XTsKKyAgICB2dTMyKG1hdGNoWy8qIGluZGV4ICovMF1bLyogaXQgKi8xXSk7CisgICAgJCRjb25z
dChtYXRjaFsvKiBvZmZzZXQgKi8xXSk7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKGRhdCwgbWF0Y2hb
LyogaW5pdCAqLzJdKTsKKyAgfTsKKyAgdmFyIHRhYmxlX3NlZ21lbnQgPSBmdW5jdGlvbiAoc2Vn
KSB7CisgICAgcmV0dXJuIHNlZ21lbnQoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHZlYygkJHZhciwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBzZWcpOworICB9
OworICB2YXIgZWxlbV9zZWN0aW9uID0gZnVuY3Rpb24gKGVsZW1zKSB7CisgICAgcmV0dXJuIHNl
Y3Rpb24oOSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYyh0
YWJsZV9zZWdtZW50LCBwYXJhbSk7CisgICAgICAgICAgICAgIH0sIGVsZW1zLCArKGVsZW1zICE9
PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIG1lbW9yeV9zZWdtZW50ID0gZnVuY3Rpb24gKHNl
ZykgeworICAgIHJldHVybiBzZWdtZW50KHN0cmluZywgc2VnKTsKKyAgfTsKKyAgdmFyIG1vZHVs
ZV8gPSBmdW5jdGlvbiAobSkgeworICAgIHUzMigxODM2Mjc4MDE2KTsKKyAgICB1MzIoMTMpOwor
ICAgIHR5cGVfc2VjdGlvbihtWy8qIGl0ICovMV1bLyogdHlwZXMgKi8wXSk7CisgICAgaW1wb3J0
X3NlY3Rpb24obVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84XSk7CisgICAgZnVuY19zZWN0aW9u
KG1bLyogaXQgKi8xXVsvKiBmdW5jcyAqLzRdKTsKKyAgICB0YWJsZV9zZWN0aW9uKG1bLyogaXQg
Ki8xXVsvKiB0YWJsZXMgKi8yXSk7CisgICAgbWVtb3J5X3NlY3Rpb24obVsvKiBpdCAqLzFdWy8q
IG1lbW9yaWVzICovM10pOworICAgIGdsb2JhbF9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBnbG9i
YWxzICovMV0pOworICAgIGV4cG9ydF9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBleHBvcnRzICov
OV0pOworICAgIHN0YXJ0X3NlY3Rpb24obVsvKiBpdCAqLzFdWy8qIHN0YXJ0ICovNV0pOworICAg
IGVsZW1fc2VjdGlvbihtWy8qIGl0ICovMV1bLyogZWxlbXMgKi82XSk7CisgICAgY29kZV9zZWN0
aW9uKG1bLyogaXQgKi8xXVsvKiBmdW5jcyAqLzRdKTsKKyAgICB2YXIgZGF0YSA9IG1bLyogaXQg
Ki8xXVsvKiBkYXRhICovN107CisgICAgcmV0dXJuIHNlY3Rpb24oMTEsIGZ1bmN0aW9uIChwYXJh
bSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMobWVtb3J5X3NlZ21lbnQsIHBhcmFtKTsK
KyAgICAgICAgICAgICAgfSwgZGF0YSwgKyhkYXRhICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAg
bW9kdWxlXyhtKTsKKyAgdmFyIHMkMSA9IHM7CisgIHZhciBicyA9IEJ1ZmZlci50b19ieXRlcyhz
JDFbLyogYnVmICovMF0pOworICBMaXN0Lml0ZXIoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAg
IGJzW3BhcmFtWzBdXSA9IHBhcmFtWzFdOworICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAg
ICAgfSwgcyQxWy8qIHBhdGNoZXMgKi8xXVswXSk7CisgIHJldHVybiBCeXRlcy50b19zdHJpbmco
YnMpOworfQorCit2YXIgdmVyc2lvbiA9IDEzOworCitleHBvcnRzLkNvZGUgICAgPSBDb2RlJDE7
CitleHBvcnRzLnZlcnNpb24gPSB2ZXJzaW9uOworZXhwb3J0cy5lbmNvZGUgID0gZW5jb2RlOwor
LyogQ29kZSBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGVuY29kZS5qcyAv
Ly8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wydl
cnJvciddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8g
c3RhcnQgb2YgZXJyb3IuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQg
VkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2
YXIgU291cmNlICAgICAgICAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciBDYW1sX2V4Y2Vw
dGlvbnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9leGNlcHRpb25zIik7CisK
K2Z1bmN0aW9uIE1ha2UoKSB7CisgIHZhciAkJEVycm9yID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0
ZSgiRXJyb3IuTWFrZSgqKS5FcnJvciIpOworICB2YXIgd2FybiA9IGZ1bmN0aW9uIChhdCwgbSkg
eworICAgIGNvbnNvbGUuZXJyb3IoU291cmNlLnN0cmluZ19vZl9yZWdpb24oYXQpICsgKCI6IHdh
cm5pbmc6ICIgKyBtKSk7CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfTsKKyAgdmFyIGVycm9y
ID0gZnVuY3Rpb24gKGF0LCBtKSB7CisgICAgdGhyb3cgWworICAgICAgICAgICQkRXJyb3IsCisg
ICAgICAgICAgYXQsCisgICAgICAgICAgbQorICAgICAgICBdOworICB9OworICByZXR1cm4gLyog
bW9kdWxlICovWworICAgICAgICAgIC8qIEVycm9yICovJCRFcnJvciwKKyAgICAgICAgICAvKiB3
YXJuICovd2FybiwKKyAgICAgICAgICAvKiBlcnJvciAqL2Vycm9yCisgICAgICAgIF07Cit9CisK
K2V4cG9ydHMuTWFrZSA9IE1ha2U7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5k
IG9mIGVycm9yLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKwor
ICBfcmVnaXN0cnlbJ2YzMiddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9
OworLy8vLy8vLy8gc3RhcnQgb2YgZjMyLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVD
S0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIEJsb2NrICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Js
b2NrIik7Cit2YXIgQ3VycnkgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3Vy
cnkiKTsKK3ZhciBGbG9hdCAgICAgICA9IHJlcXVpcmUoIi4vZmxvYXQiKTsKK3ZhciBJbnQzMiAg
ICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9pbnQzMiIpOwordmFyIFByaW50ZiAg
ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3ByaW50ZiIpOwordmFyIENhbWxfZmxv
YXQgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZmxvYXQiKTsKK3ZhciBDYW1s
X2Zvcm1hdCA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zvcm1hdCIpOworCitm
dW5jdGlvbiBwcmludF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzKGEpIHsKKyAgcmV0dXJuIEN1cnJ5
Ll8xKFByaW50Zi5zcHJpbnRmKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIElu
dDMyICovQmxvY2suX18oNSwgWworICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwK
KyAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIC8qIEVu
ZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAg
ICAgIiVseCIKKyAgICAgICAgICAgICAgICBdKSwgSW50MzIuYWJzKDIxMzkwOTUwNDAgXiBhKSk7
Cit9CisKK3ZhciBpbmNsdWRlID0gRmxvYXQuTWFrZSgvKiBtb2R1bGUgKi9bCisgICAgICAvKiBw
b3NfbmFuICovMjE0MzI4OTM0NCwKKyAgICAgIC8qIG5lZ19uYW4gKi8tNDE5NDMwNCwKKyAgICAg
IC8qIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAqL0NhbWxfZmxvYXQuY2FtbF9pbnQzMl9iaXRz
X29mX2Zsb2F0LAorICAgICAgLyogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICovQ2FtbF9mbG9h
dC5jYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMsCisgICAgICAvKiBjYW1sX2ludDMyX29mX3N0cmlu
ZyAqL0NhbWxfZm9ybWF0LmNhbWxfaW50MzJfb2Zfc3RyaW5nLAorICAgICAgLyogdG9fc3RyaW5n
ICovSW50MzIudG9fc3RyaW5nLAorICAgICAgLyogJWludDMyX2FuZCAqL2Z1bmN0aW9uIChwcmlt
LCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIHByaW0gJiBwcmltJDE7CisgICAgICB9LAorICAg
ICAgLyogJWludDMyX29yICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1
cm4gcHJpbSB8IHByaW0kMTsKKyAgICAgIH0sCisgICAgICAvKiAlaW50MzJfeG9yICovZnVuY3Rp
b24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSBeIHByaW0kMTsKKyAgICAg
IH0sCisgICAgICAvKiBtaW5faW50ICovSW50MzIubWluX2ludCwKKyAgICAgIC8qIG1heF9pbnQg
Ki9JbnQzMi5tYXhfaW50LAorICAgICAgLyogemVybyAqL0ludDMyLnplcm8sCisgICAgICAvKiBi
YXJlX25hbiAqLzIxMzkwOTUwNDAsCisgICAgICAvKiBwcmludF9uYW5fc2lnbmlmaWNhbmRfZGln
aXRzICovcHJpbnRfbmFuX3NpZ25pZmljYW5kX2RpZ2l0cworICAgIF0pOworCit2YXIgcG9zX25h
biA9IGluY2x1ZGVbMF07CisKK3ZhciBuZWdfbmFuID0gaW5jbHVkZVsxXTsKKwordmFyIG9mX2Zs
b2F0ID0gaW5jbHVkZVsyXTsKKwordmFyIHRvX2Zsb2F0ID0gaW5jbHVkZVszXTsKKwordmFyIG9m
X3N0cmluZyA9IGluY2x1ZGVbNF07CisKK3ZhciB0b19zdHJpbmcgPSBpbmNsdWRlWzVdOworCit2
YXIgb2ZfYml0cyA9IGluY2x1ZGVbNl07CisKK3ZhciB0b19iaXRzID0gaW5jbHVkZVs3XTsKKwor
dmFyIGFkZCA9IGluY2x1ZGVbOF07CisKK3ZhciBzdWIgPSBpbmNsdWRlWzldOworCit2YXIgbXVs
ID0gaW5jbHVkZVsxMF07CisKK3ZhciBkaXYgPSBpbmNsdWRlWzExXTsKKwordmFyIHNxcnQgPSBp
bmNsdWRlWzEyXTsKKwordmFyIG1pbiA9IGluY2x1ZGVbMTNdOworCit2YXIgbWF4ID0gaW5jbHVk
ZVsxNF07CisKK3ZhciBjZWlsID0gaW5jbHVkZVsxNV07CisKK3ZhciBmbG9vciA9IGluY2x1ZGVb
MTZdOworCit2YXIgdHJ1bmMgPSBpbmNsdWRlWzE3XTsKKwordmFyIG5lYXJlc3QgPSBpbmNsdWRl
WzE4XTsKKwordmFyIGFicyA9IGluY2x1ZGVbMTldOworCit2YXIgbmVnID0gaW5jbHVkZVsyMF07
CisKK3ZhciBjb3B5c2lnbiA9IGluY2x1ZGVbMjFdOworCit2YXIgZXEgPSBpbmNsdWRlWzIyXTsK
KwordmFyIG5lID0gaW5jbHVkZVsyM107CisKK3ZhciBsdCA9IGluY2x1ZGVbMjRdOworCit2YXIg
bGUgPSBpbmNsdWRlWzI1XTsKKwordmFyIGd0ID0gaW5jbHVkZVsyNl07CisKK3ZhciBnZSA9IGlu
Y2x1ZGVbMjddOworCit2YXIgemVybyA9IGluY2x1ZGVbMjhdOworCitleHBvcnRzLnBvc19uYW4g
ICA9IHBvc19uYW47CitleHBvcnRzLm5lZ19uYW4gICA9IG5lZ19uYW47CitleHBvcnRzLm9mX2Zs
b2F0ICA9IG9mX2Zsb2F0OworZXhwb3J0cy50b19mbG9hdCAgPSB0b19mbG9hdDsKK2V4cG9ydHMu
b2Zfc3RyaW5nID0gb2Zfc3RyaW5nOworZXhwb3J0cy50b19zdHJpbmcgPSB0b19zdHJpbmc7Citl
eHBvcnRzLm9mX2JpdHMgICA9IG9mX2JpdHM7CitleHBvcnRzLnRvX2JpdHMgICA9IHRvX2JpdHM7
CitleHBvcnRzLmFkZCAgICAgICA9IGFkZDsKK2V4cG9ydHMuc3ViICAgICAgID0gc3ViOworZXhw
b3J0cy5tdWwgICAgICAgPSBtdWw7CitleHBvcnRzLmRpdiAgICAgICA9IGRpdjsKK2V4cG9ydHMu
c3FydCAgICAgID0gc3FydDsKK2V4cG9ydHMubWluICAgICAgID0gbWluOworZXhwb3J0cy5tYXgg
ICAgICAgPSBtYXg7CitleHBvcnRzLmNlaWwgICAgICA9IGNlaWw7CitleHBvcnRzLmZsb29yICAg
ICA9IGZsb29yOworZXhwb3J0cy50cnVuYyAgICAgPSB0cnVuYzsKK2V4cG9ydHMubmVhcmVzdCAg
ID0gbmVhcmVzdDsKK2V4cG9ydHMuYWJzICAgICAgID0gYWJzOworZXhwb3J0cy5uZWcgICAgICAg
PSBuZWc7CitleHBvcnRzLmNvcHlzaWduICA9IGNvcHlzaWduOworZXhwb3J0cy5lcSAgICAgICAg
PSBlcTsKK2V4cG9ydHMubmUgICAgICAgID0gbmU7CitleHBvcnRzLmx0ICAgICAgICA9IGx0Owor
ZXhwb3J0cy5sZSAgICAgICAgPSBsZTsKK2V4cG9ydHMuZ3QgICAgICAgID0gZ3Q7CitleHBvcnRz
LmdlICAgICAgICA9IGdlOworZXhwb3J0cy56ZXJvICAgICAgPSB6ZXJvOworLyogaW5jbHVkZSBO
b3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGYzMi5qcyAvLy8vLy8vLworwqAg
wqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydmNjQnXSA9IGZ1bmN0
aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGY2NC5q
cyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwg
UExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBCbG9jayAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFyIEN1cnJ5ICAgICAgID0g
cmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2YXIgRmxvYXQgICAgICAgPSBy
ZXF1aXJlKCIuL2Zsb2F0Iik7Cit2YXIgSW50NjQgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvaW50NjQiKTsKK3ZhciBQcmludGYgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3Jt
L2xpYi9qcy9wcmludGYiKTsKK3ZhciBDYW1sX2ludDY0ICA9IHJlcXVpcmUoImJzLXBsYXRmb3Jt
L2xpYi9qcy9jYW1sX2ludDY0Iik7Cit2YXIgQ2FtbF9mb3JtYXQgPSByZXF1aXJlKCJicy1wbGF0
Zm9ybS9saWIvanMvY2FtbF9mb3JtYXQiKTsKKwordmFyIGJhcmVfbmFuID0gLyogaW50NjQgKi9b
CisgIC8qIGhpICovMjE0NjQzNTA3MiwKKyAgLyogbG8gKi8wCitdOworCitmdW5jdGlvbiBwcmlu
dF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzKGEpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50Zi5z
cHJpbnRmKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEludDY0ICovQmxvY2su
X18oNywgWworICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwKKyAgICAgICAgICAg
ICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBO
b19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQg
Ki8wCisgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgIiVMeCIKKyAg
ICAgICAgICAgICAgICBdKSwgSW50NjQuYWJzKC8qIGludDY0ICovWworICAgICAgICAgICAgICAg
ICAgLyogaGkgKi8vKiBoaSAqLzIxNDY0MzUwNzIgXiBhWzBdLAorICAgICAgICAgICAgICAgICAg
LyogbG8gKi8oKC8qIGxvICovMCBeIGFbMV0pID4+PiAwKQorICAgICAgICAgICAgICAgIF0pKTsK
K30KKwordmFyIGluY2x1ZGUgPSBGbG9hdC5NYWtlKC8qIG1vZHVsZSAqL1sKKyAgICAgIC8qIHBv
c19uYW4gOiBpbnQ2NCAqL1sKKyAgICAgICAgLyogaGkgKi8yMTQ2OTU5MzYwLAorICAgICAgICAv
KiBsbyAqLzAKKyAgICAgIF0sCisgICAgICAvKiBuZWdfbmFuIDogaW50NjQgKi9bCisgICAgICAg
IC8qIGhpICovLTUyNDI4OCwKKyAgICAgICAgLyogbG8gKi8wCisgICAgICBdLAorICAgICAgLyog
Y2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICovQ2FtbF9pbnQ2NC5iaXRzX29mX2Zsb2F0LAorICAg
ICAgLyogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICovQ2FtbF9pbnQ2NC5mbG9hdF9vZl9iaXRz
LAorICAgICAgLyogY2FtbF9pbnQ2NF9vZl9zdHJpbmcgKi9DYW1sX2Zvcm1hdC5jYW1sX2ludDY0
X29mX3N0cmluZywKKyAgICAgIC8qIHRvX3N0cmluZyAqL0ludDY0LnRvX3N0cmluZywKKyAgICAg
IC8qICVpbnQ2NF9hbmQgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVy
biAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gJiBwcmltJDFb
MF0sCisgICAgICAgICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gJiBwcmltJDFbMV0pID4+PiAw
KQorICAgICAgICAgICAgICBdOworICAgICAgfSwKKyAgICAgIC8qICVpbnQ2NF9vciAqL2Z1bmN0
aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAg
ICAgICAgICAgIC8qIGhpICovcHJpbVswXSB8IHByaW0kMVswXSwKKyAgICAgICAgICAgICAgICAv
KiBsbyAqLygocHJpbVsxXSB8IHByaW0kMVsxXSkgPj4+IDApCisgICAgICAgICAgICAgIF07Cisg
ICAgICB9LAorICAgICAgLyogJWludDY0X3hvciAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsK
KyAgICAgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgIC8qIGhpICovcHJp
bVswXSBeIHByaW0kMVswXSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLygocHJpbVsxXSBeIHBy
aW0kMVsxXSkgPj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9LAorICAgICAgLyogbWlu
X2ludCAqL0ludDY0Lm1pbl9pbnQsCisgICAgICAvKiBtYXhfaW50ICovSW50NjQubWF4X2ludCwK
KyAgICAgIC8qIHplcm8gKi9JbnQ2NC56ZXJvLAorICAgICAgLyogYmFyZV9uYW4gKi9iYXJlX25h
biwKKyAgICAgIC8qIHByaW50X25hbl9zaWduaWZpY2FuZF9kaWdpdHMgKi9wcmludF9uYW5fc2ln
bmlmaWNhbmRfZGlnaXRzCisgICAgXSk7CisKK3ZhciBwb3NfbmFuID0gaW5jbHVkZVswXTsKKwor
dmFyIG5lZ19uYW4gPSBpbmNsdWRlWzFdOworCit2YXIgb2ZfZmxvYXQgPSBpbmNsdWRlWzJdOwor
Cit2YXIgdG9fZmxvYXQgPSBpbmNsdWRlWzNdOworCit2YXIgb2Zfc3RyaW5nID0gaW5jbHVkZVs0
XTsKKwordmFyIHRvX3N0cmluZyA9IGluY2x1ZGVbNV07CisKK3ZhciBvZl9iaXRzID0gaW5jbHVk
ZVs2XTsKKwordmFyIHRvX2JpdHMgPSBpbmNsdWRlWzddOworCit2YXIgYWRkID0gaW5jbHVkZVs4
XTsKKwordmFyIHN1YiA9IGluY2x1ZGVbOV07CisKK3ZhciBtdWwgPSBpbmNsdWRlWzEwXTsKKwor
dmFyIGRpdiA9IGluY2x1ZGVbMTFdOworCit2YXIgc3FydCA9IGluY2x1ZGVbMTJdOworCit2YXIg
bWluID0gaW5jbHVkZVsxM107CisKK3ZhciBtYXggPSBpbmNsdWRlWzE0XTsKKwordmFyIGNlaWwg
PSBpbmNsdWRlWzE1XTsKKwordmFyIGZsb29yID0gaW5jbHVkZVsxNl07CisKK3ZhciB0cnVuYyA9
IGluY2x1ZGVbMTddOworCit2YXIgbmVhcmVzdCA9IGluY2x1ZGVbMThdOworCit2YXIgYWJzID0g
aW5jbHVkZVsxOV07CisKK3ZhciBuZWcgPSBpbmNsdWRlWzIwXTsKKwordmFyIGNvcHlzaWduID0g
aW5jbHVkZVsyMV07CisKK3ZhciBlcSA9IGluY2x1ZGVbMjJdOworCit2YXIgbmUgPSBpbmNsdWRl
WzIzXTsKKwordmFyIGx0ID0gaW5jbHVkZVsyNF07CisKK3ZhciBsZSA9IGluY2x1ZGVbMjVdOwor
Cit2YXIgZ3QgPSBpbmNsdWRlWzI2XTsKKwordmFyIGdlID0gaW5jbHVkZVsyN107CisKK3ZhciB6
ZXJvID0gaW5jbHVkZVsyOF07CisKK2V4cG9ydHMucG9zX25hbiAgID0gcG9zX25hbjsKK2V4cG9y
dHMubmVnX25hbiAgID0gbmVnX25hbjsKK2V4cG9ydHMub2ZfZmxvYXQgID0gb2ZfZmxvYXQ7Citl
eHBvcnRzLnRvX2Zsb2F0ICA9IHRvX2Zsb2F0OworZXhwb3J0cy5vZl9zdHJpbmcgPSBvZl9zdHJp
bmc7CitleHBvcnRzLnRvX3N0cmluZyA9IHRvX3N0cmluZzsKK2V4cG9ydHMub2ZfYml0cyAgID0g
b2ZfYml0czsKK2V4cG9ydHMudG9fYml0cyAgID0gdG9fYml0czsKK2V4cG9ydHMuYWRkICAgICAg
ID0gYWRkOworZXhwb3J0cy5zdWIgICAgICAgPSBzdWI7CitleHBvcnRzLm11bCAgICAgICA9IG11
bDsKK2V4cG9ydHMuZGl2ICAgICAgID0gZGl2OworZXhwb3J0cy5zcXJ0ICAgICAgPSBzcXJ0Owor
ZXhwb3J0cy5taW4gICAgICAgPSBtaW47CitleHBvcnRzLm1heCAgICAgICA9IG1heDsKK2V4cG9y
dHMuY2VpbCAgICAgID0gY2VpbDsKK2V4cG9ydHMuZmxvb3IgICAgID0gZmxvb3I7CitleHBvcnRz
LnRydW5jICAgICA9IHRydW5jOworZXhwb3J0cy5uZWFyZXN0ICAgPSBuZWFyZXN0OworZXhwb3J0
cy5hYnMgICAgICAgPSBhYnM7CitleHBvcnRzLm5lZyAgICAgICA9IG5lZzsKK2V4cG9ydHMuY29w
eXNpZ24gID0gY29weXNpZ247CitleHBvcnRzLmVxICAgICAgICA9IGVxOworZXhwb3J0cy5uZSAg
ICAgICAgPSBuZTsKK2V4cG9ydHMubHQgICAgICAgID0gbHQ7CitleHBvcnRzLmxlICAgICAgICA9
IGxlOworZXhwb3J0cy5ndCAgICAgICAgPSBndDsKK2V4cG9ydHMuZ2UgICAgICAgID0gZ2U7Citl
eHBvcnRzLnplcm8gICAgICA9IHplcm87CisvKiBpbmNsdWRlIE5vdCBhIHB1cmUgbW9kdWxlICov
CisvLy8vLy8vLyBlbmQgb2YgZjY0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsK
K8KgIH07CisKKworICBfcmVnaXN0cnlbJ2Zsb2F0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxl
dCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBmbG9hdC5qcyAvLy8vLy8vLworLy8g
R2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lU
SCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJl
cXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyICQkU3RyaW5nICAgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwordmFyIENhbWxf
b2JqICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2Jq
Iik7Cit2YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvcGVydmFzaXZlcyIpOwordmFyIENhbWxfZm9ybWF0ICAgICAgICAgICAgID0gcmVxdWly
ZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZm9ybWF0Iik7Cit2YXIgQ2FtbF9zdHJpbmcgICAg
ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9zdHJpbmciKTsKK3Zh
ciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9j
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBNYWtlKFJlcCkgeworICB2YXIg
cG9zX25hbiA9IFJlcFsvKiBwb3NfbmFuICovMF07CisgIHZhciBuZWdfbmFuID0gUmVwWy8qIG5l
Z19uYW4gKi8xXTsKKyAgdmFyIGJhcmVfbmFuID0gUmVwWy8qIGJhcmVfbmFuICovMTJdOworICB2
YXIgb2ZfZmxvYXQgPSBSZXBbLyogYml0c19vZl9mbG9hdCAqLzJdOworICB2YXIgdG9fZmxvYXQg
PSBSZXBbLyogZmxvYXRfb2ZfYml0cyAqLzNdOworICB2YXIgb2ZfYml0cyA9IGZ1bmN0aW9uICh4
KSB7CisgICAgcmV0dXJuIHg7CisgIH07CisgIHZhciB0b19iaXRzID0gZnVuY3Rpb24gKHgpIHsK
KyAgICByZXR1cm4geDsKKyAgfTsKKyAgdmFyIGlzX25hbiA9IGZ1bmN0aW9uICh4KSB7CisgICAg
dmFyIHhmID0gQ3VycnkuXzEoUmVwWy8qIGZsb2F0X29mX2JpdHMgKi8zXSwgeCk7CisgICAgcmV0
dXJuICsoeGYgIT09IHhmKTsKKyAgfTsKKyAgdmFyIGNhbm9uaWNhbGl6ZV9uYW4gPSBmdW5jdGlv
biAoeCkgeworICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9nb3IgKi83XSwgeCwgUmVwWy8q
IHBvc19uYW4gKi8wXSk7CisgIH07CisgIHZhciBkZXRlcm1pbmVfYmluYXJ5X25hbiA9IGZ1bmN0
aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNhbm9uaWNhbGl6ZV9uYW4oaXNfbmFuKHgpID8geCA6
ICgKKyAgICAgICAgICAgICAgICAgIGlzX25hbih5KSA/IHkgOiBSZXBbLyogcG9zX25hbiAqLzBd
CisgICAgICAgICAgICAgICAgKSk7CisgIH07CisgIHZhciBkZXRlcm1pbmVfdW5hcnlfbmFuID0g
ZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1cm4gY2Fub25pY2FsaXplX25hbihpc19uYW4oeCkgPyB4
IDogUmVwWy8qIHBvc19uYW4gKi8wXSk7CisgIH07CisgIHZhciBiaW5hcnkgPSBmdW5jdGlvbiAo
eCwgb3AsIHkpIHsKKyAgICB2YXIgeGYgPSBDdXJyeS5fMSh0b19mbG9hdCwgeCk7CisgICAgdmFy
IHlmID0gQ3VycnkuXzEodG9fZmxvYXQsIHkpOworICAgIHZhciB0ID0gQ3VycnkuXzIob3AsIHhm
LCB5Zik7CisgICAgaWYgKHQgPT09IHQpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShvZl9mbG9h
dCwgdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGRldGVybWluZV9iaW5hcnlf
bmFuKHgsIHkpOworICAgIH0KKyAgfTsKKyAgdmFyIHVuYXJ5ID0gZnVuY3Rpb24gKG9wLCB4KSB7
CisgICAgdmFyIHQgPSBDdXJyeS5fMShvcCwgQ3VycnkuXzEodG9fZmxvYXQsIHgpKTsKKyAgICBp
ZiAodCA9PT0gdCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8xKG9mX2Zsb2F0LCB0KTsKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gZGV0ZXJtaW5lX3VuYXJ5X25hbih4KTsKKyAgICB9
CisgIH07CisgIHZhciB6ZXJvID0gQ3VycnkuXzEob2ZfZmxvYXQsIDAuMCk7CisgIHZhciBhZGQg
PSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiBiaW5hcnkoeCwgZnVuY3Rpb24gKHByaW0s
IHByaW0kMSkgeworICAgICAgICAgICAgICAgIHJldHVybiBwcmltICsgcHJpbSQxOworICAgICAg
ICAgICAgICB9LCB5KTsKKyAgfTsKKyAgdmFyIHN1YiA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAg
cmV0dXJuIGJpbmFyeSh4LCBmdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHByaW0gLSBwcmltJDE7CisgICAgICAgICAgICAgIH0sIHkpOworICB9OworICB2
YXIgbXVsID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gYmluYXJ5KHgsIGZ1bmN0aW9u
IChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJpbSAqIHByaW0kMTsK
KyAgICAgICAgICAgICAgfSwgeSk7CisgIH07CisgIHZhciBkaXYgPSBmdW5jdGlvbiAoeCwgeSkg
eworICAgIHJldHVybiBiaW5hcnkoeCwgZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAg
ICAgICAgICAgIHJldHVybiBwcmltIC8gcHJpbSQxOworICAgICAgICAgICAgICB9LCB5KTsKKyAg
fTsKKyAgdmFyIHNxcnQgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB1bmFyeShmdW5jdGlv
biAocHJpbSkgeworICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQocHJpbSk7CisgICAg
ICAgICAgICAgIH0sIHgpOworICB9OworICB2YXIgY2VpbCA9IGZ1bmN0aW9uICh4KSB7CisgICAg
cmV0dXJuIHVuYXJ5KGZ1bmN0aW9uIChwcmltKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1h
dGguY2VpbChwcmltKTsKKyAgICAgICAgICAgICAgfSwgeCk7CisgIH07CisgIHZhciBmbG9vciA9
IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0dXJuIHVuYXJ5KGZ1bmN0aW9uIChwcmltKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IocHJpbSk7CisgICAgICAgICAgICAgIH0sIHgp
OworICB9OworICB2YXIgdHJ1bmMgPSBmdW5jdGlvbiAoeCkgeworICAgIHZhciB4ZiA9IEN1cnJ5
Ll8xKHRvX2Zsb2F0LCB4KTsKKyAgICBpZiAoeGYgPT09IDAuMCkgeworICAgICAgcmV0dXJuIHg7
CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIGYgPSB4ZiA8IDAuMCA/IE1hdGguY2VpbCh4
ZikgOiBNYXRoLmZsb29yKHhmKTsKKyAgICAgIHZhciByZXN1bHQgPSBDdXJyeS5fMShvZl9mbG9h
dCwgZik7CisgICAgICBpZiAoaXNfbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgcmV0dXJuIGRldGVy
bWluZV91bmFyeV9uYW4ocmVzdWx0KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgfQorICAgIH0KKyAgfTsKKyAgdmFyIG5lYXJlc3QgPSBmdW5j
dGlvbiAoeCkgeworICAgIHZhciB4ZiA9IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KTsKKyAgICBpZiAo
eGYgPT09IDAuMCkgeworICAgICAgcmV0dXJuIHg7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
dmFyIHUgPSBNYXRoLmNlaWwoeGYpOworICAgICAgdmFyIGQgPSBNYXRoLmZsb29yKHhmKTsKKyAg
ICAgIHZhciB1bSA9IE1hdGguYWJzKHhmIC0gdSk7CisgICAgICB2YXIgZG0gPSBNYXRoLmFicyh4
ZiAtIGQpOworICAgICAgdmFyIGggPSB1IC8gMjsKKyAgICAgIHZhciB1X29yX2QgPSArKHVtIDwg
ZG0gfHwgdW0gPT09IGRtICYmIE1hdGguZmxvb3IoaCkgPT09IGgpOworICAgICAgdmFyIGYgPSB1
X29yX2QgPyB1IDogZDsKKyAgICAgIHZhciByZXN1bHQgPSBDdXJyeS5fMShvZl9mbG9hdCwgZik7
CisgICAgICBpZiAoaXNfbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgcmV0dXJuIGRldGVybWluZV91
bmFyeV9uYW4ocmVzdWx0KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgfQorICAgIH0KKyAgfTsKKyAgdmFyIG1pbiA9IGZ1bmN0aW9uICh4LCB5
KSB7CisgICAgdmFyIHhmID0gQ3VycnkuXzEodG9fZmxvYXQsIHgpOworICAgIHZhciB5ZiA9IEN1
cnJ5Ll8xKHRvX2Zsb2F0LCB5KTsKKyAgICBpZiAoeGYgPT09IHlmKSB7CisgICAgICByZXR1cm4g
Q3VycnkuXzIoUmVwWy8qIGxvZ29yICovN10sIHgsIHkpOworICAgIH0KKyAgICBlbHNlIGlmICh4
ZiA8IHlmKSB7CisgICAgICByZXR1cm4geDsKKyAgICB9CisgICAgZWxzZSBpZiAoeGYgPiB5Zikg
eworICAgICAgcmV0dXJuIHk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGRldGVy
bWluZV9iaW5hcnlfbmFuKHgsIHkpOworICAgIH0KKyAgfTsKKyAgdmFyIG1heCA9IGZ1bmN0aW9u
ICh4LCB5KSB7CisgICAgdmFyIHhmID0gQ3VycnkuXzEodG9fZmxvYXQsIHgpOworICAgIHZhciB5
ZiA9IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB5KTsKKyAgICBpZiAoeGYgPT09IHlmKSB7CisgICAgICBy
ZXR1cm4gQ3VycnkuXzIoUmVwWy8qIGxvZ2FuZCAqLzZdLCB4LCB5KTsKKyAgICB9CisgICAgZWxz
ZSBpZiAoeGYgPiB5ZikgeworICAgICAgcmV0dXJuIHg7CisgICAgfQorICAgIGVsc2UgaWYgKHhm
IDwgeWYpIHsKKyAgICAgIHJldHVybiB5OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biBkZXRlcm1pbmVfYmluYXJ5X25hbih4LCB5KTsKKyAgICB9CisgIH07CisgIHZhciBhYnMgPSBm
dW5jdGlvbiAoeCkgeworICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9nYW5kICovNl0sIHgs
IFJlcFsvKiBtYXhfaW50ICovMTBdKTsKKyAgfTsKKyAgdmFyIG5lZyA9IGZ1bmN0aW9uICh4KSB7
CisgICAgcmV0dXJuIEN1cnJ5Ll8yKFJlcFsvKiBsb2d4b3IgKi84XSwgeCwgUmVwWy8qIG1pbl9p
bnQgKi85XSk7CisgIH07CisgIHZhciBjb3B5c2lnbiA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAg
cmV0dXJuIEN1cnJ5Ll8yKFJlcFsvKiBsb2dvciAqLzddLCBhYnMoeCksIEN1cnJ5Ll8yKFJlcFsv
KiBsb2dhbmQgKi82XSwgeSwgUmVwWy8qIG1pbl9pbnQgKi85XSkpOworICB9OworICB2YXIgZXEg
PSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA9
PT0gQ3VycnkuXzEodG9fZmxvYXQsIHkpKTsKKyAgfTsKKyAgdmFyIG5lID0gZnVuY3Rpb24gKHgs
IHkpIHsKKyAgICByZXR1cm4gKyhDdXJyeS5fMSh0b19mbG9hdCwgeCkgIT09IEN1cnJ5Ll8xKHRv
X2Zsb2F0LCB5KSk7CisgIH07CisgIHZhciBsdCA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0
dXJuICsoQ3VycnkuXzEodG9fZmxvYXQsIHgpIDwgQ3VycnkuXzEodG9fZmxvYXQsIHkpKTsKKyAg
fTsKKyAgdmFyIGd0ID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gKyhDdXJyeS5fMSh0
b19mbG9hdCwgeCkgPiBDdXJyeS5fMSh0b19mbG9hdCwgeSkpOworICB9OworICB2YXIgbGUgPSBm
dW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA8PSBD
dXJyeS5fMSh0b19mbG9hdCwgeSkpOworICB9OworICB2YXIgZ2UgPSBmdW5jdGlvbiAoeCwgeSkg
eworICAgIHJldHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA+PSBDdXJyeS5fMSh0b19mbG9h
dCwgeSkpOworICB9OworICB2YXIgb2Zfc2lnbmxlc3Nfc3RyaW5nID0gZnVuY3Rpb24gKHgsIGxl
bikgeworICAgIGlmICh4ICE9PSAibmFuIiAmJiBsZW4gPiA2ICYmICQkU3RyaW5nLnN1Yih4LCAw
LCA2KSA9PT0gIm5hbjoweCIpIHsKKyAgICAgIHZhciBzID0gQ3VycnkuXzEoUmVwWy8qIG9mX3N0
cmluZyAqLzRdLCAkJFN0cmluZy5zdWIoeCwgNCwgbGVuIC0gNCB8IDApKTsKKyAgICAgIGlmIChD
YW1sX29iai5jYW1sX2VxdWFsKHMsIFJlcFsvKiB6ZXJvICovMTFdKSkgeworICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAg
ICAgICAgICAgICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBiZSB6ZXJvIgorICAgICAgICAgICAgXTsK
KyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoQ3VycnkuXzIo
UmVwWy8qIGxvZ2FuZCAqLzZdLCBzLCBiYXJlX25hbiksIFJlcFsvKiB6ZXJvICovMTFdKSkgewor
ICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZh
aWx1cmUsCisgICAgICAgICAgICAgICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBvdmVybGFwIHdpdGgg
ZXhwb25lbnQgYml0cyIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNlIGlmIChD
YW1sX29iai5jYW1sX2xlc3N0aGFuKHMsIFJlcFsvKiB6ZXJvICovMTFdKSkgeworICAgICAgICB0
aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisg
ICAgICAgICAgICAgICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBvdmVybGFwIHdpdGggc2lnbiBiaXQi
CisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBD
dXJyeS5fMihSZXBbLyogbG9nb3IgKi83XSwgcywgYmFyZV9uYW4pOworICAgICAgfQorICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShvZl9mbG9hdCwgQ2FtbF9mb3JtYXQu
Y2FtbF9mbG9hdF9vZl9zdHJpbmcoeCkpOworICAgIH0KKyAgfTsKKyAgdmFyIG9mX3N0cmluZyA9
IGZ1bmN0aW9uICh4KSB7CisgICAgdmFyIGxlbiA9IHgubGVuZ3RoOworICAgIGlmIChsZW4gPiAw
ICYmIENhbWxfc3RyaW5nLmdldCh4LCAwKSA9PT0gLyogIi0iICovNDUpIHsKKyAgICAgIHJldHVy
biBuZWcob2Zfc2lnbmxlc3Nfc3RyaW5nKCQkU3RyaW5nLnN1Yih4LCAxLCBsZW4gLSAxIHwgMCks
IGxlbiAtIDEgfCAwKSk7CisgICAgfQorICAgIGVsc2UgaWYgKGxlbiA+IDAgJiYgQ2FtbF9zdHJp
bmcuZ2V0KHgsIDApID09PSAvKiAiKyIgKi80MykgeworICAgICAgcmV0dXJuIG9mX3NpZ25sZXNz
X3N0cmluZygkJFN0cmluZy5zdWIoeCwgMSwgbGVuIC0gMSB8IDApLCBsZW4gLSAxIHwgMCk7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIG9mX3NpZ25sZXNzX3N0cmluZyh4LCBsZW4p
OworICAgIH0KKyAgfTsKKyAgdmFyIHRvX3N0cmluZyA9IGZ1bmN0aW9uICh4KSB7CisgICAgdmFy
IGEgPSBhYnMoeCk7CisgICAgcmV0dXJuICgKKyAgICAgICAgICAgIENhbWxfb2JqLmNhbWxfbGVz
c3RoYW4oeCwgUmVwWy8qIHplcm8gKi8xMV0pID8gIi0iIDogIiIKKyAgICAgICAgICApICsgKAor
ICAgICAgICAgICAgaXNfbmFuKGEpID8gIm5hbjoweCIgKyBDdXJyeS5fMShSZXBbLyogcHJpbnRf
bmFuX3NpZ25pZmljYW5kX2RpZ2l0cyAqLzEzXSwgYSkgOiBQZXJ2YXNpdmVzLnN0cmluZ19vZl9m
bG9hdChDdXJyeS5fMSh0b19mbG9hdCwgYSkpCisgICAgICAgICAgKTsKKyAgfTsKKyAgcmV0dXJu
IC8qIG1vZHVsZSAqL1sKKyAgICAgICAgICAvKiBwb3NfbmFuICovcG9zX25hbiwKKyAgICAgICAg
ICAvKiBuZWdfbmFuICovbmVnX25hbiwKKyAgICAgICAgICAvKiBvZl9mbG9hdCAqL29mX2Zsb2F0
LAorICAgICAgICAgIC8qIHRvX2Zsb2F0ICovdG9fZmxvYXQsCisgICAgICAgICAgLyogb2Zfc3Ry
aW5nICovb2Zfc3RyaW5nLAorICAgICAgICAgIC8qIHRvX3N0cmluZyAqL3RvX3N0cmluZywKKyAg
ICAgICAgICAvKiBvZl9iaXRzICovb2ZfYml0cywKKyAgICAgICAgICAvKiB0b19iaXRzICovdG9f
Yml0cywKKyAgICAgICAgICAvKiBhZGQgKi9hZGQsCisgICAgICAgICAgLyogc3ViICovc3ViLAor
ICAgICAgICAgIC8qIG11bCAqL211bCwKKyAgICAgICAgICAvKiBkaXYgKi9kaXYsCisgICAgICAg
ICAgLyogc3FydCAqL3NxcnQsCisgICAgICAgICAgLyogbWluICovbWluLAorICAgICAgICAgIC8q
IG1heCAqL21heCwKKyAgICAgICAgICAvKiBjZWlsICovY2VpbCwKKyAgICAgICAgICAvKiBmbG9v
ciAqL2Zsb29yLAorICAgICAgICAgIC8qIHRydW5jICovdHJ1bmMsCisgICAgICAgICAgLyogbmVh
cmVzdCAqL25lYXJlc3QsCisgICAgICAgICAgLyogYWJzICovYWJzLAorICAgICAgICAgIC8qIG5l
ZyAqL25lZywKKyAgICAgICAgICAvKiBjb3B5c2lnbiAqL2NvcHlzaWduLAorICAgICAgICAgIC8q
IGVxICovZXEsCisgICAgICAgICAgLyogbmUgKi9uZSwKKyAgICAgICAgICAvKiBsdCAqL2x0LAor
ICAgICAgICAgIC8qIGxlICovbGUsCisgICAgICAgICAgLyogZ3QgKi9ndCwKKyAgICAgICAgICAv
KiBnZSAqL2dlLAorICAgICAgICAgIC8qIHplcm8gKi96ZXJvCisgICAgICAgIF07Cit9CisKK2V4
cG9ydHMuTWFrZSA9IE1ha2U7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9m
IGZsb2F0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBf
cmVnaXN0cnlbJ2Zvcm1hdCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9
OworLy8vLy8vLy8gc3RhcnQgb2YgZm9ybWF0LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisK
K3ZhciBCbG9jayAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYmxvY2siKTsKK3ZhciBC
eXRlcyAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnl0ZXMiKTsKK3ZhciBDdXJyeSAg
ICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBCdWZmZXIgICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnVmZmVyIik7Cit2YXIgJCRTdHJpbmcgICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL3N0cmluZyIpOwordmFyIENhbWxfaW8gICAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9jYW1sX2lvIik7Cit2YXIgQ2FtbF9vYmogICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL2NhbWxfb2JqIik7Cit2YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1
aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9IHJlcXVp
cmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgICAgICAgICA9IHJlcXVp
cmUoIi4vY2FtbF9leGNlcHRpb25zIik7Cit2YXIgQ2FtbGludGVybmFsRm9ybWF0ICAgICAgPSBy
ZXF1aXJlKCIuL2NhbWxpbnRlcm5hbEZvcm1hdCIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBh
ZGRfcXVldWUoeCwgcSkgeworICB2YXIgYyA9IC8qIENvbnMgKi9bLyogcmVjb3JkICovWworICAg
ICAgLyogaGVhZCAqL3gsCisgICAgICAvKiB0YWlsIDogTmlsICovMAorICAgIF1dOworICB2YXIg
bWF0Y2ggPSBxWy8qIGluc2VydCAqLzBdOworICBpZiAobWF0Y2gpIHsKKyAgICBxWy8qIGluc2Vy
dCAqLzBdID0gYzsKKyAgICBtYXRjaFswXVsvKiB0YWlsICovMV0gPSBjOworICAgIHJldHVybiAv
KiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcVsvKiBpbnNlcnQgKi8wXSA9IGM7CisgICAg
cVsvKiBib2R5ICovMV0gPSBjOworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKwordmFy
IEVtcHR5X3F1ZXVlID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiRm9ybWF0LkVtcHR5X3F1ZXVl
Iik7CisKK2Z1bmN0aW9uIHBlZWtfcXVldWUocGFyYW0pIHsKKyAgdmFyIG1hdGNoID0gcGFyYW1b
LyogYm9keSAqLzFdOworICBpZiAobWF0Y2gpIHsKKyAgICByZXR1cm4gbWF0Y2hbMF1bLyogaGVh
ZCAqLzBdOworICB9CisgIGVsc2UgeworICAgIHRocm93IEVtcHR5X3F1ZXVlOworICB9Cit9CisK
K2Z1bmN0aW9uIHRha2VfcXVldWUocSkgeworICB2YXIgbWF0Y2ggPSBxWy8qIGJvZHkgKi8xXTsK
KyAgaWYgKG1hdGNoKSB7CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICB2YXIgeCA9
IG1hdGNoJDFbLyogaGVhZCAqLzBdOworICAgIHZhciB0bCA9IG1hdGNoJDFbLyogdGFpbCAqLzFd
OworICAgIHFbLyogYm9keSAqLzFdID0gdGw7CisgICAgaWYgKCF0bCkgeworICAgICAgcVsvKiBp
bnNlcnQgKi8wXSA9IC8qIE5pbCAqLzA7CisgICAgfQorICAgIHJldHVybiB4OworICB9CisgIGVs
c2UgeworICAgIHRocm93IEVtcHR5X3F1ZXVlOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2VucXVl
dWUoc3RhdGUsIHRva2VuKSB7CisgIHN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdID0gc3Rh
dGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0gKyB0b2tlblsvKiBsZW5ndGggKi8yXSB8IDA7Cisg
IHJldHVybiBhZGRfcXVldWUodG9rZW4sIHN0YXRlWy8qIHBwX3F1ZXVlICovMjZdKTsKK30KKwor
ZnVuY3Rpb24gcHBfY2xlYXJfcXVldWUoc3RhdGUpIHsKKyAgc3RhdGVbLyogcHBfbGVmdF90b3Rh
bCAqLzExXSA9IDE7CisgIHN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdID0gMTsKKyAgdmFy
IHEgPSBzdGF0ZVsvKiBwcF9xdWV1ZSAqLzI2XTsKKyAgcVsvKiBpbnNlcnQgKi8wXSA9IC8qIE5p
bCAqLzA7CisgIHFbLyogYm9keSAqLzFdID0gLyogTmlsICovMDsKKyAgcmV0dXJuIC8qICgpICov
MDsKK30KKworZnVuY3Rpb24gcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgcykgeworICByZXR1cm4g
Q3VycnkuXzMoc3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSwgcywgMCwgcy5sZW5ndGgpOwor
fQorCitmdW5jdGlvbiBicmVha19uZXdfbGluZShzdGF0ZSwgb2Zmc2V0LCB3aWR0aCkgeworICBD
dXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkgKi8wKTsKKyAgc3Rh
dGVbLyogcHBfaXNfbmV3X2xpbmUgKi8xMF0gPSAvKiB0cnVlICovMTsKKyAgdmFyIGluZGVudCA9
IChzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSAtIHdpZHRoIHwgMCkgKyBvZmZzZXQgfCAwOworICB2
YXIgcmVhbF9pbmRlbnQgPSBQZXJ2YXNpdmVzLm1pbihzdGF0ZVsvKiBwcF9tYXhfaW5kZW50ICov
N10sIGluZGVudCk7CisgIHN0YXRlWy8qIHBwX2N1cnJlbnRfaW5kZW50ICovOV0gPSByZWFsX2lu
ZGVudDsKKyAgc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdID0gc3RhdGVbLyogcHBfbWFyZ2lu
ICovNV0gLSBzdGF0ZVsvKiBwcF9jdXJyZW50X2luZGVudCAqLzldIHwgMDsKKyAgcmV0dXJuIEN1
cnJ5Ll8xKHN0YXRlWy8qIHBwX291dF9zcGFjZXMgKi8xOV0sIHN0YXRlWy8qIHBwX2N1cnJlbnRf
aW5kZW50ICovOV0pOworfQorCitmdW5jdGlvbiBicmVha19zYW1lX2xpbmUoc3RhdGUsIHdpZHRo
KSB7CisgIHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSA9IHN0YXRlWy8qIHBwX3NwYWNlX2xl
ZnQgKi84XSAtIHdpZHRoIHwgMDsKKyAgcmV0dXJuIEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX291dF9z
cGFjZXMgKi8xOV0sIHdpZHRoKTsKK30KKworZnVuY3Rpb24gcHBfZm9yY2VfYnJlYWtfbGluZShz
dGF0ZSkgeworICB2YXIgbWF0Y2ggPSBzdGF0ZVsvKiBwcF9mb3JtYXRfc3RhY2sgKi8xXTsKKyAg
aWYgKG1hdGNoKSB7CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICB2YXIgd2lkdGgg
PSBtYXRjaCQxWzFdOworICAgIHZhciBibF90eSA9IG1hdGNoJDFbMF07CisgICAgaWYgKHdpZHRo
ID4gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdICYmIGJsX3R5ICE9PSAwICYmIGJsX3R5IDwg
NSkgeworICAgICAgcmV0dXJuIGJyZWFrX25ld19saW5lKHN0YXRlLCAwLCB3aWR0aCk7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9CisgIGVsc2UgeworICAg
IHJldHVybiBDdXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkgKi8w
KTsKKyAgfQorfQorCitmdW5jdGlvbiBmb3JtYXRfcHBfdG9rZW4oc3RhdGUsIHNpemUsIHBhcmFt
KSB7CisgIGlmICh0eXBlb2YgcGFyYW0gPT09ICJudW1iZXIiKSB7CisgICAgc3dpdGNoIChwYXJh
bSkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgdmFyIG1hdGNoID0gc3RhdGVbLyogcHBf
dGJveF9zdGFjayAqLzJdOworICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAgdmFy
IHRhYnMgPSBtYXRjaFswXVswXTsKKyAgICAgICAgICAgIHZhciBhZGRfdGFiID0gZnVuY3Rpb24g
KG4sIGxzKSB7CisgICAgICAgICAgICAgIGlmIChscykgeworICAgICAgICAgICAgICAgIHZhciB4
ID0gbHNbMF07CisgICAgICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbGVzc3RoYW4obiwg
eCkpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbHMKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
ICAgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfdGFiKG4sIGxzWzFdKQor
ICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgICAgICAgbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH07CisgICAgICAgICAgICB0YWJzWzBdID0gYWRkX3RhYihzdGF0ZVsvKiBwcF9t
YXJnaW4gKi81XSAtIHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSB8IDAsIHRhYnNbMF0pOwor
ICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgIH0KKyAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHZhciBtYXRjaCQxID0gc3RhdGVb
LyogcHBfZm9ybWF0X3N0YWNrICovMV07CisgICAgICAgICAgaWYgKG1hdGNoJDEpIHsKKyAgICAg
ICAgICAgIHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdID0gbWF0Y2gkMVsxXTsKKyAgICAg
ICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICBjYXNlIDIg
OiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMiA9IHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXTsK
KyAgICAgICAgICBpZiAobWF0Y2gkMikgeworICAgICAgICAgICAgc3RhdGVbLyogcHBfdGJveF9z
dGFjayAqLzJdID0gbWF0Y2gkMlsxXTsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIC8qICgpICov
MDsKKyAgICAgICAgICB9CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMyA9
IHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdOworICAgICAgICAgIGlmIChtYXRjaCQzKSB7
CisgICAgICAgICAgICByZXR1cm4gYnJlYWtfbmV3X2xpbmUoc3RhdGUsIDAsIG1hdGNoJDNbMF1b
MV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBD
dXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkgKi8wKTsKKyAgICAg
ICAgICB9CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICBpZiAoc3RhdGVbLyogcHBfY3VycmVu
dF9pbmRlbnQgKi85XSAhPT0gKHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdIC0gc3RhdGVbLyogcHBf
c3BhY2VfbGVmdCAqLzhdIHwgMCkpIHsKKyAgICAgICAgICAgIHZhciBzdGF0ZSQxID0gc3RhdGU7
CisgICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IHRha2VfcXVldWUoc3RhdGUkMVsvKiBwcF9xdWV1
ZSAqLzI2XSk7CisgICAgICAgICAgICB2YXIgc2l6ZSQxID0gbWF0Y2gkNFsvKiBlbGVtX3NpemUg
Ki8wXTsKKyAgICAgICAgICAgIHN0YXRlJDFbLyogcHBfbGVmdF90b3RhbCAqLzExXSA9IHN0YXRl
JDFbLyogcHBfbGVmdF90b3RhbCAqLzExXSAtIG1hdGNoJDRbLyogbGVuZ3RoICovMl0gfCAwOwor
ICAgICAgICAgICAgc3RhdGUkMVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gPSBzdGF0ZSQxWy8qIHBw
X3NwYWNlX2xlZnQgKi84XSArIHNpemUkMSB8IDA7CisgICAgICAgICAgICByZXR1cm4gLyogKCkg
Ki8wOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICAgIH0KKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHZhciBtYXRjaCQ1ID0g
c3RhdGVbLyogcHBfbWFya19zdGFjayAqLzRdOworICAgICAgICAgIGlmIChtYXRjaCQ1KSB7Cisg
ICAgICAgICAgICB2YXIgbWFya2VyID0gQ3VycnkuXzEoc3RhdGVbLyogcHBfbWFya19jbG9zZV90
YWcgKi8yM10sIG1hdGNoJDVbMF0pOworICAgICAgICAgICAgcHBfb3V0cHV0X3N0cmluZyhzdGF0
ZSwgbWFya2VyKTsKKyAgICAgICAgICAgIHN0YXRlWy8qIHBwX21hcmtfc3RhY2sgKi80XSA9IG1h
dGNoJDVbMV07CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAg
fQorICAgICAgICAgIGJyZWFrOworICAgICAgCisgICAgfQorICB9CisgIGVsc2UgeworICAgIHN3
aXRjaCAocGFyYW0udGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgc3RhdGVb
LyogcHBfc3BhY2VfbGVmdCAqLzhdID0gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIC0gc2l6
ZSB8IDA7CisgICAgICAgICAgcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgcGFyYW1bMF0pOworICAg
ICAgICAgIHN0YXRlWy8qIHBwX2lzX25ld19saW5lICovMTBdID0gLyogZmFsc2UgKi8wOworICAg
ICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB2YXIg
b2ZmID0gcGFyYW1bMV07CisgICAgICAgICAgdmFyIG4gPSBwYXJhbVswXTsKKyAgICAgICAgICB2
YXIgbWF0Y2gkNiA9IHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdOworICAgICAgICAgIGlm
IChtYXRjaCQ2KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkNyA9IG1hdGNoJDZbMF07CisgICAg
ICAgICAgICB2YXIgd2lkdGggPSBtYXRjaCQ3WzFdOworICAgICAgICAgICAgc3dpdGNoIChtYXRj
aCQ3WzBdKSB7CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICBjYXNlIDIg
OiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiBicmVha19uZXdfbGluZShzdGF0ZSwgb2ZmLCB3
aWR0aCk7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgaWYgKHNp
emUgPiBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0pIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGJyZWFrX25ld19saW5lKHN0YXRlLCBvZmYsIHdpZHRoKTsKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVbLyogcHBfaXNf
bmV3X2xpbmUgKi8xMF0gfHwgIShzaXplID4gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIHx8
IHN0YXRlWy8qIHBwX2N1cnJlbnRfaW5kZW50ICovOV0gPiAoKHN0YXRlWy8qIHBwX21hcmdpbiAq
LzVdIC0gd2lkdGggfCAwKSArIG9mZiB8IDApKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWtfbmV3
X2xpbmUoc3RhdGUsIG9mZiwgd2lkdGgpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAg
ICByZXR1cm4gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgCisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0
dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDIgOiAKKyAgICAgICAgICB2YXIgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGVbLyogcHBfbWFyZ2lu
ICovNV0gLSBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gfCAwOworICAgICAgICAgIHZhciBt
YXRjaCQ4ID0gc3RhdGVbLyogcHBfdGJveF9zdGFjayAqLzJdOworICAgICAgICAgIGlmIChtYXRj
aCQ4KSB7CisgICAgICAgICAgICB2YXIgdGFicyQxID0gbWF0Y2gkOFswXVswXTsKKyAgICAgICAg
ICAgIHZhciBmaW5kID0gZnVuY3Rpb24gKG4sIF9wYXJhbSkgeworICAgICAgICAgICAgICB3aGls
ZSh0cnVlKSB7CisgICAgICAgICAgICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgICAgICAg
ICAgICAgIGlmIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgdmFyIHggPSBwYXJhbVswXTsK
KyAgICAgICAgICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbCh4LCBuKSkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBfcGFyYW0gPSBwYXJh
bVsxXTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5ub3RfZm91bmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gdGFicyQxWzBdOworICAgICAgICAg
ICAgdmFyIHRhYjsKKyAgICAgICAgICAgIGlmIChtYXRjaCQ5KSB7CisgICAgICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICAgICAgdGFiID0gZmluZChpbnNlcnRpb25fcG9pbnQsIHRhYnMkMVsw
XSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgY2F0Y2ggKGV4bil7CisgICAgICAg
ICAgICAgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7
CisgICAgICAgICAgICAgICAgICB0YWIgPSBtYXRjaCQ5WzBdOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHRocm93IGV4bjsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICB0YWIgPSBpbnNlcnRpb25fcG9pbnQ7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IHwg
MDsKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPj0gMCkgeworICAgICAgICAgICAgICByZXR1cm4g
YnJlYWtfc2FtZV9saW5lKHN0YXRlLCBvZmZzZXQgKyBwYXJhbVswXSB8IDApOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBicmVha19uZXdf
bGluZShzdGF0ZSwgdGFiICsgcGFyYW1bMV0gfCAwLCBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgdHkgPSBwYXJhbVsxXTsKKyAgICAgICAgICB2YXIg
aW5zZXJ0aW9uX3BvaW50JDEgPSBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSAtIHN0YXRlWy8qIHBw
X3NwYWNlX2xlZnQgKi84XSB8IDA7CisgICAgICAgICAgaWYgKGluc2VydGlvbl9wb2ludCQxID4g
c3RhdGVbLyogcHBfbWF4X2luZGVudCAqLzddKSB7CisgICAgICAgICAgICBwcF9mb3JjZV9icmVh
a19saW5lKHN0YXRlKTsKKyAgICAgICAgICB9CisgICAgICAgICAgdmFyIG9mZnNldCQxID0gc3Rh
dGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIC0gcGFyYW1bMF0gfCAwOworICAgICAgICAgIHZhciBi
bF90eXBlID0gdHkgIT09IDEgPyAoCisgICAgICAgICAgICAgIHNpemUgPiBzdGF0ZVsvKiBwcF9z
cGFjZV9sZWZ0ICovOF0gPyB0eSA6IC8qIFBwX2ZpdHMgKi81CisgICAgICAgICAgICApIDogLyog
UHBfdmJveCAqLzE7CisgICAgICAgICAgc3RhdGVbLyogcHBfZm9ybWF0X3N0YWNrICovMV0gPSAv
KiA6OiAqL1sKKyAgICAgICAgICAgIC8qIEZvcm1hdF9lbGVtICovWworICAgICAgICAgICAgICBi
bF90eXBlLAorICAgICAgICAgICAgICBvZmZzZXQkMQorICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgIHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdCisgICAgICAgICAgXTsKKyAgICAgICAg
ICByZXR1cm4gLyogKCkgKi8wOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgc3RhdGVbLyog
cHBfdGJveF9zdGFjayAqLzJdID0gLyogOjogKi9bCisgICAgICAgICAgICBwYXJhbVswXSwKKyAg
ICAgICAgICAgIHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXQorICAgICAgICAgIF07CisgICAg
ICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHZhciB0
YWdfbmFtZSA9IHBhcmFtWzBdOworICAgICAgICAgIHZhciBtYXJrZXIkMSA9IEN1cnJ5Ll8xKHN0
YXRlWy8qIHBwX21hcmtfb3Blbl90YWcgKi8yMl0sIHRhZ19uYW1lKTsKKyAgICAgICAgICBwcF9v
dXRwdXRfc3RyaW5nKHN0YXRlLCBtYXJrZXIkMSk7CisgICAgICAgICAgc3RhdGVbLyogcHBfbWFy
a19zdGFjayAqLzRdID0gLyogOjogKi9bCisgICAgICAgICAgICB0YWdfbmFtZSwKKyAgICAgICAg
ICAgIHN0YXRlWy8qIHBwX21hcmtfc3RhY2sgKi80XQorICAgICAgICAgIF07CisgICAgICAgICAg
cmV0dXJuIC8qICgpICovMDsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBhZHZh
bmNlX2xlZnQoc3RhdGUpIHsKKyAgdHJ5IHsKKyAgICB2YXIgc3RhdGUkMSA9IHN0YXRlOworICAg
IHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBtYXRjaCA9IHBlZWtfcXVldWUoc3RhdGUkMVsvKiBw
cF9xdWV1ZSAqLzI2XSk7CisgICAgICB2YXIgc2l6ZSA9IG1hdGNoWy8qIGVsZW1fc2l6ZSAqLzBd
OworICAgICAgaWYgKHNpemUgPCAwICYmIChzdGF0ZSQxWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJd
IC0gc3RhdGUkMVsvKiBwcF9sZWZ0X3RvdGFsICovMTFdIHwgMCkgPCBzdGF0ZSQxWy8qIHBwX3Nw
YWNlX2xlZnQgKi84XSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICB0YWtlX3F1ZXVlKHN0YXRlJDFbLyogcHBfcXVldWUgKi8yNl0pOworICAgICAg
ICBmb3JtYXRfcHBfdG9rZW4oc3RhdGUkMSwgc2l6ZSA8IDAgPyAxMDAwMDAwMDEwIDogc2l6ZSwg
bWF0Y2hbLyogdG9rZW4gKi8xXSk7CisgICAgICAgIHN0YXRlJDFbLyogcHBfbGVmdF90b3RhbCAq
LzExXSA9IG1hdGNoWy8qIGxlbmd0aCAqLzJdICsgc3RhdGUkMVsvKiBwcF9sZWZ0X3RvdGFsICov
MTFdIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9Owor
ICB9CisgIGNhdGNoIChleG4peworICAgIGlmIChleG4gPT09IEVtcHR5X3F1ZXVlKSB7CisgICAg
ICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IGV4bjsK
KyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gZW5xdWV1ZV9hZHZhbmNlKHN0YXRlLCB0b2spIHsK
KyAgcHBfZW5xdWV1ZShzdGF0ZSwgdG9rKTsKKyAgcmV0dXJuIGFkdmFuY2VfbGVmdChzdGF0ZSk7
Cit9CisKK2Z1bmN0aW9uIGVucXVldWVfc3RyaW5nX2FzKHN0YXRlLCBzaXplLCBzKSB7CisgIHJl
dHVybiBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAg
LyogZWxlbV9zaXplICovc2l6ZSwKKyAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF90ZXh0ICov
QmxvY2suX18oMCwgW3NdKSwKKyAgICAgICAgICAgICAgLyogbGVuZ3RoICovc2l6ZQorICAgICAg
ICAgICAgXSk7Cit9CisKK3ZhciBxX2VsZW0gPSAvKiByZWNvcmQgKi9bCisgIC8qIGVsZW1fc2l6
ZSAqLy0xLAorICAvKiB0b2tlbiA6IFBwX3RleHQgKi9CbG9jay5fXygwLCBbIiJdKSwKKyAgLyog
bGVuZ3RoICovMAorXTsKKwordmFyIHNjYW5fc3RhY2tfYm90dG9tXzAwMCA9IC8qIFNjYW5fZWxl
bSAqL1sKKyAgLTEsCisgIHFfZWxlbQorXTsKKwordmFyIHNjYW5fc3RhY2tfYm90dG9tID0gLyog
OjogKi9bCisgIHNjYW5fc3RhY2tfYm90dG9tXzAwMCwKKyAgLyogW10gKi8wCitdOworCitmdW5j
dGlvbiBzZXRfc2l6ZShzdGF0ZSwgdHkpIHsKKyAgdmFyIG1hdGNoID0gc3RhdGVbLyogcHBfc2Nh
bl9zdGFjayAqLzBdOworICBpZiAobWF0Y2gpIHsKKyAgICB2YXIgbWF0Y2gkMSA9IG1hdGNoWzBd
OworICAgIHZhciBxdWV1ZV9lbGVtID0gbWF0Y2gkMVsxXTsKKyAgICB2YXIgc2l6ZSA9IHF1ZXVl
X2VsZW1bLyogZWxlbV9zaXplICovMF07CisgICAgdmFyIHQgPSBtYXRjaFsxXTsKKyAgICBpZiAo
bWF0Y2gkMVswXSA8IHN0YXRlWy8qIHBwX2xlZnRfdG90YWwgKi8xMV0pIHsKKyAgICAgIHN0YXRl
Wy8qIHBwX3NjYW5fc3RhY2sgKi8wXSA9IHNjYW5fc3RhY2tfYm90dG9tOworICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAg
ICB2YXIgJGpzID0gcXVldWVfZWxlbVsvKiB0b2tlbiAqLzFdOworICAgICAgaWYgKHR5cGVvZiAk
anMgPT09ICJudW1iZXIiKSB7CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgc3dpdGNoICgkanMudGFnIHwgMCkgeworICAgICAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICBleGl0ID0gMTsKKyAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgIGlm
ICh0eSkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHF1ZXVlX2VsZW1bLyogZWxlbV9zaXpl
ICovMF0gPSBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSArIHNpemUgfCAwOworICAgICAg
ICAgICAgICAgIHN0YXRlWy8qIHBwX3NjYW5fc3RhY2sgKi8wXSA9IHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICBpZiAodHkpIHsKKyAgICAgICAgICBxdWV1ZV9l
bGVtWy8qIGVsZW1fc2l6ZSAqLzBdID0gc3RhdGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0gKyBz
aXplIHwgMDsKKyAgICAgICAgICBzdGF0ZVsvKiBwcF9zY2FuX3N0YWNrICovMF0gPSB0OworICAg
ICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAgIH0KKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHNjYW5f
cHVzaChzdGF0ZSwgYiwgdG9rKSB7CisgIHBwX2VucXVldWUoc3RhdGUsIHRvayk7CisgIGlmIChi
KSB7CisgICAgc2V0X3NpemUoc3RhdGUsIC8qIHRydWUgKi8xKTsKKyAgfQorICBzdGF0ZVsvKiBw
cF9zY2FuX3N0YWNrICovMF0gPSAvKiA6OiAqL1sKKyAgICAvKiBTY2FuX2VsZW0gKi9bCisgICAg
ICBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSwKKyAgICAgIHRvaworICAgIF0sCisgICAg
c3RhdGVbLyogcHBfc2Nhbl9zdGFjayAqLzBdCisgIF07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9
CisKK2Z1bmN0aW9uIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCBicl90eSkgeworICBz
dGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdID0gc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEz
XSArIDEgfCAwOworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8q
IHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgIHZhciBlbGVtID0gLyogcmVjb3JkICovWworICAg
ICAgLyogZWxlbV9zaXplICovLXN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdIHwgMCwKKyAg
ICAgIC8qIHRva2VuIDogUHBfYmVnaW4gKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgaW5kZW50
LAorICAgICAgICAgIGJyX3R5CisgICAgICAgIF0pLAorICAgICAgLyogbGVuZ3RoICovMAorICAg
IF07CisgICAgcmV0dXJuIHNjYW5fcHVzaChzdGF0ZSwgLyogZmFsc2UgKi8wLCBlbGVtKTsKKyAg
fQorICBlbHNlIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdID09PSBzdGF0ZVsvKiBw
cF9tYXhfYm94ZXMgKi8xNF0pIHsKKyAgICB2YXIgc3RhdGUkMSA9IHN0YXRlOworICAgIHZhciBz
ID0gc3RhdGVbLyogcHBfZWxsaXBzaXMgKi8xNV07CisgICAgdmFyIGxlbiA9IHMubGVuZ3RoOwor
ICAgIHJldHVybiBlbnF1ZXVlX3N0cmluZ19hcyhzdGF0ZSQxLCBsZW4sIHMpOworICB9CisgIGVs
c2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2Nsb3NlX2JveChzdGF0
ZSwgXykgeworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA+IDEpIHsKKyAgICBp
ZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAq
LzE0XSkgeworICAgICAgcHBfZW5xdWV1ZShzdGF0ZSwgLyogcmVjb3JkICovWworICAgICAgICAg
ICAgLyogZWxlbV9zaXplICovMCwKKyAgICAgICAgICAgIC8qIHRva2VuIDogUHBfZW5kICovMSwK
KyAgICAgICAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgICAgICBdKTsKKyAgICAgIHNldF9zaXpl
KHN0YXRlLCAvKiB0cnVlICovMSk7CisgICAgICBzZXRfc2l6ZShzdGF0ZSwgLyogZmFsc2UgKi8w
KTsKKyAgICB9CisgICAgc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9IHN0YXRlWy8qIHBw
X2N1cnJfZGVwdGggKi8xM10gLSAxIHwgMDsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5fdGFnKHN0
YXRlLCB0YWdfbmFtZSkgeworICBpZiAoc3RhdGVbLyogcHBfcHJpbnRfdGFncyAqLzIwXSkgewor
ICAgIHN0YXRlWy8qIHBwX3RhZ19zdGFjayAqLzNdID0gLyogOjogKi9bCisgICAgICB0YWdfbmFt
ZSwKKyAgICAgIHN0YXRlWy8qIHBwX3RhZ19zdGFjayAqLzNdCisgICAgXTsKKyAgICBDdXJyeS5f
MShzdGF0ZVsvKiBwcF9wcmludF9vcGVuX3RhZyAqLzI0XSwgdGFnX25hbWUpOworICB9CisgIGlm
IChzdGF0ZVsvKiBwcF9tYXJrX3RhZ3MgKi8yMV0pIHsKKyAgICByZXR1cm4gcHBfZW5xdWV1ZShz
dGF0ZSwgLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisg
ICAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF9vcGVuX3RhZyAqL0Jsb2NrLl9fKDUsIFt0YWdf
bmFtZV0pLAorICAgICAgICAgICAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgICAgICAgICAgXSk7
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gcHBfY2xv
c2VfdGFnKHN0YXRlLCBfKSB7CisgIGlmIChzdGF0ZVsvKiBwcF9tYXJrX3RhZ3MgKi8yMV0pIHsK
KyAgICBwcF9lbnF1ZXVlKHN0YXRlLCAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogZWxlbV9z
aXplICovMCwKKyAgICAgICAgICAvKiB0b2tlbiA6IFBwX2Nsb3NlX3RhZyAqLzUsCisgICAgICAg
ICAgLyogbGVuZ3RoICovMAorICAgICAgICBdKTsKKyAgfQorICBpZiAoc3RhdGVbLyogcHBfcHJp
bnRfdGFncyAqLzIwXSkgeworICAgIHZhciBtYXRjaCA9IHN0YXRlWy8qIHBwX3RhZ19zdGFjayAq
LzNdOworICAgIGlmIChtYXRjaCkgeworICAgICAgQ3VycnkuXzEoc3RhdGVbLyogcHBfcHJpbnRf
Y2xvc2VfdGFnICovMjVdLCBtYXRjaFswXSk7CisgICAgICBzdGF0ZVsvKiBwcF90YWdfc3RhY2sg
Ki8zXSA9IG1hdGNoWzFdOworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBy
ZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9zZXRfcHJpbnRfdGFncyhzdGF0ZSwgYikg
eworICBzdGF0ZVsvKiBwcF9wcmludF90YWdzICovMjBdID0gYjsKKyAgcmV0dXJuIC8qICgpICov
MDsKK30KKworZnVuY3Rpb24gcHBfc2V0X21hcmtfdGFncyhzdGF0ZSwgYikgeworICBzdGF0ZVsv
KiBwcF9tYXJrX3RhZ3MgKi8yMV0gPSBiOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5j
dGlvbiBwcF9nZXRfcHJpbnRfdGFncyhzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBf
cHJpbnRfdGFncyAqLzIwXTsKK30KKworZnVuY3Rpb24gcHBfZ2V0X21hcmtfdGFncyhzdGF0ZSwg
XykgeworICByZXR1cm4gc3RhdGVbLyogcHBfbWFya190YWdzICovMjFdOworfQorCitmdW5jdGlv
biBwcF9zZXRfdGFncyhzdGF0ZSwgYikgeworICBzdGF0ZVsvKiBwcF9wcmludF90YWdzICovMjBd
ID0gYjsKKyAgc3RhdGVbLyogcHBfbWFya190YWdzICovMjFdID0gYjsKKyAgcmV0dXJuIC8qICgp
ICovMDsKK30KKworZnVuY3Rpb24gcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zKHN0YXRl
LCBfKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogbWFya19vcGVuX3Rh
ZyAqL3N0YXRlWy8qIHBwX21hcmtfb3Blbl90YWcgKi8yMl0sCisgICAgICAgICAgLyogbWFya19j
bG9zZV90YWcgKi9zdGF0ZVsvKiBwcF9tYXJrX2Nsb3NlX3RhZyAqLzIzXSwKKyAgICAgICAgICAv
KiBwcmludF9vcGVuX3RhZyAqL3N0YXRlWy8qIHBwX3ByaW50X29wZW5fdGFnICovMjRdLAorICAg
ICAgICAgIC8qIHByaW50X2Nsb3NlX3RhZyAqL3N0YXRlWy8qIHBwX3ByaW50X2Nsb3NlX3RhZyAq
LzI1XQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5j
dGlvbnMoc3RhdGUsIHBhcmFtKSB7CisgIHN0YXRlWy8qIHBwX21hcmtfb3Blbl90YWcgKi8yMl0g
PSBwYXJhbVsvKiBtYXJrX29wZW5fdGFnICovMF07CisgIHN0YXRlWy8qIHBwX21hcmtfY2xvc2Vf
dGFnICovMjNdID0gcGFyYW1bLyogbWFya19jbG9zZV90YWcgKi8xXTsKKyAgc3RhdGVbLyogcHBf
cHJpbnRfb3Blbl90YWcgKi8yNF0gPSBwYXJhbVsvKiBwcmludF9vcGVuX3RhZyAqLzJdOworICBz
dGF0ZVsvKiBwcF9wcmludF9jbG9zZV90YWcgKi8yNV0gPSBwYXJhbVsvKiBwcmludF9jbG9zZV90
YWcgKi8zXTsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gcHBfcmluaXQoc3Rh
dGUpIHsKKyAgcHBfY2xlYXJfcXVldWUoc3RhdGUpOworICBzdGF0ZVsvKiBwcF9zY2FuX3N0YWNr
ICovMF0gPSBzY2FuX3N0YWNrX2JvdHRvbTsKKyAgc3RhdGVbLyogcHBfZm9ybWF0X3N0YWNrICov
MV0gPSAvKiBbXSAqLzA7CisgIHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXSA9IC8qIFtdICov
MDsKKyAgc3RhdGVbLyogcHBfdGFnX3N0YWNrICovM10gPSAvKiBbXSAqLzA7CisgIHN0YXRlWy8q
IHBwX21hcmtfc3RhY2sgKi80XSA9IC8qIFtdICovMDsKKyAgc3RhdGVbLyogcHBfY3VycmVudF9p
bmRlbnQgKi85XSA9IDA7CisgIHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPSAwOworICBz
dGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gPSBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XTsKKyAg
cmV0dXJuIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgMCwgLyogUHBfaG92Ym94ICovMyk7Cit9CisK
K2Z1bmN0aW9uIHBwX2ZsdXNoX3F1ZXVlKHN0YXRlLCBiKSB7CisgIHdoaWxlKHN0YXRlWy8qIHBw
X2N1cnJfZGVwdGggKi8xM10gPiAxKSB7CisgICAgcHBfY2xvc2VfYm94KHN0YXRlLCAvKiAoKSAq
LzApOworICB9OworICBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSA9IDEwMDAwMDAwMTA7
CisgIGFkdmFuY2VfbGVmdChzdGF0ZSk7CisgIGlmIChiKSB7CisgICAgQ3VycnkuXzEoc3RhdGVb
LyogcHBfb3V0X25ld2xpbmUgKi8xOF0sIC8qICgpICovMCk7CisgIH0KKyAgcmV0dXJuIHBwX3Jp
bml0KHN0YXRlKTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfYXNfc2l6ZShzdGF0ZSwgc2l6ZSwg
cykgeworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21h
eF9ib3hlcyAqLzE0XSkgeworICAgIHJldHVybiBlbnF1ZXVlX3N0cmluZ19hcyhzdGF0ZSwgc2l6
ZSwgcyk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKwordmFyIHBwX3By
aW50X2FzID0gcHBfcHJpbnRfYXNfc2l6ZTsKKworZnVuY3Rpb24gcHBfcHJpbnRfc3RyaW5nKHN0
YXRlLCBzKSB7CisgIHJldHVybiBwcF9wcmludF9hcyhzdGF0ZSwgcy5sZW5ndGgsIHMpOworfQor
CitmdW5jdGlvbiBwcF9wcmludF9pbnQoc3RhdGUsIGkpIHsKKyAgcmV0dXJuIHBwX3ByaW50X3N0
cmluZyhzdGF0ZSwgIiIgKyBpKTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfZmxvYXQoc3RhdGUs
IGYpIHsKKyAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGF0ZSwgUGVydmFzaXZlcy5zdHJpbmdf
b2ZfZmxvYXQoZikpOworfQorCitmdW5jdGlvbiBwcF9wcmludF9ib29sKHN0YXRlLCBiKSB7Cisg
IHJldHVybiBwcF9wcmludF9zdHJpbmcoc3RhdGUsIGIgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30K
KworZnVuY3Rpb24gcHBfcHJpbnRfY2hhcihzdGF0ZSwgYykgeworICByZXR1cm4gcHBfcHJpbnRf
YXMoc3RhdGUsIDEsIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5tYWtlKDEsIGMp
KSk7Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5faGJveChzdGF0ZSwgXykgeworICByZXR1cm4gcHBf
b3Blbl9ib3hfZ2VuKHN0YXRlLCAwLCAvKiBQcF9oYm94ICovMCk7Cit9CisKK2Z1bmN0aW9uIHBw
X29wZW5fdmJveChzdGF0ZSwgaW5kZW50KSB7CisgIHJldHVybiBwcF9vcGVuX2JveF9nZW4oc3Rh
dGUsIGluZGVudCwgLyogUHBfdmJveCAqLzEpOworfQorCitmdW5jdGlvbiBwcF9vcGVuX2h2Ym94
KHN0YXRlLCBpbmRlbnQpIHsKKyAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50
LCAvKiBQcF9odmJveCAqLzIpOworfQorCitmdW5jdGlvbiBwcF9vcGVuX2hvdmJveChzdGF0ZSwg
aW5kZW50KSB7CisgIHJldHVybiBwcF9vcGVuX2JveF9nZW4oc3RhdGUsIGluZGVudCwgLyogUHBf
aG92Ym94ICovMyk7Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5fYm94KHN0YXRlLCBpbmRlbnQpIHsK
KyAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCAvKiBQcF9ib3ggKi80KTsK
K30KKworZnVuY3Rpb24gcHBfcHJpbnRfbmV3bGluZShzdGF0ZSwgXykgeworICBwcF9mbHVzaF9x
dWV1ZShzdGF0ZSwgLyogdHJ1ZSAqLzEpOworICByZXR1cm4gQ3VycnkuXzEoc3RhdGVbLyogcHBf
b3V0X2ZsdXNoICovMTddLCAvKiAoKSAqLzApOworfQorCitmdW5jdGlvbiBwcF9wcmludF9mbHVz
aChzdGF0ZSwgXykgeworICBwcF9mbHVzaF9xdWV1ZShzdGF0ZSwgLyogZmFsc2UgKi8wKTsKKyAg
cmV0dXJuIEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XSwgLyogKCkgKi8wKTsK
K30KKworZnVuY3Rpb24gcHBfZm9yY2VfbmV3bGluZShzdGF0ZSwgXykgeworICBpZiAoc3RhdGVb
LyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgewor
ICAgIHJldHVybiBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIC8qIHJlY29yZCAqL1sKKyAgICAgICAg
ICAgICAgICAvKiBlbGVtX3NpemUgKi8wLAorICAgICAgICAgICAgICAgIC8qIHRva2VuIDogUHBf
bmV3bGluZSAqLzMsCisgICAgICAgICAgICAgICAgLyogbGVuZ3RoICovMAorICAgICAgICAgICAg
ICBdKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBw
cF9wcmludF9pZl9uZXdsaW5lKHN0YXRlLCBfKSB7CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2Rl
cHRoICovMTNdIDwgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7CisgICAgcmV0dXJuIGVu
cXVldWVfYWR2YW5jZShzdGF0ZSwgLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgIC8qIGVs
ZW1fc2l6ZSAqLzAsCisgICAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF9pZl9uZXdsaW5lICov
NCwKKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggKi8wCisgICAgICAgICAgICAgIF0pOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X2Jy
ZWFrKHN0YXRlLCB3aWR0aCwgb2Zmc2V0KSB7CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRo
ICovMTNdIDwgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7CisgICAgdmFyIGVsZW0gPSAv
KiByZWNvcmQgKi9bCisgICAgICAvKiBlbGVtX3NpemUgKi8tc3RhdGVbLyogcHBfcmlnaHRfdG90
YWwgKi8xMl0gfCAwLAorICAgICAgLyogdG9rZW4gOiBQcF9icmVhayAqL0Jsb2NrLl9fKDEsIFsK
KyAgICAgICAgICB3aWR0aCwKKyAgICAgICAgICBvZmZzZXQKKyAgICAgICAgXSksCisgICAgICAv
KiBsZW5ndGggKi93aWR0aAorICAgIF07CisgICAgcmV0dXJuIHNjYW5fcHVzaChzdGF0ZSwgLyog
dHJ1ZSAqLzEsIGVsZW0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisK
K2Z1bmN0aW9uIHBwX3ByaW50X3NwYWNlKHN0YXRlLCBfKSB7CisgIHJldHVybiBwcF9wcmludF9i
cmVhayhzdGF0ZSwgMSwgMCk7Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X2N1dChzdGF0ZSwgXykg
eworICByZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3RhdGUsIDAsIDApOworfQorCitmdW5jdGlvbiBw
cF9vcGVuX3Rib3goc3RhdGUsIF8pIHsKKyAgc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9
IHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gKyAxIHwgMDsKKyAgaWYgKHN0YXRlWy8qIHBw
X2N1cnJfZGVwdGggKi8xM10gPCBzdGF0ZVsvKiBwcF9tYXhfYm94ZXMgKi8xNF0pIHsKKyAgICB2
YXIgZWxlbSA9IC8qIHJlY29yZCAqL1sKKyAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisgICAgICAv
KiB0b2tlbiA6IFBwX3RiZWdpbiAqL0Jsb2NrLl9fKDQsIFsvKiBQcF90Ym94ICovW1svKiBbXSAq
LzBdXV0pLAorICAgICAgLyogbGVuZ3RoICovMAorICAgIF07CisgICAgcmV0dXJuIGVucXVldWVf
YWR2YW5jZShzdGF0ZSwgZWxlbSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0K
K30KKworZnVuY3Rpb24gcHBfY2xvc2VfdGJveChzdGF0ZSwgXykgeworICBpZiAoc3RhdGVbLyog
cHBfY3Vycl9kZXB0aCAqLzEzXSA+IDEpIHsKKyAgICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0
aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgICAgdmFyIGVsZW0g
PSAvKiByZWNvcmQgKi9bCisgICAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisgICAgICAgIC8qIHRv
a2VuIDogUHBfdGVuZCAqLzIsCisgICAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgIF07CisgICAg
ICBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIGVsZW0pOworICAgICAgc3RhdGVbLyogcHBfY3Vycl9k
ZXB0aCAqLzEzXSA9IHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gLSAxIHwgMDsKKyAgICAg
IHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBw
X3ByaW50X3RicmVhayhzdGF0ZSwgd2lkdGgsIG9mZnNldCkgeworICBpZiAoc3RhdGVbLyogcHBf
Y3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgIHZh
ciBlbGVtID0gLyogcmVjb3JkICovWworICAgICAgLyogZWxlbV9zaXplICovLXN0YXRlWy8qIHBw
X3JpZ2h0X3RvdGFsICovMTJdIHwgMCwKKyAgICAgIC8qIHRva2VuIDogUHBfdGJyZWFrICovQmxv
Y2suX18oMiwgWworICAgICAgICAgIHdpZHRoLAorICAgICAgICAgIG9mZnNldAorICAgICAgICBd
KSwKKyAgICAgIC8qIGxlbmd0aCAqL3dpZHRoCisgICAgXTsKKyAgICByZXR1cm4gc2Nhbl9wdXNo
KHN0YXRlLCAvKiB0cnVlICovMSwgZWxlbSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7
CisgIH0KK30KKworZnVuY3Rpb24gcHBfcHJpbnRfdGFiKHN0YXRlLCBfKSB7CisgIHJldHVybiBw
cF9wcmludF90YnJlYWsoc3RhdGUsIDAsIDApOworfQorCitmdW5jdGlvbiBwcF9zZXRfdGFiKHN0
YXRlLCBfKSB7CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdIDwgc3RhdGVbLyog
cHBfbWF4X2JveGVzICovMTRdKSB7CisgICAgdmFyIGVsZW0gPSAvKiByZWNvcmQgKi9bCisgICAg
ICAvKiBlbGVtX3NpemUgKi8wLAorICAgICAgLyogdG9rZW4gOiBQcF9zdGFiICovMCwKKyAgICAg
IC8qIGxlbmd0aCAqLzAKKyAgICBdOworICAgIHJldHVybiBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUs
IGVsZW0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9u
IHBwX3ByaW50X2xpc3QoXyRzdGFyb3B0JHN0YXIsIHBwX3YsIHBwZiwgX3BhcmFtKSB7CisgIHdo
aWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgdmFyICRzdGFyb3B0JHN0
YXIgPSBfJHN0YXJvcHQkc3RhcjsKKyAgICB2YXIgcHBfc2VwID0gJHN0YXJvcHQkc3RhciA/ICRz
dGFyb3B0JHN0YXJbMF0gOiBwcF9wcmludF9jdXQ7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICB2
YXIgdnMgPSBwYXJhbVsxXTsKKyAgICAgIHZhciB2ID0gcGFyYW1bMF07CisgICAgICBpZiAodnMp
IHsKKyAgICAgICAgQ3VycnkuXzIocHBfdiwgcHBmLCB2KTsKKyAgICAgICAgQ3VycnkuXzIocHBf
c2VwLCBwcGYsIC8qICgpICovMCk7CisgICAgICAgIF9wYXJhbSA9IHZzOworICAgICAgICBfJHN0
YXJvcHQkc3RhciA9IC8qIFNvbWUgKi9bcHBfc2VwXTsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gQ3VycnkuXzIocHBf
diwgcHBmLCB2KTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyog
KCkgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfdGV4dChwcGYsIHMp
IHsKKyAgdmFyIGxlbiA9IHMubGVuZ3RoOworICB2YXIgbGVmdCA9IFswXTsKKyAgdmFyIHJpZ2h0
ID0gWzBdOworICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7CisgICAgcHBfcHJpbnRfc3RyaW5n
KHBwZiwgJCRTdHJpbmcuc3ViKHMsIGxlZnRbMF0sIHJpZ2h0WzBdIC0gbGVmdFswXSB8IDApKTsK
KyAgICByaWdodFswXSA9IHJpZ2h0WzBdICsgMSB8IDA7CisgICAgbGVmdFswXSA9IHJpZ2h0WzBd
OworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH07CisgIHdoaWxlKHJpZ2h0WzBdICE9PSBsZW4p
IHsKKyAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQocywgcmlnaHRbMF0pOworICAgIGlm
IChtYXRjaCAhPT0gMTApIHsKKyAgICAgIGlmIChtYXRjaCAhPT0gMzIpIHsKKyAgICAgICAgcmln
aHRbMF0gPSByaWdodFswXSArIDEgfCAwOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IGZsdXNoKC8qICgpICovMCk7CisgICAgICAgIHBwX3ByaW50X2JyZWFrKHBwZiwgMSwgMCk7Cisg
ICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgZmx1c2goLyogKCkgKi8wKTsKKyAgICAg
IHBwX2ZvcmNlX25ld2xpbmUocHBmLCAvKiAoKSAqLzApOworICAgIH0KKyAgfTsKKyAgaWYgKGxl
ZnRbMF0gIT09IGxlbikgeworICAgIHJldHVybiBmbHVzaCgvKiAoKSAqLzApOworICB9CisgIGVs
c2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3NldF9tYXhfYm94ZXMo
c3RhdGUsIG4pIHsKKyAgaWYgKG4gPiAxKSB7CisgICAgc3RhdGVbLyogcHBfbWF4X2JveGVzICov
MTRdID0gbjsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9tYXhfYm94ZXMoc3RhdGUsIF8pIHsKKyAg
cmV0dXJuIHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XTsKK30KKworZnVuY3Rpb24gcHBfb3Zl
cl9tYXhfYm94ZXMoc3RhdGUsIF8pIHsKKyAgcmV0dXJuICsoc3RhdGVbLyogcHBfY3Vycl9kZXB0
aCAqLzEzXSA9PT0gc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKTsKK30KKworZnVuY3Rpb24g
cHBfc2V0X2VsbGlwc2lzX3RleHQoc3RhdGUsIHMpIHsKKyAgc3RhdGVbLyogcHBfZWxsaXBzaXMg
Ki8xNV0gPSBzOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9nZXRfZWxs
aXBzaXNfdGV4dChzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBfZWxsaXBzaXMgKi8x
NV07Cit9CisKK2Z1bmN0aW9uIHBwX2xpbWl0KG4pIHsKKyAgaWYgKG4gPCAxMDAwMDAwMDEwKSB7
CisgICAgcmV0dXJuIG47CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDEwMDAwMDAwMDk7Cisg
IH0KK30KKworZnVuY3Rpb24gcHBfc2V0X21heF9pbmRlbnQoc3RhdGUsIG4pIHsKKyAgdmFyIHN0
YXRlJDEgPSBzdGF0ZTsKKyAgdmFyIG4kMSA9IHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdIC0gbiB8
IDA7CisgIGlmIChuJDEgPj0gMSkgeworICAgIHZhciBuJDIgPSBwcF9saW1pdChuJDEpOworICAg
IHN0YXRlJDFbLyogcHBfbWluX3NwYWNlX2xlZnQgKi82XSA9IG4kMjsKKyAgICBzdGF0ZSQxWy8q
IHBwX21heF9pbmRlbnQgKi83XSA9IHN0YXRlJDFbLyogcHBfbWFyZ2luICovNV0gLSBzdGF0ZSQx
Wy8qIHBwX21pbl9zcGFjZV9sZWZ0ICovNl0gfCAwOworICAgIHJldHVybiBwcF9yaW5pdChzdGF0
ZSQxKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBw
cF9nZXRfbWF4X2luZGVudChzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBfbWF4X2lu
ZGVudCAqLzddOworfQorCitmdW5jdGlvbiBwcF9zZXRfbWFyZ2luKHN0YXRlLCBuKSB7CisgIGlm
IChuID49IDEpIHsKKyAgICB2YXIgbiQxID0gcHBfbGltaXQobik7CisgICAgc3RhdGVbLyogcHBf
bWFyZ2luICovNV0gPSBuJDE7CisgICAgdmFyIG5ld19tYXhfaW5kZW50ID0gc3RhdGVbLyogcHBf
bWF4X2luZGVudCAqLzddIDw9IHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdID8gc3RhdGVbLyogcHBf
bWF4X2luZGVudCAqLzddIDogUGVydmFzaXZlcy5tYXgoUGVydmFzaXZlcy5tYXgoc3RhdGVbLyog
cHBfbWFyZ2luICovNV0gLSBzdGF0ZVsvKiBwcF9taW5fc3BhY2VfbGVmdCAqLzZdIHwgMCwgc3Rh
dGVbLyogcHBfbWFyZ2luICovNV0gLyAyIHwgMCksIDEpOworICAgIHJldHVybiBwcF9zZXRfbWF4
X2luZGVudChzdGF0ZSwgbmV3X21heF9pbmRlbnQpOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9tYXJnaW4oc3RhdGUsIF8pIHsKKyAgcmV0
dXJuIHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdOworfQorCitmdW5jdGlvbiBwcF9zZXRfZm9ybWF0
dGVyX291dF9mdW5jdGlvbnMoc3RhdGUsIHBhcmFtKSB7CisgIHN0YXRlWy8qIHBwX291dF9zdHJp
bmcgKi8xNl0gPSBwYXJhbVsvKiBvdXRfc3RyaW5nICovMF07CisgIHN0YXRlWy8qIHBwX291dF9m
bHVzaCAqLzE3XSA9IHBhcmFtWy8qIG91dF9mbHVzaCAqLzFdOworICBzdGF0ZVsvKiBwcF9vdXRf
bmV3bGluZSAqLzE4XSA9IHBhcmFtWy8qIG91dF9uZXdsaW5lICovMl07CisgIHN0YXRlWy8qIHBw
X291dF9zcGFjZXMgKi8xOV0gPSBwYXJhbVsvKiBvdXRfc3BhY2VzICovM107CisgIHJldHVybiAv
KiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyhz
dGF0ZSwgXykgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIG91dF9zdHJp
bmcgKi9zdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLAorICAgICAgICAgIC8qIG91dF9mbHVz
aCAqL3N0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XSwKKyAgICAgICAgICAvKiBvdXRfbmV3bGlu
ZSAqL3N0YXRlWy8qIHBwX291dF9uZXdsaW5lICovMThdLAorICAgICAgICAgIC8qIG91dF9zcGFj
ZXMgKi9zdGF0ZVsvKiBwcF9vdXRfc3BhY2VzICovMTldCisgICAgICAgIF07Cit9CisKK2Z1bmN0
aW9uIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwgZiwgZykgeworICBz
dGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdID0gZjsKKyAgc3RhdGVbLyogcHBfb3V0X2ZsdXNo
ICovMTddID0gZzsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gcHBfZ2V0X2Zv
cm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0YXRlLCBfKSB7CisgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICBzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLAorICAgICAgICAgIHN0
YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBwcF9z
ZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0YXRlLCBmLCBnLCBoLCBpKSB7Cisg
IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwgZiwgZyk7CisgIHN0YXRl
Wy8qIHBwX291dF9uZXdsaW5lICovMThdID0gaDsKKyAgc3RhdGVbLyogcHBfb3V0X3NwYWNlcyAq
LzE5XSA9IGk7CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9hbGxf
Zm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMoc3RhdGUsIF8pIHsKKyAgcmV0dXJuIC8qIHR1cGxl
ICovWworICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0sCisgICAgICAgICAg
c3RhdGVbLyogcHBfb3V0X2ZsdXNoICovMTddLAorICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9u
ZXdsaW5lICovMThdLAorICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9zcGFjZXMgKi8xOV0KKyAg
ICAgICAgXTsKK30KKworZnVuY3Rpb24gZGlzcGxheV9uZXdsaW5lKHN0YXRlLCBfKSB7CisgIHJl
dHVybiBDdXJyeS5fMyhzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLCAiXG4iLCAwLCAxKTsK
K30KKwordmFyIGJsYW5rX2xpbmUgPSBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMu
bWFrZSg4MCwgLyogIiAiICovMzIpKTsKKworZnVuY3Rpb24gZGlzcGxheV9ibGFua3Moc3RhdGUs
IF9uKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbiA9IF9uOworICAgIGlmIChuID4gMCkg
eworICAgICAgaWYgKG4gPD0gODApIHsKKyAgICAgICAgcmV0dXJuIEN1cnJ5Ll8zKHN0YXRlWy8q
IHBwX291dF9zdHJpbmcgKi8xNl0sIGJsYW5rX2xpbmUsIDAsIG4pOworICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIEN1cnJ5Ll8zKHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0sIGJs
YW5rX2xpbmUsIDAsIDgwKTsKKyAgICAgICAgX24gPSBuIC0gODAgfCAwOworICAgICAgICBjb250
aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biAwOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hh
bm5lbChzdGF0ZSwgb3MpIHsKKyAgc3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSA9IGZ1bmN0
aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgeworICAgIHJldHVybiBQZXJ2YXNpdmVzLm91
dHB1dF9zdWJzdHJpbmcob3MsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsKKyAgfTsKKyAgc3Rh
dGVbLyogcHBfb3V0X2ZsdXNoICovMTddID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBDYW1s
X2lvLmNhbWxfbWxfZmx1c2gob3MpOworICB9OworICBzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAq
LzE4XSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHJldHVybiBkaXNwbGF5X25ld2xpbmUoc3Rh
dGUsIHBhcmFtKTsKKyAgfTsKKyAgc3RhdGVbLyogcHBfb3V0X3NwYWNlcyAqLzE5XSA9IGZ1bmN0
aW9uIChwYXJhbSkgeworICAgIHJldHVybiBkaXNwbGF5X2JsYW5rcyhzdGF0ZSwgcGFyYW0pOwor
ICB9OworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBkZWZhdWx0X3BwX21hcmtf
b3Blbl90YWcocykgeworICByZXR1cm4gIjwiICsgKHMgKyAiPiIpOworfQorCitmdW5jdGlvbiBk
ZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnKHMpIHsKKyAgcmV0dXJuICI8LyIgKyAocyArICI+Iik7
Cit9CisKK2Z1bmN0aW9uIGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcoKSB7CisgIHJldHVybiAv
KiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnKCkgewor
ICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9tYWtlX2Zvcm1hdHRlcihmLCBn
LCBoLCBpKSB7CisgIHZhciBwcF9xID0gLyogcmVjb3JkICovWworICAgIC8qIGluc2VydCA6IE5p
bCAqLzAsCisgICAgLyogYm9keSA6IE5pbCAqLzAKKyAgXTsKKyAgdmFyIHN5c190b2sgPSAvKiBy
ZWNvcmQgKi9bCisgICAgLyogZWxlbV9zaXplICovLTEsCisgICAgLyogdG9rZW4gOiBQcF9iZWdp
biAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgMCwKKyAgICAgICAgLyogUHBfaG92Ym94ICovMwor
ICAgICAgXSksCisgICAgLyogbGVuZ3RoICovMAorICBdOworICBhZGRfcXVldWUoc3lzX3Rvaywg
cHBfcSk7CisgIHZhciBzeXNfc2Nhbl9zdGFja18wMDAgPSAvKiBTY2FuX2VsZW0gKi9bCisgICAg
MSwKKyAgICBzeXNfdG9rCisgIF07CisgIHZhciBzeXNfc2Nhbl9zdGFjayA9IC8qIDo6ICovWwor
ICAgIHN5c19zY2FuX3N0YWNrXzAwMCwKKyAgICBzY2FuX3N0YWNrX2JvdHRvbQorICBdOworICBy
ZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIHBwX3NjYW5fc3RhY2sgKi9zeXNfc2Nh
bl9zdGFjaywKKyAgICAgICAgICAvKiBwcF9mb3JtYXRfc3RhY2sgOiBbXSAqLzAsCisgICAgICAg
ICAgLyogcHBfdGJveF9zdGFjayA6IFtdICovMCwKKyAgICAgICAgICAvKiBwcF90YWdfc3RhY2sg
OiBbXSAqLzAsCisgICAgICAgICAgLyogcHBfbWFya19zdGFjayA6IFtdICovMCwKKyAgICAgICAg
ICAvKiBwcF9tYXJnaW4gKi83OCwKKyAgICAgICAgICAvKiBwcF9taW5fc3BhY2VfbGVmdCAqLzEw
LAorICAgICAgICAgIC8qIHBwX21heF9pbmRlbnQgKi82OCwKKyAgICAgICAgICAvKiBwcF9zcGFj
ZV9sZWZ0ICovNzgsCisgICAgICAgICAgLyogcHBfY3VycmVudF9pbmRlbnQgKi8wLAorICAgICAg
ICAgIC8qIHBwX2lzX25ld19saW5lIDogdHJ1ZSAqLzEsCisgICAgICAgICAgLyogcHBfbGVmdF90
b3RhbCAqLzEsCisgICAgICAgICAgLyogcHBfcmlnaHRfdG90YWwgKi8xLAorICAgICAgICAgIC8q
IHBwX2N1cnJfZGVwdGggKi8xLAorICAgICAgICAgIC8qIHBwX21heF9ib3hlcyAqL1BlcnZhc2l2
ZXMubWF4X2ludCwKKyAgICAgICAgICAvKiBwcF9lbGxpcHNpcyAqLyIuIiwKKyAgICAgICAgICAv
KiBwcF9vdXRfc3RyaW5nICovZiwKKyAgICAgICAgICAvKiBwcF9vdXRfZmx1c2ggKi9nLAorICAg
ICAgICAgIC8qIHBwX291dF9uZXdsaW5lICovaCwKKyAgICAgICAgICAvKiBwcF9vdXRfc3BhY2Vz
ICovaSwKKyAgICAgICAgICAvKiBwcF9wcmludF90YWdzIDogZmFsc2UgKi8wLAorICAgICAgICAg
IC8qIHBwX21hcmtfdGFncyA6IGZhbHNlICovMCwKKyAgICAgICAgICAvKiBwcF9tYXJrX29wZW5f
dGFnICovZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnLAorICAgICAgICAgIC8qIHBwX21hcmtfY2xv
c2VfdGFnICovZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZywKKyAgICAgICAgICAvKiBwcF9wcmlu
dF9vcGVuX3RhZyAqL2RlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcsCisgICAgICAgICAgLyogcHBf
cHJpbnRfY2xvc2VfdGFnICovZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcsCisgICAgICAgICAg
LyogcHBfcXVldWUgKi9wcF9xCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIG1ha2VfZm9ybWF0
dGVyKG91dHB1dCwgZmx1c2gpIHsKKyAgdmFyIHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyKG91dHB1
dCwgZmx1c2gsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAg
IH0sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0pOwor
ICBwcGZbLyogcHBfb3V0X25ld2xpbmUgKi8xOF0gPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBy
ZXR1cm4gZGlzcGxheV9uZXdsaW5lKHBwZiwgcGFyYW0pOworICB9OworICBwcGZbLyogcHBfb3V0
X3NwYWNlcyAqLzE5XSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHJldHVybiBkaXNwbGF5X2Js
YW5rcyhwcGYsIHBhcmFtKTsKKyAgfTsKKyAgcmV0dXJuIHBwZjsKK30KKworZnVuY3Rpb24gZm9y
bWF0dGVyX29mX291dF9jaGFubmVsKG9jKSB7CisgIHJldHVybiBtYWtlX2Zvcm1hdHRlcihmdW5j
dGlvbiAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIFBl
cnZhc2l2ZXMub3V0cHV0X3N1YnN0cmluZyhvYywgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOwor
ICAgICAgICAgICAgfSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1cm4gQ2FtbF9p
by5jYW1sX21sX2ZsdXNoKG9jKTsKKyAgICAgICAgICAgIH0pOworfQorCitmdW5jdGlvbiBmb3Jt
YXR0ZXJfb2ZfYnVmZmVyKGIpIHsKKyAgcmV0dXJuIG1ha2VfZm9ybWF0dGVyKGZ1bmN0aW9uIChw
YXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgeworICAgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmFk
ZF9zdWJzdHJpbmcoYiwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOworICAgICAgICAgICAgfSwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAg
ICAgfSk7Cit9CisKK3ZhciBzdGRidWYgPSBCdWZmZXIuY3JlYXRlKDUxMik7CisKK3ZhciBzdGRf
Zm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsKFBlcnZhc2l2ZXMuc3Rkb3V0KTsK
KwordmFyIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwoUGVydmFzaXZl
cy5zdGRlcnIpOworCit2YXIgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIoc3Rk
YnVmKTsKKworZnVuY3Rpb24gZmx1c2hfc3RyX2Zvcm1hdHRlcigpIHsKKyAgcHBfZmx1c2hfcXVl
dWUoc3RyX2Zvcm1hdHRlciwgLyogZmFsc2UgKi8wKTsKKyAgdmFyIHMgPSBCdWZmZXIuY29udGVu
dHMoc3RkYnVmKTsKKyAgQnVmZmVyLnJlc2V0KHN0ZGJ1Zik7CisgIHJldHVybiBzOworfQorCitm
dW5jdGlvbiBmbHVzaF9idWZfZm9ybWF0dGVyKGJ1ZiwgcHBmKSB7CisgIHBwX2ZsdXNoX3F1ZXVl
KHBwZiwgLyogZmFsc2UgKi8wKTsKKyAgdmFyIHMgPSBCdWZmZXIuY29udGVudHMoYnVmKTsKKyAg
QnVmZmVyLnJlc2V0KGJ1Zik7CisgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBvcGVuX2hib3go
cGFyYW0pIHsKKyAgcmV0dXJuIHBwX29wZW5faGJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9
CisKK2Z1bmN0aW9uIG9wZW5fdmJveChwYXJhbSkgeworICByZXR1cm4gcHBfb3Blbl92Ym94KHN0
ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gb3Blbl9odmJveChwYXJhbSkgewor
ICByZXR1cm4gcHBfb3Blbl9odmJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0
aW9uIG9wZW5faG92Ym94KHBhcmFtKSB7CisgIHJldHVybiBwcF9vcGVuX2hvdmJveChzdGRfZm9y
bWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5fYm94KHBhcmFtKSB7CisgIHJldHVy
biBwcF9vcGVuX2JveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGNsb3Nl
X2JveChwYXJhbSkgeworICByZXR1cm4gcHBfY2xvc2VfYm94KHN0ZF9mb3JtYXR0ZXIsIHBhcmFt
KTsKK30KKworZnVuY3Rpb24gb3Blbl90YWcocGFyYW0pIHsKKyAgcmV0dXJuIHBwX29wZW5fdGFn
KHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gY2xvc2VfdGFnKHBhcmFtKSB7
CisgIHJldHVybiBwcF9jbG9zZV90YWcoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5j
dGlvbiBwcmludF9hcyhwYXJhbSwgcGFyYW0kMSkgeworICByZXR1cm4gcHBfcHJpbnRfYXMoc3Rk
X2Zvcm1hdHRlciwgcGFyYW0sIHBhcmFtJDEpOworfQorCitmdW5jdGlvbiBwcmludF9zdHJpbmco
cGFyYW0pIHsKKyAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7
Cit9CisKK2Z1bmN0aW9uIHByaW50X2ludChwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfc3Ry
aW5nKHN0ZF9mb3JtYXR0ZXIsICIiICsgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmludF9mbG9h
dChwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHN0ZF9mb3JtYXR0ZXIsIFBlcnZh
c2l2ZXMuc3RyaW5nX29mX2Zsb2F0KHBhcmFtKSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X2NoYXIo
cGFyYW0pIHsKKyAgcmV0dXJuIHBwX3ByaW50X2NoYXIoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOwor
fQorCitmdW5jdGlvbiBwcmludF9ib29sKHBhcmFtKSB7CisgIHJldHVybiBwcF9wcmludF9zdHJp
bmcoc3RkX2Zvcm1hdHRlciwgcGFyYW0gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30KKworZnVuY3Rp
b24gcHJpbnRfYnJlYWsocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIHBwX3ByaW50X2JyZWFr
KHN0ZF9mb3JtYXR0ZXIsIHBhcmFtLCBwYXJhbSQxKTsKK30KKworZnVuY3Rpb24gcHJpbnRfY3V0
KCkgeworICByZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3RkX2Zvcm1hdHRlciwgMCwgMCk7Cit9CisK
K2Z1bmN0aW9uIHByaW50X3NwYWNlKCkgeworICByZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3RkX2Zv
cm1hdHRlciwgMSwgMCk7Cit9CisKK2Z1bmN0aW9uIGZvcmNlX25ld2xpbmUocGFyYW0pIHsKKyAg
cmV0dXJuIHBwX2ZvcmNlX25ld2xpbmUoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5j
dGlvbiBwcmludF9mbHVzaChwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfZmx1c2goc3RkX2Zv
cm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmludF9uZXdsaW5lKHBhcmFtKSB7Cisg
IHJldHVybiBwcF9wcmludF9uZXdsaW5lKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVu
Y3Rpb24gcHJpbnRfaWZfbmV3bGluZShwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfaWZfbmV3
bGluZShzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5fdGJveChwYXJh
bSkgeworICByZXR1cm4gcHBfb3Blbl90Ym94KHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKwor
ZnVuY3Rpb24gY2xvc2VfdGJveChwYXJhbSkgeworICByZXR1cm4gcHBfY2xvc2VfdGJveChzdGRf
Zm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X3RicmVhayhwYXJhbSwgcGFy
YW0kMSkgeworICByZXR1cm4gcHBfcHJpbnRfdGJyZWFrKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtLCBw
YXJhbSQxKTsKK30KKworZnVuY3Rpb24gc2V0X3RhYihwYXJhbSkgeworICByZXR1cm4gcHBfc2V0
X3RhYihzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X3RhYigpIHsK
KyAgcmV0dXJuIHBwX3ByaW50X3RicmVhayhzdGRfZm9ybWF0dGVyLCAwLCAwKTsKK30KKworZnVu
Y3Rpb24gc2V0X21hcmdpbihwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X21hcmdpbihzdGRfZm9y
bWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGdldF9tYXJnaW4oKSB7CisgIHJldHVybiBz
dGRfZm9ybWF0dGVyWy8qIHBwX21hcmdpbiAqLzVdOworfQorCitmdW5jdGlvbiBzZXRfbWF4X2lu
ZGVudChwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X21heF9pbmRlbnQoc3RkX2Zvcm1hdHRlciwg
cGFyYW0pOworfQorCitmdW5jdGlvbiBnZXRfbWF4X2luZGVudCgpIHsKKyAgcmV0dXJuIHN0ZF9m
b3JtYXR0ZXJbLyogcHBfbWF4X2luZGVudCAqLzddOworfQorCitmdW5jdGlvbiBzZXRfbWF4X2Jv
eGVzKHBhcmFtKSB7CisgIHJldHVybiBwcF9zZXRfbWF4X2JveGVzKHN0ZF9mb3JtYXR0ZXIsIHBh
cmFtKTsKK30KKworZnVuY3Rpb24gZ2V0X21heF9ib3hlcygpIHsKKyAgcmV0dXJuIHN0ZF9mb3Jt
YXR0ZXJbLyogcHBfbWF4X2JveGVzICovMTRdOworfQorCitmdW5jdGlvbiBvdmVyX21heF9ib3hl
cyhwYXJhbSkgeworICByZXR1cm4gcHBfb3Zlcl9tYXhfYm94ZXMoc3RkX2Zvcm1hdHRlciwgcGFy
YW0pOworfQorCitmdW5jdGlvbiBzZXRfZWxsaXBzaXNfdGV4dChwYXJhbSkgeworICBzdGRfZm9y
bWF0dGVyWy8qIHBwX2VsbGlwc2lzICovMTVdID0gcGFyYW07CisgIHJldHVybiAvKiAoKSAqLzA7
Cit9CisKK2Z1bmN0aW9uIGdldF9lbGxpcHNpc190ZXh0KCkgeworICByZXR1cm4gc3RkX2Zvcm1h
dHRlclsvKiBwcF9lbGxpcHNpcyAqLzE1XTsKK30KKworZnVuY3Rpb24gc2V0X2Zvcm1hdHRlcl9v
dXRfY2hhbm5lbChwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5l
bChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHNldF9mb3JtYXR0ZXJfb3V0
X2Z1bmN0aW9ucyhwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rp
b25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gZ2V0X2Zvcm1hdHRlcl9v
dXRfZnVuY3Rpb25zKHBhcmFtKSB7CisgIHJldHVybiBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5j
dGlvbnMoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBzZXRfZm9ybWF0dGVy
X291dHB1dF9mdW5jdGlvbnMocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIHBwX3NldF9mb3Jt
YXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSwgcGFyYW0kMSk7Cit9
CisKK2Z1bmN0aW9uIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhwYXJhbSkgeworICBy
ZXR1cm4gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBh
cmFtKTsKK30KKworZnVuY3Rpb24gc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhw
YXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMykgeworICByZXR1cm4gcHBfc2V0X2FsbF9m
b3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSwgcGFyYW0kMSwg
cGFyYW0kMiwgcGFyYW0kMyk7Cit9CisKK2Z1bmN0aW9uIGdldF9hbGxfZm9ybWF0dGVyX291dHB1
dF9mdW5jdGlvbnMocGFyYW0pIHsKKyAgcmV0dXJuIHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1
dF9mdW5jdGlvbnMoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBzZXRfZm9y
bWF0dGVyX3RhZ19mdW5jdGlvbnMocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3NldF9mb3JtYXR0ZXJf
dGFnX2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGdldF9m
b3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyhwYXJhbSkgeworICByZXR1cm4gcHBfZ2V0X2Zvcm1hdHRl
cl90YWdfZnVuY3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gc2V0
X3ByaW50X3RhZ3MocGFyYW0pIHsKKyAgc3RkX2Zvcm1hdHRlclsvKiBwcF9wcmludF90YWdzICov
MjBdID0gcGFyYW07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGdldF9wcmlu
dF90YWdzKCkgeworICByZXR1cm4gc3RkX2Zvcm1hdHRlclsvKiBwcF9wcmludF90YWdzICovMjBd
OworfQorCitmdW5jdGlvbiBzZXRfbWFya190YWdzKHBhcmFtKSB7CisgIHN0ZF9mb3JtYXR0ZXJb
LyogcHBfbWFya190YWdzICovMjFdID0gcGFyYW07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisK
K2Z1bmN0aW9uIGdldF9tYXJrX3RhZ3MoKSB7CisgIHJldHVybiBzdGRfZm9ybWF0dGVyWy8qIHBw
X21hcmtfdGFncyAqLzIxXTsKK30KKworZnVuY3Rpb24gc2V0X3RhZ3MocGFyYW0pIHsKKyAgcmV0
dXJuIHBwX3NldF90YWdzKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gY29t
cHV0ZV90YWcob3V0cHV0LCB0YWdfYWNjKSB7CisgIHZhciBidWYgPSBCdWZmZXIuY3JlYXRlKDE2
KTsKKyAgdmFyIHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIoYnVmKTsKKyAgQ3VycnkuXzIob3V0
cHV0LCBwcGYsIHRhZ19hY2MpOworICBwcF9wcmludF9mbHVzaChwcGYsIC8qICgpICovMCk7Cisg
IHZhciBsZW4gPSBidWZbLyogcG9zaXRpb24gKi8xXTsKKyAgaWYgKGxlbiA8IDIpIHsKKyAgICBy
ZXR1cm4gQnVmZmVyLmNvbnRlbnRzKGJ1Zik7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIEJ1
ZmZlci5zdWIoYnVmLCAxLCBsZW4gLSAyIHwgMCk7CisgIH0KK30KKworZnVuY3Rpb24gb3V0cHV0
X2Zvcm1hdHRpbmdfbGl0KHBwZiwgZm10aW5nX2xpdCkgeworICBpZiAodHlwZW9mIGZtdGluZ19s
aXQgPT09ICJudW1iZXIiKSB7CisgICAgc3dpdGNoIChmbXRpbmdfbGl0KSB7CisgICAgICBjYXNl
IDAgOiAKKyAgICAgICAgICByZXR1cm4gcHBfY2xvc2VfYm94KHBwZiwgLyogKCkgKi8wKTsKKyAg
ICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiBwcF9jbG9zZV90YWcocHBmLCAvKiAoKSAq
LzApOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2ZsdXNoKHBw
ZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiBwcF9mb3Jj
ZV9uZXdsaW5lKHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJl
dHVybiBwcF9wcmludF9uZXdsaW5lKHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgNSA6IAor
ICAgICAgICAgIHJldHVybiBwcF9wcmludF9jaGFyKHBwZiwgLyogIkAiICovNjQpOworICAgICAg
Y2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIocHBmLCAvKiAiJSIgKi8z
Nyk7CisgICAgICAKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChmbXRpbmdfbGl0
LnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiBwcF9wcmludF9i
cmVhayhwcGYsIGZtdGluZ19saXRbMV0sIGZtdGluZ19saXRbMl0pOworICAgICAgY2FzZSAxIDog
CisgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAg
IHBwX3ByaW50X2NoYXIocHBmLCAvKiAiQCIgKi82NCk7CisgICAgICAgICAgcmV0dXJuIHBwX3By
aW50X2NoYXIocHBmLCBmbXRpbmdfbGl0WzBdKTsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitm
dW5jdGlvbiBvdXRwdXRfYWNjKHBwZiwgYWNjKSB7CisgIHZhciBleGl0ID0gMDsKKyAgdmFyIHA7
CisgIHZhciBzaXplOworICB2YXIgczsKKyAgdmFyIHAkMTsKKyAgdmFyIHNpemUkMTsKKyAgdmFy
IGM7CisgIGlmICh0eXBlb2YgYWNjID09PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiAoKSAq
LzA7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChhY2MudGFnIHwgMCkgeworICAgICAgY2Fz
ZSAwIDogCisgICAgICAgICAgb3V0cHV0X2FjYyhwcGYsIGFjY1swXSk7CisgICAgICAgICAgcmV0
dXJuIG91dHB1dF9mb3JtYXR0aW5nX2xpdChwcGYsIGFjY1sxXSk7CisgICAgICBjYXNlIDEgOiAK
KyAgICAgICAgICB2YXIgbWF0Y2ggPSBhY2NbMV07CisgICAgICAgICAgdmFyIHAkMiA9IGFjY1sw
XTsKKyAgICAgICAgICBvdXRwdXRfYWNjKHBwZiwgcCQyKTsKKyAgICAgICAgICBpZiAobWF0Y2gu
dGFnKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IENhbWxpbnRlcm5hbEZvcm1hdC5vcGVu
X2JveF9vZl9zdHJpbmcoY29tcHV0ZV90YWcob3V0cHV0X2FjYywgbWF0Y2hbMF0pKTsKKyAgICAg
ICAgICAgIHJldHVybiBwcF9vcGVuX2JveF9nZW4ocHBmLCBtYXRjaCQxWzBdLCBtYXRjaCQxWzFd
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcHBf
b3Blbl90YWcocHBmLCBjb21wdXRlX3RhZyhvdXRwdXRfYWNjLCBtYXRjaFswXSkpOworICAgICAg
ICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHZhciBw
JDMgPSBhY2NbMF07CisgICAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgICAgaWYgKHR5
cGVvZiBwJDMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBleGl0JDEgPSAzOworICAgICAg
ICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChwJDMudGFnKSB7CisgICAgICAgICAgICBleGl0JDEg
PSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRj
aCQyID0gcCQzWzFdOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQyID09PSAibnVtYmVy
IikgeworICAgICAgICAgICAgICBleGl0JDEgPSAzOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBpZiAobWF0Y2gkMi50YWcgPT09IDEpIHsKKyAgICAgICAgICAgICAgcCA9IHAkM1sw
XTsKKyAgICAgICAgICAgICAgc2l6ZSA9IG1hdGNoJDJbMV07CisgICAgICAgICAgICAgIHMgPSBh
Y2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQkMSA9IDM7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDEgPT09IDMpIHsKKyAgICAgICAgICAgIG91dHB1
dF9hY2MocHBmLCBwJDMpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYs
IGFjY1sxXSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDog
CisgICAgICAgICAgdmFyIHAkNCA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQyID0gMDsK
KyAgICAgICAgICBpZiAodHlwZW9mIHAkNCA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4
aXQkMiA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkNC50YWcpIHsKKyAg
ICAgICAgICAgIGV4aXQkMiA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgdmFyIG1hdGNoJDMgPSBwJDRbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1h
dGNoJDMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkMiA9IDM7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQzLnRhZyA9PT0gMSkgeworICAgICAg
ICAgICAgICBwJDEgPSBwJDRbMF07CisgICAgICAgICAgICAgIHNpemUkMSA9IG1hdGNoJDNbMV07
CisgICAgICAgICAgICAgIGMgPSBhY2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAyOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQkMiA9IDM7
CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDIgPT09IDMp
IHsKKyAgICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBwJDQpOworICAgICAgICAgICAgcmV0dXJu
IHBwX3ByaW50X2NoYXIocHBmLCBhY2NbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHZhciBwJDUgPSBhY2NbMF07CisgICAgICAg
ICAgdmFyIGV4aXQkMyA9IDA7CisgICAgICAgICAgaWYgKHR5cGVvZiBwJDUgPT09ICJudW1iZXIi
KSB7CisgICAgICAgICAgICBleGl0JDMgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IGlmIChwJDUudGFnKSB7CisgICAgICAgICAgICBleGl0JDMgPSAzOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gcCQ1WzFdOworICAgICAg
ICAgICAgaWYgKHR5cGVvZiBtYXRjaCQ0ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgICBl
eGl0JDMgPSAzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkNC50
YWcgPT09IDEpIHsKKyAgICAgICAgICAgICAgcCA9IHAkNVswXTsKKyAgICAgICAgICAgICAgc2l6
ZSA9IG1hdGNoJDRbMV07CisgICAgICAgICAgICAgIHMgPSBhY2NbMV07CisgICAgICAgICAgICAg
IGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlm
IChleGl0JDMgPT09IDMpIHsKKyAgICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBwJDUpOworICAg
ICAgICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIGFjY1sxXSk7CisgICAgICAgICAg
fQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIHAkNiA9
IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQ0ID0gMDsKKyAgICAgICAgICBpZiAodHlwZW9m
IHAkNiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgaWYgKHAkNi50YWcpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9IDM7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIG1hdGNoJDUg
PSBwJDZbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDUgPT09ICJudW1iZXIiKSB7
CisgICAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIGlmIChtYXRjaCQ1LnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBwJDEgPSBwJDZbMF07
CisgICAgICAgICAgICAgIHNpemUkMSA9IG1hdGNoJDVbMV07CisgICAgICAgICAgICAgIGMgPSBh
Y2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDQgPT09IDMpIHsKKyAgICAgICAgICAgIG91dHB1
dF9hY2MocHBmLCBwJDYpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIocHBmLCBh
Y2NbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6IAor
ICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBhY2NbMF0pOworICAgICAgICAgIHJldHVybiBDdXJy
eS5fMShhY2NbMV0sIHBwZik7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBvdXRwdXRfYWNj
KHBwZiwgYWNjWzBdKTsKKyAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfZmx1c2gocHBmLCAvKiAo
KSAqLzApOworICAgICAgY2FzZSA4IDogCisgICAgICAgICAgb3V0cHV0X2FjYyhwcGYsIGFjY1sw
XSk7CisgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAgICAgYWNjWzFdCisgICAgICAg
ICAgICAgIF07CisgICAgICAKKyAgICB9CisgIH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAgY2Fz
ZSAxIDogCisgICAgICAgIG91dHB1dF9hY2MocHBmLCBwKTsKKyAgICAgICAgcmV0dXJuIHBwX3By
aW50X2FzX3NpemUocHBmLCBzaXplLCBzKTsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgb3V0cHV0
X2FjYyhwcGYsIHAkMSk7CisgICAgICAgIHJldHVybiBwcF9wcmludF9hc19zaXplKHBwZiwgc2l6
ZSQxLCBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFrZSgxLCBjKSkpOworICAg
IAorICB9Cit9CisKK2Z1bmN0aW9uIHN0cnB1dF9hY2MocHBmLCBhY2MpIHsKKyAgdmFyIGV4aXQg
PSAwOworICB2YXIgcDsKKyAgdmFyIHNpemU7CisgIHZhciBzOworICB2YXIgcCQxOworICB2YXIg
c2l6ZSQxOworICB2YXIgYzsKKyAgaWYgKHR5cGVvZiBhY2MgPT09ICJudW1iZXIiKSB7CisgICAg
cmV0dXJuIC8qICgpICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGFjYy50YWcgfCAw
KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICBzdHJwdXRfYWNjKHBwZiwgYWNjWzBdKTsK
KyAgICAgICAgICByZXR1cm4gb3V0cHV0X2Zvcm1hdHRpbmdfbGl0KHBwZiwgYWNjWzFdKTsKKyAg
ICAgIGNhc2UgMSA6IAorICAgICAgICAgIHZhciBtYXRjaCA9IGFjY1sxXTsKKyAgICAgICAgICB2
YXIgcCQyID0gYWNjWzBdOworICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDIpOworICAgICAg
ICAgIGlmIChtYXRjaC50YWcpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxID0gQ2FtbGludGVy
bmFsRm9ybWF0Lm9wZW5fYm94X29mX3N0cmluZyhjb21wdXRlX3RhZyhzdHJwdXRfYWNjLCBtYXRj
aFswXSkpOworICAgICAgICAgICAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihwcGYsIG1hdGNoJDFb
MF0sIG1hdGNoJDFbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHJldHVybiBwcF9vcGVuX3RhZyhwcGYsIGNvbXB1dGVfdGFnKHN0cnB1dF9hY2MsIG1hdGNo
WzBdKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgdmFyIHAkMyA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQxID0gMDsKKyAg
ICAgICAgICBpZiAodHlwZW9mIHAkMyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQk
MSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkMy50YWcpIHsKKyAgICAg
ICAgICAgIGV4aXQkMSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgdmFyIG1hdGNoJDIgPSBwJDNbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNo
JDIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkMSA9IDM7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQyLnRhZyA9PT0gMSkgeworICAgICAgICAg
ICAgICBwID0gcCQzWzBdOworICAgICAgICAgICAgICBzaXplID0gbWF0Y2gkMlsxXTsKKyAgICAg
ICAgICAgICAgcyA9IGFjY1sxXTsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQxID0gMzsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGV4aXQkMSA9PT0gMykgeworICAg
ICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkMyk7CisgICAgICAgICAgICByZXR1cm4gcHBfcHJp
bnRfc3RyaW5nKHBwZiwgYWNjWzFdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgcCQ0ID0gYWNjWzBdOworICAgICAgICAgIHZh
ciBleGl0JDIgPSAwOworICAgICAgICAgIGlmICh0eXBlb2YgcCQ0ID09PSAibnVtYmVyIikgewor
ICAgICAgICAgICAgZXhpdCQyID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAo
cCQ0LnRhZykgeworICAgICAgICAgICAgZXhpdCQyID0gMzsKKyAgICAgICAgICB9CisgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMyA9IHAkNFsxXTsKKyAgICAgICAgICAg
IGlmICh0eXBlb2YgbWF0Y2gkMyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgZXhpdCQy
ID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDMudGFnID09
PSAxKSB7CisgICAgICAgICAgICAgIHAkMSA9IHAkNFswXTsKKyAgICAgICAgICAgICAgc2l6ZSQx
ID0gbWF0Y2gkM1sxXTsKKyAgICAgICAgICAgICAgYyA9IGFjY1sxXTsKKyAgICAgICAgICAgICAg
ZXhpdCA9IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgZXhpdCQyID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYg
KGV4aXQkMiA9PT0gMykgeworICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkNCk7CisgICAg
ICAgICAgICByZXR1cm4gcHBfcHJpbnRfY2hhcihwcGYsIGFjY1sxXSk7CisgICAgICAgICAgfQor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgdmFyIHAkNSA9IGFj
Y1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQzID0gMDsKKyAgICAgICAgICBpZiAodHlwZW9mIHAk
NSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgaWYgKHAkNS50YWcpIHsKKyAgICAgICAgICAgIGV4aXQkMyA9IDM7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIG1hdGNoJDQgPSBw
JDVbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDQgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmIChtYXRjaCQ0LnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBwID0gcCQ1WzBdOworICAg
ICAgICAgICAgICBzaXplID0gbWF0Y2gkNFsxXTsKKyAgICAgICAgICAgICAgcyA9IGFjY1sxXTsK
KyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgZXhpdCQzID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgICAgaWYgKGV4aXQkMyA9PT0gMykgeworICAgICAgICAgICAgc3RycHV0X2FjYyhw
cGYsIHAkNSk7CisgICAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHBwZiwgYWNjWzFd
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDUgOiAKKyAgICAg
ICAgICB2YXIgcCQ2ID0gYWNjWzBdOworICAgICAgICAgIHZhciBleGl0JDQgPSAwOworICAgICAg
ICAgIGlmICh0eXBlb2YgcCQ2ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgZXhpdCQ0ID0g
MzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAocCQ2LnRhZykgeworICAgICAgICAg
ICAgZXhpdCQ0ID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICB2YXIgbWF0Y2gkNSA9IHAkNlsxXTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkNSA9
PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDUudGFnID09PSAxKSB7CisgICAgICAgICAgICAg
IHAkMSA9IHAkNlswXTsKKyAgICAgICAgICAgICAgc2l6ZSQxID0gbWF0Y2gkNVsxXTsKKyAgICAg
ICAgICAgICAgYyA9IGFjY1sxXTsKKyAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGV4aXQkNCA9PT0gMykgeworICAg
ICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkNik7CisgICAgICAgICAgICByZXR1cm4gcHBfcHJp
bnRfY2hhcihwcGYsIGFjY1sxXSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSA2IDogCisgICAgICAgICAgdmFyIHAkNyA9IGFjY1swXTsKKyAgICAgICAgICB2YXIg
ZXhpdCQ1ID0gMDsKKyAgICAgICAgICBpZiAodHlwZW9mIHAkNyA9PT0gIm51bWJlciIpIHsKKyAg
ICAgICAgICAgIGV4aXQkNSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAk
Ny50YWcpIHsKKyAgICAgICAgICAgIGV4aXQkNSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgdmFyIG1hdGNoJDYgPSBwJDdbMV07CisgICAgICAgICAgICBp
ZiAodHlwZW9mIG1hdGNoJDYgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkNSA9
IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQ2LnRhZyA9PT0g
MSkgeworICAgICAgICAgICAgICBzdHJwdXRfYWNjKHBwZiwgcCQ3WzBdKTsKKyAgICAgICAgICAg
ICAgcmV0dXJuIHBwX3ByaW50X2FzX3NpemUocHBmLCBtYXRjaCQ2WzFdLCBDdXJyeS5fMShhY2Nb
MV0sIC8qICgpICovMCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgIGV4aXQkNSA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
ICAgIGlmIChleGl0JDUgPT09IDMpIHsKKyAgICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDcp
OworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIEN1cnJ5Ll8xKGFjY1sx
XSwgLyogKCkgKi8wKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSA3IDogCisgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIGFjY1swXSk7CisgICAgICAgICAgcmV0
dXJuIHBwX3ByaW50X2ZsdXNoKHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgOCA6IAorICAg
ICAgICAgIHN0cnB1dF9hY2MocHBmLCBhY2NbMF0pOworICAgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAg
ICAgICAgICAgICAgIGFjY1sxXQorICAgICAgICAgICAgICBdOworICAgICAgCisgICAgfQorICB9
CisgIHN3aXRjaCAoZXhpdCkgeworICAgIGNhc2UgMSA6IAorICAgICAgICBzdHJwdXRfYWNjKHBw
ZiwgcCk7CisgICAgICAgIHJldHVybiBwcF9wcmludF9hc19zaXplKHBwZiwgc2l6ZSwgcyk7Cisg
ICAgY2FzZSAyIDogCisgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDEpOworICAgICAgICByZXR1
cm4gcHBfcHJpbnRfYXNfc2l6ZShwcGYsIHNpemUkMSwgQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3Ry
aW5nKEJ5dGVzLm1ha2UoMSwgYykpKTsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBrZnByaW50
ZihrLCBvLCBwYXJhbSkgeworICByZXR1cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRm
KGZ1bmN0aW9uIChvLCBhY2MpIHsKKyAgICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2MpOwor
ICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoaywgbyk7CisgICAgICAgICAgICB9LCBvLCAv
KiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5jdGlvbiBpa2ZwcmludGYoaywg
eCwgcGFyYW0pIHsKKyAgcmV0dXJuIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihmdW5j
dGlvbiAoXywgXyQxKSB7CisgICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShrLCB4KTsKKyAg
ICAgICAgICAgIH0sIHgsIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0
aW9uIGZwcmludGYocHBmLCBmbXQpIHsKKyAgcmV0dXJuIGtmcHJpbnRmKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICAgIH0sIHBwZiwgZm10
KTsKK30KKworZnVuY3Rpb24gaWZwcmludGYocHBmLCBmbXQpIHsKKyAgcmV0dXJuIGlrZnByaW50
ZihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAg
ICAgICB9LCBwcGYsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIHByaW50ZihmbXQpIHsKKyAgcmV0dXJu
IGZwcmludGYoc3RkX2Zvcm1hdHRlciwgZm10KTsKK30KKworZnVuY3Rpb24gZXByaW50ZihmbXQp
IHsKKyAgcmV0dXJuIGZwcmludGYoZXJyX2Zvcm1hdHRlciwgZm10KTsKK30KKworZnVuY3Rpb24g
a3NwcmludGYoaywgcGFyYW0pIHsKKyAgdmFyIGIgPSBCdWZmZXIuY3JlYXRlKDUxMik7CisgIHZh
ciBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyKGIpOworICB2YXIgayRwcmltZSA9IGZ1bmN0aW9u
IChfLCBhY2MpIHsKKyAgICBzdHJwdXRfYWNjKHBwZiwgYWNjKTsKKyAgICByZXR1cm4gQ3Vycnku
XzEoaywgZmx1c2hfYnVmX2Zvcm1hdHRlcihiLCBwcGYpKTsKKyAgfTsKKyAgcmV0dXJuIENhbWxp
bnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihrJHByaW1lLCAvKiAoKSAqLzAsIC8qIEVuZF9vZl9h
Y2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIHNwcmludGYoZm10KSB7CisgIHJldHVy
biBrc3ByaW50ZihmdW5jdGlvbiAocykgeworICAgICAgICAgICAgICByZXR1cm4gczsKKyAgICAg
ICAgICAgIH0sIGZtdCk7Cit9CisKK2Z1bmN0aW9uIGFzcHJpbnRmKHBhcmFtKSB7CisgIHZhciBi
ID0gQnVmZmVyLmNyZWF0ZSg1MTIpOworICB2YXIgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlcihi
KTsKKyAgdmFyIGskcHJpbWUgPSBmdW5jdGlvbiAocHBmLCBhY2MpIHsKKyAgICBvdXRwdXRfYWNj
KHBwZiwgYWNjKTsKKyAgICBwcF9mbHVzaF9xdWV1ZShwcGYsIC8qIGZhbHNlICovMCk7CisgICAg
cmV0dXJuIGZsdXNoX2J1Zl9mb3JtYXR0ZXIoYiwgcHBmKTsKKyAgfTsKKyAgcmV0dXJuIENhbWxp
bnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihrJHByaW1lLCBwcGYsIC8qIEVuZF9vZl9hY2MgKi8w
LCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIGJwcmludGYoYiwgcGFyYW0pIHsKKyAgdmFyIGsg
PSBmdW5jdGlvbiAocHBmLCBhY2MpIHsKKyAgICBvdXRwdXRfYWNjKHBwZiwgYWNjKTsKKyAgICBy
ZXR1cm4gcHBfZmx1c2hfcXVldWUocHBmLCAvKiBmYWxzZSAqLzApOworICB9OworICByZXR1cm4g
Q2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGssIGZvcm1hdHRlcl9vZl9idWZmZXIoYiks
IC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK1BlcnZhc2l2ZXMuYXRfZXhpdChw
cmludF9mbHVzaCk7CisKK3ZhciBrcHJpbnRmID0ga3NwcmludGY7CisKK2V4cG9ydHMub3Blbl9i
b3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fYm94OworZXhwb3J0cy5jbG9z
ZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gY2xvc2VfYm94OworZXhwb3J0cy5w
cmludF9zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfc3RyaW5nOworZXhw
b3J0cy5wcmludF9hcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfYXM7Citl
eHBvcnRzLnByaW50X2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9pbnQ7
CitleHBvcnRzLnByaW50X2Zsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9m
bG9hdDsKK2V4cG9ydHMucHJpbnRfY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBy
aW50X2NoYXI7CitleHBvcnRzLnByaW50X2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBwcmludF9ib29sOworZXhwb3J0cy5wcmludF9zcGFjZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gcHJpbnRfc3BhY2U7CitleHBvcnRzLnByaW50X2N1dCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBwcmludF9jdXQ7CitleHBvcnRzLnByaW50X2JyZWFrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBwcmludF9icmVhazsKK2V4cG9ydHMucHJpbnRfZmx1c2ggICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IHByaW50X2ZsdXNoOworZXhwb3J0cy5wcmludF9uZXdsaW5lICAg
ICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfbmV3bGluZTsKK2V4cG9ydHMuZm9yY2VfbmV3
bGluZSAgICAgICAgICAgICAgICAgICAgICAgICA9IGZvcmNlX25ld2xpbmU7CitleHBvcnRzLnBy
aW50X2lmX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9pZl9uZXdsaW5lOwor
ZXhwb3J0cy5zZXRfbWFyZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc2V0X21hcmdp
bjsKK2V4cG9ydHMuZ2V0X21hcmdpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdldF9t
YXJnaW47CitleHBvcnRzLnNldF9tYXhfaW5kZW50ICAgICAgICAgICAgICAgICAgICAgICAgPSBz
ZXRfbWF4X2luZGVudDsKK2V4cG9ydHMuZ2V0X21heF9pbmRlbnQgICAgICAgICAgICAgICAgICAg
ICAgICA9IGdldF9tYXhfaW5kZW50OworZXhwb3J0cy5zZXRfbWF4X2JveGVzICAgICAgICAgICAg
ICAgICAgICAgICAgID0gc2V0X21heF9ib3hlczsKK2V4cG9ydHMuZ2V0X21heF9ib3hlcyAgICAg
ICAgICAgICAgICAgICAgICAgICA9IGdldF9tYXhfYm94ZXM7CitleHBvcnRzLm92ZXJfbWF4X2Jv
eGVzICAgICAgICAgICAgICAgICAgICAgICAgPSBvdmVyX21heF9ib3hlczsKK2V4cG9ydHMub3Bl
bl9oYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5faGJveDsKK2V4cG9ydHMu
b3Blbl92Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fdmJveDsKK2V4cG9y
dHMub3Blbl9odmJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5faHZib3g7Citl
eHBvcnRzLm9wZW5faG92Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBvcGVuX2hvdmJv
eDsKK2V4cG9ydHMub3Blbl90Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5f
dGJveDsKK2V4cG9ydHMuY2xvc2VfdGJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGNs
b3NlX3Rib3g7CitleHBvcnRzLnByaW50X3RicmVhayAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBwcmludF90YnJlYWs7CitleHBvcnRzLnNldF90YWIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBzZXRfdGFiOworZXhwb3J0cy5wcmludF90YWIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gcHJpbnRfdGFiOworZXhwb3J0cy5zZXRfZWxsaXBzaXNfdGV4dCAgICAgICAgICAg
ICAgICAgICAgID0gc2V0X2VsbGlwc2lzX3RleHQ7CitleHBvcnRzLmdldF9lbGxpcHNpc190ZXh0
ICAgICAgICAgICAgICAgICAgICAgPSBnZXRfZWxsaXBzaXNfdGV4dDsKK2V4cG9ydHMub3Blbl90
YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fdGFnOworZXhwb3J0cy5jbG9z
ZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gY2xvc2VfdGFnOworZXhwb3J0cy5z
ZXRfdGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc2V0X3RhZ3M7CitleHBvcnRz
LnNldF9wcmludF90YWdzICAgICAgICAgICAgICAgICAgICAgICAgPSBzZXRfcHJpbnRfdGFnczsK
K2V4cG9ydHMuc2V0X21hcmtfdGFncyAgICAgICAgICAgICAgICAgICAgICAgICA9IHNldF9tYXJr
X3RhZ3M7CitleHBvcnRzLmdldF9wcmludF90YWdzICAgICAgICAgICAgICAgICAgICAgICAgPSBn
ZXRfcHJpbnRfdGFnczsKK2V4cG9ydHMuZ2V0X21hcmtfdGFncyAgICAgICAgICAgICAgICAgICAg
ICAgICA9IGdldF9tYXJrX3RhZ3M7CitleHBvcnRzLnNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwg
ICAgICAgICAgICAgPSBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsOworZXhwb3J0cy5zZXRfZm9y
bWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgICAgID0gc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVu
Y3Rpb25zOworZXhwb3J0cy5nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgICAgID0g
Z2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOworZXhwb3J0cy5zZXRfZm9ybWF0dGVyX291
dF9mdW5jdGlvbnMgICAgICAgICAgID0gc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOworZXhw
b3J0cy5nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgICAgICAgICAgID0gZ2V0X2Zvcm1hdHRl
cl9vdXRfZnVuY3Rpb25zOworZXhwb3J0cy5zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgICAg
ICAgICAgID0gc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOworZXhwb3J0cy5nZXRfZm9ybWF0
dGVyX3RhZ19mdW5jdGlvbnMgICAgICAgICAgID0gZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25z
OworZXhwb3J0cy5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgICAgICAgICAgICAgID0gZm9ybWF0
dGVyX29mX291dF9jaGFubmVsOworZXhwb3J0cy5zdGRfZm9ybWF0dGVyICAgICAgICAgICAgICAg
ICAgICAgICAgID0gc3RkX2Zvcm1hdHRlcjsKK2V4cG9ydHMuZXJyX2Zvcm1hdHRlciAgICAgICAg
ICAgICAgICAgICAgICAgICA9IGVycl9mb3JtYXR0ZXI7CitleHBvcnRzLmZvcm1hdHRlcl9vZl9i
dWZmZXIgICAgICAgICAgICAgICAgICAgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyOworZXhwb3J0cy5z
dGRidWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RkYnVmOworZXhwb3J0cy5z
dHJfZm9ybWF0dGVyICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RyX2Zvcm1hdHRlcjsKK2V4
cG9ydHMuZmx1c2hfc3RyX2Zvcm1hdHRlciAgICAgICAgICAgICAgICAgICA9IGZsdXNoX3N0cl9m
b3JtYXR0ZXI7CitleHBvcnRzLm1ha2VfZm9ybWF0dGVyICAgICAgICAgICAgICAgICAgICAgICAg
PSBtYWtlX2Zvcm1hdHRlcjsKK2V4cG9ydHMucHBfb3Blbl9oYm94ICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IHBwX29wZW5faGJveDsKK2V4cG9ydHMucHBfb3Blbl92Ym94ICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHBwX29wZW5fdmJveDsKK2V4cG9ydHMucHBfb3Blbl9odmJveCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IHBwX29wZW5faHZib3g7CitleHBvcnRzLnBwX29wZW5faG92
Ym94ICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9vcGVuX2hvdmJveDsKK2V4cG9ydHMucHBf
b3Blbl9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX29wZW5fYm94OworZXhwb3J0
cy5wcF9jbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfY2xvc2VfYm94Owor
ZXhwb3J0cy5wcF9vcGVuX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfb3Blbl90
YWc7CitleHBvcnRzLnBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9j
bG9zZV90YWc7CitleHBvcnRzLnBwX3ByaW50X3N0cmluZyAgICAgICAgICAgICAgICAgICAgICAg
PSBwcF9wcmludF9zdHJpbmc7CitleHBvcnRzLnBwX3ByaW50X2FzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBwcF9wcmludF9hczsKK2V4cG9ydHMucHBfcHJpbnRfaW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHBwX3ByaW50X2ludDsKK2V4cG9ydHMucHBfcHJpbnRfZmxvYXQgICAg
ICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2Zsb2F0OworZXhwb3J0cy5wcF9wcmludF9j
aGFyICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfY2hhcjsKK2V4cG9ydHMucHBf
cHJpbnRfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2Jvb2w7CitleHBv
cnRzLnBwX3ByaW50X2JyZWFrICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9wcmludF9icmVh
azsKK2V4cG9ydHMucHBfcHJpbnRfY3V0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3By
aW50X2N1dDsKK2V4cG9ydHMucHBfcHJpbnRfc3BhY2UgICAgICAgICAgICAgICAgICAgICAgICA9
IHBwX3ByaW50X3NwYWNlOworZXhwb3J0cy5wcF9mb3JjZV9uZXdsaW5lICAgICAgICAgICAgICAg
ICAgICAgID0gcHBfZm9yY2VfbmV3bGluZTsKK2V4cG9ydHMucHBfcHJpbnRfZmx1c2ggICAgICAg
ICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2ZsdXNoOworZXhwb3J0cy5wcF9wcmludF9uZXds
aW5lICAgICAgICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfbmV3bGluZTsKK2V4cG9ydHMucHBf
cHJpbnRfaWZfbmV3bGluZSAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2lmX25ld2xpbmU7
CitleHBvcnRzLnBwX29wZW5fdGJveCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9vcGVu
X3Rib3g7CitleHBvcnRzLnBwX2Nsb3NlX3Rib3ggICAgICAgICAgICAgICAgICAgICAgICAgPSBw
cF9jbG9zZV90Ym94OworZXhwb3J0cy5wcF9wcmludF90YnJlYWsgICAgICAgICAgICAgICAgICAg
ICAgID0gcHBfcHJpbnRfdGJyZWFrOworZXhwb3J0cy5wcF9zZXRfdGFiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gcHBfc2V0X3RhYjsKK2V4cG9ydHMucHBfcHJpbnRfdGFiICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X3RhYjsKK2V4cG9ydHMucHBfc2V0X3RhZ3MgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3NldF90YWdzOworZXhwb3J0cy5wcF9zZXRfcHJp
bnRfdGFncyAgICAgICAgICAgICAgICAgICAgID0gcHBfc2V0X3ByaW50X3RhZ3M7CitleHBvcnRz
LnBwX3NldF9tYXJrX3RhZ3MgICAgICAgICAgICAgICAgICAgICAgPSBwcF9zZXRfbWFya190YWdz
OworZXhwb3J0cy5wcF9nZXRfcHJpbnRfdGFncyAgICAgICAgICAgICAgICAgICAgID0gcHBfZ2V0
X3ByaW50X3RhZ3M7CitleHBvcnRzLnBwX2dldF9tYXJrX3RhZ3MgICAgICAgICAgICAgICAgICAg
ICAgPSBwcF9nZXRfbWFya190YWdzOworZXhwb3J0cy5wcF9zZXRfbWFyZ2luICAgICAgICAgICAg
ICAgICAgICAgICAgID0gcHBfc2V0X21hcmdpbjsKK2V4cG9ydHMucHBfZ2V0X21hcmdpbiAgICAg
ICAgICAgICAgICAgICAgICAgICA9IHBwX2dldF9tYXJnaW47CitleHBvcnRzLnBwX3NldF9tYXhf
aW5kZW50ICAgICAgICAgICAgICAgICAgICAgPSBwcF9zZXRfbWF4X2luZGVudDsKK2V4cG9ydHMu
cHBfZ2V0X21heF9pbmRlbnQgICAgICAgICAgICAgICAgICAgICA9IHBwX2dldF9tYXhfaW5kZW50
OworZXhwb3J0cy5wcF9zZXRfbWF4X2JveGVzICAgICAgICAgICAgICAgICAgICAgID0gcHBfc2V0
X21heF9ib3hlczsKK2V4cG9ydHMucHBfZ2V0X21heF9ib3hlcyAgICAgICAgICAgICAgICAgICAg
ICA9IHBwX2dldF9tYXhfYm94ZXM7CitleHBvcnRzLnBwX292ZXJfbWF4X2JveGVzICAgICAgICAg
ICAgICAgICAgICAgPSBwcF9vdmVyX21heF9ib3hlczsKK2V4cG9ydHMucHBfc2V0X2VsbGlwc2lz
X3RleHQgICAgICAgICAgICAgICAgICA9IHBwX3NldF9lbGxpcHNpc190ZXh0OworZXhwb3J0cy5w
cF9nZXRfZWxsaXBzaXNfdGV4dCAgICAgICAgICAgICAgICAgID0gcHBfZ2V0X2VsbGlwc2lzX3Rl
eHQ7CitleHBvcnRzLnBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgICAgICAgICAgPSBwcF9z
ZXRfZm9ybWF0dGVyX291dF9jaGFubmVsOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX291dHB1
dF9mdW5jdGlvbnMgICAgID0gcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOworZXhw
b3J0cy5wcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgID0gcHBfZ2V0X2Zvcm1h
dHRlcl9vdXRwdXRfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5j
dGlvbnMgICAgICAgID0gcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOworZXhwb3J0cy5w
cF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgICAgICAgID0gcHBfZ2V0X2Zvcm1hdHRlcl90
YWdfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgICAg
ICAgID0gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9nZXRfZm9y
bWF0dGVyX291dF9mdW5jdGlvbnMgICAgICAgID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rp
b25zOworZXhwb3J0cy5wcF9wcmludF9saXN0ICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBf
cHJpbnRfbGlzdDsKK2V4cG9ydHMucHBfcHJpbnRfdGV4dCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IHBwX3ByaW50X3RleHQ7CitleHBvcnRzLmZwcmludGYgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBmcHJpbnRmOworZXhwb3J0cy5wcmludGYgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gcHJpbnRmOworZXhwb3J0cy5lcHJpbnRmICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gZXByaW50ZjsKK2V4cG9ydHMuc3ByaW50ZiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IHNwcmludGY7CitleHBvcnRzLmFzcHJpbnRmICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBhc3ByaW50ZjsKK2V4cG9ydHMuaWZwcmludGYgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IGlmcHJpbnRmOworZXhwb3J0cy5rZnByaW50ZiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0ga2ZwcmludGY7CitleHBvcnRzLmlrZnByaW50ZiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBpa2ZwcmludGY7CitleHBvcnRzLmtzcHJpbnRmICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBrc3ByaW50ZjsKK2V4cG9ydHMuYnByaW50ZiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IGJwcmludGY7CitleHBvcnRzLmtwcmludGYgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBrcHJpbnRmOworZXhwb3J0cy5zZXRfYWxsX2Zvcm1h
dHRlcl9vdXRwdXRfZnVuY3Rpb25zICAgID0gc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0
aW9uczsKK2V4cG9ydHMuZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAgICA9IGdl
dF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnM7CitleHBvcnRzLnBwX3NldF9hbGxfZm9y
bWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPSBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVu
Y3Rpb25zOworZXhwb3J0cy5wcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID0g
cHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uczsKKy8qIGJsYW5rX2xpbmUgTm90
IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBmb3JtYXQuanMgLy8vLy8vLy8KK8Kg
IMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnaTMyJ10gPSBmdW5j
dGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpMzIu
anMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAs
IFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgSW50ICAgICAgICA9
IHJlcXVpcmUoIi4vaW50Iik7Cit2YXIgSW50MzIgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3Jt
L2xpYi9qcy9pbnQzMiIpOwordmFyIENhbWxfaW50MzIgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvY2FtbF9pbnQzMiIpOworCit2YXIgaW5jbHVkZSA9IEludC5NYWtlKC8qIG1vZHVsZSAq
L1sKKyAgICAgIC8qIHplcm8gKi9JbnQzMi56ZXJvLAorICAgICAgLyogb25lICovSW50MzIub25l
LAorICAgICAgLyogbWludXNfb25lICovSW50MzIubWludXNfb25lLAorICAgICAgLyogbWF4X2lu
dCAqL0ludDMyLm1heF9pbnQsCisgICAgICAvKiBtaW5faW50ICovSW50MzIubWluX2ludCwKKyAg
ICAgIC8qICVpbnQzMl9uZWcgKi9mdW5jdGlvbiAocHJpbSkgeworICAgICAgICByZXR1cm4gLXBy
aW0gfCAwOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl9hZGQgKi9mdW5jdGlvbiAocHJpbSwg
cHJpbSQxKSB7CisgICAgICAgIHJldHVybiBwcmltICsgcHJpbSQxIHwgMDsKKyAgICAgIH0sCisg
ICAgICAvKiAlaW50MzJfc3ViICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICBy
ZXR1cm4gcHJpbSAtIHByaW0kMSB8IDA7CisgICAgICB9LAorICAgICAgLyogJWludDMyX211bCAq
L0NhbWxfaW50MzIuaW11bCwKKyAgICAgIC8qICVpbnQzMl9kaXYgKi9DYW1sX2ludDMyLmRpdiwK
KyAgICAgIC8qICVpbnQzMl9tb2QgKi9DYW1sX2ludDMyLm1vZF8sCisgICAgICAvKiAlaW50MzJf
YW5kICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSAmIHBy
aW0kMTsKKyAgICAgIH0sCisgICAgICAvKiBsb2dub3QgKi9JbnQzMi5sb2dub3QsCisgICAgICAv
KiAlaW50MzJfb3IgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiBw
cmltIHwgcHJpbSQxOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl94b3IgKi9mdW5jdGlvbiAo
cHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiBwcmltIF4gcHJpbSQxOworICAgICAgfSwK
KyAgICAgIC8qICVpbnQzMl9sc2wgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAg
IHJldHVybiAocHJpbSA8PCBwcmltJDEpOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl9hc3Ig
Ki9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAocHJpbSA+PiBwcmlt
JDEpOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl9sc3IgKi9mdW5jdGlvbiAocHJpbSwgcHJp
bSQxKSB7CisgICAgICAgIHJldHVybiAocHJpbSA+Pj4gcHJpbSQxKSB8IDA7CisgICAgICB9LAor
ICAgICAgLyogJWludDMyX29mX2ludCAqL2Z1bmN0aW9uIChwcmltKSB7CisgICAgICAgIHJldHVy
biBwcmltOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl90b19pbnQgKi9mdW5jdGlvbiAocHJp
bSkgeworICAgICAgICByZXR1cm4gcHJpbTsKKyAgICAgIH0sCisgICAgICAvKiB0b19zdHJpbmcg
Ki9JbnQzMi50b19zdHJpbmcsCisgICAgICAvKiBiaXR3aWR0aCAqLzMyCisgICAgXSk7CisKK3Zh
ciBvZl9iaXRzID0gaW5jbHVkZVswXTsKKwordmFyIHRvX2JpdHMgPSBpbmNsdWRlWzFdOworCit2
YXIgemVybyA9IGluY2x1ZGVbMl07CisKK3ZhciBhZGQgPSBpbmNsdWRlWzNdOworCit2YXIgc3Vi
ID0gaW5jbHVkZVs0XTsKKwordmFyIG11bCA9IGluY2x1ZGVbNV07CisKK3ZhciBkaXZfcyA9IGlu
Y2x1ZGVbNl07CisKK3ZhciBkaXZfdSA9IGluY2x1ZGVbN107CisKK3ZhciByZW1fcyA9IGluY2x1
ZGVbOF07CisKK3ZhciByZW1fdSA9IGluY2x1ZGVbOV07CisKK3ZhciBhbmRfID0gaW5jbHVkZVsx
MF07CisKK3ZhciBvcl8gPSBpbmNsdWRlWzExXTsKKwordmFyIHhvciA9IGluY2x1ZGVbMTJdOwor
Cit2YXIgc2hsID0gaW5jbHVkZVsxM107CisKK3ZhciBzaHJfcyA9IGluY2x1ZGVbMTRdOworCit2
YXIgc2hyX3UgPSBpbmNsdWRlWzE1XTsKKwordmFyIHJvdGwgPSBpbmNsdWRlWzE2XTsKKwordmFy
IHJvdHIgPSBpbmNsdWRlWzE3XTsKKwordmFyIGNseiA9IGluY2x1ZGVbMThdOworCit2YXIgY3R6
ID0gaW5jbHVkZVsxOV07CisKK3ZhciBwb3BjbnQgPSBpbmNsdWRlWzIwXTsKKwordmFyIGVxeiA9
IGluY2x1ZGVbMjFdOworCit2YXIgZXEgPSBpbmNsdWRlWzIyXTsKKwordmFyIG5lID0gaW5jbHVk
ZVsyM107CisKK3ZhciBsdF9zID0gaW5jbHVkZVsyNF07CisKK3ZhciBsdF91ID0gaW5jbHVkZVsy
NV07CisKK3ZhciBsZV9zID0gaW5jbHVkZVsyNl07CisKK3ZhciBsZV91ID0gaW5jbHVkZVsyN107
CisKK3ZhciBndF9zID0gaW5jbHVkZVsyOF07CisKK3ZhciBndF91ID0gaW5jbHVkZVsyOV07CisK
K3ZhciBnZV9zID0gaW5jbHVkZVszMF07CisKK3ZhciBnZV91ID0gaW5jbHVkZVszMV07CisKK3Zh
ciBvZl9pbnRfcyA9IGluY2x1ZGVbMzJdOworCit2YXIgb2ZfaW50X3UgPSBpbmNsdWRlWzMzXTsK
KwordmFyIG9mX3N0cmluZ19zID0gaW5jbHVkZVszNF07CisKK3ZhciBvZl9zdHJpbmdfdSA9IGlu
Y2x1ZGVbMzVdOworCit2YXIgb2Zfc3RyaW5nID0gaW5jbHVkZVszNl07CisKK3ZhciB0b19zdHJp
bmdfcyA9IGluY2x1ZGVbMzddOworCit2YXIgdG9fc3RyaW5nX3UgPSBpbmNsdWRlWzM4XTsKKwor
ZXhwb3J0cy5vZl9iaXRzICAgICA9IG9mX2JpdHM7CitleHBvcnRzLnRvX2JpdHMgICAgID0gdG9f
Yml0czsKK2V4cG9ydHMuemVybyAgICAgICAgPSB6ZXJvOworZXhwb3J0cy5hZGQgICAgICAgICA9
IGFkZDsKK2V4cG9ydHMuc3ViICAgICAgICAgPSBzdWI7CitleHBvcnRzLm11bCAgICAgICAgID0g
bXVsOworZXhwb3J0cy5kaXZfcyAgICAgICA9IGRpdl9zOworZXhwb3J0cy5kaXZfdSAgICAgICA9
IGRpdl91OworZXhwb3J0cy5yZW1fcyAgICAgICA9IHJlbV9zOworZXhwb3J0cy5yZW1fdSAgICAg
ICA9IHJlbV91OworZXhwb3J0cy5hbmRfICAgICAgICA9IGFuZF87CitleHBvcnRzLm9yXyAgICAg
ICAgID0gb3JfOworZXhwb3J0cy54b3IgICAgICAgICA9IHhvcjsKK2V4cG9ydHMuc2hsICAgICAg
ICAgPSBzaGw7CitleHBvcnRzLnNocl9zICAgICAgID0gc2hyX3M7CitleHBvcnRzLnNocl91ICAg
ICAgID0gc2hyX3U7CitleHBvcnRzLnJvdGwgICAgICAgID0gcm90bDsKK2V4cG9ydHMucm90ciAg
ICAgICAgPSByb3RyOworZXhwb3J0cy5jbHogICAgICAgICA9IGNsejsKK2V4cG9ydHMuY3R6ICAg
ICAgICAgPSBjdHo7CitleHBvcnRzLnBvcGNudCAgICAgID0gcG9wY250OworZXhwb3J0cy5lcXog
ICAgICAgICA9IGVxejsKK2V4cG9ydHMuZXEgICAgICAgICAgPSBlcTsKK2V4cG9ydHMubmUgICAg
ICAgICAgPSBuZTsKK2V4cG9ydHMubHRfcyAgICAgICAgPSBsdF9zOworZXhwb3J0cy5sdF91ICAg
ICAgICA9IGx0X3U7CitleHBvcnRzLmxlX3MgICAgICAgID0gbGVfczsKK2V4cG9ydHMubGVfdSAg
ICAgICAgPSBsZV91OworZXhwb3J0cy5ndF9zICAgICAgICA9IGd0X3M7CitleHBvcnRzLmd0X3Ug
ICAgICAgID0gZ3RfdTsKK2V4cG9ydHMuZ2VfcyAgICAgICAgPSBnZV9zOworZXhwb3J0cy5nZV91
ICAgICAgICA9IGdlX3U7CitleHBvcnRzLm9mX2ludF9zICAgID0gb2ZfaW50X3M7CitleHBvcnRz
Lm9mX2ludF91ICAgID0gb2ZfaW50X3U7CitleHBvcnRzLm9mX3N0cmluZ19zID0gb2Zfc3RyaW5n
X3M7CitleHBvcnRzLm9mX3N0cmluZ191ID0gb2Zfc3RyaW5nX3U7CitleHBvcnRzLm9mX3N0cmlu
ZyAgID0gb2Zfc3RyaW5nOworZXhwb3J0cy50b19zdHJpbmdfcyA9IHRvX3N0cmluZ19zOworZXhw
b3J0cy50b19zdHJpbmdfdSA9IHRvX3N0cmluZ191OworLyogaW5jbHVkZSBOb3QgYSBwdXJlIG1v
ZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGkzMi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4
cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydpNjQnXSA9IGZ1bmN0aW9uKCkgeworwqAg
wqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGk2NC5qcyAvLy8vLy8vLwor
Ly8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQg
V0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBJbnQgICAgICAgID0gcmVxdWlyZSgiLi9p
bnQiKTsKK3ZhciBJbnQ2NCAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2ludDY0
Iik7Cit2YXIgQ2FtbF9pbnQ2NCA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2lu
dDY0Iik7CisKK3ZhciBpbmNsdWRlID0gSW50Lk1ha2UoLyogbW9kdWxlICovWworICAgICAgLyog
emVybyAqL0ludDY0Lnplcm8sCisgICAgICAvKiBvbmUgKi9JbnQ2NC5vbmUsCisgICAgICAvKiBt
aW51c19vbmUgKi9JbnQ2NC5taW51c19vbmUsCisgICAgICAvKiBtYXhfaW50ICovSW50NjQubWF4
X2ludCwKKyAgICAgIC8qIG1pbl9pbnQgKi9JbnQ2NC5taW5faW50LAorICAgICAgLyogJWludDY0
X25lZyAqL0NhbWxfaW50NjQubmVnLAorICAgICAgLyogJWludDY0X2FkZCAqL0NhbWxfaW50NjQu
YWRkLAorICAgICAgLyogJWludDY0X3N1YiAqL0NhbWxfaW50NjQuc3ViLAorICAgICAgLyogJWlu
dDY0X211bCAqL0NhbWxfaW50NjQubXVsLAorICAgICAgLyogJWludDY0X2RpdiAqL0NhbWxfaW50
NjQuZGl2LAorICAgICAgLyogJWludDY0X21vZCAqL0NhbWxfaW50NjQubW9kXywKKyAgICAgIC8q
ICVpbnQ2NF9hbmQgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAv
KiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gJiBwcmltJDFbMF0s
CisgICAgICAgICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gJiBwcmltJDFbMV0pID4+PiAwKQor
ICAgICAgICAgICAgICBdOworICAgICAgfSwKKyAgICAgIC8qIGxvZ25vdCAqL0ludDY0LmxvZ25v
dCwKKyAgICAgIC8qICVpbnQ2NF9vciAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAg
ICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgIC8qIGhpICovcHJpbVswXSB8
IHByaW0kMVswXSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLygocHJpbVsxXSB8IHByaW0kMVsx
XSkgPj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9LAorICAgICAgLyogJWludDY0X3hv
ciAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIC8qIGludDY0ICov
WworICAgICAgICAgICAgICAgIC8qIGhpICovcHJpbVswXSBeIHByaW0kMVswXSwKKyAgICAgICAg
ICAgICAgICAvKiBsbyAqLygocHJpbVsxXSBeIHByaW0kMVsxXSkgPj4+IDApCisgICAgICAgICAg
ICAgIF07CisgICAgICB9LAorICAgICAgLyogJWludDY0X2xzbCAqL0NhbWxfaW50NjQubHNsXywK
KyAgICAgIC8qICVpbnQ2NF9hc3IgKi9DYW1sX2ludDY0LmFzcl8sCisgICAgICAvKiAlaW50NjRf
bHNyICovQ2FtbF9pbnQ2NC5sc3JfLAorICAgICAgLyogJWludDY0X29mX2ludCAqL0NhbWxfaW50
NjQub2ZfaW50MzIsCisgICAgICAvKiAlaW50NjRfdG9faW50ICovZnVuY3Rpb24gKHByaW0pIHsK
KyAgICAgICAgcmV0dXJuIHByaW1bMV0gfCAwOworICAgICAgfSwKKyAgICAgIC8qIHRvX3N0cmlu
ZyAqL0ludDY0LnRvX3N0cmluZywKKyAgICAgIC8qIGJpdHdpZHRoICovNjQKKyAgICBdKTsKKwor
dmFyIG9mX2JpdHMgPSBpbmNsdWRlWzBdOworCit2YXIgdG9fYml0cyA9IGluY2x1ZGVbMV07CisK
K3ZhciB6ZXJvID0gaW5jbHVkZVsyXTsKKwordmFyIGFkZCA9IGluY2x1ZGVbM107CisKK3ZhciBz
dWIgPSBpbmNsdWRlWzRdOworCit2YXIgbXVsID0gaW5jbHVkZVs1XTsKKwordmFyIGRpdl9zID0g
aW5jbHVkZVs2XTsKKwordmFyIGRpdl91ID0gaW5jbHVkZVs3XTsKKwordmFyIHJlbV9zID0gaW5j
bHVkZVs4XTsKKwordmFyIHJlbV91ID0gaW5jbHVkZVs5XTsKKwordmFyIGFuZF8gPSBpbmNsdWRl
WzEwXTsKKwordmFyIG9yXyA9IGluY2x1ZGVbMTFdOworCit2YXIgeG9yID0gaW5jbHVkZVsxMl07
CisKK3ZhciBzaGwgPSBpbmNsdWRlWzEzXTsKKwordmFyIHNocl9zID0gaW5jbHVkZVsxNF07CisK
K3ZhciBzaHJfdSA9IGluY2x1ZGVbMTVdOworCit2YXIgcm90bCA9IGluY2x1ZGVbMTZdOworCit2
YXIgcm90ciA9IGluY2x1ZGVbMTddOworCit2YXIgY2x6ID0gaW5jbHVkZVsxOF07CisKK3ZhciBj
dHogPSBpbmNsdWRlWzE5XTsKKwordmFyIHBvcGNudCA9IGluY2x1ZGVbMjBdOworCit2YXIgZXF6
ID0gaW5jbHVkZVsyMV07CisKK3ZhciBlcSA9IGluY2x1ZGVbMjJdOworCit2YXIgbmUgPSBpbmNs
dWRlWzIzXTsKKwordmFyIGx0X3MgPSBpbmNsdWRlWzI0XTsKKwordmFyIGx0X3UgPSBpbmNsdWRl
WzI1XTsKKwordmFyIGxlX3MgPSBpbmNsdWRlWzI2XTsKKwordmFyIGxlX3UgPSBpbmNsdWRlWzI3
XTsKKwordmFyIGd0X3MgPSBpbmNsdWRlWzI4XTsKKwordmFyIGd0X3UgPSBpbmNsdWRlWzI5XTsK
KwordmFyIGdlX3MgPSBpbmNsdWRlWzMwXTsKKwordmFyIGdlX3UgPSBpbmNsdWRlWzMxXTsKKwor
dmFyIG9mX2ludF9zID0gaW5jbHVkZVszMl07CisKK3ZhciBvZl9pbnRfdSA9IGluY2x1ZGVbMzNd
OworCit2YXIgb2Zfc3RyaW5nX3MgPSBpbmNsdWRlWzM0XTsKKwordmFyIG9mX3N0cmluZ191ID0g
aW5jbHVkZVszNV07CisKK3ZhciBvZl9zdHJpbmcgPSBpbmNsdWRlWzM2XTsKKwordmFyIHRvX3N0
cmluZ19zID0gaW5jbHVkZVszN107CisKK3ZhciB0b19zdHJpbmdfdSA9IGluY2x1ZGVbMzhdOwor
CitleHBvcnRzLm9mX2JpdHMgICAgID0gb2ZfYml0czsKK2V4cG9ydHMudG9fYml0cyAgICAgPSB0
b19iaXRzOworZXhwb3J0cy56ZXJvICAgICAgICA9IHplcm87CitleHBvcnRzLmFkZCAgICAgICAg
ID0gYWRkOworZXhwb3J0cy5zdWIgICAgICAgICA9IHN1YjsKK2V4cG9ydHMubXVsICAgICAgICAg
PSBtdWw7CitleHBvcnRzLmRpdl9zICAgICAgID0gZGl2X3M7CitleHBvcnRzLmRpdl91ICAgICAg
ID0gZGl2X3U7CitleHBvcnRzLnJlbV9zICAgICAgID0gcmVtX3M7CitleHBvcnRzLnJlbV91ICAg
ICAgID0gcmVtX3U7CitleHBvcnRzLmFuZF8gICAgICAgID0gYW5kXzsKK2V4cG9ydHMub3JfICAg
ICAgICAgPSBvcl87CitleHBvcnRzLnhvciAgICAgICAgID0geG9yOworZXhwb3J0cy5zaGwgICAg
ICAgICA9IHNobDsKK2V4cG9ydHMuc2hyX3MgICAgICAgPSBzaHJfczsKK2V4cG9ydHMuc2hyX3Ug
ICAgICAgPSBzaHJfdTsKK2V4cG9ydHMucm90bCAgICAgICAgPSByb3RsOworZXhwb3J0cy5yb3Ry
ICAgICAgICA9IHJvdHI7CitleHBvcnRzLmNseiAgICAgICAgID0gY2x6OworZXhwb3J0cy5jdHog
ICAgICAgICA9IGN0ejsKK2V4cG9ydHMucG9wY250ICAgICAgPSBwb3BjbnQ7CitleHBvcnRzLmVx
eiAgICAgICAgID0gZXF6OworZXhwb3J0cy5lcSAgICAgICAgICA9IGVxOworZXhwb3J0cy5uZSAg
ICAgICAgICA9IG5lOworZXhwb3J0cy5sdF9zICAgICAgICA9IGx0X3M7CitleHBvcnRzLmx0X3Ug
ICAgICAgID0gbHRfdTsKK2V4cG9ydHMubGVfcyAgICAgICAgPSBsZV9zOworZXhwb3J0cy5sZV91
ICAgICAgICA9IGxlX3U7CitleHBvcnRzLmd0X3MgICAgICAgID0gZ3RfczsKK2V4cG9ydHMuZ3Rf
dSAgICAgICAgPSBndF91OworZXhwb3J0cy5nZV9zICAgICAgICA9IGdlX3M7CitleHBvcnRzLmdl
X3UgICAgICAgID0gZ2VfdTsKK2V4cG9ydHMub2ZfaW50X3MgICAgPSBvZl9pbnRfczsKK2V4cG9y
dHMub2ZfaW50X3UgICAgPSBvZl9pbnRfdTsKK2V4cG9ydHMub2Zfc3RyaW5nX3MgPSBvZl9zdHJp
bmdfczsKK2V4cG9ydHMub2Zfc3RyaW5nX3UgPSBvZl9zdHJpbmdfdTsKK2V4cG9ydHMub2Zfc3Ry
aW5nICAgPSBvZl9zdHJpbmc7CitleHBvcnRzLnRvX3N0cmluZ19zID0gdG9fc3RyaW5nX3M7Citl
eHBvcnRzLnRvX3N0cmluZ191ID0gdG9fc3RyaW5nX3U7CisvKiBpbmNsdWRlIE5vdCBhIHB1cmUg
bW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgaTY0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4g
ZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2ludDMyJ10gPSBmdW5jdGlvbigpIHsK
K8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpbnQzMi5qcyAvLy8v
Ly8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9vYmogICAgPSByZXF1aXJlKCIuL2NhbWxf
b2JqIik7Cit2YXIgQ2FtbF9mb3JtYXQgPSByZXF1aXJlKCIuL2NhbWxfZm9ybWF0Iik7CisKK2Z1
bmN0aW9uIHN1Y2MobikgeworICByZXR1cm4gbiArIDEgfCAwOworfQorCitmdW5jdGlvbiBwcmVk
KG4pIHsKKyAgcmV0dXJuIG4gLSAxIHwgMDsKK30KKworZnVuY3Rpb24gYWJzKG4pIHsKKyAgaWYg
KG4gPj0gMCkgeworICAgIHJldHVybiBuOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAtbiB8
IDA7CisgIH0KK30KKworZnVuY3Rpb24gbG9nbm90KG4pIHsKKyAgcmV0dXJuIG4gXiAtMTsKK30K
KworZnVuY3Rpb24gdG9fc3RyaW5nKG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfaW50
MzJfZm9ybWF0KCIlZCIsIG4pOworfQorCit2YXIgY29tcGFyZSA9IENhbWxfb2JqLmNhbWxfaW50
MzJfY29tcGFyZTsKKwordmFyIHplcm8gPSAwOworCit2YXIgb25lID0gMTsKKwordmFyIG1pbnVz
X29uZSA9IC0xOworCit2YXIgbWF4X2ludCA9IDIxNDc0ODM2NDc7CisKK3ZhciBtaW5faW50ID0g
LTIxNDc0ODM2NDg7CisKK2V4cG9ydHMuemVybyAgICAgID0gemVybzsKK2V4cG9ydHMub25lICAg
ICAgID0gb25lOworZXhwb3J0cy5taW51c19vbmUgPSBtaW51c19vbmU7CitleHBvcnRzLnN1Y2Mg
ICAgICA9IHN1Y2M7CitleHBvcnRzLnByZWQgICAgICA9IHByZWQ7CitleHBvcnRzLmFicyAgICAg
ICA9IGFiczsKK2V4cG9ydHMubWF4X2ludCAgID0gbWF4X2ludDsKK2V4cG9ydHMubWluX2ludCAg
ID0gbWluX2ludDsKK2V4cG9ydHMubG9nbm90ICAgID0gbG9nbm90OworZXhwb3J0cy50b19zdHJp
bmcgPSB0b19zdHJpbmc7CitleHBvcnRzLmNvbXBhcmUgICA9IGNvbXBhcmU7CisvKiBObyBzaWRl
IGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGludDMyLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1
cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2ludDY0J10gPSBmdW5jdGlvbigp
IHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpbnQ2NC5qcyAv
Ly8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9pbnQ2NCAgPSByZXF1aXJlKCIuL2Nh
bWxfaW50NjQiKTsKK3ZhciBDYW1sX2Zvcm1hdCA9IHJlcXVpcmUoIi4vY2FtbF9mb3JtYXQiKTsK
KworZnVuY3Rpb24gc3VjYyhuKSB7CisgIHJldHVybiBDYW1sX2ludDY0LmFkZChuLCAvKiBpbnQ2
NCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAvKiBsbyAqLzEK
KyAgICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBwcmVkKG4pIHsKKyAgcmV0dXJuIENhbWxf
aW50NjQuc3ViKG4sIC8qIGludDY0ICovWworICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAg
ICAgICAgICAgIC8qIGxvICovMQorICAgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGFicyhu
KSB7CisgIGlmIChDYW1sX2ludDY0LmdlKG4sIC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhp
ICovMCwKKyAgICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAgXSkpIHsKKyAgICByZXR1cm4gbjsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2FtbF9pbnQ2NC5uZWcobik7CisgIH0KK30KKwor
ZnVuY3Rpb24gbG9nbm90KG4pIHsKKyAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgIC8q
IGhpICovblswXSBeIC8qIGhpICovLTEsCisgICAgICAgICAgLyogbG8gKi8oKG5bMV0gXiAvKiBs
byAqLzQyOTQ5NjcyOTUpID4+PiAwKQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0b19zdHJp
bmcobikgeworICByZXR1cm4gQ2FtbF9mb3JtYXQuY2FtbF9pbnQ2NF9mb3JtYXQoIiVkIiwgbik7
Cit9CisKK3ZhciBjb21wYXJlID0gQ2FtbF9pbnQ2NC5jb21wYXJlOworCit2YXIgemVybyA9IC8q
IGludDY0ICovWworICAvKiBoaSAqLzAsCisgIC8qIGxvICovMAorXTsKKwordmFyIG9uZSA9IC8q
IGludDY0ICovWworICAvKiBoaSAqLzAsCisgIC8qIGxvICovMQorXTsKKwordmFyIG1pbnVzX29u
ZSA9IC8qIGludDY0ICovWworICAvKiBoaSAqLy0xLAorICAvKiBsbyAqLzQyOTQ5NjcyOTUKK107
CisKK3ZhciBtYXhfaW50ID0gLyogaW50NjQgKi9bCisgIC8qIGhpICovMjE0NzQ4MzY0NywKKyAg
LyogbG8gKi80Mjk0OTY3Mjk1CitdOworCit2YXIgbWluX2ludCA9IC8qIGludDY0ICovWworICAv
KiBoaSAqLy0yMTQ3NDgzNjQ4LAorICAvKiBsbyAqLzAKK107CisKK2V4cG9ydHMuemVybyAgICAg
ID0gemVybzsKK2V4cG9ydHMub25lICAgICAgID0gb25lOworZXhwb3J0cy5taW51c19vbmUgPSBt
aW51c19vbmU7CitleHBvcnRzLnN1Y2MgICAgICA9IHN1Y2M7CitleHBvcnRzLnByZWQgICAgICA9
IHByZWQ7CitleHBvcnRzLmFicyAgICAgICA9IGFiczsKK2V4cG9ydHMubWF4X2ludCAgID0gbWF4
X2ludDsKK2V4cG9ydHMubWluX2ludCAgID0gbWluX2ludDsKK2V4cG9ydHMubG9nbm90ICAgID0g
bG9nbm90OworZXhwb3J0cy50b19zdHJpbmcgPSB0b19zdHJpbmc7CitleHBvcnRzLmNvbXBhcmUg
ICA9IGNvbXBhcmU7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGludDY0
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ2ludCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2YgaW50LmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBU
IFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIEN1cnJ5ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsK
K3ZhciBDYW1sX29iaiAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2Jq
Iik7Cit2YXIgUGVydmFzaXZlcyAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2
YXNpdmVzIik7Cit2YXIgQ2FtbF9zdHJpbmcgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9q
cy9jYW1sX3N0cmluZyIpOwordmFyIE51bWVyaWNfZXJyb3IgPSByZXF1aXJlKCIuL251bWVyaWNf
ZXJyb3IiKTsKKworZnVuY3Rpb24gTWFrZShSZXApIHsKKyAgdmFyIGNtcF91ID0gZnVuY3Rpb24g
KHgsIG9wLCB5KSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKG9wLCBDdXJyeS5fMihSZXBbLyogYWRk
ICovNl0sIHgsIFJlcFsvKiBtaW5faW50ICovNF0pLCBDdXJyeS5fMihSZXBbLyogYWRkICovNl0s
IHksIFJlcFsvKiBtaW5faW50ICovNF0pKTsKKyAgfTsKKyAgdmFyIGRpdnJlbV91ID0gZnVuY3Rp
b24gKG4sIGQpIHsKKyAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChkLCBSZXBbLyogemVybyAq
LzBdKSkgeworICAgICAgdGhyb3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciB0ID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X3Jp
Z2h0ICovMTZdLCBkLCBSZXBbLyogYml0d2lkdGggKi8yMV0gLSAxIHwgMCk7CisgICAgICB2YXIg
biRwcmltZSA9IEN1cnJ5Ll8yKFJlcFsvKiBsb2dhbmQgKi8xMV0sIG4sIEN1cnJ5Ll8xKFJlcFsv
KiBsb2dub3QgKi8xMl0sIHQpKTsKKyAgICAgIHZhciBxID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0
X2xlZnQgKi8xNV0sIEN1cnJ5Ll8yKFJlcFsvKiBkaXYgKi85XSwgQ3VycnkuXzIoUmVwWy8qIHNo
aWZ0X3JpZ2h0X2xvZ2ljYWwgKi8xN10sIG4kcHJpbWUsIDEpLCBkKSwgMSk7CisgICAgICB2YXIg
ciA9IEN1cnJ5Ll8yKFJlcFsvKiBzdWIgKi83XSwgbiwgQ3VycnkuXzIoUmVwWy8qIG11bCAqLzhd
LCBxLCBkKSk7CisgICAgICBpZiAoY21wX3UociwgQ2FtbF9vYmouY2FtbF9sZXNzdGhhbiwgZCkp
IHsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIHEsCisgICAg
ICAgICAgICAgICAgcgorICAgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICBDdXJyeS5fMihSZXBb
LyogYWRkICovNl0sIHEsIFJlcFsvKiBvbmUgKi8xXSksCisgICAgICAgICAgICAgICAgQ3Vycnku
XzIoUmVwWy8qIHN1YiAqLzddLCByLCBkKQorICAgICAgICAgICAgICBdOworICAgICAgfQorICAg
IH0KKyAgfTsKKyAgdmFyIG9mX2JpdHMgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB4Owor
ICB9OworICB2YXIgdG9fYml0cyA9IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0dXJuIHg7CisgIH07
CisgIHZhciB6ZXJvID0gUmVwWy8qIHplcm8gKi8wXTsKKyAgdmFyIG9uZSA9IFJlcFsvKiBvbmUg
Ki8xXTsKKyAgdmFyIHRlbiA9IEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0sIDEwKTsKKyAg
dmFyIGFkZCA9IFJlcFsvKiBhZGQgKi82XTsKKyAgdmFyIHN1YiA9IFJlcFsvKiBzdWIgKi83XTsK
KyAgdmFyIG11bCA9IFJlcFsvKiBtdWwgKi84XTsKKyAgdmFyIGRpdl9zID0gZnVuY3Rpb24gKHgs
IHkpIHsKKyAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbCh5LCBSZXBbLyogemVybyAqLzBdKSkg
eworICAgICAgdGhyb3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvOworICAgIH0K
KyAgICBlbHNlIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKHgsIFJlcFsvKiBtaW5faW50ICovNF0p
ICYmIENhbWxfb2JqLmNhbWxfZXF1YWwoeSwgUmVwWy8qIG1pbnVzX29uZSAqLzJdKSkgeworICAg
ICAgdGhyb3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyT3ZlcmZsb3c7CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgcmV0dXJuIEN1cnJ5Ll8yKFJlcFsvKiBkaXYgKi85XSwgeCwgeSk7CisgICAgfQor
ICB9OworICB2YXIgZGl2X3UgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiBkaXZyZW1f
dSh4LCB5KVswXTsKKyAgfTsKKyAgdmFyIHJlbV9zID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICBp
ZiAoQ2FtbF9vYmouY2FtbF9lcXVhbCh5LCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgdGhy
b3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvOworICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogcmVtICovMTBdLCB4LCB5KTsKKyAgICB9Cisg
IH07CisgIHZhciByZW1fdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGRpdnJlbV91
KHgsIHkpWzFdOworICB9OworICB2YXIgYW5kXyA9IFJlcFsvKiBsb2dhbmQgKi8xMV07CisgIHZh
ciBvcl8gPSBSZXBbLyogbG9nb3IgKi8xM107CisgIHZhciB4b3IgPSBSZXBbLyogbG9neG9yICov
MTRdOworICB2YXIgc2hpZnQgPSBmdW5jdGlvbiAoZiwgeCwgeSkgeworICAgIHJldHVybiBDdXJy
eS5fMihmLCB4LCBDdXJyeS5fMShSZXBbLyogdG9faW50ICovMTldLCBDdXJyeS5fMihSZXBbLyog
bG9nYW5kICovMTFdLCB5LCBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCBSZXBbLyogYml0
d2lkdGggKi8yMV0gLSAxIHwgMCkpKSk7CisgIH07CisgIHZhciBzaGwgPSBmdW5jdGlvbiAoeCwg
eSkgeworICAgIHJldHVybiBzaGlmdChSZXBbLyogc2hpZnRfbGVmdCAqLzE1XSwgeCwgeSk7Cisg
IH07CisgIHZhciBzaHJfcyA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIHNoaWZ0KFJl
cFsvKiBzaGlmdF9yaWdodCAqLzE2XSwgeCwgeSk7CisgIH07CisgIHZhciBzaHJfdSA9IGZ1bmN0
aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIHNoaWZ0KFJlcFsvKiBzaGlmdF9yaWdodF9sb2dpY2Fs
ICovMTddLCB4LCB5KTsKKyAgfTsKKyAgdmFyIGNsYW1wX3JvdGF0ZV9jb3VudCA9IGZ1bmN0aW9u
IChuKSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKFJlcFsvKiB0b19pbnQgKi8xOV0sIEN1cnJ5Ll8y
KFJlcFsvKiBsb2dhbmQgKi8xMV0sIG4sIEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0sIFJl
cFsvKiBiaXR3aWR0aCAqLzIxXSAtIDEgfCAwKSkpOworICB9OworICB2YXIgcm90bCA9IGZ1bmN0
aW9uICh4LCB5KSB7CisgICAgdmFyIG4gPSBjbGFtcF9yb3RhdGVfY291bnQoeSk7CisgICAgcmV0
dXJuIEN1cnJ5Ll8yKG9yXywgQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X2xlZnQgKi8xNV0sIHgsIG4p
LCBDdXJyeS5fMihSZXBbLyogc2hpZnRfcmlnaHRfbG9naWNhbCAqLzE3XSwgeCwgUmVwWy8qIGJp
dHdpZHRoICovMjFdIC0gbiB8IDApKTsKKyAgfTsKKyAgdmFyIHJvdHIgPSBmdW5jdGlvbiAoeCwg
eSkgeworICAgIHZhciBuID0gY2xhbXBfcm90YXRlX2NvdW50KHkpOworICAgIHJldHVybiBDdXJy
eS5fMihvcl8sIEN1cnJ5Ll8yKFJlcFsvKiBzaGlmdF9yaWdodF9sb2dpY2FsICovMTddLCB4LCBu
KSwgQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X2xlZnQgKi8xNV0sIHgsIFJlcFsvKiBiaXR3aWR0aCAq
LzIxXSAtIG4gfCAwKSk7CisgIH07CisgIHZhciBjbHogPSBmdW5jdGlvbiAoeCkgeworICAgIHZh
ciBsb29wID0gZnVuY3Rpb24gKF9hY2MsIF9uKSB7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAg
ICAgIHZhciBuID0gX247CisgICAgICAgIHZhciBhY2MgPSBfYWNjOworICAgICAgICBpZiAoQ2Ft
bF9vYmouY2FtbF9lcXVhbChuLCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgICAgIHJldHVy
biBSZXBbLyogYml0d2lkdGggKi8yMV07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoQ2Ft
bF9vYmouY2FtbF9lcXVhbChDdXJyeS5fMihhbmRfLCBuLCBDdXJyeS5fMihSZXBbLyogc2hpZnRf
bGVmdCAqLzE1XSwgUmVwWy8qIG9uZSAqLzFdLCBSZXBbLyogYml0d2lkdGggKi8yMV0gLSAxIHwg
MCkpLCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgICAgIF9uID0gQ3VycnkuXzIoUmVwWy8q
IHNoaWZ0X2xlZnQgKi8xNV0sIG4sIDEpOworICAgICAgICAgIF9hY2MgPSAxICsgYWNjIHwgMDsK
KyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgcmV0dXJuIGFjYzsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9Owor
ICAgIHJldHVybiBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCBsb29wKDAsIHgpKTsKKyAg
fTsKKyAgdmFyIGN0eiA9IGZ1bmN0aW9uICh4KSB7CisgICAgdmFyIGxvb3AgPSBmdW5jdGlvbiAo
X2FjYywgX24pIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFyIG4gPSBfbjsKKyAg
ICAgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgICAgIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKG4s
IFJlcFsvKiB6ZXJvICovMF0pKSB7CisgICAgICAgICAgcmV0dXJuIFJlcFsvKiBiaXR3aWR0aCAq
LzIxXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKEN1
cnJ5Ll8yKGFuZF8sIG4sIFJlcFsvKiBvbmUgKi8xXSksIFJlcFsvKiBvbmUgKi8xXSkpIHsKKyAg
ICAgICAgICByZXR1cm4gYWNjOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
IF9uID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKi8xN10sIG4sIDEpOwor
ICAgICAgICAgIF9hY2MgPSAxICsgYWNjIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgCisgICAgICAgIH0KKyAgICAgIH07CisgICAgfTsKKyAgICByZXR1cm4gQ3VycnkuXzEo
UmVwWy8qIG9mX2ludCAqLzE4XSwgbG9vcCgwLCB4KSk7CisgIH07CisgIHZhciBwb3BjbnQgPSBm
dW5jdGlvbiAoeCkgeworICAgIHZhciBsb29wID0gZnVuY3Rpb24gKF9hY2MsIF9pLCBfbikgewor
ICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIgbiA9IF9uOworICAgICAgICB2YXIgaSA9
IF9pOworICAgICAgICB2YXIgYWNjID0gX2FjYzsKKyAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxf
ZXF1YWwobiwgUmVwWy8qIHplcm8gKi8wXSkpIHsKKyAgICAgICAgICByZXR1cm4gYWNjOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBhY2MkcHJpbWUgPSBDYW1sX29i
ai5jYW1sX2VxdWFsKEN1cnJ5Ll8yKGFuZF8sIG4sIFJlcFsvKiBvbmUgKi8xXSksIFJlcFsvKiBv
bmUgKi8xXSkgPyBhY2MgKyAxIHwgMCA6IGFjYzsKKyAgICAgICAgICBfbiA9IEN1cnJ5Ll8yKFJl
cFsvKiBzaGlmdF9yaWdodF9sb2dpY2FsICovMTddLCBuLCAxKTsKKyAgICAgICAgICBfaSA9IGkg
LSAxIHwgMDsKKyAgICAgICAgICBfYWNjID0gYWNjJHByaW1lOworICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHJldHVybiBD
dXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCBsb29wKDAsIFJlcFsvKiBiaXR3aWR0aCAqLzIx
XSwgeCkpOworICB9OworICB2YXIgZXF6ID0gZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1cm4gQ2Ft
bF9vYmouY2FtbF9lcXVhbCh4LCBSZXBbLyogemVybyAqLzBdKTsKKyAgfTsKKyAgdmFyIGVxID0g
Q2FtbF9vYmouY2FtbF9lcXVhbDsKKyAgdmFyIG5lID0gQ2FtbF9vYmouY2FtbF9ub3RlcXVhbDsK
KyAgdmFyIGx0X3MgPSBDYW1sX29iai5jYW1sX2xlc3N0aGFuOworICB2YXIgbHRfdSA9IGZ1bmN0
aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxfb2JqLmNhbWxfbGVzc3RoYW4s
IHkpOworICB9OworICB2YXIgbGVfcyA9IENhbWxfb2JqLmNhbWxfbGVzc2VxdWFsOworICB2YXIg
bGVfdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxfb2JqLmNh
bWxfbGVzc2VxdWFsLCB5KTsKKyAgfTsKKyAgdmFyIGd0X3MgPSBDYW1sX29iai5jYW1sX2dyZWF0
ZXJ0aGFuOworICB2YXIgZ3RfdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNtcF91
KHgsIENhbWxfb2JqLmNhbWxfZ3JlYXRlcnRoYW4sIHkpOworICB9OworICB2YXIgZ2VfcyA9IENh
bWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsOworICB2YXIgZ2VfdSA9IGZ1bmN0aW9uICh4LCB5KSB7
CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsLCB5KTsKKyAg
fTsKKyAgdmFyIG9mX2ludF9zID0gUmVwWy8qIG9mX2ludCAqLzE4XTsKKyAgdmFyIG9mX2ludF91
ID0gZnVuY3Rpb24gKGkpIHsKKyAgICByZXR1cm4gQ3VycnkuXzIoYW5kXywgQ3VycnkuXzEoUmVw
Wy8qIG9mX2ludCAqLzE4XSwgaSksIEN1cnJ5Ll8yKG9yXywgc2hsKEN1cnJ5Ll8xKFJlcFsvKiBv
Zl9pbnQgKi8xOF0sIFBlcnZhc2l2ZXMubWF4X2ludCksIG9uZSksIG9uZSkpOworICB9OworICB2
YXIgdG9fc3RyaW5nX3MgPSBSZXBbLyogdG9fc3RyaW5nICovMjBdOworICB2YXIgdG9fc3RyaW5n
X3UgPSBmdW5jdGlvbiAoaSkgeworICAgIGlmIChDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbChp
LCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8xKHRvX3N0cmluZ19z
LCBpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gQ3VycnkuXzEodG9fc3RyaW5n
X3MsIGRpdl91KGksIHRlbikpICsgQ3VycnkuXzEodG9fc3RyaW5nX3MsIHJlbV91KGksIHRlbikp
OworICAgIH0KKyAgfTsKKyAgdmFyICQkcmVxdWlyZSA9IGZ1bmN0aW9uIChiKSB7CisgICAgaWYg
KGIpIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBQ
ZXJ2YXNpdmVzLmZhaWx3aXRoKCJvZl9zdHJpbmciKTsKKyAgICB9CisgIH07CisgIHZhciBkZWNf
ZGlnaXQgPSBmdW5jdGlvbiAoYykgeworICAgIGlmIChjID4gNTcgfHwgYyA8IDQ4KSB7CisgICAg
ICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgib2Zfc3RyaW5nIik7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIGMgLSAvKiAiMCIgKi80OCB8IDA7CisgICAgfQorICB9OworICB2
YXIgaGV4X2RpZ2l0ID0gZnVuY3Rpb24gKGMpIHsKKyAgICBpZiAoYyA+PSA2NSkgeworICAgICAg
aWYgKGMgPj0gOTcpIHsKKyAgICAgICAgaWYgKGMgPj0gMTAzKSB7CisgICAgICAgICAgcmV0dXJu
IFBlcnZhc2l2ZXMuZmFpbHdpdGgoIm9mX3N0cmluZyIpOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiAoMTAgKyBjIHwgMCkgLSAvKiAiYSIgKi85NyB8IDA7Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGMgPj0gNzEpIHsKKyAgICAgICAgcmV0
dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoIm9mX3N0cmluZyIpOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHJldHVybiAoMTAgKyBjIHwgMCkgLSAvKiAiQSIgKi82NSB8IDA7CisgICAg
ICB9CisgICAgfQorICAgIGVsc2UgaWYgKGMgPiA1NyB8fCBjIDwgNDgpIHsKKyAgICAgIHJldHVy
biBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJvZl9zdHJpbmciKTsKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICByZXR1cm4gYyAtIC8qICIwIiAqLzQ4IHwgMDsKKyAgICB9CisgIH07CisgIHZhciBtYXRj
aCA9IGRpdnJlbV91KFJlcFsvKiBtaW51c19vbmUgKi8yXSwgdGVuKTsKKyAgdmFyIG1heF9sb3dl
ciA9IG1hdGNoWzFdOworICB2YXIgbWF4X3VwcGVyID0gbWF0Y2hbMF07CisgIHZhciBvZl9zdHJp
bmcgPSBmdW5jdGlvbiAocykgeworICAgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgICB2YXIgcGFy
c2VfaW50ID0gZnVuY3Rpb24gKGkpIHsKKyAgICAgICQkcmVxdWlyZSgrKChsZW4gLSBpIHwgMCkg
PiAwKSk7CisgICAgICBpZiAoKGkgKyAyIHwgMCkgPD0gbGVuICYmIENhbWxfc3RyaW5nLmdldChz
LCBpKSA9PT0gLyogIjAiICovNDggJiYgQ2FtbF9zdHJpbmcuZ2V0KHMsIGkgKyAxIHwgMCkgPT09
IC8qICJ4IiAqLzEyMCkgeworICAgICAgICB2YXIgX2kgPSBpICsgMiB8IDA7CisgICAgICAgIHZh
ciBfbnVtID0gUmVwWy8qIHplcm8gKi8wXTsKKyAgICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAg
ICAgIHZhciBudW0gPSBfbnVtOworICAgICAgICAgIHZhciBpJDEgPSBfaTsKKyAgICAgICAgICBp
ZiAoaSQxID09PSBsZW4pIHsKKyAgICAgICAgICAgIHJldHVybiBudW07CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIGRpZ2l0ID0gQ3VycnkuXzEoUmVwWy8q
IG9mX2ludCAqLzE4XSwgaGV4X2RpZ2l0KENhbWxfc3RyaW5nLmdldChzLCBpJDEpKSk7CisgICAg
ICAgICAgICAkJHJlcXVpcmUobGVfdShudW0sIHNocl91KFJlcFsvKiBtaW51c19vbmUgKi8yXSwg
Q3VycnkuXzEoUmVwWy8qIG9mX2ludCAqLzE4XSwgNCkpKSk7CisgICAgICAgICAgICBfbnVtID0g
Q3VycnkuXzIoUmVwWy8qIGxvZ29yICovMTNdLCBDdXJyeS5fMihSZXBbLyogc2hpZnRfbGVmdCAq
LzE1XSwgbnVtLCA0KSwgZGlnaXQpOworICAgICAgICAgICAgX2kgPSBpJDEgKyAxIHwgMDsKKyAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAg
fTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgX2kkMSA9IGk7CisgICAgICAg
IHZhciBfbnVtJDEgPSBSZXBbLyogemVybyAqLzBdOworICAgICAgICB3aGlsZSh0cnVlKSB7Cisg
ICAgICAgICAgdmFyIG51bSQxID0gX251bSQxOworICAgICAgICAgIHZhciBpJDIgPSBfaSQxOwor
ICAgICAgICAgIGlmIChpJDIgPT09IGxlbikgeworICAgICAgICAgICAgcmV0dXJuIG51bSQxOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBkaWdpdCQxID0g
Q3VycnkuXzEoUmVwWy8qIG9mX2ludCAqLzE4XSwgZGVjX2RpZ2l0KENhbWxfc3RyaW5nLmdldChz
LCBpJDIpKSk7CisgICAgICAgICAgICAkJHJlcXVpcmUobHRfdShudW0kMSwgbWF4X3VwcGVyKSB8
fCBDYW1sX29iai5jYW1sX2VxdWFsKG51bSQxLCBtYXhfdXBwZXIpICYmIGxlX3UoZGlnaXQkMSwg
bWF4X2xvd2VyKSk7CisgICAgICAgICAgICBfbnVtJDEgPSBDdXJyeS5fMihSZXBbLyogYWRkICov
Nl0sIEN1cnJ5Ll8yKFJlcFsvKiBtdWwgKi84XSwgbnVtJDEsIHRlbiksIGRpZ2l0JDEpOworICAg
ICAgICAgICAgX2kkMSA9IGkkMiArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgfQorICAgIH07CisgICAg
JCRyZXF1aXJlKCsobGVuID4gMCkpOworICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChz
LCAwKTsKKyAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQzIHwgMDsKKyAgICBpZiAoc3dpdGNo
ZXIgPiAyIHx8IHN3aXRjaGVyIDwgMCkgeworICAgICAgcmV0dXJuIHBhcnNlX2ludCgwKTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICBzd2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgIGNhc2Ug
MCA6IAorICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2ludCgxKTsKKyAgICAgICAgY2FzZSAxIDog
CisgICAgICAgICAgICByZXR1cm4gcGFyc2VfaW50KDApOworICAgICAgICBjYXNlIDIgOiAKKyAg
ICAgICAgICAgIHZhciBuID0gcGFyc2VfaW50KDEpOworICAgICAgICAgICAgJCRyZXF1aXJlKENh
bWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsKEN1cnJ5Ll8yKFJlcFsvKiBzdWIgKi83XSwgbiwgUmVw
Wy8qIG9uZSAqLzFdKSwgUmVwWy8qIG1pbnVzX29uZSAqLzJdKSk7CisgICAgICAgICAgICByZXR1
cm4gQ3VycnkuXzEoUmVwWy8qIG5lZyAqLzVdLCBuKTsKKyAgICAgICAgCisgICAgICB9CisgICAg
fQorICB9OworICB2YXIgb2Zfc3RyaW5nX3MgPSBmdW5jdGlvbiAocykgeworICAgIHZhciBuID0g
b2Zfc3RyaW5nKHMpOworICAgICQkcmVxdWlyZSgrKENhbWxfc3RyaW5nLmdldChzLCAwKSA9PT0g
LyogIi0iICovNDUpIHx8IENhbWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsKG4sIFJlcFsvKiB6ZXJv
ICovMF0pKTsKKyAgICByZXR1cm4gbjsKKyAgfTsKKyAgdmFyIG9mX3N0cmluZ191ID0gZnVuY3Rp
b24gKHMpIHsKKyAgICB2YXIgbiA9IG9mX3N0cmluZyhzKTsKKyAgICAkJHJlcXVpcmUoKyhDYW1s
X3N0cmluZy5nZXQocywgMCkgIT09IC8qICIrIiAqLzQzICYmIENhbWxfc3RyaW5nLmdldChzLCAw
KSAhPT0gLyogIi0iICovNDUpKTsKKyAgICByZXR1cm4gbjsKKyAgfTsKKyAgcmV0dXJuIC8qIG1v
ZHVsZSAqL1sKKyAgICAgICAgICAvKiBvZl9iaXRzICovb2ZfYml0cywKKyAgICAgICAgICAvKiB0
b19iaXRzICovdG9fYml0cywKKyAgICAgICAgICAvKiB6ZXJvICovemVybywKKyAgICAgICAgICAv
KiBhZGQgKi9hZGQsCisgICAgICAgICAgLyogc3ViICovc3ViLAorICAgICAgICAgIC8qIG11bCAq
L211bCwKKyAgICAgICAgICAvKiBkaXZfcyAqL2Rpdl9zLAorICAgICAgICAgIC8qIGRpdl91ICov
ZGl2X3UsCisgICAgICAgICAgLyogcmVtX3MgKi9yZW1fcywKKyAgICAgICAgICAvKiByZW1fdSAq
L3JlbV91LAorICAgICAgICAgIC8qIGFuZF8gKi9hbmRfLAorICAgICAgICAgIC8qIG9yXyAqL29y
XywKKyAgICAgICAgICAvKiB4b3IgKi94b3IsCisgICAgICAgICAgLyogc2hsICovc2hsLAorICAg
ICAgICAgIC8qIHNocl9zICovc2hyX3MsCisgICAgICAgICAgLyogc2hyX3UgKi9zaHJfdSwKKyAg
ICAgICAgICAvKiByb3RsICovcm90bCwKKyAgICAgICAgICAvKiByb3RyICovcm90ciwKKyAgICAg
ICAgICAvKiBjbHogKi9jbHosCisgICAgICAgICAgLyogY3R6ICovY3R6LAorICAgICAgICAgIC8q
IHBvcGNudCAqL3BvcGNudCwKKyAgICAgICAgICAvKiBlcXogKi9lcXosCisgICAgICAgICAgLyog
ZXEgKi9lcSwKKyAgICAgICAgICAvKiBuZSAqL25lLAorICAgICAgICAgIC8qIGx0X3MgKi9sdF9z
LAorICAgICAgICAgIC8qIGx0X3UgKi9sdF91LAorICAgICAgICAgIC8qIGxlX3MgKi9sZV9zLAor
ICAgICAgICAgIC8qIGxlX3UgKi9sZV91LAorICAgICAgICAgIC8qIGd0X3MgKi9ndF9zLAorICAg
ICAgICAgIC8qIGd0X3UgKi9ndF91LAorICAgICAgICAgIC8qIGdlX3MgKi9nZV9zLAorICAgICAg
ICAgIC8qIGdlX3UgKi9nZV91LAorICAgICAgICAgIC8qIG9mX2ludF9zICovb2ZfaW50X3MsCisg
ICAgICAgICAgLyogb2ZfaW50X3UgKi9vZl9pbnRfdSwKKyAgICAgICAgICAvKiBvZl9zdHJpbmdf
cyAqL29mX3N0cmluZ19zLAorICAgICAgICAgIC8qIG9mX3N0cmluZ191ICovb2Zfc3RyaW5nX3Us
CisgICAgICAgICAgLyogb2Zfc3RyaW5nICovb2Zfc3RyaW5nLAorICAgICAgICAgIC8qIHRvX3N0
cmluZ19zICovdG9fc3RyaW5nX3MsCisgICAgICAgICAgLyogdG9fc3RyaW5nX3UgKi90b19zdHJp
bmdfdQorICAgICAgICBdOworfQorCitleHBvcnRzLk1ha2UgPSBNYWtlOworLyogTm8gc2lkZSBl
ZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBpbnQuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBl
eHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnbGV4ZXInXSA9IGZ1bmN0aW9uKCkgewor
wqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGxleGVyLmpzIC8vLy8v
Ly8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0Ug
RURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEYzMiAgICAgICAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9mMzIiKTsKK3ZhciBGNjQgICAgICAgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vZjY0Iik7Cit2YXIgSTMyICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIu
L2kzMiIpOwordmFyIEk2NCAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9pNjQiKTsK
K3ZhciBMaWIgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGliIik7Cit2YXIgQ2hh
ciAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2hhciIp
OwordmFyIEJsb2NrICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGli
L2pzL2Jsb2NrIik7Cit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1w
bGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3ZhciBCdWZmZXIgICAgICAgICAgICAgICAgICA9IHJl
cXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9idWZmZXIiKTsKK3ZhciBMZXhpbmcgICAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9sZXhpbmciKTsKK3ZhciBTY3Jp
cHQgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc2NyaXB0Iik7Cit2YXIgU291cmNlICAg
ICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3NvdXJjZSIpOwordmFyICQkU3RyaW5nICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwordmFyIE9w
ZXJhdG9ycyAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9vcGVyYXRvcnMiKTsKK3ZhciBDYW1s
X2Zvcm1hdCAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zv
cm1hdCIpOwordmFyIENhbWxfc3RyaW5nICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZv
cm0vbGliL2pzL2NhbWxfc3RyaW5nIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSBy
ZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKwor
ZnVuY3Rpb24gY29udmVydF9wb3MocG9zKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgLyogZmlsZSAqL3Bvc1svKiBwb3NfZm5hbWUgKi8wXSwKKyAgICAgICAgICAvKiBsaW5l
ICovcG9zWy8qIHBvc19sbnVtICovMV0sCisgICAgICAgICAgLyogY29sdW1uICovcG9zWy8qIHBv
c19jbnVtICovM10gLSBwb3NbLyogcG9zX2JvbCAqLzJdIHwgMAorICAgICAgICBdOworfQorCitm
dW5jdGlvbiByZWdpb24obGV4YnVmKSB7CisgIHZhciBsZWZ0ID0gY29udmVydF9wb3MoTGV4aW5n
LmxleGVtZV9zdGFydF9wKGxleGJ1ZikpOworICB2YXIgcmlnaHQgPSBjb252ZXJ0X3BvcyhMZXhp
bmcubGV4ZW1lX2VuZF9wKGxleGJ1ZikpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAg
ICAgIC8qIGxlZnQgKi9sZWZ0LAorICAgICAgICAgIC8qIHJpZ2h0ICovcmlnaHQKKyAgICAgICAg
XTsKK30KKworZnVuY3Rpb24gZXJyb3IobGV4YnVmLCBtc2cpIHsKKyAgdGhyb3cgWworICAgICAg
ICBTY3JpcHQuU3ludGF4LAorICAgICAgICByZWdpb24obGV4YnVmKSwKKyAgICAgICAgbXNnCisg
ICAgICBdOworfQorCitmdW5jdGlvbiBlcnJvcl9uZXN0KHN0YXJ0LCBsZXhidWYsIG1zZykgewor
ICBsZXhidWZbLyogbGV4X3N0YXJ0X3AgKi8xMF0gPSBzdGFydDsKKyAgcmV0dXJuIGVycm9yKGxl
eGJ1ZiwgbXNnKTsKK30KKworZnVuY3Rpb24gdGV4dChzKSB7CisgIHZhciBiID0gQnVmZmVyLmNy
ZWF0ZShzLmxlbmd0aCk7CisgIHZhciBpID0gMTsKKyAgd2hpbGUoaSA8IChzLmxlbmd0aCAtIDEg
fCAwKSkgeworICAgIHZhciBjOworICAgIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgIT09IC8q
ICJcXCIgKi85MikgeworICAgICAgYyA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICB9Cisg
ICAgZWxzZSB7CisgICAgICBpID0gaSArIDEgfCAwOworICAgICAgdmFyIGQgPSBDYW1sX3N0cmlu
Zy5nZXQocywgaSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICBpZiAoZCA+PSA5Mikgewor
ICAgICAgICBpZiAoZCAhPT0gMTEwKSB7CisgICAgICAgICAgaWYgKGQgIT09IDExNikgeworICAg
ICAgICAgICAgaWYgKGQgPj0gOTMpIHsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgYyA9IC8qICJcXCIgKi85
MjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBjID0gLyogIlx0IiAqLzk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIGMgPSAvKiAiXG4iICovMTA7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKGQgIT09IDM0KSB7CisgICAgICAgIGlmIChkICE9PSAzOSkgeworICAgICAg
ICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGMgPSAv
KiAiJyIgKi8zOTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGMg
PSAvKiAiXCIiICovMzQ7CisgICAgICB9CisgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAg
ICBpID0gaSArIDEgfCAwOworICAgICAgICBjID0gQ2hhci5jaHIoQ2FtbF9mb3JtYXQuY2FtbF9p
bnRfb2Zfc3RyaW5nKCIweCIgKyAoJCRTdHJpbmcubWFrZSgxLCBkKSArICQkU3RyaW5nLm1ha2Uo
MSwgQ2FtbF9zdHJpbmcuZ2V0KHMsIGkpKSkpKTsKKyAgICAgIH0KKyAgICAgIAorICAgIH0KKyAg
ICBCdWZmZXIuYWRkX2NoYXIoYiwgYyk7CisgICAgaSA9IGkgKyAxIHwgMDsKKyAgfTsKKyAgcmV0
dXJuIEJ1ZmZlci5jb250ZW50cyhiKTsKK30KKworZnVuY3Rpb24gdmFsdWVfdHlwZShwYXJhbSkg
eworICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAiZjMyIiA6IAorICAgICAgICByZXR1cm4g
LyogRjMyVHlwZSAqLzI7CisgICAgY2FzZSAiZjY0IiA6IAorICAgICAgICByZXR1cm4gLyogRjY0
VHlwZSAqLzM7CisgICAgY2FzZSAiaTMyIiA6IAorICAgICAgICByZXR1cm4gLyogSTMyVHlwZSAq
LzA7CisgICAgY2FzZSAiaTY0IiA6IAorICAgICAgICByZXR1cm4gLyogSTY0VHlwZSAqLzE7Cisg
ICAgZGVmYXVsdDoKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAidGV4
dC9sZXhlci5tbGwiLAorICAgICAgICAgICAgICA0NSwKKyAgICAgICAgICAgICAgOQorICAgICAg
ICAgICAgXQorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gaW50b3AodCwgaTMyLCBp
NjQpIHsKKyAgc3dpdGNoICh0KSB7CisgICAgY2FzZSAiaTMyIiA6IAorICAgICAgICByZXR1cm4g
aTMyOworICAgIGNhc2UgImk2NCIgOiAKKyAgICAgICAgcmV0dXJuIGk2NDsKKyAgICBkZWZhdWx0
OgorICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNz
ZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICJ0ZXh0L2xleGVyLm1s
bCIsCisgICAgICAgICAgICAgIDUxLAorICAgICAgICAgICAgICA5CisgICAgICAgICAgICBdCisg
ICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBmbG9hdG9wKHQsIGYzMiwgZjY0KSB7Cisg
IHN3aXRjaCAodCkgeworICAgIGNhc2UgImYzMiIgOiAKKyAgICAgICAgcmV0dXJuIGYzMjsKKyAg
ICBjYXNlICJmNjQiIDogCisgICAgICAgIHJldHVybiBmNjQ7CisgICAgZGVmYXVsdDoKKyAgICAg
IHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWls
dXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAorICAg
ICAgICAgICAgICA1NywKKyAgICAgICAgICAgICAgOQorICAgICAgICAgICAgXQorICAgICAgICAg
IF07CisgIH0KK30KKworZnVuY3Rpb24gbnVtb3AodCwgaTMyLCBpNjQsIGYzMiwgZjY0KSB7Cisg
IHN3aXRjaCAodCkgeworICAgIGNhc2UgImYzMiIgOiAKKyAgICAgICAgcmV0dXJuIGYzMjsKKyAg
ICBjYXNlICJmNjQiIDogCisgICAgICAgIHJldHVybiBmNjQ7CisgICAgY2FzZSAiaTMyIiA6IAor
ICAgICAgICByZXR1cm4gaTMyOworICAgIGNhc2UgImk2NCIgOiAKKyAgICAgICAgcmV0dXJuIGk2
NDsKKyAgICBkZWZhdWx0OgorICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICJ0ZXh0L2xleGVyLm1sbCIsCisgICAgICAgICAgICAgIDY1LAorICAgICAgICAgICAgICA5Cisg
ICAgICAgICAgICBdCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBtZW1zeihzeiwg
bTgsIG0xNiwgbTMyKSB7CisgIHN3aXRjaCAoc3opIHsKKyAgICBjYXNlICIxNiIgOiAKKyAgICAg
ICAgcmV0dXJuIG0xNjsKKyAgICBjYXNlICIzMiIgOiAKKyAgICAgICAgcmV0dXJuIG0zMjsKKyAg
ICBjYXNlICI4IiA6IAorICAgICAgICByZXR1cm4gbTg7CisgICAgZGVmYXVsdDoKKyAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJl
LAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAorICAgICAg
ICAgICAgICA3MiwKKyAgICAgICAgICAgICAgOQorICAgICAgICAgICAgXQorICAgICAgICAgIF07
CisgIH0KK30KKworZnVuY3Rpb24gZXh0KGUsIHMsIHUpIHsKKyAgdmFyIHN3aXRjaGVyID0gZSAt
IDExNSB8IDA7CisgIGlmIChzd2l0Y2hlciA+IDIgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgdGhy
b3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAor
ICAgICAgICAgIFsKKyAgICAgICAgICAgICJ0ZXh0L2xleGVyLm1sbCIsCisgICAgICAgICAgICA3
OCwKKyAgICAgICAgICAgIDkKKyAgICAgICAgICBdCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7
CisgICAgc3dpdGNoIChzd2l0Y2hlcikgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0
dXJuIHM7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgInRleHQvbGV4ZXIubWxsIiwKKyAgICAgICAgICAgICAg
ICAgIDc4LAorICAgICAgICAgICAgICAgICAgOQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgXTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiB1OworICAgICAgCisg
ICAgfQorICB9Cit9CisKK3ZhciBvcHQgPSBMaWIuT3B0aW9uWy8qIGdldCAqLzBdOworCit2YXIg
X19vY2FtbF9sZXhfdGFibGVzID0gLyogcmVjb3JkICovWworICAvKiBsZXhfYmFzZSAqLyJcMFww
b1x4ZmZwXHhmZnFceGZmclx4ZmZceDAxXDBVXDBceDA3XDBceDFiXDBceDA1XDBvXDBvXDB0XDBc
eDA2XDBqXDBceDBlXDBrXDB5XDBceDEwXDB5XDBzXDBceGI0XDBceDAxXHgwMXpcMFx4YmVcMFx4
YzVcMFx4MDRceDAxXHgxYVx4MDFceGZlXHhmZlx4MDJcMHNceGZmXHgxM1wwPFx4MDFSXHgwMXhc
eDAxXCJcMFx4OGZceDAxXHhkNVx4MDFceDBlXHgwMVx4ZWVceDAxL1x4MDI+XHgwMlVceDAyXHg5
Nlx4MDJceGEwXHgwMk9cMERcMFx4YWNceDAyXHhjMlx4MDJceGU3XHgwMlwwXHgwMyZceDAzTFx4
MDN6XDB8XDB+XDBceDg2XDB8XDB5XDBceGZiXHhmZlx4ODVcMFwwXDBceDBmXDBceDg3XDByXHgw
M1x4OThceDAzXHhiMVwwXHhlOFx4ZmZcclwwXHgxMFwwXHhlZVwwXHhhZFwwXHhiNlwwXHhiYlww
XHhjMlwwXHg4Mlx4ZmZceGI0XDB4XHhmZlwwXDBceDljXHgwMlx4YjhcMFx4YmJcMFx4ZjFcMFx4
Y2FcMFx4YmZcMFx4YzJcMFx4ZTNcMFx4ZjJcMFx4ZWZcMFx4ZTRcMFx4ZjhcMFx4ZWJcMFx4ZjNc
MCpceDAxXG5ceDAxXHhlNlwwXHhlOFwwXHhmNVwwXHhmN1wwXHhmN1wwXHhmNVx4ZmZceGQ3XHhm
Zlx4ZDZceGZmXDBcMFx4MDFcMFx4MTZceDAxXHgxNFx4MDFqXHgwMVx4MWNcMFx4MWFcMFx4MWJc
eDAxXGJceDAxXHhkYlx4ZmZceDE5XHgwMVx4YjNceGZmXHhiNFx4ZmYnXHgwMVx4YjFceGZmXHhi
Mlx4ZmYzXHgwMVx4MWFceDAxXHgxZVx4MDFceDFlXHgwMSxceDAxXHhhZVx4MDFceDFmXDAmXDBc
eGRhXHhmZlx4Y2NceGZmQVx4MDFceGMzXHhmZlZceDAxXHhjMVx4ZmZceGMyXHhmZjNceDAxQVx4
MDE5XHgwMT5ceDAxXHhkNVx4ZmZmXHgwMWhceDAxXHhjZFx4ZmZceGM2XHhmZmFceDAxXHhjYlx4
ZmZYXHgwMXBceDAxY1x4MDFceGM5XHhmZlx4Y2FceGZmY1x4MDF3XHgwMXRceDAxXHg4NFx4MDFy
XHgwMVx4YzdceGZmXHhjOFx4ZmZ1XHgwMVx4ODVceDAxeVx4MDF8XHgwMXtceDAxXHg4OVx4MDF7
XHgwMVwwXDBceDkwXHgwMSpcMCxcMFx4OTdceGZmXHg4Ylx4MDFceGJmXHhmZlx4YzBceGZmXHhj
NVx4ZmZceDg2XHgwMVx4YzRceGZmXHg3Zlx4MDFceGI3XHhmZlx4YjVceGZmXHg5Ylx4MDFceDlj
XHgwMVx4ODlceDAxXHhhZlx4ZmZceGIwXHhmZlx4OWNceDAxXHhhZFx4ZmZceGFlXHhmZlx4YTNc
eDAxXHhhMFx4MDFceGUzXHgwMVx4YWFceDAxXHhkZVx4MDFceGUxXHgwMVx4YTZceGZmXHhhOFx4
MDFceGJhXHgwMVx4YzZceDAxXHhjYlx4MDFceGI4XHgwMVx4ZmRceDAxXHhmZlx4MDFceGNmXHgw
MVx0XHgwMlx0XHgwMlxmXHgwMlx4YTFceGZmXHg5Zlx4ZmZceGRhXHgwMVx4MGVceDAyXHgwZVx4
MDJceDExXHgwMlx4YTBceGZmXHg5ZVx4ZmZceDE4XHgwMn5ceDAzXHhkNlx4MDFceGU2XHgwMVx4
ZGZceDAxXHhkYlx4MDFceGQ2XHgwMVx4ZThceDAxXHhlNFx4MDFceGU3XHgwMVx4ZTZceDAxXHhm
NFx4MDFceGU2XHgwMSxceDAyXHhmNlx4MDEnXHgwMjZceDAyXHg5Nlx4ZmZceGY4XHgwMVxiXHgw
MlxuXHgwMlx4MTVceDAyXHgxYlx4MDJcYlx4MDJNXHgwMk9ceDAyJlx4MDJdXHgwMl9ceDAyXHhh
NVx4ZmYpXHgwMmBceDAyYlx4MDJceGE0XHhmZiZceDAyKlx4MDIpXHgwMlx4ODZceGZmLlx4MDJc
eGYyXHhmZlx4ZjhceGZmXHhmOVx4ZmZceGZhXHhmZlx4ZDFceDAzRlx4MDRceGY3XHhmZjlceDA0
XHhhNFx4MDQ3XHgwMnJceDAydVx4MDJ6XHgwMlx4YjdceDAzRFx4MDJIXHgwMjlceDAyRlx4MDJL
XHgwMj5ceDAyRVx4MDJRXHgwMk1ceDAyTVx4MDJceGJkXHgwM1x4OTdceDAyVFx4MDJ4XHgwMkZc
eDAydFx4MDJeXHgwMlJceDAyZ1x4MDJceDhhXHgwMnhceDAyXHhiZFx4MDJceGJmXHgwMlx4ODZc
eDAyXHhjZlx4MDJceGNhXHgwMlx4ZDJceDAyXHg5ZFx4ZmZceDliXHhmZlx4YTRceDAyXHhkZlx4
MDJceGUyXHgwMlx4ZWZceDAyXHg5Y1x4ZmZceDlhXHhmZlx4YWZceDAyXHhiYVx4MDJceGJkXHgw
Mlx4YjdceDAyXHhiOFx4ZmZceGJhXHgwMlx4ZDFceGZmXHhhOVx4ZmZceGFhXHhmZlx4Y2VceDAy
XHhkN1x4MDJceGRkXHhmZlx4ZGFceDAyXHhjYlx4MDJceGNmXHgwMlx4Y2RceDAyXHhkYlx4MDJc
eGRjXHhmZlx4ZDNceDAyXHhkMlx4ZmZceGJkXHhmZlx4ZWVceDAyXHhkY1x4MDJceGQ0XHhmZlx4
ZWJceDAyXHhkZlx4MDJceGVjXHgwMlx4Y2VceGZmXHRceDAzXHhmYlx4MDJceGQzXHhmZlx4YmVc
eGZmXDBceDAzXHgwMlx4MDNcMFx4MDNceGQwXHhmZlx4ZmVceDAyXHgwNlx4MDNceDEyXHgwM1x4
Y2ZceGZmXHhmZVx4MDJcdFx4MDNcZlx4MDNceGJjXHhmZlx4YmFceGZmXHhiOVx4ZmZcZlx4MDNc
eDA1XHgwM1x4YmJceGZmXHgxN1x4MDNceDFmXHgwMy9ceDAzZlx4MDMxXHgwM2JceDAzZVx4MDNc
eGEzXHhmZlx4YWNceGZmXHhhN1x4ZmZceGE4XHhmZjFceDAzLVx4MDMoXHgwMzhceDAzLFx4MDMv
XHgwMy5ceDAzPFx4MDM4XHgwM1x4OGFceDAzUVx4MDNceDg4XHgwM1x4OGJceDAzXHg5OVx4ZmZc
eDkwXHgwM1x4MWZceDA0Wlx4MDNOXHgwM1hceDAzU1x4MDNWXHgwM1VceDAzUVx4MDNhXHgwM1x4
OThceDAzbFx4MDNceGFkXHgwM1x4YjJceDAzXHhhMlx4ZmZ9XHgwM3lceDAzdFx4MDNceDg0XHgw
M31ceDAzXHg4NFx4MDNceDgzXHgwM1x4OTJceDAzXHg4Ylx4MDNceGQxXHgwM1x4YTJceDAzXHhk
Nlx4MDNceGQ5XHgwM1x4OThceGZmXHhhYlx4MDNceDkyXHhmZlx4OWNceDAzXHhhN1x4MDNceDk4
XHgwM1x4YjNceDAzXHhhYVx4MDNceGIyXHgwM1x4YmVceDAzXHhmNFx4ZmZceGJmXHgwM1x4Yjlc
eDAzXHhlYlx4MDNceDk3XHgwNFx4YTJceDA0XHhhY1x4MDRceGI2XHgwNFx4ZGNceDA0XHhjOVx4
MDNceGJkXHgwM1x4YmNceDAzXHhkOVx4MDNceGMwXHgwNFx4YzFceDAzXHhjOFx4MDNceGQ2XHgw
M1x4Y2VceDAzXHhjZVx4MDNceGQwXHgwM1x4ZGZceDAzXHhkNVx4MDNceGRjXHgwM1x4ZDRceDAz
XHhkMlx4MDNceGY5XHgwM1x4MDJceDA0XHgwZlx4MDRceDgwXHhmZlx4ZmVceDAzXHgxNFx4MDRc
blx4MDRceDBlXHgwNFx4MTRceDA0XHg3Zlx4ZmZceDEzXHgwNFxyXHgwNChceDA0XHgxZlx4MDRc
eDFiXHgwNFx4MTRceDA0LVx4MDQkXHgwNCtceDA0MVx4MDR+XHhmZipceDA0Llx4MDQqXHgwNC5c
eDA0P1x4MDQ/XHgwNDdceDA0X1x4MDR9XHhmZnxceDA0fFx4MDRceDgwXHgwNFx4ODVceDA0XHg5
NVx4MDRceDg3XHgwNFx4OTVceDA0XHg4Zlx4MDR7XHhmZlx4OWRceDA0XHg4Zlx4MDR6XHhmZlx4
OTlceDA0XHhhMVx4MDRceDhlXHgwNFx4OTFceDA0XHg5MVx4MDRceDlkXHgwNFx4OThceDA0XHg5
YVx4MDR5XHhmZlx4OWNceDA0XHhhNlx4MDRceDk3XHgwNFx4ZjNceGZmXHhhMVx4MDRceGJhXHgw
NFx4YzJceDA0XHg4Y1x4ZmZceGI5XHgwNFx4YjhceDA0XHhiMlx4MDRceDhhXHhmZlx4YmFceDA0
XHhjOVx4MDRceGNlXHgwNFx4Y2RceDA0XHhjOVx4MDRceGQ1XHgwNFx4ZDVceDA0XHhjY1x4MDRc
eGQ0XHgwNFx4ZjFceGZmXHhjNlx4MDRceGNjXHgwNFx4Y2NceDA0XHhmMFx4ZmZceGUyXHgwNFx4
ODhceGZmXHhlNVx4MDRceGQ2XHgwNFx4ZTRceDA0XHhkZFx4MDRceGVmXHhmZlx4ZTBceDA0XHhl
OVx4MDRceGU1XHgwNFx4ZWJceGZmXHhlYVx4MDRceGUxXHgwNFx4ZTlceDA0XHhlYVx4ZmZceGVj
XHgwNFx4ZWZceDA0XHhlMVx4MDRceGVlXHhmZlx4ZTZceDA0XHg4ZVx4ZmZceGUzXHgwNFx4ZjBc
eDA0XHhmMlx4MDRceGVkXHhmZlx4ZWFceDA0XHhmM1x4MDRceGU2XHhmZlx4ODlceGZmXHhlYVx4
MDRceGU4XHgwNFx4ZThceDA0XHg4NVx4ZmZceGY2XHgwNFx4ZjVceDA0XHhlYVx4MDRceGViXHgw
NFx4ZWZceDA0XHhmNFx4MDRceGU5XHhmZlx4ZjhceDA0XHhmMVx4MDRceDhmXHhmZlx4ZjNceDA0
XHhmM1x4MDRceDAzXHgwNVx4ZjlceDA0XHg4M1x4ZmZcblx4MDVceGZkXHgwNFx0XHgwNVxuXHgw
NVx4MDJceDA1XHhlN1x4ZmZceDEyXHgwNVx4MDZceDA1XHgwNFx4MDVceDExXHgwNVx4MTRceDA1
XG5ceDA1XHhlMFx4ZmZceDEyXHgwNVx4OTNceGZmXGZceDA1XHgxNFx4MDVceDhiXHhmZlxiXHgw
NVx4MWFceDA1XHgxMFx4MDVceDFlXHgwNVx4MTlceDA1XHgxY1x4MDVcZlx4MDVceGU1XHhmZlx4
MWFceDA1XHgxNlx4MDVceDE0XHgwNVwiXHgwNSZceDA1XHgxY1x4MDVceGUxXHhmZlx4MWFceDA1
KFx4MDUqXHgwNSBceDA1XHhkZVx4ZmZceDFiXHgwNVx4MWFceDA1XHg5MVx4ZmYmXHgwNSBceDA1
XHgxZFx4MDVceDg0XHhmZiBceDA1J1x4MDUoXHgwNTZceDA1LVx4MDUpXHgwNTRceDA1MFx4MDUo
XHgwNTZceDA1OVx4MDUpXHgwNVx4ZTNceGZmLFx4MDU6XHgwNTJceDA1LVx4MDVDXHgwNTZceDA1
QFx4MDU5XHgwNThceDA1Nlx4MDUwXHgwNVx4OTVceGZmO1x4MDU8XHgwNThceDA1Tlx4MDVHXHgw
NUNceDA1QVx4MDVOXHgwNVFceDA1SFx4MDVceGUyXHhmZkZceDA1VFx4MDVWXHgwNUxceDA1XHhk
Zlx4ZmZCXHgwNVtceDA1Tlx4MDVXXHgwNVBceDA1T1x4MDVNXHgwNUdceDA1XHg5NFx4ZmZfXHgw
NWFceDA1V1x4MDVceDhkXHhmZlBceDA1X1x4MDVTXHgwNWJceDA1VFx4MDVceDhjXHgwNVx4OWFc
eDA1XHhhNFx4MDVceGFlXHgwNVx4YjhceDA1XHhjZlx4MDVceDgyXHgwNX5ceDA1XHg4MFx4MDV3
XHhmZlx4ODNceDA1XHg5NVx4MDVceDhhXHgwNVx4OTBceGZmXHgxNVx4MDZceGVlXHgwNXRceGZm
dVx4ZmZceDAyXHgwNlx4ZmJceGZmXHhmY1x4ZmZceGZkXHhmZlx4Y2VceDA1XHgwMVwwXHhmZlx4
ZmZceGZlXHhmZiIsCisgIC8qIGxleF9iYWNrdHJrICovIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkw
XDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBc
eDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDAyXDBceDAyXDBceGZmXHhmZlwwXDBceGZm
XHhmZlx4ZmZceGZmXHgwNFwwXHhmZlx4ZmZceDAyXDBceGZmXHhmZlx4ZmZceGZmXHgwMlwwXHhm
Zlx4ZmZceDAyXDBceDA0XDBceGZmXHhmZlx4MDRcMFx4MDRcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4MDNcMFx4MDNcMFx4ZmZceGZmXHgwM1wwXHgwM1wwXHgwM1wwXHhmZlx4ZmZceDA0XDBc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDA0XDBceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceDA0XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZcdFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZcIlwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYjXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmSVwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZlxiXDBcYlwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlRcMFx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZidc
MCdcMFx4ZmZceGZmJ1wwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ODNcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDEzXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDFiXDBceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZ+XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZ4XDBceGZmXHhmZiZcMCZcMFx4ZmZceGZmJlwwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ODlcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHgwNFwwXHgwNFwwXHhmZlx4ZmZceGZmXHhmZiIsCisgIC8qIGxleF9kZWZhdWx0
ICovIlx4MDFcMFwwXDBcMFwwXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBceDAxXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlww
XDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhm
ZlwwXDBcMFwwXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXDBcMFx4ZmZc
eGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4
ZmZceGZmXDBcMFwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBc
MFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXDBcMFwwXDBceGZmXHhmZlww
XDBceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhm
ZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBc
MFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXDBcMFwwXDBceDAx
XHgwMVwwXHgwMVwwXDBceGZmXHhmZlwwXHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
MFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZm
XHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
MFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBc
MFwwXDBceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
MFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXHhmZlx4ZmZc
eGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGE5XHgwMlwwXDBcMFwwXHhhZFx4MDJcMFwwXDBc
MFwwXDBceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDAiLAorICAvKiBsZXhfdHJhbnMgKi8nXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwNFwwXHgwM1wwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXHgwNFwwXDBcMFx4MTZcMFwwXDBceDA2XDBcMFwwXDBcMFwwXDBceDFkXDBc
eDFjXDBceGIyXHgwMlx4MTlcMFwwXDBceDE5XDBPXDBceGE1XDBceDFiXDBceDFhXDBceDFhXDBc
eDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDA+XDBceDA1XDBceGE5XHgw
Mlx4MWVcMCxcMD9cMCxcMFx4ZDRcME5cMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCZc
MG5cMCZcMG5cMFx4N2ZcMChcMChcMChcMChcMChcMChcMChcMChcMChcMChcMFx4N2ZcMFx4YTdc
MFx4YThcMHRcMHFcMFx4MTRcMFx4MTBcMFxuXDBceDExXDBceDBlXDBceDE1XDBcdFwwXHhhNFx4
MDJceDE4XDB6XHgwMiNceDAyXHgwZlwwXHgxM1wwXHgxN1wwXGJcMFx4MDdcMHhceDAyXHJcMFx4
MGJcMFxmXDBceDEyXDBceGE4XHgwMnlceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4MTFceDAyXHhmNFx4MDFceGE4XHgwMlx4YThceDAyXHg5Nlx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHg5NVx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMjxcMFx4YThceDAyNVwwXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMmBceDAyXHhhOFx4MDJEXHgwMlx4
YThceDAyRlx4MDIyXHgwMlx4MThceDAyXHgwNVx4MDJceDE5XHgwMjRceDAyXHhmZVx4MDE8XHgw
MDVceDAyXHgwNFx4MDJceGU4XHgwMVx4OTZceDAxNlwwXHg5N1x4MDFceDE3XHgwMkVceDAyX1x4
MDI3XDBceDk1XHgwMVx4MDZceDAxXHhlOVx4MDFceGZhXDBceDA1XHgwMVx4ZmZceDAxOFx4MDAz
XHgwMlx4ZWFceDAxOVwwOlwwRVwwO1wwPVwwRFx4MDAwXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDAv
XDAvXDBAXDBceDAyXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBc
eGZjXDBceGZjXDBceGZjXDBceGZkXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZj
XDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBc
eGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGY2XDBMXDBceGZlXDBDXDBJXDBK
XDBLXDBNXDBceDA0XHgwMVx4YzFcMEJcMEZcMFx4YmFcMC5cMFx4YjFcMFx4YWZcMFx4YWRcMCBc
MC1cMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFc
MFx4MWFcMChcMChcMChcMChcMChcMChcMChcMChcMChcMChcMCBcMFx4MWZcMFx4MWFcMFx4MWFc
MFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFceDAwNlwwXHhh
Y1wwXHhiMlwwXHg5N1wwXHg5MVwwXHg4ZlwwXHg4Nlwwd1wwXHg4Y1wwXHhmZlwwR1wwXHgxZlww
ZlwwXHg5NlwwZVwwYlwwSFwwXHhiM1wwXHg4YlwweVwweFwwXHgxZlwwY1wwZFwwIFwwIFwwIFww
IFwwIFwwIFwwIFwwIFwwIFwwIFwwYFwwalwwa1wwYVwwb1wwcFwwXHg4MFwwcFwwX1wwXHgxZlww
XHhmY1wwXHgxZlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwc1wwelwwclwwZ1wwe1ww
fFwwIVwwIlwwIlwwIlwwIlwwIlwwIlwwaVwwdlwwbVwwdVwwbFwwaFwwXHg4MlwwXHg4M1wwXHgx
ZlwwblwwXHg4N1wwXHg4OFwwXHg4MVwwJFwwXHg4OVwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlww
IlwwIlwwXHg4YVwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwJVwwIlwwJFwwJFwwJFww
JFwwJFwwJFwwJFwwJFwwJFwwJFwwXHg4NVwwXHg4ZVwwXHg4NFwwXHg4ZFwwXHg5MFwwXHg5Mlww
XHg5M1wwJFwwJFwwJFwwJFwwKVwwJFwwXHg5NVwwXHhhOVwwXHg5NFwwIlwwIlwwIlwwIlwwJVww
IlwwflwwXHg5OFwwfVwwXHg5ZFwwXHg5YVwwXHg5OVwwXHg5Y1wwXHg3ZlwwXHg5YlwwI1wwXHg5
ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwJFwwJFwwJFwwJFwwKVwwJFww
XHhhNlwwXHhhYlwwXHhhZVwwXHhiMFwwXHhiN1wwXHhiNFwwXHhiNlwwXHhhYVwwXHhiNVwwI1ww
JlwwXHhmZFwwJlwwJFwwXHhiYlwwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1ww
XCdcMFx4YjlcMFx4YmNcMFx4YjhcMFx4YmRcMFx4YmVcMFx4YmZcMFx4YzBcMCJcMCJcMCJcMCJc
MCVcMCJcMCRcMFx4YzJcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBc
eGMzXDBceGM0XDBceGM1XDBceGM3XDBceGNlXDBceGM2XDBceGM4XDAiXDAiXDAiXDAiXDAlXDAi
XDBceGM5XDAiXDAiXDAiXDAiXDAlXDAiXDBceGNiXDBceGNkXDBceGNjXDBceGNhXDBceGNmXDBc
eGQxXDBceGQzXDBceGQyXDBceGQwXDAjXDBceGQ1XDBceGFmXDBceGQ5XDBceGRhXDBceGRiXDBc
eGQ4XDBceDk5XDBceGRjXDBceGU2XDAiXDAiXDAiXDAiXDAlXDAiXDBceDk2XDBceGRkXDBceGRl
XDBceGRmXDBceGUwXDBceGUxXDBceGUyXDBceGUzXDBceGU0XDAjXDAoXDAoXDAoXDAoXDAoXDAo
XDAoXDAoXDAoXDAoXDAmXDBceGU1XDAmXDBceGU3XDBceGU4XDAqXDAqXDAqXDAqXDAqXDAqXDAq
XDAqXDAqXDAqXDBceGU5XDBceGVhXDBceGViXDBceGVkXDBceGYyXDBceGVjXDBceGVlXDAkXDAk
XDAkXDAkXDApXDAkXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDBceGVmXDBceGYwXDBc
eGYxXDBceGYzXDBceGY0XDBceGY1XDBceGY3XDAkXDAkXDAkXDAkXDApXDAkXDBceGY4XDBceGY5
XDBceGZiXDAkXDAkXDAkXDAkXDApXDAkXDBceDkzXHgwMXZceDAxXHgwN1x4MDFcYlx4MDFoXHgw
MWVceDAxWlx4MDFUXHgwMWZceDAxI1wwW1x4MDFQXHgwMUxceDAxQVx4MDFJXHgwMVVceDAxSFx4
MDEkXDAkXDAkXDAkXDApXDAkXDBnXHgwMTFceDAxOVx4MDEsXHgwMVZceDAxOlx4MDE4XHgwMVx4
MWFceDAxXHgxYlx4MDEjXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDAr
XDArXDArXDArXDArXDArXDArXDAgXDBceDFjXHgwMS9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9c
MC9cMFx4MThceDAxY1wwXHgxN1x4MDFceDFkXHgwMVx4MTlceDAxXHgxZlx4MDEmXHgwMVx4MWVc
eDAxIFx4MDEhXHgwMSBcMFx4MWZcMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMFx4MTVc
eDAxWlwwJVx4MDFeXDBYXDBUXDAjXHgwMVJcMCRceDAxIlx4MDFceDE2XHgwMVx4MWZcMF1cMFlc
MFNcMFZcMFtcMFwnXHgwMVdcMFxcXDBQXDBceDFmXDApXHgwMVFcMFVcMChceDAxK1x4MDEyXHgw
MDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDAqXHgwMS1ceDAxLlx4
MDEvXHgwMTBceDAxMlx4MDFceDFmXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDAkXHgw
MDZceDAxMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAx
XHgwMDdceDAxQFx4MDE+XHgwMTtceDAxPFx4MDE9XHgwMTJceDAwMlx4MDAyXHgwMDJceDAwM1x4
MDAyXDA/XHgwMTJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDBEXHgwMUJceDAxRVx4MDEmXDBG
XHgwMSZcMCRcMENceDAxNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRc
eDAwNFwwR1x4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAy
XHgwMDNceDAwMlwwS1x4MDFKXHgwMU1ceDAxI1wwTlx4MDFPXHgwMVFceDAxUlx4MDFTXHgwMVlc
eDAxWFx4MDFXXHgwMV1ceDAxJFwwXFxceDAxNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAw
NFx4MDA0XHgwMDRceDAwNFwwXlx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAwMlx4MDAyXHgw
MDJceDAwMlx4MDAyXHgwMDNceDAwMlwwX1x4MDFgXHgwMWFceDAxI1wwYlx4MDFjXHgwMWRceDAx
aVx4MDFqXHgwMWtceDAxbFx4MDFtXHgwMW5ceDAxb1x4MDFwXHgwMUFcMEFcMEFcMEFcMEFcMEFc
MEFcMEFcMEFcMEFcMHFceDAxMlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDJcMEFcMEFcMEFcMEFc
MEFcMEFcMHJceDAxc1x4MDF0XHgwMSNcMHVceDAxd1x4MDFceDg1XHgwMXtceDAxW1x4MDF8XHgw
MX1ceDAxflx4MDFceDdmXHgwMVx4ODBceDAxXHg4MVx4MDFBXDBBXDBBXDBBXDBBXDBBXDBBXDBB
XDBBXDBBXDBceDgyXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMFpcMFx4
ODNceDAxXlwwWFwwXHhkNlwwXHg4NFx4MDFSXDBceDg2XHgwMVx4ODdceDAxXHg4OFx4MDFceDg5
XHgwMV1cMFlcMFNcMFZcMFtcMFx4OGFceDAxXHhkN1wwXFxcMFBcMFx4MDNceDAxXHg4Ylx4MDFc
eDhjXHgwMVVcMFx4OGRceDAxXHgwM1x4MDFBXDBBXDBBXDBBXDBBXDBBXDBceDhlXHgwMVx4OGZc
eDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4
MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDkwXHgwMVx4OTFceDAxXHg5Mlx4MDFceDk0XHgw
MVx4YTVceDAxXHg5ZFx4MDFceDk4XHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAx
XHgwMlx4MDFceDAyXHgwMVx4MTBceDAxXHg5OVx4MDFceDE0XHgwMVxmXHgwMVx4MGJceDAxXHgw
Zlx4MDFcblx4MDFceDlhXHgwMVx4OWJceDAxXHg5Y1x4MDEzXHgwMVx4MTNceDAxXHJceDAxXHgx
MVx4MDFceDllXHgwMVx4OWZceDAxXHhhMFx4MDFcdFx4MDFceDEyXHgwMVx4MGVceDAxNVx4MDFc
eDAzXHgwMVx4YTZceDAxXHhhN1x4MDFceGE4XHgwMTRceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJc
eDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHhhOVx4MDFceGRmXHgwMVx4ZGNceDAxXHhkM1x4
MDFceGNhXHgwMVx4YmZceDAxXHhiOVx4MDFceDAzXHgwMVx4YjFceDAxXHhiMlx4MDFceGIzXHgw
MVx4YjRceDAxXHhiNVx4MDFceDAzXHgwMVx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmRcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4YjZceDAxXHhi
N1x4MDFceGZlXDBcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4
MDFcMFx4MDFcMFx4MDFceGI4XHgwMVx4YmFceDAxXHhiYlx4MDFceGJjXHgwMVx4YmRceDAxXHhi
ZVx4MDFceGMwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVx4MTBceDAx
XHhjMVx4MDFceDE0XHgwMXpceDAxXHgwYlx4MDFceDBmXHgwMVxuXHgwMVx4YzJceDAxXHhjM1x4
MDFceGM0XHgwMVx4YzVceDAxXHgxM1x4MDFcclx4MDFceDExXHgwMVx4YzZceDAxeVx4MDFceGM3
XHgwMXhceDAxXHgxMlx4MDFceDBlXHgwMVx4YzhceDAxXHhjOVx4MDFceGNiXHgwMVx4Y2NceDAx
XHhjZFx4MDFceGNlXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVx4Y2Zc
eDAxXHhkMFx4MDFceGZmXDBceGQxXHgwMVx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmRcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZDJceDAxXHhm
Y1wwXHhmZVwwXHhhMlx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAx
XHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGZmXHhmZlx4YTFceDAxXHhhMVx4MDFc
eGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4
YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhh
MVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0
XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4ZDRc
eDAxXHhkNVx4MDFceGQ2XHgwMVx4ZDdceDAxXHhkOFx4MDFceGQ5XHgwMVx4ZGFceDAxXHhhNFx4
MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhkYlx4MDFceGRkXHgw
MVx4ZGVceDAxXHhmZlwwXHhlMFx4MDFceGUxXHgwMVx4ZTJceDAxXHhlM1x4MDFceGU0XHgwMVx4
ZTVceDAxXHhlNlx4MDFceGU3XHgwMVx4ZjBceDAxXHhlY1x4MDFceGViXHgwMVx4YTRceDAxXHhh
NFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0
XHgwMVx4YTRceDAxXHhlZFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRc
eDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4
MDFceGZjXDBceGEzXHgwMVx4YWFceDAxXHhlZVx4MDFceGVmXHgwMVx4ZjFceDAxXHhhZlx4MDFc
eGYyXHgwMVx4ZjNceDAxXHhmNVx4MDFceGIwXHgwMVx4ZjZceDAxXHhmN1x4MDFceGY4XHgwMVx4
ZjlceDAxXHhhY1x4MDFceGFlXHgwMVx4YWJceDAxXHhhZFx4MDFceGZhXHgwMVx4ZmJceDAxXHhm
Y1x4MDFceGZkXHgwMVx4MDJceDAyXDBceDAyXHgwMVx4MDJceGE0XHgwMVx4YTRceDAxXHhhNFx4
MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceDAzXHgwMlx0XHgwMlx4MDZceDAyXHhmZFwwXHgw
N1x4MDJcYlx4MDJceDBiXHgwMlxyXHgwMlxmXHgwMlx4MGVceDAyXHgwZlx4MDJceDEwXHgwMlx4
MTJceDAyXHgxNVx4MDJceDE0XHgwMlx4MTZceDAyXHgxZlx4MDJcblx4MDJceDFiXHgwMlx4MWFc
eDAyXHgxZVx4MDJceDFkXHgwMiBceDAyIVx4MDJceDEzXHgwMiJceDAyJFx4MDItXHgwMipceDAy
XCdceDAyKFx4MDIpXHgwMlx4MWNceDAyK1x4MDIsXHgwMi5ceDAyL1x4MDIwXHgwMiVceDAyJlx4
MDIxXHgwMkFceDAyP1x4MDI4XHgwMjZceDAyN1x4MDI5XHgwMjpceDAyO1x4MDI8XHgwMj1ceDAy
Plx4MDJAXHgwMkJceDAyQ1x4MDJbXHgwMlhceDAySFx4MDJMXHgwMklceDAySlx4MDJLXHgwMk1c
eDAyU1x4MDJPXHgwMkdceDAyUFx4MDJOXHgwMlFceDAyUlx4MDJUXHgwMlVceDAyVlx4MDJXXHgw
MllceDAyWlx4MDJcXFx4MDJdXHgwMl5ceDAybFx4MDJhXHgwMmJceDAyY1x4MDJkXHgwMmVceDAy
Zlx4MDJnXHgwMmhceDAyaVx4MDJqXHgwMmtceDAybVx4MDJuXHgwMm9ceDAycFx4MDJxXHgwMnJc
eDAyXHhmZFwwc1x4MDJ0XHgwMnVceDAydlx4MDJ3XHgwMlx4OTFceDAyXHg4OFx4MDJ7XHgwMnxc
eDAyfVx4MDJceDgzXHgwMlx4N2ZceDAyXHg4MFx4MDJceDgxXHgwMn5ceDAyXHg4Mlx4MDJceDg0
XHgwMlx4ODVceDAyXHg4Nlx4MDJceDg3XHgwMlx4ODlceDAyXHg4YVx4MDJceDhiXHgwMlx4OGNc
eDAyXHg4ZFx4MDJceDhlXHgwMlx4OGZceDAyXHg5MFx4MDJceDkyXHgwMlx4OTNceDAyXHg5NFx4
MDJceGEwXHgwMlx4OTdceDAyXHg5OFx4MDJceDk5XHgwMlx4OWFceDAyXHg5Ylx4MDJceDlkXHgw
Mlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAy
XHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJc
eDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4
OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5
Y1x4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlm
XHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YTFceDAyXHhhMlx4MDJceGEzXHgwMlx4YTVc
eDAyXHhhNlx4MDJceGE3XHgwMlx4YWFceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4
MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgw
Mlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceGIzXHgwMlwwXDBcMFww
XHhhZlx4MDJcMFwwXDBcMFwwXDBceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZc
eDAyXHg5Zlx4MDJcMFwwXDBcMFwwXDBceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4
OWZceDAyXHg5Zlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5ZVx4MDJcMFwwXDBc
MFwwXDBceGIwXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAy
XHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHhhOFx4MDJcMFwwXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YjFceDAyXDBcMFx4YThceDAyXHhhOFx4MDJcMFwwXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlwwXDBceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlwwXDBceGE4XHgwMlwwXDBceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXDBcMFx4YThceDAyXDBcMFx4YThc
eDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhYlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhZVx4MDJc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwJywKKyAgLyogbGV4X2NoZWNrICovIlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlww
XDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlww
XDBcMFwwXHhiMVx4MDJcMFwwXHhmZlx4ZmZcMFwwTlwwXHhhNFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMD1cMFwwXDBceDA1XDBceDFkXDBceDFmXDA+XDBceDFmXDBE
XDBFXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFm
XDBceDFmXDAjXDBsXDAjXDBtXDB9XDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDB+XDBc
eGE2XDBceGE3XDBnXDBoXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwN1wwXDBcMFx0
XDBcclwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcdFwwXDBcMFwwXDBcMFwwXDBcMFx4MDZcMFx0XDBc
eDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDBmXDBceDEyXDBceDA2XDBceDA2XDBcYlww
XHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgw
NlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXGJcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMC1cMFx4MDZcMC5c
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFxuXDBceDA2XDBceDBiXDBceDA2XDBceDBiXDBcZlwwXHgwZVwwXHgxMFwwXHgwZVwwXGZc
MFx4MTFcMFx4MTdcMFxmXDBceDEwXDBceDEzXDBceDE0XHgwMDVcMFx4MTRcMFx4MGVcMFx4MGJc
MFxuXHgwMDZcMFx4MTRcMFx4MTVcMFx4MTNcMFx4MTdcMFx4MTVcMFx4MTFceDAwN1wwXGZcMFx4
MTNceDAwOFx4MDA5XDBceDE4XDA6XDA8XDBceDE4XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBc
eDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDA/XDBcMFwwXHgxNlwwXHgxNlwwXHgx
NlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlww
XHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgx
NlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlww
XHgxNlwwQlwwR1wwXHgxNlwwXHgxOFwwSFwwSVwwSlwwTFwwXHgxNVwwUFwwXHgxOFwwXHgxOFww
UVwwXHgxOVwwU1wwVFwwVVwwXHgxYVwwXHgxOVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgx
YVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwJlww
JlwwJlwwXHgxYlwwXHgxYVwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgx
YlwwXHgxYlwwXHgxYlwwXHgxYlwwRlwwVlwwUlwwV1wwWFwwWVwwW1wwXFxcMFpcMFx4MTZcMEZc
MFx4MWJcMF9cMFdcMGBcMGFcMEZcMFJcMFpcMFxcXDBcXFwwXHgxYVwwYlwwY1wwIFwwIFwwIFww
IFwwIFwwIFwwIFwwIFwwIFwwIFwwXlwwaVwwalwwXlwwblwwb1wweFwwb1wwXlwwXHgxYlwwXHgx
NlwwIFwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwcVwweVwwcVwwXVwwelwwe1wwXHgx
YlwwIVwwIVwwIVwwIVwwIVwwIVwwXVwwdFwwa1wwdFwwa1wwXVwwd1wwXHg4MVwwIFwwa1wwXHg4
NlwwXHg4N1wwd1wwXCJcMFx4ODhcMFwiXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDBcIlwwXCJc
MFwiXDBceDg5XDAhXDAhXDAhXDAhXDAhXDAhXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDAkXDAk
XDAkXDAkXDAkXDAkXDAkXDAkXDAkXDAkXDBceDgzXDBceDhiXDBceDgzXDBceDhjXDBceDhmXDBc
eDkxXDBceDkyXDAkXDAkXDAkXDAkXDAkXDAkXDBceDkzXDBceDk2XDBceDkzXDBcIlwwXCJcMFwi
XDBcIlwwXCJcMFwiXDB8XDBceDk3XDB8XDBceDk4XDBceDk5XDBceDk3XDBceDlhXDB8XDBceDlh
XDBcIlwwXHg5ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwJFwwJFwwJFww
JFwwJFwwJFwwXHhhNVwwXHhhOVwwXHhhZFwwXHhhZlwwXHhiMlwwXHhiM1wwXHhiNFwwXHhhOVww
XHhiNFwwJFwwJVwwXHgxNlwwJVwwJVwwXHhiYVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVww
JVwwXHhiN1wwXHhiYlwwXHhiN1wwXHhiY1wwXHhiZFwwXHhiZVwwXHhiZlwwJVwwJVwwJVwwJVww
JVwwJVwwJ1wwXHhjMVwwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhjMlwwXHhjM1ww
XHhjNFwwXHhjNVwwXHhjNlwwXHhjNVwwXHhjN1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhjOFwwJVww
JVwwJVwwJVwwJVwwJVwwXHhjOVwwXHhjYVwwXHhjYlwwXHhjOVwwXHhjZVwwXHhjZlwwXHhkMFww
XHhkMVwwXHhjZlwwJVwwXHhkNFwwXHhkNlwwXHhkOFwwXHhkOVwwXHhkYVwwXHhkN1wwXHhkOFww
XHhkYlwwXHhkNlwwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhkN1wwXHhkY1wwXHhkZFwwXHhkZVwwXHhk
ZlwwXHhlMFwwXHhlMVwwXHhlMlwwXHhlM1wwJ1wwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFww
KFwwKVwwXHhlNFwwKVwwXHhlNlwwXHhlN1wwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVww
XHhlOFwwXHhlOVwwXHhlYVwwXHhlYlwwXHhlY1wwXHhlYlwwXHhlZFwwKVwwKVwwKVwwKVwwKVww
KVwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwXHhlZVwwXHhlZlwwXHhmMFwwXHhmMlww
XHhmM1wwXHhmNFwwXHhmNlwwKlwwKlwwKlwwKlwwKlwwKlwwXHhmN1wwXHhmOFwwXHhmYVwwKVww
KVwwKVwwKVwwKVwwKVwwXHgwNFx4MDFceDA1XHgwMVx4MDZceDAxXHgwN1x4MDFcdFx4MDFceDBi
XHgwMVxmXHgwMVxyXHgwMVxuXHgwMSlcMFxmXHgwMVx4MGVceDAxXHgwZlx4MDFceDExXHgwMVx4
MTBceDAxXHJceDAxXHgxMFx4MDEqXDAqXDAqXDAqXDAqXDAqXDBcblx4MDFceDE1XHgwMVx4MTJc
eDAxXHgxN1x4MDFcclx4MDFceDEyXHgwMVx4MTJceDAxXHgxOVx4MDFceDFhXHgwMSpcMCtcMCtc
MCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMC9c
MFx4MWJceDAxL1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwXHgxNlx4MDFceDE4XHgwMVx4
MTZceDAxXHgxY1x4MDFceDE4XHgwMVx4MWRceDAxXHgxZVx4MDFceDFkXHgwMVx4MWZceDAxIFx4
MDEwXDAvXHgwMDBceDAwMFx4MDAwXHgwMDBceDAwMFx4MDAwXHgwMDBceDAwMFx4MDAwXHgwMDBc
MFx4MTRceDAxT1wwXCJceDAxT1wwT1wwT1wwIVx4MDFPXDAjXHgwMSFceDAxXHgxNFx4MDEwXDBP
XDBPXDBPXDBPXDBPXDAmXHgwMU9cME9cME9cMC9cMCdceDAxT1wwT1wwJ1x4MDEoXHgwMTFceDAw
MVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFcMClceDAxLFx4MDEtXHgw
MS5ceDAxL1x4MDExXHgwMTBceDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMlx4MDA1
XHgwMTJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMFx4
MDA2XHgwMThceDAxOVx4MDE6XHgwMTtceDAxPFx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAw
MlwwPlx4MDExXHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMVwwQlx4MDFBXHgwMURceDAxM1wwRVx4
MDEzXHgwMDNcMEFceDAxM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNc
eDAwM1wwRlx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDNceDAwM1x4MDAz
XHgwMDNceDAwM1wwSFx4MDFJXHgwMUxceDAxMlwwTVx4MDFOXHgwMVBceDAxUVx4MDFSXHgwMVRc
eDAxVVx4MDFWXHgwMVpceDAxNFwwW1x4MDE0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0
XHgwMDRceDAwNFx4MDA0XDBdXHgwMTNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDRceDAw
NFx4MDA0XHgwMDRceDAwNFx4MDA0XDBeXHgwMV9ceDAxYFx4MDEzXDBhXHgwMWJceDAxY1x4MDFo
XHgwMWlceDAxalx4MDFrXHgwMWxceDAxbVx4MDFuXHgwMW9ceDAxQFwwQFwwQFwwQFwwQFwwQFww
QFwwQFwwQFwwQFwwcFx4MDE0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFwwQFwwQFwwQFwwQFww
QFwwQFwwcVx4MDFyXHgwMXNceDAxNFwwdFx4MDF2XHgwMXhceDAxeVx4MDF6XHgwMXtceDAxfFx4
MDF9XHgwMX5ceDAxXHg3Zlx4MDFceDgwXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFc
MFx4ODFceDAxQFwwQFwwQFwwQFwwQFwwQFwwQVwwQVwwQVwwQVwwQVwwQVwwXHhkNVwwXHg4Mlx4
MDFceGQ1XDBceGQ1XDBceGQ1XDBceDgzXHgwMVx4ZDVcMFx4ODVceDAxXHg4Nlx4MDFceDg3XHgw
MVx4ODhceDAxXHhkNVwwXHhkNVwwXHhkNVwwXHhkNVwwXHhkNVwwXHg4OVx4MDFceGQ1XDBceGQ1
XDBceGQ1XDBceGZmXDBceDhhXHgwMVx4OGJceDAxXHhkNVwwXHg4Y1x4MDFceGZmXDBBXDBBXDBB
XDBBXDBBXDBBXDBceDhkXHgwMVx4OGVceDAxXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlww
XHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHg4Zlx4MDFceDkwXHgwMVx4OTFceDAxXHg5
M1x4MDFceDk1XHgwMVx4OTZceDAxXHg5N1x4MDFceGZmXDBceGZmXDBceGZmXDBceGZmXDBceGZm
XDBceGZmXDBcYlx4MDFceDk4XHgwMVxiXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVx4OTlc
eDAxXHg5YVx4MDFceDliXHgwMVx4MTNceDAxXGJceDAxXGJceDAxXGJceDAxXHg5ZFx4MDFceDll
XHgwMVx4OWZceDAxXGJceDAxXGJceDAxXGJceDAxXHgxM1x4MDFceGZmXDBceGE1XHgwMVx4YTZc
eDAxXHhhN1x4MDFceDEzXHgwMVx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4
YThceDAxXHhhYVx4MDFceGFiXHgwMVx4YWNceDAxXHhhZFx4MDFceGFlXHgwMVx4YWZceDAxXHhm
ZlwwXHhiMFx4MDFceGIxXHgwMVx4YjJceDAxXHhiM1x4MDFceGI0XHgwMVx4ZmZcMFwwXHgwMVww
XHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgw
MVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVww
XHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgw
MVwwXHgwMVwwXHgwMVx4YjVceDAxXHhiNlx4MDFcMFx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4
MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgw
MVx4YjdceDAxXHhiOVx4MDFceGJhXHgwMVx4YmJceDAxXHhiY1x4MDFceGJkXHgwMVx4YmZceDAx
XHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxd1x4MDFceGMw
XHgwMXdceDAxd1x4MDF3XHgwMXdceDAxd1x4MDFceGMxXHgwMVx4YzJceDAxXHhjM1x4MDFceGM0
XHgwMXdceDAxd1x4MDF3XHgwMVx4YzVceDAxd1x4MDFceGM2XHgwMXdceDAxd1x4MDF3XHgwMVx4
YzdceDAxXHhjOFx4MDFceGNhXHgwMVx4Y2JceDAxXHhjY1x4MDFceGNkXHgwMVx4MDJceDAxXHgw
Mlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4Y2VceDAxXHhjZlx4MDFcMFx4
MDFceGQwXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgw
MVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAx
XHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFc
eDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4
MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceGQxXHgwMVwwXHgwMVx4MDNc
eDAxXHhhMFx4MDFceGEwXHgwMVx4YTBceDAxXHhhMFx4MDFceGEwXHgwMVx4YTBceDAxXHhhMFx4
MDFceGEwXHgwMVx4YTBceDAxXHhhMFx4MDFceGZmXDBceGExXHgwMVx4YTFceDAxXHhhMVx4MDFc
eGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4
YTJceDAxXHhhMlx4MDFceGEyXHgwMVx4YTJceDAxXHhhMlx4MDFceGEyXHgwMVx4YTJceDAxXHhh
Mlx4MDFceGEyXHgwMVx4YTJceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEz
XHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGQzXHgwMVx4ZDRc
eDAxXHhkNVx4MDFceGQ2XHgwMVx4ZDdceDAxXHhkOFx4MDFceGQ5XHgwMVx4YTNceDAxXHhhM1x4
MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4ZGFceDAxXHhkY1x4MDFceGRkXHgw
MVx4MDNceDAxXHhkZlx4MDFceGUwXHgwMVx4ZTFceDAxXHhlMlx4MDFceGUzXHgwMVx4ZTRceDAx
XHhlNVx4MDFceGU2XHgwMVx4ZThceDAxXHhlOVx4MDFceGVhXHgwMVx4YTRceDAxXHhhNFx4MDFc
eGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4
YTRceDAxXHhlY1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhh
M1x4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceDAz
XHgwMVx4YTJceDAxXHhhOVx4MDFceGVkXHgwMVx4ZWVceDAxXHhmMFx4MDFceGE5XHgwMVx4ZjFc
eDAxXHhmMlx4MDFceGY0XHgwMVx4YTlceDAxXHhmNVx4MDFceGY2XHgwMVx4ZjdceDAxXHhmOFx4
MDFceGE5XHgwMVx4YTlceDAxXHhhOVx4MDFceGE5XHgwMVx4ZjlceDAxXHhmYVx4MDFceGZiXHgw
MVx4ZmNceDAxXHhmZVx4MDFceGZmXHgwMVwwXHgwMlx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4
YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4MDJceDAyXHgwNFx4MDJceDA1XHgwMlwwXHgwMVx4MDZc
eDAyXHgwN1x4MDJcdFx4MDJcblx4MDJceDBiXHgwMlxyXHgwMlx4MGVceDAyXHgwZlx4MDJceDEx
XHgwMlx4MTJceDAyXHgxM1x4MDJceDE1XHgwMlx4MTdceDAyXHRceDAyXHgxOFx4MDJceDE5XHgw
Mlx4MWJceDAyXHgxY1x4MDJceDFmXHgwMiBceDAyXHgxMVx4MDIhXHgwMiNceDAyJFx4MDIlXHgw
MiZceDAyJ1x4MDIoXHgwMlx4MThceDAyKlx4MDIrXHgwMi1ceDAyLlx4MDIvXHgwMiNceDAyI1x4
MDIwXHgwMjJceDAyM1x4MDI0XHgwMjVceDAyNlx4MDI4XHgwMjlceDAyOlx4MDI7XHgwMjxceDAy
PVx4MDI/XHgwMkFceDAyQlx4MDJEXHgwMkVceDAyRlx4MDJHXHgwMkhceDAySVx4MDJKXHgwMkxc
eDAyTVx4MDJOXHgwMkZceDAyT1x4MDJMXHgwMlBceDAyUVx4MDJTXHgwMlRceDAyVVx4MDJWXHgw
MlhceDAyWVx4MDJbXHgwMlxcXHgwMl1ceDAyX1x4MDJgXHgwMmFceDAyYlx4MDJjXHgwMmRceDAy
ZVx4MDJmXHgwMmdceDAyaFx4MDJpXHgwMmpceDAybFx4MDJtXHgwMm5ceDAyb1x4MDJwXHgwMnFc
eDAyXHgwM1x4MDFyXHgwMnNceDAydFx4MDJ1XHgwMnZceDAyeFx4MDJ5XHgwMnpceDAye1x4MDJ8
XHgwMn1ceDAyflx4MDJceDdmXHgwMlx4ODBceDAyfFx4MDJceDgxXHgwMlx4ODNceDAyXHg4NFx4
MDJceDg1XHgwMlx4ODZceDAyXHg4OFx4MDJceDg5XHgwMlx4OGFceDAyXHg4Ylx4MDJceDhjXHgw
Mlx4OGRceDAyXHg4ZVx4MDJceDhmXHgwMlx4OTFceDAyXHg5Mlx4MDJceDkzXHgwMlx4OTVceDAy
XHg5Nlx4MDJceDk3XHgwMlx4OThceDAyXHg5OVx4MDJceDlhXHgwMlx4OWJceDAyXHg5Ylx4MDJc
eDliXHgwMlx4OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4
OWJceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5
Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDlk
XHgwMlx4OWRceDAyXHg5ZFx4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDlkXHgwMlx4OWVc
eDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4
MDJceDllXHgwMlx4OWVceDAyXHhhMFx4MDJceGExXHgwMlx4YTJceDAyXHhhNFx4MDJceGE1XHgw
Mlx4YTZceDAyXHhhOVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAy
XHg5ZVx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJc
eDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YjBceDAyXHhmZlx4ZmZceGZmXHhmZlx4
YWNceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5
Zlx4MDJceDlmXHgwMlx4OWZceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHg5ZVx4MDJceDll
XHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDlkXHgwMlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4YWNceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YThceDAy
XHhmZlx4ZmZceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhY1x4MDJc
eGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhmZlx4ZmZceGE4XHgwMlx4ZmZceGZmXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4ZmZceGZmXHhhOFx4MDJceGZmXHhmZlx4YThc
eDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhhOVx4MDJceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4YWNceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmYiLAorICAvKiBsZXhfYmFzZV9jb2RlICovIiIsCisgIC8qIGxleF9i
YWNrdHJrX2NvZGUgKi8iIiwKKyAgLyogbGV4X2RlZmF1bHRfY29kZSAqLyIiLAorICAvKiBsZXhf
dHJhbnNfY29kZSAqLyIiLAorICAvKiBsZXhfY2hlY2tfY29kZSAqLyIiLAorICAvKiBsZXhfY29k
ZSAqLyIiCitdOworCitmdW5jdGlvbiB0b2tlbihsZXhidWYpIHsKKyAgdmFyIGxleGJ1ZiQxID0g
bGV4YnVmOworICB2YXIgX19fb2NhbWxfbGV4X3N0YXRlID0gMDsKKyAgd2hpbGUodHJ1ZSkgewor
ICAgIHZhciBfX29jYW1sX2xleF9zdGF0ZSA9IF9fX29jYW1sX2xleF9zdGF0ZTsKKyAgICB2YXIg
X19vY2FtbF9sZXhfc3RhdGUkMSA9IExleGluZy5lbmdpbmUoX19vY2FtbF9sZXhfdGFibGVzLCBf
X29jYW1sX2xleF9zdGF0ZSwgbGV4YnVmJDEpOworICAgIGlmIChfX29jYW1sX2xleF9zdGF0ZSQx
ID4gMTQ0IHx8IF9fb2NhbWxfbGV4X3N0YXRlJDEgPCAwKSB7CisgICAgICBDdXJyeS5fMShsZXhi
dWYkMVsvKiByZWZpbGxfYnVmZiAqLzBdLCBsZXhidWYkMSk7CisgICAgICBfX19vY2FtbF9sZXhf
c3RhdGUgPSBfX29jYW1sX2xleF9zdGF0ZSQxOworICAgICAgY29udGludWUgOworICAgICAgCisg
ICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoIChfX29jYW1sX2xleF9zdGF0ZSQxKSB7Cisg
ICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIExQQVIgKi8yOworICAgICAg
ICBjYXNlIDEgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBSUEFSICovMzsKKyAgICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgICB2YXIgcyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAq
LzVdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBOQVQgKi9CbG9jay5fXygwLCBbc10pOworICAg
ICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHZhciBzJDEgPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
Y3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogSU5UICovQmxvY2suX18oMSwg
W3MkMV0pOworICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHZhciBzJDIgPSBMZXhpbmcu
c3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhi
dWYkMVsvKiBsZXhfY3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogRkxPQVQg
Ki9CbG9jay5fXygyLCBbcyQyXSk7CisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgdmFy
IHMkMyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBURVhUICovQmxvY2suX18oMywgW3RleHQocyQzKV0pOworICAgICAgICBjYXNlIDYg
OiAKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihsZXhidWYkMSwgInVuY2xvc2VkIHRleHQgbGl0
ZXJhbCIpOworICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihsZXhi
dWYkMSwgImlsbGVnYWwgY29udHJvbCBjaGFyYWN0ZXIgaW4gdGV4dCBsaXRlcmFsIik7CisgICAg
ICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgcmV0dXJuIGVycm9yX25lc3QoTGV4aW5nLmxleGVt
ZV9lbmRfcChsZXhidWYkMSksIGxleGJ1ZiQxLCAiaWxsZWdhbCBlc2NhcGUiKTsKKyAgICAgICAg
Y2FzZSA5IDogCisgICAgICAgICAgICB2YXIgdCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQx
LCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBWQUxVRV9UWVBFICovQmxv
Y2suX18oNSwgW3ZhbHVlX3R5cGUodCldKTsKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAg
ICAgdmFyIHQkMSA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsK
KyAgICAgICAgICAgIHJldHVybiAvKiBDT05TVCAqL0Jsb2NrLl9fKDEwLCBbbnVtb3AodCQxLCBm
dW5jdGlvbiAocykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gQ3Vycnku
XzEoSTMyLm9mX3N0cmluZywgc1svKiBpdCAqLzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPcGVyYXRvcnMuaTMyX2NvbnN0KFNvdXJjZS4kYXQkYXQobiwgc1svKiBhdCAqLzBdKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJMzIgKi9CbG9jay5fXygw
LCBbbl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgbiA9IEN1cnJ5Ll8xKEk2NC5vZl9zdHJpbmcsIHNbLyogaXQgKi8xXSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT3BlcmF0b3JzLmk2NF9jb25zdChTb3VyY2UuJGF0JGF0
KG4sIHNbLyogYXQgKi8wXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogSTY0ICovQmxvY2suX18oMSwgW25dKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChzKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBDdXJyeS5fMShGMzIub2Zfc3RyaW5nLCBz
Wy8qIGl0ICovMV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9ycy5mMzJf
Y29uc3QoU291cmNlLiRhdCRhdChuLCBzWy8qIGF0ICovMF0pKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIEYzMiAqL0Jsb2NrLl9fKDIsIFtuXSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBm
dW5jdGlvbiAocykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gQ3Vycnku
XzEoRjY0Lm9mX3N0cmluZywgc1svKiBpdCAqLzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPcGVyYXRvcnMuZjY0X2NvbnN0KFNvdXJjZS4kYXQkYXQobiwgc1svKiBhdCAqLzBdKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGNjQgKi9CbG9jay5fXygz
LCBbbl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSldKTsKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIEZVTkNSRUYgKi8wOworICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICByZXR1
cm4gLyogTVVUICovMTsKKyAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgcmV0dXJuIC8q
IE5PUCAqLzQ7CisgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBVTlJF
QUNIQUJMRSAqLzI0OworICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICByZXR1cm4gLyog
RFJPUCAqLzU7CisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBCTE9D
SyAqLzY7CisgICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBMT09QICov
MTI7CisgICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFTkQgKi83Owor
ICAgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgICByZXR1cm4gLyogQlIgKi8xMzsKKyAgICAg
ICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEJSX0lGICovMTQ7CisgICAgICAg
IGNhc2UgMjEgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBCUl9UQUJMRSAqLzE1OworICAgICAg
ICBjYXNlIDIyIDogCisgICAgICAgICAgICByZXR1cm4gLyogUkVUVVJOICovMTg7CisgICAgICAg
IGNhc2UgMjMgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBJRiAqLzg7CisgICAgICAgIGNhc2Ug
MjQgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBUSEVOICovOTsKKyAgICAgICAgY2FzZSAyNSA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIEVMU0UgKi8xMDsKKyAgICAgICAgY2FzZSAyNiA6IAor
ICAgICAgICAgICAgcmV0dXJuIC8qIFNFTEVDVCAqLzExOworICAgICAgICBjYXNlIDI3IDogCisg
ICAgICAgICAgICByZXR1cm4gLyogQ0FMTCAqLzE2OworICAgICAgICBjYXNlIDI4IDogCisgICAg
ICAgICAgICByZXR1cm4gLyogQ0FMTF9JTkRJUkVDVCAqLzE3OworICAgICAgICBjYXNlIDI5IDog
CisgICAgICAgICAgICByZXR1cm4gLyogR0VUX0xPQ0FMICovMTk7CisgICAgICAgIGNhc2UgMzAg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBTRVRfTE9DQUwgKi8yMDsKKyAgICAgICAgY2FzZSAz
MSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFRFRV9MT0NBTCAqLzIxOworICAgICAgICBjYXNl
IDMyIDogCisgICAgICAgICAgICByZXR1cm4gLyogR0VUX0dMT0JBTCAqLzIyOworICAgICAgICBj
YXNlIDMzIDogCisgICAgICAgICAgICByZXR1cm4gLyogU0VUX0dMT0JBTCAqLzIzOworICAgICAg
ICBjYXNlIDM0IDogCisgICAgICAgICAgICB2YXIgdCQyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4
YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIExPQUQgKi9CbG9j
ay5fXyg2LCBbKGZ1bmN0aW9uKHQkMil7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uIChhLCBvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmcg
PSBDdXJyeS5fMihvcHQsIGEsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRp
YWxfYXJnJDEgPSBDdXJyeS5fMihvcHQsIGEsIDMpOworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHBhcnRpYWxfYXJnJDIgPSBDdXJyeS5fMihvcHQsIGEsIDIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHBhcnRpYWxfYXJnJDMgPSBDdXJyeS5fMihvcHQsIGEsIDMpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKG51bW9wKHQkMiwgZnVuY3Rpb24gKHBh
cmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pMzJfbG9hZChwYXJ0aWFsX2FyZywgcGFyYW0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkKHBhcnRp
YWxfYXJnJDEsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfbG9hZChwYXJ0aWFsX2FyZyQyLCBwYXJhbSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJhbSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuZjY0X2xvYWQocGFydGlhbF9hcmckMywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KSwgbyk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgIH0odCQyKSldKTsKKyAgICAgICAgY2FzZSAzNSA6IAorICAgICAgICAg
ICAgdmFyIHQkMyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsK
KyAgICAgICAgICAgIHJldHVybiAvKiBTVE9SRSAqL0Jsb2NrLl9fKDcsIFsoZnVuY3Rpb24odCQz
KXsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIG8pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBwYXJ0aWFsX2FyZyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMik7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMSA9IEN1cnJ5Ll8yKG9w
dCwgYSwgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMiA9IEN1
cnJ5Ll8yKG9wdCwgYSwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9h
cmckMyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ3VycnkuXzEobnVtb3AodCQzLCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zdG9yZShwYXJ0
aWFsX2FyZywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdG9yZShwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJhbSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuZjMyX3N0b3JlKHBhcnRpYWxfYXJnJDIsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfc3RvcmUocGFydGlh
bF9hcmckMywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KSwgbyk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIH0o
dCQzKSldKTsKKyAgICAgICAgY2FzZSAzNiA6IAorICAgICAgICAgICAgdmFyIHQkNCA9IExleGlu
Zy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHZhciBz
eiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyA4IHwgMCwgbGV4YnVmJDFbLyogbGV4X2N1cnJfcG9zICovNV0gLSAyIHwgMCk7Cisg
ICAgICAgICAgICB2YXIgcyQ0ID0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhcihsZXhidWYkMSwgbGV4
YnVmJDFbLyogbGV4X2N1cnJfcG9zICovNV0gLSAxIHwgMCk7CisgICAgICAgICAgICBpZiAodCQ0
ID09PSAiaTMyIiAmJiBzeiA9PT0gIjMyIikgeworICAgICAgICAgICAgICBlcnJvcihsZXhidWYk
MSwgInVua25vd24gb3BlcmF0b3IiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biAvKiBMT0FEICovQmxvY2suX18oNiwgWyhmdW5jdGlvbih0JDQsc3oscyQ0KXsKKyAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIG8pIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBpbnRvcCh0JDQsIEN1cnJ5Ll8xKG1lbXN6KHN6LCBDdXJyeS5fMShleHQo
cyQ0LCBPcGVyYXRvcnMuaTMyX2xvYWQ4X3MsIE9wZXJhdG9ycy5pMzJfbG9hZDhfdSksIEN1cnJ5
Ll8yKG9wdCwgYSwgMCkpLCBDdXJyeS5fMShleHQocyQ0LCBPcGVyYXRvcnMuaTMyX2xvYWQxNl9z
LCBPcGVyYXRvcnMuaTMyX2xvYWQxNl91KSwgQ3VycnkuXzIob3B0LCBhLCAxKSksIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy51bnJlYWNoYWJsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0pLCBvKSwgQ3VycnkuXzEobWVtc3ooc3osIEN1cnJ5Ll8xKGV4dChzJDQsIE9w
ZXJhdG9ycy5pNjRfbG9hZDhfcywgT3BlcmF0b3JzLmk2NF9sb2FkOF91KSwgQ3VycnkuXzIob3B0
LCBhLCAwKSksIEN1cnJ5Ll8xKGV4dChzJDQsIE9wZXJhdG9ycy5pNjRfbG9hZDE2X3MsIE9wZXJh
dG9ycy5pNjRfbG9hZDE2X3UpLCBDdXJyeS5fMihvcHQsIGEsIDEpKSwgQ3VycnkuXzEoZXh0KHMk
NCwgT3BlcmF0b3JzLmk2NF9sb2FkMzJfcywgT3BlcmF0b3JzLmk2NF9sb2FkMzJfdSksIEN1cnJ5
Ll8yKG9wdCwgYSwgMikpKSwgbykpOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICB9KHQkNCxzeixzJDQpKV0pOworICAgICAgICBjYXNlIDM3IDogCisgICAg
ICAgICAgICB2YXIgdCQ1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8
IDApOworICAgICAgICAgICAgdmFyIHN6JDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgOSB8IDAsIGxleGJ1ZiQxWy8qIGxleF9j
dXJyX3BvcyAqLzVdKTsKKyAgICAgICAgICAgIGlmICh0JDUgPT09ICJpMzIiICYmIHN6JDEgPT09
ICIzMiIpIHsKKyAgICAgICAgICAgICAgZXJyb3IobGV4YnVmJDEsICJ1bmtub3duIG9wZXJhdG9y
Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLyogU1RPUkUgKi9CbG9jay5f
Xyg3LCBbKGZ1bmN0aW9uKHQkNSxzeiQxKXsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24gKGEsIG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJ0aWFsX2Fy
ZyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFy
dGlhbF9hcmckMSA9IEN1cnJ5Ll8yKG9wdCwgYSwgMSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgcGFydGlhbF9hcmckMiA9IEN1cnJ5Ll8yKG9wdCwgYSwgMCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckNCA9IEN1cnJ5Ll8yKG9wdCwgYSwg
Mik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50b3AodCQ1LCBDdXJyeS5fMSht
ZW1zeihzeiQxLCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmU4KHBhcnRpYWxfYXJn
LCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBm
dW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmUxNihwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMudW5yZWFjaGFibGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9KSwgbyksIEN1cnJ5Ll8xKG1lbXN6KHN6JDEsIGZ1bmN0aW9uIChwYXJhbSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmk2NF9zdG9yZTgocGFydGlhbF9hcmckMiwgcGFyYW0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3N0
b3JlMTYocGFydGlhbF9hcmckMywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMzIocGFy
dGlhbF9hcmckNCwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSksIG8pKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgfSh0JDUsc3okMSkpXSk7CisgICAgICAgIGNhc2UgMzggOiAKKyAgICAgICAgICAgIHZh
ciBzJDUgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0
X3BvcyAqLzRdICsgNyB8IDAsIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKKyAgICAg
ICAgICAgIHJldHVybiAvKiBPRkZTRVRfRVFfTkFUICovQmxvY2suX18oOCwgW3MkNV0pOworICAg
ICAgICBjYXNlIDM5IDogCisgICAgICAgICAgICB2YXIgcyQ2ID0gTGV4aW5nLnN1Yl9sZXhlbWUo
bGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDYgfCAwLCBsZXhidWYk
MVsvKiBsZXhfY3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogQUxJR05fRVFf
TkFUICovQmxvY2suX18oOSwgW3MkNl0pOworICAgICAgICBjYXNlIDQwIDogCisgICAgICAgICAg
ICB2YXIgdCQ2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9z
dGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwor
ICAgICAgICAgICAgcmV0dXJuIC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtpbnRvcCh0JDYsIE9w
ZXJhdG9ycy5pMzJfY2x6LCBPcGVyYXRvcnMuaTY0X2NseildKTsKKyAgICAgICAgY2FzZSA0MSA6
IAorICAgICAgICAgICAgdmFyIHQkNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhi
dWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80
XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBb
aW50b3AodCQ3LCBPcGVyYXRvcnMuaTMyX2N0eiwgT3BlcmF0b3JzLmk2NF9jdHopXSk7CisgICAg
ICAgIGNhc2UgNDIgOiAKKyAgICAgICAgICAgIHZhciB0JDggPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9C
bG9jay5fXygxMSwgW2ludG9wKHQkOCwgT3BlcmF0b3JzLmkzMl9wb3BjbnQsIE9wZXJhdG9ycy5p
NjRfcG9wY250KV0pOworICAgICAgICBjYXNlIDQzIDogCisgICAgICAgICAgICB2YXIgdCQ5ID0g
TGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80
XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAg
cmV0dXJuIC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtmbG9hdG9wKHQkOSwgT3BlcmF0b3JzLmYz
Ml9uZWcsIE9wZXJhdG9ycy5mNjRfbmVnKV0pOworICAgICAgICBjYXNlIDQ0IDogCisgICAgICAg
ICAgICB2YXIgdCQxMCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAw
KTsKKyAgICAgICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbZmxvYXRvcCh0
JDEwLCBPcGVyYXRvcnMuZjMyX2FicywgT3BlcmF0b3JzLmY2NF9hYnMpXSk7CisgICAgICAgIGNh
c2UgNDUgOiAKKyAgICAgICAgICAgIHZhciB0JDExID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVm
JDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0
X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIFVOQVJZICovQmxvY2su
X18oMTEsIFtmbG9hdG9wKHQkMTEsIE9wZXJhdG9ycy5mMzJfc3FydCwgT3BlcmF0b3JzLmY2NF9z
cXJ0KV0pOworICAgICAgICBjYXNlIDQ2IDogCisgICAgICAgICAgICB2YXIgdCQxMiA9IExleGlu
Zy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVy
biAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbZmxvYXRvcCh0JDEyLCBPcGVyYXRvcnMuZjMyX2Nl
aWwsIE9wZXJhdG9ycy5mNjRfY2VpbCldKTsKKyAgICAgICAgY2FzZSA0NyA6IAorICAgICAgICAg
ICAgdmFyIHQkMTMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3AodCQx
MywgT3BlcmF0b3JzLmYzMl9mbG9vciwgT3BlcmF0b3JzLmY2NF9mbG9vcildKTsKKyAgICAgICAg
Y2FzZSA0OCA6IAorICAgICAgICAgICAgdmFyIHQkMTQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhi
dWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3Rh
cnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9j
ay5fXygxMSwgW2Zsb2F0b3AodCQxNCwgT3BlcmF0b3JzLmYzMl90cnVuYywgT3BlcmF0b3JzLmY2
NF90cnVuYyldKTsKKyAgICAgICAgY2FzZSA0OSA6IAorICAgICAgICAgICAgdmFyIHQkMTUgPSBM
ZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
LCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3AodCQxNSwgT3BlcmF0b3JzLmYz
Ml9uZWFyZXN0LCBPcGVyYXRvcnMuZjY0X25lYXJlc3QpXSk7CisgICAgICAgIGNhc2UgNTAgOiAK
KyAgICAgICAgICAgIHZhciB0JDE2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBb
aW50b3AodCQxNiwgT3BlcmF0b3JzLmkzMl9hZGQsIE9wZXJhdG9ycy5pNjRfYWRkKV0pOworICAg
ICAgICBjYXNlIDUxIDogCisgICAgICAgICAgICB2YXIgdCQxNyA9IExleGluZy5zdWJfbGV4ZW1l
KGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkg
Ki9CbG9jay5fXygxMiwgW2ludG9wKHQkMTcsIE9wZXJhdG9ycy5pMzJfc3ViLCBPcGVyYXRvcnMu
aTY0X3N1YildKTsKKyAgICAgICAgY2FzZSA1MiA6IAorICAgICAgICAgICAgdmFyIHQkMTggPSBM
ZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
LCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDE4LCBPcGVyYXRvcnMuaTMy
X211bCwgT3BlcmF0b3JzLmk2NF9tdWwpXSk7CisgICAgICAgIGNhc2UgNTMgOiAKKyAgICAgICAg
ICAgIHZhciB0JDE5ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQx
OSwgT3BlcmF0b3JzLmkzMl9kaXZfcywgT3BlcmF0b3JzLmk2NF9kaXZfcyldKTsKKyAgICAgICAg
Y2FzZSA1NCA6IAorICAgICAgICAgICAgdmFyIHQkMjAgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhi
dWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3Rh
cnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxv
Y2suX18oMTIsIFtpbnRvcCh0JDIwLCBPcGVyYXRvcnMuaTMyX2Rpdl91LCBPcGVyYXRvcnMuaTY0
X2Rpdl91KV0pOworICAgICAgICBjYXNlIDU1IDogCisgICAgICAgICAgICB2YXIgdCQyMSA9IExl
eGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0s
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBCSU5BUlkgKi9CbG9jay5fXygxMiwgW2ludG9wKHQkMjEsIE9wZXJhdG9ycy5pMzJf
cmVtX3MsIE9wZXJhdG9ycy5pNjRfcmVtX3MpXSk7CisgICAgICAgIGNhc2UgNTYgOiAKKyAgICAg
ICAgICAgIHZhciB0JDIyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8
IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3Ao
dCQyMiwgT3BlcmF0b3JzLmkzMl9yZW1fdSwgT3BlcmF0b3JzLmk2NF9yZW1fdSldKTsKKyAgICAg
ICAgY2FzZSA1NyA6IAorICAgICAgICAgICAgdmFyIHQkMjMgPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICov
QmxvY2suX18oMTIsIFtpbnRvcCh0JDIzLCBPcGVyYXRvcnMuaTMyX2FuZCwgT3BlcmF0b3JzLmk2
NF9hbmQpXSk7CisgICAgICAgIGNhc2UgNTggOiAKKyAgICAgICAgICAgIHZhciB0JDI0ID0gTGV4
aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0
dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyNCwgT3BlcmF0b3JzLmkzMl9v
ciwgT3BlcmF0b3JzLmk2NF9vcildKTsKKyAgICAgICAgY2FzZSA1OSA6IAorICAgICAgICAgICAg
dmFyIHQkMjUgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDI1LCBP
cGVyYXRvcnMuaTMyX3hvciwgT3BlcmF0b3JzLmk2NF94b3IpXSk7CisgICAgICAgIGNhc2UgNjAg
OiAKKyAgICAgICAgICAgIHZhciB0JDI2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEy
LCBbaW50b3AodCQyNiwgT3BlcmF0b3JzLmkzMl9zaGwsIE9wZXJhdG9ycy5pNjRfc2hsKV0pOwor
ICAgICAgICBjYXNlIDYxIDogCisgICAgICAgICAgICB2YXIgdCQyNyA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBCSU5B
UlkgKi9CbG9jay5fXygxMiwgW2ludG9wKHQkMjcsIE9wZXJhdG9ycy5pMzJfc2hyX3MsIE9wZXJh
dG9ycy5pNjRfc2hyX3MpXSk7CisgICAgICAgIGNhc2UgNjIgOiAKKyAgICAgICAgICAgIHZhciB0
JDI4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAg
ICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyOCwgT3BlcmF0
b3JzLmkzMl9zaHJfdSwgT3BlcmF0b3JzLmk2NF9zaHJfdSldKTsKKyAgICAgICAgY2FzZSA2MyA6
IAorICAgICAgICAgICAgdmFyIHQkMjkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIs
IFtpbnRvcCh0JDI5LCBPcGVyYXRvcnMuaTMyX3JvdGwsIE9wZXJhdG9ycy5pNjRfcm90bCldKTsK
KyAgICAgICAgY2FzZSA2NCA6IAorICAgICAgICAgICAgdmFyIHQkMzAgPSBMZXhpbmcuc3ViX2xl
eGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklO
QVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDMwLCBPcGVyYXRvcnMuaTMyX3JvdHIsIE9wZXJh
dG9ycy5pNjRfcm90cildKTsKKyAgICAgICAgY2FzZSA2NSA6IAorICAgICAgICAgICAgdmFyIHQk
MzEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzEsIE9wZXJh
dG9ycy5mMzJfYWRkLCBPcGVyYXRvcnMuZjY0X2FkZCldKTsKKyAgICAgICAgY2FzZSA2NiA6IAor
ICAgICAgICAgICAgdmFyIHQkMzIgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVm
JDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0g
KyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtm
bG9hdG9wKHQkMzIsIE9wZXJhdG9ycy5mMzJfc3ViLCBPcGVyYXRvcnMuZjY0X3N1YildKTsKKyAg
ICAgICAgY2FzZSA2NyA6IAorICAgICAgICAgICAgdmFyIHQkMzMgPSBMZXhpbmcuc3ViX2xleGVt
ZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZ
ICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzMsIE9wZXJhdG9ycy5mMzJfbXVsLCBPcGVyYXRv
cnMuZjY0X211bCldKTsKKyAgICAgICAgY2FzZSA2OCA6IAorICAgICAgICAgICAgdmFyIHQkMzQg
PSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzQsIE9wZXJhdG9y
cy5mMzJfZGl2LCBPcGVyYXRvcnMuZjY0X2RpdildKTsKKyAgICAgICAgY2FzZSA2OSA6IAorICAg
ICAgICAgICAgdmFyIHQkMzUgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAz
IHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9h
dG9wKHQkMzUsIE9wZXJhdG9ycy5mMzJfbWluLCBPcGVyYXRvcnMuZjY0X21pbildKTsKKyAgICAg
ICAgY2FzZSA3MCA6IAorICAgICAgICAgICAgdmFyIHQkMzYgPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICov
QmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzYsIE9wZXJhdG9ycy5mMzJfbWF4LCBPcGVyYXRvcnMu
ZjY0X21heCldKTsKKyAgICAgICAgY2FzZSA3MSA6IAorICAgICAgICAgICAgdmFyIHQkMzcgPSBM
ZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
LCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzcsIE9wZXJhdG9ycy5m
MzJfY29weXNpZ24sIE9wZXJhdG9ycy5mNjRfY29weXNpZ24pXSk7CisgICAgICAgIGNhc2UgNzIg
OiAKKyAgICAgICAgICAgIHZhciB0JDM4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIFRFU1QgKi9CbG9jay5fXygxNSwg
W2ludG9wKHQkMzgsIE9wZXJhdG9ycy5pMzJfZXF6LCBPcGVyYXRvcnMuaTY0X2VxeildKTsKKyAg
ICAgICAgY2FzZSA3MyA6IAorICAgICAgICAgICAgdmFyIHQkMzkgPSBMZXhpbmcuc3ViX2xleGVt
ZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFS
RSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQzOSwgT3BlcmF0b3JzLmkzMl9lcSwgT3BlcmF0b3Jz
Lmk2NF9lcSldKTsKKyAgICAgICAgY2FzZSA3NCA6IAorICAgICAgICAgICAgdmFyIHQkNDAgPSBM
ZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
LCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0MCwgT3BlcmF0b3JzLmkz
Ml9uZSwgT3BlcmF0b3JzLmk2NF9uZSldKTsKKyAgICAgICAgY2FzZSA3NSA6IAorICAgICAgICAg
ICAgdmFyIHQkNDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0
MSwgT3BlcmF0b3JzLmkzMl9sdF9zLCBPcGVyYXRvcnMuaTY0X2x0X3MpXSk7CisgICAgICAgIGNh
c2UgNzYgOiAKKyAgICAgICAgICAgIHZhciB0JDQyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVm
JDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0
X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9j
ay5fXygxMywgW2ludG9wKHQkNDIsIE9wZXJhdG9ycy5pMzJfbHRfdSwgT3BlcmF0b3JzLmk2NF9s
dF91KV0pOworICAgICAgICBjYXNlIDc3IDogCisgICAgICAgICAgICB2YXIgdCQ0MyA9IExleGlu
Zy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVy
biAvKiBDT01QQVJFICovQmxvY2suX18oMTMsIFtpbnRvcCh0JDQzLCBPcGVyYXRvcnMuaTMyX2xl
X3MsIE9wZXJhdG9ycy5pNjRfbGVfcyldKTsKKyAgICAgICAgY2FzZSA3OCA6IAorICAgICAgICAg
ICAgdmFyIHQkNDQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0
NCwgT3BlcmF0b3JzLmkzMl9sZV91LCBPcGVyYXRvcnMuaTY0X2xlX3UpXSk7CisgICAgICAgIGNh
c2UgNzkgOiAKKyAgICAgICAgICAgIHZhciB0JDQ1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVm
JDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0
X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9j
ay5fXygxMywgW2ludG9wKHQkNDUsIE9wZXJhdG9ycy5pMzJfZ3RfcywgT3BlcmF0b3JzLmk2NF9n
dF9zKV0pOworICAgICAgICBjYXNlIDgwIDogCisgICAgICAgICAgICB2YXIgdCQ0NiA9IExleGlu
Zy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVy
biAvKiBDT01QQVJFICovQmxvY2suX18oMTMsIFtpbnRvcCh0JDQ2LCBPcGVyYXRvcnMuaTMyX2d0
X3UsIE9wZXJhdG9ycy5pNjRfZ3RfdSldKTsKKyAgICAgICAgY2FzZSA4MSA6IAorICAgICAgICAg
ICAgdmFyIHQkNDcgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0
NywgT3BlcmF0b3JzLmkzMl9nZV9zLCBPcGVyYXRvcnMuaTY0X2dlX3MpXSk7CisgICAgICAgIGNh
c2UgODIgOiAKKyAgICAgICAgICAgIHZhciB0JDQ4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVm
JDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0
X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9j
ay5fXygxMywgW2ludG9wKHQkNDgsIE9wZXJhdG9ycy5pMzJfZ2VfdSwgT3BlcmF0b3JzLmk2NF9n
ZV91KV0pOworICAgICAgICBjYXNlIDgzIDogCisgICAgICAgICAgICB2YXIgdCQ0OSA9IExleGlu
Zy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVy
biAvKiBDT01QQVJFICovQmxvY2suX18oMTMsIFtmbG9hdG9wKHQkNDksIE9wZXJhdG9ycy5mMzJf
ZXEsIE9wZXJhdG9ycy5mNjRfZXEpXSk7CisgICAgICAgIGNhc2UgODQgOiAKKyAgICAgICAgICAg
IHZhciB0JDUwID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9z
dGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwor
ICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2Zsb2F0b3AodCQ1
MCwgT3BlcmF0b3JzLmYzMl9uZSwgT3BlcmF0b3JzLmY2NF9uZSldKTsKKyAgICAgICAgY2FzZSA4
NSA6IAorICAgICAgICAgICAgdmFyIHQkNTEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9f
KDEzLCBbZmxvYXRvcCh0JDUxLCBPcGVyYXRvcnMuZjMyX2x0LCBPcGVyYXRvcnMuZjY0X2x0KV0p
OworICAgICAgICBjYXNlIDg2IDogCisgICAgICAgICAgICB2YXIgdCQ1MiA9IExleGluZy5zdWJf
bGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQx
Wy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBD
T01QQVJFICovQmxvY2suX18oMTMsIFtmbG9hdG9wKHQkNTIsIE9wZXJhdG9ycy5mMzJfbGUsIE9w
ZXJhdG9ycy5mNjRfbGUpXSk7CisgICAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgICAgIHZhciB0
JDUzID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAg
ICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2Zsb2F0b3AodCQ1MywgT3Bl
cmF0b3JzLmYzMl9ndCwgT3BlcmF0b3JzLmY2NF9ndCldKTsKKyAgICAgICAgY2FzZSA4OCA6IAor
ICAgICAgICAgICAgdmFyIHQkNTQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVm
JDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0g
KyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBb
ZmxvYXRvcCh0JDU0LCBPcGVyYXRvcnMuZjMyX2dlLCBPcGVyYXRvcnMuZjY0X2dlKV0pOworICAg
ICAgICBjYXNlIDg5IDogCisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9f
KDE0LCBbT3BlcmF0b3JzLmkzMl93cmFwX2k2NF0pOworICAgICAgICBjYXNlIDkwIDogCisgICAg
ICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbT3BlcmF0b3JzLmk2NF9l
eHRlbmRfc19pMzJdKTsKKyAgICAgICAgY2FzZSA5MSA6IAorICAgICAgICAgICAgcmV0dXJuIC8q
IENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5pNjRfZXh0ZW5kX3VfaTMyXSk7Cisg
ICAgICAgIGNhc2UgOTIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2su
X18oMTQsIFtPcGVyYXRvcnMuZjMyX2RlbW90ZV9mNjRdKTsKKyAgICAgICAgY2FzZSA5MyA6IAor
ICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5m
NjRfcHJvbW90ZV9mMzJdKTsKKyAgICAgICAgY2FzZSA5NCA6IAorICAgICAgICAgICAgdmFyIHQk
NTUgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1NSwgT3BlcmF0
b3JzLmkzMl90cnVuY19zX2YzMiwgT3BlcmF0b3JzLmk2NF90cnVuY19zX2YzMildKTsKKyAgICAg
ICAgY2FzZSA5NSA6IAorICAgICAgICAgICAgdmFyIHQkNTYgPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAq
L0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1NiwgT3BlcmF0b3JzLmkzMl90cnVuY191X2YzMiwgT3Bl
cmF0b3JzLmk2NF90cnVuY191X2YzMildKTsKKyAgICAgICAgY2FzZSA5NiA6IAorICAgICAgICAg
ICAgdmFyIHQkNTcgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1
NywgT3BlcmF0b3JzLmkzMl90cnVuY19zX2Y2NCwgT3BlcmF0b3JzLmk2NF90cnVuY19zX2Y2NCld
KTsKKyAgICAgICAgY2FzZSA5NyA6IAorICAgICAgICAgICAgdmFyIHQkNTggPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyog
Q09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1OCwgT3BlcmF0b3JzLmkzMl90cnVuY191
X2Y2NCwgT3BlcmF0b3JzLmk2NF90cnVuY191X2Y2NCldKTsKKyAgICAgICAgY2FzZSA5OCA6IAor
ICAgICAgICAgICAgdmFyIHQkNTkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVm
JDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0g
KyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBb
ZmxvYXRvcCh0JDU5LCBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfc19pMzIsIE9wZXJhdG9ycy5mNjRf
Y29udmVydF9zX2kzMildKTsKKyAgICAgICAgY2FzZSA5OSA6IAorICAgICAgICAgICAgdmFyIHQk
NjAgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbZmxvYXRvcCh0JDYwLCBPcGVy
YXRvcnMuZjMyX2NvbnZlcnRfdV9pMzIsIE9wZXJhdG9ycy5mNjRfY29udmVydF91X2kzMildKTsK
KyAgICAgICAgY2FzZSAxMDAgOiAKKyAgICAgICAgICAgIHZhciB0JDYxID0gTGV4aW5nLnN1Yl9s
ZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENP
TlZFUlQgKi9CbG9jay5fXygxNCwgW2Zsb2F0b3AodCQ2MSwgT3BlcmF0b3JzLmYzMl9jb252ZXJ0
X3NfaTY0LCBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pNjQpXSk7CisgICAgICAgIGNhc2UgMTAx
IDogCisgICAgICAgICAgICB2YXIgdCQ2MiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18o
MTQsIFtmbG9hdG9wKHQkNjIsIE9wZXJhdG9ycy5mMzJfY29udmVydF91X2k2NCwgT3BlcmF0b3Jz
LmY2NF9jb252ZXJ0X3VfaTY0KV0pOworICAgICAgICBjYXNlIDEwMiA6IAorICAgICAgICAgICAg
cmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5mMzJfcmVpbnRlcnBy
ZXRfaTMyXSk7CisgICAgICAgIGNhc2UgMTAzIDogCisgICAgICAgICAgICByZXR1cm4gLyogQ09O
VkVSVCAqL0Jsb2NrLl9fKDE0LCBbT3BlcmF0b3JzLmY2NF9yZWludGVycHJldF9pNjRdKTsKKyAg
ICAgICAgY2FzZSAxMDQgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2su
X18oMTQsIFtPcGVyYXRvcnMuaTMyX3JlaW50ZXJwcmV0X2YzMl0pOworICAgICAgICBjYXNlIDEw
NSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJh
dG9ycy5pNjRfcmVpbnRlcnByZXRfZjY0XSk7CisgICAgICAgIGNhc2UgMTA2IDogCisgICAgICAg
ICAgICByZXR1cm4gLyogQ1VSUkVOVF9NRU1PUlkgKi8yNTsKKyAgICAgICAgY2FzZSAxMDcgOiAK
KyAgICAgICAgICAgIHJldHVybiAvKiBHUk9XX01FTU9SWSAqLzI2OworICAgICAgICBjYXNlIDEw
OCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFRZUEUgKi8yOTsKKyAgICAgICAgY2FzZSAxMDkg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBGVU5DICovMjc7CisgICAgICAgIGNhc2UgMTEwIDog
CisgICAgICAgICAgICByZXR1cm4gLyogU1RBUlQgKi8yODsKKyAgICAgICAgY2FzZSAxMTEgOiAK
KyAgICAgICAgICAgIHJldHVybiAvKiBQQVJBTSAqLzMwOworICAgICAgICBjYXNlIDExMiA6IAor
ICAgICAgICAgICAgcmV0dXJuIC8qIFJFU1VMVCAqLzMxOworICAgICAgICBjYXNlIDExMyA6IAor
ICAgICAgICAgICAgcmV0dXJuIC8qIExPQ0FMICovMzI7CisgICAgICAgIGNhc2UgMTE0IDogCisg
ICAgICAgICAgICByZXR1cm4gLyogR0xPQkFMICovMzM7CisgICAgICAgIGNhc2UgMTE1IDogCisg
ICAgICAgICAgICByZXR1cm4gLyogTU9EVUxFICovMzQ7CisgICAgICAgIGNhc2UgMTE2IDogCisg
ICAgICAgICAgICByZXR1cm4gLyogVEFCTEUgKi8zNTsKKyAgICAgICAgY2FzZSAxMTcgOiAKKyAg
ICAgICAgICAgIHJldHVybiAvKiBNRU1PUlkgKi8zNzsKKyAgICAgICAgY2FzZSAxMTggOiAKKyAg
ICAgICAgICAgIHJldHVybiAvKiBFTEVNICovMzY7CisgICAgICAgIGNhc2UgMTE5IDogCisgICAg
ICAgICAgICByZXR1cm4gLyogREFUQSAqLzM4OworICAgICAgICBjYXNlIDEyMCA6IAorICAgICAg
ICAgICAgcmV0dXJuIC8qIE9GRlNFVCAqLzM5OworICAgICAgICBjYXNlIDEyMSA6IAorICAgICAg
ICAgICAgcmV0dXJuIC8qIElNUE9SVCAqLzQwOworICAgICAgICBjYXNlIDEyMiA6IAorICAgICAg
ICAgICAgcmV0dXJuIC8qIEVYUE9SVCAqLzQxOworICAgICAgICBjYXNlIDEyMyA6IAorICAgICAg
ICAgICAgcmV0dXJuIC8qIFNDUklQVCAqLzQyOworICAgICAgICBjYXNlIDEyNCA6IAorICAgICAg
ICAgICAgcmV0dXJuIC8qIFJFR0lTVEVSICovNDM7CisgICAgICAgIGNhc2UgMTI1IDogCisgICAg
ICAgICAgICByZXR1cm4gLyogSU5WT0tFICovNDQ7CisgICAgICAgIGNhc2UgMTI2IDogCisgICAg
ICAgICAgICByZXR1cm4gLyogR0VUICovNDU7CisgICAgICAgIGNhc2UgMTI3IDogCisgICAgICAg
ICAgICByZXR1cm4gLyogQVNTRVJUX01BTEZPUk1FRCAqLzQ2OworICAgICAgICBjYXNlIDEyOCA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIEFTU0VSVF9JTlZBTElEICovNDc7CisgICAgICAgIGNh
c2UgMTI5IDogCisgICAgICAgICAgICByZXR1cm4gLyogQVNTRVJUX1NPRlRfSU5WQUxJRCAqLzQ4
OworICAgICAgICBjYXNlIDEzMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEFTU0VSVF9VTkxJ
TktBQkxFICovNDk7CisgICAgICAgIGNhc2UgMTMxIDogCisgICAgICAgICAgICByZXR1cm4gLyog
QVNTRVJUX1JFVFVSTiAqLzUwOworICAgICAgICBjYXNlIDEzMiA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIEFTU0VSVF9SRVRVUk5fTkFOICovNTE7CisgICAgICAgIGNhc2UgMTMzIDogCisgICAg
ICAgICAgICByZXR1cm4gLyogQVNTRVJUX1RSQVAgKi81MjsKKyAgICAgICAgY2FzZSAxMzQgOiAK
KyAgICAgICAgICAgIHJldHVybiAvKiBBU1NFUlRfRVhIQVVTVElPTiAqLzUzOworICAgICAgICBj
YXNlIDEzNSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIElOUFVUICovNTQ7CisgICAgICAgIGNh
c2UgMTM2IDogCisgICAgICAgICAgICByZXR1cm4gLyogT1VUUFVUICovNTU7CisgICAgICAgIGNh
c2UgMTM3IDogCisgICAgICAgICAgICB2YXIgcyQ3ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVm
JDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X2N1cnJf
cG9zICovNV0pOworICAgICAgICAgICAgcmV0dXJuIC8qIFZBUiAqL0Jsb2NrLl9fKDQsIFtzJDdd
KTsKKyAgICAgICAgY2FzZSAxNDAgOiAKKyAgICAgICAgICAgIF9fb2NhbWxfbGV4X2NvbW1lbnRf
cmVjKExleGluZy5sZXhlbWVfc3RhcnRfcChsZXhidWYkMSksIGxleGJ1ZiQxLCA2ODQpOworICAg
ICAgICAgICAgcmV0dXJuIHRva2VuKGxleGJ1ZiQxKTsKKyAgICAgICAgY2FzZSAxNDEgOiAKKyAg
ICAgICAgICAgIHJldHVybiB0b2tlbihsZXhidWYkMSk7CisgICAgICAgIGNhc2UgMTM5IDogCisg
ICAgICAgIGNhc2UgMTQyIDogCisgICAgICAgICAgICBMZXhpbmcubmV3X2xpbmUobGV4YnVmJDEp
OworICAgICAgICAgICAgcmV0dXJuIHRva2VuKGxleGJ1ZiQxKTsKKyAgICAgICAgY2FzZSAxMzgg
OiAKKyAgICAgICAgY2FzZSAxNDMgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFT0YgKi81NjsK
KyAgICAgICAgY2FzZSAxNDQgOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihsZXhidWYkMSwg
InVua25vd24gb3BlcmF0b3IiKTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQor
CitmdW5jdGlvbiBfX29jYW1sX2xleF9jb21tZW50X3JlYyhzdGFydCwgbGV4YnVmLCBfX19vY2Ft
bF9sZXhfc3RhdGUpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBfX29jYW1sX2xleF9zdGF0
ZSA9IF9fX29jYW1sX2xleF9zdGF0ZTsKKyAgICB2YXIgX19vY2FtbF9sZXhfc3RhdGUkMSA9IExl
eGluZy5lbmdpbmUoX19vY2FtbF9sZXhfdGFibGVzLCBfX29jYW1sX2xleF9zdGF0ZSwgbGV4YnVm
KTsKKyAgICBpZiAoX19vY2FtbF9sZXhfc3RhdGUkMSA+IDQgfHwgX19vY2FtbF9sZXhfc3RhdGUk
MSA8IDApIHsKKyAgICAgIEN1cnJ5Ll8xKGxleGJ1ZlsvKiByZWZpbGxfYnVmZiAqLzBdLCBsZXhi
dWYpOworICAgICAgX19fb2NhbWxfbGV4X3N0YXRlID0gX19vY2FtbF9sZXhfc3RhdGUkMTsKKyAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRjaCAo
X19vY2FtbF9sZXhfc3RhdGUkMSkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgX19vY2FtbF9s
ZXhfY29tbWVudF9yZWMoTGV4aW5nLmxleGVtZV9zdGFydF9wKGxleGJ1ZiksIGxleGJ1ZiwgNjg0
KTsKKyAgICAgICAgICAgIF9fX29jYW1sX2xleF9zdGF0ZSA9IDY4NDsKKyAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgTGV4aW5nLm5ld19s
aW5lKGxleGJ1Zik7CisgICAgICAgICAgICBfX19vY2FtbF9sZXhfc3RhdGUgPSA2ODQ7CisgICAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHJl
dHVybiBlcnJvcl9uZXN0KHN0YXJ0LCBsZXhidWYsICJ1bmNsb3NlZCBjb21tZW50Iik7CisgICAg
ICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgX19fb2NhbWxfbGV4X3N0YXRlID0gNjg0OworICAg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisgICAgICB9CisgICAgfQorICB9Owor
fQorCitleHBvcnRzLmNvbnZlcnRfcG9zID0gY29udmVydF9wb3M7CitleHBvcnRzLnRva2VuICAg
ICAgID0gdG9rZW47CisvKiBGMzIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBv
ZiBsZXhlci5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAg
X3JlZ2lzdHJ5WydsZXhpbmcnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7
fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGxleGluZy5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgU3lzICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3N5cyIpOwordmFyIEJ5
dGVzICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ieXRlcyIpOwordmFyIEN1cnJ5ICAg
ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfYnl0ZXMgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2J5dGVzIik7Cit2YXIgQ2FtbF9sZXhlciAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfbGV4ZXIiKTsKK3ZhciBQZXJ2YXNpdmVzICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxfc3RyaW5nICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlv
biBlbmdpbmUodGJsLCBzdGF0ZSwgYnVmKSB7CisgIHZhciByZXN1bHQgPSBDYW1sX2xleGVyLmNh
bWxfbGV4X2VuZ2luZSh0YmwsIHN0YXRlLCBidWYpOworICBpZiAocmVzdWx0ID49IDApIHsKKyAg
ICBidWZbLyogbGV4X3N0YXJ0X3AgKi8xMF0gPSBidWZbLyogbGV4X2N1cnJfcCAqLzExXTsKKyAg
ICB2YXIgaW5pdCA9IGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdOworICAgIGJ1ZlsvKiBsZXhfY3Vy
cl9wICovMTFdID0gLyogcmVjb3JkICovWworICAgICAgLyogcG9zX2ZuYW1lICovaW5pdFsvKiBw
b3NfZm5hbWUgKi8wXSwKKyAgICAgIC8qIHBvc19sbnVtICovaW5pdFsvKiBwb3NfbG51bSAqLzFd
LAorICAgICAgLyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJdLAorICAgICAgLyogcG9z
X2NudW0gKi9idWZbLyogbGV4X2Fic19wb3MgKi8zXSArIGJ1ZlsvKiBsZXhfY3Vycl9wb3MgKi81
XSB8IDAKKyAgICBdOworICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIG5ld19l
bmdpbmUodGJsLCBzdGF0ZSwgYnVmKSB7CisgIHZhciByZXN1bHQgPSBDYW1sX2xleGVyLmNhbWxf
bmV3X2xleF9lbmdpbmUodGJsLCBzdGF0ZSwgYnVmKTsKKyAgaWYgKHJlc3VsdCA+PSAwKSB7Cisg
ICAgYnVmWy8qIGxleF9zdGFydF9wICovMTBdID0gYnVmWy8qIGxleF9jdXJyX3AgKi8xMV07Cisg
ICAgdmFyIGluaXQgPSBidWZbLyogbGV4X2N1cnJfcCAqLzExXTsKKyAgICBidWZbLyogbGV4X2N1
cnJfcCAqLzExXSA9IC8qIHJlY29yZCAqL1sKKyAgICAgIC8qIHBvc19mbmFtZSAqL2luaXRbLyog
cG9zX2ZuYW1lICovMF0sCisgICAgICAvKiBwb3NfbG51bSAqL2luaXRbLyogcG9zX2xudW0gKi8x
XSwKKyAgICAgIC8qIHBvc19ib2wgKi9pbml0Wy8qIHBvc19ib2wgKi8yXSwKKyAgICAgIC8qIHBv
c19jbnVtICovYnVmWy8qIGxleF9hYnNfcG9zICovM10gKyBidWZbLyogbGV4X2N1cnJfcG9zICov
NV0gfCAwCisgICAgXTsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit2YXIgemVyb19wb3Mg
PSAvKiByZWNvcmQgKi9bCisgIC8qIHBvc19mbmFtZSAqLyIiLAorICAvKiBwb3NfbG51bSAqLzEs
CisgIC8qIHBvc19ib2wgKi8wLAorICAvKiBwb3NfY251bSAqLzAKK107CisKK2Z1bmN0aW9uIGZy
b21fZnVuY3Rpb24oZikgeworICB2YXIgcGFydGlhbF9hcmcgPSBuZXcgQXJyYXkoNTEyKTsKKyAg
cmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiByZWZpbGxfYnVmZiAqL2Z1bmN0aW9u
IChwYXJhbSkgeworICAgICAgICAgICAgdmFyIHJlYWRfZnVuID0gZjsKKyAgICAgICAgICAgIHZh
ciBhdXhfYnVmZmVyID0gcGFydGlhbF9hcmc7CisgICAgICAgICAgICB2YXIgbGV4YnVmID0gcGFy
YW07CisgICAgICAgICAgICB2YXIgcmVhZCA9IEN1cnJ5Ll8yKHJlYWRfZnVuLCBhdXhfYnVmZmVy
LCBhdXhfYnVmZmVyLmxlbmd0aCk7CisgICAgICAgICAgICB2YXIgbiA9IHJlYWQgPiAwID8gcmVh
ZCA6IChsZXhidWZbLyogbGV4X2VvZl9yZWFjaGVkICovOF0gPSAvKiB0cnVlICovMSwgMCk7Cisg
ICAgICAgICAgICBpZiAoKGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdICsgbiB8IDApID4g
bGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgaWYgKCgo
bGV4YnVmWy8qIGxleF9idWZmZXJfbGVuICovMl0gLSBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdIHwgMCkgKyBuIHwgMCkgPD0gbGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXS5sZW5ndGgpIHsK
KyAgICAgICAgICAgICAgICBCeXRlcy5ibGl0KGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGxl
eGJ1ZlsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIDAs
IGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gbGV4YnVmWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSB8IDApOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIHZhciBuZXdsZW4gPSBQZXJ2YXNpdmVzLm1pbigobGV4YnVmWy8qIGxleF9idWZm
ZXIgKi8xXS5sZW5ndGggPDwgMSksIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCk7CisgICAgICAgICAg
ICAgICAgaWYgKCgobGV4YnVmWy8qIGxleF9idWZmZXJfbGVuICovMl0gLSBsZXhidWZbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdIHwgMCkgKyBuIHwgMCkgPiBuZXdsZW4pIHsKKyAgICAgICAgICAgICAg
ICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAiTGV4aW5nLmxleF9yZWZpbGw6
IGNhbm5vdCBncm93IGJ1ZmZlciIKKyAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgbmV3YnVmID0gQ2FtbF9zdHJpbmcuY2FtbF9j
cmVhdGVfc3RyaW5nKG5ld2xlbik7CisgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdChsZXhidWZb
LyogbGV4X2J1ZmZlciAqLzFdLCBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBuZXdidWYs
IDAsIGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gbGV4YnVmWy8qIGxleF9zdGFydF9w
b3MgKi80XSB8IDApOworICAgICAgICAgICAgICAgIGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0g
PSBuZXdidWY7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgdmFyIHMgPSBsZXhidWZb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdOworICAgICAgICAgICAgICBsZXhidWZbLyogbGV4X2Fic19w
b3MgKi8zXSA9IGxleGJ1ZlsvKiBsZXhfYWJzX3BvcyAqLzNdICsgcyB8IDA7CisgICAgICAgICAg
ICAgIGxleGJ1ZlsvKiBsZXhfY3Vycl9wb3MgKi81XSA9IGxleGJ1ZlsvKiBsZXhfY3Vycl9wb3Mg
Ki81XSAtIHMgfCAwOworICAgICAgICAgICAgICBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ID0gMDsKKyAgICAgICAgICAgICAgbGV4YnVmWy8qIGxleF9sYXN0X3BvcyAqLzZdID0gbGV4YnVm
Wy8qIGxleF9sYXN0X3BvcyAqLzZdIC0gcyB8IDA7CisgICAgICAgICAgICAgIGxleGJ1ZlsvKiBs
ZXhfYnVmZmVyX2xlbiAqLzJdID0gbGV4YnVmWy8qIGxleF9idWZmZXJfbGVuICovMl0gLSBzIHwg
MDsKKyAgICAgICAgICAgICAgdmFyIHQgPSBsZXhidWZbLyogbGV4X21lbSAqLzldOworICAgICAg
ICAgICAgICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IHQubGVuZ3RoIC0gMSB8IDA7IGkgPD0g
aV9maW5pc2g7ICsraSl7CisgICAgICAgICAgICAgICAgdmFyIHYgPSB0W2ldOworICAgICAgICAg
ICAgICAgIGlmICh2ID49IDApIHsKKyAgICAgICAgICAgICAgICAgIHRbaV0gPSB2IC0gcyB8IDA7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBCeXRlcy5ibGl0KGF1eF9idWZmZXIsIDAsIGxleGJ1
ZlsvKiBsZXhfYnVmZmVyICovMV0sIGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdLCBuKTsK
KyAgICAgICAgICAgIGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdID0gbGV4YnVmWy8qIGxl
eF9idWZmZXJfbGVuICovMl0gKyBuIHwgMDsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7
CisgICAgICAgICAgfSwKKyAgICAgICAgICAvKiBsZXhfYnVmZmVyICovbmV3IEFycmF5KDEwMjQp
LAorICAgICAgICAgIC8qIGxleF9idWZmZXJfbGVuICovMCwKKyAgICAgICAgICAvKiBsZXhfYWJz
X3BvcyAqLzAsCisgICAgICAgICAgLyogbGV4X3N0YXJ0X3BvcyAqLzAsCisgICAgICAgICAgLyog
bGV4X2N1cnJfcG9zICovMCwKKyAgICAgICAgICAvKiBsZXhfbGFzdF9wb3MgKi8wLAorICAgICAg
ICAgIC8qIGxleF9sYXN0X2FjdGlvbiAqLzAsCisgICAgICAgICAgLyogbGV4X2VvZl9yZWFjaGVk
IDogZmFsc2UgKi8wLAorICAgICAgICAgIC8qIGxleF9tZW0gOiBpbnQgYXJyYXkgKi9bXSwKKyAg
ICAgICAgICAvKiBsZXhfc3RhcnRfcCAqL3plcm9fcG9zLAorICAgICAgICAgIC8qIGxleF9jdXJy
X3AgKi96ZXJvX3BvcworICAgICAgICBdOworfQorCitmdW5jdGlvbiBmcm9tX2NoYW5uZWwoaWMp
IHsKKyAgcmV0dXJuIGZyb21fZnVuY3Rpb24oZnVuY3Rpb24gKGJ1ZiwgbikgeworICAgICAgICAg
ICAgICByZXR1cm4gUGVydmFzaXZlcy5pbnB1dChpYywgYnVmLCAwLCBuKTsKKyAgICAgICAgICAg
IH0pOworfQorCitmdW5jdGlvbiBmcm9tX3N0cmluZyhzKSB7CisgIHJldHVybiAvKiByZWNvcmQg
Ki9bCisgICAgICAgICAgLyogcmVmaWxsX2J1ZmYgKi9mdW5jdGlvbiAobGV4YnVmKSB7CisgICAg
ICAgICAgICBsZXhidWZbLyogbGV4X2VvZl9yZWFjaGVkICovOF0gPSAvKiB0cnVlICovMTsKKyAg
ICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfSwKKyAgICAgICAgICAvKiBs
ZXhfYnVmZmVyICovQnl0ZXMub2Zfc3RyaW5nKHMpLAorICAgICAgICAgIC8qIGxleF9idWZmZXJf
bGVuICovcy5sZW5ndGgsCisgICAgICAgICAgLyogbGV4X2Fic19wb3MgKi8wLAorICAgICAgICAg
IC8qIGxleF9zdGFydF9wb3MgKi8wLAorICAgICAgICAgIC8qIGxleF9jdXJyX3BvcyAqLzAsCisg
ICAgICAgICAgLyogbGV4X2xhc3RfcG9zICovMCwKKyAgICAgICAgICAvKiBsZXhfbGFzdF9hY3Rp
b24gKi8wLAorICAgICAgICAgIC8qIGxleF9lb2ZfcmVhY2hlZCA6IHRydWUgKi8xLAorICAgICAg
ICAgIC8qIGxleF9tZW0gOiBpbnQgYXJyYXkgKi9bXSwKKyAgICAgICAgICAvKiBsZXhfc3RhcnRf
cCAqL3plcm9fcG9zLAorICAgICAgICAgIC8qIGxleF9jdXJyX3AgKi96ZXJvX3BvcworICAgICAg
ICBdOworfQorCitmdW5jdGlvbiBsZXhlbWUobGV4YnVmKSB7CisgIHZhciBsZW4gPSBsZXhidWZb
LyogbGV4X2N1cnJfcG9zICovNV0gLSBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdIHwgMDsK
KyAgcmV0dXJuIEJ5dGVzLnN1Yl9zdHJpbmcobGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXSwgbGV4
YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGVuKTsKK30KKworZnVuY3Rpb24gc3ViX2xleGVt
ZShsZXhidWYsIGkxLCBpMikgeworICB2YXIgbGVuID0gaTIgLSBpMSB8IDA7CisgIHJldHVybiBC
eXRlcy5zdWJfc3RyaW5nKGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGkxLCBsZW4pOworfQor
CitmdW5jdGlvbiBzdWJfbGV4ZW1lX29wdChsZXhidWYsIGkxLCBpMikgeworICBpZiAoaTEgPj0g
MCkgeworICAgIHZhciBsZW4gPSBpMiAtIGkxIHwgMDsKKyAgICByZXR1cm4gLyogU29tZSAqL1tC
eXRlcy5zdWJfc3RyaW5nKGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGkxLCBsZW4pXTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogTm9uZSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24g
c3ViX2xleGVtZV9jaGFyKGxleGJ1ZiwgaSkgeworICByZXR1cm4gQ2FtbF9ieXRlcy5nZXQobGV4
YnVmWy8qIGxleF9idWZmZXIgKi8xXSwgaSk7Cit9CisKK2Z1bmN0aW9uIHN1Yl9sZXhlbWVfY2hh
cl9vcHQobGV4YnVmLCBpKSB7CisgIGlmIChpID49IDApIHsKKyAgICByZXR1cm4gLyogU29tZSAq
L1tDYW1sX2J5dGVzLmdldChsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdLCBpKV07CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGxleGVt
ZV9jaGFyKGxleGJ1ZiwgaSkgeworICByZXR1cm4gQ2FtbF9ieXRlcy5nZXQobGV4YnVmWy8qIGxl
eF9idWZmZXIgKi8xXSwgbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSArIGkgfCAwKTsKK30K
KworZnVuY3Rpb24gbGV4ZW1lX3N0YXJ0KGxleGJ1ZikgeworICByZXR1cm4gbGV4YnVmWy8qIGxl
eF9zdGFydF9wICovMTBdWy8qIHBvc19jbnVtICovM107Cit9CisKK2Z1bmN0aW9uIGxleGVtZV9l
bmQobGV4YnVmKSB7CisgIHJldHVybiBsZXhidWZbLyogbGV4X2N1cnJfcCAqLzExXVsvKiBwb3Nf
Y251bSAqLzNdOworfQorCitmdW5jdGlvbiBsZXhlbWVfc3RhcnRfcChsZXhidWYpIHsKKyAgcmV0
dXJuIGxleGJ1ZlsvKiBsZXhfc3RhcnRfcCAqLzEwXTsKK30KKworZnVuY3Rpb24gbGV4ZW1lX2Vu
ZF9wKGxleGJ1ZikgeworICByZXR1cm4gbGV4YnVmWy8qIGxleF9jdXJyX3AgKi8xMV07Cit9CisK
K2Z1bmN0aW9uIG5ld19saW5lKGxleGJ1ZikgeworICB2YXIgbGNwID0gbGV4YnVmWy8qIGxleF9j
dXJyX3AgKi8xMV07CisgIGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdID0gLyogcmVjb3JkICov
WworICAgIC8qIHBvc19mbmFtZSAqL2xjcFsvKiBwb3NfZm5hbWUgKi8wXSwKKyAgICAvKiBwb3Nf
bG51bSAqL2xjcFsvKiBwb3NfbG51bSAqLzFdICsgMSB8IDAsCisgICAgLyogcG9zX2JvbCAqL2xj
cFsvKiBwb3NfY251bSAqLzNdLAorICAgIC8qIHBvc19jbnVtICovbGNwWy8qIHBvc19jbnVtICov
M10KKyAgXTsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gZmx1c2hfaW5wdXQo
bGIpIHsKKyAgbGJbLyogbGV4X2N1cnJfcG9zICovNV0gPSAwOworICBsYlsvKiBsZXhfYWJzX3Bv
cyAqLzNdID0gMDsKKyAgdmFyIGluaXQgPSBsYlsvKiBsZXhfY3Vycl9wICovMTFdOworICBsYlsv
KiBsZXhfY3Vycl9wICovMTFdID0gLyogcmVjb3JkICovWworICAgIC8qIHBvc19mbmFtZSAqL2lu
aXRbLyogcG9zX2ZuYW1lICovMF0sCisgICAgLyogcG9zX2xudW0gKi9pbml0Wy8qIHBvc19sbnVt
ICovMV0sCisgICAgLyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJdLAorICAgIC8qIHBv
c19jbnVtICovMAorICBdOworICBsYlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdID0gMDsKKyAgcmV0
dXJuIC8qICgpICovMDsKK30KKwordmFyIGR1bW15X3BvcyA9IC8qIHJlY29yZCAqL1sKKyAgLyog
cG9zX2ZuYW1lICovIiIsCisgIC8qIHBvc19sbnVtICovMCwKKyAgLyogcG9zX2JvbCAqLzAsCisg
IC8qIHBvc19jbnVtICovLTEKK107CisKK2V4cG9ydHMuZHVtbXlfcG9zICAgICAgICAgICA9IGR1
bW15X3BvczsKK2V4cG9ydHMuZnJvbV9jaGFubmVsICAgICAgICA9IGZyb21fY2hhbm5lbDsKK2V4
cG9ydHMuZnJvbV9zdHJpbmcgICAgICAgICA9IGZyb21fc3RyaW5nOworZXhwb3J0cy5mcm9tX2Z1
bmN0aW9uICAgICAgID0gZnJvbV9mdW5jdGlvbjsKK2V4cG9ydHMubGV4ZW1lICAgICAgICAgICAg
ICA9IGxleGVtZTsKK2V4cG9ydHMubGV4ZW1lX2NoYXIgICAgICAgICA9IGxleGVtZV9jaGFyOwor
ZXhwb3J0cy5sZXhlbWVfc3RhcnQgICAgICAgID0gbGV4ZW1lX3N0YXJ0OworZXhwb3J0cy5sZXhl
bWVfZW5kICAgICAgICAgID0gbGV4ZW1lX2VuZDsKK2V4cG9ydHMubGV4ZW1lX3N0YXJ0X3AgICAg
ICA9IGxleGVtZV9zdGFydF9wOworZXhwb3J0cy5sZXhlbWVfZW5kX3AgICAgICAgID0gbGV4ZW1l
X2VuZF9wOworZXhwb3J0cy5uZXdfbGluZSAgICAgICAgICAgID0gbmV3X2xpbmU7CitleHBvcnRz
LmZsdXNoX2lucHV0ICAgICAgICAgPSBmbHVzaF9pbnB1dDsKK2V4cG9ydHMuc3ViX2xleGVtZSAg
ICAgICAgICA9IHN1Yl9sZXhlbWU7CitleHBvcnRzLnN1Yl9sZXhlbWVfb3B0ICAgICAgPSBzdWJf
bGV4ZW1lX29wdDsKK2V4cG9ydHMuc3ViX2xleGVtZV9jaGFyICAgICA9IHN1Yl9sZXhlbWVfY2hh
cjsKK2V4cG9ydHMuc3ViX2xleGVtZV9jaGFyX29wdCA9IHN1Yl9sZXhlbWVfY2hhcl9vcHQ7Citl
eHBvcnRzLmVuZ2luZSAgICAgICAgICAgICAgPSBlbmdpbmU7CitleHBvcnRzLm5ld19lbmdpbmUg
ICAgICAgICAgPSBuZXdfZW5naW5lOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVu
ZCBvZiBsZXhpbmcuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKwor
CisgIF9yZWdpc3RyeVsnbGliJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0g
e307CisvLy8vLy8vLyBzdGFydCBvZiBsaWIuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBC
VUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBz
dHJpY3QnOworCit2YXIgJCRBcnJheSAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0
Zm9ybS9saWIvanMvYXJyYXkiKTsKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyIEludDMyICAgICAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2ludDMyIik7Cit2YXIgJCRTdHJpbmcg
ICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvc3RyaW5nIik7Cit2
YXIgQmlnYXJyYXkgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
YmlnYXJyYXkiKTsKK3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBs
YXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOwordmFyIENhbWxfYXJyYXkgICAgICAgICAgICAgID0g
cmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1sX2ludDY0
ICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2ludDY0Iik7
Cit2YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvcGVydmFzaXZlcyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9u
IHJlcGVhdChfbiwgZiwgeCkgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG4gPSBfbjsKKyAg
ICBpZiAobikgeworICAgICAgQ3VycnkuXzEoZiwgeCk7CisgICAgICBfbiA9IG4gLSAxIHwgMDsK
KyAgICAgIGNvbnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biAvKiAoKSAqLzA7CisgICAgfQorICB9OworfQorCit2YXIgRnVuID0gLyogbW9kdWxlICovWy8q
IHJlcGVhdCAqL3JlcGVhdF07CisKK2Z1bmN0aW9uIG1ha2UobiwgeCkgeworICBpZiAobikgewor
ICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIHgsCisgICAgICAgICAgICBtYWtlKG4g
LSAxIHwgMCwgeCkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBb
XSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gdGFibGUkcHJpbWUoaSwgbiwgZikgeworICBpZiAo
aSA9PT0gbikgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0
dXJuIC8qIDo6ICovWworICAgICAgICAgICAgQ3VycnkuXzEoZiwgaSksCisgICAgICAgICAgICB0
YWJsZSRwcmltZShpICsgMSB8IDAsIG4sIGYpCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5j
dGlvbiB0YWJsZShuLCBmKSB7CisgIHJldHVybiB0YWJsZSRwcmltZSgwLCBuLCBmKTsKK30KKwor
ZnVuY3Rpb24gdGFrZShuLCB4cykgeworICBpZiAobiAhPT0gMCkgeworICAgIGlmICh4cykgewor
ICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICB4c1swXSwKKyAgICAgICAgICAgICAgICB0YWtlKG4gLSAxIHwgMCwgeHNbMV0pCisgICAg
ICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFBlcnZh
c2l2ZXMuZmFpbHdpdGgoInRha2UiKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgidGFrZSIpOworICAgIH0KKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGRyb3AoX24sIF94
cykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHhzID0gX3hzOworICAgIHZhciBuID0gX247
CisgICAgaWYgKG4gIT09IDApIHsKKyAgICAgIGlmICh4cykgeworICAgICAgICBpZiAobiA+IDAp
IHsKKyAgICAgICAgICBfeHMgPSB4c1sxXTsKKyAgICAgICAgICBfbiA9IG4gLSAxIHwgMDsKKyAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImRyb3AiKTsKKyAgICAgICAg
fQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3
aXRoKCJkcm9wIik7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIHhz
OworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gbGFzdChfcGFyYW0pIHsKKyAgd2hpbGUodHJ1
ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZh
ciB4cyA9IHBhcmFtWzFdOworICAgICAgaWYgKHhzKSB7CisgICAgICAgIF9wYXJhbSA9IHhzOwor
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHJldHVybiBwYXJhbVswXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBy
ZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgibGFzdCIpOworICAgIH0KKyAgfTsKK30KKworZnVu
Y3Rpb24gc3BsaXRfbGFzdChwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICB2YXIgeHMgPSBw
YXJhbVsxXTsKKyAgICB2YXIgeCA9IHBhcmFtWzBdOworICAgIGlmICh4cykgeworICAgICAgdmFy
IG1hdGNoID0gc3BsaXRfbGFzdCh4cyk7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAg
bWF0Y2hbMF0KKyAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgbWF0Y2hbMV0KKyAgICAg
ICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwor
ICAgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAgIHgKKyAgICAgICAgICAgIF07
CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJz
cGxpdF9sYXN0Iik7CisgIH0KK30KKworZnVuY3Rpb24gaW5kZXhfb2YoeCwgeHMpIHsKKyAgdmFy
IHgkMSA9IHg7CisgIHZhciBfeHMgPSB4czsKKyAgdmFyIF9pID0gMDsKKyAgd2hpbGUodHJ1ZSkg
eworICAgIHZhciBpID0gX2k7CisgICAgdmFyIHhzJDEgPSBfeHM7CisgICAgaWYgKHhzJDEpIHsK
KyAgICAgIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKHgkMSwgeHMkMVswXSkpIHsKKyAgICAgICAg
cmV0dXJuIC8qIFNvbWUgKi9baV07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgX2kg
PSBpICsgMSB8IDA7CisgICAgICAgIF94cyA9IHhzJDFbMV07CisgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIE5v
bmUgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gbGVuZ3RoKHhzKSB7CisgIHZhciBf
eHMgPSB4czsKKyAgdmFyIF9uID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBuID0gX247
CisgICAgdmFyIHhzJDEgPSBfeHM7CisgICAgaWYgKHhzJDEpIHsKKyAgICAgIGlmIChuIDwgSW50
MzIubWF4X2ludCkgeworICAgICAgICBfbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgX3hzID0geHMk
MVsxXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgibGVuZ3RoIik7CisgICAgICB9
CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIG47CisgICAgfQorICB9OworfQorCitm
dW5jdGlvbiBudGgoX3hzLCBfbikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG4gPSBfbjsK
KyAgICB2YXIgeHMgPSBfeHM7CisgICAgaWYgKG4gIT09IDApIHsKKyAgICAgIGlmICh4cykgewor
ICAgICAgICBpZiAobiA+IDApIHsKKyAgICAgICAgICBfbiA9IG4gLSAxIHwgMDsKKyAgICAgICAg
ICBfeHMgPSB4c1sxXTsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAg
IH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgo
Im50aCIpOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJu
IFBlcnZhc2l2ZXMuZmFpbHdpdGgoIm50aCIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlm
ICh4cykgeworICAgICAgcmV0dXJuIHhzWzBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJl
dHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJudGgiKTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0
aW9uIHRha2UkMShuLCB4cykgeworICBpZiAobiAhPT0gMCkgeworICAgIGlmICh4cykgeworICAg
ICAgaWYgKG4gPiAwKSB7CisgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICB4c1swXSwKKyAgICAgICAgICAgICAgICB0YWtlJDEobiAtIDEgfCAwLCB4c1sxXSkKKyAgICAg
ICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUGVydmFz
aXZlcy5mYWlsd2l0aCgidGFrZSIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJ0YWtlIik7CisgICAgfQorICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gZHJvcCQxKF9uLCBf
eHMpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciB4cyA9IF94czsKKyAgICB2YXIgbiA9IF9u
OworICAgIGlmIChuICE9PSAwKSB7CisgICAgICBpZiAoeHMpIHsKKyAgICAgICAgaWYgKG4gPiAw
KSB7CisgICAgICAgICAgX3hzID0geHNbMV07CisgICAgICAgICAgX24gPSBuIC0gMSB8IDA7Cisg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJkcm9wIik7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWls
d2l0aCgiZHJvcCIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiB4
czsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1ha2UkMShuLCB4KSB7CisgIGlmIChuIDwg
MCB8fCBDYW1sX2ludDY0Lmd0KENhbWxfaW50NjQub2ZfaW50MzIobiksIENhbWxfaW50NjQub2Zf
aW50MzIoUGVydmFzaXZlcy5tYXhfaW50KSkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQXJyYXkz
Mi5tYWtlIgorICAgICAgICBdOworICB9CisgIHJldHVybiBDYW1sX2FycmF5LmNhbWxfbWFrZV92
ZWN0KG4sIHgpOworfQorCitmdW5jdGlvbiBsZW5ndGgkMShhKSB7CisgIHJldHVybiBhLmxlbmd0
aDsKK30KKworZnVuY3Rpb24gaW5kZXhfb2ZfaW50MzIoaSkgeworICBpZiAoaSA8IDAgfHwgQ2Ft
bF9pbnQ2NC5ndChDYW1sX2ludDY0Lm9mX2ludDMyKGkpLCBDYW1sX2ludDY0Lm9mX2ludDMyKFBl
cnZhc2l2ZXMubWF4X2ludCkpKSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiBpOworICB9Cit9CisKK2Z1bmN0aW9uIGdldChhLCBpKSB7CisgIHJldHVybiBhW2lu
ZGV4X29mX2ludDMyKGkpXTsKK30KKworZnVuY3Rpb24gc2V0KGEsIGksIHgpIHsKKyAgYVtpbmRl
eF9vZl9pbnQzMihpKV0gPSB4OworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBi
bGl0KGExLCBpMSwgYTIsIGkyLCBuKSB7CisgIHJldHVybiAkJEFycmF5LmJsaXQoYTEsIGluZGV4
X29mX2ludDMyKGkxKSwgYTIsIGluZGV4X29mX2ludDMyKGkyKSwgaW5kZXhfb2ZfaW50MzIobikp
OworfQorCitmdW5jdGlvbiBjcmVhdGUoa2luZCwgbGF5b3V0LCBuKSB7CisgIGlmIChDYW1sX2lu
dDY0Lmx0KG4sIC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAv
KiBsbyAqLzAKKyAgICAgICAgXSkgfHwgQ2FtbF9pbnQ2NC5ndChuLCBDYW1sX2ludDY0Lm9mX2lu
dDMyKFBlcnZhc2l2ZXMubWF4X2ludCkpKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkJpZ2FycmF5
LkFycmF5MV82NC5jcmVhdGUiCisgICAgICAgIF07CisgIH0KKyAgcmV0dXJuIEN1cnJ5Ll8zKEJp
Z2FycmF5LkFycmF5MVsvKiBjcmVhdGUgKi8wXSwga2luZCwgbGF5b3V0LCBuWzFdIHwgMCk7Cit9
CisKK2Z1bmN0aW9uIGRpbSgpIHsKKyAgcmV0dXJuIENhbWxfaW50NjQub2ZfaW50MzIoZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX2RpbV8xIG5vdCBpbXBsZW1l
bnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgICB9KCkpOworfQorCitm
dW5jdGlvbiBnZXQkMShfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHRocm93ICJjYW1sX2JhX2dldF8xIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQg
eWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2V0JDEoXywgXyQxLCBfJDIp
IHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3Nl
dF8xIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0o
KTsKK30KKworZnVuY3Rpb24gc3ViKF8sIF8kMSwgXyQyKSB7CisgIHJldHVybiBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9zdWIgbm90IGltcGxlbWVudGVkIGJ5IGJ1
Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBnZXQkMihv
LCB4KSB7CisgIGlmIChvKSB7CisgICAgcmV0dXJuIG9bMF07CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIHg7CisgIH0KK30KKworZnVuY3Rpb24gbWFwKGYsIHBhcmFtKSB7CisgIGlmIChwYXJh
bSkgeworICAgIHJldHVybiAvKiBTb21lICovW0N1cnJ5Ll8xKGYsIHBhcmFtWzBdKV07CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGFw
cChmLCBwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gQ3VycnkuXzEoZiwgcGFy
YW1bMF0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKwor
dmFyIE9wdGlvbiA9IC8qIG1vZHVsZSAqL1sKKyAgLyogZ2V0ICovZ2V0JDIsCisgIC8qIG1hcCAq
L21hcCwKKyAgLyogYXBwICovYXBwCitdOworCitmdW5jdGlvbiBsb2cyKG4pIHsKKyAgaWYgKG4g
PD0gMCkgeworICAgIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImxvZzIiKTsKKyAgfQorICB2YXIgX2Fj
YyA9IDA7CisgIHZhciBfbiA9IG47CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbiQxID0gX247
CisgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgaWYgKG4kMSA9PT0gMSkgeworICAgICAgcmV0dXJu
IGFjYzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBfbiA9IChuJDEgPj4+IDEpOworICAgICAg
X2FjYyA9IGFjYyArIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICB9
OworfQorCitmdW5jdGlvbiBpc19wb3dlcl9vZl90d28obikgeworICBpZiAobiA8IDApIHsKKyAg
ICBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJpc19wb3dlcl9vZl90d28iKTsKKyAgfQorICBpZiAobiAh
PT0gMCkgeworICAgIHJldHVybiArKChuICYgKG4gLSAxIHwgMCkpID09PSAwKTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK3ZhciBJbnQgPSAvKiBt
b2R1bGUgKi9bCisgIC8qIGxvZzIgKi9sb2cyLAorICAvKiBpc19wb3dlcl9vZl90d28gKi9pc19w
b3dlcl9vZl90d28KK107CisKK2Z1bmN0aW9uIGJyZWFrdXAocywgbikgeworICB2YXIgbG9vcCA9
IGZ1bmN0aW9uIChpKSB7CisgICAgdmFyIGxlbiA9IFBlcnZhc2l2ZXMubWluKG4sIHMubGVuZ3Ro
IC0gaSB8IDApOworICAgIGlmIChsZW4pIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgJCRTdHJpbmcuc3ViKHMsIGksIGxlbiksCisgICAgICAgICAgICAgIGxvb3AoaSAr
IGxlbiB8IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biAvKiBbXSAqLzA7CisgICAgfQorICB9OworICByZXR1cm4gbG9vcCgwKTsKK30KKwordmFyICQk
U3RyaW5nJDEgPSAvKiBtb2R1bGUgKi9bLyogYnJlYWt1cCAqL2JyZWFrdXBdOworCit2YXIgTGlz
dCA9IFsKKyAgbWFrZSwKKyAgdGFibGUsCisgIHRha2UsCisgIGRyb3AsCisgIGxhc3QsCisgIHNw
bGl0X2xhc3QsCisgIGluZGV4X29mCitdOworCit2YXIgTGlzdDMyID0gWworICBsZW5ndGgsCisg
IG50aCwKKyAgdGFrZSQxLAorICBkcm9wJDEKK107CisKK3ZhciBBcnJheTMyID0gWworICBtYWtl
JDEsCisgIGxlbmd0aCQxLAorICBnZXQsCisgIHNldCwKKyAgYmxpdAorXTsKKwordmFyIEJpZ2Fy
cmF5JDEgPSBbWworICAgIGNyZWF0ZSwKKyAgICBkaW0sCisgICAgZ2V0JDEsCisgICAgc2V0JDEs
CisgICAgc3ViCisgIF1dOworCitleHBvcnRzLkZ1biAgICAgID0gRnVuOworZXhwb3J0cy5MaXN0
ICAgICA9IExpc3Q7CitleHBvcnRzLkxpc3QzMiAgID0gTGlzdDMyOworZXhwb3J0cy5BcnJheTMy
ICA9IEFycmF5MzI7CitleHBvcnRzLkJpZ2FycmF5ID0gQmlnYXJyYXkkMTsKK2V4cG9ydHMuT3B0
aW9uICAgPSBPcHRpb247CitleHBvcnRzLkludCAgICAgID0gSW50OworZXhwb3J0cy4kJFN0cmlu
ZyA9ICQkU3RyaW5nJDE7CisvKiBCaWdhcnJheSBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8v
Ly8gZW5kIG9mIGxpYi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9Owor
CisKKyAgX3JlZ2lzdHJ5WydsaXN0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRz
ID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBsaXN0LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7
CisKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3Zh
ciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9vYmoiKTsKK3ZhciBQ
ZXJ2YXNpdmVzICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cyIpOworCitmdW5jdGlvbiBsZW5ndGgobCkgeworICB2YXIgX2xlbiA9IDA7CisgIHZhciBfcGFy
YW0gPSBsOworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIHZh
ciBsZW4gPSBfbGVuOworICAgIGlmIChwYXJhbSkgeworICAgICAgX3BhcmFtID0gcGFyYW1bMV07
CisgICAgICBfbGVuID0gbGVuICsgMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gbGVuOworICAgIH0KKyAgfTsKK30KKworZnVu
Y3Rpb24gaGQocGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOwor
ICB9CisgIGVsc2UgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5mYWlsdXJlLAorICAgICAgICAgICJoZCIKKyAgICAgICAgXTsKKyAgfQorfQorCitmdW5j
dGlvbiB0bChwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gcGFyYW1bMV07Cisg
IH0KKyAgZWxzZSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmZhaWx1cmUsCisgICAgICAgICAgInRsIgorICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0
aW9uIG50aChsLCBuKSB7CisgIGlmIChuIDwgMCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJMaXN0
Lm50aCIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgX2wgPSBsOworICAgIHZh
ciBfbiA9IG47CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIG4kMSA9IF9uOworICAgICAg
dmFyIGwkMSA9IF9sOworICAgICAgaWYgKGwkMSkgeworICAgICAgICBpZiAobiQxKSB7CisgICAg
ICAgICAgX24gPSBuJDEgLSAxIHwgMDsKKyAgICAgICAgICBfbCA9IGwkMVsxXTsKKyAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIGwkMVswXTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFp
bHVyZSwKKyAgICAgICAgICAgICAgIm50aCIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAg
fTsKKyAgfQorfQorCitmdW5jdGlvbiByZXZfYXBwZW5kKF9sMSwgX2wyKSB7CisgIHdoaWxlKHRy
dWUpIHsKKyAgICB2YXIgbDIgPSBfbDI7CisgICAgdmFyIGwxID0gX2wxOworICAgIGlmIChsMSkg
eworICAgICAgX2wyID0gLyogOjogKi9bCisgICAgICAgIGwxWzBdLAorICAgICAgICBsMgorICAg
ICAgXTsKKyAgICAgIF9sMSA9IGwxWzFdOworICAgICAgY29udGludWUgOworICAgICAgCisgICAg
fQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGwyOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rp
b24gcmV2KGwpIHsKKyAgcmV0dXJuIHJldl9hcHBlbmQobCwgLyogW10gKi8wKTsKK30KKworZnVu
Y3Rpb24gZmxhdHRlbihwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gUGVydmFz
aXZlcy4kYXQocGFyYW1bMF0sIGZsYXR0ZW4ocGFyYW1bMV0pKTsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIG1hcChmLCBwYXJhbSkgewor
ICBpZiAocGFyYW0pIHsKKyAgICB2YXIgciA9IEN1cnJ5Ll8xKGYsIHBhcmFtWzBdKTsKKyAgICBy
ZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICByLAorICAgICAgICAgICAgbWFwKGYsIHBhcmFt
WzFdKQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIFtdICovMDsK
KyAgfQorfQorCitmdW5jdGlvbiBtYXBpKGksIGYsIHBhcmFtKSB7CisgIGlmIChwYXJhbSkgewor
ICAgIHZhciByID0gQ3VycnkuXzIoZiwgaSwgcGFyYW1bMF0pOworICAgIHJldHVybiAvKiA6OiAq
L1sKKyAgICAgICAgICAgIHIsCisgICAgICAgICAgICBtYXBpKGkgKyAxIHwgMCwgZiwgcGFyYW1b
MV0pCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8wOwor
ICB9Cit9CisKK2Z1bmN0aW9uIG1hcGkkMShmLCBsKSB7CisgIHJldHVybiBtYXBpKDAsIGYsIGwp
OworfQorCitmdW5jdGlvbiByZXZfbWFwKGYsIGwpIHsKKyAgdmFyIF9hY2N1ID0gLyogW10gKi8w
OworICB2YXIgX3BhcmFtID0gbDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9w
YXJhbTsKKyAgICB2YXIgYWNjdSA9IF9hY2N1OworICAgIGlmIChwYXJhbSkgeworICAgICAgX3Bh
cmFtID0gcGFyYW1bMV07CisgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICBDdXJyeS5f
MShmLCBwYXJhbVswXSksCisgICAgICAgIGFjY3UKKyAgICAgIF07CisgICAgICBjb250aW51ZSA7
CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gYWNjdTsKKyAgICB9Cisg
IH07Cit9CisKK2Z1bmN0aW9uIGl0ZXIoZiwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAg
ICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgaWYgKHBhcmFtKSB7CisgICAgICBDdXJyeS5fMShm
LCBwYXJhbVswXSk7CisgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgIGNvbnRpbnVlIDsK
KyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAg
fQorICB9OworfQorCitmdW5jdGlvbiBpdGVyaShmLCBsKSB7CisgIHZhciBfaSA9IDA7CisgIHZh
ciBmJDEgPSBmOworICB2YXIgX3BhcmFtID0gbDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBw
YXJhbSA9IF9wYXJhbTsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChwYXJhbSkgeworICAgICAg
Q3VycnkuXzIoZiQxLCBpLCBwYXJhbVswXSk7CisgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAg
ICAgIF9pID0gaSArIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAg
IGVsc2UgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0
aW9uIGZvbGRfbGVmdChmLCBfYWNjdSwgX2wpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBs
ID0gX2w7CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAobCkgeworICAgICAgX2wgPSBs
WzFdOworICAgICAgX2FjY3UgPSBDdXJyeS5fMihmLCBhY2N1LCBsWzBdKTsKKyAgICAgIGNvbnRp
bnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBhY2N1OworICAg
IH0KKyAgfTsKK30KKworZnVuY3Rpb24gZm9sZF9yaWdodChmLCBsLCBhY2N1KSB7CisgIGlmIChs
KSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKGYsIGxbMF0sIGZvbGRfcmlnaHQoZiwgbFsxXSwgYWNj
dSkpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBhY2N1OworICB9Cit9CisKK2Z1bmN0aW9u
IG1hcDIoZiwgbDEsIGwyKSB7CisgIGlmIChsMSkgeworICAgIGlmIChsMikgeworICAgICAgdmFy
IHIgPSBDdXJyeS5fMihmLCBsMVswXSwgbDJbMF0pOworICAgICAgcmV0dXJuIC8qIDo6ICovWwor
ICAgICAgICAgICAgICByLAorICAgICAgICAgICAgICBtYXAyKGYsIGwxWzFdLCBsMlsxXSkKKyAg
ICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAg
ICJMaXN0Lm1hcDIiCisgICAgICAgICAgXTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAobDIpIHsK
KyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9h
cmd1bWVudCwKKyAgICAgICAgICAiTGlzdC5tYXAyIgorICAgICAgICBdOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gcmV2X21hcDIoZiwg
bDEsIGwyKSB7CisgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgdmFyIF9sMSA9IGwxOworICB2
YXIgX2wyID0gbDI7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbDIkMSA9IF9sMjsKKyAgICB2
YXIgbDEkMSA9IF9sMTsKKyAgICB2YXIgYWNjdSA9IF9hY2N1OworICAgIGlmIChsMSQxKSB7Cisg
ICAgICBpZiAobDIkMSkgeworICAgICAgICBfbDIgPSBsMiQxWzFdOworICAgICAgICBfbDEgPSBs
MSQxWzFdOworICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgIEN1cnJ5Ll8yKGYs
IGwxJDFbMF0sIGwyJDFbMF0pLAorICAgICAgICAgIGFjY3UKKyAgICAgICAgXTsKKyAgICAgICAg
Y29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCisgICAgICAgICAgICAgICJMaXN0LnJldl9tYXAyIgorICAgICAgICAgICAgXTsKKyAgICAg
IH0KKyAgICB9CisgICAgZWxzZSBpZiAobDIkMSkgeworICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAg
ICJMaXN0LnJldl9tYXAyIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAg
cmV0dXJuIGFjY3U7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBpdGVyMihmLCBfbDEsIF9s
MikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGwyID0gX2wyOworICAgIHZhciBsMSA9IF9s
MTsKKyAgICBpZiAobDEpIHsKKyAgICAgIGlmIChsMikgeworICAgICAgICBDdXJyeS5fMihmLCBs
MVswXSwgbDJbMF0pOworICAgICAgICBfbDIgPSBsMlsxXTsKKyAgICAgICAgX2wxID0gbDFbMV07
CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZh
bGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAiTGlzdC5pdGVyMiIKKyAgICAgICAgICAgIF07
CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGwyKSB7CisgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAg
ICAgICAgIkxpc3QuaXRlcjIiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZm9sZF9sZWZ0
MihmLCBfYWNjdSwgX2wxLCBfbDIpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsMiA9IF9s
MjsKKyAgICB2YXIgbDEgPSBfbDE7CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAobDEp
IHsKKyAgICAgIGlmIChsMikgeworICAgICAgICBfbDIgPSBsMlsxXTsKKyAgICAgICAgX2wxID0g
bDFbMV07CisgICAgICAgIF9hY2N1ID0gQ3VycnkuXzMoZiwgYWNjdSwgbDFbMF0sIGwyWzBdKTsK
KyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAg
ICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFs
aWRfYXJndW1lbnQsCisgICAgICAgICAgICAgICJMaXN0LmZvbGRfbGVmdDIiCisgICAgICAgICAg
ICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChsMikgeworICAgICAgdGhyb3cgWwor
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAg
ICAgICAgICAgICJMaXN0LmZvbGRfbGVmdDIiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gYWNjdTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZvbGRf
cmlnaHQyKGYsIGwxLCBsMiwgYWNjdSkgeworICBpZiAobDEpIHsKKyAgICBpZiAobDIpIHsKKyAg
ICAgIHJldHVybiBDdXJyeS5fMyhmLCBsMVswXSwgbDJbMF0sIGZvbGRfcmlnaHQyKGYsIGwxWzFd
LCBsMlsxXSwgYWNjdSkpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAg
ICAgICAiTGlzdC5mb2xkX3JpZ2h0MiIKKyAgICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNl
IGlmIChsMikgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJMaXN0LmZvbGRfcmlnaHQyIgorICAgICAg
ICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBhY2N1OworICB9Cit9CisKK2Z1bmN0aW9u
IGZvcl9hbGwocCwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBf
cGFyYW07CisgICAgaWYgKHBhcmFtKSB7CisgICAgICBpZiAoQ3VycnkuXzEocCwgcGFyYW1bMF0p
KSB7CisgICAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7
CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOwor
ICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZXhpc3RzKHAsIF9wYXJhbSkgeworICB3aGlsZSh0
cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAg
aWYgKEN1cnJ5Ll8xKHAsIHBhcmFtWzBdKSkgeworICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZvcl9h
bGwyKHAsIF9sMSwgX2wyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbDIgPSBfbDI7Cisg
ICAgdmFyIGwxID0gX2wxOworICAgIGlmIChsMSkgeworICAgICAgaWYgKGwyKSB7CisgICAgICAg
IGlmIChDdXJyeS5fMihwLCBsMVswXSwgbDJbMF0pKSB7CisgICAgICAgICAgX2wyID0gbDJbMV07
CisgICAgICAgICAgX2wxID0gbDFbMV07CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
IAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAvKiBmYWxzZSAq
LzA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBbCisg
ICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisg
ICAgICAgICAgICAgICJMaXN0LmZvcl9hbGwyIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAg
ICB9CisgICAgZWxzZSBpZiAobDIpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTGlzdC5m
b3JfYWxsMiIKKyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAv
KiB0cnVlICovMTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGV4aXN0czIocCwgX2wxLCBf
bDIpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsMiA9IF9sMjsKKyAgICB2YXIgbDEgPSBf
bDE7CisgICAgaWYgKGwxKSB7CisgICAgICBpZiAobDIpIHsKKyAgICAgICAgaWYgKEN1cnJ5Ll8y
KHAsIGwxWzBdLCBsMlswXSkpIHsKKyAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgX2wyID0gbDJbMV07CisgICAgICAgICAg
X2wxID0gbDFbMV07CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAi
TGlzdC5leGlzdHMyIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBp
ZiAobDIpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTGlzdC5leGlzdHMyIgorICAgICAg
ICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAg
ICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1lbSh4LCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkg
eworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIGlmIChD
YW1sX29iai5jYW1sX2NvbXBhcmUocGFyYW1bMF0sIHgpKSB7CisgICAgICAgIF9wYXJhbSA9IHBh
cmFtWzFdOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rp
b24gbWVtcSh4LCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9w
YXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIGlmIChwYXJhbVswXSA9PT0geCkgeworICAg
ICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
X3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9
CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9Cisg
IH07Cit9CisKK2Z1bmN0aW9uIGFzc29jKHgsIF9wYXJhbSkgeworICB3aGlsZSh0cnVlKSB7Cisg
ICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIG1hdGNo
ID0gcGFyYW1bMF07CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9jb21wYXJlKG1hdGNoWzBdLCB4
KSkgeworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gbWF0Y2hbMV07Cisg
ICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMubm90X2ZvdW5kOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gYXNzcSh4LCBfcGFy
YW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAo
cGFyYW0pIHsKKyAgICAgIHZhciBtYXRjaCA9IHBhcmFtWzBdOworICAgICAgaWYgKG1hdGNoWzBd
ID09PSB4KSB7CisgICAgICAgIHJldHVybiBtYXRjaFsxXTsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOworICAgICAg
ICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBtZW1fYXNz
b2MoeCwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07
CisgICAgaWYgKHBhcmFtKSB7CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9jb21wYXJlKHBhcmFt
WzBdWzBdLCB4KSkgeworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGlu
dWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyog
dHJ1ZSAqLzE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIGZh
bHNlICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1lbV9hc3NxKHgsIF9wYXJhbSkg
eworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJh
bSkgeworICAgICAgaWYgKHBhcmFtWzBdWzBdID09PSB4KSB7CisgICAgICAgIHJldHVybiAvKiB0
cnVlICovMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBfcGFyYW0gPSBwYXJhbVsx
XTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rp
b24gcmVtb3ZlX2Fzc29jKHgsIHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHZhciBsID0g
cGFyYW1bMV07CisgICAgdmFyIHBhaXIgPSBwYXJhbVswXTsKKyAgICBpZiAoQ2FtbF9vYmouY2Ft
bF9jb21wYXJlKHBhaXJbMF0sIHgpKSB7CisgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAg
ICAgICAgIHBhaXIsCisgICAgICAgICAgICAgIHJlbW92ZV9hc3NvYyh4LCBsKQorICAgICAgICAg
ICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gbDsKKyAgICB9CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIC8qIFtdICovMDsKKyAgfQorfQorCitmdW5jdGlvbiByZW1vdmVf
YXNzcSh4LCBwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICB2YXIgbCA9IHBhcmFtWzFdOwor
ICAgIHZhciBwYWlyID0gcGFyYW1bMF07CisgICAgaWYgKHBhaXJbMF0gPT09IHgpIHsKKyAgICAg
IHJldHVybiBsOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgcGFpciwKKyAgICAgICAgICAgICAgcmVtb3ZlX2Fzc3EoeCwgbCkKKyAgICAg
ICAgICAgIF07CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7Cisg
IH0KK30KKworZnVuY3Rpb24gZmluZChwLCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAg
IHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciB4ID0gcGFy
YW1bMF07CisgICAgICBpZiAoQ3VycnkuXzEocCwgeCkpIHsKKyAgICAgICAgcmV0dXJuIHg7Cisg
ICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAg
dGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgIH0KKyAgfTsKK30K
KworZnVuY3Rpb24gZmluZF9hbGwocCkgeworICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7Cisg
ICAgdmFyIF9hY2N1ID0gLyogW10gKi8wOworICAgIHZhciBfcGFyYW0gPSBwYXJhbTsKKyAgICB3
aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0kMSA9IF9wYXJhbTsKKyAgICAgIHZhciBhY2N1
ID0gX2FjY3U7CisgICAgICBpZiAocGFyYW0kMSkgeworICAgICAgICB2YXIgbCA9IHBhcmFtJDFb
MV07CisgICAgICAgIHZhciB4ID0gcGFyYW0kMVswXTsKKyAgICAgICAgaWYgKEN1cnJ5Ll8xKHAs
IHgpKSB7CisgICAgICAgICAgX3BhcmFtID0gbDsKKyAgICAgICAgICBfYWNjdSA9IC8qIDo6ICov
WworICAgICAgICAgICAgeCwKKyAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICBdOworICAgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICBfcGFyYW0gPSBsOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiByZXZfYXBwZW5k
KGFjY3UsIC8qIFtdICovMCk7CisgICAgICB9CisgICAgfTsKKyAgfTsKK30KKworZnVuY3Rpb24g
cGFydGl0aW9uKHAsIGwpIHsKKyAgdmFyIF95ZXMgPSAvKiBbXSAqLzA7CisgIHZhciBfbm8gPSAv
KiBbXSAqLzA7CisgIHZhciBfcGFyYW0gPSBsOworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBh
cmFtID0gX3BhcmFtOworICAgIHZhciBubyA9IF9ubzsKKyAgICB2YXIgeWVzID0gX3llczsKKyAg
ICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciBsJDEgPSBwYXJhbVsxXTsKKyAgICAgIHZhciB4ID0g
cGFyYW1bMF07CisgICAgICBpZiAoQ3VycnkuXzEocCwgeCkpIHsKKyAgICAgICAgX3BhcmFtID0g
bCQxOworICAgICAgICBfeWVzID0gLyogOjogKi9bCisgICAgICAgICAgeCwKKyAgICAgICAgICB5
ZXMKKyAgICAgICAgXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICBfcGFyYW0gPSBsJDE7CisgICAgICAgIF9ubyA9IC8qIDo6ICov
WworICAgICAgICAgIHgsCisgICAgICAgICAgbm8KKyAgICAgICAgXTsKKyAgICAgICAgY29udGlu
dWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIHJldl9hcHBlbmQoeWVzLCAvKiBbXSAqLzApLAor
ICAgICAgICAgICAgICByZXZfYXBwZW5kKG5vLCAvKiBbXSAqLzApCisgICAgICAgICAgICBdOwor
ICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3BsaXQocGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7
CisgICAgdmFyIG1hdGNoID0gcGFyYW1bMF07CisgICAgdmFyIG1hdGNoJDEgPSBzcGxpdChwYXJh
bVsxXSk7CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAgIG1hdGNoWzBdLAorICAgICAgICAgICAgICBtYXRjaCQxWzBdCisgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgIG1hdGNoWzFdLAor
ICAgICAgICAgICAgICBtYXRjaCQxWzFdCisgICAgICAgICAgICBdCisgICAgICAgICAgXTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAvKiBbXSAq
LzAsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0
aW9uIGNvbWJpbmUobDEsIGwyKSB7CisgIGlmIChsMSkgeworICAgIGlmIChsMikgeworICAgICAg
cmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
ICAgICBsMVswXSwKKyAgICAgICAgICAgICAgICBsMlswXQorICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICBjb21iaW5lKGwxWzFdLCBsMlsxXSkKKyAgICAgICAgICAgIF07CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJMaXN0LmNvbWJpbmUiCisgICAg
ICAgICAgXTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAobDIpIHsKKyAgICB0aHJvdyBbCisgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAiTGlzdC5jb21iaW5lIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAv
KiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gbWVyZ2UoY21wLCBsMSwgbDIpIHsKKyAgaWYg
KGwxKSB7CisgICAgaWYgKGwyKSB7CisgICAgICB2YXIgaDIgPSBsMlswXTsKKyAgICAgIHZhciBo
MSA9IGwxWzBdOworICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgaDEsIGgyKSA8PSAwKSB7CisgICAg
ICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBoMSwKKyAgICAgICAgICAgICAg
ICBtZXJnZShjbXAsIGwxWzFdLCBsMikKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAg
IGVsc2UgeworICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDIsCisg
ICAgICAgICAgICAgICAgbWVyZ2UoY21wLCBsMSwgbDJbMV0pCisgICAgICAgICAgICAgIF07Cisg
ICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGwxOworICAgIH0KKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gbDI7CisgIH0KK30KKworZnVuY3Rpb24gY2hvcChfaywgX2wp
IHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsID0gX2w7CisgICAgdmFyIGsgPSBfazsKKyAg
ICBpZiAoaykgeworICAgICAgaWYgKGwpIHsKKyAgICAgICAgX2wgPSBsWzFdOworICAgICAgICBf
ayA9IGsgLSAxIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgImxpc3QubWwiLAorICAgICAgICAgICAgICAgIDIyMywKKyAgICAgICAgICAgICAgICAxMQor
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHJldHVybiBsOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3RhYmxlX3Nv
cnQoY21wLCBsKSB7CisgIHZhciBzb3J0ID0gZnVuY3Rpb24gKG4sIGwpIHsKKyAgICB2YXIgZXhp
dCA9IDA7CisgICAgaWYgKG4gIT09IDIpIHsKKyAgICAgIGlmIChuICE9PSAzKSB7CisgICAgICAg
IGV4aXQgPSAxOworICAgICAgfQorICAgICAgZWxzZSBpZiAobCkgeworICAgICAgICB2YXIgbWF0
Y2ggPSBsWzFdOworICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9
IG1hdGNoWzFdOworICAgICAgICAgIGlmIChtYXRjaCQxKSB7CisgICAgICAgICAgICB2YXIgeDMg
PSBtYXRjaCQxWzBdOworICAgICAgICAgICAgdmFyIHgyID0gbWF0Y2hbMF07CisgICAgICAgICAg
ICB2YXIgeDEgPSBsWzBdOworICAgICAgICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEsIHgyKSA8
PSAwKSB7CisgICAgICAgICAgICAgIGlmIChDdXJyeS5fMihjbXAsIHgyLCB4MykgPD0gMCkgewor
ICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
IHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDMpIDw9IDApIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8w
CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEs
IHgzKSA8PSAwKSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIGlmIChDdXJyeS5fMihjbXAsIHgyLCB4MykgPD0gMCkgeworICAgICAgICAgICAgICByZXR1
cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAg
ICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQg
PSAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZXhpdCA9IDE7
CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGwpIHsKKyAgICAgIHZhciBtYXRjaCQyID0g
bFsxXTsKKyAgICAgIGlmIChtYXRjaCQyKSB7CisgICAgICAgIHZhciB4MiQxID0gbWF0Y2gkMlsw
XTsKKyAgICAgICAgdmFyIHgxJDEgPSBsWzBdOworICAgICAgICBpZiAoQ3VycnkuXzIoY21wLCB4
MSQxLCB4MiQxKSA8PSAwKSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ICAgICAgICB4MiQxLAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQg
PSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGV4aXQgPSAxOworICAgIH0K
KyAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgdmFyIG4xID0gKG4gPj4gMSk7CisgICAgICB2
YXIgbjIgPSBuIC0gbjEgfCAwOworICAgICAgdmFyIGwyID0gY2hvcChuMSwgbCk7CisgICAgICB2
YXIgczEgPSByZXZfc29ydChuMSwgbCk7CisgICAgICB2YXIgczIgPSByZXZfc29ydChuMiwgbDIp
OworICAgICAgdmFyIF9sMSA9IHMxOworICAgICAgdmFyIF9sMiA9IHMyOworICAgICAgdmFyIF9h
Y2N1ID0gLyogW10gKi8wOworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIgYWNjdSA9
IF9hY2N1OworICAgICAgICB2YXIgbDIkMSA9IF9sMjsKKyAgICAgICAgdmFyIGwxID0gX2wxOwor
ICAgICAgICBpZiAobDEpIHsKKyAgICAgICAgICBpZiAobDIkMSkgeworICAgICAgICAgICAgdmFy
IGgyID0gbDIkMVswXTsKKyAgICAgICAgICAgIHZhciBoMSA9IGwxWzBdOworICAgICAgICAgICAg
aWYgKEN1cnJ5Ll8yKGNtcCwgaDEsIGgyKSA+IDApIHsKKyAgICAgICAgICAgICAgX2FjY3UgPSAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICBoMSwKKyAgICAgICAgICAgICAgICBhY2N1CisgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgICAgIF9sMSA9IGwxWzFdOworICAgICAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDIs
CisgICAgICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBf
bDIgPSBsMiQxWzFdOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHJldHVybiByZXZfYXBwZW5kKGwxLCBhY2N1KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIHJldl9hcHBlbmQobDIkMSwgYWNjdSk7Cisg
ICAgICAgIH0KKyAgICAgIH07CisgICAgfQorICAgIAorICB9OworICB2YXIgcmV2X3NvcnQgPSBm
dW5jdGlvbiAobiwgbCkgeworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAobiAhPT0gMikgewor
ICAgICAgaWYgKG4gIT09IDMpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBl
bHNlIGlmIChsKSB7CisgICAgICAgIHZhciBtYXRjaCA9IGxbMV07CisgICAgICAgIGlmIChtYXRj
aCkgeworICAgICAgICAgIHZhciBtYXRjaCQxID0gbWF0Y2hbMV07CisgICAgICAgICAgaWYgKG1h
dGNoJDEpIHsKKyAgICAgICAgICAgIHZhciB4MyA9IG1hdGNoJDFbMF07CisgICAgICAgICAgICB2
YXIgeDIgPSBtYXRjaFswXTsKKyAgICAgICAgICAgIHZhciB4MSA9IGxbMF07CisgICAgICAgICAg
ICBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDIpID4gMCkgeworICAgICAgICAgICAgICBpZiAoQ3Vy
cnkuXzIoY21wLCB4MiwgeDMpID4gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21w
LCB4MSwgeDMpID4gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDMpID4gMCkgeworICAgICAgICAgICAgICByZXR1
cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAg
ICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MiwgeDMpID4g
MCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8w
CisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MywK
KyAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
IHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGwp
IHsKKyAgICAgIHZhciBtYXRjaCQyID0gbFsxXTsKKyAgICAgIGlmIChtYXRjaCQyKSB7CisgICAg
ICAgIHZhciB4MiQxID0gbWF0Y2gkMlswXTsKKyAgICAgICAgdmFyIHgxJDEgPSBsWzBdOworICAg
ICAgICBpZiAoQ3VycnkuXzIoY21wLCB4MSQxLCB4MiQxKSA+IDApIHsKKyAgICAgICAgICByZXR1
cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAgICAgICAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgICAgeDIkMSwKKyAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgZXhpdCA9IDE7CisgICAgfQorICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICB2YXIg
bjEgPSAobiA+PiAxKTsKKyAgICAgIHZhciBuMiA9IG4gLSBuMSB8IDA7CisgICAgICB2YXIgbDIg
PSBjaG9wKG4xLCBsKTsKKyAgICAgIHZhciBzMSA9IHNvcnQobjEsIGwpOworICAgICAgdmFyIHMy
ID0gc29ydChuMiwgbDIpOworICAgICAgdmFyIF9sMSA9IHMxOworICAgICAgdmFyIF9sMiA9IHMy
OworICAgICAgdmFyIF9hY2N1ID0gLyogW10gKi8wOworICAgICAgd2hpbGUodHJ1ZSkgeworICAg
ICAgICB2YXIgYWNjdSA9IF9hY2N1OworICAgICAgICB2YXIgbDIkMSA9IF9sMjsKKyAgICAgICAg
dmFyIGwxID0gX2wxOworICAgICAgICBpZiAobDEpIHsKKyAgICAgICAgICBpZiAobDIkMSkgewor
ICAgICAgICAgICAgdmFyIGgyID0gbDIkMVswXTsKKyAgICAgICAgICAgIHZhciBoMSA9IGwxWzBd
OworICAgICAgICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgaDEsIGgyKSA8PSAwKSB7CisgICAgICAg
ICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAg
ICAgICAgYWNjdQorICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBfbDEgPSBsMVsxXTsK
KyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAg
ICAgICAgICAgICAgIGgyLAorICAgICAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICAgICAgX2wyID0gbDIkMVsxXTsKKyAgICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMSwgYWNjdSk7CisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiByZXZfYXBwZW5k
KGwyJDEsIGFjY3UpOworICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAgICAKKyAgfTsKKyAg
dmFyIGxlbiA9IGxlbmd0aChsKTsKKyAgaWYgKGxlbiA8IDIpIHsKKyAgICByZXR1cm4gbDsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gc29ydChsZW4sIGwpOworICB9Cit9CisKK2Z1bmN0aW9u
IHNvcnRfdW5pcShjbXAsIGwpIHsKKyAgdmFyIHNvcnQgPSBmdW5jdGlvbiAobiwgbCkgeworICAg
IHZhciBleGl0ID0gMDsKKyAgICBpZiAobiAhPT0gMikgeworICAgICAgaWYgKG4gIT09IDMpIHsK
KyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIGlmIChsKSB7CisgICAgICAg
IHZhciBtYXRjaCA9IGxbMV07CisgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgIHZhciBt
YXRjaCQxID0gbWF0Y2hbMV07CisgICAgICAgICAgaWYgKG1hdGNoJDEpIHsKKyAgICAgICAgICAg
IHZhciB4MyA9IG1hdGNoJDFbMF07CisgICAgICAgICAgICB2YXIgeDIgPSBtYXRjaFswXTsKKyAg
ICAgICAgICAgIHZhciB4MSA9IGxbMF07CisgICAgICAgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGNt
cCwgeDEsIHgyKTsKKyAgICAgICAgICAgIGlmIChjKSB7CisgICAgICAgICAgICAgIGlmIChjIDwg
MCkgeworICAgICAgICAgICAgICAgIHZhciBjJDEgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7Cisg
ICAgICAgICAgICAgICAgaWYgKGMkMSkgeworICAgICAgICAgICAgICAgICAgaWYgKGMkMSA8IDAp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB2YXIgYyQyID0gQ3VycnkuXzIoY21wLCB4
MSwgeDMpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyQyKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGMkMiA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgdmFyIGMkMyA9IEN1cnJ5Ll8yKGNtcCwgeDEsIHgzKTsKKyAgICAgICAgICAg
ICAgICBpZiAoYyQzKSB7CisgICAgICAgICAgICAgICAgICBpZiAoYyQzIDwgMCkgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIHZhciBjJDQgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChjJDQpIHsKKyAgICAgICAgICAgICAgICAgICAgICBpZiAo
YyQ0IDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgIHZhciBjJDUgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7CisgICAgICAgICAg
ICAgIGlmIChjJDUpIHsKKyAgICAgICAgICAgICAgICBpZiAoYyQ1IDwgMCkgeworICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
cmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChs
KSB7CisgICAgICB2YXIgbWF0Y2gkMiA9IGxbMV07CisgICAgICBpZiAobWF0Y2gkMikgeworICAg
ICAgICB2YXIgeDIkMSA9IG1hdGNoJDJbMF07CisgICAgICAgIHZhciB4MSQxID0gbFswXTsKKyAg
ICAgICAgdmFyIGMkNiA9IEN1cnJ5Ll8yKGNtcCwgeDEkMSwgeDIkMSk7CisgICAgICAgIGlmIChj
JDYpIHsKKyAgICAgICAgICBpZiAoYyQ2IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAgICAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MiQxLAorICAgICAgICAgICAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgeDIkMSwKKyAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgIC8qIFtd
ICovMAorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBl
eGl0ID0gMTsKKyAgICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIHZhciBuMSA9IChu
ID4+IDEpOworICAgICAgdmFyIG4yID0gbiAtIG4xIHwgMDsKKyAgICAgIHZhciBsMiA9IGNob3Ao
bjEsIGwpOworICAgICAgdmFyIHMxID0gcmV2X3NvcnQobjEsIGwpOworICAgICAgdmFyIHMyID0g
cmV2X3NvcnQobjIsIGwyKTsKKyAgICAgIHZhciBfbDEgPSBzMTsKKyAgICAgIHZhciBfbDIgPSBz
MjsKKyAgICAgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAg
ICAgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICAgICAgdmFyIGwyJDEgPSBfbDI7CisgICAgICAg
IHZhciBsMSA9IF9sMTsKKyAgICAgICAgaWYgKGwxKSB7CisgICAgICAgICAgaWYgKGwyJDEpIHsK
KyAgICAgICAgICAgIHZhciB0MiA9IGwyJDFbMV07CisgICAgICAgICAgICB2YXIgaDIgPSBsMiQx
WzBdOworICAgICAgICAgICAgdmFyIHQxID0gbDFbMV07CisgICAgICAgICAgICB2YXIgaDEgPSBs
MVswXTsKKyAgICAgICAgICAgIHZhciBjJDcgPSBDdXJyeS5fMihjbXAsIGgxLCBoMik7CisgICAg
ICAgICAgICBpZiAoYyQ3KSB7CisgICAgICAgICAgICAgIGlmIChjJDcgPiAwKSB7CisgICAgICAg
ICAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIGgxLAorICAgICAg
ICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgX2wx
ID0gdDE7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9hY2N1
ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBoMiwKKyAgICAgICAgICAgICAgICAgIGFj
Y3UKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIF9sMiA9IHQyOworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9hY2N1ID0g
LyogOjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAgICAgYWNjdQorICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgICBfbDIgPSB0MjsKKyAgICAgICAgICAgICAgX2wx
ID0gdDE7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJu
IHJldl9hcHBlbmQobDEsIGFjY3UpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMiQxLCBhY2N1KTsKKyAgICAgICAg
fQorICAgICAgfTsKKyAgICB9CisgICAgCisgIH07CisgIHZhciByZXZfc29ydCA9IGZ1bmN0aW9u
IChuLCBsKSB7CisgICAgdmFyIGV4aXQgPSAwOworICAgIGlmIChuICE9PSAyKSB7CisgICAgICBp
ZiAobiAhPT0gMykgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYg
KGwpIHsKKyAgICAgICAgdmFyIG1hdGNoID0gbFsxXTsKKyAgICAgICAgaWYgKG1hdGNoKSB7Cisg
ICAgICAgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFsxXTsKKyAgICAgICAgICBpZiAobWF0Y2gkMSkg
eworICAgICAgICAgICAgdmFyIHgzID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICAgIHZhciB4MiA9
IG1hdGNoWzBdOworICAgICAgICAgICAgdmFyIHgxID0gbFswXTsKKyAgICAgICAgICAgIHZhciBj
ID0gQ3VycnkuXzIoY21wLCB4MSwgeDIpOworICAgICAgICAgICAgaWYgKGMpIHsKKyAgICAgICAg
ICAgICAgaWYgKGMgPiAwKSB7CisgICAgICAgICAgICAgICAgdmFyIGMkMSA9IEN1cnJ5Ll8yKGNt
cCwgeDIsIHgzKTsKKyAgICAgICAgICAgICAgICBpZiAoYyQxKSB7CisgICAgICAgICAgICAgICAg
ICBpZiAoYyQxID4gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjJDIgPSBD
dXJyeS5fMihjbXAsIHgxLCB4Myk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjJDIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYyQyID4gMCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAg
ICAgICBdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgYyQzID0gQ3VycnkuXzIoY21wLCB4MSwgeDMp
OworICAgICAgICAgICAgICAgIGlmIChjJDMpIHsKKyAgICAgICAgICAgICAgICAgIGlmIChjJDMg
PiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGMkNCA9IEN1cnJ5Ll8yKGNt
cCwgeDIsIHgzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMkNCkgeworICAgICAgICAgICAg
ICAgICAgICAgIGlmIChjJDQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICov
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIGMkNSA9IEN1cnJ5Ll8yKGNtcCwgeDIsIHgz
KTsKKyAgICAgICAgICAgICAgaWYgKGMkNSkgeworICAgICAgICAgICAgICAgIGlmIChjJDUgPiAw
KSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9Cisg
ICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQor
ICAgIGVsc2UgaWYgKGwpIHsKKyAgICAgIHZhciBtYXRjaCQyID0gbFsxXTsKKyAgICAgIGlmICht
YXRjaCQyKSB7CisgICAgICAgIHZhciB4MiQxID0gbWF0Y2gkMlswXTsKKyAgICAgICAgdmFyIHgx
JDEgPSBsWzBdOworICAgICAgICB2YXIgYyQ2ID0gQ3VycnkuXzIoY21wLCB4MSQxLCB4MiQxKTsK
KyAgICAgICAgaWYgKGMkNikgeworICAgICAgICAgIGlmIChjJDYgPiAwKSB7CisgICAgICAgICAg
ICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgIHgxJDEsCisgICAgICAgICAg
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
cmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICB4MiQxLAorICAgICAgICAgICAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAg
ICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIGV4aXQgPSAxOworICAgIH0KKyAgICBpZiAoZXhpdCA9PT0gMSkgeworICAg
ICAgdmFyIG4xID0gKG4gPj4gMSk7CisgICAgICB2YXIgbjIgPSBuIC0gbjEgfCAwOworICAgICAg
dmFyIGwyID0gY2hvcChuMSwgbCk7CisgICAgICB2YXIgczEgPSBzb3J0KG4xLCBsKTsKKyAgICAg
IHZhciBzMiA9IHNvcnQobjIsIGwyKTsKKyAgICAgIHZhciBfbDEgPSBzMTsKKyAgICAgIHZhciBf
bDIgPSBzMjsKKyAgICAgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgICAgIHdoaWxlKHRydWUp
IHsKKyAgICAgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICAgICAgdmFyIGwyJDEgPSBfbDI7Cisg
ICAgICAgIHZhciBsMSA9IF9sMTsKKyAgICAgICAgaWYgKGwxKSB7CisgICAgICAgICAgaWYgKGwy
JDEpIHsKKyAgICAgICAgICAgIHZhciB0MiA9IGwyJDFbMV07CisgICAgICAgICAgICB2YXIgaDIg
PSBsMiQxWzBdOworICAgICAgICAgICAgdmFyIHQxID0gbDFbMV07CisgICAgICAgICAgICB2YXIg
aDEgPSBsMVswXTsKKyAgICAgICAgICAgIHZhciBjJDcgPSBDdXJyeS5fMihjbXAsIGgxLCBoMik7
CisgICAgICAgICAgICBpZiAoYyQ3KSB7CisgICAgICAgICAgICAgIGlmIChjJDcgPCAwKSB7Cisg
ICAgICAgICAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIGgxLAor
ICAgICAgICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAg
ICAgX2wxID0gdDE7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBoMiwKKyAgICAgICAgICAgICAg
ICAgIGFjY3UKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIF9sMiA9IHQyOwor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9h
Y2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAgICAgYWNj
dQorICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBfbDIgPSB0MjsKKyAgICAgICAgICAg
ICAgX2wxID0gdDE7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
cmV0dXJuIHJldl9hcHBlbmQobDEsIGFjY3UpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMiQxLCBhY2N1KTsKKyAg
ICAgICAgfQorICAgICAgfTsKKyAgICB9CisgICAgCisgIH07CisgIHZhciBsZW4gPSBsZW5ndGgo
bCk7CisgIGlmIChsZW4gPCAyKSB7CisgICAgcmV0dXJuIGw7CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIHNvcnQobGVuLCBsKTsKKyAgfQorfQorCit2YXIgYXBwZW5kID0gUGVydmFzaXZlcy4k
YXQ7CisKK3ZhciBjb25jYXQgPSBmbGF0dGVuOworCit2YXIgZmlsdGVyID0gZmluZF9hbGw7CisK
K3ZhciBzb3J0ID0gc3RhYmxlX3NvcnQ7CisKK3ZhciBmYXN0X3NvcnQgPSBzdGFibGVfc29ydDsK
KworZXhwb3J0cy5sZW5ndGggICAgICAgPSBsZW5ndGg7CitleHBvcnRzLmhkICAgICAgICAgICA9
IGhkOworZXhwb3J0cy50bCAgICAgICAgICAgPSB0bDsKK2V4cG9ydHMubnRoICAgICAgICAgID0g
bnRoOworZXhwb3J0cy5yZXYgICAgICAgICAgPSByZXY7CitleHBvcnRzLmFwcGVuZCAgICAgICA9
IGFwcGVuZDsKK2V4cG9ydHMucmV2X2FwcGVuZCAgID0gcmV2X2FwcGVuZDsKK2V4cG9ydHMuY29u
Y2F0ICAgICAgID0gY29uY2F0OworZXhwb3J0cy5mbGF0dGVuICAgICAgPSBmbGF0dGVuOworZXhw
b3J0cy5pdGVyICAgICAgICAgPSBpdGVyOworZXhwb3J0cy5pdGVyaSAgICAgICAgPSBpdGVyaTsK
K2V4cG9ydHMubWFwICAgICAgICAgID0gbWFwOworZXhwb3J0cy5tYXBpICAgICAgICAgPSBtYXBp
JDE7CitleHBvcnRzLnJldl9tYXAgICAgICA9IHJldl9tYXA7CitleHBvcnRzLmZvbGRfbGVmdCAg
ICA9IGZvbGRfbGVmdDsKK2V4cG9ydHMuZm9sZF9yaWdodCAgID0gZm9sZF9yaWdodDsKK2V4cG9y
dHMuaXRlcjIgICAgICAgID0gaXRlcjI7CitleHBvcnRzLm1hcDIgICAgICAgICA9IG1hcDI7Citl
eHBvcnRzLnJldl9tYXAyICAgICA9IHJldl9tYXAyOworZXhwb3J0cy5mb2xkX2xlZnQyICAgPSBm
b2xkX2xlZnQyOworZXhwb3J0cy5mb2xkX3JpZ2h0MiAgPSBmb2xkX3JpZ2h0MjsKK2V4cG9ydHMu
Zm9yX2FsbCAgICAgID0gZm9yX2FsbDsKK2V4cG9ydHMuZXhpc3RzICAgICAgID0gZXhpc3RzOwor
ZXhwb3J0cy5mb3JfYWxsMiAgICAgPSBmb3JfYWxsMjsKK2V4cG9ydHMuZXhpc3RzMiAgICAgID0g
ZXhpc3RzMjsKK2V4cG9ydHMubWVtICAgICAgICAgID0gbWVtOworZXhwb3J0cy5tZW1xICAgICAg
ICAgPSBtZW1xOworZXhwb3J0cy5maW5kICAgICAgICAgPSBmaW5kOworZXhwb3J0cy5maWx0ZXIg
ICAgICAgPSBmaWx0ZXI7CitleHBvcnRzLmZpbmRfYWxsICAgICA9IGZpbmRfYWxsOworZXhwb3J0
cy5wYXJ0aXRpb24gICAgPSBwYXJ0aXRpb247CitleHBvcnRzLmFzc29jICAgICAgICA9IGFzc29j
OworZXhwb3J0cy5hc3NxICAgICAgICAgPSBhc3NxOworZXhwb3J0cy5tZW1fYXNzb2MgICAgPSBt
ZW1fYXNzb2M7CitleHBvcnRzLm1lbV9hc3NxICAgICA9IG1lbV9hc3NxOworZXhwb3J0cy5yZW1v
dmVfYXNzb2MgPSByZW1vdmVfYXNzb2M7CitleHBvcnRzLnJlbW92ZV9hc3NxICA9IHJlbW92ZV9h
c3NxOworZXhwb3J0cy5zcGxpdCAgICAgICAgPSBzcGxpdDsKK2V4cG9ydHMuY29tYmluZSAgICAg
ID0gY29tYmluZTsKK2V4cG9ydHMuc29ydCAgICAgICAgID0gc29ydDsKK2V4cG9ydHMuc3RhYmxl
X3NvcnQgID0gc3RhYmxlX3NvcnQ7CitleHBvcnRzLmZhc3Rfc29ydCAgICA9IGZhc3Rfc29ydDsK
K2V4cG9ydHMuc29ydF91bmlxICAgID0gc29ydF91bmlxOworZXhwb3J0cy5tZXJnZSAgICAgICAg
PSBtZXJnZTsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgbGlzdC5qcyAv
Ly8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wydt
YXAnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0
YXJ0IG9mIG1hcC5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgICAg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9u
IE1ha2UoZnVuYXJnKSB7CisgIHZhciBoZWlnaHQgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBp
ZiAocGFyYW0pIHsKKyAgICAgIHJldHVybiBwYXJhbVs0XTsKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICByZXR1cm4gMDsKKyAgICB9CisgIH07CisgIHZhciBjcmVhdGUgPSBmdW5jdGlvbiAobCwg
eCwgZCwgcikgeworICAgIHZhciBobCA9IGhlaWdodChsKTsKKyAgICB2YXIgaHIgPSBoZWlnaHQo
cik7CisgICAgcmV0dXJuIC8qIE5vZGUgKi9bCisgICAgICAgICAgICBsLAorICAgICAgICAgICAg
eCwKKyAgICAgICAgICAgIGQsCisgICAgICAgICAgICByLAorICAgICAgICAgICAgaGwgPj0gaHIg
PyBobCArIDEgfCAwIDogaHIgKyAxIHwgMAorICAgICAgICAgIF07CisgIH07CisgIHZhciBzaW5n
bGV0b24gPSBmdW5jdGlvbiAoeCwgZCkgeworICAgIHJldHVybiAvKiBOb2RlICovWworICAgICAg
ICAgICAgLyogRW1wdHkgKi8wLAorICAgICAgICAgICAgeCwKKyAgICAgICAgICAgIGQsCisgICAg
ICAgICAgICAvKiBFbXB0eSAqLzAsCisgICAgICAgICAgICAxCisgICAgICAgICAgXTsKKyAgfTsK
KyAgdmFyIGJhbCA9IGZ1bmN0aW9uIChsLCB4LCBkLCByKSB7CisgICAgdmFyIGhsID0gbCA/IGxb
NF0gOiAwOworICAgIHZhciBociA9IHIgPyByWzRdIDogMDsKKyAgICBpZiAoaGwgPiAoaHIgKyAy
IHwgMCkpIHsKKyAgICAgIGlmIChsKSB7CisgICAgICAgIHZhciBsciA9IGxbM107CisgICAgICAg
IHZhciBsZCA9IGxbMl07CisgICAgICAgIHZhciBsdiA9IGxbMV07CisgICAgICAgIHZhciBsbCA9
IGxbMF07CisgICAgICAgIGlmIChoZWlnaHQobGwpID49IGhlaWdodChscikpIHsKKyAgICAgICAg
ICByZXR1cm4gY3JlYXRlKGxsLCBsdiwgbGQsIGNyZWF0ZShsciwgeCwgZCwgcikpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgaWYgKGxyKSB7CisgICAgICAgICAgcmV0dXJuIGNyZWF0ZShjcmVh
dGUobGwsIGx2LCBsZCwgbHJbMF0pLCBsclsxXSwgbHJbMl0sIGNyZWF0ZShsclszXSwgeCwgZCwg
cikpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAg
ICAgICAgICAgICAgICJNYXAuYmFsIgorICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAiTWFwLmJh
bCIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGhyID4gKGhs
ICsgMiB8IDApKSB7CisgICAgICBpZiAocikgeworICAgICAgICB2YXIgcnIgPSByWzNdOworICAg
ICAgICB2YXIgcmQgPSByWzJdOworICAgICAgICB2YXIgcnYgPSByWzFdOworICAgICAgICB2YXIg
cmwgPSByWzBdOworICAgICAgICBpZiAoaGVpZ2h0KHJyKSA+PSBoZWlnaHQocmwpKSB7CisgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZShjcmVhdGUobCwgeCwgZCwgcmwpLCBydiwgcmQsIHJyKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmIChybCkgeworICAgICAgICAgIHJldHVybiBjcmVhdGUo
Y3JlYXRlKGwsIHgsIGQsIHJsWzBdKSwgcmxbMV0sIHJsWzJdLCBjcmVhdGUocmxbM10sIHJ2LCBy
ZCwgcnIpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBbCisg
ICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwK
KyAgICAgICAgICAgICAgICAiTWFwLmJhbCIKKyAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAgIk1h
cC5iYWwiCisgICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHJldHVybiAvKiBOb2RlICovWworICAgICAgICAgICAgICBsLAorICAgICAgICAgICAgICB4LAor
ICAgICAgICAgICAgICBkLAorICAgICAgICAgICAgICByLAorICAgICAgICAgICAgICBobCA+PSBo
ciA/IGhsICsgMSB8IDAgOiBociArIDEgfCAwCisgICAgICAgICAgICBdOworICAgIH0KKyAgfTsK
KyAgdmFyIGlzX2VtcHR5ID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7Cisg
ICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biAvKiB0cnVlICovMTsKKyAgICB9CisgIH07CisgIHZhciBhZGQgPSBmdW5jdGlvbiAoeCwgZGF0
YSwgcGFyYW0pIHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107Cisg
ICAgICB2YXIgZCA9IHBhcmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZh
ciBsID0gcGFyYW1bMF07CisgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJl
ICovMF0sIHgsIHYpOworICAgICAgaWYgKGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAg
ICAgICAgcmV0dXJuIGJhbChhZGQoeCwgZGF0YSwgbCksIHYsIGQsIHIpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBiYWwobCwgdiwgZCwgYWRkKHgsIGRhdGEs
IHIpKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAv
KiBOb2RlICovWworICAgICAgICAgICAgICAgIGwsCisgICAgICAgICAgICAgICAgeCwKKyAgICAg
ICAgICAgICAgICBkYXRhLAorICAgICAgICAgICAgICAgIHIsCisgICAgICAgICAgICAgICAgcGFy
YW1bNF0KKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gLyogTm9kZSAqL1sKKyAgICAgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAg
ICAgICAgICB4LAorICAgICAgICAgICAgICBkYXRhLAorICAgICAgICAgICAgICAvKiBFbXB0eSAq
LzAsCisgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgIF07CisgICAgfQorICB9OworICB2YXIg
ZmluZCA9IGZ1bmN0aW9uICh4LCBfcGFyYW0pIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2
YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGMgPSBD
dXJyeS5fMihmdW5hcmdbLyogY29tcGFyZSAqLzBdLCB4LCBwYXJhbVsxXSk7CisgICAgICAgIGlm
IChjKSB7CisgICAgICAgICAgX3BhcmFtID0gYyA8IDAgPyBwYXJhbVswXSA6IHBhcmFtWzNdOwor
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICByZXR1cm4gcGFyYW1bMl07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAg
IGVsc2UgeworICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7
CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIG1lbSA9IGZ1bmN0aW9uICh4LCBfcGFyYW0p
IHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICBp
ZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGMgPSBDdXJyeS5fMihmdW5hcmdbLyogY29tcGFyZSAq
LzBdLCB4LCBwYXJhbVsxXSk7CisgICAgICAgIGlmIChjKSB7CisgICAgICAgICAgX3BhcmFtID0g
YyA8IDAgPyBwYXJhbVswXSA6IHBhcmFtWzNdOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyogdHJ1
ZSAqLzE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4g
LyogZmFsc2UgKi8wOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBtaW5fYmluZGluZyA9
IGZ1bmN0aW9uIChfcGFyYW0pIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0g
PSBfcGFyYW07CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGwgPSBwYXJhbVswXTsK
KyAgICAgICAgaWYgKGwpIHsKKyAgICAgICAgICBfcGFyYW0gPSBsOworICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBy
ZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAgICAg
ICAgICAgICAgIHBhcmFtWzJdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5v
dF9mb3VuZDsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgbWF4X2JpbmRpbmcgPSBmdW5j
dGlvbiAoX3BhcmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3Bh
cmFtOworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIHZhciByID0gcGFyYW1bM107CisgICAg
ICAgIGlmIChyKSB7CisgICAgICAgICAgX3BhcmFtID0gcjsKKyAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJu
IC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgcGFyYW1bMV0sCisgICAgICAgICAgICAg
ICAgICBwYXJhbVsyXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91
bmQ7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1
bmN0aW9uIChwYXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGwgPSBwYXJhbVsw
XTsKKyAgICAgIGlmIChsKSB7CisgICAgICAgIHJldHVybiBiYWwocmVtb3ZlX21pbl9iaW5kaW5n
KGwpLCBwYXJhbVsxXSwgcGFyYW1bMl0sIHBhcmFtWzNdKTsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICByZXR1cm4gcGFyYW1bM107CisgICAgICB9CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxp
ZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJNYXAucmVtb3ZlX21pbl9lbHQiCisgICAgICAgICAg
XTsKKyAgICB9CisgIH07CisgIHZhciByZW1vdmUgPSBmdW5jdGlvbiAoeCwgcGFyYW0pIHsKKyAg
ICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICB2YXIgZCA9IHBh
cmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsID0gcGFyYW1bMF07
CisgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJlICovMF0sIHgsIHYpOwor
ICAgICAgaWYgKGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgcmV0dXJuIGJh
bChyZW1vdmUoeCwgbCksIHYsIGQsIHIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIHJldHVybiBiYWwobCwgdiwgZCwgcmVtb3ZlKHgsIHIpKTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciB0MSA9IGw7CisgICAgICAgIHZhciB0MiA9
IHI7CisgICAgICAgIGlmICh0MSkgeworICAgICAgICAgIGlmICh0MikgeworICAgICAgICAgICAg
dmFyIG1hdGNoID0gbWluX2JpbmRpbmcodDIpOworICAgICAgICAgICAgcmV0dXJuIGJhbCh0MSwg
bWF0Y2hbMF0sIG1hdGNoWzFdLCByZW1vdmVfbWluX2JpbmRpbmcodDIpKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdDE7CisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiB0MjsKKyAgICAgICAg
fQorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBFbXB0eSAqLzA7
CisgICAgfQorICB9OworICB2YXIgaXRlciA9IGZ1bmN0aW9uIChmLCBfcGFyYW0pIHsKKyAgICB3
aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICBpZiAocGFyYW0p
IHsKKyAgICAgICAgaXRlcihmLCBwYXJhbVswXSk7CisgICAgICAgIEN1cnJ5Ll8yKGYsIHBhcmFt
WzFdLCBwYXJhbVsyXSk7CisgICAgICAgIF9wYXJhbSA9IHBhcmFtWzNdOworICAgICAgICBjb250
aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAv
KiAoKSAqLzA7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIG1hcCA9IGZ1bmN0aW9uIChm
LCBwYXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGwkcHJpbWUgPSBtYXAoZiwg
cGFyYW1bMF0pOworICAgICAgdmFyIGQkcHJpbWUgPSBDdXJyeS5fMShmLCBwYXJhbVsyXSk7Cisg
ICAgICB2YXIgciRwcmltZSA9IG1hcChmLCBwYXJhbVszXSk7CisgICAgICByZXR1cm4gLyogTm9k
ZSAqL1sKKyAgICAgICAgICAgICAgbCRwcmltZSwKKyAgICAgICAgICAgICAgcGFyYW1bMV0sCisg
ICAgICAgICAgICAgIGQkcHJpbWUsCisgICAgICAgICAgICAgIHIkcHJpbWUsCisgICAgICAgICAg
ICAgIHBhcmFtWzRdCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJl
dHVybiAvKiBFbXB0eSAqLzA7CisgICAgfQorICB9OworICB2YXIgbWFwaSA9IGZ1bmN0aW9uIChm
LCBwYXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAg
ICAgIHZhciBsJHByaW1lID0gbWFwaShmLCBwYXJhbVswXSk7CisgICAgICB2YXIgZCRwcmltZSA9
IEN1cnJ5Ll8yKGYsIHYsIHBhcmFtWzJdKTsKKyAgICAgIHZhciByJHByaW1lID0gbWFwaShmLCBw
YXJhbVszXSk7CisgICAgICByZXR1cm4gLyogTm9kZSAqL1sKKyAgICAgICAgICAgICAgbCRwcmlt
ZSwKKyAgICAgICAgICAgICAgdiwKKyAgICAgICAgICAgICAgZCRwcmltZSwKKyAgICAgICAgICAg
ICAgciRwcmltZSwKKyAgICAgICAgICAgICAgcGFyYW1bNF0KKyAgICAgICAgICAgIF07CisgICAg
fQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIEVtcHR5ICovMDsKKyAgICB9CisgIH07Cisg
IHZhciBmb2xkID0gZnVuY3Rpb24gKGYsIF9tLCBfYWNjdSkgeworICAgIHdoaWxlKHRydWUpIHsK
KyAgICAgIHZhciBhY2N1ID0gX2FjY3U7CisgICAgICB2YXIgbSA9IF9tOworICAgICAgaWYgKG0p
IHsKKyAgICAgICAgX2FjY3UgPSBDdXJyeS5fMyhmLCBtWzFdLCBtWzJdLCBmb2xkKGYsIG1bMF0s
IGFjY3UpKTsKKyAgICAgICAgX20gPSBtWzNdOworICAgICAgICBjb250aW51ZSA7CisgICAgICAg
IAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBhY2N1OworICAgICAgfQor
ICAgIH07CisgIH07CisgIHZhciBmb3JfYWxsID0gZnVuY3Rpb24gKHAsIF9wYXJhbSkgeworICAg
IHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICAgIGlmIChwYXJh
bSkgeworICAgICAgICBpZiAoQ3VycnkuXzIocCwgcGFyYW1bMV0sIHBhcmFtWzJdKSkgeworICAg
ICAgICAgIGlmIChmb3JfYWxsKHAsIHBhcmFtWzBdKSkgeworICAgICAgICAgICAgX3BhcmFtID0g
cGFyYW1bM107CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAg
ICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4g
LyogZmFsc2UgKi8wOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIC8qIHRydWUgKi8xOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBleGlzdHMg
PSBmdW5jdGlvbiAocCwgX3BhcmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBh
cmFtID0gX3BhcmFtOworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIGlmIChDdXJyeS5fMihw
LCBwYXJhbVsxXSwgcGFyYW1bMl0pKSB7CisgICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGV4aXN0cyhwLCBwYXJhbVswXSkpIHsKKyAgICAg
ICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgX3BhcmFtID0gcGFyYW1bM107CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
IAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIGZh
bHNlICovMDsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgYWRkX21pbl9iaW5kaW5nID0g
ZnVuY3Rpb24gKGssIHYsIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICByZXR1cm4g
YmFsKGFkZF9taW5fYmluZGluZyhrLCB2LCBwYXJhbVswXSksIHBhcmFtWzFdLCBwYXJhbVsyXSwg
cGFyYW1bM10pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzaW5nbGV0b24oaywg
dik7CisgICAgfQorICB9OworICB2YXIgYWRkX21heF9iaW5kaW5nID0gZnVuY3Rpb24gKGssIHYs
IHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICByZXR1cm4gYmFsKHBhcmFtWzBdLCBw
YXJhbVsxXSwgcGFyYW1bMl0sIGFkZF9tYXhfYmluZGluZyhrLCB2LCBwYXJhbVszXSkpOworICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzaW5nbGV0b24oaywgdik7CisgICAgfQorICB9
OworICB2YXIgam9pbiA9IGZ1bmN0aW9uIChsLCB2LCBkLCByKSB7CisgICAgaWYgKGwpIHsKKyAg
ICAgIGlmIChyKSB7CisgICAgICAgIHZhciByaCA9IHJbNF07CisgICAgICAgIHZhciBsaCA9IGxb
NF07CisgICAgICAgIGlmIChsaCA+IChyaCArIDIgfCAwKSkgeworICAgICAgICAgIHJldHVybiBi
YWwobFswXSwgbFsxXSwgbFsyXSwgam9pbihsWzNdLCB2LCBkLCByKSk7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSBpZiAocmggPiAobGggKyAyIHwgMCkpIHsKKyAgICAgICAgICByZXR1cm4gYmFs
KGpvaW4obCwgdiwgZCwgclswXSksIHJbMV0sIHJbMl0sIHJbM10pOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBjcmVhdGUobCwgdiwgZCwgcik7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gYWRkX21heF9iaW5kaW5n
KHYsIGQsIGwpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBhZGRf
bWluX2JpbmRpbmcodiwgZCwgcik7CisgICAgfQorICB9OworICB2YXIgY29uY2F0ID0gZnVuY3Rp
b24gKHQxLCB0MikgeworICAgIGlmICh0MSkgeworICAgICAgaWYgKHQyKSB7CisgICAgICAgIHZh
ciBtYXRjaCA9IG1pbl9iaW5kaW5nKHQyKTsKKyAgICAgICAgcmV0dXJuIGpvaW4odDEsIG1hdGNo
WzBdLCBtYXRjaFsxXSwgcmVtb3ZlX21pbl9iaW5kaW5nKHQyKSk7CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgcmV0dXJuIHQxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIHJldHVybiB0MjsKKyAgICB9CisgIH07CisgIHZhciBjb25jYXRfb3Jfam9pbiA9IGZ1bmN0
aW9uICh0MSwgdiwgZCwgdDIpIHsKKyAgICBpZiAoZCkgeworICAgICAgcmV0dXJuIGpvaW4odDEs
IHYsIGRbMF0sIHQyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gY29uY2F0KHQx
LCB0Mik7CisgICAgfQorICB9OworICB2YXIgc3BsaXQgPSBmdW5jdGlvbiAoeCwgcGFyYW0pIHsK
KyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICB2YXIgZCA9
IHBhcmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsID0gcGFyYW1b
MF07CisgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJlICovMF0sIHgsIHYp
OworICAgICAgaWYgKGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgdmFyIG1h
dGNoID0gc3BsaXQoeCwgbCk7CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAg
ICAgICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKKyAgICAg
ICAgICAgICAgICAgIGpvaW4obWF0Y2hbMl0sIHYsIGQsIHIpCisgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHNwbGl0
KHgsIHIpOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAg
IGpvaW4obCwgdiwgZCwgbWF0Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICBtYXRjaCQxWzFd
LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMVsyXQorICAgICAgICAgICAgICAgIF07CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9b
CisgICAgICAgICAgICAgICAgbCwKKyAgICAgICAgICAgICAgICAvKiBTb21lICovW2RdLAorICAg
ICAgICAgICAgICAgIHIKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIEVtcHR5ICov
MCwKKyAgICAgICAgICAgICAgLyogTm9uZSAqLzAsCisgICAgICAgICAgICAgIC8qIEVtcHR5ICov
MAorICAgICAgICAgICAgXTsKKyAgICB9CisgIH07CisgIHZhciBtZXJnZSA9IGZ1bmN0aW9uIChm
LCBzMSwgczIpIHsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHMxKSB7CisgICAgICB2YXIg
djEgPSBzMVsxXTsKKyAgICAgIGlmIChzMVs0XSA+PSBoZWlnaHQoczIpKSB7CisgICAgICAgIHZh
ciBtYXRjaCA9IHNwbGl0KHYxLCBzMik7CisgICAgICAgIHJldHVybiBjb25jYXRfb3Jfam9pbiht
ZXJnZShmLCBzMVswXSwgbWF0Y2hbMF0pLCB2MSwgQ3VycnkuXzMoZiwgdjEsIC8qIFNvbWUgKi9b
czFbMl1dLCBtYXRjaFsxXSksIG1lcmdlKGYsIHMxWzNdLCBtYXRjaFsyXSkpOworICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNl
IGlmIChzMikgeworICAgICAgZXhpdCA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0
dXJuIC8qIEVtcHR5ICovMDsKKyAgICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIGlm
IChzMikgeworICAgICAgICB2YXIgdjIgPSBzMlsxXTsKKyAgICAgICAgdmFyIG1hdGNoJDEgPSBz
cGxpdCh2MiwgczEpOworICAgICAgICByZXR1cm4gY29uY2F0X29yX2pvaW4obWVyZ2UoZiwgbWF0
Y2gkMVswXSwgczJbMF0pLCB2MiwgQ3VycnkuXzMoZiwgdjIsIG1hdGNoJDFbMV0sIC8qIFNvbWUg
Ki9bczJbMl1dKSwgbWVyZ2UoZiwgbWF0Y2gkMVsyXSwgczJbM10pKTsKKyAgICAgIH0KKyAgICAg
IGVsc2UgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
Im1hcC5tbCIsCisgICAgICAgICAgICAgICAgMjcwLAorICAgICAgICAgICAgICAgIDEwCisgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfQorICAgIAorICB9Owor
ICB2YXIgZmlsdGVyID0gZnVuY3Rpb24gKHAsIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7Cisg
ICAgICB2YXIgZCA9IHBhcmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZh
ciBsJHByaW1lID0gZmlsdGVyKHAsIHBhcmFtWzBdKTsKKyAgICAgIHZhciBwdmQgPSBDdXJyeS5f
MihwLCB2LCBkKTsKKyAgICAgIHZhciByJHByaW1lID0gZmlsdGVyKHAsIHBhcmFtWzNdKTsKKyAg
ICAgIGlmIChwdmQpIHsKKyAgICAgICAgcmV0dXJuIGpvaW4obCRwcmltZSwgdiwgZCwgciRwcmlt
ZSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGNvbmNhdChsJHByaW1l
LCByJHByaW1lKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyog
RW1wdHkgKi8wOworICAgIH0KKyAgfTsKKyAgdmFyIHBhcnRpdGlvbiA9IGZ1bmN0aW9uIChwLCBw
YXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGQgPSBwYXJhbVsyXTsKKyAgICAg
IHZhciB2ID0gcGFyYW1bMV07CisgICAgICB2YXIgbWF0Y2ggPSBwYXJ0aXRpb24ocCwgcGFyYW1b
MF0pOworICAgICAgdmFyIGxmID0gbWF0Y2hbMV07CisgICAgICB2YXIgbHQgPSBtYXRjaFswXTsK
KyAgICAgIHZhciBwdmQgPSBDdXJyeS5fMihwLCB2LCBkKTsKKyAgICAgIHZhciBtYXRjaCQxID0g
cGFydGl0aW9uKHAsIHBhcmFtWzNdKTsKKyAgICAgIHZhciByZiA9IG1hdGNoJDFbMV07CisgICAg
ICB2YXIgcnQgPSBtYXRjaCQxWzBdOworICAgICAgaWYgKHB2ZCkgeworICAgICAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgam9pbihsdCwgdiwgZCwgcnQpLAorICAgICAg
ICAgICAgICAgIGNvbmNhdChsZiwgcmYpCisgICAgICAgICAgICAgIF07CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIGNv
bmNhdChsdCwgcnQpLAorICAgICAgICAgICAgICAgIGpvaW4obGYsIHYsIGQsIHJmKQorICAgICAg
ICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0
dXBsZSAqL1sKKyAgICAgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAgICAgICAgICAvKiBF
bXB0eSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfQorICB9OworICB2YXIgY29uc19lbnVtID0g
ZnVuY3Rpb24gKF9tLCBfZSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBlID0gX2U7
CisgICAgICB2YXIgbSA9IF9tOworICAgICAgaWYgKG0pIHsKKyAgICAgICAgX2UgPSAvKiBNb3Jl
ICovWworICAgICAgICAgIG1bMV0sCisgICAgICAgICAgbVsyXSwKKyAgICAgICAgICBtWzNdLAor
ICAgICAgICAgIGUKKyAgICAgICAgXTsKKyAgICAgICAgX20gPSBtWzBdOworICAgICAgICBjb250
aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBl
OworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBjb21wYXJlID0gZnVuY3Rpb24gKGNtcCwg
bTEsIG0yKSB7CisgICAgdmFyIF9lMSA9IGNvbnNfZW51bShtMSwgLyogRW5kICovMCk7CisgICAg
dmFyIF9lMiA9IGNvbnNfZW51bShtMiwgLyogRW5kICovMCk7CisgICAgd2hpbGUodHJ1ZSkgewor
ICAgICAgdmFyIGUyID0gX2UyOworICAgICAgdmFyIGUxID0gX2UxOworICAgICAgaWYgKGUxKSB7
CisgICAgICAgIGlmIChlMikgeworICAgICAgICAgIHZhciBjID0gQ3VycnkuXzIoZnVuYXJnWy8q
IGNvbXBhcmUgKi8wXSwgZTFbMF0sIGUyWzBdKTsKKyAgICAgICAgICBpZiAoYyAhPT0gMCkgewor
ICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgdmFyIGMkMSA9IEN1cnJ5Ll8yKGNtcCwgZTFbMV0sIGUyWzFdKTsKKyAgICAgICAg
ICAgIGlmIChjJDEgIT09IDApIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGMkMTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBfZTIgPSBjb25zX2VudW0o
ZTJbMl0sIGUyWzNdKTsKKyAgICAgICAgICAgICAgX2UxID0gY29uc19lbnVtKGUxWzJdLCBlMVsz
XSk7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJl
dHVybiAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChlMikgeworICAgICAg
ICByZXR1cm4gLTE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIGVxdWFsID0gZnVuY3Rpb24gKGNtcCwgbTEsIG0y
KSB7CisgICAgdmFyIF9lMSA9IGNvbnNfZW51bShtMSwgLyogRW5kICovMCk7CisgICAgdmFyIF9l
MiA9IGNvbnNfZW51bShtMiwgLyogRW5kICovMCk7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAg
dmFyIGUyID0gX2UyOworICAgICAgdmFyIGUxID0gX2UxOworICAgICAgaWYgKGUxKSB7CisgICAg
ICAgIGlmIChlMikgeworICAgICAgICAgIGlmIChDdXJyeS5fMihmdW5hcmdbLyogY29tcGFyZSAq
LzBdLCBlMVswXSwgZTJbMF0pKSB7CisgICAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChDdXJyeS5fMihjbXAsIGUxWzFdLCBlMlsx
XSkpIHsKKyAgICAgICAgICAgIF9lMiA9IGNvbnNfZW51bShlMlsyXSwgZTJbM10pOworICAgICAg
ICAgICAgX2UxID0gY29uc19lbnVtKGUxWzJdLCBlMVszXSk7CisgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgICB9CisgICAg
ICB9CisgICAgICBlbHNlIGlmIChlMikgeworICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOwor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICAg
IH0KKyAgICB9OworICB9OworICB2YXIgY2FyZGluYWwgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICBpZiAocGFyYW0pIHsKKyAgICAgIHJldHVybiAoY2FyZGluYWwocGFyYW1bMF0pICsgMSB8IDAp
ICsgY2FyZGluYWwocGFyYW1bM10pIHwgMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gMDsKKyAgICB9CisgIH07CisgIHZhciBiaW5kaW5nc19hdXggPSBmdW5jdGlvbiAoX2FjY3Us
IF9wYXJhbSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBwYXJhbSA9IF9wYXJhbTsK
KyAgICAgIHZhciBhY2N1ID0gX2FjY3U7CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgX3Bh
cmFtID0gcGFyYW1bMF07CisgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgLyog
dHVwbGUgKi9bCisgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAgICAgICAgIHBhcmFtWzJdCisg
ICAgICAgICAgXSwKKyAgICAgICAgICBiaW5kaW5nc19hdXgoYWNjdSwgcGFyYW1bM10pCisgICAg
ICAgIF07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgcmV0dXJuIGFjY3U7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIGJp
bmRpbmdzID0gZnVuY3Rpb24gKHMpIHsKKyAgICByZXR1cm4gYmluZGluZ3NfYXV4KC8qIFtdICov
MCwgcyk7CisgIH07CisgIHJldHVybiBbCisgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAg
ICAgIGlzX2VtcHR5LAorICAgICAgICAgIG1lbSwKKyAgICAgICAgICBhZGQsCisgICAgICAgICAg
c2luZ2xldG9uLAorICAgICAgICAgIHJlbW92ZSwKKyAgICAgICAgICBtZXJnZSwKKyAgICAgICAg
ICBjb21wYXJlLAorICAgICAgICAgIGVxdWFsLAorICAgICAgICAgIGl0ZXIsCisgICAgICAgICAg
Zm9sZCwKKyAgICAgICAgICBmb3JfYWxsLAorICAgICAgICAgIGV4aXN0cywKKyAgICAgICAgICBm
aWx0ZXIsCisgICAgICAgICAgcGFydGl0aW9uLAorICAgICAgICAgIGNhcmRpbmFsLAorICAgICAg
ICAgIGJpbmRpbmdzLAorICAgICAgICAgIG1pbl9iaW5kaW5nLAorICAgICAgICAgIG1heF9iaW5k
aW5nLAorICAgICAgICAgIG1pbl9iaW5kaW5nLAorICAgICAgICAgIHNwbGl0LAorICAgICAgICAg
IGZpbmQsCisgICAgICAgICAgbWFwLAorICAgICAgICAgIG1hcGkKKyAgICAgICAgXTsKK30KKwor
ZXhwb3J0cy5NYWtlID0gTWFrZTsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQg
b2YgbWFwLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBf
cmVnaXN0cnlbJ251bWVyaWNfZXJyb3InXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9y
dHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIG51bWVyaWNfZXJyb3IuanMgLy8vLy8vLy8KKy8v
IEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJ
VEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9leGNlcHRpb25zID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZXhjZXB0aW9ucyIpOworCit2YXIgSW50ZWdlck92ZXJm
bG93ID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiTnVtZXJpY19lcnJvci5JbnRlZ2VyT3ZlcmZs
b3ciKTsKKwordmFyIEludGVnZXJEaXZpZGVCeVplcm8gPSBDYW1sX2V4Y2VwdGlvbnMuY3JlYXRl
KCJOdW1lcmljX2Vycm9yLkludGVnZXJEaXZpZGVCeVplcm8iKTsKKwordmFyIEludmFsaWRDb252
ZXJzaW9uVG9JbnRlZ2VyID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiTnVtZXJpY19lcnJvci5J
bnZhbGlkQ29udmVyc2lvblRvSW50ZWdlciIpOworCitleHBvcnRzLkludGVnZXJPdmVyZmxvdyAg
ICAgICAgICAgID0gSW50ZWdlck92ZXJmbG93OworZXhwb3J0cy5JbnRlZ2VyRGl2aWRlQnlaZXJv
ICAgICAgICA9IEludGVnZXJEaXZpZGVCeVplcm87CitleHBvcnRzLkludmFsaWRDb252ZXJzaW9u
VG9JbnRlZ2VyID0gSW52YWxpZENvbnZlcnNpb25Ub0ludGVnZXI7CisvKiBObyBzaWRlIGVmZmVj
dCAqLworLy8vLy8vLy8gZW5kIG9mIG51bWVyaWNfZXJyb3IuanMgLy8vLy8vLy8KK8KgIMKgIHJl
dHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnb2JqJ10gPSBmdW5jdGlvbigp
IHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBvYmouanMgLy8v
Ly8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIE1hcnNoYWwgICAgICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9tYXJzaGFsIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJl
KCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIGRvdWJsZV9maWVsZCh4
LCBpKSB7CisgIHJldHVybiB4W2ldOworfQorCitmdW5jdGlvbiBzZXRfZG91YmxlX2ZpZWxkKHgs
IGksIHYpIHsKKyAgeFtpXSA9IHY7CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9u
IG1hcnNoYWwoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAi
Y2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3Jp
cHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gdW5tYXJzaGFsKHN0ciwg
cG9zKSB7CisgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICBNYXJzaGFsLmZyb21fYnl0
ZXMoc3RyLCBwb3MpLAorICAgICAgICAgIHBvcyArIE1hcnNoYWwudG90YWxfc2l6ZShzdHIsIHBv
cykgfCAwCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl9zbG90KHgpIHsKKyAg
dmFyIHNsb3QgPSB4Lmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmICh4LnRhZyB8IDApICE9PSAyNDgg
JiYgeC5sZW5ndGggPj0gMSA/IHhbMF0gOiB4OworICB2YXIgbmFtZTsKKyAgaWYgKHNsb3QubGVu
Z3RoICE9PSB1bmRlZmluZWQgJiYgc2xvdC50YWcgPT09IDI0OCkgeworICAgIG5hbWUgPSBzbG90
WzBdOworICB9CisgIGVsc2UgeworICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5v
dF9mb3VuZDsKKyAgfQorICBpZiAobmFtZS50YWcgPT09IDI1MikgeworICAgIHJldHVybiBzbG90
OworICB9CisgIGVsc2UgeworICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9m
b3VuZDsKKyAgfQorfQorCitmdW5jdGlvbiBleHRlbnNpb25fbmFtZSh4KSB7CisgIHRyeSB7Cisg
ICAgdmFyIHNsb3QgPSBleHRlbnNpb25fc2xvdCh4KTsKKyAgICByZXR1cm4gc2xvdFswXTsKKyAg
fQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5ub3RfZm91bmQpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiT2JqLmV4dGVuc2lvbl9u
YW1lIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOwor
ICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBleHRlbnNpb25faWQoeCkgeworICB0cnkgeworICAg
IHZhciBzbG90ID0gZXh0ZW5zaW9uX3Nsb3QoeCk7CisgICAgcmV0dXJuIHNsb3RbMV07CisgIH0K
KyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMu
bm90X2ZvdW5kKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgIk9iai5leHRlbnNpb25faWQi
CisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAg
fQorICB9Cit9CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl9zbG90JDEoeCkgeworICB0cnkgeworICAg
IHJldHVybiBleHRlbnNpb25fc2xvdCh4KTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAo
ZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgIHRocm93
IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQs
CisgICAgICAgICAgICAiT2JqLmV4dGVuc2lvbl9zbG90IgorICAgICAgICAgIF07CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCit2YXIgZmlyc3Rf
bm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDA7CisKK3ZhciBsYXN0X25vbl9jb25zdGFu
dF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDU7CisKK3ZhciBsYXp5X3RhZyA9IDI0NjsKKwordmFyIGNs
b3N1cmVfdGFnID0gMjQ3OworCit2YXIgb2JqZWN0X3RhZyA9IDI0ODsKKwordmFyIGluZml4X3Rh
ZyA9IDI0OTsKKwordmFyIGZvcndhcmRfdGFnID0gMjUwOworCit2YXIgbm9fc2Nhbl90YWcgPSAy
NTE7CisKK3ZhciBhYnN0cmFjdF90YWcgPSAyNTE7CisKK3ZhciBzdHJpbmdfdGFnID0gMjUyOwor
Cit2YXIgZG91YmxlX3RhZyA9IDI1MzsKKwordmFyIGRvdWJsZV9hcnJheV90YWcgPSAyNTQ7CisK
K3ZhciBjdXN0b21fdGFnID0gMjU1OworCit2YXIgZmluYWxfdGFnID0gMjU1OworCit2YXIgaW50
X3RhZyA9IDEwMDA7CisKK3ZhciBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxOworCit2YXIgdW5hbGln
bmVkX3RhZyA9IDEwMDI7CisKK2V4cG9ydHMuZG91YmxlX2ZpZWxkICAgICAgICAgICAgICAgICAg
ICAgICA9IGRvdWJsZV9maWVsZDsKK2V4cG9ydHMuc2V0X2RvdWJsZV9maWVsZCAgICAgICAgICAg
ICAgICAgICA9IHNldF9kb3VibGVfZmllbGQ7CitleHBvcnRzLmZpcnN0X25vbl9jb25zdGFudF9j
b25zdHJ1Y3Rvcl90YWcgPSBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnOworZXhw
b3J0cy5sYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgID0gbGFzdF9ub25fY29uc3Rh
bnRfY29uc3RydWN0b3JfdGFnOworZXhwb3J0cy5sYXp5X3RhZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gbGF6eV90YWc7CitleHBvcnRzLmNsb3N1cmVfdGFnICAgICAgICAgICAgICAgICAg
ICAgICAgPSBjbG9zdXJlX3RhZzsKK2V4cG9ydHMub2JqZWN0X3RhZyAgICAgICAgICAgICAgICAg
ICAgICAgICA9IG9iamVjdF90YWc7CitleHBvcnRzLmluZml4X3RhZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBpbmZpeF90YWc7CitleHBvcnRzLmZvcndhcmRfdGFnICAgICAgICAgICAgICAg
ICAgICAgICAgPSBmb3J3YXJkX3RhZzsKK2V4cG9ydHMubm9fc2Nhbl90YWcgICAgICAgICAgICAg
ICAgICAgICAgICA9IG5vX3NjYW5fdGFnOworZXhwb3J0cy5hYnN0cmFjdF90YWcgICAgICAgICAg
ICAgICAgICAgICAgID0gYWJzdHJhY3RfdGFnOworZXhwb3J0cy5zdHJpbmdfdGFnICAgICAgICAg
ICAgICAgICAgICAgICAgID0gc3RyaW5nX3RhZzsKK2V4cG9ydHMuZG91YmxlX3RhZyAgICAgICAg
ICAgICAgICAgICAgICAgICA9IGRvdWJsZV90YWc7CitleHBvcnRzLmRvdWJsZV9hcnJheV90YWcg
ICAgICAgICAgICAgICAgICAgPSBkb3VibGVfYXJyYXlfdGFnOworZXhwb3J0cy5jdXN0b21fdGFn
ICAgICAgICAgICAgICAgICAgICAgICAgID0gY3VzdG9tX3RhZzsKK2V4cG9ydHMuZmluYWxfdGFn
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZpbmFsX3RhZzsKK2V4cG9ydHMuaW50X3RhZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGludF90YWc7CitleHBvcnRzLm91dF9vZl9oZWFw
X3RhZyAgICAgICAgICAgICAgICAgICAgPSBvdXRfb2ZfaGVhcF90YWc7CitleHBvcnRzLnVuYWxp
Z25lZF90YWcgICAgICAgICAgICAgICAgICAgICAgPSB1bmFsaWduZWRfdGFnOworZXhwb3J0cy5l
eHRlbnNpb25fbmFtZSAgICAgICAgICAgICAgICAgICAgID0gZXh0ZW5zaW9uX25hbWU7CitleHBv
cnRzLmV4dGVuc2lvbl9pZCAgICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25faWQ7Citl
eHBvcnRzLmV4dGVuc2lvbl9zbG90ICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25fc2xv
dCQxOworZXhwb3J0cy5tYXJzaGFsICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbWFyc2hh
bDsKK2V4cG9ydHMudW5tYXJzaGFsICAgICAgICAgICAgICAgICAgICAgICAgICA9IHVubWFyc2hh
bDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2Ygb2JqLmpzIC8vLy8vLy8v
CivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ29vJ10gPSBm
dW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBv
by5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbGludGVybmFsT08gPSByZXF1
aXJlKCIuL2NhbWxpbnRlcm5hbE9PIik7CisKK3ZhciBjb3B5ID0gQ2FtbGludGVybmFsT08uY29w
eTsKKwordmFyIG5ld19tZXRob2QgPSBDYW1saW50ZXJuYWxPTy5wdWJsaWNfbWV0aG9kX2xhYmVs
OworCit2YXIgcHVibGljX21ldGhvZF9sYWJlbCA9IENhbWxpbnRlcm5hbE9PLnB1YmxpY19tZXRo
b2RfbGFiZWw7CisKK2V4cG9ydHMuY29weSAgICAgICAgICAgICAgICA9IGNvcHk7CitleHBvcnRz
Lm5ld19tZXRob2QgICAgICAgICAgPSBuZXdfbWV0aG9kOworZXhwb3J0cy5wdWJsaWNfbWV0aG9k
X2xhYmVsID0gcHVibGljX21ldGhvZF9sYWJlbDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8v
Ly8vLyBlbmQgb2Ygb28uanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsK
KworCisgIF9yZWdpc3RyeVsnb3BlcmF0b3JzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBl
eHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBvcGVyYXRvcnMuanMgLy8vLy8vLy8KKy8v
IEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJ
VEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgQmxvY2sgID0gcmVxdWlyZSgiYnMtcGxhdGZv
cm0vbGliL2pzL2Jsb2NrIik7Cit2YXIgU291cmNlID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKKwor
ZnVuY3Rpb24gaTMyX2NvbnN0KG4pIHsKKyAgcmV0dXJuIC8qIENvbnN0ICovQmxvY2suX18oMTUs
IFtTb3VyY2UuJGF0JGF0KC8qIEkzMiAqL0Jsb2NrLl9fKDAsIFtuWy8qIGl0ICovMV1dKSwgblsv
KiBhdCAqLzBdKV0pOworfQorCitmdW5jdGlvbiBpNjRfY29uc3QobikgeworICByZXR1cm4gLyog
Q29uc3QgKi9CbG9jay5fXygxNSwgW1NvdXJjZS4kYXQkYXQoLyogSTY0ICovQmxvY2suX18oMSwg
W25bLyogaXQgKi8xXV0pLCBuWy8qIGF0ICovMF0pXSk7Cit9CisKK2Z1bmN0aW9uIGYzMl9jb25z
dChuKSB7CisgIHJldHVybiAvKiBDb25zdCAqL0Jsb2NrLl9fKDE1LCBbU291cmNlLiRhdCRhdCgv
KiBGMzIgKi9CbG9jay5fXygyLCBbblsvKiBpdCAqLzFdXSksIG5bLyogYXQgKi8wXSldKTsKK30K
KworZnVuY3Rpb24gZjY0X2NvbnN0KG4pIHsKKyAgcmV0dXJuIC8qIENvbnN0ICovQmxvY2suX18o
MTUsIFtTb3VyY2UuJGF0JGF0KC8qIEY2NCAqL0Jsb2NrLl9fKDMsIFtuWy8qIGl0ICovMV1dKSwg
blsvKiBhdCAqLzBdKV0pOworfQorCitmdW5jdGlvbiBibG9jayh0cywgZXMpIHsKKyAgcmV0dXJu
IC8qIEJsb2NrICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgdHMsCisgICAgICAgICAgICBl
cworICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBsb29wKHRzLCBlcykgeworICByZXR1cm4g
LyogTG9vcCAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgIHRzLAorICAgICAgICAgICAgZXMK
KyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gYnIoeCkgeworICByZXR1cm4gLyogQnIgKi9C
bG9jay5fXygzLCBbeF0pOworfQorCitmdW5jdGlvbiBicl9pZih4KSB7CisgIHJldHVybiAvKiBC
cklmICovQmxvY2suX18oNCwgW3hdKTsKK30KKworZnVuY3Rpb24gYnJfdGFibGUoeHMsIHgpIHsK
KyAgcmV0dXJuIC8qIEJyVGFibGUgKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICB4cywKKyAg
ICAgICAgICAgIHgKKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gaWZfKHRzLCBlczEsIGVz
MikgeworICByZXR1cm4gLyogSWYgKi9CbG9jay5fXygyLCBbCisgICAgICAgICAgICB0cywKKyAg
ICAgICAgICAgIGVzMSwKKyAgICAgICAgICAgIGVzMgorICAgICAgICAgIF0pOworfQorCitmdW5j
dGlvbiBjYWxsKHgpIHsKKyAgcmV0dXJuIC8qIENhbGwgKi9CbG9jay5fXyg2LCBbeF0pOworfQor
CitmdW5jdGlvbiBjYWxsX2luZGlyZWN0KHgpIHsKKyAgcmV0dXJuIC8qIENhbGxJbmRpcmVjdCAq
L0Jsb2NrLl9fKDcsIFt4XSk7Cit9CisKK2Z1bmN0aW9uIGdldF9sb2NhbCh4KSB7CisgIHJldHVy
biAvKiBHZXRMb2NhbCAqL0Jsb2NrLl9fKDgsIFt4XSk7Cit9CisKK2Z1bmN0aW9uIHNldF9sb2Nh
bCh4KSB7CisgIHJldHVybiAvKiBTZXRMb2NhbCAqL0Jsb2NrLl9fKDksIFt4XSk7Cit9CisKK2Z1
bmN0aW9uIHRlZV9sb2NhbCh4KSB7CisgIHJldHVybiAvKiBUZWVMb2NhbCAqL0Jsb2NrLl9fKDEw
LCBbeF0pOworfQorCitmdW5jdGlvbiBnZXRfZ2xvYmFsKHgpIHsKKyAgcmV0dXJuIC8qIEdldEds
b2JhbCAqL0Jsb2NrLl9fKDExLCBbeF0pOworfQorCitmdW5jdGlvbiBzZXRfZ2xvYmFsKHgpIHsK
KyAgcmV0dXJuIC8qIFNldEdsb2JhbCAqL0Jsb2NrLl9fKDEyLCBbeF0pOworfQorCitmdW5jdGlv
biBpMzJfbG9hZChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18o
MTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisg
ICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAq
L29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAgICAgXV0p
OworfQorCitmdW5jdGlvbiBpNjRfbG9hZChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBM
b2FkICovQmxvY2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDog
STY0VHlwZSAqLzEsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAg
ICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAor
ICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBmMzJfbG9hZChhbGlnbiwgb2Zmc2V0KSB7
CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAg
ICAgICAgIC8qIHR5IDogRjMyVHlwZSAqLzIsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxp
Z24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyog
c3ogOiBOb25lICovMAorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBmNjRfbG9hZChh
bGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiByZWNv
cmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogRjY0VHlwZSAqLzMsCisgICAgICAgICAgICAg
IC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAg
ICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAgICAgXV0pOworfQorCitmdW5j
dGlvbiBpMzJfbG9hZDhfcyhhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxv
Y2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAq
LzAsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9m
ZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICov
WworICAgICAgICAgICAgICAgICAgLyogTWVtOCAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBT
WCAqLzAKKyAgICAgICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlv
biBpMzJfbG9hZDhfdShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2su
X18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAs
CisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNl
dCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWwor
ICAgICAgICAgICAgICAgICAgLyogTWVtOCAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBaWCAq
LzEKKyAgICAgICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBp
MzJfbG9hZDE2X3MoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9f
KDEzLCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEkzMlR5cGUgKi8wLAor
ICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQg
Ki9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICAgICAgIC8qIE1lbTE2ICovMSwKKyAgICAgICAgICAgICAgICAgIC8qIFNYICov
MAorICAgICAgICAgICAgICAgIF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGkz
Ml9sb2FkMTZfdShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18o
MTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisg
ICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAq
L29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAg
ICAgICAgICAgICAgICAgLyogTWVtMTYgKi8xLAorICAgICAgICAgICAgICAgICAgLyogWlggKi8x
CisgICAgICAgICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0
X2xvYWQ4X3MoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEz
LCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAg
ICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9v
ZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgICAgIC8qIE1lbTggKi8wLAorICAgICAgICAgICAgICAgICAgLyogU1ggKi8wCisg
ICAgICAgICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xv
YWQ4X3UoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBb
LyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAg
ICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZz
ZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICAgICAgIC8qIE1lbTggKi8wLAorICAgICAgICAgICAgICAgICAgLyogWlggKi8xCisgICAg
ICAgICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQx
Nl9zKGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywgWy8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAg
ICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0
LAorICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAg
ICAgICAgICAvKiBNZW0xNiAqLzEsCisgICAgICAgICAgICAgICAgICAvKiBTWCAqLzAKKyAgICAg
ICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpNjRfbG9hZDE2
X3UoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAgICAg
ICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQs
CisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
ICAgICAgIC8qIE1lbTE2ICovMSwKKyAgICAgICAgICAgICAgICAgIC8qIFpYICovMQorICAgICAg
ICAgICAgICAgIF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGk2NF9sb2FkMzJf
cyhhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEsCisgICAgICAgICAg
ICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwK
KyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAgICAgLyogTWVtMzIgKi8yLAorICAgICAgICAgICAgICAgICAgLyogU1ggKi8wCisgICAgICAg
ICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQzMl91
KGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywgWy8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAgICAg
ICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAor
ICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAgICAg
ICAgICAvKiBNZW0zMiAqLzIsCisgICAgICAgICAgICAgICAgICAvKiBaWCAqLzEKKyAgICAgICAg
ICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpMzJfc3RvcmUoYWxp
Z24sIG9mZnNldCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29y
ZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwKKyAgICAgICAgICAgICAg
LyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAg
ICAgICAgICAgICAvKiBzeiA6IE5vbmUgKi8wCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0
aW9uIGk2NF9zdG9yZShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9yZSAqL0Jsb2Nr
Ll9fKDE0LCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8x
LAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZz
ZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogTm9uZSAqLzAKKyAgICAgICAgICAg
IF1dKTsKK30KKworZnVuY3Rpb24gZjMyX3N0b3JlKGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJu
IC8qIFN0b3JlICovQmxvY2suX18oMTQsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8q
IHR5IDogRjMyVHlwZSAqLzIsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAg
ICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBOb25l
ICovMAorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBmNjRfc3RvcmUoYWxpZ24sIG9m
ZnNldCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sK
KyAgICAgICAgICAgICAgLyogdHkgOiBGNjRUeXBlICovMywKKyAgICAgICAgICAgICAgLyogYWxp
Z24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAg
ICAgICAvKiBzeiA6IE5vbmUgKi8wCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGkz
Ml9zdG9yZTgoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygx
NCwgWy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwKKyAg
ICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICov
b2Zmc2V0LAorICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogTWVtOCAqLzBdCisgICAg
ICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGkzMl9zdG9yZTE2KGFsaWduLCBvZmZzZXQpIHsK
KyAgcmV0dXJuIC8qIFN0b3JlICovQmxvY2suX18oMTQsIFsvKiByZWNvcmQgKi9bCisgICAgICAg
ICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxp
Z24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyog
c3ogOiBTb21lICovWy8qIE1lbTE2ICovMV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rp
b24gaTY0X3N0b3JlOChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9yZSAqL0Jsb2Nr
Ll9fKDE0LCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8x
LAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZz
ZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiBNZW04ICovMF0K
KyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X3N0b3JlMTYoYWxpZ24sIG9mZnNl
dCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sKKyAg
ICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAgICAgICAgLyogYWxpZ24g
Ki9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgICAg
ICAvKiBzeiA6IFNvbWUgKi9bLyogTWVtMTYgKi8xXQorICAgICAgICAgICAgXV0pOworfQorCitm
dW5jdGlvbiBpNjRfc3RvcmUzMihhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9yZSAq
L0Jsb2NrLl9fKDE0LCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5
cGUgKi8xLAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAv
KiBvZmZzZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiBNZW0z
MiAqLzJdCisgICAgICAgICAgICBdXSk7Cit9CisKK3ZhciB1bnJlYWNoYWJsZSA9IC8qIFVucmVh
Y2hhYmxlICovMDsKKwordmFyIG5vcCA9IC8qIE5vcCAqLzE7CisKK3ZhciBkcm9wID0gLyogRHJv
cCAqLzM7CisKK3ZhciAkJHJldHVybiA9IC8qIFJldHVybiAqLzI7CisKK3ZhciBzZWxlY3QgPSAv
KiBTZWxlY3QgKi80OworCit2YXIgaTMyX2NseiA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsv
KiBJMzIgKi9CbG9jay5fXygwLCBbLyogQ2x6ICovMF0pXSk7CisKK3ZhciBpMzJfY3R6ID0gLyog
VW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBDdHogKi8xXSld
KTsKKwordmFyIGkzMl9wb3BjbnQgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogSTMyICov
QmxvY2suX18oMCwgWy8qIFBvcGNudCAqLzJdKV0pOworCit2YXIgaTY0X2NseiA9IC8qIFVuYXJ5
ICovQmxvY2suX18oMTgsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogQ2x6ICovMF0pXSk7CisK
K3ZhciBpNjRfY3R6ID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEk2NCAqL0Jsb2NrLl9f
KDEsIFsvKiBDdHogKi8xXSldKTsKKwordmFyIGk2NF9wb3BjbnQgPSAvKiBVbmFyeSAqL0Jsb2Nr
Ll9fKDE4LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIFBvcGNudCAqLzJdKV0pOworCit2YXIg
ZjMyX25lZyA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBb
LyogTmVnICovMF0pXSk7CisKK3ZhciBmMzJfYWJzID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwg
Wy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBBYnMgKi8xXSldKTsKKwordmFyIGYzMl9zcXJ0ID0g
LyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBTcXJ0ICov
Nl0pXSk7CisKK3ZhciBmMzJfY2VpbCA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGMzIg
Ki9CbG9jay5fXygyLCBbLyogQ2VpbCAqLzJdKV0pOworCit2YXIgZjMyX2Zsb29yID0gLyogVW5h
cnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBGbG9vciAqLzNdKV0p
OworCit2YXIgZjMyX3RydW5jID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAqL0Js
b2NrLl9fKDIsIFsvKiBUcnVuYyAqLzRdKV0pOworCit2YXIgZjMyX25lYXJlc3QgPSAvKiBVbmFy
eSAqL0Jsb2NrLl9fKDE4LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIE5lYXJlc3QgKi81XSld
KTsKKwordmFyIGY2NF9uZWcgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjY0ICovQmxv
Y2suX18oMywgWy8qIE5lZyAqLzBdKV0pOworCit2YXIgZjY0X2FicyA9IC8qIFVuYXJ5ICovQmxv
Y2suX18oMTgsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQWJzICovMV0pXSk7CisKK3ZhciBm
NjRfc3FydCA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBb
LyogU3FydCAqLzZdKV0pOworCit2YXIgZjY0X2NlaWwgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4
LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIENlaWwgKi8yXSldKTsKKwordmFyIGY2NF9mbG9v
ciA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogRmxv
b3IgKi8zXSldKTsKKwordmFyIGY2NF90cnVuYyA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsv
KiBGNjQgKi9CbG9jay5fXygzLCBbLyogVHJ1bmMgKi80XSldKTsKKwordmFyIGY2NF9uZWFyZXN0
ID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBOZWFy
ZXN0ICovNV0pXSk7CisKK3ZhciBpMzJfYWRkID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsv
KiBJMzIgKi9CbG9jay5fXygwLCBbLyogQWRkICovMF0pXSk7CisKK3ZhciBpMzJfc3ViID0gLyog
QmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogU3ViICovMV0p
XSk7CisKK3ZhciBpMzJfbXVsID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9C
bG9jay5fXygwLCBbLyogTXVsICovMl0pXSk7CisKK3ZhciBpMzJfZGl2X3MgPSAvKiBCaW5hcnkg
Ki9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBEaXZTICovM10pXSk7CisK
K3ZhciBpMzJfZGl2X3UgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2Nr
Ll9fKDAsIFsvKiBEaXZVICovNF0pXSk7CisKK3ZhciBpMzJfcmVtX3MgPSAvKiBCaW5hcnkgKi9C
bG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBSZW1TICovNV0pXSk7CisKK3Zh
ciBpMzJfcmVtX3UgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9f
KDAsIFsvKiBSZW1VICovNl0pXSk7CisKK3ZhciBpMzJfYW5kID0gLyogQmluYXJ5ICovQmxvY2su
X18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogQW5kICovN10pXSk7CisKK3ZhciBpMzJf
b3IgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBP
ciAqLzhdKV0pOworCit2YXIgaTMyX3hvciA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyog
STMyICovQmxvY2suX18oMCwgWy8qIFhvciAqLzldKV0pOworCit2YXIgaTMyX3NobCA9IC8qIEJp
bmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFNobCAqLzEwXSld
KTsKKwordmFyIGkzMl9zaHJfcyA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICov
QmxvY2suX18oMCwgWy8qIFNoclMgKi8xMV0pXSk7CisKK3ZhciBpMzJfc2hyX3UgPSAvKiBCaW5h
cnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBTaHJVICovMTJdKV0p
OworCit2YXIgaTMyX3JvdGwgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Js
b2NrLl9fKDAsIFsvKiBSb3RsICovMTNdKV0pOworCit2YXIgaTMyX3JvdHIgPSAvKiBCaW5hcnkg
Ki9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBSb3RyICovMTRdKV0pOwor
Cit2YXIgaTY0X2FkZCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2su
X18oMSwgWy8qIEFkZCAqLzBdKV0pOworCit2YXIgaTY0X3N1YiA9IC8qIEJpbmFyeSAqL0Jsb2Nr
Ll9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIFN1YiAqLzFdKV0pOworCit2YXIgaTY0
X211bCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8q
IE11bCAqLzJdKV0pOworCit2YXIgaTY0X2Rpdl9zID0gLyogQmluYXJ5ICovQmxvY2suX18oMTks
IFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogRGl2UyAqLzNdKV0pOworCit2YXIgaTY0X2Rpdl91
ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogRGl2
VSAqLzRdKV0pOworCit2YXIgaTY0X3JlbV9zID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsv
KiBJNjQgKi9CbG9jay5fXygxLCBbLyogUmVtUyAqLzVdKV0pOworCit2YXIgaTY0X3JlbV91ID0g
LyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogUmVtVSAq
LzZdKV0pOworCit2YXIgaTY0X2FuZCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0
ICovQmxvY2suX18oMSwgWy8qIEFuZCAqLzddKV0pOworCit2YXIgaTY0X29yID0gLyogQmluYXJ5
ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogT3IgKi84XSldKTsKKwor
dmFyIGk2NF94b3IgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9f
KDEsIFsvKiBYb3IgKi85XSldKTsKKwordmFyIGk2NF9zaGwgPSAvKiBCaW5hcnkgKi9CbG9jay5f
XygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBTaGwgKi8xMF0pXSk7CisKK3ZhciBpNjRf
c2hyX3MgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsv
KiBTaHJTICovMTFdKV0pOworCit2YXIgaTY0X3Nocl91ID0gLyogQmluYXJ5ICovQmxvY2suX18o
MTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogU2hyVSAqLzEyXSldKTsKKwordmFyIGk2NF9y
b3RsID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyog
Um90bCAqLzEzXSldKTsKKwordmFyIGk2NF9yb3RyID0gLyogQmluYXJ5ICovQmxvY2suX18oMTks
IFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogUm90ciAqLzE0XSldKTsKKwordmFyIGYzMl9hZGQg
PSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBBZGQg
Ki8wXSldKTsKKwordmFyIGYzMl9zdWIgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYz
MiAqL0Jsb2NrLl9fKDIsIFsvKiBTdWIgKi8xXSldKTsKKwordmFyIGYzMl9tdWwgPSAvKiBCaW5h
cnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBNdWwgKi8yXSldKTsK
KwordmFyIGYzMl9kaXYgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2Nr
Ll9fKDIsIFsvKiBEaXYgKi8zXSldKTsKKwordmFyIGYzMl9taW4gPSAvKiBCaW5hcnkgKi9CbG9j
ay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBNaW4gKi80XSldKTsKKwordmFyIGYz
Ml9tYXggPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsv
KiBNYXggKi81XSldKTsKKwordmFyIGYzMl9jb3B5c2lnbiA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9f
KDE5LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIENvcHlTaWduICovNl0pXSk7CisKK3ZhciBm
NjRfYWRkID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBb
LyogQWRkICovMF0pXSk7CisKK3ZhciBmNjRfc3ViID0gLyogQmluYXJ5ICovQmxvY2suX18oMTks
IFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogU3ViICovMV0pXSk7CisKK3ZhciBmNjRfbXVsID0g
LyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTXVsICov
Ml0pXSk7CisKK3ZhciBmNjRfZGl2ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQg
Ki9CbG9jay5fXygzLCBbLyogRGl2ICovM10pXSk7CisKK3ZhciBmNjRfbWluID0gLyogQmluYXJ5
ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTWluICovNF0pXSk7CisK
K3ZhciBmNjRfbWF4ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5f
XygzLCBbLyogTWF4ICovNV0pXSk7CisKK3ZhciBmNjRfY29weXNpZ24gPSAvKiBCaW5hcnkgKi9C
bG9jay5fXygxOSwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBDb3B5U2lnbiAqLzZdKV0pOwor
Cit2YXIgaTMyX2VxeiA9IC8qIFRlc3QgKi9CbG9jay5fXygxNiwgWy8qIEkzMiAqL0Jsb2NrLl9f
KDAsIFsvKiBFcXogKi8wXSldKTsKKwordmFyIGk2NF9lcXogPSAvKiBUZXN0ICovQmxvY2suX18o
MTYsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogRXF6ICovMF0pXSk7CisKK3ZhciBpMzJfZXEg
PSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogRXEg
Ki8wXSldKTsKKwordmFyIGkzMl9uZSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkz
MiAqL0Jsb2NrLl9fKDAsIFsvKiBOZSAqLzFdKV0pOworCit2YXIgaTMyX2x0X3MgPSAvKiBDb21w
YXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogTHRTICovMl0pXSk7
CisKK3ZhciBpMzJfbHRfdSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Js
b2NrLl9fKDAsIFsvKiBMdFUgKi8zXSldKTsKKwordmFyIGkzMl9sZV9zID0gLyogQ29tcGFyZSAq
L0Jsb2NrLl9fKDE3LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIExlUyAqLzZdKV0pOworCit2
YXIgaTMyX2xlX3UgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5f
XygwLCBbLyogTGVVICovN10pXSk7CisKK3ZhciBpMzJfZ3RfcyA9IC8qIENvbXBhcmUgKi9CbG9j
ay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBHdFMgKi80XSldKTsKKwordmFyIGkz
Ml9ndF91ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTMyICovQmxvY2suX18oMCwg
Wy8qIEd0VSAqLzVdKV0pOworCit2YXIgaTMyX2dlX3MgPSAvKiBDb21wYXJlICovQmxvY2suX18o
MTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogR2VTICovOF0pXSk7CisKK3ZhciBpMzJfZ2Vf
dSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBH
ZVUgKi85XSldKTsKKwordmFyIGk2NF9lcSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8q
IEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBFcSAqLzBdKV0pOworCit2YXIgaTY0X25lID0gLyogQ29t
cGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIE5lICovMV0pXSk7
CisKK3ZhciBpNjRfbHRfcyA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Js
b2NrLl9fKDEsIFsvKiBMdFMgKi8yXSldKTsKKwordmFyIGk2NF9sdF91ID0gLyogQ29tcGFyZSAq
L0Jsb2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIEx0VSAqLzNdKV0pOworCit2
YXIgaTY0X2xlX3MgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJNjQgKi9CbG9jay5f
XygxLCBbLyogTGVTICovNl0pXSk7CisKK3ZhciBpNjRfbGVfdSA9IC8qIENvbXBhcmUgKi9CbG9j
ay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBMZVUgKi83XSldKTsKKwordmFyIGk2
NF9ndF9zID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwg
Wy8qIEd0UyAqLzRdKV0pOworCit2YXIgaTY0X2d0X3UgPSAvKiBDb21wYXJlICovQmxvY2suX18o
MTcsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogR3RVICovNV0pXSk7CisKK3ZhciBpNjRfZ2Vf
cyA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBH
ZVMgKi84XSldKTsKKwordmFyIGk2NF9nZV91ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBb
LyogSTY0ICovQmxvY2suX18oMSwgWy8qIEdlVSAqLzldKV0pOworCit2YXIgZjMyX2VxID0gLyog
Q29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIEVxICovMF0p
XSk7CisKK3ZhciBmMzJfbmUgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGMzIgKi9C
bG9jay5fXygyLCBbLyogTmUgKi8xXSldKTsKKwordmFyIGYzMl9sdCA9IC8qIENvbXBhcmUgKi9C
bG9jay5fXygxNywgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBMdCAqLzJdKV0pOworCit2YXIg
ZjMyX2xlID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjMyICovQmxvY2suX18oMiwg
Wy8qIExlICovNF0pXSk7CisKK3ZhciBmMzJfZ3QgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcs
IFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogR3QgKi8zXSldKTsKKwordmFyIGYzMl9nZSA9IC8q
IENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBHZSAqLzVd
KV0pOworCit2YXIgZjY0X2VxID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjY0ICov
QmxvY2suX18oMywgWy8qIEVxICovMF0pXSk7CisKK3ZhciBmNjRfbmUgPSAvKiBDb21wYXJlICov
QmxvY2suX18oMTcsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTmUgKi8xXSldKTsKKwordmFy
IGY2NF9sdCA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEY2NCAqL0Jsb2NrLl9fKDMs
IFsvKiBMdCAqLzJdKV0pOworCit2YXIgZjY0X2xlID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3
LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIExlICovNF0pXSk7CisKK3ZhciBmNjRfZ3QgPSAv
KiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogR3QgKi8z
XSldKTsKKwordmFyIGY2NF9nZSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEY2NCAq
L0Jsb2NrLl9fKDMsIFsvKiBHZSAqLzVdKV0pOworCit2YXIgaTMyX3dyYXBfaTY0ID0gLyogQ29u
dmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFdyYXBJNjQgKi8y
XSldKTsKKwordmFyIGkzMl90cnVuY19zX2YzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwg
Wy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1NGMzIgKi8zXSldKTsKKwordmFyIGkzMl90
cnVuY191X2YzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkzMiAqL0Jsb2NrLl9f
KDAsIFsvKiBUcnVuY1VGMzIgKi80XSldKTsKKwordmFyIGkzMl90cnVuY19zX2Y2NCA9IC8qIENv
bnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1NGNjQg
Ki81XSldKTsKKwordmFyIGkzMl90cnVuY191X2Y2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygy
MCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1VGNjQgKi82XSldKTsKKwordmFyIGk2
NF9leHRlbmRfc19pMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9j
ay5fXygxLCBbLyogRXh0ZW5kU0kzMiAqLzBdKV0pOworCit2YXIgaTY0X2V4dGVuZF91X2kzMiA9
IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBFeHRl
bmRVSTMyICovMV0pXSk7CisKK3ZhciBpNjRfdHJ1bmNfc19mMzIgPSAvKiBDb252ZXJ0ICovQmxv
Y2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogVHJ1bmNTRjMyICovM10pXSk7CisK
K3ZhciBpNjRfdHJ1bmNfdV9mMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQg
Ki9CbG9jay5fXygxLCBbLyogVHJ1bmNVRjMyICovNF0pXSk7CisKK3ZhciBpNjRfdHJ1bmNfc19m
NjQgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyog
VHJ1bmNTRjY0ICovNV0pXSk7CisKK3ZhciBpNjRfdHJ1bmNfdV9mNjQgPSAvKiBDb252ZXJ0ICov
QmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogVHJ1bmNVRjY0ICovNl0pXSk7
CisKK3ZhciBmMzJfY29udmVydF9zX2kzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8q
IEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBDb252ZXJ0U0kzMiAqLzBdKV0pOworCit2YXIgZjMyX2Nv
bnZlcnRfdV9pMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBGMzIgKi9CbG9jay5f
XygyLCBbLyogQ29udmVydFVJMzIgKi8xXSldKTsKKwordmFyIGYzMl9jb252ZXJ0X3NfaTY0ID0g
LyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIENvbnZl
cnRTSTY0ICovMl0pXSk7CisKK3ZhciBmMzJfY29udmVydF91X2k2NCA9IC8qIENvbnZlcnQgKi9C
bG9jay5fXygyMCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBDb252ZXJ0VUk2NCAqLzNdKV0p
OworCit2YXIgZjMyX2RlbW90ZV9mNjQgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBG
MzIgKi9CbG9jay5fXygyLCBbLyogRGVtb3RlRjY0ICovNV0pXSk7CisKK3ZhciBmNjRfY29udmVy
dF9zX2kzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMs
IFsvKiBDb252ZXJ0U0kzMiAqLzBdKV0pOworCit2YXIgZjY0X2NvbnZlcnRfdV9pMzIgPSAvKiBD
b252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQ29udmVydFVJ
MzIgKi8xXSldKTsKKwordmFyIGY2NF9jb252ZXJ0X3NfaTY0ID0gLyogQ29udmVydCAqL0Jsb2Nr
Ll9fKDIwLCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIENvbnZlcnRTSTY0ICovMl0pXSk7CisK
K3ZhciBmNjRfY29udmVydF91X2k2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEY2
NCAqL0Jsb2NrLl9fKDMsIFsvKiBDb252ZXJ0VUk2NCAqLzNdKV0pOworCit2YXIgZjY0X3Byb21v
dGVfZjMyID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjY0ICovQmxvY2suX18oMywg
Wy8qIFByb21vdGVGMzIgKi80XSldKTsKKwordmFyIGkzMl9yZWludGVycHJldF9mMzIgPSAvKiBD
b252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogUmVpbnRlcnBy
ZXRGbG9hdCAqLzddKV0pOworCit2YXIgaTY0X3JlaW50ZXJwcmV0X2Y2NCA9IC8qIENvbnZlcnQg
Ki9CbG9jay5fXygyMCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBSZWludGVycHJldEZsb2F0
ICovN10pXSk7CisKK3ZhciBmMzJfcmVpbnRlcnByZXRfaTMyID0gLyogQ29udmVydCAqL0Jsb2Nr
Ll9fKDIwLCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIFJlaW50ZXJwcmV0SW50ICovNl0pXSk7
CisKK3ZhciBmNjRfcmVpbnRlcnByZXRfaTY0ID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBb
LyogRjY0ICovQmxvY2suX18oMywgWy8qIFJlaW50ZXJwcmV0SW50ICovNl0pXSk7CisKK3ZhciBj
dXJyZW50X21lbW9yeSA9IC8qIEN1cnJlbnRNZW1vcnkgKi81OworCit2YXIgZ3Jvd19tZW1vcnkg
PSAvKiBHcm93TWVtb3J5ICovNjsKKworZXhwb3J0cy5pMzJfY29uc3QgICAgICAgICAgID0gaTMy
X2NvbnN0OworZXhwb3J0cy5pNjRfY29uc3QgICAgICAgICAgID0gaTY0X2NvbnN0OworZXhwb3J0
cy5mMzJfY29uc3QgICAgICAgICAgID0gZjMyX2NvbnN0OworZXhwb3J0cy5mNjRfY29uc3QgICAg
ICAgICAgID0gZjY0X2NvbnN0OworZXhwb3J0cy51bnJlYWNoYWJsZSAgICAgICAgID0gdW5yZWFj
aGFibGU7CitleHBvcnRzLm5vcCAgICAgICAgICAgICAgICAgPSBub3A7CitleHBvcnRzLmRyb3Ag
ICAgICAgICAgICAgICAgPSBkcm9wOworZXhwb3J0cy5ibG9jayAgICAgICAgICAgICAgID0gYmxv
Y2s7CitleHBvcnRzLmxvb3AgICAgICAgICAgICAgICAgPSBsb29wOworZXhwb3J0cy5iciAgICAg
ICAgICAgICAgICAgID0gYnI7CitleHBvcnRzLmJyX2lmICAgICAgICAgICAgICAgPSBicl9pZjsK
K2V4cG9ydHMuYnJfdGFibGUgICAgICAgICAgICA9IGJyX3RhYmxlOworZXhwb3J0cy4kJHJldHVy
biAgICAgICAgICAgID0gJCRyZXR1cm47CitleHBvcnRzLmlmXyAgICAgICAgICAgICAgICAgPSBp
Zl87CitleHBvcnRzLnNlbGVjdCAgICAgICAgICAgICAgPSBzZWxlY3Q7CitleHBvcnRzLmNhbGwg
ICAgICAgICAgICAgICAgPSBjYWxsOworZXhwb3J0cy5jYWxsX2luZGlyZWN0ICAgICAgID0gY2Fs
bF9pbmRpcmVjdDsKK2V4cG9ydHMuZ2V0X2xvY2FsICAgICAgICAgICA9IGdldF9sb2NhbDsKK2V4
cG9ydHMuc2V0X2xvY2FsICAgICAgICAgICA9IHNldF9sb2NhbDsKK2V4cG9ydHMudGVlX2xvY2Fs
ICAgICAgICAgICA9IHRlZV9sb2NhbDsKK2V4cG9ydHMuZ2V0X2dsb2JhbCAgICAgICAgICA9IGdl
dF9nbG9iYWw7CitleHBvcnRzLnNldF9nbG9iYWwgICAgICAgICAgPSBzZXRfZ2xvYmFsOworZXhw
b3J0cy5pMzJfbG9hZCAgICAgICAgICAgID0gaTMyX2xvYWQ7CitleHBvcnRzLmk2NF9sb2FkICAg
ICAgICAgICAgPSBpNjRfbG9hZDsKK2V4cG9ydHMuZjMyX2xvYWQgICAgICAgICAgICA9IGYzMl9s
b2FkOworZXhwb3J0cy5mNjRfbG9hZCAgICAgICAgICAgID0gZjY0X2xvYWQ7CitleHBvcnRzLmkz
Ml9sb2FkOF9zICAgICAgICAgPSBpMzJfbG9hZDhfczsKK2V4cG9ydHMuaTMyX2xvYWQ4X3UgICAg
ICAgICA9IGkzMl9sb2FkOF91OworZXhwb3J0cy5pMzJfbG9hZDE2X3MgICAgICAgID0gaTMyX2xv
YWQxNl9zOworZXhwb3J0cy5pMzJfbG9hZDE2X3UgICAgICAgID0gaTMyX2xvYWQxNl91OworZXhw
b3J0cy5pNjRfbG9hZDhfcyAgICAgICAgID0gaTY0X2xvYWQ4X3M7CitleHBvcnRzLmk2NF9sb2Fk
OF91ICAgICAgICAgPSBpNjRfbG9hZDhfdTsKK2V4cG9ydHMuaTY0X2xvYWQxNl9zICAgICAgICA9
IGk2NF9sb2FkMTZfczsKK2V4cG9ydHMuaTY0X2xvYWQxNl91ICAgICAgICA9IGk2NF9sb2FkMTZf
dTsKK2V4cG9ydHMuaTY0X2xvYWQzMl9zICAgICAgICA9IGk2NF9sb2FkMzJfczsKK2V4cG9ydHMu
aTY0X2xvYWQzMl91ICAgICAgICA9IGk2NF9sb2FkMzJfdTsKK2V4cG9ydHMuaTMyX3N0b3JlICAg
ICAgICAgICA9IGkzMl9zdG9yZTsKK2V4cG9ydHMuaTY0X3N0b3JlICAgICAgICAgICA9IGk2NF9z
dG9yZTsKK2V4cG9ydHMuZjMyX3N0b3JlICAgICAgICAgICA9IGYzMl9zdG9yZTsKK2V4cG9ydHMu
ZjY0X3N0b3JlICAgICAgICAgICA9IGY2NF9zdG9yZTsKK2V4cG9ydHMuaTMyX3N0b3JlOCAgICAg
ICAgICA9IGkzMl9zdG9yZTg7CitleHBvcnRzLmkzMl9zdG9yZTE2ICAgICAgICAgPSBpMzJfc3Rv
cmUxNjsKK2V4cG9ydHMuaTY0X3N0b3JlOCAgICAgICAgICA9IGk2NF9zdG9yZTg7CitleHBvcnRz
Lmk2NF9zdG9yZTE2ICAgICAgICAgPSBpNjRfc3RvcmUxNjsKK2V4cG9ydHMuaTY0X3N0b3JlMzIg
ICAgICAgICA9IGk2NF9zdG9yZTMyOworZXhwb3J0cy5pMzJfY2x6ICAgICAgICAgICAgID0gaTMy
X2NsejsKK2V4cG9ydHMuaTMyX2N0eiAgICAgICAgICAgICA9IGkzMl9jdHo7CitleHBvcnRzLmkz
Ml9wb3BjbnQgICAgICAgICAgPSBpMzJfcG9wY250OworZXhwb3J0cy5pNjRfY2x6ICAgICAgICAg
ICAgID0gaTY0X2NsejsKK2V4cG9ydHMuaTY0X2N0eiAgICAgICAgICAgICA9IGk2NF9jdHo7Citl
eHBvcnRzLmk2NF9wb3BjbnQgICAgICAgICAgPSBpNjRfcG9wY250OworZXhwb3J0cy5mMzJfbmVn
ICAgICAgICAgICAgID0gZjMyX25lZzsKK2V4cG9ydHMuZjMyX2FicyAgICAgICAgICAgICA9IGYz
Ml9hYnM7CitleHBvcnRzLmYzMl9zcXJ0ICAgICAgICAgICAgPSBmMzJfc3FydDsKK2V4cG9ydHMu
ZjMyX2NlaWwgICAgICAgICAgICA9IGYzMl9jZWlsOworZXhwb3J0cy5mMzJfZmxvb3IgICAgICAg
ICAgID0gZjMyX2Zsb29yOworZXhwb3J0cy5mMzJfdHJ1bmMgICAgICAgICAgID0gZjMyX3RydW5j
OworZXhwb3J0cy5mMzJfbmVhcmVzdCAgICAgICAgID0gZjMyX25lYXJlc3Q7CitleHBvcnRzLmY2
NF9uZWcgICAgICAgICAgICAgPSBmNjRfbmVnOworZXhwb3J0cy5mNjRfYWJzICAgICAgICAgICAg
ID0gZjY0X2FiczsKK2V4cG9ydHMuZjY0X3NxcnQgICAgICAgICAgICA9IGY2NF9zcXJ0OworZXhw
b3J0cy5mNjRfY2VpbCAgICAgICAgICAgID0gZjY0X2NlaWw7CitleHBvcnRzLmY2NF9mbG9vciAg
ICAgICAgICAgPSBmNjRfZmxvb3I7CitleHBvcnRzLmY2NF90cnVuYyAgICAgICAgICAgPSBmNjRf
dHJ1bmM7CitleHBvcnRzLmY2NF9uZWFyZXN0ICAgICAgICAgPSBmNjRfbmVhcmVzdDsKK2V4cG9y
dHMuaTMyX2FkZCAgICAgICAgICAgICA9IGkzMl9hZGQ7CitleHBvcnRzLmkzMl9zdWIgICAgICAg
ICAgICAgPSBpMzJfc3ViOworZXhwb3J0cy5pMzJfbXVsICAgICAgICAgICAgID0gaTMyX211bDsK
K2V4cG9ydHMuaTMyX2Rpdl9zICAgICAgICAgICA9IGkzMl9kaXZfczsKK2V4cG9ydHMuaTMyX2Rp
dl91ICAgICAgICAgICA9IGkzMl9kaXZfdTsKK2V4cG9ydHMuaTMyX3JlbV9zICAgICAgICAgICA9
IGkzMl9yZW1fczsKK2V4cG9ydHMuaTMyX3JlbV91ICAgICAgICAgICA9IGkzMl9yZW1fdTsKK2V4
cG9ydHMuaTMyX2FuZCAgICAgICAgICAgICA9IGkzMl9hbmQ7CitleHBvcnRzLmkzMl9vciAgICAg
ICAgICAgICAgPSBpMzJfb3I7CitleHBvcnRzLmkzMl94b3IgICAgICAgICAgICAgPSBpMzJfeG9y
OworZXhwb3J0cy5pMzJfc2hsICAgICAgICAgICAgID0gaTMyX3NobDsKK2V4cG9ydHMuaTMyX3No
cl9zICAgICAgICAgICA9IGkzMl9zaHJfczsKK2V4cG9ydHMuaTMyX3Nocl91ICAgICAgICAgICA9
IGkzMl9zaHJfdTsKK2V4cG9ydHMuaTMyX3JvdGwgICAgICAgICAgICA9IGkzMl9yb3RsOworZXhw
b3J0cy5pMzJfcm90ciAgICAgICAgICAgID0gaTMyX3JvdHI7CitleHBvcnRzLmk2NF9hZGQgICAg
ICAgICAgICAgPSBpNjRfYWRkOworZXhwb3J0cy5pNjRfc3ViICAgICAgICAgICAgID0gaTY0X3N1
YjsKK2V4cG9ydHMuaTY0X211bCAgICAgICAgICAgICA9IGk2NF9tdWw7CitleHBvcnRzLmk2NF9k
aXZfcyAgICAgICAgICAgPSBpNjRfZGl2X3M7CitleHBvcnRzLmk2NF9kaXZfdSAgICAgICAgICAg
PSBpNjRfZGl2X3U7CitleHBvcnRzLmk2NF9yZW1fcyAgICAgICAgICAgPSBpNjRfcmVtX3M7Citl
eHBvcnRzLmk2NF9yZW1fdSAgICAgICAgICAgPSBpNjRfcmVtX3U7CitleHBvcnRzLmk2NF9hbmQg
ICAgICAgICAgICAgPSBpNjRfYW5kOworZXhwb3J0cy5pNjRfb3IgICAgICAgICAgICAgID0gaTY0
X29yOworZXhwb3J0cy5pNjRfeG9yICAgICAgICAgICAgID0gaTY0X3hvcjsKK2V4cG9ydHMuaTY0
X3NobCAgICAgICAgICAgICA9IGk2NF9zaGw7CitleHBvcnRzLmk2NF9zaHJfcyAgICAgICAgICAg
PSBpNjRfc2hyX3M7CitleHBvcnRzLmk2NF9zaHJfdSAgICAgICAgICAgPSBpNjRfc2hyX3U7Citl
eHBvcnRzLmk2NF9yb3RsICAgICAgICAgICAgPSBpNjRfcm90bDsKK2V4cG9ydHMuaTY0X3JvdHIg
ICAgICAgICAgICA9IGk2NF9yb3RyOworZXhwb3J0cy5mMzJfYWRkICAgICAgICAgICAgID0gZjMy
X2FkZDsKK2V4cG9ydHMuZjMyX3N1YiAgICAgICAgICAgICA9IGYzMl9zdWI7CitleHBvcnRzLmYz
Ml9tdWwgICAgICAgICAgICAgPSBmMzJfbXVsOworZXhwb3J0cy5mMzJfZGl2ICAgICAgICAgICAg
ID0gZjMyX2RpdjsKK2V4cG9ydHMuZjMyX21pbiAgICAgICAgICAgICA9IGYzMl9taW47CitleHBv
cnRzLmYzMl9tYXggICAgICAgICAgICAgPSBmMzJfbWF4OworZXhwb3J0cy5mMzJfY29weXNpZ24g
ICAgICAgID0gZjMyX2NvcHlzaWduOworZXhwb3J0cy5mNjRfYWRkICAgICAgICAgICAgID0gZjY0
X2FkZDsKK2V4cG9ydHMuZjY0X3N1YiAgICAgICAgICAgICA9IGY2NF9zdWI7CitleHBvcnRzLmY2
NF9tdWwgICAgICAgICAgICAgPSBmNjRfbXVsOworZXhwb3J0cy5mNjRfZGl2ICAgICAgICAgICAg
ID0gZjY0X2RpdjsKK2V4cG9ydHMuZjY0X21pbiAgICAgICAgICAgICA9IGY2NF9taW47CitleHBv
cnRzLmY2NF9tYXggICAgICAgICAgICAgPSBmNjRfbWF4OworZXhwb3J0cy5mNjRfY29weXNpZ24g
ICAgICAgID0gZjY0X2NvcHlzaWduOworZXhwb3J0cy5pMzJfZXF6ICAgICAgICAgICAgID0gaTMy
X2VxejsKK2V4cG9ydHMuaTY0X2VxeiAgICAgICAgICAgICA9IGk2NF9lcXo7CitleHBvcnRzLmkz
Ml9lcSAgICAgICAgICAgICAgPSBpMzJfZXE7CitleHBvcnRzLmkzMl9uZSAgICAgICAgICAgICAg
PSBpMzJfbmU7CitleHBvcnRzLmkzMl9sdF9zICAgICAgICAgICAgPSBpMzJfbHRfczsKK2V4cG9y
dHMuaTMyX2x0X3UgICAgICAgICAgICA9IGkzMl9sdF91OworZXhwb3J0cy5pMzJfbGVfcyAgICAg
ICAgICAgID0gaTMyX2xlX3M7CitleHBvcnRzLmkzMl9sZV91ICAgICAgICAgICAgPSBpMzJfbGVf
dTsKK2V4cG9ydHMuaTMyX2d0X3MgICAgICAgICAgICA9IGkzMl9ndF9zOworZXhwb3J0cy5pMzJf
Z3RfdSAgICAgICAgICAgID0gaTMyX2d0X3U7CitleHBvcnRzLmkzMl9nZV9zICAgICAgICAgICAg
PSBpMzJfZ2VfczsKK2V4cG9ydHMuaTMyX2dlX3UgICAgICAgICAgICA9IGkzMl9nZV91OworZXhw
b3J0cy5pNjRfZXEgICAgICAgICAgICAgID0gaTY0X2VxOworZXhwb3J0cy5pNjRfbmUgICAgICAg
ICAgICAgID0gaTY0X25lOworZXhwb3J0cy5pNjRfbHRfcyAgICAgICAgICAgID0gaTY0X2x0X3M7
CitleHBvcnRzLmk2NF9sdF91ICAgICAgICAgICAgPSBpNjRfbHRfdTsKK2V4cG9ydHMuaTY0X2xl
X3MgICAgICAgICAgICA9IGk2NF9sZV9zOworZXhwb3J0cy5pNjRfbGVfdSAgICAgICAgICAgID0g
aTY0X2xlX3U7CitleHBvcnRzLmk2NF9ndF9zICAgICAgICAgICAgPSBpNjRfZ3RfczsKK2V4cG9y
dHMuaTY0X2d0X3UgICAgICAgICAgICA9IGk2NF9ndF91OworZXhwb3J0cy5pNjRfZ2VfcyAgICAg
ICAgICAgID0gaTY0X2dlX3M7CitleHBvcnRzLmk2NF9nZV91ICAgICAgICAgICAgPSBpNjRfZ2Vf
dTsKK2V4cG9ydHMuZjMyX2VxICAgICAgICAgICAgICA9IGYzMl9lcTsKK2V4cG9ydHMuZjMyX25l
ICAgICAgICAgICAgICA9IGYzMl9uZTsKK2V4cG9ydHMuZjMyX2x0ICAgICAgICAgICAgICA9IGYz
Ml9sdDsKK2V4cG9ydHMuZjMyX2xlICAgICAgICAgICAgICA9IGYzMl9sZTsKK2V4cG9ydHMuZjMy
X2d0ICAgICAgICAgICAgICA9IGYzMl9ndDsKK2V4cG9ydHMuZjMyX2dlICAgICAgICAgICAgICA9
IGYzMl9nZTsKK2V4cG9ydHMuZjY0X2VxICAgICAgICAgICAgICA9IGY2NF9lcTsKK2V4cG9ydHMu
ZjY0X25lICAgICAgICAgICAgICA9IGY2NF9uZTsKK2V4cG9ydHMuZjY0X2x0ICAgICAgICAgICAg
ICA9IGY2NF9sdDsKK2V4cG9ydHMuZjY0X2xlICAgICAgICAgICAgICA9IGY2NF9sZTsKK2V4cG9y
dHMuZjY0X2d0ICAgICAgICAgICAgICA9IGY2NF9ndDsKK2V4cG9ydHMuZjY0X2dlICAgICAgICAg
ICAgICA9IGY2NF9nZTsKK2V4cG9ydHMuaTMyX3dyYXBfaTY0ICAgICAgICA9IGkzMl93cmFwX2k2
NDsKK2V4cG9ydHMuaTMyX3RydW5jX3NfZjMyICAgICA9IGkzMl90cnVuY19zX2YzMjsKK2V4cG9y
dHMuaTMyX3RydW5jX3VfZjMyICAgICA9IGkzMl90cnVuY191X2YzMjsKK2V4cG9ydHMuaTMyX3Ry
dW5jX3NfZjY0ICAgICA9IGkzMl90cnVuY19zX2Y2NDsKK2V4cG9ydHMuaTMyX3RydW5jX3VfZjY0
ICAgICA9IGkzMl90cnVuY191X2Y2NDsKK2V4cG9ydHMuaTY0X2V4dGVuZF9zX2kzMiAgICA9IGk2
NF9leHRlbmRfc19pMzI7CitleHBvcnRzLmk2NF9leHRlbmRfdV9pMzIgICAgPSBpNjRfZXh0ZW5k
X3VfaTMyOworZXhwb3J0cy5pNjRfdHJ1bmNfc19mMzIgICAgID0gaTY0X3RydW5jX3NfZjMyOwor
ZXhwb3J0cy5pNjRfdHJ1bmNfdV9mMzIgICAgID0gaTY0X3RydW5jX3VfZjMyOworZXhwb3J0cy5p
NjRfdHJ1bmNfc19mNjQgICAgID0gaTY0X3RydW5jX3NfZjY0OworZXhwb3J0cy5pNjRfdHJ1bmNf
dV9mNjQgICAgID0gaTY0X3RydW5jX3VfZjY0OworZXhwb3J0cy5mMzJfY29udmVydF9zX2kzMiAg
ID0gZjMyX2NvbnZlcnRfc19pMzI7CitleHBvcnRzLmYzMl9jb252ZXJ0X3VfaTMyICAgPSBmMzJf
Y29udmVydF91X2kzMjsKK2V4cG9ydHMuZjMyX2NvbnZlcnRfc19pNjQgICA9IGYzMl9jb252ZXJ0
X3NfaTY0OworZXhwb3J0cy5mMzJfY29udmVydF91X2k2NCAgID0gZjMyX2NvbnZlcnRfdV9pNjQ7
CitleHBvcnRzLmYzMl9kZW1vdGVfZjY0ICAgICAgPSBmMzJfZGVtb3RlX2Y2NDsKK2V4cG9ydHMu
ZjY0X2NvbnZlcnRfc19pMzIgICA9IGY2NF9jb252ZXJ0X3NfaTMyOworZXhwb3J0cy5mNjRfY29u
dmVydF91X2kzMiAgID0gZjY0X2NvbnZlcnRfdV9pMzI7CitleHBvcnRzLmY2NF9jb252ZXJ0X3Nf
aTY0ICAgPSBmNjRfY29udmVydF9zX2k2NDsKK2V4cG9ydHMuZjY0X2NvbnZlcnRfdV9pNjQgICA9
IGY2NF9jb252ZXJ0X3VfaTY0OworZXhwb3J0cy5mNjRfcHJvbW90ZV9mMzIgICAgID0gZjY0X3By
b21vdGVfZjMyOworZXhwb3J0cy5pMzJfcmVpbnRlcnByZXRfZjMyID0gaTMyX3JlaW50ZXJwcmV0
X2YzMjsKK2V4cG9ydHMuaTY0X3JlaW50ZXJwcmV0X2Y2NCA9IGk2NF9yZWludGVycHJldF9mNjQ7
CitleHBvcnRzLmYzMl9yZWludGVycHJldF9pMzIgPSBmMzJfcmVpbnRlcnByZXRfaTMyOworZXhw
b3J0cy5mNjRfcmVpbnRlcnByZXRfaTY0ID0gZjY0X3JlaW50ZXJwcmV0X2k2NDsKK2V4cG9ydHMu
Y3VycmVudF9tZW1vcnkgICAgICA9IGN1cnJlbnRfbWVtb3J5OworZXhwb3J0cy5ncm93X21lbW9y
eSAgICAgICAgID0gZ3Jvd19tZW1vcnk7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8g
ZW5kIG9mIG9wZXJhdG9ycy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9
OworCisKKyAgX3JlZ2lzdHJ5WydwYXJzZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhw
b3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgcGFyc2UuanMgLy8vLy8vLy8KKy8vIEdlbmVy
YXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FS
RQorJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvY3VycnkiKTsKK3ZhciBMZXhlciAgICA9IHJlcXVpcmUoIi4vbGV4ZXIiKTsKK3ZhciBM
ZXhpbmcgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9sZXhpbmciKTsKK3ZhciBQYXJz
ZXIgICA9IHJlcXVpcmUoIi4vcGFyc2VyIik7Cit2YXIgU2NyaXB0ICAgPSByZXF1aXJlKCIuL3Nj
cmlwdCIpOwordmFyIFNvdXJjZSAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciBDYW1sX29i
aiA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOworCitmdW5jdGlvbiBw
YXJzZSRwcmltZShuYW1lLCBsZXhidWYsIHN0YXJ0KSB7CisgIHZhciBpbml0ID0gbGV4YnVmWy8q
IGxleF9jdXJyX3AgKi8xMV07CisgIGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdID0gLyogcmVj
b3JkICovWworICAgIC8qIHBvc19mbmFtZSAqL25hbWUsCisgICAgLyogcG9zX2xudW0gKi9pbml0
Wy8qIHBvc19sbnVtICovMV0sCisgICAgLyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJd
LAorICAgIC8qIHBvc19jbnVtICovaW5pdFsvKiBwb3NfY251bSAqLzNdCisgIF07CisgIHRyeSB7
CisgICAgcmV0dXJuIEN1cnJ5Ll8yKHN0YXJ0LCBMZXhlci50b2tlbiwgbGV4YnVmKTsKKyAgfQor
ICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuWzBdID09PSBTY3JpcHQuU3ludGF4KSB7CisgICAg
ICB2YXIgcmVnaW9uID0gZXhuWzFdOworICAgICAgdmFyIHJlZ2lvbiRwcmltZSA9IENhbWxfb2Jq
LmNhbWxfbm90ZXF1YWwocmVnaW9uLCBTb3VyY2Uubm9fcmVnaW9uKSA/IHJlZ2lvbiA6IC8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAvKiBsZWZ0ICovTGV4ZXIuY29udmVydF9wb3MobGV4YnVmWy8q
IGxleF9zdGFydF9wICovMTBdKSwKKyAgICAgICAgICAvKiByaWdodCAqL0xleGVyLmNvbnZlcnRf
cG9zKGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdKQorICAgICAgICBdOworICAgICAgdGhyb3cg
WworICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgIHJlZ2lvbiRwcmltZSwK
KyAgICAgICAgICAgIGV4blsyXQorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBwYXJzZShuYW1lLCBsZXhi
dWYsIHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAg
cmV0dXJuIHBhcnNlJHByaW1lKG5hbWUsIGxleGJ1ZiwgUGFyc2VyLm1vZHVsZTEpOworICAgIGNh
c2UgMSA6IAorICAgICAgICByZXR1cm4gcGFyc2UkcHJpbWUobmFtZSwgbGV4YnVmLCBQYXJzZXIu
c2NyaXB0KTsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuIHBhcnNlJHByaW1lKG5hbWUs
IGxleGJ1ZiwgUGFyc2VyLnNjcmlwdDEpOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIHN0cmlu
Z190byhzdGFydCwgcykgeworICB2YXIgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nKHMpOwor
ICByZXR1cm4gcGFyc2UoInN0cmluZyIsIGxleGJ1Ziwgc3RhcnQpOworfQorCitmdW5jdGlvbiBz
dHJpbmdfdG9fc2NyaXB0KHMpIHsKKyAgcmV0dXJuIHN0cmluZ190bygvKiBTY3JpcHQgKi8xLCBz
KTsKK30KKworZnVuY3Rpb24gc3RyaW5nX3RvX21vZHVsZShzKSB7CisgIHJldHVybiBzdHJpbmdf
dG8oLyogTW9kdWxlICovMCwgcyk7Cit9CisKK3ZhciBTeW50YXggPSBTY3JpcHQuU3ludGF4Owor
CitleHBvcnRzLlN5bnRheCAgICAgICAgICAgPSBTeW50YXg7CitleHBvcnRzLnBhcnNlICAgICAg
ICAgICAgPSBwYXJzZTsKK2V4cG9ydHMuc3RyaW5nX3RvX3NjcmlwdCA9IHN0cmluZ190b19zY3Jp
cHQ7CitleHBvcnRzLnN0cmluZ190b19tb2R1bGUgPSBzdHJpbmdfdG9fbW9kdWxlOworLyogTGV4
ZXIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBwYXJzZS5qcyAvLy8vLy8v
LworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydwYXJzZXIn
XSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0
IG9mIHBhcnNlci5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJT
SU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBB
c3QgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYXN0Iik7Cit2YXIgSTMyICAgICAg
ICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2kzMiIpOwordmFyIExpYiAgICAgICAgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9saWIiKTsKK3ZhciAkJE1hcCAgICAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9tYXAiKTsKK3ZhciBMaXN0ICAgICAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQmxvY2sg
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2siKTsK
K3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9q
cy9jdXJyeSIpOwordmFyIFNjcmlwdCAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zY3Jp
cHQiKTsKK3ZhciBTb3VyY2UgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc291cmNlIik7
Cit2YXIgJCRTdHJpbmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvc3RyaW5nIik7Cit2YXIgUGFyc2luZyAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1w
bGF0Zm9ybS9saWIvanMvcGFyc2luZyIpOwordmFyIENhbWxfb2JqICAgICAgICAgICAgICAgID0g
cmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIgT3BlcmF0b3JzICAg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL29wZXJhdG9ycyIpOwordmFyIFBlcnZhc2l2ZXMgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3BlcnZhc2l2ZXMiKTsKK3Zh
ciBDYW1sX2Zvcm1hdCAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9j
YW1sX2Zvcm1hdCIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIHBh
cnNlX2Vycm9yKG1zZykgeworICB2YXIgbXNnJDEgPSBtc2cgPT09ICJzeW50YXggZXJyb3IiID8g
InVuZXhwZWN0ZWQgdG9rZW4iIDogbXNnOworICB0aHJvdyBbCisgICAgICAgIFNjcmlwdC5TeW50
YXgsCisgICAgICAgIFNvdXJjZS5ub19yZWdpb24sCisgICAgICAgIG1zZyQxCisgICAgICBdOwor
fQorCitmdW5jdGlvbiBwb3NpdGlvbl90b19wb3MocG9zaXRpb24pIHsKKyAgcmV0dXJuIC8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAvKiBmaWxlICovcG9zaXRpb25bLyogcG9zX2ZuYW1lICovMF0s
CisgICAgICAgICAgLyogbGluZSAqL3Bvc2l0aW9uWy8qIHBvc19sbnVtICovMV0sCisgICAgICAg
ICAgLyogY29sdW1uICovcG9zaXRpb25bLyogcG9zX2NudW0gKi8zXSAtIHBvc2l0aW9uWy8qIHBv
c19ib2wgKi8yXSB8IDAKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gcG9zaXRpb25zX3RvX3Jl
Z2lvbihwb3NpdGlvbjEsIHBvc2l0aW9uMikgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAg
ICAgICAgIC8qIGxlZnQgKi9wb3NpdGlvbl90b19wb3MocG9zaXRpb24xKSwKKyAgICAgICAgICAv
KiByaWdodCAqL3Bvc2l0aW9uX3RvX3Bvcyhwb3NpdGlvbjIpCisgICAgICAgIF07Cit9CisKK2Z1
bmN0aW9uIGF0KCkgeworICByZXR1cm4gcG9zaXRpb25zX3RvX3JlZ2lvbihQYXJzaW5nLnN5bWJv
bF9zdGFydF9wb3MoLyogKCkgKi8wKSwgUGFyc2luZy5zeW1ib2xfZW5kX3BvcygvKiAoKSAqLzAp
KTsKK30KKworZnVuY3Rpb24gYXRpKGkpIHsKKyAgcmV0dXJuIHBvc2l0aW9uc190b19yZWdpb24o
UGFyc2luZy5yaHNfc3RhcnRfcG9zKGkpLCBQYXJzaW5nLnJoc19lbmRfcG9zKGkpKTsKK30KKwor
ZnVuY3Rpb24gbGl0ZXJhbChmLCBzKSB7CisgIHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKGYs
IHMpOworICB9CisgIGNhdGNoIChleG4peworICAgIGlmIChleG5bMF0gPT09IENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmZhaWx1cmUpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIFNjcmlw
dC5TeW50YXgsCisgICAgICAgICAgICBzWy8qIGF0ICovMF0sCisgICAgICAgICAgICAiY29uc3Rh
bnQgb3V0IG9mIHJhbmdlIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAg
dGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBuYXQocywgYXQpIHsKKyAgdHJ5
IHsKKyAgICB2YXIgbiA9IENhbWxfZm9ybWF0LmNhbWxfaW50X29mX3N0cmluZyhzKTsKKyAgICBp
ZiAobiA+PSAwKSB7CisgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0
aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAg
ICAgICAgICAgIiIKKyAgICAgICAgICBdOworICAgIH0KKyAgfQorICBjYXRjaCAoZXhuKXsKKyAg
ICBpZiAoZXhuWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7CisgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgICAgYXQsCisg
ICAgICAgICAgICAiaW50ZWdlciBjb25zdGFudCBvdXQgb2YgcmFuZ2UiCisgICAgICAgICAgXTsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9CisKK2Z1
bmN0aW9uIG5hdDMyKHMsIGF0KSB7CisgIHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKEkzMi5v
Zl9zdHJpbmdfdSwgcyk7CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4blswXSA9PT0g
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSkgeworICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgIGF0LAorICAgICAgICAgICAgImkzMiBj
b25zdGFudCBvdXQgb2YgcmFuZ2UiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9CisKK3ZhciBWYXJNYXAgPSAkJE1hcC5NYWtl
KFskJFN0cmluZy5jb21wYXJlXSk7CisKK2Z1bmN0aW9uIGVtcHR5X2NvbnRleHQoKSB7CisgIHJl
dHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogdHlwZXMgOiByZWNvcmQgKi9bCisgICAg
ICAgICAgICAvKiB0bWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAgICAgICAgICAvKiB0
bGlzdCA6IFtdICovMAorICAgICAgICAgIF0sCisgICAgICAgICAgLyogdGFibGVzIDogcmVjb3Jk
ICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAgICAg
ICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIG1lbW9yaWVzIDog
cmVjb3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisg
ICAgICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIGZ1bmNz
IDogcmVjb3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0s
CisgICAgICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIGxv
Y2FscyA6IHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAq
LzBdLAorICAgICAgICAgICAgLyogY291bnQgKi8wCisgICAgICAgICAgXSwKKyAgICAgICAgICAv
KiBnbG9iYWxzIDogcmVjb3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVt
cHR5ICovMF0sCisgICAgICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAg
ICAgIC8qIGxhYmVscyAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdCisgICAgICAgIF07Cit9CisKK2Z1
bmN0aW9uIGVudGVyX2Z1bmMoYykgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAg
IC8qIHR5cGVzICovY1svKiB0eXBlcyAqLzBdLAorICAgICAgICAgIC8qIHRhYmxlcyAqL2NbLyog
dGFibGVzICovMV0sCisgICAgICAgICAgLyogbWVtb3JpZXMgKi9jWy8qIG1lbW9yaWVzICovMl0s
CisgICAgICAgICAgLyogZnVuY3MgKi9jWy8qIGZ1bmNzICovM10sCisgICAgICAgICAgLyogbG9j
YWxzIDogcmVjb3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICov
MF0sCisgICAgICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8q
IGdsb2JhbHMgKi9jWy8qIGdsb2JhbHMgKi81XSwKKyAgICAgICAgICAvKiBsYWJlbHMgKi9WYXJN
YXBbLyogZW1wdHkgKi8wXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0eXBlXyhjLCB4KSB7
CisgIHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKFZhck1hcFsvKiBmaW5kICovMjFdLCB4Wy8q
IGl0ICovMV0sIGNbLyogdHlwZXMgKi8wXVsvKiB0bWFwICovMF0pOworICB9CisgIGNhdGNoIChl
eG4peworICAgIGlmIChleG4gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkg
eworICAgICAgdGhyb3cgWworICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAg
IHhbLyogYXQgKi8wXSwKKyAgICAgICAgICAgICJ1bmtub3duIHR5cGUgIiArIHhbLyogaXQgKi8x
XQorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOworICAg
IH0KKyAgfQorfQorCitmdW5jdGlvbiBsb29rdXAoY2F0ZWdvcnksIHNwYWNlLCB4KSB7CisgIHRy
eSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKFZhck1hcFsvKiBmaW5kICovMjFdLCB4Wy8qIGl0ICov
MV0sIHNwYWNlWy8qIG1hcCAqLzBdKTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhu
ID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgIHRocm93IFsK
KyAgICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICB4Wy8qIGF0ICovMF0sCisg
ICAgICAgICAgICAidW5rbm93biAiICsgKGNhdGVnb3J5ICsgKCIgIiArIHhbLyogaXQgKi8xXSkp
CisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAg
fQorICB9Cit9CisKK2Z1bmN0aW9uIGZ1bmMoYywgeCkgeworICByZXR1cm4gbG9va3VwKCJmdW5j
dGlvbiIsIGNbLyogZnVuY3MgKi8zXSwgeCk7Cit9CisKK2Z1bmN0aW9uIGxvY2FsKGMsIHgpIHsK
KyAgcmV0dXJuIGxvb2t1cCgibG9jYWwiLCBjWy8qIGxvY2FscyAqLzRdLCB4KTsKK30KKworZnVu
Y3Rpb24gZ2xvYmFsKGMsIHgpIHsKKyAgcmV0dXJuIGxvb2t1cCgiZ2xvYmFsIiwgY1svKiBnbG9i
YWxzICovNV0sIHgpOworfQorCitmdW5jdGlvbiB0YWJsZShjLCB4KSB7CisgIHJldHVybiBsb29r
dXAoInRhYmxlIiwgY1svKiB0YWJsZXMgKi8xXSwgeCk7Cit9CisKK2Z1bmN0aW9uIG1lbW9yeShj
LCB4KSB7CisgIHJldHVybiBsb29rdXAoIm1lbW9yeSIsIGNbLyogbWVtb3JpZXMgKi8yXSwgeCk7
Cit9CisKK2Z1bmN0aW9uIGxhYmVsKGMsIHgpIHsKKyAgdHJ5IHsKKyAgICByZXR1cm4gQ3Vycnku
XzIoVmFyTWFwWy8qIGZpbmQgKi8yMV0sIHhbLyogaXQgKi8xXSwgY1svKiBsYWJlbHMgKi82XSk7
CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMubm90X2ZvdW5kKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBTY3JpcHQuU3lu
dGF4LAorICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAgICAgICAgICAgInVua25vd24gbGFi
ZWwgIiArIHhbLyogaXQgKi8xXQorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBhbm9uX3R5cGUoYywgdHkp
IHsKKyAgY1svKiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0gPSBQZXJ2YXNpdmVzLiRhdChjWy8q
IHR5cGVzICovMF1bLyogdGxpc3QgKi8xXSwgLyogOjogKi9bCisgICAgICAgIHR5LAorICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgIF0pOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlv
biBiaW5kKGNhdGVnb3J5LCBzcGFjZSwgeCkgeworICBpZiAoQ3VycnkuXzIoVmFyTWFwWy8qIG1l
bSAqLzJdLCB4Wy8qIGl0ICovMV0sIHNwYWNlWy8qIG1hcCAqLzBdKSkgeworICAgIHRocm93IFsK
KyAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgIHhbLyogYXQgKi8wXSwKKyAgICAg
ICAgICAiZHVwbGljYXRlICIgKyAoY2F0ZWdvcnkgKyAoIiAiICsgeFsvKiBpdCAqLzFdKSkKKyAg
ICAgICAgXTsKKyAgfQorICBzcGFjZVsvKiBtYXAgKi8wXSA9IEN1cnJ5Ll8zKFZhck1hcFsvKiBh
ZGQgKi8zXSwgeFsvKiBpdCAqLzFdLCBzcGFjZVsvKiBjb3VudCAqLzFdLCBzcGFjZVsvKiBtYXAg
Ki8wXSk7CisgIHNwYWNlWy8qIGNvdW50ICovMV0gPSBzcGFjZVsvKiBjb3VudCAqLzFdICsgMSB8
IDA7CisgIGlmIChzcGFjZVsvKiBjb3VudCAqLzFdKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAg
ZWxzZSB7CisgICAgdGhyb3cgWworICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAg
eFsvKiBhdCAqLzBdLAorICAgICAgICAgICJ0b28gbWFueSAiICsgKGNhdGVnb3J5ICsgIiBiaW5k
aW5ncyIpCisgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gYmluZF9mdW5jKGMsIHgpIHsK
KyAgcmV0dXJuIGJpbmQoImZ1bmN0aW9uIiwgY1svKiBmdW5jcyAqLzNdLCB4KTsKK30KKworZnVu
Y3Rpb24gYmluZF9sb2NhbChjLCB4KSB7CisgIHJldHVybiBiaW5kKCJsb2NhbCIsIGNbLyogbG9j
YWxzICovNF0sIHgpOworfQorCitmdW5jdGlvbiBiaW5kX2dsb2JhbChjLCB4KSB7CisgIHJldHVy
biBiaW5kKCJnbG9iYWwiLCBjWy8qIGdsb2JhbHMgKi81XSwgeCk7Cit9CisKK2Z1bmN0aW9uIGJp
bmRfdGFibGUoYywgeCkgeworICByZXR1cm4gYmluZCgidGFibGUiLCBjWy8qIHRhYmxlcyAqLzFd
LCB4KTsKK30KKworZnVuY3Rpb24gYmluZF9tZW1vcnkoYywgeCkgeworICByZXR1cm4gYmluZCgi
bWVtb3J5IiwgY1svKiBtZW1vcmllcyAqLzJdLCB4KTsKK30KKworZnVuY3Rpb24gYW5vbihjYXRl
Z29yeSwgc3BhY2UsIG4pIHsKKyAgc3BhY2VbLyogY291bnQgKi8xXSA9IHNwYWNlWy8qIGNvdW50
ICovMV0gKyBuIHwgMDsKKyAgaWYgKEN1cnJ5Ll8yKEkzMi5sdF91LCBzcGFjZVsvKiBjb3VudCAq
LzFdLCBuKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAg
ICAgIFNvdXJjZS5ub19yZWdpb24sCisgICAgICAgICAgInRvbyBtYW55ICIgKyAoY2F0ZWdvcnkg
KyAiIGJpbmRpbmdzIikKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsK
KyAgfQorfQorCitmdW5jdGlvbiBhbm9uX2Z1bmMoYykgeworICByZXR1cm4gYW5vbigiZnVuY3Rp
b24iLCBjWy8qIGZ1bmNzICovM10sIDEpOworfQorCitmdW5jdGlvbiBhbm9uX2xvY2FscyhjLCB0
cykgeworICByZXR1cm4gYW5vbigibG9jYWwiLCBjWy8qIGxvY2FscyAqLzRdLCBDdXJyeS5fMShM
aWIuTGlzdDMyWy8qIGxlbmd0aCAqLzBdLCB0cykpOworfQorCitmdW5jdGlvbiBhbm9uX2dsb2Jh
bChjKSB7CisgIHJldHVybiBhbm9uKCJnbG9iYWwiLCBjWy8qIGdsb2JhbHMgKi81XSwgMSk7Cit9
CisKK2Z1bmN0aW9uIGFub25fdGFibGUoYykgeworICByZXR1cm4gYW5vbigidGFibGUiLCBjWy8q
IHRhYmxlcyAqLzFdLCAxKTsKK30KKworZnVuY3Rpb24gYW5vbl9tZW1vcnkoYykgeworICByZXR1
cm4gYW5vbigibWVtb3J5IiwgY1svKiBtZW1vcmllcyAqLzJdLCAxKTsKK30KKworZnVuY3Rpb24g
YW5vbl9sYWJlbChjKSB7CisgIHZhciBuZXdyZWNvcmQgPSBjLnNsaWNlKCk7CisgIG5ld3JlY29y
ZFsvKiBsYWJlbHMgKi82XSA9IEN1cnJ5Ll8yKFZhck1hcFsvKiBtYXAgKi8yMl0sIGZ1bmN0aW9u
IChwYXJhbSkgeworICAgICAgICByZXR1cm4gMSArIHBhcmFtIHwgMDsKKyAgICAgIH0sIGNbLyog
bGFiZWxzICovNl0pOworICByZXR1cm4gbmV3cmVjb3JkOworfQorCit2YXIgZW1wdHlfdHlwZSA9
IC8qIEZ1bmNUeXBlICovWworICAvKiBbXSAqLzAsCisgIC8qIFtdICovMAorXTsKKworZnVuY3Rp
b24gZXhwbGljaXRfc2lnKGMsIHZhcl9zZW0sIHR5LCBhdCkgeworICB2YXIgeCA9IEN1cnJ5Ll8y
KHZhcl9zZW0sIGMsIHR5cGVfKTsKKyAgaWYgKHhbLyogaXQgKi8xXSA8IEN1cnJ5Ll8xKExpYi5M
aXN0MzJbLyogbGVuZ3RoICovMF0sIGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKSAmJiBD
YW1sX29iai5jYW1sX25vdGVxdWFsKHR5LCBlbXB0eV90eXBlKSAmJiBDYW1sX29iai5jYW1sX25v
dGVxdWFsKHR5LCBDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBjWy8qIHR5cGVzICov
MF1bLyogdGxpc3QgKi8xXSwgeFsvKiBpdCAqLzFdKSkpIHsKKyAgICB0aHJvdyBbCisgICAgICAg
ICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICBhdCwKKyAgICAgICAgICAic2lnbmF0dXJlIG1p
c21hdGNoIgorICAgICAgICBdOworICB9CisgIHJldHVybiB4OworfQorCitmdW5jdGlvbiBpbmxp
bmVfdHlwZShjLCB0eSwgYXQpIHsKKyAgdmFyIG1hdGNoID0gQ3VycnkuXzIoTGliLkxpc3RbLyog
aW5kZXhfb2YgKi82XSwgdHksIGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKTsKKyAgaWYg
KG1hdGNoKSB7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQobWF0Y2hbMF0sIGF0KTsKKyAgfQor
ICBlbHNlIHsKKyAgICB2YXIgaSA9IEN1cnJ5Ll8xKExpYi5MaXN0MzJbLyogbGVuZ3RoICovMF0s
IGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKTsKKyAgICBhbm9uX3R5cGUoYywgdHkpOwor
ICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KGksIGF0KTsKKyAgfQorfQorCit2YXIgeXl0cmFuc2xf
Y29uc3QgPSAvKiBhcnJheSAqL1sKKyAgMjYzLAorICAyNjQsCisgIDI2NSwKKyAgMjY2LAorICAy
NjcsCisgIDI2OCwKKyAgMjY5LAorICAyNzAsCisgIDI3MSwKKyAgMjcyLAorICAyNzMsCisgIDI3
NCwKKyAgMjc1LAorICAyNzYsCisgIDI3NywKKyAgMjc4LAorICAyNzksCisgIDI4MCwKKyAgMjgx
LAorICAyODIsCisgIDI4MywKKyAgMjg0LAorICAyODUsCisgIDI4NiwKKyAgMjk2LAorICAyOTcs
CisgIDI5OCwKKyAgMjk5LAorICAzMDAsCisgIDMwMSwKKyAgMzAyLAorICAzMDMsCisgIDMwNCwK
KyAgMzA1LAorICAzMDYsCisgIDMwNywKKyAgMzA4LAorICAzMDksCisgIDMxMCwKKyAgMzExLAor
ICAzMTIsCisgIDMxMywKKyAgMzE0LAorICAzMTUsCisgIDMxNiwKKyAgMzE3LAorICAzMTgsCisg
IDMxOSwKKyAgMzIwLAorICAzMjEsCisgIDMyMiwKKyAgMzIzLAorICAzMjQsCisgIDMyNSwKKyAg
MzI2LAorICAzMjcsCisgIDAsCisgIDAKK107CisKK3ZhciB5eXRyYW5zbF9ibG9jayA9IC8qIGFy
cmF5ICovWworICAyNTcsCisgIDI1OCwKKyAgMjU5LAorICAyNjAsCisgIDI2MSwKKyAgMjYyLAor
ICAyODcsCisgIDI4OCwKKyAgMjg5LAorICAyOTAsCisgIDI5MSwKKyAgMjkyLAorICAyOTMsCisg
IDI5NCwKKyAgMjk1LAorICAzMjgsCisgIDAKK107CisKK3ZhciB5eWFjdCA9IC8qIGFycmF5ICov
WworICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoInBhcnNl
ciIpOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICIiOworICB9LAorICBmdW5j
dGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gXzEgKyBfMjsKKyAgfSwKKyAgZnVuY3Rp
b24gKCkgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIF8xLAorICAgICAgICAg
ICAgXzIKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIC8q
IEZ1bmNSZWZUeXBlICovMDsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgcmV0dXJuIC8qIEdsb2JhbFR5cGUgKi9bCisgICAgICAgICAgICBfMSwKKyAgICAgICAgICAg
IC8qIEltbXV0YWJsZSAqLzAKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAxKTsKKyAgICByZXR1cm4gLyogR2xvYmFsVHlwZSAqL1sKKyAgICAgICAgICAgIF8z
LAorICAgICAgICAgICAgLyogTXV0YWJsZSAqLzEKKyAgICAgICAgICBdOworICB9LAorICBmdW5j
dGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4g
LyogRnVuY1R5cGUgKi9bCisgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAvKiBb
XSAqLzAKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsK
KyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAg
ICB2YXIgaW5zID0gXzVbMF07CisgICAgaWYgKGlucyAhPT0gLyogW10gKi8wKSB7CisgICAgICB2
YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBTY3Jp
cHQuU3ludGF4LAorICAgICAgICAgICAgYXQkMSwKKyAgICAgICAgICAgICJyZXN1bHQgYmVmb3Jl
IHBhcmFtZXRlciIKKyAgICAgICAgICBdOworICAgIH0KKyAgICByZXR1cm4gLyogRnVuY1R5cGUg
Ki9bCisgICAgICAgICAgICBpbnMsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChfMywgXzVb
MV0pCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Cisg
ICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
cmV0dXJuIC8qIEZ1bmNUeXBlICovWworICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoXzMsIF81
WzBdKSwKKyAgICAgICAgICAgIF81WzFdCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMik7CisgICAgdmFyIF82ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MCk7CisgICAgcmV0dXJuIC8qIEZ1bmNUeXBlICovWworICAgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAgIF80LAorICAgICAgICAgICAgICBfNlswXQorICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgIF82WzFdCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgICAgcmV0dXJuIC8qIFRhYmxlVHlwZSAqL1sKKyAgICAgICAgICAgIF8xLAorICAg
ICAgICAgICAgXzIKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNl
cl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAwKTsKKyAgICByZXR1cm4gLyogTWVtb3J5VHlwZSAqL1tfMV07CisgIH0sCisgIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAg
ICAvKiBtaW4gKi9uYXQzMihfMSwgYXRpKDEpKSwKKyAgICAgICAgICAgIC8qIG1heCA6IE5vbmUg
Ki8wCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Cisg
ICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
cmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1pbiAqL25hdDMyKF8xLCBhdGko
MSkpLAorICAgICAgICAgICAgLyogbWF4IDogU29tZSAqL1tuYXQzMihfMiwgYXRpKDIpKV0KKyAg
ICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICBy
ZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgIH0sCisgIGZ1
bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KF8xLCBh
dCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
cmV0dXJuIFNvdXJjZS4kYXQkYXQoXzEsIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdChfMSwgYXQoLyog
KCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBh
dCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKF8sIF8kMSkgeworICAg
ICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQobmF0MzIoXzEsIGF0JDEpLCBhdCQxKTsKKyAgICB9Owor
ICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8q
ICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBsb29rdXApIHsKKyAgICAgIHJldHVy
biBTb3VyY2UuJGF0JGF0KEN1cnJ5Ll8yKGxvb2t1cCwgYywgU291cmNlLiRhdCRhdChfMSwgYXQk
MSkpLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChfLCBfJDEpIHsKKyAgICAgIHJldHVybiAvKiBbXSAqLzA7CisgICAgfTsKKyAgfSwK
KyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBsb29r
dXApIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzIoXzEs
IGMsIGxvb2t1cCksCisgICAgICAgICAgICAgIEN1cnJ5Ll8yKF8yLCBjLCBsb29rdXApCisgICAg
ICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGMsIGFub24sIF8pIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShhbm9uLCBjKTsKKyAg
ICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGMsIF8sIGJpbmQpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihiaW5kLCBjLCBfMSk7
CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJu
IFNvdXJjZS4kYXQkYXQoXzEsIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoKSB7
CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCB4cykgeworICAgICAgTGlzdC5pdGVyKGZ1bmN0aW9u
ICh4KSB7CisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBTY3JpcHQuU3lu
dGF4LAorICAgICAgICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAgICAgICAgICAgICAgICAg
Im1pc21hdGNoaW5nIGxhYmVsIgorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfSwgeHMp
OworICAgICAgcmV0dXJuIGFub25fbGFiZWwoYyk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCB4cykgeworICAgICAg
TGlzdC5pdGVyKGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICBpZiAoeFsvKiBpdCAqLzFdICE9
PSBfMVsvKiBpdCAqLzFdKSB7CisgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAg
ICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAor
ICAgICAgICAgICAgICAgICAgICAibWlzbWF0Y2hpbmcgbGFiZWwiCisgICAgICAgICAgICAgICAg
ICBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHhzKTsKKyAgICAgIHZhciBjJDEg
PSBjOworICAgICAgdmFyIHggPSBfMTsKKyAgICAgIHZhciBuZXdyZWNvcmQgPSBjJDEuc2xpY2Uo
KTsKKyAgICAgIG5ld3JlY29yZFsvKiBsYWJlbHMgKi82XSA9IEN1cnJ5Ll8zKFZhck1hcFsvKiBh
ZGQgKi8zXSwgeFsvKiBpdCAqLzFdLCAwLCBDdXJyeS5fMihWYXJNYXBbLyogbWFwICovMjJdLCBm
dW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMSArIHBhcmFtIHwgMDsK
KyAgICAgICAgICAgICAgfSwgYyQxWy8qIGxhYmVscyAqLzZdKSk7CisgICAgICByZXR1cm4gbmV3
cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gLyogW10g
Ki8wOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gLyog
OjogKi9bCisgICAgICAgICAgICBfMSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAg
IF07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gMDsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIG5hdDMyKF8xLCBhdCgvKiAoKSAqLzAp
KTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAvKiBOb25lICovMDsKKyAgfSwK
KyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIG4gPSBuYXQoXzEsIGF0KC8q
ICgpICovMCkpOworICAgIGlmICghQ3VycnkuXzEoTGliLkludFsvKiBpc19wb3dlcl9vZl90d28g
Ki8xXSwgbikpIHsKKyAgICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICAgIHRocm93
IFsKKyAgICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICBhdCQxLAorICAgICAg
ICAgICAgImFsaWdubWVudCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIgorICAgICAgICAgIF07Cisg
ICAgfQorICAgIHJldHVybiAvKiBTb21lICovW0N1cnJ5Ll8xKExpYi5JbnRbLyogbG9nMiAqLzBd
LCBuKV07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBhdCQx
ID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVy
biAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgU291cmNlLiRhdCRhdChDdXJyeS5fMShfMSwgYyks
IGF0JDEpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIGF0JDEgPSBhdCgv
KiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIC8qIDo6
ICovWworICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KEN1cnJ5Ll8xKF8xLCBjKSwgYXQkMSks
CisgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAor
ICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy51bnJlYWNoYWJsZTsK
KyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsK
KyAgICAgIHJldHVybiBPcGVyYXRvcnMubm9wOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5icihDdXJyeS5fMihfMiwgYywgbGFiZWwpKTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAg
ICAgIHJldHVybiBPcGVyYXRvcnMuYnJfaWYoQ3VycnkuXzIoXzIsIGMsIGxhYmVsKSk7CisgICAg
fTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8zID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9u
IChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShMaWIuTGlzdFsvKiBzcGxpdF9sYXN0
ICovNV0sIC8qIDo6ICovWworICAgICAgICAgICAgQ3VycnkuXzIoXzIsIGMsIGxhYmVsKSwKKyAg
ICAgICAgICAgIEN1cnJ5Ll8yKF8zLCBjLCBsYWJlbCkKKyAgICAgICAgICBdKTsKKyAgICAgIHJl
dHVybiBPcGVyYXRvcnMuYnJfdGFibGUobWF0Y2hbMF0sIG1hdGNoWzFdKTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVy
biBPcGVyYXRvcnMuJCRyZXR1cm47CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gT3BlcmF0
b3JzLmNhbGwoQ3VycnkuXzIoXzIsIGMsIGZ1bmMpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJl
dHVybiBPcGVyYXRvcnMuY2FsbF9pbmRpcmVjdChDdXJyeS5fMihfMiwgYywgdHlwZV8pKTsKKyAg
ICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZHJvcDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7
CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuc2VsZWN0
OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVy
biBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfbG9jYWwoQ3Vycnku
XzIoXzIsIGMsIGxvY2FsKSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gT3BlcmF0b3Jz
LnNldF9sb2NhbChDdXJyeS5fMihfMiwgYywgbG9jYWwpKTsKKyAgICB9OworICB9LAorICBmdW5j
dGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAg
IHJldHVybiBPcGVyYXRvcnMudGVlX2xvY2FsKEN1cnJ5Ll8yKF8yLCBjLCBsb2NhbCkpOworICAg
IH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5j
dGlvbiAoYykgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfZ2xvYmFsKEN1cnJ5Ll8yKF8y
LCBjLCBnbG9iYWwpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAw
KTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuc2V0
X2dsb2JhbChDdXJyeS5fMihfMiwgYywgZ2xvYmFsKSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBD
dXJyeS5fMihfMSwgXzMsIF8yKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAyKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAxKTsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAw
KTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8yKF8xLCBf
MywgXzIpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZnVuY3Rp
b24gKCkgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5jdXJyZW50X21lbW9yeTsKKyAgICB9Owor
ICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJl
dHVybiBPcGVyYXRvcnMuZ3Jvd19tZW1vcnk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9f
Y2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBsaXRl
cmFsKF8xLCBfMilbMF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJf
ZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBfMTsKKyAgICB9Owor
ICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24g
KCkgeworICAgICAgcmV0dXJuIF8xOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gXzE7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8x
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1
bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBfMTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJu
IF8xOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZh
ciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBf
NSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBm
dW5jdGlvbiAoYykgeworICAgICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgXzUpOwor
ICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJpbWUpOworICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5ibG9jayhtYXRjaFswXSwgbWF0Y2hbMV0pOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGMk
cHJpbWUgPSBDdXJyeS5fMihfMiwgYywgXzUpOworICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEo
XzMsIGMkcHJpbWUpOworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5sb29wKG1hdGNoWzBdLCBtYXRj
aFsxXSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAg
dmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFy
IF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJu
IGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgYyRwcmltZSA9IEN1cnJ5Ll8yKF8yLCBjLCBfNSk7
CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMywgYyRwcmltZSk7CisgICAgICByZXR1cm4g
T3BlcmF0b3JzLmlmXyhtYXRjaFswXSwgbWF0Y2hbMV0sIC8qIFtdICovMCk7CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNik7CisgICAgdmFyIF8zID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF82ID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF84ID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2
YXIgYyRwcmltZSA9IEN1cnJ5Ll8yKF8yLCBjLCBQZXJ2YXNpdmVzLiRhdChfNSwgXzgpKTsKKyAg
ICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiBPcGVy
YXRvcnMuaWZfKG1hdGNoWzBdLCBtYXRjaFsxXSwgQ3VycnkuXzEoXzYsIGMkcHJpbWUpKTsKKyAg
ICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rp
b24gKGMpIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgXzEsCisg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKF8yLCBjKQorICAgICAgICAgICAgXTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgp
ICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJy
eS5fMShfMiwgYyk7CisgICAgICByZXR1cm4gUGVydmFzaXZlcy4kYXQobWF0Y2hbMF0sIC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgU291cmNlLiRhdCRhdChtYXRjaFsxXSwgYXQkMSksCisg
ICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICBdKTsKKyAgICB9Owor
ICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMp
IHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzIs
IGMpWzFdLAorICAgICAgICAgICAgICBDdXJyeS5fMShfMSwgYykKKyAgICAgICAgICAgIF07Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8y
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8zID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uIChjKSB7CisgICAgICB2YXIgYyRwcmltZSA9IEN1cnJ5Ll8yKF8yLCBjLCAvKiBbXSAqLzAp
OworICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJpbWUpOworICAgICAgcmV0dXJu
IC8qIHR1cGxlICovWworICAgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAgIE9w
ZXJhdG9ycy5ibG9jayhtYXRjaFswXSwgbWF0Y2hbMV0pCisgICAgICAgICAgICBdOworICAgIH07
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMyA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAo
YykgeworICAgICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgLyogW10gKi8wKTsKKyAg
ICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiAvKiB0
dXBsZSAqL1sKKyAgICAgICAgICAgICAgLyogW10gKi8wLAorICAgICAgICAgICAgICBPcGVyYXRv
cnMubG9vcChtYXRjaFswXSwgbWF0Y2hbMV0pCisgICAgICAgICAgICBdOworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAg
ICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgLyogW10gKi8wKTsKKyAgICAgIHZhciBt
YXRjaCA9IEN1cnJ5Ll8yKF80LCBjLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgIE9wZXJhdG9ycy5pZl8o
XzMsIG1hdGNoWzFdLCBtYXRjaFsyXSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF83ID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBjJHByaW1l
KSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIFtdICovMCwK
KyAgICAgICAgICAgICAgQ3VycnkuXzEoXzMsIGMkcHJpbWUpLAorICAgICAgICAgICAgICBDdXJy
eS5fMShfNywgYyRwcmltZSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBjJHByaW1lKSB7
CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIFtdICovMCwKKyAg
ICAgICAgICAgICAgQ3VycnkuXzEoXzMsIGMkcHJpbWUpLAorICAgICAgICAgICAgICAvKiBbXSAq
LzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgOCk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
NSk7CisgICAgdmFyIF84ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3Vy
cnkuXzEoXzQsIGMkcHJpbWUpLAorICAgICAgICAgICAgICBDdXJyeS5fMShfOCwgYyRwcmltZSkK
KyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJf
ZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
NCk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3Vy
cnkuXzEoXzQsIGMkcHJpbWUpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
IF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAg
dmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFy
IF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8z
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzIsIGMkcHJp
bWUpLAorICAgICAgICAgICAgICBDdXJyeS5fMShfMywgYyRwcmltZSkKKyAgICAgICAgICAgIF07
CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8y
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzIsIGMkcHJp
bWUpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1
cm4gLyogW10gKi8wOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEp
OworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwor
ICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuJGF0KEN1
cnJ5Ll8xKF8xLCBjKSwgQ3VycnkuXzEoXzIsIGMpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlv
biAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZh
ciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVy
biBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGVzMSA9IEN1cnJ5Ll8xKF8xLCBjKTsKKyAgICAg
IHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
KyAgICAgICAgICAgICAgbWF0Y2hbMF0gKyAxIHwgMCwKKyAgICAgICAgICAgICAgUGVydmFzaXZl
cy4kYXQoZXMxLCBtYXRjaFsxXSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOwor
ICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoQ3Vy
cnkuXzEoXzEsIGMpLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBtYXRjaCA9
IF81WzBdOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIC8qIEZ1bmNUeXBl
ICovWworICAgICAgICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgICAgICAgUGVydmFzaXZlcy4k
YXQoXzMsIG1hdGNoWzFdKQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIChj
KSB7CisgICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShfNVsxXSwgYyk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Cisg
ICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
dmFyIG1hdGNoID0gXzVbMF07CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
LyogRnVuY1R5cGUgKi9bCisgICAgICAgICAgICAgIFBlcnZhc2l2ZXMuJGF0KF8zLCBtYXRjaFsw
XSksCisgICAgICAgICAgICAgIG1hdGNoWzFdCisgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ZnVuY3Rpb24gKGMpIHsKKyAgICAgICAgICAgICAgYW5vbl9sb2NhbHMoYywgXzMpOworICAgICAg
ICAgICAgICByZXR1cm4gQ3VycnkuXzEoXzVbMV0sIGMpOworICAgICAgICAgICAgfQorICAgICAg
ICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNiA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBtYXRjaCA9IF82
WzBdOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIC8qIEZ1bmNUeXBlICov
WworICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBfNCwKKyAgICAgICAg
ICAgICAgICBtYXRjaFswXQorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICBtYXRjaFsx
XQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIChjKSB7CisgICAgICAgICAg
ICAgIGJpbmRfbG9jYWwoYywgXzMpOworICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoXzZb
MV0sIGMpOworICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIGVt
cHR5X3R5cGUsCisgICAgICAgICAgICBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICB2YXIg
YyRwcmltZSA9IGFub25fbGFiZWwoYyk7CisgICAgICAgICAgICAgIHJldHVybiAvKiByZWNvcmQg
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgLyogZnR5cGUgKi9Tb3VyY2UuJGF0JGF0KC0xLCBh
dCgvKiAoKSAqLzApKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgOiBbXSAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgLyogYm9keSAqL0N1cnJ5Ll8xKF8xLCBjJHByaW1lKQor
ICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgIF81WzBdLAorICAgICAgICAgICAgZnVuY3Rpb24gKGMpIHsKKyAgICAgICAgICAg
ICAgYW5vbl9sb2NhbHMoYywgXzMpOworICAgICAgICAgICAgICB2YXIgZiA9IEN1cnJ5Ll8xKF81
WzFdLCBjKTsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICAvKiBmdHlwZSAqL2ZbLyogZnR5cGUgKi8wXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAvKiBsb2NhbHMgKi9QZXJ2YXNpdmVzLiRhdChfMywgZlsvKiBsb2NhbHMgKi8xXSksCisg
ICAgICAgICAgICAgICAgICAgICAgLyogYm9keSAqL2ZbLyogYm9keSAqLzJdCisgICAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF82ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgXzZb
MF0sCisgICAgICAgICAgICBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICBiaW5kX2xvY2Fs
KGMsIF8zKTsKKyAgICAgICAgICAgICAgdmFyIGYgPSBDdXJyeS5fMShfNlsxXSwgYyk7CisgICAg
ICAgICAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgLyog
ZnR5cGUgKi9mWy8qIGZ0eXBlICovMF0sCisgICAgICAgICAgICAgICAgICAgICAgLyogbG9jYWxz
IDogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICBfNCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZbLyogbG9jYWxzICovMV0KKyAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9mWy8qIGJvZHkgKi8yXQorICAgICAgICAgICAgICAg
ICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDQpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDMpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDIpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rp
b24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX2Z1bmMsIGJpbmRfZnVuYyk7Cisg
ICAgICB2YXIgdCA9IGV4cGxpY2l0X3NpZyhjLCBfNSwgXzZbMF0sIGF0JDEpOworICAgICAgcmV0
dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGluaXQgPSBDdXJyeS5fMShfNlsxXSwgZW50ZXJfZnVuYyhjKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIGZ0eXBlICovdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2FscyAqLzFdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIGJvZHkgKi9pbml0Wy8qIGJvZHkgKi8yXQorICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLCBhdCQxKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgQ3VycnkuXzMo
XzQsIC8qIEZ1bmNFeHBvcnQgKi8wLCBjWy8qIGZ1bmNzICovM11bLyogY291bnQgKi8xXSwgYykK
KyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJf
ZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
Myk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7
CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Cisg
ICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgewor
ICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHZhciB0
ID0gZXhwbGljaXRfc2lnKGMsIF80LCBfNVswXSwgYXQkMSk7CisgICAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIg
aW5pdCA9IEN1cnJ5Ll8xKF81WzFdLCBlbnRlcl9mdW5jKGMpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogZnR5cGUgKi90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxvY2Fs
cyAqL2luaXRbLyogbG9jYWxzICovMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Ym9keSAqL2luaXRbLyogYm9keSAqLzJdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGF0
JDEpOworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAg
dmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFy
IF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0
JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3Vy
cnkuXzMoXzMsIGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHZhciB0ID0gaW5saW5l
X3R5cGUoYywgXzVbMF0sIGF0JDEpOworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGluaXQgPSBDdXJyeS5f
MShfNVsxXSwgZW50ZXJfZnVuYyhjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS4k
YXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZ0eXBl
ICovdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxv
Y2FscyAqLzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9pbml0Wy8q
IGJvZHkgKi8yXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgQ3VycnkuXzMoXzQsIC8qIEZ1bmNFeHBvcnQgKi8wLCBj
Wy8qIGZ1bmNzICovM11bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAgICAgIF07CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAo
KSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMs
IGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHZhciB0ID0gaW5saW5lX3R5cGUoYywgXzRb
MF0sIGF0JDEpOworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGluaXQgPSBDdXJyeS5fMShfNFsxXSwgZW50
ZXJfZnVuYyhjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVj
b3JkICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZ0eXBlICovdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2FscyAqLzFdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9pbml0Wy8qIGJvZHkgKi8yXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1
bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHJldHVybiBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJf
ZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MCk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAo
YykgeworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzEsIGMpLCBhdCQxKTsK
KyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0
KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gU291
cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBpbmRleCAqL0N1
cnJ5Ll8yKF8zLCBjLCB0YWJsZSksCisgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9DdXJy
eS5fMShfNCwgYyksCisgICAgICAgICAgICAgICAgICAvKiBpbml0ICovQ3VycnkuXzIoXzUsIGMs
IGZ1bmMpCisgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJl
dHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3Jk
ICovWworICAgICAgICAgICAgICAgICAgLyogaW5kZXggKi9Tb3VyY2UuJGF0JGF0KDAsIGF0JDEp
LAorICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0ICovQ3VycnkuXzEoXzMsIGMpLAorICAgICAg
ICAgICAgICAgICAgLyogaW5pdCAqL0N1cnJ5Ll8yKF80LCBjLCBmdW5jKQorICAgICAgICAgICAg
ICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMp
OworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwor
ICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAg
IHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAg
ICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX3RhYmxlLCBiaW5kX3RhYmxlKTsKKyAgICAgIHJldHVy
biBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
ICAgICBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1svKiB0dHlwZSAqL181XSwgYXQkMSksCisg
ICAgICAgICAgICAgICAgLyogW10gKi8wLAorICAgICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAv
KiBUYWJsZUV4cG9ydCAqLzEsIGNbLyogdGFibGVzICovMV1bLyogY291bnQgKi8xXSwgYykKKyAg
ICAgICAgICAgICAgXTsKKyAgICAgIH07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgNyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgNik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgNSk7CisgICAgdmFyIF84ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
Mik7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAo
YykgeworICAgICAgdmFyIGkgPSBjWy8qIHRhYmxlcyAqLzFdWy8qIGNvdW50ICovMV07CisgICAg
ICBDdXJyeS5fMyhfMywgYywgYW5vbl90YWJsZSwgYmluZF90YWJsZSk7CisgICAgICByZXR1cm4g
ZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgaW5pdCA9IEN1cnJ5Ll8yKF84LCBjLCBmdW5jKTsK
KyAgICAgICAgdmFyIHNpemUgPSBMaXN0Lmxlbmd0aChpbml0KTsKKyAgICAgICAgcmV0dXJuIC8q
IHR1cGxlICovWworICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWy8q
IHR0eXBlIDogVGFibGVUeXBlICovWworICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVjb3Jk
ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtaW4gKi9zaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBtYXggOiBTb21lICovW3NpemVdCisgICAgICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgXzUKKyAgICAgICAgICAgICAgICAg
ICAgICBdXSwgYXQkMSksCisgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8qIGluZGV4ICovU291cmNlLiRhdCRhdChpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIG9mZnNldCAqL1NvdXJjZS4kYXQkYXQoLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KE9wZXJhdG9ycy5pMzJfY29uc3QoU291cmNlLiRh
dCRhdCgwLCBhdCQxKSksIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBpbml0ICovaW5pdAorICAgICAgICAgICAgICAgICAgICAgIF0sIGF0
JDEpLAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICBDdXJyeS5fMyhfNCwgLyogVGFibGVFeHBvcnQgKi8xLCBjWy8qIHRhYmxl
cyAqLzFdWy8qIGNvdW50ICovMV0sIGMpCisgICAgICAgICAgICAgIF07CisgICAgICB9OworICAg
IH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyog
KCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBTb3VyY2Uu
JGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIGluZGV4ICovQ3Vycnku
XzIoXzMsIGMsIG1lbW9yeSksCisgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9DdXJyeS5f
MShfNCwgYyksCisgICAgICAgICAgICAgICAgICAvKiBpbml0ICovXzUKKyAgICAgICAgICAgICAg
ICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsK
KyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAg
ICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Cisg
ICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAg
ICAvKiBpbmRleCAqL1NvdXJjZS4kYXQkYXQoMCwgYXQkMSksCisgICAgICAgICAgICAgICAgICAv
KiBvZmZzZXQgKi9DdXJyeS5fMShfMywgYyksCisgICAgICAgICAgICAgICAgICAvKiBpbml0ICov
XzQKKyAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9tZW1vcnksIGJpbmRfbWVt
b3J5KTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgU291cmNlLiRh
dCRhdCgvKiByZWNvcmQgKi9bLyogbXR5cGUgKi9fNV0sIGF0JDEpLAorICAgICAgICAgICAgICAv
KiBbXSAqLzAsCisgICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBNZW1vcnlFeHBvcnQgKi8y
LCBjWy8qIG1lbW9yaWVzICovMl1bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAgICAgIF07Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8z
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNik7CisgICAgdmFyIF80ID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF83ID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIGF0JDEgPSBhdCgv
KiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGkgPSBjWy8q
IG1lbW9yaWVzICovMl1bLyogY291bnQgKi8xXTsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9u
X21lbW9yeSwgYmluZF9tZW1vcnkpOworICAgICAgdmFyIHNpemUgPSAoXzcubGVuZ3RoICsgNjU1
MzUgfCAwKSAvIDY1NTM2IHwgMDsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICAgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bLyogbXR5cGUgOiBNZW1vcnlUeXBlICov
Wy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbiAqL3NpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXggOiBTb21lICovW3NpemVdCisgICAgICAgICAg
ICAgICAgICAgICAgXV1dLCBhdCQxKSwKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAg
ICAgICAgICAgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgLyogaW5kZXggKi9Tb3VyY2UuJGF0JGF0KGksIGF0JDEpLAorICAgICAgICAgICAgICAgICAg
ICAgIC8qIG9mZnNldCAqL1NvdXJjZS4kYXQkYXQoLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU291cmNlLiRhdCRhdChPcGVyYXRvcnMuaTMyX2NvbnN0KFNvdXJjZS4kYXQk
YXQoMCwgYXQkMSkpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAq
LzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSksCisgICAgICAgICAgICAgICAg
ICAgICAgLyogaW5pdCAqL183CisgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpLAorICAgICAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICBDdXJy
eS5fMyhfNCwgLyogTWVtb3J5RXhwb3J0ICovMiwgY1svKiBtZW1vcmllcyAqLzJdWy8qIGNvdW50
ICovMV0sIGMpCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDUpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDIpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGMpIHsKKyAgICAgIHZhciBpID0gY1svKiBtZW1vcmllcyAqLzJdWy8qIGNvdW50ICov
MV07CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9tZW1vcnksIGJpbmRfbWVtb3J5KTsKKyAg
ICAgIHZhciBzaXplID0gKF82Lmxlbmd0aCArIDY1NTM1IHwgMCkgLyA2NTUzNiB8IDA7CisgICAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVj
b3JkICovWy8qIG10eXBlIDogTWVtb3J5VHlwZSAqL1svKiByZWNvcmQgKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBtaW4gKi9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgLyog
bWF4IDogU29tZSAqL1tzaXplXQorICAgICAgICAgICAgICAgICAgICAgIF1dXSwgYXQkMSksCisg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4ICovU291cmNlLiRhdCRh
dChpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9Tb3VyY2UuJGF0
JGF0KC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQo
T3BlcmF0b3JzLmkzMl9jb25zdChTb3VyY2UuJGF0JGF0KDAsIGF0JDEpKSwgYXQkMSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXQgKi9fNgorICAgICAg
ICAgICAgICAgICAgICBdLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAg
IH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDQpOworICAgIHZhciBfNCA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNiA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkg
Ki8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBh
bm9uX2dsb2JhbCwgYmluZF9nbG9iYWwpOworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS4k
YXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGd0eXBl
ICovXzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmFsdWUgKi9DdXJyeS5fMShf
NiwgYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBHbG9iYWxFeHBvcnQgKi8zLCBjWy8q
IGdsb2JhbHMgKi81XVsvKiBjb3VudCAqLzFdLCBjKQorICAgICAgICAgICAgXTsKKyAgICB9Owor
ICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICov
MCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5v
bl9nbG9iYWwsIGJpbmRfZ2xvYmFsKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2UuJGF0
JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBndHlwZSAq
L180LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZhbHVlICovQ3VycnkuXzEoXzUs
IGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwK
KyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Cisg
ICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9mdW5jLCBiaW5kX2Z1bmMpOworICAgICAgcmV0dXJu
IC8qIEZ1bmNJbXBvcnQgKi9CbG9jay5fXygwLCBbQ3VycnkuXzIoXzQsIGMsIHR5cGVfKV0pOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdDQgPSBh
dGkoNCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywg
YW5vbl9mdW5jLCBiaW5kX2Z1bmMpOworICAgICAgcmV0dXJuIC8qIEZ1bmNJbXBvcnQgKi9CbG9j
ay5fXygwLCBbaW5saW5lX3R5cGUoYywgXzQsIGF0NCldKTsKKyAgICB9OworICB9LAorICBmdW5j
dGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1
cnJ5Ll8zKF8zLCBjLCBhbm9uX3RhYmxlLCBiaW5kX3RhYmxlKTsKKyAgICAgIHJldHVybiAvKiBU
YWJsZUltcG9ydCAqL0Jsb2NrLl9fKDEsIFtfNF0pOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3Vycnku
XzMoXzMsIGMsIGFub25fbWVtb3J5LCBiaW5kX21lbW9yeSk7CisgICAgICByZXR1cm4gLyogTWVt
b3J5SW1wb3J0ICovQmxvY2suX18oMiwgW180XSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5f
MyhfMywgYywgYW5vbl9nbG9iYWwsIGJpbmRfZ2xvYmFsKTsKKyAgICAgIHJldHVybiAvKiBHbG9i
YWxJbXBvcnQgKi9CbG9jay5fXygzLCBbXzRdKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgdmFyIGF0NSA9
IGF0aSg1KTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBTb3VyY2Uu
JGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIG1vZHVsZV9uYW1lICov
XzMsCisgICAgICAgICAgICAgICAgICAvKiBpdGVtX25hbWUgKi9fNCwKKyAgICAgICAgICAgICAg
ICAgIC8qIGlraW5kICovU291cmNlLiRhdCRhdChDdXJyeS5fMShfNSwgYyksIGF0NSkKKyAgICAg
ICAgICAgICAgICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChj
KSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9mdW5jLCBiaW5kX2Z1bmMpOworICAgICAg
cmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgLyog
bW9kdWxlX25hbWUgKi9fNFswXSwKKyAgICAgICAgICAgICAgICAgIC8qIGl0ZW1fbmFtZSAqL180
WzFdLAorICAgICAgICAgICAgICAgICAgLyogaWtpbmQgKi9Tb3VyY2UuJGF0JGF0KC8qIEZ1bmNJ
bXBvcnQgKi9CbG9jay5fXygwLCBbQ3VycnkuXzIoXzUsIGMsIHR5cGVfKV0pLCBhdCQxKQorICAg
ICAgICAgICAgICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICB2YXIgYXQ1ID0gYXRpKDUp
OworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25f
ZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAq
L1sKKyAgICAgICAgICAgICAgICAgIC8qIG1vZHVsZV9uYW1lICovXzRbMF0sCisgICAgICAgICAg
ICAgICAgICAvKiBpdGVtX25hbWUgKi9fNFsxXSwKKyAgICAgICAgICAgICAgICAgIC8qIGlraW5k
ICovU291cmNlLiRhdCRhdCgvKiBGdW5jSW1wb3J0ICovQmxvY2suX18oMCwgW2lubGluZV90eXBl
KGMsIF81LCBhdDUpXSksIGF0JDEpCisgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAq
LzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFu
b25fdGFibGUsIGJpbmRfdGFibGUpOworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVj
b3JkICovWworICAgICAgICAgICAgICAgICAgLyogbW9kdWxlX25hbWUgKi9fNFswXSwKKyAgICAg
ICAgICAgICAgICAgIC8qIGl0ZW1fbmFtZSAqL180WzFdLAorICAgICAgICAgICAgICAgICAgLyog
aWtpbmQgKi9Tb3VyY2UuJGF0JGF0KC8qIFRhYmxlSW1wb3J0ICovQmxvY2suX18oMSwgW181XSks
IGF0JDEpCisgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVy
biBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fbWVtb3J5LCBiaW5k
X21lbW9yeSk7CisgICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgICAgICAgICAvKiBtb2R1bGVfbmFtZSAqL180WzBdLAorICAgICAgICAgICAgICAgICAg
LyogaXRlbV9uYW1lICovXzRbMV0sCisgICAgICAgICAgICAgICAgICAvKiBpa2luZCAqL1NvdXJj
ZS4kYXQkYXQoLyogTWVtb3J5SW1wb3J0ICovQmxvY2suX18oMiwgW181XSksIGF0JDEpCisgICAg
ICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAo
YykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZ2xvYmFsLCBiaW5kX2dsb2JhbCk7Cisg
ICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAg
ICAvKiBtb2R1bGVfbmFtZSAqL180WzBdLAorICAgICAgICAgICAgICAgICAgLyogaXRlbV9uYW1l
ICovXzRbMV0sCisgICAgICAgICAgICAgICAgICAvKiBpa2luZCAqL1NvdXJjZS4kYXQkYXQoLyog
R2xvYmFsSW1wb3J0ICovQmxvY2suX18oMywgW181XSksIGF0JDEpCisgICAgICAgICAgICAgICAg
XSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Cisg
ICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAg
cmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgXzMsCisgICAgICAgICAgICBfNAorICAg
ICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVy
biBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAvKiBGdW5jRXhwb3J0ICovMCwKKyAgICAgICAgICAgICAgQ3VycnkuXzIoXzMsIGMsIGZ1bmMp
CisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICov
WworICAgICAgICAgICAgICAvKiBUYWJsZUV4cG9ydCAqLzEsCisgICAgICAgICAgICAgIEN1cnJ5
Ll8yKF8zLCBjLCB0YWJsZSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBy
ZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIE1lbW9yeUV4cG9ydCAqLzIsCisg
ICAgICAgICAgICAgIEN1cnJ5Ll8yKF8zLCBjLCBtZW1vcnkpCisgICAgICAgICAgICBdOworICAg
IH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5j
dGlvbiAoYykgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAvKiBH
bG9iYWxFeHBvcnQgKi8zLAorICAgICAgICAgICAgICBDdXJyeS5fMihfMywgYywgZ2xvYmFsKQor
ICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAy
KTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsK
KyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgdmFyIGF0NCA9IGF0aSg0KTsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF80LCBj
KTsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAg
ICAgICAgIC8qIG5hbWUgKi9fMywKKyAgICAgICAgICAgICAgICAgIC8qIGVraW5kICovU291cmNl
LiRhdCRhdChtYXRjaFswXSwgYXQ0KSwKKyAgICAgICAgICAgICAgICAgIC8qIGl0ZW0gKi9tYXRj
aFsxXQorICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9u
ICgpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKF8sIF8kMSwgXyQyKSB7CisgICAgICByZXR1cm4g
LyogW10gKi8wOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHJldHVybiBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAo
KSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoaywgY291bnQsIF8pIHsKKyAgICAgIHJldHVy
biAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisg
ICAgICAgICAgICAgICAgICAgIC8qIG5hbWUgKi9fMywKKyAgICAgICAgICAgICAgICAgICAgLyog
ZWtpbmQgKi9Tb3VyY2UuJGF0JGF0KGssIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAvKiBp
dGVtICovU291cmNlLiRhdCRhdChjb3VudCAtIDEgfCAwLCBhdCQxKQorICAgICAgICAgICAgICAg
ICAgXSwgYXQkMSksCisgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgXTsKKyAg
ICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBhbm9uX3R5cGUoYywgXzMpOworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgewor
ICAgICAgdmFyIGMkMSA9IGM7CisgICAgICB2YXIgeCA9IF8zOworICAgICAgdmFyIHR5ID0gXzQ7
CisgICAgICBpZiAoQ3VycnkuXzIoVmFyTWFwWy8qIG1lbSAqLzJdLCB4Wy8qIGl0ICovMV0sIGMk
MVsvKiB0eXBlcyAqLzBdWy8qIHRtYXAgKi8wXSkpIHsKKyAgICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgICAgICB4Wy8qIGF0ICovMF0sCisgICAg
ICAgICAgICAgICJkdXBsaWNhdGUgdHlwZSAiICsgeFsvKiBpdCAqLzFdCisgICAgICAgICAgICBd
OworICAgICAgfQorICAgICAgYyQxWy8qIHR5cGVzICovMF1bLyogdG1hcCAqLzBdID0gQ3Vycnku
XzMoVmFyTWFwWy8qIGFkZCAqLzNdLCB4Wy8qIGl0ICovMV0sIEN1cnJ5Ll8xKExpYi5MaXN0MzJb
LyogbGVuZ3RoICovMF0sIGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0pLCBjJDFbLyog
dHlwZXMgKi8wXVsvKiB0bWFwICovMF0pOworICAgICAgYyQxWy8qIHR5cGVzICovMF1bLyogdGxp
c3QgKi8xXSA9IFBlcnZhc2l2ZXMuJGF0KGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0s
IC8qIDo6ICovWworICAgICAgICAgICAgdHksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICBdKTsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBy
ZXR1cm4gQ3VycnkuXzIoXzMsIGMsIGZ1bmMpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgp
IHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBuZXdyZWNvcmQgPSBBc3Qu
ZW1wdHlfbW9kdWxlLnNsaWNlKCk7CisgICAgICBuZXdyZWNvcmRbLyogdHlwZXMgKi8wXSA9IGNb
LyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdOworICAgICAgcmV0dXJuIG5ld3JlY29yZDsKKyAg
ICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rp
b24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8xKF8xLCBjKTsKKyAgICAgIHJldHVybiBDdXJyeS5fMShf
MiwgYyk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAg
dmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0
dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMSwgYyk7Cisg
ICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIGlmIChtWy8qIGltcG9ydHMgKi84
XSAhPT0gLyogW10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsvKiBpbXBvcnRz
ICovOF0pWy8qIGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgU2NyaXB0
LlN5bnRheCwKKyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBvcnQgYWZ0ZXIg
Z2xvYmFsIGRlZmluaXRpb24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgdmFyIG5l
d3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBnbG9iYWxzICovMV0gPSAv
KiA6OiAqL1sKKyAgICAgICAgQ3VycnkuXzEobWF0Y2hbMF0sIC8qICgpICovMCksCisgICAgICAg
IG1bLyogZ2xvYmFscyAqLzFdCisgICAgICBdOworICAgICAgbmV3cmVjb3JkWy8qIGV4cG9ydHMg
Ki85XSA9IFBlcnZhc2l2ZXMuJGF0KG1hdGNoWzFdLCBtWy8qIGV4cG9ydHMgKi85XSk7CisgICAg
ICByZXR1cm4gbmV3cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIHQgPSBDdXJyeS5fMShf
MSwgYyk7CisgICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHZhciBtYXRjaCA9
IEN1cnJ5Ll8xKHQsIC8qICgpICovMCk7CisgICAgICBpZiAobVsvKiBpbXBvcnRzICovOF0gIT09
IC8qIFtdICovMCkgeworICAgICAgICB2YXIgYXQgPSBMaXN0LmhkKG1bLyogaW1wb3J0cyAqLzhd
KVsvKiBhdCAqLzBdOworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIFNjcmlwdC5TeW50
YXgsCisgICAgICAgICAgICAgIGF0LAorICAgICAgICAgICAgICAiaW1wb3J0IGFmdGVyIHRhYmxl
IGRlZmluaXRpb24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgdmFyIG5ld3JlY29y
ZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiB0YWJsZXMgKi8yXSA9IC8qIDo6ICov
WworICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgbVsvKiB0YWJsZXMgKi8yXQorICAgICAgXTsK
KyAgICAgIG5ld3JlY29yZFsvKiBlbGVtcyAqLzZdID0gUGVydmFzaXZlcy4kYXQobWF0Y2hbMV0s
IG1bLyogZWxlbXMgKi82XSk7CisgICAgICBuZXdyZWNvcmRbLyogZXhwb3J0cyAqLzldID0gUGVy
dmFzaXZlcy4kYXQobWF0Y2hbMl0sIG1bLyogZXhwb3J0cyAqLzldKTsKKyAgICAgIHJldHVybiBu
ZXdyZWNvcmQ7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Cisg
ICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
cmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMSwgYyk7
CisgICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIGlmIChtWy8qIGltcG9ydHMg
Ki84XSAhPT0gLyogW10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsvKiBpbXBv
cnRzICovOF0pWy8qIGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgU2Ny
aXB0LlN5bnRheCwKKyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBvcnQgYWZ0
ZXIgbWVtb3J5IGRlZmluaXRpb24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgdmFy
IG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBtZW1vcmllcyAqLzNd
ID0gLyogOjogKi9bCisgICAgICAgIG1hdGNoWzBdLAorICAgICAgICBtWy8qIG1lbW9yaWVzICov
M10KKyAgICAgIF07CisgICAgICBuZXdyZWNvcmRbLyogZGF0YSAqLzddID0gUGVydmFzaXZlcy4k
YXQobWF0Y2hbMV0sIG1bLyogZGF0YSAqLzddKTsKKyAgICAgIG5ld3JlY29yZFsvKiBleHBvcnRz
ICovOV0gPSBQZXJ2YXNpdmVzLiRhdChtYXRjaFsyXSwgbVsvKiBleHBvcnRzICovOV0pOworICAg
ICAgcmV0dXJuIG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5
Ll8xKF8xLCBjKTsKKyAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMpOworICAgICAgdmFyIGZ1
bmMgPSBDdXJyeS5fMShtYXRjaFswXSwgLyogKCkgKi8wKTsKKyAgICAgIGlmIChtWy8qIGltcG9y
dHMgKi84XSAhPT0gLyogW10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsvKiBp
bXBvcnRzICovOF0pWy8qIGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAg
U2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBvcnQg
YWZ0ZXIgZnVuY3Rpb24gZGVmaW5pdGlvbiIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAg
ICB2YXIgbmV3cmVjb3JkID0gbS5zbGljZSgpOworICAgICAgbmV3cmVjb3JkWy8qIGZ1bmNzICov
NF0gPSAvKiA6OiAqL1sKKyAgICAgICAgZnVuYywKKyAgICAgICAgbVsvKiBmdW5jcyAqLzRdCisg
ICAgICBdOworICAgICAgbmV3cmVjb3JkWy8qIGV4cG9ydHMgKi85XSA9IFBlcnZhc2l2ZXMuJGF0
KG1hdGNoWzFdLCBtWy8qIGV4cG9ydHMgKi85XSk7CisgICAgICByZXR1cm4gbmV3cmVjb3JkOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5j
dGlvbiAoYykgeworICAgICAgdmFyIG0gPSBDdXJyeS5fMShfMiwgYyk7CisgICAgICB2YXIgbmV3
cmVjb3JkID0gbS5zbGljZSgpOworICAgICAgbmV3cmVjb3JkWy8qIGVsZW1zICovNl0gPSAvKiA6
OiAqL1sKKyAgICAgICAgQ3VycnkuXzEoXzEsIGMpLAorICAgICAgICBtWy8qIGVsZW1zICovNl0K
KyAgICAgIF07CisgICAgICByZXR1cm4gbmV3cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFy
IG0gPSBDdXJyeS5fMShfMiwgYyk7CisgICAgICB2YXIgbmV3cmVjb3JkID0gbS5zbGljZSgpOwor
ICAgICAgbmV3cmVjb3JkWy8qIGRhdGEgKi83XSA9IC8qIDo6ICovWworICAgICAgICBDdXJyeS5f
MShfMSwgYyksCisgICAgICAgIG1bLyogZGF0YSAqLzddCisgICAgICBdOworICAgICAgcmV0dXJu
IG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsK
KyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMpOwor
ICAgICAgdmFyIHggPSBDdXJyeS5fMShfMSwgYyk7CisgICAgICB2YXIgbWF0Y2ggPSBtWy8qIHN0
YXJ0ICovNV07CisgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgICAgICB4Wy8qIGF0ICovMF0sCisgICAgICAg
ICAgICAgICJtdWx0aXBsZSBzdGFydCBzZWN0aW9ucyIKKyAgICAgICAgICAgIF07CisgICAgICB9
CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAg
ICAgbmV3cmVjb3JkWy8qIHN0YXJ0ICovNV0gPSAvKiBTb21lICovW3hdOworICAgICAgICByZXR1
cm4gbmV3cmVjb3JkOworICAgICAgfQorICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGkgPSBDdXJyeS5f
MShfMSwgYyk7CisgICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHZhciBuZXdy
ZWNvcmQgPSBtLnNsaWNlKCk7CisgICAgICBuZXdyZWNvcmRbLyogaW1wb3J0cyAqLzhdID0gLyog
OjogKi9bCisgICAgICAgIGksCisgICAgICAgIG1bLyogaW1wb3J0cyAqLzhdCisgICAgICBdOwor
ICAgICAgcmV0dXJuIG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtID0gQ3Vycnku
XzEoXzIsIGMpOworICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3Jl
Y29yZFsvKiBleHBvcnRzICovOV0gPSAvKiA6OiAqL1sKKyAgICAgICAgQ3VycnkuXzEoXzEsIGMp
LAorICAgICAgICBtWy8qIGV4cG9ydHMgKi85XQorICAgICAgXTsKKyAgICAgIHJldHVybiBuZXdy
ZWNvcmQ7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAg
dmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0
dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgXzMsCisgICAgICAgICAgICBTb3VyY2UuJGF0
JGF0KC8qIFRleHR1YWwgKi9CbG9jay5fXygwLCBbU291cmNlLiRhdCRhdChDdXJyeS5fMShfNCwg
ZW1wdHlfY29udGV4dCgvKiAoKSAqLzApKSwgYXQoLyogKCkgKi8wKSldKSwgYXQoLyogKCkgKi8w
KSkKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsK
KyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAg
ICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2
YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1
cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBfMywKKyAgICAgICAgICAgIFNvdXJjZS4kYXQk
YXQoLyogRW5jb2RlZCAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgImJpbmFy
eSIsCisgICAgICAgICAgICAgICAgICAgIF80ICsgXzUKKyAgICAgICAgICAgICAgICAgIF0pLCBh
dCgvKiAoKSAqLzApKQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICBy
ZXR1cm4gLyogTm9uZSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwor
ICAgIHJldHVybiAvKiBTb21lICovW1NvdXJjZS4kYXQkYXQoXzEsIGF0KC8qICgpICovMCkpXTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQo
LyogSW52b2tlICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgICAgXzMsCisgICAgICAg
ICAgICAgICAgICBfNCwKKyAgICAgICAgICAgICAgICAgIF81CisgICAgICAgICAgICAgICAgXSks
IGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsK
KyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAg
ICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICBy
ZXR1cm4gU291cmNlLiRhdCRhdCgvKiBHZXQgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAg
ICAgICBfMywKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8q
ICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIg
XzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4g
U291cmNlLiRhdCRhdCgvKiBBc3NlcnRNYWxmb3JtZWQgKi9CbG9jay5fXygwLCBbCisgICAgICAg
ICAgICAgICAgICBfM1sxXSwKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAg
XSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsK
KyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAg
ICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRJbnZhbGlkICovQmxvY2suX18oMSwgWwor
ICAgICAgICAgICAgICAgICAgXzNbMV0sCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAg
ICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0U29mdEludmFsaWQgKi9CbG9j
ay5fXygyLCBbCisgICAgICAgICAgICAgICAgICBfM1sxXSwKKyAgICAgICAgICAgICAgICAgIF80
CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRVbmxpbmth
YmxlICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgXzNbMV0sCisgICAgICAgICAg
ICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNz
ZXJ0VW5pbnN0YW50aWFibGUgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICBfM1sx
XSwKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICov
MCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNl
LiRhdCRhdCgvKiBBc3NlcnRSZXR1cm4gKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICAgICAg
ICBfMywKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgp
ICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4g
U291cmNlLiRhdCRhdCgvKiBBc3NlcnRSZXR1cm5OYU4gKi9CbG9jay5fXyg2LCBbXzNdKSwgYXQo
LyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZh
ciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVy
biBTb3VyY2UuJGF0JGF0KC8qIEFzc2VydFRyYXAgKi9CbG9jay5fXyg3LCBbCisgICAgICAgICAg
ICAgICAgICBfMywKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0
KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAg
ICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2
YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1
cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRFeGhhdXN0aW9uICovQmxvY2suX18oOCwgWworICAg
ICAgICAgICAgICAgICAgXzMsCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAg
IF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7
CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQWN0aW9uICovQmxvY2suX18oMiwgW18xXSks
IGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsK
KyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAg
ICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRpb24gKi9CbG9jay5fXygzLCBbXzFdKSwg
YXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAg
IHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIE1vZHVsZSAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAg
ICAgICAgICAgIF8xWzBdLAorICAgICAgICAgICAgICAgICAgXzFbMV0KKyAgICAgICAgICAgICAg
ICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIp
OworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwor
ICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIFJlZ2lzdGVyICovQmxvY2suX18oMSwgWworICAg
ICAgICAgICAgICAgICAgXzMsCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAg
IF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7
CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogTWV0YSAqL0Jsb2NrLl9fKDQsIFtfMV0pLCBh
dCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAvKiBbXSAq
LzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiA6OiAq
L1sKKyAgICAgICAgICAgIF8xLAorICAgICAgICAgICAgXzIKKyAgICAgICAgICBdOworICB9LAor
ICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBT
Y3JpcHQgKi9CbG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICBfMywKKyAgICAgICAgICAg
ICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBJbnB1
dCAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgICAg
ICAgXzQKKyAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIE91dHB1dCAq
L0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgICAgICAg
LyogU29tZSAqL1tfNF0KKyAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0
KC8qIE91dHB1dCAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAg
ICAgICAgICAgICAgLyogTm9uZSAqLzAKKyAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8w
KSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfMyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2Uu
JGF0JGF0KGxpdGVyYWwoXzIsIF8zKVsxXSwgYXRpKDMpKTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkg
eworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDAp
OworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIF8xLAorICAgICAgICAgICAgXzIK
KyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAg
ICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgIH0sCisg
IGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgIF8xLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgcmV0dXJuIFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpWzFdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgUGFyc2luZy5ZWWV4aXQsCisgICAg
ICAgICAgUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCkKKyAgICAgICAgXTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdGhyb3cgWworICAg
ICAgICAgIFBhcnNpbmcuWVlleGl0LAorICAgICAgICAgIFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApCisgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHRocm93IFsKKyAgICAgICAgICBQYXJzaW5nLllZZXhpdCwKKyAgICAg
ICAgICBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKQorICAgICAgICBdOwor
ICB9CitdOworCit2YXIgeXl0YWJsZXMgPSAvKiByZWNvcmQgKi9bCisgIC8qIGFjdGlvbnMgKi95
eWFjdCwKKyAgLyogdHJhbnNsX2NvbnN0ICoveXl0cmFuc2xfY29uc3QsCisgIC8qIHRyYW5zbF9i
bG9jayAqL3l5dHJhbnNsX2Jsb2NrLAorICAvKiBsaHMgKi8nXHhmZlx4ZmZceDA0XDBceDA0XDBc
eDA1XDBceDA1XDBceDA2XDBceDA3XDBceDA3XDBcYlwwXHRcMFx0XDBcdFwwXHRcMFx4MGJcMFxy
XDBcZlwwXGZcMFx4MGVcMFx4MTBcMFx4MTBcMFx4MTBcMFx4MGZcMFx4MGZcMFx4MTFcMFx4MTFc
MFx4MTJcMFx4MTJcMFxuXDBceDEzXDBceDEzXDBceDE0XDBceDE0XDBceDE1XDBceDE1XDBceDE2
XDBceDE2XDBceDE3XDBceDE3XDBceDE3XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBc
eDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4
XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBc
eDE4XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDFiXDBceDFhXDBceDFkXDBceDFkXDBceDFk
XDBceDFkXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFjXDBceDFjXDBc
eDFlXDBceDFlXDAgXDAhXDAhXDAhXDAhXDAiXDAiXDAiXDAjXDAjXDAjXDAjXDAlXDAlXDAmXDAm
XDBcJ1wwXCdcMClcMClcMCpcMCpcMCpcMCtcMCtcMCxcMCxcMCxcMCxcMCxcMC1cMC1cMC1cMC1c
MC1cMC1cMC5cMC9cMC9cMC9cMC9ceDAwMFwwKFwwKFwwJFx4MDAxXHgwMDFceDAwMlx4MDAzXHgw
MDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwNFx4MDA0
XHgwMDVceDAwNVx4MDA2XHgwMDZceDAwOFx4MDA4XHgwMDhceDAwOFx4MDA4XHgwMDhceDAwOFx4
MDA4XHgwMDhceDAwOVx4MDA5XHgwMDlceDAwOVx4MDA5XDA7XDA7XDA6XDA6XDA6XDA6XDA8XHgw
MDdceDAwN1wwXHgwMVwwXHgwMlwwXHgwM1wwXDBcMFwwXDBcMFwwJywKKyAgLyogbGVuICovIlx4
MDJcMFwwXDBceDAyXDBcMFwwXHgwMlwwXHgwMVwwXHgwMVwwXHgwNFwwXHgwNFwwXDBcMFx4MDVc
MFx4MDVcMFx4MDZcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDRcMFx4MDFcMFx4MDFcMFx4
MDFcMFx4MDFcMFx4MDFcMFwwXDBceDAyXDBcMFwwXHgwMVwwXHgwMVwwXDBcMFx4MDFcMFwwXDBc
eDAxXDBcMFwwXHgwMVwwXDBcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4
MDJcMFx4MDJcMFx4MDNcMFx4MDFcMFx4MDJcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDJc
MFx4MDJcMFx4MDJcMFx4MDJcMFx4MDNcMFx4MDNcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDFcMFx4
MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDVcMFx4MDVcMFx4MDVcMFxiXDBceDAyXDBceDAzXDBc
eDAyXDBceDAzXDBceDAzXDBceDA0XDBcYlwwXHgwNFwwXHRcMFx4MDVcMFx4MDNcMFx4MDJcMFww
XDBceDAyXDBcMFwwXHgwMlwwXHgwMVwwXHgwMVwwXHgwNVwwXHgwNVwwXHgwNlwwXHgwMVwwXHgw
NVwwXHgwNlwwXHgwN1wwXHgwNlwwXHgwNlwwXHgwNVwwXHgwNFwwXHgwMVwwXHgwNlwwXHgwNVww
XHgwNlwwXG5cMFx4MDZcMFx4MDVcMFx4MDZcMFx0XDBcYlwwXHgwN1wwXHgwNlwwXHgwNVwwXHgw
NVwwXHgwNVwwXHgwNVwwXHgwNVwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlww
XHgwNVwwXHgwNFwwXHgwNFwwXHgwNFwwXHgwNFwwXHgwNVwwXDBcMFx4MDFcMFx4MDRcMFx4MDRc
MFx4MDVcMFx4MDRcMFwwXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAy
XDBceDAyXDBceDAyXDBceDAyXDBceDA1XDBceDA2XDBcMFwwXHgwMVwwXHgwNlwwXHgwNVwwXHgw
NVwwXHgwNVwwXHgwNVwwXHgwNVwwXHgwNVwwXHgwNVwwXHgwNFwwXHgwNVwwXHgwNVwwXHgwMVww
XHgwMVwwXHgwMVwwXHgwNVwwXHgwMVwwXDBcMFx4MDJcMFx4MDVcMFx4MDVcMFx4MDVcMFx4MDRc
MFx4MDRcMFwwXDBceDAyXDBceDAyXDBceDAxXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDAiLAor
ICAvKiBkZWZyZWQgKi8iXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhZlwwXHhhMFwwXHg5ZVww
XHg5ZlwwXDBcMFx4YTJcMFwwXDBceGIwXDBceGFkXDBcMFwwXHhiMVwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YTRcMFx4
YWNcMFx4YWVcMFx4OTJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDFcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXHg5YlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGE4XDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODlcMFx4OGFcMFx4ODdcMFx4OGJc
MFx4ODhcMFx4ODZcMFx4OGRcMFx4OGVcMFx4ODVcMFx4OGNcMFx4OGZcMFx4YTVcMFx4YTFcMFww
XDBceDk0XDBceDk1XDBceDk2XDBceDk3XDBceDk4XDBcMFwwXHg5YVwwXHhhYlwwXHg5OVwwXHg5
Y1wwXHg5ZFwwXHhhNlwwXHhhN1wwXHgwMlwwXHg5MFwwXHgxYlwwXHgxYVwwXDBcMFx4MTVcMFx4
MTZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwYVwwXDBcMFwwXDBcMFwwXHgwMVww
XDBcMFwwXDBceDkzXDBceDEyXDBceDEzXDBceDE0XDBcMFwwXDBcMChcMC9cMFwwXDBcMFx4MDAw
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAsXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMD1cMD5cMDxcMD9cMCdceDAwOFx4MDA5XDA7XDBcMFwwXDBcMCRcMCVcMCZcMFlcMFwwXDBV
XDBcMFwwXDBcMFx4ODNcMFwwXDBceDgxXDBcMFwwXHgwNlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
eDdmXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBceDAxXDBcMFwwXDBcMFwwXDBcMFwwXHhhOVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXHgxZFwwXDBcMFwwXDBcMFwwKVwwKlwwXDBcMC1cMC5ceDAwMVx4MDAyXHgwMDNceDAwNFx4
MDA1XDAhXDBcMFwwXDBcMDpcMFwwXDBcMFwwXDBcMFFcMF9cMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXHg4MlwwXDBcMFRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwNVwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwRlwwRVwwXDBcMFx4MThcMGNcMFx4MDFcMFww
XDBceDBlXDBcMFwwXDBcMFwwXDBnXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDB9XDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwK1wwI1x4MDA2XHgw
MDdcMF1cMFwwXDBeXDBcMFwwXDBcMHRcMHNcMFxiXDBcMFwwbFwwXDBcMHdcMFx4MTBcMFwwXDBk
XDBcclwwdVwwR1wwXDBcMEhcMGBcMFNcMGJcMFwwXDBceDAxXDBoXDB2XDBmXDBcMFwwXDBcMFww
XDBcMFwwclwwXDBcMFwwXDBcMFwwXDBcMFx4MTFcMFx4MDRcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFx4ODBcMERcMFwwXDBcMFwwXDBcMFwwXDBcXFwwXDBcMFwwXDBcMFwwXHgwN1wwa1wwXDBc
MFwwXDBcMFwwSVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwweVwwfFwwelwwe1wwV1wwXDBcMFww
XDBWXDBaXDBcMFwweFwwXHgxZlwwQFwwQlwwXDBcMEFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBqXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBYXDBbXDBcMFwwXHgwYlwwXDBcMFxuXDBc
MFwwXDBcMFwwXDBOXDBpXDBuXDBtXDBxXDBvXDBwXDBcMFwwXGZcMGVcMFwwXDBcMFwwQ1wwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwSlwwXDBcMExcMCIsCisgIC8qIGRnb3RvICovJ1x4MDRcMFx4
MDZcMFxyXDBceDEwXDBWXHgwMDFceDAxXGZceDAxXHhjNFwwXHg4NVwwXHhmZlwwXHg3ZlwwXHJc
eDAxXHgwZVx4MDFceDFkXHgwMVx4YjRcMFx4ZDJcMFx4OTZcMFx4ZDNcMFx4ODBcMFx4ZTVcMFx4
ODhceDAxXHhmM1x4MDA3XHgwMVx4YjVcMFx4YjZcMFx4YjdcMFx4YjhceDAwMlx4MDFceGI5XDBc
eGQwXDBceDE1XHgwMXVceDAxXHgwNlx4MDFceGJhXDBceGJiXHgwMDlcMFx4YmNcMFx4OGNcMDpc
MDtcMFx4YzlcMDxcMD1cMD5cMCJceDAxP1wwXHhiZFwwXHhkY1wwQFwwQVwwQlwwQ1wwXHgwN1ww
JVwwXGJcME1cMFx0XDBcblwwXHgwYlwwXGZcME5cMCcsCisgIC8qIHNpbmRleCAqLydceGQ0XDBc
eDE3XHhmZlx4MTdceGZmLlx4ZmZcMFwwYVx4ZmZcMFwwXDBcMFwwXDBcMFwwXHgxN1x4ZmZcMFww
QFwwXDBcMFwwXDAiXHhmZlwwXDBsXDBpXHhmZmlceGZmd1x4ZmZpXHhmZmlceGZmLlx4ZmYuXHhm
Zi5ceGZmLlx4ZmZwXHhmZnBceGZmflx4ZmZwXHhmZmlceGZmaVx4ZmZcMFwwXDBcMFwwXDBcMFww
XHhhYlx4ZmZceDE3XHhmZmlceGZmXHg5Mlx4ZmZceGFjXHhmZlx4YzlceGZmXHhkOVx4ZmZceGY2
XHhmZlx4ZjlceGZmXGZceGZmXHhhMVx4ZmZceGFmXHhmZlx4ZmNceGZlXHhmYlx4ZmZceGZlXHhm
Zlx4MTVcMFx4MWNceDAwMVx4ZmZcMFwwXHgxN1wwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHgx
ZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHhiMVx4ZmZceGI2XHhmZlx4MTFcMFx4
YTFceGZmLVx4MDA3XDA9XDA/XDBEXDAvXDBKXDBceGExXHhmZlwwXDBLXDBTXDBkXDBlXDBuXDBc
MFwwW1x4ZmZSXDBceGI3XHhmZlx4YzZceGZmUlwwUlwwXHg4Zlx4ZmZSXDBceDhmXHhmZnZcMHdc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDB5XDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFx4MGJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXHgxNlx4MDJcMFwwXDBcMHpcMFZcMFx4OGFcMFx4OTVcMFx4ZTlceGZmXHg5
N1wwV1x4MDNceDk4XDBcMFwwXHhiN1x4ZmZceDk5XDBceDk4XDBcMFwwXHg5YlwwXHhhMVwwXDBc
MFwwXDBcMFwwXDBcMFx4YmJcMFx4ZDRceDAyXDBcMFwwXDBSXDBSXDBcMFwwUlwwXHhiN1x4ZmZc
eGI3XHhmZlx4YjdceGZmXHhiN1x4ZmZceGI3XHhmZlwwXDBceGI3XHhmZlx4YjdceGZmXHhiN1x4
ZmZceGI3XHhmZlx4YjdceGZmXHhhNVwwXHhhNVwwXHgwYlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDA8XHgwMmJceDAyXDBcMFwwXDBcMFwwXDBcMFx4YmRcMFwwXDBceDg4XHgwMlx4
YmZcMFwwXDBceGM3XDBcMFwwXHhkN1wwXDBcMFxyXHhmZmJceDAyXHhlZFx4ZmZceGVkXHhmZlx4
Y2RceGZmXDBcMHVceGZmXHhlYVwwUlwwUlwwUlwwYlx4MDJceGUzXDBceGU0XDBceGI3XHhmZlx4
YjdceGZmXHhlY1wwXHg5OFx4ZmZceGZlXDBceGVhXDBceGVhXDBcMFwwXHg3Zlx4ZmZcYlx4MDFc
eGZlXHhmZVx0XHgwMVwwXDBceGI3XHhmZlx4MTJcMFx4ZTdcMFx4MTJcMFx4MGVceDAxXHgxMFx4
MDFcMFwwXHhlN1wwXHhlN1wwXHhlN1wwXDBcMFwwXDBceGI3XHhmZlwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXHhmYVwwXHhmYVwwXDBceDAwMVx4MDMjXHgwMVx4ZWZceDAzXDBcMFww
XDBceDBiXHgwMzxceDAyLVx4MDFceGU3XHhmZi5ceDAxL1x4MDFceDk5XHhmZjBceDAxXDBcMDxc
eDAxXDBcMElceDAxVVx4MDFiXHgwMlRceDAxXlx4MDFcMFwwV1x4MDFvXHgwMVtceDAxeVx4MDFc
eGU3XDBceGU3XDBceGU3XDB6XHgwMVx4ZTNcMFwwXDBcMFwwe1x4MDFcMFwwXDBcMFwwXDBQXHgw
MVwwXDBceDgyXHgwMVx4ODRceDAxXHhhOVx4ZmZcMFwwZFx4ZmZceDg1XHgwMVx4YjdceGZmXHhi
N1x4ZmZceGI3XHhmZlx4YjdceGZmXDBcMFx4OTVceDAxXHhlN1wwXHg5Zlx4MDFiXHgwMVx4YTBc
eDAxXHhhMVx4MDFceGE2XHgwMVx4YWFceDAxXHhhYlx4MDFiXHgwMlx4YjdceDAxXHhlNlx4ZmZc
eGMxXHgwMVwwXDBcMFwwXDBcMFwwXDBcMFwwXHhjNlx4MDFcMFwwXHgxMlwwXHhlN1wwXDBcMFww
XDBcMFwwXHhjN1x4MDFcMFwwXHhjOFx4MDFcMFwwXDBcMFx4ODBceDAxXDBcMFwwXDBcMFwwXDBc
MFx4Y2ZceDAxXDBcMFwwXDBcMFwwXDBcMFx4YWRceGZmXDBcMFwwXDBcMFwwXDBcMFJcMFJcMFJc
MFJcMFwwXDBceGQwXHgwMVx4ZDFceDAxXHhlMVx4MDFceGViXHgwMVwwXDBcMFwwPFx4MDJceGVj
XHgwMVx4YWVceDAyXHhhZVx4MDJceGVkXHgwMVx4ZWVceDAxXDBcMFwwXDBSXDBSXDBSXDBSXDBc
MFwwXHhmNlx4MDFceGY0XHgwMVx4ZjdceDAxXDBcMFwwXDBceGI3XHhmZn1ceDAzXGJceDAyXDBc
MFx4MTFceDAyXHhiYlx4ZmZceGJmXDBceGVkXHhmZlx4ZWFcMFx4ZWFcMFwwXDBcMFwwXDBcMFww
XDBcMFwwPFx4MDJceGEzXHgwM1wwXDBcMFwwXHhhZVx4MDJcMFwwXDBcMFwwXDBcMFwwYlx4MDJc
MFwwXHhjN1wwXHgxMlx4MDJceGM3XDBceDEzXHgwMmJceDAyXHhjOVx4MDNceGUzXDBcMFwwXHgx
NFx4MDJceDFhXHgwMlx4MWNceDAyXHgxZFx4MDItXHgwMjdceDAyXDBcMFwwXHgwMDRceDAyXDBc
MFx4YzdcMFwwXHgwMDlceDAyOlx4MDJiXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBS
XDBcMFwwXDBcMFx4MTdceDAyQFx4MDJcMFx4MDA1XHgwMkNceDAyYlx4MDJMXHgwMl1ceDAyYlx4
MDJcMFwwXlx4MDJcMFwwJywKKyAgLyogcmluZGV4ICovIlwwXDBNXHgwM1wwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXHgwMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcME9ceGZm
XHgxNFwwXDBcMHdcMHdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwd1wwXHhjMlx4
ZmZcMFwwXDBcMFwwXDBcMFwwX1x4MDJgXHgwMmZceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMGhceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwX1x4MDJfXHgwMl9c
eDAyX1x4MDJfXHgwMl9ceDAyX1x4MDJfXHgwMl9ceDAyX1x4MDJcMFwwXDBcMFwwXDBoXHgwMlww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBoXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwflx4MDFcMFwwXDBcMFx4ZjJceGZmaFx4ZmZcMFwwKVx4ZmZcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwaVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg4M1x4ZmZcMFwwXDBcMFww
XDB5XHgwMmtceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwTVwwXHgxNlwwXDBcME1cMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXHg5YVwwXHg5YVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4
MDJ0XHhmZlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGlceDAyXHg4M1x4MDJcMFwwXHg4M1x4MDJc
MFwwXDBcMFwwXDBcMFwwaVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBzXDBceGYzXHhmZnNc
MGlceDAyXHg4NFx4MDJcMFwweVx4MDJceGMwXDBcMFwwXDBcMFx4OGVceDAyXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg4Nlx4MDJceDg2XHgwMlx4ODZceDAyXDBcMFwwXDBc
MFwwXHhhNFx4MDFYXHgwMVx4YTRceDAxXDBcMFwwXDBceGMwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFx4ZTZcMFx4ZTZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBpXHgw
MlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4MDJcMFwwXHhm
N1x4ZmZcMFwwXDBcMFwwXDBcMFwwXDBcMFx4Y2FceDAxXHg4OVx4MDJceGNhXHgwMVwwXDBceDg0
XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXGZceDAxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMHRceGZmXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODZceDAy
XHg4Nlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMDxcMFx4ZjJceGZmXHg5
NVx4MDJceDk1XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBpXHgwMlwwXDBpXHgwMmlc
eDAyXDBcMFwwXDBcMFwwXDBceDAwMlx4MDEyXHgwMVx4ZjBceDAxMlx4MDFcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDB5XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXHg4M1x4MDJcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMGlceDAyXDBcMFwwXDBcMFwwaVx4MDJcMFwwXDBcMFwwXDBcMFww
XHg4YVx4MDJcMFwwXHg4M1x4MDJcMFwwXHg4M1x4MDJcMFwwaVx4MDJcMFwwXHhhZlx4ZmZcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODNceDAyXDBcMFwwXDBc
MFwwaVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDAyXHgwMVwwXDBcMFwwXHg4Zlx4
MDJcMFwwXDBcMFwwXDBceDlmXHgwMmlceDAyXDBcMFwwXDBpXHgwMlwwXDBcMFwwXDBcMCIsCisg
IC8qIGdpbmRleCAqLyJcMFwwXDBcMFwwXDBcMFwweFx4ZmZEXHhmZlx4YTVceDAyUVx4ZmYuXHgw
M0ZceGZmXHhhN1x4ZmZHXHhmZkhceGZmM1x4ZmZMXHhmZlx4YmNceGZmXG5ceDAzUFx4ZmZceGIy
XHhmZlx4ODBceGZmXHhiZFx4ZmVcZlx4MDNceGM0XHgwMlwwXDBceDgyXHhmZlwwXDBceGE2XHhm
ZlZceGZmTlx4ZmZcMFwwXHhhOFx4MDJcMFwwQlx4ZmZSXHhmZlx4Y2FceGZlXDBcMFx4Y2FceGZm
XHhiNVx4ZmZcMFwwXDBceDAwMlx4MDNcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ZTNceGZmXDBcMFww
XDBcMFwwXDBcMFx4YWNcMHRcMFx4OTZcMFx4YmVcMFx4ZjBceGZmXDBcMFx4YmNceDAzXDBcMCFc
MFwwXDAiLAorICAvKiB0YWJsZXNpemUgKi8xMzM1LAorICAvKiB0YWJsZSAqLydceDg2XDBceGEz
XDBceDhiXDBceGY5XDBceDhiXDBceDAyXHgwMVx4ZjdcMFx4ZDlcMFx4ZmNcMFwwXHgwMVx4MWVc
eDAxXHhjZlwwXHg4N1wwXHg4OFwwXHhmZFwwXHg4ZFwwXHgxM1x4MDFceDBmXHgwMVx4MDVceDAx
XHg4ZlwwXHg4M1wwXHgwNFx4MDFcYlx4MDFcdFx4MDFceDhhXDBceGNmXDBceDhlXDBceGU2XDBc
eDA1XHgwMVx4ZTdcMFx4MWNceDAxXHgxY1x4MDFceDA1XDBceDE3XHgwMVx4MThceDAxKlx4MDEs
XHgwMS1ceDAxXHg4OVx4MDFceDhhXHgwMVx4OGJceDAxI1x4MDFceDE5XDAhXDBceDgzXHgwMVx4
ODRceDAxXHgxMlwwJFx4MDFceDhiXDAlXHgwMVx4MTlcMCZceDAxXHg4YlwwVFwwblwwXHgwZlww
XHgxNVwwXHgxNlx4MDA1XHgwMVVceDAwM1x4MDE0XHgwMXZcMFx4ZDFcMCJcMFx4ZTRcMFx4ZTRc
MFx4ZDhcMFx4ZTRcMFx4ZTJcMFx4ZTNcMERcMFx4MTVcMFx4MTZcMENceDAxXHgxMFx4MDFceDEx
XHgwMVx4MTJceDAxOlx4MDFceDliXHgwMVx4MWZceDAxXHhjNVwwXHhjOFwwXHg5MVwwXHgxMlww
S1x4MDFceDA1XHgwMVx4ZDVcMFx4OTFcMFx4OTFcMFx4ZThcMFx4ZTlcMFx4ZWFcMFx4ZWJcMFx4
ZWNcMHxcMFx4ZWRcMFx4ZWVcMFx4ZWZcMFx4ZjBcMFx4ZjFcMH1cMEpceDAxXHhhZlx4MDFMXHgw
MVx4MTlcMFx4YzZcMFx4Y2FcMCNcMF9ceDAxJFwwXHgxOVwwXHhkN1wwXHgxOVwwXHhlNFwwXHhl
NFwwXHhlNFwwXHgxNFx4MDFcblx4MDFceDExXDBceGNmXDAuXDBceGNmXDBcJ1wwXHgwYlx4MDFc
eGNmXDBQXDBnXHgwMW1ceDAxb1x4MDFQXDB8XDB+XDBQXDArXHgwMTFcMC5ceDAxIFx4MDF+XDAq
XDArXDAsXDAtXDBVXHgwMVx4ODFceDAwMlwwUFx4MDFceDEyXDBceDgyXDBWXHgwMUZcMFdceDAx
XHg4OVwwWFx4MDEoXHgwMVx4MTNcMFx4MTRcMFx4MTVcMFx4MTZcMFx4MTdcMFx4MThcMFx4MTlc
MFx4MWFcMFx4MWJcMFx4MWNcMFx4MWRcMFx4MWVcMFx4MWZcMCBcMCZcMExcMChcMClcMHxcMFx4
OTlceDAxN1wwR1wwfFwwXHg4MFx4MDFUXHgwMThceDAwNVx4MDA2XDB2XHgwMVx4ODFcME9cMFx4
MTRceDAxa1wwXHg4MlwwRVwwXHg5NVx4MDF8XDBsXDBceDk4XHgwMVx4OGZceDAxXHgxY1x4MDFc
eDk2XHgwMVx4OTRceDAxXHg5MVwwPFx4MDE9XHgwMXdceDAxXHg5N1x4MDF+XDBceDkxXDBIXDBc
eDFhXHgwMVx4ODRcMFx4ZTJcMFx4ZTNcMFx4OWRceDAxXHg5YVx4MDFceDlmXHgwMVx4MDFcMFx4
MDJcMFx4MDNcMFx4OWNceDAxL1x4MDAwXHgwMDNceDAwNFwwSVwwXHhhMVx4MDFaXHgwMVtceDAx
XFxceDAxXVx4MDFuXHgwMVx4YWJceDAxYVwwYlwwY1wwZFwwZVwwZlwwZ1wwaFwwaVwwalwwXHhj
MlwwXHhhZVx4MDF0XHgwMVx4YzNcMFx4YzJcMGlceDAxXHhjZlwwXHgwN1x4MDFqXHgwMVx4MTlc
MFx4MWNcMEpcMFx4MTlcMFx4MWNcMEtcMFx4MGZcMFBcMFx4YjRceDAxXHgwZlwwUVwwXHhiN1x4
MDFceGNmXDBceGUyXDBceGUzXDB4XHgwMXlceDAxelx4MDF7XHgwMVx4YTNcMFx4OTNcMFx4OTRc
MFx4OTVcMFx4ODdceDAxXHg4N1x4MDFceDg3XHgwMVx4ODdceDAxXHhjZlwwXHhkZVwwPFx4MDE9
XHgwMX5cMClceDAxUlwwXHg5Mlx4MDFtXDBceDFjXDBceDkxXDBceDkxXDBceDFjXDBTXDBceDFj
XDBceDFjXDBceDFjXDBceDFjXDBceDFjXHgwMDhcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4
MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNc
MFx4MWNcMFx4MWNcMG9cMFx4YTNceDAxXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgx
Y1wwXHgxY1wwXHgxY1wwcFwwV1wwWFwwWVwwXHgxOVwwXHgxOVwwcVwwWlwwclwwW1wwXFxcMF1c
MF5cMHNcMF9cMGBcMFx4ODdceDAxdFwwXHgxY1wwdVwwd1wwXHgxY1wwflwwXHgxY1wwXHgxY1ww
XHgxY1wwXHgxY1wwXHgxY1wweFwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1ww
XHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgx
Y1wweVwwelwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1ww
e1wwXHgxY1wwXHg5MFwwXHg5MVwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHhiZlww
XHgxY1wwXHg5MlwwXHhiZVwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgx
Y1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHhjMFww
XHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHg4
NFwwXHhkYVwwXHhjN1wwXHg4OVwwXHhkNFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwXHhkYlwwIFww
IFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwXHgxY1wwIFwwIFww
IFwwIFwwIFwwIFwwIFwwIFwwIFwwXHhkZFwwXHhmMlwwXHhmYVwwXHhmZVwwXHgxN1wwXHgxN1ww
XHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgwMVx4MDFceDE3XDBceDE3XDBceDE3XDBc
eDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3
XDBceDE3XDBceDE3XDBceDE3XDBceDAzXHgwMSBcMFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdcMFx4
MTdcMFx4MTdcMFx4MTdcMFx4MTdcMFxuXHgwMVx4ZjhcMClceDAxXHgxNlx4MDEiXDAiXDAiXDAi
XDAiXDAiXDAiXDBceDE5XHgwMSJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJc
MCJcMCJcMCJcMFx4MWJceDAxXHgxN1wwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIVx4MDEvXHgw
MVwnXHgwMTBceDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1x4MDA2
XHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNc
MFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNceDAwOVx4MDEiXDBceDAz
XDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDA7XHgwMT5ceDAxP1x4
MDFAXHgwMVx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMEFceDAxXHgx
ZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVww
XHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwQlx4MDFceDAzXDBceDFlXDBceDFl
XDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDA0XHgwMURceDAxRVx4MDFG
XHgwMVx4MDNcMFx4MGJceDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwYVx4MDFceDAz
XDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBHXHgwMVx4MWVcMFx4MDNcMFx4MDNc
MFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMElceDAxTVx4MDFPXHgwMVFceDAx
XHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwUlx4MDFceDE5XDBTXHgwMVlceDAxXHgxOVww
XHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgx
OVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXlx4MDFceDAzXDBceDE5XDBceDE5XDBceDE5XDBc
eDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBgXHgwMWJceDAxY1x4MDFkXHgwMVx4MDNcMGVc
eDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwclx4MDFmXHgwMVx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNc
MFx4MDNcMFx4MDNcMFx4MDNcMGhceDAxXHgxOVwwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgw
M1wwXHgwM1wwXHgwM1wwXHgwM1wwa1x4MDFsXHgwMXBceDAxcVx4MDFceDAzXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDBzXHgwMVx4MDNcMHxceDAxfVx4MDFceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBc
eDAzXDBceDAzXDB+XHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNc
MFx4MDNcMFx4MDNcMFx4N2ZceDAxXHg4MVx4MDFceDg1XHgwMVx4ODZceDAxXHgxZVwwXHg4ZFx4
MDFceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDhjXHgwMVx4OGVceDAxXHgxZVwwXHgx
ZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVww
XHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHg5MVx4MDFceDAzXDBceDFlXDBceDFlXDBceDFlXDBc
eDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDkzXHgwMVx4OWVceDAxXHhhMFx4MDFceGE0
XHgwMVx4OTdcMFx4YjBceDAxXHg5OFwwXHg5OVwwXHg5YVwwXHhhNVx4MDFceDliXDBceGE2XHgw
MVx4YTdceDAxXHg5Y1wwXHg5ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1ww
XHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhhYVwwXHhhOFx4MDFceDFlXDBc
eGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBceGE5XHgwMVx4
YWFceDAxXHhhY1x4MDFceGFkXHgwMVx4ZjZcMFx4YjJceDAxXHg5OFwwXHg5OVwwXHg5YVwwXHhi
MVx4MDFceDliXDBceGIzXHgwMVx4YTNcMFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4
YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFc
MFx4YjVceDAxXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVww
XHhiMlwwXHhiNlx4MDFceGI4XHgwMVx4ODRcMFx4YTNcMFx4ZjhcMH5cMFx4OThcMFx4OTlcMFx4
OWFcMFx4OTFcMFx4OWJcMFx4YWFcMFBcMFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4
YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFc
MFx4MTdcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4
YjJcMFx0XDBSXDBceDdmXDBceDAzXDBceGZiXDBceDAzXDBceDk4XDBceDk5XDBceDlhXDBceDE5
XDBceDliXDBQXDBLXDBceDljXDBceDlkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBc
eGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBNXDBceGIzXDBc
eGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBIXHgwMVx4YzFc
MFx4ZjVcMFx4ZjRcMFx4ODJceDAxOFx4MDFceDk4XDBceDk5XDBceDlhXDBOXHgwMVx4OWJcMFx4
MGVcMFx4ZDZcMFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNc
MFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBceGFi
XDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBceGNk
XDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBc
eGE3XDBceGE4XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVww
XHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBceGRlXDBceGRmXDBceGUwXDBceGUxXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhlMlwwXHhlM1wwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFx4YjNcMFx4OWNc
MFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVcMFx4
YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBcMFwwXHhhYlwwXHhhY1wwXHhhZFwwXHhh
ZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBceGRlXDBceGRmXDBceGUwXDBceGUx
XDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBceGNkXDBceDllXDBc
eDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4
XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhi
MFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBcMFwwXHhkZlwwXHhlMFwwXHhlMVwwXHg5OFwwXHg5OVww
XHhjYlwwXDBcMFx4Y2NcMFwwXDBcMFwwXHg5Y1wwXHhjZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhh
MVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhhYVww
XDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4YjJc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4OThcMFx4OTlcMFx4Y2JcMFwwXDBceGNjXDBceDkw
XHgwMVx4Y2VcMFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNc
MFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBceGFi
XDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBceGNk
XDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBc
eGE3XDBceGE4XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVww
XHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGUxXDBceDk4XDBc
eDk5XDBceGNiXDBcMFwwXHhjY1wwXHhhMlx4MDFcMFwwXHg5Y1wwXHhjZFwwXHg5ZVwwXHg5Zlww
XHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhh
OVwwXHhhYVwwXDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4
YjFcMFx4YjJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4OThcMFx4OTlcMFx4Y2JcMFwwXDBc
eGNjXDBcMFwwXDBcMFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4
YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBc
eGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YjNcMCcs
CisgIC8qIGNoZWNrICovIllcMFwwXDBcXFwwXHhiNVwwXlwwXHhiZlwwXHhiNFwwXHg4ZlwwXHhi
Y1wwXHhiZFwwXHhkN1wwXHg4OVwwWlwwW1wwXHhiY1wwXVwwXHhjZVwwXHhjYVwwXHhjNFwwXlww
WFwwXGJceDAxXHhjNVwwXHhjNlwwXFxcMFx4OTdcMF5cMFx4OWJcMFx4Y2VcMFx4OWRcMFx4ZDZc
MFx4ZDdcMFx0XHgwMVx4ZDFcMFx4ZDJcMFx4ZGZcMFx4ZTBcMFx4ZTFcMGlceDAxalx4MDFrXHgw
MStceDAxXHgwMVx4MDFcblwwYlx4MDFjXHgwMTJceDAxMVx4MDFceDhhXHgwMDNceDAxXHRceDAx
NVx4MDFceDhlXDBceDA0XHgwMUZcMFx0XHgwMTxceDAxPVx4MDFceGVhXDBcblx4MDFceGU2XDBc
eGU3XDBOXDBceDhhXDBcMFwwXHg5YVwwXHg5YlwwXHg4ZVwwXHg5ZFx4MDA4XHgwMTlceDAxJlww
PFx4MDE9XHgwMVxiXHgwMVx4Y2JcMFx4Y2NcMFx4Y2RcMFx4ZmNcMFx4ODVceDAxXHhkOFwwXHg4
N1wwXHg4OFwwXHgwNFx4MDEyXHgwMVx4MTFceDAxXGJceDAxXHg4ZFwwXHRceDAxXG5ceDAxXHg5
ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHgwNFx4MDFceGE0XDBceGE1XDBceGE2XDBceGE3
XDBceGE4XDBcblx4MDFceDEwXHgwMVx4YWFceDAxXHgxMlx4MDFceDAxXHgwMVx4ODdcMFx4ODhc
MFwwXDApXHgwMVx4MDVceDAxXHgwN1x4MDFceDhkXDBcdFx4MDFceGNiXDBceGNjXDBceGNkXDBc
eGNmXDBceDAxXHgwMVx4MDNcMFx4ZjZcMFx0XHgwMVx4ZjhcMFx4MDRceDAxXHgwN1x4MDFceGZi
XDBcblx4MDExXHgwMTxceDAxPVx4MDFceDBlXHgwMVx4MDRceDAxXHgwMVx4MDFceDExXHgwMVx4
ZGZcMFx0XHgwMVx4ZTFcMFxuXHgwMVx4MDdceDAxXHgxN1wwXHgxOFwwXHgxOVwwXHgxYVwwK1x4
MDFceDAxXHgwMVx4MWRcMFx4MWFceDAxMlx4MDFceDA1XHgwMTFceDAxXHgwNFx4MDEzXHgwMVx0
XHgwMTVceDAxXHhkZVwwOlx4MDE7XHgwMTxceDAxPVx4MDE+XHgwMT9ceDAxQFx4MDFBXHgwMUJc
eDAxQ1x4MDFEXHgwMUVceDAxRlx4MDFHXHgwMVx4MTNcMFx0XHgwMVx4MTVcMFx4MTZcMFx4MDRc
eDAxe1x4MDFceDA0XHgwMVx4MDRceDAxXHgwNFx4MDFgXHgwMVxuXHgwMVx0XHgwMVx4MWZcMCBc
MFxuXHgwMVx4MDFceDAxXG5ceDAxXHgxNFx4MDFcblx4MDFceDA1XHgwMSdcMHhceDAxXHgwNFx4
MDFcblx4MDF6XHgwMXJceDAxe1x4MDF4XHgwMVxuXHgwMVx4MDRceDAxLlx4MDEvXHgwMVFceDAx
eVx4MDFceDA1XHgwMVxuXHgwMVx4MDRceDAxNlx4MDFcdFx4MDE4XHgwMTlceDAxXHg4Y1x4MDFc
eDgxXHgwMVx4OGVceDAxXHgwMVwwXHgwMlwwXHgwM1wwXHg4YVx4MDFceDFiXDBceDFjXDBceDFk
XDBceDFlXDBceDA0XHgwMVx4OTBceDAxI1x4MDEkXHgwMSVceDAxJlx4MDE8XHgwMVx4OWVceDAx
OVwwOlwwO1wwPFwwPVwwPlwwP1wwQFwwQVwwQlwwXHgwNlx4MDFceGEyXHgwMUtceDAxXHRceDAx
XHgwNlx4MDFceDBlXHgwMXNceDAxXHRceDAxXHgxMVx4MDFceDA2XHgwMVx4MDZceDAxXHgwNFx4
MDFcdFx4MDFcdFx4MDFceDA0XHgwMVx4MDdceDAxXHgwNFx4MDFceGIyXHgwMVxuXHgwMVx4MDRc
eDAxXHhiNVx4MDFceDgyXHgwMThceDAxOVx4MDFVXHgwMVZceDAxV1x4MDFYXHgwMVxuXHgwMVx4
MDFceDAxXHgwMlx4MDFceDAzXHgwMWhceDAxaVx4MDFqXHgwMWtceDAxXHg5MVx4MDEtXHgwMS5c
eDAxL1x4MDFceDA1XHgwMVx4MDZceDAxXHgwNFx4MDF0XHgwMVxuXHgwMVx4MDZceDAxXHRceDAx
XG5ceDAxXHRceDAxXHgwNFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFc
dFx4MDFceDExXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3
XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVc
eDAxXHgxZlx4MDEgXHgwMVxuXHgwMVx4OTJceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShc
eDAxKVx4MDEqXHgwMVxuXHgwMStceDAxLFx4MDEtXHgwMVx0XHgwMVxuXHgwMVxuXHgwMTFceDAx
XG5ceDAxM1x4MDE0XHgwMTVceDAxNlx4MDFcblx4MDE4XHgwMTlceDAxXHhhYVx4MDEjXHgwMVx4
MDZceDAxXG5ceDAxXG5ceDAxXHRceDAxXHgwNVx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVc
eDAxXHgwZlx4MDFcblx4MDFIXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgx
Nlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFk
XHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMVxuXHgwMSNceDAxJFx4MDElXHgwMSZceDAx
J1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFceDA2XHgwMVx4MDRceDAxXHgwNFx4MDFcdFx4MDFc
blx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMStceDAxXHgwZlx4MDFcblx4MDFcblx4MDFceDEyXHgw
MVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAx
XHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4
MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcdFx4MDFceDA0
XHgwMVx0XHgwMVx0XHgwMVx0XHgwMVx0XHgwMVxuXHgwMVx4MGJceDAxXGZceDAxXHJceDAxXHgw
ZVx4MDFceDBmXHgwMVx0XHgwMVx4MTFceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4
MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgw
MVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxSFx4MDFcIlx4MDEjXHgwMSRceDAxJVx4MDEm
XHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXG5ceDAxIVx4MDFcblx4MDFcdFx4MDFcdFx4MDFcblx4
MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcdFx4MDFceDExXHgwMVx4MTJc
eDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4
MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxu
XHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4MDFceDAx
XHRceDAxXHgwNlx4MDFcblx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVc
eDAxXHgwZlx4MDFcblx4MDFceDExXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAx
XHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFc
eDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx0XHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4
MDEnXHgwMShceDAxKVx4MDEqXHgwMVx0XHgwMVx4MDRceDAxXG5ceDAxXHgwNFx4MDFcdFx4MDFc
blx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcIlx4MDFceDExXHgwMVx4
MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgx
OVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgw
MVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVxuXHgw
MVxuXHgwMVxuXHgwMVxuXHgwMVx0XHgwMVxuXHgwMVx4MGJceDAxXGZceDAxXHJceDAxXHgwZVx4
MDFceDBmXHgwMVx4MDZceDAxXHgxMVx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgw
MVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAx
XHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZc
eDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcYlx4MDFcblx4MDFceDAxXHgwMVx0XHgwMVx0XHgwMVx4
MDdceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxXHgwNlx4MDFceDExXHgw
MVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAx
XHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEg
XHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVxu
XHgwMVxuXHgwMVxuXHgwMTZceDAxXHRceDAxXG5ceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFcblx4
MDFceDBmXHgwMVxuXHgwMVxuXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgx
Nlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFk
XHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEn
XHgwMShceDAxKVx4MDEqXHgwMVxuXHgwMVxuXHgwMVxuXHgwMVx4MDZceDAxXHRceDAxXHgwNFx4
MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDE0XHgwMVxuXHgwMVx4MTJceDAx
XHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFc
eDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4MGVc
eDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHgwZVx4MDFc
blx4MDFcblx4MDFcblx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx0XHgwMVx4
MGZceDAxXG5ceDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgw
MVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAx
XHgxZVx4MDFceDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAx
KFx4MDEpXHgwMSpceDAxXG5ceDAxXG5ceDAxXG5ceDAxXG5ceDAxXHRceDAxXHgwNlx4MDFceDBi
XHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcblx4MDFcblx4MDFceDEyXHgwMVx4MTNc
eDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4
MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcdFx4MDFIXHgw
MSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4MDFcblx4
MDFcblx4MDFcdFx4MDFcdFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVxuXHgwMVx4MGZceDAxXG5c
eDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAx
XHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFc
eDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgw
MSpceDAxXG5ceDAxXHgwZVx4MDFcblx4MDFcblx4MDFcdFx4MDFceDExXHgwMVx4MGJceDAxXGZc
eDAxXHJceDAxXG5ceDAxXHgwZlx4MDFcdFx4MDFcMFwwXHgxMlx4MDFceDEzXHgwMVx4MTRceDAx
XHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFc
eDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHgxMVx4MDFIXHgwMSNceDAxJFx4
MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4MDFcblx4MDFcblx4MDFc
dFx4MDFceDAxXHgwMVx4MGJceDAxXGZceDAxXHJceDAxXG5ceDAxXHgwZlx4MDFcblx4MDFcblx4
MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgw
MVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAx
IFx4MDFcblx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFc
blx4MDFcblx4MDFceDAxXHgwMVxuXHgwMVx0XHgwMVx0XHgwMVx4MGJceDAxXGZceDAxXHJceDAx
XHgwMVx4MDFceDBmXHgwMVx4MGVceDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgx
NVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFj
XHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4
MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHgwZVx4MDFceDg2XDBceGFiXDBceGFhXDBcdFx4
MDFceGY0XDBceDBiXHgwMVxmXHgwMVxyXHgwMVx4MTRceDAxXHgwZlx4MDFceDAyXDBceDhkXDBc
eDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4
MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4
MDFceGZmXHhmZkhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MGJceDAxXGZc
eDAxXHJceDAxXHhmZlx4ZmZceDBmXHgwMVx4ZmZceGZmXHhmZlx4ZmZceDEyXHgwMVx4MTNceDAx
XHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFc
eDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFceGZmXHhmZkhceDAx
I1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4ZmZceGZmXHhmZlx4ZmYt
XHgwMS5ceDAxL1x4MDEwXHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmOFx4MDE5XHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4
ZmZceGZmXHgwZlx4MDFceGZmXHhmZkhceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4
MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgw
MVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZceGZmXHhmZiNceDAxJFx4MDEl
XHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmLVx4MDEuXHgwMS9c
eDAxMFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZc
eGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4
MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgw
MSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4
MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYuXHgwMS9ceDAxMFx4MDFceDBiXHgwMVxmXHgwMVxy
XHgwMVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRc
eDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4
MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAx
JFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgw
Zlx4MDFceDEwXHgwMTdceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgw
MVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAx
XHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4
MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZc
eGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4
MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgw
MSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4
MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmMFx4MDFceDBiXHgwMVxm
XHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceDEwXHgwMVx4ZmZceGZmXHgxMlx4MDFceDEzXHgw
MVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAx
XHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgw
MSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZc
eGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4
MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgw
MVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgw
MSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmSFx4MDEiLAorICAvKiBlcnJvcl9mdW5jdGlv
biAqL3BhcnNlX2Vycm9yLAorICAvKiBuYW1lc19jb25zdCAqLyJGVU5DUkVGXDBNVVRcMExQQVJc
MFJQQVJcME5PUFwwRFJPUFwwQkxPQ0tcMEVORFwwSUZcMFRIRU5cMEVMU0VcMFNFTEVDVFwwTE9P
UFwwQlJcMEJSX0lGXDBCUl9UQUJMRVwwQ0FMTFwwQ0FMTF9JTkRJUkVDVFwwUkVUVVJOXDBHRVRf
TE9DQUxcMFNFVF9MT0NBTFwwVEVFX0xPQ0FMXDBHRVRfR0xPQkFMXDBTRVRfR0xPQkFMXDBVTlJF
QUNIQUJMRVwwQ1VSUkVOVF9NRU1PUllcMEdST1dfTUVNT1JZXDBGVU5DXDBTVEFSVFwwVFlQRVww
UEFSQU1cMFJFU1VMVFwwTE9DQUxcMEdMT0JBTFwwTU9EVUxFXDBUQUJMRVwwRUxFTVwwTUVNT1JZ
XDBEQVRBXDBPRkZTRVRcMElNUE9SVFwwRVhQT1JUXDBTQ1JJUFRcMFJFR0lTVEVSXDBJTlZPS0Vc
MEdFVFwwQVNTRVJUX01BTEZPUk1FRFwwQVNTRVJUX0lOVkFMSURcMEFTU0VSVF9TT0ZUX0lOVkFM
SURcMEFTU0VSVF9VTkxJTktBQkxFXDBBU1NFUlRfUkVUVVJOXDBBU1NFUlRfUkVUVVJOX05BTlww
QVNTRVJUX1RSQVBcMEFTU0VSVF9FWEhBVVNUSU9OXDBJTlBVVFwwT1VUUFVUXDBFT0ZcMCIsCisg
IC8qIG5hbWVzX2Jsb2NrICovIk5BVFwwSU5UXDBGTE9BVFwwVEVYVFwwVkFSXDBWQUxVRV9UWVBF
XDBMT0FEXDBTVE9SRVwwT0ZGU0VUX0VRX05BVFwwQUxJR05fRVFfTkFUXDBDT05TVFwwVU5BUllc
MEJJTkFSWVwwQ09NUEFSRVwwQ09OVkVSVFwwVEVTVFwwIgorXTsKKworZnVuY3Rpb24gc2NyaXB0
KGxleGZ1biwgbGV4YnVmKSB7CisgIHJldHVybiBQYXJzaW5nLnl5cGFyc2UoeXl0YWJsZXMsIDEs
IGxleGZ1biwgbGV4YnVmKTsKK30KKworZnVuY3Rpb24gc2NyaXB0MShsZXhmdW4sIGxleGJ1Zikg
eworICByZXR1cm4gUGFyc2luZy55eXBhcnNlKHl5dGFibGVzLCAyLCBsZXhmdW4sIGxleGJ1Zik7
Cit9CisKK2Z1bmN0aW9uIG1vZHVsZTEobGV4ZnVuLCBsZXhidWYpIHsKKyAgcmV0dXJuIFBhcnNp
bmcueXlwYXJzZSh5eXRhYmxlcywgMywgbGV4ZnVuLCBsZXhidWYpOworfQorCitleHBvcnRzLnNj
cmlwdCAgPSBzY3JpcHQ7CitleHBvcnRzLnNjcmlwdDEgPSBzY3JpcHQxOworZXhwb3J0cy5tb2R1
bGUxID0gbW9kdWxlMTsKKy8qIFZhck1hcCBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8g
ZW5kIG9mIHBhcnNlci5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9Owor
CisKKyAgX3JlZ2lzdHJ5WydwYXJzaW5nJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBv
cnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBwYXJzaW5nLmpzIC8vLy8vLy8vCisndXNlIHN0
cmljdCc7CisKK3ZhciAkJEFycmF5ICAgICAgICAgPSByZXF1aXJlKCIuL2FycmF5Iik7Cit2YXIg
Q3VycnkgICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIExleGluZyAgICAgICAg
ICA9IHJlcXVpcmUoIi4vbGV4aW5nIik7Cit2YXIgQ2FtbF9vYmogICAgICAgID0gcmVxdWlyZSgi
Li9jYW1sX29iaiIpOwordmFyIENhbWxfYXJyYXkgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9hcnJh
eSIpOwordmFyIENhbWxfcGFyc2VyICAgICA9IHJlcXVpcmUoIi4vY2FtbF9wYXJzZXIiKTsKK3Zh
ciBDYW1sX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0aW9ucyIpOworCit2YXIg
WVlleGl0ID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiUGFyc2luZy5ZWWV4aXQiKTsKKwordmFy
IFBhcnNlX2Vycm9yID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiUGFyc2luZy5QYXJzZV9lcnJv
ciIpOworCit2YXIgZW52ID0gLyogcmVjb3JkICovWworICAvKiBzX3N0YWNrICovQ2FtbF9hcnJh
eS5jYW1sX21ha2VfdmVjdCgxMDAsIDApLAorICAvKiB2X3N0YWNrICovQ2FtbF9hcnJheS5jYW1s
X21ha2VfdmVjdCgxMDAsIC8qICgpICovMCksCisgIC8qIHN5bWJfc3RhcnRfc3RhY2sgKi9DYW1s
X2FycmF5LmNhbWxfbWFrZV92ZWN0KDEwMCwgTGV4aW5nLmR1bW15X3BvcyksCisgIC8qIHN5bWJf
ZW5kX3N0YWNrICovQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdCgxMDAsIExleGluZy5kdW1teV9w
b3MpLAorICAvKiBzdGFja3NpemUgKi8xMDAsCisgIC8qIHN0YWNrYmFzZSAqLzAsCisgIC8qIGN1
cnJfY2hhciAqLzAsCisgIC8qIGx2YWwgOiAoKSAqLzAsCisgIC8qIHN5bWJfc3RhcnQgKi9MZXhp
bmcuZHVtbXlfcG9zLAorICAvKiBzeW1iX2VuZCAqL0xleGluZy5kdW1teV9wb3MsCisgIC8qIGFz
cCAqLzAsCisgIC8qIHJ1bGVfbGVuICovMCwKKyAgLyogcnVsZV9udW1iZXIgKi8wLAorICAvKiBz
cCAqLzAsCisgIC8qIHN0YXRlICovMCwKKyAgLyogZXJyZmxhZyAqLzAKK107CisKK2Z1bmN0aW9u
IGdyb3dfc3RhY2tzKCkgeworICB2YXIgb2xkc2l6ZSA9IGVudlsvKiBzdGFja3NpemUgKi80XTsK
KyAgdmFyIG5ld3NpemUgPSAob2xkc2l6ZSA8PCAxKTsKKyAgdmFyIG5ld19zID0gQ2FtbF9hcnJh
eS5jYW1sX21ha2VfdmVjdChuZXdzaXplLCAwKTsKKyAgdmFyIG5ld192ID0gQ2FtbF9hcnJheS5j
YW1sX21ha2VfdmVjdChuZXdzaXplLCAvKiAoKSAqLzApOworICB2YXIgbmV3X3N0YXJ0ID0gQ2Ft
bF9hcnJheS5jYW1sX21ha2VfdmVjdChuZXdzaXplLCBMZXhpbmcuZHVtbXlfcG9zKTsKKyAgdmFy
IG5ld19lbmQgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KG5ld3NpemUsIExleGluZy5kdW1t
eV9wb3MpOworICAkJEFycmF5LmJsaXQoZW52Wy8qIHNfc3RhY2sgKi8wXSwgMCwgbmV3X3MsIDAs
IG9sZHNpemUpOworICBlbnZbLyogc19zdGFjayAqLzBdID0gbmV3X3M7CisgICQkQXJyYXkuYmxp
dChlbnZbLyogdl9zdGFjayAqLzFdLCAwLCBuZXdfdiwgMCwgb2xkc2l6ZSk7CisgIGVudlsvKiB2
X3N0YWNrICovMV0gPSBuZXdfdjsKKyAgJCRBcnJheS5ibGl0KGVudlsvKiBzeW1iX3N0YXJ0X3N0
YWNrICovMl0sIDAsIG5ld19zdGFydCwgMCwgb2xkc2l6ZSk7CisgIGVudlsvKiBzeW1iX3N0YXJ0
X3N0YWNrICovMl0gPSBuZXdfc3RhcnQ7CisgICQkQXJyYXkuYmxpdChlbnZbLyogc3ltYl9lbmRf
c3RhY2sgKi8zXSwgMCwgbmV3X2VuZCwgMCwgb2xkc2l6ZSk7CisgIGVudlsvKiBzeW1iX2VuZF9z
dGFjayAqLzNdID0gbmV3X2VuZDsKKyAgZW52Wy8qIHN0YWNrc2l6ZSAqLzRdID0gbmV3c2l6ZTsK
KyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gY2xlYXJfcGFyc2VyKCkgeworICAk
JEFycmF5LmZpbGwoZW52Wy8qIHZfc3RhY2sgKi8xXSwgMCwgZW52Wy8qIHN0YWNrc2l6ZSAqLzRd
LCAvKiAoKSAqLzApOworICBlbnZbLyogbHZhbCAqLzddID0gLyogKCkgKi8wOworICByZXR1cm4g
LyogKCkgKi8wOworfQorCit2YXIgY3VycmVudF9sb29rYWhlYWRfZnVuID0gW2Z1bmN0aW9uICgp
IHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9XTsKKworZnVuY3Rpb24geXlwYXJzZSh0
YWJsZXMsIHN0YXJ0LCBsZXhlciwgbGV4YnVmKSB7CisgIHZhciBpbml0X2FzcCA9IGVudlsvKiBh
c3AgKi8xMF07CisgIHZhciBpbml0X3NwID0gZW52Wy8qIHNwICovMTNdOworICB2YXIgaW5pdF9z
dGFja2Jhc2UgPSBlbnZbLyogc3RhY2tiYXNlICovNV07CisgIHZhciBpbml0X3N0YXRlID0gZW52
Wy8qIHN0YXRlICovMTRdOworICB2YXIgaW5pdF9jdXJyX2NoYXIgPSBlbnZbLyogY3Vycl9jaGFy
ICovNl07CisgIHZhciBpbml0X2x2YWwgPSBlbnZbLyogbHZhbCAqLzddOworICB2YXIgaW5pdF9l
cnJmbGFnID0gZW52Wy8qIGVycmZsYWcgKi8xNV07CisgIGVudlsvKiBzdGFja2Jhc2UgKi81XSA9
IGVudlsvKiBzcCAqLzEzXSArIDEgfCAwOworICBlbnZbLyogY3Vycl9jaGFyICovNl0gPSBzdGFy
dDsKKyAgZW52Wy8qIHN5bWJfZW5kICovOV0gPSBsZXhidWZbLyogbGV4X2N1cnJfcCAqLzExXTsK
KyAgdHJ5IHsKKyAgICB2YXIgX2NtZCA9IC8qIFN0YXJ0ICovMDsKKyAgICB2YXIgX2FyZyA9IC8q
ICgpICovMDsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgYXJnID0gX2FyZzsKKyAgICAg
IHZhciBjbWQgPSBfY21kOworICAgICAgdmFyIG1hdGNoID0gQ2FtbF9wYXJzZXIuY2FtbF9wYXJz
ZV9lbmdpbmUodGFibGVzLCBlbnYsIGNtZCwgYXJnKTsKKyAgICAgIHN3aXRjaCAobWF0Y2gpIHsK
KyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICB2YXIgdCA9IEN1cnJ5Ll8xKGxleGVyLCBs
ZXhidWYpOworICAgICAgICAgICAgZW52Wy8qIHN5bWJfc3RhcnQgKi84XSA9IGxleGJ1ZlsvKiBs
ZXhfc3RhcnRfcCAqLzEwXTsKKyAgICAgICAgICAgIGVudlsvKiBzeW1iX2VuZCAqLzldID0gbGV4
YnVmWy8qIGxleF9jdXJyX3AgKi8xMV07CisgICAgICAgICAgICBfYXJnID0gdDsKKyAgICAgICAg
ICAgIF9jbWQgPSAvKiBUb2tlbl9yZWFkICovMTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgdGhyb3cgUGFyc2VfZXJyb3I7CisgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgZ3Jvd19zdGFja3MoLyogKCkgKi8wKTsKKyAgICAg
ICAgICAgIF9hcmcgPSAvKiAoKSAqLzA7CisgICAgICAgICAgICBfY21kID0gLyogU3RhY2tzX2dy
b3duXzEgKi8yOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAzIDog
CisgICAgICAgICAgICBncm93X3N0YWNrcygvKiAoKSAqLzApOworICAgICAgICAgICAgX2FyZyA9
IC8qICgpICovMDsKKyAgICAgICAgICAgIF9jbWQgPSAvKiBTdGFja3NfZ3Jvd25fMiAqLzM7Cisg
ICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAg
IHZhciBtYXRjaCQxOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgbWF0Y2gkMSA9
IC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIC8qIFNlbWFudGljX2FjdGlvbl9jb21wdXRl
ZCAqLzQsCisgICAgICAgICAgICAgICAgQ3VycnkuXzEodGFibGVzWy8qIGFjdGlvbnMgKi8wXVtl
bnZbLyogcnVsZV9udW1iZXIgKi8xMl1dLCBlbnYpCisgICAgICAgICAgICAgIF07CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjYXRjaCAoZXhuKXsKKyAgICAgICAgICAgICAgaWYgKGV4biA9
PT0gUGFyc2VfZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9b
CisgICAgICAgICAgICAgICAgICAvKiBFcnJvcl9kZXRlY3RlZCAqLzUsCisgICAgICAgICAgICAg
ICAgICAvKiAoKSAqLzAKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IGV4bjsKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgX2FyZyA9IG1hdGNoJDFbMV07CisgICAg
ICAgICAgICBfY21kID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgQ3VycnkuXzEodGFibGVzWy8qIGVycm9yX2Z1
bmN0aW9uICovMTNdLCAic3ludGF4IGVycm9yIik7CisgICAgICAgICAgICBfYXJnID0gLyogKCkg
Ki8wOworICAgICAgICAgICAgX2NtZCA9IC8qIEVycm9yX2RldGVjdGVkICovNTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgfQorICAgIH07CisgIH0KKyAgY2F0
Y2ggKGV4biQxKXsKKyAgICB2YXIgY3Vycl9jaGFyID0gZW52Wy8qIGN1cnJfY2hhciAqLzZdOwor
ICAgIGVudlsvKiBhc3AgKi8xMF0gPSBpbml0X2FzcDsKKyAgICBlbnZbLyogc3AgKi8xM10gPSBp
bml0X3NwOworICAgIGVudlsvKiBzdGFja2Jhc2UgKi81XSA9IGluaXRfc3RhY2tiYXNlOworICAg
IGVudlsvKiBzdGF0ZSAqLzE0XSA9IGluaXRfc3RhdGU7CisgICAgZW52Wy8qIGN1cnJfY2hhciAq
LzZdID0gaW5pdF9jdXJyX2NoYXI7CisgICAgZW52Wy8qIGx2YWwgKi83XSA9IGluaXRfbHZhbDsK
KyAgICBlbnZbLyogZXJyZmxhZyAqLzE1XSA9IGluaXRfZXJyZmxhZzsKKyAgICBpZiAoZXhuJDFb
MF0gPT09IFlZZXhpdCkgeworICAgICAgcmV0dXJuIGV4biQxWzFdOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIGN1cnJlbnRfbG9va2FoZWFkX2Z1blswXSA9IGZ1bmN0aW9uICh0b2spIHsKKyAg
ICAgICAgaWYgKHRvay5sZW5ndGggIT09IHVuZGVmaW5lZCkgeworICAgICAgICAgIHJldHVybiAr
KHRhYmxlc1svKiB0cmFuc2xfYmxvY2sgKi8yXVt0b2sudGFnIHwgMF0gPT09IGN1cnJfY2hhcik7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuICsodGFibGVzWy8q
IHRyYW5zbF9jb25zdCAqLzFdW3Rva10gPT09IGN1cnJfY2hhcik7CisgICAgICAgIH0KKyAgICAg
IH07CisgICAgICB0aHJvdyBleG4kMTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gcGVla192
YWwoZW52LCBuKSB7CisgIHJldHVybiBlbnZbLyogdl9zdGFjayAqLzFdW2VudlsvKiBhc3AgKi8x
MF0gLSBuIHwgMF07Cit9CisKK2Z1bmN0aW9uIHN5bWJvbF9zdGFydF9wb3MoKSB7CisgIHZhciBf
aSA9IGVudlsvKiBydWxlX2xlbiAqLzExXTsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0g
X2k7CisgICAgaWYgKGkgPD0gMCkgeworICAgICAgcmV0dXJuIGVudlsvKiBzeW1iX2VuZF9zdGFj
ayAqLzNdW2VudlsvKiBhc3AgKi8xMF1dOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBz
dCA9IGVudlsvKiBzeW1iX3N0YXJ0X3N0YWNrICovMl1bKGVudlsvKiBhc3AgKi8xMF0gLSBpIHwg
MCkgKyAxIHwgMF07CisgICAgICB2YXIgZW4gPSBlbnZbLyogc3ltYl9lbmRfc3RhY2sgKi8zXVso
ZW52Wy8qIGFzcCAqLzEwXSAtIGkgfCAwKSArIDEgfCAwXTsKKyAgICAgIGlmIChDYW1sX29iai5j
YW1sX25vdGVxdWFsKHN0LCBlbikpIHsKKyAgICAgICAgcmV0dXJuIHN0OworICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIF9pID0gaSAtIDEgfCAwOworICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgIAorICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3ltYm9sX2VuZF9w
b3MoKSB7CisgIHJldHVybiBlbnZbLyogc3ltYl9lbmRfc3RhY2sgKi8zXVtlbnZbLyogYXNwICov
MTBdXTsKK30KKworZnVuY3Rpb24gcmhzX3N0YXJ0X3BvcyhuKSB7CisgIHJldHVybiBlbnZbLyog
c3ltYl9zdGFydF9zdGFjayAqLzJdW2VudlsvKiBhc3AgKi8xMF0gLSAoZW52Wy8qIHJ1bGVfbGVu
ICovMTFdIC0gbiB8IDApIHwgMF07Cit9CisKK2Z1bmN0aW9uIHJoc19lbmRfcG9zKG4pIHsKKyAg
cmV0dXJuIGVudlsvKiBzeW1iX2VuZF9zdGFjayAqLzNdW2VudlsvKiBhc3AgKi8xMF0gLSAoZW52
Wy8qIHJ1bGVfbGVuICovMTFdIC0gbiB8IDApIHwgMF07Cit9CisKK2Z1bmN0aW9uIHN5bWJvbF9z
dGFydCgpIHsKKyAgcmV0dXJuIHN5bWJvbF9zdGFydF9wb3MoLyogKCkgKi8wKVsvKiBwb3NfY251
bSAqLzNdOworfQorCitmdW5jdGlvbiBzeW1ib2xfZW5kKCkgeworICByZXR1cm4gc3ltYm9sX2Vu
ZF9wb3MoLyogKCkgKi8wKVsvKiBwb3NfY251bSAqLzNdOworfQorCitmdW5jdGlvbiByaHNfc3Rh
cnQobikgeworICByZXR1cm4gcmhzX3N0YXJ0X3BvcyhuKVsvKiBwb3NfY251bSAqLzNdOworfQor
CitmdW5jdGlvbiByaHNfZW5kKG4pIHsKKyAgcmV0dXJuIHJoc19lbmRfcG9zKG4pWy8qIHBvc19j
bnVtICovM107Cit9CisKK2Z1bmN0aW9uIGlzX2N1cnJlbnRfbG9va2FoZWFkKHRvaykgeworICBy
ZXR1cm4gQ3VycnkuXzEoY3VycmVudF9sb29rYWhlYWRfZnVuWzBdLCB0b2spOworfQorCitmdW5j
dGlvbiBwYXJzZV9lcnJvcigpIHsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKwordmFyIHNldF90
cmFjZSA9IENhbWxfcGFyc2VyLmNhbWxfc2V0X3BhcnNlcl90cmFjZTsKKworZXhwb3J0cy5zeW1i
b2xfc3RhcnQgICAgICAgICA9IHN5bWJvbF9zdGFydDsKK2V4cG9ydHMuc3ltYm9sX2VuZCAgICAg
ICAgICAgPSBzeW1ib2xfZW5kOworZXhwb3J0cy5yaHNfc3RhcnQgICAgICAgICAgICA9IHJoc19z
dGFydDsKK2V4cG9ydHMucmhzX2VuZCAgICAgICAgICAgICAgPSByaHNfZW5kOworZXhwb3J0cy5z
eW1ib2xfc3RhcnRfcG9zICAgICA9IHN5bWJvbF9zdGFydF9wb3M7CitleHBvcnRzLnN5bWJvbF9l
bmRfcG9zICAgICAgID0gc3ltYm9sX2VuZF9wb3M7CitleHBvcnRzLnJoc19zdGFydF9wb3MgICAg
ICAgID0gcmhzX3N0YXJ0X3BvczsKK2V4cG9ydHMucmhzX2VuZF9wb3MgICAgICAgICAgPSByaHNf
ZW5kX3BvczsKK2V4cG9ydHMuY2xlYXJfcGFyc2VyICAgICAgICAgPSBjbGVhcl9wYXJzZXI7Citl
eHBvcnRzLlBhcnNlX2Vycm9yICAgICAgICAgID0gUGFyc2VfZXJyb3I7CitleHBvcnRzLnNldF90
cmFjZSAgICAgICAgICAgID0gc2V0X3RyYWNlOworZXhwb3J0cy5ZWWV4aXQgICAgICAgICAgICAg
ICA9IFlZZXhpdDsKK2V4cG9ydHMueXlwYXJzZSAgICAgICAgICAgICAgPSB5eXBhcnNlOworZXhw
b3J0cy5wZWVrX3ZhbCAgICAgICAgICAgICA9IHBlZWtfdmFsOworZXhwb3J0cy5pc19jdXJyZW50
X2xvb2thaGVhZCA9IGlzX2N1cnJlbnRfbG9va2FoZWFkOworZXhwb3J0cy5wYXJzZV9lcnJvciAg
ICAgICAgICA9IHBhcnNlX2Vycm9yOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVu
ZCBvZiBwYXJzaW5nLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisK
KworICBfcmVnaXN0cnlbJ3BlcnZhc2l2ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4
cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHBlcnZhc2l2ZXMuanMgLy8vLy8vLy8KKyd1
c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4v
Y3VycnkiKTsKK3ZhciBDYW1sX2lvICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxf
aW8iKTsKK3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfb2Jq
Iik7Cit2YXIgQ2FtbF9mb3JtYXQgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2Zvcm1h
dCIpOwordmFyIENhbWxfc3RyaW5nICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJp
bmciKTsKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfZXhj
ZXB0aW9ucyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zICA9IHJlcXVpcmUoIi4vY2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKK3ZhciBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MgPSBy
ZXF1aXJlKCIuL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcyIpOworCitmdW5jdGlvbiBmYWlsd2l0
aChzKSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVy
ZSwKKyAgICAgICAgcworICAgICAgXTsKK30KKworZnVuY3Rpb24gaW52YWxpZF9hcmcocykgewor
ICB0aHJvdyBbCisgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCisgICAgICAgIHMKKyAgICAgIF07Cit9CisKK3ZhciBFeGl0ID0gQ2FtbF9leGNlcHRpb25z
LmNyZWF0ZSgiUGVydmFzaXZlcy5FeGl0Iik7CisKK2Z1bmN0aW9uIG1pbih4LCB5KSB7CisgIGlm
IChDYW1sX29iai5jYW1sX2xlc3NlcXVhbCh4LCB5KSkgeworICAgIHJldHVybiB4OworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiB5OworICB9Cit9CisKK2Z1bmN0aW9uIG1heCh4LCB5KSB7Cisg
IGlmIChDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbCh4LCB5KSkgeworICAgIHJldHVybiB4Owor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiB5OworICB9Cit9CisKK2Z1bmN0aW9uIGFicyh4KSB7
CisgIGlmICh4ID49IDApIHsKKyAgICByZXR1cm4geDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gLXggfCAwOworICB9Cit9CisKK2Z1bmN0aW9uIGxub3QoeCkgeworICByZXR1cm4geCBeIC0x
OworfQorCit2YXIgbWluX2ludCA9IC0yMTQ3NDgzNjQ4OworCitmdW5jdGlvbiAkY2FyZXQoYSwg
YikgeworICByZXR1cm4gYSArIGI7Cit9CisKK2Z1bmN0aW9uIGNoYXJfb2ZfaW50KG4pIHsKKyAg
aWYgKG4gPCAwIHx8IG4gPiAyNTUpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiY2hhcl9vZl9pbnQi
CisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG47CisgIH0KK30KKworZnVu
Y3Rpb24gc3RyaW5nX29mX2Jvb2woYikgeworICBpZiAoYikgeworICAgIHJldHVybiAidHJ1ZSI7
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuICJmYWxzZSI7CisgIH0KK30KKworZnVuY3Rpb24g
Ym9vbF9vZl9zdHJpbmcocGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgImZh
bHNlIiA6IAorICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIGNhc2UgInRydWUiIDog
CisgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICBkZWZhdWx0OgorICAgICAgdGhyb3cg
WworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwK
KyAgICAgICAgICAgICJib29sX29mX3N0cmluZyIKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1
bmN0aW9uIHN0cmluZ19vZl9pbnQocGFyYW0pIHsKKyAgcmV0dXJuICIiICsgcGFyYW07Cit9CisK
K2Z1bmN0aW9uIHZhbGlkX2Zsb2F0X2xleGVtKHMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsKKyAg
dmFyIF9pID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0gX2k7CisgICAgaWYgKGkg
Pj0gbCkgeworICAgICAgcmV0dXJuICRjYXJldChzLCAiLiIpOworICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICAgIGlmIChtYXRj
aCA+PSA0OCkgeworICAgICAgICBpZiAobWF0Y2ggPj0gNTgpIHsKKyAgICAgICAgICByZXR1cm4g
czsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsK
KyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKG1hdGNoICE9PSA0NSkgeworICAgICAgICByZXR1cm4gczsKKyAgICAgIH0K
KyAgICAgIGVsc2UgeworICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgY29udGludWUg
OworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19v
Zl9mbG9hdChmKSB7CisgIHJldHVybiB2YWxpZF9mbG9hdF9sZXhlbShDYW1sX2Zvcm1hdC5jYW1s
X2Zvcm1hdF9mbG9hdCgiJS4xMmciLCBmKSk7Cit9CisKK2Z1bmN0aW9uICRhdChsMSwgbDIpIHsK
KyAgaWYgKGwxKSB7CisgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgbDFbMF0sCisg
ICAgICAgICAgICAkYXQobDFbMV0sIGwyKQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIGwyOworICB9Cit9CisKK3ZhciBzdGRpbiA9IENhbWxfaW8uc3RkaW47CisKK3Zh
ciBzdGRvdXQgPSBDYW1sX2lvLnN0ZG91dDsKKwordmFyIHN0ZGVyciA9IENhbWxfaW8uc3RkZXJy
OworCitmdW5jdGlvbiBvcGVuX291dF9nZW4oXywgXyQxLCBfJDIpIHsKKyAgcmV0dXJuIENhbWxf
aW8uY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICB0aHJvdyAiY2FtbF9zeXNfb3BlbiBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0
IHlldFxuIjsKKyAgICAgICAgICAgICAgfSgpKTsKK30KKworZnVuY3Rpb24gb3Blbl9vdXQobmFt
ZSkgeworICByZXR1cm4gb3Blbl9vdXRfZ2VuKC8qIDo6ICovWworICAgICAgICAgICAgICAvKiBP
cGVuX3dyb25seSAqLzEsCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAg
IC8qIE9wZW5fY3JlYXQgKi8zLAorICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgLyogT3Blbl90cnVuYyAqLzQsCisgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgLyogT3Blbl90ZXh0ICovNywKKyAgICAgICAgICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICBdLCA0MzgsIG5hbWUpOworfQorCitmdW5jdGlvbiBv
cGVuX291dF9iaW4obmFtZSkgeworICByZXR1cm4gb3Blbl9vdXRfZ2VuKC8qIDo6ICovWworICAg
ICAgICAgICAgICAvKiBPcGVuX3dyb25seSAqLzEsCisgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgIC8qIE9wZW5fY3JlYXQgKi8zLAorICAgICAgICAgICAgICAgIC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgLyogT3Blbl90cnVuYyAqLzQsCisgICAgICAgICAgICAg
ICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogT3Blbl9iaW5hcnkgKi82LAor
ICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0sIDQzOCwgbmFtZSk7
Cit9CisKK2Z1bmN0aW9uIGZsdXNoX2FsbCgpIHsKKyAgdmFyIF9wYXJhbSA9IENhbWxfaW8uY2Ft
bF9tbF9vdXRfY2hhbm5lbHNfbGlzdCgvKiAoKSAqLzApOworICB3aGlsZSh0cnVlKSB7CisgICAg
dmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgdHJ5IHsKKyAgICAg
ICAgQ2FtbF9pby5jYW1sX21sX2ZsdXNoKHBhcmFtWzBdKTsKKyAgICAgIH0KKyAgICAgIGNhdGNo
IChleG4peworICAgICAgICAKKyAgICAgIH0KKyAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAg
ICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG91dHB1dF9ieXRlcyhvYywgcykg
eworICByZXR1cm4gQ2FtbF9pby5jYW1sX21sX291dHB1dChvYywgcywgMCwgcy5sZW5ndGgpOwor
fQorCitmdW5jdGlvbiBvdXRwdXRfc3RyaW5nKG9jLCBzKSB7CisgIHJldHVybiBDYW1sX2lvLmNh
bWxfbWxfb3V0cHV0KG9jLCBzLCAwLCBzLmxlbmd0aCk7Cit9CisKK2Z1bmN0aW9uIG91dHB1dChv
Yywgcywgb2ZzLCBsZW4pIHsKKyAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiAocy5s
ZW5ndGggLSBsZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJvdXRwdXQiCisgICAgICAg
IF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXQob2Ms
IHMsIG9mcywgbGVuKTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXRfc3Vic3RyaW5nKG9jLCBz
LCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0
aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIm91dHB1dF9zdWJzdHJpbmciCisg
ICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRw
dXQob2MsIHMsIG9mcywgbGVuKTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXRfdmFsdWUoXywg
XyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9v
dXRwdXRfdmFsdWUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAg
ICAgICAgfSgpOworfQorCitmdW5jdGlvbiBjbG9zZV9vdXQob2MpIHsKKyAgQ2FtbF9pby5jYW1s
X21sX2ZsdXNoKG9jKTsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93
ICJjYW1sX21sX2Nsb3NlX2NoYW5uZWwgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5
ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBjbG9zZV9vdXRfbm9lcnIob2Mp
IHsKKyAgdHJ5IHsKKyAgICBDYW1sX2lvLmNhbWxfbWxfZmx1c2gob2MpOworICB9CisgIGNhdGNo
IChleG4peworICAgIAorICB9CisgIHRyeSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfY2xvc2VfY2hhbm5lbCBub3QgaW1wbGVtZW50ZWQg
YnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICAgIH0oKTsKKyAgfQorICBjYXRjaCAo
ZXhuJDEpeworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gb3Blbl9p
bl9nZW4oXywgXyQxLCBfJDIpIHsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vcGVuX2Rlc2Ny
aXB0b3JfaW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX3N5c19v
cGVuIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAg
ICB9KCkpOworfQorCitmdW5jdGlvbiBvcGVuX2luKG5hbWUpIHsKKyAgcmV0dXJuIG9wZW5faW5f
Z2VuKC8qIDo6ICovWworICAgICAgICAgICAgICAvKiBPcGVuX3Jkb25seSAqLzAsCisgICAgICAg
ICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIC8qIE9wZW5fdGV4dCAqLzcsCisgICAg
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0sIDAs
IG5hbWUpOworfQorCitmdW5jdGlvbiBvcGVuX2luX2JpbihuYW1lKSB7CisgIHJldHVybiBvcGVu
X2luX2dlbigvKiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogT3Blbl9yZG9ubHkgKi8wLAorICAg
ICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAvKiBPcGVuX2JpbmFyeSAqLzYs
CisgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
IF0sIDAsIG5hbWUpOworfQorCitmdW5jdGlvbiBpbnB1dChfLCBzLCBvZnMsIGxlbikgeworICBp
ZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7Cisg
ICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJn
dW1lbnQsCisgICAgICAgICAgImlucHV0IgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0
IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgfSgp
OworICB9Cit9CisKK2Z1bmN0aW9uIHVuc2FmZV9yZWFsbHlfaW5wdXQoXywgXyQxLCBfb2ZzLCBf
bGVuKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbGVuID0gX2xlbjsKKyAgICB2YXIgb2Zz
ID0gX29mczsKKyAgICBpZiAobGVuIDw9IDApIHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIHIgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
dGhyb3cgImNhbWxfbWxfaW5wdXQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRc
biI7CisgICAgICAgIH0oKTsKKyAgICAgIGlmIChyKSB7CisgICAgICAgIF9sZW4gPSBsZW4gLSBy
IHwgMDsKKyAgICAgICAgX29mcyA9IG9mcyArIHIgfCAwOworICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmVuZF9vZl9maWxlOworICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVu
Y3Rpb24gcmVhbGx5X2lucHV0KGljLCBzLCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwgMCB8fCBs
ZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAg
ICAgInJlYWxseV9pbnB1dCIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
dW5zYWZlX3JlYWxseV9pbnB1dChpYywgcywgb2ZzLCBsZW4pOworICB9Cit9CisKK2Z1bmN0aW9u
IHJlYWxseV9pbnB1dF9zdHJpbmcoaWMsIGxlbikgeworICB2YXIgcyA9IENhbWxfc3RyaW5nLmNh
bWxfY3JlYXRlX3N0cmluZyhsZW4pOworICByZWFsbHlfaW5wdXQoaWMsIHMsIDAsIGxlbik7Cisg
IHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocyk7Cit9CisKK2Z1bmN0aW9uIGlu
cHV0X2xpbmUoY2hhbikgeworICB2YXIgYnVpbGRfcmVzdWx0ID0gZnVuY3Rpb24gKGJ1ZiwgX3Bv
cywgX3BhcmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3BhcmFt
OworICAgICAgdmFyIHBvcyA9IF9wb3M7CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFy
IGhkID0gcGFyYW1bMF07CisgICAgICAgIHZhciBsZW4gPSBoZC5sZW5ndGg7CisgICAgICAgIENh
bWxfc3RyaW5nLmNhbWxfYmxpdF9ieXRlcyhoZCwgMCwgYnVmLCBwb3MgLSBsZW4gfCAwLCBsZW4p
OworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgX3BvcyA9IHBvcyAtIGxlbiB8
IDA7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgcmV0dXJuIGJ1ZjsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgc2NhbiA9
IGZ1bmN0aW9uIChfYWNjdSwgX2xlbikgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBs
ZW4gPSBfbGVuOworICAgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICAgIHZhciBuID0gZnVuY3Rp
b24gKCkgeworICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0X3NjYW5fbGluZSBub3QgaW1w
bGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgfSgpOworICAgICAgaWYg
KG4pIHsKKyAgICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgICAgdmFyIHJlcyA9IENhbWxfc3Ry
aW5nLmNhbWxfY3JlYXRlX3N0cmluZyhuIC0gMSB8IDApOworICAgICAgICAgIChmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfaW5wdXQgbm90IGltcGxlbWVudGVk
IGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgICAgIH0oKSk7CisgICAgICAgICAg
Q2FtbF9pby5jYW1sX21sX2lucHV0X2NoYXIoY2hhbik7CisgICAgICAgICAgaWYgKGFjY3UpIHsK
KyAgICAgICAgICAgIHZhciBsZW4kMSA9IChsZW4gKyBuIHwgMCkgLSAxIHwgMDsKKyAgICAgICAg
ICAgIHJldHVybiBidWlsZF9yZXN1bHQoQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKGxl
biQxKSwgbGVuJDEsIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgcmVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAgICAgICAgICAgIF0pOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBiZWcgPSBD
YW1sX3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcoLW4gfCAwKTsKKyAgICAgICAgICAoZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0IG5vdCBpbXBsZW1l
bnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgICB9KCkpOworICAgICAg
ICAgIF9sZW4gPSBsZW4gLSBuIHwgMDsKKyAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAg
ICAgICAgICAgYmVnLAorICAgICAgICAgICAgYWNjdQorICAgICAgICAgIF07CisgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlm
IChhY2N1KSB7CisgICAgICAgIHJldHVybiBidWlsZF9yZXN1bHQoQ2FtbF9zdHJpbmcuY2FtbF9j
cmVhdGVfc3RyaW5nKGxlbiksIGxlbiwgYWNjdSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZW5kX29mX2ZpbGU7CisgICAgICB9
CisgICAgfTsKKyAgfTsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzY2Fu
KC8qIFtdICovMCwgMCkpOworfQorCitmdW5jdGlvbiBjbG9zZV9pbl9ub2VycigpIHsKKyAgdHJ5
IHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICB0aHJvdyAiY2FtbF9t
bF9jbG9zZV9jaGFubmVsIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwor
ICAgICAgICAgICAgfSgpOworICB9CisgIGNhdGNoIChleG4peworICAgIHJldHVybiAvKiAoKSAq
LzA7CisgIH0KK30KKworZnVuY3Rpb24gcHJpbnRfY2hhcihjKSB7CisgIHJldHVybiBDYW1sX2lv
LmNhbWxfbWxfb3V0cHV0X2NoYXIoc3Rkb3V0LCBjKTsKK30KKworZnVuY3Rpb24gcHJpbnRfc3Ry
aW5nKHMpIHsKKyAgcmV0dXJuIG91dHB1dF9zdHJpbmcoc3Rkb3V0LCBzKTsKK30KKworZnVuY3Rp
b24gcHJpbnRfYnl0ZXMocykgeworICByZXR1cm4gb3V0cHV0X2J5dGVzKHN0ZG91dCwgcyk7Cit9
CisKK2Z1bmN0aW9uIHByaW50X2ludChpKSB7CisgIHJldHVybiBvdXRwdXRfc3RyaW5nKHN0ZG91
dCwgIiIgKyBpKTsKK30KKworZnVuY3Rpb24gcHJpbnRfZmxvYXQoZikgeworICByZXR1cm4gb3V0
cHV0X3N0cmluZyhzdGRvdXQsIHZhbGlkX2Zsb2F0X2xleGVtKENhbWxfZm9ybWF0LmNhbWxfZm9y
bWF0X2Zsb2F0KCIlLjEyZyIsIGYpKSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X2VuZGxpbmUocGFy
YW0pIHsKKyAgY29uc29sZS5sb2cocGFyYW0pOworICByZXR1cm4gMDsKK30KKworZnVuY3Rpb24g
cHJpbnRfbmV3bGluZSgpIHsKKyAgQ2FtbF9pby5jYW1sX21sX291dHB1dF9jaGFyKHN0ZG91dCwg
LyogIlxuIiAqLzEwKTsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9mbHVzaChzdGRvdXQpOwor
fQorCitmdW5jdGlvbiBwcmVycl9jaGFyKGMpIHsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9v
dXRwdXRfY2hhcihzdGRlcnIsIGMpOworfQorCitmdW5jdGlvbiBwcmVycl9zdHJpbmcocykgewor
ICByZXR1cm4gb3V0cHV0X3N0cmluZyhzdGRlcnIsIHMpOworfQorCitmdW5jdGlvbiBwcmVycl9i
eXRlcyhzKSB7CisgIHJldHVybiBvdXRwdXRfYnl0ZXMoc3RkZXJyLCBzKTsKK30KKworZnVuY3Rp
b24gcHJlcnJfaW50KGkpIHsKKyAgcmV0dXJuIG91dHB1dF9zdHJpbmcoc3RkZXJyLCAiIiArIGkp
OworfQorCitmdW5jdGlvbiBwcmVycl9mbG9hdChmKSB7CisgIHJldHVybiBvdXRwdXRfc3RyaW5n
KHN0ZGVyciwgdmFsaWRfZmxvYXRfbGV4ZW0oQ2FtbF9mb3JtYXQuY2FtbF9mb3JtYXRfZmxvYXQo
IiUuMTJnIiwgZikpKTsKK30KKworZnVuY3Rpb24gcHJlcnJfZW5kbGluZShwYXJhbSkgeworICBj
b25zb2xlLmVycm9yKHBhcmFtKTsKKyAgcmV0dXJuIDA7Cit9CisKK2Z1bmN0aW9uIHByZXJyX25l
d2xpbmUoKSB7CisgIENhbWxfaW8uY2FtbF9tbF9vdXRwdXRfY2hhcihzdGRlcnIsIC8qICJcbiIg
Ki8xMCk7CisgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfZmx1c2goc3RkZXJyKTsKK30KKworZnVu
Y3Rpb24gcmVhZF9saW5lKCkgeworICBDYW1sX2lvLmNhbWxfbWxfZmx1c2goc3Rkb3V0KTsKKyAg
cmV0dXJuIGlucHV0X2xpbmUoc3RkaW4pOworfQorCitmdW5jdGlvbiByZWFkX2ludCgpIHsKKyAg
cmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfaW50X29mX3N0cmluZygoQ2FtbF9pby5jYW1sX21sX2Zs
dXNoKHN0ZG91dCksIGlucHV0X2xpbmUoc3RkaW4pKSk7Cit9CisKK2Z1bmN0aW9uIHJlYWRfZmxv
YXQoKSB7CisgIHJldHVybiBDYW1sX2Zvcm1hdC5jYW1sX2Zsb2F0X29mX3N0cmluZygoQ2FtbF9p
by5jYW1sX21sX2ZsdXNoKHN0ZG91dCksIGlucHV0X2xpbmUoc3RkaW4pKSk7Cit9CisKK2Z1bmN0
aW9uIHN0cmluZ19vZl9mb3JtYXQocGFyYW0pIHsKKyAgcmV0dXJuIHBhcmFtWzFdOworfQorCitm
dW5jdGlvbiAkY2FyZXQkY2FyZXQocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIC8qIEZvcm1h
dCAqL1sKKyAgICAgICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdChwYXJh
bVswXSwgcGFyYW0kMVswXSksCisgICAgICAgICAgJGNhcmV0KHBhcmFtWzFdLCAkY2FyZXQoIiUs
IiwgcGFyYW0kMVsxXSkpCisgICAgICAgIF07Cit9CisKK3ZhciBleGl0X2Z1bmN0aW9uID0gW2Zs
dXNoX2FsbF07CisKK2Z1bmN0aW9uIGF0X2V4aXQoZikgeworICB2YXIgZyA9IGV4aXRfZnVuY3Rp
b25bMF07CisgIGV4aXRfZnVuY3Rpb25bMF0gPSBmdW5jdGlvbiAoKSB7CisgICAgQ3VycnkuXzEo
ZiwgLyogKCkgKi8wKTsKKyAgICByZXR1cm4gQ3VycnkuXzEoZywgLyogKCkgKi8wKTsKKyAgfTsK
KyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gZG9fYXRfZXhpdCgpIHsKKyAgcmV0
dXJuIEN1cnJ5Ll8xKGV4aXRfZnVuY3Rpb25bMF0sIC8qICgpICovMCk7Cit9CisKK2Z1bmN0aW9u
IGV4aXQoKSB7CisgIGRvX2F0X2V4aXQoLyogKCkgKi8wKTsKKyAgcmV0dXJuIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX3N5c19leGl0IG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwordmFyIG1heF9pbnQgPSAy
MTQ3NDgzNjQ3OworCit2YXIgaW5maW5pdHkgPSBJbmZpbml0eTsKKwordmFyIG5lZ19pbmZpbml0
eSA9IC1JbmZpbml0eTsKKwordmFyIG5hbiA9IE5hTjsKKwordmFyIG1heF9mbG9hdCA9IE51bWJl
ci5NQVhfVkFMVUU7CisKK3ZhciBtaW5fZmxvYXQgPSBOdW1iZXIuTUlOX1ZBTFVFOworCit2YXIg
ZXBzaWxvbl9mbG9hdCA9IDIuMjIwNDQ2MDQ5MjUwMzEzZS0xNjsKKwordmFyIGZsdXNoID0gQ2Ft
bF9pby5jYW1sX21sX2ZsdXNoOworCit2YXIgb3V0cHV0X2NoYXIgPSBDYW1sX2lvLmNhbWxfbWxf
b3V0cHV0X2NoYXI7CisKK3ZhciBvdXRwdXRfYnl0ZSA9IENhbWxfaW8uY2FtbF9tbF9vdXRwdXRf
Y2hhcjsKKworZnVuY3Rpb24gb3V0cHV0X2JpbmFyeV9pbnQoXywgXyQxKSB7CisgIHJldHVybiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9vdXRwdXRfaW50IG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwor
ZnVuY3Rpb24gc2Vla19vdXQoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0aHJvdyAiY2FtbF9tbF9zZWVrX291dCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xl
c2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHBvc19vdXQoKSB7
CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3Nf
b3V0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0o
KTsKK30KKworZnVuY3Rpb24gb3V0X2NoYW5uZWxfbGVuZ3RoKCkgeworICByZXR1cm4gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfY2hhbm5lbF9zaXplIG5vdCBpbXBs
ZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVu
Y3Rpb24gc2V0X2JpbmFyeV9tb2RlX291dChfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSBub3QgaW1wbGVt
ZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK3ZhciBp
bnB1dF9jaGFyID0gQ2FtbF9pby5jYW1sX21sX2lucHV0X2NoYXI7CisKK3ZhciBpbnB1dF9ieXRl
ID0gQ2FtbF9pby5jYW1sX21sX2lucHV0X2NoYXI7CisKK2Z1bmN0aW9uIGlucHV0X2JpbmFyeV9p
bnQoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9t
bF9pbnB1dF9pbnQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAg
ICAgICAgfSgpOworfQorCitmdW5jdGlvbiBpbnB1dF92YWx1ZSgpIHsKKyAgcmV0dXJuIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2lucHV0X3ZhbHVlIG5vdCBpbXBsZW1l
bnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rp
b24gc2Vla19pbihfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHRocm93ICJjYW1sX21sX3NlZWtfaW4gbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5
ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBwb3NfaW4oKSB7CisgIHJldHVy
biBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3NfaW4gbm90IGlt
cGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitm
dW5jdGlvbiBpbl9jaGFubmVsX2xlbmd0aCgpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIHRocm93ICJjYW1sX21sX2NoYW5uZWxfc2l6ZSBub3QgaW1wbGVtZW50ZWQgYnkg
YnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIGNsb3Nl
X2luKCkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxf
bWxfY2xvc2VfY2hhbm5lbCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsK
KyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHNldF9iaW5hcnlfbW9kZV9pbihfLCBfJDEp
IHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21sX3Nl
dF9iaW5hcnlfbW9kZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAg
ICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIExhcmdlRmlsZV8wMDAoXywgXyQxKSB7CisgIHJl
dHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9zZWVrX291dF82
NCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7
Cit9CisKK2Z1bmN0aW9uIExhcmdlRmlsZV8wMDEoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3Nfb3V0XzY0IG5vdCBpbXBsZW1lbnRlZCBi
eSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gTGFy
Z2VGaWxlXzAwMigpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93
ICJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0
IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIExhcmdlRmlsZV8wMDMoXywg
XyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9t
bF9zZWVrX2luXzY0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAg
ICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gTGFyZ2VGaWxlXzAwNCgpIHsKKyAgcmV0dXJuIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21sX3Bvc19pbl82NCBub3QgaW1w
bGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1
bmN0aW9uIExhcmdlRmlsZV8wMDUoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB0aHJvdyAiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQgbm90IGltcGxlbWVudGVkIGJ5IGJ1
Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCit2YXIgTGFyZ2VGaWxlID0g
WworICBMYXJnZUZpbGVfMDAwLAorICBMYXJnZUZpbGVfMDAxLAorICBMYXJnZUZpbGVfMDAyLAor
ICBMYXJnZUZpbGVfMDAzLAorICBMYXJnZUZpbGVfMDA0LAorICBMYXJnZUZpbGVfMDA1CitdOwor
CitleHBvcnRzLmludmFsaWRfYXJnICAgICAgICAgPSBpbnZhbGlkX2FyZzsKK2V4cG9ydHMuZmFp
bHdpdGggICAgICAgICAgICA9IGZhaWx3aXRoOworZXhwb3J0cy5FeGl0ICAgICAgICAgICAgICAg
ID0gRXhpdDsKK2V4cG9ydHMubWluICAgICAgICAgICAgICAgICA9IG1pbjsKK2V4cG9ydHMubWF4
ICAgICAgICAgICAgICAgICA9IG1heDsKK2V4cG9ydHMuYWJzICAgICAgICAgICAgICAgICA9IGFi
czsKK2V4cG9ydHMubWF4X2ludCAgICAgICAgICAgICA9IG1heF9pbnQ7CitleHBvcnRzLm1pbl9p
bnQgICAgICAgICAgICAgPSBtaW5faW50OworZXhwb3J0cy5sbm90ICAgICAgICAgICAgICAgID0g
bG5vdDsKK2V4cG9ydHMuaW5maW5pdHkgICAgICAgICAgICA9IGluZmluaXR5OworZXhwb3J0cy5u
ZWdfaW5maW5pdHkgICAgICAgID0gbmVnX2luZmluaXR5OworZXhwb3J0cy5uYW4gICAgICAgICAg
ICAgICAgID0gbmFuOworZXhwb3J0cy5tYXhfZmxvYXQgICAgICAgICAgID0gbWF4X2Zsb2F0Owor
ZXhwb3J0cy5taW5fZmxvYXQgICAgICAgICAgID0gbWluX2Zsb2F0OworZXhwb3J0cy5lcHNpbG9u
X2Zsb2F0ICAgICAgID0gZXBzaWxvbl9mbG9hdDsKK2V4cG9ydHMuJGNhcmV0ICAgICAgICAgICAg
ICA9ICRjYXJldDsKK2V4cG9ydHMuY2hhcl9vZl9pbnQgICAgICAgICA9IGNoYXJfb2ZfaW50Owor
ZXhwb3J0cy5zdHJpbmdfb2ZfYm9vbCAgICAgID0gc3RyaW5nX29mX2Jvb2w7CitleHBvcnRzLmJv
b2xfb2Zfc3RyaW5nICAgICAgPSBib29sX29mX3N0cmluZzsKK2V4cG9ydHMuc3RyaW5nX29mX2lu
dCAgICAgICA9IHN0cmluZ19vZl9pbnQ7CitleHBvcnRzLnN0cmluZ19vZl9mbG9hdCAgICAgPSBz
dHJpbmdfb2ZfZmxvYXQ7CitleHBvcnRzLiRhdCAgICAgICAgICAgICAgICAgPSAkYXQ7CitleHBv
cnRzLnN0ZGluICAgICAgICAgICAgICAgPSBzdGRpbjsKK2V4cG9ydHMuc3Rkb3V0ICAgICAgICAg
ICAgICA9IHN0ZG91dDsKK2V4cG9ydHMuc3RkZXJyICAgICAgICAgICAgICA9IHN0ZGVycjsKK2V4
cG9ydHMucHJpbnRfY2hhciAgICAgICAgICA9IHByaW50X2NoYXI7CitleHBvcnRzLnByaW50X3N0
cmluZyAgICAgICAgPSBwcmludF9zdHJpbmc7CitleHBvcnRzLnByaW50X2J5dGVzICAgICAgICAg
PSBwcmludF9ieXRlczsKK2V4cG9ydHMucHJpbnRfaW50ICAgICAgICAgICA9IHByaW50X2ludDsK
K2V4cG9ydHMucHJpbnRfZmxvYXQgICAgICAgICA9IHByaW50X2Zsb2F0OworZXhwb3J0cy5wcmlu
dF9lbmRsaW5lICAgICAgID0gcHJpbnRfZW5kbGluZTsKK2V4cG9ydHMucHJpbnRfbmV3bGluZSAg
ICAgICA9IHByaW50X25ld2xpbmU7CitleHBvcnRzLnByZXJyX2NoYXIgICAgICAgICAgPSBwcmVy
cl9jaGFyOworZXhwb3J0cy5wcmVycl9zdHJpbmcgICAgICAgID0gcHJlcnJfc3RyaW5nOworZXhw
b3J0cy5wcmVycl9ieXRlcyAgICAgICAgID0gcHJlcnJfYnl0ZXM7CitleHBvcnRzLnByZXJyX2lu
dCAgICAgICAgICAgPSBwcmVycl9pbnQ7CitleHBvcnRzLnByZXJyX2Zsb2F0ICAgICAgICAgPSBw
cmVycl9mbG9hdDsKK2V4cG9ydHMucHJlcnJfZW5kbGluZSAgICAgICA9IHByZXJyX2VuZGxpbmU7
CitleHBvcnRzLnByZXJyX25ld2xpbmUgICAgICAgPSBwcmVycl9uZXdsaW5lOworZXhwb3J0cy5y
ZWFkX2xpbmUgICAgICAgICAgID0gcmVhZF9saW5lOworZXhwb3J0cy5yZWFkX2ludCAgICAgICAg
ICAgID0gcmVhZF9pbnQ7CitleHBvcnRzLnJlYWRfZmxvYXQgICAgICAgICAgPSByZWFkX2Zsb2F0
OworZXhwb3J0cy5vcGVuX291dCAgICAgICAgICAgID0gb3Blbl9vdXQ7CitleHBvcnRzLm9wZW5f
b3V0X2JpbiAgICAgICAgPSBvcGVuX291dF9iaW47CitleHBvcnRzLm9wZW5fb3V0X2dlbiAgICAg
ICAgPSBvcGVuX291dF9nZW47CitleHBvcnRzLmZsdXNoICAgICAgICAgICAgICAgPSBmbHVzaDsK
K2V4cG9ydHMuZmx1c2hfYWxsICAgICAgICAgICA9IGZsdXNoX2FsbDsKK2V4cG9ydHMub3V0cHV0
X2NoYXIgICAgICAgICA9IG91dHB1dF9jaGFyOworZXhwb3J0cy5vdXRwdXRfc3RyaW5nICAgICAg
ID0gb3V0cHV0X3N0cmluZzsKK2V4cG9ydHMub3V0cHV0X2J5dGVzICAgICAgICA9IG91dHB1dF9i
eXRlczsKK2V4cG9ydHMub3V0cHV0ICAgICAgICAgICAgICA9IG91dHB1dDsKK2V4cG9ydHMub3V0
cHV0X3N1YnN0cmluZyAgICA9IG91dHB1dF9zdWJzdHJpbmc7CitleHBvcnRzLm91dHB1dF9ieXRl
ICAgICAgICAgPSBvdXRwdXRfYnl0ZTsKK2V4cG9ydHMub3V0cHV0X2JpbmFyeV9pbnQgICA9IG91
dHB1dF9iaW5hcnlfaW50OworZXhwb3J0cy5vdXRwdXRfdmFsdWUgICAgICAgID0gb3V0cHV0X3Zh
bHVlOworZXhwb3J0cy5zZWVrX291dCAgICAgICAgICAgID0gc2Vla19vdXQ7CitleHBvcnRzLnBv
c19vdXQgICAgICAgICAgICAgPSBwb3Nfb3V0OworZXhwb3J0cy5vdXRfY2hhbm5lbF9sZW5ndGgg
ID0gb3V0X2NoYW5uZWxfbGVuZ3RoOworZXhwb3J0cy5jbG9zZV9vdXQgICAgICAgICAgID0gY2xv
c2Vfb3V0OworZXhwb3J0cy5jbG9zZV9vdXRfbm9lcnIgICAgID0gY2xvc2Vfb3V0X25vZXJyOwor
ZXhwb3J0cy5zZXRfYmluYXJ5X21vZGVfb3V0ID0gc2V0X2JpbmFyeV9tb2RlX291dDsKK2V4cG9y
dHMub3Blbl9pbiAgICAgICAgICAgICA9IG9wZW5faW47CitleHBvcnRzLm9wZW5faW5fYmluICAg
ICAgICAgPSBvcGVuX2luX2JpbjsKK2V4cG9ydHMub3Blbl9pbl9nZW4gICAgICAgICA9IG9wZW5f
aW5fZ2VuOworZXhwb3J0cy5pbnB1dF9jaGFyICAgICAgICAgID0gaW5wdXRfY2hhcjsKK2V4cG9y
dHMuaW5wdXRfbGluZSAgICAgICAgICA9IGlucHV0X2xpbmU7CitleHBvcnRzLmlucHV0ICAgICAg
ICAgICAgICAgPSBpbnB1dDsKK2V4cG9ydHMucmVhbGx5X2lucHV0ICAgICAgICA9IHJlYWxseV9p
bnB1dDsKK2V4cG9ydHMucmVhbGx5X2lucHV0X3N0cmluZyA9IHJlYWxseV9pbnB1dF9zdHJpbmc7
CitleHBvcnRzLmlucHV0X2J5dGUgICAgICAgICAgPSBpbnB1dF9ieXRlOworZXhwb3J0cy5pbnB1
dF9iaW5hcnlfaW50ICAgID0gaW5wdXRfYmluYXJ5X2ludDsKK2V4cG9ydHMuaW5wdXRfdmFsdWUg
ICAgICAgICA9IGlucHV0X3ZhbHVlOworZXhwb3J0cy5zZWVrX2luICAgICAgICAgICAgID0gc2Vl
a19pbjsKK2V4cG9ydHMucG9zX2luICAgICAgICAgICAgICA9IHBvc19pbjsKK2V4cG9ydHMuaW5f
Y2hhbm5lbF9sZW5ndGggICA9IGluX2NoYW5uZWxfbGVuZ3RoOworZXhwb3J0cy5jbG9zZV9pbiAg
ICAgICAgICAgID0gY2xvc2VfaW47CitleHBvcnRzLmNsb3NlX2luX25vZXJyICAgICAgPSBjbG9z
ZV9pbl9ub2VycjsKK2V4cG9ydHMuc2V0X2JpbmFyeV9tb2RlX2luICA9IHNldF9iaW5hcnlfbW9k
ZV9pbjsKK2V4cG9ydHMuTGFyZ2VGaWxlICAgICAgICAgICA9IExhcmdlRmlsZTsKK2V4cG9ydHMu
c3RyaW5nX29mX2Zvcm1hdCAgICA9IHN0cmluZ19vZl9mb3JtYXQ7CitleHBvcnRzLiRjYXJldCRj
YXJldCAgICAgICAgPSAkY2FyZXQkY2FyZXQ7CitleHBvcnRzLmV4aXQgICAgICAgICAgICAgICAg
PSBleGl0OworZXhwb3J0cy5hdF9leGl0ICAgICAgICAgICAgID0gYXRfZXhpdDsKK2V4cG9ydHMu
dmFsaWRfZmxvYXRfbGV4ZW0gICA9IHZhbGlkX2Zsb2F0X2xleGVtOworZXhwb3J0cy51bnNhZmVf
cmVhbGx5X2lucHV0ID0gdW5zYWZlX3JlYWxseV9pbnB1dDsKK2V4cG9ydHMuZG9fYXRfZXhpdCAg
ICAgICAgICA9IGRvX2F0X2V4aXQ7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5k
IG9mIHBlcnZhc2l2ZXMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsK
KworCisgIF9yZWdpc3RyeVsncHJpbnRmJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBv
cnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBwcmludGYuanMgLy8vLy8vLy8KKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIEN1cnJ5ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3Zh
ciBCdWZmZXIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2J1ZmZlciIpOwordmFyIFBlcnZhc2l2
ZXMgICAgICAgICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxpbnRlcm5hbEZv
cm1hdCA9IHJlcXVpcmUoIi4vY2FtbGludGVybmFsRm9ybWF0Iik7CisKK2Z1bmN0aW9uIGtmcHJp
bnRmKGssIG8sIHBhcmFtKSB7CisgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmlu
dGYoZnVuY3Rpb24gKG8sIGFjYykgeworICAgICAgICAgICAgICBDYW1saW50ZXJuYWxGb3JtYXQu
b3V0cHV0X2FjYyhvLCBhY2MpOworICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoaywgbyk7
CisgICAgICAgICAgICB9LCBvLCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitm
dW5jdGlvbiBrYnByaW50ZihrLCBiLCBwYXJhbSkgeworICByZXR1cm4gQ2FtbGludGVybmFsRm9y
bWF0Lm1ha2VfcHJpbnRmKGZ1bmN0aW9uIChiLCBhY2MpIHsKKyAgICAgICAgICAgICAgQ2FtbGlu
dGVybmFsRm9ybWF0LmJ1ZnB1dF9hY2MoYiwgYWNjKTsKKyAgICAgICAgICAgICAgcmV0dXJuIEN1
cnJ5Ll8xKGssIGIpOworICAgICAgICAgICAgfSwgYiwgLyogRW5kX29mX2FjYyAqLzAsIHBhcmFt
WzBdKTsKK30KKworZnVuY3Rpb24gaWtmcHJpbnRmKGssIG9jLCBwYXJhbSkgeworICByZXR1cm4g
Q2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGZ1bmN0aW9uIChvYywgXykgeworICAgICAg
ICAgICAgICByZXR1cm4gQ3VycnkuXzEoaywgb2MpOworICAgICAgICAgICAgfSwgb2MsIC8qIEVu
ZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIGZwcmludGYob2MsIGZtdCkg
eworICByZXR1cm4ga2ZwcmludGYoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgICAgICAgICAgfSwgb2MsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIGJwcmlu
dGYoYiwgZm10KSB7CisgIHJldHVybiBrYnByaW50ZihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgICB9LCBiLCBmbXQpOworfQorCitmdW5j
dGlvbiBpZnByaW50ZihvYywgZm10KSB7CisgIHJldHVybiBpa2ZwcmludGYoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgICAgfSwgb2MsIGZt
dCk7Cit9CisKK2Z1bmN0aW9uIHByaW50ZihmbXQpIHsKKyAgcmV0dXJuIGZwcmludGYoUGVydmFz
aXZlcy5zdGRvdXQsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIGVwcmludGYoZm10KSB7CisgIHJldHVy
biBmcHJpbnRmKFBlcnZhc2l2ZXMuc3RkZXJyLCBmbXQpOworfQorCitmdW5jdGlvbiBrc3ByaW50
ZihrLCBwYXJhbSkgeworICB2YXIgayRwcmltZSA9IGZ1bmN0aW9uIChfLCBhY2MpIHsKKyAgICB2
YXIgYnVmID0gQnVmZmVyLmNyZWF0ZSg2NCk7CisgICAgQ2FtbGludGVybmFsRm9ybWF0LnN0cnB1
dF9hY2MoYnVmLCBhY2MpOworICAgIHJldHVybiBDdXJyeS5fMShrLCBCdWZmZXIuY29udGVudHMo
YnVmKSk7CisgIH07CisgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYoayRw
cmltZSwgLyogKCkgKi8wLCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5j
dGlvbiBzcHJpbnRmKGZtdCkgeworICByZXR1cm4ga3NwcmludGYoZnVuY3Rpb24gKHMpIHsKKyAg
ICAgICAgICAgICAgcmV0dXJuIHM7CisgICAgICAgICAgICB9LCBmbXQpOworfQorCit2YXIga3By
aW50ZiA9IGtzcHJpbnRmOworCitleHBvcnRzLmZwcmludGYgICA9IGZwcmludGY7CitleHBvcnRz
LnByaW50ZiAgICA9IHByaW50ZjsKK2V4cG9ydHMuZXByaW50ZiAgID0gZXByaW50ZjsKK2V4cG9y
dHMuc3ByaW50ZiAgID0gc3ByaW50ZjsKK2V4cG9ydHMuYnByaW50ZiAgID0gYnByaW50ZjsKK2V4
cG9ydHMuaWZwcmludGYgID0gaWZwcmludGY7CitleHBvcnRzLmtmcHJpbnRmICA9IGtmcHJpbnRm
OworZXhwb3J0cy5pa2ZwcmludGYgPSBpa2ZwcmludGY7CitleHBvcnRzLmtzcHJpbnRmICA9IGtz
cHJpbnRmOworZXhwb3J0cy5rYnByaW50ZiAgPSBrYnByaW50ZjsKK2V4cG9ydHMua3ByaW50ZiAg
ID0ga3ByaW50ZjsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgcHJpbnRm
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ3ByaW50J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8v
Ly8vLyBzdGFydCBvZiBwcmludC5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVND
UklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7
CisKK3ZhciBMaXN0ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3Zh
ciBTZXhwciAgID0gcmVxdWlyZSgiLi9zZXhwciIpOwordmFyIEFycmFuZ2UgPSByZXF1aXJlKCIu
L2FycmFuZ2UiKTsKKworZnVuY3Rpb24gaW5zdHIob2MsIHdpZHRoLCBlKSB7CisgIHJldHVybiBT
ZXhwci5vdXRwdXQob2MsIHdpZHRoLCBBcnJhbmdlLmluc3RyKGUpKTsKK30KKworZnVuY3Rpb24g
ZnVuYyhvYywgd2lkdGgsIGYpIHsKKyAgcmV0dXJuIFNleHByLm91dHB1dChvYywgd2lkdGgsIEFy
cmFuZ2UuZnVuYyhmKSk7Cit9CisKK2Z1bmN0aW9uIG1vZHVsZV8ob2MsIHdpZHRoLCBtKSB7Cisg
IHJldHVybiBTZXhwci5vdXRwdXQob2MsIHdpZHRoLCBBcnJhbmdlLm1vZHVsZV8obSkpOworfQor
CitmdW5jdGlvbiBzY3JpcHQob2MsIHdpZHRoLCBtb2RlLCBzKSB7CisgIHJldHVybiBMaXN0Lml0
ZXIoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiBTZXhwci5vdXRwdXQo
b2MsIHdpZHRoLCBwYXJhbSk7CisgICAgICAgICAgICB9LCBBcnJhbmdlLnNjcmlwdChtb2RlLCBz
KSk7Cit9CisKK2V4cG9ydHMuaW5zdHIgICA9IGluc3RyOworZXhwb3J0cy5mdW5jICAgID0gZnVu
YzsKK2V4cG9ydHMubW9kdWxlXyA9IG1vZHVsZV87CitleHBvcnRzLnNjcmlwdCAgPSBzY3JpcHQ7
CisvKiBBcnJhbmdlIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgcHJpbnQu
anMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3Ry
eVsnc2NyaXB0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8v
Ly8vLyBzdGFydCBvZiBzY3JpcHQuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVT
Q1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3Qn
OworCit2YXIgQ2FtbF9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Nh
bWxfZXhjZXB0aW9ucyIpOworCit2YXIgU3ludGF4ID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgi
U2NyaXB0LlN5bnRheCIpOworCitleHBvcnRzLlN5bnRheCA9IFN5bnRheDsKKy8qIE5vIHNpZGUg
ZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2Ygc2NyaXB0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1
cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ3NleHByJ10gPSBmdW5jdGlvbigp
IHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBzZXhwci5qcyAv
Ly8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExF
QVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBMaXN0ICAgICAgID0gcmVx
dWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBCbG9jayAgICAgID0gcmVxdWly
ZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2YXIgQ3VycnkgICAgICA9IHJlcXVpcmUo
ImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyICQkU3RyaW5nICAgPSByZXF1aXJlKCJi
cy1wbGF0Zm9ybS9saWIvanMvc3RyaW5nIik7Cit2YXIgUGVydmFzaXZlcyA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7CisKK2Z1bmN0aW9uICRjYXJldCRwbHVzKHMs
IHIpIHsKKyAgcmV0dXJuIC8qIENvbmNhdCAqL0Jsb2NrLl9fKDEsIFsvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgLyogTGVhZiAqL0Jsb2NrLl9fKDAsIFtzXSksCisgICAgICAgICAgICAgIC8qIDo6
ICovWworICAgICAgICAgICAgICAgIHIsCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gJHBsdXMkY2FyZXQo
ciwgcykgeworICByZXR1cm4gLyogQ29uY2F0ICovQmxvY2suX18oMSwgWy8qIDo6ICovWworICAg
ICAgICAgICAgICByLAorICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAv
KiBMZWFmICovQmxvY2suX18oMCwgW3NdKSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpdGVyKGYsIHBh
cmFtKSB7CisgIGlmIChwYXJhbS50YWcpIHsKKyAgICByZXR1cm4gTGlzdC5pdGVyKGZ1bmN0aW9u
IChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGYsIHBhcmFtKTsKKyAgICAg
ICAgICAgICAgfSwgcGFyYW1bMF0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDdXJyeS5f
MShmLCBwYXJhbVswXSk7CisgIH0KK30KKworZnVuY3Rpb24gY29uY2F0KHBhcmFtKSB7CisgIGlm
IChwYXJhbS50YWcpIHsKKyAgICByZXR1cm4gJCRTdHJpbmcuY29uY2F0KCIiLCBMaXN0Lm1hcChj
b25jYXQsIHBhcmFtWzBdKSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOwor
ICB9Cit9CisKK2Z1bmN0aW9uIHBwKG9mZiwgd2lkdGgsIHBhcmFtKSB7CisgIGlmIChwYXJhbS50
YWcpIHsKKyAgICB2YXIgcyA9IHBhcmFtWzBdOworICAgIHZhciBwYXJ0aWFsX2FyZyA9IG9mZiAr
IDIgfCAwOworICAgIHZhciBtYXRjaCA9IExpc3Quc3BsaXQoTGlzdC5tYXAoZnVuY3Rpb24gKHBh
cmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiBwcChwYXJ0aWFsX2FyZywgd2lkdGgsIHBhcmFt
KTsKKyAgICAgICAgICAgIH0sIHBhcmFtWzFdKSk7CisgICAgdmFyIHJzID0gbWF0Y2hbMV07Cisg
ICAgdmFyIGxlbiA9IChzLmxlbmd0aCArIExpc3QubGVuZ3RoKHJzKSB8IDApICsgTGlzdC5mb2xk
X2xlZnQoZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICAgIHJldHVybiBwcmltICsg
cHJpbSQxIHwgMDsKKyAgICAgICAgfSwgMiwgbWF0Y2hbMF0pIHwgMDsKKyAgICB2YXIgbWF0Y2gk
MTsKKyAgICBpZiAoKG9mZiArIGxlbiB8IDApIDw9IHdpZHRoKSB7CisgICAgICBtYXRjaCQxID0g
LyogdHVwbGUgKi9bCisgICAgICAgICIgIiwKKyAgICAgICAgIiIKKyAgICAgIF07CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgdmFyIGluZGVudCA9ICQkU3RyaW5nLm1ha2Uob2ZmLCAvKiAiICIg
Ki8zMik7CisgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICJcbiAgIiArIGlu
ZGVudCwKKyAgICAgICAgIlxuIiArIGluZGVudAorICAgICAgXTsKKyAgICB9CisgICAgdmFyIHNl
cCA9IG1hdGNoJDFbMF07CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgbGVu
LAorICAgICAgICAgICAgJGNhcmV0JHBsdXMoIigiLCAkY2FyZXQkcGx1cyhzLCAkcGx1cyRjYXJl
dCgkcGx1cyRjYXJldCgvKiBDb25jYXQgKi9CbG9jay5fXygxLCBbTGlzdC5tYXAoZnVuY3Rpb24g
KHIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRjYXJl
dCRwbHVzKHNlcCwgcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBy
cyldKSwgbWF0Y2gkMVsxXSksICIpIikpKQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7Cisg
ICAgdmFyIHMkMSA9IHBhcmFtWzBdOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgIHMkMS5sZW5ndGgsCisgICAgICAgICAgICAvKiBMZWFmICovQmxvY2suX18oMCwgW3MkMV0p
CisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXQob2MsIHdpZHRoLCB4KSB7
CisgIGl0ZXIoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLm91
dHB1dF9zdHJpbmcob2MsIHBhcmFtKTsKKyAgICAgIH0sIHBwKDAsIHdpZHRoLCB4KVsxXSk7Cisg
IFBlcnZhc2l2ZXMub3V0cHV0X3N0cmluZyhvYywgIlxuIik7CisgIHJldHVybiBDdXJyeS5fMShQ
ZXJ2YXNpdmVzLmZsdXNoLCBvYyk7Cit9CisKK2Z1bmN0aW9uIHByaW50KHBhcmFtLCBwYXJhbSQx
KSB7CisgIHJldHVybiBvdXRwdXQoUGVydmFzaXZlcy5zdGRvdXQsIHBhcmFtLCBwYXJhbSQxKTsK
K30KKworZnVuY3Rpb24gdG9fc3RyaW5nKHdpZHRoLCB4KSB7CisgIHJldHVybiBjb25jYXQocHAo
MCwgd2lkdGgsIHgpWzFdKSArICJcbiI7Cit9CisKK2V4cG9ydHMub3V0cHV0ICAgID0gb3V0cHV0
OworZXhwb3J0cy5wcmludCAgICAgPSBwcmludDsKK2V4cG9ydHMudG9fc3RyaW5nID0gdG9fc3Ry
aW5nOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBzZXhwci5qcyAvLy8v
Ly8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wydzb3Vy
Y2UnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0
YXJ0IG9mIHNvdXJjZS5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBW
RVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3Zh
ciBCbG9jayAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2YXIg
Q3VycnkgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyIFBy
aW50ZiAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcHJpbnRmIik7Cit2YXIgQ2Ft
bF9vYmogICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOwordmFyIFBl
cnZhc2l2ZXMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVydmFzaXZlcyIpOworCitm
dW5jdGlvbiAkYXQkYXQoeCwgcmVnaW9uKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgLyogYXQgKi9yZWdpb24sCisgICAgICAgICAgLyogaXQgKi94CisgICAgICAgIF07Cit9
CisKK3ZhciBub19wb3MgPSAvKiByZWNvcmQgKi9bCisgIC8qIGZpbGUgKi8iIiwKKyAgLyogbGlu
ZSAqLzAsCisgIC8qIGNvbHVtbiAqLzAKK107CisKK3ZhciBub19yZWdpb24gPSAvKiByZWNvcmQg
Ki9bCisgIC8qIGxlZnQgKi9ub19wb3MsCisgIC8qIHJpZ2h0ICovbm9fcG9zCitdOworCitmdW5j
dGlvbiBzdHJpbmdfb2ZfcG9zKHBvcykgeworICBpZiAocG9zWy8qIGxpbmUgKi8xXSA9PT0gLTEp
IHsKKyAgICByZXR1cm4gQ3VycnkuXzEoUHJpbnRmLnNwcmludGYoLyogRm9ybWF0ICovWworICAg
ICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAiMHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50
ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICov
NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAg
ICIweCV4IgorICAgICAgICAgICAgICAgICAgXSksIHBvc1svKiBjb2x1bW4gKi8yXSk7CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuIFBlcnZhc2l2ZXMuc3RyaW5nX29mX2ludChwb3NbLyogbGlu
ZSAqLzFdKSArICgiLiIgKyBQZXJ2YXNpdmVzLnN0cmluZ19vZl9pbnQocG9zWy8qIGNvbHVtbiAq
LzJdICsgMSB8IDApKTsKKyAgfQorfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfcmVnaW9uKHIpIHsK
KyAgcmV0dXJuIHJbLyogbGVmdCAqLzBdWy8qIGZpbGUgKi8wXSArICgiOiIgKyAoc3RyaW5nX29m
X3BvcyhyWy8qIGxlZnQgKi8wXSkgKyAoCisgICAgICAgICAgICAgIENhbWxfb2JqLmNhbWxfZXF1
YWwoclsvKiByaWdodCAqLzFdLCByWy8qIGxlZnQgKi8wXSkgPyAiIiA6ICItIiArIHN0cmluZ19v
Zl9wb3MoclsvKiByaWdodCAqLzFdKQorICAgICAgICAgICAgKSkpOworfQorCitleHBvcnRzLm5v
X3BvcyAgICAgICAgICAgPSBub19wb3M7CitleHBvcnRzLm5vX3JlZ2lvbiAgICAgICAgPSBub19y
ZWdpb247CitleHBvcnRzLnN0cmluZ19vZl9wb3MgICAgPSBzdHJpbmdfb2ZfcG9zOworZXhwb3J0
cy5zdHJpbmdfb2ZfcmVnaW9uID0gc3RyaW5nX29mX3JlZ2lvbjsKK2V4cG9ydHMuJGF0JGF0ICAg
ICAgICAgICA9ICRhdCRhdDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2Yg
c291cmNlLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBf
cmVnaXN0cnlbJ3N0cmluZyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9
OworLy8vLy8vLy8gc3RhcnQgb2Ygc3RyaW5nLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisK
K3ZhciBMaXN0ICAgICAgICA9IHJlcXVpcmUoIi4vbGlzdCIpOwordmFyIEJ5dGVzICAgICAgID0g
cmVxdWlyZSgiLi9ieXRlcyIpOwordmFyIENhbWxfaW50MzIgID0gcmVxdWlyZSgiLi9jYW1sX2lu
dDMyIik7Cit2YXIgQ2FtbF9zdHJpbmcgPSByZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7CisKK2Z1
bmN0aW9uIG1ha2UobiwgYykgeworICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5n
KEJ5dGVzLm1ha2UobiwgYykpOworfQorCitmdW5jdGlvbiBpbml0KG4sIGYpIHsKKyAgcmV0dXJu
IENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5pbml0KG4sIGYpKTsKK30KKworZnVu
Y3Rpb24gY29weShzKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0
ZXMuY29weShDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykpKTsKK30KKworZnVuY3Rpb24g
c3ViKHMsIG9mcywgbGVuKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmco
Qnl0ZXMuc3ViKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgb2ZzLCBsZW4pKTsKK30K
KworZnVuY3Rpb24gY29uY2F0KHNlcCwgbCkgeworICBpZiAobCkgeworICAgIHZhciBoZCA9IGxb
MF07CisgICAgdmFyIG51bSA9IFswXTsKKyAgICB2YXIgbGVuID0gWzBdOworICAgIExpc3QuaXRl
cihmdW5jdGlvbiAocykgeworICAgICAgICAgIG51bVswXSA9IG51bVswXSArIDEgfCAwOworICAg
ICAgICAgIGxlblswXSA9IGxlblswXSArIHMubGVuZ3RoIHwgMDsKKyAgICAgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgICAgICB9LCBsKTsKKyAgICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxf
Y3JlYXRlX3N0cmluZyhsZW5bMF0gKyBDYW1sX2ludDMyLmltdWwoc2VwLmxlbmd0aCwgbnVtWzBd
IC0gMSB8IDApIHwgMCk7CisgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0cmluZyhoZCwgMCwg
ciwgMCwgaGQubGVuZ3RoKTsKKyAgICB2YXIgcG9zID0gW2hkLmxlbmd0aF07CisgICAgTGlzdC5p
dGVyKGZ1bmN0aW9uIChzKSB7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0cmlu
ZyhzZXAsIDAsIHIsIHBvc1swXSwgc2VwLmxlbmd0aCk7CisgICAgICAgICAgcG9zWzBdID0gcG9z
WzBdICsgc2VwLmxlbmd0aCB8IDA7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0
cmluZyhzLCAwLCByLCBwb3NbMF0sIHMubGVuZ3RoKTsKKyAgICAgICAgICBwb3NbMF0gPSBwb3Nb
MF0gKyBzLmxlbmd0aCB8IDA7CisgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAg
fSwgbFsxXSk7CisgICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhyKTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gIiI7CisgIH0KK30KKworZnVuY3Rpb24gaXRlcihmLCBz
KSB7CisgIHJldHVybiBCeXRlcy5pdGVyKGYsIENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhz
KSk7Cit9CisKK2Z1bmN0aW9uIGl0ZXJpKGYsIHMpIHsKKyAgcmV0dXJuIEJ5dGVzLml0ZXJpKGYs
IENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSk7Cit9CisKK2Z1bmN0aW9uIG1hcChmLCBz
KSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFwKGYsIENh
bWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkpOworfQorCitmdW5jdGlvbiBtYXBpKGYsIHMp
IHsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5tYXBpKGYsIENh
bWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkpOworfQorCitmdW5jdGlvbiBpc19zcGFjZShw
YXJhbSkgeworICB2YXIgc3dpdGNoZXIgPSBwYXJhbSAtIDkgfCAwOworICBpZiAoc3dpdGNoZXIg
PiA0IHx8IHN3aXRjaGVyIDwgMCkgeworICAgIGlmIChzd2l0Y2hlciAhPT0gMjMpIHsKKyAgICAg
IHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8q
IHRydWUgKi8xOworICAgIH0KKyAgfQorICBlbHNlIGlmIChzd2l0Y2hlciAhPT0gMikgeworICAg
IHJldHVybiAvKiB0cnVlICovMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2Ug
Ki8wOworICB9Cit9CisKK2Z1bmN0aW9uIHRyaW0ocykgeworICBpZiAocyA9PT0gIiIgfHwgIShp
c19zcGFjZShzLmNoYXJDb2RlQXQoMCkpIHx8IGlzX3NwYWNlKHMuY2hhckNvZGVBdChzLmxlbmd0
aCAtIDEgfCAwKSkpKSB7CisgICAgcmV0dXJuIHM7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy50cmltKENhbWxfc3RyaW5nLmJ5dGVz
X29mX3N0cmluZyhzKSkpOworICB9Cit9CisKK2Z1bmN0aW9uIGVzY2FwZWQocykgeworICB2YXIg
bmVlZHNfZXNjYXBlID0gZnVuY3Rpb24gKF9pKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAg
dmFyIGkgPSBfaTsKKyAgICAgIGlmIChpID49IHMubGVuZ3RoKSB7CisgICAgICAgIHJldHVybiAv
KiBmYWxzZSAqLzA7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNoID0g
cy5jaGFyQ29kZUF0KGkpOworICAgICAgICBpZiAobWF0Y2ggPj0gMzIpIHsKKyAgICAgICAgICB2
YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDM0IHwgMDsKKyAgICAgICAgICBpZiAoc3dpdGNoZXIgPiA1
OCB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICAgIGlmIChzd2l0Y2hlciA+PSA5Mykgewor
ICAgICAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgaWYgKHN3aXRjaGVyID4gNTcgfHwgc3dpdGNoZXIgPCAxKSB7CisgICAg
ICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAg
fTsKKyAgaWYgKG5lZWRzX2VzY2FwZSgwKSkgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5ieXRl
c190b19zdHJpbmcoQnl0ZXMuZXNjYXBlZChDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykp
KTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiBpbmRl
eChzLCBjKSB7CisgIHJldHVybiBCeXRlcy5pbmRleChDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJp
bmcocyksIGMpOworfQorCitmdW5jdGlvbiByaW5kZXgocywgYykgeworICByZXR1cm4gQnl0ZXMu
cmluZGV4KENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgYyk7Cit9CisKK2Z1bmN0aW9u
IGluZGV4X2Zyb20ocywgaSwgYykgeworICByZXR1cm4gQnl0ZXMuaW5kZXhfZnJvbShDYW1sX3N0
cmluZy5ieXRlc19vZl9zdHJpbmcocyksIGksIGMpOworfQorCitmdW5jdGlvbiByaW5kZXhfZnJv
bShzLCBpLCBjKSB7CisgIHJldHVybiBCeXRlcy5yaW5kZXhfZnJvbShDYW1sX3N0cmluZy5ieXRl
c19vZl9zdHJpbmcocyksIGksIGMpOworfQorCitmdW5jdGlvbiBjb250YWlucyhzLCBjKSB7Cisg
IHJldHVybiBCeXRlcy5jb250YWlucyhDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocyksIGMp
OworfQorCitmdW5jdGlvbiBjb250YWluc19mcm9tKHMsIGksIGMpIHsKKyAgcmV0dXJuIEJ5dGVz
LmNvbnRhaW5zX2Zyb20oQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBpLCBjKTsKK30K
KworZnVuY3Rpb24gcmNvbnRhaW5zX2Zyb20ocywgaSwgYykgeworICByZXR1cm4gQnl0ZXMucmNv
bnRhaW5zX2Zyb20oQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBpLCBjKTsKK30KKwor
ZnVuY3Rpb24gdXBwZXJjYXNlKHMpIHsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0
cmluZyhCeXRlcy51cHBlcmNhc2UoQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpKSk7Cit9
CisKK2Z1bmN0aW9uIGxvd2VyY2FzZShzKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190
b19zdHJpbmcoQnl0ZXMubG93ZXJjYXNlKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkp
OworfQorCitmdW5jdGlvbiBjYXBpdGFsaXplKHMpIHsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5
dGVzX3RvX3N0cmluZyhCeXRlcy5jYXBpdGFsaXplKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmlu
ZyhzKSkpOworfQorCitmdW5jdGlvbiB1bmNhcGl0YWxpemUocykgeworICByZXR1cm4gQ2FtbF9z
dHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5dGVzLnVuY2FwaXRhbGl6ZShDYW1sX3N0cmluZy5ieXRl
c19vZl9zdHJpbmcocykpKTsKK30KKwordmFyIGNvbXBhcmUgPSBDYW1sX3N0cmluZy5jYW1sX3N0
cmluZ19jb21wYXJlOworCit2YXIgZmlsbCA9IEJ5dGVzLmZpbGw7CisKK3ZhciBibGl0ID0gQnl0
ZXMuYmxpdF9zdHJpbmc7CisKK2V4cG9ydHMubWFrZSAgICAgICAgICAgPSBtYWtlOworZXhwb3J0
cy5pbml0ICAgICAgICAgICA9IGluaXQ7CitleHBvcnRzLmNvcHkgICAgICAgICAgID0gY29weTsK
K2V4cG9ydHMuc3ViICAgICAgICAgICAgPSBzdWI7CitleHBvcnRzLmZpbGwgICAgICAgICAgID0g
ZmlsbDsKK2V4cG9ydHMuYmxpdCAgICAgICAgICAgPSBibGl0OworZXhwb3J0cy5jb25jYXQgICAg
ICAgICA9IGNvbmNhdDsKK2V4cG9ydHMuaXRlciAgICAgICAgICAgPSBpdGVyOworZXhwb3J0cy5p
dGVyaSAgICAgICAgICA9IGl0ZXJpOworZXhwb3J0cy5tYXAgICAgICAgICAgICA9IG1hcDsKK2V4
cG9ydHMubWFwaSAgICAgICAgICAgPSBtYXBpOworZXhwb3J0cy50cmltICAgICAgICAgICA9IHRy
aW07CitleHBvcnRzLmVzY2FwZWQgICAgICAgID0gZXNjYXBlZDsKK2V4cG9ydHMuaW5kZXggICAg
ICAgICAgPSBpbmRleDsKK2V4cG9ydHMucmluZGV4ICAgICAgICAgPSByaW5kZXg7CitleHBvcnRz
LmluZGV4X2Zyb20gICAgID0gaW5kZXhfZnJvbTsKK2V4cG9ydHMucmluZGV4X2Zyb20gICAgPSBy
aW5kZXhfZnJvbTsKK2V4cG9ydHMuY29udGFpbnMgICAgICAgPSBjb250YWluczsKK2V4cG9ydHMu
Y29udGFpbnNfZnJvbSAgPSBjb250YWluc19mcm9tOworZXhwb3J0cy5yY29udGFpbnNfZnJvbSA9
IHJjb250YWluc19mcm9tOworZXhwb3J0cy51cHBlcmNhc2UgICAgICA9IHVwcGVyY2FzZTsKK2V4
cG9ydHMubG93ZXJjYXNlICAgICAgPSBsb3dlcmNhc2U7CitleHBvcnRzLmNhcGl0YWxpemUgICAg
ID0gY2FwaXRhbGl6ZTsKK2V4cG9ydHMudW5jYXBpdGFsaXplICAgPSB1bmNhcGl0YWxpemU7Citl
eHBvcnRzLmNvbXBhcmUgICAgICAgID0gY29tcGFyZTsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisv
Ly8vLy8vLyBlbmQgb2Ygc3RyaW5nLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsK
K8KgIH07CisKKworICBfcmVnaXN0cnlbJ3N5cyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQg
ZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Ygc3lzLmpzIC8vLy8vLy8vCisndXNlIHN0
cmljdCc7CisKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0aW9u
cyIpOworCit2YXIgaXNfanMgPSAvKiB0cnVlICovMTsKKwordmFyIG1hdGNoXzAwMSA9IC8qIGFy
cmF5ICovW107CisKK3ZhciBiaWdfZW5kaWFuID0gLyogZmFsc2UgKi8wOworCit2YXIgdW5peCA9
IC8qIHRydWUgKi8xOworCit2YXIgd2luMzIgPSAvKiBmYWxzZSAqLzA7CisKK3ZhciBjeWd3aW4g
PSAvKiBmYWxzZSAqLzA7CisKK3ZhciBtYXhfYXJyYXlfbGVuZ3RoID0gMjE0NzQ4MzY0NzsKKwor
dmFyIG1heF9zdHJpbmdfbGVuZ3RoID0gMjE0NzQ4MzY0NzsKKwordmFyIGludGVyYWN0aXZlID0g
Wy8qIGZhbHNlICovMF07CisKK2Z1bmN0aW9uIHNldF9zaWduYWwoXywgXyQxKSB7CisgIHJldHVy
biAvKiAoKSAqLzA7Cit9CisKK3ZhciBCcmVhayA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIlN5
cy5CcmVhayIpOworCitmdW5jdGlvbiBjYXRjaF9icmVhaygpIHsKKyAgcmV0dXJuIC8qICgpICov
MDsKK30KKwordmFyIGFyZ3YgPSBtYXRjaF8wMDE7CisKK3ZhciBleGVjdXRhYmxlX25hbWUgPSAi
Y21kIjsKKwordmFyIG9zX3R5cGUgPSAiVW5peCI7CisKK3ZhciB3b3JkX3NpemUgPSAzMjsKKwor
dmFyIHNpZ2FicnQgPSAtMTsKKwordmFyIHNpZ2Fscm0gPSAtMjsKKwordmFyIHNpZ2ZwZSA9IC0z
OworCit2YXIgc2lnaHVwID0gLTQ7CisKK3ZhciBzaWdpbGwgPSAtNTsKKwordmFyIHNpZ2ludCA9
IC02OworCit2YXIgc2lna2lsbCA9IC03OworCit2YXIgc2lncGlwZSA9IC04OworCit2YXIgc2ln
cXVpdCA9IC05OworCit2YXIgc2lnc2VndiA9IC0xMDsKKwordmFyIHNpZ3Rlcm0gPSAtMTE7CisK
K3ZhciBzaWd1c3IxID0gLTEyOworCit2YXIgc2lndXNyMiA9IC0xMzsKKwordmFyIHNpZ2NobGQg
PSAtMTQ7CisKK3ZhciBzaWdjb250ID0gLTE1OworCit2YXIgc2lnc3RvcCA9IC0xNjsKKwordmFy
IHNpZ3RzdHAgPSAtMTc7CisKK3ZhciBzaWd0dGluID0gLTE4OworCit2YXIgc2lndHRvdSA9IC0x
OTsKKwordmFyIHNpZ3Z0YWxybSA9IC0yMDsKKwordmFyIHNpZ3Byb2YgPSAtMjE7CisKK3ZhciBv
Y2FtbF92ZXJzaW9uID0gIjQuMDIuMytkZXYxLTIwMTUtMDctMTAiOworCitleHBvcnRzLmFyZ3Yg
ICAgICAgICAgICAgID0gYXJndjsKK2V4cG9ydHMuZXhlY3V0YWJsZV9uYW1lICAgPSBleGVjdXRh
YmxlX25hbWU7CitleHBvcnRzLmludGVyYWN0aXZlICAgICAgID0gaW50ZXJhY3RpdmU7CitleHBv
cnRzLm9zX3R5cGUgICAgICAgICAgID0gb3NfdHlwZTsKK2V4cG9ydHMudW5peCAgICAgICAgICAg
ICAgPSB1bml4OworZXhwb3J0cy53aW4zMiAgICAgICAgICAgICA9IHdpbjMyOworZXhwb3J0cy5j
eWd3aW4gICAgICAgICAgICA9IGN5Z3dpbjsKK2V4cG9ydHMud29yZF9zaXplICAgICAgICAgPSB3
b3JkX3NpemU7CitleHBvcnRzLmJpZ19lbmRpYW4gICAgICAgID0gYmlnX2VuZGlhbjsKK2V4cG9y
dHMuaXNfanMgICAgICAgICAgICAgPSBpc19qczsKK2V4cG9ydHMubWF4X3N0cmluZ19sZW5ndGgg
PSBtYXhfc3RyaW5nX2xlbmd0aDsKK2V4cG9ydHMubWF4X2FycmF5X2xlbmd0aCAgPSBtYXhfYXJy
YXlfbGVuZ3RoOworZXhwb3J0cy5zZXRfc2lnbmFsICAgICAgICA9IHNldF9zaWduYWw7CitleHBv
cnRzLnNpZ2FicnQgICAgICAgICAgID0gc2lnYWJydDsKK2V4cG9ydHMuc2lnYWxybSAgICAgICAg
ICAgPSBzaWdhbHJtOworZXhwb3J0cy5zaWdmcGUgICAgICAgICAgICA9IHNpZ2ZwZTsKK2V4cG9y
dHMuc2lnaHVwICAgICAgICAgICAgPSBzaWdodXA7CitleHBvcnRzLnNpZ2lsbCAgICAgICAgICAg
ID0gc2lnaWxsOworZXhwb3J0cy5zaWdpbnQgICAgICAgICAgICA9IHNpZ2ludDsKK2V4cG9ydHMu
c2lna2lsbCAgICAgICAgICAgPSBzaWdraWxsOworZXhwb3J0cy5zaWdwaXBlICAgICAgICAgICA9
IHNpZ3BpcGU7CitleHBvcnRzLnNpZ3F1aXQgICAgICAgICAgID0gc2lncXVpdDsKK2V4cG9ydHMu
c2lnc2VndiAgICAgICAgICAgPSBzaWdzZWd2OworZXhwb3J0cy5zaWd0ZXJtICAgICAgICAgICA9
IHNpZ3Rlcm07CitleHBvcnRzLnNpZ3VzcjEgICAgICAgICAgID0gc2lndXNyMTsKK2V4cG9ydHMu
c2lndXNyMiAgICAgICAgICAgPSBzaWd1c3IyOworZXhwb3J0cy5zaWdjaGxkICAgICAgICAgICA9
IHNpZ2NobGQ7CitleHBvcnRzLnNpZ2NvbnQgICAgICAgICAgID0gc2lnY29udDsKK2V4cG9ydHMu
c2lnc3RvcCAgICAgICAgICAgPSBzaWdzdG9wOworZXhwb3J0cy5zaWd0c3RwICAgICAgICAgICA9
IHNpZ3RzdHA7CitleHBvcnRzLnNpZ3R0aW4gICAgICAgICAgID0gc2lndHRpbjsKK2V4cG9ydHMu
c2lndHRvdSAgICAgICAgICAgPSBzaWd0dG91OworZXhwb3J0cy5zaWd2dGFscm0gICAgICAgICA9
IHNpZ3Z0YWxybTsKK2V4cG9ydHMuc2lncHJvZiAgICAgICAgICAgPSBzaWdwcm9mOworZXhwb3J0
cy5CcmVhayAgICAgICAgICAgICA9IEJyZWFrOworZXhwb3J0cy5jYXRjaF9icmVhayAgICAgICA9
IGNhdGNoX2JyZWFrOworZXhwb3J0cy5vY2FtbF92ZXJzaW9uICAgICA9IG9jYW1sX3ZlcnNpb247
CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIHN5cy5qcyAvLy8vLy8vLwor
wqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wyd0eXBlcyddID0g
ZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Yg
dHlwZXMuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAx
LjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgSTMyICAg
ICAgPSByZXF1aXJlKCIuL2kzMiIpOwordmFyIExpc3QgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZv
cm0vbGliL2pzL2xpc3QiKTsKK3ZhciBDdXJyeSAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xp
Yi9qcy9jdXJyeSIpOwordmFyICQkU3RyaW5nID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L3N0cmluZyIpOworCitmdW5jdGlvbiBzaXplKHBhcmFtKSB7CisgIGlmIChwYXJhbSAhPT0gMSAm
JiBwYXJhbSA8IDMpIHsKKyAgICByZXR1cm4gNDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
ODsKKyAgfQorfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSkgeworICBz
d2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVybiAiaTMyIjsKKyAg
ICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuICJpNjQiOworICAgIGNhc2UgMiA6IAorICAgICAg
ICByZXR1cm4gImYzMiI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAiZjY0IjsKKyAg
ICAKKyAgfQorfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfdmFsdWVfdHlwZXModHMpIHsKKyAgdmFy
IGV4aXQgPSAwOworICBpZiAodHMpIHsKKyAgICBpZiAodHNbMV0pIHsKKyAgICAgIGV4aXQgPSAx
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzdHJpbmdfb2ZfdmFsdWVfdHlwZSh0
c1swXSk7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIGV4aXQgPSAxOworICB9CisgIGlmIChl
eGl0ID09PSAxKSB7CisgICAgcmV0dXJuICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0
Lm1hcChzdHJpbmdfb2ZfdmFsdWVfdHlwZSwgdHMpKSArICJdIik7CisgIH0KKyAgCit9CisKK2Z1
bmN0aW9uIHN0cmluZ19vZl9lbGVtX3R5cGUoKSB7CisgIHJldHVybiAiZnVuY3JlZiI7Cit9CisK
K2Z1bmN0aW9uIHN0cmluZ19vZl9saW1pdHMocGFyYW0pIHsKKyAgdmFyIG1heCA9IHBhcmFtWy8q
IG1heCAqLzFdOworICByZXR1cm4gQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBwYXJhbVsvKiBt
aW4gKi8wXSkgKyAoCisgICAgICAgICAgbWF4ID8gIiAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmlu
Z191LCBtYXhbMF0pIDogIiIKKyAgICAgICAgKTsKK30KKworZnVuY3Rpb24gc3RyaW5nX29mX21l
bW9yeV90eXBlKHBhcmFtKSB7CisgIHJldHVybiBzdHJpbmdfb2ZfbGltaXRzKHBhcmFtWzBdKTsK
K30KKworZnVuY3Rpb24gc3RyaW5nX29mX3RhYmxlX3R5cGUocGFyYW0pIHsKKyAgcmV0dXJuIHN0
cmluZ19vZl9saW1pdHMocGFyYW1bMF0pICsgIiBmdW5jcmVmIjsKK30KKworZnVuY3Rpb24gc3Ry
aW5nX29mX2dsb2JhbF90eXBlKHBhcmFtKSB7CisgIHZhciB0ID0gcGFyYW1bMF07CisgIGlmIChw
YXJhbVsxXSAhPT0gMCkgeworICAgIHJldHVybiAiKG11dCAiICsgKHN0cmluZ19vZl92YWx1ZV90
eXBlKHQpICsgIikiKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gc3RyaW5nX29mX3ZhbHVl
X3R5cGUodCk7CisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX29mX3N0YWNrX3R5cGUodHMpIHsK
KyAgcmV0dXJuICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcChzdHJpbmdfb2Zf
dmFsdWVfdHlwZSwgdHMpKSArICJdIik7Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9mdW5jX3R5
cGUocGFyYW0pIHsKKyAgcmV0dXJuIHN0cmluZ19vZl9zdGFja190eXBlKHBhcmFtWzBdKSArICgi
IC0+ICIgKyBzdHJpbmdfb2Zfc3RhY2tfdHlwZShwYXJhbVsxXSkpOworfQorCitleHBvcnRzLnNp
emUgICAgICAgICAgICAgICAgICA9IHNpemU7CitleHBvcnRzLnN0cmluZ19vZl92YWx1ZV90eXBl
ICA9IHN0cmluZ19vZl92YWx1ZV90eXBlOworZXhwb3J0cy5zdHJpbmdfb2ZfdmFsdWVfdHlwZXMg
PSBzdHJpbmdfb2ZfdmFsdWVfdHlwZXM7CitleHBvcnRzLnN0cmluZ19vZl9lbGVtX3R5cGUgICA9
IHN0cmluZ19vZl9lbGVtX3R5cGU7CitleHBvcnRzLnN0cmluZ19vZl9saW1pdHMgICAgICA9IHN0
cmluZ19vZl9saW1pdHM7CitleHBvcnRzLnN0cmluZ19vZl9tZW1vcnlfdHlwZSA9IHN0cmluZ19v
Zl9tZW1vcnlfdHlwZTsKK2V4cG9ydHMuc3RyaW5nX29mX3RhYmxlX3R5cGUgID0gc3RyaW5nX29m
X3RhYmxlX3R5cGU7CitleHBvcnRzLnN0cmluZ19vZl9nbG9iYWxfdHlwZSA9IHN0cmluZ19vZl9n
bG9iYWxfdHlwZTsKK2V4cG9ydHMuc3RyaW5nX29mX3N0YWNrX3R5cGUgID0gc3RyaW5nX29mX3N0
YWNrX3R5cGU7CitleHBvcnRzLnN0cmluZ19vZl9mdW5jX3R5cGUgICA9IHN0cmluZ19vZl9mdW5j
X3R5cGU7CisvKiBJMzIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiB0eXBl
cy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lz
dHJ5Wyd2YWx1ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8v
Ly8vLy8vIHN0YXJ0IG9mIHZhbHVlcy5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tM
RVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmlj
dCc7CisKK3ZhciBGMzIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2YzMiIpOwordmFyIEY2NCAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjY0Iik7Cit2YXIgSTMyICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9pMzIiKTsKK3ZhciBJNjQgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2k2NCIpOwor
dmFyIExpc3QgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7
Cit2YXIgQmxvY2sgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2Nr
Iik7Cit2YXIgQ3VycnkgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1
cnJ5Iik7Cit2YXIgJCRTdHJpbmcgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L3N0cmluZyIpOwordmFyIENhbWxfZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xp
Yi9qcy9jYW1sX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gdHlwZV9vZihwYXJhbSkgeworICBz
d2l0Y2ggKHBhcmFtLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIC8q
IEkzMlR5cGUgKi8wOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gLyogSTY0VHlwZSAq
LzE7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiBGMzJUeXBlICovMjsKKyAgICBj
YXNlIDMgOiAKKyAgICAgICAgcmV0dXJuIC8qIEY2NFR5cGUgKi8zOworICAgIAorICB9Cit9CisK
K2Z1bmN0aW9uIGRlZmF1bHRfdmFsdWUocGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAg
IGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gLyogSTMyICovQmxvY2suX18oMCwgW0kzMi56ZXJv
XSk7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiBJNjQgKi9CbG9jay5fXygxLCBb
STY0Lnplcm9dKTsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuIC8qIEYzMiAqL0Jsb2Nr
Ll9fKDIsIFtGMzIuemVyb10pOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gLyogRjY0
ICovQmxvY2suX18oMywgW0Y2NC56ZXJvXSk7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gdmFs
dWVfb2ZfYm9vbChiKSB7CisgIHJldHVybiAvKiBJMzIgKi9CbG9jay5fXygwLCBbYiA/IDEgOiAw
XSk7Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl92YWx1ZShwYXJhbSkgeworICBzd2l0Y2ggKHBh
cmFtLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKEkz
Mi50b19zdHJpbmdfcywgcGFyYW1bMF0pOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4g
Q3VycnkuXzEoSTY0LnRvX3N0cmluZ19zLCBwYXJhbVswXSk7CisgICAgY2FzZSAyIDogCisgICAg
ICAgIHJldHVybiBDdXJyeS5fMShGMzIudG9fc3RyaW5nLCBwYXJhbVswXSk7CisgICAgY2FzZSAz
IDogCisgICAgICAgIHJldHVybiBDdXJyeS5fMShGNjQudG9fc3RyaW5nLCBwYXJhbVswXSk7Cisg
ICAgCisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX29mX3ZhbHVlcyh2cykgeworICB2YXIgZXhp
dCA9IDA7CisgIGlmICh2cykgeworICAgIGlmICh2c1sxXSkgeworICAgICAgZXhpdCA9IDE7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIHN0cmluZ19vZl92YWx1ZSh2c1swXSk7Cisg
ICAgfQorICB9CisgIGVsc2UgeworICAgIGV4aXQgPSAxOworICB9CisgIGlmIChleGl0ID09PSAx
KSB7CisgICAgcmV0dXJuICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcChzdHJp
bmdfb2ZfdmFsdWUsIHZzKSkgKyAiXSIpOworICB9CisgIAorfQorCit2YXIgVmFsdWUgPSBDYW1s
X2V4Y2VwdGlvbnMuY3JlYXRlKCJWYWx1ZXMuVmFsdWUiKTsKKworZnVuY3Rpb24gdG9fdmFsdWUo
aSkgeworICByZXR1cm4gLyogSTMyICovQmxvY2suX18oMCwgW2ldKTsKK30KKworZnVuY3Rpb24g
b2ZfdmFsdWUocGFyYW0pIHsKKyAgaWYgKHBhcmFtLnRhZykgeworICAgIHRocm93IFsKKyAgICAg
ICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBJMzJUeXBlICovMAorICAgICAgICBdOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiBwYXJhbVswXTsKKyAgfQorfQorCit2YXIgSTMyVmFsdWUgPSAv
KiBtb2R1bGUgKi9bCisgIC8qIHRvX3ZhbHVlICovdG9fdmFsdWUsCisgIC8qIG9mX3ZhbHVlICov
b2ZfdmFsdWUKK107CisKK2Z1bmN0aW9uIHRvX3ZhbHVlJDEoaSkgeworICByZXR1cm4gLyogSTY0
ICovQmxvY2suX18oMSwgW2ldKTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUkMShwYXJhbSkgewor
ICBpZiAocGFyYW0udGFnID09PSAxKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVs
c2UgeworICAgIHRocm93IFsKKyAgICAgICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBJNjRUeXBl
ICovMQorICAgICAgICBdOworICB9Cit9CisKK3ZhciBJNjRWYWx1ZSA9IC8qIG1vZHVsZSAqL1sK
KyAgLyogdG9fdmFsdWUgKi90b192YWx1ZSQxLAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDEK
K107CisKK2Z1bmN0aW9uIHRvX3ZhbHVlJDIoaSkgeworICByZXR1cm4gLyogRjMyICovQmxvY2su
X18oMiwgW2ldKTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUkMihwYXJhbSkgeworICBpZiAocGFy
YW0udGFnID09PSAyKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVsc2UgeworICAg
IHRocm93IFsKKyAgICAgICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBGMzJUeXBlICovMgorICAg
ICAgICBdOworICB9Cit9CisKK3ZhciBGMzJWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKKyAgLyogdG9f
dmFsdWUgKi90b192YWx1ZSQyLAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDIKK107CisKK2Z1
bmN0aW9uIHRvX3ZhbHVlJDMoaSkgeworICByZXR1cm4gLyogRjY0ICovQmxvY2suX18oMywgW2ld
KTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUkMyhwYXJhbSkgeworICBpZiAocGFyYW0udGFnID09
PSAzKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVsc2UgeworICAgIHRocm93IFsK
KyAgICAgICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBGNjRUeXBlICovMworICAgICAgICBdOwor
ICB9Cit9CisKK3ZhciBGNjRWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKKyAgLyogdG9fdmFsdWUgKi90
b192YWx1ZSQzLAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDMKK107CisKK2V4cG9ydHMudHlw
ZV9vZiAgICAgICAgICA9IHR5cGVfb2Y7CitleHBvcnRzLmRlZmF1bHRfdmFsdWUgICAgPSBkZWZh
dWx0X3ZhbHVlOworZXhwb3J0cy52YWx1ZV9vZl9ib29sICAgID0gdmFsdWVfb2ZfYm9vbDsKK2V4
cG9ydHMuc3RyaW5nX29mX3ZhbHVlICA9IHN0cmluZ19vZl92YWx1ZTsKK2V4cG9ydHMuc3RyaW5n
X29mX3ZhbHVlcyA9IHN0cmluZ19vZl92YWx1ZXM7CitleHBvcnRzLlZhbHVlICAgICAgICAgICAg
PSBWYWx1ZTsKK2V4cG9ydHMuSTMyVmFsdWUgICAgICAgICA9IEkzMlZhbHVlOworZXhwb3J0cy5J
NjRWYWx1ZSAgICAgICAgID0gSTY0VmFsdWU7CitleHBvcnRzLkYzMlZhbHVlICAgICAgICAgPSBG
MzJWYWx1ZTsKK2V4cG9ydHMuRjY0VmFsdWUgICAgICAgICA9IEY2NFZhbHVlOworLyogRjMyIE5v
dCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgdmFsdWVzLmpzIC8vLy8vLy8vCivC
oCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ3dhc20nXSA9IGZ1
bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHdh
c20uanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQu
MyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgUGFyc2UgICAg
ICA9IHJlcXVpcmUoIi4vcGFyc2UiKTsKK3ZhciBTZXhwciAgICAgID0gcmVxdWlyZSgiLi9zZXhw
ciIpOwordmFyIERlY29kZSAgICAgPSByZXF1aXJlKCIuL2RlY29kZSIpOwordmFyIEVuY29kZSAg
ICAgPSByZXF1aXJlKCIuL2VuY29kZSIpOwordmFyIEFycmFuZ2UgICAgPSByZXF1aXJlKCIuL2Fy
cmFuZ2UiKTsKK3ZhciBDYW1sX2ludDY0ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Nh
bWxfaW50NjQiKTsKK3ZhciBQZXJ2YXNpdmVzID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L3BlcnZhc2l2ZXMiKTsKKworZnVuY3Rpb24gZW5jb2RlKHMpIHsKKyAgdmFyIGRlZiA9IFBhcnNl
LnN0cmluZ190b19tb2R1bGUocyk7CisgIHZhciBtYXRjaCA9IGRlZlsvKiBpdCAqLzFdOworICBp
ZiAobWF0Y2gudGFnKSB7CisgICAgcmV0dXJuIG1hdGNoWzFdOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiBFbmNvZGUuZW5jb2RlKG1hdGNoWzBdKTsKKyAgfQorfQorCitmdW5jdGlvbiBkZWNv
ZGUocywgd2lkdGgpIHsKKyAgdmFyIG0gPSBEZWNvZGUuZGVjb2RlKCIoZGVjb2RlKSIsIHMpOwor
ICByZXR1cm4gU2V4cHIudG9fc3RyaW5nKHdpZHRoLCBBcnJhbmdlLm1vZHVsZV8obSkpOworfQor
CitmdW5jdGlvbiBmKHgpIHsKKyAgUGVydmFzaXZlcy5wcmludF9zdHJpbmcoImYiKTsKKyAgcmV0
dXJuIHg7Cit9CisKK2Z1bmN0aW9uIGcoeCkgeworICByZXR1cm4gQ2FtbF9pbnQ2NC5vcl8oeCwg
KFBlcnZhc2l2ZXMucHJpbnRfc3RyaW5nKCJmIiksIHgpKTsKK30KKworZXhwb3J0cy5lbmNvZGUg
PSBlbmNvZGU7CitleHBvcnRzLmRlY29kZSA9IGRlY29kZTsKK2V4cG9ydHMuZiAgICAgID0gZjsK
K2V4cG9ydHMuZyAgICAgID0gZzsKKy8qIFBhcnNlIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8v
Ly8vLyBlbmQgb2Ygd2FzbS5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9
OworCisKKyAgZnVuY3Rpb24gYmluYXJ5KGJ5dGVzKSB7CisgICAgbGV0IGJ1ZmZlciA9IG5ldyBB
cnJheUJ1ZmZlcihieXRlcy5sZW5ndGgpOworICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXko
YnVmZmVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7Cisg
ICAgICB2aWV3W2ldID0gYnl0ZXMuY2hhckNvZGVBdChpKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1
ZmZlcjsKKyAgfQorICBmdW5jdGlvbiBieXRlcyhidWZmZXIpIHsKKyAgICBsZXQgc3RyaW5nID0g
Jyc7CisgICAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7ICsraSkgeworICAgICAgc3RyaW5nICs9IFN0cmluZy5m
cm9tQ29kZVBvaW50KHZpZXdbaV0pOworICAgIH0KKyAgICByZXR1cm4gc3RyaW5nOworICB9CivC
oCBsZXQgV2FzbSA9IHJlcXVpcmUoJ3dhc20nKTsKKyAgcmV0dXJuIHsKKyAgICBlbmNvZGUocykg
eyByZXR1cm4gYmluYXJ5KFdhc20uZW5jb2RlKHMpKSB9LAorICAgIGRlY29kZShiLCB3ID0gODAp
IHsgcmV0dXJuIFdhc20uZGVjb2RlKGJ5dGVzKGIpLCB3KSB9CisgIH07Cit9KSgpOworCisKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVybl9jYWxs
Lndhc3QuanMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2Fs
bC53YXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzZmRiM2ZjMGY0NzAwYzQ3YzJlYmY2NmY2ZTViZTFkNWIw
Y2M4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10
ZXN0cy9yZXR1cm5fY2FsbC53YXN0LmpzCkBAIC0wLDAgKzEsMTMyIEBACisKKy8vIHJldHVybl9j
YWxsLndhc3Q6MworbGV0ICQxID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4
MDBceDAwXHgwMVx4YzhceDgwXHg4MFx4ODBceDAwXHgwZVx4NjBceDAwXHgwMVx4N2ZceDYwXHgw
MFx4MDFceDdlXHg2MFx4MDBceDAxXHg3ZFx4NjBceDAwXHgwMVx4N2NceDYwXHgwMVx4N2ZceDAx
XHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHg2MFx4MDFceDdkXHgwMVx4N2RceDYwXHgwMVx4N2Nc
eDAxXHg3Y1x4NjBceDAyXHg3ZFx4N2ZceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4
NjBceDAyXHg3Y1x4N2RceDAxXHg3ZFx4NjBceDAyXHg3ZVx4N2NceDAxXHg3Y1x4NjBceDAyXHg3
ZVx4N2VceDAxXHg3ZVx4NjBceDAxXHg3ZVx4MDFceDdmXHgwM1x4OWRceDgwXHg4MFx4ODBceDAw
XHgxY1x4MDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4MDlceDBhXHgwYlx4MDBc
eDAxXHgwMlx4MDNceDAwXHgwMVx4MDJceDAzXHgwMFx4MDFceDAyXHgwM1x4MGNceDA1XHgwZFx4
MGRceDA3XHhkOFx4ODFceDgwXHg4MFx4MDBceDEwXHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2
OVx4MzNceDMyXHgwMFx4MGNceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY5XHgzNlx4MzRceDAw
XHgwZFx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDMzXHgzMlx4MDBceDBlXHgwOFx4NzRc
eDc5XHg3MFx4NjVceDJkXHg2Nlx4MzZceDM0XHgwMFx4MGZceDBlXHg3NFx4NzlceDcwXHg2NVx4
MmRceDY2XHg2OVx4NzJceDczXHg3NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxMFx4MGVceDc0XHg3
OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjlceDM2XHgzNFx4MDBceDEx
XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2Nlx4MzNc
eDMyXHgwMFx4MTJceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4
MmRceDY2XHgzNlx4MzRceDAwXHgxM1x4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2
M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxNFx4MGZceDc0XHg3OVx4NzBceDY1
XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzNlx4MzRceDAwXHgxNVx4MGZc
eDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzM1x4
MzJceDAwXHgxNlx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2
NFx4MmRceDY2XHgzNlx4MzRceDAwXHgxN1x4MDdceDY2XHg2MVx4NjNceDJkXHg2MVx4NjNceDYz
XHgwMFx4MThceDA1XHg2M1x4NmZceDc1XHg2ZVx4NzRceDAwXHgxOVx4MDRceDY1XHg3Nlx4NjVc
eDZlXHgwMFx4MWFceDAzXHg2Zlx4NjRceDY0XHgwMFx4MWJceDBhXHg4MFx4ODNceDgwXHg4MFx4
MDBceDFjXHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4YjJceDAyXHgwYlx4ODVceDgwXHg4
MFx4ODBceDAwXHgwMFx4NDJceGU0XHgwMlx4MGJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDQz
XHgwMFx4MjBceDczXHg0NVx4MGJceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4MDBc
eDAwXHgwMFx4MDBceGM4XHhhZVx4NDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4
MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4ODBceDgwXHg4
MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDBi
XHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBc
eDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4
ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgx
Mlx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDBiXHg4NFx4ODBceDgw
XHg4MFx4MDBceDAwXHgxMlx4MDJceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDNc
eDBiXHg4Nlx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MjBceDEyXHgwNFx4MGJceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDBceDQyXHhjMFx4MDBceDEyXHgwNVx4MGJceDg5XHg4MFx4ODBceDgwXHgw
MFx4MDBceDQzXHhjM1x4ZjVceGE4XHgzZlx4MTJceDA2XHgwYlx4OGRceDgwXHg4MFx4ODBceDAw
XHgwMFx4NDRceDNkXHgwYVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4MTJceDA3XHgwYlx4OGJc
eDgwXHg4MFx4ODBceDAwXHgwMFx4NDNceDY2XHg2Nlx4MDBceDQyXHg0MVx4MjBceDEyXHgwOFx4
MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgyMFx4NDJceGMwXHgwMFx4MTJceDA5XHgw
Ylx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDUw
XHg0MFx4NDNceDAwXHgwMFx4MDBceDQyXHgxMlx4MGFceDBiXHg5MFx4ODBceDgwXHg4MFx4MDBc
eDAwXHg0Mlx4YzBceDAwXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBceDQwXHgxMlx4
MGJceDBiXHg5N1x4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDUwXHgwNFx4N2VceDIwXHgw
MVx4MDVceDIwXHgwMFx4NDJceDAxXHg3ZFx4MjBceDAwXHgyMFx4MDFceDdlXHgxMlx4MThceDBi
XHgwYlx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg1MFx4MDRceDdlXHgyMFx4MDBc
eDA1XHgyMFx4MDBceDQyXHgwMVx4N2RceDEyXHgxOVx4MGJceDBiXHg5Mlx4ODBceDgwXHg4MFx4
MDBceDAwXHgyMFx4MDBceDUwXHgwNFx4N2ZceDQxXHgyY1x4MDVceDIwXHgwMFx4NDJceDAxXHg3
ZFx4MTJceDFiXHgwYlx4MGJceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NTBceDA0
XHg3Zlx4NDFceGUzXHgwMFx4MDVceDIwXHgwMFx4NDJceDAxXHg3ZFx4MTJceDFhXHgwYlx4MGIi
KTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDo4MAorYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAidHlwZS1pMzIiLCBbXSksIDMwNik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODEKK3J1bigo
KSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4
NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgw
MVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4ODRceDgx
XHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg3NFx4Nzlc
eDcwXHg2NVx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
MVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4
NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2
NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVc
eDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgw
YVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQw
XHgxMFx4MDBceDAxXHg0Mlx4ZTRceDAyXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBc
eDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+
IGNhbGwoJDEsICJ0eXBlLWk2NCIsIFtdKSwgaW50NjQoIjM1NiIpKQorCisvLyByZXR1cm5fY2Fs
bC53YXN0OjgyCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4
MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2
MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAx
XHg3ZFx4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNc
eDY1XHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVc
eDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3
NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgw
XHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiY1x4NDNceDAwXHgyMFx4NzNceDQ1XHhiY1x4NDZc
eDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWYzMiIsIFtdKSwgMzg5MC4p
CisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdc
eDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4
MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgw
MVx4N2ZceDYwXHgwMFx4MDFceDdjXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZk
XHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHgzNlx4MzRc
eDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFc
eDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4
MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgw
MVx4OThceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4MDBceDAw
XHgwMFx4MDBceDAwXHhjOFx4YWVceDQwXHhiZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBc
eDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+
IGNhbGwoJDEsICJ0eXBlLWY2NCIsIFtdKSwgMzk0MC4pCisKKy8vIHJldHVybl9jYWxsLndhc3Q6
ODUKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtZmlyc3QtaTMyIiwgW10pLCAz
Mik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODYKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4
MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2
MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcw
XHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZc
eDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4
NzJceDczXHg3NFx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHgxMFx4MDBceDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4
MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgp
ID0+IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWk2NCIsIFtdKSwgaW50NjQoIjY0IikpCisKKy8vIHJl
dHVybl9jYWxsLndhc3Q6ODcKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4
MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgw
MVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYw
XHgwMFx4MDFceDdkXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4
MmRceDY2XHgzM1x4MzJceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgw
MFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4
N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFceDgw
XHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBc
eGJjXHg0M1x4YzNceGY1XHhhOFx4M2ZceGJjXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4
MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4g
Y2FsbCgkMSwgInR5cGUtZmlyc3QtZjMyIiwgW10pLCAxLjMyMDAwMDA1MjQ1KQorCisvLyByZXR1
cm5fY2FsbC53YXN0Ojg4CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAw
XHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFc
eDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4
MDBceDAxXHg3Y1x4MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3
NVx4NmNceDY1XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJk
XHg2Nlx4MzZceDM0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhi
ZFx4NDRceDNkXHgwYVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4YmRceDUxXHg0NVx4MGRceDAw
XHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0
X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1maXJzdC1mNjQiLCBbXSksIDEuNjQpCisKKy8v
IHJldHVybl9jYWxsLndhc3Q6OTAKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUt
c2Vjb25kLWkzMiIsIFtdKSwgMzIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjkxCitydW4oKCkg
PT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhh
M1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYw
XHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFc
eDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZVx4MDJceDhiXHg4MVx4
ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwZlx4NzRceDc5XHg3
MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjlceDM2XHgzNFx4MDBceDA2
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDcz
XHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAz
XHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5Mlx4
ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4MDFceDQyXHhjMFx4MDBceDAxXHg1
MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10p
KTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWk2NCIsIFtd
KSwgaW50NjQoIjY0IikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTIKK3J1bigoKSA9PiBjYWxs
KGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4
ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2
Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYw
XHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdkXHgwMlx4OGJceDgxXHg4MFx4ODBc
eDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBmXHg3NFx4NzlceDcwXHg2NVx4
MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4
NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4
MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcy
XHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiY1x4NDNceDAwXHgwMFx4MDBceDQyXHhiY1x4
NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtd
KSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1mMzIiLCBb
XSksIDMyLikKKworLy8gcmV0dXJuX2NhbGwud2FzdDo5MworcnVuKCgpID0+IGNhbGwoaW5zdGFu
Y2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBc
eDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4
N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3
MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2NceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNc
eDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5
XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2
ZVx4MDBceDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAw
XHgwMFx4MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBc
eDQwXHhiZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAg
InJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29u
ZC1mNjQiLCBbXSksIDY0LjEpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTUKK3J1bigoKSA9PiBj
YWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4
MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAx
XHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2Zc
eDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4
ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2
MVx4NjNceDJkXHg2MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1
XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVc
eDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2
ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAw
XHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFc
eDliXHg4MFx4ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4
NDJceDAwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFceDUxXHg0NVx4MGRceDAwXHgw
Zlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAiZmFjLWFjYyIsIFtpbnQ2NCgiMCIpLCBpbnQ2NCgiMSIpXSks
IGludDY0KCIxIikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTYKK3J1bigoKSA9PiBjYWxsKGlu
c3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBc
eDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4
MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgw
Mlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgw
XHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNc
eDJkXHg2MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4
ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4
MFx4ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDAx
XHg0Mlx4MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJc
eDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigo
KSA9PiBjYWxsKCQxLCAiZmFjLWFjYyIsIFtpbnQ2NCgiMSIpLCBpbnQ2NCgiMSIpXSksIGludDY0
KCIxIikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTcKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgw
MFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdm
XHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4
MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2
MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDljXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDA1XHg0Mlx4
MDFceDEwXHgwMFx4MDFceDQyXHhmOFx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgw
MFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkg
PT4gY2FsbCgkMSwgImZhYy1hY2MiLCBbaW50NjQoIjUiKSwgaW50NjQoIjEiKV0pLCBpbnQ2NCgi
MTIwIikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTgKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgw
MFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdm
XHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4
MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2
MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceGE0XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDllXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDE5XHg0Mlx4
MDFceDEwXHgwMFx4MDFceDQyXHg4MFx4ODBceDgwXHhkZVx4ODdceDkyXHhlY1x4Y2ZceGUxXHgw
MFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJy
dW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZmFjLWFjYyIsIFtp
bnQ2NCgiMjUiKSwgaW50NjQoIjEiKV0pLCBpbnQ2NCgiN18wMzRfNTM1XzI3N181NzNfOTYzXzc3
NiIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwMworcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHgwMlx4ODFceDgxXHg4MFx4ODBceDAwXHgw
Nlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA1XHg2M1x4NmZceDc1XHg2ZVx4NzRceDAw
XHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5
XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1
XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBc
eDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4
OTNceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDBceDEwXHgwMFx4MDFceDQyXHgw
MFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJy
dW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiY291bnQiLCBbaW50
NjQoIjAiKV0pLCBpbnQ2NCgiMCIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwNAorcnVuKCgp
ID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2
MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAx
XHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHgwMlx4ODFc
eDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA1XHg2M1x4
NmZceDc1XHg2ZVx4NzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgw
MFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4
N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFceDgw
XHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4ZThc
eDA3XHgxMFx4MDBceDAxXHg0Mlx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4
MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4g
Y2FsbCgkMSwgImNvdW50IiwgW2ludDY0KCIxXzAwMCIpXSksIGludDY0KCIwIikpCisKKy8vIHJl
dHVybl9jYWxsLndhc3Q6MTA1CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBc
eDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4
MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2
MFx4MDFceDdlXHgwMVx4N2VceDAyXHg4MVx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZm
XHg2NFx4NzVceDZjXHg2NVx4MDVceDYzXHg2Zlx4NzVceDZlXHg3NFx4MDBceDA2XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAy
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1
XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBc
eDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4
NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4
MFx4MDBceDAwXHgwMlx4NDBceDQyXHhjMFx4ODRceDNkXHgxMFx4MDBceDAxXHg0Mlx4MDBceDAx
XHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwg
W10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImNvdW50IiwgW2ludDY0KCIx
XzAwMF8wMDAiKV0pLCBpbnQ2NCgiMCIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwNworcnVu
KCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
MVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZm
XHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZc
eDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4
ODBceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2
NVx4NzZceDY1XHg2ZVx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAw
XHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OVx4ODBc
eDgwXHg4MFx4MDBceDAxXHg5M1x4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwMFx4
MTBceDAwXHgwMVx4NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwg
ZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwo
JDEsICJldmVuIiwgW2ludDY0KCIwIildKSwgNDQpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTA4
CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgw
MVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZm
XHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2Zc
eDAyXHg4MFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4
MDRceDY1XHg3Nlx4NjVceDZlXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2
Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcx
XHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4
NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgw
N1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlh
XHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJc
eDAxXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4
MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgp
ID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxIildKSwgOTkpCisKKy8vIHJldHVybl9jYWxs
Lndhc3Q6MTA5CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4
MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2
MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdl
XHgwMVx4N2ZceDAyXHg4MFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVc
eDZjXHg2NVx4MDRceDY1XHg3Nlx4NjVceDZlXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgw
Nlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAy
XHg0MFx4NDJceGU0XHgwMFx4MTBceDAwXHgwMVx4NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBc
eDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRf
cmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxMDAiKV0pLCA0NCkKKworLy8g
cmV0dXJuX2NhbGwud2FzdDoxMTAKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgw
MFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcw
XHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2Zc
eDYwXHgwMVx4N2VceDAxXHg3Zlx4MDJceDgwXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4
NmZceDY0XHg3NVx4NmNceDY1XHgwNFx4NjVceDc2XHg2NVx4NmVceDAwXHgwNlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNc
eDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3
NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4
NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1
XHg2ZVx4MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MDJceDQwXHg0Mlx4Y2RceDAwXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4
NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtd
KSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCI3NyIp
XSksIDk5KQorCisvLyByZXR1cm5fY2FsbC53YXN0OjExMQorcnVuKCgpID0+IGNhbGwoaW5zdGFu
Y2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBc
eDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4
N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3
MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ODBceDgxXHg4MFx4ODBceDAw
XHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBc
eDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4Njlc
eDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3
Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDcz
XHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVc
eDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4
MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5
NVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhjMFx4ODRceDNkXHgxMFx4MDBceDAx
XHg0MVx4MmNceDAxXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQx
KSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV2ZW4i
LCBbaW50NjQoIjFfMDAwXzAwMCIpXSksIDQ0KQorCisvLyByZXR1cm5fY2FsbC53YXN0OjExMgor
cnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFc
eDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4
NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgw
Mlx4ODBceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0
XHg2NVx4NzZceDY1XHg2ZVx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZc
eDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdc
eDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Y1x4
ODBceDgwXHg4MFx4MDBceDAxXHg5Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhj
MVx4ODRceDNkXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBm
XHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0
dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxXzAwMF8wMDEiKV0pLCA5OSkKKwor
Ly8gcmV0dXJuX2NhbGwud2FzdDoxMTMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYw
XHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4
N2ZceDYwXHgwMVx4N2VceDAxXHg3Zlx4MDJceGZmXHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2
ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NmZceDY0XHg2NFx4MDBceDA2XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4
NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1
XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3
MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgw
XHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVc
eDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4
MDBceDAwXHgwMlx4NDBceDQyXHgwMFx4MTBceDAwXHgwMVx4NDFceGUzXHgwMFx4MDFceDQ2XHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2ludDY0KCIwIildKSwgOTkp
CisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTE0CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgw
MFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3
XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBc
eDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4
MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
Mlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJc
eDc1XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4
ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQxXHgyY1x4MDFceDQ2XHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2ludDY0KCIxIildKSwgNDQp
CisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTE1CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgw
MFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3
XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBc
eDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4
MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
Mlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJc
eDc1XHg2ZVx4MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4
ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4YzhceDAxXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgw
MVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIs
IFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbaW50NjQoIjIw
MCIpXSksIDk5KQorCisvLyByZXR1cm5fY2FsbC53YXN0OjExNgorcnVuKCgpID0+IGNhbGwoaW5z
dGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4
ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgw
MVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAy
XHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ZmZceDgwXHg4MFx4ODBc
eDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDAzXHg2Zlx4NjRceDY0XHgwMFx4
MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4
NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4
MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0
XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceGNkXHgwMFx4MTBceDAwXHgwMVx4NDFc
eDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAg
InJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbaW50
NjQoIjc3IildKSwgNDQpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTE3CitydW4oKCkgPT4gY2Fs
bChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBc
eDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4
NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2
MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgw
XHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRc
eDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFc
eDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4
MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgw
MVx4OTZceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4YzBceDg0XHgzZFx4MTBceDAw
XHgwMVx4NDFceGUzXHgwMFx4MDFceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4
cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAib2RkIiwgW2ludDY0KCIxXzAwMF8wMDAiKV0pLCA5OSkKKworLy8gcmV0dXJuX2NhbGwud2Fz
dDoxMTgKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4
N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgw
Mlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAx
XHg3Zlx4MDJceGZmXHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNc
eDY1XHgwM1x4NmZceDY0XHg2NFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3
MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4
MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5
Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQy
XHhiZlx4ODRceDNkXHgxMFx4MDBceDAxXHg0MVx4MmNceDAxXHg0Nlx4NDVceDBkXHgwMFx4MGZc
eDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1
cm4oKCkgPT4gY2FsbCgkMSwgIm9kZCIsIFtpbnQ2NCgiOTk5Xzk5OSIpXSksIDQ0KQorCisvLyBy
ZXR1cm5fY2FsbC53YXN0OjEyMworYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgwMVx4N2Zc
eDYwXHgwMFx4MDBceDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5M1x4
ODBceDgwXHg4MFx4MDBceDAyXHg4Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDQxXHgw
MFx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsLndh
c3Q6MTMwCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAxXHg3Zlx4NjBceDAwXHgwMVx4
N2VceDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5NVx4ODBceDgwXHg4
MFx4MDBceDAyXHg4Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDQxXHgwMFx4MGJceDg0
XHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHgwMVx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwud2Fz
dDoxMzgKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4
MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAwXHgw
M1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OTFceDgwXHg4MFx4ODBceDAw
XHgwMlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDAxXHgwYlx4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDoxNDUKK2Fzc2VydF9pbnZhbGlk
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgw
MFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMlx4N2NceDdmXHgwMFx4MDNceDgzXHg4MFx4ODBceDgw
XHgwMFx4MDJceDAwXHgwMVx4MGFceDkxXHg4MFx4ODBceDgwXHgwMFx4MDJceDg0XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDEyXHgwMVx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisK
Ky8vIHJldHVybl9jYWxsLndhc3Q6MTUzCitsZXQgJDIgPSBpbnN0YW5jZSgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBc
eDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAwXHgwYVx4OTNceDgwXHg4MFx4
ODBceDAwXHgwMlx4ODZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgxMlx4MDFceDBiXHg4
Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE1OAor
bGV0ICQzID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgw
MFx4MDJceDAwXHgwMFx4MGFceDljXHg4MFx4ODBceDgwXHgwMFx4MDJceDhmXHg4MFx4ODBceDgw
XHgwMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDBceDQxXHgwMVx4MTJc
eDAxXHgwYlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwu
d2FzdDoxNjMKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMlx4N2ZceDdm
XHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgwMVx4MGFceDk0XHg4MFx4ODBc
eDgwXHgwMFx4MDJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDAxXHg0MVx4MDFceDEyXHgwMVx4
MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6
MTcwCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAwXHg2MFx4MDJceDdmXHg3Zlx4MDBc
eDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5NFx4ODBceDgwXHg4MFx4
MDBceDAyXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDFceDAxXHgxMlx4MDFceDBiXHg4
Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE3Nwor
YXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlc
eDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgwMFx4NjBceDAyXHg3Zlx4N2NceDAwXHgwM1x4
ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgw
Mlx4OGZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceGYw
XHgzZlx4NDFceDAxXHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOwor
CisvLyByZXR1cm5fY2FsbC53YXN0OjE4NAorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4
NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgw
MFx4NjBceDAyXHg3Y1x4N2ZceDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAx
XHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMlx4OGZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFc
eDAxXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ZjBceDNmXHgxMlx4MDFceDBiXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE5NQorYXNz
ZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgw
XHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAwXHgwYVx4OGFceDgwXHg4MFx4ODBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4
MTJceDAxXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE5OQorYXNzZXJ0X2ludmFsaWQo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAw
XHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4OGVc
eDgwXHg4MFx4ODBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDk0XHg5OFx4
ZGJceGUyXHgwM1x4MGIiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1z
cGVjLXRlc3RzL3JldHVybl9jYWxsX2luZGlyZWN0Lndhc3QuanMgYi9KU1Rlc3RzL3dhc20vcmV0
dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJhODMyYzUzZjE0MDRhMzg5YjA2YWU1NzIyNjdlODRhNTMwZWNjYzAKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9p
bmRpcmVjdC53YXN0LmpzCkBAIC0wLDAgKzEsMjMyIEBACisKKy8vIHJldHVybl9jYWxsX2luZGly
ZWN0Lndhc3Q6MworbGV0ICQxID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4
MDBceDAwXHgwMVx4ZjdceDgwXHg4MFx4ODBceDAwXHgxN1x4NjBceDAwXHgwMFx4NjBceDAwXHgw
MVx4N2ZceDYwXHgwMFx4MDFceDdlXHg2MFx4MDBceDAxXHg3ZFx4NjBceDAwXHgwMVx4N2NceDYw
XHgwMVx4N2ZceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHg2MFx4MDFceDdkXHgwMVx4N2Rc
eDYwXHgwMVx4N2NceDAxXHg3Y1x4NjBceDAyXHg3ZFx4N2ZceDAxXHg3Zlx4NjBceDAyXHg3Zlx4
N2VceDAxXHg3ZVx4NjBceDAyXHg3Y1x4N2RceDAxXHg3ZFx4NjBceDAyXHg3ZVx4N2NceDAxXHg3
Y1x4NjBceDAxXHg3Zlx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2VceDYwXHgwMVx4N2RceDAx
XHg3ZFx4NjBceDAxXHg3Y1x4MDFceDdjXHg2MFx4MDRceDdlXHg3Y1x4N2ZceDdlXHgwMFx4NjBc
eDAxXHg3ZVx4MDBceDYwXHgwNFx4N2VceDdjXHg3Zlx4N2VceDAxXHg3Zlx4NjBceDAxXHg3ZVx4
MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAzXHhh
YVx4ODBceDgwXHg4MFx4MDBceDI5XHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1x4MDhceDBh
XHgwY1x4MDlceDBiXHgwZFx4MGVceDBmXHgxMFx4MDBceDAxXHgwMlx4MDFceDAyXHgwM1x4MDRc
eDAyXHgwMVx4MDJceDAzXHgwNFx4MDFceDAyXHgwM1x4MDRceDBhXHgxNVx4MDFceDAxXHgwNVx4
MDZceDE2XHgwNVx4MDVceDA0XHg4ZFx4ODBceDgwXHg4MFx4MDBceDAzXHg3MFx4MDFceDE0XHgx
NFx4NzBceDAxXHgwMVx4MDFceDcwXHgwMVx4MDFceDAxXHgwN1x4ODVceDgyXHg4MFx4ODBceDAw
XHgxM1x4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDMzXHgzMlx4MDBceDEzXHgwOFx4NzRc
eDc5XHg3MFx4NjVceDJkXHg2OVx4MzZceDM0XHgwMFx4MTRceDA4XHg3NFx4NzlceDcwXHg2NVx4
MmRceDY2XHgzM1x4MzJceDAwXHgxNVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDM2XHgz
NFx4MDBceDE2XHgwYVx4NzRceDc5XHg3MFx4NjVceDJkXHg2OVx4NmVceDY0XHg2NVx4NzhceDAw
XHgxN1x4MGVceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4Njlc
eDMzXHgzMlx4MDBceDE4XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4
NzRceDJkXHg2OVx4MzZceDM0XHgwMFx4MTlceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2
OVx4NzJceDczXHg3NFx4MmRceDY2XHgzM1x4MzJceDAwXHgxYVx4MGVceDc0XHg3OVx4NzBceDY1
XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjZceDM2XHgzNFx4MDBceDFiXHgwZlx4NzRc
eDc5XHg3MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjlceDMzXHgzMlx4
MDBceDFjXHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgy
ZFx4NjlceDM2XHgzNFx4MDBceDFkXHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3M1x4NjVceDYz
XHg2Zlx4NmVceDY0XHgyZFx4NjZceDMzXHgzMlx4MDBceDFlXHgwZlx4NzRceDc5XHg3MFx4NjVc
eDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjZceDM2XHgzNFx4MDBceDFmXHgwOFx4
NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MjBceDEzXHg2NFx4NjlceDczXHg3
MFx4NjFceDc0XHg2M1x4NjhceDJkXHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYx
XHg2Y1x4MDBceDIxXHgwOFx4NjNceDYxXHg2Y1x4NmNceDJkXHg3NFx4NjFceDYyXHgwMFx4MjRc
eDAzXHg2Nlx4NjFceDYzXHgwMFx4MjVceDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBceDI3XHgwM1x4
NmZceDY0XHg2NFx4MDBceDI4XHgwOVx4YWFceDgwXHg4MFx4ODBceDAwXHgwM1x4MDBceDQxXHgw
MFx4MGJceDE0XHgwMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdceDBhXHgwOFx4MGJceDA5
XHgyNVx4MjZceDI3XHgyOFx4MGNceDBkXHgwZVx4MGZceDAyXHgwMVx4NDFceDAwXHgwYlx4MDBc
eDAxXHgyMlx4MDJceDAyXHg0MVx4MDBceDBiXHgwMFx4MDFceDIzXHgwYVx4OWZceDg1XHg4MFx4
ODBceDAwXHgyOVx4ODVceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceGIyXHgwMlx4MGJceDg1XHg4
MFx4ODBceDgwXHgwMFx4MDBceDQyXHhlNFx4MDJceDBiXHg4N1x4ODBceDgwXHg4MFx4MDBceDAw
XHg0M1x4MDBceDIwXHg3M1x4NDVceDBiXHg4Ylx4ODBceDgwXHg4MFx4MDBceDAwXHg0NFx4MDBc
eDAwXHgwMFx4MDBceDAwXHhjOFx4YWVceDQwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4
MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4
MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAw
XHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4
ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgw
MFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgw
XHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBc
eDAwXHgwYlx4YTdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDBceDAwXHg0Mlx4
MDBceDQxXHgwMFx4MTNceDEyXHgwMFx4NDJceDAwXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgw
MFx4MDBceDAwXHg0MVx4MDBceDQyXHgwMFx4NDFceDAwXHgxM1x4MTFceDAwXHg0MVx4MDBceDEz
XHgwMFx4MDBceDBiXHhhN1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMVx4MDBc
eDQxXHgwMFx4MTNceDAxXHgwMFx4NDJceDAwXHg0MVx4MDBceDEzXHgxNFx4MDBceDQyXHgwMFx4
NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDFceDAwXHg0Mlx4MDBceDQxXHgw
MFx4MTNceDEzXHgwMFx4MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHgwMFx4NDFceDAw
XHgxM1x4MDZceDAwXHgwYlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDFc
eDAwXHgwYlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgxM1x4MDJceDAwXHgwYlx4
ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAyXHgxM1x4MDNceDAwXHgwYlx4ODdceDgwXHg4
MFx4ODBceDAwXHgwMFx4NDFceDAzXHgxM1x4MDRceDAwXHgwYlx4OGFceDgwXHg4MFx4ODBceDAw
XHgwMFx4NDJceGU0XHgwMFx4NDFceDA1XHgxM1x4MDZceDAwXHgwYlx4ODlceDgwXHg4MFx4ODBc
eDAwXHgwMFx4NDFceDIwXHg0MVx4MDRceDEzXHgwNVx4MDBceDBiXHg4YVx4ODBceDgwXHg4MFx4
MDBceDAwXHg0Mlx4YzBceDAwXHg0MVx4MDVceDEzXHgwNlx4MDBceDBiXHg4Y1x4ODBceDgwXHg4
MFx4MDBceDAwXHg0M1x4YzNceGY1XHhhOFx4M2ZceDQxXHgwNlx4MTNceDA3XHgwMFx4MGJceDkw
XHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgzZFx4MGFceGQ3XHhhM1x4NzBceDNkXHhmYVx4M2Zc
eDQxXHgwN1x4MTNceDA4XHgwMFx4MGJceDhlXHg4MFx4ODBceDgwXHgwMFx4MDBceDQzXHg2Nlx4
NjZceDAwXHg0Mlx4NDFceDIwXHg0MVx4MDhceDEzXHgwOVx4MDBceDBiXHg4Y1x4ODBceDgwXHg4
MFx4MDBceDAwXHg0MVx4MjBceDQyXHhjMFx4MDBceDQxXHgwOVx4MTNceDBhXHgwMFx4MGJceDk1
XHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHg1MFx4NDBc
eDQzXHgwMFx4MDBceDAwXHg0Mlx4NDFceDBhXHgxM1x4MGJceDAwXHgwYlx4OTNceDgwXHg4MFx4
ODBceDAwXHgwMFx4NDJceGMwXHgwMFx4NDRceDY2XHg2Nlx4NjZceDY2XHg2Nlx4MDZceDUwXHg0
MFx4NDFceDBiXHgxM1x4MGNceDAwXHgwYlx4ODlceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAx
XHgyMFx4MDBceDEzXHgwNlx4MDBceDBiXHg4OVx4ODBceDgwXHg4MFx4MDBceDAwXHg0Mlx4MDlc
eDIwXHgwMFx4MTNceDBlXHgwMFx4MGJceDg1XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHhiM1x4
MDJceDBiXHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4YjRceDAyXHgwYlx4YWJceDgwXHg4
MFx4ODBceDAwXHgwMFx4MjBceDAwXHg0MVx4MDBceDQ2XHgwNFx4NDBceDQxXHgwMFx4MTNceDAx
XHgwMFx4MGJceDIwXHgwMFx4NDFceDAxXHg0Nlx4MDRceDQwXHg0MVx4MDBceDEzXHgwMVx4MDFc
eDBiXHgyMFx4MDBceDQxXHgwMlx4NDZceDA0XHg0MFx4NDFceDAwXHgxM1x4MDFceDAyXHgwYlx4
NDFceDAwXHgwYlx4OGJceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg0Mlx4MDFceDQxXHgw
ZFx4MTNceDE2XHgwMFx4MGJceDlhXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NTBceDA0
XHg3ZVx4MjBceDAxXHgwNVx4MjBceDAwXHg0Mlx4MDFceDdkXHgyMFx4MDBceDIwXHgwMVx4N2Vc
eDQxXHgwZFx4MTNceDE2XHgwMFx4MGJceDBiXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4
MDBceDQ1XHgwNFx4N2ZceDQxXHgyY1x4MDVceDIwXHgwMFx4NDFceDAxXHg2Ylx4NDFceDBmXHgx
M1x4MDVceDAwXHgwYlx4MGJceDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NDVceDA0
XHg3Zlx4NDFceGUzXHgwMFx4MDVceDIwXHgwMFx4NDFceDAxXHg2Ylx4NDFceDBlXHgxM1x4MDVc
eDAwXHgwYlx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMTMKK2Fzc2Vy
dF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtaTMyIiwgW10pLCAzMDYpOworCisvLyByZXR1
cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIxNAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4
NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgw
MVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAx
XHg3Zlx4NjBceDAwXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRc
eDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDM2XHgzNFx4
MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4
NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4
MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgw
MFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAx
XHg5Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4MDFceDQyXHhlNFx4MDJc
eDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVu
IiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtaTY0IiwgW10p
LCBpbnQ2NCgiMzU2IikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjE1CitydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZFx4MDJceDg0XHg4
MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NzRceDc5
XHg3MFx4NjVceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJc
eDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4
NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1
XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4
MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0
MFx4MTBceDAwXHhiY1x4NDNceDAwXHgyMFx4NzNceDQ1XHhiY1x4NDZceDQ1XHgwZFx4MDBceDBm
XHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0
dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWYzMiIsIFtdKSwgMzg5MC4pCisKKy8vIHJldHVybl9j
YWxsX2luZGlyZWN0Lndhc3Q6MjE2CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4
MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3
MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdm
XHg2MFx4MDBceDAxXHg3Y1x4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZc
eDY0XHg3NVx4NmNceDY1XHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4MzZceDM0XHgwMFx4
MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4
NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4
MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4ODBceDgwXHgwMFx4MDFceDk4
XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiZFx4NDRceDAwXHgwMFx4MDBc
eDAwXHgwMFx4YzhceGFlXHg0MFx4YmRceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIs
IGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxs
KCQxLCAidHlwZS1mNjQiLCBbXSksIDM5NDAuKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53
YXN0OjIxOAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAx
XHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBc
eDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4
N2VceDAyXHg4Nlx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2
NVx4MGFceDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDZlXHg2NFx4NjVceDc4XHgwMFx4MDZceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
YVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgy
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNc
eDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDFceDkyXHg4MFx4
ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHgwMVx4NDJceGU0XHgwMFx4MDFceDUxXHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1pbmRleCIsIFtdKSwgaW50NjQo
IjEwMCIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyMAorYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAidHlwZS1maXJzdC1pMzIiLCBbXSksIDMyKTsKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDoyMjEKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYw
XHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4
N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2
Zlx4NjRceDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDcz
XHg3NFx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4
NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZl
XHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBc
eDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4
OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgx
MFx4MDBceDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBi
IiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNh
bGwoJDEsICJ0eXBlLWZpcnN0LWk2NCIsIFtdKSwgaW50NjQoIjY0IikpCisKKy8vIHJldHVybl9j
YWxsX2luZGlyZWN0Lndhc3Q6MjIyCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4
MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3
MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdm
XHg2MFx4MDBceDAxXHg3ZFx4MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZc
eDY0XHg3NVx4NmNceDY1XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4
NzRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2
Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcx
XHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4
NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgw
N1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlh
XHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBc
eDAwXHhiY1x4NDNceGMzXHhmNVx4YThceDNmXHhiY1x4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4
MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgp
ID0+IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWYzMiIsIFtdKSwgMS4zMjAwMDAwNTI0NSkKKworLy8g
cmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMjMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4
MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2
MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcw
XHgwMVx4N2ZceDYwXHgwMFx4MDFceDdjXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZc
eDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4
NzJceDczXHg3NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHgxMFx4MDBceGJkXHg0NFx4M2RceDBhXHhkN1x4YTNceDcwXHgzZFx4ZmFceDNmXHhiZFx4
NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtd
KSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWY2NCIsIFtd
KSwgMS42NCkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMjUKK2Fzc2VydF9yZXR1
cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWkzMiIsIFtdKSwgMzIpOworCisvLyByZXR1
cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyNgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4
NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgw
MVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAx
XHg3Zlx4NjBceDAwXHgwMVx4N2VceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRc
eDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4
NmZceDZlXHg2NFx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHgxMFx4MDBceDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4
MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgp
ID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1pNjQiLCBbXSksIGludDY0KCI2NCIpKQorCisvLyBy
ZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyNworcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgw
N1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYw
XHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBc
eDAxXHg3Zlx4NjBceDAwXHgwMVx4N2RceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4
NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2
M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzM1x4MzJceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OWFceDgwXHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHgxMFx4MDBceGJjXHg0M1x4MDBceDAwXHgwMFx4NDJceGJjXHg0Nlx4NDVceDBkXHgw
MFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2Vy
dF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWYzMiIsIFtdKSwgMzIuKQorCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyOAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2NceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1
XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3
M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4
MDBceDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAwXHgw
MFx4MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBceDQw
XHhiZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1
biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1m
NjQiLCBbXSksIDY0LjEpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMwCitydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdlXHgw
Mlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4
XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3
M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4
MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgw
MFx4MDJceDQwXHg0MVx4MDVceDQyXHgwMlx4MTBceDAwXHgwMVx4NDJceDAyXHgwMVx4NTFceDQ1
XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAv
LyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFs1LCBpbnQ2NCgiMiIp
XSksIGludDY0KCIyIikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMxCitydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdlXHgw
Mlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4
XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3
M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4
MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgw
MFx4MDJceDQwXHg0MVx4MDVceDQyXHgwNVx4MTBceDAwXHgwMVx4NDJceDA1XHgwMVx4NTFceDQ1
XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAv
LyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFs1LCBpbnQ2NCgiNSIp
XSksIGludDY0KCI1IikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMyCitydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdlXHgw
Mlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4
XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3
M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4
MDBceDA2XHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMVx4OTZceDgwXHg4MFx4ODBceDAwXHgw
MFx4MDJceDQwXHg0MVx4MGNceDQyXHgwNVx4MTBceDAwXHgwMVx4NDJceGY4XHgwMFx4MDFceDUx
XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkp
OyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTIsIGludDY0
KCI1IildKSwgaW50NjQoIjEyMCIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIz
MworcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4
MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2
Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAx
XHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNc
eDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVc
eDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3
NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgw
XHgwMFx4MDBceDAyXHg0MFx4NDFceDExXHg0Mlx4MDJceDEwXHgwMFx4MDFceDQyXHgwMlx4MDFc
eDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBb
XSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTcsIGlu
dDY0KCIyIildKSwgaW50NjQoIjIiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoy
MzQKK2Fzc2VydF90cmFwKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBc
eDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4
NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3
Zlx4N2VceDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0
XHg3NVx4NmNceDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNc
eDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDFceDhkXHg4
MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDAwXHg0Mlx4MDJceDEwXHgwMFx4MGZceDBi
XHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF90cmFwKCgp
ID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFswLCBpbnQ2NCgiMiIpXSkpCisKKy8vIHJldHVybl9j
YWxsX2luZGlyZWN0Lndhc3Q6MjM1Cithc3NlcnRfdHJhcCgoKSA9PiBjYWxsKGluc3RhbmNlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4
MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2
MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcw
XHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBc
eDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNceDcwXHg2MVx4
NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
OVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgw
M1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4
NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4
MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5M1x4ODBceDgw
XHg4MFx4MDBceDAxXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgwZlx4NDJc
eDAyXHgxMFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTUsIGludDY0KCIy
IildKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMzYKK2Fzc2VydF90cmFwKCgp
ID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2
MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAx
XHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4MDJc
eDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4
NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAw
XHgwNlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDBc
eDAyXHg0MFx4NDFceDE0XHg0Mlx4MDJceDEwXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDEsICJkaXNw
YXRjaCIsIFsyMCwgaW50NjQoIjIiKV0pKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0
OjIzNworYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2
MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdm
XHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJc
eDdmXHg3ZVx4MDFceDdlXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4
NjRceDc1XHg2Y1x4NjVceDA4XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgw
Nlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3
M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgw
M1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAx
XHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMVx4OGRc
eDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0MVx4N2ZceDQyXHgwMlx4MTBceDAwXHgwZlx4
MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAo
KCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoIiwgWy0xLCBpbnQ2NCgiMiIpXSkpCisKKy8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6MjM4Cithc3NlcnRfdHJhcCgoKSA9PiBjYWxsKGluc3RhbmNl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgw
MFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdm
XHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4
MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNceDcwXHg2
MVx4NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAw
XHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5N1x4ODBc
eDgwXHg4MFx4MDBceDAxXHg5MVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHhlN1x4
ODRceGNlXHhjMlx4MDRceDQyXHgwMlx4MTBceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMo
JDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbCgkMSwgImRpc3Bh
dGNoIiwgWzFfMjEzXzQzMl80MjMsIGludDY0KCIyIildKSkKKworLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDoyNDAKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZk
XHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBc
eDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4
N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgw
MVx4N2ZceDAxXHg3ZVx4MDJceDhmXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0
XHg3NVx4NmNceDY1XHgxM1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgyZFx4NzNc
eDc0XHg3Mlx4NzVceDYzXHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgwNlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5
XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2
ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBceDAw
XHgwMFx4MDJceDQwXHg0MVx4MDVceDEwXHgwMFx4MDFceDQyXHgwOVx4MDFceDUxXHg0NVx4MGRc
eDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNz
ZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFs1XSksIGlu
dDY0KCI5IikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjQxCitydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4ODFc
eDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2OVx4
NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1XHg3
Mlx4NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk5XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDA1XHgxMFx4
MDBceDAxXHg0Mlx4MDlceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBv
cnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwg
ImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBbNV0pLCBpbnQ2NCgiOSIpKQorCisvLyByZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0OjI0MgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAw
XHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBc
eDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4
NjBceDAxXHg3Zlx4MDFceDdlXHgwMlx4OGZceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2
Zlx4NjRceDc1XHg2Y1x4NjVceDEzXHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDJk
XHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYxXHg2Y1x4MDBceDA2XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAy
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1
XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBc
eDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4
NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4
MFx4MDBceDAwXHgwMlx4NDBceDQxXHgwY1x4MTBceDAwXHgwMVx4NDJceDgwXHg5M1x4MTZceDAx
XHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwg
W10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoLXN0cnVjdHVy
YWwiLCBbMTJdKSwgaW50NjQoIjM2Ml84ODAiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDoyNDMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgw
MVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYw
XHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2Zc
eDAxXHg3ZVx4MDJceDhmXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4
NmNceDY1XHgxM1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgyZFx4NzNceDc0XHg3
Mlx4NzVceDYzXHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHg0MVx4MTFceDEwXHgwMFx4MDFceDQyXHgwOVx4MDFceDUxXHg0NVx4MGRceDAwXHgw
Zlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxN10pLCBpbnQ2NCgi
OSIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0NAorYXNzZXJ0X3RyYXAoKCkg
PT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhh
NFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYw
XHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFc
eDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4
ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2
OVx4NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1
XHg3Mlx4NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDkxXHg4MFx4
ODBceDgwXHgwMFx4MDFceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDBiXHgx
MFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBh
c3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxMV0pKQor
CisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0NQorYXNzZXJ0X3RyYXAoKCkgPT4gY2Fs
bChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBc
eDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4
NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2
MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4ODFceDgw
XHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2OVx4NzNc
eDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1XHg3Mlx4
NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDkxXHg4MFx4ODBceDgw
XHgwMFx4MDFceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDEwXHgxMFx4MDBc
eDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRf
dHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxNl0pKQorCisvLyBy
ZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0NworYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAiY2FsbC10YWIiLCBbMF0pLCAzMDYpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0
OjI0OAorYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiY2FsbC10YWIiLCBbMV0pLCAzMDcp
OworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0OQorYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAiY2FsbC10YWIiLCBbMl0pLCAzMDgpOworCisvLyByZXR1cm5fY2FsbF9pbmRp
cmVjdC53YXN0OjI1MQorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4
NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3
Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAx
XHg3ZVx4MDFceDdlXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDAzXHg2Nlx4NjFceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgw
Nlx4MGFceDk5XHg4MFx4ODBceDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAy
XHg0MFx4NDJceDAwXHgxMFx4MDBceDAxXHg0Mlx4MDFceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZc
eDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1
cm4oKCkgPT4gY2FsbCgkMSwgImZhYyIsIFtpbnQ2NCgiMCIpXSksIGludDY0KCIxIikpCisKKy8v
IHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjUyCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBc
eDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4
NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3
MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2VceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDY2XHg2MVx4NjNceDAwXHgwNlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4
NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4
MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFceDUx
XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkp
OyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZmFjIiwgW2ludDY0KCIxIildKSwg
aW50NjQoIjEiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNTMKK3J1bigoKSA9
PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0
XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBc
eDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4
N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3ZVx4MDJceGZmXHg4
MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NjZceDYx
XHg2M1x4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2
XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4
MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwNVx4MTBceDAwXHgw
MVx4NDJceGY4XHgwMFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9y
dHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAi
ZmFjIiwgW2ludDY0KCI1IildKSwgaW50NjQoIjEyMCIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRp
cmVjdC53YXN0OjI1NAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4
NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3
Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAx
XHg3ZVx4MDFceDdlXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDAzXHg2Nlx4NjFceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgw
Nlx4MGFceGEyXHg4MFx4ODBceDgwXHgwMFx4MDFceDljXHg4MFx4ODBceDgwXHgwMFx4MDBceDAy
XHg0MFx4NDJceDE5XHgxMFx4MDBceDAxXHg0Mlx4ODBceDgwXHg4MFx4ZGVceDg3XHg5Mlx4ZWNc
eGNmXHhlMVx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImZh
YyIsIFtpbnQ2NCgiMjUiKV0pLCBpbnQ2NCgiN18wMzRfNTM1XzI3N181NzNfOTYzXzc3NiIpKQor
CisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI1NgorYXNzZXJ0X3JldHVybigoKSA9PiBj
YWxsKCQxLCAiZXZlbiIsIFswXSksIDQ0KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2Fz
dDoyNTcKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV2ZW4iLCBbMV0pLCA5OSk7CisK
Ky8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjU4Cithc3NlcnRfcmV0dXJuKCgpID0+IGNh
bGwoJDEsICJldmVuIiwgWzEwMF0pLCA0NCk7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndh
c3Q6MjU5Cithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzc3XSksIDk5KTsK
KworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNjAKK2Fzc2VydF9yZXR1cm4oKCkgPT4g
Y2FsbCgkMSwgImV2ZW4iLCBbMTAwXzAwMF0pLCA0NCk7CisKKy8vIHJldHVybl9jYWxsX2luZGly
ZWN0Lndhc3Q6MjYxCithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzExMV8x
MTFdKSwgOTkpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2MgorYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzBdKSwgOTkpOworCisvLyByZXR1cm5fY2FsbF9p
bmRpcmVjdC53YXN0OjI2MworYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzFd
KSwgNDQpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2NAorYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzIwMF0pLCA5OSk7CisKKy8vIHJldHVybl9jYWxsX2lu
ZGlyZWN0Lndhc3Q6MjY1Cithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbNzdd
KSwgNDQpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2NgorYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzIwMF8wMDJdKSwgOTkpOworCisvLyByZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0OjI2NworYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwg
WzMwMF8wMDNdKSwgNDQpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI3MgorYXNz
ZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4
MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDoyODQKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJc
eDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJldHVybl9j
YWxsX2luZGlyZWN0Lndhc3Q6Mjk2Cithc3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFceDZj
XHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIpOwor
CisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjMwOAorYXNzZXJ0X21hbGZvcm1lZCgiXHgz
Y1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0
XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDozMjAKK2Fzc2VydF9t
YWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3
MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6
MzMyCithc3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4
NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5fY2FsbF9p
bmRpcmVjdC53YXN0OjM0NAorYXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZc
eDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKKworLy8g
cmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDozNTEKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZk
XHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVc
eDNlIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MzYxCithc3NlcnRfbWFsZm9y
bWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFceDc1
XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjM3MQor
YXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2
NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJl
Y3Qud2FzdDozODMKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4
NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6Mzk4Cithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAw
XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDBhXHg4ZFx4ODBceDgwXHg4MFx4MDBc
eDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisK
Ky8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDA2CisvLyBOT1RFOgorLy8gICAobW9kdWxl
CisvLyAgICAodHlwZSAoZnVuYykpCisvLyAgICAodGFibGUgMCBmdW5jcmVmKQorLy8gICAgKGZ1
bmMgJHR5cGUtdm9pZC12cy1udW0gKGkzMi5lcXogKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBl
IDApIChpMzIuY29uc3QgMCkpKSkKKy8vICApCisvLyBUaGlzIHZhbGlkYXRlcyBzaW5jZSB1bnJl
YWNoYWJsZSBiaW5hcnkgb3BzIGFyZSBpZ25vcmVkIGluIFdhc21GdW5jdGlvblBhcnNlci4KKy8v
YXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRc
eDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAwXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDhlXHg4
MFx4ODBceDgwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAw
XHgwMFx4NDVceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDE0Cithc3Nl
cnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4ODBc
eDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAxXHg3ZVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgw
MFx4MGFceDhlXHg4MFx4ODBceDgwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDBceDQx
XHgwMFx4MTNceDAwXHgwMFx4NDVceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndh
c3Q6NDIzCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDFceDdmXHgwMFx4NjBceDAwXHgwMFx4
MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgw
MVx4NzBceDAwXHgwMFx4MGFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDFceDg3XHg4MFx4ODBceDgw
XHgwMFx4MDBceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDo0MzEKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMlx4N2NceDdmXHgwMFx4
NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4
MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDFceDg3
XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0
dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo0NDAKK2xldCAkMiA9IGluc3RhbmNlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgw
MFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4ODBceDgw
XHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg4Zlx4ODBceDgwXHg4MFx4MDBceDAxXHg4OVx4ODBc
eDgwXHg4MFx4MDBceDAwXHg0MVx4MDFceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8g
cmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo0NDYKK2xldCAkMyA9IGluc3RhbmNlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYw
XHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5Mlx4
ODBceDgwXHg4MFx4MDBceDAwXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDQwXHg0
MVx4MDFceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJl
Y3Qud2FzdDo0NTQKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMVx4N2ZceDAwXHg2MFx4MDBc
eDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4ODBceDgwXHg4MFx4
MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OGVceDgwXHg4MFx4ODBceDAwXHgwMVx4ODhceDgwXHg4
MFx4ODBceDAwXHgwMFx4NDFceDAxXHgwMVx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDo0NjIKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZk
XHgwMVx4MDBceDAwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMVx4N2Zc
eDAwXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4
ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OGZceDgwXHg4MFx4ODBceDAwXHgw
MVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHg0Mlx4MDFceDEzXHgwMFx4MDBceDBi
Iik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDcxCithc3NlcnRfaW52YWxpZCgi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBceDgwXHg4MFx4MDBc
eDAyXHg2MFx4MDJceDdmXHg3Zlx4MDBceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4
MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg5
MFx4ODBceDgwXHg4MFx4MDBceDAxXHg4YVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMVx4NDFceDAx
XHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndh
c3Q6NDgxCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDJceDdmXHg3Zlx4MDBceDYwXHgwMFx4
MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgwXHgw
MFx4MDFceDcwXHgwMFx4MDBceDBhXHg5MFx4ODBceDgwXHg4MFx4MDBceDAxXHg4YVx4ODBceDgw
XHg4MFx4MDBceDAwXHg0MVx4MDFceDAxXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8v
IHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDkxCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4
MDJceDdmXHg3Y1x4MDBceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgw
MVx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg5OFx4ODBceDgw
XHg4MFx4MDBceDAxXHg5Mlx4ODBceDgwXHg4MFx4MDBceDAwXHg0NFx4MDBceDAwXHgwMFx4MDBc
eDAwXHgwMFx4ZjBceDNmXHg0MVx4MDFceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8g
cmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo1MDEKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgw
Mlx4N2NceDdmXHgwMFx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAx
XHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDk4XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDkyXHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMVx4NDRceDAwXHgwMFx4
MDBceDAwXHgwMFx4MDBceGYwXHgzZlx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOworCisvLyBy
ZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjUxNQorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAw
XHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwNFx4ODRceDgwXHg4MFx4ODBc
eDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDFceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAxXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2Nh
bGxfaW5kaXJlY3Qud2FzdDo1MjIKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgwMFx4MDBceDAz
XHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDcwXHgwMFx4MDBceDBhXHg5MVx4ODBceDgwXHg4MFx4MDBceDAxXHg4Ylx4ODBceDgwXHg4MFx4
MDBceDAwXHg0MVx4MDBceDEzXHg5NFx4OThceGRiXHhlMlx4MDNceDAwXHgwYiIpOworCisvLyBy
ZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjUzMworYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwNFx4ODVceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAx
XHgwMlx4MDJceDA5XHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4NDFceDAwXHgwYlx4MDJc
eDAwXHgwMCIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1j
YWxsLWluZGlyZWN0LmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLWlu
ZGlyZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3NmJjYzUxNDgzOGJhYWUxZTM4ZWFiMTg1MzAxNDY4M2Yz
OTJjNmEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwvcmV0dXJu
LWNhbGwtaW5kaXJlY3QuanMKQEAgLTAsMCArMSwxNDYgQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBm
cm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi9yZXR1cm4tY2Fs
bC11dGlscy5qcycKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCitjb25z
dCB0cnlSZXR1cm5DYWxsID0gdXRpbHMudHJ5UmV0dXJuQ2FsbAorY29uc3QgdHJ5UmV0dXJuQ2Fs
bEluZGlyZWN0ID0gdXRpbHMudHJ5UmV0dXJuQ2FsbEluZGlyZWN0Citjb25zdCBjcmVhdGVGdW5j
dGlvbiA9IHV0aWxzLmNyZWF0ZUZ1bmN0aW9uCitjb25zdCBjcmVhdGVFeHBvcnRzID0gdXRpbHMu
Y3JlYXRlRXhwb3J0cworY29uc3QgY3JlYXRlVHlwZXMgPSB1dGlscy5jcmVhdGVUeXBlcworY29u
c3QgY3JlYXRlQ29kZSA9IHV0aWxzLmNyZWF0ZUNvZGUKK2NvbnN0IHZlcmJvc2UgPSAwCisKK2Nv
bnN0IFNfSTMyXzEgPSBBcnJheS5mcm9tKHtsZW5ndGg6IDF9LCAodmFsLCBpbmRleCkgPT4gImkz
MiIpOworY29uc3QgU19JMzJfNCA9IEFycmF5LmZyb20oe2xlbmd0aDogNH0sICh2YWwsIGluZGV4
KSA9PiAiaTMyIik7CisKK2xldCBpbnN0MF9mdW5jdGlvbnMgPSBbXQorbGV0IGluc3QxX2Z1bmN0
aW9ucyA9IFtdCitsZXQgaW5zdDJfZnVuY3Rpb25zID0gW10KKworY29uc3QgY3JlYXRlVGFpbEZ1
bmN0aW9uID0gKG5hbWUsIHNpZ25hdHVyZSwgZnVuY3Rpb25zLCBpbnN0YW5jZUlkKSA9PiB7Cisg
IHJldHVybiBjcmVhdGVGdW5jdGlvbihuYW1lLCBzaWduYXR1cmUsCisgICAoYnVpbGRlcikgPT4g
eworICAgICByZXR1cm4gYnVpbGRlci5GdW5jdGlvbihuYW1lLCBzaWduYXR1cmUpLkkzMkNvbnN0
KGluc3RhbmNlSWQpLkVuZCgpCisgICB9LCBmdW5jdGlvbnMpOworfQorCitjb25zdCBjcmVhdGVN
YWluID0gKG5hbWUsIGNhbGxlZXMsIHNpZ25hdHVyZSwgZnVuY3Rpb25zKSA9PiB7CisgIGxldCBy
ZXN1bHQgPSBjcmVhdGVGdW5jdGlvbihuYW1lLCBzaWduYXR1cmUsCisKKyAgICAoYnVpbGRlciwg
dXNlUmV0dXJuQ2FsbCkgPT4geworICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuRnVuY3Rpb24obmFt
ZSwgc2lnbmF0dXJlKQorICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsbGVlcy5sZW5ndGg7
ICsraSkgeworICAgICAgICBidWlsZGVyID0gYnVpbGRlci5HZXRMb2NhbCgwKQorICAgICAgICBi
dWlsZGVyID0gYnVpbGRlci5DYWxsKGNhbGxlZXNbaV0uaW5kZXgpCisgICAgICB9CisgICAgICBy
ZXR1cm4gYnVpbGRlci5FbmQoKQorICAgIH0sZnVuY3Rpb25zKTsKKyAgcmV0dXJuIHJlc3VsdDsK
K30KKworY29uc3QgY3JlYXRlRW50cnlwb2ludCA9IChuYW1lLCBjYWxsZWUsIHNpZ25hdHVyZSwg
ZnVuY3Rpb25zLCB0YWJsZU9mZnNldCkgPT4geworICBsZXQgcmVzdWx0ID0gY3JlYXRlRnVuY3Rp
b24obmFtZSwgc2lnbmF0dXJlLAorICAgIChidWlsZGVyLCB1c2VSZXR1cm5DYWxsKSA9PiB7Cisg
ICAgICByZXR1cm4gdHJ5UmV0dXJuQ2FsbChidWlsZGVyLkZ1bmN0aW9uKG5hbWUsIHNpZ25hdHVy
ZSksIHVzZVJldHVybkNhbGwsIGNhbGxlZS5pbmRleCkuRW5kKCkKKyAgICB9LGZ1bmN0aW9ucyk7
CisgIHJldHVybiB7CisgICAgZnVuY3Rpb246IHJlc3VsdCwKKyAgICB0YWJsZU9mZnNldDogdGFi
bGVPZmZzZXQKKyAgfQorfQorCitjb25zdCBjcmVhdGVUcmFtcG9saW5lID0gKG5hbWUsIGVudHJ5
cG9pbnQsIHNpZ25hdHVyZSwgZnVuY3Rpb25zKSA9PiB7CisgIGxldCByZXN1bHQgPSBjcmVhdGVG
dW5jdGlvbihuYW1lLCBzaWduYXR1cmUsCisgICAgKGJ1aWxkZXIsIHVzZVJldHVybkNhbGwpID0+
IHsKKyAgICAgIHJldHVybiB0cnlSZXR1cm5DYWxsSW5kaXJlY3QoYnVpbGRlci5GdW5jdGlvbihu
YW1lLCBzaWduYXR1cmUpLCB1c2VSZXR1cm5DYWxsLCBlbnRyeXBvaW50LnRhYmxlT2Zmc2V0LCAw
KS5FbmQoKTsKKyAgICB9LGZ1bmN0aW9ucyk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0
IHRhaWxTaWduYXR1cmUgPSB7IHBhcmFtczogW10sIHJldDogU19JMzJfMSB9CisKK2NvbnN0IGlu
c3QxX3RhaWwgPSBjcmVhdGVUYWlsRnVuY3Rpb24oJ2luc3QxX3RhaWwnLCB0YWlsU2lnbmF0dXJl
LCBpbnN0MV9mdW5jdGlvbnMsIC8qaW5zdGFuY2VJZCovMSk7Citjb25zdCBpbnN0MV9lbnRyeXBv
aW50ID0gY3JlYXRlRW50cnlwb2ludCgnaW5zdDFfZW50cnlwb2ludCcsIGluc3QxX3RhaWwsIHRh
aWxTaWduYXR1cmUsIGluc3QxX2Z1bmN0aW9ucywgLyp0YWJsZU9mZnNldCovMCk7CisKK2NvbnN0
IGluc3QyX3RhaWwgPSBjcmVhdGVUYWlsRnVuY3Rpb24oJ2luc3QyX3RhaWwnLCB0YWlsU2lnbmF0
dXJlLCBpbnN0Ml9mdW5jdGlvbnMsIC8qaW5zdGFuY2VJZCovMik7Citjb25zdCBpbnN0Ml9lbnRy
eXBvaW50ID0gY3JlYXRlRW50cnlwb2ludCgnaW5zdDJfZW50cnlwb2ludCcsIGluc3QyX3RhaWws
IHRhaWxTaWduYXR1cmUsIGluc3QyX2Z1bmN0aW9ucywgLyp0YWJsZU9mZnNldCovMSk7CisKKyBj
b25zdCB0cmFtcG9saW5lX2luc3QxID0gY3JlYXRlVHJhbXBvbGluZSgnaW5zdDBfdHJhbXBvbGlu
ZV9pbnN0MScsIGluc3QxX2VudHJ5cG9pbnQsIHRhaWxTaWduYXR1cmUsIGluc3QwX2Z1bmN0aW9u
cyk7Citjb25zdCB0cmFtcG9saW5lX2luc3QyID0gY3JlYXRlVHJhbXBvbGluZSgnaW5zdDBfdHJh
bXBvbGluZV9pbnN0MicsIGluc3QyX2VudHJ5cG9pbnQsIHRhaWxTaWduYXR1cmUsIGluc3QwX2Z1
bmN0aW9ucyk7Citjb25zdCBpbnN0MF9tYWluID0gY3JlYXRlTWFpbignaW5zdDBfbWFpbicsIFt0
cmFtcG9saW5lX2luc3QxLCB0cmFtcG9saW5lX2luc3QyXSwgeyBwYXJhbXM6IFNfSTMyXzEsIHJl
dDogU19JMzJfNH0sIGluc3QwX2Z1bmN0aW9ucyk7CisKK2NvbnN0IHRhYmxlSW5mbyA9IHtpbml0
aWFsOjIsIGVsZW1lbnQ6ImZ1bmNyZWYifQorY29uc3QgdGFibGUgPSBuZXcgV2ViQXNzZW1ibHku
VGFibGUodGFibGVJbmZvKQorbGV0IGltcG9ydE9iamVjdCA9IHsgaW1wOiB7IHRhYmxlIH0gfTsK
KworCisvLyBpbnN0MF9tYWluIC0+IFtpbnN0MV90cmFtcG9saW5lLCBpbnN0Ml90cmFtcG9saW5l
XQorLy8gaW5zdDFfdHJhbXBvbGluZSAtPiBpbnN0MV9lbnRyeXBvaW50IC0+IFtpbnN0MV90YWls
XQorLy8gaW5zdDJfdHJhbXBvbGluZSAtPiBpbnN0Ml9lbnRyeXBvaW50IC0+IFtpbnN0Ml90YWls
XQorLy8KKy8vIHRhYmxlOgorLy8gaW5zdDFfZW50cnlwb2ludAorLy8gaW5zdDJfZW50cnlwb2lu
dAorCisvLyBUZXN0IHdhc20gaW5zdGFuY2UgYWNyb3NzIGNhbGxzCisKK2NvbnN0IHJ1blRlc3Qg
PSAodXNlUmV0dXJuQ2FsbCkgPT4geworCisgICAgbGV0IGNyZWF0ZUJ1aWxkZXIgPSAodXNlUmV0
dXJuQ2FsbCkgPT4geworICAgICAgIGxldCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAgICAg
ICBidWlsZGVyID0gY3JlYXRlVHlwZXMoYnVpbGRlciwgW3RhaWxTaWduYXR1cmUsIHRhaWxTaWdu
YXR1cmVdKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAuVGFibGUoImltcCIsICJ0YWJs
ZSIsIHRhYmxlSW5mbykKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgp
CisgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgLlRhYmxlKHRhYmxlSW5mbykKKyAgICAgICAg
LkVuZCgpCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVFeHBvcnRzKGJ1aWxkZXIsIGluc3QxX2Z1
bmN0aW9ucykKKyAgICAgICAgLkVsZW1lbnQoKQorICAgICAgICAgICAgLkVsZW1lbnQoe29mZnNl
dDogMCwgZnVuY3Rpb25JbmRpY2VzOiBbMV19KQorICAgICAgICAuRW5kKCkKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZUNvZGUoYnVpbGRlciwgaW5zdDFfZnVuY3Rpb25zLCB1c2VSZXR1cm5DYWxsKQor
ICAgIH0KKworICAgIGNvbnN0IGluc3QxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoY3JlYXRlQnVpbGRlcih1c2VSZXR1cm5DYWxsKS5XZWJBc3NlbWJs
eSgpLmdldCgpKSwgaW1wb3J0T2JqZWN0KTsKKworICAgIGNyZWF0ZUJ1aWxkZXIgPSAodXNlUmV0
dXJuQ2FsbCkgPT4geworICAgICAgIGxldCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAgICAg
ICBidWlsZGVyID0gY3JlYXRlVHlwZXMoYnVpbGRlciwgW3RhaWxTaWduYXR1cmUsIHRhaWxTaWdu
YXR1cmVdKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAuVGFibGUoImltcCIsICJ0YWJs
ZSIsIHRhYmxlSW5mbykKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgp
CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVFeHBvcnRzKGJ1aWxkZXIsIGluc3QyX2Z1bmN0aW9u
cykKKyAgICAgICAgLkVsZW1lbnQoKQorICAgICAgICAgICAgLkVsZW1lbnQoe29mZnNldDogMSwg
ZnVuY3Rpb25JbmRpY2VzOiBbMV19KQorICAgICAgICAuRW5kKCkKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZUNvZGUoYnVpbGRlciwgaW5zdDJfZnVuY3Rpb25zLCB1c2VSZXR1cm5DYWxsKQorICAgIH0K
KworICAgIGNvbnN0IGluc3QyID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoY3JlYXRlQnVpbGRlcih1c2VSZXR1cm5DYWxsKS5XZWJBc3NlbWJseSgpLmdl
dCgpKSwgaW1wb3J0T2JqZWN0KTsKKworICAgIGNyZWF0ZUJ1aWxkZXIgPSAodXNlUmV0dXJuQ2Fs
bCkgPT4geworICAgICAgIGxldCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAgICAgICBidWls
ZGVyID0gY3JlYXRlVHlwZXMoYnVpbGRlciwgW3RhaWxTaWduYXR1cmUsIHRhaWxTaWduYXR1cmVd
KQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAuVGFibGUoImltcCIsICJ0YWJsZSIsIHRh
YmxlSW5mbykKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAg
ICAgIGJ1aWxkZXIgPSBjcmVhdGVFeHBvcnRzKGJ1aWxkZXIsIGluc3QwX2Z1bmN0aW9ucykKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZUNvZGUoYnVpbGRlciwgaW5zdDBfZnVuY3Rpb25zLCB1c2VSZXR1
cm5DYWxsKQorICAgIH0KKworICAgIGNvbnN0IGluc3QwID0gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoY3JlYXRlQnVpbGRlcih1c2VSZXR1cm5DYWxsKS5X
ZWJBc3NlbWJseSgpLmdldCgpKSwgaW1wb3J0T2JqZWN0KTsKKworICAgIHJldHVybiBpbnN0MC5l
eHBvcnRzWydpbnN0MF9tYWluJ10oKQorfQorCitjb25zdCBsaHNSZXN1bHQgPSBydW5UZXN0KC8q
dXNlUmV0dXJuQ2FsbCovdHJ1ZSkKK2NvbnN0IHJoc1Jlc3VsdCA9IHJ1blRlc3QoLyp1c2VSZXR1
cm5DYWxsKi9mYWxzZSkKK2lmICh2ZXJib3NlKSB7CisgICAgcHJpbnQobGhzUmVzdWx0KQorICAg
IHByaW50KHJoc1Jlc3VsdCkKK30KK2Fzc2VydC5lcShsaHNSZXN1bHQsIHJoc1Jlc3VsdCkKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC9yZXR1cm4tY2FsbC11dGlscy5qcyBi
L0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC9yZXR1cm4tY2FsbC11dGlscy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMTc2NDg4ZDZjNDg4OTMxMGMxYzY0YWVmODdhM2MyZDgyZjYwZjQ4Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLXV0aWxzLmpzCkBAIC0w
LDAgKzEsNDIgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCitleHBv
cnQgY29uc3QgdHJ5UmV0dXJuQ2FsbCA9IChidWlsZGVyLCB1c2VSZXR1cm5DYWxsLCBpbmRleCkg
PT4geworICByZXR1cm4gdXNlUmV0dXJuQ2FsbCA/IGJ1aWxkZXIuUmV0dXJuQ2FsbChpbmRleCkg
OiBidWlsZGVyLkNhbGwoaW5kZXgpCit9CisKK2V4cG9ydCBjb25zdCB0cnlSZXR1cm5DYWxsSW5k
aXJlY3QgPSAoYnVpbGRlciwgdXNlUmV0dXJuQ2FsbCwgaW5kZXgsIHRhYmxlSW5kZXgpID0+IHsK
KyAgbGV0IG5ld0J1aWxkZXIgPSBidWlsZGVyLkkzMkNvbnN0KGluZGV4KTsKKyAgcmV0dXJuIHVz
ZVJldHVybkNhbGwgPyBuZXdCdWlsZGVyLlJldHVybkNhbGxJbmRpcmVjdChpbmRleCwgdGFibGVJ
bmRleCkgOiBuZXdCdWlsZGVyLkNhbGxJbmRpcmVjdChpbmRleCwgdGFibGVJbmRleCkKK30KKwor
ZXhwb3J0IGNvbnN0IGNyZWF0ZUZ1bmN0aW9uID0gKG5hbWUsIHNpZ25hdHVyZSwgYm9keSwgYXJy
YXkpID0+IHsKKyAgbGV0IHJlc3VsdCA9IHsKKyAgICBpbmRleDogYXJyYXkubGVuZ3RoLAorICAg
IG5hbWU6IG5hbWUsCisgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsCisgICAgYm9keTogYm9keQor
ICB9CisgIGFycmF5LnB1c2gocmVzdWx0KQorICByZXR1cm4gcmVzdWx0Cit9CisKK2V4cG9ydCBj
b25zdCBjcmVhdGVFeHBvcnRzID0gKGJ1aWxkZXIsIGZ1bmN0aW9ucykgPT4geworICAgIGxldCBu
ZXdCdWlsZGVyID0gYnVpbGRlci5FeHBvcnQoKQorICAgIGZvciAoY29uc3QgZiBvZiBmdW5jdGlv
bnMpCisgICAgICBuZXdCdWlsZGVyID0gbmV3QnVpbGRlci5GdW5jdGlvbihmWyduYW1lJ10pCisg
ICAgcmV0dXJuIG5ld0J1aWxkZXIuRW5kKCkKK30KKworZXhwb3J0IGNvbnN0IGNyZWF0ZVR5cGVz
ID0gKGJ1aWxkZXIsIHNpZ25hdHVyZXMpID0+IHsKKyAgICBsZXQgbmV3QnVpbGRlciA9IGJ1aWxk
ZXIuVHlwZSgpCisgICAgZm9yIChjb25zdCBzIG9mIHNpZ25hdHVyZXMpCisgICAgICBuZXdCdWls
ZGVyID0gbmV3QnVpbGRlci5GdW5jKHNbJ3BhcmFtcyddLCBzWydyZXQnXSkKKyAgICByZXR1cm4g
bmV3QnVpbGRlci5FbmQoKQorfQorCitleHBvcnQgY29uc3QgY3JlYXRlQ29kZSA9IChidWlsZGVy
LCBmdW5jdGlvbnMsIHVzZVJldHVybkNhbGwpID0+IHsKKyAgICBsZXQgbmV3QnVpbGRlciA9IGJ1
aWxkZXIuQ29kZSgpCisgICAgZm9yIChjb25zdCBmIG9mIGZ1bmN0aW9ucykKKyAgICAgIG5ld0J1
aWxkZXIgPSBmWydib2R5J10obmV3QnVpbGRlciwgdXNlUmV0dXJuQ2FsbCkKKyAgICByZXR1cm4g
bmV3QnVpbGRlci5FbmQoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxs
L3JldHVybi1jYWxsLmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMyNTIwZjAxNDA4NmVmY2Q4MjY5OTY5ZmQ5MWM5ODNiM2Y4MDllODIKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwvcmV0dXJuLWNhbGwuanMK
QEAgLTAsMCArMSwxMjIgQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMn
OworaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi9yZXR1cm4tY2FsbC11dGlscy5qcycKK2ltcG9y
dCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCitjb25zdCB0cnlSZXR1cm5DYWxsID0g
dXRpbHMudHJ5UmV0dXJuQ2FsbAorY29uc3QgY3JlYXRlRnVuY3Rpb24gPSB1dGlscy5jcmVhdGVG
dW5jdGlvbgorY29uc3QgY3JlYXRlRXhwb3J0cyA9IHV0aWxzLmNyZWF0ZUV4cG9ydHMKK2NvbnN0
IGNyZWF0ZVR5cGVzID0gdXRpbHMuY3JlYXRlVHlwZXMKK2NvbnN0IGNyZWF0ZUNvZGUgPSB1dGls
cy5jcmVhdGVDb2RlCitjb25zdCB2ZXJib3NlID0gMAorY29uc3QgcmFuZG9tID0gMQorCitjb25z
dCBTX0kzMl8zID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiAzfSwgKHZhbCwgaW5kZXgpID0+ICJpMzIi
KTsKK2NvbnN0IFNfSTMyXzUgPSBBcnJheS5mcm9tKHtsZW5ndGg6IDV9LCAodmFsLCBpbmRleCkg
PT4gImkzMiIpOworY29uc3QgU19JMzJfNiA9IEFycmF5LmZyb20oe2xlbmd0aDogNn0sICh2YWws
IGluZGV4KSA9PiAiaTMyIik7Citjb25zdCBTX0kzMl83ID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiA3
fSwgKHZhbCwgaW5kZXgpID0+ICJpMzIiKTsKK2NvbnN0IFNfSTMyXzggPSBBcnJheS5mcm9tKHts
ZW5ndGg6IDh9LCAodmFsLCBpbmRleCkgPT4gImkzMiIpOworY29uc3QgU19JMzJfMTAgPSBBcnJh
eS5mcm9tKHtsZW5ndGg6IDEwfSwgKHZhbCwgaW5kZXgpID0+ICJpMzIiKTsKKworbGV0IGZ1bmN0
aW9ucyA9IFtdCitsZXQgZW50cnlwb2ludHMgPSBbXQorCitjb25zdCBwb3B1bGF0ZVN0YWNrSTMy
ID0gKGJ1aWxkZXIsIGNhbGxlckFyaXR5LCBjYWxsZWVBcml0eSkgPT4geworICBsZXQgaSA9IDAK
KyAgZm9yICg7IGkgPCBNYXRoLm1pbihjYWxsZXJBcml0eS5sZW5ndGgsIGNhbGxlZUFyaXR5Lmxl
bmd0aCk7ICsraSkgeworICAgIGJ1aWxkZXIgPSBidWlsZGVyLkdldExvY2FsKGkpCisgIH0KKyAg
Zm9yICg7IGkgPCBjYWxsZWVBcml0eS5sZW5ndGg7ICsraSkgeworICAgIGJ1aWxkZXIgPSBidWls
ZGVyLkkzMkNvbnN0KGkpCisgIH0KKyAgcmV0dXJuIGJ1aWxkZXIKK30KKworY29uc3QgY3JlYXRl
VGFpbEZ1bmN0aW9uID0gKG5hbWUsIHNpZ25hdHVyZSkgPT4geworICByZXR1cm4gY3JlYXRlRnVu
Y3Rpb24obmFtZSwgc2lnbmF0dXJlLAorICAgKGJ1aWxkZXIpID0+IHsKKyAgICAgbGV0IG5ld0J1
aWxkZXIgPSBidWlsZGVyLkZ1bmN0aW9uKG5hbWUsIHNpZ25hdHVyZSkKKyAgICAgcmV0dXJuIHBv
cHVsYXRlU3RhY2tJMzIobmV3QnVpbGRlciwgc2lnbmF0dXJlLnBhcmFtcywgc2lnbmF0dXJlLnJl
dCkuRW5kKCk7CisgICB9LCBmdW5jdGlvbnMpOworfQorCitjb25zdCBnZW5lcmF0ZUFyZ3VtZW50
cyA9IChwYXJhbXMpID0+IHsKKyAgcmV0dXJuIHBhcmFtcy5tYXAoKCkgPT4geyByZXR1cm4gTWF0
aC5yYW5kb20oKSAqIDB4N2Y7IH0pCit9CisKK2NvbnN0IGNyZWF0ZVNpZ25hdHVyZSA9IChwYXJh
bXNMZW5ndGgsIHJldExlbmd0aCkgPT4geworICByZXR1cm4geworICAgIHBhcmFtczogQXJyYXku
ZnJvbSh7bGVuZ3RoOiBwYXJhbXNMZW5ndGh9LCAodixpKSA9PiAiaTMyIiksCisgICAgcmV0OiBB
cnJheS5mcm9tKHtsZW5ndGg6IHJldExlbmd0aH0sICh2LGkpID0+ICJpMzIiKSwKKyAgfQorfQor
Citjb25zdCBjcmVhdGVDYWxsZXIgPSAobmFtZSwgY2FsbGVlLCBzaWduYXR1cmUpID0+IHsKKyAg
bGV0IHJlc3VsdCA9IGNyZWF0ZUZ1bmN0aW9uKG5hbWUsIHNpZ25hdHVyZSwKKyAgICAoYnVpbGRl
ciwgdXNlUmV0dXJuQ2FsbCkgPT4geworICAgICAgYnVpbGRlciA9IHBvcHVsYXRlU3RhY2tJMzIo
YnVpbGRlci5GdW5jdGlvbihuYW1lLCBzaWduYXR1cmUpLCBzaWduYXR1cmUucGFyYW1zLCBjYWxs
ZWUuc2lnbmF0dXJlLnBhcmFtcykKKyAgICAgIHJldHVybiB0cnlSZXR1cm5DYWxsKGJ1aWxkZXIs
IHVzZVJldHVybkNhbGwsIGNhbGxlZS5pbmRleCkuRW5kKCk7CisgICAgfSxmdW5jdGlvbnMpOwor
CisgIGVudHJ5cG9pbnRzLnB1c2goe2NhbGxlcjogcmVzdWx0LCBjYWxsZWU6IGNhbGxlZX0pCisg
IHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0IGNyZWF0ZUJ1aWxkZXIgPSAodXNlUmV0dXJuQ2Fs
bCkgPT4geworICAgbGV0IGJ1aWxkZXIgPSBuZXcgQnVpbGRlcigpCisgICAgYnVpbGRlciA9IGNy
ZWF0ZVR5cGVzKGJ1aWxkZXIsIFtdKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgYnVpbGRl
ciA9IGNyZWF0ZUV4cG9ydHMoYnVpbGRlciwgZnVuY3Rpb25zKQorICAgIHJldHVybiBjcmVhdGVD
b2RlKGJ1aWxkZXIsIGZ1bmN0aW9ucywgdXNlUmV0dXJuQ2FsbCkKK30KKworY29uc3QgZjVfNSA9
IGNyZWF0ZVRhaWxGdW5jdGlvbignZjVfNScsIHsgcGFyYW1zOiBTX0kzMl81LCByZXQ6IFNfSTMy
XzUgfSk7Citjb25zdCBmNl81ID0gY3JlYXRlVGFpbEZ1bmN0aW9uKCdmNl81JywgeyBwYXJhbXM6
IFNfSTMyXzYsIHJldDogU19JMzJfNSB9KTsKK2NvbnN0IGY2XzYgPSBjcmVhdGVUYWlsRnVuY3Rp
b24oJ2Y2XzYnLCB7IHBhcmFtczogU19JMzJfNiwgcmV0OiBTX0kzMl82IH0pOworY29uc3QgZjBf
MTAgPSBjcmVhdGVUYWlsRnVuY3Rpb24oJ2YwXzEwJywgeyBwYXJhbXM6IFtdLCByZXQ6IFNfSTMy
XzEwfSk7Citjb25zdCBmMTBfMCA9IGNyZWF0ZVRhaWxGdW5jdGlvbignZjEwXzAnLCB7IHBhcmFt
czogU19JMzJfMTAsIHJldDogW119KTsKK2NvbnN0IGYwXzAgPSBjcmVhdGVUYWlsRnVuY3Rpb24o
J2YwXzAnLCB7IHBhcmFtczogW10sIHJldDogW119KTsKK2NvbnN0IGY1XzggPSBjcmVhdGVUYWls
RnVuY3Rpb24oJ2Y1XzgnLCB7IHBhcmFtczogU19JMzJfNSwgcmV0OiBTX0kzMl84IH0pOworY29u
c3QgZjhfNSA9IGNyZWF0ZVRhaWxGdW5jdGlvbignZjhfNScsIHsgcGFyYW1zOiBTX0kzMl84LCBy
ZXQ6IFNfSTMyXzUgfSk7Citjb25zdCBmMTBfNSA9IGNyZWF0ZVRhaWxGdW5jdGlvbignZjEwXzUn
LCB7IHBhcmFtczogU19JMzJfMTAsIHJldDogU19JMzJfNSB9KTsKKworY3JlYXRlQ2FsbGVyKCdj
YWxsZXJfZjVfNScsIGY1XzUsIGY1XzUuc2lnbmF0dXJlKTsKK2NyZWF0ZUNhbGxlcignY2FsbGVy
X2Y1XzgnLCBmNV84LCBmNV84LnNpZ25hdHVyZSk7CitjcmVhdGVDYWxsZXIoJ2NhbGxlcl9mOF81
JywgZjhfNSwgZjhfNS5zaWduYXR1cmUpOworY29uc3QgY2FsbGVyX2YxMF81ID0gY3JlYXRlQ2Fs
bGVyKCdjYWxsZXJfZjEwXzUnLCBmMTBfNSwgZjEwXzUuc2lnbmF0dXJlKTsKK2NyZWF0ZUNhbGxl
cignY2FsbGVyX2NhbGxlcl9mMTBfNScsIGNhbGxlcl9mMTBfNSwgZjEwXzUuc2lnbmF0dXJlKTsK
K2NyZWF0ZUNhbGxlcignY2FsbGVyX2Y2XzUnLCBmNl81LCBmNl81LnNpZ25hdHVyZSk7CitjcmVh
dGVDYWxsZXIoJ2NhbGxlcl9mNl82JywgZjZfNiwgZjZfNi5zaWduYXR1cmUpOworY3JlYXRlQ2Fs
bGVyKCdjYWxsZXJfZjBfMTAnLCBmMF8xMCwgZjBfMTAuc2lnbmF0dXJlKTsKK2NyZWF0ZUNhbGxl
cignY2FsbGVyX2YxMF8wJywgZjEwXzAsIGYxMF8wLnNpZ25hdHVyZSk7CitjcmVhdGVDYWxsZXIo
J2NhbGxlcl9mMF8wJywgZjBfMCwgZjBfMC5zaWduYXR1cmUpOworCitpZiAocmFuZG9tKSB7Cisg
IGZvciAobGV0IGkgPSAwOyBpIDwgMHg3ZjsgaSsrKSB7CisgICAgY29uc3QgcGFyYW1zID0gTWF0
aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMHg3ZikKKyAgICBjb25zdCByZXQgPSBNYXRoLmZsb29y
KE1hdGgucmFuZG9tKCkgKiAweDdmKQorICAgIGNvbnN0IG5hbWUgPSBpLnRvU3RyaW5nKCkgKyAn
X2YnICsgcGFyYW1zLnRvU3RyaW5nKCkgKyAnXycgKyByZXQudG9TdHJpbmcoKQorICAgIGNvbnN0
IGNhbGxlZSA9IGNyZWF0ZVRhaWxGdW5jdGlvbihuYW1lLCBjcmVhdGVTaWduYXR1cmUocGFyYW1z
LCByZXQpKTsKKyAgICBjb25zdCBjYWxsZXJOYW1lID0gJ2NhbGxlcl8nCisgICAgY3JlYXRlQ2Fs
bGVyKGNhbGxlck5hbWUrIG5hbWUsIGNhbGxlZSwgY2FsbGVlLnNpZ25hdHVyZSk7CisgIH0KK30K
KworIGNvbnN0IGxocyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKGNyZWF0ZUJ1aWxkZXIoLyp1c2VSZXR1cm5DYWxsKi90cnVlKS5XZWJBc3NlbWJseSgp
LmdldCgpKSk7CisgY29uc3QgcmhzID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoY3JlYXRlQnVpbGRlcigvKnVzZXJSZXR1cm5DYWxsKi9mYWxzZSkuV2Vi
QXNzZW1ibHkoKS5nZXQoKSkpOworCisgZm9yIChsZXQgaSA9IDA7IGkgPCBlbnRyeXBvaW50cy5s
ZW5ndGg7ICsraSkgeworICAgY29uc3QgY2FsbGVyID0gZW50cnlwb2ludHNbaV1bJ2NhbGxlcidd
CisgICBjb25zdCBjYWxsZWUgPSBlbnRyeXBvaW50c1tpXVsnY2FsbGVlJ10KKyAgIGNvbnN0IGNh
bGxlck5hbWUgPSBjYWxsZXJbJ25hbWUnXTsKKyAgIGNvbnN0IGxoc0VudHJ5cG9pbnQgPSBsaHMu
ZXhwb3J0c1tjYWxsZXJOYW1lXQorICAgY29uc3QgcmhzRW50cnlwb2ludCA9IHJocy5leHBvcnRz
W2NhbGxlck5hbWVdCisgICBjb25zdCBwYXJhbXMgPSBnZW5lcmF0ZUFyZ3VtZW50cyhjYWxsZXIu
c2lnbmF0dXJlLnBhcmFtcykKKyAgIGNvbnN0IGxoc1Jlc3VsdCA9IGxoc0VudHJ5cG9pbnQoLi4u
cGFyYW1zKQorICAgY29uc3QgcmhzUmVzdWx0ID0gcmhzRW50cnlwb2ludCguLi5wYXJhbXMpCisg
ICBpZiAodmVyYm9zZSkgeworICAgICBwcmludCgnKCcsIGNhbGxlck5hbWUsJykgKCcsIGVudHJ5
cG9pbnRzW2ldLmNhbGxlci5zaWduYXR1cmUucGFyYW1zLCAnKScsICctPicsICcoJywgY2FsbGVl
WyduYW1lJ10sICcpICgnLCBlbnRyeXBvaW50c1tpXS5jYWxsZWUuc2lnbmF0dXJlLnBhcmFtcywg
JyknLCAnLT4nLCAnWycsIGVudHJ5cG9pbnRzW2ldLmNhbGxlZS5zaWduYXR1cmUucmV0LCAnXScp
CisgICAgIHByaW50KGxoc1Jlc3VsdCkKKyAgICAgcHJpbnQocmhzUmVzdWx0KQorICAgfQorICAg
YXNzZXJ0LmVxKGxoc1Jlc3VsdCwgcmhzUmVzdWx0KQorIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCmluZGV4IDZhMzY4MWRiOTkz
MWQ3MmI2MjY0MWU3OWUyMTU1OThlMDhiNjM5NGMuLjU2MjlhMTFkNTZjYWY4NzU1MGU0YWQ3NGM1
NDU0MmEyNzBjMzU2ZDQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KKysrIGIv
SlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAtOTgsNiArOTgsOCBAQAogICAgICAgICAiZGF0YS5k
cm9wIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImV4dHRhYmxlIiwgICAidmFsdWUiOiAgMjUy
LCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6
IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
c2VnbWVudF9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNocmlua3MgdGhlIHNp
emUgb2YgdGhlIHNlZ21lbnQgdG8gemVybyIsICJleHRlbmRlZE9wIjogOSB9LAogICAgICAgICAi
Y2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUi
OiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFt
ZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBm
dW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCiAgICAgICAgICJjYWxsX2luZGlyZWN0IjogICAgICAg
eyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2Fs
bCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0eXBlIjogInZh
cnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGgg
YW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAgICAgICAicmV0dXJuX2NhbGwiOiAgICAgICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE4LCAicmV0dXJu
IjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwi
XSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9u
X2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ0YWlsIGNhbGwgYSBmdW5jdGlvbiBi
eSBpdHMgaW5kZXgiIH0sCisgICAgICAgICJyZXR1cm5fY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsg
ImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTksICJyZXR1cm4iOiBbImNhbGwi
XSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAg
ICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAi
dHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInRhYmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1
aW50MzIifV0sImRlc2NyaXB0aW9uIjogInRhaWwgY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdp
dGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAgICAgICAiY2FsbF9yZWYiOiAgICAgICAg
ICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMjAsICJyZXR1cm4iOiBb
ImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAg
ICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiByZWZlcmVuY2Ui
IH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5
IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAg
ICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlv
biI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3UiOiAgICAgICAg
IHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDUsICJyZXR1cm4iOiBbImkz
MiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFy
dWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458515</attachid>
            <date>2022-04-28 05:02:40 -0700</date>
            <delta_ts>2022-06-30 09:16:10 -0700</delta_ts>
            <desc>with Changelogs</desc>
            <filename>bug-215275-20220428140428.patch</filename>
            <type>text/plain</type>
            <size>1139994</size>
            <attacher name="Tom Tartarin">tom</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Njc2YjVmNWVmZGYyNzc1NDRkODllMjdhODBiZDNjZDE0YmMwNTdlLi5kZmUxMDAxMGZmZjA5ZTgz
MmM2NDhiNTNhNGRhZjZiMjNiOTg2YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMi0wNC0yOCAgVG9tIFRhcnRhcmluICA8dG9tQGxlYW5pbmd0ZWNoLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3Igd2FzbSB0YWlsIGNhbGxzIGluIExM
SW50IHRpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNTI3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIHNwZWNpZmljIHNsb3cgcGF0aCBmb3IgdGFpbCB2YXJpYW50cyBvZiBjYWxsIGFuZCBj
YWxsX2luZGlyZWN0LgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAg
ICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFi
aWxpdHlMZXZlbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206Cisg
ICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRSZXR1cm5DYWxsKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGxJbmRpcmVjdCk6CisgICAgICAg
ICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJH
ZW5lcmF0b3I6OmFkZFJldHVybkNhbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJh
dG9yOjphZGRSZXR1cm5DYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9u
UGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpw
YXJzZUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250
ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUxM
SW50R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6Om51
bWJlck9mU3RhY2tSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRv
cjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRH
ZW5lcmF0b3I6OmFkZFJldHVybkNhbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVy
YXRvcjo6YWRkUmV0dXJuQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6V0FTTV9TTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogd2FzbS9XYXNtU2xvd1BhdGhzLmg6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisK
IDIwMjItMDQtMjggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtSSVNDVjY0XSBJbXBsZW1lbnQgTWFjcm9Bc3NlbWJsZXJSSVNDVjY0IGJyYW5jaEF0b21p
Y1dlYWtDQVN7OCwxNiwzMiw2NH0gbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggOTZjYzEzOTMzMDIzZGZjOGMwZmViZjZmYjUy
MWUwZTExYTI0YTk5OC4uMzVlZjExMjhhOGQyYWQ5YWJjYTMzZjdiYTdmZjc2YzA4YzdiMzkzZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBA
IC0xNDkwLDYgKzE0OTAsMTAgQEAgb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJl
Y3QKIG9wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rscwogb3AgOndh
c21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmCiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2Fs
bF9yZWZfbm9fdGxzCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGwKK29wIDp3
YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9ub190bHMKK29wIDp3YXNtX3RyYW1wb2xp
bmVfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdAorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX3Jl
dHVybl9jYWxsX2luZGlyZWN0X25vX3RscwogCiBlbmRfc2VjdGlvbiA6TmF0aXZlSGVscGVycwog
CkBAIC0xNjg2LDYgKzE2OTAsMjIgQEAgb3AgOmNhbGxfbm9fdGxzLAogICAgICAgICBudW1iZXJP
ZlN0YWNrQXJnczogdW5zaWduZWQsCiAgICAgfQogCitvcCA6cmV0dXJuX2NhbGwsCisgICAgYXJn
czogeworICAgICAgICBmdW5jdGlvbkluZGV4OiB1bnNpZ25lZCwKKyAgICAgICAgc3RhY2tPZmZz
ZXQ6IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAg
ICAgIG51bWJlck9mQ2FsbGVyU3RhY2tSZWdzOiB1bnNpZ25lZCwKKyAgICB9CisKK29wIDpyZXR1
cm5fY2FsbF9ub190bHMsCisgICAgYXJnczogeworICAgICAgICBmdW5jdGlvbkluZGV4OiB1bnNp
Z25lZCwKKyAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJPZlN0
YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIG51bWJlck9mQ2FsbGVyU3RhY2tSZWdzOiB1bnNp
Z25lZCwKKyAgICB9CisKIG9wIDpjYWxsX2luZGlyZWN0LAogICAgIGFyZ3M6IHsKICAgICAgICAg
ZnVuY3Rpb25JbmRleDogVmlydHVhbFJlZ2lzdGVyLApAQCAtMTcwNCw2ICsxNzI0LDI2IEBAIG9w
IDpjYWxsX2luZGlyZWN0X25vX3RscywKICAgICAgICAgdGFibGVJbmRleDogdW5zaWduZWQsCiAg
ICAgfQogCitvcCA6cmV0dXJuX2NhbGxfaW5kaXJlY3QsCisgICAgYXJnczogeworICAgICAgICBm
dW5jdGlvbkluZGV4OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1
bnNpZ25lZCwKKyAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJP
ZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgICAgIG51bWJlck9mQ2FsbGVyU3RhY2tSZWdzOiB1
bnNpZ25lZCwKKyAgICAgICAgdGFibGVJbmRleDogdW5zaWduZWQsCisgICAgfQorCitvcCA6cmV0
dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzLAorICAgIGFyZ3M6IHsKKyAgICAgICAgZnVuY3Rpb25J
bmRleDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzaWduYXR1cmVJbmRleDogdW5zaWduZWQs
CisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZTdGFja0Fy
Z3M6IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJPZkNhbGxlclN0YWNrUmVnczogdW5zaWduZWQs
CisgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAorICAgIH0KKwogb3AgOmNhbGxfcmVmLAog
ICAgIGFyZ3M6IHsKICAgICAgICAgZnVuY3Rpb25SZWZlcmVuY2U6IFZpcnR1YWxSZWdpc3RlciwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA1
YmRjNWU0NGJkMDAzMGYyNzc3ZThmOGEwZmZkYTFkYTRkMzBlMGY4Li4xMGVjOGI0NTAyZmQ3MTU1
NjAzMzAyNTMzMzQxMmZjYjdiYWUzNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0zNzQsNiArMzc0LDEwIEBAIENhcGFiaWxpdHlMZXZl
bCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBjb25zdCBKCiAgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25v
X3RsczoKICAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmOgogICAgIGNhc2Ug
d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzOgorICAgIGNhc2Ugd2FzbV90cmFt
cG9saW5lX3dhc21fcmV0dXJuX2NhbGw6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9y
ZXR1cm5fY2FsbF9ub190bHM6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5f
Y2FsbF9pbmRpcmVjdDoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxs
X2luZGlyZWN0X25vX3RsczoKICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CiAgICAgfQog
ICAgIHJldHVybiBDYW5ub3RDb21waWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGYxMzZiZDQ1M2RjNTc3ZjU4ZGFi
Mzc4OTM0NWU1YTc3ODQ3NWI5ZTMuLjM3OTFmNmNjNTY1NzA4MTFlZDJiOTJlZjIyZjg2NDlmNzJh
NzljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KQEAgLTI3NDYsNiArMjc0NiwxOCBAQCBfd2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbF9pbmRpcmVjdF93aWRlMzI6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRp
cmVjdF9ub190bHNfd2lkZTMyOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX3dpZGUz
MjoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZl9ub190bHNfd2lkZTMyOgorX3dhc21f
dHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsOgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVy
bl9jYWxsX25vX3RsczoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVj
dDoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdF9ub190bHM6Citf
d2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfd2lkZTE2OgorX3dhc21fdHJhbXBvbGlu
ZV93YXNtX3JldHVybl9jYWxsX25vX3Rsc193aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21f
cmV0dXJuX2NhbGxfaW5kaXJlY3Rfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVy
bl9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0
dXJuX2NhbGxfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsX25vX3Rs
c193aWRlMzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5kaXJlY3Rfd2lk
ZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0X25vX3Rsc193
aWRlMzI6CiAgICAgY3Jhc2goKQogCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
V2ViQXNzZW1ibHkuYXNtCmluZGV4IDIyZWJlMmE3ZWIzZDAzZTg5NzA4ZTBhZDlkMzUzMGY5YWU1
YjIyZTguLmZlOTJkZGJhYjUxMmJhNGJkYzY3MWE5ODRjY2RlYTcyNjNlZjRhMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtMjIwLDYgKzIyMCw1
MSBAQCBtYWNybyByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKICAgICBlbmQKIGVuZAog
CittYWNybyBwcmVzZXJ2ZUdQUnNVc2VkQnlSZXR1cm5DYWxsKCkKKyAgICBpZiBBUk02NCBvciBB
Uk02NEUKKyAgICAgICAgZW1pdCAic3RwIHgwLCB4MSwgW3NwLCAjMTZdIgorICAgIGVsc2lmIFg4
Nl82NCBvciBSSVNDVjY0CisgICAgICAgIHN0b3JlcCB3YTAsIENvZGVCbG9ja1tzcF0KKyAgICAg
ICAgc3RvcmVwIHdhMSwgQ2FsbGVlW3NwXQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBl
bmQKK2VuZAorCittYWNybyByZXN0b3JlR1BSc1VzZWRCeVJldHVybkNhbGwoKQorICAgIGlmIEFS
TTY0IG9yIEFSTTY0RQorICAgICAgICBlbWl0ICJsZHAgeDAsIHgxLCBbc3AsICMxNl0iCisgICAg
ZWxzaWYgWDg2XzY0IG9yIFJJU0NWNjQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW3NwXSwgd2Ew
CisgICAgICAgIGxvYWRwIENhbGxlZVtzcF0sIHdhMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IK
KyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3Moc2NyYXRjaCkKKyAg
ICBpZiBBUk02NCBvciBBUk02NEUgb3IgUklTQ1Y2NAorICAgICAgICBsb2FkcCBQdHJTaXplW2Nm
cl0sIGxyCisgICAgZWxzaWYgWDg2XzY0CisgICAgICAgIGxvYWRwIFB0clNpemVbY2ZyXSwgc2Ny
YXRjaAorICAgICAgICBzdG9yZXAgc2NyYXRjaCwgUHRyU2l6ZVtzcF0KKyAgICBlbHNlCisgICAg
ICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gdXNlUHJldmlvdXNGcmFtZSgpCisgICAg
aWYgQVJNNjQgb3IgQVJNNjRFCisgICAgICAgIGVtaXQgImxkcCB4MjYsIHgyOSwgW3gyOSwgIy04
XSIKKyAgICBlbHNpZiBYODZfNjQgb3IgUklTQ1Y2NAorICAgICAgICBsb2FkcCAtUHRyU2l6ZVtj
ZnJdLCBQQgorICAgICAgICBsb2FkcCBbY2ZyXSwgY2ZyCisgICAgZWxzZQorICAgICAgICBlcnJv
cgorICAgIGVuZAorZW5kCisKKwogbWFjcm8gbG9hZFdhc21JbnN0YW5jZUZyb21UTFNUbyhyZWcp
CiBpZiAgSEFWRV9GQVNUX1RMUwogICAgIHRsc19sb2FkcCBXVEZfV0FTTV9DT05URVhUX0tFWSwg
cmVnCkBAIC04NzIsNiArOTE3LDEyMSBAQCBtYWNybyBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwg
c2xvd1BhdGgsIHN0b3JlV2FzbUluc3RhbmNlKQogICAgICAgICBlbmQpCiBlbmQKIAorbWFjcm8g
c2xvd1BhdGhGb3JXYXNtUmV0dXJuQ2FsbChjdHgsIHNsb3dQYXRoLCBzdG9yZVdhc21JbnN0YW5j
ZSkKKyAgICBjYWxsV2FzbUNhbGxTbG93UGF0aCgKKyAgICAgICAgc2xvd1BhdGgsCisgICAgICAg
ICMgY2FsbGVlIGlzIHIwIGFuZCB0YXJnZXRXYXNtSW5zdGFuY2UgaXMgcjEKKyAgICAgICAgbWFj
cm8gKGNhbGxlZSwgdGFyZ2V0V2FzbUluc3RhbmNlKQorICAgICAgICAgICAgbW92ZSBjYWxsZWUs
IHdzMAorCisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRh
Z09mZnNldFtjZnJdLCBQQworCisgICAgICAgICAgICAjIHRoZSBjYWxsIG1pZ2h0IHRocm93IChl
LmcuIGluZGlyZWN0IGNhbGwgd2l0aCBiYWQgc2lnbmF0dXJlKQorICAgICAgICAgICAgYnRweiB0
YXJnZXRXYXNtSW5zdGFuY2UsIC50aHJvdworCisgICAgICAgICAgICB3Z2V0dShjdHgsIG1fc3Rh
Y2tPZmZzZXQsIHdzMSkKKyAgICAgICAgICAgIG11bGkgU2xvdFNpemUsIHdzMQorICAgICAgICAg
ICAgc3VicCBjZnIsIHdzMSwgc3AKKworICAgICAgICAgICAgc3RvcmVXYXNtSW5zdGFuY2UodGFy
Z2V0V2FzbUluc3RhbmNlKQorICAgICAgICAgICAgcmVsb2FkTWVtb3J5UmVnaXN0ZXJzRnJvbUlu
c3RhbmNlKHRhcmdldFdhc21JbnN0YW5jZSwgd2EwLCB3YTEpCisKKyAgICAgICAgICAgIHdnZXR1
KGN0eCwgbV9udW1iZXJPZlN0YWNrQXJncywgd3MxKQorICAgICAgICAgICAgZm9yRWFjaEFyZ3Vt
ZW50R1BSKG1hY3JvIChvZmZzZXQsIGdwcikKKyAgICAgICAgICAgICAgICBsb2FkcSBDYWxsRnJh
bWVIZWFkZXJTaXplICsgUHRyU2l6ZSArIG9mZnNldFtzcCwgd3MxLCBQdHJTaXplXSwgZ3ByCisg
ICAgICAgICAgICBlbmQpCisgICAgICAgICAgICBmb3JFYWNoQXJndW1lbnRGUFIobWFjcm8gKG9m
ZnNldCwgZnByKQorICAgICAgICAgICAgICAgIGxvYWRkIENhbGxGcmFtZUhlYWRlclNpemUgKyBQ
dHJTaXplICsgb2Zmc2V0W3NwLCB3czEsIFB0clNpemVdLCBmcHIKKyAgICAgICAgICAgIGVuZCkK
KworICAgICAgICAgICAgIyBXZSBuZWVkIFBDIHRvIGxvYWQgaW5mb3JtYXRpb24gZnJvbSBjb250
ZXh0CisgICAgICAgICAgICAjIGFuZCB0d28gc2NyYXRjaCByZWdpc3RlcnMgdG8gcGVyZm9ybSB0
aGUgY29weQorICAgICAgICAgICAgcHJlc2VydmVHUFJzVXNlZEJ5UmV0dXJuQ2FsbCgpCisgICAg
ICAgICAgICBtb3ZlIFBDLCB3czEKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisKKyAgICAgICAgICAgICMgZ2V0IG9sZFNp
emUKKyAgICAgICAgICAgIHdnZXR1KGN0eCwgbV9udW1iZXJPZkNhbGxlclN0YWNrUmVncywgd2Ew
KQorICAgICAgICAgICAgbXVsaSBTbG90U2l6ZSwgd2EwCisgICAgICAgICAgICBhZGRpIENhbGxG
cmFtZUhlYWRlclNpemUsIHdhMAorCisgICAgICAgICAgICAjIGdldCBuZXdTaXplCisgICAgICAg
ICAgICB3Z2V0dShjdHgsIG1fbnVtYmVyT2ZTdGFja0FyZ3MsIHdhMSkKKyAgICAgICAgICAgIG11
bGkgU2xvdFNpemUsIHdhMQorICAgICAgICAgICAgYWRkaSBDYWxsRnJhbWVIZWFkZXJTaXplLCB3
YTEKKworICAgICAgICAgICAgbW92ZSB3czEsIFBDCisKKyAgICAgICAgICAgICMgbmV3U3RhY2tQ
b2ludGVyID0gb2xkRnJhbWVQb2ludGVyICsgb2xkU2l6ZSAtIG5ld1NpemUKKyAgICAgICAgICAg
IGFkZHAgY2ZyLCB3YTAKKyAgICAgICAgICAgIHN1YnAgd2ExLCB3YTAKKworICAgICAgICAgICAg
cHJlc2VydmVSZXR1cm5BZGRyZXNzKHdzMSkKKyAgICAgICAgICAgIHVzZVByZXZpb3VzRnJhbWUo
KQorCisgICAgICAgICAgICAuY29weUxvb3A6CisgICAgICAgICAgICAgICAgaWYgQVJNNjQgYW5k
IG5vdCBBRERSRVNTNjQKKyAgICAgICAgICAgICAgICAgICAgbG9hZHEgW3NwLCB3YTEsIDFdLCB3
czEKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVxIHdzMSwgW3dhMCwgd2ExLCAxXQorICAgICAg
ICAgICAgICAgICAgICBidGl6IHdhMSwgLmRvbmUKKyAgICAgICAgICAgICAgICAgICAgc3ViaSBN
YWNoaW5lUmVnaXN0ZXJTaXplLCB3YTEKKyAgICAgICAgICAgICAgICAgICAgam1wIC5jb3B5TG9v
cAorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9hZHAgW3NwLCB3
YTEsIDFdLCB3czEKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVwIHdzMSwgW3dhMCwgd2ExLCAx
XQorICAgICAgICAgICAgICAgICAgICBidGl6IHdhMSwgLmRvbmUKKyAgICAgICAgICAgICAgICAg
ICAgc3ViaSBQdHJTaXplLCB3YTEKKyAgICAgICAgICAgICAgICAgICAgam1wIC5jb3B5TG9vcAor
ICAgICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIG1v
dmUgd2EwLCB3czEKKyAgICAgICAgICAgIHJlc3RvcmVHUFJzVXNlZEJ5UmV0dXJuQ2FsbCgpCisK
KyAgICAgICAgICAgIGlmIEFSTTY0IG9yIEFSTTY0RSBvciBSSVNDVjY0CisgICAgICAgICAgICAg
ICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgd3MxLCBzcAorICAgICAgICAgICAgZWxzaWYg
WDg2XzY0CisgICAgICAgICAgICAgICAgYWRkcCBQdHJTaXplLCB3czEsIHNwCisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZXJyb3IKKyAgICAgICAgICAgIGVuZAorCisgICAgICAg
ICAgICBjdHgobWFjcm8ob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzaXplKQorICAgICAgICAg
ICAgICAgIG1hY3JvIGp1bXBOYXJyb3coKQorICAgICAgICAgICAgICAgICAgICBpZiBBUk02NEUK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6
b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSUp
ICogUHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgX3dhc21fdHJhbXBvbGluZV8lb3Bjb2RlTmFt
ZSU6CisgICAgICAgICAgICAgICAgICAgIGptcCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZwor
ICAgICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAgICAgbWFjcm8ganVtcFdpZGUxNigp
CisgICAgICAgICAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgICAgICAgICAg
bGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAg
KyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMTYpICogUHRyU2l6ZSwgd3MxCisg
ICAgICAgICAgICAgICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAj
IEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgICAgICAgICAgX3dhc21fdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTE2OgorICAgICAg
ICAgICAgICAgICAgICBqbXAgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAg
ICAgICBlbmQKKworICAgICAgICAgICAgICAgIG1hY3JvIGp1bXBXaWRlMzIoKQorICAgICAgICAg
ICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29u
ZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhw
ciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTMyKSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAg
ICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xv
d1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAg
IF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoKKyAgICAgICAgICAgICAgICAg
ICAgam1wIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgZW5kCisK
KyAgICAgICAgICAgICAgICBzaXplKGp1bXBOYXJyb3csIGp1bXBXaWRlMTYsIGp1bXBXaWRlMzIs
IG1hY3JvIChnZW4pIGdlbigpIGVuZCkKKyAgICAgICAgICAgIGVuZCkKKyAgICAudGhyb3c6Cisg
ICAgcmVzdG9yZVN0YXRlQWZ0ZXJDQ2FsbCgpCisgICAgZGlzcGF0Y2goY3R4KQorICAgIGVuZCkK
K2VuZAorCiB1bnByZWZpeGVkV2FzbU9wKHdhc21fY2FsbCwgV2FzbUNhbGwsIG1hY3JvKGN0eCkK
ICAgICBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX2NhbGwsIHN0b3Jl
V2FzbUluc3RhbmNlVG9UTFMpCiBlbmQpCkBAIC04OTYsNiArMTA1NiwyMiBAQCB3YXNtT3AoY2Fs
bF9yZWZfbm9fdGxzLCBXYXNtQ2FsbFJlZk5vVGxzLCBtYWNybyhjdHgpCiAgICAgc2xvd1BhdGhG
b3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9jYWxsX3JlZl9ub190bHMsIG1hY3JvKHRh
cmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQogZW5k
KQogCit3YXNtT3AocmV0dXJuX2NhbGwsIFdhc21SZXR1cm5DYWxsLCBtYWNybyhjdHgpCisgICAg
c2xvd1BhdGhGb3JXYXNtUmV0dXJuQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9yZXR1cm5fY2Fs
bCwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKK2VuZCkKKword2FzbU9wKHJldHVybl9jYWxsX25v
X3RscywgV2FzbVJldHVybkNhbGxOb1RscywgbWFjcm8oY3R4KQorICAgIHNsb3dQYXRoRm9yV2Fz
bVJldHVybkNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fcmV0dXJuX2NhbGxfbm9fdGxzLCBtYWNy
byh0YXJnZXRJbnN0YW5jZSkgbW92ZSB0YXJnZXRJbnN0YW5jZSwgd2FzbUluc3RhbmNlIGVuZCkK
K2VuZCkKKword2FzbU9wKHJldHVybl9jYWxsX2luZGlyZWN0LCBXYXNtUmV0dXJuQ2FsbEluZGly
ZWN0LCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtUmV0dXJuQ2FsbChjdHgsIF9zbG93
X3BhdGhfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdCwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykK
K2VuZCkKKword2FzbU9wKHJldHVybl9jYWxsX2luZGlyZWN0X25vX3RscywgV2FzbVJldHVybkNh
bGxJbmRpcmVjdE5vVGxzLCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtUmV0dXJuQ2Fs
bChjdHgsIF9zbG93X3BhdGhfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdF9ub190bHMsIG1hY3Jv
KHRhcmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQor
ZW5kKQorCiB3YXNtT3AoY3VycmVudF9tZW1vcnksIFdhc21DdXJyZW50TWVtb3J5LCBtYWNybyhj
dHgpCiAgICAgbG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1fbWVtb3J5W3dhc21JbnN0YW5jZV0sIHQw
CiAgICAgbG9hZHAgV2FzbTo6TWVtb3J5OjptX2hhbmRsZVt0MF0sIHQwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBkZDY0NTljODhiM2RjYWIzNGQ2
YWUzZDY0NjcwOWY0MzRlNDg1ZWNlLi4zNzczMjNhMmRjOTE0ZDMyZTU4YjA3YmNjOTBkODczNjRm
OGQ3YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgK
QEAgLTU1Myw2ICs1NTMsNyBAQCBib29sIGNhblVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwog
ICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlHQywgZmFsc2UsIE5vcm1hbCwgIkFsbG93IGdjIHR5
cGVzIGZyb20gdGhlIHdhc20gZ2MgcHJvcG9zYWwuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNz
ZW1ibHlFeGNlcHRpb25zLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0aGUgbmV3IHNlY3Rpb24gYW5k
IGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIGV4Y2VwdGlvbiBoYW5kbGluZyBzcGVjLiIpIFwK
ICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5QnJhbmNoSGludHMsIHRydWUsIE5vcm1hbCwgIkFs
bG93IHRoZSBuZXcgc2VjdGlvbiBmcm9tIHRoZSB3YXNtIGJyYW5jaCBoaW50aW5nIHNwZWMuIikg
XAorICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlUYWlsQ2FsbHMsIGZhbHNlLCBOb3JtYWwsICJB
bGxvdyB0aGUgbmV3IGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIHRhaWwgY2FsbHMgc3BlYy4i
KSBcCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCA3N2E5MjhkODM2NTJlZmZk
MjRjOGYyNmRkY2RiZmI3NDRkZDBkYWRjLi40NjA4YzQ2NDQ0MTRhMGEzNTU5OWI1ZjRjODhlZTFh
OTMzYmVhNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKQEAgLTQxNyw2ICs0MTcsOCBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29u
c3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRM
aXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRD
YWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFR5cGVEZWZp
bml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0
cyk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuQ2FsbCh1
aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5DYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJ
bmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGVtaXRJbmRpcmVjdENhbGwoVHlwZWRUbXAgY2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25U
eXBlIGNhbGxlZUNvZGUsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgY29uc3QgVmVjdG9yPEV4cHJl
c3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYpOwogICAgIHN0ZDo6cGFpcjxCMzo6UGF0Y2hw
b2ludFZhbHVlKiwgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJO
IGVtaXRDYWxsUGF0Y2hwb2ludChCYXNpY0Jsb2NrKiwgY29uc3QgVHlwZURlZmluaXRpb24mLCBj
b25zdCBSZXN1bHRMaXN0JiByZXN1bHRzLCBjb25zdCBWZWN0b3I8VHlwZWRUbXA+JiBhcmdzLCBW
ZWN0b3I8Q29uc3RyYWluZWRUbXA+IGV4dHJhQXJncyA9IHsgfSk7CkBAIC0zODMyLDYgKzM4MzQs
MTggQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBUeXBlRGVmaW5pdGlv
biYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2kKICAgICByZXR1cm4gZW1pdEluZGlyZWN0Q2Fs
bChjYWxsZWVJbnN0YW5jZSwgY2FsbGVlQ29kZSwgc2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKTsK
IH0KIAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbCh1aW50MzJfdCBmdW5jdGlv
bkluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7Cisg
ICAgLy8gVE9ETzogaW1wbGVtZW50IEFpcklSR2VuZXJhdG9yOjphZGRSZXR1cm5DYWxsCisgICAg
cmV0dXJuIGFkZENhbGwoZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKTsK
K30KKworYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbEluZGlyZWN0KHVuc2lnbmVk
IHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQK
K3sKKyAgICAvLyBUT0RPOiBpbXBsZW1lbnQgQWlySVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGxJ
bmRpcmVjdAorICAgIHJldHVybiBhZGRDYWxsSW5kaXJlY3QodGFibGVJbmRleCwgc2lnbmF0dXJl
LCBhcmdzLCByZXN1bHRzKTsKK30KKwogYXV0byBBaXJJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0
Q2FsbChUeXBlZFRtcCBjYWxsZWVJbnN0YW5jZSwgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSwg
Y29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25U
eXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAogewogICAg
IGF1dG8gY3VycmVudEluc3RhbmNlID0gZzY0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggZmQ5OGIxODM4MzU5ZTVhYThmNzA2
ZmEyMzAzOWM1YWMyMDVhMWYxZC4uNGUyNDA1MDM2NmU0ZDNkYjhhYjEzZDAxYmY2MjA0NzE0OWU2
Y2MxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcApAQCAtMzk1LDYgKzM5NSw4IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBUeXBl
RGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJl
c3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRp
cmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxSZWYoY29uc3QgVHlwZURlZmluaXRpb24m
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5DYWxsKHVpbnQzMl90
IGNhbGxlZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZFJldHVybkNhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBj
b25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3Vs
dExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFk
ZFVucmVhY2hhYmxlKCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZW1p
dEluZGlyZWN0Q2FsbChWYWx1ZSogY2FsbGVlSW5zdGFuY2UsIFZhbHVlKiBjYWxsZWVDb2RlLCBj
b25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3Vs
dExpc3QmKTsKICAgICBCMzo6VmFsdWUqIGNyZWF0ZUNhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sq
LCBPcmlnaW4sIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYg
YXJncywgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94PFBhdGNo
cG9pbnRFeGNlcHRpb25IYW5kbGU+KT4mIHBhdGNocG9pbnRGdW5jdG9yKTsKQEAgLTMxMjMsNiAr
MzEyNSwxOCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgVHlwZURlZmlu
aXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogICAgIHJldHVybiBlbWl0SW5kaXJl
Y3RDYWxsKGNhbGxlZUluc3RhbmNlLCBjYWxsZWVDb2RlLCBzaWduYXR1cmUsIGFyZ3MsIHJlc3Vs
dHMpOwogfQogCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGwodWludDMyX3QgZnVu
Y3Rpb25JbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJl
c3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAor
eworICAgIC8vIFRPRE86IGltcGxlbWVudCBCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm5DYWxsCisg
ICAgcmV0dXJuIGFkZENhbGwoZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLCBhcmdzLCByZXN1bHRz
KTsKK30KKworYXV0byBCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm5DYWxsSW5kaXJlY3QodW5zaWdu
ZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4
cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3Vs
dAoreworICAgIC8vIFRPRE86IGltcGxlbWVudCBCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm5DYWxs
SW5kaXJlY3QKKyAgICByZXR1cm4gYWRkQ2FsbEluZGlyZWN0KHRhYmxlSW5kZXgsIHNpZ25hdHVy
ZSwgYXJncywgcmVzdWx0cyk7Cit9CisKIHZvaWQgQjNJUkdlbmVyYXRvcjo6dW5pZnkoVmFsdWUq
IHBoaSwgY29uc3QgRXhwcmVzc2lvblR5cGUgc291cmNlKQogewogICAgIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBnZXQoc291cmNlKSwg
cGhpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlv
blBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2Vy
LmgKaW5kZXggZGViODdmYmMzN2I3MWJmOWUxZDkwMDBhNzdjMmY0NTc2MmVmYjNjYi4uZDFkNjI2
YTM1N2MxN2U0ZDExOWNkNzcyYTM2MWIyYzRhZDVkMTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTEyMTQsNiArMTIxNCw5IEBA
IEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAorICAgIGNhc2UgUmV0dXJuQ2FsbDoKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUYWlsQ2FsbHMoKSwgIndhc20gdGFp
bCBjYWxscyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2Fz
ZSBDYWxsOiB7CiAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXg7CiAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jdGlvbkluZGV4KGZ1bmN0aW9uSW5kZXgpKTsK
QEAgLTEyMjEsNiArMTIyNCw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFU
RV9DQVNFKQogICAgICAgICBUeXBlSW5kZXggY2FsbGVlVHlwZUluZGV4ID0gbV9pbmZvLnR5cGVJ
bmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCk7CiAgICAgICAgIGNvbnN0
IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNh
bGxlZVR5cGVJbmRleCk7CiAgICAgICAgIGNvbnN0IGF1dG8mIGNhbGxlZVNpZ25hdHVyZSA9ICp0
eXBlRGVmaW5pdGlvbi5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKKyAgICAgICAgY29uc3QgYXV0
byYgY2FsbGVyU2lnbmF0dXJlID0gKm1fc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigp
OwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENv
dW50KCkgPiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICJjYWxsIGZ1bmN0aW9uIGluZGV4ICIs
IGZ1bmN0aW9uSW5kZXgsICIgaGFzICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCks
ICIgYXJndW1lbnRzLCBidXQgdGhlIGV4cHJlc3Npb24gc3RhY2sgY3VycmVudGx5IGhvbGRzICIs
IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1ZXMiKTsKIAogICAgICAgICBzaXplX3Qg
Zmlyc3RBcmd1bWVudEluZGV4ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gY2FsbGVlU2ln
bmF0dXJlLmFyZ3VtZW50Q291bnQoKTsKQEAgLTEyMzcsMTYgKzEyNDEsNDQgQEAgRk9SX0VBQ0hf
V0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOwogCiAgICAg
ICAgIFJlc3VsdExpc3QgcmVzdWx0czsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQo
YWRkQ2FsbChmdW5jdGlvbkluZGV4LCB0eXBlRGVmaW5pdGlvbiwgYXJncywgcmVzdWx0cykpOwog
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpID09
IHJlc3VsdHMuc2l6ZSgpKTsKKyAgICAgICAgc3dpdGNoIChtX2N1cnJlbnRPcGNvZGUpIHsKKyAg
ICAgICAgY2FzZSBSZXR1cm5DYWxsOiB7CisgICAgICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09O
VEVYVChhZGRSZXR1cm5DYWxsKGZ1bmN0aW9uSW5kZXgsIHR5cGVEZWZpbml0aW9uLCBhcmdzLCBy
ZXN1bHRzKSk7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNpZ25h
dHVyZS5yZXR1cm5Db3VudCgpOyArK2kpCi0gICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5j
b25zdHJ1Y3RBbmRBcHBlbmQoY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNb
aV0pOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGVlU2lnbmF0dXJlLnJldHVybkNv
dW50KCkgPT0gcmVzdWx0cy5zaXplKCkpOwogCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpICE9
IGNhbGxlclNpZ25hdHVyZS5yZXR1cm5Db3VudCgpLCAidGFpbCBjYWxsIGZ1bmN0aW9uIGluZGV4
ICIsIGZ1bmN0aW9uSW5kZXgsICIgd2l0aCByZXR1cm4gY291bnQgIiwgY2FsbGVlU2lnbmF0dXJl
LnJldHVybkNvdW50KCksICIsIGJ1dCB0aGUgY2FsbGVyJ3Mgc2lnbmF0dXJlIGhhcyAiLCBjYWxs
ZXJTaWduYXR1cmUucmV0dXJuQ291bnQoKSwgIiByZXR1cm4gdmFsdWVzIik7CisKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQo
KTsgKytpKSB7CisgICAgICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0
eXBlKGNhbGxlclNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCBjYWxsZWVTaWduYXR1cmUucmV0dXJu
VHlwZShpKSksICJyZXR1cm4gdHlwZSBtaXNtYXRjaCBpbiB0YWlsIGNhbGwsIGdvdCAiLCBjYWxs
ZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKS5raW5kLCAiLCBleHBlY3RlZCAiLCBjYWxsZXJTaWdu
YXR1cmUucmV0dXJuVHlwZShpKS5raW5kKTsKKyAgICAgICAgICAgICAgICBtX2V4cHJlc3Npb25T
dGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJl
c3VsdHNbaV0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX3VucmVhY2hhYmxlQmxv
Y2tzID0gMTsKKworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgQ2FsbDogeworICAgICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2Fs
bChmdW5jdGlvbkluZGV4LCB0eXBlRGVmaW5pdGlvbiwgYXJncywgcmVzdWx0cykpOworCisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKSA9PSBy
ZXN1bHRzLnNpemUoKSk7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
YWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICAgICAgICAgIG1fZXhw
cmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlw
ZShpKSwgcmVzdWx0c1tpXSk7CisKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0K
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQogICAgIH0KIAorICAgIGNhc2UgUmV0dXJuQ2FsbEluZGlyZWN0Ogor
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVRhaWxD
YWxscygpLCAid2FzbSB0YWlsIGNhbGxzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICBGQUxM
VEhST1VHSDsKICAgICBjYXNlIENhbGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJfdCBzaWdu
YXR1cmVJbmRleDsKICAgICAgICAgdWludDMyX3QgdGFibGVJbmRleDsKQEAgLTEyNTksNiArMTI5
MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogCiAgICAg
ICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbiA9IG1faW5mby50eXBlU2ln
bmF0dXJlc1tzaWduYXR1cmVJbmRleF0uZ2V0KCk7CiAgICAgICAgIGNvbnN0IGF1dG8mIGNhbGxl
ZVNpZ25hdHVyZSA9ICp0eXBlRGVmaW5pdGlvbi5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKKyAg
ICAgICAgY29uc3QgYXV0byYgY2FsbGVyU2lnbmF0dXJlID0gKm1fc2lnbmF0dXJlLmFzPEZ1bmN0
aW9uU2lnbmF0dXJlPigpOwogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGNhbGxlZVNp
Z25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxlZSdzIGluZGV4Lgog
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtX2V4cHJlc3Npb25T
dGFjay5zaXplKCksICJjYWxsX2luZGlyZWN0IGV4cGVjdHMgIiwgYXJndW1lbnRDb3VudCwgIiBh
cmd1bWVudHMsIGJ1dCB0aGUgZXhwcmVzc2lvbiBzdGFjayBjdXJyZW50bHkgaG9sZHMgIiwgbV9l
eHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHZhbHVlcyIpOwogCkBAIC0xMjc3LDEyICsxMzEwLDM2
IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBt
X2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsKIAogICAgICAgICBS
ZXN1bHRMaXN0IHJlc3VsdHM7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZENh
bGxJbmRpcmVjdCh0YWJsZUluZGV4LCB0eXBlRGVmaW5pdGlvbiwgYXJncywgcmVzdWx0cykpOwog
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJu
Q291bnQoKTsgKytpKQotICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5k
QXBwZW5kKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKyAgICAg
ICAgc3dpdGNoIChtX2N1cnJlbnRPcGNvZGUpIHsKKyAgICAgICAgY2FzZSBSZXR1cm5DYWxsSW5k
aXJlY3Q6IHsKKyAgICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFJldHVybkNh
bGxJbmRpcmVjdCh0YWJsZUluZGV4LCB0eXBlRGVmaW5pdGlvbiwgYXJncywgcmVzdWx0cykpOwog
Ci0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNh
bGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpICE9IGNhbGxlclNpZ25hdHVyZS5yZXR1cm5Db3Vu
dCgpLCAidGFpbCBjYWxsIGluZGlyZWN0IGZ1bmN0aW9uIHdpdGggcmV0dXJuIGNvdW50ICIsIGNh
bGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpLCAiLCBidXQgdGhlIGNhbGxlcidzIHNpZ25hdHVy
ZSBoYXMgIiwgY2FsbGVyU2lnbmF0dXJlLnJldHVybkNvdW50KCksICIgcmV0dXJuIHZhbHVlcyIp
OworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbGVlU2lnbmF0dXJl
LnJldHVybkNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoIWlzU3VidHlwZShjYWxsZXJTaWduYXR1cmUucmV0dXJuVHlwZShpKSwgY2FsbGVlU2ln
bmF0dXJlLnJldHVyblR5cGUoaSkpLCAicmV0dXJuIHR5cGUgbWlzbWF0Y2ggaW4gdGFpbCBjYWxs
IGluZGlyZWN0LCBnb3QgIiwgY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSkua2luZCwgIiwg
ZXhwZWN0ZWQgIiwgY2FsbGVyU2lnbmF0dXJlLnJldHVyblR5cGUoaSkua2luZCk7CisgICAgICAg
ICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKGNhbGxlZVNpZ25h
dHVyZS5yZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgbV91bnJlYWNoYWJsZUJsb2NrcyA9IDE7CisKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENhbGxJbmRpcmVjdDogeworICAgICAgICAgICAg
V0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2FsbEluZGlyZWN0KHRhYmxlSW5kZXgsIHR5cGVE
ZWZpbml0aW9uLCBhcmdzLCByZXN1bHRzKSk7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICAg
ICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChjYWxsZWVTaWduYXR1
cmUucmV0dXJuVHlwZShpKSwgcmVzdWx0c1tpXSk7CisKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgY2FzZSBDYWxsUmVm
OiB7CkBAIC0xNzg2LDYgKzE4NDMsOSBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpw
YXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAKKyAgICBjYXNlIFJldHVybkNhbGxJbmRpcmVjdDoKKyAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUYWlsQ2FsbHMoKSwg
Indhc20gdGFpbCBjYWxscyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7
CiAgICAgY2FzZSBDYWxsSW5kaXJlY3Q6IHsKICAgICAgICAgdWludDMyX3QgdW51c2VkOwogICAg
ICAgICB1aW50MzJfdCB1bnVzZWQyOwpAQCAtMTgzMCw2ICsxODkwLDkgQEAgYXV0byBGdW5jdGlv
blBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFs
UmVzdWx0CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCisgICAgY2FzZSBSZXR1cm5DYWxs
OgorICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVRh
aWxDYWxscygpLCAid2FzbSB0YWlsIGNhbGxzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICBG
QUxMVEhST1VHSDsKICAgICBjYXNlIENhbGw6IHsKICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25J
bmRleDsKICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmN0aW9uSW5k
ZXgoZnVuY3Rpb25JbmRleCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAKaW5kZXggZDM3M2ZhZWU4MTY4MThmYWFlMjY0ZWRlM2I5MWNh
NDk1NTRhNmQ1OC4uZmQzNTYwMmI5ODQ3MGVjZTkwOWU5Y2ZkNjhmYmI0OWM2ZGM2NWM3MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3Bw
CkBAIC0zMTAsNiArMzEwLDggQEAgcHVibGljOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0
aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVu
c2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbFJlZihjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3Rv
cjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOworICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldHVybkNhbGwodWludDMyX3QgY2FsbGVl
SW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJn
cywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkUmV0dXJuQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5
cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYg
cmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFj
aGFibGUoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZ0xvY2FscygpOwpAQCAtMzMxLDYg
KzMzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzdWx0
TGlzdCYpPiBjb21taXRSZXN1bHRzOwogICAgIH07CiAKKyAgICB1aW50MzJfdCBudW1iZXJPZlN0
YWNrUmVnaXN0ZXJzKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJik7CiAgICAgTExJbnRDYWxsSW5m
b3JtYXRpb24gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJl
Jik7CiAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3RlciwgMj4gY2FsbEluZm9ybWF0aW9uRm9yQ2Fs
bGVlKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJik7CiAgICAgdm9pZCBsaW5rU3dpdGNoVGFyZ2V0
cyhMYWJlbCYsIHVuc2lnbmVkIGxvY2F0aW9uKTsKQEAgLTU2OCwzMiArNTcxLDggQEAgc3RkOjp1
bmlxdWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yPiBMTEludEdlbmVyYXRvcjo6Zmlu
YWxpemUoKQogLy8gR2VuZXJhdGVkIGZyb20gd2FzbS5qc29uCiAjaW5jbHVkZSAiV2FzbUxMSW50
R2VuZXJhdG9ySW5saW5lcy5oIgogCi1hdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRp
b25Gb3JDYWxsZXIoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJbnRD
YWxsSW5mb3JtYXRpb24KK3VpbnQzMl90IExMSW50R2VuZXJhdG9yOjpudW1iZXJPZlN0YWNrUmVn
aXN0ZXJzKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUpCiB7Ci0gICAgLy8gVGhp
cyBmdW5jdGlvbiBzZXRzIHVwIHRoZSBzdGFjayBsYXlvdXQgZm9yIGNhbGxzLiBUaGUgZGVzaXJl
ZCBzdGFjayBsYXlvdXQgaXM6Ci0KLSAgICAvLyBGUFJuCi0gICAgLy8gLi4uCi0gICAgLy8gRlBS
MQotICAgIC8vIEZQUjAKLSAgICAvLyAtLS0KLSAgICAvLyBHUFJuCi0gICAgLy8gLi4uCi0gICAg
Ly8gR1BSMQotICAgIC8vIEdQUjAKLSAgICAvLyAtLS0tCi0gICAgLy8gc3RhY2tOCi0gICAgLy8g
Li4uCi0gICAgLy8gc3RhY2sxCi0gICAgLy8gc3RhY2swCi0gICAgLy8gLS0tCi0gICAgLy8gY2Fs
bCBmcmFtZSBoZWFkZXIKLQotICAgIC8vIFdlIG5lZWQgdG8gYWxsb2NhdGUgYXQgbGVhc3Qgc3Bh
Y2UgZm9yIGFsbCBHUFJzIGFuZCBGUFJzLgotICAgIC8vIFJldHVybiB2YWx1ZXMgdXNlIHRoZSBz
YW1lIGFsbG9jYXRpb24gbGF5b3V0LgotCi0gICAgY29uc3QgYXV0byBpbml0aWFsU3RhY2tTaXpl
ID0gbV9zdGFja1NpemU7Ci0KICAgICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdh
c21DYWxsaW5nQ29udmVudGlvbigpOwogICAgIGNvbnN0IHVpbnQzMl90IGdwckNvdW50ID0gY2Fs
bGluZ0NvbnZlbnRpb24uZ3ByQXJncy5zaXplKCk7CiAgICAgY29uc3QgdWludDMyX3QgZnByQ291
bnQgPSBjYWxsaW5nQ29udmVudGlvbi5mcHJBcmdzLnNpemUoKTsKQEAgLTYzMSwxNiArNjEwLDU0
IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBG
dW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlCiAgICAgICAgIH0KICAgICB9OwogCi0KICAgICBm
b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsgaSsrKQog
ICAgICAgICBhbGxvY2F0ZVN0YWNrUmVnaXN0ZXIoc2lnbmF0dXJlLmFyZ3VtZW50VHlwZShpKSk7
CiAKICAgICBncHJJbmRleCA9IDA7CiAgICAgZnBySW5kZXggPSAwOwogICAgIHN0YWNrSW5kZXgg
PSAwOworCiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5Db3Vu
dCgpOyBpKyspCiAgICAgICAgIGFsbG9jYXRlU3RhY2tSZWdpc3RlcihzaWduYXR1cmUucmV0dXJu
VHlwZShpKSk7CiAKKyAgICByZXR1cm4gc3RhY2tDb3VudDsKK30KKworYXV0byBMTEludEdlbmVy
YXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBz
aWduYXR1cmUpIC0+IExMSW50Q2FsbEluZm9ybWF0aW9uCit7CisgICAgLy8gVGhpcyBmdW5jdGlv
biBzZXRzIHVwIHRoZSBzdGFjayBsYXlvdXQgZm9yIGNhbGxzLiBUaGUgZGVzaXJlZCBzdGFjayBs
YXlvdXQgaXM6CisKKyAgICAvLyBGUFJuCisgICAgLy8gLi4uCisgICAgLy8gRlBSMQorICAgIC8v
IEZQUjAKKyAgICAvLyAtLS0KKyAgICAvLyBHUFJuCisgICAgLy8gLi4uCisgICAgLy8gR1BSMQor
ICAgIC8vIEdQUjAKKyAgICAvLyAtLS0tCisgICAgLy8gc3RhY2tOCisgICAgLy8gLi4uCisgICAg
Ly8gc3RhY2sxCisgICAgLy8gc3RhY2swCisgICAgLy8gLS0tCisgICAgLy8gY2FsbCBmcmFtZSBo
ZWFkZXIKKworICAgIC8vIFdlIG5lZWQgdG8gYWxsb2NhdGUgYXQgbGVhc3Qgc3BhY2UgZm9yIGFs
bCBHUFJzIGFuZCBGUFJzLgorICAgIC8vIFJldHVybiB2YWx1ZXMgdXNlIHRoZSBzYW1lIGFsbG9j
YXRpb24gbGF5b3V0LgorCisgICAgY29uc3QgYXV0byBpbml0aWFsU3RhY2tTaXplID0gbV9zdGFj
a1NpemU7CisKKyAgICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdhc21DYWxsaW5n
Q29udmVudGlvbigpOworICAgIGNvbnN0IHVpbnQzMl90IGdwckNvdW50ID0gY2FsbGluZ0NvbnZl
bnRpb24uZ3ByQXJncy5zaXplKCk7CisgICAgY29uc3QgdWludDMyX3QgZnByQ291bnQgPSBjYWxs
aW5nQ29udmVudGlvbi5mcHJBcmdzLnNpemUoKTsKKworICAgIHVpbnQzMl90IHN0YWNrQ291bnQg
PSBudW1iZXJPZlN0YWNrUmVnaXN0ZXJzKHNpZ25hdHVyZSk7CisgICAgdWludDMyX3QgZ3BySW5k
ZXggPSAwOworICAgIHVpbnQzMl90IGZwckluZGV4ID0gMDsKKyAgICB1aW50MzJfdCBzdGFja0lu
ZGV4ID0gMDsKKwogICAgIC8vIEZJWE1FOiB3ZSBhcmUgYWxsb2NhdGluZyB0aGUgZXh0cmEgc3Bh
Y2UgZm9yIHRoZSBhcmd1bWVudC9yZXR1cm4gY291bnQgaW4gb3JkZXIgdG8gYXZvaWQgaW50ZXJm
ZXJlbmNlLCBidXQgd2UgY291bGQgZG8gYmV0dGVyCiAgICAgLy8gTk9URTogV2UgaW5jcmVhc2Ug
YXJnIGNvdW50IGJ5IDEgZm9yIHRoZSBjYXNlIG9mIGluZGlyZWN0IGNhbGxzCiAgICAgbV9zdGFj
a1NpemUgKz0gc3RkOjptYXgoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDEsIHNpZ25hdHVy
ZS5yZXR1cm5Db3VudCgpKSArIGdwckNvdW50ICsgZnByQ291bnQgKyBzdGFja0NvdW50ICsgQ2Fs
bEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgKyAxOwpAQCAtMTM3Nyw2ICsxMzk0LDUzIEBA
IGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgVHlwZURlZmluaXRpb24mIHNp
Z25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBMTElu
dEdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBU
eXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBS
ZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgQVNTRVJUKHNpZ25h
dHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6
ZSgpKTsKKyAgICBMTEludENhbGxJbmZvcm1hdGlvbiBpbmZvID0gY2FsbEluZm9ybWF0aW9uRm9y
Q2FsbGVyKCpzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpOworICAgIGNvbnN0IFR5
cGVJbmRleCBjdXJyZW50VHlwZUluZGV4ID0gbV9pbmZvLnR5cGVJbmRleEZyb21GdW5jdGlvbklu
ZGV4U3BhY2UobV9mdW5jdGlvbkluZGV4KTsKKyAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgY3Vy
cmVudFR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoY3VycmVudFR5cGVJbmRl
eCk7CisgICAgLy8gTk9URTogd2hlbiB0aGUgZnJhbWUgd2Ugd2FudCB0byByZXVzZSBoYXMgbW9y
ZSByZXR1cm4gdmFsdWVzIHRoYW4gdGhlIGNhbGxlZSwgd2UgcHJlc2VydmUgdGhlIGV4Y2VkaW5n
IG9mZnNldC4KKyAgICB1aW50MzJfdCBudW1iZXJPZkNhbGxlclN0YWNrUmVnaXN0ZXJzID0gc3Rk
OjptaW48dWludDMyX3Q+KG51bWJlck9mU3RhY2tSZWdpc3RlcnMoKmN1cnJlbnRUeXBlRGVmaW5p
dGlvbi5hczxGdW5jdGlvblNpZ25hdHVyZT4oKSksIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50
cyk7CisKKyAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3VtZW50cywgYXJncyk7CisK
KyAgICBpZiAoQ29udGV4dDo6dXNlRmFzdFRMUygpKQorICAgICAgICBXYXNtUmV0dXJuQ2FsbDo6
ZW1pdCh0aGlzLCBmdW5jdGlvbkluZGV4LCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9m
U3RhY2tBcmd1bWVudHMsIG51bWJlck9mQ2FsbGVyU3RhY2tSZWdpc3RlcnMpOworICAgIGVsc2UK
KyAgICAgICAgV2FzbVJldHVybkNhbGxOb1Rsczo6ZW1pdCh0aGlzLCBmdW5jdGlvbkluZGV4LCBp
bmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMsIG51bWJlck9mQ2Fs
bGVyU3RhY2tSZWdpc3RlcnMpOworCisgICAgaW5mby5jb21taXRSZXN1bHRzKHJlc3VsdHMpOwor
CisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmV0dXJuQ2Fs
bEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWdu
YXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMp
IC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVJbmRleCA9IGFy
Z3MudGFrZUxhc3QoKTsKKworICAgIEFTU0VSVChzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1
cmU+KCktPmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7CisgICAgQVNTRVJUKG1faW5m
by50YWJsZUNvdW50KCkgPiB0YWJsZUluZGV4KTsKKyAgICBBU1NFUlQobV9pbmZvLnRhYmxlc1t0
YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CisKKyAgICBM
TEludENhbGxJbmZvcm1hdGlvbiBpbmZvID0gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKCpzaWdu
YXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpOworICAgIGNvbnN0IFR5cGVJbmRleCBjdXJy
ZW50VHlwZUluZGV4ID0gbV9pbmZvLnR5cGVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UobV9m
dW5jdGlvbkluZGV4KTsKKyAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgY3VycmVudFR5cGVEZWZp
bml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoY3VycmVudFR5cGVJbmRleCk7CisgICAgLy8g
Tk9URTogd2hlbiB0aGUgZnJhbWUgd2Ugd2FudCB0byByZXVzZSBoYXMgbW9yZSByZXR1cm4gdmFs
dWVzIHRoYW4gdGhlIGNhbGxlZSwgd2UgcHJlc2VydmUgdGhlIGV4Y2VkaW5nIG9mZnNldC4KKyAg
ICB1aW50MzJfdCBudW1iZXJPZkNhbGxlclN0YWNrUmVnaXN0ZXJzID0gc3RkOjptaW48dWludDMy
X3Q+KG51bWJlck9mU3RhY2tSZWdpc3RlcnMoKmN1cnJlbnRUeXBlRGVmaW5pdGlvbi5hczxGdW5j
dGlvblNpZ25hdHVyZT4oKSksIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cyk7CisKKyAgICB1
bmlmeVZhbHVlc1dpdGhCbG9jayhpbmZvLmFyZ3VtZW50cywgYXJncyk7CisKKyAgICBpZiAoQ29u
dGV4dDo6dXNlRmFzdFRMUygpKQorICAgICAgICBXYXNtUmV0dXJuQ2FsbEluZGlyZWN0OjplbWl0
KHRoaXMsIGNhbGxlZUluZGV4LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKCpzaWduYXR1cmUu
YXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9m
U3RhY2tBcmd1bWVudHMsIG51bWJlck9mQ2FsbGVyU3RhY2tSZWdpc3RlcnMsIHRhYmxlSW5kZXgp
OworICAgIGVsc2UKKyAgICAgICAgV2FzbVJldHVybkNhbGxJbmRpcmVjdE5vVGxzOjplbWl0KHRo
aXMsIGNhbGxlZUluZGV4LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKCpzaWduYXR1cmUuYXM8
RnVuY3Rpb25TaWduYXR1cmU+KCkpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3Rh
Y2tBcmd1bWVudHMsIG51bWJlck9mQ2FsbGVyU3RhY2tSZWdpc3RlcnMsIHRhYmxlSW5kZXgpOwor
CisgICAgaW5mby5jb21taXRSZXN1bHRzKHJlc3VsdHMpOworCisgICAgcmV0dXJuIHsgfTsKK30K
KwogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlIHZhbHVl
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgcmVzdWx0
ID0gcHVzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNw
cAppbmRleCA2NDE3ZjgwYjM1YTdhMzI5ZWEzZjA0YmU5MTNkZTI5MWQ2MGUxZWI5Li45ZGY4ZGM4
NTAyZjM5MzY4YmUzMGE2MDkwNmYyMDZhNjIxM2NmNzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcApAQCAtNTY2LDYgKzU2NiwzNiBAQCBXQVNNX1NM
T1dfUEFUSF9ERUNMKGNhbGxfcmVmX25vX3RscykKICAgICByZXR1cm4gZG9XYXNtQ2FsbFJlZihj
YWxsRnJhbWUsIGluc3RhbmNlLCByZWZlcmVuY2UsIGluc3RydWN0aW9uLm1fdHlwZUluZGV4KTsK
IH0KIAorV0FTTV9TTE9XX1BBVEhfREVDTChyZXR1cm5fY2FsbCkKK3sKKyAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKKworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVJldHVy
bkNhbGw+KCk7CisgICAgcmV0dXJuIGRvV2FzbUNhbGwoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1f
ZnVuY3Rpb25JbmRleCk7Cit9CisKK1dBU01fU0xPV19QQVRIX0RFQ0wocmV0dXJuX2NhbGxfbm9f
dGxzKQoreworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworCisgICAgYXV0byBpbnN0cnVj
dGlvbiA9IHBjLT5hczxXYXNtUmV0dXJuQ2FsbE5vVGxzPigpOworICAgIHJldHVybiBkb1dhc21D
YWxsKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpOworfQorCitXQVNNX1NM
T1dfUEFUSF9ERUNMKHJldHVybl9jYWxsX2luZGlyZWN0KQoreworICAgIGF1dG8gaW5zdHJ1Y3Rp
b24gPSBwYy0+YXM8V2FzbVJldHVybkNhbGxJbmRpcmVjdD4oKTsKKyAgICB1bnNpZ25lZCBmdW5j
dGlvbkluZGV4ID0gUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpLnVuYm94ZWRJbnQz
MigpOworICAgIHJldHVybiBkb1dhc21DYWxsSW5kaXJlY3QoY2FsbEZyYW1lLCBpbnN0YW5jZSwg
ZnVuY3Rpb25JbmRleCwgaW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBpbnN0cnVjdGlvbi5tX3Np
Z25hdHVyZUluZGV4KTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChyZXR1cm5fY2FsbF9pbmRp
cmVjdF9ub190bHMpCit7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtUmV0dXJu
Q2FsbEluZGlyZWN0Tm9UbHM+KCk7CisgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleCA9IFJFQUQo
aW5zdHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4KS51bmJveGVkSW50MzIoKTsKKyAgICByZXR1cm4g
ZG9XYXNtQ2FsbEluZGlyZWN0KGNhbGxGcmFtZSwgaW5zdGFuY2UsIGZ1bmN0aW9uSW5kZXgsIGlu
c3RydWN0aW9uLm1fdGFibGVJbmRleCwgaW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7Cit9
CisKIFdBU01fU0xPV19QQVRIX0RFQ0woc2V0X2dsb2JhbF9yZWYpCiB7CiAgICAgYXV0byBpbnN0
cnVjdGlvbiA9IHBjLT5hczxXYXNtU2V0R2xvYmFsUmVmPigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCmluZGV4IDY3OGMxNzI4Mzc2OGY0MGE0ZWVmZjczZmY0
YTY4M2NmZjYwMTYzNWMuLmY1MDc0Y2NkM2JmMDIzZmM1MzJlNjJjY2RlZjA3ZDFiMTIwZWZlYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKQEAgLTgxLDYg
KzgxLDEwIEBAIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNhbGxfaW5kaXJlY3QpOwogV0FT
TV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9pbmRpcmVjdF9ub190bHMpOwogV0FTTV9TTE9X
X1BBVEhfSElEREVOX0RFQ0woY2FsbF9yZWYpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
Y2FsbF9yZWZfbm9fdGxzKTsKK1dBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHJldHVybl9jYWxs
KTsKK1dBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHJldHVybl9jYWxsX25vX3Rscyk7CitXQVNN
X1NMT1dfUEFUSF9ISURERU5fREVDTChyZXR1cm5fY2FsbF9pbmRpcmVjdCk7CitXQVNNX1NMT1df
UEFUSF9ISURERU5fREVDTChyZXR1cm5fY2FsbF9pbmRpcmVjdF9ub190bHMpOwogV0FTTV9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2V0X2dsb2JhbF9yZWYpOwogV0FTTV9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2V0X2dsb2JhbF9yZWZfcG9ydGFibGVfYmluZGluZyk7CiBXQVNNX1NMT1dfUEFUSF9I
SURERU5fREVDTChtZW1vcnlfYXRvbWljX3dhaXQzMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93
YXNtLmpzb24KaW5kZXggMWZhODZmOTBhYzAwZjJlMDYzYzhmY2M0Mjc1M2MzOTBmZDQxYTVmYi4u
MzdjZWU3YWVjYmE4YjU3YjFlNWM5YmRiMWE5Y2I1MDViNjQ4MWMyZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL3dhc20uanNvbgpAQCAtOTgsNiArOTgsOCBAQAogICAgICAgICAiZGF0YS5kcm9w
IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImV4dHRhYmxlIiwgICAidmFsdWUiOiAgMjUyLCAi
cmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFtd
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAic2Vn
bWVudF9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNocmlua3MgdGhlIHNpemUg
b2YgdGhlIHNlZ21lbnQgdG8gemVybyIsICJleHRlbmRlZE9wIjogOSB9LAogICAgICAgICAiY2Fs
bCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAg
MTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRl
ciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUi
OiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5j
dGlvbiBieSBpdHMgaW5kZXgiIH0sCiAgICAgICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAi
Y2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4g
ZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAgICAgICAicmV0dXJuX2NhbGwiOiAgICAgICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE4LCAicmV0dXJuIjog
WyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwg
ICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2lu
ZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ0YWlsIGNhbGwgYSBmdW5jdGlvbiBieSBp
dHMgaW5kZXgiIH0sCisgICAgICAgICJyZXR1cm5fY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNh
dGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTksICJyZXR1cm4iOiBbImNhbGwiXSwg
ICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAg
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlw
ZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInRhYmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1aW50
MzIifV0sImRlc2NyaXB0aW9uIjogInRhaWwgY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGgg
YW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAgICAgICAiY2FsbF9yZWYiOiAgICAgICAgICAg
IHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMjAsICJyZXR1cm4iOiBbImNh
bGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiByZWZlcmVuY2UiIH0s
CiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5Iiwg
ICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7
Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6
ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3UiOiAgICAgICAgIHsg
ImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDUsICJyZXR1cm4iOiBbImkzMiJd
LCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAg
ICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAi
dHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0NjQ3ZWJjNjFkYTJiMjU3
ZTY1ZTk0MzU4NTc2OTUzYTI2MTBhMjMzLi41MGNiNDA1MWI5OTc1ODRhNDdkZTk4ZDUzNDk5YzY5
YjJkNjE5Zjg1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMjggIFRvbSBUYXJ0YXJpbiAgPHRvbUBsZWFu
aW5ndGVjaC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHdhc20gdGFpbCBj
YWxscyBpbiBMTEludCB0aWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTUyNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSdW4gdGhlIHJldHVybi1jYWxsLXNwZWMgdGVzdHMgd2l0aCB0aGVpciBzcGVj
aWZpYyBoYXJuZXNzLgorICAgICAgICBSdW4gYWRkaXRpb25hbCB0ZXN0cyBpbiBxdWljayBtb2Rl
IHdpdGggT01HIGFuZCBCQlEgZGlzYWJsZWQuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mt
c3RyZXNzLXRlc3RzOgorCiAyMDIyLTA0LTI4ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CiAKICAgICAgICAgdGVzdC13ZWJraXRwZXJsIG91dHB1dHMgZXJyb3JzIGFib3V0
IHVuaW5pdGlhbGl6ZWQgJHBsYXRmb3JtIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10
ZXN0cwppbmRleCAzNDMyMjliMTkxZjRjZjc3M2VjYjdjNTM3NTZmNjFiNmQ1MjA3YjNiLi4wZGYz
NzgxZDliNzM3NTQxYjRkYTczZWE1OTkxYWE1NWYzNDUwOWVmIDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1z
dHJlc3MtdGVzdHMKQEAgLTE4ODQsNiArMTg4NCwxNiBAQCBkZWYgcnVuV2ViQXNzZW1ibHlGdW5j
dGlvblJlZmVyZW5jZVNwZWNUZXN0KG1vZGUpCiAgICAgcnVuV2ViQXNzZW1ibHlTcGVjVGVzdEJh
c2UobW9kZSwgInNwZWMtaGFybmVzcyIsICItLXVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJl
ZmVyZW5jZXM9dHJ1ZSIpCiBlbmQKIAorZGVmIHJ1bldlYkFzc2VtYmx5UmV0dXJuQ2FsbFNwZWNU
ZXN0KG1vZGUpCisgICAgJG1vZGUgPSBtb2RlLnRvX3MKKyAgICBydW5XZWJBc3NlbWJseVNwZWNU
ZXN0QmFzZShtb2RlLCAicmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzIiwgIi0tdXNlV2ViQXNzZW1i
bHlUYWlsQ2FsbHM9dHJ1ZSIsICItLXVzZUJCUUpJVD1mYWxzZSIsICItLXVzZU9NR0pJVD1mYWxz
ZSIpCitlbmQKKworZGVmIHJ1bldlYkFzc2VtYmx5UmV0dXJuQ2FsbChtb2RlKQorICAgICRtb2Rl
ID0gbW9kZS50b19zCisgICAgcnVuV2ViQXNzZW1ibHlTdWl0ZSgiLS11c2VXZWJBc3NlbWJseVRh
aWxDYWxscz10cnVlIiwgIi0tdXNlQkJRSklUPWZhbHNlIiwgIi0tdXNlT01HSklUPWZhbHNlIikK
K2VuZAorCiBkZWYgcnVuV2ViQXNzZW1ibHlMb3dFeGVjdXRhYmxlTWVtb3J5KCpvcHRpb25hbFRl
c3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcmV0dXJuIGlmICEkaml0VGVzdHMKICAgICByZXR1cm4g
aWYgISRpc0ZUTFBsYXRmb3JtCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDkwYTAwZGE4YmI2YzEzZGFkMTMzYmI1OWI4ZjAwZjdkNDkyZGU4
NzcuLmEwOWI2ODJlNWMzMzkwYzc2OThjMGEzOTkxYmU3MzVmNmMzYWZkYTEgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE5
MyBAQAorMjAyMi0wNC0yOCAgVG9tIFRhcnRhcmluICA8dG9tQGxlYW5pbmd0ZWNoLmNvbT4KKwor
ICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3Igd2FzbSB0YWlsIGNhbGxzIGluIExMSW50IHRp
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTI3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBz
cGVjcyBhbmQgYWRkaXRpb25hbCB0ZXN0cy4KKworICAgICAgICAqIHdhc20ueWFtbDoKKyAgICAg
ICAgKiB3YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy5qczogQWRkZWQuCisgICAgICAgIChp
bXBvcnQuc3RyaW5nX2FwcGVhcmVkX2hlcmUudGhlbik6CisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKHByb21pc2VfdGVzdCk6CisgICAgICAgIChsZXQuYXNzZXJ0X3VucmVhY2hlZCk6CisgICAg
ICAgIChsZXQuY29uc29sZS5sb2cpOgorICAgICAgICAqIHdhc20vcmV0dXJuLWNhbGwtc3BlYy1o
YXJuZXNzL2FzeW5jX2luZGV4LmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC50ZXN0TnVtKToKKyAg
ICAgICAgKHVuaXF1ZVRlc3QpOgorICAgICAgICAoYXNzZXJ0VGhyb3dzKToKKyAgICAgICAgKGV4
dGVybnJlZik6CisgICAgICAgIChpc19leHRlcm5yZWYpOgorICAgICAgICAoaXNfZnVuY3JlZik6
CisgICAgICAgIChlcV9leHRlcm5yZWYpOgorICAgICAgICAoZXFfZnVuY3JlZik6CisgICAgICAg
IChiaW5hcnkpOgorICAgICAgICAobW9kdWxlKToKKyAgICAgICAgKGFzc2VydF9pbnZhbGlkKToK
KyAgICAgICAgKGluc3RhbmNlKToKKyAgICAgICAgKGV4cG9ydHMpOgorICAgICAgICAodGhlbi4p
OgorICAgICAgICAocmVpbml0aWFsaXplUmVnaXN0cnkuZ2V0IHByb21pc2VfdGVzdCk6CisgICAg
ICAgIChyZWluaXRpYWxpemVSZWdpc3RyeSk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgIChh
c3NlcnRfZXhoYXVzdGlvbik6CisgICAgICAgIChnZXQgY29uc3QpOgorICAgICAgICAqIHdhc20v
cmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3N5bmNfaW5kZXguanM6IEFkZGVkLgorICAgICAgICAo
bGV0LnRlc3ROdW0pOgorICAgICAgICAoYXNzZXJ0VGhyb3dzKToKKyAgICAgICAgKF9hc3NlcnQp
OgorICAgICAgICAoVmFsdWVSZXN1bHQpOgorICAgICAgICAoRXJyb3JSZXN1bHQpOgorICAgICAg
ICAoUmVzdWx0LnByb3RvdHlwZS5pc0Vycm9yKToKKyAgICAgICAgKGV4dGVybnJlZik6CisgICAg
ICAgIChpc19leHRlcm5yZWYpOgorICAgICAgICAoaXNfZnVuY3JlZik6CisgICAgICAgIChlcV9l
eHRlcm5yZWYpOgorICAgICAgICAoZXFfZnVuY3JlZik6CisgICAgICAgIChyZWluaXRpYWxpemVS
ZWdpc3RyeS5sZXQuaGFuZGxlci5nZXQgcmV0dXJuKToKKyAgICAgICAgKGJpbmFyeSk6CisgICAg
ICAgIChtb2R1bGUpOgorICAgICAgICAqIHdhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dh
c20tY29uc3RhbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKGhvc3RyZWYpOgorICAgICAgICAoYnl0
ZXMpOgorICAgICAgICAoYnl0ZXNXaXRoSGVhZGVyKToKKyAgICAgICAgKG1ha2VTaWcpOgorICAg
ICAgICAobWFrZVNpZ192X3gpOgorICAgICAgICAobWFrZVNpZ192X3h4KToKKyAgICAgICAgKG1h
a2VTaWdfcl92KToKKyAgICAgICAgKG1ha2VTaWdfcl94KToKKyAgICAgICAgKG1ha2VTaWdfcl94
eCk6CisgICAgICAgIChhc3NlcnRUcmFwcyk6CisgICAgICAgIChhc3NlcnRXYXNtVGhyb3dzKToK
KyAgICAgICAgKiB3YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy93YXNtLW1vZHVsZS1idWls
ZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKEJpbmFyeS5wcm90b3R5cGUuZW1pdF91OCk6CisgICAg
ICAgIChCaW5hcnkucHJvdG90eXBlLmVtaXRfdTE2KToKKyAgICAgICAgKEJpbmFyeS5wcm90b3R5
cGUuZW1pdF91MzIpOgorICAgICAgICAoQmluYXJ5LnByb3RvdHlwZS5lbWl0X3UzMnYpOgorICAg
ICAgICAoQmluYXJ5LnByb3RvdHlwZS5lbWl0X2J5dGVzKToKKyAgICAgICAgKEJpbmFyeS5wcm90
b3R5cGUuZW1pdF9zdHJpbmcpOgorICAgICAgICAoQmluYXJ5LnByb3RvdHlwZS5lbWl0X2hlYWRl
cik6CisgICAgICAgIChCaW5hcnkucHJvdG90eXBlLmVtaXRfc2VjdGlvbik6CisgICAgICAgIChC
aW5hcnkpOgorICAgICAgICAoV2FzbUZ1bmN0aW9uQnVpbGRlcik6CisgICAgICAgIChXYXNtRnVu
Y3Rpb25CdWlsZGVyLnByb3RvdHlwZS5leHBvcnRBcyk6CisgICAgICAgIChXYXNtRnVuY3Rpb25C
dWlsZGVyLnByb3RvdHlwZS5leHBvcnRGdW5jKToKKyAgICAgICAgKFdhc21GdW5jdGlvbkJ1aWxk
ZXIucHJvdG90eXBlLmFkZEJvZHkpOgorICAgICAgICAoV2FzbUZ1bmN0aW9uQnVpbGRlci5wcm90
b3R5cGUuYWRkTG9jYWxzKToKKyAgICAgICAgKFdhc21GdW5jdGlvbkJ1aWxkZXIucHJvdG90eXBl
LmVuZCk6CisgICAgICAgIChXYXNtR2xvYmFsQnVpbGRlcik6CisgICAgICAgIChXYXNtR2xvYmFs
QnVpbGRlci5wcm90b3R5cGUuZXhwb3J0QXMpOgorICAgICAgICAoV2FzbU1vZHVsZUJ1aWxkZXIp
OgorICAgICAgICAoV2FzbU1vZHVsZUJ1aWxkZXIucHJvdG90eXBlLmFkZFN0YXJ0KToKKyAgICAg
ICAgKFdhc21Nb2R1bGVCdWlsZGVyLnByb3RvdHlwZS5hZGRNZW1vcnkpOgorICAgICAgICAoV2Fz
bU1vZHVsZUJ1aWxkZXIucHJvdG90eXBlLmFkZEV4cGxpY2l0U2VjdGlvbik6CisgICAgICAgIChX
YXNtTW9kdWxlQnVpbGRlci5wcm90b3R5cGUuc3RyaW5nVG9CeXRlcyk6CisgICAgICAgIChXYXNt
TW9kdWxlQnVpbGRlci5wcm90b3R5cGUuYWRkQ3VzdG9tU2VjdGlvbik6CisgICAgICAgIChXYXNt
TW9kdWxlQnVpbGRlci5wcm90b3R5cGUuYWRkVHlwZSk6CisgICAgICAgIChXYXNtTW9kdWxlQnVp
bGRlci5wcm90b3R5cGUuYWRkR2xvYmFsKToKKyAgICAgICAgKFdhc21Nb2R1bGVCdWlsZGVyLnBy
b3RvdHlwZS5hZGRGdW5jdGlvbik6CisgICAgICAgIChXYXNtTW9kdWxlQnVpbGRlci5wcm90b3R5
cGUuYWRkSW1wb3J0KToKKyAgICAgICAgKFdhc21Nb2R1bGVCdWlsZGVyLnByb3RvdHlwZS5hZGRJ
bXBvcnRlZEdsb2JhbCk6CisgICAgICAgIChXYXNtTW9kdWxlQnVpbGRlci5wcm90b3R5cGUuYWRk
SW1wb3J0ZWRNZW1vcnkpOgorICAgICAgICAoV2FzbU1vZHVsZUJ1aWxkZXIucHJvdG90eXBlLmFk
ZEltcG9ydGVkVGFibGUpOgorICAgICAgICAoV2FzbU1vZHVsZUJ1aWxkZXIucHJvdG90eXBlLmFk
ZEV4cG9ydCk6CisgICAgICAgIChXYXNtTW9kdWxlQnVpbGRlci5wcm90b3R5cGUuYWRkRXhwb3J0
T2ZLaW5kKToKKyAgICAgICAgKFdhc21Nb2R1bGVCdWlsZGVyLnByb3RvdHlwZS5hZGREYXRhU2Vn
bWVudCk6CisgICAgICAgIChXYXNtTW9kdWxlQnVpbGRlci5wcm90b3R5cGUuZXhwb3J0TWVtb3J5
QXMpOgorICAgICAgICAoV2FzbU1vZHVsZUJ1aWxkZXIucHJvdG90eXBlLmFkZEZ1bmN0aW9uVGFi
bGVJbml0KToKKyAgICAgICAgKFdhc21Nb2R1bGVCdWlsZGVyLnByb3RvdHlwZS5hcHBlbmRUb1Rh
YmxlKToKKyAgICAgICAgKFdhc21Nb2R1bGVCdWlsZGVyLnByb3RvdHlwZS5zZXRGdW5jdGlvblRh
YmxlTGVuZ3RoKToKKyAgICAgICAgKFdhc21Nb2R1bGVCdWlsZGVyLnByb3RvdHlwZS50b0FycmF5
KToKKyAgICAgICAgKFdhc21Nb2R1bGVCdWlsZGVyLnByb3RvdHlwZS50b0J1ZmZlcik6CisgICAg
ICAgIChXYXNtTW9kdWxlQnVpbGRlci5wcm90b3R5cGUuaW5zdGFudGlhdGUpOgorICAgICAgICAq
IHdhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dhc3QuanM6IEFkZGVkLgorICAgICAgICAo
bm9ybWFsaXplKToKKyAgICAgICAgKHJlcXVpcmUuZWxzZS5fcmVnaXN0cnkubmFtZSk6CisgICAg
ICAgIChyZXF1aXJlKToKKyAgICAgICAgKGFkZF9oZXhfY2hhcik6CisgICAgICAgIChhZGRfY2hh
cik6CisgICAgICAgIChzdHJpbmdfd2l0aCk6CisgICAgICAgIChsaXN0X29mX29wdCk6CisgICAg
ICAgIChicmVha19ieXRlcy5mKToKKyAgICAgICAgKGJyZWFrX2J5dGVzKToKKyAgICAgICAgKGYp
OgorICAgICAgICAoZGVjbHMpOgorICAgICAgICAoZnVuY190eXBlKToKKyAgICAgICAgKGxpbWl0
cyk6CisgICAgICAgIChnbG9iYWxfdHlwZSk6CisgICAgICAgICh0ZXN0b3ApOgorICAgICAgICAo
cmVsb3ApOgorICAgICAgICAodW5vcCk6CisgICAgICAgIChiaW5vcCk6CisgICAgICAgIChjdnRv
cCk6CisgICAgICAgIChvcGVyKToKKyAgICAgICAgKG1lbV9zaXplKToKKyAgICAgICAgKGV4dGVu
c2lvbik6CisgICAgICAgIChtZW1vcCk6CisgICAgICAgIChzdG9yZW9wKToKKyAgICAgICAgKHZh
cik6CisgICAgICAgIChjb25zdG9wKToKKyAgICAgICAgKGluc3RyLmVsc2Uuc3dpdGNoLmNhc2Uu
MC5mKToKKyAgICAgICAgKGluc3RyLmVsc2Uuc3dpdGNoLmNhc2UuMS5mLjEpOgorICAgICAgICAo
aW5zdHIuZWxzZS5zd2l0Y2guY2FzZS4yLmYuMik6CisgICAgICAgIChpbnN0cik6CisgICAgICAg
IChmdW5jX3dpdGhfbmFtZSk6CisgICAgICAgIChmdW5jKToKKyAgICAgICAgKHN0YXJ0KToKKyAg
ICAgICAgKHRhYmxlKToKKyAgICAgICAgKG1lbW9yeSk6CisgICAgICAgIChzZWdtZW50KToKKyAg
ICAgICAgKGVsZW1zKToKKyAgICAgICAgKGRhdGEpOgorICAgICAgICAodHlwZWRlZik6CisgICAg
ICAgIChpbXBvcnRfa2luZCk6CisgICAgICAgIChpbXBvcnQpOgorICAgICAgICAoZXhwb3J0X2tp
bmQpOgorICAgICAgICAoZXhwb3J0KToKKyAgICAgICAgKHZhcl9vcHQpOgorICAgICAgICAoaXNf
ZnVuY19pbXBvcnQpOgorICAgICAgICAoaXNfdGFibGVfaW1wb3J0KToKKyAgICAgICAgKGlzX21l
bW9yeV9pbXBvcnQpOgorICAgICAgICAoaXNfZ2xvYmFsX2ltcG9ydCk6CisgICAgICAgIChmLjEp
OgorICAgICAgICAoZi4yKToKKyAgICAgICAgKGYuMyk6CisgICAgICAgIChtb2R1bGVfd2l0aF92
YXJfb3B0KToKKyAgICAgICAgKG1vZHVsZV8pOgorICAgICAgICAobGl0ZXJhbCk6CisgICAgICAg
IChkZWZpbml0aW9uKToKKyAgICAgICAgKGFjY2Vzcyk6CisgICAgICAgIChhY3Rpb24pOgorICAg
ICAgICAoc2NyaXB0KToKKyAgICAgICAgKF9yZWdpc3RyeS5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6
CisgICAgICAgIChpbml0KToKKyAgICAgICAgKG1ha2VfbWF0cml4KToKKyAgICAgICAgKGNvcHkp
OgorICAgICAgICAoYXBwZW5kKToKKyAgICAgICAgKHN1Yik6CisgICAgICAgIChmaWxsKToKKyAg
ICAgICAgKGJsaXQpOgorICAgICAgICAoaXRlcik6CisgICAgICAgIChtYXApOgorICAgICAgICAo
aXRlcmkpOgorICAgICAgICAobWFwaSk6CisgICAgICAgICh0b19saXN0KToKKyAgICAgICAgKGxp
c3RfbGVuZ3RoKToKKyAgICAgICAgKG9mX2xpc3QpOgorICAgICAgICAoZm9sZF9sZWZ0KToKKyAg
ICAgICAgKGZvbGRfcmlnaHQpOgorICAgICAgICAobWF4c29uKToKKyAgICAgICAgKHRyaWNrbGUp
OgorICAgICAgICAoYnViYmxlKToKKyAgICAgICAgKHRyaWNrbGV1cCk6CisgICAgICAgIChzb3J0
KToKKyAgICAgICAgKG1lcmdlKToKKyAgICAgICAgKGlzb3J0dG8pOgorICAgICAgICAoc29ydHRv
KToKKyAgICAgICAgKHN0YWJsZV9zb3J0KToKKyAgICAgICAgKGltcG9ydF90eXBlKToKKyAgICAg
ICAgKGV4cG9ydF90eXBlKToKKyAgICAgICAgKGRpbXMubik6CisgICAgICAgIChkaW1zLmQuaSk6
CisgICAgICAgIChkaW1zKToKKyAgICAgICAgKG1hcF9maWxlKToKKyAgICAgICAgKGNyZWF0ZSk6
CisgICAgICAgIChvZl9hcnJheSk6CisgICAgICAgIChzbGljZV9sZWZ0KToKKyAgICAgICAgKHNs
aWNlX3JpZ2h0KToKKyAgICAgICAgKHNsaWNlX2xlZnRfMSk6CisgICAgICAgIChzbGljZV9yaWdo
dF8xKToKKyAgICAgICAgKHNsaWNlX2xlZnRfMik6CisgICAgICAgIChzbGljZV9yaWdodF8yKToK
KyAgICAgICAgKGFycmF5MV9vZl9nZW5hcnJheSk6CisgICAgICAgIChhcnJheTJfb2ZfZ2VuYXJy
YXkpOgorICAgICAgICAoYXJyYXkzX29mX2dlbmFycmF5KToKKyAgICAgICAgKHJlc2hhcGVfMSk6
CisgICAgICAgIChyZXNoYXBlXzIpOgorICAgICAgICAocmVzaGFwZV8zKToKKyAgICAgICAgKHJl
c2hhcGUpOgorICAgICAgICAoX18pOgorICAgICAgICAoY29udGVudHMpOgorICAgICAgICAodG9f
Ynl0ZXMpOgorICAgICAgICAobnRoKToKKyAgICAgICAgKGxlbmd0aCk6CisgICAgICAgIChjbGVh
cik6CisgICAgICAgIChyZXNldCk6CisgICAgICAgIChyZXNpemUpOgorICAgICAgICAoYWRkX3N1
YnN0cmluZyk6CisgICAgICAgIChhZGRfc3ViYnl0ZXMpOgorICAgICAgICAoYWRkX3N0cmluZyk6
CisgICAgICAgIChhZGRfYnl0ZXMpOgorICAgICAgICAoYWRkX2J1ZmZlcik6CisgICAgICAgIChh
ZGRfY2hhbm5lbCk6CisgICAgICAgIChvdXRwdXRfYnVmZmVyKToKKyAgICAgICAgKGNsb3Npbmcp
OgorICAgICAgICAoYWR2YW5jZV90b19jbG9zaW5nKToKKyAgICAgICAgKGFkdmFuY2VfdG9fbm9u
X2FscGhhKToKKyAgICAgICAgKGZpbmRfaWRlbnQpOgorICAgICAgICAoYWRkX3N1YnN0aXR1dGUp
OgorICAgICAgICAobWFrZSk6CisgICAgICAgICh0b19zdHJpbmcpOgorICAgICAgICAob2Zfc3Ry
aW5nKToKKyAgICAgICAgKHN1Yl9zdHJpbmcpOgorICAgICAgICAoZXh0ZW5kKToKKyAgICAgICAg
KGJsaXRfc3RyaW5nKToKKyAgICAgICAgKGNvbmNhdCk6CisgICAgICAgIChjYXQpOgorICAgICAg
ICAoaXNfc3BhY2UpOgorICAgICAgICAodHJpbSk6CisgICAgICAgIChlc2NhcGVkKToKKyAgICAg
ICAgKHVwcGVyY2FzZSk6CisgICAgICAgIChsb3dlcmNhc2UpOgorICAgICAgICAoYXBwbHkxKToK
KyAgICAgICAgKGNhcGl0YWxpemUpOgorICAgICAgICAodW5jYXBpdGFsaXplKToKKyAgICAgICAg
KGluZGV4X3JlYyk6CisgICAgICAgIChpbmRleCk6CisgICAgICAgIChpbmRleF9mcm9tKToKKyAg
ICAgICAgKHJpbmRleF9yZWMpOgorICAgICAgICAocmluZGV4KToKKyAgICAgICAgKHJpbmRleF9m
cm9tKToKKyAgICAgICAgKGNvbnRhaW5zX2Zyb20pOgorICAgICAgICAoY29udGFpbnMpOgorICAg
ICAgICAocmNvbnRhaW5zX2Zyb20pOgorICAgICAgICAoY2FtbF9hcnJheV9zdWIpOgorICAgICAg
ICAobGVuKToKKyAgICAgICAgKGNhbWxfYXJyYXlfY29uY2F0KToKKyAgICAgICAgKGNhbWxfbWFr
ZV92ZWN0KToKKyAgICAgICAgKGNhbWxfYXJyYXlfYmxpdCk6CisgICAgICAgIChnZXQgaWYpOgor
ICAgICAgICAoY2FtbF9zZXRfb29faWQpOgorICAgICAgICAoZ2V0X2lkKToKKyAgICAgICAgKGNh
bWxfaW50MzJfZmxvYXRfb2ZfYml0cyk6CisgICAgICAgIChjYW1sX2ludDMyX2JpdHNfb2ZfZmxv
YXQpOgorICAgICAgICAoY2FtbF9jbGFzc2lmeV9mbG9hdCk6CisgICAgICAgIChjYW1sX21vZGZf
ZmxvYXQpOgorICAgICAgICAoY2FtbF9sZGV4cF9mbG9hdCk6CisgICAgICAgIChjYW1sX2ZyZXhw
X2Zsb2F0KToKKyAgICAgICAgKGNhbWxfY29weXNpZ25fZmxvYXQpOgorICAgICAgICAoY2FtbF9l
eHBtMV9mbG9hdCk6CisgICAgICAgIChjYW1sX2h5cG90X2Zsb2F0KToKKyAgICAgICAgKGNhbWxf
bG9nMTBfZmxvYXQpOgorICAgICAgICAoY2FtbF9mYWlsd2l0aCk6CisgICAgICAgIChwYXJzZV9k
aWdpdCk6CisgICAgICAgIChpbnRfb2Zfc3RyaW5nX2Jhc2UpOgorICAgICAgICAocGFyc2Vfc2ln
bl9hbmRfYmFzZSk6CisgICAgICAgIChjYW1sX2ludF9vZl9zdHJpbmcuYXV4KToKKyAgICAgICAg
KGNhbWxfaW50X29mX3N0cmluZyk6CisgICAgICAgIChjYW1sX2ludDY0X29mX3N0cmluZy5hdXgp
OgorICAgICAgICAoY2FtbF9pbnQ2NF9vZl9zdHJpbmcpOgorICAgICAgICAoaW50X29mX2Jhc2Up
OgorICAgICAgICAocGFyc2VfZm9ybWF0KToKKyAgICAgICAgKGZpbmlzaF9mb3JtYXR0aW5nKToK
KyAgICAgICAgKGNhbWxfZm9ybWF0X2ludCk6CisgICAgICAgIChjYW1sX2ludDY0X2Zvcm1hdCk6
CisgICAgICAgIChjYW1sX2Zvcm1hdF9mbG9hdCk6CisgICAgICAgIChmbG9hdF9vZl9zdHJpbmcp
OgorICAgICAgICAoZGl2KToKKyAgICAgICAgKG1vZF8pOgorICAgICAgICAoY2FtbF9ic3dhcDE2
KToKKyAgICAgICAgKGNhbWxfaW50MzJfYnN3YXApOgorICAgICAgICAoaW11bCk6CisgICAgICAg
IChuZWdfc2lnbmVkKToKKyAgICAgICAgKG5vdCk6CisgICAgICAgIChlcSk6CisgICAgICAgIChu
ZWcpOgorICAgICAgICAobHNsXyk6CisgICAgICAgIChsc3JfKToKKyAgICAgICAgKGFzcl8pOgor
ICAgICAgICAoaXNfemVybyk6CisgICAgICAgIChtdWwpOgorICAgICAgICAoc3dhcCk6CisgICAg
ICAgICh4b3IpOgorICAgICAgICAob3JfKToKKyAgICAgICAgKGFuZF8pOgorICAgICAgICAoZ2Up
OgorICAgICAgICAobHQpOgorICAgICAgICAoZ3QpOgorICAgICAgICAobGUpOgorICAgICAgICAo
dG9fZmxvYXQpOgorICAgICAgICAob2ZfZmxvYXQpOgorICAgICAgICAoZGl2X21vZCk6CisgICAg
ICAgIChjb21wYXJlKToKKyAgICAgICAgKG9mX2ludDMyKToKKyAgICAgICAgKHRvX2ludDMyKToK
KyAgICAgICAgKHRvX2hleC5hdXgpOgorICAgICAgICAodG9faGV4KToKKyAgICAgICAgKGRpc2Nh
cmRfc2lnbik6CisgICAgICAgIChmbG9hdF9vZl9iaXRzKToKKyAgICAgICAgKGJpdHNfb2ZfZmxv
YXQudG9fbmF0KToKKyAgICAgICAgKGJpdHNfb2ZfZmxvYXQpOgorICAgICAgICAoZ2V0NjQpOgor
ICAgICAgICAoZXJhc2VfcmVsKToKKyAgICAgICAgKGNvbmNhdF9mbXR0eSk6CisgICAgICAgIChj
b25jYXRfZm10KToKKyAgICAgICAgKGNyZWF0ZV9jaGFyX3NldCk6CisgICAgICAgIChhZGRfaW5f
Y2hhcl9zZXQpOgorICAgICAgICAocmV2X2NoYXJfc2V0KToKKyAgICAgICAgKGlzX2luX2NoYXJf
c2V0KToKKyAgICAgICAgKHByZWNfb2ZfcHJlY19vcHQpOgorICAgICAgICAocGFyYW1fZm9ybWF0
X29mX2lnbm9yZWRfZm9ybWF0KToKKyAgICAgICAgKGJ1ZmZlcl9jaGVja19zaXplKToKKyAgICAg
ICAgKGJ1ZmZlcl9hZGRfY2hhcik6CisgICAgICAgIChidWZmZXJfYWRkX3N0cmluZyk6CisgICAg
ICAgIChidWZmZXJfY29udGVudHMpOgorICAgICAgICAoY2hhcl9vZl9pY29udik6CisgICAgICAg
IChjaGFyX29mX2Zjb252KToKKyAgICAgICAgKGNoYXJfb2ZfY291bnRlcik6CisgICAgICAgIChw
cmludF9jaGFyKToKKyAgICAgICAgKHNldCB3aGlsZS5zZXQgdmFyKToKKyAgICAgICAgKHNldCB3
aGlsZS5zZXQgZWxzZSk6CisgICAgICAgIChzZXQgdmFyKToKKyAgICAgICAgKHNldCBlbHNlKToK
KyAgICAgICAgKHNldCBwcmludF9jaGFyKToKKyAgICAgICAgKHNldCBpZik6CisgICAgICAgIChi
cHJpbnRfcGFkdHkpOgorICAgICAgICAoYnByaW50X2lnbm9yZWRfZmxhZyk6CisgICAgICAgIChi
cHJpbnRfcGFkX29wdCk6CisgICAgICAgIChicHJpbnRfcGFkZGluZyk6CisgICAgICAgIChicHJp
bnRfcHJlY2lzaW9uKToKKyAgICAgICAgKGJwcmludF9pY29udl9mbGFnKToKKyAgICAgICAgKGJw
cmludF9pbnRfZm10KToKKyAgICAgICAgKGJwcmludF9hbHRpbnRfZm10KToKKyAgICAgICAgKGJw
cmludF9mY29udl9mbGFnKToKKyAgICAgICAgKGJwcmludF9mbG9hdF9mbXQpOgorICAgICAgICAo
c3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0KToKKyAgICAgICAgKHN0cmluZ19vZl9mb3JtYXR0aW5n
X2dlbik6CisgICAgICAgIChicHJpbnRfY2hhcl9saXRlcmFsKToKKyAgICAgICAgKGJwcmludF9z
dHJpbmdfbGl0ZXJhbCk6CisgICAgICAgIChicHJpbnRfZm10dHkpOgorICAgICAgICAoaW50X29m
X2N1c3RvbV9hcml0eSk6CisgICAgICAgIChicHJpbnRfZm10KToKKyAgICAgICAgKHN0cmluZ19v
Zl9mbXQpOgorICAgICAgICAoc3ltbSk6CisgICAgICAgIChmbXR0eV9yZWxfZGV0KToKKyAgICAg
ICAgKHRyYW5zKToKKyAgICAgICAgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuKToKKyAgICAgICAg
KGZtdHR5X29mX2ZtdCk6CisgICAgICAgIChmbXR0eV9vZl9jdXN0b20pOgorICAgICAgICAoZm10
dHlfb2ZfcGFkZGluZ19mbXR0eSk6CisgICAgICAgIChmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkp
OgorICAgICAgICAodHlwZV9wYWRkaW5nKToKKyAgICAgICAgKHR5cGVfcGFkcHJlYyk6CisgICAg
ICAgICh0eXBlX2lnbm9yZWRfcGFyYW1fb25lKToKKyAgICAgICAgKHR5cGVfZm9ybWF0X2dlbik6
CisgICAgICAgICh0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbik6CisgICAgICAgICh0
eXBlX2Zvcm1hdCk6CisgICAgICAgIChyZWNhc3QpOgorICAgICAgICAoZml4X3BhZGRpbmcpOgor
ICAgICAgICAoZml4X2ludF9wcmVjaXNpb24pOgorICAgICAgICAoc3RyaW5nX3RvX2NhbWxfc3Ry
aW5nKToKKyAgICAgICAgKGZvcm1hdF9vZl9pY29udik6CisgICAgICAgIChmb3JtYXRfb2ZfYWNv
bnYpOgorICAgICAgICAoZm9ybWF0X29mX2Zjb252KToKKyAgICAgICAgKGNvbnZlcnRfaW50KToK
KyAgICAgICAgKGNvbnZlcnRfaW50MzIpOgorICAgICAgICAoY29udmVydF9uYXRpdmVpbnQpOgor
ICAgICAgICAoY29udmVydF9pbnQ2NCk6CisgICAgICAgIChlbHNlLmlzX3ZhbGlkKToKKyAgICAg
ICAgKGNvbnZlcnRfZmxvYXQpOgorICAgICAgICAoZm9ybWF0X2NhbWxfY2hhcik6CisgICAgICAg
IChzdHJpbmdfb2ZfZm10dHkpOgorICAgICAgICAoZWxzZS5zd2l0Y2guKToKKyAgICAgICAgKGVs
c2Uuc3dpdGNoLmsucHJpbWUpOgorICAgICAgICAoZWxzZS5zd2l0Y2guZWxzZS4pOgorICAgICAg
ICAoZWxzZS5zd2l0Y2guZWxzZS5rLnByaW1lLjEpOgorICAgICAgICAobWFrZV9wcmludGYpOgor
ICAgICAgICAobWFrZV9mcm9tX2ZtdHR5KToKKyAgICAgICAgKG1ha2VfaW52YWxpZF9hcmcpOgor
ICAgICAgICAobWFrZV9zdHJpbmdfcGFkZGluZyk6CisgICAgICAgIChtYWtlX2ludF9wYWRkaW5n
X3ByZWNpc2lvbik6CisgICAgICAgIChtYWtlX2N1c3RvbSk6CisgICAgICAgIChvdXRwdXRfYWNj
KToKKyAgICAgICAgKGJ1ZnB1dF9hY2MpOgorICAgICAgICAoc3RycHV0X2FjYyk6CisgICAgICAg
IChmYWlsd2l0aF9tZXNzYWdlLmspOgorICAgICAgICAoZmFpbHdpdGhfbWVzc2FnZSk6CisgICAg
ICAgIChvcGVuX2JveF9vZl9zdHJpbmcuZWxzZS5pbnZhbGlkX2JveCk6CisgICAgICAgIChvcGVu
X2JveF9vZl9zdHJpbmcuZWxzZS5wYXJzZV9zcGFjZXMpOgorICAgICAgICAob3Blbl9ib3hfb2Zf
c3RyaW5nLmVsc2UucGFyc2VfbHdvcmQpOgorICAgICAgICAob3Blbl9ib3hfb2Zfc3RyaW5nLmVs
c2UucGFyc2VfaW50KToKKyAgICAgICAgKG9wZW5fYm94X29mX3N0cmluZyk6CisgICAgICAgICht
YWtlX3BhZGRpbmdfZm10X2ViYik6CisgICAgICAgIChtYWtlX3ByZWNpc2lvbl9mbXRfZWJiKToK
KyAgICAgICAgKG1ha2VfcGFkcHJlY19mbXRfZWJiKToKKyAgICAgICAgKGludmFsaWRfZm9ybWF0
X21lc3NhZ2UpOgorICAgICAgICAoaW52YWxpZF9mb3JtYXRfd2l0aG91dCk6CisgICAgICAgIChl
eHBlY3RlZF9jaGFyYWN0ZXIpOgorICAgICAgICAoY29tcHV0ZV9pbnRfY29udik6CisgICAgICAg
IChpbmNvbXBhdGlibGVfZmxhZyk6CisgICAgICAgIChwYXJzZV9wb3NpdGl2ZSk6CisgICAgICAg
IChwYXJzZV9jb252KToKKyAgICAgICAgKHBhcnNlX2FmdGVyX3ByZWNpc2lvbik6CisgICAgICAg
IChlbHNlLnBhcnNlX2xpdGVyYWwpOgorICAgICAgICAocGFyc2VfYWZ0ZXJfcGFkZGluZyk6Cisg
ICAgICAgIChwYXJzZV9saXRlcmFsKToKKyAgICAgICAgKHBhcnNlX2FmdGVyX2F0KToKKyAgICAg
ICAgKGFkZF9saXRlcmFsKToKKyAgICAgICAgKHBhcnNlX3NwYWNlcyk6CisgICAgICAgIChwYXJz
ZV9pbnRlZ2VyKToKKyAgICAgICAgKGNvbXB1dGVfZmxvYXRfY29udik6CisgICAgICAgIChzZWFy
Y2hfc3ViZm9ybWF0X2VuZCk6CisgICAgICAgIChjaGVja19ub18wKToKKyAgICAgICAgKG9wdF9v
Zl9wYWQpOgorICAgICAgICAoZ2V0X3ByZWNfb3B0KToKKyAgICAgICAgKGVsc2Uuc3dpdGNoLmNh
c2UuOTkuY2hhcl9mb3JtYXQpOgorICAgICAgICAoZWxzZS5zd2l0Y2guc2Nhbl9mb3JtYXQpOgor
ICAgICAgICAocGFyc2VfY29udmVyc2lvbik6CisgICAgICAgIChzZXRfZmxhZyk6CisgICAgICAg
IChwYXJzZV9mbGFncyk6CisgICAgICAgIChpc19pbnRfYmFzZSk6CisgICAgICAgIChjb3VudGVy
X29mX2NoYXIpOgorICAgICAgICAoYWRkX3JhbmdlKToKKyAgICAgICAgKGZhaWxfc2luZ2xlX3Bl
cmNlbnQpOgorICAgICAgICAocGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhcik6CisgICAgICAgIChw
YXJzZV9jaGFyX3NldF9jb250ZW50KToKKyAgICAgICAgKHBhcnNlX2NoYXJfc2V0X3N0YXJ0KToK
KyAgICAgICAgKHBhcnNlX2NoYXJfc2V0KToKKyAgICAgICAgKGNoZWNrX29wZW5fYm94KToKKyAg
ICAgICAgKHBhcnNlX3RhZyk6CisgICAgICAgIChmbXRfZWJiX29mX3N0cmluZyk6CisgICAgICAg
IChmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5KToKKyAgICAgICAgKGZvcm1hdF9vZl9zdHJpbmdfZm9y
bWF0KToKKyAgICAgICAgKGNhcmV0KToKKyAgICAgICAgKGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9y
X2luKToKKyAgICAgICAgKGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCk6CisgICAgICAgIChj
YW1sX21sX2ZsdXNoKToKKyAgICAgICAgKG5vZGVfc3RkX291dHB1dCk6CisgICAgICAgIChjYW1s
X21sX291dHB1dF9jaGFyKToKKyAgICAgICAgKGNhbWxfbWxfaW5wdXQpOgorICAgICAgICAoY2Ft
bF9tbF9pbnB1dF9jaGFyKToKKyAgICAgICAgKGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QpOgor
ICAgICAgICAoZmFpbCk6CisgICAgICAgIChjYW1sX2xleF9hcnJheSk6CisgICAgICAgIChjYW1s
X2xleF9lbmdpbmUpOgorICAgICAgICAoY2FtbF9sZXhfcnVuX21lbSk6CisgICAgICAgIChjYW1s
X2xleF9ydW5fdGFnKToKKyAgICAgICAgKGNhbWxfbmV3X2xleF9lbmdpbmUpOgorICAgICAgICAo
Y2FtbF9vYmpfZHVwKToKKyAgICAgICAgKGNhbWxfb2JqX3RydW5jYXRlKToKKyAgICAgICAgKGNh
bWxfbGF6eV9tYWtlX2ZvcndhcmQpOgorICAgICAgICAoY2FtbF91cGRhdGVfZHVtbXkpOgorICAg
ICAgICAoY2FtbF9pbnRfY29tcGFyZSk6CisgICAgICAgIChjYW1sX2NvbXBhcmUpOgorICAgICAg
ICAoY2FtbF9lcXVhbCk6CisgICAgICAgIChjYW1sX25vdGVxdWFsKToKKyAgICAgICAgKGNhbWxf
Z3JlYXRlcmVxdWFsKToKKyAgICAgICAgKGNhbWxfbGVzc2VxdWFsKToKKyAgICAgICAgKGVsc2Uu
YXV4KToKKyAgICAgICAgKGNhbWxfZ2V0X3B1YmxpY19tZXRob2QpOgorICAgICAgICAoY2FtbF9w
YXJzZV9lbmdpbmUpOgorICAgICAgICAoY2FtbF9zZXRfcGFyc2VyX3RyYWNlKToKKyAgICAgICAg
KGpzX3N0cmluZ19vZl9jaGFyKToKKyAgICAgICAgKGNhbWxfc3RyaW5nX2dldCk6CisgICAgICAg
IChjYW1sX2NyZWF0ZV9zdHJpbmcpOgorICAgICAgICAoY2FtbF9zdHJpbmdfY29tcGFyZSk6Cisg
ICAgICAgIChjYW1sX2ZpbGxfc3RyaW5nKToKKyAgICAgICAgKGNhbWxfYmxpdF9zdHJpbmcpOgor
ICAgICAgICAoY2FtbF9ibGl0X2J5dGVzKToKKyAgICAgICAgKGJ5dGVzX29mX3N0cmluZyk6Cisg
ICAgICAgIChieXRlc190b19zdHJpbmcpOgorICAgICAgICAoY2FtbF9zdHJpbmdfb2ZfY2hhcl9h
cnJheSk6CisgICAgICAgIChjYW1sX2lzX3ByaW50YWJsZSk6CisgICAgICAgIChjYW1sX3N0cmlu
Z19nZXQxNik6CisgICAgICAgIChjYW1sX3N0cmluZ19nZXQzMik6CisgICAgICAgIChyZXBlYXQp
OgorICAgICAgICAoY2hyKToKKyAgICAgICAgKGFwcCk6CisgICAgICAgIChqcyk6CisgICAgICAg
IChjdXJyeV8xKToKKyAgICAgICAgKF8xKToKKyAgICAgICAgKGpzMSk6CisgICAgICAgIChfXzEp
OgorICAgICAgICAoY3VycnlfMik6CisgICAgICAgIChfMik6CisgICAgICAgIChqczIpOgorICAg
ICAgICAoX18yKToKKyAgICAgICAgKGN1cnJ5XzMpOgorICAgICAgICAoXzMpOgorICAgICAgICAo
anMzKToKKyAgICAgICAgKF9fMyk6CisgICAgICAgIChjdXJyeV80KToKKyAgICAgICAgKF80KToK
KyAgICAgICAgKGpzNCk6CisgICAgICAgIChfXzQpOgorICAgICAgICAoY3VycnlfNSk6CisgICAg
ICAgIChfNSk6CisgICAgICAgIChqczUpOgorICAgICAgICAoX181KToKKyAgICAgICAgKGN1cnJ5
XzYpOgorICAgICAgICAoXzYpOgorICAgICAgICAoanM2KToKKyAgICAgICAgKF9fNik6CisgICAg
ICAgIChjdXJyeV83KToKKyAgICAgICAgKF83KToKKyAgICAgICAgKGpzNyk6CisgICAgICAgIChf
XzcpOgorICAgICAgICAoY3VycnlfOCk6CisgICAgICAgIChfOCk6CisgICAgICAgIChqczgpOgor
ICAgICAgICAoX184KToKKyAgICAgICAgKHN0cmVhbSk6CisgICAgICAgIChlb3MpOgorICAgICAg
ICAoc2tpcCk6CisgICAgICAgIChyZWFkKToKKyAgICAgICAgKHBlZWspOgorICAgICAgICAoc3Ry
aW5nX29mX2J5dGUpOgorICAgICAgICAocG9zaXRpb24pOgorICAgICAgICAocmVnaW9uKToKKyAg
ICAgICAgKGVycm9yKToKKyAgICAgICAgKGd1YXJkKToKKyAgICAgICAgKGdldCAxKToKKyAgICAg
ICAgKGdldCBleHBlY3QpOgorICAgICAgICAoZ2V0IGlsbGVnYWwpOgorICAgICAgICAoYXQpOgor
ICAgICAgICAodTMyKToKKyAgICAgICAgKHU2NCk6CisgICAgICAgIChnZXQgcmVxdWlyZSk6Cisg
ICAgICAgICh2dU4pOgorICAgICAgICAoZ2V0IHZhcik6CisgICAgICAgICh2c04pOgorICAgICAg
ICAodnUzMik6CisgICAgICAgICh2czMyKToKKyAgICAgICAgKHZzNjQpOgorICAgICAgICAoZjMy
KToKKyAgICAgICAgKGY2NCk6CisgICAgICAgIChsZW4zMik6CisgICAgICAgIChzdHJpbmcpOgor
ICAgICAgICAob3B0KToKKyAgICAgICAgKHZlYyk6CisgICAgICAgIChzaXplZCk6CisgICAgICAg
ICh2YWx1ZV90eXBlKToKKyAgICAgICAgKGVsZW1fdHlwZSk6CisgICAgICAgIChzdGFja190eXBl
KToKKyAgICAgICAgKHRhYmxlX3R5cGUpOgorICAgICAgICAobWVtb3J5X3R5cGUpOgorICAgICAg
ICAobXV0YWJpbGl0eS5nZXQgaWYpOgorICAgICAgICAobXV0YWJpbGl0eSk6CisgICAgICAgIChp
bnN0ci5nZXQgaWYpOgorICAgICAgICAoaW5zdHJfYmxvY2spOgorICAgICAgICAoY29uc3QpOgor
ICAgICAgICAoaWQpOgorICAgICAgICAoc2VjdGlvbik6CisgICAgICAgICh0eXBlX3NlY3Rpb24p
OgorICAgICAgICAoaW1wb3J0X2tpbmQuZ2V0IGlmKToKKyAgICAgICAgKGltcG9ydF9zZWN0aW9u
KToKKyAgICAgICAgKGZ1bmNfc2VjdGlvbik6CisgICAgICAgICh0YWJsZV9zZWN0aW9uKToKKyAg
ICAgICAgKG1lbW9yeV9zZWN0aW9uKToKKyAgICAgICAgKGdsb2JhbCk6CisgICAgICAgIChnbG9i
YWxfc2VjdGlvbik6CisgICAgICAgIChleHBvcnRfa2luZC5nZXQgaWYpOgorICAgICAgICAoZXhw
b3J0X3NlY3Rpb24pOgorICAgICAgICAoc3RhcnRfc2VjdGlvbik6CisgICAgICAgIChsb2NhbCk6
CisgICAgICAgIChjb2RlKToKKyAgICAgICAgKGNvZGVfc2VjdGlvbik6CisgICAgICAgICh0YWJs
ZV9zZWdtZW50KToKKyAgICAgICAgKGVsZW1fc2VjdGlvbik6CisgICAgICAgIChtZW1vcnlfc2Vn
bWVudCk6CisgICAgICAgIChkYXRhX3NlY3Rpb24pOgorICAgICAgICAocGFydGlhbF9hcmcuMSk6
CisgICAgICAgIChjdXN0b20pOgorICAgICAgICAoY3VzdG9tX3NlY3Rpb24pOgorICAgICAgICAo
aXRlcmF0ZSk6CisgICAgICAgIChkZWNvZGUpOgorICAgICAgICAocGF0Y2gpOgorICAgICAgICAo
ZW5jb2RlLnU4KToKKyAgICAgICAgKGVuY29kZS51MTYpOgorICAgICAgICAoZW5jb2RlLnUzMik6
CisgICAgICAgIChlbmNvZGUudnU2NCk6CisgICAgICAgIChlbmNvZGUudnM2NCk6CisgICAgICAg
IChlbmNvZGUudnUzMik6CisgICAgICAgIChlbmNvZGUubGVuKToKKyAgICAgICAgKGVuY29kZS5i
b29sKToKKyAgICAgICAgKGVuY29kZS5zdHJpbmcpOgorICAgICAgICAoZW5jb2RlLnZlYyk6Cisg
ICAgICAgIChlbmNvZGUuZ2FwMzIpOgorICAgICAgICAoZW5jb2RlLnBhdGNoX2dhcDMyKToKKyAg
ICAgICAgKGVuY29kZS52YWx1ZV90eXBlKToKKyAgICAgICAgKGVuY29kZS5zdGFja190eXBlKToK
KyAgICAgICAgKGVuY29kZS5mdW5jX3R5cGUpOgorICAgICAgICAoZW5jb2RlLmxpbWl0cyk6Cisg
ICAgICAgIChlbmNvZGUudGFibGVfdHlwZSk6CisgICAgICAgIChlbmNvZGUubWVtb3J5X3R5cGUp
OgorICAgICAgICAoZW5jb2RlLmdsb2JhbF90eXBlKToKKyAgICAgICAgKGVuY29kZS5tZW1vcCk6
CisgICAgICAgIChlbmNvZGUpOgorICAgICAgICAoZW5jb2RlLmluc3RyKToKKyAgICAgICAgKGVu
Y29kZS5jb25zdCk6CisgICAgICAgIChlbmNvZGUuc2VjdGlvbik6CisgICAgICAgIChlbmNvZGUu
dHlwZV9zZWN0aW9uKToKKyAgICAgICAgKGVuY29kZS5pbXBvcnQpOgorICAgICAgICAoZW5jb2Rl
LmltcG9ydF9zZWN0aW9uKToKKyAgICAgICAgKGVuY29kZS5mdW5jKToKKyAgICAgICAgKGVuY29k
ZS5mdW5jX3NlY3Rpb24pOgorICAgICAgICAoZW5jb2RlLnRhYmxlKToKKyAgICAgICAgKGVuY29k
ZS50YWJsZV9zZWN0aW9uKToKKyAgICAgICAgKGVuY29kZS5tZW1vcnkpOgorICAgICAgICAoZW5j
b2RlLm1lbW9yeV9zZWN0aW9uKToKKyAgICAgICAgKGVuY29kZS5nbG9iYWwpOgorICAgICAgICAo
ZW5jb2RlLmdsb2JhbF9zZWN0aW9uKToKKyAgICAgICAgKGVuY29kZS5leHBvcnRfa2luZCk6Cisg
ICAgICAgIChlbmNvZGUuZXhwb3J0KToKKyAgICAgICAgKGVuY29kZS5leHBvcnRfc2VjdGlvbik6
CisgICAgICAgIChlbmNvZGUuc3RhcnRfc2VjdGlvbik6CisgICAgICAgIChlbmNvZGUuY29tYmlu
ZSk6CisgICAgICAgIChlbmNvZGUuY29tcHJlc3MpOgorICAgICAgICAoZW5jb2RlLmxvY2FsKToK
KyAgICAgICAgKGVuY29kZS5jb2RlKToKKyAgICAgICAgKGVuY29kZS5jb2RlX3NlY3Rpb24pOgor
ICAgICAgICAoZW5jb2RlLnNlZ21lbnQpOgorICAgICAgICAoZW5jb2RlLnRhYmxlX3NlZ21lbnQp
OgorICAgICAgICAoZW5jb2RlLmVsZW1fc2VjdGlvbik6CisgICAgICAgIChlbmNvZGUubWVtb3J5
X3NlZ21lbnQpOgorICAgICAgICAoZW5jb2RlLm1vZHVsZV8pOgorICAgICAgICAoTWFrZS53YXJu
KToKKyAgICAgICAgKE1ha2UuZXJyb3IpOgorICAgICAgICAoTWFrZSk6CisgICAgICAgIChwcmlu
dF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzKToKKyAgICAgICAgKE1ha2Uub2ZfYml0cyk6CisgICAg
ICAgIChNYWtlLnRvX2JpdHMpOgorICAgICAgICAoTWFrZS5pc19uYW4pOgorICAgICAgICAoTWFr
ZS5jYW5vbmljYWxpemVfbmFuKToKKyAgICAgICAgKE1ha2UuZGV0ZXJtaW5lX2JpbmFyeV9uYW4p
OgorICAgICAgICAoTWFrZS5kZXRlcm1pbmVfdW5hcnlfbmFuKToKKyAgICAgICAgKE1ha2UuYmlu
YXJ5KToKKyAgICAgICAgKE1ha2UudW5hcnkpOgorICAgICAgICAoTWFrZS5hZGQpOgorICAgICAg
ICAoTWFrZS5zdWIpOgorICAgICAgICAoTWFrZS5tdWwpOgorICAgICAgICAoTWFrZS5kaXYpOgor
ICAgICAgICAoTWFrZS5zcXJ0KToKKyAgICAgICAgKE1ha2UuY2VpbCk6CisgICAgICAgIChNYWtl
LmZsb29yKToKKyAgICAgICAgKE1ha2UudHJ1bmMpOgorICAgICAgICAoTWFrZS5uZWFyZXN0KToK
KyAgICAgICAgKE1ha2UubWluKToKKyAgICAgICAgKE1ha2UubWF4KToKKyAgICAgICAgKE1ha2Uu
YWJzKToKKyAgICAgICAgKE1ha2UubmVnKToKKyAgICAgICAgKE1ha2UuY29weXNpZ24pOgorICAg
ICAgICAoTWFrZS5lcSk6CisgICAgICAgIChNYWtlLm5lKToKKyAgICAgICAgKE1ha2UubHQpOgor
ICAgICAgICAoTWFrZS5ndCk6CisgICAgICAgIChNYWtlLmxlKToKKyAgICAgICAgKE1ha2UuZ2Up
OgorICAgICAgICAoTWFrZS5vZl9zaWdubGVzc19zdHJpbmcpOgorICAgICAgICAoTWFrZS5vZl9z
dHJpbmcpOgorICAgICAgICAoTWFrZS50b19zdHJpbmcpOgorICAgICAgICAoYWRkX3F1ZXVlKToK
KyAgICAgICAgKHBlZWtfcXVldWUpOgorICAgICAgICAodGFrZV9xdWV1ZSk6CisgICAgICAgIChw
cF9lbnF1ZXVlKToKKyAgICAgICAgKHBwX2NsZWFyX3F1ZXVlKToKKyAgICAgICAgKHBwX291dHB1
dF9zdHJpbmcpOgorICAgICAgICAoYnJlYWtfbmV3X2xpbmUpOgorICAgICAgICAoYnJlYWtfc2Ft
ZV9saW5lKToKKyAgICAgICAgKHBwX2ZvcmNlX2JyZWFrX2xpbmUpOgorICAgICAgICAoc3dpdGNo
LmFkZF90YWIpOgorICAgICAgICAoZWxzZS5zd2l0Y2guZmluZCk6CisgICAgICAgIChmb3JtYXRf
cHBfdG9rZW4pOgorICAgICAgICAoYWR2YW5jZV9sZWZ0KToKKyAgICAgICAgKGVucXVldWVfYWR2
YW5jZSk6CisgICAgICAgIChlbnF1ZXVlX3N0cmluZ19hcyk6CisgICAgICAgIChzZXRfc2l6ZSk6
CisgICAgICAgIChzY2FuX3B1c2gpOgorICAgICAgICAocHBfb3Blbl9ib3hfZ2VuKToKKyAgICAg
ICAgKHBwX2Nsb3NlX2JveCk6CisgICAgICAgIChwcF9vcGVuX3RhZyk6CisgICAgICAgIChwcF9j
bG9zZV90YWcpOgorICAgICAgICAocHBfc2V0X3ByaW50X3RhZ3MpOgorICAgICAgICAocHBfc2V0
X21hcmtfdGFncyk6CisgICAgICAgIChwcF9nZXRfcHJpbnRfdGFncyk6CisgICAgICAgIChwcF9n
ZXRfbWFya190YWdzKToKKyAgICAgICAgKHBwX3NldF90YWdzKToKKyAgICAgICAgKHBwX2dldF9m
b3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyk6CisgICAgICAgIChwcF9zZXRfZm9ybWF0dGVyX3RhZ19m
dW5jdGlvbnMpOgorICAgICAgICAocHBfcmluaXQpOgorICAgICAgICAocHBfZmx1c2hfcXVldWUp
OgorICAgICAgICAocHBfcHJpbnRfYXNfc2l6ZSk6CisgICAgICAgIChwcF9wcmludF9zdHJpbmcp
OgorICAgICAgICAocHBfcHJpbnRfaW50KToKKyAgICAgICAgKHBwX3ByaW50X2Zsb2F0KToKKyAg
ICAgICAgKHBwX3ByaW50X2Jvb2wpOgorICAgICAgICAocHBfb3Blbl9oYm94KToKKyAgICAgICAg
KHBwX29wZW5fdmJveCk6CisgICAgICAgIChwcF9vcGVuX2h2Ym94KToKKyAgICAgICAgKHBwX29w
ZW5faG92Ym94KToKKyAgICAgICAgKHBwX29wZW5fYm94KToKKyAgICAgICAgKHBwX3ByaW50X25l
d2xpbmUpOgorICAgICAgICAocHBfcHJpbnRfZmx1c2gpOgorICAgICAgICAocHBfZm9yY2VfbmV3
bGluZSk6CisgICAgICAgIChwcF9wcmludF9pZl9uZXdsaW5lKToKKyAgICAgICAgKHBwX3ByaW50
X2JyZWFrKToKKyAgICAgICAgKHBwX3ByaW50X3NwYWNlKToKKyAgICAgICAgKHBwX3ByaW50X2N1
dCk6CisgICAgICAgIChwcF9vcGVuX3Rib3gpOgorICAgICAgICAocHBfY2xvc2VfdGJveCk6Cisg
ICAgICAgIChwcF9wcmludF90YnJlYWspOgorICAgICAgICAocHBfcHJpbnRfdGFiKToKKyAgICAg
ICAgKHBwX3NldF90YWIpOgorICAgICAgICAocHBfcHJpbnRfbGlzdCk6CisgICAgICAgIChmbHVz
aCk6CisgICAgICAgIChwcF9wcmludF90ZXh0KToKKyAgICAgICAgKHBwX3NldF9tYXhfYm94ZXMp
OgorICAgICAgICAocHBfZ2V0X21heF9ib3hlcyk6CisgICAgICAgIChwcF9vdmVyX21heF9ib3hl
cyk6CisgICAgICAgIChwcF9nZXRfZWxsaXBzaXNfdGV4dCk6CisgICAgICAgIChwcF9saW1pdCk6
CisgICAgICAgIChwcF9zZXRfbWF4X2luZGVudCk6CisgICAgICAgIChwcF9nZXRfbWF4X2luZGVu
dCk6CisgICAgICAgIChwcF9zZXRfbWFyZ2luKToKKyAgICAgICAgKHBwX2dldF9tYXJnaW4pOgor
ICAgICAgICAocHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zKToKKyAgICAgICAgKHBwX2dl
dF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyk6CisgICAgICAgIChwcF9zZXRfZm9ybWF0dGVyX291
dHB1dF9mdW5jdGlvbnMpOgorICAgICAgICAocHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rp
b25zKToKKyAgICAgICAgKHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMpOgor
ICAgICAgICAocHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyk6CisgICAgICAg
IChkaXNwbGF5X25ld2xpbmUpOgorICAgICAgICAoZGlzcGxheV9ibGFua3MpOgorICAgICAgICAo
c3RhdGUuMTYpOgorICAgICAgICAoc3RhdGUuMTcpOgorICAgICAgICAoc3RhdGUuMTgpOgorICAg
ICAgICAoc3RhdGUuMTkpOgorICAgICAgICAocHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCk6
CisgICAgICAgIChkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcpOgorICAgICAgICAoZGVmYXVsdF9w
cF9tYXJrX2Nsb3NlX3RhZyk6CisgICAgICAgIChkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnKToK
KyAgICAgICAgKGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnKToKKyAgICAgICAgKHBwX21ha2Vf
Zm9ybWF0dGVyKToKKyAgICAgICAgKHBwZi4xOCk6CisgICAgICAgIChwcGYuMTkpOgorICAgICAg
ICAobWFrZV9mb3JtYXR0ZXIpOgorICAgICAgICAoZm9ybWF0dGVyX29mX291dF9jaGFubmVsKToK
KyAgICAgICAgKGZvcm1hdHRlcl9vZl9idWZmZXIpOgorICAgICAgICAoZmx1c2hfc3RyX2Zvcm1h
dHRlcik6CisgICAgICAgIChmbHVzaF9idWZfZm9ybWF0dGVyKToKKyAgICAgICAgKG9wZW5faGJv
eCk6CisgICAgICAgIChvcGVuX3Zib3gpOgorICAgICAgICAob3Blbl9odmJveCk6CisgICAgICAg
IChvcGVuX2hvdmJveCk6CisgICAgICAgIChvcGVuX2JveCk6CisgICAgICAgIChjbG9zZV9ib3gp
OgorICAgICAgICAob3Blbl90YWcpOgorICAgICAgICAoY2xvc2VfdGFnKToKKyAgICAgICAgKHBy
aW50X2FzKToKKyAgICAgICAgKHByaW50X3N0cmluZyk6CisgICAgICAgIChwcmludF9pbnQpOgor
ICAgICAgICAocHJpbnRfZmxvYXQpOgorICAgICAgICAocHJpbnRfYm9vbCk6CisgICAgICAgIChw
cmludF9jdXQpOgorICAgICAgICAocHJpbnRfc3BhY2UpOgorICAgICAgICAoZm9yY2VfbmV3bGlu
ZSk6CisgICAgICAgIChwcmludF9mbHVzaCk6CisgICAgICAgIChwcmludF9uZXdsaW5lKToKKyAg
ICAgICAgKHByaW50X2lmX25ld2xpbmUpOgorICAgICAgICAob3Blbl90Ym94KToKKyAgICAgICAg
KGNsb3NlX3Rib3gpOgorICAgICAgICAocHJpbnRfdGJyZWFrKToKKyAgICAgICAgKHNldF90YWIp
OgorICAgICAgICAocHJpbnRfdGFiKToKKyAgICAgICAgKHNldF9tYXJnaW4pOgorICAgICAgICAo
Z2V0X21hcmdpbik6CisgICAgICAgIChzZXRfbWF4X2luZGVudCk6CisgICAgICAgIChnZXRfbWF4
X2luZGVudCk6CisgICAgICAgIChzZXRfbWF4X2JveGVzKToKKyAgICAgICAgKGdldF9tYXhfYm94
ZXMpOgorICAgICAgICAob3Zlcl9tYXhfYm94ZXMpOgorICAgICAgICAoc2V0X2VsbGlwc2lzX3Rl
eHQpOgorICAgICAgICAoZ2V0X2VsbGlwc2lzX3RleHQpOgorICAgICAgICAoc2V0X2Zvcm1hdHRl
cl9vdXRfY2hhbm5lbCk6CisgICAgICAgIChzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMpOgor
ICAgICAgICAoZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zKToKKyAgICAgICAgKHNldF9mb3Jt
YXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyk6CisgICAgICAgIChnZXRfZm9ybWF0dGVyX291dHB1dF9m
dW5jdGlvbnMpOgorICAgICAgICAoc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyk6
CisgICAgICAgIChnZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKToKKyAgICAgICAg
KHNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyk6CisgICAgICAgIChnZXRfZm9ybWF0dGVyX3Rh
Z19mdW5jdGlvbnMpOgorICAgICAgICAoc2V0X3ByaW50X3RhZ3MpOgorICAgICAgICAoZ2V0X3By
aW50X3RhZ3MpOgorICAgICAgICAoc2V0X21hcmtfdGFncyk6CisgICAgICAgIChnZXRfbWFya190
YWdzKToKKyAgICAgICAgKHNldF90YWdzKToKKyAgICAgICAgKGNvbXB1dGVfdGFnKToKKyAgICAg
ICAgKG91dHB1dF9mb3JtYXR0aW5nX2xpdCk6CisgICAgICAgIChrZnByaW50Zik6CisgICAgICAg
IChpa2ZwcmludGYpOgorICAgICAgICAoZnByaW50Zik6CisgICAgICAgIChpZnByaW50Zik6Cisg
ICAgICAgIChwcmludGYpOgorICAgICAgICAoZXByaW50Zik6CisgICAgICAgIChrLnByaW1lKToK
KyAgICAgICAgKGtzcHJpbnRmKToKKyAgICAgICAgKHNwcmludGYpOgorICAgICAgICAoYXNwcmlu
dGYuay5wcmltZSk6CisgICAgICAgIChhc3ByaW50Zik6CisgICAgICAgIChrKToKKyAgICAgICAg
KGJwcmludGYpOgorICAgICAgICAoc3VjYyk6CisgICAgICAgIChwcmVkKToKKyAgICAgICAgKGFi
cyk6CisgICAgICAgIChsb2dub3QpOgorICAgICAgICAoTWFrZS5jbXBfdSk6CisgICAgICAgIChN
YWtlLmRpdnJlbV91KToKKyAgICAgICAgKE1ha2UuZGl2X3MpOgorICAgICAgICAoTWFrZS5kaXZf
dSk6CisgICAgICAgIChNYWtlLnJlbV9zKToKKyAgICAgICAgKE1ha2UucmVtX3UpOgorICAgICAg
ICAoTWFrZS5zaGlmdCk6CisgICAgICAgIChNYWtlLnNobCk6CisgICAgICAgIChNYWtlLnNocl9z
KToKKyAgICAgICAgKE1ha2Uuc2hyX3UpOgorICAgICAgICAoTWFrZS5jbGFtcF9yb3RhdGVfY291
bnQpOgorICAgICAgICAoTWFrZS5yb3RsKToKKyAgICAgICAgKE1ha2Uucm90cik6CisgICAgICAg
IChNYWtlLmxvb3ApOgorICAgICAgICAoTWFrZS5jbHopOgorICAgICAgICAoTWFrZS5jdHopOgor
ICAgICAgICAoTWFrZS5wb3BjbnQpOgorICAgICAgICAoTWFrZS5lcXopOgorICAgICAgICAoTWFr
ZS5sdF91KToKKyAgICAgICAgKE1ha2UubGVfdSk6CisgICAgICAgIChNYWtlLmd0X3UpOgorICAg
ICAgICAoTWFrZS5nZV91KToKKyAgICAgICAgKE1ha2Uub2ZfaW50X3UpOgorICAgICAgICAoTWFr
ZS50b19zdHJpbmdfdSk6CisgICAgICAgIChNYWtlLnJlcXVpcmUpOgorICAgICAgICAoTWFrZS5k
ZWNfZGlnaXQpOgorICAgICAgICAoTWFrZS5oZXhfZGlnaXQpOgorICAgICAgICAoTWFrZS5wYXJz
ZV9pbnQpOgorICAgICAgICAoTWFrZS5vZl9zdHJpbmdfcyk6CisgICAgICAgIChNYWtlLm9mX3N0
cmluZ191KToKKyAgICAgICAgKGNvbnZlcnRfcG9zKToKKyAgICAgICAgKGVycm9yX25lc3QpOgor
ICAgICAgICAodGV4dCk6CisgICAgICAgIChpbnRvcCk6CisgICAgICAgIChmbG9hdG9wKToKKyAg
ICAgICAgKG51bW9wKToKKyAgICAgICAgKG1lbXN6KToKKyAgICAgICAgKGV4dCk6CisgICAgICAg
ICh0b2tlbi5lbHNlLnN3aXRjaCk6CisgICAgICAgICh0b2tlbi5lbHNlLnN3aXRjaC4pOgorICAg
ICAgICAodG9rZW4pOgorICAgICAgICAoX19vY2FtbF9sZXhfY29tbWVudF9yZWMpOgorICAgICAg
ICAoZW5naW5lKToKKyAgICAgICAgKG5ld19lbmdpbmUpOgorICAgICAgICAoZnJvbV9mdW5jdGlv
bik6CisgICAgICAgIChmcm9tX2NoYW5uZWwpOgorICAgICAgICAoZnJvbV9zdHJpbmcpOgorICAg
ICAgICAobGV4ZW1lKToKKyAgICAgICAgKHN1Yl9sZXhlbWUpOgorICAgICAgICAoc3ViX2xleGVt
ZV9vcHQpOgorICAgICAgICAoc3ViX2xleGVtZV9jaGFyKToKKyAgICAgICAgKHN1Yl9sZXhlbWVf
Y2hhcl9vcHQpOgorICAgICAgICAobGV4ZW1lX2NoYXIpOgorICAgICAgICAobGV4ZW1lX3N0YXJ0
KToKKyAgICAgICAgKGxleGVtZV9lbmQpOgorICAgICAgICAobGV4ZW1lX3N0YXJ0X3ApOgorICAg
ICAgICAobGV4ZW1lX2VuZF9wKToKKyAgICAgICAgKG5ld19saW5lKToKKyAgICAgICAgKGZsdXNo
X2lucHV0KToKKyAgICAgICAgKHRha2UpOgorICAgICAgICAoZHJvcCk6CisgICAgICAgIChsYXN0
KToKKyAgICAgICAgKHNwbGl0X2xhc3QpOgorICAgICAgICAoaW5kZXhfb2YpOgorICAgICAgICAo
aW5kZXhfb2ZfaW50MzIpOgorICAgICAgICAoZGltKToKKyAgICAgICAgKHNldCAxKToKKyAgICAg
ICAgKGdldCAyKToKKyAgICAgICAgKGxvZzIpOgorICAgICAgICAoaXNfcG93ZXJfb2ZfdHdvKToK
KyAgICAgICAgKGxvb3ApOgorICAgICAgICAoYnJlYWt1cCk6CisgICAgICAgIChoZCk6CisgICAg
ICAgICh0bCk6CisgICAgICAgIChyZXZfYXBwZW5kKToKKyAgICAgICAgKHJldik6CisgICAgICAg
IChmbGF0dGVuKToKKyAgICAgICAgKHJldl9tYXApOgorICAgICAgICAobWFwMik6CisgICAgICAg
IChyZXZfbWFwMik6CisgICAgICAgIChpdGVyMik6CisgICAgICAgIChmb2xkX2xlZnQyKToKKyAg
ICAgICAgKGZvbGRfcmlnaHQyKToKKyAgICAgICAgKGZvcl9hbGwpOgorICAgICAgICAoZXhpc3Rz
KToKKyAgICAgICAgKGZvcl9hbGwyKToKKyAgICAgICAgKGV4aXN0czIpOgorICAgICAgICAobWVt
KToKKyAgICAgICAgKG1lbXEpOgorICAgICAgICAoYXNzb2MpOgorICAgICAgICAoYXNzcSk6Cisg
ICAgICAgIChtZW1fYXNzb2MpOgorICAgICAgICAobWVtX2Fzc3EpOgorICAgICAgICAocmVtb3Zl
X2Fzc29jKToKKyAgICAgICAgKHJlbW92ZV9hc3NxKToKKyAgICAgICAgKGZpbmQpOgorICAgICAg
ICAoZmluZF9hbGwpOgorICAgICAgICAocGFydGl0aW9uKToKKyAgICAgICAgKHNwbGl0KToKKyAg
ICAgICAgKGNvbWJpbmUpOgorICAgICAgICAoY2hvcCk6CisgICAgICAgIChyZXZfc29ydCk6Cisg
ICAgICAgIChzb3J0X3VuaXEpOgorICAgICAgICAoTWFrZS5oZWlnaHQpOgorICAgICAgICAoTWFr
ZS5jcmVhdGUpOgorICAgICAgICAoTWFrZS5zaW5nbGV0b24pOgorICAgICAgICAoTWFrZS5iYWwp
OgorICAgICAgICAoTWFrZS5pc19lbXB0eSk6CisgICAgICAgIChNYWtlLmZpbmQpOgorICAgICAg
ICAoTWFrZS5tZW0pOgorICAgICAgICAoTWFrZS5taW5fYmluZGluZyk6CisgICAgICAgIChNYWtl
Lm1heF9iaW5kaW5nKToKKyAgICAgICAgKE1ha2UucmVtb3ZlX21pbl9iaW5kaW5nKToKKyAgICAg
ICAgKE1ha2UucmVtb3ZlKToKKyAgICAgICAgKE1ha2UuaXRlcik6CisgICAgICAgIChNYWtlLm1h
cCk6CisgICAgICAgIChNYWtlLm1hcGkpOgorICAgICAgICAoTWFrZS5mb2xkKToKKyAgICAgICAg
KE1ha2UuZm9yX2FsbCk6CisgICAgICAgIChNYWtlLmV4aXN0cyk6CisgICAgICAgIChNYWtlLmFk
ZF9taW5fYmluZGluZyk6CisgICAgICAgIChNYWtlLmFkZF9tYXhfYmluZGluZyk6CisgICAgICAg
IChNYWtlLmpvaW4pOgorICAgICAgICAoTWFrZS5jb25jYXQpOgorICAgICAgICAoTWFrZS5jb25j
YXRfb3Jfam9pbik6CisgICAgICAgIChNYWtlLnNwbGl0KToKKyAgICAgICAgKE1ha2UubWVyZ2Up
OgorICAgICAgICAoTWFrZS5maWx0ZXIpOgorICAgICAgICAoTWFrZS5wYXJ0aXRpb24pOgorICAg
ICAgICAoTWFrZS5jb25zX2VudW0pOgorICAgICAgICAoTWFrZS5jb21wYXJlKToKKyAgICAgICAg
KE1ha2UuZXF1YWwpOgorICAgICAgICAoTWFrZS5jYXJkaW5hbCk6CisgICAgICAgIChNYWtlLmJp
bmRpbmdzX2F1eCk6CisgICAgICAgIChNYWtlLmJpbmRpbmdzKToKKyAgICAgICAgKGRvdWJsZV9m
aWVsZCk6CisgICAgICAgIChzZXRfZG91YmxlX2ZpZWxkKToKKyAgICAgICAgKG1hcnNoYWwpOgor
ICAgICAgICAodW5tYXJzaGFsKToKKyAgICAgICAgKGV4dGVuc2lvbl9zbG90KToKKyAgICAgICAg
KGV4dGVuc2lvbl9uYW1lKToKKyAgICAgICAgKGV4dGVuc2lvbl9pZCk6CisgICAgICAgIChpMzJf
Y29uc3QpOgorICAgICAgICAoaTY0X2NvbnN0KToKKyAgICAgICAgKGYzMl9jb25zdCk6CisgICAg
ICAgIChmNjRfY29uc3QpOgorICAgICAgICAoYmxvY2spOgorICAgICAgICAoYnIpOgorICAgICAg
ICAoYnJfaWYpOgorICAgICAgICAoYnJfdGFibGUpOgorICAgICAgICAoaWZfKToKKyAgICAgICAg
KGNhbGwpOgorICAgICAgICAoY2FsbF9pbmRpcmVjdCk6CisgICAgICAgIChnZXRfbG9jYWwpOgor
ICAgICAgICAoc2V0X2xvY2FsKToKKyAgICAgICAgKHRlZV9sb2NhbCk6CisgICAgICAgIChnZXRf
Z2xvYmFsKToKKyAgICAgICAgKHNldF9nbG9iYWwpOgorICAgICAgICAoaTMyX2xvYWQpOgorICAg
ICAgICAoaTY0X2xvYWQpOgorICAgICAgICAoZjMyX2xvYWQpOgorICAgICAgICAoZjY0X2xvYWQp
OgorICAgICAgICAoaTMyX2xvYWQ4X3MpOgorICAgICAgICAoaTMyX2xvYWQ4X3UpOgorICAgICAg
ICAoaTMyX2xvYWQxNl9zKToKKyAgICAgICAgKGkzMl9sb2FkMTZfdSk6CisgICAgICAgIChpNjRf
bG9hZDhfcyk6CisgICAgICAgIChpNjRfbG9hZDhfdSk6CisgICAgICAgIChpNjRfbG9hZDE2X3Mp
OgorICAgICAgICAoaTY0X2xvYWQxNl91KToKKyAgICAgICAgKGk2NF9sb2FkMzJfcyk6CisgICAg
ICAgIChpNjRfbG9hZDMyX3UpOgorICAgICAgICAoaTMyX3N0b3JlKToKKyAgICAgICAgKGk2NF9z
dG9yZSk6CisgICAgICAgIChmMzJfc3RvcmUpOgorICAgICAgICAoZjY0X3N0b3JlKToKKyAgICAg
ICAgKGkzMl9zdG9yZTgpOgorICAgICAgICAoaTMyX3N0b3JlMTYpOgorICAgICAgICAoaTY0X3N0
b3JlOCk6CisgICAgICAgIChpNjRfc3RvcmUxNik6CisgICAgICAgIChpNjRfc3RvcmUzMik6Cisg
ICAgICAgIChwYXJzZSk6CisgICAgICAgIChzdHJpbmdfdG8pOgorICAgICAgICAoc3RyaW5nX3Rv
X3NjcmlwdCk6CisgICAgICAgIChzdHJpbmdfdG9fbW9kdWxlKToKKyAgICAgICAgKHBhcnNlX2Vy
cm9yKToKKyAgICAgICAgKHBvc2l0aW9uX3RvX3Bvcyk6CisgICAgICAgIChwb3NpdGlvbnNfdG9f
cmVnaW9uKToKKyAgICAgICAgKGF0aSk6CisgICAgICAgIChuYXQpOgorICAgICAgICAobmF0MzIp
OgorICAgICAgICAoZW1wdHlfY29udGV4dCk6CisgICAgICAgIChlbnRlcl9mdW5jKToKKyAgICAg
ICAgKHR5cGVfKToKKyAgICAgICAgKGxvb2t1cCk6CisgICAgICAgIChsYWJlbCk6CisgICAgICAg
IChhbm9uX3R5cGUpOgorICAgICAgICAoYmluZCk6CisgICAgICAgIChiaW5kX2Z1bmMpOgorICAg
ICAgICAoYmluZF9sb2NhbCk6CisgICAgICAgIChiaW5kX2dsb2JhbCk6CisgICAgICAgIChiaW5k
X3RhYmxlKToKKyAgICAgICAgKGJpbmRfbWVtb3J5KToKKyAgICAgICAgKGFub24pOgorICAgICAg
ICAoYW5vbl9mdW5jKToKKyAgICAgICAgKGFub25fbG9jYWxzKToKKyAgICAgICAgKGFub25fZ2xv
YmFsKToKKyAgICAgICAgKGFub25fdGFibGUpOgorICAgICAgICAoYW5vbl9tZW1vcnkpOgorICAg
ICAgICAoYW5vbl9sYWJlbCk6CisgICAgICAgIChleHBsaWNpdF9zaWcpOgorICAgICAgICAoaW5s
aW5lX3R5cGUpOgorICAgICAgICAoeXlhY3QpOgorICAgICAgICAoc2NyaXB0MSk6CisgICAgICAg
IChtb2R1bGUxKToKKyAgICAgICAgKGdyb3dfc3RhY2tzKToKKyAgICAgICAgKGNsZWFyX3BhcnNl
cik6CisgICAgICAgIChjdXJyZW50X2xvb2thaGVhZF9mdW4pOgorICAgICAgICAoY2F0Y2guZWxz
ZS5jdXJyZW50X2xvb2thaGVhZF9mdW4uMCk6CisgICAgICAgICh5eXBhcnNlKToKKyAgICAgICAg
KHBlZWtfdmFsKToKKyAgICAgICAgKHN5bWJvbF9zdGFydF9wb3MpOgorICAgICAgICAoc3ltYm9s
X2VuZF9wb3MpOgorICAgICAgICAocmhzX3N0YXJ0X3Bvcyk6CisgICAgICAgIChyaHNfZW5kX3Bv
cyk6CisgICAgICAgIChzeW1ib2xfc3RhcnQpOgorICAgICAgICAoc3ltYm9sX2VuZCk6CisgICAg
ICAgIChyaHNfc3RhcnQpOgorICAgICAgICAocmhzX2VuZCk6CisgICAgICAgIChpc19jdXJyZW50
X2xvb2thaGVhZCk6CisgICAgICAgIChmYWlsd2l0aCk6CisgICAgICAgIChpbnZhbGlkX2FyZyk6
CisgICAgICAgIChtaW4pOgorICAgICAgICAobWF4KToKKyAgICAgICAgKGxub3QpOgorICAgICAg
ICAoY2hhcl9vZl9pbnQpOgorICAgICAgICAoc3RyaW5nX29mX2Jvb2wpOgorICAgICAgICAoYm9v
bF9vZl9zdHJpbmcpOgorICAgICAgICAoc3RyaW5nX29mX2ludCk6CisgICAgICAgICh2YWxpZF9m
bG9hdF9sZXhlbSk6CisgICAgICAgIChzdHJpbmdfb2ZfZmxvYXQpOgorICAgICAgICAob3Blbl9v
dXRfZ2VuKToKKyAgICAgICAgKG9wZW5fb3V0KToKKyAgICAgICAgKG9wZW5fb3V0X2Jpbik6Cisg
ICAgICAgIChmbHVzaF9hbGwpOgorICAgICAgICAob3V0cHV0X2J5dGVzKToKKyAgICAgICAgKG91
dHB1dF9zdHJpbmcpOgorICAgICAgICAob3V0cHV0KToKKyAgICAgICAgKG91dHB1dF9zdWJzdHJp
bmcpOgorICAgICAgICAob3V0cHV0X3ZhbHVlKToKKyAgICAgICAgKGNsb3NlX291dCk6CisgICAg
ICAgIChjbG9zZV9vdXRfbm9lcnIpOgorICAgICAgICAob3Blbl9pbl9nZW4pOgorICAgICAgICAo
b3Blbl9pbik6CisgICAgICAgIChvcGVuX2luX2Jpbik6CisgICAgICAgIChpbnB1dCk6CisgICAg
ICAgIChlbHNlLnIpOgorICAgICAgICAodW5zYWZlX3JlYWxseV9pbnB1dCk6CisgICAgICAgIChy
ZWFsbHlfaW5wdXQpOgorICAgICAgICAocmVhbGx5X2lucHV0X3N0cmluZyk6CisgICAgICAgIChp
bnB1dF9saW5lLmJ1aWxkX3Jlc3VsdCk6CisgICAgICAgIChpbnB1dF9saW5lLm4pOgorICAgICAg
ICAoaW5wdXRfbGluZS5zY2FuKToKKyAgICAgICAgKGlucHV0X2xpbmUpOgorICAgICAgICAoY2xv
c2VfaW5fbm9lcnIpOgorICAgICAgICAocHJpbnRfYnl0ZXMpOgorICAgICAgICAocHJpbnRfZW5k
bGluZSk6CisgICAgICAgIChwcmVycl9jaGFyKToKKyAgICAgICAgKHByZXJyX3N0cmluZyk6Cisg
ICAgICAgIChwcmVycl9ieXRlcyk6CisgICAgICAgIChwcmVycl9pbnQpOgorICAgICAgICAocHJl
cnJfZmxvYXQpOgorICAgICAgICAocHJlcnJfZW5kbGluZSk6CisgICAgICAgIChwcmVycl9uZXds
aW5lKToKKyAgICAgICAgKHJlYWRfbGluZSk6CisgICAgICAgIChyZWFkX2ludCk6CisgICAgICAg
IChyZWFkX2Zsb2F0KToKKyAgICAgICAgKHN0cmluZ19vZl9mb3JtYXQpOgorICAgICAgICAoYXRf
ZXhpdC5leGl0X2Z1bmN0aW9uLjApOgorICAgICAgICAoYXRfZXhpdCk6CisgICAgICAgIChkb19h
dF9leGl0KToKKyAgICAgICAgKGV4aXQpOgorICAgICAgICAob3V0cHV0X2JpbmFyeV9pbnQpOgor
ICAgICAgICAoc2Vla19vdXQpOgorICAgICAgICAocG9zX291dCk6CisgICAgICAgIChvdXRfY2hh
bm5lbF9sZW5ndGgpOgorICAgICAgICAoc2V0X2JpbmFyeV9tb2RlX291dCk6CisgICAgICAgIChp
bnB1dF9iaW5hcnlfaW50KToKKyAgICAgICAgKGlucHV0X3ZhbHVlKToKKyAgICAgICAgKHNlZWtf
aW4pOgorICAgICAgICAocG9zX2luKToKKyAgICAgICAgKGluX2NoYW5uZWxfbGVuZ3RoKToKKyAg
ICAgICAgKGNsb3NlX2luKToKKyAgICAgICAgKHNldF9iaW5hcnlfbW9kZV9pbik6CisgICAgICAg
IChMYXJnZUZpbGVfMDAwKToKKyAgICAgICAgKExhcmdlRmlsZV8wMDEpOgorICAgICAgICAoTGFy
Z2VGaWxlXzAwMik6CisgICAgICAgIChMYXJnZUZpbGVfMDAzKToKKyAgICAgICAgKExhcmdlRmls
ZV8wMDQpOgorICAgICAgICAoTGFyZ2VGaWxlXzAwNSk6CisgICAgICAgIChrYnByaW50Zik6Cisg
ICAgICAgIChwbHVzKToKKyAgICAgICAgKHBwKToKKyAgICAgICAgKHByaW50KToKKyAgICAgICAg
KHN0cmluZ19vZl9wb3MpOgorICAgICAgICAoc3RyaW5nX29mX3JlZ2lvbik6CisgICAgICAgIChl
c2NhcGVkLm5lZWRzX2VzY2FwZSk6CisgICAgICAgIChzZXRfc2lnbmFsKToKKyAgICAgICAgKGNh
dGNoX2JyZWFrKToKKyAgICAgICAgKHNpemUpOgorICAgICAgICAoc3RyaW5nX29mX3ZhbHVlX3R5
cGUpOgorICAgICAgICAoc3RyaW5nX29mX3ZhbHVlX3R5cGVzKToKKyAgICAgICAgKHN0cmluZ19v
Zl9lbGVtX3R5cGUpOgorICAgICAgICAoc3RyaW5nX29mX2xpbWl0cyk6CisgICAgICAgIChzdHJp
bmdfb2ZfdGFibGVfdHlwZSk6CisgICAgICAgIChzdHJpbmdfb2ZfZ2xvYmFsX3R5cGUpOgorICAg
ICAgICAoc3RyaW5nX29mX3N0YWNrX3R5cGUpOgorICAgICAgICAoc3RyaW5nX29mX2Z1bmNfdHlw
ZSk6CisgICAgICAgICh0eXBlX29mKToKKyAgICAgICAgKGRlZmF1bHRfdmFsdWUpOgorICAgICAg
ICAodmFsdWVfb2ZfYm9vbCk6CisgICAgICAgIChzdHJpbmdfb2ZfdmFsdWVzKToKKyAgICAgICAg
KHRvX3ZhbHVlKToKKyAgICAgICAgKG9mX3ZhbHVlKToKKyAgICAgICAgKGcpOgorICAgICAgICAo
YmluYXJ5KToKKyAgICAgICAgKGJ5dGVzKToKKyAgICAgICAgKiB3YXNtL3JldHVybi1jYWxsLXNw
ZWMtdGVzdHMvcmV0dXJuX2NhbGwud2FzdC5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9yZXR1
cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVybl9jYWxsX2luZGlyZWN0Lndhc3QuanM6IEFkZGVkLgor
ICAgICAgICAqIHdhc20vcmV0dXJuLWNhbGwvcmV0dXJuLWNhbGwtaW5kaXJlY3QuanM6IEFkZGVk
LgorICAgICAgICAobGV0Lmluc3QwX2Z1bmN0aW9ucy5sZXQuaW5zdDFfZnVuY3Rpb25zLmxldC5p
bnN0Ml9mdW5jdGlvbnMuY29uc3QuY3JlYXRlVGFpbEZ1bmN0aW9uKToKKyAgICAgICAgKGNvbnN0
LmNyZWF0ZU1haW4pOgorICAgICAgICAoY29uc3QuY3JlYXRlRW50cnlwb2ludCk6CisgICAgICAg
IChjb25zdC5jcmVhdGVUcmFtcG9saW5lKToKKyAgICAgICAgKGNvbnN0LnJ1blRlc3QpOgorICAg
ICAgICAoY29uc3QubGhzUmVzdWx0LnJ1blRlc3QudHJ1ZS5jb25zdC5yaHNSZXN1bHQucnVuVGVz
dC5mYWxzZSk6CisgICAgICAgICogd2FzbS9yZXR1cm4tY2FsbC9yZXR1cm4tY2FsbC11dGlscy5q
czogQWRkZWQuCisgICAgICAgIChleHBvcnQuY29uc3QudHJ5UmV0dXJuQ2FsbCk6CisgICAgICAg
IChleHBvcnQuY29uc3QudHJ5UmV0dXJuQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKGV4cG9ydC5j
b25zdC5jcmVhdGVGdW5jdGlvbik6CisgICAgICAgIChleHBvcnQuY29uc3QuY3JlYXRlRXhwb3J0
cyk6CisgICAgICAgIChleHBvcnQuY29uc3QuY3JlYXRlVHlwZXMpOgorICAgICAgICAoZXhwb3J0
LmNvbnN0LmNyZWF0ZUNvZGUpOgorICAgICAgICAqIHdhc20vcmV0dXJuLWNhbGwvcmV0dXJuLWNh
bGwuanM6IEFkZGVkLgorICAgICAgICAobGV0LmZ1bmN0aW9ucy5sZXQuZW50cnlwb2ludHMuY29u
c3QucG9wdWxhdGVTdGFja0kzMik6CisgICAgICAgIChjb25zdC5jcmVhdGVUYWlsRnVuY3Rpb24p
OgorICAgICAgICAoY29uc3QuZ2VuZXJhdGVBcmd1bWVudHMpOgorICAgICAgICAoY29uc3QuY3Jl
YXRlU2lnbmF0dXJlKToKKyAgICAgICAgKGNvbnN0LmNyZWF0ZUNhbGxlcik6CisgICAgICAgIChj
b25zdC5jcmVhdGVCdWlsZGVyKToKKyAgICAgICAgKGkuY29uc3QubGhzRW50cnlwb2ludC5saHMu
ZXhwb3J0cy5jYWxsZXJOYW1lLmNvbnN0LnJoc0VudHJ5cG9pbnQucmhzLmV4cG9ydHMuY2FsbGVy
TmFtZS5jb25zdC5wYXJhbXMuZ2VuZXJhdGVBcmd1bWVudHMuY2FsbGVyLnNpZ25hdHVyZS5wYXJh
bXMuY29uc3QubGhzUmVzdWx0Lmxoc0VudHJ5cG9pbnQucGFyYW1zLmNvbnN0LnJoc1Jlc3VsdC5y
aHNFbnRyeXBvaW50LnBhcmFtcyk6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMjIt
MDQtMjcgIEFuZ2Vsb3MgT2lrb25vbW9wb3Vsb3MgIDxhbmdlbG9zQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVW5za2lwIGZsYWt5IHRlc3Qgb24gbWlwcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNt
LnlhbWwgYi9KU1Rlc3RzL3dhc20ueWFtbAppbmRleCA5Y2Q0MGViZjk4YjkzOWYxYjBmN2I3NDAy
ZTZkMDE1MTMwYTQ5NDgyLi42ZGRhMjhmMjYxNWQxMjQ5YWRhZmQ2MTlhODNhYzg4NTEyZGIxNTY1
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20ueWFtbAorKysgYi9KU1Rlc3RzL3dhc20ueWFtbApA
QCAtMjk1LDYgKzI5NSwxMyBAQAogLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvdXRmOC1pbnZhbGlk
LWVuY29kaW5nLndhc3QuanMKICAgY21kOiBydW5XZWJBc3NlbWJseVNwZWNUZXN0IDpub3JtYWwK
IAorLSBwYXRoOiB3YXNtL3JldHVybi1jYWxsCisgIGNtZDogcnVuV2ViQXNzZW1ibHlSZXR1cm5D
YWxsIDpxdWljaworLSBwYXRoOiB3YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2Nh
bGwud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5UmV0dXJuQ2FsbFNwZWNUZXN0IDpxdWlj
aworLSBwYXRoOiB3YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGxfaW5kaXJl
Y3Qud2FzdC5qcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5UmV0dXJuQ2FsbFNwZWNUZXN0IDpxdWlj
aworCiAtIHBhdGg6IHdhc20vbW9kdWxlcy9ydW4tZnJvbS13YXNtLndhc20KICAgY21kOiBydW5X
ZWJBc3NlbWJseQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1o
YXJuZXNzLmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZWVlYjU5MzE2ZTAyNGVlMjdmY2UzZTEwZjQyYTMzZTk4NDNjYzMyCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy5qcwpAQCAt
MCwwICsxLDM4IEBACisidXNlIHN0cmljdCI7CisKKy8vIFRoaXMgaXMgb3VyIG5pZnR5IHdheSB0
byBtYWtlIG1vZHVsZXMgc3luY2hyb25vdXMuCitsZXQgYXNzZXJ0OworaW1wb3J0KCcuL2Fzc2Vy
dC5qcycpLnRoZW4oKG1vZHVsZSkgPT4geworICAgIGFzc2VydCA9IG1vZHVsZTsKK30sICR2bS5j
cmFzaCk7CitkcmFpbk1pY3JvdGFza3MoKTsKKworZnVuY3Rpb24gdGVzdChmdW5jLCBkZXNjcmlw
dGlvbikgeworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIHByaW50KCJVbmV4cGVjdGVkIGV4Y2VwdGlvbjoiLCBkZXNjcmlwdGlvbik7CisgICAg
ICAgIHRocm93IGU7CisgICAgfQorfQorCitmdW5jdGlvbiBwcm9taXNlX3Rlc3QoZnVuYywgZGVz
Y3JpcHRpb24pIHsKKyAgICBhc3NlcnQuYXN5bmNUZXN0KGZ1bmMoKSk7Cit9OworCitsZXQgYXNz
ZXJ0X2VxdWFscyA9IGFzc2VydC5lcTsKK2xldCBhc3NlcnRfdHJ1ZSA9ICh4KSA9PiBhc3NlcnQu
ZXEoeCx0cnVlKTsKK2xldCBhc3NlcnRfZmFsc2UgPSAoeCkgPT4gYXNzZXJ0LmVxKHgsZmFsc2Up
OworbGV0IGFzc2VydF91bnJlYWNoZWQgPSAoKSA9PiB7CisgICAgdGhyb3cgbmV3IEVycm9yKCJT
aG91bGQgaGF2ZSBiZWVuIHVucmVhY2hhYmxlIik7Cit9OworCitsZXQgY29uc29sZSA9IHsKKyAg
ICBsb2coLi4uYXJncykgeworICAgICAgICBwcmludCguLi5hcmdzKTsKKyAgICB9Cit9OworCits
b2FkKCIuL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9zeW5jX2luZGV4LmpzIiwgImNhbGxlciBy
ZWxhdGl2ZSIpOworbG9hZCgiLi9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFu
dHMuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7Citsb2FkKCIuL3JldHVybi1jYWxsLXNwZWMtaGFy
bmVzcy93YXNtLW1vZHVsZS1idWlsZGVyLmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9hc3luY19pbmRleC5q
cyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3MvYXN5bmNfaW5kZXguanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzIwMDAxOWFjNjk5OTA0NGVmOTUwNGZmMDgxMThjNzM0YzdlMGIxNgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3MvYXN5
bmNfaW5kZXguanMKQEAgLTAsMCArMSw0MjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxOCBXZWJB
c3NlbWJseSBDb21tdW5pdHkgR3JvdXAgcGFydGljaXBhbnRzCisgKgorICogTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisg
KiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICog
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworInVzZSBzdHJpY3Qi
OworCitsZXQgdGVzdE51bSA9IChmdW5jdGlvbigpIHsKKyAgbGV0IGNvdW50ID0gMTsKKyAgcmV0
dXJuIGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBgIyR7Y291bnQrK30gYDsKKyAgfTsKK30pKCk7
CisKK2Z1bmN0aW9uIHVuaXF1ZVRlc3QoZnVuYywgZGVzYykgeworICB0ZXN0KGZ1bmMsIHRlc3RO
dW0oKSArIGRlc2MpOworfQorCisvLyBXUFQncyBhc3NlcnRfdGhyb3cgdXNlcyBhIGxpc3Qgb2Yg
cHJlZGVmaW5lZCwgaGFyZGNvZGVkIGtub3duIGVycm9ycy4gU2luY2UKKy8vIGl0IGlzIG5vdCBh
d2FyZSBvZiB0aGUgV2ViQXNzZW1ibHkgZXJyb3IgdHlwZXMgKHlldCksIGltcGxlbWVudCBvdXIg
b3duCisvLyB2ZXJzaW9uLgorZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGZ1bmMsIGVycikgeworICBs
ZXQgY2F1Z2h0ID0gZmFsc2U7CisgIHRyeSB7CisgICAgZnVuYygpOworICB9IGNhdGNoIChlKSB7
CisgICAgYXNzZXJ0X3RydWUoCisgICAgICBlIGluc3RhbmNlb2YgZXJyLAorICAgICAgYGV4cGVj
dGVkICR7ZXJyLm5hbWV9LCBvYnNlcnZlZCAke2UuY29uc3RydWN0b3IubmFtZX1gCisgICAgKTsK
KyAgICBjYXVnaHQgPSB0cnVlOworICB9CisgIGFzc2VydF90cnVlKGNhdWdodCwgdGVzdE51bSgp
ICsgImFzc2VydFRocm93cyBtdXN0IGNhdGNoIGFueSBlcnJvci4iKTsKK30KKworLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFdBU1QgSEFSTkVT
UyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCisKK2NvbnN0IEVYUEVDVF9JTlZBTElEID0gZmFsc2U7CisKKy8qIERBVEEgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKi8KKworbGV0IGV4dGVybnJlZnMgPSB7fTsKK2xldCBleHRlcm5zeW0gPSBTeW1ib2wo
ImV4dGVybnJlZiIpOworZnVuY3Rpb24gZXh0ZXJucmVmKHMpIHsKKyAgaWYgKCEgKHMgaW4gZXh0
ZXJucmVmcykpIGV4dGVybnJlZnNbc10gPSB7W2V4dGVybnN5bV06IHN9OworICByZXR1cm4gZXh0
ZXJucmVmc1tzXTsKK30KK2Z1bmN0aW9uIGlzX2V4dGVybnJlZih4KSB7CisgIHJldHVybiAoeCAh
PT0gbnVsbCAmJiBleHRlcm5zeW0gaW4geCkgPyAxIDogMDsKK30KK2Z1bmN0aW9uIGlzX2Z1bmNy
ZWYoeCkgeworICByZXR1cm4gdHlwZW9mIHggPT09ICJmdW5jdGlvbiIgPyAxIDogMDsKK30KK2Z1
bmN0aW9uIGVxX2V4dGVybnJlZih4LCB5KSB7CisgIHJldHVybiB4ID09PSB5ID8gMSA6IDA7Cit9
CitmdW5jdGlvbiBlcV9mdW5jcmVmKHgsIHkpIHsKKyAgcmV0dXJuIHggPT09IHkgPyAxIDogMDsK
K30KKworLy8gRGVmYXVsdCBpbXBvcnRzLgordmFyIHJlZ2lzdHJ5ID0ge307CisKKy8vIEFsbCB0
ZXN0cyBydW4gYXN5bmNocm9ub3VzbHkgYW5kIHJldHVybiB0aGVpciByZXN1bHRzIGFzIHByb21p
c2VzLiBUbyBlbnN1cmUKKy8vIHRoYXQgYWxsIHRlc3RzIGV4ZWN1dGUgaW4gdGhlIGNvcnJlY3Qg
b3JkZXIsIHdlIGNoYWluIHRoZSBwcm9taXNlcyB0b2dldGhlcgorLy8gc28gdGhhdCBhIHRlc3Qg
aXMgb25seSBleGVjdXRlZCB3aGVuIGFsbCBwcmV2aW91cyB0ZXN0cyBoYXZlIGZpbmlzaGVkIHRo
ZWlyCisvLyBleGVjdXRpb24uCitsZXQgY2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTsKKworLy8g
UmVzZXRzIHRoZSByZWdpc3RyeSBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgV1BUIHRlc3RzLgorZnVu
Y3Rpb24gcmVpbml0aWFsaXplUmVnaXN0cnkoKSB7CisgIGlmICh0eXBlb2YgV2ViQXNzZW1ibHkg
PT09ICJ1bmRlZmluZWQiKSByZXR1cm47CisKKyAgY2hhaW4gPSBjaGFpbi50aGVuKF8gPT4gewor
ICAgIGxldCBzcGVjdGVzdCA9IHsKKyAgICAgIGV4dGVybnJlZjogZXh0ZXJucmVmLAorICAgICAg
aXNfZXh0ZXJucmVmOiBpc19leHRlcm5yZWYsCisgICAgICBpc19mdW5jcmVmOiBpc19mdW5jcmVm
LAorICAgICAgZXFfZXh0ZXJucmVmOiBlcV9leHRlcm5yZWYsCisgICAgICBlcV9mdW5jcmVmOiBl
cV9mdW5jcmVmLAorICAgICAgcHJpbnQ6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAg
ICBwcmludF9pMzI6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICBwcmludF9pMzJf
ZjMyOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAorICAgICAgcHJpbnRfZjY0X2Y2NDogY29u
c29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgIHByaW50X2YzMjogY29uc29sZS5sb2cuYmlu
ZChjb25zb2xlKSwKKyAgICAgIHByaW50X2Y2NDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwK
KyAgICAgIGdsb2JhbF9pMzI6IDY2NiwKKyAgICAgIGdsb2JhbF9mMzI6IDY2NiwKKyAgICAgIGds
b2JhbF9mNjQ6IDY2NiwKKyAgICAgIHRhYmxlOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoeworICAg
ICAgICBpbml0aWFsOiAxMCwKKyAgICAgICAgbWF4aW11bTogMjAsCisgICAgICAgIGVsZW1lbnQ6
ICJhbnlmdW5jIgorICAgICAgfSksCisgICAgICBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1v
cnkoeyBpbml0aWFsOiAxLCBtYXhpbXVtOiAyIH0pCisgICAgfTsKKyAgICBsZXQgaGFuZGxlciA9
IHsKKyAgICAgIGdldCh0YXJnZXQsIHByb3ApIHsKKyAgICAgICAgcmV0dXJuIHByb3AgaW4gdGFy
Z2V0ID8gdGFyZ2V0W3Byb3BdIDoge307CisgICAgICB9CisgICAgfTsKKyAgICByZWdpc3RyeSA9
IG5ldyBQcm94eSh7IHNwZWN0ZXN0IH0sIGhhbmRsZXIpOworICB9KTsKKworICAvLyBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGdlbmVyYXRlZCBqcyB0ZXN0IGZp
bGUuIEJ5CisgIC8vIGFkZGluZyB0aGUgY2hhaW4gYXMgYSBwcm9taXNlX3Rlc3QgaGVyZSB3ZSBt
YWtlIHN1cmUgdGhhdCB0aGUgV1BUIGhhcm5lc3MKKyAgLy8gd2FpdHMgZm9yIGFsbCB0ZXN0cyBp
biB0aGUgY2hhaW4gdG8gZmluaXNoLgorICBwcm9taXNlX3Rlc3QoXyA9PiBjaGFpbiwgdGVzdE51
bSgpICsgIlJlaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBpbXBvcnRzIik7Cit9CisKK3JlaW5pdGlh
bGl6ZVJlZ2lzdHJ5KCk7CisKKy8qIFdBU1QgUE9MWUZJTEwgKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworZnVuY3Rpb24gYmlu
YXJ5KGJ5dGVzKSB7CisgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3Ro
KTsKKyAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBmb3IgKGxldCBpID0g
MDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2Rl
QXQoaSk7CisgIH0KKyAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLyoqCisgKiBSZXR1cm5zIGEgY29t
cGlsZWQgbW9kdWxlLCBvciB0aHJvd3MgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGF0IGNvbXBpbGF0
aW9uLgorICovCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBjb25z
dCB0ZXN0ID0gdmFsaWQKKyAgICA/ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgY29tcGlsYXRpb24g
c3VjY2VlZHMiCisgICAgOiAiVGVzdCB0aGF0IFdlYkFzc2VtYmx5IGNvbXBpbGF0aW9uIGZhaWxz
IjsKKyAgY29uc3QgbG9jID0gbmV3IEVycm9yKCkuc3RhY2sudG9TdHJpbmcoKS5yZXBsYWNlKCJF
cnJvciIsICIiKTsKKyAgbGV0IGJ1ZmZlciA9IGJpbmFyeShieXRlcyk7CisgIGxldCB2YWxpZGF0
ZWQgPSBXZWJBc3NlbWJseS52YWxpZGF0ZShidWZmZXIpOworCisgIHVuaXF1ZVRlc3QoXyA9PiB7
CisgICAgYXNzZXJ0X2VxdWFscyh2YWxpZCwgdmFsaWRhdGVkKTsKKyAgfSwgdGVzdCk7CisKKyAg
Y2hhaW4gPSBjaGFpbi50aGVuKF8gPT4gV2ViQXNzZW1ibHkuY29tcGlsZShidWZmZXIpKS50aGVu
KAorICAgIG1vZHVsZSA9PiB7CisgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICBhc3Nl
cnRfdHJ1ZSh2YWxpZCwgbG9jKTsKKyAgICAgIH0sIHRlc3QpOworICAgICAgcmV0dXJuIG1vZHVs
ZTsKKyAgICB9LAorICAgIGVycm9yID0+IHsKKyAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAg
ICAgIGFzc2VydF90cnVlKAorICAgICAgICAgICF2YWxpZCwKKyAgICAgICAgICBgV2ViQXNzZW1i
bHkuY29tcGlsZSBmYWlsZWQgdW5leHBlY3RlZGx5IHdpdGggJHtlcnJvcn0gYXQge2xvY31gCisg
ICAgICAgICk7CisgICAgICB9LCB0ZXN0KTsKKyAgICB9CisgICk7CisgIHJldHVybiBjaGFpbjsK
K30KKworZnVuY3Rpb24gYXNzZXJ0X2ludmFsaWQoYnl0ZXMpIHsKKyAgbW9kdWxlKGJ5dGVzLCBF
WFBFQ1RfSU5WQUxJRCk7Cit9CisKK2NvbnN0IGFzc2VydF9tYWxmb3JtZWQgPSBhc3NlcnRfaW52
YWxpZDsKKworZnVuY3Rpb24gaW5zdGFuY2UoYnl0ZXMsIGltcG9ydHMsIHZhbGlkID0gdHJ1ZSkg
eworICBjb25zdCB0ZXN0ID0gdmFsaWQKKyAgICA/ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgaW5z
dGFudGlhdGlvbiBzdWNjZWVkcyIKKyAgICA6ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgaW5zdGFu
dGlhdGlvbiBmYWlscyI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5n
KCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGNoYWluID0gUHJvbWlzZS5hbGwoW2ltcG9ydHMs
IGNoYWluXSkKKyAgICAudGhlbih2YWx1ZXMgPT4geworICAgICAgbGV0IGltcG9ydHMgPSB2YWx1
ZXNbMF0gPyB2YWx1ZXNbMF0gOiByZWdpc3RyeTsKKyAgICAgIHJldHVybiBXZWJBc3NlbWJseS5p
bnN0YW50aWF0ZShiaW5hcnkoYnl0ZXMpLCBpbXBvcnRzKTsKKyAgICB9KQorICAgIC50aGVuKAor
ICAgICAgcGFpciA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNz
ZXJ0X3RydWUodmFsaWQsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgICByZXR1cm4g
cGFpci5pbnN0YW5jZTsKKyAgICAgIH0sCisgICAgICBlcnJvciA9PiB7CisgICAgICAgIHVuaXF1
ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoCisgICAgICAgICAgICAhdmFsaWQs
CisgICAgICAgICAgICBgdW5leHBlY3RlZCBpbnN0YW50aWF0aW9uIGVycm9yLCBvYnNlcnZlZCAk
e2Vycm9yfSAke2xvY31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICAg
IHJldHVybiBlcnJvcjsKKyAgICAgIH0KKyAgICApOworICByZXR1cm4gY2hhaW47Cit9CisKK2Z1
bmN0aW9uIGV4cG9ydHMoaW5zdGFuY2UpIHsKKyAgcmV0dXJuIGluc3RhbmNlLnRoZW4oaW5zdCA9
PiB7CisgICAgcmV0dXJuIHsgbW9kdWxlOiBpbnN0LmV4cG9ydHMsIHNwZWN0ZXN0OiByZWdpc3Ry
eS5zcGVjdGVzdCB9OworICB9KTsKK30KKworZnVuY3Rpb24gY2FsbChpbnN0YW5jZSwgbmFtZSwg
YXJncykgeworICByZXR1cm4gUHJvbWlzZS5hbGwoW2luc3RhbmNlLCBjaGFpbl0pLnRoZW4odmFs
dWVzID0+IHsKKyAgICByZXR1cm4gdmFsdWVzWzBdLmV4cG9ydHNbbmFtZV0oLi4uYXJncyk7Cisg
IH0pOworfQorCitmdW5jdGlvbiBydW4oYWN0aW9uKSB7CisgIGNvbnN0IHRlc3QgPSAiUnVuIGEg
V2ViQXNzZW1ibHkgdGVzdCB3aXRob3V0IHNwZWNpYWwgYXNzZXJ0aW9ucyI7CisgIGNvbnN0IGxv
YyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7Cisg
IGNoYWluID0gUHJvbWlzZS5hbGwoW2NoYWluLCBhY3Rpb24oKV0pCisgICAgLnRoZW4oCisgICAg
ICBfID0+IHsKKyAgICAgICAgdW5pcXVlVGVzdChfID0+IHt9LCB0ZXN0KTsKKyAgICAgIH0sCisg
ICAgICBlcnJvciA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNz
ZXJ0X3RydWUoCisgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgIGB1bmV4cGVjdGVkIHJ1
bnRpbWUgZXJyb3IsIG9ic2VydmVkICR7ZXJyb3J9ICR7bG9jfWAKKyAgICAgICAgICApOworICAg
ICAgICB9LCAicnVuIik7CisgICAgICB9CisgICAgKQorICAgIC8vIENsZWFyIGFsbCBleGNlcHRp
b25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVkLgorICAgIC5jYXRjaChf
ID0+IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3RyYXAoYWN0aW9uKSB7CisgIGNvbnN0IHRl
c3QgPSAiVGVzdCB0aGF0IGEgV2ViQXNzZW1ibHkgY29kZSB0cmFwcyI7CisgIGNvbnN0IGxvYyA9
IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGNo
YWluID0gUHJvbWlzZS5hbGwoW2NoYWluLCBhY3Rpb24oKV0pCisgICAgLnRoZW4oCisgICAgICBy
ZXN1bHQgPT4geworICAgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICAgIGFzc2VydF90
cnVlKGZhbHNlLCBsb2MpOworICAgICAgICB9LCB0ZXN0KTsKKyAgICAgIH0sCisgICAgICBlcnJv
ciA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUo
CisgICAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwK
KyAgICAgICAgICAgIGBleHBlY3RlZCBydW50aW1lIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAk
e2xvY31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9CisgICAgKQor
ICAgIC8vIENsZWFyIGFsbCBleGNlcHRpb25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0
IGV4ZWN1dGVkLgorICAgIC5jYXRjaChfID0+IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3Jl
dHVybihhY3Rpb24sIC4uLmV4cGVjdGVkKSB7CisgIGNvbnN0IHRlc3QgPSAiVGVzdCB0aGF0IGEg
V2ViQXNzZW1ibHkgY29kZSByZXR1cm5zIGEgc3BlY2lmaWMgcmVzdWx0IjsKKyAgY29uc3QgbG9j
ID0gbmV3IEVycm9yKCkuc3RhY2sudG9TdHJpbmcoKS5yZXBsYWNlKCJFcnJvciIsICIiKTsKKyAg
Y2hhaW4gPSBQcm9taXNlLmFsbChbYWN0aW9uKCksIGNoYWluXSkKKyAgICAudGhlbigKKyAgICAg
IHZhbHVlcyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgaWYgKGFj
dHVhbCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBbXTsKKyAgICAgICAg
ICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGFjdHVhbCkpIHsKKyAgICAgICAgICAgIGFjdHVh
bCA9IFthY3R1YWxdOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoYWN0dWFsLmxlbmd0aCAh
PT0gZXhwZWN0ZWQubGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhwZWN0
ZWQubGVuZ3RoICsgIiB2YWx1ZShzKSBleHBlY3RlZCwgZ290ICIgKyBhY3R1YWwubGVuZ3RoKTsK
KyAgICAgICAgICB9CisgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3R1YWwubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRbaV0pIHsKKyAgICAgICAgICAg
ICAgY2FzZSAibmFuOmNhbm9uaWNhbCI6CisgICAgICAgICAgICAgIGNhc2UgIm5hbjphcml0aG1l
dGljIjoKKyAgICAgICAgICAgICAgY2FzZSAibmFuOmFueSI6CisgICAgICAgICAgICAgICAgLy8g
Tm90ZSB0aGF0IEpTIGNhbid0IHJlbGlhYmx5IGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBOYU4gdmFs
dWVzLAorICAgICAgICAgICAgICAgIC8vIHNvIHRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gdGVzdCB0
aGF0IGl0J3MgYSBjYW5vbmljYWwgTmFOLgorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKE51
bWJlci5pc05hTihhY3R1YWxbaV0pLCBgZXhwZWN0ZWQgTmFOLCBvYnNlcnZlZCAke2FjdHVhbFtp
XX0uYCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlICJyZWYu
ZnVuYyI6CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUodHlwZW9mIGFjdHVhbFtpXSA9PT0g
ImZ1bmN0aW9uIiwgYGV4cGVjdGVkIFdhc20gZnVuY3Rpb24sIGdvdCAke2FjdHVhbFtpXX1gKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgInJlZi5leHRlcm4i
OgorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGFjdHVhbFtpXSAhPT0gbnVsbCwgYGV4cGVj
dGVkIFdhc20gcmVmZXJlbmNlLCBnb3QgJHthY3R1YWxbaV19YCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSwgbG9jKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICB9CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfSwKKyAgICAgIGVycm9yID0+IHsKKyAg
ICAgICAgdW5pcXVlVGVzdChfID0+IHsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZSgKKyAgICAgICAg
ICAgIGZhbHNlLAorICAgICAgICAgICAgYHVuZXhwZWN0ZWQgcnVudGltZSBlcnJvciwgb2JzZXJ2
ZWQgJHtlcnJvcn0gJHtsb2N9YAorICAgICAgICAgICk7CisgICAgICAgIH0sIHRlc3QpOworICAg
ICAgfQorICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1
ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2xldCBT
dGFja092ZXJmbG93OwordHJ5IHsKKyAgKGZ1bmN0aW9uIGYoKSB7CisgICAgMSArIGYoKTsKKyAg
fSkoKTsKK30gY2F0Y2ggKGUpIHsKKyAgU3RhY2tPdmVyZmxvdyA9IGUuY29uc3RydWN0b3I7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydF9leGhhdXN0aW9uKGFjdGlvbikgeworICBjb25zdCB0ZXN0ID0g
IlRlc3QgdGhhdCBhIFdlYkFzc2VtYmx5IGNvZGUgZXhoYXV0cyB0aGUgc3RhY2sgc3BhY2UiOwor
ICBjb25zdCBsb2MgPSBuZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9y
IiwgIiIpOworICBjaGFpbiA9IFByb21pc2UuYWxsKFthY3Rpb24oKSwgY2hhaW5dKQorICAgIC50
aGVuKAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAg
YXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfSwKKyAg
ICAgIGVycm9yID0+IHsKKyAgICAgICAgdW5pcXVlVGVzdChfID0+IHsKKyAgICAgICAgICBhc3Nl
cnRfdHJ1ZSgKKyAgICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgU3RhY2tPdmVyZmxvdywKKyAg
ICAgICAgICAgIGBleHBlY3RlZCBydW50aW1lIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xv
Y31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9CisgICAgKQorICAg
IC8vIENsZWFyIGFsbCBleGNlcHRpb25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4
ZWN1dGVkLgorICAgIC5jYXRjaChfID0+IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3VubGlu
a2FibGUoYnl0ZXMpIHsKKyAgY29uc3QgdGVzdCA9ICJUZXN0IHRoYXQgYSBXZWJBc3NlbWJseSBt
b2R1bGUgaXMgdW5saW5rYWJsZSI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRv
U3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGluc3RhbmNlKGJ5dGVzLCByZWdpc3Ry
eSwgRVhQRUNUX0lOVkFMSUQpCisgICAgLnRoZW4oCisgICAgICByZXN1bHQgPT4geworICAgICAg
ICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICAgIGFzc2VydF90cnVlKAorICAgICAgICAgICAg
cmVzdWx0IGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAorICAgICAgICAgICAgYGV4
cGVjdGVkIGxpbmsgZXJyb3IsIG9ic2VydmVkICR7cmVzdWx0fSAke2xvY31gCisgICAgICAgICAg
KTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9LAorICAgICAgXyA9PiB7CisgICAgICAgIHVu
aXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAg
ICAgIH0sIHRlc3QpOworICAgICAgfQorICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9u
cywgc28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9
PiB7fSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF91bmluc3RhbnRpYWJsZShieXRlcykgeworICBj
b25zdCB0ZXN0ID0gIlRlc3QgdGhhdCBhIFdlYkFzc2VtYmx5IG1vZHVsZSBpcyB1bmluc3RhbnRp
YWJsZSI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFj
ZSgiRXJyb3IiLCAiIik7CisgIGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lOVkFM
SUQpCisgICAgLnRoZW4oCisgICAgICByZXN1bHQgPT4geworICAgICAgICB1bmlxdWVUZXN0KF8g
PT4geworICAgICAgICAgIGFzc2VydF90cnVlKAorICAgICAgICAgICAgcmVzdWx0IGluc3RhbmNl
b2YgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLAorICAgICAgICAgICAgYGV4cGVjdGVkIGxpbmsg
ZXJyb3IsIG9ic2VydmVkICR7cmVzdWx0fSAke2xvY31gCisgICAgICAgICAgKTsKKyAgICAgICAg
fSwgdGVzdCk7CisgICAgICB9LAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9
PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3Qp
OworICAgICAgfQorICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBz
dWJzZXF1ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisK
K2Z1bmN0aW9uIHJlZ2lzdGVyKG5hbWUsIGluc3RhbmNlKSB7CisgIGNvbnN0IHRlc3QgPQorICAg
ICJUZXN0IHRoYXQgdGhlIGV4cG9ydHMgb2YgYSBXZWJBc3NlbWJseSBtb2R1bGUgY2FuIGJlIHJl
Z2lzdGVyZWQiOworICBjb25zdCBsb2MgPSBuZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJl
cGxhY2UoIkVycm9yIiwgIiIpOworICBsZXQgc3RhY2sgPSBuZXcgRXJyb3IoKTsKKyAgY2hhaW4g
PSBQcm9taXNlLmFsbChbaW5zdGFuY2UsIGNoYWluXSkKKyAgICAudGhlbigKKyAgICAgIHZhbHVl
cyA9PiB7CisgICAgICAgIHJlZ2lzdHJ5W25hbWVdID0gdmFsdWVzWzBdLmV4cG9ydHM7CisgICAg
ICB9LAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAg
YXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfQorICAg
ICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRlc3Rz
IGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2Z1bmN0aW9uIGdldChp
bnN0YW5jZSwgbmFtZSkgeworICBjb25zdCB0ZXN0ID0gIlRlc3QgdGhhdCBhbiBleHBvcnQgb2Yg
YSBXZWJBc3NlbWJseSBpbnN0YW5jZSBjYW4gYmUgYWNxdWlyZWQiOworICBjb25zdCBsb2MgPSBu
ZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9yIiwgIiIpOworICBjaGFp
biA9IFByb21pc2UuYWxsKFtpbnN0YW5jZSwgY2hhaW5dKS50aGVuKAorICAgIHZhbHVlcyA9PiB7
CisgICAgICBsZXQgdiA9IHZhbHVlc1swXS5leHBvcnRzW25hbWVdOworICAgICAgcmV0dXJuICh2
IGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuR2xvYmFsKSA/IHYudmFsdWUgOiB2OworICAgIH0sCisg
ICAgXyA9PiB7CisgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShm
YWxzZSwgbG9jKTsKKyAgICAgIH0sIHRlc3QpOworICAgIH0KKyAgKTsKKyAgcmV0dXJuIGNoYWlu
OworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNz
L3N5bmNfaW5kZXguanMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3N5
bmNfaW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VkOWYyOTE1OTdjN2U0Y2ZiMzYwOTFmNGQ4ODEwYmFl
YTZjNGRlZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVj
LWhhcm5lc3Mvc3luY19pbmRleC5qcwpAQCAtMCwwICsxLDM4NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAyMDE3IFdlYkFzc2VtYmx5IENvbW11bml0eSBHcm91cCBwYXJ0aWNpcGFudHMKKyAqCisgKiBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisg
KiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisKKyd1
c2Ugc3RyaWN0JzsKKworbGV0IHRlc3ROdW0gPSAoZnVuY3Rpb24oKSB7CisgICAgbGV0IGNvdW50
ID0gMTsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBgIyR7Y291bnQr
K30gYDsKKyAgICB9Cit9KSgpOworCisvLyBXUFQncyBhc3NlcnRfdGhyb3cgdXNlcyBhIGxpc3Qg
b2YgcHJlZGVmaW5lZCwgaGFyZGNvZGVkIGtub3duIGVycm9ycy4gU2luY2UKKy8vIGl0IGlzIG5v
dCBhd2FyZSBvZiB0aGUgV2ViQXNzZW1ibHkgZXJyb3IgdHlwZXMgKHlldCksIGltcGxlbWVudCBv
dXIgb3duCisvLyB2ZXJzaW9uLgorZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGZ1bmMsIGVycikgewor
ICAgIGxldCBjYXVnaHQgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaChlKSB7CisgICAgICAgIGFzc2VydF90cnVlKGUgaW5zdGFuY2VvZiBlcnIsIGBleHBl
Y3RlZCAke2Vyci5uYW1lfSwgb2JzZXJ2ZWQgJHtlLmNvbnN0cnVjdG9yLm5hbWV9YCk7CisgICAg
ICAgIGNhdWdodCA9IHRydWU7CisgICAgfQorICAgIGFzc2VydF90cnVlKGNhdWdodCwgdGVzdE51
bSgpICsgImFzc2VydFRocm93cyBtdXN0IGNhdGNoIGFueSBlcnJvci4iKQorfQorCisvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBXQVNUIEhBUk5F
U1MgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCisKKy8vIEZvciBhc3NlcnRpb25zIGludGVybmFsIHRvIG91ciB0ZXN0IGhhcm5lc3Mu
CitmdW5jdGlvbiBfYXNzZXJ0KHgpIHsKKyAgICBpZiAoIXgpIHsKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBBc3NlcnRpb24gZmFpbHVyZTogJHt4fWApOworICAgIH0KK30KKworLy8gQSBzaW1w
bGUgc3VtIHR5cGUgdGhhdCBjYW4gZWl0aGVyIGJlIGEgdmFsaWQgVmFsdWUgb3IgYW4gRXJyb3Iu
CitmdW5jdGlvbiBSZXN1bHQodHlwZSwgbWF5YmVWYWx1ZSkgeworICAgIHRoaXMudmFsdWUgPSBt
YXliZVZhbHVlOworICAgIHRoaXMudHlwZSA9IHR5cGU7Cit9OworCitSZXN1bHQuVkFMVUUgPSAn
VkFMVUUnOworUmVzdWx0LkVSUk9SID0gJ0VSUk9SJzsKKworZnVuY3Rpb24gVmFsdWVSZXN1bHQo
dmFsKSB7IHJldHVybiBuZXcgUmVzdWx0KFJlc3VsdC5WQUxVRSwgdmFsKTsgfQorZnVuY3Rpb24g
RXJyb3JSZXN1bHQoZXJyKSB7IHJldHVybiBuZXcgUmVzdWx0KFJlc3VsdC5FUlJPUiwgZXJyKTsg
fQorCitSZXN1bHQucHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMu
dHlwZSA9PT0gUmVzdWx0LkVSUk9SOyB9CisKK2NvbnN0IEVYUEVDVF9JTlZBTElEID0gZmFsc2U7
CisKKy8qIERBVEEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworbGV0IGV4dGVybnJlZnMgPSB7fTsKK2xldCBl
eHRlcm5zeW0gPSBTeW1ib2woImV4dGVybnJlZiIpOworZnVuY3Rpb24gZXh0ZXJucmVmKHMpIHsK
KyAgaWYgKCEgKHMgaW4gZXh0ZXJucmVmcykpIGV4dGVybnJlZnNbc10gPSB7W2V4dGVybnN5bV06
IHN9OworICByZXR1cm4gZXh0ZXJucmVmc1tzXTsKK30KK2Z1bmN0aW9uIGlzX2V4dGVybnJlZih4
KSB7CisgIHJldHVybiAoeCAhPT0gbnVsbCAmJiBleHRlcm5zeW0gaW4geCkgPyAxIDogMDsKK30K
K2Z1bmN0aW9uIGlzX2Z1bmNyZWYoeCkgeworICByZXR1cm4gdHlwZW9mIHggPT09ICJmdW5jdGlv
biIgPyAxIDogMDsKK30KK2Z1bmN0aW9uIGVxX2V4dGVybnJlZih4LCB5KSB7CisgIHJldHVybiB4
ID09PSB5ID8gMSA6IDA7Cit9CitmdW5jdGlvbiBlcV9mdW5jcmVmKHgsIHkpIHsKKyAgcmV0dXJu
IHggPT09IHkgPyAxIDogMDsKK30KKworbGV0ICQkOworCisvLyBEZWZhdWx0IGltcG9ydHMuCit2
YXIgcmVnaXN0cnkgPSB7fTsKKworLy8gUmVzZXRzIHRoZSByZWdpc3RyeSBiZXR3ZWVuIHR3byBk
aWZmZXJlbnQgV1BUIHRlc3RzLgorZnVuY3Rpb24gcmVpbml0aWFsaXplUmVnaXN0cnkoKSB7Cisg
ICAgaWYgKHR5cGVvZiBXZWJBc3NlbWJseSA9PT0gJ3VuZGVmaW5lZCcpCisgICAgICAgIHJldHVy
bjsKKworICAgIGxldCBzcGVjdGVzdCA9IHsKKyAgICAgICAgZXh0ZXJucmVmOiBleHRlcm5yZWYs
CisgICAgICAgIGlzX2V4dGVybnJlZjogaXNfZXh0ZXJucmVmLAorICAgICAgICBpc19mdW5jcmVm
OiBpc19mdW5jcmVmLAorICAgICAgICBlcV9leHRlcm5yZWY6IGVxX2V4dGVybnJlZiwKKyAgICAg
ICAgZXFfZnVuY3JlZjogZXFfZnVuY3JlZiwKKyAgICAgICAgcHJpbnQ6IGNvbnNvbGUubG9nLmJp
bmQoY29uc29sZSksCisgICAgICAgIHByaW50X2kzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xl
KSwKKyAgICAgICAgcHJpbnRfaTMyX2YzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAg
ICAgICAgcHJpbnRfZjY0X2Y2NDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgICAg
cHJpbnRfZjMyOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAorICAgICAgICBwcmludF9mNjQ6
IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICAgIGdsb2JhbF9pMzI6IDY2NiwKKyAg
ICAgICAgZ2xvYmFsX2YzMjogNjY2LAorICAgICAgICBnbG9iYWxfZjY0OiA2NjYsCisgICAgICAg
IHRhYmxlOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDEwLCBtYXhpbXVtOiAyMCwg
ZWxlbWVudDogJ2FueWZ1bmMnfSksCisgICAgICAgIG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1l
bW9yeSh7aW5pdGlhbDogMSwgbWF4aW11bTogMn0pCisgICAgfTsKKyAgICBsZXQgaGFuZGxlciA9
IHsKKyAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkgeworICAgICAgICByZXR1cm4gKHByb3AgaW4g
dGFyZ2V0KSA/ICB0YXJnZXRbcHJvcF0gOiB7fTsKKyAgICAgIH0KKyAgICB9OworICAgIHJlZ2lz
dHJ5ID0gbmV3IFByb3h5KHtzcGVjdGVzdH0sIGhhbmRsZXIpOworfQorCityZWluaXRpYWxpemVS
ZWdpc3RyeSgpOworCisvKiBXQVNUIFBPTFlGSUxMICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2Z1bmN0aW9uIGJpbmFyeShi
eXRlcykgeworICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsK
KyAgICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2aWV3W2ldID0gYnl0ZXMuY2hh
ckNvZGVBdChpKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLyoqCisgKiBSZXR1
cm5zIGEgY29tcGlsZWQgbW9kdWxlLCBvciB0aHJvd3MgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGF0
IGNvbXBpbGF0aW9uLgorICovCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkg
eworICAgIGxldCBidWZmZXIgPSBiaW5hcnkoYnl0ZXMpOworICAgIGxldCB2YWxpZGF0ZWQ7CisK
KyAgICB0cnkgeworICAgICAgICB2YWxpZGF0ZWQgPSBXZWJBc3NlbWJseS52YWxpZGF0ZShidWZm
ZXIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXZWJBc3Nl
bWJseS52YWxpZGF0ZSB0aHJvd3MgJHt0eXBlb2YgZX06ICR7ZX0ke2Uuc3RhY2t9YCk7CisgICAg
fQorCisgICAgaWYgKHZhbGlkYXRlZCAhPT0gdmFsaWQpIHsKKyAgICAgICAgLy8gVHJ5IHRvIGdl
dCBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGZyb20gdGhlIFdlYkFzc2VtYmx5LkNvbXBp
bGVFcnJvci4KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1
bGUoYnVmZmVyKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKGUgaW5z
dGFuY2VvZiBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IpCisgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvcihgV2ViQXNzZW1ibHkudmFsaWRhdGUgZXJyb3I6
ICR7ZS50b1N0cmluZygpfSR7ZS5zdGFja31cbmApOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgV2ViQXNzZW1ibHkudmFsaWRhdGUgdGhyb3dzICR7
dHlwZW9mIGV9OiAke2V9JHtlLnN0YWNrfWApOworICAgICAgICB9CisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgV2ViQXNzZW1ibHkudmFsaWRhdGUgd2FzIGV4cGVjdGVkIHRvIGZhaWwsIGJ1dCBk
aWRuJ3RgKTsKKyAgICB9CisKKyAgICBsZXQgbW9kdWxlOworICAgIHRyeSB7CisgICAgICAgIG1v
ZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsKKyAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgaWYgKHZhbGlkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXZWJBc3Nl
bWJseS5Nb2R1bGUgY3RvciB1bmV4cGVjdGVkbHkgdGhyb3dzICR7dHlwZW9mIGV9OiAke2V9JHtl
LnN0YWNrfScpOworICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIHJldHVybiBtb2R1bGU7
Cit9CisKK2Z1bmN0aW9uIHVuaXF1ZVRlc3QoZnVuYywgZGVzYykgeworICAgIHRlc3QoZnVuYywg
dGVzdE51bSgpICsgZGVzYyk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9pbnZhbGlkKGJ5dGVzKSB7
CisgICAgdW5pcXVlVGVzdCgoKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtb2R1
bGUoYnl0ZXMsIC8qIHZhbGlkICovIGZhbHNlKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignZGlkIG5vdCBmYWlsJyk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYXNz
ZXJ0X3RydWUoZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgImV4cGVjdGVk
IGludmFsaWQgZmFpbHVyZToiKTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRo
YXQgc2hvdWxkIGJlIGludmFsaWQgb3IgbWFsZm9ybWVkLiIpOworfQorCitjb25zdCBhc3NlcnRf
bWFsZm9ybWVkID0gYXNzZXJ0X2ludmFsaWQ7CisKK2Z1bmN0aW9uIGluc3RhbmNlKGJ5dGVzLCBp
bXBvcnRzID0gcmVnaXN0cnksIHZhbGlkID0gdHJ1ZSkgeworICAgIGlmIChpbXBvcnRzIGluc3Rh
bmNlb2YgUmVzdWx0KSB7CisgICAgICAgIGlmIChpbXBvcnRzLmlzRXJyb3IoKSkKKyAgICAgICAg
ICAgIHJldHVybiBpbXBvcnRzOworICAgICAgICBpbXBvcnRzID0gaW1wb3J0cy52YWx1ZTsKKyAg
ICB9CisKKyAgICBsZXQgZXJyID0gbnVsbDsKKworICAgIGxldCBtLCBpOworICAgIHRyeSB7Cisg
ICAgICAgIGxldCBtID0gbW9kdWxlKGJ5dGVzKTsKKyAgICAgICAgaSA9IG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtLCBpbXBvcnRzKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXJyID0g
ZTsKKyAgICB9CisKKyAgICBpZiAodmFsaWQpIHsKKyAgICAgICAgdW5pcXVlVGVzdCgoKSA9PiB7
CisgICAgICAgICAgICBsZXQgaW5zdGFudGlhdGVkID0gZXJyID09PSBudWxsOworICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoaW5zdGFudGlhdGVkLCBlcnIpOworICAgICAgICB9LCAibW9kdWxlIHN1
Y2Nlc3NmdWxseSBpbnN0YW50aWF0ZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyICE9PSBu
dWxsID8gRXJyb3JSZXN1bHQoZXJyKSA6IFZhbHVlUmVzdWx0KGkpOworfQorCitmdW5jdGlvbiBy
ZWdpc3RlcihuYW1lLCBpbnN0YW5jZSkgeworICAgIF9hc3NlcnQoaW5zdGFuY2UgaW5zdGFuY2Vv
ZiBSZXN1bHQpOworCisgICAgaWYgKGluc3RhbmNlLmlzRXJyb3IoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcmVnaXN0cnlbbmFtZV0gPSBpbnN0YW5jZS52YWx1ZS5leHBvcnRzOworfQorCitm
dW5jdGlvbiBjYWxsKGluc3RhbmNlLCBuYW1lLCBhcmdzKSB7CisgICAgX2Fzc2VydChpbnN0YW5j
ZSBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICBpZiAoaW5zdGFuY2UuaXNFcnJvcigpKQorICAg
ICAgICByZXR1cm4gaW5zdGFuY2U7CisKKyAgICBsZXQgZXJyID0gbnVsbDsKKyAgICBsZXQgcmVz
dWx0OworICAgIHRyeSB7CisgICAgICAgIHJlc3VsdCA9IGluc3RhbmNlLnZhbHVlLmV4cG9ydHNb
bmFtZV0oLi4uYXJncyk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGVyciA9IGU7CisgICAg
fQorCisgICAgcmV0dXJuIGVyciAhPT0gbnVsbCA/IEVycm9yUmVzdWx0KGVycikgOiBWYWx1ZVJl
c3VsdChyZXN1bHQpOworfTsKKworZnVuY3Rpb24gZ2V0KGluc3RhbmNlLCBuYW1lKSB7CisgICAg
X2Fzc2VydChpbnN0YW5jZSBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICBpZiAoaW5zdGFuY2Uu
aXNFcnJvcigpKQorICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisKKyAgICBsZXQgdiA9IGluc3Rh
bmNlLnZhbHVlLmV4cG9ydHNbbmFtZV07CisgICAgcmV0dXJuIFZhbHVlUmVzdWx0KCh2IGluc3Rh
bmNlb2YgV2ViQXNzZW1ibHkuR2xvYmFsKSA/IHYudmFsdWUgOiB2KTsKK30KKworZnVuY3Rpb24g
ZXhwb3J0cyhpbnN0YW5jZSkgeworICAgIF9hc3NlcnQoaW5zdGFuY2UgaW5zdGFuY2VvZiBSZXN1
bHQpOworCisgICAgaWYgKGluc3RhbmNlLmlzRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGluc3Rh
bmNlOworCisgICAgcmV0dXJuIFZhbHVlUmVzdWx0KHsgbW9kdWxlOiBpbnN0YW5jZS52YWx1ZS5l
eHBvcnRzLCBzcGVjdGVzdDogcmVnaXN0cnkuc3BlY3Rlc3QgfSk7Cit9CisKK2Z1bmN0aW9uIHJ1
bihhY3Rpb24pIHsKKyAgICBsZXQgcmVzdWx0ID0gYWN0aW9uKCk7CisKKyAgICBfYXNzZXJ0KHJl
c3VsdCBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAgICAg
ICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpCisgICAgICAgICAgICB0aHJvdyByZXN1bHQudmFsdWU7
CisgICAgfSwgIkEgd2FzdCB0ZXN0IHRoYXQgcnVucyB3aXRob3V0IGFueSBzcGVjaWFsIGFzc2Vy
dGlvbi4iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3VubGlua2FibGUoYnl0ZXMpIHsKKyAgICBs
ZXQgcmVzdWx0ID0gaW5zdGFuY2UoYnl0ZXMsIHJlZ2lzdHJ5LCBFWFBFQ1RfSU5WQUxJRCk7CisK
KyAgICBfYXNzZXJ0KHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0
KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUocmVzdWx0LmlzRXJyb3IoKSwgJ2V4cGVjdGVk
IGVycm9yIHJlc3VsdCcpOworICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgeworICAgICAg
ICAgICAgbGV0IGUgPSByZXN1bHQudmFsdWU7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShlIGlu
c3RhbmNlb2YgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgZXhwZWN0ZWQgbGluayBlcnJvciwgb2Jz
ZXJ2ZWQgJHtlfTpgKTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQgaXMg
dW5saW5rYWJsZS4iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3VuaW5zdGFudGlhYmxlKGJ5dGVz
KSB7CisgICAgbGV0IHJlc3VsdCA9IGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lO
VkFMSUQpOworCisgICAgX2Fzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAg
dW5pcXVlVGVzdCgoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKHJlc3VsdC5pc0Vycm9yKCks
ICdleHBlY3RlZCBlcnJvciByZXN1bHQnKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkp
IHsKKyAgICAgICAgICAgIGxldCBlID0gcmVzdWx0LnZhbHVlOworICAgICAgICAgICAgYXNzZXJ0
X3RydWUoZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgYGV4cGVjdGVkIHJ1
bnRpbWUgZXJyb3IsIG9ic2VydmVkICR7ZX06YCk7CisgICAgICAgIH0KKyAgICB9LCAiQSB3YXN0
IG1vZHVsZSB0aGF0IGlzIHVuaW5zdGFudGlhYmxlLiIpOworfQorCitmdW5jdGlvbiBhc3NlcnRf
dHJhcChhY3Rpb24pIHsKKyAgICBsZXQgcmVzdWx0ID0gYWN0aW9uKCk7CisKKyAgICBfYXNzZXJ0
KHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAg
ICAgICAgYXNzZXJ0X3RydWUocmVzdWx0LmlzRXJyb3IoKSwgJ2V4cGVjdGVkIGVycm9yIHJlc3Vs
dCcpOworICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgeworICAgICAgICAgICAgbGV0IGUg
PSByZXN1bHQudmFsdWU7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShlIGluc3RhbmNlb2YgV2Vi
QXNzZW1ibHkuUnVudGltZUVycm9yLCBgZXhwZWN0ZWQgcnVudGltZSBlcnJvciwgb2JzZXJ2ZWQg
JHtlfTpgKTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQgbXVzdCB0cmFw
IGF0IHJ1bnRpbWUuIik7Cit9CisKK2xldCBTdGFja092ZXJmbG93OwordHJ5IHsgKGZ1bmN0aW9u
IGYoKSB7IDEgKyBmKCkgfSkoKSB9IGNhdGNoIChlKSB7IFN0YWNrT3ZlcmZsb3cgPSBlLmNvbnN0
cnVjdG9yIH0KKworZnVuY3Rpb24gYXNzZXJ0X2V4aGF1c3Rpb24oYWN0aW9uKSB7CisgICAgbGV0
IHJlc3VsdCA9IGFjdGlvbigpOworCisgICAgX2Fzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBSZXN1
bHQpOworCisgICAgdW5pcXVlVGVzdCgoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKHJlc3Vs
dC5pc0Vycm9yKCksICdleHBlY3RlZCBlcnJvciByZXN1bHQnKTsKKyAgICAgICAgaWYgKHJlc3Vs
dC5pc0Vycm9yKCkpIHsKKyAgICAgICAgICAgIGxldCBlID0gcmVzdWx0LnZhbHVlOworICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoZSBpbnN0YW5jZW9mIFN0YWNrT3ZlcmZsb3csIGBleHBlY3RlZCBz
dGFjayBvdmVyZmxvdyBlcnJvciwgb2JzZXJ2ZWQgJHtlfTpgKTsKKyAgICAgICAgfQorICAgIH0s
ICJBIHdhc3QgbW9kdWxlIHRoYXQgbXVzdCBleGhhdXN0IHRoZSBzdGFjayBzcGFjZS4iKTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X3JldHVybihhY3Rpb24sIC4uLmV4cGVjdGVkKSB7CisgICAgbGV0
IHJlc3VsdCA9IGFjdGlvbigpOworICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0
KTsKKworICAgIHVuaXF1ZVRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSghcmVzdWx0
LmlzRXJyb3IoKSwgYGV4cGVjdGVkIHN1Y2Nlc3MgcmVzdWx0LCBnb3Q6ICR7cmVzdWx0LnZhbHVl
fS5gKTsKKyAgICAgICAgbGV0IGFjdHVhbCA9IHJlc3VsdC52YWx1ZTsKKyAgICAgICAgaWYgKGFj
dHVhbCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBbXTsKKyAgICAgICAg
fSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShhY3R1YWwpKSB7CisgICAgICAgICAgICBhY3R1YWwg
PSBbYWN0dWFsXTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYWN0dWFsLmxlbmd0aCAhPT0gZXhw
ZWN0ZWQubGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhwZWN0ZWQubGVu
Z3RoICsgIiB2YWx1ZShzKSBleHBlY3RlZCwgZ290ICIgKyBhY3R1YWwubGVuZ3RoKTsKKyAgICAg
ICAgfQorICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdHVhbC5sZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgaWYgKGV4cGVjdGVkW2ldIGluc3RhbmNlb2YgUmVzdWx0KSB7CisgICAgICAg
ICAgICAgICAgaWYgKGV4cGVjdGVkW2ldLmlzRXJyb3IoKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIGV4cGVjdGVkW2ldID0gZXhwZWN0ZWRbaV0udmFsdWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdGVkW2ldKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSAibmFuOmNhbm9uaWNhbCI6CisgICAgICAgICAgICAgICAgY2FzZSAi
bmFuOmFyaXRobWV0aWMiOgorICAgICAgICAgICAgICAgIGNhc2UgIm5hbjphbnkiOgorICAgICAg
ICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgSlMgY2FuJ3QgcmVsaWFibHkgZGlzdGluZ3Vpc2gg
ZGlmZmVyZW50IE5hTiB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgIC8vIHNvIHRoZXJlJ3Mg
bm8gZ29vZCB3YXkgdG8gdGVzdCB0aGF0IGl0J3MgYSBjYW5vbmljYWwgTmFOLgorICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShOdW1iZXIuaXNOYU4oYWN0dWFsW2ldKSwgYGV4cGVjdGVk
IE5hTiwgb2JzZXJ2ZWQgJHthY3R1YWxbaV19LmApOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgY2FzZSAicmVmLmZ1bmMiOgorICAgICAgICAgICAgICAgICAg
ICBhc3NlcnRfdHJ1ZSh0eXBlb2YgYWN0dWFsW2ldID09PSAiZnVuY3Rpb24iLCBgZXhwZWN0ZWQg
V2FzbSBmdW5jdGlvbiwgZ290ICR7YWN0dWFsW2ldfWApOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgY2FzZSAicmVmLmV4dGVybiI6CisgICAgICAgICAgICAg
ICAgICAgIGFzc2VydF90cnVlKGFjdHVhbFtpXSAhPT0gbnVsbCwgYGV4cGVjdGVkIFdhc20gcmVm
ZXJlbmNlLCBnb3QgJHthY3R1YWxbaV19YCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGFjdHVhbFtpXSwgZXhwZWN0ZWRbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfSwgIkEgd2FzdCBtb2R1bGUgdGhhdCBtdXN0IHJldHVybiBhIHBhcnRpY3VsYXIgdmFsdWUu
Iik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9yZXR1cm5fbmFuKGFjdGlvbikgeworICAgIGxldCBy
ZXN1bHQgPSBhY3Rpb24oKTsKKworICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0
KTsKKworICAgIHVuaXF1ZVRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSghcmVzdWx0
LmlzRXJyb3IoKSwgJ2V4cGVjdGVkIHN1Y2Nlc3MgcmVzdWx0Jyk7CisgICAgICAgIGlmICghcmVz
dWx0LmlzRXJyb3IoKSkgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUoTnVtYmVyLmlzTmFOKHJl
c3VsdC52YWx1ZSksIGBleHBlY3RlZCBOYU4sIG9ic2VydmVkICR7cmVzdWx0LnZhbHVlfS5gKTsK
KyAgICAgICAgfTsKKyAgICB9LCAiQSB3YXN0IG1vZHVsZSB0aGF0IG11c3QgcmV0dXJuIE5hTi4i
KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mv
d2FzbS1jb25zdGFudHMuanMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNz
L3dhc20tY29uc3RhbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0MzlhMjVkN2RlYTQ5ODZlMzYzMzQ2ZTJj
ZWNjMzVhYWNjMTU2NzYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNh
bGwtc3BlYy1oYXJuZXNzL3dhc20tY29uc3RhbnRzLmpzCkBAIC0wLDAgKzEsMzg0IEBACisvLyBD
b3B5cmlnaHQgMjAxNSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8g
RmxhZ3M6IC0tZXhwb3NlLXdhc20KKworbGV0IGhvc3RyZWZzID0ge307CitsZXQgaG9zdHN5bSA9
IFN5bWJvbCgiaG9zdHJlZiIpOworZnVuY3Rpb24gaG9zdHJlZihzKSB7CisgIGlmICghIChzIGlu
IGhvc3RyZWZzKSkgaG9zdHJlZnNbc10gPSB7W2hvc3RzeW1dOiBzfTsKKyAgcmV0dXJuIGhvc3Ry
ZWZzW3NdOworfQorCitmdW5jdGlvbiBieXRlcygpIHsKKyAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJh
eUJ1ZmZlcihhcmd1bWVudHMubGVuZ3RoKTsKKyAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShi
dWZmZXIpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewor
ICAgIHZhciB2YWwgPSBhcmd1bWVudHNbaV07CisgICAgaWYgKCh0eXBlb2YgdmFsKSA9PSAic3Ry
aW5nIikgdmFsID0gdmFsLmNoYXJDb2RlQXQoMCk7CisgICAgdmlld1tpXSA9IHZhbCB8IDA7Cisg
IH0KKyAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLy8gSGVhZGVyIGRlY2xhcmF0aW9uIGNvbnN0YW50
cwordmFyIGtXYXNtSDAgPSAwOwordmFyIGtXYXNtSDEgPSAweDYxOwordmFyIGtXYXNtSDIgPSAw
eDczOwordmFyIGtXYXNtSDMgPSAweDZkOworCit2YXIga1dhc21WMCA9IDB4MTsKK3ZhciBrV2Fz
bVYxID0gMDsKK3ZhciBrV2FzbVYyID0gMDsKK3ZhciBrV2FzbVYzID0gMDsKKwordmFyIGtIZWFk
ZXJTaXplID0gODsKK3ZhciBrUGFnZVNpemUgPSA2NTUzNjsKKworZnVuY3Rpb24gYnl0ZXNXaXRo
SGVhZGVyKCkgeworICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGtIZWFkZXJTaXplICsg
YXJndW1lbnRzLmxlbmd0aCk7CisgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsK
KyAgdmlld1swXSA9IGtXYXNtSDA7CisgIHZpZXdbMV0gPSBrV2FzbUgxOworICB2aWV3WzJdID0g
a1dhc21IMjsKKyAgdmlld1szXSA9IGtXYXNtSDM7CisgIHZpZXdbNF0gPSBrV2FzbVYwOworICB2
aWV3WzVdID0ga1dhc21WMTsKKyAgdmlld1s2XSA9IGtXYXNtVjI7CisgIHZpZXdbN10gPSBrV2Fz
bVYzOworICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAg
IHZhciB2YWwgPSBhcmd1bWVudHNbaV07CisgICAgaWYgKCh0eXBlb2YgdmFsKSA9PSAic3RyaW5n
IikgdmFsID0gdmFsLmNoYXJDb2RlQXQoMCk7CisgICAgdmlld1trSGVhZGVyU2l6ZSArIGldID0g
dmFsIHwgMDsKKyAgfQorICByZXR1cm4gYnVmZmVyOworfQorCitsZXQga0RlY2xOb0xvY2FscyA9
IDA7CisKKy8vIFNlY3Rpb24gZGVjbGFyYXRpb24gY29uc3RhbnRzCitsZXQga1Vua25vd25TZWN0
aW9uQ29kZSA9IDA7CitsZXQga1R5cGVTZWN0aW9uQ29kZSA9IDE7ICAgICAgLy8gRnVuY3Rpb24g
c2lnbmF0dXJlIGRlY2xhcmF0aW9ucworbGV0IGtJbXBvcnRTZWN0aW9uQ29kZSA9IDI7ICAgIC8v
IEltcG9ydCBkZWNsYXJhdGlvbnMKK2xldCBrRnVuY3Rpb25TZWN0aW9uQ29kZSA9IDM7ICAvLyBG
dW5jdGlvbiBkZWNsYXJhdGlvbnMKK2xldCBrVGFibGVTZWN0aW9uQ29kZSA9IDQ7ICAgICAvLyBJ
bmRpcmVjdCBmdW5jdGlvbiB0YWJsZSBhbmQgb3RoZXIgdGFibGVzCitsZXQga01lbW9yeVNlY3Rp
b25Db2RlID0gNTsgICAgLy8gTWVtb3J5IGF0dHJpYnV0ZXMKK2xldCBrR2xvYmFsU2VjdGlvbkNv
ZGUgPSA2OyAgICAvLyBHbG9iYWwgZGVjbGFyYXRpb25zCitsZXQga0V4cG9ydFNlY3Rpb25Db2Rl
ID0gNzsgICAgLy8gRXhwb3J0cworbGV0IGtTdGFydFNlY3Rpb25Db2RlID0gODsgICAgIC8vIFN0
YXJ0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uCitsZXQga0VsZW1lbnRTZWN0aW9uQ29kZSA9IDk7ICAv
LyBFbGVtZW50cyBzZWN0aW9uCitsZXQga0NvZGVTZWN0aW9uQ29kZSA9IDEwOyAgICAgIC8vIEZ1
bmN0aW9uIGNvZGUKK2xldCBrRGF0YVNlY3Rpb25Db2RlID0gMTE7ICAgICAvLyBEYXRhIHNlZ21l
bnRzCitsZXQga05hbWVTZWN0aW9uQ29kZSA9IDEyOyAgICAgLy8gTmFtZSBzZWN0aW9uIChlbmNv
ZGVkIGFzIHN0cmluZykKKworLy8gTmFtZSBzZWN0aW9uIHR5cGVzCitsZXQga01vZHVsZU5hbWVD
b2RlID0gMDsKK2xldCBrRnVuY3Rpb25OYW1lc0NvZGUgPSAxOworbGV0IGtMb2NhbE5hbWVzQ29k
ZSA9IDI7CisKK2xldCBrV2FzbUZ1bmN0aW9uVHlwZUZvcm0gPSAweDYwOworbGV0IGtXYXNtRnVu
Y1JlZnRpb25UeXBlRm9ybSA9IDB4NzA7CisKK2xldCBrUmVzaXphYmxlTWF4aW11bUZsYWcgPSAx
OworCisvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbiBmbGFncworbGV0IGtEZWNsRnVuY3Rpb25OYW1l
ICAgPSAweDAxOworbGV0IGtEZWNsRnVuY3Rpb25JbXBvcnQgPSAweDAyOworbGV0IGtEZWNsRnVu
Y3Rpb25Mb2NhbHMgPSAweDA0OworbGV0IGtEZWNsRnVuY3Rpb25FeHBvcnQgPSAweDA4OworCisv
LyBMb2NhbCB0eXBlcworbGV0IGtXYXNtU3RtdCA9IDB4NDA7CitsZXQga1dhc21JMzIgPSAweDdm
OworbGV0IGtXYXNtSTY0ID0gMHg3ZTsKK2xldCBrV2FzbUYzMiA9IDB4N2Q7CitsZXQga1dhc21G
NjQgPSAweDdjOworbGV0IGtXYXNtUzEyOCA9IDB4N2I7CisKK2xldCBrRXh0ZXJuYWxGdW5jdGlv
biA9IDA7CitsZXQga0V4dGVybmFsVGFibGUgPSAxOworbGV0IGtFeHRlcm5hbE1lbW9yeSA9IDI7
CitsZXQga0V4dGVybmFsR2xvYmFsID0gMzsKKworbGV0IGtUYWJsZVplcm8gPSAwOworbGV0IGtN
ZW1vcnlaZXJvID0gMDsKKworLy8gVXNlZnVsIHNpZ25hdHVyZXMKK2xldCBrU2lnX2lfaSA9IG1h
a2VTaWcoW2tXYXNtSTMyXSwgW2tXYXNtSTMyXSk7CitsZXQga1NpZ19sX2wgPSBtYWtlU2lnKFtr
V2FzbUk2NF0sIFtrV2FzbUk2NF0pOworbGV0IGtTaWdfaV9sID0gbWFrZVNpZyhba1dhc21JNjRd
LCBba1dhc21JMzJdKTsKK2xldCBrU2lnX2lfaWkgPSBtYWtlU2lnKFtrV2FzbUkzMiwga1dhc21J
MzJdLCBba1dhc21JMzJdKTsKK2xldCBrU2lnX2lfaWlpID0gbWFrZVNpZyhba1dhc21JMzIsIGtX
YXNtSTMyLCBrV2FzbUkzMl0sIFtrV2FzbUkzMl0pOworbGV0IGtTaWdfZF9kZCA9IG1ha2VTaWco
W2tXYXNtRjY0LCBrV2FzbUY2NF0sIFtrV2FzbUY2NF0pOworbGV0IGtTaWdfbF9sbCA9IG1ha2VT
aWcoW2tXYXNtSTY0LCBrV2FzbUk2NF0sIFtrV2FzbUk2NF0pOworbGV0IGtTaWdfaV9kZCA9IG1h
a2VTaWcoW2tXYXNtRjY0LCBrV2FzbUY2NF0sIFtrV2FzbUkzMl0pOworbGV0IGtTaWdfdl92ID0g
bWFrZVNpZyhbXSwgW10pOworbGV0IGtTaWdfaV92ID0gbWFrZVNpZyhbXSwgW2tXYXNtSTMyXSk7
CitsZXQga1NpZ19sX3YgPSBtYWtlU2lnKFtdLCBba1dhc21JNjRdKTsKK2xldCBrU2lnX2ZfdiA9
IG1ha2VTaWcoW10sIFtrV2FzbUY2NF0pOworbGV0IGtTaWdfZF92ID0gbWFrZVNpZyhbXSwgW2tX
YXNtRjY0XSk7CitsZXQga1NpZ192X2kgPSBtYWtlU2lnKFtrV2FzbUkzMl0sIFtdKTsKK2xldCBr
U2lnX3ZfaWkgPSBtYWtlU2lnKFtrV2FzbUkzMiwga1dhc21JMzJdLCBbXSk7CitsZXQga1NpZ192
X2lpaSA9IG1ha2VTaWcoW2tXYXNtSTMyLCBrV2FzbUkzMiwga1dhc21JMzJdLCBbXSk7CitsZXQg
a1NpZ192X2wgPSBtYWtlU2lnKFtrV2FzbUk2NF0sIFtdKTsKK2xldCBrU2lnX3ZfZCA9IG1ha2VT
aWcoW2tXYXNtRjY0XSwgW10pOworbGV0IGtTaWdfdl9kZCA9IG1ha2VTaWcoW2tXYXNtRjY0LCBr
V2FzbUY2NF0sIFtdKTsKK2xldCBrU2lnX3ZfZGRpID0gbWFrZVNpZyhba1dhc21GNjQsIGtXYXNt
RjY0LCBrV2FzbUkzMl0sIFtdKTsKK2xldCBrU2lnX3NfdiA9IG1ha2VTaWcoW10sIFtrV2FzbVMx
MjhdKTsKKworZnVuY3Rpb24gbWFrZVNpZyhwYXJhbXMsIHJlc3VsdHMpIHsKKyAgcmV0dXJuIHtw
YXJhbXM6IHBhcmFtcywgcmVzdWx0czogcmVzdWx0c307Cit9CisKK2Z1bmN0aW9uIG1ha2VTaWdf
dl94KHgpIHsKKyAgcmV0dXJuIG1ha2VTaWcoW3hdLCBbXSk7Cit9CisKK2Z1bmN0aW9uIG1ha2VT
aWdfdl94eCh4KSB7CisgIHJldHVybiBtYWtlU2lnKFt4LCB4XSwgW10pOworfQorCitmdW5jdGlv
biBtYWtlU2lnX3JfdihyKSB7CisgIHJldHVybiBtYWtlU2lnKFtdLCBbcl0pOworfQorCitmdW5j
dGlvbiBtYWtlU2lnX3JfeChyLCB4KSB7CisgIHJldHVybiBtYWtlU2lnKFt4XSwgW3JdKTsKK30K
KworZnVuY3Rpb24gbWFrZVNpZ19yX3h4KHIsIHgpIHsKKyAgcmV0dXJuIG1ha2VTaWcoW3gsIHhd
LCBbcl0pOworfQorCisvLyBPcGNvZGVzCitsZXQga0V4cHJVbnJlYWNoYWJsZSA9IDB4MDA7Cits
ZXQga0V4cHJOb3AgPSAweDAxOworbGV0IGtFeHByQmxvY2sgPSAweDAyOworbGV0IGtFeHByTG9v
cCA9IDB4MDM7CitsZXQga0V4cHJJZiA9IDB4MDQ7CitsZXQga0V4cHJFbHNlID0gMHgwNTsKK2xl
dCBrRXhwclRyeSA9IDB4MDY7CitsZXQga0V4cHJDYXRjaCA9IDB4MDc7CitsZXQga0V4cHJUaHJv
dyA9IDB4MDg7CitsZXQga0V4cHJFbmQgPSAweDBiOworbGV0IGtFeHByQnIgPSAweDBjOworbGV0
IGtFeHByQnJJZiA9IDB4MGQ7CitsZXQga0V4cHJCclRhYmxlID0gMHgwZTsKK2xldCBrRXhwclJl
dHVybiA9IDB4MGY7CitsZXQga0V4cHJDYWxsRnVuY3Rpb24gPSAweDEwOworbGV0IGtFeHByQ2Fs
bEluZGlyZWN0ID0gMHgxMTsKK2xldCBrRXhwckRyb3AgPSAweDFhOworbGV0IGtFeHByU2VsZWN0
ID0gMHgxYjsKK2xldCBrRXhwckdldExvY2FsID0gMHgyMDsKK2xldCBrRXhwclNldExvY2FsID0g
MHgyMTsKK2xldCBrRXhwclRlZUxvY2FsID0gMHgyMjsKK2xldCBrRXhwckdldEdsb2JhbCA9IDB4
MjM7CitsZXQga0V4cHJTZXRHbG9iYWwgPSAweDI0OworbGV0IGtFeHBySTMyQ29uc3QgPSAweDQx
OworbGV0IGtFeHBySTY0Q29uc3QgPSAweDQyOworbGV0IGtFeHByRjMyQ29uc3QgPSAweDQzOwor
bGV0IGtFeHByRjY0Q29uc3QgPSAweDQ0OworbGV0IGtFeHBySTMyTG9hZE1lbSA9IDB4Mjg7Cits
ZXQga0V4cHJJNjRMb2FkTWVtID0gMHgyOTsKK2xldCBrRXhwckYzMkxvYWRNZW0gPSAweDJhOwor
bGV0IGtFeHByRjY0TG9hZE1lbSA9IDB4MmI7CitsZXQga0V4cHJJMzJMb2FkTWVtOFMgPSAweDJj
OworbGV0IGtFeHBySTMyTG9hZE1lbThVID0gMHgyZDsKK2xldCBrRXhwckkzMkxvYWRNZW0xNlMg
PSAweDJlOworbGV0IGtFeHBySTMyTG9hZE1lbTE2VSA9IDB4MmY7CitsZXQga0V4cHJJNjRMb2Fk
TWVtOFMgPSAweDMwOworbGV0IGtFeHBySTY0TG9hZE1lbThVID0gMHgzMTsKK2xldCBrRXhwckk2
NExvYWRNZW0xNlMgPSAweDMyOworbGV0IGtFeHBySTY0TG9hZE1lbTE2VSA9IDB4MzM7CitsZXQg
a0V4cHJJNjRMb2FkTWVtMzJTID0gMHgzNDsKK2xldCBrRXhwckk2NExvYWRNZW0zMlUgPSAweDM1
OworbGV0IGtFeHBySTMyU3RvcmVNZW0gPSAweDM2OworbGV0IGtFeHBySTY0U3RvcmVNZW0gPSAw
eDM3OworbGV0IGtFeHByRjMyU3RvcmVNZW0gPSAweDM4OworbGV0IGtFeHByRjY0U3RvcmVNZW0g
PSAweDM5OworbGV0IGtFeHBySTMyU3RvcmVNZW04ID0gMHgzYTsKK2xldCBrRXhwckkzMlN0b3Jl
TWVtMTYgPSAweDNiOworbGV0IGtFeHBySTY0U3RvcmVNZW04ID0gMHgzYzsKK2xldCBrRXhwckk2
NFN0b3JlTWVtMTYgPSAweDNkOworbGV0IGtFeHBySTY0U3RvcmVNZW0zMiA9IDB4M2U7CitsZXQg
a0V4cHJNZW1vcnlTaXplID0gMHgzZjsKK2xldCBrRXhwckdyb3dNZW1vcnkgPSAweDQwOworbGV0
IGtFeHBySTMyRXF6ID0gMHg0NTsKK2xldCBrRXhwckkzMkVxID0gMHg0NjsKK2xldCBrRXhwckkz
Mk5lID0gMHg0NzsKK2xldCBrRXhwckkzMkx0UyA9IDB4NDg7CitsZXQga0V4cHJJMzJMdFUgPSAw
eDQ5OworbGV0IGtFeHBySTMyR3RTID0gMHg0YTsKK2xldCBrRXhwckkzMkd0VSA9IDB4NGI7Cits
ZXQga0V4cHJJMzJMZVMgPSAweDRjOworbGV0IGtFeHBySTMyTGVVID0gMHg0ZDsKK2xldCBrRXhw
ckkzMkdlUyA9IDB4NGU7CitsZXQga0V4cHJJMzJHZVUgPSAweDRmOworbGV0IGtFeHBySTY0RXF6
ID0gMHg1MDsKK2xldCBrRXhwckk2NEVxID0gMHg1MTsKK2xldCBrRXhwckk2NE5lID0gMHg1MjsK
K2xldCBrRXhwckk2NEx0UyA9IDB4NTM7CitsZXQga0V4cHJJNjRMdFUgPSAweDU0OworbGV0IGtF
eHBySTY0R3RTID0gMHg1NTsKK2xldCBrRXhwckk2NEd0VSA9IDB4NTY7CitsZXQga0V4cHJJNjRM
ZVMgPSAweDU3OworbGV0IGtFeHBySTY0TGVVID0gMHg1ODsKK2xldCBrRXhwckk2NEdlUyA9IDB4
NTk7CitsZXQga0V4cHJJNjRHZVUgPSAweDVhOworbGV0IGtFeHByRjMyRXEgPSAweDViOworbGV0
IGtFeHByRjMyTmUgPSAweDVjOworbGV0IGtFeHByRjMyTHQgPSAweDVkOworbGV0IGtFeHByRjMy
R3QgPSAweDVlOworbGV0IGtFeHByRjMyTGUgPSAweDVmOworbGV0IGtFeHByRjMyR2UgPSAweDYw
OworbGV0IGtFeHByRjY0RXEgPSAweDYxOworbGV0IGtFeHByRjY0TmUgPSAweDYyOworbGV0IGtF
eHByRjY0THQgPSAweDYzOworbGV0IGtFeHByRjY0R3QgPSAweDY0OworbGV0IGtFeHByRjY0TGUg
PSAweDY1OworbGV0IGtFeHByRjY0R2UgPSAweDY2OworbGV0IGtFeHBySTMyQ2x6ID0gMHg2NzsK
K2xldCBrRXhwckkzMkN0eiA9IDB4Njg7CitsZXQga0V4cHJJMzJQb3BjbnQgPSAweDY5OworbGV0
IGtFeHBySTMyQWRkID0gMHg2YTsKK2xldCBrRXhwckkzMlN1YiA9IDB4NmI7CitsZXQga0V4cHJJ
MzJNdWwgPSAweDZjOworbGV0IGtFeHBySTMyRGl2UyA9IDB4NmQ7CitsZXQga0V4cHJJMzJEaXZV
ID0gMHg2ZTsKK2xldCBrRXhwckkzMlJlbVMgPSAweDZmOworbGV0IGtFeHBySTMyUmVtVSA9IDB4
NzA7CitsZXQga0V4cHJJMzJBbmQgPSAweDcxOworbGV0IGtFeHBySTMySW9yID0gMHg3MjsKK2xl
dCBrRXhwckkzMlhvciA9IDB4NzM7CitsZXQga0V4cHJJMzJTaGwgPSAweDc0OworbGV0IGtFeHBy
STMyU2hyUyA9IDB4NzU7CitsZXQga0V4cHJJMzJTaHJVID0gMHg3NjsKK2xldCBrRXhwckkzMlJv
bCA9IDB4Nzc7CitsZXQga0V4cHJJMzJSb3IgPSAweDc4OworbGV0IGtFeHBySTY0Q2x6ID0gMHg3
OTsKK2xldCBrRXhwckk2NEN0eiA9IDB4N2E7CitsZXQga0V4cHJJNjRQb3BjbnQgPSAweDdiOwor
bGV0IGtFeHBySTY0QWRkID0gMHg3YzsKK2xldCBrRXhwckk2NFN1YiA9IDB4N2Q7CitsZXQga0V4
cHJJNjRNdWwgPSAweDdlOworbGV0IGtFeHBySTY0RGl2UyA9IDB4N2Y7CitsZXQga0V4cHJJNjRE
aXZVID0gMHg4MDsKK2xldCBrRXhwckk2NFJlbVMgPSAweDgxOworbGV0IGtFeHBySTY0UmVtVSA9
IDB4ODI7CitsZXQga0V4cHJJNjRBbmQgPSAweDgzOworbGV0IGtFeHBySTY0SW9yID0gMHg4NDsK
K2xldCBrRXhwckk2NFhvciA9IDB4ODU7CitsZXQga0V4cHJJNjRTaGwgPSAweDg2OworbGV0IGtF
eHBySTY0U2hyUyA9IDB4ODc7CitsZXQga0V4cHJJNjRTaHJVID0gMHg4ODsKK2xldCBrRXhwckk2
NFJvbCA9IDB4ODk7CitsZXQga0V4cHJJNjRSb3IgPSAweDhhOworbGV0IGtFeHByRjMyQWJzID0g
MHg4YjsKK2xldCBrRXhwckYzMk5lZyA9IDB4OGM7CitsZXQga0V4cHJGMzJDZWlsID0gMHg4ZDsK
K2xldCBrRXhwckYzMkZsb29yID0gMHg4ZTsKK2xldCBrRXhwckYzMlRydW5jID0gMHg4ZjsKK2xl
dCBrRXhwckYzMk5lYXJlc3RJbnQgPSAweDkwOworbGV0IGtFeHByRjMyU3FydCA9IDB4OTE7Cits
ZXQga0V4cHJGMzJBZGQgPSAweDkyOworbGV0IGtFeHByRjMyU3ViID0gMHg5MzsKK2xldCBrRXhw
ckYzMk11bCA9IDB4OTQ7CitsZXQga0V4cHJGMzJEaXYgPSAweDk1OworbGV0IGtFeHByRjMyTWlu
ID0gMHg5NjsKK2xldCBrRXhwckYzMk1heCA9IDB4OTc7CitsZXQga0V4cHJGMzJDb3B5U2lnbiA9
IDB4OTg7CitsZXQga0V4cHJGNjRBYnMgPSAweDk5OworbGV0IGtFeHByRjY0TmVnID0gMHg5YTsK
K2xldCBrRXhwckY2NENlaWwgPSAweDliOworbGV0IGtFeHByRjY0Rmxvb3IgPSAweDljOworbGV0
IGtFeHByRjY0VHJ1bmMgPSAweDlkOworbGV0IGtFeHByRjY0TmVhcmVzdEludCA9IDB4OWU7Cits
ZXQga0V4cHJGNjRTcXJ0ID0gMHg5ZjsKK2xldCBrRXhwckY2NEFkZCA9IDB4YTA7CitsZXQga0V4
cHJGNjRTdWIgPSAweGExOworbGV0IGtFeHByRjY0TXVsID0gMHhhMjsKK2xldCBrRXhwckY2NERp
diA9IDB4YTM7CitsZXQga0V4cHJGNjRNaW4gPSAweGE0OworbGV0IGtFeHByRjY0TWF4ID0gMHhh
NTsKK2xldCBrRXhwckY2NENvcHlTaWduID0gMHhhNjsKK2xldCBrRXhwckkzMkNvbnZlcnRJNjQg
PSAweGE3OworbGV0IGtFeHBySTMyU0NvbnZlcnRGMzIgPSAweGE4OworbGV0IGtFeHBySTMyVUNv
bnZlcnRGMzIgPSAweGE5OworbGV0IGtFeHBySTMyU0NvbnZlcnRGNjQgPSAweGFhOworbGV0IGtF
eHBySTMyVUNvbnZlcnRGNjQgPSAweGFiOworbGV0IGtFeHBySTY0U0NvbnZlcnRJMzIgPSAweGFj
OworbGV0IGtFeHBySTY0VUNvbnZlcnRJMzIgPSAweGFkOworbGV0IGtFeHBySTY0U0NvbnZlcnRG
MzIgPSAweGFlOworbGV0IGtFeHBySTY0VUNvbnZlcnRGMzIgPSAweGFmOworbGV0IGtFeHBySTY0
U0NvbnZlcnRGNjQgPSAweGIwOworbGV0IGtFeHBySTY0VUNvbnZlcnRGNjQgPSAweGIxOworbGV0
IGtFeHByRjMyU0NvbnZlcnRJMzIgPSAweGIyOworbGV0IGtFeHByRjMyVUNvbnZlcnRJMzIgPSAw
eGIzOworbGV0IGtFeHByRjMyU0NvbnZlcnRJNjQgPSAweGI0OworbGV0IGtFeHByRjMyVUNvbnZl
cnRJNjQgPSAweGI1OworbGV0IGtFeHByRjMyQ29udmVydEY2NCA9IDB4YjY7CitsZXQga0V4cHJG
NjRTQ29udmVydEkzMiA9IDB4Yjc7CitsZXQga0V4cHJGNjRVQ29udmVydEkzMiA9IDB4Yjg7Cits
ZXQga0V4cHJGNjRTQ29udmVydEk2NCA9IDB4Yjk7CitsZXQga0V4cHJGNjRVQ29udmVydEk2NCA9
IDB4YmE7CitsZXQga0V4cHJGNjRDb252ZXJ0RjMyID0gMHhiYjsKK2xldCBrRXhwckkzMlJlaW50
ZXJwcmV0RjMyID0gMHhiYzsKK2xldCBrRXhwckk2NFJlaW50ZXJwcmV0RjY0ID0gMHhiZDsKK2xl
dCBrRXhwckYzMlJlaW50ZXJwcmV0STMyID0gMHhiZTsKK2xldCBrRXhwckY2NFJlaW50ZXJwcmV0
STY0ID0gMHhiZjsKKworbGV0IGtUcmFwVW5yZWFjaGFibGUgICAgICAgICAgPSAwOworbGV0IGtU
cmFwTWVtT3V0T2ZCb3VuZHMgICAgICAgPSAxOworbGV0IGtUcmFwRGl2QnlaZXJvICAgICAgICAg
ICAgPSAyOworbGV0IGtUcmFwRGl2VW5yZXByZXNlbnRhYmxlICAgPSAzOworbGV0IGtUcmFwUmVt
QnlaZXJvICAgICAgICAgICAgPSA0OworbGV0IGtUcmFwRmxvYXRVbnJlcHJlc2VudGFibGUgPSA1
OworbGV0IGtUcmFwRnVuY0ludmFsaWQgICAgICAgICAgPSA2OworbGV0IGtUcmFwRnVuY1NpZ01p
c21hdGNoICAgICAgPSA3OworbGV0IGtUcmFwSW52YWxpZEluZGV4ICAgICAgICAgPSA4OworCits
ZXQga1RyYXBNc2dzID0gWworICAidW5yZWFjaGFibGUiLAorICAibWVtb3J5IGFjY2VzcyBvdXQg
b2YgYm91bmRzIiwKKyAgImRpdmlkZSBieSB6ZXJvIiwKKyAgImRpdmlkZSByZXN1bHQgdW5yZXBy
ZXNlbnRhYmxlIiwKKyAgInJlbWFpbmRlciBieSB6ZXJvIiwKKyAgImludGVnZXIgcmVzdWx0IHVu
cmVwcmVzZW50YWJsZSIsCisgICJpbnZhbGlkIGZ1bmN0aW9uIiwKKyAgImZ1bmN0aW9uIHNpZ25h
dHVyZSBtaXNtYXRjaCIsCisgICJpbnZhbGlkIGluZGV4IGludG8gZnVuY3Rpb24gdGFibGUiCitd
OworCitmdW5jdGlvbiBhc3NlcnRUcmFwcyh0cmFwLCBjb2RlKSB7CisgIHRyeSB7CisgICAgaWYg
KHR5cGVvZiBjb2RlID09PSAnZnVuY3Rpb24nKSB7CisgICAgICBjb2RlKCk7CisgICAgfSBlbHNl
IHsKKyAgICAgIGV2YWwoY29kZSk7CisgICAgfQorICB9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0
RXF1YWxzKCdvYmplY3QnLCB0eXBlb2YgZSk7CisgICAgYXNzZXJ0RXF1YWxzKGtUcmFwTXNnc1t0
cmFwXSwgZS5tZXNzYWdlKTsKKyAgICAvLyBTdWNjZXNzLgorICAgIHJldHVybjsKKyAgfQorICB0
aHJvdyBuZXcgTWpzVW5pdEFzc2VydGlvbkVycm9yKCdEaWQgbm90IHRyYXAsIGV4cGVjdGVkOiAn
ICsga1RyYXBNc2dzW3RyYXBdKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0V2FzbVRocm93cyh2YWx1
ZSwgY29kZSkgeworICBhc3NlcnRFcXVhbHMoJ251bWJlcicsIHR5cGVvZiB2YWx1ZSk7CisgIHRy
eSB7CisgICAgaWYgKHR5cGVvZiBjb2RlID09PSAnZnVuY3Rpb24nKSB7CisgICAgICBjb2RlKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgIGV2YWwoY29kZSk7CisgICAgfQorICB9IGNhdGNoIChlKSB7
CisgICAgYXNzZXJ0RXF1YWxzKCdudW1iZXInLCB0eXBlb2YgZSk7CisgICAgYXNzZXJ0RXF1YWxz
KHZhbHVlLCBlKTsKKyAgICAvLyBTdWNjZXNzLgorICAgIHJldHVybjsKKyAgfQorICB0aHJvdyBu
ZXcgTWpzVW5pdEFzc2VydGlvbkVycm9yKCdEaWQgbm90IHRocm93LCBleHBlY3RlZDogJyArIHZh
bHVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5l
c3Mvd2FzbS1tb2R1bGUtYnVpbGRlci5qcyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVj
LWhhcm5lc3Mvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTgxYWY4OGZiOTc3
YWVlOTA5NWQxNTI0OGU4MzRmNTczNzE3Mjc0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93
YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy93YXNtLW1vZHVsZS1idWlsZGVyLmpzCkBAIC0w
LDAgKzEsNTgzIEBACisvLyBDb3B5cmlnaHQgMjAxNiB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworLy8gVXNlZCBmb3IgZW5jb2RpbmcgZjMyIGFuZCBkb3VibGUgY29uc3Rh
bnRzIHRvIGJpdHMuCitsZXQgX19idWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoOCk7CitsZXQgYnl0
ZV92aWV3ID0gbmV3IEludDhBcnJheShfX2J1ZmZlcik7CitsZXQgZjMyX3ZpZXcgPSBuZXcgRmxv
YXQzMkFycmF5KF9fYnVmZmVyKTsKK2xldCBmNjRfdmlldyA9IG5ldyBGbG9hdDY0QXJyYXkoX19i
dWZmZXIpOworCitjbGFzcyBCaW5hcnkgZXh0ZW5kcyBBcnJheSB7CisgIGVtaXRfdTgodmFsKSB7
CisgICAgdGhpcy5wdXNoKHZhbCk7CisgIH0KKworICBlbWl0X3UxNih2YWwpIHsKKyAgICB0aGlz
LnB1c2godmFsICYgMHhmZik7CisgICAgdGhpcy5wdXNoKCh2YWwgPj4gOCkgJiAweGZmKTsKKyAg
fQorCisgIGVtaXRfdTMyKHZhbCkgeworICAgIHRoaXMucHVzaCh2YWwgJiAweGZmKTsKKyAgICB0
aGlzLnB1c2goKHZhbCA+PiA4KSAmIDB4ZmYpOworICAgIHRoaXMucHVzaCgodmFsID4+IDE2KSAm
IDB4ZmYpOworICAgIHRoaXMucHVzaCgodmFsID4+IDI0KSAmIDB4ZmYpOworICB9CisKKyAgZW1p
dF91MzJ2KHZhbCkgeworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBsZXQgdiA9IHZhbCAmIDB4
ZmY7CisgICAgICB2YWwgPSB2YWwgPj4+IDc7CisgICAgICBpZiAodmFsID09IDApIHsKKyAgICAg
ICAgdGhpcy5wdXNoKHYpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHRoaXMucHVz
aCh2IHwgMHg4MCk7CisgICAgfQorICB9CisKKyAgZW1pdF9ieXRlcyhkYXRhKSB7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7CisgICAgICB0aGlzLnB1c2goZGF0
YVtpXSAmIDB4ZmYpOworICAgIH0KKyAgfQorCisgIGVtaXRfc3RyaW5nKHN0cmluZykgeworICAg
IC8vIFdoZW4gdGVzdGluZyBpbGxlZ2FsIG5hbWVzLCB3ZSBwYXNzIGEgYnl0ZSBhcnJheSBkaXJl
Y3RseS4KKyAgICBpZiAoc3RyaW5nIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgIHRoaXMuZW1p
dF91MzJ2KHN0cmluZy5sZW5ndGgpOworICAgICAgdGhpcy5lbWl0X2J5dGVzKHN0cmluZyk7Cisg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhpcyBpcyB0aGUgaGFja3kgd2F5IHRvIGNv
bnZlcnQgYSBKYXZhU2NyaXB0IHN0cmluZyB0byBhIFVURjggZW5jb2RlZAorICAgIC8vIHN0cmlu
ZyBvbmx5IGNvbnRhaW5pbmcgc2luZ2xlLWJ5dGUgY2hhcmFjdGVycy4KKyAgICBsZXQgc3RyaW5n
X3V0ZjggPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKSk7CisgICAgdGhpcy5l
bWl0X3UzMnYoc3RyaW5nX3V0ZjgubGVuZ3RoKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0
cmluZ191dGY4Lmxlbmd0aDsgaSsrKSB7CisgICAgICB0aGlzLmVtaXRfdTgoc3RyaW5nX3V0Zjgu
Y2hhckNvZGVBdChpKSk7CisgICAgfQorICB9CisKKyAgZW1pdF9oZWFkZXIoKSB7CisgICAgdGhp
cy5wdXNoKGtXYXNtSDAsIGtXYXNtSDEsIGtXYXNtSDIsIGtXYXNtSDMsCisgICAgICAgICAgICAg
IGtXYXNtVjAsIGtXYXNtVjEsIGtXYXNtVjIsIGtXYXNtVjMpOworICB9CisKKyAgZW1pdF9zZWN0
aW9uKHNlY3Rpb25fY29kZSwgY29udGVudF9nZW5lcmF0b3IpIHsKKyAgICAvLyBFbWl0IHNlY3Rp
b24gbmFtZS4KKyAgICB0aGlzLmVtaXRfdTgoc2VjdGlvbl9jb2RlKTsKKyAgICAvLyBFbWl0IHRo
ZSBzZWN0aW9uIHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlcjogaXRzIGZ1bGwgbGVuZ3RoIGlzbid0IGtu
b3cgeWV0LgorICAgIGxldCBzZWN0aW9uID0gbmV3IEJpbmFyeTsKKyAgICBjb250ZW50X2dlbmVy
YXRvcihzZWN0aW9uKTsKKyAgICAvLyBFbWl0IHNlY3Rpb24gbGVuZ3RoLgorICAgIHRoaXMuZW1p
dF91MzJ2KHNlY3Rpb24ubGVuZ3RoKTsKKyAgICAvLyBDb3B5IHRoZSB0ZW1wb3JhcnkgYnVmZmVy
LgorICAgIGZvciAoY29uc3Qgc2VjdGlvbkJ5dGUgb2Ygc2VjdGlvbikgeworICAgICAgdGhpcy5w
dXNoKHNlY3Rpb25CeXRlKTsKKyAgICB9CisgIH0KK30KKworY2xhc3MgV2FzbUZ1bmN0aW9uQnVp
bGRlciB7CisgIGNvbnN0cnVjdG9yKG1vZHVsZSwgbmFtZSwgdHlwZV9pbmRleCkgeworICAgIHRo
aXMubW9kdWxlID0gbW9kdWxlOworICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy50eXBl
X2luZGV4ID0gdHlwZV9pbmRleDsKKyAgICB0aGlzLmJvZHkgPSBbXTsKKyAgfQorCisgIGV4cG9y
dEFzKG5hbWUpIHsKKyAgICB0aGlzLm1vZHVsZS5hZGRFeHBvcnQobmFtZSwgdGhpcy5pbmRleCk7
CisgICAgcmV0dXJuIHRoaXM7CisgIH0KKworICBleHBvcnRGdW5jKCkgeworICAgIHRoaXMuZXhw
b3J0QXModGhpcy5uYW1lKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZEJvZHkoYm9k
eSkgeworICAgIGZvciAobGV0IGIgb2YgYm9keSkgeworICAgICAgaWYgKHR5cGVvZiBiICE9ICdu
dW1iZXInKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgYm9keSAoZW50cmllcyBo
YXZlIHRvIGJlIG51bWJlcnMpOiAnICsgYm9keSk7CisgICAgfQorICAgIHRoaXMuYm9keSA9IGJv
ZHkuc2xpY2UoKTsKKyAgICAvLyBBdXRvbWF0aWNhbGx5IGFkZCB0aGUgZW5kIGZvciB0aGUgZnVu
Y3Rpb24gYmxvY2sgdG8gdGhlIGJvZHkuCisgICAgdGhpcy5ib2R5LnB1c2goa0V4cHJFbmQpOwor
ICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYWRkTG9jYWxzKGxvY2FscykgeworICAgIHRoaXMu
bG9jYWxzID0gbG9jYWxzOworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgZW5kKCkgeworICAg
IHRoaXMuYm9keS5wdXNoKGtFeHByRW5kKTsKKyAgICByZXR1cm4gdGhpcy5tb2R1bGU7CisgIH0K
K30KKworY2xhc3MgV2FzbUdsb2JhbEJ1aWxkZXIgeworICBjb25zdHJ1Y3Rvcihtb2R1bGUsIHR5
cGUsIG11dGFibGUpIHsKKyAgICB0aGlzLm1vZHVsZSA9IG1vZHVsZTsKKyAgICB0aGlzLnR5cGUg
PSB0eXBlOworICAgIHRoaXMubXV0YWJsZSA9IG11dGFibGU7CisgICAgdGhpcy5pbml0ID0gMDsK
KyAgfQorCisgIGV4cG9ydEFzKG5hbWUpIHsKKyAgICB0aGlzLm1vZHVsZS5leHBvcnRzLnB1c2go
e25hbWU6IG5hbWUsIGtpbmQ6IGtFeHRlcm5hbEdsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4OiB0aGlzLmluZGV4fSk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KK30K
KworY2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlz
LnR5cGVzID0gW107CisgICAgdGhpcy5pbXBvcnRzID0gW107CisgICAgdGhpcy5leHBvcnRzID0g
W107CisgICAgdGhpcy5nbG9iYWxzID0gW107CisgICAgdGhpcy5mdW5jdGlvbnMgPSBbXTsKKyAg
ICB0aGlzLmZ1bmN0aW9uX3RhYmxlID0gW107CisgICAgdGhpcy5mdW5jdGlvbl90YWJsZV9sZW5n
dGggPSAwOworICAgIHRoaXMuZnVuY3Rpb25fdGFibGVfaW5pdHMgPSBbXTsKKyAgICB0aGlzLnNl
Z21lbnRzID0gW107CisgICAgdGhpcy5leHBsaWNpdCA9IFtdOworICAgIHRoaXMubnVtX2ltcG9y
dGVkX2Z1bmNzID0gMDsKKyAgICB0aGlzLm51bV9pbXBvcnRlZF9nbG9iYWxzID0gMDsKKyAgICBy
ZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZFN0YXJ0KHN0YXJ0X2luZGV4KSB7CisgICAgdGhpcy5z
dGFydF9pbmRleCA9IHN0YXJ0X2luZGV4OworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYWRk
TWVtb3J5KG1pbiwgbWF4LCBleHApIHsKKyAgICB0aGlzLm1lbW9yeSA9IHttaW46IG1pbiwgbWF4
OiBtYXgsIGV4cDogZXhwfTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZEV4cGxpY2l0
U2VjdGlvbihieXRlcykgeworICAgIHRoaXMuZXhwbGljaXQucHVzaChieXRlcyk7CisgICAgcmV0
dXJuIHRoaXM7CisgIH0KKworICBzdHJpbmdUb0J5dGVzKG5hbWUpIHsKKyAgICB2YXIgcmVzdWx0
ID0gbmV3IEJpbmFyeSgpOworICAgIHJlc3VsdC5lbWl0X3UzMnYobmFtZS5sZW5ndGgpOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykgeworICAgICAgcmVzdWx0LmVt
aXRfdTgobmFtZS5jaGFyQ29kZUF0KGkpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAg
fQorCisgIGFkZEN1c3RvbVNlY3Rpb24obmFtZSwgYnl0ZXMpIHsKKyAgICBuYW1lID0gdGhpcy5z
dHJpbmdUb0J5dGVzKG5hbWUpOworICAgIHZhciBsZW5ndGggPSBuZXcgQmluYXJ5KCk7CisgICAg
bGVuZ3RoLmVtaXRfdTMydihuYW1lLmxlbmd0aCArIGJ5dGVzLmxlbmd0aCk7CisgICAgdGhpcy5l
eHBsaWNpdC5wdXNoKFswLCAuLi5sZW5ndGgsIC4uLm5hbWUsIC4uLmJ5dGVzXSk7CisgIH0KKwor
ICBhZGRUeXBlKHR5cGUpIHsKKyAgICAvLyBUT0RPOiBjYW5vbmljYWxpemUgdHlwZXM/CisgICAg
dGhpcy50eXBlcy5wdXNoKHR5cGUpOworICAgIHJldHVybiB0aGlzLnR5cGVzLmxlbmd0aCAtIDE7
CisgIH0KKworICBhZGRHbG9iYWwobG9jYWxfdHlwZSwgbXV0YWJsZSkgeworICAgIGxldCBnbG9i
ID0gbmV3IFdhc21HbG9iYWxCdWlsZGVyKHRoaXMsIGxvY2FsX3R5cGUsIG11dGFibGUpOworICAg
IGdsb2IuaW5kZXggPSB0aGlzLmdsb2JhbHMubGVuZ3RoICsgdGhpcy5udW1faW1wb3J0ZWRfZ2xv
YmFsczsKKyAgICB0aGlzLmdsb2JhbHMucHVzaChnbG9iKTsKKyAgICByZXR1cm4gZ2xvYjsKKyAg
fQorCisgIGFkZEZ1bmN0aW9uKG5hbWUsIHR5cGUpIHsKKyAgICBsZXQgdHlwZV9pbmRleCA9ICh0
eXBlb2YgdHlwZSkgPT0gIm51bWJlciIgPyB0eXBlIDogdGhpcy5hZGRUeXBlKHR5cGUpOworICAg
IGxldCBmdW5jID0gbmV3IFdhc21GdW5jdGlvbkJ1aWxkZXIodGhpcywgbmFtZSwgdHlwZV9pbmRl
eCk7CisgICAgZnVuYy5pbmRleCA9IHRoaXMuZnVuY3Rpb25zLmxlbmd0aCArIHRoaXMubnVtX2lt
cG9ydGVkX2Z1bmNzOworICAgIHRoaXMuZnVuY3Rpb25zLnB1c2goZnVuYyk7CisgICAgcmV0dXJu
IGZ1bmM7CisgIH0KKworICBhZGRJbXBvcnQobW9kdWxlID0gIiIsIG5hbWUsIHR5cGUpIHsKKyAg
ICBsZXQgdHlwZV9pbmRleCA9ICh0eXBlb2YgdHlwZSkgPT0gIm51bWJlciIgPyB0eXBlIDogdGhp
cy5hZGRUeXBlKHR5cGUpOworICAgIHRoaXMuaW1wb3J0cy5wdXNoKHttb2R1bGU6IG1vZHVsZSwg
bmFtZTogbmFtZSwga2luZDoga0V4dGVybmFsRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGU6IHR5cGVfaW5kZXh9KTsKKyAgICByZXR1cm4gdGhpcy5udW1faW1wb3J0ZWRfZnVu
Y3MrKzsKKyAgfQorCisgIGFkZEltcG9ydGVkR2xvYmFsKG1vZHVsZSA9ICIiLCBuYW1lLCB0eXBl
KSB7CisgICAgbGV0IG8gPSB7bW9kdWxlOiBtb2R1bGUsIG5hbWU6IG5hbWUsIGtpbmQ6IGtFeHRl
cm5hbEdsb2JhbCwgdHlwZTogdHlwZSwKKyAgICAgICAgICAgICBtdXRhYmxlOiBmYWxzZX0KKyAg
ICB0aGlzLmltcG9ydHMucHVzaChvKTsKKyAgICByZXR1cm4gdGhpcy5udW1faW1wb3J0ZWRfZ2xv
YmFscysrOworICB9CisKKyAgYWRkSW1wb3J0ZWRNZW1vcnkobW9kdWxlID0gIiIsIG5hbWUsIGlu
aXRpYWwgPSAwLCBtYXhpbXVtKSB7CisgICAgbGV0IG8gPSB7bW9kdWxlOiBtb2R1bGUsIG5hbWU6
IG5hbWUsIGtpbmQ6IGtFeHRlcm5hbE1lbW9yeSwKKyAgICAgICAgICAgICBpbml0aWFsOiBpbml0
aWFsLCBtYXhpbXVtOiBtYXhpbXVtfTsKKyAgICB0aGlzLmltcG9ydHMucHVzaChvKTsKKyAgICBy
ZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZEltcG9ydGVkVGFibGUobW9kdWxlID0gIiIsIG5hbWUs
IGluaXRpYWwsIG1heGltdW0pIHsKKyAgICBsZXQgbyA9IHttb2R1bGU6IG1vZHVsZSwgbmFtZTog
bmFtZSwga2luZDoga0V4dGVybmFsVGFibGUsIGluaXRpYWw6IGluaXRpYWwsCisgICAgICAgICAg
ICAgbWF4aW11bTogbWF4aW11bX07CisgICAgdGhpcy5pbXBvcnRzLnB1c2gobyk7CisgIH0KKwor
ICBhZGRFeHBvcnQobmFtZSwgaW5kZXgpIHsKKyAgICB0aGlzLmV4cG9ydHMucHVzaCh7bmFtZTog
bmFtZSwga2luZDoga0V4dGVybmFsRnVuY3Rpb24sIGluZGV4OiBpbmRleH0pOworICAgIHJldHVy
biB0aGlzOworICB9CisKKyAgYWRkRXhwb3J0T2ZLaW5kKG5hbWUsIGtpbmQsIGluZGV4KSB7Cisg
ICAgdGhpcy5leHBvcnRzLnB1c2goe25hbWU6IG5hbWUsIGtpbmQ6IGtpbmQsIGluZGV4OiBpbmRl
eH0pOworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYWRkRGF0YVNlZ21lbnQoYWRkciwgZGF0
YSwgaXNfZ2xvYmFsID0gZmFsc2UpIHsKKyAgICB0aGlzLnNlZ21lbnRzLnB1c2goe2FkZHI6IGFk
ZHIsIGRhdGE6IGRhdGEsIGlzX2dsb2JhbDogaXNfZ2xvYmFsfSk7CisgICAgcmV0dXJuIHRoaXMu
c2VnbWVudHMubGVuZ3RoIC0gMTsKKyAgfQorCisgIGV4cG9ydE1lbW9yeUFzKG5hbWUpIHsKKyAg
ICB0aGlzLmV4cG9ydHMucHVzaCh7bmFtZTogbmFtZSwga2luZDoga0V4dGVybmFsTWVtb3J5LCBp
bmRleDogMH0pOworICB9CisKKyAgYWRkRnVuY3Rpb25UYWJsZUluaXQoYmFzZSwgaXNfZ2xvYmFs
LCBhcnJheSwgaXNfaW1wb3J0ID0gZmFsc2UpIHsKKyAgICB0aGlzLmZ1bmN0aW9uX3RhYmxlX2lu
aXRzLnB1c2goe2Jhc2U6IGJhc2UsIGlzX2dsb2JhbDogaXNfZ2xvYmFsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXk6IGFycmF5fSk7CisgICAgaWYgKCFpc19nbG9i
YWwpIHsKKyAgICAgIHZhciBsZW5ndGggPSBiYXNlICsgYXJyYXkubGVuZ3RoOworICAgICAgaWYg
KGxlbmd0aCA+IHRoaXMuZnVuY3Rpb25fdGFibGVfbGVuZ3RoICYmICFpc19pbXBvcnQpIHsKKyAg
ICAgICAgdGhpcy5mdW5jdGlvbl90YWJsZV9sZW5ndGggPSBsZW5ndGg7CisgICAgICB9CisgICAg
fQorICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYXBwZW5kVG9UYWJsZShhcnJheSkgeworICAg
IGZvciAobGV0IG4gb2YgYXJyYXkpIHsKKyAgICAgIGlmICh0eXBlb2YgbiAhPSAnbnVtYmVyJykK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHRhYmxlIChlbnRyaWVzIGhhdmUgdG8g
YmUgbnVtYmVycyk6ICcgKyBhcnJheSk7CisgICAgfQorICAgIHJldHVybiB0aGlzLmFkZEZ1bmN0
aW9uVGFibGVJbml0KHRoaXMuZnVuY3Rpb25fdGFibGUubGVuZ3RoLCBmYWxzZSwgYXJyYXkpOwor
ICB9CisKKyAgc2V0RnVuY3Rpb25UYWJsZUxlbmd0aChsZW5ndGgpIHsKKyAgICB0aGlzLmZ1bmN0
aW9uX3RhYmxlX2xlbmd0aCA9IGxlbmd0aDsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIHRv
QXJyYXkoZGVidWcgPSBmYWxzZSkgeworICAgIGxldCBiaW5hcnkgPSBuZXcgQmluYXJ5OworICAg
IGxldCB3YXNtID0gdGhpczsKKworICAgIC8vIEFkZCBoZWFkZXIKKyAgICBiaW5hcnkuZW1pdF9o
ZWFkZXIoKTsKKworICAgIC8vIEFkZCB0eXBlIHNlY3Rpb24KKyAgICBpZiAod2FzbS50eXBlcy5s
ZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyB0eXBlcyBAICIg
KyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa1R5cGVTZWN0aW9u
Q29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20udHlwZXMu
bGVuZ3RoKTsKKyAgICAgICAgZm9yIChsZXQgdHlwZSBvZiB3YXNtLnR5cGVzKSB7CisgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3U4KGtXYXNtRnVuY3Rpb25UeXBlRm9ybSk7CisgICAgICAgICAgc2Vj
dGlvbi5lbWl0X3UzMnYodHlwZS5wYXJhbXMubGVuZ3RoKTsKKyAgICAgICAgICBmb3IgKGxldCBw
YXJhbSBvZiB0eXBlLnBhcmFtcykgeworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KHBhcmFt
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYodHlwZS5yZXN1bHRz
Lmxlbmd0aCk7CisgICAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHR5cGUucmVzdWx0cykgewor
ICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KHJlc3VsdCk7CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgaW1wb3J0cyBzZWN0aW9uCisgICAg
aWYgKHdhc20uaW1wb3J0cy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJl
bWl0dGluZyBpbXBvcnRzIEAgIiArIGJpbmFyeS5sZW5ndGgpOworICAgICAgYmluYXJ5LmVtaXRf
c2VjdGlvbihrSW1wb3J0U2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAgICBzZWN0aW9u
LmVtaXRfdTMydih3YXNtLmltcG9ydHMubGVuZ3RoKTsKKyAgICAgICAgZm9yIChsZXQgaW1wIG9m
IHdhc20uaW1wb3J0cykgeworICAgICAgICAgIHNlY3Rpb24uZW1pdF9zdHJpbmcoaW1wLm1vZHVs
ZSk7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3N0cmluZyhpbXAubmFtZSB8fCAnJyk7CisgICAg
ICAgICAgc2VjdGlvbi5lbWl0X3U4KGltcC5raW5kKTsKKyAgICAgICAgICBpZiAoaW1wLmtpbmQg
PT0ga0V4dGVybmFsRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGlt
cC50eXBlKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGltcC5raW5kID09IGtFeHRlcm5hbEdsb2Jh
bCkgeworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW1wLnR5cGUpOworICAgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3U4KGltcC5tdXRhYmxlKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGlt
cC5raW5kID09IGtFeHRlcm5hbE1lbW9yeSkgeworICAgICAgICAgICAgdmFyIGhhc19tYXggPSAo
dHlwZW9mIGltcC5tYXhpbXVtKSAhPSAidW5kZWZpbmVkIjsKKyAgICAgICAgICAgIHNlY3Rpb24u
ZW1pdF91OChoYXNfbWF4ID8gMSA6IDApOyAvLyBmbGFncworICAgICAgICAgICAgc2VjdGlvbi5l
bWl0X3UzMnYoaW1wLmluaXRpYWwpOyAvLyBpbml0aWFsCisgICAgICAgICAgICBpZiAoaGFzX21h
eCkgc2VjdGlvbi5lbWl0X3UzMnYoaW1wLm1heGltdW0pOyAvLyBtYXhpbXVtCisgICAgICAgICAg
fSBlbHNlIGlmIChpbXAua2luZCA9PSBrRXh0ZXJuYWxUYWJsZSkgeworICAgICAgICAgICAgc2Vj
dGlvbi5lbWl0X3U4KGtXYXNtRnVuY1JlZnRpb25UeXBlRm9ybSk7CisgICAgICAgICAgICB2YXIg
aGFzX21heCA9ICh0eXBlb2YgaW1wLm1heGltdW0pICE9ICJ1bmRlZmluZWQiOworICAgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3U4KGhhc19tYXggPyAxIDogMCk7IC8vIGZsYWdzCisgICAgICAgICAg
ICBzZWN0aW9uLmVtaXRfdTMydihpbXAuaW5pdGlhbCk7IC8vIGluaXRpYWwKKyAgICAgICAgICAg
IGlmIChoYXNfbWF4KSBzZWN0aW9uLmVtaXRfdTMydihpbXAubWF4aW11bSk7IC8vIG1heGltdW0K
KyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1bmtub3du
L3Vuc3VwcG9ydGVkIGltcG9ydCBraW5kICIgKyBpbXAua2luZCk7CisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZnVuY3Rpb25zIGRlY2xhcmF0
aW9ucworICAgIGxldCBudW1fZnVuY3Rpb25fbmFtZXMgPSAwOworICAgIGxldCBuYW1lcyA9IGZh
bHNlOworICAgIGlmICh3YXNtLmZ1bmN0aW9ucy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVi
dWcpIHByaW50KCJlbWl0dGluZyBmdW5jdGlvbiBkZWNscyBAICIgKyBiaW5hcnkubGVuZ3RoKTsK
KyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0Z1bmN0aW9uU2VjdGlvbkNvZGUsIHNlY3Rpb24g
PT4geworICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLmZ1bmN0aW9ucy5sZW5ndGgpOwor
ICAgICAgICBmb3IgKGxldCBmdW5jIG9mIHdhc20uZnVuY3Rpb25zKSB7CisgICAgICAgICAgaWYg
KGZ1bmMubmFtZSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICArK251bV9mdW5jdGlvbl9u
YW1lczsKKyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoZnVuYy50eXBl
X2luZGV4KTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGZ1bmN0
aW9uX3RhYmxlLgorICAgIGlmICh3YXNtLmZ1bmN0aW9uX3RhYmxlX2xlbmd0aCA+IDApIHsKKyAg
ICAgIGlmIChkZWJ1ZykgcHJpbnQoImVtaXR0aW5nIHRhYmxlIEAgIiArIGJpbmFyeS5sZW5ndGgp
OworICAgICAgYmluYXJ5LmVtaXRfc2VjdGlvbihrVGFibGVTZWN0aW9uQ29kZSwgc2VjdGlvbiA9
PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91OCgxKTsgIC8vIG9uZSB0YWJsZSBlbnRyeQorICAg
ICAgICBzZWN0aW9uLmVtaXRfdTgoa1dhc21GdW5jUmVmdGlvblR5cGVGb3JtKTsKKyAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KDEpOworICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLmZ1bmN0
aW9uX3RhYmxlX2xlbmd0aCk7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZnVuY3Rp
b25fdGFibGVfbGVuZ3RoKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIC8vIEFkZCBtZW1vcnkg
c2VjdGlvbgorICAgIGlmICh3YXNtLm1lbW9yeSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBpZiAo
ZGVidWcpIHByaW50KCJlbWl0dGluZyBtZW1vcnkgQCAiICsgYmluYXJ5Lmxlbmd0aCk7CisgICAg
ICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtNZW1vcnlTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7Cisg
ICAgICAgIHNlY3Rpb24uZW1pdF91OCgxKTsgIC8vIG9uZSBtZW1vcnkgZW50cnkKKyAgICAgICAg
Y29uc3QgaGFzX21heCA9IHdhc20ubWVtb3J5Lm1heCAhPT0gdW5kZWZpbmVkOworICAgICAgICBz
ZWN0aW9uLmVtaXRfdTMydihoYXNfbWF4ID8ga1Jlc2l6YWJsZU1heGltdW1GbGFnIDogMCk7Cisg
ICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20ubWVtb3J5Lm1pbik7CisgICAgICAgIGlmICho
YXNfbWF4KSBzZWN0aW9uLmVtaXRfdTMydih3YXNtLm1lbW9yeS5tYXgpOworICAgICAgfSk7Cisg
ICAgfQorCisgICAgLy8gQWRkIGdsb2JhbCBzZWN0aW9uLgorICAgIGlmICh3YXNtLmdsb2JhbHMu
bGVuZ3RoID4gMCkgeworICAgICAgaWYgKGRlYnVnKSBwcmludCAoImVtaXR0aW5nIGdsb2JhbHMg
QCAiICsgYmluYXJ5Lmxlbmd0aCk7CisgICAgICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtHbG9iYWxT
ZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20u
Z2xvYmFscy5sZW5ndGgpOworICAgICAgICBmb3IgKGxldCBnbG9iYWwgb2Ygd2FzbS5nbG9iYWxz
KSB7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGdsb2JhbC50eXBlKTsKKyAgICAgICAgICBz
ZWN0aW9uLmVtaXRfdTgoZ2xvYmFsLm11dGFibGUpOworICAgICAgICAgIGlmICgodHlwZW9mIGds
b2JhbC5pbml0X2luZGV4KSA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgLy8gRW1pdCBh
IGNvbnN0YW50IGluaXRpYWxpemVyLgorICAgICAgICAgICAgc3dpdGNoIChnbG9iYWwudHlwZSkg
eworICAgICAgICAgICAgY2FzZSBrV2FzbUkzMjoKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0
X3U4KGtFeHBySTMyQ29uc3QpOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihnbG9i
YWwuaW5pdCk7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrV2FzbUk2
NDoKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHBySTY0Q29uc3QpOworICAgICAg
ICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihnbG9iYWwuaW5pdCk7CisgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBrV2FzbUYzMjoKKyAgICAgICAgICAgICAgc2VjdGlvbi5l
bWl0X3U4KGtFeHByRjMyQ29uc3QpOworICAgICAgICAgICAgICBmMzJfdmlld1swXSA9IGdsb2Jh
bC5pbml0OworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzBdKTsKKyAg
ICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1sxXSk7CisgICAgICAgICAgICAg
IHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbMl0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVt
aXRfdTgoYnl0ZV92aWV3WzNdKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIGtXYXNtRjY0OgorICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJGNjRDb25z
dCk7CisgICAgICAgICAgICAgIGY2NF92aWV3WzBdID0gZ2xvYmFsLmluaXQ7CisgICAgICAgICAg
ICAgIHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbMF0pOworICAgICAgICAgICAgICBzZWN0aW9u
LmVtaXRfdTgoYnl0ZV92aWV3WzFdKTsKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGJ5
dGVfdmlld1syXSk7CisgICAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbM10p
OworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzRdKTsKKyAgICAgICAg
ICAgICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1s1XSk7CisgICAgICAgICAgICAgIHNlY3Rp
b24uZW1pdF91OChieXRlX3ZpZXdbNl0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgo
Ynl0ZV92aWV3WzddKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEVtaXQgYSBnbG9iYWwtaW5kZXggaW5pdGlh
bGl6ZXIuCisgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJHZXRHbG9iYWwpOworICAg
ICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoZ2xvYmFsLmluaXRfaW5kZXgpOworICAgICAgICAg
IH0KKyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJFbmQpOyAgLy8gZW5kIG9mIGluaXQg
ZXhwcmVzc2lvbgorICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZXhw
b3J0IHRhYmxlLgorICAgIHZhciBtZW1fZXhwb3J0ID0gKHdhc20ubWVtb3J5ICE9PSB1bmRlZmlu
ZWQgJiYgd2FzbS5tZW1vcnkuZXhwKTsKKyAgICB2YXIgZXhwb3J0c19jb3VudCA9IHdhc20uZXhw
b3J0cy5sZW5ndGggKyAobWVtX2V4cG9ydCA/IDEgOiAwKTsKKyAgICBpZiAoZXhwb3J0c19jb3Vu
dCA+IDApIHsKKyAgICAgIGlmIChkZWJ1ZykgcHJpbnQoImVtaXR0aW5nIGV4cG9ydHMgQCAiICsg
YmluYXJ5Lmxlbmd0aCk7CisgICAgICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtFeHBvcnRTZWN0aW9u
Q29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGV4cG9ydHNfY291
bnQpOworICAgICAgICBmb3IgKGxldCBleHAgb2Ygd2FzbS5leHBvcnRzKSB7CisgICAgICAgICAg
c2VjdGlvbi5lbWl0X3N0cmluZyhleHAubmFtZSk7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4
KGV4cC5raW5kKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihleHAuaW5kZXgpOworICAg
ICAgICB9CisgICAgICAgIGlmIChtZW1fZXhwb3J0KSB7CisgICAgICAgICAgc2VjdGlvbi5lbWl0
X3N0cmluZygibWVtb3J5Iik7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHRlcm5hbE1l
bW9yeSk7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KDApOworICAgICAgICB9CisgICAgICB9
KTsKKyAgICB9CisKKyAgICAvLyBBZGQgc3RhcnQgZnVuY3Rpb24gc2VjdGlvbi4KKyAgICBpZiAo
d2FzbS5zdGFydF9pbmRleCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50
KCJlbWl0dGluZyBzdGFydCBmdW5jdGlvbiBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJp
bmFyeS5lbWl0X3NlY3Rpb24oa1N0YXJ0U2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAg
ICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLnN0YXJ0X2luZGV4KTsKKyAgICAgIH0pOworICAgIH0K
KworICAgIC8vIEFkZCB0YWJsZSBlbGVtZW50cy4KKyAgICBpZiAod2FzbS5mdW5jdGlvbl90YWJs
ZV9pbml0cy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyB0
YWJsZSBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0Vs
ZW1lbnRTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHZhciBpbml0cyA9IHdhc20u
ZnVuY3Rpb25fdGFibGVfaW5pdHM7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGluaXRzLmxl
bmd0aCk7CisKKyAgICAgICAgZm9yIChsZXQgaW5pdCBvZiBpbml0cykgeworICAgICAgICAgIHNl
Y3Rpb24uZW1pdF91OCgwKTsgLy8gdGFibGUgaW5kZXgKKyAgICAgICAgICBpZiAoaW5pdC5pc19n
bG9iYWwpIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckdldEdsb2JhbCk7Cisg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckkzMkNv
bnN0KTsKKyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW5pdC5iYXNl
KTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJFbmQpOworICAgICAgICAgIHNlY3Rp
b24uZW1pdF91MzJ2KGluaXQuYXJyYXkubGVuZ3RoKTsKKyAgICAgICAgICBmb3IgKGxldCBpbmRl
eCBvZiBpbml0LmFycmF5KSB7CisgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihpbmRleCk7
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQg
ZnVuY3Rpb24gYm9kaWVzLgorICAgIGlmICh3YXNtLmZ1bmN0aW9ucy5sZW5ndGggPiAwKSB7Cisg
ICAgICAvLyBlbWl0IGZ1bmN0aW9uIGJvZGllcworICAgICAgaWYgKGRlYnVnKSBwcmludCgiZW1p
dHRpbmcgY29kZSBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rp
b24oa0NvZGVTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91
MzJ2KHdhc20uZnVuY3Rpb25zLmxlbmd0aCk7CisgICAgICAgIGZvciAobGV0IGZ1bmMgb2Ygd2Fz
bS5mdW5jdGlvbnMpIHsKKyAgICAgICAgICAvLyBGdW5jdGlvbiBib2R5IGxlbmd0aCB3aWxsIGJl
IHBhdGNoZWQgbGF0ZXIuCisgICAgICAgICAgbGV0IGxvY2FsX2RlY2xzID0gW107CisgICAgICAg
ICAgbGV0IGwgPSBmdW5jLmxvY2FsczsKKyAgICAgICAgICBpZiAobCAhPT0gdW5kZWZpbmVkKSB7
CisgICAgICAgICAgICBsZXQgbG9jYWxfZGVjbHNfY291bnQgPSAwOworICAgICAgICAgICAgaWYg
KGwuaTMyX2NvdW50ID4gMCkgeworICAgICAgICAgICAgICBsb2NhbF9kZWNscy5wdXNoKHtjb3Vu
dDogbC5pMzJfY291bnQsIHR5cGU6IGtXYXNtSTMyfSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAobC5pNjRfY291bnQgPiAwKSB7CisgICAgICAgICAgICAgIGxvY2FsX2RlY2xzLnB1
c2goe2NvdW50OiBsLmk2NF9jb3VudCwgdHlwZToga1dhc21JNjR9KTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChsLmYzMl9jb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgbG9jYWxf
ZGVjbHMucHVzaCh7Y291bnQ6IGwuZjMyX2NvdW50LCB0eXBlOiBrV2FzbUYzMn0pOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKGwuZjY0X2NvdW50ID4gMCkgeworICAgICAgICAgICAg
ICBsb2NhbF9kZWNscy5wdXNoKHtjb3VudDogbC5mNjRfY291bnQsIHR5cGU6IGtXYXNtRjY0fSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgbGV0IGhlYWRlciA9IG5l
dyBCaW5hcnk7CisgICAgICAgICAgaGVhZGVyLmVtaXRfdTMydihsb2NhbF9kZWNscy5sZW5ndGgp
OworICAgICAgICAgIGZvciAobGV0IGRlY2wgb2YgbG9jYWxfZGVjbHMpIHsKKyAgICAgICAgICAg
IGhlYWRlci5lbWl0X3UzMnYoZGVjbC5jb3VudCk7CisgICAgICAgICAgICBoZWFkZXIuZW1pdF91
OChkZWNsLnR5cGUpOworICAgICAgICAgIH0KKworICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2
KGhlYWRlci5sZW5ndGggKyBmdW5jLmJvZHkubGVuZ3RoKTsKKyAgICAgICAgICBzZWN0aW9uLmVt
aXRfYnl0ZXMoaGVhZGVyKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfYnl0ZXMoZnVuYy5ib2R5
KTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGRhdGEgc2VnbWVu
dHMuCisgICAgaWYgKHdhc20uc2VnbWVudHMubGVuZ3RoID4gMCkgeworICAgICAgaWYgKGRlYnVn
KSBwcmludCgiZW1pdHRpbmcgZGF0YSBzZWdtZW50cyBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAg
ICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0RhdGFTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7Cisg
ICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uc2VnbWVudHMubGVuZ3RoKTsKKyAgICAgICAg
Zm9yIChsZXQgc2VnIG9mIHdhc20uc2VnbWVudHMpIHsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRf
dTgoMCk7ICAvLyBsaW5lYXIgbWVtb3J5IGluZGV4IDAKKyAgICAgICAgICBpZiAoc2VnLmlzX2ds
b2JhbCkgeworICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZXIgaXMgYSBnbG9iYWwgdmFyaWFibGUK
KyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckdldEdsb2JhbCk7CisgICAgICAgICAg
ICBzZWN0aW9uLmVtaXRfdTMydihzZWcuYWRkcik7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIGluaXRpYWxpemVyIGlzIGEgY29uc3RhbnQKKyAgICAgICAgICAgIHNlY3Rpb24u
ZW1pdF91OChrRXhwckkzMkNvbnN0KTsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHNl
Zy5hZGRyKTsKKyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHByRW5k
KTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihzZWcuZGF0YS5sZW5ndGgpOworICAgICAg
ICAgIHNlY3Rpb24uZW1pdF9ieXRlcyhzZWcuZGF0YSk7CisgICAgICAgIH0KKyAgICAgIH0pOwor
ICAgIH0KKworICAgIC8vIEFkZCBhbnkgZXhwbGljaXRseSBhZGRlZCBzZWN0aW9ucworICAgIGZv
ciAobGV0IGV4cCBvZiB3YXNtLmV4cGxpY2l0KSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJl
bWl0dGluZyBleHBsaWNpdCBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0
X2J5dGVzKGV4cCk7CisgICAgfQorCisgICAgLy8gQWRkIGZ1bmN0aW9uIG5hbWVzLgorICAgIGlm
IChudW1fZnVuY3Rpb25fbmFtZXMgPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCdlbWl0
dGluZyBuYW1lcyBAICcgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rp
b24oa1Vua25vd25TZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1p
dF9zdHJpbmcoJ25hbWUnKTsKKyAgICAgICAgc2VjdGlvbi5lbWl0X3NlY3Rpb24oa0Z1bmN0aW9u
TmFtZXNDb2RlLCBuYW1lX3NlY3Rpb24gPT4geworICAgICAgICAgIG5hbWVfc2VjdGlvbi5lbWl0
X3UzMnYobnVtX2Z1bmN0aW9uX25hbWVzKTsKKyAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIHdh
c20uZnVuY3Rpb25zKSB7CisgICAgICAgICAgICBpZiAoZnVuYy5uYW1lID09PSB1bmRlZmluZWQp
IGNvbnRpbnVlOworICAgICAgICAgICAgbmFtZV9zZWN0aW9uLmVtaXRfdTMydihmdW5jLmluZGV4
KTsKKyAgICAgICAgICAgIG5hbWVfc2VjdGlvbi5lbWl0X3N0cmluZyhmdW5jLm5hbWUpOworICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gYmlu
YXJ5OworICB9CisKKyAgdG9CdWZmZXIoZGVidWcgPSBmYWxzZSkgeworICAgIGxldCBieXRlcyA9
IHRoaXMudG9BcnJheShkZWJ1Zyk7CisgICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihi
eXRlcy5sZW5ndGgpOworICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICBsZXQgdmFs
ID0gYnl0ZXNbaV07CisgICAgICBpZiAoKHR5cGVvZiB2YWwpID09ICJzdHJpbmciKSB2YWwgPSB2
YWwuY2hhckNvZGVBdCgwKTsKKyAgICAgIHZpZXdbaV0gPSB2YWwgfCAwOworICAgIH0KKyAgICBy
ZXR1cm4gYnVmZmVyOworICB9CisKKyAgaW5zdGFudGlhdGUoZmZpKSB7CisgICAgbGV0IG1vZHVs
ZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUodGhpcy50b0J1ZmZlcigpKTsKKyAgICBsZXQgaW5z
dGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCBmZmkpOworICAgIHJldHVy
biBpbnN0YW5jZTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxs
LXNwZWMtaGFybmVzcy93YXN0LmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFy
bmVzcy93YXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYTcxYTMzMjhlNTMyYmJiMDcxMzhmMTA1NGM0ZDdm
NWY3Njc5YTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3Bl
Yy1oYXJuZXNzL3dhc3QuanMKQEAgLTAsMCArMSwyOTc3NyBAQAorLy8gRE8gTk9UIEVESVQuIEdl
bmVyYXRlZCBmcm9tIFdlYkFzc2VtYmx5IHNwZWMgaW50ZXJwcmV0ZXIKKworbGV0IFdlYkFzc2Vt
Ymx5VGV4dCA9IChmdW5jdGlvbigpIHsKK8KgIGxldCBfcmVnaXN0cnkgPSB7X19wcm90b19fOiBu
dWxsfTsKKyAgZnVuY3Rpb24gbm9ybWFsaXplKGZpbGUpIHsKKyAgICByZXR1cm4gZmlsZS5zcGxp
dCgnLycpLnJldmVyc2UoKVswXS5zcGxpdCgnLicpWzBdOworICB9CivCoCBmdW5jdGlvbiByZXF1
aXJlKGZpbGUpIHsKK8KgIMKgIGxldCBuYW1lID0gbm9ybWFsaXplKGZpbGUpOworICAgIGlmICgh
KG5hbWUgaW4gX3JlZ2lzdHJ5KSkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIG1v
ZHVsZTogJyArIG5hbWUpCivCoCDCoCB9IGVsc2UgaWYgKHR5cGVvZiBfcmVnaXN0cnlbbmFtZV0g
PT09ICdmdW5jdGlvbicpIHsKKworCivCoCDCoCDCoCBsZXQgZiA9IF9yZWdpc3RyeVtuYW1lXTsK
K8KgIMKgIMKgIF9yZWdpc3RyeVtuYW1lXSA9IGZ1bmN0aW9uKCkgeyB0aHJvdyBuZXcgRXJyb3Io
J2N5Y2xpYyBtb2R1bGU6ICcgKyBuYW1lKSB9OworwqAgwqAgwqAgX3JlZ2lzdHJ5W25hbWVdID0g
ZigpOworwqAgwqAgfQorwqAgwqAgcmV0dXJuIF9yZWdpc3RyeVtuYW1lXTsKK8KgIH0KKworCisg
IF9yZWdpc3RyeVsnYXJyYW5nZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9
IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgYXJyYW5nZS5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVk
IGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisn
dXNlIHN0cmljdCc7CisKK3ZhciBGMzIgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4v
ZjMyIik7Cit2YXIgRjY0ICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Y2NCIpOwor
dmFyIEkzMiAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9pMzIiKTsKK3ZhciBJNjQg
ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vaTY0Iik7Cit2YXIgTGliICAgICAgICAg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL2xpYiIpOwordmFyIExpc3QgICAgICAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBCbG9jayAgICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFy
IEN1cnJ5ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1
cnJ5Iik7Cit2YXIgVHlwZXMgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3R5cGVzIik7
Cit2YXIgQnVmZmVyICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvYnVmZmVyIik7Cit2YXIgRGVjb2RlICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Rl
Y29kZSIpOwordmFyIEVuY29kZSAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9lbmNvZGUi
KTsKK3ZhciBQcmludGYgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xp
Yi9qcy9wcmludGYiKTsKK3ZhciBTb3VyY2UgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4v
c291cmNlIik7Cit2YXIgJCRTdHJpbmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0
Zm9ybS9saWIvanMvc3RyaW5nIik7Cit2YXIgVmFsdWVzICAgICAgICAgICAgICAgICAgPSByZXF1
aXJlKCIuL3ZhbHVlcyIpOwordmFyIENhbWxfaW50MzIgICAgICAgICAgICAgID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfaW50MzIiKTsKK3ZhciBQZXJ2YXNpdmVzICAgICAgICAg
ICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7Cit2YXIgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gYWRkX2hleF9jaGFyKGJ1ZiwgYykgewor
ICByZXR1cm4gQ3VycnkuXzEoUHJpbnRmLmJwcmludGYoYnVmLCAvKiBGb3JtYXQgKi9bCisgICAg
ICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAg
ICAgICAgICAgICAgIC8qICJcXCIgKi85MiwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQg
Ki9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBaZXJvcyAqLzIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAg
ICAgICBdKQorICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICJcXCUw
MngiCisgICAgICAgICAgICAgICAgXSksIGMpOworfQorCitmdW5jdGlvbiBhZGRfY2hhcihidWYs
IGMpIHsKKyAgaWYgKGMgPCAvKiAiICIgKi8zMiB8fCBjID49IC8qICJcMTI3IiAqLzEyNykgewor
ICAgIHJldHVybiBhZGRfaGV4X2NoYXIoYnVmLCBjKTsKKyAgfQorICBlbHNlIHsKKyAgICBpZiAo
YyA9PT0gLyogIlwiIiAqLzM0IHx8IGMgPT09IC8qICJcXCIgKi85MikgeworICAgICAgQnVmZmVy
LmFkZF9jaGFyKGJ1ZiwgLyogIlxcIiAqLzkyKTsKKyAgICB9CisgICAgcmV0dXJuIEJ1ZmZlci5h
ZGRfY2hhcihidWYsIGMpOworICB9Cit9CisKK2Z1bmN0aW9uIHN0cmluZ193aXRoKGFkZF9jaGFy
LCBzKSB7CisgIHZhciBidWYgPSBCdWZmZXIuY3JlYXRlKENhbWxfaW50MzIuaW11bCgzLCBzLmxl
bmd0aCkgKyAyIHwgMCk7CisgIEJ1ZmZlci5hZGRfY2hhcihidWYsIC8qICJcIiIgKi8zNCk7Cisg
ICQkU3RyaW5nLml0ZXIoQ3VycnkuXzEoYWRkX2NoYXIsIGJ1ZiksIHMpOworICBCdWZmZXIuYWRk
X2NoYXIoYnVmLCAvKiAiXCIiICovMzQpOworICByZXR1cm4gQnVmZmVyLmNvbnRlbnRzKGJ1Zik7
Cit9CisKK2Z1bmN0aW9uIGxpc3Rfb2Zfb3B0KHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAg
IHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIHBhcmFtWzBdLAorICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8w
OworICB9Cit9CisKK2Z1bmN0aW9uIGJyZWFrX2J5dGVzKHMpIHsKKyAgdmFyIHNzID0gQ3Vycnku
XzIoTGliLiQkU3RyaW5nWy8qIGJyZWFrdXAgKi8wXSwgcywgMTYpOworICB2YXIgZiA9IGZ1bmN0
aW9uIChwYXJhbSkgeworICAgIHJldHVybiAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193
aXRoKGFkZF9oZXhfY2hhciwgcGFyYW0pXSk7CisgIH07CisgIHJldHVybiBMaXN0Lm1hcChmLCBz
cyk7Cit9CisKK2Z1bmN0aW9uIGRlY2xzKGtpbmQsIHRzKSB7CisgIHZhciBoZWFkID0ga2luZDsK
KyAgdmFyIGYgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2Nr
Ll9fKDAsIFtUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSldKTsKKyAgfTsKKyAgdmFy
IHhzID0gdHM7CisgIGlmICh4cykgeworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAg
IC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgaGVhZCwKKyAgICAgICAg
ICAgICAgICBMaXN0Lm1hcChmLCB4cykKKyAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAq
LzA7CisgIH0KK30KKworZnVuY3Rpb24gZnVuY190eXBlKHBhcmFtKSB7CisgIHJldHVybiAvKiBO
b2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgImZ1bmMiLAorICAgICAgICAgICAgUGVy
dmFzaXZlcy4kYXQoZGVjbHMoInBhcmFtIiwgcGFyYW1bMF0pLCBkZWNscygicmVzdWx0IiwgcGFy
YW1bMV0pKQorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBsaW1pdHMobmF0LCBwYXJhbSkg
eworICB2YXIgeHMgPSBsaXN0X29mX29wdChwYXJhbVsvKiBtYXggKi8xXSk7CisgIHJldHVybiAk
JFN0cmluZy5jb25jYXQoIiAiLCAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzEobmF0
LCBwYXJhbVsvKiBtaW4gKi8wXSksCisgICAgICAgICAgICAgIExpc3QubWFwKG5hdCwgeHMpCisg
ICAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gZ2xvYmFsX3R5cGUocGFyYW0pIHsKKyAgdmFy
IHQgPSBwYXJhbVswXTsKKyAgaWYgKHBhcmFtWzFdICE9PSAwKSB7CisgICAgcmV0dXJuIC8qIE5v
ZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICJtdXQiLAorICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW1R5cGVzLnN0
cmluZ19vZl92YWx1ZV90eXBlKHQpXSksCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIF0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAv
KiBBdG9tICovQmxvY2suX18oMCwgW1R5cGVzLnN0cmluZ19vZl92YWx1ZV90eXBlKHQpXSk7Cisg
IH0KK30KKworZnVuY3Rpb24gdGVzdG9wKF8sIF8kMSkgeworICByZXR1cm4gImVxeiI7Cit9CisK
K2Z1bmN0aW9uIHJlbG9wKF8sIHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNl
IDAgOiAKKyAgICAgICAgcmV0dXJuICJlcSI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVy
biAibmUiOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gImx0X3MiOworICAgIGNhc2Ug
MyA6IAorICAgICAgICByZXR1cm4gImx0X3UiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1
cm4gImd0X3MiOworICAgIGNhc2UgNSA6IAorICAgICAgICByZXR1cm4gImd0X3UiOworICAgIGNh
c2UgNiA6IAorICAgICAgICByZXR1cm4gImxlX3MiOworICAgIGNhc2UgNyA6IAorICAgICAgICBy
ZXR1cm4gImxlX3UiOworICAgIGNhc2UgOCA6IAorICAgICAgICByZXR1cm4gImdlX3MiOworICAg
IGNhc2UgOSA6IAorICAgICAgICByZXR1cm4gImdlX3UiOworICAgIAorICB9Cit9CisKK2Z1bmN0
aW9uIHVub3AoXywgcGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAor
ICAgICAgICByZXR1cm4gImNseiI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAiY3R6
IjsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuICJwb3BjbnQiOworICAgIAorICB9Cit9
CisKK2Z1bmN0aW9uIGJpbm9wKF8sIHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBj
YXNlIDAgOiAKKyAgICAgICAgcmV0dXJuICJhZGQiOworICAgIGNhc2UgMSA6IAorICAgICAgICBy
ZXR1cm4gInN1YiI7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAibXVsIjsKKyAgICBj
YXNlIDMgOiAKKyAgICAgICAgcmV0dXJuICJkaXZfcyI7CisgICAgY2FzZSA0IDogCisgICAgICAg
IHJldHVybiAiZGl2X3UiOworICAgIGNhc2UgNSA6IAorICAgICAgICByZXR1cm4gInJlbV9zIjsK
KyAgICBjYXNlIDYgOiAKKyAgICAgICAgcmV0dXJuICJyZW1fdSI7CisgICAgY2FzZSA3IDogCisg
ICAgICAgIHJldHVybiAiYW5kIjsKKyAgICBjYXNlIDggOiAKKyAgICAgICAgcmV0dXJuICJvciI7
CisgICAgY2FzZSA5IDogCisgICAgICAgIHJldHVybiAieG9yIjsKKyAgICBjYXNlIDEwIDogCisg
ICAgICAgIHJldHVybiAic2hsIjsKKyAgICBjYXNlIDExIDogCisgICAgICAgIHJldHVybiAic2hy
X3MiOworICAgIGNhc2UgMTIgOiAKKyAgICAgICAgcmV0dXJuICJzaHJfdSI7CisgICAgY2FzZSAx
MyA6IAorICAgICAgICByZXR1cm4gInJvdGwiOworICAgIGNhc2UgMTQgOiAKKyAgICAgICAgcmV0
dXJuICJyb3RyIjsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBjdnRvcCh4eCwgcGFyYW0pIHsK
KyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gImV4dGVu
ZF9zL2kzMiI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAiZXh0ZW5kX3UvaTMyIjsK
KyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuICJ3cmFwL2k2NCI7CisgICAgY2FzZSAzIDog
CisgICAgICAgIHJldHVybiAidHJ1bmNfcy9mMzIiOworICAgIGNhc2UgNCA6IAorICAgICAgICBy
ZXR1cm4gInRydW5jX3UvZjMyIjsKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuICJ0cnVu
Y19zL2Y2NCI7CisgICAgY2FzZSA2IDogCisgICAgICAgIHJldHVybiAidHJ1bmNfdS9mNjQiOwor
ICAgIGNhc2UgNyA6IAorICAgICAgICByZXR1cm4gInJlaW50ZXJwcmV0L2YiICsgeHg7CisgICAg
CisgIH0KK30KKworZnVuY3Rpb24gdGVzdG9wJDEoXywgXyQxKSB7CisgIHRocm93IFsKKyAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgIFsKKyAg
ICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJw
cmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9hcnJhbmdlLm1sIiwKKyAgICAgICAgICAxMjgsCisgICAg
ICAgICAgMjcKKyAgICAgICAgXQorICAgICAgXTsKK30KKworZnVuY3Rpb24gcmVsb3AkMShfLCBw
YXJhbSkgeworICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVy
biAiZXEiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gIm5lIjsKKyAgICBjYXNlIDIg
OiAKKyAgICAgICAgcmV0dXJuICJsdCI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAi
Z3QiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gImxlIjsKKyAgICBjYXNlIDUgOiAK
KyAgICAgICAgcmV0dXJuICJnZSI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gdW5vcCQxKF8s
IHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0
dXJuICJuZWciOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gImFicyI7CisgICAgY2Fz
ZSAyIDogCisgICAgICAgIHJldHVybiAiY2VpbCI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJl
dHVybiAiZmxvb3IiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gInRydW5jIjsKKyAg
ICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuICJuZWFyZXN0IjsKKyAgICBjYXNlIDYgOiAKKyAg
ICAgICAgcmV0dXJuICJzcXJ0IjsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBiaW5vcCQxKF8s
IHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0
dXJuICJhZGQiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gInN1YiI7CisgICAgY2Fz
ZSAyIDogCisgICAgICAgIHJldHVybiAibXVsIjsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAgcmV0
dXJuICJkaXYiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gIm1pbiI7CisgICAgY2Fz
ZSA1IDogCisgICAgICAgIHJldHVybiAibWF4IjsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgcmV0
dXJuICJjb3B5c2lnbiI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gY3Z0b3AkMSh4eCwgcGFy
YW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4g
ImNvbnZlcnRfcy9pMzIiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRf
dS9pMzIiOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfcy9pNjQiOwor
ICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfdS9pNjQiOworICAgIGNhc2Ug
NCA6IAorICAgICAgICByZXR1cm4gInByb21vdGUvZjMyIjsKKyAgICBjYXNlIDUgOiAKKyAgICAg
ICAgcmV0dXJuICJkZW1vdGUvZjY0IjsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgcmV0dXJuICJy
ZWludGVycHJldC9pIiArIHh4OworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIG9wZXIocGFyYW0s
IG9wKSB7CisgIHZhciBmbG9hdG9wID0gcGFyYW1bMV07CisgIHZhciBpbnRvcCA9IHBhcmFtWzBd
OworICB2YXIgJGpzOworICBzd2l0Y2ggKG9wLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAg
ICAgICAgJGpzID0gQ3VycnkuXzIoaW50b3AsICIzMiIsIG9wWzBdKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAxIDogCisgICAgICAgICRqcyA9IEN1cnJ5Ll8yKGludG9wLCAiNjQiLCBvcFsw
XSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMiA6IAorICAgICAgICAkanMgPSBDdXJyeS5f
MihmbG9hdG9wLCAiMzIiLCBvcFswXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMyA6IAor
ICAgICAgICAkanMgPSBDdXJyeS5fMihmbG9hdG9wLCAiNjQiLCBvcFswXSk7CisgICAgICAgIGJy
ZWFrOworICAgIAorICB9CisgIHJldHVybiBUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShWYWx1
ZXMudHlwZV9vZihvcCkpICsgKCIuIiArICRqcyk7Cit9CisKK3ZhciBwYXJ0aWFsX2FyZyA9IC8q
IHR1cGxlICovWworICB1bm9wLAorICB1bm9wJDEKK107CisKK2Z1bmN0aW9uIHVub3AkMihwYXJh
bSkgeworICByZXR1cm4gb3BlcihwYXJ0aWFsX2FyZywgcGFyYW0pOworfQorCit2YXIgcGFydGlh
bF9hcmckMSA9IC8qIHR1cGxlICovWworICBiaW5vcCwKKyAgYmlub3AkMQorXTsKKworZnVuY3Rp
b24gYmlub3AkMihwYXJhbSkgeworICByZXR1cm4gb3BlcihwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7
Cit9CisKK3ZhciBwYXJ0aWFsX2FyZyQyID0gLyogdHVwbGUgKi9bCisgIHRlc3RvcCwKKyAgdGVz
dG9wJDEKK107CisKK2Z1bmN0aW9uIHRlc3RvcCQyKHBhcmFtKSB7CisgIHJldHVybiBvcGVyKHBh
cnRpYWxfYXJnJDIsIHBhcmFtKTsKK30KKwordmFyIHBhcnRpYWxfYXJnJDMgPSAvKiB0dXBsZSAq
L1sKKyAgcmVsb3AsCisgIHJlbG9wJDEKK107CisKK2Z1bmN0aW9uIHJlbG9wJDIocGFyYW0pIHsK
KyAgcmV0dXJuIG9wZXIocGFydGlhbF9hcmckMywgcGFyYW0pOworfQorCit2YXIgcGFydGlhbF9h
cmckNCA9IC8qIHR1cGxlICovWworICBjdnRvcCwKKyAgY3Z0b3AkMQorXTsKKworZnVuY3Rpb24g
Y3Z0b3AkMihwYXJhbSkgeworICByZXR1cm4gb3BlcihwYXJ0aWFsX2FyZyQ0LCBwYXJhbSk7Cit9
CisKK2Z1bmN0aW9uIG1lbV9zaXplKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBj
YXNlIDAgOiAKKyAgICAgICAgcmV0dXJuICI4IjsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0
dXJuICIxNiI7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAiMzIiOworICAgIAorICB9
Cit9CisKK2Z1bmN0aW9uIGV4dGVuc2lvbihwYXJhbSkgeworICBpZiAocGFyYW0gIT09IDApIHsK
KyAgICByZXR1cm4gIl91IjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gIl9zIjsKKyAgfQor
fQorCitmdW5jdGlvbiBtZW1vcChuYW1lLCBwYXJhbSkgeworICB2YXIgb2Zmc2V0ID0gcGFyYW1b
Lyogb2Zmc2V0ICovMl07CisgIHZhciBhbGlnbiA9IHBhcmFtWy8qIGFsaWduICovMV07CisgIHZh
ciB0eSA9IHBhcmFtWy8qIHR5ICovMF07CisgIHJldHVybiBUeXBlcy5zdHJpbmdfb2ZfdmFsdWVf
dHlwZSh0eSkgKyAoIi4iICsgKG5hbWUgKyAoKAorICAgICAgICAgICAgICAgIG9mZnNldCA/ICIg
b2Zmc2V0PSIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG9mZnNldCkgOiAiIgorICAgICAg
ICAgICAgICApICsgKAorICAgICAgICAgICAgICAgICgxIDw8IGFsaWduKSA9PT0gVHlwZXMuc2l6
ZSh0eSkgPyAiIiA6ICIgYWxpZ249IiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgQ3Vycnku
XzEoSTMyLm9mX2ludF91LCAoMSA8PCBhbGlnbikpKQorICAgICAgICAgICAgICApKSkpOworfQor
CitmdW5jdGlvbiBsb2Fkb3Aob3ApIHsKKyAgdmFyIG1hdGNoID0gb3BbLyogc3ogKi8zXTsKKyAg
aWYgKG1hdGNoKSB7CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICByZXR1cm4gbWVt
b3AoImxvYWQiICsgKG1lbV9zaXplKG1hdGNoJDFbMF0pICsgZXh0ZW5zaW9uKG1hdGNoJDFbMV0p
KSwgb3ApOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBtZW1vcCgibG9hZCIsIG9wKTsKKyAg
fQorfQorCitmdW5jdGlvbiBzdG9yZW9wKG9wKSB7CisgIHZhciBtYXRjaCA9IG9wWy8qIHN6ICov
M107CisgIGlmIChtYXRjaCkgeworICAgIHJldHVybiBtZW1vcCgic3RvcmUiICsgbWVtX3NpemUo
bWF0Y2hbMF0pLCBvcCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG1lbW9wKCJzdG9yZSIs
IG9wKTsKKyAgfQorfQorCitmdW5jdGlvbiAkJHZhcih4KSB7CisgIHJldHVybiBDdXJyeS5fMShJ
MzIudG9fc3RyaW5nX3UsIHhbLyogaXQgKi8xXSk7Cit9CisKK2Z1bmN0aW9uIGNvbnN0b3Aodikg
eworICByZXR1cm4gVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUoVmFsdWVzLnR5cGVfb2Yodlsv
KiBpdCAqLzFdKSkgKyAiLmNvbnN0IjsKK30KKworZnVuY3Rpb24gaW5zdHIoZSkgeworICB2YXIg
bWF0Y2ggPSBlWy8qIGl0ICovMV07CisgIHZhciBtYXRjaCQxOworICBpZiAodHlwZW9mIG1hdGNo
ID09PSAibnVtYmVyIikgeworICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAgIGNhc2UgMCA6IAor
ICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJ1bnJlYWNoYWJs
ZSIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAg
ICAgICAgICAgIm5vcCIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1
cGxlICovWworICAgICAgICAgICAgInJldHVybiIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAg
bWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgImRyb3AiLAorICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6
IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJzZWxlY3Qi
LAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICJjdXJyZW50X21lbW9yeSIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgbWF0Y2gk
MSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgImdyb3dfbWVtb3J5IiwKKyAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9
CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChtYXRjaC50YWcgfCAwKSB7CisgICAgICBjYXNl
IDAgOiAKKyAgICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAg
cmV0dXJuIC8qIEF0b20gKi9CbG9jay5fXygwLCBbVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUo
cGFyYW0pXSk7CisgICAgICAgICAgfTsKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9b
CisgICAgICAgICAgICAiYmxvY2siLAorICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoTGlzdC5t
YXAoZiwgbWF0Y2hbMF0pLCBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMV0pKQorICAgICAgICAgIF07
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB2YXIgZiQxID0g
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2NrLl9f
KDAsIFtUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSldKTsKKyAgICAgICAgICB9Owor
ICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJsb29wIiwKKyAg
ICAgICAgICAgIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFwKGYkMSwgbWF0Y2hbMF0pLCBMaXN0Lm1h
cChpbnN0ciwgbWF0Y2hbMV0pKQorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIDIgOiAKKyAgICAgICAgICB2YXIgZiQyID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAg
ICAgICAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBlcy5zdHJpbmdfb2ZfdmFs
dWVfdHlwZShwYXJhbSldKTsKKyAgICAgICAgICB9OworICAgICAgICAgIG1hdGNoJDEgPSAvKiB0
dXBsZSAqL1sKKyAgICAgICAgICAgICJpZiIsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChM
aXN0Lm1hcChmJDIsIG1hdGNoWzBdKSwgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAvKiBO
b2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAgICAgICJ0aGVuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMV0pCisgICAgICAgICAgICAg
ICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAiZWxz
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMl0pCisg
ICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgXTsKKyAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0
dXBsZSAqL1sKKyAgICAgICAgICAgICJiciAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBt
YXRjaFswXVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICBtYXRjaCQxID0g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAiYnJfaWYgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJp
bmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFy
IHhzID0gUGVydmFzaXZlcy4kYXQobWF0Y2hbMF0sIC8qIDo6ICovWworICAgICAgICAgICAgICAg
IG1hdGNoWzFdLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdKTsK
KyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAiYnJfdGFibGUg
IiArICQkU3RyaW5nLmNvbmNhdCgiICIsIExpc3QubWFwKCQkdmFyLCB4cykpLAorICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
NiA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJjYWxs
ICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pLAorICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgNyA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
ICJjYWxsX2luZGlyZWN0ICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8q
IGl0ICovMV0pLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgICJnZXRfbG9jYWwgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwg
bWF0Y2hbMF1bLyogaXQgKi8xXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBd
OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgbWF0Y2gkMSA9
IC8qIHR1cGxlICovWworICAgICAgICAgICAgInNldF9sb2NhbCAiICsgQ3VycnkuXzEoSTMyLnRv
X3N0cmluZ191LCBtYXRjaFswXVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEwIDogCisgICAgICAg
ICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgInRlZV9sb2NhbCAiICsgQ3Vy
cnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXRjaFswXVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEx
IDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgImdldF9n
bG9iYWwgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSks
CisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICJzZXRfZ2xvYmFsICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBd
Wy8qIGl0ICovMV0pLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICBsb2Fkb3AobWF0Y2hbMF0pLAorICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTQgOiAKKyAg
ICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBzdG9yZW9wKG1hdGNo
WzBdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgdmFyIGxpdCA9IG1hdGNoWzBdOworICAg
ICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIGNvbnN0b3AobGl0KSAr
ICgiICIgKyBWYWx1ZXMuc3RyaW5nX29mX3ZhbHVlKGxpdFsvKiBpdCAqLzFdKSksCisgICAgICAg
ICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAxNiA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIEN1
cnJ5Ll8xKHRlc3RvcCQyLCBtYXRjaFswXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxNyA6IAorICAgICAgICAgIG1h
dGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKHJlbG9wJDIsIG1hdGNo
WzBdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDE4IDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWwor
ICAgICAgICAgICAgQ3VycnkuXzEodW5vcCQyLCBtYXRjaFswXSksCisgICAgICAgICAgICAvKiBb
XSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxOSA6IAor
ICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKGJp
bm9wJDIsIG1hdGNoWzBdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIwIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8q
IHR1cGxlICovWworICAgICAgICAgICAgQ3VycnkuXzEoY3Z0b3AkMiwgbWF0Y2hbMF0pLAorICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAg
IAorICAgIH0KKyAgfQorICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAg
ICAgIG1hdGNoJDFbMF0sCisgICAgICAgICAgICBtYXRjaCQxWzFdCisgICAgICAgICAgXSk7Cit9
CisKK2Z1bmN0aW9uIGZ1bmNfd2l0aF9uYW1lKG5hbWUsIGYpIHsKKyAgdmFyIG1hdGNoID0gZlsv
KiBpdCAqLzFdOworICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAg
ICJmdW5jIiArIG5hbWUsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdCgvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAg
ICAgICAgInR5cGUgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbLyogZnR5cGUg
Ki8wXVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICAgICAgICBdLCBQZXJ2YXNpdmVzLiRhdChkZWNscygibG9jYWwiLCBtYXRjaFsvKiBsb2NhbHMg
Ki8xXSksIExpc3QubWFwKGluc3RyLCBtYXRjaFsvKiBib2R5ICovMl0pKSkKKyAgICAgICAgICBd
KTsKK30KKworZnVuY3Rpb24gZnVuYyhmKSB7CisgIHJldHVybiBmdW5jX3dpdGhfbmFtZSgiIiwg
Zik7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0KHgpIHsKKyAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5f
XygxLCBbCisgICAgICAgICAgICAic3RhcnQgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwg
eFsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0pOworfQor
CitmdW5jdGlvbiB0YWJsZShvZmYsIGksIHRhYikgeworICB2YXIgbWF0Y2ggPSB0YWJbLyogaXQg
Ki8xXTsKKyAgdmFyIG1hdGNoJDEgPSBtYXRjaFsvKiB0dHlwZSAqLzBdOworICByZXR1cm4gLyog
Tm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICJ0YWJsZSAkIiArIChDdXJyeS5fMShJ
MzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgb2ZmICsgaSB8IDApKSArICgi
ICIgKyBsaW1pdHMoSTMyLnRvX3N0cmluZ191LCBtYXRjaCQxWzBdKSkpLAorICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbVHlwZXMuc3Ry
aW5nX29mX2VsZW1fdHlwZShtYXRjaCQxWzFdKV0pLAorICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgIF0KKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gbWVtb3J5KG9mZiwg
aSwgbWVtKSB7CisgIHZhciBtYXRjaCA9IG1lbVsvKiBpdCAqLzFdOworICByZXR1cm4gLyogTm9k
ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICJtZW1vcnkgJCIgKyAoQ3VycnkuXzEoSTMy
LnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIG9mZiArIGkgfCAwKSkgKyAoIiAi
ICsgbGltaXRzKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbLyogbXR5cGUgKi8wXVswXSkpKSwKKyAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBzZWdtZW50
KGhlYWQsIGRhdCwgc2VnKSB7CisgIHZhciBtYXRjaCA9IHNlZ1svKiBpdCAqLzFdOworICByZXR1
cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgIGhlYWQsCisgICAgICAgICAg
ICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtDdXJyeS5f
MShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWy8qIGluZGV4ICovMF1bLyogaXQgKi8xXSldKSwKKyAg
ICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgLyogTm9kZSAqL0Jsb2NrLl9f
KDEsIFsKKyAgICAgICAgICAgICAgICAgICAgIm9mZnNldCIsCisgICAgICAgICAgICAgICAgICAg
IExpc3QubWFwKGluc3RyLCBtYXRjaFsvKiBvZmZzZXQgKi8xXVsvKiBpdCAqLzFdKQorICAgICAg
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgQ3VycnkuXzEoZGF0LCBtYXRjaFsvKiBp
bml0ICovMl0pCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0KKyAgICAgICAgICBdKTsK
K30KKworZnVuY3Rpb24gZWxlbXMoc2VnKSB7CisgIHJldHVybiBzZWdtZW50KCJlbGVtIiwgZnVu
Y3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiBMaXN0Lm1hcChmdW5jdGlvbiAo
cGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEF0b20gKi9CbG9j
ay5fXygwLCBbQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBwYXJhbVsvKiBpdCAqLzFdKV0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgc2VnKTsK
K30KKworZnVuY3Rpb24gZGF0YShzZWcpIHsKKyAgcmV0dXJuIHNlZ21lbnQoImRhdGEiLCBicmVh
a19ieXRlcywgc2VnKTsKK30KKworZnVuY3Rpb24gdHlwZWRlZihpLCB0KSB7CisgIHJldHVybiAv
KiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgInR5cGUgJCIgKyBDdXJyeS5fMShJ
MzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgaSkpLAorICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgIGZ1bmNfdHlwZSh0KSwKKyAgICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgICBdCisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGltcG9y
dF9raW5kKGksIGspIHsKKyAgdmFyIG1hdGNoID0ga1svKiBpdCAqLzFdOworICBzd2l0Y2ggKG1h
dGNoLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9C
bG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAiZnVuYyAkIiArIEN1cnJ5Ll8xKEkzMi50
b19zdHJpbmdfdSwgQ3VycnkuXzEoSTMyLm9mX2ludF91LCBpKSksCisgICAgICAgICAgICAgICAg
ICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18o
MCwgW0N1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSldKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtd
ICovMAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF0pOworICAgIGNhc2Ug
MSA6IAorICAgICAgICByZXR1cm4gdGFibGUoMCwgaSwgU291cmNlLiRhdCRhdCgvKiByZWNvcmQg
Ki9bLyogdHR5cGUgKi9tYXRjaFswXV0sIGtbLyogYXQgKi8wXSkpOworICAgIGNhc2UgMiA6IAor
ICAgICAgICByZXR1cm4gbWVtb3J5KDAsIGksIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWy8q
IG10eXBlICovbWF0Y2hbMF1dLCBrWy8qIGF0ICovMF0pKTsKKyAgICBjYXNlIDMgOiAKKyAgICAg
ICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAiZ2xv
YmFsICQiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3Us
IGkpKSwKKyAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICBn
bG9iYWxfdHlwZShtYXRjaFswXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF0pOworICAgIAorICB9Cit9CisKK2Z1
bmN0aW9uICQkaW1wb3J0KGksIGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV07Cisg
IHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgImltcG9ydCIsCisg
ICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAs
IFtzdHJpbmdfd2l0aChhZGRfY2hhciwgbWF0Y2hbLyogbW9kdWxlX25hbWUgKi8wXSldKSwKKyAg
ICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9f
KDAsIFtzdHJpbmdfd2l0aChhZGRfY2hhciwgbWF0Y2hbLyogaXRlbV9uYW1lICovMV0pXSksCisg
ICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBpbXBvcnRfa2luZChp
LCBtYXRjaFsvKiBpa2luZCAqLzJdKSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXQorICAgICAgICAg
IF0pOworfQorCitmdW5jdGlvbiBleHBvcnRfa2luZChrKSB7CisgIHZhciBtYXRjaCA9IGtbLyog
aXQgKi8xXTsKKyAgc3dpdGNoIChtYXRjaCkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1
cm4gImZ1bmMiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gInRhYmxlIjsKKyAgICBj
YXNlIDIgOiAKKyAgICAgICAgcmV0dXJuICJtZW1vcnkiOworICAgIGNhc2UgMyA6IAorICAgICAg
ICByZXR1cm4gImdsb2JhbCI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gJCRleHBvcnQoZXgp
IHsKKyAgdmFyIG1hdGNoID0gZXhbLyogaXQgKi8xXTsKKyAgcmV0dXJuIC8qIE5vZGUgKi9CbG9j
ay5fXygxLCBbCisgICAgICAgICAgICAiZXhwb3J0IiwKKyAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFkZF9jaGFy
LCBtYXRjaFsvKiBuYW1lICovMF0pXSksCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgIGV4
cG9ydF9raW5kKG1hdGNoWy8qIGVraW5kICovMV0pLAorICAgICAgICAgICAgICAgICAgICAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW0N1cnJ5
Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbLyogaXRlbSAqLzJdWy8qIGl0ICovMV0pXSksCisg
ICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICBdCisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIHZhcl9v
cHQocGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuICIgIiArIHBhcmFtWzBdWy8q
IGl0ICovMV07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuICIiOworICB9Cit9CisKK2Z1bmN0
aW9uIGlzX2Z1bmNfaW1wb3J0KGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV1bLyog
aWtpbmQgKi8yXVsvKiBpdCAqLzFdOworICBpZiAobWF0Y2gudGFnKSB7CisgICAgcmV0dXJuIC8q
IGZhbHNlICovMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgIH0K
K30KKworZnVuY3Rpb24gaXNfdGFibGVfaW1wb3J0KGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8q
IGl0ICovMV1bLyogaWtpbmQgKi8yXVsvKiBpdCAqLzFdOworICBpZiAobWF0Y2gudGFnID09PSAx
KSB7CisgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAv
KiBmYWxzZSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gaXNfbWVtb3J5X2ltcG9ydChpbSkgewor
ICB2YXIgbWF0Y2ggPSBpbVsvKiBpdCAqLzFdWy8qIGlraW5kICovMl1bLyogaXQgKi8xXTsKKyAg
aWYgKG1hdGNoLnRhZyA9PT0gMikgeworICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGlzX2ds
b2JhbF9pbXBvcnQoaW0pIHsKKyAgdmFyIG1hdGNoID0gaW1bLyogaXQgKi8xXVsvKiBpa2luZCAq
LzJdWy8qIGl0ICovMV07CisgIGlmIChtYXRjaC50YWcgPT09IDMpIHsKKyAgICByZXR1cm4gLyog
dHJ1ZSAqLzE7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgfQor
fQorCitmdW5jdGlvbiBtb2R1bGVfd2l0aF92YXJfb3B0KHhfb3B0LCBtKSB7CisgIHZhciBmdW5j
X2ltcG9ydHMgPSBMaXN0LmZpbHRlcihpc19mdW5jX2ltcG9ydCkobVsvKiBpdCAqLzFdWy8qIGlt
cG9ydHMgKi84XSk7CisgIHZhciB0YWJsZV9pbXBvcnRzID0gTGlzdC5maWx0ZXIoaXNfdGFibGVf
aW1wb3J0KShtWy8qIGl0ICovMV1bLyogaW1wb3J0cyAqLzhdKTsKKyAgdmFyIG1lbW9yeV9pbXBv
cnRzID0gTGlzdC5maWx0ZXIoaXNfbWVtb3J5X2ltcG9ydCkobVsvKiBpdCAqLzFdWy8qIGltcG9y
dHMgKi84XSk7CisgIHZhciBnbG9iYWxfaW1wb3J0cyA9IExpc3QuZmlsdGVyKGlzX2dsb2JhbF9p
bXBvcnQpKG1bLyogaXQgKi8xXVsvKiBpbXBvcnRzICovOF0pOworICB2YXIgcGFydGlhbF9hcmcg
PSBMaXN0Lmxlbmd0aCh0YWJsZV9pbXBvcnRzKTsKKyAgdmFyIGYgPSBmdW5jdGlvbiAocGFyYW0s
IHBhcmFtJDEpIHsKKyAgICByZXR1cm4gdGFibGUocGFydGlhbF9hcmcsIHBhcmFtLCBwYXJhbSQx
KTsKKyAgfTsKKyAgdmFyIHBhcnRpYWxfYXJnJDEgPSBMaXN0Lmxlbmd0aChtZW1vcnlfaW1wb3J0
cyk7CisgIHZhciBmJDEgPSBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEpIHsKKyAgICByZXR1cm4g
bWVtb3J5KHBhcnRpYWxfYXJnJDEsIHBhcmFtLCBwYXJhbSQxKTsKKyAgfTsKKyAgdmFyIHBhcnRp
YWxfYXJnJDIgPSBMaXN0Lmxlbmd0aChnbG9iYWxfaW1wb3J0cyk7CisgIHZhciBmJDIgPSBmdW5j
dGlvbiAocGFyYW0sIHBhcmFtJDEpIHsKKyAgICB2YXIgb2ZmID0gcGFydGlhbF9hcmckMjsKKyAg
ICB2YXIgaSA9IHBhcmFtOworICAgIHZhciBnID0gcGFyYW0kMTsKKyAgICB2YXIgbWF0Y2ggPSBn
Wy8qIGl0ICovMV07CisgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAg
ICAgICAgICJnbG9iYWwgJCIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkz
Mi5vZl9pbnRfdSwgb2ZmICsgaSB8IDApKSwKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgZ2xvYmFsX3R5cGUobWF0Y2hbLyogZ3R5cGUgKi8wXSksCisgICAgICAgICAg
ICAgICAgTGlzdC5tYXAoaW5zdHIsIG1hdGNoWy8qIHZhbHVlICovMV1bLyogaXQgKi8xXSkKKyAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgXSk7CisgIH07CisgIHZhciBwYXJ0aWFsX2FyZyQz
ID0gTGlzdC5sZW5ndGgoZnVuY19pbXBvcnRzKTsKKyAgdmFyIGYkMyA9IGZ1bmN0aW9uIChwYXJh
bSwgcGFyYW0kMSkgeworICAgIHZhciBvZmYgPSBwYXJ0aWFsX2FyZyQzOworICAgIHZhciBpID0g
cGFyYW07CisgICAgdmFyIGYkNCA9IHBhcmFtJDE7CisgICAgcmV0dXJuIGZ1bmNfd2l0aF9uYW1l
KCIgJCIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwg
b2ZmICsgaSB8IDApKSwgZiQ0KTsKKyAgfTsKKyAgdmFyIHhzID0gbGlzdF9vZl9vcHQobVsvKiBp
dCAqLzFdWy8qIHN0YXJ0ICovNV0pOworICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsK
KyAgICAgICAgICAgICJtb2R1bGUiICsgdmFyX29wdCh4X29wdCksCisgICAgICAgICAgICBQZXJ2
YXNpdmVzLiRhdChMaXN0Lm1hcGkodHlwZWRlZiwgbVsvKiBpdCAqLzFdWy8qIHR5cGVzICovMF0p
LCBQZXJ2YXNpdmVzLiRhdChMaXN0Lm1hcGkoJCRpbXBvcnQsIHRhYmxlX2ltcG9ydHMpLCBQZXJ2
YXNpdmVzLiRhdChMaXN0Lm1hcGkoJCRpbXBvcnQsIG1lbW9yeV9pbXBvcnRzKSwgUGVydmFzaXZl
cy4kYXQoTGlzdC5tYXBpKCQkaW1wb3J0LCBnbG9iYWxfaW1wb3J0cyksIFBlcnZhc2l2ZXMuJGF0
KExpc3QubWFwaSgkJGltcG9ydCwgZnVuY19pbXBvcnRzKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5t
YXBpKGYsIG1bLyogaXQgKi8xXVsvKiB0YWJsZXMgKi8yXSksIFBlcnZhc2l2ZXMuJGF0KExpc3Qu
bWFwaShmJDEsIG1bLyogaXQgKi8xXVsvKiBtZW1vcmllcyAqLzNdKSwgUGVydmFzaXZlcy4kYXQo
TGlzdC5tYXBpKGYkMiwgbVsvKiBpdCAqLzFdWy8qIGdsb2JhbHMgKi8xXSksIFBlcnZhc2l2ZXMu
JGF0KExpc3QubWFwaShmJDMsIG1bLyogaXQgKi8xXVsvKiBmdW5jcyAqLzRdKSwgUGVydmFzaXZl
cy4kYXQoTGlzdC5tYXAoJCRleHBvcnQsIG1bLyogaXQgKi8xXVsvKiBleHBvcnRzICovOV0pLCBQ
ZXJ2YXNpdmVzLiRhdChMaXN0Lm1hcChzdGFydCwgeHMpLCBQZXJ2YXNpdmVzLiRhdChMaXN0Lm1h
cChlbGVtcywgbVsvKiBpdCAqLzFdWy8qIGVsZW1zICovNl0pLCBMaXN0Lm1hcChkYXRhLCBtWy8q
IGl0ICovMV1bLyogZGF0YSAqLzddKSkpKSkpKSkpKSkpKQorICAgICAgICAgIF0pOworfQorCitm
dW5jdGlvbiBtb2R1bGVfKHBhcmFtKSB7CisgIHJldHVybiBtb2R1bGVfd2l0aF92YXJfb3B0KC8q
IE5vbmUgKi8wLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGxpdGVyYWwobGl0KSB7CisgIHZhciBt
YXRjaCA9IGxpdFsvKiBpdCAqLzFdOworICBzd2l0Y2ggKG1hdGNoLnRhZyB8IDApIHsKKyAgICBj
YXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAg
ICAgICAgICAgICAiaTMyLmNvbnN0ICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3MsIG1hdGNo
WzBdKSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgIF0pOwor
ICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAg
ICAgICAgICAgICAgICAgICJpNjQuY29uc3QgIiArIEN1cnJ5Ll8xKEk2NC50b19zdHJpbmdfcywg
bWF0Y2hbMF0pLAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAg
XSk7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwg
WworICAgICAgICAgICAgICAgICAgImYzMi5jb25zdCAiICsgQ3VycnkuXzEoRjMyLnRvX3N0cmlu
ZywgbWF0Y2hbMF0pLAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAg
ICAgXSk7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18o
MSwgWworICAgICAgICAgICAgICAgICAgImY2NC5jb25zdCAiICsgQ3VycnkuXzEoRjY0LnRvX3N0
cmluZywgbWF0Y2hbMF0pLAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgXSk7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gZGVmaW5pdGlvbihtb2RlLCB4X29w
dCwgZGVmKSB7CisgIHZhciBtYXRjaCA9IGRlZlsvKiBpdCAqLzFdOworICB2YXIgZXhpdCA9IDA7
CisgIGV4aXQgPSBtb2RlICE9PSA1NjQxNDYyMDkgJiYgIShtb2RlID49IDk4MzE2NzA4OSAmJiBt
YXRjaC50YWcpID8gMSA6IDI7CisgIHN3aXRjaCAoZXhpdCkgeworICAgIGNhc2UgMSA6IAorICAg
ICAgICB2YXIgbWF0Y2gkMSA9IGRlZlsvKiBpdCAqLzFdOworICAgICAgICB2YXIgbTsKKyAgICAg
ICAgbSA9IG1hdGNoJDEudGFnID8gRGVjb2RlLmRlY29kZSgiIiwgbWF0Y2gkMVsxXSkgOiBtYXRj
aCQxWzBdOworICAgICAgICByZXR1cm4gbW9kdWxlX3dpdGhfdmFyX29wdCh4X29wdCwgbSk7Cisg
ICAgY2FzZSAyIDogCisgICAgICAgIHZhciBtYXRjaCQyID0gZGVmWy8qIGl0ICovMV07CisgICAg
ICAgIHZhciBiczsKKyAgICAgICAgYnMgPSBtYXRjaCQyLnRhZyA/IG1hdGNoJDJbMV0gOiBFbmNv
ZGUuZW5jb2RlKG1hdGNoJDJbMF0pOworICAgICAgICB2YXIgeF9vcHQkMSA9IHhfb3B0OworICAg
ICAgICB2YXIgYnMkMSA9IGJzOworICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEs
IFsKKyAgICAgICAgICAgICAgICAgICJtb2R1bGUiICsgdmFyX29wdCh4X29wdCQxKSwKKyAgICAg
ICAgICAgICAgICAgIGJyZWFrX2J5dGVzKGJzJDEpCisgICAgICAgICAgICAgICAgXSk7CisgICAg
CisgIH0KK30KKworZnVuY3Rpb24gYWNjZXNzKHhfb3B0LCBuYW1lKSB7CisgIHJldHVybiAkJFN0
cmluZy5jb25jYXQoIiAiLCAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgdmFyX29wdCh4X29wdCks
CisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIHN0cmluZ193aXRoKGFk
ZF9jaGFyLCBuYW1lKSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGFjdGlvbihhY3QpIHsKKyAgdmFyIG1h
dGNoID0gYWN0Wy8qIGl0ICovMV07CisgIGlmIChtYXRjaC50YWcpIHsKKyAgICByZXR1cm4gLyog
Tm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgImdldCIgKyBhY2Nlc3MobWF0Y2hb
MF0sIG1hdGNoWzFdKSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdKTsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAg
ICAgICAgICAgImludm9rZSIgKyBhY2Nlc3MobWF0Y2hbMF0sIG1hdGNoWzFdKSwKKyAgICAgICAg
ICAgICAgTGlzdC5tYXAobGl0ZXJhbCwgbWF0Y2hbMl0pCisgICAgICAgICAgICBdKTsKKyAgfQor
fQorCitmdW5jdGlvbiBzY3JpcHQobW9kZSwgc2NyKSB7CisgIHJldHVybiBMaXN0Lm1hcChmdW5j
dGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgdmFyIG1vZGUkMSA9IG1vZGU7CisgICAgICAg
ICAgICAgIHZhciBjbWQgPSBwYXJhbTsKKyAgICAgICAgICAgICAgdmFyIG1hdGNoID0gY21kWy8q
IGl0ICovMV07CisgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gudGFnIHwgMCkgeworICAgICAg
ICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5pdGlv
bihtb2RlJDEsIG1hdGNoWzBdLCBtYXRjaFsxXSk7CisgICAgICAgICAgICAgICAgY2FzZSAxIDog
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lzdGVyICIgKyAoc3RyaW5nX3dpdGgoYWRk
X2NoYXIsIG1hdGNoWzBdKSArIHZhcl9vcHQobWF0Y2hbMV0pKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOwor
ICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0
aW9uKG1hdGNoWzBdKTsKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIG1vZGUkMiA9IG1vZGUkMTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGFzcyA9
IG1hdGNoWzBdOworICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IGFzc1svKiBpdCAq
LzFdOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDEudGFnIHwgMCkgeworICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJhc3NlcnRfbWFsZm9ybWVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZpbml0aW9uKC8qIE9yaWdpbmFsICovOTgzMTY3MDg5LCAvKiBOb25lICovMCwgbWF0Y2gk
MVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5f
XygwLCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoJDFbMV0pXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5v
ZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
YXNzZXJ0X2ludmFsaWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24o
bW9kZSQyLCAvKiBOb25lICovMCwgbWF0Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1h
dGNoJDFbMV0pXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3NvZnRfaW52YWxpZCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbihtb2RlJDIsIC8qIE5vbmUgKi8wLCBtYXRj
aCQxWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2Nr
Ll9fKDAsIFtzdHJpbmdfd2l0aChhZGRfY2hhciwgbWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyog
Tm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJhc3NlcnRfdW5saW5rYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5p
dGlvbihtb2RlJDIsIC8qIE5vbmUgKi8wLCBtYXRjaCQxWzBdKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0aChhZGRfY2hh
ciwgbWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdHJhcCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbihtb2RlJDIsIC8qIE5vbmUgKi8wLCBtYXRjaCQx
WzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9f
KDAsIFtzdHJpbmdfd2l0aChhZGRfY2hhciwgbWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9k
ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJh
c3NlcnRfcmV0dXJuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24obWF0Y2gk
MVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwKGxp
dGVyYWwsIG1hdGNoJDFbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBOb2Rl
ICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFz
c2VydF9yZXR1cm5fbmFuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24obWF0
Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNyA6IAor
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdHJhcCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uKG1hdGNoJDFbMF0pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFk
ZF9jaGFyLCBtYXRjaCQxWzFdKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF9leGhhdXN0aW9uIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24obWF0Y2gkMVswXSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5nX3dp
dGgoYWRkX2NoYXIsIG1hdGNoJDFbMV0pXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jl
cmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvYXJyYW5nZS5tbCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDM1LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE0CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s
IHNjcik7Cit9CisKK2V4cG9ydHMuaW5zdHIgICA9IGluc3RyOworZXhwb3J0cy5mdW5jICAgID0g
ZnVuYzsKK2V4cG9ydHMubW9kdWxlXyA9IG1vZHVsZV87CitleHBvcnRzLnNjcmlwdCAgPSBzY3Jp
cHQ7CisvKiBGMzIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBhcnJhbmdl
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ2FycmF5J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8v
Ly8vLyBzdGFydCBvZiBhcnJheS5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3Vy
cnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9hcnJh
eSAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1sX2V4Y2Vw
dGlvbnMgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9leGNlcHRpb25zIik7Cit2YXIgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7
CisKK2Z1bmN0aW9uIGluaXQobCwgZikgeworICBpZiAobCkgeworICAgIGlmIChsIDwgMCkgewor
ICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxp
ZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJBcnJheS5pbml0IgorICAgICAgICAgIF07CisgICAg
fQorICAgIGVsc2UgeworICAgICAgdmFyIHJlcyA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3Qo
bCwgQ3VycnkuXzEoZiwgMCkpOworICAgICAgZm9yKHZhciBpID0gMSAsaV9maW5pc2ggPSBsIC0g
MSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgICAgIHJlc1tpXSA9IEN1cnJ5Ll8xKGYs
IGkpOworICAgICAgfQorICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIC8qIGFycmF5ICovW107CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9tYXRyaXgo
c3gsIHN5LCBpbml0KSB7CisgIHZhciByZXMgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KHN4
LCAvKiBhcnJheSAqL1tdKTsKKyAgZm9yKHZhciB4ID0gMCAseF9maW5pc2ggPSBzeCAtIDEgfCAw
OyB4IDw9IHhfZmluaXNoOyArK3gpeworICAgIHJlc1t4XSA9IENhbWxfYXJyYXkuY2FtbF9tYWtl
X3ZlY3Qoc3ksIGluaXQpOworICB9CisgIHJldHVybiByZXM7Cit9CisKK2Z1bmN0aW9uIGNvcHko
YSkgeworICB2YXIgbCA9IGEubGVuZ3RoOworICBpZiAobCkgeworICAgIHJldHVybiBDYW1sX2Fy
cmF5LmNhbWxfYXJyYXlfc3ViKGEsIDAsIGwpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAv
KiBhcnJheSAqL1tdOworICB9Cit9CisKK2Z1bmN0aW9uIGFwcGVuZChhMSwgYTIpIHsKKyAgdmFy
IGwxID0gYTEubGVuZ3RoOworICBpZiAobDEpIHsKKyAgICBpZiAoYTIubGVuZ3RoKSB7CisgICAg
ICByZXR1cm4gYTEuY29uY2F0KGEyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
Q2FtbF9hcnJheS5jYW1sX2FycmF5X3N1YihhMSwgMCwgbDEpOworICAgIH0KKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gY29weShhMik7CisgIH0KK30KKworZnVuY3Rpb24gc3ViKGEsIG9mcywg
bGVuKSB7CisgIGlmIChsZW4gPCAwIHx8IG9mcyA+IChhLmxlbmd0aCAtIGxlbiB8IDApKSB7Cisg
ICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJn
dW1lbnQsCisgICAgICAgICAgIkFycmF5LnN1YiIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gQ2FtbF9hcnJheS5jYW1sX2FycmF5X3N1YihhLCBvZnMsIGxlbik7CisgIH0K
K30KKworZnVuY3Rpb24gZmlsbChhLCBvZnMsIGxlbiwgdikgeworICBpZiAob2ZzIDwgMCB8fCBs
ZW4gPCAwIHx8IG9mcyA+IChhLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAg
ICAgIkFycmF5LmZpbGwiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgZm9yKHZhciBp
ID0gb2ZzICxpX2ZpbmlzaCA9IChvZnMgKyBsZW4gfCAwKSAtIDEgfCAwOyBpIDw9IGlfZmluaXNo
OyArK2kpeworICAgICAgYVtpXSA9IHY7CisgICAgfQorICAgIHJldHVybiAvKiAoKSAqLzA7Cisg
IH0KK30KKworZnVuY3Rpb24gYmxpdChhMSwgb2ZzMSwgYTIsIG9mczIsIGxlbikgeworICBpZiAo
bGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gKGExLmxlbmd0aCAtIGxlbiB8IDApIHx8IG9m
czIgPCAwIHx8IG9mczIgPiAoYTIubGVuZ3RoIC0gbGVuIHwgMCkpIHsKKyAgICB0aHJvdyBbCisg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAg
ICAgICAiQXJyYXkuYmxpdCIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
Q2FtbF9hcnJheS5jYW1sX2FycmF5X2JsaXQoYTEsIG9mczEsIGEyLCBvZnMyLCBsZW4pOworICB9
Cit9CisKK2Z1bmN0aW9uIGl0ZXIoZiwgYSkgeworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9
IGEubGVuZ3RoIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgQ3VycnkuXzEoZiwg
YVtpXSk7CisgIH0KKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gbWFwKGYsIGEp
IHsKKyAgdmFyIGwgPSBhLmxlbmd0aDsKKyAgaWYgKGwpIHsKKyAgICB2YXIgciA9IENhbWxfYXJy
YXkuY2FtbF9tYWtlX3ZlY3QobCwgQ3VycnkuXzEoZiwgYVswXSkpOworICAgIGZvcih2YXIgaSA9
IDEgLGlfZmluaXNoID0gbCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgICAgcltp
XSA9IEN1cnJ5Ll8xKGYsIGFbaV0pOworICAgIH0KKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogYXJyYXkgKi9bXTsKKyAgfQorfQorCitmdW5jdGlvbiBpdGVyaShm
LCBhKSB7CisgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gYS5sZW5ndGggLSAxIHwgMDsgaSA8
PSBpX2ZpbmlzaDsgKytpKXsKKyAgICBDdXJyeS5fMihmLCBpLCBhW2ldKTsKKyAgfQorICByZXR1
cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBtYXBpKGYsIGEpIHsKKyAgdmFyIGwgPSBhLmxl
bmd0aDsKKyAgaWYgKGwpIHsKKyAgICB2YXIgciA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3Qo
bCwgQ3VycnkuXzIoZiwgMCwgYVswXSkpOworICAgIGZvcih2YXIgaSA9IDEgLGlfZmluaXNoID0g
bCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgICAgcltpXSA9IEN1cnJ5Ll8yKGYs
IGksIGFbaV0pOworICAgIH0KKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gLyogYXJyYXkgKi9bXTsKKyAgfQorfQorCitmdW5jdGlvbiB0b19saXN0KGEpIHsKKyAgdmFy
IF9pID0gYS5sZW5ndGggLSAxIHwgMDsKKyAgdmFyIF9yZXMgPSAvKiBbXSAqLzA7CisgIHdoaWxl
KHRydWUpIHsKKyAgICB2YXIgcmVzID0gX3JlczsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChp
IDwgMCkgeworICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBfcmVz
ID0gLyogOjogKi9bCisgICAgICAgIGFbaV0sCisgICAgICAgIHJlcworICAgICAgXTsKKyAgICAg
IF9pID0gaSAtIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICB9Owor
fQorCitmdW5jdGlvbiBsaXN0X2xlbmd0aChfYWNjdSwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUp
IHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBp
ZiAocGFyYW0pIHsKKyAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgX2FjY3UgPSBhY2N1
ICsgMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICByZXR1cm4gYWNjdTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG9mX2xpc3QobCkg
eworICBpZiAobCkgeworICAgIHZhciBhID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChsaXN0
X2xlbmd0aCgwLCBsKSwgbFswXSk7CisgICAgdmFyIF9pID0gMTsKKyAgICB2YXIgX3BhcmFtID0g
bFsxXTsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAg
ICB2YXIgaSA9IF9pOworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIGFbaV0gPSBwYXJhbVsw
XTsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIF9pID0gaSArIDEgfCAwOwor
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHJldHVybiBhOworICAgICAgfQorICAgIH07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IC8qIGFycmF5ICovW107CisgIH0KK30KKworZnVuY3Rpb24gZm9sZF9sZWZ0KGYsIHgsIGEpIHsK
KyAgdmFyIHIgPSB4OworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGEubGVuZ3RoIC0gMSB8
IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgciA9IEN1cnJ5Ll8yKGYsIHIsIGFbaV0pOwor
ICB9CisgIHJldHVybiByOworfQorCitmdW5jdGlvbiBmb2xkX3JpZ2h0KGYsIGEsIHgpIHsKKyAg
dmFyIHIgPSB4OworICBmb3IodmFyIGkgPSBhLmxlbmd0aCAtIDEgfCAwOyBpID49IDA7IC0taSl7
CisgICAgciA9IEN1cnJ5Ll8yKGYsIGFbaV0sIHIpOworICB9CisgIHJldHVybiByOworfQorCit2
YXIgQm90dG9tID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiQXJyYXkuQm90dG9tIik7CisKK2Z1
bmN0aW9uIHNvcnQoY21wLCBhKSB7CisgIHZhciBtYXhzb24gPSBmdW5jdGlvbiAobCwgaSkgewor
ICAgIHZhciBpMzEgPSAoKGkgKyBpIHwgMCkgKyBpIHwgMCkgKyAxIHwgMDsKKyAgICB2YXIgeCA9
IGkzMTsKKyAgICBpZiAoKGkzMSArIDIgfCAwKSA8IGwpIHsKKyAgICAgIGlmIChDdXJyeS5fMihj
bXAsIGFbaTMxXSwgYVtpMzEgKyAxIHwgMF0pIDwgMCkgeworICAgICAgICB4ID0gaTMxICsgMSB8
IDA7CisgICAgICB9CisgICAgICBpZiAoQ3VycnkuXzIoY21wLCBhW3hdLCBhW2kzMSArIDIgfCAw
XSkgPCAwKSB7CisgICAgICAgIHggPSBpMzEgKyAyIHwgMDsKKyAgICAgIH0KKyAgICAgIHJldHVy
biB4OworICAgIH0KKyAgICBlbHNlIGlmICgoaTMxICsgMSB8IDApIDwgbCAmJiBDdXJyeS5fMihj
bXAsIGFbaTMxXSwgYVtpMzEgKyAxIHwgMF0pIDwgMCkgeworICAgICAgcmV0dXJuIGkzMSArIDEg
fCAwOworICAgIH0KKyAgICBlbHNlIGlmIChpMzEgPCBsKSB7CisgICAgICByZXR1cm4gaTMxOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIEJvdHRvbSwKKyAg
ICAgICAgICAgIGkKKyAgICAgICAgICBdOworICAgIH0KKyAgfTsKKyAgdmFyIHRyaWNrbGUgPSBm
dW5jdGlvbiAobCwgaSwgZSkgeworICAgIHRyeSB7CisgICAgICB2YXIgbCQxID0gbDsKKyAgICAg
IHZhciBfaSA9IGk7CisgICAgICB2YXIgZSQxID0gZTsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAg
ICAgICAgdmFyIGkkMSA9IF9pOworICAgICAgICB2YXIgaiA9IG1heHNvbihsJDEsIGkkMSk7Cisg
ICAgICAgIGlmIChDdXJyeS5fMihjbXAsIGFbal0sIGUkMSkgPiAwKSB7CisgICAgICAgICAgYVtp
JDFdID0gYVtqXTsKKyAgICAgICAgICBfaSA9IGo7CisgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGFbaSQxXSA9IGUk
MTsKKyAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9CisgICAgICB9OworICAg
IH0KKyAgICBjYXRjaCAoZXhuKXsKKyAgICAgIGlmIChleG5bMF0gPT09IEJvdHRvbSkgeworICAg
ICAgICBhW2V4blsxXV0gPSBlOworICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07Cisg
IHZhciBidWJibGUgPSBmdW5jdGlvbiAobCwgaSkgeworICAgIHRyeSB7CisgICAgICB2YXIgbCQx
ID0gbDsKKyAgICAgIHZhciBfaSA9IGk7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHZh
ciBpJDEgPSBfaTsKKyAgICAgICAgdmFyIGogPSBtYXhzb24obCQxLCBpJDEpOworICAgICAgICBh
W2kkMV0gPSBhW2pdOworICAgICAgICBfaSA9IGo7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgCisgICAgICB9OworICAgIH0KKyAgICBjYXRjaCAoZXhuKXsKKyAgICAgIGlmIChleG5bMF0g
PT09IEJvdHRvbSkgeworICAgICAgICByZXR1cm4gZXhuWzFdOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07CisgIHZhciB0cmlj
a2xldXAgPSBmdW5jdGlvbiAoX2ksIGUpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIg
aSA9IF9pOworICAgICAgdmFyIGZhdGhlciA9IChpIC0gMSB8IDApIC8gMyB8IDA7CisgICAgICBp
ZiAoaSA9PT0gZmF0aGVyKSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAiYXJyYXkubWwiLAorICAgICAgICAgICAgICAgIDE2OCwKKyAgICAgICAgICAg
ICAgICA0CisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBp
ZiAoQ3VycnkuXzIoY21wLCBhW2ZhdGhlcl0sIGUpIDwgMCkgeworICAgICAgICBhW2ldID0gYVtm
YXRoZXJdOworICAgICAgICBpZiAoZmF0aGVyID4gMCkgeworICAgICAgICAgIF9pID0gZmF0aGVy
OworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICBhWzBdID0gZTsKKyAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgYVtpXSA9IGU7CisgICAg
ICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIGwgPSBh
Lmxlbmd0aDsKKyAgZm9yKHZhciBpID0gKChsICsgMSB8IDApIC8gMyB8IDApIC0gMSB8IDA7IGkg
Pj0gMDsgLS1pKXsKKyAgICB0cmlja2xlKGwsIGksIGFbaV0pOworICB9CisgIGZvcih2YXIgaSQx
ID0gbCAtIDEgfCAwOyBpJDEgPj0gMjsgLS1pJDEpeworICAgIHZhciBlID0gYVtpJDFdOworICAg
IGFbaSQxXSA9IGFbMF07CisgICAgdHJpY2tsZXVwKGJ1YmJsZShpJDEsIDApLCBlKTsKKyAgfQor
ICBpZiAobCA+IDEpIHsKKyAgICB2YXIgZSQxID0gYVsxXTsKKyAgICBhWzFdID0gYVswXTsKKyAg
ICBhWzBdID0gZSQxOworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gc3RhYmxlX3NvcnQoY21wLCBhKSB7CisgIHZh
ciBtZXJnZSA9IGZ1bmN0aW9uIChzcmMxb2ZzLCBzcmMxbGVuLCBzcmMyLCBzcmMyb2ZzLCBzcmMy
bGVuLCBkc3QsIGRzdG9mcykgeworICAgIHZhciBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIHwg
MDsKKyAgICB2YXIgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiB8IDA7CisgICAgdmFyIF9pMSA9
IHNyYzFvZnM7CisgICAgdmFyIF9zMSA9IGFbc3JjMW9mc107CisgICAgdmFyIF9pMiA9IHNyYzJv
ZnM7CisgICAgdmFyIF9zMiA9IHNyYzJbc3JjMm9mc107CisgICAgdmFyIF9kID0gZHN0b2ZzOwor
ICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBkID0gX2Q7CisgICAgICB2YXIgczIgPSBfczI7
CisgICAgICB2YXIgaTIgPSBfaTI7CisgICAgICB2YXIgczEgPSBfczE7CisgICAgICB2YXIgaTEg
PSBfaTE7CisgICAgICBpZiAoQ3VycnkuXzIoY21wLCBzMSwgczIpIDw9IDApIHsKKyAgICAgICAg
ZHN0W2RdID0gczE7CisgICAgICAgIHZhciBpMSQxID0gaTEgKyAxIHwgMDsKKyAgICAgICAgaWYg
KGkxJDEgPCBzcmMxcikgeworICAgICAgICAgIF9kID0gZCArIDEgfCAwOworICAgICAgICAgIF9z
MSA9IGFbaTEkMV07CisgICAgICAgICAgX2kxID0gaTEkMTsKKyAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJu
IGJsaXQoc3JjMiwgaTIsIGRzdCwgZCArIDEgfCAwLCBzcmMyciAtIGkyIHwgMCk7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBkc3RbZF0gPSBzMjsKKyAgICAgICAg
dmFyIGkyJDEgPSBpMiArIDEgfCAwOworICAgICAgICBpZiAoaTIkMSA8IHNyYzJyKSB7CisgICAg
ICAgICAgX2QgPSBkICsgMSB8IDA7CisgICAgICAgICAgX3MyID0gc3JjMltpMiQxXTsKKyAgICAg
ICAgICBfaTIgPSBpMiQxOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gYmxpdChhLCBpMSwgZHN0LCBk
ICsgMSB8IDAsIHNyYzFyIC0gaTEgfCAwKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH07Cisg
IH07CisgIHZhciBpc29ydHRvID0gZnVuY3Rpb24gKHNyY29mcywgZHN0LCBkc3RvZnMsIGxlbikg
eworICAgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9maW5p
c2g7ICsraSl7CisgICAgICB2YXIgZSA9IGFbc3Jjb2ZzICsgaSB8IDBdOworICAgICAgdmFyIGog
PSAoZHN0b2ZzICsgaSB8IDApIC0gMSB8IDA7CisgICAgICB3aGlsZShqID49IGRzdG9mcyAmJiBD
dXJyeS5fMihjbXAsIGRzdFtqXSwgZSkgPiAwKSB7CisgICAgICAgIGRzdFtqICsgMSB8IDBdID0g
ZHN0W2pdOworICAgICAgICBqID0gaiAtIDEgfCAwOworICAgICAgfTsKKyAgICAgIGRzdFtqICsg
MSB8IDBdID0gZTsKKyAgICB9CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfTsKKyAgdmFyIHNv
cnR0byA9IGZ1bmN0aW9uIChzcmNvZnMsIGRzdCwgZHN0b2ZzLCBsZW4pIHsKKyAgICBpZiAobGVu
IDw9IDUpIHsKKyAgICAgIHJldHVybiBpc29ydHRvKHNyY29mcywgZHN0LCBkc3RvZnMsIGxlbik7
CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIGwxID0gbGVuIC8gMiB8IDA7CisgICAgICB2
YXIgbDIgPSBsZW4gLSBsMSB8IDA7CisgICAgICBzb3J0dG8oc3Jjb2ZzICsgbDEgfCAwLCBkc3Qs
IGRzdG9mcyArIGwxIHwgMCwgbDIpOworICAgICAgc29ydHRvKHNyY29mcywgYSwgc3Jjb2ZzICsg
bDIgfCAwLCBsMSk7CisgICAgICByZXR1cm4gbWVyZ2Uoc3Jjb2ZzICsgbDIgfCAwLCBsMSwgZHN0
LCBkc3RvZnMgKyBsMSB8IDAsIGwyLCBkc3QsIGRzdG9mcyk7CisgICAgfQorICB9OworICB2YXIg
bCA9IGEubGVuZ3RoOworICBpZiAobCA8PSA1KSB7CisgICAgcmV0dXJuIGlzb3J0dG8oMCwgYSwg
MCwgbCk7CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGwxID0gbCAvIDIgfCAwOworICAgIHZhciBs
MiA9IGwgLSBsMSB8IDA7CisgICAgdmFyIHQgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KGwy
LCBhWzBdKTsKKyAgICBzb3J0dG8obDEsIHQsIDAsIGwyKTsKKyAgICBzb3J0dG8oMCwgYSwgbDIs
IGwxKTsKKyAgICByZXR1cm4gbWVyZ2UobDIsIGwxLCB0LCAwLCBsMiwgYSwgMCk7CisgIH0KK30K
KwordmFyIGNyZWF0ZV9tYXRyaXggPSBtYWtlX21hdHJpeDsKKwordmFyIGNvbmNhdCA9IENhbWxf
YXJyYXkuY2FtbF9hcnJheV9jb25jYXQ7CisKK3ZhciBmYXN0X3NvcnQgPSBzdGFibGVfc29ydDsK
KworZXhwb3J0cy5pbml0ICAgICAgICAgID0gaW5pdDsKK2V4cG9ydHMubWFrZV9tYXRyaXggICA9
IG1ha2VfbWF0cml4OworZXhwb3J0cy5jcmVhdGVfbWF0cml4ID0gY3JlYXRlX21hdHJpeDsKK2V4
cG9ydHMuYXBwZW5kICAgICAgICA9IGFwcGVuZDsKK2V4cG9ydHMuY29uY2F0ICAgICAgICA9IGNv
bmNhdDsKK2V4cG9ydHMuc3ViICAgICAgICAgICA9IHN1YjsKK2V4cG9ydHMuY29weSAgICAgICAg
ICA9IGNvcHk7CitleHBvcnRzLmZpbGwgICAgICAgICAgPSBmaWxsOworZXhwb3J0cy5ibGl0ICAg
ICAgICAgID0gYmxpdDsKK2V4cG9ydHMudG9fbGlzdCAgICAgICA9IHRvX2xpc3Q7CitleHBvcnRz
Lm9mX2xpc3QgICAgICAgPSBvZl9saXN0OworZXhwb3J0cy5pdGVyICAgICAgICAgID0gaXRlcjsK
K2V4cG9ydHMubWFwICAgICAgICAgICA9IG1hcDsKK2V4cG9ydHMuaXRlcmkgICAgICAgICA9IGl0
ZXJpOworZXhwb3J0cy5tYXBpICAgICAgICAgID0gbWFwaTsKK2V4cG9ydHMuZm9sZF9sZWZ0ICAg
ICA9IGZvbGRfbGVmdDsKK2V4cG9ydHMuZm9sZF9yaWdodCAgICA9IGZvbGRfcmlnaHQ7CitleHBv
cnRzLnNvcnQgICAgICAgICAgPSBzb3J0OworZXhwb3J0cy5zdGFibGVfc29ydCAgID0gc3RhYmxl
X3NvcnQ7CitleHBvcnRzLmZhc3Rfc29ydCAgICAgPSBmYXN0X3NvcnQ7CisvKiBObyBzaWRlIGVm
ZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGFycmF5LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4g
ZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2FzdCddID0gZnVuY3Rpb24oKSB7CivC
oCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgYXN0LmpzIC8vLy8vLy8v
CisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJ
VCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIExpYiAgICAgID0gcmVxdWlyZSgiLi9s
aWIiKTsKK3ZhciBCbG9jayAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIp
OwordmFyIEN1cnJ5ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2
YXIgQ2FtbF9vYmogPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9vYmoiKTsKKwor
dmFyIEludE9wID0gLyogbW9kdWxlICovW107CisKK3ZhciBGbG9hdE9wID0gLyogbW9kdWxlICov
W107CisKK2Z1bmN0aW9uIGV4cG9ydF9raW5kX29mX2ltcG9ydF9raW5kKHBhcmFtKSB7CisgIHN3
aXRjaCAocGFyYW0udGFnIHwgMCkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gLyog
RnVuY0V4cG9ydCAqLzA7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiBUYWJsZUV4
cG9ydCAqLzE7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiBNZW1vcnlFeHBvcnQg
Ki8yOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gLyogR2xvYmFsRXhwb3J0ICovMzsK
KyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBpbXBvcnRfdHlwZShtLCBpbSkgeworICB2YXIgbWF0
Y2ggPSBpbVsvKiBpdCAqLzFdOworICB2YXIgbWF0Y2gkMSA9IG1hdGNoWy8qIGlraW5kICovMl1b
LyogaXQgKi8xXTsKKyAgc3dpdGNoIChtYXRjaCQxLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAK
KyAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsRnVuY1R5cGUgKi9CbG9jay5fXygwLCBbQ3Vycnku
XzIoTGliLkxpc3QzMlsvKiBudGggKi8xXSwgbVsvKiBpdCAqLzFdWy8qIHR5cGVzICovMF0sIG1h
dGNoJDFbMF1bLyogaXQgKi8xXSldKTsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuIC8q
IEV4dGVybmFsVGFibGVUeXBlICovQmxvY2suX18oMSwgW21hdGNoJDFbMF1dKTsKKyAgICBjYXNl
IDIgOiAKKyAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsTWVtb3J5VHlwZSAqL0Jsb2NrLl9fKDIs
IFttYXRjaCQxWzBdXSk7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAvKiBFeHRlcm5h
bEdsb2JhbFR5cGUgKi9CbG9jay5fXygzLCBbbWF0Y2gkMVswXV0pOworICAgIAorICB9Cit9CisK
K2Z1bmN0aW9uIGV4cG9ydF90eXBlKG0sIGV4KSB7CisgIHZhciBtYXRjaCA9IGV4Wy8qIGl0ICov
MV07CisgIHZhciBla2luZCA9IG1hdGNoWy8qIGVraW5kICovMV07CisgIHZhciBfaSA9IG1hdGNo
Wy8qIGl0ZW0gKi8yXVsvKiBpdCAqLzFdOworICB2YXIgX3BhcmFtID0gbVsvKiBpdCAqLzFdWy8q
IGltcG9ydHMgKi84XTsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsK
KyAgICB2YXIgaSA9IF9pOworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGltcyA9IHBhcmFt
WzFdOworICAgICAgdmFyIGltID0gcGFyYW1bMF07CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9l
cXVhbChleHBvcnRfa2luZF9vZl9pbXBvcnRfa2luZChpbVsvKiBpdCAqLzFdWy8qIGlraW5kICov
Ml1bLyogaXQgKi8xXSksIGVraW5kWy8qIGl0ICovMV0pKSB7CisgICAgICAgIGlmIChpKSB7Cisg
ICAgICAgICAgX3BhcmFtID0gaW1zOworICAgICAgICAgIF9pID0gaSAtIDEgfCAwOworICAgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICByZXR1cm4gaW1wb3J0X3R5cGUobSwgaW0pOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gaW1zOworICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBtYXRjaCQxID0g
ZWtpbmRbLyogaXQgKi8xXTsKKyAgICAgIHN3aXRjaCAobWF0Y2gkMSkgeworICAgICAgICBjYXNl
IDAgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFeHRlcm5hbEZ1bmNUeXBlICovQmxvY2suX18o
MCwgW0N1cnJ5Ll8yKExpYi5MaXN0MzJbLyogbnRoICovMV0sIG1bLyogaXQgKi8xXVsvKiB0eXBl
cyAqLzBdLCBDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyog
ZnVuY3MgKi80XSwgaSlbLyogaXQgKi8xXVsvKiBmdHlwZSAqLzBdWy8qIGl0ICovMV0pXSk7Cisg
ICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsVGFibGVUeXBl
ICovQmxvY2suX18oMSwgW0N1cnJ5Ll8yKExpYi5MaXN0MzJbLyogbnRoICovMV0sIG1bLyogaXQg
Ki8xXVsvKiB0YWJsZXMgKi8yXSwgaSlbLyogaXQgKi8xXVsvKiB0dHlwZSAqLzBdXSk7CisgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsTWVtb3J5VHlwZSAq
L0Jsb2NrLl9fKDIsIFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICov
MV1bLyogbWVtb3JpZXMgKi8zXSwgaSlbLyogaXQgKi8xXVsvKiBtdHlwZSAqLzBdXSk7CisgICAg
ICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsR2xvYmFsVHlwZSAq
L0Jsb2NrLl9fKDMsIFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICov
MV1bLyogZ2xvYmFscyAqLzFdLCBpKVsvKiBpdCAqLzFdWy8qIGd0eXBlICovMF1dKTsKKyAgICAg
ICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCit2YXIgSTMyT3AgPSAwOworCit2YXIgSTY0
T3AgPSAwOworCit2YXIgRjMyT3AgPSAwOworCit2YXIgRjY0T3AgPSAwOworCit2YXIgZW1wdHlf
bW9kdWxlID0gLyogcmVjb3JkICovWworICAvKiB0eXBlcyA6IFtdICovMCwKKyAgLyogZ2xvYmFs
cyA6IFtdICovMCwKKyAgLyogdGFibGVzIDogW10gKi8wLAorICAvKiBtZW1vcmllcyA6IFtdICov
MCwKKyAgLyogZnVuY3MgOiBbXSAqLzAsCisgIC8qIHN0YXJ0IDogTm9uZSAqLzAsCisgIC8qIGVs
ZW1zIDogW10gKi8wLAorICAvKiBkYXRhIDogW10gKi8wLAorICAvKiBpbXBvcnRzIDogW10gKi8w
LAorICAvKiBleHBvcnRzIDogW10gKi8wCitdOworCitleHBvcnRzLkludE9wICAgICAgICAgICAg
ICAgICAgICAgID0gSW50T3A7CitleHBvcnRzLkZsb2F0T3AgICAgICAgICAgICAgICAgICAgID0g
RmxvYXRPcDsKK2V4cG9ydHMuSTMyT3AgICAgICAgICAgICAgICAgICAgICAgPSBJMzJPcDsKK2V4
cG9ydHMuSTY0T3AgICAgICAgICAgICAgICAgICAgICAgPSBJNjRPcDsKK2V4cG9ydHMuRjMyT3Ag
ICAgICAgICAgICAgICAgICAgICAgPSBGMzJPcDsKK2V4cG9ydHMuRjY0T3AgICAgICAgICAgICAg
ICAgICAgICAgPSBGNjRPcDsKK2V4cG9ydHMuZW1wdHlfbW9kdWxlICAgICAgICAgICAgICAgPSBl
bXB0eV9tb2R1bGU7CitleHBvcnRzLmV4cG9ydF9raW5kX29mX2ltcG9ydF9raW5kID0gZXhwb3J0
X2tpbmRfb2ZfaW1wb3J0X2tpbmQ7CitleHBvcnRzLmltcG9ydF90eXBlICAgICAgICAgICAgICAg
ID0gaW1wb3J0X3R5cGU7CitleHBvcnRzLmV4cG9ydF90eXBlICAgICAgICAgICAgICAgID0gZXhw
b3J0X3R5cGU7CisvKiBMaWIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBh
c3QuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdp
c3RyeVsnYmlnYXJyYXknXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsK
Ky8vLy8vLy8vIHN0YXJ0IG9mIGJpZ2FycmF5LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisK
K3ZhciBDYW1sX2FycmF5ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9hcnJheSIpOwor
dmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucyIpOworCitmdW5jdGlvbiBkaW1zKCkgeworICB2YXIgbiA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgIHRocm93ICJjYW1sX2JhX251bV9kaW1zIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVz
Y3JpcHQgeWV0XG4iOworICAgIH0oKTsKKyAgdmFyIGQgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92
ZWN0KG4sIDApOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IG4gLSAxIHwgMDsgaSA8PSBp
X2ZpbmlzaDsgKytpKXsKKyAgICBkW2ldID0gZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyAi
Y2FtbF9iYV9kaW0gbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAg
ICB9KCk7CisgIH0KKyAgcmV0dXJuIGQ7Cit9CisKK2Z1bmN0aW9uIG1hcF9maWxlKF8sICRzdGFy
b3B0JHN0YXIsIF8kMSwgXyQyLCBfJDMsIF8kNCkgeworICAkc3Rhcm9wdCRzdGFyID8gJHN0YXJv
cHQkc3RhclswXSA6IC8qIGludDY0ICovWworICAgICAgLyogaGkgKi8wLAorICAgICAgLyogbG8g
Ki8wCisgICAgXTsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJj
YW1sX2JhX21hcF9maWxlX2J5dGVjb2RlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQg
eWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwordmFyIEdlbmFycmF5ID0gLyogbW9kdWxlICov
WworICAvKiBkaW1zICovZGltcywKKyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZQorXTsKKworZnVu
Y3Rpb24gY3JlYXRlKF8sIF8kMSwgXyQyKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0aHJvdyAiY2FtbF9iYV9jcmVhdGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNj
cmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBvZl9hcnJheShraW5k
LCBsYXlvdXQsIGRhdGEpIHsKKyAgdmFyIGJhID0gY3JlYXRlKGtpbmQsIGxheW91dCwgZGF0YS5s
ZW5ndGgpOworICBsYXlvdXQgIT09IDAgPyAxIDogMDsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5p
c2ggPSBkYXRhLmxlbmd0aCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgdGhyb3cgImNhbWxfYmFfc2V0XzEgbm90IGltcGxlbWVudGVk
IGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgIH0oKSk7CisgIH0KKyAgcmV0dXJuIGJh
OworfQorCitmdW5jdGlvbiBtYXBfZmlsZSQxKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hhcmVk
LCBkaW0pIHsKKyAgcmV0dXJuIG1hcF9maWxlKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hhcmVk
LCAvKiBpbnQgYXJyYXkgKi9bZGltXSk7Cit9CisKK3ZhciBBcnJheTEgPSAvKiBtb2R1bGUgKi9b
CisgIC8qIGNyZWF0ZSAqL2NyZWF0ZSwKKyAgLyogb2ZfYXJyYXkgKi9vZl9hcnJheSwKKyAgLyog
bWFwX2ZpbGUgKi9tYXBfZmlsZSQxCitdOworCitmdW5jdGlvbiBjcmVhdGUkMShfLCBfJDEsIF8k
MiwgXyQzKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2Ft
bF9iYV9jcmVhdGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAg
ICAgICAgfSgpOworfQorCitmdW5jdGlvbiBzbGljZV9sZWZ0KF8sIF8kMSkgeworICByZXR1cm4g
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfYmFfc2xpY2Ugbm90IGltcGxl
bWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5j
dGlvbiBzbGljZV9yaWdodChfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHRocm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3Jp
cHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gb2ZfYXJyYXkkMShraW5k
LCBsYXlvdXQsIGRhdGEpIHsKKyAgdmFyIGRpbTEgPSBkYXRhLmxlbmd0aDsKKyAgdmFyIGRpbTIg
PSBkaW0xID8gZGF0YVswXS5sZW5ndGggOiAwOworICB2YXIgYmEgPSBjcmVhdGUkMShraW5kLCBs
YXlvdXQsIGRpbTEsIGRpbTIpOworICBsYXlvdXQgIT09IDAgPyAxIDogMDsKKyAgZm9yKHZhciBp
ID0gMCAsaV9maW5pc2ggPSBkaW0xIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAg
dmFyIHJvdyA9IGRhdGFbaV07CisgICAgaWYgKHJvdy5sZW5ndGggIT09IGRpbTIpIHsKKyAgICAg
IHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJn
dW1lbnQsCisgICAgICAgICAgICAiQmlnYXJyYXkuQXJyYXkyLm9mX2FycmF5OiBub24tcmVjdGFu
Z3VsYXIgZGF0YSIKKyAgICAgICAgICBdOworICAgIH0KKyAgICBmb3IodmFyIGogPSAwICxqX2Zp
bmlzaCA9IGRpbTIgLSAxIHwgMDsgaiA8PSBqX2ZpbmlzaDsgKytqKXsKKyAgICAgIChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9zZXRfMiBub3QgaW1wbGVtZW50ZWQg
YnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCkpOworICAgIH0KKyAgfQorICBy
ZXR1cm4gYmE7Cit9CisKK2Z1bmN0aW9uIG1hcF9maWxlJDIoZmQsIHBvcywga2luZCwgbGF5b3V0
LCBzaGFyZWQsIGRpbTEsIGRpbTIpIHsKKyAgcmV0dXJuIG1hcF9maWxlKGZkLCBwb3MsIGtpbmQs
IGxheW91dCwgc2hhcmVkLCAvKiBpbnQgYXJyYXkgKi9bCisgICAgICAgICAgICAgIGRpbTEsCisg
ICAgICAgICAgICAgIGRpbTIKKyAgICAgICAgICAgIF0pOworfQorCit2YXIgQXJyYXkyID0gLyog
bW9kdWxlICovWworICAvKiBjcmVhdGUgKi9jcmVhdGUkMSwKKyAgLyogc2xpY2VfbGVmdCAqL3Ns
aWNlX2xlZnQsCisgIC8qIHNsaWNlX3JpZ2h0ICovc2xpY2VfcmlnaHQsCisgIC8qIG9mX2FycmF5
ICovb2ZfYXJyYXkkMSwKKyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZSQyCitdOworCitmdW5jdGlv
biBjcmVhdGUkMihfLCBfJDEsIF8kMiwgXyQzLCBfJDQpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX2NyZWF0ZSBub3QgaW1wbGVtZW50ZWQgYnkg
YnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHNsaWNl
X2xlZnRfMShfLCBfJDEsIF8kMikgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgdGhyb3cgImNhbWxfYmFfc2xpY2Ugbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5
ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBzbGljZV9yaWdodF8xKF8sIF8k
MSwgXyQyKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2Ft
bF9iYV9zbGljZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAg
ICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHNsaWNlX2xlZnRfMihfLCBfJDEpIHsKKyAgcmV0dXJu
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBs
ZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVu
Y3Rpb24gc2xpY2VfcmlnaHRfMihfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVz
Y3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gb2ZfYXJyYXkkMihr
aW5kLCBsYXlvdXQsIGRhdGEpIHsKKyAgdmFyIGRpbTEgPSBkYXRhLmxlbmd0aDsKKyAgdmFyIGRp
bTIgPSBkaW0xID8gZGF0YVswXS5sZW5ndGggOiAwOworICB2YXIgZGltMyA9IGRpbTIgPyBkYXRh
WzBdWzBdLmxlbmd0aCA6IDA7CisgIHZhciBiYSA9IGNyZWF0ZSQyKGtpbmQsIGxheW91dCwgZGlt
MSwgZGltMiwgZGltMyk7CisgIGxheW91dCAhPT0gMCA/IDEgOiAwOworICBmb3IodmFyIGkgPSAw
ICxpX2ZpbmlzaCA9IGRpbTEgLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICB2YXIg
cm93ID0gZGF0YVtpXTsKKyAgICBpZiAocm93Lmxlbmd0aCAhPT0gZGltMikgeworICAgICAgdGhy
b3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVu
dCwKKyAgICAgICAgICAgICJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRh
IgorICAgICAgICAgIF07CisgICAgfQorICAgIGZvcih2YXIgaiA9IDAgLGpfZmluaXNoID0gZGlt
MiAtIDEgfCAwOyBqIDw9IGpfZmluaXNoOyArK2opeworICAgICAgdmFyIGNvbCA9IHJvd1tqXTsK
KyAgICAgIGlmIChjb2wubGVuZ3RoICE9PSBkaW0zKSB7CisgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAg
ICAgICAgICAgIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGEiCisgICAg
ICAgICAgICBdOworICAgICAgfQorICAgICAgZm9yKHZhciBrID0gMCAsa19maW5pc2ggPSBkaW0z
IC0gMSB8IDA7IGsgPD0ga19maW5pc2g7ICsrayl7CisgICAgICAgIChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NldF8zIG5vdCBpbXBsZW1lbnRlZCBieSBidWNr
bGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgfSgpKTsKKyAgICAgIH0KKyAgICB9CisgIH0K
KyAgcmV0dXJuIGJhOworfQorCitmdW5jdGlvbiBtYXBfZmlsZSQzKGZkLCBwb3MsIGtpbmQsIGxh
eW91dCwgc2hhcmVkLCBkaW0xLCBkaW0yLCBkaW0zKSB7CisgIHJldHVybiBtYXBfZmlsZShmZCwg
cG9zLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgLyogaW50IGFycmF5ICovWworICAgICAgICAgICAg
ICBkaW0xLAorICAgICAgICAgICAgICBkaW0yLAorICAgICAgICAgICAgICBkaW0zCisgICAgICAg
ICAgICBdKTsKK30KKwordmFyIEFycmF5MyA9IC8qIG1vZHVsZSAqL1sKKyAgLyogY3JlYXRlICov
Y3JlYXRlJDIsCisgIC8qIHNsaWNlX2xlZnRfMSAqL3NsaWNlX2xlZnRfMSwKKyAgLyogc2xpY2Vf
cmlnaHRfMSAqL3NsaWNlX3JpZ2h0XzEsCisgIC8qIHNsaWNlX2xlZnRfMiAqL3NsaWNlX2xlZnRf
MiwKKyAgLyogc2xpY2VfcmlnaHRfMiAqL3NsaWNlX3JpZ2h0XzIsCisgIC8qIG9mX2FycmF5ICov
b2ZfYXJyYXkkMiwKKyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZSQzCitdOworCitmdW5jdGlvbiBh
cnJheTFfb2ZfZ2VuYXJyYXkoYSkgeworICBpZiAoZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJv
dyAiY2FtbF9iYV9udW1fZGltcyBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxu
IjsKKyAgICAgIH0oKSA9PT0gMSkgeworICAgIHJldHVybiBhOworICB9CisgIGVsc2UgeworICAg
IHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3Vt
ZW50LAorICAgICAgICAgICJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXkiCisgICAgICAgIF07
CisgIH0KK30KKworZnVuY3Rpb24gYXJyYXkyX29mX2dlbmFycmF5KGEpIHsKKyAgaWYgKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgdGhyb3cgImNhbWxfYmFfbnVtX2RpbXMgbm90IGltcGxlbWVudGVk
IGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICB9KCkgPT09IDIpIHsKKyAgICByZXR1cm4g
YTsKKyAgfQorICBlbHNlIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQmlnYXJyYXkuYXJyYXkyX29m
X2dlbmFycmF5IgorICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGFycmF5M19vZl9nZW5h
cnJheShhKSB7CisgIGlmIChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRocm93ICJjYW1sX2JhX251
bV9kaW1zIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgfSgp
ID09PSAzKSB7CisgICAgcmV0dXJuIGE7CisgIH0KKyAgZWxzZSB7CisgICAgdGhyb3cgWworICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAg
ICAgIkJpZ2FycmF5LmFycmF5M19vZl9nZW5hcnJheSIKKyAgICAgICAgXTsKKyAgfQorfQorCitm
dW5jdGlvbiByZXNoYXBlXzEoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0aHJvdyAiY2FtbF9iYV9yZXNoYXBlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVz
Y3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gcmVzaGFwZV8yKF8s
IF8kMSwgXyQyKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAi
Y2FtbF9iYV9yZXNoYXBlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwor
ICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gcmVzaGFwZV8zKF8sIF8kMSwgXyQyLCBfJDMp
IHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3Jl
c2hhcGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAg
fSgpOworfQorCit2YXIgZmxvYXQzMiA9IC8qIEZsb2F0MzIgKi8wOworCit2YXIgZmxvYXQ2NCA9
IC8qIEZsb2F0NjQgKi8xOworCit2YXIgY29tcGxleDMyID0gLyogQ29tcGxleDMyICovMTA7CisK
K3ZhciBjb21wbGV4NjQgPSAvKiBDb21wbGV4NjQgKi8xMTsKKwordmFyIGludDhfc2lnbmVkID0g
LyogSW50OF9zaWduZWQgKi8yOworCit2YXIgaW50OF91bnNpZ25lZCA9IC8qIEludDhfdW5zaWdu
ZWQgKi8zOworCit2YXIgaW50MTZfc2lnbmVkID0gLyogSW50MTZfc2lnbmVkICovNDsKKwordmFy
IGludDE2X3Vuc2lnbmVkID0gLyogSW50MTZfdW5zaWduZWQgKi81OworCit2YXIgJCRpbnQgPSAv
KiBJbnQgKi84OworCit2YXIgaW50MzIgPSAvKiBJbnQzMiAqLzY7CisKK3ZhciBpbnQ2NCA9IC8q
IEludDY0ICovNzsKKwordmFyIG5hdGl2ZWludCA9IC8qIE5hdGl2ZWludCAqLzk7CisKK3ZhciAk
JGNoYXIgPSAvKiBDaGFyICovMTI7CisKK3ZhciBjX2xheW91dCA9IC8qIENfbGF5b3V0ICovMDsK
KwordmFyIGZvcnRyYW5fbGF5b3V0ID0gLyogRm9ydHJhbl9sYXlvdXQgKi8xOworCitmdW5jdGlv
biByZXNoYXBlKF8sIF8kMSkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
dGhyb3cgImNhbWxfYmFfcmVzaGFwZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHll
dFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2V4cG9ydHMuZmxvYXQzMiAgICAgICAgICAgID0g
ZmxvYXQzMjsKK2V4cG9ydHMuZmxvYXQ2NCAgICAgICAgICAgID0gZmxvYXQ2NDsKK2V4cG9ydHMu
Y29tcGxleDMyICAgICAgICAgID0gY29tcGxleDMyOworZXhwb3J0cy5jb21wbGV4NjQgICAgICAg
ICAgPSBjb21wbGV4NjQ7CitleHBvcnRzLmludDhfc2lnbmVkICAgICAgICA9IGludDhfc2lnbmVk
OworZXhwb3J0cy5pbnQ4X3Vuc2lnbmVkICAgICAgPSBpbnQ4X3Vuc2lnbmVkOworZXhwb3J0cy5p
bnQxNl9zaWduZWQgICAgICAgPSBpbnQxNl9zaWduZWQ7CitleHBvcnRzLmludDE2X3Vuc2lnbmVk
ICAgICA9IGludDE2X3Vuc2lnbmVkOworZXhwb3J0cy4kJGludCAgICAgICAgICAgICAgPSAkJGlu
dDsKK2V4cG9ydHMuaW50MzIgICAgICAgICAgICAgID0gaW50MzI7CitleHBvcnRzLmludDY0ICAg
ICAgICAgICAgICA9IGludDY0OworZXhwb3J0cy5uYXRpdmVpbnQgICAgICAgICAgPSBuYXRpdmVp
bnQ7CitleHBvcnRzLiQkY2hhciAgICAgICAgICAgICA9ICQkY2hhcjsKK2V4cG9ydHMuY19sYXlv
dXQgICAgICAgICAgID0gY19sYXlvdXQ7CitleHBvcnRzLmZvcnRyYW5fbGF5b3V0ICAgICA9IGZv
cnRyYW5fbGF5b3V0OworZXhwb3J0cy5HZW5hcnJheSAgICAgICAgICAgPSBHZW5hcnJheTsKK2V4
cG9ydHMuQXJyYXkxICAgICAgICAgICAgID0gQXJyYXkxOworZXhwb3J0cy5BcnJheTIgICAgICAg
ICAgICAgPSBBcnJheTI7CitleHBvcnRzLkFycmF5MyAgICAgICAgICAgICA9IEFycmF5MzsKK2V4
cG9ydHMuYXJyYXkxX29mX2dlbmFycmF5ID0gYXJyYXkxX29mX2dlbmFycmF5OworZXhwb3J0cy5h
cnJheTJfb2ZfZ2VuYXJyYXkgPSBhcnJheTJfb2ZfZ2VuYXJyYXk7CitleHBvcnRzLmFycmF5M19v
Zl9nZW5hcnJheSA9IGFycmF5M19vZl9nZW5hcnJheTsKK2V4cG9ydHMucmVzaGFwZSAgICAgICAg
ICAgID0gcmVzaGFwZTsKK2V4cG9ydHMucmVzaGFwZV8xICAgICAgICAgID0gcmVzaGFwZV8xOwor
ZXhwb3J0cy5yZXNoYXBlXzIgICAgICAgICAgPSByZXNoYXBlXzI7CitleHBvcnRzLnJlc2hhcGVf
MyAgICAgICAgICA9IHJlc2hhcGVfMzsKKy8qICBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8v
Ly8gZW5kIG9mIGJpZ2FycmF5LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8Kg
IH07CisKKworICBfcmVnaXN0cnlbJ2Jsb2NrJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBl
eHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBibG9jay5qcyAvLy8vLy8vLworJ3VzZSBz
dHJpY3QnOworCisKK2Z1bmN0aW9uIF9fKHRhZywgYmxvY2spIHsKKyAgYmxvY2sudGFnID0gdGFn
OworICByZXR1cm4gYmxvY2s7Cit9CisKK2V4cG9ydHMuX18gPSBfXzsKKy8qIE5vIHNpZGUgZWZm
ZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgYmxvY2suanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBl
eHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnYnVmZmVyJ10gPSBmdW5jdGlvbigpIHsK
K8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBidWZmZXIuanMgLy8v
Ly8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5cyAgICAgICAgICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9zeXMiKTsKK3ZhciBCeXRlcyAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4v
Ynl0ZXMiKTsKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3Vycnki
KTsKK3ZhciAkJFN0cmluZyAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc3RyaW5nIik7Cit2
YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3Zh
ciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3Zh
ciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMiKTsKKworZnVuY3Rpb24gY3JlYXRlKG4pIHsKKyAgdmFyIG4kMSA9IG4gPCAxID8gMSA6
IG47CisgIHZhciBuJDIgPSBuJDEgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggPyBTeXMubWF4X3N0
cmluZ19sZW5ndGggOiBuJDE7CisgIHZhciBzID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3Ry
aW5nKG4kMik7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogYnVmZmVyICov
cywKKyAgICAgICAgICAvKiBwb3NpdGlvbiAqLzAsCisgICAgICAgICAgLyogbGVuZ3RoICovbiQy
LAorICAgICAgICAgIC8qIGluaXRpYWxfYnVmZmVyICovcworICAgICAgICBdOworfQorCitmdW5j
dGlvbiBjb250ZW50cyhiKSB7CisgIHJldHVybiBCeXRlcy5zdWJfc3RyaW5nKGJbLyogYnVmZmVy
ICovMF0sIDAsIGJbLyogcG9zaXRpb24gKi8xXSk7Cit9CisKK2Z1bmN0aW9uIHRvX2J5dGVzKGIp
IHsKKyAgcmV0dXJuIEJ5dGVzLnN1YihiWy8qIGJ1ZmZlciAqLzBdLCAwLCBiWy8qIHBvc2l0aW9u
ICovMV0pOworfQorCitmdW5jdGlvbiBzdWIoYiwgb2ZzLCBsZW4pIHsKKyAgaWYgKG9mcyA8IDAg
fHwgbGVuIDwgMCB8fCBvZnMgPiAoYlsvKiBwb3NpdGlvbiAqLzFdIC0gbGVuIHwgMCkpIHsKKyAg
ICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1
bWVudCwKKyAgICAgICAgICAiQnVmZmVyLnN1YiIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gQnl0ZXMuc3ViX3N0cmluZyhiWy8qIGJ1ZmZlciAqLzBdLCBvZnMsIGxlbik7
CisgIH0KK30KKworZnVuY3Rpb24gYmxpdChzcmMsIHNyY29mZiwgZHN0LCBkc3RvZmYsIGxlbikg
eworICBpZiAobGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IChzcmNbLyogcG9zaXRp
b24gKi8xXSAtIGxlbiB8IDApIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKGRzdC5sZW5ndGgg
LSBsZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJCdWZmZXIuYmxpdCIKKyAgICAgICAg
XTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQnl0ZXMuYmxpdChzcmNbLyogYnVmZmVyICov
MF0sIHNyY29mZiwgZHN0LCBkc3RvZmYsIGxlbik7CisgIH0KK30KKworZnVuY3Rpb24gbnRoKGIs
IG9mcykgeworICBpZiAob2ZzIDwgMCB8fCBvZnMgPj0gYlsvKiBwb3NpdGlvbiAqLzFdKSB7Cisg
ICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJn
dW1lbnQsCisgICAgICAgICAgIkJ1ZmZlci5udGgiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7
CisgICAgcmV0dXJuIGJbLyogYnVmZmVyICovMF1bb2ZzXTsKKyAgfQorfQorCitmdW5jdGlvbiBs
ZW5ndGgoYikgeworICByZXR1cm4gYlsvKiBwb3NpdGlvbiAqLzFdOworfQorCitmdW5jdGlvbiBj
bGVhcihiKSB7CisgIGJbLyogcG9zaXRpb24gKi8xXSA9IDA7CisgIHJldHVybiAvKiAoKSAqLzA7
Cit9CisKK2Z1bmN0aW9uIHJlc2V0KGIpIHsKKyAgYlsvKiBwb3NpdGlvbiAqLzFdID0gMDsKKyAg
YlsvKiBidWZmZXIgKi8wXSA9IGJbLyogaW5pdGlhbF9idWZmZXIgKi8zXTsKKyAgYlsvKiBsZW5n
dGggKi8yXSA9IGJbLyogYnVmZmVyICovMF0ubGVuZ3RoOworICByZXR1cm4gLyogKCkgKi8wOwor
fQorCitmdW5jdGlvbiByZXNpemUoYiwgbW9yZSkgeworICB2YXIgbGVuID0gYlsvKiBsZW5ndGgg
Ki8yXTsKKyAgdmFyIG5ld19sZW4gPSBsZW47CisgIHdoaWxlKChiWy8qIHBvc2l0aW9uICovMV0g
KyBtb3JlIHwgMCkgPiBuZXdfbGVuKSB7CisgICAgbmV3X2xlbiA9IChuZXdfbGVuIDw8IDEpOwor
ICB9OworICBpZiAobmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgeworICAgIGlmICgo
YlsvKiBwb3NpdGlvbiAqLzFdICsgbW9yZSB8IDApIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkg
eworICAgICAgbmV3X2xlbiA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aDsKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5m
YWlsdXJlLAorICAgICAgICAgICAgIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlciIKKyAg
ICAgICAgICBdOworICAgIH0KKyAgfQorICB2YXIgbmV3X2J1ZmZlciA9IENhbWxfc3RyaW5nLmNh
bWxfY3JlYXRlX3N0cmluZyhuZXdfbGVuKTsKKyAgQnl0ZXMuYmxpdChiWy8qIGJ1ZmZlciAqLzBd
LCAwLCBuZXdfYnVmZmVyLCAwLCBiWy8qIHBvc2l0aW9uICovMV0pOworICBiWy8qIGJ1ZmZlciAq
LzBdID0gbmV3X2J1ZmZlcjsKKyAgYlsvKiBsZW5ndGggKi8yXSA9IG5ld19sZW47CisgIHJldHVy
biAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGFkZF9jaGFyKGIsIGMpIHsKKyAgdmFyIHBvcyA9
IGJbLyogcG9zaXRpb24gKi8xXTsKKyAgaWYgKHBvcyA+PSBiWy8qIGxlbmd0aCAqLzJdKSB7Cisg
ICAgcmVzaXplKGIsIDEpOworICB9CisgIGJbLyogYnVmZmVyICovMF1bcG9zXSA9IGM7CisgIGJb
LyogcG9zaXRpb24gKi8xXSA9IHBvcyArIDEgfCAwOworICByZXR1cm4gLyogKCkgKi8wOworfQor
CitmdW5jdGlvbiBhZGRfc3Vic3RyaW5nKGIsIHMsIG9mZnNldCwgbGVuKSB7CisgIGlmIChvZmZz
ZXQgPCAwIHx8IGxlbiA8IDAgfHwgKG9mZnNldCArIGxlbiB8IDApID4gcy5sZW5ndGgpIHsKKyAg
ICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1
bWVudCwKKyAgICAgICAgICAiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzIgorICAg
ICAgICBdOworICB9CisgIHZhciBuZXdfcG9zaXRpb24gPSBiWy8qIHBvc2l0aW9uICovMV0gKyBs
ZW4gfCAwOworICBpZiAobmV3X3Bvc2l0aW9uID4gYlsvKiBsZW5ndGggKi8yXSkgeworICAgIHJl
c2l6ZShiLCBsZW4pOworICB9CisgIEJ5dGVzLmJsaXRfc3RyaW5nKHMsIG9mZnNldCwgYlsvKiBi
dWZmZXIgKi8wXSwgYlsvKiBwb3NpdGlvbiAqLzFdLCBsZW4pOworICBiWy8qIHBvc2l0aW9uICov
MV0gPSBuZXdfcG9zaXRpb247CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGFk
ZF9zdWJieXRlcyhiLCBzLCBvZmZzZXQsIGxlbikgeworICByZXR1cm4gYWRkX3N1YnN0cmluZyhi
LCBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocyksIG9mZnNldCwgbGVuKTsKK30KKworZnVu
Y3Rpb24gYWRkX3N0cmluZyhiLCBzKSB7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIG5l
d19wb3NpdGlvbiA9IGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDA7CisgIGlmIChuZXdfcG9z
aXRpb24gPiBiWy8qIGxlbmd0aCAqLzJdKSB7CisgICAgcmVzaXplKGIsIGxlbik7CisgIH0KKyAg
Qnl0ZXMuYmxpdF9zdHJpbmcocywgMCwgYlsvKiBidWZmZXIgKi8wXSwgYlsvKiBwb3NpdGlvbiAq
LzFdLCBsZW4pOworICBiWy8qIHBvc2l0aW9uICovMV0gPSBuZXdfcG9zaXRpb247CisgIHJldHVy
biAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGFkZF9ieXRlcyhiLCBzKSB7CisgIHJldHVybiBh
ZGRfc3RyaW5nKGIsIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzKSk7Cit9CisKK2Z1bmN0
aW9uIGFkZF9idWZmZXIoYiwgYnMpIHsKKyAgcmV0dXJuIGFkZF9zdWJieXRlcyhiLCBic1svKiBi
dWZmZXIgKi8wXSwgMCwgYnNbLyogcG9zaXRpb24gKi8xXSk7Cit9CisKK2Z1bmN0aW9uIGFkZF9j
aGFubmVsKGIsIGljLCBsZW4pIHsKKyAgaWYgKGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJp
bmdfbGVuZ3RoKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkJ1ZmZlci5hZGRfY2hhbm5lbCIKKyAg
ICAgICAgXTsKKyAgfQorICBpZiAoKGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDApID4gYlsv
KiBsZW5ndGggKi8yXSkgeworICAgIHJlc2l6ZShiLCBsZW4pOworICB9CisgIFBlcnZhc2l2ZXMu
cmVhbGx5X2lucHV0KGljLCBiWy8qIGJ1ZmZlciAqLzBdLCBiWy8qIHBvc2l0aW9uICovMV0sIGxl
bik7CisgIGJbLyogcG9zaXRpb24gKi8xXSA9IGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDA7
CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIG91dHB1dF9idWZmZXIob2MsIGIp
IHsKKyAgcmV0dXJuIFBlcnZhc2l2ZXMub3V0cHV0KG9jLCBiWy8qIGJ1ZmZlciAqLzBdLCAwLCBi
Wy8qIHBvc2l0aW9uICovMV0pOworfQorCitmdW5jdGlvbiBjbG9zaW5nKHBhcmFtKSB7CisgIGlm
IChwYXJhbSAhPT0gNDApIHsKKyAgICBpZiAocGFyYW0gIT09IDEyMykgeworICAgICAgdGhyb3cg
WworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICJidWZmZXIubWwiLAorICAgICAgICAgICAgICAx
MTUsCisgICAgICAgICAgICAgIDkKKyAgICAgICAgICAgIF0KKyAgICAgICAgICBdOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiAifSIgKi8xMjU7CisgICAgfQorICB9CisgIGVs
c2UgeworICAgIHJldHVybiAvKiAiKSIgKi80MTsKKyAgfQorfQorCitmdW5jdGlvbiBhZHZhbmNl
X3RvX2Nsb3Npbmcob3BlbmluZywgY2xvc2luZywgaywgcywgc3RhcnQpIHsKKyAgdmFyIF9rID0g
azsKKyAgdmFyIF9pID0gc3RhcnQ7CisgIHZhciBsaW0gPSBzLmxlbmd0aDsKKyAgd2hpbGUodHJ1
ZSkgeworICAgIHZhciBpID0gX2k7CisgICAgdmFyIGskMSA9IF9rOworICAgIGlmIChpID49IGxp
bSkgeworICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAg
IH0KKyAgICBlbHNlIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgPT09IG9wZW5pbmcpIHsKKyAg
ICAgIF9pID0gaSArIDEgfCAwOworICAgICAgX2sgPSBrJDEgKyAxIHwgMDsKKyAgICAgIGNvbnRp
bnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkg
PT09IGNsb3NpbmcpIHsKKyAgICAgIGlmIChrJDEpIHsKKyAgICAgICAgX2kgPSBpICsgMSB8IDA7
CisgICAgICAgIF9rID0gayQxIC0gMSB8IDA7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgICB9CisgICAg
fQorICAgIGVsc2UgeworICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICBjb250aW51ZSA7Cisg
ICAgICAKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGFkdmFuY2VfdG9fbm9uX2FscGhhKHMs
IHN0YXJ0KSB7CisgIHZhciBfaSA9IHN0YXJ0OworICB2YXIgbGltID0gcy5sZW5ndGg7CisgIHdo
aWxlKHRydWUpIHsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChpID49IGxpbSkgeworICAgICAg
cmV0dXJuIGxpbTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0
cmluZy5nZXQocywgaSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICBpZiAobWF0Y2ggPj0g
OTEpIHsKKyAgICAgICAgaWYgKG1hdGNoID49IDk3KSB7CisgICAgICAgICAgaWYgKG1hdGNoID49
IDEyMykgeworICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKG1hdGNoICE9PSA5NSkgeworICAgICAgICAgIHJldHVybiBpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAg
ICB9CisgICAgICBlbHNlIGlmIChtYXRjaCA+PSA1OCkgeworICAgICAgICBpZiAobWF0Y2ggPj0g
NjUpIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAobWF0
Y2ggPj0gNDgpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgcmV0dXJuIGk7CisgICAgICB9CisgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAg
ICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0K
KyAgICAgIAorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmluZF9pZGVudChzLCBzdGFydCwg
bGltKSB7CisgIGlmIChzdGFydCA+PSBsaW0pIHsKKyAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5ub3RfZm91bmQ7CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGMgPSBDYW1sX3N0cmlu
Zy5nZXQocywgc3RhcnQpOworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAoYyAhPT0gNDApIHsK
KyAgICAgIGlmIChjICE9PSAxMjMpIHsKKyAgICAgICAgdmFyIHN0b3AgPSBhZHZhbmNlX3RvX25v
bl9hbHBoYShzLCBzdGFydCArIDEgfCAwKTsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwor
ICAgICAgICAgICAgICAgICQkU3RyaW5nLnN1YihzLCBzdGFydCwgc3RvcCAtIHN0YXJ0IHwgMCks
CisgICAgICAgICAgICAgICAgc3RvcAorICAgICAgICAgICAgICBdOworICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIGV4aXQgPSAxOworICAgIH0KKyAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgdmFyIG5l
d19zdGFydCA9IHN0YXJ0ICsgMSB8IDA7CisgICAgICB2YXIgc3RvcCQxID0gYWR2YW5jZV90b19j
bG9zaW5nKGMsIGNsb3NpbmcoYyksIDAsIHMsIG5ld19zdGFydCk7CisgICAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgICQkU3RyaW5nLnN1YihzLCBuZXdfc3RhcnQsIChzdG9w
JDEgLSBzdGFydCB8IDApIC0gMSB8IDApLAorICAgICAgICAgICAgICBzdG9wJDEgKyAxIHwgMAor
ICAgICAgICAgICAgXTsKKyAgICB9CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gYWRkX3N1YnN0
aXR1dGUoYiwgZiwgcykgeworICB2YXIgbGltID0gcy5sZW5ndGg7CisgIHZhciBfcHJldmlvdXMg
PSAvKiAiICIgKi8zMjsKKyAgdmFyIF9pID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBp
ID0gX2k7CisgICAgdmFyIHByZXZpb3VzID0gX3ByZXZpb3VzOworICAgIGlmIChpIDwgbGltKSB7
CisgICAgICB2YXIgY3VycmVudCA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICAgIGlmIChj
dXJyZW50ICE9PSAzNikgeworICAgICAgICBpZiAocHJldmlvdXMgPT09IC8qICJcXCIgKi85Mikg
eworICAgICAgICAgIGFkZF9jaGFyKGIsIC8qICJcXCIgKi85Mik7CisgICAgICAgICAgYWRkX2No
YXIoYiwgY3VycmVudCk7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgX3By
ZXZpb3VzID0gLyogIiAiICovMzI7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAor
ICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbnQgIT09IDkyKSB7CisgICAgICAgICAg
YWRkX2NoYXIoYiwgY3VycmVudCk7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAg
ICAgX3ByZXZpb3VzID0gY3VycmVudDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7Cisg
ICAgICAgICAgX3ByZXZpb3VzID0gY3VycmVudDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHByZXZpb3VzID09PSAv
KiAiXFwiICovOTIpIHsKKyAgICAgICAgYWRkX2NoYXIoYiwgY3VycmVudCk7CisgICAgICAgIF9p
ID0gaSArIDEgfCAwOworICAgICAgICBfcHJldmlvdXMgPSAvKiAiICIgKi8zMjsKKyAgICAgICAg
Y29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIg
aiA9IGkgKyAxIHwgMDsKKyAgICAgICAgdmFyIG1hdGNoID0gZmluZF9pZGVudChzLCBqLCBsaW0p
OworICAgICAgICBhZGRfc3RyaW5nKGIsIEN1cnJ5Ll8xKGYsIG1hdGNoWzBdKSk7CisgICAgICAg
IF9pID0gbWF0Y2hbMV07CisgICAgICAgIF9wcmV2aW91cyA9IC8qICIgIiAqLzMyOworICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChwcmV2
aW91cyA9PT0gLyogIlxcIiAqLzkyKSB7CisgICAgICByZXR1cm4gYWRkX2NoYXIoYiwgcHJldmlv
dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgfTsKK30K
KworZXhwb3J0cy5jcmVhdGUgICAgICAgICA9IGNyZWF0ZTsKK2V4cG9ydHMuY29udGVudHMgICAg
ICAgPSBjb250ZW50czsKK2V4cG9ydHMudG9fYnl0ZXMgICAgICAgPSB0b19ieXRlczsKK2V4cG9y
dHMuc3ViICAgICAgICAgICAgPSBzdWI7CitleHBvcnRzLmJsaXQgICAgICAgICAgID0gYmxpdDsK
K2V4cG9ydHMubnRoICAgICAgICAgICAgPSBudGg7CitleHBvcnRzLmxlbmd0aCAgICAgICAgID0g
bGVuZ3RoOworZXhwb3J0cy5jbGVhciAgICAgICAgICA9IGNsZWFyOworZXhwb3J0cy5yZXNldCAg
ICAgICAgICA9IHJlc2V0OworZXhwb3J0cy5hZGRfY2hhciAgICAgICA9IGFkZF9jaGFyOworZXhw
b3J0cy5hZGRfc3RyaW5nICAgICA9IGFkZF9zdHJpbmc7CitleHBvcnRzLmFkZF9ieXRlcyAgICAg
ID0gYWRkX2J5dGVzOworZXhwb3J0cy5hZGRfc3Vic3RyaW5nICA9IGFkZF9zdWJzdHJpbmc7Citl
eHBvcnRzLmFkZF9zdWJieXRlcyAgID0gYWRkX3N1YmJ5dGVzOworZXhwb3J0cy5hZGRfc3Vic3Rp
dHV0ZSA9IGFkZF9zdWJzdGl0dXRlOworZXhwb3J0cy5hZGRfYnVmZmVyICAgICA9IGFkZF9idWZm
ZXI7CitleHBvcnRzLmFkZF9jaGFubmVsICAgID0gYWRkX2NoYW5uZWw7CitleHBvcnRzLm91dHB1
dF9idWZmZXIgID0gb3V0cHV0X2J1ZmZlcjsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8v
LyBlbmQgb2YgYnVmZmVyLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07
CisKKworICBfcmVnaXN0cnlbJ2J5dGVzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBv
cnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBieXRlcy5qcyAvLy8vLy8vLworJ3VzZSBzdHJp
Y3QnOworCit2YXIgQ2hhciAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NoYXIiKTsK
K3ZhciBMaXN0ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGlzdCIpOwordmFyIEN1
cnJ5ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfb2Jq
ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX29iaiIpOwordmFyIENhbWxfaW50MzIg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2ludDMyIik7Cit2YXIgUGVydmFzaXZlcyAg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX3N0cmluZyAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVu
Y3Rpb24gbWFrZShuLCBjKSB7CisgIHZhciBzID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3Ry
aW5nKG4pOworICBDYW1sX3N0cmluZy5jYW1sX2ZpbGxfc3RyaW5nKHMsIDAsIG4sIGMpOworICBy
ZXR1cm4gczsKK30KKworZnVuY3Rpb24gaW5pdChuLCBmKSB7CisgIHZhciBzID0gQ2FtbF9zdHJp
bmcuY2FtbF9jcmVhdGVfc3RyaW5nKG4pOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IG4g
LSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICBzW2ldID0gQ3VycnkuXzEoZiwgaSk7
CisgIH0KKyAgcmV0dXJuIHM7Cit9CisKK3ZhciBlbXB0eSA9IFtdOworCitmdW5jdGlvbiBjb3B5
KHMpIHsKKyAgdmFyIGxlbiA9IHMubGVuZ3RoOworICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxf
Y3JlYXRlX3N0cmluZyhsZW4pOworICBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMocywgMCwg
ciwgMCwgbGVuKTsKKyAgcmV0dXJuIHI7Cit9CisKK2Z1bmN0aW9uIHRvX3N0cmluZyhiKSB7Cisg
IHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoY29weShiKSk7Cit9CisKK2Z1bmN0
aW9uIG9mX3N0cmluZyhzKSB7CisgIHJldHVybiBjb3B5KENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0
cmluZyhzKSk7Cit9CisKK2Z1bmN0aW9uIHN1YihzLCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwg
MCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cg
WworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisg
ICAgICAgICAgIlN0cmluZy5zdWIgLyBCeXRlcy5zdWIiCisgICAgICAgIF07CisgIH0KKyAgZWxz
ZSB7CisgICAgdmFyIHIgPSBDYW1sX3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcobGVuKTsKKyAg
ICBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMocywgb2ZzLCByLCAwLCBsZW4pOworICAgIHJl
dHVybiByOworICB9Cit9CisKK2Z1bmN0aW9uIHN1Yl9zdHJpbmcoYiwgb2ZzLCBsZW4pIHsKKyAg
cmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzdWIoYiwgb2ZzLCBsZW4pKTsKK30K
KworZnVuY3Rpb24gZXh0ZW5kKHMsIGxlZnQsIHJpZ2h0KSB7CisgIHZhciBsZW4gPSAocy5sZW5n
dGggKyBsZWZ0IHwgMCkgKyByaWdodCB8IDA7CisgIHZhciByID0gQ2FtbF9zdHJpbmcuY2FtbF9j
cmVhdGVfc3RyaW5nKGxlbik7CisgIHZhciBtYXRjaCA9IGxlZnQgPCAwID8gLyogdHVwbGUgKi9b
CisgICAgICAtbGVmdCB8IDAsCisgICAgICAwCisgICAgXSA6IC8qIHR1cGxlICovWworICAgICAg
MCwKKyAgICAgIGxlZnQKKyAgICBdOworICB2YXIgZHN0b2ZmID0gbWF0Y2hbMV07CisgIHZhciBz
cmNvZmYgPSBtYXRjaFswXTsKKyAgdmFyIGNweWxlbiA9IFBlcnZhc2l2ZXMubWluKHMubGVuZ3Ro
IC0gc3Jjb2ZmIHwgMCwgbGVuIC0gZHN0b2ZmIHwgMCk7CisgIGlmIChjcHlsZW4gPiAwKSB7Cisg
ICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X2J5dGVzKHMsIHNyY29mZiwgciwgZHN0b2ZmLCBjcHls
ZW4pOworICB9CisgIHJldHVybiByOworfQorCitmdW5jdGlvbiBmaWxsKHMsIG9mcywgbGVuLCBj
KSB7CisgIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gKHMubGVuZ3RoIC0gbGVuIHwg
MCkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52
YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsIgorICAg
ICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5jYW1sX2ZpbGxf
c3RyaW5nKHMsIG9mcywgbGVuLCBjKTsKKyAgfQorfQorCitmdW5jdGlvbiBibGl0KHMxLCBvZnMx
LCBzMiwgb2ZzMiwgbGVuKSB7CisgIGlmIChsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiAo
czEubGVuZ3RoIC0gbGVuIHwgMCkgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IChzMi5sZW5ndGggLSBs
ZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJCeXRlcy5ibGl0IgorICAgICAgICBdOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMoczEs
IG9mczEsIHMyLCBvZnMyLCBsZW4pOworICB9Cit9CisKK2Z1bmN0aW9uIGJsaXRfc3RyaW5nKHMx
LCBvZnMxLCBzMiwgb2ZzMiwgbGVuKSB7CisgIGlmIChsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9m
czEgPiAoczEubGVuZ3RoIC0gbGVuIHwgMCkgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IChzMi5sZW5n
dGggLSBsZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJTdHJpbmcuYmxpdCAvIEJ5dGVz
LmJsaXRfc3RyaW5nIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDYW1s
X3N0cmluZy5jYW1sX2JsaXRfc3RyaW5nKHMxLCBvZnMxLCBzMiwgb2ZzMiwgbGVuKTsKKyAgfQor
fQorCitmdW5jdGlvbiBpdGVyKGYsIGEpIHsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBh
Lmxlbmd0aCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIEN1cnJ5Ll8xKGYsIGFb
aV0pOworICB9CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGl0ZXJpKGYsIGEp
IHsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBhLmxlbmd0aCAtIDEgfCAwOyBpIDw9IGlf
ZmluaXNoOyArK2kpeworICAgIEN1cnJ5Ll8yKGYsIGksIGFbaV0pOworICB9CisgIHJldHVybiAv
KiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGNvbmNhdChzZXAsIGwpIHsKKyAgaWYgKGwpIHsKKyAg
ICB2YXIgaGQgPSBsWzBdOworICAgIHZhciBudW0gPSBbMF07CisgICAgdmFyIGxlbiA9IFswXTsK
KyAgICBMaXN0Lml0ZXIoZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICBudW1bMF0gPSBudW1bMF0g
KyAxIHwgMDsKKyAgICAgICAgICBsZW5bMF0gPSBsZW5bMF0gKyBzLmxlbmd0aCB8IDA7CisgICAg
ICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgfSwgbCk7CisgICAgdmFyIHIgPSBDYW1s
X3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcobGVuWzBdICsgQ2FtbF9pbnQzMi5pbXVsKHNlcC5s
ZW5ndGgsIG51bVswXSAtIDEgfCAwKSB8IDApOworICAgIENhbWxfc3RyaW5nLmNhbWxfYmxpdF9i
eXRlcyhoZCwgMCwgciwgMCwgaGQubGVuZ3RoKTsKKyAgICB2YXIgcG9zID0gW2hkLmxlbmd0aF07
CisgICAgTGlzdC5pdGVyKGZ1bmN0aW9uIChzKSB7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2Ft
bF9ibGl0X2J5dGVzKHNlcCwgMCwgciwgcG9zWzBdLCBzZXAubGVuZ3RoKTsKKyAgICAgICAgICBw
b3NbMF0gPSBwb3NbMF0gKyBzZXAubGVuZ3RoIHwgMDsKKyAgICAgICAgICBDYW1sX3N0cmluZy5j
YW1sX2JsaXRfYnl0ZXMocywgMCwgciwgcG9zWzBdLCBzLmxlbmd0aCk7CisgICAgICAgICAgcG9z
WzBdID0gcG9zWzBdICsgcy5sZW5ndGggfCAwOworICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7
CisgICAgICAgIH0sIGxbMV0pOworICAgIHJldHVybiByOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiBlbXB0eTsKKyAgfQorfQorCitmdW5jdGlvbiBjYXQoYSwgYikgeworICByZXR1cm4gYS5j
b25jYXQoYik7Cit9CisKK2Z1bmN0aW9uIGlzX3NwYWNlKHBhcmFtKSB7CisgIHZhciBzd2l0Y2hl
ciA9IHBhcmFtIC0gOSB8IDA7CisgIGlmIChzd2l0Y2hlciA+IDQgfHwgc3dpdGNoZXIgPCAwKSB7
CisgICAgaWYgKHN3aXRjaGVyICE9PSAyMykgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgfQorICB9
CisgIGVsc2UgaWYgKHN3aXRjaGVyICE9PSAyKSB7CisgICAgcmV0dXJuIC8qIHRydWUgKi8xOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KK30KKworZnVuY3Rp
b24gdHJpbShzKSB7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIGkgPSAwOworICB3aGls
ZShpIDwgbGVuICYmIGlzX3NwYWNlKHNbaV0pKSB7CisgICAgaSA9IGkgKyAxIHwgMDsKKyAgfTsK
KyAgdmFyIGogPSBsZW4gLSAxIHwgMDsKKyAgd2hpbGUoaiA+PSBpICYmIGlzX3NwYWNlKHNbal0p
KSB7CisgICAgaiA9IGogLSAxIHwgMDsKKyAgfTsKKyAgaWYgKGogPj0gaSkgeworICAgIHJldHVy
biBzdWIocywgaSwgKGogLSBpIHwgMCkgKyAxIHwgMCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0
dXJuIGVtcHR5OworICB9Cit9CisKK2Z1bmN0aW9uIGVzY2FwZWQocykgeworICB2YXIgbiA9IDA7
CisgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gcy5sZW5ndGggLSAxIHwgMDsgaSA8PSBpX2Zp
bmlzaDsgKytpKXsKKyAgICB2YXIgbWF0Y2ggPSBzW2ldOworICAgIHZhciAkanM7CisgICAgaWYg
KG1hdGNoID49IDMyKSB7CisgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDM0IHwgMDsKKyAg
ICAgICRqcyA9IHN3aXRjaGVyID4gNTggfHwgc3dpdGNoZXIgPCAwID8gKAorICAgICAgICAgIHN3
aXRjaGVyID49IDkzID8gNCA6IDEKKyAgICAgICAgKSA6ICgKKyAgICAgICAgICBzd2l0Y2hlciA+
IDU3IHx8IHN3aXRjaGVyIDwgMSA/IDIgOiAxCisgICAgICAgICk7CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgJGpzID0gbWF0Y2ggPj0gMTEgPyAoCisgICAgICAgICAgbWF0Y2ggIT09IDEzID8g
NCA6IDIKKyAgICAgICAgKSA6ICgKKyAgICAgICAgICBtYXRjaCA+PSA4ID8gMiA6IDQKKyAgICAg
ICAgKTsKKyAgICB9CisgICAgbiA9IG4gKyAkanMgfCAwOworICB9CisgIGlmIChuID09PSBzLmxl
bmd0aCkgeworICAgIHJldHVybiBjb3B5KHMpOworICB9CisgIGVsc2UgeworICAgIHZhciBzJHBy
aW1lID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKG4pOworICAgIG4gPSAwOworICAg
IGZvcih2YXIgaSQxID0gMCAsaV9maW5pc2gkMSA9IHMubGVuZ3RoIC0gMSB8IDA7IGkkMSA8PSBp
X2ZpbmlzaCQxOyArK2kkMSl7CisgICAgICB2YXIgYyA9IHNbaSQxXTsKKyAgICAgIHZhciBleGl0
ID0gMDsKKyAgICAgIGlmIChjID49IDM1KSB7CisgICAgICAgIGlmIChjICE9PSA5MikgeworICAg
ICAgICAgIGlmIChjID49IDEyNykgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcyRwcmltZVtuXSA9IGM7CisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAyOworICAg
ICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChjID49IDMyKSB7CisgICAgICAgIGlmIChj
ID49IDM0KSB7CisgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgcyRwcmltZVtuXSA9IGM7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVs
c2UgaWYgKGMgPj0gMTQpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAg
ICAgIHMkcHJpbWVbbl0gPSAvKiAiXFwiICovOTI7CisgICAgICAgICAgICAgIG4gPSBuICsgMSB8
IDA7CisgICAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiYiIgKi85ODsKKyAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgIHMkcHJpbWVbbl0g
PSAvKiAiXFwiICovOTI7CisgICAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7CisgICAgICAgICAg
ICAgIHMkcHJpbWVbbl0gPSAvKiAidCIgKi8xMTY7CisgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgcyRwcmltZVtuXSA9IC8qICJcXCIgKi85
MjsKKyAgICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgICAgICAgcyRwcmltZVtu
XSA9IC8qICJuIiAqLzExMDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAw
IDogCisgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAg
Y2FzZSAzIDogCisgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgY2FzZSA1IDogCisgICAg
ICAgICAgY2FzZSA2IDogCisgICAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgY2FzZSAxMSA6
IAorICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgcyRwcmlt
ZVtuXSA9IC8qICJcXCIgKi85MjsKKyAgICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAg
ICAgICAgICAgcyRwcmltZVtuXSA9IC8qICJyIiAqLzExNDsKKyAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHN3aXRjaCAoZXhpdCkgewor
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiXFwiICovOTI7
CisgICAgICAgICAgICBuID0gbiArIDEgfCAwOworICAgICAgICAgICAgcyRwcmltZVtuXSA9IDQ4
ICsgKGMgLyAxMDAgfCAwKSB8IDA7CisgICAgICAgICAgICBuID0gbiArIDEgfCAwOworICAgICAg
ICAgICAgcyRwcmltZVtuXSA9IDQ4ICsgKGMgLyAxMCB8IDApICUgMTAgfCAwOworICAgICAgICAg
ICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgICAgIHMkcHJpbWVbbl0gPSA0OCArIGMgJSAxMCB8
IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICBz
JHByaW1lW25dID0gLyogIlxcIiAqLzkyOworICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAg
ICAgICAgICAgIHMkcHJpbWVbbl0gPSBjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAor
ICAgICAgfQorICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICB9CisgICAgcmV0dXJuIHMkcHJpbWU7
CisgIH0KK30KKworZnVuY3Rpb24gbWFwKGYsIHMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsKKyAg
aWYgKGwpIHsKKyAgICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhsKTsK
KyAgICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGwgLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsg
KytpKXsKKyAgICAgIHJbaV0gPSBDdXJyeS5fMShmLCBzW2ldKTsKKyAgICB9CisgICAgcmV0dXJu
IHI7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHM7CisgIH0KK30KKworZnVuY3Rpb24gbWFw
aShmLCBzKSB7CisgIHZhciBsID0gcy5sZW5ndGg7CisgIGlmIChsKSB7CisgICAgdmFyIHIgPSBD
YW1sX3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcobCk7CisgICAgZm9yKHZhciBpID0gMCAsaV9m
aW5pc2ggPSBsIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgICByW2ldID0gQ3Vy
cnkuXzIoZiwgaSwgc1tpXSk7CisgICAgfQorICAgIHJldHVybiByOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBzOworICB9Cit9CisKK2Z1bmN0aW9uIHVwcGVyY2FzZShzKSB7CisgIHJldHVy
biBtYXAoQ2hhci51cHBlcmNhc2UsIHMpOworfQorCitmdW5jdGlvbiBsb3dlcmNhc2Uocykgewor
ICByZXR1cm4gbWFwKENoYXIubG93ZXJjYXNlLCBzKTsKK30KKworZnVuY3Rpb24gYXBwbHkxKGYs
IHMpIHsKKyAgaWYgKHMubGVuZ3RoKSB7CisgICAgdmFyIHIgPSBjb3B5KHMpOworICAgIHJbMF0g
PSBDdXJyeS5fMShmLCBzWzBdKTsKKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAgICBy
ZXR1cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiBjYXBpdGFsaXplKHMpIHsKKyAgcmV0dXJuIGFw
cGx5MShDaGFyLnVwcGVyY2FzZSwgcyk7Cit9CisKK2Z1bmN0aW9uIHVuY2FwaXRhbGl6ZShzKSB7
CisgIHJldHVybiBhcHBseTEoQ2hhci5sb3dlcmNhc2UsIHMpOworfQorCitmdW5jdGlvbiBpbmRl
eF9yZWMocywgbGltLCBfaSwgYykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGkgPSBfaTsK
KyAgICBpZiAoaSA+PSBsaW0pIHsKKyAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25z
Lm5vdF9mb3VuZDsKKyAgICB9CisgICAgZWxzZSBpZiAoc1tpXSA9PT0gYykgeworICAgICAgcmV0
dXJuIGk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICBj
b250aW51ZSA7CisgICAgICAKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGluZGV4KHMsIGMp
IHsKKyAgcmV0dXJuIGluZGV4X3JlYyhzLCBzLmxlbmd0aCwgMCwgYyk7Cit9CisKK2Z1bmN0aW9u
IGluZGV4X2Zyb20ocywgaSwgYykgeworICB2YXIgbCA9IHMubGVuZ3RoOworICBpZiAoaSA8IDAg
fHwgaSA+IGwpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRl
cy5pbmRleF9mcm9tIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBpbmRl
eF9yZWMocywgbCwgaSwgYyk7CisgIH0KK30KKworZnVuY3Rpb24gcmluZGV4X3JlYyhzLCBfaSwg
YykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGkgPSBfaTsKKyAgICBpZiAoaSA8IDApIHsK
KyAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAgICB9Cisg
ICAgZWxzZSBpZiAoc1tpXSA9PT0gYykgeworICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgX2kgPSBpIC0gMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAg
ICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHJpbmRleChzLCBjKSB7CisgIHJldHVybiByaW5kZXhf
cmVjKHMsIHMubGVuZ3RoIC0gMSB8IDAsIGMpOworfQorCitmdW5jdGlvbiByaW5kZXhfZnJvbShz
LCBpLCBjKSB7CisgIGlmIChpIDwgLTEgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsK
KyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAg
ICAgICAgICJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbSIKKyAgICAgICAg
XTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gcmluZGV4X3JlYyhzLCBpLCBjKTsKKyAgfQor
fQorCitmdW5jdGlvbiBjb250YWluc19mcm9tKHMsIGksIGMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0
aDsKKyAgaWYgKGkgPCAwIHx8IGkgPiBsKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIlN0cmluZy5j
b250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbSIKKyAgICAgICAgXTsKKyAgfQorICBl
bHNlIHsKKyAgICB0cnkgeworICAgICAgaW5kZXhfcmVjKHMsIGwsIGksIGMpOworICAgICAgcmV0
dXJuIC8qIHRydWUgKi8xOworICAgIH0KKyAgICBjYXRjaCAoZXhuKXsKKyAgICAgIGlmIChleG4g
PT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkgeworICAgICAgICByZXR1cm4g
LyogZmFsc2UgKi8wOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IGV4bjsK
KyAgICAgIH0KKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gY29udGFpbnMocywgYykgeworICBy
ZXR1cm4gY29udGFpbnNfZnJvbShzLCAwLCBjKTsKK30KKworZnVuY3Rpb24gcmNvbnRhaW5zX2Zy
b20ocywgaSwgYykgeworICBpZiAoaSA8IDAgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93
IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAor
ICAgICAgICAgICJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbSIK
KyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICB0cnkgeworICAgICAgcmluZGV4X3JlYyhz
LCBpLCBjKTsKKyAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICB9CisgICAgY2F0Y2ggKGV4
bil7CisgICAgICBpZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQp
IHsKKyAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICB0aHJvdyBleG47CisgICAgICB9CisgICAgfQorICB9Cit9CisKK3ZhciBjb21wYXJl
ID0gQ2FtbF9vYmouY2FtbF9jb21wYXJlOworCit2YXIgdW5zYWZlX3RvX3N0cmluZyA9IENhbWxf
c3RyaW5nLmJ5dGVzX3RvX3N0cmluZzsKKwordmFyIHVuc2FmZV9vZl9zdHJpbmcgPSBDYW1sX3N0
cmluZy5ieXRlc19vZl9zdHJpbmc7CisKK2V4cG9ydHMubWFrZSAgICAgICAgICAgICA9IG1ha2U7
CitleHBvcnRzLmluaXQgICAgICAgICAgICAgPSBpbml0OworZXhwb3J0cy5lbXB0eSAgICAgICAg
ICAgID0gZW1wdHk7CitleHBvcnRzLmNvcHkgICAgICAgICAgICAgPSBjb3B5OworZXhwb3J0cy5v
Zl9zdHJpbmcgICAgICAgID0gb2Zfc3RyaW5nOworZXhwb3J0cy50b19zdHJpbmcgICAgICAgID0g
dG9fc3RyaW5nOworZXhwb3J0cy5zdWIgICAgICAgICAgICAgID0gc3ViOworZXhwb3J0cy5zdWJf
c3RyaW5nICAgICAgID0gc3ViX3N0cmluZzsKK2V4cG9ydHMuZXh0ZW5kICAgICAgICAgICA9IGV4
dGVuZDsKK2V4cG9ydHMuZmlsbCAgICAgICAgICAgICA9IGZpbGw7CitleHBvcnRzLmJsaXQgICAg
ICAgICAgICAgPSBibGl0OworZXhwb3J0cy5ibGl0X3N0cmluZyAgICAgID0gYmxpdF9zdHJpbmc7
CitleHBvcnRzLmNvbmNhdCAgICAgICAgICAgPSBjb25jYXQ7CitleHBvcnRzLmNhdCAgICAgICAg
ICAgICAgPSBjYXQ7CitleHBvcnRzLml0ZXIgICAgICAgICAgICAgPSBpdGVyOworZXhwb3J0cy5p
dGVyaSAgICAgICAgICAgID0gaXRlcmk7CitleHBvcnRzLm1hcCAgICAgICAgICAgICAgPSBtYXA7
CitleHBvcnRzLm1hcGkgICAgICAgICAgICAgPSBtYXBpOworZXhwb3J0cy50cmltICAgICAgICAg
ICAgID0gdHJpbTsKK2V4cG9ydHMuZXNjYXBlZCAgICAgICAgICA9IGVzY2FwZWQ7CitleHBvcnRz
LmluZGV4ICAgICAgICAgICAgPSBpbmRleDsKK2V4cG9ydHMucmluZGV4ICAgICAgICAgICA9IHJp
bmRleDsKK2V4cG9ydHMuaW5kZXhfZnJvbSAgICAgICA9IGluZGV4X2Zyb207CitleHBvcnRzLnJp
bmRleF9mcm9tICAgICAgPSByaW5kZXhfZnJvbTsKK2V4cG9ydHMuY29udGFpbnMgICAgICAgICA9
IGNvbnRhaW5zOworZXhwb3J0cy5jb250YWluc19mcm9tICAgID0gY29udGFpbnNfZnJvbTsKK2V4
cG9ydHMucmNvbnRhaW5zX2Zyb20gICA9IHJjb250YWluc19mcm9tOworZXhwb3J0cy51cHBlcmNh
c2UgICAgICAgID0gdXBwZXJjYXNlOworZXhwb3J0cy5sb3dlcmNhc2UgICAgICAgID0gbG93ZXJj
YXNlOworZXhwb3J0cy5jYXBpdGFsaXplICAgICAgID0gY2FwaXRhbGl6ZTsKK2V4cG9ydHMudW5j
YXBpdGFsaXplICAgICA9IHVuY2FwaXRhbGl6ZTsKK2V4cG9ydHMuY29tcGFyZSAgICAgICAgICA9
IGNvbXBhcmU7CitleHBvcnRzLnVuc2FmZV90b19zdHJpbmcgPSB1bnNhZmVfdG9fc3RyaW5nOwor
ZXhwb3J0cy51bnNhZmVfb2Zfc3RyaW5nID0gdW5zYWZlX29mX3N0cmluZzsKKy8qIE5vIHNpZGUg
ZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgYnl0ZXMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVy
biBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9hcnJheSddID0gZnVuY3Rp
b24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9h
cnJheS5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisKK2Z1bmN0aW9uIGNhbWxfYXJyYXlf
c3ViKHgsIG9mZnNldCwgbGVuKSB7CisgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkobGVuKTsKKyAg
dmFyIGogPSAwOworICB2YXIgaSA9IG9mZnNldDsKKyAgd2hpbGUoaiA8IGxlbikgeworICAgIHJl
c3VsdFtqXSA9IHhbaV07CisgICAgaiA9IGogKyAxIHwgMDsKKyAgICBpID0gaSArIDEgfCAwOwor
ICB9OworICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBsZW4oX2FjYywgX2wpIHsKKyAg
d2hpbGUodHJ1ZSkgeworICAgIHZhciBsID0gX2w7CisgICAgdmFyIGFjYyA9IF9hY2M7CisgICAg
aWYgKGwpIHsKKyAgICAgIF9sID0gbFsxXTsKKyAgICAgIF9hY2MgPSBsWzBdLmxlbmd0aCArIGFj
YyB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gYWNjOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmlsbChhcnIsIF9pLCBf
bCkgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGwgPSBfbDsKKyAgICB2YXIgaSA9IF9pOwor
ICAgIGlmIChsKSB7CisgICAgICB2YXIgeCA9IGxbMF07CisgICAgICB2YXIgbCQxID0geC5sZW5n
dGg7CisgICAgICB2YXIgayA9IGk7CisgICAgICB2YXIgaiA9IDA7CisgICAgICB3aGlsZShqIDwg
bCQxKSB7CisgICAgICAgIGFycltrXSA9IHhbal07CisgICAgICAgIGsgPSBrICsgMSB8IDA7Cisg
ICAgICAgIGogPSBqICsgMSB8IDA7CisgICAgICB9OworICAgICAgX2wgPSBsWzFdOworICAgICAg
X2kgPSBrOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGNhbWxfYXJy
YXlfY29uY2F0KGwpIHsKKyAgdmFyIHYgPSBsZW4oMCwgbCk7CisgIHZhciByZXN1bHQgPSBuZXcg
QXJyYXkodik7CisgIGZpbGwocmVzdWx0LCAwLCBsKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwor
ZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QobGVuLCBpbml0KSB7CisgIHZhciBiID0gbmV3IEFycmF5
KGxlbik7CisgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9m
aW5pc2g7ICsraSl7CisgICAgYltpXSA9IGluaXQ7CisgIH0KKyAgcmV0dXJuIGI7Cit9CisKK2Z1
bmN0aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7CisgIGlmIChpMiA8
PSBpMSkgeworICAgIGZvcih2YXIgaiA9IDAgLGpfZmluaXNoID0gbGVuIC0gMSB8IDA7IGogPD0g
al9maW5pc2g7ICsrail7CisgICAgICBhMltqICsgaTIgfCAwXSA9IGExW2ogKyBpMSB8IDBdOwor
ICAgIH0KKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIGZvcih2YXIg
aiQxID0gbGVuIC0gMSB8IDA7IGokMSA+PSAwOyAtLWokMSl7CisgICAgICBhMltqJDEgKyBpMiB8
IDBdID0gYTFbaiQxICsgaTEgfCAwXTsKKyAgICB9CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAg
fQorfQorCitleHBvcnRzLmNhbWxfYXJyYXlfc3ViICAgID0gY2FtbF9hcnJheV9zdWI7CitleHBv
cnRzLmNhbWxfYXJyYXlfY29uY2F0ID0gY2FtbF9hcnJheV9jb25jYXQ7CitleHBvcnRzLmNhbWxf
bWFrZV92ZWN0ICAgID0gY2FtbF9tYWtlX3ZlY3Q7CitleHBvcnRzLmNhbWxfYXJyYXlfYmxpdCAg
ID0gY2FtbF9hcnJheV9ibGl0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBv
ZiBjYW1sX2FycmF5LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisK
KworICBfcmVnaXN0cnlbJ2NhbWxfYnVpbHRpbl9leGNlcHRpb25zJ10gPSBmdW5jdGlvbigpIHsK
K8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisKK3ZhciBvdXRfb2ZfbWVt
b3J5ID0gLyogdHVwbGUgKi9bCisgICJPdXRfb2ZfbWVtb3J5IiwKKyAgMAorXTsKKwordmFyIHN5
c19lcnJvciA9IC8qIHR1cGxlICovWworICAiU3lzX2Vycm9yIiwKKyAgLTEKK107CisKK3ZhciBm
YWlsdXJlID0gLyogdHVwbGUgKi9bCisgICJGYWlsdXJlIiwKKyAgLTIKK107CisKK3ZhciBpbnZh
bGlkX2FyZ3VtZW50ID0gLyogdHVwbGUgKi9bCisgICJJbnZhbGlkX2FyZ3VtZW50IiwKKyAgLTMK
K107CisKK3ZhciBlbmRfb2ZfZmlsZSA9IC8qIHR1cGxlICovWworICAiRW5kX29mX2ZpbGUiLAor
ICAtNAorXTsKKwordmFyIGRpdmlzaW9uX2J5X3plcm8gPSAvKiB0dXBsZSAqL1sKKyAgIkRpdmlz
aW9uX2J5X3plcm8iLAorICAtNQorXTsKKwordmFyIG5vdF9mb3VuZCA9IC8qIHR1cGxlICovWwor
ICAiTm90X2ZvdW5kIiwKKyAgLTYKK107CisKK3ZhciBtYXRjaF9mYWlsdXJlID0gLyogdHVwbGUg
Ki9bCisgICJNYXRjaF9mYWlsdXJlIiwKKyAgLTcKK107CisKK3ZhciBzdGFja19vdmVyZmxvdyA9
IC8qIHR1cGxlICovWworICAiU3RhY2tfb3ZlcmZsb3ciLAorICAtOAorXTsKKwordmFyIHN5c19i
bG9ja2VkX2lvID0gLyogdHVwbGUgKi9bCisgICJTeXNfYmxvY2tlZF9pbyIsCisgIC05CitdOwor
Cit2YXIgYXNzZXJ0X2ZhaWx1cmUgPSAvKiB0dXBsZSAqL1sKKyAgIkFzc2VydF9mYWlsdXJlIiwK
KyAgLTEwCitdOworCit2YXIgdW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSAvKiB0dXBsZSAq
L1sKKyAgIlVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIiwKKyAgLTExCitdOworCitleHBvcnRz
Lm91dF9vZl9tZW1vcnkgICAgICAgICAgICAgID0gb3V0X29mX21lbW9yeTsKK2V4cG9ydHMuc3lz
X2Vycm9yICAgICAgICAgICAgICAgICAgPSBzeXNfZXJyb3I7CitleHBvcnRzLmZhaWx1cmUgICAg
ICAgICAgICAgICAgICAgID0gZmFpbHVyZTsKK2V4cG9ydHMuaW52YWxpZF9hcmd1bWVudCAgICAg
ICAgICAgPSBpbnZhbGlkX2FyZ3VtZW50OworZXhwb3J0cy5lbmRfb2ZfZmlsZSAgICAgICAgICAg
ICAgICA9IGVuZF9vZl9maWxlOworZXhwb3J0cy5kaXZpc2lvbl9ieV96ZXJvICAgICAgICAgICA9
IGRpdmlzaW9uX2J5X3plcm87CitleHBvcnRzLm5vdF9mb3VuZCAgICAgICAgICAgICAgICAgID0g
bm90X2ZvdW5kOworZXhwb3J0cy5tYXRjaF9mYWlsdXJlICAgICAgICAgICAgICA9IG1hdGNoX2Zh
aWx1cmU7CitleHBvcnRzLnN0YWNrX292ZXJmbG93ICAgICAgICAgICAgID0gc3RhY2tfb3ZlcmZs
b3c7CitleHBvcnRzLnN5c19ibG9ja2VkX2lvICAgICAgICAgICAgID0gc3lzX2Jsb2NrZWRfaW87
CitleHBvcnRzLmFzc2VydF9mYWlsdXJlICAgICAgICAgICAgID0gYXNzZXJ0X2ZhaWx1cmU7Citl
eHBvcnRzLnVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gdW5kZWZpbmVkX3JlY3Vyc2l2ZV9t
b2R1bGU7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisK
KworICBfcmVnaXN0cnlbJ2NhbWxfYnl0ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4
cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxfYnl0ZXMuanMgLy8vLy8vLy8KKyd1
c2Ugc3RyaWN0JzsKKwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9j
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBnZXQocywgaSkgeworICBpZiAo
aSA8IDAgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJpbmRleCBvdXQg
b2YgYm91bmRzIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBzW2ldOwor
ICB9Cit9CisKK2V4cG9ydHMuZ2V0ID0gZ2V0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8v
Ly8vIGVuZCBvZiBjYW1sX2J5dGVzLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsK
K8KgIH07CisKKworICBfcmVnaXN0cnlbJ2NhbWxfZXhjZXB0aW9ucyddID0gZnVuY3Rpb24oKSB7
CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9leGNlcHRp
b25zLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKKwordmFyIGlkID0gWzBdOworCitmdW5j
dGlvbiBjYW1sX3NldF9vb19pZChiKSB7CisgIGJbMV0gPSBpZFswXTsKKyAgaWRbMF0gKz0gMTsK
KyAgcmV0dXJuIGI7Cit9CisKK2Z1bmN0aW9uIGdldF9pZCgpIHsKKyAgaWRbMF0gKz0gMTsKKyAg
cmV0dXJuIGlkWzBdOworfQorCitmdW5jdGlvbiBjcmVhdGUoc3RyKSB7CisgIHZhciB2XzAwMSA9
IGdldF9pZCgvKiAoKSAqLzApOworICB2YXIgdiA9IC8qIHR1cGxlICovWworICAgIHN0ciwKKyAg
ICB2XzAwMQorICBdOworICB2LnRhZyA9IDI0ODsKKyAgcmV0dXJuIHY7Cit9CisKK2V4cG9ydHMu
Y2FtbF9zZXRfb29faWQgPSBjYW1sX3NldF9vb19pZDsKK2V4cG9ydHMuZ2V0X2lkICAgICAgICAg
PSBnZXRfaWQ7CitleHBvcnRzLmNyZWF0ZSAgICAgICAgID0gY3JlYXRlOworLyogTm8gc2lkZSBl
ZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX2V4Y2VwdGlvbnMuanMgLy8vLy8vLy8KK8Kg
IMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9mbG9hdCdd
ID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQg
b2YgY2FtbF9mbG9hdC5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisKK2Z1bmN0aW9uIGNh
bWxfaW50MzJfZmxvYXRfb2ZfYml0cyh4KSB7CisgIHZhciBpbnQzMiA9IG5ldyBJbnQzMkFycmF5
KC8qIGFycmF5ICovW3hdKTsKKyAgdmFyIGZsb2F0MzIgPSBuZXcgRmxvYXQzMkFycmF5KGludDMy
LmJ1ZmZlcik7CisgIHJldHVybiBmbG9hdDMyWzBdOworfQorCitmdW5jdGlvbiBjYW1sX2ludDMy
X2JpdHNfb2ZfZmxvYXQoeCkgeworICB2YXIgZmxvYXQzMiA9IG5ldyBGbG9hdDMyQXJyYXkoLyog
ZmxvYXQgYXJyYXkgKi9beF0pOworICByZXR1cm4gbmV3IEludDMyQXJyYXkoZmxvYXQzMi5idWZm
ZXIpWzBdOworfQorCitmdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0KHgpIHsKKyAgaWYgKGlz
RmluaXRlKHgpKSB7CisgICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUt
MzA4KSB7CisgICAgICByZXR1cm4gLyogRlBfbm9ybWFsICovMDsKKyAgICB9CisgICAgZWxzZSBp
ZiAoeCAhPT0gMCkgeworICAgICAgcmV0dXJuIC8qIEZQX3N1Ym5vcm1hbCAqLzE7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIEZQX3plcm8gKi8yOworICAgIH0KKyAgfQorICBl
bHNlIGlmIChpc05hTih4KSkgeworICAgIHJldHVybiAvKiBGUF9uYW4gKi80OworICB9CisgIGVs
c2UgeworICAgIHJldHVybiAvKiBGUF9pbmZpbml0ZSAqLzM7CisgIH0KK30KKworZnVuY3Rpb24g
Y2FtbF9tb2RmX2Zsb2F0KHgpIHsKKyAgaWYgKGlzRmluaXRlKHgpKSB7CisgICAgdmFyIG5lZyA9
ICsoMSAvIHggPCAwKTsKKyAgICB2YXIgeCQxID0gTWF0aC5hYnMoeCk7CisgICAgdmFyIGkgPSBN
YXRoLmZsb29yKHgkMSk7CisgICAgdmFyIGYgPSB4JDEgLSBpOworICAgIGlmIChuZWcpIHsKKyAg
ICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgLWYsCisgICAgICAgICAgICAg
IC1pCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0
dXBsZSAqL1sKKyAgICAgICAgICAgICAgZiwKKyAgICAgICAgICAgICAgaQorICAgICAgICAgICAg
XTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoaXNOYU4oeCkpIHsKKyAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICBOYU4sCisgICAgICAgICAgICBOYU4KKyAgICAgICAgICBdOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIDEgLyB4
LAorICAgICAgICAgICAgeAorICAgICAgICAgIF07CisgIH0KK30KKwordmFyIGNhbWxfbGRleHBf
ZmxvYXQgPSAoIGZ1bmN0aW9uICh4LGV4cCkgeworICAgIGV4cCB8PSAwOworICAgIGlmIChleHAg
PiAxMDIzKSB7CisgICAgICAgIGV4cCAtPSAxMDIzOworICAgICAgICB4ICo9IE1hdGgucG93KDIs
IDEwMjMpOworICAgICAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5v
cm1hbAorICAgICAgICAgICAgZXhwIC09IDEwMjM7CisgICAgICAgICAgICB4ICo9IE1hdGgucG93
KDIsIDEwMjMpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChleHAgPCAtMTAyMykgeworICAg
ICAgICBleHAgKz0gMTAyMzsKKyAgICAgICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7CisgICAg
fQorICAgIHggKj0gTWF0aC5wb3coMiwgZXhwKTsKKyAgICByZXR1cm4geDsKK30KKyk7CisKK3Zh
ciBjYW1sX2ZyZXhwX2Zsb2F0ID0gKGZ1bmN0aW9uICh4KSB7CisgICAgaWYgKCh4ID09IDApIHx8
ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFsgeCwgMF07CisgICAgdmFyIG5lZyA9IHggPCAwOworICAg
IGlmIChuZWcpIHggPSAtIHg7CisgICAgdmFyIGV4cCA9IE1hdGguZmxvb3IoTWF0aC5MT0cyRSpN
YXRoLmxvZyh4KSkgKyAxOworICAgIHggKj0gTWF0aC5wb3coMiwtZXhwKTsKKyAgICBpZiAoeCA8
IDAuNSkgeyB4ICo9IDI7IGV4cCAtPSAxOyB9CisgICAgaWYgKG5lZykgeCA9IC0geDsKKyAgICBy
ZXR1cm4gW3gsIGV4cF07Cit9CispOworCitmdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUoeCwg
eSkgeworICBpZiAoeCA9PT0geSkgeworICAgIHJldHVybiAwOworICB9CisgIGVsc2UgaWYgKHgg
PCB5KSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2UgaWYgKHggPiB5IHx8IHggPT09IHgp
IHsKKyAgICByZXR1cm4gMTsKKyAgfQorICBlbHNlIGlmICh5ID09PSB5KSB7CisgICAgcmV0dXJu
IC0xOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGNh
bWxfY29weXNpZ25fZmxvYXQoeCwgeSkgeworICB2YXIgeCQxID0gTWF0aC5hYnMoeCk7CisgIHZh
ciB5JDEgPSB5ID09PSAwID8gMSAvIHkgOiB5OworICBpZiAoeSQxIDwgMCkgeworICAgIHJldHVy
biAteCQxOworICB9CisgIGVsc2UgeworICAgIHJldHVybiB4JDE7CisgIH0KK30KKworZnVuY3Rp
b24gY2FtbF9leHBtMV9mbG9hdCh4KSB7CisgIHZhciB5ID0gTWF0aC5leHAoeCk7CisgIHZhciB6
ID0geSAtIDE7CisgIGlmIChNYXRoLmFicyh4KSA+IDEpIHsKKyAgICByZXR1cm4gejsKKyAgfQor
ICBlbHNlIGlmICh6ID09PSAwKSB7CisgICAgcmV0dXJuIHg7CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIHggKiB6IC8gTWF0aC5sb2coeSk7CisgIH0KK30KKwordmFyIGNhbWxfaHlwb3RfZmxv
YXQgPSAoIGZ1bmN0aW9uICh4LCB5KSB7CisgICAgdmFyIHgwID0gTWF0aC5hYnMoeCksIHkwID0g
TWF0aC5hYnMoeSk7CisgICAgdmFyIGEgPSBNYXRoLm1heCh4MCwgeTApLCBiID0gTWF0aC5taW4o
eDAseTApIC8gKGE/YToxKTsKKyAgICByZXR1cm4gYSAqIE1hdGguc3FydCgxICsgYipiKTsKK30K
Kyk7CisKK3ZhciBjYW1sX2xvZzEwX2Zsb2F0ID0gKCBmdW5jdGlvbiAgKHgpIHsgCisgICByZXR1
cm4gTWF0aC5MT0cxMEUgKiBNYXRoLmxvZyh4KTsgfQorKTsKKworZXhwb3J0cy5jYW1sX2ludDMy
X2Zsb2F0X29mX2JpdHMgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHM7CitleHBvcnRzLmNhbWxf
aW50MzJfYml0c19vZl9mbG9hdCA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdDsKK2V4cG9ydHMu
Y2FtbF9jbGFzc2lmeV9mbG9hdCAgICAgID0gY2FtbF9jbGFzc2lmeV9mbG9hdDsKK2V4cG9ydHMu
Y2FtbF9tb2RmX2Zsb2F0ICAgICAgICAgID0gY2FtbF9tb2RmX2Zsb2F0OworZXhwb3J0cy5jYW1s
X2xkZXhwX2Zsb2F0ICAgICAgICAgPSBjYW1sX2xkZXhwX2Zsb2F0OworZXhwb3J0cy5jYW1sX2Zy
ZXhwX2Zsb2F0ICAgICAgICAgPSBjYW1sX2ZyZXhwX2Zsb2F0OworZXhwb3J0cy5jYW1sX2Zsb2F0
X2NvbXBhcmUgICAgICAgPSBjYW1sX2Zsb2F0X2NvbXBhcmU7CitleHBvcnRzLmNhbWxfY29weXNp
Z25fZmxvYXQgICAgICA9IGNhbWxfY29weXNpZ25fZmxvYXQ7CitleHBvcnRzLmNhbWxfZXhwbTFf
ZmxvYXQgICAgICAgICA9IGNhbWxfZXhwbTFfZmxvYXQ7CitleHBvcnRzLmNhbWxfaHlwb3RfZmxv
YXQgICAgICAgICA9IGNhbWxfaHlwb3RfZmxvYXQ7CitleHBvcnRzLmNhbWxfbG9nMTBfZmxvYXQg
ICAgICAgICA9IGNhbWxfbG9nMTBfZmxvYXQ7CisvKiBjYW1sX2xkZXhwX2Zsb2F0IE5vdCBhIHB1
cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9mbG9hdC5qcyAvLy8vLy8vLworwqAg
wqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX2Zvcm1hdCdd
ID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQg
b2YgY2FtbF9mb3JtYXQuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5ICAg
ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfaW50MzIgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2ludDMyIik7Cit2YXIgQ2FtbF9pbnQ2NCAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfaW50NjQiKTsKK3ZhciBDYW1sX3V0aWxzICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF91dGlscyIpOwordmFyIENhbWxfc3RyaW5nICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlv
biBjYW1sX2ZhaWx3aXRoKHMpIHsKKyAgdGhyb3cgWworICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICBzCisgICAgICBdOworfQorCitmdW5jdGlvbiBwYXJz
ZV9kaWdpdChjKSB7CisgIGlmIChjID49IDY1KSB7CisgICAgaWYgKGMgPj0gOTcpIHsKKyAgICAg
IGlmIChjID49IDEyMykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgcmV0dXJuIGMgLSA4NyB8IDA7CisgICAgICB9CisgICAgfQorICAgIGVsc2Ug
aWYgKGMgPj0gOTEpIHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gYyAtIDU1IHwgMDsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoYyA+IDU3IHx8IGMg
PCA0OCkgeworICAgIHJldHVybiAtMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYyAtIC8q
ICIwIiAqLzQ4IHwgMDsKKyAgfQorfQorCitmdW5jdGlvbiBpbnRfb2Zfc3RyaW5nX2Jhc2UocGFy
YW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4g
ODsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuIDE2OworICAgIGNhc2UgMiA6IAorICAg
ICAgICByZXR1cm4gMTA7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAyOworICAgIAor
ICB9Cit9CisKK2Z1bmN0aW9uIHBhcnNlX3NpZ25fYW5kX2Jhc2UocykgeworICB2YXIgc2lnbiA9
IDE7CisgIHZhciBiYXNlID0gLyogRGVjICovMjsKKyAgdmFyIGkgPSAwOworICBpZiAoc1tpXSA9
PT0gIi0iKSB7CisgICAgc2lnbiA9IC0xOworICAgIGkgPSBpICsgMSB8IDA7CisgIH0KKyAgdmFy
IG1hdGNoID0gcy5jaGFyQ29kZUF0KGkpOworICB2YXIgbWF0Y2gkMSA9IHMuY2hhckNvZGVBdChp
ICsgMSB8IDApOworICBpZiAobWF0Y2ggPT09IDQ4KSB7CisgICAgaWYgKG1hdGNoJDEgPj0gODkp
IHsKKyAgICAgIGlmIChtYXRjaCQxICE9PSA5OCkgeworICAgICAgICBpZiAobWF0Y2gkMSAhPT0g
MTExKSB7CisgICAgICAgICAgaWYgKG1hdGNoJDEgPT09IDEyMCkgeworICAgICAgICAgICAgYmFz
ZSA9IC8qIEhleCAqLzE7CisgICAgICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgICAgIH0K
KyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBiYXNlID0g
LyogT2N0ICovMDsKKyAgICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgICB9CisgICAgICB9
CisgICAgICBlbHNlIHsKKyAgICAgICAgYmFzZSA9IC8qIEJpbiAqLzM7CisgICAgICAgIGkgPSBp
ICsgMiB8IDA7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKG1hdGNoJDEgIT09IDY2KSB7
CisgICAgICBpZiAobWF0Y2gkMSAhPT0gNzkpIHsKKyAgICAgICAgaWYgKG1hdGNoJDEgPj0gODgp
IHsKKyAgICAgICAgICBiYXNlID0gLyogSGV4ICovMTsKKyAgICAgICAgICBpID0gaSArIDIgfCAw
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGJh
c2UgPSAvKiBPY3QgKi8wOworICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgfQorICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIGJhc2UgPSAvKiBCaW4gKi8zOworICAgICAgaSA9IGkgKyAyIHwg
MDsKKyAgICB9CisgIH0KKyAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgIGksCisgICAg
ICAgICAgc2lnbiwKKyAgICAgICAgICBiYXNlCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGNh
bWxfaW50X29mX3N0cmluZyhzKSB7CisgIHZhciBtYXRjaCA9IHBhcnNlX3NpZ25fYW5kX2Jhc2Uo
cyk7CisgIHZhciBpID0gbWF0Y2hbMF07CisgIHZhciBiYXNlID0gaW50X29mX3N0cmluZ19iYXNl
KG1hdGNoWzJdKTsKKyAgdmFyIHRocmVzaG9sZCA9IDQyOTQ5NjcyOTU7CisgIHZhciBsZW4gPSBz
Lmxlbmd0aDsKKyAgdmFyIGMgPSBpIDwgbGVuID8gcy5jaGFyQ29kZUF0KGkpIDogLyogIlwwMDAi
ICovMDsKKyAgdmFyIGQgPSBwYXJzZV9kaWdpdChjKTsKKyAgaWYgKGQgPCAwIHx8IGQgPj0gYmFz
ZSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWls
dXJlLAorICAgICAgICAgICJpbnRfb2Zfc3RyaW5nIgorICAgICAgICBdOworICB9CisgIHZhciBh
dXggPSBmdW5jdGlvbiAoX2FjYywgX2spIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIg
ayA9IF9rOworICAgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgICBpZiAoayA9PT0gbGVuKSB7Cisg
ICAgICAgIHJldHVybiBhY2M7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIGEg
PSBzLmNoYXJDb2RlQXQoayk7CisgICAgICAgIGlmIChhID09PSAvKiAiXyIgKi85NSkgeworICAg
ICAgICAgIF9rID0gayArIDEgfCAwOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgdiA9IHBhcnNlX2RpZ2l0
KGEpOworICAgICAgICAgIGlmICh2IDwgMCB8fCB2ID49IGJhc2UpIHsKKyAgICAgICAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUs
CisgICAgICAgICAgICAgICAgICAiaW50X29mX3N0cmluZyIKKyAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBhY2MkMSA9IGJh
c2UgKiBhY2MgKyB2OworICAgICAgICAgICAgaWYgKGFjYyQxID4gdGhyZXNob2xkKSB7CisgICAg
ICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgImludF9vZl9zdHJpbmciCisgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgIF9rID0gayArIDEgfCAwOworICAgICAgICAgICAgICBfYWNjID0gYWNjJDE7Cisg
ICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHJlcyA9
IG1hdGNoWzFdICogYXV4KGQsIGkgKyAxIHwgMCk7CisgIHZhciBvcl9yZXMgPSByZXMgfCAwOwor
ICBpZiAoYmFzZSA9PT0gMTAgJiYgcmVzICE9PSBvcl9yZXMpIHsKKyAgICB0aHJvdyBbCisgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAgICAgICAiaW50X29m
X3N0cmluZyIKKyAgICAgICAgXTsKKyAgfQorICByZXR1cm4gb3JfcmVzOworfQorCitmdW5jdGlv
biBjYW1sX2ludDY0X29mX3N0cmluZyhzKSB7CisgIHZhciBtYXRjaCA9IHBhcnNlX3NpZ25fYW5k
X2Jhc2Uocyk7CisgIHZhciBoYmFzZSA9IG1hdGNoWzJdOworICB2YXIgaSA9IG1hdGNoWzBdOwor
ICB2YXIgYmFzZSA9IENhbWxfaW50NjQub2ZfaW50MzIoaW50X29mX3N0cmluZ19iYXNlKGhiYXNl
KSk7CisgIHZhciBzaWduID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMihtYXRjaFsxXSk7CisgIHZhciB0
aHJlc2hvbGQ7CisgIHN3aXRjaCAoaGJhc2UpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgdGhy
ZXNob2xkID0gLyogaW50NjQgKi9bCisgICAgICAgICAgLyogaGkgKi81MzY4NzA5MTEsCisgICAg
ICAgICAgLyogbG8gKi80Mjk0OTY3Mjk1CisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMSA6IAorICAgICAgICB0aHJlc2hvbGQgPSAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAv
KiBoaSAqLzI2ODQzNTQ1NSwKKyAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyOTUKKyAgICAgICAg
XTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyIDogCisgICAgICAgIHRocmVzaG9sZCA9IC8q
IGludDY0ICovWworICAgICAgICAgIC8qIGhpICovNDI5NDk2NzI5LAorICAgICAgICAgIC8qIGxv
ICovMjU3Njk4MDM3NworICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDMgOiAK
KyAgICAgICAgdGhyZXNob2xkID0gLyogaW50NjQgKi9bCisgICAgICAgICAgLyogaGkgKi8yMTQ3
NDgzNjQ3LAorICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI5NQorICAgICAgICBdOworICAgICAg
ICBicmVhazsKKyAgICAKKyAgfQorICB2YXIgbGVuID0gcy5sZW5ndGg7CisgIHZhciBjID0gaSA8
IGxlbiA/IHMuY2hhckNvZGVBdChpKSA6IC8qICJcMDAwIiAqLzA7CisgIHZhciBkID0gQ2FtbF9p
bnQ2NC5vZl9pbnQzMihwYXJzZV9kaWdpdChjKSk7CisgIGlmIChDYW1sX2ludDY0Lmx0KGQsIC8q
IGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAvKiBsbyAqLzAKKyAg
ICAgICAgXSkgfHwgQ2FtbF9pbnQ2NC5nZShkLCBiYXNlKSkgeworICAgIHRocm93IFsKKyAgICAg
ICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAgICJpbnQ2NF9v
Zl9zdHJpbmciCisgICAgICAgIF07CisgIH0KKyAgdmFyIGF1eCA9IGZ1bmN0aW9uIChfYWNjLCBf
aykgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBrID0gX2s7CisgICAgICB2YXIgYWNj
ID0gX2FjYzsKKyAgICAgIGlmIChrID09PSBsZW4pIHsKKyAgICAgICAgcmV0dXJuIGFjYzsKKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgYSA9IHMuY2hhckNvZGVBdChrKTsKKyAg
ICAgICAgaWYgKGEgPT09IC8qICJfIiAqLzk1KSB7CisgICAgICAgICAgX2sgPSBrICsgMSB8IDA7
CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHZhciB2ID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMihwYXJzZV9kaWdpdChh
KSk7CisgICAgICAgICAgaWYgKENhbWxfaW50NjQubHQodiwgLyogaW50NjQgKi9bCisgICAgICAg
ICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBsbyAqLzAKKyAgICAg
ICAgICAgICAgICBdKSB8fCBDYW1sX2ludDY0LmdlKHYsIGJhc2UpKSB7CisgICAgICAgICAgICB0
aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJl
LAorICAgICAgICAgICAgICAgICAgImludDY0X29mX3N0cmluZyIKKyAgICAgICAgICAgICAgICBd
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBhY2MkMSA9
IENhbWxfaW50NjQuYWRkKENhbWxfaW50NjQubXVsKGJhc2UsIGFjYyksIHYpOworICAgICAgICAg
ICAgaWYgKENhbWxfaW50NjQuZ3QoYWNjJDEsIHRocmVzaG9sZCkpIHsKKyAgICAgICAgICAgICAg
dGhyb3cgWworICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWls
dXJlLAorICAgICAgICAgICAgICAgICAgICAiaW50NjRfb2Zfc3RyaW5nIgorICAgICAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICBfayA9IGsgKyAxIHwgMDsKKyAgICAgICAgICAgICAgX2FjYyA9IGFjYyQxOworICAgICAgICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH07CisgIH07CisgIHZhciByZXMgPSBDYW1sX2lu
dDY0Lm11bChzaWduLCBhdXgoZCwgaSArIDEgfCAwKSk7CisgIHZhciBvcl9yZXNfMDAwID0gLyog
aGkgKi9yZXNbMF0gfCAvKiBoaSAqLzA7CisgIHZhciBvcl9yZXNfMDAxID0gLyogbG8gKi8ocmVz
WzFdID4+PiAwKTsKKyAgdmFyIG9yX3JlcyA9IC8qIGludDY0ICovWworICAgIG9yX3Jlc18wMDAs
CisgICAgb3JfcmVzXzAwMQorICBdOworICBpZiAoQ2FtbF9pbnQ2NC5lcShiYXNlLCAvKiBpbnQ2
NCAqL1sKKyAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgLyogbG8gKi8xMAorICAgICAg
ICBdKSAmJiBDYW1sX2ludDY0Lm5lcShyZXMsIG9yX3JlcykpIHsKKyAgICB0aHJvdyBbCisgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAgICAgICAiaW50NjRf
b2Zfc3RyaW5nIgorICAgICAgICBdOworICB9CisgIHJldHVybiBvcl9yZXM7Cit9CisKK2Z1bmN0
aW9uIGludF9vZl9iYXNlKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAg
OiAKKyAgICAgICAgcmV0dXJuIDg7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAxNjsK
KyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuIDEwOworICAgIAorICB9Cit9CisKK2Z1bmN0
aW9uIGxvd2VyY2FzZShjKSB7CisgIGlmIChjID49IC8qICJBIiAqLzY1ICYmIGMgPD0gLyogIloi
ICovOTAgfHwgYyA+PSAvKiAiXDE5MiIgKi8xOTIgJiYgYyA8PSAvKiAiXDIxNCIgKi8yMTQgfHwg
YyA+PSAvKiAiXDIxNiIgKi8yMTYgJiYgYyA8PSAvKiAiXDIyMiIgKi8yMjIpIHsKKyAgICByZXR1
cm4gYyArIDMyIHwgMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYzsKKyAgfQorfQorCitm
dW5jdGlvbiBwYXJzZV9mb3JtYXQoZm10KSB7CisgIHZhciBsZW4gPSBmbXQubGVuZ3RoOworICBp
ZiAobGVuID4gMzEpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiZm9ybWF0X2ludDogZm9ybWF0IHRv
byBsb25nIgorICAgICAgICBdOworICB9CisgIHZhciBmID0gLyogcmVjb3JkICovWworICAgIC8q
IGp1c3RpZnkgKi8iKyIsCisgICAgLyogc2lnbnN0eWxlICovIi0iLAorICAgIC8qIGZpbHRlciAq
LyIgIiwKKyAgICAvKiBhbHRlcm5hdGUgOiBmYWxzZSAqLzAsCisgICAgLyogYmFzZSA6IERlYyAq
LzIsCisgICAgLyogc2lnbmVkY29udiA6IGZhbHNlICovMCwKKyAgICAvKiB3aWR0aCAqLzAsCisg
ICAgLyogdXBwZXJjYXNlIDogZmFsc2UgKi8wLAorICAgIC8qIHNpZ24gKi8xLAorICAgIC8qIHBy
ZWMgKi8tMSwKKyAgICAvKiBjb252ICovImYiCisgIF07CisgIHZhciBfaSA9IDA7CisgIHdoaWxl
KHRydWUpIHsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChpID49IGxlbikgeworICAgICAgcmV0
dXJuIGY7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIGMgPSBmbXQuY2hhckNvZGVBdChp
KTsKKyAgICAgIHZhciBleGl0ID0gMDsKKyAgICAgIGlmIChjID49IDY5KSB7CisgICAgICAgIGlm
IChjID49IDg4KSB7CisgICAgICAgICAgaWYgKGMgPj0gMTIxKSB7CisgICAgICAgICAgICBleGl0
ID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2gg
KGMgLSA4OCB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAg
ICBmWy8qIGJhc2UgKi80XSA9IC8qIEhleCAqLzE7CisgICAgICAgICAgICAgICAgICBmWy8qIHVw
cGVyY2FzZSAqLzddID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgICAgICBfaSA9IGkgKyAx
IHwgMDsKKyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAgIGNh
c2UgMTMgOiAKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICBjYXNlIDE1
IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgIGNhc2UgMTcgOiAKKyAg
ICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgMjMgOiAKKyAgICAgICAgICAgICAgICAgIGZbLyogYmFzZSAqLzRdID0g
LyogT2N0ICovMDsKKyAgICAgICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgICAgY2FzZSAyOSA6IAorICAgICAg
ICAgICAgICAgICAgZlsvKiBiYXNlICovNF0gPSAvKiBEZWMgKi8yOworICAgICAgICAgICAgICAg
ICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAg
ICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgY2Fz
ZSA1IDogCisgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICBjYXNlIDcgOiAK
KyAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAg
ICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAg
ICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgICBjYXNlIDE4IDogCisgICAgICAgICAgICAgIGNh
c2UgMTkgOiAKKyAgICAgICAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgICBjYXNlIDIx
IDogCisgICAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgICAgY2FzZSAyNCA6IAor
ICAgICAgICAgICAgICBjYXNlIDI1IDogCisgICAgICAgICAgICAgIGNhc2UgMjYgOiAKKyAgICAg
ICAgICAgICAgY2FzZSAyNyA6IAorICAgICAgICAgICAgICBjYXNlIDI4IDogCisgICAgICAgICAg
ICAgIGNhc2UgMzAgOiAKKyAgICAgICAgICAgICAgY2FzZSAzMSA6IAorICAgICAgICAgICAgICAg
ICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSAzMiA6IAorICAgICAgICAgICAgICAgICAgZlsvKiBiYXNlICovNF0gPSAvKiBIZXggKi8xOwor
ICAgICAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgICBjb250
aW51ZSA7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYyA+PSA3MikgeworICAgICAgICAgIGV4aXQgPSAx
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGZbLyogc2lnbmVkY29udiAq
LzVdID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgZlsvKiB1cHBlcmNhc2UgKi83XSA9IC8qIHRy
dWUgKi8xOworICAgICAgICAgIGZbLyogY29udiAqLzEwXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUo
bG93ZXJjYXNlKGMpKTsKKyAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICBjb250
aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAg
ICAgICB2YXIgc3dpdGNoZXIgPSBjIC0gMzIgfCAwOworICAgICAgICBpZiAoc3dpdGNoZXIgPiAy
NSB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICBzd2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICAgICAgICBmWy8qIGFsdGVybmF0ZSAqLzNdID0gLyogdHJ1ZSAq
LzE7CisgICAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgY29u
dGludWUgOworICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgY2FzZSAxMSA6
IAorICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgIGZbLyoganVzdGlmeSAqLzBdID0g
Ii0iOworICAgICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgZlsv
KiBwcmVjICovOV0gPSAwOworICAgICAgICAgICAgICAgIHZhciBqID0gaSArIDEgfCAwOworICAg
ICAgICAgICAgICAgIHdoaWxlKChmdW5jdGlvbihqKXsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IGZtdC5jaGFy
Q29kZUF0KGopIC0gLyogIjAiICovNDggfCAwOworICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biArKHcgPj0gMCAmJiB3IDw9IDkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0oaikpKCkpIHsKKyAgICAgICAgICAgICAgICAgIGZbLyogcHJlYyAqLzldID0g
KENhbWxfaW50MzIuaW11bChmWy8qIHByZWMgKi85XSwgMTApICsgZm10LmNoYXJDb2RlQXQoaikg
fCAwKSAtIC8qICIwIiAqLzQ4IHwgMDsKKyAgICAgICAgICAgICAgICAgIGogPSBqICsgMSB8IDA7
CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBfaSA9IGo7CisgICAgICAgICAg
ICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAg
Y2FzZSAyIDogCisgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIGNhc2UgNSA6IAor
ICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAg
IGNhc2UgOCA6IAorICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICBjYXNlIDEwIDog
CisgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAg
ICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDE2IDogCisgICAgICAgICAgICAgICAgZlsvKiBmaWx0ZXIgKi8yXSA9ICIwIjsKKyAgICAg
ICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgICAgICAgY2FzZSAxNyA6IAorICAgICAgICAgICAgY2FzZSAxOCA6IAorICAgICAg
ICAgICAgY2FzZSAxOSA6IAorICAgICAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgY2Fz
ZSAyMSA6IAorICAgICAgICAgICAgY2FzZSAyMiA6IAorICAgICAgICAgICAgY2FzZSAyMyA6IAor
ICAgICAgICAgICAgY2FzZSAyNCA6IAorICAgICAgICAgICAgY2FzZSAyNSA6IAorICAgICAgICAg
ICAgICAgIGV4aXQgPSAzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBzd2l0Y2ggKGV4aXQpIHsKKyAg
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgZlsvKiBzaWdu
c3R5bGUgKi8xXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7CisgICAgICAgICAgICBfaSA9IGkg
KyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMyA6IAor
ICAgICAgICAgICAgZlsvKiB3aWR0aCAqLzZdID0gMDsKKyAgICAgICAgICAgIHZhciBqJDEgPSBp
OworICAgICAgICAgICAgd2hpbGUoKGZ1bmN0aW9uKGokMSl7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgIHZhciB3ID0gZm10LmNoYXJDb2Rl
QXQoaiQxKSAtIC8qICIwIiAqLzQ4IHwgMDsKKyAgICAgICAgICAgICAgICAgIHJldHVybiArKHcg
Pj0gMCAmJiB3IDw9IDkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KGok
MSkpKCkpIHsKKyAgICAgICAgICAgICAgZlsvKiB3aWR0aCAqLzZdID0gKENhbWxfaW50MzIuaW11
bChmWy8qIHdpZHRoICovNl0sIDEwKSArIGZtdC5jaGFyQ29kZUF0KGokMSkgfCAwKSAtIC8qICIw
IiAqLzQ4IHwgMDsKKyAgICAgICAgICAgICAgaiQxID0gaiQxICsgMSB8IDA7CisgICAgICAgICAg
ICB9OworICAgICAgICAgICAgX2kgPSBqJDE7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIGZbLyogc2lnbmVkY29udiAqLzVdID0gLyog
dHJ1ZSAqLzE7CisgICAgICAgICAgICBmWy8qIGJhc2UgKi80XSA9IC8qIERlYyAqLzI7CisgICAg
ICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgZlsvKiBzaWduZWRjb252ICovNV0gPSAvKiB0cnVl
ICovMTsKKyAgICAgICAgICAgIGZbLyogY29udiAqLzEwXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUo
Yyk7CisgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmluaXNo
X2Zvcm1hdHRpbmcocGFyYW0sIHJhd2J1ZmZlcikgeworICB2YXIganVzdGlmeSA9IHBhcmFtWy8q
IGp1c3RpZnkgKi8wXTsKKyAgdmFyIHNpZ25zdHlsZSA9IHBhcmFtWy8qIHNpZ25zdHlsZSAqLzFd
OworICB2YXIgZmlsdGVyID0gcGFyYW1bLyogZmlsdGVyICovMl07CisgIHZhciBhbHRlcm5hdGUg
PSBwYXJhbVsvKiBhbHRlcm5hdGUgKi8zXTsKKyAgdmFyIGJhc2UgPSBwYXJhbVsvKiBiYXNlICov
NF07CisgIHZhciBzaWduZWRjb252ID0gcGFyYW1bLyogc2lnbmVkY29udiAqLzVdOworICB2YXIg
d2lkdGggPSBwYXJhbVsvKiB3aWR0aCAqLzZdOworICB2YXIgdXBwZXJjYXNlID0gcGFyYW1bLyog
dXBwZXJjYXNlICovN107CisgIHZhciBzaWduID0gcGFyYW1bLyogc2lnbiAqLzhdOworICB2YXIg
bGVuID0gcmF3YnVmZmVyLmxlbmd0aDsKKyAgaWYgKHNpZ25lZGNvbnYgJiYgKHNpZ24gPCAwIHx8
IHNpZ25zdHlsZSAhPT0gIi0iKSkgeworICAgIGxlbiA9IGxlbiArIDEgfCAwOworICB9CisgIGlm
IChhbHRlcm5hdGUpIHsKKyAgICBpZiAoYmFzZSkgeworICAgICAgaWYgKGJhc2UgPT09IC8qIEhl
eCAqLzEpIHsKKyAgICAgICAgbGVuID0gbGVuICsgMiB8IDA7CisgICAgICB9CisgICAgICAKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICBsZW4gPSBsZW4gKyAxIHwgMDsKKyAgICB9CisgIH0KKyAg
dmFyIGJ1ZmZlciA9ICIiOworICBpZiAoanVzdGlmeSA9PT0gIisiICYmIGZpbHRlciA9PT0gIiAi
KSB7CisgICAgZm9yKHZhciBpID0gbGVuICxpX2ZpbmlzaCA9IHdpZHRoIC0gMSB8IDA7IGkgPD0g
aV9maW5pc2g7ICsraSl7CisgICAgICBidWZmZXIgPSBidWZmZXIgKyBmaWx0ZXI7CisgICAgfQor
ICB9CisgIGlmIChzaWduZWRjb252KSB7CisgICAgaWYgKHNpZ24gPCAwKSB7CisgICAgICBidWZm
ZXIgPSBidWZmZXIgKyAiLSI7CisgICAgfQorICAgIGVsc2UgaWYgKHNpZ25zdHlsZSAhPT0gIi0i
KSB7CisgICAgICBidWZmZXIgPSBidWZmZXIgKyBzaWduc3R5bGU7CisgICAgfQorICAgIAorICB9
CisgIGlmIChhbHRlcm5hdGUgJiYgYmFzZSA9PT0gLyogT2N0ICovMCkgeworICAgIGJ1ZmZlciA9
IGJ1ZmZlciArICIwIjsKKyAgfQorICBpZiAoYWx0ZXJuYXRlICYmIGJhc2UgPT09IC8qIEhleCAq
LzEpIHsKKyAgICBidWZmZXIgPSBidWZmZXIgKyAiMHgiOworICB9CisgIGlmIChqdXN0aWZ5ID09
PSAiKyIgJiYgZmlsdGVyID09PSAiMCIpIHsKKyAgICBmb3IodmFyIGkkMSA9IGxlbiAsaV9maW5p
c2gkMSA9IHdpZHRoIC0gMSB8IDA7IGkkMSA8PSBpX2ZpbmlzaCQxOyArK2kkMSl7CisgICAgICBi
dWZmZXIgPSBidWZmZXIgKyBmaWx0ZXI7CisgICAgfQorICB9CisgIGJ1ZmZlciA9IHVwcGVyY2Fz
ZSA/IGJ1ZmZlciArIHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpIDogYnVmZmVyICsgcmF3YnVmZmVy
OworICBpZiAoanVzdGlmeSA9PT0gIi0iKSB7CisgICAgZm9yKHZhciBpJDIgPSBsZW4gLGlfZmlu
aXNoJDIgPSB3aWR0aCAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gkMjsgKytpJDIpeworICAgICAg
YnVmZmVyID0gYnVmZmVyICsgIiAiOworICAgIH0KKyAgfQorICByZXR1cm4gYnVmZmVyOworfQor
CitmdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7CisgIGlmIChmbXQgPT09ICIlZCIp
IHsKKyAgICByZXR1cm4gIiIgKyBpOworICB9CisgIGVsc2UgeworICAgIHZhciBmID0gcGFyc2Vf
Zm9ybWF0KGZtdCk7CisgICAgdmFyIGYkMSA9IGY7CisgICAgdmFyIGkkMSA9IGk7CisgICAgdmFy
IGkkMiA9IGkkMSA8IDAgPyAoCisgICAgICAgIGYkMVsvKiBzaWduZWRjb252ICovNV0gPyAoZiQx
Wy8qIHNpZ24gKi84XSA9IC0xLCAtaSQxKSA6IChpJDEgPj4+IDApCisgICAgICApIDogaSQxOwor
ICAgIHZhciBzID0gaSQyLnRvU3RyaW5nKGludF9vZl9iYXNlKGYkMVsvKiBiYXNlICovNF0pKTsK
KyAgICBpZiAoZiQxWy8qIHByZWMgKi85XSA+PSAwKSB7CisgICAgICBmJDFbLyogZmlsdGVyICov
Ml0gPSAiICI7CisgICAgICB2YXIgbiA9IGYkMVsvKiBwcmVjICovOV0gLSBzLmxlbmd0aCB8IDA7
CisgICAgICBpZiAobiA+IDApIHsKKyAgICAgICAgcyA9IENhbWxfdXRpbHMucmVwZWF0KG4sICIw
IikgKyBzOworICAgICAgfQorICAgICAgCisgICAgfQorICAgIHJldHVybiBmaW5pc2hfZm9ybWF0
dGluZyhmJDEsIHMpOworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0KGZtdCwg
eCkgeworICB2YXIgZiA9IHBhcnNlX2Zvcm1hdChmbXQpOworICB2YXIgeCQxID0gZlsvKiBzaWdu
ZWRjb252ICovNV0gJiYgQ2FtbF9pbnQ2NC5sdCh4LCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgLyog
aGkgKi8wLAorICAgICAgICAvKiBsbyAqLzAKKyAgICAgIF0pID8gKGZbLyogc2lnbiAqLzhdID0g
LTEsIENhbWxfaW50NjQubmVnKHgpKSA6IHg7CisgIHZhciBzID0gIiI7CisgIHZhciBtYXRjaCA9
IGZbLyogYmFzZSAqLzRdOworICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgY2FzZSAwIDogCisgICAg
ICAgIHZhciB3YmFzZSA9IC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAgICAg
ICAgICAvKiBsbyAqLzgKKyAgICAgICAgXTsKKyAgICAgICAgdmFyIGN2dGJsID0gIjAxMjM0NTY3
IjsKKyAgICAgICAgaWYgKENhbWxfaW50NjQubHQoeCQxLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAg
ICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAg
ICAgIF0pKSB7CisgICAgICAgICAgdmFyIHkgPSBDYW1sX2ludDY0LmRpc2NhcmRfc2lnbih4JDEp
OworICAgICAgICAgIHZhciBtYXRjaCQxID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHksIHdiYXNlKTsK
KyAgICAgICAgICB2YXIgcXVvdGllbnQgPSBDYW1sX2ludDY0LmFkZCgvKiBpbnQ2NCAqL1sKKyAg
ICAgICAgICAgICAgICAvKiBoaSAqLzI2ODQzNTQ1NiwKKyAgICAgICAgICAgICAgICAvKiBsbyAq
LzAKKyAgICAgICAgICAgICAgXSwgbWF0Y2gkMVswXSk7CisgICAgICAgICAgdmFyIG1vZHVsdXMg
PSBtYXRjaCQxWzFdOworICAgICAgICAgIHMgPSBDYW1sX3N0cmluZy5qc19zdHJpbmdfb2ZfY2hh
cihjdnRibC5jaGFyQ29kZUF0KG1vZHVsdXNbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxl
KENhbWxfaW50NjQubmVxKHF1b3RpZW50LCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAg
IC8qIGhpICovMCwKKyAgICAgICAgICAgICAgICAgIC8qIGxvICovMAorICAgICAgICAgICAgICAg
IF0pKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMiA9IENhbWxfaW50NjQuZGl2X21vZChxdW90
aWVudCwgd2Jhc2UpOworICAgICAgICAgICAgcXVvdGllbnQgPSBtYXRjaCQyWzBdOworICAgICAg
ICAgICAgbW9kdWx1cyA9IG1hdGNoJDJbMV07CisgICAgICAgICAgICBzID0gQ2FtbF9zdHJpbmcu
anNfc3RyaW5nX29mX2NoYXIoY3Z0YmwuY2hhckNvZGVBdChtb2R1bHVzWzFdIHwgMCkpICsgczsK
KyAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBt
YXRjaCQzID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHgkMSwgd2Jhc2UpOworICAgICAgICAgIHZhciBx
dW90aWVudCQxID0gbWF0Y2gkM1swXTsKKyAgICAgICAgICB2YXIgbW9kdWx1cyQxID0gbWF0Y2gk
M1sxXTsKKyAgICAgICAgICBzID0gQ2FtbF9zdHJpbmcuanNfc3RyaW5nX29mX2NoYXIoY3Z0Ymwu
Y2hhckNvZGVBdChtb2R1bHVzJDFbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxf
aW50NjQubmVxKHF1b3RpZW50JDEsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyog
aGkgKi8wLAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgICAgXSkp
IHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1b3RpZW50
JDEsIHdiYXNlKTsKKyAgICAgICAgICAgIHF1b3RpZW50JDEgPSBtYXRjaCQ0WzBdOworICAgICAg
ICAgICAgbW9kdWx1cyQxID0gbWF0Y2gkNFsxXTsKKyAgICAgICAgICAgIHMgPSBDYW1sX3N0cmlu
Zy5qc19zdHJpbmdfb2ZfY2hhcihjdnRibC5jaGFyQ29kZUF0KG1vZHVsdXMkMVsxXSB8IDApKSAr
IHM7CisgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIDEg
OiAKKyAgICAgICAgcyA9IENhbWxfaW50NjQudG9faGV4KHgkMSkgKyBzOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgdmFyIHdiYXNlJDEgPSAvKiBpbnQ2NCAqL1sKKyAg
ICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgLyogbG8gKi8xMAorICAgICAgICBdOworICAg
ICAgICB2YXIgY3Z0YmwkMSA9ICIwMTIzNDU2Nzg5IjsKKyAgICAgICAgaWYgKENhbWxfaW50NjQu
bHQoeCQxLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAg
ICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgIF0pKSB7CisgICAgICAgICAgdmFyIHkk
MSA9IENhbWxfaW50NjQuZGlzY2FyZF9zaWduKHgkMSk7CisgICAgICAgICAgdmFyIG1hdGNoJDUg
PSBDYW1sX2ludDY0LmRpdl9tb2QoeSQxLCB3YmFzZSQxKTsKKyAgICAgICAgICB2YXIgbWF0Y2gk
NiA9IENhbWxfaW50NjQuZGl2X21vZChDYW1sX2ludDY0LmFkZCgvKiBpbnQ2NCAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAgICAgICAvKiBsbyAqLzgK
KyAgICAgICAgICAgICAgICAgIF0sIG1hdGNoJDVbMV0pLCB3YmFzZSQxKTsKKyAgICAgICAgICB2
YXIgcXVvdGllbnQkMiA9IENhbWxfaW50NjQuYWRkKENhbWxfaW50NjQuYWRkKC8qIGludDY0ICov
WworICAgICAgICAgICAgICAgICAgICAvKiBoaSAqLzIxNDc0ODM2NCwKKyAgICAgICAgICAgICAg
ICAgICAgLyogbG8gKi8zNDM1OTczODM2CisgICAgICAgICAgICAgICAgICBdLCBtYXRjaCQ1WzBd
KSwgbWF0Y2gkNlswXSk7CisgICAgICAgICAgdmFyIG1vZHVsdXMkMiA9IG1hdGNoJDZbMV07Cisg
ICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNv
ZGVBdChtb2R1bHVzJDJbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxfaW50NjQu
bmVxKHF1b3RpZW50JDIsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8w
LAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgICAgXSkpIHsKKyAg
ICAgICAgICAgIHZhciBtYXRjaCQ3ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1b3RpZW50JDIsIHdi
YXNlJDEpOworICAgICAgICAgICAgcXVvdGllbnQkMiA9IG1hdGNoJDdbMF07CisgICAgICAgICAg
ICBtb2R1bHVzJDIgPSBtYXRjaCQ3WzFdOworICAgICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpz
X3N0cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNvZGVBdChtb2R1bHVzJDJbMV0gfCAwKSkgKyBz
OworICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFy
IG1hdGNoJDggPSBDYW1sX2ludDY0LmRpdl9tb2QoeCQxLCB3YmFzZSQxKTsKKyAgICAgICAgICB2
YXIgcXVvdGllbnQkMyA9IG1hdGNoJDhbMF07CisgICAgICAgICAgdmFyIG1vZHVsdXMkMyA9IG1h
dGNoJDhbMV07CisgICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2
dGJsJDEuY2hhckNvZGVBdChtb2R1bHVzJDNbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxl
KENhbWxfaW50NjQubmVxKHF1b3RpZW50JDMsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAg
ICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAg
ICAgXSkpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1
b3RpZW50JDMsIHdiYXNlJDEpOworICAgICAgICAgICAgcXVvdGllbnQkMyA9IG1hdGNoJDlbMF07
CisgICAgICAgICAgICBtb2R1bHVzJDMgPSBtYXRjaCQ5WzFdOworICAgICAgICAgICAgcyA9IENh
bWxfc3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNvZGVBdChtb2R1bHVzJDNb
MV0gfCAwKSkgKyBzOworICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgCisgIH0KKyAgaWYgKGZbLyogcHJlYyAqLzldID49IDApIHsKKyAgICBmWy8qIGZpbHRlciAq
LzJdID0gIiAiOworICAgIHZhciBuID0gZlsvKiBwcmVjICovOV0gLSBzLmxlbmd0aCB8IDA7Cisg
ICAgaWYgKG4gPiAwKSB7CisgICAgICBzID0gQ2FtbF91dGlscy5yZXBlYXQobiwgIjAiKSArIHM7
CisgICAgfQorICAgIAorICB9CisgIHJldHVybiBmaW5pc2hfZm9ybWF0dGluZyhmLCBzKTsKK30K
KworZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQoZm10LCB4KSB7CisgIHZhciBmID0gcGFyc2Vf
Zm9ybWF0KGZtdCk7CisgIHZhciBwcmVjID0gZlsvKiBwcmVjICovOV0gPCAwID8gNiA6IGZbLyog
cHJlYyAqLzldOworICB2YXIgeCQxID0geCA8IDAgPyAoZlsvKiBzaWduICovOF0gPSAtMSwgLXgp
IDogeDsKKyAgdmFyIHMgPSAiIjsKKyAgaWYgKGlzTmFOKHgkMSkpIHsKKyAgICBzID0gIm5hbiI7
CisgICAgZlsvKiBmaWx0ZXIgKi8yXSA9ICIgIjsKKyAgfQorICBlbHNlIGlmIChpc0Zpbml0ZSh4
JDEpKSB7CisgICAgdmFyIG1hdGNoID0gZlsvKiBjb252ICovMTBdOworICAgIHN3aXRjaCAobWF0
Y2gpIHsKKyAgICAgIGNhc2UgImUiIDogCisgICAgICAgICAgcyA9IHgkMS50b0V4cG9uZW50aWFs
KHByZWMpOworICAgICAgICAgIHZhciBpID0gcy5sZW5ndGg7CisgICAgICAgICAgaWYgKHNbaSAt
IDMgfCAwXSA9PT0gImUiKSB7CisgICAgICAgICAgICBzID0gcy5zbGljZSgwLCBpIC0gMSB8IDAp
ICsgKCIwIiArIHMuc2xpY2UoaSAtIDEgfCAwKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAiZiIgOiAKKyAgICAgICAgICBzID0geCQxLnRvRml4ZWQocHJlYyk7
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICJnIiA6IAorICAgICAgICAgIHZhciBwcmVj
JDEgPSBwcmVjICE9PSAwID8gcHJlYyA6IDE7CisgICAgICAgICAgcyA9IHgkMS50b0V4cG9uZW50
aWFsKHByZWMkMSAtIDEgfCAwKTsKKyAgICAgICAgICB2YXIgaiA9IHMuaW5kZXhPZigiZSIpOwor
ICAgICAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSB8IDApOworICAgICAgICAgIGlmIChl
eHAgPCAtNCB8fCB4JDEgPj0gMWUyMSB8fCB4JDEudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjJDEp
IHsKKyAgICAgICAgICAgIHZhciBpJDEgPSBqIC0gMSB8IDA7CisgICAgICAgICAgICB3aGlsZShz
W2kkMV0gPT09ICIwIikgeworICAgICAgICAgICAgICBpJDEgPSBpJDEgLSAxIHwgMDsKKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBpZiAoc1tpJDFdID09PSAiLiIpIHsKKyAgICAgICAgICAg
ICAgaSQxID0gaSQxIC0gMSB8IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzID0gcy5z
bGljZSgwLCBpJDEgKyAxIHwgMCkgKyBzLnNsaWNlKGopOworICAgICAgICAgICAgdmFyIGkkMiA9
IHMubGVuZ3RoOworICAgICAgICAgICAgaWYgKHNbaSQyIC0gMyB8IDBdID09PSAiZSIpIHsKKyAg
ICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSQyIC0gMSB8IDApICsgKCIwIiArIHMuc2xpY2Uo
aSQyIC0gMSB8IDApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBwID0gcHJlYyQxOworICAgICAgICAg
ICAgaWYgKGV4cCA8IDApIHsKKyAgICAgICAgICAgICAgcCA9IHAgLSAoZXhwICsgMSB8IDApIHwg
MDsKKyAgICAgICAgICAgICAgcyA9IHgkMS50b0ZpeGVkKHApOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHdoaWxlKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcyA9IHgkMS50b0ZpeGVkKHApOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKyhzLmxlbmd0aCA+IChwcmVjJDEgKyAxIHwgMCkpOworICAgICAgICAgICAgICAgICAg
fSgpKSB7CisgICAgICAgICAgICAgICAgcCA9IHAgLSAxIHwgMDsKKyAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwICE9PSAwKSB7CisgICAgICAgICAgICAg
IHZhciBrID0gcy5sZW5ndGggLSAxIHwgMDsKKyAgICAgICAgICAgICAgd2hpbGUoc1trXSA9PT0g
IjAiKSB7CisgICAgICAgICAgICAgICAgayA9IGsgLSAxIHwgMDsKKyAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgaWYgKHNba10gPT09ICIuIikgeworICAgICAgICAgICAgICAgIGsgPSBr
IC0gMSB8IDA7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwg
ayArIDEgfCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAg
ICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIAorICAgIH0KKyAgfQorICBl
bHNlIHsKKyAgICBzID0gImluZiI7CisgICAgZlsvKiBmaWx0ZXIgKi8yXSA9ICIgIjsKKyAgfQor
ICByZXR1cm4gZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7Cit9CisKK3ZhciBmbG9hdF9vZl9zdHJp
bmcgPSAoCisgIGZ1bmN0aW9uIChzLCBjYW1sX2ZhaWx3aXRoKSB7CisgICAgdmFyIHJlcyA9ICtz
OworICAgIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKQorICAgICAgICByZXR1
cm4gcmVzOworICAgIHMgPSBzLnJlcGxhY2UoL18vZywgIiIpOworICAgIHJlcyA9ICtzOworICAg
IGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50
ZXN0KHMpKSB7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIDsKKyAgICBpZiAoL14g
KjB4WzAtOWEtZl9dK3BbKy1dP1swLTlfXSsvaS50ZXN0KHMpKSB7CisgICAgICAgIHZhciBwaWR4
ID0gcy5pbmRleE9mKCdwJyk7CisgICAgICAgIHBpZHggPSAocGlkeCA9PSAtMSkgPyBzLmluZGV4
T2YoJ1AnKSA6IHBpZHg7CisgICAgICAgIHZhciBleHAgPSArcy5zdWJzdHJpbmcocGlkeCArIDEp
OworICAgICAgICByZXMgPSArcy5zdWJzdHJpbmcoMCwgcGlkeCk7CisgICAgICAgIHJldHVybiBy
ZXMgKiBNYXRoLnBvdygyLCBleHApOworICAgIH0KKyAgICBpZiAoL15cKz9pbmYoaW5pdHkpPyQv
aS50ZXN0KHMpKQorICAgICAgICByZXR1cm4gSW5maW5pdHk7CisgICAgaWYgKC9eLWluZihpbml0
eSk/JC9pLnRlc3QocykpCisgICAgICAgIHJldHVybiAtSW5maW5pdHk7CisgICAgY2FtbF9mYWls
d2l0aCgiZmxvYXRfb2Zfc3RyaW5nIik7Cit9CisKKyk7CisKK2Z1bmN0aW9uIGNhbWxfZmxvYXRf
b2Zfc3RyaW5nKHMpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8yKGZsb2F0X29mX3N0cmluZywgcywgY2Ft
bF9mYWlsd2l0aCk7Cit9CisKK3ZhciBjYW1sX25hdGl2ZWludF9mb3JtYXQgPSBjYW1sX2Zvcm1h
dF9pbnQ7CisKK3ZhciBjYW1sX2ludDMyX2Zvcm1hdCA9IGNhbWxfZm9ybWF0X2ludDsKKwordmFy
IGNhbWxfaW50MzJfb2Zfc3RyaW5nID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworCit2YXIgY2FtbF9u
YXRpdmVpbnRfb2Zfc3RyaW5nID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworCitleHBvcnRzLmNhbWxf
Zm9ybWF0X2Zsb2F0ICAgICAgICA9IGNhbWxfZm9ybWF0X2Zsb2F0OworZXhwb3J0cy5jYW1sX2Zv
cm1hdF9pbnQgICAgICAgICAgPSBjYW1sX2Zvcm1hdF9pbnQ7CitleHBvcnRzLmNhbWxfbmF0aXZl
aW50X2Zvcm1hdCAgICA9IGNhbWxfbmF0aXZlaW50X2Zvcm1hdDsKK2V4cG9ydHMuY2FtbF9pbnQz
Ml9mb3JtYXQgICAgICAgID0gY2FtbF9pbnQzMl9mb3JtYXQ7CitleHBvcnRzLmNhbWxfZmxvYXRf
b2Zfc3RyaW5nICAgICA9IGNhbWxfZmxvYXRfb2Zfc3RyaW5nOworZXhwb3J0cy5jYW1sX2ludDY0
X2Zvcm1hdCAgICAgICAgPSBjYW1sX2ludDY0X2Zvcm1hdDsKK2V4cG9ydHMuY2FtbF9pbnRfb2Zf
c3RyaW5nICAgICAgID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworZXhwb3J0cy5jYW1sX2ludDMyX29m
X3N0cmluZyAgICAgPSBjYW1sX2ludDMyX29mX3N0cmluZzsKK2V4cG9ydHMuY2FtbF9pbnQ2NF9v
Zl9zdHJpbmcgICAgID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmc7CitleHBvcnRzLmNhbWxfbmF0aXZl
aW50X29mX3N0cmluZyA9IGNhbWxfbmF0aXZlaW50X29mX3N0cmluZzsKKy8qIGZsb2F0X29mX3N0
cmluZyBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfZm9ybWF0Lmpz
IC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlb
J2NhbWxfaW50MzInXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8v
Ly8vLy8vIHN0YXJ0IG9mIGNhbWxfaW50MzIuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucyIpOworCitmdW5jdGlvbiBkaXYoeCwgeSkgeworICBpZiAoeSA9PT0gMCkgeworICAg
IHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmRpdmlzaW9uX2J5X3plcm87CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIHggLyB5IHwgMDsKKyAgfQorfQorCitmdW5jdGlvbiBtb2RfKHgs
IHkpIHsKKyAgaWYgKHkgPT09IDApIHsKKyAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5kaXZpc2lvbl9ieV96ZXJvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiB4ICUgeTsKKyAg
fQorfQorCitmdW5jdGlvbiBjYW1sX2Jzd2FwMTYoeCkgeworICByZXR1cm4gKCh4ICYgMjU1KSA8
PCA4KSB8ICgoeCAmIDY1MjgwKSA+Pj4gOCk7Cit9CisKK2Z1bmN0aW9uIGNhbWxfaW50MzJfYnN3
YXAoeCkgeworICByZXR1cm4gKCh4ICYgMjU1KSA8PCAyNCkgfCAoKHggJiA2NTI4MCkgPDwgOCkg
fCAoKHggJiAxNjcxMTY4MCkgPj4+IDgpIHwgKCh4ICYgNDI3ODE5MDA4MCkgPj4+IDI0KTsKK30K
KwordmFyIGltdWwgPSAoIE1hdGguaW11bCB8fCBmdW5jdGlvbiAoeCx5KSB7CisgIHkgfD0gMDsg
cmV0dXJuICgoKCh4ID4+IDE2KSAqIHkpIDw8IDE2KSArICh4ICYgMHhmZmZmKSAqIHkpfDA7IAor
fQorKTsKKwordmFyIGNhbWxfbmF0aXZlaW50X2Jzd2FwID0gY2FtbF9pbnQzMl9ic3dhcDsKKwor
ZXhwb3J0cy5kaXYgICAgICAgICAgICAgICAgICA9IGRpdjsKK2V4cG9ydHMubW9kXyAgICAgICAg
ICAgICAgICAgPSBtb2RfOworZXhwb3J0cy5jYW1sX2Jzd2FwMTYgICAgICAgICA9IGNhbWxfYnN3
YXAxNjsKK2V4cG9ydHMuY2FtbF9pbnQzMl9ic3dhcCAgICAgPSBjYW1sX2ludDMyX2Jzd2FwOwor
ZXhwb3J0cy5jYW1sX25hdGl2ZWludF9ic3dhcCA9IGNhbWxfbmF0aXZlaW50X2Jzd2FwOworZXhw
b3J0cy5pbXVsICAgICAgICAgICAgICAgICA9IGltdWw7CisvKiBpbXVsIE5vdCBhIHB1cmUgbW9k
dWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9pbnQzMi5qcyAvLy8vLy8vLworwqAgwqAgcmV0
dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX2ludDY0J10gPSBmdW5j
dGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1s
X2ludDY0LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX29iaiAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9vYmoiKTsKK3ZhciBDYW1sX2ludDMyICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF9pbnQzMiIpOwordmFyIENhbWxfdXRpbHMgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9jYW1sX3V0aWxzIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK3ZhciBtaW5faW50
ID0gLyogcmVjb3JkICovWworICAvKiBoaSAqLy0yMTQ3NDgzNjQ4LAorICAvKiBsbyAqLzAKK107
CisKK3ZhciBtYXhfaW50ID0gLyogcmVjb3JkICovWworICAvKiBoaSAqLzEzNDIxNzcyNywKKyAg
LyogbG8gKi8xCitdOworCit2YXIgb25lID0gLyogcmVjb3JkICovWworICAvKiBoaSAqLzAsCisg
IC8qIGxvICovMQorXTsKKwordmFyIHplcm8gPSAvKiByZWNvcmQgKi9bCisgIC8qIGhpICovMCwK
KyAgLyogbG8gKi8wCitdOworCit2YXIgbmVnX29uZSA9IC8qIHJlY29yZCAqL1sKKyAgLyogaGkg
Ki8tMSwKKyAgLyogbG8gKi80Mjk0OTY3Mjk1CitdOworCitmdW5jdGlvbiBuZWdfc2lnbmVkKHgp
IHsKKyAgcmV0dXJuICsoKHggJiAyMTQ3NDgzNjQ4KSAhPT0gMCk7Cit9CisKK2Z1bmN0aW9uIGFk
ZChwYXJhbSwgcGFyYW0kMSkgeworICB2YXIgb3RoZXJfbG93XyA9IHBhcmFtJDFbLyogbG8gKi8x
XTsKKyAgdmFyIHRoaXNfbG93XyA9IHBhcmFtWy8qIGxvICovMV07CisgIHZhciBsbyA9IHRoaXNf
bG93XyArIG90aGVyX2xvd18gJiA0Mjk0OTY3Mjk1OworICB2YXIgb3ZlcmZsb3cgPSBuZWdfc2ln
bmVkKHRoaXNfbG93XykgJiYgKG5lZ19zaWduZWQob3RoZXJfbG93XykgfHwgIW5lZ19zaWduZWQo
bG8pKSB8fCBuZWdfc2lnbmVkKG90aGVyX2xvd18pICYmICFuZWdfc2lnbmVkKGxvKSA/IDEgOiAw
OworICB2YXIgaGkgPSBwYXJhbVsvKiBoaSAqLzBdICsgcGFyYW0kMVsvKiBoaSAqLzBdICsgb3Zl
cmZsb3cgJiA0Mjk0OTY3Mjk1OworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8q
IGhpICovaGksCisgICAgICAgICAgLyogbG8gKi8obG8gPj4+IDApCisgICAgICAgIF07Cit9CisK
K2Z1bmN0aW9uIG5vdChwYXJhbSkgeworICB2YXIgaGkgPSBwYXJhbVsvKiBoaSAqLzBdIF4gLTE7
CisgIHZhciBsbyA9IHBhcmFtWy8qIGxvICovMV0gXiAtMTsKKyAgcmV0dXJuIC8qIHJlY29yZCAq
L1sKKyAgICAgICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgIC8qIGxvICovKGxvID4+PiAwKQor
ICAgICAgICBdOworfQorCitmdW5jdGlvbiBlcSh4LCB5KSB7CisgIGlmICh4Wy8qIGhpICovMF0g
PT09IHlbLyogaGkgKi8wXSkgeworICAgIHJldHVybiArKHhbLyogbG8gKi8xXSA9PT0geVsvKiBs
byAqLzFdKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9
CisKK2Z1bmN0aW9uIG5lZyh4KSB7CisgIGlmIChlcSh4LCBtaW5faW50KSkgeworICAgIHJldHVy
biBtaW5faW50OworICB9CisgIGVsc2UgeworICAgIHJldHVybiBhZGQobm90KHgpLCBvbmUpOwor
ICB9Cit9CisKK2Z1bmN0aW9uIHN1Yih4LCB5KSB7CisgIHJldHVybiBhZGQoeCwgbmVnKHkpKTsK
K30KKworZnVuY3Rpb24gbHNsXyh4LCBudW1CaXRzKSB7CisgIHZhciBsbyA9IHhbLyogbG8gKi8x
XTsKKyAgaWYgKG51bUJpdHMpIHsKKyAgICBpZiAobnVtQml0cyA+PSAzMikgeworICAgICAgcmV0
dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8obG8gPDwgKG51bUJpdHMg
LSAzMiB8IDApKSwKKyAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICBdOworICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBoaSA9IChsbyA+Pj4gKDMyIC0gbnVtQml0cyB8IDAp
KSB8ICh4Wy8qIGhpICovMF0gPDwgbnVtQml0cyk7CisgICAgICByZXR1cm4gLyogcmVjb3JkICov
WworICAgICAgICAgICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgICAgICAvKiBsbyAqLygobG8g
PDwgbnVtQml0cykgPj4+IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4geDsKKyAgfQorfQorCitmdW5jdGlvbiBsc3JfKHgsIG51bUJpdHMpIHsKKyAg
dmFyIGhpID0geFsvKiBoaSAqLzBdOworICBpZiAobnVtQml0cykgeworICAgIHZhciBvZmZzZXQg
PSBudW1CaXRzIC0gMzIgfCAwOworICAgIGlmIChvZmZzZXQpIHsKKyAgICAgIGlmIChvZmZzZXQg
PiAwKSB7CisgICAgICAgIHZhciBsbyA9IChoaSA+Pj4gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJu
IC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAg
ICAgLyogbG8gKi8obG8gPj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgdmFyIGhpJDEgPSAoaGkgPj4+IG51bUJpdHMpOworICAgICAgICB2YXIg
bG8kMSA9IChoaSA8PCAoLW9mZnNldCB8IDApKSB8ICh4Wy8qIGxvICovMV0gPj4+IG51bUJpdHMp
OworICAgICAgICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgIC8qIGhpICov
aGkkMSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLyhsbyQxID4+PiAwKQorICAgICAgICAgICAg
ICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiByZWNvcmQg
Ki9bCisgICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgLyogbG8gKi8oaGkg
Pj4+IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
eDsKKyAgfQorfQorCitmdW5jdGlvbiBhc3JfKHgsIG51bUJpdHMpIHsKKyAgdmFyIGhpID0geFsv
KiBoaSAqLzBdOworICBpZiAobnVtQml0cykgeworICAgIGlmIChudW1CaXRzIDwgMzIpIHsKKyAg
ICAgIHZhciBoaSQxID0gKGhpID4+IG51bUJpdHMpOworICAgICAgdmFyIGxvID0gKGhpIDw8ICgz
MiAtIG51bUJpdHMgfCAwKSkgfCAoeFsvKiBsbyAqLzFdID4+PiBudW1CaXRzKTsKKyAgICAgIHJl
dHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICovaGkkMSwKKyAgICAgICAg
ICAgICAgLyogbG8gKi8obG8gPj4+IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHZhciBsbyQxID0gKGhpID4+IChudW1CaXRzIC0gMzIgfCAwKSk7CisgICAgICBy
ZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiBoaSAqL2hpID49IDAgPyAwIDog
LTEsCisgICAgICAgICAgICAgIC8qIGxvICovKGxvJDEgPj4+IDApCisgICAgICAgICAgICBdOwor
ICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4geDsKKyAgfQorfQorCitmdW5jdGlvbiBp
c196ZXJvKHBhcmFtKSB7CisgIGlmIChwYXJhbVsvKiBoaSAqLzBdICE9PSAwIHx8IHBhcmFtWy8q
IGxvICovMV0gIT09IDApIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgfQorfQorCitmdW5jdGlvbiBtdWwoX3RoaXMs
IF9vdGhlcikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG90aGVyID0gX290aGVyOworICAg
IHZhciAkJHRoaXMgPSBfdGhpczsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgdmFyIGxvOworICAg
IHZhciB0aGlzX2hpID0gJCR0aGlzWy8qIGhpICovMF07CisgICAgdmFyIGV4aXQkMSA9IDA7Cisg
ICAgdmFyIGV4aXQkMiA9IDA7CisgICAgdmFyIGV4aXQkMyA9IDA7CisgICAgaWYgKHRoaXNfaGkg
IT09IDApIHsKKyAgICAgIGV4aXQkMyA9IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKCQkdGhpc1sv
KiBsbyAqLzFdICE9PSAwKSB7CisgICAgICBleGl0JDMgPSA0OworICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHJldHVybiB6ZXJvOworICAgIH0KKyAgICBpZiAoZXhpdCQzID09PSA0KSB7CisgICAg
ICBpZiAob3RoZXJbLyogaGkgKi8wXSAhPT0gMCkgeworICAgICAgICBleGl0JDIgPSAzOworICAg
ICAgfQorICAgICAgZWxzZSBpZiAob3RoZXJbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICBl
eGl0JDIgPSAzOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiB6ZXJvOwor
ICAgICAgfQorICAgIH0KKyAgICBpZiAoZXhpdCQyID09PSAzKSB7CisgICAgICBpZiAodGhpc19o
aSAhPT0gLTIxNDc0ODM2NDgpIHsKKyAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgIH0KKyAgICAg
IGVsc2UgaWYgKCQkdGhpc1svKiBsbyAqLzFdICE9PSAwKSB7CisgICAgICAgIGV4aXQkMSA9IDI7
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgbG8gPSBvdGhlclsvKiBsbyAqLzFdOwor
ICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKGV4aXQkMSA9PT0gMikg
eworICAgICAgdmFyIG90aGVyX2hpID0gb3RoZXJbLyogaGkgKi8wXTsKKyAgICAgIHZhciBsbyQx
ID0gJCR0aGlzWy8qIGxvICovMV07CisgICAgICB2YXIgZXhpdCQ0ID0gMDsKKyAgICAgIGlmIChv
dGhlcl9oaSAhPT0gLTIxNDc0ODM2NDgpIHsKKyAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAgIH0K
KyAgICAgIGVsc2UgaWYgKG90aGVyWy8qIGxvICovMV0gIT09IDApIHsKKyAgICAgICAgZXhpdCQ0
ID0gMzsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBsbyA9IGxvJDE7CisgICAgICAg
IGV4aXQgPSAxOworICAgICAgfQorICAgICAgaWYgKGV4aXQkNCA9PT0gMykgeworICAgICAgICB2
YXIgb3RoZXJfbG8gPSBvdGhlclsvKiBsbyAqLzFdOworICAgICAgICBpZiAodGhpc19oaSA8IDAp
IHsKKyAgICAgICAgICBpZiAob3RoZXJfaGkgPCAwKSB7CisgICAgICAgICAgICBfb3RoZXIgPSBu
ZWcob3RoZXIpOworICAgICAgICAgICAgX3RoaXMgPSBuZWcoJCR0aGlzKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHJldHVybiBuZWcobXVsKG5lZygkJHRoaXMpLCBvdGhlcikpOworICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChvdGhlcl9oaSA8IDApIHsKKyAgICAg
ICAgICByZXR1cm4gbmVnKG11bCgkJHRoaXMsIG5lZyhvdGhlcikpKTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgYTQ4ID0gKHRoaXNfaGkgPj4+IDE2KTsKKyAgICAg
ICAgICB2YXIgYTMyID0gdGhpc19oaSAmIDY1NTM1OworICAgICAgICAgIHZhciBhMTYgPSAobG8k
MSA+Pj4gMTYpOworICAgICAgICAgIHZhciBhMDAgPSBsbyQxICYgNjU1MzU7CisgICAgICAgICAg
dmFyIGI0OCA9IChvdGhlcl9oaSA+Pj4gMTYpOworICAgICAgICAgIHZhciBiMzIgPSBvdGhlcl9o
aSAmIDY1NTM1OworICAgICAgICAgIHZhciBiMTYgPSAob3RoZXJfbG8gPj4+IDE2KTsKKyAgICAg
ICAgICB2YXIgYjAwID0gb3RoZXJfbG8gJiA2NTUzNTsKKyAgICAgICAgICB2YXIgYzQ4ID0gMDsK
KyAgICAgICAgICB2YXIgYzMyID0gMDsKKyAgICAgICAgICB2YXIgYzE2ID0gMDsKKyAgICAgICAg
ICB2YXIgYzAwID0gYTAwICogYjAwOworICAgICAgICAgIGMxNiA9IChjMDAgPj4+IDE2KSArIGEx
NiAqIGIwMDsKKyAgICAgICAgICBjMzIgPSAoYzE2ID4+PiAxNik7CisgICAgICAgICAgYzE2ID0g
KGMxNiAmIDY1NTM1KSArIGEwMCAqIGIxNjsKKyAgICAgICAgICBjMzIgPSBjMzIgKyAoYzE2ID4+
PiAxNikgKyBhMzIgKiBiMDA7CisgICAgICAgICAgYzQ4ID0gKGMzMiA+Pj4gMTYpOworICAgICAg
ICAgIGMzMiA9IChjMzIgJiA2NTUzNSkgKyBhMTYgKiBiMTY7CisgICAgICAgICAgYzQ4ICs9IChj
MzIgPj4+IDE2KTsKKyAgICAgICAgICBjMzIgPSAoYzMyICYgNjU1MzUpICsgYTAwICogYjMyOwor
ICAgICAgICAgIGM0OCArPSAoYzMyID4+PiAxNik7CisgICAgICAgICAgYzMyID0gYzMyICYgNjU1
MzU7CisgICAgICAgICAgYzQ4ID0gYzQ4ICsgKGE0OCAqIGIwMCArIGEzMiAqIGIxNiArIGExNiAq
IGIzMiArIGEwMCAqIGI0OCkgJiA2NTUzNTsKKyAgICAgICAgICB2YXIgaGkgPSBjMzIgfCAoYzQ4
IDw8IDE2KTsKKyAgICAgICAgICB2YXIgbG8kMiA9IGMwMCAmIDY1NTM1IHwgKChjMTYgJiA2NTUz
NSkgPDwgMTYpOworICAgICAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAg
ICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8obG8kMiA+Pj4gMCkK
KyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9CisgICAgICAKKyAgICB9Cisg
ICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIGlmICgobG8gJiAxKSA9PT0gMCkgeworICAgICAg
ICByZXR1cm4gemVybzsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gbWlu
X2ludDsKKyAgICAgIH0KKyAgICB9CisgICAgCisgIH07Cit9CisKK2Z1bmN0aW9uIHN3YXAocGFy
YW0pIHsKKyAgdmFyIGhpID0gQ2FtbF9pbnQzMi5jYW1sX2ludDMyX2Jzd2FwKHBhcmFtWy8qIGxv
ICovMV0pOworICB2YXIgbG8gPSBDYW1sX2ludDMyLmNhbWxfaW50MzJfYnN3YXAocGFyYW1bLyog
aGkgKi8wXSk7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogaGkgKi9oaSwK
KyAgICAgICAgICAvKiBsbyAqLyhsbyA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24g
eG9yKHBhcmFtLCBwYXJhbSQxKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAg
LyogaGkgKi9wYXJhbVsvKiBoaSAqLzBdIF4gcGFyYW0kMVsvKiBoaSAqLzBdLAorICAgICAgICAg
IC8qIGxvICovKChwYXJhbVsvKiBsbyAqLzFdIF4gcGFyYW0kMVsvKiBsbyAqLzFdKSA+Pj4gMCkK
KyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gb3JfKHBhcmFtLCBwYXJhbSQxKSB7CisgIHJldHVy
biAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogaGkgKi9wYXJhbVsvKiBoaSAqLzBdIHwgcGFy
YW0kMVsvKiBoaSAqLzBdLAorICAgICAgICAgIC8qIGxvICovKChwYXJhbVsvKiBsbyAqLzFdIHwg
cGFyYW0kMVsvKiBsbyAqLzFdKSA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gYW5k
XyhwYXJhbSwgcGFyYW0kMSkgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8q
IGhpICovcGFyYW1bLyogaGkgKi8wXSAmIHBhcmFtJDFbLyogaGkgKi8wXSwKKyAgICAgICAgICAv
KiBsbyAqLygocGFyYW1bLyogbG8gKi8xXSAmIHBhcmFtJDFbLyogbG8gKi8xXSkgPj4+IDApCisg
ICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGdlKHBhcmFtLCBwYXJhbSQxKSB7CisgIHZhciBvdGhl
cl9oaSA9IHBhcmFtJDFbLyogaGkgKi8wXTsKKyAgdmFyIGhpID0gcGFyYW1bLyogaGkgKi8wXTsK
KyAgaWYgKGhpID4gb3RoZXJfaGkpIHsKKyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgIH0KKyAg
ZWxzZSBpZiAoaGkgPCBvdGhlcl9oaSkgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuICsocGFyYW1bLyogbG8gKi8xXSA+PSBwYXJhbSQxWy8qIGxv
ICovMV0pOworICB9Cit9CisKK2Z1bmN0aW9uIG5lcSh4LCB5KSB7CisgIHJldHVybiAxIC0gZXEo
eCwgeSk7Cit9CisKK2Z1bmN0aW9uIGx0KHgsIHkpIHsKKyAgcmV0dXJuIDEgLSBnZSh4LCB5KTsK
K30KKworZnVuY3Rpb24gZ3QoeCwgeSkgeworICBpZiAoeFsvKiBoaSAqLzBdID4geVsvKiBoaSAq
LzBdKSB7CisgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICB9CisgIGVsc2UgaWYgKHhbLyogaGkg
Ki8wXSA8IHlbLyogaGkgKi8wXSkgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuICsoeFsvKiBsbyAqLzFdID4geVsvKiBsbyAqLzFdKTsKKyAgfQor
fQorCitmdW5jdGlvbiBsZSh4LCB5KSB7CisgIHJldHVybiAxIC0gZ3QoeCwgeSk7Cit9CisKK2Z1
bmN0aW9uIHRvX2Zsb2F0KHBhcmFtKSB7CisgIHJldHVybiBwYXJhbVsvKiBoaSAqLzBdICogNDI5
NDk2NzI5NiArIHBhcmFtWy8qIGxvICovMV07Cit9CisKK3ZhciB0d29fcHRyXzMyX2RibCA9IE1h
dGgucG93KDIsIDMyKTsKKwordmFyIHR3b19wdHJfNjNfZGJsID0gTWF0aC5wb3coMiwgNjMpOwor
Cit2YXIgbmVnX3R3b19wdHJfNjMgPSAtTWF0aC5wb3coMiwgNjMpOworCitmdW5jdGlvbiBvZl9m
bG9hdCh4KSB7CisgIGlmIChpc05hTih4KSB8fCAhaXNGaW5pdGUoeCkpIHsKKyAgICByZXR1cm4g
emVybzsKKyAgfQorICBlbHNlIGlmICh4IDw9IG5lZ190d29fcHRyXzYzKSB7CisgICAgcmV0dXJu
IG1pbl9pbnQ7CisgIH0KKyAgZWxzZSBpZiAoeCArIDEgPj0gdHdvX3B0cl82M19kYmwpIHsKKyAg
ICByZXR1cm4gbWF4X2ludDsKKyAgfQorICBlbHNlIGlmICh4IDwgMCkgeworICAgIHJldHVybiBu
ZWcob2ZfZmxvYXQoLXgpKTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgaGkgPSB4IC8gdHdvX3B0
cl8zMl9kYmwgfCAwOworICAgIHZhciBsbyA9IHggJSB0d29fcHRyXzMyX2RibCB8IDA7CisgICAg
cmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIGhpICovaGksCisgICAgICAgICAg
ICAvKiBsbyAqLyhsbyA+Pj4gMCkKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGRp
dihfc2VsZiwgX290aGVyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgb3RoZXIgPSBfb3Ro
ZXI7CisgICAgdmFyIHNlbGYgPSBfc2VsZjsKKyAgICB2YXIgc2VsZl9oaSA9IHNlbGZbLyogaGkg
Ki8wXTsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgaWYgKG90
aGVyWy8qIGhpICovMF0gIT09IDApIHsKKyAgICAgIGV4aXQkMSA9IDI7CisgICAgfQorICAgIGVs
c2UgaWYgKG90aGVyWy8qIGxvICovMV0gIT09IDApIHsKKyAgICAgIGV4aXQkMSA9IDI7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZGl2aXNp
b25fYnlfemVybzsKKyAgICB9CisgICAgaWYgKGV4aXQkMSA9PT0gMikgeworICAgICAgaWYgKHNl
bGZfaGkgIT09IC0yMTQ3NDgzNjQ4KSB7CisgICAgICAgIGlmIChzZWxmX2hpICE9PSAwKSB7Cisg
ICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc2VsZlsvKiBs
byAqLzFdICE9PSAwKSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgcmV0dXJuIHplcm87CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAg
IGVsc2UgaWYgKHNlbGZbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICBleGl0ID0gMTsKKyAg
ICAgIH0KKyAgICAgIGVsc2UgaWYgKGVxKG90aGVyLCBvbmUpIHx8IGVxKG90aGVyLCBuZWdfb25l
KSkgeworICAgICAgICByZXR1cm4gc2VsZjsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGVxKG90
aGVyLCBtaW5faW50KSkgeworICAgICAgICByZXR1cm4gb25lOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHZhciBvdGhlcl9oaSA9IG90aGVyWy8qIGhpICovMF07CisgICAgICAgIHZh
ciBoYWxmX3RoaXMgPSBhc3JfKHNlbGYsIDEpOworICAgICAgICB2YXIgYXBwcm94ID0gbHNsXyhk
aXYoaGFsZl90aGlzLCBvdGhlciksIDEpOworICAgICAgICB2YXIgZXhpdCQyID0gMDsKKyAgICAg
ICAgaWYgKGFwcHJveFsvKiBoaSAqLzBdICE9PSAwKSB7CisgICAgICAgICAgZXhpdCQyID0gMzsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChhcHByb3hbLyogbG8gKi8xXSAhPT0gMCkgewor
ICAgICAgICAgIGV4aXQkMiA9IDM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAob3RoZXJf
aGkgPCAwKSB7CisgICAgICAgICAgcmV0dXJuIG9uZTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICByZXR1cm4gbmVnKG9uZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4
aXQkMiA9PT0gMykgeworICAgICAgICAgIHZhciB5ID0gbXVsKG90aGVyLCBhcHByb3gpOworICAg
ICAgICAgIHZhciByZW0gPSBhZGQoc2VsZiwgbmVnKHkpKTsKKyAgICAgICAgICByZXR1cm4gYWRk
KGFwcHJveCwgZGl2KHJlbSwgb3RoZXIpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgIH0K
KyAgICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIHZhciBvdGhlcl9oaSQxID0gb3Ro
ZXJbLyogaGkgKi8wXTsKKyAgICAgIHZhciBleGl0JDMgPSAwOworICAgICAgaWYgKG90aGVyX2hp
JDEgIT09IC0yMTQ3NDgzNjQ4KSB7CisgICAgICAgIGV4aXQkMyA9IDI7CisgICAgICB9CisgICAg
ICBlbHNlIGlmIChvdGhlclsvKiBsbyAqLzFdICE9PSAwKSB7CisgICAgICAgIGV4aXQkMyA9IDI7
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHplcm87CisgICAgICB9Cisg
ICAgICBpZiAoZXhpdCQzID09PSAyKSB7CisgICAgICAgIGlmIChzZWxmX2hpIDwgMCkgeworICAg
ICAgICAgIGlmIChvdGhlcl9oaSQxIDwgMCkgeworICAgICAgICAgICAgX290aGVyID0gbmVnKG90
aGVyKTsKKyAgICAgICAgICAgIF9zZWxmID0gbmVnKHNlbGYpOworICAgICAgICAgICAgY29udGlu
dWUgOworICAgICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgcmV0dXJuIG5lZyhkaXYobmVnKHNlbGYpLCBvdGhlcikpOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmIChvdGhlcl9oaSQxIDwgMCkgeworICAgICAgICAgIHJl
dHVybiBuZWcoZGl2KHNlbGYsIG5lZyhvdGhlcikpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICB2YXIgcmVzID0gemVybzsKKyAgICAgICAgICB2YXIgcmVtJDEgPSBzZWxm
OworICAgICAgICAgIHdoaWxlKGdlKHJlbSQxLCBvdGhlcikpIHsKKyAgICAgICAgICAgIHZhciBh
cHByb3gkMSA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3IodG9fZmxvYXQocmVtJDEpIC8gdG9fZmxv
YXQob3RoZXIpKSk7CisgICAgICAgICAgICB2YXIgbG9nMiA9IE1hdGguY2VpbChNYXRoLmxvZyhh
cHByb3gkMSkgLyBNYXRoLkxOMik7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBsb2cyIDw9IDQ4
ID8gMSA6IE1hdGgucG93KDIsIGxvZzIgLSA0OCk7CisgICAgICAgICAgICB2YXIgYXBwcm94UmVz
ID0gb2ZfZmxvYXQoYXBwcm94JDEpOworICAgICAgICAgICAgdmFyIGFwcHJveFJlbSA9IG11bChh
cHByb3hSZXMsIG90aGVyKTsKKyAgICAgICAgICAgIHdoaWxlKGFwcHJveFJlbVsvKiBoaSAqLzBd
IDwgMCB8fCBndChhcHByb3hSZW0sIHJlbSQxKSkgeworICAgICAgICAgICAgICBhcHByb3gkMSAt
PSBkZWx0YTsKKyAgICAgICAgICAgICAgYXBwcm94UmVzID0gb2ZfZmxvYXQoYXBwcm94JDEpOwor
ICAgICAgICAgICAgICBhcHByb3hSZW0gPSBtdWwoYXBwcm94UmVzLCBvdGhlcik7CisgICAgICAg
ICAgICB9OworICAgICAgICAgICAgaWYgKGlzX3plcm8oYXBwcm94UmVzKSkgeworICAgICAgICAg
ICAgICBhcHByb3hSZXMgPSBvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBh
ZGQocmVzLCBhcHByb3hSZXMpOworICAgICAgICAgICAgcmVtJDEgPSBhZGQocmVtJDEsIG5lZyhh
cHByb3hSZW0pKTsKKyAgICAgICAgICB9OworICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIAorICAgIH0KKyAgICAKKyAgfTsKK30KKworZnVuY3Rpb24gbW9k
XyhzZWxmLCBvdGhlcikgeworICB2YXIgeSA9IG11bChkaXYoc2VsZiwgb3RoZXIpLCBvdGhlcik7
CisgIHJldHVybiBhZGQoc2VsZiwgbmVnKHkpKTsKK30KKworZnVuY3Rpb24gZGl2X21vZChzZWxm
LCBvdGhlcikgeworICB2YXIgcXVvdGllbnQgPSBkaXYoc2VsZiwgb3RoZXIpOworICB2YXIgeSA9
IG11bChxdW90aWVudCwgb3RoZXIpOworICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAg
cXVvdGllbnQsCisgICAgICAgICAgYWRkKHNlbGYsIG5lZyh5KSkKKyAgICAgICAgXTsKK30KKwor
ZnVuY3Rpb24gY29tcGFyZShzZWxmLCBvdGhlcikgeworICB2YXIgdiA9IENhbWxfb2JqLmNhbWxf
bmF0aXZlaW50X2NvbXBhcmUoc2VsZlsvKiBoaSAqLzBdLCBvdGhlclsvKiBoaSAqLzBdKTsKKyAg
aWYgKHYpIHsKKyAgICByZXR1cm4gdjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2FtbF9v
YmouY2FtbF9uYXRpdmVpbnRfY29tcGFyZShzZWxmWy8qIGxvICovMV0sIG90aGVyWy8qIGxvICov
MV0pOworICB9Cit9CisKK2Z1bmN0aW9uIG9mX2ludDMyKGxvKSB7CisgIHJldHVybiAvKiByZWNv
cmQgKi9bCisgICAgICAgICAgLyogaGkgKi9sbyA8IDAgPyAtMSA6IDAsCisgICAgICAgICAgLyog
bG8gKi8obG8gPj4+IDApCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRvX2ludDMyKHgpIHsK
KyAgcmV0dXJuIHhbLyogbG8gKi8xXSB8IDA7Cit9CisKK2Z1bmN0aW9uIHRvX2hleCh4KSB7Cisg
IHZhciBhdXggPSBmdW5jdGlvbiAodikgeworICAgIHJldHVybiAodiA+Pj4gMCkudG9TdHJpbmco
MTYpOworICB9OworICB2YXIgbWF0Y2ggPSB4Wy8qIGhpICovMF07CisgIHZhciBtYXRjaCQxID0g
eFsvKiBsbyAqLzFdOworICB2YXIgZXhpdCA9IDA7CisgIGlmIChtYXRjaCAhPT0gMCkgeworICAg
IGV4aXQgPSAxOworICB9CisgIGVsc2UgaWYgKG1hdGNoJDEgIT09IDApIHsKKyAgICBleGl0ID0g
MTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gIjAiOworICB9CisgIGlmIChleGl0ID09PSAx
KSB7CisgICAgaWYgKG1hdGNoJDEgIT09IDApIHsKKyAgICAgIGlmIChtYXRjaCAhPT0gMCkgewor
ICAgICAgICB2YXIgbG8gPSBhdXgoeFsvKiBsbyAqLzFdKTsKKyAgICAgICAgdmFyIHBhZCA9IDgg
LSBsby5sZW5ndGggfCAwOworICAgICAgICBpZiAocGFkIDw9IDApIHsKKyAgICAgICAgICByZXR1
cm4gYXV4KHhbLyogaGkgKi8wXSkgKyBsbzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICByZXR1cm4gYXV4KHhbLyogaGkgKi8wXSkgKyAoQ2FtbF91dGlscy5yZXBlYXQocGFk
LCAiMCIpICsgbG8pOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIGF1eCh4Wy8qIGxvICovMV0pOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIHJldHVybiBhdXgoeFsvKiBoaSAqLzBdKSArICIwMDAwMDAwMCI7CisgICAgfQorICB9Cisg
IAorfQorCitmdW5jdGlvbiBkaXNjYXJkX3NpZ24oeCkgeworICByZXR1cm4gLyogcmVjb3JkICov
WworICAgICAgICAgIC8qIGhpICovMjE0NzQ4MzY0NyAmIHhbLyogaGkgKi8wXSwKKyAgICAgICAg
ICAvKiBsbyAqL3hbLyogbG8gKi8xXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBmbG9hdF9v
Zl9iaXRzKHgpIHsKKyAgdmFyIGludDMyID0gbmV3IEludDMyQXJyYXkoLyogYXJyYXkgKi9bCisg
ICAgICAgIHhbLyogbG8gKi8xXSwKKyAgICAgICAgeFsvKiBoaSAqLzBdCisgICAgICBdKTsKKyAg
cmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkoaW50MzIuYnVmZmVyKVswXTsKK30KKworZnVuY3Rpb24g
Yml0c19vZl9mbG9hdCh4KSB7CisgIHZhciB0b19uYXQgPSBmdW5jdGlvbiAoeCkgeworICAgIHJl
dHVybiB4OworICB9OworICB2YXIgdSA9IG5ldyBGbG9hdDY0QXJyYXkoLyogZmxvYXQgYXJyYXkg
Ki9beF0pOworICB2YXIgaW50MzIgPSBuZXcgSW50MzJBcnJheSh1LmJ1ZmZlcik7CisgIHZhciBo
aSA9IHRvX25hdChpbnQzMlsxXSk7CisgIHZhciBsbyA9IHRvX25hdChpbnQzMlswXSk7CisgIHJl
dHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogaGkgKi9oaSwKKyAgICAgICAgICAvKiBs
byAqLyhsbyA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZ2V0NjQocywgaSkgewor
ICB2YXIgaGkgPSAocy5jaGFyQ29kZUF0KGkgKyA0IHwgMCkgPDwgMzIpIHwgKHMuY2hhckNvZGVB
dChpICsgNSB8IDApIDw8IDQwKSB8IChzLmNoYXJDb2RlQXQoaSArIDYgfCAwKSA8PCA0OCkgfCAo
cy5jaGFyQ29kZUF0KGkgKyA3IHwgMCkgPDwgNTYpOworICB2YXIgbG8gPSBzLmNoYXJDb2RlQXQo
aSkgfCAocy5jaGFyQ29kZUF0KGkgKyAxIHwgMCkgPDwgOCkgfCAocy5jaGFyQ29kZUF0KGkgKyAy
IHwgMCkgPDwgMTYpIHwgKHMuY2hhckNvZGVBdChpICsgMyB8IDApIDw8IDI0KTsKKyAgcmV0dXJu
IC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgIC8qIGxvICov
KGxvID4+PiAwKQorICAgICAgICBdOworfQorCitleHBvcnRzLm1pbl9pbnQgICAgICAgPSBtaW5f
aW50OworZXhwb3J0cy5tYXhfaW50ICAgICAgID0gbWF4X2ludDsKK2V4cG9ydHMub25lICAgICAg
ICAgICA9IG9uZTsKK2V4cG9ydHMuemVybyAgICAgICAgICA9IHplcm87CitleHBvcnRzLm5vdCAg
ICAgICAgICAgPSBub3Q7CitleHBvcnRzLm9mX2ludDMyICAgICAgPSBvZl9pbnQzMjsKK2V4cG9y
dHMudG9faW50MzIgICAgICA9IHRvX2ludDMyOworZXhwb3J0cy5hZGQgICAgICAgICAgID0gYWRk
OworZXhwb3J0cy5uZWcgICAgICAgICAgID0gbmVnOworZXhwb3J0cy5zdWIgICAgICAgICAgID0g
c3ViOworZXhwb3J0cy5sc2xfICAgICAgICAgID0gbHNsXzsKK2V4cG9ydHMubHNyXyAgICAgICAg
ICA9IGxzcl87CitleHBvcnRzLmFzcl8gICAgICAgICAgPSBhc3JfOworZXhwb3J0cy5pc196ZXJv
ICAgICAgID0gaXNfemVybzsKK2V4cG9ydHMubXVsICAgICAgICAgICA9IG11bDsKK2V4cG9ydHMu
eG9yICAgICAgICAgICA9IHhvcjsKK2V4cG9ydHMub3JfICAgICAgICAgICA9IG9yXzsKK2V4cG9y
dHMuYW5kXyAgICAgICAgICA9IGFuZF87CitleHBvcnRzLnN3YXAgICAgICAgICAgPSBzd2FwOwor
ZXhwb3J0cy5nZSAgICAgICAgICAgID0gZ2U7CitleHBvcnRzLmVxICAgICAgICAgICAgPSBlcTsK
K2V4cG9ydHMubmVxICAgICAgICAgICA9IG5lcTsKK2V4cG9ydHMubHQgICAgICAgICAgICA9IGx0
OworZXhwb3J0cy5ndCAgICAgICAgICAgID0gZ3Q7CitleHBvcnRzLmxlICAgICAgICAgICAgPSBs
ZTsKK2V4cG9ydHMudG9fZmxvYXQgICAgICA9IHRvX2Zsb2F0OworZXhwb3J0cy5vZl9mbG9hdCAg
ICAgID0gb2ZfZmxvYXQ7CitleHBvcnRzLmRpdiAgICAgICAgICAgPSBkaXY7CitleHBvcnRzLm1v
ZF8gICAgICAgICAgPSBtb2RfOworZXhwb3J0cy5kaXZfbW9kICAgICAgID0gZGl2X21vZDsKK2V4
cG9ydHMuY29tcGFyZSAgICAgICA9IGNvbXBhcmU7CitleHBvcnRzLnRvX2hleCAgICAgICAgPSB0
b19oZXg7CitleHBvcnRzLmRpc2NhcmRfc2lnbiAgPSBkaXNjYXJkX3NpZ247CitleHBvcnRzLmZs
b2F0X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzOworZXhwb3J0cy5iaXRzX29mX2Zsb2F0ID0gYml0
c19vZl9mbG9hdDsKK2V4cG9ydHMuZ2V0NjQgICAgICAgICA9IGdldDY0OworLyogdHdvX3B0cl8z
Ml9kYmwgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX2ludDY0Lmpz
IC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlb
J2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhw
b3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmpz
IC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBCbG9jayA9IHJlcXVpcmUoIi4vYmxvY2si
KTsKKworZnVuY3Rpb24gZXJhc2VfcmVsKHBhcmFtKSB7CisgIGlmICh0eXBlb2YgcGFyYW0gPT09
ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8qIEVuZF9vZl9mbXR0eSAqLzA7CisgIH0KKyAgZWxz
ZSB7CisgICAgc3dpdGNoIChwYXJhbS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICByZXR1cm4gLyogQ2hhcl90eSAqL0Jsb2NrLl9fKDAsIFtlcmFzZV9yZWwocGFyYW1bMF0p
XSk7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogU3RyaW5nX3R5ICovQmxv
Y2suX18oMSwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAg
ICAgIHJldHVybiAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0p
OworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIC8qIEludDMyX3R5ICovQmxvY2su
X18oMywgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAg
IHJldHVybiAvKiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbZXJhc2VfcmVsKHBhcmFtWzBd
KV0pOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIC8qIEludDY0X3R5ICovQmxv
Y2suX18oNSwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAg
ICAgIHJldHVybiAvKiBGbG9hdF90eSAqL0Jsb2NrLl9fKDYsIFtlcmFzZV9yZWwocGFyYW1bMF0p
XSk7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2Nr
Ll9fKDcsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAg
ICByZXR1cm4gLyogRm9ybWF0X2FyZ190eSAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAg
ICAgICAgcGFyYW1bMF0sCisgICAgICAgICAgICAgICAgICAgIGVyYXNlX3JlbChwYXJhbVsxXSkK
KyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgdmFyIHR5
MSA9IHBhcmFtWzBdOworICAgICAgICAgIHJldHVybiAvKiBGb3JtYXRfc3Vic3RfdHkgKi9CbG9j
ay5fXyg5LCBbCisgICAgICAgICAgICAgICAgICAgIHR5MSwKKyAgICAgICAgICAgICAgICAgICAg
dHkxLAorICAgICAgICAgICAgICAgICAgICBlcmFzZV9yZWwocGFyYW1bMl0pCisgICAgICAgICAg
ICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICByZXR1cm4gLyogQWxwaGFf
dHkgKi9CbG9jay5fXygxMCwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgMTEg
OiAKKyAgICAgICAgICByZXR1cm4gLyogVGhldGFfdHkgKi9CbG9jay5fXygxMSwgW2VyYXNlX3Jl
bChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICByZXR1cm4gLyogQW55
X3R5ICovQmxvY2suX18oMTIsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEz
IDogCisgICAgICAgICAgcmV0dXJuIC8qIFJlYWRlcl90eSAqL0Jsb2NrLl9fKDEzLCBbZXJhc2Vf
cmVsKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgIHJldHVybiAvKiBJ
Z25vcmVkX3JlYWRlcl90eSAqL0Jsb2NrLl9fKDE0LCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOwor
ICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNvbmNhdF9mbXR0eShmbXR0eTEsIGZt
dHR5MikgeworICBpZiAodHlwZW9mIGZtdHR5MSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4g
Zm10dHkyOworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAoZm10dHkxLnRhZyB8IDApIHsKKyAg
ICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxvY2suX18oMCwg
W2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgMSA6IAorICAg
ICAgICAgIHJldHVybiAvKiBTdHJpbmdfdHkgKi9CbG9jay5fXygxLCBbY29uY2F0X2ZtdHR5KGZt
dHR5MVswXSwgZm10dHkyKV0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIC8q
IEludF90eSAqL0Jsb2NrLl9fKDIsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7
CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50MzJfdHkgKi9CbG9jay5f
XygzLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOworICAgICAgY2FzZSA0IDog
CisgICAgICAgICAgcmV0dXJuIC8qIE5hdGl2ZWludF90eSAqL0Jsb2NrLl9fKDQsIFtjb25jYXRf
Zm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBy
ZXR1cm4gLyogSW50NjRfdHkgKi9CbG9jay5fXyg1LCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwg
Zm10dHkyKV0pOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3R5
ICovQmxvY2suX18oNiwgW2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAg
IGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiAvKiBCb29sX3R5ICovQmxvY2suX18oNywgW2Nv
bmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgOCA6IAorICAgICAg
ICAgIHJldHVybiAvKiBGb3JtYXRfYXJnX3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAg
ICAgICAgICBmbXR0eTFbMF0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXR0eShmbXR0
eTFbMV0sIGZtdHR5MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA5IDogCisg
ICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9zdWJzdF90eSAqL0Jsb2NrLl9fKDksIFsKKyAgICAg
ICAgICAgICAgICAgICAgZm10dHkxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXR0eTFbMV0s
CisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXR0eShmbXR0eTFbMl0sIGZtdHR5MikKKyAg
ICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIHJldHVybiAv
KiBBbHBoYV90eSAqL0Jsb2NrLl9fKDEwLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHky
KV0pOworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiAvKiBUaGV0YV90eSAqL0Js
b2NrLl9fKDExLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOworICAgICAgY2Fz
ZSAxMiA6IAorICAgICAgICAgIHJldHVybiAvKiBBbnlfdHkgKi9CbG9jay5fXygxMiwgW2NvbmNh
dF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAg
ICByZXR1cm4gLyogUmVhZGVyX3R5ICovQmxvY2suX18oMTMsIFtjb25jYXRfZm10dHkoZm10dHkx
WzBdLCBmbXR0eTIpXSk7CisgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgcmV0dXJuIC8qIEln
bm9yZWRfcmVhZGVyX3R5ICovQmxvY2suX18oMTQsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBm
bXR0eTIpXSk7CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gY29uY2F0X2ZtdChm
bXQxLCBmbXQyKSB7CisgIGlmICh0eXBlb2YgZm10MSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1
cm4gZm10MjsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGZtdDEudGFnIHwgMCkgeworICAg
ICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0dXJuIC8qIENoYXIgKi9CbG9jay5fXygwLCBbY29u
Y2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0pOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0
dXJuIC8qIENhbWxfY2hhciAqL0Jsb2NrLl9fKDEsIFtjb25jYXRfZm10KGZtdDFbMF0sIGZtdDIp
XSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gLyogU3RyaW5nICovQmxvY2su
X18oMiwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAg
ICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAg
IGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMs
IFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAgICAgICAgICAgY29u
Y2F0X2ZtdChmbXQxWzFdLCBmbXQyKQorICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNl
IDQgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50ICovQmxvY2suX18oNCwgWworICAgICAgICAg
ICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAg
ICAgICAgICAgICAgICBmbXQxWzJdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZt
dDFbM10sIGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNSA6IAorICAg
ICAgICAgIHJldHVybiAvKiBJbnQzMiAqL0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAgICAgICAg
ICAgZm10MVswXSwKKyAgICAgICAgICAgICAgICAgICAgZm10MVsxXSwKKyAgICAgICAgICAgICAg
ICAgICAgZm10MVsyXSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzNdLCBm
bXQyKQorICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICBy
ZXR1cm4gLyogTmF0aXZlaW50ICovQmxvY2suX18oNiwgWworICAgICAgICAgICAgICAgICAgICBm
bXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAgICAgICAgICAgICAg
ICBmbXQxWzJdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbM10sIGZtdDIp
CisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVy
biAvKiBJbnQ2NCAqL0Jsb2NrLl9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwK
KyAgICAgICAgICAgICAgICAgICAgZm10MVsxXSwKKyAgICAgICAgICAgICAgICAgICAgZm10MVsy
XSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzNdLCBmbXQyKQorICAgICAg
ICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICByZXR1cm4gLyogRmxv
YXQgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAg
ICAgICAgICAgICAgIGZtdDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMl0sCisgICAg
ICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVszXSwgZm10MikKKyAgICAgICAgICAgICAg
ICAgIF0pOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0dXJuIC8qIEJvb2wgKi9CbG9j
ay5fXyg5LCBbY29uY2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0pOworICAgICAgY2FzZSAxMCA6IAor
ICAgICAgICAgIHJldHVybiAvKiBGbHVzaCAqL0Jsb2NrLl9fKDEwLCBbY29uY2F0X2ZtdChmbXQx
WzBdLCBmbXQyKV0pOworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiAvKiBTdHJp
bmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0s
CisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsxXSwgZm10MikKKyAgICAgICAg
ICAgICAgICAgIF0pOworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHJldHVybiAvKiBDaGFy
X2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAor
ICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAg
ICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0
X2FyZyAqL0Jsb2NrLl9fKDEzLCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAg
ICAgICAgICAgICAgICAgIGZtdDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQo
Zm10MVsyXSwgZm10MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAxNCA6IAor
ICAgICAgICAgIHJldHVybiAvKiBGb3JtYXRfc3Vic3QgKi9CbG9jay5fXygxNCwgWworICAgICAg
ICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAg
ICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMl0sIGZtdDIpCisgICAgICAgICAgICAg
ICAgICBdKTsKKyAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICByZXR1cm4gLyogQWxwaGEgKi9C
bG9jay5fXygxNSwgW2NvbmNhdF9mbXQoZm10MVswXSwgZm10MildKTsKKyAgICAgIGNhc2UgMTYg
OiAKKyAgICAgICAgICByZXR1cm4gLyogVGhldGEgKi9CbG9jay5fXygxNiwgW2NvbmNhdF9mbXQo
Zm10MVswXSwgZm10MildKTsKKyAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICByZXR1cm4gLyog
Rm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICBmbXQx
WzBdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAg
ICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICByZXR1cm4gLyog
Rm9ybWF0dGluZ19nZW4gKi9CbG9jay5fXygxOCwgWworICAgICAgICAgICAgICAgICAgICBmbXQx
WzBdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAg
ICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICByZXR1cm4gLyog
UmVhZGVyICovQmxvY2suX18oMTksIFtjb25jYXRfZm10KGZtdDFbMF0sIGZtdDIpXSk7CisgICAg
ICBjYXNlIDIwIDogCisgICAgICAgICAgcmV0dXJuIC8qIFNjYW5fY2hhcl9zZXQgKi9CbG9jay5f
XygyMCwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAg
ICBmbXQxWzFdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMl0sIGZtdDIp
CisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICByZXR1
cm4gLyogU2Nhbl9nZXRfY291bnRlciAqL0Jsb2NrLl9fKDIxLCBbCisgICAgICAgICAgICAgICAg
ICAgIGZtdDFbMF0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsxXSwgZm10
MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAyMiA6IAorICAgICAgICAgIHJl
dHVybiAvKiBTY2FuX25leHRfY2hhciAqL0Jsb2NrLl9fKDIyLCBbY29uY2F0X2ZtdChmbXQxWzBd
LCBmbXQyKV0pOworICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgIHJldHVybiAvKiBJZ25vcmVk
X3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAg
ICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzFdLCBmbXQyKQorICAgICAgICAgICAg
ICAgICAgXSk7CisgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgcmV0dXJuIC8qIEN1c3RvbSAq
L0Jsb2NrLl9fKDI0LCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAg
ICAgICAgICAgIGZtdDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsy
XSwgZm10MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgCisgICAgfQorICB9Cit9CisK
K2V4cG9ydHMuY29uY2F0X2ZtdHR5ID0gY29uY2F0X2ZtdHR5OworZXhwb3J0cy5lcmFzZV9yZWwg
ICAgPSBlcmFzZV9yZWw7CitleHBvcnRzLmNvbmNhdF9mbXQgICA9IGNvbmNhdF9mbXQ7CisvKiBO
byBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxpbnRlcm5hbEZvcm1hdEJhc2lj
cy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lz
dHJ5WydjYW1saW50ZXJuYWxGb3JtYXQnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9y
dHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxpbnRlcm5hbEZvcm1hdC5qcyAvLy8vLy8v
LworJ3VzZSBzdHJpY3QnOworCit2YXIgU3lzICAgICAgICAgICAgICAgICAgICAgID0gcmVxdWly
ZSgiLi9zeXMiKTsKK3ZhciBDaGFyICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2No
YXIiKTsKK3ZhciBCbG9jayAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Jsb2NrIik7
Cit2YXIgQnl0ZXMgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ieXRlcyIpOwordmFy
IEN1cnJ5ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBCdWZm
ZXIgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2J1ZmZlciIpOwordmFyICQkU3RyaW5n
ICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc3RyaW5nIik7Cit2YXIgQ2FtbF9pbyAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2lvIik7Cit2YXIgQ2FtbF9vYmogICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX29iaiIpOwordmFyIENhbWxfYnl0ZXMgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9ieXRlcyIpOwordmFyIENhbWxfZmxvYXQgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9mbG9hdCIpOwordmFyIENhbWxfaW50MzIgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9pbnQzMiIpOwordmFyIFBlcnZhc2l2ZXMgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxfZm9ybWF0ICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9mb3JtYXQiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7Cit2YXIgQ2FtbF9leGNlcHRpb25z
ICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2V4Y2VwdGlvbnMiKTsKK3ZhciBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucyAgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7Cit2
YXIgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzID0gcmVxdWlyZSgiLi9jYW1saW50ZXJuYWxGb3Jt
YXRCYXNpY3MiKTsKKworZnVuY3Rpb24gY3JlYXRlX2NoYXJfc2V0KCkgeworICByZXR1cm4gQnl0
ZXMubWFrZSgzMiwgLyogIlwwMDAiICovMCk7Cit9CisKK2Z1bmN0aW9uIGFkZF9pbl9jaGFyX3Nl
dChjaGFyX3NldCwgYykgeworICB2YXIgc3RyX2luZCA9IChjID4+PiAzKTsKKyAgdmFyIG1hc2sg
PSAoMSA8PCAoYyAmIDcpKTsKKyAgY2hhcl9zZXRbc3RyX2luZF0gPSBQZXJ2YXNpdmVzLmNoYXJf
b2ZfaW50KENhbWxfYnl0ZXMuZ2V0KGNoYXJfc2V0LCBzdHJfaW5kKSB8IG1hc2spOworICByZXR1
cm4gLyogKCkgKi8wOworfQorCit2YXIgZnJlZXplX2NoYXJfc2V0ID0gQnl0ZXMudG9fc3RyaW5n
OworCitmdW5jdGlvbiByZXZfY2hhcl9zZXQoY2hhcl9zZXQpIHsKKyAgdmFyIGNoYXJfc2V0JHBy
aW1lID0gQnl0ZXMubWFrZSgzMiwgLyogIlwwMDAiICovMCk7CisgIGZvcih2YXIgaSA9IDA7IGkg
PD0gMzE7ICsraSl7CisgICAgY2hhcl9zZXQkcHJpbWVbaV0gPSBQZXJ2YXNpdmVzLmNoYXJfb2Zf
aW50KENhbWxfc3RyaW5nLmdldChjaGFyX3NldCwgaSkgXiAyNTUpOworICB9CisgIHJldHVybiBD
YW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoY2hhcl9zZXQkcHJpbWUpOworfQorCitmdW5jdGlv
biBpc19pbl9jaGFyX3NldChjaGFyX3NldCwgYykgeworICB2YXIgc3RyX2luZCA9IChjID4+PiAz
KTsKKyAgdmFyIG1hc2sgPSAoMSA8PCAoYyAmIDcpKTsKKyAgcmV0dXJuICsoKENhbWxfc3RyaW5n
LmdldChjaGFyX3NldCwgc3RyX2luZCkgJiBtYXNrKSAhPT0gMCk7Cit9CisKK2Z1bmN0aW9uIHBh
ZF9vZl9wYWRfb3B0KHBhZF9vcHQpIHsKKyAgaWYgKHBhZF9vcHQpIHsKKyAgICByZXR1cm4gLyog
TGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgIC8qIFJpZ2h0ICovMSwK
KyAgICAgICAgICAgICAgcGFkX29wdFswXQorICAgICAgICAgICAgXSk7CisgIH0KKyAgZWxzZSB7
CisgICAgcmV0dXJuIC8qIE5vX3BhZGRpbmcgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHByZWNf
b2ZfcHJlY19vcHQocHJlY19vcHQpIHsKKyAgaWYgKHByZWNfb3B0KSB7CisgICAgcmV0dXJuIC8q
IExpdF9wcmVjaXNpb24gKi9bcHJlY19vcHRbMF1dOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biAvKiBOb19wcmVjaXNpb24gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHBhcmFtX2Zvcm1hdF9v
Zl9pZ25vcmVkX2Zvcm1hdChpZ24sIGZtdCkgeworICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJl
ciIpIHsKKyAgICBzd2l0Y2ggKGlnbikgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0
dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogQ2hhciAqL0Jsb2NrLl9fKDAsIFtmbXRdKV07
CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAq
L1svKiBDYW1sX2NoYXIgKi9CbG9jay5fXygxLCBbZm10XSldOworICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogQm9vbCAqL0Jsb2NrLl9f
KDksIFtmbXRdKV07CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1f
Zm9ybWF0X0VCQiAqL1svKiBSZWFkZXIgKi9CbG9jay5fXygxOSwgW2ZtdF0pXTsKKyAgICAgIGNh
c2UgNCA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIFNjYW5f
bmV4dF9jaGFyICovQmxvY2suX18oMjIsIFtmbXRdKV07CisgICAgICAKKyAgICB9CisgIH0KKyAg
ZWxzZSB7CisgICAgc3dpdGNoIChpZ24udGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAg
ICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogU3RyaW5nICovQmxvY2suX18o
MiwgWworICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblswXSksCisgICAg
ICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIENhbWxf
c3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRf
b3B0KGlnblswXSksCisgICAgICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAg
ICAgIF0pXTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3Jt
YXRfRUJCICovWy8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICBp
Z25bMF0sCisgICAgICAgICAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQoaWduWzFdKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAg
ICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAgICBdKV07CisgICAgICBjYXNlIDMgOiAKKyAg
ICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBJbnQzMiAqL0Jsb2NrLl9f
KDUsIFsKKyAgICAgICAgICAgICAgICAgICAgICBpZ25bMF0sCisgICAgICAgICAgICAgICAgICAg
ICAgcGFkX29mX3BhZF9vcHQoaWduWzFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBOb19w
cmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAg
ICAgICBdKV07CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9y
bWF0X0VCQiAqL1svKiBOYXRpdmVpbnQgKi9CbG9jay5fXyg2LCBbCisgICAgICAgICAgICAgICAg
ICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblsx
XSksCisgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAg
ICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgY2FzZSA1
IDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogSW50NjQgKi9C
bG9jay5fXyg3LCBbCisgICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAg
ICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblsxXSksCisgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAg
ICAgICAgICAgICAgXSldOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIC8qIFBh
cmFtX2Zvcm1hdF9FQkIgKi9bLyogRmxvYXQgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAg
ICAgICAgICAgLyogRmxvYXRfZiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgcGFkX29mX3Bh
ZF9vcHQoaWduWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICBwcmVjX29mX3ByZWNfb3B0KGln
blsxXSksCisgICAgICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0p
XTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJC
ICovWy8qIEZvcm1hdF9hcmcgKi9CbG9jay5fXygxMywgWworICAgICAgICAgICAgICAgICAgICAg
IGlnblswXSwKKyAgICAgICAgICAgICAgICAgICAgICBpZ25bMV0sCisgICAgICAgICAgICAgICAg
ICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNhc2UgOCA6IAorICAg
ICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIEZvcm1hdF9zdWJzdCAqL0Js
b2NrLl9fKDE0LCBbCisgICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAg
ICAgICAgICAgIGlnblsxXSwKKyAgICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAg
ICAgICAgICAgXSldOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFt
X2Zvcm1hdF9FQkIgKi9bLyogU2Nhbl9jaGFyX3NldCAqL0Jsb2NrLl9fKDIwLCBbCisgICAgICAg
ICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgIGlnblsxXSwKKyAg
ICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAg
Y2FzZSAxMCA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIFNj
YW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwgWworICAgICAgICAgICAgICAgICAgICAgIGln
blswXSwKKyAgICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSld
OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGJ1ZmZlcl9jaGVja19zaXplKGJ1
Ziwgb3ZlcmhlYWQpIHsKKyAgdmFyIGxlbiA9IGJ1ZlsvKiBieXRlcyAqLzFdLmxlbmd0aDsKKyAg
dmFyIG1pbl9sZW4gPSBidWZbLyogaW5kICovMF0gKyBvdmVyaGVhZCB8IDA7CisgIGlmIChtaW5f
bGVuID4gbGVuKSB7CisgICAgdmFyIG5ld19sZW4gPSBQZXJ2YXNpdmVzLm1heCgobGVuIDw8IDEp
LCBtaW5fbGVuKTsKKyAgICB2YXIgbmV3X3N0ciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0
cmluZyhuZXdfbGVuKTsKKyAgICBCeXRlcy5ibGl0KGJ1ZlsvKiBieXRlcyAqLzFdLCAwLCBuZXdf
c3RyLCAwLCBsZW4pOworICAgIGJ1ZlsvKiBieXRlcyAqLzFdID0gbmV3X3N0cjsKKyAgICByZXR1
cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1
bmN0aW9uIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGMpIHsKKyAgYnVmZmVyX2NoZWNrX3NpemUoYnVm
LCAxKTsKKyAgYnVmWy8qIGJ5dGVzICovMV1bYnVmWy8qIGluZCAqLzBdXSA9IGM7CisgIGJ1Zlsv
KiBpbmQgKi8wXSA9IGJ1ZlsvKiBpbmQgKi8wXSArIDEgfCAwOworICByZXR1cm4gLyogKCkgKi8w
OworfQorCitmdW5jdGlvbiBidWZmZXJfYWRkX3N0cmluZyhidWYsIHMpIHsKKyAgdmFyIHN0cl9s
ZW4gPSBzLmxlbmd0aDsKKyAgYnVmZmVyX2NoZWNrX3NpemUoYnVmLCBzdHJfbGVuKTsKKyAgJCRT
dHJpbmcuYmxpdChzLCAwLCBidWZbLyogYnl0ZXMgKi8xXSwgYnVmWy8qIGluZCAqLzBdLCBzdHJf
bGVuKTsKKyAgYnVmWy8qIGluZCAqLzBdID0gYnVmWy8qIGluZCAqLzBdICsgc3RyX2xlbiB8IDA7
CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGJ1ZmZlcl9jb250ZW50cyhidWYp
IHsKKyAgcmV0dXJuIEJ5dGVzLnN1Yl9zdHJpbmcoYnVmWy8qIGJ5dGVzICovMV0sIDAsIGJ1Zlsv
KiBpbmQgKi8wXSk7Cit9CisKK2Z1bmN0aW9uIGNoYXJfb2ZfaWNvbnYoaWNvbnYpIHsKKyAgc3dp
dGNoIChpY29udikgeworICAgIGNhc2UgMCA6IAorICAgIGNhc2UgMSA6IAorICAgIGNhc2UgMiA6
IAorICAgICAgICByZXR1cm4gLyogImQiICovMTAwOworICAgIGNhc2UgMyA6IAorICAgIGNhc2Ug
NCA6IAorICAgIGNhc2UgNSA6IAorICAgICAgICByZXR1cm4gLyogImkiICovMTA1OworICAgIGNh
c2UgNiA6IAorICAgIGNhc2UgNyA6IAorICAgICAgICByZXR1cm4gLyogIngiICovMTIwOworICAg
IGNhc2UgOCA6IAorICAgIGNhc2UgOSA6IAorICAgICAgICByZXR1cm4gLyogIlgiICovODg7Cisg
ICAgY2FzZSAxMCA6IAorICAgIGNhc2UgMTEgOiAKKyAgICAgICAgcmV0dXJuIC8qICJvIiAqLzEx
MTsKKyAgICBjYXNlIDEyIDogCisgICAgICAgIHJldHVybiAvKiAidSIgKi8xMTc7CisgICAgCisg
IH0KK30KKworZnVuY3Rpb24gY2hhcl9vZl9mY29udihmY29udikgeworICBzd2l0Y2ggKGZjb252
KSB7CisgICAgY2FzZSAwIDogCisgICAgY2FzZSAxIDogCisgICAgY2FzZSAyIDogCisgICAgICAg
IHJldHVybiAvKiAiZiIgKi8xMDI7CisgICAgY2FzZSAzIDogCisgICAgY2FzZSA0IDogCisgICAg
Y2FzZSA1IDogCisgICAgICAgIHJldHVybiAvKiAiZSIgKi8xMDE7CisgICAgY2FzZSA2IDogCisg
ICAgY2FzZSA3IDogCisgICAgY2FzZSA4IDogCisgICAgICAgIHJldHVybiAvKiAiRSIgKi82OTsK
KyAgICBjYXNlIDkgOiAKKyAgICBjYXNlIDEwIDogCisgICAgY2FzZSAxMSA6IAorICAgICAgICBy
ZXR1cm4gLyogImciICovMTAzOworICAgIGNhc2UgMTIgOiAKKyAgICBjYXNlIDEzIDogCisgICAg
Y2FzZSAxNCA6IAorICAgICAgICByZXR1cm4gLyogIkciICovNzE7CisgICAgY2FzZSAxNSA6IAor
ICAgICAgICByZXR1cm4gLyogIkYiICovNzA7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gY2hh
cl9vZl9jb3VudGVyKGNvdW50ZXIpIHsKKyAgc3dpdGNoIChjb3VudGVyKSB7CisgICAgY2FzZSAw
IDogCisgICAgICAgIHJldHVybiAvKiAibCIgKi8xMDg7CisgICAgY2FzZSAxIDogCisgICAgICAg
IHJldHVybiAvKiAibiIgKi8xMTA7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiAi
TiIgKi83ODsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfY2hhcl9zZXQoYnVmLCBj
aGFyX3NldCkgeworICB2YXIgcHJpbnRfY2hhciA9IGZ1bmN0aW9uIChidWYsIGkpIHsKKyAgICB2
YXIgYyA9IFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoaSk7CisgICAgaWYgKGMgIT09IDM3KSB7Cisg
ICAgICBpZiAoYyAhPT0gNjQpIHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYs
IGMpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYs
IC8qICIlIiAqLzM3KTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJA
IiAqLzY0KTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBidWZmZXJfYWRkX2No
YXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1Ziwg
LyogIiUiICovMzcpOworICAgIH0KKyAgfTsKKyAgdmFyIHByaW50X291dCA9IGZ1bmN0aW9uIChz
ZXQsIF9pKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIGkgPSBfaTsKKyAgICAgIGlm
IChpIDwgMjU2KSB7CisgICAgICAgIGlmIChpc19pbl9jaGFyX3NldChzZXQsIFBlcnZhc2l2ZXMu
Y2hhcl9vZl9pbnQoaSkpKSB7CisgICAgICAgICAgdmFyIHNldCQxID0gc2V0OworICAgICAgICAg
IHZhciBpJDEgPSBpOworICAgICAgICAgIHZhciBtYXRjaCA9IFBlcnZhc2l2ZXMuY2hhcl9vZl9p
bnQoaSQxKTsKKyAgICAgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQ1IHwgMDsKKyAgICAg
ICAgICBpZiAoc3dpdGNoZXIgPiA0OCB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICAgIGlm
IChzd2l0Y2hlciA+PSAyMTApIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHByaW50X2NoYXIoYnVm
LCAyNTUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IHJldHVybiBwcmludF9zZWNvbmQoc2V0JDEsIGkkMSArIDEgfCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoc3dpdGNoZXIgPiA0NyB8fCBzd2l0Y2hl
ciA8IDEpIHsKKyAgICAgICAgICAgIHJldHVybiBwcmludF9vdXQoc2V0JDEsIGkkMSArIDEgfCAw
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcHJp
bnRfc2Vjb25kKHNldCQxLCBpJDEgKyAxIHwgMCk7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHJldHVybiAwOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBwcmludF9zZWNvbmQg
PSBmdW5jdGlvbiAoc2V0LCBpKSB7CisgICAgaWYgKGlzX2luX2NoYXJfc2V0KHNldCwgUGVydmFz
aXZlcy5jaGFyX29mX2ludChpKSkpIHsKKyAgICAgIHZhciBtYXRjaCA9IFBlcnZhc2l2ZXMuY2hh
cl9vZl9pbnQoaSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgc3dpdGNoZXIgPSBt
YXRjaCAtIDQ1IHwgMDsKKyAgICAgIGlmIChzd2l0Y2hlciA+IDQ4IHx8IHN3aXRjaGVyIDwgMCkg
eworICAgICAgICBpZiAoc3dpdGNoZXIgPj0gMjEwKSB7CisgICAgICAgICAgcHJpbnRfY2hhcihi
dWYsIDI1NCk7CisgICAgICAgICAgcmV0dXJuIHByaW50X2NoYXIoYnVmLCAyNTUpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAg
ICB9CisgICAgICBlbHNlIGlmIChzd2l0Y2hlciA+IDQ3IHx8IHN3aXRjaGVyIDwgMSkgeworICAg
ICAgICBpZiAoaXNfaW5fY2hhcl9zZXQoc2V0LCBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KGkgKyAx
IHwgMCkpKSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgcHJpbnRfY2hhcihidWYsIGkgLSAxIHwgMCk7CisgICAgICAgICAgcmV0dXJu
IHByaW50X291dChzZXQsIGkgKyAxIHwgMCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGlmIChleGl0ID09PSAxKSB7
CisgICAgICAgIGlmIChpc19pbl9jaGFyX3NldChzZXQsIFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQo
aSArIDEgfCAwKSkpIHsKKyAgICAgICAgICB2YXIgc2V0JDEgPSBzZXQ7CisgICAgICAgICAgdmFy
IGkkMSA9IGkgLSAxIHwgMDsKKyAgICAgICAgICB2YXIgX2ogPSBpICsgMiB8IDA7CisgICAgICAg
ICAgd2hpbGUodHJ1ZSkgeworICAgICAgICAgICAgdmFyIGogPSBfajsKKyAgICAgICAgICAgIGlm
IChqID09PSAyNTYgfHwgIWlzX2luX2NoYXJfc2V0KHNldCQxLCBQZXJ2YXNpdmVzLmNoYXJfb2Zf
aW50KGopKSkgeworICAgICAgICAgICAgICBwcmludF9jaGFyKGJ1ZiwgaSQxKTsKKyAgICAgICAg
ICAgICAgcHJpbnRfY2hhcihidWYsIC8qICItIiAqLzQ1KTsKKyAgICAgICAgICAgICAgcHJpbnRf
Y2hhcihidWYsIGogLSAxIHwgMCk7CisgICAgICAgICAgICAgIGlmIChqIDwgMjU2KSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHByaW50X291dChzZXQkMSwgaiArIDEgfCAwKTsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgIF9qID0gaiArIDEgfCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgcHJpbnRfY2hhcihidWYsIGkgLSAxIHwgMCk7CisgICAgICAg
ICAgcHJpbnRfY2hhcihidWYsIGkpOworICAgICAgICAgIHJldHVybiBwcmludF9vdXQoc2V0LCBp
ICsgMiB8IDApOworICAgICAgICB9CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICBwcmludF9jaGFyKGJ1ZiwgaSAtIDEgfCAwKTsKKyAgICAgIHJldHVybiBwcmludF9v
dXQoc2V0LCBpICsgMSB8IDApOworICAgIH0KKyAgfTsKKyAgdmFyIHByaW50X3N0YXJ0ID0gZnVu
Y3Rpb24gKHNldCkgeworICAgIHZhciBpc19hbG9uZSA9IGZ1bmN0aW9uIChjKSB7CisgICAgICB2
YXIgbWF0Y2hfMDAwID0gQ2hhci5jaHIoYyAtIDEgfCAwKTsKKyAgICAgIHZhciBtYXRjaF8wMDEg
PSBDaGFyLmNocihjICsgMSB8IDApOworICAgICAgaWYgKGlzX2luX2NoYXJfc2V0KHNldCwgYykp
IHsKKyAgICAgICAgcmV0dXJuIDEgLSAoaXNfaW5fY2hhcl9zZXQoc2V0LCBtYXRjaF8wMDApICYm
IGlzX2luX2NoYXJfc2V0KHNldCwgbWF0Y2hfMDAxKSk7CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICAgIH0KKyAgICB9OworICAgIGlmIChp
c19hbG9uZSgvKiAiXSIgKi85MykpIHsKKyAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJd
IiAqLzkzKTsKKyAgICB9CisgICAgcHJpbnRfb3V0KHNldCwgMSk7CisgICAgaWYgKGlzX2Fsb25l
KC8qICItIiAqLzQ1KSkgeworICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIt
IiAqLzQ1KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH07
CisgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJbIiAqLzkxKTsKKyAgcHJpbnRfc3RhcnQoaXNf
aW5fY2hhcl9zZXQoY2hhcl9zZXQsIC8qICJcMDAwIiAqLzApID8gKGJ1ZmZlcl9hZGRfY2hhcihi
dWYsIC8qICJeIiAqLzk0KSwgcmV2X2NoYXJfc2V0KGNoYXJfc2V0KSkgOiBjaGFyX3NldCk7Cisg
IHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiXSIgKi85Myk7Cit9CisKK2Z1bmN0aW9u
IGJwcmludF9wYWR0eShidWYsIHBhZHR5KSB7CisgIHN3aXRjaCAocGFkdHkpIHsKKyAgICBjYXNl
IDAgOiAKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICItIiAqLzQ1KTsK
KyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICBjYXNlIDIgOiAK
KyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIwIiAqLzQ4KTsKKyAgICAK
KyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpIHsK
KyAgaWYgKGlnbl9mbGFnKSB7CisgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJf
IiAqLzk1KTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlv
biBicHJpbnRfcGFkX29wdChidWYsIHBhZF9vcHQpIHsKKyAgaWYgKHBhZF9vcHQpIHsKKyAgICBy
ZXR1cm4gYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiIiArIHBhZF9vcHRbMF0pOworICB9CisgIGVs
c2UgeworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gYnByaW50X3Bh
ZGRpbmcoYnVmLCBwYWQpIHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAg
cmV0dXJuIC8qICgpICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBicHJpbnRfcGFkdHkoYnVmLCBw
YWRbMF0pOworICAgIGlmIChwYWQudGFnKSB7CisgICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFy
KGJ1ZiwgLyogIioiICovNDIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBidWZm
ZXJfYWRkX3N0cmluZyhidWYsICIiICsgcGFkWzFdKTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rp
b24gYnByaW50X3ByZWNpc2lvbihidWYsIHByZWMpIHsKKyAgaWYgKHR5cGVvZiBwcmVjID09PSAi
bnVtYmVyIikgeworICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICByZXR1cm4gYnVmZmVyX2Fk
ZF9zdHJpbmcoYnVmLCAiLioiKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyog
KCkgKi8wOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAv
KiAiLiIgKi80Nik7CisgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiIgKyBwcmVj
WzBdKTsKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfaWNvbnZfZmxhZyhidWYsIGljb252KSB7
CisgIHN3aXRjaCAoaWNvbnYpIHsKKyAgICBjYXNlIDEgOiAKKyAgICBjYXNlIDQgOiAKKyAgICAg
ICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIrIiAqLzQzKTsKKyAgICBjYXNlIDIg
OiAKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8q
ICIgIiAqLzMyKTsKKyAgICBjYXNlIDcgOiAKKyAgICBjYXNlIDkgOiAKKyAgICBjYXNlIDExIDog
CisgICAgICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiIyIgKi8zNSk7CisgICAg
Y2FzZSAwIDogCisgICAgY2FzZSAzIDogCisgICAgY2FzZSA2IDogCisgICAgY2FzZSA4IDogCisg
ICAgY2FzZSAxMCA6IAorICAgIGNhc2UgMTIgOiAKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsK
KyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfaW50X2ZtdChidWYsIGlnbl9mbGFnLCBp
Y29udiwgcGFkLCBwcmVjKSB7CisgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsK
KyAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgYnByaW50X2ljb252X2Zs
YWcoYnVmLCBpY29udik7CisgIGJwcmludF9wYWRkaW5nKGJ1ZiwgcGFkKTsKKyAgYnByaW50X3By
ZWNpc2lvbihidWYsIHByZWMpOworICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgY2hhcl9v
Zl9pY29udihpY29udikpOworfQorCitmdW5jdGlvbiBicHJpbnRfYWx0aW50X2ZtdChidWYsIGln
bl9mbGFnLCBpY29udiwgcGFkLCBwcmVjLCBjKSB7CisgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8q
ICIlIiAqLzM3KTsKKyAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgYnBy
aW50X2ljb252X2ZsYWcoYnVmLCBpY29udik7CisgIGJwcmludF9wYWRkaW5nKGJ1ZiwgcGFkKTsK
KyAgYnByaW50X3ByZWNpc2lvbihidWYsIHByZWMpOworICBidWZmZXJfYWRkX2NoYXIoYnVmLCBj
KTsKKyAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGNoYXJfb2ZfaWNvbnYoaWNvbnYpKTsK
K30KKworZnVuY3Rpb24gYnByaW50X2Zjb252X2ZsYWcoYnVmLCBmY29udikgeworICBzd2l0Y2gg
KGZjb252KSB7CisgICAgY2FzZSAxIDogCisgICAgY2FzZSA0IDogCisgICAgY2FzZSA3IDogCisg
ICAgY2FzZSAxMCA6IAorICAgIGNhc2UgMTMgOiAKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRf
Y2hhcihidWYsIC8qICIrIiAqLzQzKTsKKyAgICBjYXNlIDIgOiAKKyAgICBjYXNlIDUgOiAKKyAg
ICBjYXNlIDggOiAKKyAgICBjYXNlIDExIDogCisgICAgY2FzZSAxNCA6IAorICAgICAgICByZXR1
cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiAiICovMzIpOworICAgIGNhc2UgMCA6IAorICAg
IGNhc2UgMyA6IAorICAgIGNhc2UgNiA6IAorICAgIGNhc2UgOSA6IAorICAgIGNhc2UgMTIgOiAK
KyAgICBjYXNlIDE1IDogCisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgCisgIH0KK30K
KworZnVuY3Rpb24gYnByaW50X2Zsb2F0X2ZtdChidWYsIGlnbl9mbGFnLCBmY29udiwgcGFkLCBw
cmVjKSB7CisgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgYnByaW50X2ln
bm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgYnByaW50X2Zjb252X2ZsYWcoYnVmLCBmY29u
dik7CisgIGJwcmludF9wYWRkaW5nKGJ1ZiwgcGFkKTsKKyAgYnByaW50X3ByZWNpc2lvbihidWYs
IHByZWMpOworICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgY2hhcl9vZl9mY29udihmY29u
dikpOworfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoZm9ybWF0dGluZ19s
aXQpIHsKKyAgaWYgKHR5cGVvZiBmb3JtYXR0aW5nX2xpdCA9PT0gIm51bWJlciIpIHsKKyAgICBz
d2l0Y2ggKGZvcm1hdHRpbmdfbGl0KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1
cm4gIkBdIjsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAiQH0iOworICAgICAg
Y2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuICJAPyI7CisgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICByZXR1cm4gIkBcbiI7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gIkAu
IjsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiAiQEAiOworICAgICAgY2FzZSA2
IDogCisgICAgICAgICAgcmV0dXJuICJAJSI7CisgICAgICAKKyAgICB9CisgIH0KKyAgZWxzZSB7
CisgICAgc3dpdGNoIChmb3JtYXR0aW5nX2xpdC50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAK
KyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiBmb3JtYXR0aW5nX2xpdFswXTsKKyAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAiQCIgKyBDYW1sX3N0cmluZy5ieXRlc190
b19zdHJpbmcoQnl0ZXMubWFrZSgxLCBmb3JtYXR0aW5nX2xpdFswXSkpOworICAgICAgCisgICAg
fQorICB9Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9mb3JtYXR0aW5nX2dlbihmb3JtYXR0aW5n
X2dlbikgeworICByZXR1cm4gZm9ybWF0dGluZ19nZW5bMF1bMV07Cit9CisKK2Z1bmN0aW9uIGJw
cmludF9jaGFyX2xpdGVyYWwoYnVmLCBjaHIpIHsKKyAgaWYgKGNociAhPT0gMzcpIHsKKyAgICBy
ZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgY2hyKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJSUiKTsKKyAgfQorfQorCitmdW5jdGlvbiBicHJp
bnRfc3RyaW5nX2xpdGVyYWwoYnVmLCBzdHIpIHsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2gg
PSBzdHIubGVuZ3RoIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgYnByaW50X2No
YXJfbGl0ZXJhbChidWYsIENhbWxfc3RyaW5nLmdldChzdHIsIGkpKTsKKyAgfQorICByZXR1cm4g
LyogKCkgKi8wOworfQorCitmdW5jdGlvbiBicHJpbnRfZm10dHkoYnVmLCBfZm10dHkpIHsKKyAg
d2hpbGUodHJ1ZSkgeworICAgIHZhciBmbXR0eSA9IF9mbXR0eTsKKyAgICBpZiAodHlwZW9mIGZt
dHR5ID09PSAibnVtYmVyIikgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICBzd2l0Y2ggKGZtdHR5LnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDog
CisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlYyIpOworICAgICAgICAgICAg
X2ZtdHR5ID0gZm10dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVzIik7CisgICAg
ICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJWki
KTsKKyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhi
dWYsICIlbGkiKTsKKyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBidWZmZXJfYWRk
X3N0cmluZyhidWYsICIlbmkiKTsKKyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICBi
dWZmZXJfYWRkX3N0cmluZyhidWYsICIlTGkiKTsKKyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5
WzBdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSA2IDogCisgICAg
ICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlZiIpOworICAgICAgICAgICAgX2ZtdHR5
ID0gZm10dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDcg
OiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVCIik7CisgICAgICAgICAg
ICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
IGNhc2UgOCA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJXsiKTsKKyAg
ICAgICAgICAgIGJwcmludF9mbXR0eShidWYsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIGJ1ZmZl
cl9hZGRfc3RyaW5nKGJ1ZiwgIiV9Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVsxXTsK
KyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAg
ICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJSgiKTsKKyAgICAgICAgICAgIGJwcmludF9mbXR0
eShidWYsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiUp
Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVsyXTsKKyAgICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5n
KGJ1ZiwgIiVhIik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9h
ZGRfc3RyaW5nKGJ1ZiwgIiV0Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAg
IGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiU/Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0
eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAg
ICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVyIik7CisgICAgICAgICAgICBfZm10
dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2Ug
MTQgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVfciIpOworICAgICAg
ICAgICAgX2ZtdHR5ID0gZm10dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICAKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGludF9vZl9jdXN0b21f
YXJpdHkocGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuIDEgKyBpbnRfb2ZfY3Vz
dG9tX2FyaXR5KHBhcmFtWzBdKSB8IDA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7Cisg
IH0KK30KKworZnVuY3Rpb24gYnByaW50X2ZtdChidWYsIGZtdCkgeworICB2YXIgX2ZtdCA9IGZt
dDsKKyAgdmFyIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgd2hpbGUodHJ1ZSkgeworICAg
IHZhciBpZ25fZmxhZyA9IF9pZ25fZmxhZzsKKyAgICB2YXIgZm10JDEgPSBfZm10OworICAgIGlm
ICh0eXBlb2YgZm10JDEgPT09ICJudW1iZXIiKSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoZm10JDEudGFnIHwgMCkgeworICAgICAg
ICBjYXNlIDAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3
KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAg
ICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiYyIgKi85OSk7CisgICAgICAgICAgICBf
aWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMF07Cisg
ICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAg
IGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9p
Z25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIo
YnVmLCAvKiAiQyIgKi82Nyk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7
CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8q
ICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxh
Zyk7CisgICAgICAgICAgICBicHJpbnRfcGFkZGluZyhidWYsIGZtdCQxWzBdKTsKKyAgICAgICAg
ICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJzIiAqLzExNSk7CisgICAgICAgICAgICBfaWdu
X2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25v
cmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBicHJpbnRfcGFkZGluZyhidWYs
IGZtdCQxWzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJTIiAqLzgz
KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9m
bXQgPSBmbXQkMVsxXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2Ug
NCA6IAorICAgICAgICAgICAgYnByaW50X2ludF9mbXQoYnVmLCBpZ25fZmxhZywgZm10JDFbMF0s
IGZtdCQxWzFdLCBmbXQkMVsyXSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAq
LzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbM107CisgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGJwcmludF9hbHRpbnRfZm10KGJ1
ZiwgaWduX2ZsYWcsIGZtdCQxWzBdLCBmbXQkMVsxXSwgZm10JDFbMl0sIC8qICJsIiAqLzEwOCk7
CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10
ID0gZm10JDFbM107CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDYg
OiAKKyAgICAgICAgICAgIGJwcmludF9hbHRpbnRfZm10KGJ1ZiwgaWduX2ZsYWcsIGZtdCQxWzBd
LCBmbXQkMVsxXSwgZm10JDFbMl0sIC8qICJuIiAqLzExMCk7CisgICAgICAgICAgICBfaWduX2Zs
YWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbM107CisgICAgICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIGJwcmlu
dF9hbHRpbnRfZm10KGJ1ZiwgaWduX2ZsYWcsIGZtdCQxWzBdLCBmbXQkMVsxXSwgZm10JDFbMl0s
IC8qICJMIiAqLzc2KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAg
ICAgICAgICAgIF9mbXQgPSBmbXQkMVszXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgYnByaW50X2Zsb2F0X2ZtdChidWYsIGlnbl9m
bGFnLCBmbXQkMVswXSwgZm10JDFbMV0sIGZtdCQxWzJdKTsKKyAgICAgICAgICAgIF9pZ25fZmxh
ZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVszXTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgYnVmZmVy
X2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnByaW50X2lnbm9yZWRf
ZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8q
ICJCIiAqLzY2KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAg
ICAgICAgIF9mbXQgPSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiUhIik7
CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwo
YnVmLCBmbXQkMVswXSk7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBicHJpbnRf
Y2hhcl9saXRlcmFsKGJ1ZiwgZm10JDFbMF0pOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzFd
OworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAg
ICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnBy
aW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAgIGJwcmludF9wYWRf
b3B0KGJ1ZiwgZm10JDFbMF0pOworICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyog
InsiICovMTIzKTsKKyAgICAgICAgICAgIGJwcmludF9mbXR0eShidWYsIGZtdCQxWzFdKTsKKyAg
ICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAg
IGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJ9IiAqLzEyNSk7CisgICAgICAgICAgICBfaWduX2Zs
YWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMl07CisgICAgICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICBidWZm
ZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3Jl
ZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOworICAgICAgICAgICAgYnByaW50X3BhZF9vcHQoYnVmLCBm
bXQkMVswXSk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiKCIgKi80MCk7
CisgICAgICAgICAgICBicHJpbnRfZm10dHkoYnVmLCBmbXQkMVsxXSk7CisgICAgICAgICAgICBi
dWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBidWZmZXJfYWRk
X2NoYXIoYnVmLCAvKiAiKSIgKi80MSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxz
ZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMl07CisgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIo
YnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1Ziwg
aWduX2ZsYWcpOworICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogImEiICovOTcp
OworICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAgX2Zt
dCA9IGZtdCQxWzBdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAx
NiA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAg
ICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAg
IGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJ0IiAqLzExNik7CisgICAgICAgICAgICBfaWduX2Zs
YWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBicHJp
bnRfc3RyaW5nX2xpdGVyYWwoYnVmLCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoZm10JDFbMF0p
KTsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsxXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJh
bChidWYsICJAeyIpOworICAgICAgICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsKGJ1Ziwgc3Ry
aW5nX29mX2Zvcm1hdHRpbmdfZ2VuKGZtdCQxWzBdKSk7CisgICAgICAgICAgICBfZm10ID0gZm10
JDFbMV07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDE5IDogCisg
ICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAg
ICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOworICAgICAgICAgICAgYnVmZmVy
X2FkZF9jaGFyKGJ1ZiwgLyogInIiICovMTE0KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8q
IGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRf
Y2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWco
YnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBicHJpbnRfcGFkX29wdChidWYsIGZtdCQxWzBd
KTsKKyAgICAgICAgICAgIGJwcmludF9jaGFyX3NldChidWYsIGZtdCQxWzFdKTsKKyAgICAgICAg
ICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsy
XTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMjEgOiAKKyAgICAg
ICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJw
cmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBidWZmZXJfYWRk
X2NoYXIoYnVmLCBjaGFyX29mX2NvdW50ZXIoZm10JDFbMF0pKTsKKyAgICAgICAgICAgIF9pZ25f
ZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsxXTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25v
cmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBicHJpbnRfc3RyaW5nX2xpdGVy
YWwoYnVmLCAiMGMiKTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAg
ICAgICAgICAgIF9mbXQgPSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAgIGNhc2UgMjMgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCA9IHBhcmFtX2Zvcm1hdF9v
Zl9pZ25vcmVkX2Zvcm1hdChmbXQkMVswXSwgZm10JDFbMV0pOworICAgICAgICAgICAgX2lnbl9m
bGFnID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICBfZm10ID0gbWF0Y2hbMF07CisgICAgICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgICBmb3Io
dmFyIF9pID0gMSAsX2lfZmluaXNoID0gaW50X29mX2N1c3RvbV9hcml0eShmbXQkMVswXSk7IF9p
IDw9IF9pX2ZpbmlzaDsgKytfaSl7CisgICAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYs
IC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGln
bl9mbGFnKTsKKyAgICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIj8iICovNjMp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOwor
ICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzJdOworICAgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBzdHJpbmdfb2Zf
Zm10KGZtdCkgeworICB2YXIgYnVmID0gLyogcmVjb3JkICovWworICAgIC8qIGluZCAqLzAsCisg
ICAgLyogYnl0ZXMgKi9uZXcgQXJyYXkoMTYpCisgIF07CisgIGJwcmludF9mbXQoYnVmLCBmbXQp
OworICByZXR1cm4gYnVmZmVyX2NvbnRlbnRzKGJ1Zik7Cit9CisKK2Z1bmN0aW9uIHN5bW0ocGFy
YW0pIHsKKyAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gLyog
RW5kX29mX2ZtdHR5ICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKHBhcmFtLnRhZyB8
IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxv
Y2suX18oMCwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBy
ZXR1cm4gLyogU3RyaW5nX3R5ICovQmxvY2suX18oMSwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAg
ICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50X3R5ICovQmxvY2suX18oMiwgW3N5
bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50
MzJfdHkgKi9CbG9jay5fXygzLCBbc3ltbShwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNCA6IAor
ICAgICAgICAgIHJldHVybiAvKiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbc3ltbShwYXJh
bVswXSldKTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiAvKiBJbnQ2NF90eSAq
L0Jsb2NrLl9fKDUsIFtzeW1tKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSA2IDogCisgICAgICAg
ICAgcmV0dXJuIC8qIEZsb2F0X3R5ICovQmxvY2suX18oNiwgW3N5bW0ocGFyYW1bMF0pXSk7Cisg
ICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcs
IFtzeW1tKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSA4IDogCisgICAgICAgICAgcmV0dXJuIC8q
IEZvcm1hdF9hcmdfdHkgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgIHBhcmFt
WzBdLAorICAgICAgICAgICAgICAgICAgICBzeW1tKHBhcmFtWzFdKQorICAgICAgICAgICAgICAg
ICAgXSk7CisgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0X3N1YnN0
X3R5ICovQmxvY2suX18oOSwgWworICAgICAgICAgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFyYW1bMF0sCisgICAgICAgICAgICAgICAgICAgIHN5bW0ocGFyYW1b
Ml0pCisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICBy
ZXR1cm4gLyogQWxwaGFfdHkgKi9CbG9jay5fXygxMCwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAg
ICBjYXNlIDExIDogCisgICAgICAgICAgcmV0dXJuIC8qIFRoZXRhX3R5ICovQmxvY2suX18oMTEs
IFtzeW1tKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHJldHVybiAv
KiBBbnlfdHkgKi9CbG9jay5fXygxMiwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEz
IDogCisgICAgICAgICAgcmV0dXJuIC8qIFJlYWRlcl90eSAqL0Jsb2NrLl9fKDEzLCBbc3ltbShw
YXJhbVswXSldKTsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICByZXR1cm4gLyogSWdub3Jl
ZF9yZWFkZXJfdHkgKi9CbG9jay5fXygxNCwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICAKKyAg
ICB9CisgIH0KK30KKworZnVuY3Rpb24gZm10dHlfcmVsX2RldChwYXJhbSkgeworICBpZiAodHlw
ZW9mIHBhcmFtID09PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
cmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwg
Ki8wOworICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgc3dp
dGNoIChwYXJhbS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICB2YXIgbWF0
Y2ggPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKKyAgICAgICAgICB2YXIgYWYgPSBtYXRjaFsx
XTsKKyAgICAgICAgICB2YXIgZmEgPSBtYXRjaFswXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIEN1cnJ5Ll8xKGZhLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmLCAvKiBSZWZsICov
MCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBtYXRjaFsyXSwKKyAgICAgICAgICAgICAgICAg
IG1hdGNoWzNdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
IHZhciBtYXRjaCQxID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFm
JDEgPSBtYXRjaCQxWzFdOworICAgICAgICAgIHZhciBmYSQxID0gbWF0Y2gkMVswXTsKKyAgICAg
ICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGZhJDEsIC8qIFJlZmwgKi8wKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3Vy
cnkuXzEoYWYkMSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyog
UmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gk
MVsyXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDFbM10KKyAgICAgICAgICAgICAgICBdOwor
ICAgICAgY2FzZSAyIDogCisgICAgICAgICAgdmFyIG1hdGNoJDIgPSBmbXR0eV9yZWxfZGV0KHBh
cmFtWzBdKTsKKyAgICAgICAgICB2YXIgYWYkMiA9IG1hdGNoJDJbMV07CisgICAgICAgICAgdmFy
IGZhJDIgPSBtYXRjaCQyWzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEo
ZmEkMiwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAq
LzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQyLCAvKiBSZWZsICovMCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICBtYXRjaCQyWzJdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gk
MlszXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIg
bWF0Y2gkMyA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAgICAgICAgIHZhciBhZiQzID0g
bWF0Y2gkM1sxXTsKKyAgICAgICAgICB2YXIgZmEkMyA9IG1hdGNoJDNbMF07CisgICAgICAgICAg
cmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQzLCAvKiBSZWZsICovMCk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8x
KGFmJDMsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwg
Ki8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDNbMl0s
CisgICAgICAgICAgICAgICAgICBtYXRjaCQzWzNdCisgICAgICAgICAgICAgICAgXTsKKyAgICAg
IGNhc2UgNCA6IAorICAgICAgICAgIHZhciBtYXRjaCQ0ID0gZm10dHlfcmVsX2RldChwYXJhbVsw
XSk7CisgICAgICAgICAgdmFyIGFmJDQgPSBtYXRjaCQ0WzFdOworICAgICAgICAgIHZhciBmYSQ0
ID0gbWF0Y2gkNFswXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGZhJDQs
IC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwor
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkNCwgLyogUmVmbCAqLzApOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgbWF0Y2gkNFsyXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDRbM10K
KyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIG1hdGNo
JDUgPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKKyAgICAgICAgICB2YXIgYWYkNSA9IG1hdGNo
JDVbMV07CisgICAgICAgICAgdmFyIGZhJDUgPSBtYXRjaCQ1WzBdOworICAgICAgICAgIHJldHVy
biAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgQ3VycnkuXzEoZmEkNSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQ1
LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsK
KyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQ1WzJdLAorICAg
ICAgICAgICAgICAgICAgbWF0Y2gkNVszXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNl
IDYgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkNiA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOwor
ICAgICAgICAgIHZhciBhZiQ2ID0gbWF0Y2gkNlsxXTsKKyAgICAgICAgICB2YXIgZmEkNiA9IG1h
dGNoJDZbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQ2LCAvKiBS
ZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDYsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgIG1hdGNoJDZbMl0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQ2WzNdCisgICAg
ICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHZhciBtYXRjaCQ3ID0g
Zm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDcgPSBtYXRjaCQ3WzFd
OworICAgICAgICAgIHZhciBmYSQ3ID0gbWF0Y2gkN1swXTsKKyAgICAgICAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgIEN1cnJ5Ll8xKGZhJDcsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkNywgLyog
UmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkN1syXSwKKyAgICAgICAg
ICAgICAgICAgIG1hdGNoJDdbM10KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSA4IDog
CisgICAgICAgICAgdmFyIG1hdGNoJDggPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzFdKTsKKyAgICAg
ICAgICB2YXIgYWYkOCA9IG1hdGNoJDhbMV07CisgICAgICAgICAgdmFyIGZhJDggPSBtYXRjaCQ4
WzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkOCwgLyogUmVmbCAq
LzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICBDdXJyeS5fMShhZiQ4LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICBtYXRjaCQ4WzJdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkOFszXQorICAgICAgICAg
ICAgICAgIF07CisgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkOSA9IGZtdHR5
X3JlbF9kZXQocGFyYW1bMl0pOworICAgICAgICAgIHZhciBkZSA9IG1hdGNoJDlbM107CisgICAg
ICAgICAgdmFyIGVkID0gbWF0Y2gkOVsyXTsKKyAgICAgICAgICB2YXIgYWYkOSA9IG1hdGNoJDlb
MV07CisgICAgICAgICAgdmFyIGZhJDkgPSBtYXRjaCQ5WzBdOworICAgICAgICAgIHZhciB0eSA9
IHRyYW5zKHN5bW0ocGFyYW1bMF0pLCBwYXJhbVsxXSk7CisgICAgICAgICAgdmFyIG1hdGNoJDEw
ID0gZm10dHlfcmVsX2RldCh0eSk7CisgICAgICAgICAgdmFyIGpkID0gbWF0Y2gkMTBbM107Cisg
ICAgICAgICAgdmFyIGRqID0gbWF0Y2gkMTBbMl07CisgICAgICAgICAgdmFyIGdhID0gbWF0Y2gk
MTBbMV07CisgICAgICAgICAgdmFyIGFnID0gbWF0Y2gkMTBbMF07CisgICAgICAgICAgcmV0dXJu
IC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICBDdXJyeS5fMShmYSQ5LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAg
ICAgIEN1cnJ5Ll8xKGFnLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGdhLCAvKiBSZWZsICov
MCk7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDksIC8qIFJlZmwgKi8wKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
Q3VycnkuXzEoZWQsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEo
ZGosIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8w
OworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoamQsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAg
ICAgICAgICAgICAgQ3VycnkuXzEoZGUsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIF07CisgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgdmFyIG1hdGNoJDExID0gZm10dHlf
cmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDEwID0gbWF0Y2gkMTFbMV07Cisg
ICAgICAgICAgdmFyIGZhJDEwID0gbWF0Y2gkMTFbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICBDdXJyeS5fMShmYSQxMCwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQxMCwgLyog
UmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMTFbMl0sCisgICAgICAg
ICAgICAgICAgICBtYXRjaCQxMVszXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDEx
IDogCisgICAgICAgICAgdmFyIG1hdGNoJDEyID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7Cisg
ICAgICAgICAgdmFyIGFmJDExID0gbWF0Y2gkMTJbMV07CisgICAgICAgICAgdmFyIGZhJDExID0g
bWF0Y2gkMTJbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQxMSwg
LyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Cisg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQxMSwgLyogUmVmbCAqLzApOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgbWF0Y2gkMTJbMl0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQxMlsz
XQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgdmFyIG1h
dGNoJDEzID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDEyID0g
bWF0Y2gkMTNbMV07CisgICAgICAgICAgdmFyIGZhJDEyID0gbWF0Y2gkMTNbMF07CisgICAgICAg
ICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQxMiwgLyogUmVmbCAqLzApOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJy
eS5fMShhZiQxMiwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyog
UmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gk
MTNbMl0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQxM1szXQorICAgICAgICAgICAgICAgIF07
CisgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgdmFyIG1hdGNoJDE0ID0gZm10dHlfcmVsX2Rl
dChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGRlJDEgPSBtYXRjaCQxNFszXTsKKyAgICAgICAg
ICB2YXIgZWQkMSA9IG1hdGNoJDE0WzJdOworICAgICAgICAgIHZhciBhZiQxMyA9IG1hdGNoJDE0
WzFdOworICAgICAgICAgIHZhciBmYSQxMyA9IG1hdGNoJDE0WzBdOworICAgICAgICAgIHJldHVy
biAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgQ3VycnkuXzEoZmEkMTMsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYk
MTMsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8w
OworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZWQkMSwgLyogUmVmbCAqLzApOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJy
eS5fMShkZSQxLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBS
ZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdOworICAgICAg
Y2FzZSAxNCA6IAorICAgICAgICAgIHZhciBtYXRjaCQxNSA9IGZtdHR5X3JlbF9kZXQocGFyYW1b
MF0pOworICAgICAgICAgIHZhciBkZSQyID0gbWF0Y2gkMTVbM107CisgICAgICAgICAgdmFyIGVk
JDIgPSBtYXRjaCQxNVsyXTsKKyAgICAgICAgICB2YXIgYWYkMTQgPSBtYXRjaCQxNVsxXTsKKyAg
ICAgICAgICB2YXIgZmEkMTQgPSBtYXRjaCQxNVswXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIEN1cnJ5Ll8xKGZhJDE0LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDE0LCAvKiBS
ZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKGVkJDIsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZGUk
MiwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7
CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXTsKKyAgICAgIAorICAgIH0K
KyAgfQorfQorCitmdW5jdGlvbiB0cmFucyh0eTEsIHR5MikgeworICB2YXIgZXhpdCA9IDA7Cisg
IGlmICh0eXBlb2YgdHkxID09PSAibnVtYmVyIikgeworICAgIGlmICh0eXBlb2YgdHkyID09PSAi
bnVtYmVyIikgeworICAgICAgaWYgKHR5MikgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAg
ICAgICAgODE2LAorICAgICAgICAgICAgICAgIDIzCisgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgIF07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIEVuZF9vZl9m
bXR0eSAqLzA7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoICh0eTIu
dGFnIHwgMCkgeworICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIGV4aXQgPSA2OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgZXhpdCA9IDc7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgZXhp
dCA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAg
ICAgZXhpdCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMiA6IAorICAg
ICAgICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMyA6
IAorICAgICAgICAgICAgZXhpdCA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAxNCA6IAorICAgICAgICAgICAgZXhpdCA9IDU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICA4
MTYsCisgICAgICAgICAgICAgICAgICAyMworICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgXTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoICh0eTEudGFn
IHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJu
dW1iZXIiKSB7CisgICAgICAgICAgICBleGl0ID0gODsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAg
IGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIENoYXJfdHkgKi9CbG9jay5f
XygwLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAor
ICAgICAgICAgICAgICAgICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAg
ICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBl
eGl0ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEz
IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsK
KyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAg
ICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4Owor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRh
ZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogU3RyaW5nX3R5ICovQmxvY2suX18oMSwgW3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOwor
ICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA2OworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAg
ICAgICAgICAgZXhpdCA9IDc7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAg
ZXhpdCA9IDI7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAx
MiA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDU7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAyIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7
CisgICAgICAgICAgICBleGl0ID0gODsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMiA6
IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFt0cmFu
cyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAg
ICAgICAgICBleGl0ID0gNjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA3OworICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgICAgIGV4
aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTEg
OiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOwor
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAg
ICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1OworICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAg
IH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIGlmICh0eXBl
b2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgZXhpdCA9IDg7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgewor
ICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBJbnQz
Ml90eSAqL0Jsb2NrLl9fKDMsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAg
ICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNjsKKyAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgIGV4
aXQgPSA3OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTAg
OiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOwor
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAg
ICAgICAgICAgICAgIGV4aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAg
ICAgIGV4aXQgPSA1OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
NCA6IAorICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAg
ICAgZXhpdCA9IDg7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
c3dpdGNoICh0eTIudGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbdHJhbnModHkx
WzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAg
ICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0g
MTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDogCisg
ICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAg
ICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5
MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAg
ICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50NjRfdHkg
Ki9CbG9jay5fXyg1LCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNh
c2UgOCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0g
NzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisg
ICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAg
ICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBl
eGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDYgOiAK
KyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4
aXQgPSA4OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRj
aCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogRmxvYXRfdHkgKi9CbG9jay5fXyg2LCBbdHJhbnModHkxWzBdLCB0eTJb
MF0pXSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9
IDY7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSA5IDogCisg
ICAgICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAg
ICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBl
eGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0
IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51
bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAg
Y2FzZSA3IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9f
KDcsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAgY2FzZSA4IDogCisg
ICAgICAgICAgICAgICAgICBleGl0ID0gNjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA3OworICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4
aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMg
OiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1Owor
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQor
ICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAg
IGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgWworICAg
ICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisg
ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3Jt
YXQubWwiLAorICAgICAgICAgICAgICAgICAgICA4MDIsCisgICAgICAgICAgICAgICAgICAgIDI2
CisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAg
ICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9h
cmdfdHkgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnMo
dHkxWzBdLCB0eTJbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zKHR5MVsx
XSwgdHkyWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAg
Y2FzZSAxMCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgZXhp
dCA9IDI7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMiA6
IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7Cisg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAg
ICAgICAgICAgICAgZXhpdCA9IDU7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1h
dC5tbCIsCisgICAgICAgICAgICAgICAgICAgICAgICA4MDIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAyNgorICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDkgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAg
ICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAi
Y2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgODEyLAorICAgICAg
ICAgICAgICAgICAgICAyOAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIu
dGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgIGV4
aXQgPSA2OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgOSA6
IAorICAgICAgICAgICAgICAgICAgdmFyIHR5ID0gdHJhbnMoc3ltbSh0eTFbMV0pLCB0eTJbMF0p
OworICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gZm10dHlfcmVsX2RldCh0eSk7CisgICAg
ICAgICAgICAgICAgICBDdXJyeS5fMShtYXRjaFsxXSwgLyogUmVmbCAqLzApOworICAgICAgICAg
ICAgICAgICAgQ3VycnkuXzEobWF0Y2hbM10sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBGb3JtYXRfc3Vic3RfdHkgKi9CbG9jay5fXyg5LCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHkxWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
MlsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFucyh0eTFbMl0sIHR5MlsyXSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAg
ICAgICAgICAgIGV4aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAg
IGV4aXQgPSA1OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgODEyLAorICAgICAgICAgICAgICAgICAgICAgICAgMjgKKyAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMCA6IAorICAg
ICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cg
WworICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1
cmUsCisgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJu
YWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgICA3ODAsCisgICAgICAgICAgICAgICAg
ICAgIDIxCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg
ICB9CisgICAgICAgICAgZWxzZSBpZiAodHkyLnRhZyA9PT0gMTApIHsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBBbHBoYV90eSAqL0Jsb2NrLl9fKDEwLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgWworICAg
ICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisg
ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3Jt
YXQubWwiLAorICAgICAgICAgICAgICAgICAgICA3ODAsCisgICAgICAgICAgICAgICAgICAgIDIx
CisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDExIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0
eTIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAg
ICAgICAgICAgICAgICAgIDc4NCwKKyAgICAgICAgICAgICAgICAgICAgMjEKKyAgICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2Fz
ZSAxMCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIFRoZXRhX3R5ICovQmxvY2suX18oMTEsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAg
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5h
bEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAgICAgICA3ODQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAyMQorICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIDEyIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAgIDc4OCwK
KyAgICAgICAgICAgICAgICAgICAgMTkKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRj
aCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEFueV90eSAqL0Jsb2NrLl9fKDEyLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7Cisg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAg
ICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJu
YWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgNzg4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgMTkKKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAxMyA6IAorICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgewor
ICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgICA3OTIs
CisgICAgICAgICAgICAgICAgICAgIDIyCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0
Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4
aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMg
OiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywg
W3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIDc5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDIyCisgICAgICAgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAg
ICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICBpZiAo
dHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1s
IiwKKyAgICAgICAgICAgICAgICAgICAgNzk3LAorICAgICAgICAgICAgICAgICAgICAzMAorICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgeworICAgICAgICAg
ICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAg
ICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0g
NDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDogCisg
ICAgICAgICAgICAgICAgICByZXR1cm4gLyogSWdub3JlZF9yZWFkZXJfdHkgKi9CbG9jay5fXygx
NCwgW3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIDc5NywKKyAgICAgICAgICAgICAgICAgICAgICAgIDMwCisgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAgfQorICBzd2l0Y2gg
KGV4aXQpIHsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAg
IDc4MSwKKyAgICAgICAgICAgICAgICAyMQorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBd
OworICAgIGNhc2UgMiA6IAorICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgNzg1LAor
ICAgICAgICAgICAgICAgIDIxCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAg
Y2FzZSAzIDogCisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICA3ODksCisgICAgICAg
ICAgICAgICAgMTkKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXTsKKyAgICBjYXNlIDQg
OiAKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjYW1s
aW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgIDc5MywKKyAgICAgICAgICAgICAg
ICAyMgorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgIGNhc2UgNSA6IAorICAg
ICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2Vy
dF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5h
bEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgNzk4LAorICAgICAgICAgICAgICAgIDMwCisg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgY2FzZSA2IDogCisgICAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1
cmUsCisgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0
Lm1sIiwKKyAgICAgICAgICAgICAgICA4MDMsCisgICAgICAgICAgICAgICAgMjYKKyAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgXTsKKyAgICBjYXNlIDcgOiAKKyAgICAgICAgdGhyb3cgWwor
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAor
ICAgICAgICAgICAgICAgIDgxMywKKyAgICAgICAgICAgICAgICAyOAorICAgICAgICAgICAgICBd
CisgICAgICAgICAgICBdOworICAgIGNhc2UgOCA6IAorICAgICAgICB0aHJvdyBbCisgICAgICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAg
ICAgICAgICAgODE3LAorICAgICAgICAgICAgICAgIDIzCisgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgIF07CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gZm10dHlfb2ZfZm9ybWF0dGluZ19n
ZW4oZm9ybWF0dGluZ19nZW4pIHsKKyAgcmV0dXJuIGZtdHR5X29mX2ZtdChmb3JtYXR0aW5nX2dl
blswXVswXSk7Cit9CisKK2Z1bmN0aW9uIGZtdHR5X29mX2ZtdChfZm10dHkpIHsKKyAgd2hpbGUo
dHJ1ZSkgeworICAgIHZhciBmbXR0eSA9IF9mbXR0eTsKKyAgICBpZiAodHlwZW9mIGZtdHR5ID09
PSAibnVtYmVyIikgeworICAgICAgcmV0dXJuIC8qIEVuZF9vZl9mbXR0eSAqLzA7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgc3dpdGNoIChmbXR0eS50YWcgfCAwKSB7CisgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9wYWRk
aW5nX2ZtdHR5KGZtdHR5WzBdLCAvKiBTdHJpbmdfdHkgKi9CbG9jay5fXygxLCBbZm10dHlfb2Zf
Zm10KGZtdHR5WzFdKV0pKTsKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICB2YXIgdHlf
cmVzdCA9IGZtdHR5X29mX2ZtdChmbXR0eVszXSk7CisgICAgICAgICAgICB2YXIgcHJlY190eSA9
IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eShmbXR0eVsyXSwgLyogSW50X3R5ICovQmxvY2suX18o
MiwgW3R5X3Jlc3RdKSk7CisgICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfcGFkZGluZ19mbXR0
eShmbXR0eVsxXSwgcHJlY190eSk7CisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgdmFy
IHR5X3Jlc3QkMSA9IGZtdHR5X29mX2ZtdChmbXR0eVszXSk7CisgICAgICAgICAgICB2YXIgcHJl
Y190eSQxID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5KGZtdHR5WzJdLCAvKiBJbnQzMl90eSAq
L0Jsb2NrLl9fKDMsIFt0eV9yZXN0JDFdKSk7CisgICAgICAgICAgICByZXR1cm4gZm10dHlfb2Zf
cGFkZGluZ19mbXR0eShmbXR0eVsxXSwgcHJlY190eSQxKTsKKyAgICAgICAgY2FzZSA2IDogCisg
ICAgICAgICAgICB2YXIgdHlfcmVzdCQyID0gZm10dHlfb2ZfZm10KGZtdHR5WzNdKTsKKyAgICAg
ICAgICAgIHZhciBwcmVjX3R5JDIgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkoZm10dHlbMl0s
IC8qIE5hdGl2ZWludF90eSAqL0Jsb2NrLl9fKDQsIFt0eV9yZXN0JDJdKSk7CisgICAgICAgICAg
ICByZXR1cm4gZm10dHlfb2ZfcGFkZGluZ19mbXR0eShmbXR0eVsxXSwgcHJlY190eSQyKTsKKyAg
ICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICB2YXIgdHlfcmVzdCQzID0gZm10dHlfb2ZfZm10
KGZtdHR5WzNdKTsKKyAgICAgICAgICAgIHZhciBwcmVjX3R5JDMgPSBmbXR0eV9vZl9wcmVjaXNp
b25fZm10dHkoZm10dHlbMl0sIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW3R5X3Jlc3QkM10p
KTsKKyAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5KGZtdHR5WzFdLCBw
cmVjX3R5JDMpOworICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIHZhciB0eV9yZXN0JDQg
PSBmbXR0eV9vZl9mbXQoZm10dHlbM10pOworICAgICAgICAgICAgdmFyIHByZWNfdHkkNCA9IGZt
dHR5X29mX3ByZWNpc2lvbl9mbXR0eShmbXR0eVsyXSwgLyogRmxvYXRfdHkgKi9CbG9jay5fXyg2
LCBbdHlfcmVzdCQ0XSkpOworICAgICAgICAgICAgcmV0dXJuIGZtdHR5X29mX3BhZGRpbmdfZm10
dHkoZm10dHlbMV0sIHByZWNfdHkkNCk7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAg
cmV0dXJuIC8qIEJvb2xfdHkgKi9CbG9jay5fXyg3LCBbZm10dHlfb2ZfZm10KGZtdHR5WzBdKV0p
OworICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAg
IHJldHVybiAvKiBGb3JtYXRfYXJnX3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAg
ICAgICAgIGZtdHR5WzFdLAorICAgICAgICAgICAgICAgICAgICAgIGZtdHR5X29mX2ZtdChmbXR0
eVsyXSkKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgIGNhc2UgMTQgOiAKKyAgICAg
ICAgICAgIHZhciB0eSA9IGZtdHR5WzFdOworICAgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9z
dWJzdF90eSAqL0Jsb2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAgICAgICB0eSwKKyAgICAg
ICAgICAgICAgICAgICAgICB0eSwKKyAgICAgICAgICAgICAgICAgICAgICBmbXR0eV9vZl9mbXQo
Zm10dHlbMl0pCisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICBjYXNlIDE1IDogCisg
ICAgICAgICAgICByZXR1cm4gLyogQWxwaGFfdHkgKi9CbG9jay5fXygxMCwgW2ZtdHR5X29mX2Zt
dChmbXR0eVswXSldKTsKKyAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgcmV0dXJuIC8q
IFRoZXRhX3R5ICovQmxvY2suX18oMTEsIFtmbXR0eV9vZl9mbXQoZm10dHlbMF0pXSk7CisgICAg
ICAgIGNhc2UgMTEgOiAKKyAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICBjYXNlIDE3IDogCisg
ICAgICAgICAgICBfZm10dHkgPSBmbXR0eVsxXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIHJldHVybiBDYW1saW50ZXJuYWxGb3Jt
YXRCYXNpY3MuY29uY2F0X2ZtdHR5KGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuKGZtdHR5WzBdKSwg
Zm10dHlfb2ZfZm10KGZtdHR5WzFdKSk7CisgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAg
IHJldHVybiAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW2ZtdHR5X29mX2ZtdChmbXR0eVsw
XSldKTsKKyAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFN0cmluZ190
eSAqL0Jsb2NrLl9fKDEsIFtmbXR0eV9vZl9mbXQoZm10dHlbMl0pXSk7CisgICAgICAgIGNhc2Ug
MjEgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbZm10dHlf
b2ZfZm10KGZtdHR5WzFdKV0pOworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgY2FzZSAxIDog
CisgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxv
Y2suX18oMCwgW2ZtdHR5X29mX2ZtdChmbXR0eVswXSldKTsKKyAgICAgICAgY2FzZSAyMyA6IAor
ICAgICAgICAgICAgdmFyIGlnbiA9IGZtdHR5WzBdOworICAgICAgICAgICAgdmFyIGZtdCA9IGZt
dHR5WzFdOworICAgICAgICAgICAgaWYgKHR5cGVvZiBpZ24gPT09ICJudW1iZXIiKSB7CisgICAg
ICAgICAgICAgIHN3aXRjaCAoaWduKSB7CisgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAvKiBJZ25vcmVkX3JlYWRlcl90eSAqL0Jsb2NrLl9fKDE0
LCBbZm10dHlfb2ZfZm10KGZtdCldKTsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAg
ICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZtdHR5X29mX2Zt
dChmbXQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgc3dpdGNoIChpZ24udGFnIHwgMCkg
eworICAgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Q2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXR0eShpZ25bMV0sIGZtdHR5X29mX2Zt
dChmbXQpKTsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDMg
OiAKKyAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDUgOiAK
KyAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAg
ICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9mbXQoZm10KTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBjYXNlIDI0IDogCisg
ICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfY3VzdG9tKGZtdHR5WzBdLCBmbXR0eV9vZl9mbXQo
Zm10dHlbMl0pKTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlv
biBmbXR0eV9vZl9jdXN0b20oYXJpdHksIGZtdHR5KSB7CisgIGlmIChhcml0eSkgeworICAgIHJl
dHVybiAvKiBBbnlfdHkgKi9CbG9jay5fXygxMiwgW2ZtdHR5X29mX2N1c3RvbShhcml0eVswXSwg
Zm10dHkpXSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZtdHR5OworICB9Cit9CisKK2Z1
bmN0aW9uIGZtdHR5X29mX3BhZGRpbmdfZm10dHkocGFkLCBmbXR0eSkgeworICBpZiAodHlwZW9m
IHBhZCA9PT0gIm51bWJlciIgfHwgIXBhZC50YWcpIHsKKyAgICByZXR1cm4gZm10dHk7CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFtmbXR0eV0pOwor
ICB9Cit9CisKK2Z1bmN0aW9uIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eShwcmVjLCBmbXR0eSkg
eworICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiICYmIHByZWMgIT09IDApIHsKKyAgICBy
ZXR1cm4gLyogSW50X3R5ICovQmxvY2suX18oMiwgW2ZtdHR5XSk7CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIGZtdHR5OworICB9Cit9CisKK3ZhciBUeXBlX21pc21hdGNoID0gQ2FtbF9leGNl
cHRpb25zLmNyZWF0ZSgiQ2FtbGludGVybmFsRm9ybWF0LlR5cGVfbWlzbWF0Y2giKTsKKworZnVu
Y3Rpb24gdHlwZV9wYWRkaW5nKHBhZCwgZm10dHkpIHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09ICJu
dW1iZXIiKSB7CisgICAgcmV0dXJuIC8qIFBhZGRpbmdfZm10dHlfRUJCICovWworICAgICAgICAg
ICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICBmbXR0eQorICAgICAgICAgIF07Cisg
IH0KKyAgZWxzZSBpZiAocGFkLnRhZykgeworICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1i
ZXIiKSB7CisgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgIH0KKyAgICBlbHNlIGlmIChm
bXR0eS50YWcgPT09IDIpIHsKKyAgICAgIHJldHVybiAvKiBQYWRkaW5nX2ZtdHR5X0VCQiAqL1sK
KyAgICAgICAgICAgICAgLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbcGFkWzBdXSksCisg
ICAgICAgICAgICAgIGZtdHR5WzBdCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiBQYWRkaW5nX2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExpdF9wYWRkaW5n
ICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgIHBhZFswXSwKKyAgICAgICAgICAgICAg
ICBwYWRbMV0KKyAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICBmbXR0eQorICAgICAgICAg
IF07CisgIH0KK30KKworZnVuY3Rpb24gdHlwZV9wYWRwcmVjKHBhZCwgcHJlYywgZm10dHkpIHsK
KyAgdmFyIG1hdGNoID0gdHlwZV9wYWRkaW5nKHBhZCwgZm10dHkpOworICBpZiAodHlwZW9mIHBy
ZWMgPT09ICJudW1iZXIiKSB7CisgICAgaWYgKHByZWMgIT09IDApIHsKKyAgICAgIHZhciBtYXRj
aCQxID0gbWF0Y2hbMV07CisgICAgICBpZiAodHlwZW9mIG1hdGNoJDEgPT09ICJudW1iZXIiKSB7
CisgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICB9CisgICAgICBlbHNlIGlmICht
YXRjaCQxLnRhZyA9PT0gMikgeworICAgICAgICByZXR1cm4gLyogUGFkcHJlY19mbXR0eV9FQkIg
Ki9bCisgICAgICAgICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgICAgLyogQXJnX3By
ZWNpc2lvbiAqLzEsCisgICAgICAgICAgICAgICAgbWF0Y2gkMVswXQorICAgICAgICAgICAgICBd
OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Cisg
ICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIFBhZHByZWNfZm10dHlf
RUJCICovWworICAgICAgICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgICAgICAgLyogTm9fcHJl
Y2lzaW9uICovMCwKKyAgICAgICAgICAgICAgbWF0Y2hbMV0KKyAgICAgICAgICAgIF07CisgICAg
fQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdHR5X0VCQiAqL1sKKyAg
ICAgICAgICAgIG1hdGNoWzBdLAorICAgICAgICAgICAgLyogTGl0X3ByZWNpc2lvbiAqL1twcmVj
WzBdXSwKKyAgICAgICAgICAgIG1hdGNoWzFdCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5j
dGlvbiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lKGlnbiwgZm10LCBmbXR0eSkgeworICB2YXIgbWF0
Y2ggPSB0eXBlX2Zvcm1hdF9nZW4oZm10LCBmbXR0eSk7CisgIHJldHVybiAvKiBGbXRfZm10dHlf
RUJCICovWworICAgICAgICAgIC8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAg
ICAgICAgICAgICBpZ24sCisgICAgICAgICAgICAgIG1hdGNoWzBdCisgICAgICAgICAgICBdKSwK
KyAgICAgICAgICBtYXRjaFsxXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0eXBlX2Zvcm1h
dF9nZW4oZm10LCBmbXR0eSkgeworICBpZiAodHlwZW9mIGZtdCA9PT0gIm51bWJlciIpIHsKKyAg
ICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIEVuZF9vZl9mb3Jt
YXQgKi8wLAorICAgICAgICAgICAgZm10dHkKKyAgICAgICAgICBdOworICB9CisgIGVsc2Ugewor
ICAgIHN3aXRjaCAoZm10LnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIGlm
ICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21p
c21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcpIHsKKyAg
ICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgdmFyIG1hdGNoID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10
dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAg
ICAgICAgICAgICAgIC8qIENoYXIgKi9CbG9jay5fXygwLCBbbWF0Y2hbMF1dKSwKKyAgICAgICAg
ICAgICAgICAgICAgbWF0Y2hbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBm
bXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZykgeworICAgICAgICAgICAg
dGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICB2YXIgbWF0Y2gkMSA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5WzBdKTsK
KyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAg
ICAgICAvKiBDYW1sX2NoYXIgKi9CbG9jay5fXygxLCBbbWF0Y2gkMVswXV0pLAorICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQxWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0K
KyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHZhciBtYXRjaCQy
ID0gdHlwZV9wYWRkaW5nKGZtdFswXSwgZm10dHkpOworICAgICAgICAgIHZhciBtYXRjaCQzID0g
bWF0Y2gkMlsxXTsKKyAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDMgPT09ICJudW1iZXIiKSB7
CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAg
ICBlbHNlIGlmIChtYXRjaCQzLnRhZyA9PT0gMSkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDQg
PSB0eXBlX2Zvcm1hdF9nZW4oZm10WzFdLCBtYXRjaCQzWzBdKTsKKyAgICAgICAgICAgIHJldHVy
biAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmcgKi9C
bG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyWzBdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0Y2gkNFswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAor
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0WzFdCisgICAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0
Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAg
ICAgICAgdmFyIG1hdGNoJDUgPSB0eXBlX3BhZGRpbmcoZm10WzBdLCBmbXR0eSk7CisgICAgICAg
ICAgdmFyIG1hdGNoJDYgPSBtYXRjaCQ1WzFdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gk
NiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAg
ICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDYudGFnID09PSAxKSB7CisgICAgICAg
ICAgICB2YXIgbWF0Y2gkNyA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMV0sIG1hdGNoJDZbMF0pOwor
ICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAg
ICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkNVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDdbMF0KKyAgICAg
ICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkN1sxXQorICAg
ICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHZhciBtYXRjaCQ4ID0gdHlwZV9wYWRwcmVjKGZt
dFsxXSwgZm10WzJdLCBmbXR0eSk7CisgICAgICAgICAgdmFyIG1hdGNoJDkgPSBtYXRjaCQ4WzJd
OworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkOSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAg
ICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYg
KG1hdGNoJDkudGFnID09PSAyKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSB0eXBlX2Zv
cm1hdF9nZW4oZm10WzNdLCBtYXRjaCQ5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRf
Zm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBb
CisgICAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaCQ4WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkOFsxXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoJDEwWzBdCisgICAgICAgICAgICAgICAgICAgICAgXSks
CisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEwWzFdCisgICAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlz
bWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisg
ICAgICAgICAgdmFyIG1hdGNoJDExID0gdHlwZV9wYWRwcmVjKGZtdFsxXSwgZm10WzJdLCBmbXR0
eSk7CisgICAgICAgICAgdmFyIG1hdGNoJDEyID0gbWF0Y2gkMTFbMl07CisgICAgICAgICAgaWYg
KHR5cGVvZiBtYXRjaCQxMiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVf
bWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDEyLnRhZyA9
PT0gMykgeworICAgICAgICAgICAgdmFyIG1hdGNoJDEzID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsz
XSwgbWF0Y2gkMTJbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9b
CisgICAgICAgICAgICAgICAgICAgIC8qIEludDMyICovQmxvY2suX18oNSwgWworICAgICAgICAg
ICAgICAgICAgICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTFb
MF0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMVsxXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoJDEzWzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDEzWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAg
dmFyIG1hdGNoJDE0ID0gdHlwZV9wYWRwcmVjKGZtdFsxXSwgZm10WzJdLCBmbXR0eSk7CisgICAg
ICAgICAgdmFyIG1hdGNoJDE1ID0gbWF0Y2gkMTRbMl07CisgICAgICAgICAgaWYgKHR5cGVvZiBt
YXRjaCQxNSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDE1LnRhZyA9PT0gNCkgewor
ICAgICAgICAgICAgdmFyIG1hdGNoJDE2ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFszXSwgbWF0Y2gk
MTVbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAg
ICAgICAgICAgICAgIC8qIE5hdGl2ZWludCAqL0Jsb2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZtdFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE0WzBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTRbMV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBtYXRjaCQxNlswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQxNlsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHZhciBt
YXRjaCQxNyA9IHR5cGVfcGFkcHJlYyhmbXRbMV0sIGZtdFsyXSwgZm10dHkpOworICAgICAgICAg
IHZhciBtYXRjaCQxOCA9IG1hdGNoJDE3WzJdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gk
MTggPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChtYXRjaCQxOC50YWcgPT09IDUpIHsKKyAgICAg
ICAgICAgIHZhciBtYXRjaCQxOSA9IHR5cGVfZm9ybWF0X2dlbihmbXRbM10sIG1hdGNoJDE4WzBd
KTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAg
ICAgICAgICAvKiBJbnQ2NCAqL0Jsb2NrLl9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZtdFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE3WzBdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkMTdbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aCQxOVswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBt
YXRjaCQxOVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIHZhciBtYXRjaCQyMCA9
IHR5cGVfcGFkcHJlYyhmbXRbMV0sIGZtdFsyXSwgZm10dHkpOworICAgICAgICAgIHZhciBtYXRj
aCQyMSA9IG1hdGNoJDIwWzJdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkMjEgPT09ICJu
dW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIGlmIChtYXRjaCQyMS50YWcgPT09IDYpIHsKKyAgICAgICAgICAgIHZh
ciBtYXRjaCQyMiA9IHR5cGVfZm9ybWF0X2dlbihmbXRbM10sIG1hdGNoJDIxWzBdKTsKKyAgICAg
ICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAv
KiBGbG9hdCAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFswXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDIwWzBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkMjBbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMlswXQor
ICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMlsx
XQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgOSA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJu
dW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDcpIHsKKyAgICAgICAgICAgIHZhciBt
YXRjaCQyMyA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5WzBdKTsKKyAgICAgICAgICAg
IHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBCb29s
ICovQmxvY2suX18oOSwgW21hdGNoJDIzWzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNo
JDIzWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIHZhciBtYXRjaCQyNCA9IHR5
cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5KTsKKyAgICAgICAgICByZXR1cm4gLyogRm10X2Zt
dHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEZsdXNoICovQmxvY2suX18oMTAsIFtt
YXRjaCQyNFswXV0pLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMjRbMV0KKyAgICAgICAgICAg
ICAgICBdOworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHZhciBtYXRjaCQyNSA9IHR5cGVf
Zm9ybWF0X2dlbihmbXRbMV0sIGZtdHR5KTsKKyAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5
X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18o
MTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0sCisgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMjVbMF0KKyAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAg
ICBtYXRjaCQyNVsxXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDEyIDogCisgICAg
ICAgICAgdmFyIG1hdGNoJDI2ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsxXSwgZm10dHkpOworICAg
ICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgLyog
Q2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAgICBmbXRb
MF0sCisgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjZbMF0KKyAgICAgICAgICAgICAgICAg
ICAgXSksCisgICAgICAgICAgICAgICAgICBtYXRjaCQyNlsxXQorICAgICAgICAgICAgICAgIF07
CisgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gOCkgeworICAgICAgICAgICAgdmFyIHN1Yl9m
bXR0eSRwcmltZSA9IGZtdHR5WzBdOworICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90
ZXF1YWwoLyogRm10dHlfRUJCICovW2ZtdFsxXV0sIC8qIEZtdHR5X0VCQiAqL1tzdWJfZm10dHkk
cHJpbWVdKSkgeworICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgdmFyIG1hdGNoJDI3ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsyXSwg
Zm10dHlbMV0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAg
ICAgICAgICAgICAgICAgIC8qIEZvcm1hdF9hcmcgKi9CbG9jay5fXygxMywgWworICAgICAgICAg
ICAgICAgICAgICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3ViX2ZtdHR5
JHByaW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjdbMF0KKyAgICAgICAgICAg
ICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjdbMV0KKyAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
dGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIDE0IDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsK
KyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gOSkgeworICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eTEg
PSBmbXR0eVswXTsKKyAgICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX25vdGVxdWFsKC8qIEZt
dHR5X0VCQiAqL1tDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKGZtdFsxXSldLCAv
KiBGbXR0eV9FQkIgKi9bQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChzdWJfZm10
dHkxKV0pKSB7CisgICAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB2YXIgbWF0Y2gkMjggPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzJdLCBD
YW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKGZtdHR5WzJdKSk7CisgICAgICAgICAg
ICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9y
bWF0X3N1YnN0ICovQmxvY2suX18oMTQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFsw
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9mbXR0eTEsCisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQyOFswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQyOFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAg
ICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICBp
ZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9t
aXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAx
MCkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDI5ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwg
Zm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAg
ICAgICAgICAgICAgICAgIC8qIEFscGhhICovQmxvY2suX18oMTUsIFttYXRjaCQyOVswXV0pLAor
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQyOVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21h
dGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTYgOiAKKyAg
ICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhy
b3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHku
dGFnID09PSAxMSkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDMwID0gdHlwZV9mb3JtYXRfZ2Vu
KGZtdFswXSwgZm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIg
Ki9bCisgICAgICAgICAgICAgICAgICAgIC8qIFRoZXRhICovQmxvY2suX18oMTYsIFttYXRjaCQz
MFswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQzMFsxXQorICAgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBU
eXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
MTcgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMzEgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzFdLCBm
bXR0eSk7CisgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAg
ICAgICAgICAvKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAg
ICAgICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDMxWzBdCisgICAg
ICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMzFbMV0KKyAgICAg
ICAgICAgICAgICBdOworICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgIHZhciBmb3JtYXR0aW5n
X2dlbiA9IGZtdFswXTsKKyAgICAgICAgICB2YXIgZm10MCA9IGZtdFsxXTsKKyAgICAgICAgICB2
YXIgZm10dHkwID0gZm10dHk7CisgICAgICAgICAgaWYgKGZvcm1hdHRpbmdfZ2VuLnRhZykgewor
ICAgICAgICAgICAgdmFyIG1hdGNoJDMyID0gZm9ybWF0dGluZ19nZW5bMF07CisgICAgICAgICAg
ICB2YXIgbWF0Y2gkMzMgPSB0eXBlX2Zvcm1hdF9nZW4obWF0Y2gkMzJbMF0sIGZtdHR5MCk7Cisg
ICAgICAgICAgICB2YXIgbWF0Y2gkMzQgPSB0eXBlX2Zvcm1hdF9nZW4oZm10MCwgbWF0Y2gkMzNb
MV0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIEZvcm1hdHRpbmdfZ2VuICovQmxvY2suX18oMTgsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIE9wZW5fYm94ICovQmxvY2suX18oMSwgWy8qIEZvcm1hdCAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDMzWzBdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkMzJbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
XSksCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQzNFswXQorICAgICAgICAgICAgICAg
ICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQzNFsxXQorICAgICAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIg
bWF0Y2gkMzUgPSBmb3JtYXR0aW5nX2dlblswXTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQzNiA9
IHR5cGVfZm9ybWF0X2dlbihtYXRjaCQzNVswXSwgZm10dHkwKTsKKyAgICAgICAgICAgIHZhciBt
YXRjaCQzNyA9IHR5cGVfZm9ybWF0X2dlbihmbXQwLCBtYXRjaCQzNlsxXSk7CisgICAgICAgICAg
ICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9y
bWF0dGluZ19nZW4gKi9CbG9jay5fXygxOCwgWworICAgICAgICAgICAgICAgICAgICAgICAgLyog
T3Blbl90YWcgKi9CbG9jay5fXygwLCBbLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMzZbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXRjaCQzNVsxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1dKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDM3WzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDM3WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAg
ICAgIH0KKyAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAi
bnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMykgeworICAgICAgICAgICAgdmFy
IG1hdGNoJDM4ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10dHlbMF0pOworICAgICAgICAg
ICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIFJl
YWRlciAqL0Jsb2NrLl9fKDE5LCBbbWF0Y2gkMzhbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkMzhbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIwIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBm
bXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMSkgeworICAgICAg
ICAgICAgdmFyIG1hdGNoJDM5ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsyXSwgZm10dHlbMF0pOwor
ICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAg
ICAgIC8qIFNjYW5fY2hhcl9zZXQgKi9CbG9jay5fXygyMCwgWworICAgICAgICAgICAgICAgICAg
ICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgZm10WzFdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkMzlbMF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAg
ICAgICAgICAgICAgICAgICAgbWF0Y2gkMzlbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRj
aDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIxIDogCisgICAg
ICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93
IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRh
ZyA9PT0gMikgeworICAgICAgICAgICAgdmFyIG1hdGNoJDQwID0gdHlwZV9mb3JtYXRfZ2VuKGZt
dFsxXSwgZm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9b
CisgICAgICAgICAgICAgICAgICAgIC8qIFNjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwg
WworICAgICAgICAgICAgICAgICAgICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkNDBbMF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkNDBbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAg
ICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIzIDogCisgICAgICAgICAgdmFyIGln
biA9IGZtdFswXTsKKyAgICAgICAgICB2YXIgZm10JDEgPSBmbXRbMV07CisgICAgICAgICAgdmFy
IGZtdHR5JDEgPSBmbXR0eTsKKyAgICAgICAgICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJlciIp
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoaWduKSB7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAor
ICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSQxID09PSAibnVtYmVyIikgeworICAg
ICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZm10dHkkMS50YWcgPT09IDE0KSB7CisgICAg
ICAgICAgICAgICAgICAgIHZhciBtYXRjaCQ0MSA9IHR5cGVfZm9ybWF0X2dlbihmbXQkMSwgZm10
dHkkMVswXSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICov
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5f
XygyMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmVkX3JlYWRl
ciAqLzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDQxWzBdCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaCQ0MVsxXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRo
cm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgIGNhc2UgMSA6
IAorICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZShpZ24sIGZtdCQxLCBm
bXR0eSQxKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChpZ24udGFnIHwgMCkgeworICAgICAg
ICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlX2lnbm9yZWRf
cGFyYW1fb25lKC8qIElnbm9yZWRfZm9ybWF0X2FyZyAqL0Jsb2NrLl9fKDcsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZ25bMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQkMSwg
Zm10dHkkMSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgdmFy
IG1hdGNoJDQyID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oaWduWzFdLCBmbXQk
MSwgZm10dHkkMSk7CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNDMgPSBtYXRjaCQ0Mlsx
XTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfZm9ybWF0X3N1YnN0ICovQmxv
Y2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0MlswXQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoJDQzWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDQzWzFdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgY2Fz
ZSA0IDogCisgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICBjYXNlIDYgOiAK
KyAgICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAg
ICAgICAgICAgICAgIHJldHVybiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lKGlnbiwgZm10JDEsIGZt
dHR5JDEpOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICBjYXNlIDIyIDogCisgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgdGhyb3cgVHlwZV9taXNt
YXRjaDsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiB0eXBlX2lnbm9yZWRfZm9y
bWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHksIGZtdCwgZm10dHkpIHsKKyAgaWYgKHR5cGVvZiBz
dWJfZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9b
CisgICAgICAgICAgICAvKiBFbmRfb2ZfZm10dHkgKi8wLAorICAgICAgICAgICAgdHlwZV9mb3Jt
YXRfZ2VuKGZtdCwgZm10dHkpCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0
Y2ggKHN1Yl9mbXR0eS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICBpZiAo
dHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNt
YXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnKSB7CisgICAg
ICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHZhciBtYXRjaCA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0
aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICByZXR1cm4gLyog
Rm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogQ2hhcl90eSAqL0Jsb2Nr
Ll9fKDAsIFttYXRjaFswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXQorICAgICAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAg
ICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBp
ZiAoZm10dHkudGFnID09PSAxKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHR5cGVfaWdu
b3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7Cisg
ICAgICAgICAgICByZXR1cm4gLyogRm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgLyogU3RyaW5nX3R5ICovQmxvY2suX18oMSwgW21hdGNoJDFbMF1dKSwKKyAgICAgICAgICAg
ICAgICAgICAgbWF0Y2gkMVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIGlmICh0
eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21h
dGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDIpIHsK
KyAgICAgICAgICAgIHZhciBtYXRjaCQyID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRp
b24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBG
bXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBJbnRfdHkgKi9CbG9jay5f
XygyLCBbbWF0Y2gkMlswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQyWzFdCisgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAzIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIp
IHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAg
ICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMykgeworICAgICAgICAgICAgdmFyIG1hdGNoJDMg
PSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10
dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAg
ICAgICAgICAgICAgIC8qIEludDMyX3R5ICovQmxvY2suX18oMywgW21hdGNoJDNbMF1dKSwKKyAg
ICAgICAgICAgICAgICAgICAgbWF0Y2gkM1sxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6IAorICAgICAg
ICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBU
eXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcg
PT09IDQpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9z
dWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBOYXRpdmVp
bnRfdHkgKi9CbG9jay5fXyg0LCBbbWF0Y2gkNFswXV0pLAorICAgICAgICAgICAgICAgICAgICBt
YXRjaCQ0WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0
eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAg
ICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gNSkgeworICAgICAgICAg
ICAgdmFyIG1hdGNoJDUgPSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10
dHlbMF0sIGZtdCwgZm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9F
QkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW21h
dGNoJDVbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNVsxXQorICAgICAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJv
dyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgNiA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAg
ICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IGlmIChmbXR0eS50YWcgPT09IDYpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ2ID0gdHlwZV9p
Z25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsK
KyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAg
ICAgICAvKiBGbG9hdF90eSAqL0Jsb2NrLl9fKDYsIFttYXRjaCQ2WzBdXSksCisgICAgICAgICAg
ICAgICAgICAgIG1hdGNoJDZbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAg
ICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBpZiAo
dHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNt
YXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSA3KSB7
CisgICAgICAgICAgICB2YXIgbWF0Y2gkNyA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0
aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICByZXR1cm4gLyog
Rm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogQm9vbF90eSAqL0Jsb2Nr
Ll9fKDcsIFttYXRjaCQ3WzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDdbMV0KKyAg
ICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVy
IikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSA4KSB7CisgICAgICAgICAgICB2YXIgc3ViMl9m
bXR0eSRwcmltZSA9IGZtdHR5WzBdOworICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90
ZXF1YWwoLyogRm10dHlfRUJCICovW3N1Yl9mbXR0eVswXV0sIC8qIEZtdHR5X0VCQiAqL1tzdWIy
X2ZtdHR5JHByaW1lXSkpIHsKKyAgICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBtYXRjaCQ4ID0gdHlwZV9pZ25vcmVkX2Zvcm1h
dF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzFdLCBmbXQsIGZtdHR5WzFdKTsKKyAgICAgICAgICAg
IHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBGb3Jt
YXRfYXJnX3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMl9m
bXR0eSRwcmltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDhbMF0KKyAgICAgICAg
ICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkOFsxXQorICAgICAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgOSA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7
CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAg
ICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDkpIHsKKyAgICAgICAgICAgIHZhciBzdWIyX2ZtdHR5
JHByaW1lJDEgPSBmbXR0eVsxXTsKKyAgICAgICAgICAgIHZhciBzdWIxX2ZtdHR5JHByaW1lID0g
Zm10dHlbMF07CisgICAgICAgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBGbXR0
eV9FQkIgKi9bQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChzdWJfZm10dHlbMF0p
XSwgLyogRm10dHlfRUJCICovW0NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3Vi
MV9mbXR0eSRwcmltZSldKSkgeworICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyog
Rm10dHlfRUJCICovW0NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3ViX2ZtdHR5
WzFdKV0sIC8qIEZtdHR5X0VCQiAqL1tDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVs
KHN1YjJfZm10dHkkcHJpbWUkMSldKSkgeworICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21h
dGNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eSRwcmltZSA9IHRy
YW5zKHN5bW0oc3ViMV9mbXR0eSRwcmltZSksIHN1YjJfZm10dHkkcHJpbWUkMSk7CisgICAgICAg
ICAgICB2YXIgbWF0Y2gkOSA9IGZtdHR5X3JlbF9kZXQoc3ViX2ZtdHR5JHByaW1lKTsKKyAgICAg
ICAgICAgIEN1cnJ5Ll8xKG1hdGNoJDlbMV0sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgIEN1
cnJ5Ll8xKG1hdGNoJDlbM10sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQx
MCA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKENhbWxpbnRlcm5hbEZvcm1hdEJh
c2ljcy5lcmFzZV9yZWwoc3ViX2ZtdHR5WzJdKSwgZm10LCBmbXR0eVsyXSk7CisgICAgICAgICAg
ICByZXR1cm4gLyogRm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9y
bWF0X3N1YnN0X3R5ICovQmxvY2suX18oOSwgWworICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
MV9mbXR0eSRwcmltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YjJfZm10dHkkcHJpbWUk
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0obWF0Y2gkMTBbMF0pCisgICAgICAgICAg
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEwWzFdCisgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAxMCA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7
CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAg
ICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDEwKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTEg
PSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10
dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAg
ICAgICAgICAgICAgIC8qIEFscGhhX3R5ICovQmxvY2suX18oMTAsIFttYXRjaCQxMVswXV0pLAor
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21h
dGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTEgOiAKKyAg
ICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhy
b3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHku
dGFnID09PSAxMSkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDEyID0gdHlwZV9pZ25vcmVkX2Zv
cm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAg
ICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBU
aGV0YV90eSAqL0Jsb2NrLl9fKDExLCBbbWF0Y2gkMTJbMF1dKSwKKyAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMTJbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgdGhyb3cgVHlw
ZV9taXNtYXRjaDsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5
ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMykgeworICAgICAgICAg
ICAgdmFyIG1hdGNoJDEzID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2Zt
dHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRf
RUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywg
W21hdGNoJDEzWzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzWzFdCisgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAxNCA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7
CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAg
ICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDE0KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTQg
PSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10
dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAg
ICAgICAgICAgICAgIC8qIElnbm9yZWRfcmVhZGVyX3R5ICovQmxvY2suX18oMTQsIFttYXRjaCQx
NFswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQxNFsxXQorICAgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBU
eXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAg
IH0KKyAgfQorfQorCitmdW5jdGlvbiB0eXBlX2Zvcm1hdChmbXQsIGZtdHR5KSB7CisgIHZhciBt
YXRjaCA9IHR5cGVfZm9ybWF0X2dlbihmbXQsIGZtdHR5KTsKKyAgaWYgKHR5cGVvZiBtYXRjaFsx
XSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gbWF0Y2hbMF07CisgIH0KKyAgZWxzZSB7Cisg
ICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgfQorfQorCitmdW5jdGlvbiByZWNhc3QoZm10LCBm
bXR0eSkgeworICByZXR1cm4gdHlwZV9mb3JtYXQoZm10LCBDYW1saW50ZXJuYWxGb3JtYXRCYXNp
Y3MuZXJhc2VfcmVsKHN5bW0oZm10dHkpKSk7Cit9CisKK2Z1bmN0aW9uIGZpeF9wYWRkaW5nKHBh
ZHR5LCB3aWR0aCwgc3RyKSB7CisgIHZhciBsZW4gPSBzdHIubGVuZ3RoOworICB2YXIgbWF0Y2hf
MDAwID0gUGVydmFzaXZlcy5hYnMod2lkdGgpOworICB2YXIgbWF0Y2hfMDAxID0gd2lkdGggPCAw
ID8gLyogTGVmdCAqLzAgOiBwYWR0eTsKKyAgdmFyIHBhZHR5JDEgPSBtYXRjaF8wMDE7CisgIHZh
ciB3aWR0aCQxID0gbWF0Y2hfMDAwOworICBpZiAod2lkdGgkMSA8PSBsZW4pIHsKKyAgICByZXR1
cm4gc3RyOworICB9CisgIGVsc2UgeworICAgIHZhciByZXMgPSBCeXRlcy5tYWtlKHdpZHRoJDEs
IHBhZHR5JDEgPT09IC8qIFplcm9zICovMiA/IC8qICIwIiAqLzQ4IDogLyogIiAiICovMzIpOwor
ICAgIHN3aXRjaCAocGFkdHkkMSkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgJCRTdHJp
bmcuYmxpdChzdHIsIDAsIHJlcywgMCwgbGVuKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgICQkU3RyaW5nLmJsaXQoc3RyLCAwLCByZXMsIHdpZHRoJDEgLSBs
ZW4gfCAwLCBsZW4pOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyIDogCisgICAgICAg
ICAgaWYgKGxlbiA+IDAgJiYgKENhbWxfc3RyaW5nLmdldChzdHIsIDApID09PSAvKiAiKyIgKi80
MyB8fCBDYW1sX3N0cmluZy5nZXQoc3RyLCAwKSA9PT0gLyogIi0iICovNDUgfHwgQ2FtbF9zdHJp
bmcuZ2V0KHN0ciwgMCkgPT09IC8qICIgIiAqLzMyKSkgeworICAgICAgICAgICAgcmVzWzBdID0g
Q2FtbF9zdHJpbmcuZ2V0KHN0ciwgMCk7CisgICAgICAgICAgICAkJFN0cmluZy5ibGl0KHN0ciwg
MSwgcmVzLCAod2lkdGgkMSAtIGxlbiB8IDApICsgMSB8IDAsIGxlbiAtIDEgfCAwKTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSBpZiAobGVuID4gMSAmJiBDYW1sX3N0cmluZy5nZXQoc3Ry
LCAwKSA9PT0gLyogIjAiICovNDggJiYgKENhbWxfc3RyaW5nLmdldChzdHIsIDEpID09PSAvKiAi
eCIgKi8xMjAgfHwgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgMSkgPT09IC8qICJYIiAqLzg4KSkgewor
ICAgICAgICAgICAgcmVzWzFdID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgMSk7CisgICAgICAgICAg
ICAkJFN0cmluZy5ibGl0KHN0ciwgMiwgcmVzLCAod2lkdGgkMSAtIGxlbiB8IDApICsgMiB8IDAs
IGxlbiAtIDIgfCAwKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAkJFN0cmluZy5ibGl0KHN0ciwgMCwgcmVzLCB3aWR0aCQxIC0gbGVuIHwgMCwgbGVuKTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9CisgICAgcmV0dXJuIENh
bWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhyZXMpOworICB9Cit9CisKK2Z1bmN0aW9uIGZpeF9p
bnRfcHJlY2lzaW9uKHByZWMsIHN0cikgeworICB2YXIgcHJlYyQxID0gUGVydmFzaXZlcy5hYnMo
cHJlYyk7CisgIHZhciBsZW4gPSBzdHIubGVuZ3RoOworICB2YXIgYyA9IENhbWxfc3RyaW5nLmdl
dChzdHIsIDApOworICB2YXIgZXhpdCA9IDA7CisgIGlmIChjID49IDU4KSB7CisgICAgaWYgKGMg
Pj0gNzEpIHsKKyAgICAgIGlmIChjID4gMTAyIHx8IGMgPCA5NykgeworICAgICAgICByZXR1cm4g
c3RyOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAyOworICAgICAgfQor
ICAgIH0KKyAgICBlbHNlIGlmIChjID49IDY1KSB7CisgICAgICBleGl0ID0gMjsKKyAgICB9Cisg
ICAgZWxzZSB7CisgICAgICByZXR1cm4gc3RyOworICAgIH0KKyAgfQorICBlbHNlIGlmIChjICE9
PSAzMikgeworICAgIGlmIChjID49IDQzKSB7CisgICAgICBzd2l0Y2ggKGMgLSA0MyB8IDApIHsK
KyAgICAgICAgY2FzZSAwIDogCisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgZXhpdCA9
IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgIGNhc2Ug
MyA6IAorICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAg
IGNhc2UgNSA6IAorICAgICAgICAgICAgaWYgKChwcmVjJDEgKyAyIHwgMCkgPiBsZW4gJiYgbGVu
ID4gMSAmJiAoQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgMSkgPT09IC8qICJ4IiAqLzEyMCB8fCBDYW1s
X3N0cmluZy5nZXQoc3RyLCAxKSA9PT0gLyogIlgiICovODgpKSB7CisgICAgICAgICAgICAgIHZh
ciByZXMgPSBCeXRlcy5tYWtlKHByZWMkMSArIDIgfCAwLCAvKiAiMCIgKi80OCk7CisgICAgICAg
ICAgICAgIHJlc1sxXSA9IENhbWxfc3RyaW5nLmdldChzdHIsIDEpOworICAgICAgICAgICAgICAk
JFN0cmluZy5ibGl0KHN0ciwgMiwgcmVzLCAocHJlYyQxIC0gbGVuIHwgMCkgKyA0IHwgMCwgbGVu
IC0gMiB8IDApOworICAgICAgICAgICAgICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3Ry
aW5nKHJlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgZXhpdCA9IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSA2IDogCisgICAgICAgIGNhc2UgNyA6IAorICAgICAgICBjYXNlIDggOiAKKyAgICAgICAg
Y2FzZSA5IDogCisgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAg
ICBjYXNlIDEyIDogCisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAg
ICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICB9
CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisgIH0KKyAgZWxz
ZSB7CisgICAgZXhpdCA9IDE7CisgIH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAgY2FzZSAxIDog
CisgICAgICAgIGlmICgocHJlYyQxICsgMSB8IDApID4gbGVuKSB7CisgICAgICAgICAgdmFyIHJl
cyQxID0gQnl0ZXMubWFrZShwcmVjJDEgKyAxIHwgMCwgLyogIjAiICovNDgpOworICAgICAgICAg
IHJlcyQxWzBdID0gYzsKKyAgICAgICAgICAkJFN0cmluZy5ibGl0KHN0ciwgMSwgcmVzJDEsIChw
cmVjJDEgLSBsZW4gfCAwKSArIDIgfCAwLCBsZW4gLSAxIHwgMCk7CisgICAgICAgICAgcmV0dXJu
IENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhyZXMkMSk7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICBjYXNlIDIgOiAKKyAgICAgICAgaWYgKHByZWMkMSA+IGxlbikgeworICAgICAgICAgIHZh
ciByZXMkMiA9IEJ5dGVzLm1ha2UocHJlYyQxLCAvKiAiMCIgKi80OCk7CisgICAgICAgICAgJCRT
dHJpbmcuYmxpdChzdHIsIDAsIHJlcyQyLCBwcmVjJDEgLSBsZW4gfCAwLCBsZW4pOworICAgICAg
ICAgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocmVzJDIpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX3RvX2NhbWxfc3RyaW5n
KHN0cikgeworICByZXR1cm4gJCRTdHJpbmcuY29uY2F0KCQkU3RyaW5nLmVzY2FwZWQoc3RyKSwg
LyogOjogKi9bCisgICAgICAgICAgICAgICciJywKKyAgICAgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAgICAgJyInLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gZm9ybWF0X29mX2ljb252KGlj
b252KSB7CisgIHN3aXRjaCAoaWNvbnYpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJu
ICIlZCI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAiJStkIjsKKyAgICBjYXNlIDIg
OiAKKyAgICAgICAgcmV0dXJuICIlIGQiOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4g
IiVpIjsKKyAgICBjYXNlIDQgOiAKKyAgICAgICAgcmV0dXJuICIlK2kiOworICAgIGNhc2UgNSA6
IAorICAgICAgICByZXR1cm4gIiUgaSI7CisgICAgY2FzZSA2IDogCisgICAgICAgIHJldHVybiAi
JXgiOworICAgIGNhc2UgNyA6IAorICAgICAgICByZXR1cm4gIiUjeCI7CisgICAgY2FzZSA4IDog
CisgICAgICAgIHJldHVybiAiJVgiOworICAgIGNhc2UgOSA6IAorICAgICAgICByZXR1cm4gIiUj
WCI7CisgICAgY2FzZSAxMCA6IAorICAgICAgICByZXR1cm4gIiVvIjsKKyAgICBjYXNlIDExIDog
CisgICAgICAgIHJldHVybiAiJSNvIjsKKyAgICBjYXNlIDEyIDogCisgICAgICAgIHJldHVybiAi
JXUiOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIGZvcm1hdF9vZl9hY29udihpY29udiwgYykg
eworICB2YXIgc2VwczsKKyAgc3dpdGNoIChpY29udikgeworICAgIGNhc2UgMCA6IAorICAgICAg
ICBzZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUiLAorICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgImQiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAg
ICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgc2VwcyA9IC8q
IDo6ICovWworICAgICAgICAgICIlKyIsCisgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAiZCIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgMiA6IAorICAgICAgICBzZXBzID0gLyogOjogKi9bCisg
ICAgICAgICAgIiUgIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJkIiwKKyAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSAzIDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAi
JSIsCisgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAiaSIsCisgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgNCA6IAorICAgICAgICBzZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUrIiwKKyAgICAg
ICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJpIiwKKyAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA1IDogCisg
ICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSAiLAorICAgICAgICAgIC8qIDo6
ICovWworICAgICAgICAgICAgImkiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
XQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgc2Vw
cyA9IC8qIDo6ICovWworICAgICAgICAgICIlIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICJ4IiwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAg
XTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA3IDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAq
L1sKKyAgICAgICAgICAiJSMiLAorICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgIngi
LAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIDggOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICovWworICAgICAg
ICAgICIlIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJYIiwKKyAgICAgICAg
ICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSA5IDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSMiLAor
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgIlgiLAorICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgXQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDEw
IDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSIsCisgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAibyIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICBdCisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTEgOiAKKyAgICAg
ICAgc2VwcyA9IC8qIDo6ICovWworICAgICAgICAgICIlIyIsCisgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAibyIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisg
ICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTIgOiAKKyAgICAgICAgc2VwcyA9
IC8qIDo6ICovWworICAgICAgICAgICIlIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICJ1IiwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsK
KyAgICAgICAgYnJlYWs7CisgICAgCisgIH0KKyAgcmV0dXJuICQkU3RyaW5nLmNvbmNhdChDYW1s
X3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFrZSgxLCBjKSksIHNlcHMpOworfQorCitm
dW5jdGlvbiBmb3JtYXRfb2ZfZmNvbnYoZmNvbnYsIHByZWMpIHsKKyAgaWYgKGZjb252ID09PSAv
KiBGbG9hdF9GICovMTUpIHsKKyAgICByZXR1cm4gIiUuMTJnIjsKKyAgfQorICBlbHNlIHsKKyAg
ICB2YXIgcHJlYyQxID0gUGVydmFzaXZlcy5hYnMocHJlYyk7CisgICAgdmFyIHN5bWIgPSBjaGFy
X29mX2Zjb252KGZjb252KTsKKyAgICB2YXIgYnVmID0gLyogcmVjb3JkICovWworICAgICAgLyog
aW5kICovMCwKKyAgICAgIC8qIGJ5dGVzICovbmV3IEFycmF5KDE2KQorICAgIF07CisgICAgYnVm
ZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgIGJwcmludF9mY29udl9mbGFnKGJ1
ZiwgZmNvbnYpOworICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIuIiAqLzQ2KTsKKyAgICBi
dWZmZXJfYWRkX3N0cmluZyhidWYsICIiICsgcHJlYyQxKTsKKyAgICBidWZmZXJfYWRkX2NoYXIo
YnVmLCBzeW1iKTsKKyAgICByZXR1cm4gYnVmZmVyX2NvbnRlbnRzKGJ1Zik7CisgIH0KK30KKwor
ZnVuY3Rpb24gY29udmVydF9pbnQoaWNvbnYsIG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNh
bWxfZm9ybWF0X2ludChmb3JtYXRfb2ZfaWNvbnYoaWNvbnYpLCBuKTsKK30KKworZnVuY3Rpb24g
Y29udmVydF9pbnQzMihpY29udiwgbikgeworICByZXR1cm4gQ2FtbF9mb3JtYXQuY2FtbF9pbnQz
Ml9mb3JtYXQoZm9ybWF0X29mX2Fjb252KGljb252LCAvKiAibCIgKi8xMDgpLCBuKTsKK30KKwor
ZnVuY3Rpb24gY29udmVydF9uYXRpdmVpbnQoaWNvbnYsIG4pIHsKKyAgcmV0dXJuIENhbWxfZm9y
bWF0LmNhbWxfbmF0aXZlaW50X2Zvcm1hdChmb3JtYXRfb2ZfYWNvbnYoaWNvbnYsIC8qICJuIiAq
LzExMCksIG4pOworfQorCitmdW5jdGlvbiBjb252ZXJ0X2ludDY0KGljb252LCBuKSB7CisgIHJl
dHVybiBDYW1sX2Zvcm1hdC5jYW1sX2ludDY0X2Zvcm1hdChmb3JtYXRfb2ZfYWNvbnYoaWNvbnYs
IC8qICJMIiAqLzc2KSwgbik7Cit9CisKK2Z1bmN0aW9uIGNvbnZlcnRfZmxvYXQoZmNvbnYsIHBy
ZWMsIHgpIHsKKyAgdmFyIHByZWMkMSA9IFBlcnZhc2l2ZXMuYWJzKHByZWMpOworICB2YXIgc3Ry
ID0gQ2FtbF9mb3JtYXQuY2FtbF9mb3JtYXRfZmxvYXQoZm9ybWF0X29mX2Zjb252KGZjb252LCBw
cmVjJDEpLCB4KTsKKyAgaWYgKGZjb252ICE9PSAvKiBGbG9hdF9GICovMTUpIHsKKyAgICByZXR1
cm4gc3RyOworICB9CisgIGVsc2UgeworICAgIHZhciBsZW4gPSBzdHIubGVuZ3RoOworICAgIHZh
ciBpc192YWxpZCA9IGZ1bmN0aW9uIChfaSkgeworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAg
ICB2YXIgaSA9IF9pOworICAgICAgICBpZiAoaSA9PT0gbGVuKSB7CisgICAgICAgICAgcmV0dXJu
IC8qIGZhbHNlICovMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIg
bWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBpKTsKKyAgICAgICAgICB2YXIgc3dpdGNoZXIg
PSBtYXRjaCAtIDQ2IHwgMDsKKyAgICAgICAgICBpZiAoc3dpdGNoZXIgPiAyMyB8fCBzd2l0Y2hl
ciA8IDApIHsKKyAgICAgICAgICAgIGlmIChzd2l0Y2hlciAhPT0gNTUpIHsKKyAgICAgICAgICAg
ICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
ICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0
dXJuIC8qIHRydWUgKi8xOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChzd2l0Y2hlciA+IDIyIHx8IHN3aXRjaGVyIDwgMSkgeworICAgICAgICAgICAgcmV0
dXJuIC8qIHRydWUgKi8xOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAg
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9OworICAgIH07CisgICAgdmFyIG1hdGNo
ID0gQ2FtbF9mbG9hdC5jYW1sX2NsYXNzaWZ5X2Zsb2F0KHgpOworICAgIGlmIChtYXRjaCAhPT0g
MykgeworICAgICAgaWYgKG1hdGNoID49IDQpIHsKKyAgICAgICAgcmV0dXJuICJuYW4iOworICAg
ICAgfQorICAgICAgZWxzZSBpZiAoaXNfdmFsaWQoMCkpIHsKKyAgICAgICAgcmV0dXJuIHN0cjsK
KyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gc3RyICsgIi4iOworICAgICAg
fQorICAgIH0KKyAgICBlbHNlIGlmICh4IDwgMC4wKSB7CisgICAgICByZXR1cm4gIm5lZ19pbmZp
bml0eSI7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuICJpbmZpbml0eSI7CisgICAg
fQorICB9Cit9CisKK2Z1bmN0aW9uIGZvcm1hdF9jYW1sX2NoYXIoYykgeworICByZXR1cm4gJCRT
dHJpbmcuY29uY2F0KENoYXIuZXNjYXBlZChjKSwgLyogOjogKi9bCisgICAgICAgICAgICAgICIn
IiwKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgIiciLAorICAgICAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdKTsKK30K
KworZnVuY3Rpb24gc3RyaW5nX29mX2ZtdHR5KGZtdHR5KSB7CisgIHZhciBidWYgPSAvKiByZWNv
cmQgKi9bCisgICAgLyogaW5kICovMCwKKyAgICAvKiBieXRlcyAqL25ldyBBcnJheSgxNikKKyAg
XTsKKyAgYnByaW50X2ZtdHR5KGJ1ZiwgZm10dHkpOworICByZXR1cm4gYnVmZmVyX2NvbnRlbnRz
KGJ1Zik7Cit9CisKK2Z1bmN0aW9uIG1ha2VfcHJpbnRmKF9rLCBvLCBfYWNjLCBfZm10KSB7Cisg
IHdoaWxlKHRydWUpIHsKKyAgICB2YXIgZm10ID0gX2ZtdDsKKyAgICB2YXIgYWNjID0gX2FjYzsK
KyAgICB2YXIgayA9IF9rOworICAgIGlmICh0eXBlb2YgZm10ID09PSAibnVtYmVyIikgeworICAg
ICAgcmV0dXJuIEN1cnJ5Ll8yKGssIG8sIGFjYyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
c3dpdGNoIChmbXQudGFnIHwgMCkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHZh
ciByZXN0ID0gZm10WzBdOworICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrLGFjYyxyZXN0
KXsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICB2YXIg
bmV3X2FjYyA9IC8qIEFjY19kYXRhX2NoYXIgKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICAg
ICAgICBhY2MsCisgICAgICAgICAgICAgICAgICBjCisgICAgICAgICAgICAgICAgXSk7CisgICAg
ICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCByZXN0KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0oayxhY2MscmVzdCkpOworICAgICAgICBjYXNlIDEgOiAK
KyAgICAgICAgICAgIHZhciByZXN0JDEgPSBmbXRbMF07CisgICAgICAgICAgICByZXR1cm4gKGZ1
bmN0aW9uKGssYWNjLHJlc3QkMSl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
KyAgICAgICAgICAgICAgdmFyIG5ld19hY2NfMDAxID0gZm9ybWF0X2NhbWxfY2hhcihjKTsKKyAg
ICAgICAgICAgICAgdmFyIG5ld19hY2MgPSAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0
LCBbCisgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICBuZXdfYWNjXzAw
MQorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYo
aywgbywgbmV3X2FjYywgcmVzdCQxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0oayxh
Y2MscmVzdCQxKSk7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgcmV0dXJuIG1ha2Vf
c3RyaW5nX3BhZGRpbmcoaywgbywgYWNjLCBmbXRbMV0sIGZtdFswXSwgZnVuY3Rpb24gKHN0cikg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICByZXR1cm4gbWFrZV9zdHJp
bmdfcGFkZGluZyhrLCBvLCBhY2MsIGZtdFsxXSwgZm10WzBdLCBzdHJpbmdfdG9fY2FtbF9zdHJp
bmcpOworICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2ludF9wYWRk
aW5nX3ByZWNpc2lvbihrLCBvLCBhY2MsIGZtdFszXSwgZm10WzFdLCBmbXRbMl0sIGNvbnZlcnRf
aW50LCBmbXRbMF0pOworICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIHJldHVybiBtYWtl
X2ludF9wYWRkaW5nX3ByZWNpc2lvbihrLCBvLCBhY2MsIGZtdFszXSwgZm10WzFdLCBmbXRbMl0s
IGNvbnZlcnRfaW50MzIsIGZtdFswXSk7CisgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAg
cmV0dXJuIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFjYywgZm10WzNdLCBmbXRb
MV0sIGZtdFsyXSwgY29udmVydF9uYXRpdmVpbnQsIGZtdFswXSk7CisgICAgICAgIGNhc2UgNyA6
IAorICAgICAgICAgICAgcmV0dXJuIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFj
YywgZm10WzNdLCBmbXRbMV0sIGZtdFsyXSwgY29udmVydF9pbnQ2NCwgZm10WzBdKTsKKyAgICAg
ICAgY2FzZSA4IDogCisgICAgICAgICAgICB2YXIgayQxID0gazsKKyAgICAgICAgICAgIHZhciBv
JDEgPSBvOworICAgICAgICAgICAgdmFyIGFjYyQxID0gYWNjOworICAgICAgICAgICAgdmFyIGZt
dCQxID0gZm10WzNdOworICAgICAgICAgICAgdmFyIHBhZCA9IGZtdFsxXTsKKyAgICAgICAgICAg
IHZhciBwcmVjID0gZm10WzJdOworICAgICAgICAgICAgdmFyIGZjb252ID0gZm10WzBdOworICAg
ICAgICAgICAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGlm
ICh0eXBlb2YgcHJlYyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyAh
PT0gMCkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQx
LGZtdCQxLGZjb252KXsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocCwgeCkg
eworICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gY29udmVydF9mbG9hdChmY29udiwgcCwg
eCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyog
QWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFjYyQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252KSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252KXsKKyAgICAg
ICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgICAgICAgICAgICAgICB2
YXIgc3RyID0gY29udmVydF9mbG9hdChmY29udiwgNiwgeCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2su
X18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252KSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBw
ID0gcHJlY1swXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNj
JDEsZm10JDEsZmNvbnYscCl7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7
CisgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gY29udmVydF9mbG9hdChmY29udiwgcCwgeCk7
CisgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19k
YXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWNjJDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHApKTsKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocGFkLnRhZykgeworICAg
ICAgICAgICAgICB2YXIgcGFkdHkgPSBwYWRbMF07CisgICAgICAgICAgICAgIGlmICh0eXBlb2Yg
cHJlYyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyAhPT0gMCkgewor
ICAgICAgICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZj
b252LHBhZHR5KXsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAodywgcCwgeCkg
eworICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHksIHcsIGNv
bnZlcnRfZmxvYXQoZmNvbnYsIHAsIHgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VfcHJpbnRmKGskMSwgbyQxLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
LCBmbXQkMSk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9KGskMSxv
JDEsYWNjJDEsZm10JDEsZmNvbnYscGFkdHkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxv
JDEsYWNjJDEsZm10JDEsZmNvbnYscGFkdHkpeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uICh3LCB4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBjb252ZXJ0X2Zs
b2F0KGZjb252LCA2LCB4KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciRwcmltZSA9IGZp
eF9wYWRkaW5nKHBhZHR5LCB3LCBzdHIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MkMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHIkcHJpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0o
ayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0eSkpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIg
cCQxID0gcHJlY1swXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEs
YWNjJDEsZm10JDEsZmNvbnYscGFkdHkscCQxKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVu
Y3Rpb24gKHcsIHgpIHsKKyAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhw
YWR0eSwgdywgY29udmVydF9mbG9hdChmY29udiwgcCQxLCB4KSk7CisgICAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2Nr
Ll9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfShrJDEs
byQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5LHAkMSkpOworICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIHcgPSBwYWRb
MV07CisgICAgICAgICAgICAgIHZhciBwYWR0eSQxID0gcGFkWzBdOworICAgICAgICAgICAgICBp
ZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZWMg
IT09IDApIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayQxLG8kMSxhY2Mk
MSxmbXQkMSxmY29udixwYWR0eSQxLHcpeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uIChwLCB4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhw
YWR0eSQxLCB3LCBjb252ZXJ0X2Zsb2F0KGZjb252LCBwLCB4KSk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxv
Y2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdykpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHJldHVy
biAoZnVuY3Rpb24oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0eSQxLHcpeworICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICAgICAgICAgIHZh
ciBzdHIgPSBjb252ZXJ0X2Zsb2F0KGZjb252LCA2LCB4KTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIHN0ciRwcmltZSA9IGZpeF9wYWRkaW5nKHBhZHR5JDEsIHcsIHN0cik7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5n
ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciRwcmltZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdykp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICB2YXIgcCQyID0gcHJlY1swXTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEsZm10JDEsZmNvbnYscGFkdHkkMSx3LHAkMil7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICAgICAg
ICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHkkMSwgdywgY29udmVydF9mbG9hdChmY29udiwg
cCQyLCB4KSk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEs
IC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWNjJDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEs
dyxwJDIpKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBjYXNlIDkg
OiAKKyAgICAgICAgICAgIHZhciByZXN0JDIgPSBmbXRbMF07CisgICAgICAgICAgICByZXR1cm4g
KGZ1bmN0aW9uKGssYWNjLHJlc3QkMil7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGIp
IHsKKyAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0
cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA/ICJ0cnVlIiA6ICJmYWxzZSIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSksIHJlc3QkMik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9KGssYWNjLHJlc3QkMikpOworICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICBfZm10
ID0gZm10WzBdOworICAgICAgICAgICAgX2FjYyA9IC8qIEFjY19mbHVzaCAqL0Jsb2NrLl9fKDcs
IFthY2NdKTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTEgOiAK
KyAgICAgICAgICAgIF9mbXQgPSBmbXRbMV07CisgICAgICAgICAgICBfYWNjID0gLyogQWNjX3N0
cmluZ19saXRlcmFsICovQmxvY2suX18oMiwgWworICAgICAgICAgICAgICAgIGFjYywKKyAgICAg
ICAgICAgICAgICBmbXRbMF0KKyAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBfZm10ID0gZm10WzFdOwor
ICAgICAgICAgICAgX2FjYyA9IC8qIEFjY19jaGFyX2xpdGVyYWwgKi9CbG9jay5fXygzLCBbCisg
ICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgIGZtdFswXQorICAgICAgICAgICAg
ICBdKTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAg
ICAgICAgICAgIHZhciByZXN0JDMgPSBmbXRbMl07CisgICAgICAgICAgICB2YXIgdHkgPSBzdHJp
bmdfb2ZfZm10dHkoZm10WzFdKTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2Ms
cmVzdCQzLHR5KXsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5f
Xyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCByZXN0JDMpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfShrLGFjYyxyZXN0JDMsdHkpKTsKKyAgICAgICAg
Y2FzZSAxNCA6IAorICAgICAgICAgICAgdmFyIHJlc3QkNCA9IGZtdFsyXTsKKyAgICAgICAgICAg
IHZhciBmbXR0eSA9IGZtdFsxXTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2Ms
Zm10dHkscmVzdCQ0KXsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIGFjYywgQ2FtbGludGVybmFsRm9y
bWF0QmFzaWNzLmNvbmNhdF9mbXQocmVjYXN0KHBhcmFtWzBdLCBmbXR0eSksIHJlc3QkNCkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfShrLGFjYyxmbXR0eSxyZXN0JDQpKTsKKyAgICAg
ICAgY2FzZSAxNSA6IAorICAgICAgICAgICAgdmFyIHJlc3QkNSA9IGZtdFswXTsKKyAgICAgICAg
ICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2MscmVzdCQ1KXsKKyAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbiAoZiwgeCkgeworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywg
LyogQWNjX2RlbGF5ICovQmxvY2suX18oNiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAobykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8yKGYsIG8sIHgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIHJl
c3QkNSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJlc3QkNSkpOworICAg
ICAgICBjYXNlIDE2IDogCisgICAgICAgICAgICB2YXIgcmVzdCQ2ID0gZm10WzBdOworICAgICAg
ICAgICAgcmV0dXJuIChmdW5jdGlvbihrLGFjYyxyZXN0JDYpeworICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uIChmKSB7CisgICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAv
KiBBY2NfZGVsYXkgKi9CbG9jay5fXyg2LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSksIHJlc3QkNik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJl
c3QkNikpOworICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBfZm10ID0gZm10WzFdOwor
ICAgICAgICAgICAgX2FjYyA9IC8qIEFjY19mb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDAsIFsK
KyAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgZm10WzBdCisgICAgICAgICAg
ICAgIF0pOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxOCA6IAor
ICAgICAgICAgICAgdmFyIG1hdGNoID0gZm10WzBdOworICAgICAgICAgICAgaWYgKG1hdGNoLnRh
ZykgeworICAgICAgICAgICAgICB2YXIgcmVzdCQ3ID0gZm10WzFdOworICAgICAgICAgICAgICB2
YXIgayRwcmltZSA9IChmdW5jdGlvbihrLGFjYyxyZXN0JDcpeworICAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24gayRwcmltZShrb2MsIGthY2MpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZV9wcmludGYoaywga29jLCAvKiBBY2NfZm9ybWF0dGluZ19nZW4gKi9CbG9jay5fXygxLCBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBBY2Nfb3Blbl9ib3ggKi9CbG9jay5fXygxLCBba2FjY10pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSksIHJlc3QkNyk7CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgfShrLGFjYyxyZXN0JDcpKTsKKyAgICAgICAgICAgICAgX2ZtdCA9IG1hdGNoWzBd
WzBdOworICAgICAgICAgICAgICBfYWNjID0gLyogRW5kX29mX2FjYyAqLzA7CisgICAgICAgICAg
ICAgIF9rID0gayRwcmltZTsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICB2YXIg
cmVzdCQ4ID0gZm10WzFdOworICAgICAgICAgICAgICB2YXIgayRwcmltZSQxID0gKGZ1bmN0aW9u
KGssYWNjLHJlc3QkOCl7CisgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBrJHByaW1lJDEo
a29jLCBrYWNjKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIGtvYywg
LyogQWNjX2Zvcm1hdHRpbmdfZ2VuICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWNjX29w
ZW5fdGFnICovQmxvY2suX18oMCwgW2thY2NdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pLCByZXN0JDgpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0oayxhY2MscmVz
dCQ4KSk7CisgICAgICAgICAgICAgIF9mbXQgPSBtYXRjaFswXVswXTsKKyAgICAgICAgICAgICAg
X2FjYyA9IC8qIEVuZF9vZl9hY2MgKi8wOworICAgICAgICAgICAgICBfayA9IGskcHJpbWUkMTsK
KyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFp
bHVyZSwKKyAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRl
cm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAgIDE0NDksCisgICAgICAgICAgICAg
ICAgICAgIDQKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAgICAg
ICBjYXNlIDIwIDogCisgICAgICAgICAgICB2YXIgcmVzdCQ5ID0gZm10WzJdOworICAgICAgICAg
ICAgdmFyIG5ld19hY2MgPSAvKiBBY2NfaW52YWxpZF9hcmcgKi9CbG9jay5fXyg4LCBbCisgICAg
ICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICJQcmludGY6IGJhZCBjb252ZXJzaW9u
ICVbIgorICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxy
ZXN0JDksbmV3X2FjYyl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgcmVzdCQ5KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0oayxyZXN0JDksbmV3X2FjYykpOworICAgICAgICBjYXNl
IDIxIDogCisgICAgICAgICAgICB2YXIgcmVzdCQxMCA9IGZtdFsxXTsKKyAgICAgICAgICAgIHJl
dHVybiAoZnVuY3Rpb24oayxhY2MscmVzdCQxMCl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKG4pIHsKKyAgICAgICAgICAgICAgdmFyIG5ld19hY2NfMDAxID0gQ2FtbF9mb3JtYXQuY2Ft
bF9mb3JtYXRfaW50KCIldSIsIG4pOworICAgICAgICAgICAgICB2YXIgbmV3X2FjYyA9IC8qIEFj
Y19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGFjYywKKyAg
ICAgICAgICAgICAgICAgIG5ld19hY2NfMDAxCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAg
ICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCByZXN0JDEwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0oayxhY2MscmVzdCQxMCkpOworICAgICAgICBjYXNlIDIy
IDogCisgICAgICAgICAgICB2YXIgcmVzdCQxMSA9IGZtdFswXTsKKyAgICAgICAgICAgIHJldHVy
biAoZnVuY3Rpb24oayxhY2MscmVzdCQxMSl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KGMpIHsKKyAgICAgICAgICAgICAgdmFyIG5ld19hY2MgPSAvKiBBY2NfZGF0YV9jaGFyICovQmxv
Y2suX18oNSwgWworICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAgYwor
ICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywg
bywgbmV3X2FjYywgcmVzdCQxMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNj
LHJlc3QkMTEpKTsKKyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgICAgdmFyIGskMiA9IGs7
CisgICAgICAgICAgICB2YXIgbyQyID0gbzsKKyAgICAgICAgICAgIHZhciBhY2MkMiA9IGFjYzsK
KyAgICAgICAgICAgIHZhciBpZ24gPSBmbXRbMF07CisgICAgICAgICAgICB2YXIgZm10JDIgPSBm
bXRbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJlciIpIHsKKyAgICAg
ICAgICAgICAgc3dpdGNoIChpZ24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MTcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNl
IDQgOiAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfaW52YWxpZF9hcmcoayQyLCBv
JDIsIGFjYyQyLCBmbXQkMik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBzd2l0Y2ggKGln
bi50YWcgfCAwKSB7CisgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoayQyLCBvJDIsIGFjYyQyLCBpZ25bMV0sIGZtdCQy
KTsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEgOiAK
KyAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAg
ICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAg
ICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAg
ICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlX2ludmFsaWRfYXJnKGskMiwgbyQyLCBhY2MkMiwgZm10JDIp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIGNhc2UgMjQgOiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2N1c3RvbShrLCBvLCBhY2Ms
IGZtdFsyXSwgZm10WzBdLCBDdXJyeS5fMShmbXRbMV0sIC8qICgpICovMCkpOworICAgICAgICAK
KyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1ha2VfZnJvbV9mbXR0eShrLCBv
LCBhY2MsIGZtdHR5LCBmbXQpIHsKKyAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsK
KyAgICByZXR1cm4gbWFrZV9pbnZhbGlkX2FyZyhrLCBvLCBhY2MsIGZtdCk7CisgIH0KKyAgZWxz
ZSB7CisgICAgc3dpdGNoIChmbXR0eS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICB2YXIgcmVzdCA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCwgZm10
KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgdmFyIHJlc3QkMSA9
IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQxLCBmbXQpOworICAgICAgICAg
IH07CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICB2YXIgcmVzdCQyID0gZm10dHlbMF07Cisg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zy
b21fZm10dHkoaywgbywgYWNjLCByZXN0JDIsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgIHZhciByZXN0JDMgPSBmbXR0eVswXTsKKyAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBv
LCBhY2MsIHJlc3QkMywgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA0IDogCisgICAg
ICAgICAgdmFyIHJlc3QkNCA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQ0
LCBmbXQpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICB2YXIgcmVz
dCQ1ID0gZm10dHlbMF07CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0JDUsIGZtdCk7CisgICAg
ICAgICAgfTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHZhciByZXN0JDYgPSBmbXR0eVsw
XTsKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1h
a2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJlc3QkNiwgZm10KTsKKyAgICAgICAgICB9OworICAg
ICAgY2FzZSA3IDogCisgICAgICAgICAgdmFyIHJlc3QkNyA9IGZtdHR5WzBdOworICAgICAgICAg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5
KGssIG8sIGFjYywgcmVzdCQ3LCBmbXQpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDggOiAK
KyAgICAgICAgICB2YXIgcmVzdCQ4ID0gZm10dHlbMV07CisgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywgbywgYWNjLCBy
ZXN0JDgsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgOSA6IAorICAgICAgICAgIHZh
ciByZXN0JDkgPSBmbXR0eVsyXTsKKyAgICAgICAgICB2YXIgdHkgPSB0cmFucyhzeW1tKGZtdHR5
WzBdKSwgZm10dHlbMV0pOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgQ2FtbGludGVybmFsRm9ybWF0
QmFzaWNzLmNvbmNhdF9mbXR0eSh0eSwgcmVzdCQ5KSwgZm10KTsKKyAgICAgICAgICB9OworICAg
ICAgY2FzZSAxMCA6IAorICAgICAgICAgIHZhciByZXN0JDEwID0gZm10dHlbMF07CisgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBfJDEpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zy
b21fZm10dHkoaywgbywgYWNjLCByZXN0JDEwLCBmbXQpOworICAgICAgICAgIH07CisgICAgICBj
YXNlIDExIDogCisgICAgICAgICAgdmFyIHJlc3QkMTEgPSBmbXR0eVswXTsKKyAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShr
LCBvLCBhY2MsIHJlc3QkMTEsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgMTIgOiAK
KyAgICAgICAgICB2YXIgcmVzdCQxMiA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywg
cmVzdCQxMiwgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSAxMyA6IAorICAgICAgICAg
IHRocm93IFsKKyAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRf
ZmFpbHVyZSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAiY2FtbGludGVy
bmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgIDE1NDAsCisgICAgICAgICAgICAgICAg
ICAzMQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgMTQg
OiAKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAxNTQxLAorICAg
ICAgICAgICAgICAgICAgMzEKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgIF07Cisg
ICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9pbnZhbGlkX2FyZyhrLCBvLCBh
Y2MsIGZtdCkgeworICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2ludmFsaWRfYXJn
ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAi
UHJpbnRmOiBiYWQgY29udmVyc2lvbiAlXyIKKyAgICAgICAgICAgICAgXSksIGZtdCk7Cit9CisK
K2Z1bmN0aW9uIG1ha2Vfc3RyaW5nX3BhZGRpbmcoaywgbywgYWNjLCBmbXQsIHBhZCwgdHJhbnMp
IHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9u
ICh4KSB7CisgICAgICB2YXIgbmV3X2FjY18wMDEgPSBDdXJyeS5fMSh0cmFucywgeCk7CisgICAg
ICB2YXIgbmV3X2FjYyA9IC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAg
ICAgICBhY2MsCisgICAgICAgICAgbmV3X2FjY18wMDEKKyAgICAgICAgXSk7CisgICAgICByZXR1
cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgZm10KTsKKyAgICB9OworICB9CisgIGVsc2Ug
aWYgKHBhZC50YWcpIHsKKyAgICB2YXIgcGFkdHkgPSBwYWRbMF07CisgICAgcmV0dXJuIGZ1bmN0
aW9uICh3LCB4KSB7CisgICAgICB2YXIgbmV3X2FjY18wMDEgPSBmaXhfcGFkZGluZyhwYWR0eSwg
dywgQ3VycnkuXzEodHJhbnMsIHgpKTsKKyAgICAgIHZhciBuZXdfYWNjID0gLyogQWNjX2RhdGFf
c3RyaW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgIGFjYywKKyAgICAgICAgICBuZXdfYWNj
XzAwMQorICAgICAgICBdKTsKKyAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNj
LCBmbXQpOworICAgIH07CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIHdpZHRoID0gcGFkWzFdOwor
ICAgIHZhciBwYWR0eSQxID0gcGFkWzBdOworICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAg
ICAgdmFyIG5ld19hY2NfMDAxID0gZml4X3BhZGRpbmcocGFkdHkkMSwgd2lkdGgsIEN1cnJ5Ll8x
KHRyYW5zLCB4KSk7CisgICAgICB2YXIgbmV3X2FjYyA9IC8qIEFjY19kYXRhX3N0cmluZyAqL0Js
b2NrLl9fKDQsIFsKKyAgICAgICAgICBhY2MsCisgICAgICAgICAgbmV3X2FjY18wMDEKKyAgICAg
ICAgXSk7CisgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgZm10KTsKKyAg
ICB9OworICB9Cit9CisKK2Z1bmN0aW9uIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8s
IGFjYywgZm10LCBwYWQsIHByZWMsIHRyYW5zLCBpY29udikgeworICBpZiAodHlwZW9mIHBhZCA9
PT0gIm51bWJlciIpIHsKKyAgICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7CisgICAg
ICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHAsIHgpIHsKKyAg
ICAgICAgICB2YXIgc3RyID0gZml4X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGlj
b252LCB4KSk7CisgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRh
X3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQp
OworICAgICAgICB9OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBmdW5j
dGlvbiAoeCkgeworICAgICAgICAgIHZhciBzdHIgPSBDdXJyeS5fMih0cmFucywgaWNvbnYsIHgp
OworICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcg
Ki9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAg
ICAgfTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgcCA9IHByZWNbMF07
CisgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAgICAgdmFyIHN0ciA9IGZpeF9pbnRf
cHJlY2lzaW9uKHAsIEN1cnJ5Ll8yKHRyYW5zLCBpY29udiwgeCkpOworICAgICAgICByZXR1cm4g
bWFrZV9wcmludGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAg
ICAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAg
ICAgICAgICAgICAgICAgXSksIGZtdCk7CisgICAgICB9OworICAgIH0KKyAgfQorICBlbHNlIGlm
IChwYWQudGFnKSB7CisgICAgdmFyIHBhZHR5ID0gcGFkWzBdOworICAgIGlmICh0eXBlb2YgcHJl
YyA9PT0gIm51bWJlciIpIHsKKyAgICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICAgIHJldHVy
biBmdW5jdGlvbiAodywgcCwgeCkgeworICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhw
YWR0eSwgdywgZml4X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSkp
OworICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcg
Ki9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAg
ICAgfTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHcs
IHgpIHsKKyAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHksIHcsIEN1cnJ5Ll8y
KHRyYW5zLCBpY29udiwgeCkpOworICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAv
KiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAg
ICBdKSwgZm10KTsKKyAgICAgICAgfTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICB2YXIgcCQxID0gcHJlY1swXTsKKyAgICAgIHJldHVybiBmdW5jdGlvbiAodywgeCkgeworICAg
ICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHksIHcsIGZpeF9pbnRfcHJlY2lzaW9uKHAk
MSwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSkpOworICAgICAgICByZXR1cm4gbWFrZV9wcmlu
dGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgICAg
ICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAg
ICAgICAgXSksIGZtdCk7CisgICAgICB9OworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICB2YXIg
dyA9IHBhZFsxXTsKKyAgICB2YXIgcGFkdHkkMSA9IHBhZFswXTsKKyAgICBpZiAodHlwZW9mIHBy
ZWMgPT09ICJudW1iZXIiKSB7CisgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgICByZXR1
cm4gZnVuY3Rpb24gKHAsIHgpIHsKKyAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFk
dHkkMSwgdywgZml4X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSkp
OworICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcg
Ki9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAg
ICAgfTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgp
IHsKKyAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHkkMSwgdywgQ3VycnkuXzIo
dHJhbnMsIGljb252LCB4KSk7CisgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8q
IEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFjYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAg
IF0pLCBmbXQpOworICAgICAgICB9OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHZhciBwJDIgPSBwcmVjWzBdOworICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAg
IHZhciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0eSQxLCB3LCBmaXhfaW50X3ByZWNpc2lvbihwJDIs
IEN1cnJ5Ll8yKHRyYW5zLCBpY29udiwgeCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRm
KGssIG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAgc3RyCisgICAgICAgICAgICAgICAg
ICAgIF0pLCBmbXQpOworICAgICAgfTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9j
dXN0b20oaywgbywgYWNjLCByZXN0LCBhcml0eSwgZikgeworICBpZiAoYXJpdHkpIHsKKyAgICB2
YXIgYXJpdHkkMSA9IGFyaXR5WzBdOworICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAg
cmV0dXJuIG1ha2VfY3VzdG9tKGssIG8sIGFjYywgcmVzdCwgYXJpdHkkMSwgQ3VycnkuXzEoZiwg
eCkpOworICAgIH07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8s
IC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGFj
YywKKyAgICAgICAgICAgICAgICAgIGYKKyAgICAgICAgICAgICAgICBdKSwgcmVzdCk7CisgIH0K
K30KKworZnVuY3Rpb24gb3V0cHV0X2FjYyhvLCBfYWNjKSB7CisgIHdoaWxlKHRydWUpIHsKKyAg
ICB2YXIgYWNjID0gX2FjYzsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHR5cGVvZiBhY2Mg
PT09ICJudW1iZXIiKSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHN3aXRjaCAoYWNjLnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDogCisgICAg
ICAgICAgICB2YXIgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdChhY2NbMV0pOworICAgICAg
ICAgICAgb3V0cHV0X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2
ZXMub3V0cHV0X3N0cmluZyhvLCBzKTsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICB2
YXIgbWF0Y2ggPSBhY2NbMV07CisgICAgICAgICAgICB2YXIgcCA9IGFjY1swXTsKKyAgICAgICAg
ICAgIG91dHB1dF9hY2MobywgcCk7CisgICAgICAgICAgICBpZiAobWF0Y2gudGFnKSB7CisgICAg
ICAgICAgICAgIFBlcnZhc2l2ZXMub3V0cHV0X3N0cmluZyhvLCAiQFsiKTsKKyAgICAgICAgICAg
ICAgX2FjYyA9IG1hdGNoWzBdOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIFBl
cnZhc2l2ZXMub3V0cHV0X3N0cmluZyhvLCAiQHsiKTsKKyAgICAgICAgICAgICAgX2FjYyA9IG1h
dGNoWzBdOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICBj
YXNlIDQgOiAKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgMyA6IAorICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGV4aXQgPSAyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgb3V0cHV0
X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGFjY1sxXSwgbyk7
CisgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2NbMF0pOwor
ICAgICAgICAgICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9mbHVzaChvKTsKKyAgICAgICAgY2Fz
ZSA4IDogCisgICAgICAgICAgICBvdXRwdXRfYWNjKG8sIGFjY1swXSk7CisgICAgICAgICAgICB0
aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlk
X2FyZ3VtZW50LAorICAgICAgICAgICAgICAgICAgYWNjWzFdCisgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIHN3aXRjaCAoZXhpdCkgeworICAgICAgY2Fz
ZSAxIDogCisgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgIHJldHVy
biBQZXJ2YXNpdmVzLm91dHB1dF9zdHJpbmcobywgYWNjWzFdKTsKKyAgICAgIGNhc2UgMiA6IAor
ICAgICAgICAgIG91dHB1dF9hY2MobywgYWNjWzBdKTsKKyAgICAgICAgICByZXR1cm4gQ2FtbF9p
by5jYW1sX21sX291dHB1dF9jaGFyKG8sIGFjY1sxXSk7CisgICAgICAKKyAgICB9CisgIH07Cit9
CisKK2Z1bmN0aW9uIGJ1ZnB1dF9hY2MoYiwgX2FjYykgeworICB3aGlsZSh0cnVlKSB7CisgICAg
dmFyIGFjYyA9IF9hY2M7CisgICAgdmFyIGV4aXQgPSAwOworICAgIGlmICh0eXBlb2YgYWNjID09
PSAibnVtYmVyIikgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICBzd2l0Y2ggKGFjYy50YWcgfCAwKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgdmFyIHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoYWNjWzFdKTsKKyAgICAgICAg
ICAgIGJ1ZnB1dF9hY2MoYiwgYWNjWzBdKTsKKyAgICAgICAgICAgIHJldHVybiBCdWZmZXIuYWRk
X3N0cmluZyhiLCBzKTsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICB2YXIgbWF0Y2gg
PSBhY2NbMV07CisgICAgICAgICAgICB2YXIgcCA9IGFjY1swXTsKKyAgICAgICAgICAgIGJ1ZnB1
dF9hY2MoYiwgcCk7CisgICAgICAgICAgICBpZiAobWF0Y2gudGFnKSB7CisgICAgICAgICAgICAg
IEJ1ZmZlci5hZGRfc3RyaW5nKGIsICJAWyIpOworICAgICAgICAgICAgICBfYWNjID0gbWF0Y2hb
MF07CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmco
YiwgIkB7Iik7CisgICAgICAgICAgICAgIF9hY2MgPSBtYXRjaFswXTsKKyAgICAgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBl
eGl0ID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAg
Y2FzZSA1IDogCisgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgIGJ1ZnB1dF9hY2MoYiwgYWNjWzBdKTsKKyAgICAg
ICAgICAgIHJldHVybiBDdXJyeS5fMShhY2NbMV0sIGIpOworICAgICAgICBjYXNlIDcgOiAKKyAg
ICAgICAgICAgIF9hY2MgPSBhY2NbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIGJ1ZnB1dF9hY2MoYiwgYWNjWzBdKTsKKyAgICAg
ICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAgICAgICBhY2NbMV0KKyAgICAgICAgICAg
ICAgICBdOworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgc3dpdGNoIChleGl0KSB7Cisg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBidWZwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAg
ICAgcmV0dXJuIEJ1ZmZlci5hZGRfc3RyaW5nKGIsIGFjY1sxXSk7CisgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICBidWZwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIEJ1ZmZl
ci5hZGRfY2hhcihiLCBhY2NbMV0pOworICAgICAgCisgICAgfQorICB9OworfQorCitmdW5jdGlv
biBzdHJwdXRfYWNjKGIsIF9hY2MpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBhY2MgPSBf
YWNjOworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAodHlwZW9mIGFjYyA9PT0gIm51bWJlciIp
IHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dp
dGNoIChhY2MudGFnIHwgMCkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHZhciBz
ID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0KGFjY1sxXSk7CisgICAgICAgICAgICBzdHJwdXRf
YWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmFkZF9zdHJpbmcoYiwg
cyk7CisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgdmFyIG1hdGNoID0gYWNjWzFdOwor
ICAgICAgICAgICAgdmFyIHAgPSBhY2NbMF07CisgICAgICAgICAgICBzdHJwdXRfYWNjKGIsIHAp
OworICAgICAgICAgICAgaWYgKG1hdGNoLnRhZykgeworICAgICAgICAgICAgICBCdWZmZXIuYWRk
X3N0cmluZyhiLCAiQFsiKTsKKyAgICAgICAgICAgICAgX2FjYyA9IG1hdGNoWzBdOworICAgICAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nKGIsICJAeyIpOwor
ICAgICAgICAgICAgICBfYWNjID0gbWF0Y2hbMF07CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSAyIDogCisgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgZXhpdCA9IDE7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgIGNhc2UgNSA6IAor
ICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2
IDogCisgICAgICAgICAgICBzdHJwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgICByZXR1
cm4gQnVmZmVyLmFkZF9zdHJpbmcoYiwgQ3VycnkuXzEoYWNjWzFdLCAvKiAoKSAqLzApKTsKKyAg
ICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICBfYWNjID0gYWNjWzBdOworICAgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICBzdHJwdXRfYWNj
KGIsIGFjY1swXSk7CisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAgICAg
YWNjWzFdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAg
IHN3aXRjaCAoZXhpdCkgeworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgc3RycHV0X2FjYyhi
LCBhY2NbMF0pOworICAgICAgICAgIHJldHVybiBCdWZmZXIuYWRkX3N0cmluZyhiLCBhY2NbMV0p
OworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgc3RycHV0X2FjYyhiLCBhY2NbMF0pOworICAg
ICAgICAgIHJldHVybiBCdWZmZXIuYWRkX2NoYXIoYiwgYWNjWzFdKTsKKyAgICAgIAorICAgIH0K
KyAgfTsKK30KKworZnVuY3Rpb24gZmFpbHdpdGhfbWVzc2FnZShwYXJhbSkgeworICB2YXIgYnVm
ID0gQnVmZmVyLmNyZWF0ZSgyNTYpOworICB2YXIgayA9IGZ1bmN0aW9uIChfLCBhY2MpIHsKKyAg
ICBzdHJwdXRfYWNjKGJ1ZiwgYWNjKTsKKyAgICB2YXIgcyA9IEJ1ZmZlci5jb250ZW50cyhidWYp
OworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJl
LAorICAgICAgICAgIHMKKyAgICAgICAgXTsKKyAgfTsKKyAgcmV0dXJuIG1ha2VfcHJpbnRmKGss
IC8qICgpICovMCwgLyogRW5kX29mX2FjYyAqLzAsIHBhcmFtWzBdKTsKK30KKworZnVuY3Rpb24g
b3Blbl9ib3hfb2Zfc3RyaW5nKHN0cikgeworICBpZiAoc3RyID09PSAiIikgeworICAgIHJldHVy
biAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAvKiBQcF9ib3ggKi80
CisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgbGVuID0gc3RyLmxlbmd0aDsK
KyAgICB2YXIgaW52YWxpZF9ib3ggPSBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gQ3Vycnku
XzEoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAgICAg
LyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlk
IGJveCBkZXNjcmlwdGlvbiAlUyIKKyAgICAgICAgICAgICAgICAgICAgXSksIHN0cik7CisgICAg
fTsKKyAgICB2YXIgcGFyc2Vfc3BhY2VzID0gZnVuY3Rpb24gKF9pKSB7CisgICAgICB3aGlsZSh0
cnVlKSB7CisgICAgICAgIHZhciBpID0gX2k7CisgICAgICAgIGlmIChpID09PSBsZW4pIHsKKyAg
ICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2
YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBpKTsKKyAgICAgICAgICBpZiAobWF0Y2gg
IT09IDkpIHsKKyAgICAgICAgICAgIGlmIChtYXRjaCAhPT0gMzIpIHsKKyAgICAgICAgICAgICAg
cmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
ICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICAKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH07CisgICAgfTsKKyAgICB2YXIgcGFy
c2VfbHdvcmQgPSBmdW5jdGlvbiAoXywgX2opIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAg
ICAgdmFyIGogPSBfajsKKyAgICAgICAgaWYgKGogPT09IGxlbikgeworICAgICAgICAgIHJldHVy
biBqOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBtYXRjaCA9IENh
bWxfc3RyaW5nLmdldChzdHIsIGopOworICAgICAgICAgIGlmIChtYXRjaCA+IDEyMiB8fCBtYXRj
aCA8IDk3KSB7CisgICAgICAgICAgICByZXR1cm4gajsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBfaiA9IGogKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9
OworICAgIHZhciBwYXJzZV9pbnQgPSBmdW5jdGlvbiAoXywgX2opIHsKKyAgICAgIHdoaWxlKHRy
dWUpIHsKKyAgICAgICAgdmFyIGogPSBfajsKKyAgICAgICAgaWYgKGogPT09IGxlbikgeworICAg
ICAgICAgIHJldHVybiBqOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZh
ciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChzdHIsIGopOworICAgICAgICAgIGlmIChtYXRjaCA+
PSA0OCkgeworICAgICAgICAgICAgaWYgKG1hdGNoID49IDU4KSB7CisgICAgICAgICAgICAgIHJl
dHVybiBqOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IF9qID0gaiArIDEgfCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAg
IAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChtYXRjaCAh
PT0gNDUpIHsKKyAgICAgICAgICAgIHJldHVybiBqOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIF9qID0gaiArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9OworICAgIH07
CisgICAgdmFyIHdzdGFydCA9IHBhcnNlX3NwYWNlcygwKTsKKyAgICB2YXIgd2VuZCA9IHBhcnNl
X2x3b3JkKHdzdGFydCwgd3N0YXJ0KTsKKyAgICB2YXIgYm94X25hbWUgPSAkJFN0cmluZy5zdWIo
c3RyLCB3c3RhcnQsIHdlbmQgLSB3c3RhcnQgfCAwKTsKKyAgICB2YXIgbnN0YXJ0ID0gcGFyc2Vf
c3BhY2VzKHdlbmQpOworICAgIHZhciBuZW5kID0gcGFyc2VfaW50KG5zdGFydCwgbnN0YXJ0KTsK
KyAgICB2YXIgaW5kZW50OworICAgIGlmIChuc3RhcnQgPT09IG5lbmQpIHsKKyAgICAgIGluZGVu
dCA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdHJ5IHsKKyAgICAgICAgaW5kZW50ID0g
Q2FtbF9mb3JtYXQuY2FtbF9pbnRfb2Zfc3RyaW5nKCQkU3RyaW5nLnN1YihzdHIsIG5zdGFydCwg
bmVuZCAtIG5zdGFydCB8IDApKTsKKyAgICAgIH0KKyAgICAgIGNhdGNoIChleG4peworICAgICAg
ICBpZiAoZXhuWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7CisgICAg
ICAgICAgaW5kZW50ID0gaW52YWxpZF9ib3goLyogKCkgKi8wKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBleG47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
CisgICAgdmFyIGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMobmVuZCk7CisgICAgaWYgKGV4cF9lbmQg
IT09IGxlbikgeworICAgICAgaW52YWxpZF9ib3goLyogKCkgKi8wKTsKKyAgICB9CisgICAgdmFy
IGJveF90eXBlOworICAgIHN3aXRjaCAoYm94X25hbWUpIHsKKyAgICAgIGNhc2UgIiIgOiAKKyAg
ICAgIGNhc2UgImIiIDogCisgICAgICAgICAgYm94X3R5cGUgPSAvKiBQcF9ib3ggKi80OworICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAiaCIgOiAKKyAgICAgICAgICBib3hfdHlwZSA9IC8q
IFBwX2hib3ggKi8wOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAiaG92IiA6IAorICAg
ICAgICAgIGJveF90eXBlID0gLyogUHBfaG92Ym94ICovMzsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgImh2IiA6IAorICAgICAgICAgIGJveF90eXBlID0gLyogUHBfaHZib3ggKi8yOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAidiIgOiAKKyAgICAgICAgICBib3hfdHlwZSA9
IC8qIFBwX3Zib3ggKi8xOworICAgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgYm94X3R5cGUgPSBpbnZhbGlkX2JveCgvKiAoKSAqLzApOworICAgIH0KKyAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICBpbmRlbnQsCisgICAgICAgICAgICBib3hfdHlwZQor
ICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9wYWRkaW5nX2ZtdF9lYmIocGFk
LCBmbXQpIHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8q
IFBhZGRpbmdfZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAg
ICAgICAgICAgZm10CisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIGlmIChwYWQudGFnKSB7Cisg
ICAgcmV0dXJuIC8qIFBhZGRpbmdfZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIEFyZ19wYWRk
aW5nICovQmxvY2suX18oMSwgW3BhZFswXV0pLAorICAgICAgICAgICAgZm10CisgICAgICAgICAg
XTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogUGFkZGluZ19mbXRfRUJCICovWworICAg
ICAgICAgICAgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAg
cGFkWzBdLAorICAgICAgICAgICAgICAgIHBhZFsxXQorICAgICAgICAgICAgICBdKSwKKyAgICAg
ICAgICAgIGZtdAorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9wcmVjaXNp
b25fZm10X2ViYihwcmVjLCBmbXQpIHsKKyAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikg
eworICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICByZXR1cm4gLyogUHJlY2lzaW9uX2ZtdF9F
QkIgKi9bCisgICAgICAgICAgICAgIC8qIEFyZ19wcmVjaXNpb24gKi8xLAorICAgICAgICAgICAg
ICBmbXQKKyAgICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8q
IFByZWNpc2lvbl9mbXRfRUJCICovWworICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8w
LAorICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgIF07CisgICAgfQorICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAvKiBQcmVjaXNpb25fZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExp
dF9wcmVjaXNpb24gKi9bcHJlY1swXV0sCisgICAgICAgICAgICBmbXQKKyAgICAgICAgICBdOwor
ICB9Cit9CisKK2Z1bmN0aW9uIG1ha2VfcGFkcHJlY19mbXRfZWJiKHBhZCwgcHJlYywgZm10KSB7
CisgIHZhciBtYXRjaCA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIocHJlYywgZm10KTsKKyAgdmFy
IGZtdCRwcmltZSA9IG1hdGNoWzFdOworICB2YXIgcHJlYyQxID0gbWF0Y2hbMF07CisgIGlmICh0
eXBlb2YgcGFkID09PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdF9FQkIg
Ki9bCisgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgIHByZWMkMSwK
KyAgICAgICAgICAgIGZtdCRwcmltZQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSBpZiAocGFk
LnRhZykgeworICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAv
KiBBcmdfcGFkZGluZyAqL0Jsb2NrLl9fKDEsIFtwYWRbMF1dKSwKKyAgICAgICAgICAgIHByZWMk
MSwKKyAgICAgICAgICAgIGZtdCRwcmltZQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIC8qIFBhZHByZWNfZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExpdF9wYWRk
aW5nICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgIHBhZFswXSwKKyAgICAgICAgICAg
ICAgICBwYWRbMV0KKyAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICBwcmVjJDEsCisgICAg
ICAgICAgICBmbXQkcHJpbWUKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGZtdF9l
YmJfb2Zfc3RyaW5nKGxlZ2FjeV9iZWhhdmlvciwgc3RyKSB7CisgIHZhciBsZWdhY3lfYmVoYXZp
b3IkMSA9IGxlZ2FjeV9iZWhhdmlvciA/IGxlZ2FjeV9iZWhhdmlvclswXSA6IC8qIHRydWUgKi8x
OworICB2YXIgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSA9IGZ1bmN0aW9uIChzdHJfaW5kLCBtc2cp
IHsKKyAgICByZXR1cm4gQ3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisg
ICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIEludF9kICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZyAqL0Jsb2NrLl9fKDIsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3Jt
YXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAg
ICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIg
JWQsICVzIgorICAgICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2luZCwgbXNnKTsKKyAgfTsK
KyAgdmFyIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgPSBmdW5jdGlvbiAoc3RyX2luZCwgYywgcykg
eworICAgIHJldHVybiBDdXJyeS5fNChmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICI6IGF0IGNoYXJhY3RlciBudW1iZXIgIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsICciLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIENoYXIgKi9CbG9jay5fXygwLCBbLyogU3RyaW5nX2xp
dGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIicgd2l0aG91dCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nICovQmxvY2suX18oMiwgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcg
Ki8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSldKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAg
ICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgJVM6IGF0
IGNoYXJhY3RlciBudW1iZXIgJWQsICclYycgd2l0aG91dCAlcyIKKyAgICAgICAgICAgICAgICAg
IF0pLCBzdHIsIHN0cl9pbmQsIGMsIHMpOworICB9OworICB2YXIgZXhwZWN0ZWRfY2hhcmFjdGVy
ID0gZnVuY3Rpb24gKHN0cl9pbmQsIGV4cGVjdGVkLCByZWFkKSB7CisgICAgcmV0dXJuIEN1cnJ5
Ll80KGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAv
KiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAiaW52YWxpZCBmb3JtYXQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3Ry
aW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3Bh
ZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFs
ICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXQg
Y2hhcmFjdGVyIG51bWJlciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJ
bnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBJbnRfZCAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19w
YWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3By
ZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJp
bmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiwgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBTdHJpbmcgKi9CbG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGV4cGVj
dGVkLCByZWFkICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBDYW1sX2NoYXIgKi9CbG9jay5fXygxLCBbLyogRW5kX29mX2Zvcm1hdCAqLzBdKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAg
ICAiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVk
LCByZWFkICVDIgorICAgICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2luZCwgZXhwZWN0ZWQs
IHJlYWQpOworICB9OworICB2YXIgY29tcHV0ZV9pbnRfY29udiA9IGZ1bmN0aW9uIChwY3RfaW5k
LCBzdHJfaW5kLCBfcGx1cywgX3NoYXJwLCBfc3BhY2UsIHN5bWIpIHsKKyAgICB3aGlsZSh0cnVl
KSB7CisgICAgICB2YXIgc3BhY2UgPSBfc3BhY2U7CisgICAgICB2YXIgc2hhcnAgPSBfc2hhcnA7
CisgICAgICB2YXIgcGx1cyA9IF9wbHVzOworICAgICAgdmFyIGV4aXQgPSAwOworICAgICAgdmFy
IGV4aXQkMSA9IDA7CisgICAgICBpZiAocGx1cyAhPT0gMCkgeworICAgICAgICBpZiAoc2hhcnAg
IT09IDApIHsKKyAgICAgICAgICBleGl0JDEgPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
aWYgKHNwYWNlICE9PSAwKSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAoc3ltYiAhPT0gMTAwKSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDEwNSkg
eworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgcmV0dXJuIC8qIEludF9waSAqLzQ7CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAvKiBJbnRfcGQgKi8xOworICAgICAg
ICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChzaGFycCAhPT0gMCkgeworICAgICAgICBpZiAo
c3BhY2UgIT09IDApIHsKKyAgICAgICAgICBleGl0JDEgPSAyOworICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKHN5bWIgIT09IDg4KSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDExMSkgewor
ICAgICAgICAgICAgaWYgKHN5bWIgIT09IDEyMCkgeworICAgICAgICAgICAgICBleGl0JDEgPSAy
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVy
biAvKiBJbnRfQ3ggKi83OworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHJldHVybiAvKiBJbnRfQ28gKi8xMTsKKyAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIEludF9DWCAqLzk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHNwYWNlICE9PSAwKSB7CisgICAg
ICAgIGlmIChzeW1iICE9PSAxMDApIHsKKyAgICAgICAgICBpZiAoc3ltYiAhPT0gMTA1KSB7Cisg
ICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICByZXR1cm4gLyogSW50X3NpICovNTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIEludF9zZCAqLzI7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgc3dpdGNoZXIgPSBzeW1iIC0gODgg
fCAwOworICAgICAgICBpZiAoc3dpdGNoZXIgPiAzMiB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAg
ICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzd2l0
Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogSW50X1ggKi84OworICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBJbnRfZCAqLzA7CisgICAgICAgICAgICBjYXNlIDE3IDogCisgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIEludF9pICovMzsKKyAgICAgICAgICAgIGNhc2UgMjMgOiAKKyAg
ICAgICAgICAgICAgICByZXR1cm4gLyogSW50X28gKi8xMDsKKyAgICAgICAgICAgIGNhc2UgMjkg
OiAKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50X3UgKi8xMjsKKyAgICAgICAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICBjYXNlIDMgOiAKKyAg
ICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICBj
YXNlIDYgOiAKKyAgICAgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgY2FzZSA4IDogCisg
ICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAg
IGNhc2UgMTEgOiAKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIGNhc2UgMTQg
OiAKKyAgICAgICAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICAgIGNhc2UgMTYgOiAKKyAgICAg
ICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAgIGNh
c2UgMjAgOiAKKyAgICAgICAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICAgIGNhc2UgMjIgOiAK
KyAgICAgICAgICAgIGNhc2UgMjQgOiAKKyAgICAgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAg
ICAgIGNhc2UgMjYgOiAKKyAgICAgICAgICAgIGNhc2UgMjcgOiAKKyAgICAgICAgICAgIGNhc2Ug
MjggOiAKKyAgICAgICAgICAgIGNhc2UgMzAgOiAKKyAgICAgICAgICAgIGNhc2UgMzEgOiAKKyAg
ICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMzIgOiAKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50X3ggKi82OworICAg
ICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoZXhp
dCQxID09PSAyKSB7CisgICAgICAgIHZhciBleGl0JDIgPSAwOworICAgICAgICB2YXIgc3dpdGNo
ZXIkMSA9IHN5bWIgLSA4OCB8IDA7CisgICAgICAgIGlmIChzd2l0Y2hlciQxID4gMzIgfHwgc3dp
dGNoZXIkMSA8IDApIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICBzd2l0Y2ggKHN3aXRjaGVyJDEpIHsKKyAgICAgICAgICAgIGNhc2Ug
MCA6IAorICAgICAgICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIEludF9DWCAqLzk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMyA6IAor
ICAgICAgICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIEludF9DbyAqLzExOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAg
ICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIGNhc2UgMjkgOiAKKyAgICAgICAgICAgICAg
ICBleGl0JDIgPSAzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAg
ICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGNhc2Ug
NiA6IAorICAgICAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAg
ICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgY2Fz
ZSAxMSA6IAorICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgY2FzZSAxNCA6IAor
ICAgICAgICAgICAgY2FzZSAxNSA6IAorICAgICAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAg
ICAgY2FzZSAxOCA6IAorICAgICAgICAgICAgY2FzZSAxOSA6IAorICAgICAgICAgICAgY2FzZSAy
MCA6IAorICAgICAgICAgICAgY2FzZSAyMSA6IAorICAgICAgICAgICAgY2FzZSAyMiA6IAorICAg
ICAgICAgICAgY2FzZSAyNCA6IAorICAgICAgICAgICAgY2FzZSAyNSA6IAorICAgICAgICAgICAg
Y2FzZSAyNiA6IAorICAgICAgICAgICAgY2FzZSAyNyA6IAorICAgICAgICAgICAgY2FzZSAyOCA6
IAorICAgICAgICAgICAgY2FzZSAzMCA6IAorICAgICAgICAgICAgY2FzZSAzMSA6IAorICAgICAg
ICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAzMiA6IAorICAgICAgICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIEludF9DeCAqLzc7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChleGl0JDIgPT09IDMpIHsKKyAgICAgICAg
ICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIF9zaGFycCA9IC8qIGZhbHNl
ICovMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhw
Y3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJyMnIik7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgfQorICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKHBs
dXMgIT09IDApIHsKKyAgICAgICAgICBpZiAoc3BhY2UgIT09IDApIHsKKyAgICAgICAgICAgIGlm
IChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICBfc3BhY2UgPSAvKiBmYWxzZSAq
LzA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJs
ZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICIgIiAqLzMyLCAiJysnIik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7
CisgICAgICAgICAgICBfcGx1cyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJysn
Iik7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNwYWNlICE9PSAw
KSB7CisgICAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICBfc3Bh
Y2UgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAK
KyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gaW5jb21w
YXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIicgJyIpOworICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAg
ICAgICAgICAgICAgICAyNzE2LAorICAgICAgICAgICAgICAgICAgMjgKKyAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAgIH07
CisgIH07CisgIHZhciBpbmNvbXBhdGlibGVfZmxhZyA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJf
aW5kLCBzeW1iLCBvcHRpb24pIHsKKyAgICB2YXIgc3ViZm10ID0gJCRTdHJpbmcuc3ViKHN0ciwg
cGN0X2luZCwgc3RyX2luZCAtIHBjdF9pbmQgfCAwKTsKKyAgICByZXR1cm4gQ3VycnkuXzUoZmFp
bHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIFN0cmlu
Z19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnZh
bGlkIGZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9C
bG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAq
LzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9j
ay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiBhdCBjaGFyYWN0
ZXIgbnVtYmVyICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Js
b2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF9k
ICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcg
Ki8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9u
ICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRl
cmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0
cmluZyAqL0Jsb2NrLl9fKDIsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaXMgaW5jb21wYXRp
YmxlIHdpdGggJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBDaGFyICovQmxvY2suX18oMCwgWy8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18o
MTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIicgaW4gc3ViLWZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAg
ICAiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGlzIGluY29t
cGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlUyIKKyAgICAgICAgICAgICAgICAgIF0p
LCBzdHIsIHBjdF9pbmQsIG9wdGlvbiwgc3ltYiwgc3ViZm10KTsKKyAgfTsKKyAgdmFyIHBhcnNl
X3Bvc2l0aXZlID0gZnVuY3Rpb24gKF9zdHJfaW5kLCBlbmRfaW5kLCBfYWNjKSB7CisgICAgd2hp
bGUodHJ1ZSkgeworICAgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgICB2YXIgc3RyX2luZCA9IF9z
dHJfaW5kOworICAgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgaW52YWxp
ZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7Cisg
ICAgICB9CisgICAgICB2YXIgYyA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAg
ICAgaWYgKGMgPiA1NyB8fCBjIDwgNDgpIHsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwor
ICAgICAgICAgICAgICAgIHN0cl9pbmQsCisgICAgICAgICAgICAgICAgYWNjCisgICAgICAgICAg
ICAgIF07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG5ld19hY2MgPSBDYW1s
X2ludDMyLmltdWwoYWNjLCAxMCkgKyAoYyAtIC8qICIwIiAqLzQ4IHwgMCkgfCAwOworICAgICAg
ICBpZiAobmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgeworICAgICAgICAgIHJldHVy
biBDdXJyeS5fMyhmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IGludGVnZXIgIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2suX18oNCwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAq
LzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVj
aXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
U3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2Nr
Ll9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAq
LzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJp
bnZhbGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVk
IgorICAgICAgICAgICAgICAgICAgICAgICAgXSksIHN0ciwgbmV3X2FjYywgU3lzLm1heF9zdHJp
bmdfbGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBfYWNjID0g
bmV3X2FjYzsKKyAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9
OworICB2YXIgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uID0gZnVuY3Rpb24gKHBjdF9pbmQsIHN0cl9p
bmQsIGVuZF9pbmQsIG1pbnVzLCBwbHVzLCBzaGFycCwgc3BhY2UsIGlnbiwgcGFkLCBwcmVjKSB7
CisgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgIGludmFsaWRfZm9ybWF0X21l
c3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgIH0KKyAgICB2
YXIgcGFyc2VfY29udiA9IGZ1bmN0aW9uIChwYWRwcmVjKSB7CisgICAgICByZXR1cm4gcGFyc2Vf
Y29udmVyc2lvbihwY3RfaW5kLCBzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQsIHBsdXMsIHNoYXJw
LCBzcGFjZSwgaWduLCBwYWQsIHByZWMsIHBhZHByZWMsIENhbWxfc3RyaW5nLmdldChzdHIsIHN0
cl9pbmQpKTsKKyAgICB9OworICAgIGlmICh0eXBlb2YgcGFkID09PSAibnVtYmVyIikgeworICAg
ICAgdmFyIGV4aXQgPSAwOworICAgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgewor
ICAgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBwYXJzZV9jb252KC8qIE5vX3BhZGRp
bmcgKi8wKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQg
PSAxOworICAgICAgfQorICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKG1pbnVz
ICE9PSAwKSB7CisgICAgICAgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlX2NvbnYoLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBb
LyogTGVmdCAqLzBdKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlX2NvbnYoLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIExlZnQgKi8wLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmVjWzBdCisgICAgICAgICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgewor
ICAgICAgICAgIHJldHVybiBwYXJzZV9jb252KC8qIEFyZ19wYWRkaW5nICovQmxvY2suX18oMSwg
Wy8qIFJpZ2h0ICovMV0pKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBy
ZXR1cm4gcGFyc2VfY29udigvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBy
ZWNbMF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBwYXJzZV9jb252KHBhZCk7Cisg
ICAgfQorICB9OworICB2YXIgcGFyc2VfYWZ0ZXJfcGFkZGluZyA9IGZ1bmN0aW9uIChwY3RfaW5k
LCBzdHJfaW5kLCBlbmRfaW5kLCBtaW51cywgcGx1cywgc2hhcnAsIHNwYWNlLCBpZ24sIHBhZCkg
eworICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICBpbnZhbGlkX2Zvcm1hdF9t
ZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICB9CisgICAg
dmFyIHN5bWIgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICBpZiAoc3ltYiAh
PT0gNDYpIHsKKyAgICAgIHJldHVybiBwYXJzZV9jb252ZXJzaW9uKHBjdF9pbmQsIHN0cl9pbmQg
KyAxIHwgMCwgZW5kX2luZCwgcGx1cywgc2hhcnAsIHNwYWNlLCBpZ24sIHBhZCwgLyogTm9fcHJl
Y2lzaW9uICovMCwgcGFkLCBzeW1iKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgcGN0
X2luZCQxID0gcGN0X2luZDsKKyAgICAgIHZhciBzdHJfaW5kJDEgPSBzdHJfaW5kICsgMSB8IDA7
CisgICAgICB2YXIgZW5kX2luZCQxID0gZW5kX2luZDsKKyAgICAgIHZhciBtaW51cyQxID0gbWlu
dXM7CisgICAgICB2YXIgcGx1cyQxID0gcGx1czsKKyAgICAgIHZhciBzaGFycCQxID0gc2hhcnA7
CisgICAgICB2YXIgc3BhY2UkMSA9IHNwYWNlOworICAgICAgdmFyIGlnbiQxID0gaWduOworICAg
ICAgdmFyIHBhZCQxID0gcGFkOworICAgICAgaWYgKHN0cl9pbmQkMSA9PT0gZW5kX2luZCQxKSB7
CisgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCQxLCAidW5leHBlY3RlZCBl
bmQgb2YgZm9ybWF0Iik7CisgICAgICB9CisgICAgICB2YXIgcGFyc2VfbGl0ZXJhbCA9IGZ1bmN0
aW9uIChtaW51cywgc3RyX2luZCkgeworICAgICAgICB2YXIgbWF0Y2ggPSBwYXJzZV9wb3NpdGl2
ZShzdHJfaW5kLCBlbmRfaW5kJDEsIDApOworICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcHJl
Y2lzaW9uKHBjdF9pbmQkMSwgbWF0Y2hbMF0sIGVuZF9pbmQkMSwgbWludXMsIHBsdXMkMSwgc2hh
cnAkMSwgc3BhY2UkMSwgaWduJDEsIHBhZCQxLCAvKiBMaXRfcHJlY2lzaW9uICovW21hdGNoWzFd
XSk7CisgICAgICB9OworICAgICAgdmFyIHN5bWIkMSA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0
cl9pbmQkMSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgZXhpdCQxID0gMDsKKyAg
ICAgIGlmIChzeW1iJDEgPj0gNDgpIHsKKyAgICAgICAgaWYgKHN5bWIkMSA+PSA1OCkgeworICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJl
dHVybiBwYXJzZV9saXRlcmFsKG1pbnVzJDEsIHN0cl9pbmQkMSk7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIGVsc2UgaWYgKHN5bWIkMSA+PSA0MikgeworICAgICAgICBzd2l0Y2ggKHN5bWIk
MSAtIDQyIHwgMCkgeworICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICByZXR1cm4g
cGFyc2VfYWZ0ZXJfcHJlY2lzaW9uKHBjdF9pbmQkMSwgc3RyX2luZCQxICsgMSB8IDAsIGVuZF9p
bmQkMSwgbWludXMkMSwgcGx1cyQxLCBzaGFycCQxLCBzcGFjZSQxLCBpZ24kMSwgcGFkJDEsIC8q
IEFyZ19wcmVjaXNpb24gKi8xKTsKKyAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBjYXNl
IDMgOiAKKyAgICAgICAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgY2FzZSA1
IDogCisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAx
OworICAgICAgfQorICAgICAgaWYgKGV4aXQkMSA9PT0gMikgeworICAgICAgICBpZiAobGVnYWN5
X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbChtaW51cyQxIHx8
ICsoc3ltYiQxID09PSAvKiAiLSIgKi80NSksIHN0cl9pbmQkMSArIDEgfCAwKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAg
fQorICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQx
KSB7CisgICAgICAgICAgcmV0dXJuIHBhcnNlX2FmdGVyX3ByZWNpc2lvbihwY3RfaW5kJDEsIHN0
cl9pbmQkMSwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGln
biQxLCBwYWQkMSwgLyogTGl0X3ByZWNpc2lvbiAqL1swXSk7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGludmFsaWRfZm9ybWF0X3dpdGhvdXQoc3RyX2luZCQx
IC0gMSB8IDAsIC8qICIuIiAqLzQ2LCAicHJlY2lzaW9uIik7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIAorICAgIH0KKyAgfTsKKyAgdmFyIHBhcnNlX2xpdGVyYWwgPSBmdW5jdGlvbiAobGl0
X3N0YXJ0LCBfc3RyX2luZCwgZW5kX2luZCkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZh
ciBzdHJfaW5kID0gX3N0cl9pbmQ7CisgICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgewor
ICAgICAgICByZXR1cm4gYWRkX2xpdGVyYWwobGl0X3N0YXJ0LCBzdHJfaW5kLCAvKiBFbmRfb2Zf
Zm9ybWF0ICovMCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNoID0g
Q2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCk7CisgICAgICAgIGlmIChtYXRjaCAhPT0gMzcp
IHsKKyAgICAgICAgICBpZiAobWF0Y2ggIT09IDY0KSB7CisgICAgICAgICAgICBfc3RyX2luZCA9
IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxID0g
cGFyc2VfYWZ0ZXJfYXQoc3RyX2luZCArIDEgfCAwLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHJl
dHVybiBhZGRfbGl0ZXJhbChsaXRfc3RhcnQsIHN0cl9pbmQsIG1hdGNoJDFbMF0pOworICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMiA9
IHBhcnNlX2Zvcm1hdChzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICByZXR1cm4gYWRkX2xp
dGVyYWwobGl0X3N0YXJ0LCBzdHJfaW5kLCBtYXRjaCQyWzBdKTsKKyAgICAgICAgfQorICAgICAg
fQorICAgIH07CisgIH07CisgIHZhciBwYXJzZV9mb3JtYXQgPSBmdW5jdGlvbiAocGN0X2luZCwg
ZW5kX2luZCkgeworICAgIHZhciBwY3RfaW5kJDEgPSBwY3RfaW5kOworICAgIHZhciBzdHJfaW5k
ID0gcGN0X2luZCArIDEgfCAwOworICAgIHZhciBlbmRfaW5kJDEgPSBlbmRfaW5kOworICAgIGlm
IChzdHJfaW5kID09PSBlbmRfaW5kJDEpIHsKKyAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2Uo
ZW5kX2luZCQxLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgfQorICAgIHZhciBt
YXRjaCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgIGlmIChtYXRjaCAhPT0g
OTUpIHsKKyAgICAgIHJldHVybiBwYXJzZV9mbGFncyhwY3RfaW5kJDEsIHN0cl9pbmQsIGVuZF9p
bmQkMSwgLyogZmFsc2UgKi8wKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gcGFy
c2VfZmxhZ3MocGN0X2luZCQxLCBzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQkMSwgLyogdHJ1ZSAq
LzEpOworICAgIH0KKyAgfTsKKyAgdmFyIHBhcnNlX2FmdGVyX2F0ID0gZnVuY3Rpb24gKHN0cl9p
bmQsIGVuZF9pbmQpIHsKKyAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgcmV0
dXJuIC8qIEZtdF9FQkIgKi9bLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAg
ICAgICAgICAgICAgIC8qICJAIiAqLzY0LAorICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zv
cm1hdCAqLzAKKyAgICAgICAgICAgICAgICBdKV07CisgICAgfQorICAgIGVsc2UgeworICAgICAg
dmFyIGMgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgIHZhciBleGl0ID0g
MDsKKyAgICAgIGlmIChjID49IDY1KSB7CisgICAgICAgIGlmIChjID49IDk0KSB7CisgICAgICAg
ICAgdmFyIHN3aXRjaGVyID0gYyAtIDEyMyB8IDA7CisgICAgICAgICAgaWYgKHN3aXRjaGVyID4g
MiB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3dpdGNoZXIpIHsKKyAgICAg
ICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfdGFnKC8q
IHRydWUgKi8xLCBzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQpOworICAgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgdmFyIGJlZ19p
bmQgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSBwYXJz
ZV9saXRlcmFsKGJlZ19pbmQsIGJlZ19pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgICAg
cmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2xvc2VfdGFnICovMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSldOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYyA+PSA5MSkgeworICAgICAgICAgIHN3aXRjaCAoYyAt
IDkxIHwgMCkgeworICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgcmV0dXJu
IHBhcnNlX3RhZygvKiBmYWxzZSAqLzAsIHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCk7CisgICAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgIHZhciBi
ZWdfaW5kJDEgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDEg
PSBwYXJzZV9saXRlcmFsKGJlZ19pbmQkMSwgYmVnX2luZCQxLCBlbmRfaW5kKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9f
KDE3LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2xvc2VfYm94ICovMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxWzBdCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pXTsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAg
ZWxzZSBpZiAoYyAhPT0gMTApIHsKKyAgICAgICAgaWYgKGMgPj0gMzIpIHsKKyAgICAgICAgICBz
d2l0Y2ggKGMgLSAzMiB8IDApIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAg
ICAgIHZhciBiZWdfaW5kJDIgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFy
IG1hdGNoJDIgPSBwYXJzZV9saXRlcmFsKGJlZ19pbmQkMiwgYmVnX2luZCQyLCBlbmRfaW5kKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAq
L0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQnJlYWsgKi9C
bG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAICIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDJbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSld
OworICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgaWYgKChzdHJfaW5kICsg
MSB8IDApIDwgZW5kX2luZCAmJiBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kICsgMSB8IDAp
ID09PSAvKiAiJSIgKi8zNykgeworICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkMyA9IHN0
cl9pbmQgKyAyIHwgMDsKKyAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQzID0gcGFyc2VfbGl0
ZXJhbChiZWdfaW5kJDMsIGJlZ19pbmQkMywgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFc2NhcGVkX3BlcmNlbnQgKi82LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkM1swXQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwg
c3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAq
L1svKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogIkAiICovNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aCQ0WzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAg
ICAgICAgICAgICB2YXIgYmVnX2luZCQ0ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAg
ICAgIHZhciBtYXRjaCQ1ID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDQsIGJlZ19pbmQkNCwgZW5k
X2luZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGlu
Z19saXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJy
ZWFrICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQCwi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ1WzBdCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pXTsKKyAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVn
X2luZCQ1ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQ2ID0g
cGFyc2VfbGl0ZXJhbChiZWdfaW5kJDUsIGJlZ19pbmQkNSwgZW5kX2luZCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygx
NywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZsdXNoX25ld2xpbmUgKi80LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDZbMF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSldOworICAgICAgICAgICAgY2FzZSAyNyA6IAorICAgICAgICAgICAgICAgIHZh
ciBzdHJfaW5kJDEgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFyIGVuZF9p
bmQkMSA9IGVuZF9pbmQ7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDc7CisgICAgICAgICAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgIGlmIChzdHJfaW5kJDEgPT09IGVuZF9pbmQk
MSB8fCBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kJDEpICE9PSAvKiAiPCIgKi82MCkgewor
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91
bmQ7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB2YXIgc3RyX2luZF8x
ID0gcGFyc2Vfc3BhY2VzKHN0cl9pbmQkMSArIDEgfCAwLCBlbmRfaW5kJDEpOworICAgICAgICAg
ICAgICAgICAgdmFyIG1hdGNoJDggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kXzEpOwor
ICAgICAgICAgICAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgICAgICAgICAgICBpZiAo
bWF0Y2gkOCA+PSA0OCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkOCA+PSA1OCkg
eworICAgICAgICAgICAgICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5v
dF9mb3VuZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICBleGl0JDEgPSAxOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtYXRj
aCQ4ICE9PSA0NSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCQxID0gMTsKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgIGlmIChleGl0JDEgPT09IDEpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIG1hdGNoJDkgPSBwYXJzZV9pbnRlZ2VyKHN0cl9pbmRfMSwgZW5kX2luZCQx
KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gbWF0Y2gkOVsxXTsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyhtYXRjaCQ5WzBdLCBlbmRf
aW5kJDEpOworICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSBDYW1sX3N0cmluZy5n
ZXQoc3RyLCBzdHJfaW5kXzMpOworICAgICAgICAgICAgICAgICAgICB2YXIgc3dpdGNoZXIkMSA9
IG1hdGNoJDEwIC0gNDUgfCAwOworICAgICAgICAgICAgICAgICAgICBpZiAoc3dpdGNoZXIkMSA+
IDEyIHx8IHN3aXRjaGVyJDEgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYgKHN3aXRj
aGVyJDEgIT09IDE3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAk
JFN0cmluZy5zdWIoc3RyLCBzdHJfaW5kJDEgLSAyIHwgMCwgKHN0cl9pbmRfMyAtIHN0cl9pbmQk
MSB8IDApICsgMyB8IDApOworICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNyA9IC8qIHR1
cGxlICovWworICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxIHwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogQnJlYWsgKi9CbG9jay5fXygwLCBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHN3aXRjaGVyJDEgPT09IDIgfHwgc3dpdGNoZXIkMSA9PT0gMSkgeworICAgICAgICAg
ICAgICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTEgPSBwYXJzZV9pbnRlZ2VyKHN0cl9pbmRfMywgZW5k
X2luZCQxKTsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RyX2luZF81ID0gcGFyc2Vfc3Bh
Y2VzKG1hdGNoJDExWzBdLCBlbmRfaW5kJDEpOworICAgICAgICAgICAgICAgICAgICAgIGlmIChD
YW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kXzUpICE9PSAvKiAiPiIgKi82MikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5k
OworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICB2YXIgcyQx
ID0gJCRTdHJpbmcuc3ViKHN0ciwgc3RyX2luZCQxIC0gMiB8IDAsIChzdHJfaW5kXzUgLSBzdHJf
aW5kJDEgfCAwKSArIDMgfCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ3ID0gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxIHwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIEJyZWFrICovQmxvY2suX18oMCwgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHMkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMVsxXQorICAgICAgICAgICAg
ICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaCAoZXhuKXsKKyAgICAgICAgICAgICAg
ICAgIGlmIChleG4gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkgeworICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQ3ID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgc3RyX2luZCQxLAorICAgICAgICAgICAgICAgICAgICAgIC8qIEJyZWFrICovQmxvY2su
X18oMCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAiQDsiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAwCisgICAgICAgICAgICAg
ICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhuWzBdID09PSBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5mYWlsdXJlKSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDcgPSAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBzdHJfaW5kJDEsCisgICAgICAgICAgICAgICAg
ICAgICAgLyogQnJlYWsgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJAOyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgZXhuOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgbmV4dF9pbmQgPSBtYXRjaCQ3WzBdOworICAg
ICAgICAgICAgICAgIHZhciBtYXRjaCQxMiA9IHBhcnNlX2xpdGVyYWwobmV4dF9pbmQsIG5leHRf
aW5kLCBlbmRfaW5kJDEpOworICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8q
IEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXRjaCQ3WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEyWzBd
CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgIGNhc2UgMjggOiAK
KyAgICAgICAgICAgICAgICB2YXIgc3RyX2luZCQyID0gc3RyX2luZCArIDEgfCAwOworICAgICAg
ICAgICAgICAgIHZhciBlbmRfaW5kJDIgPSBlbmRfaW5kOworICAgICAgICAgICAgICAgIHZhciBt
YXRjaCQxMzsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgdmFyIHN0
cl9pbmRfMSQxID0gcGFyc2Vfc3BhY2VzKHN0cl9pbmQkMiwgZW5kX2luZCQyKTsKKyAgICAgICAg
ICAgICAgICAgIHZhciBtYXRjaCQxNCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmRfMSQx
KTsKKyAgICAgICAgICAgICAgICAgIHZhciBleGl0JDIgPSAwOworICAgICAgICAgICAgICAgICAg
aWYgKG1hdGNoJDE0ID49IDQ4KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQxNCA+
PSA1OCkgeworICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgZXhpdCQyID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMTQgIT09IDQ1
KSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7CisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgZXhpdCQyID0gMTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGlm
IChleGl0JDIgPT09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE1ID0gcGFy
c2VfaW50ZWdlcihzdHJfaW5kXzEkMSwgZW5kX2luZCQyKTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIHN0cl9pbmRfMyQxID0gcGFyc2Vfc3BhY2VzKG1hdGNoJDE1WzBdLCBlbmRfaW5kJDIpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZF8zJDEp
ICE9PSAvKiAiPiIgKi82MikgeworICAgICAgICAgICAgICAgICAgICAgIHRocm93IENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB2YXIgcyQyID0gJCRTdHJpbmcuc3ViKHN0ciwgc3RyX2luZCQyIC0gMiB8
IDAsIChzdHJfaW5kXzMkMSAtIHN0cl9pbmQkMiB8IDApICsgMyB8IDApOworICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQxMyA9IC8qIFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJfaW5kXzMkMSArIDEgfCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
LyogTWFnaWNfc2l6ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzJDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTVbMV0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICBdXTsKKyAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBjYXRjaCAoZXhuJDEpeworICAgICAgICAgICAgICAgICAgaWYgKGV4biQxID09
PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMTMgPSAvKiBOb25lICovMDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGV4biQxWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5m
YWlsdXJlKSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7Cisg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgZXhuJDE7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGlmIChtYXRjaCQxMykgeworICAgICAgICAgICAgICAgICAg
dmFyIG1hdGNoJDE2ID0gbWF0Y2gkMTNbMF07CisgICAgICAgICAgICAgICAgICB2YXIgbmV4dF9p
bmQkMSA9IG1hdGNoJDE2WzBdOworICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE3ID0gcGFy
c2VfbGl0ZXJhbChuZXh0X2luZCQxLCBuZXh0X2luZCQxLCBlbmRfaW5kJDIpOworICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5f
XygxNywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTZbMV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxN1swXQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTggPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQk
Miwgc3RyX2luZCQyLCBlbmRfaW5kJDIpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZt
dF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogU2Nhbl9pbmRpYyAqL0Jsb2NrLl9fKDIsIFsvKiAiPCIgKi82
MF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMThbMF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y2FzZSAxIDogCisgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGNhc2UgMyA6IAor
ICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAg
IGNhc2UgNyA6IAorICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICBjYXNlIDkgOiAK
KyAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAg
ICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICAgIGNhc2Ug
MTYgOiAKKyAgICAgICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIGNhc2UgMTggOiAKKyAg
ICAgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAg
IGNhc2UgMjEgOiAKKyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgIGNhc2UgMjMg
OiAKKyAgICAgICAgICAgIGNhc2UgMjQgOiAKKyAgICAgICAgICAgIGNhc2UgMjUgOiAKKyAgICAg
ICAgICAgIGNhc2UgMjYgOiAKKyAgICAgICAgICAgIGNhc2UgMjkgOiAKKyAgICAgICAgICAgIGNh
c2UgMzAgOiAKKyAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQ2
ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQxOSA9IHBhcnNl
X2xpdGVyYWwoYmVnX2luZCQ2LCBiZWdfaW5kJDYsIGVuZF9pbmQpOworICAgICAgICAgICAgICAg
IHJldHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGRmx1c2ggKi8yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDE5WzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
XTsKKyAgICAgICAgICAgIGNhc2UgMzIgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQ3
ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQyMCA9IHBhcnNl
X2xpdGVyYWwoYmVnX2luZCQ3LCBiZWdfaW5kJDcsIGVuZF9pbmQpOworICAgICAgICAgICAgICAg
IHJldHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFc2NhcGVkX2F0ICovNSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMFswXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICBdKV07CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICB2YXIgYmVnX2luZCQ4ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICB2YXIg
bWF0Y2gkMjEgPSBwYXJzZV9saXRlcmFsKGJlZ19pbmQkOCwgYmVnX2luZCQ4LCBlbmRfaW5kKTsK
KyAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5f
XygxNywgWworICAgICAgICAgICAgICAgICAgICAvKiBGb3JjZV9uZXdsaW5lICovMywKKyAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkMjFbMF0KKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAg
IH0KKyAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgIHZhciBiZWdfaW5kJDkgPSBzdHJf
aW5kICsgMSB8IDA7CisgICAgICAgIHZhciBtYXRjaCQyMiA9IHBhcnNlX2xpdGVyYWwoYmVnX2lu
ZCQ5LCBiZWdfaW5kJDksIGVuZF9pbmQpOworICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1sv
KiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAgICAgICAgIC8q
IFNjYW5faW5kaWMgKi9CbG9jay5fXygyLCBbY10pLAorICAgICAgICAgICAgICAgICAgICBtYXRj
aCQyMlswXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAgICAgCisgICAgfQor
ICB9OworICB2YXIgYWRkX2xpdGVyYWwgPSBmdW5jdGlvbiAobGl0X3N0YXJ0LCBzdHJfaW5kLCBm
bXQpIHsKKyAgICB2YXIgc2l6ZSA9IHN0cl9pbmQgLSBsaXRfc3RhcnQgfCAwOworICAgIGlmIChz
aXplICE9PSAwKSB7CisgICAgICBpZiAoc2l6ZSAhPT0gMSkgeworICAgICAgICByZXR1cm4gLyog
Rm10X0VCQiAqL1svKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAg
ICAgICAgICAgICQkU3RyaW5nLnN1YihzdHIsIGxpdF9zdGFydCwgc2l6ZSksCisgICAgICAgICAg
ICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIENoYXJfbGl0ZXJhbCAqL0Jsb2Nr
Ll9fKDEyLCBbCisgICAgICAgICAgICAgICAgICAgIENhbWxfc3RyaW5nLmdldChzdHIsIGxpdF9z
dGFydCksCisgICAgICAgICAgICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAgXSldOwor
ICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBGbXRfRUJCICovW2Zt
dF07CisgICAgfQorICB9OworICB2YXIgcGFyc2Vfc3BhY2VzID0gZnVuY3Rpb24gKF9zdHJfaW5k
LCBlbmRfaW5kKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHN0cl9pbmQgPSBfc3Ry
X2luZDsKKyAgICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICAgIGludmFsaWRf
Zm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAg
ICAgfQorICAgICAgaWYgKENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpID09PSAvKiAiICIg
Ki8zMikgeworICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgY29u
dGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4g
c3RyX2luZDsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgcGFyc2VfaW50ZWdlciA9IGZ1
bmN0aW9uIChzdHJfaW5kLCBlbmRfaW5kKSB7CisgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQp
IHsKKyAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5k
IG9mIGZvcm1hdCIpOworICAgIH0KKyAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3Ry
LCBzdHJfaW5kKTsKKyAgICBpZiAobWF0Y2ggPj0gNDgpIHsKKyAgICAgIGlmIChtYXRjaCA+PSA1
OCkgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNh
bWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgMjYyMSwKKyAgICAgICAgICAg
ICAgICAxMQorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHJldHVybiBwYXJzZV9wb3NpdGl2ZShzdHJfaW5kLCBlbmRfaW5kLCAw
KTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobWF0Y2ggIT09IDQ1KSB7CisgICAgICB0
aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVy
ZSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIs
CisgICAgICAgICAgICAgIDI2MjEsCisgICAgICAgICAgICAgIDExCisgICAgICAgICAgICBdCisg
ICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBpZiAoKHN0cl9pbmQgKyAxIHwg
MCkgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5k
LCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgICB9CisgICAgICB2YXIgYyA9IENh
bWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQgKyAxIHwgMCk7CisgICAgICBpZiAoYyA+IDU3IHx8
IGMgPCA0OCkgeworICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hhcmFjdGVyKHN0cl9pbmQgKyAx
IHwgMCwgImRpZ2l0IiwgYyk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1h
dGNoJDEgPSBwYXJzZV9wb3NpdGl2ZShzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQsIDApOworICAg
ICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgbWF0Y2gkMVswXSwKKyAg
ICAgICAgICAgICAgICAtbWF0Y2gkMVsxXSB8IDAKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0K
KyAgICB9CisgIH07CisgIHZhciBjb21wdXRlX2Zsb2F0X2NvbnYgPSBmdW5jdGlvbiAocGN0X2lu
ZCwgc3RyX2luZCwgX3BsdXMsIF9zcGFjZSwgc3ltYikgeworICAgIHdoaWxlKHRydWUpIHsKKyAg
ICAgIHZhciBzcGFjZSA9IF9zcGFjZTsKKyAgICAgIHZhciBwbHVzID0gX3BsdXM7CisgICAgICBp
ZiAocGx1cyAhPT0gMCkgeworICAgICAgICBpZiAoc3BhY2UgIT09IDApIHsKKyAgICAgICAgICBp
ZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIF9zcGFjZSA9IC8qIGZhbHNlICov
MDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3Rf
aW5kLCBzdHJfaW5kLCAvKiAiICIgKi8zMiwgIicrJyIpOworICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICAgICAgaWYg
KHN5bWIgPj0gNzIpIHsKKyAgICAgICAgICAgIHZhciBzd2l0Y2hlciA9IHN5bWIgLSAxMDEgfCAw
OworICAgICAgICAgICAgaWYgKHN3aXRjaGVyID4gMiB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAg
ICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgc3dpdGNoIChzd2l0Y2hlcikgeworICAgICAgICAgICAgICAgIGNhc2UgMCA6
IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcGUgKi80OworICAgICAgICAg
ICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcGYg
Ki8xOworICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogRmxvYXRfcGcgKi8xMDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChzeW1iID49IDY5
KSB7CisgICAgICAgICAgICBzd2l0Y2ggKHN5bWIgLSA2OSB8IDApIHsKKyAgICAgICAgICAgICAg
Y2FzZSAwIDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcEUgKi83OworICAg
ICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIEZsb2F0X3BHICovMTM7CisgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV4aXQgPSAx
OworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICAgICAg
aWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICAgIF9wbHVzID0gLyogZmFsc2Ug
Ki8wOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGli
bGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJysnIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlm
IChzcGFjZSAhPT0gMCkgeworICAgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgICAgaWYgKHN5
bWIgPj0gNzIpIHsKKyAgICAgICAgICB2YXIgc3dpdGNoZXIkMSA9IHN5bWIgLSAxMDEgfCAwOwor
ICAgICAgICAgIGlmIChzd2l0Y2hlciQxID4gMiB8fCBzd2l0Y2hlciQxIDwgMCkgeworICAgICAg
ICAgICAgZXhpdCQxID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBzd2l0Y2ggKHN3aXRjaGVyJDEpIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfc2UgKi81OworICAgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9zZiAqLzI7CisgICAgICAg
ICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3NnICov
MTE7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBlbHNlIGlmIChzeW1iID49IDY5KSB7CisgICAgICAgICAgc3dpdGNoIChzeW1i
IC0gNjkgfCAwKSB7CisgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICByZXR1
cm4gLyogRmxvYXRfc0UgKi84OworICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAg
ICAgZXhpdCQxID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9zRyAqLzE0OworICAgICAgICAg
ICAgCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4
aXQkMSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMSA9PT0gMSkgeworICAgICAg
ICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgX3NwYWNlID0gLyogZmFs
c2UgKi8wOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFn
KHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIsICInICciKTsKKyAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIGlmIChzeW1iID49IDcyKSB7CisgICAgICAg
IHZhciBzd2l0Y2hlciQyID0gc3ltYiAtIDEwMSB8IDA7CisgICAgICAgIGlmIChzd2l0Y2hlciQy
ID4gMiB8fCBzd2l0Y2hlciQyIDwgMCkgeworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAg
ICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAg
ICAgICAgICAgICAgIDI3NDQsCisgICAgICAgICAgICAgICAgICAyNQorICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICBzd2l0Y2ggKHN3aXRjaGVyJDIpIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBGbG9hdF9lICovMzsKKyAgICAgICAgICAgIGNhc2UgMSA6IAorICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9mICovMDsKKyAgICAgICAgICAgIGNhc2UgMiA6
IAorICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9nICovOTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAoc3ltYiA+PSA2
OSkgeworICAgICAgICBzd2l0Y2ggKHN5bWIgLSA2OSB8IDApIHsKKyAgICAgICAgICBjYXNlIDAg
OiAKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X0UgKi82OworICAgICAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfRiAqLzE1OworICAgICAgICAgIGNh
c2UgMiA6IAorICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfRyAqLzEyOworICAgICAgICAg
IAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAg
ICAgICAgICAgICAgIDI3NDQsCisgICAgICAgICAgICAgICAgMjUKKyAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgc2VhcmNoX3N1YmZv
cm1hdF9lbmQgPSBmdW5jdGlvbiAoX3N0cl9pbmQsIGVuZF9pbmQsIGMpIHsKKyAgICB3aGlsZSh0
cnVlKSB7CisgICAgICB2YXIgc3RyX2luZCA9IF9zdHJfaW5kOworICAgICAgaWYgKHN0cl9pbmQg
PT09IGVuZF9pbmQpIHsKKyAgICAgICAgQ3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3Jt
YXQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEx
LCBbCisgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAg
ICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnOiB1bmNsb3NlZCBzdWItZm9ybWF0LCBleHBlY3RlZCAiJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIiUiICovMzcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hhciAqL0Jsb2NrLl9fKDAsIFsvKiBTdHJpbmdf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8w
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3By
ZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
KV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAg
ICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3Nl
ZCBzdWItZm9ybWF0LCBleHBlY3RlZCAiJSUlYyIgYXQgY2hhcmFjdGVyIG51bWJlciAlZCcKKyAg
ICAgICAgICAgICAgICBdKSwgc3RyLCBjLCBlbmRfaW5kKTsKKyAgICAgIH0KKyAgICAgIHZhciBt
YXRjaCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAgaWYgKG1hdGNoICE9
PSAzNykgeworICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgY29u
dGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBpZiAoKHN0
cl9pbmQgKyAxIHwgMCkgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9t
ZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCArIDEgfCAwKSA9PT0gYykg
eworICAgICAgICAgIHJldHVybiBzdHJfaW5kOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgIHZhciBtYXRjaCQxID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCArIDEg
fCAwKTsKKyAgICAgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICAgICAgaWYgKG1hdGNoJDEgPj0g
OTUpIHsKKyAgICAgICAgICAgIGlmIChtYXRjaCQxID49IDEyMykgeworICAgICAgICAgICAgICBp
ZiAobWF0Y2gkMSA+PSAxMjYpIHsKKyAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG1h
dGNoJDEgLSAxMjMgfCAwKSB7CisgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICB2YXIgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kKHN0cl9pbmQg
KyAyIHwgMCwgZW5kX2luZCwgLyogIn0iICovMTI1KTsKKyAgICAgICAgICAgICAgICAgICAgICBf
c3RyX2luZCA9IHN1Yl9lbmQgKyAyIHwgMDsKKyAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAg
ICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hh
cmFjdGVyKHN0cl9pbmQgKyAxIHwgMCwgImNoYXJhY3RlciAnKSciLCAvKiAifSIgKi8xMjUpOwor
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQxID49IDk2KSB7CisgICAg
ICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgIGlmICgoc3RyX2luZCArIDIgfCAwKSA9PT0gZW5kX2luZCkgeworICAgICAg
ICAgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5k
IG9mIGZvcm1hdCIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHZhciBtYXRjaCQy
ID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCArIDIgfCAwKTsKKyAgICAgICAgICAgICAg
aWYgKG1hdGNoJDIgIT09IDQwKSB7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDIgIT09IDEy
MykgeworICAgICAgICAgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kICsgMyB8IDA7CisgICAg
ICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICB2YXIgc3Vi
X2VuZCQxID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQoc3RyX2luZCArIDMgfCAwLCBlbmRfaW5kLCAv
KiAifSIgKi8xMjUpOworICAgICAgICAgICAgICAgICAgX3N0cl9pbmQgPSBzdWJfZW5kJDEgKyAy
IHwgMDsKKyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICB2YXIgc3ViX2VuZCQyID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQoc3Ry
X2luZCArIDMgfCAwLCBlbmRfaW5kLCAvKiAiKSIgKi80MSk7CisgICAgICAgICAgICAgICAgX3N0
cl9pbmQgPSBzdWJfZW5kJDIgKyAyIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9CisgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMSAhPT0gNDApIHsKKyAgICAgICAgICAgIGlm
IChtYXRjaCQxICE9PSA0MSkgeworICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hh
cmFjdGVyKHN0cl9pbmQgKyAxIHwgMCwgImNoYXJhY3RlciAnfSciLCAvKiAiKSIgKi80MSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
dmFyIHN1Yl9lbmQkMyA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kKHN0cl9pbmQgKyAyIHwgMCwgZW5k
X2luZCwgLyogIikiICovNDEpOworICAgICAgICAgICAgX3N0cl9pbmQgPSBzdWJfZW5kJDMgKyAy
IHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0K
KyAgICAgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICAgICAgX3N0cl9pbmQgPSBzdHJf
aW5kICsgMiB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAg
ICAgICB9CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9OworICB2
YXIgcGFyc2VfY29udmVyc2lvbiA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBlbmRfaW5k
LCBwbHVzLCBzaGFycCwgc3BhY2UsIGlnbiwgcGFkLCBwcmVjLCBwYWRwcmVjLCBzeW1iKSB7Cisg
ICAgdmFyIHBsdXNfdXNlZCA9IC8qIGZhbHNlICovMDsKKyAgICB2YXIgc2hhcnBfdXNlZCA9IC8q
IGZhbHNlICovMDsKKyAgICB2YXIgc3BhY2VfdXNlZCA9IC8qIGZhbHNlICovMDsKKyAgICB2YXIg
aWduX3VzZWQgPSBbLyogZmFsc2UgKi8wXTsKKyAgICB2YXIgcGFkX3VzZWQgPSAvKiBmYWxzZSAq
LzA7CisgICAgdmFyIHByZWNfdXNlZCA9IFsvKiBmYWxzZSAqLzBdOworICAgIHZhciBjaGVja19u
b18wID0gZnVuY3Rpb24gKHN5bWIsIHBhZCkgeworICAgICAgaWYgKHR5cGVvZiBwYWQgPT09ICJu
dW1iZXIiKSB7CisgICAgICAgIHJldHVybiBwYWQ7CisgICAgICB9CisgICAgICBlbHNlIGlmIChw
YWQudGFnKSB7CisgICAgICAgIGlmIChwYWRbMF0gPj0gMikgeworICAgICAgICAgIGlmIChsZWdh
Y3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgcmV0dXJuIC8qIEFyZ19wYWRkaW5nICovQmxv
Y2suX18oMSwgWy8qIFJpZ2h0ICovMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBz
eW1iLCAiMCIpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICByZXR1cm4gcGFkOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChwYWRb
MF0gPj0gMikgeworICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICBy
ZXR1cm4gLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAg
IC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAgICAgICAgICAgcGFkWzFdCisgICAgICAgICAgICAg
ICAgICBdKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gaW5j
b21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIjAiKTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBwYWQ7CisgICAgICB9CisgICAg
fTsKKyAgICB2YXIgb3B0X29mX3BhZCA9IGZ1bmN0aW9uIChjLCBwYWQpIHsKKyAgICAgIGlmICh0
eXBlb2YgcGFkID09PSAibnVtYmVyIikgeworICAgICAgICByZXR1cm4gLyogTm9uZSAqLzA7Cisg
ICAgICB9CisgICAgICBlbHNlIGlmIChwYWQudGFnKSB7CisgICAgICAgIHJldHVybiBpbmNvbXBh
dGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBjLCAiJyonIik7CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgc3dpdGNoIChwYWRbMF0pIHsKKyAgICAgICAgICBjYXNlIDAgOiAKKyAg
ICAgICAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIFNvbWUgKi9bcGFkWzFdXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwg
c3RyX2luZCwgYywgIictJyIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgY2FzZSAxIDog
CisgICAgICAgICAgICAgIHJldHVybiAvKiBTb21lICovW3BhZFsxXV07CisgICAgICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBTb21lICovW3BhZFsxXV07CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFn
KHBjdF9pbmQsIHN0cl9pbmQsIGMsICInMCciKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAg
IAorICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgICB2YXIgZ2V0X3ByZWNfb3B0ID0gZnVu
Y3Rpb24gKCkgeworICAgICAgcHJlY191c2VkWzBdID0gLyogdHJ1ZSAqLzE7CisgICAgICBpZiAo
dHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7CisgICAgICAgIGlmIChwcmVjICE9PSAwKSB7Cisg
ICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICJf
IiAqLzk1LCAiJyonIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0
dXJuIC8qIE5vbmUgKi8wOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg
ICAgcmV0dXJuIC8qIFNvbWUgKi9bcHJlY1swXV07CisgICAgICB9CisgICAgfTsKKyAgICB2YXIg
Zm10X3Jlc3VsdDsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgdmFyIGV4aXQkMSA9IDA7CisgICAg
dmFyIGV4aXQkMiA9IDA7CisgICAgaWYgKHN5bWIgPj0gMTI0KSB7CisgICAgICBleGl0JDEgPSA2
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoc3ltYikgeworICAgICAgICBjYXNl
IDMzIDogCisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0
cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9b
LyogRmx1c2ggKi9CbG9jay5fXygxMCwgW21hdGNoWzBdXSldOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgNDAgOiAKKyAgICAgICAgICAgIHZhciBzdWJfZW5kID0gc2VhcmNoX3N1
YmZvcm1hdF9lbmQoc3RyX2luZCwgZW5kX2luZCwgLyogIikiICovNDEpOworICAgICAgICAgICAg
dmFyIGJlZ19pbmQgPSBzdWJfZW5kICsgMiB8IDA7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9
IHBhcnNlX2xpdGVyYWwoYmVnX2luZCwgYmVnX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICB2
YXIgZm10X3Jlc3QgPSBtYXRjaCQxWzBdOworICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBwYXJz
ZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIHN1Yl9lbmQpOworICAgICAgICAgICAgdmFyIHN1
Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdChtYXRjaCQyWzBdKTsKKyAgICAgICAgICAgIGlmIChpZ25f
dXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAv
KiB0cnVlICovMTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWRfMDAwID0gb3B0X29mX3BhZCgv
KiAiXyIgKi85NSwgcGFkKTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQgPSAvKiBJZ25vcmVk
X2Zvcm1hdF9zdWJzdCAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgIGlnbm9yZWRf
MDAwLAorICAgICAgICAgICAgICAgICAgc3ViX2ZtdHR5CisgICAgICAgICAgICAgICAgXSk7Cisg
ICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0g
Ki9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICBpZ25vcmVkLAorICAgICAgICAg
ICAgICAgICAgICBmbXRfcmVzdAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAq
LzE7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIEZvcm1hdF9z
dWJzdCAqL0Jsb2NrLl9fKDE0LCBbCisgICAgICAgICAgICAgICAgICAgIG9wdF9vZl9wYWQoLyog
IigiICovNDAsIHBhZCksCisgICAgICAgICAgICAgICAgICAgIHN1Yl9mbXR0eSwKKyAgICAgICAg
ICAgICAgICAgICAgZm10X3Jlc3QKKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ0IDogCisgICAgICAgICAgICBm
bXRfcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM3IDogCisgICAgICAgIGNhc2UgNjQgOiAK
KyAgICAgICAgICAgIGV4aXQkMSA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSA2NyA6IAorICAgICAgICAgICAgdmFyIG1hdGNoJDMgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQs
IHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDEgPSBtYXRjaCQz
WzBdOworICAgICAgICAgICAgZm10X3Jlc3VsdCA9IChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8x
LCBpZ24pID8gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsK
KyAgICAgICAgICAgICAgICAgICAgLyogSWdub3JlZF9jYW1sX2NoYXIgKi8xLAorICAgICAgICAg
ICAgICAgICAgICBmbXRfcmVzdCQxCisgICAgICAgICAgICAgICAgICBdKV0gOiAvKiBGbXRfRUJC
ICovWy8qIENhbWxfY2hhciAqL0Jsb2NrLl9fKDEsIFtmbXRfcmVzdCQxXSldOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgNzggOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0g
cGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZh
ciBmbXRfcmVzdCQyID0gbWF0Y2gkNFswXTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9
IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQkMSA9IC8qIEln
bm9yZWRfc2Nhbl9nZXRfY291bnRlciAqL0Jsb2NrLl9fKDEwLCBbLyogVG9rZW5fY291bnRlciAq
LzJdKTsKKyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogSWdub3Jl
ZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQkMSwK
KyAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3QkMgorICAgICAgICAgICAgICAgICAgXSldOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGZtdF9yZXN1
bHQgPSAvKiBGbXRfRUJCICovWy8qIFNjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwgWwor
ICAgICAgICAgICAgICAgICAgICAvKiBUb2tlbl9jb3VudGVyICovMiwKKyAgICAgICAgICAgICAg
ICAgICAgZm10X3Jlc3QkMgorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgODMgOiAKKyAgICAgICAgICAgIHBhZF91
c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgcGFkJDEgPSBjaGVja19ub18wKHN5
bWIsIHBhZHByZWMpOworICAgICAgICAgICAgdmFyIG1hdGNoJDUgPSBwYXJzZV9saXRlcmFsKHN0
cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDMgPSBt
YXRjaCQ1WzBdOworICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGln
bikgeworICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAg
ICB2YXIgaWdub3JlZCQyID0gLyogSWdub3JlZF9jYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDEsIFtv
cHRfb2ZfcGFkKC8qICJfIiAqLzk1LCBwYWRwcmVjKV0pOworICAgICAgICAgICAgICBmbXRfcmVz
dWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAg
ICAgICAgICAgICAgICAgICAgaWdub3JlZCQyLAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVz
dCQzCisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgdmFyIG1hdGNoJDYgPSBtYWtlX3BhZGRpbmdfZm10X2ViYihw
YWQkMSwgZm10X3Jlc3QkMyk7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJC
ICovWy8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICBt
YXRjaCQ2WzBdLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQ2WzFdCisgICAgICAgICAgICAg
ICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSA5MSA6IAorICAgICAgICAgICAgdmFyIG1hdGNoJDcgPSBwYXJzZV9jaGFyX3NldChzdHJfaW5k
LCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBjaGFyX3NldCA9IG1hdGNoJDdbMV07CisgICAg
ICAgICAgICB2YXIgbmV4dF9pbmQgPSBtYXRjaCQ3WzBdOworICAgICAgICAgICAgdmFyIG1hdGNo
JDggPSBwYXJzZV9saXRlcmFsKG5leHRfaW5kLCBuZXh0X2luZCwgZW5kX2luZCk7CisgICAgICAg
ICAgICB2YXIgZm10X3Jlc3QkNCA9IG1hdGNoJDhbMF07CisgICAgICAgICAgICBpZiAoaWduX3Vz
ZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyog
dHJ1ZSAqLzE7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMCQxID0gb3B0X29mX3BhZCgv
KiAiXyIgKi85NSwgcGFkKTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQkMyA9IC8qIElnbm9y
ZWRfc2Nhbl9jaGFyX3NldCAqL0Jsb2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAgIGlnbm9y
ZWRfMDAwJDEsCisgICAgICAgICAgICAgICAgICBjaGFyX3NldAorICAgICAgICAgICAgICAgIF0p
OworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3Bh
cmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlZCQzLAorICAg
ICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ0CisgICAgICAgICAgICAgICAgICBdKV07CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAv
KiB0cnVlICovMTsKKyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyog
U2Nhbl9jaGFyX3NldCAqL0Jsb2NrLl9fKDIwLCBbCisgICAgICAgICAgICAgICAgICAgIG9wdF9v
Zl9wYWQoLyogIlsiICovOTEsIHBhZCksCisgICAgICAgICAgICAgICAgICAgIGNoYXJfc2V0LAor
ICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ0CisgICAgICAgICAgICAgICAgICBdKV07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzMiA6IAorICAg
ICAgICBjYXNlIDM1IDogCisgICAgICAgIGNhc2UgNDMgOiAKKyAgICAgICAgY2FzZSA0NSA6IAor
ICAgICAgICBjYXNlIDk1IDogCisgICAgICAgICAgICBleGl0JDEgPSA1OworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgOTcgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gcGFy
c2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIGZtdF9y
ZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIEFscGhhICovQmxvY2suX18oMTUsIFttYXRjaCQ5WzBd
XSldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNjYgOiAKKyAgICAgICAgY2Fz
ZSA5OCA6IAorICAgICAgICAgICAgZXhpdCQxID0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIDk5IDogCisgICAgICAgICAgICB2YXIgY2hhcl9mb3JtYXQgPSBmdW5jdGlvbiAo
Zm10X3Jlc3QpIHsKKyAgICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEs
IGlnbikgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRf
cGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEln
bm9yZWRfY2hhciAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3QKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIENoYXIg
Ki9CbG9jay5fXygwLCBbZm10X3Jlc3RdKV07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICB2YXIgc2Nhbl9mb3JtYXQgPSBmdW5jdGlvbiAoZm10X3Jlc3QpIHsK
KyAgICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9j
ay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfc2Nhbl9u
ZXh0X2NoYXIgKi80LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBTY2FuX25l
eHRfY2hhciAqL0Jsb2NrLl9fKDIyLCBbZm10X3Jlc3RdKV07CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH07CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSBwYXJzZV9saXRlcmFsKHN0
cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDUgPSBt
YXRjaCQxMFswXTsKKyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAg
ICAgICB2YXIgbWF0Y2gkMTEgPSBvcHRfb2ZfcGFkKC8qICJjIiAqLzk5LCBwYWQpOworICAgICAg
ICAgICAgZm10X3Jlc3VsdCA9IG1hdGNoJDExID8gKAorICAgICAgICAgICAgICAgIG1hdGNoJDEx
WzBdICE9PSAwID8gKAorICAgICAgICAgICAgICAgICAgICBsZWdhY3lfYmVoYXZpb3IkMSA/IGNo
YXJfZm9ybWF0KGZtdF9yZXN0JDUpIDogaW52YWxpZF9mb3JtYXRfbWVzc2FnZShzdHJfaW5kLCAi
bm9uLXplcm8gd2lkdGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnMiKQorICAg
ICAgICAgICAgICAgICAgKSA6IHNjYW5fZm9ybWF0KGZtdF9yZXN0JDUpCisgICAgICAgICAgICAg
ICkgOiBjaGFyX2Zvcm1hdChmbXRfcmVzdCQ1KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIDY5IDogCisgICAgICAgIGNhc2UgNzAgOiAKKyAgICAgICAgY2FzZSA3MSA6IAorICAg
ICAgICBjYXNlIDEwMSA6IAorICAgICAgICBjYXNlIDEwMiA6IAorICAgICAgICBjYXNlIDEwMyA6
IAorICAgICAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIDc2IDogCisgICAgICAgIGNhc2UgMTA4IDogCisgICAgICAgIGNhc2UgMTEwIDogCisgICAg
ICAgICAgICBleGl0JDIgPSA4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTE0
IDogCisgICAgICAgICAgICB2YXIgbWF0Y2gkMTIgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0
cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDYgPSBtYXRjaCQxMlsw
XTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwg
aWduKSA/IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisg
ICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfcmVhZGVyICovMywKKyAgICAgICAgICAgICAg
ICAgICAgZm10X3Jlc3QkNgorICAgICAgICAgICAgICAgICAgXSldIDogLyogRm10X0VCQiAqL1sv
KiBSZWFkZXIgKi9CbG9jay5fXygxOSwgW2ZtdF9yZXN0JDZdKV07CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAxMTUgOiAKKyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAq
LzE7CisgICAgICAgICAgICB2YXIgcGFkJDIgPSBjaGVja19ub18wKHN5bWIsIHBhZHByZWMpOwor
ICAgICAgICAgICAgdmFyIG1hdGNoJDEzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5k
LCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBmbXRfcmVzdCQ3ID0gbWF0Y2gkMTNbMF07Cisg
ICAgICAgICAgICBpZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAg
ICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVk
JDQgPSAvKiBJZ25vcmVkX3N0cmluZyAqL0Jsb2NrLl9fKDAsIFtvcHRfb2ZfcGFkKC8qICJfIiAq
Lzk1LCBwYWRwcmVjKV0pOworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAq
L1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAg
aWdub3JlZCQ0LAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ3CisgICAgICAgICAgICAg
ICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgdmFyIG1hdGNoJDE0ID0gbWFrZV9wYWRkaW5nX2ZtdF9lYmIocGFkJDIsIGZtdF9yZXN0JDcp
OworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBTdHJpbmcgKi9C
bG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE0WzBdLAorICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQxNFsxXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTE2IDogCisgICAgICAgICAg
ICB2YXIgbWF0Y2gkMTUgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQp
OworICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogVGhldGEgKi9CbG9j
ay5fXygxNiwgW21hdGNoJDE1WzBdXSldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgODggOiAKKyAgICAgICAgY2FzZSAxMDAgOiAKKyAgICAgICAgY2FzZSAxMDUgOiAKKyAgICAg
ICAgY2FzZSAxMTEgOiAKKyAgICAgICAgY2FzZSAxMTcgOiAKKyAgICAgICAgY2FzZSAxMjAgOiAK
KyAgICAgICAgICAgIGV4aXQkMiA9IDc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAwIDogCisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgY2Fz
ZSAzIDogCisgICAgICAgIGNhc2UgNCA6IAorICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgY2Fz
ZSA2IDogCisgICAgICAgIGNhc2UgNyA6IAorICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgY2Fz
ZSA5IDogCisgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICBj
YXNlIDEyIDogCisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAgICAg
ICBjYXNlIDE1IDogCisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgY2FzZSAxNyA6IAorICAg
ICAgICBjYXNlIDE4IDogCisgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgY2FzZSAyMCA6IAor
ICAgICAgICBjYXNlIDIxIDogCisgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgY2FzZSAyMyA6
IAorICAgICAgICBjYXNlIDI0IDogCisgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAgY2FzZSAy
NiA6IAorICAgICAgICBjYXNlIDI3IDogCisgICAgICAgIGNhc2UgMjggOiAKKyAgICAgICAgY2Fz
ZSAyOSA6IAorICAgICAgICBjYXNlIDMwIDogCisgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAg
Y2FzZSAzNCA6IAorICAgICAgICBjYXNlIDM2IDogCisgICAgICAgIGNhc2UgMzggOiAKKyAgICAg
ICAgY2FzZSAzOSA6IAorICAgICAgICBjYXNlIDQxIDogCisgICAgICAgIGNhc2UgNDIgOiAKKyAg
ICAgICAgY2FzZSA0NiA6IAorICAgICAgICBjYXNlIDQ3IDogCisgICAgICAgIGNhc2UgNDggOiAK
KyAgICAgICAgY2FzZSA0OSA6IAorICAgICAgICBjYXNlIDUwIDogCisgICAgICAgIGNhc2UgNTEg
OiAKKyAgICAgICAgY2FzZSA1MiA6IAorICAgICAgICBjYXNlIDUzIDogCisgICAgICAgIGNhc2Ug
NTQgOiAKKyAgICAgICAgY2FzZSA1NSA6IAorICAgICAgICBjYXNlIDU2IDogCisgICAgICAgIGNh
c2UgNTcgOiAKKyAgICAgICAgY2FzZSA1OCA6IAorICAgICAgICBjYXNlIDU5IDogCisgICAgICAg
IGNhc2UgNjAgOiAKKyAgICAgICAgY2FzZSA2MSA6IAorICAgICAgICBjYXNlIDYyIDogCisgICAg
ICAgIGNhc2UgNjMgOiAKKyAgICAgICAgY2FzZSA2NSA6IAorICAgICAgICBjYXNlIDY4IDogCisg
ICAgICAgIGNhc2UgNzIgOiAKKyAgICAgICAgY2FzZSA3MyA6IAorICAgICAgICBjYXNlIDc0IDog
CisgICAgICAgIGNhc2UgNzUgOiAKKyAgICAgICAgY2FzZSA3NyA6IAorICAgICAgICBjYXNlIDc5
IDogCisgICAgICAgIGNhc2UgODAgOiAKKyAgICAgICAgY2FzZSA4MSA6IAorICAgICAgICBjYXNl
IDgyIDogCisgICAgICAgIGNhc2UgODQgOiAKKyAgICAgICAgY2FzZSA4NSA6IAorICAgICAgICBj
YXNlIDg2IDogCisgICAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgY2FzZSA4OSA6IAorICAgICAg
ICBjYXNlIDkwIDogCisgICAgICAgIGNhc2UgOTIgOiAKKyAgICAgICAgY2FzZSA5MyA6IAorICAg
ICAgICBjYXNlIDk0IDogCisgICAgICAgIGNhc2UgOTYgOiAKKyAgICAgICAgY2FzZSAxMDQgOiAK
KyAgICAgICAgY2FzZSAxMDYgOiAKKyAgICAgICAgY2FzZSAxMDcgOiAKKyAgICAgICAgY2FzZSAx
MDkgOiAKKyAgICAgICAgY2FzZSAxMTIgOiAKKyAgICAgICAgY2FzZSAxMTMgOiAKKyAgICAgICAg
Y2FzZSAxMTggOiAKKyAgICAgICAgY2FzZSAxMTkgOiAKKyAgICAgICAgY2FzZSAxMjEgOiAKKyAg
ICAgICAgY2FzZSAxMjIgOiAKKyAgICAgICAgICAgIGV4aXQkMSA9IDY7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAxMjMgOiAKKyAgICAgICAgICAgIHZhciBzdWJfZW5kJDEgPSBz
ZWFyY2hfc3ViZm9ybWF0X2VuZChzdHJfaW5kLCBlbmRfaW5kLCAvKiAifSIgKi8xMjUpOworICAg
ICAgICAgICAgdmFyIG1hdGNoJDE2ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBz
dWJfZW5kJDEpOworICAgICAgICAgICAgdmFyIGJlZ19pbmQkMSA9IHN1Yl9lbmQkMSArIDIgfCAw
OworICAgICAgICAgICAgdmFyIG1hdGNoJDE3ID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDEsIGJl
Z19pbmQkMSwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIgZm10X3Jlc3QkOCA9IG1hdGNoJDE3
WzBdOworICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eSQxID0gZm10dHlfb2ZfZm10KG1hdGNoJDE2
WzBdKTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsK
KyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgICAgdmFy
IGlnbm9yZWRfMDAwJDIgPSBvcHRfb2ZfcGFkKC8qICJfIiAqLzk1LCBwYWQpOworICAgICAgICAg
ICAgICB2YXIgaWdub3JlZCQ1ID0gLyogSWdub3JlZF9mb3JtYXRfYXJnICovQmxvY2suX18oNywg
WworICAgICAgICAgICAgICAgICAgaWdub3JlZF8wMDAkMiwKKyAgICAgICAgICAgICAgICAgIHN1
Yl9mbXR0eSQxCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQg
PSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAg
ICAgICAgICAgICAgICBpZ25vcmVkJDUsCisgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDgK
KyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICBm
bXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBGb3JtYXRfYXJnICovQmxvY2suX18oMTMsIFsK
KyAgICAgICAgICAgICAgICAgICAgb3B0X29mX3BhZCgvKiAieyIgKi8xMjMsIHBhZCksCisgICAg
ICAgICAgICAgICAgICAgIHN1Yl9mbXR0eSQxLAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVz
dCQ4CisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIHN3aXRjaCAoZXhpdCQyKSB7Cisg
ICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBwbHVzX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAg
ICAgICBzaGFycF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgc3BhY2VfdXNlZCA9IC8q
IHRydWUgKi8xOworICAgICAgICAgIHZhciBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYocGN0X2lu
ZCwgc3RyX2luZCwgcGx1cywgc2hhcnAsIHNwYWNlLCBzeW1iKTsKKyAgICAgICAgICB2YXIgbWF0
Y2gkMTggPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAg
ICAgIHZhciBmbXRfcmVzdCQ5ID0gbWF0Y2gkMThbMF07CisgICAgICAgICAgaWYgKGlnbl91c2Vk
WzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVl
ICovMTsKKyAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMSA9IG9wdF9vZl9wYWQoLyogIl8iICov
OTUsIHBhZCk7CisgICAgICAgICAgICB2YXIgaWdub3JlZCQ2ID0gLyogSWdub3JlZF9pbnQgKi9C
bG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgaWNvbnYsCisgICAgICAgICAgICAgICAgaWdu
b3JlZF8wMDEKKyAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyog
Rm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAg
ICAgICAgIGlnbm9yZWQkNiwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDkKKyAgICAgICAg
ICAgICAgICBdKV07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
cGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgIHByZWNfdXNlZFswXSA9IC8qIHRy
dWUgKi8xOworICAgICAgICAgICAgdmFyIHBhZCQzOworICAgICAgICAgICAgdmFyIGV4aXQkMyA9
IDA7CisgICAgICAgICAgICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiICYmIHByZWMgPT09
IDApIHsKKyAgICAgICAgICAgICAgcGFkJDMgPSBwYWQ7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQzID0gOTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChleGl0JDMgPT09IDkpIHsKKyAgICAgICAgICAgICAgcGFkJDMgPSB0eXBl
b2YgcGFkID09PSAibnVtYmVyIiA/IC8qIE5vX3BhZGRpbmcgKi8wIDogKAorICAgICAgICAgICAg
ICAgICAgcGFkLnRhZyA/ICgKKyAgICAgICAgICAgICAgICAgICAgICBwYWRbMF0gPj0gMiA/ICgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5X2JlaGF2aW9yJDEgPyAvKiBBcmdfcGFk
ZGluZyAqL0Jsb2NrLl9fKDEsIFsvKiBSaWdodCAqLzFdKSA6IGluY29tcGF0aWJsZV9mbGFnKHBj
dF9pbmQsIHN0cl9pbmQsIC8qICIwIiAqLzQ4LCAicHJlY2lzaW9uIikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICkgOiBwYWQKKyAgICAgICAgICAgICAgICAgICAgKSA6ICgKKyAgICAgICAgICAg
ICAgICAgICAgICBwYWRbMF0gPj0gMiA/ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVn
YWN5X2JlaGF2aW9yJDEgPyAvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogUmlnaHQgKi8xLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYWRbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pIDog
aW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgLyogIjAiICovNDgsICJwcmVjaXNp
b24iKQorICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHBhZAorICAgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBt
YXRjaCQxOSA9IG1ha2VfcGFkcHJlY19mbXRfZWJiKHBhZCQzLCAocHJlY191c2VkWzBdID0gLyog
dHJ1ZSAqLzEsIHByZWMpLCBmbXRfcmVzdCQ5KTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAv
KiBGbXRfRUJCICovWy8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGlj
b252LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMTlbMF0sCisgICAgICAgICAgICAgICAgICBt
YXRjaCQxOVsxXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDE5WzJdCisgICAgICAgICAgICAg
ICAgXSldOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOCA6IAor
ICAgICAgICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kIHx8ICFpc19pbnRfYmFzZShDYW1sX3N0
cmluZy5nZXQoc3RyLCBzdHJfaW5kKSkpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyMCA9IHBh
cnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIg
Zm10X3Jlc3QkMTAgPSBtYXRjaCQyMFswXTsKKyAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291
bnRlcl9vZl9jaGFyKHN5bWIpOworICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1
ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgICB2YXIgaWdub3JlZCQ3ID0gLyogSWdub3JlZF9z
Y2FuX2dldF9jb3VudGVyICovQmxvY2suX18oMTAsIFtjb3VudGVyXSk7CisgICAgICAgICAgICAg
IGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygy
MywgWworICAgICAgICAgICAgICAgICAgICBpZ25vcmVkJDcsCisgICAgICAgICAgICAgICAgICAg
IGZtdF9yZXN0JDEwCisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9b
LyogU2Nhbl9nZXRfY291bnRlciAqL0Jsb2NrLl9fKDIxLCBbCisgICAgICAgICAgICAgICAgICAg
IGNvdW50ZXIsCisgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEwCisgICAgICAgICAgICAg
ICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgZXhpdCQxID0gNjsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICAKKyAgICB9CisgICAgc3dpdGNoIChleGl0JDEpIHsKKyAgICAgIGNhc2UgMiA6IAorICAg
ICAgICAgIHBsdXNfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgIHNwYWNlX3VzZWQgPSAv
KiB0cnVlICovMTsKKyAgICAgICAgICB2YXIgZmNvbnYgPSBjb21wdXRlX2Zsb2F0X2NvbnYocGN0
X2luZCwgc3RyX2luZCwgcGx1cywgc3BhY2UsIHN5bWIpOworICAgICAgICAgIHZhciBtYXRjaCQy
MSA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAg
dmFyIGZtdF9yZXN0JDExID0gbWF0Y2gkMjFbMF07CisgICAgICAgICAgaWYgKGlnbl91c2VkWzBd
ID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICov
MTsKKyAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMCQzID0gb3B0X29mX3BhZCgvKiAiXyIgKi85
NSwgcGFkKTsKKyAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMSQxID0gZ2V0X3ByZWNfb3B0KC8q
ICgpICovMCk7CisgICAgICAgICAgICB2YXIgaWdub3JlZCQ4ID0gLyogSWdub3JlZF9mbG9hdCAq
L0Jsb2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAgICBpZ25vcmVkXzAwMCQzLAorICAgICAgICAg
ICAgICAgIGlnbm9yZWRfMDAxJDEKKyAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBmbXRf
cmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsK
KyAgICAgICAgICAgICAgICAgIGlnbm9yZWQkOCwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0
JDExCisgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkMjIgPSBtYWtlX3BhZHByZWNfZm10X2ViYihwYWQsIChwcmVjX3VzZWRbMF0gPSAvKiB0cnVl
ICovMSwgcHJlYyksIGZtdF9yZXN0JDExKTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBG
bXRfRUJCICovWy8qIEZsb2F0ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgZmNv
bnYsCisgICAgICAgICAgICAgICAgICBtYXRjaCQyMlswXSwKKyAgICAgICAgICAgICAgICAgIG1h
dGNoJDIyWzFdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMjJbMl0KKyAgICAgICAgICAgICAg
ICBdKV07CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisg
ICAgICAgICAgdmFyIG1hdGNoJDIzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBl
bmRfaW5kKTsKKyAgICAgICAgICB2YXIgZm10X3Jlc3QkMTIgPSBtYXRjaCQyM1swXTsKKyAgICAg
ICAgICBmbXRfcmVzdWx0ID0gKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgPyAvKiBG
bXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAgICAg
ICAgICAgLyogSWdub3JlZF9ib29sICovMiwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEy
CisgICAgICAgICAgICAgICAgXSldIDogLyogRm10X0VCQiAqL1svKiBCb29sICovQmxvY2suX18o
OSwgW2ZtdF9yZXN0JDEyXSldOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA0IDogCisg
ICAgICAgICAgdmFyIG1hdGNoJDI0ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBl
bmRfaW5kKTsKKyAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBDaGFyX2xp
dGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgIHN5bWIsCisgICAgICAgICAg
ICAgICAgbWF0Y2gkMjRbMF0KKyAgICAgICAgICAgICAgXSldOworICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSA1IDogCisgICAgICAgICAgZm10X3Jlc3VsdCA9IEN1cnJ5Ll8zKGZhaWx3aXRo
X21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0
ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBm
b3JtYXQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2su
X18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18o
MTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXQgY2hhcmFjdGVyIG51
bWJlciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5f
Xyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAq
L0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiwgZmxhZyAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENh
bWxfY2hhciAqL0Jsb2NrLl9fKDEsIFsvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGlzIG9u
bHkgYWxsb3dlZCBhZnRlciB0aGUgJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICIlIiAqLzM3
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIicsIGJlZm9yZSBwYWRkaW5nIGFuZCBw
cmVjaXNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisg
ICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZv
cm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQg
YWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb24iCisgICAgICAgICAg
ICAgICAgICBdKSwgc3RyLCBwY3RfaW5kLCBzeW1iKTsKKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgNiA6IAorICAgICAgICAgIGlmIChzeW1iID49IDEwOCkgeworICAgICAgICAgICAgaWYg
KHN5bWIgPj0gMTExKSB7CisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHN3aXRjaCAoc3ltYiAtIDEwOCB8IDAp
IHsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgcGx1c191
c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgICAgICAgIHNoYXJwX3VzZWQgPSAvKiB0
cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgc3BhY2VfdXNlZCA9IC8qIHRydWUgKi8xOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgaWNvbnYkMSA9IGNvbXB1dGVfaW50X2NvbnYocGN0X2lu
ZCwgc3RyX2luZCArIDEgfCAwLCBwbHVzLCBzaGFycCwgc3BhY2UsIENhbWxfc3RyaW5nLmdldChz
dHIsIHN0cl9pbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkMiA9IHN0cl9p
bmQgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDI1ID0gcGFyc2VfbGl0
ZXJhbChiZWdfaW5kJDIsIGJlZ19pbmQkMiwgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgICAg
IHZhciBmbXRfcmVzdCQxMyA9IG1hdGNoJDI1WzBdOworICAgICAgICAgICAgICAgICAgICBpZiAo
aWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgICAgICAgICAg
cGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgaWdub3Jl
ZF8wMDEkMiA9IG9wdF9vZl9wYWQoLyogIl8iICovOTUsIHBhZCk7CisgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGlnbm9yZWQkOSA9IC8qIElnbm9yZWRfaW50MzIgKi9CbG9jay5fXygzLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGljb252JDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlnbm9yZWRfMDAxJDIKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAg
ICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0g
Ki9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQkOSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQxMworICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsK
KyAgICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMjYgPSBtYWtlX3BhZHByZWNfZm10X2Vi
YihwYWQsIChwcmVjX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgcHJlYyksIGZtdF9yZXN0JDEzKTsK
KyAgICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJbnQz
MiAqL0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29udiQxLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI2WzBdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDI2WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoJDI2WzJdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICBw
bHVzX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgc2hhcnBfdXNlZCA9
IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICAgICAgICBzcGFjZV91c2VkID0gLyogdHJ1ZSAq
LzE7CisgICAgICAgICAgICAgICAgICAgIHZhciBpY29udiQyID0gY29tcHV0ZV9pbnRfY29udihw
Y3RfaW5kLCBzdHJfaW5kICsgMSB8IDAsIHBsdXMsIHNoYXJwLCBzcGFjZSwgQ2FtbF9zdHJpbmcu
Z2V0KHN0ciwgc3RyX2luZCkpOworICAgICAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQzID0g
c3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMjcgPSBwYXJz
ZV9saXRlcmFsKGJlZ19pbmQkMywgYmVnX2luZCQzLCBlbmRfaW5kKTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGZtdF9yZXN0JDE0ID0gbWF0Y2gkMjdbMF07CisgICAgICAgICAgICAgICAgICAg
IGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICAgICAgICAgIHZhciBp
Z25vcmVkXzAwMSQzID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwgcGFkKTsKKyAgICAgICAgICAg
ICAgICAgICAgICB2YXIgaWdub3JlZCQxMCA9IC8qIElnbm9yZWRfbmF0aXZlaW50ICovQmxvY2su
X18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICBpY29udiQyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZ25vcmVkXzAwMSQzCisgICAgICAgICAgICAgICAgICAgICAgICBdKTsK
KyAgICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25v
cmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
Z25vcmVkJDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDE0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8q
IHRydWUgKi8xOworICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQyOCA9IG1ha2VfcGFk
cHJlY19mbXRfZWJiKHBhZCwgKHByZWNfdXNlZFswXSA9IC8qIHRydWUgKi8xLCBwcmVjKSwgZm10
X3Jlc3QkMTQpOworICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJC
ICovWy8qIE5hdGl2ZWludCAqL0Jsb2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpY29udiQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI4WzBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI4WzFdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDI4WzJdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIGlmIChzeW1iICE9PSA3NikgeworICAgICAgICAgICAgZXhpdCA9IDE7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGx1c191c2VkID0g
LyogdHJ1ZSAqLzE7CisgICAgICAgICAgICBzaGFycF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAg
ICAgICAgICBzcGFjZV91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgaWNvbnYk
MyA9IGNvbXB1dGVfaW50X2NvbnYocGN0X2luZCwgc3RyX2luZCArIDEgfCAwLCBwbHVzLCBzaGFy
cCwgc3BhY2UsIENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpKTsKKyAgICAgICAgICAgIHZh
ciBiZWdfaW5kJDQgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMjkg
PSBwYXJzZV9saXRlcmFsKGJlZ19pbmQkNCwgYmVnX2luZCQ0LCBlbmRfaW5kKTsKKyAgICAgICAg
ICAgIHZhciBmbXRfcmVzdCQxNSA9IG1hdGNoJDI5WzBdOworICAgICAgICAgICAgaWYgKGlnbl91
c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8q
IHRydWUgKi8xOworICAgICAgICAgICAgICB2YXIgaWdub3JlZF8wMDEkNCA9IG9wdF9vZl9wYWQo
LyogIl8iICovOTUsIHBhZCk7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkJDExID0gLyogSWdu
b3JlZF9pbnQ2NCAqL0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAgICAgICAgIGljb252JDMsCisg
ICAgICAgICAgICAgICAgICBpZ25vcmVkXzAwMSQ0CisgICAgICAgICAgICAgICAgXSk7CisgICAg
ICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9C
bG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICBpZ25vcmVkJDExLAorICAgICAgICAg
ICAgICAgICAgICBmbXRfcmVzdCQxNQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgICAgIHZhciBtYXRjaCQzMCA9IG1ha2VfcGFkcHJlY19mbXRfZWJi
KHBhZCwgKHByZWNfdXNlZFswXSA9IC8qIHRydWUgKi8xLCBwcmVjKSwgZm10X3Jlc3QkMTUpOwor
ICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJbnQ2NCAqL0Jsb2Nr
Ll9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAgaWNvbnYkMywKKyAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMzBbMF0sCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDMwWzFdLAorICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQzMFsyXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAg
ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAg
ICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgZm10X3Jlc3VsdCA9IEN1cnJ5Ll8zKGZhaWx3aXRo
X21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFs
ICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIs
CisgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAg
ICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIjogYXQgY2hhcmFjdGVyIG51bWJlciAiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Tm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3Ry
aW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJywgaW52YWxpZCBjb252ZXJzaW9uICInLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAiJSIgKi8zNywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGFyICovQmxvY2suX18oMCwgWy8qIENo
YXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiAiXCIiICovMzQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICAgXSksCisgICAgICAgICAgICAgICAgJ2ludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIg
bnVtYmVyICVkLCBpbnZhbGlkIGNvbnZlcnNpb24gIiUlJWMiJworICAgICAgICAgICAgICBdKSwg
c3RyLCBzdHJfaW5kIC0gMSB8IDAsIHN5bWIpOworICAgIH0KKyAgICBpZiAoIWxlZ2FjeV9iZWhh
dmlvciQxKSB7CisgICAgICBpZiAoIXBsdXNfdXNlZCAmJiBwbHVzKSB7CisgICAgICAgIGluY29t
cGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIsICInKyciKTsKKyAgICAgIH0KKyAg
ICAgIGlmICghc2hhcnBfdXNlZCAmJiBzaGFycCkgeworICAgICAgICBpbmNvbXBhdGlibGVfZmxh
ZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJyMnIik7CisgICAgICB9CisgICAgICBpZiAoIXNw
YWNlX3VzZWQgJiYgc3BhY2UpIHsKKyAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwg
c3RyX2luZCwgc3ltYiwgIicgJyIpOworICAgICAgfQorICAgICAgaWYgKCFwYWRfdXNlZCAmJiBD
YW1sX29iai5jYW1sX25vdGVxdWFsKC8qIFBhZGRpbmdfRUJCICovW3BhZF0sIC8qIFBhZGRpbmdf
RUJCICovWy8qIE5vX3BhZGRpbmcgKi8wXSkpIHsKKyAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWco
cGN0X2luZCwgc3RyX2luZCwgc3ltYiwgImBwYWRkaW5nJyIpOworICAgICAgfQorICAgICAgaWYg
KCFwcmVjX3VzZWRbMF0gJiYgQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBQcmVjaXNpb25fRUJC
ICovW3ByZWNdLCAvKiBQcmVjaXNpb25fRUJCICovWy8qIE5vX3ByZWNpc2lvbiAqLzBdKSkgewor
ICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBpZ24gPyAvKiAiXyIg
Ki85NSA6IHN5bWIsICJgcHJlY2lzaW9uJyIpOworICAgICAgfQorICAgICAgaWYgKGlnbiAmJiBw
bHVzKSB7CisgICAgICAgIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICJf
IiAqLzk1LCAiJysnIik7CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgaWYgKCFpZ25fdXNl
ZFswXSAmJiBpZ24pIHsKKyAgICAgIHZhciBleGl0JDQgPSAwOworICAgICAgaWYgKHN5bWIgPj0g
MzgpIHsKKyAgICAgICAgaWYgKHN5bWIgIT09IDQ0KSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09
IDY0KSB7CisgICAgICAgICAgICBleGl0JDQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmICghbGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9IDE7Cisg
ICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFsZWdh
Y3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgIGV4aXQkNCA9IDE7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICB9CisgICAgICBlbHNlIGlmIChzeW1iICE9PSAzMykgeworICAgICAgICBpZiAo
c3ltYiA+PSAzNykgeworICAgICAgICAgIGlmICghbGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAg
ICAgICAgIGV4aXQkNCA9IDE7CisgICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQkNCA9IDE7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIGVsc2UgaWYgKCFsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICBleGl0JDQgPSAx
OworICAgICAgfQorICAgICAgaWYgKGV4aXQkNCA9PT0gMSkgeworICAgICAgICBpbmNvbXBhdGli
bGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJ18nIik7CisgICAgICB9CisgICAgICAK
KyAgICB9CisgICAgcmV0dXJuIGZtdF9yZXN1bHQ7CisgIH07CisgIHZhciBwYXJzZV9mbGFncyA9
IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBlbmRfaW5kLCBpZ24pIHsKKyAgICB2YXIgemVy
byA9IFsvKiBmYWxzZSAqLzBdOworICAgIHZhciBtaW51cyA9IFsvKiBmYWxzZSAqLzBdOworICAg
IHZhciBwbHVzID0gWy8qIGZhbHNlICovMF07CisgICAgdmFyIHNwYWNlID0gWy8qIGZhbHNlICov
MF07CisgICAgdmFyIHNoYXJwID0gWy8qIGZhbHNlICovMF07CisgICAgdmFyIHNldF9mbGFnID0g
ZnVuY3Rpb24gKHN0cl9pbmQsIGZsYWcpIHsKKyAgICAgIGlmIChmbGFnWzBdICYmICFsZWdhY3lf
YmVoYXZpb3IkMSkgeworICAgICAgICBDdXJyeS5fMyhmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1h
dCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEs
IFsKKyAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICI6IGF0IGNoYXJhY3RlciBudW1iZXIgIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBJbnRfZCAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIsIGR1cGxpY2F0ZSBmbGFnICIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIENhbWxfY2hhciAqL0Jsb2NrLl9fKDEsIFsvKiBFbmRfb2Zf
Zm9ybWF0ICovMF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICBd
KSwKKyAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51
bWJlciAlZCwgZHVwbGljYXRlIGZsYWcgJUMiCisgICAgICAgICAgICAgICAgXSksIHN0ciwgc3Ry
X2luZCwgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCkpOworICAgICAgfQorICAgICAgZmxh
Z1swXSA9IC8qIHRydWUgKi8xOworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9OworICAg
IHZhciBfc3RyX2luZCA9IHN0cl9pbmQ7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHN0
cl9pbmQkMSA9IF9zdHJfaW5kOworICAgICAgaWYgKHN0cl9pbmQkMSA9PT0gZW5kX2luZCkgewor
ICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBv
ZiBmb3JtYXQiKTsKKyAgICAgIH0KKyAgICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChz
dHIsIHN0cl9pbmQkMSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgc3dpdGNoZXIg
PSBtYXRjaCAtIDMyIHwgMDsKKyAgICAgIGlmIChzd2l0Y2hlciA+IDE2IHx8IHN3aXRjaGVyIDwg
MCkgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBz
d2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgIHNl
dF9mbGFnKHN0cl9pbmQkMSwgc3BhY2UpOworICAgICAgICAgICAgICBfc3RyX2luZCA9IHN0cl9p
bmQkMSArIDEgfCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgICAgICBzZXRfZmxhZyhzdHJfaW5kJDEsIHNoYXJwKTsKKyAgICAg
ICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kJDEgKyAxIHwgMDsKKyAgICAgICAgICAgICAgY29u
dGludWUgOworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgIHNldF9mbGFn
KHN0cl9pbmQkMSwgcGx1cyk7CisgICAgICAgICAgICAgIF9zdHJfaW5kID0gc3RyX2luZCQxICsg
MSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgY2FzZSAxMyA6
IAorICAgICAgICAgICAgICBzZXRfZmxhZyhzdHJfaW5kJDEsIG1pbnVzKTsKKyAgICAgICAgICAg
ICAgX3N0cl9pbmQgPSBzdHJfaW5kJDEgKyAxIHwgMDsKKyAgICAgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAg
ICBjYXNlIDQgOiAKKyAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBjYXNlIDYgOiAKKyAg
ICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICBjYXNlIDkg
OiAKKyAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAg
IGNhc2UgMTQgOiAKKyAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICAgIGV4aXQgPSAx
OworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDE2IDogCisgICAgICAgICAg
ICAgIHNldF9mbGFnKHN0cl9pbmQkMSwgemVybyk7CisgICAgICAgICAgICAgIF9zdHJfaW5kID0g
c3RyX2luZCQxICsgMSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
ICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAg
IHZhciBwY3RfaW5kJDEgPSBwY3RfaW5kOworICAgICAgICB2YXIgc3RyX2luZCQyID0gc3RyX2lu
ZCQxOworICAgICAgICB2YXIgZW5kX2luZCQxID0gZW5kX2luZDsKKyAgICAgICAgdmFyIHplcm8k
MSA9IHplcm9bMF07CisgICAgICAgIHZhciBtaW51cyQxID0gbWludXNbMF07CisgICAgICAgIHZh
ciBwbHVzJDEgPSBwbHVzWzBdOworICAgICAgICB2YXIgc2hhcnAkMSA9IHNoYXJwWzBdOworICAg
ICAgICB2YXIgc3BhY2UkMSA9IHNwYWNlWzBdOworICAgICAgICB2YXIgaWduJDEgPSBpZ247Cisg
ICAgICAgIGlmIChzdHJfaW5kJDIgPT09IGVuZF9pbmQkMSkgeworICAgICAgICAgIGludmFsaWRf
Zm9ybWF0X21lc3NhZ2UoZW5kX2luZCQxLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7Cisg
ICAgICAgIH0KKyAgICAgICAgdmFyIHBhZHR5ID0gemVybyQxICE9PSAwID8gKAorICAgICAgICAg
ICAgbWludXMkMSAhPT0gMCA/ICgKKyAgICAgICAgICAgICAgICBsZWdhY3lfYmVoYXZpb3IkMSA/
IC8qIExlZnQgKi8wIDogaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCQxLCBzdHJfaW5kJDIsIC8q
ICItIiAqLzQ1LCAiMCIpCisgICAgICAgICAgICAgICkgOiAvKiBaZXJvcyAqLzIKKyAgICAgICAg
ICApIDogKAorICAgICAgICAgICAgbWludXMkMSAhPT0gMCA/IC8qIExlZnQgKi8wIDogLyogUmln
aHQgKi8xCisgICAgICAgICAgKTsKKyAgICAgICAgdmFyIG1hdGNoJDEgPSBDYW1sX3N0cmluZy5n
ZXQoc3RyLCBzdHJfaW5kJDIpOworICAgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgICAgaWYg
KG1hdGNoJDEgPj0gNDgpIHsKKyAgICAgICAgICBpZiAobWF0Y2gkMSA+PSA1OCkgeworICAgICAg
ICAgICAgZXhpdCQxID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICB2YXIgbWF0Y2gkMiA9IHBhcnNlX3Bvc2l0aXZlKHN0cl9pbmQkMiwgZW5kX2luZCQxLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBwYXJzZV9hZnRlcl9wYWRkaW5nKHBjdF9pbmQkMSwgbWF0
Y2gkMlswXSwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGln
biQxLCAvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFkdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDJbMV0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIF0pKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSBpZiAobWF0Y2gkMSAhPT0gNDIpIHsKKyAgICAgICAgICBleGl0JDEgPSAxOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBwYXJzZV9hZnRlcl9wYWRkaW5n
KHBjdF9pbmQkMSwgc3RyX2luZCQyICsgMSB8IDAsIGVuZF9pbmQkMSwgbWludXMkMSwgcGx1cyQx
LCBzaGFycCQxLCBzcGFjZSQxLCBpZ24kMSwgLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBb
cGFkdHldKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMSA9PT0gMSkgeworICAgICAg
ICAgIHN3aXRjaCAocGFkdHkpIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAg
ICAgIGlmICghbGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgICAgICAgIGludmFsaWRf
Zm9ybWF0X3dpdGhvdXQoc3RyX2luZCQyIC0gMSB8IDAsIC8qICItIiAqLzQ1LCAicGFkZGluZyIp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJf
cGFkZGluZyhwY3RfaW5kJDEsIHN0cl9pbmQkMiwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEs
IHNoYXJwJDEsIHNwYWNlJDEsIGlnbiQxLCAvKiBOb19wYWRkaW5nICovMCk7CisgICAgICAgICAg
ICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhw
Y3RfaW5kJDEsIHN0cl9pbmQkMiwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEs
IHNwYWNlJDEsIGlnbiQxLCAvKiBOb19wYWRkaW5nICovMCk7CisgICAgICAgICAgICBjYXNlIDIg
OiAKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhwY3RfaW5kJDEs
IHN0cl9pbmQkMiwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEs
IGlnbiQxLCAvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICB9CisgICAgICAKKyAgICB9OworICB9
OworICB2YXIgaXNfaW50X2Jhc2UgPSBmdW5jdGlvbiAoc3ltYikgeworICAgIHZhciBzd2l0Y2hl
ciA9IHN5bWIgLSA4OCB8IDA7CisgICAgaWYgKHN3aXRjaGVyID4gMzIgfHwgc3dpdGNoZXIgPCAw
KSB7CisgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHN3aXRjaCAoc3dpdGNoZXIpIHsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgIGNhc2UgMiA6
IAorICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgIGNhc2UgNSA6
IAorICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgY2FzZSA3IDogCisgICAgICAgIGNhc2UgOCA6
IAorICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICBjYXNlIDEx
IDogCisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICBjYXNl
IDE1IDogCisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICBj
YXNlIDE5IDogCisgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgY2FzZSAyMSA6IAorICAgICAg
ICBjYXNlIDIyIDogCisgICAgICAgIGNhc2UgMjQgOiAKKyAgICAgICAgY2FzZSAyNSA6IAorICAg
ICAgICBjYXNlIDI2IDogCisgICAgICAgIGNhc2UgMjcgOiAKKyAgICAgICAgY2FzZSAyOCA6IAor
ICAgICAgICBjYXNlIDMwIDogCisgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgICAgIHJldHVy
biAvKiBmYWxzZSAqLzA7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICBjYXNlIDEyIDogCisg
ICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICBjYXNlIDI5IDog
CisgICAgICAgIGNhc2UgMzIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAg
ICAgICAgCisgICAgICB9CisgICAgfQorICB9OworICB2YXIgY291bnRlcl9vZl9jaGFyID0gZnVu
Y3Rpb24gKHN5bWIpIHsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHN5bWIgPj0gMTA4KSB7
CisgICAgICBpZiAoc3ltYiA+PSAxMTEpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChzeW1iIC0gMTA4IHwgMCkgeworICAgICAgICAg
IGNhc2UgMCA6IAorICAgICAgICAgICAgICByZXR1cm4gLyogTGluZV9jb3VudGVyICovMDsKKyAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICByZXR1cm4gLyogQ2hh
cl9jb3VudGVyICovMTsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAg
ICBlbHNlIGlmIChzeW1iICE9PSA3NikgeworICAgICAgZXhpdCA9IDE7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIC8qIFRva2VuX2NvdW50ZXIgKi8yOworICAgIH0KKyAgICBpZiAo
ZXhpdCA9PT0gMSkgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICJj
YW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAyNjgzLAorICAgICAgICAgICAg
ICAzNAorICAgICAgICAgICAgXQorICAgICAgICAgIF07CisgICAgfQorICAgIAorICB9OworICB2
YXIgcGFyc2VfY2hhcl9zZXQgPSBmdW5jdGlvbiAoc3RyX2luZCwgZW5kX2luZCkgeworICAgIGlm
IChzdHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVu
ZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICB9CisgICAgdmFyIGNoYXJf
c2V0ID0gQnl0ZXMubWFrZSgzMiwgLyogIlwwMDAiICovMCk7CisgICAgdmFyIGFkZF9yYW5nZSA9
IGZ1bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICBmb3IodmFyIGkgPSBjOyBpIDw9IGMkcHJp
bWU7ICsraSl7CisgICAgICAgIGFkZF9pbl9jaGFyX3NldChjaGFyX3NldCwgUGVydmFzaXZlcy5j
aGFyX29mX2ludChpKSk7CisgICAgICB9CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH07
CisgICAgdmFyIGZhaWxfc2luZ2xlX3BlcmNlbnQgPSBmdW5jdGlvbiAoc3RyX2luZCkgeworICAg
ICAgcmV0dXJuIEN1cnJ5Ll8yKGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAg
ICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIjogJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogIiUiICovMzcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInIGFsb25lIGlzIG5vdCBhY2Nl
cHRlZCBpbiBjaGFyYWN0ZXIgc2V0cywgdXNlICIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICIlIiAqLzM3LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENoYXJfbGl0ZXJh
bCAqL0Jsb2NrLl9fKDEyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qICIlIiAqLzM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGlu
c3RlYWQgYXQgcG9zaXRpb24gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGFyX2xp
dGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAiLiIgKi80NiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29m
X2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAl
UzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIHVzZSAlJSUl
IGluc3RlYWQgYXQgcG9zaXRpb24gJWQuIgorICAgICAgICAgICAgICAgICAgICBdKSwgc3RyLCBz
dHJfaW5kKTsKKyAgICB9OworICAgIHZhciBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyID0gZnVu
Y3Rpb24gKF9zdHJfaW5kLCBlbmRfaW5kLCBfYykgeworICAgICAgd2hpbGUodHJ1ZSkgeworICAg
ICAgICB2YXIgYyA9IF9jOworICAgICAgICB2YXIgc3RyX2luZCA9IF9zdHJfaW5kOworICAgICAg
ICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgICAgIGludmFsaWRfZm9ybWF0X21l
c3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgICB9Cisg
ICAgICAgIHZhciBjJHByaW1lID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCk7CisgICAg
ICAgIHZhciBleGl0ID0gMDsKKyAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgIGlmIChj
JHByaW1lID49IDQ2KSB7CisgICAgICAgICAgaWYgKGMkcHJpbWUgIT09IDY0KSB7CisgICAgICAg
ICAgICBpZiAoYyRwcmltZSAhPT0gOTMpIHsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgYWRkX2luX2NoYXJf
c2V0KGNoYXJfc2V0LCBjKTsKKyAgICAgICAgICAgICAgcmV0dXJuIHN0cl9pbmQgKyAxIHwgMDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBleGl0JDEgPSAyOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChj
JHByaW1lICE9PSAzNykgeworICAgICAgICAgIGlmIChjJHByaW1lID49IDQ1KSB7CisgICAgICAg
ICAgICB2YXIgc3RyX2luZCQxID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgdmFyIGVu
ZF9pbmQkMSA9IGVuZF9pbmQ7CisgICAgICAgICAgICB2YXIgYyQxID0gYzsKKyAgICAgICAgICAg
IGlmIChzdHJfaW5kJDEgPT09IGVuZF9pbmQkMSkgeworICAgICAgICAgICAgICBpbnZhbGlkX2Zv
cm1hdF9tZXNzYWdlKGVuZF9pbmQkMSwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGMkcHJpbWUkMSA9IENhbWxfc3RyaW5nLmdldChz
dHIsIHN0cl9pbmQkMSk7CisgICAgICAgICAgICBpZiAoYyRwcmltZSQxICE9PSAzNykgeworICAg
ICAgICAgICAgICBpZiAoYyRwcmltZSQxICE9PSA5MykgeworICAgICAgICAgICAgICAgIGFkZF9y
YW5nZShjJDEsIGMkcHJpbWUkMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2NoYXJf
c2V0X2NvbnRlbnQoc3RyX2luZCQxICsgMSB8IDAsIGVuZF9pbmQkMSk7CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYWRkX2luX2NoYXJfc2V0
KGNoYXJfc2V0LCBjJDEpOworICAgICAgICAgICAgICAgIGFkZF9pbl9jaGFyX3NldChjaGFyX3Nl
dCwgLyogIi0iICovNDUpOworICAgICAgICAgICAgICAgIHJldHVybiBzdHJfaW5kJDEgKyAxIHwg
MDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgIGlmICgoc3RyX2luZCQxICsgMSB8IDApID09PSBlbmRfaW5kJDEpIHsKKyAg
ICAgICAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQkMSwgInVuZXhwZWN0
ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHZhciBj
JHByaW1lJDIgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kJDEgKyAxIHwgMCk7CisgICAg
ICAgICAgICAgIHZhciBleGl0JDIgPSAwOworICAgICAgICAgICAgICBpZiAoYyRwcmltZSQyICE9
PSAzNykgeworICAgICAgICAgICAgICAgIGlmIChjJHByaW1lJDIgIT09IDY0KSB7CisgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFpbF9zaW5nbGVfcGVyY2VudChzdHJfaW5kJDEpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIGV4
aXQkMiA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGV4aXQkMiA9IDE7CisgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgaWYgKGV4aXQkMiA9PT0gMSkgeworICAgICAgICAgICAgICAgIGFkZF9y
YW5nZShjJDEsIGMkcHJpbWUkMik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2NoYXJf
c2V0X2NvbnRlbnQoc3RyX2luZCQxICsgMiB8IDAsIGVuZF9pbmQkMSk7CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQkMSA9IDI7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGV4aXQkMSA9PT0gMikgeworICAgICAgICAgIGlmIChjID09PSAvKiAiJSIgKi8zNykgewor
ICAgICAgICAgICAgYWRkX2luX2NoYXJfc2V0KGNoYXJfc2V0LCBjJHByaW1lKTsKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZV9jaGFyX3NldF9jb250ZW50KHN0cl9pbmQgKyAxIHwgMCwgZW5kX2lu
ZCk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAg
ICAgICAgaWYgKGMgPT09IC8qICIlIiAqLzM3KSB7CisgICAgICAgICAgICBmYWlsX3NpbmdsZV9w
ZXJjZW50KHN0cl9pbmQpOworICAgICAgICAgIH0KKyAgICAgICAgICBhZGRfaW5fY2hhcl9zZXQo
Y2hhcl9zZXQsIGMpOworICAgICAgICAgIF9jID0gYyRwcmltZTsKKyAgICAgICAgICBfc3RyX2lu
ZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICB9OworICAgIH07CisgICAgdmFyIHBhcnNlX2NoYXJf
c2V0X2NvbnRlbnQgPSBmdW5jdGlvbiAoX3N0cl9pbmQsIGVuZF9pbmQpIHsKKyAgICAgIHdoaWxl
KHRydWUpIHsKKyAgICAgICAgdmFyIHN0cl9pbmQgPSBfc3RyX2luZDsKKyAgICAgICAgaWYgKHN0
cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVu
ZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAgICAgfQorICAgICAgICB2
YXIgYyA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAgICBpZiAoYyAhPT0g
NDUpIHsKKyAgICAgICAgICBpZiAoYyAhPT0gOTMpIHsKKyAgICAgICAgICAgIHJldHVybiBwYXJz
ZV9jaGFyX3NldF9hZnRlcl9jaGFyKHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCwgYyk7CisgICAg
ICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN0cl9pbmQgKyAx
IHwgMDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
YWRkX2luX2NoYXJfc2V0KGNoYXJfc2V0LCAvKiAiLSIgKi80NSk7CisgICAgICAgICAgX3N0cl9p
bmQgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAor
ICAgICAgICB9CisgICAgICB9OworICAgIH07CisgICAgdmFyIHBhcnNlX2NoYXJfc2V0X3N0YXJ0
ID0gZnVuY3Rpb24gKHN0cl9pbmQsIGVuZF9pbmQpIHsKKyAgICAgIGlmIChzdHJfaW5kID09PSBl
bmRfaW5kKSB7CisgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhw
ZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgfQorICAgICAgdmFyIGMgPSBDYW1sX3N0cmlu
Zy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgIHJldHVybiBwYXJzZV9jaGFyX3NldF9hZnRlcl9j
aGFyKHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCwgYyk7CisgICAgfTsKKyAgICBpZiAoc3RyX2lu
ZCA9PT0gZW5kX2luZCkgeworICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAi
dW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgfQorICAgIHZhciBtYXRjaCA9IENhbWxf
c3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgIHZhciBtYXRjaCQxID0gbWF0Y2ggIT09IDk0
ID8gLyogdHVwbGUgKi9bCisgICAgICAgIHN0cl9pbmQsCisgICAgICAgIC8qIGZhbHNlICovMAor
ICAgICAgXSA6IC8qIHR1cGxlICovWworICAgICAgICBzdHJfaW5kICsgMSB8IDAsCisgICAgICAg
IC8qIHRydWUgKi8xCisgICAgICBdOworICAgIHZhciBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0
X3N0YXJ0KG1hdGNoJDFbMF0sIGVuZF9pbmQpOworICAgIHZhciBjaGFyX3NldCQxID0gQnl0ZXMu
dG9fc3RyaW5nKGNoYXJfc2V0KTsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAg
ICBuZXh0X2luZCwKKyAgICAgICAgICAgIG1hdGNoJDFbMV0gPyByZXZfY2hhcl9zZXQoY2hhcl9z
ZXQkMSkgOiBjaGFyX3NldCQxCisgICAgICAgICAgXTsKKyAgfTsKKyAgdmFyIGNoZWNrX29wZW5f
Ym94ID0gZnVuY3Rpb24gKGZtdCkgeworICAgIGlmICh0eXBlb2YgZm10ID09PSAibnVtYmVyIikg
eworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSBpZiAoZm10LnRhZyA9
PT0gMTEpIHsKKyAgICAgIGlmICh0eXBlb2YgZm10WzFdID09PSAibnVtYmVyIikgeworICAgICAg
ICB0cnkgeworICAgICAgICAgIG9wZW5fYm94X29mX3N0cmluZyhmbXRbMF0pOworICAgICAgICAg
IHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGV4bil7CisgICAg
ICAgICAgaWYgKGV4blswXSA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSkgewor
ICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICB0aHJvdyBleG47CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0KKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgfTsKKyAg
dmFyIHBhcnNlX3RhZyA9IGZ1bmN0aW9uIChpc19vcGVuX3RhZywgc3RyX2luZCwgZW5kX2luZCkg
eworICAgIHRyeSB7CisgICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgICB0
aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICB9CisgICAgICB2
YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgIGlmIChtYXRj
aCAhPT0gNjApIHsKKyAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2Zv
dW5kOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciBpbmQgPSAkJFN0cmluZy5p
bmRleF9mcm9tKHN0ciwgc3RyX2luZCArIDEgfCAwLCAvKiAiPiIgKi82Mik7CisgICAgICAgIGlm
IChpbmQgPj0gZW5kX2luZCkgeworICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLm5vdF9mb3VuZDsKKyAgICAgICAgfQorICAgICAgICB2YXIgc3ViX3N0ciA9ICQkU3RyaW5n
LnN1YihzdHIsIHN0cl9pbmQsIChpbmQgLSBzdHJfaW5kIHwgMCkgKyAxIHwgMCk7CisgICAgICAg
IHZhciBiZWdfaW5kID0gaW5kICsgMSB8IDA7CisgICAgICAgIHZhciBtYXRjaCQxID0gcGFyc2Vf
bGl0ZXJhbChiZWdfaW5kLCBiZWdfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgdmFyIG1hdGNoJDIg
PSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGluZCArIDEgfCAwKTsKKyAgICAgICAg
dmFyIHN1Yl9mbXQgPSBtYXRjaCQyWzBdOworICAgICAgICB2YXIgc3ViX2Zvcm1hdCA9IC8qIEZv
cm1hdCAqL1sKKyAgICAgICAgICBzdWJfZm10LAorICAgICAgICAgIHN1Yl9zdHIKKyAgICAgICAg
XTsKKyAgICAgICAgdmFyIGZvcm1hdHRpbmcgPSBpc19vcGVuX3RhZyA/IC8qIE9wZW5fdGFnICov
QmxvY2suX18oMCwgW3N1Yl9mb3JtYXRdKSA6IChjaGVja19vcGVuX2JveChzdWJfZm10KSwgLyog
T3Blbl9ib3ggKi9CbG9jay5fXygxLCBbc3ViX2Zvcm1hdF0pKTsKKyAgICAgICAgcmV0dXJuIC8q
IEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19nZW4gKi9CbG9jay5fXygxOCwgWworICAgICAgICAg
ICAgICAgICAgICBmb3JtYXR0aW5nLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQxWzBdCisg
ICAgICAgICAgICAgICAgICBdKV07CisgICAgICB9CisgICAgfQorICAgIGNhdGNoIChleG4pewor
ICAgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7Cisg
ICAgICAgIHZhciBtYXRjaCQzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRf
aW5kKTsKKyAgICAgICAgdmFyIHN1Yl9mb3JtYXQkMSA9IC8qIEZvcm1hdCAqL1sKKyAgICAgICAg
ICAvKiBFbmRfb2ZfZm9ybWF0ICovMCwKKyAgICAgICAgICAiIgorICAgICAgICBdOworICAgICAg
ICB2YXIgZm9ybWF0dGluZyQxID0gaXNfb3Blbl90YWcgPyAvKiBPcGVuX3RhZyAqL0Jsb2NrLl9f
KDAsIFtzdWJfZm9ybWF0JDFdKSA6IC8qIE9wZW5fYm94ICovQmxvY2suX18oMSwgW3N1Yl9mb3Jt
YXQkMV0pOworICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2dlbiAq
L0Jsb2NrLl9fKDE4LCBbCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmckMSwKKyAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkM1swXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07
CisgIHJldHVybiBwYXJzZV9saXRlcmFsKDAsIDAsIHN0ci5sZW5ndGgpOworfQorCitmdW5jdGlv
biBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5KHN0ciwgZm10dHkpIHsKKyAgdmFyIG1hdGNoID0gZm10
X2ViYl9vZl9zdHJpbmcoLyogTm9uZSAqLzAsIHN0cik7CisgIHRyeSB7CisgICAgcmV0dXJuIC8q
IEZvcm1hdCAqL1sKKyAgICAgICAgICAgIHR5cGVfZm9ybWF0KG1hdGNoWzBdLCBmbXR0eSksCisg
ICAgICAgICAgICBzdHIKKyAgICAgICAgICBdOworICB9CisgIGNhdGNoIChleG4peworICAgIGlm
IChleG4gPT09IFR5cGVfbWlzbWF0Y2gpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihmYWlsd2l0
aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQg
aW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiIGFuZCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgICJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1p
c21hdGNoIGJldHdlZW4gJVMgYW5kICVTIgorICAgICAgICAgICAgICAgICAgICBdKSwgc3RyLCBz
dHJpbmdfb2ZfZm10dHkoZm10dHkpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBl
eG47CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0KHN0
ciwgcGFyYW0pIHsKKyAgdmFyIG1hdGNoID0gZm10X2ViYl9vZl9zdHJpbmcoLyogTm9uZSAqLzAs
IHN0cik7CisgIHRyeSB7CisgICAgcmV0dXJuIC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgIHR5
cGVfZm9ybWF0KG1hdGNoWzBdLCBmbXR0eV9vZl9mbXQocGFyYW1bMF0pKSwKKyAgICAgICAgICAg
IHN0cgorICAgICAgICAgIF07CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0g
VHlwZV9taXNtYXRjaCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8yKGZhaWx3aXRoX21lc3NhZ2Uo
LyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICov
QmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBpbnB1dDogZm9y
bWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
U3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgYW5kICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Q2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgXSksCisg
ICAgICAgICAgICAgICAgICAgICAgImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0
d2VlbiAlUyBhbmQgJVMiCisgICAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHBhcmFtWzFdKTsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9CisKK2V4
cG9ydHMuaXNfaW5fY2hhcl9zZXQgICAgICAgICAgICAgICAgID0gaXNfaW5fY2hhcl9zZXQ7Citl
eHBvcnRzLnJldl9jaGFyX3NldCAgICAgICAgICAgICAgICAgICA9IHJldl9jaGFyX3NldDsKK2V4
cG9ydHMuY3JlYXRlX2NoYXJfc2V0ICAgICAgICAgICAgICAgID0gY3JlYXRlX2NoYXJfc2V0Owor
ZXhwb3J0cy5hZGRfaW5fY2hhcl9zZXQgICAgICAgICAgICAgICAgPSBhZGRfaW5fY2hhcl9zZXQ7
CitleHBvcnRzLmZyZWV6ZV9jaGFyX3NldCAgICAgICAgICAgICAgICA9IGZyZWV6ZV9jaGFyX3Nl
dDsKK2V4cG9ydHMucGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0ID0gcGFyYW1fZm9ybWF0
X29mX2lnbm9yZWRfZm9ybWF0OworZXhwb3J0cy5tYWtlX3ByaW50ZiAgICAgICAgICAgICAgICAg
ICAgPSBtYWtlX3ByaW50ZjsKK2V4cG9ydHMub3V0cHV0X2FjYyAgICAgICAgICAgICAgICAgICAg
ID0gb3V0cHV0X2FjYzsKK2V4cG9ydHMuYnVmcHV0X2FjYyAgICAgICAgICAgICAgICAgICAgID0g
YnVmcHV0X2FjYzsKK2V4cG9ydHMuc3RycHV0X2FjYyAgICAgICAgICAgICAgICAgICAgID0gc3Ry
cHV0X2FjYzsKK2V4cG9ydHMudHlwZV9mb3JtYXQgICAgICAgICAgICAgICAgICAgID0gdHlwZV9m
b3JtYXQ7CitleHBvcnRzLmZtdF9lYmJfb2Zfc3RyaW5nICAgICAgICAgICAgICA9IGZtdF9lYmJf
b2Zfc3RyaW5nOworZXhwb3J0cy5mb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5ICAgICAgICAgPSBmb3Jt
YXRfb2Zfc3RyaW5nX2ZtdHR5OworZXhwb3J0cy5mb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCAgICAg
ICAgPSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdDsKK2V4cG9ydHMuY2hhcl9vZl9pY29udiAgICAg
ICAgICAgICAgICAgID0gY2hhcl9vZl9pY29udjsKK2V4cG9ydHMuc3RyaW5nX29mX2Zvcm1hdHRp
bmdfbGl0ICAgICAgID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0OworZXhwb3J0cy5zdHJpbmdf
b2ZfZm9ybWF0dGluZ19nZW4gICAgICAgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19nZW47CitleHBv
cnRzLnN0cmluZ19vZl9mbXR0eSAgICAgICAgICAgICAgICA9IHN0cmluZ19vZl9mbXR0eTsKK2V4
cG9ydHMuc3RyaW5nX29mX2ZtdCAgICAgICAgICAgICAgICAgID0gc3RyaW5nX29mX2ZtdDsKK2V4
cG9ydHMub3Blbl9ib3hfb2Zfc3RyaW5nICAgICAgICAgICAgID0gb3Blbl9ib3hfb2Zfc3RyaW5n
OworZXhwb3J0cy5zeW1tICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBzeW1tOworZXhwb3J0
cy50cmFucyAgICAgICAgICAgICAgICAgICAgICAgICAgPSB0cmFuczsKK2V4cG9ydHMucmVjYXN0
ICAgICAgICAgICAgICAgICAgICAgICAgID0gcmVjYXN0OworLyogTm8gc2lkZSBlZmZlY3QgKi8K
Ky8vLy8vLy8vIGVuZCBvZiBjYW1saW50ZXJuYWxGb3JtYXQuanMgLy8vLy8vLy8KK8KgIMKgIHJl
dHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9pbyddID0gZnVuY3Rp
b24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9p
by5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgICAgICAgICAgICAg
ICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSBy
ZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uICRjYXJldChw
cmltLCBwcmltJDEpIHsKKyAgcmV0dXJuIHByaW0gKyBwcmltJDE7Cit9CisKK3ZhciBzdGRpbiA9
IHVuZGVmaW5lZDsKKwordmFyIHN0ZG91dCA9IC8qIHJlY29yZCAqL1sKKyAgLyogYnVmZmVyICov
IiIsCisgIC8qIG91dHB1dCAqL2Z1bmN0aW9uIChfLCBzKSB7CisgICAgdmFyIHYgPSBzLmxlbmd0
aCAtIDEgfCAwOworICAgIGlmICgoICh0eXBlb2YgcHJvY2VzcyAhPT0gInVuZGVmaW5lZCIpICYm
IHByb2Nlc3Muc3Rkb3V0ICYmIHByb2Nlc3Muc3Rkb3V0LndyaXRlKSkgeworICAgICAgcmV0dXJu
ICggcHJvY2Vzcy5zdGRvdXQud3JpdGUgKShzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc1t2XSA9
PT0gIlxuIikgeworICAgICAgY29uc29sZS5sb2cocy5zbGljZSgwLCB2KSk7CisgICAgICByZXR1
cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGNvbnNvbGUubG9nKHMpOwor
ICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH0KK107CisKK3ZhciBzdGRlcnIgPSAv
KiByZWNvcmQgKi9bCisgIC8qIGJ1ZmZlciAqLyIiLAorICAvKiBvdXRwdXQgKi9mdW5jdGlvbiAo
XywgcykgeworICAgIHZhciB2ID0gcy5sZW5ndGggLSAxIHwgMDsKKyAgICBpZiAoc1t2XSA9PT0g
IlxuIikgeworICAgICAgY29uc29sZS5sb2cocy5zbGljZSgwLCB2KSk7CisgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGNvbnNvbGUubG9nKHMpOworICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH0KK107CisKK2Z1bmN0aW9uIGNhbWxfbWxf
b3Blbl9kZXNjcmlwdG9yX2luKCkgeworICB0aHJvdyBbCisgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiBu
b3QgaW1wbGVtZW50ZWQiCisgICAgICBdOworfQorCitmdW5jdGlvbiBjYW1sX21sX29wZW5fZGVz
Y3JpcHRvcl9vdXQoKSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuZmFpbHVyZSwKKyAgICAgICAgImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCBub3QgaW1w
bGVtZW50ZWQiCisgICAgICBdOworfQorCitmdW5jdGlvbiBjYW1sX21sX2ZsdXNoKG9jKSB7Cisg
IGlmIChvY1svKiBidWZmZXIgKi8wXSAhPT0gIiIpIHsKKyAgICBDdXJyeS5fMihvY1svKiBvdXRw
dXQgKi8xXSwgb2MsIG9jWy8qIGJ1ZmZlciAqLzBdKTsKKyAgICBvY1svKiBidWZmZXIgKi8wXSA9
ICIiOworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7
CisgIH0KK30KKwordmFyIG5vZGVfc3RkX291dHB1dCA9IChmdW5jdGlvbiAocyl7CisgICByZXR1
cm4gKHR5cGVvZiBwcm9jZXNzICE9PSAidW5kZWZpbmVkIikgJiYgcHJvY2Vzcy5zdGRvdXQgJiYg
KHByb2Nlc3Muc3Rkb3V0LndyaXRlKHMpLCB0cnVlKTsKKyAgIH0KKyk7CisKK2Z1bmN0aW9uIGNh
bWxfbWxfb3V0cHV0KG9jLCBzdHIsIG9mZnNldCwgbGVuKSB7CisgIHZhciBzdHIkMSA9IG9mZnNl
dCA9PT0gMCAmJiBsZW4gPT09IHN0ci5sZW5ndGggPyBzdHIgOiBzdHIuc2xpY2Uob2Zmc2V0LCBs
ZW4pOworICBpZiAoKCAodHlwZW9mIHByb2Nlc3MgIT09ICJ1bmRlZmluZWQiKSAmJiBwcm9jZXNz
LnN0ZG91dCAmJiBwcm9jZXNzLnN0ZG91dC53cml0ZSApICYmIG9jID09PSBzdGRvdXQpIHsKKyAg
ICByZXR1cm4gKCBwcm9jZXNzLnN0ZG91dC53cml0ZSApKHN0ciQxKTsKKyAgfQorICBlbHNlIHsK
KyAgICB2YXIgaWQgPSBzdHIkMS5sYXN0SW5kZXhPZigiXG4iKTsKKyAgICBpZiAoaWQgPCAwKSB7
CisgICAgICBvY1svKiBidWZmZXIgKi8wXSA9IG9jWy8qIGJ1ZmZlciAqLzBdICsgc3RyJDE7Cisg
ICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIG9jWy8qIGJ1
ZmZlciAqLzBdID0gb2NbLyogYnVmZmVyICovMF0gKyBzdHIkMS5zbGljZSgwLCBpZCArIDEgfCAw
KTsKKyAgICAgIGNhbWxfbWxfZmx1c2gob2MpOworICAgICAgb2NbLyogYnVmZmVyICovMF0gPSBv
Y1svKiBidWZmZXIgKi8wXSArIHN0ciQxLnNsaWNlKGlkICsgMSB8IDApOworICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hh
cihvYywgJCRjaGFyKSB7CisgIHJldHVybiBjYW1sX21sX291dHB1dChvYywgU3RyaW5nLmZyb21D
aGFyQ29kZSgkJGNoYXIpLCAwLCAxKTsKK30KKworZnVuY3Rpb24gY2FtbF9tbF9pbnB1dChfLCBf
JDEsIF8kMiwgXyQzKSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuZmFpbHVyZSwKKyAgICAgICAgImNhbWxfbWxfaW5wdXQgaWMgbm90IGltcGxlbWVudGVkIgor
ICAgICAgXTsKK30KKworZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyKCkgeworICB0aHJvdyBb
CisgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICJjYW1s
X21sX2lucHV0X2NoYXIgbm90IGltcGxlbW50ZWQiCisgICAgICBdOworfQorCitmdW5jdGlvbiBj
YW1sX21sX291dF9jaGFubmVsc19saXN0KCkgeworICByZXR1cm4gLyogOjogKi9bCisgICAgICAg
ICAgc3Rkb3V0LAorICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgc3RkZXJyLAorICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworfQorCitleHBvcnRz
LiRjYXJldCAgICAgICAgICAgICAgICAgICAgICA9ICRjYXJldDsKK2V4cG9ydHMuc3RkaW4gICAg
ICAgICAgICAgICAgICAgICAgID0gc3RkaW47CitleHBvcnRzLnN0ZG91dCAgICAgICAgICAgICAg
ICAgICAgICA9IHN0ZG91dDsKK2V4cG9ydHMuc3RkZXJyICAgICAgICAgICAgICAgICAgICAgID0g
c3RkZXJyOworZXhwb3J0cy5jYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAgPSBjYW1sX21sX29w
ZW5fZGVzY3JpcHRvcl9pbjsKK2V4cG9ydHMuY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0ID0g
Y2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0OworZXhwb3J0cy5jYW1sX21sX2ZsdXNoICAgICAg
ICAgICAgICAgPSBjYW1sX21sX2ZsdXNoOworZXhwb3J0cy5ub2RlX3N0ZF9vdXRwdXQgICAgICAg
ICAgICAgPSBub2RlX3N0ZF9vdXRwdXQ7CitleHBvcnRzLmNhbWxfbWxfb3V0cHV0ICAgICAgICAg
ICAgICA9IGNhbWxfbWxfb3V0cHV0OworZXhwb3J0cy5jYW1sX21sX291dHB1dF9jaGFyICAgICAg
ICAgPSBjYW1sX21sX291dHB1dF9jaGFyOworZXhwb3J0cy5jYW1sX21sX2lucHV0ICAgICAgICAg
ICAgICAgPSBjYW1sX21sX2lucHV0OworZXhwb3J0cy5jYW1sX21sX2lucHV0X2NoYXIgICAgICAg
ICAgPSBjYW1sX21sX2lucHV0X2NoYXI7CitleHBvcnRzLmNhbWxfbWxfb3V0X2NoYW5uZWxzX2xp
c3QgICA9IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Q7CisvKiBzdGRpbiBOb3QgYSBwdXJlIG1v
ZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfaW8uanMgLy8vLy8vLy8KK8KgIMKgIHJldHVy
biBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9sZXhlciddID0gZnVuY3Rp
b24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9s
ZXhlci5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9u
IGZhaWwoKSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFp
bHVyZSwKKyAgICAgICAgImxleGluZzogZW1wdHkgdG9rZW4iCisgICAgICBdOworfQorCisgCisK
Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAg
ICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8q
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3Rh
bCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBD
b3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRp
cXVlIGV0ICAgKi8KKy8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBU
aGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi8KKy8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKi8KKy8qICB0aGUg
c3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNF
LiAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogJElkOiBs
ZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqLworCisvKiBUaGUg
dGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAq
LworCitmdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7CisgICAgdmFyIGwgPSBzLmxlbmd0aCAv
IDI7CisgICAgdmFyIGEgPSBuZXcgQXJyYXkobCk7CisgICAgLy8gd2hlbiBzLmNoYXJDb2RlQXQo
MiAqIGkgKyAxICkgPiAxMjggKDB4ODApCisgICAgLy8gYVtpXSA8IDAgIAorICAgIC8vIGZvcih2
YXIgaSA9IDAgOyBpIDw9IDB4ZmZmZjsgKytpKSB7IGlmIChpIDw8IDE2ID4+IDE2ICE9PWkpe2Nv
bnNvbGUubG9nKGk8PDE2Pj4xNiwgJ3ZzJyxpKX19CisgICAgLy8gCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsOyBpKyspCisgICAgICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChz
LmNoYXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7CisgICAgcmV0dXJuIGE7
Cit9CisvKioKKyAqIGV4dGVybmFsIGNfZW5naW5lICA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxl
eGJ1ZiAtPiBpbnQKKyAqIGxleGluZy5tbAorICogdHlwZSBsZXhfdGFibGVzID0geworICogICBs
ZXhfYmFzZSA6IHN0cmluZzsKKyAqICAgbGV4X2JhY2t0cmsgOiBzdHJpbmc7CisgKiAgIGxleF9k
ZWZhdWx0IDogc3RyaW5nOworICogICBsZXhfdHJhbnMgOiBzdHJpbmc7CisgKiAgIGxleF9jaGVj
ayA6IHN0cmluZzsKKyAqICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZzsKKyAqICAgbGV4X2JhY2t0
cmtfY29kZSA6IHN0cmluZzsKKyAqICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZzsKKyAqICAg
bGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7CisgKiAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nOwor
ICogICBsZXhfY29kZSA6IHN0cmluZzsKKyAqIH0KKyAqCisgKiB0eXBlIGxleGJ1ZiA9IHsKKyAq
ICAgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdCA7CisgKiAgIG11dGFibGUgbGV4X2J1ZmZl
ciA6IGJ5dGVzOworICogICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50OworICogICBtdXRh
YmxlIGxleF9hYnNfcG9zIDogaW50OworICogICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7
CisgKiAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50OworICogICBtdXRhYmxlIGxleF9sYXN0
X3BvcyA6IGludDsKKyAqICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7CisgKiAgIG11
dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDsKKyAqICAgbXV0YWJsZSBsZXhfbWVtIDogaW50
IGFycmF5OworICogICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247CisgKiAgIG11dGFi
bGUgbGV4X2N1cnJfcDsKKyAqIH0KKyAqIEBwYXJhbSB0YmwKKyAqIEBwYXJhbSBzdGFydF9zdGF0
ZQorICogQHBhcmFtIGxleGJ1ZgorICogQHJldHVybnMge2FueX0KKyAqLworZnVuY3Rpb24gJCRj
YW1sX2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7CisgICAgLy8gTGV4aW5n
LmxleGJ1ZgorICAgIHZhciBsZXhfYnVmZmVyID0gMTsKKyAgICB2YXIgbGV4X2J1ZmZlcl9sZW4g
PSAyOworICAgIHZhciBsZXhfc3RhcnRfcG9zID0gNDsKKyAgICB2YXIgbGV4X2N1cnJfcG9zID0g
NTsKKyAgICB2YXIgbGV4X2xhc3RfcG9zID0gNjsKKyAgICB2YXIgbGV4X2xhc3RfYWN0aW9uID0g
NzsKKyAgICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gODsKKyAgICAvLyBMZXhpbmcubGV4X3RhYmxl
cworICAgIHZhciBsZXhfYmFzZSA9IDA7CisgICAgdmFyIGxleF9iYWNrdHJrID0gMTsKKyAgICB2
YXIgbGV4X2RlZmF1bHQgPSAyOworICAgIHZhciBsZXhfdHJhbnMgPSAzOworICAgIHZhciBsZXhf
Y2hlY2sgPSA0OworICAgIGlmICghdGJsLmxleF9kZWZhdWx0KSB7CisgICAgICAgIHRibC5sZXhf
YmFzZSA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfYmFzZV0pOworICAgICAgICB0YmwubGV4X2Jh
Y2t0cmsgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTsKKyAgICAgICAgdGJsLmxl
eF9jaGVjayA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfY2hlY2tdKTsKKyAgICAgICAgdGJsLmxl
eF90cmFucyA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfdHJhbnNdKTsKKyAgICAgICAgdGJsLmxl
eF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7CisgICAgfQorICAg
IHZhciBjOworICAgIHZhciBzdGF0ZSA9IHN0YXJ0X3N0YXRlOworICAgIC8vdmFyIGJ1ZmZlciA9
IGJ5dGVzX29mX3N0cmluZyhsZXhidWZbbGV4X2J1ZmZlcl0pOworICAgIHZhciBidWZmZXIgPSBs
ZXhidWZbbGV4X2J1ZmZlcl07CisgICAgaWYgKHN0YXRlID49IDApIHsKKyAgICAgICAgLyogRmly
c3QgZW50cnkgKi8KKyAgICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0
YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTsKKyAgICAgICAgbGV4YnVmW2xleF9sYXN0
X2FjdGlvbl0gPSAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFJlZW50cnkgYWZ0
ZXIgcmVmaWxsICovCisgICAgICAgIHN0YXRlID0gLXN0YXRlIC0gMTsKKyAgICB9CisgICAgZm9y
ICg7OykgeworICAgICAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIg
Zm9yIGN1cnJlbnQgc3RhdGUgKi8KKyAgICAgICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3Rh
dGVdOworICAgICAgICBpZiAoYmFzZSA8IDApCisgICAgICAgICAgICByZXR1cm4gLWJhc2UgLSAx
OworICAgICAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqLworICAgICAgICB2
YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07CisgICAgICAgIGlmIChiYWNrdHJr
ID49IDApIHsKKyAgICAgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9j
dXJyX3Bvc107CisgICAgICAgICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7
CisgICAgICAgIH0KKyAgICAgICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi8KKyAgICAg
ICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pIHsK
KyAgICAgICAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PT0gMCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBjID0gMjU2OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyog
UmVhZCBuZXh0IGlucHV0IGNoYXIgKi8KKyAgICAgICAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xl
eF9jdXJyX3Bvc11dOworICAgICAgICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10rKzsKKyAgICAg
ICAgfQorICAgICAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqLworICAgICAgICBpZiAodGJs
LmxleF9jaGVja1tiYXNlICsgY10gPT09IHN0YXRlKSB7CisgICAgICAgICAgICBzdGF0ZSA9IHRi
bC5sZXhfdHJhbnNbYmFzZSArIGNdOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdOworICAgICAgICB9CisgICAgICAg
IC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJh
Y2sgcG9pbnQgKi8KKyAgICAgICAgaWYgKHN0YXRlIDwgMCkgeworICAgICAgICAgICAgbGV4YnVm
W2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTsKKyAgICAgICAgICAgIGlmIChs
ZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSkKKyAgICAgICAgICAgICAgICBmYWlsKCk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9h
Y3Rpb25dOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogRXJhc2Ug
dGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzCisg
ICAgICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8g
YmFja3RyYWNrIGFib3ZlKQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoYyA9PSAy
NTYpCisgICAgICAgICAgICAgICAgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwOworICAgICAg
ICB9CisgICAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCisvKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMg
ICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisK
Ky8qKgorICogcyAtPiBMZXhpbmcubGV4X3RhYmxlcy5sZXhfY29kZQorICogbWVtIC0+IExleGlu
Zy5sZXhidWYubGV4X21lbSAoKiBpbnQgYXJyYXkgKikKKyAqLyAgICAgICAgICAKKyAgICAgICAg
ICAKK2Z1bmN0aW9uIGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3BvcykgeworICAg
IGZvciAoOzspIHsKKyAgICAgICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsKKyAgICAgICAg
aSsrOworICAgICAgICBpZiAoZHN0ID09IDB4ZmYpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7CisgICAgICAgIGkrKzsKKyAgICAgICAgaWYg
KHNyYyA9PSAweGZmKQorICAgICAgICAgICAgbWVtW2RzdF0gPSBjdXJyX3BvczsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbWVtW2RzdF0gPSBtZW1bc3JjXTsKKyAgICB9Cit9CisKKworLyoq
CisgKiBzIC0+IExleGluZy5sZXhfdGFibGVzLmxleF9jb2RlCisgKiBtZW0gLT4gTGV4aW5nLmxl
eGJ1Zi5sZXhfbWVtICgqIGludCBhcnJheSAqKQorICovCisgIAorZnVuY3Rpb24gY2FtbF9sZXhf
cnVuX3RhZyhzLCBpLCBtZW0pIHsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHZhciBkc3QgPSBz
LmNoYXJDb2RlQXQoaSk7CisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKGRzdCA9PSAweGZmKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOwor
ICAgICAgICBpKys7CisgICAgICAgIGlmIChzcmMgPT0gMHhmZikKKyAgICAgICAgICAgIG1lbVtk
c3RdID0gLTE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbVtkc3RdID0gbWVtW3NyY107
CisgICAgfQorfQorLyoqCisgKiBleHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+
IGludCAtPiBsZXhidWYgLT4gaW50ID0gImNhbWxfbmV3X2xleF9lbmdpbmUiCisgKiBAcGFyYW0g
dGJsCisgKiBAcGFyYW0gc3RhcnRfc3RhdGUKKyAqIEBwYXJhbSBsZXhidWYKKyAqIEByZXR1cm5z
IHthbnl9CisgKi8KK2Z1bmN0aW9uICQkY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0
YXRlLCBsZXhidWYpIHsKKyAgICAvLyBMZXhpbmcubGV4YnVmCisgICAgdmFyIGxleF9idWZmZXIg
PSAxOworICAgIHZhciBsZXhfYnVmZmVyX2xlbiA9IDI7CisgICAgdmFyIGxleF9zdGFydF9wb3Mg
PSA0OworICAgIHZhciBsZXhfY3Vycl9wb3MgPSA1OworICAgIHZhciBsZXhfbGFzdF9wb3MgPSA2
OworICAgIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA3OworICAgIHZhciBsZXhfZW9mX3JlYWNoZWQg
PSA4OworICAgIHZhciBsZXhfbWVtID0gOTsKKyAgICAvLyBMZXhpbmcubGV4X3RhYmxlcworICAg
IHZhciBsZXhfYmFzZSA9IDA7CisgICAgdmFyIGxleF9iYWNrdHJrID0gMTsKKyAgICB2YXIgbGV4
X2RlZmF1bHQgPSAyOworICAgIHZhciBsZXhfdHJhbnMgPSAzOworICAgIHZhciBsZXhfY2hlY2sg
PSA0OworICAgIHZhciBsZXhfYmFzZV9jb2RlID0gNTsKKyAgICB2YXIgbGV4X2JhY2t0cmtfY29k
ZSA9IDY7CisgICAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA3OworICAgIHZhciBsZXhfdHJhbnNf
Y29kZSA9IDg7CisgICAgdmFyIGxleF9jaGVja19jb2RlID0gOTsKKyAgICB2YXIgbGV4X2NvZGUg
PSAxMDsKKyAgICBpZiAoIXRibC5sZXhfZGVmYXVsdCkgeworICAgICAgICB0YmwubGV4X2Jhc2Ug
PSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2VdKTsKKyAgICAgICAgdGJsLmxleF9iYWNrdHJr
ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYWNrdHJrXSk7CisgICAgICAgIHRibC5sZXhfY2hl
Y2sgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2NoZWNrXSk7CisgICAgICAgIHRibC5sZXhfdHJh
bnMgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7CisgICAgICAgIHRibC5sZXhfZGVm
YXVsdCA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfZGVmYXVsdF0pOworICAgIH0KKyAgICBpZiAo
IXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7CisgICAgICAgIHRibC5sZXhfYmFzZV9jb2RlID0gY2Ft
bF9sZXhfYXJyYXkodGJsW2xleF9iYXNlX2NvZGVdKTsKKyAgICAgICAgdGJsLmxleF9iYWNrdHJr
X2NvZGUgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtfY29kZV0pOworICAgICAgICB0
YmwubGV4X2NoZWNrX2NvZGUgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2NoZWNrX2NvZGVdKTsK
KyAgICAgICAgdGJsLmxleF90cmFuc19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF90cmFu
c19jb2RlXSk7CisgICAgICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXko
dGJsW2xleF9kZWZhdWx0X2NvZGVdKTsKKyAgICB9CisgICAgaWYgKHRibC5sZXhfY29kZSA9PSBu
dWxsKSB7CisgICAgICAgIC8vdGJsLmxleF9jb2RlID0gY2FtbF9ieXRlc19vZl9zdHJpbmcodGJs
W2xleF9jb2RlXSk7CisgICAgICAgIHRibC5sZXhfY29kZSA9ICh0YmxbbGV4X2NvZGVdKTsKKyAg
ICB9CisgICAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7CisgICAgLy92YXIgYnVmZmVyID0g
Y2FtbF9ieXRlc19vZl9zdHJpbmcobGV4YnVmW2xleF9idWZmZXJdKTsKKyAgICB2YXIgYnVmZmVy
ID0gbGV4YnVmW2xleF9idWZmZXJdOworICAgIGlmIChzdGF0ZSA+PSAwKSB7CisgICAgICAgIC8q
IEZpcnN0IGVudHJ5ICovCisgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xl
eF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107CisgICAgICAgIGxleGJ1ZltsZXhf
bGFzdF9hY3Rpb25dID0gLTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBSZWVudHJ5
IGFmdGVyIHJlZmlsbCAqLworICAgICAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7CisgICAgfQorICAg
IGZvciAoOzspIHsKKyAgICAgICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVt
YmVyIGZvciBjdXJyZW50IHN0YXRlICovCisgICAgICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNl
W3N0YXRlXTsKKyAgICAgICAgaWYgKGJhc2UgPCAwKSB7CisgICAgICAgICAgICB2YXIgcGNfb2Zm
ID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdOworICAgICAgICAgICAgY2FtbF9sZXhfcnVuX3Rh
Zyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTsKKyAgICAgICAgICAgIHJl
dHVybiAtYmFzZSAtIDE7CisgICAgICAgIH0KKyAgICAgICAgLyogU2VlIGlmIGl0J3MgYSBiYWNr
dHJhY2sgcG9pbnQgKi8KKyAgICAgICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3Rh
dGVdOworICAgICAgICBpZiAoYmFja3RyayA+PSAwKSB7CisgICAgICAgICAgICB2YXIgcGNfb2Zm
ID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdOworICAgICAgICAgICAgY2FtbF9sZXhfcnVu
X3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTsKKyAgICAgICAgICAg
IGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107CisgICAgICAgICAg
ICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7CisgICAgICAgIH0KKyAgICAgICAg
LyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi8KKyAgICAgICAgaWYgKGxleGJ1ZltsZXhfY3Vy
cl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pIHsKKyAgICAgICAgICAgIGlmIChsZXhi
dWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtc3RhdGUg
LSAxOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGMgPSAyNTY7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAq
LworICAgICAgICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07CisgICAgICAg
ICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSsrOworICAgICAgICB9CisgICAgICAgIC8qIERldGVy
bWluZSBuZXh0IHN0YXRlICovCisgICAgICAgIHZhciBwc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAg
aWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKQorICAgICAgICAgICAgc3RhdGUg
PSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3Rh
dGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdOworICAgICAgICAvKiBJZiBubyB0cmFuc2l0aW9u
IG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovCisgICAgICAg
IGlmIChzdGF0ZSA8IDApIHsKKyAgICAgICAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4
YnVmW2xleF9sYXN0X3Bvc107CisgICAgICAgICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlv
bl0gPT0gLTEpCisgICAgICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFu
ZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqLworICAgICAgICAgICAgdmFyIGJhc2VfY29kZSA9IHRi
bC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjsKKyAgICAgICAgICAgIGlmICh0YmwubGV4
X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKQorICAgICAgICAgICAgICAgIHBj
X29mZiA9IHRibC5sZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVd
OworICAgICAgICAgICAgaWYgKHBjX29mZiA+IDApCisgICAgICAgICAgICAgICAgY2FtbF9sZXhf
cnVuX21lbSh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4
X2N1cnJfcG9zXSk7CisgICAgICAgICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5
IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXMKKyAgICAgICAgICAgICBjb25zdW1lZCBi
eSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpCisgICAg
ICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChjID09IDI1NikKKyAgICAgICAgICAgICAgICBs
ZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7CisgICAgICAgIH0KKyAgICB9Cit9CisKKzsKKwor
ZnVuY3Rpb24gY2FtbF9sZXhfZW5naW5lKHByaW0sIHByaW0kMSwgcHJpbSQyKSB7CisgIHJldHVy
biAkJGNhbWxfbGV4X2VuZ2luZShwcmltLCBwcmltJDEsIHByaW0kMik7Cit9CisKK2Z1bmN0aW9u
IGNhbWxfbmV3X2xleF9lbmdpbmUocHJpbSwgcHJpbSQxLCBwcmltJDIpIHsKKyAgcmV0dXJuICQk
Y2FtbF9uZXdfbGV4X2VuZ2luZShwcmltLCBwcmltJDEsIHByaW0kMik7Cit9CisKK2V4cG9ydHMu
ZmFpbCAgICAgICAgICAgICAgICA9IGZhaWw7CitleHBvcnRzLmNhbWxfbGV4X2VuZ2luZSAgICAg
PSBjYW1sX2xleF9lbmdpbmU7CitleHBvcnRzLmNhbWxfbmV3X2xleF9lbmdpbmUgPSBjYW1sX25l
d19sZXhfZW5naW5lOworLyogIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2Yg
Y2FtbF9sZXhlci5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisK
KyAgX3JlZ2lzdHJ5WydjYW1sX29iaiddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0
cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9vYmouanMgLy8vLy8vLy8KKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIEJsb2NrICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ibG9jayIp
OwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBjYW1sX29ial9kdXAoeCkgeworICB2YXIgbGVuID0g
eC5sZW5ndGg7CisgIHZhciB2ID0gbmV3IEFycmF5KGxlbik7CisgIGZvcih2YXIgaSA9IDAgLGlf
ZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgdltpXSA9IHhb
aV07CisgIH0KKyAgdi50YWcgPSB4LnRhZyB8IDA7CisgIHJldHVybiB2OworfQorCitmdW5jdGlv
biBjYW1sX29ial90cnVuY2F0ZSh4LCBuZXdfc2l6ZSkgeworICB2YXIgbGVuID0geC5sZW5ndGg7
CisgIGlmIChuZXdfc2l6ZSA8PSAwIHx8IG5ld19zaXplID4gbGVuKSB7CisgICAgdGhyb3cgWwor
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgIk9iai50cnVuY2F0ZSIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIGlmIChsZW4gIT09
IG5ld19zaXplKSB7CisgICAgZm9yKHZhciBpID0gbmV3X3NpemUgLGlfZmluaXNoID0gbGVuIC0g
MSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgICB4W2ldID0gMDsKKyAgICB9CisgICAg
eC5sZW5ndGggPSBuZXdfc2l6ZTsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2Zvcndh
cmQoeCkgeworICByZXR1cm4gQmxvY2suX18oMjUwLCBbeF0pOworfQorCitmdW5jdGlvbiBjYW1s
X3VwZGF0ZV9kdW1teSh4LCB5KSB7CisgIHZhciBsZW4gPSB5Lmxlbmd0aDsKKyAgZm9yKHZhciBp
ID0gMCAsaV9maW5pc2ggPSBsZW4gLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICB4
W2ldID0geVtpXTsKKyAgfQorICB2YXIgeV90YWcgPSB5LnRhZyB8IDA7CisgIGlmICh5X3RhZyAh
PT0gMCkgeworICAgIHgudGFnID0geV90YWc7CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX2ludF9jb21w
YXJlKHgsIHkpIHsKKyAgaWYgKHggPCB5KSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2Ug
aWYgKHggPT09IHkpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
MTsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX2NvbXBhcmUoX2EsIF9iKSB7CisgIHdoaWxlKHRy
dWUpIHsKKyAgICB2YXIgYiA9IF9iOworICAgIHZhciBhID0gX2E7CisgICAgaWYgKHR5cGVvZiBh
ID09PSAic3RyaW5nIikgeworICAgICAgdmFyIHggPSBhOworICAgICAgdmFyIHkgPSBiOworICAg
ICAgaWYgKHggPCB5KSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKHggPT09IHkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGVvZiBh
ID09PSAibnVtYmVyIikgeworICAgICAgcmV0dXJuIGNhbWxfaW50X2NvbXBhcmUoYSwgYik7Cisg
ICAgfQorICAgIGVsc2UgaWYgKHR5cGVvZiBhID09PSAiYm9vbGVhbiIgfHwgdHlwZW9mIGEgPT09
ICJudWxsIiB8fCB0eXBlb2YgYSA9PT0gInVuZGVmaW5lZCIpIHsKKyAgICAgIHZhciB4JDEgPSBh
OworICAgICAgdmFyIHkkMSA9IGI7CisgICAgICBpZiAoeCQxID09PSB5JDEpIHsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgICB9CisgICAgICBlbHNlIGlmICh4JDEgPCB5JDEpIHsKKyAgICAgICAg
cmV0dXJuIC0xOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAxOworICAg
ICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciB0YWdfYSA9IGEudGFnIHwgMDsKKyAg
ICAgIHZhciB0YWdfYiA9IGIudGFnIHwgMDsKKyAgICAgIGlmICh0YWdfYSA9PT0gMjUwKSB7Cisg
ICAgICAgIF9hID0gYVswXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0K
KyAgICAgIGVsc2UgaWYgKHRhZ19iID09PSAyNTApIHsKKyAgICAgICAgX2IgPSBiWzBdOworICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSBpZiAodGFnX2Eg
PT09IDI0OCkgeworICAgICAgICByZXR1cm4gY2FtbF9pbnRfY29tcGFyZShhWzFdLCBiWzFdKTsK
KyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHRhZ19hID09PSAyNTEpIHsKKyAgICAgICAgdGhyb3cg
WworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50
LAorICAgICAgICAgICAgICAiZXF1YWw6IGFic3RyYWN0IHZhbHVlIgorICAgICAgICAgICAgXTsK
KyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHRhZ19hICE9PSB0YWdfYikgeworICAgICAgICBpZiAo
dGFnX2EgPCB0YWdfYikgeworICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHZhciBsZW5fYSA9IGEubGVuZ3RoOworICAgICAgICB2YXIgbGVuX2Ig
PSBiLmxlbmd0aDsKKyAgICAgICAgaWYgKGxlbl9hID09PSBsZW5fYikgeworICAgICAgICAgIHZh
ciBhJDEgPSBhOworICAgICAgICAgIHZhciBiJDEgPSBiOworICAgICAgICAgIHZhciBfaSA9IDA7
CisgICAgICAgICAgdmFyIHNhbWVfbGVuZ3RoID0gbGVuX2E7CisgICAgICAgICAgd2hpbGUodHJ1
ZSkgeworICAgICAgICAgICAgdmFyIGkgPSBfaTsKKyAgICAgICAgICAgIGlmIChpID09PSBzYW1l
X2xlbmd0aCkgeworICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICB2YXIgcmVzID0gY2FtbF9jb21wYXJlKGEkMVtp
XSwgYiQxW2ldKTsKKyAgICAgICAgICAgICAgaWYgKHJlcyAhPT0gMCkgeworICAgICAgICAgICAg
ICAgIHJldHVybiByZXM7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChsZW5fYSA8IGxlbl9iKSB7Cisg
ICAgICAgICAgdmFyIGEkMiA9IGE7CisgICAgICAgICAgdmFyIGIkMiA9IGI7CisgICAgICAgICAg
dmFyIF9pJDEgPSAwOworICAgICAgICAgIHZhciBzaG9ydF9sZW5ndGggPSBsZW5fYTsKKyAgICAg
ICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgICAgICB2YXIgaSQxID0gX2kkMTsKKyAgICAgICAg
ICAgIGlmIChpJDEgPT09IHNob3J0X2xlbmd0aCkgeworICAgICAgICAgICAgICByZXR1cm4gLTE7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIHJl
cyQxID0gY2FtbF9jb21wYXJlKGEkMltpJDFdLCBiJDJbaSQxXSk7CisgICAgICAgICAgICAgIGlm
IChyZXMkMSAhPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXMkMTsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfaSQxID0gaSQx
ICsgMSB8IDA7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgYSQzID0gYTsKKyAgICAgICAgICB2YXIgYiQz
ID0gYjsKKyAgICAgICAgICB2YXIgX2kkMiA9IDA7CisgICAgICAgICAgdmFyIHNob3J0X2xlbmd0
aCQxID0gbGVuX2I7CisgICAgICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICAgICAgdmFyIGkk
MiA9IF9pJDI7CisgICAgICAgICAgICBpZiAoaSQyID09PSBzaG9ydF9sZW5ndGgkMSkgeworICAg
ICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICB2YXIgcmVzJDIgPSBjYW1sX2NvbXBhcmUoYSQzW2kkMl0sIGIkM1tpJDJd
KTsKKyAgICAgICAgICAgICAgaWYgKHJlcyQyICE9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHJlcyQyOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIF9pJDIgPSBpJDIgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICB9OworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBj
YW1sX2VxdWFsKF9hLCBfYikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGIgPSBfYjsKKyAg
ICB2YXIgYSA9IF9hOworICAgIGlmIChhID09PSBiKSB7CisgICAgICByZXR1cm4gLyogdHJ1ZSAq
LzE7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGVvZiBhID09PSAic3RyaW5nIiB8fCB0eXBlb2Yg
YSA9PT0gIm51bWJlciIgfHwgdHlwZW9mIGEgPT09ICJib29sZWFuIiB8fCB0eXBlb2YgYSA9PT0g
InVuZGVmaW5lZCIgfHwgdHlwZW9mIGEgPT09ICJudWxsIikgeworICAgICAgcmV0dXJuIC8qIGZh
bHNlICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgdGFnX2EgPSBhLnRhZyB8IDA7
CisgICAgICB2YXIgdGFnX2IgPSBiLnRhZyB8IDA7CisgICAgICBpZiAodGFnX2EgPT09IDI1MCkg
eworICAgICAgICBfYSA9IGFbMF07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAg
ICB9CisgICAgICBlbHNlIGlmICh0YWdfYiA9PT0gMjUwKSB7CisgICAgICAgIF9iID0gYlswXTsK
KyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHRh
Z19hID09PSAyNDgpIHsKKyAgICAgICAgcmV0dXJuICsoYVsxXSA9PT0gYlsxXSk7CisgICAgICB9
CisgICAgICBlbHNlIGlmICh0YWdfYSA9PT0gMjUxKSB7CisgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAg
ICAgICAgICAgImVxdWFsOiBhYnN0cmFjdCB2YWx1ZSIKKyAgICAgICAgICAgIF07CisgICAgICB9
CisgICAgICBlbHNlIGlmICh0YWdfYSAhPT0gdGFnX2IpIHsKKyAgICAgICAgcmV0dXJuIC8qIGZh
bHNlICovMDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgbGVuX2EgPSBhLmxl
bmd0aDsKKyAgICAgICAgdmFyIGxlbl9iID0gYi5sZW5ndGg7CisgICAgICAgIGlmIChsZW5fYSA9
PT0gbGVuX2IpIHsKKyAgICAgICAgICB2YXIgYSQxID0gYTsKKyAgICAgICAgICB2YXIgYiQxID0g
YjsKKyAgICAgICAgICB2YXIgX2kgPSAwOworICAgICAgICAgIHZhciBzYW1lX2xlbmd0aCA9IGxl
bl9hOworICAgICAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgICAgIHZhciBpID0gX2k7Cisg
ICAgICAgICAgICBpZiAoaSA9PT0gc2FtZV9sZW5ndGgpIHsKKyAgICAgICAgICAgICAgcmV0dXJu
IC8qIHRydWUgKi8xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2FtbF9l
cXVhbChhJDFbaV0sIGIkMVtpXSkpIHsKKyAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7Cisg
ICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9Cisg
IH07Cit9CisKK2Z1bmN0aW9uIGNhbWxfbm90ZXF1YWwoYSwgYikgeworICByZXR1cm4gMSAtIGNh
bWxfZXF1YWwoYSwgYik7Cit9CisKK2Z1bmN0aW9uIGNhbWxfZ3JlYXRlcmVxdWFsKGEsIGIpIHsK
KyAgcmV0dXJuICsoY2FtbF9jb21wYXJlKGEsIGIpID49IDApOworfQorCitmdW5jdGlvbiBjYW1s
X2dyZWF0ZXJ0aGFuKGEsIGIpIHsKKyAgcmV0dXJuICsoY2FtbF9jb21wYXJlKGEsIGIpID4gMCk7
Cit9CisKK2Z1bmN0aW9uIGNhbWxfbGVzc2VxdWFsKGEsIGIpIHsKKyAgcmV0dXJuICsoY2FtbF9j
b21wYXJlKGEsIGIpIDw9IDApOworfQorCitmdW5jdGlvbiBjYW1sX2xlc3N0aGFuKGEsIGIpIHsK
KyAgcmV0dXJuICsoY2FtbF9jb21wYXJlKGEsIGIpIDwgMCk7Cit9CisKK3ZhciBjYW1sX2ludDMy
X2NvbXBhcmUgPSBjYW1sX2ludF9jb21wYXJlOworCit2YXIgY2FtbF9uYXRpdmVpbnRfY29tcGFy
ZSA9IGNhbWxfaW50X2NvbXBhcmU7CisKK2V4cG9ydHMuY2FtbF9vYmpfZHVwICAgICAgICAgICA9
IGNhbWxfb2JqX2R1cDsKK2V4cG9ydHMuY2FtbF9vYmpfdHJ1bmNhdGUgICAgICA9IGNhbWxfb2Jq
X3RydW5jYXRlOworZXhwb3J0cy5jYW1sX2xhenlfbWFrZV9mb3J3YXJkID0gY2FtbF9sYXp5X21h
a2VfZm9yd2FyZDsKK2V4cG9ydHMuY2FtbF91cGRhdGVfZHVtbXkgICAgICA9IGNhbWxfdXBkYXRl
X2R1bW15OworZXhwb3J0cy5jYW1sX2ludF9jb21wYXJlICAgICAgID0gY2FtbF9pbnRfY29tcGFy
ZTsKK2V4cG9ydHMuY2FtbF9pbnQzMl9jb21wYXJlICAgICA9IGNhbWxfaW50MzJfY29tcGFyZTsK
K2V4cG9ydHMuY2FtbF9uYXRpdmVpbnRfY29tcGFyZSA9IGNhbWxfbmF0aXZlaW50X2NvbXBhcmU7
CitleHBvcnRzLmNhbWxfY29tcGFyZSAgICAgICAgICAgPSBjYW1sX2NvbXBhcmU7CitleHBvcnRz
LmNhbWxfZXF1YWwgICAgICAgICAgICAgPSBjYW1sX2VxdWFsOworZXhwb3J0cy5jYW1sX25vdGVx
dWFsICAgICAgICAgID0gY2FtbF9ub3RlcXVhbDsKK2V4cG9ydHMuY2FtbF9ncmVhdGVyZXF1YWwg
ICAgICA9IGNhbWxfZ3JlYXRlcmVxdWFsOworZXhwb3J0cy5jYW1sX2dyZWF0ZXJ0aGFuICAgICAg
ID0gY2FtbF9ncmVhdGVydGhhbjsKK2V4cG9ydHMuY2FtbF9sZXNzdGhhbiAgICAgICAgICA9IGNh
bWxfbGVzc3RoYW47CitleHBvcnRzLmNhbWxfbGVzc2VxdWFsICAgICAgICAgPSBjYW1sX2xlc3Nl
cXVhbDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9vYmouanMg
Ly8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsn
Y2FtbF9vbyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2YgY2FtbF9vby5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2Ft
bF9hcnJheSAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMi
KTsKKwordmFyIGNhbWxfbWV0aG9kc19jYWNoZSA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3Qo
MTAwMCwgMCk7CisKK2Z1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2Qob2JqLCB0YWcsIGNh
Y2hlaWQpIHsKKyAgdmFyIG1ldGhzID0gb2JqWzBdOworICB2YXIgb2ZmcyA9IGNhbWxfbWV0aG9k
c19jYWNoZVtjYWNoZWlkXTsKKyAgaWYgKG1ldGhzW29mZnNdID09PSB0YWcpIHsKKyAgICByZXR1
cm4gbWV0aHNbb2ZmcyAtIDEgfCAwXTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgYXV4ID0gZnVu
Y3Rpb24gKF9pKSB7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHZhciBpID0gX2k7Cisg
ICAgICAgIGlmIChpIDwgMykgeworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAiY2FtbF9vby5tbCIsCisgICAgICAgICAgICAgICAgICA1NCwK
KyAgICAgICAgICAgICAgICAgIDIwCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICBd
OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1ldGhzW2ldID09PSB0YWcpIHsKKyAgICAg
ICAgICBjYW1sX21ldGhvZHNfY2FjaGVbY2FjaGVpZF0gPSBpOworICAgICAgICAgIHJldHVybiBp
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIF9pID0gaSAtIDIgfCAwOwor
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfTsKKyAg
ICB9OworICAgIHJldHVybiBtZXRoc1thdXgoKG1ldGhzWzBdIDw8IDEpICsgMSB8IDApIC0gMSB8
IDBdOworICB9Cit9CisKK2V4cG9ydHMuY2FtbF9nZXRfcHVibGljX21ldGhvZCA9IGNhbWxfZ2V0
X3B1YmxpY19tZXRob2Q7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNh
bWxfb28uanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9y
ZWdpc3RyeVsnY2FtbF9wYXJzZXInXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMg
PSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxfcGFyc2VyLmpzIC8vLy8vLy8vCisndXNlIHN0
cmljdCc7CisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgWGF2aWVyIExlcm95
LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi8KKy8qICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJj
aGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi8KKy8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi8KKy8qICB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGgg
ICAgKi8KKy8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4g
ZmlsZSAuLi9MSUNFTlNFLiAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KKworLyogJElkOiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kg
JCAqLworCisvKiBUaGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2Ft
bHlhY2MgKi8KKworLyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovCisKKy8qKgorICogY2FtbF9s
ZXhfYXJyYXkoImFiY2QiKQorICogWzI1MTg1LCAyNTY5OV0KKyAqIEBwYXJhbSBzCisgKiBAcmV0
dXJucyB7YW55W119CisgKiBUT0RPOiBkdXBsaWNhdGVkIHdpdGggbW9kdWxlIHshQ2FtbF9sZXh9
CisgKi8KK2Z1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHsKKyAgICB2YXIgbCA9IHMubGVuZ3Ro
IC8gMjsKKyAgICB2YXIgYSA9IG5ldyBBcnJheShsKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGw7IGkrKykKKyAgICAgICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNv
ZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjsKKyAgICByZXR1cm4gYTsKK30KKy8q
KgorICogTm90ZSB0aGF0IFRTIGVudW0gaXMgbm90IGZyaWVuZGx5IHRvIENsb3N1cmUgY29tcGls
ZXIKKyAqIEBlbnVte251bWJlcn0KKyAqLwordmFyIEF1dG9tYXRhID0geworICAgIFNUQVJUOiAw
LAorICAgIExPT1A6IDYsCisgICAgVE9LRU5fUkVBRDogMSwKKyAgICBURVNUX1NISUZUOiA3LAor
ICAgIEVSUk9SX0RFVEVDVEVEOiA1LAorICAgIFNISUZUOiA4LAorICAgIFNISUZUX1JFQ09WRVI6
IDksCisgICAgU1RBQ0tfR1JPV05fMTogMiwKKyAgICBSRURVQ0U6IDEwLAorICAgIFNUQUNLX0dS
T1dOXzI6IDMsCisgICAgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOiA0Cit9OworLyoqCisgKiBA
ZW51bXtudW1iZXJ9CisgKi8KK3ZhciBSZXN1bHQgPSB7CisgICAgUkVBRF9UT0tFTjogMCwKKyAg
ICBSQUlTRV9QQVJTRV9FUlJPUjogMSwKKyAgICBHUk9XX1NUQUNLU18xOiAyLAorICAgIEdST1df
U1RBQ0tTXzI6IDMsCisgICAgQ09NUFVURV9TRU1BTlRJQ19BQ1RJT046IDQsCisgICAgQ0FMTF9F
UlJPUl9GVU5DVElPTjogNQorfTsKK3ZhciBQQVJTRVJfVFJBQ0UgPSBmYWxzZTsKKy8qKgorICog
ZXh0ZXJuYWwgcGFyc2VfZW5naW5lIDogcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFy
c2VyX2lucHV0IC0+IE9iai50IC0+IHBhcnNlcl9vdXRwdXQKKyAqIHBhcnNpbmcubWwKKyAqCisg
KiB0eXBlIHBhcnNlX3RhYmxlcyA9IHsKKyAqICAgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9i
ai50KSBhcnJheQorICogICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7CisgKiAgIHRyYW5zbF9i
bG9jayA6IGludCBhcnJheTsKKyAqICAgbGhzIDogc3RyaW5nOworICogICBsZW4gOiBzdHJpbmc7
CisgKiAgIGRlZnJlZCA6IHN0cmluZzsKKyAqICAgZGdvdG8gOiBzdHJpbmc7CisgKiAgIHNpbmRl
eCA6IHN0cmluZzsKKyAqICAgcmluZGV4IDogc3RyaW5nOworICogICBnaW5kZXggOiBzdHJpbmc7
CisgKiAgIHRhYmxlc2l6ZSA6IGludDsKKyAqICAgdGFibGUgOiBzdHJpbmc7CisgKiAgIGNoZWNr
IDogc3RyaW5nOworICogICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0OworICogICBu
YW1lc19jb25zdCA6IHN0cmluZzsKKyAqICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcKKyAqIH0KKyAq
CisgKiB0eXBlIHBhcnNlcl9lbnYgPQorICogeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7
ICAgICAgICAoKiBTdGF0ZXMgKikKKyAqICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsg
ICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopCisgKiAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0
YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKQorICogIG11dGFibGUg
c3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopCisg
KiAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3Rh
Y2tzICopCisgKiAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBz
cCBmb3IgY3VycmVudCBwYXJzZSAqKQorICogIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAg
ICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKQorICogIG11dGFibGUgbHZhbCA6IE9iai50OyAg
ICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKikKKyAqICBtdXRhYmxlIHN5
bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5
bWJvbCopCisgKiAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBv
cy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopCisgKiAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAg
ICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKikKKyAqICBt
dXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1z
IGluIHRoZSBydWxlICopCisgKiAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAg
KCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopCisgKiAgbXV0YWJsZSBzcCA6IGludDsgICAg
ICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKQorICogIG11dGFi
bGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9l
bmdpbmUgKikKKyAqICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZl
ZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKikKKyAqCisgKiAgdHlwZSBwYXJzZXJfaW5w
dXQgPQorICogICB8IFN0YXJ0CisgKiAgIHwgVG9rZW5fcmVhZAorICogICB8IFN0YWNrc19ncm93
bl8xCisgKiAgIHwgU3RhY2tzX2dyb3duXzIKKyAqICAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0
ZWQKKyAqICAgfCBFcnJvcl9kZXRlY3RlZAorCisgKiBAcGFyYW0gdGFibGVzCisgKiBAcGFyYW0g
ZW52CisgKiBAcGFyYW0gY21kCisgKiBAcGFyYW0gYXJnCisgKiBAcmV0dXJucyB7bnVtYmVyfQor
ICovCitmdW5jdGlvbiAkJGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcyAvKiBwYXJzZXJfdGFibGUg
Ki8sIGVudiAvKiBwYXJzZXJfZW52ICovLCBjbWQgLyogcGFyc2VyX2lucHV0Ki8sIGFyZyAvKiBP
YmoudCovKSB7CisgICAgdmFyIEVSUkNPREUgPSAyNTY7CisgICAgLy92YXIgU1RBUlQgPSAwOwor
ICAgIC8vdmFyIFRPS0VOX1JFQUQgPSAxOworICAgIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjsK
KyAgICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7CisgICAgLy92YXIgU0VNQU5USUNfQUNUSU9O
X0NPTVBVVEVEID0gNDsKKyAgICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7CisgICAgLy92YXIg
bG9vcCA9IDY7CisgICAgLy92YXIgdGVzdHNoaWZ0ID0gNzsKKyAgICAvL3ZhciBzaGlmdCA9IDg7
CisgICAgLy92YXIgc2hpZnRfcmVjb3ZlciA9IDk7CisgICAgLy92YXIgcmVkdWNlID0gMTA7Cisg
ICAgLy8gUGFyc2luZy5wYXJzZXJfZW52CisgICAgdmFyIGVudl9zX3N0YWNrID0gMDsgLy8gYXJy
YXkKKyAgICB2YXIgZW52X3Zfc3RhY2sgPSAxOyAvLyBhcnJheQorICAgIHZhciBlbnZfc3ltYl9z
dGFydF9zdGFjayA9IDI7IC8vIGFycmF5CisgICAgdmFyIGVudl9zeW1iX2VuZF9zdGFjayA9IDM7
IC8vIGFycmF5CisgICAgdmFyIGVudl9zdGFja3NpemUgPSA0OworICAgIHZhciBlbnZfc3RhY2ti
YXNlID0gNTsKKyAgICB2YXIgZW52X2N1cnJfY2hhciA9IDY7CisgICAgdmFyIGVudl9sdmFsID0g
NzsgLy8gT2JqLnQKKyAgICB2YXIgZW52X3N5bWJfc3RhcnQgPSA4OyAvLyBwb3NpdGlvbgorICAg
IHZhciBlbnZfc3ltYl9lbmQgPSA5OyAvLyBwb3NpdGlvbgorICAgIHZhciBlbnZfYXNwID0gMTA7
CisgICAgdmFyIGVudl9ydWxlX2xlbiA9IDExOworICAgIHZhciBlbnZfcnVsZV9udW1iZXIgPSAx
MjsKKyAgICB2YXIgZW52X3NwID0gMTM7CisgICAgdmFyIGVudl9zdGF0ZSA9IDE0OworICAgIHZh
ciBlbnZfZXJyZmxhZyA9IDE1OworICAgIC8vIFBhcnNpbmcucGFyc2VfdGFibGVzCisgICAgLy8g
dmFyIF90YmxfYWN0aW9ucyA9IDE7CisgICAgdmFyIHRibF90cmFuc2xfY29uc3QgPSAxOyAvLyBh
cnJheQorICAgIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMjsgLy8gYXJyYXkKKyAgICB2YXIgdGJs
X2xocyA9IDM7CisgICAgdmFyIHRibF9sZW4gPSA0OworICAgIHZhciB0YmxfZGVmcmVkID0gNTsK
KyAgICB2YXIgdGJsX2Rnb3RvID0gNjsKKyAgICB2YXIgdGJsX3NpbmRleCA9IDc7CisgICAgdmFy
IHRibF9yaW5kZXggPSA4OworICAgIHZhciB0YmxfZ2luZGV4ID0gOTsKKyAgICB2YXIgdGJsX3Rh
Ymxlc2l6ZSA9IDEwOworICAgIHZhciB0YmxfdGFibGUgPSAxMTsKKyAgICB2YXIgdGJsX2NoZWNr
ID0gMTI7CisgICAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDsKKyAgICAvLyB2YXIg
X3RibF9uYW1lc19jb25zdCA9IDE1OworICAgIC8vIHZhciBfdGJsX25hbWVzX2Jsb2NrID0gMTY7
CisgICAgaWYgKCF0YWJsZXMuZGdvdG8pIHsKKyAgICAgICAgdGFibGVzLmRlZnJlZCA9IGNhbWxf
bGV4X2FycmF5KHRhYmxlc1t0YmxfZGVmcmVkXSk7CisgICAgICAgIHRhYmxlcy5zaW5kZXggPSBj
YW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX3NpbmRleF0pOworICAgICAgICB0YWJsZXMuY2hlY2sg
PSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2NoZWNrXSk7CisgICAgICAgIHRhYmxlcy5yaW5k
ZXggPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX3JpbmRleF0pOworICAgICAgICB0YWJsZXMu
dGFibGUgPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX3RhYmxlXSk7CisgICAgICAgIHRhYmxl
cy5sZW4gPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2xlbl0pOworICAgICAgICB0YWJsZXMu
bGhzID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9saHNdKTsKKyAgICAgICAgdGFibGVzLmdp
bmRleCA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfZ2luZGV4XSk7CisgICAgICAgIHRhYmxl
cy5kZ290byA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfZGdvdG9dKTsKKyAgICB9CisgICAg
dmFyIHJlczsKKyAgICB2YXIgbiwgbjEsIG4yLCBzdGF0ZTE7CisgICAgLy8gUkVTVE9SRQorICAg
IHZhciBzcCA9IGVudltlbnZfc3BdOworICAgIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdOwor
ICAgIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTsKKyAgICBleGl0OiBmb3IgKDs7KSB7
CisgICAgICAgIC8vY29uc29sZS5lcnJvcigiU3RhdGUiLCBBdXRvbWF0YVtjbWRdKTsKKyAgICAg
ICAgc3dpdGNoIChjbWQpIHsKKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuU1RBUlQ6CisgICAg
ICAgICAgICAgICAgc3RhdGUgPSAwOworICAgICAgICAgICAgICAgIGVycmZsYWcgPSAwOworICAg
ICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICBjYXNlIEF1dG9tYXRhLkxPT1A6
CisgICAgICAgICAgICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdOworICAgICAgICAgICAg
ICAgIGlmIChuICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgY21kID0gQXV0b21hdGEuUkVE
VUNFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNtZCA9IEF1dG9tYXRhLlRFU1RfU0hJRlQ7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXMgPSBSZXN1bHQuUkVB
RF9UT0tFTjsKKyAgICAgICAgICAgICAgICBicmVhayBleGl0OworICAgICAgICAgICAgLyogVGhl
IE1MIGNvZGUgY2FsbHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovCisgICAgICAgICAgICAvKiBz
eW1iX3N0YXJ0IGFuZCBzeW1iX2VuZCAqLworICAgICAgICAgICAgY2FzZSBBdXRvbWF0YS5UT0tF
Tl9SRUFEOgorICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXJnICE9PSAnbnVtYmVyJykgewor
ICAgICAgICAgICAgICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5z
bF9ibG9ja11bYXJnLnRhZyB8IDAgLyogKyAxICovXTsKKyAgICAgICAgICAgICAgICAgICAgZW52
W2Vudl9sdmFsXSA9IGFyZ1swXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0
YmxfdHJhbnNsX2NvbnN0XVthcmcgLyogKyAxICovXTsKKyAgICAgICAgICAgICAgICAgICAgZW52
W2Vudl9sdmFsXSA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChQ
QVJTRVJfVFJBQ0UpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiU3RhdGUg
JWQsIHJlYWQgdG9rZW4iLCBzdGF0ZSwgYXJnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAvLyBGYWxsIHRocm91Z2gKKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuVEVTVF9TSElG
VDoKKyAgICAgICAgICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdOworICAgICAgICAg
ICAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07CisgICAgICAgICAgICAgICAgaWYg
KG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKKyAg
ICAgICAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0p
IHsKKyAgICAgICAgICAgICAgICAgICAgY21kID0gQXV0b21hdGEuU0hJRlQ7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuMSA9
IHRhYmxlcy5yaW5kZXhbc3RhdGVdOworICAgICAgICAgICAgICAgIG4yID0gbjEgKyBlbnZbZW52
X2N1cnJfY2hhcl07CisgICAgICAgICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBu
MiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAgICAgICAgICAgICAgICAgdGFibGVz
LmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHsKKyAgICAgICAgICAgICAgICAgICAg
biA9IHRhYmxlcy50YWJsZVtuMl07CisgICAgICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRh
LlJFRFVDRTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChlcnJmbGFnIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAg
cmVzID0gUmVzdWx0LkNBTExfRVJST1JfRlVOQ1RJT047CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrIGV4aXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdo
CisgICAgICAgICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi8K
KyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuRVJST1JfREVURUNURUQ6CisgICAgICAgICAgICAg
ICAgaWYgKGVycmZsYWcgPCAzKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmZsYWcgPSAzOwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwIC8qICsgMSovXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdOworICAgICAgICAgICAgICAgICAgICAg
ICAgbjIgPSBuMSArIEVSUkNPREU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobjEgIT0g
MCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLlNISUZUX1JFQ09WRVI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUmVzdWx0LlJBSVNFX1BBUlNFX0VSUk9SOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNwLS07CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0g
MCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuUkFJU0VfUEFSU0VfRVJS
T1I7CisgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJv
ciAqLworICAgICAgICAgICAgICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTsKKyAgICAg
ICAgICAgICAgICAgICAgY21kID0gQXV0b21hdGEuTE9PUDsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisg
ICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlNISUZUOgorICAgICAgICAgICAgICAgIGVudltlbnZf
Y3Vycl9jaGFyXSA9IC0xOworICAgICAgICAgICAgICAgIGlmIChlcnJmbGFnID4gMCkKKyAgICAg
ICAgICAgICAgICAgICAgZXJyZmxhZy0tOworICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisg
ICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlNISUZUX1JFQ09WRVI6CisgICAgICAgICAgICAgICAg
aWYgKFBBUlNFUl9UUkFDRSkgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJT
dGF0ZSAlZDogc2hpZnQgdG8gc3RhdGUgJWQiLCBzdGF0ZSwgdGFibGVzLnRhYmxlW24yXSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24y
XTsKKyAgICAgICAgICAgICAgICBzcCsrOworICAgICAgICAgICAgICAgIGlmIChzcCA+PSBlbnZb
ZW52X3N0YWNrc2l6ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0LkdST1df
U1RBQ0tTXzE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICAvKiBUaGUgTUwg
Y29kZSByZXNpemVzIHRoZSBzdGFja3MgKi8KKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuU1RB
Q0tfR1JPV05fMToKKyAgICAgICAgICAgICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwIC8qICsgMSAq
L10gPSBzdGF0ZTsKKyAgICAgICAgICAgICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwIC8qICsgMSAq
L10gPSBlbnZbZW52X2x2YWxdOworICAgICAgICAgICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9z
dGFja11bc3AgLyogKyAxICovXSA9IGVudltlbnZfc3ltYl9zdGFydF07CisgICAgICAgICAgICAg
ICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgLyogKyAxICovXSA9IGVudltlbnZfc3ltYl9l
bmRdOworICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLkxPT1A7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlJFRFVDRToKKyAgICAgICAgICAg
ICAgICBpZiAoUEFSU0VSX1RSQUNFKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJy
b3IoIlN0YXRlICVkIDogcmVkdWNlIGJ5IHJ1bGUgJWQiLCBzdGF0ZSwgbik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTsKKyAgICAgICAg
ICAgICAgICBlbnZbZW52X2FzcF0gPSBzcDsKKyAgICAgICAgICAgICAgICBlbnZbZW52X3J1bGVf
bnVtYmVyXSA9IG47CisgICAgICAgICAgICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtOworICAg
ICAgICAgICAgICAgIHNwID0gc3AgLSBtICsgMTsKKyAgICAgICAgICAgICAgICBtID0gdGFibGVz
Lmxoc1tuXTsKKyAgICAgICAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwIC0g
MV07IC8vCisgICAgICAgICAgICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dOworICAgICAgICAg
ICAgICAgIG4yID0gbjEgKyBzdGF0ZTE7CisgICAgICAgICAgICAgICAgaWYgKG4xICE9IDAgJiYg
bjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAgICAgICAgICAg
ICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBzdGF0ZTEpCisgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gdGFibGVzLnRhYmxlW24yXTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gdGFibGVzLmRnb3RvW21dOworICAgICAgICAgICAgICAgIGlmIChz
cCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gUmVz
dWx0LkdST1dfU1RBQ0tTXzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICAv
KiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi8KKyAgICAgICAgICAgIGNhc2UgQXV0
b21hdGEuU1RBQ0tfR1JPV05fMjoKKyAgICAgICAgICAgICAgICByZXMgPSBSZXN1bHQuQ09NUFVU
RV9TRU1BTlRJQ19BQ1RJT047CisgICAgICAgICAgICAgICAgYnJlYWsgZXhpdDsKKyAgICAgICAg
ICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi8KKyAgICAgICAg
ICAgIGNhc2UgQXV0b21hdGEuU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOgorICAgICAgICAgICAg
ICAgIGVudltlbnZfc19zdGFja11bc3AgLyogKyAxICovXSA9IHN0YXRlOworICAgICAgICAgICAg
ICAgIGVudltlbnZfdl9zdGFja11bc3AgLyogKyAxKi9dID0gYXJnOworICAgICAgICAgICAgICAg
IHZhciBhc3AgPSBlbnZbZW52X2FzcF07CisgICAgICAgICAgICAgICAgZW52W2Vudl9zeW1iX2Vu
ZF9zdGFja11bc3AgLyogKyAxKi9dID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwIC8qICsg
MSovXTsKKyAgICAgICAgICAgICAgICBpZiAoc3AgPiBhc3ApIHsKKyAgICAgICAgICAgICAgICAg
ICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVh
bCB0byBzeW1iX2VuZC4gKi8KKyAgICAgICAgICAgICAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0
X3N0YWNrXVtzcCAvKiArIDEqL10gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgLyorIDEq
L107CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLkxP
T1A7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKiBTaG91bGQgbm90IGhh
cHBlbiAqLworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVz
dWx0LlJBSVNFX1BBUlNFX0VSUk9SOworICAgICAgICB9CisgICAgfQorICAgIC8vIFNBVkUKKyAg
ICBlbnZbZW52X3NwXSA9IHNwOworICAgIGVudltlbnZfc3RhdGVdID0gc3RhdGU7CisgICAgZW52
W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqCisgKiBl
eHRlcm5hbCBzZXRfdHJhY2U6IGJvb2wgLT4gYm9vbCA9ICJjYW1sX3NldF9wYXJzZXJfdHJhY2Ui
CisgKiBwYXJzaW5nLm1sCisgKiBAcGFyYW0ge2Jvb2xlYW59CisgKiBAcmV0dXJucyB7Ym9vbGVh
bn0KKyAqLworZnVuY3Rpb24gJCRjYW1sX3NldF9wYXJzZXJfdHJhY2UodikgeworICAgIHZhciBv
bGQgPSBQQVJTRVJfVFJBQ0U7CisgICAgUEFSU0VSX1RSQUNFID0gdjsKKyAgICByZXR1cm4gb2xk
OworfQorCisKKzsKKworZnVuY3Rpb24gY2FtbF9wYXJzZV9lbmdpbmUocHJpbSwgcHJpbSQxLCBw
cmltJDIsIHByaW0kMykgeworICByZXR1cm4gJCRjYW1sX3BhcnNlX2VuZ2luZShwcmltLCBwcmlt
JDEsIHByaW0kMiwgcHJpbSQzKTsKK30KKworZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNl
KHByaW0pIHsKKyAgcmV0dXJuICQkY2FtbF9zZXRfcGFyc2VyX3RyYWNlKHByaW0pOworfQorCitl
eHBvcnRzLmNhbWxfcGFyc2VfZW5naW5lICAgICA9IGNhbWxfcGFyc2VfZW5naW5lOworZXhwb3J0
cy5jYW1sX3NldF9wYXJzZXJfdHJhY2UgPSBjYW1sX3NldF9wYXJzZXJfdHJhY2U7CisvKiAgTm90
IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX3BhcnNlci5qcyAvLy8vLy8v
LworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX3N0
cmluZyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8g
c3RhcnQgb2YgY2FtbF9zdHJpbmcuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cyIpOworCitmdW5jdGlvbiBqc19zdHJpbmdfb2ZfY2hhcihwcmltKSB7CisgIHJldHVybiBTdHJp
bmcuZnJvbUNoYXJDb2RlKHByaW0pOworfQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQocywg
aSkgeworICBpZiAoaSA+PSBzLmxlbmd0aCB8fCBpIDwgMCkgeworICAgIHRocm93IFsKKyAgICAg
ICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAg
ICJpbmRleCBvdXQgb2YgYm91bmRzIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiBzLmNoYXJDb2RlQXQoaSk7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3Ry
aW5nKGxlbikgeworICBpZiAobGVuIDwgMCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJTdHJpbmcu
Y3JlYXRlIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBuZXcgQXJyYXko
bGVuKTsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikgewor
ICBpZiAoczEgPT09IHMyKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgZWxzZSBpZiAoczEgPCBz
MikgeworICAgIHJldHVybiAtMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMTsKKyAgfQor
fQorCitmdW5jdGlvbiBjYW1sX2ZpbGxfc3RyaW5nKHMsIGksIGwsIGMpIHsKKyAgaWYgKGwgPiAw
KSB7CisgICAgZm9yKHZhciBrID0gaSAsa19maW5pc2ggPSAobCArIGkgfCAwKSAtIDEgfCAwOyBr
IDw9IGtfZmluaXNoOyArK2speworICAgICAgc1trXSA9IGM7CisgICAgfQorICAgIHJldHVybiAv
KiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rp
b24gY2FtbF9ibGl0X3N0cmluZyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7CisgIGlmIChsZW4gPiAw
KSB7CisgICAgdmFyIG9mZjEgPSBzMS5sZW5ndGggLSBpMSB8IDA7CisgICAgaWYgKGxlbiA8PSBv
ZmYxKSB7CisgICAgICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9
IGlfZmluaXNoOyArK2kpeworICAgICAgICBzMltpMiArIGkgfCAwXSA9IHMxLmNoYXJDb2RlQXQo
aTEgKyBpIHwgMCk7CisgICAgICB9CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIGZvcih2YXIgaSQxID0gMCAsaV9maW5pc2gkMSA9IG9mZjEgLSAxIHwg
MDsgaSQxIDw9IGlfZmluaXNoJDE7ICsraSQxKXsKKyAgICAgICAgczJbaTIgKyBpJDEgfCAwXSA9
IHMxLmNoYXJDb2RlQXQoaTEgKyBpJDEgfCAwKTsKKyAgICAgIH0KKyAgICAgIGZvcih2YXIgaSQy
ID0gb2ZmMSAsaV9maW5pc2gkMiA9IGxlbiAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gkMjsgKytp
JDIpeworICAgICAgICBzMltpMiArIGkkMiB8IDBdID0gLyogIlwwMDAiICovMDsKKyAgICAgIH0K
KyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVy
biAwOworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfYmxpdF9ieXRlcyhzMSwgaTEsIHMyLCBpMiwg
bGVuKSB7CisgIGlmIChsZW4gPiAwKSB7CisgICAgaWYgKHMxID09PSBzMikgeworICAgICAgdmFy
IHMxJDEgPSBzMTsKKyAgICAgIHZhciBpMSQxID0gaTE7CisgICAgICB2YXIgaTIkMSA9IGkyOwor
ICAgICAgdmFyIGxlbiQxID0gbGVuOworICAgICAgaWYgKGkxJDEgPCBpMiQxKSB7CisgICAgICAg
IHZhciByYW5nZV9hID0gKHMxJDEubGVuZ3RoIC0gaTIkMSB8IDApIC0gMSB8IDA7CisgICAgICAg
IHZhciByYW5nZV9iID0gbGVuJDEgLSAxIHwgMDsKKyAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2Vf
YSA+IHJhbmdlX2IgPyByYW5nZV9iIDogcmFuZ2VfYTsKKyAgICAgICAgZm9yKHZhciBqID0gcmFu
Z2U7IGogPj0gMDsgLS1qKXsKKyAgICAgICAgICBzMSQxW2kyJDEgKyBqIHwgMF0gPSBzMSQxW2kx
JDEgKyBqIHwgMF07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAg
IH0KKyAgICAgIGVsc2UgaWYgKGkxJDEgPiBpMiQxKSB7CisgICAgICAgIHZhciByYW5nZV9hJDEg
PSAoczEkMS5sZW5ndGggLSBpMSQxIHwgMCkgLSAxIHwgMDsKKyAgICAgICAgdmFyIHJhbmdlX2Ik
MSA9IGxlbiQxIC0gMSB8IDA7CisgICAgICAgIHZhciByYW5nZSQxID0gcmFuZ2VfYSQxID4gcmFu
Z2VfYiQxID8gcmFuZ2VfYiQxIDogcmFuZ2VfYSQxOworICAgICAgICBmb3IodmFyIGsgPSAwOyBr
IDw9IHJhbmdlJDE7ICsrayl7CisgICAgICAgICAgczEkMVtpMiQxICsgayB8IDBdID0gczEkMVtp
MSQxICsgayB8IDBdOworICAgICAgICB9CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfQorICAg
IGVsc2UgeworICAgICAgdmFyIG9mZjEgPSBzMS5sZW5ndGggLSBpMSB8IDA7CisgICAgICBpZiAo
bGVuIDw9IG9mZjEpIHsKKyAgICAgICAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsZW4gLSAx
IHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICAgICAgICBzMltpMiArIGkgfCAwXSA9IHMx
W2kxICsgaSB8IDBdOworICAgICAgICB9CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZm9yKHZhciBpJDEgPSAwICxpX2ZpbmlzaCQxID0g
b2ZmMSAtIDEgfCAwOyBpJDEgPD0gaV9maW5pc2gkMTsgKytpJDEpeworICAgICAgICAgIHMyW2ky
ICsgaSQxIHwgMF0gPSBzMVtpMSArIGkkMSB8IDBdOworICAgICAgICB9CisgICAgICAgIGZvcih2
YXIgaSQyID0gb2ZmMSAsaV9maW5pc2gkMiA9IGxlbiAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gk
MjsgKytpJDIpeworICAgICAgICAgIHMyW2kyICsgaSQyIHwgMF0gPSAvKiAiXDAwMCIgKi8wOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgfQorICB9
CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGJ5dGVzX29mX3N0
cmluZyhzKSB7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIHJlcyA9IG5ldyBBcnJheShs
ZW4pOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9IGlfZmlu
aXNoOyArK2kpeworICAgIHJlc1tpXSA9IHMuY2hhckNvZGVBdChpKTsKKyAgfQorICByZXR1cm4g
cmVzOworfQorCitmdW5jdGlvbiBieXRlc190b19zdHJpbmcoYSkgeworICB2YXIgYnl0ZXMgPSBh
OworICB2YXIgaSA9IDA7CisgIHZhciBsZW4gPSBhLmxlbmd0aDsKKyAgdmFyIHMgPSAiIjsKKyAg
dmFyIHNfbGVuID0gbGVuOworICBpZiAoaSA9PT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT09
IGJ5dGVzLmxlbmd0aCkgeworICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51
bGwsYnl0ZXMpOworICB9CisgIGVsc2UgeworICAgIHZhciBvZmZzZXQgPSAwOworICAgIHdoaWxl
KHNfbGVuID4gMCkgeworICAgICAgdmFyIG5leHQgPSBzX2xlbiA8IDEwMjQgPyBzX2xlbiA6IDEw
MjQ7CisgICAgICB2YXIgdG1wX2J5dGVzID0gbmV3IEFycmF5KG5leHQpOworICAgICAgY2FtbF9i
bGl0X2J5dGVzKGJ5dGVzLCBvZmZzZXQsIHRtcF9ieXRlcywgMCwgbmV4dCk7CisgICAgICBzID0g
cyArIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0bXBfYnl0ZXMpOworICAgICAgc19s
ZW4gPSBzX2xlbiAtIG5leHQgfCAwOworICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICsgbmV4dCB8IDA7
CisgICAgfTsKKyAgICByZXR1cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19v
Zl9jaGFyX2FycmF5KGNoYXJzKSB7CisgIHZhciBsZW4gPSBjaGFycy5sZW5ndGg7CisgIHZhciBi
eXRlcyA9IG5ldyBBcnJheShsZW4pOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAt
IDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIGJ5dGVzW2ldID0gY2hhcnNbaV07Cisg
IH0KKyAgcmV0dXJuIGJ5dGVzX3RvX3N0cmluZyhieXRlcyk7Cit9CisKK2Z1bmN0aW9uIGNhbWxf
aXNfcHJpbnRhYmxlKGMpIHsKKyAgaWYgKGMgPiAzMSkgeworICAgIHJldHVybiArKGMgPCAxMjcp
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KK30KKworZnVu
Y3Rpb24gY2FtbF9zdHJpbmdfZ2V0MTYocywgaSkgeworICByZXR1cm4gcy5jaGFyQ29kZUF0KGkp
ICsgKHMuY2hhckNvZGVBdChpICsgMSB8IDApIDw8IDgpIHwgMDsKK30KKworZnVuY3Rpb24gY2Ft
bF9zdHJpbmdfZ2V0MzIocywgaSkgeworICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgKyAocy5j
aGFyQ29kZUF0KGkgKyAxIHwgMCkgPDwgOCkgfCAwKSArIChzLmNoYXJDb2RlQXQoaSArIDIgfCAw
KSA8PCAxNikgfCAwKSArIChzLmNoYXJDb2RlQXQoaSArIDMgfCAwKSA8PCAyNCkgfCAwOworfQor
CitmdW5jdGlvbiBnZXQocywgaSkgeworICBpZiAoaSA8IDAgfHwgaSA+PSBzLmxlbmd0aCkgewor
ICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2Fy
Z3VtZW50LAorICAgICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIgorICAgICAgICBdOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7CisgIH0KK30KKworZXhwb3J0
cy5ieXRlc19vZl9zdHJpbmcgICAgICAgICAgID0gYnl0ZXNfb2Zfc3RyaW5nOworZXhwb3J0cy5i
eXRlc190b19zdHJpbmcgICAgICAgICAgID0gYnl0ZXNfdG9fc3RyaW5nOworZXhwb3J0cy5jYW1s
X2lzX3ByaW50YWJsZSAgICAgICAgID0gY2FtbF9pc19wcmludGFibGU7CitleHBvcnRzLmNhbWxf
c3RyaW5nX29mX2NoYXJfYXJyYXkgPSBjYW1sX3N0cmluZ19vZl9jaGFyX2FycmF5OworZXhwb3J0
cy5jYW1sX3N0cmluZ19nZXQgICAgICAgICAgID0gY2FtbF9zdHJpbmdfZ2V0OworZXhwb3J0cy5j
YW1sX3N0cmluZ19jb21wYXJlICAgICAgID0gY2FtbF9zdHJpbmdfY29tcGFyZTsKK2V4cG9ydHMu
Y2FtbF9jcmVhdGVfc3RyaW5nICAgICAgICA9IGNhbWxfY3JlYXRlX3N0cmluZzsKK2V4cG9ydHMu
Y2FtbF9maWxsX3N0cmluZyAgICAgICAgICA9IGNhbWxfZmlsbF9zdHJpbmc7CitleHBvcnRzLmNh
bWxfYmxpdF9zdHJpbmcgICAgICAgICAgPSBjYW1sX2JsaXRfc3RyaW5nOworZXhwb3J0cy5jYW1s
X2JsaXRfYnl0ZXMgICAgICAgICAgID0gY2FtbF9ibGl0X2J5dGVzOworZXhwb3J0cy5jYW1sX3N0
cmluZ19nZXQxNiAgICAgICAgID0gY2FtbF9zdHJpbmdfZ2V0MTY7CitleHBvcnRzLmNhbWxfc3Ry
aW5nX2dldDMyICAgICAgICAgPSBjYW1sX3N0cmluZ19nZXQzMjsKK2V4cG9ydHMuanNfc3RyaW5n
X29mX2NoYXIgICAgICAgICA9IGpzX3N0cmluZ19vZl9jaGFyOworZXhwb3J0cy5nZXQgICAgICAg
ICAgICAgICAgICAgICAgID0gZ2V0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVu
ZCBvZiBjYW1sX3N0cmluZy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9
OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX3V0aWxzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxl
dCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX3V0aWxzLmpzIC8vLy8vLy8v
CisndXNlIHN0cmljdCc7CisKKwordmFyIHJlcGVhdCA9ICggKFN0cmluZy5wcm90b3R5cGUucmVw
ZWF0ICYmIGZ1bmN0aW9uIChjb3VudCxzZWxmKXtyZXR1cm4gc2VsZi5yZXBlYXQoY291bnQpfSkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24oY291bnQgLCBzZWxmKSB7CisgICAgICAgIGlmIChzZWxmLmxlbmd0aCA9PSAwIHx8IGNv
dW50ID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiAnJzsKKyAgICAgICAgfQorICAgICAgICAv
LyBFbnN1cmluZyBjb3VudCBpcyBhIDMxLWJpdCBpbnRlZ2VyIGFsbG93cyB1cyB0byBoZWF2aWx5
IG9wdGltaXplIHRoZQorICAgICAgICAvLyBtYWluIHBhcnQuIEJ1dCBhbnl3YXksIG1vc3QgY3Vy
cmVudCAoQXVndXN0IDIwMTQpIGJyb3dzZXJzIGNhbid0IGhhbmRsZQorICAgICAgICAvLyBzdHJp
bmdzIDEgPDwgMjggY2hhcnMgb3IgbG9uZ2VyLCBzbzoKKyAgICAgICAgaWYgKHNlbGYubGVuZ3Ro
ICogY291bnQgPj0gMSA8PCAyOCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3Io
J3JlcGVhdCBjb3VudCBtdXN0IG5vdCBvdmVyZmxvdyBtYXhpbXVtIHN0cmluZyBzaXplJyk7Cisg
ICAgICAgIH0KKyAgICAgICAgdmFyIHJwdCA9ICcnOworICAgICAgICBmb3IgKDs7KSB7CisgICAg
ICAgICAgICBpZiAoKGNvdW50ICYgMSkgPT0gMSkgeworICAgICAgICAgICAgICAgIHJwdCArPSBz
ZWxmOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQgPj4+PSAxOworICAgICAgICAg
ICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHNlbGYgKz0gc2VsZjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
cnB0OworICAgIH0KKyk7CisKK2V4cG9ydHMucmVwZWF0ID0gcmVwZWF0OworLyogcmVwZWF0IE5v
dCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF91dGlscy5qcyAvLy8vLy8v
LworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjaGFyJ10g
PSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBv
ZiBjaGFyLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX3N0cmluZyAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rp
b24gY2hyKG4pIHsKKyAgaWYgKG4gPCAwIHx8IG4gPiAyNTUpIHsKKyAgICB0aHJvdyBbCisgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAiQ2hhci5jaHIiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG47Cisg
IH0KK30KKworZnVuY3Rpb24gZXNjYXBlZChjKSB7CisgIHZhciBleGl0ID0gMDsKKyAgaWYgKGMg
Pj0gNDApIHsKKyAgICBpZiAoYyAhPT0gOTIpIHsKKyAgICAgIGV4aXQgPSBjID49IDEyNyA/IDEg
OiAyOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAiXFxcXCI7CisgICAgfQorICB9
CisgIGVsc2UgaWYgKGMgPj0gMzIpIHsKKyAgICBpZiAoYyA+PSAzOSkgeworICAgICAgcmV0dXJu
ICJcXCciOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGV4aXQgPSAyOworICAgIH0KKyAgfQor
ICBlbHNlIGlmIChjID49IDE0KSB7CisgICAgZXhpdCA9IDE7CisgIH0KKyAgZWxzZSB7CisgICAg
c3dpdGNoIChjKSB7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICByZXR1cm4gIlxcYiI7Cisg
ICAgICBjYXNlIDkgOiAKKyAgICAgICAgICByZXR1cm4gIlxcdCI7CisgICAgICBjYXNlIDEwIDog
CisgICAgICAgICAgcmV0dXJuICJcXG4iOworICAgICAgY2FzZSAwIDogCisgICAgICBjYXNlIDEg
OiAKKyAgICAgIGNhc2UgMiA6IAorICAgICAgY2FzZSAzIDogCisgICAgICBjYXNlIDQgOiAKKyAg
ICAgIGNhc2UgNSA6IAorICAgICAgY2FzZSA2IDogCisgICAgICBjYXNlIDcgOiAKKyAgICAgIGNh
c2UgMTEgOiAKKyAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICByZXR1cm4gIlxcciI7CisgICAg
ICAKKyAgICB9CisgIH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAgY2FzZSAxIDogCisgICAgICAg
IHZhciBzID0gbmV3IEFycmF5KDQpOworICAgICAgICBzWzBdID0gLyogIlxcIiAqLzkyOworICAg
ICAgICBzWzFdID0gNDggKyAoYyAvIDEwMCB8IDApIHwgMDsKKyAgICAgICAgc1syXSA9IDQ4ICsg
KGMgLyAxMCB8IDApICUgMTAgfCAwOworICAgICAgICBzWzNdID0gNDggKyBjICUgMTAgfCAwOwor
ICAgICAgICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHMpOworICAgIGNhc2Ug
MiA6IAorICAgICAgICB2YXIgcyQxID0gbmV3IEFycmF5KDEpOworICAgICAgICBzJDFbMF0gPSBj
OworICAgICAgICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHMkMSk7CisgICAg
CisgIH0KK30KKworZnVuY3Rpb24gbG93ZXJjYXNlKGMpIHsKKyAgaWYgKGMgPj0gLyogIkEiICov
NjUgJiYgYyA8PSAvKiAiWiIgKi85MCB8fCBjID49IC8qICJcMTkyIiAqLzE5MiAmJiBjIDw9IC8q
ICJcMjE0IiAqLzIxNCB8fCBjID49IC8qICJcMjE2IiAqLzIxNiAmJiBjIDw9IC8qICJcMjIyIiAq
LzIyMikgeworICAgIHJldHVybiBjICsgMzIgfCAwOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biBjOworICB9Cit9CisKK2Z1bmN0aW9uIHVwcGVyY2FzZShjKSB7CisgIGlmIChjID49IC8qICJh
IiAqLzk3ICYmIGMgPD0gLyogInoiICovMTIyIHx8IGMgPj0gLyogIlwyMjQiICovMjI0ICYmIGMg
PD0gLyogIlwyNDYiICovMjQ2IHx8IGMgPj0gLyogIlwyNDgiICovMjQ4ICYmIGMgPD0gLyogIlwy
NTQiICovMjU0KSB7CisgICAgcmV0dXJuIGMgLSAzMiB8IDA7CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIGM7CisgIH0KK30KKworZnVuY3Rpb24gY29tcGFyZShjMSwgYzIpIHsKKyAgcmV0dXJu
IGMxIC0gYzIgfCAwOworfQorCitleHBvcnRzLmNociAgICAgICA9IGNocjsKK2V4cG9ydHMuZXNj
YXBlZCAgID0gZXNjYXBlZDsKK2V4cG9ydHMubG93ZXJjYXNlID0gbG93ZXJjYXNlOworZXhwb3J0
cy51cHBlcmNhc2UgPSB1cHBlcmNhc2U7CitleHBvcnRzLmNvbXBhcmUgICA9IGNvbXBhcmU7Cisv
KiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNoYXIuanMgLy8vLy8vLy8KK8Kg
IMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY3VycnknXSA9IGZ1
bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGN1
cnJ5LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX29vICAgID0gcmVxdWly
ZSgiLi9jYW1sX29vIik7Cit2YXIgQ2FtbF9hcnJheSA9IHJlcXVpcmUoIi4vY2FtbF9hcnJheSIp
OworCitmdW5jdGlvbiBhcHAoX2YsIF9hcmdzKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIg
YXJncyA9IF9hcmdzOworICAgIHZhciBmID0gX2Y7CisgICAgdmFyIGFyaXR5ID0gZi5sZW5ndGg7
CisgICAgdmFyIGFyaXR5JDEgPSBhcml0eSA/IGFyaXR5IDogMTsKKyAgICB2YXIgbGVuID0gYXJn
cy5sZW5ndGg7CisgICAgdmFyIGQgPSBhcml0eSQxIC0gbGVuIHwgMDsKKyAgICBpZiAoZCkgewor
ICAgICAgaWYgKGQgPCAwKSB7CisgICAgICAgIF9hcmdzID0gQ2FtbF9hcnJheS5jYW1sX2FycmF5
X3N1YihhcmdzLCBhcml0eSQxLCAtZCB8IDApOworICAgICAgICBfZiA9IGYuYXBwbHkobnVsbCwg
Q2FtbF9hcnJheS5jYW1sX2FycmF5X3N1YihhcmdzLCAwLCBhcml0eSQxKSk7CisgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJu
IChmdW5jdGlvbihmLGFyZ3MpeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAg
ICAgICByZXR1cm4gYXBwKGYsIGFyZ3MuY29uY2F0KC8qIGFycmF5ICovW3hdKSk7CisgICAgICAg
IH0KKyAgICAgICAgfShmLGFyZ3MpKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9u
IGpzKGxhYmVsLCBjYWNoZWlkLCBvYmosIGFyZ3MpIHsKKyAgdmFyIG1ldGggPSBDYW1sX29vLmNh
bWxfZ2V0X3B1YmxpY19tZXRob2Qob2JqLCBsYWJlbCwgY2FjaGVpZCk7CisgIHJldHVybiBhcHAo
bWV0aCwgYXJncyk7Cit9CisKK2Z1bmN0aW9uIGN1cnJ5XzEobywgYTAsIGFyaXR5KSB7CisgIGlm
IChhcml0eSA+IDcgfHwgYXJpdHkgPCAwKSB7CisgICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAq
L1thMF0pOworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2Ug
MCA6IAorICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIG8oYTApOworICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAg
cmV0dXJuIG8oYTAsIHBhcmFtKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSAzIDogCisgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSkgeworICAgICAgICAgICAgcmV0
dXJuIG8oYTAsIHBhcmFtLCBwYXJhbSQxKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA0IDog
CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgewor
ICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsKKyAgICAg
ICAgICB9OworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJh
bSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMykgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAs
IHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzKTsKKyAgICAgICAgICB9OworICAgICAg
Y2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFy
YW0kMiwgcGFyYW0kMywgcGFyYW0kNCkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBhcmFt
LCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0KTsKKyAgICAgICAgICB9OworICAg
ICAgY2FzZSA3IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwg
cGFyYW0kMiwgcGFyYW0kMywgcGFyYW0kNCwgcGFyYW0kNSkgeworICAgICAgICAgICAgcmV0dXJu
IG8oYTAsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0LCBwYXJhbSQ1
KTsKKyAgICAgICAgICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF8xKG8s
IGEwKSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDEpIHsKKyAg
ICByZXR1cm4gbyhhMCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGN1cnJ5XzEobywgYTAs
IGFyaXR5KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczEobGFiZWwsIGNhY2hlaWQsIGEwKSB7Cisg
IHJldHVybiBfMShDYW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAsIGxhYmVsLCBjYWNo
ZWlkKSwgYTApOworfQorCitmdW5jdGlvbiBfXzEobykgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0
aDsKKyAgaWYgKGFyaXR5ID09PSAxKSB7CisgICAgcmV0dXJuIG87CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uIChhMCkgeworICAgICAgcmV0dXJuIF8xKG8sIGEwKTsKKyAgICB9
OworICB9Cit9CisKK2Z1bmN0aW9uIGN1cnJ5XzIobywgYTAsIGExLCBhcml0eSkgeworICBpZiAo
YXJpdHkgPiA3IHx8IGFyaXR5IDwgMCkgeworICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9b
CisgICAgICAgICAgICAgICAgYTAsCisgICAgICAgICAgICAgICAgYTEKKyAgICAgICAgICAgICAg
XSk7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChhcml0eSkgeworICAgICAgY2FzZSAwIDog
CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAq
L1thMV0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIG8oYTAsIGExKTsKKyAg
ICAgIGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAg
ICAgICAgIHJldHVybiBvKGEwLCBhMSwgcGFyYW0pOworICAgICAgICAgIH07CisgICAgICBjYXNl
IDQgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxKSB7CisgICAg
ICAgICAgICByZXR1cm4gbyhhMCwgYTEsIHBhcmFtLCBwYXJhbSQxKTsKKyAgICAgICAgICB9Owor
ICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0k
MSwgcGFyYW0kMikgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBwYXJhbSwgcGFyYW0k
MSwgcGFyYW0kMik7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpIHsKKyAgICAg
ICAgICAgIHJldHVybiBvKGEwLCBhMSwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMp
OworICAgICAgICAgIH07CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0KSB7CisgICAgICAg
ICAgICByZXR1cm4gbyhhMCwgYTEsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBw
YXJhbSQ0KTsKKyAgICAgICAgICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9u
IF8yKG8sIGEwLCBhMSkgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09
PSAyKSB7CisgICAgcmV0dXJuIG8oYTAsIGExKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
Y3VycnlfMihvLCBhMCwgYTEsIGFyaXR5KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczIobGFiZWws
IGNhY2hlaWQsIGEwLCBhMSkgeworICByZXR1cm4gXzIoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNf
bWV0aG9kKGEwLCBsYWJlbCwgY2FjaGVpZCksIGEwLCBhMSk7Cit9CisKK2Z1bmN0aW9uIF9fMihv
KSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDIpIHsKKyAgICBy
ZXR1cm4gbzsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGEwLCBhMSkgewor
ICAgICAgcmV0dXJuIF8yKG8sIGEwLCBhMSk7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBj
dXJyeV8zKG8sIGEwLCBhMSwgYTIsIGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcgfHwgYXJpdHkg
PCAwKSB7CisgICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICBh
MCwKKyAgICAgICAgICAgICAgICBhMSwKKyAgICAgICAgICAgICAgICBhMgorICAgICAgICAgICAg
ICBdKTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAg
OiAKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5
ICovWworICAgICAgICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgICAgICAgIGEy
CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0
dXJuIGFwcChvKGEwLCBhMSksIC8qIGFycmF5ICovW2EyXSk7CisgICAgICBjYXNlIDMgOiAKKyAg
ICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAg
IHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwg
YTIsIHBhcmFtKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAs
IGExLCBhMiwgcGFyYW0sIHBhcmFtJDEpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDYgOiAK
KyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKSB7Cisg
ICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMik7
CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlv
biAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpIHsKKyAgICAgICAgICAgIHJldHVy
biBvKGEwLCBhMSwgYTIsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzKTsKKyAgICAg
ICAgICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF8zKG8sIGEwLCBhMSwg
YTIpIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gMykgeworICAg
IHJldHVybiBvKGEwLCBhMSwgYTIpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBjdXJyeV8z
KG8sIGEwLCBhMSwgYTIsIGFyaXR5KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczMobGFiZWwsIGNh
Y2hlaWQsIGEwLCBhMSwgYTIpIHsKKyAgcmV0dXJuIF8zKENhbWxfb28uY2FtbF9nZXRfcHVibGlj
X21ldGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEsIGEyKTsKK30KKworZnVuY3Rpb24g
X18zKG8pIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gMykgewor
ICAgIHJldHVybiBvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGEx
LCBhMikgeworICAgICAgcmV0dXJuIF8zKG8sIGEwLCBhMSwgYTIpOworICAgIH07CisgIH0KK30K
KworZnVuY3Rpb24gY3VycnlfNChvLCBhMCwgYTEsIGEyLCBhMywgYXJpdHkpIHsKKyAgaWYgKGFy
aXR5ID4gNyB8fCBhcml0eSA8IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovWwor
ICAgICAgICAgICAgICAgIGEwLAorICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAg
IGEyLAorICAgICAgICAgICAgICAgIGEzCisgICAgICAgICAgICAgIF0pOworICB9CisgIGVsc2Ug
eworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgY2FzZSAxIDog
CisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAg
ICAgICAgYTMKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICByZXR1cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMKKyAgICAgICAgICAgICAgICAgICAg
XSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiks
IC8qIGFycmF5ICovW2EzXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gbyhh
MCwgYTEsIGEyLCBhMyk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgcGFyYW0p
OworICAgICAgICAgIH07CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKHBhcmFtLCBwYXJhbSQxKSB7CisgICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBh
MywgcGFyYW0sIHBhcmFtJDEpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDcgOiAKKyAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKSB7CisgICAgICAg
ICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOwor
ICAgICAgICAgIH07CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzQobywgYTAs
IGExLCBhMiwgYTMpIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0g
NCkgeworICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzKTsKKyAgfQorICBlbHNlIHsKKyAgICBy
ZXR1cm4gY3VycnlfNChvLCBhMCwgYTEsIGEyLCBhMywgYXJpdHkpOworICB9Cit9CisKK2Z1bmN0
aW9uIGpzNChsYWJlbCwgY2FjaGVpZCwgYTAsIGExLCBhMiwgYTMpIHsKKyAgcmV0dXJuIF80KENh
bWxfb28uY2FtbF9nZXRfcHVibGljX21ldGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEs
IGEyLCBhMyk7Cit9CisKK2Z1bmN0aW9uIF9fNChvKSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3Ro
OworICBpZiAoYXJpdHkgPT09IDQpIHsKKyAgICByZXR1cm4gbzsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKGEwLCBhMSwgYTIsIGEzKSB7CisgICAgICByZXR1cm4gXzQobywg
YTAsIGExLCBhMiwgYTMpOworICAgIH07CisgIH0KK30KKworZnVuY3Rpb24gY3VycnlfNShvLCBh
MCwgYTEsIGEyLCBhMywgYTQsIGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcgfHwgYXJpdHkgPCAw
KSB7CisgICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICBhMCwK
KyAgICAgICAgICAgICAgICBhMSwKKyAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAg
ICBhMywKKyAgICAgICAgICAgICAgICBhNAorICAgICAgICAgICAgICBdKTsKKyAgfQorICBlbHNl
IHsKKyAgICBzd2l0Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgIGNhc2UgMSA6
IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5ICovWworICAgICAgICAgICAg
ICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAg
ICAgICAgIGEzLAorICAgICAgICAgICAgICAgICAgICAgIGE0CisgICAgICAgICAgICAgICAgICAg
IF0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSksIC8q
IGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgICAg
ICAgIGEzLAorICAgICAgICAgICAgICAgICAgICAgIGE0CisgICAgICAgICAgICAgICAgICAgIF0p
OworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIpLCAv
KiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBhMywKKyAgICAgICAgICAgICAgICAg
ICAgICBhNAorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAg
ICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyLCBhMyksIC8qIGFycmF5ICovW2E0XSk7CisgICAg
ICBjYXNlIDUgOiAKKyAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQpOworICAg
ICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAg
ICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBwYXJhbSk7CisgICAgICAgICAgfTsK
KyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFt
JDEpIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgcGFyYW0sIHBh
cmFtJDEpOworICAgICAgICAgIH07CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24g
XzUobywgYTAsIGExLCBhMiwgYTMsIGE0KSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBp
ZiAoYXJpdHkgPT09IDUpIHsKKyAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQpOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBjdXJyeV81KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYXJp
dHkpOworICB9Cit9CisKK2Z1bmN0aW9uIGpzNShsYWJlbCwgY2FjaGVpZCwgYTAsIGExLCBhMiwg
YTMsIGE0KSB7CisgIHJldHVybiBfNShDYW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAs
IGxhYmVsLCBjYWNoZWlkKSwgYTAsIGExLCBhMiwgYTMsIGE0KTsKK30KKworZnVuY3Rpb24gX181
KG8pIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNSkgeworICAg
IHJldHVybiBvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBh
MiwgYTMsIGE0KSB7CisgICAgICByZXR1cm4gXzUobywgYTAsIGExLCBhMiwgYTMsIGE0KTsKKyAg
ICB9OworICB9Cit9CisKK2Z1bmN0aW9uIGN1cnJ5XzYobywgYTAsIGExLCBhMiwgYTMsIGE0LCBh
NSwgYXJpdHkpIHsKKyAgaWYgKGFyaXR5ID4gNyB8fCBhcml0eSA8IDApIHsKKyAgICByZXR1cm4g
YXBwKG8sIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgIGEwLAorICAgICAgICAgICAgICAg
IGExLAorICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAg
ICAgICAgIGE0LAorICAgICAgICAgICAgICAgIGE1CisgICAgICAgICAgICAgIF0pOworICB9Cisg
IGVsc2UgeworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgY2Fz
ZSAxIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAg
ICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAg
ICAgICAgICAgYTUKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDIgOiAKKyAg
ICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAg
ICAgICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAgYTUKKyAgICAgICAgICAgICAgICAgICAg
XSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiks
IC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAg
ICAgICAgIGE0LAorICAgICAgICAgICAgICAgICAgICAgIGE1CisgICAgICAgICAgICAgICAgICAg
IF0pOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIs
IGEzKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAg
ICAgICAgICAgICAgYTUKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDUgOiAK
KyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0KSwgLyogYXJyYXkgKi9b
YTVdKTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEz
LCBhNCwgYTUpOworICAgICAgY2FzZSA3IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChw
YXJhbSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgcGFy
YW0pOworICAgICAgICAgIH07CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzYo
bywgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAg
aWYgKGFyaXR5ID09PSA2KSB7CisgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSk7
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGN1cnJ5XzYobywgYTAsIGExLCBhMiwgYTMsIGE0
LCBhNSwgYXJpdHkpOworICB9Cit9CisKK2Z1bmN0aW9uIGpzNihsYWJlbCwgY2FjaGVpZCwgYTAs
IGExLCBhMiwgYTMsIGE0LCBhNSkgeworICByZXR1cm4gXzYoQ2FtbF9vby5jYW1sX2dldF9wdWJs
aWNfbWV0aG9kKGEwLCBsYWJlbCwgY2FjaGVpZCksIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOwor
fQorCitmdW5jdGlvbiBfXzYobykgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFy
aXR5ID09PSA2KSB7CisgICAgcmV0dXJuIG87CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSB7CisgICAgICByZXR1cm4gXzYobywgYTAs
IGExLCBhMiwgYTMsIGE0LCBhNSk7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV83
KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhcml0eSkgeworICBpZiAoYXJpdHkgPiA3
IHx8IGFyaXR5IDwgMCkgeworICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9bCisgICAgICAg
ICAgICAgICAgYTAsCisgICAgICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgYTIsCisg
ICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAg
YTUsCisgICAgICAgICAgICAgICAgYTYKKyAgICAgICAgICAgICAgXSk7CisgIH0KKyAgZWxzZSB7
CisgICAgc3dpdGNoIChhcml0eSkgeworICAgICAgY2FzZSAwIDogCisgICAgICBjYXNlIDEgOiAK
KyAgICAgICAgICByZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICBhMSwKKyAgICAgICAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICAg
ICAgICBhMywKKyAgICAgICAgICAgICAgICAgICAgICBhNCwKKyAgICAgICAgICAgICAgICAgICAg
ICBhNSwKKyAgICAgICAgICAgICAgICAgICAgICBhNgorICAgICAgICAgICAgICAgICAgICBdKTsK
KyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEpLCAvKiBhcnJh
eSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICAgICAgICBh
MywKKyAgICAgICAgICAgICAgICAgICAgICBhNCwKKyAgICAgICAgICAgICAgICAgICAgICBhNSwK
KyAgICAgICAgICAgICAgICAgICAgICBhNgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAg
IGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyKSwgLyogYXJyYXkg
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQs
CisgICAgICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYKKyAg
ICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4g
YXBwKG8oYTAsIGExLCBhMiwgYTMpLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICBhNCwKKyAgICAgICAgICAgICAgICAgICAgICBhNSwKKyAgICAgICAgICAgICAgICAgICAgICBh
NgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJl
dHVybiBhcHAobyhhMCwgYTEsIGEyLCBhMywgYTQpLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICBhNSwKKyAgICAgICAgICAgICAgICAgICAgICBhNgorICAgICAgICAgICAgICAg
ICAgICBdKTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEs
IGEyLCBhMywgYTQsIGE1KSwgLyogYXJyYXkgKi9bYTZdKTsKKyAgICAgIGNhc2UgNyA6IAorICAg
ICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKKyAgICAgIAorICAg
IH0KKyAgfQorfQorCitmdW5jdGlvbiBfNyhvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikg
eworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSA3KSB7CisgICAgcmV0
dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiBjdXJyeV83KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhcml0eSk7CisgIH0K
K30KKworZnVuY3Rpb24ganM3KGxhYmVsLCBjYWNoZWlkLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1
LCBhNikgeworICByZXR1cm4gXzcoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0aG9kKGEwLCBs
YWJlbCwgY2FjaGVpZCksIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKK30KKworZnVuY3Rp
b24gX183KG8pIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNykg
eworICAgIHJldHVybiBvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAs
IGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIHsKKyAgICAgIHJldHVybiBfNyhvLCBhMCwgYTEsIGEy
LCBhMywgYTQsIGE1LCBhNik7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV84KG8s
IGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYXJpdHkpIHsKKyAgaWYgKGFyaXR5ID4g
NyB8fCBhcml0eSA8IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovWworICAgICAg
ICAgICAgICAgIGEwLAorICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgIGEyLAor
ICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgIGE0LAorICAgICAgICAgICAgICAg
IGE1LAorICAgICAgICAgICAgICAgIGE2LAorICAgICAgICAgICAgICAgIGE3CisgICAgICAgICAg
ICAgIF0pOworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2Ug
MCA6IAorICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJy
YXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgICAgICAg
YTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQs
CisgICAgICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYsCisg
ICAgICAgICAgICAgICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisg
ICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAg
ICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAg
ICAgICAgICAgICAgICAgYTYsCisgICAgICAgICAgICAgICAgICAgICAgYTcKKyAgICAgICAgICAg
ICAgICAgICAgXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAs
IGExLCBhMiksIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAg
ICAgICAgICAgICAgICAgIGE0LAorICAgICAgICAgICAgICAgICAgICAgIGE1LAorICAgICAgICAg
ICAgICAgICAgICAgIGE2LAorICAgICAgICAgICAgICAgICAgICAgIGE3CisgICAgICAgICAgICAg
ICAgICAgIF0pOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBh
MSwgYTIsIGEzKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAg
ICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYsCisgICAgICAg
ICAgICAgICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDUg
OiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0KSwgLyogYXJyYXkg
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYs
CisgICAgICAgICAgICAgICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAg
ICBjYXNlIDYgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0LCBh
NSksIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGE2LAorICAgICAgICAgICAg
ICAgICAgICAgIGE3CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA3IDogCisg
ICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSwgLyogYXJy
YXkgKi9bYTddKTsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBfOChvLCBhMCwg
YTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7Cisg
IGlmIChhcml0eSA9PT0gOCkgeworICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUs
IGE2LCBhNyk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGN1cnJ5XzgobywgYTAsIGExLCBh
MiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhcml0eSk7CisgIH0KK30KKworZnVuY3Rpb24ganM4KGxh
YmVsLCBjYWNoZWlkLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIHsKKyAgcmV0dXJu
IF84KENhbWxfb28uY2FtbF9nZXRfcHVibGljX21ldGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBh
MCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOworfQorCitmdW5jdGlvbiBfXzgobykgewor
ICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSA4KSB7CisgICAgcmV0dXJu
IG87CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyLCBhMywg
YTQsIGE1LCBhNiwgYTcpIHsKKyAgICAgIHJldHVybiBfOChvLCBhMCwgYTEsIGEyLCBhMywgYTQs
IGE1LCBhNiwgYTcpOworICAgIH07CisgIH0KK30KKworZXhwb3J0cy5hcHAgICAgID0gYXBwOwor
ZXhwb3J0cy5qcyAgICAgID0ganM7CitleHBvcnRzLmN1cnJ5XzEgPSBjdXJyeV8xOworZXhwb3J0
cy5fMSAgICAgID0gXzE7CitleHBvcnRzLmpzMSAgICAgPSBqczE7CitleHBvcnRzLl9fMSAgICAg
PSBfXzE7CitleHBvcnRzLmN1cnJ5XzIgPSBjdXJyeV8yOworZXhwb3J0cy5fMiAgICAgID0gXzI7
CitleHBvcnRzLmpzMiAgICAgPSBqczI7CitleHBvcnRzLl9fMiAgICAgPSBfXzI7CitleHBvcnRz
LmN1cnJ5XzMgPSBjdXJyeV8zOworZXhwb3J0cy5fMyAgICAgID0gXzM7CitleHBvcnRzLmpzMyAg
ICAgPSBqczM7CitleHBvcnRzLl9fMyAgICAgPSBfXzM7CitleHBvcnRzLmN1cnJ5XzQgPSBjdXJy
eV80OworZXhwb3J0cy5fNCAgICAgID0gXzQ7CitleHBvcnRzLmpzNCAgICAgPSBqczQ7CitleHBv
cnRzLl9fNCAgICAgPSBfXzQ7CitleHBvcnRzLmN1cnJ5XzUgPSBjdXJyeV81OworZXhwb3J0cy5f
NSAgICAgID0gXzU7CitleHBvcnRzLmpzNSAgICAgPSBqczU7CitleHBvcnRzLl9fNSAgICAgPSBf
XzU7CitleHBvcnRzLmN1cnJ5XzYgPSBjdXJyeV82OworZXhwb3J0cy5fNiAgICAgID0gXzY7Citl
eHBvcnRzLmpzNiAgICAgPSBqczY7CitleHBvcnRzLl9fNiAgICAgPSBfXzY7CitleHBvcnRzLmN1
cnJ5XzcgPSBjdXJyeV83OworZXhwb3J0cy5fNyAgICAgID0gXzc7CitleHBvcnRzLmpzNyAgICAg
PSBqczc7CitleHBvcnRzLl9fNyAgICAgPSBfXzc7CitleHBvcnRzLmN1cnJ5XzggPSBjdXJyeV84
OworZXhwb3J0cy5fOCAgICAgID0gXzg7CitleHBvcnRzLmpzOCAgICAgPSBqczg7CitleHBvcnRz
Ll9fOCAgICAgPSBfXzg7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGN1
cnJ5LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVn
aXN0cnlbJ2RlY29kZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9Owor
Ly8vLy8vLy8gc3RhcnQgb2YgZGVjb2RlLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVD
S0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3Ry
aWN0JzsKKwordmFyIEYzMiAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjMyIik7Cit2YXIgRjY0
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9mNjQiKTsKK3ZhciBJMzIgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL2kzMiIpOwordmFyIExpYiAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGliIik7
Cit2YXIgTGlzdCAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3Qi
KTsKK3ZhciBCbG9jayAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxv
Y2siKTsKK3ZhciBDdXJyeSAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
Y3VycnkiKTsKK3ZhciAkJEVycm9yICAgICAgICAgPSByZXF1aXJlKCIuL2Vycm9yIik7Cit2YXIg
RW5jb2RlICAgICAgICAgID0gcmVxdWlyZSgiLi9lbmNvZGUiKTsKK3ZhciBQcmludGYgICAgICAg
ICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcHJpbnRmIik7Cit2YXIgU291cmNlICAg
ICAgICAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciAkJFN0cmluZyAgICAgICAgPSByZXF1
aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvc3RyaW5nIik7Cit2YXIgQ2FtbF9vYmogICAgICAgID0g
cmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIgT3BlcmF0b3JzICAg
ICAgID0gcmVxdWlyZSgiLi9vcGVyYXRvcnMiKTsKK3ZhciBDYW1sX2ludDY0ICAgICAgPSByZXF1
aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9pbnQ2NCIpOwordmFyIENhbWxfc3RyaW5nICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX3N0cmluZyIpOwordmFyIENhbWxf
ZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2V4Y2VwdGlvbnMi
KTsKKwordmFyIEVPUyA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIkRlY29kZS5FT1MiKTsKKwor
ZnVuY3Rpb24gc3RyZWFtKG5hbWUsIGJzKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgLyogbmFtZSAqL25hbWUsCisgICAgICAgICAgLyogYnl0ZXMgKi9icywKKyAgICAgICAg
ICAvKiBwb3MgKi9bMF0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZW9zKHMpIHsKKyAgcmV0
dXJuICsoc1svKiBwb3MgKi8yXVswXSA9PT0gc1svKiBieXRlcyAqLzFdLmxlbmd0aCk7Cit9CisK
K2Z1bmN0aW9uIGNoZWNrKG4sIHMpIHsKKyAgaWYgKChzWy8qIHBvcyAqLzJdWzBdICsgbiB8IDAp
ID4gc1svKiBieXRlcyAqLzFdLmxlbmd0aCkgeworICAgIHRocm93IEVPUzsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBza2lwKG4sIHMpIHsKKyAgY2hl
Y2sobiwgcyk7CisgIHNbLyogcG9zICovMl1bMF0gPSBzWy8qIHBvcyAqLzJdWzBdICsgbiB8IDA7
CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHJlYWQocykgeworICByZXR1cm4g
Q2FtbF9zdHJpbmcuZ2V0KHNbLyogYnl0ZXMgKi8xXSwgc1svKiBwb3MgKi8yXVswXSk7Cit9CisK
K2Z1bmN0aW9uIHBlZWsocykgeworICBpZiAoZW9zKHMpKSB7CisgICAgcmV0dXJuIC8qIE5vbmUg
Ki8wOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBTb21lICovW3JlYWQocyldOworICB9
Cit9CisKK2Z1bmN0aW9uIGdldChzKSB7CisgIGNoZWNrKDEsIHMpOworICB2YXIgYiA9IHJlYWQo
cyk7CisgIHNraXAoMSwgcyk7CisgIHJldHVybiBiOworfQorCit2YXIgQ29kZSA9ICQkRXJyb3Iu
TWFrZSgvKiBtb2R1bGUgKi9bXSk7CisKK3ZhciBDb2RlJDEgPSBDb2RlWy8qIEVycm9yICovMF07
CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9ieXRlKGIpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50
Zi5zcHJpbnRmKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2Nr
Ll9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfeCAqLzYsCisgICAgICAgICAg
ICAgICAgICAgICAgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFplcm9zICovMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMgor
ICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgLyogTm9f
cHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICov
MAorICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICIlMDJ4IgorICAg
ICAgICAgICAgICAgIF0pLCBiKTsKK30KKworZnVuY3Rpb24gcG9zaXRpb24ocywgcG9zKSB7Cisg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogZmlsZSAqL3NbLyogbmFtZSAqLzBd
LAorICAgICAgICAgIC8qIGxpbmUgKi8tMSwKKyAgICAgICAgICAvKiBjb2x1bW4gKi9wb3MKKyAg
ICAgICAgXTsKK30KKworZnVuY3Rpb24gcmVnaW9uKHMsIGxlZnQsIHJpZ2h0KSB7CisgIHJldHVy
biAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogbGVmdCAqL3Bvc2l0aW9uKHMsIGxlZnQpLAor
ICAgICAgICAgIC8qIHJpZ2h0ICovcG9zaXRpb24ocywgcmlnaHQpCisgICAgICAgIF07Cit9CisK
K2Z1bmN0aW9uIGVycm9yKHMsIHBvcywgbXNnKSB7CisgIHRocm93IFsKKyAgICAgICAgQ29kZSQx
LAorICAgICAgICByZWdpb24ocywgcG9zLCBwb3MpLAorICAgICAgICBtc2cKKyAgICAgIF07Cit9
CisKK2Z1bmN0aW9uICQkcmVxdWlyZShiLCBzLCBwb3MsIG1zZykgeworICBpZiAoYikgeworICAg
IHJldHVybiAwOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBlcnJvcihzLCBwb3MsIG1zZyk7
CisgIH0KK30KKworZnVuY3Rpb24gZ3VhcmQoZiwgcykgeworICB0cnkgeworICAgIHJldHVybiBD
dXJyeS5fMShmLCBzKTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBFT1Mp
IHsKKyAgICAgIHJldHVybiBlcnJvcihzLCBzWy8qIGJ5dGVzICovMV0ubGVuZ3RoLCAidW5leHBl
Y3RlZCBlbmQgb2YgYmluYXJ5IG9yIGZ1bmN0aW9uIik7CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBnZXQkMShwYXJhbSkgewor
ICByZXR1cm4gZ3VhcmQoZ2V0LCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGV4cGVjdChiLCBzLCBt
c2cpIHsKKyAgcmV0dXJuICQkcmVxdWlyZSgrKGd1YXJkKGdldCQxLCBzKSA9PT0gYiksIHMsIHNb
LyogcG9zICovMl1bMF0gLSAxIHwgMCwgbXNnKTsKK30KKworZnVuY3Rpb24gaWxsZWdhbChzLCBw
b3MsIGIpIHsKKyAgcmV0dXJuIGVycm9yKHMsIHBvcywgImlsbGVnYWwgb3Bjb2RlICIgKyBzdHJp
bmdfb2ZfYnl0ZShiKSk7Cit9CisKK2Z1bmN0aW9uIGF0KGYsIHMpIHsKKyAgdmFyIGxlZnQgPSBz
Wy8qIHBvcyAqLzJdWzBdOworICB2YXIgeCA9IEN1cnJ5Ll8xKGYsIHMpOworICB2YXIgcmlnaHQg
PSBzWy8qIHBvcyAqLzJdWzBdOworICByZXR1cm4gU291cmNlLiRhdCRhdCh4LCByZWdpb24ocywg
bGVmdCwgcmlnaHQpKTsKK30KKworZnVuY3Rpb24gdTE2KHMpIHsKKyAgdmFyIGxvID0gZ3VhcmQo
Z2V0LCBzKTsKKyAgdmFyIGhpID0gZ3VhcmQoZ2V0LCBzKTsKKyAgcmV0dXJuIChoaSA8PCA4KSAr
IGxvIHwgMDsKK30KKworZnVuY3Rpb24gdTMyKHMpIHsKKyAgdmFyIGxvID0gdTE2KHMpOworICB2
YXIgaGkgPSB1MTYocyk7CisgIHJldHVybiBsbyArIChoaSA8PCAxNikgfCAwOworfQorCitmdW5j
dGlvbiB1NjQocykgeworICB2YXIgbG8gPSBDYW1sX2ludDY0Lm9mX2ludDMyKHUzMihzKSk7Cisg
IHZhciBoaSA9IENhbWxfaW50NjQub2ZfaW50MzIodTMyKHMpKTsKKyAgcmV0dXJuIENhbWxfaW50
NjQuYWRkKGxvLCBDYW1sX2ludDY0LmxzbF8oaGksIDMyKSk7Cit9CisKK2Z1bmN0aW9uIHZ1Tihu
LCBzKSB7CisgICQkcmVxdWlyZSgrKG4gPiAwKSwgcywgc1svKiBwb3MgKi8yXVswXSwgImludGVn
ZXIgcmVwcmVzZW50YXRpb24gdG9vIGxvbmciKTsKKyAgdmFyIGIgPSBndWFyZChnZXQsIHMpOwor
ICAkJHJlcXVpcmUoKyhuID49IDcgfHwgKGIgJiAxMjcpIDwgKDEgPDwgbikpLCBzLCBzWy8qIHBv
cyAqLzJdWzBdIC0gMSB8IDAsICJpbnRlZ2VyIHRvbyBsYXJnZSIpOworICB2YXIgeCA9IENhbWxf
aW50NjQub2ZfaW50MzIoYiAmIDEyNyk7CisgIGlmIChiICYgMTI4KSB7CisgICAgcmV0dXJuIENh
bWxfaW50NjQub3JfKHgsIENhbWxfaW50NjQubHNsXyh2dU4obiAtIDcgfCAwLCBzKSwgNykpOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiB4OworICB9Cit9CisKK2Z1bmN0aW9uIHZzTihuLCBz
KSB7CisgICQkcmVxdWlyZSgrKG4gPiAwKSwgcywgc1svKiBwb3MgKi8yXVswXSwgImludGVnZXIg
cmVwcmVzZW50YXRpb24gdG9vIGxvbmciKTsKKyAgdmFyIGIgPSBndWFyZChnZXQsIHMpOworICB2
YXIgbWFzayA9ICgtMSA8PCBuKSAmIDEyNzsKKyAgJCRyZXF1aXJlKCsobiA+PSA3IHx8IChiICYg
bWFzaykgPT09IDAgfHwgKGIgJiBtYXNrKSA9PT0gbWFzayksIHMsIHNbLyogcG9zICovMl1bMF0g
LSAxIHwgMCwgImludGVnZXIgdG9vIGxhcmdlIik7CisgIHZhciB4ID0gQ2FtbF9pbnQ2NC5vZl9p
bnQzMihiICYgMTI3KTsKKyAgaWYgKGIgJiAxMjgpIHsKKyAgICByZXR1cm4gQ2FtbF9pbnQ2NC5v
cl8oeCwgQ2FtbF9pbnQ2NC5sc2xfKHZzTihuIC0gNyB8IDAsIHMpLCA3KSk7CisgIH0KKyAgZWxz
ZSBpZiAoYiAmIDY0KSB7CisgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgLyog
aGkgKi94WzBdIHwgLyogaGkgKi8tMSwKKyAgICAgICAgICAgIC8qIGxvICovKCh4WzFdIHwgLyog
bG8gKi80Mjk0OTY3MTY4KSA+Pj4gMCkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiB4OworICB9Cit9CisKK2Z1bmN0aW9uIHZ1MzIocykgeworICByZXR1cm4gdnVOKDMy
LCBzKVsxXSB8IDA7Cit9CisKK2Z1bmN0aW9uIHZzMzIocykgeworICByZXR1cm4gdnNOKDMyLCBz
KVsxXSB8IDA7Cit9CisKK2Z1bmN0aW9uIHZzNjQocykgeworICByZXR1cm4gdnNOKDY0LCBzKTsK
K30KKworZnVuY3Rpb24gZjMyKHMpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKEYzMi5vZl9iaXRzLCB1
MzIocykpOworfQorCitmdW5jdGlvbiBmNjQocykgeworICByZXR1cm4gQ3VycnkuXzEoRjY0Lm9m
X2JpdHMsIHU2NChzKSk7Cit9CisKK2Z1bmN0aW9uIGxlbjMyKHMpIHsKKyAgdmFyIHBvcyA9IHNb
LyogcG9zICovMl1bMF07CisgIHZhciBuID0gdnVOKDMyLCBzKVsxXSB8IDA7CisgIGlmIChuIDw9
IHNbLyogYnl0ZXMgKi8xXS5sZW5ndGgpIHsKKyAgICByZXR1cm4gbjsKKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gZXJyb3IocywgcG9zLCAibGVuZ3RoIG91dCBvZiBib3VuZHMiKTsKKyAgfQor
fQorCitmdW5jdGlvbiBzdHJpbmcocykgeworICB2YXIgbiA9IGxlbjMyKHMpOworICByZXR1cm4g
Z3VhcmQoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHZhciBuJDEgPSBuOworICAg
ICAgICAgICAgICB2YXIgcyA9IHBhcmFtOworICAgICAgICAgICAgICB2YXIgaSA9IHNbLyogcG9z
ICovMl1bMF07CisgICAgICAgICAgICAgIHNraXAobiQxLCBzKTsKKyAgICAgICAgICAgICAgcmV0
dXJuICQkU3RyaW5nLnN1YihzWy8qIGJ5dGVzICovMV0sIGksIG4kMSk7CisgICAgICAgICAgICB9
LCBzKTsKK30KKworZnVuY3Rpb24gbGlzdChmLCBuLCBzKSB7CisgIGlmIChuKSB7CisgICAgdmFy
IHggPSBDdXJyeS5fMShmLCBzKTsKKyAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICB4
LAorICAgICAgICAgICAgbGlzdChmLCBuIC0gMSB8IDAsIHMpCisgICAgICAgICAgXTsKKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIG9wdChm
LCBiLCBzKSB7CisgIGlmIChiKSB7CisgICAgcmV0dXJuIC8qIFNvbWUgKi9bQ3VycnkuXzEoZiwg
cyldOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBOb25lICovMDsKKyAgfQorfQorCitm
dW5jdGlvbiB2ZWMoZiwgcykgeworICB2YXIgbiA9IGxlbjMyKHMpOworICByZXR1cm4gbGlzdChm
LCBuLCBzKTsKK30KKworZnVuY3Rpb24gc2l6ZWQoZiwgcykgeworICB2YXIgc2l6ZSA9IGxlbjMy
KHMpOworICB2YXIgc3RhcnQgPSBzWy8qIHBvcyAqLzJdWzBdOworICB2YXIgeCA9IEN1cnJ5Ll8y
KGYsIHNpemUsIHMpOworICAkJHJlcXVpcmUoKyhzWy8qIHBvcyAqLzJdWzBdID09PSAoc3RhcnQg
KyBzaXplIHwgMCkpLCBzLCBzdGFydCwgInNlY3Rpb24gc2l6ZSBtaXNtYXRjaCIpOworICByZXR1
cm4geDsKK30KKworZnVuY3Rpb24gdmFsdWVfdHlwZShzKSB7CisgIHZhciBtYXRjaCA9IHZzTig3
LCBzKVsxXSB8IDA7CisgIHZhciBzd2l0Y2hlciA9IG1hdGNoICsgNCB8IDA7CisgIGlmIChzd2l0
Y2hlciA+IDMgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9z
ICovMl1bMF0gLSAxIHwgMCwgImludmFsaWQgdmFsdWUgdHlwZSIpOworICB9CisgIGVsc2Ugewor
ICAgIHN3aXRjaCAoc3dpdGNoZXIpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVy
biAvKiBGNjRUeXBlICovMzsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAvKiBG
MzJUeXBlICovMjsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAvKiBJNjRUeXBl
ICovMTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiAvKiBJMzJUeXBlICovMDsK
KyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBlbGVtX3R5cGUocykgeworICB2YXIg
bWF0Y2ggPSB2c04oNywgcylbMV0gfCAwOworICBpZiAobWF0Y2ggIT09IC0xNikgeworICAgIHJl
dHVybiBlcnJvcihzLCBzWy8qIHBvcyAqLzJdWzBdIC0gMSB8IDAsICJpbnZhbGlkIGVsZW1lbnQg
dHlwZSIpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBGdW5jUmVmVHlwZSAqLzA7Cisg
IH0KK30KKworZnVuY3Rpb24gc3RhY2tfdHlwZShzKSB7CisgIHZhciBtYXRjaCA9IHBlZWsocyk7
CisgIGlmIChtYXRjaCkgeworICAgIGlmIChtYXRjaFswXSAhPT0gNjQpIHsKKyAgICAgIHJldHVy
biAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgdmFsdWVfdHlwZShzKSwKKyAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGd1YXJk
KGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgcmV0dXJuIHNraXAoMSwgcGFyYW0pOwor
ICAgICAgICAgIH0sIHMpOworICAgICAgcmV0dXJuIC8qIFtdICovMDsKKyAgICB9CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgdmFsdWVfdHlwZShzKSwK
KyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24g
ZnVuY190eXBlKHMpIHsKKyAgdmFyIG1hdGNoID0gdnNOKDcsIHMpWzFdIHwgMDsKKyAgaWYgKG1h
dGNoICE9PSAtMzIpIHsKKyAgICByZXR1cm4gZXJyb3Iocywgc1svKiBwb3MgKi8yXVswXSAtIDEg
fCAwLCAiaW52YWxpZCBmdW5jdGlvbiB0eXBlIik7CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGlu
cyA9IHZlYyh2YWx1ZV90eXBlLCBzKTsKKyAgICB2YXIgb3V0ID0gdmVjKHZhbHVlX3R5cGUsIHMp
OworICAgIHJldHVybiAvKiBGdW5jVHlwZSAqL1sKKyAgICAgICAgICAgIGlucywKKyAgICAgICAg
ICAgIG91dAorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbGltaXRzKHZ1LCBzKSB7
CisgIHZhciBoYXNfbWF4ID0gKygodnVOKDEsIHMpWzFdIHwgMCkgPT09IDEpOworICB2YXIgbWlu
ID0gQ3VycnkuXzEodnUsIHMpOworICB2YXIgbWF4ID0gb3B0KHZ1LCBoYXNfbWF4LCBzKTsKKyAg
cmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBtaW4gKi9taW4sCisgICAgICAgICAg
LyogbWF4ICovbWF4CisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRhYmxlX3R5cGUocykgewor
ICB2YXIgdCA9IGVsZW1fdHlwZShzKTsKKyAgdmFyIGxpbSA9IGxpbWl0cyh2dTMyLCBzKTsKKyAg
cmV0dXJuIC8qIFRhYmxlVHlwZSAqL1sKKyAgICAgICAgICBsaW0sCisgICAgICAgICAgdAorICAg
ICAgICBdOworfQorCitmdW5jdGlvbiBtZW1vcnlfdHlwZShzKSB7CisgIHZhciBsaW0gPSBsaW1p
dHModnUzMiwgcyk7CisgIHJldHVybiAvKiBNZW1vcnlUeXBlICovW2xpbV07Cit9CisKK2Z1bmN0
aW9uIG11dGFiaWxpdHkocykgeworICB2YXIgbWF0Y2ggPSBndWFyZChnZXQsIHMpOworICBpZiAo
bWF0Y2ggIT09IDApIHsKKyAgICBpZiAobWF0Y2ggIT09IDEpIHsKKyAgICAgIHJldHVybiBlcnJv
cihzLCBzWy8qIHBvcyAqLzJdWzBdIC0gMSB8IDAsICJpbnZhbGlkIG11dGFiaWxpdHkiKTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogTXV0YWJsZSAqLzE7CisgICAgfQorICB9
CisgIGVsc2UgeworICAgIHJldHVybiAvKiBJbW11dGFibGUgKi8wOworICB9Cit9CisKK2Z1bmN0
aW9uIGdsb2JhbF90eXBlKHMpIHsKKyAgdmFyIHQgPSB2YWx1ZV90eXBlKHMpOworICB2YXIgbXV0
ID0gbXV0YWJpbGl0eShzKTsKKyAgcmV0dXJuIC8qIEdsb2JhbFR5cGUgKi9bCisgICAgICAgICAg
dCwKKyAgICAgICAgICBtdXQKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gJCR2YXIocykgewor
ICByZXR1cm4gdnVOKDMyLCBzKVsxXSB8IDA7Cit9CisKK2Z1bmN0aW9uIG1lbW9wKHMpIHsKKyAg
dmFyIGFsaWduID0gdnVOKDMyLCBzKVsxXSB8IDA7CisgICQkcmVxdWlyZShDdXJyeS5fMihJMzIu
bGVfdSwgYWxpZ24sIDMyKSwgcywgc1svKiBwb3MgKi8yXVswXSAtIDEgfCAwLCAiaW52YWxpZCBt
ZW1vcCBmbGFncyIpOworICB2YXIgb2Zmc2V0ID0gdnVOKDMyLCBzKVsxXSB8IDA7CisgIHJldHVy
biAvKiB0dXBsZSAqL1sKKyAgICAgICAgICBhbGlnbiwKKyAgICAgICAgICBvZmZzZXQKKyAgICAg
ICAgXTsKK30KKworZnVuY3Rpb24gaW5zdHIocykgeworICB2YXIgcG9zID0gc1svKiBwb3MgKi8y
XVswXTsKKyAgdmFyIGIgPSBndWFyZChnZXQsIHMpOworICBpZiAoYiA+IDE5MSB8fCBiIDwgMCkg
eworICAgIHJldHVybiBpbGxlZ2FsKHMsIHBvcywgYik7CisgIH0KKyAgZWxzZSB7CisgICAgc3dp
dGNoIChiKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLnVu
cmVhY2hhYmxlOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5u
b3A7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICB2YXIgdHMgPSBzdGFja190eXBlKHMpOwor
ICAgICAgICAgIHZhciBlcyRwcmltZSA9IExpc3QucmV2KGluc3RyX2Jsb2NrJHByaW1lKHMsIC8q
IFtdICovMCkpOworICAgICAgICAgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0ZWQi
KTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmJsb2NrKHRzLCBlcyRwcmltZSk7CisgICAg
ICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgdHMkMSA9IHN0YWNrX3R5cGUocyk7CisgICAgICAg
ICAgdmFyIGVzJHByaW1lJDEgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAq
LzApKTsKKyAgICAgICAgICBleHBlY3QoMTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7Cisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5sb29wKHRzJDEsIGVzJHByaW1lJDEpOworICAgICAg
Y2FzZSA0IDogCisgICAgICAgICAgdmFyIHRzJDIgPSBzdGFja190eXBlKHMpOworICAgICAgICAg
IHZhciBlczEgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsKKyAg
ICAgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChwZWVrKHMpLCAvKiBTb21lICovWzVdKSkg
eworICAgICAgICAgICAgZXhwZWN0KDUsIHMsICJFTFNFIG9yIEVORCBvcGNvZGUgZXhwZWN0ZWQi
KTsKKyAgICAgICAgICAgIHZhciBlczIgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAv
KiBbXSAqLzApKTsKKyAgICAgICAgICAgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0
ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaWZfKHRzJDIsIGVzMSwgZXMyKTsK
KyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBleHBlY3QoMTEsIHMs
ICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7CisgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmlm
Xyh0cyQyLCBlczEsIC8qIFtdICovMCk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIGVycm9yKHMsIHBvcywgIm1pc3BsYWNl
ZCBFTFNFIG9wY29kZSIpOworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiBlcnJv
cihzLCBwb3MsICJtaXNwbGFjZWQgRU5EIG9wY29kZSIpOworICAgICAgY2FzZSAxMiA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuYnIoYXQoJCR2YXIsIHMpKTsKKyAgICAgIGNhc2UgMTMg
OiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmJyX2lmKGF0KCQkdmFyLCBzKSk7CisgICAg
ICBjYXNlIDE0IDogCisgICAgICAgICAgdmFyIHhzID0gdmVjKGZ1bmN0aW9uIChwYXJhbSkgewor
ICAgICAgICAgICAgICAgIHJldHVybiBhdCgkJHZhciwgcGFyYW0pOworICAgICAgICAgICAgICB9
LCBzKTsKKyAgICAgICAgICB2YXIgeCA9IGF0KCQkdmFyLCBzKTsKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmJyX3RhYmxlKHhzLCB4KTsKKyAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLiQkcmV0dXJuOworICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuY2FsbChhdCgkJHZhciwgcykpOworICAgICAgY2FzZSAxNyA6IAorICAg
ICAgICAgIHZhciB4JDEgPSBhdCgkJHZhciwgcyk7CisgICAgICAgICAgZXhwZWN0KDAsIHMsICJ6
ZXJvIGZsYWcgZXhwZWN0ZWQiKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmNhbGxfaW5k
aXJlY3QoeCQxKTsKKyAgICAgIGNhc2UgMjYgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3Jz
LmRyb3A7CisgICAgICBjYXNlIDI3IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5zZWxl
Y3Q7CisgICAgICBjYXNlIDMyIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfbG9j
YWwoYXQoJCR2YXIsIHMpKTsKKyAgICAgIGNhc2UgMzMgOiAKKyAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLnNldF9sb2NhbChhdCgkJHZhciwgcykpOworICAgICAgY2FzZSAzNCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMudGVlX2xvY2FsKGF0KCQkdmFyLCBzKSk7CisgICAgICBjYXNl
IDM1IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfZ2xvYmFsKGF0KCQkdmFyLCBz
KSk7CisgICAgICBjYXNlIDM2IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5zZXRfZ2xv
YmFsKGF0KCQkdmFyLCBzKSk7CisgICAgICBjYXNlIDYgOiAKKyAgICAgIGNhc2UgNyA6IAorICAg
ICAgY2FzZSA4IDogCisgICAgICBjYXNlIDkgOiAKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgIGNh
c2UgMTggOiAKKyAgICAgIGNhc2UgMTkgOiAKKyAgICAgIGNhc2UgMjAgOiAKKyAgICAgIGNhc2Ug
MjEgOiAKKyAgICAgIGNhc2UgMjIgOiAKKyAgICAgIGNhc2UgMjMgOiAKKyAgICAgIGNhc2UgMjQg
OiAKKyAgICAgIGNhc2UgMjUgOiAKKyAgICAgIGNhc2UgMjggOiAKKyAgICAgIGNhc2UgMjkgOiAK
KyAgICAgIGNhc2UgMzAgOiAKKyAgICAgIGNhc2UgMzEgOiAKKyAgICAgIGNhc2UgMzcgOiAKKyAg
ICAgIGNhc2UgMzggOiAKKyAgICAgIGNhc2UgMzkgOiAKKyAgICAgICAgICByZXR1cm4gaWxsZWdh
bChzLCBwb3MsIGIpOworICAgICAgY2FzZSA0MCA6IAorICAgICAgICAgIHZhciBtYXRjaCA9IG1l
bW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2xvYWQobWF0Y2hbMF0sIG1h
dGNoWzFdKTsKKyAgICAgIGNhc2UgNDEgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IG1lbW9w
KHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQobWF0Y2gkMVswXSwgbWF0
Y2gkMVsxXSk7CisgICAgICBjYXNlIDQyIDogCisgICAgICAgICAgdmFyIG1hdGNoJDIgPSBtZW1v
cChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9sb2FkKG1hdGNoJDJbMF0sIG1h
dGNoJDJbMV0pOworICAgICAgY2FzZSA0MyA6IAorICAgICAgICAgIHZhciBtYXRjaCQzID0gbWVt
b3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbG9hZChtYXRjaCQzWzBdLCBt
YXRjaCQzWzFdKTsKKyAgICAgIGNhc2UgNDQgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkNCA9IG1l
bW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2xvYWQ4X3MobWF0Y2gkNFsw
XSwgbWF0Y2gkNFsxXSk7CisgICAgICBjYXNlIDQ1IDogCisgICAgICAgICAgdmFyIG1hdGNoJDUg
PSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2FkOF91KG1hdGNo
JDVbMF0sIG1hdGNoJDVbMV0pOworICAgICAgY2FzZSA0NiA6IAorICAgICAgICAgIHZhciBtYXRj
aCQ2ID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbG9hZDE2X3Mo
bWF0Y2gkNlswXSwgbWF0Y2gkNlsxXSk7CisgICAgICBjYXNlIDQ3IDogCisgICAgICAgICAgdmFy
IG1hdGNoJDcgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2Fk
MTZfdShtYXRjaCQ3WzBdLCBtYXRjaCQ3WzFdKTsKKyAgICAgIGNhc2UgNDggOiAKKyAgICAgICAg
ICB2YXIgbWF0Y2gkOCA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0
X2xvYWQ4X3MobWF0Y2gkOFswXSwgbWF0Y2gkOFsxXSk7CisgICAgICBjYXNlIDQ5IDogCisgICAg
ICAgICAgdmFyIG1hdGNoJDkgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3Jz
Lmk2NF9sb2FkOF91KG1hdGNoJDlbMF0sIG1hdGNoJDlbMV0pOworICAgICAgY2FzZSA1MCA6IAor
ICAgICAgICAgIHZhciBtYXRjaCQxMCA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X2xvYWQxNl9zKG1hdGNoJDEwWzBdLCBtYXRjaCQxMFsxXSk7CisgICAgICBjYXNl
IDUxIDogCisgICAgICAgICAgdmFyIG1hdGNoJDExID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfbG9hZDE2X3UobWF0Y2gkMTFbMF0sIG1hdGNoJDExWzFdKTsKKyAg
ICAgIGNhc2UgNTIgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMTIgPSBtZW1vcChzKTsKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkMzJfcyhtYXRjaCQxMlswXSwgbWF0Y2gkMTJb
MV0pOworICAgICAgY2FzZSA1MyA6IAorICAgICAgICAgIHZhciBtYXRjaCQxMyA9IG1lbW9wKHMp
OworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQzMl91KG1hdGNoJDEzWzBdLCBt
YXRjaCQxM1sxXSk7CisgICAgICBjYXNlIDU0IDogCisgICAgICAgICAgdmFyIG1hdGNoJDE0ID0g
bWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmUobWF0Y2gkMTRb
MF0sIG1hdGNoJDE0WzFdKTsKKyAgICAgIGNhc2UgNTUgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gk
MTUgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdG9yZShtYXRj
aCQxNVswXSwgbWF0Y2gkMTVbMV0pOworICAgICAgY2FzZSA1NiA6IAorICAgICAgICAgIHZhciBt
YXRjaCQxNiA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3N0b3Jl
KG1hdGNoJDE2WzBdLCBtYXRjaCQxNlsxXSk7CisgICAgICBjYXNlIDU3IDogCisgICAgICAgICAg
dmFyIG1hdGNoJDE3ID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRf
c3RvcmUobWF0Y2gkMTdbMF0sIG1hdGNoJDE3WzFdKTsKKyAgICAgIGNhc2UgNTggOiAKKyAgICAg
ICAgICB2YXIgbWF0Y2gkMTggPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3Jz
LmkzMl9zdG9yZTgobWF0Y2gkMThbMF0sIG1hdGNoJDE4WzFdKTsKKyAgICAgIGNhc2UgNTkgOiAK
KyAgICAgICAgICB2YXIgbWF0Y2gkMTkgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmkzMl9zdG9yZTE2KG1hdGNoJDE5WzBdLCBtYXRjaCQxOVsxXSk7CisgICAgICBjYXNl
IDYwIDogCisgICAgICAgICAgdmFyIG1hdGNoJDIwID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfc3RvcmU4KG1hdGNoJDIwWzBdLCBtYXRjaCQyMFsxXSk7CisgICAg
ICBjYXNlIDYxIDogCisgICAgICAgICAgdmFyIG1hdGNoJDIxID0gbWVtb3Aocyk7CisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfc3RvcmUxNihtYXRjaCQyMVswXSwgbWF0Y2gkMjFbMV0p
OworICAgICAgY2FzZSA2MiA6IAorICAgICAgICAgIHZhciBtYXRjaCQyMiA9IG1lbW9wKHMpOwor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMzIobWF0Y2gkMjJbMF0sIG1hdGNo
JDIyWzFdKTsKKyAgICAgIGNhc2UgNjMgOiAKKyAgICAgICAgICBleHBlY3QoMCwgcywgInplcm8g
ZmxhZyBleHBlY3RlZCIpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuY3VycmVudF9tZW1v
cnk7CisgICAgICBjYXNlIDY0IDogCisgICAgICAgICAgZXhwZWN0KDAsIHMsICJ6ZXJvIGZsYWcg
ZXhwZWN0ZWQiKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmdyb3dfbWVtb3J5OworICAg
ICAgY2FzZSA2NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2NvbnN0KGF0KHZz
MzIsIHMpKTsKKyAgICAgIGNhc2UgNjYgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2
NF9jb25zdChhdCh2czY0LCBzKSk7CisgICAgICBjYXNlIDY3IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mMzJfY29uc3QoYXQoZjMyLCBzKSk7CisgICAgICBjYXNlIDY4IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfY29uc3QoYXQoZjY0LCBzKSk7CisgICAgICBjYXNl
IDY5IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfZXF6OworICAgICAgY2FzZSA3
MCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2VxOworICAgICAgY2FzZSA3MSA6
IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX25lOworICAgICAgY2FzZSA3MiA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2x0X3M7CisgICAgICBjYXNlIDczIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbHRfdTsKKyAgICAgIGNhc2UgNzQgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9ndF9zOworICAgICAgY2FzZSA3NSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2d0X3U7CisgICAgICBjYXNlIDc2IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbGVfczsKKyAgICAgIGNhc2UgNzcgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sZV91OworICAgICAgY2FzZSA3OCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2dlX3M7CisgICAgICBjYXNlIDc5IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfZ2VfdTsKKyAgICAgIGNhc2UgODAgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmk2NF9lcXo7CisgICAgICBjYXNlIDgxIDogCisgICAgICAgICAg
cmV0dXJuIE9wZXJhdG9ycy5pNjRfZXE7CisgICAgICBjYXNlIDgyIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfbmU7CisgICAgICBjYXNlIDgzIDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pNjRfbHRfczsKKyAgICAgIGNhc2UgODQgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmk2NF9sdF91OworICAgICAgY2FzZSA4NSA6IAorICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTY0X2d0X3M7CisgICAgICBjYXNlIDg2IDogCisgICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pNjRfZ3RfdTsKKyAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmk2NF9sZV9zOworICAgICAgY2FzZSA4OCA6IAorICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X2xlX3U7CisgICAgICBjYXNlIDg5IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pNjRfZ2VfczsKKyAgICAgIGNhc2UgOTAgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmk2NF9nZV91OworICAgICAgY2FzZSA5MSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuZjMyX2VxOworICAgICAgY2FzZSA5MiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMu
ZjMyX25lOworICAgICAgY2FzZSA5MyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMy
X2x0OworICAgICAgY2FzZSA5NCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2d0
OworICAgICAgY2FzZSA5NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2xlOwor
ICAgICAgY2FzZSA5NiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2dlOworICAg
ICAgY2FzZSA5NyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2VxOworICAgICAg
Y2FzZSA5OCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X25lOworICAgICAgY2Fz
ZSA5OSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2x0OworICAgICAgY2FzZSAx
MDAgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9ndDsKKyAgICAgIGNhc2UgMTAx
IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbGU7CisgICAgICBjYXNlIDEwMiA6
IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2dlOworICAgICAgY2FzZSAxMDMgOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9jbHo7CisgICAgICBjYXNlIDEwNCA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2N0ejsKKyAgICAgIGNhc2UgMTA1IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfcG9wY250OworICAgICAgY2FzZSAxMDYgOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9hZGQ7CisgICAgICBjYXNlIDEwNyA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3N1YjsKKyAgICAgIGNhc2UgMTA4IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbXVsOworICAgICAgY2FzZSAxMDkgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9kaXZfczsKKyAgICAgIGNhc2UgMTEwIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfZGl2X3U7CisgICAgICBjYXNlIDExMSA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3JlbV9zOworICAgICAgY2FzZSAxMTIgOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9yZW1fdTsKKyAgICAgIGNhc2UgMTEzIDog
CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfYW5kOworICAgICAgY2FzZSAxMTQgOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9vcjsKKyAgICAgIGNhc2UgMTE1IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfeG9yOworICAgICAgY2FzZSAxMTYgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zaGw7CisgICAgICBjYXNlIDExNyA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3Nocl9zOworICAgICAgY2FzZSAxMTggOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zaHJfdTsKKyAgICAgIGNhc2UgMTE5IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfcm90bDsKKyAgICAgIGNhc2UgMTIwIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfcm90cjsKKyAgICAgIGNhc2UgMTIxIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfY2x6OworICAgICAgY2FzZSAxMjIgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9jdHo7CisgICAgICBjYXNlIDEyMyA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3BvcGNudDsKKyAgICAgIGNhc2UgMTI0IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfYWRkOworICAgICAgY2FzZSAxMjUgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdWI7CisgICAgICBjYXNlIDEyNiA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X211bDsKKyAgICAgIGNhc2UgMTI3IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfZGl2X3M7CisgICAgICBjYXNlIDEyOCA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2Rpdl91OworICAgICAgY2FzZSAxMjkgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9yZW1fczsKKyAgICAgIGNhc2UgMTMwIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfcmVtX3U7CisgICAgICBjYXNlIDEzMSA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2FuZDsKKyAgICAgIGNhc2UgMTMyIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfb3I7CisgICAgICBjYXNlIDEzMyA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3hvcjsKKyAgICAgIGNhc2UgMTM0IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfc2hsOworICAgICAgY2FzZSAxMzUgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zaHJfczsKKyAgICAgIGNhc2UgMTM2IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfc2hyX3U7CisgICAgICBjYXNlIDEzNyA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3JvdGw7CisgICAgICBjYXNlIDEzOCA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3JvdHI7CisgICAgICBjYXNlIDEzOSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2FiczsKKyAgICAgIGNhc2UgMTQwIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfbmVnOworICAgICAgY2FzZSAxNDEgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9jZWlsOworICAgICAgY2FzZSAxNDIgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9mbG9vcjsKKyAgICAgIGNhc2UgMTQzIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfdHJ1bmM7CisgICAgICBjYXNlIDE0NCA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX25lYXJlc3Q7CisgICAgICBjYXNlIDE0NSA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3NxcnQ7CisgICAgICBjYXNlIDE0NiA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2FkZDsKKyAgICAgIGNhc2UgMTQ3IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfc3ViOworICAgICAgY2FzZSAxNDggOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9tdWw7CisgICAgICBjYXNlIDE0OSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2RpdjsKKyAgICAgIGNhc2UgMTUwIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfbWluOworICAgICAgY2FzZSAxNTEgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9tYXg7CisgICAgICBjYXNlIDE1MiA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2NvcHlzaWduOworICAgICAgY2FzZSAxNTMgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9hYnM7CisgICAgICBjYXNlIDE1NCA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X25lZzsKKyAgICAgIGNhc2UgMTU1IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfY2VpbDsKKyAgICAgIGNhc2UgMTU2IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfZmxvb3I7CisgICAgICBjYXNlIDE1NyA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X3RydW5jOworICAgICAgY2FzZSAxNTggOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9uZWFyZXN0OworICAgICAgY2FzZSAxNTkgOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9zcXJ0OworICAgICAgY2FzZSAxNjAgOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9hZGQ7CisgICAgICBjYXNlIDE2MSA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X3N1YjsKKyAgICAgIGNhc2UgMTYyIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbXVsOworICAgICAgY2FzZSAxNjMgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9kaXY7CisgICAgICBjYXNlIDE2NCA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X21pbjsKKyAgICAgIGNhc2UgMTY1IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbWF4OworICAgICAgY2FzZSAxNjYgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9jb3B5c2lnbjsKKyAgICAgIGNhc2UgMTY3IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfd3JhcF9pNjQ7CisgICAgICBjYXNlIDE2OCA6
IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3RydW5jX3NfZjMyOworICAgICAgY2Fz
ZSAxNjkgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl90cnVuY191X2YzMjsKKyAg
ICAgIGNhc2UgMTcwIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfdHJ1bmNfc19m
NjQ7CisgICAgICBjYXNlIDE3MSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3Ry
dW5jX3VfZjY0OworICAgICAgY2FzZSAxNzIgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3Jz
Lmk2NF9leHRlbmRfc19pMzI7CisgICAgICBjYXNlIDE3MyA6IAorICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTY0X2V4dGVuZF91X2kzMjsKKyAgICAgIGNhc2UgMTc0IDogCisgICAgICAgICAg
cmV0dXJuIE9wZXJhdG9ycy5pNjRfdHJ1bmNfc19mMzI7CisgICAgICBjYXNlIDE3NSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3RydW5jX3VfZjMyOworICAgICAgY2FzZSAxNzYg
OiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF90cnVuY19zX2Y2NDsKKyAgICAgIGNh
c2UgMTc3IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfdHJ1bmNfdV9mNjQ7Cisg
ICAgICBjYXNlIDE3OCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2NvbnZlcnRf
c19pMzI7CisgICAgICBjYXNlIDE3OSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMy
X2NvbnZlcnRfdV9pMzI7CisgICAgICBjYXNlIDE4MCA6IAorICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuZjMyX2NvbnZlcnRfc19pNjQ7CisgICAgICBjYXNlIDE4MSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfdV9pNjQ7CisgICAgICBjYXNlIDE4MiA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2RlbW90ZV9mNjQ7CisgICAgICBjYXNlIDE4MyA6
IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pMzI7CisgICAgICBj
YXNlIDE4NCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfdV9pMzI7
CisgICAgICBjYXNlIDE4NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZl
cnRfc19pNjQ7CisgICAgICBjYXNlIDE4NiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMu
ZjY0X2NvbnZlcnRfdV9pNjQ7CisgICAgICBjYXNlIDE4NyA6IAorICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuZjY0X3Byb21vdGVfZjMyOworICAgICAgY2FzZSAxODggOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmkzMl9yZWludGVycHJldF9mMzI7CisgICAgICBjYXNlIDE4OSA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3JlaW50ZXJwcmV0X2Y2NDsKKyAgICAgIGNh
c2UgMTkwIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfcmVpbnRlcnByZXRfaTMy
OworICAgICAgY2FzZSAxOTEgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9yZWlu
dGVycHJldF9pNjQ7CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gaW5zdHJfYmxv
Y2skcHJpbWUocywgX2VzKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgZXMgPSBfZXM7Cisg
ICAgdmFyIG1hdGNoID0gcGVlayhzKTsKKyAgICBpZiAobWF0Y2gpIHsKKyAgICAgIHZhciBtYXRj
aCQxID0gbWF0Y2hbMF07CisgICAgICBpZiAobWF0Y2gkMSAhPT0gNSkgeworICAgICAgICBpZiAo
bWF0Y2gkMSAhPT0gMTEpIHsKKyAgICAgICAgICB2YXIgcG9zID0gc1svKiBwb3MgKi8yXVswXTsK
KyAgICAgICAgICB2YXIgZSRwcmltZSA9IGluc3RyKHMpOworICAgICAgICAgIF9lcyA9IC8qIDo6
ICovWworICAgICAgICAgICAgU291cmNlLiRhdCRhdChlJHByaW1lLCByZWdpb24ocywgcG9zLCBw
b3MpKSwKKyAgICAgICAgICAgIGVzCisgICAgICAgICAgXTsKKyAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJu
IGVzOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGVz
OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBlczsKKyAgICB9Cisg
IH07Cit9CisKK2Z1bmN0aW9uIGluc3RyX2Jsb2NrKHMpIHsKKyAgcmV0dXJuIExpc3QucmV2KGlu
c3RyX2Jsb2NrJHByaW1lKHMsIC8qIFtdICovMCkpOworfQorCitmdW5jdGlvbiAkJGNvbnN0KHMp
IHsKKyAgdmFyIGMgPSBhdChpbnN0cl9ibG9jaywgcyk7CisgIGV4cGVjdCgxMSwgcywgIkVORCBv
cGNvZGUgZXhwZWN0ZWQiKTsKKyAgcmV0dXJuIGM7Cit9CisKK2Z1bmN0aW9uIGlkKHMpIHsKKyAg
dmFyIGJvID0gcGVlayhzKTsKKyAgcmV0dXJuIEN1cnJ5Ll8yKExpYi5PcHRpb25bLyogbWFwICov
MV0sIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICBpZiAocGFyYW0gPiAxMSB8fCBw
YXJhbSA8IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Iocywgc1svKiBwb3MgKi8y
XVswXSwgImludmFsaWQgc2VjdGlvbiBpZCIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHN3aXRjaCAocGFyYW0pIHsKKyAgICAgICAgICAg
ICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBDdXN0b21T
ZWN0aW9uICovLTgwODAxMDIyMDsKKyAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAvKiBUeXBlU2VjdGlvbiAqLzgzNjUwMTAzNTsKKyAgICAg
ICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBJ
bXBvcnRTZWN0aW9uICovNjk2NTE3MzQ0OworICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZ1bmNTZWN0aW9uICovMjA1NTU2NDQ5Owor
ICAgICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIFRhYmxlU2VjdGlvbiAqLzEwMzE4NjQyMTU7CisgICAgICAgICAgICAgICAgICBjYXNlIDUg
OiAKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTWVtb3J5U2VjdGlvbiAqLy04NDAy
MDMwNjg7CisgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogR2xvYmFsU2VjdGlvbiAqLy04NzIzMTMxODI7CisgICAgICAgICAgICAgICAg
ICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRXhwb3J0U2VjdGlv
biAqLy00NDA2Nzk3NTk7CisgICAgICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogU3RhcnRTZWN0aW9uICovMzk1NzIwMTMxOworICAgICAgICAg
ICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEVsZW1T
ZWN0aW9uICovNDQwMzgwNjYyOworICAgICAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAvKiBDb2RlU2VjdGlvbiAqLzEwMjExMzM4NDg7CisgICAg
ICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IERhdGFTZWN0aW9uICovNjY0NDc1NDc7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIGJvKTsKK30KKworZnVuY3Rp
b24gc2VjdGlvbl93aXRoX3NpemUodGFnLCBmLCAkJGRlZmF1bHQsIHMpIHsKKyAgdmFyIG1hdGNo
ID0gaWQocyk7CisgIGlmIChtYXRjaCAmJiBDYW1sX29iai5jYW1sX2VxdWFsKG1hdGNoWzBdLCB0
YWcpKSB7CisgICAgZ3VhcmQoZ2V0LCBzKTsKKyAgICByZXR1cm4gc2l6ZWQoZiwgcyk7CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuICQkZGVmYXVsdDsKKyAgfQorfQorCitmdW5jdGlvbiBzZWN0
aW9uKHRhZywgZiwgJCRkZWZhdWx0LCBzKSB7CisgIHJldHVybiBzZWN0aW9uX3dpdGhfc2l6ZSh0
YWcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGY7CisgICAgICAgICAgICB9
LCAkJGRlZmF1bHQsIHMpOworfQorCitmdW5jdGlvbiB0eXBlX3NlY3Rpb24ocykgeworICByZXR1
cm4gc2VjdGlvbigvKiBUeXBlU2VjdGlvbiAqLzgzNjUwMTAzNSwgZnVuY3Rpb24gKHBhcmFtKSB7
CisgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY190eXBlLCBwYXJhbSk7CisgICAgICAgICAg
ICB9LCAvKiBbXSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBpbXBvcnRfa2luZChzKSB7CisgIHZh
ciBtYXRjaCA9IGd1YXJkKGdldCwgcyk7CisgIGlmIChtYXRjaCA+IDMgfHwgbWF0Y2ggPCAwKSB7
CisgICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwgImludmFsaWQg
aW1wb3J0IGtpbmQiKTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAg
ICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gLyogRnVuY0ltcG9ydCAqL0Jsb2NrLl9fKDAs
IFthdCgkJHZhciwgcyldKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAvKiBU
YWJsZUltcG9ydCAqL0Jsb2NrLl9fKDEsIFt0YWJsZV90eXBlKHMpXSk7CisgICAgICBjYXNlIDIg
OiAKKyAgICAgICAgICByZXR1cm4gLyogTWVtb3J5SW1wb3J0ICovQmxvY2suX18oMiwgW21lbW9y
eV90eXBlKHMpXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogR2xvYmFs
SW1wb3J0ICovQmxvY2suX18oMywgW2dsb2JhbF90eXBlKHMpXSk7CisgICAgICAKKyAgICB9Cisg
IH0KK30KKworZnVuY3Rpb24gJCRpbXBvcnQocykgeworICB2YXIgbW9kdWxlX25hbWUgPSBzdHJp
bmcocyk7CisgIHZhciBpdGVtX25hbWUgPSBzdHJpbmcocyk7CisgIHZhciBpa2luZCA9IGF0KGlt
cG9ydF9raW5kLCBzKTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBtb2R1
bGVfbmFtZSAqL21vZHVsZV9uYW1lLAorICAgICAgICAgIC8qIGl0ZW1fbmFtZSAqL2l0ZW1fbmFt
ZSwKKyAgICAgICAgICAvKiBpa2luZCAqL2lraW5kCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9u
IGltcG9ydF9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb24oLyogSW1wb3J0U2VjdGlvbiAq
LzY5NjUxNzM0NCwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiB2ZWMo
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdCgk
JGltcG9ydCwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAg
ICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKworZnVuY3Rpb24gZnVuY19zZWN0aW9uKHMp
IHsKKyAgcmV0dXJuIHNlY3Rpb24oLyogRnVuY1NlY3Rpb24gKi8yMDU1NTY0NDksIGZ1bmN0aW9u
IChwYXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXQoJCR2YXIsIHBhcmFtKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAgICAgIH0sIC8qIFtdICovMCwg
cyk7Cit9CisKK2Z1bmN0aW9uIHRhYmxlKHMpIHsKKyAgdmFyIHR0eXBlID0gdGFibGVfdHlwZShz
KTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1svKiB0dHlwZSAqL3R0eXBlXTsKK30KKworZnVuY3Rp
b24gdGFibGVfc2VjdGlvbihzKSB7CisgIHJldHVybiBzZWN0aW9uKC8qIFRhYmxlU2VjdGlvbiAq
LzEwMzE4NjQyMTUsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4gdmVj
KGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXQo
dGFibGUsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAg
ICAgICAgIH0sIC8qIFtdICovMCwgcyk7Cit9CisKK2Z1bmN0aW9uIG1lbW9yeShzKSB7CisgIHZh
ciBtdHlwZSA9IG1lbW9yeV90eXBlKHMpOworICByZXR1cm4gLyogcmVjb3JkICovWy8qIG10eXBl
ICovbXR5cGVdOworfQorCitmdW5jdGlvbiBtZW1vcnlfc2VjdGlvbihzKSB7CisgIHJldHVybiBz
ZWN0aW9uKC8qIE1lbW9yeVNlY3Rpb24gKi8tODQwMjAzMDY4LCBmdW5jdGlvbiAocGFyYW0pIHsK
KyAgICAgICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGF0KG1lbW9yeSwgcGFyYW0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKwor
ZnVuY3Rpb24gZ2xvYmFsKHMpIHsKKyAgdmFyIGd0eXBlID0gZ2xvYmFsX3R5cGUocyk7CisgIHZh
ciB2YWx1ZSA9ICQkY29uc3Qocyk7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAg
LyogZ3R5cGUgKi9ndHlwZSwKKyAgICAgICAgICAvKiB2YWx1ZSAqL3ZhbHVlCisgICAgICAgIF07
Cit9CisKK2Z1bmN0aW9uIGdsb2JhbF9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb24oLyog
R2xvYmFsU2VjdGlvbiAqLy04NzIzMTMxODIsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAg
ICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYXQoZ2xvYmFsLCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
LCBwYXJhbSk7CisgICAgICAgICAgICB9LCAvKiBbXSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBl
eHBvcnRfa2luZChzKSB7CisgIHZhciBtYXRjaCA9IGd1YXJkKGdldCwgcyk7CisgIGlmIChtYXRj
aCA+IDMgfHwgbWF0Y2ggPCAwKSB7CisgICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1b
MF0gLSAxIHwgMCwgImludmFsaWQgZXhwb3J0IGtpbmQiKTsKKyAgfQorICBlbHNlIHsKKyAgICBz
d2l0Y2ggKG1hdGNoKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gLyogRnVu
Y0V4cG9ydCAqLzA7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogVGFibGVF
eHBvcnQgKi8xOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIC8qIE1lbW9yeUV4
cG9ydCAqLzI7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogR2xvYmFsRXhw
b3J0ICovMzsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiAkJGV4cG9ydChzKSB7
CisgIHZhciBuYW1lID0gc3RyaW5nKHMpOworICB2YXIgZWtpbmQgPSBhdChleHBvcnRfa2luZCwg
cyk7CisgIHZhciBpdGVtID0gYXQoJCR2YXIsIHMpOworICByZXR1cm4gLyogcmVjb3JkICovWwor
ICAgICAgICAgIC8qIG5hbWUgKi9uYW1lLAorICAgICAgICAgIC8qIGVraW5kICovZWtpbmQsCisg
ICAgICAgICAgLyogaXRlbSAqL2l0ZW0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZXhwb3J0
X3NlY3Rpb24ocykgeworICByZXR1cm4gc2VjdGlvbigvKiBFeHBvcnRTZWN0aW9uICovLTQ0MDY3
OTc1OSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdCgkJGV4cG9y
dCwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAg
ICAgfSwgLyogW10gKi8wLCBzKTsKK30KKworZnVuY3Rpb24gc3RhcnRfc2VjdGlvbihzKSB7Cisg
IHJldHVybiBzZWN0aW9uKC8qIFN0YXJ0U2VjdGlvbiAqLzM5NTcyMDEzMSwgZnVuY3Rpb24gKHBh
cmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiBTb21lICovW2F0KCQkdmFyLCBwYXJhbSld
OworICAgICAgICAgICAgfSwgLyogTm9uZSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBsb2NhbChz
KSB7CisgIHZhciBuID0gbGVuMzIocyk7CisgIHZhciB0ID0gdmFsdWVfdHlwZShzKTsKKyAgcmV0
dXJuIEN1cnJ5Ll8yKExpYi5MaXN0Wy8qIG1ha2UgKi8wXSwgbiwgdCk7Cit9CisKK2Z1bmN0aW9u
IGNvZGUoXywgcykgeworICB2YXIgbG9jYWxzID0gTGlzdC5mbGF0dGVuKHZlYyhsb2NhbCwgcykp
OworICB2YXIgYm9keSA9IExpc3QucmV2KGluc3RyX2Jsb2NrJHByaW1lKHMsIC8qIFtdICovMCkp
OworICBleHBlY3QoMTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7CisgIHJldHVybiAvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgLyogZnR5cGUgKi9Tb3VyY2UuJGF0JGF0KC0xLCBTb3VyY2Uu
bm9fcmVnaW9uKSwKKyAgICAgICAgICAvKiBsb2NhbHMgKi9sb2NhbHMsCisgICAgICAgICAgLyog
Ym9keSAqL2JvZHkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gY29kZV9zZWN0aW9uKHMpIHsK
KyAgcmV0dXJuIHNlY3Rpb24oLyogQ29kZVNlY3Rpb24gKi8xMDIxMTMzODQ4LCBmdW5jdGlvbiAo
cGFyYW0pIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0KGZ1bmN0aW9uIChwYXJhbSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZWQoY29kZSwgcGFy
YW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8w
LCBzKTsKK30KKworZnVuY3Rpb24gc2VnbWVudChkYXQsIHMpIHsKKyAgdmFyIGluZGV4ID0gYXQo
JCR2YXIsIHMpOworICB2YXIgb2Zmc2V0ID0gJCRjb25zdChzKTsKKyAgdmFyIGluaXQgPSBDdXJy
eS5fMShkYXQsIHMpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGluZGV4
ICovaW5kZXgsCisgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgIC8qIGlu
aXQgKi9pbml0CisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRhYmxlX3NlZ21lbnQocykgewor
ICByZXR1cm4gc2VnbWVudChmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgcmV0dXJu
IHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGF0KCQkdmFyLCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbSk7Cisg
ICAgICAgICAgICB9LCBzKTsKK30KKworZnVuY3Rpb24gZWxlbV9zZWN0aW9uKHMpIHsKKyAgcmV0
dXJuIHNlY3Rpb24oLyogRWxlbVNlY3Rpb24gKi80NDAzODA2NjIsIGZ1bmN0aW9uIChwYXJhbSkg
eworICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gYXQodGFibGVfc2VnbWVudCwgcGFyYW0pOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBz
KTsKK30KKworZnVuY3Rpb24gbWVtb3J5X3NlZ21lbnQocykgeworICByZXR1cm4gc2VnbWVudChz
dHJpbmcsIHMpOworfQorCitmdW5jdGlvbiBkYXRhX3NlY3Rpb24ocykgeworICByZXR1cm4gc2Vj
dGlvbigvKiBEYXRhU2VjdGlvbiAqLzY2NDQ3NTQ3LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAg
ICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGF0KG1lbW9yeV9zZWdtZW50LCBwYXJhbSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9LCBwYXJhbSk7CisgICAgICAgICAgICB9LCAvKiBbXSAqLzAsIHMpOworfQor
CitmdW5jdGlvbiBjdXN0b20oc2l6ZSwgcykgeworICB2YXIgc3RhcnQgPSBzWy8qIHBvcyAqLzJd
WzBdOworICBzdHJpbmcocyk7CisgIHZhciBwYXJ0aWFsX2FyZyA9IHNpemUgLSAoc1svKiBwb3Mg
Ki8yXVswXSAtIHN0YXJ0IHwgMCkgfCAwOworICB2YXIgcGFydGlhbF9hcmckMSA9IGZ1bmN0aW9u
IChwYXJhbSkgeworICAgIHJldHVybiBza2lwKHBhcnRpYWxfYXJnLCBwYXJhbSk7CisgIH07Cisg
IChmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgcmV0dXJuIGd1YXJkKHBhcnRpYWxfYXJnJDEs
IHBhcmFtKTsKKyAgICAgIH0ocykpOworICByZXR1cm4gLyogdHJ1ZSAqLzE7Cit9CisKK2Z1bmN0
aW9uIGN1c3RvbV9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb25fd2l0aF9zaXplKC8qIEN1
c3RvbVNlY3Rpb24gKi8tODA4MDEwMjIwLCBjdXN0b20sIC8qIGZhbHNlICovMCwgcyk7Cit9CisK
K2Z1bmN0aW9uIGl0ZXJhdGUoZiwgcykgeworICB3aGlsZSh0cnVlKSB7CisgICAgaWYgKEN1cnJ5
Ll8xKGYsIHMpKSB7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1vZHVsZV8ocykg
eworICB2YXIgbWFnaWMgPSB1MzIocyk7CisgICQkcmVxdWlyZSgrKG1hZ2ljID09PSAxODM2Mjc4
MDE2KSwgcywgMCwgIm1hZ2ljIGhlYWRlciBub3QgZGV0ZWN0ZWQiKTsKKyAgdmFyIHZlcnNpb24g
PSB1MzIocyk7CisgICQkcmVxdWlyZSgrKHZlcnNpb24gPT09IEVuY29kZS52ZXJzaW9uKSwgcywg
NCwgInVua25vd24gYmluYXJ5IHZlcnNpb24iKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwg
cyk7CisgIHZhciB0eXBlcyA9IHR5cGVfc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0b21fc2Vj
dGlvbiwgcyk7CisgIHZhciBpbXBvcnRzID0gaW1wb3J0X3NlY3Rpb24ocyk7CisgIGl0ZXJhdGUo
Y3VzdG9tX3NlY3Rpb24sIHMpOworICB2YXIgZnVuY190eXBlcyA9IGZ1bmNfc2VjdGlvbihzKTsK
KyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciB0YWJsZXMgPSB0YWJsZV9zZWN0
aW9uKHMpOworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKKyAgdmFyIG1lbW9yaWVzID0g
bWVtb3J5X3NlY3Rpb24ocyk7CisgIGl0ZXJhdGUoY3VzdG9tX3NlY3Rpb24sIHMpOworICB2YXIg
Z2xvYmFscyA9IGdsb2JhbF9zZWN0aW9uKHMpOworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBz
KTsKKyAgdmFyICQkZXhwb3J0cyA9IGV4cG9ydF9zZWN0aW9uKHMpOworICBpdGVyYXRlKGN1c3Rv
bV9zZWN0aW9uLCBzKTsKKyAgdmFyIHN0YXJ0ID0gc3RhcnRfc2VjdGlvbihzKTsKKyAgaXRlcmF0
ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciBlbGVtcyA9IGVsZW1fc2VjdGlvbihzKTsKKyAg
aXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciBmdW5jX2JvZGllcyA9IGNvZGVfc2Vj
dGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciBkYXRhID0gZGF0
YV9zZWN0aW9uKHMpOworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKKyAgJCRyZXF1aXJl
KCsoc1svKiBwb3MgKi8yXVswXSA9PT0gc1svKiBieXRlcyAqLzFdLmxlbmd0aCksIHMsIHNbLyog
Ynl0ZXMgKi8xXS5sZW5ndGgsICJqdW5rIGFmdGVyIGxhc3Qgc2VjdGlvbiIpOworICAkJHJlcXVp
cmUoKyhMaXN0Lmxlbmd0aChmdW5jX3R5cGVzKSA9PT0gTGlzdC5sZW5ndGgoZnVuY19ib2RpZXMp
KSwgcywgc1svKiBieXRlcyAqLzFdLmxlbmd0aCwgImZ1bmN0aW9uIGFuZCBjb2RlIHNlY3Rpb24g
aGF2ZSBpbmNvbnNpc3RlbnQgbGVuZ3RocyIpOworICB2YXIgZnVuY3MgPSBMaXN0Lm1hcDIoZnVu
Y3Rpb24gKHQsIGYpIHsKKyAgICAgICAgdmFyIGluaXQgPSBmWy8qIGl0ICovMV07CisgICAgICAg
IHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAg
LyogZnR5cGUgKi90LAorICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxv
Y2FscyAqLzFdLAorICAgICAgICAgICAgICAgICAgICAvKiBib2R5ICovaW5pdFsvKiBib2R5ICov
Ml0KKyAgICAgICAgICAgICAgICAgIF0sIGZbLyogYXQgKi8wXSk7CisgICAgICB9LCBmdW5jX3R5
cGVzLCBmdW5jX2JvZGllcyk7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyog
dHlwZXMgKi90eXBlcywKKyAgICAgICAgICAvKiBnbG9iYWxzICovZ2xvYmFscywKKyAgICAgICAg
ICAvKiB0YWJsZXMgKi90YWJsZXMsCisgICAgICAgICAgLyogbWVtb3JpZXMgKi9tZW1vcmllcywK
KyAgICAgICAgICAvKiBmdW5jcyAqL2Z1bmNzLAorICAgICAgICAgIC8qIHN0YXJ0ICovc3RhcnQs
CisgICAgICAgICAgLyogZWxlbXMgKi9lbGVtcywKKyAgICAgICAgICAvKiBkYXRhICovZGF0YSwK
KyAgICAgICAgICAvKiBpbXBvcnRzICovaW1wb3J0cywKKyAgICAgICAgICAvKiBleHBvcnRzICov
JCRleHBvcnRzCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGRlY29kZShuYW1lLCBicykgewor
ICByZXR1cm4gYXQobW9kdWxlXywgc3RyZWFtKG5hbWUsIGJzKSk7Cit9CisKK2V4cG9ydHMuQ29k
ZSAgID0gQ29kZSQxOworZXhwb3J0cy5kZWNvZGUgPSBkZWNvZGU7CisvKiBDb2RlIE5vdCBhIHB1
cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgZGVjb2RlLmpzIC8vLy8vLy8vCivCoCDCoCBy
ZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2VuY29kZSddID0gZnVuY3Rp
b24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgZW5jb2Rl
LmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMg
LCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEYzMiAgICAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9mMzIiKTsKK3ZhciBGNjQgICAgICAgICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vZjY0Iik7Cit2YXIgTGliICAgICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL2xpYiIpOwordmFyIENoYXIgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2NoYXIiKTsKK3ZhciBMaXN0ICAgICAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQnl0ZXMgICAgICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYnl0ZXMiKTsKK3ZhciBDdXJy
eSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIp
OwordmFyICQkRXJyb3IgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9lcnJvciIpOwordmFy
IEJ1ZmZlciAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2J1
ZmZlciIpOwordmFyIFNvdXJjZSAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zb3VyY2Ui
KTsKK3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xp
Yi9qcy9jYW1sX29iaiIpOwordmFyIENhbWxfaW50NjQgICAgICAgICAgICAgID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfaW50NjQiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cyIpOworCit2YXIgQ29kZSA9ICQkRXJyb3IuTWFrZSgvKiBtb2R1bGUgKi9bXSk7CisKK3ZhciBD
b2RlJDEgPSBDb2RlWy8qIEVycm9yICovMF07CisKK2Z1bmN0aW9uIHN0cmVhbSgpIHsKKyAgcmV0
dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBidWYgKi9CdWZmZXIuY3JlYXRlKDgxOTIp
LAorICAgICAgICAgIC8qIHBhdGNoZXMgKi9bLyogW10gKi8wXQorICAgICAgICBdOworfQorCitm
dW5jdGlvbiBwYXRjaChzLCBwb3MsIGIpIHsKKyAgc1svKiBwYXRjaGVzICovMV1bMF0gPSAvKiA6
OiAqL1sKKyAgICAvKiB0dXBsZSAqL1sKKyAgICAgIHBvcywKKyAgICAgIGIKKyAgICBdLAorICAg
IHNbLyogcGF0Y2hlcyAqLzFdWzBdCisgIF07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1
bmN0aW9uIGVuY29kZShtKSB7CisgIHZhciBzID0gc3RyZWFtKC8qICgpICovMCk7CisgIHZhciB1
OCA9IGZ1bmN0aW9uIChpKSB7CisgICAgdmFyIGIgPSBDaGFyLmNocihpICYgMjU1KTsKKyAgICBy
ZXR1cm4gQnVmZmVyLmFkZF9jaGFyKHNbLyogYnVmICovMF0sIGIpOworICB9OworICB2YXIgdTE2
ID0gZnVuY3Rpb24gKGkpIHsKKyAgICB1OChpICYgMjU1KTsKKyAgICByZXR1cm4gdTgoKGkgPj4+
IDgpKTsKKyAgfTsKKyAgdmFyIHUzMiA9IGZ1bmN0aW9uIChpKSB7CisgICAgdTE2KGkgJiA2NTUz
NSk7CisgICAgcmV0dXJuIHUxNigoaSA+PiAxNikpOworICB9OworICB2YXIgdnU2NCA9IGZ1bmN0
aW9uIChfaSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBpID0gX2k7CisgICAgICB2
YXIgYiA9IGlbMV0gJiAvKiBsbyAqLzEyNyB8IDA7CisgICAgICBpZiAoQ2FtbF9pbnQ2NC5sZSgv
KiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAvKiBs
byAqLzAKKyAgICAgICAgICAgIF0sIGkpICYmIENhbWxfaW50NjQubHQoaSwgLyogaW50NjQgKi9b
CisgICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgLyogbG8gKi8xMjgKKyAg
ICAgICAgICAgIF0pKSB7CisgICAgICAgIHJldHVybiB1OChiKTsKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICB1OChiIHwgMTI4KTsKKyAgICAgICAgX2kgPSBDYW1sX2ludDY0Lmxzcl8o
aSwgNyk7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfTsKKyAg
fTsKKyAgdmFyIHZzNjQgPSBmdW5jdGlvbiAoX2kpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAg
ICB2YXIgaSA9IF9pOworICAgICAgdmFyIGIgPSBpWzFdICYgLyogbG8gKi8xMjcgfCAwOworICAg
ICAgaWYgKENhbWxfaW50NjQubGUoLyogaW50NjQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICov
LTEsCisgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzIzMgorICAgICAgICAgICAgXSwgaSkg
JiYgQ2FtbF9pbnQ2NC5sdChpLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8w
LAorICAgICAgICAgICAgICAvKiBsbyAqLzY0CisgICAgICAgICAgICBdKSkgeworICAgICAgICBy
ZXR1cm4gdTgoYik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdTgoYiB8IDEyOCk7
CisgICAgICAgIF9pID0gQ2FtbF9pbnQ2NC5hc3JfKGksIDcpOworICAgICAgICBjb250aW51ZSA7
CisgICAgICAgIAorICAgICAgfQorICAgIH07CisgIH07CisgIHZhciB2dTMyID0gZnVuY3Rpb24g
KGkpIHsKKyAgICByZXR1cm4gdnU2NChDYW1sX2ludDY0LmFuZF8oQ2FtbF9pbnQ2NC5vZl9pbnQz
MihpKSwgLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAg
ICAgICAgICAgICAgICAgLyogbG8gKi80Mjk0OTY3Mjk1CisgICAgICAgICAgICAgICAgICBdKSk7
CisgIH07CisgIHZhciBsZW4gPSBmdW5jdGlvbiAoaSkgeworICAgIGlmIChpICE9PSBpKSB7Cisg
ICAgICBDdXJyeS5fMihDb2RlWy8qIGVycm9yICovMl0sIFNvdXJjZS5ub19yZWdpb24sICJjYW5u
b3QgZW5jb2RlIGxlbmd0aCB3aXRoIG1vcmUgdGhhbiAzMiBiaXQiKTsKKyAgICB9CisgICAgcmV0
dXJuIHZ1MzIoaSk7CisgIH07CisgIHZhciBib29sID0gZnVuY3Rpb24gKGIpIHsKKyAgICB2YXIg
aSA9IGIgPyAxIDogMDsKKyAgICByZXR1cm4gdnU2NChDYW1sX2ludDY0LmFuZF8oQ2FtbF9pbnQ2
NC5vZl9pbnQzMihpKSwgLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIGhpICov
MCwKKyAgICAgICAgICAgICAgICAgICAgLyogbG8gKi8xCisgICAgICAgICAgICAgICAgICBdKSk7
CisgIH07CisgIHZhciBzdHJpbmcgPSBmdW5jdGlvbiAoYnMpIHsKKyAgICBsZW4oYnMubGVuZ3Ro
KTsKKyAgICByZXR1cm4gQnVmZmVyLmFkZF9zdHJpbmcoc1svKiBidWYgKi8wXSwgYnMpOworICB9
OworICB2YXIgdmVjID0gZnVuY3Rpb24gKGYsIHhzKSB7CisgICAgbGVuKExpc3QubGVuZ3RoKHhz
KSk7CisgICAgcmV0dXJuIExpc3QuaXRlcihmLCB4cyk7CisgIH07CisgIHZhciBnYXAzMiA9IGZ1
bmN0aW9uICgpIHsKKyAgICB2YXIgcCA9IEJ1ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSk7Cisg
ICAgdTMyKDApOworICAgIHU4KDApOworICAgIHJldHVybiBwOworICB9OworICB2YXIgcGF0Y2hf
Z2FwMzIgPSBmdW5jdGlvbiAocCwgbikgeworICAgIGlmIChuID4gMjY4NDM1NDU1KSB7CisgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFp
bHVyZSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hv
bWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2Rl
Lm1sIiwKKyAgICAgICAgICAgICAgODAsCisgICAgICAgICAgICAgIDYKKyAgICAgICAgICAgIF0K
KyAgICAgICAgICBdOworICAgIH0KKyAgICBwYXRjaChzLCBwLCBDaGFyLmNocigobiB8IDEyOCkg
JiAyNTUpKTsKKyAgICBwYXRjaChzLCBwICsgMSB8IDAsIENoYXIuY2hyKCgobiA+Pj4gNykgfCAx
MjgpICYgMjU1KSk7CisgICAgcGF0Y2gocywgcCArIDIgfCAwLCBDaGFyLmNocigoKG4gPj4+IDE0
KSB8IDEyOCkgJiAyNTUpKTsKKyAgICBwYXRjaChzLCBwICsgMyB8IDAsIENoYXIuY2hyKCgobiA+
Pj4gMjEpIHwgMTI4KSAmIDI1NSkpOworICAgIHJldHVybiBwYXRjaChzLCBwICsgNCB8IDAsIENo
YXIuY2hyKChuID4+PiAyOCkgJiAyNTUpKTsKKyAgfTsKKyAgdmFyIHZhbHVlX3R5cGUgPSBmdW5j
dGlvbiAocGFyYW0pIHsKKyAgICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgICBjYXNlIDAgOiAKKyAg
ICAgICAgICByZXR1cm4gdnM2NCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAv
KiBoaSAqLy0xLAorICAgICAgICAgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI5NQorICAg
ICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiB2
czY0KC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgICAgIC8qIGhpICovLTEsCisgICAg
ICAgICAgICAgICAgICAgICAgLyogbG8gKi80Mjk0OTY3Mjk0CisgICAgICAgICAgICAgICAgICAg
IF0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIHZzNjQoLyogaW50NjQgKi9b
CisgICAgICAgICAgICAgICAgICAgICAgLyogaGkgKi8tMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAvKiBsbyAqLzQyOTQ5NjcyOTMKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNl
IDMgOiAKKyAgICAgICAgICByZXR1cm4gdnM2NCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAvKiBoaSAqLy0xLAorICAgICAgICAgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2
NzI5MgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIAorICAgIH0KKyAgfTsKKyAgdmFy
IHN0YWNrX3R5cGUgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAg
IGlmIChwYXJhbVsxXSkgeworICAgICAgICByZXR1cm4gQ3VycnkuXzIoQ29kZVsvKiBlcnJvciAq
LzJdLCBTb3VyY2Uubm9fcmVnaW9uLCAiY2Fubm90IGVuY29kZSBzdGFjayB0eXBlIHdpdGggYXJp
dHkgPiAxICh5ZXQpIik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHZh
bHVlX3R5cGUocGFyYW1bMF0pOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJl
dHVybiB2czY0KC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8tMSwKKyAg
ICAgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzIzMgorICAgICAgICAgICAgICAgIF0pOwor
ICAgIH0KKyAgfTsKKyAgdmFyIGZ1bmNfdHlwZSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHZz
NjQoLyogaW50NjQgKi9bCisgICAgICAgICAgLyogaGkgKi8tMSwKKyAgICAgICAgICAvKiBsbyAq
LzQyOTQ5NjcyNjQKKyAgICAgICAgXSk7CisgICAgdmVjKHZhbHVlX3R5cGUsIHBhcmFtWzBdKTsK
KyAgICByZXR1cm4gdmVjKHZhbHVlX3R5cGUsIHBhcmFtWzFdKTsKKyAgfTsKKyAgdmFyIGxpbWl0
cyA9IGZ1bmN0aW9uICh2dSwgcGFyYW0pIHsKKyAgICB2YXIgbWF4ID0gcGFyYW1bLyogbWF4ICov
MV07CisgICAgYm9vbCgrKG1heCAhPT0gLyogTm9uZSAqLzApKTsKKyAgICBDdXJyeS5fMSh2dSwg
cGFyYW1bLyogbWluICovMF0pOworICAgIHJldHVybiBDdXJyeS5fMihMaWIuT3B0aW9uWy8qIGFw
cCAqLzJdLCB2dSwgbWF4KTsKKyAgfTsKKyAgdmFyIHRhYmxlX3R5cGUgPSBmdW5jdGlvbiAocGFy
YW0pIHsKKyAgICB2czY0KC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovLTEsCisgICAg
ICAgICAgLyogbG8gKi80Mjk0OTY3MjgwCisgICAgICAgIF0pOworICAgIHJldHVybiBsaW1pdHMo
dnUzMiwgcGFyYW1bMF0pOworICB9OworICB2YXIgbWVtb3J5X3R5cGUgPSBmdW5jdGlvbiAocGFy
YW0pIHsKKyAgICByZXR1cm4gbGltaXRzKHZ1MzIsIHBhcmFtWzBdKTsKKyAgfTsKKyAgdmFyIGds
b2JhbF90eXBlID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgdmFsdWVfdHlwZShwYXJhbVswXSk7
CisgICAgdmFyIHBhcmFtJDEgPSBwYXJhbVsxXTsKKyAgICBpZiAocGFyYW0kMSAhPT0gMCkgewor
ICAgICAgcmV0dXJuIHU4KDEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiB1OCgw
KTsKKyAgICB9CisgIH07CisgIHZhciBtZW1vcCA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHZ1
MzIocGFyYW1bLyogYWxpZ24gKi8xXSk7CisgICAgcmV0dXJuIHZ1MzIocGFyYW1bLyogb2Zmc2V0
ICovMl0pOworICB9OworICB2YXIgJCR2YXIgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB2
dTMyKHhbLyogaXQgKi8xXSk7CisgIH07CisgIHZhciBpbnN0ciA9IGZ1bmN0aW9uIChlKSB7Cisg
ICAgdmFyIG1hdGNoID0gZVsvKiBpdCAqLzFdOworICAgIGlmICh0eXBlb2YgbWF0Y2ggPT09ICJu
dW1iZXIiKSB7CisgICAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAg
ICAgICAgICAgcmV0dXJuIHU4KDApOworICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIHJl
dHVybiB1OCgxKTsKKyAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICByZXR1cm4gdTgoMTUp
OworICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHJldHVybiB1OCgyNik7CisgICAgICAg
IGNhc2UgNCA6IAorICAgICAgICAgICAgcmV0dXJuIHU4KDI3KTsKKyAgICAgICAgY2FzZSA1IDog
CisgICAgICAgICAgICB1OCg2Myk7CisgICAgICAgICAgICByZXR1cm4gdTgoMCk7CisgICAgICAg
IGNhc2UgNiA6IAorICAgICAgICAgICAgdTgoNjQpOworICAgICAgICAgICAgcmV0dXJuIHU4KDAp
OworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzd2l0Y2ggKG1h
dGNoLnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICB1OCgyKTsKKyAg
ICAgICAgICAgIHN0YWNrX3R5cGUobWF0Y2hbMF0pOworICAgICAgICAgICAgTGlzdC5pdGVyKGlu
c3RyLCBtYXRjaFsxXSk7CisgICAgICAgICAgICByZXR1cm4gdTgoMTEpOworICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgIHU4KDMpOworICAgICAgICAgICAgc3RhY2tfdHlwZShtYXRjaFsw
XSk7CisgICAgICAgICAgICBMaXN0Lml0ZXIoaW5zdHIsIG1hdGNoWzFdKTsKKyAgICAgICAgICAg
IHJldHVybiB1OCgxMSk7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgdmFyIGVzMiA9
IG1hdGNoWzJdOworICAgICAgICAgICAgdTgoNCk7CisgICAgICAgICAgICBzdGFja190eXBlKG1h
dGNoWzBdKTsKKyAgICAgICAgICAgIExpc3QuaXRlcihpbnN0ciwgbWF0Y2hbMV0pOworICAgICAg
ICAgICAgaWYgKGVzMiAhPT0gLyogW10gKi8wKSB7CisgICAgICAgICAgICAgIHU4KDUpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgTGlzdC5pdGVyKGluc3RyLCBlczIpOworICAgICAgICAg
ICAgcmV0dXJuIHU4KDExKTsKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICB1OCgxMik7
CisgICAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBpdCAqLzFdKTsKKyAgICAgICAg
Y2FzZSA0IDogCisgICAgICAgICAgICB1OCgxMyk7CisgICAgICAgICAgICByZXR1cm4gdnUzMiht
YXRjaFswXVsvKiBpdCAqLzFdKTsKKyAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICB1OCgx
NCk7CisgICAgICAgICAgICB2ZWMoJCR2YXIsIG1hdGNoWzBdKTsKKyAgICAgICAgICAgIHJldHVy
biB2dTMyKG1hdGNoWzFdWy8qIGl0ICovMV0pOworICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAg
ICAgIHU4KDE2KTsKKyAgICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNoWzBdWy8qIGl0ICovMV0p
OworICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIHU4KDE3KTsKKyAgICAgICAgICAgIHZ1
MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgICAgICByZXR1cm4gdTgoMCk7CisgICAg
ICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgdTgoMzIpOworICAgICAgICAgICAgcmV0dXJuIHZ1
MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAg
dTgoMzMpOworICAgICAgICAgICAgcmV0dXJuIHZ1MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7Cisg
ICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIHU4KDM0KTsKKyAgICAgICAgICAgIHJldHVy
biB2dTMyKG1hdGNoWzBdWy8qIGl0ICovMV0pOworICAgICAgICBjYXNlIDExIDogCisgICAgICAg
ICAgICB1OCgzNSk7CisgICAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBpdCAqLzFd
KTsKKyAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgdTgoMzYpOworICAgICAgICAgICAg
cmV0dXJuIHZ1MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgIGNhc2UgMTMgOiAKKyAg
ICAgICAgICAgIHZhciBtbyA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dpdGNoIChtb1svKiB0
eSAqLzBdKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgdmFy
IG1hdGNoJDEgPSBtb1svKiBzeiAqLzNdOworICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDEp
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBtYXRjaCQxWzBdOworICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDJbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDJbMV0gIT09
IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCg0NSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1OCg0NCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1l
bW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkMlsxXSAh
PT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4KDQ3KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHU4KDQ2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0
X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93
YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4MiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICB1OCg0MCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtZW1vcChtbyk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICB2YXIgbWF0
Y2gkMyA9IG1vWy8qIHN6ICovM107CisgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkMykgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IG1hdGNoJDNbMF07CisgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAobWF0Y2gkNFswXSkgeworICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkNFsxXSAhPT0gMCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4KDQ5KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHU4KDQ4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3Ao
bW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQ0WzFdICE9PSAw
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTgoNTEpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdTgoNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1v
cChtbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDRbMV0gIT09
IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCg1Myk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1OCg1Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1l
bW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdTgoNDEpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAg
ICAgICAgaWYgKG1vWy8qIHN6ICovM10pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRf
ZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRl
cnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1
OCg0Mik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7CisgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAz
IDogCisgICAgICAgICAgICAgICAgICBpZiAobW9bLyogc3ogKi8zXSkgeworICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jl
cmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxOTYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOAorICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAg
ICBdOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIHU4KDQzKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9w
KG1vKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIDE0IDogCisgICAgICAgICAgICB2YXIgbW8kMSA9IG1hdGNoWzBdOworICAgICAgICAgICAg
c3dpdGNoIChtbyQxWy8qIHR5ICovMF0pIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAg
ICAgICAgICAgICAgICB2YXIgbWF0Y2gkNSA9IG1vJDFbLyogc3ogKi8zXTsKKyAgICAgICAgICAg
ICAgICAgIGlmIChtYXRjaCQ1KSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gk
NVswXSkgeworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgICB1OCg1OCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1v
cChtbyQxKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgdTgoNTkpOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVt
b3AobW8kMSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9s
b2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pz
bGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIw
NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdTgo
NTQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7CisgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNiA9IG1vJDFbLyogc3ogKi8zXTsKKyAg
ICAgICAgICAgICAgICAgIGlmIChtYXRjaCQ2KSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAobWF0Y2gkNlswXSkgeworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgICB1OCg2MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtZW1vcChtbyQxKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgdTgoNjEpOworICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWVtb3AobW8kMSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHU4KDYyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1lbW9wKG1vJDEpOworICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgdTgoNTUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bWVtb3AobW8kMSk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICBpZiAobW8kMVsv
KiBzeiAqLzNdKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vz
ci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxk
L2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwOCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHU4KDU2KTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vJDEpOworICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAg
ICAgICAgICAgICAgaWYgKG1vJDFbLyogc3ogKi8zXSkgeworICAgICAgICAgICAgICAgICAgICB0
aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9z
cGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyMDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICB1OCg1Nyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyQxKTsK
KyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE1
IDogCisgICAgICAgICAgICB2YXIgbWF0Y2gkNyA9IG1hdGNoWzBdWy8qIGl0ICovMV07CisgICAg
ICAgICAgICBzd2l0Y2ggKG1hdGNoJDcudGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDAg
OiAKKyAgICAgICAgICAgICAgICAgIHU4KDY1KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB2
czY0KENhbWxfaW50NjQub2ZfaW50MzIobWF0Y2gkN1swXSkpOworICAgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgICAgIHU4KDY2KTsKKyAgICAgICAgICAgICAgICAgIHJldHVy
biB2czY0KG1hdGNoJDdbMF0pOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAg
ICAgICAgIHU4KDY3KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB1MzIoQ3VycnkuXzEoRjMy
LnRvX2JpdHMsIG1hdGNoJDdbMF0pKTsKKyAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgICAgICAgICB1OCg2OCk7CisgICAgICAgICAgICAgICAgICB2YXIgaSA9IEN1cnJ5Ll8xKEY2
NC50b19iaXRzLCBtYXRjaCQ3WzBdKTsKKyAgICAgICAgICAgICAgICAgIHUzMihpWzFdICYgLyog
bG8gKi80Mjk0OTY3Mjk1IHwgMCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdTMyKENhbWxf
aW50NjQuYXNyXyhpLCAzMilbMV0gfCAwKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgc3dp
dGNoIChtYXRjaFswXS50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHU4KDY5KTsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoODApOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAg
ICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3Nz
YmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAyMjAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IDI0CisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVy
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Ii91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19i
dWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjIx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAyNAorICAgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIAorICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIHZh
ciBtYXRjaCQ4ID0gbWF0Y2hbMF07CisgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDgudGFnIHwg
MCkgeworICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
bWF0Y2gkOFswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCg3MCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6
IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDcxKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoNzIpOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCg3Myk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHU4KDc0KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoNzUpOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg3Nik7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHU4KDc3KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoNzgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDkgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg3OSk7CisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ4WzBd
KSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDgxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdTgoODIpOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg4Myk7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDg0
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoODUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1OCg4Nik7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
NiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDg3KTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoODgp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCg4OSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDkwKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSAyIDogCisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDhbMF0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dTgoOTEpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCg5Mik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDkzKTsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSAzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTQpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1
OCg5NSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHU4KDk2KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAzIDog
CisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDhbMF0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTcpOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCg5OCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHU4KDk5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTAwKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTAxKTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTAyKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgICAgdmFy
IG1hdGNoJDkgPSBtYXRjaFswXTsKKyAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkOS50YWcgfCAw
KSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoICht
YXRjaCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHU4KDEwMyk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6
IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwNCk7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwNSk7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAg
c3dpdGNoIChtYXRjaCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEyMSk7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEyMik7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHU4KDEyMyk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChtYXRjaCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0MCk7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEz
OSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDE0MSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0Mik7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0Myk7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDE0NCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHU4KDE0NSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6
IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ5WzBdKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1NCk7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDE1Myk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1NSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1Nik7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1
Nyk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDE1OCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1OSk7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTkg
OiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQxMCA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dp
dGNoIChtYXRjaCQxMC50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQxMFswXSkgeworICAgICAgICAgICAgICAgICAgICBj
YXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMDYpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1
OCgxMDcpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxMDgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMDkpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTApOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxMTEpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxMTIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTMpOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTQpOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCgxMTUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoMTE2KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAx
MSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDExNyk7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgx
MTgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdTgoMTE5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEyMCk7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQxMFswXSkg
eworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCgxMjQpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjUpOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjYpOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgx
MjcpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCgxMjgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjkpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzApOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1
OCgxMzEpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxMzIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzMpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTM0KTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHU4KDEzNSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxMzYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEz
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTM3KTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEz
OCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChtYXRjaCQxMFswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDYpOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDcpOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCgxNDgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxNDkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTApOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTEp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCgxNTIpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTBbMF0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTYwKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdTgoMTYxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTYyKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTYzKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY0KTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTY1KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoMTY2KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyMCA6IAor
ICAgICAgICAgICAgdmFyIG1hdGNoJDExID0gbWF0Y2hbMF07CisgICAgICAgICAgICBzd2l0Y2gg
KG1hdGNoJDExLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKG1hdGNoJDExWzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRl
ci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3Nz
YmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMzIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY3KTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY4KTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdTgoMTY5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTcwKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTcxKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTg4KTsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKG1hdGNoJDExWzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE3Mik7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE3Myk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cg
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMu
YXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJn
L3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0MiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNzQpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNzUpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1
OCgxNzYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxNzcpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODkpOworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTFbMF0p
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoMTc4KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTc5KTsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTgwKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
MTgxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hv
bWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2Rl
Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
NSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE4Mik7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE5
MCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChtYXRjaCQxMVswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODMpOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODQpOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCgxODUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxODYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODcpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9m
YWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3Nw
ZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzNjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTkxKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICB9CisgICAg
fQorICB9OworICB2YXIgJCRjb25zdCA9IGZ1bmN0aW9uIChjKSB7CisgICAgTGlzdC5pdGVyKGlu
c3RyLCBjWy8qIGl0ICovMV0pOworICAgIHJldHVybiB1OCgxMSk7CisgIH07CisgIHZhciBzZWN0
aW9uID0gZnVuY3Rpb24gKGlkLCBmLCB4LCBuZWVkZWQpIHsKKyAgICBpZiAobmVlZGVkKSB7Cisg
ICAgICB1OChpZCk7CisgICAgICB2YXIgZyA9IGdhcDMyKC8qICgpICovMCk7CisgICAgICB2YXIg
cCA9IEJ1ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSk7CisgICAgICBDdXJyeS5fMShmLCB4KTsK
KyAgICAgIHJldHVybiBwYXRjaF9nYXAzMihnLCBCdWZmZXIubGVuZ3RoKHNbLyogYnVmICovMF0p
IC0gcCB8IDApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAg
fTsKKyAgdmFyIHR5cGVfc2VjdGlvbiA9IGZ1bmN0aW9uICh0cykgeworICAgIHJldHVybiBzZWN0
aW9uKDEsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVu
Y190eXBlLCBwYXJhbSk7CisgICAgICAgICAgICAgIH0sIHRzLCArKHRzICE9PSAvKiBbXSAqLzAp
KTsKKyAgfTsKKyAgdmFyICQkaW1wb3J0ID0gZnVuY3Rpb24gKGltKSB7CisgICAgdmFyIG1hdGNo
ID0gaW1bLyogaXQgKi8xXTsKKyAgICBzdHJpbmcobWF0Y2hbLyogbW9kdWxlX25hbWUgKi8wXSk7
CisgICAgc3RyaW5nKG1hdGNoWy8qIGl0ZW1fbmFtZSAqLzFdKTsKKyAgICB2YXIgayA9IG1hdGNo
Wy8qIGlraW5kICovMl07CisgICAgdmFyIG1hdGNoJDEgPSBrWy8qIGl0ICovMV07CisgICAgc3dp
dGNoIChtYXRjaCQxLnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHU4KDAp
OworICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNoJDFbMF1bLyogaXQgKi8xXSk7CisgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICB1OCgxKTsKKyAgICAgICAgICByZXR1cm4gdGFibGVfdHlwZSht
YXRjaCQxWzBdKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHU4KDIpOworICAgICAgICAg
IHJldHVybiBtZW1vcnlfdHlwZShtYXRjaCQxWzBdKTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAg
ICAgIHU4KDMpOworICAgICAgICAgIHJldHVybiBnbG9iYWxfdHlwZShtYXRjaCQxWzBdKTsKKyAg
ICAgIAorICAgIH0KKyAgfTsKKyAgdmFyIGltcG9ydF9zZWN0aW9uID0gZnVuY3Rpb24gKGltcykg
eworICAgIHJldHVybiBzZWN0aW9uKDIsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAg
ICAgIHJldHVybiB2ZWMoJCRpbXBvcnQsIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgaW1zLCAr
KGltcyAhPT0gLyogW10gKi8wKSk7CisgIH07CisgIHZhciBmdW5jID0gZnVuY3Rpb24gKGYpIHsK
KyAgICByZXR1cm4gdnUzMihmWy8qIGl0ICovMV1bLyogZnR5cGUgKi8wXVsvKiBpdCAqLzFdKTsK
KyAgfTsKKyAgdmFyIGZ1bmNfc2VjdGlvbiA9IGZ1bmN0aW9uIChmcykgeworICAgIHJldHVybiBz
ZWN0aW9uKDMsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMo
ZnVuYywgcGFyYW0pOworICAgICAgICAgICAgICB9LCBmcywgKyhmcyAhPT0gLyogW10gKi8wKSk7
CisgIH07CisgIHZhciB0YWJsZSA9IGZ1bmN0aW9uICh0YWIpIHsKKyAgICB2YXIgbWF0Y2ggPSB0
YWJbLyogaXQgKi8xXTsKKyAgICByZXR1cm4gdGFibGVfdHlwZShtYXRjaFsvKiB0dHlwZSAqLzBd
KTsKKyAgfTsKKyAgdmFyIHRhYmxlX3NlY3Rpb24gPSBmdW5jdGlvbiAodGFicykgeworICAgIHJl
dHVybiBzZWN0aW9uKDQsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVy
biB2ZWModGFibGUsIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgdGFicywgKyh0YWJzICE9PSAv
KiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIG1lbW9yeSA9IGZ1bmN0aW9uIChtZW0pIHsKKyAgICB2
YXIgbWF0Y2ggPSBtZW1bLyogaXQgKi8xXTsKKyAgICByZXR1cm4gbWVtb3J5X3R5cGUobWF0Y2hb
LyogbXR5cGUgKi8wXSk7CisgIH07CisgIHZhciBtZW1vcnlfc2VjdGlvbiA9IGZ1bmN0aW9uICht
ZW1zKSB7CisgICAgcmV0dXJuIHNlY3Rpb24oNSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHZlYyhtZW1vcnksIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgbWVt
cywgKyhtZW1zICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIGdsb2JhbCA9IGZ1bmN0aW9u
IChnKSB7CisgICAgdmFyIG1hdGNoID0gZ1svKiBpdCAqLzFdOworICAgIGdsb2JhbF90eXBlKG1h
dGNoWy8qIGd0eXBlICovMF0pOworICAgIHJldHVybiAkJGNvbnN0KG1hdGNoWy8qIHZhbHVlICov
MV0pOworICB9OworICB2YXIgZ2xvYmFsX3NlY3Rpb24gPSBmdW5jdGlvbiAoZ3MpIHsKKyAgICBy
ZXR1cm4gc2VjdGlvbig2LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdmVjKGdsb2JhbCwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBncywgKyhncyAhPT0gLyog
W10gKi8wKSk7CisgIH07CisgIHZhciBleHBvcnRfa2luZCA9IGZ1bmN0aW9uIChrKSB7CisgICAg
dmFyIG1hdGNoID0ga1svKiBpdCAqLzFdOworICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAgIGNh
c2UgMCA6IAorICAgICAgICAgIHJldHVybiB1OCgwKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAg
ICAgIHJldHVybiB1OCgxKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiB1OCgy
KTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiB1OCgzKTsKKyAgICAgIAorICAg
IH0KKyAgfTsKKyAgdmFyICQkZXhwb3J0ID0gZnVuY3Rpb24gKGV4KSB7CisgICAgdmFyIG1hdGNo
ID0gZXhbLyogaXQgKi8xXTsKKyAgICBzdHJpbmcobWF0Y2hbLyogbmFtZSAqLzBdKTsKKyAgICBl
eHBvcnRfa2luZChtYXRjaFsvKiBla2luZCAqLzFdKTsKKyAgICByZXR1cm4gdnUzMihtYXRjaFsv
KiBpdGVtICovMl1bLyogaXQgKi8xXSk7CisgIH07CisgIHZhciBleHBvcnRfc2VjdGlvbiA9IGZ1
bmN0aW9uIChleHMpIHsKKyAgICByZXR1cm4gc2VjdGlvbig3LCBmdW5jdGlvbiAocGFyYW0pIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdmVjKCQkZXhwb3J0LCBwYXJhbSk7CisgICAgICAgICAg
ICAgIH0sIGV4cywgKyhleHMgIT09IC8qIFtdICovMCkpOworICB9OworICB2YXIgc3RhcnRfc2Vj
dGlvbiA9IGZ1bmN0aW9uICh4bykgeworICAgIHJldHVybiBzZWN0aW9uKDgsIGZ1bmN0aW9uIChw
YXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMihMaWIuT3B0aW9uWy8qIGFw
cCAqLzJdLCAkJHZhciwgcGFyYW0pOworICAgICAgICAgICAgICB9LCB4bywgKyh4byAhPT0gLyog
Tm9uZSAqLzApKTsKKyAgfTsKKyAgdmFyIGNvbXByZXNzID0gZnVuY3Rpb24gKHRzKSB7CisgICAg
dmFyIGNvbWJpbmUgPSBmdW5jdGlvbiAodCwgdHMpIHsKKyAgICAgIGlmICh0cykgeworICAgICAg
ICB2YXIgbWF0Y2ggPSB0c1swXTsKKyAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwodCwg
bWF0Y2hbMF0pKSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgIHQsCisgICAgICAgICAgICAgICAg
ICAgIG1hdGNoWzFdICsgMSB8IDAKKyAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgICB0c1sxXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgICAgICAgIHQsCisgICAgICAgICAgICAgICAgICAgIDEKKyAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICB0cworICAgICAgICAgICAgICAgIF07
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICB0LAor
ICAgICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
dHMKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBMaXN0LmZv
bGRfcmlnaHQoY29tYmluZSwgdHMsIC8qIFtdICovMCk7CisgIH07CisgIHZhciBsb2NhbCA9IGZ1
bmN0aW9uIChwYXJhbSkgeworICAgIGxlbihwYXJhbVsxXSk7CisgICAgcmV0dXJuIHZhbHVlX3R5
cGUocGFyYW1bMF0pOworICB9OworICB2YXIgY29kZSA9IGZ1bmN0aW9uIChmKSB7CisgICAgdmFy
IG1hdGNoID0gZlsvKiBpdCAqLzFdOworICAgIHZhciBnID0gZ2FwMzIoLyogKCkgKi8wKTsKKyAg
ICB2YXIgcCA9IEJ1ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSk7CisgICAgdmVjKGxvY2FsLCBj
b21wcmVzcyhtYXRjaFsvKiBsb2NhbHMgKi8xXSkpOworICAgIExpc3QuaXRlcihpbnN0ciwgbWF0
Y2hbLyogYm9keSAqLzJdKTsKKyAgICB1OCgxMSk7CisgICAgcmV0dXJuIHBhdGNoX2dhcDMyKGcs
IEJ1ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSkgLSBwIHwgMCk7CisgIH07CisgIHZhciBjb2Rl
X3NlY3Rpb24gPSBmdW5jdGlvbiAoZnMpIHsKKyAgICByZXR1cm4gc2VjdGlvbigxMCwgZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYyhjb2RlLCBwYXJhbSk7Cisg
ICAgICAgICAgICAgIH0sIGZzLCArKGZzICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIHNl
Z21lbnQgPSBmdW5jdGlvbiAoZGF0LCBzZWcpIHsKKyAgICB2YXIgbWF0Y2ggPSBzZWdbLyogaXQg
Ki8xXTsKKyAgICB2dTMyKG1hdGNoWy8qIGluZGV4ICovMF1bLyogaXQgKi8xXSk7CisgICAgJCRj
b25zdChtYXRjaFsvKiBvZmZzZXQgKi8xXSk7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKGRhdCwgbWF0
Y2hbLyogaW5pdCAqLzJdKTsKKyAgfTsKKyAgdmFyIHRhYmxlX3NlZ21lbnQgPSBmdW5jdGlvbiAo
c2VnKSB7CisgICAgcmV0dXJuIHNlZ21lbnQoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHZlYygkJHZhciwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBzZWcpOwor
ICB9OworICB2YXIgZWxlbV9zZWN0aW9uID0gZnVuY3Rpb24gKGVsZW1zKSB7CisgICAgcmV0dXJu
IHNlY3Rpb24oOSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZl
Yyh0YWJsZV9zZWdtZW50LCBwYXJhbSk7CisgICAgICAgICAgICAgIH0sIGVsZW1zLCArKGVsZW1z
ICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIG1lbW9yeV9zZWdtZW50ID0gZnVuY3Rpb24g
KHNlZykgeworICAgIHJldHVybiBzZWdtZW50KHN0cmluZywgc2VnKTsKKyAgfTsKKyAgdmFyIG1v
ZHVsZV8gPSBmdW5jdGlvbiAobSkgeworICAgIHUzMigxODM2Mjc4MDE2KTsKKyAgICB1MzIoMTMp
OworICAgIHR5cGVfc2VjdGlvbihtWy8qIGl0ICovMV1bLyogdHlwZXMgKi8wXSk7CisgICAgaW1w
b3J0X3NlY3Rpb24obVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84XSk7CisgICAgZnVuY19zZWN0
aW9uKG1bLyogaXQgKi8xXVsvKiBmdW5jcyAqLzRdKTsKKyAgICB0YWJsZV9zZWN0aW9uKG1bLyog
aXQgKi8xXVsvKiB0YWJsZXMgKi8yXSk7CisgICAgbWVtb3J5X3NlY3Rpb24obVsvKiBpdCAqLzFd
Wy8qIG1lbW9yaWVzICovM10pOworICAgIGdsb2JhbF9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBn
bG9iYWxzICovMV0pOworICAgIGV4cG9ydF9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBleHBvcnRz
ICovOV0pOworICAgIHN0YXJ0X3NlY3Rpb24obVsvKiBpdCAqLzFdWy8qIHN0YXJ0ICovNV0pOwor
ICAgIGVsZW1fc2VjdGlvbihtWy8qIGl0ICovMV1bLyogZWxlbXMgKi82XSk7CisgICAgY29kZV9z
ZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBmdW5jcyAqLzRdKTsKKyAgICB2YXIgZGF0YSA9IG1bLyog
aXQgKi8xXVsvKiBkYXRhICovN107CisgICAgcmV0dXJuIHNlY3Rpb24oMTEsIGZ1bmN0aW9uIChw
YXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMobWVtb3J5X3NlZ21lbnQsIHBhcmFt
KTsKKyAgICAgICAgICAgICAgfSwgZGF0YSwgKyhkYXRhICE9PSAvKiBbXSAqLzApKTsKKyAgfTsK
KyAgbW9kdWxlXyhtKTsKKyAgdmFyIHMkMSA9IHM7CisgIHZhciBicyA9IEJ1ZmZlci50b19ieXRl
cyhzJDFbLyogYnVmICovMF0pOworICBMaXN0Lml0ZXIoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAg
ICAgIGJzW3BhcmFtWzBdXSA9IHBhcmFtWzFdOworICAgICAgICByZXR1cm4gLyogKCkgKi8wOwor
ICAgICAgfSwgcyQxWy8qIHBhdGNoZXMgKi8xXVswXSk7CisgIHJldHVybiBCeXRlcy50b19zdHJp
bmcoYnMpOworfQorCit2YXIgdmVyc2lvbiA9IDEzOworCitleHBvcnRzLkNvZGUgICAgPSBDb2Rl
JDE7CitleHBvcnRzLnZlcnNpb24gPSB2ZXJzaW9uOworZXhwb3J0cy5lbmNvZGUgID0gZW5jb2Rl
OworLyogQ29kZSBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGVuY29kZS5q
cyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5
WydlcnJvciddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2YgZXJyb3IuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJ
UFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOwor
Cit2YXIgU291cmNlICAgICAgICAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciBDYW1sX2V4
Y2VwdGlvbnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9leGNlcHRpb25zIik7
CisKK2Z1bmN0aW9uIE1ha2UoKSB7CisgIHZhciAkJEVycm9yID0gQ2FtbF9leGNlcHRpb25zLmNy
ZWF0ZSgiRXJyb3IuTWFrZSgqKS5FcnJvciIpOworICB2YXIgd2FybiA9IGZ1bmN0aW9uIChhdCwg
bSkgeworICAgIGNvbnNvbGUuZXJyb3IoU291cmNlLnN0cmluZ19vZl9yZWdpb24oYXQpICsgKCI6
IHdhcm5pbmc6ICIgKyBtKSk7CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfTsKKyAgdmFyIGVy
cm9yID0gZnVuY3Rpb24gKGF0LCBtKSB7CisgICAgdGhyb3cgWworICAgICAgICAgICQkRXJyb3Is
CisgICAgICAgICAgYXQsCisgICAgICAgICAgbQorICAgICAgICBdOworICB9OworICByZXR1cm4g
LyogbW9kdWxlICovWworICAgICAgICAgIC8qIEVycm9yICovJCRFcnJvciwKKyAgICAgICAgICAv
KiB3YXJuICovd2FybiwKKyAgICAgICAgICAvKiBlcnJvciAqL2Vycm9yCisgICAgICAgIF07Cit9
CisKK2V4cG9ydHMuTWFrZSA9IE1ha2U7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8g
ZW5kIG9mIGVycm9yLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisK
KworICBfcmVnaXN0cnlbJ2YzMiddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9
IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgZjMyLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkg
QlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ug
c3RyaWN0JzsKKwordmFyIEJsb2NrICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2Jsb2NrIik7Cit2YXIgQ3VycnkgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
Y3VycnkiKTsKK3ZhciBGbG9hdCAgICAgICA9IHJlcXVpcmUoIi4vZmxvYXQiKTsKK3ZhciBJbnQz
MiAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9pbnQzMiIpOwordmFyIFByaW50
ZiAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3ByaW50ZiIpOwordmFyIENhbWxf
ZmxvYXQgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZmxvYXQiKTsKK3ZhciBD
YW1sX2Zvcm1hdCA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zvcm1hdCIpOwor
CitmdW5jdGlvbiBwcmludF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzKGEpIHsKKyAgcmV0dXJuIEN1
cnJ5Ll8xKFByaW50Zi5zcHJpbnRmKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8q
IEludDMyICovQmxvY2suX18oNSwgWworICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICov
NiwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIC8q
IEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAg
ICAgICAgIiVseCIKKyAgICAgICAgICAgICAgICBdKSwgSW50MzIuYWJzKDIxMzkwOTUwNDAgXiBh
KSk7Cit9CisKK3ZhciBpbmNsdWRlID0gRmxvYXQuTWFrZSgvKiBtb2R1bGUgKi9bCisgICAgICAv
KiBwb3NfbmFuICovMjE0MzI4OTM0NCwKKyAgICAgIC8qIG5lZ19uYW4gKi8tNDE5NDMwNCwKKyAg
ICAgIC8qIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAqL0NhbWxfZmxvYXQuY2FtbF9pbnQzMl9i
aXRzX29mX2Zsb2F0LAorICAgICAgLyogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICovQ2FtbF9m
bG9hdC5jYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMsCisgICAgICAvKiBjYW1sX2ludDMyX29mX3N0
cmluZyAqL0NhbWxfZm9ybWF0LmNhbWxfaW50MzJfb2Zfc3RyaW5nLAorICAgICAgLyogdG9fc3Ry
aW5nICovSW50MzIudG9fc3RyaW5nLAorICAgICAgLyogJWludDMyX2FuZCAqL2Z1bmN0aW9uIChw
cmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIHByaW0gJiBwcmltJDE7CisgICAgICB9LAor
ICAgICAgLyogJWludDMyX29yICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICBy
ZXR1cm4gcHJpbSB8IHByaW0kMTsKKyAgICAgIH0sCisgICAgICAvKiAlaW50MzJfeG9yICovZnVu
Y3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSBeIHByaW0kMTsKKyAg
ICAgIH0sCisgICAgICAvKiBtaW5faW50ICovSW50MzIubWluX2ludCwKKyAgICAgIC8qIG1heF9p
bnQgKi9JbnQzMi5tYXhfaW50LAorICAgICAgLyogemVybyAqL0ludDMyLnplcm8sCisgICAgICAv
KiBiYXJlX25hbiAqLzIxMzkwOTUwNDAsCisgICAgICAvKiBwcmludF9uYW5fc2lnbmlmaWNhbmRf
ZGlnaXRzICovcHJpbnRfbmFuX3NpZ25pZmljYW5kX2RpZ2l0cworICAgIF0pOworCit2YXIgcG9z
X25hbiA9IGluY2x1ZGVbMF07CisKK3ZhciBuZWdfbmFuID0gaW5jbHVkZVsxXTsKKwordmFyIG9m
X2Zsb2F0ID0gaW5jbHVkZVsyXTsKKwordmFyIHRvX2Zsb2F0ID0gaW5jbHVkZVszXTsKKwordmFy
IG9mX3N0cmluZyA9IGluY2x1ZGVbNF07CisKK3ZhciB0b19zdHJpbmcgPSBpbmNsdWRlWzVdOwor
Cit2YXIgb2ZfYml0cyA9IGluY2x1ZGVbNl07CisKK3ZhciB0b19iaXRzID0gaW5jbHVkZVs3XTsK
KwordmFyIGFkZCA9IGluY2x1ZGVbOF07CisKK3ZhciBzdWIgPSBpbmNsdWRlWzldOworCit2YXIg
bXVsID0gaW5jbHVkZVsxMF07CisKK3ZhciBkaXYgPSBpbmNsdWRlWzExXTsKKwordmFyIHNxcnQg
PSBpbmNsdWRlWzEyXTsKKwordmFyIG1pbiA9IGluY2x1ZGVbMTNdOworCit2YXIgbWF4ID0gaW5j
bHVkZVsxNF07CisKK3ZhciBjZWlsID0gaW5jbHVkZVsxNV07CisKK3ZhciBmbG9vciA9IGluY2x1
ZGVbMTZdOworCit2YXIgdHJ1bmMgPSBpbmNsdWRlWzE3XTsKKwordmFyIG5lYXJlc3QgPSBpbmNs
dWRlWzE4XTsKKwordmFyIGFicyA9IGluY2x1ZGVbMTldOworCit2YXIgbmVnID0gaW5jbHVkZVsy
MF07CisKK3ZhciBjb3B5c2lnbiA9IGluY2x1ZGVbMjFdOworCit2YXIgZXEgPSBpbmNsdWRlWzIy
XTsKKwordmFyIG5lID0gaW5jbHVkZVsyM107CisKK3ZhciBsdCA9IGluY2x1ZGVbMjRdOworCit2
YXIgbGUgPSBpbmNsdWRlWzI1XTsKKwordmFyIGd0ID0gaW5jbHVkZVsyNl07CisKK3ZhciBnZSA9
IGluY2x1ZGVbMjddOworCit2YXIgemVybyA9IGluY2x1ZGVbMjhdOworCitleHBvcnRzLnBvc19u
YW4gICA9IHBvc19uYW47CitleHBvcnRzLm5lZ19uYW4gICA9IG5lZ19uYW47CitleHBvcnRzLm9m
X2Zsb2F0ICA9IG9mX2Zsb2F0OworZXhwb3J0cy50b19mbG9hdCAgPSB0b19mbG9hdDsKK2V4cG9y
dHMub2Zfc3RyaW5nID0gb2Zfc3RyaW5nOworZXhwb3J0cy50b19zdHJpbmcgPSB0b19zdHJpbmc7
CitleHBvcnRzLm9mX2JpdHMgICA9IG9mX2JpdHM7CitleHBvcnRzLnRvX2JpdHMgICA9IHRvX2Jp
dHM7CitleHBvcnRzLmFkZCAgICAgICA9IGFkZDsKK2V4cG9ydHMuc3ViICAgICAgID0gc3ViOwor
ZXhwb3J0cy5tdWwgICAgICAgPSBtdWw7CitleHBvcnRzLmRpdiAgICAgICA9IGRpdjsKK2V4cG9y
dHMuc3FydCAgICAgID0gc3FydDsKK2V4cG9ydHMubWluICAgICAgID0gbWluOworZXhwb3J0cy5t
YXggICAgICAgPSBtYXg7CitleHBvcnRzLmNlaWwgICAgICA9IGNlaWw7CitleHBvcnRzLmZsb29y
ICAgICA9IGZsb29yOworZXhwb3J0cy50cnVuYyAgICAgPSB0cnVuYzsKK2V4cG9ydHMubmVhcmVz
dCAgID0gbmVhcmVzdDsKK2V4cG9ydHMuYWJzICAgICAgID0gYWJzOworZXhwb3J0cy5uZWcgICAg
ICAgPSBuZWc7CitleHBvcnRzLmNvcHlzaWduICA9IGNvcHlzaWduOworZXhwb3J0cy5lcSAgICAg
ICAgPSBlcTsKK2V4cG9ydHMubmUgICAgICAgID0gbmU7CitleHBvcnRzLmx0ICAgICAgICA9IGx0
OworZXhwb3J0cy5sZSAgICAgICAgPSBsZTsKK2V4cG9ydHMuZ3QgICAgICAgID0gZ3Q7CitleHBv
cnRzLmdlICAgICAgICA9IGdlOworZXhwb3J0cy56ZXJvICAgICAgPSB6ZXJvOworLyogaW5jbHVk
ZSBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGYzMi5qcyAvLy8vLy8vLwor
wqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydmNjQnXSA9IGZ1
bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGY2
NC5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4z
ICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBCbG9jayAgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFyIEN1cnJ5ICAgICAg
ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2YXIgRmxvYXQgICAgICAg
PSByZXF1aXJlKCIuL2Zsb2F0Iik7Cit2YXIgSW50NjQgICAgICAgPSByZXF1aXJlKCJicy1wbGF0
Zm9ybS9saWIvanMvaW50NjQiKTsKK3ZhciBQcmludGYgICAgICA9IHJlcXVpcmUoImJzLXBsYXRm
b3JtL2xpYi9qcy9wcmludGYiKTsKK3ZhciBDYW1sX2ludDY0ICA9IHJlcXVpcmUoImJzLXBsYXRm
b3JtL2xpYi9qcy9jYW1sX2ludDY0Iik7Cit2YXIgQ2FtbF9mb3JtYXQgPSByZXF1aXJlKCJicy1w
bGF0Zm9ybS9saWIvanMvY2FtbF9mb3JtYXQiKTsKKwordmFyIGJhcmVfbmFuID0gLyogaW50NjQg
Ki9bCisgIC8qIGhpICovMjE0NjQzNTA3MiwKKyAgLyogbG8gKi8wCitdOworCitmdW5jdGlvbiBw
cmludF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzKGEpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50
Zi5zcHJpbnRmKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEludDY0ICovQmxv
Y2suX18oNywgWworICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwKKyAgICAgICAg
ICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3Jt
YXQgKi8wCisgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgIiVMeCIK
KyAgICAgICAgICAgICAgICBdKSwgSW50NjQuYWJzKC8qIGludDY0ICovWworICAgICAgICAgICAg
ICAgICAgLyogaGkgKi8vKiBoaSAqLzIxNDY0MzUwNzIgXiBhWzBdLAorICAgICAgICAgICAgICAg
ICAgLyogbG8gKi8oKC8qIGxvICovMCBeIGFbMV0pID4+PiAwKQorICAgICAgICAgICAgICAgIF0p
KTsKK30KKwordmFyIGluY2x1ZGUgPSBGbG9hdC5NYWtlKC8qIG1vZHVsZSAqL1sKKyAgICAgIC8q
IHBvc19uYW4gOiBpbnQ2NCAqL1sKKyAgICAgICAgLyogaGkgKi8yMTQ2OTU5MzYwLAorICAgICAg
ICAvKiBsbyAqLzAKKyAgICAgIF0sCisgICAgICAvKiBuZWdfbmFuIDogaW50NjQgKi9bCisgICAg
ICAgIC8qIGhpICovLTUyNDI4OCwKKyAgICAgICAgLyogbG8gKi8wCisgICAgICBdLAorICAgICAg
LyogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICovQ2FtbF9pbnQ2NC5iaXRzX29mX2Zsb2F0LAor
ICAgICAgLyogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICovQ2FtbF9pbnQ2NC5mbG9hdF9vZl9i
aXRzLAorICAgICAgLyogY2FtbF9pbnQ2NF9vZl9zdHJpbmcgKi9DYW1sX2Zvcm1hdC5jYW1sX2lu
dDY0X29mX3N0cmluZywKKyAgICAgIC8qIHRvX3N0cmluZyAqL0ludDY0LnRvX3N0cmluZywKKyAg
ICAgIC8qICVpbnQ2NF9hbmQgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJl
dHVybiAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gJiBwcmlt
JDFbMF0sCisgICAgICAgICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gJiBwcmltJDFbMV0pID4+
PiAwKQorICAgICAgICAgICAgICBdOworICAgICAgfSwKKyAgICAgIC8qICVpbnQ2NF9vciAqL2Z1
bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIC8qIGludDY0ICovWworICAg
ICAgICAgICAgICAgIC8qIGhpICovcHJpbVswXSB8IHByaW0kMVswXSwKKyAgICAgICAgICAgICAg
ICAvKiBsbyAqLygocHJpbVsxXSB8IHByaW0kMVsxXSkgPj4+IDApCisgICAgICAgICAgICAgIF07
CisgICAgICB9LAorICAgICAgLyogJWludDY0X3hvciAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEp
IHsKKyAgICAgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgIC8qIGhpICov
cHJpbVswXSBeIHByaW0kMVswXSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLygocHJpbVsxXSBe
IHByaW0kMVsxXSkgPj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9LAorICAgICAgLyog
bWluX2ludCAqL0ludDY0Lm1pbl9pbnQsCisgICAgICAvKiBtYXhfaW50ICovSW50NjQubWF4X2lu
dCwKKyAgICAgIC8qIHplcm8gKi9JbnQ2NC56ZXJvLAorICAgICAgLyogYmFyZV9uYW4gKi9iYXJl
X25hbiwKKyAgICAgIC8qIHByaW50X25hbl9zaWduaWZpY2FuZF9kaWdpdHMgKi9wcmludF9uYW5f
c2lnbmlmaWNhbmRfZGlnaXRzCisgICAgXSk7CisKK3ZhciBwb3NfbmFuID0gaW5jbHVkZVswXTsK
KwordmFyIG5lZ19uYW4gPSBpbmNsdWRlWzFdOworCit2YXIgb2ZfZmxvYXQgPSBpbmNsdWRlWzJd
OworCit2YXIgdG9fZmxvYXQgPSBpbmNsdWRlWzNdOworCit2YXIgb2Zfc3RyaW5nID0gaW5jbHVk
ZVs0XTsKKwordmFyIHRvX3N0cmluZyA9IGluY2x1ZGVbNV07CisKK3ZhciBvZl9iaXRzID0gaW5j
bHVkZVs2XTsKKwordmFyIHRvX2JpdHMgPSBpbmNsdWRlWzddOworCit2YXIgYWRkID0gaW5jbHVk
ZVs4XTsKKwordmFyIHN1YiA9IGluY2x1ZGVbOV07CisKK3ZhciBtdWwgPSBpbmNsdWRlWzEwXTsK
KwordmFyIGRpdiA9IGluY2x1ZGVbMTFdOworCit2YXIgc3FydCA9IGluY2x1ZGVbMTJdOworCit2
YXIgbWluID0gaW5jbHVkZVsxM107CisKK3ZhciBtYXggPSBpbmNsdWRlWzE0XTsKKwordmFyIGNl
aWwgPSBpbmNsdWRlWzE1XTsKKwordmFyIGZsb29yID0gaW5jbHVkZVsxNl07CisKK3ZhciB0cnVu
YyA9IGluY2x1ZGVbMTddOworCit2YXIgbmVhcmVzdCA9IGluY2x1ZGVbMThdOworCit2YXIgYWJz
ID0gaW5jbHVkZVsxOV07CisKK3ZhciBuZWcgPSBpbmNsdWRlWzIwXTsKKwordmFyIGNvcHlzaWdu
ID0gaW5jbHVkZVsyMV07CisKK3ZhciBlcSA9IGluY2x1ZGVbMjJdOworCit2YXIgbmUgPSBpbmNs
dWRlWzIzXTsKKwordmFyIGx0ID0gaW5jbHVkZVsyNF07CisKK3ZhciBsZSA9IGluY2x1ZGVbMjVd
OworCit2YXIgZ3QgPSBpbmNsdWRlWzI2XTsKKwordmFyIGdlID0gaW5jbHVkZVsyN107CisKK3Zh
ciB6ZXJvID0gaW5jbHVkZVsyOF07CisKK2V4cG9ydHMucG9zX25hbiAgID0gcG9zX25hbjsKK2V4
cG9ydHMubmVnX25hbiAgID0gbmVnX25hbjsKK2V4cG9ydHMub2ZfZmxvYXQgID0gb2ZfZmxvYXQ7
CitleHBvcnRzLnRvX2Zsb2F0ICA9IHRvX2Zsb2F0OworZXhwb3J0cy5vZl9zdHJpbmcgPSBvZl9z
dHJpbmc7CitleHBvcnRzLnRvX3N0cmluZyA9IHRvX3N0cmluZzsKK2V4cG9ydHMub2ZfYml0cyAg
ID0gb2ZfYml0czsKK2V4cG9ydHMudG9fYml0cyAgID0gdG9fYml0czsKK2V4cG9ydHMuYWRkICAg
ICAgID0gYWRkOworZXhwb3J0cy5zdWIgICAgICAgPSBzdWI7CitleHBvcnRzLm11bCAgICAgICA9
IG11bDsKK2V4cG9ydHMuZGl2ICAgICAgID0gZGl2OworZXhwb3J0cy5zcXJ0ICAgICAgPSBzcXJ0
OworZXhwb3J0cy5taW4gICAgICAgPSBtaW47CitleHBvcnRzLm1heCAgICAgICA9IG1heDsKK2V4
cG9ydHMuY2VpbCAgICAgID0gY2VpbDsKK2V4cG9ydHMuZmxvb3IgICAgID0gZmxvb3I7CitleHBv
cnRzLnRydW5jICAgICA9IHRydW5jOworZXhwb3J0cy5uZWFyZXN0ICAgPSBuZWFyZXN0OworZXhw
b3J0cy5hYnMgICAgICAgPSBhYnM7CitleHBvcnRzLm5lZyAgICAgICA9IG5lZzsKK2V4cG9ydHMu
Y29weXNpZ24gID0gY29weXNpZ247CitleHBvcnRzLmVxICAgICAgICA9IGVxOworZXhwb3J0cy5u
ZSAgICAgICAgPSBuZTsKK2V4cG9ydHMubHQgICAgICAgID0gbHQ7CitleHBvcnRzLmxlICAgICAg
ICA9IGxlOworZXhwb3J0cy5ndCAgICAgICAgPSBndDsKK2V4cG9ydHMuZ2UgICAgICAgID0gZ2U7
CitleHBvcnRzLnplcm8gICAgICA9IHplcm87CisvKiBpbmNsdWRlIE5vdCBhIHB1cmUgbW9kdWxl
ICovCisvLy8vLy8vLyBlbmQgb2YgZjY0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0
czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2Zsb2F0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKg
IGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBmbG9hdC5qcyAvLy8vLy8vLwor
Ly8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQg
V0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyICQkU3RyaW5nICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwordmFyIENh
bWxfb2JqICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxf
b2JqIik7Cit2YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvcGVydmFzaXZlcyIpOwordmFyIENhbWxfZm9ybWF0ICAgICAgICAgICAgID0gcmVx
dWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZm9ybWF0Iik7Cit2YXIgQ2FtbF9zdHJpbmcg
ICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9zdHJpbmciKTsK
K3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9q
cy9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBNYWtlKFJlcCkgeworICB2
YXIgcG9zX25hbiA9IFJlcFsvKiBwb3NfbmFuICovMF07CisgIHZhciBuZWdfbmFuID0gUmVwWy8q
IG5lZ19uYW4gKi8xXTsKKyAgdmFyIGJhcmVfbmFuID0gUmVwWy8qIGJhcmVfbmFuICovMTJdOwor
ICB2YXIgb2ZfZmxvYXQgPSBSZXBbLyogYml0c19vZl9mbG9hdCAqLzJdOworICB2YXIgdG9fZmxv
YXQgPSBSZXBbLyogZmxvYXRfb2ZfYml0cyAqLzNdOworICB2YXIgb2ZfYml0cyA9IGZ1bmN0aW9u
ICh4KSB7CisgICAgcmV0dXJuIHg7CisgIH07CisgIHZhciB0b19iaXRzID0gZnVuY3Rpb24gKHgp
IHsKKyAgICByZXR1cm4geDsKKyAgfTsKKyAgdmFyIGlzX25hbiA9IGZ1bmN0aW9uICh4KSB7Cisg
ICAgdmFyIHhmID0gQ3VycnkuXzEoUmVwWy8qIGZsb2F0X29mX2JpdHMgKi8zXSwgeCk7CisgICAg
cmV0dXJuICsoeGYgIT09IHhmKTsKKyAgfTsKKyAgdmFyIGNhbm9uaWNhbGl6ZV9uYW4gPSBmdW5j
dGlvbiAoeCkgeworICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9nb3IgKi83XSwgeCwgUmVw
Wy8qIHBvc19uYW4gKi8wXSk7CisgIH07CisgIHZhciBkZXRlcm1pbmVfYmluYXJ5X25hbiA9IGZ1
bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNhbm9uaWNhbGl6ZV9uYW4oaXNfbmFuKHgpID8g
eCA6ICgKKyAgICAgICAgICAgICAgICAgIGlzX25hbih5KSA/IHkgOiBSZXBbLyogcG9zX25hbiAq
LzBdCisgICAgICAgICAgICAgICAgKSk7CisgIH07CisgIHZhciBkZXRlcm1pbmVfdW5hcnlfbmFu
ID0gZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1cm4gY2Fub25pY2FsaXplX25hbihpc19uYW4oeCkg
PyB4IDogUmVwWy8qIHBvc19uYW4gKi8wXSk7CisgIH07CisgIHZhciBiaW5hcnkgPSBmdW5jdGlv
biAoeCwgb3AsIHkpIHsKKyAgICB2YXIgeGYgPSBDdXJyeS5fMSh0b19mbG9hdCwgeCk7CisgICAg
dmFyIHlmID0gQ3VycnkuXzEodG9fZmxvYXQsIHkpOworICAgIHZhciB0ID0gQ3VycnkuXzIob3As
IHhmLCB5Zik7CisgICAgaWYgKHQgPT09IHQpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShvZl9m
bG9hdCwgdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGRldGVybWluZV9iaW5h
cnlfbmFuKHgsIHkpOworICAgIH0KKyAgfTsKKyAgdmFyIHVuYXJ5ID0gZnVuY3Rpb24gKG9wLCB4
KSB7CisgICAgdmFyIHQgPSBDdXJyeS5fMShvcCwgQ3VycnkuXzEodG9fZmxvYXQsIHgpKTsKKyAg
ICBpZiAodCA9PT0gdCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8xKG9mX2Zsb2F0LCB0KTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gZGV0ZXJtaW5lX3VuYXJ5X25hbih4KTsKKyAg
ICB9CisgIH07CisgIHZhciB6ZXJvID0gQ3VycnkuXzEob2ZfZmxvYXQsIDAuMCk7CisgIHZhciBh
ZGQgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiBiaW5hcnkoeCwgZnVuY3Rpb24gKHBy
aW0sIHByaW0kMSkgeworICAgICAgICAgICAgICAgIHJldHVybiBwcmltICsgcHJpbSQxOworICAg
ICAgICAgICAgICB9LCB5KTsKKyAgfTsKKyAgdmFyIHN1YiA9IGZ1bmN0aW9uICh4LCB5KSB7Cisg
ICAgcmV0dXJuIGJpbmFyeSh4LCBmdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHByaW0gLSBwcmltJDE7CisgICAgICAgICAgICAgIH0sIHkpOworICB9Owor
ICB2YXIgbXVsID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gYmluYXJ5KHgsIGZ1bmN0
aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJpbSAqIHByaW0k
MTsKKyAgICAgICAgICAgICAgfSwgeSk7CisgIH07CisgIHZhciBkaXYgPSBmdW5jdGlvbiAoeCwg
eSkgeworICAgIHJldHVybiBiaW5hcnkoeCwgZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBwcmltIC8gcHJpbSQxOworICAgICAgICAgICAgICB9LCB5KTsK
KyAgfTsKKyAgdmFyIHNxcnQgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB1bmFyeShmdW5j
dGlvbiAocHJpbSkgeworICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQocHJpbSk7Cisg
ICAgICAgICAgICAgIH0sIHgpOworICB9OworICB2YXIgY2VpbCA9IGZ1bmN0aW9uICh4KSB7Cisg
ICAgcmV0dXJuIHVuYXJ5KGZ1bmN0aW9uIChwcmltKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IE1hdGguY2VpbChwcmltKTsKKyAgICAgICAgICAgICAgfSwgeCk7CisgIH07CisgIHZhciBmbG9v
ciA9IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0dXJuIHVuYXJ5KGZ1bmN0aW9uIChwcmltKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IocHJpbSk7CisgICAgICAgICAgICAgIH0s
IHgpOworICB9OworICB2YXIgdHJ1bmMgPSBmdW5jdGlvbiAoeCkgeworICAgIHZhciB4ZiA9IEN1
cnJ5Ll8xKHRvX2Zsb2F0LCB4KTsKKyAgICBpZiAoeGYgPT09IDAuMCkgeworICAgICAgcmV0dXJu
IHg7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIGYgPSB4ZiA8IDAuMCA/IE1hdGguY2Vp
bCh4ZikgOiBNYXRoLmZsb29yKHhmKTsKKyAgICAgIHZhciByZXN1bHQgPSBDdXJyeS5fMShvZl9m
bG9hdCwgZik7CisgICAgICBpZiAoaXNfbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgcmV0dXJuIGRl
dGVybWluZV91bmFyeV9uYW4ocmVzdWx0KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgfQorICAgIH0KKyAgfTsKKyAgdmFyIG5lYXJlc3QgPSBm
dW5jdGlvbiAoeCkgeworICAgIHZhciB4ZiA9IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KTsKKyAgICBp
ZiAoeGYgPT09IDAuMCkgeworICAgICAgcmV0dXJuIHg7CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgdmFyIHUgPSBNYXRoLmNlaWwoeGYpOworICAgICAgdmFyIGQgPSBNYXRoLmZsb29yKHhmKTsK
KyAgICAgIHZhciB1bSA9IE1hdGguYWJzKHhmIC0gdSk7CisgICAgICB2YXIgZG0gPSBNYXRoLmFi
cyh4ZiAtIGQpOworICAgICAgdmFyIGggPSB1IC8gMjsKKyAgICAgIHZhciB1X29yX2QgPSArKHVt
IDwgZG0gfHwgdW0gPT09IGRtICYmIE1hdGguZmxvb3IoaCkgPT09IGgpOworICAgICAgdmFyIGYg
PSB1X29yX2QgPyB1IDogZDsKKyAgICAgIHZhciByZXN1bHQgPSBDdXJyeS5fMShvZl9mbG9hdCwg
Zik7CisgICAgICBpZiAoaXNfbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgcmV0dXJuIGRldGVybWlu
ZV91bmFyeV9uYW4ocmVzdWx0KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgICAgfQorICAgIH0KKyAgfTsKKyAgdmFyIG1pbiA9IGZ1bmN0aW9uICh4
LCB5KSB7CisgICAgdmFyIHhmID0gQ3VycnkuXzEodG9fZmxvYXQsIHgpOworICAgIHZhciB5ZiA9
IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB5KTsKKyAgICBpZiAoeGYgPT09IHlmKSB7CisgICAgICByZXR1
cm4gQ3VycnkuXzIoUmVwWy8qIGxvZ29yICovN10sIHgsIHkpOworICAgIH0KKyAgICBlbHNlIGlm
ICh4ZiA8IHlmKSB7CisgICAgICByZXR1cm4geDsKKyAgICB9CisgICAgZWxzZSBpZiAoeGYgPiB5
ZikgeworICAgICAgcmV0dXJuIHk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGRl
dGVybWluZV9iaW5hcnlfbmFuKHgsIHkpOworICAgIH0KKyAgfTsKKyAgdmFyIG1heCA9IGZ1bmN0
aW9uICh4LCB5KSB7CisgICAgdmFyIHhmID0gQ3VycnkuXzEodG9fZmxvYXQsIHgpOworICAgIHZh
ciB5ZiA9IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB5KTsKKyAgICBpZiAoeGYgPT09IHlmKSB7CisgICAg
ICByZXR1cm4gQ3VycnkuXzIoUmVwWy8qIGxvZ2FuZCAqLzZdLCB4LCB5KTsKKyAgICB9CisgICAg
ZWxzZSBpZiAoeGYgPiB5ZikgeworICAgICAgcmV0dXJuIHg7CisgICAgfQorICAgIGVsc2UgaWYg
KHhmIDwgeWYpIHsKKyAgICAgIHJldHVybiB5OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJl
dHVybiBkZXRlcm1pbmVfYmluYXJ5X25hbih4LCB5KTsKKyAgICB9CisgIH07CisgIHZhciBhYnMg
PSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9nYW5kICovNl0s
IHgsIFJlcFsvKiBtYXhfaW50ICovMTBdKTsKKyAgfTsKKyAgdmFyIG5lZyA9IGZ1bmN0aW9uICh4
KSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKFJlcFsvKiBsb2d4b3IgKi84XSwgeCwgUmVwWy8qIG1p
bl9pbnQgKi85XSk7CisgIH07CisgIHZhciBjb3B5c2lnbiA9IGZ1bmN0aW9uICh4LCB5KSB7Cisg
ICAgcmV0dXJuIEN1cnJ5Ll8yKFJlcFsvKiBsb2dvciAqLzddLCBhYnMoeCksIEN1cnJ5Ll8yKFJl
cFsvKiBsb2dhbmQgKi82XSwgeSwgUmVwWy8qIG1pbl9pbnQgKi85XSkpOworICB9OworICB2YXIg
ZXEgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4
KSA9PT0gQ3VycnkuXzEodG9fZmxvYXQsIHkpKTsKKyAgfTsKKyAgdmFyIG5lID0gZnVuY3Rpb24g
KHgsIHkpIHsKKyAgICByZXR1cm4gKyhDdXJyeS5fMSh0b19mbG9hdCwgeCkgIT09IEN1cnJ5Ll8x
KHRvX2Zsb2F0LCB5KSk7CisgIH07CisgIHZhciBsdCA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAg
cmV0dXJuICsoQ3VycnkuXzEodG9fZmxvYXQsIHgpIDwgQ3VycnkuXzEodG9fZmxvYXQsIHkpKTsK
KyAgfTsKKyAgdmFyIGd0ID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gKyhDdXJyeS5f
MSh0b19mbG9hdCwgeCkgPiBDdXJyeS5fMSh0b19mbG9hdCwgeSkpOworICB9OworICB2YXIgbGUg
PSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA8
PSBDdXJyeS5fMSh0b19mbG9hdCwgeSkpOworICB9OworICB2YXIgZ2UgPSBmdW5jdGlvbiAoeCwg
eSkgeworICAgIHJldHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA+PSBDdXJyeS5fMSh0b19m
bG9hdCwgeSkpOworICB9OworICB2YXIgb2Zfc2lnbmxlc3Nfc3RyaW5nID0gZnVuY3Rpb24gKHgs
IGxlbikgeworICAgIGlmICh4ICE9PSAibmFuIiAmJiBsZW4gPiA2ICYmICQkU3RyaW5nLnN1Yih4
LCAwLCA2KSA9PT0gIm5hbjoweCIpIHsKKyAgICAgIHZhciBzID0gQ3VycnkuXzEoUmVwWy8qIG9m
X3N0cmluZyAqLzRdLCAkJFN0cmluZy5zdWIoeCwgNCwgbGVuIC0gNCB8IDApKTsKKyAgICAgIGlm
IChDYW1sX29iai5jYW1sX2VxdWFsKHMsIFJlcFsvKiB6ZXJvICovMTFdKSkgeworICAgICAgICB0
aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisg
ICAgICAgICAgICAgICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBiZSB6ZXJvIgorICAgICAgICAgICAg
XTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoQ3Vycnku
XzIoUmVwWy8qIGxvZ2FuZCAqLzZdLCBzLCBiYXJlX25hbiksIFJlcFsvKiB6ZXJvICovMTFdKSkg
eworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmZhaWx1cmUsCisgICAgICAgICAgICAgICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBvdmVybGFwIHdp
dGggZXhwb25lbnQgYml0cyIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNlIGlm
IChDYW1sX29iai5jYW1sX2xlc3N0aGFuKHMsIFJlcFsvKiB6ZXJvICovMTFdKSkgeworICAgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUs
CisgICAgICAgICAgICAgICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBvdmVybGFwIHdpdGggc2lnbiBi
aXQiCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVy
biBDdXJyeS5fMihSZXBbLyogbG9nb3IgKi83XSwgcywgYmFyZV9uYW4pOworICAgICAgfQorICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShvZl9mbG9hdCwgQ2FtbF9mb3Jt
YXQuY2FtbF9mbG9hdF9vZl9zdHJpbmcoeCkpOworICAgIH0KKyAgfTsKKyAgdmFyIG9mX3N0cmlu
ZyA9IGZ1bmN0aW9uICh4KSB7CisgICAgdmFyIGxlbiA9IHgubGVuZ3RoOworICAgIGlmIChsZW4g
PiAwICYmIENhbWxfc3RyaW5nLmdldCh4LCAwKSA9PT0gLyogIi0iICovNDUpIHsKKyAgICAgIHJl
dHVybiBuZWcob2Zfc2lnbmxlc3Nfc3RyaW5nKCQkU3RyaW5nLnN1Yih4LCAxLCBsZW4gLSAxIHwg
MCksIGxlbiAtIDEgfCAwKSk7CisgICAgfQorICAgIGVsc2UgaWYgKGxlbiA+IDAgJiYgQ2FtbF9z
dHJpbmcuZ2V0KHgsIDApID09PSAvKiAiKyIgKi80MykgeworICAgICAgcmV0dXJuIG9mX3NpZ25s
ZXNzX3N0cmluZygkJFN0cmluZy5zdWIoeCwgMSwgbGVuIC0gMSB8IDApLCBsZW4gLSAxIHwgMCk7
CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIG9mX3NpZ25sZXNzX3N0cmluZyh4LCBs
ZW4pOworICAgIH0KKyAgfTsKKyAgdmFyIHRvX3N0cmluZyA9IGZ1bmN0aW9uICh4KSB7CisgICAg
dmFyIGEgPSBhYnMoeCk7CisgICAgcmV0dXJuICgKKyAgICAgICAgICAgIENhbWxfb2JqLmNhbWxf
bGVzc3RoYW4oeCwgUmVwWy8qIHplcm8gKi8xMV0pID8gIi0iIDogIiIKKyAgICAgICAgICApICsg
KAorICAgICAgICAgICAgaXNfbmFuKGEpID8gIm5hbjoweCIgKyBDdXJyeS5fMShSZXBbLyogcHJp
bnRfbmFuX3NpZ25pZmljYW5kX2RpZ2l0cyAqLzEzXSwgYSkgOiBQZXJ2YXNpdmVzLnN0cmluZ19v
Zl9mbG9hdChDdXJyeS5fMSh0b19mbG9hdCwgYSkpCisgICAgICAgICAgKTsKKyAgfTsKKyAgcmV0
dXJuIC8qIG1vZHVsZSAqL1sKKyAgICAgICAgICAvKiBwb3NfbmFuICovcG9zX25hbiwKKyAgICAg
ICAgICAvKiBuZWdfbmFuICovbmVnX25hbiwKKyAgICAgICAgICAvKiBvZl9mbG9hdCAqL29mX2Zs
b2F0LAorICAgICAgICAgIC8qIHRvX2Zsb2F0ICovdG9fZmxvYXQsCisgICAgICAgICAgLyogb2Zf
c3RyaW5nICovb2Zfc3RyaW5nLAorICAgICAgICAgIC8qIHRvX3N0cmluZyAqL3RvX3N0cmluZywK
KyAgICAgICAgICAvKiBvZl9iaXRzICovb2ZfYml0cywKKyAgICAgICAgICAvKiB0b19iaXRzICov
dG9fYml0cywKKyAgICAgICAgICAvKiBhZGQgKi9hZGQsCisgICAgICAgICAgLyogc3ViICovc3Vi
LAorICAgICAgICAgIC8qIG11bCAqL211bCwKKyAgICAgICAgICAvKiBkaXYgKi9kaXYsCisgICAg
ICAgICAgLyogc3FydCAqL3NxcnQsCisgICAgICAgICAgLyogbWluICovbWluLAorICAgICAgICAg
IC8qIG1heCAqL21heCwKKyAgICAgICAgICAvKiBjZWlsICovY2VpbCwKKyAgICAgICAgICAvKiBm
bG9vciAqL2Zsb29yLAorICAgICAgICAgIC8qIHRydW5jICovdHJ1bmMsCisgICAgICAgICAgLyog
bmVhcmVzdCAqL25lYXJlc3QsCisgICAgICAgICAgLyogYWJzICovYWJzLAorICAgICAgICAgIC8q
IG5lZyAqL25lZywKKyAgICAgICAgICAvKiBjb3B5c2lnbiAqL2NvcHlzaWduLAorICAgICAgICAg
IC8qIGVxICovZXEsCisgICAgICAgICAgLyogbmUgKi9uZSwKKyAgICAgICAgICAvKiBsdCAqL2x0
LAorICAgICAgICAgIC8qIGxlICovbGUsCisgICAgICAgICAgLyogZ3QgKi9ndCwKKyAgICAgICAg
ICAvKiBnZSAqL2dlLAorICAgICAgICAgIC8qIHplcm8gKi96ZXJvCisgICAgICAgIF07Cit9CisK
K2V4cG9ydHMuTWFrZSA9IE1ha2U7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5k
IG9mIGZsb2F0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKwor
ICBfcmVnaXN0cnlbJ2Zvcm1hdCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9
IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgZm9ybWF0LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7
CisKK3ZhciBCbG9jayAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYmxvY2siKTsKK3Zh
ciBCeXRlcyAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnl0ZXMiKTsKK3ZhciBDdXJy
eSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBCdWZmZXIgICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnVmZmVyIik7Cit2YXIgJCRTdHJpbmcgICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL3N0cmluZyIpOwordmFyIENhbWxfaW8gICAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9jYW1sX2lvIik7Cit2YXIgQ2FtbF9vYmogICAgICAgICAgICAgICAg
PSByZXF1aXJlKCIuL2NhbWxfb2JqIik7Cit2YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9leGNlcHRpb25zIik7Cit2YXIgQ2FtbGludGVybmFsRm9ybWF0ICAgICAg
PSByZXF1aXJlKCIuL2NhbWxpbnRlcm5hbEZvcm1hdCIpOwordmFyIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlv
biBhZGRfcXVldWUoeCwgcSkgeworICB2YXIgYyA9IC8qIENvbnMgKi9bLyogcmVjb3JkICovWwor
ICAgICAgLyogaGVhZCAqL3gsCisgICAgICAvKiB0YWlsIDogTmlsICovMAorICAgIF1dOworICB2
YXIgbWF0Y2ggPSBxWy8qIGluc2VydCAqLzBdOworICBpZiAobWF0Y2gpIHsKKyAgICBxWy8qIGlu
c2VydCAqLzBdID0gYzsKKyAgICBtYXRjaFswXVsvKiB0YWlsICovMV0gPSBjOworICAgIHJldHVy
biAvKiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcVsvKiBpbnNlcnQgKi8wXSA9IGM7Cisg
ICAgcVsvKiBib2R5ICovMV0gPSBjOworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKwor
dmFyIEVtcHR5X3F1ZXVlID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiRm9ybWF0LkVtcHR5X3F1
ZXVlIik7CisKK2Z1bmN0aW9uIHBlZWtfcXVldWUocGFyYW0pIHsKKyAgdmFyIG1hdGNoID0gcGFy
YW1bLyogYm9keSAqLzFdOworICBpZiAobWF0Y2gpIHsKKyAgICByZXR1cm4gbWF0Y2hbMF1bLyog
aGVhZCAqLzBdOworICB9CisgIGVsc2UgeworICAgIHRocm93IEVtcHR5X3F1ZXVlOworICB9Cit9
CisKK2Z1bmN0aW9uIHRha2VfcXVldWUocSkgeworICB2YXIgbWF0Y2ggPSBxWy8qIGJvZHkgKi8x
XTsKKyAgaWYgKG1hdGNoKSB7CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICB2YXIg
eCA9IG1hdGNoJDFbLyogaGVhZCAqLzBdOworICAgIHZhciB0bCA9IG1hdGNoJDFbLyogdGFpbCAq
LzFdOworICAgIHFbLyogYm9keSAqLzFdID0gdGw7CisgICAgaWYgKCF0bCkgeworICAgICAgcVsv
KiBpbnNlcnQgKi8wXSA9IC8qIE5pbCAqLzA7CisgICAgfQorICAgIHJldHVybiB4OworICB9Cisg
IGVsc2UgeworICAgIHRocm93IEVtcHR5X3F1ZXVlOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2Vu
cXVldWUoc3RhdGUsIHRva2VuKSB7CisgIHN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdID0g
c3RhdGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0gKyB0b2tlblsvKiBsZW5ndGggKi8yXSB8IDA7
CisgIHJldHVybiBhZGRfcXVldWUodG9rZW4sIHN0YXRlWy8qIHBwX3F1ZXVlICovMjZdKTsKK30K
KworZnVuY3Rpb24gcHBfY2xlYXJfcXVldWUoc3RhdGUpIHsKKyAgc3RhdGVbLyogcHBfbGVmdF90
b3RhbCAqLzExXSA9IDE7CisgIHN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdID0gMTsKKyAg
dmFyIHEgPSBzdGF0ZVsvKiBwcF9xdWV1ZSAqLzI2XTsKKyAgcVsvKiBpbnNlcnQgKi8wXSA9IC8q
IE5pbCAqLzA7CisgIHFbLyogYm9keSAqLzFdID0gLyogTmlsICovMDsKKyAgcmV0dXJuIC8qICgp
ICovMDsKK30KKworZnVuY3Rpb24gcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgcykgeworICByZXR1
cm4gQ3VycnkuXzMoc3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSwgcywgMCwgcy5sZW5ndGgp
OworfQorCitmdW5jdGlvbiBicmVha19uZXdfbGluZShzdGF0ZSwgb2Zmc2V0LCB3aWR0aCkgewor
ICBDdXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkgKi8wKTsKKyAg
c3RhdGVbLyogcHBfaXNfbmV3X2xpbmUgKi8xMF0gPSAvKiB0cnVlICovMTsKKyAgdmFyIGluZGVu
dCA9IChzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSAtIHdpZHRoIHwgMCkgKyBvZmZzZXQgfCAwOwor
ICB2YXIgcmVhbF9pbmRlbnQgPSBQZXJ2YXNpdmVzLm1pbihzdGF0ZVsvKiBwcF9tYXhfaW5kZW50
ICovN10sIGluZGVudCk7CisgIHN0YXRlWy8qIHBwX2N1cnJlbnRfaW5kZW50ICovOV0gPSByZWFs
X2luZGVudDsKKyAgc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdID0gc3RhdGVbLyogcHBfbWFy
Z2luICovNV0gLSBzdGF0ZVsvKiBwcF9jdXJyZW50X2luZGVudCAqLzldIHwgMDsKKyAgcmV0dXJu
IEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX291dF9zcGFjZXMgKi8xOV0sIHN0YXRlWy8qIHBwX2N1cnJl
bnRfaW5kZW50ICovOV0pOworfQorCitmdW5jdGlvbiBicmVha19zYW1lX2xpbmUoc3RhdGUsIHdp
ZHRoKSB7CisgIHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSA9IHN0YXRlWy8qIHBwX3NwYWNl
X2xlZnQgKi84XSAtIHdpZHRoIHwgMDsKKyAgcmV0dXJuIEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX291
dF9zcGFjZXMgKi8xOV0sIHdpZHRoKTsKK30KKworZnVuY3Rpb24gcHBfZm9yY2VfYnJlYWtfbGlu
ZShzdGF0ZSkgeworICB2YXIgbWF0Y2ggPSBzdGF0ZVsvKiBwcF9mb3JtYXRfc3RhY2sgKi8xXTsK
KyAgaWYgKG1hdGNoKSB7CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICB2YXIgd2lk
dGggPSBtYXRjaCQxWzFdOworICAgIHZhciBibF90eSA9IG1hdGNoJDFbMF07CisgICAgaWYgKHdp
ZHRoID4gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdICYmIGJsX3R5ICE9PSAwICYmIGJsX3R5
IDwgNSkgeworICAgICAgcmV0dXJuIGJyZWFrX25ld19saW5lKHN0YXRlLCAwLCB3aWR0aCk7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBDdXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkg
Ki8wKTsKKyAgfQorfQorCitmdW5jdGlvbiBmb3JtYXRfcHBfdG9rZW4oc3RhdGUsIHNpemUsIHBh
cmFtKSB7CisgIGlmICh0eXBlb2YgcGFyYW0gPT09ICJudW1iZXIiKSB7CisgICAgc3dpdGNoIChw
YXJhbSkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgdmFyIG1hdGNoID0gc3RhdGVbLyog
cHBfdGJveF9zdGFjayAqLzJdOworICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAg
dmFyIHRhYnMgPSBtYXRjaFswXVswXTsKKyAgICAgICAgICAgIHZhciBhZGRfdGFiID0gZnVuY3Rp
b24gKG4sIGxzKSB7CisgICAgICAgICAgICAgIGlmIChscykgeworICAgICAgICAgICAgICAgIHZh
ciB4ID0gbHNbMF07CisgICAgICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbGVzc3RoYW4o
biwgeCkpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbHMKKyAgICAgICAg
ICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfdGFiKG4sIGxzWzFd
KQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH07CisgICAgICAgICAgICB0YWJzWzBdID0gYWRkX3RhYihzdGF0ZVsvKiBw
cF9tYXJnaW4gKi81XSAtIHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSB8IDAsIHRhYnNbMF0p
OworICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgIH0KKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHZhciBtYXRjaCQxID0gc3Rh
dGVbLyogcHBfZm9ybWF0X3N0YWNrICovMV07CisgICAgICAgICAgaWYgKG1hdGNoJDEpIHsKKyAg
ICAgICAgICAgIHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdID0gbWF0Y2gkMVsxXTsKKyAg
ICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICBjYXNl
IDIgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMiA9IHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8y
XTsKKyAgICAgICAgICBpZiAobWF0Y2gkMikgeworICAgICAgICAgICAgc3RhdGVbLyogcHBfdGJv
eF9zdGFjayAqLzJdID0gbWF0Y2gkMlsxXTsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIC8qICgp
ICovMDsKKyAgICAgICAgICB9CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gk
MyA9IHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdOworICAgICAgICAgIGlmIChtYXRjaCQz
KSB7CisgICAgICAgICAgICByZXR1cm4gYnJlYWtfbmV3X2xpbmUoc3RhdGUsIDAsIG1hdGNoJDNb
MF1bMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVy
biBDdXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkgKi8wKTsKKyAg
ICAgICAgICB9CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICBpZiAoc3RhdGVbLyogcHBfY3Vy
cmVudF9pbmRlbnQgKi85XSAhPT0gKHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdIC0gc3RhdGVbLyog
cHBfc3BhY2VfbGVmdCAqLzhdIHwgMCkpIHsKKyAgICAgICAgICAgIHZhciBzdGF0ZSQxID0gc3Rh
dGU7CisgICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IHRha2VfcXVldWUoc3RhdGUkMVsvKiBwcF9x
dWV1ZSAqLzI2XSk7CisgICAgICAgICAgICB2YXIgc2l6ZSQxID0gbWF0Y2gkNFsvKiBlbGVtX3Np
emUgKi8wXTsKKyAgICAgICAgICAgIHN0YXRlJDFbLyogcHBfbGVmdF90b3RhbCAqLzExXSA9IHN0
YXRlJDFbLyogcHBfbGVmdF90b3RhbCAqLzExXSAtIG1hdGNoJDRbLyogbGVuZ3RoICovMl0gfCAw
OworICAgICAgICAgICAgc3RhdGUkMVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gPSBzdGF0ZSQxWy8q
IHBwX3NwYWNlX2xlZnQgKi84XSArIHNpemUkMSB8IDA7CisgICAgICAgICAgICByZXR1cm4gLyog
KCkgKi8wOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgIH0KKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHZhciBtYXRjaCQ1
ID0gc3RhdGVbLyogcHBfbWFya19zdGFjayAqLzRdOworICAgICAgICAgIGlmIChtYXRjaCQ1KSB7
CisgICAgICAgICAgICB2YXIgbWFya2VyID0gQ3VycnkuXzEoc3RhdGVbLyogcHBfbWFya19jbG9z
ZV90YWcgKi8yM10sIG1hdGNoJDVbMF0pOworICAgICAgICAgICAgcHBfb3V0cHV0X3N0cmluZyhz
dGF0ZSwgbWFya2VyKTsKKyAgICAgICAgICAgIHN0YXRlWy8qIHBwX21hcmtfc3RhY2sgKi80XSA9
IG1hdGNoJDVbMV07CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAg
ICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgCisgICAgfQorICB9CisgIGVsc2UgeworICAg
IHN3aXRjaCAocGFyYW0udGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgc3Rh
dGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdID0gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIC0g
c2l6ZSB8IDA7CisgICAgICAgICAgcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgcGFyYW1bMF0pOwor
ICAgICAgICAgIHN0YXRlWy8qIHBwX2lzX25ld19saW5lICovMTBdID0gLyogZmFsc2UgKi8wOwor
ICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB2
YXIgb2ZmID0gcGFyYW1bMV07CisgICAgICAgICAgdmFyIG4gPSBwYXJhbVswXTsKKyAgICAgICAg
ICB2YXIgbWF0Y2gkNiA9IHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdOworICAgICAgICAg
IGlmIChtYXRjaCQ2KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkNyA9IG1hdGNoJDZbMF07Cisg
ICAgICAgICAgICB2YXIgd2lkdGggPSBtYXRjaCQ3WzFdOworICAgICAgICAgICAgc3dpdGNoICht
YXRjaCQ3WzBdKSB7CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICBjYXNl
IDIgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiBicmVha19uZXdfbGluZShzdGF0ZSwgb2Zm
LCB3aWR0aCk7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgaWYg
KHNpemUgPiBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGJyZWFrX25ld19saW5lKHN0YXRlLCBvZmYsIHdpZHRoKTsKKyAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVbLyogcHBf
aXNfbmV3X2xpbmUgKi8xMF0gfHwgIShzaXplID4gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhd
IHx8IHN0YXRlWy8qIHBwX2N1cnJlbnRfaW5kZW50ICovOV0gPiAoKHN0YXRlWy8qIHBwX21hcmdp
biAqLzVdIC0gd2lkdGggfCAwKSArIG9mZiB8IDApKSkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWtf
bmV3X2xpbmUoc3RhdGUsIG9mZiwgd2lkdGgpOworICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAg
ICAgICByZXR1cm4gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgCisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
cmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICB2YXIgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGVbLyogcHBfbWFy
Z2luICovNV0gLSBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gfCAwOworICAgICAgICAgIHZh
ciBtYXRjaCQ4ID0gc3RhdGVbLyogcHBfdGJveF9zdGFjayAqLzJdOworICAgICAgICAgIGlmICht
YXRjaCQ4KSB7CisgICAgICAgICAgICB2YXIgdGFicyQxID0gbWF0Y2gkOFswXVswXTsKKyAgICAg
ICAgICAgIHZhciBmaW5kID0gZnVuY3Rpb24gKG4sIF9wYXJhbSkgeworICAgICAgICAgICAgICB3
aGlsZSh0cnVlKSB7CisgICAgICAgICAgICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgICAg
ICAgICAgICAgIGlmIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgdmFyIHggPSBwYXJhbVsw
XTsKKyAgICAgICAgICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbCh4LCBu
KSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBfcGFyYW0gPSBw
YXJhbVsxXTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5ub3RfZm91bmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gdGFicyQxWzBdOworICAgICAg
ICAgICAgdmFyIHRhYjsKKyAgICAgICAgICAgIGlmIChtYXRjaCQ5KSB7CisgICAgICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAgICAgdGFiID0gZmluZChpbnNlcnRpb25fcG9pbnQsIHRhYnMk
MVswXSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgY2F0Y2ggKGV4bil7CisgICAg
ICAgICAgICAgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5k
KSB7CisgICAgICAgICAgICAgICAgICB0YWIgPSBtYXRjaCQ5WzBdOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHRocm93IGV4bjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICB0YWIgPSBpbnNlcnRpb25fcG9pbnQ7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50
IHwgMDsKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPj0gMCkgeworICAgICAgICAgICAgICByZXR1
cm4gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCBvZmZzZXQgKyBwYXJhbVswXSB8IDApOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBicmVha19u
ZXdfbGluZShzdGF0ZSwgdGFiICsgcGFyYW1bMV0gfCAwLCBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81
XSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgdHkgPSBwYXJhbVsxXTsKKyAgICAgICAgICB2
YXIgaW5zZXJ0aW9uX3BvaW50JDEgPSBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSAtIHN0YXRlWy8q
IHBwX3NwYWNlX2xlZnQgKi84XSB8IDA7CisgICAgICAgICAgaWYgKGluc2VydGlvbl9wb2ludCQx
ID4gc3RhdGVbLyogcHBfbWF4X2luZGVudCAqLzddKSB7CisgICAgICAgICAgICBwcF9mb3JjZV9i
cmVha19saW5lKHN0YXRlKTsKKyAgICAgICAgICB9CisgICAgICAgICAgdmFyIG9mZnNldCQxID0g
c3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIC0gcGFyYW1bMF0gfCAwOworICAgICAgICAgIHZh
ciBibF90eXBlID0gdHkgIT09IDEgPyAoCisgICAgICAgICAgICAgIHNpemUgPiBzdGF0ZVsvKiBw
cF9zcGFjZV9sZWZ0ICovOF0gPyB0eSA6IC8qIFBwX2ZpdHMgKi81CisgICAgICAgICAgICApIDog
LyogUHBfdmJveCAqLzE7CisgICAgICAgICAgc3RhdGVbLyogcHBfZm9ybWF0X3N0YWNrICovMV0g
PSAvKiA6OiAqL1sKKyAgICAgICAgICAgIC8qIEZvcm1hdF9lbGVtICovWworICAgICAgICAgICAg
ICBibF90eXBlLAorICAgICAgICAgICAgICBvZmZzZXQkMQorICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgIHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdCisgICAgICAgICAgXTsKKyAgICAg
ICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgc3RhdGVb
LyogcHBfdGJveF9zdGFjayAqLzJdID0gLyogOjogKi9bCisgICAgICAgICAgICBwYXJhbVswXSwK
KyAgICAgICAgICAgIHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXQorICAgICAgICAgIF07Cisg
ICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHZh
ciB0YWdfbmFtZSA9IHBhcmFtWzBdOworICAgICAgICAgIHZhciBtYXJrZXIkMSA9IEN1cnJ5Ll8x
KHN0YXRlWy8qIHBwX21hcmtfb3Blbl90YWcgKi8yMl0sIHRhZ19uYW1lKTsKKyAgICAgICAgICBw
cF9vdXRwdXRfc3RyaW5nKHN0YXRlLCBtYXJrZXIkMSk7CisgICAgICAgICAgc3RhdGVbLyogcHBf
bWFya19zdGFjayAqLzRdID0gLyogOjogKi9bCisgICAgICAgICAgICB0YWdfbmFtZSwKKyAgICAg
ICAgICAgIHN0YXRlWy8qIHBwX21hcmtfc3RhY2sgKi80XQorICAgICAgICAgIF07CisgICAgICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBh
ZHZhbmNlX2xlZnQoc3RhdGUpIHsKKyAgdHJ5IHsKKyAgICB2YXIgc3RhdGUkMSA9IHN0YXRlOwor
ICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBtYXRjaCA9IHBlZWtfcXVldWUoc3RhdGUkMVsv
KiBwcF9xdWV1ZSAqLzI2XSk7CisgICAgICB2YXIgc2l6ZSA9IG1hdGNoWy8qIGVsZW1fc2l6ZSAq
LzBdOworICAgICAgaWYgKHNpemUgPCAwICYmIChzdGF0ZSQxWy8qIHBwX3JpZ2h0X3RvdGFsICov
MTJdIC0gc3RhdGUkMVsvKiBwcF9sZWZ0X3RvdGFsICovMTFdIHwgMCkgPCBzdGF0ZSQxWy8qIHBw
X3NwYWNlX2xlZnQgKi84XSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICB0YWtlX3F1ZXVlKHN0YXRlJDFbLyogcHBfcXVldWUgKi8yNl0pOworICAg
ICAgICBmb3JtYXRfcHBfdG9rZW4oc3RhdGUkMSwgc2l6ZSA8IDAgPyAxMDAwMDAwMDEwIDogc2l6
ZSwgbWF0Y2hbLyogdG9rZW4gKi8xXSk7CisgICAgICAgIHN0YXRlJDFbLyogcHBfbGVmdF90b3Rh
bCAqLzExXSA9IG1hdGNoWy8qIGxlbmd0aCAqLzJdICsgc3RhdGUkMVsvKiBwcF9sZWZ0X3RvdGFs
ICovMTFdIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9
OworICB9CisgIGNhdGNoIChleG4peworICAgIGlmIChleG4gPT09IEVtcHR5X3F1ZXVlKSB7Cisg
ICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IGV4
bjsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gZW5xdWV1ZV9hZHZhbmNlKHN0YXRlLCB0b2sp
IHsKKyAgcHBfZW5xdWV1ZShzdGF0ZSwgdG9rKTsKKyAgcmV0dXJuIGFkdmFuY2VfbGVmdChzdGF0
ZSk7Cit9CisKK2Z1bmN0aW9uIGVucXVldWVfc3RyaW5nX2FzKHN0YXRlLCBzaXplLCBzKSB7Cisg
IHJldHVybiBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAg
ICAgLyogZWxlbV9zaXplICovc2l6ZSwKKyAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF90ZXh0
ICovQmxvY2suX18oMCwgW3NdKSwKKyAgICAgICAgICAgICAgLyogbGVuZ3RoICovc2l6ZQorICAg
ICAgICAgICAgXSk7Cit9CisKK3ZhciBxX2VsZW0gPSAvKiByZWNvcmQgKi9bCisgIC8qIGVsZW1f
c2l6ZSAqLy0xLAorICAvKiB0b2tlbiA6IFBwX3RleHQgKi9CbG9jay5fXygwLCBbIiJdKSwKKyAg
LyogbGVuZ3RoICovMAorXTsKKwordmFyIHNjYW5fc3RhY2tfYm90dG9tXzAwMCA9IC8qIFNjYW5f
ZWxlbSAqL1sKKyAgLTEsCisgIHFfZWxlbQorXTsKKwordmFyIHNjYW5fc3RhY2tfYm90dG9tID0g
LyogOjogKi9bCisgIHNjYW5fc3RhY2tfYm90dG9tXzAwMCwKKyAgLyogW10gKi8wCitdOworCitm
dW5jdGlvbiBzZXRfc2l6ZShzdGF0ZSwgdHkpIHsKKyAgdmFyIG1hdGNoID0gc3RhdGVbLyogcHBf
c2Nhbl9zdGFjayAqLzBdOworICBpZiAobWF0Y2gpIHsKKyAgICB2YXIgbWF0Y2gkMSA9IG1hdGNo
WzBdOworICAgIHZhciBxdWV1ZV9lbGVtID0gbWF0Y2gkMVsxXTsKKyAgICB2YXIgc2l6ZSA9IHF1
ZXVlX2VsZW1bLyogZWxlbV9zaXplICovMF07CisgICAgdmFyIHQgPSBtYXRjaFsxXTsKKyAgICBp
ZiAobWF0Y2gkMVswXSA8IHN0YXRlWy8qIHBwX2xlZnRfdG90YWwgKi8xMV0pIHsKKyAgICAgIHN0
YXRlWy8qIHBwX3NjYW5fc3RhY2sgKi8wXSA9IHNjYW5fc3RhY2tfYm90dG9tOworICAgICAgcmV0
dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgZXhpdCA9IDA7Cisg
ICAgICB2YXIgJGpzID0gcXVldWVfZWxlbVsvKiB0b2tlbiAqLzFdOworICAgICAgaWYgKHR5cGVv
ZiAkanMgPT09ICJudW1iZXIiKSB7CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9
CisgICAgICBlbHNlIHsKKyAgICAgICAgc3dpdGNoICgkanMudGFnIHwgMCkgeworICAgICAgICAg
IGNhc2UgMSA6IAorICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICBleGl0ID0gMTsK
KyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAg
IGlmICh0eSkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHF1ZXVlX2VsZW1bLyogZWxlbV9z
aXplICovMF0gPSBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSArIHNpemUgfCAwOworICAg
ICAgICAgICAgICAgIHN0YXRlWy8qIHBwX3NjYW5fc3RhY2sgKi8wXSA9IHQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICBpZiAodHkpIHsKKyAgICAgICAgICBxdWV1
ZV9lbGVtWy8qIGVsZW1fc2l6ZSAqLzBdID0gc3RhdGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0g
KyBzaXplIHwgMDsKKyAgICAgICAgICBzdGF0ZVsvKiBwcF9zY2FuX3N0YWNrICovMF0gPSB0Owor
ICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAgIH0KKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHNj
YW5fcHVzaChzdGF0ZSwgYiwgdG9rKSB7CisgIHBwX2VucXVldWUoc3RhdGUsIHRvayk7CisgIGlm
IChiKSB7CisgICAgc2V0X3NpemUoc3RhdGUsIC8qIHRydWUgKi8xKTsKKyAgfQorICBzdGF0ZVsv
KiBwcF9zY2FuX3N0YWNrICovMF0gPSAvKiA6OiAqL1sKKyAgICAvKiBTY2FuX2VsZW0gKi9bCisg
ICAgICBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSwKKyAgICAgIHRvaworICAgIF0sCisg
ICAgc3RhdGVbLyogcHBfc2Nhbl9zdGFjayAqLzBdCisgIF07CisgIHJldHVybiAvKiAoKSAqLzA7
Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCBicl90eSkgewor
ICBzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdID0gc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAq
LzEzXSArIDEgfCAwOworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRl
Wy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgIHZhciBlbGVtID0gLyogcmVjb3JkICovWwor
ICAgICAgLyogZWxlbV9zaXplICovLXN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdIHwgMCwK
KyAgICAgIC8qIHRva2VuIDogUHBfYmVnaW4gKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgaW5k
ZW50LAorICAgICAgICAgIGJyX3R5CisgICAgICAgIF0pLAorICAgICAgLyogbGVuZ3RoICovMAor
ICAgIF07CisgICAgcmV0dXJuIHNjYW5fcHVzaChzdGF0ZSwgLyogZmFsc2UgKi8wLCBlbGVtKTsK
KyAgfQorICBlbHNlIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdID09PSBzdGF0ZVsv
KiBwcF9tYXhfYm94ZXMgKi8xNF0pIHsKKyAgICB2YXIgc3RhdGUkMSA9IHN0YXRlOworICAgIHZh
ciBzID0gc3RhdGVbLyogcHBfZWxsaXBzaXMgKi8xNV07CisgICAgdmFyIGxlbiA9IHMubGVuZ3Ro
OworICAgIHJldHVybiBlbnF1ZXVlX3N0cmluZ19hcyhzdGF0ZSQxLCBsZW4sIHMpOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2Nsb3NlX2JveChz
dGF0ZSwgXykgeworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA+IDEpIHsKKyAg
ICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hl
cyAqLzE0XSkgeworICAgICAgcHBfZW5xdWV1ZShzdGF0ZSwgLyogcmVjb3JkICovWworICAgICAg
ICAgICAgLyogZWxlbV9zaXplICovMCwKKyAgICAgICAgICAgIC8qIHRva2VuIDogUHBfZW5kICov
MSwKKyAgICAgICAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgICAgICBdKTsKKyAgICAgIHNldF9z
aXplKHN0YXRlLCAvKiB0cnVlICovMSk7CisgICAgICBzZXRfc2l6ZShzdGF0ZSwgLyogZmFsc2Ug
Ki8wKTsKKyAgICB9CisgICAgc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9IHN0YXRlWy8q
IHBwX2N1cnJfZGVwdGggKi8xM10gLSAxIHwgMDsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5fdGFn
KHN0YXRlLCB0YWdfbmFtZSkgeworICBpZiAoc3RhdGVbLyogcHBfcHJpbnRfdGFncyAqLzIwXSkg
eworICAgIHN0YXRlWy8qIHBwX3RhZ19zdGFjayAqLzNdID0gLyogOjogKi9bCisgICAgICB0YWdf
bmFtZSwKKyAgICAgIHN0YXRlWy8qIHBwX3RhZ19zdGFjayAqLzNdCisgICAgXTsKKyAgICBDdXJy
eS5fMShzdGF0ZVsvKiBwcF9wcmludF9vcGVuX3RhZyAqLzI0XSwgdGFnX25hbWUpOworICB9Cisg
IGlmIChzdGF0ZVsvKiBwcF9tYXJrX3RhZ3MgKi8yMV0pIHsKKyAgICByZXR1cm4gcHBfZW5xdWV1
ZShzdGF0ZSwgLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgIC8qIGVsZW1fc2l6ZSAqLzAs
CisgICAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF9vcGVuX3RhZyAqL0Jsb2NrLl9fKDUsIFt0
YWdfbmFtZV0pLAorICAgICAgICAgICAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgICAgICAgICAg
XSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gcHBf
Y2xvc2VfdGFnKHN0YXRlLCBfKSB7CisgIGlmIChzdGF0ZVsvKiBwcF9tYXJrX3RhZ3MgKi8yMV0p
IHsKKyAgICBwcF9lbnF1ZXVlKHN0YXRlLCAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogZWxl
bV9zaXplICovMCwKKyAgICAgICAgICAvKiB0b2tlbiA6IFBwX2Nsb3NlX3RhZyAqLzUsCisgICAg
ICAgICAgLyogbGVuZ3RoICovMAorICAgICAgICBdKTsKKyAgfQorICBpZiAoc3RhdGVbLyogcHBf
cHJpbnRfdGFncyAqLzIwXSkgeworICAgIHZhciBtYXRjaCA9IHN0YXRlWy8qIHBwX3RhZ19zdGFj
ayAqLzNdOworICAgIGlmIChtYXRjaCkgeworICAgICAgQ3VycnkuXzEoc3RhdGVbLyogcHBfcHJp
bnRfY2xvc2VfdGFnICovMjVdLCBtYXRjaFswXSk7CisgICAgICBzdGF0ZVsvKiBwcF90YWdfc3Rh
Y2sgKi8zXSA9IG1hdGNoWzFdOworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9zZXRfcHJpbnRfdGFncyhzdGF0ZSwg
YikgeworICBzdGF0ZVsvKiBwcF9wcmludF90YWdzICovMjBdID0gYjsKKyAgcmV0dXJuIC8qICgp
ICovMDsKK30KKworZnVuY3Rpb24gcHBfc2V0X21hcmtfdGFncyhzdGF0ZSwgYikgeworICBzdGF0
ZVsvKiBwcF9tYXJrX3RhZ3MgKi8yMV0gPSBiOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitm
dW5jdGlvbiBwcF9nZXRfcHJpbnRfdGFncyhzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyog
cHBfcHJpbnRfdGFncyAqLzIwXTsKK30KKworZnVuY3Rpb24gcHBfZ2V0X21hcmtfdGFncyhzdGF0
ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBfbWFya190YWdzICovMjFdOworfQorCitmdW5j
dGlvbiBwcF9zZXRfdGFncyhzdGF0ZSwgYikgeworICBzdGF0ZVsvKiBwcF9wcmludF90YWdzICov
MjBdID0gYjsKKyAgc3RhdGVbLyogcHBfbWFya190YWdzICovMjFdID0gYjsKKyAgcmV0dXJuIC8q
ICgpICovMDsKK30KKworZnVuY3Rpb24gcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zKHN0
YXRlLCBfKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogbWFya19vcGVu
X3RhZyAqL3N0YXRlWy8qIHBwX21hcmtfb3Blbl90YWcgKi8yMl0sCisgICAgICAgICAgLyogbWFy
a19jbG9zZV90YWcgKi9zdGF0ZVsvKiBwcF9tYXJrX2Nsb3NlX3RhZyAqLzIzXSwKKyAgICAgICAg
ICAvKiBwcmludF9vcGVuX3RhZyAqL3N0YXRlWy8qIHBwX3ByaW50X29wZW5fdGFnICovMjRdLAor
ICAgICAgICAgIC8qIHByaW50X2Nsb3NlX3RhZyAqL3N0YXRlWy8qIHBwX3ByaW50X2Nsb3NlX3Rh
ZyAqLzI1XQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBwcF9zZXRfZm9ybWF0dGVyX3RhZ19m
dW5jdGlvbnMoc3RhdGUsIHBhcmFtKSB7CisgIHN0YXRlWy8qIHBwX21hcmtfb3Blbl90YWcgKi8y
Ml0gPSBwYXJhbVsvKiBtYXJrX29wZW5fdGFnICovMF07CisgIHN0YXRlWy8qIHBwX21hcmtfY2xv
c2VfdGFnICovMjNdID0gcGFyYW1bLyogbWFya19jbG9zZV90YWcgKi8xXTsKKyAgc3RhdGVbLyog
cHBfcHJpbnRfb3Blbl90YWcgKi8yNF0gPSBwYXJhbVsvKiBwcmludF9vcGVuX3RhZyAqLzJdOwor
ICBzdGF0ZVsvKiBwcF9wcmludF9jbG9zZV90YWcgKi8yNV0gPSBwYXJhbVsvKiBwcmludF9jbG9z
ZV90YWcgKi8zXTsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gcHBfcmluaXQo
c3RhdGUpIHsKKyAgcHBfY2xlYXJfcXVldWUoc3RhdGUpOworICBzdGF0ZVsvKiBwcF9zY2FuX3N0
YWNrICovMF0gPSBzY2FuX3N0YWNrX2JvdHRvbTsKKyAgc3RhdGVbLyogcHBfZm9ybWF0X3N0YWNr
ICovMV0gPSAvKiBbXSAqLzA7CisgIHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXSA9IC8qIFtd
ICovMDsKKyAgc3RhdGVbLyogcHBfdGFnX3N0YWNrICovM10gPSAvKiBbXSAqLzA7CisgIHN0YXRl
Wy8qIHBwX21hcmtfc3RhY2sgKi80XSA9IC8qIFtdICovMDsKKyAgc3RhdGVbLyogcHBfY3VycmVu
dF9pbmRlbnQgKi85XSA9IDA7CisgIHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPSAwOwor
ICBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gPSBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XTsK
KyAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgMCwgLyogUHBfaG92Ym94ICovMyk7Cit9
CisKK2Z1bmN0aW9uIHBwX2ZsdXNoX3F1ZXVlKHN0YXRlLCBiKSB7CisgIHdoaWxlKHN0YXRlWy8q
IHBwX2N1cnJfZGVwdGggKi8xM10gPiAxKSB7CisgICAgcHBfY2xvc2VfYm94KHN0YXRlLCAvKiAo
KSAqLzApOworICB9OworICBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSA9IDEwMDAwMDAw
MTA7CisgIGFkdmFuY2VfbGVmdChzdGF0ZSk7CisgIGlmIChiKSB7CisgICAgQ3VycnkuXzEoc3Rh
dGVbLyogcHBfb3V0X25ld2xpbmUgKi8xOF0sIC8qICgpICovMCk7CisgIH0KKyAgcmV0dXJuIHBw
X3Jpbml0KHN0YXRlKTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfYXNfc2l6ZShzdGF0ZSwgc2l6
ZSwgcykgeworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBw
X21heF9ib3hlcyAqLzE0XSkgeworICAgIHJldHVybiBlbnF1ZXVlX3N0cmluZ19hcyhzdGF0ZSwg
c2l6ZSwgcyk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKwordmFyIHBw
X3ByaW50X2FzID0gcHBfcHJpbnRfYXNfc2l6ZTsKKworZnVuY3Rpb24gcHBfcHJpbnRfc3RyaW5n
KHN0YXRlLCBzKSB7CisgIHJldHVybiBwcF9wcmludF9hcyhzdGF0ZSwgcy5sZW5ndGgsIHMpOwor
fQorCitmdW5jdGlvbiBwcF9wcmludF9pbnQoc3RhdGUsIGkpIHsKKyAgcmV0dXJuIHBwX3ByaW50
X3N0cmluZyhzdGF0ZSwgIiIgKyBpKTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfZmxvYXQoc3Rh
dGUsIGYpIHsKKyAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGF0ZSwgUGVydmFzaXZlcy5zdHJp
bmdfb2ZfZmxvYXQoZikpOworfQorCitmdW5jdGlvbiBwcF9wcmludF9ib29sKHN0YXRlLCBiKSB7
CisgIHJldHVybiBwcF9wcmludF9zdHJpbmcoc3RhdGUsIGIgPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
K30KKworZnVuY3Rpb24gcHBfcHJpbnRfY2hhcihzdGF0ZSwgYykgeworICByZXR1cm4gcHBfcHJp
bnRfYXMoc3RhdGUsIDEsIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5tYWtlKDEs
IGMpKSk7Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5faGJveChzdGF0ZSwgXykgeworICByZXR1cm4g
cHBfb3Blbl9ib3hfZ2VuKHN0YXRlLCAwLCAvKiBQcF9oYm94ICovMCk7Cit9CisKK2Z1bmN0aW9u
IHBwX29wZW5fdmJveChzdGF0ZSwgaW5kZW50KSB7CisgIHJldHVybiBwcF9vcGVuX2JveF9nZW4o
c3RhdGUsIGluZGVudCwgLyogUHBfdmJveCAqLzEpOworfQorCitmdW5jdGlvbiBwcF9vcGVuX2h2
Ym94KHN0YXRlLCBpbmRlbnQpIHsKKyAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5k
ZW50LCAvKiBQcF9odmJveCAqLzIpOworfQorCitmdW5jdGlvbiBwcF9vcGVuX2hvdmJveChzdGF0
ZSwgaW5kZW50KSB7CisgIHJldHVybiBwcF9vcGVuX2JveF9nZW4oc3RhdGUsIGluZGVudCwgLyog
UHBfaG92Ym94ICovMyk7Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5fYm94KHN0YXRlLCBpbmRlbnQp
IHsKKyAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCAvKiBQcF9ib3ggKi80
KTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfbmV3bGluZShzdGF0ZSwgXykgeworICBwcF9mbHVz
aF9xdWV1ZShzdGF0ZSwgLyogdHJ1ZSAqLzEpOworICByZXR1cm4gQ3VycnkuXzEoc3RhdGVbLyog
cHBfb3V0X2ZsdXNoICovMTddLCAvKiAoKSAqLzApOworfQorCitmdW5jdGlvbiBwcF9wcmludF9m
bHVzaChzdGF0ZSwgXykgeworICBwcF9mbHVzaF9xdWV1ZShzdGF0ZSwgLyogZmFsc2UgKi8wKTsK
KyAgcmV0dXJuIEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XSwgLyogKCkgKi8w
KTsKK30KKworZnVuY3Rpb24gcHBfZm9yY2VfbmV3bGluZShzdGF0ZSwgXykgeworICBpZiAoc3Rh
dGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkg
eworICAgIHJldHVybiBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIC8qIHJlY29yZCAqL1sKKyAgICAg
ICAgICAgICAgICAvKiBlbGVtX3NpemUgKi8wLAorICAgICAgICAgICAgICAgIC8qIHRva2VuIDog
UHBfbmV3bGluZSAqLzMsCisgICAgICAgICAgICAgICAgLyogbGVuZ3RoICovMAorICAgICAgICAg
ICAgICBdKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlv
biBwcF9wcmludF9pZl9uZXdsaW5lKHN0YXRlLCBfKSB7CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJy
X2RlcHRoICovMTNdIDwgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7CisgICAgcmV0dXJu
IGVucXVldWVfYWR2YW5jZShzdGF0ZSwgLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgIC8q
IGVsZW1fc2l6ZSAqLzAsCisgICAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF9pZl9uZXdsaW5l
ICovNCwKKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggKi8wCisgICAgICAgICAgICAgIF0pOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50
X2JyZWFrKHN0YXRlLCB3aWR0aCwgb2Zmc2V0KSB7CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2Rl
cHRoICovMTNdIDwgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7CisgICAgdmFyIGVsZW0g
PSAvKiByZWNvcmQgKi9bCisgICAgICAvKiBlbGVtX3NpemUgKi8tc3RhdGVbLyogcHBfcmlnaHRf
dG90YWwgKi8xMl0gfCAwLAorICAgICAgLyogdG9rZW4gOiBQcF9icmVhayAqL0Jsb2NrLl9fKDEs
IFsKKyAgICAgICAgICB3aWR0aCwKKyAgICAgICAgICBvZmZzZXQKKyAgICAgICAgXSksCisgICAg
ICAvKiBsZW5ndGggKi93aWR0aAorICAgIF07CisgICAgcmV0dXJuIHNjYW5fcHVzaChzdGF0ZSwg
LyogdHJ1ZSAqLzEsIGVsZW0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9
CisKK2Z1bmN0aW9uIHBwX3ByaW50X3NwYWNlKHN0YXRlLCBfKSB7CisgIHJldHVybiBwcF9wcmlu
dF9icmVhayhzdGF0ZSwgMSwgMCk7Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X2N1dChzdGF0ZSwg
XykgeworICByZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3RhdGUsIDAsIDApOworfQorCitmdW5jdGlv
biBwcF9vcGVuX3Rib3goc3RhdGUsIF8pIHsKKyAgc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEz
XSA9IHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gKyAxIHwgMDsKKyAgaWYgKHN0YXRlWy8q
IHBwX2N1cnJfZGVwdGggKi8xM10gPCBzdGF0ZVsvKiBwcF9tYXhfYm94ZXMgKi8xNF0pIHsKKyAg
ICB2YXIgZWxlbSA9IC8qIHJlY29yZCAqL1sKKyAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisgICAg
ICAvKiB0b2tlbiA6IFBwX3RiZWdpbiAqL0Jsb2NrLl9fKDQsIFsvKiBQcF90Ym94ICovW1svKiBb
XSAqLzBdXV0pLAorICAgICAgLyogbGVuZ3RoICovMAorICAgIF07CisgICAgcmV0dXJuIGVucXVl
dWVfYWR2YW5jZShzdGF0ZSwgZWxlbSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7Cisg
IH0KK30KKworZnVuY3Rpb24gcHBfY2xvc2VfdGJveChzdGF0ZSwgXykgeworICBpZiAoc3RhdGVb
LyogcHBfY3Vycl9kZXB0aCAqLzEzXSA+IDEpIHsKKyAgICBpZiAoc3RhdGVbLyogcHBfY3Vycl9k
ZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgICAgdmFyIGVs
ZW0gPSAvKiByZWNvcmQgKi9bCisgICAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisgICAgICAgIC8q
IHRva2VuIDogUHBfdGVuZCAqLzIsCisgICAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgIF07Cisg
ICAgICBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIGVsZW0pOworICAgICAgc3RhdGVbLyogcHBfY3Vy
cl9kZXB0aCAqLzEzXSA9IHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gLSAxIHwgMDsKKyAg
ICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIDA7
CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9u
IHBwX3ByaW50X3RicmVhayhzdGF0ZSwgd2lkdGgsIG9mZnNldCkgeworICBpZiAoc3RhdGVbLyog
cHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAg
IHZhciBlbGVtID0gLyogcmVjb3JkICovWworICAgICAgLyogZWxlbV9zaXplICovLXN0YXRlWy8q
IHBwX3JpZ2h0X3RvdGFsICovMTJdIHwgMCwKKyAgICAgIC8qIHRva2VuIDogUHBfdGJyZWFrICov
QmxvY2suX18oMiwgWworICAgICAgICAgIHdpZHRoLAorICAgICAgICAgIG9mZnNldAorICAgICAg
ICBdKSwKKyAgICAgIC8qIGxlbmd0aCAqL3dpZHRoCisgICAgXTsKKyAgICByZXR1cm4gc2Nhbl9w
dXNoKHN0YXRlLCAvKiB0cnVlICovMSwgZWxlbSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IDA7CisgIH0KK30KKworZnVuY3Rpb24gcHBfcHJpbnRfdGFiKHN0YXRlLCBfKSB7CisgIHJldHVy
biBwcF9wcmludF90YnJlYWsoc3RhdGUsIDAsIDApOworfQorCitmdW5jdGlvbiBwcF9zZXRfdGFi
KHN0YXRlLCBfKSB7CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdIDwgc3RhdGVb
LyogcHBfbWF4X2JveGVzICovMTRdKSB7CisgICAgdmFyIGVsZW0gPSAvKiByZWNvcmQgKi9bCisg
ICAgICAvKiBlbGVtX3NpemUgKi8wLAorICAgICAgLyogdG9rZW4gOiBQcF9zdGFiICovMCwKKyAg
ICAgIC8qIGxlbmd0aCAqLzAKKyAgICBdOworICAgIHJldHVybiBlbnF1ZXVlX2FkdmFuY2Uoc3Rh
dGUsIGVsZW0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0
aW9uIHBwX3ByaW50X2xpc3QoXyRzdGFyb3B0JHN0YXIsIHBwX3YsIHBwZiwgX3BhcmFtKSB7Cisg
IHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgdmFyICRzdGFyb3B0
JHN0YXIgPSBfJHN0YXJvcHQkc3RhcjsKKyAgICB2YXIgcHBfc2VwID0gJHN0YXJvcHQkc3RhciA/
ICRzdGFyb3B0JHN0YXJbMF0gOiBwcF9wcmludF9jdXQ7CisgICAgaWYgKHBhcmFtKSB7CisgICAg
ICB2YXIgdnMgPSBwYXJhbVsxXTsKKyAgICAgIHZhciB2ID0gcGFyYW1bMF07CisgICAgICBpZiAo
dnMpIHsKKyAgICAgICAgQ3VycnkuXzIocHBfdiwgcHBmLCB2KTsKKyAgICAgICAgQ3VycnkuXzIo
cHBfc2VwLCBwcGYsIC8qICgpICovMCk7CisgICAgICAgIF9wYXJhbSA9IHZzOworICAgICAgICBf
JHN0YXJvcHQkc3RhciA9IC8qIFNvbWUgKi9bcHBfc2VwXTsKKyAgICAgICAgY29udGludWUgOwor
ICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gQ3VycnkuXzIo
cHBfdiwgcHBmLCB2KTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfdGV4dChwcGYs
IHMpIHsKKyAgdmFyIGxlbiA9IHMubGVuZ3RoOworICB2YXIgbGVmdCA9IFswXTsKKyAgdmFyIHJp
Z2h0ID0gWzBdOworICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7CisgICAgcHBfcHJpbnRfc3Ry
aW5nKHBwZiwgJCRTdHJpbmcuc3ViKHMsIGxlZnRbMF0sIHJpZ2h0WzBdIC0gbGVmdFswXSB8IDAp
KTsKKyAgICByaWdodFswXSA9IHJpZ2h0WzBdICsgMSB8IDA7CisgICAgbGVmdFswXSA9IHJpZ2h0
WzBdOworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH07CisgIHdoaWxlKHJpZ2h0WzBdICE9PSBs
ZW4pIHsKKyAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQocywgcmlnaHRbMF0pOworICAg
IGlmIChtYXRjaCAhPT0gMTApIHsKKyAgICAgIGlmIChtYXRjaCAhPT0gMzIpIHsKKyAgICAgICAg
cmlnaHRbMF0gPSByaWdodFswXSArIDEgfCAwOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIGZsdXNoKC8qICgpICovMCk7CisgICAgICAgIHBwX3ByaW50X2JyZWFrKHBwZiwgMSwgMCk7
CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgZmx1c2goLyogKCkgKi8wKTsKKyAg
ICAgIHBwX2ZvcmNlX25ld2xpbmUocHBmLCAvKiAoKSAqLzApOworICAgIH0KKyAgfTsKKyAgaWYg
KGxlZnRbMF0gIT09IGxlbikgeworICAgIHJldHVybiBmbHVzaCgvKiAoKSAqLzApOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3NldF9tYXhfYm94
ZXMoc3RhdGUsIG4pIHsKKyAgaWYgKG4gPiAxKSB7CisgICAgc3RhdGVbLyogcHBfbWF4X2JveGVz
ICovMTRdID0gbjsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9tYXhfYm94ZXMoc3RhdGUsIF8pIHsK
KyAgcmV0dXJuIHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XTsKK30KKworZnVuY3Rpb24gcHBf
b3Zlcl9tYXhfYm94ZXMoc3RhdGUsIF8pIHsKKyAgcmV0dXJuICsoc3RhdGVbLyogcHBfY3Vycl9k
ZXB0aCAqLzEzXSA9PT0gc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKTsKK30KKworZnVuY3Rp
b24gcHBfc2V0X2VsbGlwc2lzX3RleHQoc3RhdGUsIHMpIHsKKyAgc3RhdGVbLyogcHBfZWxsaXBz
aXMgKi8xNV0gPSBzOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9nZXRf
ZWxsaXBzaXNfdGV4dChzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBfZWxsaXBzaXMg
Ki8xNV07Cit9CisKK2Z1bmN0aW9uIHBwX2xpbWl0KG4pIHsKKyAgaWYgKG4gPCAxMDAwMDAwMDEw
KSB7CisgICAgcmV0dXJuIG47CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDEwMDAwMDAwMDk7
CisgIH0KK30KKworZnVuY3Rpb24gcHBfc2V0X21heF9pbmRlbnQoc3RhdGUsIG4pIHsKKyAgdmFy
IHN0YXRlJDEgPSBzdGF0ZTsKKyAgdmFyIG4kMSA9IHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdIC0g
biB8IDA7CisgIGlmIChuJDEgPj0gMSkgeworICAgIHZhciBuJDIgPSBwcF9saW1pdChuJDEpOwor
ICAgIHN0YXRlJDFbLyogcHBfbWluX3NwYWNlX2xlZnQgKi82XSA9IG4kMjsKKyAgICBzdGF0ZSQx
Wy8qIHBwX21heF9pbmRlbnQgKi83XSA9IHN0YXRlJDFbLyogcHBfbWFyZ2luICovNV0gLSBzdGF0
ZSQxWy8qIHBwX21pbl9zcGFjZV9sZWZ0ICovNl0gfCAwOworICAgIHJldHVybiBwcF9yaW5pdChz
dGF0ZSQxKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlv
biBwcF9nZXRfbWF4X2luZGVudChzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBfbWF4
X2luZGVudCAqLzddOworfQorCitmdW5jdGlvbiBwcF9zZXRfbWFyZ2luKHN0YXRlLCBuKSB7Cisg
IGlmIChuID49IDEpIHsKKyAgICB2YXIgbiQxID0gcHBfbGltaXQobik7CisgICAgc3RhdGVbLyog
cHBfbWFyZ2luICovNV0gPSBuJDE7CisgICAgdmFyIG5ld19tYXhfaW5kZW50ID0gc3RhdGVbLyog
cHBfbWF4X2luZGVudCAqLzddIDw9IHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdID8gc3RhdGVbLyog
cHBfbWF4X2luZGVudCAqLzddIDogUGVydmFzaXZlcy5tYXgoUGVydmFzaXZlcy5tYXgoc3RhdGVb
LyogcHBfbWFyZ2luICovNV0gLSBzdGF0ZVsvKiBwcF9taW5fc3BhY2VfbGVmdCAqLzZdIHwgMCwg
c3RhdGVbLyogcHBfbWFyZ2luICovNV0gLyAyIHwgMCksIDEpOworICAgIHJldHVybiBwcF9zZXRf
bWF4X2luZGVudChzdGF0ZSwgbmV3X21heF9pbmRlbnQpOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9tYXJnaW4oc3RhdGUsIF8pIHsKKyAg
cmV0dXJuIHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdOworfQorCitmdW5jdGlvbiBwcF9zZXRfZm9y
bWF0dGVyX291dF9mdW5jdGlvbnMoc3RhdGUsIHBhcmFtKSB7CisgIHN0YXRlWy8qIHBwX291dF9z
dHJpbmcgKi8xNl0gPSBwYXJhbVsvKiBvdXRfc3RyaW5nICovMF07CisgIHN0YXRlWy8qIHBwX291
dF9mbHVzaCAqLzE3XSA9IHBhcmFtWy8qIG91dF9mbHVzaCAqLzFdOworICBzdGF0ZVsvKiBwcF9v
dXRfbmV3bGluZSAqLzE4XSA9IHBhcmFtWy8qIG91dF9uZXdsaW5lICovMl07CisgIHN0YXRlWy8q
IHBwX291dF9zcGFjZXMgKi8xOV0gPSBwYXJhbVsvKiBvdXRfc3BhY2VzICovM107CisgIHJldHVy
biAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9u
cyhzdGF0ZSwgXykgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIG91dF9z
dHJpbmcgKi9zdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLAorICAgICAgICAgIC8qIG91dF9m
bHVzaCAqL3N0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XSwKKyAgICAgICAgICAvKiBvdXRfbmV3
bGluZSAqL3N0YXRlWy8qIHBwX291dF9uZXdsaW5lICovMThdLAorICAgICAgICAgIC8qIG91dF9z
cGFjZXMgKi9zdGF0ZVsvKiBwcF9vdXRfc3BhY2VzICovMTldCisgICAgICAgIF07Cit9CisKK2Z1
bmN0aW9uIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwgZiwgZykgewor
ICBzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdID0gZjsKKyAgc3RhdGVbLyogcHBfb3V0X2Zs
dXNoICovMTddID0gZzsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gcHBfZ2V0
X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0YXRlLCBfKSB7CisgIHJldHVybiAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICBzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLAorICAgICAgICAg
IHN0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBw
cF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0YXRlLCBmLCBnLCBoLCBpKSB7
CisgIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwgZiwgZyk7CisgIHN0
YXRlWy8qIHBwX291dF9uZXdsaW5lICovMThdID0gaDsKKyAgc3RhdGVbLyogcHBfb3V0X3NwYWNl
cyAqLzE5XSA9IGk7CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9h
bGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMoc3RhdGUsIF8pIHsKKyAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0sCisgICAgICAg
ICAgc3RhdGVbLyogcHBfb3V0X2ZsdXNoICovMTddLAorICAgICAgICAgIHN0YXRlWy8qIHBwX291
dF9uZXdsaW5lICovMThdLAorICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9zcGFjZXMgKi8xOV0K
KyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZGlzcGxheV9uZXdsaW5lKHN0YXRlLCBfKSB7Cisg
IHJldHVybiBDdXJyeS5fMyhzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLCAiXG4iLCAwLCAx
KTsKK30KKwordmFyIGJsYW5rX2xpbmUgPSBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0
ZXMubWFrZSg4MCwgLyogIiAiICovMzIpKTsKKworZnVuY3Rpb24gZGlzcGxheV9ibGFua3Moc3Rh
dGUsIF9uKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbiA9IF9uOworICAgIGlmIChuID4g
MCkgeworICAgICAgaWYgKG4gPD0gODApIHsKKyAgICAgICAgcmV0dXJuIEN1cnJ5Ll8zKHN0YXRl
Wy8qIHBwX291dF9zdHJpbmcgKi8xNl0sIGJsYW5rX2xpbmUsIDAsIG4pOworICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIEN1cnJ5Ll8zKHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0s
IGJsYW5rX2xpbmUsIDAsIDgwKTsKKyAgICAgICAgX24gPSBuIC0gODAgfCAwOworICAgICAgICBj
b250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcHBfc2V0X2Zvcm1hdHRlcl9vdXRf
Y2hhbm5lbChzdGF0ZSwgb3MpIHsKKyAgc3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSA9IGZ1
bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgeworICAgIHJldHVybiBQZXJ2YXNpdmVz
Lm91dHB1dF9zdWJzdHJpbmcob3MsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsKKyAgfTsKKyAg
c3RhdGVbLyogcHBfb3V0X2ZsdXNoICovMTddID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBD
YW1sX2lvLmNhbWxfbWxfZmx1c2gob3MpOworICB9OworICBzdGF0ZVsvKiBwcF9vdXRfbmV3bGlu
ZSAqLzE4XSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHJldHVybiBkaXNwbGF5X25ld2xpbmUo
c3RhdGUsIHBhcmFtKTsKKyAgfTsKKyAgc3RhdGVbLyogcHBfb3V0X3NwYWNlcyAqLzE5XSA9IGZ1
bmN0aW9uIChwYXJhbSkgeworICAgIHJldHVybiBkaXNwbGF5X2JsYW5rcyhzdGF0ZSwgcGFyYW0p
OworICB9OworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBkZWZhdWx0X3BwX21h
cmtfb3Blbl90YWcocykgeworICByZXR1cm4gIjwiICsgKHMgKyAiPiIpOworfQorCitmdW5jdGlv
biBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnKHMpIHsKKyAgcmV0dXJuICI8LyIgKyAocyArICI+
Iik7Cit9CisKK2Z1bmN0aW9uIGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcoKSB7CisgIHJldHVy
biAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnKCkg
eworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9tYWtlX2Zvcm1hdHRlcihm
LCBnLCBoLCBpKSB7CisgIHZhciBwcF9xID0gLyogcmVjb3JkICovWworICAgIC8qIGluc2VydCA6
IE5pbCAqLzAsCisgICAgLyogYm9keSA6IE5pbCAqLzAKKyAgXTsKKyAgdmFyIHN5c190b2sgPSAv
KiByZWNvcmQgKi9bCisgICAgLyogZWxlbV9zaXplICovLTEsCisgICAgLyogdG9rZW4gOiBQcF9i
ZWdpbiAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgMCwKKyAgICAgICAgLyogUHBfaG92Ym94ICov
MworICAgICAgXSksCisgICAgLyogbGVuZ3RoICovMAorICBdOworICBhZGRfcXVldWUoc3lzX3Rv
aywgcHBfcSk7CisgIHZhciBzeXNfc2Nhbl9zdGFja18wMDAgPSAvKiBTY2FuX2VsZW0gKi9bCisg
ICAgMSwKKyAgICBzeXNfdG9rCisgIF07CisgIHZhciBzeXNfc2Nhbl9zdGFjayA9IC8qIDo6ICov
WworICAgIHN5c19zY2FuX3N0YWNrXzAwMCwKKyAgICBzY2FuX3N0YWNrX2JvdHRvbQorICBdOwor
ICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIHBwX3NjYW5fc3RhY2sgKi9zeXNf
c2Nhbl9zdGFjaywKKyAgICAgICAgICAvKiBwcF9mb3JtYXRfc3RhY2sgOiBbXSAqLzAsCisgICAg
ICAgICAgLyogcHBfdGJveF9zdGFjayA6IFtdICovMCwKKyAgICAgICAgICAvKiBwcF90YWdfc3Rh
Y2sgOiBbXSAqLzAsCisgICAgICAgICAgLyogcHBfbWFya19zdGFjayA6IFtdICovMCwKKyAgICAg
ICAgICAvKiBwcF9tYXJnaW4gKi83OCwKKyAgICAgICAgICAvKiBwcF9taW5fc3BhY2VfbGVmdCAq
LzEwLAorICAgICAgICAgIC8qIHBwX21heF9pbmRlbnQgKi82OCwKKyAgICAgICAgICAvKiBwcF9z
cGFjZV9sZWZ0ICovNzgsCisgICAgICAgICAgLyogcHBfY3VycmVudF9pbmRlbnQgKi8wLAorICAg
ICAgICAgIC8qIHBwX2lzX25ld19saW5lIDogdHJ1ZSAqLzEsCisgICAgICAgICAgLyogcHBfbGVm
dF90b3RhbCAqLzEsCisgICAgICAgICAgLyogcHBfcmlnaHRfdG90YWwgKi8xLAorICAgICAgICAg
IC8qIHBwX2N1cnJfZGVwdGggKi8xLAorICAgICAgICAgIC8qIHBwX21heF9ib3hlcyAqL1BlcnZh
c2l2ZXMubWF4X2ludCwKKyAgICAgICAgICAvKiBwcF9lbGxpcHNpcyAqLyIuIiwKKyAgICAgICAg
ICAvKiBwcF9vdXRfc3RyaW5nICovZiwKKyAgICAgICAgICAvKiBwcF9vdXRfZmx1c2ggKi9nLAor
ICAgICAgICAgIC8qIHBwX291dF9uZXdsaW5lICovaCwKKyAgICAgICAgICAvKiBwcF9vdXRfc3Bh
Y2VzICovaSwKKyAgICAgICAgICAvKiBwcF9wcmludF90YWdzIDogZmFsc2UgKi8wLAorICAgICAg
ICAgIC8qIHBwX21hcmtfdGFncyA6IGZhbHNlICovMCwKKyAgICAgICAgICAvKiBwcF9tYXJrX29w
ZW5fdGFnICovZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnLAorICAgICAgICAgIC8qIHBwX21hcmtf
Y2xvc2VfdGFnICovZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZywKKyAgICAgICAgICAvKiBwcF9w
cmludF9vcGVuX3RhZyAqL2RlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcsCisgICAgICAgICAgLyog
cHBfcHJpbnRfY2xvc2VfdGFnICovZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcsCisgICAgICAg
ICAgLyogcHBfcXVldWUgKi9wcF9xCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIG1ha2VfZm9y
bWF0dGVyKG91dHB1dCwgZmx1c2gpIHsKKyAgdmFyIHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyKG91
dHB1dCwgZmx1c2gsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAg
ICAgIH0sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0p
OworICBwcGZbLyogcHBfb3V0X25ld2xpbmUgKi8xOF0gPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICByZXR1cm4gZGlzcGxheV9uZXdsaW5lKHBwZiwgcGFyYW0pOworICB9OworICBwcGZbLyogcHBf
b3V0X3NwYWNlcyAqLzE5XSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHJldHVybiBkaXNwbGF5
X2JsYW5rcyhwcGYsIHBhcmFtKTsKKyAgfTsKKyAgcmV0dXJuIHBwZjsKK30KKworZnVuY3Rpb24g
Zm9ybWF0dGVyX29mX291dF9jaGFubmVsKG9jKSB7CisgIHJldHVybiBtYWtlX2Zvcm1hdHRlcihm
dW5jdGlvbiAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpIHsKKyAgICAgICAgICAgICAgcmV0dXJu
IFBlcnZhc2l2ZXMub3V0cHV0X3N1YnN0cmluZyhvYywgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIp
OworICAgICAgICAgICAgfSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1cm4gQ2Ft
bF9pby5jYW1sX21sX2ZsdXNoKG9jKTsKKyAgICAgICAgICAgIH0pOworfQorCitmdW5jdGlvbiBm
b3JtYXR0ZXJfb2ZfYnVmZmVyKGIpIHsKKyAgcmV0dXJuIG1ha2VfZm9ybWF0dGVyKGZ1bmN0aW9u
IChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgeworICAgICAgICAgICAgICByZXR1cm4gQnVmZmVy
LmFkZF9zdWJzdHJpbmcoYiwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOworICAgICAgICAgICAg
fSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAg
ICAgICAgfSk7Cit9CisKK3ZhciBzdGRidWYgPSBCdWZmZXIuY3JlYXRlKDUxMik7CisKK3ZhciBz
dGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsKFBlcnZhc2l2ZXMuc3Rkb3V0
KTsKKwordmFyIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwoUGVydmFz
aXZlcy5zdGRlcnIpOworCit2YXIgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIo
c3RkYnVmKTsKKworZnVuY3Rpb24gZmx1c2hfc3RyX2Zvcm1hdHRlcigpIHsKKyAgcHBfZmx1c2hf
cXVldWUoc3RyX2Zvcm1hdHRlciwgLyogZmFsc2UgKi8wKTsKKyAgdmFyIHMgPSBCdWZmZXIuY29u
dGVudHMoc3RkYnVmKTsKKyAgQnVmZmVyLnJlc2V0KHN0ZGJ1Zik7CisgIHJldHVybiBzOworfQor
CitmdW5jdGlvbiBmbHVzaF9idWZfZm9ybWF0dGVyKGJ1ZiwgcHBmKSB7CisgIHBwX2ZsdXNoX3F1
ZXVlKHBwZiwgLyogZmFsc2UgKi8wKTsKKyAgdmFyIHMgPSBCdWZmZXIuY29udGVudHMoYnVmKTsK
KyAgQnVmZmVyLnJlc2V0KGJ1Zik7CisgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBvcGVuX2hi
b3gocGFyYW0pIHsKKyAgcmV0dXJuIHBwX29wZW5faGJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7
Cit9CisKK2Z1bmN0aW9uIG9wZW5fdmJveChwYXJhbSkgeworICByZXR1cm4gcHBfb3Blbl92Ym94
KHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gb3Blbl9odmJveChwYXJhbSkg
eworICByZXR1cm4gcHBfb3Blbl9odmJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1
bmN0aW9uIG9wZW5faG92Ym94KHBhcmFtKSB7CisgIHJldHVybiBwcF9vcGVuX2hvdmJveChzdGRf
Zm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5fYm94KHBhcmFtKSB7CisgIHJl
dHVybiBwcF9vcGVuX2JveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGNs
b3NlX2JveChwYXJhbSkgeworICByZXR1cm4gcHBfY2xvc2VfYm94KHN0ZF9mb3JtYXR0ZXIsIHBh
cmFtKTsKK30KKworZnVuY3Rpb24gb3Blbl90YWcocGFyYW0pIHsKKyAgcmV0dXJuIHBwX29wZW5f
dGFnKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gY2xvc2VfdGFnKHBhcmFt
KSB7CisgIHJldHVybiBwcF9jbG9zZV90YWcoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitm
dW5jdGlvbiBwcmludF9hcyhwYXJhbSwgcGFyYW0kMSkgeworICByZXR1cm4gcHBfcHJpbnRfYXMo
c3RkX2Zvcm1hdHRlciwgcGFyYW0sIHBhcmFtJDEpOworfQorCitmdW5jdGlvbiBwcmludF9zdHJp
bmcocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGRfZm9ybWF0dGVyLCBwYXJh
bSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X2ludChwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRf
c3RyaW5nKHN0ZF9mb3JtYXR0ZXIsICIiICsgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmludF9m
bG9hdChwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHN0ZF9mb3JtYXR0ZXIsIFBl
cnZhc2l2ZXMuc3RyaW5nX29mX2Zsb2F0KHBhcmFtKSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X2No
YXIocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3ByaW50X2NoYXIoc3RkX2Zvcm1hdHRlciwgcGFyYW0p
OworfQorCitmdW5jdGlvbiBwcmludF9ib29sKHBhcmFtKSB7CisgIHJldHVybiBwcF9wcmludF9z
dHJpbmcoc3RkX2Zvcm1hdHRlciwgcGFyYW0gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30KKworZnVu
Y3Rpb24gcHJpbnRfYnJlYWsocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIHBwX3ByaW50X2Jy
ZWFrKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtLCBwYXJhbSQxKTsKK30KKworZnVuY3Rpb24gcHJpbnRf
Y3V0KCkgeworICByZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3RkX2Zvcm1hdHRlciwgMCwgMCk7Cit9
CisKK2Z1bmN0aW9uIHByaW50X3NwYWNlKCkgeworICByZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3Rk
X2Zvcm1hdHRlciwgMSwgMCk7Cit9CisKK2Z1bmN0aW9uIGZvcmNlX25ld2xpbmUocGFyYW0pIHsK
KyAgcmV0dXJuIHBwX2ZvcmNlX25ld2xpbmUoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitm
dW5jdGlvbiBwcmludF9mbHVzaChwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfZmx1c2goc3Rk
X2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmludF9uZXdsaW5lKHBhcmFtKSB7
CisgIHJldHVybiBwcF9wcmludF9uZXdsaW5lKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKwor
ZnVuY3Rpb24gcHJpbnRfaWZfbmV3bGluZShwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfaWZf
bmV3bGluZShzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5fdGJveChw
YXJhbSkgeworICByZXR1cm4gcHBfb3Blbl90Ym94KHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30K
KworZnVuY3Rpb24gY2xvc2VfdGJveChwYXJhbSkgeworICByZXR1cm4gcHBfY2xvc2VfdGJveChz
dGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X3RicmVhayhwYXJhbSwg
cGFyYW0kMSkgeworICByZXR1cm4gcHBfcHJpbnRfdGJyZWFrKHN0ZF9mb3JtYXR0ZXIsIHBhcmFt
LCBwYXJhbSQxKTsKK30KKworZnVuY3Rpb24gc2V0X3RhYihwYXJhbSkgeworICByZXR1cm4gcHBf
c2V0X3RhYihzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X3RhYigp
IHsKKyAgcmV0dXJuIHBwX3ByaW50X3RicmVhayhzdGRfZm9ybWF0dGVyLCAwLCAwKTsKK30KKwor
ZnVuY3Rpb24gc2V0X21hcmdpbihwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X21hcmdpbihzdGRf
Zm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGdldF9tYXJnaW4oKSB7CisgIHJldHVy
biBzdGRfZm9ybWF0dGVyWy8qIHBwX21hcmdpbiAqLzVdOworfQorCitmdW5jdGlvbiBzZXRfbWF4
X2luZGVudChwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X21heF9pbmRlbnQoc3RkX2Zvcm1hdHRl
ciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBnZXRfbWF4X2luZGVudCgpIHsKKyAgcmV0dXJuIHN0
ZF9mb3JtYXR0ZXJbLyogcHBfbWF4X2luZGVudCAqLzddOworfQorCitmdW5jdGlvbiBzZXRfbWF4
X2JveGVzKHBhcmFtKSB7CisgIHJldHVybiBwcF9zZXRfbWF4X2JveGVzKHN0ZF9mb3JtYXR0ZXIs
IHBhcmFtKTsKK30KKworZnVuY3Rpb24gZ2V0X21heF9ib3hlcygpIHsKKyAgcmV0dXJuIHN0ZF9m
b3JtYXR0ZXJbLyogcHBfbWF4X2JveGVzICovMTRdOworfQorCitmdW5jdGlvbiBvdmVyX21heF9i
b3hlcyhwYXJhbSkgeworICByZXR1cm4gcHBfb3Zlcl9tYXhfYm94ZXMoc3RkX2Zvcm1hdHRlciwg
cGFyYW0pOworfQorCitmdW5jdGlvbiBzZXRfZWxsaXBzaXNfdGV4dChwYXJhbSkgeworICBzdGRf
Zm9ybWF0dGVyWy8qIHBwX2VsbGlwc2lzICovMTVdID0gcGFyYW07CisgIHJldHVybiAvKiAoKSAq
LzA7Cit9CisKK2Z1bmN0aW9uIGdldF9lbGxpcHNpc190ZXh0KCkgeworICByZXR1cm4gc3RkX2Zv
cm1hdHRlclsvKiBwcF9lbGxpcHNpcyAqLzE1XTsKK30KKworZnVuY3Rpb24gc2V0X2Zvcm1hdHRl
cl9vdXRfY2hhbm5lbChwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hh
bm5lbChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHNldF9mb3JtYXR0ZXJf
b3V0X2Z1bmN0aW9ucyhwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVu
Y3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gZ2V0X2Zvcm1hdHRl
cl9vdXRfZnVuY3Rpb25zKHBhcmFtKSB7CisgIHJldHVybiBwcF9nZXRfZm9ybWF0dGVyX291dF9m
dW5jdGlvbnMoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBzZXRfZm9ybWF0
dGVyX291dHB1dF9mdW5jdGlvbnMocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIHBwX3NldF9m
b3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSwgcGFyYW0kMSk7
Cit9CisKK2Z1bmN0aW9uIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhwYXJhbSkgewor
ICByZXR1cm4gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0ZF9mb3JtYXR0ZXIs
IHBhcmFtKTsKK30KKworZnVuY3Rpb24gc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9u
cyhwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMykgeworICByZXR1cm4gcHBfc2V0X2Fs
bF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSwgcGFyYW0k
MSwgcGFyYW0kMiwgcGFyYW0kMyk7Cit9CisKK2Z1bmN0aW9uIGdldF9hbGxfZm9ybWF0dGVyX291
dHB1dF9mdW5jdGlvbnMocGFyYW0pIHsKKyAgcmV0dXJuIHBwX2dldF9hbGxfZm9ybWF0dGVyX291
dHB1dF9mdW5jdGlvbnMoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBzZXRf
Zm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3NldF9mb3JtYXR0
ZXJfdGFnX2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGdl
dF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyhwYXJhbSkgeworICByZXR1cm4gcHBfZ2V0X2Zvcm1h
dHRlcl90YWdfZnVuY3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24g
c2V0X3ByaW50X3RhZ3MocGFyYW0pIHsKKyAgc3RkX2Zvcm1hdHRlclsvKiBwcF9wcmludF90YWdz
ICovMjBdID0gcGFyYW07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGdldF9w
cmludF90YWdzKCkgeworICByZXR1cm4gc3RkX2Zvcm1hdHRlclsvKiBwcF9wcmludF90YWdzICov
MjBdOworfQorCitmdW5jdGlvbiBzZXRfbWFya190YWdzKHBhcmFtKSB7CisgIHN0ZF9mb3JtYXR0
ZXJbLyogcHBfbWFya190YWdzICovMjFdID0gcGFyYW07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9
CisKK2Z1bmN0aW9uIGdldF9tYXJrX3RhZ3MoKSB7CisgIHJldHVybiBzdGRfZm9ybWF0dGVyWy8q
IHBwX21hcmtfdGFncyAqLzIxXTsKK30KKworZnVuY3Rpb24gc2V0X3RhZ3MocGFyYW0pIHsKKyAg
cmV0dXJuIHBwX3NldF90YWdzKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24g
Y29tcHV0ZV90YWcob3V0cHV0LCB0YWdfYWNjKSB7CisgIHZhciBidWYgPSBCdWZmZXIuY3JlYXRl
KDE2KTsKKyAgdmFyIHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIoYnVmKTsKKyAgQ3VycnkuXzIo
b3V0cHV0LCBwcGYsIHRhZ19hY2MpOworICBwcF9wcmludF9mbHVzaChwcGYsIC8qICgpICovMCk7
CisgIHZhciBsZW4gPSBidWZbLyogcG9zaXRpb24gKi8xXTsKKyAgaWYgKGxlbiA8IDIpIHsKKyAg
ICByZXR1cm4gQnVmZmVyLmNvbnRlbnRzKGJ1Zik7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IEJ1ZmZlci5zdWIoYnVmLCAxLCBsZW4gLSAyIHwgMCk7CisgIH0KK30KKworZnVuY3Rpb24gb3V0
cHV0X2Zvcm1hdHRpbmdfbGl0KHBwZiwgZm10aW5nX2xpdCkgeworICBpZiAodHlwZW9mIGZtdGlu
Z19saXQgPT09ICJudW1iZXIiKSB7CisgICAgc3dpdGNoIChmbXRpbmdfbGl0KSB7CisgICAgICBj
YXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gcHBfY2xvc2VfYm94KHBwZiwgLyogKCkgKi8wKTsK
KyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiBwcF9jbG9zZV90YWcocHBmLCAvKiAo
KSAqLzApOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2ZsdXNo
KHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiBwcF9m
b3JjZV9uZXdsaW5lKHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAg
IHJldHVybiBwcF9wcmludF9uZXdsaW5lKHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgNSA6
IAorICAgICAgICAgIHJldHVybiBwcF9wcmludF9jaGFyKHBwZiwgLyogIkAiICovNjQpOworICAg
ICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIocHBmLCAvKiAiJSIg
Ki8zNyk7CisgICAgICAKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChmbXRpbmdf
bGl0LnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiBwcF9wcmlu
dF9icmVhayhwcGYsIGZtdGluZ19saXRbMV0sIGZtdGluZ19saXRbMl0pOworICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIGNhc2UgMiA6IAorICAgICAg
ICAgIHBwX3ByaW50X2NoYXIocHBmLCAvKiAiQCIgKi82NCk7CisgICAgICAgICAgcmV0dXJuIHBw
X3ByaW50X2NoYXIocHBmLCBmbXRpbmdfbGl0WzBdKTsKKyAgICAgIAorICAgIH0KKyAgfQorfQor
CitmdW5jdGlvbiBvdXRwdXRfYWNjKHBwZiwgYWNjKSB7CisgIHZhciBleGl0ID0gMDsKKyAgdmFy
IHA7CisgIHZhciBzaXplOworICB2YXIgczsKKyAgdmFyIHAkMTsKKyAgdmFyIHNpemUkMTsKKyAg
dmFyIGM7CisgIGlmICh0eXBlb2YgYWNjID09PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiAo
KSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChhY2MudGFnIHwgMCkgeworICAgICAg
Y2FzZSAwIDogCisgICAgICAgICAgb3V0cHV0X2FjYyhwcGYsIGFjY1swXSk7CisgICAgICAgICAg
cmV0dXJuIG91dHB1dF9mb3JtYXR0aW5nX2xpdChwcGYsIGFjY1sxXSk7CisgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICB2YXIgbWF0Y2ggPSBhY2NbMV07CisgICAgICAgICAgdmFyIHAkMiA9IGFj
Y1swXTsKKyAgICAgICAgICBvdXRwdXRfYWNjKHBwZiwgcCQyKTsKKyAgICAgICAgICBpZiAobWF0
Y2gudGFnKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IENhbWxpbnRlcm5hbEZvcm1hdC5v
cGVuX2JveF9vZl9zdHJpbmcoY29tcHV0ZV90YWcob3V0cHV0X2FjYywgbWF0Y2hbMF0pKTsKKyAg
ICAgICAgICAgIHJldHVybiBwcF9vcGVuX2JveF9nZW4ocHBmLCBtYXRjaCQxWzBdLCBtYXRjaCQx
WzFdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4g
cHBfb3Blbl90YWcocHBmLCBjb21wdXRlX3RhZyhvdXRwdXRfYWNjLCBtYXRjaFswXSkpOworICAg
ICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHZh
ciBwJDMgPSBhY2NbMF07CisgICAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgICAgaWYg
KHR5cGVvZiBwJDMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBleGl0JDEgPSAzOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChwJDMudGFnKSB7CisgICAgICAgICAgICBleGl0
JDEgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBt
YXRjaCQyID0gcCQzWzFdOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQyID09PSAibnVt
YmVyIikgeworICAgICAgICAgICAgICBleGl0JDEgPSAzOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBpZiAobWF0Y2gkMi50YWcgPT09IDEpIHsKKyAgICAgICAgICAgICAgcCA9IHAk
M1swXTsKKyAgICAgICAgICAgICAgc2l6ZSA9IG1hdGNoJDJbMV07CisgICAgICAgICAgICAgIHMg
PSBhY2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQkMSA9IDM7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDEgPT09IDMpIHsKKyAgICAgICAgICAgIG91
dHB1dF9hY2MocHBmLCBwJDMpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhw
cGYsIGFjY1sxXSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAz
IDogCisgICAgICAgICAgdmFyIHAkNCA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQyID0g
MDsKKyAgICAgICAgICBpZiAodHlwZW9mIHAkNCA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAg
IGV4aXQkMiA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkNC50YWcpIHsK
KyAgICAgICAgICAgIGV4aXQkMiA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgdmFyIG1hdGNoJDMgPSBwJDRbMV07CisgICAgICAgICAgICBpZiAodHlwZW9m
IG1hdGNoJDMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkMiA9IDM7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQzLnRhZyA9PT0gMSkgeworICAg
ICAgICAgICAgICBwJDEgPSBwJDRbMF07CisgICAgICAgICAgICAgIHNpemUkMSA9IG1hdGNoJDNb
MV07CisgICAgICAgICAgICAgIGMgPSBhY2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAyOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQkMiA9
IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDIgPT09
IDMpIHsKKyAgICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBwJDQpOworICAgICAgICAgICAgcmV0
dXJuIHBwX3ByaW50X2NoYXIocHBmLCBhY2NbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHZhciBwJDUgPSBhY2NbMF07CisgICAg
ICAgICAgdmFyIGV4aXQkMyA9IDA7CisgICAgICAgICAgaWYgKHR5cGVvZiBwJDUgPT09ICJudW1i
ZXIiKSB7CisgICAgICAgICAgICBleGl0JDMgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChwJDUudGFnKSB7CisgICAgICAgICAgICBleGl0JDMgPSAzOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gcCQ1WzFdOworICAg
ICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQ0ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAg
ICBleGl0JDMgPSAzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gk
NC50YWcgPT09IDEpIHsKKyAgICAgICAgICAgICAgcCA9IHAkNVswXTsKKyAgICAgICAgICAgICAg
c2l6ZSA9IG1hdGNoJDRbMV07CisgICAgICAgICAgICAgIHMgPSBhY2NbMV07CisgICAgICAgICAg
ICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAg
IGlmIChleGl0JDMgPT09IDMpIHsKKyAgICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBwJDUpOwor
ICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIGFjY1sxXSk7CisgICAgICAg
ICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIHAk
NiA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQ0ID0gMDsKKyAgICAgICAgICBpZiAodHlw
ZW9mIHAkNiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkNi50YWcpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9
IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIG1hdGNo
JDUgPSBwJDZbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDUgPT09ICJudW1iZXIi
KSB7CisgICAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIGlmIChtYXRjaCQ1LnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBwJDEgPSBwJDZb
MF07CisgICAgICAgICAgICAgIHNpemUkMSA9IG1hdGNoJDVbMV07CisgICAgICAgICAgICAgIGMg
PSBhY2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDQgPT09IDMpIHsKKyAgICAgICAgICAgIG91
dHB1dF9hY2MocHBmLCBwJDYpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIocHBm
LCBhY2NbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6
IAorICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBhY2NbMF0pOworICAgICAgICAgIHJldHVybiBD
dXJyeS5fMShhY2NbMV0sIHBwZik7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBvdXRwdXRf
YWNjKHBwZiwgYWNjWzBdKTsKKyAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfZmx1c2gocHBmLCAv
KiAoKSAqLzApOworICAgICAgY2FzZSA4IDogCisgICAgICAgICAgb3V0cHV0X2FjYyhwcGYsIGFj
Y1swXSk7CisgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAgICAgYWNjWzFdCisgICAg
ICAgICAgICAgIF07CisgICAgICAKKyAgICB9CisgIH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAg
Y2FzZSAxIDogCisgICAgICAgIG91dHB1dF9hY2MocHBmLCBwKTsKKyAgICAgICAgcmV0dXJuIHBw
X3ByaW50X2FzX3NpemUocHBmLCBzaXplLCBzKTsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgb3V0
cHV0X2FjYyhwcGYsIHAkMSk7CisgICAgICAgIHJldHVybiBwcF9wcmludF9hc19zaXplKHBwZiwg
c2l6ZSQxLCBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFrZSgxLCBjKSkpOwor
ICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIHN0cnB1dF9hY2MocHBmLCBhY2MpIHsKKyAgdmFyIGV4
aXQgPSAwOworICB2YXIgcDsKKyAgdmFyIHNpemU7CisgIHZhciBzOworICB2YXIgcCQxOworICB2
YXIgc2l6ZSQxOworICB2YXIgYzsKKyAgaWYgKHR5cGVvZiBhY2MgPT09ICJudW1iZXIiKSB7Cisg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGFjYy50YWcg
fCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICBzdHJwdXRfYWNjKHBwZiwgYWNjWzBd
KTsKKyAgICAgICAgICByZXR1cm4gb3V0cHV0X2Zvcm1hdHRpbmdfbGl0KHBwZiwgYWNjWzFdKTsK
KyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHZhciBtYXRjaCA9IGFjY1sxXTsKKyAgICAgICAg
ICB2YXIgcCQyID0gYWNjWzBdOworICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDIpOworICAg
ICAgICAgIGlmIChtYXRjaC50YWcpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxID0gQ2FtbGlu
dGVybmFsRm9ybWF0Lm9wZW5fYm94X29mX3N0cmluZyhjb21wdXRlX3RhZyhzdHJwdXRfYWNjLCBt
YXRjaFswXSkpOworICAgICAgICAgICAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihwcGYsIG1hdGNo
JDFbMF0sIG1hdGNoJDFbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHJldHVybiBwcF9vcGVuX3RhZyhwcGYsIGNvbXB1dGVfdGFnKHN0cnB1dF9hY2MsIG1h
dGNoWzBdKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyIDog
CisgICAgICAgICAgdmFyIHAkMyA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQxID0gMDsK
KyAgICAgICAgICBpZiAodHlwZW9mIHAkMyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4
aXQkMSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkMy50YWcpIHsKKyAg
ICAgICAgICAgIGV4aXQkMSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgdmFyIG1hdGNoJDIgPSBwJDNbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1h
dGNoJDIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkMSA9IDM7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQyLnRhZyA9PT0gMSkgeworICAgICAg
ICAgICAgICBwID0gcCQzWzBdOworICAgICAgICAgICAgICBzaXplID0gbWF0Y2gkMlsxXTsKKyAg
ICAgICAgICAgICAgcyA9IGFjY1sxXTsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQxID0gMzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGV4aXQkMSA9PT0gMykgewor
ICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkMyk7CisgICAgICAgICAgICByZXR1cm4gcHBf
cHJpbnRfc3RyaW5nKHBwZiwgYWNjWzFdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgcCQ0ID0gYWNjWzBdOworICAgICAgICAg
IHZhciBleGl0JDIgPSAwOworICAgICAgICAgIGlmICh0eXBlb2YgcCQ0ID09PSAibnVtYmVyIikg
eworICAgICAgICAgICAgZXhpdCQyID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBp
ZiAocCQ0LnRhZykgeworICAgICAgICAgICAgZXhpdCQyID0gMzsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMyA9IHAkNFsxXTsKKyAgICAgICAg
ICAgIGlmICh0eXBlb2YgbWF0Y2gkMyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgZXhp
dCQyID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDMudGFn
ID09PSAxKSB7CisgICAgICAgICAgICAgIHAkMSA9IHAkNFswXTsKKyAgICAgICAgICAgICAgc2l6
ZSQxID0gbWF0Y2gkM1sxXTsKKyAgICAgICAgICAgICAgYyA9IGFjY1sxXTsKKyAgICAgICAgICAg
ICAgZXhpdCA9IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgZXhpdCQyID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAg
aWYgKGV4aXQkMiA9PT0gMykgeworICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkNCk7Cisg
ICAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfY2hhcihwcGYsIGFjY1sxXSk7CisgICAgICAgICAg
fQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgdmFyIHAkNSA9
IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQzID0gMDsKKyAgICAgICAgICBpZiAodHlwZW9m
IHAkNSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgaWYgKHAkNS50YWcpIHsKKyAgICAgICAgICAgIGV4aXQkMyA9IDM7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIG1hdGNoJDQg
PSBwJDVbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDQgPT09ICJudW1iZXIiKSB7
CisgICAgICAgICAgICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIGlmIChtYXRjaCQ0LnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBwID0gcCQ1WzBdOwor
ICAgICAgICAgICAgICBzaXplID0gbWF0Y2gkNFsxXTsKKyAgICAgICAgICAgICAgcyA9IGFjY1sx
XTsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQzID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9CisgICAgICAgICAgaWYgKGV4aXQkMyA9PT0gMykgeworICAgICAgICAgICAgc3RycHV0X2Fj
YyhwcGYsIHAkNSk7CisgICAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHBwZiwgYWNj
WzFdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDUgOiAKKyAg
ICAgICAgICB2YXIgcCQ2ID0gYWNjWzBdOworICAgICAgICAgIHZhciBleGl0JDQgPSAwOworICAg
ICAgICAgIGlmICh0eXBlb2YgcCQ2ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgZXhpdCQ0
ID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAocCQ2LnRhZykgeworICAgICAg
ICAgICAgZXhpdCQ0ID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICB2YXIgbWF0Y2gkNSA9IHAkNlsxXTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gk
NSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDUudGFnID09PSAxKSB7CisgICAgICAgICAg
ICAgIHAkMSA9IHAkNlswXTsKKyAgICAgICAgICAgICAgc2l6ZSQxID0gbWF0Y2gkNVsxXTsKKyAg
ICAgICAgICAgICAgYyA9IGFjY1sxXTsKKyAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQ0ID0gMzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGV4aXQkNCA9PT0gMykgewor
ICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkNik7CisgICAgICAgICAgICByZXR1cm4gcHBf
cHJpbnRfY2hhcihwcGYsIGFjY1sxXSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSA2IDogCisgICAgICAgICAgdmFyIHAkNyA9IGFjY1swXTsKKyAgICAgICAgICB2
YXIgZXhpdCQ1ID0gMDsKKyAgICAgICAgICBpZiAodHlwZW9mIHAkNyA9PT0gIm51bWJlciIpIHsK
KyAgICAgICAgICAgIGV4aXQkNSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYg
KHAkNy50YWcpIHsKKyAgICAgICAgICAgIGV4aXQkNSA9IDM7CisgICAgICAgICAgfQorICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIG1hdGNoJDYgPSBwJDdbMV07CisgICAgICAgICAg
ICBpZiAodHlwZW9mIG1hdGNoJDYgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQk
NSA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQ2LnRhZyA9
PT0gMSkgeworICAgICAgICAgICAgICBzdHJwdXRfYWNjKHBwZiwgcCQ3WzBdKTsKKyAgICAgICAg
ICAgICAgcmV0dXJuIHBwX3ByaW50X2FzX3NpemUocHBmLCBtYXRjaCQ2WzFdLCBDdXJyeS5fMShh
Y2NbMV0sIC8qICgpICovMCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgIGV4aXQkNSA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg
ICAgICAgIGlmIChleGl0JDUgPT09IDMpIHsKKyAgICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBw
JDcpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIEN1cnJ5Ll8xKGFj
Y1sxXSwgLyogKCkgKi8wKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSA3IDogCisgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIGFjY1swXSk7CisgICAgICAgICAg
cmV0dXJuIHBwX3ByaW50X2ZsdXNoKHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgOCA6IAor
ICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBhY2NbMF0pOworICAgICAgICAgIHRocm93IFsKKyAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAor
ICAgICAgICAgICAgICAgIGFjY1sxXQorICAgICAgICAgICAgICBdOworICAgICAgCisgICAgfQor
ICB9CisgIHN3aXRjaCAoZXhpdCkgeworICAgIGNhc2UgMSA6IAorICAgICAgICBzdHJwdXRfYWNj
KHBwZiwgcCk7CisgICAgICAgIHJldHVybiBwcF9wcmludF9hc19zaXplKHBwZiwgc2l6ZSwgcyk7
CisgICAgY2FzZSAyIDogCisgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDEpOworICAgICAgICBy
ZXR1cm4gcHBfcHJpbnRfYXNfc2l6ZShwcGYsIHNpemUkMSwgQ2FtbF9zdHJpbmcuYnl0ZXNfdG9f
c3RyaW5nKEJ5dGVzLm1ha2UoMSwgYykpKTsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBrZnBy
aW50ZihrLCBvLCBwYXJhbSkgeworICByZXR1cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJp
bnRmKGZ1bmN0aW9uIChvLCBhY2MpIHsKKyAgICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2Mp
OworICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoaywgbyk7CisgICAgICAgICAgICB9LCBv
LCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5jdGlvbiBpa2ZwcmludGYo
aywgeCwgcGFyYW0pIHsKKyAgcmV0dXJuIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zihm
dW5jdGlvbiAoXywgXyQxKSB7CisgICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShrLCB4KTsK
KyAgICAgICAgICAgIH0sIHgsIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK2Z1
bmN0aW9uIGZwcmludGYocHBmLCBmbXQpIHsKKyAgcmV0dXJuIGtmcHJpbnRmKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICAgIH0sIHBwZiwg
Zm10KTsKK30KKworZnVuY3Rpb24gaWZwcmludGYocHBmLCBmbXQpIHsKKyAgcmV0dXJuIGlrZnBy
aW50ZihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAg
ICAgICAgICB9LCBwcGYsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIHByaW50ZihmbXQpIHsKKyAgcmV0
dXJuIGZwcmludGYoc3RkX2Zvcm1hdHRlciwgZm10KTsKK30KKworZnVuY3Rpb24gZXByaW50Zihm
bXQpIHsKKyAgcmV0dXJuIGZwcmludGYoZXJyX2Zvcm1hdHRlciwgZm10KTsKK30KKworZnVuY3Rp
b24ga3NwcmludGYoaywgcGFyYW0pIHsKKyAgdmFyIGIgPSBCdWZmZXIuY3JlYXRlKDUxMik7Cisg
IHZhciBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyKGIpOworICB2YXIgayRwcmltZSA9IGZ1bmN0
aW9uIChfLCBhY2MpIHsKKyAgICBzdHJwdXRfYWNjKHBwZiwgYWNjKTsKKyAgICByZXR1cm4gQ3Vy
cnkuXzEoaywgZmx1c2hfYnVmX2Zvcm1hdHRlcihiLCBwcGYpKTsKKyAgfTsKKyAgcmV0dXJuIENh
bWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihrJHByaW1lLCAvKiAoKSAqLzAsIC8qIEVuZF9v
Zl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIHNwcmludGYoZm10KSB7CisgIHJl
dHVybiBrc3ByaW50ZihmdW5jdGlvbiAocykgeworICAgICAgICAgICAgICByZXR1cm4gczsKKyAg
ICAgICAgICAgIH0sIGZtdCk7Cit9CisKK2Z1bmN0aW9uIGFzcHJpbnRmKHBhcmFtKSB7CisgIHZh
ciBiID0gQnVmZmVyLmNyZWF0ZSg1MTIpOworICB2YXIgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZl
cihiKTsKKyAgdmFyIGskcHJpbWUgPSBmdW5jdGlvbiAocHBmLCBhY2MpIHsKKyAgICBvdXRwdXRf
YWNjKHBwZiwgYWNjKTsKKyAgICBwcF9mbHVzaF9xdWV1ZShwcGYsIC8qIGZhbHNlICovMCk7Cisg
ICAgcmV0dXJuIGZsdXNoX2J1Zl9mb3JtYXR0ZXIoYiwgcHBmKTsKKyAgfTsKKyAgcmV0dXJuIENh
bWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihrJHByaW1lLCBwcGYsIC8qIEVuZF9vZl9hY2Mg
Ki8wLCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIGJwcmludGYoYiwgcGFyYW0pIHsKKyAgdmFy
IGsgPSBmdW5jdGlvbiAocHBmLCBhY2MpIHsKKyAgICBvdXRwdXRfYWNjKHBwZiwgYWNjKTsKKyAg
ICByZXR1cm4gcHBfZmx1c2hfcXVldWUocHBmLCAvKiBmYWxzZSAqLzApOworICB9OworICByZXR1
cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGssIGZvcm1hdHRlcl9vZl9idWZmZXIo
YiksIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK1BlcnZhc2l2ZXMuYXRfZXhp
dChwcmludF9mbHVzaCk7CisKK3ZhciBrcHJpbnRmID0ga3NwcmludGY7CisKK2V4cG9ydHMub3Bl
bl9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fYm94OworZXhwb3J0cy5j
bG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gY2xvc2VfYm94OworZXhwb3J0
cy5wcmludF9zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfc3RyaW5nOwor
ZXhwb3J0cy5wcmludF9hcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfYXM7
CitleHBvcnRzLnByaW50X2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9p
bnQ7CitleHBvcnRzLnByaW50X2Zsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmlu
dF9mbG9hdDsKK2V4cG9ydHMucHJpbnRfY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IHByaW50X2NoYXI7CitleHBvcnRzLnByaW50X2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBwcmludF9ib29sOworZXhwb3J0cy5wcmludF9zcGFjZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gcHJpbnRfc3BhY2U7CitleHBvcnRzLnByaW50X2N1dCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBwcmludF9jdXQ7CitleHBvcnRzLnByaW50X2JyZWFrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBwcmludF9icmVhazsKK2V4cG9ydHMucHJpbnRfZmx1c2ggICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IHByaW50X2ZsdXNoOworZXhwb3J0cy5wcmludF9uZXdsaW5l
ICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfbmV3bGluZTsKK2V4cG9ydHMuZm9yY2Vf
bmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICA9IGZvcmNlX25ld2xpbmU7CitleHBvcnRz
LnByaW50X2lmX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9pZl9uZXdsaW5l
OworZXhwb3J0cy5zZXRfbWFyZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc2V0X21h
cmdpbjsKK2V4cG9ydHMuZ2V0X21hcmdpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdl
dF9tYXJnaW47CitleHBvcnRzLnNldF9tYXhfaW5kZW50ICAgICAgICAgICAgICAgICAgICAgICAg
PSBzZXRfbWF4X2luZGVudDsKK2V4cG9ydHMuZ2V0X21heF9pbmRlbnQgICAgICAgICAgICAgICAg
ICAgICAgICA9IGdldF9tYXhfaW5kZW50OworZXhwb3J0cy5zZXRfbWF4X2JveGVzICAgICAgICAg
ICAgICAgICAgICAgICAgID0gc2V0X21heF9ib3hlczsKK2V4cG9ydHMuZ2V0X21heF9ib3hlcyAg
ICAgICAgICAgICAgICAgICAgICAgICA9IGdldF9tYXhfYm94ZXM7CitleHBvcnRzLm92ZXJfbWF4
X2JveGVzICAgICAgICAgICAgICAgICAgICAgICAgPSBvdmVyX21heF9ib3hlczsKK2V4cG9ydHMu
b3Blbl9oYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5faGJveDsKK2V4cG9y
dHMub3Blbl92Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fdmJveDsKK2V4
cG9ydHMub3Blbl9odmJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5faHZib3g7
CitleHBvcnRzLm9wZW5faG92Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBvcGVuX2hv
dmJveDsKK2V4cG9ydHMub3Blbl90Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9w
ZW5fdGJveDsKK2V4cG9ydHMuY2xvc2VfdGJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IGNsb3NlX3Rib3g7CitleHBvcnRzLnByaW50X3RicmVhayAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBwcmludF90YnJlYWs7CitleHBvcnRzLnNldF90YWIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBzZXRfdGFiOworZXhwb3J0cy5wcmludF90YWIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gcHJpbnRfdGFiOworZXhwb3J0cy5zZXRfZWxsaXBzaXNfdGV4dCAgICAgICAg
ICAgICAgICAgICAgID0gc2V0X2VsbGlwc2lzX3RleHQ7CitleHBvcnRzLmdldF9lbGxpcHNpc190
ZXh0ICAgICAgICAgICAgICAgICAgICAgPSBnZXRfZWxsaXBzaXNfdGV4dDsKK2V4cG9ydHMub3Bl
bl90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fdGFnOworZXhwb3J0cy5j
bG9zZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gY2xvc2VfdGFnOworZXhwb3J0
cy5zZXRfdGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc2V0X3RhZ3M7CitleHBv
cnRzLnNldF9wcmludF90YWdzICAgICAgICAgICAgICAgICAgICAgICAgPSBzZXRfcHJpbnRfdGFn
czsKK2V4cG9ydHMuc2V0X21hcmtfdGFncyAgICAgICAgICAgICAgICAgICAgICAgICA9IHNldF9t
YXJrX3RhZ3M7CitleHBvcnRzLmdldF9wcmludF90YWdzICAgICAgICAgICAgICAgICAgICAgICAg
PSBnZXRfcHJpbnRfdGFnczsKK2V4cG9ydHMuZ2V0X21hcmtfdGFncyAgICAgICAgICAgICAgICAg
ICAgICAgICA9IGdldF9tYXJrX3RhZ3M7CitleHBvcnRzLnNldF9mb3JtYXR0ZXJfb3V0X2NoYW5u
ZWwgICAgICAgICAgICAgPSBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsOworZXhwb3J0cy5zZXRf
Zm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgICAgID0gc2V0X2Zvcm1hdHRlcl9vdXRwdXRf
ZnVuY3Rpb25zOworZXhwb3J0cy5nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgICAg
ID0gZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOworZXhwb3J0cy5zZXRfZm9ybWF0dGVy
X291dF9mdW5jdGlvbnMgICAgICAgICAgID0gc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOwor
ZXhwb3J0cy5nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgICAgICAgICAgID0gZ2V0X2Zvcm1h
dHRlcl9vdXRfZnVuY3Rpb25zOworZXhwb3J0cy5zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMg
ICAgICAgICAgID0gc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOworZXhwb3J0cy5nZXRfZm9y
bWF0dGVyX3RhZ19mdW5jdGlvbnMgICAgICAgICAgID0gZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rp
b25zOworZXhwb3J0cy5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgICAgICAgICAgICAgID0gZm9y
bWF0dGVyX29mX291dF9jaGFubmVsOworZXhwb3J0cy5zdGRfZm9ybWF0dGVyICAgICAgICAgICAg
ICAgICAgICAgICAgID0gc3RkX2Zvcm1hdHRlcjsKK2V4cG9ydHMuZXJyX2Zvcm1hdHRlciAgICAg
ICAgICAgICAgICAgICAgICAgICA9IGVycl9mb3JtYXR0ZXI7CitleHBvcnRzLmZvcm1hdHRlcl9v
Zl9idWZmZXIgICAgICAgICAgICAgICAgICAgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyOworZXhwb3J0
cy5zdGRidWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RkYnVmOworZXhwb3J0
cy5zdHJfZm9ybWF0dGVyICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RyX2Zvcm1hdHRlcjsK
K2V4cG9ydHMuZmx1c2hfc3RyX2Zvcm1hdHRlciAgICAgICAgICAgICAgICAgICA9IGZsdXNoX3N0
cl9mb3JtYXR0ZXI7CitleHBvcnRzLm1ha2VfZm9ybWF0dGVyICAgICAgICAgICAgICAgICAgICAg
ICAgPSBtYWtlX2Zvcm1hdHRlcjsKK2V4cG9ydHMucHBfb3Blbl9oYm94ICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IHBwX29wZW5faGJveDsKK2V4cG9ydHMucHBfb3Blbl92Ym94ICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IHBwX29wZW5fdmJveDsKK2V4cG9ydHMucHBfb3Blbl9odmJveCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IHBwX29wZW5faHZib3g7CitleHBvcnRzLnBwX29wZW5f
aG92Ym94ICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9vcGVuX2hvdmJveDsKK2V4cG9ydHMu
cHBfb3Blbl9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX29wZW5fYm94OworZXhw
b3J0cy5wcF9jbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfY2xvc2VfYm94
OworZXhwb3J0cy5wcF9vcGVuX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfb3Bl
bl90YWc7CitleHBvcnRzLnBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgPSBw
cF9jbG9zZV90YWc7CitleHBvcnRzLnBwX3ByaW50X3N0cmluZyAgICAgICAgICAgICAgICAgICAg
ICAgPSBwcF9wcmludF9zdHJpbmc7CitleHBvcnRzLnBwX3ByaW50X2FzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBwcF9wcmludF9hczsKK2V4cG9ydHMucHBfcHJpbnRfaW50ICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2ludDsKK2V4cG9ydHMucHBfcHJpbnRfZmxvYXQg
ICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2Zsb2F0OworZXhwb3J0cy5wcF9wcmlu
dF9jaGFyICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfY2hhcjsKK2V4cG9ydHMu
cHBfcHJpbnRfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2Jvb2w7Citl
eHBvcnRzLnBwX3ByaW50X2JyZWFrICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9wcmludF9i
cmVhazsKK2V4cG9ydHMucHBfcHJpbnRfY3V0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBw
X3ByaW50X2N1dDsKK2V4cG9ydHMucHBfcHJpbnRfc3BhY2UgICAgICAgICAgICAgICAgICAgICAg
ICA9IHBwX3ByaW50X3NwYWNlOworZXhwb3J0cy5wcF9mb3JjZV9uZXdsaW5lICAgICAgICAgICAg
ICAgICAgICAgID0gcHBfZm9yY2VfbmV3bGluZTsKK2V4cG9ydHMucHBfcHJpbnRfZmx1c2ggICAg
ICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2ZsdXNoOworZXhwb3J0cy5wcF9wcmludF9u
ZXdsaW5lICAgICAgICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfbmV3bGluZTsKK2V4cG9ydHMu
cHBfcHJpbnRfaWZfbmV3bGluZSAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2lmX25ld2xp
bmU7CitleHBvcnRzLnBwX29wZW5fdGJveCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9v
cGVuX3Rib3g7CitleHBvcnRzLnBwX2Nsb3NlX3Rib3ggICAgICAgICAgICAgICAgICAgICAgICAg
PSBwcF9jbG9zZV90Ym94OworZXhwb3J0cy5wcF9wcmludF90YnJlYWsgICAgICAgICAgICAgICAg
ICAgICAgID0gcHBfcHJpbnRfdGJyZWFrOworZXhwb3J0cy5wcF9zZXRfdGFiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gcHBfc2V0X3RhYjsKK2V4cG9ydHMucHBfcHJpbnRfdGFiICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X3RhYjsKK2V4cG9ydHMucHBfc2V0X3RhZ3Mg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3NldF90YWdzOworZXhwb3J0cy5wcF9zZXRf
cHJpbnRfdGFncyAgICAgICAgICAgICAgICAgICAgID0gcHBfc2V0X3ByaW50X3RhZ3M7CitleHBv
cnRzLnBwX3NldF9tYXJrX3RhZ3MgICAgICAgICAgICAgICAgICAgICAgPSBwcF9zZXRfbWFya190
YWdzOworZXhwb3J0cy5wcF9nZXRfcHJpbnRfdGFncyAgICAgICAgICAgICAgICAgICAgID0gcHBf
Z2V0X3ByaW50X3RhZ3M7CitleHBvcnRzLnBwX2dldF9tYXJrX3RhZ3MgICAgICAgICAgICAgICAg
ICAgICAgPSBwcF9nZXRfbWFya190YWdzOworZXhwb3J0cy5wcF9zZXRfbWFyZ2luICAgICAgICAg
ICAgICAgICAgICAgICAgID0gcHBfc2V0X21hcmdpbjsKK2V4cG9ydHMucHBfZ2V0X21hcmdpbiAg
ICAgICAgICAgICAgICAgICAgICAgICA9IHBwX2dldF9tYXJnaW47CitleHBvcnRzLnBwX3NldF9t
YXhfaW5kZW50ICAgICAgICAgICAgICAgICAgICAgPSBwcF9zZXRfbWF4X2luZGVudDsKK2V4cG9y
dHMucHBfZ2V0X21heF9pbmRlbnQgICAgICAgICAgICAgICAgICAgICA9IHBwX2dldF9tYXhfaW5k
ZW50OworZXhwb3J0cy5wcF9zZXRfbWF4X2JveGVzICAgICAgICAgICAgICAgICAgICAgID0gcHBf
c2V0X21heF9ib3hlczsKK2V4cG9ydHMucHBfZ2V0X21heF9ib3hlcyAgICAgICAgICAgICAgICAg
ICAgICA9IHBwX2dldF9tYXhfYm94ZXM7CitleHBvcnRzLnBwX292ZXJfbWF4X2JveGVzICAgICAg
ICAgICAgICAgICAgICAgPSBwcF9vdmVyX21heF9ib3hlczsKK2V4cG9ydHMucHBfc2V0X2VsbGlw
c2lzX3RleHQgICAgICAgICAgICAgICAgICA9IHBwX3NldF9lbGxpcHNpc190ZXh0OworZXhwb3J0
cy5wcF9nZXRfZWxsaXBzaXNfdGV4dCAgICAgICAgICAgICAgICAgID0gcHBfZ2V0X2VsbGlwc2lz
X3RleHQ7CitleHBvcnRzLnBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgICAgICAgICAgPSBw
cF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX291
dHB1dF9mdW5jdGlvbnMgICAgID0gcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOwor
ZXhwb3J0cy5wcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgID0gcHBfZ2V0X2Zv
cm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX3RhZ19m
dW5jdGlvbnMgICAgICAgID0gcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOworZXhwb3J0
cy5wcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgICAgICAgID0gcHBfZ2V0X2Zvcm1hdHRl
cl90YWdfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMg
ICAgICAgID0gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9nZXRf
Zm9ybWF0dGVyX291dF9mdW5jdGlvbnMgICAgICAgID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVu
Y3Rpb25zOworZXhwb3J0cy5wcF9wcmludF9saXN0ICAgICAgICAgICAgICAgICAgICAgICAgID0g
cHBfcHJpbnRfbGlzdDsKK2V4cG9ydHMucHBfcHJpbnRfdGV4dCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IHBwX3ByaW50X3RleHQ7CitleHBvcnRzLmZwcmludGYgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBmcHJpbnRmOworZXhwb3J0cy5wcmludGYgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gcHJpbnRmOworZXhwb3J0cy5lcHJpbnRmICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gZXByaW50ZjsKK2V4cG9ydHMuc3ByaW50ZiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHNwcmludGY7CitleHBvcnRzLmFzcHJpbnRmICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBhc3ByaW50ZjsKK2V4cG9ydHMuaWZwcmludGYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IGlmcHJpbnRmOworZXhwb3J0cy5rZnByaW50ZiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0ga2ZwcmludGY7CitleHBvcnRzLmlrZnByaW50ZiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBpa2ZwcmludGY7CitleHBvcnRzLmtzcHJpbnRmICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBrc3ByaW50ZjsKK2V4cG9ydHMuYnByaW50ZiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGJwcmludGY7CitleHBvcnRzLmtwcmludGYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBrcHJpbnRmOworZXhwb3J0cy5zZXRfYWxsX2Zv
cm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zICAgID0gc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1
bmN0aW9uczsKK2V4cG9ydHMuZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAgICA9
IGdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnM7CitleHBvcnRzLnBwX3NldF9hbGxf
Zm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPSBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRf
ZnVuY3Rpb25zOworZXhwb3J0cy5wcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25z
ID0gcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uczsKKy8qIGJsYW5rX2xpbmUg
Tm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBmb3JtYXQuanMgLy8vLy8vLy8K
K8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnaTMyJ10gPSBm
dW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBp
MzIuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQu
MyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgSW50ICAgICAg
ICA9IHJlcXVpcmUoIi4vaW50Iik7Cit2YXIgSW50MzIgICAgICA9IHJlcXVpcmUoImJzLXBsYXRm
b3JtL2xpYi9qcy9pbnQzMiIpOwordmFyIENhbWxfaW50MzIgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvY2FtbF9pbnQzMiIpOworCit2YXIgaW5jbHVkZSA9IEludC5NYWtlKC8qIG1vZHVs
ZSAqL1sKKyAgICAgIC8qIHplcm8gKi9JbnQzMi56ZXJvLAorICAgICAgLyogb25lICovSW50MzIu
b25lLAorICAgICAgLyogbWludXNfb25lICovSW50MzIubWludXNfb25lLAorICAgICAgLyogbWF4
X2ludCAqL0ludDMyLm1heF9pbnQsCisgICAgICAvKiBtaW5faW50ICovSW50MzIubWluX2ludCwK
KyAgICAgIC8qICVpbnQzMl9uZWcgKi9mdW5jdGlvbiAocHJpbSkgeworICAgICAgICByZXR1cm4g
LXByaW0gfCAwOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl9hZGQgKi9mdW5jdGlvbiAocHJp
bSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiBwcmltICsgcHJpbSQxIHwgMDsKKyAgICAgIH0s
CisgICAgICAvKiAlaW50MzJfc3ViICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAg
ICByZXR1cm4gcHJpbSAtIHByaW0kMSB8IDA7CisgICAgICB9LAorICAgICAgLyogJWludDMyX211
bCAqL0NhbWxfaW50MzIuaW11bCwKKyAgICAgIC8qICVpbnQzMl9kaXYgKi9DYW1sX2ludDMyLmRp
diwKKyAgICAgIC8qICVpbnQzMl9tb2QgKi9DYW1sX2ludDMyLm1vZF8sCisgICAgICAvKiAlaW50
MzJfYW5kICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSAm
IHByaW0kMTsKKyAgICAgIH0sCisgICAgICAvKiBsb2dub3QgKi9JbnQzMi5sb2dub3QsCisgICAg
ICAvKiAlaW50MzJfb3IgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVy
biBwcmltIHwgcHJpbSQxOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl94b3IgKi9mdW5jdGlv
biAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiBwcmltIF4gcHJpbSQxOworICAgICAg
fSwKKyAgICAgIC8qICVpbnQzMl9sc2wgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAg
ICAgIHJldHVybiAocHJpbSA8PCBwcmltJDEpOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl9h
c3IgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAocHJpbSA+PiBw
cmltJDEpOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl9sc3IgKi9mdW5jdGlvbiAocHJpbSwg
cHJpbSQxKSB7CisgICAgICAgIHJldHVybiAocHJpbSA+Pj4gcHJpbSQxKSB8IDA7CisgICAgICB9
LAorICAgICAgLyogJWludDMyX29mX2ludCAqL2Z1bmN0aW9uIChwcmltKSB7CisgICAgICAgIHJl
dHVybiBwcmltOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl90b19pbnQgKi9mdW5jdGlvbiAo
cHJpbSkgeworICAgICAgICByZXR1cm4gcHJpbTsKKyAgICAgIH0sCisgICAgICAvKiB0b19zdHJp
bmcgKi9JbnQzMi50b19zdHJpbmcsCisgICAgICAvKiBiaXR3aWR0aCAqLzMyCisgICAgXSk7CisK
K3ZhciBvZl9iaXRzID0gaW5jbHVkZVswXTsKKwordmFyIHRvX2JpdHMgPSBpbmNsdWRlWzFdOwor
Cit2YXIgemVybyA9IGluY2x1ZGVbMl07CisKK3ZhciBhZGQgPSBpbmNsdWRlWzNdOworCit2YXIg
c3ViID0gaW5jbHVkZVs0XTsKKwordmFyIG11bCA9IGluY2x1ZGVbNV07CisKK3ZhciBkaXZfcyA9
IGluY2x1ZGVbNl07CisKK3ZhciBkaXZfdSA9IGluY2x1ZGVbN107CisKK3ZhciByZW1fcyA9IGlu
Y2x1ZGVbOF07CisKK3ZhciByZW1fdSA9IGluY2x1ZGVbOV07CisKK3ZhciBhbmRfID0gaW5jbHVk
ZVsxMF07CisKK3ZhciBvcl8gPSBpbmNsdWRlWzExXTsKKwordmFyIHhvciA9IGluY2x1ZGVbMTJd
OworCit2YXIgc2hsID0gaW5jbHVkZVsxM107CisKK3ZhciBzaHJfcyA9IGluY2x1ZGVbMTRdOwor
Cit2YXIgc2hyX3UgPSBpbmNsdWRlWzE1XTsKKwordmFyIHJvdGwgPSBpbmNsdWRlWzE2XTsKKwor
dmFyIHJvdHIgPSBpbmNsdWRlWzE3XTsKKwordmFyIGNseiA9IGluY2x1ZGVbMThdOworCit2YXIg
Y3R6ID0gaW5jbHVkZVsxOV07CisKK3ZhciBwb3BjbnQgPSBpbmNsdWRlWzIwXTsKKwordmFyIGVx
eiA9IGluY2x1ZGVbMjFdOworCit2YXIgZXEgPSBpbmNsdWRlWzIyXTsKKwordmFyIG5lID0gaW5j
bHVkZVsyM107CisKK3ZhciBsdF9zID0gaW5jbHVkZVsyNF07CisKK3ZhciBsdF91ID0gaW5jbHVk
ZVsyNV07CisKK3ZhciBsZV9zID0gaW5jbHVkZVsyNl07CisKK3ZhciBsZV91ID0gaW5jbHVkZVsy
N107CisKK3ZhciBndF9zID0gaW5jbHVkZVsyOF07CisKK3ZhciBndF91ID0gaW5jbHVkZVsyOV07
CisKK3ZhciBnZV9zID0gaW5jbHVkZVszMF07CisKK3ZhciBnZV91ID0gaW5jbHVkZVszMV07CisK
K3ZhciBvZl9pbnRfcyA9IGluY2x1ZGVbMzJdOworCit2YXIgb2ZfaW50X3UgPSBpbmNsdWRlWzMz
XTsKKwordmFyIG9mX3N0cmluZ19zID0gaW5jbHVkZVszNF07CisKK3ZhciBvZl9zdHJpbmdfdSA9
IGluY2x1ZGVbMzVdOworCit2YXIgb2Zfc3RyaW5nID0gaW5jbHVkZVszNl07CisKK3ZhciB0b19z
dHJpbmdfcyA9IGluY2x1ZGVbMzddOworCit2YXIgdG9fc3RyaW5nX3UgPSBpbmNsdWRlWzM4XTsK
KworZXhwb3J0cy5vZl9iaXRzICAgICA9IG9mX2JpdHM7CitleHBvcnRzLnRvX2JpdHMgICAgID0g
dG9fYml0czsKK2V4cG9ydHMuemVybyAgICAgICAgPSB6ZXJvOworZXhwb3J0cy5hZGQgICAgICAg
ICA9IGFkZDsKK2V4cG9ydHMuc3ViICAgICAgICAgPSBzdWI7CitleHBvcnRzLm11bCAgICAgICAg
ID0gbXVsOworZXhwb3J0cy5kaXZfcyAgICAgICA9IGRpdl9zOworZXhwb3J0cy5kaXZfdSAgICAg
ICA9IGRpdl91OworZXhwb3J0cy5yZW1fcyAgICAgICA9IHJlbV9zOworZXhwb3J0cy5yZW1fdSAg
ICAgICA9IHJlbV91OworZXhwb3J0cy5hbmRfICAgICAgICA9IGFuZF87CitleHBvcnRzLm9yXyAg
ICAgICAgID0gb3JfOworZXhwb3J0cy54b3IgICAgICAgICA9IHhvcjsKK2V4cG9ydHMuc2hsICAg
ICAgICAgPSBzaGw7CitleHBvcnRzLnNocl9zICAgICAgID0gc2hyX3M7CitleHBvcnRzLnNocl91
ICAgICAgID0gc2hyX3U7CitleHBvcnRzLnJvdGwgICAgICAgID0gcm90bDsKK2V4cG9ydHMucm90
ciAgICAgICAgPSByb3RyOworZXhwb3J0cy5jbHogICAgICAgICA9IGNsejsKK2V4cG9ydHMuY3R6
ICAgICAgICAgPSBjdHo7CitleHBvcnRzLnBvcGNudCAgICAgID0gcG9wY250OworZXhwb3J0cy5l
cXogICAgICAgICA9IGVxejsKK2V4cG9ydHMuZXEgICAgICAgICAgPSBlcTsKK2V4cG9ydHMubmUg
ICAgICAgICAgPSBuZTsKK2V4cG9ydHMubHRfcyAgICAgICAgPSBsdF9zOworZXhwb3J0cy5sdF91
ICAgICAgICA9IGx0X3U7CitleHBvcnRzLmxlX3MgICAgICAgID0gbGVfczsKK2V4cG9ydHMubGVf
dSAgICAgICAgPSBsZV91OworZXhwb3J0cy5ndF9zICAgICAgICA9IGd0X3M7CitleHBvcnRzLmd0
X3UgICAgICAgID0gZ3RfdTsKK2V4cG9ydHMuZ2VfcyAgICAgICAgPSBnZV9zOworZXhwb3J0cy5n
ZV91ICAgICAgICA9IGdlX3U7CitleHBvcnRzLm9mX2ludF9zICAgID0gb2ZfaW50X3M7CitleHBv
cnRzLm9mX2ludF91ICAgID0gb2ZfaW50X3U7CitleHBvcnRzLm9mX3N0cmluZ19zID0gb2Zfc3Ry
aW5nX3M7CitleHBvcnRzLm9mX3N0cmluZ191ID0gb2Zfc3RyaW5nX3U7CitleHBvcnRzLm9mX3N0
cmluZyAgID0gb2Zfc3RyaW5nOworZXhwb3J0cy50b19zdHJpbmdfcyA9IHRvX3N0cmluZ19zOwor
ZXhwb3J0cy50b19zdHJpbmdfdSA9IHRvX3N0cmluZ191OworLyogaW5jbHVkZSBOb3QgYSBwdXJl
IG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGkzMi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJu
IGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydpNjQnXSA9IGZ1bmN0aW9uKCkgewor
wqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGk2NC5qcyAvLy8vLy8v
LworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVE
SVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBJbnQgICAgICAgID0gcmVxdWlyZSgi
Li9pbnQiKTsKK3ZhciBJbnQ2NCAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2lu
dDY0Iik7Cit2YXIgQ2FtbF9pbnQ2NCA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1s
X2ludDY0Iik7CisKK3ZhciBpbmNsdWRlID0gSW50Lk1ha2UoLyogbW9kdWxlICovWworICAgICAg
LyogemVybyAqL0ludDY0Lnplcm8sCisgICAgICAvKiBvbmUgKi9JbnQ2NC5vbmUsCisgICAgICAv
KiBtaW51c19vbmUgKi9JbnQ2NC5taW51c19vbmUsCisgICAgICAvKiBtYXhfaW50ICovSW50NjQu
bWF4X2ludCwKKyAgICAgIC8qIG1pbl9pbnQgKi9JbnQ2NC5taW5faW50LAorICAgICAgLyogJWlu
dDY0X25lZyAqL0NhbWxfaW50NjQubmVnLAorICAgICAgLyogJWludDY0X2FkZCAqL0NhbWxfaW50
NjQuYWRkLAorICAgICAgLyogJWludDY0X3N1YiAqL0NhbWxfaW50NjQuc3ViLAorICAgICAgLyog
JWludDY0X211bCAqL0NhbWxfaW50NjQubXVsLAorICAgICAgLyogJWludDY0X2RpdiAqL0NhbWxf
aW50NjQuZGl2LAorICAgICAgLyogJWludDY0X21vZCAqL0NhbWxfaW50NjQubW9kXywKKyAgICAg
IC8qICVpbnQ2NF9hbmQgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVy
biAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gJiBwcmltJDFb
MF0sCisgICAgICAgICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gJiBwcmltJDFbMV0pID4+PiAw
KQorICAgICAgICAgICAgICBdOworICAgICAgfSwKKyAgICAgIC8qIGxvZ25vdCAqL0ludDY0Lmxv
Z25vdCwKKyAgICAgIC8qICVpbnQ2NF9vciAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAg
ICAgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgIC8qIGhpICovcHJpbVsw
XSB8IHByaW0kMVswXSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLygocHJpbVsxXSB8IHByaW0k
MVsxXSkgPj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9LAorICAgICAgLyogJWludDY0
X3hvciAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIC8qIGludDY0
ICovWworICAgICAgICAgICAgICAgIC8qIGhpICovcHJpbVswXSBeIHByaW0kMVswXSwKKyAgICAg
ICAgICAgICAgICAvKiBsbyAqLygocHJpbVsxXSBeIHByaW0kMVsxXSkgPj4+IDApCisgICAgICAg
ICAgICAgIF07CisgICAgICB9LAorICAgICAgLyogJWludDY0X2xzbCAqL0NhbWxfaW50NjQubHNs
XywKKyAgICAgIC8qICVpbnQ2NF9hc3IgKi9DYW1sX2ludDY0LmFzcl8sCisgICAgICAvKiAlaW50
NjRfbHNyICovQ2FtbF9pbnQ2NC5sc3JfLAorICAgICAgLyogJWludDY0X29mX2ludCAqL0NhbWxf
aW50NjQub2ZfaW50MzIsCisgICAgICAvKiAlaW50NjRfdG9faW50ICovZnVuY3Rpb24gKHByaW0p
IHsKKyAgICAgICAgcmV0dXJuIHByaW1bMV0gfCAwOworICAgICAgfSwKKyAgICAgIC8qIHRvX3N0
cmluZyAqL0ludDY0LnRvX3N0cmluZywKKyAgICAgIC8qIGJpdHdpZHRoICovNjQKKyAgICBdKTsK
KwordmFyIG9mX2JpdHMgPSBpbmNsdWRlWzBdOworCit2YXIgdG9fYml0cyA9IGluY2x1ZGVbMV07
CisKK3ZhciB6ZXJvID0gaW5jbHVkZVsyXTsKKwordmFyIGFkZCA9IGluY2x1ZGVbM107CisKK3Zh
ciBzdWIgPSBpbmNsdWRlWzRdOworCit2YXIgbXVsID0gaW5jbHVkZVs1XTsKKwordmFyIGRpdl9z
ID0gaW5jbHVkZVs2XTsKKwordmFyIGRpdl91ID0gaW5jbHVkZVs3XTsKKwordmFyIHJlbV9zID0g
aW5jbHVkZVs4XTsKKwordmFyIHJlbV91ID0gaW5jbHVkZVs5XTsKKwordmFyIGFuZF8gPSBpbmNs
dWRlWzEwXTsKKwordmFyIG9yXyA9IGluY2x1ZGVbMTFdOworCit2YXIgeG9yID0gaW5jbHVkZVsx
Ml07CisKK3ZhciBzaGwgPSBpbmNsdWRlWzEzXTsKKwordmFyIHNocl9zID0gaW5jbHVkZVsxNF07
CisKK3ZhciBzaHJfdSA9IGluY2x1ZGVbMTVdOworCit2YXIgcm90bCA9IGluY2x1ZGVbMTZdOwor
Cit2YXIgcm90ciA9IGluY2x1ZGVbMTddOworCit2YXIgY2x6ID0gaW5jbHVkZVsxOF07CisKK3Zh
ciBjdHogPSBpbmNsdWRlWzE5XTsKKwordmFyIHBvcGNudCA9IGluY2x1ZGVbMjBdOworCit2YXIg
ZXF6ID0gaW5jbHVkZVsyMV07CisKK3ZhciBlcSA9IGluY2x1ZGVbMjJdOworCit2YXIgbmUgPSBp
bmNsdWRlWzIzXTsKKwordmFyIGx0X3MgPSBpbmNsdWRlWzI0XTsKKwordmFyIGx0X3UgPSBpbmNs
dWRlWzI1XTsKKwordmFyIGxlX3MgPSBpbmNsdWRlWzI2XTsKKwordmFyIGxlX3UgPSBpbmNsdWRl
WzI3XTsKKwordmFyIGd0X3MgPSBpbmNsdWRlWzI4XTsKKwordmFyIGd0X3UgPSBpbmNsdWRlWzI5
XTsKKwordmFyIGdlX3MgPSBpbmNsdWRlWzMwXTsKKwordmFyIGdlX3UgPSBpbmNsdWRlWzMxXTsK
KwordmFyIG9mX2ludF9zID0gaW5jbHVkZVszMl07CisKK3ZhciBvZl9pbnRfdSA9IGluY2x1ZGVb
MzNdOworCit2YXIgb2Zfc3RyaW5nX3MgPSBpbmNsdWRlWzM0XTsKKwordmFyIG9mX3N0cmluZ191
ID0gaW5jbHVkZVszNV07CisKK3ZhciBvZl9zdHJpbmcgPSBpbmNsdWRlWzM2XTsKKwordmFyIHRv
X3N0cmluZ19zID0gaW5jbHVkZVszN107CisKK3ZhciB0b19zdHJpbmdfdSA9IGluY2x1ZGVbMzhd
OworCitleHBvcnRzLm9mX2JpdHMgICAgID0gb2ZfYml0czsKK2V4cG9ydHMudG9fYml0cyAgICAg
PSB0b19iaXRzOworZXhwb3J0cy56ZXJvICAgICAgICA9IHplcm87CitleHBvcnRzLmFkZCAgICAg
ICAgID0gYWRkOworZXhwb3J0cy5zdWIgICAgICAgICA9IHN1YjsKK2V4cG9ydHMubXVsICAgICAg
ICAgPSBtdWw7CitleHBvcnRzLmRpdl9zICAgICAgID0gZGl2X3M7CitleHBvcnRzLmRpdl91ICAg
ICAgID0gZGl2X3U7CitleHBvcnRzLnJlbV9zICAgICAgID0gcmVtX3M7CitleHBvcnRzLnJlbV91
ICAgICAgID0gcmVtX3U7CitleHBvcnRzLmFuZF8gICAgICAgID0gYW5kXzsKK2V4cG9ydHMub3Jf
ICAgICAgICAgPSBvcl87CitleHBvcnRzLnhvciAgICAgICAgID0geG9yOworZXhwb3J0cy5zaGwg
ICAgICAgICA9IHNobDsKK2V4cG9ydHMuc2hyX3MgICAgICAgPSBzaHJfczsKK2V4cG9ydHMuc2hy
X3UgICAgICAgPSBzaHJfdTsKK2V4cG9ydHMucm90bCAgICAgICAgPSByb3RsOworZXhwb3J0cy5y
b3RyICAgICAgICA9IHJvdHI7CitleHBvcnRzLmNseiAgICAgICAgID0gY2x6OworZXhwb3J0cy5j
dHogICAgICAgICA9IGN0ejsKK2V4cG9ydHMucG9wY250ICAgICAgPSBwb3BjbnQ7CitleHBvcnRz
LmVxeiAgICAgICAgID0gZXF6OworZXhwb3J0cy5lcSAgICAgICAgICA9IGVxOworZXhwb3J0cy5u
ZSAgICAgICAgICA9IG5lOworZXhwb3J0cy5sdF9zICAgICAgICA9IGx0X3M7CitleHBvcnRzLmx0
X3UgICAgICAgID0gbHRfdTsKK2V4cG9ydHMubGVfcyAgICAgICAgPSBsZV9zOworZXhwb3J0cy5s
ZV91ICAgICAgICA9IGxlX3U7CitleHBvcnRzLmd0X3MgICAgICAgID0gZ3RfczsKK2V4cG9ydHMu
Z3RfdSAgICAgICAgPSBndF91OworZXhwb3J0cy5nZV9zICAgICAgICA9IGdlX3M7CitleHBvcnRz
LmdlX3UgICAgICAgID0gZ2VfdTsKK2V4cG9ydHMub2ZfaW50X3MgICAgPSBvZl9pbnRfczsKK2V4
cG9ydHMub2ZfaW50X3UgICAgPSBvZl9pbnRfdTsKK2V4cG9ydHMub2Zfc3RyaW5nX3MgPSBvZl9z
dHJpbmdfczsKK2V4cG9ydHMub2Zfc3RyaW5nX3UgPSBvZl9zdHJpbmdfdTsKK2V4cG9ydHMub2Zf
c3RyaW5nICAgPSBvZl9zdHJpbmc7CitleHBvcnRzLnRvX3N0cmluZ19zID0gdG9fc3RyaW5nX3M7
CitleHBvcnRzLnRvX3N0cmluZ191ID0gdG9fc3RyaW5nX3U7CisvKiBpbmNsdWRlIE5vdCBhIHB1
cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgaTY0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1
cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2ludDMyJ10gPSBmdW5jdGlvbigp
IHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpbnQzMi5qcyAv
Ly8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9vYmogICAgPSByZXF1aXJlKCIuL2Nh
bWxfb2JqIik7Cit2YXIgQ2FtbF9mb3JtYXQgPSByZXF1aXJlKCIuL2NhbWxfZm9ybWF0Iik7CisK
K2Z1bmN0aW9uIHN1Y2MobikgeworICByZXR1cm4gbiArIDEgfCAwOworfQorCitmdW5jdGlvbiBw
cmVkKG4pIHsKKyAgcmV0dXJuIG4gLSAxIHwgMDsKK30KKworZnVuY3Rpb24gYWJzKG4pIHsKKyAg
aWYgKG4gPj0gMCkgeworICAgIHJldHVybiBuOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAt
biB8IDA7CisgIH0KK30KKworZnVuY3Rpb24gbG9nbm90KG4pIHsKKyAgcmV0dXJuIG4gXiAtMTsK
K30KKworZnVuY3Rpb24gdG9fc3RyaW5nKG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxf
aW50MzJfZm9ybWF0KCIlZCIsIG4pOworfQorCit2YXIgY29tcGFyZSA9IENhbWxfb2JqLmNhbWxf
aW50MzJfY29tcGFyZTsKKwordmFyIHplcm8gPSAwOworCit2YXIgb25lID0gMTsKKwordmFyIG1p
bnVzX29uZSA9IC0xOworCit2YXIgbWF4X2ludCA9IDIxNDc0ODM2NDc7CisKK3ZhciBtaW5faW50
ID0gLTIxNDc0ODM2NDg7CisKK2V4cG9ydHMuemVybyAgICAgID0gemVybzsKK2V4cG9ydHMub25l
ICAgICAgID0gb25lOworZXhwb3J0cy5taW51c19vbmUgPSBtaW51c19vbmU7CitleHBvcnRzLnN1
Y2MgICAgICA9IHN1Y2M7CitleHBvcnRzLnByZWQgICAgICA9IHByZWQ7CitleHBvcnRzLmFicyAg
ICAgICA9IGFiczsKK2V4cG9ydHMubWF4X2ludCAgID0gbWF4X2ludDsKK2V4cG9ydHMubWluX2lu
dCAgID0gbWluX2ludDsKK2V4cG9ydHMubG9nbm90ICAgID0gbG9nbm90OworZXhwb3J0cy50b19z
dHJpbmcgPSB0b19zdHJpbmc7CitleHBvcnRzLmNvbXBhcmUgICA9IGNvbXBhcmU7CisvKiBObyBz
aWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGludDMyLmpzIC8vLy8vLy8vCivCoCDCoCBy
ZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2ludDY0J10gPSBmdW5jdGlv
bigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpbnQ2NC5q
cyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9pbnQ2NCAgPSByZXF1aXJlKCIu
L2NhbWxfaW50NjQiKTsKK3ZhciBDYW1sX2Zvcm1hdCA9IHJlcXVpcmUoIi4vY2FtbF9mb3JtYXQi
KTsKKworZnVuY3Rpb24gc3VjYyhuKSB7CisgIHJldHVybiBDYW1sX2ludDY0LmFkZChuLCAvKiBp
bnQ2NCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAvKiBsbyAq
LzEKKyAgICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBwcmVkKG4pIHsKKyAgcmV0dXJuIENh
bWxfaW50NjQuc3ViKG4sIC8qIGludDY0ICovWworICAgICAgICAgICAgICAvKiBoaSAqLzAsCisg
ICAgICAgICAgICAgIC8qIGxvICovMQorICAgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGFi
cyhuKSB7CisgIGlmIChDYW1sX2ludDY0LmdlKG4sIC8qIGludDY0ICovWworICAgICAgICAgIC8q
IGhpICovMCwKKyAgICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAgXSkpIHsKKyAgICByZXR1cm4g
bjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2FtbF9pbnQ2NC5uZWcobik7CisgIH0KK30K
KworZnVuY3Rpb24gbG9nbm90KG4pIHsKKyAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAg
IC8qIGhpICovblswXSBeIC8qIGhpICovLTEsCisgICAgICAgICAgLyogbG8gKi8oKG5bMV0gXiAv
KiBsbyAqLzQyOTQ5NjcyOTUpID4+PiAwKQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0b19z
dHJpbmcobikgeworICByZXR1cm4gQ2FtbF9mb3JtYXQuY2FtbF9pbnQ2NF9mb3JtYXQoIiVkIiwg
bik7Cit9CisKK3ZhciBjb21wYXJlID0gQ2FtbF9pbnQ2NC5jb21wYXJlOworCit2YXIgemVybyA9
IC8qIGludDY0ICovWworICAvKiBoaSAqLzAsCisgIC8qIGxvICovMAorXTsKKwordmFyIG9uZSA9
IC8qIGludDY0ICovWworICAvKiBoaSAqLzAsCisgIC8qIGxvICovMQorXTsKKwordmFyIG1pbnVz
X29uZSA9IC8qIGludDY0ICovWworICAvKiBoaSAqLy0xLAorICAvKiBsbyAqLzQyOTQ5NjcyOTUK
K107CisKK3ZhciBtYXhfaW50ID0gLyogaW50NjQgKi9bCisgIC8qIGhpICovMjE0NzQ4MzY0NywK
KyAgLyogbG8gKi80Mjk0OTY3Mjk1CitdOworCit2YXIgbWluX2ludCA9IC8qIGludDY0ICovWwor
ICAvKiBoaSAqLy0yMTQ3NDgzNjQ4LAorICAvKiBsbyAqLzAKK107CisKK2V4cG9ydHMuemVybyAg
ICAgID0gemVybzsKK2V4cG9ydHMub25lICAgICAgID0gb25lOworZXhwb3J0cy5taW51c19vbmUg
PSBtaW51c19vbmU7CitleHBvcnRzLnN1Y2MgICAgICA9IHN1Y2M7CitleHBvcnRzLnByZWQgICAg
ICA9IHByZWQ7CitleHBvcnRzLmFicyAgICAgICA9IGFiczsKK2V4cG9ydHMubWF4X2ludCAgID0g
bWF4X2ludDsKK2V4cG9ydHMubWluX2ludCAgID0gbWluX2ludDsKK2V4cG9ydHMubG9nbm90ICAg
ID0gbG9nbm90OworZXhwb3J0cy50b19zdHJpbmcgPSB0b19zdHJpbmc7CitleHBvcnRzLmNvbXBh
cmUgICA9IGNvbXBhcmU7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGlu
dDY0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVn
aXN0cnlbJ2ludCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8v
Ly8vLy8gc3RhcnQgb2YgaW50LmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NS
SVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsK
KwordmFyIEN1cnJ5ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3Vycnki
KTsKK3ZhciBDYW1sX29iaiAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxf
b2JqIik7Cit2YXIgUGVydmFzaXZlcyAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9w
ZXJ2YXNpdmVzIik7Cit2YXIgQ2FtbF9zdHJpbmcgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xp
Yi9qcy9jYW1sX3N0cmluZyIpOwordmFyIE51bWVyaWNfZXJyb3IgPSByZXF1aXJlKCIuL251bWVy
aWNfZXJyb3IiKTsKKworZnVuY3Rpb24gTWFrZShSZXApIHsKKyAgdmFyIGNtcF91ID0gZnVuY3Rp
b24gKHgsIG9wLCB5KSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKG9wLCBDdXJyeS5fMihSZXBbLyog
YWRkICovNl0sIHgsIFJlcFsvKiBtaW5faW50ICovNF0pLCBDdXJyeS5fMihSZXBbLyogYWRkICov
Nl0sIHksIFJlcFsvKiBtaW5faW50ICovNF0pKTsKKyAgfTsKKyAgdmFyIGRpdnJlbV91ID0gZnVu
Y3Rpb24gKG4sIGQpIHsKKyAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChkLCBSZXBbLyogemVy
byAqLzBdKSkgeworICAgICAgdGhyb3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJv
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciB0ID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0
X3JpZ2h0ICovMTZdLCBkLCBSZXBbLyogYml0d2lkdGggKi8yMV0gLSAxIHwgMCk7CisgICAgICB2
YXIgbiRwcmltZSA9IEN1cnJ5Ll8yKFJlcFsvKiBsb2dhbmQgKi8xMV0sIG4sIEN1cnJ5Ll8xKFJl
cFsvKiBsb2dub3QgKi8xMl0sIHQpKTsKKyAgICAgIHZhciBxID0gQ3VycnkuXzIoUmVwWy8qIHNo
aWZ0X2xlZnQgKi8xNV0sIEN1cnJ5Ll8yKFJlcFsvKiBkaXYgKi85XSwgQ3VycnkuXzIoUmVwWy8q
IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKi8xN10sIG4kcHJpbWUsIDEpLCBkKSwgMSk7CisgICAgICB2
YXIgciA9IEN1cnJ5Ll8yKFJlcFsvKiBzdWIgKi83XSwgbiwgQ3VycnkuXzIoUmVwWy8qIG11bCAq
LzhdLCBxLCBkKSk7CisgICAgICBpZiAoY21wX3UociwgQ2FtbF9vYmouY2FtbF9sZXNzdGhhbiwg
ZCkpIHsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIHEsCisg
ICAgICAgICAgICAgICAgcgorICAgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICBDdXJyeS5fMihS
ZXBbLyogYWRkICovNl0sIHEsIFJlcFsvKiBvbmUgKi8xXSksCisgICAgICAgICAgICAgICAgQ3Vy
cnkuXzIoUmVwWy8qIHN1YiAqLzddLCByLCBkKQorICAgICAgICAgICAgICBdOworICAgICAgfQor
ICAgIH0KKyAgfTsKKyAgdmFyIG9mX2JpdHMgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB4
OworICB9OworICB2YXIgdG9fYml0cyA9IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0dXJuIHg7Cisg
IH07CisgIHZhciB6ZXJvID0gUmVwWy8qIHplcm8gKi8wXTsKKyAgdmFyIG9uZSA9IFJlcFsvKiBv
bmUgKi8xXTsKKyAgdmFyIHRlbiA9IEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0sIDEwKTsK
KyAgdmFyIGFkZCA9IFJlcFsvKiBhZGQgKi82XTsKKyAgdmFyIHN1YiA9IFJlcFsvKiBzdWIgKi83
XTsKKyAgdmFyIG11bCA9IFJlcFsvKiBtdWwgKi84XTsKKyAgdmFyIGRpdl9zID0gZnVuY3Rpb24g
KHgsIHkpIHsKKyAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbCh5LCBSZXBbLyogemVybyAqLzBd
KSkgeworICAgICAgdGhyb3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvOworICAg
IH0KKyAgICBlbHNlIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKHgsIFJlcFsvKiBtaW5faW50ICov
NF0pICYmIENhbWxfb2JqLmNhbWxfZXF1YWwoeSwgUmVwWy8qIG1pbnVzX29uZSAqLzJdKSkgewor
ICAgICAgdGhyb3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyT3ZlcmZsb3c7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8yKFJlcFsvKiBkaXYgKi85XSwgeCwgeSk7CisgICAg
fQorICB9OworICB2YXIgZGl2X3UgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiBkaXZy
ZW1fdSh4LCB5KVswXTsKKyAgfTsKKyAgdmFyIHJlbV9zID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAg
ICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbCh5LCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAg
dGhyb3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogcmVtICovMTBdLCB4LCB5KTsKKyAgICB9
CisgIH07CisgIHZhciByZW1fdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGRpdnJl
bV91KHgsIHkpWzFdOworICB9OworICB2YXIgYW5kXyA9IFJlcFsvKiBsb2dhbmQgKi8xMV07Cisg
IHZhciBvcl8gPSBSZXBbLyogbG9nb3IgKi8xM107CisgIHZhciB4b3IgPSBSZXBbLyogbG9neG9y
ICovMTRdOworICB2YXIgc2hpZnQgPSBmdW5jdGlvbiAoZiwgeCwgeSkgeworICAgIHJldHVybiBD
dXJyeS5fMihmLCB4LCBDdXJyeS5fMShSZXBbLyogdG9faW50ICovMTldLCBDdXJyeS5fMihSZXBb
LyogbG9nYW5kICovMTFdLCB5LCBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCBSZXBbLyog
Yml0d2lkdGggKi8yMV0gLSAxIHwgMCkpKSk7CisgIH07CisgIHZhciBzaGwgPSBmdW5jdGlvbiAo
eCwgeSkgeworICAgIHJldHVybiBzaGlmdChSZXBbLyogc2hpZnRfbGVmdCAqLzE1XSwgeCwgeSk7
CisgIH07CisgIHZhciBzaHJfcyA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIHNoaWZ0
KFJlcFsvKiBzaGlmdF9yaWdodCAqLzE2XSwgeCwgeSk7CisgIH07CisgIHZhciBzaHJfdSA9IGZ1
bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIHNoaWZ0KFJlcFsvKiBzaGlmdF9yaWdodF9sb2dp
Y2FsICovMTddLCB4LCB5KTsKKyAgfTsKKyAgdmFyIGNsYW1wX3JvdGF0ZV9jb3VudCA9IGZ1bmN0
aW9uIChuKSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKFJlcFsvKiB0b19pbnQgKi8xOV0sIEN1cnJ5
Ll8yKFJlcFsvKiBsb2dhbmQgKi8xMV0sIG4sIEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0s
IFJlcFsvKiBiaXR3aWR0aCAqLzIxXSAtIDEgfCAwKSkpOworICB9OworICB2YXIgcm90bCA9IGZ1
bmN0aW9uICh4LCB5KSB7CisgICAgdmFyIG4gPSBjbGFtcF9yb3RhdGVfY291bnQoeSk7CisgICAg
cmV0dXJuIEN1cnJ5Ll8yKG9yXywgQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X2xlZnQgKi8xNV0sIHgs
IG4pLCBDdXJyeS5fMihSZXBbLyogc2hpZnRfcmlnaHRfbG9naWNhbCAqLzE3XSwgeCwgUmVwWy8q
IGJpdHdpZHRoICovMjFdIC0gbiB8IDApKTsKKyAgfTsKKyAgdmFyIHJvdHIgPSBmdW5jdGlvbiAo
eCwgeSkgeworICAgIHZhciBuID0gY2xhbXBfcm90YXRlX2NvdW50KHkpOworICAgIHJldHVybiBD
dXJyeS5fMihvcl8sIEN1cnJ5Ll8yKFJlcFsvKiBzaGlmdF9yaWdodF9sb2dpY2FsICovMTddLCB4
LCBuKSwgQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X2xlZnQgKi8xNV0sIHgsIFJlcFsvKiBiaXR3aWR0
aCAqLzIxXSAtIG4gfCAwKSk7CisgIH07CisgIHZhciBjbHogPSBmdW5jdGlvbiAoeCkgeworICAg
IHZhciBsb29wID0gZnVuY3Rpb24gKF9hY2MsIF9uKSB7CisgICAgICB3aGlsZSh0cnVlKSB7Cisg
ICAgICAgIHZhciBuID0gX247CisgICAgICAgIHZhciBhY2MgPSBfYWNjOworICAgICAgICBpZiAo
Q2FtbF9vYmouY2FtbF9lcXVhbChuLCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgICAgIHJl
dHVybiBSZXBbLyogYml0d2lkdGggKi8yMV07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo
Q2FtbF9vYmouY2FtbF9lcXVhbChDdXJyeS5fMihhbmRfLCBuLCBDdXJyeS5fMihSZXBbLyogc2hp
ZnRfbGVmdCAqLzE1XSwgUmVwWy8qIG9uZSAqLzFdLCBSZXBbLyogYml0d2lkdGggKi8yMV0gLSAx
IHwgMCkpLCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgICAgIF9uID0gQ3VycnkuXzIoUmVw
Wy8qIHNoaWZ0X2xlZnQgKi8xNV0sIG4sIDEpOworICAgICAgICAgIF9hY2MgPSAxICsgYWNjIHwg
MDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGFjYzsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9
OworICAgIHJldHVybiBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCBsb29wKDAsIHgpKTsK
KyAgfTsKKyAgdmFyIGN0eiA9IGZ1bmN0aW9uICh4KSB7CisgICAgdmFyIGxvb3AgPSBmdW5jdGlv
biAoX2FjYywgX24pIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFyIG4gPSBfbjsK
KyAgICAgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgICAgIGlmIChDYW1sX29iai5jYW1sX2VxdWFs
KG4sIFJlcFsvKiB6ZXJvICovMF0pKSB7CisgICAgICAgICAgcmV0dXJuIFJlcFsvKiBiaXR3aWR0
aCAqLzIxXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChDYW1sX29iai5jYW1sX2VxdWFs
KEN1cnJ5Ll8yKGFuZF8sIG4sIFJlcFsvKiBvbmUgKi8xXSksIFJlcFsvKiBvbmUgKi8xXSkpIHsK
KyAgICAgICAgICByZXR1cm4gYWNjOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgIF9uID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKi8xN10sIG4sIDEp
OworICAgICAgICAgIF9hY2MgPSAxICsgYWNjIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH07CisgICAgfTsKKyAgICByZXR1cm4gQ3Vycnku
XzEoUmVwWy8qIG9mX2ludCAqLzE4XSwgbG9vcCgwLCB4KSk7CisgIH07CisgIHZhciBwb3BjbnQg
PSBmdW5jdGlvbiAoeCkgeworICAgIHZhciBsb29wID0gZnVuY3Rpb24gKF9hY2MsIF9pLCBfbikg
eworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIgbiA9IF9uOworICAgICAgICB2YXIg
aSA9IF9pOworICAgICAgICB2YXIgYWNjID0gX2FjYzsKKyAgICAgICAgaWYgKENhbWxfb2JqLmNh
bWxfZXF1YWwobiwgUmVwWy8qIHplcm8gKi8wXSkpIHsKKyAgICAgICAgICByZXR1cm4gYWNjOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBhY2MkcHJpbWUgPSBDYW1s
X29iai5jYW1sX2VxdWFsKEN1cnJ5Ll8yKGFuZF8sIG4sIFJlcFsvKiBvbmUgKi8xXSksIFJlcFsv
KiBvbmUgKi8xXSkgPyBhY2MgKyAxIHwgMCA6IGFjYzsKKyAgICAgICAgICBfbiA9IEN1cnJ5Ll8y
KFJlcFsvKiBzaGlmdF9yaWdodF9sb2dpY2FsICovMTddLCBuLCAxKTsKKyAgICAgICAgICBfaSA9
IGkgLSAxIHwgMDsKKyAgICAgICAgICBfYWNjID0gYWNjJHByaW1lOworICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHJldHVy
biBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCBsb29wKDAsIFJlcFsvKiBiaXR3aWR0aCAq
LzIxXSwgeCkpOworICB9OworICB2YXIgZXF6ID0gZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1cm4g
Q2FtbF9vYmouY2FtbF9lcXVhbCh4LCBSZXBbLyogemVybyAqLzBdKTsKKyAgfTsKKyAgdmFyIGVx
ID0gQ2FtbF9vYmouY2FtbF9lcXVhbDsKKyAgdmFyIG5lID0gQ2FtbF9vYmouY2FtbF9ub3RlcXVh
bDsKKyAgdmFyIGx0X3MgPSBDYW1sX29iai5jYW1sX2xlc3N0aGFuOworICB2YXIgbHRfdSA9IGZ1
bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxfb2JqLmNhbWxfbGVzc3Ro
YW4sIHkpOworICB9OworICB2YXIgbGVfcyA9IENhbWxfb2JqLmNhbWxfbGVzc2VxdWFsOworICB2
YXIgbGVfdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxfb2Jq
LmNhbWxfbGVzc2VxdWFsLCB5KTsKKyAgfTsKKyAgdmFyIGd0X3MgPSBDYW1sX29iai5jYW1sX2dy
ZWF0ZXJ0aGFuOworICB2YXIgZ3RfdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNt
cF91KHgsIENhbWxfb2JqLmNhbWxfZ3JlYXRlcnRoYW4sIHkpOworICB9OworICB2YXIgZ2VfcyA9
IENhbWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsOworICB2YXIgZ2VfdSA9IGZ1bmN0aW9uICh4LCB5
KSB7CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsLCB5KTsK
KyAgfTsKKyAgdmFyIG9mX2ludF9zID0gUmVwWy8qIG9mX2ludCAqLzE4XTsKKyAgdmFyIG9mX2lu
dF91ID0gZnVuY3Rpb24gKGkpIHsKKyAgICByZXR1cm4gQ3VycnkuXzIoYW5kXywgQ3VycnkuXzEo
UmVwWy8qIG9mX2ludCAqLzE4XSwgaSksIEN1cnJ5Ll8yKG9yXywgc2hsKEN1cnJ5Ll8xKFJlcFsv
KiBvZl9pbnQgKi8xOF0sIFBlcnZhc2l2ZXMubWF4X2ludCksIG9uZSksIG9uZSkpOworICB9Owor
ICB2YXIgdG9fc3RyaW5nX3MgPSBSZXBbLyogdG9fc3RyaW5nICovMjBdOworICB2YXIgdG9fc3Ry
aW5nX3UgPSBmdW5jdGlvbiAoaSkgeworICAgIGlmIChDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVh
bChpLCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8xKHRvX3N0cmlu
Z19zLCBpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gQ3VycnkuXzEodG9fc3Ry
aW5nX3MsIGRpdl91KGksIHRlbikpICsgQ3VycnkuXzEodG9fc3RyaW5nX3MsIHJlbV91KGksIHRl
bikpOworICAgIH0KKyAgfTsKKyAgdmFyICQkcmVxdWlyZSA9IGZ1bmN0aW9uIChiKSB7CisgICAg
aWYgKGIpIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJvZl9zdHJpbmciKTsKKyAgICB9CisgIH07CisgIHZhciBk
ZWNfZGlnaXQgPSBmdW5jdGlvbiAoYykgeworICAgIGlmIChjID4gNTcgfHwgYyA8IDQ4KSB7Cisg
ICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgib2Zfc3RyaW5nIik7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgcmV0dXJuIGMgLSAvKiAiMCIgKi80OCB8IDA7CisgICAgfQorICB9Owor
ICB2YXIgaGV4X2RpZ2l0ID0gZnVuY3Rpb24gKGMpIHsKKyAgICBpZiAoYyA+PSA2NSkgeworICAg
ICAgaWYgKGMgPj0gOTcpIHsKKyAgICAgICAgaWYgKGMgPj0gMTAzKSB7CisgICAgICAgICAgcmV0
dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoIm9mX3N0cmluZyIpOworICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgIHJldHVybiAoMTAgKyBjIHwgMCkgLSAvKiAiYSIgKi85NyB8IDA7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGMgPj0gNzEpIHsKKyAgICAgICAg
cmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoIm9mX3N0cmluZyIpOworICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHJldHVybiAoMTAgKyBjIHwgMCkgLSAvKiAiQSIgKi82NSB8IDA7Cisg
ICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGMgPiA1NyB8fCBjIDwgNDgpIHsKKyAgICAgIHJl
dHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJvZl9zdHJpbmciKTsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICByZXR1cm4gYyAtIC8qICIwIiAqLzQ4IHwgMDsKKyAgICB9CisgIH07CisgIHZhciBt
YXRjaCA9IGRpdnJlbV91KFJlcFsvKiBtaW51c19vbmUgKi8yXSwgdGVuKTsKKyAgdmFyIG1heF9s
b3dlciA9IG1hdGNoWzFdOworICB2YXIgbWF4X3VwcGVyID0gbWF0Y2hbMF07CisgIHZhciBvZl9z
dHJpbmcgPSBmdW5jdGlvbiAocykgeworICAgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgICB2YXIg
cGFyc2VfaW50ID0gZnVuY3Rpb24gKGkpIHsKKyAgICAgICQkcmVxdWlyZSgrKChsZW4gLSBpIHwg
MCkgPiAwKSk7CisgICAgICBpZiAoKGkgKyAyIHwgMCkgPD0gbGVuICYmIENhbWxfc3RyaW5nLmdl
dChzLCBpKSA9PT0gLyogIjAiICovNDggJiYgQ2FtbF9zdHJpbmcuZ2V0KHMsIGkgKyAxIHwgMCkg
PT09IC8qICJ4IiAqLzEyMCkgeworICAgICAgICB2YXIgX2kgPSBpICsgMiB8IDA7CisgICAgICAg
IHZhciBfbnVtID0gUmVwWy8qIHplcm8gKi8wXTsKKyAgICAgICAgd2hpbGUodHJ1ZSkgeworICAg
ICAgICAgIHZhciBudW0gPSBfbnVtOworICAgICAgICAgIHZhciBpJDEgPSBfaTsKKyAgICAgICAg
ICBpZiAoaSQxID09PSBsZW4pIHsKKyAgICAgICAgICAgIHJldHVybiBudW07CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIGRpZ2l0ID0gQ3VycnkuXzEoUmVw
Wy8qIG9mX2ludCAqLzE4XSwgaGV4X2RpZ2l0KENhbWxfc3RyaW5nLmdldChzLCBpJDEpKSk7Cisg
ICAgICAgICAgICAkJHJlcXVpcmUobGVfdShudW0sIHNocl91KFJlcFsvKiBtaW51c19vbmUgKi8y
XSwgQ3VycnkuXzEoUmVwWy8qIG9mX2ludCAqLzE4XSwgNCkpKSk7CisgICAgICAgICAgICBfbnVt
ID0gQ3VycnkuXzIoUmVwWy8qIGxvZ29yICovMTNdLCBDdXJyeS5fMihSZXBbLyogc2hpZnRfbGVm
dCAqLzE1XSwgbnVtLCA0KSwgZGlnaXQpOworICAgICAgICAgICAgX2kgPSBpJDEgKyAxIHwgMDsK
KyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgX2kkMSA9IGk7CisgICAg
ICAgIHZhciBfbnVtJDEgPSBSZXBbLyogemVybyAqLzBdOworICAgICAgICB3aGlsZSh0cnVlKSB7
CisgICAgICAgICAgdmFyIG51bSQxID0gX251bSQxOworICAgICAgICAgIHZhciBpJDIgPSBfaSQx
OworICAgICAgICAgIGlmIChpJDIgPT09IGxlbikgeworICAgICAgICAgICAgcmV0dXJuIG51bSQx
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBkaWdpdCQx
ID0gQ3VycnkuXzEoUmVwWy8qIG9mX2ludCAqLzE4XSwgZGVjX2RpZ2l0KENhbWxfc3RyaW5nLmdl
dChzLCBpJDIpKSk7CisgICAgICAgICAgICAkJHJlcXVpcmUobHRfdShudW0kMSwgbWF4X3VwcGVy
KSB8fCBDYW1sX29iai5jYW1sX2VxdWFsKG51bSQxLCBtYXhfdXBwZXIpICYmIGxlX3UoZGlnaXQk
MSwgbWF4X2xvd2VyKSk7CisgICAgICAgICAgICBfbnVtJDEgPSBDdXJyeS5fMihSZXBbLyogYWRk
ICovNl0sIEN1cnJ5Ll8yKFJlcFsvKiBtdWwgKi84XSwgbnVtJDEsIHRlbiksIGRpZ2l0JDEpOwor
ICAgICAgICAgICAgX2kkMSA9IGkkMiArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgfQorICAgIH07Cisg
ICAgJCRyZXF1aXJlKCsobGVuID4gMCkpOworICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdl
dChzLCAwKTsKKyAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQzIHwgMDsKKyAgICBpZiAoc3dp
dGNoZXIgPiAyIHx8IHN3aXRjaGVyIDwgMCkgeworICAgICAgcmV0dXJuIHBhcnNlX2ludCgwKTsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICBzd2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgIGNh
c2UgMCA6IAorICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2ludCgxKTsKKyAgICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgICByZXR1cm4gcGFyc2VfaW50KDApOworICAgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICAgIHZhciBuID0gcGFyc2VfaW50KDEpOworICAgICAgICAgICAgJCRyZXF1aXJl
KENhbWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsKEN1cnJ5Ll8yKFJlcFsvKiBzdWIgKi83XSwgbiwg
UmVwWy8qIG9uZSAqLzFdKSwgUmVwWy8qIG1pbnVzX29uZSAqLzJdKSk7CisgICAgICAgICAgICBy
ZXR1cm4gQ3VycnkuXzEoUmVwWy8qIG5lZyAqLzVdLCBuKTsKKyAgICAgICAgCisgICAgICB9Cisg
ICAgfQorICB9OworICB2YXIgb2Zfc3RyaW5nX3MgPSBmdW5jdGlvbiAocykgeworICAgIHZhciBu
ID0gb2Zfc3RyaW5nKHMpOworICAgICQkcmVxdWlyZSgrKENhbWxfc3RyaW5nLmdldChzLCAwKSA9
PT0gLyogIi0iICovNDUpIHx8IENhbWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsKG4sIFJlcFsvKiB6
ZXJvICovMF0pKTsKKyAgICByZXR1cm4gbjsKKyAgfTsKKyAgdmFyIG9mX3N0cmluZ191ID0gZnVu
Y3Rpb24gKHMpIHsKKyAgICB2YXIgbiA9IG9mX3N0cmluZyhzKTsKKyAgICAkJHJlcXVpcmUoKyhD
YW1sX3N0cmluZy5nZXQocywgMCkgIT09IC8qICIrIiAqLzQzICYmIENhbWxfc3RyaW5nLmdldChz
LCAwKSAhPT0gLyogIi0iICovNDUpKTsKKyAgICByZXR1cm4gbjsKKyAgfTsKKyAgcmV0dXJuIC8q
IG1vZHVsZSAqL1sKKyAgICAgICAgICAvKiBvZl9iaXRzICovb2ZfYml0cywKKyAgICAgICAgICAv
KiB0b19iaXRzICovdG9fYml0cywKKyAgICAgICAgICAvKiB6ZXJvICovemVybywKKyAgICAgICAg
ICAvKiBhZGQgKi9hZGQsCisgICAgICAgICAgLyogc3ViICovc3ViLAorICAgICAgICAgIC8qIG11
bCAqL211bCwKKyAgICAgICAgICAvKiBkaXZfcyAqL2Rpdl9zLAorICAgICAgICAgIC8qIGRpdl91
ICovZGl2X3UsCisgICAgICAgICAgLyogcmVtX3MgKi9yZW1fcywKKyAgICAgICAgICAvKiByZW1f
dSAqL3JlbV91LAorICAgICAgICAgIC8qIGFuZF8gKi9hbmRfLAorICAgICAgICAgIC8qIG9yXyAq
L29yXywKKyAgICAgICAgICAvKiB4b3IgKi94b3IsCisgICAgICAgICAgLyogc2hsICovc2hsLAor
ICAgICAgICAgIC8qIHNocl9zICovc2hyX3MsCisgICAgICAgICAgLyogc2hyX3UgKi9zaHJfdSwK
KyAgICAgICAgICAvKiByb3RsICovcm90bCwKKyAgICAgICAgICAvKiByb3RyICovcm90ciwKKyAg
ICAgICAgICAvKiBjbHogKi9jbHosCisgICAgICAgICAgLyogY3R6ICovY3R6LAorICAgICAgICAg
IC8qIHBvcGNudCAqL3BvcGNudCwKKyAgICAgICAgICAvKiBlcXogKi9lcXosCisgICAgICAgICAg
LyogZXEgKi9lcSwKKyAgICAgICAgICAvKiBuZSAqL25lLAorICAgICAgICAgIC8qIGx0X3MgKi9s
dF9zLAorICAgICAgICAgIC8qIGx0X3UgKi9sdF91LAorICAgICAgICAgIC8qIGxlX3MgKi9sZV9z
LAorICAgICAgICAgIC8qIGxlX3UgKi9sZV91LAorICAgICAgICAgIC8qIGd0X3MgKi9ndF9zLAor
ICAgICAgICAgIC8qIGd0X3UgKi9ndF91LAorICAgICAgICAgIC8qIGdlX3MgKi9nZV9zLAorICAg
ICAgICAgIC8qIGdlX3UgKi9nZV91LAorICAgICAgICAgIC8qIG9mX2ludF9zICovb2ZfaW50X3Ms
CisgICAgICAgICAgLyogb2ZfaW50X3UgKi9vZl9pbnRfdSwKKyAgICAgICAgICAvKiBvZl9zdHJp
bmdfcyAqL29mX3N0cmluZ19zLAorICAgICAgICAgIC8qIG9mX3N0cmluZ191ICovb2Zfc3RyaW5n
X3UsCisgICAgICAgICAgLyogb2Zfc3RyaW5nICovb2Zfc3RyaW5nLAorICAgICAgICAgIC8qIHRv
X3N0cmluZ19zICovdG9fc3RyaW5nX3MsCisgICAgICAgICAgLyogdG9fc3RyaW5nX3UgKi90b19z
dHJpbmdfdQorICAgICAgICBdOworfQorCitleHBvcnRzLk1ha2UgPSBNYWtlOworLyogTm8gc2lk
ZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBpbnQuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVy
biBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnbGV4ZXInXSA9IGZ1bmN0aW9uKCkg
eworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGxleGVyLmpzIC8v
Ly8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVB
U0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEYzMiAgICAgICAgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9mMzIiKTsKK3ZhciBGNjQgICAgICAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoIi4vZjY0Iik7Cit2YXIgSTMyICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJl
KCIuL2kzMiIpOwordmFyIEk2NCAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9pNjQi
KTsKK3ZhciBMaWIgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGliIik7Cit2YXIg
Q2hhciAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2hh
ciIpOwordmFyIEJsb2NrICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL2Jsb2NrIik7Cit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJi
cy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3ZhciBCdWZmZXIgICAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9idWZmZXIiKTsKK3ZhciBMZXhpbmcgICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9sZXhpbmciKTsKK3ZhciBT
Y3JpcHQgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc2NyaXB0Iik7Cit2YXIgU291cmNl
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3NvdXJjZSIpOwordmFyICQkU3RyaW5nICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwordmFy
IE9wZXJhdG9ycyAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9vcGVyYXRvcnMiKTsKK3ZhciBD
YW1sX2Zvcm1hdCAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1s
X2Zvcm1hdCIpOwordmFyIENhbWxfc3RyaW5nICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxh
dGZvcm0vbGliL2pzL2NhbWxfc3RyaW5nIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsK
KworZnVuY3Rpb24gY29udmVydF9wb3MocG9zKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisg
ICAgICAgICAgLyogZmlsZSAqL3Bvc1svKiBwb3NfZm5hbWUgKi8wXSwKKyAgICAgICAgICAvKiBs
aW5lICovcG9zWy8qIHBvc19sbnVtICovMV0sCisgICAgICAgICAgLyogY29sdW1uICovcG9zWy8q
IHBvc19jbnVtICovM10gLSBwb3NbLyogcG9zX2JvbCAqLzJdIHwgMAorICAgICAgICBdOworfQor
CitmdW5jdGlvbiByZWdpb24obGV4YnVmKSB7CisgIHZhciBsZWZ0ID0gY29udmVydF9wb3MoTGV4
aW5nLmxleGVtZV9zdGFydF9wKGxleGJ1ZikpOworICB2YXIgcmlnaHQgPSBjb252ZXJ0X3BvcyhM
ZXhpbmcubGV4ZW1lX2VuZF9wKGxleGJ1ZikpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAg
ICAgICAgIC8qIGxlZnQgKi9sZWZ0LAorICAgICAgICAgIC8qIHJpZ2h0ICovcmlnaHQKKyAgICAg
ICAgXTsKK30KKworZnVuY3Rpb24gZXJyb3IobGV4YnVmLCBtc2cpIHsKKyAgdGhyb3cgWworICAg
ICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICByZWdpb24obGV4YnVmKSwKKyAgICAgICAgbXNn
CisgICAgICBdOworfQorCitmdW5jdGlvbiBlcnJvcl9uZXN0KHN0YXJ0LCBsZXhidWYsIG1zZykg
eworICBsZXhidWZbLyogbGV4X3N0YXJ0X3AgKi8xMF0gPSBzdGFydDsKKyAgcmV0dXJuIGVycm9y
KGxleGJ1ZiwgbXNnKTsKK30KKworZnVuY3Rpb24gdGV4dChzKSB7CisgIHZhciBiID0gQnVmZmVy
LmNyZWF0ZShzLmxlbmd0aCk7CisgIHZhciBpID0gMTsKKyAgd2hpbGUoaSA8IChzLmxlbmd0aCAt
IDEgfCAwKSkgeworICAgIHZhciBjOworICAgIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgIT09
IC8qICJcXCIgKi85MikgeworICAgICAgYyA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICBpID0gaSArIDEgfCAwOworICAgICAgdmFyIGQgPSBDYW1sX3N0
cmluZy5nZXQocywgaSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICBpZiAoZCA+PSA5Mikg
eworICAgICAgICBpZiAoZCAhPT0gMTEwKSB7CisgICAgICAgICAgaWYgKGQgIT09IDExNikgewor
ICAgICAgICAgICAgaWYgKGQgPj0gOTMpIHsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgYyA9IC8qICJcXCIg
Ki85MjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBjID0gLyogIlx0IiAqLzk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgIGMgPSAvKiAiXG4iICovMTA7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIGVsc2UgaWYgKGQgIT09IDM0KSB7CisgICAgICAgIGlmIChkICE9PSAzOSkgeworICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGMg
PSAvKiAiJyIgKi8zOTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IGMgPSAvKiAiXCIiICovMzQ7CisgICAgICB9CisgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAg
ICAgICBpID0gaSArIDEgfCAwOworICAgICAgICBjID0gQ2hhci5jaHIoQ2FtbF9mb3JtYXQuY2Ft
bF9pbnRfb2Zfc3RyaW5nKCIweCIgKyAoJCRTdHJpbmcubWFrZSgxLCBkKSArICQkU3RyaW5nLm1h
a2UoMSwgQ2FtbF9zdHJpbmcuZ2V0KHMsIGkpKSkpKTsKKyAgICAgIH0KKyAgICAgIAorICAgIH0K
KyAgICBCdWZmZXIuYWRkX2NoYXIoYiwgYyk7CisgICAgaSA9IGkgKyAxIHwgMDsKKyAgfTsKKyAg
cmV0dXJuIEJ1ZmZlci5jb250ZW50cyhiKTsKK30KKworZnVuY3Rpb24gdmFsdWVfdHlwZShwYXJh
bSkgeworICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAiZjMyIiA6IAorICAgICAgICByZXR1
cm4gLyogRjMyVHlwZSAqLzI7CisgICAgY2FzZSAiZjY0IiA6IAorICAgICAgICByZXR1cm4gLyog
RjY0VHlwZSAqLzM7CisgICAgY2FzZSAiaTMyIiA6IAorICAgICAgICByZXR1cm4gLyogSTMyVHlw
ZSAqLzA7CisgICAgY2FzZSAiaTY0IiA6IAorICAgICAgICByZXR1cm4gLyogSTY0VHlwZSAqLzE7
CisgICAgZGVmYXVsdDoKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAi
dGV4dC9sZXhlci5tbGwiLAorICAgICAgICAgICAgICA0NSwKKyAgICAgICAgICAgICAgOQorICAg
ICAgICAgICAgXQorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gaW50b3AodCwgaTMy
LCBpNjQpIHsKKyAgc3dpdGNoICh0KSB7CisgICAgY2FzZSAiaTMyIiA6IAorICAgICAgICByZXR1
cm4gaTMyOworICAgIGNhc2UgImk2NCIgOiAKKyAgICAgICAgcmV0dXJuIGk2NDsKKyAgICBkZWZh
dWx0OgorICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMu
YXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICJ0ZXh0L2xleGVy
Lm1sbCIsCisgICAgICAgICAgICAgIDUxLAorICAgICAgICAgICAgICA5CisgICAgICAgICAgICBd
CisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBmbG9hdG9wKHQsIGYzMiwgZjY0KSB7
CisgIHN3aXRjaCAodCkgeworICAgIGNhc2UgImYzMiIgOiAKKyAgICAgICAgcmV0dXJuIGYzMjsK
KyAgICBjYXNlICJmNjQiIDogCisgICAgICAgIHJldHVybiBmNjQ7CisgICAgZGVmYXVsdDoKKyAg
ICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9m
YWlsdXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAor
ICAgICAgICAgICAgICA1NywKKyAgICAgICAgICAgICAgOQorICAgICAgICAgICAgXQorICAgICAg
ICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbnVtb3AodCwgaTMyLCBpNjQsIGYzMiwgZjY0KSB7
CisgIHN3aXRjaCAodCkgeworICAgIGNhc2UgImYzMiIgOiAKKyAgICAgICAgcmV0dXJuIGYzMjsK
KyAgICBjYXNlICJmNjQiIDogCisgICAgICAgIHJldHVybiBmNjQ7CisgICAgY2FzZSAiaTMyIiA6
IAorICAgICAgICByZXR1cm4gaTMyOworICAgIGNhc2UgImk2NCIgOiAKKyAgICAgICAgcmV0dXJu
IGk2NDsKKyAgICBkZWZhdWx0OgorICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICJ0ZXh0L2xleGVyLm1sbCIsCisgICAgICAgICAgICAgIDY1LAorICAgICAgICAgICAgICA5
CisgICAgICAgICAgICBdCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBtZW1zeihz
eiwgbTgsIG0xNiwgbTMyKSB7CisgIHN3aXRjaCAoc3opIHsKKyAgICBjYXNlICIxNiIgOiAKKyAg
ICAgICAgcmV0dXJuIG0xNjsKKyAgICBjYXNlICIzMiIgOiAKKyAgICAgICAgcmV0dXJuIG0zMjsK
KyAgICBjYXNlICI4IiA6IAorICAgICAgICByZXR1cm4gbTg7CisgICAgZGVmYXVsdDoKKyAgICAg
IHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWls
dXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAorICAg
ICAgICAgICAgICA3MiwKKyAgICAgICAgICAgICAgOQorICAgICAgICAgICAgXQorICAgICAgICAg
IF07CisgIH0KK30KKworZnVuY3Rpb24gZXh0KGUsIHMsIHUpIHsKKyAgdmFyIHN3aXRjaGVyID0g
ZSAtIDExNSB8IDA7CisgIGlmIChzd2l0Y2hlciA+IDIgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAg
dGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJl
LAorICAgICAgICAgIFsKKyAgICAgICAgICAgICJ0ZXh0L2xleGVyLm1sbCIsCisgICAgICAgICAg
ICA3OCwKKyAgICAgICAgICAgIDkKKyAgICAgICAgICBdCisgICAgICAgIF07CisgIH0KKyAgZWxz
ZSB7CisgICAgc3dpdGNoIChzd2l0Y2hlcikgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAg
cmV0dXJuIHM7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgInRleHQvbGV4ZXIubWxsIiwKKyAgICAgICAgICAg
ICAgICAgIDc4LAorICAgICAgICAgICAgICAgICAgOQorICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgXTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiB1OworICAgICAg
CisgICAgfQorICB9Cit9CisKK3ZhciBvcHQgPSBMaWIuT3B0aW9uWy8qIGdldCAqLzBdOworCit2
YXIgX19vY2FtbF9sZXhfdGFibGVzID0gLyogcmVjb3JkICovWworICAvKiBsZXhfYmFzZSAqLyJc
MFwwb1x4ZmZwXHhmZnFceGZmclx4ZmZceDAxXDBVXDBceDA3XDBceDFiXDBceDA1XDBvXDBvXDB0
XDBceDA2XDBqXDBceDBlXDBrXDB5XDBceDEwXDB5XDBzXDBceGI0XDBceDAxXHgwMXpcMFx4YmVc
MFx4YzVcMFx4MDRceDAxXHgxYVx4MDFceGZlXHhmZlx4MDJcMHNceGZmXHgxM1wwPFx4MDFSXHgw
MXhceDAxXCJcMFx4OGZceDAxXHhkNVx4MDFceDBlXHgwMVx4ZWVceDAxL1x4MDI+XHgwMlVceDAy
XHg5Nlx4MDJceGEwXHgwMk9cMERcMFx4YWNceDAyXHhjMlx4MDJceGU3XHgwMlwwXHgwMyZceDAz
TFx4MDN6XDB8XDB+XDBceDg2XDB8XDB5XDBceGZiXHhmZlx4ODVcMFwwXDBceDBmXDBceDg3XDBy
XHgwM1x4OThceDAzXHhiMVwwXHhlOFx4ZmZcclwwXHgxMFwwXHhlZVwwXHhhZFwwXHhiNlwwXHhi
YlwwXHhjMlwwXHg4Mlx4ZmZceGI0XDB4XHhmZlwwXDBceDljXHgwMlx4YjhcMFx4YmJcMFx4ZjFc
MFx4Y2FcMFx4YmZcMFx4YzJcMFx4ZTNcMFx4ZjJcMFx4ZWZcMFx4ZTRcMFx4ZjhcMFx4ZWJcMFx4
ZjNcMCpceDAxXG5ceDAxXHhlNlwwXHhlOFwwXHhmNVwwXHhmN1wwXHhmN1wwXHhmNVx4ZmZceGQ3
XHhmZlx4ZDZceGZmXDBcMFx4MDFcMFx4MTZceDAxXHgxNFx4MDFqXHgwMVx4MWNcMFx4MWFcMFx4
MWJceDAxXGJceDAxXHhkYlx4ZmZceDE5XHgwMVx4YjNceGZmXHhiNFx4ZmYnXHgwMVx4YjFceGZm
XHhiMlx4ZmYzXHgwMVx4MWFceDAxXHgxZVx4MDFceDFlXHgwMSxceDAxXHhhZVx4MDFceDFmXDAm
XDBceGRhXHhmZlx4Y2NceGZmQVx4MDFceGMzXHhmZlZceDAxXHhjMVx4ZmZceGMyXHhmZjNceDAx
QVx4MDE5XHgwMT5ceDAxXHhkNVx4ZmZmXHgwMWhceDAxXHhjZFx4ZmZceGM2XHhmZmFceDAxXHhj
Ylx4ZmZYXHgwMXBceDAxY1x4MDFceGM5XHhmZlx4Y2FceGZmY1x4MDF3XHgwMXRceDAxXHg4NFx4
MDFyXHgwMVx4YzdceGZmXHhjOFx4ZmZ1XHgwMVx4ODVceDAxeVx4MDF8XHgwMXtceDAxXHg4OVx4
MDF7XHgwMVwwXDBceDkwXHgwMSpcMCxcMFx4OTdceGZmXHg4Ylx4MDFceGJmXHhmZlx4YzBceGZm
XHhjNVx4ZmZceDg2XHgwMVx4YzRceGZmXHg3Zlx4MDFceGI3XHhmZlx4YjVceGZmXHg5Ylx4MDFc
eDljXHgwMVx4ODlceDAxXHhhZlx4ZmZceGIwXHhmZlx4OWNceDAxXHhhZFx4ZmZceGFlXHhmZlx4
YTNceDAxXHhhMFx4MDFceGUzXHgwMVx4YWFceDAxXHhkZVx4MDFceGUxXHgwMVx4YTZceGZmXHhh
OFx4MDFceGJhXHgwMVx4YzZceDAxXHhjYlx4MDFceGI4XHgwMVx4ZmRceDAxXHhmZlx4MDFceGNm
XHgwMVx0XHgwMlx0XHgwMlxmXHgwMlx4YTFceGZmXHg5Zlx4ZmZceGRhXHgwMVx4MGVceDAyXHgw
ZVx4MDJceDExXHgwMlx4YTBceGZmXHg5ZVx4ZmZceDE4XHgwMn5ceDAzXHhkNlx4MDFceGU2XHgw
MVx4ZGZceDAxXHhkYlx4MDFceGQ2XHgwMVx4ZThceDAxXHhlNFx4MDFceGU3XHgwMVx4ZTZceDAx
XHhmNFx4MDFceGU2XHgwMSxceDAyXHhmNlx4MDEnXHgwMjZceDAyXHg5Nlx4ZmZceGY4XHgwMVxi
XHgwMlxuXHgwMlx4MTVceDAyXHgxYlx4MDJcYlx4MDJNXHgwMk9ceDAyJlx4MDJdXHgwMl9ceDAy
XHhhNVx4ZmYpXHgwMmBceDAyYlx4MDJceGE0XHhmZiZceDAyKlx4MDIpXHgwMlx4ODZceGZmLlx4
MDJceGYyXHhmZlx4ZjhceGZmXHhmOVx4ZmZceGZhXHhmZlx4ZDFceDAzRlx4MDRceGY3XHhmZjlc
eDA0XHhhNFx4MDQ3XHgwMnJceDAydVx4MDJ6XHgwMlx4YjdceDAzRFx4MDJIXHgwMjlceDAyRlx4
MDJLXHgwMj5ceDAyRVx4MDJRXHgwMk1ceDAyTVx4MDJceGJkXHgwM1x4OTdceDAyVFx4MDJ4XHgw
MkZceDAydFx4MDJeXHgwMlJceDAyZ1x4MDJceDhhXHgwMnhceDAyXHhiZFx4MDJceGJmXHgwMlx4
ODZceDAyXHhjZlx4MDJceGNhXHgwMlx4ZDJceDAyXHg5ZFx4ZmZceDliXHhmZlx4YTRceDAyXHhk
Zlx4MDJceGUyXHgwMlx4ZWZceDAyXHg5Y1x4ZmZceDlhXHhmZlx4YWZceDAyXHhiYVx4MDJceGJk
XHgwMlx4YjdceDAyXHhiOFx4ZmZceGJhXHgwMlx4ZDFceGZmXHhhOVx4ZmZceGFhXHhmZlx4Y2Vc
eDAyXHhkN1x4MDJceGRkXHhmZlx4ZGFceDAyXHhjYlx4MDJceGNmXHgwMlx4Y2RceDAyXHhkYlx4
MDJceGRjXHhmZlx4ZDNceDAyXHhkMlx4ZmZceGJkXHhmZlx4ZWVceDAyXHhkY1x4MDJceGQ0XHhm
Zlx4ZWJceDAyXHhkZlx4MDJceGVjXHgwMlx4Y2VceGZmXHRceDAzXHhmYlx4MDJceGQzXHhmZlx4
YmVceGZmXDBceDAzXHgwMlx4MDNcMFx4MDNceGQwXHhmZlx4ZmVceDAyXHgwNlx4MDNceDEyXHgw
M1x4Y2ZceGZmXHhmZVx4MDJcdFx4MDNcZlx4MDNceGJjXHhmZlx4YmFceGZmXHhiOVx4ZmZcZlx4
MDNceDA1XHgwM1x4YmJceGZmXHgxN1x4MDNceDFmXHgwMy9ceDAzZlx4MDMxXHgwM2JceDAzZVx4
MDNceGEzXHhmZlx4YWNceGZmXHhhN1x4ZmZceGE4XHhmZjFceDAzLVx4MDMoXHgwMzhceDAzLFx4
MDMvXHgwMy5ceDAzPFx4MDM4XHgwM1x4OGFceDAzUVx4MDNceDg4XHgwM1x4OGJceDAzXHg5OVx4
ZmZceDkwXHgwM1x4MWZceDA0Wlx4MDNOXHgwM1hceDAzU1x4MDNWXHgwM1VceDAzUVx4MDNhXHgw
M1x4OThceDAzbFx4MDNceGFkXHgwM1x4YjJceDAzXHhhMlx4ZmZ9XHgwM3lceDAzdFx4MDNceDg0
XHgwM31ceDAzXHg4NFx4MDNceDgzXHgwM1x4OTJceDAzXHg4Ylx4MDNceGQxXHgwM1x4YTJceDAz
XHhkNlx4MDNceGQ5XHgwM1x4OThceGZmXHhhYlx4MDNceDkyXHhmZlx4OWNceDAzXHhhN1x4MDNc
eDk4XHgwM1x4YjNceDAzXHhhYVx4MDNceGIyXHgwM1x4YmVceDAzXHhmNFx4ZmZceGJmXHgwM1x4
YjlceDAzXHhlYlx4MDNceDk3XHgwNFx4YTJceDA0XHhhY1x4MDRceGI2XHgwNFx4ZGNceDA0XHhj
OVx4MDNceGJkXHgwM1x4YmNceDAzXHhkOVx4MDNceGMwXHgwNFx4YzFceDAzXHhjOFx4MDNceGQ2
XHgwM1x4Y2VceDAzXHhjZVx4MDNceGQwXHgwM1x4ZGZceDAzXHhkNVx4MDNceGRjXHgwM1x4ZDRc
eDAzXHhkMlx4MDNceGY5XHgwM1x4MDJceDA0XHgwZlx4MDRceDgwXHhmZlx4ZmVceDAzXHgxNFx4
MDRcblx4MDRceDBlXHgwNFx4MTRceDA0XHg3Zlx4ZmZceDEzXHgwNFxyXHgwNChceDA0XHgxZlx4
MDRceDFiXHgwNFx4MTRceDA0LVx4MDQkXHgwNCtceDA0MVx4MDR+XHhmZipceDA0Llx4MDQqXHgw
NC5ceDA0P1x4MDQ/XHgwNDdceDA0X1x4MDR9XHhmZnxceDA0fFx4MDRceDgwXHgwNFx4ODVceDA0
XHg5NVx4MDRceDg3XHgwNFx4OTVceDA0XHg4Zlx4MDR7XHhmZlx4OWRceDA0XHg4Zlx4MDR6XHhm
Zlx4OTlceDA0XHhhMVx4MDRceDhlXHgwNFx4OTFceDA0XHg5MVx4MDRceDlkXHgwNFx4OThceDA0
XHg5YVx4MDR5XHhmZlx4OWNceDA0XHhhNlx4MDRceDk3XHgwNFx4ZjNceGZmXHhhMVx4MDRceGJh
XHgwNFx4YzJceDA0XHg4Y1x4ZmZceGI5XHgwNFx4YjhceDA0XHhiMlx4MDRceDhhXHhmZlx4YmFc
eDA0XHhjOVx4MDRceGNlXHgwNFx4Y2RceDA0XHhjOVx4MDRceGQ1XHgwNFx4ZDVceDA0XHhjY1x4
MDRceGQ0XHgwNFx4ZjFceGZmXHhjNlx4MDRceGNjXHgwNFx4Y2NceDA0XHhmMFx4ZmZceGUyXHgw
NFx4ODhceGZmXHhlNVx4MDRceGQ2XHgwNFx4ZTRceDA0XHhkZFx4MDRceGVmXHhmZlx4ZTBceDA0
XHhlOVx4MDRceGU1XHgwNFx4ZWJceGZmXHhlYVx4MDRceGUxXHgwNFx4ZTlceDA0XHhlYVx4ZmZc
eGVjXHgwNFx4ZWZceDA0XHhlMVx4MDRceGVlXHhmZlx4ZTZceDA0XHg4ZVx4ZmZceGUzXHgwNFx4
ZjBceDA0XHhmMlx4MDRceGVkXHhmZlx4ZWFceDA0XHhmM1x4MDRceGU2XHhmZlx4ODlceGZmXHhl
YVx4MDRceGU4XHgwNFx4ZThceDA0XHg4NVx4ZmZceGY2XHgwNFx4ZjVceDA0XHhlYVx4MDRceGVi
XHgwNFx4ZWZceDA0XHhmNFx4MDRceGU5XHhmZlx4ZjhceDA0XHhmMVx4MDRceDhmXHhmZlx4ZjNc
eDA0XHhmM1x4MDRceDAzXHgwNVx4ZjlceDA0XHg4M1x4ZmZcblx4MDVceGZkXHgwNFx0XHgwNVxu
XHgwNVx4MDJceDA1XHhlN1x4ZmZceDEyXHgwNVx4MDZceDA1XHgwNFx4MDVceDExXHgwNVx4MTRc
eDA1XG5ceDA1XHhlMFx4ZmZceDEyXHgwNVx4OTNceGZmXGZceDA1XHgxNFx4MDVceDhiXHhmZlxi
XHgwNVx4MWFceDA1XHgxMFx4MDVceDFlXHgwNVx4MTlceDA1XHgxY1x4MDVcZlx4MDVceGU1XHhm
Zlx4MWFceDA1XHgxNlx4MDVceDE0XHgwNVwiXHgwNSZceDA1XHgxY1x4MDVceGUxXHhmZlx4MWFc
eDA1KFx4MDUqXHgwNSBceDA1XHhkZVx4ZmZceDFiXHgwNVx4MWFceDA1XHg5MVx4ZmYmXHgwNSBc
eDA1XHgxZFx4MDVceDg0XHhmZiBceDA1J1x4MDUoXHgwNTZceDA1LVx4MDUpXHgwNTRceDA1MFx4
MDUoXHgwNTZceDA1OVx4MDUpXHgwNVx4ZTNceGZmLFx4MDU6XHgwNTJceDA1LVx4MDVDXHgwNTZc
eDA1QFx4MDU5XHgwNThceDA1Nlx4MDUwXHgwNVx4OTVceGZmO1x4MDU8XHgwNThceDA1Tlx4MDVH
XHgwNUNceDA1QVx4MDVOXHgwNVFceDA1SFx4MDVceGUyXHhmZkZceDA1VFx4MDVWXHgwNUxceDA1
XHhkZlx4ZmZCXHgwNVtceDA1Tlx4MDVXXHgwNVBceDA1T1x4MDVNXHgwNUdceDA1XHg5NFx4ZmZf
XHgwNWFceDA1V1x4MDVceDhkXHhmZlBceDA1X1x4MDVTXHgwNWJceDA1VFx4MDVceDhjXHgwNVx4
OWFceDA1XHhhNFx4MDVceGFlXHgwNVx4YjhceDA1XHhjZlx4MDVceDgyXHgwNX5ceDA1XHg4MFx4
MDV3XHhmZlx4ODNceDA1XHg5NVx4MDVceDhhXHgwNVx4OTBceGZmXHgxNVx4MDZceGVlXHgwNXRc
eGZmdVx4ZmZceDAyXHgwNlx4ZmJceGZmXHhmY1x4ZmZceGZkXHhmZlx4Y2VceDA1XHgwMVwwXHhm
Zlx4ZmZceGZlXHhmZiIsCisgIC8qIGxleF9iYWNrdHJrICovIlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBc
eDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkw
XDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDAyXDBceDAyXDBceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXHgwNFwwXHhmZlx4ZmZceDAyXDBceGZmXHhmZlx4ZmZceGZmXHgwMlww
XHhmZlx4ZmZceDAyXDBceDA0XDBceGZmXHhmZlx4MDRcMFx4MDRcMFx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4MDNcMFx4MDNcMFx4ZmZceGZmXHgwM1wwXHgwM1wwXHgwM1wwXHhmZlx4ZmZceDA0
XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDA0XDBc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDA0XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZcdFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZcIlwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYjXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmSVwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlxiXDBcYlwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlRcMFx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZidcMCdcMFx4ZmZceGZmJ1wwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ODNcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDEzXDBceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDFiXDBceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZ+XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZ4XDBceGZmXHhmZiZcMCZcMFx4ZmZceGZmJlww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ODlcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHgwNFwwXHgwNFwwXHhmZlx4ZmZceGZmXHhmZiIsCisgIC8qIGxleF9kZWZh
dWx0ICovIlx4MDFcMFwwXDBcMFwwXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBceDAx
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlww
XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZlwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZm
XHhmZlwwXDBcMFwwXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXDBcMFx4
ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhm
Zlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFww
XDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXDBcMFwwXDBceGZmXHhm
ZlwwXDBceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZm
XHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXDBcMFwwXDBc
eDAxXHgwMVwwXHgwMVwwXDBceGZmXHhmZlwwXHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXDBcMFx4ZmZceGZm
XHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBc
MFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFww
XDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBc
MFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBc
MFx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXHhmZlx4
ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZc
eGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
MFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGE5XHgwMlwwXDBcMFwwXHhhZFx4MDJcMFww
XDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDAiLAorICAvKiBsZXhfdHJhbnMgKi8nXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwNFwwXHgwM1wwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXHgwNFwwXDBcMFx4MTZcMFwwXDBceDA2XDBcMFwwXDBcMFwwXDBceDFk
XDBceDFjXDBceGIyXHgwMlx4MTlcMFwwXDBceDE5XDBPXDBceGE1XDBceDFiXDBceDFhXDBceDFh
XDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDA+XDBceDA1XDBceGE5
XHgwMlx4MWVcMCxcMD9cMCxcMFx4ZDRcME5cMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtc
MCZcMG5cMCZcMG5cMFx4N2ZcMChcMChcMChcMChcMChcMChcMChcMChcMChcMChcMFx4N2ZcMFx4
YTdcMFx4YThcMHRcMHFcMFx4MTRcMFx4MTBcMFxuXDBceDExXDBceDBlXDBceDE1XDBcdFwwXHhh
NFx4MDJceDE4XDB6XHgwMiNceDAyXHgwZlwwXHgxM1wwXHgxN1wwXGJcMFx4MDdcMHhceDAyXHJc
MFx4MGJcMFxmXDBceDEyXDBceGE4XHgwMnlceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4MTFceDAyXHhmNFx4MDFceGE4XHgwMlx4YThceDAyXHg5Nlx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHg5NVx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMjxcMFx4YThceDAyNVwwXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMmBceDAyXHhhOFx4MDJEXHgw
Mlx4YThceDAyRlx4MDIyXHgwMlx4MThceDAyXHgwNVx4MDJceDE5XHgwMjRceDAyXHhmZVx4MDE8
XHgwMDVceDAyXHgwNFx4MDJceGU4XHgwMVx4OTZceDAxNlwwXHg5N1x4MDFceDE3XHgwMkVceDAy
X1x4MDI3XDBceDk1XHgwMVx4MDZceDAxXHhlOVx4MDFceGZhXDBceDA1XHgwMVx4ZmZceDAxOFx4
MDAzXHgwMlx4ZWFceDAxOVwwOlwwRVwwO1wwPVwwRFx4MDAwXDAvXDAvXDAvXDAvXDAvXDAvXDAv
XDAvXDAvXDBAXDBceDAyXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZj
XDBceGZjXDBceGZjXDBceGZjXDBceGZkXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBc
eGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZj
XDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGY2XDBMXDBceGZlXDBDXDBJ
XDBKXDBLXDBNXDBceDA0XHgwMVx4YzFcMEJcMEZcMFx4YmFcMC5cMFx4YjFcMFx4YWZcMFx4YWRc
MCBcMC1cMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4
MWFcMFx4MWFcMChcMChcMChcMChcMChcMChcMChcMChcMChcMChcMCBcMFx4MWZcMFx4MWFcMFx4
MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFceDAwNlww
XHhhY1wwXHhiMlwwXHg5N1wwXHg5MVwwXHg4ZlwwXHg4Nlwwd1wwXHg4Y1wwXHhmZlwwR1wwXHgx
ZlwwZlwwXHg5NlwwZVwwYlwwSFwwXHhiM1wwXHg4YlwweVwweFwwXHgxZlwwY1wwZFwwIFwwIFww
IFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwYFwwalwwa1wwYVwwb1wwcFwwXHg4MFwwcFwwX1wwXHgx
ZlwwXHhmY1wwXHgxZlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwc1wwelwwclwwZ1ww
e1wwfFwwIVwwIlwwIlwwIlwwIlwwIlwwIlwwaVwwdlwwbVwwdVwwbFwwaFwwXHg4MlwwXHg4M1ww
XHgxZlwwblwwXHg4N1wwXHg4OFwwXHg4MVwwJFwwXHg4OVwwIlwwIlwwIlwwIlwwIlwwIlwwIlww
IlwwIlwwIlwwXHg4YVwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwJVwwIlwwJFwwJFww
JFwwJFwwJFwwJFwwJFwwJFwwJFwwJFwwXHg4NVwwXHg4ZVwwXHg4NFwwXHg4ZFwwXHg5MFwwXHg5
MlwwXHg5M1wwJFwwJFwwJFwwJFwwKVwwJFwwXHg5NVwwXHhhOVwwXHg5NFwwIlwwIlwwIlwwIlww
JVwwIlwwflwwXHg5OFwwfVwwXHg5ZFwwXHg5YVwwXHg5OVwwXHg5Y1wwXHg3ZlwwXHg5YlwwI1ww
XHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwJFwwJFwwJFwwJFwwKVww
JFwwXHhhNlwwXHhhYlwwXHhhZVwwXHhiMFwwXHhiN1wwXHhiNFwwXHhiNlwwXHhhYVwwXHhiNVww
I1wwJlwwXHhmZFwwJlwwJFwwXHhiYlwwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBc
J1wwXCdcMFx4YjlcMFx4YmNcMFx4YjhcMFx4YmRcMFx4YmVcMFx4YmZcMFx4YzBcMCJcMCJcMCJc
MCJcMCVcMCJcMCRcMFx4YzJcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwn
XDBceGMzXDBceGM0XDBceGM1XDBceGM3XDBceGNlXDBceGM2XDBceGM4XDAiXDAiXDAiXDAiXDAl
XDAiXDBceGM5XDAiXDAiXDAiXDAiXDAlXDAiXDBceGNiXDBceGNkXDBceGNjXDBceGNhXDBceGNm
XDBceGQxXDBceGQzXDBceGQyXDBceGQwXDAjXDBceGQ1XDBceGFmXDBceGQ5XDBceGRhXDBceGRi
XDBceGQ4XDBceDk5XDBceGRjXDBceGU2XDAiXDAiXDAiXDAiXDAlXDAiXDBceDk2XDBceGRkXDBc
eGRlXDBceGRmXDBceGUwXDBceGUxXDBceGUyXDBceGUzXDBceGU0XDAjXDAoXDAoXDAoXDAoXDAo
XDAoXDAoXDAoXDAoXDAoXDAmXDBceGU1XDAmXDBceGU3XDBceGU4XDAqXDAqXDAqXDAqXDAqXDAq
XDAqXDAqXDAqXDAqXDBceGU5XDBceGVhXDBceGViXDBceGVkXDBceGYyXDBceGVjXDBceGVlXDAk
XDAkXDAkXDAkXDApXDAkXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDBceGVmXDBceGYw
XDBceGYxXDBceGYzXDBceGY0XDBceGY1XDBceGY3XDAkXDAkXDAkXDAkXDApXDAkXDBceGY4XDBc
eGY5XDBceGZiXDAkXDAkXDAkXDAkXDApXDAkXDBceDkzXHgwMXZceDAxXHgwN1x4MDFcYlx4MDFo
XHgwMWVceDAxWlx4MDFUXHgwMWZceDAxI1wwW1x4MDFQXHgwMUxceDAxQVx4MDFJXHgwMVVceDAx
SFx4MDEkXDAkXDAkXDAkXDApXDAkXDBnXHgwMTFceDAxOVx4MDEsXHgwMVZceDAxOlx4MDE4XHgw
MVx4MWFceDAxXHgxYlx4MDEjXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDAr
XDArXDArXDArXDArXDArXDArXDArXDAgXDBceDFjXHgwMS9cMC9cMC9cMC9cMC9cMC9cMC9cMC9c
MC9cMC9cMFx4MThceDAxY1wwXHgxN1x4MDFceDFkXHgwMVx4MTlceDAxXHgxZlx4MDEmXHgwMVx4
MWVceDAxIFx4MDEhXHgwMSBcMFx4MWZcMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMFx4
MTVceDAxWlwwJVx4MDFeXDBYXDBUXDAjXHgwMVJcMCRceDAxIlx4MDFceDE2XHgwMVx4MWZcMF1c
MFlcMFNcMFZcMFtcMFwnXHgwMVdcMFxcXDBQXDBceDFmXDApXHgwMVFcMFVcMChceDAxK1x4MDEy
XHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDAqXHgwMS1ceDAx
Llx4MDEvXHgwMTBceDAxMlx4MDFceDFmXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDAk
XHgwMDZceDAxMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4
MDAxXHgwMDdceDAxQFx4MDE+XHgwMTtceDAxPFx4MDE9XHgwMTJceDAwMlx4MDAyXHgwMDJceDAw
M1x4MDAyXDA/XHgwMTJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDBEXHgwMUJceDAxRVx4MDEm
XDBGXHgwMSZcMCRcMENceDAxNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgw
MDRceDAwNFwwR1x4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAwMlx4MDAyXHgwMDJceDAwMlx4
MDAyXHgwMDNceDAwMlwwS1x4MDFKXHgwMU1ceDAxI1wwTlx4MDFPXHgwMVFceDAxUlx4MDFTXHgw
MVlceDAxWFx4MDFXXHgwMV1ceDAxJFwwXFxceDAxNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRc
eDAwNFx4MDA0XHgwMDRceDAwNFwwXlx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAwMlx4MDAy
XHgwMDJceDAwMlx4MDAyXHgwMDNceDAwMlwwX1x4MDFgXHgwMWFceDAxI1wwYlx4MDFjXHgwMWRc
eDAxaVx4MDFqXHgwMWtceDAxbFx4MDFtXHgwMW5ceDAxb1x4MDFwXHgwMUFcMEFcMEFcMEFcMEFc
MEFcMEFcMEFcMEFcMEFcMHFceDAxMlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDJcMEFcMEFcMEFc
MEFcMEFcMEFcMHJceDAxc1x4MDF0XHgwMSNcMHVceDAxd1x4MDFceDg1XHgwMXtceDAxW1x4MDF8
XHgwMX1ceDAxflx4MDFceDdmXHgwMVx4ODBceDAxXHg4MVx4MDFBXDBBXDBBXDBBXDBBXDBBXDBB
XDBBXDBBXDBBXDBceDgyXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMFpc
MFx4ODNceDAxXlwwWFwwXHhkNlwwXHg4NFx4MDFSXDBceDg2XHgwMVx4ODdceDAxXHg4OFx4MDFc
eDg5XHgwMV1cMFlcMFNcMFZcMFtcMFx4OGFceDAxXHhkN1wwXFxcMFBcMFx4MDNceDAxXHg4Ylx4
MDFceDhjXHgwMVVcMFx4OGRceDAxXHgwM1x4MDFBXDBBXDBBXDBBXDBBXDBBXDBceDhlXHgwMVx4
OGZceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgw
Mlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDkwXHgwMVx4OTFceDAxXHg5Mlx4MDFceDk0
XHgwMVx4YTVceDAxXHg5ZFx4MDFceDk4XHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJc
eDAxXHgwMlx4MDFceDAyXHgwMVx4MTBceDAxXHg5OVx4MDFceDE0XHgwMVxmXHgwMVx4MGJceDAx
XHgwZlx4MDFcblx4MDFceDlhXHgwMVx4OWJceDAxXHg5Y1x4MDEzXHgwMVx4MTNceDAxXHJceDAx
XHgxMVx4MDFceDllXHgwMVx4OWZceDAxXHhhMFx4MDFcdFx4MDFceDEyXHgwMVx4MGVceDAxNVx4
MDFceDAzXHgwMVx4YTZceDAxXHhhN1x4MDFceGE4XHgwMTRceDAxXHgwMlx4MDFceDAyXHgwMVx4
MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHhhOVx4MDFceGRmXHgwMVx4ZGNceDAxXHhk
M1x4MDFceGNhXHgwMVx4YmZceDAxXHhiOVx4MDFceDAzXHgwMVx4YjFceDAxXHhiMlx4MDFceGIz
XHgwMVx4YjRceDAxXHhiNVx4MDFceDAzXHgwMVx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmRcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4YjZceDAx
XHhiN1x4MDFceGZlXDBcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFc
MFx4MDFcMFx4MDFcMFx4MDFceGI4XHgwMVx4YmFceDAxXHhiYlx4MDFceGJjXHgwMVx4YmRceDAx
XHhiZVx4MDFceGMwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVx4MTBc
eDAxXHhjMVx4MDFceDE0XHgwMXpceDAxXHgwYlx4MDFceDBmXHgwMVxuXHgwMVx4YzJceDAxXHhj
M1x4MDFceGM0XHgwMVx4YzVceDAxXHgxM1x4MDFcclx4MDFceDExXHgwMVx4YzZceDAxeVx4MDFc
eGM3XHgwMXhceDAxXHgxMlx4MDFceDBlXHgwMVx4YzhceDAxXHhjOVx4MDFceGNiXHgwMVx4Y2Nc
eDAxXHhjZFx4MDFceGNlXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVx4
Y2ZceDAxXHhkMFx4MDFceGZmXDBceGQxXHgwMVx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmRcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZDJceDAx
XHhmY1wwXHhmZVwwXHhhMlx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFc
eDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGZmXHhmZlx4YTFceDAxXHhhMVx4
MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgw
MVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAx
XHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFc
eGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4
ZDRceDAxXHhkNVx4MDFceGQ2XHgwMVx4ZDdceDAxXHhkOFx4MDFceGQ5XHgwMVx4ZGFceDAxXHhh
NFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhkYlx4MDFceGRk
XHgwMVx4ZGVceDAxXHhmZlwwXHhlMFx4MDFceGUxXHgwMVx4ZTJceDAxXHhlM1x4MDFceGU0XHgw
MVx4ZTVceDAxXHhlNlx4MDFceGU3XHgwMVx4ZjBceDAxXHhlY1x4MDFceGViXHgwMVx4YTRceDAx
XHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFc
eGE0XHgwMVx4YTRceDAxXHhlZFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4
YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhh
NFx4MDFceGZjXDBceGEzXHgwMVx4YWFceDAxXHhlZVx4MDFceGVmXHgwMVx4ZjFceDAxXHhhZlx4
MDFceGYyXHgwMVx4ZjNceDAxXHhmNVx4MDFceGIwXHgwMVx4ZjZceDAxXHhmN1x4MDFceGY4XHgw
MVx4ZjlceDAxXHhhY1x4MDFceGFlXHgwMVx4YWJceDAxXHhhZFx4MDFceGZhXHgwMVx4ZmJceDAx
XHhmY1x4MDFceGZkXHgwMVx4MDJceDAyXDBceDAyXHgwMVx4MDJceGE0XHgwMVx4YTRceDAxXHhh
NFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceDAzXHgwMlx0XHgwMlx4MDZceDAyXHhmZFww
XHgwN1x4MDJcYlx4MDJceDBiXHgwMlxyXHgwMlxmXHgwMlx4MGVceDAyXHgwZlx4MDJceDEwXHgw
Mlx4MTJceDAyXHgxNVx4MDJceDE0XHgwMlx4MTZceDAyXHgxZlx4MDJcblx4MDJceDFiXHgwMlx4
MWFceDAyXHgxZVx4MDJceDFkXHgwMiBceDAyIVx4MDJceDEzXHgwMiJceDAyJFx4MDItXHgwMipc
eDAyXCdceDAyKFx4MDIpXHgwMlx4MWNceDAyK1x4MDIsXHgwMi5ceDAyL1x4MDIwXHgwMiVceDAy
Jlx4MDIxXHgwMkFceDAyP1x4MDI4XHgwMjZceDAyN1x4MDI5XHgwMjpceDAyO1x4MDI8XHgwMj1c
eDAyPlx4MDJAXHgwMkJceDAyQ1x4MDJbXHgwMlhceDAySFx4MDJMXHgwMklceDAySlx4MDJLXHgw
Mk1ceDAyU1x4MDJPXHgwMkdceDAyUFx4MDJOXHgwMlFceDAyUlx4MDJUXHgwMlVceDAyVlx4MDJX
XHgwMllceDAyWlx4MDJcXFx4MDJdXHgwMl5ceDAybFx4MDJhXHgwMmJceDAyY1x4MDJkXHgwMmVc
eDAyZlx4MDJnXHgwMmhceDAyaVx4MDJqXHgwMmtceDAybVx4MDJuXHgwMm9ceDAycFx4MDJxXHgw
MnJceDAyXHhmZFwwc1x4MDJ0XHgwMnVceDAydlx4MDJ3XHgwMlx4OTFceDAyXHg4OFx4MDJ7XHgw
MnxceDAyfVx4MDJceDgzXHgwMlx4N2ZceDAyXHg4MFx4MDJceDgxXHgwMn5ceDAyXHg4Mlx4MDJc
eDg0XHgwMlx4ODVceDAyXHg4Nlx4MDJceDg3XHgwMlx4ODlceDAyXHg4YVx4MDJceDhiXHgwMlx4
OGNceDAyXHg4ZFx4MDJceDhlXHgwMlx4OGZceDAyXHg5MFx4MDJceDkyXHgwMlx4OTNceDAyXHg5
NFx4MDJceGEwXHgwMlx4OTdceDAyXHg5OFx4MDJceDk5XHgwMlx4OWFceDAyXHg5Ylx4MDJceDlk
XHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNc
eDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4
MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgw
Mlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAy
XHg5Y1x4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJc
eDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YTFceDAyXHhhMlx4MDJceGEzXHgwMlx4
YTVceDAyXHhhNlx4MDJceGE3XHgwMlx4YWFceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5
Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlm
XHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceGIzXHgwMlwwXDBc
MFwwXHhhZlx4MDJcMFwwXDBcMFwwXDBceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4
OWZceDAyXHg5Zlx4MDJcMFwwXDBcMFwwXDBceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgw
Mlx4OWZceDAyXHg5Zlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5ZVx4MDJcMFww
XDBcMFwwXDBceGIwXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5Zlx4MDJceDlmXHgwMlx4OWZc
eDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHhhOFx4MDJcMFwwXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YjFceDAyXDBcMFx4YThceDAyXHhhOFx4MDJcMFwwXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlwwXDBc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlwwXDBceGE4XHgwMlwwXDBceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXDBcMFx4YThceDAyXDBcMFx4
YThceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhYlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhZVx4
MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwJywKKyAgLyogbGV4X2NoZWNrICovIlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZlwwXDBcMFwwXHhiMVx4MDJcMFwwXHhmZlx4ZmZcMFwwTlwwXHhhNFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMD1cMFwwXDBceDA1XDBceDFkXDBceDFmXDA+XDBceDFm
XDBEXDBFXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBc
eDFmXDBceDFmXDAjXDBsXDAjXDBtXDB9XDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDB+
XDBceGE2XDBceGE3XDBnXDBoXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwN1wwXDBc
MFx0XDBcclwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcdFwwXDBcMFwwXDBcMFwwXDBcMFx4MDZcMFx0
XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDBmXDBceDEyXDBceDA2XDBceDA2XDBc
YlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlww
XHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXGJcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMC1cMFx4MDZc
MC5cMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFxuXDBceDA2XDBceDBiXDBceDA2XDBceDBiXDBcZlwwXHgwZVwwXHgxMFwwXHgwZVww
XGZcMFx4MTFcMFx4MTdcMFxmXDBceDEwXDBceDEzXDBceDE0XHgwMDVcMFx4MTRcMFx4MGVcMFx4
MGJcMFxuXHgwMDZcMFx4MTRcMFx4MTVcMFx4MTNcMFx4MTdcMFx4MTVcMFx4MTFceDAwN1wwXGZc
MFx4MTNceDAwOFx4MDA5XDBceDE4XDA6XDA8XDBceDE4XDBceDE5XDBceDE5XDBceDE5XDBceDE5
XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDA/XDBcMFwwXHgxNlwwXHgxNlww
XHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgx
NlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlww
XHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgx
NlwwXHgxNlwwQlwwR1wwXHgxNlwwXHgxOFwwSFwwSVwwSlwwTFwwXHgxNVwwUFwwXHgxOFwwXHgx
OFwwUVwwXHgxOVwwU1wwVFwwVVwwXHgxYVwwXHgxOVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVww
XHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwJlwwJlwwJlwwJlwwJlwwJlwwJlww
JlwwJlwwJlwwXHgxYlwwXHgxYVwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlww
XHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwRlwwVlwwUlwwV1wwWFwwWVwwW1wwXFxcMFpcMFx4MTZc
MEZcMFx4MWJcMF9cMFdcMGBcMGFcMEZcMFJcMFpcMFxcXDBcXFwwXHgxYVwwYlwwY1wwIFwwIFww
IFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwXlwwaVwwalwwXlwwblwwb1wweFwwb1wwXlwwXHgxYlww
XHgxNlwwIFwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwcVwweVwwcVwwXVwwelwwe1ww
XHgxYlwwIVwwIVwwIVwwIVwwIVwwIVwwXVwwdFwwa1wwdFwwa1wwXVwwd1wwXHg4MVwwIFwwa1ww
XHg4NlwwXHg4N1wwd1wwXCJcMFx4ODhcMFwiXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDBcIlww
XCJcMFwiXDBceDg5XDAhXDAhXDAhXDAhXDAhXDAhXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDAk
XDAkXDAkXDAkXDAkXDAkXDAkXDAkXDAkXDAkXDBceDgzXDBceDhiXDBceDgzXDBceDhjXDBceDhm
XDBceDkxXDBceDkyXDAkXDAkXDAkXDAkXDAkXDAkXDBceDkzXDBceDk2XDBceDkzXDBcIlwwXCJc
MFwiXDBcIlwwXCJcMFwiXDB8XDBceDk3XDB8XDBceDk4XDBceDk5XDBceDk3XDBceDlhXDB8XDBc
eDlhXDBcIlwwXHg5ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwJFwwJFww
JFwwJFwwJFwwJFwwXHhhNVwwXHhhOVwwXHhhZFwwXHhhZlwwXHhiMlwwXHhiM1wwXHhiNFwwXHhh
OVwwXHhiNFwwJFwwJVwwXHgxNlwwJVwwJVwwXHhiYVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVww
JVwwJVwwXHhiN1wwXHhiYlwwXHhiN1wwXHhiY1wwXHhiZFwwXHhiZVwwXHhiZlwwJVwwJVwwJVww
JVwwJVwwJVwwJ1wwXHhjMVwwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhjMlwwXHhj
M1wwXHhjNFwwXHhjNVwwXHhjNlwwXHhjNVwwXHhjN1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhjOFww
JVwwJVwwJVwwJVwwJVwwJVwwXHhjOVwwXHhjYVwwXHhjYlwwXHhjOVwwXHhjZVwwXHhjZlwwXHhk
MFwwXHhkMVwwXHhjZlwwJVwwXHhkNFwwXHhkNlwwXHhkOFwwXHhkOVwwXHhkYVwwXHhkN1wwXHhk
OFwwXHhkYlwwXHhkNlwwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhkN1wwXHhkY1wwXHhkZFwwXHhkZVww
XHhkZlwwXHhlMFwwXHhlMVwwXHhlMlwwXHhlM1wwJ1wwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFww
KFwwKFwwKVwwXHhlNFwwKVwwXHhlNlwwXHhlN1wwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVww
KVwwXHhlOFwwXHhlOVwwXHhlYVwwXHhlYlwwXHhlY1wwXHhlYlwwXHhlZFwwKVwwKVwwKVwwKVww
KVwwKVwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwXHhlZVwwXHhlZlwwXHhmMFwwXHhm
MlwwXHhmM1wwXHhmNFwwXHhmNlwwKlwwKlwwKlwwKlwwKlwwKlwwXHhmN1wwXHhmOFwwXHhmYVww
KVwwKVwwKVwwKVwwKVwwKVwwXHgwNFx4MDFceDA1XHgwMVx4MDZceDAxXHgwN1x4MDFcdFx4MDFc
eDBiXHgwMVxmXHgwMVxyXHgwMVxuXHgwMSlcMFxmXHgwMVx4MGVceDAxXHgwZlx4MDFceDExXHgw
MVx4MTBceDAxXHJceDAxXHgxMFx4MDEqXDAqXDAqXDAqXDAqXDAqXDBcblx4MDFceDE1XHgwMVx4
MTJceDAxXHgxN1x4MDFcclx4MDFceDEyXHgwMVx4MTJceDAxXHgxOVx4MDFceDFhXHgwMSpcMCtc
MCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxc
MC9cMFx4MWJceDAxL1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwXHgxNlx4MDFceDE4XHgw
MVx4MTZceDAxXHgxY1x4MDFceDE4XHgwMVx4MWRceDAxXHgxZVx4MDFceDFkXHgwMVx4MWZceDAx
IFx4MDEwXDAvXHgwMDBceDAwMFx4MDAwXHgwMDBceDAwMFx4MDAwXHgwMDBceDAwMFx4MDAwXHgw
MDBcMFx4MTRceDAxT1wwXCJceDAxT1wwT1wwT1wwIVx4MDFPXDAjXHgwMSFceDAxXHgxNFx4MDEw
XDBPXDBPXDBPXDBPXDBPXDAmXHgwMU9cME9cME9cMC9cMCdceDAxT1wwT1wwJ1x4MDEoXHgwMTFc
eDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFcMClceDAxLFx4MDEt
XHgwMS5ceDAxL1x4MDExXHgwMTBceDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMlx4
MDA1XHgwMTJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAw
MFx4MDA2XHgwMThceDAxOVx4MDE6XHgwMTtceDAxPFx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJc
eDAwMlwwPlx4MDExXHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMVwwQlx4MDFBXHgwMURceDAxM1ww
RVx4MDEzXHgwMDNcMEFceDAxM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgw
MDNceDAwM1wwRlx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDNceDAwM1x4
MDAzXHgwMDNceDAwM1wwSFx4MDFJXHgwMUxceDAxMlwwTVx4MDFOXHgwMVBceDAxUVx4MDFSXHgw
MVRceDAxVVx4MDFWXHgwMVpceDAxNFwwW1x4MDE0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4
MDA0XHgwMDRceDAwNFx4MDA0XDBdXHgwMTNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDRc
eDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XDBeXHgwMV9ceDAxYFx4MDEzXDBhXHgwMWJceDAxY1x4
MDFoXHgwMWlceDAxalx4MDFrXHgwMWxceDAxbVx4MDFuXHgwMW9ceDAxQFwwQFwwQFwwQFwwQFww
QFwwQFwwQFwwQFwwQFwwcFx4MDE0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFwwQFwwQFwwQFww
QFwwQFwwQFwwcVx4MDFyXHgwMXNceDAxNFwwdFx4MDF2XHgwMXhceDAxeVx4MDF6XHgwMXtceDAx
fFx4MDF9XHgwMX5ceDAxXHg3Zlx4MDFceDgwXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFc
MEFcMFx4ODFceDAxQFwwQFwwQFwwQFwwQFwwQFwwQVwwQVwwQVwwQVwwQVwwQVwwXHhkNVwwXHg4
Mlx4MDFceGQ1XDBceGQ1XDBceGQ1XDBceDgzXHgwMVx4ZDVcMFx4ODVceDAxXHg4Nlx4MDFceDg3
XHgwMVx4ODhceDAxXHhkNVwwXHhkNVwwXHhkNVwwXHhkNVwwXHhkNVwwXHg4OVx4MDFceGQ1XDBc
eGQ1XDBceGQ1XDBceGZmXDBceDhhXHgwMVx4OGJceDAxXHhkNVwwXHg4Y1x4MDFceGZmXDBBXDBB
XDBBXDBBXDBBXDBBXDBceDhkXHgwMVx4OGVceDAxXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhm
ZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHg4Zlx4MDFceDkwXHgwMVx4OTFceDAx
XHg5M1x4MDFceDk1XHgwMVx4OTZceDAxXHg5N1x4MDFceGZmXDBceGZmXDBceGZmXDBceGZmXDBc
eGZmXDBceGZmXDBcYlx4MDFceDk4XHgwMVxiXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVx4
OTlceDAxXHg5YVx4MDFceDliXHgwMVx4MTNceDAxXGJceDAxXGJceDAxXGJceDAxXHg5ZFx4MDFc
eDllXHgwMVx4OWZceDAxXGJceDAxXGJceDAxXGJceDAxXHgxM1x4MDFceGZmXDBceGE1XHgwMVx4
YTZceDAxXHhhN1x4MDFceDEzXHgwMVx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZc
MFx4YThceDAxXHhhYVx4MDFceGFiXHgwMVx4YWNceDAxXHhhZFx4MDFceGFlXHgwMVx4YWZceDAx
XHhmZlwwXHhiMFx4MDFceGIxXHgwMVx4YjJceDAxXHhiM1x4MDFceGI0XHgwMVx4ZmZcMFwwXHgw
MVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVww
XHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgw
MVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVww
XHgwMVwwXHgwMVwwXHgwMVx4YjVceDAxXHhiNlx4MDFcMFx4MDFceDAyXHgwMVx4MDJceDAxXHgw
Mlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAy
XHgwMVx4YjdceDAxXHhiOVx4MDFceGJhXHgwMVx4YmJceDAxXHhiY1x4MDFceGJkXHgwMVx4YmZc
eDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxd1x4MDFc
eGMwXHgwMXdceDAxd1x4MDF3XHgwMXdceDAxd1x4MDFceGMxXHgwMVx4YzJceDAxXHhjM1x4MDFc
eGM0XHgwMXdceDAxd1x4MDF3XHgwMVx4YzVceDAxd1x4MDFceGM2XHgwMXdceDAxd1x4MDF3XHgw
MVx4YzdceDAxXHhjOFx4MDFceGNhXHgwMVx4Y2JceDAxXHhjY1x4MDFceGNkXHgwMVx4MDJceDAx
XHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4Y2VceDAxXHhjZlx4MDFc
MFx4MDFceGQwXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAz
XHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNc
eDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4
MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgw
MVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceGQxXHgwMVwwXHgwMVx4
MDNceDAxXHhhMFx4MDFceGEwXHgwMVx4YTBceDAxXHhhMFx4MDFceGEwXHgwMVx4YTBceDAxXHhh
MFx4MDFceGEwXHgwMVx4YTBceDAxXHhhMFx4MDFceGZmXDBceGExXHgwMVx4YTFceDAxXHhhMVx4
MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgw
MVx4YTJceDAxXHhhMlx4MDFceGEyXHgwMVx4YTJceDAxXHhhMlx4MDFceGEyXHgwMVx4YTJceDAx
XHhhMlx4MDFceGEyXHgwMVx4YTJceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFc
eGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGQzXHgwMVx4
ZDRceDAxXHhkNVx4MDFceGQ2XHgwMVx4ZDdceDAxXHhkOFx4MDFceGQ5XHgwMVx4YTNceDAxXHhh
M1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4ZGFceDAxXHhkY1x4MDFceGRk
XHgwMVx4MDNceDAxXHhkZlx4MDFceGUwXHgwMVx4ZTFceDAxXHhlMlx4MDFceGUzXHgwMVx4ZTRc
eDAxXHhlNVx4MDFceGU2XHgwMVx4ZThceDAxXHhlOVx4MDFceGVhXHgwMVx4YTRceDAxXHhhNFx4
MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgw
MVx4YTRceDAxXHhlY1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAx
XHhhM1x4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFc
eDAzXHgwMVx4YTJceDAxXHhhOVx4MDFceGVkXHgwMVx4ZWVceDAxXHhmMFx4MDFceGE5XHgwMVx4
ZjFceDAxXHhmMlx4MDFceGY0XHgwMVx4YTlceDAxXHhmNVx4MDFceGY2XHgwMVx4ZjdceDAxXHhm
OFx4MDFceGE5XHgwMVx4YTlceDAxXHhhOVx4MDFceGE5XHgwMVx4ZjlceDAxXHhmYVx4MDFceGZi
XHgwMVx4ZmNceDAxXHhmZVx4MDFceGZmXHgwMVwwXHgwMlx4YTRceDAxXHhhNFx4MDFceGE0XHgw
MVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4MDJceDAyXHgwNFx4MDJceDA1XHgwMlwwXHgwMVx4
MDZceDAyXHgwN1x4MDJcdFx4MDJcblx4MDJceDBiXHgwMlxyXHgwMlx4MGVceDAyXHgwZlx4MDJc
eDExXHgwMlx4MTJceDAyXHgxM1x4MDJceDE1XHgwMlx4MTdceDAyXHRceDAyXHgxOFx4MDJceDE5
XHgwMlx4MWJceDAyXHgxY1x4MDJceDFmXHgwMiBceDAyXHgxMVx4MDIhXHgwMiNceDAyJFx4MDIl
XHgwMiZceDAyJ1x4MDIoXHgwMlx4MThceDAyKlx4MDIrXHgwMi1ceDAyLlx4MDIvXHgwMiNceDAy
I1x4MDIwXHgwMjJceDAyM1x4MDI0XHgwMjVceDAyNlx4MDI4XHgwMjlceDAyOlx4MDI7XHgwMjxc
eDAyPVx4MDI/XHgwMkFceDAyQlx4MDJEXHgwMkVceDAyRlx4MDJHXHgwMkhceDAySVx4MDJKXHgw
MkxceDAyTVx4MDJOXHgwMkZceDAyT1x4MDJMXHgwMlBceDAyUVx4MDJTXHgwMlRceDAyVVx4MDJW
XHgwMlhceDAyWVx4MDJbXHgwMlxcXHgwMl1ceDAyX1x4MDJgXHgwMmFceDAyYlx4MDJjXHgwMmRc
eDAyZVx4MDJmXHgwMmdceDAyaFx4MDJpXHgwMmpceDAybFx4MDJtXHgwMm5ceDAyb1x4MDJwXHgw
MnFceDAyXHgwM1x4MDFyXHgwMnNceDAydFx4MDJ1XHgwMnZceDAyeFx4MDJ5XHgwMnpceDAye1x4
MDJ8XHgwMn1ceDAyflx4MDJceDdmXHgwMlx4ODBceDAyfFx4MDJceDgxXHgwMlx4ODNceDAyXHg4
NFx4MDJceDg1XHgwMlx4ODZceDAyXHg4OFx4MDJceDg5XHgwMlx4OGFceDAyXHg4Ylx4MDJceDhj
XHgwMlx4OGRceDAyXHg4ZVx4MDJceDhmXHgwMlx4OTFceDAyXHg5Mlx4MDJceDkzXHgwMlx4OTVc
eDAyXHg5Nlx4MDJceDk3XHgwMlx4OThceDAyXHg5OVx4MDJceDlhXHgwMlx4OWJceDAyXHg5Ylx4
MDJceDliXHgwMlx4OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4OWJceDAyXHg5Ylx4MDJceDliXHgw
Mlx4OWJceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAy
XHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJc
eDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDlkXHgwMlx4
OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5
ZVx4MDJceDllXHgwMlx4OWVceDAyXHhhMFx4MDJceGExXHgwMlx4YTJceDAyXHhhNFx4MDJceGE1
XHgwMlx4YTZceDAyXHhhOVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVc
eDAyXHg5ZVx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4
MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YjBceDAyXHhmZlx4ZmZceGZmXHhm
Zlx4YWNceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAy
XHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHg5ZVx4MDJc
eDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDlkXHgwMlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4YWNceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YThc
eDAyXHhmZlx4ZmZceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhY1x4
MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhmZlx4ZmZceGE4XHgwMlx4ZmZceGZmXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4ZmZceGZmXHhhOFx4MDJceGZmXHhmZlx4
YThceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhhOVx4MDJceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4YWNceDAyXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmYiLAorICAvKiBsZXhfYmFzZV9jb2RlICovIiIsCisgIC8qIGxl
eF9iYWNrdHJrX2NvZGUgKi8iIiwKKyAgLyogbGV4X2RlZmF1bHRfY29kZSAqLyIiLAorICAvKiBs
ZXhfdHJhbnNfY29kZSAqLyIiLAorICAvKiBsZXhfY2hlY2tfY29kZSAqLyIiLAorICAvKiBsZXhf
Y29kZSAqLyIiCitdOworCitmdW5jdGlvbiB0b2tlbihsZXhidWYpIHsKKyAgdmFyIGxleGJ1ZiQx
ID0gbGV4YnVmOworICB2YXIgX19fb2NhbWxfbGV4X3N0YXRlID0gMDsKKyAgd2hpbGUodHJ1ZSkg
eworICAgIHZhciBfX29jYW1sX2xleF9zdGF0ZSA9IF9fX29jYW1sX2xleF9zdGF0ZTsKKyAgICB2
YXIgX19vY2FtbF9sZXhfc3RhdGUkMSA9IExleGluZy5lbmdpbmUoX19vY2FtbF9sZXhfdGFibGVz
LCBfX29jYW1sX2xleF9zdGF0ZSwgbGV4YnVmJDEpOworICAgIGlmIChfX29jYW1sX2xleF9zdGF0
ZSQxID4gMTQ0IHx8IF9fb2NhbWxfbGV4X3N0YXRlJDEgPCAwKSB7CisgICAgICBDdXJyeS5fMShs
ZXhidWYkMVsvKiByZWZpbGxfYnVmZiAqLzBdLCBsZXhidWYkMSk7CisgICAgICBfX19vY2FtbF9s
ZXhfc3RhdGUgPSBfX29jYW1sX2xleF9zdGF0ZSQxOworICAgICAgY29udGludWUgOworICAgICAg
CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoIChfX29jYW1sX2xleF9zdGF0ZSQxKSB7
CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIExQQVIgKi8yOworICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBSUEFSICovMzsKKyAgICAgICAg
Y2FzZSAyIDogCisgICAgICAgICAgICB2YXIgcyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQx
LCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3Bv
cyAqLzVdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBOQVQgKi9CbG9jay5fXygwLCBbc10pOwor
ICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHZhciBzJDEgPSBMZXhpbmcuc3ViX2xleGVt
ZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBs
ZXhfY3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogSU5UICovQmxvY2suX18o
MSwgW3MkMV0pOworICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHZhciBzJDIgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfY3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogRkxP
QVQgKi9CbG9jay5fXygyLCBbcyQyXSk7CisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAg
dmFyIHMkMyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3Rh
cnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKKyAgICAgICAgICAg
IHJldHVybiAvKiBURVhUICovQmxvY2suX18oMywgW3RleHQocyQzKV0pOworICAgICAgICBjYXNl
IDYgOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihsZXhidWYkMSwgInVuY2xvc2VkIHRleHQg
bGl0ZXJhbCIpOworICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihs
ZXhidWYkMSwgImlsbGVnYWwgY29udHJvbCBjaGFyYWN0ZXIgaW4gdGV4dCBsaXRlcmFsIik7Cisg
ICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgcmV0dXJuIGVycm9yX25lc3QoTGV4aW5nLmxl
eGVtZV9lbmRfcChsZXhidWYkMSksIGxleGJ1ZiQxLCAiaWxsZWdhbCBlc2NhcGUiKTsKKyAgICAg
ICAgY2FzZSA5IDogCisgICAgICAgICAgICB2YXIgdCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBWQUxVRV9UWVBFICov
QmxvY2suX18oNSwgW3ZhbHVlX3R5cGUodCldKTsKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAg
ICAgICAgdmFyIHQkMSA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAw
KTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05TVCAqL0Jsb2NrLl9fKDEwLCBbbnVtb3AodCQx
LCBmdW5jdGlvbiAocykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gQ3Vy
cnkuXzEoSTMyLm9mX3N0cmluZywgc1svKiBpdCAqLzFdKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBPcGVyYXRvcnMuaTMyX2NvbnN0KFNvdXJjZS4kYXQkYXQobiwgc1svKiBhdCAqLzBd
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJMzIgKi9CbG9jay5f
XygwLCBbbl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgbiA9IEN1cnJ5Ll8xKEk2NC5vZl9zdHJpbmcsIHNbLyogaXQgKi8xXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlcmF0b3JzLmk2NF9jb25zdChTb3VyY2UuJGF0
JGF0KG4sIHNbLyogYXQgKi8wXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogSTY0ICovQmxvY2suX18oMSwgW25dKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChzKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBDdXJyeS5fMShGMzIub2Zfc3RyaW5n
LCBzWy8qIGl0ICovMV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiB0
dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9ycy5m
MzJfY29uc3QoU291cmNlLiRhdCRhdChuLCBzWy8qIGF0ICovMF0pKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIEYzMiAqL0Jsb2NrLl9fKDIsIFtuXSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgICAgICB9
LCBmdW5jdGlvbiAocykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gQ3Vy
cnkuXzEoRjY0Lm9mX3N0cmluZywgc1svKiBpdCAqLzFdKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBPcGVyYXRvcnMuZjY0X2NvbnN0KFNvdXJjZS4kYXQkYXQobiwgc1svKiBhdCAqLzBd
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGNjQgKi9CbG9jay5f
XygzLCBbbl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSldKTsKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAg
cmV0dXJuIC8qIEZVTkNSRUYgKi8wOworICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogTVVUICovMTsKKyAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgcmV0dXJu
IC8qIE5PUCAqLzQ7CisgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBV
TlJFQUNIQUJMRSAqLzI0OworICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICByZXR1cm4g
LyogRFJPUCAqLzU7CisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBC
TE9DSyAqLzY7CisgICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBMT09Q
ICovMTI7CisgICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFTkQgKi83
OworICAgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgICByZXR1cm4gLyogQlIgKi8xMzsKKyAg
ICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEJSX0lGICovMTQ7CisgICAg
ICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBCUl9UQUJMRSAqLzE1OworICAg
ICAgICBjYXNlIDIyIDogCisgICAgICAgICAgICByZXR1cm4gLyogUkVUVVJOICovMTg7CisgICAg
ICAgIGNhc2UgMjMgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBJRiAqLzg7CisgICAgICAgIGNh
c2UgMjQgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBUSEVOICovOTsKKyAgICAgICAgY2FzZSAy
NSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEVMU0UgKi8xMDsKKyAgICAgICAgY2FzZSAyNiA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIFNFTEVDVCAqLzExOworICAgICAgICBjYXNlIDI3IDog
CisgICAgICAgICAgICByZXR1cm4gLyogQ0FMTCAqLzE2OworICAgICAgICBjYXNlIDI4IDogCisg
ICAgICAgICAgICByZXR1cm4gLyogQ0FMTF9JTkRJUkVDVCAqLzE3OworICAgICAgICBjYXNlIDI5
IDogCisgICAgICAgICAgICByZXR1cm4gLyogR0VUX0xPQ0FMICovMTk7CisgICAgICAgIGNhc2Ug
MzAgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBTRVRfTE9DQUwgKi8yMDsKKyAgICAgICAgY2Fz
ZSAzMSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFRFRV9MT0NBTCAqLzIxOworICAgICAgICBj
YXNlIDMyIDogCisgICAgICAgICAgICByZXR1cm4gLyogR0VUX0dMT0JBTCAqLzIyOworICAgICAg
ICBjYXNlIDMzIDogCisgICAgICAgICAgICByZXR1cm4gLyogU0VUX0dMT0JBTCAqLzIzOworICAg
ICAgICBjYXNlIDM0IDogCisgICAgICAgICAgICB2YXIgdCQyID0gTGV4aW5nLnN1Yl9sZXhlbWUo
bGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIExPQUQgKi9C
bG9jay5fXyg2LCBbKGZ1bmN0aW9uKHQkMil7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uIChhLCBvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9h
cmcgPSBDdXJyeS5fMihvcHQsIGEsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBh
cnRpYWxfYXJnJDEgPSBDdXJyeS5fMihvcHQsIGEsIDMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHBhcnRpYWxfYXJnJDIgPSBDdXJyeS5fMihvcHQsIGEsIDIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHBhcnRpYWxfYXJnJDMgPSBDdXJyeS5fMihvcHQsIGEsIDMpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKG51bW9wKHQkMiwgZnVuY3Rpb24g
KHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pMzJfbG9hZChwYXJ0aWFsX2FyZywgcGFyYW0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkKHBh
cnRpYWxfYXJnJDEsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfbG9hZChwYXJ0aWFsX2FyZyQyLCBwYXJhbSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJh
bSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuZjY0X2xvYWQocGFydGlhbF9hcmckMywgcGFyYW0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9KSwgbyk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgIH0odCQyKSldKTsKKyAgICAgICAgY2FzZSAzNSA6IAorICAgICAg
ICAgICAgdmFyIHQkMyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAw
KTsKKyAgICAgICAgICAgIHJldHVybiAvKiBTVE9SRSAqL0Jsb2NrLl9fKDcsIFsoZnVuY3Rpb24o
dCQzKXsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIG8pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJ0aWFsX2FyZyA9IEN1cnJ5Ll8yKG9wdCwgYSwg
Mik7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMSA9IEN1cnJ5Ll8y
KG9wdCwgYSwgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMiA9
IEN1cnJ5Ll8yKG9wdCwgYSwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlh
bF9hcmckMyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ3VycnkuXzEobnVtb3AodCQzLCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zdG9yZShw
YXJ0aWFsX2FyZywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdG9yZShwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJh
bSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuZjMyX3N0b3JlKHBhcnRpYWxfYXJnJDIsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfc3RvcmUocGFy
dGlhbF9hcmckMywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9KSwgbyk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
IH0odCQzKSldKTsKKyAgICAgICAgY2FzZSAzNiA6IAorICAgICAgICAgICAgdmFyIHQkNCA9IExl
eGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0s
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHZh
ciBzeiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0gKyA4IHwgMCwgbGV4YnVmJDFbLyogbGV4X2N1cnJfcG9zICovNV0gLSAyIHwgMCk7
CisgICAgICAgICAgICB2YXIgcyQ0ID0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhcihsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X2N1cnJfcG9zICovNV0gLSAxIHwgMCk7CisgICAgICAgICAgICBpZiAo
dCQ0ID09PSAiaTMyIiAmJiBzeiA9PT0gIjMyIikgeworICAgICAgICAgICAgICBlcnJvcihsZXhi
dWYkMSwgInVua25vd24gb3BlcmF0b3IiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiAvKiBMT0FEICovQmxvY2suX18oNiwgWyhmdW5jdGlvbih0JDQsc3oscyQ0KXsKKyAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIG8pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBpbnRvcCh0JDQsIEN1cnJ5Ll8xKG1lbXN6KHN6LCBDdXJyeS5fMShl
eHQocyQ0LCBPcGVyYXRvcnMuaTMyX2xvYWQ4X3MsIE9wZXJhdG9ycy5pMzJfbG9hZDhfdSksIEN1
cnJ5Ll8yKG9wdCwgYSwgMCkpLCBDdXJyeS5fMShleHQocyQ0LCBPcGVyYXRvcnMuaTMyX2xvYWQx
Nl9zLCBPcGVyYXRvcnMuaTMyX2xvYWQxNl91KSwgQ3VycnkuXzIob3B0LCBhLCAxKSksIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy51bnJlYWNoYWJsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0pLCBvKSwgQ3VycnkuXzEobWVtc3ooc3osIEN1cnJ5Ll8xKGV4dChzJDQs
IE9wZXJhdG9ycy5pNjRfbG9hZDhfcywgT3BlcmF0b3JzLmk2NF9sb2FkOF91KSwgQ3VycnkuXzIo
b3B0LCBhLCAwKSksIEN1cnJ5Ll8xKGV4dChzJDQsIE9wZXJhdG9ycy5pNjRfbG9hZDE2X3MsIE9w
ZXJhdG9ycy5pNjRfbG9hZDE2X3UpLCBDdXJyeS5fMihvcHQsIGEsIDEpKSwgQ3VycnkuXzEoZXh0
KHMkNCwgT3BlcmF0b3JzLmk2NF9sb2FkMzJfcywgT3BlcmF0b3JzLmk2NF9sb2FkMzJfdSksIEN1
cnJ5Ll8yKG9wdCwgYSwgMikpKSwgbykpOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICB9KHQkNCxzeixzJDQpKV0pOworICAgICAgICBjYXNlIDM3IDogCisg
ICAgICAgICAgICB2YXIgdCQ1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQx
Wy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsg
MyB8IDApOworICAgICAgICAgICAgdmFyIHN6JDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYk
MSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgOSB8IDAsIGxleGJ1ZiQxWy8qIGxl
eF9jdXJyX3BvcyAqLzVdKTsKKyAgICAgICAgICAgIGlmICh0JDUgPT09ICJpMzIiICYmIHN6JDEg
PT09ICIzMiIpIHsKKyAgICAgICAgICAgICAgZXJyb3IobGV4YnVmJDEsICJ1bmtub3duIG9wZXJh
dG9yIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLyogU1RPUkUgKi9CbG9j
ay5fXyg3LCBbKGZ1bmN0aW9uKHQkNSxzeiQxKXsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24gKGEsIG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJ0aWFs
X2FyZyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
cGFydGlhbF9hcmckMSA9IEN1cnJ5Ll8yKG9wdCwgYSwgMSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgcGFydGlhbF9hcmckMiA9IEN1cnJ5Ll8yKG9wdCwgYSwgMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckNCA9IEN1cnJ5Ll8yKG9wdCwg
YSwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50b3AodCQ1LCBDdXJyeS5f
MShtZW1zeihzeiQxLCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmU4KHBhcnRpYWxf
YXJnLCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmUxNihwYXJ0aWFsX2FyZyQxLCBwYXJh
bSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMudW5yZWFjaGFibGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9KSwgbyksIEN1cnJ5Ll8xKG1lbXN6KHN6JDEsIGZ1bmN0aW9uIChwYXJhbSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmk2NF9zdG9yZTgocGFydGlhbF9hcmckMiwgcGFyYW0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0
X3N0b3JlMTYocGFydGlhbF9hcmckMywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMzIo
cGFydGlhbF9hcmckNCwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSksIG8pKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgfSh0JDUsc3okMSkpXSk7CisgICAgICAgIGNhc2UgMzggOiAKKyAgICAgICAgICAg
IHZhciBzJDUgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgNyB8IDAsIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKKyAg
ICAgICAgICAgIHJldHVybiAvKiBPRkZTRVRfRVFfTkFUICovQmxvY2suX18oOCwgW3MkNV0pOwor
ICAgICAgICBjYXNlIDM5IDogCisgICAgICAgICAgICB2YXIgcyQ2ID0gTGV4aW5nLnN1Yl9sZXhl
bWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDYgfCAwLCBsZXhi
dWYkMVsvKiBsZXhfY3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogQUxJR05f
RVFfTkFUICovQmxvY2suX18oOSwgW3MkNl0pOworICAgICAgICBjYXNlIDQwIDogCisgICAgICAg
ICAgICB2YXIgdCQ2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OworICAgICAgICAgICAgcmV0dXJuIC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtpbnRvcCh0JDYs
IE9wZXJhdG9ycy5pMzJfY2x6LCBPcGVyYXRvcnMuaTY0X2NseildKTsKKyAgICAgICAgY2FzZSA0
MSA6IAorICAgICAgICAgICAgdmFyIHQkNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDEx
LCBbaW50b3AodCQ3LCBPcGVyYXRvcnMuaTMyX2N0eiwgT3BlcmF0b3JzLmk2NF9jdHopXSk7Cisg
ICAgICAgIGNhc2UgNDIgOiAKKyAgICAgICAgICAgIHZhciB0JDggPSBMZXhpbmcuc3ViX2xleGVt
ZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkg
Ki9CbG9jay5fXygxMSwgW2ludG9wKHQkOCwgT3BlcmF0b3JzLmkzMl9wb3BjbnQsIE9wZXJhdG9y
cy5pNjRfcG9wY250KV0pOworICAgICAgICBjYXNlIDQzIDogCisgICAgICAgICAgICB2YXIgdCQ5
ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAg
ICAgcmV0dXJuIC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtmbG9hdG9wKHQkOSwgT3BlcmF0b3Jz
LmYzMl9uZWcsIE9wZXJhdG9ycy5mNjRfbmVnKV0pOworICAgICAgICBjYXNlIDQ0IDogCisgICAg
ICAgICAgICB2YXIgdCQxMCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMg
fCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbZmxvYXRv
cCh0JDEwLCBPcGVyYXRvcnMuZjMyX2FicywgT3BlcmF0b3JzLmY2NF9hYnMpXSk7CisgICAgICAg
IGNhc2UgNDUgOiAKKyAgICAgICAgICAgIHZhciB0JDExID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4
YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIFVOQVJZICovQmxv
Y2suX18oMTEsIFtmbG9hdG9wKHQkMTEsIE9wZXJhdG9ycy5mMzJfc3FydCwgT3BlcmF0b3JzLmY2
NF9zcXJ0KV0pOworICAgICAgICBjYXNlIDQ2IDogCisgICAgICAgICAgICB2YXIgdCQxMiA9IExl
eGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0s
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbZmxvYXRvcCh0JDEyLCBPcGVyYXRvcnMuZjMy
X2NlaWwsIE9wZXJhdG9ycy5mNjRfY2VpbCldKTsKKyAgICAgICAgY2FzZSA0NyA6IAorICAgICAg
ICAgICAgdmFyIHQkMTMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwg
MCk7CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3Ao
dCQxMywgT3BlcmF0b3JzLmYzMl9mbG9vciwgT3BlcmF0b3JzLmY2NF9mbG9vcildKTsKKyAgICAg
ICAgY2FzZSA0OCA6IAorICAgICAgICAgICAgdmFyIHQkMTQgPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9C
bG9jay5fXygxMSwgW2Zsb2F0b3AodCQxNCwgT3BlcmF0b3JzLmYzMl90cnVuYywgT3BlcmF0b3Jz
LmY2NF90cnVuYyldKTsKKyAgICAgICAgY2FzZSA0OSA6IAorICAgICAgICAgICAgdmFyIHQkMTUg
PSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3AodCQxNSwgT3BlcmF0b3Jz
LmYzMl9uZWFyZXN0LCBPcGVyYXRvcnMuZjY0X25lYXJlc3QpXSk7CisgICAgICAgIGNhc2UgNTAg
OiAKKyAgICAgICAgICAgIHZhciB0JDE2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEy
LCBbaW50b3AodCQxNiwgT3BlcmF0b3JzLmkzMl9hZGQsIE9wZXJhdG9ycy5pNjRfYWRkKV0pOwor
ICAgICAgICBjYXNlIDUxIDogCisgICAgICAgICAgICB2YXIgdCQxNyA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBCSU5B
UlkgKi9CbG9jay5fXygxMiwgW2ludG9wKHQkMTcsIE9wZXJhdG9ycy5pMzJfc3ViLCBPcGVyYXRv
cnMuaTY0X3N1YildKTsKKyAgICAgICAgY2FzZSA1MiA6IAorICAgICAgICAgICAgdmFyIHQkMTgg
PSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDE4LCBPcGVyYXRvcnMu
aTMyX211bCwgT3BlcmF0b3JzLmk2NF9tdWwpXSk7CisgICAgICAgIGNhc2UgNTMgOiAKKyAgICAg
ICAgICAgIHZhciB0JDE5ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8
IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3Ao
dCQxOSwgT3BlcmF0b3JzLmkzMl9kaXZfcywgT3BlcmF0b3JzLmk2NF9kaXZfcyldKTsKKyAgICAg
ICAgY2FzZSA1NCA6IAorICAgICAgICAgICAgdmFyIHQkMjAgPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICov
QmxvY2suX18oMTIsIFtpbnRvcCh0JDIwLCBPcGVyYXRvcnMuaTMyX2Rpdl91LCBPcGVyYXRvcnMu
aTY0X2Rpdl91KV0pOworICAgICAgICBjYXNlIDU1IDogCisgICAgICAgICAgICB2YXIgdCQyMSA9
IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAg
IHJldHVybiAvKiBCSU5BUlkgKi9CbG9jay5fXygxMiwgW2ludG9wKHQkMjEsIE9wZXJhdG9ycy5p
MzJfcmVtX3MsIE9wZXJhdG9ycy5pNjRfcmVtX3MpXSk7CisgICAgICAgIGNhc2UgNTYgOiAKKyAg
ICAgICAgICAgIHZhciB0JDIyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQx
Wy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsg
MyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50
b3AodCQyMiwgT3BlcmF0b3JzLmkzMl9yZW1fdSwgT3BlcmF0b3JzLmk2NF9yZW1fdSldKTsKKyAg
ICAgICAgY2FzZSA1NyA6IAorICAgICAgICAgICAgdmFyIHQkMjMgPSBMZXhpbmcuc3ViX2xleGVt
ZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZ
ICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDIzLCBPcGVyYXRvcnMuaTMyX2FuZCwgT3BlcmF0b3Jz
Lmk2NF9hbmQpXSk7CisgICAgICAgIGNhc2UgNTggOiAKKyAgICAgICAgICAgIHZhciB0JDI0ID0g
TGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80
XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAg
cmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyNCwgT3BlcmF0b3JzLmkz
Ml9vciwgT3BlcmF0b3JzLmk2NF9vcildKTsKKyAgICAgICAgY2FzZSA1OSA6IAorICAgICAgICAg
ICAgdmFyIHQkMjUgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDI1
LCBPcGVyYXRvcnMuaTMyX3hvciwgT3BlcmF0b3JzLmk2NF94b3IpXSk7CisgICAgICAgIGNhc2Ug
NjAgOiAKKyAgICAgICAgICAgIHZhciB0JDI2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEs
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9f
KDEyLCBbaW50b3AodCQyNiwgT3BlcmF0b3JzLmkzMl9zaGwsIE9wZXJhdG9ycy5pNjRfc2hsKV0p
OworICAgICAgICBjYXNlIDYxIDogCisgICAgICAgICAgICB2YXIgdCQyNyA9IExleGluZy5zdWJf
bGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQx
Wy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBC
SU5BUlkgKi9CbG9jay5fXygxMiwgW2ludG9wKHQkMjcsIE9wZXJhdG9ycy5pMzJfc2hyX3MsIE9w
ZXJhdG9ycy5pNjRfc2hyX3MpXSk7CisgICAgICAgIGNhc2UgNjIgOiAKKyAgICAgICAgICAgIHZh
ciB0JDI4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyOCwgT3Bl
cmF0b3JzLmkzMl9zaHJfdSwgT3BlcmF0b3JzLmk2NF9zaHJfdSldKTsKKyAgICAgICAgY2FzZSA2
MyA6IAorICAgICAgICAgICAgdmFyIHQkMjkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18o
MTIsIFtpbnRvcCh0JDI5LCBPcGVyYXRvcnMuaTMyX3JvdGwsIE9wZXJhdG9ycy5pNjRfcm90bCld
KTsKKyAgICAgICAgY2FzZSA2NCA6IAorICAgICAgICAgICAgdmFyIHQkMzAgPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyog
QklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDMwLCBPcGVyYXRvcnMuaTMyX3JvdHIsIE9w
ZXJhdG9ycy5pNjRfcm90cildKTsKKyAgICAgICAgY2FzZSA2NSA6IAorICAgICAgICAgICAgdmFy
IHQkMzEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0
X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzEsIE9w
ZXJhdG9ycy5mMzJfYWRkLCBPcGVyYXRvcnMuZjY0X2FkZCldKTsKKyAgICAgICAgY2FzZSA2NiA6
IAorICAgICAgICAgICAgdmFyIHQkMzIgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIs
IFtmbG9hdG9wKHQkMzIsIE9wZXJhdG9ycy5mMzJfc3ViLCBPcGVyYXRvcnMuZjY0X3N1YildKTsK
KyAgICAgICAgY2FzZSA2NyA6IAorICAgICAgICAgICAgdmFyIHQkMzMgPSBMZXhpbmcuc3ViX2xl
eGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklO
QVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzMsIE9wZXJhdG9ycy5mMzJfbXVsLCBPcGVy
YXRvcnMuZjY0X211bCldKTsKKyAgICAgICAgY2FzZSA2OCA6IAorICAgICAgICAgICAgdmFyIHQk
MzQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzQsIE9wZXJh
dG9ycy5mMzJfZGl2LCBPcGVyYXRvcnMuZjY0X2RpdildKTsKKyAgICAgICAgY2FzZSA2OSA6IAor
ICAgICAgICAgICAgdmFyIHQkMzUgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVm
JDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0g
KyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtm
bG9hdG9wKHQkMzUsIE9wZXJhdG9ycy5mMzJfbWluLCBPcGVyYXRvcnMuZjY0X21pbildKTsKKyAg
ICAgICAgY2FzZSA3MCA6IAorICAgICAgICAgICAgdmFyIHQkMzYgPSBMZXhpbmcuc3ViX2xleGVt
ZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZ
ICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzYsIE9wZXJhdG9ycy5mMzJfbWF4LCBPcGVyYXRv
cnMuZjY0X21heCldKTsKKyAgICAgICAgY2FzZSA3MSA6IAorICAgICAgICAgICAgdmFyIHQkMzcg
PSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzcsIE9wZXJhdG9y
cy5mMzJfY29weXNpZ24sIE9wZXJhdG9ycy5mNjRfY29weXNpZ24pXSk7CisgICAgICAgIGNhc2Ug
NzIgOiAKKyAgICAgICAgICAgIHZhciB0JDM4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEs
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIFRFU1QgKi9CbG9jay5fXygx
NSwgW2ludG9wKHQkMzgsIE9wZXJhdG9ycy5pMzJfZXF6LCBPcGVyYXRvcnMuaTY0X2VxeildKTsK
KyAgICAgICAgY2FzZSA3MyA6IAorICAgICAgICAgICAgdmFyIHQkMzkgPSBMZXhpbmcuc3ViX2xl
eGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09N
UEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQzOSwgT3BlcmF0b3JzLmkzMl9lcSwgT3BlcmF0
b3JzLmk2NF9lcSldKTsKKyAgICAgICAgY2FzZSA3NCA6IAorICAgICAgICAgICAgdmFyIHQkNDAg
PSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0MCwgT3BlcmF0b3Jz
LmkzMl9uZSwgT3BlcmF0b3JzLmk2NF9uZSldKTsKKyAgICAgICAgY2FzZSA3NSA6IAorICAgICAg
ICAgICAgdmFyIHQkNDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwg
MCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3Ao
dCQ0MSwgT3BlcmF0b3JzLmkzMl9sdF9zLCBPcGVyYXRvcnMuaTY0X2x0X3MpXSk7CisgICAgICAg
IGNhc2UgNzYgOiAKKyAgICAgICAgICAgIHZhciB0JDQyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4
YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9C
bG9jay5fXygxMywgW2ludG9wKHQkNDIsIE9wZXJhdG9ycy5pMzJfbHRfdSwgT3BlcmF0b3JzLmk2
NF9sdF91KV0pOworICAgICAgICBjYXNlIDc3IDogCisgICAgICAgICAgICB2YXIgdCQ0MyA9IExl
eGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0s
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBDT01QQVJFICovQmxvY2suX18oMTMsIFtpbnRvcCh0JDQzLCBPcGVyYXRvcnMuaTMy
X2xlX3MsIE9wZXJhdG9ycy5pNjRfbGVfcyldKTsKKyAgICAgICAgY2FzZSA3OCA6IAorICAgICAg
ICAgICAgdmFyIHQkNDQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwg
MCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3Ao
dCQ0NCwgT3BlcmF0b3JzLmkzMl9sZV91LCBPcGVyYXRvcnMuaTY0X2xlX3UpXSk7CisgICAgICAg
IGNhc2UgNzkgOiAKKyAgICAgICAgICAgIHZhciB0JDQ1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4
YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9C
bG9jay5fXygxMywgW2ludG9wKHQkNDUsIE9wZXJhdG9ycy5pMzJfZ3RfcywgT3BlcmF0b3JzLmk2
NF9ndF9zKV0pOworICAgICAgICBjYXNlIDgwIDogCisgICAgICAgICAgICB2YXIgdCQ0NiA9IExl
eGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0s
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBDT01QQVJFICovQmxvY2suX18oMTMsIFtpbnRvcCh0JDQ2LCBPcGVyYXRvcnMuaTMy
X2d0X3UsIE9wZXJhdG9ycy5pNjRfZ3RfdSldKTsKKyAgICAgICAgY2FzZSA4MSA6IAorICAgICAg
ICAgICAgdmFyIHQkNDcgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwg
MCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3Ao
dCQ0NywgT3BlcmF0b3JzLmkzMl9nZV9zLCBPcGVyYXRvcnMuaTY0X2dlX3MpXSk7CisgICAgICAg
IGNhc2UgODIgOiAKKyAgICAgICAgICAgIHZhciB0JDQ4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4
YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9C
bG9jay5fXygxMywgW2ludG9wKHQkNDgsIE9wZXJhdG9ycy5pMzJfZ2VfdSwgT3BlcmF0b3JzLmk2
NF9nZV91KV0pOworICAgICAgICBjYXNlIDgzIDogCisgICAgICAgICAgICB2YXIgdCQ0OSA9IExl
eGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0s
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBDT01QQVJFICovQmxvY2suX18oMTMsIFtmbG9hdG9wKHQkNDksIE9wZXJhdG9ycy5m
MzJfZXEsIE9wZXJhdG9ycy5mNjRfZXEpXSk7CisgICAgICAgIGNhc2UgODQgOiAKKyAgICAgICAg
ICAgIHZhciB0JDUwID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2Zsb2F0b3Ao
dCQ1MCwgT3BlcmF0b3JzLmYzMl9uZSwgT3BlcmF0b3JzLmY2NF9uZSldKTsKKyAgICAgICAgY2Fz
ZSA4NSA6IAorICAgICAgICAgICAgdmFyIHQkNTEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYk
MSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2Nr
Ll9fKDEzLCBbZmxvYXRvcCh0JDUxLCBPcGVyYXRvcnMuZjMyX2x0LCBPcGVyYXRvcnMuZjY0X2x0
KV0pOworICAgICAgICBjYXNlIDg2IDogCisgICAgICAgICAgICB2YXIgdCQ1MiA9IExleGluZy5z
dWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAv
KiBDT01QQVJFICovQmxvY2suX18oMTMsIFtmbG9hdG9wKHQkNTIsIE9wZXJhdG9ycy5mMzJfbGUs
IE9wZXJhdG9ycy5mNjRfbGUpXSk7CisgICAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgICAgIHZh
ciB0JDUzID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAg
ICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2Zsb2F0b3AodCQ1Mywg
T3BlcmF0b3JzLmYzMl9ndCwgT3BlcmF0b3JzLmY2NF9ndCldKTsKKyAgICAgICAgY2FzZSA4OCA6
IAorICAgICAgICAgICAgdmFyIHQkNTQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEz
LCBbZmxvYXRvcCh0JDU0LCBPcGVyYXRvcnMuZjMyX2dlLCBPcGVyYXRvcnMuZjY0X2dlKV0pOwor
ICAgICAgICBjYXNlIDg5IDogCisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2Nr
Ll9fKDE0LCBbT3BlcmF0b3JzLmkzMl93cmFwX2k2NF0pOworICAgICAgICBjYXNlIDkwIDogCisg
ICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbT3BlcmF0b3JzLmk2
NF9leHRlbmRfc19pMzJdKTsKKyAgICAgICAgY2FzZSA5MSA6IAorICAgICAgICAgICAgcmV0dXJu
IC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5pNjRfZXh0ZW5kX3VfaTMyXSk7
CisgICAgICAgIGNhc2UgOTIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxv
Y2suX18oMTQsIFtPcGVyYXRvcnMuZjMyX2RlbW90ZV9mNjRdKTsKKyAgICAgICAgY2FzZSA5MyA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9y
cy5mNjRfcHJvbW90ZV9mMzJdKTsKKyAgICAgICAgY2FzZSA5NCA6IAorICAgICAgICAgICAgdmFy
IHQkNTUgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0
X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1NSwgT3Bl
cmF0b3JzLmkzMl90cnVuY19zX2YzMiwgT3BlcmF0b3JzLmk2NF90cnVuY19zX2YzMildKTsKKyAg
ICAgICAgY2FzZSA5NSA6IAorICAgICAgICAgICAgdmFyIHQkNTYgPSBMZXhpbmcuc3ViX2xleGVt
ZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVS
VCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1NiwgT3BlcmF0b3JzLmkzMl90cnVuY191X2YzMiwg
T3BlcmF0b3JzLmk2NF90cnVuY191X2YzMildKTsKKyAgICAgICAgY2FzZSA5NiA6IAorICAgICAg
ICAgICAgdmFyIHQkNTcgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwg
MCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3Ao
dCQ1NywgT3BlcmF0b3JzLmkzMl90cnVuY19zX2Y2NCwgT3BlcmF0b3JzLmk2NF90cnVuY19zX2Y2
NCldKTsKKyAgICAgICAgY2FzZSA5NyA6IAorICAgICAgICAgICAgdmFyIHQkNTggPSBMZXhpbmcu
c3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhi
dWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4g
LyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1OCwgT3BlcmF0b3JzLmkzMl90cnVu
Y191X2Y2NCwgT3BlcmF0b3JzLmk2NF90cnVuY191X2Y2NCldKTsKKyAgICAgICAgY2FzZSA5OCA6
IAorICAgICAgICAgICAgdmFyIHQkNTkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0
LCBbZmxvYXRvcCh0JDU5LCBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfc19pMzIsIE9wZXJhdG9ycy5m
NjRfY29udmVydF9zX2kzMildKTsKKyAgICAgICAgY2FzZSA5OSA6IAorICAgICAgICAgICAgdmFy
IHQkNjAgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0
X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbZmxvYXRvcCh0JDYwLCBP
cGVyYXRvcnMuZjMyX2NvbnZlcnRfdV9pMzIsIE9wZXJhdG9ycy5mNjRfY29udmVydF91X2kzMild
KTsKKyAgICAgICAgY2FzZSAxMDAgOiAKKyAgICAgICAgICAgIHZhciB0JDYxID0gTGV4aW5nLnN1
Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVm
JDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8q
IENPTlZFUlQgKi9CbG9jay5fXygxNCwgW2Zsb2F0b3AodCQ2MSwgT3BlcmF0b3JzLmYzMl9jb252
ZXJ0X3NfaTY0LCBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pNjQpXSk7CisgICAgICAgIGNhc2Ug
MTAxIDogCisgICAgICAgICAgICB2YXIgdCQ2MiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQx
LCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2su
X18oMTQsIFtmbG9hdG9wKHQkNjIsIE9wZXJhdG9ycy5mMzJfY29udmVydF91X2k2NCwgT3BlcmF0
b3JzLmY2NF9jb252ZXJ0X3VfaTY0KV0pOworICAgICAgICBjYXNlIDEwMiA6IAorICAgICAgICAg
ICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5mMzJfcmVpbnRl
cnByZXRfaTMyXSk7CisgICAgICAgIGNhc2UgMTAzIDogCisgICAgICAgICAgICByZXR1cm4gLyog
Q09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbT3BlcmF0b3JzLmY2NF9yZWludGVycHJldF9pNjRdKTsK
KyAgICAgICAgY2FzZSAxMDQgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxv
Y2suX18oMTQsIFtPcGVyYXRvcnMuaTMyX3JlaW50ZXJwcmV0X2YzMl0pOworICAgICAgICBjYXNl
IDEwNSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09w
ZXJhdG9ycy5pNjRfcmVpbnRlcnByZXRfZjY0XSk7CisgICAgICAgIGNhc2UgMTA2IDogCisgICAg
ICAgICAgICByZXR1cm4gLyogQ1VSUkVOVF9NRU1PUlkgKi8yNTsKKyAgICAgICAgY2FzZSAxMDcg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBHUk9XX01FTU9SWSAqLzI2OworICAgICAgICBjYXNl
IDEwOCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFRZUEUgKi8yOTsKKyAgICAgICAgY2FzZSAx
MDkgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBGVU5DICovMjc7CisgICAgICAgIGNhc2UgMTEw
IDogCisgICAgICAgICAgICByZXR1cm4gLyogU1RBUlQgKi8yODsKKyAgICAgICAgY2FzZSAxMTEg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBQQVJBTSAqLzMwOworICAgICAgICBjYXNlIDExMiA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIFJFU1VMVCAqLzMxOworICAgICAgICBjYXNlIDExMyA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIExPQ0FMICovMzI7CisgICAgICAgIGNhc2UgMTE0IDog
CisgICAgICAgICAgICByZXR1cm4gLyogR0xPQkFMICovMzM7CisgICAgICAgIGNhc2UgMTE1IDog
CisgICAgICAgICAgICByZXR1cm4gLyogTU9EVUxFICovMzQ7CisgICAgICAgIGNhc2UgMTE2IDog
CisgICAgICAgICAgICByZXR1cm4gLyogVEFCTEUgKi8zNTsKKyAgICAgICAgY2FzZSAxMTcgOiAK
KyAgICAgICAgICAgIHJldHVybiAvKiBNRU1PUlkgKi8zNzsKKyAgICAgICAgY2FzZSAxMTggOiAK
KyAgICAgICAgICAgIHJldHVybiAvKiBFTEVNICovMzY7CisgICAgICAgIGNhc2UgMTE5IDogCisg
ICAgICAgICAgICByZXR1cm4gLyogREFUQSAqLzM4OworICAgICAgICBjYXNlIDEyMCA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIE9GRlNFVCAqLzM5OworICAgICAgICBjYXNlIDEyMSA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIElNUE9SVCAqLzQwOworICAgICAgICBjYXNlIDEyMiA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIEVYUE9SVCAqLzQxOworICAgICAgICBjYXNlIDEyMyA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIFNDUklQVCAqLzQyOworICAgICAgICBjYXNlIDEyNCA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIFJFR0lTVEVSICovNDM7CisgICAgICAgIGNhc2UgMTI1IDogCisg
ICAgICAgICAgICByZXR1cm4gLyogSU5WT0tFICovNDQ7CisgICAgICAgIGNhc2UgMTI2IDogCisg
ICAgICAgICAgICByZXR1cm4gLyogR0VUICovNDU7CisgICAgICAgIGNhc2UgMTI3IDogCisgICAg
ICAgICAgICByZXR1cm4gLyogQVNTRVJUX01BTEZPUk1FRCAqLzQ2OworICAgICAgICBjYXNlIDEy
OCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEFTU0VSVF9JTlZBTElEICovNDc7CisgICAgICAg
IGNhc2UgMTI5IDogCisgICAgICAgICAgICByZXR1cm4gLyogQVNTRVJUX1NPRlRfSU5WQUxJRCAq
LzQ4OworICAgICAgICBjYXNlIDEzMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEFTU0VSVF9V
TkxJTktBQkxFICovNDk7CisgICAgICAgIGNhc2UgMTMxIDogCisgICAgICAgICAgICByZXR1cm4g
LyogQVNTRVJUX1JFVFVSTiAqLzUwOworICAgICAgICBjYXNlIDEzMiA6IAorICAgICAgICAgICAg
cmV0dXJuIC8qIEFTU0VSVF9SRVRVUk5fTkFOICovNTE7CisgICAgICAgIGNhc2UgMTMzIDogCisg
ICAgICAgICAgICByZXR1cm4gLyogQVNTRVJUX1RSQVAgKi81MjsKKyAgICAgICAgY2FzZSAxMzQg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBBU1NFUlRfRVhIQVVTVElPTiAqLzUzOworICAgICAg
ICBjYXNlIDEzNSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIElOUFVUICovNTQ7CisgICAgICAg
IGNhc2UgMTM2IDogCisgICAgICAgICAgICByZXR1cm4gLyogT1VUUFVUICovNTU7CisgICAgICAg
IGNhc2UgMTM3IDogCisgICAgICAgICAgICB2YXIgcyQ3ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4
YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X2N1
cnJfcG9zICovNV0pOworICAgICAgICAgICAgcmV0dXJuIC8qIFZBUiAqL0Jsb2NrLl9fKDQsIFtz
JDddKTsKKyAgICAgICAgY2FzZSAxNDAgOiAKKyAgICAgICAgICAgIF9fb2NhbWxfbGV4X2NvbW1l
bnRfcmVjKExleGluZy5sZXhlbWVfc3RhcnRfcChsZXhidWYkMSksIGxleGJ1ZiQxLCA2ODQpOwor
ICAgICAgICAgICAgcmV0dXJuIHRva2VuKGxleGJ1ZiQxKTsKKyAgICAgICAgY2FzZSAxNDEgOiAK
KyAgICAgICAgICAgIHJldHVybiB0b2tlbihsZXhidWYkMSk7CisgICAgICAgIGNhc2UgMTM5IDog
CisgICAgICAgIGNhc2UgMTQyIDogCisgICAgICAgICAgICBMZXhpbmcubmV3X2xpbmUobGV4YnVm
JDEpOworICAgICAgICAgICAgcmV0dXJuIHRva2VuKGxleGJ1ZiQxKTsKKyAgICAgICAgY2FzZSAx
MzggOiAKKyAgICAgICAgY2FzZSAxNDMgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFT0YgKi81
NjsKKyAgICAgICAgY2FzZSAxNDQgOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihsZXhidWYk
MSwgInVua25vd24gb3BlcmF0b3IiKTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9Owor
fQorCitmdW5jdGlvbiBfX29jYW1sX2xleF9jb21tZW50X3JlYyhzdGFydCwgbGV4YnVmLCBfX19v
Y2FtbF9sZXhfc3RhdGUpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBfX29jYW1sX2xleF9z
dGF0ZSA9IF9fX29jYW1sX2xleF9zdGF0ZTsKKyAgICB2YXIgX19vY2FtbF9sZXhfc3RhdGUkMSA9
IExleGluZy5lbmdpbmUoX19vY2FtbF9sZXhfdGFibGVzLCBfX29jYW1sX2xleF9zdGF0ZSwgbGV4
YnVmKTsKKyAgICBpZiAoX19vY2FtbF9sZXhfc3RhdGUkMSA+IDQgfHwgX19vY2FtbF9sZXhfc3Rh
dGUkMSA8IDApIHsKKyAgICAgIEN1cnJ5Ll8xKGxleGJ1ZlsvKiByZWZpbGxfYnVmZiAqLzBdLCBs
ZXhidWYpOworICAgICAgX19fb2NhbWxfbGV4X3N0YXRlID0gX19vY2FtbF9sZXhfc3RhdGUkMTsK
KyAgICAgIGNvbnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRj
aCAoX19vY2FtbF9sZXhfc3RhdGUkMSkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAg
IHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgX19vY2Ft
bF9sZXhfY29tbWVudF9yZWMoTGV4aW5nLmxleGVtZV9zdGFydF9wKGxleGJ1ZiksIGxleGJ1Ziwg
Njg0KTsKKyAgICAgICAgICAgIF9fX29jYW1sX2xleF9zdGF0ZSA9IDY4NDsKKyAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgTGV4aW5nLm5l
d19saW5lKGxleGJ1Zik7CisgICAgICAgICAgICBfX19vY2FtbF9sZXhfc3RhdGUgPSA2ODQ7Cisg
ICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAg
IHJldHVybiBlcnJvcl9uZXN0KHN0YXJ0LCBsZXhidWYsICJ1bmNsb3NlZCBjb21tZW50Iik7Cisg
ICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgX19fb2NhbWxfbGV4X3N0YXRlID0gNjg0Owor
ICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisgICAgICB9CisgICAgfQorICB9
OworfQorCitleHBvcnRzLmNvbnZlcnRfcG9zID0gY29udmVydF9wb3M7CitleHBvcnRzLnRva2Vu
ICAgICAgID0gdG9rZW47CisvKiBGMzIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVu
ZCBvZiBsZXhlci5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisK
KyAgX3JlZ2lzdHJ5WydsZXhpbmcnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMg
PSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGxleGluZy5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3Qn
OworCit2YXIgU3lzICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3N5cyIpOwordmFy
IEJ5dGVzICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ieXRlcyIpOwordmFyIEN1cnJ5
ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfYnl0ZXMg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2J5dGVzIik7Cit2YXIgQ2FtbF9sZXhlciAg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfbGV4ZXIiKTsKK3ZhciBQZXJ2YXNpdmVzICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxfc3RyaW5nICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5j
dGlvbiBlbmdpbmUodGJsLCBzdGF0ZSwgYnVmKSB7CisgIHZhciByZXN1bHQgPSBDYW1sX2xleGVy
LmNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXRlLCBidWYpOworICBpZiAocmVzdWx0ID49IDApIHsK
KyAgICBidWZbLyogbGV4X3N0YXJ0X3AgKi8xMF0gPSBidWZbLyogbGV4X2N1cnJfcCAqLzExXTsK
KyAgICB2YXIgaW5pdCA9IGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdOworICAgIGJ1ZlsvKiBsZXhf
Y3Vycl9wICovMTFdID0gLyogcmVjb3JkICovWworICAgICAgLyogcG9zX2ZuYW1lICovaW5pdFsv
KiBwb3NfZm5hbWUgKi8wXSwKKyAgICAgIC8qIHBvc19sbnVtICovaW5pdFsvKiBwb3NfbG51bSAq
LzFdLAorICAgICAgLyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJdLAorICAgICAgLyog
cG9zX2NudW0gKi9idWZbLyogbGV4X2Fic19wb3MgKi8zXSArIGJ1ZlsvKiBsZXhfY3Vycl9wb3Mg
Ki81XSB8IDAKKyAgICBdOworICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIG5l
d19lbmdpbmUodGJsLCBzdGF0ZSwgYnVmKSB7CisgIHZhciByZXN1bHQgPSBDYW1sX2xleGVyLmNh
bWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGF0ZSwgYnVmKTsKKyAgaWYgKHJlc3VsdCA+PSAwKSB7
CisgICAgYnVmWy8qIGxleF9zdGFydF9wICovMTBdID0gYnVmWy8qIGxleF9jdXJyX3AgKi8xMV07
CisgICAgdmFyIGluaXQgPSBidWZbLyogbGV4X2N1cnJfcCAqLzExXTsKKyAgICBidWZbLyogbGV4
X2N1cnJfcCAqLzExXSA9IC8qIHJlY29yZCAqL1sKKyAgICAgIC8qIHBvc19mbmFtZSAqL2luaXRb
LyogcG9zX2ZuYW1lICovMF0sCisgICAgICAvKiBwb3NfbG51bSAqL2luaXRbLyogcG9zX2xudW0g
Ki8xXSwKKyAgICAgIC8qIHBvc19ib2wgKi9pbml0Wy8qIHBvc19ib2wgKi8yXSwKKyAgICAgIC8q
IHBvc19jbnVtICovYnVmWy8qIGxleF9hYnNfcG9zICovM10gKyBidWZbLyogbGV4X2N1cnJfcG9z
ICovNV0gfCAwCisgICAgXTsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit2YXIgemVyb19w
b3MgPSAvKiByZWNvcmQgKi9bCisgIC8qIHBvc19mbmFtZSAqLyIiLAorICAvKiBwb3NfbG51bSAq
LzEsCisgIC8qIHBvc19ib2wgKi8wLAorICAvKiBwb3NfY251bSAqLzAKK107CisKK2Z1bmN0aW9u
IGZyb21fZnVuY3Rpb24oZikgeworICB2YXIgcGFydGlhbF9hcmcgPSBuZXcgQXJyYXkoNTEyKTsK
KyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiByZWZpbGxfYnVmZiAqL2Z1bmN0
aW9uIChwYXJhbSkgeworICAgICAgICAgICAgdmFyIHJlYWRfZnVuID0gZjsKKyAgICAgICAgICAg
IHZhciBhdXhfYnVmZmVyID0gcGFydGlhbF9hcmc7CisgICAgICAgICAgICB2YXIgbGV4YnVmID0g
cGFyYW07CisgICAgICAgICAgICB2YXIgcmVhZCA9IEN1cnJ5Ll8yKHJlYWRfZnVuLCBhdXhfYnVm
ZmVyLCBhdXhfYnVmZmVyLmxlbmd0aCk7CisgICAgICAgICAgICB2YXIgbiA9IHJlYWQgPiAwID8g
cmVhZCA6IChsZXhidWZbLyogbGV4X2VvZl9yZWFjaGVkICovOF0gPSAvKiB0cnVlICovMSwgMCk7
CisgICAgICAgICAgICBpZiAoKGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdICsgbiB8IDAp
ID4gbGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgaWYg
KCgobGV4YnVmWy8qIGxleF9idWZmZXJfbGVuICovMl0gLSBsZXhidWZbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdIHwgMCkgKyBuIHwgMCkgPD0gbGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXS5sZW5ndGgp
IHsKKyAgICAgICAgICAgICAgICBCeXRlcy5ibGl0KGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0s
IGxleGJ1ZlsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0s
IDAsIGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gbGV4YnVmWy8qIGxleF9zdGFydF9w
b3MgKi80XSB8IDApOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIHZhciBuZXdsZW4gPSBQZXJ2YXNpdmVzLm1pbigobGV4YnVmWy8qIGxleF9i
dWZmZXIgKi8xXS5sZW5ndGggPDwgMSksIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCk7CisgICAgICAg
ICAgICAgICAgaWYgKCgobGV4YnVmWy8qIGxleF9idWZmZXJfbGVuICovMl0gLSBsZXhidWZbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdIHwgMCkgKyBuIHwgMCkgPiBuZXdsZW4pIHsKKyAgICAgICAgICAg
ICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAiTGV4aW5nLmxleF9yZWZp
bGw6IGNhbm5vdCBncm93IGJ1ZmZlciIKKyAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgbmV3YnVmID0gQ2FtbF9zdHJpbmcuY2Ft
bF9jcmVhdGVfc3RyaW5nKG5ld2xlbik7CisgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdChsZXhi
dWZbLyogbGV4X2J1ZmZlciAqLzFdLCBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBuZXdi
dWYsIDAsIGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gbGV4YnVmWy8qIGxleF9zdGFy
dF9wb3MgKi80XSB8IDApOworICAgICAgICAgICAgICAgIGxleGJ1ZlsvKiBsZXhfYnVmZmVyICov
MV0gPSBuZXdidWY7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgdmFyIHMgPSBsZXhi
dWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdOworICAgICAgICAgICAgICBsZXhidWZbLyogbGV4X2Fi
c19wb3MgKi8zXSA9IGxleGJ1ZlsvKiBsZXhfYWJzX3BvcyAqLzNdICsgcyB8IDA7CisgICAgICAg
ICAgICAgIGxleGJ1ZlsvKiBsZXhfY3Vycl9wb3MgKi81XSA9IGxleGJ1ZlsvKiBsZXhfY3Vycl9w
b3MgKi81XSAtIHMgfCAwOworICAgICAgICAgICAgICBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdID0gMDsKKyAgICAgICAgICAgICAgbGV4YnVmWy8qIGxleF9sYXN0X3BvcyAqLzZdID0gbGV4
YnVmWy8qIGxleF9sYXN0X3BvcyAqLzZdIC0gcyB8IDA7CisgICAgICAgICAgICAgIGxleGJ1Zlsv
KiBsZXhfYnVmZmVyX2xlbiAqLzJdID0gbGV4YnVmWy8qIGxleF9idWZmZXJfbGVuICovMl0gLSBz
IHwgMDsKKyAgICAgICAgICAgICAgdmFyIHQgPSBsZXhidWZbLyogbGV4X21lbSAqLzldOworICAg
ICAgICAgICAgICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IHQubGVuZ3RoIC0gMSB8IDA7IGkg
PD0gaV9maW5pc2g7ICsraSl7CisgICAgICAgICAgICAgICAgdmFyIHYgPSB0W2ldOworICAgICAg
ICAgICAgICAgIGlmICh2ID49IDApIHsKKyAgICAgICAgICAgICAgICAgIHRbaV0gPSB2IC0gcyB8
IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBCeXRlcy5ibGl0KGF1eF9idWZmZXIsIDAsIGxl
eGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdLCBu
KTsKKyAgICAgICAgICAgIGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdID0gbGV4YnVmWy8q
IGxleF9idWZmZXJfbGVuICovMl0gKyBuIHwgMDsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAq
LzA7CisgICAgICAgICAgfSwKKyAgICAgICAgICAvKiBsZXhfYnVmZmVyICovbmV3IEFycmF5KDEw
MjQpLAorICAgICAgICAgIC8qIGxleF9idWZmZXJfbGVuICovMCwKKyAgICAgICAgICAvKiBsZXhf
YWJzX3BvcyAqLzAsCisgICAgICAgICAgLyogbGV4X3N0YXJ0X3BvcyAqLzAsCisgICAgICAgICAg
LyogbGV4X2N1cnJfcG9zICovMCwKKyAgICAgICAgICAvKiBsZXhfbGFzdF9wb3MgKi8wLAorICAg
ICAgICAgIC8qIGxleF9sYXN0X2FjdGlvbiAqLzAsCisgICAgICAgICAgLyogbGV4X2VvZl9yZWFj
aGVkIDogZmFsc2UgKi8wLAorICAgICAgICAgIC8qIGxleF9tZW0gOiBpbnQgYXJyYXkgKi9bXSwK
KyAgICAgICAgICAvKiBsZXhfc3RhcnRfcCAqL3plcm9fcG9zLAorICAgICAgICAgIC8qIGxleF9j
dXJyX3AgKi96ZXJvX3BvcworICAgICAgICBdOworfQorCitmdW5jdGlvbiBmcm9tX2NoYW5uZWwo
aWMpIHsKKyAgcmV0dXJuIGZyb21fZnVuY3Rpb24oZnVuY3Rpb24gKGJ1ZiwgbikgeworICAgICAg
ICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5pbnB1dChpYywgYnVmLCAwLCBuKTsKKyAgICAgICAg
ICAgIH0pOworfQorCitmdW5jdGlvbiBmcm9tX3N0cmluZyhzKSB7CisgIHJldHVybiAvKiByZWNv
cmQgKi9bCisgICAgICAgICAgLyogcmVmaWxsX2J1ZmYgKi9mdW5jdGlvbiAobGV4YnVmKSB7Cisg
ICAgICAgICAgICBsZXhidWZbLyogbGV4X2VvZl9yZWFjaGVkICovOF0gPSAvKiB0cnVlICovMTsK
KyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfSwKKyAgICAgICAgICAv
KiBsZXhfYnVmZmVyICovQnl0ZXMub2Zfc3RyaW5nKHMpLAorICAgICAgICAgIC8qIGxleF9idWZm
ZXJfbGVuICovcy5sZW5ndGgsCisgICAgICAgICAgLyogbGV4X2Fic19wb3MgKi8wLAorICAgICAg
ICAgIC8qIGxleF9zdGFydF9wb3MgKi8wLAorICAgICAgICAgIC8qIGxleF9jdXJyX3BvcyAqLzAs
CisgICAgICAgICAgLyogbGV4X2xhc3RfcG9zICovMCwKKyAgICAgICAgICAvKiBsZXhfbGFzdF9h
Y3Rpb24gKi8wLAorICAgICAgICAgIC8qIGxleF9lb2ZfcmVhY2hlZCA6IHRydWUgKi8xLAorICAg
ICAgICAgIC8qIGxleF9tZW0gOiBpbnQgYXJyYXkgKi9bXSwKKyAgICAgICAgICAvKiBsZXhfc3Rh
cnRfcCAqL3plcm9fcG9zLAorICAgICAgICAgIC8qIGxleF9jdXJyX3AgKi96ZXJvX3BvcworICAg
ICAgICBdOworfQorCitmdW5jdGlvbiBsZXhlbWUobGV4YnVmKSB7CisgIHZhciBsZW4gPSBsZXhi
dWZbLyogbGV4X2N1cnJfcG9zICovNV0gLSBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdIHwg
MDsKKyAgcmV0dXJuIEJ5dGVzLnN1Yl9zdHJpbmcobGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXSwg
bGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGVuKTsKK30KKworZnVuY3Rpb24gc3ViX2xl
eGVtZShsZXhidWYsIGkxLCBpMikgeworICB2YXIgbGVuID0gaTIgLSBpMSB8IDA7CisgIHJldHVy
biBCeXRlcy5zdWJfc3RyaW5nKGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGkxLCBsZW4pOwor
fQorCitmdW5jdGlvbiBzdWJfbGV4ZW1lX29wdChsZXhidWYsIGkxLCBpMikgeworICBpZiAoaTEg
Pj0gMCkgeworICAgIHZhciBsZW4gPSBpMiAtIGkxIHwgMDsKKyAgICByZXR1cm4gLyogU29tZSAq
L1tCeXRlcy5zdWJfc3RyaW5nKGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGkxLCBsZW4pXTsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogTm9uZSAqLzA7CisgIH0KK30KKworZnVuY3Rp
b24gc3ViX2xleGVtZV9jaGFyKGxleGJ1ZiwgaSkgeworICByZXR1cm4gQ2FtbF9ieXRlcy5nZXQo
bGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXSwgaSk7Cit9CisKK2Z1bmN0aW9uIHN1Yl9sZXhlbWVf
Y2hhcl9vcHQobGV4YnVmLCBpKSB7CisgIGlmIChpID49IDApIHsKKyAgICByZXR1cm4gLyogU29t
ZSAqL1tDYW1sX2J5dGVzLmdldChsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdLCBpKV07CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGxl
eGVtZV9jaGFyKGxleGJ1ZiwgaSkgeworICByZXR1cm4gQ2FtbF9ieXRlcy5nZXQobGV4YnVmWy8q
IGxleF9idWZmZXIgKi8xXSwgbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSArIGkgfCAwKTsK
K30KKworZnVuY3Rpb24gbGV4ZW1lX3N0YXJ0KGxleGJ1ZikgeworICByZXR1cm4gbGV4YnVmWy8q
IGxleF9zdGFydF9wICovMTBdWy8qIHBvc19jbnVtICovM107Cit9CisKK2Z1bmN0aW9uIGxleGVt
ZV9lbmQobGV4YnVmKSB7CisgIHJldHVybiBsZXhidWZbLyogbGV4X2N1cnJfcCAqLzExXVsvKiBw
b3NfY251bSAqLzNdOworfQorCitmdW5jdGlvbiBsZXhlbWVfc3RhcnRfcChsZXhidWYpIHsKKyAg
cmV0dXJuIGxleGJ1ZlsvKiBsZXhfc3RhcnRfcCAqLzEwXTsKK30KKworZnVuY3Rpb24gbGV4ZW1l
X2VuZF9wKGxleGJ1ZikgeworICByZXR1cm4gbGV4YnVmWy8qIGxleF9jdXJyX3AgKi8xMV07Cit9
CisKK2Z1bmN0aW9uIG5ld19saW5lKGxleGJ1ZikgeworICB2YXIgbGNwID0gbGV4YnVmWy8qIGxl
eF9jdXJyX3AgKi8xMV07CisgIGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdID0gLyogcmVjb3Jk
ICovWworICAgIC8qIHBvc19mbmFtZSAqL2xjcFsvKiBwb3NfZm5hbWUgKi8wXSwKKyAgICAvKiBw
b3NfbG51bSAqL2xjcFsvKiBwb3NfbG51bSAqLzFdICsgMSB8IDAsCisgICAgLyogcG9zX2JvbCAq
L2xjcFsvKiBwb3NfY251bSAqLzNdLAorICAgIC8qIHBvc19jbnVtICovbGNwWy8qIHBvc19jbnVt
ICovM10KKyAgXTsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gZmx1c2hfaW5w
dXQobGIpIHsKKyAgbGJbLyogbGV4X2N1cnJfcG9zICovNV0gPSAwOworICBsYlsvKiBsZXhfYWJz
X3BvcyAqLzNdID0gMDsKKyAgdmFyIGluaXQgPSBsYlsvKiBsZXhfY3Vycl9wICovMTFdOworICBs
YlsvKiBsZXhfY3Vycl9wICovMTFdID0gLyogcmVjb3JkICovWworICAgIC8qIHBvc19mbmFtZSAq
L2luaXRbLyogcG9zX2ZuYW1lICovMF0sCisgICAgLyogcG9zX2xudW0gKi9pbml0Wy8qIHBvc19s
bnVtICovMV0sCisgICAgLyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJdLAorICAgIC8q
IHBvc19jbnVtICovMAorICBdOworICBsYlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdID0gMDsKKyAg
cmV0dXJuIC8qICgpICovMDsKK30KKwordmFyIGR1bW15X3BvcyA9IC8qIHJlY29yZCAqL1sKKyAg
LyogcG9zX2ZuYW1lICovIiIsCisgIC8qIHBvc19sbnVtICovMCwKKyAgLyogcG9zX2JvbCAqLzAs
CisgIC8qIHBvc19jbnVtICovLTEKK107CisKK2V4cG9ydHMuZHVtbXlfcG9zICAgICAgICAgICA9
IGR1bW15X3BvczsKK2V4cG9ydHMuZnJvbV9jaGFubmVsICAgICAgICA9IGZyb21fY2hhbm5lbDsK
K2V4cG9ydHMuZnJvbV9zdHJpbmcgICAgICAgICA9IGZyb21fc3RyaW5nOworZXhwb3J0cy5mcm9t
X2Z1bmN0aW9uICAgICAgID0gZnJvbV9mdW5jdGlvbjsKK2V4cG9ydHMubGV4ZW1lICAgICAgICAg
ICAgICA9IGxleGVtZTsKK2V4cG9ydHMubGV4ZW1lX2NoYXIgICAgICAgICA9IGxleGVtZV9jaGFy
OworZXhwb3J0cy5sZXhlbWVfc3RhcnQgICAgICAgID0gbGV4ZW1lX3N0YXJ0OworZXhwb3J0cy5s
ZXhlbWVfZW5kICAgICAgICAgID0gbGV4ZW1lX2VuZDsKK2V4cG9ydHMubGV4ZW1lX3N0YXJ0X3Ag
ICAgICA9IGxleGVtZV9zdGFydF9wOworZXhwb3J0cy5sZXhlbWVfZW5kX3AgICAgICAgID0gbGV4
ZW1lX2VuZF9wOworZXhwb3J0cy5uZXdfbGluZSAgICAgICAgICAgID0gbmV3X2xpbmU7CitleHBv
cnRzLmZsdXNoX2lucHV0ICAgICAgICAgPSBmbHVzaF9pbnB1dDsKK2V4cG9ydHMuc3ViX2xleGVt
ZSAgICAgICAgICA9IHN1Yl9sZXhlbWU7CitleHBvcnRzLnN1Yl9sZXhlbWVfb3B0ICAgICAgPSBz
dWJfbGV4ZW1lX29wdDsKK2V4cG9ydHMuc3ViX2xleGVtZV9jaGFyICAgICA9IHN1Yl9sZXhlbWVf
Y2hhcjsKK2V4cG9ydHMuc3ViX2xleGVtZV9jaGFyX29wdCA9IHN1Yl9sZXhlbWVfY2hhcl9vcHQ7
CitleHBvcnRzLmVuZ2luZSAgICAgICAgICAgICAgPSBlbmdpbmU7CitleHBvcnRzLm5ld19lbmdp
bmUgICAgICAgICAgPSBuZXdfZW5naW5lOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8v
IGVuZCBvZiBsZXhpbmcuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsK
KworCisgIF9yZWdpc3RyeVsnbGliJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRz
ID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBsaWIuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBi
eSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3Vz
ZSBzdHJpY3QnOworCit2YXIgJCRBcnJheSAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1w
bGF0Zm9ybS9saWIvanMvYXJyYXkiKTsKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJl
cXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyIEludDMyICAgICAgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2ludDMyIik7Cit2YXIgJCRTdHJp
bmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvc3RyaW5nIik7
Cit2YXIgQmlnYXJyYXkgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvYmlnYXJyYXkiKTsKK3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOwordmFyIENhbWxfYXJyYXkgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1sX2lu
dDY0ICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2ludDY0
Iik7Cit2YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvcGVydmFzaXZlcyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWly
ZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0
aW9uIHJlcGVhdChfbiwgZiwgeCkgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG4gPSBfbjsK
KyAgICBpZiAobikgeworICAgICAgQ3VycnkuXzEoZiwgeCk7CisgICAgICBfbiA9IG4gLSAxIHwg
MDsKKyAgICAgIGNvbnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgfQorICB9OworfQorCit2YXIgRnVuID0gLyogbW9kdWxlICov
Wy8qIHJlcGVhdCAqL3JlcGVhdF07CisKK2Z1bmN0aW9uIG1ha2UobiwgeCkgeworICBpZiAobikg
eworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIHgsCisgICAgICAgICAgICBtYWtl
KG4gLSAxIHwgMCwgeCkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAv
KiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gdGFibGUkcHJpbWUoaSwgbiwgZikgeworICBp
ZiAoaSA9PT0gbikgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgQ3VycnkuXzEoZiwgaSksCisgICAgICAgICAg
ICB0YWJsZSRwcmltZShpICsgMSB8IDAsIG4sIGYpCisgICAgICAgICAgXTsKKyAgfQorfQorCitm
dW5jdGlvbiB0YWJsZShuLCBmKSB7CisgIHJldHVybiB0YWJsZSRwcmltZSgwLCBuLCBmKTsKK30K
KworZnVuY3Rpb24gdGFrZShuLCB4cykgeworICBpZiAobiAhPT0gMCkgeworICAgIGlmICh4cykg
eworICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICB4c1swXSwKKyAgICAgICAgICAgICAgICB0YWtlKG4gLSAxIHwgMCwgeHNbMV0pCisg
ICAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFBl
cnZhc2l2ZXMuZmFpbHdpdGgoInRha2UiKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgidGFrZSIpOworICAgIH0KKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGRyb3AoX24s
IF94cykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHhzID0gX3hzOworICAgIHZhciBuID0g
X247CisgICAgaWYgKG4gIT09IDApIHsKKyAgICAgIGlmICh4cykgeworICAgICAgICBpZiAobiA+
IDApIHsKKyAgICAgICAgICBfeHMgPSB4c1sxXTsKKyAgICAgICAgICBfbiA9IG4gLSAxIHwgMDsK
KyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImRyb3AiKTsKKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZh
aWx3aXRoKCJkcm9wIik7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJu
IHhzOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gbGFzdChfcGFyYW0pIHsKKyAgd2hpbGUo
dHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAg
IHZhciB4cyA9IHBhcmFtWzFdOworICAgICAgaWYgKHhzKSB7CisgICAgICAgIF9wYXJhbSA9IHhz
OworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIHJldHVybiBwYXJhbVswXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgibGFzdCIpOworICAgIH0KKyAgfTsKK30KKwor
ZnVuY3Rpb24gc3BsaXRfbGFzdChwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICB2YXIgeHMg
PSBwYXJhbVsxXTsKKyAgICB2YXIgeCA9IHBhcmFtWzBdOworICAgIGlmICh4cykgeworICAgICAg
dmFyIG1hdGNoID0gc3BsaXRfbGFzdCh4cyk7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAg
ICAgbWF0Y2hbMF0KKyAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgbWF0Y2hbMV0KKyAg
ICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICov
WworICAgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAgIHgKKyAgICAgICAgICAg
IF07CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRo
KCJzcGxpdF9sYXN0Iik7CisgIH0KK30KKworZnVuY3Rpb24gaW5kZXhfb2YoeCwgeHMpIHsKKyAg
dmFyIHgkMSA9IHg7CisgIHZhciBfeHMgPSB4czsKKyAgdmFyIF9pID0gMDsKKyAgd2hpbGUodHJ1
ZSkgeworICAgIHZhciBpID0gX2k7CisgICAgdmFyIHhzJDEgPSBfeHM7CisgICAgaWYgKHhzJDEp
IHsKKyAgICAgIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKHgkMSwgeHMkMVswXSkpIHsKKyAgICAg
ICAgcmV0dXJuIC8qIFNvbWUgKi9baV07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
X2kgPSBpICsgMSB8IDA7CisgICAgICAgIF94cyA9IHhzJDFbMV07CisgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8q
IE5vbmUgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gbGVuZ3RoKHhzKSB7CisgIHZh
ciBfeHMgPSB4czsKKyAgdmFyIF9uID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBuID0g
X247CisgICAgdmFyIHhzJDEgPSBfeHM7CisgICAgaWYgKHhzJDEpIHsKKyAgICAgIGlmIChuIDwg
SW50MzIubWF4X2ludCkgeworICAgICAgICBfbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgX3hzID0g
eHMkMVsxXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgibGVuZ3RoIik7CisgICAg
ICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIG47CisgICAgfQorICB9OworfQor
CitmdW5jdGlvbiBudGgoX3hzLCBfbikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG4gPSBf
bjsKKyAgICB2YXIgeHMgPSBfeHM7CisgICAgaWYgKG4gIT09IDApIHsKKyAgICAgIGlmICh4cykg
eworICAgICAgICBpZiAobiA+IDApIHsKKyAgICAgICAgICBfbiA9IG4gLSAxIHwgMDsKKyAgICAg
ICAgICBfeHMgPSB4c1sxXTsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdp
dGgoIm50aCIpOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0
dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoIm50aCIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNl
IGlmICh4cykgeworICAgICAgcmV0dXJuIHhzWzBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJudGgiKTsKKyAgICB9CisgIH07Cit9CisKK2Z1
bmN0aW9uIHRha2UkMShuLCB4cykgeworICBpZiAobiAhPT0gMCkgeworICAgIGlmICh4cykgewor
ICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICB4c1swXSwKKyAgICAgICAgICAgICAgICB0YWtlJDEobiAtIDEgfCAwLCB4c1sxXSkKKyAg
ICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUGVy
dmFzaXZlcy5mYWlsd2l0aCgidGFrZSIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJ0YWtlIik7CisgICAgfQorICB9CisgIGVs
c2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gZHJvcCQxKF9u
LCBfeHMpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciB4cyA9IF94czsKKyAgICB2YXIgbiA9
IF9uOworICAgIGlmIChuICE9PSAwKSB7CisgICAgICBpZiAoeHMpIHsKKyAgICAgICAgaWYgKG4g
PiAwKSB7CisgICAgICAgICAgX3hzID0geHNbMV07CisgICAgICAgICAgX24gPSBuIC0gMSB8IDA7
CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJkcm9wIik7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5m
YWlsd2l0aCgiZHJvcCIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biB4czsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1ha2UkMShuLCB4KSB7CisgIGlmIChu
IDwgMCB8fCBDYW1sX2ludDY0Lmd0KENhbWxfaW50NjQub2ZfaW50MzIobiksIENhbWxfaW50NjQu
b2ZfaW50MzIoUGVydmFzaXZlcy5tYXhfaW50KSkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQXJy
YXkzMi5tYWtlIgorICAgICAgICBdOworICB9CisgIHJldHVybiBDYW1sX2FycmF5LmNhbWxfbWFr
ZV92ZWN0KG4sIHgpOworfQorCitmdW5jdGlvbiBsZW5ndGgkMShhKSB7CisgIHJldHVybiBhLmxl
bmd0aDsKK30KKworZnVuY3Rpb24gaW5kZXhfb2ZfaW50MzIoaSkgeworICBpZiAoaSA8IDAgfHwg
Q2FtbF9pbnQ2NC5ndChDYW1sX2ludDY0Lm9mX2ludDMyKGkpLCBDYW1sX2ludDY0Lm9mX2ludDMy
KFBlcnZhc2l2ZXMubWF4X2ludCkpKSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBpOworICB9Cit9CisKK2Z1bmN0aW9uIGdldChhLCBpKSB7CisgIHJldHVybiBh
W2luZGV4X29mX2ludDMyKGkpXTsKK30KKworZnVuY3Rpb24gc2V0KGEsIGksIHgpIHsKKyAgYVtp
bmRleF9vZl9pbnQzMihpKV0gPSB4OworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlv
biBibGl0KGExLCBpMSwgYTIsIGkyLCBuKSB7CisgIHJldHVybiAkJEFycmF5LmJsaXQoYTEsIGlu
ZGV4X29mX2ludDMyKGkxKSwgYTIsIGluZGV4X29mX2ludDMyKGkyKSwgaW5kZXhfb2ZfaW50MzIo
bikpOworfQorCitmdW5jdGlvbiBjcmVhdGUoa2luZCwgbGF5b3V0LCBuKSB7CisgIGlmIChDYW1s
X2ludDY0Lmx0KG4sIC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAg
ICAvKiBsbyAqLzAKKyAgICAgICAgXSkgfHwgQ2FtbF9pbnQ2NC5ndChuLCBDYW1sX2ludDY0Lm9m
X2ludDMyKFBlcnZhc2l2ZXMubWF4X2ludCkpKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkJpZ2Fy
cmF5LkFycmF5MV82NC5jcmVhdGUiCisgICAgICAgIF07CisgIH0KKyAgcmV0dXJuIEN1cnJ5Ll8z
KEJpZ2FycmF5LkFycmF5MVsvKiBjcmVhdGUgKi8wXSwga2luZCwgbGF5b3V0LCBuWzFdIHwgMCk7
Cit9CisKK2Z1bmN0aW9uIGRpbSgpIHsKKyAgcmV0dXJuIENhbWxfaW50NjQub2ZfaW50MzIoZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX2RpbV8xIG5vdCBpbXBs
ZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgICB9KCkpOworfQor
CitmdW5jdGlvbiBnZXQkMShfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHRocm93ICJjYW1sX2JhX2dldF8xIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3Jp
cHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2V0JDEoXywgXyQxLCBf
JDIpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2Jh
X3NldF8xIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAg
IH0oKTsKK30KKworZnVuY3Rpb24gc3ViKF8sIF8kMSwgXyQyKSB7CisgIHJldHVybiBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9zdWIgbm90IGltcGxlbWVudGVkIGJ5
IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBnZXQk
MihvLCB4KSB7CisgIGlmIChvKSB7CisgICAgcmV0dXJuIG9bMF07CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIHg7CisgIH0KK30KKworZnVuY3Rpb24gbWFwKGYsIHBhcmFtKSB7CisgIGlmIChw
YXJhbSkgeworICAgIHJldHVybiAvKiBTb21lICovW0N1cnJ5Ll8xKGYsIHBhcmFtWzBdKV07Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9u
IGFwcChmLCBwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gQ3VycnkuXzEoZiwg
cGFyYW1bMF0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30K
KwordmFyIE9wdGlvbiA9IC8qIG1vZHVsZSAqL1sKKyAgLyogZ2V0ICovZ2V0JDIsCisgIC8qIG1h
cCAqL21hcCwKKyAgLyogYXBwICovYXBwCitdOworCitmdW5jdGlvbiBsb2cyKG4pIHsKKyAgaWYg
KG4gPD0gMCkgeworICAgIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImxvZzIiKTsKKyAgfQorICB2YXIg
X2FjYyA9IDA7CisgIHZhciBfbiA9IG47CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbiQxID0g
X247CisgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgaWYgKG4kMSA9PT0gMSkgeworICAgICAgcmV0
dXJuIGFjYzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBfbiA9IChuJDEgPj4+IDEpOworICAg
ICAgX2FjYyA9IGFjYyArIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQor
ICB9OworfQorCitmdW5jdGlvbiBpc19wb3dlcl9vZl90d28obikgeworICBpZiAobiA8IDApIHsK
KyAgICBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJpc19wb3dlcl9vZl90d28iKTsKKyAgfQorICBpZiAo
biAhPT0gMCkgeworICAgIHJldHVybiArKChuICYgKG4gLSAxIHwgMCkpID09PSAwKTsKKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK3ZhciBJbnQgPSAv
KiBtb2R1bGUgKi9bCisgIC8qIGxvZzIgKi9sb2cyLAorICAvKiBpc19wb3dlcl9vZl90d28gKi9p
c19wb3dlcl9vZl90d28KK107CisKK2Z1bmN0aW9uIGJyZWFrdXAocywgbikgeworICB2YXIgbG9v
cCA9IGZ1bmN0aW9uIChpKSB7CisgICAgdmFyIGxlbiA9IFBlcnZhc2l2ZXMubWluKG4sIHMubGVu
Z3RoIC0gaSB8IDApOworICAgIGlmIChsZW4pIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgJCRTdHJpbmcuc3ViKHMsIGksIGxlbiksCisgICAgICAgICAgICAgIGxvb3Ao
aSArIGxlbiB8IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJl
dHVybiAvKiBbXSAqLzA7CisgICAgfQorICB9OworICByZXR1cm4gbG9vcCgwKTsKK30KKwordmFy
ICQkU3RyaW5nJDEgPSAvKiBtb2R1bGUgKi9bLyogYnJlYWt1cCAqL2JyZWFrdXBdOworCit2YXIg
TGlzdCA9IFsKKyAgbWFrZSwKKyAgdGFibGUsCisgIHRha2UsCisgIGRyb3AsCisgIGxhc3QsCisg
IHNwbGl0X2xhc3QsCisgIGluZGV4X29mCitdOworCit2YXIgTGlzdDMyID0gWworICBsZW5ndGgs
CisgIG50aCwKKyAgdGFrZSQxLAorICBkcm9wJDEKK107CisKK3ZhciBBcnJheTMyID0gWworICBt
YWtlJDEsCisgIGxlbmd0aCQxLAorICBnZXQsCisgIHNldCwKKyAgYmxpdAorXTsKKwordmFyIEJp
Z2FycmF5JDEgPSBbWworICAgIGNyZWF0ZSwKKyAgICBkaW0sCisgICAgZ2V0JDEsCisgICAgc2V0
JDEsCisgICAgc3ViCisgIF1dOworCitleHBvcnRzLkZ1biAgICAgID0gRnVuOworZXhwb3J0cy5M
aXN0ICAgICA9IExpc3Q7CitleHBvcnRzLkxpc3QzMiAgID0gTGlzdDMyOworZXhwb3J0cy5BcnJh
eTMyICA9IEFycmF5MzI7CitleHBvcnRzLkJpZ2FycmF5ID0gQmlnYXJyYXkkMTsKK2V4cG9ydHMu
T3B0aW9uICAgPSBPcHRpb247CitleHBvcnRzLkludCAgICAgID0gSW50OworZXhwb3J0cy4kJFN0
cmluZyA9ICQkU3RyaW5nJDE7CisvKiBCaWdhcnJheSBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8v
Ly8vLy8gZW5kIG9mIGxpYi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9
OworCisKKyAgX3JlZ2lzdHJ5WydsaXN0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBv
cnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBsaXN0LmpzIC8vLy8vLy8vCisndXNlIHN0cmlj
dCc7CisKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsK
K3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9vYmoiKTsKK3Zh
ciBQZXJ2YXNpdmVzICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFy
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucyIpOworCitmdW5jdGlvbiBsZW5ndGgobCkgeworICB2YXIgX2xlbiA9IDA7CisgIHZhciBf
cGFyYW0gPSBsOworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAg
IHZhciBsZW4gPSBfbGVuOworICAgIGlmIChwYXJhbSkgeworICAgICAgX3BhcmFtID0gcGFyYW1b
MV07CisgICAgICBfbGVuID0gbGVuICsgMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gbGVuOworICAgIH0KKyAgfTsKK30KKwor
ZnVuY3Rpb24gaGQocGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuIHBhcmFtWzBd
OworICB9CisgIGVsc2UgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAgICJoZCIKKyAgICAgICAgXTsKKyAgfQorfQorCitm
dW5jdGlvbiB0bChwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gcGFyYW1bMV07
CisgIH0KKyAgZWxzZSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmZhaWx1cmUsCisgICAgICAgICAgInRsIgorICAgICAgICBdOworICB9Cit9CisKK2Z1
bmN0aW9uIG50aChsLCBuKSB7CisgIGlmIChuIDwgMCkgeworICAgIHRocm93IFsKKyAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJM
aXN0Lm50aCIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgX2wgPSBsOworICAg
IHZhciBfbiA9IG47CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIG4kMSA9IF9uOworICAg
ICAgdmFyIGwkMSA9IF9sOworICAgICAgaWYgKGwkMSkgeworICAgICAgICBpZiAobiQxKSB7Cisg
ICAgICAgICAgX24gPSBuJDEgLSAxIHwgMDsKKyAgICAgICAgICBfbCA9IGwkMVsxXTsKKyAgICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgcmV0dXJuIGwkMVswXTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMu
ZmFpbHVyZSwKKyAgICAgICAgICAgICAgIm50aCIKKyAgICAgICAgICAgIF07CisgICAgICB9Cisg
ICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiByZXZfYXBwZW5kKF9sMSwgX2wyKSB7CisgIHdoaWxl
KHRydWUpIHsKKyAgICB2YXIgbDIgPSBfbDI7CisgICAgdmFyIGwxID0gX2wxOworICAgIGlmIChs
MSkgeworICAgICAgX2wyID0gLyogOjogKi9bCisgICAgICAgIGwxWzBdLAorICAgICAgICBsMgor
ICAgICAgXTsKKyAgICAgIF9sMSA9IGwxWzFdOworICAgICAgY29udGludWUgOworICAgICAgCisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGwyOworICAgIH0KKyAgfTsKK30KKworZnVu
Y3Rpb24gcmV2KGwpIHsKKyAgcmV0dXJuIHJldl9hcHBlbmQobCwgLyogW10gKi8wKTsKK30KKwor
ZnVuY3Rpb24gZmxhdHRlbihwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gUGVy
dmFzaXZlcy4kYXQocGFyYW1bMF0sIGZsYXR0ZW4ocGFyYW1bMV0pKTsKKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIG1hcChmLCBwYXJhbSkg
eworICBpZiAocGFyYW0pIHsKKyAgICB2YXIgciA9IEN1cnJ5Ll8xKGYsIHBhcmFtWzBdKTsKKyAg
ICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICByLAorICAgICAgICAgICAgbWFwKGYsIHBh
cmFtWzFdKQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIFtdICov
MDsKKyAgfQorfQorCitmdW5jdGlvbiBtYXBpKGksIGYsIHBhcmFtKSB7CisgIGlmIChwYXJhbSkg
eworICAgIHZhciByID0gQ3VycnkuXzIoZiwgaSwgcGFyYW1bMF0pOworICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgIHIsCisgICAgICAgICAgICBtYXBpKGkgKyAxIHwgMCwgZiwgcGFy
YW1bMV0pCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8w
OworICB9Cit9CisKK2Z1bmN0aW9uIG1hcGkkMShmLCBsKSB7CisgIHJldHVybiBtYXBpKDAsIGYs
IGwpOworfQorCitmdW5jdGlvbiByZXZfbWFwKGYsIGwpIHsKKyAgdmFyIF9hY2N1ID0gLyogW10g
Ki8wOworICB2YXIgX3BhcmFtID0gbDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9
IF9wYXJhbTsKKyAgICB2YXIgYWNjdSA9IF9hY2N1OworICAgIGlmIChwYXJhbSkgeworICAgICAg
X3BhcmFtID0gcGFyYW1bMV07CisgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICBDdXJy
eS5fMShmLCBwYXJhbVswXSksCisgICAgICAgIGFjY3UKKyAgICAgIF07CisgICAgICBjb250aW51
ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gYWNjdTsKKyAgICB9
CisgIH07Cit9CisKK2Z1bmN0aW9uIGl0ZXIoZiwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsK
KyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgaWYgKHBhcmFtKSB7CisgICAgICBDdXJyeS5f
MShmLCBwYXJhbVswXSk7CisgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgIGNvbnRpbnVl
IDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7Cisg
ICAgfQorICB9OworfQorCitmdW5jdGlvbiBpdGVyaShmLCBsKSB7CisgIHZhciBfaSA9IDA7Cisg
IHZhciBmJDEgPSBmOworICB2YXIgX3BhcmFtID0gbDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZh
ciBwYXJhbSA9IF9wYXJhbTsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChwYXJhbSkgeworICAg
ICAgQ3VycnkuXzIoZiQxLCBpLCBwYXJhbVswXSk7CisgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsK
KyAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQor
ICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1
bmN0aW9uIGZvbGRfbGVmdChmLCBfYWNjdSwgX2wpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZh
ciBsID0gX2w7CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAobCkgeworICAgICAgX2wg
PSBsWzFdOworICAgICAgX2FjY3UgPSBDdXJyeS5fMihmLCBhY2N1LCBsWzBdKTsKKyAgICAgIGNv
bnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBhY2N1Owor
ICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZm9sZF9yaWdodChmLCBsLCBhY2N1KSB7CisgIGlm
IChsKSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKGYsIGxbMF0sIGZvbGRfcmlnaHQoZiwgbFsxXSwg
YWNjdSkpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBhY2N1OworICB9Cit9CisKK2Z1bmN0
aW9uIG1hcDIoZiwgbDEsIGwyKSB7CisgIGlmIChsMSkgeworICAgIGlmIChsMikgeworICAgICAg
dmFyIHIgPSBDdXJyeS5fMihmLCBsMVswXSwgbDJbMF0pOworICAgICAgcmV0dXJuIC8qIDo6ICov
WworICAgICAgICAgICAgICByLAorICAgICAgICAgICAgICBtYXAyKGYsIGwxWzFdLCBsMlsxXSkK
KyAgICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAgICJMaXN0Lm1hcDIiCisgICAgICAgICAgXTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAobDIp
IHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxp
ZF9hcmd1bWVudCwKKyAgICAgICAgICAiTGlzdC5tYXAyIgorICAgICAgICBdOworICB9CisgIGVs
c2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gcmV2X21hcDIo
ZiwgbDEsIGwyKSB7CisgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgdmFyIF9sMSA9IGwxOwor
ICB2YXIgX2wyID0gbDI7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbDIkMSA9IF9sMjsKKyAg
ICB2YXIgbDEkMSA9IF9sMTsKKyAgICB2YXIgYWNjdSA9IF9hY2N1OworICAgIGlmIChsMSQxKSB7
CisgICAgICBpZiAobDIkMSkgeworICAgICAgICBfbDIgPSBsMiQxWzFdOworICAgICAgICBfbDEg
PSBsMSQxWzFdOworICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgIEN1cnJ5Ll8y
KGYsIGwxJDFbMF0sIGwyJDFbMF0pLAorICAgICAgICAgIGFjY3UKKyAgICAgICAgXTsKKyAgICAg
ICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0
aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJn
dW1lbnQsCisgICAgICAgICAgICAgICJMaXN0LnJldl9tYXAyIgorICAgICAgICAgICAgXTsKKyAg
ICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobDIkMSkgeworICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAgICJMaXN0LnJldl9tYXAyIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgcmV0dXJuIGFjY3U7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBpdGVyMihmLCBfbDEs
IF9sMikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGwyID0gX2wyOworICAgIHZhciBsMSA9
IF9sMTsKKyAgICBpZiAobDEpIHsKKyAgICAgIGlmIChsMikgeworICAgICAgICBDdXJyeS5fMihm
LCBsMVswXSwgbDJbMF0pOworICAgICAgICBfbDIgPSBsMlsxXTsKKyAgICAgICAgX2wxID0gbDFb
MV07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5p
bnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAiTGlzdC5pdGVyMiIKKyAgICAgICAgICAg
IF07CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGwyKSB7CisgICAgICB0aHJvdyBbCisg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAg
ICAgICAgICAgIkxpc3QuaXRlcjIiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZm9sZF9s
ZWZ0MihmLCBfYWNjdSwgX2wxLCBfbDIpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsMiA9
IF9sMjsKKyAgICB2YXIgbDEgPSBfbDE7CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAo
bDEpIHsKKyAgICAgIGlmIChsMikgeworICAgICAgICBfbDIgPSBsMlsxXTsKKyAgICAgICAgX2wx
ID0gbDFbMV07CisgICAgICAgIF9hY2N1ID0gQ3VycnkuXzMoZiwgYWNjdSwgbDFbMF0sIGwyWzBd
KTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmlu
dmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAgICJMaXN0LmZvbGRfbGVmdDIiCisgICAgICAg
ICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChsMikgeworICAgICAgdGhyb3cg
WworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwK
KyAgICAgICAgICAgICJMaXN0LmZvbGRfbGVmdDIiCisgICAgICAgICAgXTsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICByZXR1cm4gYWNjdTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZv
bGRfcmlnaHQyKGYsIGwxLCBsMiwgYWNjdSkgeworICBpZiAobDEpIHsKKyAgICBpZiAobDIpIHsK
KyAgICAgIHJldHVybiBDdXJyeS5fMyhmLCBsMVswXSwgbDJbMF0sIGZvbGRfcmlnaHQyKGYsIGwx
WzFdLCBsMlsxXSwgYWNjdSkpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IFsKKyAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgICAiTGlzdC5mb2xkX3JpZ2h0MiIKKyAgICAgICAgICBdOworICAgIH0KKyAgfQorICBl
bHNlIGlmIChsMikgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJMaXN0LmZvbGRfcmlnaHQyIgorICAg
ICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBhY2N1OworICB9Cit9CisKK2Z1bmN0
aW9uIGZvcl9hbGwocCwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0g
PSBfcGFyYW07CisgICAgaWYgKHBhcmFtKSB7CisgICAgICBpZiAoQ3VycnkuXzEocCwgcGFyYW1b
MF0pKSB7CisgICAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiBmYWxzZSAq
LzA7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIHRydWUgKi8x
OworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZXhpc3RzKHAsIF9wYXJhbSkgeworICB3aGls
ZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAg
ICAgaWYgKEN1cnJ5Ll8xKHAsIHBhcmFtWzBdKSkgeworICAgICAgICByZXR1cm4gLyogdHJ1ZSAq
LzE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07Cisg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZv
cl9hbGwyKHAsIF9sMSwgX2wyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbDIgPSBfbDI7
CisgICAgdmFyIGwxID0gX2wxOworICAgIGlmIChsMSkgeworICAgICAgaWYgKGwyKSB7CisgICAg
ICAgIGlmIChDdXJyeS5fMihwLCBsMVswXSwgbDJbMF0pKSB7CisgICAgICAgICAgX2wyID0gbDJb
MV07CisgICAgICAgICAgX2wxID0gbDFbMV07CisgICAgICAgICAgY29udGludWUgOworICAgICAg
ICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAvKiBmYWxz
ZSAqLzA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBb
CisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQs
CisgICAgICAgICAgICAgICJMaXN0LmZvcl9hbGwyIgorICAgICAgICAgICAgXTsKKyAgICAgIH0K
KyAgICB9CisgICAgZWxzZSBpZiAobDIpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTGlz
dC5mb3JfYWxsMiIKKyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biAvKiB0cnVlICovMTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGV4aXN0czIocCwgX2wx
LCBfbDIpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsMiA9IF9sMjsKKyAgICB2YXIgbDEg
PSBfbDE7CisgICAgaWYgKGwxKSB7CisgICAgICBpZiAobDIpIHsKKyAgICAgICAgaWYgKEN1cnJ5
Ll8yKHAsIGwxWzBdLCBsMlswXSkpIHsKKyAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgX2wyID0gbDJbMV07CisgICAgICAg
ICAgX2wxID0gbDFbMV07CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAg
ICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAg
ICAiTGlzdC5leGlzdHMyIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxz
ZSBpZiAobDIpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTGlzdC5leGlzdHMyIgorICAg
ICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsK
KyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1lbSh4LCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1
ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIGlm
IChDYW1sX29iai5jYW1sX2NvbXBhcmUocGFyYW1bMF0sIHgpKSB7CisgICAgICAgIF9wYXJhbSA9
IHBhcmFtWzFdOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICAgIH0KKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVu
Y3Rpb24gbWVtcSh4LCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9
IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIGlmIChwYXJhbVswXSA9PT0geCkgewor
ICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg
ICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAg
ICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9
CisgIH07Cit9CisKK2Z1bmN0aW9uIGFzc29jKHgsIF9wYXJhbSkgeworICB3aGlsZSh0cnVlKSB7
CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIG1h
dGNoID0gcGFyYW1bMF07CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9jb21wYXJlKG1hdGNoWzBd
LCB4KSkgeworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOwor
ICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gbWF0Y2hbMV07
CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMubm90X2ZvdW5kOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gYXNzcSh4LCBf
cGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBp
ZiAocGFyYW0pIHsKKyAgICAgIHZhciBtYXRjaCA9IHBhcmFtWzBdOworICAgICAgaWYgKG1hdGNo
WzBdID09PSB4KSB7CisgICAgICAgIHJldHVybiBtYXRjaFsxXTsKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBtZW1f
YXNzb2MoeCwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBfcGFy
YW07CisgICAgaWYgKHBhcmFtKSB7CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9jb21wYXJlKHBh
cmFtWzBdWzBdLCB4KSkgeworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29u
dGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4g
LyogdHJ1ZSAqLzE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8q
IGZhbHNlICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1lbV9hc3NxKHgsIF9wYXJh
bSkgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChw
YXJhbSkgeworICAgICAgaWYgKHBhcmFtWzBdWzBdID09PSB4KSB7CisgICAgICAgIHJldHVybiAv
KiB0cnVlICovMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBfcGFyYW0gPSBwYXJh
bVsxXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVu
Y3Rpb24gcmVtb3ZlX2Fzc29jKHgsIHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHZhciBs
ID0gcGFyYW1bMV07CisgICAgdmFyIHBhaXIgPSBwYXJhbVswXTsKKyAgICBpZiAoQ2FtbF9vYmou
Y2FtbF9jb21wYXJlKHBhaXJbMF0sIHgpKSB7CisgICAgICByZXR1cm4gLyogOjogKi9bCisgICAg
ICAgICAgICAgIHBhaXIsCisgICAgICAgICAgICAgIHJlbW92ZV9hc3NvYyh4LCBsKQorICAgICAg
ICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gbDsKKyAgICB9CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIFtdICovMDsKKyAgfQorfQorCitmdW5jdGlvbiByZW1v
dmVfYXNzcSh4LCBwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICB2YXIgbCA9IHBhcmFtWzFd
OworICAgIHZhciBwYWlyID0gcGFyYW1bMF07CisgICAgaWYgKHBhaXJbMF0gPT09IHgpIHsKKyAg
ICAgIHJldHVybiBsOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgcGFpciwKKyAgICAgICAgICAgICAgcmVtb3ZlX2Fzc3EoeCwgbCkKKyAg
ICAgICAgICAgIF07CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7
CisgIH0KK30KKworZnVuY3Rpb24gZmluZChwLCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgewor
ICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciB4ID0g
cGFyYW1bMF07CisgICAgICBpZiAoQ3VycnkuXzEocCwgeCkpIHsKKyAgICAgICAgcmV0dXJuIHg7
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgIH0KKyAgfTsK
K30KKworZnVuY3Rpb24gZmluZF9hbGwocCkgeworICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7
CisgICAgdmFyIF9hY2N1ID0gLyogW10gKi8wOworICAgIHZhciBfcGFyYW0gPSBwYXJhbTsKKyAg
ICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0kMSA9IF9wYXJhbTsKKyAgICAgIHZhciBh
Y2N1ID0gX2FjY3U7CisgICAgICBpZiAocGFyYW0kMSkgeworICAgICAgICB2YXIgbCA9IHBhcmFt
JDFbMV07CisgICAgICAgIHZhciB4ID0gcGFyYW0kMVswXTsKKyAgICAgICAgaWYgKEN1cnJ5Ll8x
KHAsIHgpKSB7CisgICAgICAgICAgX3BhcmFtID0gbDsKKyAgICAgICAgICBfYWNjdSA9IC8qIDo6
ICovWworICAgICAgICAgICAgeCwKKyAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICBdOworICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICBfcGFyYW0gPSBsOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAK
KyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiByZXZfYXBw
ZW5kKGFjY3UsIC8qIFtdICovMCk7CisgICAgICB9CisgICAgfTsKKyAgfTsKK30KKworZnVuY3Rp
b24gcGFydGl0aW9uKHAsIGwpIHsKKyAgdmFyIF95ZXMgPSAvKiBbXSAqLzA7CisgIHZhciBfbm8g
PSAvKiBbXSAqLzA7CisgIHZhciBfcGFyYW0gPSBsOworICB3aGlsZSh0cnVlKSB7CisgICAgdmFy
IHBhcmFtID0gX3BhcmFtOworICAgIHZhciBubyA9IF9ubzsKKyAgICB2YXIgeWVzID0gX3llczsK
KyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciBsJDEgPSBwYXJhbVsxXTsKKyAgICAgIHZhciB4
ID0gcGFyYW1bMF07CisgICAgICBpZiAoQ3VycnkuXzEocCwgeCkpIHsKKyAgICAgICAgX3BhcmFt
ID0gbCQxOworICAgICAgICBfeWVzID0gLyogOjogKi9bCisgICAgICAgICAgeCwKKyAgICAgICAg
ICB5ZXMKKyAgICAgICAgXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0K
KyAgICAgIGVsc2UgeworICAgICAgICBfcGFyYW0gPSBsJDE7CisgICAgICAgIF9ubyA9IC8qIDo6
ICovWworICAgICAgICAgIHgsCisgICAgICAgICAgbm8KKyAgICAgICAgXTsKKyAgICAgICAgY29u
dGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIHJldl9hcHBlbmQoeWVzLCAvKiBbXSAqLzAp
LAorICAgICAgICAgICAgICByZXZfYXBwZW5kKG5vLCAvKiBbXSAqLzApCisgICAgICAgICAgICBd
OworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3BsaXQocGFyYW0pIHsKKyAgaWYgKHBhcmFt
KSB7CisgICAgdmFyIG1hdGNoID0gcGFyYW1bMF07CisgICAgdmFyIG1hdGNoJDEgPSBzcGxpdChw
YXJhbVsxXSk7CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAgIG1hdGNoWzBdLAorICAgICAgICAgICAgICBtYXRjaCQxWzBdCisgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgIG1hdGNoWzFd
LAorICAgICAgICAgICAgICBtYXRjaCQxWzFdCisgICAgICAgICAgICBdCisgICAgICAgICAgXTsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAvKiBb
XSAqLzAsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1
bmN0aW9uIGNvbWJpbmUobDEsIGwyKSB7CisgIGlmIChsMSkgeworICAgIGlmIChsMikgeworICAg
ICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICAgICBsMVswXSwKKyAgICAgICAgICAgICAgICBsMlswXQorICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICBjb21iaW5lKGwxWzFdLCBsMlsxXSkKKyAgICAgICAgICAgIF07CisgICAg
fQorICAgIGVsc2UgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJMaXN0LmNvbWJpbmUiCisg
ICAgICAgICAgXTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAobDIpIHsKKyAgICB0aHJvdyBbCisg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAg
ICAgICAiTGlzdC5jb21iaW5lIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biAvKiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gbWVyZ2UoY21wLCBsMSwgbDIpIHsKKyAg
aWYgKGwxKSB7CisgICAgaWYgKGwyKSB7CisgICAgICB2YXIgaDIgPSBsMlswXTsKKyAgICAgIHZh
ciBoMSA9IGwxWzBdOworICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgaDEsIGgyKSA8PSAwKSB7Cisg
ICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBoMSwKKyAgICAgICAgICAg
ICAgICBtZXJnZShjbXAsIGwxWzFdLCBsMikKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDIs
CisgICAgICAgICAgICAgICAgbWVyZ2UoY21wLCBsMSwgbDJbMV0pCisgICAgICAgICAgICAgIF07
CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGwxOworICAgIH0KKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gbDI7CisgIH0KK30KKworZnVuY3Rpb24gY2hvcChfaywg
X2wpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsID0gX2w7CisgICAgdmFyIGsgPSBfazsK
KyAgICBpZiAoaykgeworICAgICAgaWYgKGwpIHsKKyAgICAgICAgX2wgPSBsWzFdOworICAgICAg
ICBfayA9IGsgLSAxIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0K
KyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgImxpc3QubWwiLAorICAgICAgICAgICAgICAgIDIyMywKKyAgICAgICAgICAgICAgICAx
MQorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIHJldHVybiBsOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3RhYmxl
X3NvcnQoY21wLCBsKSB7CisgIHZhciBzb3J0ID0gZnVuY3Rpb24gKG4sIGwpIHsKKyAgICB2YXIg
ZXhpdCA9IDA7CisgICAgaWYgKG4gIT09IDIpIHsKKyAgICAgIGlmIChuICE9PSAzKSB7CisgICAg
ICAgIGV4aXQgPSAxOworICAgICAgfQorICAgICAgZWxzZSBpZiAobCkgeworICAgICAgICB2YXIg
bWF0Y2ggPSBsWzFdOworICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICB2YXIgbWF0Y2gk
MSA9IG1hdGNoWzFdOworICAgICAgICAgIGlmIChtYXRjaCQxKSB7CisgICAgICAgICAgICB2YXIg
eDMgPSBtYXRjaCQxWzBdOworICAgICAgICAgICAgdmFyIHgyID0gbWF0Y2hbMF07CisgICAgICAg
ICAgICB2YXIgeDEgPSBsWzBdOworICAgICAgICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEsIHgy
KSA8PSAwKSB7CisgICAgICAgICAgICAgIGlmIChDdXJyeS5fMihjbXAsIHgyLCB4MykgPD0gMCkg
eworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDMpIDw9IDApIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKEN1cnJ5Ll8yKGNtcCwg
eDEsIHgzKSA8PSAwKSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIGlmIChDdXJyeS5fMihjbXAsIHgyLCB4MykgPD0gMCkgeworICAgICAgICAgICAgICBy
ZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAg
ICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhpdCA9
IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4
aXQgPSAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZXhpdCA9
IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGwpIHsKKyAgICAgIHZhciBtYXRjaCQy
ID0gbFsxXTsKKyAgICAgIGlmIChtYXRjaCQyKSB7CisgICAgICAgIHZhciB4MiQxID0gbWF0Y2gk
MlswXTsKKyAgICAgICAgdmFyIHgxJDEgPSBsWzBdOworICAgICAgICBpZiAoQ3VycnkuXzIoY21w
LCB4MSQxLCB4MiQxKSA8PSAwKSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICB4MiQxLAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIHgyJDEsCisg
ICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgeDEkMSwKKyAg
ICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4
aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGV4aXQgPSAxOworICAg
IH0KKyAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgdmFyIG4xID0gKG4gPj4gMSk7CisgICAg
ICB2YXIgbjIgPSBuIC0gbjEgfCAwOworICAgICAgdmFyIGwyID0gY2hvcChuMSwgbCk7CisgICAg
ICB2YXIgczEgPSByZXZfc29ydChuMSwgbCk7CisgICAgICB2YXIgczIgPSByZXZfc29ydChuMiwg
bDIpOworICAgICAgdmFyIF9sMSA9IHMxOworICAgICAgdmFyIF9sMiA9IHMyOworICAgICAgdmFy
IF9hY2N1ID0gLyogW10gKi8wOworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIgYWNj
dSA9IF9hY2N1OworICAgICAgICB2YXIgbDIkMSA9IF9sMjsKKyAgICAgICAgdmFyIGwxID0gX2wx
OworICAgICAgICBpZiAobDEpIHsKKyAgICAgICAgICBpZiAobDIkMSkgeworICAgICAgICAgICAg
dmFyIGgyID0gbDIkMVswXTsKKyAgICAgICAgICAgIHZhciBoMSA9IGwxWzBdOworICAgICAgICAg
ICAgaWYgKEN1cnJ5Ll8yKGNtcCwgaDEsIGgyKSA+IDApIHsKKyAgICAgICAgICAgICAgX2FjY3Ug
PSAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBoMSwKKyAgICAgICAgICAgICAgICBhY2N1Cisg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIF9sMSA9IGwxWzFdOworICAgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAg
aDIsCisgICAgICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
ICBfbDIgPSBsMiQxWzFdOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAg
IAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHJldHVybiByZXZfYXBwZW5kKGwxLCBhY2N1KTsKKyAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIHJldl9hcHBlbmQobDIkMSwgYWNjdSk7
CisgICAgICAgIH0KKyAgICAgIH07CisgICAgfQorICAgIAorICB9OworICB2YXIgcmV2X3NvcnQg
PSBmdW5jdGlvbiAobiwgbCkgeworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAobiAhPT0gMikg
eworICAgICAgaWYgKG4gIT09IDMpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAg
ICBlbHNlIGlmIChsKSB7CisgICAgICAgIHZhciBtYXRjaCA9IGxbMV07CisgICAgICAgIGlmICht
YXRjaCkgeworICAgICAgICAgIHZhciBtYXRjaCQxID0gbWF0Y2hbMV07CisgICAgICAgICAgaWYg
KG1hdGNoJDEpIHsKKyAgICAgICAgICAgIHZhciB4MyA9IG1hdGNoJDFbMF07CisgICAgICAgICAg
ICB2YXIgeDIgPSBtYXRjaFswXTsKKyAgICAgICAgICAgIHZhciB4MSA9IGxbMF07CisgICAgICAg
ICAgICBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDIpID4gMCkgeworICAgICAgICAgICAgICBpZiAo
Q3VycnkuXzIoY21wLCB4MiwgeDMpID4gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIo
Y21wLCB4MSwgeDMpID4gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDMpID4gMCkgeworICAgICAgICAgICAgICBy
ZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MiwgeDMp
ID4gMCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4
MywKKyAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYg
KGwpIHsKKyAgICAgIHZhciBtYXRjaCQyID0gbFsxXTsKKyAgICAgIGlmIChtYXRjaCQyKSB7Cisg
ICAgICAgIHZhciB4MiQxID0gbWF0Y2gkMlswXTsKKyAgICAgICAgdmFyIHgxJDEgPSBsWzBdOwor
ICAgICAgICBpZiAoQ3VycnkuXzIoY21wLCB4MSQxLCB4MiQxKSA+IDApIHsKKyAgICAgICAgICBy
ZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAgICAgICAgICAgICAg
ICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgeDIkMSwKKyAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgZXhpdCA9IDE7CisgICAgfQorICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICB2
YXIgbjEgPSAobiA+PiAxKTsKKyAgICAgIHZhciBuMiA9IG4gLSBuMSB8IDA7CisgICAgICB2YXIg
bDIgPSBjaG9wKG4xLCBsKTsKKyAgICAgIHZhciBzMSA9IHNvcnQobjEsIGwpOworICAgICAgdmFy
IHMyID0gc29ydChuMiwgbDIpOworICAgICAgdmFyIF9sMSA9IHMxOworICAgICAgdmFyIF9sMiA9
IHMyOworICAgICAgdmFyIF9hY2N1ID0gLyogW10gKi8wOworICAgICAgd2hpbGUodHJ1ZSkgewor
ICAgICAgICB2YXIgYWNjdSA9IF9hY2N1OworICAgICAgICB2YXIgbDIkMSA9IF9sMjsKKyAgICAg
ICAgdmFyIGwxID0gX2wxOworICAgICAgICBpZiAobDEpIHsKKyAgICAgICAgICBpZiAobDIkMSkg
eworICAgICAgICAgICAgdmFyIGgyID0gbDIkMVswXTsKKyAgICAgICAgICAgIHZhciBoMSA9IGwx
WzBdOworICAgICAgICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgaDEsIGgyKSA8PSAwKSB7CisgICAg
ICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAg
ICAgICAgICAgYWNjdQorICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBfbDEgPSBsMVsx
XTsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgIGgyLAorICAgICAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICAgICAgX2wyID0gbDIkMVsxXTsKKyAgICAgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMSwgYWNjdSk7CisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiByZXZfYXBw
ZW5kKGwyJDEsIGFjY3UpOworICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAgICAKKyAgfTsK
KyAgdmFyIGxlbiA9IGxlbmd0aChsKTsKKyAgaWYgKGxlbiA8IDIpIHsKKyAgICByZXR1cm4gbDsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gc29ydChsZW4sIGwpOworICB9Cit9CisKK2Z1bmN0
aW9uIHNvcnRfdW5pcShjbXAsIGwpIHsKKyAgdmFyIHNvcnQgPSBmdW5jdGlvbiAobiwgbCkgewor
ICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAobiAhPT0gMikgeworICAgICAgaWYgKG4gIT09IDMp
IHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIGlmIChsKSB7CisgICAg
ICAgIHZhciBtYXRjaCA9IGxbMV07CisgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgIHZh
ciBtYXRjaCQxID0gbWF0Y2hbMV07CisgICAgICAgICAgaWYgKG1hdGNoJDEpIHsKKyAgICAgICAg
ICAgIHZhciB4MyA9IG1hdGNoJDFbMF07CisgICAgICAgICAgICB2YXIgeDIgPSBtYXRjaFswXTsK
KyAgICAgICAgICAgIHZhciB4MSA9IGxbMF07CisgICAgICAgICAgICB2YXIgYyA9IEN1cnJ5Ll8y
KGNtcCwgeDEsIHgyKTsKKyAgICAgICAgICAgIGlmIChjKSB7CisgICAgICAgICAgICAgIGlmIChj
IDwgMCkgeworICAgICAgICAgICAgICAgIHZhciBjJDEgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7
CisgICAgICAgICAgICAgICAgaWYgKGMkMSkgeworICAgICAgICAgICAgICAgICAgaWYgKGMkMSA8
IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICov
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB2YXIgYyQyID0gQ3VycnkuXzIoY21w
LCB4MSwgeDMpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyQyKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGMkMiA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICov
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgdmFyIGMkMyA9IEN1cnJ5Ll8yKGNtcCwgeDEsIHgzKTsKKyAgICAgICAg
ICAgICAgICBpZiAoYyQzKSB7CisgICAgICAgICAgICAgICAgICBpZiAoYyQzIDwgMCkgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjJDQgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChjJDQpIHsKKyAgICAgICAgICAgICAgICAgICAgICBp
ZiAoYyQ0IDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8w
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
IHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgIHZhciBjJDUgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7CisgICAgICAg
ICAgICAgIGlmIChjJDUpIHsKKyAgICAgICAgICAgICAgICBpZiAoYyQ1IDwgMCkgeworICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlm
IChsKSB7CisgICAgICB2YXIgbWF0Y2gkMiA9IGxbMV07CisgICAgICBpZiAobWF0Y2gkMikgewor
ICAgICAgICB2YXIgeDIkMSA9IG1hdGNoJDJbMF07CisgICAgICAgIHZhciB4MSQxID0gbFswXTsK
KyAgICAgICAgdmFyIGMkNiA9IEN1cnJ5Ll8yKGNtcCwgeDEkMSwgeDIkMSk7CisgICAgICAgIGlm
IChjJDYpIHsKKyAgICAgICAgICBpZiAoYyQ2IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MiQxLAorICAgICAgICAgICAgICAgICAg
ICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgeDIkMSwKKyAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJu
IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICBleGl0ID0gMTsKKyAgICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIHZhciBuMSA9
IChuID4+IDEpOworICAgICAgdmFyIG4yID0gbiAtIG4xIHwgMDsKKyAgICAgIHZhciBsMiA9IGNo
b3AobjEsIGwpOworICAgICAgdmFyIHMxID0gcmV2X3NvcnQobjEsIGwpOworICAgICAgdmFyIHMy
ID0gcmV2X3NvcnQobjIsIGwyKTsKKyAgICAgIHZhciBfbDEgPSBzMTsKKyAgICAgIHZhciBfbDIg
PSBzMjsKKyAgICAgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgICAgIHdoaWxlKHRydWUpIHsK
KyAgICAgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICAgICAgdmFyIGwyJDEgPSBfbDI7CisgICAg
ICAgIHZhciBsMSA9IF9sMTsKKyAgICAgICAgaWYgKGwxKSB7CisgICAgICAgICAgaWYgKGwyJDEp
IHsKKyAgICAgICAgICAgIHZhciB0MiA9IGwyJDFbMV07CisgICAgICAgICAgICB2YXIgaDIgPSBs
MiQxWzBdOworICAgICAgICAgICAgdmFyIHQxID0gbDFbMV07CisgICAgICAgICAgICB2YXIgaDEg
PSBsMVswXTsKKyAgICAgICAgICAgIHZhciBjJDcgPSBDdXJyeS5fMihjbXAsIGgxLCBoMik7Cisg
ICAgICAgICAgICBpZiAoYyQ3KSB7CisgICAgICAgICAgICAgIGlmIChjJDcgPiAwKSB7CisgICAg
ICAgICAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIGgxLAorICAg
ICAgICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAg
X2wxID0gdDE7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9h
Y2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBoMiwKKyAgICAgICAgICAgICAgICAg
IGFjY3UKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIF9sMiA9IHQyOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9hY2N1
ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAgICAgYWNjdQor
ICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBfbDIgPSB0MjsKKyAgICAgICAgICAgICAg
X2wxID0gdDE7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0
dXJuIHJldl9hcHBlbmQobDEsIGFjY3UpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMiQxLCBhY2N1KTsKKyAgICAg
ICAgfQorICAgICAgfTsKKyAgICB9CisgICAgCisgIH07CisgIHZhciByZXZfc29ydCA9IGZ1bmN0
aW9uIChuLCBsKSB7CisgICAgdmFyIGV4aXQgPSAwOworICAgIGlmIChuICE9PSAyKSB7CisgICAg
ICBpZiAobiAhPT0gMykgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKGwpIHsKKyAgICAgICAgdmFyIG1hdGNoID0gbFsxXTsKKyAgICAgICAgaWYgKG1hdGNoKSB7
CisgICAgICAgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFsxXTsKKyAgICAgICAgICBpZiAobWF0Y2gk
MSkgeworICAgICAgICAgICAgdmFyIHgzID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICAgIHZhciB4
MiA9IG1hdGNoWzBdOworICAgICAgICAgICAgdmFyIHgxID0gbFswXTsKKyAgICAgICAgICAgIHZh
ciBjID0gQ3VycnkuXzIoY21wLCB4MSwgeDIpOworICAgICAgICAgICAgaWYgKGMpIHsKKyAgICAg
ICAgICAgICAgaWYgKGMgPiAwKSB7CisgICAgICAgICAgICAgICAgdmFyIGMkMSA9IEN1cnJ5Ll8y
KGNtcCwgeDIsIHgzKTsKKyAgICAgICAgICAgICAgICBpZiAoYyQxKSB7CisgICAgICAgICAgICAg
ICAgICBpZiAoYyQxID4gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8w
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjJDIg
PSBDdXJyeS5fMihjbXAsIHgxLCB4Myk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjJDIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICBpZiAoYyQyID4gMCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICov
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgYyQzID0gQ3VycnkuXzIoY21wLCB4MSwg
eDMpOworICAgICAgICAgICAgICAgIGlmIChjJDMpIHsKKyAgICAgICAgICAgICAgICAgIGlmIChj
JDMgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGMkNCA9IEN1cnJ5Ll8y
KGNtcCwgeDIsIHgzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMkNCkgeworICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjJDQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8w
CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIGMkNSA9IEN1cnJ5Ll8yKGNtcCwgeDIs
IHgzKTsKKyAgICAgICAgICAgICAgaWYgKGMkNSkgeworICAgICAgICAgICAgICAgIGlmIChjJDUg
PiAwKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAq
LzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
ICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAg
fQorICAgIGVsc2UgaWYgKGwpIHsKKyAgICAgIHZhciBtYXRjaCQyID0gbFsxXTsKKyAgICAgIGlm
IChtYXRjaCQyKSB7CisgICAgICAgIHZhciB4MiQxID0gbWF0Y2gkMlswXTsKKyAgICAgICAgdmFy
IHgxJDEgPSBsWzBdOworICAgICAgICB2YXIgYyQ2ID0gQ3VycnkuXzIoY21wLCB4MSQxLCB4MiQx
KTsKKyAgICAgICAgaWYgKGMkNikgeworICAgICAgICAgIGlmIChjJDYgPiAwKSB7CisgICAgICAg
ICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgIHgxJDEsCisgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAg
ICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICB4MiQxLAorICAgICAgICAg
ICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAg
ICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAg
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIGV4aXQgPSAxOworICAgIH0KKyAgICBpZiAoZXhpdCA9PT0gMSkgewor
ICAgICAgdmFyIG4xID0gKG4gPj4gMSk7CisgICAgICB2YXIgbjIgPSBuIC0gbjEgfCAwOworICAg
ICAgdmFyIGwyID0gY2hvcChuMSwgbCk7CisgICAgICB2YXIgczEgPSBzb3J0KG4xLCBsKTsKKyAg
ICAgIHZhciBzMiA9IHNvcnQobjIsIGwyKTsKKyAgICAgIHZhciBfbDEgPSBzMTsKKyAgICAgIHZh
ciBfbDIgPSBzMjsKKyAgICAgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgICAgIHdoaWxlKHRy
dWUpIHsKKyAgICAgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICAgICAgdmFyIGwyJDEgPSBfbDI7
CisgICAgICAgIHZhciBsMSA9IF9sMTsKKyAgICAgICAgaWYgKGwxKSB7CisgICAgICAgICAgaWYg
KGwyJDEpIHsKKyAgICAgICAgICAgIHZhciB0MiA9IGwyJDFbMV07CisgICAgICAgICAgICB2YXIg
aDIgPSBsMiQxWzBdOworICAgICAgICAgICAgdmFyIHQxID0gbDFbMV07CisgICAgICAgICAgICB2
YXIgaDEgPSBsMVswXTsKKyAgICAgICAgICAgIHZhciBjJDcgPSBDdXJyeS5fMihjbXAsIGgxLCBo
Mik7CisgICAgICAgICAgICBpZiAoYyQ3KSB7CisgICAgICAgICAgICAgIGlmIChjJDcgPCAwKSB7
CisgICAgICAgICAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIGgx
LAorICAgICAgICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
ICAgICAgX2wxID0gdDE7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBoMiwKKyAgICAgICAgICAg
ICAgICAgIGFjY3UKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIF9sMiA9IHQy
OworICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAgICAg
YWNjdQorICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBfbDIgPSB0MjsKKyAgICAgICAg
ICAgICAgX2wxID0gdDE7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAg
CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgcmV0dXJuIHJldl9hcHBlbmQobDEsIGFjY3UpOworICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMiQxLCBhY2N1KTsK
KyAgICAgICAgfQorICAgICAgfTsKKyAgICB9CisgICAgCisgIH07CisgIHZhciBsZW4gPSBsZW5n
dGgobCk7CisgIGlmIChsZW4gPCAyKSB7CisgICAgcmV0dXJuIGw7CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIHNvcnQobGVuLCBsKTsKKyAgfQorfQorCit2YXIgYXBwZW5kID0gUGVydmFzaXZl
cy4kYXQ7CisKK3ZhciBjb25jYXQgPSBmbGF0dGVuOworCit2YXIgZmlsdGVyID0gZmluZF9hbGw7
CisKK3ZhciBzb3J0ID0gc3RhYmxlX3NvcnQ7CisKK3ZhciBmYXN0X3NvcnQgPSBzdGFibGVfc29y
dDsKKworZXhwb3J0cy5sZW5ndGggICAgICAgPSBsZW5ndGg7CitleHBvcnRzLmhkICAgICAgICAg
ICA9IGhkOworZXhwb3J0cy50bCAgICAgICAgICAgPSB0bDsKK2V4cG9ydHMubnRoICAgICAgICAg
ID0gbnRoOworZXhwb3J0cy5yZXYgICAgICAgICAgPSByZXY7CitleHBvcnRzLmFwcGVuZCAgICAg
ICA9IGFwcGVuZDsKK2V4cG9ydHMucmV2X2FwcGVuZCAgID0gcmV2X2FwcGVuZDsKK2V4cG9ydHMu
Y29uY2F0ICAgICAgID0gY29uY2F0OworZXhwb3J0cy5mbGF0dGVuICAgICAgPSBmbGF0dGVuOwor
ZXhwb3J0cy5pdGVyICAgICAgICAgPSBpdGVyOworZXhwb3J0cy5pdGVyaSAgICAgICAgPSBpdGVy
aTsKK2V4cG9ydHMubWFwICAgICAgICAgID0gbWFwOworZXhwb3J0cy5tYXBpICAgICAgICAgPSBt
YXBpJDE7CitleHBvcnRzLnJldl9tYXAgICAgICA9IHJldl9tYXA7CitleHBvcnRzLmZvbGRfbGVm
dCAgICA9IGZvbGRfbGVmdDsKK2V4cG9ydHMuZm9sZF9yaWdodCAgID0gZm9sZF9yaWdodDsKK2V4
cG9ydHMuaXRlcjIgICAgICAgID0gaXRlcjI7CitleHBvcnRzLm1hcDIgICAgICAgICA9IG1hcDI7
CitleHBvcnRzLnJldl9tYXAyICAgICA9IHJldl9tYXAyOworZXhwb3J0cy5mb2xkX2xlZnQyICAg
PSBmb2xkX2xlZnQyOworZXhwb3J0cy5mb2xkX3JpZ2h0MiAgPSBmb2xkX3JpZ2h0MjsKK2V4cG9y
dHMuZm9yX2FsbCAgICAgID0gZm9yX2FsbDsKK2V4cG9ydHMuZXhpc3RzICAgICAgID0gZXhpc3Rz
OworZXhwb3J0cy5mb3JfYWxsMiAgICAgPSBmb3JfYWxsMjsKK2V4cG9ydHMuZXhpc3RzMiAgICAg
ID0gZXhpc3RzMjsKK2V4cG9ydHMubWVtICAgICAgICAgID0gbWVtOworZXhwb3J0cy5tZW1xICAg
ICAgICAgPSBtZW1xOworZXhwb3J0cy5maW5kICAgICAgICAgPSBmaW5kOworZXhwb3J0cy5maWx0
ZXIgICAgICAgPSBmaWx0ZXI7CitleHBvcnRzLmZpbmRfYWxsICAgICA9IGZpbmRfYWxsOworZXhw
b3J0cy5wYXJ0aXRpb24gICAgPSBwYXJ0aXRpb247CitleHBvcnRzLmFzc29jICAgICAgICA9IGFz
c29jOworZXhwb3J0cy5hc3NxICAgICAgICAgPSBhc3NxOworZXhwb3J0cy5tZW1fYXNzb2MgICAg
PSBtZW1fYXNzb2M7CitleHBvcnRzLm1lbV9hc3NxICAgICA9IG1lbV9hc3NxOworZXhwb3J0cy5y
ZW1vdmVfYXNzb2MgPSByZW1vdmVfYXNzb2M7CitleHBvcnRzLnJlbW92ZV9hc3NxICA9IHJlbW92
ZV9hc3NxOworZXhwb3J0cy5zcGxpdCAgICAgICAgPSBzcGxpdDsKK2V4cG9ydHMuY29tYmluZSAg
ICAgID0gY29tYmluZTsKK2V4cG9ydHMuc29ydCAgICAgICAgID0gc29ydDsKK2V4cG9ydHMuc3Rh
YmxlX3NvcnQgID0gc3RhYmxlX3NvcnQ7CitleHBvcnRzLmZhc3Rfc29ydCAgICA9IGZhc3Rfc29y
dDsKK2V4cG9ydHMuc29ydF91bmlxICAgID0gc29ydF91bmlxOworZXhwb3J0cy5tZXJnZSAgICAg
ICAgPSBtZXJnZTsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgbGlzdC5q
cyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5
WydtYXAnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8v
IHN0YXJ0IG9mIG1hcC5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAg
ICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0
aW9uIE1ha2UoZnVuYXJnKSB7CisgIHZhciBoZWlnaHQgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICBpZiAocGFyYW0pIHsKKyAgICAgIHJldHVybiBwYXJhbVs0XTsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH07CisgIHZhciBjcmVhdGUgPSBmdW5jdGlvbiAo
bCwgeCwgZCwgcikgeworICAgIHZhciBobCA9IGhlaWdodChsKTsKKyAgICB2YXIgaHIgPSBoZWln
aHQocik7CisgICAgcmV0dXJuIC8qIE5vZGUgKi9bCisgICAgICAgICAgICBsLAorICAgICAgICAg
ICAgeCwKKyAgICAgICAgICAgIGQsCisgICAgICAgICAgICByLAorICAgICAgICAgICAgaGwgPj0g
aHIgPyBobCArIDEgfCAwIDogaHIgKyAxIHwgMAorICAgICAgICAgIF07CisgIH07CisgIHZhciBz
aW5nbGV0b24gPSBmdW5jdGlvbiAoeCwgZCkgeworICAgIHJldHVybiAvKiBOb2RlICovWworICAg
ICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAgICAgICAgeCwKKyAgICAgICAgICAgIGQsCisg
ICAgICAgICAgICAvKiBFbXB0eSAqLzAsCisgICAgICAgICAgICAxCisgICAgICAgICAgXTsKKyAg
fTsKKyAgdmFyIGJhbCA9IGZ1bmN0aW9uIChsLCB4LCBkLCByKSB7CisgICAgdmFyIGhsID0gbCA/
IGxbNF0gOiAwOworICAgIHZhciBociA9IHIgPyByWzRdIDogMDsKKyAgICBpZiAoaGwgPiAoaHIg
KyAyIHwgMCkpIHsKKyAgICAgIGlmIChsKSB7CisgICAgICAgIHZhciBsciA9IGxbM107CisgICAg
ICAgIHZhciBsZCA9IGxbMl07CisgICAgICAgIHZhciBsdiA9IGxbMV07CisgICAgICAgIHZhciBs
bCA9IGxbMF07CisgICAgICAgIGlmIChoZWlnaHQobGwpID49IGhlaWdodChscikpIHsKKyAgICAg
ICAgICByZXR1cm4gY3JlYXRlKGxsLCBsdiwgbGQsIGNyZWF0ZShsciwgeCwgZCwgcikpOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgaWYgKGxyKSB7CisgICAgICAgICAgcmV0dXJuIGNyZWF0ZShj
cmVhdGUobGwsIGx2LCBsZCwgbHJbMF0pLCBsclsxXSwgbHJbMl0sIGNyZWF0ZShsclszXSwgeCwg
ZCwgcikpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHRocm93IFsKKyAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAor
ICAgICAgICAgICAgICAgICJNYXAuYmFsIgorICAgICAgICAgICAgICBdOworICAgICAgICB9Cisg
ICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAiTWFw
LmJhbCIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGhyID4g
KGhsICsgMiB8IDApKSB7CisgICAgICBpZiAocikgeworICAgICAgICB2YXIgcnIgPSByWzNdOwor
ICAgICAgICB2YXIgcmQgPSByWzJdOworICAgICAgICB2YXIgcnYgPSByWzFdOworICAgICAgICB2
YXIgcmwgPSByWzBdOworICAgICAgICBpZiAoaGVpZ2h0KHJyKSA+PSBoZWlnaHQocmwpKSB7Cisg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZShjcmVhdGUobCwgeCwgZCwgcmwpLCBydiwgcmQsIHJyKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChybCkgeworICAgICAgICAgIHJldHVybiBjcmVh
dGUoY3JlYXRlKGwsIHgsIGQsIHJsWzBdKSwgcmxbMV0sIHJsWzJdLCBjcmVhdGUocmxbM10sIHJ2
LCByZCwgcnIpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBb
CisgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVu
dCwKKyAgICAgICAgICAgICAgICAiTWFwLmJhbCIKKyAgICAgICAgICAgICAgXTsKKyAgICAgICAg
fQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAg
Ik1hcC5iYWwiCisgICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIHJldHVybiAvKiBOb2RlICovWworICAgICAgICAgICAgICBsLAorICAgICAgICAgICAgICB4
LAorICAgICAgICAgICAgICBkLAorICAgICAgICAgICAgICByLAorICAgICAgICAgICAgICBobCA+
PSBociA/IGhsICsgMSB8IDAgOiBociArIDEgfCAwCisgICAgICAgICAgICBdOworICAgIH0KKyAg
fTsKKyAgdmFyIGlzX2VtcHR5ID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7
CisgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJl
dHVybiAvKiB0cnVlICovMTsKKyAgICB9CisgIH07CisgIHZhciBhZGQgPSBmdW5jdGlvbiAoeCwg
ZGF0YSwgcGFyYW0pIHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107
CisgICAgICB2YXIgZCA9IHBhcmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAg
IHZhciBsID0gcGFyYW1bMF07CisgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21w
YXJlICovMF0sIHgsIHYpOworICAgICAgaWYgKGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7Cisg
ICAgICAgICAgcmV0dXJuIGJhbChhZGQoeCwgZGF0YSwgbCksIHYsIGQsIHIpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBiYWwobCwgdiwgZCwgYWRkKHgsIGRh
dGEsIHIpKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVy
biAvKiBOb2RlICovWworICAgICAgICAgICAgICAgIGwsCisgICAgICAgICAgICAgICAgeCwKKyAg
ICAgICAgICAgICAgICBkYXRhLAorICAgICAgICAgICAgICAgIHIsCisgICAgICAgICAgICAgICAg
cGFyYW1bNF0KKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICByZXR1cm4gLyogTm9kZSAqL1sKKyAgICAgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAg
ICAgICAgICAgICB4LAorICAgICAgICAgICAgICBkYXRhLAorICAgICAgICAgICAgICAvKiBFbXB0
eSAqLzAsCisgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgIF07CisgICAgfQorICB9OworICB2
YXIgZmluZCA9IGZ1bmN0aW9uICh4LCBfcGFyYW0pIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAg
ICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGMg
PSBDdXJyeS5fMihmdW5hcmdbLyogY29tcGFyZSAqLzBdLCB4LCBwYXJhbVsxXSk7CisgICAgICAg
IGlmIChjKSB7CisgICAgICAgICAgX3BhcmFtID0gYyA8IDAgPyBwYXJhbVswXSA6IHBhcmFtWzNd
OworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICByZXR1cm4gcGFyYW1bMl07CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91
bmQ7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIG1lbSA9IGZ1bmN0aW9uICh4LCBfcGFy
YW0pIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAg
ICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGMgPSBDdXJyeS5fMihmdW5hcmdbLyogY29tcGFy
ZSAqLzBdLCB4LCBwYXJhbVsxXSk7CisgICAgICAgIGlmIChjKSB7CisgICAgICAgICAgX3BhcmFt
ID0gYyA8IDAgPyBwYXJhbVswXSA6IHBhcmFtWzNdOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyog
dHJ1ZSAqLzE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1
cm4gLyogZmFsc2UgKi8wOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBtaW5fYmluZGlu
ZyA9IGZ1bmN0aW9uIChfcGFyYW0pIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFy
YW0gPSBfcGFyYW07CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGwgPSBwYXJhbVsw
XTsKKyAgICAgICAgaWYgKGwpIHsKKyAgICAgICAgICBfcGFyYW0gPSBsOworICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAg
ICAgICAgICAgICAgIHBhcmFtWzJdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25z
Lm5vdF9mb3VuZDsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgbWF4X2JpbmRpbmcgPSBm
dW5jdGlvbiAoX3BhcmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0g
X3BhcmFtOworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIHZhciByID0gcGFyYW1bM107Cisg
ICAgICAgIGlmIChyKSB7CisgICAgICAgICAgX3BhcmFtID0gcjsKKyAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0
dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgcGFyYW1bMV0sCisgICAgICAgICAg
ICAgICAgICBwYXJhbVsyXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3Rf
Zm91bmQ7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHJlbW92ZV9taW5fYmluZGluZyA9
IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGwgPSBwYXJh
bVswXTsKKyAgICAgIGlmIChsKSB7CisgICAgICAgIHJldHVybiBiYWwocmVtb3ZlX21pbl9iaW5k
aW5nKGwpLCBwYXJhbVsxXSwgcGFyYW1bMl0sIHBhcmFtWzNdKTsKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICByZXR1cm4gcGFyYW1bM107CisgICAgICB9CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52
YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJNYXAucmVtb3ZlX21pbl9lbHQiCisgICAgICAg
ICAgXTsKKyAgICB9CisgIH07CisgIHZhciByZW1vdmUgPSBmdW5jdGlvbiAoeCwgcGFyYW0pIHsK
KyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICB2YXIgZCA9
IHBhcmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsID0gcGFyYW1b
MF07CisgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJlICovMF0sIHgsIHYp
OworICAgICAgaWYgKGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgcmV0dXJu
IGJhbChyZW1vdmUoeCwgbCksIHYsIGQsIHIpOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgIHJldHVybiBiYWwobCwgdiwgZCwgcmVtb3ZlKHgsIHIpKTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciB0MSA9IGw7CisgICAgICAgIHZhciB0
MiA9IHI7CisgICAgICAgIGlmICh0MSkgeworICAgICAgICAgIGlmICh0MikgeworICAgICAgICAg
ICAgdmFyIG1hdGNoID0gbWluX2JpbmRpbmcodDIpOworICAgICAgICAgICAgcmV0dXJuIGJhbCh0
MSwgbWF0Y2hbMF0sIG1hdGNoWzFdLCByZW1vdmVfbWluX2JpbmRpbmcodDIpKTsKKyAgICAgICAg
ICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdDE7CisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiB0MjsKKyAgICAg
ICAgfQorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBFbXB0eSAq
LzA7CisgICAgfQorICB9OworICB2YXIgaXRlciA9IGZ1bmN0aW9uIChmLCBfcGFyYW0pIHsKKyAg
ICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICBpZiAocGFy
YW0pIHsKKyAgICAgICAgaXRlcihmLCBwYXJhbVswXSk7CisgICAgICAgIEN1cnJ5Ll8yKGYsIHBh
cmFtWzFdLCBwYXJhbVsyXSk7CisgICAgICAgIF9wYXJhbSA9IHBhcmFtWzNdOworICAgICAgICBj
b250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVy
biAvKiAoKSAqLzA7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIG1hcCA9IGZ1bmN0aW9u
IChmLCBwYXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGwkcHJpbWUgPSBtYXAo
ZiwgcGFyYW1bMF0pOworICAgICAgdmFyIGQkcHJpbWUgPSBDdXJyeS5fMShmLCBwYXJhbVsyXSk7
CisgICAgICB2YXIgciRwcmltZSA9IG1hcChmLCBwYXJhbVszXSk7CisgICAgICByZXR1cm4gLyog
Tm9kZSAqL1sKKyAgICAgICAgICAgICAgbCRwcmltZSwKKyAgICAgICAgICAgICAgcGFyYW1bMV0s
CisgICAgICAgICAgICAgIGQkcHJpbWUsCisgICAgICAgICAgICAgIHIkcHJpbWUsCisgICAgICAg
ICAgICAgIHBhcmFtWzRdCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHJldHVybiAvKiBFbXB0eSAqLzA7CisgICAgfQorICB9OworICB2YXIgbWFwaSA9IGZ1bmN0aW9u
IChmLCBwYXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsK
KyAgICAgIHZhciBsJHByaW1lID0gbWFwaShmLCBwYXJhbVswXSk7CisgICAgICB2YXIgZCRwcmlt
ZSA9IEN1cnJ5Ll8yKGYsIHYsIHBhcmFtWzJdKTsKKyAgICAgIHZhciByJHByaW1lID0gbWFwaShm
LCBwYXJhbVszXSk7CisgICAgICByZXR1cm4gLyogTm9kZSAqL1sKKyAgICAgICAgICAgICAgbCRw
cmltZSwKKyAgICAgICAgICAgICAgdiwKKyAgICAgICAgICAgICAgZCRwcmltZSwKKyAgICAgICAg
ICAgICAgciRwcmltZSwKKyAgICAgICAgICAgICAgcGFyYW1bNF0KKyAgICAgICAgICAgIF07Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIEVtcHR5ICovMDsKKyAgICB9CisgIH07
CisgIHZhciBmb2xkID0gZnVuY3Rpb24gKGYsIF9tLCBfYWNjdSkgeworICAgIHdoaWxlKHRydWUp
IHsKKyAgICAgIHZhciBhY2N1ID0gX2FjY3U7CisgICAgICB2YXIgbSA9IF9tOworICAgICAgaWYg
KG0pIHsKKyAgICAgICAgX2FjY3UgPSBDdXJyeS5fMyhmLCBtWzFdLCBtWzJdLCBmb2xkKGYsIG1b
MF0sIGFjY3UpKTsKKyAgICAgICAgX20gPSBtWzNdOworICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBhY2N1OworICAgICAg
fQorICAgIH07CisgIH07CisgIHZhciBmb3JfYWxsID0gZnVuY3Rpb24gKHAsIF9wYXJhbSkgewor
ICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICAgIGlmIChw
YXJhbSkgeworICAgICAgICBpZiAoQ3VycnkuXzIocCwgcGFyYW1bMV0sIHBhcmFtWzJdKSkgewor
ICAgICAgICAgIGlmIChmb3JfYWxsKHAsIHBhcmFtWzBdKSkgeworICAgICAgICAgICAgX3BhcmFt
ID0gcGFyYW1bM107CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8w
OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gLyogZmFsc2UgKi8wOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg
ICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBleGlz
dHMgPSBmdW5jdGlvbiAocCwgX3BhcmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFy
IHBhcmFtID0gX3BhcmFtOworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIGlmIChDdXJyeS5f
MihwLCBwYXJhbVsxXSwgcGFyYW1bMl0pKSB7CisgICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8x
OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGV4aXN0cyhwLCBwYXJhbVswXSkpIHsKKyAg
ICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgX3BhcmFtID0gcGFyYW1bM107CisgICAgICAgICAgY29udGludWUgOworICAgICAg
ICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8q
IGZhbHNlICovMDsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgYWRkX21pbl9iaW5kaW5n
ID0gZnVuY3Rpb24gKGssIHYsIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICByZXR1
cm4gYmFsKGFkZF9taW5fYmluZGluZyhrLCB2LCBwYXJhbVswXSksIHBhcmFtWzFdLCBwYXJhbVsy
XSwgcGFyYW1bM10pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzaW5nbGV0b24o
aywgdik7CisgICAgfQorICB9OworICB2YXIgYWRkX21heF9iaW5kaW5nID0gZnVuY3Rpb24gKGss
IHYsIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICByZXR1cm4gYmFsKHBhcmFtWzBd
LCBwYXJhbVsxXSwgcGFyYW1bMl0sIGFkZF9tYXhfYmluZGluZyhrLCB2LCBwYXJhbVszXSkpOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzaW5nbGV0b24oaywgdik7CisgICAgfQor
ICB9OworICB2YXIgam9pbiA9IGZ1bmN0aW9uIChsLCB2LCBkLCByKSB7CisgICAgaWYgKGwpIHsK
KyAgICAgIGlmIChyKSB7CisgICAgICAgIHZhciByaCA9IHJbNF07CisgICAgICAgIHZhciBsaCA9
IGxbNF07CisgICAgICAgIGlmIChsaCA+IChyaCArIDIgfCAwKSkgeworICAgICAgICAgIHJldHVy
biBiYWwobFswXSwgbFsxXSwgbFsyXSwgam9pbihsWzNdLCB2LCBkLCByKSk7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSBpZiAocmggPiAobGggKyAyIHwgMCkpIHsKKyAgICAgICAgICByZXR1cm4g
YmFsKGpvaW4obCwgdiwgZCwgclswXSksIHJbMV0sIHJbMl0sIHJbM10pOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBjcmVhdGUobCwgdiwgZCwgcik7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gYWRkX21heF9iaW5k
aW5nKHYsIGQsIGwpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBh
ZGRfbWluX2JpbmRpbmcodiwgZCwgcik7CisgICAgfQorICB9OworICB2YXIgY29uY2F0ID0gZnVu
Y3Rpb24gKHQxLCB0MikgeworICAgIGlmICh0MSkgeworICAgICAgaWYgKHQyKSB7CisgICAgICAg
IHZhciBtYXRjaCA9IG1pbl9iaW5kaW5nKHQyKTsKKyAgICAgICAgcmV0dXJuIGpvaW4odDEsIG1h
dGNoWzBdLCBtYXRjaFsxXSwgcmVtb3ZlX21pbl9iaW5kaW5nKHQyKSk7CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHQxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHJldHVybiB0MjsKKyAgICB9CisgIH07CisgIHZhciBjb25jYXRfb3Jfam9pbiA9IGZ1
bmN0aW9uICh0MSwgdiwgZCwgdDIpIHsKKyAgICBpZiAoZCkgeworICAgICAgcmV0dXJuIGpvaW4o
dDEsIHYsIGRbMF0sIHQyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gY29uY2F0
KHQxLCB0Mik7CisgICAgfQorICB9OworICB2YXIgc3BsaXQgPSBmdW5jdGlvbiAoeCwgcGFyYW0p
IHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICB2YXIg
ZCA9IHBhcmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsID0gcGFy
YW1bMF07CisgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJlICovMF0sIHgs
IHYpOworICAgICAgaWYgKGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgdmFy
IG1hdGNoID0gc3BsaXQoeCwgbCk7CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAg
ICAgICAgICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKKyAg
ICAgICAgICAgICAgICAgIGpvaW4obWF0Y2hbMl0sIHYsIGQsIHIpCisgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHNw
bGl0KHgsIHIpOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAg
ICAgIGpvaW4obCwgdiwgZCwgbWF0Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICBtYXRjaCQx
WzFdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMVsyXQorICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgICAgbCwKKyAgICAgICAgICAgICAgICAvKiBTb21lICovW2RdLAor
ICAgICAgICAgICAgICAgIHIKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIEVtcHR5
ICovMCwKKyAgICAgICAgICAgICAgLyogTm9uZSAqLzAsCisgICAgICAgICAgICAgIC8qIEVtcHR5
ICovMAorICAgICAgICAgICAgXTsKKyAgICB9CisgIH07CisgIHZhciBtZXJnZSA9IGZ1bmN0aW9u
IChmLCBzMSwgczIpIHsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHMxKSB7CisgICAgICB2
YXIgdjEgPSBzMVsxXTsKKyAgICAgIGlmIChzMVs0XSA+PSBoZWlnaHQoczIpKSB7CisgICAgICAg
IHZhciBtYXRjaCA9IHNwbGl0KHYxLCBzMik7CisgICAgICAgIHJldHVybiBjb25jYXRfb3Jfam9p
bihtZXJnZShmLCBzMVswXSwgbWF0Y2hbMF0pLCB2MSwgQ3VycnkuXzMoZiwgdjEsIC8qIFNvbWUg
Ki9bczFbMl1dLCBtYXRjaFsxXSksIG1lcmdlKGYsIHMxWzNdLCBtYXRjaFsyXSkpOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBl
bHNlIGlmIChzMikgeworICAgICAgZXhpdCA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
cmV0dXJuIC8qIEVtcHR5ICovMDsKKyAgICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAg
IGlmIChzMikgeworICAgICAgICB2YXIgdjIgPSBzMlsxXTsKKyAgICAgICAgdmFyIG1hdGNoJDEg
PSBzcGxpdCh2MiwgczEpOworICAgICAgICByZXR1cm4gY29uY2F0X29yX2pvaW4obWVyZ2UoZiwg
bWF0Y2gkMVswXSwgczJbMF0pLCB2MiwgQ3VycnkuXzMoZiwgdjIsIG1hdGNoJDFbMV0sIC8qIFNv
bWUgKi9bczJbMl1dKSwgbWVyZ2UoZiwgbWF0Y2gkMVsyXSwgczJbM10pKTsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgIm1hcC5tbCIsCisgICAgICAgICAgICAgICAgMjcwLAorICAgICAgICAgICAgICAgIDEwCisg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfQorICAgIAorICB9
OworICB2YXIgZmlsdGVyID0gZnVuY3Rpb24gKHAsIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7
CisgICAgICB2YXIgZCA9IHBhcmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAg
IHZhciBsJHByaW1lID0gZmlsdGVyKHAsIHBhcmFtWzBdKTsKKyAgICAgIHZhciBwdmQgPSBDdXJy
eS5fMihwLCB2LCBkKTsKKyAgICAgIHZhciByJHByaW1lID0gZmlsdGVyKHAsIHBhcmFtWzNdKTsK
KyAgICAgIGlmIChwdmQpIHsKKyAgICAgICAgcmV0dXJuIGpvaW4obCRwcmltZSwgdiwgZCwgciRw
cmltZSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGNvbmNhdChsJHBy
aW1lLCByJHByaW1lKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
LyogRW1wdHkgKi8wOworICAgIH0KKyAgfTsKKyAgdmFyIHBhcnRpdGlvbiA9IGZ1bmN0aW9uIChw
LCBwYXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGQgPSBwYXJhbVsyXTsKKyAg
ICAgIHZhciB2ID0gcGFyYW1bMV07CisgICAgICB2YXIgbWF0Y2ggPSBwYXJ0aXRpb24ocCwgcGFy
YW1bMF0pOworICAgICAgdmFyIGxmID0gbWF0Y2hbMV07CisgICAgICB2YXIgbHQgPSBtYXRjaFsw
XTsKKyAgICAgIHZhciBwdmQgPSBDdXJyeS5fMihwLCB2LCBkKTsKKyAgICAgIHZhciBtYXRjaCQx
ID0gcGFydGl0aW9uKHAsIHBhcmFtWzNdKTsKKyAgICAgIHZhciByZiA9IG1hdGNoJDFbMV07Cisg
ICAgICB2YXIgcnQgPSBtYXRjaCQxWzBdOworICAgICAgaWYgKHB2ZCkgeworICAgICAgICByZXR1
cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgam9pbihsdCwgdiwgZCwgcnQpLAorICAg
ICAgICAgICAgICAgIGNvbmNhdChsZiwgcmYpCisgICAgICAgICAgICAgIF07CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAg
IGNvbmNhdChsdCwgcnQpLAorICAgICAgICAgICAgICAgIGpvaW4obGYsIHYsIGQsIHJmKQorICAg
ICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAv
KiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAgICAgICAgICAv
KiBFbXB0eSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfQorICB9OworICB2YXIgY29uc19lbnVt
ID0gZnVuY3Rpb24gKF9tLCBfZSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBlID0g
X2U7CisgICAgICB2YXIgbSA9IF9tOworICAgICAgaWYgKG0pIHsKKyAgICAgICAgX2UgPSAvKiBN
b3JlICovWworICAgICAgICAgIG1bMV0sCisgICAgICAgICAgbVsyXSwKKyAgICAgICAgICBtWzNd
LAorICAgICAgICAgIGUKKyAgICAgICAgXTsKKyAgICAgICAgX20gPSBtWzBdOworICAgICAgICBj
b250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVy
biBlOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBjb21wYXJlID0gZnVuY3Rpb24gKGNt
cCwgbTEsIG0yKSB7CisgICAgdmFyIF9lMSA9IGNvbnNfZW51bShtMSwgLyogRW5kICovMCk7Cisg
ICAgdmFyIF9lMiA9IGNvbnNfZW51bShtMiwgLyogRW5kICovMCk7CisgICAgd2hpbGUodHJ1ZSkg
eworICAgICAgdmFyIGUyID0gX2UyOworICAgICAgdmFyIGUxID0gX2UxOworICAgICAgaWYgKGUx
KSB7CisgICAgICAgIGlmIChlMikgeworICAgICAgICAgIHZhciBjID0gQ3VycnkuXzIoZnVuYXJn
Wy8qIGNvbXBhcmUgKi8wXSwgZTFbMF0sIGUyWzBdKTsKKyAgICAgICAgICBpZiAoYyAhPT0gMCkg
eworICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgdmFyIGMkMSA9IEN1cnJ5Ll8yKGNtcCwgZTFbMV0sIGUyWzFdKTsKKyAgICAg
ICAgICAgIGlmIChjJDEgIT09IDApIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGMkMTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBfZTIgPSBjb25zX2Vu
dW0oZTJbMl0sIGUyWzNdKTsKKyAgICAgICAgICAgICAgX2UxID0gY29uc19lbnVtKGUxWzJdLCBl
MVszXSk7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
IHJldHVybiAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChlMikgeworICAg
ICAgICByZXR1cm4gLTE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIGVxdWFsID0gZnVuY3Rpb24gKGNtcCwgbTEs
IG0yKSB7CisgICAgdmFyIF9lMSA9IGNvbnNfZW51bShtMSwgLyogRW5kICovMCk7CisgICAgdmFy
IF9lMiA9IGNvbnNfZW51bShtMiwgLyogRW5kICovMCk7CisgICAgd2hpbGUodHJ1ZSkgeworICAg
ICAgdmFyIGUyID0gX2UyOworICAgICAgdmFyIGUxID0gX2UxOworICAgICAgaWYgKGUxKSB7Cisg
ICAgICAgIGlmIChlMikgeworICAgICAgICAgIGlmIChDdXJyeS5fMihmdW5hcmdbLyogY29tcGFy
ZSAqLzBdLCBlMVswXSwgZTJbMF0pKSB7CisgICAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8w
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChDdXJyeS5fMihjbXAsIGUxWzFdLCBl
MlsxXSkpIHsKKyAgICAgICAgICAgIF9lMiA9IGNvbnNfZW51bShlMlsyXSwgZTJbM10pOworICAg
ICAgICAgICAgX2UxID0gY29uc19lbnVtKGUxWzJdLCBlMVszXSk7CisgICAgICAgICAgICBjb250
aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgICB9Cisg
ICAgICB9CisgICAgICBlbHNlIGlmIChlMikgeworICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8w
OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAg
ICAgIH0KKyAgICB9OworICB9OworICB2YXIgY2FyZGluYWwgPSBmdW5jdGlvbiAocGFyYW0pIHsK
KyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHJldHVybiAoY2FyZGluYWwocGFyYW1bMF0pICsgMSB8
IDApICsgY2FyZGluYWwocGFyYW1bM10pIHwgMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgIH07CisgIHZhciBiaW5kaW5nc19hdXggPSBmdW5jdGlvbiAoX2Fj
Y3UsIF9wYXJhbSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBwYXJhbSA9IF9wYXJh
bTsKKyAgICAgIHZhciBhY2N1ID0gX2FjY3U7CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAg
X3BhcmFtID0gcGFyYW1bMF07CisgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAg
LyogdHVwbGUgKi9bCisgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAgICAgICAgIHBhcmFtWzJd
CisgICAgICAgICAgXSwKKyAgICAgICAgICBiaW5kaW5nc19hdXgoYWNjdSwgcGFyYW1bM10pCisg
ICAgICAgIF07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgcmV0dXJuIGFjY3U7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFy
IGJpbmRpbmdzID0gZnVuY3Rpb24gKHMpIHsKKyAgICByZXR1cm4gYmluZGluZ3NfYXV4KC8qIFtd
ICovMCwgcyk7CisgIH07CisgIHJldHVybiBbCisgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAg
ICAgICAgIGlzX2VtcHR5LAorICAgICAgICAgIG1lbSwKKyAgICAgICAgICBhZGQsCisgICAgICAg
ICAgc2luZ2xldG9uLAorICAgICAgICAgIHJlbW92ZSwKKyAgICAgICAgICBtZXJnZSwKKyAgICAg
ICAgICBjb21wYXJlLAorICAgICAgICAgIGVxdWFsLAorICAgICAgICAgIGl0ZXIsCisgICAgICAg
ICAgZm9sZCwKKyAgICAgICAgICBmb3JfYWxsLAorICAgICAgICAgIGV4aXN0cywKKyAgICAgICAg
ICBmaWx0ZXIsCisgICAgICAgICAgcGFydGl0aW9uLAorICAgICAgICAgIGNhcmRpbmFsLAorICAg
ICAgICAgIGJpbmRpbmdzLAorICAgICAgICAgIG1pbl9iaW5kaW5nLAorICAgICAgICAgIG1heF9i
aW5kaW5nLAorICAgICAgICAgIG1pbl9iaW5kaW5nLAorICAgICAgICAgIHNwbGl0LAorICAgICAg
ICAgIGZpbmQsCisgICAgICAgICAgbWFwLAorICAgICAgICAgIG1hcGkKKyAgICAgICAgXTsKK30K
KworZXhwb3J0cy5NYWtlID0gTWFrZTsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBl
bmQgb2YgbWFwLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKwor
ICBfcmVnaXN0cnlbJ251bWVyaWNfZXJyb3InXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4
cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIG51bWVyaWNfZXJyb3IuanMgLy8vLy8vLy8K
Ky8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElU
IFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9leGNlcHRpb25zID0gcmVxdWly
ZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZXhjZXB0aW9ucyIpOworCit2YXIgSW50ZWdlck92
ZXJmbG93ID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiTnVtZXJpY19lcnJvci5JbnRlZ2VyT3Zl
cmZsb3ciKTsKKwordmFyIEludGVnZXJEaXZpZGVCeVplcm8gPSBDYW1sX2V4Y2VwdGlvbnMuY3Jl
YXRlKCJOdW1lcmljX2Vycm9yLkludGVnZXJEaXZpZGVCeVplcm8iKTsKKwordmFyIEludmFsaWRD
b252ZXJzaW9uVG9JbnRlZ2VyID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiTnVtZXJpY19lcnJv
ci5JbnZhbGlkQ29udmVyc2lvblRvSW50ZWdlciIpOworCitleHBvcnRzLkludGVnZXJPdmVyZmxv
dyAgICAgICAgICAgID0gSW50ZWdlck92ZXJmbG93OworZXhwb3J0cy5JbnRlZ2VyRGl2aWRlQnla
ZXJvICAgICAgICA9IEludGVnZXJEaXZpZGVCeVplcm87CitleHBvcnRzLkludmFsaWRDb252ZXJz
aW9uVG9JbnRlZ2VyID0gSW52YWxpZENvbnZlcnNpb25Ub0ludGVnZXI7CisvKiBObyBzaWRlIGVm
ZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIG51bWVyaWNfZXJyb3IuanMgLy8vLy8vLy8KK8KgIMKg
IHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnb2JqJ10gPSBmdW5jdGlv
bigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBvYmouanMg
Ly8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIE1hcnNoYWwgICAgICAgICAgICAgICAgID0g
cmVxdWlyZSgiLi9tYXJzaGFsIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1
aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIGRvdWJsZV9maWVs
ZCh4LCBpKSB7CisgIHJldHVybiB4W2ldOworfQorCitmdW5jdGlvbiBzZXRfZG91YmxlX2ZpZWxk
KHgsIGksIHYpIHsKKyAgeFtpXSA9IHY7CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0
aW9uIG1hcnNoYWwoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJv
dyAiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVz
Y3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gdW5tYXJzaGFsKHN0
ciwgcG9zKSB7CisgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICBNYXJzaGFsLmZyb21f
Ynl0ZXMoc3RyLCBwb3MpLAorICAgICAgICAgIHBvcyArIE1hcnNoYWwudG90YWxfc2l6ZShzdHIs
IHBvcykgfCAwCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl9zbG90KHgpIHsK
KyAgdmFyIHNsb3QgPSB4Lmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmICh4LnRhZyB8IDApICE9PSAy
NDggJiYgeC5sZW5ndGggPj0gMSA/IHhbMF0gOiB4OworICB2YXIgbmFtZTsKKyAgaWYgKHNsb3Qu
bGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgc2xvdC50YWcgPT09IDI0OCkgeworICAgIG5hbWUgPSBz
bG90WzBdOworICB9CisgIGVsc2UgeworICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25z
Lm5vdF9mb3VuZDsKKyAgfQorICBpZiAobmFtZS50YWcgPT09IDI1MikgeworICAgIHJldHVybiBz
bG90OworICB9CisgIGVsc2UgeworICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5v
dF9mb3VuZDsKKyAgfQorfQorCitmdW5jdGlvbiBleHRlbnNpb25fbmFtZSh4KSB7CisgIHRyeSB7
CisgICAgdmFyIHNsb3QgPSBleHRlbnNpb25fc2xvdCh4KTsKKyAgICByZXR1cm4gc2xvdFswXTsK
KyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiT2JqLmV4dGVuc2lv
bl9uYW1lIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhu
OworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBleHRlbnNpb25faWQoeCkgeworICB0cnkgewor
ICAgIHZhciBzbG90ID0gZXh0ZW5zaW9uX3Nsb3QoeCk7CisgICAgcmV0dXJuIHNsb3RbMV07Cisg
IH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMubm90X2ZvdW5kKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgIk9iai5leHRlbnNpb25f
aWQiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47Cisg
ICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl9zbG90JDEoeCkgeworICB0cnkgewor
ICAgIHJldHVybiBleHRlbnNpb25fc2xvdCh4KTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBp
ZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCisgICAgICAgICAgICAiT2JqLmV4dGVuc2lvbl9zbG90IgorICAgICAgICAgIF07CisgICAg
fQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCit2YXIgZmly
c3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDA7CisKK3ZhciBsYXN0X25vbl9jb25z
dGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDU7CisKK3ZhciBsYXp5X3RhZyA9IDI0NjsKKwordmFy
IGNsb3N1cmVfdGFnID0gMjQ3OworCit2YXIgb2JqZWN0X3RhZyA9IDI0ODsKKwordmFyIGluZml4
X3RhZyA9IDI0OTsKKwordmFyIGZvcndhcmRfdGFnID0gMjUwOworCit2YXIgbm9fc2Nhbl90YWcg
PSAyNTE7CisKK3ZhciBhYnN0cmFjdF90YWcgPSAyNTE7CisKK3ZhciBzdHJpbmdfdGFnID0gMjUy
OworCit2YXIgZG91YmxlX3RhZyA9IDI1MzsKKwordmFyIGRvdWJsZV9hcnJheV90YWcgPSAyNTQ7
CisKK3ZhciBjdXN0b21fdGFnID0gMjU1OworCit2YXIgZmluYWxfdGFnID0gMjU1OworCit2YXIg
aW50X3RhZyA9IDEwMDA7CisKK3ZhciBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxOworCit2YXIgdW5h
bGlnbmVkX3RhZyA9IDEwMDI7CisKK2V4cG9ydHMuZG91YmxlX2ZpZWxkICAgICAgICAgICAgICAg
ICAgICAgICA9IGRvdWJsZV9maWVsZDsKK2V4cG9ydHMuc2V0X2RvdWJsZV9maWVsZCAgICAgICAg
ICAgICAgICAgICA9IHNldF9kb3VibGVfZmllbGQ7CitleHBvcnRzLmZpcnN0X25vbl9jb25zdGFu
dF9jb25zdHJ1Y3Rvcl90YWcgPSBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnOwor
ZXhwb3J0cy5sYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgID0gbGFzdF9ub25fY29u
c3RhbnRfY29uc3RydWN0b3JfdGFnOworZXhwb3J0cy5sYXp5X3RhZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gbGF6eV90YWc7CitleHBvcnRzLmNsb3N1cmVfdGFnICAgICAgICAgICAgICAg
ICAgICAgICAgPSBjbG9zdXJlX3RhZzsKK2V4cG9ydHMub2JqZWN0X3RhZyAgICAgICAgICAgICAg
ICAgICAgICAgICA9IG9iamVjdF90YWc7CitleHBvcnRzLmluZml4X3RhZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBpbmZpeF90YWc7CitleHBvcnRzLmZvcndhcmRfdGFnICAgICAgICAgICAg
ICAgICAgICAgICAgPSBmb3J3YXJkX3RhZzsKK2V4cG9ydHMubm9fc2Nhbl90YWcgICAgICAgICAg
ICAgICAgICAgICAgICA9IG5vX3NjYW5fdGFnOworZXhwb3J0cy5hYnN0cmFjdF90YWcgICAgICAg
ICAgICAgICAgICAgICAgID0gYWJzdHJhY3RfdGFnOworZXhwb3J0cy5zdHJpbmdfdGFnICAgICAg
ICAgICAgICAgICAgICAgICAgID0gc3RyaW5nX3RhZzsKK2V4cG9ydHMuZG91YmxlX3RhZyAgICAg
ICAgICAgICAgICAgICAgICAgICA9IGRvdWJsZV90YWc7CitleHBvcnRzLmRvdWJsZV9hcnJheV90
YWcgICAgICAgICAgICAgICAgICAgPSBkb3VibGVfYXJyYXlfdGFnOworZXhwb3J0cy5jdXN0b21f
dGFnICAgICAgICAgICAgICAgICAgICAgICAgID0gY3VzdG9tX3RhZzsKK2V4cG9ydHMuZmluYWxf
dGFnICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZpbmFsX3RhZzsKK2V4cG9ydHMuaW50X3Rh
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGludF90YWc7CitleHBvcnRzLm91dF9vZl9o
ZWFwX3RhZyAgICAgICAgICAgICAgICAgICAgPSBvdXRfb2ZfaGVhcF90YWc7CitleHBvcnRzLnVu
YWxpZ25lZF90YWcgICAgICAgICAgICAgICAgICAgICAgPSB1bmFsaWduZWRfdGFnOworZXhwb3J0
cy5leHRlbnNpb25fbmFtZSAgICAgICAgICAgICAgICAgICAgID0gZXh0ZW5zaW9uX25hbWU7Citl
eHBvcnRzLmV4dGVuc2lvbl9pZCAgICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25faWQ7
CitleHBvcnRzLmV4dGVuc2lvbl9zbG90ICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25f
c2xvdCQxOworZXhwb3J0cy5tYXJzaGFsICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbWFy
c2hhbDsKK2V4cG9ydHMudW5tYXJzaGFsICAgICAgICAgICAgICAgICAgICAgICAgICA9IHVubWFy
c2hhbDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2Ygb2JqLmpzIC8vLy8v
Ly8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ29vJ10g
PSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBv
ZiBvby5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbGludGVybmFsT08gPSBy
ZXF1aXJlKCIuL2NhbWxpbnRlcm5hbE9PIik7CisKK3ZhciBjb3B5ID0gQ2FtbGludGVybmFsT08u
Y29weTsKKwordmFyIG5ld19tZXRob2QgPSBDYW1saW50ZXJuYWxPTy5wdWJsaWNfbWV0aG9kX2xh
YmVsOworCit2YXIgcHVibGljX21ldGhvZF9sYWJlbCA9IENhbWxpbnRlcm5hbE9PLnB1YmxpY19t
ZXRob2RfbGFiZWw7CisKK2V4cG9ydHMuY29weSAgICAgICAgICAgICAgICA9IGNvcHk7CitleHBv
cnRzLm5ld19tZXRob2QgICAgICAgICAgPSBuZXdfbWV0aG9kOworZXhwb3J0cy5wdWJsaWNfbWV0
aG9kX2xhYmVsID0gcHVibGljX21ldGhvZF9sYWJlbDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisv
Ly8vLy8vLyBlbmQgb2Ygb28uanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAg
fTsKKworCisgIF9yZWdpc3RyeVsnb3BlcmF0b3JzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxl
dCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBvcGVyYXRvcnMuanMgLy8vLy8vLy8K
Ky8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElU
IFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgQmxvY2sgID0gcmVxdWlyZSgiYnMtcGxh
dGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2YXIgU291cmNlID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsK
KworZnVuY3Rpb24gaTMyX2NvbnN0KG4pIHsKKyAgcmV0dXJuIC8qIENvbnN0ICovQmxvY2suX18o
MTUsIFtTb3VyY2UuJGF0JGF0KC8qIEkzMiAqL0Jsb2NrLl9fKDAsIFtuWy8qIGl0ICovMV1dKSwg
blsvKiBhdCAqLzBdKV0pOworfQorCitmdW5jdGlvbiBpNjRfY29uc3QobikgeworICByZXR1cm4g
LyogQ29uc3QgKi9CbG9jay5fXygxNSwgW1NvdXJjZS4kYXQkYXQoLyogSTY0ICovQmxvY2suX18o
MSwgW25bLyogaXQgKi8xXV0pLCBuWy8qIGF0ICovMF0pXSk7Cit9CisKK2Z1bmN0aW9uIGYzMl9j
b25zdChuKSB7CisgIHJldHVybiAvKiBDb25zdCAqL0Jsb2NrLl9fKDE1LCBbU291cmNlLiRhdCRh
dCgvKiBGMzIgKi9CbG9jay5fXygyLCBbblsvKiBpdCAqLzFdXSksIG5bLyogYXQgKi8wXSldKTsK
K30KKworZnVuY3Rpb24gZjY0X2NvbnN0KG4pIHsKKyAgcmV0dXJuIC8qIENvbnN0ICovQmxvY2su
X18oMTUsIFtTb3VyY2UuJGF0JGF0KC8qIEY2NCAqL0Jsb2NrLl9fKDMsIFtuWy8qIGl0ICovMV1d
KSwgblsvKiBhdCAqLzBdKV0pOworfQorCitmdW5jdGlvbiBibG9jayh0cywgZXMpIHsKKyAgcmV0
dXJuIC8qIEJsb2NrICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgdHMsCisgICAgICAgICAg
ICBlcworICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBsb29wKHRzLCBlcykgeworICByZXR1
cm4gLyogTG9vcCAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgIHRzLAorICAgICAgICAgICAg
ZXMKKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gYnIoeCkgeworICByZXR1cm4gLyogQnIg
Ki9CbG9jay5fXygzLCBbeF0pOworfQorCitmdW5jdGlvbiBicl9pZih4KSB7CisgIHJldHVybiAv
KiBCcklmICovQmxvY2suX18oNCwgW3hdKTsKK30KKworZnVuY3Rpb24gYnJfdGFibGUoeHMsIHgp
IHsKKyAgcmV0dXJuIC8qIEJyVGFibGUgKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICB4cywK
KyAgICAgICAgICAgIHgKKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gaWZfKHRzLCBlczEs
IGVzMikgeworICByZXR1cm4gLyogSWYgKi9CbG9jay5fXygyLCBbCisgICAgICAgICAgICB0cywK
KyAgICAgICAgICAgIGVzMSwKKyAgICAgICAgICAgIGVzMgorICAgICAgICAgIF0pOworfQorCitm
dW5jdGlvbiBjYWxsKHgpIHsKKyAgcmV0dXJuIC8qIENhbGwgKi9CbG9jay5fXyg2LCBbeF0pOwor
fQorCitmdW5jdGlvbiBjYWxsX2luZGlyZWN0KHgpIHsKKyAgcmV0dXJuIC8qIENhbGxJbmRpcmVj
dCAqL0Jsb2NrLl9fKDcsIFt4XSk7Cit9CisKK2Z1bmN0aW9uIGdldF9sb2NhbCh4KSB7CisgIHJl
dHVybiAvKiBHZXRMb2NhbCAqL0Jsb2NrLl9fKDgsIFt4XSk7Cit9CisKK2Z1bmN0aW9uIHNldF9s
b2NhbCh4KSB7CisgIHJldHVybiAvKiBTZXRMb2NhbCAqL0Jsb2NrLl9fKDksIFt4XSk7Cit9CisK
K2Z1bmN0aW9uIHRlZV9sb2NhbCh4KSB7CisgIHJldHVybiAvKiBUZWVMb2NhbCAqL0Jsb2NrLl9f
KDEwLCBbeF0pOworfQorCitmdW5jdGlvbiBnZXRfZ2xvYmFsKHgpIHsKKyAgcmV0dXJuIC8qIEdl
dEdsb2JhbCAqL0Jsb2NrLl9fKDExLCBbeF0pOworfQorCitmdW5jdGlvbiBzZXRfZ2xvYmFsKHgp
IHsKKyAgcmV0dXJuIC8qIFNldEdsb2JhbCAqL0Jsb2NrLl9fKDEyLCBbeF0pOworfQorCitmdW5j
dGlvbiBpMzJfbG9hZChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2su
X18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAs
CisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNl
dCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAgICAg
XV0pOworfQorCitmdW5jdGlvbiBpNjRfbG9hZChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAv
KiBMb2FkICovQmxvY2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5
IDogSTY0VHlwZSAqLzEsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAg
ICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBOb25lICov
MAorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBmMzJfbG9hZChhbGlnbiwgb2Zmc2V0
KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgICAgIC8qIHR5IDogRjMyVHlwZSAqLzIsCisgICAgICAgICAgICAgIC8qIGFsaWduICov
YWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAg
Lyogc3ogOiBOb25lICovMAorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBmNjRfbG9h
ZChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogRjY0VHlwZSAqLzMsCisgICAgICAgICAg
ICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwK
KyAgICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAgICAgXV0pOworfQorCitm
dW5jdGlvbiBpMzJfbG9hZDhfcyhhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICov
QmxvY2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlw
ZSAqLzAsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8q
IG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAgICAgLyogTWVtOCAqLzAsCisgICAgICAgICAgICAgICAgICAv
KiBTWCAqLzAKKyAgICAgICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5j
dGlvbiBpMzJfbG9hZDhfdShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxv
Y2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAq
LzAsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9m
ZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICov
WworICAgICAgICAgICAgICAgICAgLyogTWVtOCAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBa
WCAqLzEKKyAgICAgICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlv
biBpMzJfbG9hZDE2X3MoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2Nr
Ll9fKDEzLCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEkzMlR5cGUgKi8w
LAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZz
ZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sK
KyAgICAgICAgICAgICAgICAgIC8qIE1lbTE2ICovMSwKKyAgICAgICAgICAgICAgICAgIC8qIFNY
ICovMAorICAgICAgICAgICAgICAgIF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9u
IGkzMl9sb2FkMTZfdShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2su
X18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAs
CisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNl
dCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWwor
ICAgICAgICAgICAgICAgICAgLyogTWVtMTYgKi8xLAorICAgICAgICAgICAgICAgICAgLyogWlgg
Ki8xCisgICAgICAgICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24g
aTY0X2xvYWQ4X3MoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9f
KDEzLCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAor
ICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQg
Ki9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICAgICAgIC8qIE1lbTggKi8wLAorICAgICAgICAgICAgICAgICAgLyogU1ggKi8w
CisgICAgICAgICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0
X2xvYWQ4X3UoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEz
LCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAg
ICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9v
ZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgICAgIC8qIE1lbTggKi8wLAorICAgICAgICAgICAgICAgICAgLyogWlggKi8xCisg
ICAgICAgICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xv
YWQxNl9zKGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywg
Wy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAg
ICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zm
c2V0LAorICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgICAgICAvKiBNZW0xNiAqLzEsCisgICAgICAgICAgICAgICAgICAvKiBTWCAqLzAKKyAg
ICAgICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpNjRfbG9h
ZDE2X3UoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBb
LyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAg
ICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZz
ZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICAgICAgIC8qIE1lbTE2ICovMSwKKyAgICAgICAgICAgICAgICAgIC8qIFpYICovMQorICAg
ICAgICAgICAgICAgIF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGk2NF9sb2Fk
MzJfcyhhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsv
KiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEsCisgICAgICAg
ICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNl
dCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAgICAg
ICAgICAgICAgLyogTWVtMzIgKi8yLAorICAgICAgICAgICAgICAgICAgLyogU1ggKi8wCisgICAg
ICAgICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQz
Ml91KGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywgWy8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAg
ICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0
LAorICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAg
ICAgICAgICAvKiBNZW0zMiAqLzIsCisgICAgICAgICAgICAgICAgICAvKiBaWCAqLzEKKyAgICAg
ICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpMzJfc3RvcmUo
YWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwKKyAgICAgICAgICAg
ICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAor
ICAgICAgICAgICAgICAvKiBzeiA6IE5vbmUgKi8wCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1
bmN0aW9uIGk2NF9zdG9yZShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9yZSAqL0Js
b2NrLl9fKDE0LCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUg
Ki8xLAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBv
ZmZzZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogTm9uZSAqLzAKKyAgICAgICAg
ICAgIF1dKTsKK30KKworZnVuY3Rpb24gZjMyX3N0b3JlKGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0
dXJuIC8qIFN0b3JlICovQmxvY2suX18oMTQsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAg
IC8qIHR5IDogRjMyVHlwZSAqLzIsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisg
ICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBO
b25lICovMAorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBmNjRfc3RvcmUoYWxpZ24s
IG9mZnNldCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAq
L1sKKyAgICAgICAgICAgICAgLyogdHkgOiBGNjRUeXBlICovMywKKyAgICAgICAgICAgICAgLyog
YWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAg
ICAgICAgICAvKiBzeiA6IE5vbmUgKi8wCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9u
IGkzMl9zdG9yZTgoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5f
XygxNCwgWy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwK
KyAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0
ICovb2Zmc2V0LAorICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogTWVtOCAqLzBdCisg
ICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGkzMl9zdG9yZTE2KGFsaWduLCBvZmZzZXQp
IHsKKyAgcmV0dXJuIC8qIFN0b3JlICovQmxvY2suX18oMTQsIFsvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisgICAgICAgICAgICAgIC8qIGFsaWduICov
YWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAg
Lyogc3ogOiBTb21lICovWy8qIE1lbTE2ICovMV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVu
Y3Rpb24gaTY0X3N0b3JlOChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9yZSAqL0Js
b2NrLl9fKDE0LCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUg
Ki8xLAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBv
ZmZzZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiBNZW04ICov
MF0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X3N0b3JlMTYoYWxpZ24sIG9m
ZnNldCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sK
KyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAgICAgICAgLyogYWxp
Z24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAg
ICAgICAvKiBzeiA6IFNvbWUgKi9bLyogTWVtMTYgKi8xXQorICAgICAgICAgICAgXV0pOworfQor
CitmdW5jdGlvbiBpNjRfc3RvcmUzMihhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9y
ZSAqL0Jsb2NrLl9fKDE0LCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2
NFR5cGUgKi8xLAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAg
ICAvKiBvZmZzZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiBN
ZW0zMiAqLzJdCisgICAgICAgICAgICBdXSk7Cit9CisKK3ZhciB1bnJlYWNoYWJsZSA9IC8qIFVu
cmVhY2hhYmxlICovMDsKKwordmFyIG5vcCA9IC8qIE5vcCAqLzE7CisKK3ZhciBkcm9wID0gLyog
RHJvcCAqLzM7CisKK3ZhciAkJHJldHVybiA9IC8qIFJldHVybiAqLzI7CisKK3ZhciBzZWxlY3Qg
PSAvKiBTZWxlY3QgKi80OworCit2YXIgaTMyX2NseiA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgs
IFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogQ2x6ICovMF0pXSk7CisKK3ZhciBpMzJfY3R6ID0g
LyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBDdHogKi8x
XSldKTsKKwordmFyIGkzMl9wb3BjbnQgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogSTMy
ICovQmxvY2suX18oMCwgWy8qIFBvcGNudCAqLzJdKV0pOworCit2YXIgaTY0X2NseiA9IC8qIFVu
YXJ5ICovQmxvY2suX18oMTgsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogQ2x6ICovMF0pXSk7
CisKK3ZhciBpNjRfY3R6ID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEk2NCAqL0Jsb2Nr
Ll9fKDEsIFsvKiBDdHogKi8xXSldKTsKKwordmFyIGk2NF9wb3BjbnQgPSAvKiBVbmFyeSAqL0Js
b2NrLl9fKDE4LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIFBvcGNudCAqLzJdKV0pOworCit2
YXIgZjMyX25lZyA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGMzIgKi9CbG9jay5fXygy
LCBbLyogTmVnICovMF0pXSk7CisKK3ZhciBmMzJfYWJzID0gLyogVW5hcnkgKi9CbG9jay5fXygx
OCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBBYnMgKi8xXSldKTsKKwordmFyIGYzMl9zcXJ0
ID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBTcXJ0
ICovNl0pXSk7CisKK3ZhciBmMzJfY2VpbCA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBG
MzIgKi9CbG9jay5fXygyLCBbLyogQ2VpbCAqLzJdKV0pOworCit2YXIgZjMyX2Zsb29yID0gLyog
VW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBGbG9vciAqLzNd
KV0pOworCit2YXIgZjMyX3RydW5jID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAq
L0Jsb2NrLl9fKDIsIFsvKiBUcnVuYyAqLzRdKV0pOworCit2YXIgZjMyX25lYXJlc3QgPSAvKiBV
bmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIE5lYXJlc3QgKi81
XSldKTsKKwordmFyIGY2NF9uZWcgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjY0ICov
QmxvY2suX18oMywgWy8qIE5lZyAqLzBdKV0pOworCit2YXIgZjY0X2FicyA9IC8qIFVuYXJ5ICov
QmxvY2suX18oMTgsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQWJzICovMV0pXSk7CisKK3Zh
ciBmNjRfc3FydCA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9CbG9jay5fXygz
LCBbLyogU3FydCAqLzZdKV0pOworCit2YXIgZjY0X2NlaWwgPSAvKiBVbmFyeSAqL0Jsb2NrLl9f
KDE4LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIENlaWwgKi8yXSldKTsKKwordmFyIGY2NF9m
bG9vciA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyog
Rmxvb3IgKi8zXSldKTsKKwordmFyIGY2NF90cnVuYyA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgs
IFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogVHJ1bmMgKi80XSldKTsKKwordmFyIGY2NF9uZWFy
ZXN0ID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBO
ZWFyZXN0ICovNV0pXSk7CisKK3ZhciBpMzJfYWRkID0gLyogQmluYXJ5ICovQmxvY2suX18oMTks
IFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogQWRkICovMF0pXSk7CisKK3ZhciBpMzJfc3ViID0g
LyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogU3ViICov
MV0pXSk7CisKK3ZhciBpMzJfbXVsID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIg
Ki9CbG9jay5fXygwLCBbLyogTXVsICovMl0pXSk7CisKK3ZhciBpMzJfZGl2X3MgPSAvKiBCaW5h
cnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBEaXZTICovM10pXSk7
CisKK3ZhciBpMzJfZGl2X3UgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Js
b2NrLl9fKDAsIFsvKiBEaXZVICovNF0pXSk7CisKK3ZhciBpMzJfcmVtX3MgPSAvKiBCaW5hcnkg
Ki9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBSZW1TICovNV0pXSk7CisK
K3ZhciBpMzJfcmVtX3UgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2Nr
Ll9fKDAsIFsvKiBSZW1VICovNl0pXSk7CisKK3ZhciBpMzJfYW5kID0gLyogQmluYXJ5ICovQmxv
Y2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogQW5kICovN10pXSk7CisKK3ZhciBp
MzJfb3IgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsv
KiBPciAqLzhdKV0pOworCit2YXIgaTMyX3hvciA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBb
LyogSTMyICovQmxvY2suX18oMCwgWy8qIFhvciAqLzldKV0pOworCit2YXIgaTMyX3NobCA9IC8q
IEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFNobCAqLzEw
XSldKTsKKwordmFyIGkzMl9zaHJfcyA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMy
ICovQmxvY2suX18oMCwgWy8qIFNoclMgKi8xMV0pXSk7CisKK3ZhciBpMzJfc2hyX3UgPSAvKiBC
aW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBTaHJVICovMTJd
KV0pOworCit2YXIgaTMyX3JvdGwgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAq
L0Jsb2NrLl9fKDAsIFsvKiBSb3RsICovMTNdKV0pOworCit2YXIgaTMyX3JvdHIgPSAvKiBCaW5h
cnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBSb3RyICovMTRdKV0p
OworCit2YXIgaTY0X2FkZCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxv
Y2suX18oMSwgWy8qIEFkZCAqLzBdKV0pOworCit2YXIgaTY0X3N1YiA9IC8qIEJpbmFyeSAqL0Js
b2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIFN1YiAqLzFdKV0pOworCit2YXIg
aTY0X211bCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwg
Wy8qIE11bCAqLzJdKV0pOworCit2YXIgaTY0X2Rpdl9zID0gLyogQmluYXJ5ICovQmxvY2suX18o
MTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogRGl2UyAqLzNdKV0pOworCit2YXIgaTY0X2Rp
dl91ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyog
RGl2VSAqLzRdKV0pOworCit2YXIgaTY0X3JlbV9zID0gLyogQmluYXJ5ICovQmxvY2suX18oMTks
IFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogUmVtUyAqLzVdKV0pOworCit2YXIgaTY0X3JlbV91
ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogUmVt
VSAqLzZdKV0pOworCit2YXIgaTY0X2FuZCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyog
STY0ICovQmxvY2suX18oMSwgWy8qIEFuZCAqLzddKV0pOworCit2YXIgaTY0X29yID0gLyogQmlu
YXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogT3IgKi84XSldKTsK
KwordmFyIGk2NF94b3IgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2Nr
Ll9fKDEsIFsvKiBYb3IgKi85XSldKTsKKwordmFyIGk2NF9zaGwgPSAvKiBCaW5hcnkgKi9CbG9j
ay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBTaGwgKi8xMF0pXSk7CisKK3ZhciBp
NjRfc2hyX3MgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEs
IFsvKiBTaHJTICovMTFdKV0pOworCit2YXIgaTY0X3Nocl91ID0gLyogQmluYXJ5ICovQmxvY2su
X18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogU2hyVSAqLzEyXSldKTsKKwordmFyIGk2
NF9yb3RsID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBb
LyogUm90bCAqLzEzXSldKTsKKwordmFyIGk2NF9yb3RyID0gLyogQmluYXJ5ICovQmxvY2suX18o
MTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogUm90ciAqLzE0XSldKTsKKwordmFyIGYzMl9h
ZGQgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBB
ZGQgKi8wXSldKTsKKwordmFyIGYzMl9zdWIgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8q
IEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBTdWIgKi8xXSldKTsKKwordmFyIGYzMl9tdWwgPSAvKiBC
aW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBNdWwgKi8yXSld
KTsKKwordmFyIGYzMl9kaXYgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Js
b2NrLl9fKDIsIFsvKiBEaXYgKi8zXSldKTsKKwordmFyIGYzMl9taW4gPSAvKiBCaW5hcnkgKi9C
bG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBNaW4gKi80XSldKTsKKwordmFy
IGYzMl9tYXggPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIs
IFsvKiBNYXggKi81XSldKTsKKwordmFyIGYzMl9jb3B5c2lnbiA9IC8qIEJpbmFyeSAqL0Jsb2Nr
Ll9fKDE5LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIENvcHlTaWduICovNl0pXSk7CisKK3Zh
ciBmNjRfYWRkID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygz
LCBbLyogQWRkICovMF0pXSk7CisKK3ZhciBmNjRfc3ViID0gLyogQmluYXJ5ICovQmxvY2suX18o
MTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogU3ViICovMV0pXSk7CisKK3ZhciBmNjRfbXVs
ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTXVs
ICovMl0pXSk7CisKK3ZhciBmNjRfZGl2ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBG
NjQgKi9CbG9jay5fXygzLCBbLyogRGl2ICovM10pXSk7CisKK3ZhciBmNjRfbWluID0gLyogQmlu
YXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTWluICovNF0pXSk7
CisKK3ZhciBmNjRfbWF4ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9j
ay5fXygzLCBbLyogTWF4ICovNV0pXSk7CisKK3ZhciBmNjRfY29weXNpZ24gPSAvKiBCaW5hcnkg
Ki9CbG9jay5fXygxOSwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBDb3B5U2lnbiAqLzZdKV0p
OworCit2YXIgaTMyX2VxeiA9IC8qIFRlc3QgKi9CbG9jay5fXygxNiwgWy8qIEkzMiAqL0Jsb2Nr
Ll9fKDAsIFsvKiBFcXogKi8wXSldKTsKKwordmFyIGk2NF9lcXogPSAvKiBUZXN0ICovQmxvY2su
X18oMTYsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogRXF6ICovMF0pXSk7CisKK3ZhciBpMzJf
ZXEgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyog
RXEgKi8wXSldKTsKKwordmFyIGkzMl9uZSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8q
IEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBOZSAqLzFdKV0pOworCit2YXIgaTMyX2x0X3MgPSAvKiBD
b21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogTHRTICovMl0p
XSk7CisKK3ZhciBpMzJfbHRfdSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAq
L0Jsb2NrLl9fKDAsIFsvKiBMdFUgKi8zXSldKTsKKwordmFyIGkzMl9sZV9zID0gLyogQ29tcGFy
ZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIExlUyAqLzZdKV0pOwor
Cit2YXIgaTMyX2xlX3UgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9j
ay5fXygwLCBbLyogTGVVICovN10pXSk7CisKK3ZhciBpMzJfZ3RfcyA9IC8qIENvbXBhcmUgKi9C
bG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBHdFMgKi80XSldKTsKKwordmFy
IGkzMl9ndF91ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTMyICovQmxvY2suX18o
MCwgWy8qIEd0VSAqLzVdKV0pOworCit2YXIgaTMyX2dlX3MgPSAvKiBDb21wYXJlICovQmxvY2su
X18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogR2VTICovOF0pXSk7CisKK3ZhciBpMzJf
Z2VfdSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsv
KiBHZVUgKi85XSldKTsKKwordmFyIGk2NF9lcSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywg
Wy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBFcSAqLzBdKV0pOworCit2YXIgaTY0X25lID0gLyog
Q29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIE5lICovMV0p
XSk7CisKK3ZhciBpNjRfbHRfcyA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAq
L0Jsb2NrLl9fKDEsIFsvKiBMdFMgKi8yXSldKTsKKwordmFyIGk2NF9sdF91ID0gLyogQ29tcGFy
ZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIEx0VSAqLzNdKV0pOwor
Cit2YXIgaTY0X2xlX3MgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJNjQgKi9CbG9j
ay5fXygxLCBbLyogTGVTICovNl0pXSk7CisKK3ZhciBpNjRfbGVfdSA9IC8qIENvbXBhcmUgKi9C
bG9jay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBMZVUgKi83XSldKTsKKwordmFy
IGk2NF9ndF9zID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2suX18o
MSwgWy8qIEd0UyAqLzRdKV0pOworCit2YXIgaTY0X2d0X3UgPSAvKiBDb21wYXJlICovQmxvY2su
X18oMTcsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogR3RVICovNV0pXSk7CisKK3ZhciBpNjRf
Z2VfcyA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsv
KiBHZVMgKi84XSldKTsKKwordmFyIGk2NF9nZV91ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3
LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIEdlVSAqLzldKV0pOworCit2YXIgZjMyX2VxID0g
LyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIEVxICov
MF0pXSk7CisKK3ZhciBmMzJfbmUgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGMzIg
Ki9CbG9jay5fXygyLCBbLyogTmUgKi8xXSldKTsKKwordmFyIGYzMl9sdCA9IC8qIENvbXBhcmUg
Ki9CbG9jay5fXygxNywgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBMdCAqLzJdKV0pOworCit2
YXIgZjMyX2xlID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjMyICovQmxvY2suX18o
MiwgWy8qIExlICovNF0pXSk7CisKK3ZhciBmMzJfZ3QgPSAvKiBDb21wYXJlICovQmxvY2suX18o
MTcsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogR3QgKi8zXSldKTsKKwordmFyIGYzMl9nZSA9
IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBHZSAq
LzVdKV0pOworCit2YXIgZjY0X2VxID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjY0
ICovQmxvY2suX18oMywgWy8qIEVxICovMF0pXSk7CisKK3ZhciBmNjRfbmUgPSAvKiBDb21wYXJl
ICovQmxvY2suX18oMTcsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTmUgKi8xXSldKTsKKwor
dmFyIGY2NF9sdCA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEY2NCAqL0Jsb2NrLl9f
KDMsIFsvKiBMdCAqLzJdKV0pOworCit2YXIgZjY0X2xlID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9f
KDE3LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIExlICovNF0pXSk7CisKK3ZhciBmNjRfZ3Qg
PSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogR3Qg
Ki8zXSldKTsKKwordmFyIGY2NF9nZSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEY2
NCAqL0Jsb2NrLl9fKDMsIFsvKiBHZSAqLzVdKV0pOworCit2YXIgaTMyX3dyYXBfaTY0ID0gLyog
Q29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFdyYXBJNjQg
Ki8yXSldKTsKKwordmFyIGkzMl90cnVuY19zX2YzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygy
MCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1NGMzIgKi8zXSldKTsKKwordmFyIGkz
Ml90cnVuY191X2YzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkzMiAqL0Jsb2Nr
Ll9fKDAsIFsvKiBUcnVuY1VGMzIgKi80XSldKTsKKwordmFyIGkzMl90cnVuY19zX2Y2NCA9IC8q
IENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1NG
NjQgKi81XSldKTsKKwordmFyIGkzMl90cnVuY191X2Y2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5f
XygyMCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1VGNjQgKi82XSldKTsKKwordmFy
IGk2NF9leHRlbmRfc19pMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9C
bG9jay5fXygxLCBbLyogRXh0ZW5kU0kzMiAqLzBdKV0pOworCit2YXIgaTY0X2V4dGVuZF91X2kz
MiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBF
eHRlbmRVSTMyICovMV0pXSk7CisKK3ZhciBpNjRfdHJ1bmNfc19mMzIgPSAvKiBDb252ZXJ0ICov
QmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogVHJ1bmNTRjMyICovM10pXSk7
CisKK3ZhciBpNjRfdHJ1bmNfdV9mMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJ
NjQgKi9CbG9jay5fXygxLCBbLyogVHJ1bmNVRjMyICovNF0pXSk7CisKK3ZhciBpNjRfdHJ1bmNf
c19mNjQgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBb
LyogVHJ1bmNTRjY0ICovNV0pXSk7CisKK3ZhciBpNjRfdHJ1bmNfdV9mNjQgPSAvKiBDb252ZXJ0
ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogVHJ1bmNVRjY0ICovNl0p
XSk7CisKK3ZhciBmMzJfY29udmVydF9zX2kzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwg
Wy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBDb252ZXJ0U0kzMiAqLzBdKV0pOworCit2YXIgZjMy
X2NvbnZlcnRfdV9pMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBGMzIgKi9CbG9j
ay5fXygyLCBbLyogQ29udmVydFVJMzIgKi8xXSldKTsKKwordmFyIGYzMl9jb252ZXJ0X3NfaTY0
ID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIENv
bnZlcnRTSTY0ICovMl0pXSk7CisKK3ZhciBmMzJfY29udmVydF91X2k2NCA9IC8qIENvbnZlcnQg
Ki9CbG9jay5fXygyMCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBDb252ZXJ0VUk2NCAqLzNd
KV0pOworCit2YXIgZjMyX2RlbW90ZV9mNjQgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsv
KiBGMzIgKi9CbG9jay5fXygyLCBbLyogRGVtb3RlRjY0ICovNV0pXSk7CisKK3ZhciBmNjRfY29u
dmVydF9zX2kzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEY2NCAqL0Jsb2NrLl9f
KDMsIFsvKiBDb252ZXJ0U0kzMiAqLzBdKV0pOworCit2YXIgZjY0X2NvbnZlcnRfdV9pMzIgPSAv
KiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQ29udmVy
dFVJMzIgKi8xXSldKTsKKwordmFyIGY2NF9jb252ZXJ0X3NfaTY0ID0gLyogQ29udmVydCAqL0Js
b2NrLl9fKDIwLCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIENvbnZlcnRTSTY0ICovMl0pXSk7
CisKK3ZhciBmNjRfY29udmVydF91X2k2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8q
IEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBDb252ZXJ0VUk2NCAqLzNdKV0pOworCit2YXIgZjY0X3By
b21vdGVfZjMyID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjY0ICovQmxvY2suX18o
MywgWy8qIFByb21vdGVGMzIgKi80XSldKTsKKwordmFyIGkzMl9yZWludGVycHJldF9mMzIgPSAv
KiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogUmVpbnRl
cnByZXRGbG9hdCAqLzddKV0pOworCit2YXIgaTY0X3JlaW50ZXJwcmV0X2Y2NCA9IC8qIENvbnZl
cnQgKi9CbG9jay5fXygyMCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBSZWludGVycHJldEZs
b2F0ICovN10pXSk7CisKK3ZhciBmMzJfcmVpbnRlcnByZXRfaTMyID0gLyogQ29udmVydCAqL0Js
b2NrLl9fKDIwLCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIFJlaW50ZXJwcmV0SW50ICovNl0p
XSk7CisKK3ZhciBmNjRfcmVpbnRlcnByZXRfaTY0ID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIw
LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIFJlaW50ZXJwcmV0SW50ICovNl0pXSk7CisKK3Zh
ciBjdXJyZW50X21lbW9yeSA9IC8qIEN1cnJlbnRNZW1vcnkgKi81OworCit2YXIgZ3Jvd19tZW1v
cnkgPSAvKiBHcm93TWVtb3J5ICovNjsKKworZXhwb3J0cy5pMzJfY29uc3QgICAgICAgICAgID0g
aTMyX2NvbnN0OworZXhwb3J0cy5pNjRfY29uc3QgICAgICAgICAgID0gaTY0X2NvbnN0OworZXhw
b3J0cy5mMzJfY29uc3QgICAgICAgICAgID0gZjMyX2NvbnN0OworZXhwb3J0cy5mNjRfY29uc3Qg
ICAgICAgICAgID0gZjY0X2NvbnN0OworZXhwb3J0cy51bnJlYWNoYWJsZSAgICAgICAgID0gdW5y
ZWFjaGFibGU7CitleHBvcnRzLm5vcCAgICAgICAgICAgICAgICAgPSBub3A7CitleHBvcnRzLmRy
b3AgICAgICAgICAgICAgICAgPSBkcm9wOworZXhwb3J0cy5ibG9jayAgICAgICAgICAgICAgID0g
YmxvY2s7CitleHBvcnRzLmxvb3AgICAgICAgICAgICAgICAgPSBsb29wOworZXhwb3J0cy5iciAg
ICAgICAgICAgICAgICAgID0gYnI7CitleHBvcnRzLmJyX2lmICAgICAgICAgICAgICAgPSBicl9p
ZjsKK2V4cG9ydHMuYnJfdGFibGUgICAgICAgICAgICA9IGJyX3RhYmxlOworZXhwb3J0cy4kJHJl
dHVybiAgICAgICAgICAgID0gJCRyZXR1cm47CitleHBvcnRzLmlmXyAgICAgICAgICAgICAgICAg
PSBpZl87CitleHBvcnRzLnNlbGVjdCAgICAgICAgICAgICAgPSBzZWxlY3Q7CitleHBvcnRzLmNh
bGwgICAgICAgICAgICAgICAgPSBjYWxsOworZXhwb3J0cy5jYWxsX2luZGlyZWN0ICAgICAgID0g
Y2FsbF9pbmRpcmVjdDsKK2V4cG9ydHMuZ2V0X2xvY2FsICAgICAgICAgICA9IGdldF9sb2NhbDsK
K2V4cG9ydHMuc2V0X2xvY2FsICAgICAgICAgICA9IHNldF9sb2NhbDsKK2V4cG9ydHMudGVlX2xv
Y2FsICAgICAgICAgICA9IHRlZV9sb2NhbDsKK2V4cG9ydHMuZ2V0X2dsb2JhbCAgICAgICAgICA9
IGdldF9nbG9iYWw7CitleHBvcnRzLnNldF9nbG9iYWwgICAgICAgICAgPSBzZXRfZ2xvYmFsOwor
ZXhwb3J0cy5pMzJfbG9hZCAgICAgICAgICAgID0gaTMyX2xvYWQ7CitleHBvcnRzLmk2NF9sb2Fk
ICAgICAgICAgICAgPSBpNjRfbG9hZDsKK2V4cG9ydHMuZjMyX2xvYWQgICAgICAgICAgICA9IGYz
Ml9sb2FkOworZXhwb3J0cy5mNjRfbG9hZCAgICAgICAgICAgID0gZjY0X2xvYWQ7CitleHBvcnRz
LmkzMl9sb2FkOF9zICAgICAgICAgPSBpMzJfbG9hZDhfczsKK2V4cG9ydHMuaTMyX2xvYWQ4X3Ug
ICAgICAgICA9IGkzMl9sb2FkOF91OworZXhwb3J0cy5pMzJfbG9hZDE2X3MgICAgICAgID0gaTMy
X2xvYWQxNl9zOworZXhwb3J0cy5pMzJfbG9hZDE2X3UgICAgICAgID0gaTMyX2xvYWQxNl91Owor
ZXhwb3J0cy5pNjRfbG9hZDhfcyAgICAgICAgID0gaTY0X2xvYWQ4X3M7CitleHBvcnRzLmk2NF9s
b2FkOF91ICAgICAgICAgPSBpNjRfbG9hZDhfdTsKK2V4cG9ydHMuaTY0X2xvYWQxNl9zICAgICAg
ICA9IGk2NF9sb2FkMTZfczsKK2V4cG9ydHMuaTY0X2xvYWQxNl91ICAgICAgICA9IGk2NF9sb2Fk
MTZfdTsKK2V4cG9ydHMuaTY0X2xvYWQzMl9zICAgICAgICA9IGk2NF9sb2FkMzJfczsKK2V4cG9y
dHMuaTY0X2xvYWQzMl91ICAgICAgICA9IGk2NF9sb2FkMzJfdTsKK2V4cG9ydHMuaTMyX3N0b3Jl
ICAgICAgICAgICA9IGkzMl9zdG9yZTsKK2V4cG9ydHMuaTY0X3N0b3JlICAgICAgICAgICA9IGk2
NF9zdG9yZTsKK2V4cG9ydHMuZjMyX3N0b3JlICAgICAgICAgICA9IGYzMl9zdG9yZTsKK2V4cG9y
dHMuZjY0X3N0b3JlICAgICAgICAgICA9IGY2NF9zdG9yZTsKK2V4cG9ydHMuaTMyX3N0b3JlOCAg
ICAgICAgICA9IGkzMl9zdG9yZTg7CitleHBvcnRzLmkzMl9zdG9yZTE2ICAgICAgICAgPSBpMzJf
c3RvcmUxNjsKK2V4cG9ydHMuaTY0X3N0b3JlOCAgICAgICAgICA9IGk2NF9zdG9yZTg7CitleHBv
cnRzLmk2NF9zdG9yZTE2ICAgICAgICAgPSBpNjRfc3RvcmUxNjsKK2V4cG9ydHMuaTY0X3N0b3Jl
MzIgICAgICAgICA9IGk2NF9zdG9yZTMyOworZXhwb3J0cy5pMzJfY2x6ICAgICAgICAgICAgID0g
aTMyX2NsejsKK2V4cG9ydHMuaTMyX2N0eiAgICAgICAgICAgICA9IGkzMl9jdHo7CitleHBvcnRz
LmkzMl9wb3BjbnQgICAgICAgICAgPSBpMzJfcG9wY250OworZXhwb3J0cy5pNjRfY2x6ICAgICAg
ICAgICAgID0gaTY0X2NsejsKK2V4cG9ydHMuaTY0X2N0eiAgICAgICAgICAgICA9IGk2NF9jdHo7
CitleHBvcnRzLmk2NF9wb3BjbnQgICAgICAgICAgPSBpNjRfcG9wY250OworZXhwb3J0cy5mMzJf
bmVnICAgICAgICAgICAgID0gZjMyX25lZzsKK2V4cG9ydHMuZjMyX2FicyAgICAgICAgICAgICA9
IGYzMl9hYnM7CitleHBvcnRzLmYzMl9zcXJ0ICAgICAgICAgICAgPSBmMzJfc3FydDsKK2V4cG9y
dHMuZjMyX2NlaWwgICAgICAgICAgICA9IGYzMl9jZWlsOworZXhwb3J0cy5mMzJfZmxvb3IgICAg
ICAgICAgID0gZjMyX2Zsb29yOworZXhwb3J0cy5mMzJfdHJ1bmMgICAgICAgICAgID0gZjMyX3Ry
dW5jOworZXhwb3J0cy5mMzJfbmVhcmVzdCAgICAgICAgID0gZjMyX25lYXJlc3Q7CitleHBvcnRz
LmY2NF9uZWcgICAgICAgICAgICAgPSBmNjRfbmVnOworZXhwb3J0cy5mNjRfYWJzICAgICAgICAg
ICAgID0gZjY0X2FiczsKK2V4cG9ydHMuZjY0X3NxcnQgICAgICAgICAgICA9IGY2NF9zcXJ0Owor
ZXhwb3J0cy5mNjRfY2VpbCAgICAgICAgICAgID0gZjY0X2NlaWw7CitleHBvcnRzLmY2NF9mbG9v
ciAgICAgICAgICAgPSBmNjRfZmxvb3I7CitleHBvcnRzLmY2NF90cnVuYyAgICAgICAgICAgPSBm
NjRfdHJ1bmM7CitleHBvcnRzLmY2NF9uZWFyZXN0ICAgICAgICAgPSBmNjRfbmVhcmVzdDsKK2V4
cG9ydHMuaTMyX2FkZCAgICAgICAgICAgICA9IGkzMl9hZGQ7CitleHBvcnRzLmkzMl9zdWIgICAg
ICAgICAgICAgPSBpMzJfc3ViOworZXhwb3J0cy5pMzJfbXVsICAgICAgICAgICAgID0gaTMyX211
bDsKK2V4cG9ydHMuaTMyX2Rpdl9zICAgICAgICAgICA9IGkzMl9kaXZfczsKK2V4cG9ydHMuaTMy
X2Rpdl91ICAgICAgICAgICA9IGkzMl9kaXZfdTsKK2V4cG9ydHMuaTMyX3JlbV9zICAgICAgICAg
ICA9IGkzMl9yZW1fczsKK2V4cG9ydHMuaTMyX3JlbV91ICAgICAgICAgICA9IGkzMl9yZW1fdTsK
K2V4cG9ydHMuaTMyX2FuZCAgICAgICAgICAgICA9IGkzMl9hbmQ7CitleHBvcnRzLmkzMl9vciAg
ICAgICAgICAgICAgPSBpMzJfb3I7CitleHBvcnRzLmkzMl94b3IgICAgICAgICAgICAgPSBpMzJf
eG9yOworZXhwb3J0cy5pMzJfc2hsICAgICAgICAgICAgID0gaTMyX3NobDsKK2V4cG9ydHMuaTMy
X3Nocl9zICAgICAgICAgICA9IGkzMl9zaHJfczsKK2V4cG9ydHMuaTMyX3Nocl91ICAgICAgICAg
ICA9IGkzMl9zaHJfdTsKK2V4cG9ydHMuaTMyX3JvdGwgICAgICAgICAgICA9IGkzMl9yb3RsOwor
ZXhwb3J0cy5pMzJfcm90ciAgICAgICAgICAgID0gaTMyX3JvdHI7CitleHBvcnRzLmk2NF9hZGQg
ICAgICAgICAgICAgPSBpNjRfYWRkOworZXhwb3J0cy5pNjRfc3ViICAgICAgICAgICAgID0gaTY0
X3N1YjsKK2V4cG9ydHMuaTY0X211bCAgICAgICAgICAgICA9IGk2NF9tdWw7CitleHBvcnRzLmk2
NF9kaXZfcyAgICAgICAgICAgPSBpNjRfZGl2X3M7CitleHBvcnRzLmk2NF9kaXZfdSAgICAgICAg
ICAgPSBpNjRfZGl2X3U7CitleHBvcnRzLmk2NF9yZW1fcyAgICAgICAgICAgPSBpNjRfcmVtX3M7
CitleHBvcnRzLmk2NF9yZW1fdSAgICAgICAgICAgPSBpNjRfcmVtX3U7CitleHBvcnRzLmk2NF9h
bmQgICAgICAgICAgICAgPSBpNjRfYW5kOworZXhwb3J0cy5pNjRfb3IgICAgICAgICAgICAgID0g
aTY0X29yOworZXhwb3J0cy5pNjRfeG9yICAgICAgICAgICAgID0gaTY0X3hvcjsKK2V4cG9ydHMu
aTY0X3NobCAgICAgICAgICAgICA9IGk2NF9zaGw7CitleHBvcnRzLmk2NF9zaHJfcyAgICAgICAg
ICAgPSBpNjRfc2hyX3M7CitleHBvcnRzLmk2NF9zaHJfdSAgICAgICAgICAgPSBpNjRfc2hyX3U7
CitleHBvcnRzLmk2NF9yb3RsICAgICAgICAgICAgPSBpNjRfcm90bDsKK2V4cG9ydHMuaTY0X3Jv
dHIgICAgICAgICAgICA9IGk2NF9yb3RyOworZXhwb3J0cy5mMzJfYWRkICAgICAgICAgICAgID0g
ZjMyX2FkZDsKK2V4cG9ydHMuZjMyX3N1YiAgICAgICAgICAgICA9IGYzMl9zdWI7CitleHBvcnRz
LmYzMl9tdWwgICAgICAgICAgICAgPSBmMzJfbXVsOworZXhwb3J0cy5mMzJfZGl2ICAgICAgICAg
ICAgID0gZjMyX2RpdjsKK2V4cG9ydHMuZjMyX21pbiAgICAgICAgICAgICA9IGYzMl9taW47Citl
eHBvcnRzLmYzMl9tYXggICAgICAgICAgICAgPSBmMzJfbWF4OworZXhwb3J0cy5mMzJfY29weXNp
Z24gICAgICAgID0gZjMyX2NvcHlzaWduOworZXhwb3J0cy5mNjRfYWRkICAgICAgICAgICAgID0g
ZjY0X2FkZDsKK2V4cG9ydHMuZjY0X3N1YiAgICAgICAgICAgICA9IGY2NF9zdWI7CitleHBvcnRz
LmY2NF9tdWwgICAgICAgICAgICAgPSBmNjRfbXVsOworZXhwb3J0cy5mNjRfZGl2ICAgICAgICAg
ICAgID0gZjY0X2RpdjsKK2V4cG9ydHMuZjY0X21pbiAgICAgICAgICAgICA9IGY2NF9taW47Citl
eHBvcnRzLmY2NF9tYXggICAgICAgICAgICAgPSBmNjRfbWF4OworZXhwb3J0cy5mNjRfY29weXNp
Z24gICAgICAgID0gZjY0X2NvcHlzaWduOworZXhwb3J0cy5pMzJfZXF6ICAgICAgICAgICAgID0g
aTMyX2VxejsKK2V4cG9ydHMuaTY0X2VxeiAgICAgICAgICAgICA9IGk2NF9lcXo7CitleHBvcnRz
LmkzMl9lcSAgICAgICAgICAgICAgPSBpMzJfZXE7CitleHBvcnRzLmkzMl9uZSAgICAgICAgICAg
ICAgPSBpMzJfbmU7CitleHBvcnRzLmkzMl9sdF9zICAgICAgICAgICAgPSBpMzJfbHRfczsKK2V4
cG9ydHMuaTMyX2x0X3UgICAgICAgICAgICA9IGkzMl9sdF91OworZXhwb3J0cy5pMzJfbGVfcyAg
ICAgICAgICAgID0gaTMyX2xlX3M7CitleHBvcnRzLmkzMl9sZV91ICAgICAgICAgICAgPSBpMzJf
bGVfdTsKK2V4cG9ydHMuaTMyX2d0X3MgICAgICAgICAgICA9IGkzMl9ndF9zOworZXhwb3J0cy5p
MzJfZ3RfdSAgICAgICAgICAgID0gaTMyX2d0X3U7CitleHBvcnRzLmkzMl9nZV9zICAgICAgICAg
ICAgPSBpMzJfZ2VfczsKK2V4cG9ydHMuaTMyX2dlX3UgICAgICAgICAgICA9IGkzMl9nZV91Owor
ZXhwb3J0cy5pNjRfZXEgICAgICAgICAgICAgID0gaTY0X2VxOworZXhwb3J0cy5pNjRfbmUgICAg
ICAgICAgICAgID0gaTY0X25lOworZXhwb3J0cy5pNjRfbHRfcyAgICAgICAgICAgID0gaTY0X2x0
X3M7CitleHBvcnRzLmk2NF9sdF91ICAgICAgICAgICAgPSBpNjRfbHRfdTsKK2V4cG9ydHMuaTY0
X2xlX3MgICAgICAgICAgICA9IGk2NF9sZV9zOworZXhwb3J0cy5pNjRfbGVfdSAgICAgICAgICAg
ID0gaTY0X2xlX3U7CitleHBvcnRzLmk2NF9ndF9zICAgICAgICAgICAgPSBpNjRfZ3RfczsKK2V4
cG9ydHMuaTY0X2d0X3UgICAgICAgICAgICA9IGk2NF9ndF91OworZXhwb3J0cy5pNjRfZ2VfcyAg
ICAgICAgICAgID0gaTY0X2dlX3M7CitleHBvcnRzLmk2NF9nZV91ICAgICAgICAgICAgPSBpNjRf
Z2VfdTsKK2V4cG9ydHMuZjMyX2VxICAgICAgICAgICAgICA9IGYzMl9lcTsKK2V4cG9ydHMuZjMy
X25lICAgICAgICAgICAgICA9IGYzMl9uZTsKK2V4cG9ydHMuZjMyX2x0ICAgICAgICAgICAgICA9
IGYzMl9sdDsKK2V4cG9ydHMuZjMyX2xlICAgICAgICAgICAgICA9IGYzMl9sZTsKK2V4cG9ydHMu
ZjMyX2d0ICAgICAgICAgICAgICA9IGYzMl9ndDsKK2V4cG9ydHMuZjMyX2dlICAgICAgICAgICAg
ICA9IGYzMl9nZTsKK2V4cG9ydHMuZjY0X2VxICAgICAgICAgICAgICA9IGY2NF9lcTsKK2V4cG9y
dHMuZjY0X25lICAgICAgICAgICAgICA9IGY2NF9uZTsKK2V4cG9ydHMuZjY0X2x0ICAgICAgICAg
ICAgICA9IGY2NF9sdDsKK2V4cG9ydHMuZjY0X2xlICAgICAgICAgICAgICA9IGY2NF9sZTsKK2V4
cG9ydHMuZjY0X2d0ICAgICAgICAgICAgICA9IGY2NF9ndDsKK2V4cG9ydHMuZjY0X2dlICAgICAg
ICAgICAgICA9IGY2NF9nZTsKK2V4cG9ydHMuaTMyX3dyYXBfaTY0ICAgICAgICA9IGkzMl93cmFw
X2k2NDsKK2V4cG9ydHMuaTMyX3RydW5jX3NfZjMyICAgICA9IGkzMl90cnVuY19zX2YzMjsKK2V4
cG9ydHMuaTMyX3RydW5jX3VfZjMyICAgICA9IGkzMl90cnVuY191X2YzMjsKK2V4cG9ydHMuaTMy
X3RydW5jX3NfZjY0ICAgICA9IGkzMl90cnVuY19zX2Y2NDsKK2V4cG9ydHMuaTMyX3RydW5jX3Vf
ZjY0ICAgICA9IGkzMl90cnVuY191X2Y2NDsKK2V4cG9ydHMuaTY0X2V4dGVuZF9zX2kzMiAgICA9
IGk2NF9leHRlbmRfc19pMzI7CitleHBvcnRzLmk2NF9leHRlbmRfdV9pMzIgICAgPSBpNjRfZXh0
ZW5kX3VfaTMyOworZXhwb3J0cy5pNjRfdHJ1bmNfc19mMzIgICAgID0gaTY0X3RydW5jX3NfZjMy
OworZXhwb3J0cy5pNjRfdHJ1bmNfdV9mMzIgICAgID0gaTY0X3RydW5jX3VfZjMyOworZXhwb3J0
cy5pNjRfdHJ1bmNfc19mNjQgICAgID0gaTY0X3RydW5jX3NfZjY0OworZXhwb3J0cy5pNjRfdHJ1
bmNfdV9mNjQgICAgID0gaTY0X3RydW5jX3VfZjY0OworZXhwb3J0cy5mMzJfY29udmVydF9zX2kz
MiAgID0gZjMyX2NvbnZlcnRfc19pMzI7CitleHBvcnRzLmYzMl9jb252ZXJ0X3VfaTMyICAgPSBm
MzJfY29udmVydF91X2kzMjsKK2V4cG9ydHMuZjMyX2NvbnZlcnRfc19pNjQgICA9IGYzMl9jb252
ZXJ0X3NfaTY0OworZXhwb3J0cy5mMzJfY29udmVydF91X2k2NCAgID0gZjMyX2NvbnZlcnRfdV9p
NjQ7CitleHBvcnRzLmYzMl9kZW1vdGVfZjY0ICAgICAgPSBmMzJfZGVtb3RlX2Y2NDsKK2V4cG9y
dHMuZjY0X2NvbnZlcnRfc19pMzIgICA9IGY2NF9jb252ZXJ0X3NfaTMyOworZXhwb3J0cy5mNjRf
Y29udmVydF91X2kzMiAgID0gZjY0X2NvbnZlcnRfdV9pMzI7CitleHBvcnRzLmY2NF9jb252ZXJ0
X3NfaTY0ICAgPSBmNjRfY29udmVydF9zX2k2NDsKK2V4cG9ydHMuZjY0X2NvbnZlcnRfdV9pNjQg
ICA9IGY2NF9jb252ZXJ0X3VfaTY0OworZXhwb3J0cy5mNjRfcHJvbW90ZV9mMzIgICAgID0gZjY0
X3Byb21vdGVfZjMyOworZXhwb3J0cy5pMzJfcmVpbnRlcnByZXRfZjMyID0gaTMyX3JlaW50ZXJw
cmV0X2YzMjsKK2V4cG9ydHMuaTY0X3JlaW50ZXJwcmV0X2Y2NCA9IGk2NF9yZWludGVycHJldF9m
NjQ7CitleHBvcnRzLmYzMl9yZWludGVycHJldF9pMzIgPSBmMzJfcmVpbnRlcnByZXRfaTMyOwor
ZXhwb3J0cy5mNjRfcmVpbnRlcnByZXRfaTY0ID0gZjY0X3JlaW50ZXJwcmV0X2k2NDsKK2V4cG9y
dHMuY3VycmVudF9tZW1vcnkgICAgICA9IGN1cnJlbnRfbWVtb3J5OworZXhwb3J0cy5ncm93X21l
bW9yeSAgICAgICAgID0gZ3Jvd19tZW1vcnk7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8v
Ly8gZW5kIG9mIG9wZXJhdG9ycy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivC
oCB9OworCisKKyAgX3JlZ2lzdHJ5WydwYXJzZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQg
ZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgcGFyc2UuanMgLy8vLy8vLy8KKy8vIEdl
bmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEgg
Q0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvY3VycnkiKTsKK3ZhciBMZXhlciAgICA9IHJlcXVpcmUoIi4vbGV4ZXIiKTsKK3Zh
ciBMZXhpbmcgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9sZXhpbmciKTsKK3ZhciBQ
YXJzZXIgICA9IHJlcXVpcmUoIi4vcGFyc2VyIik7Cit2YXIgU2NyaXB0ICAgPSByZXF1aXJlKCIu
L3NjcmlwdCIpOwordmFyIFNvdXJjZSAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciBDYW1s
X29iaiA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOworCitmdW5jdGlv
biBwYXJzZSRwcmltZShuYW1lLCBsZXhidWYsIHN0YXJ0KSB7CisgIHZhciBpbml0ID0gbGV4YnVm
Wy8qIGxleF9jdXJyX3AgKi8xMV07CisgIGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdID0gLyog
cmVjb3JkICovWworICAgIC8qIHBvc19mbmFtZSAqL25hbWUsCisgICAgLyogcG9zX2xudW0gKi9p
bml0Wy8qIHBvc19sbnVtICovMV0sCisgICAgLyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAq
LzJdLAorICAgIC8qIHBvc19jbnVtICovaW5pdFsvKiBwb3NfY251bSAqLzNdCisgIF07CisgIHRy
eSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKHN0YXJ0LCBMZXhlci50b2tlbiwgbGV4YnVmKTsKKyAg
fQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuWzBdID09PSBTY3JpcHQuU3ludGF4KSB7Cisg
ICAgICB2YXIgcmVnaW9uID0gZXhuWzFdOworICAgICAgdmFyIHJlZ2lvbiRwcmltZSA9IENhbWxf
b2JqLmNhbWxfbm90ZXF1YWwocmVnaW9uLCBTb3VyY2Uubm9fcmVnaW9uKSA/IHJlZ2lvbiA6IC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBsZWZ0ICovTGV4ZXIuY29udmVydF9wb3MobGV4YnVm
Wy8qIGxleF9zdGFydF9wICovMTBdKSwKKyAgICAgICAgICAvKiByaWdodCAqL0xleGVyLmNvbnZl
cnRfcG9zKGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdKQorICAgICAgICBdOworICAgICAgdGhy
b3cgWworICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgIHJlZ2lvbiRwcmlt
ZSwKKyAgICAgICAgICAgIGV4blsyXQorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBwYXJzZShuYW1lLCBs
ZXhidWYsIHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAg
ICAgcmV0dXJuIHBhcnNlJHByaW1lKG5hbWUsIGxleGJ1ZiwgUGFyc2VyLm1vZHVsZTEpOworICAg
IGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gcGFyc2UkcHJpbWUobmFtZSwgbGV4YnVmLCBQYXJz
ZXIuc2NyaXB0KTsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuIHBhcnNlJHByaW1lKG5h
bWUsIGxleGJ1ZiwgUGFyc2VyLnNjcmlwdDEpOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIHN0
cmluZ190byhzdGFydCwgcykgeworICB2YXIgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nKHMp
OworICByZXR1cm4gcGFyc2UoInN0cmluZyIsIGxleGJ1Ziwgc3RhcnQpOworfQorCitmdW5jdGlv
biBzdHJpbmdfdG9fc2NyaXB0KHMpIHsKKyAgcmV0dXJuIHN0cmluZ190bygvKiBTY3JpcHQgKi8x
LCBzKTsKK30KKworZnVuY3Rpb24gc3RyaW5nX3RvX21vZHVsZShzKSB7CisgIHJldHVybiBzdHJp
bmdfdG8oLyogTW9kdWxlICovMCwgcyk7Cit9CisKK3ZhciBTeW50YXggPSBTY3JpcHQuU3ludGF4
OworCitleHBvcnRzLlN5bnRheCAgICAgICAgICAgPSBTeW50YXg7CitleHBvcnRzLnBhcnNlICAg
ICAgICAgICAgPSBwYXJzZTsKK2V4cG9ydHMuc3RyaW5nX3RvX3NjcmlwdCA9IHN0cmluZ190b19z
Y3JpcHQ7CitleHBvcnRzLnN0cmluZ190b19tb2R1bGUgPSBzdHJpbmdfdG9fbW9kdWxlOworLyog
TGV4ZXIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBwYXJzZS5qcyAvLy8v
Ly8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydwYXJz
ZXInXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0
YXJ0IG9mIHBhcnNlci5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBW
RVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3Zh
ciBBc3QgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYXN0Iik7Cit2YXIgSTMyICAg
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2kzMiIpOwordmFyIExpYiAgICAgICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9saWIiKTsKK3ZhciAkJE1hcCAgICAgICAgICAgICAgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9tYXAiKTsKK3ZhciBMaXN0ICAgICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQmxv
Y2sgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2si
KTsKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xp
Yi9qcy9jdXJyeSIpOwordmFyIFNjcmlwdCAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9z
Y3JpcHQiKTsKK3ZhciBTb3VyY2UgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc291cmNl
Iik7Cit2YXIgJCRTdHJpbmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvc3RyaW5nIik7Cit2YXIgUGFyc2luZyAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJi
cy1wbGF0Zm9ybS9saWIvanMvcGFyc2luZyIpOwordmFyIENhbWxfb2JqICAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIgT3BlcmF0b3Jz
ICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL29wZXJhdG9ycyIpOwordmFyIFBlcnZhc2l2ZXMg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3BlcnZhc2l2ZXMiKTsK
K3ZhciBDYW1sX2Zvcm1hdCAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9q
cy9jYW1sX2Zvcm1hdCIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9u
IHBhcnNlX2Vycm9yKG1zZykgeworICB2YXIgbXNnJDEgPSBtc2cgPT09ICJzeW50YXggZXJyb3Ii
ID8gInVuZXhwZWN0ZWQgdG9rZW4iIDogbXNnOworICB0aHJvdyBbCisgICAgICAgIFNjcmlwdC5T
eW50YXgsCisgICAgICAgIFNvdXJjZS5ub19yZWdpb24sCisgICAgICAgIG1zZyQxCisgICAgICBd
OworfQorCitmdW5jdGlvbiBwb3NpdGlvbl90b19wb3MocG9zaXRpb24pIHsKKyAgcmV0dXJuIC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBmaWxlICovcG9zaXRpb25bLyogcG9zX2ZuYW1lICov
MF0sCisgICAgICAgICAgLyogbGluZSAqL3Bvc2l0aW9uWy8qIHBvc19sbnVtICovMV0sCisgICAg
ICAgICAgLyogY29sdW1uICovcG9zaXRpb25bLyogcG9zX2NudW0gKi8zXSAtIHBvc2l0aW9uWy8q
IHBvc19ib2wgKi8yXSB8IDAKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gcG9zaXRpb25zX3Rv
X3JlZ2lvbihwb3NpdGlvbjEsIHBvc2l0aW9uMikgeworICByZXR1cm4gLyogcmVjb3JkICovWwor
ICAgICAgICAgIC8qIGxlZnQgKi9wb3NpdGlvbl90b19wb3MocG9zaXRpb24xKSwKKyAgICAgICAg
ICAvKiByaWdodCAqL3Bvc2l0aW9uX3RvX3Bvcyhwb3NpdGlvbjIpCisgICAgICAgIF07Cit9CisK
K2Z1bmN0aW9uIGF0KCkgeworICByZXR1cm4gcG9zaXRpb25zX3RvX3JlZ2lvbihQYXJzaW5nLnN5
bWJvbF9zdGFydF9wb3MoLyogKCkgKi8wKSwgUGFyc2luZy5zeW1ib2xfZW5kX3BvcygvKiAoKSAq
LzApKTsKK30KKworZnVuY3Rpb24gYXRpKGkpIHsKKyAgcmV0dXJuIHBvc2l0aW9uc190b19yZWdp
b24oUGFyc2luZy5yaHNfc3RhcnRfcG9zKGkpLCBQYXJzaW5nLnJoc19lbmRfcG9zKGkpKTsKK30K
KworZnVuY3Rpb24gbGl0ZXJhbChmLCBzKSB7CisgIHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8x
KGYsIHMpOworICB9CisgIGNhdGNoIChleG4peworICAgIGlmIChleG5bMF0gPT09IENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmZhaWx1cmUpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIFNj
cmlwdC5TeW50YXgsCisgICAgICAgICAgICBzWy8qIGF0ICovMF0sCisgICAgICAgICAgICAiY29u
c3RhbnQgb3V0IG9mIHJhbmdlIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBuYXQocywgYXQpIHsKKyAg
dHJ5IHsKKyAgICB2YXIgbiA9IENhbWxfZm9ybWF0LmNhbWxfaW50X29mX3N0cmluZyhzKTsKKyAg
ICBpZiAobiA+PSAwKSB7CisgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAor
ICAgICAgICAgICAgIiIKKyAgICAgICAgICBdOworICAgIH0KKyAgfQorICBjYXRjaCAoZXhuKXsK
KyAgICBpZiAoZXhuWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7Cisg
ICAgICB0aHJvdyBbCisgICAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgICAgYXQs
CisgICAgICAgICAgICAiaW50ZWdlciBjb25zdGFudCBvdXQgb2YgcmFuZ2UiCisgICAgICAgICAg
XTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9CisK
K2Z1bmN0aW9uIG5hdDMyKHMsIGF0KSB7CisgIHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKEkz
Mi5vZl9zdHJpbmdfdSwgcyk7CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4blswXSA9
PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSkgeworICAgICAgdGhyb3cgWworICAg
ICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgIGF0LAorICAgICAgICAgICAgImkz
MiBjb25zdGFudCBvdXQgb2YgcmFuZ2UiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9CisKK3ZhciBWYXJNYXAgPSAkJE1hcC5N
YWtlKFskJFN0cmluZy5jb21wYXJlXSk7CisKK2Z1bmN0aW9uIGVtcHR5X2NvbnRleHQoKSB7Cisg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogdHlwZXMgOiByZWNvcmQgKi9bCisg
ICAgICAgICAgICAvKiB0bWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAgICAgICAgICAv
KiB0bGlzdCA6IFtdICovMAorICAgICAgICAgIF0sCisgICAgICAgICAgLyogdGFibGVzIDogcmVj
b3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAg
ICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIG1lbW9yaWVz
IDogcmVjb3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0s
CisgICAgICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIGZ1
bmNzIDogcmVjb3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICov
MF0sCisgICAgICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8q
IGxvY2FscyA6IHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0
eSAqLzBdLAorICAgICAgICAgICAgLyogY291bnQgKi8wCisgICAgICAgICAgXSwKKyAgICAgICAg
ICAvKiBnbG9iYWxzIDogcmVjb3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8q
IGVtcHR5ICovMF0sCisgICAgICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAg
ICAgICAgIC8qIGxhYmVscyAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdCisgICAgICAgIF07Cit9CisK
K2Z1bmN0aW9uIGVudGVyX2Z1bmMoYykgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAg
ICAgIC8qIHR5cGVzICovY1svKiB0eXBlcyAqLzBdLAorICAgICAgICAgIC8qIHRhYmxlcyAqL2Nb
LyogdGFibGVzICovMV0sCisgICAgICAgICAgLyogbWVtb3JpZXMgKi9jWy8qIG1lbW9yaWVzICov
Ml0sCisgICAgICAgICAgLyogZnVuY3MgKi9jWy8qIGZ1bmNzICovM10sCisgICAgICAgICAgLyog
bG9jYWxzIDogcmVjb3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5
ICovMF0sCisgICAgICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAg
IC8qIGdsb2JhbHMgKi9jWy8qIGdsb2JhbHMgKi81XSwKKyAgICAgICAgICAvKiBsYWJlbHMgKi9W
YXJNYXBbLyogZW1wdHkgKi8wXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0eXBlXyhjLCB4
KSB7CisgIHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKFZhck1hcFsvKiBmaW5kICovMjFdLCB4
Wy8qIGl0ICovMV0sIGNbLyogdHlwZXMgKi8wXVsvKiB0bWFwICovMF0pOworICB9CisgIGNhdGNo
IChleG4peworICAgIGlmIChleG4gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3Vu
ZCkgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAg
ICAgIHhbLyogYXQgKi8wXSwKKyAgICAgICAgICAgICJ1bmtub3duIHR5cGUgIiArIHhbLyogaXQg
Ki8xXQorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOwor
ICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBsb29rdXAoY2F0ZWdvcnksIHNwYWNlLCB4KSB7Cisg
IHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKFZhck1hcFsvKiBmaW5kICovMjFdLCB4Wy8qIGl0
ICovMV0sIHNwYWNlWy8qIG1hcCAqLzBdKTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAo
ZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgIHRocm93
IFsKKyAgICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICB4Wy8qIGF0ICovMF0s
CisgICAgICAgICAgICAidW5rbm93biAiICsgKGNhdGVnb3J5ICsgKCIgIiArIHhbLyogaXQgKi8x
XSkpCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47Cisg
ICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGZ1bmMoYywgeCkgeworICByZXR1cm4gbG9va3VwKCJm
dW5jdGlvbiIsIGNbLyogZnVuY3MgKi8zXSwgeCk7Cit9CisKK2Z1bmN0aW9uIGxvY2FsKGMsIHgp
IHsKKyAgcmV0dXJuIGxvb2t1cCgibG9jYWwiLCBjWy8qIGxvY2FscyAqLzRdLCB4KTsKK30KKwor
ZnVuY3Rpb24gZ2xvYmFsKGMsIHgpIHsKKyAgcmV0dXJuIGxvb2t1cCgiZ2xvYmFsIiwgY1svKiBn
bG9iYWxzICovNV0sIHgpOworfQorCitmdW5jdGlvbiB0YWJsZShjLCB4KSB7CisgIHJldHVybiBs
b29rdXAoInRhYmxlIiwgY1svKiB0YWJsZXMgKi8xXSwgeCk7Cit9CisKK2Z1bmN0aW9uIG1lbW9y
eShjLCB4KSB7CisgIHJldHVybiBsb29rdXAoIm1lbW9yeSIsIGNbLyogbWVtb3JpZXMgKi8yXSwg
eCk7Cit9CisKK2Z1bmN0aW9uIGxhYmVsKGMsIHgpIHsKKyAgdHJ5IHsKKyAgICByZXR1cm4gQ3Vy
cnkuXzIoVmFyTWFwWy8qIGZpbmQgKi8yMV0sIHhbLyogaXQgKi8xXSwgY1svKiBsYWJlbHMgKi82
XSk7CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMubm90X2ZvdW5kKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBTY3JpcHQu
U3ludGF4LAorICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAgICAgICAgICAgInVua25vd24g
bGFiZWwgIiArIHhbLyogaXQgKi8xXQorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBhbm9uX3R5cGUoYywg
dHkpIHsKKyAgY1svKiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0gPSBQZXJ2YXNpdmVzLiRhdChj
Wy8qIHR5cGVzICovMF1bLyogdGxpc3QgKi8xXSwgLyogOjogKi9bCisgICAgICAgIHR5LAorICAg
ICAgICAvKiBbXSAqLzAKKyAgICAgIF0pOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5j
dGlvbiBiaW5kKGNhdGVnb3J5LCBzcGFjZSwgeCkgeworICBpZiAoQ3VycnkuXzIoVmFyTWFwWy8q
IG1lbSAqLzJdLCB4Wy8qIGl0ICovMV0sIHNwYWNlWy8qIG1hcCAqLzBdKSkgeworICAgIHRocm93
IFsKKyAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgIHhbLyogYXQgKi8wXSwKKyAg
ICAgICAgICAiZHVwbGljYXRlICIgKyAoY2F0ZWdvcnkgKyAoIiAiICsgeFsvKiBpdCAqLzFdKSkK
KyAgICAgICAgXTsKKyAgfQorICBzcGFjZVsvKiBtYXAgKi8wXSA9IEN1cnJ5Ll8zKFZhck1hcFsv
KiBhZGQgKi8zXSwgeFsvKiBpdCAqLzFdLCBzcGFjZVsvKiBjb3VudCAqLzFdLCBzcGFjZVsvKiBt
YXAgKi8wXSk7CisgIHNwYWNlWy8qIGNvdW50ICovMV0gPSBzcGFjZVsvKiBjb3VudCAqLzFdICsg
MSB8IDA7CisgIGlmIChzcGFjZVsvKiBjb3VudCAqLzFdKSB7CisgICAgcmV0dXJuIDA7CisgIH0K
KyAgZWxzZSB7CisgICAgdGhyb3cgWworICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAg
ICAgeFsvKiBhdCAqLzBdLAorICAgICAgICAgICJ0b28gbWFueSAiICsgKGNhdGVnb3J5ICsgIiBi
aW5kaW5ncyIpCisgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gYmluZF9mdW5jKGMsIHgp
IHsKKyAgcmV0dXJuIGJpbmQoImZ1bmN0aW9uIiwgY1svKiBmdW5jcyAqLzNdLCB4KTsKK30KKwor
ZnVuY3Rpb24gYmluZF9sb2NhbChjLCB4KSB7CisgIHJldHVybiBiaW5kKCJsb2NhbCIsIGNbLyog
bG9jYWxzICovNF0sIHgpOworfQorCitmdW5jdGlvbiBiaW5kX2dsb2JhbChjLCB4KSB7CisgIHJl
dHVybiBiaW5kKCJnbG9iYWwiLCBjWy8qIGdsb2JhbHMgKi81XSwgeCk7Cit9CisKK2Z1bmN0aW9u
IGJpbmRfdGFibGUoYywgeCkgeworICByZXR1cm4gYmluZCgidGFibGUiLCBjWy8qIHRhYmxlcyAq
LzFdLCB4KTsKK30KKworZnVuY3Rpb24gYmluZF9tZW1vcnkoYywgeCkgeworICByZXR1cm4gYmlu
ZCgibWVtb3J5IiwgY1svKiBtZW1vcmllcyAqLzJdLCB4KTsKK30KKworZnVuY3Rpb24gYW5vbihj
YXRlZ29yeSwgc3BhY2UsIG4pIHsKKyAgc3BhY2VbLyogY291bnQgKi8xXSA9IHNwYWNlWy8qIGNv
dW50ICovMV0gKyBuIHwgMDsKKyAgaWYgKEN1cnJ5Ll8yKEkzMi5sdF91LCBzcGFjZVsvKiBjb3Vu
dCAqLzFdLCBuKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAg
ICAgICAgIFNvdXJjZS5ub19yZWdpb24sCisgICAgICAgICAgInRvbyBtYW55ICIgKyAoY2F0ZWdv
cnkgKyAiIGJpbmRpbmdzIikKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
MDsKKyAgfQorfQorCitmdW5jdGlvbiBhbm9uX2Z1bmMoYykgeworICByZXR1cm4gYW5vbigiZnVu
Y3Rpb24iLCBjWy8qIGZ1bmNzICovM10sIDEpOworfQorCitmdW5jdGlvbiBhbm9uX2xvY2Fscyhj
LCB0cykgeworICByZXR1cm4gYW5vbigibG9jYWwiLCBjWy8qIGxvY2FscyAqLzRdLCBDdXJyeS5f
MShMaWIuTGlzdDMyWy8qIGxlbmd0aCAqLzBdLCB0cykpOworfQorCitmdW5jdGlvbiBhbm9uX2ds
b2JhbChjKSB7CisgIHJldHVybiBhbm9uKCJnbG9iYWwiLCBjWy8qIGdsb2JhbHMgKi81XSwgMSk7
Cit9CisKK2Z1bmN0aW9uIGFub25fdGFibGUoYykgeworICByZXR1cm4gYW5vbigidGFibGUiLCBj
Wy8qIHRhYmxlcyAqLzFdLCAxKTsKK30KKworZnVuY3Rpb24gYW5vbl9tZW1vcnkoYykgeworICBy
ZXR1cm4gYW5vbigibWVtb3J5IiwgY1svKiBtZW1vcmllcyAqLzJdLCAxKTsKK30KKworZnVuY3Rp
b24gYW5vbl9sYWJlbChjKSB7CisgIHZhciBuZXdyZWNvcmQgPSBjLnNsaWNlKCk7CisgIG5ld3Jl
Y29yZFsvKiBsYWJlbHMgKi82XSA9IEN1cnJ5Ll8yKFZhck1hcFsvKiBtYXAgKi8yMl0sIGZ1bmN0
aW9uIChwYXJhbSkgeworICAgICAgICByZXR1cm4gMSArIHBhcmFtIHwgMDsKKyAgICAgIH0sIGNb
LyogbGFiZWxzICovNl0pOworICByZXR1cm4gbmV3cmVjb3JkOworfQorCit2YXIgZW1wdHlfdHlw
ZSA9IC8qIEZ1bmNUeXBlICovWworICAvKiBbXSAqLzAsCisgIC8qIFtdICovMAorXTsKKworZnVu
Y3Rpb24gZXhwbGljaXRfc2lnKGMsIHZhcl9zZW0sIHR5LCBhdCkgeworICB2YXIgeCA9IEN1cnJ5
Ll8yKHZhcl9zZW0sIGMsIHR5cGVfKTsKKyAgaWYgKHhbLyogaXQgKi8xXSA8IEN1cnJ5Ll8xKExp
Yi5MaXN0MzJbLyogbGVuZ3RoICovMF0sIGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKSAm
JiBDYW1sX29iai5jYW1sX25vdGVxdWFsKHR5LCBlbXB0eV90eXBlKSAmJiBDYW1sX29iai5jYW1s
X25vdGVxdWFsKHR5LCBDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBjWy8qIHR5cGVz
ICovMF1bLyogdGxpc3QgKi8xXSwgeFsvKiBpdCAqLzFdKSkpIHsKKyAgICB0aHJvdyBbCisgICAg
ICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICBhdCwKKyAgICAgICAgICAic2lnbmF0dXJl
IG1pc21hdGNoIgorICAgICAgICBdOworICB9CisgIHJldHVybiB4OworfQorCitmdW5jdGlvbiBp
bmxpbmVfdHlwZShjLCB0eSwgYXQpIHsKKyAgdmFyIG1hdGNoID0gQ3VycnkuXzIoTGliLkxpc3Rb
LyogaW5kZXhfb2YgKi82XSwgdHksIGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKTsKKyAg
aWYgKG1hdGNoKSB7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQobWF0Y2hbMF0sIGF0KTsKKyAg
fQorICBlbHNlIHsKKyAgICB2YXIgaSA9IEN1cnJ5Ll8xKExpYi5MaXN0MzJbLyogbGVuZ3RoICov
MF0sIGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKTsKKyAgICBhbm9uX3R5cGUoYywgdHkp
OworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KGksIGF0KTsKKyAgfQorfQorCit2YXIgeXl0cmFu
c2xfY29uc3QgPSAvKiBhcnJheSAqL1sKKyAgMjYzLAorICAyNjQsCisgIDI2NSwKKyAgMjY2LAor
ICAyNjcsCisgIDI2OCwKKyAgMjY5LAorICAyNzAsCisgIDI3MSwKKyAgMjcyLAorICAyNzMsCisg
IDI3NCwKKyAgMjc1LAorICAyNzYsCisgIDI3NywKKyAgMjc4LAorICAyNzksCisgIDI4MCwKKyAg
MjgxLAorICAyODIsCisgIDI4MywKKyAgMjg0LAorICAyODUsCisgIDI4NiwKKyAgMjk2LAorICAy
OTcsCisgIDI5OCwKKyAgMjk5LAorICAzMDAsCisgIDMwMSwKKyAgMzAyLAorICAzMDMsCisgIDMw
NCwKKyAgMzA1LAorICAzMDYsCisgIDMwNywKKyAgMzA4LAorICAzMDksCisgIDMxMCwKKyAgMzEx
LAorICAzMTIsCisgIDMxMywKKyAgMzE0LAorICAzMTUsCisgIDMxNiwKKyAgMzE3LAorICAzMTgs
CisgIDMxOSwKKyAgMzIwLAorICAzMjEsCisgIDMyMiwKKyAgMzIzLAorICAzMjQsCisgIDMyNSwK
KyAgMzI2LAorICAzMjcsCisgIDAsCisgIDAKK107CisKK3ZhciB5eXRyYW5zbF9ibG9jayA9IC8q
IGFycmF5ICovWworICAyNTcsCisgIDI1OCwKKyAgMjU5LAorICAyNjAsCisgIDI2MSwKKyAgMjYy
LAorICAyODcsCisgIDI4OCwKKyAgMjg5LAorICAyOTAsCisgIDI5MSwKKyAgMjkyLAorICAyOTMs
CisgIDI5NCwKKyAgMjk1LAorICAzMjgsCisgIDAKK107CisKK3ZhciB5eWFjdCA9IC8qIGFycmF5
ICovWworICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoInBh
cnNlciIpOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICIiOworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gXzEgKyBfMjsKKyAgfSwKKyAgZnVu
Y3Rpb24gKCkgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDApOworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIF8xLAorICAgICAg
ICAgICAgXzIKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJu
IC8qIEZ1bmNSZWZUeXBlICovMDsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7
CisgICAgcmV0dXJuIC8qIEdsb2JhbFR5cGUgKi9bCisgICAgICAgICAgICBfMSwKKyAgICAgICAg
ICAgIC8qIEltbXV0YWJsZSAqLzAKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gLyogR2xvYmFsVHlwZSAqL1sKKyAgICAgICAgICAg
IF8zLAorICAgICAgICAgICAgLyogTXV0YWJsZSAqLzEKKyAgICAgICAgICBdOworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1
cm4gLyogRnVuY1R5cGUgKi9bCisgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAy
KTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsK
KyAgICB2YXIgaW5zID0gXzVbMF07CisgICAgaWYgKGlucyAhPT0gLyogW10gKi8wKSB7CisgICAg
ICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBT
Y3JpcHQuU3ludGF4LAorICAgICAgICAgICAgYXQkMSwKKyAgICAgICAgICAgICJyZXN1bHQgYmVm
b3JlIHBhcmFtZXRlciIKKyAgICAgICAgICBdOworICAgIH0KKyAgICByZXR1cm4gLyogRnVuY1R5
cGUgKi9bCisgICAgICAgICAgICBpbnMsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChfMywg
XzVbMV0pCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7
CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgcmV0dXJuIC8qIEZ1bmNUeXBlICovWworICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoXzMs
IF81WzBdKSwKKyAgICAgICAgICAgIF81WzFdCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMik7CisgICAgdmFyIF82ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgICAgcmV0dXJuIC8qIEZ1bmNUeXBlICovWworICAgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAgIF80LAorICAgICAgICAgICAgICBfNlswXQorICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgIF82WzFdCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMCk7CisgICAgcmV0dXJuIC8qIFRhYmxlVHlwZSAqL1sKKyAgICAgICAgICAgIF8xLAor
ICAgICAgICAgICAgXzIKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAwKTsKKyAgICByZXR1cm4gLyogTWVtb3J5VHlwZSAqL1tfMV07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAg
ICAgICAvKiBtaW4gKi9uYXQzMihfMSwgYXRpKDEpKSwKKyAgICAgICAgICAgIC8qIG1heCA6IE5v
bmUgKi8wCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1pbiAqL25hdDMyKF8xLCBh
dGkoMSkpLAorICAgICAgICAgICAgLyogbWF4IDogU29tZSAqL1tuYXQzMihfMiwgYXRpKDIpKV0K
KyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAg
ICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgIH0sCisg
IGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KF8x
LCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoXzEsIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5j
dGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdChfMSwgYXQo
LyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZh
ciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKF8sIF8kMSkgewor
ICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQobmF0MzIoXzEsIGF0JDEpLCBhdCQxKTsKKyAgICB9
OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICB2YXIgYXQkMSA9IGF0
KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBsb29rdXApIHsKKyAgICAgIHJl
dHVybiBTb3VyY2UuJGF0JGF0KEN1cnJ5Ll8yKGxvb2t1cCwgYywgU291cmNlLiRhdCRhdChfMSwg
YXQkMSkpLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJu
IGZ1bmN0aW9uIChfLCBfJDEpIHsKKyAgICAgIHJldHVybiAvKiBbXSAqLzA7CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBs
b29rdXApIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzIo
XzEsIGMsIGxvb2t1cCksCisgICAgICAgICAgICAgIEN1cnJ5Ll8yKF8yLCBjLCBsb29rdXApCisg
ICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4g
ZnVuY3Rpb24gKGMsIGFub24sIF8pIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShhbm9uLCBjKTsK
KyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4g
ZnVuY3Rpb24gKGMsIF8sIGJpbmQpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihiaW5kLCBjLCBf
MSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAg
dmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0
dXJuIFNvdXJjZS4kYXQkYXQoXzEsIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCB4cykgeworICAgICAgTGlzdC5pdGVyKGZ1bmN0
aW9uICh4KSB7CisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBTY3JpcHQu
U3ludGF4LAorICAgICAgICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAgICAgICAgICAgICAg
ICAgIm1pc21hdGNoaW5nIGxhYmVsIgorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfSwg
eHMpOworICAgICAgcmV0dXJuIGFub25fbGFiZWwoYyk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCB4cykgeworICAg
ICAgTGlzdC5pdGVyKGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICBpZiAoeFsvKiBpdCAqLzFd
ICE9PSBfMVsvKiBpdCAqLzFdKSB7CisgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAg
ICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgICAgICAgICAgeFsvKiBhdCAqLzBd
LAorICAgICAgICAgICAgICAgICAgICAibWlzbWF0Y2hpbmcgbGFiZWwiCisgICAgICAgICAgICAg
ICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHhzKTsKKyAgICAgIHZhciBj
JDEgPSBjOworICAgICAgdmFyIHggPSBfMTsKKyAgICAgIHZhciBuZXdyZWNvcmQgPSBjJDEuc2xp
Y2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBsYWJlbHMgKi82XSA9IEN1cnJ5Ll8zKFZhck1hcFsv
KiBhZGQgKi8zXSwgeFsvKiBpdCAqLzFdLCAwLCBDdXJyeS5fMihWYXJNYXBbLyogbWFwICovMjJd
LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMSArIHBhcmFtIHwg
MDsKKyAgICAgICAgICAgICAgfSwgYyQxWy8qIGxhYmVscyAqLzZdKSk7CisgICAgICByZXR1cm4g
bmV3cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gLyog
W10gKi8wOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4g
LyogOjogKi9bCisgICAgICAgICAgICBfMSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAg
ICAgIF07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gMDsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIG5hdDMyKF8xLCBhdCgvKiAoKSAq
LzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAvKiBOb25lICovMDsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIG4gPSBuYXQoXzEsIGF0
KC8qICgpICovMCkpOworICAgIGlmICghQ3VycnkuXzEoTGliLkludFsvKiBpc19wb3dlcl9vZl90
d28gKi8xXSwgbikpIHsKKyAgICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICBhdCQxLAorICAg
ICAgICAgICAgImFsaWdubWVudCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIgorICAgICAgICAgIF07
CisgICAgfQorICAgIHJldHVybiAvKiBTb21lICovW0N1cnJ5Ll8xKExpYi5JbnRbLyogbG9nMiAq
LzBdLCBuKV07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBh
dCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJl
dHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgU291cmNlLiRhdCRhdChDdXJyeS5fMShfMSwg
YyksIGF0JDEpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAg
fTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIGF0JDEgPSBh
dCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KEN1cnJ5Ll8xKF8xLCBjKSwgYXQk
MSksCisgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgXTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy51bnJlYWNoYWJs
ZTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgp
IHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMubm9wOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5icihDdXJyeS5fMihfMiwgYywgbGFiZWwpKTsKKyAgICB9OworICB9LAor
ICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
KyAgICAgIHJldHVybiBPcGVyYXRvcnMuYnJfaWYoQ3VycnkuXzIoXzIsIGMsIGxhYmVsKSk7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8y
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8zID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShMaWIuTGlzdFsvKiBzcGxpdF9s
YXN0ICovNV0sIC8qIDo6ICovWworICAgICAgICAgICAgQ3VycnkuXzIoXzIsIGMsIGxhYmVsKSwK
KyAgICAgICAgICAgIEN1cnJ5Ll8yKF8zLCBjLCBsYWJlbCkKKyAgICAgICAgICBdKTsKKyAgICAg
IHJldHVybiBPcGVyYXRvcnMuYnJfdGFibGUobWF0Y2hbMF0sIG1hdGNoWzFdKTsKKyAgICB9Owor
ICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJl
dHVybiBPcGVyYXRvcnMuJCRyZXR1cm47CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmNhbGwoQ3VycnkuXzIoXzIsIGMsIGZ1bmMpKTsKKyAgICB9OworICB9LAorICBmdW5j
dGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAg
IHJldHVybiBPcGVyYXRvcnMuY2FsbF9pbmRpcmVjdChDdXJyeS5fMihfMiwgYywgdHlwZV8pKTsK
KyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsK
KyAgICAgIHJldHVybiBPcGVyYXRvcnMuZHJvcDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuc2Vs
ZWN0OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJl
dHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfbG9jYWwoQ3Vy
cnkuXzIoXzIsIGMsIGxvY2FsKSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gT3BlcmF0
b3JzLnNldF9sb2NhbChDdXJyeS5fMihfMiwgYywgbG9jYWwpKTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAg
ICAgIHJldHVybiBPcGVyYXRvcnMudGVlX2xvY2FsKEN1cnJ5Ll8yKF8yLCBjLCBsb2NhbCkpOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBm
dW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfZ2xvYmFsKEN1cnJ5Ll8y
KF8yLCBjLCBnbG9iYWwpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNl
cl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMu
c2V0X2dsb2JhbChDdXJyeS5fMihfMiwgYywgZ2xvYmFsKSk7CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVy
biBDdXJyeS5fMihfMSwgXzMsIF8yKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAyKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAxKTsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8yKF8x
LCBfMywgXzIpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKCkgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5jdXJyZW50X21lbW9yeTsKKyAgICB9
OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAg
IHJldHVybiBPcGVyYXRvcnMuZ3Jvd19tZW1vcnk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBs
aXRlcmFsKF8xLCBfMilbMF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBfMTsKKyAgICB9
OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rp
b24gKCkgeworICAgICAgcmV0dXJuIF8xOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gXzE7
CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJu
IGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBfMTsKKyAgICB9OworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0
dXJuIF8xOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAg
IHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZh
ciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVy
biBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgXzUp
OworICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJpbWUpOworICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5ibG9jayhtYXRjaFswXSwgbWF0Y2hbMV0pOworICAgIH07CisgIH0sCisgIGZ1
bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFy
IGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgXzUpOworICAgICAgdmFyIG1hdGNoID0gQ3Vycnku
XzEoXzMsIGMkcHJpbWUpOworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5sb29wKG1hdGNoWzBdLCBt
YXRjaFsxXSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7Cisg
ICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAg
dmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0
dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgYyRwcmltZSA9IEN1cnJ5Ll8yKF8yLCBjLCBf
NSk7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMywgYyRwcmltZSk7CisgICAgICByZXR1
cm4gT3BlcmF0b3JzLmlmXyhtYXRjaFswXSwgbWF0Y2hbMV0sIC8qIFtdICovMCk7CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNik7CisgICAgdmFyIF8zID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF81ID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF82ID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF84ID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAg
ICB2YXIgYyRwcmltZSA9IEN1cnJ5Ll8yKF8yLCBjLCBQZXJ2YXNpdmVzLiRhdChfNSwgXzgpKTsK
KyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiBP
cGVyYXRvcnMuaWZfKG1hdGNoWzBdLCBtYXRjaFsxXSwgQ3VycnkuXzEoXzYsIGMkcHJpbWUpKTsK
KyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgXzEs
CisgICAgICAgICAgICAgIEN1cnJ5Ll8xKF8yLCBjKQorICAgICAgICAgICAgXTsKKyAgICB9Owor
ICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8q
ICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBD
dXJyeS5fMShfMiwgYyk7CisgICAgICByZXR1cm4gUGVydmFzaXZlcy4kYXQobWF0Y2hbMF0sIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgU291cmNlLiRhdCRhdChtYXRjaFsxXSwgYXQkMSks
CisgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICBdKTsKKyAgICB9
OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24g
KGMpIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzEo
XzIsIGMpWzFdLAorICAgICAgICAgICAgICBDdXJyeS5fMShfMSwgYykKKyAgICAgICAgICAgIF07
CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8z
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChjKSB7CisgICAgICB2YXIgYyRwcmltZSA9IEN1cnJ5Ll8yKF8yLCBjLCAvKiBbXSAq
LzApOworICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJpbWUpOworICAgICAgcmV0
dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAg
IE9wZXJhdG9ycy5ibG9jayhtYXRjaFswXSwgbWF0Y2hbMV0pCisgICAgICAgICAgICBdOworICAg
IH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgLyogW10gKi8wKTsK
KyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiAv
KiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgLyogW10gKi8wLAorICAgICAgICAgICAgICBPcGVy
YXRvcnMubG9vcChtYXRjaFswXSwgbWF0Y2hbMV0pCisgICAgICAgICAgICBdOworICAgIH07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgewor
ICAgICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgLyogW10gKi8wKTsKKyAgICAgIHZh
ciBtYXRjaCA9IEN1cnJ5Ll8yKF80LCBjLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgIE9wZXJhdG9ycy5p
Zl8oXzMsIG1hdGNoWzFdLCBtYXRjaFsyXSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwK
KyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF83ID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBjJHBy
aW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIFtdICov
MCwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzMsIGMkcHJpbWUpLAorICAgICAgICAgICAgICBD
dXJyeS5fMShfNywgYyRwcmltZSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBjJHByaW1l
KSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIFtdICovMCwK
KyAgICAgICAgICAgICAgQ3VycnkuXzEoXzMsIGMkcHJpbWUpLAorICAgICAgICAgICAgICAvKiBb
XSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgOCk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgNSk7CisgICAgdmFyIF84ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAg
Q3VycnkuXzEoXzQsIGMkcHJpbWUpLAorICAgICAgICAgICAgICBDdXJyeS5fMShfOCwgYyRwcmlt
ZSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgNCk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAg
Q3VycnkuXzEoXzQsIGMkcHJpbWUpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAg
dmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJu
IGZ1bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzIsIGMk
cHJpbWUpLAorICAgICAgICAgICAgICBDdXJyeS5fMShfMywgYyRwcmltZSkKKyAgICAgICAgICAg
IF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAg
dmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFy
IF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJu
IGZ1bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzIsIGMk
cHJpbWUpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICBy
ZXR1cm4gLyogW10gKi8wOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDAp
OworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuJGF0
KEN1cnJ5Ll8xKF8xLCBjKSwgQ3VycnkuXzEoXzIsIGMpKTsKKyAgICB9OworICB9LAorICBmdW5j
dGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAg
IHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJl
dHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGVzMSA9IEN1cnJ5Ll8xKF8xLCBjKTsKKyAg
ICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgICAgbWF0Y2hbMF0gKyAxIHwgMCwKKyAgICAgICAgICAgICAgUGVydmFz
aXZlcy4kYXQoZXMxLCBtYXRjaFsxXSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzAp
OworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQo
Q3VycnkuXzEoXzEsIGMpLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMCk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBf
NSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBtYXRj
aCA9IF81WzBdOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIC8qIEZ1bmNU
eXBlICovWworICAgICAgICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgICAgICAgUGVydmFzaXZl
cy4kYXQoXzMsIG1hdGNoWzFdKQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGZ1bmN0aW9u
IChjKSB7CisgICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShfNVsxXSwgYyk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7
CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgdmFyIG1hdGNoID0gXzVbMF07CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAg
ICAgLyogRnVuY1R5cGUgKi9bCisgICAgICAgICAgICAgIFBlcnZhc2l2ZXMuJGF0KF8zLCBtYXRj
aFswXSksCisgICAgICAgICAgICAgIG1hdGNoWzFdCisgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgZnVuY3Rpb24gKGMpIHsKKyAgICAgICAgICAgICAgYW5vbl9sb2NhbHMoYywgXzMpOworICAg
ICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoXzVbMV0sIGMpOworICAgICAgICAgICAgfQorICAg
ICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBf
NCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBtYXRjaCA9
IF82WzBdOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIC8qIEZ1bmNUeXBl
ICovWworICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBfNCwKKyAgICAg
ICAgICAgICAgICBtYXRjaFswXQorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICBtYXRj
aFsxXQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIChjKSB7CisgICAgICAg
ICAgICAgIGJpbmRfbG9jYWwoYywgXzMpOworICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEo
XzZbMV0sIGMpOworICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
IGVtcHR5X3R5cGUsCisgICAgICAgICAgICBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICB2
YXIgYyRwcmltZSA9IGFub25fbGFiZWwoYyk7CisgICAgICAgICAgICAgIHJldHVybiAvKiByZWNv
cmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgLyogZnR5cGUgKi9Tb3VyY2UuJGF0JGF0KC0x
LCBhdCgvKiAoKSAqLzApKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgOiBbXSAq
LzAsCisgICAgICAgICAgICAgICAgICAgICAgLyogYm9keSAqL0N1cnJ5Ll8xKF8xLCBjJHByaW1l
KQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIF07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
KyAgICAgICAgICAgIF81WzBdLAorICAgICAgICAgICAgZnVuY3Rpb24gKGMpIHsKKyAgICAgICAg
ICAgICAgYW5vbl9sb2NhbHMoYywgXzMpOworICAgICAgICAgICAgICB2YXIgZiA9IEN1cnJ5Ll8x
KF81WzFdLCBjKTsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgICAvKiBmdHlwZSAqL2ZbLyogZnR5cGUgKi8wXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAvKiBsb2NhbHMgKi9QZXJ2YXNpdmVzLiRhdChfMywgZlsvKiBsb2NhbHMgKi8xXSks
CisgICAgICAgICAgICAgICAgICAgICAgLyogYm9keSAqL2ZbLyogYm9keSAqLzJdCisgICAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF82ID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
XzZbMF0sCisgICAgICAgICAgICBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICBiaW5kX2xv
Y2FsKGMsIF8zKTsKKyAgICAgICAgICAgICAgdmFyIGYgPSBDdXJyeS5fMShfNlsxXSwgYyk7Cisg
ICAgICAgICAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAg
LyogZnR5cGUgKi9mWy8qIGZ0eXBlICovMF0sCisgICAgICAgICAgICAgICAgICAgICAgLyogbG9j
YWxzIDogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICBfNCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZbLyogbG9jYWxzICovMV0KKyAgICAgICAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9mWy8qIGJvZHkgKi8yXQorICAgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDQpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDIpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX2Z1bmMsIGJpbmRfZnVuYyk7
CisgICAgICB2YXIgdCA9IGV4cGxpY2l0X3NpZyhjLCBfNSwgXzZbMF0sIGF0JDEpOworICAgICAg
cmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgdmFyIGluaXQgPSBDdXJyeS5fMShfNlsxXSwgZW50ZXJfZnVuYyhjKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIGZ0eXBlICovdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2FscyAqLzFdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIGJvZHkgKi9pbml0Wy8qIGJvZHkgKi8yXQorICAgICAgICAgICAgICAgICAg
ICAgICAgICBdLCBhdCQxKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgQ3Vycnku
XzMoXzQsIC8qIEZ1bmNFeHBvcnQgKi8wLCBjWy8qIGZ1bmNzICovM11bLyogY291bnQgKi8xXSwg
YykKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
Mik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykg
eworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHZh
ciB0ID0gZXhwbGljaXRfc2lnKGMsIF80LCBfNVswXSwgYXQkMSk7CisgICAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2
YXIgaW5pdCA9IEN1cnJ5Ll8xKF81WzFdLCBlbnRlcl9mdW5jKGMpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogZnR5cGUgKi90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxv
Y2FscyAqL2luaXRbLyogbG9jYWxzICovMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogYm9keSAqL2luaXRbLyogYm9keSAqLzJdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0s
IGF0JDEpOworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7Cisg
ICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAg
dmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFy
IGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAg
Q3VycnkuXzMoXzMsIGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHZhciB0ID0gaW5s
aW5lX3R5cGUoYywgXzVbMF0sIGF0JDEpOworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGluaXQgPSBDdXJy
eS5fMShfNVsxXSwgZW50ZXJfZnVuYyhjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJj
ZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZ0
eXBlICovdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8q
IGxvY2FscyAqLzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9pbml0
Wy8qIGJvZHkgKi8yXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgQ3VycnkuXzMoXzQsIC8qIEZ1bmNFeHBvcnQgKi8w
LCBjWy8qIGZ1bmNzICovM11bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAgICAgIF07CisgICAg
fTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgv
KiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMs
IGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHZhciB0ID0gaW5saW5lX3R5cGUoYywg
XzRbMF0sIGF0JDEpOworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGluaXQgPSBDdXJyeS5fMShfNFsxXSwg
ZW50ZXJfZnVuYyhjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZ0eXBlICovdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2FscyAqLzFd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9pbml0Wy8qIGJvZHkgKi8y
XQorICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisg
IGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHJldHVybiBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzEsIGMpLCBhdCQx
KTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIg
XzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9
IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4g
U291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBpbmRleCAq
L0N1cnJ5Ll8yKF8zLCBjLCB0YWJsZSksCisgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9D
dXJyeS5fMShfNCwgYyksCisgICAgICAgICAgICAgICAgICAvKiBpbml0ICovQ3VycnkuXzIoXzUs
IGMsIGZ1bmMpCisgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAg
IHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVj
b3JkICovWworICAgICAgICAgICAgICAgICAgLyogaW5kZXggKi9Tb3VyY2UuJGF0JGF0KDAsIGF0
JDEpLAorICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0ICovQ3VycnkuXzEoXzMsIGMpLAorICAg
ICAgICAgICAgICAgICAgLyogaW5pdCAqL0N1cnJ5Ll8yKF80LCBjLCBmdW5jKQorICAgICAgICAg
ICAgICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIp
OworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwor
ICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
KyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX3RhYmxlLCBiaW5kX3RhYmxlKTsKKyAgICAgIHJl
dHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICAgICBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1svKiB0dHlwZSAqL181XSwgYXQkMSks
CisgICAgICAgICAgICAgICAgLyogW10gKi8wLAorICAgICAgICAgICAgICAgIEN1cnJ5Ll8zKF80
LCAvKiBUYWJsZUV4cG9ydCAqLzEsIGNbLyogdGFibGVzICovMV1bLyogY291bnQgKi8xXSwgYykK
KyAgICAgICAgICAgICAgXTsKKyAgICAgIH07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9f
Y2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgNyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgNik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgNSk7CisgICAgdmFyIF84ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMik7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgdmFyIGkgPSBjWy8qIHRhYmxlcyAqLzFdWy8qIGNvdW50ICovMV07Cisg
ICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl90YWJsZSwgYmluZF90YWJsZSk7CisgICAgICByZXR1
cm4gZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgaW5pdCA9IEN1cnJ5Ll8yKF84LCBjLCBmdW5j
KTsKKyAgICAgICAgdmFyIHNpemUgPSBMaXN0Lmxlbmd0aChpbml0KTsKKyAgICAgICAgcmV0dXJu
IC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICov
Wy8qIHR0eXBlIDogVGFibGVUeXBlICovWworICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVj
b3JkICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtaW4gKi9zaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBtYXggOiBTb21lICovW3NpemVdCisgICAgICAgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgXzUKKyAgICAgICAgICAgICAg
ICAgICAgICBdXSwgYXQkMSksCisgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIGluZGV4ICovU291cmNlLiRhdCRhdChpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIG9mZnNldCAqL1NvdXJjZS4kYXQkYXQoLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KE9wZXJhdG9ycy5pMzJfY29uc3QoU291cmNl
LiRhdCRhdCgwLCBhdCQxKSksIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBpbml0ICovaW5pdAorICAgICAgICAgICAgICAgICAgICAgIF0s
IGF0JDEpLAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICBDdXJyeS5fMyhfNCwgLyogVGFibGVFeHBvcnQgKi8xLCBjWy8qIHRh
YmxlcyAqLzFdWy8qIGNvdW50ICovMV0sIGMpCisgICAgICAgICAgICAgIF07CisgICAgICB9Owor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQo
LyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBTb3Vy
Y2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIGluZGV4ICovQ3Vy
cnkuXzIoXzMsIGMsIG1lbW9yeSksCisgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9DdXJy
eS5fMShfNCwgYyksCisgICAgICAgICAgICAgICAgICAvKiBpbml0ICovXzUKKyAgICAgICAgICAg
ICAgICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAy
KTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsK
KyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7
CisgICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAg
ICAgICAvKiBpbmRleCAqL1NvdXJjZS4kYXQkYXQoMCwgYXQkMSksCisgICAgICAgICAgICAgICAg
ICAvKiBvZmZzZXQgKi9DdXJyeS5fMShfMywgYyksCisgICAgICAgICAgICAgICAgICAvKiBpbml0
ICovXzQKKyAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJu
IGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9tZW1vcnksIGJpbmRf
bWVtb3J5KTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgU291cmNl
LiRhdCRhdCgvKiByZWNvcmQgKi9bLyogbXR5cGUgKi9fNV0sIGF0JDEpLAorICAgICAgICAgICAg
ICAvKiBbXSAqLzAsCisgICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBNZW1vcnlFeHBvcnQg
Ki8yLCBjWy8qIG1lbW9yaWVzICovMl1bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAgICAgIF07
CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNik7CisgICAgdmFyIF80
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF83ID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIGF0JDEgPSBh
dCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGkgPSBj
Wy8qIG1lbW9yaWVzICovMl1bLyogY291bnQgKi8xXTsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBh
bm9uX21lbW9yeSwgYmluZF9tZW1vcnkpOworICAgICAgdmFyIHNpemUgPSAoXzcubGVuZ3RoICsg
NjU1MzUgfCAwKSAvIDY1NTM2IHwgMDsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bLyogbXR5cGUgOiBNZW1vcnlUeXBl
ICovWy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbiAqL3NpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXggOiBTb21lICovW3NpemVdCisgICAgICAg
ICAgICAgICAgICAgICAgXV1dLCBhdCQxKSwKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgLyogaW5kZXggKi9Tb3VyY2UuJGF0JGF0KGksIGF0JDEpLAorICAgICAgICAgICAgICAg
ICAgICAgIC8qIG9mZnNldCAqL1NvdXJjZS4kYXQkYXQoLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU291cmNlLiRhdCRhdChPcGVyYXRvcnMuaTMyX2NvbnN0KFNvdXJjZS4k
YXQkYXQoMCwgYXQkMSkpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBb
XSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSksCisgICAgICAgICAgICAg
ICAgICAgICAgLyogaW5pdCAqL183CisgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpLAorICAg
ICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICBD
dXJyeS5fMyhfNCwgLyogTWVtb3J5RXhwb3J0ICovMiwgY1svKiBtZW1vcmllcyAqLzJdWy8qIGNv
dW50ICovMV0sIGMpCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDUpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDIpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4g
ZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBpID0gY1svKiBtZW1vcmllcyAqLzJdWy8qIGNvdW50
ICovMV07CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9tZW1vcnksIGJpbmRfbWVtb3J5KTsK
KyAgICAgIHZhciBzaXplID0gKF82Lmxlbmd0aCArIDY1NTM1IHwgMCkgLyA2NTUzNiB8IDA7Cisg
ICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyog
cmVjb3JkICovWy8qIG10eXBlIDogTWVtb3J5VHlwZSAqL1svKiByZWNvcmQgKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBtaW4gKi9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
LyogbWF4IDogU29tZSAqL1tzaXplXQorICAgICAgICAgICAgICAgICAgICAgIF1dXSwgYXQkMSks
CisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQo
LyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4ICovU291cmNlLiRh
dCRhdChpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9Tb3VyY2Uu
JGF0JGF0KC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQk
YXQoT3BlcmF0b3JzLmkzMl9jb25zdChTb3VyY2UuJGF0JGF0KDAsIGF0JDEpKSwgYXQkMSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0sIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXQgKi9fNgorICAg
ICAgICAgICAgICAgICAgICBdLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDQpOworICAgIHZhciBfNCA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNSA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNiA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyog
KCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBj
LCBhbm9uX2dsb2JhbCwgYmluZF9nbG9iYWwpOworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwor
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJj
ZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGd0
eXBlICovXzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmFsdWUgKi9DdXJyeS5f
MShfNiwgYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBHbG9iYWxFeHBvcnQgKi8zLCBj
Wy8qIGdsb2JhbHMgKi81XVsvKiBjb3VudCAqLzFdLCBjKQorICAgICAgICAgICAgXTsKKyAgICB9
OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgp
ICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywg
YW5vbl9nbG9iYWwsIGJpbmRfZ2xvYmFsKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2Uu
JGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBndHlw
ZSAqL180LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZhbHVlICovQ3VycnkuXzEo
XzUsIGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7
CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9mdW5jLCBiaW5kX2Z1bmMpOworICAgICAgcmV0
dXJuIC8qIEZ1bmNJbXBvcnQgKi9CbG9jay5fXygwLCBbQ3VycnkuXzIoXzQsIGMsIHR5cGVfKV0p
OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBf
NCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdDQg
PSBhdGkoNCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywg
YywgYW5vbl9mdW5jLCBiaW5kX2Z1bmMpOworICAgICAgcmV0dXJuIC8qIEZ1bmNJbXBvcnQgKi9C
bG9jay5fXygwLCBbaW5saW5lX3R5cGUoYywgXzQsIGF0NCldKTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAg
IEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX3RhYmxlLCBiaW5kX3RhYmxlKTsKKyAgICAgIHJldHVybiAv
KiBUYWJsZUltcG9ydCAqL0Jsb2NrLl9fKDEsIFtfNF0pOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3Vy
cnkuXzMoXzMsIGMsIGFub25fbWVtb3J5LCBiaW5kX21lbW9yeSk7CisgICAgICByZXR1cm4gLyog
TWVtb3J5SW1wb3J0ICovQmxvY2suX18oMiwgW180XSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJy
eS5fMyhfMywgYywgYW5vbl9nbG9iYWwsIGJpbmRfZ2xvYmFsKTsKKyAgICAgIHJldHVybiAvKiBH
bG9iYWxJbXBvcnQgKi9CbG9jay5fXygzLCBbXzRdKTsKKyAgICB9OworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgdmFyIGF0
NSA9IGF0aSg1KTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBTb3Vy
Y2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIG1vZHVsZV9uYW1l
ICovXzMsCisgICAgICAgICAgICAgICAgICAvKiBpdGVtX25hbWUgKi9fNCwKKyAgICAgICAgICAg
ICAgICAgIC8qIGlraW5kICovU291cmNlLiRhdCRhdChDdXJyeS5fMShfNSwgYyksIGF0NSkKKyAg
ICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9u
IChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9mdW5jLCBiaW5kX2Z1bmMpOworICAg
ICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAg
LyogbW9kdWxlX25hbWUgKi9fNFswXSwKKyAgICAgICAgICAgICAgICAgIC8qIGl0ZW1fbmFtZSAq
L180WzFdLAorICAgICAgICAgICAgICAgICAgLyogaWtpbmQgKi9Tb3VyY2UuJGF0JGF0KC8qIEZ1
bmNJbXBvcnQgKi9CbG9jay5fXygwLCBbQ3VycnkuXzIoXzUsIGMsIHR5cGVfKV0pLCBhdCQxKQor
ICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICB2YXIgYXQ1ID0gYXRp
KDUpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFu
b25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29y
ZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIG1vZHVsZV9uYW1lICovXzRbMF0sCisgICAgICAg
ICAgICAgICAgICAvKiBpdGVtX25hbWUgKi9fNFsxXSwKKyAgICAgICAgICAgICAgICAgIC8qIGlr
aW5kICovU291cmNlLiRhdCRhdCgvKiBGdW5jSW1wb3J0ICovQmxvY2suX18oMCwgW2lubGluZV90
eXBlKGMsIF81LCBhdDUpXSksIGF0JDEpCisgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAg
fTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAo
KSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMs
IGFub25fdGFibGUsIGJpbmRfdGFibGUpOworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAgICAgLyogbW9kdWxlX25hbWUgKi9fNFswXSwKKyAg
ICAgICAgICAgICAgICAgIC8qIGl0ZW1fbmFtZSAqL180WzFdLAorICAgICAgICAgICAgICAgICAg
LyogaWtpbmQgKi9Tb3VyY2UuJGF0JGF0KC8qIFRhYmxlSW1wb3J0ICovQmxvY2suX18oMSwgW181
XSksIGF0JDEpCisgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJl
dHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fbWVtb3J5LCBi
aW5kX21lbW9yeSk7CisgICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisg
ICAgICAgICAgICAgICAgICAvKiBtb2R1bGVfbmFtZSAqL180WzBdLAorICAgICAgICAgICAgICAg
ICAgLyogaXRlbV9uYW1lICovXzRbMV0sCisgICAgICAgICAgICAgICAgICAvKiBpa2luZCAqL1Nv
dXJjZS4kYXQkYXQoLyogTWVtb3J5SW1wb3J0ICovQmxvY2suX18oMiwgW181XSksIGF0JDEpCisg
ICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZ2xvYmFsLCBiaW5kX2dsb2JhbCk7
CisgICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAg
ICAgICAvKiBtb2R1bGVfbmFtZSAqL180WzBdLAorICAgICAgICAgICAgICAgICAgLyogaXRlbV9u
YW1lICovXzRbMV0sCisgICAgICAgICAgICAgICAgICAvKiBpa2luZCAqL1NvdXJjZS4kYXQkYXQo
LyogR2xvYmFsSW1wb3J0ICovQmxvY2suX18oMywgW181XSksIGF0JDEpCisgICAgICAgICAgICAg
ICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7
CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Cisg
ICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgXzMsCisgICAgICAgICAgICBfNAor
ICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJl
dHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAg
ICAgICAvKiBGdW5jRXhwb3J0ICovMCwKKyAgICAgICAgICAgICAgQ3VycnkuXzIoXzMsIGMsIGZ1
bmMpCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIC8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAvKiBUYWJsZUV4cG9ydCAqLzEsCisgICAgICAgICAgICAgIEN1
cnJ5Ll8yKF8zLCBjLCB0YWJsZSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIE1lbW9yeUV4cG9ydCAqLzIs
CisgICAgICAgICAgICAgIEN1cnJ5Ll8yKF8zLCBjLCBtZW1vcnkpCisgICAgICAgICAgICBdOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBm
dW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAv
KiBHbG9iYWxFeHBvcnQgKi8zLAorICAgICAgICAgICAgICBDdXJyeS5fMihfMywgYywgZ2xvYmFs
KQorICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNl
cl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgdmFyIGF0NCA9IGF0aSg0KTsK
KyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF80
LCBjKTsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAg
ICAgICAgICAgIC8qIG5hbWUgKi9fMywKKyAgICAgICAgICAgICAgICAgIC8qIGVraW5kICovU291
cmNlLiRhdCRhdChtYXRjaFswXSwgYXQ0KSwKKyAgICAgICAgICAgICAgICAgIC8qIGl0ZW0gKi9t
YXRjaFsxXQorICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKF8sIF8kMSwgXyQyKSB7CisgICAgICByZXR1
cm4gLyogW10gKi8wOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHJldHVybiBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgv
KiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoaywgY291bnQsIF8pIHsKKyAgICAgIHJl
dHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9b
CisgICAgICAgICAgICAgICAgICAgIC8qIG5hbWUgKi9fMywKKyAgICAgICAgICAgICAgICAgICAg
LyogZWtpbmQgKi9Tb3VyY2UuJGF0JGF0KGssIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAv
KiBpdGVtICovU291cmNlLiRhdCRhdChjb3VudCAtIDEgfCAwLCBhdCQxKQorICAgICAgICAgICAg
ICAgICAgXSwgYXQkMSksCisgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgXTsK
KyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4g
ZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBhbm9uX3R5cGUoYywgXzMpOworICAgIH07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykg
eworICAgICAgdmFyIGMkMSA9IGM7CisgICAgICB2YXIgeCA9IF8zOworICAgICAgdmFyIHR5ID0g
XzQ7CisgICAgICBpZiAoQ3VycnkuXzIoVmFyTWFwWy8qIG1lbSAqLzJdLCB4Wy8qIGl0ICovMV0s
IGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRtYXAgKi8wXSkpIHsKKyAgICAgICAgdGhyb3cgWworICAg
ICAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgICAgICB4Wy8qIGF0ICovMF0sCisg
ICAgICAgICAgICAgICJkdXBsaWNhdGUgdHlwZSAiICsgeFsvKiBpdCAqLzFdCisgICAgICAgICAg
ICBdOworICAgICAgfQorICAgICAgYyQxWy8qIHR5cGVzICovMF1bLyogdG1hcCAqLzBdID0gQ3Vy
cnkuXzMoVmFyTWFwWy8qIGFkZCAqLzNdLCB4Wy8qIGl0ICovMV0sIEN1cnJ5Ll8xKExpYi5MaXN0
MzJbLyogbGVuZ3RoICovMF0sIGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0pLCBjJDFb
LyogdHlwZXMgKi8wXVsvKiB0bWFwICovMF0pOworICAgICAgYyQxWy8qIHR5cGVzICovMF1bLyog
dGxpc3QgKi8xXSA9IFBlcnZhc2l2ZXMuJGF0KGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRsaXN0ICov
MV0sIC8qIDo6ICovWworICAgICAgICAgICAgdHksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICBdKTsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAg
ICByZXR1cm4gQ3VycnkuXzIoXzMsIGMsIGZ1bmMpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9u
ICgpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBuZXdyZWNvcmQgPSBB
c3QuZW1wdHlfbW9kdWxlLnNsaWNlKCk7CisgICAgICBuZXdyZWNvcmRbLyogdHlwZXMgKi8wXSA9
IGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdOworICAgICAgcmV0dXJuIG5ld3JlY29yZDsK
KyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8xKF8xLCBjKTsKKyAgICAgIHJldHVybiBDdXJyeS5f
MShfMiwgYyk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Cisg
ICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
cmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMSwgYyk7
CisgICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIGlmIChtWy8qIGltcG9ydHMg
Ki84XSAhPT0gLyogW10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsvKiBpbXBv
cnRzICovOF0pWy8qIGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgU2Ny
aXB0LlN5bnRheCwKKyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBvcnQgYWZ0
ZXIgZ2xvYmFsIGRlZmluaXRpb24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgdmFy
IG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBnbG9iYWxzICovMV0g
PSAvKiA6OiAqL1sKKyAgICAgICAgQ3VycnkuXzEobWF0Y2hbMF0sIC8qICgpICovMCksCisgICAg
ICAgIG1bLyogZ2xvYmFscyAqLzFdCisgICAgICBdOworICAgICAgbmV3cmVjb3JkWy8qIGV4cG9y
dHMgKi85XSA9IFBlcnZhc2l2ZXMuJGF0KG1hdGNoWzFdLCBtWy8qIGV4cG9ydHMgKi85XSk7Cisg
ICAgICByZXR1cm4gbmV3cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIHQgPSBDdXJyeS5f
MShfMSwgYyk7CisgICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHZhciBtYXRj
aCA9IEN1cnJ5Ll8xKHQsIC8qICgpICovMCk7CisgICAgICBpZiAobVsvKiBpbXBvcnRzICovOF0g
IT09IC8qIFtdICovMCkgeworICAgICAgICB2YXIgYXQgPSBMaXN0LmhkKG1bLyogaW1wb3J0cyAq
LzhdKVsvKiBhdCAqLzBdOworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIFNjcmlwdC5T
eW50YXgsCisgICAgICAgICAgICAgIGF0LAorICAgICAgICAgICAgICAiaW1wb3J0IGFmdGVyIHRh
YmxlIGRlZmluaXRpb24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgdmFyIG5ld3Jl
Y29yZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiB0YWJsZXMgKi8yXSA9IC8qIDo6
ICovWworICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgbVsvKiB0YWJsZXMgKi8yXQorICAgICAg
XTsKKyAgICAgIG5ld3JlY29yZFsvKiBlbGVtcyAqLzZdID0gUGVydmFzaXZlcy4kYXQobWF0Y2hb
MV0sIG1bLyogZWxlbXMgKi82XSk7CisgICAgICBuZXdyZWNvcmRbLyogZXhwb3J0cyAqLzldID0g
UGVydmFzaXZlcy4kYXQobWF0Y2hbMl0sIG1bLyogZXhwb3J0cyAqLzldKTsKKyAgICAgIHJldHVy
biBuZXdyZWNvcmQ7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMSwg
Yyk7CisgICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIGlmIChtWy8qIGltcG9y
dHMgKi84XSAhPT0gLyogW10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsvKiBp
bXBvcnRzICovOF0pWy8qIGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAg
U2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBvcnQg
YWZ0ZXIgbWVtb3J5IGRlZmluaXRpb24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAg
dmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBtZW1vcmllcyAq
LzNdID0gLyogOjogKi9bCisgICAgICAgIG1hdGNoWzBdLAorICAgICAgICBtWy8qIG1lbW9yaWVz
ICovM10KKyAgICAgIF07CisgICAgICBuZXdyZWNvcmRbLyogZGF0YSAqLzddID0gUGVydmFzaXZl
cy4kYXQobWF0Y2hbMV0sIG1bLyogZGF0YSAqLzddKTsKKyAgICAgIG5ld3JlY29yZFsvKiBleHBv
cnRzICovOV0gPSBQZXJ2YXNpdmVzLiRhdChtYXRjaFsyXSwgbVsvKiBleHBvcnRzICovOV0pOwor
ICAgICAgcmV0dXJuIG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtYXRjaCA9IEN1
cnJ5Ll8xKF8xLCBjKTsKKyAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMpOworICAgICAgdmFy
IGZ1bmMgPSBDdXJyeS5fMShtYXRjaFswXSwgLyogKCkgKi8wKTsKKyAgICAgIGlmIChtWy8qIGlt
cG9ydHMgKi84XSAhPT0gLyogW10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsv
KiBpbXBvcnRzICovOF0pWy8qIGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAg
ICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBv
cnQgYWZ0ZXIgZnVuY3Rpb24gZGVmaW5pdGlvbiIKKyAgICAgICAgICAgIF07CisgICAgICB9Cisg
ICAgICB2YXIgbmV3cmVjb3JkID0gbS5zbGljZSgpOworICAgICAgbmV3cmVjb3JkWy8qIGZ1bmNz
ICovNF0gPSAvKiA6OiAqL1sKKyAgICAgICAgZnVuYywKKyAgICAgICAgbVsvKiBmdW5jcyAqLzRd
CisgICAgICBdOworICAgICAgbmV3cmVjb3JkWy8qIGV4cG9ydHMgKi85XSA9IFBlcnZhc2l2ZXMu
JGF0KG1hdGNoWzFdLCBtWy8qIGV4cG9ydHMgKi85XSk7CisgICAgICByZXR1cm4gbmV3cmVjb3Jk
OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBf
MiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBm
dW5jdGlvbiAoYykgeworICAgICAgdmFyIG0gPSBDdXJyeS5fMShfMiwgYyk7CisgICAgICB2YXIg
bmV3cmVjb3JkID0gbS5zbGljZSgpOworICAgICAgbmV3cmVjb3JkWy8qIGVsZW1zICovNl0gPSAv
KiA6OiAqL1sKKyAgICAgICAgQ3VycnkuXzEoXzEsIGMpLAorICAgICAgICBtWy8qIGVsZW1zICov
Nl0KKyAgICAgIF07CisgICAgICByZXR1cm4gbmV3cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1
bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAg
dmFyIG0gPSBDdXJyeS5fMShfMiwgYyk7CisgICAgICB2YXIgbmV3cmVjb3JkID0gbS5zbGljZSgp
OworICAgICAgbmV3cmVjb3JkWy8qIGRhdGEgKi83XSA9IC8qIDo6ICovWworICAgICAgICBDdXJy
eS5fMShfMSwgYyksCisgICAgICAgIG1bLyogZGF0YSAqLzddCisgICAgICBdOworICAgICAgcmV0
dXJuIG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsK
KyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMp
OworICAgICAgdmFyIHggPSBDdXJyeS5fMShfMSwgYyk7CisgICAgICB2YXIgbWF0Y2ggPSBtWy8q
IHN0YXJ0ICovNV07CisgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgICAgICB4Wy8qIGF0ICovMF0sCisgICAg
ICAgICAgICAgICJtdWx0aXBsZSBzdGFydCBzZWN0aW9ucyIKKyAgICAgICAgICAgIF07CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAg
ICAgICAgbmV3cmVjb3JkWy8qIHN0YXJ0ICovNV0gPSAvKiBTb21lICovW3hdOworICAgICAgICBy
ZXR1cm4gbmV3cmVjb3JkOworICAgICAgfQorICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGkgPSBDdXJy
eS5fMShfMSwgYyk7CisgICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHZhciBu
ZXdyZWNvcmQgPSBtLnNsaWNlKCk7CisgICAgICBuZXdyZWNvcmRbLyogaW1wb3J0cyAqLzhdID0g
LyogOjogKi9bCisgICAgICAgIGksCisgICAgICAgIG1bLyogaW1wb3J0cyAqLzhdCisgICAgICBd
OworICAgICAgcmV0dXJuIG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtID0gQ3Vy
cnkuXzEoXzIsIGMpOworICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5l
d3JlY29yZFsvKiBleHBvcnRzICovOV0gPSAvKiA6OiAqL1sKKyAgICAgICAgQ3VycnkuXzEoXzEs
IGMpLAorICAgICAgICBtWy8qIGV4cG9ydHMgKi85XQorICAgICAgXTsKKyAgICAgIHJldHVybiBu
ZXdyZWNvcmQ7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Cisg
ICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAg
cmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgXzMsCisgICAgICAgICAgICBTb3VyY2Uu
JGF0JGF0KC8qIFRleHR1YWwgKi9CbG9jay5fXygwLCBbU291cmNlLiRhdCRhdChDdXJyeS5fMShf
NCwgZW1wdHlfY29udGV4dCgvKiAoKSAqLzApKSwgYXQoLyogKCkgKi8wKSldKSwgYXQoLyogKCkg
Ki8wKSkKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsK
KyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAg
ICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICBy
ZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBfMywKKyAgICAgICAgICAgIFNvdXJjZS4k
YXQkYXQoLyogRW5jb2RlZCAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgImJp
bmFyeSIsCisgICAgICAgICAgICAgICAgICAgIF80ICsgXzUKKyAgICAgICAgICAgICAgICAgIF0p
LCBhdCgvKiAoKSAqLzApKQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gLyogTm9uZSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDAp
OworICAgIHJldHVybiAvKiBTb21lICovW1NvdXJjZS4kYXQkYXQoXzEsIGF0KC8qICgpICovMCkp
XTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQk
YXQoLyogSW52b2tlICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgICAgXzMsCisgICAg
ICAgICAgICAgICAgICBfNCwKKyAgICAgICAgICAgICAgICAgIF81CisgICAgICAgICAgICAgICAg
XSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsK
KyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAg
ICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBHZXQgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAg
ICAgICAgICBfMywKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0
KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAg
ICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2
YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1
cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRNYWxmb3JtZWQgKi9CbG9jay5fXygwLCBbCisgICAg
ICAgICAgICAgICAgICBfM1sxXSwKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAg
ICAgXSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAy
KTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsK
KyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRJbnZhbGlkICovQmxvY2suX18oMSwg
WworICAgICAgICAgICAgICAgICAgXzNbMV0sCisgICAgICAgICAgICAgICAgICBfNAorICAgICAg
ICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0U29mdEludmFsaWQgKi9C
bG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICBfM1sxXSwKKyAgICAgICAgICAgICAgICAg
IF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRVbmxp
bmthYmxlICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgXzNbMV0sCisgICAgICAg
ICAgICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwK
KyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyog
QXNzZXJ0VW5pbnN0YW50aWFibGUgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICBf
M1sxXSwKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgp
ICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291
cmNlLiRhdCRhdCgvKiBBc3NlcnRSZXR1cm4gKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICAg
ICAgICBfMywKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8q
ICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1
cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRSZXR1cm5OYU4gKi9CbG9jay5fXyg2LCBbXzNdKSwg
YXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAg
IHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJl
dHVybiBTb3VyY2UuJGF0JGF0KC8qIEFzc2VydFRyYXAgKi9CbG9jay5fXyg3LCBbCisgICAgICAg
ICAgICAgICAgICBfMywKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSks
IGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsK
KyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAg
ICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICBy
ZXR1cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRFeGhhdXN0aW9uICovQmxvY2suX18oOCwgWwor
ICAgICAgICAgICAgICAgICAgXzMsCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAg
ICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJf
ZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MCk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQWN0aW9uICovQmxvY2suX18oMiwgW18x
XSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsK
KyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRpb24gKi9CbG9jay5fXygzLCBbXzFd
KSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwor
ICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIE1vZHVsZSAqL0Jsb2NrLl9fKDAsIFsKKyAgICAg
ICAgICAgICAgICAgIF8xWzBdLAorICAgICAgICAgICAgICAgICAgXzFbMV0KKyAgICAgICAgICAg
ICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEp
OworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIFJlZ2lzdGVyICovQmxvY2suX18oMSwgWwor
ICAgICAgICAgICAgICAgICAgXzMsCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAg
ICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJf
ZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MCk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogTWV0YSAqL0Jsb2NrLl9fKDQsIFtfMV0p
LCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAvKiBb
XSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgIF8xLAorICAgICAgICAgICAgXzIKKyAgICAgICAgICBdOworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgv
KiBTY3JpcHQgKi9CbG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICBfMywKKyAgICAgICAg
ICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9LAor
ICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBJ
bnB1dCAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAg
ICAgICAgXzQKKyAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1
bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIE91dHB1
dCAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgICAg
ICAgLyogU29tZSAqL1tfNF0KKyAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0
JGF0KC8qIE91dHB1dCAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAg
ICAgICAgICAgICAgICAgLyogTm9uZSAqLzAKKyAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkg
Ki8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfMyA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3Vy
Y2UuJGF0JGF0KGxpdGVyYWwoXzIsIF8zKVsxXSwgYXRpKDMpKTsKKyAgfSwKKyAgZnVuY3Rpb24g
KCkgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDApOworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIF8xLAorICAgICAgICAgICAg
XzIKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsK
KyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiA6OiAqL1sKKyAg
ICAgICAgICAgIF8xLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgfSwK
KyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgcmV0dXJuIFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpWzFdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgUGFyc2luZy5ZWWV4aXQsCisg
ICAgICAgICAgUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCkKKyAgICAgICAg
XTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdGhyb3cgWwor
ICAgICAgICAgIFBhcnNpbmcuWVlleGl0LAorICAgICAgICAgIFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApCisgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHRocm93IFsKKyAgICAgICAgICBQYXJzaW5nLllZZXhpdCwKKyAg
ICAgICAgICBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKQorICAgICAgICBd
OworICB9CitdOworCit2YXIgeXl0YWJsZXMgPSAvKiByZWNvcmQgKi9bCisgIC8qIGFjdGlvbnMg
Ki95eWFjdCwKKyAgLyogdHJhbnNsX2NvbnN0ICoveXl0cmFuc2xfY29uc3QsCisgIC8qIHRyYW5z
bF9ibG9jayAqL3l5dHJhbnNsX2Jsb2NrLAorICAvKiBsaHMgKi8nXHhmZlx4ZmZceDA0XDBceDA0
XDBceDA1XDBceDA1XDBceDA2XDBceDA3XDBceDA3XDBcYlwwXHRcMFx0XDBcdFwwXHRcMFx4MGJc
MFxyXDBcZlwwXGZcMFx4MGVcMFx4MTBcMFx4MTBcMFx4MTBcMFx4MGZcMFx4MGZcMFx4MTFcMFx4
MTFcMFx4MTJcMFx4MTJcMFxuXDBceDEzXDBceDEzXDBceDE0XDBceDE0XDBceDE1XDBceDE1XDBc
eDE2XDBceDE2XDBceDE3XDBceDE3XDBceDE3XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4
XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBc
eDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4
XDBceDE4XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDFiXDBceDFhXDBceDFkXDBceDFkXDBc
eDFkXDBceDFkXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFjXDBceDFj
XDBceDFlXDBceDFlXDAgXDAhXDAhXDAhXDAhXDAiXDAiXDAiXDAjXDAjXDAjXDAjXDAlXDAlXDAm
XDAmXDBcJ1wwXCdcMClcMClcMCpcMCpcMCpcMCtcMCtcMCxcMCxcMCxcMCxcMCxcMC1cMC1cMC1c
MC1cMC1cMC1cMC5cMC9cMC9cMC9cMC9ceDAwMFwwKFwwKFwwJFx4MDAxXHgwMDFceDAwMlx4MDAz
XHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwNFx4
MDA0XHgwMDVceDAwNVx4MDA2XHgwMDZceDAwOFx4MDA4XHgwMDhceDAwOFx4MDA4XHgwMDhceDAw
OFx4MDA4XHgwMDhceDAwOVx4MDA5XHgwMDlceDAwOVx4MDA5XDA7XDA7XDA6XDA6XDA6XDA6XDA8
XHgwMDdceDAwN1wwXHgwMVwwXHgwMlwwXHgwM1wwXDBcMFwwXDBcMFwwJywKKyAgLyogbGVuICov
Ilx4MDJcMFwwXDBceDAyXDBcMFwwXHgwMlwwXHgwMVwwXHgwMVwwXHgwNFwwXHgwNFwwXDBcMFx4
MDVcMFx4MDVcMFx4MDZcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDRcMFx4MDFcMFx4MDFc
MFx4MDFcMFx4MDFcMFx4MDFcMFwwXDBceDAyXDBcMFwwXHgwMVwwXHgwMVwwXDBcMFx4MDFcMFww
XDBceDAxXDBcMFwwXHgwMVwwXDBcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFc
MFx4MDJcMFx4MDJcMFx4MDNcMFx4MDFcMFx4MDJcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDJcMFx4
MDJcMFx4MDJcMFx4MDJcMFx4MDJcMFx4MDNcMFx4MDNcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDFc
MFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDVcMFx4MDVcMFx4MDVcMFxiXDBceDAyXDBceDAz
XDBceDAyXDBceDAzXDBceDAzXDBceDA0XDBcYlwwXHgwNFwwXHRcMFx4MDVcMFx4MDNcMFx4MDJc
MFwwXDBceDAyXDBcMFwwXHgwMlwwXHgwMVwwXHgwMVwwXHgwNVwwXHgwNVwwXHgwNlwwXHgwMVww
XHgwNVwwXHgwNlwwXHgwN1wwXHgwNlwwXHgwNlwwXHgwNVwwXHgwNFwwXHgwMVwwXHgwNlwwXHgw
NVwwXHgwNlwwXG5cMFx4MDZcMFx4MDVcMFx4MDZcMFx0XDBcYlwwXHgwN1wwXHgwNlwwXHgwNVww
XHgwNVwwXHgwNVwwXHgwNVwwXHgwNVwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgw
NlwwXHgwNVwwXHgwNFwwXHgwNFwwXHgwNFwwXHgwNFwwXHgwNVwwXDBcMFx4MDFcMFx4MDRcMFx4
MDRcMFx4MDVcMFx4MDRcMFwwXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBc
eDAyXDBceDAyXDBceDAyXDBceDAyXDBceDA1XDBceDA2XDBcMFwwXHgwMVwwXHgwNlwwXHgwNVww
XHgwNVwwXHgwNVwwXHgwNVwwXHgwNVwwXHgwNVwwXHgwNVwwXHgwNFwwXHgwNVwwXHgwNVwwXHgw
MVwwXHgwMVwwXHgwMVwwXHgwNVwwXHgwMVwwXDBcMFx4MDJcMFx4MDVcMFx4MDVcMFx4MDVcMFx4
MDRcMFx4MDRcMFwwXDBceDAyXDBceDAyXDBceDAxXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDAi
LAorICAvKiBkZWZyZWQgKi8iXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhZlwwXHhhMFwwXHg5
ZVwwXHg5ZlwwXDBcMFx4YTJcMFwwXDBceGIwXDBceGFkXDBcMFwwXHhiMVwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YTRc
MFx4YWNcMFx4YWVcMFx4OTJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDFcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXHg5YlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGE4XDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODlcMFx4OGFcMFx4ODdcMFx4
OGJcMFx4ODhcMFx4ODZcMFx4OGRcMFx4OGVcMFx4ODVcMFx4OGNcMFx4OGZcMFx4YTVcMFx4YTFc
MFwwXDBceDk0XDBceDk1XDBceDk2XDBceDk3XDBceDk4XDBcMFwwXHg5YVwwXHhhYlwwXHg5OVww
XHg5Y1wwXHg5ZFwwXHhhNlwwXHhhN1wwXHgwMlwwXHg5MFwwXHgxYlwwXHgxYVwwXDBcMFx4MTVc
MFx4MTZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwYVwwXDBcMFwwXDBcMFwwXHgw
MVwwXDBcMFwwXDBceDkzXDBceDEyXDBceDEzXDBceDE0XDBcMFwwXDBcMChcMC9cMFwwXDBcMFx4
MDAwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAsXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMD1cMD5cMDxcMD9cMCdceDAwOFx4MDA5XDA7XDBcMFwwXDBcMCRcMCVcMCZcMFlcMFww
XDBVXDBcMFwwXDBcMFx4ODNcMFwwXDBceDgxXDBcMFwwXHgwNlwwXDBcMFwwXDBcMFwwXDBcMFww
XDBceDdmXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBceDAxXDBcMFwwXDBcMFwwXDBcMFwwXHhhOVwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXHgxZFwwXDBcMFwwXDBcMFwwKVwwKlwwXDBcMC1cMC5ceDAwMVx4MDAyXHgwMDNceDAw
NFx4MDA1XDAhXDBcMFwwXDBcMDpcMFwwXDBcMFwwXDBcMFFcMF9cMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXHg4MlwwXDBcMFRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwNVwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwRlwwRVwwXDBcMFx4MThcMGNcMFx4MDFc
MFwwXDBceDBlXDBcMFwwXDBcMFwwXDBnXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDB9XDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwK1wwI1x4MDA2
XHgwMDdcMF1cMFwwXDBeXDBcMFwwXDBcMHRcMHNcMFxiXDBcMFwwbFwwXDBcMHdcMFx4MTBcMFww
XDBkXDBcclwwdVwwR1wwXDBcMEhcMGBcMFNcMGJcMFwwXDBceDAxXDBoXDB2XDBmXDBcMFwwXDBc
MFwwXDBcMFwwclwwXDBcMFwwXDBcMFwwXDBcMFx4MTFcMFx4MDRcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFx4ODBcMERcMFwwXDBcMFwwXDBcMFwwXDBcXFwwXDBcMFwwXDBcMFwwXHgwN1wwa1ww
XDBcMFwwXDBcMFwwSVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwweVwwfFwwelwwe1wwV1wwXDBc
MFwwXDBWXDBaXDBcMFwweFwwXHgxZlwwQFwwQlwwXDBcMEFcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBqXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBYXDBbXDBcMFwwXHgwYlwwXDBcMFxu
XDBcMFwwXDBcMFwwXDBOXDBpXDBuXDBtXDBxXDBvXDBwXDBcMFwwXGZcMGVcMFwwXDBcMFwwQ1ww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwSlwwXDBcMExcMCIsCisgIC8qIGRnb3RvICovJ1x4MDRc
MFx4MDZcMFxyXDBceDEwXDBWXHgwMDFceDAxXGZceDAxXHhjNFwwXHg4NVwwXHhmZlwwXHg3Zlww
XHJceDAxXHgwZVx4MDFceDFkXHgwMVx4YjRcMFx4ZDJcMFx4OTZcMFx4ZDNcMFx4ODBcMFx4ZTVc
MFx4ODhceDAxXHhmM1x4MDA3XHgwMVx4YjVcMFx4YjZcMFx4YjdcMFx4YjhceDAwMlx4MDFceGI5
XDBceGQwXDBceDE1XHgwMXVceDAxXHgwNlx4MDFceGJhXDBceGJiXHgwMDlcMFx4YmNcMFx4OGNc
MDpcMDtcMFx4YzlcMDxcMD1cMD5cMCJceDAxP1wwXHhiZFwwXHhkY1wwQFwwQVwwQlwwQ1wwXHgw
N1wwJVwwXGJcME1cMFx0XDBcblwwXHgwYlwwXGZcME5cMCcsCisgIC8qIHNpbmRleCAqLydceGQ0
XDBceDE3XHhmZlx4MTdceGZmLlx4ZmZcMFwwYVx4ZmZcMFwwXDBcMFwwXDBcMFwwXHgxN1x4ZmZc
MFwwQFwwXDBcMFwwXDAiXHhmZlwwXDBsXDBpXHhmZmlceGZmd1x4ZmZpXHhmZmlceGZmLlx4ZmYu
XHhmZi5ceGZmLlx4ZmZwXHhmZnBceGZmflx4ZmZwXHhmZmlceGZmaVx4ZmZcMFwwXDBcMFwwXDBc
MFwwXHhhYlx4ZmZceDE3XHhmZmlceGZmXHg5Mlx4ZmZceGFjXHhmZlx4YzlceGZmXHhkOVx4ZmZc
eGY2XHhmZlx4ZjlceGZmXGZceGZmXHhhMVx4ZmZceGFmXHhmZlx4ZmNceGZlXHhmYlx4ZmZceGZl
XHhmZlx4MTVcMFx4MWNceDAwMVx4ZmZcMFwwXHgxN1wwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFww
XHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHhiMVx4ZmZceGI2XHhmZlx4MTFc
MFx4YTFceGZmLVx4MDA3XDA9XDA/XDBEXDAvXDBKXDBceGExXHhmZlwwXDBLXDBTXDBkXDBlXDBu
XDBcMFwwW1x4ZmZSXDBceGI3XHhmZlx4YzZceGZmUlwwUlwwXHg4Zlx4ZmZSXDBceDhmXHhmZnZc
MHdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDB5
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MGJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXHgxNlx4MDJcMFwwXDBcMHpcMFZcMFx4OGFcMFx4OTVcMFx4ZTlceGZm
XHg5N1wwV1x4MDNceDk4XDBcMFwwXHhiN1x4ZmZceDk5XDBceDk4XDBcMFwwXHg5YlwwXHhhMVww
XDBcMFwwXDBcMFwwXDBcMFx4YmJcMFx4ZDRceDAyXDBcMFwwXDBSXDBSXDBcMFwwUlwwXHhiN1x4
ZmZceGI3XHhmZlx4YjdceGZmXHhiN1x4ZmZceGI3XHhmZlwwXDBceGI3XHhmZlx4YjdceGZmXHhi
N1x4ZmZceGI3XHhmZlx4YjdceGZmXHhhNVwwXHhhNVwwXHgwYlwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDA8XHgwMmJceDAyXDBcMFwwXDBcMFwwXDBcMFx4YmRcMFwwXDBceDg4XHgw
Mlx4YmZcMFwwXDBceGM3XDBcMFwwXHhkN1wwXDBcMFxyXHhmZmJceDAyXHhlZFx4ZmZceGVkXHhm
Zlx4Y2RceGZmXDBcMHVceGZmXHhlYVwwUlwwUlwwUlwwYlx4MDJceGUzXDBceGU0XDBceGI3XHhm
Zlx4YjdceGZmXHhlY1wwXHg5OFx4ZmZceGZlXDBceGVhXDBceGVhXDBcMFwwXHg3Zlx4ZmZcYlx4
MDFceGZlXHhmZVx0XHgwMVwwXDBceGI3XHhmZlx4MTJcMFx4ZTdcMFx4MTJcMFx4MGVceDAxXHgx
MFx4MDFcMFwwXHhlN1wwXHhlN1wwXHhlN1wwXDBcMFwwXDBceGI3XHhmZlwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXHhmYVwwXHhmYVwwXDBceDAwMVx4MDMjXHgwMVx4ZWZceDAzXDBc
MFwwXDBceDBiXHgwMzxceDAyLVx4MDFceGU3XHhmZi5ceDAxL1x4MDFceDk5XHhmZjBceDAxXDBc
MDxceDAxXDBcMElceDAxVVx4MDFiXHgwMlRceDAxXlx4MDFcMFwwV1x4MDFvXHgwMVtceDAxeVx4
MDFceGU3XDBceGU3XDBceGU3XDB6XHgwMVx4ZTNcMFwwXDBcMFwwe1x4MDFcMFwwXDBcMFwwXDBQ
XHgwMVwwXDBceDgyXHgwMVx4ODRceDAxXHhhOVx4ZmZcMFwwZFx4ZmZceDg1XHgwMVx4YjdceGZm
XHhiN1x4ZmZceGI3XHhmZlx4YjdceGZmXDBcMFx4OTVceDAxXHhlN1wwXHg5Zlx4MDFiXHgwMVx4
YTBceDAxXHhhMVx4MDFceGE2XHgwMVx4YWFceDAxXHhhYlx4MDFiXHgwMlx4YjdceDAxXHhlNlx4
ZmZceGMxXHgwMVwwXDBcMFwwXDBcMFwwXDBcMFwwXHhjNlx4MDFcMFwwXHgxMlwwXHhlN1wwXDBc
MFwwXDBcMFwwXHhjN1x4MDFcMFwwXHhjOFx4MDFcMFwwXDBcMFx4ODBceDAxXDBcMFwwXDBcMFww
XDBcMFx4Y2ZceDAxXDBcMFwwXDBcMFwwXDBcMFx4YWRceGZmXDBcMFwwXDBcMFwwXDBcMFJcMFJc
MFJcMFJcMFwwXDBceGQwXHgwMVx4ZDFceDAxXHhlMVx4MDFceGViXHgwMVwwXDBcMFwwPFx4MDJc
eGVjXHgwMVx4YWVceDAyXHhhZVx4MDJceGVkXHgwMVx4ZWVceDAxXDBcMFwwXDBSXDBSXDBSXDBS
XDBcMFwwXHhmNlx4MDFceGY0XHgwMVx4ZjdceDAxXDBcMFwwXDBceGI3XHhmZn1ceDAzXGJceDAy
XDBcMFx4MTFceDAyXHhiYlx4ZmZceGJmXDBceGVkXHhmZlx4ZWFcMFx4ZWFcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwPFx4MDJceGEzXHgwM1wwXDBcMFwwXHhhZVx4MDJcMFwwXDBcMFwwXDBcMFwwYlx4
MDJcMFwwXHhjN1wwXHgxMlx4MDJceGM3XDBceDEzXHgwMmJceDAyXHhjOVx4MDNceGUzXDBcMFww
XHgxNFx4MDJceDFhXHgwMlx4MWNceDAyXHgxZFx4MDItXHgwMjdceDAyXDBcMFwwXHgwMDRceDAy
XDBcMFx4YzdcMFwwXHgwMDlceDAyOlx4MDJiXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBSXDBcMFwwXDBcMFx4MTdceDAyQFx4MDJcMFx4MDA1XHgwMkNceDAyYlx4MDJMXHgwMl1ceDAy
Ylx4MDJcMFwwXlx4MDJcMFwwJywKKyAgLyogcmluZGV4ICovIlwwXDBNXHgwM1wwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcME9c
eGZmXHgxNFwwXDBcMHdcMHdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwd1wwXHhj
Mlx4ZmZcMFwwXDBcMFwwXDBcMFwwX1x4MDJgXHgwMmZceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMGhceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwX1x4MDJfXHgw
Ml9ceDAyX1x4MDJfXHgwMl9ceDAyX1x4MDJfXHgwMl9ceDAyX1x4MDJcMFwwXDBcMFwwXDBoXHgw
MlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBoXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwflx4MDFcMFwwXDBcMFx4ZjJceGZmaFx4ZmZcMFwwKVx4ZmZcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwaVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg4M1x4ZmZcMFwwXDBc
MFwwXDB5XHgwMmtceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwTVwwXHgxNlwwXDBcME1cMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXHg5YVwwXHg5YVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
aVx4MDJ0XHhmZlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGlceDAyXHg4M1x4MDJcMFwwXHg4M1x4
MDJcMFwwXDBcMFwwXDBcMFwwaVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBzXDBceGYzXHhm
ZnNcMGlceDAyXHg4NFx4MDJcMFwweVx4MDJceGMwXDBcMFwwXDBcMFx4OGVceDAyXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg4Nlx4MDJceDg2XHgwMlx4ODZceDAyXDBcMFww
XDBcMFwwXHhhNFx4MDFYXHgwMVx4YTRceDAxXDBcMFwwXDBceGMwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFx4ZTZcMFx4ZTZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBp
XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4MDJcMFww
XHhmN1x4ZmZcMFwwXDBcMFwwXDBcMFwwXDBcMFx4Y2FceDAxXHg4OVx4MDJceGNhXHgwMVwwXDBc
eDg0XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXGZceDAxXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMHRceGZmXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODZc
eDAyXHg4Nlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMDxcMFx4ZjJceGZm
XHg5NVx4MDJceDk1XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBpXHgwMlwwXDBpXHgw
MmlceDAyXDBcMFwwXDBcMFwwXDBceDAwMlx4MDEyXHgwMVx4ZjBceDAxMlx4MDFcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDB5XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXHg4M1x4MDJcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMGlceDAyXDBcMFwwXDBcMFwwaVx4MDJcMFwwXDBcMFwwXDBc
MFwwXHg4YVx4MDJcMFwwXHg4M1x4MDJcMFwwXHg4M1x4MDJcMFwwaVx4MDJcMFwwXHhhZlx4ZmZc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODNceDAyXDBcMFww
XDBcMFwwaVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDAyXHgwMVwwXDBcMFwwXHg4
Zlx4MDJcMFwwXDBcMFwwXDBceDlmXHgwMmlceDAyXDBcMFwwXDBpXHgwMlwwXDBcMFwwXDBcMCIs
CisgIC8qIGdpbmRleCAqLyJcMFwwXDBcMFwwXDBcMFwweFx4ZmZEXHhmZlx4YTVceDAyUVx4ZmYu
XHgwM0ZceGZmXHhhN1x4ZmZHXHhmZkhceGZmM1x4ZmZMXHhmZlx4YmNceGZmXG5ceDAzUFx4ZmZc
eGIyXHhmZlx4ODBceGZmXHhiZFx4ZmVcZlx4MDNceGM0XHgwMlwwXDBceDgyXHhmZlwwXDBceGE2
XHhmZlZceGZmTlx4ZmZcMFwwXHhhOFx4MDJcMFwwQlx4ZmZSXHhmZlx4Y2FceGZlXDBcMFx4Y2Fc
eGZmXHhiNVx4ZmZcMFwwXDBceDAwMlx4MDNcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ZTNceGZmXDBc
MFwwXDBcMFwwXDBcMFx4YWNcMHRcMFx4OTZcMFx4YmVcMFx4ZjBceGZmXDBcMFx4YmNceDAzXDBc
MCFcMFwwXDAiLAorICAvKiB0YWJsZXNpemUgKi8xMzM1LAorICAvKiB0YWJsZSAqLydceDg2XDBc
eGEzXDBceDhiXDBceGY5XDBceDhiXDBceDAyXHgwMVx4ZjdcMFx4ZDlcMFx4ZmNcMFwwXHgwMVx4
MWVceDAxXHhjZlwwXHg4N1wwXHg4OFwwXHhmZFwwXHg4ZFwwXHgxM1x4MDFceDBmXHgwMVx4MDVc
eDAxXHg4ZlwwXHg4M1wwXHgwNFx4MDFcYlx4MDFcdFx4MDFceDhhXDBceGNmXDBceDhlXDBceGU2
XDBceDA1XHgwMVx4ZTdcMFx4MWNceDAxXHgxY1x4MDFceDA1XDBceDE3XHgwMVx4MThceDAxKlx4
MDEsXHgwMS1ceDAxXHg4OVx4MDFceDhhXHgwMVx4OGJceDAxI1x4MDFceDE5XDAhXDBceDgzXHgw
MVx4ODRceDAxXHgxMlwwJFx4MDFceDhiXDAlXHgwMVx4MTlcMCZceDAxXHg4YlwwVFwwblwwXHgw
ZlwwXHgxNVwwXHgxNlx4MDA1XHgwMVVceDAwM1x4MDE0XHgwMXZcMFx4ZDFcMCJcMFx4ZTRcMFx4
ZTRcMFx4ZDhcMFx4ZTRcMFx4ZTJcMFx4ZTNcMERcMFx4MTVcMFx4MTZcMENceDAxXHgxMFx4MDFc
eDExXHgwMVx4MTJceDAxOlx4MDFceDliXHgwMVx4MWZceDAxXHhjNVwwXHhjOFwwXHg5MVwwXHgx
MlwwS1x4MDFceDA1XHgwMVx4ZDVcMFx4OTFcMFx4OTFcMFx4ZThcMFx4ZTlcMFx4ZWFcMFx4ZWJc
MFx4ZWNcMHxcMFx4ZWRcMFx4ZWVcMFx4ZWZcMFx4ZjBcMFx4ZjFcMH1cMEpceDAxXHhhZlx4MDFM
XHgwMVx4MTlcMFx4YzZcMFx4Y2FcMCNcMF9ceDAxJFwwXHgxOVwwXHhkN1wwXHgxOVwwXHhlNFww
XHhlNFwwXHhlNFwwXHgxNFx4MDFcblx4MDFceDExXDBceGNmXDAuXDBceGNmXDBcJ1wwXHgwYlx4
MDFceGNmXDBQXDBnXHgwMW1ceDAxb1x4MDFQXDB8XDB+XDBQXDArXHgwMTFcMC5ceDAxIFx4MDF+
XDAqXDArXDAsXDAtXDBVXHgwMVx4ODFceDAwMlwwUFx4MDFceDEyXDBceDgyXDBWXHgwMUZcMFdc
eDAxXHg4OVwwWFx4MDEoXHgwMVx4MTNcMFx4MTRcMFx4MTVcMFx4MTZcMFx4MTdcMFx4MThcMFx4
MTlcMFx4MWFcMFx4MWJcMFx4MWNcMFx4MWRcMFx4MWVcMFx4MWZcMCBcMCZcMExcMChcMClcMHxc
MFx4OTlceDAxN1wwR1wwfFwwXHg4MFx4MDFUXHgwMThceDAwNVx4MDA2XDB2XHgwMVx4ODFcME9c
MFx4MTRceDAxa1wwXHg4MlwwRVwwXHg5NVx4MDF8XDBsXDBceDk4XHgwMVx4OGZceDAxXHgxY1x4
MDFceDk2XHgwMVx4OTRceDAxXHg5MVwwPFx4MDE9XHgwMXdceDAxXHg5N1x4MDF+XDBceDkxXDBI
XDBceDFhXHgwMVx4ODRcMFx4ZTJcMFx4ZTNcMFx4OWRceDAxXHg5YVx4MDFceDlmXHgwMVx4MDFc
MFx4MDJcMFx4MDNcMFx4OWNceDAxL1x4MDAwXHgwMDNceDAwNFwwSVwwXHhhMVx4MDFaXHgwMVtc
eDAxXFxceDAxXVx4MDFuXHgwMVx4YWJceDAxYVwwYlwwY1wwZFwwZVwwZlwwZ1wwaFwwaVwwalww
XHhjMlwwXHhhZVx4MDF0XHgwMVx4YzNcMFx4YzJcMGlceDAxXHhjZlwwXHgwN1x4MDFqXHgwMVx4
MTlcMFx4MWNcMEpcMFx4MTlcMFx4MWNcMEtcMFx4MGZcMFBcMFx4YjRceDAxXHgwZlwwUVwwXHhi
N1x4MDFceGNmXDBceGUyXDBceGUzXDB4XHgwMXlceDAxelx4MDF7XHgwMVx4YTNcMFx4OTNcMFx4
OTRcMFx4OTVcMFx4ODdceDAxXHg4N1x4MDFceDg3XHgwMVx4ODdceDAxXHhjZlwwXHhkZVwwPFx4
MDE9XHgwMX5cMClceDAxUlwwXHg5Mlx4MDFtXDBceDFjXDBceDkxXDBceDkxXDBceDFjXDBTXDBc
eDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXHgwMDhcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNc
MFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4
MWNcMFx4MWNcMFx4MWNcMG9cMFx4YTNceDAxXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1ww
XHgxY1wwXHgxY1wwXHgxY1wwcFwwV1wwWFwwWVwwXHgxOVwwXHgxOVwwcVwwWlwwclwwW1wwXFxc
MF1cMF5cMHNcMF9cMGBcMFx4ODdceDAxdFwwXHgxY1wwdVwwd1wwXHgxY1wwflwwXHgxY1wwXHgx
Y1wwXHgxY1wwXHgxY1wwXHgxY1wweFwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgx
Y1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1ww
XHgxY1wweVwwelwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgx
Y1wwe1wwXHgxY1wwXHg5MFwwXHg5MVwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHhi
ZlwwXHgxY1wwXHg5MlwwXHhiZVwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1ww
XHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHhj
MFwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1ww
XHg4NFwwXHhkYVwwXHhjN1wwXHg4OVwwXHhkNFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwXHhkYlww
IFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwXHgxY1wwIFww
IFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwXHhkZFwwXHhmMlwwXHhmYVwwXHhmZVwwXHgxN1wwXHgx
N1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgwMVx4MDFceDE3XDBceDE3XDBceDE3
XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBc
eDE3XDBceDE3XDBceDE3XDBceDE3XDBceDAzXHgwMSBcMFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdc
MFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdcMFxuXHgwMVx4ZjhcMClceDAxXHgxNlx4MDEiXDAiXDAi
XDAiXDAiXDAiXDAiXDBceDE5XHgwMSJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJc
MCJcMCJcMCJcMCJcMFx4MWJceDAxXHgxN1wwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIVx4MDEv
XHgwMVwnXHgwMTBceDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1x4
MDA2XHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNceDAwOVx4MDEiXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDA7XHgwMT5ceDAx
P1x4MDFAXHgwMVx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMEFceDAx
XHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgx
ZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwQlx4MDFceDAzXDBceDFlXDBc
eDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDA0XHgwMURceDAxRVx4
MDFGXHgwMVx4MDNcMFx4MGJceDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwYVx4MDFc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBHXHgwMVx4MWVcMFx4MDNcMFx4
MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMElceDAxTVx4MDFPXHgwMVFc
eDAxXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwUlx4MDFceDE5XDBTXHgwMVlceDAxXHgx
OVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVww
XHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXlx4MDFceDAzXDBceDE5XDBceDE5XDBceDE5
XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBgXHgwMWJceDAxY1x4MDFkXHgwMVx4MDNc
MGVceDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwclx4MDFmXHgwMVx4MDNcMFx4MDNc
MFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMFx4MDNcMFx4MDNcMGhceDAxXHgxOVwwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1ww
XHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwa1x4MDFsXHgwMXBceDAxcVx4MDFceDAzXDBceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBzXHgwMVx4MDNcMHxceDAxfVx4MDFceDAzXDBceDAzXDBceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDB+XHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMFx4MDNcMFx4N2ZceDAxXHg4MVx4MDFceDg1XHgwMVx4ODZceDAxXHgxZVwwXHg4
ZFx4MDFceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDhjXHgwMVx4OGVceDAxXHgxZVww
XHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgx
ZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHg5MVx4MDFceDAzXDBceDFlXDBceDFlXDBceDFl
XDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDkzXHgwMVx4OWVceDAxXHhhMFx4MDFc
eGE0XHgwMVx4OTdcMFx4YjBceDAxXHg5OFwwXHg5OVwwXHg5YVwwXHhhNVx4MDFceDliXDBceGE2
XHgwMVx4YTdceDAxXHg5Y1wwXHg5ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhh
M1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhhYVwwXHhhOFx4MDFceDFl
XDBceGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBceGE5XHgw
MVx4YWFceDAxXHhhY1x4MDFceGFkXHgwMVx4ZjZcMFx4YjJceDAxXHg5OFwwXHg5OVwwXHg5YVww
XHhiMVx4MDFceDliXDBceGIzXHgwMVx4YTNcMFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBc
MFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4
YWFcMFx4YjVceDAxXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhi
MVwwXHhiMlwwXHhiNlx4MDFceGI4XHgwMVx4ODRcMFx4YTNcMFx4ZjhcMH5cMFx4OThcMFx4OTlc
MFx4OWFcMFx4OTFcMFx4OWJcMFx4YWFcMFBcMFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBc
MFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4
YWFcMFx4MTdcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFc
MFx4YjJcMFx0XDBSXDBceDdmXDBceDAzXDBceGZiXDBceDAzXDBceDk4XDBceDk5XDBceDlhXDBc
eDE5XDBceDliXDBQXDBLXDBceDljXDBceDlkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEy
XDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBNXDBceGIz
XDBceGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBIXHgwMVx4
YzFcMFx4ZjVcMFx4ZjRcMFx4ODJceDAxOFx4MDFceDk4XDBceDk5XDBceDlhXDBOXHgwMVx4OWJc
MFx4MGVcMFx4ZDZcMFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4
YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBc
eGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBc
eGNkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2
XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhh
ZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBceGRlXDBceGRmXDBceGUwXDBceGUx
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhlMlwwXHhlM1wwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFx4YjNcMFx4
OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVc
MFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBcMFwwXHhhYlwwXHhhY1wwXHhhZFww
XHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBceGRlXDBceGRmXDBceGUwXDBc
eGUxXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBceGNkXDBceDll
XDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBc
eGE4XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlww
XHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBcMFwwXHhkZlwwXHhlMFwwXHhlMVwwXHg5OFwwXHg5
OVwwXHhjYlwwXDBcMFx4Y2NcMFwwXDBcMFwwXHg5Y1wwXHhjZFwwXHg5ZVwwXHg5ZlwwXHhhMFww
XHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhh
YVwwXDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4
YjJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4OThcMFx4OTlcMFx4Y2JcMFwwXDBceGNjXDBc
eDkwXHgwMVx4Y2VcMFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4
YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBc
eGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBc
eGNkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2
XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhh
ZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGUxXDBceDk4
XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXHhhMlx4MDFcMFwwXHg5Y1wwXHhjZFwwXHg5ZVwwXHg5
ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFww
XHhhOVwwXHhhYVwwXDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBc
MFx4YjFcMFx4YjJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4OThcMFx4OTlcMFx4Y2JcMFww
XDBceGNjXDBcMFwwXDBcMFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJc
MFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIz
XDBceGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YjNc
MCcsCisgIC8qIGNoZWNrICovIllcMFwwXDBcXFwwXHhiNVwwXlwwXHhiZlwwXHhiNFwwXHg4Zlww
XHhiY1wwXHhiZFwwXHhkN1wwXHg4OVwwWlwwW1wwXHhiY1wwXVwwXHhjZVwwXHhjYVwwXHhjNFww
XlwwWFwwXGJceDAxXHhjNVwwXHhjNlwwXFxcMFx4OTdcMF5cMFx4OWJcMFx4Y2VcMFx4OWRcMFx4
ZDZcMFx4ZDdcMFx0XHgwMVx4ZDFcMFx4ZDJcMFx4ZGZcMFx4ZTBcMFx4ZTFcMGlceDAxalx4MDFr
XHgwMStceDAxXHgwMVx4MDFcblwwYlx4MDFjXHgwMTJceDAxMVx4MDFceDhhXHgwMDNceDAxXHRc
eDAxNVx4MDFceDhlXDBceDA0XHgwMUZcMFx0XHgwMTxceDAxPVx4MDFceGVhXDBcblx4MDFceGU2
XDBceGU3XDBOXDBceDhhXDBcMFwwXHg5YVwwXHg5YlwwXHg4ZVwwXHg5ZFx4MDA4XHgwMTlceDAx
JlwwPFx4MDE9XHgwMVxiXHgwMVx4Y2JcMFx4Y2NcMFx4Y2RcMFx4ZmNcMFx4ODVceDAxXHhkOFww
XHg4N1wwXHg4OFwwXHgwNFx4MDEyXHgwMVx4MTFceDAxXGJceDAxXHg4ZFwwXHRceDAxXG5ceDAx
XHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHgwNFx4MDFceGE0XDBceGE1XDBceGE2XDBc
eGE3XDBceGE4XDBcblx4MDFceDEwXHgwMVx4YWFceDAxXHgxMlx4MDFceDAxXHgwMVx4ODdcMFx4
ODhcMFwwXDApXHgwMVx4MDVceDAxXHgwN1x4MDFceDhkXDBcdFx4MDFceGNiXDBceGNjXDBceGNk
XDBceGNmXDBceDAxXHgwMVx4MDNcMFx4ZjZcMFx0XHgwMVx4ZjhcMFx4MDRceDAxXHgwN1x4MDFc
eGZiXDBcblx4MDExXHgwMTxceDAxPVx4MDFceDBlXHgwMVx4MDRceDAxXHgwMVx4MDFceDExXHgw
MVx4ZGZcMFx0XHgwMVx4ZTFcMFxuXHgwMVx4MDdceDAxXHgxN1wwXHgxOFwwXHgxOVwwXHgxYVww
K1x4MDFceDAxXHgwMVx4MWRcMFx4MWFceDAxMlx4MDFceDA1XHgwMTFceDAxXHgwNFx4MDEzXHgw
MVx0XHgwMTVceDAxXHhkZVwwOlx4MDE7XHgwMTxceDAxPVx4MDE+XHgwMT9ceDAxQFx4MDFBXHgw
MUJceDAxQ1x4MDFEXHgwMUVceDAxRlx4MDFHXHgwMVx4MTNcMFx0XHgwMVx4MTVcMFx4MTZcMFx4
MDRceDAxe1x4MDFceDA0XHgwMVx4MDRceDAxXHgwNFx4MDFgXHgwMVxuXHgwMVx0XHgwMVx4MWZc
MCBcMFxuXHgwMVx4MDFceDAxXG5ceDAxXHgxNFx4MDFcblx4MDFceDA1XHgwMSdcMHhceDAxXHgw
NFx4MDFcblx4MDF6XHgwMXJceDAxe1x4MDF4XHgwMVxuXHgwMVx4MDRceDAxLlx4MDEvXHgwMVFc
eDAxeVx4MDFceDA1XHgwMVxuXHgwMVx4MDRceDAxNlx4MDFcdFx4MDE4XHgwMTlceDAxXHg4Y1x4
MDFceDgxXHgwMVx4OGVceDAxXHgwMVwwXHgwMlwwXHgwM1wwXHg4YVx4MDFceDFiXDBceDFjXDBc
eDFkXDBceDFlXDBceDA0XHgwMVx4OTBceDAxI1x4MDEkXHgwMSVceDAxJlx4MDE8XHgwMVx4OWVc
eDAxOVwwOlwwO1wwPFwwPVwwPlwwP1wwQFwwQVwwQlwwXHgwNlx4MDFceGEyXHgwMUtceDAxXHRc
eDAxXHgwNlx4MDFceDBlXHgwMXNceDAxXHRceDAxXHgxMVx4MDFceDA2XHgwMVx4MDZceDAxXHgw
NFx4MDFcdFx4MDFcdFx4MDFceDA0XHgwMVx4MDdceDAxXHgwNFx4MDFceGIyXHgwMVxuXHgwMVx4
MDRceDAxXHhiNVx4MDFceDgyXHgwMThceDAxOVx4MDFVXHgwMVZceDAxV1x4MDFYXHgwMVxuXHgw
MVx4MDFceDAxXHgwMlx4MDFceDAzXHgwMWhceDAxaVx4MDFqXHgwMWtceDAxXHg5MVx4MDEtXHgw
MS5ceDAxL1x4MDFceDA1XHgwMVx4MDZceDAxXHgwNFx4MDF0XHgwMVxuXHgwMVx4MDZceDAxXHRc
eDAxXG5ceDAxXHRceDAxXHgwNFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4
MDFcdFx4MDFceDExXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFc
eDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4
MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMVx4OTJceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgw
MShceDAxKVx4MDEqXHgwMVxuXHgwMStceDAxLFx4MDEtXHgwMVx0XHgwMVxuXHgwMVxuXHgwMTFc
eDAxXG5ceDAxM1x4MDE0XHgwMTVceDAxNlx4MDFcblx4MDE4XHgwMTlceDAxXHhhYVx4MDEjXHgw
MVx4MDZceDAxXG5ceDAxXG5ceDAxXHRceDAxXHgwNVx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4
MGVceDAxXHgwZlx4MDFcblx4MDFIXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAx
XHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFc
eDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMVxuXHgwMSNceDAxJFx4MDElXHgwMSZc
eDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFceDA2XHgwMVx4MDRceDAxXHgwNFx4MDFcdFx4
MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMStceDAxXHgwZlx4MDFcblx4MDFcblx4MDFceDEy
XHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlc
eDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFc
blx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcdFx4MDFc
eDA0XHgwMVx0XHgwMVx0XHgwMVx0XHgwMVx0XHgwMVxuXHgwMVx4MGJceDAxXGZceDAxXHJceDAx
XHgwZVx4MDFceDBmXHgwMVx0XHgwMVx4MTFceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgx
NVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFj
XHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxSFx4MDFcIlx4MDEjXHgwMSRceDAxJVx4
MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXG5ceDAxIVx4MDFcblx4MDFcdFx4MDFcdFx4MDFc
blx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcdFx4MDFceDExXHgwMVx4
MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgx
OVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgw
MVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4MDFc
eDAxXHRceDAxXHgwNlx4MDFcblx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4
MGVceDAxXHgwZlx4MDFcblx4MDFceDExXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVc
eDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4
MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx0XHgwMUhceDAxI1x4MDEkXHgwMSVceDAx
Jlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx0XHgwMVx4MDRceDAxXG5ceDAxXHgwNFx4MDFcdFx4
MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcIlx4MDFceDExXHgw
MVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAx
XHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEg
XHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVxu
XHgwMVxuXHgwMVxuXHgwMVxuXHgwMVx0XHgwMVxuXHgwMVx4MGJceDAxXGZceDAxXHJceDAxXHgw
ZVx4MDFceDBmXHgwMVx4MDZceDAxXHgxMVx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1
XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNc
eDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4MDFIXHgwMSNceDAxJFx4MDElXHgw
MSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcYlx4MDFcblx4MDFceDAxXHgwMVx0XHgwMVx0XHgw
MVx4MDdceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxXHgwNlx4MDFceDEx
XHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThc
eDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4
MDEgXHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgw
MVxuXHgwMVxuXHgwMVxuXHgwMTZceDAxXHRceDAxXG5ceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFc
blx4MDFceDBmXHgwMVxuXHgwMVxuXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAx
XHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFc
eDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4
MDEnXHgwMShceDAxKVx4MDEqXHgwMVxuXHgwMVxuXHgwMVxuXHgwMVx4MDZceDAxXHRceDAxXHgw
NFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDE0XHgwMVxuXHgwMVx4MTJc
eDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4
MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4
MGVceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHgwZVx4
MDFcblx4MDFcblx4MDFcblx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx0XHgw
MVx4MGZceDAxXG5ceDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2
XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRc
eDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdc
eDAxKFx4MDEpXHgwMSpceDAxXG5ceDAxXG5ceDAxXG5ceDAxXG5ceDAxXHRceDAxXHgwNlx4MDFc
eDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcblx4MDFcblx4MDFceDEyXHgwMVx4
MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgx
YVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcdFx4MDFI
XHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4MDFc
blx4MDFcblx4MDFcdFx4MDFcdFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVxuXHgwMVx4MGZceDAx
XG5ceDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdc
eDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4
MDFceDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEp
XHgwMSpceDAxXG5ceDAxXHgwZVx4MDFcblx4MDFcblx4MDFcdFx4MDFceDExXHgwMVx4MGJceDAx
XGZceDAxXHJceDAxXG5ceDAxXHgwZlx4MDFcdFx4MDFcMFwwXHgxMlx4MDFceDEzXHgwMVx4MTRc
eDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4
MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHgxMVx4MDFIXHgwMSNceDAx
JFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4MDFcblx4MDFcblx4
MDFcdFx4MDFceDAxXHgwMVx4MGJceDAxXGZceDAxXHJceDAxXG5ceDAxXHgwZlx4MDFcblx4MDFc
blx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4
XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZc
eDAxIFx4MDFcblx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4
MDFcblx4MDFcblx4MDFceDAxXHgwMVxuXHgwMVx0XHgwMVx0XHgwMVx4MGJceDAxXGZceDAxXHJc
eDAxXHgwMVx4MDFceDBmXHgwMVx4MGVceDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAx
XHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFc
eDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAx
JVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHgwZVx4MDFceDg2XDBceGFiXDBceGFhXDBc
dFx4MDFceGY0XDBceDBiXHgwMVxmXHgwMVxyXHgwMVx4MTRceDAxXHgwZlx4MDFceDAyXDBceDhk
XDBceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgw
MVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAx
IFx4MDFceGZmXHhmZkhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgw
MVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MGJceDAx
XGZceDAxXHJceDAxXHhmZlx4ZmZceDBmXHgwMVx4ZmZceGZmXHhmZlx4ZmZceDEyXHgwMVx4MTNc
eDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4
MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFceGZmXHhmZkhc
eDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4ZmZceGZmXHhmZlx4
ZmYtXHgwMS5ceDAxL1x4MDEwXHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmOFx4MDE5XHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgw
MVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZkhceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgx
NVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFj
XHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZceGZmXHhmZiNceDAxJFx4
MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmLVx4MDEuXHgw
MS9ceDAxMFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4
ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgx
OFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFm
XHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAx
Klx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYuXHgwMS9ceDAxMFx4MDFceDBiXHgwMVxmXHgw
MVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4
MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgx
Ylx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNc
eDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZm
XHgwZlx4MDFceDEwXHgwMTdceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2
XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRc
eDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAx
J1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4
ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgx
OFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFm
XHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAx
Klx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmMFx4MDFceDBiXHgw
MVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceDEwXHgwMVx4ZmZceGZmXHgxMlx4MDFceDEz
XHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFc
eDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZI
XHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4
ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgx
NVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFj
XHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDEl
XHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmSFx4MDEiLAorICAvKiBlcnJvcl9mdW5j
dGlvbiAqL3BhcnNlX2Vycm9yLAorICAvKiBuYW1lc19jb25zdCAqLyJGVU5DUkVGXDBNVVRcMExQ
QVJcMFJQQVJcME5PUFwwRFJPUFwwQkxPQ0tcMEVORFwwSUZcMFRIRU5cMEVMU0VcMFNFTEVDVFww
TE9PUFwwQlJcMEJSX0lGXDBCUl9UQUJMRVwwQ0FMTFwwQ0FMTF9JTkRJUkVDVFwwUkVUVVJOXDBH
RVRfTE9DQUxcMFNFVF9MT0NBTFwwVEVFX0xPQ0FMXDBHRVRfR0xPQkFMXDBTRVRfR0xPQkFMXDBV
TlJFQUNIQUJMRVwwQ1VSUkVOVF9NRU1PUllcMEdST1dfTUVNT1JZXDBGVU5DXDBTVEFSVFwwVFlQ
RVwwUEFSQU1cMFJFU1VMVFwwTE9DQUxcMEdMT0JBTFwwTU9EVUxFXDBUQUJMRVwwRUxFTVwwTUVN
T1JZXDBEQVRBXDBPRkZTRVRcMElNUE9SVFwwRVhQT1JUXDBTQ1JJUFRcMFJFR0lTVEVSXDBJTlZP
S0VcMEdFVFwwQVNTRVJUX01BTEZPUk1FRFwwQVNTRVJUX0lOVkFMSURcMEFTU0VSVF9TT0ZUX0lO
VkFMSURcMEFTU0VSVF9VTkxJTktBQkxFXDBBU1NFUlRfUkVUVVJOXDBBU1NFUlRfUkVUVVJOX05B
TlwwQVNTRVJUX1RSQVBcMEFTU0VSVF9FWEhBVVNUSU9OXDBJTlBVVFwwT1VUUFVUXDBFT0ZcMCIs
CisgIC8qIG5hbWVzX2Jsb2NrICovIk5BVFwwSU5UXDBGTE9BVFwwVEVYVFwwVkFSXDBWQUxVRV9U
WVBFXDBMT0FEXDBTVE9SRVwwT0ZGU0VUX0VRX05BVFwwQUxJR05fRVFfTkFUXDBDT05TVFwwVU5B
UllcMEJJTkFSWVwwQ09NUEFSRVwwQ09OVkVSVFwwVEVTVFwwIgorXTsKKworZnVuY3Rpb24gc2Ny
aXB0KGxleGZ1biwgbGV4YnVmKSB7CisgIHJldHVybiBQYXJzaW5nLnl5cGFyc2UoeXl0YWJsZXMs
IDEsIGxleGZ1biwgbGV4YnVmKTsKK30KKworZnVuY3Rpb24gc2NyaXB0MShsZXhmdW4sIGxleGJ1
ZikgeworICByZXR1cm4gUGFyc2luZy55eXBhcnNlKHl5dGFibGVzLCAyLCBsZXhmdW4sIGxleGJ1
Zik7Cit9CisKK2Z1bmN0aW9uIG1vZHVsZTEobGV4ZnVuLCBsZXhidWYpIHsKKyAgcmV0dXJuIFBh
cnNpbmcueXlwYXJzZSh5eXRhYmxlcywgMywgbGV4ZnVuLCBsZXhidWYpOworfQorCitleHBvcnRz
LnNjcmlwdCAgPSBzY3JpcHQ7CitleHBvcnRzLnNjcmlwdDEgPSBzY3JpcHQxOworZXhwb3J0cy5t
b2R1bGUxID0gbW9kdWxlMTsKKy8qIFZhck1hcCBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8v
Ly8gZW5kIG9mIHBhcnNlci5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9
OworCisKKyAgX3JlZ2lzdHJ5WydwYXJzaW5nJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBl
eHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBwYXJzaW5nLmpzIC8vLy8vLy8vCisndXNl
IHN0cmljdCc7CisKK3ZhciAkJEFycmF5ICAgICAgICAgPSByZXF1aXJlKCIuL2FycmF5Iik7Cit2
YXIgQ3VycnkgICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIExleGluZyAgICAg
ICAgICA9IHJlcXVpcmUoIi4vbGV4aW5nIik7Cit2YXIgQ2FtbF9vYmogICAgICAgID0gcmVxdWly
ZSgiLi9jYW1sX29iaiIpOwordmFyIENhbWxfYXJyYXkgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9h
cnJheSIpOwordmFyIENhbWxfcGFyc2VyICAgICA9IHJlcXVpcmUoIi4vY2FtbF9wYXJzZXIiKTsK
K3ZhciBDYW1sX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0aW9ucyIpOworCit2
YXIgWVlleGl0ID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiUGFyc2luZy5ZWWV4aXQiKTsKKwor
dmFyIFBhcnNlX2Vycm9yID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiUGFyc2luZy5QYXJzZV9l
cnJvciIpOworCit2YXIgZW52ID0gLyogcmVjb3JkICovWworICAvKiBzX3N0YWNrICovQ2FtbF9h
cnJheS5jYW1sX21ha2VfdmVjdCgxMDAsIDApLAorICAvKiB2X3N0YWNrICovQ2FtbF9hcnJheS5j
YW1sX21ha2VfdmVjdCgxMDAsIC8qICgpICovMCksCisgIC8qIHN5bWJfc3RhcnRfc3RhY2sgKi9D
YW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KDEwMCwgTGV4aW5nLmR1bW15X3BvcyksCisgIC8qIHN5
bWJfZW5kX3N0YWNrICovQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdCgxMDAsIExleGluZy5kdW1t
eV9wb3MpLAorICAvKiBzdGFja3NpemUgKi8xMDAsCisgIC8qIHN0YWNrYmFzZSAqLzAsCisgIC8q
IGN1cnJfY2hhciAqLzAsCisgIC8qIGx2YWwgOiAoKSAqLzAsCisgIC8qIHN5bWJfc3RhcnQgKi9M
ZXhpbmcuZHVtbXlfcG9zLAorICAvKiBzeW1iX2VuZCAqL0xleGluZy5kdW1teV9wb3MsCisgIC8q
IGFzcCAqLzAsCisgIC8qIHJ1bGVfbGVuICovMCwKKyAgLyogcnVsZV9udW1iZXIgKi8wLAorICAv
KiBzcCAqLzAsCisgIC8qIHN0YXRlICovMCwKKyAgLyogZXJyZmxhZyAqLzAKK107CisKK2Z1bmN0
aW9uIGdyb3dfc3RhY2tzKCkgeworICB2YXIgb2xkc2l6ZSA9IGVudlsvKiBzdGFja3NpemUgKi80
XTsKKyAgdmFyIG5ld3NpemUgPSAob2xkc2l6ZSA8PCAxKTsKKyAgdmFyIG5ld19zID0gQ2FtbF9h
cnJheS5jYW1sX21ha2VfdmVjdChuZXdzaXplLCAwKTsKKyAgdmFyIG5ld192ID0gQ2FtbF9hcnJh
eS5jYW1sX21ha2VfdmVjdChuZXdzaXplLCAvKiAoKSAqLzApOworICB2YXIgbmV3X3N0YXJ0ID0g
Q2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChuZXdzaXplLCBMZXhpbmcuZHVtbXlfcG9zKTsKKyAg
dmFyIG5ld19lbmQgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KG5ld3NpemUsIExleGluZy5k
dW1teV9wb3MpOworICAkJEFycmF5LmJsaXQoZW52Wy8qIHNfc3RhY2sgKi8wXSwgMCwgbmV3X3Ms
IDAsIG9sZHNpemUpOworICBlbnZbLyogc19zdGFjayAqLzBdID0gbmV3X3M7CisgICQkQXJyYXku
YmxpdChlbnZbLyogdl9zdGFjayAqLzFdLCAwLCBuZXdfdiwgMCwgb2xkc2l6ZSk7CisgIGVudlsv
KiB2X3N0YWNrICovMV0gPSBuZXdfdjsKKyAgJCRBcnJheS5ibGl0KGVudlsvKiBzeW1iX3N0YXJ0
X3N0YWNrICovMl0sIDAsIG5ld19zdGFydCwgMCwgb2xkc2l6ZSk7CisgIGVudlsvKiBzeW1iX3N0
YXJ0X3N0YWNrICovMl0gPSBuZXdfc3RhcnQ7CisgICQkQXJyYXkuYmxpdChlbnZbLyogc3ltYl9l
bmRfc3RhY2sgKi8zXSwgMCwgbmV3X2VuZCwgMCwgb2xkc2l6ZSk7CisgIGVudlsvKiBzeW1iX2Vu
ZF9zdGFjayAqLzNdID0gbmV3X2VuZDsKKyAgZW52Wy8qIHN0YWNrc2l6ZSAqLzRdID0gbmV3c2l6
ZTsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gY2xlYXJfcGFyc2VyKCkgewor
ICAkJEFycmF5LmZpbGwoZW52Wy8qIHZfc3RhY2sgKi8xXSwgMCwgZW52Wy8qIHN0YWNrc2l6ZSAq
LzRdLCAvKiAoKSAqLzApOworICBlbnZbLyogbHZhbCAqLzddID0gLyogKCkgKi8wOworICByZXR1
cm4gLyogKCkgKi8wOworfQorCit2YXIgY3VycmVudF9sb29rYWhlYWRfZnVuID0gW2Z1bmN0aW9u
ICgpIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9XTsKKworZnVuY3Rpb24geXlwYXJz
ZSh0YWJsZXMsIHN0YXJ0LCBsZXhlciwgbGV4YnVmKSB7CisgIHZhciBpbml0X2FzcCA9IGVudlsv
KiBhc3AgKi8xMF07CisgIHZhciBpbml0X3NwID0gZW52Wy8qIHNwICovMTNdOworICB2YXIgaW5p
dF9zdGFja2Jhc2UgPSBlbnZbLyogc3RhY2tiYXNlICovNV07CisgIHZhciBpbml0X3N0YXRlID0g
ZW52Wy8qIHN0YXRlICovMTRdOworICB2YXIgaW5pdF9jdXJyX2NoYXIgPSBlbnZbLyogY3Vycl9j
aGFyICovNl07CisgIHZhciBpbml0X2x2YWwgPSBlbnZbLyogbHZhbCAqLzddOworICB2YXIgaW5p
dF9lcnJmbGFnID0gZW52Wy8qIGVycmZsYWcgKi8xNV07CisgIGVudlsvKiBzdGFja2Jhc2UgKi81
XSA9IGVudlsvKiBzcCAqLzEzXSArIDEgfCAwOworICBlbnZbLyogY3Vycl9jaGFyICovNl0gPSBz
dGFydDsKKyAgZW52Wy8qIHN5bWJfZW5kICovOV0gPSBsZXhidWZbLyogbGV4X2N1cnJfcCAqLzEx
XTsKKyAgdHJ5IHsKKyAgICB2YXIgX2NtZCA9IC8qIFN0YXJ0ICovMDsKKyAgICB2YXIgX2FyZyA9
IC8qICgpICovMDsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgYXJnID0gX2FyZzsKKyAg
ICAgIHZhciBjbWQgPSBfY21kOworICAgICAgdmFyIG1hdGNoID0gQ2FtbF9wYXJzZXIuY2FtbF9w
YXJzZV9lbmdpbmUodGFibGVzLCBlbnYsIGNtZCwgYXJnKTsKKyAgICAgIHN3aXRjaCAobWF0Y2gp
IHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICB2YXIgdCA9IEN1cnJ5Ll8xKGxleGVy
LCBsZXhidWYpOworICAgICAgICAgICAgZW52Wy8qIHN5bWJfc3RhcnQgKi84XSA9IGxleGJ1Zlsv
KiBsZXhfc3RhcnRfcCAqLzEwXTsKKyAgICAgICAgICAgIGVudlsvKiBzeW1iX2VuZCAqLzldID0g
bGV4YnVmWy8qIGxleF9jdXJyX3AgKi8xMV07CisgICAgICAgICAgICBfYXJnID0gdDsKKyAgICAg
ICAgICAgIF9jbWQgPSAvKiBUb2tlbl9yZWFkICovMTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgdGhyb3cgUGFyc2VfZXJyb3I7Cisg
ICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgZ3Jvd19zdGFja3MoLyogKCkgKi8wKTsKKyAg
ICAgICAgICAgIF9hcmcgPSAvKiAoKSAqLzA7CisgICAgICAgICAgICBfY21kID0gLyogU3RhY2tz
X2dyb3duXzEgKi8yOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAz
IDogCisgICAgICAgICAgICBncm93X3N0YWNrcygvKiAoKSAqLzApOworICAgICAgICAgICAgX2Fy
ZyA9IC8qICgpICovMDsKKyAgICAgICAgICAgIF9jbWQgPSAvKiBTdGFja3NfZ3Jvd25fMiAqLzM7
CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAg
ICAgIHZhciBtYXRjaCQxOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgbWF0Y2gk
MSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIC8qIFNlbWFudGljX2FjdGlvbl9jb21w
dXRlZCAqLzQsCisgICAgICAgICAgICAgICAgQ3VycnkuXzEodGFibGVzWy8qIGFjdGlvbnMgKi8w
XVtlbnZbLyogcnVsZV9udW1iZXIgKi8xMl1dLCBlbnYpCisgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoZXhuKXsKKyAgICAgICAgICAgICAgaWYgKGV4
biA9PT0gUGFyc2VfZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgICAgICAvKiBFcnJvcl9kZXRlY3RlZCAqLzUsCisgICAgICAgICAg
ICAgICAgICAvKiAoKSAqLzAKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IGV4bjsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgX2FyZyA9IG1hdGNoJDFbMV07Cisg
ICAgICAgICAgICBfY21kID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgQ3VycnkuXzEodGFibGVzWy8qIGVycm9y
X2Z1bmN0aW9uICovMTNdLCAic3ludGF4IGVycm9yIik7CisgICAgICAgICAgICBfYXJnID0gLyog
KCkgKi8wOworICAgICAgICAgICAgX2NtZCA9IC8qIEVycm9yX2RldGVjdGVkICovNTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgfQorICAgIH07CisgIH0KKyAg
Y2F0Y2ggKGV4biQxKXsKKyAgICB2YXIgY3Vycl9jaGFyID0gZW52Wy8qIGN1cnJfY2hhciAqLzZd
OworICAgIGVudlsvKiBhc3AgKi8xMF0gPSBpbml0X2FzcDsKKyAgICBlbnZbLyogc3AgKi8xM10g
PSBpbml0X3NwOworICAgIGVudlsvKiBzdGFja2Jhc2UgKi81XSA9IGluaXRfc3RhY2tiYXNlOwor
ICAgIGVudlsvKiBzdGF0ZSAqLzE0XSA9IGluaXRfc3RhdGU7CisgICAgZW52Wy8qIGN1cnJfY2hh
ciAqLzZdID0gaW5pdF9jdXJyX2NoYXI7CisgICAgZW52Wy8qIGx2YWwgKi83XSA9IGluaXRfbHZh
bDsKKyAgICBlbnZbLyogZXJyZmxhZyAqLzE1XSA9IGluaXRfZXJyZmxhZzsKKyAgICBpZiAoZXhu
JDFbMF0gPT09IFlZZXhpdCkgeworICAgICAgcmV0dXJuIGV4biQxWzFdOworICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIGN1cnJlbnRfbG9va2FoZWFkX2Z1blswXSA9IGZ1bmN0aW9uICh0b2spIHsK
KyAgICAgICAgaWYgKHRvay5sZW5ndGggIT09IHVuZGVmaW5lZCkgeworICAgICAgICAgIHJldHVy
biArKHRhYmxlc1svKiB0cmFuc2xfYmxvY2sgKi8yXVt0b2sudGFnIHwgMF0gPT09IGN1cnJfY2hh
cik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuICsodGFibGVz
Wy8qIHRyYW5zbF9jb25zdCAqLzFdW3Rva10gPT09IGN1cnJfY2hhcik7CisgICAgICAgIH0KKyAg
ICAgIH07CisgICAgICB0aHJvdyBleG4kMTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gcGVl
a192YWwoZW52LCBuKSB7CisgIHJldHVybiBlbnZbLyogdl9zdGFjayAqLzFdW2VudlsvKiBhc3Ag
Ki8xMF0gLSBuIHwgMF07Cit9CisKK2Z1bmN0aW9uIHN5bWJvbF9zdGFydF9wb3MoKSB7CisgIHZh
ciBfaSA9IGVudlsvKiBydWxlX2xlbiAqLzExXTsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBp
ID0gX2k7CisgICAgaWYgKGkgPD0gMCkgeworICAgICAgcmV0dXJuIGVudlsvKiBzeW1iX2VuZF9z
dGFjayAqLzNdW2VudlsvKiBhc3AgKi8xMF1dOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZh
ciBzdCA9IGVudlsvKiBzeW1iX3N0YXJ0X3N0YWNrICovMl1bKGVudlsvKiBhc3AgKi8xMF0gLSBp
IHwgMCkgKyAxIHwgMF07CisgICAgICB2YXIgZW4gPSBlbnZbLyogc3ltYl9lbmRfc3RhY2sgKi8z
XVsoZW52Wy8qIGFzcCAqLzEwXSAtIGkgfCAwKSArIDEgfCAwXTsKKyAgICAgIGlmIChDYW1sX29i
ai5jYW1sX25vdGVxdWFsKHN0LCBlbikpIHsKKyAgICAgICAgcmV0dXJuIHN0OworICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIF9pID0gaSAtIDEgfCAwOworICAgICAgICBjb250aW51ZSA7
CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3ltYm9sX2Vu
ZF9wb3MoKSB7CisgIHJldHVybiBlbnZbLyogc3ltYl9lbmRfc3RhY2sgKi8zXVtlbnZbLyogYXNw
ICovMTBdXTsKK30KKworZnVuY3Rpb24gcmhzX3N0YXJ0X3BvcyhuKSB7CisgIHJldHVybiBlbnZb
Lyogc3ltYl9zdGFydF9zdGFjayAqLzJdW2VudlsvKiBhc3AgKi8xMF0gLSAoZW52Wy8qIHJ1bGVf
bGVuICovMTFdIC0gbiB8IDApIHwgMF07Cit9CisKK2Z1bmN0aW9uIHJoc19lbmRfcG9zKG4pIHsK
KyAgcmV0dXJuIGVudlsvKiBzeW1iX2VuZF9zdGFjayAqLzNdW2VudlsvKiBhc3AgKi8xMF0gLSAo
ZW52Wy8qIHJ1bGVfbGVuICovMTFdIC0gbiB8IDApIHwgMF07Cit9CisKK2Z1bmN0aW9uIHN5bWJv
bF9zdGFydCgpIHsKKyAgcmV0dXJuIHN5bWJvbF9zdGFydF9wb3MoLyogKCkgKi8wKVsvKiBwb3Nf
Y251bSAqLzNdOworfQorCitmdW5jdGlvbiBzeW1ib2xfZW5kKCkgeworICByZXR1cm4gc3ltYm9s
X2VuZF9wb3MoLyogKCkgKi8wKVsvKiBwb3NfY251bSAqLzNdOworfQorCitmdW5jdGlvbiByaHNf
c3RhcnQobikgeworICByZXR1cm4gcmhzX3N0YXJ0X3BvcyhuKVsvKiBwb3NfY251bSAqLzNdOwor
fQorCitmdW5jdGlvbiByaHNfZW5kKG4pIHsKKyAgcmV0dXJuIHJoc19lbmRfcG9zKG4pWy8qIHBv
c19jbnVtICovM107Cit9CisKK2Z1bmN0aW9uIGlzX2N1cnJlbnRfbG9va2FoZWFkKHRvaykgewor
ICByZXR1cm4gQ3VycnkuXzEoY3VycmVudF9sb29rYWhlYWRfZnVuWzBdLCB0b2spOworfQorCitm
dW5jdGlvbiBwYXJzZV9lcnJvcigpIHsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKwordmFyIHNl
dF90cmFjZSA9IENhbWxfcGFyc2VyLmNhbWxfc2V0X3BhcnNlcl90cmFjZTsKKworZXhwb3J0cy5z
eW1ib2xfc3RhcnQgICAgICAgICA9IHN5bWJvbF9zdGFydDsKK2V4cG9ydHMuc3ltYm9sX2VuZCAg
ICAgICAgICAgPSBzeW1ib2xfZW5kOworZXhwb3J0cy5yaHNfc3RhcnQgICAgICAgICAgICA9IHJo
c19zdGFydDsKK2V4cG9ydHMucmhzX2VuZCAgICAgICAgICAgICAgPSByaHNfZW5kOworZXhwb3J0
cy5zeW1ib2xfc3RhcnRfcG9zICAgICA9IHN5bWJvbF9zdGFydF9wb3M7CitleHBvcnRzLnN5bWJv
bF9lbmRfcG9zICAgICAgID0gc3ltYm9sX2VuZF9wb3M7CitleHBvcnRzLnJoc19zdGFydF9wb3Mg
ICAgICAgID0gcmhzX3N0YXJ0X3BvczsKK2V4cG9ydHMucmhzX2VuZF9wb3MgICAgICAgICAgPSBy
aHNfZW5kX3BvczsKK2V4cG9ydHMuY2xlYXJfcGFyc2VyICAgICAgICAgPSBjbGVhcl9wYXJzZXI7
CitleHBvcnRzLlBhcnNlX2Vycm9yICAgICAgICAgID0gUGFyc2VfZXJyb3I7CitleHBvcnRzLnNl
dF90cmFjZSAgICAgICAgICAgID0gc2V0X3RyYWNlOworZXhwb3J0cy5ZWWV4aXQgICAgICAgICAg
ICAgICA9IFlZZXhpdDsKK2V4cG9ydHMueXlwYXJzZSAgICAgICAgICAgICAgPSB5eXBhcnNlOwor
ZXhwb3J0cy5wZWVrX3ZhbCAgICAgICAgICAgICA9IHBlZWtfdmFsOworZXhwb3J0cy5pc19jdXJy
ZW50X2xvb2thaGVhZCA9IGlzX2N1cnJlbnRfbG9va2FoZWFkOworZXhwb3J0cy5wYXJzZV9lcnJv
ciAgICAgICAgICA9IHBhcnNlX2Vycm9yOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8v
IGVuZCBvZiBwYXJzaW5nLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07
CisKKworICBfcmVnaXN0cnlbJ3BlcnZhc2l2ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0
IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHBlcnZhc2l2ZXMuanMgLy8vLy8vLy8K
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUo
Ii4vY3VycnkiKTsKK3ZhciBDYW1sX2lvICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Nh
bWxfaW8iKTsKK3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxf
b2JqIik7Cit2YXIgQ2FtbF9mb3JtYXQgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2Zv
cm1hdCIpOwordmFyIENhbWxfc3RyaW5nICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9z
dHJpbmciKTsKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxf
ZXhjZXB0aW9ucyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zICA9IHJlcXVpcmUoIi4v
Y2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKK3ZhciBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Mg
PSByZXF1aXJlKCIuL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcyIpOworCitmdW5jdGlvbiBmYWls
d2l0aChzKSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFp
bHVyZSwKKyAgICAgICAgcworICAgICAgXTsKK30KKworZnVuY3Rpb24gaW52YWxpZF9hcmcocykg
eworICB0aHJvdyBbCisgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJn
dW1lbnQsCisgICAgICAgIHMKKyAgICAgIF07Cit9CisKK3ZhciBFeGl0ID0gQ2FtbF9leGNlcHRp
b25zLmNyZWF0ZSgiUGVydmFzaXZlcy5FeGl0Iik7CisKK2Z1bmN0aW9uIG1pbih4LCB5KSB7Cisg
IGlmIChDYW1sX29iai5jYW1sX2xlc3NlcXVhbCh4LCB5KSkgeworICAgIHJldHVybiB4OworICB9
CisgIGVsc2UgeworICAgIHJldHVybiB5OworICB9Cit9CisKK2Z1bmN0aW9uIG1heCh4LCB5KSB7
CisgIGlmIChDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbCh4LCB5KSkgeworICAgIHJldHVybiB4
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiB5OworICB9Cit9CisKK2Z1bmN0aW9uIGFicyh4
KSB7CisgIGlmICh4ID49IDApIHsKKyAgICByZXR1cm4geDsKKyAgfQorICBlbHNlIHsKKyAgICBy
ZXR1cm4gLXggfCAwOworICB9Cit9CisKK2Z1bmN0aW9uIGxub3QoeCkgeworICByZXR1cm4geCBe
IC0xOworfQorCit2YXIgbWluX2ludCA9IC0yMTQ3NDgzNjQ4OworCitmdW5jdGlvbiAkY2FyZXQo
YSwgYikgeworICByZXR1cm4gYSArIGI7Cit9CisKK2Z1bmN0aW9uIGNoYXJfb2ZfaW50KG4pIHsK
KyAgaWYgKG4gPCAwIHx8IG4gPiAyNTUpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiY2hhcl9vZl9p
bnQiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG47CisgIH0KK30KKwor
ZnVuY3Rpb24gc3RyaW5nX29mX2Jvb2woYikgeworICBpZiAoYikgeworICAgIHJldHVybiAidHJ1
ZSI7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuICJmYWxzZSI7CisgIH0KK30KKworZnVuY3Rp
b24gYm9vbF9vZl9zdHJpbmcocGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2Ug
ImZhbHNlIiA6IAorICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIGNhc2UgInRydWUi
IDogCisgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICBkZWZhdWx0OgorICAgICAgdGhy
b3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVu
dCwKKyAgICAgICAgICAgICJib29sX29mX3N0cmluZyIKKyAgICAgICAgICBdOworICB9Cit9CisK
K2Z1bmN0aW9uIHN0cmluZ19vZl9pbnQocGFyYW0pIHsKKyAgcmV0dXJuICIiICsgcGFyYW07Cit9
CisKK2Z1bmN0aW9uIHZhbGlkX2Zsb2F0X2xleGVtKHMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsK
KyAgdmFyIF9pID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0gX2k7CisgICAgaWYg
KGkgPj0gbCkgeworICAgICAgcmV0dXJuICRjYXJldChzLCAiLiIpOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICAgIGlmICht
YXRjaCA+PSA0OCkgeworICAgICAgICBpZiAobWF0Y2ggPj0gNTgpIHsKKyAgICAgICAgICByZXR1
cm4gczsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBfaSA9IGkgKyAxIHwg
MDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIGVsc2UgaWYgKG1hdGNoICE9PSA0NSkgeworICAgICAgICByZXR1cm4gczsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgY29udGlu
dWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHN0cmlu
Z19vZl9mbG9hdChmKSB7CisgIHJldHVybiB2YWxpZF9mbG9hdF9sZXhlbShDYW1sX2Zvcm1hdC5j
YW1sX2Zvcm1hdF9mbG9hdCgiJS4xMmciLCBmKSk7Cit9CisKK2Z1bmN0aW9uICRhdChsMSwgbDIp
IHsKKyAgaWYgKGwxKSB7CisgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgbDFbMF0s
CisgICAgICAgICAgICAkYXQobDFbMV0sIGwyKQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7
CisgICAgcmV0dXJuIGwyOworICB9Cit9CisKK3ZhciBzdGRpbiA9IENhbWxfaW8uc3RkaW47CisK
K3ZhciBzdGRvdXQgPSBDYW1sX2lvLnN0ZG91dDsKKwordmFyIHN0ZGVyciA9IENhbWxfaW8uc3Rk
ZXJyOworCitmdW5jdGlvbiBvcGVuX291dF9nZW4oXywgXyQxLCBfJDIpIHsKKyAgcmV0dXJuIENh
bWxfaW8uY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICB0aHJvdyAiY2FtbF9zeXNfb3BlbiBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKKyAgICAgICAgICAgICAgfSgpKTsKK30KKworZnVuY3Rpb24gb3Blbl9vdXQo
bmFtZSkgeworICByZXR1cm4gb3Blbl9vdXRfZ2VuKC8qIDo6ICovWworICAgICAgICAgICAgICAv
KiBPcGVuX3dyb25seSAqLzEsCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ICAgIC8qIE9wZW5fY3JlYXQgKi8zLAorICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgICAgLyogT3Blbl90cnVuYyAqLzQsCisgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgLyogT3Blbl90ZXh0ICovNywKKyAgICAgICAgICAgICAg
ICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdLCA0MzgsIG5hbWUpOworfQorCitmdW5jdGlv
biBvcGVuX291dF9iaW4obmFtZSkgeworICByZXR1cm4gb3Blbl9vdXRfZ2VuKC8qIDo6ICovWwor
ICAgICAgICAgICAgICAvKiBPcGVuX3dyb25seSAqLzEsCisgICAgICAgICAgICAgIC8qIDo6ICov
WworICAgICAgICAgICAgICAgIC8qIE9wZW5fY3JlYXQgKi8zLAorICAgICAgICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgLyogT3Blbl90cnVuYyAqLzQsCisgICAgICAgICAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogT3Blbl9iaW5hcnkgKi82
LAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0sIDQzOCwgbmFt
ZSk7Cit9CisKK2Z1bmN0aW9uIGZsdXNoX2FsbCgpIHsKKyAgdmFyIF9wYXJhbSA9IENhbWxfaW8u
Y2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCgvKiAoKSAqLzApOworICB3aGlsZSh0cnVlKSB7Cisg
ICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgdHJ5IHsKKyAg
ICAgICAgQ2FtbF9pby5jYW1sX21sX2ZsdXNoKHBhcmFtWzBdKTsKKyAgICAgIH0KKyAgICAgIGNh
dGNoIChleG4peworICAgICAgICAKKyAgICAgIH0KKyAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOwor
ICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG91dHB1dF9ieXRlcyhvYywg
cykgeworICByZXR1cm4gQ2FtbF9pby5jYW1sX21sX291dHB1dChvYywgcywgMCwgcy5sZW5ndGgp
OworfQorCitmdW5jdGlvbiBvdXRwdXRfc3RyaW5nKG9jLCBzKSB7CisgIHJldHVybiBDYW1sX2lv
LmNhbWxfbWxfb3V0cHV0KG9jLCBzLCAwLCBzLmxlbmd0aCk7Cit9CisKK2Z1bmN0aW9uIG91dHB1
dChvYywgcywgb2ZzLCBsZW4pIHsKKyAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiAo
cy5sZW5ndGggLSBsZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJvdXRwdXQiCisgICAg
ICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXQo
b2MsIHMsIG9mcywgbGVuKTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXRfc3Vic3RyaW5nKG9j
LCBzLCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxl
bmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIm91dHB1dF9zdWJzdHJpbmci
CisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9v
dXRwdXQob2MsIHMsIG9mcywgbGVuKTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXRfdmFsdWUo
XywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2Ft
bF9vdXRwdXRfdmFsdWUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Cisg
ICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBjbG9zZV9vdXQob2MpIHsKKyAgQ2FtbF9pby5j
YW1sX21sX2ZsdXNoKG9jKTsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRo
cm93ICJjYW1sX21sX2Nsb3NlX2NoYW5uZWwgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlw
dCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBjbG9zZV9vdXRfbm9lcnIo
b2MpIHsKKyAgdHJ5IHsKKyAgICBDYW1sX2lvLmNhbWxfbWxfZmx1c2gob2MpOworICB9CisgIGNh
dGNoIChleG4peworICAgIAorICB9CisgIHRyeSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfY2xvc2VfY2hhbm5lbCBub3QgaW1wbGVtZW50
ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICAgIH0oKTsKKyAgfQorICBjYXRj
aCAoZXhuJDEpeworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gb3Bl
bl9pbl9nZW4oXywgXyQxLCBfJDIpIHsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vcGVuX2Rl
c2NyaXB0b3JfaW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX3N5
c19vcGVuIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAg
ICAgICB9KCkpOworfQorCitmdW5jdGlvbiBvcGVuX2luKG5hbWUpIHsKKyAgcmV0dXJuIG9wZW5f
aW5fZ2VuKC8qIDo6ICovWworICAgICAgICAgICAgICAvKiBPcGVuX3Jkb25seSAqLzAsCisgICAg
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIC8qIE9wZW5fdGV4dCAqLzcsCisg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0s
IDAsIG5hbWUpOworfQorCitmdW5jdGlvbiBvcGVuX2luX2JpbihuYW1lKSB7CisgIHJldHVybiBv
cGVuX2luX2dlbigvKiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogT3Blbl9yZG9ubHkgKi8wLAor
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAvKiBPcGVuX2JpbmFyeSAq
LzYsCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgIF0sIDAsIG5hbWUpOworfQorCitmdW5jdGlvbiBpbnB1dChfLCBzLCBvZnMsIGxlbikgewor
ICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7
CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRf
YXJndW1lbnQsCisgICAgICAgICAgImlucHV0IgorICAgICAgICBdOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2lu
cHV0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAg
fSgpOworICB9Cit9CisKK2Z1bmN0aW9uIHVuc2FmZV9yZWFsbHlfaW5wdXQoXywgXyQxLCBfb2Zz
LCBfbGVuKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbGVuID0gX2xlbjsKKyAgICB2YXIg
b2ZzID0gX29mczsKKyAgICBpZiAobGVuIDw9IDApIHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7
CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIHIgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgdGhyb3cgImNhbWxfbWxfaW5wdXQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5
ZXRcbiI7CisgICAgICAgIH0oKTsKKyAgICAgIGlmIChyKSB7CisgICAgICAgIF9sZW4gPSBsZW4g
LSByIHwgMDsKKyAgICAgICAgX29mcyA9IG9mcyArIHIgfCAwOworICAgICAgICBjb250aW51ZSA7
CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmVuZF9vZl9maWxlOworICAgICAgfQorICAgIH0KKyAgfTsKK30KKwor
ZnVuY3Rpb24gcmVhbGx5X2lucHV0KGljLCBzLCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwgMCB8
fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWwor
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgInJlYWxseV9pbnB1dCIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gdW5zYWZlX3JlYWxseV9pbnB1dChpYywgcywgb2ZzLCBsZW4pOworICB9Cit9CisKK2Z1bmN0
aW9uIHJlYWxseV9pbnB1dF9zdHJpbmcoaWMsIGxlbikgeworICB2YXIgcyA9IENhbWxfc3RyaW5n
LmNhbWxfY3JlYXRlX3N0cmluZyhsZW4pOworICByZWFsbHlfaW5wdXQoaWMsIHMsIDAsIGxlbik7
CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocyk7Cit9CisKK2Z1bmN0aW9u
IGlucHV0X2xpbmUoY2hhbikgeworICB2YXIgYnVpbGRfcmVzdWx0ID0gZnVuY3Rpb24gKGJ1Ziwg
X3BvcywgX3BhcmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3Bh
cmFtOworICAgICAgdmFyIHBvcyA9IF9wb3M7CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAg
dmFyIGhkID0gcGFyYW1bMF07CisgICAgICAgIHZhciBsZW4gPSBoZC5sZW5ndGg7CisgICAgICAg
IENhbWxfc3RyaW5nLmNhbWxfYmxpdF9ieXRlcyhoZCwgMCwgYnVmLCBwb3MgLSBsZW4gfCAwLCBs
ZW4pOworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgX3BvcyA9IHBvcyAtIGxl
biB8IDA7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgcmV0dXJuIGJ1ZjsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgc2Nh
biA9IGZ1bmN0aW9uIChfYWNjdSwgX2xlbikgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZh
ciBsZW4gPSBfbGVuOworICAgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICAgIHZhciBuID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0X3NjYW5fbGluZSBub3Qg
aW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgfSgpOworICAgICAg
aWYgKG4pIHsKKyAgICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgICAgdmFyIHJlcyA9IENhbWxf
c3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhuIC0gMSB8IDApOworICAgICAgICAgIChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfaW5wdXQgbm90IGltcGxlbWVu
dGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgICAgIH0oKSk7CisgICAgICAg
ICAgQ2FtbF9pby5jYW1sX21sX2lucHV0X2NoYXIoY2hhbik7CisgICAgICAgICAgaWYgKGFjY3Up
IHsKKyAgICAgICAgICAgIHZhciBsZW4kMSA9IChsZW4gKyBuIHwgMCkgLSAxIHwgMDsKKyAgICAg
ICAgICAgIHJldHVybiBidWlsZF9yZXN1bHQoQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5n
KGxlbiQxKSwgbGVuJDEsIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgcmVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAgICAgICAgICAgIF0pOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiByZXM7Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBiZWcg
PSBDYW1sX3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcoLW4gfCAwKTsKKyAgICAgICAgICAoZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0IG5vdCBpbXBs
ZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgICB9KCkpOworICAg
ICAgICAgIF9sZW4gPSBsZW4gLSBuIHwgMDsKKyAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWwor
ICAgICAgICAgICAgYmVnLAorICAgICAgICAgICAgYWNjdQorICAgICAgICAgIF07CisgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNl
IGlmIChhY2N1KSB7CisgICAgICAgIHJldHVybiBidWlsZF9yZXN1bHQoQ2FtbF9zdHJpbmcuY2Ft
bF9jcmVhdGVfc3RyaW5nKGxlbiksIGxlbiwgYWNjdSk7CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZW5kX29mX2ZpbGU7CisgICAg
ICB9CisgICAgfTsKKyAgfTsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhz
Y2FuKC8qIFtdICovMCwgMCkpOworfQorCitmdW5jdGlvbiBjbG9zZV9pbl9ub2VycigpIHsKKyAg
dHJ5IHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICB0aHJvdyAiY2Ft
bF9tbF9jbG9zZV9jaGFubmVsIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4i
OworICAgICAgICAgICAgfSgpOworICB9CisgIGNhdGNoIChleG4peworICAgIHJldHVybiAvKiAo
KSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gcHJpbnRfY2hhcihjKSB7CisgIHJldHVybiBDYW1s
X2lvLmNhbWxfbWxfb3V0cHV0X2NoYXIoc3Rkb3V0LCBjKTsKK30KKworZnVuY3Rpb24gcHJpbnRf
c3RyaW5nKHMpIHsKKyAgcmV0dXJuIG91dHB1dF9zdHJpbmcoc3Rkb3V0LCBzKTsKK30KKworZnVu
Y3Rpb24gcHJpbnRfYnl0ZXMocykgeworICByZXR1cm4gb3V0cHV0X2J5dGVzKHN0ZG91dCwgcyk7
Cit9CisKK2Z1bmN0aW9uIHByaW50X2ludChpKSB7CisgIHJldHVybiBvdXRwdXRfc3RyaW5nKHN0
ZG91dCwgIiIgKyBpKTsKK30KKworZnVuY3Rpb24gcHJpbnRfZmxvYXQoZikgeworICByZXR1cm4g
b3V0cHV0X3N0cmluZyhzdGRvdXQsIHZhbGlkX2Zsb2F0X2xleGVtKENhbWxfZm9ybWF0LmNhbWxf
Zm9ybWF0X2Zsb2F0KCIlLjEyZyIsIGYpKSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X2VuZGxpbmUo
cGFyYW0pIHsKKyAgY29uc29sZS5sb2cocGFyYW0pOworICByZXR1cm4gMDsKK30KKworZnVuY3Rp
b24gcHJpbnRfbmV3bGluZSgpIHsKKyAgQ2FtbF9pby5jYW1sX21sX291dHB1dF9jaGFyKHN0ZG91
dCwgLyogIlxuIiAqLzEwKTsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9mbHVzaChzdGRvdXQp
OworfQorCitmdW5jdGlvbiBwcmVycl9jaGFyKGMpIHsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9t
bF9vdXRwdXRfY2hhcihzdGRlcnIsIGMpOworfQorCitmdW5jdGlvbiBwcmVycl9zdHJpbmcocykg
eworICByZXR1cm4gb3V0cHV0X3N0cmluZyhzdGRlcnIsIHMpOworfQorCitmdW5jdGlvbiBwcmVy
cl9ieXRlcyhzKSB7CisgIHJldHVybiBvdXRwdXRfYnl0ZXMoc3RkZXJyLCBzKTsKK30KKworZnVu
Y3Rpb24gcHJlcnJfaW50KGkpIHsKKyAgcmV0dXJuIG91dHB1dF9zdHJpbmcoc3RkZXJyLCAiIiAr
IGkpOworfQorCitmdW5jdGlvbiBwcmVycl9mbG9hdChmKSB7CisgIHJldHVybiBvdXRwdXRfc3Ry
aW5nKHN0ZGVyciwgdmFsaWRfZmxvYXRfbGV4ZW0oQ2FtbF9mb3JtYXQuY2FtbF9mb3JtYXRfZmxv
YXQoIiUuMTJnIiwgZikpKTsKK30KKworZnVuY3Rpb24gcHJlcnJfZW5kbGluZShwYXJhbSkgewor
ICBjb25zb2xlLmVycm9yKHBhcmFtKTsKKyAgcmV0dXJuIDA7Cit9CisKK2Z1bmN0aW9uIHByZXJy
X25ld2xpbmUoKSB7CisgIENhbWxfaW8uY2FtbF9tbF9vdXRwdXRfY2hhcihzdGRlcnIsIC8qICJc
biIgKi8xMCk7CisgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfZmx1c2goc3RkZXJyKTsKK30KKwor
ZnVuY3Rpb24gcmVhZF9saW5lKCkgeworICBDYW1sX2lvLmNhbWxfbWxfZmx1c2goc3Rkb3V0KTsK
KyAgcmV0dXJuIGlucHV0X2xpbmUoc3RkaW4pOworfQorCitmdW5jdGlvbiByZWFkX2ludCgpIHsK
KyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfaW50X29mX3N0cmluZygoQ2FtbF9pby5jYW1sX21s
X2ZsdXNoKHN0ZG91dCksIGlucHV0X2xpbmUoc3RkaW4pKSk7Cit9CisKK2Z1bmN0aW9uIHJlYWRf
ZmxvYXQoKSB7CisgIHJldHVybiBDYW1sX2Zvcm1hdC5jYW1sX2Zsb2F0X29mX3N0cmluZygoQ2Ft
bF9pby5jYW1sX21sX2ZsdXNoKHN0ZG91dCksIGlucHV0X2xpbmUoc3RkaW4pKSk7Cit9CisKK2Z1
bmN0aW9uIHN0cmluZ19vZl9mb3JtYXQocGFyYW0pIHsKKyAgcmV0dXJuIHBhcmFtWzFdOworfQor
CitmdW5jdGlvbiAkY2FyZXQkY2FyZXQocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIC8qIEZv
cm1hdCAqL1sKKyAgICAgICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdChw
YXJhbVswXSwgcGFyYW0kMVswXSksCisgICAgICAgICAgJGNhcmV0KHBhcmFtWzFdLCAkY2FyZXQo
IiUsIiwgcGFyYW0kMVsxXSkpCisgICAgICAgIF07Cit9CisKK3ZhciBleGl0X2Z1bmN0aW9uID0g
W2ZsdXNoX2FsbF07CisKK2Z1bmN0aW9uIGF0X2V4aXQoZikgeworICB2YXIgZyA9IGV4aXRfZnVu
Y3Rpb25bMF07CisgIGV4aXRfZnVuY3Rpb25bMF0gPSBmdW5jdGlvbiAoKSB7CisgICAgQ3Vycnku
XzEoZiwgLyogKCkgKi8wKTsKKyAgICByZXR1cm4gQ3VycnkuXzEoZywgLyogKCkgKi8wKTsKKyAg
fTsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gZG9fYXRfZXhpdCgpIHsKKyAg
cmV0dXJuIEN1cnJ5Ll8xKGV4aXRfZnVuY3Rpb25bMF0sIC8qICgpICovMCk7Cit9CisKK2Z1bmN0
aW9uIGV4aXQoKSB7CisgIGRvX2F0X2V4aXQoLyogKCkgKi8wKTsKKyAgcmV0dXJuIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX3N5c19leGl0IG5vdCBpbXBsZW1lbnRlZCBi
eSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwordmFyIG1heF9pbnQg
PSAyMTQ3NDgzNjQ3OworCit2YXIgaW5maW5pdHkgPSBJbmZpbml0eTsKKwordmFyIG5lZ19pbmZp
bml0eSA9IC1JbmZpbml0eTsKKwordmFyIG5hbiA9IE5hTjsKKwordmFyIG1heF9mbG9hdCA9IE51
bWJlci5NQVhfVkFMVUU7CisKK3ZhciBtaW5fZmxvYXQgPSBOdW1iZXIuTUlOX1ZBTFVFOworCit2
YXIgZXBzaWxvbl9mbG9hdCA9IDIuMjIwNDQ2MDQ5MjUwMzEzZS0xNjsKKwordmFyIGZsdXNoID0g
Q2FtbF9pby5jYW1sX21sX2ZsdXNoOworCit2YXIgb3V0cHV0X2NoYXIgPSBDYW1sX2lvLmNhbWxf
bWxfb3V0cHV0X2NoYXI7CisKK3ZhciBvdXRwdXRfYnl0ZSA9IENhbWxfaW8uY2FtbF9tbF9vdXRw
dXRfY2hhcjsKKworZnVuY3Rpb24gb3V0cHV0X2JpbmFyeV9pbnQoXywgXyQxKSB7CisgIHJldHVy
biBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9vdXRwdXRfaW50IG5v
dCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30K
KworZnVuY3Rpb24gc2Vla19vdXQoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9zZWVrX291dCBub3QgaW1wbGVtZW50ZWQgYnkgYnVj
a2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHBvc19vdXQo
KSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9w
b3Nfb3V0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAg
IH0oKTsKK30KKworZnVuY3Rpb24gb3V0X2NoYW5uZWxfbGVuZ3RoKCkgeworICByZXR1cm4gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfY2hhbm5lbF9zaXplIG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwor
ZnVuY3Rpb24gc2V0X2JpbmFyeV9tb2RlX291dChfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSBub3QgaW1w
bGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK3Zh
ciBpbnB1dF9jaGFyID0gQ2FtbF9pby5jYW1sX21sX2lucHV0X2NoYXI7CisKK3ZhciBpbnB1dF9i
eXRlID0gQ2FtbF9pby5jYW1sX21sX2lucHV0X2NoYXI7CisKK2Z1bmN0aW9uIGlucHV0X2JpbmFy
eV9pbnQoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2Ft
bF9tbF9pbnB1dF9pbnQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Cisg
ICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBpbnB1dF92YWx1ZSgpIHsKKyAgcmV0dXJuIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2lucHV0X3ZhbHVlIG5vdCBpbXBs
ZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVu
Y3Rpb24gc2Vla19pbihfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHRocm93ICJjYW1sX21sX3NlZWtfaW4gbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlw
dCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBwb3NfaW4oKSB7CisgIHJl
dHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3NfaW4gbm90
IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQor
CitmdW5jdGlvbiBpbl9jaGFubmVsX2xlbmd0aCgpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2NoYW5uZWxfc2l6ZSBub3QgaW1wbGVtZW50ZWQg
YnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIGNs
b3NlX2luKCkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNh
bWxfbWxfY2xvc2VfY2hhbm5lbCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxu
IjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHNldF9iaW5hcnlfbW9kZV9pbihfLCBf
JDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21s
X3NldF9iaW5hcnlfbW9kZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsK
KyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIExhcmdlRmlsZV8wMDAoXywgXyQxKSB7Cisg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9zZWVrX291
dF82NCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9
KCk7Cit9CisKK2Z1bmN0aW9uIExhcmdlRmlsZV8wMDEoKSB7CisgIHJldHVybiBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3Nfb3V0XzY0IG5vdCBpbXBsZW1lbnRl
ZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24g
TGFyZ2VGaWxlXzAwMigpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRo
cm93ICJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIExhcmdlRmlsZV8wMDMo
XywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2Ft
bF9tbF9zZWVrX2luXzY0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwor
ICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gTGFyZ2VGaWxlXzAwNCgpIHsKKyAgcmV0dXJu
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21sX3Bvc19pbl82NCBub3Qg
aW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisK
K2Z1bmN0aW9uIExhcmdlRmlsZV8wMDUoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0aHJvdyAiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQgbm90IGltcGxlbWVudGVkIGJ5
IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCit2YXIgTGFyZ2VGaWxl
ID0gWworICBMYXJnZUZpbGVfMDAwLAorICBMYXJnZUZpbGVfMDAxLAorICBMYXJnZUZpbGVfMDAy
LAorICBMYXJnZUZpbGVfMDAzLAorICBMYXJnZUZpbGVfMDA0LAorICBMYXJnZUZpbGVfMDA1Citd
OworCitleHBvcnRzLmludmFsaWRfYXJnICAgICAgICAgPSBpbnZhbGlkX2FyZzsKK2V4cG9ydHMu
ZmFpbHdpdGggICAgICAgICAgICA9IGZhaWx3aXRoOworZXhwb3J0cy5FeGl0ICAgICAgICAgICAg
ICAgID0gRXhpdDsKK2V4cG9ydHMubWluICAgICAgICAgICAgICAgICA9IG1pbjsKK2V4cG9ydHMu
bWF4ICAgICAgICAgICAgICAgICA9IG1heDsKK2V4cG9ydHMuYWJzICAgICAgICAgICAgICAgICA9
IGFiczsKK2V4cG9ydHMubWF4X2ludCAgICAgICAgICAgICA9IG1heF9pbnQ7CitleHBvcnRzLm1p
bl9pbnQgICAgICAgICAgICAgPSBtaW5faW50OworZXhwb3J0cy5sbm90ICAgICAgICAgICAgICAg
ID0gbG5vdDsKK2V4cG9ydHMuaW5maW5pdHkgICAgICAgICAgICA9IGluZmluaXR5OworZXhwb3J0
cy5uZWdfaW5maW5pdHkgICAgICAgID0gbmVnX2luZmluaXR5OworZXhwb3J0cy5uYW4gICAgICAg
ICAgICAgICAgID0gbmFuOworZXhwb3J0cy5tYXhfZmxvYXQgICAgICAgICAgID0gbWF4X2Zsb2F0
OworZXhwb3J0cy5taW5fZmxvYXQgICAgICAgICAgID0gbWluX2Zsb2F0OworZXhwb3J0cy5lcHNp
bG9uX2Zsb2F0ICAgICAgID0gZXBzaWxvbl9mbG9hdDsKK2V4cG9ydHMuJGNhcmV0ICAgICAgICAg
ICAgICA9ICRjYXJldDsKK2V4cG9ydHMuY2hhcl9vZl9pbnQgICAgICAgICA9IGNoYXJfb2ZfaW50
OworZXhwb3J0cy5zdHJpbmdfb2ZfYm9vbCAgICAgID0gc3RyaW5nX29mX2Jvb2w7CitleHBvcnRz
LmJvb2xfb2Zfc3RyaW5nICAgICAgPSBib29sX29mX3N0cmluZzsKK2V4cG9ydHMuc3RyaW5nX29m
X2ludCAgICAgICA9IHN0cmluZ19vZl9pbnQ7CitleHBvcnRzLnN0cmluZ19vZl9mbG9hdCAgICAg
PSBzdHJpbmdfb2ZfZmxvYXQ7CitleHBvcnRzLiRhdCAgICAgICAgICAgICAgICAgPSAkYXQ7Citl
eHBvcnRzLnN0ZGluICAgICAgICAgICAgICAgPSBzdGRpbjsKK2V4cG9ydHMuc3Rkb3V0ICAgICAg
ICAgICAgICA9IHN0ZG91dDsKK2V4cG9ydHMuc3RkZXJyICAgICAgICAgICAgICA9IHN0ZGVycjsK
K2V4cG9ydHMucHJpbnRfY2hhciAgICAgICAgICA9IHByaW50X2NoYXI7CitleHBvcnRzLnByaW50
X3N0cmluZyAgICAgICAgPSBwcmludF9zdHJpbmc7CitleHBvcnRzLnByaW50X2J5dGVzICAgICAg
ICAgPSBwcmludF9ieXRlczsKK2V4cG9ydHMucHJpbnRfaW50ICAgICAgICAgICA9IHByaW50X2lu
dDsKK2V4cG9ydHMucHJpbnRfZmxvYXQgICAgICAgICA9IHByaW50X2Zsb2F0OworZXhwb3J0cy5w
cmludF9lbmRsaW5lICAgICAgID0gcHJpbnRfZW5kbGluZTsKK2V4cG9ydHMucHJpbnRfbmV3bGlu
ZSAgICAgICA9IHByaW50X25ld2xpbmU7CitleHBvcnRzLnByZXJyX2NoYXIgICAgICAgICAgPSBw
cmVycl9jaGFyOworZXhwb3J0cy5wcmVycl9zdHJpbmcgICAgICAgID0gcHJlcnJfc3RyaW5nOwor
ZXhwb3J0cy5wcmVycl9ieXRlcyAgICAgICAgID0gcHJlcnJfYnl0ZXM7CitleHBvcnRzLnByZXJy
X2ludCAgICAgICAgICAgPSBwcmVycl9pbnQ7CitleHBvcnRzLnByZXJyX2Zsb2F0ICAgICAgICAg
PSBwcmVycl9mbG9hdDsKK2V4cG9ydHMucHJlcnJfZW5kbGluZSAgICAgICA9IHByZXJyX2VuZGxp
bmU7CitleHBvcnRzLnByZXJyX25ld2xpbmUgICAgICAgPSBwcmVycl9uZXdsaW5lOworZXhwb3J0
cy5yZWFkX2xpbmUgICAgICAgICAgID0gcmVhZF9saW5lOworZXhwb3J0cy5yZWFkX2ludCAgICAg
ICAgICAgID0gcmVhZF9pbnQ7CitleHBvcnRzLnJlYWRfZmxvYXQgICAgICAgICAgPSByZWFkX2Zs
b2F0OworZXhwb3J0cy5vcGVuX291dCAgICAgICAgICAgID0gb3Blbl9vdXQ7CitleHBvcnRzLm9w
ZW5fb3V0X2JpbiAgICAgICAgPSBvcGVuX291dF9iaW47CitleHBvcnRzLm9wZW5fb3V0X2dlbiAg
ICAgICAgPSBvcGVuX291dF9nZW47CitleHBvcnRzLmZsdXNoICAgICAgICAgICAgICAgPSBmbHVz
aDsKK2V4cG9ydHMuZmx1c2hfYWxsICAgICAgICAgICA9IGZsdXNoX2FsbDsKK2V4cG9ydHMub3V0
cHV0X2NoYXIgICAgICAgICA9IG91dHB1dF9jaGFyOworZXhwb3J0cy5vdXRwdXRfc3RyaW5nICAg
ICAgID0gb3V0cHV0X3N0cmluZzsKK2V4cG9ydHMub3V0cHV0X2J5dGVzICAgICAgICA9IG91dHB1
dF9ieXRlczsKK2V4cG9ydHMub3V0cHV0ICAgICAgICAgICAgICA9IG91dHB1dDsKK2V4cG9ydHMu
b3V0cHV0X3N1YnN0cmluZyAgICA9IG91dHB1dF9zdWJzdHJpbmc7CitleHBvcnRzLm91dHB1dF9i
eXRlICAgICAgICAgPSBvdXRwdXRfYnl0ZTsKK2V4cG9ydHMub3V0cHV0X2JpbmFyeV9pbnQgICA9
IG91dHB1dF9iaW5hcnlfaW50OworZXhwb3J0cy5vdXRwdXRfdmFsdWUgICAgICAgID0gb3V0cHV0
X3ZhbHVlOworZXhwb3J0cy5zZWVrX291dCAgICAgICAgICAgID0gc2Vla19vdXQ7CitleHBvcnRz
LnBvc19vdXQgICAgICAgICAgICAgPSBwb3Nfb3V0OworZXhwb3J0cy5vdXRfY2hhbm5lbF9sZW5n
dGggID0gb3V0X2NoYW5uZWxfbGVuZ3RoOworZXhwb3J0cy5jbG9zZV9vdXQgICAgICAgICAgID0g
Y2xvc2Vfb3V0OworZXhwb3J0cy5jbG9zZV9vdXRfbm9lcnIgICAgID0gY2xvc2Vfb3V0X25vZXJy
OworZXhwb3J0cy5zZXRfYmluYXJ5X21vZGVfb3V0ID0gc2V0X2JpbmFyeV9tb2RlX291dDsKK2V4
cG9ydHMub3Blbl9pbiAgICAgICAgICAgICA9IG9wZW5faW47CitleHBvcnRzLm9wZW5faW5fYmlu
ICAgICAgICAgPSBvcGVuX2luX2JpbjsKK2V4cG9ydHMub3Blbl9pbl9nZW4gICAgICAgICA9IG9w
ZW5faW5fZ2VuOworZXhwb3J0cy5pbnB1dF9jaGFyICAgICAgICAgID0gaW5wdXRfY2hhcjsKK2V4
cG9ydHMuaW5wdXRfbGluZSAgICAgICAgICA9IGlucHV0X2xpbmU7CitleHBvcnRzLmlucHV0ICAg
ICAgICAgICAgICAgPSBpbnB1dDsKK2V4cG9ydHMucmVhbGx5X2lucHV0ICAgICAgICA9IHJlYWxs
eV9pbnB1dDsKK2V4cG9ydHMucmVhbGx5X2lucHV0X3N0cmluZyA9IHJlYWxseV9pbnB1dF9zdHJp
bmc7CitleHBvcnRzLmlucHV0X2J5dGUgICAgICAgICAgPSBpbnB1dF9ieXRlOworZXhwb3J0cy5p
bnB1dF9iaW5hcnlfaW50ICAgID0gaW5wdXRfYmluYXJ5X2ludDsKK2V4cG9ydHMuaW5wdXRfdmFs
dWUgICAgICAgICA9IGlucHV0X3ZhbHVlOworZXhwb3J0cy5zZWVrX2luICAgICAgICAgICAgID0g
c2Vla19pbjsKK2V4cG9ydHMucG9zX2luICAgICAgICAgICAgICA9IHBvc19pbjsKK2V4cG9ydHMu
aW5fY2hhbm5lbF9sZW5ndGggICA9IGluX2NoYW5uZWxfbGVuZ3RoOworZXhwb3J0cy5jbG9zZV9p
biAgICAgICAgICAgID0gY2xvc2VfaW47CitleHBvcnRzLmNsb3NlX2luX25vZXJyICAgICAgPSBj
bG9zZV9pbl9ub2VycjsKK2V4cG9ydHMuc2V0X2JpbmFyeV9tb2RlX2luICA9IHNldF9iaW5hcnlf
bW9kZV9pbjsKK2V4cG9ydHMuTGFyZ2VGaWxlICAgICAgICAgICA9IExhcmdlRmlsZTsKK2V4cG9y
dHMuc3RyaW5nX29mX2Zvcm1hdCAgICA9IHN0cmluZ19vZl9mb3JtYXQ7CitleHBvcnRzLiRjYXJl
dCRjYXJldCAgICAgICAgPSAkY2FyZXQkY2FyZXQ7CitleHBvcnRzLmV4aXQgICAgICAgICAgICAg
ICAgPSBleGl0OworZXhwb3J0cy5hdF9leGl0ICAgICAgICAgICAgID0gYXRfZXhpdDsKK2V4cG9y
dHMudmFsaWRfZmxvYXRfbGV4ZW0gICA9IHZhbGlkX2Zsb2F0X2xleGVtOworZXhwb3J0cy51bnNh
ZmVfcmVhbGx5X2lucHV0ID0gdW5zYWZlX3JlYWxseV9pbnB1dDsKK2V4cG9ydHMuZG9fYXRfZXhp
dCAgICAgICAgICA9IGRvX2F0X2V4aXQ7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8g
ZW5kIG9mIHBlcnZhc2l2ZXMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAg
fTsKKworCisgIF9yZWdpc3RyeVsncHJpbnRmJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBl
eHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBwcmludGYuanMgLy8vLy8vLy8KKyd1c2Ug
c3RyaWN0JzsKKwordmFyIEN1cnJ5ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsK
K3ZhciBCdWZmZXIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2J1ZmZlciIpOwordmFyIFBlcnZh
c2l2ZXMgICAgICAgICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxpbnRlcm5h
bEZvcm1hdCA9IHJlcXVpcmUoIi4vY2FtbGludGVybmFsRm9ybWF0Iik7CisKK2Z1bmN0aW9uIGtm
cHJpbnRmKGssIG8sIHBhcmFtKSB7CisgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9w
cmludGYoZnVuY3Rpb24gKG8sIGFjYykgeworICAgICAgICAgICAgICBDYW1saW50ZXJuYWxGb3Jt
YXQub3V0cHV0X2FjYyhvLCBhY2MpOworICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoaywg
byk7CisgICAgICAgICAgICB9LCBvLCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQor
CitmdW5jdGlvbiBrYnByaW50ZihrLCBiLCBwYXJhbSkgeworICByZXR1cm4gQ2FtbGludGVybmFs
Rm9ybWF0Lm1ha2VfcHJpbnRmKGZ1bmN0aW9uIChiLCBhY2MpIHsKKyAgICAgICAgICAgICAgQ2Ft
bGludGVybmFsRm9ybWF0LmJ1ZnB1dF9hY2MoYiwgYWNjKTsKKyAgICAgICAgICAgICAgcmV0dXJu
IEN1cnJ5Ll8xKGssIGIpOworICAgICAgICAgICAgfSwgYiwgLyogRW5kX29mX2FjYyAqLzAsIHBh
cmFtWzBdKTsKK30KKworZnVuY3Rpb24gaWtmcHJpbnRmKGssIG9jLCBwYXJhbSkgeworICByZXR1
cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGZ1bmN0aW9uIChvYywgXykgeworICAg
ICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoaywgb2MpOworICAgICAgICAgICAgfSwgb2MsIC8q
IEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIGZwcmludGYob2MsIGZt
dCkgeworICByZXR1cm4ga2ZwcmludGYoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1
cm4gLyogKCkgKi8wOworICAgICAgICAgICAgfSwgb2MsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIGJw
cmludGYoYiwgZm10KSB7CisgIHJldHVybiBrYnByaW50ZihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgICB9LCBiLCBmbXQpOworfQorCitm
dW5jdGlvbiBpZnByaW50ZihvYywgZm10KSB7CisgIHJldHVybiBpa2ZwcmludGYoZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgICAgfSwgb2Ms
IGZtdCk7Cit9CisKK2Z1bmN0aW9uIHByaW50ZihmbXQpIHsKKyAgcmV0dXJuIGZwcmludGYoUGVy
dmFzaXZlcy5zdGRvdXQsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIGVwcmludGYoZm10KSB7CisgIHJl
dHVybiBmcHJpbnRmKFBlcnZhc2l2ZXMuc3RkZXJyLCBmbXQpOworfQorCitmdW5jdGlvbiBrc3By
aW50ZihrLCBwYXJhbSkgeworICB2YXIgayRwcmltZSA9IGZ1bmN0aW9uIChfLCBhY2MpIHsKKyAg
ICB2YXIgYnVmID0gQnVmZmVyLmNyZWF0ZSg2NCk7CisgICAgQ2FtbGludGVybmFsRm9ybWF0LnN0
cnB1dF9hY2MoYnVmLCBhY2MpOworICAgIHJldHVybiBDdXJyeS5fMShrLCBCdWZmZXIuY29udGVu
dHMoYnVmKSk7CisgIH07CisgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYo
ayRwcmltZSwgLyogKCkgKi8wLCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitm
dW5jdGlvbiBzcHJpbnRmKGZtdCkgeworICByZXR1cm4ga3NwcmludGYoZnVuY3Rpb24gKHMpIHsK
KyAgICAgICAgICAgICAgcmV0dXJuIHM7CisgICAgICAgICAgICB9LCBmbXQpOworfQorCit2YXIg
a3ByaW50ZiA9IGtzcHJpbnRmOworCitleHBvcnRzLmZwcmludGYgICA9IGZwcmludGY7CitleHBv
cnRzLnByaW50ZiAgICA9IHByaW50ZjsKK2V4cG9ydHMuZXByaW50ZiAgID0gZXByaW50ZjsKK2V4
cG9ydHMuc3ByaW50ZiAgID0gc3ByaW50ZjsKK2V4cG9ydHMuYnByaW50ZiAgID0gYnByaW50ZjsK
K2V4cG9ydHMuaWZwcmludGYgID0gaWZwcmludGY7CitleHBvcnRzLmtmcHJpbnRmICA9IGtmcHJp
bnRmOworZXhwb3J0cy5pa2ZwcmludGYgPSBpa2ZwcmludGY7CitleHBvcnRzLmtzcHJpbnRmICA9
IGtzcHJpbnRmOworZXhwb3J0cy5rYnByaW50ZiAgPSBrYnByaW50ZjsKK2V4cG9ydHMua3ByaW50
ZiAgID0ga3ByaW50ZjsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgcHJp
bnRmLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVn
aXN0cnlbJ3ByaW50J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307Cisv
Ly8vLy8vLyBzdGFydCBvZiBwcmludC5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tM
RVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmlj
dCc7CisKK3ZhciBMaXN0ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsK
K3ZhciBTZXhwciAgID0gcmVxdWlyZSgiLi9zZXhwciIpOwordmFyIEFycmFuZ2UgPSByZXF1aXJl
KCIuL2FycmFuZ2UiKTsKKworZnVuY3Rpb24gaW5zdHIob2MsIHdpZHRoLCBlKSB7CisgIHJldHVy
biBTZXhwci5vdXRwdXQob2MsIHdpZHRoLCBBcnJhbmdlLmluc3RyKGUpKTsKK30KKworZnVuY3Rp
b24gZnVuYyhvYywgd2lkdGgsIGYpIHsKKyAgcmV0dXJuIFNleHByLm91dHB1dChvYywgd2lkdGgs
IEFycmFuZ2UuZnVuYyhmKSk7Cit9CisKK2Z1bmN0aW9uIG1vZHVsZV8ob2MsIHdpZHRoLCBtKSB7
CisgIHJldHVybiBTZXhwci5vdXRwdXQob2MsIHdpZHRoLCBBcnJhbmdlLm1vZHVsZV8obSkpOwor
fQorCitmdW5jdGlvbiBzY3JpcHQob2MsIHdpZHRoLCBtb2RlLCBzKSB7CisgIHJldHVybiBMaXN0
Lml0ZXIoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiBTZXhwci5vdXRw
dXQob2MsIHdpZHRoLCBwYXJhbSk7CisgICAgICAgICAgICB9LCBBcnJhbmdlLnNjcmlwdChtb2Rl
LCBzKSk7Cit9CisKK2V4cG9ydHMuaW5zdHIgICA9IGluc3RyOworZXhwb3J0cy5mdW5jICAgID0g
ZnVuYzsKK2V4cG9ydHMubW9kdWxlXyA9IG1vZHVsZV87CitleHBvcnRzLnNjcmlwdCAgPSBzY3Jp
cHQ7CisvKiBBcnJhbmdlIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgcHJp
bnQuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdp
c3RyeVsnc2NyaXB0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307Cisv
Ly8vLy8vLyBzdGFydCBvZiBzY3JpcHQuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNL
TEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJp
Y3QnOworCit2YXIgQ2FtbF9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2NhbWxfZXhjZXB0aW9ucyIpOworCit2YXIgU3ludGF4ID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0
ZSgiU2NyaXB0LlN5bnRheCIpOworCitleHBvcnRzLlN5bnRheCA9IFN5bnRheDsKKy8qIE5vIHNp
ZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2Ygc2NyaXB0LmpzIC8vLy8vLy8vCivCoCDCoCBy
ZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ3NleHByJ10gPSBmdW5jdGlv
bigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBzZXhwci5q
cyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwg
UExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBMaXN0ICAgICAgID0g
cmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBCbG9jayAgICAgID0gcmVx
dWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2YXIgQ3VycnkgICAgICA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyICQkU3RyaW5nICAgPSByZXF1aXJl
KCJicy1wbGF0Zm9ybS9saWIvanMvc3RyaW5nIik7Cit2YXIgUGVydmFzaXZlcyA9IHJlcXVpcmUo
ImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7CisKK2Z1bmN0aW9uICRjYXJldCRwbHVz
KHMsIHIpIHsKKyAgcmV0dXJuIC8qIENvbmNhdCAqL0Jsb2NrLl9fKDEsIFsvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgLyogTGVhZiAqL0Jsb2NrLl9fKDAsIFtzXSksCisgICAgICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgICAgIHIsCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gJHBsdXMkY2Fy
ZXQociwgcykgeworICByZXR1cm4gLyogQ29uY2F0ICovQmxvY2suX18oMSwgWy8qIDo6ICovWwor
ICAgICAgICAgICAgICByLAorICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAvKiBMZWFmICovQmxvY2suX18oMCwgW3NdKSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpdGVyKGYs
IHBhcmFtKSB7CisgIGlmIChwYXJhbS50YWcpIHsKKyAgICByZXR1cm4gTGlzdC5pdGVyKGZ1bmN0
aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGYsIHBhcmFtKTsKKyAg
ICAgICAgICAgICAgfSwgcGFyYW1bMF0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDdXJy
eS5fMShmLCBwYXJhbVswXSk7CisgIH0KK30KKworZnVuY3Rpb24gY29uY2F0KHBhcmFtKSB7Cisg
IGlmIChwYXJhbS50YWcpIHsKKyAgICByZXR1cm4gJCRTdHJpbmcuY29uY2F0KCIiLCBMaXN0Lm1h
cChjb25jYXQsIHBhcmFtWzBdKSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHBhcmFtWzBd
OworICB9Cit9CisKK2Z1bmN0aW9uIHBwKG9mZiwgd2lkdGgsIHBhcmFtKSB7CisgIGlmIChwYXJh
bS50YWcpIHsKKyAgICB2YXIgcyA9IHBhcmFtWzBdOworICAgIHZhciBwYXJ0aWFsX2FyZyA9IG9m
ZiArIDIgfCAwOworICAgIHZhciBtYXRjaCA9IExpc3Quc3BsaXQoTGlzdC5tYXAoZnVuY3Rpb24g
KHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiBwcChwYXJ0aWFsX2FyZywgd2lkdGgsIHBh
cmFtKTsKKyAgICAgICAgICAgIH0sIHBhcmFtWzFdKSk7CisgICAgdmFyIHJzID0gbWF0Y2hbMV07
CisgICAgdmFyIGxlbiA9IChzLmxlbmd0aCArIExpc3QubGVuZ3RoKHJzKSB8IDApICsgTGlzdC5m
b2xkX2xlZnQoZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICAgIHJldHVybiBwcmlt
ICsgcHJpbSQxIHwgMDsKKyAgICAgICAgfSwgMiwgbWF0Y2hbMF0pIHwgMDsKKyAgICB2YXIgbWF0
Y2gkMTsKKyAgICBpZiAoKG9mZiArIGxlbiB8IDApIDw9IHdpZHRoKSB7CisgICAgICBtYXRjaCQx
ID0gLyogdHVwbGUgKi9bCisgICAgICAgICIgIiwKKyAgICAgICAgIiIKKyAgICAgIF07CisgICAg
fQorICAgIGVsc2UgeworICAgICAgdmFyIGluZGVudCA9ICQkU3RyaW5nLm1ha2Uob2ZmLCAvKiAi
ICIgKi8zMik7CisgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICJcbiAgIiAr
IGluZGVudCwKKyAgICAgICAgIlxuIiArIGluZGVudAorICAgICAgXTsKKyAgICB9CisgICAgdmFy
IHNlcCA9IG1hdGNoJDFbMF07CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
bGVuLAorICAgICAgICAgICAgJGNhcmV0JHBsdXMoIigiLCAkY2FyZXQkcGx1cyhzLCAkcGx1cyRj
YXJldCgkcGx1cyRjYXJldCgvKiBDb25jYXQgKi9CbG9jay5fXygxLCBbTGlzdC5tYXAoZnVuY3Rp
b24gKHIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRj
YXJldCRwbHVzKHNlcCwgcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LCBycyldKSwgbWF0Y2gkMVsxXSksICIpIikpKQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7
CisgICAgdmFyIHMkMSA9IHBhcmFtWzBdOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgIHMkMS5sZW5ndGgsCisgICAgICAgICAgICAvKiBMZWFmICovQmxvY2suX18oMCwgW3Mk
MV0pCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXQob2MsIHdpZHRoLCB4
KSB7CisgIGl0ZXIoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgIHJldHVybiBQZXJ2YXNpdmVz
Lm91dHB1dF9zdHJpbmcob2MsIHBhcmFtKTsKKyAgICAgIH0sIHBwKDAsIHdpZHRoLCB4KVsxXSk7
CisgIFBlcnZhc2l2ZXMub3V0cHV0X3N0cmluZyhvYywgIlxuIik7CisgIHJldHVybiBDdXJyeS5f
MShQZXJ2YXNpdmVzLmZsdXNoLCBvYyk7Cit9CisKK2Z1bmN0aW9uIHByaW50KHBhcmFtLCBwYXJh
bSQxKSB7CisgIHJldHVybiBvdXRwdXQoUGVydmFzaXZlcy5zdGRvdXQsIHBhcmFtLCBwYXJhbSQx
KTsKK30KKworZnVuY3Rpb24gdG9fc3RyaW5nKHdpZHRoLCB4KSB7CisgIHJldHVybiBjb25jYXQo
cHAoMCwgd2lkdGgsIHgpWzFdKSArICJcbiI7Cit9CisKK2V4cG9ydHMub3V0cHV0ICAgID0gb3V0
cHV0OworZXhwb3J0cy5wcmludCAgICAgPSBwcmludDsKK2V4cG9ydHMudG9fc3RyaW5nID0gdG9f
c3RyaW5nOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBzZXhwci5qcyAv
Ly8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wydz
b3VyY2UnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8v
IHN0YXJ0IG9mIHNvdXJjZS5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQ
VCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisK
K3ZhciBCbG9jayAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2
YXIgQ3VycnkgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFy
IFByaW50ZiAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcHJpbnRmIik7Cit2YXIg
Q2FtbF9vYmogICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOwordmFy
IFBlcnZhc2l2ZXMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVydmFzaXZlcyIpOwor
CitmdW5jdGlvbiAkYXQkYXQoeCwgcmVnaW9uKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisg
ICAgICAgICAgLyogYXQgKi9yZWdpb24sCisgICAgICAgICAgLyogaXQgKi94CisgICAgICAgIF07
Cit9CisKK3ZhciBub19wb3MgPSAvKiByZWNvcmQgKi9bCisgIC8qIGZpbGUgKi8iIiwKKyAgLyog
bGluZSAqLzAsCisgIC8qIGNvbHVtbiAqLzAKK107CisKK3ZhciBub19yZWdpb24gPSAvKiByZWNv
cmQgKi9bCisgIC8qIGxlZnQgKi9ub19wb3MsCisgIC8qIHJpZ2h0ICovbm9fcG9zCitdOworCitm
dW5jdGlvbiBzdHJpbmdfb2ZfcG9zKHBvcykgeworICBpZiAocG9zWy8qIGxpbmUgKi8xXSA9PT0g
LTEpIHsKKyAgICByZXR1cm4gQ3VycnkuXzEoUHJpbnRmLnNwcmludGYoLyogRm9ybWF0ICovWwor
ICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAiMHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgLyog
SW50ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94
ICovNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAg
ICAgICIweCV4IgorICAgICAgICAgICAgICAgICAgXSksIHBvc1svKiBjb2x1bW4gKi8yXSk7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIFBlcnZhc2l2ZXMuc3RyaW5nX29mX2ludChwb3NbLyog
bGluZSAqLzFdKSArICgiLiIgKyBQZXJ2YXNpdmVzLnN0cmluZ19vZl9pbnQocG9zWy8qIGNvbHVt
biAqLzJdICsgMSB8IDApKTsKKyAgfQorfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfcmVnaW9uKHIp
IHsKKyAgcmV0dXJuIHJbLyogbGVmdCAqLzBdWy8qIGZpbGUgKi8wXSArICgiOiIgKyAoc3RyaW5n
X29mX3BvcyhyWy8qIGxlZnQgKi8wXSkgKyAoCisgICAgICAgICAgICAgIENhbWxfb2JqLmNhbWxf
ZXF1YWwoclsvKiByaWdodCAqLzFdLCByWy8qIGxlZnQgKi8wXSkgPyAiIiA6ICItIiArIHN0cmlu
Z19vZl9wb3MoclsvKiByaWdodCAqLzFdKQorICAgICAgICAgICAgKSkpOworfQorCitleHBvcnRz
Lm5vX3BvcyAgICAgICAgICAgPSBub19wb3M7CitleHBvcnRzLm5vX3JlZ2lvbiAgICAgICAgPSBu
b19yZWdpb247CitleHBvcnRzLnN0cmluZ19vZl9wb3MgICAgPSBzdHJpbmdfb2ZfcG9zOworZXhw
b3J0cy5zdHJpbmdfb2ZfcmVnaW9uID0gc3RyaW5nX29mX3JlZ2lvbjsKK2V4cG9ydHMuJGF0JGF0
ICAgICAgICAgICA9ICRhdCRhdDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQg
b2Ygc291cmNlLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKwor
ICBfcmVnaXN0cnlbJ3N0cmluZyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9
IHt9OworLy8vLy8vLy8gc3RhcnQgb2Ygc3RyaW5nLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7
CisKK3ZhciBMaXN0ICAgICAgICA9IHJlcXVpcmUoIi4vbGlzdCIpOwordmFyIEJ5dGVzICAgICAg
ID0gcmVxdWlyZSgiLi9ieXRlcyIpOwordmFyIENhbWxfaW50MzIgID0gcmVxdWlyZSgiLi9jYW1s
X2ludDMyIik7Cit2YXIgQ2FtbF9zdHJpbmcgPSByZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7CisK
K2Z1bmN0aW9uIG1ha2UobiwgYykgeworICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3Ry
aW5nKEJ5dGVzLm1ha2UobiwgYykpOworfQorCitmdW5jdGlvbiBpbml0KG4sIGYpIHsKKyAgcmV0
dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5pbml0KG4sIGYpKTsKK30KKwor
ZnVuY3Rpb24gY29weShzKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmco
Qnl0ZXMuY29weShDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykpKTsKK30KKworZnVuY3Rp
b24gc3ViKHMsIG9mcywgbGVuKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJp
bmcoQnl0ZXMuc3ViKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgb2ZzLCBsZW4pKTsK
K30KKworZnVuY3Rpb24gY29uY2F0KHNlcCwgbCkgeworICBpZiAobCkgeworICAgIHZhciBoZCA9
IGxbMF07CisgICAgdmFyIG51bSA9IFswXTsKKyAgICB2YXIgbGVuID0gWzBdOworICAgIExpc3Qu
aXRlcihmdW5jdGlvbiAocykgeworICAgICAgICAgIG51bVswXSA9IG51bVswXSArIDEgfCAwOwor
ICAgICAgICAgIGxlblswXSA9IGxlblswXSArIHMubGVuZ3RoIHwgMDsKKyAgICAgICAgICByZXR1
cm4gLyogKCkgKi8wOworICAgICAgICB9LCBsKTsKKyAgICB2YXIgciA9IENhbWxfc3RyaW5nLmNh
bWxfY3JlYXRlX3N0cmluZyhsZW5bMF0gKyBDYW1sX2ludDMyLmltdWwoc2VwLmxlbmd0aCwgbnVt
WzBdIC0gMSB8IDApIHwgMCk7CisgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0cmluZyhoZCwg
MCwgciwgMCwgaGQubGVuZ3RoKTsKKyAgICB2YXIgcG9zID0gW2hkLmxlbmd0aF07CisgICAgTGlz
dC5pdGVyKGZ1bmN0aW9uIChzKSB7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0
cmluZyhzZXAsIDAsIHIsIHBvc1swXSwgc2VwLmxlbmd0aCk7CisgICAgICAgICAgcG9zWzBdID0g
cG9zWzBdICsgc2VwLmxlbmd0aCB8IDA7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0
X3N0cmluZyhzLCAwLCByLCBwb3NbMF0sIHMubGVuZ3RoKTsKKyAgICAgICAgICBwb3NbMF0gPSBw
b3NbMF0gKyBzLmxlbmd0aCB8IDA7CisgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAg
ICAgfSwgbFsxXSk7CisgICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhyKTsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gIiI7CisgIH0KK30KKworZnVuY3Rpb24gaXRlcihm
LCBzKSB7CisgIHJldHVybiBCeXRlcy5pdGVyKGYsIENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmlu
ZyhzKSk7Cit9CisKK2Z1bmN0aW9uIGl0ZXJpKGYsIHMpIHsKKyAgcmV0dXJuIEJ5dGVzLml0ZXJp
KGYsIENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSk7Cit9CisKK2Z1bmN0aW9uIG1hcChm
LCBzKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFwKGYs
IENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkpOworfQorCitmdW5jdGlvbiBtYXBpKGYs
IHMpIHsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5tYXBpKGYs
IENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkpOworfQorCitmdW5jdGlvbiBpc19zcGFj
ZShwYXJhbSkgeworICB2YXIgc3dpdGNoZXIgPSBwYXJhbSAtIDkgfCAwOworICBpZiAoc3dpdGNo
ZXIgPiA0IHx8IHN3aXRjaGVyIDwgMCkgeworICAgIGlmIChzd2l0Y2hlciAhPT0gMjMpIHsKKyAg
ICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJu
IC8qIHRydWUgKi8xOworICAgIH0KKyAgfQorICBlbHNlIGlmIChzd2l0Y2hlciAhPT0gMikgewor
ICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogZmFs
c2UgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHRyaW0ocykgeworICBpZiAocyA9PT0gIiIgfHwg
IShpc19zcGFjZShzLmNoYXJDb2RlQXQoMCkpIHx8IGlzX3NwYWNlKHMuY2hhckNvZGVBdChzLmxl
bmd0aCAtIDEgfCAwKSkpKSB7CisgICAgcmV0dXJuIHM7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0
dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy50cmltKENhbWxfc3RyaW5nLmJ5
dGVzX29mX3N0cmluZyhzKSkpOworICB9Cit9CisKK2Z1bmN0aW9uIGVzY2FwZWQocykgeworICB2
YXIgbmVlZHNfZXNjYXBlID0gZnVuY3Rpb24gKF9pKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAg
ICAgdmFyIGkgPSBfaTsKKyAgICAgIGlmIChpID49IHMubGVuZ3RoKSB7CisgICAgICAgIHJldHVy
biAvKiBmYWxzZSAqLzA7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNo
ID0gcy5jaGFyQ29kZUF0KGkpOworICAgICAgICBpZiAobWF0Y2ggPj0gMzIpIHsKKyAgICAgICAg
ICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDM0IHwgMDsKKyAgICAgICAgICBpZiAoc3dpdGNoZXIg
PiA1OCB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICAgIGlmIChzd2l0Y2hlciA+PSA5Mykg
eworICAgICAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgaWYgKHN3aXRjaGVyID4gNTcgfHwgc3dpdGNoZXIgPCAxKSB7Cisg
ICAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgICAgICB9CisgICAgICB9CisgICAgfTsK
KyAgfTsKKyAgaWYgKG5lZWRzX2VzY2FwZSgwKSkgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5i
eXRlc190b19zdHJpbmcoQnl0ZXMuZXNjYXBlZChDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmco
cykpKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiBp
bmRleChzLCBjKSB7CisgIHJldHVybiBCeXRlcy5pbmRleChDYW1sX3N0cmluZy5ieXRlc19vZl9z
dHJpbmcocyksIGMpOworfQorCitmdW5jdGlvbiByaW5kZXgocywgYykgeworICByZXR1cm4gQnl0
ZXMucmluZGV4KENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgYyk7Cit9CisKK2Z1bmN0
aW9uIGluZGV4X2Zyb20ocywgaSwgYykgeworICByZXR1cm4gQnl0ZXMuaW5kZXhfZnJvbShDYW1s
X3N0cmluZy5ieXRlc19vZl9zdHJpbmcocyksIGksIGMpOworfQorCitmdW5jdGlvbiByaW5kZXhf
ZnJvbShzLCBpLCBjKSB7CisgIHJldHVybiBCeXRlcy5yaW5kZXhfZnJvbShDYW1sX3N0cmluZy5i
eXRlc19vZl9zdHJpbmcocyksIGksIGMpOworfQorCitmdW5jdGlvbiBjb250YWlucyhzLCBjKSB7
CisgIHJldHVybiBCeXRlcy5jb250YWlucyhDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocyks
IGMpOworfQorCitmdW5jdGlvbiBjb250YWluc19mcm9tKHMsIGksIGMpIHsKKyAgcmV0dXJuIEJ5
dGVzLmNvbnRhaW5zX2Zyb20oQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBpLCBjKTsK
K30KKworZnVuY3Rpb24gcmNvbnRhaW5zX2Zyb20ocywgaSwgYykgeworICByZXR1cm4gQnl0ZXMu
cmNvbnRhaW5zX2Zyb20oQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBpLCBjKTsKK30K
KworZnVuY3Rpb24gdXBwZXJjYXNlKHMpIHsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3Rv
X3N0cmluZyhCeXRlcy51cHBlcmNhc2UoQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpKSk7
Cit9CisKK2Z1bmN0aW9uIGxvd2VyY2FzZShzKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRl
c190b19zdHJpbmcoQnl0ZXMubG93ZXJjYXNlKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhz
KSkpOworfQorCitmdW5jdGlvbiBjYXBpdGFsaXplKHMpIHsKKyAgcmV0dXJuIENhbWxfc3RyaW5n
LmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5jYXBpdGFsaXplKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0
cmluZyhzKSkpOworfQorCitmdW5jdGlvbiB1bmNhcGl0YWxpemUocykgeworICByZXR1cm4gQ2Ft
bF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5dGVzLnVuY2FwaXRhbGl6ZShDYW1sX3N0cmluZy5i
eXRlc19vZl9zdHJpbmcocykpKTsKK30KKwordmFyIGNvbXBhcmUgPSBDYW1sX3N0cmluZy5jYW1s
X3N0cmluZ19jb21wYXJlOworCit2YXIgZmlsbCA9IEJ5dGVzLmZpbGw7CisKK3ZhciBibGl0ID0g
Qnl0ZXMuYmxpdF9zdHJpbmc7CisKK2V4cG9ydHMubWFrZSAgICAgICAgICAgPSBtYWtlOworZXhw
b3J0cy5pbml0ICAgICAgICAgICA9IGluaXQ7CitleHBvcnRzLmNvcHkgICAgICAgICAgID0gY29w
eTsKK2V4cG9ydHMuc3ViICAgICAgICAgICAgPSBzdWI7CitleHBvcnRzLmZpbGwgICAgICAgICAg
ID0gZmlsbDsKK2V4cG9ydHMuYmxpdCAgICAgICAgICAgPSBibGl0OworZXhwb3J0cy5jb25jYXQg
ICAgICAgICA9IGNvbmNhdDsKK2V4cG9ydHMuaXRlciAgICAgICAgICAgPSBpdGVyOworZXhwb3J0
cy5pdGVyaSAgICAgICAgICA9IGl0ZXJpOworZXhwb3J0cy5tYXAgICAgICAgICAgICA9IG1hcDsK
K2V4cG9ydHMubWFwaSAgICAgICAgICAgPSBtYXBpOworZXhwb3J0cy50cmltICAgICAgICAgICA9
IHRyaW07CitleHBvcnRzLmVzY2FwZWQgICAgICAgID0gZXNjYXBlZDsKK2V4cG9ydHMuaW5kZXgg
ICAgICAgICAgPSBpbmRleDsKK2V4cG9ydHMucmluZGV4ICAgICAgICAgPSByaW5kZXg7CitleHBv
cnRzLmluZGV4X2Zyb20gICAgID0gaW5kZXhfZnJvbTsKK2V4cG9ydHMucmluZGV4X2Zyb20gICAg
PSByaW5kZXhfZnJvbTsKK2V4cG9ydHMuY29udGFpbnMgICAgICAgPSBjb250YWluczsKK2V4cG9y
dHMuY29udGFpbnNfZnJvbSAgPSBjb250YWluc19mcm9tOworZXhwb3J0cy5yY29udGFpbnNfZnJv
bSA9IHJjb250YWluc19mcm9tOworZXhwb3J0cy51cHBlcmNhc2UgICAgICA9IHVwcGVyY2FzZTsK
K2V4cG9ydHMubG93ZXJjYXNlICAgICAgPSBsb3dlcmNhc2U7CitleHBvcnRzLmNhcGl0YWxpemUg
ICAgID0gY2FwaXRhbGl6ZTsKK2V4cG9ydHMudW5jYXBpdGFsaXplICAgPSB1bmNhcGl0YWxpemU7
CitleHBvcnRzLmNvbXBhcmUgICAgICAgID0gY29tcGFyZTsKKy8qIE5vIHNpZGUgZWZmZWN0ICov
CisvLy8vLy8vLyBlbmQgb2Ygc3RyaW5nLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0
czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ3N5cyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBs
ZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Ygc3lzLmpzIC8vLy8vLy8vCisndXNl
IHN0cmljdCc7CisKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0
aW9ucyIpOworCit2YXIgaXNfanMgPSAvKiB0cnVlICovMTsKKwordmFyIG1hdGNoXzAwMSA9IC8q
IGFycmF5ICovW107CisKK3ZhciBiaWdfZW5kaWFuID0gLyogZmFsc2UgKi8wOworCit2YXIgdW5p
eCA9IC8qIHRydWUgKi8xOworCit2YXIgd2luMzIgPSAvKiBmYWxzZSAqLzA7CisKK3ZhciBjeWd3
aW4gPSAvKiBmYWxzZSAqLzA7CisKK3ZhciBtYXhfYXJyYXlfbGVuZ3RoID0gMjE0NzQ4MzY0NzsK
KwordmFyIG1heF9zdHJpbmdfbGVuZ3RoID0gMjE0NzQ4MzY0NzsKKwordmFyIGludGVyYWN0aXZl
ID0gWy8qIGZhbHNlICovMF07CisKK2Z1bmN0aW9uIHNldF9zaWduYWwoXywgXyQxKSB7CisgIHJl
dHVybiAvKiAoKSAqLzA7Cit9CisKK3ZhciBCcmVhayA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUo
IlN5cy5CcmVhayIpOworCitmdW5jdGlvbiBjYXRjaF9icmVhaygpIHsKKyAgcmV0dXJuIC8qICgp
ICovMDsKK30KKwordmFyIGFyZ3YgPSBtYXRjaF8wMDE7CisKK3ZhciBleGVjdXRhYmxlX25hbWUg
PSAiY21kIjsKKwordmFyIG9zX3R5cGUgPSAiVW5peCI7CisKK3ZhciB3b3JkX3NpemUgPSAzMjsK
KwordmFyIHNpZ2FicnQgPSAtMTsKKwordmFyIHNpZ2Fscm0gPSAtMjsKKwordmFyIHNpZ2ZwZSA9
IC0zOworCit2YXIgc2lnaHVwID0gLTQ7CisKK3ZhciBzaWdpbGwgPSAtNTsKKwordmFyIHNpZ2lu
dCA9IC02OworCit2YXIgc2lna2lsbCA9IC03OworCit2YXIgc2lncGlwZSA9IC04OworCit2YXIg
c2lncXVpdCA9IC05OworCit2YXIgc2lnc2VndiA9IC0xMDsKKwordmFyIHNpZ3Rlcm0gPSAtMTE7
CisKK3ZhciBzaWd1c3IxID0gLTEyOworCit2YXIgc2lndXNyMiA9IC0xMzsKKwordmFyIHNpZ2No
bGQgPSAtMTQ7CisKK3ZhciBzaWdjb250ID0gLTE1OworCit2YXIgc2lnc3RvcCA9IC0xNjsKKwor
dmFyIHNpZ3RzdHAgPSAtMTc7CisKK3ZhciBzaWd0dGluID0gLTE4OworCit2YXIgc2lndHRvdSA9
IC0xOTsKKwordmFyIHNpZ3Z0YWxybSA9IC0yMDsKKwordmFyIHNpZ3Byb2YgPSAtMjE7CisKK3Zh
ciBvY2FtbF92ZXJzaW9uID0gIjQuMDIuMytkZXYxLTIwMTUtMDctMTAiOworCitleHBvcnRzLmFy
Z3YgICAgICAgICAgICAgID0gYXJndjsKK2V4cG9ydHMuZXhlY3V0YWJsZV9uYW1lICAgPSBleGVj
dXRhYmxlX25hbWU7CitleHBvcnRzLmludGVyYWN0aXZlICAgICAgID0gaW50ZXJhY3RpdmU7Citl
eHBvcnRzLm9zX3R5cGUgICAgICAgICAgID0gb3NfdHlwZTsKK2V4cG9ydHMudW5peCAgICAgICAg
ICAgICAgPSB1bml4OworZXhwb3J0cy53aW4zMiAgICAgICAgICAgICA9IHdpbjMyOworZXhwb3J0
cy5jeWd3aW4gICAgICAgICAgICA9IGN5Z3dpbjsKK2V4cG9ydHMud29yZF9zaXplICAgICAgICAg
PSB3b3JkX3NpemU7CitleHBvcnRzLmJpZ19lbmRpYW4gICAgICAgID0gYmlnX2VuZGlhbjsKK2V4
cG9ydHMuaXNfanMgICAgICAgICAgICAgPSBpc19qczsKK2V4cG9ydHMubWF4X3N0cmluZ19sZW5n
dGggPSBtYXhfc3RyaW5nX2xlbmd0aDsKK2V4cG9ydHMubWF4X2FycmF5X2xlbmd0aCAgPSBtYXhf
YXJyYXlfbGVuZ3RoOworZXhwb3J0cy5zZXRfc2lnbmFsICAgICAgICA9IHNldF9zaWduYWw7Citl
eHBvcnRzLnNpZ2FicnQgICAgICAgICAgID0gc2lnYWJydDsKK2V4cG9ydHMuc2lnYWxybSAgICAg
ICAgICAgPSBzaWdhbHJtOworZXhwb3J0cy5zaWdmcGUgICAgICAgICAgICA9IHNpZ2ZwZTsKK2V4
cG9ydHMuc2lnaHVwICAgICAgICAgICAgPSBzaWdodXA7CitleHBvcnRzLnNpZ2lsbCAgICAgICAg
ICAgID0gc2lnaWxsOworZXhwb3J0cy5zaWdpbnQgICAgICAgICAgICA9IHNpZ2ludDsKK2V4cG9y
dHMuc2lna2lsbCAgICAgICAgICAgPSBzaWdraWxsOworZXhwb3J0cy5zaWdwaXBlICAgICAgICAg
ICA9IHNpZ3BpcGU7CitleHBvcnRzLnNpZ3F1aXQgICAgICAgICAgID0gc2lncXVpdDsKK2V4cG9y
dHMuc2lnc2VndiAgICAgICAgICAgPSBzaWdzZWd2OworZXhwb3J0cy5zaWd0ZXJtICAgICAgICAg
ICA9IHNpZ3Rlcm07CitleHBvcnRzLnNpZ3VzcjEgICAgICAgICAgID0gc2lndXNyMTsKK2V4cG9y
dHMuc2lndXNyMiAgICAgICAgICAgPSBzaWd1c3IyOworZXhwb3J0cy5zaWdjaGxkICAgICAgICAg
ICA9IHNpZ2NobGQ7CitleHBvcnRzLnNpZ2NvbnQgICAgICAgICAgID0gc2lnY29udDsKK2V4cG9y
dHMuc2lnc3RvcCAgICAgICAgICAgPSBzaWdzdG9wOworZXhwb3J0cy5zaWd0c3RwICAgICAgICAg
ICA9IHNpZ3RzdHA7CitleHBvcnRzLnNpZ3R0aW4gICAgICAgICAgID0gc2lndHRpbjsKK2V4cG9y
dHMuc2lndHRvdSAgICAgICAgICAgPSBzaWd0dG91OworZXhwb3J0cy5zaWd2dGFscm0gICAgICAg
ICA9IHNpZ3Z0YWxybTsKK2V4cG9ydHMuc2lncHJvZiAgICAgICAgICAgPSBzaWdwcm9mOworZXhw
b3J0cy5CcmVhayAgICAgICAgICAgICA9IEJyZWFrOworZXhwb3J0cy5jYXRjaF9icmVhayAgICAg
ICA9IGNhdGNoX2JyZWFrOworZXhwb3J0cy5vY2FtbF92ZXJzaW9uICAgICA9IG9jYW1sX3ZlcnNp
b247CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIHN5cy5qcyAvLy8vLy8v
LworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wyd0eXBlcydd
ID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQg
b2YgdHlwZXMuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lP
TiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgSTMy
ICAgICAgPSByZXF1aXJlKCIuL2kzMiIpOwordmFyIExpc3QgICAgID0gcmVxdWlyZSgiYnMtcGxh
dGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBDdXJyeSAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3Jt
L2xpYi9qcy9jdXJyeSIpOwordmFyICQkU3RyaW5nID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGli
L2pzL3N0cmluZyIpOworCitmdW5jdGlvbiBzaXplKHBhcmFtKSB7CisgIGlmIChwYXJhbSAhPT0g
MSAmJiBwYXJhbSA8IDMpIHsKKyAgICByZXR1cm4gNDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gODsKKyAgfQorfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSkgewor
ICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVybiAiaTMyIjsK
KyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuICJpNjQiOworICAgIGNhc2UgMiA6IAorICAg
ICAgICByZXR1cm4gImYzMiI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAiZjY0IjsK
KyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfdmFsdWVfdHlwZXModHMpIHsKKyAg
dmFyIGV4aXQgPSAwOworICBpZiAodHMpIHsKKyAgICBpZiAodHNbMV0pIHsKKyAgICAgIGV4aXQg
PSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzdHJpbmdfb2ZfdmFsdWVfdHlw
ZSh0c1swXSk7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIGV4aXQgPSAxOworICB9CisgIGlm
IChleGl0ID09PSAxKSB7CisgICAgcmV0dXJuICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBM
aXN0Lm1hcChzdHJpbmdfb2ZfdmFsdWVfdHlwZSwgdHMpKSArICJdIik7CisgIH0KKyAgCit9CisK
K2Z1bmN0aW9uIHN0cmluZ19vZl9lbGVtX3R5cGUoKSB7CisgIHJldHVybiAiZnVuY3JlZiI7Cit9
CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9saW1pdHMocGFyYW0pIHsKKyAgdmFyIG1heCA9IHBhcmFt
Wy8qIG1heCAqLzFdOworICByZXR1cm4gQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBwYXJhbVsv
KiBtaW4gKi8wXSkgKyAoCisgICAgICAgICAgbWF4ID8gIiAiICsgQ3VycnkuXzEoSTMyLnRvX3N0
cmluZ191LCBtYXhbMF0pIDogIiIKKyAgICAgICAgKTsKK30KKworZnVuY3Rpb24gc3RyaW5nX29m
X21lbW9yeV90eXBlKHBhcmFtKSB7CisgIHJldHVybiBzdHJpbmdfb2ZfbGltaXRzKHBhcmFtWzBd
KTsKK30KKworZnVuY3Rpb24gc3RyaW5nX29mX3RhYmxlX3R5cGUocGFyYW0pIHsKKyAgcmV0dXJu
IHN0cmluZ19vZl9saW1pdHMocGFyYW1bMF0pICsgIiBmdW5jcmVmIjsKK30KKworZnVuY3Rpb24g
c3RyaW5nX29mX2dsb2JhbF90eXBlKHBhcmFtKSB7CisgIHZhciB0ID0gcGFyYW1bMF07CisgIGlm
IChwYXJhbVsxXSAhPT0gMCkgeworICAgIHJldHVybiAiKG11dCAiICsgKHN0cmluZ19vZl92YWx1
ZV90eXBlKHQpICsgIikiKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gc3RyaW5nX29mX3Zh
bHVlX3R5cGUodCk7CisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX29mX3N0YWNrX3R5cGUodHMp
IHsKKyAgcmV0dXJuICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcChzdHJpbmdf
b2ZfdmFsdWVfdHlwZSwgdHMpKSArICJdIik7Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9mdW5j
X3R5cGUocGFyYW0pIHsKKyAgcmV0dXJuIHN0cmluZ19vZl9zdGFja190eXBlKHBhcmFtWzBdKSAr
ICgiIC0+ICIgKyBzdHJpbmdfb2Zfc3RhY2tfdHlwZShwYXJhbVsxXSkpOworfQorCitleHBvcnRz
LnNpemUgICAgICAgICAgICAgICAgICA9IHNpemU7CitleHBvcnRzLnN0cmluZ19vZl92YWx1ZV90
eXBlICA9IHN0cmluZ19vZl92YWx1ZV90eXBlOworZXhwb3J0cy5zdHJpbmdfb2ZfdmFsdWVfdHlw
ZXMgPSBzdHJpbmdfb2ZfdmFsdWVfdHlwZXM7CitleHBvcnRzLnN0cmluZ19vZl9lbGVtX3R5cGUg
ICA9IHN0cmluZ19vZl9lbGVtX3R5cGU7CitleHBvcnRzLnN0cmluZ19vZl9saW1pdHMgICAgICA9
IHN0cmluZ19vZl9saW1pdHM7CitleHBvcnRzLnN0cmluZ19vZl9tZW1vcnlfdHlwZSA9IHN0cmlu
Z19vZl9tZW1vcnlfdHlwZTsKK2V4cG9ydHMuc3RyaW5nX29mX3RhYmxlX3R5cGUgID0gc3RyaW5n
X29mX3RhYmxlX3R5cGU7CitleHBvcnRzLnN0cmluZ19vZl9nbG9iYWxfdHlwZSA9IHN0cmluZ19v
Zl9nbG9iYWxfdHlwZTsKK2V4cG9ydHMuc3RyaW5nX29mX3N0YWNrX3R5cGUgID0gc3RyaW5nX29m
X3N0YWNrX3R5cGU7CitleHBvcnRzLnN0cmluZ19vZl9mdW5jX3R5cGUgICA9IHN0cmluZ19vZl9m
dW5jX3R5cGU7CisvKiBJMzIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiB0
eXBlcy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3Jl
Z2lzdHJ5Wyd2YWx1ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsK
Ky8vLy8vLy8vIHN0YXJ0IG9mIHZhbHVlcy5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJV
Q0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0
cmljdCc7CisKK3ZhciBGMzIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2YzMiIpOwordmFyIEY2
NCAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjY0Iik7Cit2YXIgSTMyICAgICAgICAgICAgID0g
cmVxdWlyZSgiLi9pMzIiKTsKK3ZhciBJNjQgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2k2NCIp
OwordmFyIExpc3QgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0
Iik7Cit2YXIgQmxvY2sgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Js
b2NrIik7Cit2YXIgQ3VycnkgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2N1cnJ5Iik7Cit2YXIgJCRTdHJpbmcgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGli
L2pzL3N0cmluZyIpOwordmFyIENhbWxfZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3Jt
L2xpYi9qcy9jYW1sX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gdHlwZV9vZihwYXJhbSkgewor
ICBzd2l0Y2ggKHBhcmFtLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJu
IC8qIEkzMlR5cGUgKi8wOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gLyogSTY0VHlw
ZSAqLzE7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiBGMzJUeXBlICovMjsKKyAg
ICBjYXNlIDMgOiAKKyAgICAgICAgcmV0dXJuIC8qIEY2NFR5cGUgKi8zOworICAgIAorICB9Cit9
CisKK2Z1bmN0aW9uIGRlZmF1bHRfdmFsdWUocGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgewor
ICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gLyogSTMyICovQmxvY2suX18oMCwgW0kzMi56
ZXJvXSk7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiBJNjQgKi9CbG9jay5fXygx
LCBbSTY0Lnplcm9dKTsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuIC8qIEYzMiAqL0Js
b2NrLl9fKDIsIFtGMzIuemVyb10pOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gLyog
RjY0ICovQmxvY2suX18oMywgW0Y2NC56ZXJvXSk7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24g
dmFsdWVfb2ZfYm9vbChiKSB7CisgIHJldHVybiAvKiBJMzIgKi9CbG9jay5fXygwLCBbYiA/IDEg
OiAwXSk7Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl92YWx1ZShwYXJhbSkgeworICBzd2l0Y2gg
KHBhcmFtLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIEN1cnJ5Ll8x
KEkzMi50b19zdHJpbmdfcywgcGFyYW1bMF0pOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1
cm4gQ3VycnkuXzEoSTY0LnRvX3N0cmluZ19zLCBwYXJhbVswXSk7CisgICAgY2FzZSAyIDogCisg
ICAgICAgIHJldHVybiBDdXJyeS5fMShGMzIudG9fc3RyaW5nLCBwYXJhbVswXSk7CisgICAgY2Fz
ZSAzIDogCisgICAgICAgIHJldHVybiBDdXJyeS5fMShGNjQudG9fc3RyaW5nLCBwYXJhbVswXSk7
CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX29mX3ZhbHVlcyh2cykgeworICB2YXIg
ZXhpdCA9IDA7CisgIGlmICh2cykgeworICAgIGlmICh2c1sxXSkgeworICAgICAgZXhpdCA9IDE7
CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIHN0cmluZ19vZl92YWx1ZSh2c1swXSk7
CisgICAgfQorICB9CisgIGVsc2UgeworICAgIGV4aXQgPSAxOworICB9CisgIGlmIChleGl0ID09
PSAxKSB7CisgICAgcmV0dXJuICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcChz
dHJpbmdfb2ZfdmFsdWUsIHZzKSkgKyAiXSIpOworICB9CisgIAorfQorCit2YXIgVmFsdWUgPSBD
YW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJWYWx1ZXMuVmFsdWUiKTsKKworZnVuY3Rpb24gdG9fdmFs
dWUoaSkgeworICByZXR1cm4gLyogSTMyICovQmxvY2suX18oMCwgW2ldKTsKK30KKworZnVuY3Rp
b24gb2ZfdmFsdWUocGFyYW0pIHsKKyAgaWYgKHBhcmFtLnRhZykgeworICAgIHRocm93IFsKKyAg
ICAgICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBJMzJUeXBlICovMAorICAgICAgICBdOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBwYXJhbVswXTsKKyAgfQorfQorCit2YXIgSTMyVmFsdWUg
PSAvKiBtb2R1bGUgKi9bCisgIC8qIHRvX3ZhbHVlICovdG9fdmFsdWUsCisgIC8qIG9mX3ZhbHVl
ICovb2ZfdmFsdWUKK107CisKK2Z1bmN0aW9uIHRvX3ZhbHVlJDEoaSkgeworICByZXR1cm4gLyog
STY0ICovQmxvY2suX18oMSwgW2ldKTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUkMShwYXJhbSkg
eworICBpZiAocGFyYW0udGFnID09PSAxKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9Cisg
IGVsc2UgeworICAgIHRocm93IFsKKyAgICAgICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBJNjRU
eXBlICovMQorICAgICAgICBdOworICB9Cit9CisKK3ZhciBJNjRWYWx1ZSA9IC8qIG1vZHVsZSAq
L1sKKyAgLyogdG9fdmFsdWUgKi90b192YWx1ZSQxLAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVl
JDEKK107CisKK2Z1bmN0aW9uIHRvX3ZhbHVlJDIoaSkgeworICByZXR1cm4gLyogRjMyICovQmxv
Y2suX18oMiwgW2ldKTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUkMihwYXJhbSkgeworICBpZiAo
cGFyYW0udGFnID09PSAyKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVsc2Ugewor
ICAgIHRocm93IFsKKyAgICAgICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBGMzJUeXBlICovMgor
ICAgICAgICBdOworICB9Cit9CisKK3ZhciBGMzJWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKKyAgLyog
dG9fdmFsdWUgKi90b192YWx1ZSQyLAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDIKK107CisK
K2Z1bmN0aW9uIHRvX3ZhbHVlJDMoaSkgeworICByZXR1cm4gLyogRjY0ICovQmxvY2suX18oMywg
W2ldKTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUkMyhwYXJhbSkgeworICBpZiAocGFyYW0udGFn
ID09PSAzKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVsc2UgeworICAgIHRocm93
IFsKKyAgICAgICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBGNjRUeXBlICovMworICAgICAgICBd
OworICB9Cit9CisKK3ZhciBGNjRWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKKyAgLyogdG9fdmFsdWUg
Ki90b192YWx1ZSQzLAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDMKK107CisKK2V4cG9ydHMu
dHlwZV9vZiAgICAgICAgICA9IHR5cGVfb2Y7CitleHBvcnRzLmRlZmF1bHRfdmFsdWUgICAgPSBk
ZWZhdWx0X3ZhbHVlOworZXhwb3J0cy52YWx1ZV9vZl9ib29sICAgID0gdmFsdWVfb2ZfYm9vbDsK
K2V4cG9ydHMuc3RyaW5nX29mX3ZhbHVlICA9IHN0cmluZ19vZl92YWx1ZTsKK2V4cG9ydHMuc3Ry
aW5nX29mX3ZhbHVlcyA9IHN0cmluZ19vZl92YWx1ZXM7CitleHBvcnRzLlZhbHVlICAgICAgICAg
ICAgPSBWYWx1ZTsKK2V4cG9ydHMuSTMyVmFsdWUgICAgICAgICA9IEkzMlZhbHVlOworZXhwb3J0
cy5JNjRWYWx1ZSAgICAgICAgID0gSTY0VmFsdWU7CitleHBvcnRzLkYzMlZhbHVlICAgICAgICAg
PSBGMzJWYWx1ZTsKK2V4cG9ydHMuRjY0VmFsdWUgICAgICAgICA9IEY2NFZhbHVlOworLyogRjMy
IE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgdmFsdWVzLmpzIC8vLy8vLy8v
CivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ3dhc20nXSA9
IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9m
IHdhc20uanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAx
LjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgUGFyc2Ug
ICAgICA9IHJlcXVpcmUoIi4vcGFyc2UiKTsKK3ZhciBTZXhwciAgICAgID0gcmVxdWlyZSgiLi9z
ZXhwciIpOwordmFyIERlY29kZSAgICAgPSByZXF1aXJlKCIuL2RlY29kZSIpOwordmFyIEVuY29k
ZSAgICAgPSByZXF1aXJlKCIuL2VuY29kZSIpOwordmFyIEFycmFuZ2UgICAgPSByZXF1aXJlKCIu
L2FycmFuZ2UiKTsKK3ZhciBDYW1sX2ludDY0ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2NhbWxfaW50NjQiKTsKK3ZhciBQZXJ2YXNpdmVzID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGli
L2pzL3BlcnZhc2l2ZXMiKTsKKworZnVuY3Rpb24gZW5jb2RlKHMpIHsKKyAgdmFyIGRlZiA9IFBh
cnNlLnN0cmluZ190b19tb2R1bGUocyk7CisgIHZhciBtYXRjaCA9IGRlZlsvKiBpdCAqLzFdOwor
ICBpZiAobWF0Y2gudGFnKSB7CisgICAgcmV0dXJuIG1hdGNoWzFdOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBFbmNvZGUuZW5jb2RlKG1hdGNoWzBdKTsKKyAgfQorfQorCitmdW5jdGlvbiBk
ZWNvZGUocywgd2lkdGgpIHsKKyAgdmFyIG0gPSBEZWNvZGUuZGVjb2RlKCIoZGVjb2RlKSIsIHMp
OworICByZXR1cm4gU2V4cHIudG9fc3RyaW5nKHdpZHRoLCBBcnJhbmdlLm1vZHVsZV8obSkpOwor
fQorCitmdW5jdGlvbiBmKHgpIHsKKyAgUGVydmFzaXZlcy5wcmludF9zdHJpbmcoImYiKTsKKyAg
cmV0dXJuIHg7Cit9CisKK2Z1bmN0aW9uIGcoeCkgeworICByZXR1cm4gQ2FtbF9pbnQ2NC5vcl8o
eCwgKFBlcnZhc2l2ZXMucHJpbnRfc3RyaW5nKCJmIiksIHgpKTsKK30KKworZXhwb3J0cy5lbmNv
ZGUgPSBlbmNvZGU7CitleHBvcnRzLmRlY29kZSA9IGRlY29kZTsKK2V4cG9ydHMuZiAgICAgID0g
ZjsKK2V4cG9ydHMuZyAgICAgID0gZzsKKy8qIFBhcnNlIE5vdCBhIHB1cmUgbW9kdWxlICovCisv
Ly8vLy8vLyBlbmQgb2Ygd2FzbS5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivC
oCB9OworCisKKyAgZnVuY3Rpb24gYmluYXJ5KGJ5dGVzKSB7CisgICAgbGV0IGJ1ZmZlciA9IG5l
dyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgpOworICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJy
YXkoYnVmZmVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7
CisgICAgICB2aWV3W2ldID0gYnl0ZXMuY2hhckNvZGVBdChpKTsKKyAgICB9CisgICAgcmV0dXJu
IGJ1ZmZlcjsKKyAgfQorICBmdW5jdGlvbiBieXRlcyhidWZmZXIpIHsKKyAgICBsZXQgc3RyaW5n
ID0gJyc7CisgICAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7ICsraSkgeworICAgICAgc3RyaW5nICs9IFN0cmlu
Zy5mcm9tQ29kZVBvaW50KHZpZXdbaV0pOworICAgIH0KKyAgICByZXR1cm4gc3RyaW5nOworICB9
CivCoCBsZXQgV2FzbSA9IHJlcXVpcmUoJ3dhc20nKTsKKyAgcmV0dXJuIHsKKyAgICBlbmNvZGUo
cykgeyByZXR1cm4gYmluYXJ5KFdhc20uZW5jb2RlKHMpKSB9LAorICAgIGRlY29kZShiLCB3ID0g
ODApIHsgcmV0dXJuIFdhc20uZGVjb2RlKGJ5dGVzKGIpLCB3KSB9CisgIH07Cit9KSgpOworCisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVybl9j
YWxsLndhc3QuanMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5f
Y2FsbC53YXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzZmRiM2ZjMGY0NzAwYzQ3YzJlYmY2NmY2ZTViZTFk
NWIwY2M4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3Bl
Yy10ZXN0cy9yZXR1cm5fY2FsbC53YXN0LmpzCkBAIC0wLDAgKzEsMTMyIEBACisKKy8vIHJldHVy
bl9jYWxsLndhc3Q6MworbGV0ICQxID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4YzhceDgwXHg4MFx4ODBceDAwXHgwZVx4NjBceDAwXHgwMVx4N2ZceDYw
XHgwMFx4MDFceDdlXHg2MFx4MDBceDAxXHg3ZFx4NjBceDAwXHgwMVx4N2NceDYwXHgwMVx4N2Zc
eDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHg2MFx4MDFceDdkXHgwMVx4N2RceDYwXHgwMVx4
N2NceDAxXHg3Y1x4NjBceDAyXHg3ZFx4N2ZceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3
ZVx4NjBceDAyXHg3Y1x4N2RceDAxXHg3ZFx4NjBceDAyXHg3ZVx4N2NceDAxXHg3Y1x4NjBceDAy
XHg3ZVx4N2VceDAxXHg3ZVx4NjBceDAxXHg3ZVx4MDFceDdmXHgwM1x4OWRceDgwXHg4MFx4ODBc
eDAwXHgxY1x4MDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4MDlceDBhXHgwYlx4
MDBceDAxXHgwMlx4MDNceDAwXHgwMVx4MDJceDAzXHgwMFx4MDFceDAyXHgwM1x4MGNceDA1XHgw
ZFx4MGRceDA3XHhkOFx4ODFceDgwXHg4MFx4MDBceDEwXHgwOFx4NzRceDc5XHg3MFx4NjVceDJk
XHg2OVx4MzNceDMyXHgwMFx4MGNceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY5XHgzNlx4MzRc
eDAwXHgwZFx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDMzXHgzMlx4MDBceDBlXHgwOFx4
NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4MzZceDM0XHgwMFx4MGZceDBlXHg3NFx4NzlceDcwXHg2
NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxMFx4MGVceDc0
XHg3OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjlceDM2XHgzNFx4MDBc
eDExXHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2Nlx4
MzNceDMyXHgwMFx4MTJceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3
NFx4MmRceDY2XHgzNlx4MzRceDAwXHgxM1x4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1
XHg2M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxNFx4MGZceDc0XHg3OVx4NzBc
eDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzNlx4MzRceDAwXHgxNVx4
MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgz
M1x4MzJceDAwXHgxNlx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZl
XHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgxN1x4MDdceDY2XHg2MVx4NjNceDJkXHg2MVx4NjNc
eDYzXHgwMFx4MThceDA1XHg2M1x4NmZceDc1XHg2ZVx4NzRceDAwXHgxOVx4MDRceDY1XHg3Nlx4
NjVceDZlXHgwMFx4MWFceDAzXHg2Zlx4NjRceDY0XHgwMFx4MWJceDBhXHg4MFx4ODNceDgwXHg4
MFx4MDBceDFjXHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4YjJceDAyXHgwYlx4ODVceDgw
XHg4MFx4ODBceDAwXHgwMFx4NDJceGU0XHgwMlx4MGJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDBc
eDQzXHgwMFx4MjBceDczXHg0NVx4MGJceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4
MDBceDAwXHgwMFx4MDBceGM4XHhhZVx4NDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgy
MFx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4ODBceDgw
XHg4MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBc
eDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4
MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4
NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAw
XHgxMlx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDBiXHg4NFx4ODBc
eDgwXHg4MFx4MDBceDAwXHgxMlx4MDJceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4
MDNceDBiXHg4Nlx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MjBceDEyXHgwNFx4MGJceDg3XHg4
MFx4ODBceDgwXHgwMFx4MDBceDQyXHhjMFx4MDBceDEyXHgwNVx4MGJceDg5XHg4MFx4ODBceDgw
XHgwMFx4MDBceDQzXHhjM1x4ZjVceGE4XHgzZlx4MTJceDA2XHgwYlx4OGRceDgwXHg4MFx4ODBc
eDAwXHgwMFx4NDRceDNkXHgwYVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4MTJceDA3XHgwYlx4
OGJceDgwXHg4MFx4ODBceDAwXHgwMFx4NDNceDY2XHg2Nlx4MDBceDQyXHg0MVx4MjBceDEyXHgw
OFx4MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgyMFx4NDJceGMwXHgwMFx4MTJceDA5
XHgwYlx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDUwXHg0MFx4NDNceDAwXHgwMFx4MDBceDQyXHgxMlx4MGFceDBiXHg5MFx4ODBceDgwXHg4MFx4
MDBceDAwXHg0Mlx4YzBceDAwXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBceDQwXHgx
Mlx4MGJceDBiXHg5N1x4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDUwXHgwNFx4N2VceDIw
XHgwMVx4MDVceDIwXHgwMFx4NDJceDAxXHg3ZFx4MjBceDAwXHgyMFx4MDFceDdlXHgxMlx4MThc
eDBiXHgwYlx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg1MFx4MDRceDdlXHgyMFx4
MDBceDA1XHgyMFx4MDBceDQyXHgwMVx4N2RceDEyXHgxOVx4MGJceDBiXHg5Mlx4ODBceDgwXHg4
MFx4MDBceDAwXHgyMFx4MDBceDUwXHgwNFx4N2ZceDQxXHgyY1x4MDVceDIwXHgwMFx4NDJceDAx
XHg3ZFx4MTJceDFiXHgwYlx4MGJceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NTBc
eDA0XHg3Zlx4NDFceGUzXHgwMFx4MDVceDIwXHgwMFx4NDJceDAxXHg3ZFx4MTJceDFhXHgwYlx4
MGIiKTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDo4MAorYXNzZXJ0X3JldHVybigoKSA9PiBjYWxs
KCQxLCAidHlwZS1pMzIiLCBbXSksIDMwNik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODEKK3J1
bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4
MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2
Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZm
XHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4ODRc
eDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg3NFx4
NzlceDcwXHg2NVx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHgxMFx4MDBceDAxXHg0Mlx4ZTRceDAyXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4
MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgp
ID0+IGNhbGwoJDEsICJ0eXBlLWk2NCIsIFtdKSwgaW50NjQoIjM1NiIpKQorCisvLyByZXR1cm5f
Y2FsbC53YXN0OjgyCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2
MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdm
XHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBc
eDAxXHg3ZFx4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4
NmNceDY1XHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4
NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4
MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcy
XHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiY1x4NDNceDAwXHgyMFx4NzNceDQ1XHhiY1x4
NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtd
KSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWYzMiIsIFtdKSwgMzg5
MC4pCisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4
MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2
MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcw
XHgwMVx4N2ZceDYwXHgwMFx4MDFceDdjXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZc
eDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHgzNlx4
MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4
MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAw
XHgwMVx4OThceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4MDBc
eDAwXHgwMFx4MDBceDAwXHhjOFx4YWVceDQwXHhiZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4
MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgp
ID0+IGNhbGwoJDEsICJ0eXBlLWY2NCIsIFtdKSwgMzk0MC4pCisKKy8vIHJldHVybl9jYWxsLndh
c3Q6ODUKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtZmlyc3QtaTMyIiwgW10p
LCAzMik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODYKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgw
MFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdm
XHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBc
eDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4
MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2
OVx4NzJceDczXHg3NFx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHgxMFx4MDBceDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgw
Ylx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJu
KCgpID0+IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWk2NCIsIFtdKSwgaW50NjQoIjY0IikpCisKKy8v
IHJldHVybl9jYWxsLndhc3Q6ODcKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgw
MFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcw
XHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2Zc
eDYwXHgwMFx4MDFceDdkXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4
NjRceDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3
NFx4MmRceDY2XHgzM1x4MzJceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDcz
XHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2
XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3
XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFc
eDgwXHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4
MDBceGJjXHg0M1x4YzNceGY1XHhhOFx4M2ZceGJjXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgw
MFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkg
PT4gY2FsbCgkMSwgInR5cGUtZmlyc3QtZjMyIiwgW10pLCAxLjMyMDAwMDA1MjQ1KQorCisvLyBy
ZXR1cm5fY2FsbC53YXN0Ojg4CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBc
eDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4
MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2
MFx4MDBceDAxXHg3Y1x4MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0
XHg3NVx4NmNceDY1XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRc
eDJkXHg2Nlx4MzZceDM0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4
ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4
MFx4ODBceDgwXHgwMFx4MDFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAw
XHhiZFx4NDRceDNkXHgwYVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4YmRceDUxXHg0NVx4MGRc
eDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNz
ZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1maXJzdC1mNjQiLCBbXSksIDEuNjQpCisK
Ky8vIHJldHVybl9jYWxsLndhc3Q6OTAKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5
cGUtc2Vjb25kLWkzMiIsIFtdKSwgMzIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjkxCitydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZVx4MDJceDhiXHg4
MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwZlx4NzRceDc5
XHg3MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjlceDM2XHgzNFx4MDBc
eDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4Njlc
eDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3
Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDcz
XHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVc
eDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4
MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5
Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4MDFceDQyXHhjMFx4MDBceDAx
XHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwg
W10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWk2NCIs
IFtdKSwgaW50NjQoIjY0IikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTIKK3J1bigoKSA9PiBj
YWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4
MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAx
XHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2Zc
eDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdkXHgwMlx4OGJceDgxXHg4MFx4
ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBmXHg3NFx4NzlceDcwXHg2
NVx4MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
YVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgy
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNc
eDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4
ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiY1x4NDNceDAwXHgwMFx4MDBceDQyXHhi
Y1x4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIs
IFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1mMzIi
LCBbXSksIDMyLikKKworLy8gcmV0dXJuX2NhbGwud2FzdDo5MworcnVuKCgpID0+IGNhbGwoaW5z
dGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4
ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgw
MVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAy
XHg3MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2NceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBc
eDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4
NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNc
eDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3
NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4
NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1
XHg2ZVx4MDBceDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4
NTBceDQwXHhiZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkp
LCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNl
Y29uZC1mNjQiLCBbXSksIDY0LjEpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTUKK3J1bigoKSA9
PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1
XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBc
eDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4
N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4
M1x4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2
XHg2MVx4NjNceDJkXHg2MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJc
eDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4
NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1
XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4
MGFceDliXHg4MFx4ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0
MFx4NDJceDAwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFceDUxXHg0NVx4MGRceDAw
XHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0
X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZmFjLWFjYyIsIFtpbnQ2NCgiMCIpLCBpbnQ2NCgiMSIp
XSksIGludDY0KCIxIikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTYKK3J1bigoKSA9PiBjYWxs
KGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4
ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2
Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYw
XHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFc
eDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4
NjNceDJkXHg2MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2
Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcx
XHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4
NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgw
N1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDli
XHg4MFx4ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJc
eDAxXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4
MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAiZmFjLWFjYyIsIFtpbnQ2NCgiMSIpLCBpbnQ2NCgiMSIpXSksIGlu
dDY0KCIxIikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTcKK3J1bigoKSA9PiBjYWxsKGluc3Rh
bmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgw
XHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFc
eDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4
NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4
MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJk
XHg2MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDljXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDA1XHg0
Mlx4MDFceDEwXHgwMFx4MDFceDQyXHhmOFx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBi
XHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4o
KCkgPT4gY2FsbCgkMSwgImZhYy1hY2MiLCBbaW50NjQoIjUiKSwgaW50NjQoIjEiKV0pLCBpbnQ2
NCgiMTIwIikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTgKK3J1bigoKSA9PiBjYWxsKGluc3Rh
bmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgw
XHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFc
eDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4
NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4
MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJk
XHg2MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceGE0XHg4MFx4
ODBceDgwXHgwMFx4MDFceDllXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDE5XHg0
Mlx4MDFceDEwXHgwMFx4MDFceDQyXHg4MFx4ODBceDgwXHhkZVx4ODdceDkyXHhlY1x4Y2ZceGUx
XHgwMFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwg
ICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZmFjLWFjYyIs
IFtpbnQ2NCgiMjUiKSwgaW50NjQoIjEiKV0pLCBpbnQ2NCgiN18wMzRfNTM1XzI3N181NzNfOTYz
Xzc3NiIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwMworcnVuKCgpID0+IGNhbGwoaW5zdGFu
Y2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBc
eDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4
N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3
MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHgwMlx4ODFceDgxXHg4MFx4ODBceDAw
XHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA1XHg2M1x4NmZceDc1XHg2ZVx4NzRc
eDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFc
eDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4
MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgw
MVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDBceDEwXHgwMFx4MDFceDQy
XHgwMFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwg
ICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiY291bnQiLCBb
aW50NjQoIjAiKV0pLCBpbnQ2NCgiMCIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwNAorcnVu
KCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
MVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZm
XHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZc
eDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHgwMlx4
ODFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA1XHg2
M1x4NmZceDc1XHg2ZVx4NzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDcz
XHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2
XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3
XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFc
eDgwXHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4
ZThceDA3XHgxMFx4MDBceDAxXHg0Mlx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgw
MFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkg
PT4gY2FsbCgkMSwgImNvdW50IiwgW2ludDY0KCIxXzAwMCIpXSksIGludDY0KCIwIikpCisKKy8v
IHJldHVybl9jYWxsLndhc3Q6MTA1CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4
MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3
MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdm
XHg2MFx4MDFceDdlXHgwMVx4N2VceDAyXHg4MVx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRc
eDZmXHg2NFx4NzVceDZjXHg2NVx4MDVceDYzXHg2Zlx4NzVceDZlXHg3NFx4MDBceDA2XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFc
eDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3
Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgw
XHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhjMFx4ODRceDNkXHgxMFx4MDBceDAxXHg0Mlx4MDBc
eDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVu
IiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImNvdW50IiwgW2ludDY0
KCIxXzAwMF8wMDAiKV0pLCBpbnQ2NCgiMCIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwNwor
cnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFc
eDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4
NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgw
Mlx4ODBceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0
XHg2NVx4NzZceDY1XHg2ZVx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZc
eDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdc
eDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OVx4
ODBceDgwXHg4MFx4MDBceDAxXHg5M1x4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgw
MFx4MTBceDAwXHgwMVx4NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBi
IiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNh
bGwoJDEsICJldmVuIiwgW2ludDY0KCIwIildKSwgNDQpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6
MTA4CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdm
XHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJc
eDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4
N2ZceDAyXHg4MFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2
NVx4MDRceDY1XHg3Nlx4NjVceDZlXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1
XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVc
eDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2
ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAw
XHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFc
eDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4
NDJceDAxXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgw
Ylx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJu
KCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxIildKSwgOTkpCisKKy8vIHJldHVybl9j
YWxsLndhc3Q6MTA5CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2
MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdm
XHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFc
eDdlXHgwMVx4N2ZceDAyXHg4MFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4
NzVceDZjXHg2NVx4MDRceDY1XHg3Nlx4NjVceDZlXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAw
XHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBc
eDAyXHg0MFx4NDJceGU0XHgwMFx4MTBceDAwXHgwMVx4NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4
MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3Nl
cnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxMDAiKV0pLCA0NCkKKwor
Ly8gcmV0dXJuX2NhbGwud2FzdDoxMTAKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYw
XHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4
N2ZceDYwXHgwMVx4N2VceDAxXHg3Zlx4MDJceDgwXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2
ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwNFx4NjVceDc2XHg2NVx4NmVceDAwXHgwNlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
Mlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJc
eDc1XHg2ZVx4MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4
ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4Y2RceDAwXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgw
MVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIs
IFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCI3
NyIpXSksIDk5KQorCisvLyByZXR1cm5fY2FsbC53YXN0OjExMQorcnVuKCgpID0+IGNhbGwoaW5z
dGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4
ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgw
MVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAy
XHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ODBceDgxXHg4MFx4ODBc
eDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2NVx4NzZceDY1XHg2ZVx4
MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4
NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4
MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgw
MFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAx
XHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhjMFx4ODRceDNkXHgxMFx4MDBc
eDAxXHg0MVx4MmNceDAxXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV2
ZW4iLCBbaW50NjQoIjFfMDAwXzAwMCIpXSksIDQ0KQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEx
MgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4
MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2
Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdm
XHgwMlx4ODBceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3
MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4
MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5
Y1x4ODBceDgwXHg4MFx4MDBceDAxXHg5Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQy
XHhjMVx4ODRceDNkXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4MDBc
eDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRf
cmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxXzAwMF8wMDEiKV0pLCA5OSkK
KworLy8gcmV0dXJuX2NhbGwud2FzdDoxMTMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdc
eDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4
MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgw
MVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3Zlx4MDJceGZmXHg4MFx4ODBceDgwXHgwMFx4MDZceDA2
XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NmZceDY0XHg2NFx4MDBceDA2XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAy
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1
XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBc
eDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4
NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4MDBceDAxXHg5NFx4ODBceDgwXHg4
MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwMFx4MTBceDAwXHgwMVx4NDFceGUzXHgwMFx4MDFceDQ2
XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkp
OyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2ludDY0KCIwIildKSwg
OTkpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTE0CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBc
eDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4
NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3
MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4
NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4
MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQxXHgyY1x4MDFceDQ2
XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkp
OyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2ludDY0KCIxIildKSwg
NDQpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTE1CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBc
eDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4
NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3
MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4
NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4
MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4YzhceDAxXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAw
XHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1
biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbaW50NjQo
IjIwMCIpXSksIDk5KQorCisvLyByZXR1cm5fY2FsbC53YXN0OjExNgorcnVuKCgpID0+IGNhbGwo
aW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4
MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZm
XHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBc
eDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ZmZceDgwXHg4MFx4
ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDAzXHg2Zlx4NjRceDY0XHgw
MFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgw
NVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceGNkXHgwMFx4MTBceDAwXHgwMVx4
NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkp
LCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBb
aW50NjQoIjc3IildKSwgNDQpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTE3CitydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBc
eDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4
NjRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4
MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWNceDgwXHg4MFx4ODBceDAw
XHgwMVx4OTZceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4YzBceDg0XHgzZFx4MTBc
eDAwXHgwMVx4NDFceGUzXHgwMFx4MDFceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIs
IGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxs
KCQxLCAib2RkIiwgW2ludDY0KCIxXzAwMF8wMDAiKV0pLCA5OSkKKworLy8gcmV0dXJuX2NhbGwu
d2FzdDoxMTgKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgw
MVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYw
XHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2Vc
eDAxXHg3Zlx4MDJceGZmXHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4
NmNceDY1XHgwM1x4NmZceDY0XHg2NFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAx
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1
XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgw
MFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBh
XHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBc
eDQyXHhiZlx4ODRceDNkXHgxMFx4MDBceDAxXHg0MVx4MmNceDAxXHg0Nlx4NDVceDBkXHgwMFx4
MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9y
ZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9kZCIsIFtpbnQ2NCgiOTk5Xzk5OSIpXSksIDQ0KQorCisv
LyByZXR1cm5fY2FsbC53YXN0OjEyMworYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgwMVx4
N2ZceDYwXHgwMFx4MDBceDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5
M1x4ODBceDgwXHg4MFx4MDBceDAyXHg4Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDQx
XHgwMFx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxs
Lndhc3Q6MTMwCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAxXHg3Zlx4NjBceDAwXHgw
MVx4N2VceDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5NVx4ODBceDgw
XHg4MFx4MDBceDAyXHg4Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDQxXHgwMFx4MGJc
eDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHgwMVx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwu
d2FzdDoxMzgKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAw
XHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OTFceDgwXHg4MFx4ODBc
eDAwXHgwMlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDAxXHgwYlx4ODJceDgwXHg4MFx4
ODBceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDoxNDUKK2Fzc2VydF9pbnZh
bGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgw
XHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMlx4N2NceDdmXHgwMFx4MDNceDgzXHg4MFx4ODBc
eDgwXHgwMFx4MDJceDAwXHgwMVx4MGFceDkxXHg4MFx4ODBceDgwXHgwMFx4MDJceDg0XHg4MFx4
ODBceDgwXHgwMFx4MDBceDEyXHgwMVx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7
CisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTUzCitsZXQgJDIgPSBpbnN0YW5jZSgiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4
MDBceDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAwXHgwYVx4OTNceDgwXHg4
MFx4ODBceDAwXHgwMlx4ODZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgxMlx4MDFceDBi
XHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE1
OAorbGV0ICQzID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
MVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgzXHg4MFx4ODBceDgw
XHgwMFx4MDJceDAwXHgwMFx4MGFceDljXHg4MFx4ODBceDgwXHgwMFx4MDJceDhmXHg4MFx4ODBc
eDgwXHgwMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDBceDQxXHgwMVx4
MTJceDAxXHgwYlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2Nh
bGwud2FzdDoxNjMKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMlx4N2Zc
eDdmXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgwMVx4MGFceDk0XHg4MFx4
ODBceDgwXHgwMFx4MDJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDAxXHg0MVx4MDFceDEyXHgw
MVx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsLndh
c3Q6MTcwCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAwXHg2MFx4MDJceDdmXHg3Zlx4
MDBceDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5NFx4ODBceDgwXHg4
MFx4MDBceDAyXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDFceDAxXHgxMlx4MDFceDBi
XHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE3
NworYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgwMFx4NjBceDAyXHg3Zlx4N2NceDAwXHgw
M1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OWNceDgwXHg4MFx4ODBceDAw
XHgwMlx4OGZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eGYwXHgzZlx4NDFceDAxXHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIp
OworCisvLyByZXR1cm5fY2FsbC53YXN0OjE4NAorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAw
XHgwMFx4NjBceDAyXHg3Y1x4N2ZceDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBc
eDAxXHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMlx4OGZceDgwXHg4MFx4ODBceDAwXHgwMFx4
NDFceDAxXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ZjBceDNmXHgxMlx4MDFceDBiXHg4
Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE5NQor
YXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRc
eDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAwXHgwYVx4OGFceDgwXHg4MFx4ODBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgw
MFx4MTJceDAxXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE5OQorYXNzZXJ0X2ludmFs
aWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBc
eDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4
OGVceDgwXHg4MFx4ODBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDk0XHg5
OFx4ZGJceGUyXHgwM1x4MGIiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2Fs
bC1zcGVjLXRlc3RzL3JldHVybl9jYWxsX2luZGlyZWN0Lndhc3QuanMgYi9KU1Rlc3RzL3dhc20v
cmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJhODMyYzUzZjE0MDRhMzg5YjA2YWU1NzIyNjdlODRhNTMwZWNjYzAKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0LmpzCkBAIC0wLDAgKzEsMjMyIEBACisKKy8vIHJldHVybl9jYWxsX2lu
ZGlyZWN0Lndhc3Q6MworbGV0ICQxID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4ZjdceDgwXHg4MFx4ODBceDAwXHgxN1x4NjBceDAwXHgwMFx4NjBceDAw
XHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHg2MFx4MDBceDAxXHg3ZFx4NjBceDAwXHgwMVx4N2Nc
eDYwXHgwMVx4N2ZceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHg2MFx4MDFceDdkXHgwMVx4
N2RceDYwXHgwMVx4N2NceDAxXHg3Y1x4NjBceDAyXHg3ZFx4N2ZceDAxXHg3Zlx4NjBceDAyXHg3
Zlx4N2VceDAxXHg3ZVx4NjBceDAyXHg3Y1x4N2RceDAxXHg3ZFx4NjBceDAyXHg3ZVx4N2NceDAx
XHg3Y1x4NjBceDAxXHg3Zlx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2VceDYwXHgwMVx4N2Rc
eDAxXHg3ZFx4NjBceDAxXHg3Y1x4MDFceDdjXHg2MFx4MDRceDdlXHg3Y1x4N2ZceDdlXHgwMFx4
NjBceDAxXHg3ZVx4MDBceDYwXHgwNFx4N2VceDdjXHg3Zlx4N2VceDAxXHg3Zlx4NjBceDAxXHg3
ZVx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAz
XHhhYVx4ODBceDgwXHg4MFx4MDBceDI5XHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1x4MDhc
eDBhXHgwY1x4MDlceDBiXHgwZFx4MGVceDBmXHgxMFx4MDBceDAxXHgwMlx4MDFceDAyXHgwM1x4
MDRceDAyXHgwMVx4MDJceDAzXHgwNFx4MDFceDAyXHgwM1x4MDRceDBhXHgxNVx4MDFceDAxXHgw
NVx4MDZceDE2XHgwNVx4MDVceDA0XHg4ZFx4ODBceDgwXHg4MFx4MDBceDAzXHg3MFx4MDFceDE0
XHgxNFx4NzBceDAxXHgwMVx4MDFceDcwXHgwMVx4MDFceDAxXHgwN1x4ODVceDgyXHg4MFx4ODBc
eDAwXHgxM1x4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDMzXHgzMlx4MDBceDEzXHgwOFx4
NzRceDc5XHg3MFx4NjVceDJkXHg2OVx4MzZceDM0XHgwMFx4MTRceDA4XHg3NFx4NzlceDcwXHg2
NVx4MmRceDY2XHgzM1x4MzJceDAwXHgxNVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDM2
XHgzNFx4MDBceDE2XHgwYVx4NzRceDc5XHg3MFx4NjVceDJkXHg2OVx4NmVceDY0XHg2NVx4Nzhc
eDAwXHgxN1x4MGVceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4
NjlceDMzXHgzMlx4MDBceDE4XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3
M1x4NzRceDJkXHg2OVx4MzZceDM0XHgwMFx4MTlceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2
XHg2OVx4NzJceDczXHg3NFx4MmRceDY2XHgzM1x4MzJceDAwXHgxYVx4MGVceDc0XHg3OVx4NzBc
eDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjZceDM2XHgzNFx4MDBceDFiXHgwZlx4
NzRceDc5XHg3MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjlceDMzXHgz
Mlx4MDBceDFjXHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0
XHgyZFx4NjlceDM2XHgzNFx4MDBceDFkXHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3M1x4NjVc
eDYzXHg2Zlx4NmVceDY0XHgyZFx4NjZceDMzXHgzMlx4MDBceDFlXHgwZlx4NzRceDc5XHg3MFx4
NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjZceDM2XHgzNFx4MDBceDFmXHgw
OFx4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MjBceDEzXHg2NFx4NjlceDcz
XHg3MFx4NjFceDc0XHg2M1x4NjhceDJkXHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJc
eDYxXHg2Y1x4MDBceDIxXHgwOFx4NjNceDYxXHg2Y1x4NmNceDJkXHg3NFx4NjFceDYyXHgwMFx4
MjRceDAzXHg2Nlx4NjFceDYzXHgwMFx4MjVceDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBceDI3XHgw
M1x4NmZceDY0XHg2NFx4MDBceDI4XHgwOVx4YWFceDgwXHg4MFx4ODBceDAwXHgwM1x4MDBceDQx
XHgwMFx4MGJceDE0XHgwMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdceDBhXHgwOFx4MGJc
eDA5XHgyNVx4MjZceDI3XHgyOFx4MGNceDBkXHgwZVx4MGZceDAyXHgwMVx4NDFceDAwXHgwYlx4
MDBceDAxXHgyMlx4MDJceDAyXHg0MVx4MDBceDBiXHgwMFx4MDFceDIzXHgwYVx4OWZceDg1XHg4
MFx4ODBceDAwXHgyOVx4ODVceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceGIyXHgwMlx4MGJceDg1
XHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHhlNFx4MDJceDBiXHg4N1x4ODBceDgwXHg4MFx4MDBc
eDAwXHg0M1x4MDBceDIwXHg3M1x4NDVceDBiXHg4Ylx4ODBceDgwXHg4MFx4MDBceDAwXHg0NFx4
MDBceDAwXHgwMFx4MDBceDAwXHhjOFx4YWVceDQwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgw
MFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgw
XHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBc
eDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4
ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgw
Ylx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAw
XHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRc
eDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4
MjBceDAwXHgwYlx4YTdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDBceDAwXHg0
Mlx4MDBceDQxXHgwMFx4MTNceDEyXHgwMFx4NDJceDAwXHg0NFx4MDBceDAwXHgwMFx4MDBceDAw
XHgwMFx4MDBceDAwXHg0MVx4MDBceDQyXHgwMFx4NDFceDAwXHgxM1x4MTFceDAwXHg0MVx4MDBc
eDEzXHgwMFx4MDBceDBiXHhhN1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMVx4
MDBceDQxXHgwMFx4MTNceDAxXHgwMFx4NDJceDAwXHg0MVx4MDBceDEzXHgxNFx4MDBceDQyXHgw
MFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDFceDAwXHg0Mlx4MDBceDQx
XHgwMFx4MTNceDEzXHgwMFx4MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHgwMFx4NDFc
eDAwXHgxM1x4MDZceDAwXHgwYlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4
MDFceDAwXHgwYlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgxM1x4MDJceDAwXHgw
Ylx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAyXHgxM1x4MDNceDAwXHgwYlx4ODdceDgw
XHg4MFx4ODBceDAwXHgwMFx4NDFceDAzXHgxM1x4MDRceDAwXHgwYlx4OGFceDgwXHg4MFx4ODBc
eDAwXHgwMFx4NDJceGU0XHgwMFx4NDFceDA1XHgxM1x4MDZceDAwXHgwYlx4ODlceDgwXHg4MFx4
ODBceDAwXHgwMFx4NDFceDIwXHg0MVx4MDRceDEzXHgwNVx4MDBceDBiXHg4YVx4ODBceDgwXHg4
MFx4MDBceDAwXHg0Mlx4YzBceDAwXHg0MVx4MDVceDEzXHgwNlx4MDBceDBiXHg4Y1x4ODBceDgw
XHg4MFx4MDBceDAwXHg0M1x4YzNceGY1XHhhOFx4M2ZceDQxXHgwNlx4MTNceDA3XHgwMFx4MGJc
eDkwXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgzZFx4MGFceGQ3XHhhM1x4NzBceDNkXHhmYVx4
M2ZceDQxXHgwN1x4MTNceDA4XHgwMFx4MGJceDhlXHg4MFx4ODBceDgwXHgwMFx4MDBceDQzXHg2
Nlx4NjZceDAwXHg0Mlx4NDFceDIwXHg0MVx4MDhceDEzXHgwOVx4MDBceDBiXHg4Y1x4ODBceDgw
XHg4MFx4MDBceDAwXHg0MVx4MjBceDQyXHhjMFx4MDBceDQxXHgwOVx4MTNceDBhXHgwMFx4MGJc
eDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHg1MFx4
NDBceDQzXHgwMFx4MDBceDAwXHg0Mlx4NDFceDBhXHgxM1x4MGJceDAwXHgwYlx4OTNceDgwXHg4
MFx4ODBceDAwXHgwMFx4NDJceGMwXHgwMFx4NDRceDY2XHg2Nlx4NjZceDY2XHg2Nlx4MDZceDUw
XHg0MFx4NDFceDBiXHgxM1x4MGNceDAwXHgwYlx4ODlceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBc
eDAxXHgyMFx4MDBceDEzXHgwNlx4MDBceDBiXHg4OVx4ODBceDgwXHg4MFx4MDBceDAwXHg0Mlx4
MDlceDIwXHgwMFx4MTNceDBlXHgwMFx4MGJceDg1XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHhi
M1x4MDJceDBiXHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4YjRceDAyXHgwYlx4YWJceDgw
XHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg0MVx4MDBceDQ2XHgwNFx4NDBceDQxXHgwMFx4MTNc
eDAxXHgwMFx4MGJceDIwXHgwMFx4NDFceDAxXHg0Nlx4MDRceDQwXHg0MVx4MDBceDEzXHgwMVx4
MDFceDBiXHgyMFx4MDBceDQxXHgwMlx4NDZceDA0XHg0MFx4NDFceDAwXHgxM1x4MDFceDAyXHgw
Ylx4NDFceDAwXHgwYlx4OGJceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg0Mlx4MDFceDQx
XHgwZFx4MTNceDE2XHgwMFx4MGJceDlhXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NTBc
eDA0XHg3ZVx4MjBceDAxXHgwNVx4MjBceDAwXHg0Mlx4MDFceDdkXHgyMFx4MDBceDIwXHgwMVx4
N2VceDQxXHgwZFx4MTNceDE2XHgwMFx4MGJceDBiXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgy
MFx4MDBceDQ1XHgwNFx4N2ZceDQxXHgyY1x4MDVceDIwXHgwMFx4NDFceDAxXHg2Ylx4NDFceDBm
XHgxM1x4MDVceDAwXHgwYlx4MGJceDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NDVc
eDA0XHg3Zlx4NDFceGUzXHgwMFx4MDVceDIwXHgwMFx4NDFceDAxXHg2Ylx4NDFceDBlXHgxM1x4
MDVceDAwXHgwYlx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMTMKK2Fz
c2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtaTMyIiwgW10pLCAzMDYpOworCisvLyBy
ZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIxNAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgw
N1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYw
XHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBc
eDAxXHg3Zlx4NjBceDAwXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4
NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDM2XHgz
NFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
YVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgw
MFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgw
XHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBc
eDAxXHg5Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4MDFceDQyXHhlNFx4
MDJceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAi
cnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtaTY0Iiwg
W10pLCBpbnQ2NCgiMzU2IikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjE1City
dW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4
NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2
Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZFx4MDJceDg0
XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NzRc
eDc5XHg3MFx4NjVceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgw
Nlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAy
XHg0MFx4MTBceDAwXHhiY1x4NDNceDAwXHgyMFx4NzNceDQ1XHhiY1x4NDZceDQ1XHgwZFx4MDBc
eDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRf
cmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWYzMiIsIFtdKSwgMzg5MC4pCisKKy8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6MjE2CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2
MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAx
XHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFc
eDdmXHg2MFx4MDBceDAxXHg3Y1x4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4
NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4MzZceDM0XHgw
MFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgw
NVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiZFx4NDRceDAwXHgwMFx4
MDBceDAwXHgwMFx4YzhceGFlXHg0MFx4YmRceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgw
YiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBj
YWxsKCQxLCAidHlwZS1mNjQiLCBbXSksIDM5NDAuKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVj
dC53YXN0OjIxOAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBc
eDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4
NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgw
MVx4N2VceDAyXHg4Nlx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZj
XHg2NVx4MGFceDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDZlXHg2NFx4NjVceDc4XHgwMFx4MDZc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNc
eDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDFceDkyXHg4
MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHgwMVx4NDJceGU0XHgwMFx4MDFceDUx
XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkp
OyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1pbmRleCIsIFtdKSwgaW50
NjQoIjEwMCIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyMAorYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1maXJzdC1pMzIiLCBbXSksIDMyKTsKKworLy8gcmV0
dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMjEKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdc
eDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4
MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgw
MVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZk
XHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJc
eDczXHg3NFx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
MVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4
NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2
NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVc
eDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgw
YVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQw
XHgxMFx4MDBceDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBc
eDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+
IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWk2NCIsIFtdKSwgaW50NjQoIjY0IikpCisKKy8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6MjIyCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2
MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAx
XHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFc
eDdmXHg2MFx4MDBceDAxXHg3ZFx4MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4
NmZceDY0XHg3NVx4NmNceDY1XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3
M1x4NzRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1
XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVc
eDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2
ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAw
XHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFc
eDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4
MTBceDAwXHhiY1x4NDNceGMzXHhmNVx4YThceDNmXHhiY1x4NDZceDQ1XHgwZFx4MDBceDBmXHgw
Ylx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJu
KCgpID0+IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWYzMiIsIFtdKSwgMS4zMjAwMDAwNTI0NSkKKwor
Ly8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMjMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgw
MFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdm
XHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBc
eDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdjXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4
MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2
OVx4NzJceDczXHg3NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4M2RceDBhXHhkN1x4YTNceDcwXHgzZFx4ZmFceDNmXHhi
ZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIs
IFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWY2NCIs
IFtdKSwgMS42NCkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMjUKK2Fzc2VydF9y
ZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWkzMiIsIFtdKSwgMzIpOworCisvLyBy
ZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyNgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgw
N1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYw
XHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBc
eDAxXHg3Zlx4NjBceDAwXHgwMVx4N2VceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4
NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2
M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHgxMFx4MDBceDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgw
Ylx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJu
KCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1pNjQiLCBbXSksIGludDY0KCI2NCIpKQorCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyNworcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2RceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1
XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzM1x4MzJceDAwXHgwNlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3
M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4
MDBceDA2XHgwYVx4OWFceDgwXHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgw
MFx4MDJceDQwXHgxMFx4MDBceGJjXHg0M1x4MDBceDAwXHgwMFx4NDJceGJjXHg0Nlx4NDVceDBk
XHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFz
c2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWYzMiIsIFtdKSwgMzIuKQor
CisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyOAorcnVuKCgpID0+IGNhbGwoaW5zdGFu
Y2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBc
eDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4
N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3
MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2NceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNc
eDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5
XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2
ZVx4MDBceDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAw
XHgwMFx4MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBc
eDQwXHhiZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAg
InJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29u
ZC1mNjQiLCBbXSksIDY0LjEpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMwCity
dW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4
NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2
Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdl
XHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDA4XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5
XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2
ZVx4MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAw
XHgwMFx4MDJceDQwXHg0MVx4MDVceDQyXHgwMlx4MTBceDAwXHgwMVx4NDJceDAyXHgwMVx4NTFc
eDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFs1LCBpbnQ2NCgi
MiIpXSksIGludDY0KCIyIikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMxCity
dW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4
NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2
Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdl
XHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDA4XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5
XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2
ZVx4MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAw
XHgwMFx4MDJceDQwXHg0MVx4MDVceDQyXHgwNVx4MTBceDAwXHgwMVx4NDJceDA1XHgwMVx4NTFc
eDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFs1LCBpbnQ2NCgi
NSIpXSksIGludDY0KCI1IikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMyCity
dW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4
NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2
Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdl
XHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDA4XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5
XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2
ZVx4MDBceDA2XHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMVx4OTZceDgwXHg4MFx4ODBceDAw
XHgwMFx4MDJceDQwXHg0MVx4MGNceDQyXHgwNVx4MTBceDAwXHgwMVx4NDJceGY4XHgwMFx4MDFc
eDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBb
XSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTIsIGlu
dDY0KCI1IildKSwgaW50NjQoIjEyMCIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0
OjIzMworcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4
MDBceDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3
Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAy
XHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2Vc
eDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4
NmNceDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4
NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4
MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcy
XHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDExXHg0Mlx4MDJceDEwXHgwMFx4MDFceDQyXHgwMlx4
MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4i
LCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTcs
IGludDY0KCIyIildKSwgaW50NjQoIjIiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2Fz
dDoyMzQKK2Fzc2VydF90cmFwKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4
NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3
Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAy
XHg3Zlx4N2VceDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZc
eDY0XHg3NVx4NmNceDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4
MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4
NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4
MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDFceDhk
XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDAwXHg0Mlx4MDJceDEwXHgwMFx4MGZc
eDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF90cmFw
KCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFswLCBpbnQ2NCgiMiIpXSkpCisKKy8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6MjM1Cithc3NlcnRfdHJhcCgoKSA9PiBjYWxsKGluc3RhbmNl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgw
MFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdm
XHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4
MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNceDcwXHg2
MVx4NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAw
XHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5M1x4ODBc
eDgwXHg4MFx4MDBceDAxXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgwZlx4
NDJceDAyXHgxMFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtd
KSk7ICAvLyBhc3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTUsIGludDY0
KCIyIildKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMzYKK2Fzc2VydF90cmFw
KCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
MVx4YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZm
XHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZc
eDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4
MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgw
OFx4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4
NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZl
XHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4
MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1
Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgw
XHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVc
eDAwXHgwNlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDFceDhkXHg4MFx4ODBceDgwXHgwMFx4
MDBceDAyXHg0MFx4NDFceDE0XHg0Mlx4MDJceDEwXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBv
cnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDEsICJk
aXNwYXRjaCIsIFsyMCwgaW50NjQoIjIiKV0pKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53
YXN0OjIzNworYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAw
XHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFc
eDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4
MDJceDdmXHg3ZVx4MDFceDdlXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2
Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAw
XHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5
XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1
XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBc
eDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMVx4
OGRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0MVx4N2ZceDQyXHgwMlx4MTBceDAwXHgw
Zlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3Ry
YXAoKCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoIiwgWy0xLCBpbnQ2NCgiMiIpXSkpCisKKy8vIHJl
dHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjM4Cithc3NlcnRfdHJhcCgoKSA9PiBjYWxsKGluc3Rh
bmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgw
XHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFc
eDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4
NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4
MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNceDcw
XHg2MVx4NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZc
eDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdc
eDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5N1x4
ODBceDgwXHg4MFx4MDBceDAxXHg5MVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHhl
N1x4ODRceGNlXHhjMlx4MDRceDQyXHgwMlx4MTBceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9y
dHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbCgkMSwgImRp
c3BhdGNoIiwgWzFfMjEzXzQzMl80MjMsIGludDY0KCIyIildKSkKKworLy8gcmV0dXJuX2NhbGxf
aW5kaXJlY3Qud2FzdDoyNDAKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4
MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgw
MVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYw
XHgwMVx4N2ZceDAxXHg3ZVx4MDJceDhmXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZc
eDY0XHg3NVx4NmNceDY1XHgxM1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgyZFx4
NzNceDc0XHg3Mlx4NzVceDYzXHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgwNlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNc
eDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3
NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4
NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1
XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MDJceDQwXHg0MVx4MDVceDEwXHgwMFx4MDFceDQyXHgwOVx4MDFceDUxXHg0NVx4
MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8g
YXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFs1XSks
IGludDY0KCI5IikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjQxCitydW4oKCkg
PT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhh
NFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYw
XHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFc
eDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4
ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2
OVx4NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1
XHg3Mlx4NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk5XHg4MFx4
ODBceDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDA1XHgx
MFx4MDBceDAxXHg0Mlx4MDlceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBl
eHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgk
MSwgImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBbNV0pLCBpbnQ2NCgiOSIpKQorCisvLyByZXR1cm5f
Y2FsbF9pbmRpcmVjdC53YXN0OjI0MgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBc
eDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4
NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3
Zlx4NjBceDAxXHg3Zlx4MDFceDdlXHgwMlx4OGZceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZk
XHg2Zlx4NjRceDc1XHg2Y1x4NjVceDEzXHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4Njhc
eDJkXHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYxXHg2Y1x4MDBceDA2XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFc
eDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3
Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgw
XHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgwY1x4MTBceDAwXHgwMVx4NDJceDgwXHg5M1x4MTZc
eDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVu
IiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoLXN0cnVj
dHVyYWwiLCBbMTJdKSwgaW50NjQoIjM2Ml84ODAiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJl
Y3Qud2FzdDoyNDMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYw
XHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2Zc
eDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4
N2ZceDAxXHg3ZVx4MDJceDhmXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3
NVx4NmNceDY1XHgxM1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgyZFx4NzNceDc0
XHg3Mlx4NzVceDYzXHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgwNlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3
M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4
MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBceDAwXHgw
MFx4MDJceDQwXHg0MVx4MTFceDEwXHgwMFx4MDFceDQyXHgwOVx4MDFceDUxXHg0NVx4MGRceDAw
XHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0
X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxN10pLCBpbnQ2
NCgiOSIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0NAorYXNzZXJ0X3RyYXAo
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4
Zlx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0
XHg2OVx4NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRc
eDc1XHg3Mlx4NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4
ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDkxXHg4
MFx4ODBceDgwXHgwMFx4MDFceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDBi
XHgxMFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAv
LyBhc3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxMV0p
KQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0NQorYXNzZXJ0X3RyYXAoKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4ODFc
eDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2OVx4
NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1XHg3
Mlx4NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDkxXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDEwXHgxMFx4
MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3Nl
cnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxNl0pKQorCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0NworYXNzZXJ0X3JldHVybigoKSA9PiBjYWxs
KCQxLCAiY2FsbC10YWIiLCBbMF0pLCAzMDYpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53
YXN0OjI0OAorYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiY2FsbC10YWIiLCBbMV0pLCAz
MDcpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0OQorYXNzZXJ0X3JldHVybigo
KSA9PiBjYWxsKCQxLCAiY2FsbC10YWIiLCBbMl0pLCAzMDgpOworCisvLyByZXR1cm5fY2FsbF9p
bmRpcmVjdC53YXN0OjI1MQorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4
NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgw
MFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAx
XHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBc
eDAxXHg3ZVx4MDFceDdlXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4
NjRceDc1XHg2Y1x4NjVceDAzXHg2Nlx4NjFceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAw
XHgwNlx4MGFceDk5XHg4MFx4ODBceDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBc
eDAyXHg0MFx4NDJceDAwXHgxMFx4MDBceDAxXHg0Mlx4MDFceDAxXHg1MVx4NDVceDBkXHgwMFx4
MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9y
ZXR1cm4oKCkgPT4gY2FsbCgkMSwgImZhYyIsIFtpbnQ2NCgiMCIpXSksIGludDY0KCIxIikpCisK
Ky8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjUyCitydW4oKCkgPT4gY2FsbChpbnN0YW5j
ZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4
MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3
Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcw
XHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2VceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBc
eDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDY2XHg2MVx4NjNceDAwXHgwNlx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3
Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDcz
XHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4
NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4
ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgw
M1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgw
XHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFc
eDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBb
XSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZmFjIiwgW2ludDY0KCIxIild
KSwgaW50NjQoIjEiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNTMKK3J1bigo
KSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4
NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgw
MVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3ZVx4MDJceGZm
XHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NjZc
eDYxXHg2M1x4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4
MFx4MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwNVx4MTBceDAw
XHgwMVx4NDJceGY4XHgwMFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4
cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAiZmFjIiwgW2ludDY0KCI1IildKSwgaW50NjQoIjEyMCIpKQorCisvLyByZXR1cm5fY2FsbF9p
bmRpcmVjdC53YXN0OjI1NAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4
NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgw
MFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAx
XHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBc
eDAxXHg3ZVx4MDFceDdlXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4
NjRceDc1XHg2Y1x4NjVceDAzXHg2Nlx4NjFceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAw
XHgwNlx4MGFceGEyXHg4MFx4ODBceDgwXHgwMFx4MDFceDljXHg4MFx4ODBceDgwXHgwMFx4MDBc
eDAyXHg0MFx4NDJceDE5XHgxMFx4MDBceDAxXHg0Mlx4ODBceDgwXHg4MFx4ZGVceDg3XHg5Mlx4
ZWNceGNmXHhlMVx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBv
cnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwg
ImZhYyIsIFtpbnQ2NCgiMjUiKV0pLCBpbnQ2NCgiN18wMzRfNTM1XzI3N181NzNfOTYzXzc3NiIp
KQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI1NgorYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAiZXZlbiIsIFswXSksIDQ0KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDoyNTcKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV2ZW4iLCBbMV0pLCA5OSk7
CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjU4Cithc3NlcnRfcmV0dXJuKCgpID0+
IGNhbGwoJDEsICJldmVuIiwgWzEwMF0pLCA0NCk7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6MjU5Cithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzc3XSksIDk5
KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNjAKK2Fzc2VydF9yZXR1cm4oKCkg
PT4gY2FsbCgkMSwgImV2ZW4iLCBbMTAwXzAwMF0pLCA0NCk7CisKKy8vIHJldHVybl9jYWxsX2lu
ZGlyZWN0Lndhc3Q6MjYxCithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzEx
MV8xMTFdKSwgOTkpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2MgorYXNzZXJ0
X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzBdKSwgOTkpOworCisvLyByZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0OjI2MworYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwg
WzFdKSwgNDQpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2NAorYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzIwMF0pLCA5OSk7CisKKy8vIHJldHVybl9jYWxs
X2luZGlyZWN0Lndhc3Q6MjY1Cithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBb
NzddKSwgNDQpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2NgorYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzIwMF8wMDJdKSwgOTkpOworCisvLyByZXR1cm5f
Y2FsbF9pbmRpcmVjdC53YXN0OjI2NworYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2Rk
IiwgWzMwMF8wMDNdKSwgNDQpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI3Mgor
YXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2
NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJl
Y3Qud2FzdDoyODQKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4
NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6Mjk2Cithc3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFc
eDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIp
OworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjMwOAorYXNzZXJ0X21hbGZvcm1lZCgi
XHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4NmZc
eDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDozMjAKK2Fzc2Vy
dF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIw
XHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndh
c3Q6MzMyCithc3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2
ZFx4NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0OjM0NAorYXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4
NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKKwor
Ly8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDozNTEKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2Nc
eDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4
NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MzYxCithc3NlcnRfbWFs
Zm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFc
eDc1XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjM3
MQorYXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1
XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDozODMKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2
Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJl
dHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6Mzk4Cithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBc
eDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDBhXHg4ZFx4ODBceDgwXHg4MFx4
MDBceDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7
CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDA2CisvLyBOT1RFOgorLy8gICAobW9k
dWxlCisvLyAgICAodHlwZSAoZnVuYykpCisvLyAgICAodGFibGUgMCBmdW5jcmVmKQorLy8gICAg
KGZ1bmMgJHR5cGUtdm9pZC12cy1udW0gKGkzMi5lcXogKHJldHVybl9jYWxsX2luZGlyZWN0ICh0
eXBlIDApIChpMzIuY29uc3QgMCkpKSkKKy8vICApCisvLyBUaGlzIHZhbGlkYXRlcyBzaW5jZSB1
bnJlYWNoYWJsZSBiaW5hcnkgb3BzIGFyZSBpZ25vcmVkIGluIFdhc21GdW5jdGlvblBhcnNlci4K
Ky8vYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDFceDAwXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDhl
XHg4MFx4ODBceDgwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4MTNc
eDAwXHgwMFx4NDVceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDE0Cith
c3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4
ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAxXHg3ZVx4NjBceDAwXHgwMFx4MDNceDgyXHg4
MFx4ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAw
XHgwMFx4MGFceDhlXHg4MFx4ODBceDgwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDBc
eDQxXHgwMFx4MTNceDAwXHgwMFx4NDVceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6NDIzCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDFceDdmXHgwMFx4NjBceDAwXHgw
MFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAw
XHgwMVx4NzBceDAwXHgwMFx4MGFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDFceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxf
aW5kaXJlY3Qud2FzdDo0MzEKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMlx4N2NceDdmXHgw
MFx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgw
XHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8g
cmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo0NDAKK2xldCAkMiA9IGluc3RhbmNlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYw
XHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg4Zlx4ODBceDgwXHg4MFx4MDBceDAxXHg4OVx4
ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDFceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKwor
Ly8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo0NDYKK2xldCAkMyA9IGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4
ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5
Mlx4ODBceDgwXHg4MFx4MDBceDAwXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDQw
XHg0MVx4MDFceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDo0NTQKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMVx4N2ZceDAwXHg2MFx4
MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4ODBceDgwXHg4
MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OGVceDgwXHg4MFx4ODBceDAwXHgwMVx4ODhceDgw
XHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgwMVx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0
dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo0NjIKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMVx4
N2ZceDAwXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4
NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OGZceDgwXHg4MFx4ODBceDAw
XHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHg0Mlx4MDFceDEzXHgwMFx4MDBc
eDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDcxCithc3NlcnRfaW52YWxp
ZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBceDgwXHg4MFx4
MDBceDAyXHg2MFx4MDJceDdmXHg3Zlx4MDBceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4
MFx4MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBh
XHg5MFx4ODBceDgwXHg4MFx4MDBceDAxXHg4YVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMVx4NDFc
eDAxXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6NDgxCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDJceDdmXHg3Zlx4MDBceDYwXHgw
MFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgw
XHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg5MFx4ODBceDgwXHg4MFx4MDBceDAxXHg4YVx4ODBc
eDgwXHg4MFx4MDBceDAwXHg0MVx4MDFceDAxXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisK
Ky8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDkxCithc3NlcnRfaW52YWxpZCgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2
MFx4MDJceDdmXHg3Y1x4MDBceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAx
XHgwMVx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg5OFx4ODBc
eDgwXHg4MFx4MDBceDAxXHg5Mlx4ODBceDgwXHg4MFx4MDBceDAwXHg0NFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMFx4ZjBceDNmXHg0MVx4MDFceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKwor
Ly8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo1MDEKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYw
XHgwMlx4N2NceDdmXHgwMFx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDk4XHg4MFx4
ODBceDgwXHgwMFx4MDFceDkyXHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMVx4NDRceDAwXHgw
MFx4MDBceDAwXHgwMFx4MDBceGYwXHgzZlx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOworCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjUxNQorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBc
eDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwNFx4ODRceDgwXHg4MFx4
ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDFceDg3XHg4
MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAxXHgwMFx4MGIiKTsKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDo1MjIKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZk
XHgwMVx4MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgwMFx4MDBc
eDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4
MDFceDcwXHgwMFx4MDBceDBhXHg5MVx4ODBceDgwXHg4MFx4MDBceDAxXHg4Ylx4ODBceDgwXHg4
MFx4MDBceDAwXHg0MVx4MDBceDEzXHg5NFx4OThceGRiXHhlMlx4MDNceDAwXHgwYiIpOworCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjUzMworYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwNFx4ODVceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBc
eDAxXHgwMlx4MDJceDA5XHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4NDFceDAwXHgwYlx4
MDJceDAwXHgwMCIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVy
bi1jYWxsLWluZGlyZWN0LmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxs
LWluZGlyZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3NmJjYzUxNDgzOGJhYWUxZTM4ZWFiMTg1MzAxNDY4
M2YzOTJjNmEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwvcmV0
dXJuLWNhbGwtaW5kaXJlY3QuanMKQEAgLTAsMCArMSwxNDYgQEAKK2ltcG9ydCAqIGFzIGFzc2Vy
dCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi9yZXR1cm4t
Y2FsbC11dGlscy5qcycKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCitj
b25zdCB0cnlSZXR1cm5DYWxsID0gdXRpbHMudHJ5UmV0dXJuQ2FsbAorY29uc3QgdHJ5UmV0dXJu
Q2FsbEluZGlyZWN0ID0gdXRpbHMudHJ5UmV0dXJuQ2FsbEluZGlyZWN0Citjb25zdCBjcmVhdGVG
dW5jdGlvbiA9IHV0aWxzLmNyZWF0ZUZ1bmN0aW9uCitjb25zdCBjcmVhdGVFeHBvcnRzID0gdXRp
bHMuY3JlYXRlRXhwb3J0cworY29uc3QgY3JlYXRlVHlwZXMgPSB1dGlscy5jcmVhdGVUeXBlcwor
Y29uc3QgY3JlYXRlQ29kZSA9IHV0aWxzLmNyZWF0ZUNvZGUKK2NvbnN0IHZlcmJvc2UgPSAwCisK
K2NvbnN0IFNfSTMyXzEgPSBBcnJheS5mcm9tKHtsZW5ndGg6IDF9LCAodmFsLCBpbmRleCkgPT4g
ImkzMiIpOworY29uc3QgU19JMzJfNCA9IEFycmF5LmZyb20oe2xlbmd0aDogNH0sICh2YWwsIGlu
ZGV4KSA9PiAiaTMyIik7CisKK2xldCBpbnN0MF9mdW5jdGlvbnMgPSBbXQorbGV0IGluc3QxX2Z1
bmN0aW9ucyA9IFtdCitsZXQgaW5zdDJfZnVuY3Rpb25zID0gW10KKworY29uc3QgY3JlYXRlVGFp
bEZ1bmN0aW9uID0gKG5hbWUsIHNpZ25hdHVyZSwgZnVuY3Rpb25zLCBpbnN0YW5jZUlkKSA9PiB7
CisgIHJldHVybiBjcmVhdGVGdW5jdGlvbihuYW1lLCBzaWduYXR1cmUsCisgICAoYnVpbGRlcikg
PT4geworICAgICByZXR1cm4gYnVpbGRlci5GdW5jdGlvbihuYW1lLCBzaWduYXR1cmUpLkkzMkNv
bnN0KGluc3RhbmNlSWQpLkVuZCgpCisgICB9LCBmdW5jdGlvbnMpOworfQorCitjb25zdCBjcmVh
dGVNYWluID0gKG5hbWUsIGNhbGxlZXMsIHNpZ25hdHVyZSwgZnVuY3Rpb25zKSA9PiB7CisgIGxl
dCByZXN1bHQgPSBjcmVhdGVGdW5jdGlvbihuYW1lLCBzaWduYXR1cmUsCisKKyAgICAoYnVpbGRl
ciwgdXNlUmV0dXJuQ2FsbCkgPT4geworICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuRnVuY3Rpb24o
bmFtZSwgc2lnbmF0dXJlKQorICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsbGVlcy5sZW5n
dGg7ICsraSkgeworICAgICAgICBidWlsZGVyID0gYnVpbGRlci5HZXRMb2NhbCgwKQorICAgICAg
ICBidWlsZGVyID0gYnVpbGRlci5DYWxsKGNhbGxlZXNbaV0uaW5kZXgpCisgICAgICB9CisgICAg
ICByZXR1cm4gYnVpbGRlci5FbmQoKQorICAgIH0sZnVuY3Rpb25zKTsKKyAgcmV0dXJuIHJlc3Vs
dDsKK30KKworY29uc3QgY3JlYXRlRW50cnlwb2ludCA9IChuYW1lLCBjYWxsZWUsIHNpZ25hdHVy
ZSwgZnVuY3Rpb25zLCB0YWJsZU9mZnNldCkgPT4geworICBsZXQgcmVzdWx0ID0gY3JlYXRlRnVu
Y3Rpb24obmFtZSwgc2lnbmF0dXJlLAorICAgIChidWlsZGVyLCB1c2VSZXR1cm5DYWxsKSA9PiB7
CisgICAgICByZXR1cm4gdHJ5UmV0dXJuQ2FsbChidWlsZGVyLkZ1bmN0aW9uKG5hbWUsIHNpZ25h
dHVyZSksIHVzZVJldHVybkNhbGwsIGNhbGxlZS5pbmRleCkuRW5kKCkKKyAgICB9LGZ1bmN0aW9u
cyk7CisgIHJldHVybiB7CisgICAgZnVuY3Rpb246IHJlc3VsdCwKKyAgICB0YWJsZU9mZnNldDog
dGFibGVPZmZzZXQKKyAgfQorfQorCitjb25zdCBjcmVhdGVUcmFtcG9saW5lID0gKG5hbWUsIGVu
dHJ5cG9pbnQsIHNpZ25hdHVyZSwgZnVuY3Rpb25zKSA9PiB7CisgIGxldCByZXN1bHQgPSBjcmVh
dGVGdW5jdGlvbihuYW1lLCBzaWduYXR1cmUsCisgICAgKGJ1aWxkZXIsIHVzZVJldHVybkNhbGwp
ID0+IHsKKyAgICAgIHJldHVybiB0cnlSZXR1cm5DYWxsSW5kaXJlY3QoYnVpbGRlci5GdW5jdGlv
bihuYW1lLCBzaWduYXR1cmUpLCB1c2VSZXR1cm5DYWxsLCBlbnRyeXBvaW50LnRhYmxlT2Zmc2V0
LCAwKS5FbmQoKTsKKyAgICB9LGZ1bmN0aW9ucyk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Nv
bnN0IHRhaWxTaWduYXR1cmUgPSB7IHBhcmFtczogW10sIHJldDogU19JMzJfMSB9CisKK2NvbnN0
IGluc3QxX3RhaWwgPSBjcmVhdGVUYWlsRnVuY3Rpb24oJ2luc3QxX3RhaWwnLCB0YWlsU2lnbmF0
dXJlLCBpbnN0MV9mdW5jdGlvbnMsIC8qaW5zdGFuY2VJZCovMSk7Citjb25zdCBpbnN0MV9lbnRy
eXBvaW50ID0gY3JlYXRlRW50cnlwb2ludCgnaW5zdDFfZW50cnlwb2ludCcsIGluc3QxX3RhaWws
IHRhaWxTaWduYXR1cmUsIGluc3QxX2Z1bmN0aW9ucywgLyp0YWJsZU9mZnNldCovMCk7CisKK2Nv
bnN0IGluc3QyX3RhaWwgPSBjcmVhdGVUYWlsRnVuY3Rpb24oJ2luc3QyX3RhaWwnLCB0YWlsU2ln
bmF0dXJlLCBpbnN0Ml9mdW5jdGlvbnMsIC8qaW5zdGFuY2VJZCovMik7Citjb25zdCBpbnN0Ml9l
bnRyeXBvaW50ID0gY3JlYXRlRW50cnlwb2ludCgnaW5zdDJfZW50cnlwb2ludCcsIGluc3QyX3Rh
aWwsIHRhaWxTaWduYXR1cmUsIGluc3QyX2Z1bmN0aW9ucywgLyp0YWJsZU9mZnNldCovMSk7CisK
KyBjb25zdCB0cmFtcG9saW5lX2luc3QxID0gY3JlYXRlVHJhbXBvbGluZSgnaW5zdDBfdHJhbXBv
bGluZV9pbnN0MScsIGluc3QxX2VudHJ5cG9pbnQsIHRhaWxTaWduYXR1cmUsIGluc3QwX2Z1bmN0
aW9ucyk7Citjb25zdCB0cmFtcG9saW5lX2luc3QyID0gY3JlYXRlVHJhbXBvbGluZSgnaW5zdDBf
dHJhbXBvbGluZV9pbnN0MicsIGluc3QyX2VudHJ5cG9pbnQsIHRhaWxTaWduYXR1cmUsIGluc3Qw
X2Z1bmN0aW9ucyk7Citjb25zdCBpbnN0MF9tYWluID0gY3JlYXRlTWFpbignaW5zdDBfbWFpbics
IFt0cmFtcG9saW5lX2luc3QxLCB0cmFtcG9saW5lX2luc3QyXSwgeyBwYXJhbXM6IFNfSTMyXzEs
IHJldDogU19JMzJfNH0sIGluc3QwX2Z1bmN0aW9ucyk7CisKK2NvbnN0IHRhYmxlSW5mbyA9IHtp
bml0aWFsOjIsIGVsZW1lbnQ6ImZ1bmNyZWYifQorY29uc3QgdGFibGUgPSBuZXcgV2ViQXNzZW1i
bHkuVGFibGUodGFibGVJbmZvKQorbGV0IGltcG9ydE9iamVjdCA9IHsgaW1wOiB7IHRhYmxlIH0g
fTsKKworCisvLyBpbnN0MF9tYWluIC0+IFtpbnN0MV90cmFtcG9saW5lLCBpbnN0Ml90cmFtcG9s
aW5lXQorLy8gaW5zdDFfdHJhbXBvbGluZSAtPiBpbnN0MV9lbnRyeXBvaW50IC0+IFtpbnN0MV90
YWlsXQorLy8gaW5zdDJfdHJhbXBvbGluZSAtPiBpbnN0Ml9lbnRyeXBvaW50IC0+IFtpbnN0Ml90
YWlsXQorLy8KKy8vIHRhYmxlOgorLy8gaW5zdDFfZW50cnlwb2ludAorLy8gaW5zdDJfZW50cnlw
b2ludAorCisvLyBUZXN0IHdhc20gaW5zdGFuY2UgYWNyb3NzIGNhbGxzCisKK2NvbnN0IHJ1blRl
c3QgPSAodXNlUmV0dXJuQ2FsbCkgPT4geworCisgICAgbGV0IGNyZWF0ZUJ1aWxkZXIgPSAodXNl
UmV0dXJuQ2FsbCkgPT4geworICAgICAgIGxldCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAg
ICAgICBidWlsZGVyID0gY3JlYXRlVHlwZXMoYnVpbGRlciwgW3RhaWxTaWduYXR1cmUsIHRhaWxT
aWduYXR1cmVdKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAuVGFibGUoImltcCIsICJ0
YWJsZSIsIHRhYmxlSW5mbykKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVu
ZCgpCisgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgLlRhYmxlKHRhYmxlSW5mbykKKyAgICAg
ICAgLkVuZCgpCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVFeHBvcnRzKGJ1aWxkZXIsIGluc3Qx
X2Z1bmN0aW9ucykKKyAgICAgICAgLkVsZW1lbnQoKQorICAgICAgICAgICAgLkVsZW1lbnQoe29m
ZnNldDogMCwgZnVuY3Rpb25JbmRpY2VzOiBbMV19KQorICAgICAgICAuRW5kKCkKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZUNvZGUoYnVpbGRlciwgaW5zdDFfZnVuY3Rpb25zLCB1c2VSZXR1cm5DYWxs
KQorICAgIH0KKworICAgIGNvbnN0IGluc3QxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5l
dyBXZWJBc3NlbWJseS5Nb2R1bGUoY3JlYXRlQnVpbGRlcih1c2VSZXR1cm5DYWxsKS5XZWJBc3Nl
bWJseSgpLmdldCgpKSwgaW1wb3J0T2JqZWN0KTsKKworICAgIGNyZWF0ZUJ1aWxkZXIgPSAodXNl
UmV0dXJuQ2FsbCkgPT4geworICAgICAgIGxldCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAg
ICAgICBidWlsZGVyID0gY3JlYXRlVHlwZXMoYnVpbGRlciwgW3RhaWxTaWduYXR1cmUsIHRhaWxT
aWduYXR1cmVdKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAuVGFibGUoImltcCIsICJ0
YWJsZSIsIHRhYmxlSW5mbykKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVu
ZCgpCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVFeHBvcnRzKGJ1aWxkZXIsIGluc3QyX2Z1bmN0
aW9ucykKKyAgICAgICAgLkVsZW1lbnQoKQorICAgICAgICAgICAgLkVsZW1lbnQoe29mZnNldDog
MSwgZnVuY3Rpb25JbmRpY2VzOiBbMV19KQorICAgICAgICAuRW5kKCkKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZUNvZGUoYnVpbGRlciwgaW5zdDJfZnVuY3Rpb25zLCB1c2VSZXR1cm5DYWxsKQorICAg
IH0KKworICAgIGNvbnN0IGluc3QyID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoY3JlYXRlQnVpbGRlcih1c2VSZXR1cm5DYWxsKS5XZWJBc3NlbWJseSgp
LmdldCgpKSwgaW1wb3J0T2JqZWN0KTsKKworICAgIGNyZWF0ZUJ1aWxkZXIgPSAodXNlUmV0dXJu
Q2FsbCkgPT4geworICAgICAgIGxldCBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKQorICAgICAgICBi
dWlsZGVyID0gY3JlYXRlVHlwZXMoYnVpbGRlciwgW3RhaWxTaWduYXR1cmUsIHRhaWxTaWduYXR1
cmVdKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAuVGFibGUoImltcCIsICJ0YWJsZSIs
IHRhYmxlSW5mbykKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisg
ICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVFeHBvcnRzKGJ1aWxkZXIsIGluc3QwX2Z1bmN0aW9ucykK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZUNvZGUoYnVpbGRlciwgaW5zdDBfZnVuY3Rpb25zLCB1c2VS
ZXR1cm5DYWxsKQorICAgIH0KKworICAgIGNvbnN0IGluc3QwID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoY3JlYXRlQnVpbGRlcih1c2VSZXR1cm5DYWxs
KS5XZWJBc3NlbWJseSgpLmdldCgpKSwgaW1wb3J0T2JqZWN0KTsKKworICAgIHJldHVybiBpbnN0
MC5leHBvcnRzWydpbnN0MF9tYWluJ10oKQorfQorCitjb25zdCBsaHNSZXN1bHQgPSBydW5UZXN0
KC8qdXNlUmV0dXJuQ2FsbCovdHJ1ZSkKK2NvbnN0IHJoc1Jlc3VsdCA9IHJ1blRlc3QoLyp1c2VS
ZXR1cm5DYWxsKi9mYWxzZSkKK2lmICh2ZXJib3NlKSB7CisgICAgcHJpbnQobGhzUmVzdWx0KQor
ICAgIHByaW50KHJoc1Jlc3VsdCkKK30KK2Fzc2VydC5lcShsaHNSZXN1bHQsIHJoc1Jlc3VsdCkK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC9yZXR1cm4tY2FsbC11dGlscy5q
cyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC9yZXR1cm4tY2FsbC11dGlscy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMTc2NDg4ZDZjNDg4OTMxMGMxYzY0YWVmODdhM2MyZDgyZjYwZjQ4Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLXV0aWxzLmpzCkBA
IC0wLDAgKzEsNDIgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCitl
eHBvcnQgY29uc3QgdHJ5UmV0dXJuQ2FsbCA9IChidWlsZGVyLCB1c2VSZXR1cm5DYWxsLCBpbmRl
eCkgPT4geworICByZXR1cm4gdXNlUmV0dXJuQ2FsbCA/IGJ1aWxkZXIuUmV0dXJuQ2FsbChpbmRl
eCkgOiBidWlsZGVyLkNhbGwoaW5kZXgpCit9CisKK2V4cG9ydCBjb25zdCB0cnlSZXR1cm5DYWxs
SW5kaXJlY3QgPSAoYnVpbGRlciwgdXNlUmV0dXJuQ2FsbCwgaW5kZXgsIHRhYmxlSW5kZXgpID0+
IHsKKyAgbGV0IG5ld0J1aWxkZXIgPSBidWlsZGVyLkkzMkNvbnN0KGluZGV4KTsKKyAgcmV0dXJu
IHVzZVJldHVybkNhbGwgPyBuZXdCdWlsZGVyLlJldHVybkNhbGxJbmRpcmVjdChpbmRleCwgdGFi
bGVJbmRleCkgOiBuZXdCdWlsZGVyLkNhbGxJbmRpcmVjdChpbmRleCwgdGFibGVJbmRleCkKK30K
KworZXhwb3J0IGNvbnN0IGNyZWF0ZUZ1bmN0aW9uID0gKG5hbWUsIHNpZ25hdHVyZSwgYm9keSwg
YXJyYXkpID0+IHsKKyAgbGV0IHJlc3VsdCA9IHsKKyAgICBpbmRleDogYXJyYXkubGVuZ3RoLAor
ICAgIG5hbWU6IG5hbWUsCisgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsCisgICAgYm9keTogYm9k
eQorICB9CisgIGFycmF5LnB1c2gocmVzdWx0KQorICByZXR1cm4gcmVzdWx0Cit9CisKK2V4cG9y
dCBjb25zdCBjcmVhdGVFeHBvcnRzID0gKGJ1aWxkZXIsIGZ1bmN0aW9ucykgPT4geworICAgIGxl
dCBuZXdCdWlsZGVyID0gYnVpbGRlci5FeHBvcnQoKQorICAgIGZvciAoY29uc3QgZiBvZiBmdW5j
dGlvbnMpCisgICAgICBuZXdCdWlsZGVyID0gbmV3QnVpbGRlci5GdW5jdGlvbihmWyduYW1lJ10p
CisgICAgcmV0dXJuIG5ld0J1aWxkZXIuRW5kKCkKK30KKworZXhwb3J0IGNvbnN0IGNyZWF0ZVR5
cGVzID0gKGJ1aWxkZXIsIHNpZ25hdHVyZXMpID0+IHsKKyAgICBsZXQgbmV3QnVpbGRlciA9IGJ1
aWxkZXIuVHlwZSgpCisgICAgZm9yIChjb25zdCBzIG9mIHNpZ25hdHVyZXMpCisgICAgICBuZXdC
dWlsZGVyID0gbmV3QnVpbGRlci5GdW5jKHNbJ3BhcmFtcyddLCBzWydyZXQnXSkKKyAgICByZXR1
cm4gbmV3QnVpbGRlci5FbmQoKQorfQorCitleHBvcnQgY29uc3QgY3JlYXRlQ29kZSA9IChidWls
ZGVyLCBmdW5jdGlvbnMsIHVzZVJldHVybkNhbGwpID0+IHsKKyAgICBsZXQgbmV3QnVpbGRlciA9
IGJ1aWxkZXIuQ29kZSgpCisgICAgZm9yIChjb25zdCBmIG9mIGZ1bmN0aW9ucykKKyAgICAgIG5l
d0J1aWxkZXIgPSBmWydib2R5J10obmV3QnVpbGRlciwgdXNlUmV0dXJuQ2FsbCkKKyAgICByZXR1
cm4gbmV3QnVpbGRlci5FbmQoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1j
YWxsL3JldHVybi1jYWxsLmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxs
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMyNTIwZjAxNDA4NmVmY2Q4MjY5OTY5ZmQ5MWM5ODNiM2Y4MDllODIK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwvcmV0dXJuLWNhbGwu
anMKQEAgLTAsMCArMSwxMjIgQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQu
anMnOworaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi9yZXR1cm4tY2FsbC11dGlscy5qcycKK2lt
cG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCitjb25zdCB0cnlSZXR1cm5DYWxs
ID0gdXRpbHMudHJ5UmV0dXJuQ2FsbAorY29uc3QgY3JlYXRlRnVuY3Rpb24gPSB1dGlscy5jcmVh
dGVGdW5jdGlvbgorY29uc3QgY3JlYXRlRXhwb3J0cyA9IHV0aWxzLmNyZWF0ZUV4cG9ydHMKK2Nv
bnN0IGNyZWF0ZVR5cGVzID0gdXRpbHMuY3JlYXRlVHlwZXMKK2NvbnN0IGNyZWF0ZUNvZGUgPSB1
dGlscy5jcmVhdGVDb2RlCitjb25zdCB2ZXJib3NlID0gMAorY29uc3QgcmFuZG9tID0gMQorCitj
b25zdCBTX0kzMl8zID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiAzfSwgKHZhbCwgaW5kZXgpID0+ICJp
MzIiKTsKK2NvbnN0IFNfSTMyXzUgPSBBcnJheS5mcm9tKHtsZW5ndGg6IDV9LCAodmFsLCBpbmRl
eCkgPT4gImkzMiIpOworY29uc3QgU19JMzJfNiA9IEFycmF5LmZyb20oe2xlbmd0aDogNn0sICh2
YWwsIGluZGV4KSA9PiAiaTMyIik7Citjb25zdCBTX0kzMl83ID0gQXJyYXkuZnJvbSh7bGVuZ3Ro
OiA3fSwgKHZhbCwgaW5kZXgpID0+ICJpMzIiKTsKK2NvbnN0IFNfSTMyXzggPSBBcnJheS5mcm9t
KHtsZW5ndGg6IDh9LCAodmFsLCBpbmRleCkgPT4gImkzMiIpOworY29uc3QgU19JMzJfMTAgPSBB
cnJheS5mcm9tKHtsZW5ndGg6IDEwfSwgKHZhbCwgaW5kZXgpID0+ICJpMzIiKTsKKworbGV0IGZ1
bmN0aW9ucyA9IFtdCitsZXQgZW50cnlwb2ludHMgPSBbXQorCitjb25zdCBwb3B1bGF0ZVN0YWNr
STMyID0gKGJ1aWxkZXIsIGNhbGxlckFyaXR5LCBjYWxsZWVBcml0eSkgPT4geworICBsZXQgaSA9
IDAKKyAgZm9yICg7IGkgPCBNYXRoLm1pbihjYWxsZXJBcml0eS5sZW5ndGgsIGNhbGxlZUFyaXR5
Lmxlbmd0aCk7ICsraSkgeworICAgIGJ1aWxkZXIgPSBidWlsZGVyLkdldExvY2FsKGkpCisgIH0K
KyAgZm9yICg7IGkgPCBjYWxsZWVBcml0eS5sZW5ndGg7ICsraSkgeworICAgIGJ1aWxkZXIgPSBi
dWlsZGVyLkkzMkNvbnN0KGkpCisgIH0KKyAgcmV0dXJuIGJ1aWxkZXIKK30KKworY29uc3QgY3Jl
YXRlVGFpbEZ1bmN0aW9uID0gKG5hbWUsIHNpZ25hdHVyZSkgPT4geworICByZXR1cm4gY3JlYXRl
RnVuY3Rpb24obmFtZSwgc2lnbmF0dXJlLAorICAgKGJ1aWxkZXIpID0+IHsKKyAgICAgbGV0IG5l
d0J1aWxkZXIgPSBidWlsZGVyLkZ1bmN0aW9uKG5hbWUsIHNpZ25hdHVyZSkKKyAgICAgcmV0dXJu
IHBvcHVsYXRlU3RhY2tJMzIobmV3QnVpbGRlciwgc2lnbmF0dXJlLnBhcmFtcywgc2lnbmF0dXJl
LnJldCkuRW5kKCk7CisgICB9LCBmdW5jdGlvbnMpOworfQorCitjb25zdCBnZW5lcmF0ZUFyZ3Vt
ZW50cyA9IChwYXJhbXMpID0+IHsKKyAgcmV0dXJuIHBhcmFtcy5tYXAoKCkgPT4geyByZXR1cm4g
TWF0aC5yYW5kb20oKSAqIDB4N2Y7IH0pCit9CisKK2NvbnN0IGNyZWF0ZVNpZ25hdHVyZSA9IChw
YXJhbXNMZW5ndGgsIHJldExlbmd0aCkgPT4geworICByZXR1cm4geworICAgIHBhcmFtczogQXJy
YXkuZnJvbSh7bGVuZ3RoOiBwYXJhbXNMZW5ndGh9LCAodixpKSA9PiAiaTMyIiksCisgICAgcmV0
OiBBcnJheS5mcm9tKHtsZW5ndGg6IHJldExlbmd0aH0sICh2LGkpID0+ICJpMzIiKSwKKyAgfQor
fQorCitjb25zdCBjcmVhdGVDYWxsZXIgPSAobmFtZSwgY2FsbGVlLCBzaWduYXR1cmUpID0+IHsK
KyAgbGV0IHJlc3VsdCA9IGNyZWF0ZUZ1bmN0aW9uKG5hbWUsIHNpZ25hdHVyZSwKKyAgICAoYnVp
bGRlciwgdXNlUmV0dXJuQ2FsbCkgPT4geworICAgICAgYnVpbGRlciA9IHBvcHVsYXRlU3RhY2tJ
MzIoYnVpbGRlci5GdW5jdGlvbihuYW1lLCBzaWduYXR1cmUpLCBzaWduYXR1cmUucGFyYW1zLCBj
YWxsZWUuc2lnbmF0dXJlLnBhcmFtcykKKyAgICAgIHJldHVybiB0cnlSZXR1cm5DYWxsKGJ1aWxk
ZXIsIHVzZVJldHVybkNhbGwsIGNhbGxlZS5pbmRleCkuRW5kKCk7CisgICAgfSxmdW5jdGlvbnMp
OworCisgIGVudHJ5cG9pbnRzLnB1c2goe2NhbGxlcjogcmVzdWx0LCBjYWxsZWU6IGNhbGxlZX0p
CisgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0IGNyZWF0ZUJ1aWxkZXIgPSAodXNlUmV0dXJu
Q2FsbCkgPT4geworICAgbGV0IGJ1aWxkZXIgPSBuZXcgQnVpbGRlcigpCisgICAgYnVpbGRlciA9
IGNyZWF0ZVR5cGVzKGJ1aWxkZXIsIFtdKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgYnVp
bGRlciA9IGNyZWF0ZUV4cG9ydHMoYnVpbGRlciwgZnVuY3Rpb25zKQorICAgIHJldHVybiBjcmVh
dGVDb2RlKGJ1aWxkZXIsIGZ1bmN0aW9ucywgdXNlUmV0dXJuQ2FsbCkKK30KKworY29uc3QgZjVf
NSA9IGNyZWF0ZVRhaWxGdW5jdGlvbignZjVfNScsIHsgcGFyYW1zOiBTX0kzMl81LCByZXQ6IFNf
STMyXzUgfSk7Citjb25zdCBmNl81ID0gY3JlYXRlVGFpbEZ1bmN0aW9uKCdmNl81JywgeyBwYXJh
bXM6IFNfSTMyXzYsIHJldDogU19JMzJfNSB9KTsKK2NvbnN0IGY2XzYgPSBjcmVhdGVUYWlsRnVu
Y3Rpb24oJ2Y2XzYnLCB7IHBhcmFtczogU19JMzJfNiwgcmV0OiBTX0kzMl82IH0pOworY29uc3Qg
ZjBfMTAgPSBjcmVhdGVUYWlsRnVuY3Rpb24oJ2YwXzEwJywgeyBwYXJhbXM6IFtdLCByZXQ6IFNf
STMyXzEwfSk7Citjb25zdCBmMTBfMCA9IGNyZWF0ZVRhaWxGdW5jdGlvbignZjEwXzAnLCB7IHBh
cmFtczogU19JMzJfMTAsIHJldDogW119KTsKK2NvbnN0IGYwXzAgPSBjcmVhdGVUYWlsRnVuY3Rp
b24oJ2YwXzAnLCB7IHBhcmFtczogW10sIHJldDogW119KTsKK2NvbnN0IGY1XzggPSBjcmVhdGVU
YWlsRnVuY3Rpb24oJ2Y1XzgnLCB7IHBhcmFtczogU19JMzJfNSwgcmV0OiBTX0kzMl84IH0pOwor
Y29uc3QgZjhfNSA9IGNyZWF0ZVRhaWxGdW5jdGlvbignZjhfNScsIHsgcGFyYW1zOiBTX0kzMl84
LCByZXQ6IFNfSTMyXzUgfSk7Citjb25zdCBmMTBfNSA9IGNyZWF0ZVRhaWxGdW5jdGlvbignZjEw
XzUnLCB7IHBhcmFtczogU19JMzJfMTAsIHJldDogU19JMzJfNSB9KTsKKworY3JlYXRlQ2FsbGVy
KCdjYWxsZXJfZjVfNScsIGY1XzUsIGY1XzUuc2lnbmF0dXJlKTsKK2NyZWF0ZUNhbGxlcignY2Fs
bGVyX2Y1XzgnLCBmNV84LCBmNV84LnNpZ25hdHVyZSk7CitjcmVhdGVDYWxsZXIoJ2NhbGxlcl9m
OF81JywgZjhfNSwgZjhfNS5zaWduYXR1cmUpOworY29uc3QgY2FsbGVyX2YxMF81ID0gY3JlYXRl
Q2FsbGVyKCdjYWxsZXJfZjEwXzUnLCBmMTBfNSwgZjEwXzUuc2lnbmF0dXJlKTsKK2NyZWF0ZUNh
bGxlcignY2FsbGVyX2NhbGxlcl9mMTBfNScsIGNhbGxlcl9mMTBfNSwgZjEwXzUuc2lnbmF0dXJl
KTsKK2NyZWF0ZUNhbGxlcignY2FsbGVyX2Y2XzUnLCBmNl81LCBmNl81LnNpZ25hdHVyZSk7Citj
cmVhdGVDYWxsZXIoJ2NhbGxlcl9mNl82JywgZjZfNiwgZjZfNi5zaWduYXR1cmUpOworY3JlYXRl
Q2FsbGVyKCdjYWxsZXJfZjBfMTAnLCBmMF8xMCwgZjBfMTAuc2lnbmF0dXJlKTsKK2NyZWF0ZUNh
bGxlcignY2FsbGVyX2YxMF8wJywgZjEwXzAsIGYxMF8wLnNpZ25hdHVyZSk7CitjcmVhdGVDYWxs
ZXIoJ2NhbGxlcl9mMF8wJywgZjBfMCwgZjBfMC5zaWduYXR1cmUpOworCitpZiAocmFuZG9tKSB7
CisgIGZvciAobGV0IGkgPSAwOyBpIDwgMHg3ZjsgaSsrKSB7CisgICAgY29uc3QgcGFyYW1zID0g
TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMHg3ZikKKyAgICBjb25zdCByZXQgPSBNYXRoLmZs
b29yKE1hdGgucmFuZG9tKCkgKiAweDdmKQorICAgIGNvbnN0IG5hbWUgPSBpLnRvU3RyaW5nKCkg
KyAnX2YnICsgcGFyYW1zLnRvU3RyaW5nKCkgKyAnXycgKyByZXQudG9TdHJpbmcoKQorICAgIGNv
bnN0IGNhbGxlZSA9IGNyZWF0ZVRhaWxGdW5jdGlvbihuYW1lLCBjcmVhdGVTaWduYXR1cmUocGFy
YW1zLCByZXQpKTsKKyAgICBjb25zdCBjYWxsZXJOYW1lID0gJ2NhbGxlcl8nCisgICAgY3JlYXRl
Q2FsbGVyKGNhbGxlck5hbWUrIG5hbWUsIGNhbGxlZSwgY2FsbGVlLnNpZ25hdHVyZSk7CisgIH0K
K30KKworIGNvbnN0IGxocyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKGNyZWF0ZUJ1aWxkZXIoLyp1c2VSZXR1cm5DYWxsKi90cnVlKS5XZWJBc3NlbWJs
eSgpLmdldCgpKSk7CisgY29uc3QgcmhzID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoY3JlYXRlQnVpbGRlcigvKnVzZXJSZXR1cm5DYWxsKi9mYWxzZSku
V2ViQXNzZW1ibHkoKS5nZXQoKSkpOworCisgZm9yIChsZXQgaSA9IDA7IGkgPCBlbnRyeXBvaW50
cy5sZW5ndGg7ICsraSkgeworICAgY29uc3QgY2FsbGVyID0gZW50cnlwb2ludHNbaV1bJ2NhbGxl
ciddCisgICBjb25zdCBjYWxsZWUgPSBlbnRyeXBvaW50c1tpXVsnY2FsbGVlJ10KKyAgIGNvbnN0
IGNhbGxlck5hbWUgPSBjYWxsZXJbJ25hbWUnXTsKKyAgIGNvbnN0IGxoc0VudHJ5cG9pbnQgPSBs
aHMuZXhwb3J0c1tjYWxsZXJOYW1lXQorICAgY29uc3QgcmhzRW50cnlwb2ludCA9IHJocy5leHBv
cnRzW2NhbGxlck5hbWVdCisgICBjb25zdCBwYXJhbXMgPSBnZW5lcmF0ZUFyZ3VtZW50cyhjYWxs
ZXIuc2lnbmF0dXJlLnBhcmFtcykKKyAgIGNvbnN0IGxoc1Jlc3VsdCA9IGxoc0VudHJ5cG9pbnQo
Li4ucGFyYW1zKQorICAgY29uc3QgcmhzUmVzdWx0ID0gcmhzRW50cnlwb2ludCguLi5wYXJhbXMp
CisgICBpZiAodmVyYm9zZSkgeworICAgICBwcmludCgnKCcsIGNhbGxlck5hbWUsJykgKCcsIGVu
dHJ5cG9pbnRzW2ldLmNhbGxlci5zaWduYXR1cmUucGFyYW1zLCAnKScsICctPicsICcoJywgY2Fs
bGVlWyduYW1lJ10sICcpICgnLCBlbnRyeXBvaW50c1tpXS5jYWxsZWUuc2lnbmF0dXJlLnBhcmFt
cywgJyknLCAnLT4nLCAnWycsIGVudHJ5cG9pbnRzW2ldLmNhbGxlZS5zaWduYXR1cmUucmV0LCAn
XScpCisgICAgIHByaW50KGxoc1Jlc3VsdCkKKyAgICAgcHJpbnQocmhzUmVzdWx0KQorICAgfQor
ICAgYXNzZXJ0LmVxKGxoc1Jlc3VsdCwgcmhzUmVzdWx0KQorIH0KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvd2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCmluZGV4IDZhMzY4MWRi
OTkzMWQ3MmI2MjY0MWU3OWUyMTU1OThlMDhiNjM5NGMuLjU2MjlhMTFkNTZjYWY4NzU1MGU0YWQ3
NGM1NDU0MmEyNzBjMzU2ZDQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KKysr
IGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAtOTgsNiArOTgsOCBAQAogICAgICAgICAiZGF0
YS5kcm9wIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImV4dHRhYmxlIiwgICAidmFsdWUiOiAg
MjUyLCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRl
ciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUi
OiAic2VnbWVudF9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNocmlua3MgdGhl
IHNpemUgb2YgdGhlIHNlZ21lbnQgdG8gemVybyIsICJleHRlbmRlZE9wIjogOSB9LAogICAgICAg
ICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFs
dWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBh
cmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwg
YSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCiAgICAgICAgICJjYWxsX2luZGlyZWN0IjogICAg
ICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsi
Y2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4Iiwg
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0eXBlIjog
InZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdp
dGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAgICAgICAicmV0dXJuX2NhbGwiOiAgICAg
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE4LCAicmV0
dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNh
bGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0
aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ0YWlsIGNhbGwgYSBmdW5jdGlv
biBieSBpdHMgaW5kZXgiIH0sCisgICAgICAgICJyZXR1cm5fY2FsbF9pbmRpcmVjdCI6ICAgICAg
IHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTksICJyZXR1cm4iOiBbImNh
bGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInRhYmxlX2luZGV4IiwidHlwZSI6ICJ2
YXJ1aW50MzIifV0sImRlc2NyaXB0aW9uIjogInRhaWwgY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0
IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAgICAgICAiY2FsbF9yZWYiOiAgICAg
ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMjAsICJyZXR1cm4i
OiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiByZWZlcmVu
Y2UiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVt
b3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsiaTMyIl0sICAgICAgICAgICAgICAg
ICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAgICAgICAi
aW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQz
MiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlw
dGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3UiOiAgICAg
ICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDUsICJyZXR1cm4iOiBb
ImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAg
ICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAg
ICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAi
dmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>460584</attachid>
            <date>2022-06-30 09:16:10 -0700</date>
            <delta_ts>2022-07-22 00:35:14 -0700</delta_ts>
            <desc>Change returns offsets in wasm convention</desc>
            <filename>0001-change-results-offsets-in-wasm-convention.patch</filename>
            <type>text/plain</type>
            <size>12487</size>
            <attacher name="Tom Tartarin">tom</attacher>
            
              <data encoding="base64">RnJvbSBiNDAxNWM0YjQwMDgwNWNjZDFmOGEzZTA4MWQ1MDE5NTI3NzI1ZTJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gVGFydGFyaW4gPHRvbUBsZWFuaW5ndGVjaC5jb20+CkRh
dGU6IE1vbiwgMjcgSnVuIDIwMjIgMTE6Mzk6NTggKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0g
Y2hhbmdlIHJlc3VsdHMgb2Zmc2V0cyBpbiB3YXNtIGNvbnZlbnRpb24KCi0tLQogLi4uL3dhc20v
V2FzbUNhbGxpbmdDb252ZW50aW9uLmggICAgICAgICAgICAgIHwgODYgKysrKysrKysrKysrKysr
KystLQogLi4uL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcCAgICAgICAgICAgICAgIHwgNjMg
KysrLS0tLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNw
cCAgICB8ICA0ICsKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwICAgICAgICAg
ICB8ICA0ICsKIDQgZmlsZXMgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5n
Q29udmVudGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252
ZW50aW9uLmgKaW5kZXggMzEwMjUwOGUwYWE3Li5hNzZlMDBlYjJkMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oCkBAIC0xMjcs
NiArMTI3LDgwIEBAIHByaXZhdGU6CiAgICAgfQogCiBwdWJsaWM6CisgICAgdWludDMyX3QgbnVt
YmVyT2ZTdGFja1Jlc3VsdHMoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZSkgY29u
c3QKKyAgICB7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IGdwckNvdW50ID0ganNyQXJncy5zaXpl
KCk7CisgICAgICAgIGNvbnN0IHVpbnQzMl90IGZwckNvdW50ID0gZnByQXJncy5zaXplKCk7Cisg
ICAgICAgIHVpbnQzMl90IGdwckluZGV4ID0gMDsKKyAgICAgICAgdWludDMyX3QgZnBySW5kZXgg
PSAwOworICAgICAgICB1aW50MzJfdCBzdGFja0NvdW50ID0gMDsKKyAgICAgICAgZm9yICh1aW50
MzJfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyBpKyspIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoc2lnbmF0dXJlLnJldHVyblR5cGUoaSkua2luZCkgeworICAgICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6STMyOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0OgorICAg
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgICAgICAgICAgY2FzZSBUeXBl
S2luZDo6RnVuY3JlZjoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAg
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpS
dHQ6CisgICAgICAgICAgICAgICAgaWYgKGdwckluZGV4IDwgZ3ByQ291bnQpCisgICAgICAgICAg
ICAgICAgICAgICsrZ3BySW5kZXg7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICArK3N0YWNrQ291bnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpGMzI6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6Cisg
ICAgICAgICAgICAgICAgaWYgKGZwckluZGV4IDwgZnByQ291bnQpCisgICAgICAgICAgICAgICAg
ICAgICsrZnBySW5kZXg7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICArK3N0YWNrQ291bnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFR5cGVLaW5kOjpWb2lkOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJl
dHVybiBzdGFja0NvdW50OworICAgIH0KKworICAgIHVpbnQzMl90IG51bWJlck9mU3RhY2tBcmd1
bWVudHMoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGNvbnN0IHVpbnQzMl90IGdwckNvdW50ID0ganNyQXJncy5zaXplKCk7CisgICAgICAg
IGNvbnN0IHVpbnQzMl90IGZwckNvdW50ID0gZnByQXJncy5zaXplKCk7CisgICAgICAgIHVpbnQz
Ml90IGdwckluZGV4ID0gMDsKKyAgICAgICAgdWludDMyX3QgZnBySW5kZXggPSAwOworICAgICAg
ICB1aW50MzJfdCBzdGFja0NvdW50ID0gMDsKKyAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsg
aSA8IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7IGkrKykgeworICAgICAgICAgICAgc3dpdGNo
IChzaWduYXR1cmUuYXJndW1lbnRUeXBlKGkpLmtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OkkzMjoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoKKyAgICAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1
bmNyZWY6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgorICAgICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6UmVmOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UnR0OgorICAg
ICAgICAgICAgICAgIGlmIChncHJJbmRleCA8IGdwckNvdW50KQorICAgICAgICAgICAgICAgICAg
ICArK2dwckluZGV4OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
KytzdGFja0NvdW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBU
eXBlS2luZDo6RjMyOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgorICAgICAgICAg
ICAgICAgIGlmIChmcHJJbmRleCA8IGZwckNvdW50KQorICAgICAgICAgICAgICAgICAgICArK2Zw
ckluZGV4OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKytzdGFj
a0NvdW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6Vm9pZDoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgICAgICBj
YXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3Rh
Y2tDb3VudDsKKyAgICB9CisKICAgICBDYWxsSW5mb3JtYXRpb24gY2FsbEluZm9ybWF0aW9uRm9y
KGNvbnN0IFR5cGVEZWZpbml0aW9uJiB0eXBlLCBDYWxsUm9sZSByb2xlID0gQ2FsbFJvbGU6OkNh
bGxlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHNpZ25hdHVyZSA9ICp0eXBl
LmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOwpAQCAtMTM0LDIxICsyMDgsMjMgQEAgcHVibGljOgog
ICAgICAgICBib29sIHJlc3VsdHNJbmNsdWRlSTY0ID0gZmFsc2U7CiAgICAgICAgIHNpemVfdCBn
cEFyZ3VtZW50Q291bnQgPSAwOwogICAgICAgICBzaXplX3QgZnBBcmd1bWVudENvdW50ID0gMDsK
LSAgICAgICAgc2l6ZV90IGFyZ1N0YWNrT2Zmc2V0ID0gaGVhZGVyU2l6ZUluQnl0ZXMgKyBzaXpl
b2YoUmVnaXN0ZXIpOworICAgICAgICBzaXplX3QgaGVhZGVyU2l6ZSA9IGhlYWRlclNpemVJbkJ5
dGVzICsgc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICAgICAgaWYgKHJvbGUgPT0gQ2FsbFJvbGU6OkNh
bGxlcikKLSAgICAgICAgICAgIGFyZ1N0YWNrT2Zmc2V0IC09IHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKTsKKyAgICAgICAgICAgIGhlYWRlclNpemUgLT0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
OwogCisgICAgICAgIHNpemVfdCBhcmdTdGFja09mZnNldCA9IGhlYWRlclNpemU7CiAgICAgICAg
IFZlY3RvcjxBcmd1bWVudExvY2F0aW9uPiBwYXJhbXMoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQo
KSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFyZ3VtZW50Q291
bnQoKTsgKytpKSB7CiAgICAgICAgICAgICBhcmd1bWVudHNJbmNsdWRlSTY0IHw9IHNpZ25hdHVy
ZS5hcmd1bWVudFR5cGUoaSkuaXNJNjQoKTsKICAgICAgICAgICAgIHBhcmFtc1tpXSA9IG1hcnNo
YWxsTG9jYXRpb24ocm9sZSwgc2lnbmF0dXJlLmFyZ3VtZW50VHlwZShpKSwgZ3BBcmd1bWVudENv
dW50LCBmcEFyZ3VtZW50Q291bnQsIGFyZ1N0YWNrT2Zmc2V0KTsKICAgICAgICAgfQorICAgICAg
ICB1aW50MzJfdCBzdGFja0FyZ3MgPSBhcmdTdGFja09mZnNldCAtIGhlYWRlclNpemU7CiAgICAg
ICAgIGdwQXJndW1lbnRDb3VudCA9IDA7CiAgICAgICAgIGZwQXJndW1lbnRDb3VudCA9IDA7Ci0g
ICAgICAgIHNpemVfdCByZXN1bHRTdGFja09mZnNldCA9IGhlYWRlclNpemVJbkJ5dGVzICsgc2l6
ZW9mKFJlZ2lzdGVyKTsKLSAgICAgICAgaWYgKHJvbGUgPT0gQ2FsbFJvbGU6OkNhbGxlcikKLSAg
ICAgICAgICAgIHJlc3VsdFN0YWNrT2Zmc2V0IC09IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKTsK
IAorICAgICAgICB1aW50MzJfdCBzdGFja1Jlc3VsdHMgPSBudW1iZXJPZlN0YWNrUmVzdWx0cyhz
aWduYXR1cmUpICogc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgdWludDMyX3Qgc3RhY2tDb3Vu
dEFsaWduZWQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygp
LCBzdGQ6Om1heChzdGFja0FyZ3MsIHN0YWNrUmVzdWx0cykpOworICAgICAgICBzaXplX3QgcmVz
dWx0U3RhY2tPZmZzZXQgPSBoZWFkZXJTaXplICsgc3RhY2tDb3VudEFsaWduZWQgLSBzdGFja1Jl
c3VsdHM7CiAgICAgICAgIFZlY3RvcjxBcmd1bWVudExvY2F0aW9uLCAxPiByZXN1bHRzKHNpZ25h
dHVyZS5yZXR1cm5Db3VudCgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaWdu
YXR1cmUucmV0dXJuQ291bnQoKTsgKytpKSB7CiAgICAgICAgICAgICByZXN1bHRzSW5jbHVkZUk2
NCB8PSBzaWduYXR1cmUucmV0dXJuVHlwZShpKS5pc0k2NCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKaW5kZXggZDBkMmI5NzI1OTkx
Li41YzQ2MzFmOTYxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUxMSW50R2VuZXJhdG9yLmNwcApAQCAtNjA2LDcgKzYwNiw3IEBAIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2ln
bmF0dXJlCiAgICAgLy8gY2FsbCBmcmFtZSBoZWFkZXIKIAogICAgIC8vIFdlIG5lZWQgdG8gYWxs
b2NhdGUgYXQgbGVhc3Qgc3BhY2UgZm9yIGFsbCBHUFJzIGFuZCBGUFJzLgotICAgIC8vIFJldHVy
biB2YWx1ZXMgdXNlIHRoZSBzYW1lIGFsbG9jYXRpb24gbGF5b3V0LgorICAgIC8vIFJldHVybiB2
YWx1ZSBzdGFjazAgaXMgYXQgc3RhY2tOIC0gc3RhY2tSZXR1cm5WYWx1ZXMKIAogICAgIGNvbnN0
IGF1dG8gaW5pdGlhbFN0YWNrU2l6ZSA9IG1fc3RhY2tTaXplOwogCkBAIC02MTQsNTQgKzYxNCwx
NyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3Qg
RnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZQogICAgIGNvbnN0IHVpbnQzMl90IGdwckNvdW50
ID0gY2FsbGluZ0NvbnZlbnRpb24uanNyQXJncy5zaXplKCk7CiAgICAgY29uc3QgdWludDMyX3Qg
ZnByQ291bnQgPSBjYWxsaW5nQ29udmVudGlvbi5mcHJBcmdzLnNpemUoKTsKIAotICAgIHVpbnQz
Ml90IHN0YWNrQ291bnQgPSAwOworICAgIHVpbnQzMl90IHN0YWNrUmVzdWx0cyA9IGNhbGxpbmdD
b252ZW50aW9uLm51bWJlck9mU3RhY2tSZXN1bHRzKHNpZ25hdHVyZSk7CisgICAgdWludDMyX3Qg
c3RhY2tDb3VudEFsaWduZWQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKSwgc3RkOjptYXgoY2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZTdGFja0Fy
Z3VtZW50cyhzaWduYXR1cmUpLCBzdGFja1Jlc3VsdHMpKTsKICAgICB1aW50MzJfdCBncHJJbmRl
eCA9IDA7CiAgICAgdWludDMyX3QgZnBySW5kZXggPSAwOwogICAgIHVpbnQzMl90IHN0YWNrSW5k
ZXggPSAwOwogCi0gICAgYXV0byBhbGxvY2F0ZVN0YWNrUmVnaXN0ZXIgPSBbJl0oVHlwZSB0eXBl
KSB7Ci0gICAgICAgIHN3aXRjaCAodHlwZS5raW5kKSB7Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkkzMjoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0OgotICAgICAgICBjYXNlIFR5cGVLaW5k
OjpFeHRlcm5yZWY6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6Ci0gICAgICAgIGNh
c2UgVHlwZUtpbmQ6OlJlZk51bGw6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKLSAgICAg
ICAgY2FzZSBUeXBlS2luZDo6UnR0OgotICAgICAgICAgICAgaWYgKGdwckluZGV4IDwgZ3ByQ291
bnQpCi0gICAgICAgICAgICAgICAgKytncHJJbmRleDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0
YWNrSW5kZXgrKyA+PSBzdGFja0NvdW50KQotICAgICAgICAgICAgICAgICsrc3RhY2tDb3VudDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6Ci0gICAgICAg
IGNhc2UgVHlwZUtpbmQ6OkY2NDoKLSAgICAgICAgICAgIGlmIChmcHJJbmRleCA8IGZwckNvdW50
KQotICAgICAgICAgICAgICAgICsrZnBySW5kZXg7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdGFj
a0luZGV4KysgPj0gc3RhY2tDb3VudCkKLSAgICAgICAgICAgICAgICArK3N0YWNrQ291bnQ7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKLSAgICAgICAg
Y2FzZSBUeXBlS2luZDo6RnVuYzoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH07
Ci0KLQotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3Vu
dCgpOyBpKyspCi0gICAgICAgIGFsbG9jYXRlU3RhY2tSZWdpc3RlcihzaWduYXR1cmUuYXJndW1l
bnRUeXBlKGkpKTsKLQotICAgIGdwckluZGV4ID0gMDsKLSAgICBmcHJJbmRleCA9IDA7Ci0gICAg
c3RhY2tJbmRleCA9IDA7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5y
ZXR1cm5Db3VudCgpOyBpKyspCi0gICAgICAgIGFsbG9jYXRlU3RhY2tSZWdpc3RlcihzaWduYXR1
cmUucmV0dXJuVHlwZShpKSk7Ci0KKyAgICBtX3N0YWNrU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBtX3N0YWNrU2l6ZS52YWx1ZSgpKTsK
ICAgICAvLyBGSVhNRTogd2UgYXJlIGFsbG9jYXRpbmcgdGhlIGV4dHJhIHNwYWNlIGZvciB0aGUg
YXJndW1lbnQvcmV0dXJuIGNvdW50IGluIG9yZGVyIHRvIGF2b2lkIGludGVyZmVyZW5jZSwgYnV0
IHdlIGNvdWxkIGRvIGJldHRlcgogICAgIC8vIE5PVEU6IFdlIGluY3JlYXNlIGFyZyBjb3VudCBi
eSAxIGZvciB0aGUgY2FzZSBvZiBpbmRpcmVjdCBjYWxscwotICAgIG1fc3RhY2tTaXplICs9IHN0
ZDo6bWF4KHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxLCBzaWduYXR1cmUucmV0dXJuQ291
bnQoKSkgKyBncHJDb3VudCArIGZwckNvdW50ICsgc3RhY2tDb3VudCArIENhbGxGcmFtZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzICsgMTsKLSAgICBpZiAobV9zdGFja1NpemUudmFsdWUoKSAlIHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpCi0gICAgICAgICsrbV9zdGFja1NpemU7CisgICAgbV9z
dGFja1NpemUgKz0gc3RkOjptYXgoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDEsIHNpZ25h
dHVyZS5yZXR1cm5Db3VudCgpKSArIGdwckNvdW50ICsgZnByQ291bnQgKyBzdGFja0NvdW50QWxp
Z25lZCArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICsgMTsKKyAgICBtX3N0YWNr
U2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
LCBtX3N0YWNrU2l6ZS52YWx1ZSgpKTsKICAgICBpZiAobV9tYXhTdGFja1NpemUgPCBtX3N0YWNr
U2l6ZSkKICAgICAgICAgbV9tYXhTdGFja1NpemUgPSBtX3N0YWNrU2l6ZTsKIApAQCAtNjcyLDEx
ICs2MzUsMTEgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVy
KGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUKICAgICBjb25zdCB1bnNpZ25lZCBz
dGFja09mZnNldCA9IG1fc3RhY2tTaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGJhc2UgPSBzdGFj
a09mZnNldCAtIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0gMTsKIAotICAgIGNv
bnN0IHVpbnQzMl90IGdwckxpbWl0ID0gYmFzZSAtIHN0YWNrQ291bnQgLSBncHJDb3VudDsKKyAg
ICBjb25zdCB1aW50MzJfdCBncHJMaW1pdCA9IGJhc2UgLSBzdGFja0NvdW50QWxpZ25lZCAtIGdw
ckNvdW50OwogICAgIGNvbnN0IHVpbnQzMl90IGZwckxpbWl0ID0gZ3ByTGltaXQgLSBmcHJDb3Vu
dDsKIAogICAgIHN0YWNrSW5kZXggPSBiYXNlOwotICAgIGdwckluZGV4ID0gYmFzZSAtIHN0YWNr
Q291bnQ7CisgICAgZ3BySW5kZXggPSBiYXNlIC0gc3RhY2tDb3VudEFsaWduZWQ7CiAgICAgZnBy
SW5kZXggPSBncHJJbmRleCAtIGdwckNvdW50OwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoIChzaWdu
YXR1cmUuYXJndW1lbnRUeXBlKGkpLmtpbmQpIHsKQEAgLTcwNiw4ICs2NjksOCBAQCBhdXRvIExM
SW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgRnVuY3Rpb25TaWdu
YXR1cmUmIHNpZ25hdHVyZQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RhY2tJbmRleCA9IGJh
c2U7Ci0gICAgZ3BySW5kZXggPSBiYXNlIC0gc3RhY2tDb3VudDsKKyAgICBncHJJbmRleCA9IGJh
c2UgLSBzdGFja0NvdW50QWxpZ25lZDsKKyAgICBzdGFja0luZGV4ID0gZ3BySW5kZXggKyBzdGFj
a1Jlc3VsdHM7CiAgICAgZnBySW5kZXggPSBncHJJbmRleCAtIGdwckNvdW50OwogICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgaSsrKSB7CiAgICAg
ICAgIHN3aXRjaCAoc2lnbmF0dXJlLnJldHVyblR5cGUoaSkua2luZCkgewpAQCAtNzQ4LDcgKzcx
MSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25z
dCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlCiAgICAgICAgIH0KICAgICB9OwogCi0gICAg
cmV0dXJuIExMSW50Q2FsbEluZm9ybWF0aW9uIHsgc3RhY2tPZmZzZXQsIHN0YWNrQ291bnQsIFdU
Rk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjb21taXRSZXN1bHRzKSB9OworICAgIHJldHVybiBM
TEludENhbGxJbmZvcm1hdGlvbiB7IHN0YWNrT2Zmc2V0LCBzdGFja0NvdW50QWxpZ25lZCwgV1RG
TW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNvbW1pdFJlc3VsdHMpIH07CiB9CiAKIGF1dG8gTExJ
bnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBGdW5jdGlvblNpZ25h
dHVyZSYgc2lnbmF0dXJlKSAtPiBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAyPgpAQCAtNzY0LDEw
ICs3MjcsMTIgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVl
KGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUKIAogICAgIHVpbnQzMl90IGdwcklu
ZGV4ID0gMDsKICAgICB1aW50MzJfdCBmcHJJbmRleCA9IGdwckNvdW50OwotICAgIHVpbnQzMl90
IHN0YWNrSW5kZXggPSAxOwogICAgIGNvbnN0IHVpbnQzMl90IG1heEdQUkluZGV4ID0gZ3ByQ291
bnQ7CiAgICAgY29uc3QgdWludDMyX3QgbWF4RlBSSW5kZXggPSBtYXhHUFJJbmRleCArIGZwckNv
dW50OworICAgIHVpbnQzMl90IHN0YWNrUmVzdWx0cyA9IGNhbGxpbmdDb252ZW50aW9uLm51bWJl
ck9mU3RhY2tSZXN1bHRzKHNpZ25hdHVyZSk7CisgICAgdWludDMyX3Qgc3RhY2tDb3VudEFsaWdu
ZWQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwg
c3RkOjptYXgoY2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cyhzaWduYXR1
cmUpLCBzdGFja1Jlc3VsdHMpKTsKIAorICAgIHVpbnQzMl90IHN0YWNrSW5kZXggPSAxICsgc3Rh
Y2tDb3VudEFsaWduZWQgLSBzdGFja1Jlc3VsdHM7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsg
aSA8IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoIChzaWdu
YXR1cmUucmV0dXJuVHlwZShpKS5raW5kKSB7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAppbmRleCAwZjYyNGUw
YjYxZGIuLmI2ZmVmMzJhMzlhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNUb1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
VG9XYXNtLmNwcApAQCAtMzYyLDYgKzM2MiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxG
dW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENDYWxsSGVscGVycyYgaml0LCBjb25zdAog
ICAgICAgICB1bmxpbmtlZFdhc21Ub1dhc21DYWxscy0+YXBwZW5kKHsgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mTmVhckNhbGw8V2FzbUVudHJ5UHRyVGFnPihjYWxsKSwgZnVuY3Rpb25JbmRleFNwYWNl
IH0pOwogICAgIH0pOwogCisgICAgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVyIGFmdGVyIGNhbGwK
KyAgICAvLyBOT1RFOiB3ZSB1c2UgYWRkUHRyIHRvIGdlbmVyYXRlIGxlYQorICAgIGppdC5hZGRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50MzJfdD4odG90
YWxGcmFtZVNpemUpKSwgTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCiAgICAgbWFyc2hhbGxKU1Jlc3Vs
dChqaXQsIHR5cGVEZWZpbml0aW9uLCB3YXNtRnJhbWVDb252ZW50aW9uLCBzYXZlZFJlc3VsdFJl
Z2lzdGVycyk7CiAKICAgICBmb3IgKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIHJlZ0F0T2Zmc2V0
IDogcmVnaXN0ZXJzVG9TcGlsbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCA1NTIxNTY3OWQ0NWYuLjE0YWU0
MTk0NWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTQxNSw2ICs0MTUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9p
bnRTbG93KCkKICAgICBqaXQubG9hZFB0cihlbnRyeXBvaW50TG9hZExvY2F0aW9uKCksIHNjcmF0
Y2hKU1IucGF5bG9hZEdQUigpKTsKICAgICBqaXQuY2FsbChzY3JhdGNoSlNSLnBheWxvYWRHUFIo
KSwgV2FzbUVudHJ5UHRyVGFnKTsKIAorICAgIC8vIFJlc3RvcmUgc3RhY2sgcG9pbnRlciBhZnRl
ciBjYWxsCisgICAgLy8gTk9URTogd2UgdXNlIGFkZFB0ciB0byBnZW5lcmF0ZSBsZWEKKyAgICBq
aXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGludDMy
X3Q+KHRvdGFsRnJhbWVTaXplKSksIE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIG1hcnNoYWxs
SlNSZXN1bHQoaml0LCB0eXBlRGVmaW5pdGlvbiwgd2FzbUNhbGxJbmZvLCBzYXZlZFJlc3VsdFJl
Z2lzdGVycyk7CiAKICAgICBBU1NFUlQoIVJlZ2lzdGVyU2V0OjpydW50aW1lVGFnUmVnaXN0ZXJz
KCkuY29udGFpbnMoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKSk7Ci0tIAoyLjM3
LjAKCg==
</data>
<flag name="commit-queue"
          id="490083"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>460585</attachid>
            <date>2022-06-30 09:16:59 -0700</date>
            <delta_ts>2022-06-30 09:37:46 -0700</delta_ts>
            <desc>Implement wasm tail calls</desc>
            <filename>0002-implement-wasm-tail-calls.patch</filename>
            <type>text/plain</type>
            <size>1182222</size>
            <attacher name="Tom Tartarin">tom</attacher>
            
              <data encoding="base64">RnJvbSAxMDg1MDFjNTAzMjFlM2U3NmUwMjYzOWMxZjNhMzNiNzNlMDdmNDM4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gVGFydGFyaW4gPHRvbUBsZWFuaW5ndGVjaC5jb20+CkRh
dGU6IE1vbiwgMjcgSnVuIDIwMjIgMTI6Mjc6MzUgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvMl0g
aW1wbGVtZW50IHdhc20gdGFpbC1jYWxscwoKLS0tCiBKU1Rlc3RzL3dhc20ueWFtbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAgNyArCiBKU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwt
c3BlYy1oYXJuZXNzLmpzICAgICAgfCAgICAzOCArCiAuLi4vcmV0dXJuLWNhbGwtc3BlYy1oYXJu
ZXNzL2FzeW5jX2luZGV4LmpzICAgfCAgIDQyNiArCiAuLi4vcmV0dXJuLWNhbGwtc3BlYy1oYXJu
ZXNzL3N5bmNfaW5kZXguanMgICAgfCAgIDM4NyArCiAuLi4vd2FzbS1jb25zdGFudHMuanMgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDM4NCArCiAuLi4vd2FzbS1tb2R1bGUtYnVpbGRlci5q
cyAgICAgICAgICAgICAgICAgICAgfCAgIDU4MyArCiBKU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwt
c3BlYy1oYXJuZXNzL3dhc3QuanMgfCAyOTc3NyArKysrKysrKysrKysrKysrCiAuLi4vcmV0dXJu
LWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbC53YXN0ICAgfCAgIDIwMiArCiAuLi4vcmV0dXJu
X2NhbGwud2FzdC5qcyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzMiArCiAuLi4vcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdCAgICAgICAgICAgICAgICAgfCAgIDUzNiArCiAuLi4vcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdC5qcyAgICAgICAgICAgICAgfCAgIDIzMiArCiBKU1Rlc3RzL3dh
c20vcmV0dXJuLWNhbGwvcmV0dXJuLWNhbGwuanMgICAgICAgfCAgIDcxMCArCiBKU1Rlc3RzL3dh
c20vd2FzbS5qc29uICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMiArCiAuLi4vYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCAgICAgICAgICAgfCAgICAgNyArCiAuLi4vYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCAgICAgICAgICAgfCAgICAgNiArCiAuLi4vYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oICAgICAgICAgfCAgICAxMCArCiAuLi4vYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggICAgICAgICAgfCAgICAxNCArCiAuLi4vSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiICAgfCAgICA0MCArCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgfCAgICAgNCArCiAuLi4vbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20gICAgICAgICAgICAgfCAgICAxMiArCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtICAgfCAgIDE5OCArCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oICAgfCAgICAgMSArCiAuLi4vd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwICAgICAgICAgICAgICAgfCAgIDMyMCArLQogLi4uL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIHwgICAzNDEgKy0KIC4uLi9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oICB8ICAgIDcwICstCiAuLi4vd2Fz
bS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwICAgICAgICAgICAgICAgfCAgICA1MSArCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCAgfCAgICAzMCArCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmggICAgfCAgICAgNCArCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24gICAgICAgICAgfCAgICAgMiArCiBUb29scy9T
Y3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzICAgICAgICAgICAgfCAgICAgNCArCiAzMCBmaWxl
cyBjaGFuZ2VkLCAzNDUxNCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzLmpzCiBjcmVh
dGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9hc3lu
Y19pbmRleC5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1z
cGVjLWhhcm5lc3Mvc3luY19pbmRleC5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2Fz
bS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMuanMKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dhc20tbW9kdWxl
LWJ1aWxkZXIuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwt
c3BlYy1oYXJuZXNzL3dhc3QuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0
dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbC53YXN0CiBjcmVhdGUgbW9kZSAxMDA2NDQg
SlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGwud2FzdC5qcwog
Y3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3Jl
dHVybl9jYWxsX2luZGlyZWN0Lndhc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20v
cmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0LmpzCiBjcmVh
dGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLmpzCgpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtLnlhbWwgYi9KU1Rlc3RzL3dhc20ueWFtbAppbmRleCA5
Y2Q0MGViZjk4YjkuLmIxOGMxYWRiYWM3ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtLnlhbWwK
KysrIGIvSlNUZXN0cy93YXNtLnlhbWwKQEAgLTI5NSw2ICsyOTUsMTMgQEAKIC0gcGF0aDogd2Fz
bS9zcGVjLXRlc3RzL3V0ZjgtaW52YWxpZC1lbmNvZGluZy53YXN0LmpzCiAgIGNtZDogcnVuV2Vi
QXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCiAKKy0gcGF0aDogd2FzbS9yZXR1cm4tY2FsbAorICBj
bWQ6IHJ1bldlYkFzc2VtYmx5U3VpdGUoIi0tdXNlV2ViQXNzZW1ibHlUYWlsQ2FsbHM9dHJ1ZSIp
CistIHBhdGg6IHdhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbC53YXN0Lmpz
CisgIGNtZDogcnVuV2ViQXNzZW1ibHlSZXR1cm5DYWxsU3BlY1Rlc3QgOm5vcm1hbAorLSBwYXRo
OiB3YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdC5q
cworICBjbWQ6IHJ1bldlYkFzc2VtYmx5UmV0dXJuQ2FsbFNwZWNUZXN0IDpub3JtYWwKKwogLSBw
YXRoOiB3YXNtL21vZHVsZXMvcnVuLWZyb20td2FzbS53YXNtCiAgIGNtZDogcnVuV2ViQXNzZW1i
bHkKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy5q
cyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZWVlYjU5MzE2ZTAKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzLmpzCkBAIC0wLDAgKzEs
MzggQEAKKyJ1c2Ugc3RyaWN0IjsKKworLy8gVGhpcyBpcyBvdXIgbmlmdHkgd2F5IHRvIG1ha2Ug
bW9kdWxlcyBzeW5jaHJvbm91cy4KK2xldCBhc3NlcnQ7CitpbXBvcnQoJy4vYXNzZXJ0LmpzJyku
dGhlbigobW9kdWxlKSA9PiB7CisgICAgYXNzZXJ0ID0gbW9kdWxlOworfSwgJHZtLmNyYXNoKTsK
K2RyYWluTWljcm90YXNrcygpOworCitmdW5jdGlvbiB0ZXN0KGZ1bmMsIGRlc2NyaXB0aW9uKSB7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
cHJpbnQoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uOiIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgdGhy
b3cgZTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHByb21pc2VfdGVzdChmdW5jLCBkZXNjcmlwdGlv
bikgeworICAgIGFzc2VydC5hc3luY1Rlc3QoZnVuYygpKTsKK307CisKK2xldCBhc3NlcnRfZXF1
YWxzID0gYXNzZXJ0LmVxOworbGV0IGFzc2VydF90cnVlID0gKHgpID0+IGFzc2VydC5lcSh4LHRy
dWUpOworbGV0IGFzc2VydF9mYWxzZSA9ICh4KSA9PiBhc3NlcnQuZXEoeCxmYWxzZSk7CitsZXQg
YXNzZXJ0X3VucmVhY2hlZCA9ICgpID0+IHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBo
YXZlIGJlZW4gdW5yZWFjaGFibGUiKTsKK307CisKK2xldCBjb25zb2xlID0geworICAgIGxvZygu
Li5hcmdzKSB7CisgICAgICAgIHByaW50KC4uLmFyZ3MpOworICAgIH0KK307CisKK2xvYWQoIi4v
cmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3N5bmNfaW5kZXguanMiLCAiY2FsbGVyIHJlbGF0aXZl
Iik7Citsb2FkKCIuL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy93YXNtLWNvbnN0YW50cy5qcyIs
ICJjYWxsZXIgcmVsYXRpdmUiKTsKK2xvYWQoIi4vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dh
c20tbW9kdWxlLWJ1aWxkZXIuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL2FzeW5jX2luZGV4LmpzIGIvSlNU
ZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9hc3luY19pbmRleC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmMyMDAwMTlhYzY5OQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3MvYXN5bmNfaW5k
ZXguanMKQEAgLTAsMCArMSw0MjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxOCBXZWJBc3NlbWJs
eSBDb21tdW5pdHkgR3JvdXAgcGFydGljaXBhbnRzCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICog
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworInVzZSBzdHJpY3QiOworCits
ZXQgdGVzdE51bSA9IChmdW5jdGlvbigpIHsKKyAgbGV0IGNvdW50ID0gMTsKKyAgcmV0dXJuIGZ1
bmN0aW9uKCkgeworICAgIHJldHVybiBgIyR7Y291bnQrK30gYDsKKyAgfTsKK30pKCk7CisKK2Z1
bmN0aW9uIHVuaXF1ZVRlc3QoZnVuYywgZGVzYykgeworICB0ZXN0KGZ1bmMsIHRlc3ROdW0oKSAr
IGRlc2MpOworfQorCisvLyBXUFQncyBhc3NlcnRfdGhyb3cgdXNlcyBhIGxpc3Qgb2YgcHJlZGVm
aW5lZCwgaGFyZGNvZGVkIGtub3duIGVycm9ycy4gU2luY2UKKy8vIGl0IGlzIG5vdCBhd2FyZSBv
ZiB0aGUgV2ViQXNzZW1ibHkgZXJyb3IgdHlwZXMgKHlldCksIGltcGxlbWVudCBvdXIgb3duCisv
LyB2ZXJzaW9uLgorZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGZ1bmMsIGVycikgeworICBsZXQgY2F1
Z2h0ID0gZmFsc2U7CisgIHRyeSB7CisgICAgZnVuYygpOworICB9IGNhdGNoIChlKSB7CisgICAg
YXNzZXJ0X3RydWUoCisgICAgICBlIGluc3RhbmNlb2YgZXJyLAorICAgICAgYGV4cGVjdGVkICR7
ZXJyLm5hbWV9LCBvYnNlcnZlZCAke2UuY29uc3RydWN0b3IubmFtZX1gCisgICAgKTsKKyAgICBj
YXVnaHQgPSB0cnVlOworICB9CisgIGFzc2VydF90cnVlKGNhdWdodCwgdGVzdE51bSgpICsgImFz
c2VydFRocm93cyBtdXN0IGNhdGNoIGFueSBlcnJvci4iKTsKK30KKworLyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFdBU1QgSEFSTkVTUyAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CisKK2NvbnN0IEVYUEVDVF9JTlZBTElEID0gZmFsc2U7CisKKy8qIERBVEEgKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KKworbGV0IGV4dGVybnJlZnMgPSB7fTsKK2xldCBleHRlcm5zeW0gPSBTeW1ib2woImV4dGVy
bnJlZiIpOworZnVuY3Rpb24gZXh0ZXJucmVmKHMpIHsKKyAgaWYgKCEgKHMgaW4gZXh0ZXJucmVm
cykpIGV4dGVybnJlZnNbc10gPSB7W2V4dGVybnN5bV06IHN9OworICByZXR1cm4gZXh0ZXJucmVm
c1tzXTsKK30KK2Z1bmN0aW9uIGlzX2V4dGVybnJlZih4KSB7CisgIHJldHVybiAoeCAhPT0gbnVs
bCAmJiBleHRlcm5zeW0gaW4geCkgPyAxIDogMDsKK30KK2Z1bmN0aW9uIGlzX2Z1bmNyZWYoeCkg
eworICByZXR1cm4gdHlwZW9mIHggPT09ICJmdW5jdGlvbiIgPyAxIDogMDsKK30KK2Z1bmN0aW9u
IGVxX2V4dGVybnJlZih4LCB5KSB7CisgIHJldHVybiB4ID09PSB5ID8gMSA6IDA7Cit9CitmdW5j
dGlvbiBlcV9mdW5jcmVmKHgsIHkpIHsKKyAgcmV0dXJuIHggPT09IHkgPyAxIDogMDsKK30KKwor
Ly8gRGVmYXVsdCBpbXBvcnRzLgordmFyIHJlZ2lzdHJ5ID0ge307CisKKy8vIEFsbCB0ZXN0cyBy
dW4gYXN5bmNocm9ub3VzbHkgYW5kIHJldHVybiB0aGVpciByZXN1bHRzIGFzIHByb21pc2VzLiBU
byBlbnN1cmUKKy8vIHRoYXQgYWxsIHRlc3RzIGV4ZWN1dGUgaW4gdGhlIGNvcnJlY3Qgb3JkZXIs
IHdlIGNoYWluIHRoZSBwcm9taXNlcyB0b2dldGhlcgorLy8gc28gdGhhdCBhIHRlc3QgaXMgb25s
eSBleGVjdXRlZCB3aGVuIGFsbCBwcmV2aW91cyB0ZXN0cyBoYXZlIGZpbmlzaGVkIHRoZWlyCisv
LyBleGVjdXRpb24uCitsZXQgY2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTsKKworLy8gUmVzZXRz
IHRoZSByZWdpc3RyeSBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgV1BUIHRlc3RzLgorZnVuY3Rpb24g
cmVpbml0aWFsaXplUmVnaXN0cnkoKSB7CisgIGlmICh0eXBlb2YgV2ViQXNzZW1ibHkgPT09ICJ1
bmRlZmluZWQiKSByZXR1cm47CisKKyAgY2hhaW4gPSBjaGFpbi50aGVuKF8gPT4geworICAgIGxl
dCBzcGVjdGVzdCA9IHsKKyAgICAgIGV4dGVybnJlZjogZXh0ZXJucmVmLAorICAgICAgaXNfZXh0
ZXJucmVmOiBpc19leHRlcm5yZWYsCisgICAgICBpc19mdW5jcmVmOiBpc19mdW5jcmVmLAorICAg
ICAgZXFfZXh0ZXJucmVmOiBlcV9leHRlcm5yZWYsCisgICAgICBlcV9mdW5jcmVmOiBlcV9mdW5j
cmVmLAorICAgICAgcHJpbnQ6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICBwcmlu
dF9pMzI6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICBwcmludF9pMzJfZjMyOiBj
b25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAorICAgICAgcHJpbnRfZjY0X2Y2NDogY29uc29sZS5s
b2cuYmluZChjb25zb2xlKSwKKyAgICAgIHByaW50X2YzMjogY29uc29sZS5sb2cuYmluZChjb25z
b2xlKSwKKyAgICAgIHByaW50X2Y2NDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAg
IGdsb2JhbF9pMzI6IDY2NiwKKyAgICAgIGdsb2JhbF9mMzI6IDY2NiwKKyAgICAgIGdsb2JhbF9m
NjQ6IDY2NiwKKyAgICAgIHRhYmxlOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoeworICAgICAgICBp
bml0aWFsOiAxMCwKKyAgICAgICAgbWF4aW11bTogMjAsCisgICAgICAgIGVsZW1lbnQ6ICJhbnlm
dW5jIgorICAgICAgfSksCisgICAgICBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBp
bml0aWFsOiAxLCBtYXhpbXVtOiAyIH0pCisgICAgfTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAg
ICAgIGdldCh0YXJnZXQsIHByb3ApIHsKKyAgICAgICAgcmV0dXJuIHByb3AgaW4gdGFyZ2V0ID8g
dGFyZ2V0W3Byb3BdIDoge307CisgICAgICB9CisgICAgfTsKKyAgICByZWdpc3RyeSA9IG5ldyBQ
cm94eSh7IHNwZWN0ZXN0IH0sIGhhbmRsZXIpOworICB9KTsKKworICAvLyBUaGlzIGZ1bmN0aW9u
IGlzIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGdlbmVyYXRlZCBqcyB0ZXN0IGZpbGUuIEJ5
CisgIC8vIGFkZGluZyB0aGUgY2hhaW4gYXMgYSBwcm9taXNlX3Rlc3QgaGVyZSB3ZSBtYWtlIHN1
cmUgdGhhdCB0aGUgV1BUIGhhcm5lc3MKKyAgLy8gd2FpdHMgZm9yIGFsbCB0ZXN0cyBpbiB0aGUg
Y2hhaW4gdG8gZmluaXNoLgorICBwcm9taXNlX3Rlc3QoXyA9PiBjaGFpbiwgdGVzdE51bSgpICsg
IlJlaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBpbXBvcnRzIik7Cit9CisKK3JlaW5pdGlhbGl6ZVJl
Z2lzdHJ5KCk7CisKKy8qIFdBU1QgUE9MWUZJTEwgKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworZnVuY3Rpb24gYmluYXJ5KGJ5
dGVzKSB7CisgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKKyAg
bGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBmb3IgKGxldCBpID0gMDsgaSA8
IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7
CisgIH0KKyAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLyoqCisgKiBSZXR1cm5zIGEgY29tcGlsZWQg
bW9kdWxlLCBvciB0aHJvd3MgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGF0IGNvbXBpbGF0aW9uLgor
ICovCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBjb25zdCB0ZXN0
ID0gdmFsaWQKKyAgICA/ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgY29tcGlsYXRpb24gc3VjY2Vl
ZHMiCisgICAgOiAiVGVzdCB0aGF0IFdlYkFzc2VtYmx5IGNvbXBpbGF0aW9uIGZhaWxzIjsKKyAg
Y29uc3QgbG9jID0gbmV3IEVycm9yKCkuc3RhY2sudG9TdHJpbmcoKS5yZXBsYWNlKCJFcnJvciIs
ICIiKTsKKyAgbGV0IGJ1ZmZlciA9IGJpbmFyeShieXRlcyk7CisgIGxldCB2YWxpZGF0ZWQgPSBX
ZWJBc3NlbWJseS52YWxpZGF0ZShidWZmZXIpOworCisgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyh2YWxpZCwgdmFsaWRhdGVkKTsKKyAgfSwgdGVzdCk7CisKKyAgY2hhaW4g
PSBjaGFpbi50aGVuKF8gPT4gV2ViQXNzZW1ibHkuY29tcGlsZShidWZmZXIpKS50aGVuKAorICAg
IG1vZHVsZSA9PiB7CisgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICBhc3NlcnRfdHJ1
ZSh2YWxpZCwgbG9jKTsKKyAgICAgIH0sIHRlc3QpOworICAgICAgcmV0dXJuIG1vZHVsZTsKKyAg
ICB9LAorICAgIGVycm9yID0+IHsKKyAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgIGFz
c2VydF90cnVlKAorICAgICAgICAgICF2YWxpZCwKKyAgICAgICAgICBgV2ViQXNzZW1ibHkuY29t
cGlsZSBmYWlsZWQgdW5leHBlY3RlZGx5IHdpdGggJHtlcnJvcn0gYXQge2xvY31gCisgICAgICAg
ICk7CisgICAgICB9LCB0ZXN0KTsKKyAgICB9CisgICk7CisgIHJldHVybiBjaGFpbjsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X2ludmFsaWQoYnl0ZXMpIHsKKyAgbW9kdWxlKGJ5dGVzLCBFWFBFQ1Rf
SU5WQUxJRCk7Cit9CisKK2NvbnN0IGFzc2VydF9tYWxmb3JtZWQgPSBhc3NlcnRfaW52YWxpZDsK
KworZnVuY3Rpb24gaW5zdGFuY2UoYnl0ZXMsIGltcG9ydHMsIHZhbGlkID0gdHJ1ZSkgeworICBj
b25zdCB0ZXN0ID0gdmFsaWQKKyAgICA/ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgaW5zdGFudGlh
dGlvbiBzdWNjZWVkcyIKKyAgICA6ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgaW5zdGFudGlhdGlv
biBmYWlscyI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVw
bGFjZSgiRXJyb3IiLCAiIik7CisgIGNoYWluID0gUHJvbWlzZS5hbGwoW2ltcG9ydHMsIGNoYWlu
XSkKKyAgICAudGhlbih2YWx1ZXMgPT4geworICAgICAgbGV0IGltcG9ydHMgPSB2YWx1ZXNbMF0g
PyB2YWx1ZXNbMF0gOiByZWdpc3RyeTsKKyAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50
aWF0ZShiaW5hcnkoYnl0ZXMpLCBpbXBvcnRzKTsKKyAgICB9KQorICAgIC50aGVuKAorICAgICAg
cGFpciA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3Ry
dWUodmFsaWQsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgICByZXR1cm4gcGFpci5p
bnN0YW5jZTsKKyAgICAgIH0sCisgICAgICBlcnJvciA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3Qo
XyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoCisgICAgICAgICAgICAhdmFsaWQsCisgICAg
ICAgICAgICBgdW5leHBlY3RlZCBpbnN0YW50aWF0aW9uIGVycm9yLCBvYnNlcnZlZCAke2Vycm9y
fSAke2xvY31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICAgIHJldHVy
biBlcnJvcjsKKyAgICAgIH0KKyAgICApOworICByZXR1cm4gY2hhaW47Cit9CisKK2Z1bmN0aW9u
IGV4cG9ydHMoaW5zdGFuY2UpIHsKKyAgcmV0dXJuIGluc3RhbmNlLnRoZW4oaW5zdCA9PiB7Cisg
ICAgcmV0dXJuIHsgbW9kdWxlOiBpbnN0LmV4cG9ydHMsIHNwZWN0ZXN0OiByZWdpc3RyeS5zcGVj
dGVzdCB9OworICB9KTsKK30KKworZnVuY3Rpb24gY2FsbChpbnN0YW5jZSwgbmFtZSwgYXJncykg
eworICByZXR1cm4gUHJvbWlzZS5hbGwoW2luc3RhbmNlLCBjaGFpbl0pLnRoZW4odmFsdWVzID0+
IHsKKyAgICByZXR1cm4gdmFsdWVzWzBdLmV4cG9ydHNbbmFtZV0oLi4uYXJncyk7CisgIH0pOwor
fQorCitmdW5jdGlvbiBydW4oYWN0aW9uKSB7CisgIGNvbnN0IHRlc3QgPSAiUnVuIGEgV2ViQXNz
ZW1ibHkgdGVzdCB3aXRob3V0IHNwZWNpYWwgYXNzZXJ0aW9ucyI7CisgIGNvbnN0IGxvYyA9IG5l
dyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGNoYWlu
ID0gUHJvbWlzZS5hbGwoW2NoYWluLCBhY3Rpb24oKV0pCisgICAgLnRoZW4oCisgICAgICBfID0+
IHsKKyAgICAgICAgdW5pcXVlVGVzdChfID0+IHt9LCB0ZXN0KTsKKyAgICAgIH0sCisgICAgICBl
cnJvciA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3Ry
dWUoCisgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgIGB1bmV4cGVjdGVkIHJ1bnRpbWUg
ZXJyb3IsIG9ic2VydmVkICR7ZXJyb3J9ICR7bG9jfWAKKyAgICAgICAgICApOworICAgICAgICB9
LCAicnVuIik7CisgICAgICB9CisgICAgKQorICAgIC8vIENsZWFyIGFsbCBleGNlcHRpb25zLCBz
byB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVkLgorICAgIC5jYXRjaChfID0+IHt9
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3RyYXAoYWN0aW9uKSB7CisgIGNvbnN0IHRlc3QgPSAi
VGVzdCB0aGF0IGEgV2ViQXNzZW1ibHkgY29kZSB0cmFwcyI7CisgIGNvbnN0IGxvYyA9IG5ldyBF
cnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGNoYWluID0g
UHJvbWlzZS5hbGwoW2NoYWluLCBhY3Rpb24oKV0pCisgICAgLnRoZW4oCisgICAgICByZXN1bHQg
PT4geworICAgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICAgIGFzc2VydF90cnVlKGZh
bHNlLCBsb2MpOworICAgICAgICB9LCB0ZXN0KTsKKyAgICAgIH0sCisgICAgICBlcnJvciA9PiB7
CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoCisgICAg
ICAgICAgICBlcnJvciBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwKKyAgICAg
ICAgICAgIGBleHBlY3RlZCBydW50aW1lIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xvY31g
CisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9CisgICAgKQorICAgIC8v
IENsZWFyIGFsbCBleGNlcHRpb25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1
dGVkLgorICAgIC5jYXRjaChfID0+IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3JldHVybihh
Y3Rpb24sIC4uLmV4cGVjdGVkKSB7CisgIGNvbnN0IHRlc3QgPSAiVGVzdCB0aGF0IGEgV2ViQXNz
ZW1ibHkgY29kZSByZXR1cm5zIGEgc3BlY2lmaWMgcmVzdWx0IjsKKyAgY29uc3QgbG9jID0gbmV3
IEVycm9yKCkuc3RhY2sudG9TdHJpbmcoKS5yZXBsYWNlKCJFcnJvciIsICIiKTsKKyAgY2hhaW4g
PSBQcm9taXNlLmFsbChbYWN0aW9uKCksIGNoYWluXSkKKyAgICAudGhlbigKKyAgICAgIHZhbHVl
cyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgaWYgKGFjdHVhbCA9
PT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBbXTsKKyAgICAgICAgICB9IGVs
c2UgaWYgKCFBcnJheS5pc0FycmF5KGFjdHVhbCkpIHsKKyAgICAgICAgICAgIGFjdHVhbCA9IFth
Y3R1YWxdOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoYWN0dWFsLmxlbmd0aCAhPT0gZXhw
ZWN0ZWQubGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhwZWN0ZWQubGVu
Z3RoICsgIiB2YWx1ZShzKSBleHBlY3RlZCwgZ290ICIgKyBhY3R1YWwubGVuZ3RoKTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3R1YWwubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRbaV0pIHsKKyAgICAgICAgICAgICAgY2Fz
ZSAibmFuOmNhbm9uaWNhbCI6CisgICAgICAgICAgICAgIGNhc2UgIm5hbjphcml0aG1ldGljIjoK
KyAgICAgICAgICAgICAgY2FzZSAibmFuOmFueSI6CisgICAgICAgICAgICAgICAgLy8gTm90ZSB0
aGF0IEpTIGNhbid0IHJlbGlhYmx5IGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBOYU4gdmFsdWVzLAor
ICAgICAgICAgICAgICAgIC8vIHNvIHRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gdGVzdCB0aGF0IGl0
J3MgYSBjYW5vbmljYWwgTmFOLgorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKE51bWJlci5p
c05hTihhY3R1YWxbaV0pLCBgZXhwZWN0ZWQgTmFOLCBvYnNlcnZlZCAke2FjdHVhbFtpXX0uYCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlICJyZWYuZnVuYyI6
CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUodHlwZW9mIGFjdHVhbFtpXSA9PT0gImZ1bmN0
aW9uIiwgYGV4cGVjdGVkIFdhc20gZnVuY3Rpb24sIGdvdCAke2FjdHVhbFtpXX1gKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgInJlZi5leHRlcm4iOgorICAg
ICAgICAgICAgICAgIGFzc2VydF90cnVlKGFjdHVhbFtpXSAhPT0gbnVsbCwgYGV4cGVjdGVkIFdh
c20gcmVmZXJlbmNlLCBnb3QgJHthY3R1YWxbaV19YCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
YWN0dWFsW2ldLCBleHBlY3RlZFtpXSwgbG9jKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfSwKKyAgICAgIGVycm9yID0+IHsKKyAgICAgICAg
dW5pcXVlVGVzdChfID0+IHsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZSgKKyAgICAgICAgICAgIGZh
bHNlLAorICAgICAgICAgICAgYHVuZXhwZWN0ZWQgcnVudGltZSBlcnJvciwgb2JzZXJ2ZWQgJHtl
cnJvcn0gJHtsb2N9YAorICAgICAgICAgICk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfQor
ICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRl
c3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2xldCBTdGFja092
ZXJmbG93OwordHJ5IHsKKyAgKGZ1bmN0aW9uIGYoKSB7CisgICAgMSArIGYoKTsKKyAgfSkoKTsK
K30gY2F0Y2ggKGUpIHsKKyAgU3RhY2tPdmVyZmxvdyA9IGUuY29uc3RydWN0b3I7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9leGhhdXN0aW9uKGFjdGlvbikgeworICBjb25zdCB0ZXN0ID0gIlRlc3Qg
dGhhdCBhIFdlYkFzc2VtYmx5IGNvZGUgZXhoYXV0cyB0aGUgc3RhY2sgc3BhY2UiOworICBjb25z
dCBsb2MgPSBuZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9yIiwgIiIp
OworICBjaGFpbiA9IFByb21pc2UuYWxsKFthY3Rpb24oKSwgY2hhaW5dKQorICAgIC50aGVuKAor
ICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0
X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfSwKKyAgICAgIGVy
cm9yID0+IHsKKyAgICAgICAgdW5pcXVlVGVzdChfID0+IHsKKyAgICAgICAgICBhc3NlcnRfdHJ1
ZSgKKyAgICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgU3RhY2tPdmVyZmxvdywKKyAgICAgICAg
ICAgIGBleHBlY3RlZCBydW50aW1lIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xvY31gCisg
ICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9CisgICAgKQorICAgIC8vIENs
ZWFyIGFsbCBleGNlcHRpb25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVk
LgorICAgIC5jYXRjaChfID0+IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3VubGlua2FibGUo
Ynl0ZXMpIHsKKyAgY29uc3QgdGVzdCA9ICJUZXN0IHRoYXQgYSBXZWJBc3NlbWJseSBtb2R1bGUg
aXMgdW5saW5rYWJsZSI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5n
KCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQ
RUNUX0lOVkFMSUQpCisgICAgLnRoZW4oCisgICAgICByZXN1bHQgPT4geworICAgICAgICB1bmlx
dWVUZXN0KF8gPT4geworICAgICAgICAgIGFzc2VydF90cnVlKAorICAgICAgICAgICAgcmVzdWx0
IGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAorICAgICAgICAgICAgYGV4cGVjdGVk
IGxpbmsgZXJyb3IsIG9ic2VydmVkICR7cmVzdWx0fSAke2xvY31gCisgICAgICAgICAgKTsKKyAg
ICAgICAgfSwgdGVzdCk7CisgICAgICB9LAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRl
c3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0s
IHRlc3QpOworICAgICAgfQorICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28g
dGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF91bmluc3RhbnRpYWJsZShieXRlcykgeworICBjb25zdCB0
ZXN0ID0gIlRlc3QgdGhhdCBhIFdlYkFzc2VtYmx5IG1vZHVsZSBpcyB1bmluc3RhbnRpYWJsZSI7
CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJy
b3IiLCAiIik7CisgIGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lOVkFMSUQpCisg
ICAgLnRoZW4oCisgICAgICByZXN1bHQgPT4geworICAgICAgICB1bmlxdWVUZXN0KF8gPT4gewor
ICAgICAgICAgIGFzc2VydF90cnVlKAorICAgICAgICAgICAgcmVzdWx0IGluc3RhbmNlb2YgV2Vi
QXNzZW1ibHkuUnVudGltZUVycm9yLAorICAgICAgICAgICAgYGV4cGVjdGVkIGxpbmsgZXJyb3Is
IG9ic2VydmVkICR7cmVzdWx0fSAke2xvY31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVz
dCk7CisgICAgICB9LAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7Cisg
ICAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAg
ICAgfQorICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1
ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2Z1bmN0
aW9uIHJlZ2lzdGVyKG5hbWUsIGluc3RhbmNlKSB7CisgIGNvbnN0IHRlc3QgPQorICAgICJUZXN0
IHRoYXQgdGhlIGV4cG9ydHMgb2YgYSBXZWJBc3NlbWJseSBtb2R1bGUgY2FuIGJlIHJlZ2lzdGVy
ZWQiOworICBjb25zdCBsb2MgPSBuZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2Uo
IkVycm9yIiwgIiIpOworICBsZXQgc3RhY2sgPSBuZXcgRXJyb3IoKTsKKyAgY2hhaW4gPSBQcm9t
aXNlLmFsbChbaW5zdGFuY2UsIGNoYWluXSkKKyAgICAudGhlbigKKyAgICAgIHZhbHVlcyA9PiB7
CisgICAgICAgIHJlZ2lzdHJ5W25hbWVdID0gdmFsdWVzWzBdLmV4cG9ydHM7CisgICAgICB9LAor
ICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0
X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfQorICAgICkKKyAg
ICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdldCBl
eGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2Z1bmN0aW9uIGdldChpbnN0YW5j
ZSwgbmFtZSkgeworICBjb25zdCB0ZXN0ID0gIlRlc3QgdGhhdCBhbiBleHBvcnQgb2YgYSBXZWJB
c3NlbWJseSBpbnN0YW5jZSBjYW4gYmUgYWNxdWlyZWQiOworICBjb25zdCBsb2MgPSBuZXcgRXJy
b3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9yIiwgIiIpOworICBjaGFpbiA9IFBy
b21pc2UuYWxsKFtpbnN0YW5jZSwgY2hhaW5dKS50aGVuKAorICAgIHZhbHVlcyA9PiB7CisgICAg
ICBsZXQgdiA9IHZhbHVlc1swXS5leHBvcnRzW25hbWVdOworICAgICAgcmV0dXJuICh2IGluc3Rh
bmNlb2YgV2ViQXNzZW1ibHkuR2xvYmFsKSA/IHYudmFsdWUgOiB2OworICAgIH0sCisgICAgXyA9
PiB7CisgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShmYWxzZSwg
bG9jKTsKKyAgICAgIH0sIHRlc3QpOworICAgIH0KKyAgKTsKKyAgcmV0dXJuIGNoYWluOworfQor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3N5bmNf
aW5kZXguanMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3N5bmNfaW5k
ZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZWQ5ZjI5MTU5
N2MKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJu
ZXNzL3N5bmNfaW5kZXguanMKQEAgLTAsMCArMSwzODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAx
NyBXZWJBc3NlbWJseSBDb21tdW5pdHkgR3JvdXAgcGFydGljaXBhbnRzCisgKgorICogTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
KyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisg
KgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworCisndXNlIHN0
cmljdCc7CisKK2xldCB0ZXN0TnVtID0gKGZ1bmN0aW9uKCkgeworICAgIGxldCBjb3VudCA9IDE7
CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gYCMke2NvdW50Kyt9IGA7
CisgICAgfQorfSkoKTsKKworLy8gV1BUJ3MgYXNzZXJ0X3Rocm93IHVzZXMgYSBsaXN0IG9mIHBy
ZWRlZmluZWQsIGhhcmRjb2RlZCBrbm93biBlcnJvcnMuIFNpbmNlCisvLyBpdCBpcyBub3QgYXdh
cmUgb2YgdGhlIFdlYkFzc2VtYmx5IGVycm9yIHR5cGVzICh5ZXQpLCBpbXBsZW1lbnQgb3VyIG93
bgorLy8gdmVyc2lvbi4KK2Z1bmN0aW9uIGFzc2VydFRocm93cyhmdW5jLCBlcnIpIHsKKyAgICBs
ZXQgY2F1Z2h0ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0
Y2goZSkgeworICAgICAgICBhc3NlcnRfdHJ1ZShlIGluc3RhbmNlb2YgZXJyLCBgZXhwZWN0ZWQg
JHtlcnIubmFtZX0sIG9ic2VydmVkICR7ZS5jb25zdHJ1Y3Rvci5uYW1lfWApOworICAgICAgICBj
YXVnaHQgPSB0cnVlOworICAgIH0KKyAgICBhc3NlcnRfdHJ1ZShjYXVnaHQsIHRlc3ROdW0oKSAr
ICJhc3NlcnRUaHJvd3MgbXVzdCBjYXRjaCBhbnkgZXJyb3IuIikKK30KKworLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogV0FTVCBIQVJORVNTICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
LworCisvLyBGb3IgYXNzZXJ0aW9ucyBpbnRlcm5hbCB0byBvdXIgdGVzdCBoYXJuZXNzLgorZnVu
Y3Rpb24gX2Fzc2VydCh4KSB7CisgICAgaWYgKCF4KSB7CisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgQXNzZXJ0aW9uIGZhaWx1cmU6ICR7eH1gKTsKKyAgICB9Cit9CisKKy8vIEEgc2ltcGxlIHN1
bSB0eXBlIHRoYXQgY2FuIGVpdGhlciBiZSBhIHZhbGlkIFZhbHVlIG9yIGFuIEVycm9yLgorZnVu
Y3Rpb24gUmVzdWx0KHR5cGUsIG1heWJlVmFsdWUpIHsKKyAgICB0aGlzLnZhbHVlID0gbWF5YmVW
YWx1ZTsKKyAgICB0aGlzLnR5cGUgPSB0eXBlOworfTsKKworUmVzdWx0LlZBTFVFID0gJ1ZBTFVF
JzsKK1Jlc3VsdC5FUlJPUiA9ICdFUlJPUic7CisKK2Z1bmN0aW9uIFZhbHVlUmVzdWx0KHZhbCkg
eyByZXR1cm4gbmV3IFJlc3VsdChSZXN1bHQuVkFMVUUsIHZhbCk7IH0KK2Z1bmN0aW9uIEVycm9y
UmVzdWx0KGVycikgeyByZXR1cm4gbmV3IFJlc3VsdChSZXN1bHQuRVJST1IsIGVycik7IH0KKwor
UmVzdWx0LnByb3RvdHlwZS5pc0Vycm9yID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLnR5cGUg
PT09IFJlc3VsdC5FUlJPUjsgfQorCitjb25zdCBFWFBFQ1RfSU5WQUxJRCA9IGZhbHNlOworCisv
KiBEQVRBICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiovCisKK2xldCBleHRlcm5yZWZzID0ge307CitsZXQgZXh0ZXJu
c3ltID0gU3ltYm9sKCJleHRlcm5yZWYiKTsKK2Z1bmN0aW9uIGV4dGVybnJlZihzKSB7CisgIGlm
ICghIChzIGluIGV4dGVybnJlZnMpKSBleHRlcm5yZWZzW3NdID0ge1tleHRlcm5zeW1dOiBzfTsK
KyAgcmV0dXJuIGV4dGVybnJlZnNbc107Cit9CitmdW5jdGlvbiBpc19leHRlcm5yZWYoeCkgewor
ICByZXR1cm4gKHggIT09IG51bGwgJiYgZXh0ZXJuc3ltIGluIHgpID8gMSA6IDA7Cit9CitmdW5j
dGlvbiBpc19mdW5jcmVmKHgpIHsKKyAgcmV0dXJuIHR5cGVvZiB4ID09PSAiZnVuY3Rpb24iID8g
MSA6IDA7Cit9CitmdW5jdGlvbiBlcV9leHRlcm5yZWYoeCwgeSkgeworICByZXR1cm4geCA9PT0g
eSA/IDEgOiAwOworfQorZnVuY3Rpb24gZXFfZnVuY3JlZih4LCB5KSB7CisgIHJldHVybiB4ID09
PSB5ID8gMSA6IDA7Cit9CisKK2xldCAkJDsKKworLy8gRGVmYXVsdCBpbXBvcnRzLgordmFyIHJl
Z2lzdHJ5ID0ge307CisKKy8vIFJlc2V0cyB0aGUgcmVnaXN0cnkgYmV0d2VlbiB0d28gZGlmZmVy
ZW50IFdQVCB0ZXN0cy4KK2Z1bmN0aW9uIHJlaW5pdGlhbGl6ZVJlZ2lzdHJ5KCkgeworICAgIGlm
ICh0eXBlb2YgV2ViQXNzZW1ibHkgPT09ICd1bmRlZmluZWQnKQorICAgICAgICByZXR1cm47CisK
KyAgICBsZXQgc3BlY3Rlc3QgPSB7CisgICAgICAgIGV4dGVybnJlZjogZXh0ZXJucmVmLAorICAg
ICAgICBpc19leHRlcm5yZWY6IGlzX2V4dGVybnJlZiwKKyAgICAgICAgaXNfZnVuY3JlZjogaXNf
ZnVuY3JlZiwKKyAgICAgICAgZXFfZXh0ZXJucmVmOiBlcV9leHRlcm5yZWYsCisgICAgICAgIGVx
X2Z1bmNyZWY6IGVxX2Z1bmNyZWYsCisgICAgICAgIHByaW50OiBjb25zb2xlLmxvZy5iaW5kKGNv
bnNvbGUpLAorICAgICAgICBwcmludF9pMzI6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisg
ICAgICAgIHByaW50X2kzMl9mMzI6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICAg
IHByaW50X2Y2NF9mNjQ6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICAgIHByaW50
X2YzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgICAgcHJpbnRfZjY0OiBjb25z
b2xlLmxvZy5iaW5kKGNvbnNvbGUpLAorICAgICAgICBnbG9iYWxfaTMyOiA2NjYsCisgICAgICAg
IGdsb2JhbF9mMzI6IDY2NiwKKyAgICAgICAgZ2xvYmFsX2Y2NDogNjY2LAorICAgICAgICB0YWJs
ZTogbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOiAxMCwgbWF4aW11bTogMjAsIGVsZW1l
bnQ6ICdhbnlmdW5jJ30pLAorICAgICAgICBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnko
e2luaXRpYWw6IDEsIG1heGltdW06IDJ9KQorICAgIH07CisgICAgbGV0IGhhbmRsZXIgPSB7Cisg
ICAgICAgIGdldCh0YXJnZXQsIHByb3ApIHsKKyAgICAgICAgcmV0dXJuIChwcm9wIGluIHRhcmdl
dCkgPyAgdGFyZ2V0W3Byb3BdIDoge307CisgICAgICB9CisgICAgfTsKKyAgICByZWdpc3RyeSA9
IG5ldyBQcm94eSh7c3BlY3Rlc3R9LCBoYW5kbGVyKTsKK30KKworcmVpbml0aWFsaXplUmVnaXN0
cnkoKTsKKworLyogV0FTVCBQT0xZRklMTCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitmdW5jdGlvbiBiaW5hcnkoYnl0ZXMp
IHsKKyAgICBsZXQgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVzLmxlbmd0aCk7CisgICAg
bGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2Rl
QXQoaSk7CisgICAgfQorICAgIHJldHVybiBidWZmZXI7Cit9CisKKy8qKgorICogUmV0dXJucyBh
IGNvbXBpbGVkIG1vZHVsZSwgb3IgdGhyb3dzIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBhdCBjb21w
aWxhdGlvbi4KKyAqLworZnVuY3Rpb24gbW9kdWxlKGJ5dGVzLCB2YWxpZCA9IHRydWUpIHsKKyAg
ICBsZXQgYnVmZmVyID0gYmluYXJ5KGJ5dGVzKTsKKyAgICBsZXQgdmFsaWRhdGVkOworCisgICAg
dHJ5IHsKKyAgICAgICAgdmFsaWRhdGVkID0gV2ViQXNzZW1ibHkudmFsaWRhdGUoYnVmZmVyKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgV2ViQXNzZW1ibHku
dmFsaWRhdGUgdGhyb3dzICR7dHlwZW9mIGV9OiAke2V9JHtlLnN0YWNrfWApOworICAgIH0KKwor
ICAgIGlmICh2YWxpZGF0ZWQgIT09IHZhbGlkKSB7CisgICAgICAgIC8vIFRyeSB0byBnZXQgYSBt
b3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBXZWJBc3NlbWJseS5Db21waWxlRXJy
b3IuCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1
ZmZlcik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGlmIChlIGluc3RhbmNl
b2YgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
ZWJBc3NlbWJseS5Db21waWxlRXJyb3IoYFdlYkFzc2VtYmx5LnZhbGlkYXRlIGVycm9yOiAke2Uu
dG9TdHJpbmcoKX0ke2Uuc3RhY2t9XG5gKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYFdlYkFzc2VtYmx5LnZhbGlkYXRlIHRocm93cyAke3R5cGVv
ZiBlfTogJHtlfSR7ZS5zdGFja31gKTsKKyAgICAgICAgfQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYFdlYkFzc2VtYmx5LnZhbGlkYXRlIHdhcyBleHBlY3RlZCB0byBmYWlsLCBidXQgZGlkbid0
YCk7CisgICAgfQorCisgICAgbGV0IG1vZHVsZTsKKyAgICB0cnkgeworICAgICAgICBtb2R1bGUg
PSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlcik7CisgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgIGlmICh2YWxpZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV2ViQXNzZW1ibHku
TW9kdWxlIGN0b3IgdW5leHBlY3RlZGx5IHRocm93cyAke3R5cGVvZiBlfTogJHtlfSR7ZS5zdGFj
a30nKTsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9CisKKyAgICByZXR1cm4gbW9kdWxlOworfQor
CitmdW5jdGlvbiB1bmlxdWVUZXN0KGZ1bmMsIGRlc2MpIHsKKyAgICB0ZXN0KGZ1bmMsIHRlc3RO
dW0oKSArIGRlc2MpOworfQorCitmdW5jdGlvbiBhc3NlcnRfaW52YWxpZChieXRlcykgeworICAg
IHVuaXF1ZVRlc3QoKCkgPT4geworICAgICAgICB0cnkgeworICAgICAgICAgICAgbW9kdWxlKGJ5
dGVzLCAvKiB2YWxpZCAqLyBmYWxzZSk7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Rp
ZCBub3QgZmFpbCcpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGFzc2VydF90
cnVlKGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsICJleHBlY3RlZCBpbnZh
bGlkIGZhaWx1cmU6Iik7CisgICAgICAgIH0KKyAgICB9LCAiQSB3YXN0IG1vZHVsZSB0aGF0IHNo
b3VsZCBiZSBpbnZhbGlkIG9yIG1hbGZvcm1lZC4iKTsKK30KKworY29uc3QgYXNzZXJ0X21hbGZv
cm1lZCA9IGFzc2VydF9pbnZhbGlkOworCitmdW5jdGlvbiBpbnN0YW5jZShieXRlcywgaW1wb3J0
cyA9IHJlZ2lzdHJ5LCB2YWxpZCA9IHRydWUpIHsKKyAgICBpZiAoaW1wb3J0cyBpbnN0YW5jZW9m
IFJlc3VsdCkgeworICAgICAgICBpZiAoaW1wb3J0cy5pc0Vycm9yKCkpCisgICAgICAgICAgICBy
ZXR1cm4gaW1wb3J0czsKKyAgICAgICAgaW1wb3J0cyA9IGltcG9ydHMudmFsdWU7CisgICAgfQor
CisgICAgbGV0IGVyciA9IG51bGw7CisKKyAgICBsZXQgbSwgaTsKKyAgICB0cnkgeworICAgICAg
ICBsZXQgbSA9IG1vZHVsZShieXRlcyk7CisgICAgICAgIGkgPSBuZXcgV2ViQXNzZW1ibHkuSW5z
dGFuY2UobSwgaW1wb3J0cyk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGVyciA9IGU7Cisg
ICAgfQorCisgICAgaWYgKHZhbGlkKSB7CisgICAgICAgIHVuaXF1ZVRlc3QoKCkgPT4geworICAg
ICAgICAgICAgbGV0IGluc3RhbnRpYXRlZCA9IGVyciA9PT0gbnVsbDsKKyAgICAgICAgICAgIGFz
c2VydF90cnVlKGluc3RhbnRpYXRlZCwgZXJyKTsKKyAgICAgICAgfSwgIm1vZHVsZSBzdWNjZXNz
ZnVsbHkgaW5zdGFudGlhdGVkIik7CisgICAgfQorCisgICAgcmV0dXJuIGVyciAhPT0gbnVsbCA/
IEVycm9yUmVzdWx0KGVycikgOiBWYWx1ZVJlc3VsdChpKTsKK30KKworZnVuY3Rpb24gcmVnaXN0
ZXIobmFtZSwgaW5zdGFuY2UpIHsKKyAgICBfYXNzZXJ0KGluc3RhbmNlIGluc3RhbmNlb2YgUmVz
dWx0KTsKKworICAgIGlmIChpbnN0YW5jZS5pc0Vycm9yKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJlZ2lzdHJ5W25hbWVdID0gaW5zdGFuY2UudmFsdWUuZXhwb3J0czsKK30KKworZnVuY3Rp
b24gY2FsbChpbnN0YW5jZSwgbmFtZSwgYXJncykgeworICAgIF9hc3NlcnQoaW5zdGFuY2UgaW5z
dGFuY2VvZiBSZXN1bHQpOworCisgICAgaWYgKGluc3RhbmNlLmlzRXJyb3IoKSkKKyAgICAgICAg
cmV0dXJuIGluc3RhbmNlOworCisgICAgbGV0IGVyciA9IG51bGw7CisgICAgbGV0IHJlc3VsdDsK
KyAgICB0cnkgeworICAgICAgICByZXN1bHQgPSBpbnN0YW5jZS52YWx1ZS5leHBvcnRzW25hbWVd
KC4uLmFyZ3MpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBlcnIgPSBlOworICAgIH0KKwor
ICAgIHJldHVybiBlcnIgIT09IG51bGwgPyBFcnJvclJlc3VsdChlcnIpIDogVmFsdWVSZXN1bHQo
cmVzdWx0KTsKK307CisKK2Z1bmN0aW9uIGdldChpbnN0YW5jZSwgbmFtZSkgeworICAgIF9hc3Nl
cnQoaW5zdGFuY2UgaW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAgaWYgKGluc3RhbmNlLmlzRXJy
b3IoKSkKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworCisgICAgbGV0IHYgPSBpbnN0YW5jZS52
YWx1ZS5leHBvcnRzW25hbWVdOworICAgIHJldHVybiBWYWx1ZVJlc3VsdCgodiBpbnN0YW5jZW9m
IFdlYkFzc2VtYmx5Lkdsb2JhbCkgPyB2LnZhbHVlIDogdik7Cit9CisKK2Z1bmN0aW9uIGV4cG9y
dHMoaW5zdGFuY2UpIHsKKyAgICBfYXNzZXJ0KGluc3RhbmNlIGluc3RhbmNlb2YgUmVzdWx0KTsK
KworICAgIGlmIChpbnN0YW5jZS5pc0Vycm9yKCkpCisgICAgICAgIHJldHVybiBpbnN0YW5jZTsK
KworICAgIHJldHVybiBWYWx1ZVJlc3VsdCh7IG1vZHVsZTogaW5zdGFuY2UudmFsdWUuZXhwb3J0
cywgc3BlY3Rlc3Q6IHJlZ2lzdHJ5LnNwZWN0ZXN0IH0pOworfQorCitmdW5jdGlvbiBydW4oYWN0
aW9uKSB7CisgICAgbGV0IHJlc3VsdCA9IGFjdGlvbigpOworCisgICAgX2Fzc2VydChyZXN1bHQg
aW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAgdW5pcXVlVGVzdCgoKSA9PiB7CisgICAgICAgIGlm
IChyZXN1bHQuaXNFcnJvcigpKQorICAgICAgICAgICAgdGhyb3cgcmVzdWx0LnZhbHVlOworICAg
IH0sICJBIHdhc3QgdGVzdCB0aGF0IHJ1bnMgd2l0aG91dCBhbnkgc3BlY2lhbCBhc3NlcnRpb24u
Iik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF91bmxpbmthYmxlKGJ5dGVzKSB7CisgICAgbGV0IHJl
c3VsdCA9IGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lOVkFMSUQpOworCisgICAg
X2Fzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAgdW5pcXVlVGVzdCgoKSA9
PiB7CisgICAgICAgIGFzc2VydF90cnVlKHJlc3VsdC5pc0Vycm9yKCksICdleHBlY3RlZCBlcnJv
ciByZXN1bHQnKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKKyAgICAgICAgICAg
IGxldCBlID0gcmVzdWx0LnZhbHVlOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBpbnN0YW5j
ZW9mIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYGV4cGVjdGVkIGxpbmsgZXJyb3IsIG9ic2VydmVk
ICR7ZX06YCk7CisgICAgICAgIH0KKyAgICB9LCAiQSB3YXN0IG1vZHVsZSB0aGF0IGlzIHVubGlu
a2FibGUuIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF91bmluc3RhbnRpYWJsZShieXRlcykgewor
ICAgIGxldCByZXN1bHQgPSBpbnN0YW5jZShieXRlcywgcmVnaXN0cnksIEVYUEVDVF9JTlZBTElE
KTsKKworICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KTsKKworICAgIHVuaXF1
ZVRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShyZXN1bHQuaXNFcnJvcigpLCAnZXhw
ZWN0ZWQgZXJyb3IgcmVzdWx0Jyk7CisgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7Cisg
ICAgICAgICAgICBsZXQgZSA9IHJlc3VsdC52YWx1ZTsKKyAgICAgICAgICAgIGFzc2VydF90cnVl
KGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsIGBleHBlY3RlZCBydW50aW1l
IGVycm9yLCBvYnNlcnZlZCAke2V9OmApOworICAgICAgICB9CisgICAgfSwgIkEgd2FzdCBtb2R1
bGUgdGhhdCBpcyB1bmluc3RhbnRpYWJsZS4iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3RyYXAo
YWN0aW9uKSB7CisgICAgbGV0IHJlc3VsdCA9IGFjdGlvbigpOworCisgICAgX2Fzc2VydChyZXN1
bHQgaW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAgdW5pcXVlVGVzdCgoKSA9PiB7CisgICAgICAg
IGFzc2VydF90cnVlKHJlc3VsdC5pc0Vycm9yKCksICdleHBlY3RlZCBlcnJvciByZXN1bHQnKTsK
KyAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKKyAgICAgICAgICAgIGxldCBlID0gcmVz
dWx0LnZhbHVlOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBpbnN0YW5jZW9mIFdlYkFzc2Vt
Ymx5LlJ1bnRpbWVFcnJvciwgYGV4cGVjdGVkIHJ1bnRpbWUgZXJyb3IsIG9ic2VydmVkICR7ZX06
YCk7CisgICAgICAgIH0KKyAgICB9LCAiQSB3YXN0IG1vZHVsZSB0aGF0IG11c3QgdHJhcCBhdCBy
dW50aW1lLiIpOworfQorCitsZXQgU3RhY2tPdmVyZmxvdzsKK3RyeSB7IChmdW5jdGlvbiBmKCkg
eyAxICsgZigpIH0pKCkgfSBjYXRjaCAoZSkgeyBTdGFja092ZXJmbG93ID0gZS5jb25zdHJ1Y3Rv
ciB9CisKK2Z1bmN0aW9uIGFzc2VydF9leGhhdXN0aW9uKGFjdGlvbikgeworICAgIGxldCByZXN1
bHQgPSBhY3Rpb24oKTsKKworICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KTsK
KworICAgIHVuaXF1ZVRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShyZXN1bHQuaXNF
cnJvcigpLCAnZXhwZWN0ZWQgZXJyb3IgcmVzdWx0Jyk7CisgICAgICAgIGlmIChyZXN1bHQuaXNF
cnJvcigpKSB7CisgICAgICAgICAgICBsZXQgZSA9IHJlc3VsdC52YWx1ZTsKKyAgICAgICAgICAg
IGFzc2VydF90cnVlKGUgaW5zdGFuY2VvZiBTdGFja092ZXJmbG93LCBgZXhwZWN0ZWQgc3RhY2sg
b3ZlcmZsb3cgZXJyb3IsIG9ic2VydmVkICR7ZX06YCk7CisgICAgICAgIH0KKyAgICB9LCAiQSB3
YXN0IG1vZHVsZSB0aGF0IG11c3QgZXhoYXVzdCB0aGUgc3RhY2sgc3BhY2UuIik7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9yZXR1cm4oYWN0aW9uLCAuLi5leHBlY3RlZCkgeworICAgIGxldCByZXN1
bHQgPSBhY3Rpb24oKTsKKyAgICBfYXNzZXJ0KHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCk7CisK
KyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUoIXJlc3VsdC5pc0Vy
cm9yKCksIGBleHBlY3RlZCBzdWNjZXNzIHJlc3VsdCwgZ290OiAke3Jlc3VsdC52YWx1ZX0uYCk7
CisgICAgICAgIGxldCBhY3R1YWwgPSByZXN1bHQudmFsdWU7CisgICAgICAgIGlmIChhY3R1YWwg
PT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgYWN0dWFsID0gW107CisgICAgICAgIH0gZWxz
ZSBpZiAoIUFycmF5LmlzQXJyYXkoYWN0dWFsKSkgeworICAgICAgICAgICAgYWN0dWFsID0gW2Fj
dHVhbF07CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFjdHVhbC5sZW5ndGggIT09IGV4cGVjdGVk
Lmxlbmd0aCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGV4cGVjdGVkLmxlbmd0aCAr
ICIgdmFsdWUocykgZXhwZWN0ZWQsIGdvdCAiICsgYWN0dWFsLmxlbmd0aCk7CisgICAgICAgIH0K
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3R1YWwubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIGlmIChleHBlY3RlZFtpXSBpbnN0YW5jZW9mIFJlc3VsdCkgeworICAgICAgICAgICAg
ICAgIGlmIChleHBlY3RlZFtpXS5pc0Vycm9yKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFtpXSA9IGV4cGVjdGVkW2ldLnZhbHVlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgc3dpdGNoIChleHBlY3RlZFtpXSkgeworICAgICAgICAg
ICAgICAgIGNhc2UgIm5hbjpjYW5vbmljYWwiOgorICAgICAgICAgICAgICAgIGNhc2UgIm5hbjph
cml0aG1ldGljIjoKKyAgICAgICAgICAgICAgICBjYXNlICJuYW46YW55IjoKKyAgICAgICAgICAg
ICAgICAgICAgLy8gTm90ZSB0aGF0IEpTIGNhbid0IHJlbGlhYmx5IGRpc3Rpbmd1aXNoIGRpZmZl
cmVudCBOYU4gdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAvLyBzbyB0aGVyZSdzIG5vIGdv
b2Qgd2F5IHRvIHRlc3QgdGhhdCBpdCdzIGEgY2Fub25pY2FsIE5hTi4KKyAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoTnVtYmVyLmlzTmFOKGFjdHVhbFtpXSksIGBleHBlY3RlZCBOYU4s
IG9ic2VydmVkICR7YWN0dWFsW2ldfS5gKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIGNhc2UgInJlZi5mdW5jIjoKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0X3RydWUodHlwZW9mIGFjdHVhbFtpXSA9PT0gImZ1bmN0aW9uIiwgYGV4cGVjdGVkIFdhc20g
ZnVuY3Rpb24sIGdvdCAke2FjdHVhbFtpXX1gKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIGNhc2UgInJlZi5leHRlcm4iOgorICAgICAgICAgICAgICAgICAg
ICBhc3NlcnRfdHJ1ZShhY3R1YWxbaV0gIT09IG51bGwsIGBleHBlY3RlZCBXYXNtIHJlZmVyZW5j
ZSwgZ290ICR7YWN0dWFsW2ldfWApOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhh
Y3R1YWxbaV0sIGV4cGVjdGVkW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0s
ICJBIHdhc3QgbW9kdWxlIHRoYXQgbXVzdCByZXR1cm4gYSBwYXJ0aWN1bGFyIHZhbHVlLiIpOwor
fQorCitmdW5jdGlvbiBhc3NlcnRfcmV0dXJuX25hbihhY3Rpb24pIHsKKyAgICBsZXQgcmVzdWx0
ID0gYWN0aW9uKCk7CisKKyAgICBfYXNzZXJ0KHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCk7CisK
KyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUoIXJlc3VsdC5pc0Vy
cm9yKCksICdleHBlY3RlZCBzdWNjZXNzIHJlc3VsdCcpOworICAgICAgICBpZiAoIXJlc3VsdC5p
c0Vycm9yKCkpIHsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKE51bWJlci5pc05hTihyZXN1bHQu
dmFsdWUpLCBgZXhwZWN0ZWQgTmFOLCBvYnNlcnZlZCAke3Jlc3VsdC52YWx1ZX0uYCk7CisgICAg
ICAgIH07CisgICAgfSwgIkEgd2FzdCBtb2R1bGUgdGhhdCBtdXN0IHJldHVybiBOYU4uIik7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dhc20t
Y29uc3RhbnRzLmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy93YXNt
LWNvbnN0YW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ0
MzlhMjVkN2RlYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1z
cGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMuanMKQEAgLTAsMCArMSwzODQgQEAKKy8vIENvcHly
aWdodCAyMDE1IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBGbGFn
czogLS1leHBvc2Utd2FzbQorCitsZXQgaG9zdHJlZnMgPSB7fTsKK2xldCBob3N0c3ltID0gU3lt
Ym9sKCJob3N0cmVmIik7CitmdW5jdGlvbiBob3N0cmVmKHMpIHsKKyAgaWYgKCEgKHMgaW4gaG9z
dHJlZnMpKSBob3N0cmVmc1tzXSA9IHtbaG9zdHN5bV06IHN9OworICByZXR1cm4gaG9zdHJlZnNb
c107Cit9CisKK2Z1bmN0aW9uIGJ5dGVzKCkgeworICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVm
ZmVyKGFyZ3VtZW50cy5sZW5ndGgpOworICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZl
cik7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAg
dmFyIHZhbCA9IGFyZ3VtZW50c1tpXTsKKyAgICBpZiAoKHR5cGVvZiB2YWwpID09ICJzdHJpbmci
KSB2YWwgPSB2YWwuY2hhckNvZGVBdCgwKTsKKyAgICB2aWV3W2ldID0gdmFsIHwgMDsKKyAgfQor
ICByZXR1cm4gYnVmZmVyOworfQorCisvLyBIZWFkZXIgZGVjbGFyYXRpb24gY29uc3RhbnRzCit2
YXIga1dhc21IMCA9IDA7Cit2YXIga1dhc21IMSA9IDB4NjE7Cit2YXIga1dhc21IMiA9IDB4NzM7
Cit2YXIga1dhc21IMyA9IDB4NmQ7CisKK3ZhciBrV2FzbVYwID0gMHgxOwordmFyIGtXYXNtVjEg
PSAwOwordmFyIGtXYXNtVjIgPSAwOwordmFyIGtXYXNtVjMgPSAwOworCit2YXIga0hlYWRlclNp
emUgPSA4OwordmFyIGtQYWdlU2l6ZSA9IDY1NTM2OworCitmdW5jdGlvbiBieXRlc1dpdGhIZWFk
ZXIoKSB7CisgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoa0hlYWRlclNpemUgKyBhcmd1
bWVudHMubGVuZ3RoKTsKKyAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICB2
aWV3WzBdID0ga1dhc21IMDsKKyAgdmlld1sxXSA9IGtXYXNtSDE7CisgIHZpZXdbMl0gPSBrV2Fz
bUgyOworICB2aWV3WzNdID0ga1dhc21IMzsKKyAgdmlld1s0XSA9IGtXYXNtVjA7CisgIHZpZXdb
NV0gPSBrV2FzbVYxOworICB2aWV3WzZdID0ga1dhc21WMjsKKyAgdmlld1s3XSA9IGtXYXNtVjM7
CisgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFy
IHZhbCA9IGFyZ3VtZW50c1tpXTsKKyAgICBpZiAoKHR5cGVvZiB2YWwpID09ICJzdHJpbmciKSB2
YWwgPSB2YWwuY2hhckNvZGVBdCgwKTsKKyAgICB2aWV3W2tIZWFkZXJTaXplICsgaV0gPSB2YWwg
fCAwOworICB9CisgIHJldHVybiBidWZmZXI7Cit9CisKK2xldCBrRGVjbE5vTG9jYWxzID0gMDsK
KworLy8gU2VjdGlvbiBkZWNsYXJhdGlvbiBjb25zdGFudHMKK2xldCBrVW5rbm93blNlY3Rpb25D
b2RlID0gMDsKK2xldCBrVHlwZVNlY3Rpb25Db2RlID0gMTsgICAgICAvLyBGdW5jdGlvbiBzaWdu
YXR1cmUgZGVjbGFyYXRpb25zCitsZXQga0ltcG9ydFNlY3Rpb25Db2RlID0gMjsgICAgLy8gSW1w
b3J0IGRlY2xhcmF0aW9ucworbGV0IGtGdW5jdGlvblNlY3Rpb25Db2RlID0gMzsgIC8vIEZ1bmN0
aW9uIGRlY2xhcmF0aW9ucworbGV0IGtUYWJsZVNlY3Rpb25Db2RlID0gNDsgICAgIC8vIEluZGly
ZWN0IGZ1bmN0aW9uIHRhYmxlIGFuZCBvdGhlciB0YWJsZXMKK2xldCBrTWVtb3J5U2VjdGlvbkNv
ZGUgPSA1OyAgICAvLyBNZW1vcnkgYXR0cmlidXRlcworbGV0IGtHbG9iYWxTZWN0aW9uQ29kZSA9
IDY7ICAgIC8vIEdsb2JhbCBkZWNsYXJhdGlvbnMKK2xldCBrRXhwb3J0U2VjdGlvbkNvZGUgPSA3
OyAgICAvLyBFeHBvcnRzCitsZXQga1N0YXJ0U2VjdGlvbkNvZGUgPSA4OyAgICAgLy8gU3RhcnQg
ZnVuY3Rpb24gZGVjbGFyYXRpb24KK2xldCBrRWxlbWVudFNlY3Rpb25Db2RlID0gOTsgIC8vIEVs
ZW1lbnRzIHNlY3Rpb24KK2xldCBrQ29kZVNlY3Rpb25Db2RlID0gMTA7ICAgICAgLy8gRnVuY3Rp
b24gY29kZQorbGV0IGtEYXRhU2VjdGlvbkNvZGUgPSAxMTsgICAgIC8vIERhdGEgc2VnbWVudHMK
K2xldCBrTmFtZVNlY3Rpb25Db2RlID0gMTI7ICAgICAvLyBOYW1lIHNlY3Rpb24gKGVuY29kZWQg
YXMgc3RyaW5nKQorCisvLyBOYW1lIHNlY3Rpb24gdHlwZXMKK2xldCBrTW9kdWxlTmFtZUNvZGUg
PSAwOworbGV0IGtGdW5jdGlvbk5hbWVzQ29kZSA9IDE7CitsZXQga0xvY2FsTmFtZXNDb2RlID0g
MjsKKworbGV0IGtXYXNtRnVuY3Rpb25UeXBlRm9ybSA9IDB4NjA7CitsZXQga1dhc21GdW5jUmVm
dGlvblR5cGVGb3JtID0gMHg3MDsKKworbGV0IGtSZXNpemFibGVNYXhpbXVtRmxhZyA9IDE7CisK
Ky8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZsYWdzCitsZXQga0RlY2xGdW5jdGlvbk5hbWUgICA9
IDB4MDE7CitsZXQga0RlY2xGdW5jdGlvbkltcG9ydCA9IDB4MDI7CitsZXQga0RlY2xGdW5jdGlv
bkxvY2FscyA9IDB4MDQ7CitsZXQga0RlY2xGdW5jdGlvbkV4cG9ydCA9IDB4MDg7CisKKy8vIExv
Y2FsIHR5cGVzCitsZXQga1dhc21TdG10ID0gMHg0MDsKK2xldCBrV2FzbUkzMiA9IDB4N2Y7Cits
ZXQga1dhc21JNjQgPSAweDdlOworbGV0IGtXYXNtRjMyID0gMHg3ZDsKK2xldCBrV2FzbUY2NCA9
IDB4N2M7CitsZXQga1dhc21TMTI4ID0gMHg3YjsKKworbGV0IGtFeHRlcm5hbEZ1bmN0aW9uID0g
MDsKK2xldCBrRXh0ZXJuYWxUYWJsZSA9IDE7CitsZXQga0V4dGVybmFsTWVtb3J5ID0gMjsKK2xl
dCBrRXh0ZXJuYWxHbG9iYWwgPSAzOworCitsZXQga1RhYmxlWmVybyA9IDA7CitsZXQga01lbW9y
eVplcm8gPSAwOworCisvLyBVc2VmdWwgc2lnbmF0dXJlcworbGV0IGtTaWdfaV9pID0gbWFrZVNp
Zyhba1dhc21JMzJdLCBba1dhc21JMzJdKTsKK2xldCBrU2lnX2xfbCA9IG1ha2VTaWcoW2tXYXNt
STY0XSwgW2tXYXNtSTY0XSk7CitsZXQga1NpZ19pX2wgPSBtYWtlU2lnKFtrV2FzbUk2NF0sIFtr
V2FzbUkzMl0pOworbGV0IGtTaWdfaV9paSA9IG1ha2VTaWcoW2tXYXNtSTMyLCBrV2FzbUkzMl0s
IFtrV2FzbUkzMl0pOworbGV0IGtTaWdfaV9paWkgPSBtYWtlU2lnKFtrV2FzbUkzMiwga1dhc21J
MzIsIGtXYXNtSTMyXSwgW2tXYXNtSTMyXSk7CitsZXQga1NpZ19kX2RkID0gbWFrZVNpZyhba1dh
c21GNjQsIGtXYXNtRjY0XSwgW2tXYXNtRjY0XSk7CitsZXQga1NpZ19sX2xsID0gbWFrZVNpZyhb
a1dhc21JNjQsIGtXYXNtSTY0XSwgW2tXYXNtSTY0XSk7CitsZXQga1NpZ19pX2RkID0gbWFrZVNp
Zyhba1dhc21GNjQsIGtXYXNtRjY0XSwgW2tXYXNtSTMyXSk7CitsZXQga1NpZ192X3YgPSBtYWtl
U2lnKFtdLCBbXSk7CitsZXQga1NpZ19pX3YgPSBtYWtlU2lnKFtdLCBba1dhc21JMzJdKTsKK2xl
dCBrU2lnX2xfdiA9IG1ha2VTaWcoW10sIFtrV2FzbUk2NF0pOworbGV0IGtTaWdfZl92ID0gbWFr
ZVNpZyhbXSwgW2tXYXNtRjY0XSk7CitsZXQga1NpZ19kX3YgPSBtYWtlU2lnKFtdLCBba1dhc21G
NjRdKTsKK2xldCBrU2lnX3ZfaSA9IG1ha2VTaWcoW2tXYXNtSTMyXSwgW10pOworbGV0IGtTaWdf
dl9paSA9IG1ha2VTaWcoW2tXYXNtSTMyLCBrV2FzbUkzMl0sIFtdKTsKK2xldCBrU2lnX3ZfaWlp
ID0gbWFrZVNpZyhba1dhc21JMzIsIGtXYXNtSTMyLCBrV2FzbUkzMl0sIFtdKTsKK2xldCBrU2ln
X3ZfbCA9IG1ha2VTaWcoW2tXYXNtSTY0XSwgW10pOworbGV0IGtTaWdfdl9kID0gbWFrZVNpZyhb
a1dhc21GNjRdLCBbXSk7CitsZXQga1NpZ192X2RkID0gbWFrZVNpZyhba1dhc21GNjQsIGtXYXNt
RjY0XSwgW10pOworbGV0IGtTaWdfdl9kZGkgPSBtYWtlU2lnKFtrV2FzbUY2NCwga1dhc21GNjQs
IGtXYXNtSTMyXSwgW10pOworbGV0IGtTaWdfc192ID0gbWFrZVNpZyhbXSwgW2tXYXNtUzEyOF0p
OworCitmdW5jdGlvbiBtYWtlU2lnKHBhcmFtcywgcmVzdWx0cykgeworICByZXR1cm4ge3BhcmFt
czogcGFyYW1zLCByZXN1bHRzOiByZXN1bHRzfTsKK30KKworZnVuY3Rpb24gbWFrZVNpZ192X3go
eCkgeworICByZXR1cm4gbWFrZVNpZyhbeF0sIFtdKTsKK30KKworZnVuY3Rpb24gbWFrZVNpZ192
X3h4KHgpIHsKKyAgcmV0dXJuIG1ha2VTaWcoW3gsIHhdLCBbXSk7Cit9CisKK2Z1bmN0aW9uIG1h
a2VTaWdfcl92KHIpIHsKKyAgcmV0dXJuIG1ha2VTaWcoW10sIFtyXSk7Cit9CisKK2Z1bmN0aW9u
IG1ha2VTaWdfcl94KHIsIHgpIHsKKyAgcmV0dXJuIG1ha2VTaWcoW3hdLCBbcl0pOworfQorCitm
dW5jdGlvbiBtYWtlU2lnX3JfeHgociwgeCkgeworICByZXR1cm4gbWFrZVNpZyhbeCwgeF0sIFty
XSk7Cit9CisKKy8vIE9wY29kZXMKK2xldCBrRXhwclVucmVhY2hhYmxlID0gMHgwMDsKK2xldCBr
RXhwck5vcCA9IDB4MDE7CitsZXQga0V4cHJCbG9jayA9IDB4MDI7CitsZXQga0V4cHJMb29wID0g
MHgwMzsKK2xldCBrRXhwcklmID0gMHgwNDsKK2xldCBrRXhwckVsc2UgPSAweDA1OworbGV0IGtF
eHByVHJ5ID0gMHgwNjsKK2xldCBrRXhwckNhdGNoID0gMHgwNzsKK2xldCBrRXhwclRocm93ID0g
MHgwODsKK2xldCBrRXhwckVuZCA9IDB4MGI7CitsZXQga0V4cHJCciA9IDB4MGM7CitsZXQga0V4
cHJCcklmID0gMHgwZDsKK2xldCBrRXhwckJyVGFibGUgPSAweDBlOworbGV0IGtFeHByUmV0dXJu
ID0gMHgwZjsKK2xldCBrRXhwckNhbGxGdW5jdGlvbiA9IDB4MTA7CitsZXQga0V4cHJDYWxsSW5k
aXJlY3QgPSAweDExOworbGV0IGtFeHByRHJvcCA9IDB4MWE7CitsZXQga0V4cHJTZWxlY3QgPSAw
eDFiOworbGV0IGtFeHByR2V0TG9jYWwgPSAweDIwOworbGV0IGtFeHByU2V0TG9jYWwgPSAweDIx
OworbGV0IGtFeHByVGVlTG9jYWwgPSAweDIyOworbGV0IGtFeHByR2V0R2xvYmFsID0gMHgyMzsK
K2xldCBrRXhwclNldEdsb2JhbCA9IDB4MjQ7CitsZXQga0V4cHJJMzJDb25zdCA9IDB4NDE7Cits
ZXQga0V4cHJJNjRDb25zdCA9IDB4NDI7CitsZXQga0V4cHJGMzJDb25zdCA9IDB4NDM7CitsZXQg
a0V4cHJGNjRDb25zdCA9IDB4NDQ7CitsZXQga0V4cHJJMzJMb2FkTWVtID0gMHgyODsKK2xldCBr
RXhwckk2NExvYWRNZW0gPSAweDI5OworbGV0IGtFeHByRjMyTG9hZE1lbSA9IDB4MmE7CitsZXQg
a0V4cHJGNjRMb2FkTWVtID0gMHgyYjsKK2xldCBrRXhwckkzMkxvYWRNZW04UyA9IDB4MmM7Cits
ZXQga0V4cHJJMzJMb2FkTWVtOFUgPSAweDJkOworbGV0IGtFeHBySTMyTG9hZE1lbTE2UyA9IDB4
MmU7CitsZXQga0V4cHJJMzJMb2FkTWVtMTZVID0gMHgyZjsKK2xldCBrRXhwckk2NExvYWRNZW04
UyA9IDB4MzA7CitsZXQga0V4cHJJNjRMb2FkTWVtOFUgPSAweDMxOworbGV0IGtFeHBySTY0TG9h
ZE1lbTE2UyA9IDB4MzI7CitsZXQga0V4cHJJNjRMb2FkTWVtMTZVID0gMHgzMzsKK2xldCBrRXhw
ckk2NExvYWRNZW0zMlMgPSAweDM0OworbGV0IGtFeHBySTY0TG9hZE1lbTMyVSA9IDB4MzU7Cits
ZXQga0V4cHJJMzJTdG9yZU1lbSA9IDB4MzY7CitsZXQga0V4cHJJNjRTdG9yZU1lbSA9IDB4Mzc7
CitsZXQga0V4cHJGMzJTdG9yZU1lbSA9IDB4Mzg7CitsZXQga0V4cHJGNjRTdG9yZU1lbSA9IDB4
Mzk7CitsZXQga0V4cHJJMzJTdG9yZU1lbTggPSAweDNhOworbGV0IGtFeHBySTMyU3RvcmVNZW0x
NiA9IDB4M2I7CitsZXQga0V4cHJJNjRTdG9yZU1lbTggPSAweDNjOworbGV0IGtFeHBySTY0U3Rv
cmVNZW0xNiA9IDB4M2Q7CitsZXQga0V4cHJJNjRTdG9yZU1lbTMyID0gMHgzZTsKK2xldCBrRXhw
ck1lbW9yeVNpemUgPSAweDNmOworbGV0IGtFeHByR3Jvd01lbW9yeSA9IDB4NDA7CitsZXQga0V4
cHJJMzJFcXogPSAweDQ1OworbGV0IGtFeHBySTMyRXEgPSAweDQ2OworbGV0IGtFeHBySTMyTmUg
PSAweDQ3OworbGV0IGtFeHBySTMyTHRTID0gMHg0ODsKK2xldCBrRXhwckkzMkx0VSA9IDB4NDk7
CitsZXQga0V4cHJJMzJHdFMgPSAweDRhOworbGV0IGtFeHBySTMyR3RVID0gMHg0YjsKK2xldCBr
RXhwckkzMkxlUyA9IDB4NGM7CitsZXQga0V4cHJJMzJMZVUgPSAweDRkOworbGV0IGtFeHBySTMy
R2VTID0gMHg0ZTsKK2xldCBrRXhwckkzMkdlVSA9IDB4NGY7CitsZXQga0V4cHJJNjRFcXogPSAw
eDUwOworbGV0IGtFeHBySTY0RXEgPSAweDUxOworbGV0IGtFeHBySTY0TmUgPSAweDUyOworbGV0
IGtFeHBySTY0THRTID0gMHg1MzsKK2xldCBrRXhwckk2NEx0VSA9IDB4NTQ7CitsZXQga0V4cHJJ
NjRHdFMgPSAweDU1OworbGV0IGtFeHBySTY0R3RVID0gMHg1NjsKK2xldCBrRXhwckk2NExlUyA9
IDB4NTc7CitsZXQga0V4cHJJNjRMZVUgPSAweDU4OworbGV0IGtFeHBySTY0R2VTID0gMHg1OTsK
K2xldCBrRXhwckk2NEdlVSA9IDB4NWE7CitsZXQga0V4cHJGMzJFcSA9IDB4NWI7CitsZXQga0V4
cHJGMzJOZSA9IDB4NWM7CitsZXQga0V4cHJGMzJMdCA9IDB4NWQ7CitsZXQga0V4cHJGMzJHdCA9
IDB4NWU7CitsZXQga0V4cHJGMzJMZSA9IDB4NWY7CitsZXQga0V4cHJGMzJHZSA9IDB4NjA7Cits
ZXQga0V4cHJGNjRFcSA9IDB4NjE7CitsZXQga0V4cHJGNjROZSA9IDB4NjI7CitsZXQga0V4cHJG
NjRMdCA9IDB4NjM7CitsZXQga0V4cHJGNjRHdCA9IDB4NjQ7CitsZXQga0V4cHJGNjRMZSA9IDB4
NjU7CitsZXQga0V4cHJGNjRHZSA9IDB4NjY7CitsZXQga0V4cHJJMzJDbHogPSAweDY3OworbGV0
IGtFeHBySTMyQ3R6ID0gMHg2ODsKK2xldCBrRXhwckkzMlBvcGNudCA9IDB4Njk7CitsZXQga0V4
cHJJMzJBZGQgPSAweDZhOworbGV0IGtFeHBySTMyU3ViID0gMHg2YjsKK2xldCBrRXhwckkzMk11
bCA9IDB4NmM7CitsZXQga0V4cHJJMzJEaXZTID0gMHg2ZDsKK2xldCBrRXhwckkzMkRpdlUgPSAw
eDZlOworbGV0IGtFeHBySTMyUmVtUyA9IDB4NmY7CitsZXQga0V4cHJJMzJSZW1VID0gMHg3MDsK
K2xldCBrRXhwckkzMkFuZCA9IDB4NzE7CitsZXQga0V4cHJJMzJJb3IgPSAweDcyOworbGV0IGtF
eHBySTMyWG9yID0gMHg3MzsKK2xldCBrRXhwckkzMlNobCA9IDB4NzQ7CitsZXQga0V4cHJJMzJT
aHJTID0gMHg3NTsKK2xldCBrRXhwckkzMlNoclUgPSAweDc2OworbGV0IGtFeHBySTMyUm9sID0g
MHg3NzsKK2xldCBrRXhwckkzMlJvciA9IDB4Nzg7CitsZXQga0V4cHJJNjRDbHogPSAweDc5Owor
bGV0IGtFeHBySTY0Q3R6ID0gMHg3YTsKK2xldCBrRXhwckk2NFBvcGNudCA9IDB4N2I7CitsZXQg
a0V4cHJJNjRBZGQgPSAweDdjOworbGV0IGtFeHBySTY0U3ViID0gMHg3ZDsKK2xldCBrRXhwckk2
NE11bCA9IDB4N2U7CitsZXQga0V4cHJJNjREaXZTID0gMHg3ZjsKK2xldCBrRXhwckk2NERpdlUg
PSAweDgwOworbGV0IGtFeHBySTY0UmVtUyA9IDB4ODE7CitsZXQga0V4cHJJNjRSZW1VID0gMHg4
MjsKK2xldCBrRXhwckk2NEFuZCA9IDB4ODM7CitsZXQga0V4cHJJNjRJb3IgPSAweDg0OworbGV0
IGtFeHBySTY0WG9yID0gMHg4NTsKK2xldCBrRXhwckk2NFNobCA9IDB4ODY7CitsZXQga0V4cHJJ
NjRTaHJTID0gMHg4NzsKK2xldCBrRXhwckk2NFNoclUgPSAweDg4OworbGV0IGtFeHBySTY0Um9s
ID0gMHg4OTsKK2xldCBrRXhwckk2NFJvciA9IDB4OGE7CitsZXQga0V4cHJGMzJBYnMgPSAweDhi
OworbGV0IGtFeHByRjMyTmVnID0gMHg4YzsKK2xldCBrRXhwckYzMkNlaWwgPSAweDhkOworbGV0
IGtFeHByRjMyRmxvb3IgPSAweDhlOworbGV0IGtFeHByRjMyVHJ1bmMgPSAweDhmOworbGV0IGtF
eHByRjMyTmVhcmVzdEludCA9IDB4OTA7CitsZXQga0V4cHJGMzJTcXJ0ID0gMHg5MTsKK2xldCBr
RXhwckYzMkFkZCA9IDB4OTI7CitsZXQga0V4cHJGMzJTdWIgPSAweDkzOworbGV0IGtFeHByRjMy
TXVsID0gMHg5NDsKK2xldCBrRXhwckYzMkRpdiA9IDB4OTU7CitsZXQga0V4cHJGMzJNaW4gPSAw
eDk2OworbGV0IGtFeHByRjMyTWF4ID0gMHg5NzsKK2xldCBrRXhwckYzMkNvcHlTaWduID0gMHg5
ODsKK2xldCBrRXhwckY2NEFicyA9IDB4OTk7CitsZXQga0V4cHJGNjROZWcgPSAweDlhOworbGV0
IGtFeHByRjY0Q2VpbCA9IDB4OWI7CitsZXQga0V4cHJGNjRGbG9vciA9IDB4OWM7CitsZXQga0V4
cHJGNjRUcnVuYyA9IDB4OWQ7CitsZXQga0V4cHJGNjROZWFyZXN0SW50ID0gMHg5ZTsKK2xldCBr
RXhwckY2NFNxcnQgPSAweDlmOworbGV0IGtFeHByRjY0QWRkID0gMHhhMDsKK2xldCBrRXhwckY2
NFN1YiA9IDB4YTE7CitsZXQga0V4cHJGNjRNdWwgPSAweGEyOworbGV0IGtFeHByRjY0RGl2ID0g
MHhhMzsKK2xldCBrRXhwckY2NE1pbiA9IDB4YTQ7CitsZXQga0V4cHJGNjRNYXggPSAweGE1Owor
bGV0IGtFeHByRjY0Q29weVNpZ24gPSAweGE2OworbGV0IGtFeHBySTMyQ29udmVydEk2NCA9IDB4
YTc7CitsZXQga0V4cHJJMzJTQ29udmVydEYzMiA9IDB4YTg7CitsZXQga0V4cHJJMzJVQ29udmVy
dEYzMiA9IDB4YTk7CitsZXQga0V4cHJJMzJTQ29udmVydEY2NCA9IDB4YWE7CitsZXQga0V4cHJJ
MzJVQ29udmVydEY2NCA9IDB4YWI7CitsZXQga0V4cHJJNjRTQ29udmVydEkzMiA9IDB4YWM7Cits
ZXQga0V4cHJJNjRVQ29udmVydEkzMiA9IDB4YWQ7CitsZXQga0V4cHJJNjRTQ29udmVydEYzMiA9
IDB4YWU7CitsZXQga0V4cHJJNjRVQ29udmVydEYzMiA9IDB4YWY7CitsZXQga0V4cHJJNjRTQ29u
dmVydEY2NCA9IDB4YjA7CitsZXQga0V4cHJJNjRVQ29udmVydEY2NCA9IDB4YjE7CitsZXQga0V4
cHJGMzJTQ29udmVydEkzMiA9IDB4YjI7CitsZXQga0V4cHJGMzJVQ29udmVydEkzMiA9IDB4YjM7
CitsZXQga0V4cHJGMzJTQ29udmVydEk2NCA9IDB4YjQ7CitsZXQga0V4cHJGMzJVQ29udmVydEk2
NCA9IDB4YjU7CitsZXQga0V4cHJGMzJDb252ZXJ0RjY0ID0gMHhiNjsKK2xldCBrRXhwckY2NFND
b252ZXJ0STMyID0gMHhiNzsKK2xldCBrRXhwckY2NFVDb252ZXJ0STMyID0gMHhiODsKK2xldCBr
RXhwckY2NFNDb252ZXJ0STY0ID0gMHhiOTsKK2xldCBrRXhwckY2NFVDb252ZXJ0STY0ID0gMHhi
YTsKK2xldCBrRXhwckY2NENvbnZlcnRGMzIgPSAweGJiOworbGV0IGtFeHBySTMyUmVpbnRlcnBy
ZXRGMzIgPSAweGJjOworbGV0IGtFeHBySTY0UmVpbnRlcnByZXRGNjQgPSAweGJkOworbGV0IGtF
eHByRjMyUmVpbnRlcnByZXRJMzIgPSAweGJlOworbGV0IGtFeHByRjY0UmVpbnRlcnByZXRJNjQg
PSAweGJmOworCitsZXQga1RyYXBVbnJlYWNoYWJsZSAgICAgICAgICA9IDA7CitsZXQga1RyYXBN
ZW1PdXRPZkJvdW5kcyAgICAgICA9IDE7CitsZXQga1RyYXBEaXZCeVplcm8gICAgICAgICAgICA9
IDI7CitsZXQga1RyYXBEaXZVbnJlcHJlc2VudGFibGUgICA9IDM7CitsZXQga1RyYXBSZW1CeVpl
cm8gICAgICAgICAgICA9IDQ7CitsZXQga1RyYXBGbG9hdFVucmVwcmVzZW50YWJsZSA9IDU7Cits
ZXQga1RyYXBGdW5jSW52YWxpZCAgICAgICAgICA9IDY7CitsZXQga1RyYXBGdW5jU2lnTWlzbWF0
Y2ggICAgICA9IDc7CitsZXQga1RyYXBJbnZhbGlkSW5kZXggICAgICAgICA9IDg7CisKK2xldCBr
VHJhcE1zZ3MgPSBbCisgICJ1bnJlYWNoYWJsZSIsCisgICJtZW1vcnkgYWNjZXNzIG91dCBvZiBi
b3VuZHMiLAorICAiZGl2aWRlIGJ5IHplcm8iLAorICAiZGl2aWRlIHJlc3VsdCB1bnJlcHJlc2Vu
dGFibGUiLAorICAicmVtYWluZGVyIGJ5IHplcm8iLAorICAiaW50ZWdlciByZXN1bHQgdW5yZXBy
ZXNlbnRhYmxlIiwKKyAgImludmFsaWQgZnVuY3Rpb24iLAorICAiZnVuY3Rpb24gc2lnbmF0dXJl
IG1pc21hdGNoIiwKKyAgImludmFsaWQgaW5kZXggaW50byBmdW5jdGlvbiB0YWJsZSIKK107CisK
K2Z1bmN0aW9uIGFzc2VydFRyYXBzKHRyYXAsIGNvZGUpIHsKKyAgdHJ5IHsKKyAgICBpZiAodHlw
ZW9mIGNvZGUgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgIGNvZGUoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgZXZhbChjb2RlKTsKKyAgICB9CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBhc3NlcnRFcXVh
bHMoJ29iamVjdCcsIHR5cGVvZiBlKTsKKyAgICBhc3NlcnRFcXVhbHMoa1RyYXBNc2dzW3RyYXBd
LCBlLm1lc3NhZ2UpOworICAgIC8vIFN1Y2Nlc3MuCisgICAgcmV0dXJuOworICB9CisgIHRocm93
IG5ldyBNanNVbml0QXNzZXJ0aW9uRXJyb3IoJ0RpZCBub3QgdHJhcCwgZXhwZWN0ZWQ6ICcgKyBr
VHJhcE1zZ3NbdHJhcF0pOworfQorCitmdW5jdGlvbiBhc3NlcnRXYXNtVGhyb3dzKHZhbHVlLCBj
b2RlKSB7CisgIGFzc2VydEVxdWFscygnbnVtYmVyJywgdHlwZW9mIHZhbHVlKTsKKyAgdHJ5IHsK
KyAgICBpZiAodHlwZW9mIGNvZGUgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgIGNvZGUoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgZXZhbChjb2RlKTsKKyAgICB9CisgIH0gY2F0Y2ggKGUpIHsKKyAg
ICBhc3NlcnRFcXVhbHMoJ251bWJlcicsIHR5cGVvZiBlKTsKKyAgICBhc3NlcnRFcXVhbHModmFs
dWUsIGUpOworICAgIC8vIFN1Y2Nlc3MuCisgICAgcmV0dXJuOworICB9CisgIHRocm93IG5ldyBN
anNVbml0QXNzZXJ0aW9uRXJyb3IoJ0RpZCBub3QgdGhyb3csIGV4cGVjdGVkOiAnICsgdmFsdWUp
OworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy93
YXNtLW1vZHVsZS1idWlsZGVyLmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFy
bmVzcy93YXNtLW1vZHVsZS1idWlsZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uOGU4MWFmODhmYjk3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNt
L3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy93YXNtLW1vZHVsZS1idWlsZGVyLmpzCkBAIC0wLDAg
KzEsNTgzIEBACisvLyBDb3B5cmlnaHQgMjAxNiB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKworLy8gVXNlZCBmb3IgZW5jb2RpbmcgZjMyIGFuZCBkb3VibGUgY29uc3RhbnRz
IHRvIGJpdHMuCitsZXQgX19idWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoOCk7CitsZXQgYnl0ZV92
aWV3ID0gbmV3IEludDhBcnJheShfX2J1ZmZlcik7CitsZXQgZjMyX3ZpZXcgPSBuZXcgRmxvYXQz
MkFycmF5KF9fYnVmZmVyKTsKK2xldCBmNjRfdmlldyA9IG5ldyBGbG9hdDY0QXJyYXkoX19idWZm
ZXIpOworCitjbGFzcyBCaW5hcnkgZXh0ZW5kcyBBcnJheSB7CisgIGVtaXRfdTgodmFsKSB7Cisg
ICAgdGhpcy5wdXNoKHZhbCk7CisgIH0KKworICBlbWl0X3UxNih2YWwpIHsKKyAgICB0aGlzLnB1
c2godmFsICYgMHhmZik7CisgICAgdGhpcy5wdXNoKCh2YWwgPj4gOCkgJiAweGZmKTsKKyAgfQor
CisgIGVtaXRfdTMyKHZhbCkgeworICAgIHRoaXMucHVzaCh2YWwgJiAweGZmKTsKKyAgICB0aGlz
LnB1c2goKHZhbCA+PiA4KSAmIDB4ZmYpOworICAgIHRoaXMucHVzaCgodmFsID4+IDE2KSAmIDB4
ZmYpOworICAgIHRoaXMucHVzaCgodmFsID4+IDI0KSAmIDB4ZmYpOworICB9CisKKyAgZW1pdF91
MzJ2KHZhbCkgeworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBsZXQgdiA9IHZhbCAmIDB4ZmY7
CisgICAgICB2YWwgPSB2YWwgPj4+IDc7CisgICAgICBpZiAodmFsID09IDApIHsKKyAgICAgICAg
dGhpcy5wdXNoKHYpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHRoaXMucHVzaCh2
IHwgMHg4MCk7CisgICAgfQorICB9CisKKyAgZW1pdF9ieXRlcyhkYXRhKSB7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7CisgICAgICB0aGlzLnB1c2goZGF0YVtp
XSAmIDB4ZmYpOworICAgIH0KKyAgfQorCisgIGVtaXRfc3RyaW5nKHN0cmluZykgeworICAgIC8v
IFdoZW4gdGVzdGluZyBpbGxlZ2FsIG5hbWVzLCB3ZSBwYXNzIGEgYnl0ZSBhcnJheSBkaXJlY3Rs
eS4KKyAgICBpZiAoc3RyaW5nIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgIHRoaXMuZW1pdF91
MzJ2KHN0cmluZy5sZW5ndGgpOworICAgICAgdGhpcy5lbWl0X2J5dGVzKHN0cmluZyk7CisgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhpcyBpcyB0aGUgaGFja3kgd2F5IHRvIGNvbnZl
cnQgYSBKYXZhU2NyaXB0IHN0cmluZyB0byBhIFVURjggZW5jb2RlZAorICAgIC8vIHN0cmluZyBv
bmx5IGNvbnRhaW5pbmcgc2luZ2xlLWJ5dGUgY2hhcmFjdGVycy4KKyAgICBsZXQgc3RyaW5nX3V0
ZjggPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKSk7CisgICAgdGhpcy5lbWl0
X3UzMnYoc3RyaW5nX3V0ZjgubGVuZ3RoKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmlu
Z191dGY4Lmxlbmd0aDsgaSsrKSB7CisgICAgICB0aGlzLmVtaXRfdTgoc3RyaW5nX3V0ZjguY2hh
ckNvZGVBdChpKSk7CisgICAgfQorICB9CisKKyAgZW1pdF9oZWFkZXIoKSB7CisgICAgdGhpcy5w
dXNoKGtXYXNtSDAsIGtXYXNtSDEsIGtXYXNtSDIsIGtXYXNtSDMsCisgICAgICAgICAgICAgIGtX
YXNtVjAsIGtXYXNtVjEsIGtXYXNtVjIsIGtXYXNtVjMpOworICB9CisKKyAgZW1pdF9zZWN0aW9u
KHNlY3Rpb25fY29kZSwgY29udGVudF9nZW5lcmF0b3IpIHsKKyAgICAvLyBFbWl0IHNlY3Rpb24g
bmFtZS4KKyAgICB0aGlzLmVtaXRfdTgoc2VjdGlvbl9jb2RlKTsKKyAgICAvLyBFbWl0IHRoZSBz
ZWN0aW9uIHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlcjogaXRzIGZ1bGwgbGVuZ3RoIGlzbid0IGtub3cg
eWV0LgorICAgIGxldCBzZWN0aW9uID0gbmV3IEJpbmFyeTsKKyAgICBjb250ZW50X2dlbmVyYXRv
cihzZWN0aW9uKTsKKyAgICAvLyBFbWl0IHNlY3Rpb24gbGVuZ3RoLgorICAgIHRoaXMuZW1pdF91
MzJ2KHNlY3Rpb24ubGVuZ3RoKTsKKyAgICAvLyBDb3B5IHRoZSB0ZW1wb3JhcnkgYnVmZmVyLgor
ICAgIGZvciAoY29uc3Qgc2VjdGlvbkJ5dGUgb2Ygc2VjdGlvbikgeworICAgICAgdGhpcy5wdXNo
KHNlY3Rpb25CeXRlKTsKKyAgICB9CisgIH0KK30KKworY2xhc3MgV2FzbUZ1bmN0aW9uQnVpbGRl
ciB7CisgIGNvbnN0cnVjdG9yKG1vZHVsZSwgbmFtZSwgdHlwZV9pbmRleCkgeworICAgIHRoaXMu
bW9kdWxlID0gbW9kdWxlOworICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy50eXBlX2lu
ZGV4ID0gdHlwZV9pbmRleDsKKyAgICB0aGlzLmJvZHkgPSBbXTsKKyAgfQorCisgIGV4cG9ydEFz
KG5hbWUpIHsKKyAgICB0aGlzLm1vZHVsZS5hZGRFeHBvcnQobmFtZSwgdGhpcy5pbmRleCk7Cisg
ICAgcmV0dXJuIHRoaXM7CisgIH0KKworICBleHBvcnRGdW5jKCkgeworICAgIHRoaXMuZXhwb3J0
QXModGhpcy5uYW1lKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZEJvZHkoYm9keSkg
eworICAgIGZvciAobGV0IGIgb2YgYm9keSkgeworICAgICAgaWYgKHR5cGVvZiBiICE9ICdudW1i
ZXInKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgYm9keSAoZW50cmllcyBoYXZl
IHRvIGJlIG51bWJlcnMpOiAnICsgYm9keSk7CisgICAgfQorICAgIHRoaXMuYm9keSA9IGJvZHku
c2xpY2UoKTsKKyAgICAvLyBBdXRvbWF0aWNhbGx5IGFkZCB0aGUgZW5kIGZvciB0aGUgZnVuY3Rp
b24gYmxvY2sgdG8gdGhlIGJvZHkuCisgICAgdGhpcy5ib2R5LnB1c2goa0V4cHJFbmQpOworICAg
IHJldHVybiB0aGlzOworICB9CisKKyAgYWRkTG9jYWxzKGxvY2FscykgeworICAgIHRoaXMubG9j
YWxzID0gbG9jYWxzOworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgZW5kKCkgeworICAgIHRo
aXMuYm9keS5wdXNoKGtFeHByRW5kKTsKKyAgICByZXR1cm4gdGhpcy5tb2R1bGU7CisgIH0KK30K
KworY2xhc3MgV2FzbUdsb2JhbEJ1aWxkZXIgeworICBjb25zdHJ1Y3Rvcihtb2R1bGUsIHR5cGUs
IG11dGFibGUpIHsKKyAgICB0aGlzLm1vZHVsZSA9IG1vZHVsZTsKKyAgICB0aGlzLnR5cGUgPSB0
eXBlOworICAgIHRoaXMubXV0YWJsZSA9IG11dGFibGU7CisgICAgdGhpcy5pbml0ID0gMDsKKyAg
fQorCisgIGV4cG9ydEFzKG5hbWUpIHsKKyAgICB0aGlzLm1vZHVsZS5leHBvcnRzLnB1c2goe25h
bWU6IG5hbWUsIGtpbmQ6IGtFeHRlcm5hbEdsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4OiB0aGlzLmluZGV4fSk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KK30KKwor
Y2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnR5
cGVzID0gW107CisgICAgdGhpcy5pbXBvcnRzID0gW107CisgICAgdGhpcy5leHBvcnRzID0gW107
CisgICAgdGhpcy5nbG9iYWxzID0gW107CisgICAgdGhpcy5mdW5jdGlvbnMgPSBbXTsKKyAgICB0
aGlzLmZ1bmN0aW9uX3RhYmxlID0gW107CisgICAgdGhpcy5mdW5jdGlvbl90YWJsZV9sZW5ndGgg
PSAwOworICAgIHRoaXMuZnVuY3Rpb25fdGFibGVfaW5pdHMgPSBbXTsKKyAgICB0aGlzLnNlZ21l
bnRzID0gW107CisgICAgdGhpcy5leHBsaWNpdCA9IFtdOworICAgIHRoaXMubnVtX2ltcG9ydGVk
X2Z1bmNzID0gMDsKKyAgICB0aGlzLm51bV9pbXBvcnRlZF9nbG9iYWxzID0gMDsKKyAgICByZXR1
cm4gdGhpczsKKyAgfQorCisgIGFkZFN0YXJ0KHN0YXJ0X2luZGV4KSB7CisgICAgdGhpcy5zdGFy
dF9pbmRleCA9IHN0YXJ0X2luZGV4OworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYWRkTWVt
b3J5KG1pbiwgbWF4LCBleHApIHsKKyAgICB0aGlzLm1lbW9yeSA9IHttaW46IG1pbiwgbWF4OiBt
YXgsIGV4cDogZXhwfTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZEV4cGxpY2l0U2Vj
dGlvbihieXRlcykgeworICAgIHRoaXMuZXhwbGljaXQucHVzaChieXRlcyk7CisgICAgcmV0dXJu
IHRoaXM7CisgIH0KKworICBzdHJpbmdUb0J5dGVzKG5hbWUpIHsKKyAgICB2YXIgcmVzdWx0ID0g
bmV3IEJpbmFyeSgpOworICAgIHJlc3VsdC5lbWl0X3UzMnYobmFtZS5sZW5ndGgpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykgeworICAgICAgcmVzdWx0LmVtaXRf
dTgobmFtZS5jaGFyQ29kZUF0KGkpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQor
CisgIGFkZEN1c3RvbVNlY3Rpb24obmFtZSwgYnl0ZXMpIHsKKyAgICBuYW1lID0gdGhpcy5zdHJp
bmdUb0J5dGVzKG5hbWUpOworICAgIHZhciBsZW5ndGggPSBuZXcgQmluYXJ5KCk7CisgICAgbGVu
Z3RoLmVtaXRfdTMydihuYW1lLmxlbmd0aCArIGJ5dGVzLmxlbmd0aCk7CisgICAgdGhpcy5leHBs
aWNpdC5wdXNoKFswLCAuLi5sZW5ndGgsIC4uLm5hbWUsIC4uLmJ5dGVzXSk7CisgIH0KKworICBh
ZGRUeXBlKHR5cGUpIHsKKyAgICAvLyBUT0RPOiBjYW5vbmljYWxpemUgdHlwZXM/CisgICAgdGhp
cy50eXBlcy5wdXNoKHR5cGUpOworICAgIHJldHVybiB0aGlzLnR5cGVzLmxlbmd0aCAtIDE7Cisg
IH0KKworICBhZGRHbG9iYWwobG9jYWxfdHlwZSwgbXV0YWJsZSkgeworICAgIGxldCBnbG9iID0g
bmV3IFdhc21HbG9iYWxCdWlsZGVyKHRoaXMsIGxvY2FsX3R5cGUsIG11dGFibGUpOworICAgIGds
b2IuaW5kZXggPSB0aGlzLmdsb2JhbHMubGVuZ3RoICsgdGhpcy5udW1faW1wb3J0ZWRfZ2xvYmFs
czsKKyAgICB0aGlzLmdsb2JhbHMucHVzaChnbG9iKTsKKyAgICByZXR1cm4gZ2xvYjsKKyAgfQor
CisgIGFkZEZ1bmN0aW9uKG5hbWUsIHR5cGUpIHsKKyAgICBsZXQgdHlwZV9pbmRleCA9ICh0eXBl
b2YgdHlwZSkgPT0gIm51bWJlciIgPyB0eXBlIDogdGhpcy5hZGRUeXBlKHR5cGUpOworICAgIGxl
dCBmdW5jID0gbmV3IFdhc21GdW5jdGlvbkJ1aWxkZXIodGhpcywgbmFtZSwgdHlwZV9pbmRleCk7
CisgICAgZnVuYy5pbmRleCA9IHRoaXMuZnVuY3Rpb25zLmxlbmd0aCArIHRoaXMubnVtX2ltcG9y
dGVkX2Z1bmNzOworICAgIHRoaXMuZnVuY3Rpb25zLnB1c2goZnVuYyk7CisgICAgcmV0dXJuIGZ1
bmM7CisgIH0KKworICBhZGRJbXBvcnQobW9kdWxlID0gIiIsIG5hbWUsIHR5cGUpIHsKKyAgICBs
ZXQgdHlwZV9pbmRleCA9ICh0eXBlb2YgdHlwZSkgPT0gIm51bWJlciIgPyB0eXBlIDogdGhpcy5h
ZGRUeXBlKHR5cGUpOworICAgIHRoaXMuaW1wb3J0cy5wdXNoKHttb2R1bGU6IG1vZHVsZSwgbmFt
ZTogbmFtZSwga2luZDoga0V4dGVybmFsRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAg
IHR5cGU6IHR5cGVfaW5kZXh9KTsKKyAgICByZXR1cm4gdGhpcy5udW1faW1wb3J0ZWRfZnVuY3Mr
KzsKKyAgfQorCisgIGFkZEltcG9ydGVkR2xvYmFsKG1vZHVsZSA9ICIiLCBuYW1lLCB0eXBlKSB7
CisgICAgbGV0IG8gPSB7bW9kdWxlOiBtb2R1bGUsIG5hbWU6IG5hbWUsIGtpbmQ6IGtFeHRlcm5h
bEdsb2JhbCwgdHlwZTogdHlwZSwKKyAgICAgICAgICAgICBtdXRhYmxlOiBmYWxzZX0KKyAgICB0
aGlzLmltcG9ydHMucHVzaChvKTsKKyAgICByZXR1cm4gdGhpcy5udW1faW1wb3J0ZWRfZ2xvYmFs
cysrOworICB9CisKKyAgYWRkSW1wb3J0ZWRNZW1vcnkobW9kdWxlID0gIiIsIG5hbWUsIGluaXRp
YWwgPSAwLCBtYXhpbXVtKSB7CisgICAgbGV0IG8gPSB7bW9kdWxlOiBtb2R1bGUsIG5hbWU6IG5h
bWUsIGtpbmQ6IGtFeHRlcm5hbE1lbW9yeSwKKyAgICAgICAgICAgICBpbml0aWFsOiBpbml0aWFs
LCBtYXhpbXVtOiBtYXhpbXVtfTsKKyAgICB0aGlzLmltcG9ydHMucHVzaChvKTsKKyAgICByZXR1
cm4gdGhpczsKKyAgfQorCisgIGFkZEltcG9ydGVkVGFibGUobW9kdWxlID0gIiIsIG5hbWUsIGlu
aXRpYWwsIG1heGltdW0pIHsKKyAgICBsZXQgbyA9IHttb2R1bGU6IG1vZHVsZSwgbmFtZTogbmFt
ZSwga2luZDoga0V4dGVybmFsVGFibGUsIGluaXRpYWw6IGluaXRpYWwsCisgICAgICAgICAgICAg
bWF4aW11bTogbWF4aW11bX07CisgICAgdGhpcy5pbXBvcnRzLnB1c2gobyk7CisgIH0KKworICBh
ZGRFeHBvcnQobmFtZSwgaW5kZXgpIHsKKyAgICB0aGlzLmV4cG9ydHMucHVzaCh7bmFtZTogbmFt
ZSwga2luZDoga0V4dGVybmFsRnVuY3Rpb24sIGluZGV4OiBpbmRleH0pOworICAgIHJldHVybiB0
aGlzOworICB9CisKKyAgYWRkRXhwb3J0T2ZLaW5kKG5hbWUsIGtpbmQsIGluZGV4KSB7CisgICAg
dGhpcy5leHBvcnRzLnB1c2goe25hbWU6IG5hbWUsIGtpbmQ6IGtpbmQsIGluZGV4OiBpbmRleH0p
OworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYWRkRGF0YVNlZ21lbnQoYWRkciwgZGF0YSwg
aXNfZ2xvYmFsID0gZmFsc2UpIHsKKyAgICB0aGlzLnNlZ21lbnRzLnB1c2goe2FkZHI6IGFkZHIs
IGRhdGE6IGRhdGEsIGlzX2dsb2JhbDogaXNfZ2xvYmFsfSk7CisgICAgcmV0dXJuIHRoaXMuc2Vn
bWVudHMubGVuZ3RoIC0gMTsKKyAgfQorCisgIGV4cG9ydE1lbW9yeUFzKG5hbWUpIHsKKyAgICB0
aGlzLmV4cG9ydHMucHVzaCh7bmFtZTogbmFtZSwga2luZDoga0V4dGVybmFsTWVtb3J5LCBpbmRl
eDogMH0pOworICB9CisKKyAgYWRkRnVuY3Rpb25UYWJsZUluaXQoYmFzZSwgaXNfZ2xvYmFsLCBh
cnJheSwgaXNfaW1wb3J0ID0gZmFsc2UpIHsKKyAgICB0aGlzLmZ1bmN0aW9uX3RhYmxlX2luaXRz
LnB1c2goe2Jhc2U6IGJhc2UsIGlzX2dsb2JhbDogaXNfZ2xvYmFsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJyYXk6IGFycmF5fSk7CisgICAgaWYgKCFpc19nbG9iYWwp
IHsKKyAgICAgIHZhciBsZW5ndGggPSBiYXNlICsgYXJyYXkubGVuZ3RoOworICAgICAgaWYgKGxl
bmd0aCA+IHRoaXMuZnVuY3Rpb25fdGFibGVfbGVuZ3RoICYmICFpc19pbXBvcnQpIHsKKyAgICAg
ICAgdGhpcy5mdW5jdGlvbl90YWJsZV9sZW5ndGggPSBsZW5ndGg7CisgICAgICB9CisgICAgfQor
ICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYXBwZW5kVG9UYWJsZShhcnJheSkgeworICAgIGZv
ciAobGV0IG4gb2YgYXJyYXkpIHsKKyAgICAgIGlmICh0eXBlb2YgbiAhPSAnbnVtYmVyJykKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHRhYmxlIChlbnRyaWVzIGhhdmUgdG8gYmUg
bnVtYmVycyk6ICcgKyBhcnJheSk7CisgICAgfQorICAgIHJldHVybiB0aGlzLmFkZEZ1bmN0aW9u
VGFibGVJbml0KHRoaXMuZnVuY3Rpb25fdGFibGUubGVuZ3RoLCBmYWxzZSwgYXJyYXkpOworICB9
CisKKyAgc2V0RnVuY3Rpb25UYWJsZUxlbmd0aChsZW5ndGgpIHsKKyAgICB0aGlzLmZ1bmN0aW9u
X3RhYmxlX2xlbmd0aCA9IGxlbmd0aDsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIHRvQXJy
YXkoZGVidWcgPSBmYWxzZSkgeworICAgIGxldCBiaW5hcnkgPSBuZXcgQmluYXJ5OworICAgIGxl
dCB3YXNtID0gdGhpczsKKworICAgIC8vIEFkZCBoZWFkZXIKKyAgICBiaW5hcnkuZW1pdF9oZWFk
ZXIoKTsKKworICAgIC8vIEFkZCB0eXBlIHNlY3Rpb24KKyAgICBpZiAod2FzbS50eXBlcy5sZW5n
dGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyB0eXBlcyBAICIgKyBi
aW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa1R5cGVTZWN0aW9uQ29k
ZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20udHlwZXMubGVu
Z3RoKTsKKyAgICAgICAgZm9yIChsZXQgdHlwZSBvZiB3YXNtLnR5cGVzKSB7CisgICAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KGtXYXNtRnVuY3Rpb25UeXBlRm9ybSk7CisgICAgICAgICAgc2VjdGlv
bi5lbWl0X3UzMnYodHlwZS5wYXJhbXMubGVuZ3RoKTsKKyAgICAgICAgICBmb3IgKGxldCBwYXJh
bSBvZiB0eXBlLnBhcmFtcykgeworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KHBhcmFtKTsK
KyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYodHlwZS5yZXN1bHRzLmxl
bmd0aCk7CisgICAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHR5cGUucmVzdWx0cykgeworICAg
ICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KHJlc3VsdCk7CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgaW1wb3J0cyBzZWN0aW9uCisgICAgaWYg
KHdhc20uaW1wb3J0cy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0
dGluZyBpbXBvcnRzIEAgIiArIGJpbmFyeS5sZW5ndGgpOworICAgICAgYmluYXJ5LmVtaXRfc2Vj
dGlvbihrSW1wb3J0U2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAgICBzZWN0aW9uLmVt
aXRfdTMydih3YXNtLmltcG9ydHMubGVuZ3RoKTsKKyAgICAgICAgZm9yIChsZXQgaW1wIG9mIHdh
c20uaW1wb3J0cykgeworICAgICAgICAgIHNlY3Rpb24uZW1pdF9zdHJpbmcoaW1wLm1vZHVsZSk7
CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3N0cmluZyhpbXAubmFtZSB8fCAnJyk7CisgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3U4KGltcC5raW5kKTsKKyAgICAgICAgICBpZiAoaW1wLmtpbmQgPT0g
a0V4dGVybmFsRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGltcC50
eXBlKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGltcC5raW5kID09IGtFeHRlcm5hbEdsb2JhbCkg
eworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW1wLnR5cGUpOworICAgICAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KGltcC5tdXRhYmxlKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGltcC5r
aW5kID09IGtFeHRlcm5hbE1lbW9yeSkgeworICAgICAgICAgICAgdmFyIGhhc19tYXggPSAodHlw
ZW9mIGltcC5tYXhpbXVtKSAhPSAidW5kZWZpbmVkIjsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1p
dF91OChoYXNfbWF4ID8gMSA6IDApOyAvLyBmbGFncworICAgICAgICAgICAgc2VjdGlvbi5lbWl0
X3UzMnYoaW1wLmluaXRpYWwpOyAvLyBpbml0aWFsCisgICAgICAgICAgICBpZiAoaGFzX21heCkg
c2VjdGlvbi5lbWl0X3UzMnYoaW1wLm1heGltdW0pOyAvLyBtYXhpbXVtCisgICAgICAgICAgfSBl
bHNlIGlmIChpbXAua2luZCA9PSBrRXh0ZXJuYWxUYWJsZSkgeworICAgICAgICAgICAgc2VjdGlv
bi5lbWl0X3U4KGtXYXNtRnVuY1JlZnRpb25UeXBlRm9ybSk7CisgICAgICAgICAgICB2YXIgaGFz
X21heCA9ICh0eXBlb2YgaW1wLm1heGltdW0pICE9ICJ1bmRlZmluZWQiOworICAgICAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KGhhc19tYXggPyAxIDogMCk7IC8vIGZsYWdzCisgICAgICAgICAgICBz
ZWN0aW9uLmVtaXRfdTMydihpbXAuaW5pdGlhbCk7IC8vIGluaXRpYWwKKyAgICAgICAgICAgIGlm
IChoYXNfbWF4KSBzZWN0aW9uLmVtaXRfdTMydihpbXAubWF4aW11bSk7IC8vIG1heGltdW0KKyAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duL3Vu
c3VwcG9ydGVkIGltcG9ydCBraW5kICIgKyBpbXAua2luZCk7CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZnVuY3Rpb25zIGRlY2xhcmF0aW9u
cworICAgIGxldCBudW1fZnVuY3Rpb25fbmFtZXMgPSAwOworICAgIGxldCBuYW1lcyA9IGZhbHNl
OworICAgIGlmICh3YXNtLmZ1bmN0aW9ucy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcp
IHByaW50KCJlbWl0dGluZyBmdW5jdGlvbiBkZWNscyBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAg
ICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0Z1bmN0aW9uU2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4g
eworICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLmZ1bmN0aW9ucy5sZW5ndGgpOworICAg
ICAgICBmb3IgKGxldCBmdW5jIG9mIHdhc20uZnVuY3Rpb25zKSB7CisgICAgICAgICAgaWYgKGZ1
bmMubmFtZSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICArK251bV9mdW5jdGlvbl9uYW1l
czsKKyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoZnVuYy50eXBlX2lu
ZGV4KTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGZ1bmN0aW9u
X3RhYmxlLgorICAgIGlmICh3YXNtLmZ1bmN0aW9uX3RhYmxlX2xlbmd0aCA+IDApIHsKKyAgICAg
IGlmIChkZWJ1ZykgcHJpbnQoImVtaXR0aW5nIHRhYmxlIEAgIiArIGJpbmFyeS5sZW5ndGgpOwor
ICAgICAgYmluYXJ5LmVtaXRfc2VjdGlvbihrVGFibGVTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7
CisgICAgICAgIHNlY3Rpb24uZW1pdF91OCgxKTsgIC8vIG9uZSB0YWJsZSBlbnRyeQorICAgICAg
ICBzZWN0aW9uLmVtaXRfdTgoa1dhc21GdW5jUmVmdGlvblR5cGVGb3JtKTsKKyAgICAgICAgc2Vj
dGlvbi5lbWl0X3U4KDEpOworICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLmZ1bmN0aW9u
X3RhYmxlX2xlbmd0aCk7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZnVuY3Rpb25f
dGFibGVfbGVuZ3RoKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIC8vIEFkZCBtZW1vcnkgc2Vj
dGlvbgorICAgIGlmICh3YXNtLm1lbW9yeSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBpZiAoZGVi
dWcpIHByaW50KCJlbWl0dGluZyBtZW1vcnkgQCAiICsgYmluYXJ5Lmxlbmd0aCk7CisgICAgICBi
aW5hcnkuZW1pdF9zZWN0aW9uKGtNZW1vcnlTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAg
ICAgIHNlY3Rpb24uZW1pdF91OCgxKTsgIC8vIG9uZSBtZW1vcnkgZW50cnkKKyAgICAgICAgY29u
c3QgaGFzX21heCA9IHdhc20ubWVtb3J5Lm1heCAhPT0gdW5kZWZpbmVkOworICAgICAgICBzZWN0
aW9uLmVtaXRfdTMydihoYXNfbWF4ID8ga1Jlc2l6YWJsZU1heGltdW1GbGFnIDogMCk7CisgICAg
ICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20ubWVtb3J5Lm1pbik7CisgICAgICAgIGlmIChoYXNf
bWF4KSBzZWN0aW9uLmVtaXRfdTMydih3YXNtLm1lbW9yeS5tYXgpOworICAgICAgfSk7CisgICAg
fQorCisgICAgLy8gQWRkIGdsb2JhbCBzZWN0aW9uLgorICAgIGlmICh3YXNtLmdsb2JhbHMubGVu
Z3RoID4gMCkgeworICAgICAgaWYgKGRlYnVnKSBwcmludCAoImVtaXR0aW5nIGdsb2JhbHMgQCAi
ICsgYmluYXJ5Lmxlbmd0aCk7CisgICAgICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtHbG9iYWxTZWN0
aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZ2xv
YmFscy5sZW5ndGgpOworICAgICAgICBmb3IgKGxldCBnbG9iYWwgb2Ygd2FzbS5nbG9iYWxzKSB7
CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGdsb2JhbC50eXBlKTsKKyAgICAgICAgICBzZWN0
aW9uLmVtaXRfdTgoZ2xvYmFsLm11dGFibGUpOworICAgICAgICAgIGlmICgodHlwZW9mIGdsb2Jh
bC5pbml0X2luZGV4KSA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgLy8gRW1pdCBhIGNv
bnN0YW50IGluaXRpYWxpemVyLgorICAgICAgICAgICAgc3dpdGNoIChnbG9iYWwudHlwZSkgewor
ICAgICAgICAgICAgY2FzZSBrV2FzbUkzMjoKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4
KGtFeHBySTMyQ29uc3QpOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihnbG9iYWwu
aW5pdCk7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrV2FzbUk2NDoK
KyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHBySTY0Q29uc3QpOworICAgICAgICAg
ICAgICBzZWN0aW9uLmVtaXRfdTMydihnbG9iYWwuaW5pdCk7CisgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBrV2FzbUYzMjoKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0
X3U4KGtFeHByRjMyQ29uc3QpOworICAgICAgICAgICAgICBmMzJfdmlld1swXSA9IGdsb2JhbC5p
bml0OworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzBdKTsKKyAgICAg
ICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1sxXSk7CisgICAgICAgICAgICAgIHNl
Y3Rpb24uZW1pdF91OChieXRlX3ZpZXdbMl0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRf
dTgoYnl0ZV92aWV3WzNdKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IGtXYXNtRjY0OgorICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJGNjRDb25zdCk7
CisgICAgICAgICAgICAgIGY2NF92aWV3WzBdID0gZ2xvYmFsLmluaXQ7CisgICAgICAgICAgICAg
IHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbMF0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVt
aXRfdTgoYnl0ZV92aWV3WzFdKTsKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVf
dmlld1syXSk7CisgICAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbM10pOwor
ICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzRdKTsKKyAgICAgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1s1XSk7CisgICAgICAgICAgICAgIHNlY3Rpb24u
ZW1pdF91OChieXRlX3ZpZXdbNl0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0
ZV92aWV3WzddKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEVtaXQgYSBnbG9iYWwtaW5kZXggaW5pdGlhbGl6
ZXIuCisgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJHZXRHbG9iYWwpOworICAgICAg
ICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoZ2xvYmFsLmluaXRfaW5kZXgpOworICAgICAgICAgIH0K
KyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJFbmQpOyAgLy8gZW5kIG9mIGluaXQgZXhw
cmVzc2lvbgorICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZXhwb3J0
IHRhYmxlLgorICAgIHZhciBtZW1fZXhwb3J0ID0gKHdhc20ubWVtb3J5ICE9PSB1bmRlZmluZWQg
JiYgd2FzbS5tZW1vcnkuZXhwKTsKKyAgICB2YXIgZXhwb3J0c19jb3VudCA9IHdhc20uZXhwb3J0
cy5sZW5ndGggKyAobWVtX2V4cG9ydCA/IDEgOiAwKTsKKyAgICBpZiAoZXhwb3J0c19jb3VudCA+
IDApIHsKKyAgICAgIGlmIChkZWJ1ZykgcHJpbnQoImVtaXR0aW5nIGV4cG9ydHMgQCAiICsgYmlu
YXJ5Lmxlbmd0aCk7CisgICAgICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtFeHBvcnRTZWN0aW9uQ29k
ZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGV4cG9ydHNfY291bnQp
OworICAgICAgICBmb3IgKGxldCBleHAgb2Ygd2FzbS5leHBvcnRzKSB7CisgICAgICAgICAgc2Vj
dGlvbi5lbWl0X3N0cmluZyhleHAubmFtZSk7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGV4
cC5raW5kKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihleHAuaW5kZXgpOworICAgICAg
ICB9CisgICAgICAgIGlmIChtZW1fZXhwb3J0KSB7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3N0
cmluZygibWVtb3J5Iik7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHRlcm5hbE1lbW9y
eSk7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KDApOworICAgICAgICB9CisgICAgICB9KTsK
KyAgICB9CisKKyAgICAvLyBBZGQgc3RhcnQgZnVuY3Rpb24gc2VjdGlvbi4KKyAgICBpZiAod2Fz
bS5zdGFydF9pbmRleCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJl
bWl0dGluZyBzdGFydCBmdW5jdGlvbiBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFy
eS5lbWl0X3NlY3Rpb24oa1N0YXJ0U2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAgICBz
ZWN0aW9uLmVtaXRfdTMydih3YXNtLnN0YXJ0X2luZGV4KTsKKyAgICAgIH0pOworICAgIH0KKwor
ICAgIC8vIEFkZCB0YWJsZSBlbGVtZW50cy4KKyAgICBpZiAod2FzbS5mdW5jdGlvbl90YWJsZV9p
bml0cy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyB0YWJs
ZSBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0VsZW1l
bnRTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHZhciBpbml0cyA9IHdhc20uZnVu
Y3Rpb25fdGFibGVfaW5pdHM7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGluaXRzLmxlbmd0
aCk7CisKKyAgICAgICAgZm9yIChsZXQgaW5pdCBvZiBpbml0cykgeworICAgICAgICAgIHNlY3Rp
b24uZW1pdF91OCgwKTsgLy8gdGFibGUgaW5kZXgKKyAgICAgICAgICBpZiAoaW5pdC5pc19nbG9i
YWwpIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckdldEdsb2JhbCk7CisgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckkzMkNvbnN0
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW5pdC5iYXNlKTsK
KyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJFbmQpOworICAgICAgICAgIHNlY3Rpb24u
ZW1pdF91MzJ2KGluaXQuYXJyYXkubGVuZ3RoKTsKKyAgICAgICAgICBmb3IgKGxldCBpbmRleCBv
ZiBpbml0LmFycmF5KSB7CisgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihpbmRleCk7Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZnVu
Y3Rpb24gYm9kaWVzLgorICAgIGlmICh3YXNtLmZ1bmN0aW9ucy5sZW5ndGggPiAwKSB7CisgICAg
ICAvLyBlbWl0IGZ1bmN0aW9uIGJvZGllcworICAgICAgaWYgKGRlYnVnKSBwcmludCgiZW1pdHRp
bmcgY29kZSBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24o
a0NvZGVTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2
KHdhc20uZnVuY3Rpb25zLmxlbmd0aCk7CisgICAgICAgIGZvciAobGV0IGZ1bmMgb2Ygd2FzbS5m
dW5jdGlvbnMpIHsKKyAgICAgICAgICAvLyBGdW5jdGlvbiBib2R5IGxlbmd0aCB3aWxsIGJlIHBh
dGNoZWQgbGF0ZXIuCisgICAgICAgICAgbGV0IGxvY2FsX2RlY2xzID0gW107CisgICAgICAgICAg
bGV0IGwgPSBmdW5jLmxvY2FsczsKKyAgICAgICAgICBpZiAobCAhPT0gdW5kZWZpbmVkKSB7Cisg
ICAgICAgICAgICBsZXQgbG9jYWxfZGVjbHNfY291bnQgPSAwOworICAgICAgICAgICAgaWYgKGwu
aTMyX2NvdW50ID4gMCkgeworICAgICAgICAgICAgICBsb2NhbF9kZWNscy5wdXNoKHtjb3VudDog
bC5pMzJfY291bnQsIHR5cGU6IGtXYXNtSTMyfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAobC5pNjRfY291bnQgPiAwKSB7CisgICAgICAgICAgICAgIGxvY2FsX2RlY2xzLnB1c2go
e2NvdW50OiBsLmk2NF9jb3VudCwgdHlwZToga1dhc21JNjR9KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChsLmYzMl9jb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgbG9jYWxfZGVj
bHMucHVzaCh7Y291bnQ6IGwuZjMyX2NvdW50LCB0eXBlOiBrV2FzbUYzMn0pOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKGwuZjY0X2NvdW50ID4gMCkgeworICAgICAgICAgICAgICBs
b2NhbF9kZWNscy5wdXNoKHtjb3VudDogbC5mNjRfY291bnQsIHR5cGU6IGtXYXNtRjY0fSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgbGV0IGhlYWRlciA9IG5ldyBC
aW5hcnk7CisgICAgICAgICAgaGVhZGVyLmVtaXRfdTMydihsb2NhbF9kZWNscy5sZW5ndGgpOwor
ICAgICAgICAgIGZvciAobGV0IGRlY2wgb2YgbG9jYWxfZGVjbHMpIHsKKyAgICAgICAgICAgIGhl
YWRlci5lbWl0X3UzMnYoZGVjbC5jb3VudCk7CisgICAgICAgICAgICBoZWFkZXIuZW1pdF91OChk
ZWNsLnR5cGUpOworICAgICAgICAgIH0KKworICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGhl
YWRlci5sZW5ndGggKyBmdW5jLmJvZHkubGVuZ3RoKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRf
Ynl0ZXMoaGVhZGVyKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfYnl0ZXMoZnVuYy5ib2R5KTsK
KyAgICAgICAgfQorICAgICAgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGRhdGEgc2VnbWVudHMu
CisgICAgaWYgKHdhc20uc2VnbWVudHMubGVuZ3RoID4gMCkgeworICAgICAgaWYgKGRlYnVnKSBw
cmludCgiZW1pdHRpbmcgZGF0YSBzZWdtZW50cyBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAg
IGJpbmFyeS5lbWl0X3NlY3Rpb24oa0RhdGFTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAg
ICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uc2VnbWVudHMubGVuZ3RoKTsKKyAgICAgICAgZm9y
IChsZXQgc2VnIG9mIHdhc20uc2VnbWVudHMpIHsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgo
MCk7ICAvLyBsaW5lYXIgbWVtb3J5IGluZGV4IDAKKyAgICAgICAgICBpZiAoc2VnLmlzX2dsb2Jh
bCkgeworICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZXIgaXMgYSBnbG9iYWwgdmFyaWFibGUKKyAg
ICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckdldEdsb2JhbCk7CisgICAgICAgICAgICBz
ZWN0aW9uLmVtaXRfdTMydihzZWcuYWRkcik7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIGluaXRpYWxpemVyIGlzIGEgY29uc3RhbnQKKyAgICAgICAgICAgIHNlY3Rpb24uZW1p
dF91OChrRXhwckkzMkNvbnN0KTsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHNlZy5h
ZGRyKTsKKyAgICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHByRW5kKTsK
KyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihzZWcuZGF0YS5sZW5ndGgpOworICAgICAgICAg
IHNlY3Rpb24uZW1pdF9ieXRlcyhzZWcuZGF0YSk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAg
IH0KKworICAgIC8vIEFkZCBhbnkgZXhwbGljaXRseSBhZGRlZCBzZWN0aW9ucworICAgIGZvciAo
bGV0IGV4cCBvZiB3YXNtLmV4cGxpY2l0KSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0
dGluZyBleHBsaWNpdCBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X2J5
dGVzKGV4cCk7CisgICAgfQorCisgICAgLy8gQWRkIGZ1bmN0aW9uIG5hbWVzLgorICAgIGlmIChu
dW1fZnVuY3Rpb25fbmFtZXMgPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCdlbWl0dGlu
ZyBuYW1lcyBAICcgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24o
a1Vua25vd25TZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF9z
dHJpbmcoJ25hbWUnKTsKKyAgICAgICAgc2VjdGlvbi5lbWl0X3NlY3Rpb24oa0Z1bmN0aW9uTmFt
ZXNDb2RlLCBuYW1lX3NlY3Rpb24gPT4geworICAgICAgICAgIG5hbWVfc2VjdGlvbi5lbWl0X3Uz
MnYobnVtX2Z1bmN0aW9uX25hbWVzKTsKKyAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIHdhc20u
ZnVuY3Rpb25zKSB7CisgICAgICAgICAgICBpZiAoZnVuYy5uYW1lID09PSB1bmRlZmluZWQpIGNv
bnRpbnVlOworICAgICAgICAgICAgbmFtZV9zZWN0aW9uLmVtaXRfdTMydihmdW5jLmluZGV4KTsK
KyAgICAgICAgICAgIG5hbWVfc2VjdGlvbi5lbWl0X3N0cmluZyhmdW5jLm5hbWUpOworICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gYmluYXJ5
OworICB9CisKKyAgdG9CdWZmZXIoZGVidWcgPSBmYWxzZSkgeworICAgIGxldCBieXRlcyA9IHRo
aXMudG9BcnJheShkZWJ1Zyk7CisgICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRl
cy5sZW5ndGgpOworICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICBsZXQgdmFsID0g
Ynl0ZXNbaV07CisgICAgICBpZiAoKHR5cGVvZiB2YWwpID09ICJzdHJpbmciKSB2YWwgPSB2YWwu
Y2hhckNvZGVBdCgwKTsKKyAgICAgIHZpZXdbaV0gPSB2YWwgfCAwOworICAgIH0KKyAgICByZXR1
cm4gYnVmZmVyOworICB9CisKKyAgaW5zdGFudGlhdGUoZmZpKSB7CisgICAgbGV0IG1vZHVsZSA9
IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUodGhpcy50b0J1ZmZlcigpKTsKKyAgICBsZXQgaW5zdGFu
Y2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCBmZmkpOworICAgIHJldHVybiBp
bnN0YW5jZTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNw
ZWMtaGFybmVzcy93YXN0LmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVz
cy93YXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2VhNzFh
MzMyOGU1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMt
aGFybmVzcy93YXN0LmpzCkBAIC0wLDAgKzEsMjk3NzcgQEAKKy8vIERPIE5PVCBFRElULiBHZW5l
cmF0ZWQgZnJvbSBXZWJBc3NlbWJseSBzcGVjIGludGVycHJldGVyCisKK2xldCBXZWJBc3NlbWJs
eVRleHQgPSAoZnVuY3Rpb24oKSB7CivCoCBsZXQgX3JlZ2lzdHJ5ID0ge19fcHJvdG9fXzogbnVs
bH07CisgIGZ1bmN0aW9uIG5vcm1hbGl6ZShmaWxlKSB7CisgICAgcmV0dXJuIGZpbGUuc3BsaXQo
Jy8nKS5yZXZlcnNlKClbMF0uc3BsaXQoJy4nKVswXTsKKyAgfQorwqAgZnVuY3Rpb24gcmVxdWly
ZShmaWxlKSB7CivCoCDCoCBsZXQgbmFtZSA9IG5vcm1hbGl6ZShmaWxlKTsKKyAgICBpZiAoIShu
YW1lIGluIF9yZWdpc3RyeSkpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBtb2R1
bGU6ICcgKyBuYW1lKQorwqAgwqAgfSBlbHNlIGlmICh0eXBlb2YgX3JlZ2lzdHJ5W25hbWVdID09
PSAnZnVuY3Rpb24nKSB7CisKKworwqAgwqAgwqAgbGV0IGYgPSBfcmVnaXN0cnlbbmFtZV07CivC
oCDCoCDCoCBfcmVnaXN0cnlbbmFtZV0gPSBmdW5jdGlvbigpIHsgdGhyb3cgbmV3IEVycm9yKCdj
eWNsaWMgbW9kdWxlOiAnICsgbmFtZSkgfTsKK8KgIMKgIMKgIF9yZWdpc3RyeVtuYW1lXSA9IGYo
KTsKK8KgIMKgIH0KK8KgIMKgIHJldHVybiBfcmVnaXN0cnlbbmFtZV07CivCoCB9CisKKworICBf
cmVnaXN0cnlbJ2FycmFuZ2UnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7
fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGFycmFuZ2UuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBi
eSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3Vz
ZSBzdHJpY3QnOworCit2YXIgRjMyICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Yz
MiIpOwordmFyIEY2NCAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9mNjQiKTsKK3Zh
ciBJMzIgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vaTMyIik7Cit2YXIgSTY0ICAg
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2k2NCIpOwordmFyIExpYiAgICAgICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9saWIiKTsKK3ZhciBMaXN0ICAgICAgICAgICAgICAgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQmxvY2sgICAgICAg
ICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2siKTsKK3ZhciBD
dXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJy
eSIpOwordmFyIFR5cGVzICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi90eXBlcyIpOwor
dmFyIEJ1ZmZlciAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2J1ZmZlciIpOwordmFyIERlY29kZSAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9kZWNv
ZGUiKTsKK3ZhciBFbmNvZGUgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZW5jb2RlIik7
Cit2YXIgUHJpbnRmICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvcHJpbnRmIik7Cit2YXIgU291cmNlICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3Nv
dXJjZSIpOwordmFyICQkU3RyaW5nICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZv
cm0vbGliL2pzL3N0cmluZyIpOwordmFyIFZhbHVlcyAgICAgICAgICAgICAgICAgID0gcmVxdWly
ZSgiLi92YWx1ZXMiKTsKK3ZhciBDYW1sX2ludDMyICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9jYW1sX2ludDMyIik7Cit2YXIgUGVydmFzaXZlcyAgICAgICAgICAg
ICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVydmFzaXZlcyIpOwordmFyIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfYnVp
bHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIGFkZF9oZXhfY2hhcihidWYsIGMpIHsKKyAg
cmV0dXJuIEN1cnJ5Ll8xKFByaW50Zi5icHJpbnRmKGJ1ZiwgLyogRm9ybWF0ICovWworICAgICAg
ICAgICAgICAgICAgLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAvKiAiXFwiICovOTIsCisgICAgICAgICAgICAgICAgICAgICAgLyogSW50ICov
QmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfeCAqLzYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExpdF9wYWRkaW5nICovQmxvY2suX18oMCwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWmVyb3MgKi8yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgXSkKKyAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAiXFwlMDJ4
IgorICAgICAgICAgICAgICAgIF0pLCBjKTsKK30KKworZnVuY3Rpb24gYWRkX2NoYXIoYnVmLCBj
KSB7CisgIGlmIChjIDwgLyogIiAiICovMzIgfHwgYyA+PSAvKiAiXDEyNyIgKi8xMjcpIHsKKyAg
ICByZXR1cm4gYWRkX2hleF9jaGFyKGJ1ZiwgYyk7CisgIH0KKyAgZWxzZSB7CisgICAgaWYgKGMg
PT09IC8qICJcIiIgKi8zNCB8fCBjID09PSAvKiAiXFwiICovOTIpIHsKKyAgICAgIEJ1ZmZlci5h
ZGRfY2hhcihidWYsIC8qICJcXCIgKi85Mik7CisgICAgfQorICAgIHJldHVybiBCdWZmZXIuYWRk
X2NoYXIoYnVmLCBjKTsKKyAgfQorfQorCitmdW5jdGlvbiBzdHJpbmdfd2l0aChhZGRfY2hhciwg
cykgeworICB2YXIgYnVmID0gQnVmZmVyLmNyZWF0ZShDYW1sX2ludDMyLmltdWwoMywgcy5sZW5n
dGgpICsgMiB8IDApOworICBCdWZmZXIuYWRkX2NoYXIoYnVmLCAvKiAiXCIiICovMzQpOworICAk
JFN0cmluZy5pdGVyKEN1cnJ5Ll8xKGFkZF9jaGFyLCBidWYpLCBzKTsKKyAgQnVmZmVyLmFkZF9j
aGFyKGJ1ZiwgLyogIlwiIiAqLzM0KTsKKyAgcmV0dXJuIEJ1ZmZlci5jb250ZW50cyhidWYpOwor
fQorCitmdW5jdGlvbiBsaXN0X29mX29wdChwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICBy
ZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICBwYXJhbVswXSwKKyAgICAgICAgICAgIC8qIFtd
ICovMAorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIFtdICovMDsK
KyAgfQorfQorCitmdW5jdGlvbiBicmVha19ieXRlcyhzKSB7CisgIHZhciBzcyA9IEN1cnJ5Ll8y
KExpYi4kJFN0cmluZ1svKiBicmVha3VwICovMF0sIHMsIDE2KTsKKyAgdmFyIGYgPSBmdW5jdGlv
biAocGFyYW0pIHsKKyAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0
aChhZGRfaGV4X2NoYXIsIHBhcmFtKV0pOworICB9OworICByZXR1cm4gTGlzdC5tYXAoZiwgc3Mp
OworfQorCitmdW5jdGlvbiBkZWNscyhraW5kLCB0cykgeworICB2YXIgaGVhZCA9IGtpbmQ7Cisg
IHZhciBmID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgcmV0dXJuIC8qIEF0b20gKi9CbG9jay5f
XygwLCBbVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUocGFyYW0pXSk7CisgIH07CisgIHZhciB4
cyA9IHRzOworICBpZiAoeHMpIHsKKyAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAv
KiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgIGhlYWQsCisgICAgICAgICAg
ICAgICAgTGlzdC5tYXAoZiwgeHMpCisgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8w
OworICB9Cit9CisKK2Z1bmN0aW9uIGZ1bmNfdHlwZShwYXJhbSkgeworICByZXR1cm4gLyogTm9k
ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICJmdW5jIiwKKyAgICAgICAgICAgIFBlcnZh
c2l2ZXMuJGF0KGRlY2xzKCJwYXJhbSIsIHBhcmFtWzBdKSwgZGVjbHMoInJlc3VsdCIsIHBhcmFt
WzFdKSkKKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gbGltaXRzKG5hdCwgcGFyYW0pIHsK
KyAgdmFyIHhzID0gbGlzdF9vZl9vcHQocGFyYW1bLyogbWF4ICovMV0pOworICByZXR1cm4gJCRT
dHJpbmcuY29uY2F0KCIgIiwgLyogOjogKi9bCisgICAgICAgICAgICAgIEN1cnJ5Ll8xKG5hdCwg
cGFyYW1bLyogbWluICovMF0pLAorICAgICAgICAgICAgICBMaXN0Lm1hcChuYXQsIHhzKQorICAg
ICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGdsb2JhbF90eXBlKHBhcmFtKSB7CisgIHZhciB0
ID0gcGFyYW1bMF07CisgIGlmIChwYXJhbVsxXSAhPT0gMCkgeworICAgIHJldHVybiAvKiBOb2Rl
ICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAibXV0IiwKKyAgICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBlcy5zdHJp
bmdfb2ZfdmFsdWVfdHlwZSh0KV0pLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICBdKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyog
QXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZSh0KV0pOworICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3RvcChfLCBfJDEpIHsKKyAgcmV0dXJuICJlcXoiOworfQorCitm
dW5jdGlvbiByZWxvcChfLCBwYXJhbSkgeworICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAw
IDogCisgICAgICAgIHJldHVybiAiZXEiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4g
Im5lIjsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuICJsdF9zIjsKKyAgICBjYXNlIDMg
OiAKKyAgICAgICAgcmV0dXJuICJsdF91IjsKKyAgICBjYXNlIDQgOiAKKyAgICAgICAgcmV0dXJu
ICJndF9zIjsKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuICJndF91IjsKKyAgICBjYXNl
IDYgOiAKKyAgICAgICAgcmV0dXJuICJsZV9zIjsKKyAgICBjYXNlIDcgOiAKKyAgICAgICAgcmV0
dXJuICJsZV91IjsKKyAgICBjYXNlIDggOiAKKyAgICAgICAgcmV0dXJuICJnZV9zIjsKKyAgICBj
YXNlIDkgOiAKKyAgICAgICAgcmV0dXJuICJnZV91IjsKKyAgICAKKyAgfQorfQorCitmdW5jdGlv
biB1bm9wKF8sIHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAg
ICAgICAgcmV0dXJuICJjbHoiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gImN0eiI7
CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAicG9wY250IjsKKyAgICAKKyAgfQorfQor
CitmdW5jdGlvbiBiaW5vcChfLCBwYXJhbSkgeworICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2Fz
ZSAwIDogCisgICAgICAgIHJldHVybiAiYWRkIjsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0
dXJuICJzdWIiOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gIm11bCI7CisgICAgY2Fz
ZSAzIDogCisgICAgICAgIHJldHVybiAiZGl2X3MiOworICAgIGNhc2UgNCA6IAorICAgICAgICBy
ZXR1cm4gImRpdl91IjsKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuICJyZW1fcyI7Cisg
ICAgY2FzZSA2IDogCisgICAgICAgIHJldHVybiAicmVtX3UiOworICAgIGNhc2UgNyA6IAorICAg
ICAgICByZXR1cm4gImFuZCI7CisgICAgY2FzZSA4IDogCisgICAgICAgIHJldHVybiAib3IiOwor
ICAgIGNhc2UgOSA6IAorICAgICAgICByZXR1cm4gInhvciI7CisgICAgY2FzZSAxMCA6IAorICAg
ICAgICByZXR1cm4gInNobCI7CisgICAgY2FzZSAxMSA6IAorICAgICAgICByZXR1cm4gInNocl9z
IjsKKyAgICBjYXNlIDEyIDogCisgICAgICAgIHJldHVybiAic2hyX3UiOworICAgIGNhc2UgMTMg
OiAKKyAgICAgICAgcmV0dXJuICJyb3RsIjsKKyAgICBjYXNlIDE0IDogCisgICAgICAgIHJldHVy
biAicm90ciI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gY3Z0b3AoeHgsIHBhcmFtKSB7Cisg
IHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuICJleHRlbmRf
cy9pMzIiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gImV4dGVuZF91L2kzMiI7Cisg
ICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAid3JhcC9pNjQiOworICAgIGNhc2UgMyA6IAor
ICAgICAgICByZXR1cm4gInRydW5jX3MvZjMyIjsKKyAgICBjYXNlIDQgOiAKKyAgICAgICAgcmV0
dXJuICJ0cnVuY191L2YzMiI7CisgICAgY2FzZSA1IDogCisgICAgICAgIHJldHVybiAidHJ1bmNf
cy9mNjQiOworICAgIGNhc2UgNiA6IAorICAgICAgICByZXR1cm4gInRydW5jX3UvZjY0IjsKKyAg
ICBjYXNlIDcgOiAKKyAgICAgICAgcmV0dXJuICJyZWludGVycHJldC9mIiArIHh4OworICAgIAor
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RvcCQxKF8sIF8kMSkgeworICB0aHJvdyBbCisgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICBbCisgICAg
ICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJl
dGVyL19idWlsZC9qc2xpYi9zcmMvYXJyYW5nZS5tbCIsCisgICAgICAgICAgMTI4LAorICAgICAg
ICAgIDI3CisgICAgICAgIF0KKyAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHJlbG9wJDEoXywgcGFy
YW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4g
ImVxIjsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuICJuZSI7CisgICAgY2FzZSAyIDog
CisgICAgICAgIHJldHVybiAibHQiOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gImd0
IjsKKyAgICBjYXNlIDQgOiAKKyAgICAgICAgcmV0dXJuICJsZSI7CisgICAgY2FzZSA1IDogCisg
ICAgICAgIHJldHVybiAiZ2UiOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIHVub3AkMShfLCBw
YXJhbSkgeworICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVy
biAibmVnIjsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuICJhYnMiOworICAgIGNhc2Ug
MiA6IAorICAgICAgICByZXR1cm4gImNlaWwiOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1
cm4gImZsb29yIjsKKyAgICBjYXNlIDQgOiAKKyAgICAgICAgcmV0dXJuICJ0cnVuYyI7CisgICAg
Y2FzZSA1IDogCisgICAgICAgIHJldHVybiAibmVhcmVzdCI7CisgICAgY2FzZSA2IDogCisgICAg
ICAgIHJldHVybiAic3FydCI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gYmlub3AkMShfLCBw
YXJhbSkgeworICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVy
biAiYWRkIjsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuICJzdWIiOworICAgIGNhc2Ug
MiA6IAorICAgICAgICByZXR1cm4gIm11bCI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVy
biAiZGl2IjsKKyAgICBjYXNlIDQgOiAKKyAgICAgICAgcmV0dXJuICJtaW4iOworICAgIGNhc2Ug
NSA6IAorICAgICAgICByZXR1cm4gIm1heCI7CisgICAgY2FzZSA2IDogCisgICAgICAgIHJldHVy
biAiY29weXNpZ24iOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIGN2dG9wJDEoeHgsIHBhcmFt
KSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuICJj
b252ZXJ0X3MvaTMyIjsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuICJjb252ZXJ0X3Uv
aTMyIjsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuICJjb252ZXJ0X3MvaTY0IjsKKyAg
ICBjYXNlIDMgOiAKKyAgICAgICAgcmV0dXJuICJjb252ZXJ0X3UvaTY0IjsKKyAgICBjYXNlIDQg
OiAKKyAgICAgICAgcmV0dXJuICJwcm9tb3RlL2YzMiI7CisgICAgY2FzZSA1IDogCisgICAgICAg
IHJldHVybiAiZGVtb3RlL2Y2NCI7CisgICAgY2FzZSA2IDogCisgICAgICAgIHJldHVybiAicmVp
bnRlcnByZXQvaSIgKyB4eDsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBvcGVyKHBhcmFtLCBv
cCkgeworICB2YXIgZmxvYXRvcCA9IHBhcmFtWzFdOworICB2YXIgaW50b3AgPSBwYXJhbVswXTsK
KyAgdmFyICRqczsKKyAgc3dpdGNoIChvcC50YWcgfCAwKSB7CisgICAgY2FzZSAwIDogCisgICAg
ICAgICRqcyA9IEN1cnJ5Ll8yKGludG9wLCAiMzIiLCBvcFswXSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgMSA6IAorICAgICAgICAkanMgPSBDdXJyeS5fMihpbnRvcCwgIjY0Iiwgb3BbMF0p
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgJGpzID0gQ3VycnkuXzIo
ZmxvYXRvcCwgIjMyIiwgb3BbMF0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDMgOiAKKyAg
ICAgICAgJGpzID0gQ3VycnkuXzIoZmxvYXRvcCwgIjY0Iiwgb3BbMF0pOworICAgICAgICBicmVh
azsKKyAgICAKKyAgfQorICByZXR1cm4gVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUoVmFsdWVz
LnR5cGVfb2Yob3ApKSArICgiLiIgKyAkanMpOworfQorCit2YXIgcGFydGlhbF9hcmcgPSAvKiB0
dXBsZSAqL1sKKyAgdW5vcCwKKyAgdW5vcCQxCitdOworCitmdW5jdGlvbiB1bm9wJDIocGFyYW0p
IHsKKyAgcmV0dXJuIG9wZXIocGFydGlhbF9hcmcsIHBhcmFtKTsKK30KKwordmFyIHBhcnRpYWxf
YXJnJDEgPSAvKiB0dXBsZSAqL1sKKyAgYmlub3AsCisgIGJpbm9wJDEKK107CisKK2Z1bmN0aW9u
IGJpbm9wJDIocGFyYW0pIHsKKyAgcmV0dXJuIG9wZXIocGFydGlhbF9hcmckMSwgcGFyYW0pOwor
fQorCit2YXIgcGFydGlhbF9hcmckMiA9IC8qIHR1cGxlICovWworICB0ZXN0b3AsCisgIHRlc3Rv
cCQxCitdOworCitmdW5jdGlvbiB0ZXN0b3AkMihwYXJhbSkgeworICByZXR1cm4gb3BlcihwYXJ0
aWFsX2FyZyQyLCBwYXJhbSk7Cit9CisKK3ZhciBwYXJ0aWFsX2FyZyQzID0gLyogdHVwbGUgKi9b
CisgIHJlbG9wLAorICByZWxvcCQxCitdOworCitmdW5jdGlvbiByZWxvcCQyKHBhcmFtKSB7Cisg
IHJldHVybiBvcGVyKHBhcnRpYWxfYXJnJDMsIHBhcmFtKTsKK30KKwordmFyIHBhcnRpYWxfYXJn
JDQgPSAvKiB0dXBsZSAqL1sKKyAgY3Z0b3AsCisgIGN2dG9wJDEKK107CisKK2Z1bmN0aW9uIGN2
dG9wJDIocGFyYW0pIHsKKyAgcmV0dXJuIG9wZXIocGFydGlhbF9hcmckNCwgcGFyYW0pOworfQor
CitmdW5jdGlvbiBtZW1fc2l6ZShwYXJhbSkgeworICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2Fz
ZSAwIDogCisgICAgICAgIHJldHVybiAiOCI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVy
biAiMTYiOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gIjMyIjsKKyAgICAKKyAgfQor
fQorCitmdW5jdGlvbiBleHRlbnNpb24ocGFyYW0pIHsKKyAgaWYgKHBhcmFtICE9PSAwKSB7Cisg
ICAgcmV0dXJuICJfdSI7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuICJfcyI7CisgIH0KK30K
KworZnVuY3Rpb24gbWVtb3AobmFtZSwgcGFyYW0pIHsKKyAgdmFyIG9mZnNldCA9IHBhcmFtWy8q
IG9mZnNldCAqLzJdOworICB2YXIgYWxpZ24gPSBwYXJhbVsvKiBhbGlnbiAqLzFdOworICB2YXIg
dHkgPSBwYXJhbVsvKiB0eSAqLzBdOworICByZXR1cm4gVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5
cGUodHkpICsgKCIuIiArIChuYW1lICsgKCgKKyAgICAgICAgICAgICAgICBvZmZzZXQgPyAiIG9m
ZnNldD0iICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBvZmZzZXQpIDogIiIKKyAgICAgICAg
ICAgICAgKSArICgKKyAgICAgICAgICAgICAgICAoMSA8PCBhbGlnbikgPT09IFR5cGVzLnNpemUo
dHkpID8gIiIgOiAiIGFsaWduPSIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8x
KEkzMi5vZl9pbnRfdSwgKDEgPDwgYWxpZ24pKSkKKyAgICAgICAgICAgICAgKSkpKTsKK30KKwor
ZnVuY3Rpb24gbG9hZG9wKG9wKSB7CisgIHZhciBtYXRjaCA9IG9wWy8qIHN6ICovM107CisgIGlm
IChtYXRjaCkgeworICAgIHZhciBtYXRjaCQxID0gbWF0Y2hbMF07CisgICAgcmV0dXJuIG1lbW9w
KCJsb2FkIiArIChtZW1fc2l6ZShtYXRjaCQxWzBdKSArIGV4dGVuc2lvbihtYXRjaCQxWzFdKSks
IG9wKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gbWVtb3AoImxvYWQiLCBvcCk7CisgIH0K
K30KKworZnVuY3Rpb24gc3RvcmVvcChvcCkgeworICB2YXIgbWF0Y2ggPSBvcFsvKiBzeiAqLzNd
OworICBpZiAobWF0Y2gpIHsKKyAgICByZXR1cm4gbWVtb3AoInN0b3JlIiArIG1lbV9zaXplKG1h
dGNoWzBdKSwgb3ApOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBtZW1vcCgic3RvcmUiLCBv
cCk7CisgIH0KK30KKworZnVuY3Rpb24gJCR2YXIoeCkgeworICByZXR1cm4gQ3VycnkuXzEoSTMy
LnRvX3N0cmluZ191LCB4Wy8qIGl0ICovMV0pOworfQorCitmdW5jdGlvbiBjb25zdG9wKHYpIHsK
KyAgcmV0dXJuIFR5cGVzLnN0cmluZ19vZl92YWx1ZV90eXBlKFZhbHVlcy50eXBlX29mKHZbLyog
aXQgKi8xXSkpICsgIi5jb25zdCI7Cit9CisKK2Z1bmN0aW9uIGluc3RyKGUpIHsKKyAgdmFyIG1h
dGNoID0gZVsvKiBpdCAqLzFdOworICB2YXIgbWF0Y2gkMTsKKyAgaWYgKHR5cGVvZiBtYXRjaCA9
PT0gIm51bWJlciIpIHsKKyAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgICBjYXNlIDAgOiAKKyAg
ICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAidW5yZWFjaGFibGUi
LAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICJub3AiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICAgICJyZXR1cm4iLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIG1h
dGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJkcm9wIiwKKyAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDQgOiAK
KyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAic2VsZWN0IiwK
KyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAiY3VycmVudF9tZW1vcnkiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
XTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIG1hdGNoJDEg
PSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJncm93X21lbW9yeSIsCisgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgCisgICAgfQor
ICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAobWF0Y2gudGFnIHwgMCkgeworICAgICAgY2FzZSAw
IDogCisgICAgICAgICAgdmFyIGYgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBBdG9tICovQmxvY2suX18oMCwgW1R5cGVzLnN0cmluZ19vZl92YWx1ZV90eXBlKHBh
cmFtKV0pOworICAgICAgICAgIH07CisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWwor
ICAgICAgICAgICAgImJsb2NrIiwKKyAgICAgICAgICAgIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFw
KGYsIG1hdGNoWzBdKSwgTGlzdC5tYXAoaW5zdHIsIG1hdGNoWzFdKSkKKyAgICAgICAgICBdOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgdmFyIGYkMSA9IGZ1
bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgcmV0dXJuIC8qIEF0b20gKi9CbG9jay5fXygw
LCBbVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUocGFyYW0pXSk7CisgICAgICAgICAgfTsKKyAg
ICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAibG9vcCIsCisgICAg
ICAgICAgICBQZXJ2YXNpdmVzLiRhdChMaXN0Lm1hcChmJDEsIG1hdGNoWzBdKSwgTGlzdC5tYXAo
aW5zdHIsIG1hdGNoWzFdKSkKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSAyIDogCisgICAgICAgICAgdmFyIGYkMiA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAg
ICAgICAgcmV0dXJuIC8qIEF0b20gKi9CbG9jay5fXygwLCBbVHlwZXMuc3RyaW5nX29mX3ZhbHVl
X3R5cGUocGFyYW0pXSk7CisgICAgICAgICAgfTsKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAiaWYiLAorICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoTGlz
dC5tYXAoZiQyLCBtYXRjaFswXSksIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgLyogTm9k
ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAidGhlbiIsCisgICAgICAg
ICAgICAgICAgICAgICAgTGlzdC5tYXAoaW5zdHIsIG1hdGNoWzFdKQorICAgICAgICAgICAgICAg
ICAgICBdKSwKKyAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
ICAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgImVsc2Ui
LAorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXAoaW5zdHIsIG1hdGNoWzJdKQorICAg
ICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgIF07CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAiYnIgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0
Y2hbMF1bLyogaXQgKi8xXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8q
IHR1cGxlICovWworICAgICAgICAgICAgImJyX2lmICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5n
X3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHZhciB4
cyA9IFBlcnZhc2l2ZXMuJGF0KG1hdGNoWzBdLCAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBt
YXRjaFsxXSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgXSk7Cisg
ICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgImJyX3RhYmxlICIg
KyAkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcCgkJHZhciwgeHMpKSwKKyAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDYg
OiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAiY2FsbCAi
ICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXRjaFswXVsvKiBpdCAqLzFdKSwKKyAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDcgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAi
Y2FsbF9pbmRpcmVjdCAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXRjaFswXVsvKiBp
dCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9b
CisgICAgICAgICAgICAiZ2V0X2xvY2FsICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1h
dGNoWzBdWy8qIGl0ICovMV0pLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsK
KyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOSA6IAorICAgICAgICAgIG1hdGNoJDEgPSAv
KiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJzZXRfbG9jYWwgIiArIEN1cnJ5Ll8xKEkzMi50b19z
dHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAg
IG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJ0ZWVfbG9jYWwgIiArIEN1cnJ5
Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSksCisgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMSA6
IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJnZXRfZ2xv
YmFsICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pLAor
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAic2V0X2dsb2JhbCAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXRjaFswXVsv
KiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxl
ICovWworICAgICAgICAgICAgbG9hZG9wKG1hdGNoWzBdKSwKKyAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE0IDogCisgICAg
ICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgc3RvcmVvcChtYXRjaFsw
XSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAxNSA6IAorICAgICAgICAgIHZhciBsaXQgPSBtYXRjaFswXTsKKyAgICAg
ICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBjb25zdG9wKGxpdCkgKyAo
IiAiICsgVmFsdWVzLnN0cmluZ19vZl92YWx1ZShsaXRbLyogaXQgKi8xXSkpLAorICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
MTYgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBDdXJy
eS5fMSh0ZXN0b3AkMiwgbWF0Y2hbMF0pLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICBtYXRj
aCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBDdXJyeS5fMShyZWxvcCQyLCBtYXRjaFsw
XSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgIEN1cnJ5Ll8xKHVub3AkMiwgbWF0Y2hbMF0pLAorICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTkgOiAKKyAg
ICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBDdXJyeS5fMShiaW5v
cCQyLCBtYXRjaFswXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0
dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKGN2dG9wJDIsIG1hdGNoWzBdKSwKKyAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICAK
KyAgICB9CisgIH0KKyAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAg
ICBtYXRjaCQxWzBdLAorICAgICAgICAgICAgbWF0Y2gkMVsxXQorICAgICAgICAgIF0pOworfQor
CitmdW5jdGlvbiBmdW5jX3dpdGhfbmFtZShuYW1lLCBmKSB7CisgIHZhciBtYXRjaCA9IGZbLyog
aXQgKi8xXTsKKyAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAi
ZnVuYyIgKyBuYW1lLAorICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgICAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAg
ICAgICJ0eXBlICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWy8qIGZ0eXBlICov
MF1bLyogaXQgKi8xXSksCisgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgXSwgUGVydmFzaXZlcy4kYXQoZGVjbHMoImxvY2FsIiwgbWF0Y2hbLyogbG9jYWxzICov
MV0pLCBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbLyogYm9keSAqLzJdKSkpCisgICAgICAgICAgXSk7
Cit9CisKK2Z1bmN0aW9uIGZ1bmMoZikgeworICByZXR1cm4gZnVuY193aXRoX25hbWUoIiIsIGYp
OworfQorCitmdW5jdGlvbiBzdGFydCh4KSB7CisgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18o
MSwgWworICAgICAgICAgICAgInN0YXJ0ICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIHhb
LyogaXQgKi8xXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdKTsKK30KKwor
ZnVuY3Rpb24gdGFibGUob2ZmLCBpLCB0YWIpIHsKKyAgdmFyIG1hdGNoID0gdGFiWy8qIGl0ICov
MV07CisgIHZhciBtYXRjaCQxID0gbWF0Y2hbLyogdHR5cGUgKi8wXTsKKyAgcmV0dXJuIC8qIE5v
ZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAidGFibGUgJCIgKyAoQ3VycnkuXzEoSTMy
LnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIG9mZiArIGkgfCAwKSkgKyAoIiAi
ICsgbGltaXRzKEkzMi50b19zdHJpbmdfdSwgbWF0Y2gkMVswXSkpKSwKKyAgICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW1R5cGVzLnN0cmlu
Z19vZl9lbGVtX3R5cGUobWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgICBdCisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIG1lbW9yeShvZmYsIGks
IG1lbSkgeworICB2YXIgbWF0Y2ggPSBtZW1bLyogaXQgKi8xXTsKKyAgcmV0dXJuIC8qIE5vZGUg
Ki9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAibWVtb3J5ICQiICsgKEN1cnJ5Ll8xKEkzMi50
b19zdHJpbmdfdSwgQ3VycnkuXzEoSTMyLm9mX2ludF91LCBvZmYgKyBpIHwgMCkpICsgKCIgIiAr
IGxpbWl0cyhJMzIudG9fc3RyaW5nX3UsIG1hdGNoWy8qIG10eXBlICovMF1bMF0pKSksCisgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gc2VnbWVudCho
ZWFkLCBkYXQsIHNlZykgeworICB2YXIgbWF0Y2ggPSBzZWdbLyogaXQgKi8xXTsKKyAgcmV0dXJu
IC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICBoZWFkLAorICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbQ3VycnkuXzEo
STMyLnRvX3N0cmluZ191LCBtYXRjaFsvKiBpbmRleCAqLzBdWy8qIGl0ICovMV0pXSksCisgICAg
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIC8qIE5vZGUgKi9CbG9jay5fXygx
LCBbCisgICAgICAgICAgICAgICAgICAgICJvZmZzZXQiLAorICAgICAgICAgICAgICAgICAgICBM
aXN0Lm1hcChpbnN0ciwgbWF0Y2hbLyogb2Zmc2V0ICovMV1bLyogaXQgKi8xXSkKKyAgICAgICAg
ICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGRhdCwgbWF0Y2hbLyogaW5p
dCAqLzJdKQorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdCisgICAgICAgICAgXSk7Cit9
CisKK2Z1bmN0aW9uIGVsZW1zKHNlZykgeworICByZXR1cm4gc2VnbWVudCgiZWxlbSIsIGZ1bmN0
aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4gTGlzdC5tYXAoZnVuY3Rpb24gKHBh
cmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBBdG9tICovQmxvY2su
X18oMCwgW0N1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgcGFyYW1bLyogaXQgKi8xXSldKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAgICAgIH0sIHNlZyk7Cit9
CisKK2Z1bmN0aW9uIGRhdGEoc2VnKSB7CisgIHJldHVybiBzZWdtZW50KCJkYXRhIiwgYnJlYWtf
Ynl0ZXMsIHNlZyk7Cit9CisKK2Z1bmN0aW9uIHR5cGVkZWYoaSwgdCkgeworICByZXR1cm4gLyog
Tm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICJ0eXBlICQiICsgQ3VycnkuXzEoSTMy
LnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIGkpKSwKKyAgICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgICBmdW5jX3R5cGUodCksCisgICAgICAgICAgICAgIC8qIFtd
ICovMAorICAgICAgICAgICAgXQorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBpbXBvcnRf
a2luZChpLCBrKSB7CisgIHZhciBtYXRjaCA9IGtbLyogaXQgKi8xXTsKKyAgc3dpdGNoIChtYXRj
aC50YWcgfCAwKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxv
Y2suX18oMSwgWworICAgICAgICAgICAgICAgICAgImZ1bmMgJCIgKyBDdXJyeS5fMShJMzIudG9f
c3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgaSkpLAorICAgICAgICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAs
IFtDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pXSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAq
LzAKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdKTsKKyAgICBjYXNlIDEg
OiAKKyAgICAgICAgcmV0dXJuIHRhYmxlKDAsIGksIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICov
Wy8qIHR0eXBlICovbWF0Y2hbMF1dLCBrWy8qIGF0ICovMF0pKTsKKyAgICBjYXNlIDIgOiAKKyAg
ICAgICAgcmV0dXJuIG1lbW9yeSgwLCBpLCBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1svKiBt
dHlwZSAqL21hdGNoWzBdXSwga1svKiBhdCAqLzBdKSk7CisgICAgY2FzZSAzIDogCisgICAgICAg
IHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAgImdsb2Jh
bCAkIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgQ3VycnkuXzEoSTMyLm9mX2ludF91LCBp
KSksCisgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsX3R5cGUobWF0Y2hbMF0pLAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdKTsKKyAgICAKKyAgfQorfQorCitmdW5j
dGlvbiAkJGltcG9ydChpLCBpbSkgeworICB2YXIgbWF0Y2ggPSBpbVsvKiBpdCAqLzFdOworICBy
ZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICJpbXBvcnQiLAorICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBb
c3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoWy8qIG1vZHVsZV9uYW1lICovMF0pXSksCisgICAg
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygw
LCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoWy8qIGl0ZW1fbmFtZSAqLzFdKV0pLAorICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgaW1wb3J0X2tpbmQoaSwg
bWF0Y2hbLyogaWtpbmQgKi8yXSksCisgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0KKyAgICAgICAgICBd
KTsKK30KKworZnVuY3Rpb24gZXhwb3J0X2tpbmQoaykgeworICB2YXIgbWF0Y2ggPSBrWy8qIGl0
ICovMV07CisgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJu
ICJmdW5jIjsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuICJ0YWJsZSI7CisgICAgY2Fz
ZSAyIDogCisgICAgICAgIHJldHVybiAibWVtb3J5IjsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAg
cmV0dXJuICJnbG9iYWwiOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uICQkZXhwb3J0KGV4KSB7
CisgIHZhciBtYXRjaCA9IGV4Wy8qIGl0ICovMV07CisgIHJldHVybiAvKiBOb2RlICovQmxvY2su
X18oMSwgWworICAgICAgICAgICAgImV4cG9ydCIsCisgICAgICAgICAgICAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0aChhZGRfY2hhciwg
bWF0Y2hbLyogbmFtZSAqLzBdKV0pLAorICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAgICBleHBv
cnRfa2luZChtYXRjaFsvKiBla2luZCAqLzFdKSwKKyAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtDdXJyeS5f
MShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWy8qIGl0ZW0gKi8yXVsvKiBpdCAqLzFdKV0pLAorICAg
ICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgXQorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiB2YXJfb3B0
KHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHJldHVybiAiICIgKyBwYXJhbVswXVsvKiBp
dCAqLzFdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAiIjsKKyAgfQorfQorCitmdW5jdGlv
biBpc19mdW5jX2ltcG9ydChpbSkgeworICB2YXIgbWF0Y2ggPSBpbVsvKiBpdCAqLzFdWy8qIGlr
aW5kICovMl1bLyogaXQgKi8xXTsKKyAgaWYgKG1hdGNoLnRhZykgeworICAgIHJldHVybiAvKiBm
YWxzZSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICB9Cit9
CisKK2Z1bmN0aW9uIGlzX3RhYmxlX2ltcG9ydChpbSkgeworICB2YXIgbWF0Y2ggPSBpbVsvKiBp
dCAqLzFdWy8qIGlraW5kICovMl1bLyogaXQgKi8xXTsKKyAgaWYgKG1hdGNoLnRhZyA9PT0gMSkg
eworICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyog
ZmFsc2UgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGlzX21lbW9yeV9pbXBvcnQoaW0pIHsKKyAg
dmFyIG1hdGNoID0gaW1bLyogaXQgKi8xXVsvKiBpa2luZCAqLzJdWy8qIGl0ICovMV07CisgIGlm
IChtYXRjaC50YWcgPT09IDIpIHsKKyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgIH0KKyAgZWxz
ZSB7CisgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgfQorfQorCitmdW5jdGlvbiBpc19nbG9i
YWxfaW1wb3J0KGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV1bLyogaWtpbmQgKi8y
XVsvKiBpdCAqLzFdOworICBpZiAobWF0Y2gudGFnID09PSAzKSB7CisgICAgcmV0dXJuIC8qIHRy
dWUgKi8xOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KK30K
KworZnVuY3Rpb24gbW9kdWxlX3dpdGhfdmFyX29wdCh4X29wdCwgbSkgeworICB2YXIgZnVuY19p
bXBvcnRzID0gTGlzdC5maWx0ZXIoaXNfZnVuY19pbXBvcnQpKG1bLyogaXQgKi8xXVsvKiBpbXBv
cnRzICovOF0pOworICB2YXIgdGFibGVfaW1wb3J0cyA9IExpc3QuZmlsdGVyKGlzX3RhYmxlX2lt
cG9ydCkobVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84XSk7CisgIHZhciBtZW1vcnlfaW1wb3J0
cyA9IExpc3QuZmlsdGVyKGlzX21lbW9yeV9pbXBvcnQpKG1bLyogaXQgKi8xXVsvKiBpbXBvcnRz
ICovOF0pOworICB2YXIgZ2xvYmFsX2ltcG9ydHMgPSBMaXN0LmZpbHRlcihpc19nbG9iYWxfaW1w
b3J0KShtWy8qIGl0ICovMV1bLyogaW1wb3J0cyAqLzhdKTsKKyAgdmFyIHBhcnRpYWxfYXJnID0g
TGlzdC5sZW5ndGgodGFibGVfaW1wb3J0cyk7CisgIHZhciBmID0gZnVuY3Rpb24gKHBhcmFtLCBw
YXJhbSQxKSB7CisgICAgcmV0dXJuIHRhYmxlKHBhcnRpYWxfYXJnLCBwYXJhbSwgcGFyYW0kMSk7
CisgIH07CisgIHZhciBwYXJ0aWFsX2FyZyQxID0gTGlzdC5sZW5ndGgobWVtb3J5X2ltcG9ydHMp
OworICB2YXIgZiQxID0gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxKSB7CisgICAgcmV0dXJuIG1l
bW9yeShwYXJ0aWFsX2FyZyQxLCBwYXJhbSwgcGFyYW0kMSk7CisgIH07CisgIHZhciBwYXJ0aWFs
X2FyZyQyID0gTGlzdC5sZW5ndGgoZ2xvYmFsX2ltcG9ydHMpOworICB2YXIgZiQyID0gZnVuY3Rp
b24gKHBhcmFtLCBwYXJhbSQxKSB7CisgICAgdmFyIG9mZiA9IHBhcnRpYWxfYXJnJDI7CisgICAg
dmFyIGkgPSBwYXJhbTsKKyAgICB2YXIgZyA9IHBhcmFtJDE7CisgICAgdmFyIG1hdGNoID0gZ1sv
KiBpdCAqLzFdOworICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAg
ICAgICAiZ2xvYmFsICQiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIu
b2ZfaW50X3UsIG9mZiArIGkgfCAwKSksCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgIGdsb2JhbF90eXBlKG1hdGNoWy8qIGd0eXBlICovMF0pLAorICAgICAgICAgICAg
ICAgIExpc3QubWFwKGluc3RyLCBtYXRjaFsvKiB2YWx1ZSAqLzFdWy8qIGl0ICovMV0pCisgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIF0pOworICB9OworICB2YXIgcGFydGlhbF9hcmckMyA9
IExpc3QubGVuZ3RoKGZ1bmNfaW1wb3J0cyk7CisgIHZhciBmJDMgPSBmdW5jdGlvbiAocGFyYW0s
IHBhcmFtJDEpIHsKKyAgICB2YXIgb2ZmID0gcGFydGlhbF9hcmckMzsKKyAgICB2YXIgaSA9IHBh
cmFtOworICAgIHZhciBmJDQgPSBwYXJhbSQxOworICAgIHJldHVybiBmdW5jX3dpdGhfbmFtZSgi
ICQiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIG9m
ZiArIGkgfCAwKSksIGYkNCk7CisgIH07CisgIHZhciB4cyA9IGxpc3Rfb2Zfb3B0KG1bLyogaXQg
Ki8xXVsvKiBzdGFydCAqLzVdKTsKKyAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisg
ICAgICAgICAgICAibW9kdWxlIiArIHZhcl9vcHQoeF9vcHQpLAorICAgICAgICAgICAgUGVydmFz
aXZlcy4kYXQoTGlzdC5tYXBpKHR5cGVkZWYsIG1bLyogaXQgKi8xXVsvKiB0eXBlcyAqLzBdKSwg
UGVydmFzaXZlcy4kYXQoTGlzdC5tYXBpKCQkaW1wb3J0LCB0YWJsZV9pbXBvcnRzKSwgUGVydmFz
aXZlcy4kYXQoTGlzdC5tYXBpKCQkaW1wb3J0LCBtZW1vcnlfaW1wb3J0cyksIFBlcnZhc2l2ZXMu
JGF0KExpc3QubWFwaSgkJGltcG9ydCwgZ2xvYmFsX2ltcG9ydHMpLCBQZXJ2YXNpdmVzLiRhdChM
aXN0Lm1hcGkoJCRpbXBvcnQsIGZ1bmNfaW1wb3J0cyksIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFw
aShmLCBtWy8qIGl0ICovMV1bLyogdGFibGVzICovMl0pLCBQZXJ2YXNpdmVzLiRhdChMaXN0Lm1h
cGkoZiQxLCBtWy8qIGl0ICovMV1bLyogbWVtb3JpZXMgKi8zXSksIFBlcnZhc2l2ZXMuJGF0KExp
c3QubWFwaShmJDIsIG1bLyogaXQgKi8xXVsvKiBnbG9iYWxzICovMV0pLCBQZXJ2YXNpdmVzLiRh
dChMaXN0Lm1hcGkoZiQzLCBtWy8qIGl0ICovMV1bLyogZnVuY3MgKi80XSksIFBlcnZhc2l2ZXMu
JGF0KExpc3QubWFwKCQkZXhwb3J0LCBtWy8qIGl0ICovMV1bLyogZXhwb3J0cyAqLzldKSwgUGVy
dmFzaXZlcy4kYXQoTGlzdC5tYXAoc3RhcnQsIHhzKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5tYXAo
ZWxlbXMsIG1bLyogaXQgKi8xXVsvKiBlbGVtcyAqLzZdKSwgTGlzdC5tYXAoZGF0YSwgbVsvKiBp
dCAqLzFdWy8qIGRhdGEgKi83XSkpKSkpKSkpKSkpKSkKKyAgICAgICAgICBdKTsKK30KKworZnVu
Y3Rpb24gbW9kdWxlXyhwYXJhbSkgeworICByZXR1cm4gbW9kdWxlX3dpdGhfdmFyX29wdCgvKiBO
b25lICovMCwgcGFyYW0pOworfQorCitmdW5jdGlvbiBsaXRlcmFsKGxpdCkgeworICB2YXIgbWF0
Y2ggPSBsaXRbLyogaXQgKi8xXTsKKyAgc3dpdGNoIChtYXRjaC50YWcgfCAwKSB7CisgICAgY2Fz
ZSAwIDogCisgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAg
ICAgICAgICAgImkzMi5jb25zdCAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ19zLCBtYXRjaFsw
XSksCisgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICBdKTsKKyAg
ICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAg
ICAgICAgICAgICAgICAiaTY0LmNvbnN0ICIgKyBDdXJyeS5fMShJNjQudG9fc3RyaW5nX3MsIG1h
dGNoWzBdKSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgIF0p
OworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsK
KyAgICAgICAgICAgICAgICAgICJmMzIuY29uc3QgIiArIEN1cnJ5Ll8xKEYzMi50b19zdHJpbmcs
IG1hdGNoWzBdKSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAg
IF0pOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEs
IFsKKyAgICAgICAgICAgICAgICAgICJmNjQuY29uc3QgIiArIEN1cnJ5Ll8xKEY2NC50b19zdHJp
bmcsIG1hdGNoWzBdKSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAg
ICAgIF0pOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIGRlZmluaXRpb24obW9kZSwgeF9vcHQs
IGRlZikgeworICB2YXIgbWF0Y2ggPSBkZWZbLyogaXQgKi8xXTsKKyAgdmFyIGV4aXQgPSAwOwor
ICBleGl0ID0gbW9kZSAhPT0gNTY0MTQ2MjA5ICYmICEobW9kZSA+PSA5ODMxNjcwODkgJiYgbWF0
Y2gudGFnKSA/IDEgOiAyOworICBzd2l0Y2ggKGV4aXQpIHsKKyAgICBjYXNlIDEgOiAKKyAgICAg
ICAgdmFyIG1hdGNoJDEgPSBkZWZbLyogaXQgKi8xXTsKKyAgICAgICAgdmFyIG07CisgICAgICAg
IG0gPSBtYXRjaCQxLnRhZyA/IERlY29kZS5kZWNvZGUoIiIsIG1hdGNoJDFbMV0pIDogbWF0Y2gk
MVswXTsKKyAgICAgICAgcmV0dXJuIG1vZHVsZV93aXRoX3Zhcl9vcHQoeF9vcHQsIG0pOworICAg
IGNhc2UgMiA6IAorICAgICAgICB2YXIgbWF0Y2gkMiA9IGRlZlsvKiBpdCAqLzFdOworICAgICAg
ICB2YXIgYnM7CisgICAgICAgIGJzID0gbWF0Y2gkMi50YWcgPyBtYXRjaCQyWzFdIDogRW5jb2Rl
LmVuY29kZShtYXRjaCQyWzBdKTsKKyAgICAgICAgdmFyIHhfb3B0JDEgPSB4X29wdDsKKyAgICAg
ICAgdmFyIGJzJDEgPSBiczsKKyAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBb
CisgICAgICAgICAgICAgICAgICAibW9kdWxlIiArIHZhcl9vcHQoeF9vcHQkMSksCisgICAgICAg
ICAgICAgICAgICBicmVha19ieXRlcyhicyQxKQorICAgICAgICAgICAgICAgIF0pOworICAgIAor
ICB9Cit9CisKK2Z1bmN0aW9uIGFjY2Vzcyh4X29wdCwgbmFtZSkgeworICByZXR1cm4gJCRTdHJp
bmcuY29uY2F0KCIgIiwgLyogOjogKi9bCisgICAgICAgICAgICAgIHZhcl9vcHQoeF9vcHQpLAor
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBzdHJpbmdfd2l0aChhZGRf
Y2hhciwgbmFtZSksCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBhY3Rpb24oYWN0KSB7CisgIHZhciBtYXRj
aCA9IGFjdFsvKiBpdCAqLzFdOworICBpZiAobWF0Y2gudGFnKSB7CisgICAgcmV0dXJuIC8qIE5v
ZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICJnZXQiICsgYWNjZXNzKG1hdGNoWzBd
LCBtYXRjaFsxXSksCisgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgXSk7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAg
ICAgICAgICJpbnZva2UiICsgYWNjZXNzKG1hdGNoWzBdLCBtYXRjaFsxXSksCisgICAgICAgICAg
ICAgIExpc3QubWFwKGxpdGVyYWwsIG1hdGNoWzJdKQorICAgICAgICAgICAgXSk7CisgIH0KK30K
KworZnVuY3Rpb24gc2NyaXB0KG1vZGUsIHNjcikgeworICByZXR1cm4gTGlzdC5tYXAoZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHZhciBtb2RlJDEgPSBtb2RlOworICAgICAgICAg
ICAgICB2YXIgY21kID0gcGFyYW07CisgICAgICAgICAgICAgIHZhciBtYXRjaCA9IGNtZFsvKiBp
dCAqLzFdOworICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoLnRhZyB8IDApIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmluaXRpb24o
bW9kZSQxLCBtYXRjaFswXSwgbWF0Y2hbMV0pOworICAgICAgICAgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpc3RlciAiICsgKHN0cmluZ193aXRoKGFkZF9j
aGFyLCBtYXRjaFswXSkgKyB2YXJfb3B0KG1hdGNoWzFdKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlv
bihtYXRjaFswXSk7CisgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAg
ICAgIHZhciBtb2RlJDIgPSBtb2RlJDE7CisgICAgICAgICAgICAgICAgICAgIHZhciBhc3MgPSBt
YXRjaFswXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDEgPSBhc3NbLyogaXQgKi8x
XTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQxLnRhZyB8IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiYXNzZXJ0X21hbGZvcm1lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmaW5pdGlvbigvKiBPcmlnaW5hbCAqLzk4MzE2NzA4OSwgLyogTm9uZSAqLzAsIG1hdGNoJDFb
MF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18o
MCwgW3N0cmluZ193aXRoKGFkZF9jaGFyLCBtYXRjaCQxWzFdKV0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBOb2Rl
ICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFz
c2VydF9pbnZhbGlkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uKG1v
ZGUkMiwgLyogTm9uZSAqLzAsIG1hdGNoJDFbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFkZF9jaGFyLCBtYXRj
aCQxWzFdKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtd
ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF9zb2Z0X2ludmFsaWQiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24obW9kZSQyLCAvKiBOb25lICovMCwgbWF0Y2gk
MVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5f
XygwLCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoJDFbMV0pXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5v
ZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
YXNzZXJ0X3VubGlua2FibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRp
b24obW9kZSQyLCAvKiBOb25lICovMCwgbWF0Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIs
IG1hdGNoJDFbMV0pXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3RyYXAiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmluaXRpb24obW9kZSQyLCAvKiBOb25lICovMCwgbWF0Y2gkMVsw
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygw
LCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoJDFbMV0pXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5vZGUg
Ki9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNz
ZXJ0X3JldHVybiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uKG1hdGNoJDFb
MF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcChsaXRl
cmFsLCBtYXRjaCQxWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAq
L0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3Nl
cnRfcmV0dXJuX25hbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uKG1hdGNo
JDFbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3RyYXAiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbihtYXRjaCQxWzBdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0aChhZGRf
Y2hhciwgbWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfZXhoYXVzdGlvbiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uKG1hdGNoJDFbMF0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRo
KGFkZF9jaGFyLCBtYXRjaCQxWzFdKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJn
L3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2FycmFuZ2UubWwiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxNAorICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAg
ICBdOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCBz
Y3IpOworfQorCitleHBvcnRzLmluc3RyICAgPSBpbnN0cjsKK2V4cG9ydHMuZnVuYyAgICA9IGZ1
bmM7CitleHBvcnRzLm1vZHVsZV8gPSBtb2R1bGVfOworZXhwb3J0cy5zY3JpcHQgID0gc2NyaXB0
OworLyogRjMyIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgYXJyYW5nZS5q
cyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5
WydhcnJheSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2YgYXJyYXkuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5
ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfYXJyYXkg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2FycmF5Iik7Cit2YXIgQ2FtbF9leGNlcHRp
b25zICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0aW9ucyIpOwordmFyIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOwor
CitmdW5jdGlvbiBpbml0KGwsIGYpIHsKKyAgaWYgKGwpIHsKKyAgICBpZiAobCA8IDApIHsKKyAg
ICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRf
YXJndW1lbnQsCisgICAgICAgICAgICAiQXJyYXkuaW5pdCIKKyAgICAgICAgICBdOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHZhciByZXMgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KGws
IEN1cnJ5Ll8xKGYsIDApKTsKKyAgICAgIGZvcih2YXIgaSA9IDEgLGlfZmluaXNoID0gbCAtIDEg
fCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgICAgICByZXNbaV0gPSBDdXJyeS5fMShmLCBp
KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiByZXM7CisgICAgfQorICB9CisgIGVsc2UgeworICAg
IHJldHVybiAvKiBhcnJheSAqL1tdOworICB9Cit9CisKK2Z1bmN0aW9uIG1ha2VfbWF0cml4KHN4
LCBzeSwgaW5pdCkgeworICB2YXIgcmVzID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChzeCwg
LyogYXJyYXkgKi9bXSk7CisgIGZvcih2YXIgeCA9IDAgLHhfZmluaXNoID0gc3ggLSAxIHwgMDsg
eCA8PSB4X2ZpbmlzaDsgKyt4KXsKKyAgICByZXNbeF0gPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92
ZWN0KHN5LCBpbml0KTsKKyAgfQorICByZXR1cm4gcmVzOworfQorCitmdW5jdGlvbiBjb3B5KGEp
IHsKKyAgdmFyIGwgPSBhLmxlbmd0aDsKKyAgaWYgKGwpIHsKKyAgICByZXR1cm4gQ2FtbF9hcnJh
eS5jYW1sX2FycmF5X3N1YihhLCAwLCBsKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyog
YXJyYXkgKi9bXTsKKyAgfQorfQorCitmdW5jdGlvbiBhcHBlbmQoYTEsIGEyKSB7CisgIHZhciBs
MSA9IGExLmxlbmd0aDsKKyAgaWYgKGwxKSB7CisgICAgaWYgKGEyLmxlbmd0aCkgeworICAgICAg
cmV0dXJuIGExLmNvbmNhdChhMik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIENh
bWxfYXJyYXkuY2FtbF9hcnJheV9zdWIoYTEsIDAsIGwxKTsKKyAgICB9CisgIH0KKyAgZWxzZSB7
CisgICAgcmV0dXJuIGNvcHkoYTIpOworICB9Cit9CisKK2Z1bmN0aW9uIHN1YihhLCBvZnMsIGxl
bikgeworICBpZiAobGVuIDwgMCB8fCBvZnMgPiAoYS5sZW5ndGggLSBsZW4gfCAwKSkgeworICAg
IHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3Vt
ZW50LAorICAgICAgICAgICJBcnJheS5zdWIiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIENhbWxfYXJyYXkuY2FtbF9hcnJheV9zdWIoYSwgb2ZzLCBsZW4pOworICB9Cit9
CisKK2Z1bmN0aW9uIGZpbGwoYSwgb2ZzLCBsZW4sIHYpIHsKKyAgaWYgKG9mcyA8IDAgfHwgbGVu
IDwgMCB8fCBvZnMgPiAoYS5sZW5ndGggLSBsZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAgICAg
ICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAg
ICJBcnJheS5maWxsIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIGZvcih2YXIgaSA9
IG9mcyAsaV9maW5pc2ggPSAob2ZzICsgbGVuIHwgMCkgLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsg
KytpKXsKKyAgICAgIGFbaV0gPSB2OworICAgIH0KKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9
Cit9CisKK2Z1bmN0aW9uIGJsaXQoYTEsIG9mczEsIGEyLCBvZnMyLCBsZW4pIHsKKyAgaWYgKGxl
biA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IChhMS5sZW5ndGggLSBsZW4gfCAwKSB8fCBvZnMy
IDwgMCB8fCBvZnMyID4gKGEyLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAg
ICAgIkFycmF5LmJsaXQiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIENh
bWxfYXJyYXkuY2FtbF9hcnJheV9ibGl0KGExLCBvZnMxLCBhMiwgb2ZzMiwgbGVuKTsKKyAgfQor
fQorCitmdW5jdGlvbiBpdGVyKGYsIGEpIHsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBh
Lmxlbmd0aCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIEN1cnJ5Ll8xKGYsIGFb
aV0pOworICB9CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIG1hcChmLCBhKSB7
CisgIHZhciBsID0gYS5sZW5ndGg7CisgIGlmIChsKSB7CisgICAgdmFyIHIgPSBDYW1sX2FycmF5
LmNhbWxfbWFrZV92ZWN0KGwsIEN1cnJ5Ll8xKGYsIGFbMF0pKTsKKyAgICBmb3IodmFyIGkgPSAx
ICxpX2ZpbmlzaCA9IGwgLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICAgIHJbaV0g
PSBDdXJyeS5fMShmLCBhW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIHI7CisgIH0KKyAgZWxzZSB7
CisgICAgcmV0dXJuIC8qIGFycmF5ICovW107CisgIH0KK30KKworZnVuY3Rpb24gaXRlcmkoZiwg
YSkgeworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGEubGVuZ3RoIC0gMSB8IDA7IGkgPD0g
aV9maW5pc2g7ICsraSl7CisgICAgQ3VycnkuXzIoZiwgaSwgYVtpXSk7CisgIH0KKyAgcmV0dXJu
IC8qICgpICovMDsKK30KKworZnVuY3Rpb24gbWFwaShmLCBhKSB7CisgIHZhciBsID0gYS5sZW5n
dGg7CisgIGlmIChsKSB7CisgICAgdmFyIHIgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KGws
IEN1cnJ5Ll8yKGYsIDAsIGFbMF0pKTsKKyAgICBmb3IodmFyIGkgPSAxICxpX2ZpbmlzaCA9IGwg
LSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICAgIHJbaV0gPSBDdXJyeS5fMihmLCBp
LCBhW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIHI7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IC8qIGFycmF5ICovW107CisgIH0KK30KKworZnVuY3Rpb24gdG9fbGlzdChhKSB7CisgIHZhciBf
aSA9IGEubGVuZ3RoIC0gMSB8IDA7CisgIHZhciBfcmVzID0gLyogW10gKi8wOworICB3aGlsZSh0
cnVlKSB7CisgICAgdmFyIHJlcyA9IF9yZXM7CisgICAgdmFyIGkgPSBfaTsKKyAgICBpZiAoaSA8
IDApIHsKKyAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIGVsc2UgeworICAgICAgX3JlcyA9
IC8qIDo6ICovWworICAgICAgICBhW2ldLAorICAgICAgICByZXMKKyAgICAgIF07CisgICAgICBf
aSA9IGkgLSAxIHwgMDsKKyAgICAgIGNvbnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAgfTsKK30K
KworZnVuY3Rpb24gbGlzdF9sZW5ndGgoX2FjY3UsIF9wYXJhbSkgeworICB3aGlsZSh0cnVlKSB7
CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIHZhciBhY2N1ID0gX2FjY3U7CisgICAgaWYg
KHBhcmFtKSB7CisgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgIF9hY2N1ID0gYWNjdSAr
IDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAg
ICAgcmV0dXJuIGFjY3U7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBvZl9saXN0KGwpIHsK
KyAgaWYgKGwpIHsKKyAgICB2YXIgYSA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QobGlzdF9s
ZW5ndGgoMCwgbCksIGxbMF0pOworICAgIHZhciBfaSA9IDE7CisgICAgdmFyIF9wYXJhbSA9IGxb
MV07CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgICAg
dmFyIGkgPSBfaTsKKyAgICAgIGlmIChwYXJhbSkgeworICAgICAgICBhW2ldID0gcGFyYW1bMF07
CisgICAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAg
ICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICByZXR1cm4gYTsKKyAgICAgIH0KKyAgICB9OworICB9CisgIGVsc2UgeworICAgIHJldHVybiAv
KiBhcnJheSAqL1tdOworICB9Cit9CisKK2Z1bmN0aW9uIGZvbGRfbGVmdChmLCB4LCBhKSB7Cisg
IHZhciByID0geDsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBhLmxlbmd0aCAtIDEgfCAw
OyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIHIgPSBDdXJyeS5fMihmLCByLCBhW2ldKTsKKyAg
fQorICByZXR1cm4gcjsKK30KKworZnVuY3Rpb24gZm9sZF9yaWdodChmLCBhLCB4KSB7CisgIHZh
ciByID0geDsKKyAgZm9yKHZhciBpID0gYS5sZW5ndGggLSAxIHwgMDsgaSA+PSAwOyAtLWkpewor
ICAgIHIgPSBDdXJyeS5fMihmLCBhW2ldLCByKTsKKyAgfQorICByZXR1cm4gcjsKK30KKwordmFy
IEJvdHRvbSA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIkFycmF5LkJvdHRvbSIpOworCitmdW5j
dGlvbiBzb3J0KGNtcCwgYSkgeworICB2YXIgbWF4c29uID0gZnVuY3Rpb24gKGwsIGkpIHsKKyAg
ICB2YXIgaTMxID0gKChpICsgaSB8IDApICsgaSB8IDApICsgMSB8IDA7CisgICAgdmFyIHggPSBp
MzE7CisgICAgaWYgKChpMzEgKyAyIHwgMCkgPCBsKSB7CisgICAgICBpZiAoQ3VycnkuXzIoY21w
LCBhW2kzMV0sIGFbaTMxICsgMSB8IDBdKSA8IDApIHsKKyAgICAgICAgeCA9IGkzMSArIDEgfCAw
OworICAgICAgfQorICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgYVt4XSwgYVtpMzEgKyAyIHwgMF0p
IDwgMCkgeworICAgICAgICB4ID0gaTMxICsgMiB8IDA7CisgICAgICB9CisgICAgICByZXR1cm4g
eDsKKyAgICB9CisgICAgZWxzZSBpZiAoKGkzMSArIDEgfCAwKSA8IGwgJiYgQ3VycnkuXzIoY21w
LCBhW2kzMV0sIGFbaTMxICsgMSB8IDBdKSA8IDApIHsKKyAgICAgIHJldHVybiBpMzEgKyAxIHwg
MDsKKyAgICB9CisgICAgZWxzZSBpZiAoaTMxIDwgbCkgeworICAgICAgcmV0dXJuIGkzMTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBCb3R0b20sCisgICAg
ICAgICAgICBpCisgICAgICAgICAgXTsKKyAgICB9CisgIH07CisgIHZhciB0cmlja2xlID0gZnVu
Y3Rpb24gKGwsIGksIGUpIHsKKyAgICB0cnkgeworICAgICAgdmFyIGwkMSA9IGw7CisgICAgICB2
YXIgX2kgPSBpOworICAgICAgdmFyIGUkMSA9IGU7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAg
ICAgIHZhciBpJDEgPSBfaTsKKyAgICAgICAgdmFyIGogPSBtYXhzb24obCQxLCBpJDEpOworICAg
ICAgICBpZiAoQ3VycnkuXzIoY21wLCBhW2pdLCBlJDEpID4gMCkgeworICAgICAgICAgIGFbaSQx
XSA9IGFbal07CisgICAgICAgICAgX2kgPSBqOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBhW2kkMV0gPSBlJDE7
CisgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9
CisgICAgY2F0Y2ggKGV4bil7CisgICAgICBpZiAoZXhuWzBdID09PSBCb3R0b20pIHsKKyAgICAg
ICAgYVtleG5bMV1dID0gZTsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICB0aHJvdyBleG47CisgICAgICB9CisgICAgfQorICB9OworICB2
YXIgYnViYmxlID0gZnVuY3Rpb24gKGwsIGkpIHsKKyAgICB0cnkgeworICAgICAgdmFyIGwkMSA9
IGw7CisgICAgICB2YXIgX2kgPSBpOworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIg
aSQxID0gX2k7CisgICAgICAgIHZhciBqID0gbWF4c29uKGwkMSwgaSQxKTsKKyAgICAgICAgYVtp
JDFdID0gYVtqXTsKKyAgICAgICAgX2kgPSBqOworICAgICAgICBjb250aW51ZSA7CisgICAgICAg
IAorICAgICAgfTsKKyAgICB9CisgICAgY2F0Y2ggKGV4bil7CisgICAgICBpZiAoZXhuWzBdID09
PSBCb3R0b20pIHsKKyAgICAgICAgcmV0dXJuIGV4blsxXTsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICB0aHJvdyBleG47CisgICAgICB9CisgICAgfQorICB9OworICB2YXIgdHJpY2ts
ZXVwID0gZnVuY3Rpb24gKF9pLCBlKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIGkg
PSBfaTsKKyAgICAgIHZhciBmYXRoZXIgPSAoaSAtIDEgfCAwKSAvIDMgfCAwOworICAgICAgaWYg
KGkgPT09IGZhdGhlcikgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgImFycmF5Lm1sIiwKKyAgICAgICAgICAgICAgICAxNjgsCisgICAgICAgICAgICAg
ICAgNAorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgaWYg
KEN1cnJ5Ll8yKGNtcCwgYVtmYXRoZXJdLCBlKSA8IDApIHsKKyAgICAgICAgYVtpXSA9IGFbZmF0
aGVyXTsKKyAgICAgICAgaWYgKGZhdGhlciA+IDApIHsKKyAgICAgICAgICBfaSA9IGZhdGhlcjsK
KyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgYVswXSA9IGU7CisgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGFbaV0gPSBlOworICAgICAg
ICByZXR1cm4gLyogKCkgKi8wOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBsID0gYS5s
ZW5ndGg7CisgIGZvcih2YXIgaSA9ICgobCArIDEgfCAwKSAvIDMgfCAwKSAtIDEgfCAwOyBpID49
IDA7IC0taSl7CisgICAgdHJpY2tsZShsLCBpLCBhW2ldKTsKKyAgfQorICBmb3IodmFyIGkkMSA9
IGwgLSAxIHwgMDsgaSQxID49IDI7IC0taSQxKXsKKyAgICB2YXIgZSA9IGFbaSQxXTsKKyAgICBh
W2kkMV0gPSBhWzBdOworICAgIHRyaWNrbGV1cChidWJibGUoaSQxLCAwKSwgZSk7CisgIH0KKyAg
aWYgKGwgPiAxKSB7CisgICAgdmFyIGUkMSA9IGFbMV07CisgICAgYVsxXSA9IGFbMF07CisgICAg
YVswXSA9IGUkMTsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHN0YWJsZV9zb3J0KGNtcCwgYSkgeworICB2YXIg
bWVyZ2UgPSBmdW5jdGlvbiAoc3JjMW9mcywgc3JjMWxlbiwgc3JjMiwgc3JjMm9mcywgc3JjMmxl
biwgZHN0LCBkc3RvZnMpIHsKKyAgICB2YXIgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiB8IDA7
CisgICAgdmFyIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gfCAwOworICAgIHZhciBfaTEgPSBz
cmMxb2ZzOworICAgIHZhciBfczEgPSBhW3NyYzFvZnNdOworICAgIHZhciBfaTIgPSBzcmMyb2Zz
OworICAgIHZhciBfczIgPSBzcmMyW3NyYzJvZnNdOworICAgIHZhciBfZCA9IGRzdG9mczsKKyAg
ICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgZCA9IF9kOworICAgICAgdmFyIHMyID0gX3MyOwor
ICAgICAgdmFyIGkyID0gX2kyOworICAgICAgdmFyIHMxID0gX3MxOworICAgICAgdmFyIGkxID0g
X2kxOworICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgczEsIHMyKSA8PSAwKSB7CisgICAgICAgIGRz
dFtkXSA9IHMxOworICAgICAgICB2YXIgaTEkMSA9IGkxICsgMSB8IDA7CisgICAgICAgIGlmIChp
MSQxIDwgc3JjMXIpIHsKKyAgICAgICAgICBfZCA9IGQgKyAxIHwgMDsKKyAgICAgICAgICBfczEg
PSBhW2kxJDFdOworICAgICAgICAgIF9pMSA9IGkxJDE7CisgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBi
bGl0KHNyYzIsIGkyLCBkc3QsIGQgKyAxIHwgMCwgc3JjMnIgLSBpMiB8IDApOworICAgICAgICB9
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZHN0W2RdID0gczI7CisgICAgICAgIHZh
ciBpMiQxID0gaTIgKyAxIHwgMDsKKyAgICAgICAgaWYgKGkyJDEgPCBzcmMycikgeworICAgICAg
ICAgIF9kID0gZCArIDEgfCAwOworICAgICAgICAgIF9zMiA9IHNyYzJbaTIkMV07CisgICAgICAg
ICAgX2kyID0gaTIkMTsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAg
IH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGJsaXQoYSwgaTEsIGRzdCwgZCAr
IDEgfCAwLCBzcmMxciAtIGkxIHwgMCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9
OworICB2YXIgaXNvcnR0byA9IGZ1bmN0aW9uIChzcmNvZnMsIGRzdCwgZHN0b2ZzLCBsZW4pIHsK
KyAgICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9IGlfZmluaXNo
OyArK2kpeworICAgICAgdmFyIGUgPSBhW3NyY29mcyArIGkgfCAwXTsKKyAgICAgIHZhciBqID0g
KGRzdG9mcyArIGkgfCAwKSAtIDEgfCAwOworICAgICAgd2hpbGUoaiA+PSBkc3RvZnMgJiYgQ3Vy
cnkuXzIoY21wLCBkc3Rbal0sIGUpID4gMCkgeworICAgICAgICBkc3RbaiArIDEgfCAwXSA9IGRz
dFtqXTsKKyAgICAgICAgaiA9IGogLSAxIHwgMDsKKyAgICAgIH07CisgICAgICBkc3RbaiArIDEg
fCAwXSA9IGU7CisgICAgfQorICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH07CisgIHZhciBzb3J0
dG8gPSBmdW5jdGlvbiAoc3Jjb2ZzLCBkc3QsIGRzdG9mcywgbGVuKSB7CisgICAgaWYgKGxlbiA8
PSA1KSB7CisgICAgICByZXR1cm4gaXNvcnR0byhzcmNvZnMsIGRzdCwgZHN0b2ZzLCBsZW4pOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBsMSA9IGxlbiAvIDIgfCAwOworICAgICAgdmFy
IGwyID0gbGVuIC0gbDEgfCAwOworICAgICAgc29ydHRvKHNyY29mcyArIGwxIHwgMCwgZHN0LCBk
c3RvZnMgKyBsMSB8IDAsIGwyKTsKKyAgICAgIHNvcnR0byhzcmNvZnMsIGEsIHNyY29mcyArIGwy
IHwgMCwgbDEpOworICAgICAgcmV0dXJuIG1lcmdlKHNyY29mcyArIGwyIHwgMCwgbDEsIGRzdCwg
ZHN0b2ZzICsgbDEgfCAwLCBsMiwgZHN0LCBkc3RvZnMpOworICAgIH0KKyAgfTsKKyAgdmFyIGwg
PSBhLmxlbmd0aDsKKyAgaWYgKGwgPD0gNSkgeworICAgIHJldHVybiBpc29ydHRvKDAsIGEsIDAs
IGwpOworICB9CisgIGVsc2UgeworICAgIHZhciBsMSA9IGwgLyAyIHwgMDsKKyAgICB2YXIgbDIg
PSBsIC0gbDEgfCAwOworICAgIHZhciB0ID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChsMiwg
YVswXSk7CisgICAgc29ydHRvKGwxLCB0LCAwLCBsMik7CisgICAgc29ydHRvKDAsIGEsIGwyLCBs
MSk7CisgICAgcmV0dXJuIG1lcmdlKGwyLCBsMSwgdCwgMCwgbDIsIGEsIDApOworICB9Cit9CisK
K3ZhciBjcmVhdGVfbWF0cml4ID0gbWFrZV9tYXRyaXg7CisKK3ZhciBjb25jYXQgPSBDYW1sX2Fy
cmF5LmNhbWxfYXJyYXlfY29uY2F0OworCit2YXIgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnQ7CisK
K2V4cG9ydHMuaW5pdCAgICAgICAgICA9IGluaXQ7CitleHBvcnRzLm1ha2VfbWF0cml4ICAgPSBt
YWtlX21hdHJpeDsKK2V4cG9ydHMuY3JlYXRlX21hdHJpeCA9IGNyZWF0ZV9tYXRyaXg7CitleHBv
cnRzLmFwcGVuZCAgICAgICAgPSBhcHBlbmQ7CitleHBvcnRzLmNvbmNhdCAgICAgICAgPSBjb25j
YXQ7CitleHBvcnRzLnN1YiAgICAgICAgICAgPSBzdWI7CitleHBvcnRzLmNvcHkgICAgICAgICAg
PSBjb3B5OworZXhwb3J0cy5maWxsICAgICAgICAgID0gZmlsbDsKK2V4cG9ydHMuYmxpdCAgICAg
ICAgICA9IGJsaXQ7CitleHBvcnRzLnRvX2xpc3QgICAgICAgPSB0b19saXN0OworZXhwb3J0cy5v
Zl9saXN0ICAgICAgID0gb2ZfbGlzdDsKK2V4cG9ydHMuaXRlciAgICAgICAgICA9IGl0ZXI7Citl
eHBvcnRzLm1hcCAgICAgICAgICAgPSBtYXA7CitleHBvcnRzLml0ZXJpICAgICAgICAgPSBpdGVy
aTsKK2V4cG9ydHMubWFwaSAgICAgICAgICA9IG1hcGk7CitleHBvcnRzLmZvbGRfbGVmdCAgICAg
PSBmb2xkX2xlZnQ7CitleHBvcnRzLmZvbGRfcmlnaHQgICAgPSBmb2xkX3JpZ2h0OworZXhwb3J0
cy5zb3J0ICAgICAgICAgID0gc29ydDsKK2V4cG9ydHMuc3RhYmxlX3NvcnQgICA9IHN0YWJsZV9z
b3J0OworZXhwb3J0cy5mYXN0X3NvcnQgICAgID0gZmFzdF9zb3J0OworLyogTm8gc2lkZSBlZmZl
Y3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBhcnJheS5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4
cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wydhc3QnXSA9IGZ1bmN0aW9uKCkgeworwqAg
wqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGFzdC5qcyAvLy8vLy8vLwor
Ly8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQg
V0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBMaWIgICAgICA9IHJlcXVpcmUoIi4vbGli
Iik7Cit2YXIgQmxvY2sgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2siKTsK
K3ZhciBDdXJyeSAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFy
IENhbWxfb2JqID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7CisKK3Zh
ciBJbnRPcCA9IC8qIG1vZHVsZSAqL1tdOworCit2YXIgRmxvYXRPcCA9IC8qIG1vZHVsZSAqL1td
OworCitmdW5jdGlvbiBleHBvcnRfa2luZF9vZl9pbXBvcnRfa2luZChwYXJhbSkgeworICBzd2l0
Y2ggKHBhcmFtLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIC8qIEZ1
bmNFeHBvcnQgKi8wOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gLyogVGFibGVFeHBv
cnQgKi8xOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gLyogTWVtb3J5RXhwb3J0ICov
MjsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAgcmV0dXJuIC8qIEdsb2JhbEV4cG9ydCAqLzM7Cisg
ICAgCisgIH0KK30KKworZnVuY3Rpb24gaW1wb3J0X3R5cGUobSwgaW0pIHsKKyAgdmFyIG1hdGNo
ID0gaW1bLyogaXQgKi8xXTsKKyAgdmFyIG1hdGNoJDEgPSBtYXRjaFsvKiBpa2luZCAqLzJdWy8q
IGl0ICovMV07CisgIHN3aXRjaCAobWF0Y2gkMS50YWcgfCAwKSB7CisgICAgY2FzZSAwIDogCisg
ICAgICAgIHJldHVybiAvKiBFeHRlcm5hbEZ1bmNUeXBlICovQmxvY2suX18oMCwgW0N1cnJ5Ll8y
KExpYi5MaXN0MzJbLyogbnRoICovMV0sIG1bLyogaXQgKi8xXVsvKiB0eXBlcyAqLzBdLCBtYXRj
aCQxWzBdWy8qIGl0ICovMV0pXSk7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiBF
eHRlcm5hbFRhYmxlVHlwZSAqL0Jsb2NrLl9fKDEsIFttYXRjaCQxWzBdXSk7CisgICAgY2FzZSAy
IDogCisgICAgICAgIHJldHVybiAvKiBFeHRlcm5hbE1lbW9yeVR5cGUgKi9CbG9jay5fXygyLCBb
bWF0Y2gkMVswXV0pOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gLyogRXh0ZXJuYWxH
bG9iYWxUeXBlICovQmxvY2suX18oMywgW21hdGNoJDFbMF1dKTsKKyAgICAKKyAgfQorfQorCitm
dW5jdGlvbiBleHBvcnRfdHlwZShtLCBleCkgeworICB2YXIgbWF0Y2ggPSBleFsvKiBpdCAqLzFd
OworICB2YXIgZWtpbmQgPSBtYXRjaFsvKiBla2luZCAqLzFdOworICB2YXIgX2kgPSBtYXRjaFsv
KiBpdGVtICovMl1bLyogaXQgKi8xXTsKKyAgdmFyIF9wYXJhbSA9IG1bLyogaXQgKi8xXVsvKiBp
bXBvcnRzICovOF07CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07Cisg
ICAgdmFyIGkgPSBfaTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciBpbXMgPSBwYXJhbVsx
XTsKKyAgICAgIHZhciBpbSA9IHBhcmFtWzBdOworICAgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1
YWwoZXhwb3J0X2tpbmRfb2ZfaW1wb3J0X2tpbmQoaW1bLyogaXQgKi8xXVsvKiBpa2luZCAqLzJd
Wy8qIGl0ICovMV0pLCBla2luZFsvKiBpdCAqLzFdKSkgeworICAgICAgICBpZiAoaSkgeworICAg
ICAgICAgIF9wYXJhbSA9IGltczsKKyAgICAgICAgICBfaSA9IGkgLSAxIHwgMDsKKyAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIGltcG9ydF90eXBlKG0sIGltKTsKKyAgICAgICAgfQorICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIF9wYXJhbSA9IGltczsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgbWF0Y2gkMSA9IGVr
aW5kWy8qIGl0ICovMV07CisgICAgICBzd2l0Y2ggKG1hdGNoJDEpIHsKKyAgICAgICAgY2FzZSAw
IDogCisgICAgICAgICAgICByZXR1cm4gLyogRXh0ZXJuYWxGdW5jVHlwZSAqL0Jsb2NrLl9fKDAs
IFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyogdHlwZXMg
Ki8wXSwgQ3VycnkuXzIoTGliLkxpc3QzMlsvKiBudGggKi8xXSwgbVsvKiBpdCAqLzFdWy8qIGZ1
bmNzICovNF0sIGkpWy8qIGl0ICovMV1bLyogZnR5cGUgKi8wXVsvKiBpdCAqLzFdKV0pOworICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFeHRlcm5hbFRhYmxlVHlwZSAq
L0Jsb2NrLl9fKDEsIFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICov
MV1bLyogdGFibGVzICovMl0sIGkpWy8qIGl0ICovMV1bLyogdHR5cGUgKi8wXV0pOworICAgICAg
ICBjYXNlIDIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFeHRlcm5hbE1lbW9yeVR5cGUgKi9C
bG9jay5fXygyLCBbQ3VycnkuXzIoTGliLkxpc3QzMlsvKiBudGggKi8xXSwgbVsvKiBpdCAqLzFd
Wy8qIG1lbW9yaWVzICovM10sIGkpWy8qIGl0ICovMV1bLyogbXR5cGUgKi8wXV0pOworICAgICAg
ICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFeHRlcm5hbEdsb2JhbFR5cGUgKi9C
bG9jay5fXygzLCBbQ3VycnkuXzIoTGliLkxpc3QzMlsvKiBudGggKi8xXSwgbVsvKiBpdCAqLzFd
Wy8qIGdsb2JhbHMgKi8xXSwgaSlbLyogaXQgKi8xXVsvKiBndHlwZSAqLzBdXSk7CisgICAgICAg
IAorICAgICAgfQorICAgIH0KKyAgfTsKK30KKwordmFyIEkzMk9wID0gMDsKKwordmFyIEk2NE9w
ID0gMDsKKwordmFyIEYzMk9wID0gMDsKKwordmFyIEY2NE9wID0gMDsKKwordmFyIGVtcHR5X21v
ZHVsZSA9IC8qIHJlY29yZCAqL1sKKyAgLyogdHlwZXMgOiBbXSAqLzAsCisgIC8qIGdsb2JhbHMg
OiBbXSAqLzAsCisgIC8qIHRhYmxlcyA6IFtdICovMCwKKyAgLyogbWVtb3JpZXMgOiBbXSAqLzAs
CisgIC8qIGZ1bmNzIDogW10gKi8wLAorICAvKiBzdGFydCA6IE5vbmUgKi8wLAorICAvKiBlbGVt
cyA6IFtdICovMCwKKyAgLyogZGF0YSA6IFtdICovMCwKKyAgLyogaW1wb3J0cyA6IFtdICovMCwK
KyAgLyogZXhwb3J0cyA6IFtdICovMAorXTsKKworZXhwb3J0cy5JbnRPcCAgICAgICAgICAgICAg
ICAgICAgICA9IEludE9wOworZXhwb3J0cy5GbG9hdE9wICAgICAgICAgICAgICAgICAgICA9IEZs
b2F0T3A7CitleHBvcnRzLkkzMk9wICAgICAgICAgICAgICAgICAgICAgID0gSTMyT3A7CitleHBv
cnRzLkk2NE9wICAgICAgICAgICAgICAgICAgICAgID0gSTY0T3A7CitleHBvcnRzLkYzMk9wICAg
ICAgICAgICAgICAgICAgICAgID0gRjMyT3A7CitleHBvcnRzLkY2NE9wICAgICAgICAgICAgICAg
ICAgICAgID0gRjY0T3A7CitleHBvcnRzLmVtcHR5X21vZHVsZSAgICAgICAgICAgICAgID0gZW1w
dHlfbW9kdWxlOworZXhwb3J0cy5leHBvcnRfa2luZF9vZl9pbXBvcnRfa2luZCA9IGV4cG9ydF9r
aW5kX29mX2ltcG9ydF9raW5kOworZXhwb3J0cy5pbXBvcnRfdHlwZSAgICAgICAgICAgICAgICA9
IGltcG9ydF90eXBlOworZXhwb3J0cy5leHBvcnRfdHlwZSAgICAgICAgICAgICAgICA9IGV4cG9y
dF90eXBlOworLyogTGliIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgYXN0
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ2JpZ2FycmF5J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307Cisv
Ly8vLy8vLyBzdGFydCBvZiBiaWdhcnJheS5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2
YXIgQ2FtbF9hcnJheSAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXkiKTsKK3Zh
ciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMiKTsKKworZnVuY3Rpb24gZGltcygpIHsKKyAgdmFyIG4gPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICB0aHJvdyAiY2FtbF9iYV9udW1fZGltcyBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKKyAgICB9KCk7CisgIHZhciBkID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVj
dChuLCAwKTsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBuIC0gMSB8IDA7IGkgPD0gaV9m
aW5pc2g7ICsraSl7CisgICAgZFtpXSA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhyb3cgImNh
bWxfYmFfZGltIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAg
fSgpOworICB9CisgIHJldHVybiBkOworfQorCitmdW5jdGlvbiBtYXBfZmlsZShfLCAkc3Rhcm9w
dCRzdGFyLCBfJDEsIF8kMiwgXyQzLCBfJDQpIHsKKyAgJHN0YXJvcHQkc3RhciA/ICRzdGFyb3B0
JHN0YXJbMF0gOiAvKiBpbnQ2NCAqL1sKKyAgICAgIC8qIGhpICovMCwKKyAgICAgIC8qIGxvICov
MAorICAgIF07CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2Ft
bF9iYV9tYXBfZmlsZV9ieXRlY29kZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHll
dFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK3ZhciBHZW5hcnJheSA9IC8qIG1vZHVsZSAqL1sK
KyAgLyogZGltcyAqL2RpbXMsCisgIC8qIG1hcF9maWxlICovbWFwX2ZpbGUKK107CisKK2Z1bmN0
aW9uIGNyZWF0ZShfLCBfJDEsIF8kMikgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgdGhyb3cgImNhbWxfYmFfY3JlYXRlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3Jp
cHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gb2ZfYXJyYXkoa2luZCwg
bGF5b3V0LCBkYXRhKSB7CisgIHZhciBiYSA9IGNyZWF0ZShraW5kLCBsYXlvdXQsIGRhdGEubGVu
Z3RoKTsKKyAgbGF5b3V0ICE9PSAwID8gMSA6IDA7CisgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNo
ID0gZGF0YS5sZW5ndGggLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICAoZnVuY3Rp
b24gKCkgeworICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NldF8xIG5vdCBpbXBsZW1lbnRlZCBi
eSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICB9KCkpOworICB9CisgIHJldHVybiBiYTsK
K30KKworZnVuY3Rpb24gbWFwX2ZpbGUkMShmZCwgcG9zLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwg
ZGltKSB7CisgIHJldHVybiBtYXBfZmlsZShmZCwgcG9zLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwg
LyogaW50IGFycmF5ICovW2RpbV0pOworfQorCit2YXIgQXJyYXkxID0gLyogbW9kdWxlICovWwor
ICAvKiBjcmVhdGUgKi9jcmVhdGUsCisgIC8qIG9mX2FycmF5ICovb2ZfYXJyYXksCisgIC8qIG1h
cF9maWxlICovbWFwX2ZpbGUkMQorXTsKKworZnVuY3Rpb24gY3JlYXRlJDEoXywgXyQxLCBfJDIs
IF8kMykgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxf
YmFfY3JlYXRlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAg
ICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2xpY2VfbGVmdChfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1l
bnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rp
b24gc2xpY2VfcmlnaHQoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB0aHJvdyAiY2FtbF9iYV9zbGljZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0
IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIG9mX2FycmF5JDEoa2luZCwg
bGF5b3V0LCBkYXRhKSB7CisgIHZhciBkaW0xID0gZGF0YS5sZW5ndGg7CisgIHZhciBkaW0yID0g
ZGltMSA/IGRhdGFbMF0ubGVuZ3RoIDogMDsKKyAgdmFyIGJhID0gY3JlYXRlJDEoa2luZCwgbGF5
b3V0LCBkaW0xLCBkaW0yKTsKKyAgbGF5b3V0ICE9PSAwID8gMSA6IDA7CisgIGZvcih2YXIgaSA9
IDAgLGlfZmluaXNoID0gZGltMSAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIHZh
ciByb3cgPSBkYXRhW2ldOworICAgIGlmIChyb3cubGVuZ3RoICE9PSBkaW0yKSB7CisgICAgICB0
aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3Vt
ZW50LAorICAgICAgICAgICAgIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1
bGFyIGRhdGEiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZm9yKHZhciBqID0gMCAsal9maW5p
c2ggPSBkaW0yIC0gMSB8IDA7IGogPD0gal9maW5pc2g7ICsrail7CisgICAgICAoZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfYmFfc2V0XzIgbm90IGltcGxlbWVudGVkIGJ5
IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpKTsKKyAgICB9CisgIH0KKyAgcmV0
dXJuIGJhOworfQorCitmdW5jdGlvbiBtYXBfZmlsZSQyKGZkLCBwb3MsIGtpbmQsIGxheW91dCwg
c2hhcmVkLCBkaW0xLCBkaW0yKSB7CisgIHJldHVybiBtYXBfZmlsZShmZCwgcG9zLCBraW5kLCBs
YXlvdXQsIHNoYXJlZCwgLyogaW50IGFycmF5ICovWworICAgICAgICAgICAgICBkaW0xLAorICAg
ICAgICAgICAgICBkaW0yCisgICAgICAgICAgICBdKTsKK30KKwordmFyIEFycmF5MiA9IC8qIG1v
ZHVsZSAqL1sKKyAgLyogY3JlYXRlICovY3JlYXRlJDEsCisgIC8qIHNsaWNlX2xlZnQgKi9zbGlj
ZV9sZWZ0LAorICAvKiBzbGljZV9yaWdodCAqL3NsaWNlX3JpZ2h0LAorICAvKiBvZl9hcnJheSAq
L29mX2FycmF5JDEsCisgIC8qIG1hcF9maWxlICovbWFwX2ZpbGUkMgorXTsKKworZnVuY3Rpb24g
Y3JlYXRlJDIoXywgXyQxLCBfJDIsIF8kMywgXyQ0KSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9jcmVhdGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1
Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBzbGljZV9s
ZWZ0XzEoXywgXyQxLCBfJDIpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHRocm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0
XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2xpY2VfcmlnaHRfMShfLCBfJDEs
IF8kMikgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxf
YmFfc2xpY2Ugbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAg
ICAgfSgpOworfQorCitmdW5jdGlvbiBzbGljZV9sZWZ0XzIoXywgXyQxKSB7CisgIHJldHVybiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9zbGljZSBub3QgaW1wbGVt
ZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0
aW9uIHNsaWNlX3JpZ2h0XzIoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0aHJvdyAiY2FtbF9iYV9zbGljZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIG9mX2FycmF5JDIoa2lu
ZCwgbGF5b3V0LCBkYXRhKSB7CisgIHZhciBkaW0xID0gZGF0YS5sZW5ndGg7CisgIHZhciBkaW0y
ID0gZGltMSA/IGRhdGFbMF0ubGVuZ3RoIDogMDsKKyAgdmFyIGRpbTMgPSBkaW0yID8gZGF0YVsw
XVswXS5sZW5ndGggOiAwOworICB2YXIgYmEgPSBjcmVhdGUkMihraW5kLCBsYXlvdXQsIGRpbTEs
IGRpbTIsIGRpbTMpOworICBsYXlvdXQgIT09IDAgPyAxIDogMDsKKyAgZm9yKHZhciBpID0gMCAs
aV9maW5pc2ggPSBkaW0xIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgdmFyIHJv
dyA9IGRhdGFbaV07CisgICAgaWYgKHJvdy5sZW5ndGggIT09IGRpbTIpIHsKKyAgICAgIHRocm93
IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQs
CisgICAgICAgICAgICAiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YSIK
KyAgICAgICAgICBdOworICAgIH0KKyAgICBmb3IodmFyIGogPSAwICxqX2ZpbmlzaCA9IGRpbTIg
LSAxIHwgMDsgaiA8PSBqX2ZpbmlzaDsgKytqKXsKKyAgICAgIHZhciBjb2wgPSByb3dbal07Cisg
ICAgICBpZiAoY29sLmxlbmd0aCAhPT0gZGltMykgeworICAgICAgICB0aHJvdyBbCisgICAgICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAg
ICAgICAgICJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhIgorICAgICAg
ICAgICAgXTsKKyAgICAgIH0KKyAgICAgIGZvcih2YXIgayA9IDAgLGtfZmluaXNoID0gZGltMyAt
IDEgfCAwOyBrIDw9IGtfZmluaXNoOyArK2speworICAgICAgICAoZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9zZXRfMyBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xl
c2NyaXB0IHlldFxuIjsKKyAgICAgICAgICAgIH0oKSk7CisgICAgICB9CisgICAgfQorICB9Cisg
IHJldHVybiBiYTsKK30KKworZnVuY3Rpb24gbWFwX2ZpbGUkMyhmZCwgcG9zLCBraW5kLCBsYXlv
dXQsIHNoYXJlZCwgZGltMSwgZGltMiwgZGltMykgeworICByZXR1cm4gbWFwX2ZpbGUoZmQsIHBv
cywga2luZCwgbGF5b3V0LCBzaGFyZWQsIC8qIGludCBhcnJheSAqL1sKKyAgICAgICAgICAgICAg
ZGltMSwKKyAgICAgICAgICAgICAgZGltMiwKKyAgICAgICAgICAgICAgZGltMworICAgICAgICAg
ICAgXSk7Cit9CisKK3ZhciBBcnJheTMgPSAvKiBtb2R1bGUgKi9bCisgIC8qIGNyZWF0ZSAqL2Ny
ZWF0ZSQyLAorICAvKiBzbGljZV9sZWZ0XzEgKi9zbGljZV9sZWZ0XzEsCisgIC8qIHNsaWNlX3Jp
Z2h0XzEgKi9zbGljZV9yaWdodF8xLAorICAvKiBzbGljZV9sZWZ0XzIgKi9zbGljZV9sZWZ0XzIs
CisgIC8qIHNsaWNlX3JpZ2h0XzIgKi9zbGljZV9yaWdodF8yLAorICAvKiBvZl9hcnJheSAqL29m
X2FycmF5JDIsCisgIC8qIG1hcF9maWxlICovbWFwX2ZpbGUkMworXTsKKworZnVuY3Rpb24gYXJy
YXkxX29mX2dlbmFycmF5KGEpIHsKKyAgaWYgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhyb3cg
ImNhbWxfYmFfbnVtX2RpbXMgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7
CisgICAgICB9KCkgPT09IDEpIHsKKyAgICByZXR1cm4gYTsKKyAgfQorICBlbHNlIHsKKyAgICB0
aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVu
dCwKKyAgICAgICAgICAiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5IgorICAgICAgICBdOwor
ICB9Cit9CisKK2Z1bmN0aW9uIGFycmF5Ml9vZl9nZW5hcnJheShhKSB7CisgIGlmIChmdW5jdGlv
biAoKSB7CisgICAgICAgIHRocm93ICJjYW1sX2JhX251bV9kaW1zIG5vdCBpbXBsZW1lbnRlZCBi
eSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgfSgpID09PSAyKSB7CisgICAgcmV0dXJuIGE7
CisgIH0KKyAgZWxzZSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkJpZ2FycmF5LmFycmF5Ml9vZl9n
ZW5hcnJheSIKKyAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBhcnJheTNfb2ZfZ2VuYXJy
YXkoYSkgeworICBpZiAoZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyAiY2FtbF9iYV9udW1f
ZGltcyBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgIH0oKSA9
PT0gMykgeworICAgIHJldHVybiBhOworICB9CisgIGVsc2UgeworICAgIHRocm93IFsKKyAgICAg
ICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAg
ICJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXkiCisgICAgICAgIF07CisgIH0KK30KKworZnVu
Y3Rpb24gcmVzaGFwZV8xKF8sIF8kMSkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgdGhyb3cgImNhbWxfYmFfcmVzaGFwZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHJlc2hhcGVfMihfLCBf
JDEsIF8kMikgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNh
bWxfYmFfcmVzaGFwZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAg
ICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHJlc2hhcGVfMyhfLCBfJDEsIF8kMiwgXyQzKSB7
CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9yZXNo
YXBlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0o
KTsKK30KKwordmFyIGZsb2F0MzIgPSAvKiBGbG9hdDMyICovMDsKKwordmFyIGZsb2F0NjQgPSAv
KiBGbG9hdDY0ICovMTsKKwordmFyIGNvbXBsZXgzMiA9IC8qIENvbXBsZXgzMiAqLzEwOworCit2
YXIgY29tcGxleDY0ID0gLyogQ29tcGxleDY0ICovMTE7CisKK3ZhciBpbnQ4X3NpZ25lZCA9IC8q
IEludDhfc2lnbmVkICovMjsKKwordmFyIGludDhfdW5zaWduZWQgPSAvKiBJbnQ4X3Vuc2lnbmVk
ICovMzsKKwordmFyIGludDE2X3NpZ25lZCA9IC8qIEludDE2X3NpZ25lZCAqLzQ7CisKK3ZhciBp
bnQxNl91bnNpZ25lZCA9IC8qIEludDE2X3Vuc2lnbmVkICovNTsKKwordmFyICQkaW50ID0gLyog
SW50ICovODsKKwordmFyIGludDMyID0gLyogSW50MzIgKi82OworCit2YXIgaW50NjQgPSAvKiBJ
bnQ2NCAqLzc7CisKK3ZhciBuYXRpdmVpbnQgPSAvKiBOYXRpdmVpbnQgKi85OworCit2YXIgJCRj
aGFyID0gLyogQ2hhciAqLzEyOworCit2YXIgY19sYXlvdXQgPSAvKiBDX2xheW91dCAqLzA7CisK
K3ZhciBmb3J0cmFuX2xheW91dCA9IC8qIEZvcnRyYW5fbGF5b3V0ICovMTsKKworZnVuY3Rpb24g
cmVzaGFwZShfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRo
cm93ICJjYW1sX2JhX3Jlc2hhcGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRc
biI7CisgICAgICAgICAgfSgpOworfQorCitleHBvcnRzLmZsb2F0MzIgICAgICAgICAgICA9IGZs
b2F0MzI7CitleHBvcnRzLmZsb2F0NjQgICAgICAgICAgICA9IGZsb2F0NjQ7CitleHBvcnRzLmNv
bXBsZXgzMiAgICAgICAgICA9IGNvbXBsZXgzMjsKK2V4cG9ydHMuY29tcGxleDY0ICAgICAgICAg
ID0gY29tcGxleDY0OworZXhwb3J0cy5pbnQ4X3NpZ25lZCAgICAgICAgPSBpbnQ4X3NpZ25lZDsK
K2V4cG9ydHMuaW50OF91bnNpZ25lZCAgICAgID0gaW50OF91bnNpZ25lZDsKK2V4cG9ydHMuaW50
MTZfc2lnbmVkICAgICAgID0gaW50MTZfc2lnbmVkOworZXhwb3J0cy5pbnQxNl91bnNpZ25lZCAg
ICAgPSBpbnQxNl91bnNpZ25lZDsKK2V4cG9ydHMuJCRpbnQgICAgICAgICAgICAgID0gJCRpbnQ7
CitleHBvcnRzLmludDMyICAgICAgICAgICAgICA9IGludDMyOworZXhwb3J0cy5pbnQ2NCAgICAg
ICAgICAgICAgPSBpbnQ2NDsKK2V4cG9ydHMubmF0aXZlaW50ICAgICAgICAgID0gbmF0aXZlaW50
OworZXhwb3J0cy4kJGNoYXIgICAgICAgICAgICAgPSAkJGNoYXI7CitleHBvcnRzLmNfbGF5b3V0
ICAgICAgICAgICA9IGNfbGF5b3V0OworZXhwb3J0cy5mb3J0cmFuX2xheW91dCAgICAgPSBmb3J0
cmFuX2xheW91dDsKK2V4cG9ydHMuR2VuYXJyYXkgICAgICAgICAgID0gR2VuYXJyYXk7CitleHBv
cnRzLkFycmF5MSAgICAgICAgICAgICA9IEFycmF5MTsKK2V4cG9ydHMuQXJyYXkyICAgICAgICAg
ICAgID0gQXJyYXkyOworZXhwb3J0cy5BcnJheTMgICAgICAgICAgICAgPSBBcnJheTM7CitleHBv
cnRzLmFycmF5MV9vZl9nZW5hcnJheSA9IGFycmF5MV9vZl9nZW5hcnJheTsKK2V4cG9ydHMuYXJy
YXkyX29mX2dlbmFycmF5ID0gYXJyYXkyX29mX2dlbmFycmF5OworZXhwb3J0cy5hcnJheTNfb2Zf
Z2VuYXJyYXkgPSBhcnJheTNfb2ZfZ2VuYXJyYXk7CitleHBvcnRzLnJlc2hhcGUgICAgICAgICAg
ICA9IHJlc2hhcGU7CitleHBvcnRzLnJlc2hhcGVfMSAgICAgICAgICA9IHJlc2hhcGVfMTsKK2V4
cG9ydHMucmVzaGFwZV8yICAgICAgICAgID0gcmVzaGFwZV8yOworZXhwb3J0cy5yZXNoYXBlXzMg
ICAgICAgICAgPSByZXNoYXBlXzM7CisvKiAgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8v
IGVuZCBvZiBiaWdhcnJheS5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9
OworCisKKyAgX3JlZ2lzdHJ5WydibG9jayddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhw
b3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgYmxvY2suanMgLy8vLy8vLy8KKyd1c2Ugc3Ry
aWN0JzsKKworCitmdW5jdGlvbiBfXyh0YWcsIGJsb2NrKSB7CisgIGJsb2NrLnRhZyA9IHRhZzsK
KyAgcmV0dXJuIGJsb2NrOworfQorCitleHBvcnRzLl9fID0gX187CisvKiBObyBzaWRlIGVmZmVj
dCAqLworLy8vLy8vLy8gZW5kIG9mIGJsb2NrLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhw
b3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2J1ZmZlciddID0gZnVuY3Rpb24oKSB7CivC
oCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgYnVmZmVyLmpzIC8vLy8v
Ly8vCisndXNlIHN0cmljdCc7CisKK3ZhciBTeXMgICAgICAgICAgICAgICAgICAgICA9IHJlcXVp
cmUoIi4vc3lzIik7Cit2YXIgQnl0ZXMgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2J5
dGVzIik7Cit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7
Cit2YXIgJCRTdHJpbmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3N0cmluZyIpOwordmFy
IFBlcnZhc2l2ZXMgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9wZXJ2YXNpdmVzIik7Cit2YXIg
Q2FtbF9zdHJpbmcgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7Cit2YXIg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRp
b25zIik7CisKK2Z1bmN0aW9uIGNyZWF0ZShuKSB7CisgIHZhciBuJDEgPSBuIDwgMSA/IDEgOiBu
OworICB2YXIgbiQyID0gbiQxID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoID8gU3lzLm1heF9zdHJp
bmdfbGVuZ3RoIDogbiQxOworICB2YXIgcyA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmlu
ZyhuJDIpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGJ1ZmZlciAqL3Ms
CisgICAgICAgICAgLyogcG9zaXRpb24gKi8wLAorICAgICAgICAgIC8qIGxlbmd0aCAqL24kMiwK
KyAgICAgICAgICAvKiBpbml0aWFsX2J1ZmZlciAqL3MKKyAgICAgICAgXTsKK30KKworZnVuY3Rp
b24gY29udGVudHMoYikgeworICByZXR1cm4gQnl0ZXMuc3ViX3N0cmluZyhiWy8qIGJ1ZmZlciAq
LzBdLCAwLCBiWy8qIHBvc2l0aW9uICovMV0pOworfQorCitmdW5jdGlvbiB0b19ieXRlcyhiKSB7
CisgIHJldHVybiBCeXRlcy5zdWIoYlsvKiBidWZmZXIgKi8wXSwgMCwgYlsvKiBwb3NpdGlvbiAq
LzFdKTsKK30KKworZnVuY3Rpb24gc3ViKGIsIG9mcywgbGVuKSB7CisgIGlmIChvZnMgPCAwIHx8
IGxlbiA8IDAgfHwgb2ZzID4gKGJbLyogcG9zaXRpb24gKi8xXSAtIGxlbiB8IDApKSB7CisgICAg
dGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCisgICAgICAgICAgIkJ1ZmZlci5zdWIiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIEJ5dGVzLnN1Yl9zdHJpbmcoYlsvKiBidWZmZXIgKi8wXSwgb2ZzLCBsZW4pOwor
ICB9Cit9CisKK2Z1bmN0aW9uIGJsaXQoc3JjLCBzcmNvZmYsIGRzdCwgZHN0b2ZmLCBsZW4pIHsK
KyAgaWYgKGxlbiA8IDAgfHwgc3Jjb2ZmIDwgMCB8fCBzcmNvZmYgPiAoc3JjWy8qIHBvc2l0aW9u
ICovMV0gLSBsZW4gfCAwKSB8fCBkc3RvZmYgPCAwIHx8IGRzdG9mZiA+IChkc3QubGVuZ3RoIC0g
bGVuIHwgMCkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQnVmZmVyLmJsaXQiCisgICAgICAgIF07
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIEJ5dGVzLmJsaXQoc3JjWy8qIGJ1ZmZlciAqLzBd
LCBzcmNvZmYsIGRzdCwgZHN0b2ZmLCBsZW4pOworICB9Cit9CisKK2Z1bmN0aW9uIG50aChiLCBv
ZnMpIHsKKyAgaWYgKG9mcyA8IDAgfHwgb2ZzID49IGJbLyogcG9zaXRpb24gKi8xXSkgeworICAg
IHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3Vt
ZW50LAorICAgICAgICAgICJCdWZmZXIubnRoIgorICAgICAgICBdOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBiWy8qIGJ1ZmZlciAqLzBdW29mc107CisgIH0KK30KKworZnVuY3Rpb24gbGVu
Z3RoKGIpIHsKKyAgcmV0dXJuIGJbLyogcG9zaXRpb24gKi8xXTsKK30KKworZnVuY3Rpb24gY2xl
YXIoYikgeworICBiWy8qIHBvc2l0aW9uICovMV0gPSAwOworICByZXR1cm4gLyogKCkgKi8wOwor
fQorCitmdW5jdGlvbiByZXNldChiKSB7CisgIGJbLyogcG9zaXRpb24gKi8xXSA9IDA7CisgIGJb
LyogYnVmZmVyICovMF0gPSBiWy8qIGluaXRpYWxfYnVmZmVyICovM107CisgIGJbLyogbGVuZ3Ro
ICovMl0gPSBiWy8qIGJ1ZmZlciAqLzBdLmxlbmd0aDsKKyAgcmV0dXJuIC8qICgpICovMDsKK30K
KworZnVuY3Rpb24gcmVzaXplKGIsIG1vcmUpIHsKKyAgdmFyIGxlbiA9IGJbLyogbGVuZ3RoICov
Ml07CisgIHZhciBuZXdfbGVuID0gbGVuOworICB3aGlsZSgoYlsvKiBwb3NpdGlvbiAqLzFdICsg
bW9yZSB8IDApID4gbmV3X2xlbikgeworICAgIG5ld19sZW4gPSAobmV3X2xlbiA8PCAxKTsKKyAg
fTsKKyAgaWYgKG5ld19sZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGgpIHsKKyAgICBpZiAoKGJb
LyogcG9zaXRpb24gKi8xXSArIG1vcmUgfCAwKSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGgpIHsK
KyAgICAgIG5ld19sZW4gPSBTeXMubWF4X3N0cmluZ19sZW5ndGg7CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFp
bHVyZSwKKyAgICAgICAgICAgICJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXIiCisgICAg
ICAgICAgXTsKKyAgICB9CisgIH0KKyAgdmFyIG5ld19idWZmZXIgPSBDYW1sX3N0cmluZy5jYW1s
X2NyZWF0ZV9zdHJpbmcobmV3X2xlbik7CisgIEJ5dGVzLmJsaXQoYlsvKiBidWZmZXIgKi8wXSwg
MCwgbmV3X2J1ZmZlciwgMCwgYlsvKiBwb3NpdGlvbiAqLzFdKTsKKyAgYlsvKiBidWZmZXIgKi8w
XSA9IG5ld19idWZmZXI7CisgIGJbLyogbGVuZ3RoICovMl0gPSBuZXdfbGVuOworICByZXR1cm4g
LyogKCkgKi8wOworfQorCitmdW5jdGlvbiBhZGRfY2hhcihiLCBjKSB7CisgIHZhciBwb3MgPSBi
Wy8qIHBvc2l0aW9uICovMV07CisgIGlmIChwb3MgPj0gYlsvKiBsZW5ndGggKi8yXSkgeworICAg
IHJlc2l6ZShiLCAxKTsKKyAgfQorICBiWy8qIGJ1ZmZlciAqLzBdW3Bvc10gPSBjOworICBiWy8q
IHBvc2l0aW9uICovMV0gPSBwb3MgKyAxIHwgMDsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKwor
ZnVuY3Rpb24gYWRkX3N1YnN0cmluZyhiLCBzLCBvZmZzZXQsIGxlbikgeworICBpZiAob2Zmc2V0
IDwgMCB8fCBsZW4gPCAwIHx8IChvZmZzZXQgKyBsZW4gfCAwKSA+IHMubGVuZ3RoKSB7CisgICAg
dGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCisgICAgICAgICAgIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlcyIKKyAgICAg
ICAgXTsKKyAgfQorICB2YXIgbmV3X3Bvc2l0aW9uID0gYlsvKiBwb3NpdGlvbiAqLzFdICsgbGVu
IHwgMDsKKyAgaWYgKG5ld19wb3NpdGlvbiA+IGJbLyogbGVuZ3RoICovMl0pIHsKKyAgICByZXNp
emUoYiwgbGVuKTsKKyAgfQorICBCeXRlcy5ibGl0X3N0cmluZyhzLCBvZmZzZXQsIGJbLyogYnVm
ZmVyICovMF0sIGJbLyogcG9zaXRpb24gKi8xXSwgbGVuKTsKKyAgYlsvKiBwb3NpdGlvbiAqLzFd
ID0gbmV3X3Bvc2l0aW9uOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBhZGRf
c3ViYnl0ZXMoYiwgcywgb2Zmc2V0LCBsZW4pIHsKKyAgcmV0dXJuIGFkZF9zdWJzdHJpbmcoYiwg
Q2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHMpLCBvZmZzZXQsIGxlbik7Cit9CisKK2Z1bmN0
aW9uIGFkZF9zdHJpbmcoYiwgcykgeworICB2YXIgbGVuID0gcy5sZW5ndGg7CisgIHZhciBuZXdf
cG9zaXRpb24gPSBiWy8qIHBvc2l0aW9uICovMV0gKyBsZW4gfCAwOworICBpZiAobmV3X3Bvc2l0
aW9uID4gYlsvKiBsZW5ndGggKi8yXSkgeworICAgIHJlc2l6ZShiLCBsZW4pOworICB9CisgIEJ5
dGVzLmJsaXRfc3RyaW5nKHMsIDAsIGJbLyogYnVmZmVyICovMF0sIGJbLyogcG9zaXRpb24gKi8x
XSwgbGVuKTsKKyAgYlsvKiBwb3NpdGlvbiAqLzFdID0gbmV3X3Bvc2l0aW9uOworICByZXR1cm4g
LyogKCkgKi8wOworfQorCitmdW5jdGlvbiBhZGRfYnl0ZXMoYiwgcykgeworICByZXR1cm4gYWRk
X3N0cmluZyhiLCBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocykpOworfQorCitmdW5jdGlv
biBhZGRfYnVmZmVyKGIsIGJzKSB7CisgIHJldHVybiBhZGRfc3ViYnl0ZXMoYiwgYnNbLyogYnVm
ZmVyICovMF0sIDAsIGJzWy8qIHBvc2l0aW9uICovMV0pOworfQorCitmdW5jdGlvbiBhZGRfY2hh
bm5lbChiLCBpYywgbGVuKSB7CisgIGlmIChsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5n
X2xlbmd0aCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJCdWZmZXIuYWRkX2NoYW5uZWwiCisgICAg
ICAgIF07CisgIH0KKyAgaWYgKChiWy8qIHBvc2l0aW9uICovMV0gKyBsZW4gfCAwKSA+IGJbLyog
bGVuZ3RoICovMl0pIHsKKyAgICByZXNpemUoYiwgbGVuKTsKKyAgfQorICBQZXJ2YXNpdmVzLnJl
YWxseV9pbnB1dChpYywgYlsvKiBidWZmZXIgKi8wXSwgYlsvKiBwb3NpdGlvbiAqLzFdLCBsZW4p
OworICBiWy8qIHBvc2l0aW9uICovMV0gPSBiWy8qIHBvc2l0aW9uICovMV0gKyBsZW4gfCAwOwor
ICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBvdXRwdXRfYnVmZmVyKG9jLCBiKSB7
CisgIHJldHVybiBQZXJ2YXNpdmVzLm91dHB1dChvYywgYlsvKiBidWZmZXIgKi8wXSwgMCwgYlsv
KiBwb3NpdGlvbiAqLzFdKTsKK30KKworZnVuY3Rpb24gY2xvc2luZyhwYXJhbSkgeworICBpZiAo
cGFyYW0gIT09IDQwKSB7CisgICAgaWYgKHBhcmFtICE9PSAxMjMpIHsKKyAgICAgIHRocm93IFsK
KyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAiYnVmZmVyLm1sIiwKKyAgICAgICAgICAgICAgMTE1
LAorICAgICAgICAgICAgICA5CisgICAgICAgICAgICBdCisgICAgICAgICAgXTsKKyAgICB9Cisg
ICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogIn0iICovMTI1OworICAgIH0KKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogIikiICovNDE7CisgIH0KK30KKworZnVuY3Rpb24gYWR2YW5jZV90
b19jbG9zaW5nKG9wZW5pbmcsIGNsb3NpbmcsIGssIHMsIHN0YXJ0KSB7CisgIHZhciBfayA9IGs7
CisgIHZhciBfaSA9IHN0YXJ0OworICB2YXIgbGltID0gcy5sZW5ndGg7CisgIHdoaWxlKHRydWUp
IHsKKyAgICB2YXIgaSA9IF9pOworICAgIHZhciBrJDEgPSBfazsKKyAgICBpZiAoaSA+PSBsaW0p
IHsKKyAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAgICB9
CisgICAgZWxzZSBpZiAoQ2FtbF9zdHJpbmcuZ2V0KHMsIGkpID09PSBvcGVuaW5nKSB7CisgICAg
ICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgIF9rID0gayQxICsgMSB8IDA7CisgICAgICBjb250aW51
ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSBpZiAoQ2FtbF9zdHJpbmcuZ2V0KHMsIGkpID09
PSBjbG9zaW5nKSB7CisgICAgICBpZiAoayQxKSB7CisgICAgICAgIF9pID0gaSArIDEgfCAwOwor
ICAgICAgICBfayA9IGskMSAtIDEgfCAwOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBpOworICAgICAgfQorICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgY29udGludWUgOworICAg
ICAgCisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBhZHZhbmNlX3RvX25vbl9hbHBoYShzLCBz
dGFydCkgeworICB2YXIgX2kgPSBzdGFydDsKKyAgdmFyIGxpbSA9IHMubGVuZ3RoOworICB3aGls
ZSh0cnVlKSB7CisgICAgdmFyIGkgPSBfaTsKKyAgICBpZiAoaSA+PSBsaW0pIHsKKyAgICAgIHJl
dHVybiBsaW07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJp
bmcuZ2V0KHMsIGkpOworICAgICAgdmFyIGV4aXQgPSAwOworICAgICAgaWYgKG1hdGNoID49IDkx
KSB7CisgICAgICAgIGlmIChtYXRjaCA+PSA5NykgeworICAgICAgICAgIGlmIChtYXRjaCA+PSAx
MjMpIHsKKyAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlIGlmIChtYXRjaCAhPT0gOTUpIHsKKyAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAg
fQorICAgICAgZWxzZSBpZiAobWF0Y2ggPj0gNTgpIHsKKyAgICAgICAgaWYgKG1hdGNoID49IDY1
KSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKG1hdGNo
ID49IDQ4KSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHJldHVybiBpOworICAgICAgfQorICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAg
X2kgPSBpICsgMSB8IDA7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9Cisg
ICAgICAKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZpbmRfaWRlbnQocywgc3RhcnQsIGxp
bSkgeworICBpZiAoc3RhcnQgPj0gbGltKSB7CisgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMubm90X2ZvdW5kOworICB9CisgIGVsc2UgeworICAgIHZhciBjID0gQ2FtbF9zdHJpbmcu
Z2V0KHMsIHN0YXJ0KTsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKGMgIT09IDQwKSB7Cisg
ICAgICBpZiAoYyAhPT0gMTIzKSB7CisgICAgICAgIHZhciBzdG9wID0gYWR2YW5jZV90b19ub25f
YWxwaGEocywgc3RhcnQgKyAxIHwgMCk7CisgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICAgICAkJFN0cmluZy5zdWIocywgc3RhcnQsIHN0b3AgLSBzdGFydCB8IDApLAor
ICAgICAgICAgICAgICAgIHN0b3AKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICBleGl0ID0gMTsKKyAgICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIHZhciBuZXdf
c3RhcnQgPSBzdGFydCArIDEgfCAwOworICAgICAgdmFyIHN0b3AkMSA9IGFkdmFuY2VfdG9fY2xv
c2luZyhjLCBjbG9zaW5nKGMpLCAwLCBzLCBuZXdfc3RhcnQpOworICAgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgICAkJFN0cmluZy5zdWIocywgbmV3X3N0YXJ0LCAoc3RvcCQx
IC0gc3RhcnQgfCAwKSAtIDEgfCAwKSwKKyAgICAgICAgICAgICAgc3RvcCQxICsgMSB8IDAKKyAg
ICAgICAgICAgIF07CisgICAgfQorICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIGFkZF9zdWJzdGl0
dXRlKGIsIGYsIHMpIHsKKyAgdmFyIGxpbSA9IHMubGVuZ3RoOworICB2YXIgX3ByZXZpb3VzID0g
LyogIiAiICovMzI7CisgIHZhciBfaSA9IDA7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgaSA9
IF9pOworICAgIHZhciBwcmV2aW91cyA9IF9wcmV2aW91czsKKyAgICBpZiAoaSA8IGxpbSkgewor
ICAgICAgdmFyIGN1cnJlbnQgPSBDYW1sX3N0cmluZy5nZXQocywgaSk7CisgICAgICBpZiAoY3Vy
cmVudCAhPT0gMzYpIHsKKyAgICAgICAgaWYgKHByZXZpb3VzID09PSAvKiAiXFwiICovOTIpIHsK
KyAgICAgICAgICBhZGRfY2hhcihiLCAvKiAiXFwiICovOTIpOworICAgICAgICAgIGFkZF9jaGFy
KGIsIGN1cnJlbnQpOworICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgIF9wcmV2
aW91cyA9IC8qICIgIiAqLzMyOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmIChjdXJyZW50ICE9PSA5MikgeworICAgICAgICAgIGFk
ZF9jaGFyKGIsIGN1cnJlbnQpOworICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAg
IF9wcmV2aW91cyA9IGN1cnJlbnQ7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAor
ICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAg
ICAgICAgIF9wcmV2aW91cyA9IGN1cnJlbnQ7CisgICAgICAgICAgY29udGludWUgOworICAgICAg
ICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChwcmV2aW91cyA9PT0gLyog
IlxcIiAqLzkyKSB7CisgICAgICAgIGFkZF9jaGFyKGIsIGN1cnJlbnQpOworICAgICAgICBfaSA9
IGkgKyAxIHwgMDsKKyAgICAgICAgX3ByZXZpb3VzID0gLyogIiAiICovMzI7CisgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIGog
PSBpICsgMSB8IDA7CisgICAgICAgIHZhciBtYXRjaCA9IGZpbmRfaWRlbnQocywgaiwgbGltKTsK
KyAgICAgICAgYWRkX3N0cmluZyhiLCBDdXJyeS5fMShmLCBtYXRjaFswXSkpOworICAgICAgICBf
aSA9IG1hdGNoWzFdOworICAgICAgICBfcHJldmlvdXMgPSAvKiAiICIgKi8zMjsKKyAgICAgICAg
Y29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAocHJldmlv
dXMgPT09IC8qICJcXCIgKi85MikgeworICAgICAgcmV0dXJuIGFkZF9jaGFyKGIsIHByZXZpb3Vz
KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH07Cit9CisK
K2V4cG9ydHMuY3JlYXRlICAgICAgICAgPSBjcmVhdGU7CitleHBvcnRzLmNvbnRlbnRzICAgICAg
ID0gY29udGVudHM7CitleHBvcnRzLnRvX2J5dGVzICAgICAgID0gdG9fYnl0ZXM7CitleHBvcnRz
LnN1YiAgICAgICAgICAgID0gc3ViOworZXhwb3J0cy5ibGl0ICAgICAgICAgICA9IGJsaXQ7Citl
eHBvcnRzLm50aCAgICAgICAgICAgID0gbnRoOworZXhwb3J0cy5sZW5ndGggICAgICAgICA9IGxl
bmd0aDsKK2V4cG9ydHMuY2xlYXIgICAgICAgICAgPSBjbGVhcjsKK2V4cG9ydHMucmVzZXQgICAg
ICAgICAgPSByZXNldDsKK2V4cG9ydHMuYWRkX2NoYXIgICAgICAgPSBhZGRfY2hhcjsKK2V4cG9y
dHMuYWRkX3N0cmluZyAgICAgPSBhZGRfc3RyaW5nOworZXhwb3J0cy5hZGRfYnl0ZXMgICAgICA9
IGFkZF9ieXRlczsKK2V4cG9ydHMuYWRkX3N1YnN0cmluZyAgPSBhZGRfc3Vic3RyaW5nOworZXhw
b3J0cy5hZGRfc3ViYnl0ZXMgICA9IGFkZF9zdWJieXRlczsKK2V4cG9ydHMuYWRkX3N1YnN0aXR1
dGUgPSBhZGRfc3Vic3RpdHV0ZTsKK2V4cG9ydHMuYWRkX2J1ZmZlciAgICAgPSBhZGRfYnVmZmVy
OworZXhwb3J0cy5hZGRfY2hhbm5lbCAgICA9IGFkZF9jaGFubmVsOworZXhwb3J0cy5vdXRwdXRf
YnVmZmVyICA9IG91dHB1dF9idWZmZXI7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8g
ZW5kIG9mIGJ1ZmZlci5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9Owor
CisKKyAgX3JlZ2lzdHJ5WydieXRlcyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0
cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgYnl0ZXMuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0
JzsKKwordmFyIENoYXIgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jaGFyIik7Cit2
YXIgTGlzdCAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2xpc3QiKTsKK3ZhciBDdXJy
eSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBDYW1sX29iaiAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9vYmoiKTsKK3ZhciBDYW1sX2ludDMyICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9pbnQzMiIpOwordmFyIFBlcnZhc2l2ZXMgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9wZXJ2YXNpdmVzIik7Cit2YXIgQ2FtbF9zdHJpbmcgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0
aW9uIG1ha2UobiwgYykgeworICB2YXIgcyA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmlu
ZyhuKTsKKyAgQ2FtbF9zdHJpbmcuY2FtbF9maWxsX3N0cmluZyhzLCAwLCBuLCBjKTsKKyAgcmV0
dXJuIHM7Cit9CisKK2Z1bmN0aW9uIGluaXQobiwgZikgeworICB2YXIgcyA9IENhbWxfc3RyaW5n
LmNhbWxfY3JlYXRlX3N0cmluZyhuKTsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBuIC0g
MSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgc1tpXSA9IEN1cnJ5Ll8xKGYsIGkpOwor
ICB9CisgIHJldHVybiBzOworfQorCit2YXIgZW1wdHkgPSBbXTsKKworZnVuY3Rpb24gY29weShz
KSB7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIHIgPSBDYW1sX3N0cmluZy5jYW1sX2Ny
ZWF0ZV9zdHJpbmcobGVuKTsKKyAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X2J5dGVzKHMsIDAsIHIs
IDAsIGxlbik7CisgIHJldHVybiByOworfQorCitmdW5jdGlvbiB0b19zdHJpbmcoYikgeworICBy
ZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKGNvcHkoYikpOworfQorCitmdW5jdGlv
biBvZl9zdHJpbmcocykgeworICByZXR1cm4gY29weShDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJp
bmcocykpOworfQorCitmdW5jdGlvbiBzdWIocywgb2ZzLCBsZW4pIHsKKyAgaWYgKG9mcyA8IDAg
fHwgbGVuIDwgMCB8fCBvZnMgPiAocy5sZW5ndGggLSBsZW4gfCAwKSkgeworICAgIHRocm93IFsK
KyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAg
ICAgICAgICJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViIgorICAgICAgICBdOworICB9CisgIGVsc2Ug
eworICAgIHZhciByID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKGxlbik7CisgICAg
Q2FtbF9zdHJpbmcuY2FtbF9ibGl0X2J5dGVzKHMsIG9mcywgciwgMCwgbGVuKTsKKyAgICByZXR1
cm4gcjsKKyAgfQorfQorCitmdW5jdGlvbiBzdWJfc3RyaW5nKGIsIG9mcywgbGVuKSB7CisgIHJl
dHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoc3ViKGIsIG9mcywgbGVuKSk7Cit9CisK
K2Z1bmN0aW9uIGV4dGVuZChzLCBsZWZ0LCByaWdodCkgeworICB2YXIgbGVuID0gKHMubGVuZ3Ro
ICsgbGVmdCB8IDApICsgcmlnaHQgfCAwOworICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxfY3Jl
YXRlX3N0cmluZyhsZW4pOworICB2YXIgbWF0Y2ggPSBsZWZ0IDwgMCA/IC8qIHR1cGxlICovWwor
ICAgICAgLWxlZnQgfCAwLAorICAgICAgMAorICAgIF0gOiAvKiB0dXBsZSAqL1sKKyAgICAgIDAs
CisgICAgICBsZWZ0CisgICAgXTsKKyAgdmFyIGRzdG9mZiA9IG1hdGNoWzFdOworICB2YXIgc3Jj
b2ZmID0gbWF0Y2hbMF07CisgIHZhciBjcHlsZW4gPSBQZXJ2YXNpdmVzLm1pbihzLmxlbmd0aCAt
IHNyY29mZiB8IDAsIGxlbiAtIGRzdG9mZiB8IDApOworICBpZiAoY3B5bGVuID4gMCkgeworICAg
IENhbWxfc3RyaW5nLmNhbWxfYmxpdF9ieXRlcyhzLCBzcmNvZmYsIHIsIGRzdG9mZiwgY3B5bGVu
KTsKKyAgfQorICByZXR1cm4gcjsKK30KKworZnVuY3Rpb24gZmlsbChzLCBvZnMsIGxlbiwgYykg
eworICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDAp
KSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFs
aWRfYXJndW1lbnQsCisgICAgICAgICAgIlN0cmluZy5maWxsIC8gQnl0ZXMuZmlsbCIKKyAgICAg
ICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2FtbF9zdHJpbmcuY2FtbF9maWxsX3N0
cmluZyhzLCBvZnMsIGxlbiwgYyk7CisgIH0KK30KKworZnVuY3Rpb24gYmxpdChzMSwgb2ZzMSwg
czIsIG9mczIsIGxlbikgeworICBpZiAobGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gKHMx
Lmxlbmd0aCAtIGxlbiB8IDApIHx8IG9mczIgPCAwIHx8IG9mczIgPiAoczIubGVuZ3RoIC0gbGVu
IHwgMCkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMu
aW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQnl0ZXMuYmxpdCIKKyAgICAgICAgXTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X2J5dGVzKHMxLCBv
ZnMxLCBzMiwgb2ZzMiwgbGVuKTsKKyAgfQorfQorCitmdW5jdGlvbiBibGl0X3N0cmluZyhzMSwg
b2ZzMSwgczIsIG9mczIsIGxlbikgeworICBpZiAobGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMx
ID4gKHMxLmxlbmd0aCAtIGxlbiB8IDApIHx8IG9mczIgPCAwIHx8IG9mczIgPiAoczIubGVuZ3Ro
IC0gbGVuIHwgMCkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiU3RyaW5nLmJsaXQgLyBCeXRlcy5i
bGl0X3N0cmluZyIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2FtbF9z
dHJpbmcuY2FtbF9ibGl0X3N0cmluZyhzMSwgb2ZzMSwgczIsIG9mczIsIGxlbik7CisgIH0KK30K
KworZnVuY3Rpb24gaXRlcihmLCBhKSB7CisgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gYS5s
ZW5ndGggLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICBDdXJyeS5fMShmLCBhW2ld
KTsKKyAgfQorICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBpdGVyaShmLCBhKSB7
CisgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gYS5sZW5ndGggLSAxIHwgMDsgaSA8PSBpX2Zp
bmlzaDsgKytpKXsKKyAgICBDdXJyeS5fMihmLCBpLCBhW2ldKTsKKyAgfQorICByZXR1cm4gLyog
KCkgKi8wOworfQorCitmdW5jdGlvbiBjb25jYXQoc2VwLCBsKSB7CisgIGlmIChsKSB7CisgICAg
dmFyIGhkID0gbFswXTsKKyAgICB2YXIgbnVtID0gWzBdOworICAgIHZhciBsZW4gPSBbMF07Cisg
ICAgTGlzdC5pdGVyKGZ1bmN0aW9uIChzKSB7CisgICAgICAgICAgbnVtWzBdID0gbnVtWzBdICsg
MSB8IDA7CisgICAgICAgICAgbGVuWzBdID0gbGVuWzBdICsgcy5sZW5ndGggfCAwOworICAgICAg
ICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgIH0sIGwpOworICAgIHZhciByID0gQ2FtbF9z
dHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKGxlblswXSArIENhbWxfaW50MzIuaW11bChzZXAubGVu
Z3RoLCBudW1bMF0gLSAxIHwgMCkgfCAwKTsKKyAgICBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0
ZXMoaGQsIDAsIHIsIDAsIGhkLmxlbmd0aCk7CisgICAgdmFyIHBvcyA9IFtoZC5sZW5ndGhdOwor
ICAgIExpc3QuaXRlcihmdW5jdGlvbiAocykgeworICAgICAgICAgIENhbWxfc3RyaW5nLmNhbWxf
YmxpdF9ieXRlcyhzZXAsIDAsIHIsIHBvc1swXSwgc2VwLmxlbmd0aCk7CisgICAgICAgICAgcG9z
WzBdID0gcG9zWzBdICsgc2VwLmxlbmd0aCB8IDA7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2Ft
bF9ibGl0X2J5dGVzKHMsIDAsIHIsIHBvc1swXSwgcy5sZW5ndGgpOworICAgICAgICAgIHBvc1sw
XSA9IHBvc1swXSArIHMubGVuZ3RoIHwgMDsKKyAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOwor
ICAgICAgICB9LCBsWzFdKTsKKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gZW1wdHk7CisgIH0KK30KKworZnVuY3Rpb24gY2F0KGEsIGIpIHsKKyAgcmV0dXJuIGEuY29u
Y2F0KGIpOworfQorCitmdW5jdGlvbiBpc19zcGFjZShwYXJhbSkgeworICB2YXIgc3dpdGNoZXIg
PSBwYXJhbSAtIDkgfCAwOworICBpZiAoc3dpdGNoZXIgPiA0IHx8IHN3aXRjaGVyIDwgMCkgewor
ICAgIGlmIChzd2l0Y2hlciAhPT0gMjMpIHsKKyAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgIH0KKyAgfQor
ICBlbHNlIGlmIChzd2l0Y2hlciAhPT0gMikgeworICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK2Z1bmN0aW9u
IHRyaW0ocykgeworICB2YXIgbGVuID0gcy5sZW5ndGg7CisgIHZhciBpID0gMDsKKyAgd2hpbGUo
aSA8IGxlbiAmJiBpc19zcGFjZShzW2ldKSkgeworICAgIGkgPSBpICsgMSB8IDA7CisgIH07Cisg
IHZhciBqID0gbGVuIC0gMSB8IDA7CisgIHdoaWxlKGogPj0gaSAmJiBpc19zcGFjZShzW2pdKSkg
eworICAgIGogPSBqIC0gMSB8IDA7CisgIH07CisgIGlmIChqID49IGkpIHsKKyAgICByZXR1cm4g
c3ViKHMsIGksIChqIC0gaSB8IDApICsgMSB8IDApOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biBlbXB0eTsKKyAgfQorfQorCitmdW5jdGlvbiBlc2NhcGVkKHMpIHsKKyAgdmFyIG4gPSAwOwor
ICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IHMubGVuZ3RoIC0gMSB8IDA7IGkgPD0gaV9maW5p
c2g7ICsraSl7CisgICAgdmFyIG1hdGNoID0gc1tpXTsKKyAgICB2YXIgJGpzOworICAgIGlmICht
YXRjaCA+PSAzMikgeworICAgICAgdmFyIHN3aXRjaGVyID0gbWF0Y2ggLSAzNCB8IDA7CisgICAg
ICAkanMgPSBzd2l0Y2hlciA+IDU4IHx8IHN3aXRjaGVyIDwgMCA/ICgKKyAgICAgICAgICBzd2l0
Y2hlciA+PSA5MyA/IDQgOiAxCisgICAgICAgICkgOiAoCisgICAgICAgICAgc3dpdGNoZXIgPiA1
NyB8fCBzd2l0Y2hlciA8IDEgPyAyIDogMQorICAgICAgICApOworICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgICRqcyA9IG1hdGNoID49IDExID8gKAorICAgICAgICAgIG1hdGNoICE9PSAxMyA/IDQg
OiAyCisgICAgICAgICkgOiAoCisgICAgICAgICAgbWF0Y2ggPj0gOCA/IDIgOiA0CisgICAgICAg
ICk7CisgICAgfQorICAgIG4gPSBuICsgJGpzIHwgMDsKKyAgfQorICBpZiAobiA9PT0gcy5sZW5n
dGgpIHsKKyAgICByZXR1cm4gY29weShzKTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgcyRwcmlt
ZSA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhuKTsKKyAgICBuID0gMDsKKyAgICBm
b3IodmFyIGkkMSA9IDAgLGlfZmluaXNoJDEgPSBzLmxlbmd0aCAtIDEgfCAwOyBpJDEgPD0gaV9m
aW5pc2gkMTsgKytpJDEpeworICAgICAgdmFyIGMgPSBzW2kkMV07CisgICAgICB2YXIgZXhpdCA9
IDA7CisgICAgICBpZiAoYyA+PSAzNSkgeworICAgICAgICBpZiAoYyAhPT0gOTIpIHsKKyAgICAg
ICAgICBpZiAoYyA+PSAxMjcpIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHMkcHJpbWVbbl0gPSBjOworICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBleGl0ID0gMjsKKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAoYyA+PSAzMikgeworICAgICAgICBpZiAoYyA+
PSAzNCkgeworICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgIHMkcHJpbWVbbl0gPSBjOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNl
IGlmIChjID49IDE0KSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAg
ICBzJHByaW1lW25dID0gLyogIlxcIiAqLzkyOworICAgICAgICAgICAgICBuID0gbiArIDEgfCAw
OworICAgICAgICAgICAgICBzJHByaW1lW25dID0gLyogImIiICovOTg7CisgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgICBzJHByaW1lW25dID0g
LyogIlxcIiAqLzkyOworICAgICAgICAgICAgICBuID0gbiArIDEgfCAwOworICAgICAgICAgICAg
ICBzJHByaW1lW25dID0gLyogInQiICovMTE2OworICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiXFwiICovOTI7
CisgICAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7CisgICAgICAgICAgICAgIHMkcHJpbWVbbl0g
PSAvKiAibiIgKi8xMTA7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgMCA6
IAorICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIGNhc2UgNSA6IAorICAgICAg
ICAgIGNhc2UgNiA6IAorICAgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIGNhc2UgMTEgOiAK
KyAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgIHMkcHJpbWVb
bl0gPSAvKiAiXFwiICovOTI7CisgICAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7CisgICAgICAg
ICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiciIgKi8xMTQ7CisgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBzd2l0Y2ggKGV4aXQpIHsKKyAg
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICBzJHByaW1lW25dID0gLyogIlxcIiAqLzkyOwor
ICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgICAgIHMkcHJpbWVbbl0gPSA0OCAr
IChjIC8gMTAwIHwgMCkgfCAwOworICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAg
ICAgIHMkcHJpbWVbbl0gPSA0OCArIChjIC8gMTAgfCAwKSAlIDEwIHwgMDsKKyAgICAgICAgICAg
IG4gPSBuICsgMSB8IDA7CisgICAgICAgICAgICBzJHByaW1lW25dID0gNDggKyBjICUgMTAgfCAw
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgcyRw
cmltZVtuXSA9IC8qICJcXCIgKi85MjsKKyAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7CisgICAg
ICAgICAgICBzJHByaW1lW25dID0gYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAg
ICAgIH0KKyAgICAgIG4gPSBuICsgMSB8IDA7CisgICAgfQorICAgIHJldHVybiBzJHByaW1lOwor
ICB9Cit9CisKK2Z1bmN0aW9uIG1hcChmLCBzKSB7CisgIHZhciBsID0gcy5sZW5ndGg7CisgIGlm
IChsKSB7CisgICAgdmFyIHIgPSBDYW1sX3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcobCk7Cisg
ICAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsr
aSl7CisgICAgICByW2ldID0gQ3VycnkuXzEoZiwgc1tpXSk7CisgICAgfQorICAgIHJldHVybiBy
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiBzOworICB9Cit9CisKK2Z1bmN0aW9uIG1hcGko
ZiwgcykgeworICB2YXIgbCA9IHMubGVuZ3RoOworICBpZiAobCkgeworICAgIHZhciByID0gQ2Ft
bF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKGwpOworICAgIGZvcih2YXIgaSA9IDAgLGlfZmlu
aXNoID0gbCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgICAgcltpXSA9IEN1cnJ5
Ll8yKGYsIGksIHNbaV0pOworICAgIH0KKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiB1cHBlcmNhc2UocykgeworICByZXR1cm4g
bWFwKENoYXIudXBwZXJjYXNlLCBzKTsKK30KKworZnVuY3Rpb24gbG93ZXJjYXNlKHMpIHsKKyAg
cmV0dXJuIG1hcChDaGFyLmxvd2VyY2FzZSwgcyk7Cit9CisKK2Z1bmN0aW9uIGFwcGx5MShmLCBz
KSB7CisgIGlmIChzLmxlbmd0aCkgeworICAgIHZhciByID0gY29weShzKTsKKyAgICByWzBdID0g
Q3VycnkuXzEoZiwgc1swXSk7CisgICAgcmV0dXJuIHI7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0
dXJuIHM7CisgIH0KK30KKworZnVuY3Rpb24gY2FwaXRhbGl6ZShzKSB7CisgIHJldHVybiBhcHBs
eTEoQ2hhci51cHBlcmNhc2UsIHMpOworfQorCitmdW5jdGlvbiB1bmNhcGl0YWxpemUocykgewor
ICByZXR1cm4gYXBwbHkxKENoYXIubG93ZXJjYXNlLCBzKTsKK30KKworZnVuY3Rpb24gaW5kZXhf
cmVjKHMsIGxpbSwgX2ksIGMpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0gX2k7Cisg
ICAgaWYgKGkgPj0gbGltKSB7CisgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5u
b3RfZm91bmQ7CisgICAgfQorICAgIGVsc2UgaWYgKHNbaV0gPT09IGMpIHsKKyAgICAgIHJldHVy
biBpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgY29u
dGludWUgOworICAgICAgCisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBpbmRleChzLCBjKSB7
CisgIHJldHVybiBpbmRleF9yZWMocywgcy5sZW5ndGgsIDAsIGMpOworfQorCitmdW5jdGlvbiBp
bmRleF9mcm9tKHMsIGksIGMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsKKyAgaWYgKGkgPCAwIHx8
IGkgPiBsKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMu
aW5kZXhfZnJvbSIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gaW5kZXhf
cmVjKHMsIGwsIGksIGMpOworICB9Cit9CisKK2Z1bmN0aW9uIHJpbmRleF9yZWMocywgX2ksIGMp
IHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0gX2k7CisgICAgaWYgKGkgPCAwKSB7Cisg
ICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgfQorICAg
IGVsc2UgaWYgKHNbaV0gPT09IGMpIHsKKyAgICAgIHJldHVybiBpOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIF9pID0gaSAtIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAg
fQorICB9OworfQorCitmdW5jdGlvbiByaW5kZXgocywgYykgeworICByZXR1cm4gcmluZGV4X3Jl
YyhzLCBzLmxlbmd0aCAtIDEgfCAwLCBjKTsKK30KKworZnVuY3Rpb24gcmluZGV4X2Zyb20ocywg
aSwgYykgeworICBpZiAoaSA8IC0xIHx8IGkgPj0gcy5sZW5ndGgpIHsKKyAgICB0aHJvdyBbCisg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAg
ICAgICAiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb20iCisgICAgICAgIF07
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHJpbmRleF9yZWMocywgaSwgYyk7CisgIH0KK30K
KworZnVuY3Rpb24gY29udGFpbnNfZnJvbShzLCBpLCBjKSB7CisgIHZhciBsID0gcy5sZW5ndGg7
CisgIGlmIChpIDwgMCB8fCBpID4gbCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJTdHJpbmcuY29u
dGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb20iCisgICAgICAgIF07CisgIH0KKyAgZWxz
ZSB7CisgICAgdHJ5IHsKKyAgICAgIGluZGV4X3JlYyhzLCBsLCBpLCBjKTsKKyAgICAgIHJldHVy
biAvKiB0cnVlICovMTsKKyAgICB9CisgICAgY2F0Y2ggKGV4bil7CisgICAgICBpZiAoZXhuID09
PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgICAgcmV0dXJuIC8q
IGZhbHNlICovMDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBleG47Cisg
ICAgICB9CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRhaW5zKHMsIGMpIHsKKyAgcmV0
dXJuIGNvbnRhaW5zX2Zyb20ocywgMCwgYyk7Cit9CisKK2Z1bmN0aW9uIHJjb250YWluc19mcm9t
KHMsIGksIGMpIHsKKyAgaWYgKGkgPCAwIHx8IGkgPj0gcy5sZW5ndGgpIHsKKyAgICB0aHJvdyBb
CisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAg
ICAgICAgICAiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb20iCisg
ICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgdHJ5IHsKKyAgICAgIHJpbmRleF9yZWMocywg
aSwgYyk7CisgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgfQorICAgIGNhdGNoIChleG4p
eworICAgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7
CisgICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgdGhyb3cgZXhuOworICAgICAgfQorICAgIH0KKyAgfQorfQorCit2YXIgY29tcGFyZSA9
IENhbWxfb2JqLmNhbWxfY29tcGFyZTsKKwordmFyIHVuc2FmZV90b19zdHJpbmcgPSBDYW1sX3N0
cmluZy5ieXRlc190b19zdHJpbmc7CisKK3ZhciB1bnNhZmVfb2Zfc3RyaW5nID0gQ2FtbF9zdHJp
bmcuYnl0ZXNfb2Zfc3RyaW5nOworCitleHBvcnRzLm1ha2UgICAgICAgICAgICAgPSBtYWtlOwor
ZXhwb3J0cy5pbml0ICAgICAgICAgICAgID0gaW5pdDsKK2V4cG9ydHMuZW1wdHkgICAgICAgICAg
ICA9IGVtcHR5OworZXhwb3J0cy5jb3B5ICAgICAgICAgICAgID0gY29weTsKK2V4cG9ydHMub2Zf
c3RyaW5nICAgICAgICA9IG9mX3N0cmluZzsKK2V4cG9ydHMudG9fc3RyaW5nICAgICAgICA9IHRv
X3N0cmluZzsKK2V4cG9ydHMuc3ViICAgICAgICAgICAgICA9IHN1YjsKK2V4cG9ydHMuc3ViX3N0
cmluZyAgICAgICA9IHN1Yl9zdHJpbmc7CitleHBvcnRzLmV4dGVuZCAgICAgICAgICAgPSBleHRl
bmQ7CitleHBvcnRzLmZpbGwgICAgICAgICAgICAgPSBmaWxsOworZXhwb3J0cy5ibGl0ICAgICAg
ICAgICAgID0gYmxpdDsKK2V4cG9ydHMuYmxpdF9zdHJpbmcgICAgICA9IGJsaXRfc3RyaW5nOwor
ZXhwb3J0cy5jb25jYXQgICAgICAgICAgID0gY29uY2F0OworZXhwb3J0cy5jYXQgICAgICAgICAg
ICAgID0gY2F0OworZXhwb3J0cy5pdGVyICAgICAgICAgICAgID0gaXRlcjsKK2V4cG9ydHMuaXRl
cmkgICAgICAgICAgICA9IGl0ZXJpOworZXhwb3J0cy5tYXAgICAgICAgICAgICAgID0gbWFwOwor
ZXhwb3J0cy5tYXBpICAgICAgICAgICAgID0gbWFwaTsKK2V4cG9ydHMudHJpbSAgICAgICAgICAg
ICA9IHRyaW07CitleHBvcnRzLmVzY2FwZWQgICAgICAgICAgPSBlc2NhcGVkOworZXhwb3J0cy5p
bmRleCAgICAgICAgICAgID0gaW5kZXg7CitleHBvcnRzLnJpbmRleCAgICAgICAgICAgPSByaW5k
ZXg7CitleHBvcnRzLmluZGV4X2Zyb20gICAgICAgPSBpbmRleF9mcm9tOworZXhwb3J0cy5yaW5k
ZXhfZnJvbSAgICAgID0gcmluZGV4X2Zyb207CitleHBvcnRzLmNvbnRhaW5zICAgICAgICAgPSBj
b250YWluczsKK2V4cG9ydHMuY29udGFpbnNfZnJvbSAgICA9IGNvbnRhaW5zX2Zyb207CitleHBv
cnRzLnJjb250YWluc19mcm9tICAgPSByY29udGFpbnNfZnJvbTsKK2V4cG9ydHMudXBwZXJjYXNl
ICAgICAgICA9IHVwcGVyY2FzZTsKK2V4cG9ydHMubG93ZXJjYXNlICAgICAgICA9IGxvd2VyY2Fz
ZTsKK2V4cG9ydHMuY2FwaXRhbGl6ZSAgICAgICA9IGNhcGl0YWxpemU7CitleHBvcnRzLnVuY2Fw
aXRhbGl6ZSAgICAgPSB1bmNhcGl0YWxpemU7CitleHBvcnRzLmNvbXBhcmUgICAgICAgICAgPSBj
b21wYXJlOworZXhwb3J0cy51bnNhZmVfdG9fc3RyaW5nID0gdW5zYWZlX3RvX3N0cmluZzsKK2V4
cG9ydHMudW5zYWZlX29mX3N0cmluZyA9IHVuc2FmZV9vZl9zdHJpbmc7CisvKiBObyBzaWRlIGVm
ZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGJ5dGVzLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4g
ZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2NhbWxfYXJyYXknXSA9IGZ1bmN0aW9u
KCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxfYXJy
YXkuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKworCitmdW5jdGlvbiBjYW1sX2FycmF5X3N1
Yih4LCBvZmZzZXQsIGxlbikgeworICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KGxlbik7CisgIHZh
ciBqID0gMDsKKyAgdmFyIGkgPSBvZmZzZXQ7CisgIHdoaWxlKGogPCBsZW4pIHsKKyAgICByZXN1
bHRbal0gPSB4W2ldOworICAgIGogPSBqICsgMSB8IDA7CisgICAgaSA9IGkgKyAxIHwgMDsKKyAg
fTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gbGVuKF9hY2MsIF9sKSB7CisgIHdo
aWxlKHRydWUpIHsKKyAgICB2YXIgbCA9IF9sOworICAgIHZhciBhY2MgPSBfYWNjOworICAgIGlm
IChsKSB7CisgICAgICBfbCA9IGxbMV07CisgICAgICBfYWNjID0gbFswXS5sZW5ndGggKyBhY2Mg
fCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAg
cmV0dXJuIGFjYzsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZpbGwoYXJyLCBfaSwgX2wp
IHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsID0gX2w7CisgICAgdmFyIGkgPSBfaTsKKyAg
ICBpZiAobCkgeworICAgICAgdmFyIHggPSBsWzBdOworICAgICAgdmFyIGwkMSA9IHgubGVuZ3Ro
OworICAgICAgdmFyIGsgPSBpOworICAgICAgdmFyIGogPSAwOworICAgICAgd2hpbGUoaiA8IGwk
MSkgeworICAgICAgICBhcnJba10gPSB4W2pdOworICAgICAgICBrID0gayArIDEgfCAwOworICAg
ICAgICBqID0gaiArIDEgfCAwOworICAgICAgfTsKKyAgICAgIF9sID0gbFsxXTsKKyAgICAgIF9p
ID0gazsKKyAgICAgIGNvbnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBjYW1sX2FycmF5
X2NvbmNhdChsKSB7CisgIHZhciB2ID0gbGVuKDAsIGwpOworICB2YXIgcmVzdWx0ID0gbmV3IEFy
cmF5KHYpOworICBmaWxsKHJlc3VsdCwgMCwgbCk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1
bmN0aW9uIGNhbWxfbWFrZV92ZWN0KGxlbiwgaW5pdCkgeworICB2YXIgYiA9IG5ldyBBcnJheShs
ZW4pOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9IGlfZmlu
aXNoOyArK2kpeworICAgIGJbaV0gPSBpbml0OworICB9CisgIHJldHVybiBiOworfQorCitmdW5j
dGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikgeworICBpZiAoaTIgPD0g
aTEpIHsKKyAgICBmb3IodmFyIGogPSAwICxqX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBqIDw9IGpf
ZmluaXNoOyArK2opeworICAgICAgYTJbaiArIGkyIHwgMF0gPSBhMVtqICsgaTEgfCAwXTsKKyAg
ICB9CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBmb3IodmFyIGok
MSA9IGxlbiAtIDEgfCAwOyBqJDEgPj0gMDsgLS1qJDEpeworICAgICAgYTJbaiQxICsgaTIgfCAw
XSA9IGExW2okMSArIGkxIHwgMF07CisgICAgfQorICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0K
K30KKworZXhwb3J0cy5jYW1sX2FycmF5X3N1YiAgICA9IGNhbWxfYXJyYXlfc3ViOworZXhwb3J0
cy5jYW1sX2FycmF5X2NvbmNhdCA9IGNhbWxfYXJyYXlfY29uY2F0OworZXhwb3J0cy5jYW1sX21h
a2VfdmVjdCAgICA9IGNhbWxfbWFrZV92ZWN0OworZXhwb3J0cy5jYW1sX2FycmF5X2JsaXQgICA9
IGNhbWxfYXJyYXlfYmxpdDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2Yg
Y2FtbF9hcnJheS5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisK
KyAgX3JlZ2lzdHJ5WydjYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyddID0gZnVuY3Rpb24oKSB7CivC
oCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKworCit2YXIgb3V0X29mX21lbW9y
eSA9IC8qIHR1cGxlICovWworICAiT3V0X29mX21lbW9yeSIsCisgIDAKK107CisKK3ZhciBzeXNf
ZXJyb3IgPSAvKiB0dXBsZSAqL1sKKyAgIlN5c19lcnJvciIsCisgIC0xCitdOworCit2YXIgZmFp
bHVyZSA9IC8qIHR1cGxlICovWworICAiRmFpbHVyZSIsCisgIC0yCitdOworCit2YXIgaW52YWxp
ZF9hcmd1bWVudCA9IC8qIHR1cGxlICovWworICAiSW52YWxpZF9hcmd1bWVudCIsCisgIC0zCitd
OworCit2YXIgZW5kX29mX2ZpbGUgPSAvKiB0dXBsZSAqL1sKKyAgIkVuZF9vZl9maWxlIiwKKyAg
LTQKK107CisKK3ZhciBkaXZpc2lvbl9ieV96ZXJvID0gLyogdHVwbGUgKi9bCisgICJEaXZpc2lv
bl9ieV96ZXJvIiwKKyAgLTUKK107CisKK3ZhciBub3RfZm91bmQgPSAvKiB0dXBsZSAqL1sKKyAg
Ik5vdF9mb3VuZCIsCisgIC02CitdOworCit2YXIgbWF0Y2hfZmFpbHVyZSA9IC8qIHR1cGxlICov
WworICAiTWF0Y2hfZmFpbHVyZSIsCisgIC03CitdOworCit2YXIgc3RhY2tfb3ZlcmZsb3cgPSAv
KiB0dXBsZSAqL1sKKyAgIlN0YWNrX292ZXJmbG93IiwKKyAgLTgKK107CisKK3ZhciBzeXNfYmxv
Y2tlZF9pbyA9IC8qIHR1cGxlICovWworICAiU3lzX2Jsb2NrZWRfaW8iLAorICAtOQorXTsKKwor
dmFyIGFzc2VydF9mYWlsdXJlID0gLyogdHVwbGUgKi9bCisgICJBc3NlcnRfZmFpbHVyZSIsCisg
IC0xMAorXTsKKwordmFyIHVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gLyogdHVwbGUgKi9b
CisgICJVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSIsCisgIC0xMQorXTsKKworZXhwb3J0cy5v
dXRfb2ZfbWVtb3J5ICAgICAgICAgICAgICA9IG91dF9vZl9tZW1vcnk7CitleHBvcnRzLnN5c19l
cnJvciAgICAgICAgICAgICAgICAgID0gc3lzX2Vycm9yOworZXhwb3J0cy5mYWlsdXJlICAgICAg
ICAgICAgICAgICAgICA9IGZhaWx1cmU7CitleHBvcnRzLmludmFsaWRfYXJndW1lbnQgICAgICAg
ICAgID0gaW52YWxpZF9hcmd1bWVudDsKK2V4cG9ydHMuZW5kX29mX2ZpbGUgICAgICAgICAgICAg
ICAgPSBlbmRfb2ZfZmlsZTsKK2V4cG9ydHMuZGl2aXNpb25fYnlfemVybyAgICAgICAgICAgPSBk
aXZpc2lvbl9ieV96ZXJvOworZXhwb3J0cy5ub3RfZm91bmQgICAgICAgICAgICAgICAgICA9IG5v
dF9mb3VuZDsKK2V4cG9ydHMubWF0Y2hfZmFpbHVyZSAgICAgICAgICAgICAgPSBtYXRjaF9mYWls
dXJlOworZXhwb3J0cy5zdGFja19vdmVyZmxvdyAgICAgICAgICAgICA9IHN0YWNrX292ZXJmbG93
OworZXhwb3J0cy5zeXNfYmxvY2tlZF9pbyAgICAgICAgICAgICA9IHN5c19ibG9ja2VkX2lvOwor
ZXhwb3J0cy5hc3NlcnRfZmFpbHVyZSAgICAgICAgICAgICA9IGFzc2VydF9mYWlsdXJlOworZXhw
b3J0cy51bmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IHVuZGVmaW5lZF9yZWN1cnNpdmVfbW9k
dWxlOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisK
KyAgX3JlZ2lzdHJ5WydjYW1sX2J5dGVzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBv
cnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX2J5dGVzLmpzIC8vLy8vLy8vCisndXNl
IHN0cmljdCc7CisKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gZ2V0KHMsIGkpIHsKKyAgaWYgKGkg
PCAwIHx8IGkgPj0gcy5sZW5ndGgpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiaW5kZXggb3V0IG9m
IGJvdW5kcyIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gc1tpXTsKKyAg
fQorfQorCitleHBvcnRzLmdldCA9IGdldDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8v
LyBlbmQgb2YgY2FtbF9ieXRlcy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivC
oCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX2V4Y2VwdGlvbnMnXSA9IGZ1bmN0aW9uKCkgewor
wqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxfZXhjZXB0aW9u
cy5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisKK3ZhciBpZCA9IFswXTsKKworZnVuY3Rp
b24gY2FtbF9zZXRfb29faWQoYikgeworICBiWzFdID0gaWRbMF07CisgIGlkWzBdICs9IDE7Cisg
IHJldHVybiBiOworfQorCitmdW5jdGlvbiBnZXRfaWQoKSB7CisgIGlkWzBdICs9IDE7CisgIHJl
dHVybiBpZFswXTsKK30KKworZnVuY3Rpb24gY3JlYXRlKHN0cikgeworICB2YXIgdl8wMDEgPSBn
ZXRfaWQoLyogKCkgKi8wKTsKKyAgdmFyIHYgPSAvKiB0dXBsZSAqL1sKKyAgICBzdHIsCisgICAg
dl8wMDEKKyAgXTsKKyAgdi50YWcgPSAyNDg7CisgIHJldHVybiB2OworfQorCitleHBvcnRzLmNh
bWxfc2V0X29vX2lkID0gY2FtbF9zZXRfb29faWQ7CitleHBvcnRzLmdldF9pZCAgICAgICAgID0g
Z2V0X2lkOworZXhwb3J0cy5jcmVhdGUgICAgICAgICA9IGNyZWF0ZTsKKy8qIE5vIHNpZGUgZWZm
ZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9leGNlcHRpb25zLmpzIC8vLy8vLy8vCivCoCDC
oCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2NhbWxfZmxvYXQnXSA9
IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9m
IGNhbWxfZmxvYXQuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKworCitmdW5jdGlvbiBjYW1s
X2ludDMyX2Zsb2F0X29mX2JpdHMoeCkgeworICB2YXIgaW50MzIgPSBuZXcgSW50MzJBcnJheSgv
KiBhcnJheSAqL1t4XSk7CisgIHZhciBmbG9hdDMyID0gbmV3IEZsb2F0MzJBcnJheShpbnQzMi5i
dWZmZXIpOworICByZXR1cm4gZmxvYXQzMlswXTsKK30KKworZnVuY3Rpb24gY2FtbF9pbnQzMl9i
aXRzX29mX2Zsb2F0KHgpIHsKKyAgdmFyIGZsb2F0MzIgPSBuZXcgRmxvYXQzMkFycmF5KC8qIGZs
b2F0IGFycmF5ICovW3hdKTsKKyAgcmV0dXJuIG5ldyBJbnQzMkFycmF5KGZsb2F0MzIuYnVmZmVy
KVswXTsKK30KKworZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCh4KSB7CisgIGlmIChpc0Zp
bml0ZSh4KSkgeworICAgIGlmIChNYXRoLmFicyh4KSA+PSAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMw
OCkgeworICAgICAgcmV0dXJuIC8qIEZQX25vcm1hbCAqLzA7CisgICAgfQorICAgIGVsc2UgaWYg
KHggIT09IDApIHsKKyAgICAgIHJldHVybiAvKiBGUF9zdWJub3JtYWwgKi8xOworICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBGUF96ZXJvICovMjsKKyAgICB9CisgIH0KKyAgZWxz
ZSBpZiAoaXNOYU4oeCkpIHsKKyAgICByZXR1cm4gLyogRlBfbmFuICovNDsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogRlBfaW5maW5pdGUgKi8zOworICB9Cit9CisKK2Z1bmN0aW9uIGNh
bWxfbW9kZl9mbG9hdCh4KSB7CisgIGlmIChpc0Zpbml0ZSh4KSkgeworICAgIHZhciBuZWcgPSAr
KDEgLyB4IDwgMCk7CisgICAgdmFyIHgkMSA9IE1hdGguYWJzKHgpOworICAgIHZhciBpID0gTWF0
aC5mbG9vcih4JDEpOworICAgIHZhciBmID0geCQxIC0gaTsKKyAgICBpZiAobmVnKSB7CisgICAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC1mLAorICAgICAgICAgICAgICAt
aQorICAgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAgIGYsCisgICAgICAgICAgICAgIGkKKyAgICAgICAgICAgIF07
CisgICAgfQorICB9CisgIGVsc2UgaWYgKGlzTmFOKHgpKSB7CisgICAgcmV0dXJuIC8qIHR1cGxl
ICovWworICAgICAgICAgICAgTmFOLAorICAgICAgICAgICAgTmFOCisgICAgICAgICAgXTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAxIC8geCwK
KyAgICAgICAgICAgIHgKKyAgICAgICAgICBdOworICB9Cit9CisKK3ZhciBjYW1sX2xkZXhwX2Zs
b2F0ID0gKCBmdW5jdGlvbiAoeCxleHApIHsKKyAgICBleHAgfD0gMDsKKyAgICBpZiAoZXhwID4g
MTAyMykgeworICAgICAgICBleHAgLT0gMTAyMzsKKyAgICAgICAgeCAqPSBNYXRoLnBvdygyLCAx
MDIzKTsKKyAgICAgICAgaWYgKGV4cCA+IDEwMjMpIHsgIC8vIGluIGNhc2UgeCBpcyBzdWJub3Jt
YWwKKyAgICAgICAgICAgIGV4cCAtPSAxMDIzOworICAgICAgICAgICAgeCAqPSBNYXRoLnBvdygy
LCAxMDIzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZXhwIDwgLTEwMjMpIHsKKyAgICAg
ICAgZXhwICs9IDEwMjM7CisgICAgICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpOworICAgIH0K
KyAgICB4ICo9IE1hdGgucG93KDIsIGV4cCk7CisgICAgcmV0dXJuIHg7Cit9CispOworCit2YXIg
Y2FtbF9mcmV4cF9mbG9hdCA9IChmdW5jdGlvbiAoeCkgeworICAgIGlmICgoeCA9PSAwKSB8fCAh
aXNGaW5pdGUoeCkpIHJldHVybiBbIHgsIDBdOworICAgIHZhciBuZWcgPSB4IDwgMDsKKyAgICBp
ZiAobmVnKSB4ID0gLSB4OworICAgIHZhciBleHAgPSBNYXRoLmZsb29yKE1hdGguTE9HMkUqTWF0
aC5sb2coeCkpICsgMTsKKyAgICB4ICo9IE1hdGgucG93KDIsLWV4cCk7CisgICAgaWYgKHggPCAw
LjUpIHsgeCAqPSAyOyBleHAgLT0gMTsgfQorICAgIGlmIChuZWcpIHggPSAtIHg7CisgICAgcmV0
dXJuIFt4LCBleHBdOworfQorKTsKKworZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlKHgsIHkp
IHsKKyAgaWYgKHggPT09IHkpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBlbHNlIGlmICh4IDwg
eSkgeworICAgIHJldHVybiAtMTsKKyAgfQorICBlbHNlIGlmICh4ID4geSB8fCB4ID09PSB4KSB7
CisgICAgcmV0dXJuIDE7CisgIH0KKyAgZWxzZSBpZiAoeSA9PT0geSkgeworICAgIHJldHVybiAt
MTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1s
X2NvcHlzaWduX2Zsb2F0KHgsIHkpIHsKKyAgdmFyIHgkMSA9IE1hdGguYWJzKHgpOworICB2YXIg
eSQxID0geSA9PT0gMCA/IDEgLyB5IDogeTsKKyAgaWYgKHkkMSA8IDApIHsKKyAgICByZXR1cm4g
LXgkMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4geCQxOworICB9Cit9CisKK2Z1bmN0aW9u
IGNhbWxfZXhwbTFfZmxvYXQoeCkgeworICB2YXIgeSA9IE1hdGguZXhwKHgpOworICB2YXIgeiA9
IHkgLSAxOworICBpZiAoTWF0aC5hYnMoeCkgPiAxKSB7CisgICAgcmV0dXJuIHo7CisgIH0KKyAg
ZWxzZSBpZiAoeiA9PT0gMCkgeworICAgIHJldHVybiB4OworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiB4ICogeiAvIE1hdGgubG9nKHkpOworICB9Cit9CisKK3ZhciBjYW1sX2h5cG90X2Zsb2F0
ID0gKCBmdW5jdGlvbiAoeCwgeSkgeworICAgIHZhciB4MCA9IE1hdGguYWJzKHgpLCB5MCA9IE1h
dGguYWJzKHkpOworICAgIHZhciBhID0gTWF0aC5tYXgoeDAsIHkwKSwgYiA9IE1hdGgubWluKHgw
LHkwKSAvIChhP2E6MSk7CisgICAgcmV0dXJuIGEgKiBNYXRoLnNxcnQoMSArIGIqYik7Cit9Cisp
OworCit2YXIgY2FtbF9sb2cxMF9mbG9hdCA9ICggZnVuY3Rpb24gICh4KSB7IAorICAgcmV0dXJu
IE1hdGguTE9HMTBFICogTWF0aC5sb2coeCk7IH0KKyk7CisKK2V4cG9ydHMuY2FtbF9pbnQzMl9m
bG9hdF9vZl9iaXRzID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzOworZXhwb3J0cy5jYW1sX2lu
dDMyX2JpdHNfb2ZfZmxvYXQgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQ7CitleHBvcnRzLmNh
bWxfY2xhc3NpZnlfZmxvYXQgICAgICA9IGNhbWxfY2xhc3NpZnlfZmxvYXQ7CitleHBvcnRzLmNh
bWxfbW9kZl9mbG9hdCAgICAgICAgICA9IGNhbWxfbW9kZl9mbG9hdDsKK2V4cG9ydHMuY2FtbF9s
ZGV4cF9mbG9hdCAgICAgICAgID0gY2FtbF9sZGV4cF9mbG9hdDsKK2V4cG9ydHMuY2FtbF9mcmV4
cF9mbG9hdCAgICAgICAgID0gY2FtbF9mcmV4cF9mbG9hdDsKK2V4cG9ydHMuY2FtbF9mbG9hdF9j
b21wYXJlICAgICAgID0gY2FtbF9mbG9hdF9jb21wYXJlOworZXhwb3J0cy5jYW1sX2NvcHlzaWdu
X2Zsb2F0ICAgICAgPSBjYW1sX2NvcHlzaWduX2Zsb2F0OworZXhwb3J0cy5jYW1sX2V4cG0xX2Zs
b2F0ICAgICAgICAgPSBjYW1sX2V4cG0xX2Zsb2F0OworZXhwb3J0cy5jYW1sX2h5cG90X2Zsb2F0
ICAgICAgICAgPSBjYW1sX2h5cG90X2Zsb2F0OworZXhwb3J0cy5jYW1sX2xvZzEwX2Zsb2F0ICAg
ICAgICAgPSBjYW1sX2xvZzEwX2Zsb2F0OworLyogY2FtbF9sZGV4cF9mbG9hdCBOb3QgYSBwdXJl
IG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfZmxvYXQuanMgLy8vLy8vLy8KK8KgIMKg
IHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9mb3JtYXQnXSA9
IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9m
IGNhbWxfZm9ybWF0LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDdXJyeSAgICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBDYW1sX2ludDMyICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9pbnQzMiIpOwordmFyIENhbWxfaW50NjQgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2ludDY0Iik7Cit2YXIgQ2FtbF91dGlscyAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2NhbWxfdXRpbHMiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24g
Y2FtbF9mYWlsd2l0aChzKSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuZmFpbHVyZSwKKyAgICAgICAgcworICAgICAgXTsKK30KKworZnVuY3Rpb24gcGFyc2Vf
ZGlnaXQoYykgeworICBpZiAoYyA+PSA2NSkgeworICAgIGlmIChjID49IDk3KSB7CisgICAgICBp
ZiAoYyA+PSAxMjMpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHJldHVybiBjIC0gODcgfCAwOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlm
IChjID49IDkxKSB7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
cmV0dXJuIGMgLSA1NSB8IDA7CisgICAgfQorICB9CisgIGVsc2UgaWYgKGMgPiA1NyB8fCBjIDwg
NDgpIHsKKyAgICByZXR1cm4gLTE7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGMgLSAvKiAi
MCIgKi80OCB8IDA7CisgIH0KK30KKworZnVuY3Rpb24gaW50X29mX3N0cmluZ19iYXNlKHBhcmFt
KSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIDg7
CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAxNjsKKyAgICBjYXNlIDIgOiAKKyAgICAg
ICAgcmV0dXJuIDEwOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gMjsKKyAgICAKKyAg
fQorfQorCitmdW5jdGlvbiBwYXJzZV9zaWduX2FuZF9iYXNlKHMpIHsKKyAgdmFyIHNpZ24gPSAx
OworICB2YXIgYmFzZSA9IC8qIERlYyAqLzI7CisgIHZhciBpID0gMDsKKyAgaWYgKHNbaV0gPT09
ICItIikgeworICAgIHNpZ24gPSAtMTsKKyAgICBpID0gaSArIDEgfCAwOworICB9CisgIHZhciBt
YXRjaCA9IHMuY2hhckNvZGVBdChpKTsKKyAgdmFyIG1hdGNoJDEgPSBzLmNoYXJDb2RlQXQoaSAr
IDEgfCAwKTsKKyAgaWYgKG1hdGNoID09PSA0OCkgeworICAgIGlmIChtYXRjaCQxID49IDg5KSB7
CisgICAgICBpZiAobWF0Y2gkMSAhPT0gOTgpIHsKKyAgICAgICAgaWYgKG1hdGNoJDEgIT09IDEx
MSkgeworICAgICAgICAgIGlmIChtYXRjaCQxID09PSAxMjApIHsKKyAgICAgICAgICAgIGJhc2Ug
PSAvKiBIZXggKi8xOworICAgICAgICAgICAgaSA9IGkgKyAyIHwgMDsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgYmFzZSA9IC8q
IE9jdCAqLzA7CisgICAgICAgICAgaSA9IGkgKyAyIHwgMDsKKyAgICAgICAgfQorICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIGJhc2UgPSAvKiBCaW4gKi8zOworICAgICAgICBpID0gaSAr
IDIgfCAwOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChtYXRjaCQxICE9PSA2Nikgewor
ICAgICAgaWYgKG1hdGNoJDEgIT09IDc5KSB7CisgICAgICAgIGlmIChtYXRjaCQxID49IDg4KSB7
CisgICAgICAgICAgYmFzZSA9IC8qIEhleCAqLzE7CisgICAgICAgICAgaSA9IGkgKyAyIHwgMDsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBiYXNl
ID0gLyogT2N0ICovMDsKKyAgICAgICAgaSA9IGkgKyAyIHwgMDsKKyAgICAgIH0KKyAgICB9Cisg
ICAgZWxzZSB7CisgICAgICBiYXNlID0gLyogQmluICovMzsKKyAgICAgIGkgPSBpICsgMiB8IDA7
CisgICAgfQorICB9CisgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICBpLAorICAgICAg
ICAgIHNpZ24sCisgICAgICAgICAgYmFzZQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBjYW1s
X2ludF9vZl9zdHJpbmcocykgeworICB2YXIgbWF0Y2ggPSBwYXJzZV9zaWduX2FuZF9iYXNlKHMp
OworICB2YXIgaSA9IG1hdGNoWzBdOworICB2YXIgYmFzZSA9IGludF9vZl9zdHJpbmdfYmFzZSht
YXRjaFsyXSk7CisgIHZhciB0aHJlc2hvbGQgPSA0Mjk0OTY3Mjk1OworICB2YXIgbGVuID0gcy5s
ZW5ndGg7CisgIHZhciBjID0gaSA8IGxlbiA/IHMuY2hhckNvZGVBdChpKSA6IC8qICJcMDAwIiAq
LzA7CisgIHZhciBkID0gcGFyc2VfZGlnaXQoYyk7CisgIGlmIChkIDwgMCB8fCBkID49IGJhc2Up
IHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVy
ZSwKKyAgICAgICAgICAiaW50X29mX3N0cmluZyIKKyAgICAgICAgXTsKKyAgfQorICB2YXIgYXV4
ID0gZnVuY3Rpb24gKF9hY2MsIF9rKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIGsg
PSBfazsKKyAgICAgIHZhciBhY2MgPSBfYWNjOworICAgICAgaWYgKGsgPT09IGxlbikgeworICAg
ICAgICByZXR1cm4gYWNjOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciBhID0g
cy5jaGFyQ29kZUF0KGspOworICAgICAgICBpZiAoYSA9PT0gLyogIl8iICovOTUpIHsKKyAgICAg
ICAgICBfayA9IGsgKyAxIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFyIHYgPSBwYXJzZV9kaWdpdChh
KTsKKyAgICAgICAgICBpZiAodiA8IDAgfHwgdiA+PSBiYXNlKSB7CisgICAgICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAor
ICAgICAgICAgICAgICAgICAgImludF9vZl9zdHJpbmciCisgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgYWNjJDEgPSBiYXNl
ICogYWNjICsgdjsKKyAgICAgICAgICAgIGlmIChhY2MkMSA+IHRocmVzaG9sZCkgeworICAgICAg
ICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICJpbnRfb2Zfc3RyaW5nIgorICAgICAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICBfayA9IGsgKyAxIHwgMDsKKyAgICAgICAgICAgICAgX2FjYyA9IGFjYyQxOworICAg
ICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH07CisgIH07CisgIHZhciByZXMgPSBt
YXRjaFsxXSAqIGF1eChkLCBpICsgMSB8IDApOworICB2YXIgb3JfcmVzID0gcmVzIHwgMDsKKyAg
aWYgKGJhc2UgPT09IDEwICYmIHJlcyAhPT0gb3JfcmVzKSB7CisgICAgdGhyb3cgWworICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICAgImludF9vZl9z
dHJpbmciCisgICAgICAgIF07CisgIH0KKyAgcmV0dXJuIG9yX3JlczsKK30KKworZnVuY3Rpb24g
Y2FtbF9pbnQ2NF9vZl9zdHJpbmcocykgeworICB2YXIgbWF0Y2ggPSBwYXJzZV9zaWduX2FuZF9i
YXNlKHMpOworICB2YXIgaGJhc2UgPSBtYXRjaFsyXTsKKyAgdmFyIGkgPSBtYXRjaFswXTsKKyAg
dmFyIGJhc2UgPSBDYW1sX2ludDY0Lm9mX2ludDMyKGludF9vZl9zdHJpbmdfYmFzZShoYmFzZSkp
OworICB2YXIgc2lnbiA9IENhbWxfaW50NjQub2ZfaW50MzIobWF0Y2hbMV0pOworICB2YXIgdGhy
ZXNob2xkOworICBzd2l0Y2ggKGhiYXNlKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHRocmVz
aG9sZCA9IC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovNTM2ODcwOTExLAorICAgICAg
ICAgIC8qIGxvICovNDI5NDk2NzI5NQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIDEgOiAKKyAgICAgICAgdGhyZXNob2xkID0gLyogaW50NjQgKi9bCisgICAgICAgICAgLyog
aGkgKi8yNjg0MzU0NTUsCisgICAgICAgICAgLyogbG8gKi80Mjk0OTY3Mjk1CisgICAgICAgIF07
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMiA6IAorICAgICAgICB0aHJlc2hvbGQgPSAvKiBp
bnQ2NCAqL1sKKyAgICAgICAgICAvKiBoaSAqLzQyOTQ5NjcyOSwKKyAgICAgICAgICAvKiBsbyAq
LzI1NzY5ODAzNzcKKyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzIDogCisg
ICAgICAgIHRocmVzaG9sZCA9IC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMjE0NzQ4
MzY0NywKKyAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyOTUKKyAgICAgICAgXTsKKyAgICAgICAg
YnJlYWs7CisgICAgCisgIH0KKyAgdmFyIGxlbiA9IHMubGVuZ3RoOworICB2YXIgYyA9IGkgPCBs
ZW4gPyBzLmNoYXJDb2RlQXQoaSkgOiAvKiAiXDAwMCIgKi8wOworICB2YXIgZCA9IENhbWxfaW50
NjQub2ZfaW50MzIocGFyc2VfZGlnaXQoYykpOworICBpZiAoQ2FtbF9pbnQ2NC5sdChkLCAvKiBp
bnQ2NCAqL1sKKyAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgLyogbG8gKi8wCisgICAg
ICAgIF0pIHx8IENhbWxfaW50NjQuZ2UoZCwgYmFzZSkpIHsKKyAgICB0aHJvdyBbCisgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAgICAgICAiaW50NjRfb2Zf
c3RyaW5nIgorICAgICAgICBdOworICB9CisgIHZhciBhdXggPSBmdW5jdGlvbiAoX2FjYywgX2sp
IHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgayA9IF9rOworICAgICAgdmFyIGFjYyA9
IF9hY2M7CisgICAgICBpZiAoayA9PT0gbGVuKSB7CisgICAgICAgIHJldHVybiBhY2M7CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIGEgPSBzLmNoYXJDb2RlQXQoayk7CisgICAg
ICAgIGlmIChhID09PSAvKiAiXyIgKi85NSkgeworICAgICAgICAgIF9rID0gayArIDEgfCAwOwor
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICB2YXIgdiA9IENhbWxfaW50NjQub2ZfaW50MzIocGFyc2VfZGlnaXQoYSkp
OworICAgICAgICAgIGlmIChDYW1sX2ludDY0Lmx0KHYsIC8qIGludDY0ICovWworICAgICAgICAg
ICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAg
ICAgICAgICAgXSkgfHwgQ2FtbF9pbnQ2NC5nZSh2LCBiYXNlKSkgeworICAgICAgICAgICAgdGhy
b3cgWworICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwK
KyAgICAgICAgICAgICAgICAgICJpbnQ2NF9vZl9zdHJpbmciCisgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgYWNjJDEgPSBD
YW1sX2ludDY0LmFkZChDYW1sX2ludDY0Lm11bChiYXNlLCBhY2MpLCB2KTsKKyAgICAgICAgICAg
IGlmIChDYW1sX2ludDY0Lmd0KGFjYyQxLCB0aHJlc2hvbGQpKSB7CisgICAgICAgICAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVy
ZSwKKyAgICAgICAgICAgICAgICAgICAgImludDY0X29mX3N0cmluZyIKKyAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
X2sgPSBrICsgMSB8IDA7CisgICAgICAgICAgICAgIF9hY2MgPSBhY2MkMTsKKyAgICAgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgcmVzID0gQ2FtbF9pbnQ2
NC5tdWwoc2lnbiwgYXV4KGQsIGkgKyAxIHwgMCkpOworICB2YXIgb3JfcmVzXzAwMCA9IC8qIGhp
ICovcmVzWzBdIHwgLyogaGkgKi8wOworICB2YXIgb3JfcmVzXzAwMSA9IC8qIGxvICovKHJlc1sx
XSA+Pj4gMCk7CisgIHZhciBvcl9yZXMgPSAvKiBpbnQ2NCAqL1sKKyAgICBvcl9yZXNfMDAwLAor
ICAgIG9yX3Jlc18wMDEKKyAgXTsKKyAgaWYgKENhbWxfaW50NjQuZXEoYmFzZSwgLyogaW50NjQg
Ki9bCisgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgIC8qIGxvICovMTAKKyAgICAgICAg
XSkgJiYgQ2FtbF9pbnQ2NC5uZXEocmVzLCBvcl9yZXMpKSB7CisgICAgdGhyb3cgWworICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICAgImludDY0X29m
X3N0cmluZyIKKyAgICAgICAgXTsKKyAgfQorICByZXR1cm4gb3JfcmVzOworfQorCitmdW5jdGlv
biBpbnRfb2ZfYmFzZShwYXJhbSkgeworICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAwIDog
CisgICAgICAgIHJldHVybiA4OworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gMTY7Cisg
ICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAxMDsKKyAgICAKKyAgfQorfQorCitmdW5jdGlv
biBsb3dlcmNhc2UoYykgeworICBpZiAoYyA+PSAvKiAiQSIgKi82NSAmJiBjIDw9IC8qICJaIiAq
LzkwIHx8IGMgPj0gLyogIlwxOTIiICovMTkyICYmIGMgPD0gLyogIlwyMTQiICovMjE0IHx8IGMg
Pj0gLyogIlwyMTYiICovMjE2ICYmIGMgPD0gLyogIlwyMjIiICovMjIyKSB7CisgICAgcmV0dXJu
IGMgKyAzMiB8IDA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGM7CisgIH0KK30KKworZnVu
Y3Rpb24gcGFyc2VfZm9ybWF0KGZtdCkgeworICB2YXIgbGVuID0gZm10Lmxlbmd0aDsKKyAgaWYg
KGxlbiA+IDMxKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgImZvcm1hdF9pbnQ6IGZvcm1hdCB0b28g
bG9uZyIKKyAgICAgICAgXTsKKyAgfQorICB2YXIgZiA9IC8qIHJlY29yZCAqL1sKKyAgICAvKiBq
dXN0aWZ5ICovIisiLAorICAgIC8qIHNpZ25zdHlsZSAqLyItIiwKKyAgICAvKiBmaWx0ZXIgKi8i
ICIsCisgICAgLyogYWx0ZXJuYXRlIDogZmFsc2UgKi8wLAorICAgIC8qIGJhc2UgOiBEZWMgKi8y
LAorICAgIC8qIHNpZ25lZGNvbnYgOiBmYWxzZSAqLzAsCisgICAgLyogd2lkdGggKi8wLAorICAg
IC8qIHVwcGVyY2FzZSA6IGZhbHNlICovMCwKKyAgICAvKiBzaWduICovMSwKKyAgICAvKiBwcmVj
ICovLTEsCisgICAgLyogY29udiAqLyJmIgorICBdOworICB2YXIgX2kgPSAwOworICB3aGlsZSh0
cnVlKSB7CisgICAgdmFyIGkgPSBfaTsKKyAgICBpZiAoaSA+PSBsZW4pIHsKKyAgICAgIHJldHVy
biBmOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBjID0gZm10LmNoYXJDb2RlQXQoaSk7
CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICBpZiAoYyA+PSA2OSkgeworICAgICAgICBpZiAo
YyA+PSA4OCkgeworICAgICAgICAgIGlmIChjID49IDEyMSkgeworICAgICAgICAgICAgZXhpdCA9
IDE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChj
IC0gODggfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAg
ZlsvKiBiYXNlICovNF0gPSAvKiBIZXggKi8xOworICAgICAgICAgICAgICAgICAgZlsvKiB1cHBl
cmNhc2UgKi83XSA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICAgICAgX2kgPSBpICsgMSB8
IDA7CisgICAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgICAgICBjYXNl
IDEzIDogCisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgY2FzZSAxNSA6
IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDU7CisgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgICBjYXNlIDE3IDogCisgICAg
ICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDIzIDogCisgICAgICAgICAgICAgICAgICBmWy8qIGJhc2UgKi80XSA9IC8q
IE9jdCAqLzA7CisgICAgICAgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAgIGNhc2UgMjkgOiAKKyAgICAgICAg
ICAgICAgICAgIGZbLyogYmFzZSAqLzRdID0gLyogRGVjICovMjsKKyAgICAgICAgICAgICAgICAg
IF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAg
ICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgIGNhc2Ug
NSA6IAorICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgY2FzZSA3IDogCisg
ICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAg
ICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAg
IGNhc2UgMTYgOiAKKyAgICAgICAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgICAgICBjYXNl
IDE5IDogCisgICAgICAgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAgICAgY2FzZSAyMSA6
IAorICAgICAgICAgICAgICBjYXNlIDIyIDogCisgICAgICAgICAgICAgIGNhc2UgMjQgOiAKKyAg
ICAgICAgICAgICAgY2FzZSAyNSA6IAorICAgICAgICAgICAgICBjYXNlIDI2IDogCisgICAgICAg
ICAgICAgIGNhc2UgMjcgOiAKKyAgICAgICAgICAgICAgY2FzZSAyOCA6IAorICAgICAgICAgICAg
ICBjYXNlIDMwIDogCisgICAgICAgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgICAgICAgICAg
IGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
MzIgOiAKKyAgICAgICAgICAgICAgICAgIGZbLyogYmFzZSAqLzRdID0gLyogSGV4ICovMTsKKyAg
ICAgICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAgICAgY29udGlu
dWUgOworICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGVsc2UgaWYgKGMgPj0gNzIpIHsKKyAgICAgICAgICBleGl0ID0gMTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBmWy8qIHNpZ25lZGNvbnYgKi81
XSA9IC8qIHRydWUgKi8xOworICAgICAgICAgIGZbLyogdXBwZXJjYXNlICovN10gPSAvKiB0cnVl
ICovMTsKKyAgICAgICAgICBmWy8qIGNvbnYgKi8xMF0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGxv
d2VyY2FzZShjKSk7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgY29udGlu
dWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg
ICAgdmFyIHN3aXRjaGVyID0gYyAtIDMyIHwgMDsKKyAgICAgICAgaWYgKHN3aXRjaGVyID4gMjUg
fHwgc3dpdGNoZXIgPCAwKSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgc3dpdGNoIChzd2l0Y2hlcikgeworICAgICAgICAgICAgY2Fz
ZSAzIDogCisgICAgICAgICAgICAgICAgZlsvKiBhbHRlcm5hdGUgKi8zXSA9IC8qIHRydWUgKi8x
OworICAgICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIGNhc2UgMTEgOiAK
KyAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgICBmWy8qIGp1c3RpZnkgKi8wXSA9ICIt
IjsKKyAgICAgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICBjb250
aW51ZSA7CisgICAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICAgIGZbLyog
cHJlYyAqLzldID0gMDsKKyAgICAgICAgICAgICAgICB2YXIgaiA9IGkgKyAxIHwgMDsKKyAgICAg
ICAgICAgICAgICB3aGlsZSgoZnVuY3Rpb24oail7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSBmbXQuY2hhckNv
ZGVBdChqKSAtIC8qICIwIiAqLzQ4IHwgMDsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Kyh3ID49IDAgJiYgdyA8PSA5KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9KGopKSgpKSB7CisgICAgICAgICAgICAgICAgICBmWy8qIHByZWMgKi85XSA9IChD
YW1sX2ludDMyLmltdWwoZlsvKiBwcmVjICovOV0sIDEwKSArIGZtdC5jaGFyQ29kZUF0KGopIHwg
MCkgLSAvKiAiMCIgKi80OCB8IDA7CisgICAgICAgICAgICAgICAgICBqID0gaiArIDEgfCAwOwor
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgX2kgPSBqOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIGNh
c2UgMiA6IAorICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBjYXNlIDUgOiAKKyAg
ICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICBj
YXNlIDggOiAKKyAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgY2FzZSAxMCA6IAor
ICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgY2FzZSAxNSA6IAorICAgICAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAxNiA6IAorICAgICAgICAgICAgICAgIGZbLyogZmlsdGVyICovMl0gPSAiMCI7CisgICAgICAg
ICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAg
ICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAgIGNhc2Ug
MjEgOiAKKyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgIGNhc2UgMjMgOiAKKyAg
ICAgICAgICAgIGNhc2UgMjQgOiAKKyAgICAgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAgICAg
ICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgc3dpdGNoIChleGl0KSB7CisgICAg
ICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGZbLyogc2lnbnN0
eWxlICovMV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpOworICAgICAgICAgICAgX2kgPSBpICsg
MSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDMgOiAKKyAg
ICAgICAgICAgIGZbLyogd2lkdGggKi82XSA9IDA7CisgICAgICAgICAgICB2YXIgaiQxID0gaTsK
KyAgICAgICAgICAgIHdoaWxlKChmdW5jdGlvbihqJDEpeworICAgICAgICAgICAgICAgIHJldHVy
biBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICB2YXIgdyA9IGZtdC5jaGFyQ29kZUF0
KGokMSkgLSAvKiAiMCIgKi80OCB8IDA7CisgICAgICAgICAgICAgICAgICByZXR1cm4gKyh3ID49
IDAgJiYgdyA8PSA5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfShqJDEp
KSgpKSB7CisgICAgICAgICAgICAgIGZbLyogd2lkdGggKi82XSA9IChDYW1sX2ludDMyLmltdWwo
ZlsvKiB3aWR0aCAqLzZdLCAxMCkgKyBmbXQuY2hhckNvZGVBdChqJDEpIHwgMCkgLSAvKiAiMCIg
Ki80OCB8IDA7CisgICAgICAgICAgICAgIGokMSA9IGokMSArIDEgfCAwOworICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgIF9pID0gaiQxOworICAgICAgICAgICAgY29udGludWUgOworICAgICAg
ICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBmWy8qIHNpZ25lZGNvbnYgKi81XSA9IC8qIHRy
dWUgKi8xOworICAgICAgICAgICAgZlsvKiBiYXNlICovNF0gPSAvKiBEZWMgKi8yOworICAgICAg
ICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGZbLyogc2lnbmVkY29udiAqLzVdID0gLyogdHJ1ZSAq
LzE7CisgICAgICAgICAgICBmWy8qIGNvbnYgKi8xMF0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMp
OworICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZpbmlzaF9m
b3JtYXR0aW5nKHBhcmFtLCByYXdidWZmZXIpIHsKKyAgdmFyIGp1c3RpZnkgPSBwYXJhbVsvKiBq
dXN0aWZ5ICovMF07CisgIHZhciBzaWduc3R5bGUgPSBwYXJhbVsvKiBzaWduc3R5bGUgKi8xXTsK
KyAgdmFyIGZpbHRlciA9IHBhcmFtWy8qIGZpbHRlciAqLzJdOworICB2YXIgYWx0ZXJuYXRlID0g
cGFyYW1bLyogYWx0ZXJuYXRlICovM107CisgIHZhciBiYXNlID0gcGFyYW1bLyogYmFzZSAqLzRd
OworICB2YXIgc2lnbmVkY29udiA9IHBhcmFtWy8qIHNpZ25lZGNvbnYgKi81XTsKKyAgdmFyIHdp
ZHRoID0gcGFyYW1bLyogd2lkdGggKi82XTsKKyAgdmFyIHVwcGVyY2FzZSA9IHBhcmFtWy8qIHVw
cGVyY2FzZSAqLzddOworICB2YXIgc2lnbiA9IHBhcmFtWy8qIHNpZ24gKi84XTsKKyAgdmFyIGxl
biA9IHJhd2J1ZmZlci5sZW5ndGg7CisgIGlmIChzaWduZWRjb252ICYmIChzaWduIDwgMCB8fCBz
aWduc3R5bGUgIT09ICItIikpIHsKKyAgICBsZW4gPSBsZW4gKyAxIHwgMDsKKyAgfQorICBpZiAo
YWx0ZXJuYXRlKSB7CisgICAgaWYgKGJhc2UpIHsKKyAgICAgIGlmIChiYXNlID09PSAvKiBIZXgg
Ki8xKSB7CisgICAgICAgIGxlbiA9IGxlbiArIDIgfCAwOworICAgICAgfQorICAgICAgCisgICAg
fQorICAgIGVsc2UgeworICAgICAgbGVuID0gbGVuICsgMSB8IDA7CisgICAgfQorICB9CisgIHZh
ciBidWZmZXIgPSAiIjsKKyAgaWYgKGp1c3RpZnkgPT09ICIrIiAmJiBmaWx0ZXIgPT09ICIgIikg
eworICAgIGZvcih2YXIgaSA9IGxlbiAsaV9maW5pc2ggPSB3aWR0aCAtIDEgfCAwOyBpIDw9IGlf
ZmluaXNoOyArK2kpeworICAgICAgYnVmZmVyID0gYnVmZmVyICsgZmlsdGVyOworICAgIH0KKyAg
fQorICBpZiAoc2lnbmVkY29udikgeworICAgIGlmIChzaWduIDwgMCkgeworICAgICAgYnVmZmVy
ID0gYnVmZmVyICsgIi0iOworICAgIH0KKyAgICBlbHNlIGlmIChzaWduc3R5bGUgIT09ICItIikg
eworICAgICAgYnVmZmVyID0gYnVmZmVyICsgc2lnbnN0eWxlOworICAgIH0KKyAgICAKKyAgfQor
ICBpZiAoYWx0ZXJuYXRlICYmIGJhc2UgPT09IC8qIE9jdCAqLzApIHsKKyAgICBidWZmZXIgPSBi
dWZmZXIgKyAiMCI7CisgIH0KKyAgaWYgKGFsdGVybmF0ZSAmJiBiYXNlID09PSAvKiBIZXggKi8x
KSB7CisgICAgYnVmZmVyID0gYnVmZmVyICsgIjB4IjsKKyAgfQorICBpZiAoanVzdGlmeSA9PT0g
IisiICYmIGZpbHRlciA9PT0gIjAiKSB7CisgICAgZm9yKHZhciBpJDEgPSBsZW4gLGlfZmluaXNo
JDEgPSB3aWR0aCAtIDEgfCAwOyBpJDEgPD0gaV9maW5pc2gkMTsgKytpJDEpeworICAgICAgYnVm
ZmVyID0gYnVmZmVyICsgZmlsdGVyOworICAgIH0KKyAgfQorICBidWZmZXIgPSB1cHBlcmNhc2Ug
PyBidWZmZXIgKyByYXdidWZmZXIudG9VcHBlckNhc2UoKSA6IGJ1ZmZlciArIHJhd2J1ZmZlcjsK
KyAgaWYgKGp1c3RpZnkgPT09ICItIikgeworICAgIGZvcih2YXIgaSQyID0gbGVuICxpX2Zpbmlz
aCQyID0gd2lkdGggLSAxIHwgMDsgaSQyIDw9IGlfZmluaXNoJDI7ICsraSQyKXsKKyAgICAgIGJ1
ZmZlciA9IGJ1ZmZlciArICIgIjsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGJ1ZmZlcjsKK30KKwor
ZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkgeworICBpZiAoZm10ID09PSAiJWQiKSB7
CisgICAgcmV0dXJuICIiICsgaTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgZiA9IHBhcnNlX2Zv
cm1hdChmbXQpOworICAgIHZhciBmJDEgPSBmOworICAgIHZhciBpJDEgPSBpOworICAgIHZhciBp
JDIgPSBpJDEgPCAwID8gKAorICAgICAgICBmJDFbLyogc2lnbmVkY29udiAqLzVdID8gKGYkMVsv
KiBzaWduICovOF0gPSAtMSwgLWkkMSkgOiAoaSQxID4+PiAwKQorICAgICAgKSA6IGkkMTsKKyAg
ICB2YXIgcyA9IGkkMi50b1N0cmluZyhpbnRfb2ZfYmFzZShmJDFbLyogYmFzZSAqLzRdKSk7Cisg
ICAgaWYgKGYkMVsvKiBwcmVjICovOV0gPj0gMCkgeworICAgICAgZiQxWy8qIGZpbHRlciAqLzJd
ID0gIiAiOworICAgICAgdmFyIG4gPSBmJDFbLyogcHJlYyAqLzldIC0gcy5sZW5ndGggfCAwOwor
ICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgIHMgPSBDYW1sX3V0aWxzLnJlcGVhdChuLCAiMCIp
ICsgczsKKyAgICAgIH0KKyAgICAgIAorICAgIH0KKyAgICByZXR1cm4gZmluaXNoX2Zvcm1hdHRp
bmcoZiQxLCBzKTsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdChmbXQsIHgp
IHsKKyAgdmFyIGYgPSBwYXJzZV9mb3JtYXQoZm10KTsKKyAgdmFyIHgkMSA9IGZbLyogc2lnbmVk
Y29udiAqLzVdICYmIENhbWxfaW50NjQubHQoeCwgLyogaW50NjQgKi9bCisgICAgICAgIC8qIGhp
ICovMCwKKyAgICAgICAgLyogbG8gKi8wCisgICAgICBdKSA/IChmWy8qIHNpZ24gKi84XSA9IC0x
LCBDYW1sX2ludDY0Lm5lZyh4KSkgOiB4OworICB2YXIgcyA9ICIiOworICB2YXIgbWF0Y2ggPSBm
Wy8qIGJhc2UgKi80XTsKKyAgc3dpdGNoIChtYXRjaCkgeworICAgIGNhc2UgMCA6IAorICAgICAg
ICB2YXIgd2Jhc2UgPSAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAg
ICAgLyogbG8gKi84CisgICAgICAgIF07CisgICAgICAgIHZhciBjdnRibCA9ICIwMTIzNDU2NyI7
CisgICAgICAgIGlmIChDYW1sX2ludDY0Lmx0KHgkMSwgLyogaW50NjQgKi9bCisgICAgICAgICAg
ICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAgIC8qIGxvICovMAorICAgICAgICAgICAg
ICBdKSkgeworICAgICAgICAgIHZhciB5ID0gQ2FtbF9pbnQ2NC5kaXNjYXJkX3NpZ24oeCQxKTsK
KyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IENhbWxfaW50NjQuZGl2X21vZCh5LCB3YmFzZSk7Cisg
ICAgICAgICAgdmFyIHF1b3RpZW50ID0gQ2FtbF9pbnQ2NC5hZGQoLyogaW50NjQgKi9bCisgICAg
ICAgICAgICAgICAgLyogaGkgKi8yNjg0MzU0NTYsCisgICAgICAgICAgICAgICAgLyogbG8gKi8w
CisgICAgICAgICAgICAgIF0sIG1hdGNoJDFbMF0pOworICAgICAgICAgIHZhciBtb2R1bHVzID0g
bWF0Y2gkMVsxXTsKKyAgICAgICAgICBzID0gQ2FtbF9zdHJpbmcuanNfc3RyaW5nX29mX2NoYXIo
Y3Z0YmwuY2hhckNvZGVBdChtb2R1bHVzWzFdIHwgMCkpICsgczsKKyAgICAgICAgICB3aGlsZShD
YW1sX2ludDY0Lm5lcShxdW90aWVudCwgLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgICAv
KiBoaSAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAgICAgICAgICBd
KSkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBDYW1sX2ludDY0LmRpdl9tb2QocXVvdGll
bnQsIHdiYXNlKTsKKyAgICAgICAgICAgIHF1b3RpZW50ID0gbWF0Y2gkMlswXTsKKyAgICAgICAg
ICAgIG1vZHVsdXMgPSBtYXRjaCQyWzFdOworICAgICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpz
X3N0cmluZ19vZl9jaGFyKGN2dGJsLmNoYXJDb2RlQXQobW9kdWx1c1sxXSB8IDApKSArIHM7Cisg
ICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0
Y2gkMyA9IENhbWxfaW50NjQuZGl2X21vZCh4JDEsIHdiYXNlKTsKKyAgICAgICAgICB2YXIgcXVv
dGllbnQkMSA9IG1hdGNoJDNbMF07CisgICAgICAgICAgdmFyIG1vZHVsdXMkMSA9IG1hdGNoJDNb
MV07CisgICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2dGJsLmNo
YXJDb2RlQXQobW9kdWx1cyQxWzFdIHwgMCkpICsgczsKKyAgICAgICAgICB3aGlsZShDYW1sX2lu
dDY0Lm5lcShxdW90aWVudCQxLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIGhp
ICovMCwKKyAgICAgICAgICAgICAgICAgIC8qIGxvICovMAorICAgICAgICAgICAgICAgIF0pKSB7
CisgICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IENhbWxfaW50NjQuZGl2X21vZChxdW90aWVudCQx
LCB3YmFzZSk7CisgICAgICAgICAgICBxdW90aWVudCQxID0gbWF0Y2gkNFswXTsKKyAgICAgICAg
ICAgIG1vZHVsdXMkMSA9IG1hdGNoJDRbMV07CisgICAgICAgICAgICBzID0gQ2FtbF9zdHJpbmcu
anNfc3RyaW5nX29mX2NoYXIoY3Z0YmwuY2hhckNvZGVBdChtb2R1bHVzJDFbMV0gfCAwKSkgKyBz
OworICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxIDog
CisgICAgICAgIHMgPSBDYW1sX2ludDY0LnRvX2hleCh4JDEpICsgczsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAyIDogCisgICAgICAgIHZhciB3YmFzZSQxID0gLyogaW50NjQgKi9bCisgICAg
ICAgICAgLyogaGkgKi8wLAorICAgICAgICAgIC8qIGxvICovMTAKKyAgICAgICAgXTsKKyAgICAg
ICAgdmFyIGN2dGJsJDEgPSAiMDEyMzQ1Njc4OSI7CisgICAgICAgIGlmIChDYW1sX2ludDY0Lmx0
KHgkMSwgLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAg
ICAgICAgIC8qIGxvICovMAorICAgICAgICAgICAgICBdKSkgeworICAgICAgICAgIHZhciB5JDEg
PSBDYW1sX2ludDY0LmRpc2NhcmRfc2lnbih4JDEpOworICAgICAgICAgIHZhciBtYXRjaCQ1ID0g
Q2FtbF9pbnQ2NC5kaXZfbW9kKHkkMSwgd2Jhc2UkMSk7CisgICAgICAgICAgdmFyIG1hdGNoJDYg
PSBDYW1sX2ludDY0LmRpdl9tb2QoQ2FtbF9pbnQ2NC5hZGQoLyogaW50NjQgKi9bCisgICAgICAg
ICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgICAgICAgLyogbG8gKi84Cisg
ICAgICAgICAgICAgICAgICBdLCBtYXRjaCQ1WzFdKSwgd2Jhc2UkMSk7CisgICAgICAgICAgdmFy
IHF1b3RpZW50JDIgPSBDYW1sX2ludDY0LmFkZChDYW1sX2ludDY0LmFkZCgvKiBpbnQ2NCAqL1sK
KyAgICAgICAgICAgICAgICAgICAgLyogaGkgKi8yMTQ3NDgzNjQsCisgICAgICAgICAgICAgICAg
ICAgIC8qIGxvICovMzQzNTk3MzgzNgorICAgICAgICAgICAgICAgICAgXSwgbWF0Y2gkNVswXSks
IG1hdGNoJDZbMF0pOworICAgICAgICAgIHZhciBtb2R1bHVzJDIgPSBtYXRjaCQ2WzFdOworICAg
ICAgICAgIHMgPSBDYW1sX3N0cmluZy5qc19zdHJpbmdfb2ZfY2hhcihjdnRibCQxLmNoYXJDb2Rl
QXQobW9kdWx1cyQyWzFdIHwgMCkpICsgczsKKyAgICAgICAgICB3aGlsZShDYW1sX2ludDY0Lm5l
cShxdW90aWVudCQyLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIGhpICovMCwK
KyAgICAgICAgICAgICAgICAgIC8qIGxvICovMAorICAgICAgICAgICAgICAgIF0pKSB7CisgICAg
ICAgICAgICB2YXIgbWF0Y2gkNyA9IENhbWxfaW50NjQuZGl2X21vZChxdW90aWVudCQyLCB3YmFz
ZSQxKTsKKyAgICAgICAgICAgIHF1b3RpZW50JDIgPSBtYXRjaCQ3WzBdOworICAgICAgICAgICAg
bW9kdWx1cyQyID0gbWF0Y2gkN1sxXTsKKyAgICAgICAgICAgIHMgPSBDYW1sX3N0cmluZy5qc19z
dHJpbmdfb2ZfY2hhcihjdnRibCQxLmNoYXJDb2RlQXQobW9kdWx1cyQyWzFdIHwgMCkpICsgczsK
KyAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBt
YXRjaCQ4ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHgkMSwgd2Jhc2UkMSk7CisgICAgICAgICAgdmFy
IHF1b3RpZW50JDMgPSBtYXRjaCQ4WzBdOworICAgICAgICAgIHZhciBtb2R1bHVzJDMgPSBtYXRj
aCQ4WzFdOworICAgICAgICAgIHMgPSBDYW1sX3N0cmluZy5qc19zdHJpbmdfb2ZfY2hhcihjdnRi
bCQxLmNoYXJDb2RlQXQobW9kdWx1cyQzWzFdIHwgMCkpICsgczsKKyAgICAgICAgICB3aGlsZShD
YW1sX2ludDY0Lm5lcShxdW90aWVudCQzLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAg
IC8qIGhpICovMCwKKyAgICAgICAgICAgICAgICAgIC8qIGxvICovMAorICAgICAgICAgICAgICAg
IF0pKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkOSA9IENhbWxfaW50NjQuZGl2X21vZChxdW90
aWVudCQzLCB3YmFzZSQxKTsKKyAgICAgICAgICAgIHF1b3RpZW50JDMgPSBtYXRjaCQ5WzBdOwor
ICAgICAgICAgICAgbW9kdWx1cyQzID0gbWF0Y2gkOVsxXTsKKyAgICAgICAgICAgIHMgPSBDYW1s
X3N0cmluZy5qc19zdHJpbmdfb2ZfY2hhcihjdnRibCQxLmNoYXJDb2RlQXQobW9kdWx1cyQzWzFd
IHwgMCkpICsgczsKKyAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IAorICB9CisgIGlmIChmWy8qIHByZWMgKi85XSA+PSAwKSB7CisgICAgZlsvKiBmaWx0ZXIgKi8y
XSA9ICIgIjsKKyAgICB2YXIgbiA9IGZbLyogcHJlYyAqLzldIC0gcy5sZW5ndGggfCAwOworICAg
IGlmIChuID4gMCkgeworICAgICAgcyA9IENhbWxfdXRpbHMucmVwZWF0KG4sICIwIikgKyBzOwor
ICAgIH0KKyAgICAKKyAgfQorICByZXR1cm4gZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7Cit9CisK
K2Z1bmN0aW9uIGNhbWxfZm9ybWF0X2Zsb2F0KGZtdCwgeCkgeworICB2YXIgZiA9IHBhcnNlX2Zv
cm1hdChmbXQpOworICB2YXIgcHJlYyA9IGZbLyogcHJlYyAqLzldIDwgMCA/IDYgOiBmWy8qIHBy
ZWMgKi85XTsKKyAgdmFyIHgkMSA9IHggPCAwID8gKGZbLyogc2lnbiAqLzhdID0gLTEsIC14KSA6
IHg7CisgIHZhciBzID0gIiI7CisgIGlmIChpc05hTih4JDEpKSB7CisgICAgcyA9ICJuYW4iOwor
ICAgIGZbLyogZmlsdGVyICovMl0gPSAiICI7CisgIH0KKyAgZWxzZSBpZiAoaXNGaW5pdGUoeCQx
KSkgeworICAgIHZhciBtYXRjaCA9IGZbLyogY29udiAqLzEwXTsKKyAgICBzd2l0Y2ggKG1hdGNo
KSB7CisgICAgICBjYXNlICJlIiA6IAorICAgICAgICAgIHMgPSB4JDEudG9FeHBvbmVudGlhbChw
cmVjKTsKKyAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoOworICAgICAgICAgIGlmIChzW2kgLSAz
IHwgMF0gPT09ICJlIikgeworICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSAtIDEgfCAwKSAr
ICgiMCIgKyBzLnNsaWNlKGkgLSAxIHwgMCkpOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgImYiIDogCisgICAgICAgICAgcyA9IHgkMS50b0ZpeGVkKHByZWMpOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAiZyIgOiAKKyAgICAgICAgICB2YXIgcHJlYyQx
ID0gcHJlYyAhPT0gMCA/IHByZWMgOiAxOworICAgICAgICAgIHMgPSB4JDEudG9FeHBvbmVudGlh
bChwcmVjJDEgLSAxIHwgMCk7CisgICAgICAgICAgdmFyIGogPSBzLmluZGV4T2YoImUiKTsKKyAg
ICAgICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEgfCAwKTsKKyAgICAgICAgICBpZiAoZXhw
IDwgLTQgfHwgeCQxID49IDFlMjEgfHwgeCQxLnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYyQxKSB7
CisgICAgICAgICAgICB2YXIgaSQxID0gaiAtIDEgfCAwOworICAgICAgICAgICAgd2hpbGUoc1tp
JDFdID09PSAiMCIpIHsKKyAgICAgICAgICAgICAgaSQxID0gaSQxIC0gMSB8IDA7CisgICAgICAg
ICAgICB9OworICAgICAgICAgICAgaWYgKHNbaSQxXSA9PT0gIi4iKSB7CisgICAgICAgICAgICAg
IGkkMSA9IGkkMSAtIDEgfCAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcyA9IHMuc2xp
Y2UoMCwgaSQxICsgMSB8IDApICsgcy5zbGljZShqKTsKKyAgICAgICAgICAgIHZhciBpJDIgPSBz
Lmxlbmd0aDsKKyAgICAgICAgICAgIGlmIChzW2kkMiAtIDMgfCAwXSA9PT0gImUiKSB7CisgICAg
ICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkkMiAtIDEgfCAwKSArICgiMCIgKyBzLnNsaWNlKGkk
MiAtIDEgfCAwKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgcCA9IHByZWMkMTsKKyAgICAgICAgICAg
IGlmIChleHAgPCAwKSB7CisgICAgICAgICAgICAgIHAgPSBwIC0gKGV4cCArIDEgfCAwKSB8IDA7
CisgICAgICAgICAgICAgIHMgPSB4JDEudG9GaXhlZChwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICB3aGlsZShmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgIHMgPSB4JDEudG9GaXhlZChwKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICsocy5sZW5ndGggPiAocHJlYyQxICsgMSB8IDApKTsKKyAgICAgICAgICAgICAgICAgIH0o
KSkgeworICAgICAgICAgICAgICAgIHAgPSBwIC0gMSB8IDA7CisgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocCAhPT0gMCkgeworICAgICAgICAgICAgICB2
YXIgayA9IHMubGVuZ3RoIC0gMSB8IDA7CisgICAgICAgICAgICAgIHdoaWxlKHNba10gPT09ICIw
IikgeworICAgICAgICAgICAgICAgIGsgPSBrIC0gMSB8IDA7CisgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgIGlmIChzW2tdID09PSAiLiIpIHsKKyAgICAgICAgICAgICAgICBrID0gayAt
IDEgfCAwOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGsg
KyAxIHwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICAKKyAgICB9CisgIH0KKyAgZWxz
ZSB7CisgICAgcyA9ICJpbmYiOworICAgIGZbLyogZmlsdGVyICovMl0gPSAiICI7CisgIH0KKyAg
cmV0dXJuIGZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpOworfQorCit2YXIgZmxvYXRfb2Zfc3RyaW5n
ID0gKAorICBmdW5jdGlvbiAocywgY2FtbF9mYWlsd2l0aCkgeworICAgIHZhciByZXMgPSArczsK
KyAgICBpZiAoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkKKyAgICAgICAgcmV0dXJu
IHJlczsKKyAgICBzID0gcy5yZXBsYWNlKC9fL2csICIiKTsKKyAgICByZXMgPSArczsKKyAgICBp
ZiAoKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVz
dChzKSkgeworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKyAgICA7CisgICAgaWYgKC9eICow
eFswLTlhLWZfXStwWystXT9bMC05X10rL2kudGVzdChzKSkgeworICAgICAgICB2YXIgcGlkeCA9
IHMuaW5kZXhPZigncCcpOworICAgICAgICBwaWR4ID0gKHBpZHggPT0gLTEpID8gcy5pbmRleE9m
KCdQJykgOiBwaWR4OworICAgICAgICB2YXIgZXhwID0gK3Muc3Vic3RyaW5nKHBpZHggKyAxKTsK
KyAgICAgICAgcmVzID0gK3Muc3Vic3RyaW5nKDAsIHBpZHgpOworICAgICAgICByZXR1cm4gcmVz
ICogTWF0aC5wb3coMiwgZXhwKTsKKyAgICB9CisgICAgaWYgKC9eXCs/aW5mKGluaXR5KT8kL2ku
dGVzdChzKSkKKyAgICAgICAgcmV0dXJuIEluZmluaXR5OworICAgIGlmICgvXi1pbmYoaW5pdHkp
PyQvaS50ZXN0KHMpKQorICAgICAgICByZXR1cm4gLUluZmluaXR5OworICAgIGNhbWxfZmFpbHdp
dGgoImZsb2F0X29mX3N0cmluZyIpOworfQorCispOworCitmdW5jdGlvbiBjYW1sX2Zsb2F0X29m
X3N0cmluZyhzKSB7CisgIHJldHVybiBDdXJyeS5fMihmbG9hdF9vZl9zdHJpbmcsIHMsIGNhbWxf
ZmFpbHdpdGgpOworfQorCit2YXIgY2FtbF9uYXRpdmVpbnRfZm9ybWF0ID0gY2FtbF9mb3JtYXRf
aW50OworCit2YXIgY2FtbF9pbnQzMl9mb3JtYXQgPSBjYW1sX2Zvcm1hdF9pbnQ7CisKK3ZhciBj
YW1sX2ludDMyX29mX3N0cmluZyA9IGNhbWxfaW50X29mX3N0cmluZzsKKwordmFyIGNhbWxfbmF0
aXZlaW50X29mX3N0cmluZyA9IGNhbWxfaW50X29mX3N0cmluZzsKKworZXhwb3J0cy5jYW1sX2Zv
cm1hdF9mbG9hdCAgICAgICAgPSBjYW1sX2Zvcm1hdF9mbG9hdDsKK2V4cG9ydHMuY2FtbF9mb3Jt
YXRfaW50ICAgICAgICAgID0gY2FtbF9mb3JtYXRfaW50OworZXhwb3J0cy5jYW1sX25hdGl2ZWlu
dF9mb3JtYXQgICAgPSBjYW1sX25hdGl2ZWludF9mb3JtYXQ7CitleHBvcnRzLmNhbWxfaW50MzJf
Zm9ybWF0ICAgICAgICA9IGNhbWxfaW50MzJfZm9ybWF0OworZXhwb3J0cy5jYW1sX2Zsb2F0X29m
X3N0cmluZyAgICAgPSBjYW1sX2Zsb2F0X29mX3N0cmluZzsKK2V4cG9ydHMuY2FtbF9pbnQ2NF9m
b3JtYXQgICAgICAgID0gY2FtbF9pbnQ2NF9mb3JtYXQ7CitleHBvcnRzLmNhbWxfaW50X29mX3N0
cmluZyAgICAgICA9IGNhbWxfaW50X29mX3N0cmluZzsKK2V4cG9ydHMuY2FtbF9pbnQzMl9vZl9z
dHJpbmcgICAgID0gY2FtbF9pbnQzMl9vZl9zdHJpbmc7CitleHBvcnRzLmNhbWxfaW50NjRfb2Zf
c3RyaW5nICAgICA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nOworZXhwb3J0cy5jYW1sX25hdGl2ZWlu
dF9vZl9zdHJpbmcgPSBjYW1sX25hdGl2ZWludF9vZl9zdHJpbmc7CisvKiBmbG9hdF9vZl9zdHJp
bmcgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX2Zvcm1hdC5qcyAv
Ly8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wydj
YW1sX2ludDMyJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8v
Ly8vLyBzdGFydCBvZiBjYW1sX2ludDMyLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3Zh
ciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMiKTsKKworZnVuY3Rpb24gZGl2KHgsIHkpIHsKKyAgaWYgKHkgPT09IDApIHsKKyAgICB0
aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5kaXZpc2lvbl9ieV96ZXJvOworICB9CisgIGVs
c2UgeworICAgIHJldHVybiB4IC8geSB8IDA7CisgIH0KK30KKworZnVuY3Rpb24gbW9kXyh4LCB5
KSB7CisgIGlmICh5ID09PSAwKSB7CisgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMu
ZGl2aXNpb25fYnlfemVybzsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4geCAlIHk7CisgIH0K
K30KKworZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHsKKyAgcmV0dXJuICgoeCAmIDI1NSkgPDwg
OCkgfCAoKHggJiA2NTI4MCkgPj4+IDgpOworfQorCitmdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2Fw
KHgpIHsKKyAgcmV0dXJuICgoeCAmIDI1NSkgPDwgMjQpIHwgKCh4ICYgNjUyODApIDw8IDgpIHwg
KCh4ICYgMTY3MTE2ODApID4+PiA4KSB8ICgoeCAmIDQyNzgxOTAwODApID4+PiAyNCk7Cit9CisK
K3ZhciBpbXVsID0gKCBNYXRoLmltdWwgfHwgZnVuY3Rpb24gKHgseSkgeworICB5IHw9IDA7IHJl
dHVybiAoKCgoeCA+PiAxNikgKiB5KSA8PCAxNikgKyAoeCAmIDB4ZmZmZikgKiB5KXwwOyAKK30K
Kyk7CisKK3ZhciBjYW1sX25hdGl2ZWludF9ic3dhcCA9IGNhbWxfaW50MzJfYnN3YXA7CisKK2V4
cG9ydHMuZGl2ICAgICAgICAgICAgICAgICAgPSBkaXY7CitleHBvcnRzLm1vZF8gICAgICAgICAg
ICAgICAgID0gbW9kXzsKK2V4cG9ydHMuY2FtbF9ic3dhcDE2ICAgICAgICAgPSBjYW1sX2Jzd2Fw
MTY7CitleHBvcnRzLmNhbWxfaW50MzJfYnN3YXAgICAgID0gY2FtbF9pbnQzMl9ic3dhcDsKK2V4
cG9ydHMuY2FtbF9uYXRpdmVpbnRfYnN3YXAgPSBjYW1sX25hdGl2ZWludF9ic3dhcDsKK2V4cG9y
dHMuaW11bCAgICAgICAgICAgICAgICAgPSBpbXVsOworLyogaW11bCBOb3QgYSBwdXJlIG1vZHVs
ZSAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfaW50MzIuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVy
biBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9pbnQ2NCddID0gZnVuY3Rp
b24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9p
bnQ2NC5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9vYmogICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2NhbWxfb2JqIik7Cit2YXIgQ2FtbF9pbnQzMiAgICAgICAgICAg
ICAgPSByZXF1aXJlKCIuL2NhbWxfaW50MzIiKTsKK3ZhciBDYW1sX3V0aWxzICAgICAgICAgICAg
ICA9IHJlcXVpcmUoIi4vY2FtbF91dGlscyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
ID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCit2YXIgbWluX2ludCA9
IC8qIHJlY29yZCAqL1sKKyAgLyogaGkgKi8tMjE0NzQ4MzY0OCwKKyAgLyogbG8gKi8wCitdOwor
Cit2YXIgbWF4X2ludCA9IC8qIHJlY29yZCAqL1sKKyAgLyogaGkgKi8xMzQyMTc3MjcsCisgIC8q
IGxvICovMQorXTsKKwordmFyIG9uZSA9IC8qIHJlY29yZCAqL1sKKyAgLyogaGkgKi8wLAorICAv
KiBsbyAqLzEKK107CisKK3ZhciB6ZXJvID0gLyogcmVjb3JkICovWworICAvKiBoaSAqLzAsCisg
IC8qIGxvICovMAorXTsKKwordmFyIG5lZ19vbmUgPSAvKiByZWNvcmQgKi9bCisgIC8qIGhpICov
LTEsCisgIC8qIGxvICovNDI5NDk2NzI5NQorXTsKKworZnVuY3Rpb24gbmVnX3NpZ25lZCh4KSB7
CisgIHJldHVybiArKCh4ICYgMjE0NzQ4MzY0OCkgIT09IDApOworfQorCitmdW5jdGlvbiBhZGQo
cGFyYW0sIHBhcmFtJDEpIHsKKyAgdmFyIG90aGVyX2xvd18gPSBwYXJhbSQxWy8qIGxvICovMV07
CisgIHZhciB0aGlzX2xvd18gPSBwYXJhbVsvKiBsbyAqLzFdOworICB2YXIgbG8gPSB0aGlzX2xv
d18gKyBvdGhlcl9sb3dfICYgNDI5NDk2NzI5NTsKKyAgdmFyIG92ZXJmbG93ID0gbmVnX3NpZ25l
ZCh0aGlzX2xvd18pICYmIChuZWdfc2lnbmVkKG90aGVyX2xvd18pIHx8ICFuZWdfc2lnbmVkKGxv
KSkgfHwgbmVnX3NpZ25lZChvdGhlcl9sb3dfKSAmJiAhbmVnX3NpZ25lZChsbykgPyAxIDogMDsK
KyAgdmFyIGhpID0gcGFyYW1bLyogaGkgKi8wXSArIHBhcmFtJDFbLyogaGkgKi8wXSArIG92ZXJm
bG93ICYgNDI5NDk2NzI5NTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBo
aSAqL2hpLAorICAgICAgICAgIC8qIGxvICovKGxvID4+PiAwKQorICAgICAgICBdOworfQorCitm
dW5jdGlvbiBub3QocGFyYW0pIHsKKyAgdmFyIGhpID0gcGFyYW1bLyogaGkgKi8wXSBeIC0xOwor
ICB2YXIgbG8gPSBwYXJhbVsvKiBsbyAqLzFdIF4gLTE7CisgIHJldHVybiAvKiByZWNvcmQgKi9b
CisgICAgICAgICAgLyogaGkgKi9oaSwKKyAgICAgICAgICAvKiBsbyAqLyhsbyA+Pj4gMCkKKyAg
ICAgICAgXTsKK30KKworZnVuY3Rpb24gZXEoeCwgeSkgeworICBpZiAoeFsvKiBoaSAqLzBdID09
PSB5Wy8qIGhpICovMF0pIHsKKyAgICByZXR1cm4gKyh4Wy8qIGxvICovMV0gPT09IHlbLyogbG8g
Ki8xXSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgfQorfQor
CitmdW5jdGlvbiBuZWcoeCkgeworICBpZiAoZXEoeCwgbWluX2ludCkpIHsKKyAgICByZXR1cm4g
bWluX2ludDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYWRkKG5vdCh4KSwgb25lKTsKKyAg
fQorfQorCitmdW5jdGlvbiBzdWIoeCwgeSkgeworICByZXR1cm4gYWRkKHgsIG5lZyh5KSk7Cit9
CisKK2Z1bmN0aW9uIGxzbF8oeCwgbnVtQml0cykgeworICB2YXIgbG8gPSB4Wy8qIGxvICovMV07
CisgIGlmIChudW1CaXRzKSB7CisgICAgaWYgKG51bUJpdHMgPj0gMzIpIHsKKyAgICAgIHJldHVy
biAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICovKGxvIDw8IChudW1CaXRzIC0g
MzIgfCAwKSksCisgICAgICAgICAgICAgIC8qIGxvICovMAorICAgICAgICAgICAgXTsKKyAgICB9
CisgICAgZWxzZSB7CisgICAgICB2YXIgaGkgPSAobG8gPj4+ICgzMiAtIG51bUJpdHMgfCAwKSkg
fCAoeFsvKiBoaSAqLzBdIDw8IG51bUJpdHMpOworICAgICAgcmV0dXJuIC8qIHJlY29yZCAqL1sK
KyAgICAgICAgICAgICAgLyogaGkgKi9oaSwKKyAgICAgICAgICAgICAgLyogbG8gKi8oKGxvIDw8
IG51bUJpdHMpID4+PiAwKQorICAgICAgICAgICAgXTsKKyAgICB9CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIHg7CisgIH0KK30KKworZnVuY3Rpb24gbHNyXyh4LCBudW1CaXRzKSB7CisgIHZh
ciBoaSA9IHhbLyogaGkgKi8wXTsKKyAgaWYgKG51bUJpdHMpIHsKKyAgICB2YXIgb2Zmc2V0ID0g
bnVtQml0cyAtIDMyIHwgMDsKKyAgICBpZiAob2Zmc2V0KSB7CisgICAgICBpZiAob2Zmc2V0ID4g
MCkgeworICAgICAgICB2YXIgbG8gPSAoaGkgPj4+IG9mZnNldCk7CisgICAgICAgIHJldHVybiAv
KiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAg
IC8qIGxvICovKGxvID4+PiAwKQorICAgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHZhciBoaSQxID0gKGhpID4+PiBudW1CaXRzKTsKKyAgICAgICAgdmFyIGxv
JDEgPSAoaGkgPDwgKC1vZmZzZXQgfCAwKSkgfCAoeFsvKiBsbyAqLzFdID4+PiBudW1CaXRzKTsK
KyAgICAgICAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL2hp
JDEsCisgICAgICAgICAgICAgICAgLyogbG8gKi8obG8kMSA+Pj4gMCkKKyAgICAgICAgICAgICAg
XTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogcmVjb3JkICov
WworICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAgIC8qIGxvICovKGhpID4+
PiAwKQorICAgICAgICAgICAgXTsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHg7
CisgIH0KK30KKworZnVuY3Rpb24gYXNyXyh4LCBudW1CaXRzKSB7CisgIHZhciBoaSA9IHhbLyog
aGkgKi8wXTsKKyAgaWYgKG51bUJpdHMpIHsKKyAgICBpZiAobnVtQml0cyA8IDMyKSB7CisgICAg
ICB2YXIgaGkkMSA9IChoaSA+PiBudW1CaXRzKTsKKyAgICAgIHZhciBsbyA9IChoaSA8PCAoMzIg
LSBudW1CaXRzIHwgMCkpIHwgKHhbLyogbG8gKi8xXSA+Pj4gbnVtQml0cyk7CisgICAgICByZXR1
cm4gLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiBoaSAqL2hpJDEsCisgICAgICAgICAg
ICAgIC8qIGxvICovKGxvID4+PiAwKQorICAgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICB2YXIgbG8kMSA9IChoaSA+PiAobnVtQml0cyAtIDMyIHwgMCkpOworICAgICAgcmV0
dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi9oaSA+PSAwID8gMCA6IC0x
LAorICAgICAgICAgICAgICAvKiBsbyAqLyhsbyQxID4+PiAwKQorICAgICAgICAgICAgXTsKKyAg
ICB9CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHg7CisgIH0KK30KKworZnVuY3Rpb24gaXNf
emVybyhwYXJhbSkgeworICBpZiAocGFyYW1bLyogaGkgKi8wXSAhPT0gMCB8fCBwYXJhbVsvKiBs
byAqLzFdICE9PSAwKSB7CisgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgIH0KK30KKworZnVuY3Rpb24gbXVsKF90aGlzLCBf
b3RoZXIpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBvdGhlciA9IF9vdGhlcjsKKyAgICB2
YXIgJCR0aGlzID0gX3RoaXM7CisgICAgdmFyIGV4aXQgPSAwOworICAgIHZhciBsbzsKKyAgICB2
YXIgdGhpc19oaSA9ICQkdGhpc1svKiBoaSAqLzBdOworICAgIHZhciBleGl0JDEgPSAwOworICAg
IHZhciBleGl0JDIgPSAwOworICAgIHZhciBleGl0JDMgPSAwOworICAgIGlmICh0aGlzX2hpICE9
PSAwKSB7CisgICAgICBleGl0JDMgPSA0OworICAgIH0KKyAgICBlbHNlIGlmICgkJHRoaXNbLyog
bG8gKi8xXSAhPT0gMCkgeworICAgICAgZXhpdCQzID0gNDsKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICByZXR1cm4gemVybzsKKyAgICB9CisgICAgaWYgKGV4aXQkMyA9PT0gNCkgeworICAgICAg
aWYgKG90aGVyWy8qIGhpICovMF0gIT09IDApIHsKKyAgICAgICAgZXhpdCQyID0gMzsKKyAgICAg
IH0KKyAgICAgIGVsc2UgaWYgKG90aGVyWy8qIGxvICovMV0gIT09IDApIHsKKyAgICAgICAgZXhp
dCQyID0gMzsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gemVybzsKKyAg
ICAgIH0KKyAgICB9CisgICAgaWYgKGV4aXQkMiA9PT0gMykgeworICAgICAgaWYgKHRoaXNfaGkg
IT09IC0yMTQ3NDgzNjQ4KSB7CisgICAgICAgIGV4aXQkMSA9IDI7CisgICAgICB9CisgICAgICBl
bHNlIGlmICgkJHRoaXNbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICBleGl0JDEgPSAyOwor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGxvID0gb3RoZXJbLyogbG8gKi8xXTsKKyAg
ICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGlmIChleGl0JDEgPT09IDIpIHsK
KyAgICAgIHZhciBvdGhlcl9oaSA9IG90aGVyWy8qIGhpICovMF07CisgICAgICB2YXIgbG8kMSA9
ICQkdGhpc1svKiBsbyAqLzFdOworICAgICAgdmFyIGV4aXQkNCA9IDA7CisgICAgICBpZiAob3Ro
ZXJfaGkgIT09IC0yMTQ3NDgzNjQ4KSB7CisgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICB9Cisg
ICAgICBlbHNlIGlmIChvdGhlclsvKiBsbyAqLzFdICE9PSAwKSB7CisgICAgICAgIGV4aXQkNCA9
IDM7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgbG8gPSBsbyQxOworICAgICAgICBl
eGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGlmIChleGl0JDQgPT09IDMpIHsKKyAgICAgICAgdmFy
IG90aGVyX2xvID0gb3RoZXJbLyogbG8gKi8xXTsKKyAgICAgICAgaWYgKHRoaXNfaGkgPCAwKSB7
CisgICAgICAgICAgaWYgKG90aGVyX2hpIDwgMCkgeworICAgICAgICAgICAgX290aGVyID0gbmVn
KG90aGVyKTsKKyAgICAgICAgICAgIF90aGlzID0gbmVnKCQkdGhpcyk7CisgICAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICByZXR1cm4gbmVnKG11bChuZWcoJCR0aGlzKSwgb3RoZXIpKTsKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAob3RoZXJfaGkgPCAwKSB7CisgICAgICAg
ICAgcmV0dXJuIG5lZyhtdWwoJCR0aGlzLCBuZWcob3RoZXIpKSk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgdmFyIGE0OCA9ICh0aGlzX2hpID4+PiAxNik7CisgICAgICAg
ICAgdmFyIGEzMiA9IHRoaXNfaGkgJiA2NTUzNTsKKyAgICAgICAgICB2YXIgYTE2ID0gKGxvJDEg
Pj4+IDE2KTsKKyAgICAgICAgICB2YXIgYTAwID0gbG8kMSAmIDY1NTM1OworICAgICAgICAgIHZh
ciBiNDggPSAob3RoZXJfaGkgPj4+IDE2KTsKKyAgICAgICAgICB2YXIgYjMyID0gb3RoZXJfaGkg
JiA2NTUzNTsKKyAgICAgICAgICB2YXIgYjE2ID0gKG90aGVyX2xvID4+PiAxNik7CisgICAgICAg
ICAgdmFyIGIwMCA9IG90aGVyX2xvICYgNjU1MzU7CisgICAgICAgICAgdmFyIGM0OCA9IDA7Cisg
ICAgICAgICAgdmFyIGMzMiA9IDA7CisgICAgICAgICAgdmFyIGMxNiA9IDA7CisgICAgICAgICAg
dmFyIGMwMCA9IGEwMCAqIGIwMDsKKyAgICAgICAgICBjMTYgPSAoYzAwID4+PiAxNikgKyBhMTYg
KiBiMDA7CisgICAgICAgICAgYzMyID0gKGMxNiA+Pj4gMTYpOworICAgICAgICAgIGMxNiA9IChj
MTYgJiA2NTUzNSkgKyBhMDAgKiBiMTY7CisgICAgICAgICAgYzMyID0gYzMyICsgKGMxNiA+Pj4g
MTYpICsgYTMyICogYjAwOworICAgICAgICAgIGM0OCA9IChjMzIgPj4+IDE2KTsKKyAgICAgICAg
ICBjMzIgPSAoYzMyICYgNjU1MzUpICsgYTE2ICogYjE2OworICAgICAgICAgIGM0OCArPSAoYzMy
ID4+PiAxNik7CisgICAgICAgICAgYzMyID0gKGMzMiAmIDY1NTM1KSArIGEwMCAqIGIzMjsKKyAg
ICAgICAgICBjNDggKz0gKGMzMiA+Pj4gMTYpOworICAgICAgICAgIGMzMiA9IGMzMiAmIDY1NTM1
OworICAgICAgICAgIGM0OCA9IGM0OCArIChhNDggKiBiMDAgKyBhMzIgKiBiMTYgKyBhMTYgKiBi
MzIgKyBhMDAgKiBiNDgpICYgNjU1MzU7CisgICAgICAgICAgdmFyIGhpID0gYzMyIHwgKGM0OCA8
PCAxNik7CisgICAgICAgICAgdmFyIGxvJDIgPSBjMDAgJiA2NTUzNSB8ICgoYzE2ICYgNjU1MzUp
IDw8IDE2KTsKKyAgICAgICAgICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgICAgICAg
ICAgLyogaGkgKi9oaSwKKyAgICAgICAgICAgICAgICAgIC8qIGxvICovKGxvJDIgPj4+IDApCisg
ICAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgCisgICAgfQorICAg
IGlmIChleGl0ID09PSAxKSB7CisgICAgICBpZiAoKGxvICYgMSkgPT09IDApIHsKKyAgICAgICAg
cmV0dXJuIHplcm87CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG1pbl9p
bnQ7CisgICAgICB9CisgICAgfQorICAgIAorICB9OworfQorCitmdW5jdGlvbiBzd2FwKHBhcmFt
KSB7CisgIHZhciBoaSA9IENhbWxfaW50MzIuY2FtbF9pbnQzMl9ic3dhcChwYXJhbVsvKiBsbyAq
LzFdKTsKKyAgdmFyIGxvID0gQ2FtbF9pbnQzMi5jYW1sX2ludDMyX2Jzd2FwKHBhcmFtWy8qIGhp
ICovMF0pOworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGhpICovaGksCisg
ICAgICAgICAgLyogbG8gKi8obG8gPj4+IDApCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHhv
cihwYXJhbSwgcGFyYW0kMSkgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8q
IGhpICovcGFyYW1bLyogaGkgKi8wXSBeIHBhcmFtJDFbLyogaGkgKi8wXSwKKyAgICAgICAgICAv
KiBsbyAqLygocGFyYW1bLyogbG8gKi8xXSBeIHBhcmFtJDFbLyogbG8gKi8xXSkgPj4+IDApCisg
ICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIG9yXyhwYXJhbSwgcGFyYW0kMSkgeworICByZXR1cm4g
LyogcmVjb3JkICovWworICAgICAgICAgIC8qIGhpICovcGFyYW1bLyogaGkgKi8wXSB8IHBhcmFt
JDFbLyogaGkgKi8wXSwKKyAgICAgICAgICAvKiBsbyAqLygocGFyYW1bLyogbG8gKi8xXSB8IHBh
cmFtJDFbLyogbG8gKi8xXSkgPj4+IDApCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGFuZF8o
cGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBo
aSAqL3BhcmFtWy8qIGhpICovMF0gJiBwYXJhbSQxWy8qIGhpICovMF0sCisgICAgICAgICAgLyog
bG8gKi8oKHBhcmFtWy8qIGxvICovMV0gJiBwYXJhbSQxWy8qIGxvICovMV0pID4+PiAwKQorICAg
ICAgICBdOworfQorCitmdW5jdGlvbiBnZShwYXJhbSwgcGFyYW0kMSkgeworICB2YXIgb3RoZXJf
aGkgPSBwYXJhbSQxWy8qIGhpICovMF07CisgIHZhciBoaSA9IHBhcmFtWy8qIGhpICovMF07Cisg
IGlmIChoaSA+IG90aGVyX2hpKSB7CisgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICB9CisgIGVs
c2UgaWYgKGhpIDwgb3RoZXJfaGkpIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiArKHBhcmFtWy8qIGxvICovMV0gPj0gcGFyYW0kMVsvKiBsbyAq
LzFdKTsKKyAgfQorfQorCitmdW5jdGlvbiBuZXEoeCwgeSkgeworICByZXR1cm4gMSAtIGVxKHgs
IHkpOworfQorCitmdW5jdGlvbiBsdCh4LCB5KSB7CisgIHJldHVybiAxIC0gZ2UoeCwgeSk7Cit9
CisKK2Z1bmN0aW9uIGd0KHgsIHkpIHsKKyAgaWYgKHhbLyogaGkgKi8wXSA+IHlbLyogaGkgKi8w
XSkgeworICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgfQorICBlbHNlIGlmICh4Wy8qIGhpICov
MF0gPCB5Wy8qIGhpICovMF0pIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9CisgIGVs
c2UgeworICAgIHJldHVybiArKHhbLyogbG8gKi8xXSA+IHlbLyogbG8gKi8xXSk7CisgIH0KK30K
KworZnVuY3Rpb24gbGUoeCwgeSkgeworICByZXR1cm4gMSAtIGd0KHgsIHkpOworfQorCitmdW5j
dGlvbiB0b19mbG9hdChwYXJhbSkgeworICByZXR1cm4gcGFyYW1bLyogaGkgKi8wXSAqIDQyOTQ5
NjcyOTYgKyBwYXJhbVsvKiBsbyAqLzFdOworfQorCit2YXIgdHdvX3B0cl8zMl9kYmwgPSBNYXRo
LnBvdygyLCAzMik7CisKK3ZhciB0d29fcHRyXzYzX2RibCA9IE1hdGgucG93KDIsIDYzKTsKKwor
dmFyIG5lZ190d29fcHRyXzYzID0gLU1hdGgucG93KDIsIDYzKTsKKworZnVuY3Rpb24gb2ZfZmxv
YXQoeCkgeworICBpZiAoaXNOYU4oeCkgfHwgIWlzRmluaXRlKHgpKSB7CisgICAgcmV0dXJuIHpl
cm87CisgIH0KKyAgZWxzZSBpZiAoeCA8PSBuZWdfdHdvX3B0cl82MykgeworICAgIHJldHVybiBt
aW5faW50OworICB9CisgIGVsc2UgaWYgKHggKyAxID49IHR3b19wdHJfNjNfZGJsKSB7CisgICAg
cmV0dXJuIG1heF9pbnQ7CisgIH0KKyAgZWxzZSBpZiAoeCA8IDApIHsKKyAgICByZXR1cm4gbmVn
KG9mX2Zsb2F0KC14KSk7CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGhpID0geCAvIHR3b19wdHJf
MzJfZGJsIHwgMDsKKyAgICB2YXIgbG8gPSB4ICUgdHdvX3B0cl8zMl9kYmwgfCAwOworICAgIHJl
dHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgICAg
LyogbG8gKi8obG8gPj4+IDApCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBkaXYo
X3NlbGYsIF9vdGhlcikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG90aGVyID0gX290aGVy
OworICAgIHZhciBzZWxmID0gX3NlbGY7CisgICAgdmFyIHNlbGZfaGkgPSBzZWxmWy8qIGhpICov
MF07CisgICAgdmFyIGV4aXQgPSAwOworICAgIHZhciBleGl0JDEgPSAwOworICAgIGlmIChvdGhl
clsvKiBoaSAqLzBdICE9PSAwKSB7CisgICAgICBleGl0JDEgPSAyOworICAgIH0KKyAgICBlbHNl
IGlmIChvdGhlclsvKiBsbyAqLzFdICE9PSAwKSB7CisgICAgICBleGl0JDEgPSAyOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmRpdmlzaW9u
X2J5X3plcm87CisgICAgfQorICAgIGlmIChleGl0JDEgPT09IDIpIHsKKyAgICAgIGlmIChzZWxm
X2hpICE9PSAtMjE0NzQ4MzY0OCkgeworICAgICAgICBpZiAoc2VsZl9oaSAhPT0gMCkgeworICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNlbGZbLyogbG8g
Ki8xXSAhPT0gMCkgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiB6ZXJvOworICAgICAgICB9CisgICAgICB9CisgICAgICBl
bHNlIGlmIChzZWxmWy8qIGxvICovMV0gIT09IDApIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAg
ICB9CisgICAgICBlbHNlIGlmIChlcShvdGhlciwgb25lKSB8fCBlcShvdGhlciwgbmVnX29uZSkp
IHsKKyAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgICB9CisgICAgICBlbHNlIGlmIChlcShvdGhl
ciwgbWluX2ludCkpIHsKKyAgICAgICAgcmV0dXJuIG9uZTsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICB2YXIgb3RoZXJfaGkgPSBvdGhlclsvKiBoaSAqLzBdOworICAgICAgICB2YXIg
aGFsZl90aGlzID0gYXNyXyhzZWxmLCAxKTsKKyAgICAgICAgdmFyIGFwcHJveCA9IGxzbF8oZGl2
KGhhbGZfdGhpcywgb3RoZXIpLCAxKTsKKyAgICAgICAgdmFyIGV4aXQkMiA9IDA7CisgICAgICAg
IGlmIChhcHByb3hbLyogaGkgKi8wXSAhPT0gMCkgeworICAgICAgICAgIGV4aXQkMiA9IDM7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYXBwcm94Wy8qIGxvICovMV0gIT09IDApIHsKKyAg
ICAgICAgICBleGl0JDIgPSAzOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG90aGVyX2hp
IDwgMCkgeworICAgICAgICAgIHJldHVybiBvbmU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgcmV0dXJuIG5lZyhvbmUpOworICAgICAgICB9CisgICAgICAgIGlmIChleGl0
JDIgPT09IDMpIHsKKyAgICAgICAgICB2YXIgeSA9IG11bChvdGhlciwgYXBwcm94KTsKKyAgICAg
ICAgICB2YXIgcmVtID0gYWRkKHNlbGYsIG5lZyh5KSk7CisgICAgICAgICAgcmV0dXJuIGFkZChh
cHByb3gsIGRpdihyZW0sIG90aGVyKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICB9Cisg
ICAgfQorICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICB2YXIgb3RoZXJfaGkkMSA9IG90aGVy
Wy8qIGhpICovMF07CisgICAgICB2YXIgZXhpdCQzID0gMDsKKyAgICAgIGlmIChvdGhlcl9oaSQx
ICE9PSAtMjE0NzQ4MzY0OCkgeworICAgICAgICBleGl0JDMgPSAyOworICAgICAgfQorICAgICAg
ZWxzZSBpZiAob3RoZXJbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICBleGl0JDMgPSAyOwor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiB6ZXJvOworICAgICAgfQorICAg
ICAgaWYgKGV4aXQkMyA9PT0gMikgeworICAgICAgICBpZiAoc2VsZl9oaSA8IDApIHsKKyAgICAg
ICAgICBpZiAob3RoZXJfaGkkMSA8IDApIHsKKyAgICAgICAgICAgIF9vdGhlciA9IG5lZyhvdGhl
cik7CisgICAgICAgICAgICBfc2VsZiA9IG5lZyhzZWxmKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHJldHVybiBuZWcoZGl2KG5lZyhzZWxmKSwgb3RoZXIpKTsKKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAob3RoZXJfaGkkMSA8IDApIHsKKyAgICAgICAgICByZXR1
cm4gbmVnKGRpdihzZWxmLCBuZWcob3RoZXIpKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgdmFyIHJlcyA9IHplcm87CisgICAgICAgICAgdmFyIHJlbSQxID0gc2VsZjsK
KyAgICAgICAgICB3aGlsZShnZShyZW0kMSwgb3RoZXIpKSB7CisgICAgICAgICAgICB2YXIgYXBw
cm94JDEgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKHRvX2Zsb2F0KHJlbSQxKSAvIHRvX2Zsb2F0
KG90aGVyKSkpOworICAgICAgICAgICAgdmFyIGxvZzIgPSBNYXRoLmNlaWwoTWF0aC5sb2coYXBw
cm94JDEpIC8gTWF0aC5MTjIpOworICAgICAgICAgICAgdmFyIGRlbHRhID0gbG9nMiA8PSA0OCA/
IDEgOiBNYXRoLnBvdygyLCBsb2cyIC0gNDgpOworICAgICAgICAgICAgdmFyIGFwcHJveFJlcyA9
IG9mX2Zsb2F0KGFwcHJveCQxKTsKKyAgICAgICAgICAgIHZhciBhcHByb3hSZW0gPSBtdWwoYXBw
cm94UmVzLCBvdGhlcik7CisgICAgICAgICAgICB3aGlsZShhcHByb3hSZW1bLyogaGkgKi8wXSA8
IDAgfHwgZ3QoYXBwcm94UmVtLCByZW0kMSkpIHsKKyAgICAgICAgICAgICAgYXBwcm94JDEgLT0g
ZGVsdGE7CisgICAgICAgICAgICAgIGFwcHJveFJlcyA9IG9mX2Zsb2F0KGFwcHJveCQxKTsKKyAg
ICAgICAgICAgICAgYXBwcm94UmVtID0gbXVsKGFwcHJveFJlcywgb3RoZXIpOworICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIGlmIChpc196ZXJvKGFwcHJveFJlcykpIHsKKyAgICAgICAgICAg
ICAgYXBwcm94UmVzID0gb25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzID0gYWRk
KHJlcywgYXBwcm94UmVzKTsKKyAgICAgICAgICAgIHJlbSQxID0gYWRkKHJlbSQxLCBuZWcoYXBw
cm94UmVtKSk7CisgICAgICAgICAgfTsKKyAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB9
CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgCisgIH07Cit9CisKK2Z1bmN0aW9uIG1vZF8o
c2VsZiwgb3RoZXIpIHsKKyAgdmFyIHkgPSBtdWwoZGl2KHNlbGYsIG90aGVyKSwgb3RoZXIpOwor
ICByZXR1cm4gYWRkKHNlbGYsIG5lZyh5KSk7Cit9CisKK2Z1bmN0aW9uIGRpdl9tb2Qoc2VsZiwg
b3RoZXIpIHsKKyAgdmFyIHF1b3RpZW50ID0gZGl2KHNlbGYsIG90aGVyKTsKKyAgdmFyIHkgPSBt
dWwocXVvdGllbnQsIG90aGVyKTsKKyAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgIHF1
b3RpZW50LAorICAgICAgICAgIGFkZChzZWxmLCBuZWcoeSkpCisgICAgICAgIF07Cit9CisKK2Z1
bmN0aW9uIGNvbXBhcmUoc2VsZiwgb3RoZXIpIHsKKyAgdmFyIHYgPSBDYW1sX29iai5jYW1sX25h
dGl2ZWludF9jb21wYXJlKHNlbGZbLyogaGkgKi8wXSwgb3RoZXJbLyogaGkgKi8wXSk7CisgIGlm
ICh2KSB7CisgICAgcmV0dXJuIHY7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfb2Jq
LmNhbWxfbmF0aXZlaW50X2NvbXBhcmUoc2VsZlsvKiBsbyAqLzFdLCBvdGhlclsvKiBsbyAqLzFd
KTsKKyAgfQorfQorCitmdW5jdGlvbiBvZl9pbnQzMihsbykgeworICByZXR1cm4gLyogcmVjb3Jk
ICovWworICAgICAgICAgIC8qIGhpICovbG8gPCAwID8gLTEgOiAwLAorICAgICAgICAgIC8qIGxv
ICovKGxvID4+PiAwKQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0b19pbnQzMih4KSB7Cisg
IHJldHVybiB4Wy8qIGxvICovMV0gfCAwOworfQorCitmdW5jdGlvbiB0b19oZXgoeCkgeworICB2
YXIgYXV4ID0gZnVuY3Rpb24gKHYpIHsKKyAgICByZXR1cm4gKHYgPj4+IDApLnRvU3RyaW5nKDE2
KTsKKyAgfTsKKyAgdmFyIG1hdGNoID0geFsvKiBoaSAqLzBdOworICB2YXIgbWF0Y2gkMSA9IHhb
LyogbG8gKi8xXTsKKyAgdmFyIGV4aXQgPSAwOworICBpZiAobWF0Y2ggIT09IDApIHsKKyAgICBl
eGl0ID0gMTsKKyAgfQorICBlbHNlIGlmIChtYXRjaCQxICE9PSAwKSB7CisgICAgZXhpdCA9IDE7
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuICIwIjsKKyAgfQorICBpZiAoZXhpdCA9PT0gMSkg
eworICAgIGlmIChtYXRjaCQxICE9PSAwKSB7CisgICAgICBpZiAobWF0Y2ggIT09IDApIHsKKyAg
ICAgICAgdmFyIGxvID0gYXV4KHhbLyogbG8gKi8xXSk7CisgICAgICAgIHZhciBwYWQgPSA4IC0g
bG8ubGVuZ3RoIHwgMDsKKyAgICAgICAgaWYgKHBhZCA8PSAwKSB7CisgICAgICAgICAgcmV0dXJu
IGF1eCh4Wy8qIGhpICovMF0pICsgbG87CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIGF1eCh4Wy8qIGhpICovMF0pICsgKENhbWxfdXRpbHMucmVwZWF0KHBhZCwg
IjAiKSArIGxvKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJl
dHVybiBhdXgoeFsvKiBsbyAqLzFdKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gYXV4KHhbLyogaGkgKi8wXSkgKyAiMDAwMDAwMDAiOworICAgIH0KKyAgfQorICAK
K30KKworZnVuY3Rpb24gZGlzY2FyZF9zaWduKHgpIHsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sK
KyAgICAgICAgICAvKiBoaSAqLzIxNDc0ODM2NDcgJiB4Wy8qIGhpICovMF0sCisgICAgICAgICAg
LyogbG8gKi94Wy8qIGxvICovMV0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZmxvYXRfb2Zf
Yml0cyh4KSB7CisgIHZhciBpbnQzMiA9IG5ldyBJbnQzMkFycmF5KC8qIGFycmF5ICovWworICAg
ICAgICB4Wy8qIGxvICovMV0sCisgICAgICAgIHhbLyogaGkgKi8wXQorICAgICAgXSk7CisgIHJl
dHVybiBuZXcgRmxvYXQ2NEFycmF5KGludDMyLmJ1ZmZlcilbMF07Cit9CisKK2Z1bmN0aW9uIGJp
dHNfb2ZfZmxvYXQoeCkgeworICB2YXIgdG9fbmF0ID0gZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1
cm4geDsKKyAgfTsKKyAgdmFyIHUgPSBuZXcgRmxvYXQ2NEFycmF5KC8qIGZsb2F0IGFycmF5ICov
W3hdKTsKKyAgdmFyIGludDMyID0gbmV3IEludDMyQXJyYXkodS5idWZmZXIpOworICB2YXIgaGkg
PSB0b19uYXQoaW50MzJbMV0pOworICB2YXIgbG8gPSB0b19uYXQoaW50MzJbMF0pOworICByZXR1
cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGhpICovaGksCisgICAgICAgICAgLyogbG8g
Ki8obG8gPj4+IDApCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGdldDY0KHMsIGkpIHsKKyAg
dmFyIGhpID0gKHMuY2hhckNvZGVBdChpICsgNCB8IDApIDw8IDMyKSB8IChzLmNoYXJDb2RlQXQo
aSArIDUgfCAwKSA8PCA0MCkgfCAocy5jaGFyQ29kZUF0KGkgKyA2IHwgMCkgPDwgNDgpIHwgKHMu
Y2hhckNvZGVBdChpICsgNyB8IDApIDw8IDU2KTsKKyAgdmFyIGxvID0gcy5jaGFyQ29kZUF0KGkp
IHwgKHMuY2hhckNvZGVBdChpICsgMSB8IDApIDw8IDgpIHwgKHMuY2hhckNvZGVBdChpICsgMiB8
IDApIDw8IDE2KSB8IChzLmNoYXJDb2RlQXQoaSArIDMgfCAwKSA8PCAyNCk7CisgIHJldHVybiAv
KiByZWNvcmQgKi9bCisgICAgICAgICAgLyogaGkgKi9oaSwKKyAgICAgICAgICAvKiBsbyAqLyhs
byA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZXhwb3J0cy5taW5faW50ICAgICAgID0gbWluX2lu
dDsKK2V4cG9ydHMubWF4X2ludCAgICAgICA9IG1heF9pbnQ7CitleHBvcnRzLm9uZSAgICAgICAg
ICAgPSBvbmU7CitleHBvcnRzLnplcm8gICAgICAgICAgPSB6ZXJvOworZXhwb3J0cy5ub3QgICAg
ICAgICAgID0gbm90OworZXhwb3J0cy5vZl9pbnQzMiAgICAgID0gb2ZfaW50MzI7CitleHBvcnRz
LnRvX2ludDMyICAgICAgPSB0b19pbnQzMjsKK2V4cG9ydHMuYWRkICAgICAgICAgICA9IGFkZDsK
K2V4cG9ydHMubmVnICAgICAgICAgICA9IG5lZzsKK2V4cG9ydHMuc3ViICAgICAgICAgICA9IHN1
YjsKK2V4cG9ydHMubHNsXyAgICAgICAgICA9IGxzbF87CitleHBvcnRzLmxzcl8gICAgICAgICAg
PSBsc3JfOworZXhwb3J0cy5hc3JfICAgICAgICAgID0gYXNyXzsKK2V4cG9ydHMuaXNfemVybyAg
ICAgICA9IGlzX3plcm87CitleHBvcnRzLm11bCAgICAgICAgICAgPSBtdWw7CitleHBvcnRzLnhv
ciAgICAgICAgICAgPSB4b3I7CitleHBvcnRzLm9yXyAgICAgICAgICAgPSBvcl87CitleHBvcnRz
LmFuZF8gICAgICAgICAgPSBhbmRfOworZXhwb3J0cy5zd2FwICAgICAgICAgID0gc3dhcDsKK2V4
cG9ydHMuZ2UgICAgICAgICAgICA9IGdlOworZXhwb3J0cy5lcSAgICAgICAgICAgID0gZXE7Citl
eHBvcnRzLm5lcSAgICAgICAgICAgPSBuZXE7CitleHBvcnRzLmx0ICAgICAgICAgICAgPSBsdDsK
K2V4cG9ydHMuZ3QgICAgICAgICAgICA9IGd0OworZXhwb3J0cy5sZSAgICAgICAgICAgID0gbGU7
CitleHBvcnRzLnRvX2Zsb2F0ICAgICAgPSB0b19mbG9hdDsKK2V4cG9ydHMub2ZfZmxvYXQgICAg
ICA9IG9mX2Zsb2F0OworZXhwb3J0cy5kaXYgICAgICAgICAgID0gZGl2OworZXhwb3J0cy5tb2Rf
ICAgICAgICAgID0gbW9kXzsKK2V4cG9ydHMuZGl2X21vZCAgICAgICA9IGRpdl9tb2Q7CitleHBv
cnRzLmNvbXBhcmUgICAgICAgPSBjb21wYXJlOworZXhwb3J0cy50b19oZXggICAgICAgID0gdG9f
aGV4OworZXhwb3J0cy5kaXNjYXJkX3NpZ24gID0gZGlzY2FyZF9zaWduOworZXhwb3J0cy5mbG9h
dF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0czsKK2V4cG9ydHMuYml0c19vZl9mbG9hdCA9IGJpdHNf
b2ZfZmxvYXQ7CitleHBvcnRzLmdldDY0ICAgICAgICAgPSBnZXQ2NDsKKy8qIHR3b19wdHJfMzJf
ZGJsIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9pbnQ2NC5qcyAv
Ly8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wydj
YW1saW50ZXJuYWxGb3JtYXRCYXNpY3MnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9y
dHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5qcyAv
Ly8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQmxvY2sgPSByZXF1aXJlKCIuL2Jsb2NrIik7
CisKK2Z1bmN0aW9uIGVyYXNlX3JlbChwYXJhbSkgeworICBpZiAodHlwZW9mIHBhcmFtID09PSAi
bnVtYmVyIikgeworICAgIHJldHVybiAvKiBFbmRfb2ZfZm10dHkgKi8wOworICB9CisgIGVsc2Ug
eworICAgIHN3aXRjaCAocGFyYW0udGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAg
ICAgcmV0dXJuIC8qIENoYXJfdHkgKi9CbG9jay5fXygwLCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0p
OworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIC8qIFN0cmluZ190eSAqL0Jsb2Nr
Ll9fKDEsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAg
ICByZXR1cm4gLyogSW50X3R5ICovQmxvY2suX18oMiwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsK
KyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiAvKiBJbnQzMl90eSAqL0Jsb2NrLl9f
KDMsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICBy
ZXR1cm4gLyogTmF0aXZlaW50X3R5ICovQmxvY2suX18oNCwgW2VyYXNlX3JlbChwYXJhbVswXSld
KTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiAvKiBJbnQ2NF90eSAqL0Jsb2Nr
Ll9fKDUsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAg
ICByZXR1cm4gLyogRmxvYXRfdHkgKi9CbG9jay5fXyg2LCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0p
OworICAgICAgY2FzZSA3IDogCisgICAgICAgICAgcmV0dXJuIC8qIEJvb2xfdHkgKi9CbG9jay5f
Xyg3LCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSA4IDogCisgICAgICAgICAg
cmV0dXJuIC8qIEZvcm1hdF9hcmdfdHkgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAg
ICAgIHBhcmFtWzBdLAorICAgICAgICAgICAgICAgICAgICBlcmFzZV9yZWwocGFyYW1bMV0pCisg
ICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgOSA6IAorICAgICAgICAgIHZhciB0eTEg
PSBwYXJhbVswXTsKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0X3N1YnN0X3R5ICovQmxvY2su
X18oOSwgWworICAgICAgICAgICAgICAgICAgICB0eTEsCisgICAgICAgICAgICAgICAgICAgIHR5
MSwKKyAgICAgICAgICAgICAgICAgICAgZXJhc2VfcmVsKHBhcmFtWzJdKQorICAgICAgICAgICAg
ICAgICAgXSk7CisgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgcmV0dXJuIC8qIEFscGhhX3R5
ICovQmxvY2suX18oMTAsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDExIDog
CisgICAgICAgICAgcmV0dXJuIC8qIFRoZXRhX3R5ICovQmxvY2suX18oMTEsIFtlcmFzZV9yZWwo
cGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgcmV0dXJuIC8qIEFueV90
eSAqL0Jsb2NrLl9fKDEyLCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSAxMyA6
IAorICAgICAgICAgIHJldHVybiAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW2VyYXNlX3Jl
bChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICByZXR1cm4gLyogSWdu
b3JlZF9yZWFkZXJfdHkgKi9CbG9jay5fXygxNCwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKKyAg
ICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBjb25jYXRfZm10dHkoZm10dHkxLCBmbXR0
eTIpIHsKKyAgaWYgKHR5cGVvZiBmbXR0eTEgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIGZt
dHR5MjsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGZtdHR5MS50YWcgfCAwKSB7CisgICAg
ICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gLyogQ2hhcl90eSAqL0Jsb2NrLl9fKDAsIFtj
b25jYXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7CisgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICByZXR1cm4gLyogU3RyaW5nX3R5ICovQmxvY2suX18oMSwgW2NvbmNhdF9mbXR0eShmbXR0
eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAvKiBJ
bnRfdHkgKi9CbG9jay5fXygyLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOwor
ICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIC8qIEludDMyX3R5ICovQmxvY2suX18o
MywgW2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgNCA6IAor
ICAgICAgICAgIHJldHVybiAvKiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbY29uY2F0X2Zt
dHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0
dXJuIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZt
dHR5MildKTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiAvKiBGbG9hdF90eSAq
L0Jsb2NrLl9fKDYsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7CisgICAgICBj
YXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcsIFtjb25j
YXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAg
ICByZXR1cm4gLyogRm9ybWF0X2FyZ190eSAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAg
ICAgICAgZm10dHkxWzBdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10dHkoZm10dHkx
WzFdLCBmbXR0eTIpCisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgOSA6IAorICAg
ICAgICAgIHJldHVybiAvKiBGb3JtYXRfc3Vic3RfdHkgKi9CbG9jay5fXyg5LCBbCisgICAgICAg
ICAgICAgICAgICAgIGZtdHR5MVswXSwKKyAgICAgICAgICAgICAgICAgICAgZm10dHkxWzFdLAor
ICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10dHkoZm10dHkxWzJdLCBmbXR0eTIpCisgICAg
ICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICByZXR1cm4gLyog
QWxwaGFfdHkgKi9CbG9jay5fXygxMCwgW2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5Mild
KTsKKyAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICByZXR1cm4gLyogVGhldGFfdHkgKi9CbG9j
ay5fXygxMSwgW2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2Ug
MTIgOiAKKyAgICAgICAgICByZXR1cm4gLyogQW55X3R5ICovQmxvY2suX18oMTIsIFtjb25jYXRf
Zm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7CisgICAgICBjYXNlIDEzIDogCisgICAgICAgICAg
cmV0dXJuIC8qIFJlYWRlcl90eSAqL0Jsb2NrLl9fKDEzLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVsw
XSwgZm10dHkyKV0pOworICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgIHJldHVybiAvKiBJZ25v
cmVkX3JlYWRlcl90eSAqL0Jsb2NrLl9fKDE0LCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10
dHkyKV0pOworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNvbmNhdF9mbXQoZm10
MSwgZm10MikgeworICBpZiAodHlwZW9mIGZtdDEgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJu
IGZtdDI7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChmbXQxLnRhZyB8IDApIHsKKyAgICAg
IGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyICovQmxvY2suX18oMCwgW2NvbmNh
dF9mbXQoZm10MVswXSwgZm10MildKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVy
biAvKiBDYW1sX2NoYXIgKi9CbG9jay5fXygxLCBbY29uY2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0p
OworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIC8qIFN0cmluZyAqL0Jsb2NrLl9f
KDIsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAgICAgICAgICAg
Y29uY2F0X2ZtdChmbXQxWzFdLCBmbXQyKQorICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBb
CisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNh
dF9mbXQoZm10MVsxXSwgZm10MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA0
IDogCisgICAgICAgICAgcmV0dXJuIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAg
ICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAgICAgICAgICAgZm10MVsxXSwKKyAgICAgICAg
ICAgICAgICAgICAgZm10MVsyXSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQx
WzNdLCBmbXQyKQorICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDUgOiAKKyAgICAg
ICAgICByZXR1cm4gLyogSW50MzIgKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICAgICAgICAg
IGZtdDFbMF0sCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMV0sCisgICAgICAgICAgICAgICAg
ICAgIGZtdDFbMl0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVszXSwgZm10
MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0
dXJuIC8qIE5hdGl2ZWludCAqL0Jsb2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10
MVswXSwKKyAgICAgICAgICAgICAgICAgICAgZm10MVsxXSwKKyAgICAgICAgICAgICAgICAgICAg
Zm10MVsyXSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzNdLCBmbXQyKQor
ICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4g
LyogSW50NjQgKi9CbG9jay5fXyg3LCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisg
ICAgICAgICAgICAgICAgICAgIGZtdDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMl0s
CisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVszXSwgZm10MikKKyAgICAgICAg
ICAgICAgICAgIF0pOworICAgICAgY2FzZSA4IDogCisgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0
ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAg
ICAgICAgICAgICBmbXQxWzFdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzJdLAorICAgICAg
ICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbM10sIGZtdDIpCisgICAgICAgICAgICAgICAg
ICBdKTsKKyAgICAgIGNhc2UgOSA6IAorICAgICAgICAgIHJldHVybiAvKiBCb29sICovQmxvY2su
X18oOSwgW2NvbmNhdF9mbXQoZm10MVswXSwgZm10MildKTsKKyAgICAgIGNhc2UgMTAgOiAKKyAg
ICAgICAgICByZXR1cm4gLyogRmx1c2ggKi9CbG9jay5fXygxMCwgW2NvbmNhdF9mbXQoZm10MVsw
XSwgZm10MildKTsKKyAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICByZXR1cm4gLyogU3RyaW5n
X2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAor
ICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAg
ICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICByZXR1cm4gLyogQ2hhcl9s
aXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAg
ICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzFdLCBmbXQyKQorICAgICAgICAgICAg
ICAgICAgXSk7CisgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9h
cmcgKi9CbG9jay5fXygxMywgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAg
ICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZt
dDFbMl0sIGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTQgOiAKKyAg
ICAgICAgICByZXR1cm4gLyogRm9ybWF0X3N1YnN0ICovQmxvY2suX18oMTQsIFsKKyAgICAgICAg
ICAgICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAgICAgICAgICAgZm10MVsxXSwKKyAgICAg
ICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzJdLCBmbXQyKQorICAgICAgICAgICAgICAg
ICAgXSk7CisgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgcmV0dXJuIC8qIEFscGhhICovQmxv
Y2suX18oMTUsIFtjb25jYXRfZm10KGZtdDFbMF0sIGZtdDIpXSk7CisgICAgICBjYXNlIDE2IDog
CisgICAgICAgICAgcmV0dXJuIC8qIFRoZXRhICovQmxvY2suX18oMTYsIFtjb25jYXRfZm10KGZt
dDFbMF0sIGZtdDIpXSk7CisgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgcmV0dXJuIC8qIEZv
cm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVsw
XSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzFdLCBmbXQyKQorICAgICAg
ICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDE4IDogCisgICAgICAgICAgcmV0dXJuIC8qIEZv
cm1hdHRpbmdfZ2VuICovQmxvY2suX18oMTgsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVsw
XSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzFdLCBmbXQyKQorICAgICAg
ICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgcmV0dXJuIC8qIFJl
YWRlciAqL0Jsb2NrLl9fKDE5LCBbY29uY2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0pOworICAgICAg
Y2FzZSAyMCA6IAorICAgICAgICAgIHJldHVybiAvKiBTY2FuX2NoYXJfc2V0ICovQmxvY2suX18o
MjAsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAgICAgICAgICAg
Zm10MVsxXSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzJdLCBmbXQyKQor
ICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDIxIDogCisgICAgICAgICAgcmV0dXJu
IC8qIFNjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwgWworICAgICAgICAgICAgICAgICAg
ICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIp
CisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICByZXR1
cm4gLyogU2Nhbl9uZXh0X2NoYXIgKi9CbG9jay5fXygyMiwgW2NvbmNhdF9mbXQoZm10MVswXSwg
Zm10MildKTsKKyAgICAgIGNhc2UgMjMgOiAKKyAgICAgICAgICByZXR1cm4gLyogSWdub3JlZF9w
YXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAg
ICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsxXSwgZm10MikKKyAgICAgICAgICAgICAg
ICAgIF0pOworICAgICAgY2FzZSAyNCA6IAorICAgICAgICAgIHJldHVybiAvKiBDdXN0b20gKi9C
bG9jay5fXygyNCwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAg
ICAgICAgICBmbXQxWzFdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMl0s
IGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitl
eHBvcnRzLmNvbmNhdF9mbXR0eSA9IGNvbmNhdF9mbXR0eTsKK2V4cG9ydHMuZXJhc2VfcmVsICAg
ID0gZXJhc2VfcmVsOworZXhwb3J0cy5jb25jYXRfZm10ICAgPSBjb25jYXRfZm10OworLyogTm8g
c2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Mu
anMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3Ry
eVsnY2FtbGludGVybmFsRm9ybWF0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRz
ID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1saW50ZXJuYWxGb3JtYXQuanMgLy8vLy8vLy8K
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIFN5cyAgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUo
Ii4vc3lzIik7Cit2YXIgQ2hhciAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jaGFy
Iik7Cit2YXIgQmxvY2sgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ibG9jayIpOwor
dmFyIEJ5dGVzICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnl0ZXMiKTsKK3ZhciBD
dXJyeSAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQnVmZmVy
ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9idWZmZXIiKTsKK3ZhciAkJFN0cmluZyAg
ICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3N0cmluZyIpOwordmFyIENhbWxfaW8gICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9pbyIpOwordmFyIENhbWxfb2JqICAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9vYmoiKTsKK3ZhciBDYW1sX2J5dGVzICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2NhbWxfYnl0ZXMiKTsKK3ZhciBDYW1sX2Zsb2F0ICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2NhbWxfZmxvYXQiKTsKK3ZhciBDYW1sX2ludDMyICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2NhbWxfaW50MzIiKTsKK3ZhciBQZXJ2YXNpdmVzICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX2Zvcm1hdCAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2NhbWxfZm9ybWF0Iik7Cit2YXIgQ2FtbF9zdHJpbmcgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfZXhjZXB0aW9ucyAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9leGNlcHRpb25zIik7Cit2YXIgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMgID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOwordmFy
IENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcyA9IHJlcXVpcmUoIi4vY2FtbGludGVybmFsRm9ybWF0
QmFzaWNzIik7CisKK2Z1bmN0aW9uIGNyZWF0ZV9jaGFyX3NldCgpIHsKKyAgcmV0dXJuIEJ5dGVz
Lm1ha2UoMzIsIC8qICJcMDAwIiAqLzApOworfQorCitmdW5jdGlvbiBhZGRfaW5fY2hhcl9zZXQo
Y2hhcl9zZXQsIGMpIHsKKyAgdmFyIHN0cl9pbmQgPSAoYyA+Pj4gMyk7CisgIHZhciBtYXNrID0g
KDEgPDwgKGMgJiA3KSk7CisgIGNoYXJfc2V0W3N0cl9pbmRdID0gUGVydmFzaXZlcy5jaGFyX29m
X2ludChDYW1sX2J5dGVzLmdldChjaGFyX3NldCwgc3RyX2luZCkgfCBtYXNrKTsKKyAgcmV0dXJu
IC8qICgpICovMDsKK30KKwordmFyIGZyZWV6ZV9jaGFyX3NldCA9IEJ5dGVzLnRvX3N0cmluZzsK
KworZnVuY3Rpb24gcmV2X2NoYXJfc2V0KGNoYXJfc2V0KSB7CisgIHZhciBjaGFyX3NldCRwcmlt
ZSA9IEJ5dGVzLm1ha2UoMzIsIC8qICJcMDAwIiAqLzApOworICBmb3IodmFyIGkgPSAwOyBpIDw9
IDMxOyArK2kpeworICAgIGNoYXJfc2V0JHByaW1lW2ldID0gUGVydmFzaXZlcy5jaGFyX29mX2lu
dChDYW1sX3N0cmluZy5nZXQoY2hhcl9zZXQsIGkpIF4gMjU1KTsKKyAgfQorICByZXR1cm4gQ2Ft
bF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKGNoYXJfc2V0JHByaW1lKTsKK30KKworZnVuY3Rpb24g
aXNfaW5fY2hhcl9zZXQoY2hhcl9zZXQsIGMpIHsKKyAgdmFyIHN0cl9pbmQgPSAoYyA+Pj4gMyk7
CisgIHZhciBtYXNrID0gKDEgPDwgKGMgJiA3KSk7CisgIHJldHVybiArKChDYW1sX3N0cmluZy5n
ZXQoY2hhcl9zZXQsIHN0cl9pbmQpICYgbWFzaykgIT09IDApOworfQorCitmdW5jdGlvbiBwYWRf
b2ZfcGFkX29wdChwYWRfb3B0KSB7CisgIGlmIChwYWRfb3B0KSB7CisgICAgcmV0dXJuIC8qIExp
dF9wYWRkaW5nICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAvKiBSaWdodCAqLzEsCisg
ICAgICAgICAgICAgIHBhZF9vcHRbMF0KKyAgICAgICAgICAgIF0pOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiAvKiBOb19wYWRkaW5nICovMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcmVjX29m
X3ByZWNfb3B0KHByZWNfb3B0KSB7CisgIGlmIChwcmVjX29wdCkgeworICAgIHJldHVybiAvKiBM
aXRfcHJlY2lzaW9uICovW3ByZWNfb3B0WzBdXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
LyogTm9fcHJlY2lzaW9uICovMDsKKyAgfQorfQorCitmdW5jdGlvbiBwYXJhbV9mb3JtYXRfb2Zf
aWdub3JlZF9mb3JtYXQoaWduLCBmbXQpIHsKKyAgaWYgKHR5cGVvZiBpZ24gPT09ICJudW1iZXIi
KSB7CisgICAgc3dpdGNoIChpZ24pIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVy
biAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIENoYXIgKi9CbG9jay5fXygwLCBbZm10XSldOwor
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9b
LyogQ2FtbF9jaGFyICovQmxvY2suX18oMSwgW2ZtdF0pXTsKKyAgICAgIGNhc2UgMiA6IAorICAg
ICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIEJvb2wgKi9CbG9jay5fXyg5
LCBbZm10XSldOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zv
cm1hdF9FQkIgKi9bLyogUmVhZGVyICovQmxvY2suX18oMTksIFtmbXRdKV07CisgICAgICBjYXNl
IDQgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBTY2FuX25l
eHRfY2hhciAqL0Jsb2NrLl9fKDIyLCBbZm10XSldOworICAgICAgCisgICAgfQorICB9CisgIGVs
c2UgeworICAgIHN3aXRjaCAoaWduLnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIFN0cmluZyAqL0Jsb2NrLl9fKDIs
IFsKKyAgICAgICAgICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdChpZ25bMF0pLAorICAgICAg
ICAgICAgICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAgICBdKV07CisgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBDYW1sX3N0
cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29w
dChpZ25bMF0pLAorICAgICAgICAgICAgICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAg
ICBdKV07CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0
X0VCQiAqL1svKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgaWdu
WzBdLAorICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblsxXSksCisgICAg
ICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAg
ICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgY2FzZSAzIDogCisgICAg
ICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogSW50MzIgKi9CbG9jay5fXyg1
LCBbCisgICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAg
IHBhZF9vZl9wYWRfb3B0KGlnblsxXSksCisgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJl
Y2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAg
ICAgXSldOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1h
dF9FQkIgKi9bLyogTmF0aXZlaW50ICovQmxvY2suX18oNiwgWworICAgICAgICAgICAgICAgICAg
ICAgIGlnblswXSwKKyAgICAgICAgICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdChpZ25bMV0p
LAorICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAg
ICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNhc2UgNSA6
IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIEludDY0ICovQmxv
Y2suX18oNywgWworICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKKyAgICAgICAgICAgICAg
ICAgICAgICBwYWRfb2ZfcGFkX29wdChpZ25bMV0pLAorICAgICAgICAgICAgICAgICAgICAgIC8q
IE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAg
ICAgICAgICAgIF0pXTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJh
bV9mb3JtYXRfRUJCICovWy8qIEZsb2F0ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAg
ICAgICAgIC8qIEZsb2F0X2YgKi8wLAorICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRf
b3B0KGlnblswXSksCisgICAgICAgICAgICAgICAgICAgICAgcHJlY19vZl9wcmVjX29wdChpZ25b
MV0pLAorICAgICAgICAgICAgICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAgICBdKV07
CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAq
L1svKiBGb3JtYXRfYXJnICovQmxvY2suX18oMTMsIFsKKyAgICAgICAgICAgICAgICAgICAgICBp
Z25bMF0sCisgICAgICAgICAgICAgICAgICAgICAgaWduWzFdLAorICAgICAgICAgICAgICAgICAg
ICAgIGZtdAorICAgICAgICAgICAgICAgICAgICBdKV07CisgICAgICBjYXNlIDggOiAKKyAgICAg
ICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBGb3JtYXRfc3Vic3QgKi9CbG9j
ay5fXygxNCwgWworICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKKyAgICAgICAgICAgICAg
ICAgICAgICBpZ25bMV0sCisgICAgICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAg
ICAgICAgIF0pXTsKKyAgICAgIGNhc2UgOSA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9m
b3JtYXRfRUJCICovWy8qIFNjYW5fY2hhcl9zZXQgKi9CbG9jay5fXygyMCwgWworICAgICAgICAg
ICAgICAgICAgICAgIGlnblswXSwKKyAgICAgICAgICAgICAgICAgICAgICBpZ25bMV0sCisgICAg
ICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNh
c2UgMTAgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBTY2Fu
X2dldF9jb3VudGVyICovQmxvY2suX18oMjEsIFsKKyAgICAgICAgICAgICAgICAgICAgICBpZ25b
MF0sCisgICAgICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsK
KyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBidWZmZXJfY2hlY2tfc2l6ZShidWYs
IG92ZXJoZWFkKSB7CisgIHZhciBsZW4gPSBidWZbLyogYnl0ZXMgKi8xXS5sZW5ndGg7CisgIHZh
ciBtaW5fbGVuID0gYnVmWy8qIGluZCAqLzBdICsgb3ZlcmhlYWQgfCAwOworICBpZiAobWluX2xl
biA+IGxlbikgeworICAgIHZhciBuZXdfbGVuID0gUGVydmFzaXZlcy5tYXgoKGxlbiA8PCAxKSwg
bWluX2xlbik7CisgICAgdmFyIG5ld19zdHIgPSBDYW1sX3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJp
bmcobmV3X2xlbik7CisgICAgQnl0ZXMuYmxpdChidWZbLyogYnl0ZXMgKi8xXSwgMCwgbmV3X3N0
ciwgMCwgbGVuKTsKKyAgICBidWZbLyogYnl0ZXMgKi8xXSA9IG5ld19zdHI7CisgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5j
dGlvbiBidWZmZXJfYWRkX2NoYXIoYnVmLCBjKSB7CisgIGJ1ZmZlcl9jaGVja19zaXplKGJ1Ziwg
MSk7CisgIGJ1ZlsvKiBieXRlcyAqLzFdW2J1ZlsvKiBpbmQgKi8wXV0gPSBjOworICBidWZbLyog
aW5kICovMF0gPSBidWZbLyogaW5kICovMF0gKyAxIHwgMDsKKyAgcmV0dXJuIC8qICgpICovMDsK
K30KKworZnVuY3Rpb24gYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCBzKSB7CisgIHZhciBzdHJfbGVu
ID0gcy5sZW5ndGg7CisgIGJ1ZmZlcl9jaGVja19zaXplKGJ1Ziwgc3RyX2xlbik7CisgICQkU3Ry
aW5nLmJsaXQocywgMCwgYnVmWy8qIGJ5dGVzICovMV0sIGJ1ZlsvKiBpbmQgKi8wXSwgc3RyX2xl
bik7CisgIGJ1ZlsvKiBpbmQgKi8wXSA9IGJ1ZlsvKiBpbmQgKi8wXSArIHN0cl9sZW4gfCAwOwor
ICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBidWZmZXJfY29udGVudHMoYnVmKSB7
CisgIHJldHVybiBCeXRlcy5zdWJfc3RyaW5nKGJ1ZlsvKiBieXRlcyAqLzFdLCAwLCBidWZbLyog
aW5kICovMF0pOworfQorCitmdW5jdGlvbiBjaGFyX29mX2ljb252KGljb252KSB7CisgIHN3aXRj
aCAoaWNvbnYpIHsKKyAgICBjYXNlIDAgOiAKKyAgICBjYXNlIDEgOiAKKyAgICBjYXNlIDIgOiAK
KyAgICAgICAgcmV0dXJuIC8qICJkIiAqLzEwMDsKKyAgICBjYXNlIDMgOiAKKyAgICBjYXNlIDQg
OiAKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuIC8qICJpIiAqLzEwNTsKKyAgICBjYXNl
IDYgOiAKKyAgICBjYXNlIDcgOiAKKyAgICAgICAgcmV0dXJuIC8qICJ4IiAqLzEyMDsKKyAgICBj
YXNlIDggOiAKKyAgICBjYXNlIDkgOiAKKyAgICAgICAgcmV0dXJuIC8qICJYIiAqLzg4OworICAg
IGNhc2UgMTAgOiAKKyAgICBjYXNlIDExIDogCisgICAgICAgIHJldHVybiAvKiAibyIgKi8xMTE7
CisgICAgY2FzZSAxMiA6IAorICAgICAgICByZXR1cm4gLyogInUiICovMTE3OworICAgIAorICB9
Cit9CisKK2Z1bmN0aW9uIGNoYXJfb2ZfZmNvbnYoZmNvbnYpIHsKKyAgc3dpdGNoIChmY29udikg
eworICAgIGNhc2UgMCA6IAorICAgIGNhc2UgMSA6IAorICAgIGNhc2UgMiA6IAorICAgICAgICBy
ZXR1cm4gLyogImYiICovMTAyOworICAgIGNhc2UgMyA6IAorICAgIGNhc2UgNCA6IAorICAgIGNh
c2UgNSA6IAorICAgICAgICByZXR1cm4gLyogImUiICovMTAxOworICAgIGNhc2UgNiA6IAorICAg
IGNhc2UgNyA6IAorICAgIGNhc2UgOCA6IAorICAgICAgICByZXR1cm4gLyogIkUiICovNjk7Cisg
ICAgY2FzZSA5IDogCisgICAgY2FzZSAxMCA6IAorICAgIGNhc2UgMTEgOiAKKyAgICAgICAgcmV0
dXJuIC8qICJnIiAqLzEwMzsKKyAgICBjYXNlIDEyIDogCisgICAgY2FzZSAxMyA6IAorICAgIGNh
c2UgMTQgOiAKKyAgICAgICAgcmV0dXJuIC8qICJHIiAqLzcxOworICAgIGNhc2UgMTUgOiAKKyAg
ICAgICAgcmV0dXJuIC8qICJGIiAqLzcwOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIGNoYXJf
b2ZfY291bnRlcihjb3VudGVyKSB7CisgIHN3aXRjaCAoY291bnRlcikgeworICAgIGNhc2UgMCA6
IAorICAgICAgICByZXR1cm4gLyogImwiICovMTA4OworICAgIGNhc2UgMSA6IAorICAgICAgICBy
ZXR1cm4gLyogIm4iICovMTEwOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gLyogIk4i
ICovNzg7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gYnByaW50X2NoYXJfc2V0KGJ1ZiwgY2hh
cl9zZXQpIHsKKyAgdmFyIHByaW50X2NoYXIgPSBmdW5jdGlvbiAoYnVmLCBpKSB7CisgICAgdmFy
IGMgPSBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KGkpOworICAgIGlmIChjICE9PSAzNykgeworICAg
ICAgaWYgKGMgIT09IDY0KSB7CisgICAgICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCBj
KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAv
KiAiJSIgKi8zNyk7CisgICAgICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiQCIg
Ki82NCk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgYnVmZmVyX2FkZF9jaGFy
KGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8q
ICIlIiAqLzM3KTsKKyAgICB9CisgIH07CisgIHZhciBwcmludF9vdXQgPSBmdW5jdGlvbiAoc2V0
LCBfaSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBpID0gX2k7CisgICAgICBpZiAo
aSA8IDI1NikgeworICAgICAgICBpZiAoaXNfaW5fY2hhcl9zZXQoc2V0LCBQZXJ2YXNpdmVzLmNo
YXJfb2ZfaW50KGkpKSkgeworICAgICAgICAgIHZhciBzZXQkMSA9IHNldDsKKyAgICAgICAgICB2
YXIgaSQxID0gaTsKKyAgICAgICAgICB2YXIgbWF0Y2ggPSBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50
KGkkMSk7CisgICAgICAgICAgdmFyIHN3aXRjaGVyID0gbWF0Y2ggLSA0NSB8IDA7CisgICAgICAg
ICAgaWYgKHN3aXRjaGVyID4gNDggfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgICAgICAgICBpZiAo
c3dpdGNoZXIgPj0gMjEwKSB7CisgICAgICAgICAgICAgIHJldHVybiBwcmludF9jaGFyKGJ1Ziwg
MjU1KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBy
ZXR1cm4gcHJpbnRfc2Vjb25kKHNldCQxLCBpJDEgKyAxIHwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHN3aXRjaGVyID4gNDcgfHwgc3dpdGNoZXIg
PCAxKSB7CisgICAgICAgICAgICByZXR1cm4gcHJpbnRfb3V0KHNldCQxLCBpJDEgKyAxIHwgMCk7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHByaW50
X3NlY29uZChzZXQkMSwgaSQxICsgMSB8IDApOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgcHJpbnRfc2Vjb25kID0g
ZnVuY3Rpb24gKHNldCwgaSkgeworICAgIGlmIChpc19pbl9jaGFyX3NldChzZXQsIFBlcnZhc2l2
ZXMuY2hhcl9vZl9pbnQoaSkpKSB7CisgICAgICB2YXIgbWF0Y2ggPSBQZXJ2YXNpdmVzLmNoYXJf
b2ZfaW50KGkpOworICAgICAgdmFyIGV4aXQgPSAwOworICAgICAgdmFyIHN3aXRjaGVyID0gbWF0
Y2ggLSA0NSB8IDA7CisgICAgICBpZiAoc3dpdGNoZXIgPiA0OCB8fCBzd2l0Y2hlciA8IDApIHsK
KyAgICAgICAgaWYgKHN3aXRjaGVyID49IDIxMCkgeworICAgICAgICAgIHByaW50X2NoYXIoYnVm
LCAyNTQpOworICAgICAgICAgIHJldHVybiBwcmludF9jaGFyKGJ1ZiwgMjU1KTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAg
fQorICAgICAgZWxzZSBpZiAoc3dpdGNoZXIgPiA0NyB8fCBzd2l0Y2hlciA8IDEpIHsKKyAgICAg
ICAgaWYgKGlzX2luX2NoYXJfc2V0KHNldCwgUGVydmFzaXZlcy5jaGFyX29mX2ludChpICsgMSB8
IDApKSkgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgIHByaW50X2NoYXIoYnVmLCBpIC0gMSB8IDApOworICAgICAgICAgIHJldHVybiBw
cmludF9vdXQoc2V0LCBpICsgMSB8IDApOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBpZiAoZXhpdCA9PT0gMSkgewor
ICAgICAgICBpZiAoaXNfaW5fY2hhcl9zZXQoc2V0LCBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KGkg
KyAxIHwgMCkpKSB7CisgICAgICAgICAgdmFyIHNldCQxID0gc2V0OworICAgICAgICAgIHZhciBp
JDEgPSBpIC0gMSB8IDA7CisgICAgICAgICAgdmFyIF9qID0gaSArIDIgfCAwOworICAgICAgICAg
IHdoaWxlKHRydWUpIHsKKyAgICAgICAgICAgIHZhciBqID0gX2o7CisgICAgICAgICAgICBpZiAo
aiA9PT0gMjU2IHx8ICFpc19pbl9jaGFyX3NldChzZXQkMSwgUGVydmFzaXZlcy5jaGFyX29mX2lu
dChqKSkpIHsKKyAgICAgICAgICAgICAgcHJpbnRfY2hhcihidWYsIGkkMSk7CisgICAgICAgICAg
ICAgIHByaW50X2NoYXIoYnVmLCAvKiAiLSIgKi80NSk7CisgICAgICAgICAgICAgIHByaW50X2No
YXIoYnVmLCBqIC0gMSB8IDApOworICAgICAgICAgICAgICBpZiAoaiA8IDI1NikgeworICAgICAg
ICAgICAgICAgIHJldHVybiBwcmludF9vdXQoc2V0JDEsIGogKyAxIHwgMCk7CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICBfaiA9IGogKyAxIHwgMDsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgIHByaW50X2NoYXIoYnVmLCBpIC0gMSB8IDApOworICAgICAgICAg
IHByaW50X2NoYXIoYnVmLCBpKTsKKyAgICAgICAgICByZXR1cm4gcHJpbnRfb3V0KHNldCwgaSAr
IDIgfCAwKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgCisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgcHJpbnRfY2hhcihidWYsIGkgLSAxIHwgMCk7CisgICAgICByZXR1cm4gcHJpbnRfb3V0
KHNldCwgaSArIDEgfCAwKTsKKyAgICB9CisgIH07CisgIHZhciBwcmludF9zdGFydCA9IGZ1bmN0
aW9uIChzZXQpIHsKKyAgICB2YXIgaXNfYWxvbmUgPSBmdW5jdGlvbiAoYykgeworICAgICAgdmFy
IG1hdGNoXzAwMCA9IENoYXIuY2hyKGMgLSAxIHwgMCk7CisgICAgICB2YXIgbWF0Y2hfMDAxID0g
Q2hhci5jaHIoYyArIDEgfCAwKTsKKyAgICAgIGlmIChpc19pbl9jaGFyX3NldChzZXQsIGMpKSB7
CisgICAgICAgIHJldHVybiAxIC0gKGlzX2luX2NoYXJfc2V0KHNldCwgbWF0Y2hfMDAwKSAmJiBp
c19pbl9jaGFyX3NldChzZXQsIG1hdGNoXzAwMSkpOworICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAgICB9CisgICAgfTsKKyAgICBpZiAoaXNf
YWxvbmUoLyogIl0iICovOTMpKSB7CisgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiXSIg
Ki85Myk7CisgICAgfQorICAgIHByaW50X291dChzZXQsIDEpOworICAgIGlmIChpc19hbG9uZSgv
KiAiLSIgKi80NSkpIHsKKyAgICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiLSIg
Ki80NSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9Owor
ICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiWyIgKi85MSk7CisgIHByaW50X3N0YXJ0KGlzX2lu
X2NoYXJfc2V0KGNoYXJfc2V0LCAvKiAiXDAwMCIgKi8wKSA/IChidWZmZXJfYWRkX2NoYXIoYnVm
LCAvKiAiXiIgKi85NCksIHJldl9jaGFyX3NldChjaGFyX3NldCkpIDogY2hhcl9zZXQpOworICBy
ZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIl0iICovOTMpOworfQorCitmdW5jdGlvbiBi
cHJpbnRfcGFkdHkoYnVmLCBwYWR0eSkgeworICBzd2l0Y2ggKHBhZHR5KSB7CisgICAgY2FzZSAw
IDogCisgICAgICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiLSIgKi80NSk7Cisg
ICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgY2FzZSAyIDogCisg
ICAgICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiMCIgKi80OCk7CisgICAgCisg
IH0KK30KKworZnVuY3Rpb24gYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKSB7Cisg
IGlmIChpZ25fZmxhZykgeworICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiXyIg
Ki85NSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24g
YnByaW50X3BhZF9vcHQoYnVmLCBwYWRfb3B0KSB7CisgIGlmIChwYWRfb3B0KSB7CisgICAgcmV0
dXJuIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiIgKyBwYWRfb3B0WzBdKTsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGJwcmludF9wYWRk
aW5nKGJ1ZiwgcGFkKSB7CisgIGlmICh0eXBlb2YgcGFkID09PSAibnVtYmVyIikgeworICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgYnByaW50X3BhZHR5KGJ1ZiwgcGFk
WzBdKTsKKyAgICBpZiAocGFkLnRhZykgeworICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihi
dWYsIC8qICIqIiAqLzQyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gYnVmZmVy
X2FkZF9zdHJpbmcoYnVmLCAiIiArIHBhZFsxXSk7CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9u
IGJwcmludF9wcmVjaXNpb24oYnVmLCBwcmVjKSB7CisgIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51
bWJlciIpIHsKKyAgICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRf
c3RyaW5nKGJ1ZiwgIi4qIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qICgp
ICovMDsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyog
Ii4iICovNDYpOworICAgIHJldHVybiBidWZmZXJfYWRkX3N0cmluZyhidWYsICIiICsgcHJlY1sw
XSk7CisgIH0KK30KKworZnVuY3Rpb24gYnByaW50X2ljb252X2ZsYWcoYnVmLCBpY29udikgewor
ICBzd2l0Y2ggKGljb252KSB7CisgICAgY2FzZSAxIDogCisgICAgY2FzZSA0IDogCisgICAgICAg
IHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiKyIgKi80Myk7CisgICAgY2FzZSAyIDog
CisgICAgY2FzZSA1IDogCisgICAgICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAi
ICIgKi8zMik7CisgICAgY2FzZSA3IDogCisgICAgY2FzZSA5IDogCisgICAgY2FzZSAxMSA6IAor
ICAgICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiMiICovMzUpOworICAgIGNh
c2UgMCA6IAorICAgIGNhc2UgMyA6IAorICAgIGNhc2UgNiA6IAorICAgIGNhc2UgOCA6IAorICAg
IGNhc2UgMTAgOiAKKyAgICBjYXNlIDEyIDogCisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7Cisg
ICAgCisgIH0KK30KKworZnVuY3Rpb24gYnByaW50X2ludF9mbXQoYnVmLCBpZ25fZmxhZywgaWNv
bnYsIHBhZCwgcHJlYykgeworICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7Cisg
IGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgIGJwcmludF9pY29udl9mbGFn
KGJ1ZiwgaWNvbnYpOworICBicHJpbnRfcGFkZGluZyhidWYsIHBhZCk7CisgIGJwcmludF9wcmVj
aXNpb24oYnVmLCBwcmVjKTsKKyAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGNoYXJfb2Zf
aWNvbnYoaWNvbnYpKTsKK30KKworZnVuY3Rpb24gYnByaW50X2FsdGludF9mbXQoYnVmLCBpZ25f
ZmxhZywgaWNvbnYsIHBhZCwgcHJlYywgYykgeworICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAi
JSIgKi8zNyk7CisgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgIGJwcmlu
dF9pY29udl9mbGFnKGJ1ZiwgaWNvbnYpOworICBicHJpbnRfcGFkZGluZyhidWYsIHBhZCk7Cisg
IGJwcmludF9wcmVjaXNpb24oYnVmLCBwcmVjKTsKKyAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgYyk7
CisgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCBjaGFyX29mX2ljb252KGljb252KSk7Cit9
CisKK2Z1bmN0aW9uIGJwcmludF9mY29udl9mbGFnKGJ1ZiwgZmNvbnYpIHsKKyAgc3dpdGNoIChm
Y29udikgeworICAgIGNhc2UgMSA6IAorICAgIGNhc2UgNCA6IAorICAgIGNhc2UgNyA6IAorICAg
IGNhc2UgMTAgOiAKKyAgICBjYXNlIDEzIDogCisgICAgICAgIHJldHVybiBidWZmZXJfYWRkX2No
YXIoYnVmLCAvKiAiKyIgKi80Myk7CisgICAgY2FzZSAyIDogCisgICAgY2FzZSA1IDogCisgICAg
Y2FzZSA4IDogCisgICAgY2FzZSAxMSA6IAorICAgIGNhc2UgMTQgOiAKKyAgICAgICAgcmV0dXJu
IGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIgIiAqLzMyKTsKKyAgICBjYXNlIDAgOiAKKyAgICBj
YXNlIDMgOiAKKyAgICBjYXNlIDYgOiAKKyAgICBjYXNlIDkgOiAKKyAgICBjYXNlIDEyIDogCisg
ICAgY2FzZSAxNSA6IAorICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIAorICB9Cit9CisK
K2Z1bmN0aW9uIGJwcmludF9mbG9hdF9mbXQoYnVmLCBpZ25fZmxhZywgZmNvbnYsIHBhZCwgcHJl
YykgeworICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgIGJwcmludF9pZ25v
cmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgIGJwcmludF9mY29udl9mbGFnKGJ1ZiwgZmNvbnYp
OworICBicHJpbnRfcGFkZGluZyhidWYsIHBhZCk7CisgIGJwcmludF9wcmVjaXNpb24oYnVmLCBw
cmVjKTsKKyAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGNoYXJfb2ZfZmNvbnYoZmNvbnYp
KTsKK30KKworZnVuY3Rpb24gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0KGZvcm1hdHRpbmdfbGl0
KSB7CisgIGlmICh0eXBlb2YgZm9ybWF0dGluZ19saXQgPT09ICJudW1iZXIiKSB7CisgICAgc3dp
dGNoIChmb3JtYXR0aW5nX2xpdCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0dXJu
ICJAXSI7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gIkB9IjsKKyAgICAgIGNh
c2UgMiA6IAorICAgICAgICAgIHJldHVybiAiQD8iOworICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgcmV0dXJuICJAXG4iOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuICJALiI7
CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICByZXR1cm4gIkBAIjsKKyAgICAgIGNhc2UgNiA6
IAorICAgICAgICAgIHJldHVybiAiQCUiOworICAgICAgCisgICAgfQorICB9CisgIGVsc2Ugewor
ICAgIHN3aXRjaCAoZm9ybWF0dGluZ19saXQudGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gZm9ybWF0dGluZ19saXRbMF07CisgICAg
ICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gIkAiICsgQ2FtbF9zdHJpbmcuYnl0ZXNfdG9f
c3RyaW5nKEJ5dGVzLm1ha2UoMSwgZm9ybWF0dGluZ19saXRbMF0pKTsKKyAgICAgIAorICAgIH0K
KyAgfQorfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfZm9ybWF0dGluZ19nZW4oZm9ybWF0dGluZ19n
ZW4pIHsKKyAgcmV0dXJuIGZvcm1hdHRpbmdfZ2VuWzBdWzFdOworfQorCitmdW5jdGlvbiBicHJp
bnRfY2hhcl9saXRlcmFsKGJ1ZiwgY2hyKSB7CisgIGlmIChjaHIgIT09IDM3KSB7CisgICAgcmV0
dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGNocik7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiUlIik7CisgIH0KK30KKworZnVuY3Rpb24gYnByaW50
X3N0cmluZ19saXRlcmFsKGJ1Ziwgc3RyKSB7CisgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0g
c3RyLmxlbmd0aCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIGJwcmludF9jaGFy
X2xpdGVyYWwoYnVmLCBDYW1sX3N0cmluZy5nZXQoc3RyLCBpKSk7CisgIH0KKyAgcmV0dXJuIC8q
ICgpICovMDsKK30KKworZnVuY3Rpb24gYnByaW50X2ZtdHR5KGJ1ZiwgX2ZtdHR5KSB7CisgIHdo
aWxlKHRydWUpIHsKKyAgICB2YXIgZm10dHkgPSBfZm10dHk7CisgICAgaWYgKHR5cGVvZiBmbXR0
eSA9PT0gIm51bWJlciIpIHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgc3dpdGNoIChmbXR0eS50YWcgfCAwKSB7CisgICAgICAgIGNhc2UgMCA6IAor
ICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJWMiKTsKKyAgICAgICAgICAgIF9m
bXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2Fz
ZSAxIDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlcyIpOworICAgICAg
ICAgICAgX2ZtdHR5ID0gZm10dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVpIik7
CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVm
LCAiJWxpIik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9z
dHJpbmcoYnVmLCAiJW5pIik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgYnVm
ZmVyX2FkZF9zdHJpbmcoYnVmLCAiJUxpIik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVsw
XTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAg
ICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJWYiKTsKKyAgICAgICAgICAgIF9mbXR0eSA9
IGZtdHR5WzBdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSA3IDog
CisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlQiIpOworICAgICAgICAgICAg
X2ZtdHR5ID0gZm10dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBj
YXNlIDggOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiV7Iik7CisgICAg
ICAgICAgICBicHJpbnRfZm10dHkoYnVmLCBmbXR0eVswXSk7CisgICAgICAgICAgICBidWZmZXJf
YWRkX3N0cmluZyhidWYsICIlfSIpOworICAgICAgICAgICAgX2ZtdHR5ID0gZm10dHlbMV07Cisg
ICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAg
IGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiUoIik7CisgICAgICAgICAgICBicHJpbnRfZm10dHko
YnVmLCBmbXR0eVswXSk7CisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlKSIp
OworICAgICAgICAgICAgX2ZtdHR5ID0gZm10dHlbMl07CisgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhi
dWYsICIlYSIpOworICAgICAgICAgICAgX2ZtdHR5ID0gZm10dHlbMF07CisgICAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICBidWZmZXJfYWRk
X3N0cmluZyhidWYsICIldCIpOworICAgICAgICAgICAgX2ZtdHR5ID0gZm10dHlbMF07CisgICAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBi
dWZmZXJfYWRkX3N0cmluZyhidWYsICIlPyIpOworICAgICAgICAgICAgX2ZtdHR5ID0gZm10dHlb
MF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEzIDogCisgICAg
ICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlciIpOworICAgICAgICAgICAgX2ZtdHR5
ID0gZm10dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDE0
IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlX3IiKTsKKyAgICAgICAg
ICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBpbnRfb2ZfY3VzdG9tX2Fy
aXR5KHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHJldHVybiAxICsgaW50X29mX2N1c3Rv
bV9hcml0eShwYXJhbVswXSkgfCAwOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9
Cit9CisKK2Z1bmN0aW9uIGJwcmludF9mbXQoYnVmLCBmbXQpIHsKKyAgdmFyIF9mbXQgPSBmbXQ7
CisgIHZhciBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2
YXIgaWduX2ZsYWcgPSBfaWduX2ZsYWc7CisgICAgdmFyIGZtdCQxID0gX2ZtdDsKKyAgICBpZiAo
dHlwZW9mIGZtdCQxID09PSAibnVtYmVyIikgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICBzd2l0Y2ggKGZtdCQxLnRhZyB8IDApIHsKKyAgICAgICAg
Y2FzZSAwIDogCisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7
CisgICAgICAgICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOworICAgICAg
ICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogImMiICovOTkpOworICAgICAgICAgICAgX2ln
bl9mbGFnID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzBdOworICAg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICBi
dWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdu
b3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOworICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1
ZiwgLyogIkMiICovNjcpOworICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOwor
ICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzBdOworICAgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAi
JSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcp
OworICAgICAgICAgICAgYnByaW50X3BhZGRpbmcoYnVmLCBmbXQkMVswXSk7CisgICAgICAgICAg
ICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAicyIgKi8xMTUpOworICAgICAgICAgICAgX2lnbl9m
bGFnID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzFdOworICAgICAg
ICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICBidWZm
ZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3Jl
ZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOworICAgICAgICAgICAgYnByaW50X3BhZGRpbmcoYnVmLCBm
bXQkMVswXSk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiUyIgKi84Myk7
CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10
ID0gZm10JDFbMV07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDQg
OiAKKyAgICAgICAgICAgIGJwcmludF9pbnRfZm10KGJ1ZiwgaWduX2ZsYWcsIGZtdCQxWzBdLCBm
bXQkMVsxXSwgZm10JDFbMl0pOworICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8w
OworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzNdOworICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICBicHJpbnRfYWx0aW50X2ZtdChidWYs
IGlnbl9mbGFnLCBmbXQkMVswXSwgZm10JDFbMV0sIGZtdCQxWzJdLCAvKiAibCIgKi8xMDgpOwor
ICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAgX2ZtdCA9
IGZtdCQxWzNdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSA2IDog
CisgICAgICAgICAgICBicHJpbnRfYWx0aW50X2ZtdChidWYsIGlnbl9mbGFnLCBmbXQkMVswXSwg
Zm10JDFbMV0sIGZtdCQxWzJdLCAvKiAibiIgKi8xMTApOworICAgICAgICAgICAgX2lnbl9mbGFn
ID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzNdOworICAgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICBicHJpbnRf
YWx0aW50X2ZtdChidWYsIGlnbl9mbGFnLCBmbXQkMVswXSwgZm10JDFbMV0sIGZtdCQxWzJdLCAv
KiAiTCIgKi83Nik7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAg
ICAgICAgICBfZm10ID0gZm10JDFbM107CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIGJwcmludF9mbG9hdF9mbXQoYnVmLCBpZ25fZmxh
ZywgZm10JDFbMF0sIGZtdCQxWzFdLCBmbXQkMVsyXSk7CisgICAgICAgICAgICBfaWduX2ZsYWcg
PSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbM107CisgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9h
ZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2Zs
YWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAi
QiIgKi82Nik7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAg
ICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICBjYXNlIDEwIDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlISIpOwor
ICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzBdOworICAgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsKGJ1
ZiwgZm10JDFbMF0pOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzFdOworICAgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgYnByaW50X2No
YXJfbGl0ZXJhbChidWYsIGZtdCQxWzBdKTsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsxXTsK
KyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAg
ICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmlu
dF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBicHJpbnRfcGFkX29w
dChidWYsIGZtdCQxWzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJ7
IiAqLzEyMyk7CisgICAgICAgICAgICBicHJpbnRfZm10dHkoYnVmLCBmbXQkMVsxXSk7CisgICAg
ICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBi
dWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAifSIgKi8xMjUpOworICAgICAgICAgICAgX2lnbl9mbGFn
ID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzJdOworICAgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgYnVmZmVy
X2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnByaW50X2lnbm9yZWRf
ZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAgIGJwcmludF9wYWRfb3B0KGJ1ZiwgZm10
JDFbMF0pOworICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIigiICovNDApOwor
ICAgICAgICAgICAgYnByaW50X2ZtdHR5KGJ1ZiwgZm10JDFbMV0pOworICAgICAgICAgICAgYnVm
ZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnVmZmVyX2FkZF9j
aGFyKGJ1ZiwgLyogIikiICovNDEpOworICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2Ug
Ki8wOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzJdOworICAgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgICAgY2FzZSAxNSA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1
ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGln
bl9mbGFnKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJhIiAqLzk3KTsK
KyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQg
PSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTYg
OiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAg
ICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBi
dWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAidCIgKi8xMTYpOworICAgICAgICAgICAgX2lnbl9mbGFn
ID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzBdOworICAgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxNyA6IAorICAgICAgICAgICAgYnByaW50
X3N0cmluZ19saXRlcmFsKGJ1Ziwgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0KGZtdCQxWzBdKSk7
CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgICBjYXNlIDE4IDogCisgICAgICAgICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwo
YnVmLCAiQHsiKTsKKyAgICAgICAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbChidWYsIHN0cmlu
Z19vZl9mb3JtYXR0aW5nX2dlbihmbXQkMVswXSkpOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQx
WzFdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxOSA6IAorICAg
ICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAg
YnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9h
ZGRfY2hhcihidWYsIC8qICJyIiAqLzExNCk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBm
YWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250
aW51ZSA7CisgICAgICAgICAgICBjYXNlIDIwIDogCisgICAgICAgICAgICBidWZmZXJfYWRkX2No
YXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1
ZiwgaWduX2ZsYWcpOworICAgICAgICAgICAgYnByaW50X3BhZF9vcHQoYnVmLCBmbXQkMVswXSk7
CisgICAgICAgICAgICBicHJpbnRfY2hhcl9zZXQoYnVmLCBmbXQkMVsxXSk7CisgICAgICAgICAg
ICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMl07
CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDIxIDogCisgICAgICAg
ICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJp
bnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOworICAgICAgICAgICAgYnVmZmVyX2FkZF9j
aGFyKGJ1ZiwgY2hhcl9vZl9jb3VudGVyKGZtdCQxWzBdKSk7CisgICAgICAgICAgICBfaWduX2Zs
YWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAgICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDIyIDogCisgICAgICAgICAgICBidWZm
ZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3Jl
ZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOworICAgICAgICAgICAgYnByaW50X3N0cmluZ19saXRlcmFs
KGJ1ZiwgIjBjIik7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAg
ICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICBjYXNlIDIzIDogCisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBwYXJhbV9mb3JtYXRfb2Zf
aWdub3JlZF9mb3JtYXQoZm10JDFbMF0sIGZtdCQxWzFdKTsKKyAgICAgICAgICAgIF9pZ25fZmxh
ZyA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgX2ZtdCA9IG1hdGNoWzBdOworICAgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAyNCA6IAorICAgICAgICAgICAgZm9yKHZh
ciBfaSA9IDEgLF9pX2ZpbmlzaCA9IGludF9vZl9jdXN0b21fYXJpdHkoZm10JDFbMF0pOyBfaSA8
PSBfaV9maW5pc2g7ICsrX2kpeworICAgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAv
KiAiJSIgKi8zNyk7CisgICAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25f
ZmxhZyk7CisgICAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICI/IiAqLzYzKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAg
ICAgICAgICAgIF9mbXQgPSBmbXQkMVsyXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAgIAorICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3RyaW5nX29mX2Zt
dChmbXQpIHsKKyAgdmFyIGJ1ZiA9IC8qIHJlY29yZCAqL1sKKyAgICAvKiBpbmQgKi8wLAorICAg
IC8qIGJ5dGVzICovbmV3IEFycmF5KDE2KQorICBdOworICBicHJpbnRfZm10KGJ1ZiwgZm10KTsK
KyAgcmV0dXJuIGJ1ZmZlcl9jb250ZW50cyhidWYpOworfQorCitmdW5jdGlvbiBzeW1tKHBhcmFt
KSB7CisgIGlmICh0eXBlb2YgcGFyYW0gPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8qIEVu
ZF9vZl9mbXR0eSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChwYXJhbS50YWcgfCAw
KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gLyogQ2hhcl90eSAqL0Jsb2Nr
Ll9fKDAsIFtzeW1tKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0
dXJuIC8qIFN0cmluZ190eSAqL0Jsb2NrLl9fKDEsIFtzeW1tKHBhcmFtWzBdKV0pOworICAgICAg
Y2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFtzeW1t
KHBhcmFtWzBdKV0pOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIC8qIEludDMy
X3R5ICovQmxvY2suX18oMywgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDQgOiAKKyAg
ICAgICAgICByZXR1cm4gLyogTmF0aXZlaW50X3R5ICovQmxvY2suX18oNCwgW3N5bW0ocGFyYW1b
MF0pXSk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50NjRfdHkgKi9C
bG9jay5fXyg1LCBbc3ltbShwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAg
IHJldHVybiAvKiBGbG9hdF90eSAqL0Jsb2NrLl9fKDYsIFtzeW1tKHBhcmFtWzBdKV0pOworICAg
ICAgY2FzZSA3IDogCisgICAgICAgICAgcmV0dXJuIC8qIEJvb2xfdHkgKi9CbG9jay5fXyg3LCBb
c3ltbShwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIHJldHVybiAvKiBG
b3JtYXRfYXJnX3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICBwYXJhbVsw
XSwKKyAgICAgICAgICAgICAgICAgICAgc3ltbShwYXJhbVsxXSkKKyAgICAgICAgICAgICAgICAg
IF0pOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9zdWJzdF90
eSAqL0Jsb2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1bMV0sCisgICAgICAg
ICAgICAgICAgICAgIHBhcmFtWzBdLAorICAgICAgICAgICAgICAgICAgICBzeW1tKHBhcmFtWzJd
KQorICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgcmV0
dXJuIC8qIEFscGhhX3R5ICovQmxvY2suX18oMTAsIFtzeW1tKHBhcmFtWzBdKV0pOworICAgICAg
Y2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiAvKiBUaGV0YV90eSAqL0Jsb2NrLl9fKDExLCBb
c3ltbShwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICByZXR1cm4gLyog
QW55X3R5ICovQmxvY2suX18oMTIsIFtzeW1tKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSAxMyA6
IAorICAgICAgICAgIHJldHVybiAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW3N5bW0ocGFy
YW1bMF0pXSk7CisgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgcmV0dXJuIC8qIElnbm9yZWRf
cmVhZGVyX3R5ICovQmxvY2suX18oMTQsIFtzeW1tKHBhcmFtWzBdKV0pOworICAgICAgCisgICAg
fQorICB9Cit9CisKK2Z1bmN0aW9uIGZtdHR5X3JlbF9kZXQocGFyYW0pIHsKKyAgaWYgKHR5cGVv
ZiBwYXJhbSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHJl
dHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICov
MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHN3aXRj
aCAocGFyYW0udGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgdmFyIG1hdGNo
ID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmID0gbWF0Y2hbMV07
CisgICAgICAgICAgdmFyIGZhID0gbWF0Y2hbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICBDdXJyeS5fMShmYSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiwgLyogUmVmbCAqLzAp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2hbMl0sCisgICAgICAgICAgICAgICAgICBt
YXRjaFszXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB2
YXIgbWF0Y2gkMSA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAgICAgICAgIHZhciBhZiQx
ID0gbWF0Y2gkMVsxXTsKKyAgICAgICAgICB2YXIgZmEkMSA9IG1hdGNoJDFbMF07CisgICAgICAg
ICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQxLCAvKiBSZWZsICovMCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5
Ll8xKGFmJDEsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJl
ZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDFb
Ml0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQxWzNdCisgICAgICAgICAgICAgICAgXTsKKyAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgIHZhciBtYXRjaCQyID0gZm10dHlfcmVsX2RldChwYXJh
bVswXSk7CisgICAgICAgICAgdmFyIGFmJDIgPSBtYXRjaCQyWzFdOworICAgICAgICAgIHZhciBm
YSQyID0gbWF0Y2gkMlswXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGZh
JDIsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8w
OworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkMiwgLyogUmVmbCAqLzApOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgbWF0Y2gkMlsyXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDJb
M10KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgdmFyIG1h
dGNoJDMgPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKKyAgICAgICAgICB2YXIgYWYkMyA9IG1h
dGNoJDNbMV07CisgICAgICAgICAgdmFyIGZhJDMgPSBtYXRjaCQzWzBdOworICAgICAgICAgIHJl
dHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkMywgLyogUmVmbCAqLzApOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShh
ZiQzLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICov
MDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQzWzJdLAor
ICAgICAgICAgICAgICAgICAgbWF0Y2gkM1szXQorICAgICAgICAgICAgICAgIF07CisgICAgICBj
YXNlIDQgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkNCA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0p
OworICAgICAgICAgIHZhciBhZiQ0ID0gbWF0Y2gkNFsxXTsKKyAgICAgICAgICB2YXIgZmEkNCA9
IG1hdGNoJDRbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQ0LCAv
KiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDQsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgIG1hdGNoJDRbMl0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQ0WzNdCisg
ICAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHZhciBtYXRjaCQ1
ID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDUgPSBtYXRjaCQ1
WzFdOworICAgICAgICAgIHZhciBmYSQ1ID0gbWF0Y2gkNVswXTsKKyAgICAgICAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIEN1cnJ5Ll8xKGZhJDUsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkNSwg
LyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Cisg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkNVsyXSwKKyAgICAg
ICAgICAgICAgICAgIG1hdGNoJDVbM10KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSA2
IDogCisgICAgICAgICAgdmFyIG1hdGNoJDYgPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKKyAg
ICAgICAgICB2YXIgYWYkNiA9IG1hdGNoJDZbMV07CisgICAgICAgICAgdmFyIGZhJDYgPSBtYXRj
aCQ2WzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkNiwgLyogUmVm
bCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICBDdXJyeS5fMShhZiQ2LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICBtYXRjaCQ2WzJdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkNlszXQorICAgICAg
ICAgICAgICAgIF07CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkNyA9IGZt
dHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAgICAgICAgIHZhciBhZiQ3ID0gbWF0Y2gkN1sxXTsK
KyAgICAgICAgICB2YXIgZmEkNyA9IG1hdGNoJDdbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICBDdXJyeS5fMShmYSQ3LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDcsIC8qIFJl
ZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDdbMl0sCisgICAgICAgICAg
ICAgICAgICBtYXRjaCQ3WzNdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgOCA6IAor
ICAgICAgICAgIHZhciBtYXRjaCQ4ID0gZm10dHlfcmVsX2RldChwYXJhbVsxXSk7CisgICAgICAg
ICAgdmFyIGFmJDggPSBtYXRjaCQ4WzFdOworICAgICAgICAgIHZhciBmYSQ4ID0gbWF0Y2gkOFsw
XTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGZhJDgsIC8qIFJlZmwgKi8w
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQ3VycnkuXzEoYWYkOCwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICAgbWF0Y2gkOFsyXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDhbM10KKyAgICAgICAgICAg
ICAgICBdOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgdmFyIG1hdGNoJDkgPSBmbXR0eV9y
ZWxfZGV0KHBhcmFtWzJdKTsKKyAgICAgICAgICB2YXIgZGUgPSBtYXRjaCQ5WzNdOworICAgICAg
ICAgIHZhciBlZCA9IG1hdGNoJDlbMl07CisgICAgICAgICAgdmFyIGFmJDkgPSBtYXRjaCQ5WzFd
OworICAgICAgICAgIHZhciBmYSQ5ID0gbWF0Y2gkOVswXTsKKyAgICAgICAgICB2YXIgdHkgPSB0
cmFucyhzeW1tKHBhcmFtWzBdKSwgcGFyYW1bMV0pOworICAgICAgICAgIHZhciBtYXRjaCQxMCA9
IGZtdHR5X3JlbF9kZXQodHkpOworICAgICAgICAgIHZhciBqZCA9IG1hdGNoJDEwWzNdOworICAg
ICAgICAgIHZhciBkaiA9IG1hdGNoJDEwWzJdOworICAgICAgICAgIHZhciBnYSA9IG1hdGNoJDEw
WzFdOworICAgICAgICAgIHZhciBhZyA9IG1hdGNoJDEwWzBdOworICAgICAgICAgIHJldHVybiAv
KiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQ3VycnkuXzEoZmEkOSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAg
ICBDdXJyeS5fMShhZywgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShnYSwgLyogUmVmbCAqLzAp
OworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQ5LCAvKiBSZWZsICovMCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1
cnJ5Ll8xKGVkLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGRq
LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsK
KyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGpkLCAvKiBSZWZsICovMCk7CisgICAgICAgICAg
ICAgICAgICAgIEN1cnJ5Ll8xKGRlLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBdOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIHZhciBtYXRjaCQxMSA9IGZtdHR5X3Jl
bF9kZXQocGFyYW1bMF0pOworICAgICAgICAgIHZhciBhZiQxMCA9IG1hdGNoJDExWzFdOworICAg
ICAgICAgIHZhciBmYSQxMCA9IG1hdGNoJDExWzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgQ3VycnkuXzEoZmEkMTAsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkMTAsIC8qIFJl
ZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDExWzJdLAorICAgICAgICAg
ICAgICAgICAgbWF0Y2gkMTFbM10KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSAxMSA6
IAorICAgICAgICAgIHZhciBtYXRjaCQxMiA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAg
ICAgICAgIHZhciBhZiQxMSA9IG1hdGNoJDEyWzFdOworICAgICAgICAgIHZhciBmYSQxMSA9IG1h
dGNoJDEyWzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkMTEsIC8q
IFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkMTEsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgIG1hdGNoJDEyWzJdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMTJbM10K
KyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHZhciBtYXRj
aCQxMyA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAgICAgICAgIHZhciBhZiQxMiA9IG1h
dGNoJDEzWzFdOworICAgICAgICAgIHZhciBmYSQxMiA9IG1hdGNoJDEzWzBdOworICAgICAgICAg
IHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkMTIsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3Vycnku
XzEoYWYkMTIsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJl
ZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDEz
WzJdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMTNbM10KKyAgICAgICAgICAgICAgICBdOwor
ICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgIHZhciBtYXRjaCQxNCA9IGZtdHR5X3JlbF9kZXQo
cGFyYW1bMF0pOworICAgICAgICAgIHZhciBkZSQxID0gbWF0Y2gkMTRbM107CisgICAgICAgICAg
dmFyIGVkJDEgPSBtYXRjaCQxNFsyXTsKKyAgICAgICAgICB2YXIgYWYkMTMgPSBtYXRjaCQxNFsx
XTsKKyAgICAgICAgICB2YXIgZmEkMTMgPSBtYXRjaCQxNFswXTsKKyAgICAgICAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIEN1cnJ5Ll8xKGZhJDEzLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDEz
LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsK
KyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGVkJDEsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3Vycnku
XzEoZGUkMSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVm
bCAqLzA7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXTsKKyAgICAgIGNh
c2UgMTQgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMTUgPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBd
KTsKKyAgICAgICAgICB2YXIgZGUkMiA9IG1hdGNoJDE1WzNdOworICAgICAgICAgIHZhciBlZCQy
ID0gbWF0Y2gkMTVbMl07CisgICAgICAgICAgdmFyIGFmJDE0ID0gbWF0Y2gkMTVbMV07CisgICAg
ICAgICAgdmFyIGZhJDE0ID0gbWF0Y2gkMTVbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICBDdXJyeS5fMShmYSQxNCwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQxNCwgLyogUmVm
bCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICBDdXJyeS5fMShlZCQyLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGRlJDIs
IC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwor
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF07CisgICAgICAKKyAgICB9Cisg
IH0KK30KKworZnVuY3Rpb24gdHJhbnModHkxLCB0eTIpIHsKKyAgdmFyIGV4aXQgPSAwOworICBp
ZiAodHlwZW9mIHR5MSA9PT0gIm51bWJlciIpIHsKKyAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51
bWJlciIpIHsKKyAgICAgIGlmICh0eTIpIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAg
ICAgIDgxNiwKKyAgICAgICAgICAgICAgICAyMworICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiBFbmRfb2ZfZm10
dHkgKi8wOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRjaCAodHkyLnRh
ZyB8IDApIHsKKyAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICBleGl0ID0gNjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgIGV4aXQgPSA3Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGV4aXQg
PSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAg
IGV4aXQgPSAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTIgOiAKKyAgICAg
ICAgICAgIGV4aXQgPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTMgOiAK
KyAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
MTQgOiAKKyAgICAgICAgICAgIGV4aXQgPSA1OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgODE2
LAorICAgICAgICAgICAgICAgICAgMjMKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
IF07CisgICAgICB9CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAodHkxLnRhZyB8
IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVt
YmVyIikgeworICAgICAgICAgICAgZXhpdCA9IDg7CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgeworICAgICAgICAgICAgICBj
YXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxvY2suX18o
MCwgW3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOworICAgICAgICAgICAgICBjYXNlIDggOiAKKyAg
ICAgICAgICAgICAgICAgIGV4aXQgPSA2OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDc7CisgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgICAgICAgZXhp
dCA9IDM7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMyA6
IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7CisgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDU7Cisg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAg
aWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBleGl0ID0gODsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcg
fCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIFN0cmluZ190eSAqL0Jsb2NrLl9fKDEsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAg
ICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNjsKKyAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAg
ICAgICAgIGV4aXQgPSA3OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4
aXQgPSAyOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIg
OiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0Owor
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAg
ICAgICAgICAgICAgIGV4aXQgPSA1OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgewor
ICAgICAgICAgICAgZXhpdCA9IDg7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbdHJhbnMo
dHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAg
ICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICBpZiAodHlwZW9m
IHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAg
ICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50MzJf
dHkgKi9CbG9jay5fXygzLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAg
IGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gNzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAg
ICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAg
ICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDQg
OiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAg
IGV4aXQgPSA4OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3
aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAg
ICAgICAgICByZXR1cm4gLyogTmF0aXZlaW50X3R5ICovQmxvY2suX18oNCwgW3RyYW5zKHR5MVsw
XSwgdHkyWzBdKV0pOworICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAg
IGV4aXQgPSA2OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
OSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDc7CisgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7CisgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDQ7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSAxNCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDU7CisgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIg
PT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBleGl0ID0gODsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAg
ICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEludDY0X3R5ICov
QmxvY2suX18oNSwgW3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOworICAgICAgICAgICAgICBjYXNl
IDggOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA2OworICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDc7
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7CisgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICAgICAgZXhp
dCA9IDU7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2IDogCisg
ICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBleGl0
ID0gODsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2gg
KHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIEZsb2F0X3R5ICovQmxvY2suX18oNiwgW3RyYW5zKHR5MVswXSwgdHkyWzBd
KV0pOworICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA2
OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDc7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSAxMiA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgZXhp
dCA9IDQ7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxNCA6
IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDU7CisgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSA3IDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1i
ZXIiKSB7CisgICAgICAgICAgICBleGl0ID0gODsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNh
c2UgNyA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEJvb2xfdHkgKi9CbG9jay5fXyg3
LCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICBp
ZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAg
ICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0
Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgODAyLAorICAgICAgICAgICAgICAgICAgICAyNgor
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgeworICAgICAg
ICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGb3JtYXRfYXJn
X3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zKHR5
MVswXSwgdHkyWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFucyh0eTFbMV0s
IHR5MlsxXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIGNh
c2UgMTAgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQg
PSAyOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAg
ICAgICAgICAgIGV4aXQgPSA1OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQu
bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgODAyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgMjYKKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA5
IDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3Nl
cnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgImNh
bWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAgIDgxMiwKKyAgICAgICAg
ICAgICAgICAgICAgMjgKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRh
ZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gNjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDkgOiAK
KyAgICAgICAgICAgICAgICAgIHZhciB0eSA9IHRyYW5zKHN5bW0odHkxWzFdKSwgdHkyWzBdKTsK
KyAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IGZtdHR5X3JlbF9kZXQodHkpOworICAgICAg
ICAgICAgICAgICAgQ3VycnkuXzEobWF0Y2hbMV0sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAg
ICAgICAgIEN1cnJ5Ll8xKG1hdGNoWzNdLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogRm9ybWF0X3N1YnN0X3R5ICovQmxvY2suX18oOSwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5MVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eTJb
MV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnModHkxWzJdLCB0eTJbMl0pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisg
ICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAg
ICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBl
eGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDI4CisgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
fQorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAg
ICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFsK
KyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJl
LAorICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFs
Rm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgNzgwLAorICAgICAgICAgICAgICAgICAg
ICAyMQorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgaWYgKHR5Mi50YWcgPT09IDEwKSB7CisgICAgICAgICAgICByZXR1
cm4gLyogQWxwaGFfdHkgKi9CbG9jay5fXygxMCwgW3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAg
ICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0
Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgNzgwLAorICAgICAgICAgICAgICAgICAgICAyMQor
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIGlmICh0eXBlb2YgdHky
ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAg
ICAgICAgICAgICAgICA3ODQsCisgICAgICAgICAgICAgICAgICAgIDIxCisgICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2Ug
MTAgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiAv
KiBUaGV0YV90eSAqL0Jsb2NrLl9fKDExLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAg
ICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxG
b3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgNzg0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgMjEKKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSAxMiA6IAorICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAg
ICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgICA3ODgsCisg
ICAgICAgICAgICAgICAgICAgIDE5CisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2gg
KHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAg
ICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVy
biAvKiBBbnlfdHkgKi9CbG9jay5fXygxMiwgW3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOworICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAg
ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFs
Rm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDc4OCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIDE5CisgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgMTMgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAg
ICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgNzkyLAor
ICAgICAgICAgICAgICAgICAgICAyMgorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNo
ICh0eTIudGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDog
CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVhZGVyX3R5ICovQmxvY2suX18oMTMsIFt0
cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICA3OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAyMgorICAgICAgICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgaWYgKHR5
cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIs
CisgICAgICAgICAgICAgICAgICAgIDc5NywKKyAgICAgICAgICAgICAgICAgICAgMzAKKyAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAg
ICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAg
ZXhpdCA9IDI7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAx
MiA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIElnbm9yZWRfcmVhZGVyX3R5ICovQmxvY2suX18oMTQs
IFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICA3OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAzMAorICAgICAgICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9CisgIH0KKyAgc3dpdGNoIChl
eGl0KSB7CisgICAgY2FzZSAxIDogCisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICA3
ODEsCisgICAgICAgICAgICAgICAgMjEKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXTsK
KyAgICBjYXNlIDIgOiAKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgIDc4NSwKKyAg
ICAgICAgICAgICAgICAyMQorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgIGNh
c2UgMyA6IAorICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgNzg5LAorICAgICAgICAg
ICAgICAgIDE5CisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgY2FzZSA0IDog
CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMu
YXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY2FtbGlu
dGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICA3OTMsCisgICAgICAgICAgICAgICAg
MjIKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXTsKKyAgICBjYXNlIDUgOiAKKyAgICAg
ICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRf
ZmFpbHVyZSwKKyAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxG
b3JtYXQubWwiLAorICAgICAgICAgICAgICAgIDc5OCwKKyAgICAgICAgICAgICAgICAzMAorICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgIGNhc2UgNiA6IAorICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJl
LAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5t
bCIsCisgICAgICAgICAgICAgICAgODAzLAorICAgICAgICAgICAgICAgIDI2CisgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgIF07CisgICAgY2FzZSA3IDogCisgICAgICAgIHRocm93IFsKKyAg
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAg
ICAgICAgICAgICAgICA4MTMsCisgICAgICAgICAgICAgICAgMjgKKyAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgXTsKKyAgICBjYXNlIDggOiAKKyAgICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAg
ICAgICAgIDgxNywKKyAgICAgICAgICAgICAgICAyMworICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICBdOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2Vu
KGZvcm1hdHRpbmdfZ2VuKSB7CisgIHJldHVybiBmbXR0eV9vZl9mbXQoZm9ybWF0dGluZ19nZW5b
MF1bMF0pOworfQorCitmdW5jdGlvbiBmbXR0eV9vZl9mbXQoX2ZtdHR5KSB7CisgIHdoaWxlKHRy
dWUpIHsKKyAgICB2YXIgZm10dHkgPSBfZm10dHk7CisgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0g
Im51bWJlciIpIHsKKyAgICAgIHJldHVybiAvKiBFbmRfb2ZfZm10dHkgKi8wOworICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoZm10dHkudGFnIHwgMCkgeworICAgICAgICBjYXNlIDIg
OiAKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfcGFkZGlu
Z19mbXR0eShmbXR0eVswXSwgLyogU3RyaW5nX3R5ICovQmxvY2suX18oMSwgW2ZtdHR5X29mX2Zt
dChmbXR0eVsxXSldKSk7CisgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgdmFyIHR5X3Jl
c3QgPSBmbXR0eV9vZl9mbXQoZm10dHlbM10pOworICAgICAgICAgICAgdmFyIHByZWNfdHkgPSBm
bXR0eV9vZl9wcmVjaXNpb25fZm10dHkoZm10dHlbMl0sIC8qIEludF90eSAqL0Jsb2NrLl9fKDIs
IFt0eV9yZXN0XSkpOworICAgICAgICAgICAgcmV0dXJuIGZtdHR5X29mX3BhZGRpbmdfZm10dHko
Zm10dHlbMV0sIHByZWNfdHkpOworICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIHZhciB0
eV9yZXN0JDEgPSBmbXR0eV9vZl9mbXQoZm10dHlbM10pOworICAgICAgICAgICAgdmFyIHByZWNf
dHkkMSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eShmbXR0eVsyXSwgLyogSW50MzJfdHkgKi9C
bG9jay5fXygzLCBbdHlfcmVzdCQxXSkpOworICAgICAgICAgICAgcmV0dXJuIGZtdHR5X29mX3Bh
ZGRpbmdfZm10dHkoZm10dHlbMV0sIHByZWNfdHkkMSk7CisgICAgICAgIGNhc2UgNiA6IAorICAg
ICAgICAgICAgdmFyIHR5X3Jlc3QkMiA9IGZtdHR5X29mX2ZtdChmbXR0eVszXSk7CisgICAgICAg
ICAgICB2YXIgcHJlY190eSQyID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5KGZtdHR5WzJdLCAv
KiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbdHlfcmVzdCQyXSkpOworICAgICAgICAgICAg
cmV0dXJuIGZtdHR5X29mX3BhZGRpbmdfZm10dHkoZm10dHlbMV0sIHByZWNfdHkkMik7CisgICAg
ICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgdmFyIHR5X3Jlc3QkMyA9IGZtdHR5X29mX2ZtdChm
bXR0eVszXSk7CisgICAgICAgICAgICB2YXIgcHJlY190eSQzID0gZm10dHlfb2ZfcHJlY2lzaW9u
X2ZtdHR5KGZtdHR5WzJdLCAvKiBJbnQ2NF90eSAqL0Jsb2NrLl9fKDUsIFt0eV9yZXN0JDNdKSk7
CisgICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfcGFkZGluZ19mbXR0eShmbXR0eVsxXSwgcHJl
Y190eSQzKTsKKyAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICB2YXIgdHlfcmVzdCQ0ID0g
Zm10dHlfb2ZfZm10KGZtdHR5WzNdKTsKKyAgICAgICAgICAgIHZhciBwcmVjX3R5JDQgPSBmbXR0
eV9vZl9wcmVjaXNpb25fZm10dHkoZm10dHlbMl0sIC8qIEZsb2F0X3R5ICovQmxvY2suX18oNiwg
W3R5X3Jlc3QkNF0pKTsKKyAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5
KGZtdHR5WzFdLCBwcmVjX3R5JDQpOworICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgIHJl
dHVybiAvKiBCb29sX3R5ICovQmxvY2suX18oNywgW2ZtdHR5X29mX2ZtdChmbXR0eVswXSldKTsK
KyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgX2ZtdHR5ID0gZm10dHlbMF07CisgICAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogRm9ybWF0X2FyZ190eSAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICBmbXR0eVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICBmbXR0eV9vZl9mbXQoZm10dHlb
Ml0pCisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICBjYXNlIDE0IDogCisgICAgICAg
ICAgICB2YXIgdHkgPSBmbXR0eVsxXTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGb3JtYXRfc3Vi
c3RfdHkgKi9CbG9jay5fXyg5LCBbCisgICAgICAgICAgICAgICAgICAgICAgdHksCisgICAgICAg
ICAgICAgICAgICAgICAgdHksCisgICAgICAgICAgICAgICAgICAgICAgZm10dHlfb2ZfZm10KGZt
dHR5WzJdKQorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgY2FzZSAxNSA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIEFscGhhX3R5ICovQmxvY2suX18oMTAsIFtmbXR0eV9vZl9mbXQo
Zm10dHlbMF0pXSk7CisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBU
aGV0YV90eSAqL0Jsb2NrLl9fKDExLCBbZm10dHlfb2ZfZm10KGZtdHR5WzBdKV0pOworICAgICAg
ICBjYXNlIDExIDogCisgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgY2FzZSAxNyA6IAorICAg
ICAgICAgICAgX2ZtdHR5ID0gZm10dHlbMV07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICBjYXNlIDE4IDogCisgICAgICAgICAgICByZXR1cm4gQ2FtbGludGVybmFsRm9ybWF0
QmFzaWNzLmNvbmNhdF9mbXR0eShmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbihmbXR0eVswXSksIGZt
dHR5X29mX2ZtdChmbXR0eVsxXSkpOworICAgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogUmVhZGVyX3R5ICovQmxvY2suX18oMTMsIFtmbXR0eV9vZl9mbXQoZm10dHlbMF0p
XSk7CisgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBTdHJpbmdfdHkg
Ki9CbG9jay5fXygxLCBbZm10dHlfb2ZfZm10KGZtdHR5WzJdKV0pOworICAgICAgICBjYXNlIDIx
IDogCisgICAgICAgICAgICByZXR1cm4gLyogSW50X3R5ICovQmxvY2suX18oMiwgW2ZtdHR5X29m
X2ZtdChmbXR0eVsxXSldKTsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICBjYXNlIDIyIDogCisgICAgICAgICAgICByZXR1cm4gLyogQ2hhcl90eSAqL0Jsb2Nr
Ll9fKDAsIFtmbXR0eV9vZl9mbXQoZm10dHlbMF0pXSk7CisgICAgICAgIGNhc2UgMjMgOiAKKyAg
ICAgICAgICAgIHZhciBpZ24gPSBmbXR0eVswXTsKKyAgICAgICAgICAgIHZhciBmbXQgPSBmbXR0
eVsxXTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgaWduID09PSAibnVtYmVyIikgeworICAgICAg
ICAgICAgICBzd2l0Y2ggKGlnbikgeworICAgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogSWdub3JlZF9yZWFkZXJfdHkgKi9CbG9jay5fXygxNCwg
W2ZtdHR5X29mX2ZtdChmbXQpXSk7CisgICAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAg
ICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAg
ICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9mbXQo
Zm10KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHN3aXRjaCAoaWduLnRhZyB8IDApIHsK
KyAgICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENh
bWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10dHkoaWduWzFdLCBmbXR0eV9vZl9mbXQo
Zm10KSk7CisgICAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgY2FzZSAzIDog
CisgICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgY2FzZSA1IDogCisg
ICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgY2FzZSA3IDogCisgICAg
ICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfZm10KGZtdCk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSAyNCA6IAorICAg
ICAgICAgICAgcmV0dXJuIGZtdHR5X29mX2N1c3RvbShmbXR0eVswXSwgZm10dHlfb2ZfZm10KGZt
dHR5WzJdKSk7CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24g
Zm10dHlfb2ZfY3VzdG9tKGFyaXR5LCBmbXR0eSkgeworICBpZiAoYXJpdHkpIHsKKyAgICByZXR1
cm4gLyogQW55X3R5ICovQmxvY2suX18oMTIsIFtmbXR0eV9vZl9jdXN0b20oYXJpdHlbMF0sIGZt
dHR5KV0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmbXR0eTsKKyAgfQorfQorCitmdW5j
dGlvbiBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5KHBhZCwgZm10dHkpIHsKKyAgaWYgKHR5cGVvZiBw
YWQgPT09ICJudW1iZXIiIHx8ICFwYWQudGFnKSB7CisgICAgcmV0dXJuIGZtdHR5OworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbZm10dHldKTsKKyAg
fQorfQorCitmdW5jdGlvbiBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkocHJlYywgZm10dHkpIHsK
KyAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIiAmJiBwcmVjICE9PSAwKSB7CisgICAgcmV0
dXJuIC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFtmbXR0eV0pOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiBmbXR0eTsKKyAgfQorfQorCit2YXIgVHlwZV9taXNtYXRjaCA9IENhbWxfZXhjZXB0
aW9ucy5jcmVhdGUoIkNhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoIik7CisKK2Z1bmN0
aW9uIHR5cGVfcGFkZGluZyhwYWQsIGZtdHR5KSB7CisgIGlmICh0eXBlb2YgcGFkID09PSAibnVt
YmVyIikgeworICAgIHJldHVybiAvKiBQYWRkaW5nX2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAg
IC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgZm10dHkKKyAgICAgICAgICBdOworICB9
CisgIGVsc2UgaWYgKHBhZC50YWcpIHsKKyAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVy
IikgeworICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICB9CisgICAgZWxzZSBpZiAoZm10
dHkudGFnID09PSAyKSB7CisgICAgICByZXR1cm4gLyogUGFkZGluZ19mbXR0eV9FQkIgKi9bCisg
ICAgICAgICAgICAgIC8qIEFyZ19wYWRkaW5nICovQmxvY2suX18oMSwgW3BhZFswXV0pLAorICAg
ICAgICAgICAgICBmbXR0eVswXQorICAgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gLyogUGFkZGluZ19mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAvKiBMaXRfcGFkZGluZyAq
L0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICBwYWRbMF0sCisgICAgICAgICAgICAgICAg
cGFkWzFdCisgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgZm10dHkKKyAgICAgICAgICBd
OworICB9Cit9CisKK2Z1bmN0aW9uIHR5cGVfcGFkcHJlYyhwYWQsIHByZWMsIGZtdHR5KSB7Cisg
IHZhciBtYXRjaCA9IHR5cGVfcGFkZGluZyhwYWQsIGZtdHR5KTsKKyAgaWYgKHR5cGVvZiBwcmVj
ID09PSAibnVtYmVyIikgeworICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICB2YXIgbWF0Y2gk
MSA9IG1hdGNoWzFdOworICAgICAgaWYgKHR5cGVvZiBtYXRjaCQxID09PSAibnVtYmVyIikgewor
ICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgfQorICAgICAgZWxzZSBpZiAobWF0
Y2gkMS50YWcgPT09IDIpIHsKKyAgICAgICAgcmV0dXJuIC8qIFBhZHByZWNfZm10dHlfRUJCICov
WworICAgICAgICAgICAgICAgIG1hdGNoWzBdLAorICAgICAgICAgICAgICAgIC8qIEFyZ19wcmVj
aXNpb24gKi8xLAorICAgICAgICAgICAgICAgIG1hdGNoJDFbMF0KKyAgICAgICAgICAgICAgXTsK
KyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAg
ICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdHR5X0VC
QiAqL1sKKyAgICAgICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgIC8qIE5vX3ByZWNp
c2lvbiAqLzAsCisgICAgICAgICAgICAgIG1hdGNoWzFdCisgICAgICAgICAgICBdOworICAgIH0K
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogUGFkcHJlY19mbXR0eV9FQkIgKi9bCisgICAg
ICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgICAgIC8qIExpdF9wcmVjaXNpb24gKi9bcHJlY1sw
XV0sCisgICAgICAgICAgICBtYXRjaFsxXQorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rp
b24gdHlwZV9pZ25vcmVkX3BhcmFtX29uZShpZ24sIGZtdCwgZm10dHkpIHsKKyAgdmFyIG1hdGNo
ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdCwgZm10dHkpOworICByZXR1cm4gLyogRm10X2ZtdHR5X0VC
QiAqL1sKKyAgICAgICAgICAvKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAg
ICAgICAgICAgaWduLAorICAgICAgICAgICAgICBtYXRjaFswXQorICAgICAgICAgICAgXSksCisg
ICAgICAgICAgbWF0Y2hbMV0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gdHlwZV9mb3JtYXRf
Z2VuKGZtdCwgZm10dHkpIHsKKyAgaWYgKHR5cGVvZiBmbXQgPT09ICJudW1iZXIiKSB7CisgICAg
cmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0
ICovMCwKKyAgICAgICAgICAgIGZtdHR5CisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAg
ICBzd2l0Y2ggKGZtdC50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICBpZiAo
dHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNt
YXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnKSB7CisgICAg
ICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHZhciBtYXRjaCA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5
WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAg
ICAgICAgICAgICAvKiBDaGFyICovQmxvY2suX18oMCwgW21hdGNoWzBdXSksCisgICAgICAgICAg
ICAgICAgICAgIG1hdGNoWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10
dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcpIHsKKyAgICAgICAgICAgIHRo
cm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgdmFyIG1hdGNoJDEgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzBdLCBmbXR0eVswXSk7Cisg
ICAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgLyogQ2FtbF9jaGFyICovQmxvY2suX18oMSwgW21hdGNoJDFbMF1dKSwKKyAgICAgICAgICAg
ICAgICAgICAgbWF0Y2gkMVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMiA9
IHR5cGVfcGFkZGluZyhmbXRbMF0sIGZtdHR5KTsKKyAgICAgICAgICB2YXIgbWF0Y2gkMyA9IG1h
dGNoJDJbMV07CisgICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQzID09PSAibnVtYmVyIikgewor
ICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSBpZiAobWF0Y2gkMy50YWcgPT09IDEpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0g
dHlwZV9mb3JtYXRfZ2VuKGZtdFsxXSwgbWF0Y2gkM1swXSk7CisgICAgICAgICAgICByZXR1cm4g
LyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nICovQmxv
Y2suX18oMiwgWworICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMlswXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDRbMF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAg
ICAgICAgICAgICAgICAgICAgbWF0Y2gkNFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMyA6IAorICAgICAg
ICAgIHZhciBtYXRjaCQ1ID0gdHlwZV9wYWRkaW5nKGZtdFswXSwgZm10dHkpOworICAgICAgICAg
IHZhciBtYXRjaCQ2ID0gbWF0Y2gkNVsxXTsKKyAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDYg
PT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChtYXRjaCQ2LnRhZyA9PT0gMSkgeworICAgICAgICAg
ICAgdmFyIG1hdGNoJDcgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzFdLCBtYXRjaCQ2WzBdKTsKKyAg
ICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAg
ICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDVbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ3WzBdCisgICAgICAg
ICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDdbMV0KKyAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIDQgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkOCA9IHR5cGVfcGFkcHJlYyhmbXRb
MV0sIGZtdFsyXSwgZm10dHkpOworICAgICAgICAgIHZhciBtYXRjaCQ5ID0gbWF0Y2gkOFsyXTsK
KyAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmICht
YXRjaCQ5LnRhZyA9PT0gMikgeworICAgICAgICAgICAgdmFyIG1hdGNoJDEwID0gdHlwZV9mb3Jt
YXRfZ2VuKGZtdFszXSwgbWF0Y2gkOVswXSk7CisgICAgICAgICAgICByZXR1cm4gLyogRm10X2Zt
dHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2suX18oNCwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkOFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDhbMV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQxMFswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAor
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21h
dGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNSA6IAorICAg
ICAgICAgIHZhciBtYXRjaCQxMSA9IHR5cGVfcGFkcHJlYyhmbXRbMV0sIGZtdFsyXSwgZm10dHkp
OworICAgICAgICAgIHZhciBtYXRjaCQxMiA9IG1hdGNoJDExWzJdOworICAgICAgICAgIGlmICh0
eXBlb2YgbWF0Y2gkMTIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21p
c21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChtYXRjaCQxMi50YWcgPT09
IDMpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxMyA9IHR5cGVfZm9ybWF0X2dlbihmbXRbM10s
IG1hdGNoJDEyWzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWwor
ICAgICAgICAgICAgICAgICAgICAvKiBJbnQzMiAqL0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZtdFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDExWzBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTFbMV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQxM1swXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQxM1sxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAg
ICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHZh
ciBtYXRjaCQxNCA9IHR5cGVfcGFkcHJlYyhmbXRbMV0sIGZtdFsyXSwgZm10dHkpOworICAgICAg
ICAgIHZhciBtYXRjaCQxNSA9IG1hdGNoJDE0WzJdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0
Y2gkMTUgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChtYXRjaCQxNS50YWcgPT09IDQpIHsKKyAg
ICAgICAgICAgIHZhciBtYXRjaCQxNiA9IHR5cGVfZm9ybWF0X2dlbihmbXRbM10sIG1hdGNoJDE1
WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAg
ICAgICAgICAgICAvKiBOYXRpdmVpbnQgKi9CbG9jay5fXyg2LCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICBmbXRbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxNFswXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE0WzFdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMTZbMF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkMTZbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAg
ICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICB2YXIgbWF0
Y2gkMTcgPSB0eXBlX3BhZHByZWMoZm10WzFdLCBmbXRbMl0sIGZtdHR5KTsKKyAgICAgICAgICB2
YXIgbWF0Y2gkMTggPSBtYXRjaCQxN1syXTsKKyAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDE4
ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMTgudGFnID09PSA1KSB7CisgICAgICAg
ICAgICB2YXIgbWF0Y2gkMTkgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzNdLCBtYXRjaCQxOFswXSk7
CisgICAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgLyogSW50NjQgKi9CbG9jay5fXyg3LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBm
bXRbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxN1swXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDE3WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gk
MTlbMF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0
Y2gkMTlbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMjAgPSB0
eXBlX3BhZHByZWMoZm10WzFdLCBmbXRbMl0sIGZtdHR5KTsKKyAgICAgICAgICB2YXIgbWF0Y2gk
MjEgPSBtYXRjaCQyMFsyXTsKKyAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDIxID09PSAibnVt
YmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMjEudGFnID09PSA2KSB7CisgICAgICAgICAgICB2YXIg
bWF0Y2gkMjIgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzNdLCBtYXRjaCQyMVswXSk7CisgICAgICAg
ICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyog
RmxvYXQgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMFswXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDIwWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjJbMF0KKyAg
ICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjJbMV0K
KyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVt
YmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSA3KSB7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkMjMgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzBdLCBmbXR0eVswXSk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogQm9vbCAq
L0Jsb2NrLl9fKDksIFttYXRjaCQyM1swXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQy
M1sxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMjQgPSB0eXBl
X2Zvcm1hdF9nZW4oZm10WzBdLCBmbXR0eSk7CisgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0
eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAvKiBGbHVzaCAqL0Jsb2NrLl9fKDEwLCBbbWF0
Y2gkMjRbMF1dKSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDI0WzFdCisgICAgICAgICAgICAg
ICAgXTsKKyAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMjUgPSB0eXBlX2Zv
cm1hdF9nZW4oZm10WzFdLCBmbXR0eSk7CisgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9F
QkIgKi9bCisgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEx
LCBbCisgICAgICAgICAgICAgICAgICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDI1WzBdCisgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAg
bWF0Y2gkMjVbMV0KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSAxMiA6IAorICAgICAg
ICAgIHZhciBtYXRjaCQyNiA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMV0sIGZtdHR5KTsKKyAgICAg
ICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIENo
YXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisgICAgICAgICAgICAgICAgICAgICAgZm10WzBd
LAorICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI2WzBdCisgICAgICAgICAgICAgICAgICAg
IF0pLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMjZbMV0KKyAgICAgICAgICAgICAgICBdOwor
ICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIi
KSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAg
ICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDgpIHsKKyAgICAgICAgICAgIHZhciBzdWJfZm10
dHkkcHJpbWUgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX25vdGVx
dWFsKC8qIEZtdHR5X0VCQiAqL1tmbXRbMV1dLCAvKiBGbXR0eV9FQkIgKi9bc3ViX2ZtdHR5JHBy
aW1lXSkpIHsKKyAgICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHZhciBtYXRjaCQyNyA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMl0sIGZt
dHR5WzFdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAg
ICAgICAgICAgICAgICAvKiBGb3JtYXRfYXJnICovQmxvY2suX18oMTMsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZtdFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9mbXR0eSRw
cmltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI3WzBdCisgICAgICAgICAgICAg
ICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI3WzFdCisgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRo
cm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSAxNCA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChmbXR0eS50YWcgPT09IDkpIHsKKyAgICAgICAgICAgIHZhciBzdWJfZm10dHkxID0g
Zm10dHlbMF07CisgICAgICAgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBGbXR0
eV9FQkIgKi9bQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChmbXRbMV0pXSwgLyog
Rm10dHlfRUJCICovW0NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3ViX2ZtdHR5
MSldKSkgeworICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgdmFyIG1hdGNoJDI4ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsyXSwgQ2Ft
bGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChmbXR0eVsyXSkpOworICAgICAgICAgICAg
cmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIEZvcm1h
dF9zdWJzdCAqL0Jsb2NrLl9fKDE0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0s
CisgICAgICAgICAgICAgICAgICAgICAgICBzdWJfZm10dHkxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkMjhbMF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAg
ICAgICAgICAgbWF0Y2gkMjhbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAg
ICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgaWYg
KHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlz
bWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMTAp
IHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyOSA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZt
dHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAg
ICAgICAgICAgICAgICAvKiBBbHBoYSAqL0Jsb2NrLl9fKDE1LCBbbWF0Y2gkMjlbMF1dKSwKKyAg
ICAgICAgICAgICAgICAgICAgbWF0Y2gkMjlbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRj
aDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE2IDogCisgICAg
ICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93
IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRh
ZyA9PT0gMTEpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQzMCA9IHR5cGVfZm9ybWF0X2dlbihm
bXRbMF0sIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICov
WworICAgICAgICAgICAgICAgICAgICAvKiBUaGV0YSAqL0Jsb2NrLl9fKDE2LCBbbWF0Y2gkMzBb
MF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMzBbMV0KKyAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlw
ZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE3
IDogCisgICAgICAgICAgdmFyIG1hdGNoJDMxID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsxXSwgZm10
dHkpOworICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAg
ICAgICAgLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAgICAg
ICAgICAgIGZtdFswXSwKKyAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQzMVswXQorICAgICAg
ICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDMxWzFdCisgICAgICAg
ICAgICAgICAgXTsKKyAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICB2YXIgZm9ybWF0dGluZ19n
ZW4gPSBmbXRbMF07CisgICAgICAgICAgdmFyIGZtdDAgPSBmbXRbMV07CisgICAgICAgICAgdmFy
IGZtdHR5MCA9IGZtdHR5OworICAgICAgICAgIGlmIChmb3JtYXR0aW5nX2dlbi50YWcpIHsKKyAg
ICAgICAgICAgIHZhciBtYXRjaCQzMiA9IGZvcm1hdHRpbmdfZ2VuWzBdOworICAgICAgICAgICAg
dmFyIG1hdGNoJDMzID0gdHlwZV9mb3JtYXRfZ2VuKG1hdGNoJDMyWzBdLCBmbXR0eTApOworICAg
ICAgICAgICAgdmFyIG1hdGNoJDM0ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdDAsIG1hdGNoJDMzWzFd
KTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAg
ICAgICAgICAvKiBGb3JtYXR0aW5nX2dlbiAqL0Jsb2NrLl9fKDE4LCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBPcGVuX2JveCAqL0Jsb2NrLl9fKDEsIFsvKiBGb3JtYXQgKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQzM1swXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDMyWzFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXV0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMzRbMF0KKyAgICAgICAgICAgICAgICAg
ICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMzRbMV0KKyAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIG1h
dGNoJDM1ID0gZm9ybWF0dGluZ19nZW5bMF07CisgICAgICAgICAgICB2YXIgbWF0Y2gkMzYgPSB0
eXBlX2Zvcm1hdF9nZW4obWF0Y2gkMzVbMF0sIGZtdHR5MCk7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkMzcgPSB0eXBlX2Zvcm1hdF9nZW4oZm10MCwgbWF0Y2gkMzZbMV0pOworICAgICAgICAgICAg
cmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIEZvcm1h
dHRpbmdfZ2VuICovQmxvY2suX18oMTgsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9w
ZW5fdGFnICovQmxvY2suX18oMCwgWy8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoJDM2WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0
Y2gkMzVbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQzN1swXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQzN1sxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg
ICB9CisgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51
bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMTMpIHsKKyAgICAgICAgICAgIHZhciBt
YXRjaCQzOCA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5WzBdKTsKKyAgICAgICAgICAg
IHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBSZWFk
ZXIgKi9CbG9jay5fXygxOSwgW21hdGNoJDM4WzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1h
dGNoJDM4WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10
dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDEpIHsKKyAgICAgICAg
ICAgIHZhciBtYXRjaCQzOSA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMl0sIGZtdHR5WzBdKTsKKyAg
ICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAg
ICAvKiBTY2FuX2NoYXJfc2V0ICovQmxvY2suX18oMjAsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZtdFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFsxXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDM5WzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDM5WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAg
ICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7
CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyMSA6IAorICAgICAg
ICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBU
eXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcg
PT09IDIpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0MCA9IHR5cGVfZm9ybWF0X2dlbihmbXRb
MV0sIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWwor
ICAgICAgICAgICAgICAgICAgICAvKiBTY2FuX2dldF9jb3VudGVyICovQmxvY2suX18oMjEsIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDQwWzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDQwWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAg
fQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgIHZhciBpZ24g
PSBmbXRbMF07CisgICAgICAgICAgdmFyIGZtdCQxID0gZm10WzFdOworICAgICAgICAgIHZhciBm
bXR0eSQxID0gZm10dHk7CisgICAgICAgICAgaWYgKHR5cGVvZiBpZ24gPT09ICJudW1iZXIiKSB7
CisgICAgICAgICAgICBzd2l0Y2ggKGlnbikgeworICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAg
ICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkkMSA9PT0gIm51bWJlciIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZtdHR5JDEudGFnID09PSAxNCkgeworICAgICAg
ICAgICAgICAgICAgICB2YXIgbWF0Y2gkNDEgPSB0eXBlX2Zvcm1hdF9nZW4oZm10JDEsIGZtdHR5
JDFbMF0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18o
MjMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSWdub3JlZF9yZWFkZXIg
Ki8zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0MVswXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkNDFbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aHJv
dyBUeXBlX21pc21hdGNoOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICBjYXNlIDEgOiAK
KyAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUoaWduLCBmbXQkMSwgZm10
dHkkMSk7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoaWduLnRhZyB8IDApIHsKKyAgICAgICAg
ICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZV9pZ25vcmVkX3Bh
cmFtX29uZSgvKiBJZ25vcmVkX2Zvcm1hdF9hcmcgKi9CbG9jay5fXyg3LCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWduWzFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10JDEsIGZt
dHR5JDEpOworICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgIHZhciBt
YXRjaCQ0MiA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKGlnblsxXSwgZm10JDEs
IGZtdHR5JDEpOworICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDQzID0gbWF0Y2gkNDJbMV07
CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAqL0Jsb2Nr
Ll9fKDgsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25bMF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNDJbMF0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aCQ0M1swXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQ0M1sxXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAg
ICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgIGNhc2Ug
NCA6IAorICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgY2FzZSA2IDogCisg
ICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZShpZ24sIGZtdCQxLCBmbXR0
eSQxKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
Y2FzZSAyMiA6IAorICAgICAgY2FzZSAyNCA6IAorICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0
Y2g7CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gdHlwZV9pZ25vcmVkX2Zvcm1h
dF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5LCBmbXQsIGZtdHR5KSB7CisgIGlmICh0eXBlb2Ygc3Vi
X2ZtdHR5ID09PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWwor
ICAgICAgICAgICAgLyogRW5kX29mX2ZtdHR5ICovMCwKKyAgICAgICAgICAgIHR5cGVfZm9ybWF0
X2dlbihmbXQsIGZtdHR5KQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNo
IChzdWJfZm10dHkudGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgaWYgKHR5
cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0
Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZykgeworICAgICAg
ICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICB2YXIgbWF0Y2ggPSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlv
bihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZt
dHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIENoYXJfdHkgKi9CbG9jay5f
XygwLCBbbWF0Y2hbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0KKyAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAg
ICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYg
KGZtdHR5LnRhZyA9PT0gMSkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDEgPSB0eXBlX2lnbm9y
ZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIFN0cmluZ190eSAqL0Jsb2NrLl9fKDEsIFttYXRjaCQxWzBdXSksCisgICAgICAgICAgICAg
ICAgICAgIG1hdGNoJDFbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAg
ICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICBpZiAodHlw
ZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRj
aDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAyKSB7Cisg
ICAgICAgICAgICB2YXIgbWF0Y2gkMiA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9u
KHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICByZXR1cm4gLyogRm10
dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogSW50X3R5ICovQmxvY2suX18o
MiwgW21hdGNoJDJbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMlsxXQorICAgICAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgMyA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7
CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAg
ICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDMpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQzID0g
dHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5
WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAg
ICAgICAgICAgICAvKiBJbnQzMl90eSAqL0Jsb2NrLl9fKDMsIFttYXRjaCQzWzBdXSksCisgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDNbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsK
KyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAg
ICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlw
ZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09
PSA0KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vi
c3RpdHV0aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICByZXR1
cm4gLyogRm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogTmF0aXZlaW50
X3R5ICovQmxvY2suX18oNCwgW21hdGNoJDRbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0
Y2gkNFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkg
PT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDUpIHsKKyAgICAgICAgICAg
IHZhciBtYXRjaCQ1ID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5
WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJC
ICovWworICAgICAgICAgICAgICAgICAgICAvKiBJbnQ2NF90eSAqL0Jsb2NrLl9fKDUsIFttYXRj
aCQ1WzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDVbMV0KKyAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cg
VHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDYgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAg
ICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBp
ZiAoZm10dHkudGFnID09PSA2KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkNiA9IHR5cGVfaWdu
b3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7Cisg
ICAgICAgICAgICByZXR1cm4gLyogRm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgLyogRmxvYXRfdHkgKi9CbG9jay5fXyg2LCBbbWF0Y2gkNlswXV0pLAorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQ2WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAg
ICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA3IDogCisgICAgICAgICAgaWYgKHR5
cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0
Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gNykgewor
ICAgICAgICAgICAgdmFyIG1hdGNoJDcgPSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlv
bihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZt
dHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIEJvb2xfdHkgKi9CbG9jay5f
Xyg3LCBbbWF0Y2gkN1swXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQ3WzFdCisgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSA4IDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIp
IHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAg
ICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gOCkgeworICAgICAgICAgICAgdmFyIHN1YjJfZm10
dHkkcHJpbWUgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX25vdGVx
dWFsKC8qIEZtdHR5X0VCQiAqL1tzdWJfZm10dHlbMF1dLCAvKiBGbXR0eV9FQkIgKi9bc3ViMl9m
bXR0eSRwcmltZV0pKSB7CisgICAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB2YXIgbWF0Y2gkOCA9IHR5cGVfaWdub3JlZF9mb3JtYXRf
c3Vic3RpdHV0aW9uKHN1Yl9mbXR0eVsxXSwgZm10LCBmbXR0eVsxXSk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogRm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0
X2FyZ190eSAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YjJfZm10
dHkkcHJpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ4WzBdCisgICAgICAgICAg
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDhbMV0KKyAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
dGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIDkgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewor
ICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSBpZiAoZm10dHkudGFnID09PSA5KSB7CisgICAgICAgICAgICB2YXIgc3ViMl9mbXR0eSRw
cmltZSQxID0gZm10dHlbMV07CisgICAgICAgICAgICB2YXIgc3ViMV9mbXR0eSRwcmltZSA9IGZt
dHR5WzBdOworICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyogRm10dHlf
RUJCICovW0NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3ViX2ZtdHR5WzBdKV0s
IC8qIEZtdHR5X0VCQiAqL1tDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKHN1YjFf
Zm10dHkkcHJpbWUpXSkpIHsKKyAgICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX25vdGVxdWFsKC8qIEZt
dHR5X0VCQiAqL1tDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKHN1Yl9mbXR0eVsx
XSldLCAvKiBGbXR0eV9FQkIgKi9bQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChz
dWIyX2ZtdHR5JHByaW1lJDEpXSkpIHsKKyAgICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRj
aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBzdWJfZm10dHkkcHJpbWUgPSB0cmFu
cyhzeW1tKHN1YjFfZm10dHkkcHJpbWUpLCBzdWIyX2ZtdHR5JHByaW1lJDEpOworICAgICAgICAg
ICAgdmFyIG1hdGNoJDkgPSBmbXR0eV9yZWxfZGV0KHN1Yl9mbXR0eSRwcmltZSk7CisgICAgICAg
ICAgICBDdXJyeS5fMShtYXRjaCQ5WzFdLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICBDdXJy
eS5fMShtYXRjaCQ5WzNdLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTAg
PSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihDYW1saW50ZXJuYWxGb3JtYXRCYXNp
Y3MuZXJhc2VfcmVsKHN1Yl9mbXR0eVsyXSksIGZtdCwgZm10dHlbMl0pOworICAgICAgICAgICAg
cmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIEZvcm1h
dF9zdWJzdF90eSAqL0Jsb2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YjFf
Zm10dHkkcHJpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBzdWIyX2ZtdHR5JHByaW1lJDEs
CisgICAgICAgICAgICAgICAgICAgICAgICBzeW1tKG1hdGNoJDEwWzBdKQorICAgICAgICAgICAg
ICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMFsxXQorICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0
aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgMTAgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewor
ICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSBpZiAoZm10dHkudGFnID09PSAxMCkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDExID0g
dHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5
WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAg
ICAgICAgICAgICAvKiBBbHBoYV90eSAqL0Jsb2NrLl9fKDEwLCBbbWF0Y2gkMTFbMF1dKSwKKyAg
ICAgICAgICAgICAgICAgICAgbWF0Y2gkMTFbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRj
aDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDExIDogCisgICAg
ICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93
IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRh
ZyA9PT0gMTEpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxMiA9IHR5cGVfaWdub3JlZF9mb3Jt
YXRfc3Vic3RpdHV0aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAg
ICByZXR1cm4gLyogRm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogVGhl
dGFfdHkgKi9CbG9jay5fXygxMSwgW21hdGNoJDEyWzBdXSksCisgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDEyWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHRocm93IFR5cGVf
bWlzbWF0Y2g7CisgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9
PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMTMpIHsKKyAgICAgICAgICAg
IHZhciBtYXRjaCQxMyA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKHN1Yl9mbXR0
eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICByZXR1cm4gLyogRm10dHlfZm10X0VC
QiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogUmVhZGVyX3R5ICovQmxvY2suX18oMTMsIFtt
YXRjaCQxM1swXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQxM1sxXQorICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0
aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgMTQgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewor
ICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSBpZiAoZm10dHkudGFnID09PSAxNCkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDE0ID0g
dHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5
WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAg
ICAgICAgICAgICAvKiBJZ25vcmVkX3JlYWRlcl90eSAqL0Jsb2NrLl9fKDE0LCBbbWF0Y2gkMTRb
MF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTRbMV0KKyAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlw
ZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9
CisgIH0KK30KKworZnVuY3Rpb24gdHlwZV9mb3JtYXQoZm10LCBmbXR0eSkgeworICB2YXIgbWF0
Y2ggPSB0eXBlX2Zvcm1hdF9nZW4oZm10LCBmbXR0eSk7CisgIGlmICh0eXBlb2YgbWF0Y2hbMV0g
PT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIG1hdGNoWzBdOworICB9CisgIGVsc2UgeworICAg
IHRocm93IFR5cGVfbWlzbWF0Y2g7CisgIH0KK30KKworZnVuY3Rpb24gcmVjYXN0KGZtdCwgZm10
dHkpIHsKKyAgcmV0dXJuIHR5cGVfZm9ybWF0KGZtdCwgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNz
LmVyYXNlX3JlbChzeW1tKGZtdHR5KSkpOworfQorCitmdW5jdGlvbiBmaXhfcGFkZGluZyhwYWR0
eSwgd2lkdGgsIHN0cikgeworICB2YXIgbGVuID0gc3RyLmxlbmd0aDsKKyAgdmFyIG1hdGNoXzAw
MCA9IFBlcnZhc2l2ZXMuYWJzKHdpZHRoKTsKKyAgdmFyIG1hdGNoXzAwMSA9IHdpZHRoIDwgMCA/
IC8qIExlZnQgKi8wIDogcGFkdHk7CisgIHZhciBwYWR0eSQxID0gbWF0Y2hfMDAxOworICB2YXIg
d2lkdGgkMSA9IG1hdGNoXzAwMDsKKyAgaWYgKHdpZHRoJDEgPD0gbGVuKSB7CisgICAgcmV0dXJu
IHN0cjsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgcmVzID0gQnl0ZXMubWFrZSh3aWR0aCQxLCBw
YWR0eSQxID09PSAvKiBaZXJvcyAqLzIgPyAvKiAiMCIgKi80OCA6IC8qICIgIiAqLzMyKTsKKyAg
ICBzd2l0Y2ggKHBhZHR5JDEpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICQkU3RyaW5n
LmJsaXQoc3RyLCAwLCByZXMsIDAsIGxlbik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAkJFN0cmluZy5ibGl0KHN0ciwgMCwgcmVzLCB3aWR0aCQxIC0gbGVu
IHwgMCwgbGVuKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAg
IGlmIChsZW4gPiAwICYmIChDYW1sX3N0cmluZy5nZXQoc3RyLCAwKSA9PT0gLyogIisiICovNDMg
fHwgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgMCkgPT09IC8qICItIiAqLzQ1IHx8IENhbWxfc3RyaW5n
LmdldChzdHIsIDApID09PSAvKiAiICIgKi8zMikpIHsKKyAgICAgICAgICAgIHJlc1swXSA9IENh
bWxfc3RyaW5nLmdldChzdHIsIDApOworICAgICAgICAgICAgJCRTdHJpbmcuYmxpdChzdHIsIDEs
IHJlcywgKHdpZHRoJDEgLSBsZW4gfCAwKSArIDEgfCAwLCBsZW4gLSAxIHwgMCk7CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgaWYgKGxlbiA+IDEgJiYgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwg
MCkgPT09IC8qICIwIiAqLzQ4ICYmIChDYW1sX3N0cmluZy5nZXQoc3RyLCAxKSA9PT0gLyogIngi
ICovMTIwIHx8IENhbWxfc3RyaW5nLmdldChzdHIsIDEpID09PSAvKiAiWCIgKi84OCkpIHsKKyAg
ICAgICAgICAgIHJlc1sxXSA9IENhbWxfc3RyaW5nLmdldChzdHIsIDEpOworICAgICAgICAgICAg
JCRTdHJpbmcuYmxpdChzdHIsIDIsIHJlcywgKHdpZHRoJDEgLSBsZW4gfCAwKSArIDIgfCAwLCBs
ZW4gLSAyIHwgMCk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
JCRTdHJpbmcuYmxpdChzdHIsIDAsIHJlcywgd2lkdGgkMSAtIGxlbiB8IDAsIGxlbik7CisgICAg
ICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgCisgICAgfQorICAgIHJldHVybiBDYW1s
X3N0cmluZy5ieXRlc190b19zdHJpbmcocmVzKTsKKyAgfQorfQorCitmdW5jdGlvbiBmaXhfaW50
X3ByZWNpc2lvbihwcmVjLCBzdHIpIHsKKyAgdmFyIHByZWMkMSA9IFBlcnZhc2l2ZXMuYWJzKHBy
ZWMpOworICB2YXIgbGVuID0gc3RyLmxlbmd0aDsKKyAgdmFyIGMgPSBDYW1sX3N0cmluZy5nZXQo
c3RyLCAwKTsKKyAgdmFyIGV4aXQgPSAwOworICBpZiAoYyA+PSA1OCkgeworICAgIGlmIChjID49
IDcxKSB7CisgICAgICBpZiAoYyA+IDEwMiB8fCBjIDwgOTcpIHsKKyAgICAgICAgcmV0dXJuIHN0
cjsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBleGl0ID0gMjsKKyAgICAgIH0KKyAg
ICB9CisgICAgZWxzZSBpZiAoYyA+PSA2NSkgeworICAgICAgZXhpdCA9IDI7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoYyAhPT0g
MzIpIHsKKyAgICBpZiAoYyA+PSA0MykgeworICAgICAgc3dpdGNoIChjIC0gNDMgfCAwKSB7Cisg
ICAgICAgIGNhc2UgMCA6IAorICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGV4aXQgPSAx
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICBjYXNlIDMg
OiAKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICByZXR1cm4gc3RyOworICAgICAgICBj
YXNlIDUgOiAKKyAgICAgICAgICAgIGlmICgocHJlYyQxICsgMiB8IDApID4gbGVuICYmIGxlbiA+
IDEgJiYgKENhbWxfc3RyaW5nLmdldChzdHIsIDEpID09PSAvKiAieCIgKi8xMjAgfHwgQ2FtbF9z
dHJpbmcuZ2V0KHN0ciwgMSkgPT09IC8qICJYIiAqLzg4KSkgeworICAgICAgICAgICAgICB2YXIg
cmVzID0gQnl0ZXMubWFrZShwcmVjJDEgKyAyIHwgMCwgLyogIjAiICovNDgpOworICAgICAgICAg
ICAgICByZXNbMV0gPSBDYW1sX3N0cmluZy5nZXQoc3RyLCAxKTsKKyAgICAgICAgICAgICAgJCRT
dHJpbmcuYmxpdChzdHIsIDIsIHJlcywgKHByZWMkMSAtIGxlbiB8IDApICsgNCB8IDAsIGxlbiAt
IDIgfCAwKTsKKyAgICAgICAgICAgICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmlu
ZyhyZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IGV4aXQgPSAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgNiA6IAorICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgY2FzZSA4IDogCisgICAgICAgIGNh
c2UgOSA6IAorICAgICAgICBjYXNlIDEwIDogCisgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAg
Y2FzZSAxMiA6IAorICAgICAgICBjYXNlIDEzIDogCisgICAgICAgIGNhc2UgMTQgOiAKKyAgICAg
ICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgfQor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzdHI7CisgICAgfQorICB9CisgIGVsc2Ug
eworICAgIGV4aXQgPSAxOworICB9CisgIHN3aXRjaCAoZXhpdCkgeworICAgIGNhc2UgMSA6IAor
ICAgICAgICBpZiAoKHByZWMkMSArIDEgfCAwKSA+IGxlbikgeworICAgICAgICAgIHZhciByZXMk
MSA9IEJ5dGVzLm1ha2UocHJlYyQxICsgMSB8IDAsIC8qICIwIiAqLzQ4KTsKKyAgICAgICAgICBy
ZXMkMVswXSA9IGM7CisgICAgICAgICAgJCRTdHJpbmcuYmxpdChzdHIsIDEsIHJlcyQxLCAocHJl
YyQxIC0gbGVuIHwgMCkgKyAyIHwgMCwgbGVuIC0gMSB8IDApOworICAgICAgICAgIHJldHVybiBD
YW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocmVzJDEpOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAyIDogCisgICAgICAgIGlmIChwcmVjJDEgPiBsZW4pIHsKKyAgICAgICAgICB2YXIg
cmVzJDIgPSBCeXRlcy5tYWtlKHByZWMkMSwgLyogIjAiICovNDgpOworICAgICAgICAgICQkU3Ry
aW5nLmJsaXQoc3RyLCAwLCByZXMkMiwgcHJlYyQxIC0gbGVuIHwgMCwgbGVuKTsKKyAgICAgICAg
ICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHJlcyQyKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gc3RyOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIHN0cmluZ190b19jYW1sX3N0cmluZyhz
dHIpIHsKKyAgcmV0dXJuICQkU3RyaW5nLmNvbmNhdCgkJFN0cmluZy5lc2NhcGVkKHN0ciksIC8q
IDo6ICovWworICAgICAgICAgICAgICAnIicsCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICciJywKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGZvcm1hdF9vZl9pY29udihpY29u
dikgeworICBzd2l0Y2ggKGljb252KSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVybiAi
JWQiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gIiUrZCI7CisgICAgY2FzZSAyIDog
CisgICAgICAgIHJldHVybiAiJSBkIjsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAgcmV0dXJuICIl
aSI7CisgICAgY2FzZSA0IDogCisgICAgICAgIHJldHVybiAiJStpIjsKKyAgICBjYXNlIDUgOiAK
KyAgICAgICAgcmV0dXJuICIlIGkiOworICAgIGNhc2UgNiA6IAorICAgICAgICByZXR1cm4gIiV4
IjsKKyAgICBjYXNlIDcgOiAKKyAgICAgICAgcmV0dXJuICIlI3giOworICAgIGNhc2UgOCA6IAor
ICAgICAgICByZXR1cm4gIiVYIjsKKyAgICBjYXNlIDkgOiAKKyAgICAgICAgcmV0dXJuICIlI1gi
OworICAgIGNhc2UgMTAgOiAKKyAgICAgICAgcmV0dXJuICIlbyI7CisgICAgY2FzZSAxMSA6IAor
ICAgICAgICByZXR1cm4gIiUjbyI7CisgICAgY2FzZSAxMiA6IAorICAgICAgICByZXR1cm4gIiV1
IjsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBmb3JtYXRfb2ZfYWNvbnYoaWNvbnYsIGMpIHsK
KyAgdmFyIHNlcHM7CisgIHN3aXRjaCAoaWNvbnYpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAg
c2VwcyA9IC8qIDo6ICovWworICAgICAgICAgICIlIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICJkIiwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAg
ICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxIDogCisgICAgICAgIHNlcHMgPSAvKiA6
OiAqL1sKKyAgICAgICAgICAiJSsiLAorICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ImQiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICovWworICAg
ICAgICAgICIlICIsCisgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAiZCIsCisgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgMyA6IAorICAgICAgICBzZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUi
LAorICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgImkiLAorICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IDQgOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICovWworICAgICAgICAgICIlKyIsCisgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAiaSIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICBdCisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNSA6IAorICAg
ICAgICBzZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUgIiwKKyAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICJpIiwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0K
KyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA2IDogCisgICAgICAgIHNlcHMg
PSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSIsCisgICAgICAgICAgLyogOjogKi9bCisgICAgICAg
ICAgICAieCIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNyA6IAorICAgICAgICBzZXBzID0gLyogOjogKi9b
CisgICAgICAgICAgIiUjIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJ4IiwK
KyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSA4IDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAg
ICAiJSIsCisgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAiWCIsCisgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgOSA6IAorICAgICAgICBzZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUjIiwKKyAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJYIiwKKyAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxMCA6
IAorICAgICAgICBzZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUiLAorICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgIm8iLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgXQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDExIDogCisgICAgICAg
IHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSMiLAorICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgIm8iLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAg
ICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDEyIDogCisgICAgICAgIHNlcHMgPSAv
KiA6OiAqL1sKKyAgICAgICAgICAiJSIsCisgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAidSIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07Cisg
ICAgICAgIGJyZWFrOworICAgIAorICB9CisgIHJldHVybiAkJFN0cmluZy5jb25jYXQoQ2FtbF9z
dHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5dGVzLm1ha2UoMSwgYykpLCBzZXBzKTsKK30KKworZnVu
Y3Rpb24gZm9ybWF0X29mX2Zjb252KGZjb252LCBwcmVjKSB7CisgIGlmIChmY29udiA9PT0gLyog
RmxvYXRfRiAqLzE1KSB7CisgICAgcmV0dXJuICIlLjEyZyI7CisgIH0KKyAgZWxzZSB7CisgICAg
dmFyIHByZWMkMSA9IFBlcnZhc2l2ZXMuYWJzKHByZWMpOworICAgIHZhciBzeW1iID0gY2hhcl9v
Zl9mY29udihmY29udik7CisgICAgdmFyIGJ1ZiA9IC8qIHJlY29yZCAqL1sKKyAgICAgIC8qIGlu
ZCAqLzAsCisgICAgICAvKiBieXRlcyAqL25ldyBBcnJheSgxNikKKyAgICBdOworICAgIGJ1ZmZl
cl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICBicHJpbnRfZmNvbnZfZmxhZyhidWYs
IGZjb252KTsKKyAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiLiIgKi80Nik7CisgICAgYnVm
ZmVyX2FkZF9zdHJpbmcoYnVmLCAiIiArIHByZWMkMSk7CisgICAgYnVmZmVyX2FkZF9jaGFyKGJ1
Ziwgc3ltYik7CisgICAgcmV0dXJuIGJ1ZmZlcl9jb250ZW50cyhidWYpOworICB9Cit9CisKK2Z1
bmN0aW9uIGNvbnZlcnRfaW50KGljb252LCBuKSB7CisgIHJldHVybiBDYW1sX2Zvcm1hdC5jYW1s
X2Zvcm1hdF9pbnQoZm9ybWF0X29mX2ljb252KGljb252KSwgbik7Cit9CisKK2Z1bmN0aW9uIGNv
bnZlcnRfaW50MzIoaWNvbnYsIG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfaW50MzJf
Zm9ybWF0KGZvcm1hdF9vZl9hY29udihpY29udiwgLyogImwiICovMTA4KSwgbik7Cit9CisKK2Z1
bmN0aW9uIGNvbnZlcnRfbmF0aXZlaW50KGljb252LCBuKSB7CisgIHJldHVybiBDYW1sX2Zvcm1h
dC5jYW1sX25hdGl2ZWludF9mb3JtYXQoZm9ybWF0X29mX2Fjb252KGljb252LCAvKiAibiIgKi8x
MTApLCBuKTsKK30KKworZnVuY3Rpb24gY29udmVydF9pbnQ2NChpY29udiwgbikgeworICByZXR1
cm4gQ2FtbF9mb3JtYXQuY2FtbF9pbnQ2NF9mb3JtYXQoZm9ybWF0X29mX2Fjb252KGljb252LCAv
KiAiTCIgKi83NiksIG4pOworfQorCitmdW5jdGlvbiBjb252ZXJ0X2Zsb2F0KGZjb252LCBwcmVj
LCB4KSB7CisgIHZhciBwcmVjJDEgPSBQZXJ2YXNpdmVzLmFicyhwcmVjKTsKKyAgdmFyIHN0ciA9
IENhbWxfZm9ybWF0LmNhbWxfZm9ybWF0X2Zsb2F0KGZvcm1hdF9vZl9mY29udihmY29udiwgcHJl
YyQxKSwgeCk7CisgIGlmIChmY29udiAhPT0gLyogRmxvYXRfRiAqLzE1KSB7CisgICAgcmV0dXJu
IHN0cjsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgbGVuID0gc3RyLmxlbmd0aDsKKyAgICB2YXIg
aXNfdmFsaWQgPSBmdW5jdGlvbiAoX2kpIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAg
dmFyIGkgPSBfaTsKKyAgICAgICAgaWYgKGkgPT09IGxlbikgeworICAgICAgICAgIHJldHVybiAv
KiBmYWxzZSAqLzA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFyIG1h
dGNoID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgaSk7CisgICAgICAgICAgdmFyIHN3aXRjaGVyID0g
bWF0Y2ggLSA0NiB8IDA7CisgICAgICAgICAgaWYgKHN3aXRjaGVyID4gMjMgfHwgc3dpdGNoZXIg
PCAwKSB7CisgICAgICAgICAgICBpZiAoc3dpdGNoZXIgIT09IDU1KSB7CisgICAgICAgICAgICAg
IF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAg
IAorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVy
biAvKiB0cnVlICovMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSBpZiAoc3dpdGNoZXIgPiAyMiB8fCBzd2l0Y2hlciA8IDEpIHsKKyAgICAgICAgICAgIHJldHVy
biAvKiB0cnVlICovMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHZhciBtYXRjaCA9
IENhbWxfZmxvYXQuY2FtbF9jbGFzc2lmeV9mbG9hdCh4KTsKKyAgICBpZiAobWF0Y2ggIT09IDMp
IHsKKyAgICAgIGlmIChtYXRjaCA+PSA0KSB7CisgICAgICAgIHJldHVybiAibmFuIjsKKyAgICAg
IH0KKyAgICAgIGVsc2UgaWYgKGlzX3ZhbGlkKDApKSB7CisgICAgICAgIHJldHVybiBzdHI7Cisg
ICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHN0ciArICIuIjsKKyAgICAgIH0K
KyAgICB9CisgICAgZWxzZSBpZiAoeCA8IDAuMCkgeworICAgICAgcmV0dXJuICJuZWdfaW5maW5p
dHkiOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAiaW5maW5pdHkiOworICAgIH0K
KyAgfQorfQorCitmdW5jdGlvbiBmb3JtYXRfY2FtbF9jaGFyKGMpIHsKKyAgcmV0dXJuICQkU3Ry
aW5nLmNvbmNhdChDaGFyLmVzY2FwZWQoYyksIC8qIDo6ICovWworICAgICAgICAgICAgICAiJyIs
CisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICInIiwKKyAgICAgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXSk7Cit9CisK
K2Z1bmN0aW9uIHN0cmluZ19vZl9mbXR0eShmbXR0eSkgeworICB2YXIgYnVmID0gLyogcmVjb3Jk
ICovWworICAgIC8qIGluZCAqLzAsCisgICAgLyogYnl0ZXMgKi9uZXcgQXJyYXkoMTYpCisgIF07
CisgIGJwcmludF9mbXR0eShidWYsIGZtdHR5KTsKKyAgcmV0dXJuIGJ1ZmZlcl9jb250ZW50cyhi
dWYpOworfQorCitmdW5jdGlvbiBtYWtlX3ByaW50ZihfaywgbywgX2FjYywgX2ZtdCkgeworICB3
aGlsZSh0cnVlKSB7CisgICAgdmFyIGZtdCA9IF9mbXQ7CisgICAgdmFyIGFjYyA9IF9hY2M7Cisg
ICAgdmFyIGsgPSBfazsKKyAgICBpZiAodHlwZW9mIGZtdCA9PT0gIm51bWJlciIpIHsKKyAgICAg
IHJldHVybiBDdXJyeS5fMihrLCBvLCBhY2MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3
aXRjaCAoZm10LnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICB2YXIg
cmVzdCA9IGZtdFswXTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2MscmVzdCl7
CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgICAgICAgICAgdmFyIG5l
d19hY2MgPSAvKiBBY2NfZGF0YV9jaGFyICovQmxvY2suX18oNSwgWworICAgICAgICAgICAgICAg
ICAgYWNjLAorICAgICAgICAgICAgICAgICAgYworICAgICAgICAgICAgICAgIF0pOworICAgICAg
ICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgcmVzdCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJlc3QpKTsKKyAgICAgICAgY2FzZSAxIDogCisg
ICAgICAgICAgICB2YXIgcmVzdCQxID0gZm10WzBdOworICAgICAgICAgICAgcmV0dXJuIChmdW5j
dGlvbihrLGFjYyxyZXN0JDEpeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Cisg
ICAgICAgICAgICAgIHZhciBuZXdfYWNjXzAwMSA9IGZvcm1hdF9jYW1sX2NoYXIoYyk7CisgICAg
ICAgICAgICAgIHZhciBuZXdfYWNjID0gLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwg
WworICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAgbmV3X2FjY18wMDEK
KyAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGss
IG8sIG5ld19hY2MsIHJlc3QkMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNj
LHJlc3QkMSkpOworICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX3N0
cmluZ19wYWRkaW5nKGssIG8sIGFjYywgZm10WzFdLCBmbXRbMF0sIGZ1bmN0aW9uIChzdHIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgcmV0dXJuIG1ha2Vfc3RyaW5n
X3BhZGRpbmcoaywgbywgYWNjLCBmbXRbMV0sIGZtdFswXSwgc3RyaW5nX3RvX2NhbWxfc3RyaW5n
KTsKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICByZXR1cm4gbWFrZV9pbnRfcGFkZGlu
Z19wcmVjaXNpb24oaywgbywgYWNjLCBmbXRbM10sIGZtdFsxXSwgZm10WzJdLCBjb252ZXJ0X2lu
dCwgZm10WzBdKTsKKyAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICByZXR1cm4gbWFrZV9p
bnRfcGFkZGluZ19wcmVjaXNpb24oaywgbywgYWNjLCBmbXRbM10sIGZtdFsxXSwgZm10WzJdLCBj
b252ZXJ0X2ludDMyLCBmbXRbMF0pOworICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbihrLCBvLCBhY2MsIGZtdFszXSwgZm10WzFd
LCBmbXRbMl0sIGNvbnZlcnRfbmF0aXZlaW50LCBmbXRbMF0pOworICAgICAgICBjYXNlIDcgOiAK
KyAgICAgICAgICAgIHJldHVybiBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbihrLCBvLCBhY2Ms
IGZtdFszXSwgZm10WzFdLCBmbXRbMl0sIGNvbnZlcnRfaW50NjQsIGZtdFswXSk7CisgICAgICAg
IGNhc2UgOCA6IAorICAgICAgICAgICAgdmFyIGskMSA9IGs7CisgICAgICAgICAgICB2YXIgbyQx
ID0gbzsKKyAgICAgICAgICAgIHZhciBhY2MkMSA9IGFjYzsKKyAgICAgICAgICAgIHZhciBmbXQk
MSA9IGZtdFszXTsKKyAgICAgICAgICAgIHZhciBwYWQgPSBmbXRbMV07CisgICAgICAgICAgICB2
YXIgcHJlYyA9IGZtdFsyXTsKKyAgICAgICAgICAgIHZhciBmY29udiA9IGZtdFswXTsKKyAgICAg
ICAgICAgIGlmICh0eXBlb2YgcGFkID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgICBpZiAo
dHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgIT09
IDApIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayQxLG8kMSxhY2MkMSxm
bXQkMSxmY29udil7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHAsIHgpIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciA9IGNvbnZlcnRfZmxvYXQoZmNvbnYsIHAsIHgp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFj
Y19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhY2MkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgIH0oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udikpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgIHJldHVybiAoZnVuY3Rpb24oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udil7CisgICAgICAg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IHN0ciA9IGNvbnZlcnRfZmxvYXQoZmNvbnYsIDYsIHgpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9f
KDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MkMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
IH0oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udikpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgcCA9
IHByZWNbMF07CisgICAgICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQx
LGZtdCQxLGZjb252LHApeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkgewor
ICAgICAgICAgICAgICAgICAgdmFyIHN0ciA9IGNvbnZlcnRfZmxvYXQoZmNvbnYsIHAsIHgpOwor
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGskMSwgbyQxLCAvKiBBY2NfZGF0
YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFjYyQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0pLCBmbXQkMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwKSk7CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHBhZC50YWcpIHsKKyAgICAg
ICAgICAgICAgdmFyIHBhZHR5ID0gcGFkWzBdOworICAgICAgICAgICAgICBpZiAodHlwZW9mIHBy
ZWMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgIT09IDApIHsKKyAg
ICAgICAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29u
dixwYWR0eSl7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHcsIHAsIHgpIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciA9IGZpeF9wYWRkaW5nKHBhZHR5LCB3LCBjb252
ZXJ0X2Zsb2F0KGZjb252LCBwLCB4KSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
X3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwg
Zm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfShrJDEsbyQx
LGFjYyQxLGZtdCQxLGZjb252LHBhZHR5KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQx
LGFjYyQxLGZtdCQxLGZjb252LHBhZHR5KXsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbiAodywgeCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gY29udmVydF9mbG9h
dChmY29udiwgNiwgeCk7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIkcHJpbWUgPSBmaXhf
cGFkZGluZyhwYWR0eSwgdywgc3RyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2Vf
cHJpbnRmKGskMSwgbyQxLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyJHByaW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pLCBmbXQkMSk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9KGsk
MSxvJDEsYWNjJDEsZm10JDEsZmNvbnYscGFkdHkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIHAk
MSA9IHByZWNbMF07CisgICAgICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFj
YyQxLGZtdCQxLGZjb252LHBhZHR5LHAkMSl7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uICh3LCB4KSB7CisgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFk
dHksIHcsIGNvbnZlcnRfZmxvYXQoZmNvbnYsIHAkMSwgeCkpOworICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VfcHJpbnRmKGskMSwgbyQxLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5f
Xyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pLCBmbXQkMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0oayQxLG8k
MSxhY2MkMSxmbXQkMSxmY29udixwYWR0eSxwJDEpKTsKKyAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHZhciB3ID0gcGFkWzFd
OworICAgICAgICAgICAgICB2YXIgcGFkdHkkMSA9IHBhZFswXTsKKyAgICAgICAgICAgICAgaWYg
KHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgICAgIGlmIChwcmVjICE9
PSAwKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEs
Zm10JDEsZmNvbnYscGFkdHkkMSx3KXsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
biAocCwgeCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFk
dHkkMSwgdywgY29udmVydF9mbG9hdChmY29udiwgcCwgeCkpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2Nr
Ll9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MkMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgIH0oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0eSQxLHcpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4g
KGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEsZm10JDEsZmNvbnYscGFkdHkkMSx3KXsKKyAgICAgICAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgICAgICAgICAgICAgICB2YXIg
c3RyID0gY29udmVydF9mbG9hdChmY29udiwgNiwgeCk7CisgICAgICAgICAgICAgICAgICAgIHZh
ciBzdHIkcHJpbWUgPSBmaXhfcGFkZGluZyhwYWR0eSQxLCB3LCBzdHIpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAq
L0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MkMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIkcHJpbWUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgIH0oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0eSQxLHcpKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgdmFyIHAkMiA9IHByZWNbMF07CisgICAgICAgICAgICAgICAgcmV0
dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdyxwJDIpewor
ICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgICAgICAgICAgICAg
dmFyIHN0ciA9IGZpeF9wYWRkaW5nKHBhZHR5JDEsIHcsIGNvbnZlcnRfZmxvYXQoZmNvbnYsIHAk
MiwgeCkpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGskMSwgbyQxLCAv
KiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFjYyQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQkMSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0eSQxLHcs
cCQyKSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSA5IDog
CisgICAgICAgICAgICB2YXIgcmVzdCQyID0gZm10WzBdOworICAgICAgICAgICAgcmV0dXJuIChm
dW5jdGlvbihrLGFjYyxyZXN0JDIpeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChiKSB7
CisgICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJp
bmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGIgPyAidHJ1ZSIgOiAiZmFsc2UiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pLCByZXN0JDIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
fShrLGFjYyxyZXN0JDIpKTsKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgX2ZtdCA9
IGZtdFswXTsKKyAgICAgICAgICAgIF9hY2MgPSAvKiBBY2NfZmx1c2ggKi9CbG9jay5fXyg3LCBb
YWNjXSk7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDExIDogCisg
ICAgICAgICAgICBfZm10ID0gZm10WzFdOworICAgICAgICAgICAgX2FjYyA9IC8qIEFjY19zdHJp
bmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDIsIFsKKyAgICAgICAgICAgICAgICBhY2MsCisgICAgICAg
ICAgICAgICAgZm10WzBdCisgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgX2ZtdCA9IGZtdFsxXTsKKyAg
ICAgICAgICAgIF9hY2MgPSAvKiBBY2NfY2hhcl9saXRlcmFsICovQmxvY2suX18oMywgWworICAg
ICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICBmbXRbMF0KKyAgICAgICAgICAgICAg
XSk7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEzIDogCisgICAg
ICAgICAgICB2YXIgcmVzdCQzID0gZm10WzJdOworICAgICAgICAgICAgdmFyIHR5ID0gc3RyaW5n
X29mX2ZtdHR5KGZtdFsxXSk7CisgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGssYWNjLHJl
c3QkMyx0eSl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18o
NCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwgcmVzdCQzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0oayxhY2MscmVzdCQzLHR5KSk7CisgICAgICAgIGNh
c2UgMTQgOiAKKyAgICAgICAgICAgIHZhciByZXN0JDQgPSBmbXRbMl07CisgICAgICAgICAgICB2
YXIgZm10dHkgPSBmbXRbMV07CisgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGssYWNjLGZt
dHR5LHJlc3QkNCl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAg
ICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBhY2MsIENhbWxpbnRlcm5hbEZvcm1h
dEJhc2ljcy5jb25jYXRfZm10KHJlY2FzdChwYXJhbVswXSwgZm10dHkpLCByZXN0JDQpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0oayxhY2MsZm10dHkscmVzdCQ0KSk7CisgICAgICAg
IGNhc2UgMTUgOiAKKyAgICAgICAgICAgIHZhciByZXN0JDUgPSBmbXRbMF07CisgICAgICAgICAg
ICByZXR1cm4gKGZ1bmN0aW9uKGssYWNjLHJlc3QkNSl7CisgICAgICAgICAgICByZXR1cm4gZnVu
Y3Rpb24gKGYsIHgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8q
IEFjY19kZWxheSAqL0Jsb2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKG8pIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMihmLCBvLCB4KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCByZXN0
JDUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgfShrLGFjYyxyZXN0JDUpKTsKKyAgICAg
ICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgdmFyIHJlc3QkNiA9IGZtdFswXTsKKyAgICAgICAg
ICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2MscmVzdCQ2KXsKKyAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbiAoZikgeworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyog
QWNjX2RlbGF5ICovQmxvY2suX18oNiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFj
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pLCByZXN0JDYpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgfShrLGFjYyxyZXN0
JDYpKTsKKyAgICAgICAgY2FzZSAxNyA6IAorICAgICAgICAgICAgX2ZtdCA9IGZtdFsxXTsKKyAg
ICAgICAgICAgIF9hY2MgPSAvKiBBY2NfZm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygwLCBbCisg
ICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgIGZtdFswXQorICAgICAgICAgICAg
ICBdKTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTggOiAKKyAg
ICAgICAgICAgIHZhciBtYXRjaCA9IGZtdFswXTsKKyAgICAgICAgICAgIGlmIChtYXRjaC50YWcp
IHsKKyAgICAgICAgICAgICAgdmFyIHJlc3QkNyA9IGZtdFsxXTsKKyAgICAgICAgICAgICAgdmFy
IGskcHJpbWUgPSAoZnVuY3Rpb24oayxhY2MscmVzdCQ3KXsKKyAgICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uIGskcHJpbWUoa29jLCBrYWNjKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VfcHJpbnRmKGssIGtvYywgLyogQWNjX2Zvcm1hdHRpbmdfZ2VuICovQmxvY2suX18oMSwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogQWNjX29wZW5fYm94ICovQmxvY2suX18oMSwgW2thY2NdKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0pLCByZXN0JDcpOworICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgIH0oayxhY2MscmVzdCQ3KSk7CisgICAgICAgICAgICAgIF9mbXQgPSBtYXRjaFswXVsw
XTsKKyAgICAgICAgICAgICAgX2FjYyA9IC8qIEVuZF9vZl9hY2MgKi8wOworICAgICAgICAgICAg
ICBfayA9IGskcHJpbWU7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAg
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIHJl
c3QkOCA9IGZtdFsxXTsKKyAgICAgICAgICAgICAgdmFyIGskcHJpbWUkMSA9IChmdW5jdGlvbihr
LGFjYyxyZXN0JDgpeworICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gayRwcmltZSQxKGtv
Yywga2FjYykgeworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBrb2MsIC8q
IEFjY19mb3JtYXR0aW5nX2dlbiAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFjY19vcGVu
X3RhZyAqL0Jsb2NrLl9fKDAsIFtrYWNjXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
KSwgcmVzdCQ4KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9KGssYWNjLHJlc3Qk
OCkpOworICAgICAgICAgICAgICBfZm10ID0gbWF0Y2hbMF1bMF07CisgICAgICAgICAgICAgIF9h
Y2MgPSAvKiBFbmRfb2ZfYWNjICovMDsKKyAgICAgICAgICAgICAgX2sgPSBrJHByaW1lJDE7Cisg
ICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOSA6IAorICAgICAgICAgICAgdGhyb3cg
WworICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1
cmUsCisgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJu
YWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgICAxNDQ5LAorICAgICAgICAgICAgICAg
ICAgICA0CisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg
Y2FzZSAyMCA6IAorICAgICAgICAgICAgdmFyIHJlc3QkOSA9IGZtdFsyXTsKKyAgICAgICAgICAg
IHZhciBuZXdfYWNjID0gLyogQWNjX2ludmFsaWRfYXJnICovQmxvY2suX18oOCwgWworICAgICAg
ICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAl
WyIKKyAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGsscmVz
dCQ5LG5ld19hY2MpeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIG5ld19hY2MsIHJlc3QkOSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9KGsscmVzdCQ5LG5ld19hY2MpKTsKKyAgICAgICAgY2FzZSAy
MSA6IAorICAgICAgICAgICAgdmFyIHJlc3QkMTAgPSBmbXRbMV07CisgICAgICAgICAgICByZXR1
cm4gKGZ1bmN0aW9uKGssYWNjLHJlc3QkMTApeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
IChuKSB7CisgICAgICAgICAgICAgIHZhciBuZXdfYWNjXzAwMSA9IENhbWxfZm9ybWF0LmNhbWxf
Zm9ybWF0X2ludCgiJXUiLCBuKTsKKyAgICAgICAgICAgICAgdmFyIG5ld19hY2MgPSAvKiBBY2Nf
ZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICBhY2MsCisgICAg
ICAgICAgICAgICAgICBuZXdfYWNjXzAwMQorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAg
ICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgcmVzdCQxMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJlc3QkMTApKTsKKyAgICAgICAgY2FzZSAyMiA6
IAorICAgICAgICAgICAgdmFyIHJlc3QkMTEgPSBmbXRbMF07CisgICAgICAgICAgICByZXR1cm4g
KGZ1bmN0aW9uKGssYWNjLHJlc3QkMTEpeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChj
KSB7CisgICAgICAgICAgICAgIHZhciBuZXdfYWNjID0gLyogQWNjX2RhdGFfY2hhciAqL0Jsb2Nr
Ll9fKDUsIFsKKyAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAgIGMKKyAg
ICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8s
IG5ld19hY2MsIHJlc3QkMTEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgfShrLGFjYyxy
ZXN0JDExKSk7CisgICAgICAgIGNhc2UgMjMgOiAKKyAgICAgICAgICAgIHZhciBrJDIgPSBrOwor
ICAgICAgICAgICAgdmFyIG8kMiA9IG87CisgICAgICAgICAgICB2YXIgYWNjJDIgPSBhY2M7Cisg
ICAgICAgICAgICB2YXIgaWduID0gZm10WzBdOworICAgICAgICAgICAgdmFyIGZtdCQyID0gZm10
WzFdOworICAgICAgICAgICAgaWYgKHR5cGVvZiBpZ24gPT09ICJudW1iZXIiKSB7CisgICAgICAg
ICAgICAgIHN3aXRjaCAoaWduKSB7CisgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTE3LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM5CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIF07CisgICAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgY2Fz
ZSAxIDogCisgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgY2FzZSA0
IDogCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2ludmFsaWRfYXJnKGskMiwgbyQy
LCBhY2MkMiwgZm10JDIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgc3dpdGNoIChpZ24u
dGFnIHwgMCkgeworICAgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGskMiwgbyQyLCBhY2MkMiwgaWduWzFdLCBmbXQkMik7
CisgICAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgY2FzZSAxIDogCisg
ICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAg
ICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAg
ICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAg
ICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZV9pbnZhbGlkX2FyZyhrJDIsIG8kMiwgYWNjJDIsIGZtdCQyKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICBjYXNlIDI0IDogCisgICAgICAgICAgICByZXR1cm4gbWFrZV9jdXN0b20oaywgbywgYWNjLCBm
bXRbMl0sIGZtdFswXSwgQ3VycnkuXzEoZm10WzFdLCAvKiAoKSAqLzApKTsKKyAgICAgICAgCisg
ICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBtYWtlX2Zyb21fZm10dHkoaywgbywg
YWNjLCBmbXR0eSwgZm10KSB7CisgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Cisg
ICAgcmV0dXJuIG1ha2VfaW52YWxpZF9hcmcoaywgbywgYWNjLCBmbXQpOworICB9CisgIGVsc2Ug
eworICAgIHN3aXRjaCAoZm10dHkudGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAg
ICAgdmFyIHJlc3QgPSBmbXR0eVswXTsKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJlc3QsIGZtdCk7
CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHZhciByZXN0JDEgPSBm
bXR0eVswXTsKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0
dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJlc3QkMSwgZm10KTsKKyAgICAgICAgICB9
OworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgdmFyIHJlc3QkMiA9IGZtdHR5WzBdOworICAg
ICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9t
X2ZtdHR5KGssIG8sIGFjYywgcmVzdCQyLCBmbXQpOworICAgICAgICAgIH07CisgICAgICBjYXNl
IDMgOiAKKyAgICAgICAgICB2YXIgcmVzdCQzID0gZm10dHlbMF07CisgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywgbywg
YWNjLCByZXN0JDMsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAg
ICAgIHZhciByZXN0JDQgPSBmbXR0eVswXTsKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJlc3QkNCwg
Zm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIHJlc3Qk
NSA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQ1LCBmbXQpOworICAgICAg
ICAgIH07CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICB2YXIgcmVzdCQ2ID0gZm10dHlbMF07
CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
X2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0JDYsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAg
IGNhc2UgNyA6IAorICAgICAgICAgIHZhciByZXN0JDcgPSBmbXR0eVswXTsKKyAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShr
LCBvLCBhY2MsIHJlc3QkNywgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA4IDogCisg
ICAgICAgICAgdmFyIHJlc3QkOCA9IGZtdHR5WzFdOworICAgICAgICAgIHJldHVybiBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVz
dCQ4LCBmbXQpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICB2YXIg
cmVzdCQ5ID0gZm10dHlbMl07CisgICAgICAgICAgdmFyIHR5ID0gdHJhbnMoc3ltbShmbXR0eVsw
XSksIGZtdHR5WzFdKTsKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIENhbWxpbnRlcm5hbEZvcm1hdEJh
c2ljcy5jb25jYXRfZm10dHkodHksIHJlc3QkOSksIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAg
IGNhc2UgMTAgOiAKKyAgICAgICAgICB2YXIgcmVzdCQxMCA9IGZtdHR5WzBdOworICAgICAgICAg
IHJldHVybiBmdW5jdGlvbiAoXywgXyQxKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9t
X2ZtdHR5KGssIG8sIGFjYywgcmVzdCQxMCwgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2Fz
ZSAxMSA6IAorICAgICAgICAgIHZhciByZXN0JDExID0gZm10dHlbMF07CisgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywg
bywgYWNjLCByZXN0JDExLCBmbXQpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDEyIDogCisg
ICAgICAgICAgdmFyIHJlc3QkMTIgPSBmbXR0eVswXTsKKyAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJl
c3QkMTIsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICB0
aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2Zh
aWx1cmUsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5h
bEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAxNTQwLAorICAgICAgICAgICAgICAgICAg
MzEKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDE0IDog
CisgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgMTU0MSwKKyAgICAg
ICAgICAgICAgICAgIDMxCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICBdOworICAg
ICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIG1ha2VfaW52YWxpZF9hcmcoaywgbywgYWNj
LCBmbXQpIHsKKyAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19pbnZhbGlkX2FyZyAq
L0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgIlBy
aW50ZjogYmFkIGNvbnZlcnNpb24gJV8iCisgICAgICAgICAgICAgIF0pLCBmbXQpOworfQorCitm
dW5jdGlvbiBtYWtlX3N0cmluZ19wYWRkaW5nKGssIG8sIGFjYywgZm10LCBwYWQsIHRyYW5zKSB7
CisgIGlmICh0eXBlb2YgcGFkID09PSAibnVtYmVyIikgeworICAgIHJldHVybiBmdW5jdGlvbiAo
eCkgeworICAgICAgdmFyIG5ld19hY2NfMDAxID0gQ3VycnkuXzEodHJhbnMsIHgpOworICAgICAg
dmFyIG5ld19hY2MgPSAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAg
ICAgYWNjLAorICAgICAgICAgIG5ld19hY2NfMDAxCisgICAgICAgIF0pOworICAgICAgcmV0dXJu
IG1ha2VfcHJpbnRmKGssIG8sIG5ld19hY2MsIGZtdCk7CisgICAgfTsKKyAgfQorICBlbHNlIGlm
IChwYWQudGFnKSB7CisgICAgdmFyIHBhZHR5ID0gcGFkWzBdOworICAgIHJldHVybiBmdW5jdGlv
biAodywgeCkgeworICAgICAgdmFyIG5ld19hY2NfMDAxID0gZml4X3BhZGRpbmcocGFkdHksIHcs
IEN1cnJ5Ll8xKHRyYW5zLCB4KSk7CisgICAgICB2YXIgbmV3X2FjYyA9IC8qIEFjY19kYXRhX3N0
cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICBhY2MsCisgICAgICAgICAgbmV3X2FjY18w
MDEKKyAgICAgICAgXSk7CisgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywg
Zm10KTsKKyAgICB9OworICB9CisgIGVsc2UgeworICAgIHZhciB3aWR0aCA9IHBhZFsxXTsKKyAg
ICB2YXIgcGFkdHkkMSA9IHBhZFswXTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAg
IHZhciBuZXdfYWNjXzAwMSA9IGZpeF9wYWRkaW5nKHBhZHR5JDEsIHdpZHRoLCBDdXJyeS5fMSh0
cmFucywgeCkpOworICAgICAgdmFyIG5ld19hY2MgPSAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9j
ay5fXyg0LCBbCisgICAgICAgICAgYWNjLAorICAgICAgICAgIG5ld19hY2NfMDAxCisgICAgICAg
IF0pOworICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIG5ld19hY2MsIGZtdCk7CisgICAg
fTsKKyAgfQorfQorCitmdW5jdGlvbiBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbihrLCBvLCBh
Y2MsIGZtdCwgcGFkLCBwcmVjLCB0cmFucywgaWNvbnYpIHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09
ICJudW1iZXIiKSB7CisgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgICAg
aWYgKHByZWMgIT09IDApIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwLCB4KSB7CisgICAg
ICAgICAgdmFyIHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uKHAsIEN1cnJ5Ll8yKHRyYW5zLCBpY29u
diwgeCkpOworICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9z
dHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsK
KyAgICAgICAgfTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKHgpIHsKKyAgICAgICAgICB2YXIgc3RyID0gQ3VycnkuXzIodHJhbnMsIGljb252LCB4KTsK
KyAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5nICov
QmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyCisgICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCk7CisgICAgICAg
IH07CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIHAgPSBwcmVjWzBdOwor
ICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgIHZhciBzdHIgPSBmaXhfaW50X3By
ZWNpc2lvbihwLCBDdXJyeS5fMih0cmFucywgaWNvbnYsIHgpKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAgc3RyCisgICAgICAg
ICAgICAgICAgICAgIF0pLCBmbXQpOworICAgICAgfTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAo
cGFkLnRhZykgeworICAgIHZhciBwYWR0eSA9IHBhZFswXTsKKyAgICBpZiAodHlwZW9mIHByZWMg
PT09ICJudW1iZXIiKSB7CisgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgICByZXR1cm4g
ZnVuY3Rpb24gKHcsIHAsIHgpIHsKKyAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFk
dHksIHcsIGZpeF9pbnRfcHJlY2lzaW9uKHAsIEN1cnJ5Ll8yKHRyYW5zLCBpY29udiwgeCkpKTsK
KyAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5nICov
QmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyCisgICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCk7CisgICAgICAg
IH07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh3LCB4
KSB7CisgICAgICAgICAgdmFyIHN0ciA9IGZpeF9wYWRkaW5nKHBhZHR5LCB3LCBDdXJyeS5fMih0
cmFucywgaWNvbnYsIHgpKTsKKyAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyog
QWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAg
YWNjLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyCisgICAgICAgICAgICAgICAgICAgICAg
XSksIGZtdCk7CisgICAgICAgIH07CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAg
dmFyIHAkMSA9IHByZWNbMF07CisgICAgICByZXR1cm4gZnVuY3Rpb24gKHcsIHgpIHsKKyAgICAg
ICAgdmFyIHN0ciA9IGZpeF9wYWRkaW5nKHBhZHR5LCB3LCBmaXhfaW50X3ByZWNpc2lvbihwJDEs
IEN1cnJ5Ll8yKHRyYW5zLCBpY29udiwgeCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRm
KGssIG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAgc3RyCisgICAgICAgICAgICAgICAg
ICAgIF0pLCBmbXQpOworICAgICAgfTsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIHcg
PSBwYWRbMV07CisgICAgdmFyIHBhZHR5JDEgPSBwYWRbMF07CisgICAgaWYgKHR5cGVvZiBwcmVj
ID09PSAibnVtYmVyIikgeworICAgICAgaWYgKHByZWMgIT09IDApIHsKKyAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uIChwLCB4KSB7CisgICAgICAgICAgdmFyIHN0ciA9IGZpeF9wYWRkaW5nKHBhZHR5
JDEsIHcsIGZpeF9pbnRfcHJlY2lzaW9uKHAsIEN1cnJ5Ll8yKHRyYW5zLCBpY29udiwgeCkpKTsK
KyAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5nICov
QmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyCisgICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCk7CisgICAgICAg
IH07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7
CisgICAgICAgICAgdmFyIHN0ciA9IGZpeF9wYWRkaW5nKHBhZHR5JDEsIHcsIEN1cnJ5Ll8yKHRy
YW5zLCBpY29udiwgeCkpOworICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBB
Y2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBh
Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBd
KSwgZm10KTsKKyAgICAgICAgfTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2
YXIgcCQyID0gcHJlY1swXTsKKyAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgICB2
YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHkkMSwgdywgZml4X2ludF9wcmVjaXNpb24ocCQyLCBD
dXJyeS5fMih0cmFucywgaWNvbnYsIHgpKSk7CisgICAgICAgIHJldHVybiBtYWtlX3ByaW50Zihr
LCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAg
ICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAg
ICBdKSwgZm10KTsKKyAgICAgIH07CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIG1ha2VfY3Vz
dG9tKGssIG8sIGFjYywgcmVzdCwgYXJpdHksIGYpIHsKKyAgaWYgKGFyaXR5KSB7CisgICAgdmFy
IGFyaXR5JDEgPSBhcml0eVswXTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAgIHJl
dHVybiBtYWtlX2N1c3RvbShrLCBvLCBhY2MsIHJlc3QsIGFyaXR5JDEsIEN1cnJ5Ll8xKGYsIHgp
KTsKKyAgICB9OworICB9CisgIGVsc2UgeworICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAv
KiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICBhY2Ms
CisgICAgICAgICAgICAgICAgICBmCisgICAgICAgICAgICAgICAgXSksIHJlc3QpOworICB9Cit9
CisKK2Z1bmN0aW9uIG91dHB1dF9hY2MobywgX2FjYykgeworICB3aGlsZSh0cnVlKSB7CisgICAg
dmFyIGFjYyA9IF9hY2M7CisgICAgdmFyIGV4aXQgPSAwOworICAgIGlmICh0eXBlb2YgYWNjID09
PSAibnVtYmVyIikgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICBzd2l0Y2ggKGFjYy50YWcgfCAwKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgdmFyIHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoYWNjWzFdKTsKKyAgICAgICAg
ICAgIG91dHB1dF9hY2MobywgYWNjWzBdKTsKKyAgICAgICAgICAgIHJldHVybiBQZXJ2YXNpdmVz
Lm91dHB1dF9zdHJpbmcobywgcyk7CisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgdmFy
IG1hdGNoID0gYWNjWzFdOworICAgICAgICAgICAgdmFyIHAgPSBhY2NbMF07CisgICAgICAgICAg
ICBvdXRwdXRfYWNjKG8sIHApOworICAgICAgICAgICAgaWYgKG1hdGNoLnRhZykgeworICAgICAg
ICAgICAgICBQZXJ2YXNpdmVzLm91dHB1dF9zdHJpbmcobywgIkBbIik7CisgICAgICAgICAgICAg
IF9hY2MgPSBtYXRjaFswXTsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBQZXJ2
YXNpdmVzLm91dHB1dF9zdHJpbmcobywgIkB7Iik7CisgICAgICAgICAgICAgIF9hY2MgPSBtYXRj
aFswXTsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgY2Fz
ZSA0IDogCisgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIDMgOiAKKyAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICBleGl0ID0gMjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgIG91dHB1dF9h
Y2MobywgYWNjWzBdKTsKKyAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShhY2NbMV0sIG8pOwor
ICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIG91dHB1dF9hY2MobywgYWNjWzBdKTsKKyAg
ICAgICAgICAgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfZmx1c2gobyk7CisgICAgICAgIGNhc2Ug
OCA6IAorICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgICAgdGhy
b3cgWworICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9h
cmd1bWVudCwKKyAgICAgICAgICAgICAgICAgIGFjY1sxXQorICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBzd2l0Y2ggKGV4aXQpIHsKKyAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgIG91dHB1dF9hY2MobywgYWNjWzBdKTsKKyAgICAgICAgICByZXR1cm4g
UGVydmFzaXZlcy5vdXRwdXRfc3RyaW5nKG8sIGFjY1sxXSk7CisgICAgICBjYXNlIDIgOiAKKyAg
ICAgICAgICBvdXRwdXRfYWNjKG8sIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIENhbWxfaW8u
Y2FtbF9tbF9vdXRwdXRfY2hhcihvLCBhY2NbMV0pOworICAgICAgCisgICAgfQorICB9OworfQor
CitmdW5jdGlvbiBidWZwdXRfYWNjKGIsIF9hY2MpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZh
ciBhY2MgPSBfYWNjOworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAodHlwZW9mIGFjYyA9PT0g
Im51bWJlciIpIHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgc3dpdGNoIChhY2MudGFnIHwgMCkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICAgIHZhciBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0KGFjY1sxXSk7CisgICAgICAgICAg
ICBidWZwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmFkZF9z
dHJpbmcoYiwgcyk7CisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgdmFyIG1hdGNoID0g
YWNjWzFdOworICAgICAgICAgICAgdmFyIHAgPSBhY2NbMF07CisgICAgICAgICAgICBidWZwdXRf
YWNjKGIsIHApOworICAgICAgICAgICAgaWYgKG1hdGNoLnRhZykgeworICAgICAgICAgICAgICBC
dWZmZXIuYWRkX3N0cmluZyhiLCAiQFsiKTsKKyAgICAgICAgICAgICAgX2FjYyA9IG1hdGNoWzBd
OworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nKGIs
ICJAeyIpOworICAgICAgICAgICAgICBfYWNjID0gbWF0Y2hbMF07CisgICAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAyIDogCisgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgZXhp
dCA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgIGNh
c2UgNSA6IAorICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSA2IDogCisgICAgICAgICAgICBidWZwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAg
ICAgICByZXR1cm4gQ3VycnkuXzEoYWNjWzFdLCBiKTsKKyAgICAgICAgY2FzZSA3IDogCisgICAg
ICAgICAgICBfYWNjID0gYWNjWzBdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgY2FzZSA4IDogCisgICAgICAgICAgICBidWZwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAg
ICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5p
bnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAgICAgYWNjWzFdCisgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIHN3aXRjaCAoZXhpdCkgeworICAg
ICAgY2FzZSAxIDogCisgICAgICAgICAgYnVmcHV0X2FjYyhiLCBhY2NbMF0pOworICAgICAgICAg
IHJldHVybiBCdWZmZXIuYWRkX3N0cmluZyhiLCBhY2NbMV0pOworICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgYnVmcHV0X2FjYyhiLCBhY2NbMF0pOworICAgICAgICAgIHJldHVybiBCdWZmZXIu
YWRkX2NoYXIoYiwgYWNjWzFdKTsKKyAgICAgIAorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24g
c3RycHV0X2FjYyhiLCBfYWNjKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgYWNjID0gX2Fj
YzsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHR5cGVvZiBhY2MgPT09ICJudW1iZXIiKSB7
CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRj
aCAoYWNjLnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICB2YXIgcyA9
IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdChhY2NbMV0pOworICAgICAgICAgICAgc3RycHV0X2Fj
YyhiLCBhY2NbMF0pOworICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5hZGRfc3RyaW5nKGIsIHMp
OworICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCA9IGFjY1sxXTsKKyAg
ICAgICAgICAgIHZhciBwID0gYWNjWzBdOworICAgICAgICAgICAgc3RycHV0X2FjYyhiLCBwKTsK
KyAgICAgICAgICAgIGlmIChtYXRjaC50YWcpIHsKKyAgICAgICAgICAgICAgQnVmZmVyLmFkZF9z
dHJpbmcoYiwgIkBbIik7CisgICAgICAgICAgICAgIF9hY2MgPSBtYXRjaFswXTsKKyAgICAgICAg
ICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyhiLCAiQHsiKTsKKyAg
ICAgICAgICAgICAgX2FjYyA9IG1hdGNoWzBdOworICAgICAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgMiA6IAorICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMyA6IAorICAgICAgICBjYXNlIDUgOiAKKyAg
ICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNiA6
IAorICAgICAgICAgICAgc3RycHV0X2FjYyhiLCBhY2NbMF0pOworICAgICAgICAgICAgcmV0dXJu
IEJ1ZmZlci5hZGRfc3RyaW5nKGIsIEN1cnJ5Ll8xKGFjY1sxXSwgLyogKCkgKi8wKSk7CisgICAg
ICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgX2FjYyA9IGFjY1swXTsKKyAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgc3RycHV0X2FjYyhi
LCBhY2NbMF0pOworICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAgICAgIGFj
Y1sxXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBz
d2l0Y2ggKGV4aXQpIHsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHN0cnB1dF9hY2MoYiwg
YWNjWzBdKTsKKyAgICAgICAgICByZXR1cm4gQnVmZmVyLmFkZF9zdHJpbmcoYiwgYWNjWzFdKTsK
KyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHN0cnB1dF9hY2MoYiwgYWNjWzBdKTsKKyAgICAg
ICAgICByZXR1cm4gQnVmZmVyLmFkZF9jaGFyKGIsIGFjY1sxXSk7CisgICAgICAKKyAgICB9Cisg
IH07Cit9CisKK2Z1bmN0aW9uIGZhaWx3aXRoX21lc3NhZ2UocGFyYW0pIHsKKyAgdmFyIGJ1ZiA9
IEJ1ZmZlci5jcmVhdGUoMjU2KTsKKyAgdmFyIGsgPSBmdW5jdGlvbiAoXywgYWNjKSB7CisgICAg
c3RycHV0X2FjYyhidWYsIGFjYyk7CisgICAgdmFyIHMgPSBCdWZmZXIuY29udGVudHMoYnVmKTsK
KyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwK
KyAgICAgICAgICBzCisgICAgICAgIF07CisgIH07CisgIHJldHVybiBtYWtlX3ByaW50ZihrLCAv
KiAoKSAqLzAsIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5fYm94X29mX3N0cmluZyhzdHIpIHsKKyAgaWYgKHN0ciA9PT0gIiIpIHsKKyAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgLyogUHBfYm94ICovNAor
ICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGxlbiA9IHN0ci5sZW5ndGg7Cisg
ICAgdmFyIGludmFsaWRfYm94ID0gZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8x
KGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAgIC8q
IFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgImludmFsaWQgYm94IGRlc2NyaXB0aW9uICIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAg
ICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBi
b3ggZGVzY3JpcHRpb24gJVMiCisgICAgICAgICAgICAgICAgICAgIF0pLCBzdHIpOworICAgIH07
CisgICAgdmFyIHBhcnNlX3NwYWNlcyA9IGZ1bmN0aW9uIChfaSkgeworICAgICAgd2hpbGUodHJ1
ZSkgeworICAgICAgICB2YXIgaSA9IF9pOworICAgICAgICBpZiAoaSA9PT0gbGVuKSB7CisgICAg
ICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFy
IG1hdGNoID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgaSk7CisgICAgICAgICAgaWYgKG1hdGNoICE9
PSA5KSB7CisgICAgICAgICAgICBpZiAobWF0Y2ggIT09IDMyKSB7CisgICAgICAgICAgICAgIHJl
dHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAg
IAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAg
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9OworICAgIH07CisgICAgdmFyIHBhcnNl
X2x3b3JkID0gZnVuY3Rpb24gKF8sIF9qKSB7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAg
IHZhciBqID0gX2o7CisgICAgICAgIGlmIChqID09PSBsZW4pIHsKKyAgICAgICAgICByZXR1cm4g
ajsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2ggPSBDYW1s
X3N0cmluZy5nZXQoc3RyLCBqKTsKKyAgICAgICAgICBpZiAobWF0Y2ggPiAxMjIgfHwgbWF0Y2gg
PCA5NykgeworICAgICAgICAgICAgcmV0dXJuIGo7CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgX2ogPSBqICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH07CisgICAgfTsK
KyAgICB2YXIgcGFyc2VfaW50ID0gZnVuY3Rpb24gKF8sIF9qKSB7CisgICAgICB3aGlsZSh0cnVl
KSB7CisgICAgICAgIHZhciBqID0gX2o7CisgICAgICAgIGlmIChqID09PSBsZW4pIHsKKyAgICAg
ICAgICByZXR1cm4gajsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIg
bWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBqKTsKKyAgICAgICAgICBpZiAobWF0Y2ggPj0g
NDgpIHsKKyAgICAgICAgICAgIGlmIChtYXRjaCA+PSA1OCkgeworICAgICAgICAgICAgICByZXR1
cm4gajsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBf
aiA9IGogKyAxIHwgMDsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAobWF0Y2ggIT09
IDQ1KSB7CisgICAgICAgICAgICByZXR1cm4gajsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBfaiA9IGogKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9Owor
ICAgIHZhciB3c3RhcnQgPSBwYXJzZV9zcGFjZXMoMCk7CisgICAgdmFyIHdlbmQgPSBwYXJzZV9s
d29yZCh3c3RhcnQsIHdzdGFydCk7CisgICAgdmFyIGJveF9uYW1lID0gJCRTdHJpbmcuc3ViKHN0
ciwgd3N0YXJ0LCB3ZW5kIC0gd3N0YXJ0IHwgMCk7CisgICAgdmFyIG5zdGFydCA9IHBhcnNlX3Nw
YWNlcyh3ZW5kKTsKKyAgICB2YXIgbmVuZCA9IHBhcnNlX2ludChuc3RhcnQsIG5zdGFydCk7Cisg
ICAgdmFyIGluZGVudDsKKyAgICBpZiAobnN0YXJ0ID09PSBuZW5kKSB7CisgICAgICBpbmRlbnQg
PSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRyeSB7CisgICAgICAgIGluZGVudCA9IENh
bWxfZm9ybWF0LmNhbWxfaW50X29mX3N0cmluZygkJFN0cmluZy5zdWIoc3RyLCBuc3RhcnQsIG5l
bmQgLSBuc3RhcnQgfCAwKSk7CisgICAgICB9CisgICAgICBjYXRjaCAoZXhuKXsKKyAgICAgICAg
aWYgKGV4blswXSA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSkgeworICAgICAg
ICAgIGluZGVudCA9IGludmFsaWRfYm94KC8qICgpICovMCk7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgdGhyb3cgZXhuOworICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICAgIHZhciBleHBfZW5kID0gcGFyc2Vfc3BhY2VzKG5lbmQpOworICAgIGlmIChleHBfZW5kICE9
PSBsZW4pIHsKKyAgICAgIGludmFsaWRfYm94KC8qICgpICovMCk7CisgICAgfQorICAgIHZhciBi
b3hfdHlwZTsKKyAgICBzd2l0Y2ggKGJveF9uYW1lKSB7CisgICAgICBjYXNlICIiIDogCisgICAg
ICBjYXNlICJiIiA6IAorICAgICAgICAgIGJveF90eXBlID0gLyogUHBfYm94ICovNDsKKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgImgiIDogCisgICAgICAgICAgYm94X3R5cGUgPSAvKiBQ
cF9oYm94ICovMDsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgImhvdiIgOiAKKyAgICAg
ICAgICBib3hfdHlwZSA9IC8qIFBwX2hvdmJveCAqLzM7CisgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlICJodiIgOiAKKyAgICAgICAgICBib3hfdHlwZSA9IC8qIFBwX2h2Ym94ICovMjsKKyAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgInYiIDogCisgICAgICAgICAgYm94X3R5cGUgPSAv
KiBQcF92Ym94ICovMTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAg
IGJveF90eXBlID0gaW52YWxpZF9ib3goLyogKCkgKi8wKTsKKyAgICB9CisgICAgcmV0dXJuIC8q
IHR1cGxlICovWworICAgICAgICAgICAgaW5kZW50LAorICAgICAgICAgICAgYm94X3R5cGUKKyAg
ICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIG1ha2VfcGFkZGluZ19mbXRfZWJiKHBhZCwg
Zm10KSB7CisgIGlmICh0eXBlb2YgcGFkID09PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiBQ
YWRkaW5nX2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAg
ICAgICAgIGZtdAorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSBpZiAocGFkLnRhZykgeworICAg
IHJldHVybiAvKiBQYWRkaW5nX2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAvKiBBcmdfcGFkZGlu
ZyAqL0Jsb2NrLl9fKDEsIFtwYWRbMF1dKSwKKyAgICAgICAgICAgIGZtdAorICAgICAgICAgIF07
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIFBhZGRpbmdfZm10X0VCQiAqL1sKKyAgICAg
ICAgICAgIC8qIExpdF9wYWRkaW5nICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgIHBh
ZFswXSwKKyAgICAgICAgICAgICAgICBwYWRbMV0KKyAgICAgICAgICAgICAgXSksCisgICAgICAg
ICAgICBmbXQKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIG1ha2VfcHJlY2lzaW9u
X2ZtdF9lYmIocHJlYywgZm10KSB7CisgIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51bWJlciIpIHsK
KyAgICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgcmV0dXJuIC8qIFByZWNpc2lvbl9mbXRfRUJC
ICovWworICAgICAgICAgICAgICAvKiBBcmdfcHJlY2lzaW9uICovMSwKKyAgICAgICAgICAgICAg
Zm10CisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBQ
cmVjaXNpb25fZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwK
KyAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gLyogUHJlY2lzaW9uX2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAvKiBMaXRf
cHJlY2lzaW9uICovW3ByZWNbMF1dLAorICAgICAgICAgICAgZm10CisgICAgICAgICAgXTsKKyAg
fQorfQorCitmdW5jdGlvbiBtYWtlX3BhZHByZWNfZm10X2ViYihwYWQsIHByZWMsIGZtdCkgewor
ICB2YXIgbWF0Y2ggPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiKHByZWMsIGZtdCk7CisgIHZhciBm
bXQkcHJpbWUgPSBtYXRjaFsxXTsKKyAgdmFyIHByZWMkMSA9IG1hdGNoWzBdOworICBpZiAodHlw
ZW9mIHBhZCA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gLyogUGFkcHJlY19mbXRfRUJCICov
WworICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICBwcmVjJDEsCisg
ICAgICAgICAgICBmbXQkcHJpbWUKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgaWYgKHBhZC50
YWcpIHsKKyAgICByZXR1cm4gLyogUGFkcHJlY19mbXRfRUJCICovWworICAgICAgICAgICAgLyog
QXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbcGFkWzBdXSksCisgICAgICAgICAgICBwcmVjJDEs
CisgICAgICAgICAgICBmbXQkcHJpbWUKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiAvKiBQYWRwcmVjX2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAvKiBMaXRfcGFkZGlu
ZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICBwYWRbMF0sCisgICAgICAgICAgICAg
ICAgcGFkWzFdCisgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgcHJlYyQxLAorICAgICAg
ICAgICAgZm10JHByaW1lCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBmbXRfZWJi
X29mX3N0cmluZyhsZWdhY3lfYmVoYXZpb3IsIHN0cikgeworICB2YXIgbGVnYWN5X2JlaGF2aW9y
JDEgPSBsZWdhY3lfYmVoYXZpb3IgPyBsZWdhY3lfYmVoYXZpb3JbMF0gOiAvKiB0cnVlICovMTsK
KyAgdmFyIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgPSBmdW5jdGlvbiAoc3RyX2luZCwgbXNnKSB7
CisgICAgcmV0dXJuIEN1cnJ5Ll8zKGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWworICAg
ICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIjogYXQgY2hhcmFjdGVyIG51bWJlciAiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmcgKi9CbG9jay5fXygyLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0
ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAg
ICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVk
LCAlcyIKKyAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHN0cl9pbmQsIG1zZyk7CisgIH07Cisg
IHZhciBpbnZhbGlkX2Zvcm1hdF93aXRob3V0ID0gZnVuY3Rpb24gKHN0cl9pbmQsIGMsIHMpIHsK
KyAgICByZXR1cm4gQ3VycnkuXzQoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAg
ICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIEludF9kICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAnIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBDaGFyICovQmxvY2suX18oMCwgWy8qIFN0cmluZ19saXRl
cmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICInIHdpdGhvdXQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZyAqL0Jsb2NrLl9fKDIsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICov
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAg
ICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICVTOiBhdCBj
aGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXMiCisgICAgICAgICAgICAgICAgICBd
KSwgc3RyLCBzdHJfaW5kLCBjLCBzKTsKKyAgfTsKKyAgdmFyIGV4cGVjdGVkX2NoYXJhY3RlciA9
IGZ1bmN0aW9uIChzdHJfaW5kLCBleHBlY3RlZCwgcmVhZCkgeworICAgIHJldHVybiBDdXJyeS5f
NChmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyog
U3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAg
ImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmlu
ZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRk
aW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAq
L0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IGF0IGNo
YXJhY3RlciBudW1iZXIgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50
ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
SW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFk
ZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVj
aXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5n
X2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIsICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogU3RyaW5nICovQmxvY2suX18oMiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBleHBlY3Rl
ZCwgcmVhZCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogQ2FtbF9jaGFyICovQmxvY2suX18oMSwgWy8qIEVuZF9vZl9mb3JtYXQgKi8wXSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAg
ImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwg
cmVhZCAlQyIKKyAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHN0cl9pbmQsIGV4cGVjdGVkLCBy
ZWFkKTsKKyAgfTsKKyAgdmFyIGNvbXB1dGVfaW50X2NvbnYgPSBmdW5jdGlvbiAocGN0X2luZCwg
c3RyX2luZCwgX3BsdXMsIF9zaGFycCwgX3NwYWNlLCBzeW1iKSB7CisgICAgd2hpbGUodHJ1ZSkg
eworICAgICAgdmFyIHNwYWNlID0gX3NwYWNlOworICAgICAgdmFyIHNoYXJwID0gX3NoYXJwOwor
ICAgICAgdmFyIHBsdXMgPSBfcGx1czsKKyAgICAgIHZhciBleGl0ID0gMDsKKyAgICAgIHZhciBl
eGl0JDEgPSAwOworICAgICAgaWYgKHBsdXMgIT09IDApIHsKKyAgICAgICAgaWYgKHNoYXJwICE9
PSAwKSB7CisgICAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlm
IChzcGFjZSAhPT0gMCkgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKHN5bWIgIT09IDEwMCkgeworICAgICAgICAgIGlmIChzeW1iICE9PSAxMDUpIHsK
KyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHJldHVybiAvKiBJbnRfcGkgKi80OworICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyogSW50X3BkICovMTsKKyAgICAgICAg
fQorICAgICAgfQorICAgICAgZWxzZSBpZiAoc2hhcnAgIT09IDApIHsKKyAgICAgICAgaWYgKHNw
YWNlICE9PSAwKSB7CisgICAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgICAgfQorICAgICAgICBl
bHNlIGlmIChzeW1iICE9PSA4OCkgeworICAgICAgICAgIGlmIChzeW1iICE9PSAxMTEpIHsKKyAg
ICAgICAgICAgIGlmIChzeW1iICE9PSAxMjApIHsKKyAgICAgICAgICAgICAgZXhpdCQxID0gMjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICByZXR1cm4g
LyogSW50X0N4ICovNzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICByZXR1cm4gLyogSW50X0NvICovMTE7CisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAvKiBJbnRfQ1ggKi85Owor
ICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChzcGFjZSAhPT0gMCkgeworICAgICAg
ICBpZiAoc3ltYiAhPT0gMTAwKSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDEwNSkgeworICAg
ICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgcmV0dXJuIC8qIEludF9zaSAqLzU7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAvKiBJbnRfc2QgKi8yOworICAgICAgICB9Cisg
ICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIHN3aXRjaGVyID0gc3ltYiAtIDg4IHwg
MDsKKyAgICAgICAgaWYgKHN3aXRjaGVyID4gMzIgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgICAg
ICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgc3dpdGNo
IChzd2l0Y2hlcikgeworICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEludF9YICovODsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAg
ICByZXR1cm4gLyogSW50X2QgKi8wOworICAgICAgICAgICAgY2FzZSAxNyA6IAorICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBJbnRfaSAqLzM7CisgICAgICAgICAgICBjYXNlIDIzIDogCisgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIEludF9vICovMTA7CisgICAgICAgICAgICBjYXNlIDI5IDog
CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEludF91ICovMTI7CisgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgY2FzZSAzIDogCisgICAg
ICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgY2Fz
ZSA2IDogCisgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIGNhc2UgOCA6IAorICAg
ICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICBj
YXNlIDExIDogCisgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICBjYXNlIDE0IDog
CisgICAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICBjYXNlIDE2IDogCisgICAgICAg
ICAgICBjYXNlIDE4IDogCisgICAgICAgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgICBjYXNl
IDIwIDogCisgICAgICAgICAgICBjYXNlIDIxIDogCisgICAgICAgICAgICBjYXNlIDIyIDogCisg
ICAgICAgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgICBjYXNlIDI1IDogCisgICAgICAgICAg
ICBjYXNlIDI2IDogCisgICAgICAgICAgICBjYXNlIDI3IDogCisgICAgICAgICAgICBjYXNlIDI4
IDogCisgICAgICAgICAgICBjYXNlIDMwIDogCisgICAgICAgICAgICBjYXNlIDMxIDogCisgICAg
ICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDMyIDogCisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEludF94ICovNjsKKyAgICAg
ICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgaWYgKGV4aXQk
MSA9PT0gMikgeworICAgICAgICB2YXIgZXhpdCQyID0gMDsKKyAgICAgICAgdmFyIHN3aXRjaGVy
JDEgPSBzeW1iIC0gODggfCAwOworICAgICAgICBpZiAoc3dpdGNoZXIkMSA+IDMyIHx8IHN3aXRj
aGVyJDEgPCAwKSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgc3dpdGNoIChzd2l0Y2hlciQxKSB7CisgICAgICAgICAgICBjYXNlIDAg
OiAKKyAgICAgICAgICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBJbnRfQ1ggKi85OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjMgOiAKKyAg
ICAgICAgICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgICAgICAg
IHJldHVybiAvKiBJbnRfQ28gKi8xMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAg
ICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBjYXNlIDI5IDogCisgICAgICAgICAgICAgICAg
ZXhpdCQyID0gMzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMSA6
IAorICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAg
ICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICBjYXNlIDYg
OiAKKyAgICAgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAg
ICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGNhc2Ug
MTEgOiAKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAg
ICAgICAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICAg
IGNhc2UgMTggOiAKKyAgICAgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAgIGNhc2UgMjAg
OiAKKyAgICAgICAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAg
ICAgICAgIGNhc2UgMjQgOiAKKyAgICAgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAgICAgIGNh
c2UgMjYgOiAKKyAgICAgICAgICAgIGNhc2UgMjcgOiAKKyAgICAgICAgICAgIGNhc2UgMjggOiAK
KyAgICAgICAgICAgIGNhc2UgMzAgOiAKKyAgICAgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAg
ICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgMzIgOiAKKyAgICAgICAgICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBJbnRfQ3ggKi83OworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZXhpdCQyID09PSAzKSB7CisgICAgICAgICAg
aWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICBfc2hhcnAgPSAvKiBmYWxzZSAq
LzA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWcocGN0
X2luZCwgc3RyX2luZCwgc3ltYiwgIicjJyIpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgIH0KKyAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgIGlmIChwbHVz
ICE9PSAwKSB7CisgICAgICAgICAgaWYgKHNwYWNlICE9PSAwKSB7CisgICAgICAgICAgICBpZiAo
bGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgICAgX3NwYWNlID0gLyogZmFsc2UgKi8w
OworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVf
ZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCAvKiAiICIgKi8zMiwgIicrJyIpOworICAgICAgICAgICAg
fQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgewor
ICAgICAgICAgICAgX3BsdXMgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIicrJyIp
OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzcGFjZSAhPT0gMCkg
eworICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgX3NwYWNl
ID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0
aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIsICInICciKTsKKyAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAg
ICAgICAgICAgICAgMjcxNiwKKyAgICAgICAgICAgICAgICAgIDI4CisgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9CisgICAgICAKKyAgICB9Owor
ICB9OworICB2YXIgaW5jb21wYXRpYmxlX2ZsYWcgPSBmdW5jdGlvbiAocGN0X2luZCwgc3RyX2lu
ZCwgc3ltYiwgb3B0aW9uKSB7CisgICAgdmFyIHN1YmZtdCA9ICQkU3RyaW5nLnN1YihzdHIsIHBj
dF9pbmQsIHN0cl9pbmQgLSBwY3RfaW5kIHwgMCk7CisgICAgcmV0dXJuIEN1cnJ5Ll81KGZhaWx3
aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxp
ZCBmb3JtYXQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxv
Y2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8w
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2su
X18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXQgY2hhcmFjdGVy
IG51bWJlciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9j
ay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAq
LzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICov
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAq
LzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJh
bCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiwgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJp
bmcgKi9CbG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGlzIGluY29tcGF0aWJs
ZSB3aXRoICciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogQ2hhciAqL0Jsb2NrLl9fKDAsIFsvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEx
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICInIGluIHN1Yi1mb3JtYXQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAg
ImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBpcyBpbmNvbXBh
dGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVMiCisgICAgICAgICAgICAgICAgICBdKSwg
c3RyLCBwY3RfaW5kLCBvcHRpb24sIHN5bWIsIHN1YmZtdCk7CisgIH07CisgIHZhciBwYXJzZV9w
b3NpdGl2ZSA9IGZ1bmN0aW9uIChfc3RyX2luZCwgZW5kX2luZCwgX2FjYykgeworICAgIHdoaWxl
KHRydWUpIHsKKyAgICAgIHZhciBhY2MgPSBfYWNjOworICAgICAgdmFyIHN0cl9pbmQgPSBfc3Ry
X2luZDsKKyAgICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICAgIGludmFsaWRf
Zm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAg
ICAgfQorICAgICAgdmFyIGMgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAg
IGlmIChjID4gNTcgfHwgYyA8IDQ4KSB7CisgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICAgICBzdHJfaW5kLAorICAgICAgICAgICAgICAgIGFjYworICAgICAgICAgICAg
ICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciBuZXdfYWNjID0gQ2FtbF9p
bnQzMi5pbXVsKGFjYywgMTApICsgKGMgLSAvKiAiMCIgKi80OCB8IDApIHwgMDsKKyAgICAgICAg
aWYgKG5ld19hY2MgPiBTeXMubWF4X3N0cmluZ19sZW5ndGgpIHsKKyAgICAgICAgICByZXR1cm4g
Q3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiBpbnRlZ2VyICIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF9kICovMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8w
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lz
aW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0
cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5f
Xyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEludF9kICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8w
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52
YWxpZCBmb3JtYXQgJVM6IGludGVnZXIgJWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAlZCIK
KyAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIG5ld19hY2MsIFN5cy5tYXhfc3RyaW5n
X2xlbmd0aCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgX2FjYyA9IG5l
d19hY2M7CisgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfTsK
KyAgdmFyIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5k
LCBlbmRfaW5kLCBtaW51cywgcGx1cywgc2hhcnAsIHNwYWNlLCBpZ24sIHBhZCwgcHJlYykgewor
ICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNz
YWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICB9CisgICAgdmFy
IHBhcnNlX2NvbnYgPSBmdW5jdGlvbiAocGFkcHJlYykgeworICAgICAgcmV0dXJuIHBhcnNlX2Nv
bnZlcnNpb24ocGN0X2luZCwgc3RyX2luZCArIDEgfCAwLCBlbmRfaW5kLCBwbHVzLCBzaGFycCwg
c3BhY2UsIGlnbiwgcGFkLCBwcmVjLCBwYWRwcmVjLCBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJf
aW5kKSk7CisgICAgfTsKKyAgICBpZiAodHlwZW9mIHBhZCA9PT0gIm51bWJlciIpIHsKKyAgICAg
IHZhciBleGl0ID0gMDsKKyAgICAgIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51bWJlciIpIHsKKyAg
ICAgICAgaWYgKHByZWMgIT09IDApIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gcGFyc2VfY29udigvKiBOb19wYWRkaW5n
ICovMCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBleGl0ID0g
MTsKKyAgICAgIH0KKyAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgIGlmIChtaW51cyAh
PT0gMCkgeworICAgICAgICAgIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51bWJlciIpIHsKKyAgICAg
ICAgICAgIHJldHVybiBwYXJzZV9jb252KC8qIEFyZ19wYWRkaW5nICovQmxvY2suX18oMSwgWy8q
IExlZnQgKi8wXSkpOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHJldHVybiBwYXJzZV9jb252KC8qIExpdF9wYWRkaW5nICovQmxvY2suX18oMCwgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBMZWZ0ICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJlY1swXQorICAgICAgICAgICAgICAgICAgICAgICAgXSkpOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51bWJlciIpIHsKKyAg
ICAgICAgICByZXR1cm4gcGFyc2VfY29udigvKiBBcmdfcGFkZGluZyAqL0Jsb2NrLl9fKDEsIFsv
KiBSaWdodCAqLzFdKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0
dXJuIHBhcnNlX2NvbnYoLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBSaWdodCAqLzEsCisgICAgICAgICAgICAgICAgICAgICAgICBwcmVj
WzBdCisgICAgICAgICAgICAgICAgICAgICAgXSkpOworICAgICAgICB9CisgICAgICB9CisgICAg
ICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gcGFyc2VfY29udihwYWQpOworICAg
IH0KKyAgfTsKKyAgdmFyIHBhcnNlX2FmdGVyX3BhZGRpbmcgPSBmdW5jdGlvbiAocGN0X2luZCwg
c3RyX2luZCwgZW5kX2luZCwgbWludXMsIHBsdXMsIHNoYXJwLCBzcGFjZSwgaWduLCBwYWQpIHsK
KyAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgaW52YWxpZF9mb3JtYXRfbWVz
c2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgfQorICAgIHZh
ciBzeW1iID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCk7CisgICAgaWYgKHN5bWIgIT09
IDQ2KSB7CisgICAgICByZXR1cm4gcGFyc2VfY29udmVyc2lvbihwY3RfaW5kLCBzdHJfaW5kICsg
MSB8IDAsIGVuZF9pbmQsIHBsdXMsIHNoYXJwLCBzcGFjZSwgaWduLCBwYWQsIC8qIE5vX3ByZWNp
c2lvbiAqLzAsIHBhZCwgc3ltYik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIHBjdF9p
bmQkMSA9IHBjdF9pbmQ7CisgICAgICB2YXIgc3RyX2luZCQxID0gc3RyX2luZCArIDEgfCAwOwor
ICAgICAgdmFyIGVuZF9pbmQkMSA9IGVuZF9pbmQ7CisgICAgICB2YXIgbWludXMkMSA9IG1pbnVz
OworICAgICAgdmFyIHBsdXMkMSA9IHBsdXM7CisgICAgICB2YXIgc2hhcnAkMSA9IHNoYXJwOwor
ICAgICAgdmFyIHNwYWNlJDEgPSBzcGFjZTsKKyAgICAgIHZhciBpZ24kMSA9IGlnbjsKKyAgICAg
IHZhciBwYWQkMSA9IHBhZDsKKyAgICAgIGlmIChzdHJfaW5kJDEgPT09IGVuZF9pbmQkMSkgewor
ICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQkMSwgInVuZXhwZWN0ZWQgZW5k
IG9mIGZvcm1hdCIpOworICAgICAgfQorICAgICAgdmFyIHBhcnNlX2xpdGVyYWwgPSBmdW5jdGlv
biAobWludXMsIHN0cl9pbmQpIHsKKyAgICAgICAgdmFyIG1hdGNoID0gcGFyc2VfcG9zaXRpdmUo
c3RyX2luZCwgZW5kX2luZCQxLCAwKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlX2FmdGVyX3ByZWNp
c2lvbihwY3RfaW5kJDEsIG1hdGNoWzBdLCBlbmRfaW5kJDEsIG1pbnVzLCBwbHVzJDEsIHNoYXJw
JDEsIHNwYWNlJDEsIGlnbiQxLCBwYWQkMSwgLyogTGl0X3ByZWNpc2lvbiAqL1ttYXRjaFsxXV0p
OworICAgICAgfTsKKyAgICAgIHZhciBzeW1iJDEgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJf
aW5kJDEpOworICAgICAgdmFyIGV4aXQgPSAwOworICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAg
ICBpZiAoc3ltYiQxID49IDQ4KSB7CisgICAgICAgIGlmIChzeW1iJDEgPj0gNTgpIHsKKyAgICAg
ICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gcGFyc2VfbGl0ZXJhbChtaW51cyQxLCBzdHJfaW5kJDEpOworICAgICAgICB9CisgICAgICB9
CisgICAgICBlbHNlIGlmIChzeW1iJDEgPj0gNDIpIHsKKyAgICAgICAgc3dpdGNoIChzeW1iJDEg
LSA0MiB8IDApIHsKKyAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgcmV0dXJuIHBh
cnNlX2FmdGVyX3ByZWNpc2lvbihwY3RfaW5kJDEsIHN0cl9pbmQkMSArIDEgfCAwLCBlbmRfaW5k
JDEsIG1pbnVzJDEsIHBsdXMkMSwgc2hhcnAkMSwgc3BhY2UkMSwgaWduJDEsIHBhZCQxLCAvKiBB
cmdfcHJlY2lzaW9uICovMSk7CisgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgY2FzZSAz
IDogCisgICAgICAgICAgICAgIGV4aXQkMSA9IDI7CisgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIGNhc2UgNSA6
IAorICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBleGl0ID0gMTsK
KyAgICAgIH0KKyAgICAgIGlmIChleGl0JDEgPT09IDIpIHsKKyAgICAgICAgaWYgKGxlZ2FjeV9i
ZWhhdmlvciQxKSB7CisgICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwobWludXMkMSB8fCAr
KHN5bWIkMSA9PT0gLyogIi0iICovNDUpLCBzdHJfaW5kJDEgKyAxIHwgMCk7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkg
eworICAgICAgICAgIHJldHVybiBwYXJzZV9hZnRlcl9wcmVjaXNpb24ocGN0X2luZCQxLCBzdHJf
aW5kJDEsIGVuZF9pbmQkMSwgbWludXMkMSwgcGx1cyQxLCBzaGFycCQxLCBzcGFjZSQxLCBpZ24k
MSwgcGFkJDEsIC8qIExpdF9wcmVjaXNpb24gKi9bMF0pOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiBpbnZhbGlkX2Zvcm1hdF93aXRob3V0KHN0cl9pbmQkMSAt
IDEgfCAwLCAvKiAiLiIgKi80NiwgInByZWNpc2lvbiIpOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICAKKyAgICB9CisgIH07CisgIHZhciBwYXJzZV9saXRlcmFsID0gZnVuY3Rpb24gKGxpdF9z
dGFydCwgX3N0cl9pbmQsIGVuZF9pbmQpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIg
c3RyX2luZCA9IF9zdHJfaW5kOworICAgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAg
ICAgICAgcmV0dXJuIGFkZF9saXRlcmFsKGxpdF9zdGFydCwgc3RyX2luZCwgLyogRW5kX29mX2Zv
cm1hdCAqLzApOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciBtYXRjaCA9IENh
bWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAgICBpZiAobWF0Y2ggIT09IDM3KSB7
CisgICAgICAgICAgaWYgKG1hdGNoICE9PSA2NCkgeworICAgICAgICAgICAgX3N0cl9pbmQgPSBz
dHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHBh
cnNlX2FmdGVyX2F0KHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCk7CisgICAgICAgICAgICByZXR1
cm4gYWRkX2xpdGVyYWwobGl0X3N0YXJ0LCBzdHJfaW5kLCBtYXRjaCQxWzBdKTsKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFyIG1hdGNoJDIgPSBw
YXJzZV9mb3JtYXQoc3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgcmV0dXJuIGFkZF9saXRl
cmFsKGxpdF9zdGFydCwgc3RyX2luZCwgbWF0Y2gkMlswXSk7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9OworICB9OworICB2YXIgcGFyc2VfZm9ybWF0ID0gZnVuY3Rpb24gKHBjdF9pbmQsIGVu
ZF9pbmQpIHsKKyAgICB2YXIgcGN0X2luZCQxID0gcGN0X2luZDsKKyAgICB2YXIgc3RyX2luZCA9
IHBjdF9pbmQgKyAxIHwgMDsKKyAgICB2YXIgZW5kX2luZCQxID0gZW5kX2luZDsKKyAgICBpZiAo
c3RyX2luZCA9PT0gZW5kX2luZCQxKSB7CisgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVu
ZF9pbmQkMSwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgIH0KKyAgICB2YXIgbWF0
Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICBpZiAobWF0Y2ggIT09IDk1
KSB7CisgICAgICByZXR1cm4gcGFyc2VfZmxhZ3MocGN0X2luZCQxLCBzdHJfaW5kLCBlbmRfaW5k
JDEsIC8qIGZhbHNlICovMCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIHBhcnNl
X2ZsYWdzKHBjdF9pbmQkMSwgc3RyX2luZCArIDEgfCAwLCBlbmRfaW5kJDEsIC8qIHRydWUgKi8x
KTsKKyAgICB9CisgIH07CisgIHZhciBwYXJzZV9hZnRlcl9hdCA9IGZ1bmN0aW9uIChzdHJfaW5k
LCBlbmRfaW5kKSB7CisgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgIHJldHVy
biAvKiBGbXRfRUJCICovWy8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisgICAgICAg
ICAgICAgICAgICAvKiAiQCIgKi82NCwKKyAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3Jt
YXQgKi8wCisgICAgICAgICAgICAgICAgXSldOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZh
ciBjID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCk7CisgICAgICB2YXIgZXhpdCA9IDA7
CisgICAgICBpZiAoYyA+PSA2NSkgeworICAgICAgICBpZiAoYyA+PSA5NCkgeworICAgICAgICAg
IHZhciBzd2l0Y2hlciA9IGMgLSAxMjMgfCAwOworICAgICAgICAgIGlmIChzd2l0Y2hlciA+IDIg
fHwgc3dpdGNoZXIgPCAwKSB7CisgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICAg
ICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX3RhZygvKiB0
cnVlICovMSwgc3RyX2luZCArIDEgfCAwLCBlbmRfaW5kKTsKKyAgICAgICAgICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgIHZhciBiZWdfaW5k
ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gcGFyc2Vf
bGl0ZXJhbChiZWdfaW5kLCBiZWdfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENsb3NlX3RhZyAqLzEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaFswXQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pXTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGVsc2UgaWYgKGMgPj0gOTEpIHsKKyAgICAgICAgICBzd2l0Y2ggKGMgLSA5
MSB8IDApIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgIHJldHVybiBw
YXJzZV90YWcoLyogZmFsc2UgKi8wLCBzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQpOworICAgICAg
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVn
X2luZCQxID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQxID0g
cGFyc2VfbGl0ZXJhbChiZWdfaW5kJDEsIGJlZ19pbmQkMSwgZW5kX2luZCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygx
NywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENsb3NlX2JveCAqLzAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMVswXQorICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKV07CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVs
c2UgaWYgKGMgIT09IDEwKSB7CisgICAgICAgIGlmIChjID49IDMyKSB7CisgICAgICAgICAgc3dp
dGNoIChjIC0gMzIgfCAwKSB7CisgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAg
ICB2YXIgYmVnX2luZCQyID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBt
YXRjaCQyID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDIsIGJlZ19pbmQkMiwgZW5kX2luZCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9C
bG9jay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJyZWFrICovQmxv
Y2suX18oMCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQCAiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQyWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsK
KyAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgIGlmICgoc3RyX2luZCArIDEg
fCAwKSA8IGVuZF9pbmQgJiYgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCArIDEgfCAwKSA9
PT0gLyogIiUiICovMzcpIHsKKyAgICAgICAgICAgICAgICAgIHZhciBiZWdfaW5kJDMgPSBzdHJf
aW5kICsgMiB8IDA7CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMyA9IHBhcnNlX2xpdGVy
YWwoYmVnX2luZCQzLCBiZWdfaW5kJDMsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRXNjYXBlZF9wZXJjZW50ICovNiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDNbMF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDQgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0
cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9b
LyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qICJAIiAqLzY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gk
NFswXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAg
ICAgICAgICAgdmFyIGJlZ19pbmQkNCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICAgICAg
ICB2YXIgbWF0Y2gkNSA9IHBhcnNlX2xpdGVyYWwoYmVnX2luZCQ0LCBiZWdfaW5kJDQsIGVuZF9p
bmQpOworICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdf
bGl0ICovQmxvY2suX18oMTcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCcmVh
ayAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkAsIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNVswXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICBdKV07CisgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgdmFyIGJlZ19p
bmQkNSA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNiA9IHBh
cnNlX2xpdGVyYWwoYmVnX2luZCQ1LCBiZWdfaW5kJDUsIGVuZF9pbmQpOworICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcs
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGbHVzaF9uZXdsaW5lICovNCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ2WzBdCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pXTsKKyAgICAgICAgICAgIGNhc2UgMjcgOiAKKyAgICAgICAgICAgICAgICB2YXIg
c3RyX2luZCQxID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBlbmRfaW5k
JDEgPSBlbmRfaW5kOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQ3OworICAgICAgICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICBpZiAoc3RyX2luZCQxID09PSBlbmRfaW5kJDEg
fHwgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCQxKSAhPT0gLyogIjwiICovNjApIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5k
OworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgdmFyIHN0cl9pbmRfMSA9
IHBhcnNlX3NwYWNlcyhzdHJfaW5kJDEgKyAxIHwgMCwgZW5kX2luZCQxKTsKKyAgICAgICAgICAg
ICAgICAgIHZhciBtYXRjaCQ4ID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZF8xKTsKKyAg
ICAgICAgICAgICAgICAgIHZhciBleGl0JDEgPSAwOworICAgICAgICAgICAgICAgICAgaWYgKG1h
dGNoJDggPj0gNDgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDggPj0gNTgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3Rf
Zm91bmQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgZXhpdCQxID0gMTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gk
OCAhPT0gNDUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMubm90X2ZvdW5kOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGV4aXQkMSA9IDE7CisgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICBpZiAoZXhpdCQxID09PSAxKSB7CisgICAgICAgICAgICAg
ICAgICAgIHZhciBtYXRjaCQ5ID0gcGFyc2VfaW50ZWdlcihzdHJfaW5kXzEsIGVuZF9pbmQkMSk7
CisgICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IG1hdGNoJDlbMV07CisgICAgICAgICAg
ICAgICAgICAgIHZhciBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMobWF0Y2gkOVswXSwgZW5kX2lu
ZCQxKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDEwID0gQ2FtbF9zdHJpbmcuZ2V0
KHN0ciwgc3RyX2luZF8zKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN3aXRjaGVyJDEgPSBt
YXRjaCQxMCAtIDQ1IHwgMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN3aXRjaGVyJDEgPiAx
MiB8fCBzd2l0Y2hlciQxIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgIGlmIChzd2l0Y2hl
ciQxICE9PSAxNykgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gJCRT
dHJpbmcuc3ViKHN0ciwgc3RyX2luZCQxIC0gMiB8IDAsIChzdHJfaW5kXzMgLSBzdHJfaW5kJDEg
fCAwKSArIDMgfCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDcgPSAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyX2luZF8zICsgMSB8IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIEJyZWFrICovQmxvY2suX18oMCwgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChzd2l0Y2hlciQxID09PSAyIHx8IHN3aXRjaGVyJDEgPT09IDEpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgdmFyIG1hdGNoJDExID0gcGFyc2VfaW50ZWdlcihzdHJfaW5kXzMsIGVuZF9p
bmQkMSk7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0cl9pbmRfNSA9IHBhcnNlX3NwYWNl
cyhtYXRjaCQxMVswXSwgZW5kX2luZCQxKTsKKyAgICAgICAgICAgICAgICAgICAgICBpZiAoQ2Ft
bF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZF81KSAhPT0gLyogIj4iICovNjIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsK
KyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgdmFyIHMkMSA9
ICQkU3RyaW5nLnN1YihzdHIsIHN0cl9pbmQkMSAtIDIgfCAwLCAoc3RyX2luZF81IC0gc3RyX2lu
ZCQxIHwgMCkgKyAzIHwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNyA9IC8qIHR1
cGxlICovWworICAgICAgICAgICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSB8IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBCcmVhayAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzJDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTFbMV0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2ggKGV4bil7CisgICAgICAgICAgICAgICAg
ICBpZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkNyA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAg
ICAgIHN0cl9pbmQkMSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBCcmVhayAqL0Jsb2NrLl9f
KDAsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkA7IiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAgICAg
ICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV4blswXSA9PT0gQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuZmFpbHVyZSkgeworICAgICAgICAgICAgICAgICAgICBtYXRjaCQ3ID0gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgc3RyX2luZCQxLAorICAgICAgICAgICAgICAgICAg
ICAgIC8qIEJyZWFrICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAi
QDsiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAwCisgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHRocm93IGV4bjsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgdmFyIG5leHRfaW5kID0gbWF0Y2gkN1swXTsKKyAgICAg
ICAgICAgICAgICB2YXIgbWF0Y2gkMTIgPSBwYXJzZV9saXRlcmFsKG5leHRfaW5kLCBuZXh0X2lu
ZCwgZW5kX2luZCQxKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBG
b3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkN1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMlswXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICBjYXNlIDI4IDogCisg
ICAgICAgICAgICAgICAgdmFyIHN0cl9pbmQkMiA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAg
ICAgICAgICB2YXIgZW5kX2luZCQyID0gZW5kX2luZDsKKyAgICAgICAgICAgICAgICB2YXIgbWF0
Y2gkMTM7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgIHZhciBzdHJf
aW5kXzEkMSA9IHBhcnNlX3NwYWNlcyhzdHJfaW5kJDIsIGVuZF9pbmQkMik7CisgICAgICAgICAg
ICAgICAgICB2YXIgbWF0Y2gkMTQgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kXzEkMSk7
CisgICAgICAgICAgICAgICAgICB2YXIgZXhpdCQyID0gMDsKKyAgICAgICAgICAgICAgICAgIGlm
IChtYXRjaCQxNCA+PSA0OCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkMTQgPj0g
NTgpIHsKKyAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMyA9IC8qIE5vbmUgKi8wOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgIGV4aXQkMiA9IDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDE0ICE9PSA0NSkg
eworICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMyA9IC8qIE5vbmUgKi8wOworICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IGV4aXQkMiA9IDE7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBpZiAo
ZXhpdCQyID09PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQxNSA9IHBhcnNl
X2ludGVnZXIoc3RyX2luZF8xJDEsIGVuZF9pbmQkMik7CisgICAgICAgICAgICAgICAgICAgIHZh
ciBzdHJfaW5kXzMkMSA9IHBhcnNlX3NwYWNlcyhtYXRjaCQxNVswXSwgZW5kX2luZCQyKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmRfMyQxKSAh
PT0gLyogIj4iICovNjIpIHsKKyAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHMkMiA9ICQkU3RyaW5nLnN1YihzdHIsIHN0cl9pbmQkMiAtIDIgfCAw
LCAoc3RyX2luZF8zJDEgLSBzdHJfaW5kJDIgfCAwKSArIDMgfCAwKTsKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkMTMgPSAvKiBTb21lICovWy8qIHR1cGxlICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyX2luZF8zJDEgKyAxIHwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8q
IE1hZ2ljX3NpemUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cyQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE1WzFdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgXV07CisgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgY2F0Y2ggKGV4biQxKXsKKyAgICAgICAgICAgICAgICAgIGlmIChleG4kMSA9PT0g
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7CisgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDEzID0gLyogTm9uZSAqLzA7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChleG4kMVswXSA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFp
bHVyZSkgeworICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMyA9IC8qIE5vbmUgKi8wOworICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHRocm93IGV4biQxOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAobWF0Y2gkMTMpIHsKKyAgICAgICAgICAgICAgICAgIHZh
ciBtYXRjaCQxNiA9IG1hdGNoJDEzWzBdOworICAgICAgICAgICAgICAgICAgdmFyIG5leHRfaW5k
JDEgPSBtYXRjaCQxNlswXTsKKyAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQxNyA9IHBhcnNl
X2xpdGVyYWwobmV4dF9pbmQkMSwgbmV4dF9pbmQkMSwgZW5kX2luZCQyKTsKKyAgICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18o
MTcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE2WzFdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTdbMF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE4ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kJDIs
IHN0cl9pbmQkMiwgZW5kX2luZCQyKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRf
RUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIFNjYW5faW5kaWMgKi9CbG9jay5fXygyLCBbLyogIjwiICovNjBd
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE4WzBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICBjYXNlIDMgOiAKKyAg
ICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICBj
YXNlIDcgOiAKKyAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgY2FzZSA5IDogCisg
ICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAg
ICBjYXNlIDEzIDogCisgICAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICBjYXNlIDE2
IDogCisgICAgICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBjYXNlIDE4IDogCisgICAg
ICAgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgICBjYXNlIDIwIDogCisgICAgICAgICAgICBj
YXNlIDIxIDogCisgICAgICAgICAgICBjYXNlIDIyIDogCisgICAgICAgICAgICBjYXNlIDIzIDog
CisgICAgICAgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgICBjYXNlIDI1IDogCisgICAgICAg
ICAgICBjYXNlIDI2IDogCisgICAgICAgICAgICBjYXNlIDI5IDogCisgICAgICAgICAgICBjYXNl
IDMwIDogCisgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDMxIDogCisgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkNiA9
IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTkgPSBwYXJzZV9s
aXRlcmFsKGJlZ19pbmQkNiwgYmVnX2luZCQ2LCBlbmRfaW5kKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRkZsdXNoICovMiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQxOVswXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07
CisgICAgICAgICAgICBjYXNlIDMyIDogCisgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkNyA9
IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMjAgPSBwYXJzZV9s
aXRlcmFsKGJlZ19pbmQkNywgYmVnX2luZCQ3LCBlbmRfaW5kKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRXNjYXBlZF9hdCAqLzUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0Y2gkMjBbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
XSldOworICAgICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgdmFyIGJlZ19pbmQkOCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgdmFyIG1h
dGNoJDIxID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDgsIGJlZ19pbmQkOCwgZW5kX2luZCk7Cisg
ICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18o
MTcsIFsKKyAgICAgICAgICAgICAgICAgICAgLyogRm9yY2VfbmV3bGluZSAqLzMsCisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDIxWzBdCisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICB9
CisgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICB2YXIgYmVnX2luZCQ5ID0gc3RyX2lu
ZCArIDEgfCAwOworICAgICAgICB2YXIgbWF0Y2gkMjIgPSBwYXJzZV9saXRlcmFsKGJlZ19pbmQk
OSwgYmVnX2luZCQ5LCBlbmRfaW5kKTsKKyAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyog
Rm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICAvKiBT
Y2FuX2luZGljICovQmxvY2suX18oMiwgW2NdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gk
MjJbMF0KKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIH0KKyAgICAgIAorICAgIH0KKyAg
fTsKKyAgdmFyIGFkZF9saXRlcmFsID0gZnVuY3Rpb24gKGxpdF9zdGFydCwgc3RyX2luZCwgZm10
KSB7CisgICAgdmFyIHNpemUgPSBzdHJfaW5kIC0gbGl0X3N0YXJ0IHwgMDsKKyAgICBpZiAoc2l6
ZSAhPT0gMCkgeworICAgICAgaWYgKHNpemUgIT09IDEpIHsKKyAgICAgICAgcmV0dXJuIC8qIEZt
dF9FQkIgKi9bLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAg
ICAgICAgICAkJFN0cmluZy5zdWIoc3RyLCBsaXRfc3RhcnQsIHNpemUpLAorICAgICAgICAgICAg
ICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5f
XygxMiwgWworICAgICAgICAgICAgICAgICAgICBDYW1sX3N0cmluZy5nZXQoc3RyLCBsaXRfc3Rh
cnQpLAorICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAg
ICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1tmbXRd
OworICAgIH0KKyAgfTsKKyAgdmFyIHBhcnNlX3NwYWNlcyA9IGZ1bmN0aW9uIChfc3RyX2luZCwg
ZW5kX2luZCkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBzdHJfaW5kID0gX3N0cl9p
bmQ7CisgICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgICBpbnZhbGlkX2Zv
cm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAg
IH0KKyAgICAgIGlmIChDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKSA9PT0gLyogIiAiICov
MzIpIHsKKyAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHN0
cl9pbmQ7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHBhcnNlX2ludGVnZXIgPSBmdW5j
dGlvbiAoc3RyX2luZCwgZW5kX2luZCkgeworICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7
CisgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBv
ZiBmb3JtYXQiKTsKKyAgICB9CisgICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwg
c3RyX2luZCk7CisgICAgaWYgKG1hdGNoID49IDQ4KSB7CisgICAgICBpZiAobWF0Y2ggPj0gNTgp
IHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjYW1s
aW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgIDI2MjEsCisgICAgICAgICAgICAg
ICAgMTEKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICByZXR1cm4gcGFyc2VfcG9zaXRpdmUoc3RyX2luZCwgZW5kX2luZCwgMCk7
CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKG1hdGNoICE9PSA0NSkgeworICAgICAgdGhy
b3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUs
CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAor
ICAgICAgICAgICAgICAyNjIxLAorICAgICAgICAgICAgICAxMQorICAgICAgICAgICAgXQorICAg
ICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgaWYgKChzdHJfaW5kICsgMSB8IDAp
ID09PSBlbmRfaW5kKSB7CisgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwg
InVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgfQorICAgICAgdmFyIGMgPSBDYW1s
X3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kICsgMSB8IDApOworICAgICAgaWYgKGMgPiA1NyB8fCBj
IDwgNDgpIHsKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVkX2NoYXJhY3RlcihzdHJfaW5kICsgMSB8
IDAsICJkaWdpdCIsIGMpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciBtYXRj
aCQxID0gcGFyc2VfcG9zaXRpdmUoc3RyX2luZCArIDEgfCAwLCBlbmRfaW5kLCAwKTsKKyAgICAg
ICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIG1hdGNoJDFbMF0sCisgICAg
ICAgICAgICAgICAgLW1hdGNoJDFbMV0gfCAwCisgICAgICAgICAgICAgIF07CisgICAgICB9Cisg
ICAgfQorICB9OworICB2YXIgY29tcHV0ZV9mbG9hdF9jb252ID0gZnVuY3Rpb24gKHBjdF9pbmQs
IHN0cl9pbmQsIF9wbHVzLCBfc3BhY2UsIHN5bWIpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAg
ICB2YXIgc3BhY2UgPSBfc3BhY2U7CisgICAgICB2YXIgcGx1cyA9IF9wbHVzOworICAgICAgaWYg
KHBsdXMgIT09IDApIHsKKyAgICAgICAgaWYgKHNwYWNlICE9PSAwKSB7CisgICAgICAgICAgaWYg
KGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICBfc3BhY2UgPSAvKiBmYWxzZSAqLzA7
CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWcocGN0X2lu
ZCwgc3RyX2luZCwgLyogIiAiICovMzIsICInKyciKTsKKyAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFyIGV4aXQgPSAwOworICAgICAgICAgIGlmIChz
eW1iID49IDcyKSB7CisgICAgICAgICAgICB2YXIgc3dpdGNoZXIgPSBzeW1iIC0gMTAxIHwgMDsK
KyAgICAgICAgICAgIGlmIChzd2l0Y2hlciA+IDIgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgIHN3aXRjaCAoc3dpdGNoZXIpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3BlICovNDsKKyAgICAgICAgICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3BmICov
MTsKKyAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIEZsb2F0X3BnICovMTA7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoc3ltYiA+PSA2OSkg
eworICAgICAgICAgICAgc3dpdGNoIChzeW1iIC0gNjkgfCAwKSB7CisgICAgICAgICAgICAgIGNh
c2UgMCA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3BFICovNzsKKyAgICAg
ICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBGbG9hdF9wRyAqLzEzOworICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBleGl0ID0gMTsK
KyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgICAgIGlm
IChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICBfcGx1cyA9IC8qIGZhbHNlICov
MDsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxl
X2ZsYWcocGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIicrJyIpOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAo
c3BhY2UgIT09IDApIHsKKyAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgIGlmIChzeW1i
ID49IDcyKSB7CisgICAgICAgICAgdmFyIHN3aXRjaGVyJDEgPSBzeW1iIC0gMTAxIHwgMDsKKyAg
ICAgICAgICBpZiAoc3dpdGNoZXIkMSA+IDIgfHwgc3dpdGNoZXIkMSA8IDApIHsKKyAgICAgICAg
ICAgIGV4aXQkMSA9IDE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgc3dpdGNoIChzd2l0Y2hlciQxKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3NlICovNTsKKyAgICAgICAgICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfc2YgKi8yOworICAgICAgICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9zZyAqLzEx
OworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSBpZiAoc3ltYiA+PSA2OSkgeworICAgICAgICAgIHN3aXRjaCAoc3ltYiAt
IDY5IHwgMCkgeworICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIEZsb2F0X3NFICovODsKKyAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAg
IGV4aXQkMSA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDIg
OiAKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfc0cgKi8xNDsKKyAgICAgICAgICAg
IAorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBleGl0
JDEgPSAxOworICAgICAgICB9CisgICAgICAgIGlmIChleGl0JDEgPT09IDEpIHsKKyAgICAgICAg
ICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIF9zcGFjZSA9IC8qIGZhbHNl
ICovMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhw
Y3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJyAnIik7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSBpZiAoc3ltYiA+PSA3MikgeworICAgICAgICB2
YXIgc3dpdGNoZXIkMiA9IHN5bWIgLSAxMDEgfCAwOworICAgICAgICBpZiAoc3dpdGNoZXIkMiA+
IDIgfHwgc3dpdGNoZXIkMiA8IDApIHsKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAg
ICAgICAgICAgICAyNzQ0LAorICAgICAgICAgICAgICAgICAgMjUKKyAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
c3dpdGNoIChzd2l0Y2hlciQyKSB7CisgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAg
ICAgICByZXR1cm4gLyogRmxvYXRfZSAqLzM7CisgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfZiAqLzA7CisgICAgICAgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfZyAqLzk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHN5bWIgPj0gNjkp
IHsKKyAgICAgICAgc3dpdGNoIChzeW1iIC0gNjkgfCAwKSB7CisgICAgICAgICAgY2FzZSAwIDog
CisgICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9FICovNjsKKyAgICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X0YgKi8xNTsKKyAgICAgICAgICBjYXNl
IDIgOiAKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X0cgKi8xMjsKKyAgICAgICAgICAK
KyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAg
ICAgICAgICAgICAyNzQ0LAorICAgICAgICAgICAgICAgIDI1CisgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgIF07CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHNlYXJjaF9zdWJmb3Jt
YXRfZW5kID0gZnVuY3Rpb24gKF9zdHJfaW5kLCBlbmRfaW5kLCBjKSB7CisgICAgd2hpbGUodHJ1
ZSkgeworICAgICAgdmFyIHN0cl9pbmQgPSBfc3RyX2luZDsKKyAgICAgIGlmIChzdHJfaW5kID09
PSBlbmRfaW5kKSB7CisgICAgICAgIEN1cnJ5Ll8zKGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0
ICovWworICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwg
WworICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAiLAorICAgICAgICAgICAg
ICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgZXhwZWN0ZWQgIicsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICIlIiAqLzM3LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIENoYXIgKi9CbG9jay5fXygwLCBbLyogU3RyaW5nX2xp
dGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyIgYXQgY2hhcmFjdGVyIG51bWJlciAnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF9kICovMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVj
aXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSld
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQg
c3ViLWZvcm1hdCwgZXhwZWN0ZWQgIiUlJWMiIGF0IGNoYXJhY3RlciBudW1iZXIgJWQnCisgICAg
ICAgICAgICAgICAgXSksIHN0ciwgYywgZW5kX2luZCk7CisgICAgICB9CisgICAgICB2YXIgbWF0
Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgIGlmIChtYXRjaCAhPT0g
MzcpIHsKKyAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgaWYgKChzdHJf
aW5kICsgMSB8IDApID09PSBlbmRfaW5kKSB7CisgICAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVz
c2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQgKyAxIHwgMCkgPT09IGMpIHsK
KyAgICAgICAgICByZXR1cm4gc3RyX2luZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICB2YXIgbWF0Y2gkMSA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQgKyAxIHwg
MCk7CisgICAgICAgICAgdmFyIGV4aXQgPSAwOworICAgICAgICAgIGlmIChtYXRjaCQxID49IDk1
KSB7CisgICAgICAgICAgICBpZiAobWF0Y2gkMSA+PSAxMjMpIHsKKyAgICAgICAgICAgICAgaWYg
KG1hdGNoJDEgPj0gMTI2KSB7CisgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRj
aCQxIC0gMTIzIHwgMCkgeworICAgICAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZChzdHJfaW5kICsg
MiB8IDAsIGVuZF9pbmQsIC8qICJ9IiAqLzEyNSk7CisgICAgICAgICAgICAgICAgICAgICAgX3N0
cl9pbmQgPSBzdWJfZW5kICsgMiB8IDA7CisgICAgICAgICAgICAgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAg
IGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkX2NoYXJh
Y3RlcihzdHJfaW5kICsgMSB8IDAsICJjaGFyYWN0ZXIgJyknIiwgLyogIn0iICovMTI1KTsKKyAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMSA+PSA5NikgeworICAgICAg
ICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICBpZiAoKHN0cl9pbmQgKyAyIHwgMCkgPT09IGVuZF9pbmQpIHsKKyAgICAgICAg
ICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBv
ZiBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB2YXIgbWF0Y2gkMiA9
IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQgKyAyIHwgMCk7CisgICAgICAgICAgICAgIGlm
IChtYXRjaCQyICE9PSA0MCkgeworICAgICAgICAgICAgICAgIGlmIChtYXRjaCQyICE9PSAxMjMp
IHsKKyAgICAgICAgICAgICAgICAgIF9zdHJfaW5kID0gc3RyX2luZCArIDMgfCAwOworICAgICAg
ICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgdmFyIHN1Yl9l
bmQkMSA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kKHN0cl9pbmQgKyAzIHwgMCwgZW5kX2luZCwgLyog
In0iICovMTI1KTsKKyAgICAgICAgICAgICAgICAgIF9zdHJfaW5kID0gc3ViX2VuZCQxICsgMiB8
IDA7CisgICAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHN1Yl9lbmQkMiA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kKHN0cl9p
bmQgKyAzIHwgMCwgZW5kX2luZCwgLyogIikiICovNDEpOworICAgICAgICAgICAgICAgIF9zdHJf
aW5kID0gc3ViX2VuZCQyICsgMiB8IDA7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDEgIT09IDQwKSB7CisgICAgICAgICAgICBpZiAo
bWF0Y2gkMSAhPT0gNDEpIHsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkX2NoYXJh
Y3RlcihzdHJfaW5kICsgMSB8IDAsICJjaGFyYWN0ZXIgJ30nIiwgLyogIikiICovNDEpOworICAg
ICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZh
ciBzdWJfZW5kJDMgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZChzdHJfaW5kICsgMiB8IDAsIGVuZF9p
bmQsIC8qICIpIiAqLzQxKTsKKyAgICAgICAgICAgIF9zdHJfaW5kID0gc3ViX2VuZCQzICsgMiB8
IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9Cisg
ICAgICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgICAgIF9zdHJfaW5kID0gc3RyX2lu
ZCArIDIgfCAwOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisgICAgICAg
ICAgfQorICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFy
IHBhcnNlX2NvbnZlcnNpb24gPSBmdW5jdGlvbiAocGN0X2luZCwgc3RyX2luZCwgZW5kX2luZCwg
cGx1cywgc2hhcnAsIHNwYWNlLCBpZ24sIHBhZCwgcHJlYywgcGFkcHJlYywgc3ltYikgeworICAg
IHZhciBwbHVzX3VzZWQgPSAvKiBmYWxzZSAqLzA7CisgICAgdmFyIHNoYXJwX3VzZWQgPSAvKiBm
YWxzZSAqLzA7CisgICAgdmFyIHNwYWNlX3VzZWQgPSAvKiBmYWxzZSAqLzA7CisgICAgdmFyIGln
bl91c2VkID0gWy8qIGZhbHNlICovMF07CisgICAgdmFyIHBhZF91c2VkID0gLyogZmFsc2UgKi8w
OworICAgIHZhciBwcmVjX3VzZWQgPSBbLyogZmFsc2UgKi8wXTsKKyAgICB2YXIgY2hlY2tfbm9f
MCA9IGZ1bmN0aW9uIChzeW1iLCBwYWQpIHsKKyAgICAgIGlmICh0eXBlb2YgcGFkID09PSAibnVt
YmVyIikgeworICAgICAgICByZXR1cm4gcGFkOworICAgICAgfQorICAgICAgZWxzZSBpZiAocGFk
LnRhZykgeworICAgICAgICBpZiAocGFkWzBdID49IDIpIHsKKyAgICAgICAgICBpZiAobGVnYWN5
X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIHJldHVybiAvKiBBcmdfcGFkZGluZyAqL0Jsb2Nr
Ll9fKDEsIFsvKiBSaWdodCAqLzFdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgc3lt
YiwgIjAiKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgcmV0dXJuIHBhZDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAocGFkWzBd
ID49IDIpIHsKKyAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgcmV0
dXJuIC8qIExpdF9wYWRkaW5nICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgICAgICAv
KiBSaWdodCAqLzEsCisgICAgICAgICAgICAgICAgICAgIHBhZFsxXQorICAgICAgICAgICAgICAg
ICAgXSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGluY29t
cGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIsICIwIik7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gcGFkOworICAgICAgfQorICAgIH07
CisgICAgdmFyIG9wdF9vZl9wYWQgPSBmdW5jdGlvbiAoYywgcGFkKSB7CisgICAgICBpZiAodHlw
ZW9mIHBhZCA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICAg
ICAgfQorICAgICAgZWxzZSBpZiAocGFkLnRhZykgeworICAgICAgICByZXR1cm4gaW5jb21wYXRp
YmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgYywgIicqJyIpOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHN3aXRjaCAocGFkWzBdKSB7CisgICAgICAgICAgY2FzZSAwIDogCisgICAg
ICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICAgIHJldHVy
biAvKiBTb21lICovW3BhZFsxXV07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0
cl9pbmQsIGMsICInLSciKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgICAgICByZXR1cm4gLyogU29tZSAqL1twYWRbMV1dOworICAgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gLyogU29tZSAqL1twYWRbMV1dOworICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhw
Y3RfaW5kLCBzdHJfaW5kLCBjLCAiJzAnIik7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAK
KyAgICAgICAgfQorICAgICAgfQorICAgIH07CisgICAgdmFyIGdldF9wcmVjX29wdCA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgIHByZWNfdXNlZFswXSA9IC8qIHRydWUgKi8xOworICAgICAgaWYgKHR5
cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAg
ICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCAvKiAiXyIg
Ki85NSwgIicqJyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVy
biAvKiBOb25lICovMDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IHJldHVybiAvKiBTb21lICovW3ByZWNbMF1dOworICAgICAgfQorICAgIH07CisgICAgdmFyIGZt
dF9yZXN1bHQ7CisgICAgdmFyIGV4aXQgPSAwOworICAgIHZhciBleGl0JDEgPSAwOworICAgIHZh
ciBleGl0JDIgPSAwOworICAgIGlmIChzeW1iID49IDEyNCkgeworICAgICAgZXhpdCQxID0gNjsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICBzd2l0Y2ggKHN5bWIpIHsKKyAgICAgICAgY2FzZSAz
MyA6IAorICAgICAgICAgICAgdmFyIG1hdGNoID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJf
aW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8q
IEZsdXNoICovQmxvY2suX18oMTAsIFttYXRjaFswXV0pXTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIDQwIDogCisgICAgICAgICAgICB2YXIgc3ViX2VuZCA9IHNlYXJjaF9zdWJm
b3JtYXRfZW5kKHN0cl9pbmQsIGVuZF9pbmQsIC8qICIpIiAqLzQxKTsKKyAgICAgICAgICAgIHZh
ciBiZWdfaW5kID0gc3ViX2VuZCArIDIgfCAwOworICAgICAgICAgICAgdmFyIG1hdGNoJDEgPSBw
YXJzZV9saXRlcmFsKGJlZ19pbmQsIGJlZ19pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFy
IGZtdF9yZXN0ID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyID0gcGFyc2Vf
bGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBzdWJfZW5kKTsKKyAgICAgICAgICAgIHZhciBzdWJf
Zm10dHkgPSBmbXR0eV9vZl9mbXQobWF0Y2gkMlswXSk7CisgICAgICAgICAgICBpZiAoaWduX3Vz
ZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyog
dHJ1ZSAqLzE7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMCA9IG9wdF9vZl9wYWQoLyog
Il8iICovOTUsIHBhZCk7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkID0gLyogSWdub3JlZF9m
b3JtYXRfc3Vic3QgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICBpZ25vcmVkXzAw
MCwKKyAgICAgICAgICAgICAgICAgIHN1Yl9mbXR0eQorICAgICAgICAgICAgICAgIF0pOworICAg
ICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICov
QmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlZCwKKyAgICAgICAgICAg
ICAgICAgICAgZm10X3Jlc3QKKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8x
OworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBGb3JtYXRfc3Vi
c3QgKi9CbG9jay5fXygxNCwgWworICAgICAgICAgICAgICAgICAgICBvcHRfb2ZfcGFkKC8qICIo
IiAqLzQwLCBwYWQpLAorICAgICAgICAgICAgICAgICAgICBzdWJfZm10dHksCisgICAgICAgICAg
ICAgICAgICAgIGZtdF9yZXN0CisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0NCA6IAorICAgICAgICAgICAgZm10
X3Jlc3VsdCA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzNyA6IAorICAgICAgICBjYXNlIDY0IDogCisg
ICAgICAgICAgICBleGl0JDEgPSA0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
NjcgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBz
dHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBmbXRfcmVzdCQxID0gbWF0Y2gkM1sw
XTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwg
aWduKSA/IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisg
ICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfY2FtbF9jaGFyICovMSwKKyAgICAgICAgICAg
ICAgICAgICAgZm10X3Jlc3QkMQorICAgICAgICAgICAgICAgICAgXSldIDogLyogRm10X0VCQiAq
L1svKiBDYW1sX2NoYXIgKi9CbG9jay5fXygxLCBbZm10X3Jlc3QkMV0pXTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDc4IDogCisgICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IHBh
cnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIg
Zm10X3Jlc3QkMiA9IG1hdGNoJDRbMF07CisgICAgICAgICAgICBpZiAoaWduX3VzZWRbMF0gPSAv
KiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkJDEgPSAvKiBJZ25v
cmVkX3NjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygxMCwgWy8qIFRva2VuX2NvdW50ZXIgKi8y
XSk7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRf
cGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICBpZ25vcmVkJDEsCisg
ICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDIKKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBmbXRfcmVzdWx0
ID0gLyogRm10X0VCQiAqL1svKiBTY2FuX2dldF9jb3VudGVyICovQmxvY2suX18oMjEsIFsKKyAg
ICAgICAgICAgICAgICAgICAgLyogVG9rZW5fY291bnRlciAqLzIsCisgICAgICAgICAgICAgICAg
ICAgIGZtdF9yZXN0JDIKKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDgzIDogCisgICAgICAgICAgICBwYWRfdXNl
ZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgdmFyIHBhZCQxID0gY2hlY2tfbm9fMChzeW1i
LCBwYWRwcmVjKTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ1ID0gcGFyc2VfbGl0ZXJhbChzdHJf
aW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBmbXRfcmVzdCQzID0gbWF0
Y2gkNVswXTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24p
IHsKKyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgICAg
dmFyIGlnbm9yZWQkMiA9IC8qIElnbm9yZWRfY2FtbF9zdHJpbmcgKi9CbG9jay5fXygxLCBbb3B0
X29mX3BhZCgvKiAiXyIgKi85NSwgcGFkcHJlYyldKTsKKyAgICAgICAgICAgICAgZm10X3Jlc3Vs
dCA9IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisgICAg
ICAgICAgICAgICAgICAgIGlnbm9yZWQkMiwKKyAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3Qk
MworICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgIHZhciBtYXRjaCQ2ID0gbWFrZV9wYWRkaW5nX2ZtdF9lYmIocGFk
JDEsIGZtdF9yZXN0JDMpOworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAq
L1svKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgbWF0
Y2gkNlswXSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNlsxXQorICAgICAgICAgICAgICAg
ICAgXSldOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
OTEgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQ3ID0gcGFyc2VfY2hhcl9zZXQoc3RyX2luZCwg
ZW5kX2luZCk7CisgICAgICAgICAgICB2YXIgY2hhcl9zZXQgPSBtYXRjaCQ3WzFdOworICAgICAg
ICAgICAgdmFyIG5leHRfaW5kID0gbWF0Y2gkN1swXTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ4
ID0gcGFyc2VfbGl0ZXJhbChuZXh0X2luZCwgbmV4dF9pbmQsIGVuZF9pbmQpOworICAgICAgICAg
ICAgdmFyIGZtdF9yZXN0JDQgPSBtYXRjaCQ4WzBdOworICAgICAgICAgICAgaWYgKGlnbl91c2Vk
WzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRy
dWUgKi8xOworICAgICAgICAgICAgICB2YXIgaWdub3JlZF8wMDAkMSA9IG9wdF9vZl9wYWQoLyog
Il8iICovOTUsIHBhZCk7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkJDMgPSAvKiBJZ25vcmVk
X3NjYW5fY2hhcl9zZXQgKi9CbG9jay5fXyg5LCBbCisgICAgICAgICAgICAgICAgICBpZ25vcmVk
XzAwMCQxLAorICAgICAgICAgICAgICAgICAgY2hhcl9zZXQKKyAgICAgICAgICAgICAgICBdKTsK
KyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJh
bSAqL0Jsb2NrLl9fKDIzLCBbCisgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQkMywKKyAgICAg
ICAgICAgICAgICAgICAgZm10X3Jlc3QkNAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyog
dHJ1ZSAqLzE7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIFNj
YW5fY2hhcl9zZXQgKi9CbG9jay5fXygyMCwgWworICAgICAgICAgICAgICAgICAgICBvcHRfb2Zf
cGFkKC8qICJbIiAqLzkxLCBwYWQpLAorICAgICAgICAgICAgICAgICAgICBjaGFyX3NldCwKKyAg
ICAgICAgICAgICAgICAgICAgZm10X3Jlc3QkNAorICAgICAgICAgICAgICAgICAgXSldOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzIgOiAKKyAgICAg
ICAgY2FzZSAzNSA6IAorICAgICAgICBjYXNlIDQzIDogCisgICAgICAgIGNhc2UgNDUgOiAKKyAg
ICAgICAgY2FzZSA5NSA6IAorICAgICAgICAgICAgZXhpdCQxID0gNTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIDk3IDogCisgICAgICAgICAgICB2YXIgbWF0Y2gkOSA9IHBhcnNl
X2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICBmbXRfcmVz
dWx0ID0gLyogRm10X0VCQiAqL1svKiBBbHBoYSAqL0Jsb2NrLl9fKDE1LCBbbWF0Y2gkOVswXV0p
XTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDY2IDogCisgICAgICAgIGNhc2Ug
OTggOiAKKyAgICAgICAgICAgIGV4aXQkMSA9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSA5OSA6IAorICAgICAgICAgICAgdmFyIGNoYXJfZm9ybWF0ID0gZnVuY3Rpb24gKGZt
dF9yZXN0KSB7CisgICAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBp
Z24pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3Bh
cmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25v
cmVkX2NoYXIgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBDaGFyICov
QmxvY2suX18oMCwgW2ZtdF9yZXN0XSldOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
OworICAgICAgICAgICAgdmFyIHNjYW5fZm9ybWF0ID0gZnVuY3Rpb24gKGZtdF9yZXN0KSB7Cisg
ICAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2su
X18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmVkX3NjYW5fbmV4
dF9jaGFyICovNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogU2Nhbl9uZXh0
X2NoYXIgKi9CbG9jay5fXygyMiwgW2ZtdF9yZXN0XSldOworICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9OworICAgICAgICAgICAgdmFyIG1hdGNoJDEwID0gcGFyc2VfbGl0ZXJhbChzdHJf
aW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBmbXRfcmVzdCQ1ID0gbWF0
Y2gkMTBbMF07CisgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAg
ICAgdmFyIG1hdGNoJDExID0gb3B0X29mX3BhZCgvKiAiYyIgKi85OSwgcGFkKTsKKyAgICAgICAg
ICAgIGZtdF9yZXN1bHQgPSBtYXRjaCQxMSA/ICgKKyAgICAgICAgICAgICAgICBtYXRjaCQxMVsw
XSAhPT0gMCA/ICgKKyAgICAgICAgICAgICAgICAgICAgbGVnYWN5X2JlaGF2aW9yJDEgPyBjaGFy
X2Zvcm1hdChmbXRfcmVzdCQ1KSA6IGludmFsaWRfZm9ybWF0X21lc3NhZ2Uoc3RyX2luZCwgIm5v
bi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zIikKKyAgICAg
ICAgICAgICAgICAgICkgOiBzY2FuX2Zvcm1hdChmbXRfcmVzdCQ1KQorICAgICAgICAgICAgICAp
IDogY2hhcl9mb3JtYXQoZm10X3Jlc3QkNSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSA2OSA6IAorICAgICAgICBjYXNlIDcwIDogCisgICAgICAgIGNhc2UgNzEgOiAKKyAgICAg
ICAgY2FzZSAxMDEgOiAKKyAgICAgICAgY2FzZSAxMDIgOiAKKyAgICAgICAgY2FzZSAxMDMgOiAK
KyAgICAgICAgICAgIGV4aXQkMSA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSA3NiA6IAorICAgICAgICBjYXNlIDEwOCA6IAorICAgICAgICBjYXNlIDExMCA6IAorICAgICAg
ICAgICAgZXhpdCQyID0gODsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDExNCA6
IAorICAgICAgICAgICAgdmFyIG1hdGNoJDEyID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJf
aW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBmbXRfcmVzdCQ2ID0gbWF0Y2gkMTJbMF07
CisgICAgICAgICAgICBmbXRfcmVzdWx0ID0gKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGln
bikgPyAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAg
ICAgICAgICAgICAgICAgICAvKiBJZ25vcmVkX3JlYWRlciAqLzMsCisgICAgICAgICAgICAgICAg
ICAgIGZtdF9yZXN0JDYKKyAgICAgICAgICAgICAgICAgIF0pXSA6IC8qIEZtdF9FQkIgKi9bLyog
UmVhZGVyICovQmxvY2suX18oMTksIFtmbXRfcmVzdCQ2XSldOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgMTE1IDogCisgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8x
OworICAgICAgICAgICAgdmFyIHBhZCQyID0gY2hlY2tfbm9fMChzeW1iLCBwYWRwcmVjKTsKKyAg
ICAgICAgICAgIHZhciBtYXRjaCQxMyA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwg
ZW5kX2luZCk7CisgICAgICAgICAgICB2YXIgZm10X3Jlc3QkNyA9IG1hdGNoJDEzWzBdOworICAg
ICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAg
ICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICB2YXIgaWdub3JlZCQ0
ID0gLyogSWdub3JlZF9zdHJpbmcgKi9CbG9jay5fXygwLCBbb3B0X29mX3BhZCgvKiAiXyIgKi85
NSwgcGFkcHJlYyldKTsKKyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9b
LyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisgICAgICAgICAgICAgICAgICAgIGln
bm9yZWQkNCwKKyAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3QkNworICAgICAgICAgICAgICAg
ICAgXSldOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IHZhciBtYXRjaCQxNCA9IG1ha2VfcGFkZGluZ19mbXRfZWJiKHBhZCQyLCBmbXRfcmVzdCQ3KTsK
KyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogU3RyaW5nICovQmxv
Y2suX18oMiwgWworICAgICAgICAgICAgICAgICAgICBtYXRjaCQxNFswXSwKKyAgICAgICAgICAg
ICAgICAgICAgbWF0Y2gkMTRbMV0KKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDExNiA6IAorICAgICAgICAgICAg
dmFyIG1hdGNoJDE1ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsK
KyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIFRoZXRhICovQmxvY2su
X18oMTYsIFttYXRjaCQxNVswXV0pXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IDg4IDogCisgICAgICAgIGNhc2UgMTAwIDogCisgICAgICAgIGNhc2UgMTA1IDogCisgICAgICAg
IGNhc2UgMTExIDogCisgICAgICAgIGNhc2UgMTE3IDogCisgICAgICAgIGNhc2UgMTIwIDogCisg
ICAgICAgICAgICBleGl0JDIgPSA3OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
MCA6IAorICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgY2FzZSAyIDogCisgICAgICAgIGNhc2Ug
MyA6IAorICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgY2FzZSA1IDogCisgICAgICAgIGNhc2Ug
NiA6IAorICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgY2FzZSA4IDogCisgICAgICAgIGNhc2Ug
OSA6IAorICAgICAgICBjYXNlIDEwIDogCisgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgY2Fz
ZSAxMiA6IAorICAgICAgICBjYXNlIDEzIDogCisgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAg
Y2FzZSAxNSA6IAorICAgICAgICBjYXNlIDE2IDogCisgICAgICAgIGNhc2UgMTcgOiAKKyAgICAg
ICAgY2FzZSAxOCA6IAorICAgICAgICBjYXNlIDE5IDogCisgICAgICAgIGNhc2UgMjAgOiAKKyAg
ICAgICAgY2FzZSAyMSA6IAorICAgICAgICBjYXNlIDIyIDogCisgICAgICAgIGNhc2UgMjMgOiAK
KyAgICAgICAgY2FzZSAyNCA6IAorICAgICAgICBjYXNlIDI1IDogCisgICAgICAgIGNhc2UgMjYg
OiAKKyAgICAgICAgY2FzZSAyNyA6IAorICAgICAgICBjYXNlIDI4IDogCisgICAgICAgIGNhc2Ug
MjkgOiAKKyAgICAgICAgY2FzZSAzMCA6IAorICAgICAgICBjYXNlIDMxIDogCisgICAgICAgIGNh
c2UgMzQgOiAKKyAgICAgICAgY2FzZSAzNiA6IAorICAgICAgICBjYXNlIDM4IDogCisgICAgICAg
IGNhc2UgMzkgOiAKKyAgICAgICAgY2FzZSA0MSA6IAorICAgICAgICBjYXNlIDQyIDogCisgICAg
ICAgIGNhc2UgNDYgOiAKKyAgICAgICAgY2FzZSA0NyA6IAorICAgICAgICBjYXNlIDQ4IDogCisg
ICAgICAgIGNhc2UgNDkgOiAKKyAgICAgICAgY2FzZSA1MCA6IAorICAgICAgICBjYXNlIDUxIDog
CisgICAgICAgIGNhc2UgNTIgOiAKKyAgICAgICAgY2FzZSA1MyA6IAorICAgICAgICBjYXNlIDU0
IDogCisgICAgICAgIGNhc2UgNTUgOiAKKyAgICAgICAgY2FzZSA1NiA6IAorICAgICAgICBjYXNl
IDU3IDogCisgICAgICAgIGNhc2UgNTggOiAKKyAgICAgICAgY2FzZSA1OSA6IAorICAgICAgICBj
YXNlIDYwIDogCisgICAgICAgIGNhc2UgNjEgOiAKKyAgICAgICAgY2FzZSA2MiA6IAorICAgICAg
ICBjYXNlIDYzIDogCisgICAgICAgIGNhc2UgNjUgOiAKKyAgICAgICAgY2FzZSA2OCA6IAorICAg
ICAgICBjYXNlIDcyIDogCisgICAgICAgIGNhc2UgNzMgOiAKKyAgICAgICAgY2FzZSA3NCA6IAor
ICAgICAgICBjYXNlIDc1IDogCisgICAgICAgIGNhc2UgNzcgOiAKKyAgICAgICAgY2FzZSA3OSA6
IAorICAgICAgICBjYXNlIDgwIDogCisgICAgICAgIGNhc2UgODEgOiAKKyAgICAgICAgY2FzZSA4
MiA6IAorICAgICAgICBjYXNlIDg0IDogCisgICAgICAgIGNhc2UgODUgOiAKKyAgICAgICAgY2Fz
ZSA4NiA6IAorICAgICAgICBjYXNlIDg3IDogCisgICAgICAgIGNhc2UgODkgOiAKKyAgICAgICAg
Y2FzZSA5MCA6IAorICAgICAgICBjYXNlIDkyIDogCisgICAgICAgIGNhc2UgOTMgOiAKKyAgICAg
ICAgY2FzZSA5NCA6IAorICAgICAgICBjYXNlIDk2IDogCisgICAgICAgIGNhc2UgMTA0IDogCisg
ICAgICAgIGNhc2UgMTA2IDogCisgICAgICAgIGNhc2UgMTA3IDogCisgICAgICAgIGNhc2UgMTA5
IDogCisgICAgICAgIGNhc2UgMTEyIDogCisgICAgICAgIGNhc2UgMTEzIDogCisgICAgICAgIGNh
c2UgMTE4IDogCisgICAgICAgIGNhc2UgMTE5IDogCisgICAgICAgIGNhc2UgMTIxIDogCisgICAg
ICAgIGNhc2UgMTIyIDogCisgICAgICAgICAgICBleGl0JDEgPSA2OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgMTIzIDogCisgICAgICAgICAgICB2YXIgc3ViX2VuZCQxID0gc2Vh
cmNoX3N1YmZvcm1hdF9lbmQoc3RyX2luZCwgZW5kX2luZCwgLyogIn0iICovMTI1KTsKKyAgICAg
ICAgICAgIHZhciBtYXRjaCQxNiA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgc3Vi
X2VuZCQxKTsKKyAgICAgICAgICAgIHZhciBiZWdfaW5kJDEgPSBzdWJfZW5kJDEgKyAyIHwgMDsK
KyAgICAgICAgICAgIHZhciBtYXRjaCQxNyA9IHBhcnNlX2xpdGVyYWwoYmVnX2luZCQxLCBiZWdf
aW5kJDEsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDggPSBtYXRjaCQxN1sw
XTsKKyAgICAgICAgICAgIHZhciBzdWJfZm10dHkkMSA9IGZtdHR5X29mX2ZtdChtYXRjaCQxNlsw
XSk7CisgICAgICAgICAgICBpZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7Cisg
ICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgIHZhciBp
Z25vcmVkXzAwMCQyID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwgcGFkKTsKKyAgICAgICAgICAg
ICAgdmFyIGlnbm9yZWQkNSA9IC8qIElnbm9yZWRfZm9ybWF0X2FyZyAqL0Jsb2NrLl9fKDcsIFsK
KyAgICAgICAgICAgICAgICAgIGlnbm9yZWRfMDAwJDIsCisgICAgICAgICAgICAgICAgICBzdWJf
Zm10dHkkMQorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0g
LyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAg
ICAgICAgICAgICAgaWdub3JlZCQ1LAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ4Cisg
ICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgICAgZm10
X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0X2FyZyAqL0Jsb2NrLl9fKDEzLCBbCisg
ICAgICAgICAgICAgICAgICAgIG9wdF9vZl9wYWQoLyogInsiICovMTIzLCBwYWQpLAorICAgICAg
ICAgICAgICAgICAgICBzdWJfZm10dHkkMSwKKyAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3Qk
OAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBzd2l0Y2ggKGV4aXQkMikgeworICAg
ICAgY2FzZSA3IDogCisgICAgICAgICAgcGx1c191c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAg
ICAgc2hhcnBfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgIHNwYWNlX3VzZWQgPSAvKiB0
cnVlICovMTsKKyAgICAgICAgICB2YXIgaWNvbnYgPSBjb21wdXRlX2ludF9jb252KHBjdF9pbmQs
IHN0cl9pbmQsIHBsdXMsIHNoYXJwLCBzcGFjZSwgc3ltYik7CisgICAgICAgICAgdmFyIG1hdGNo
JDE4ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAg
ICB2YXIgZm10X3Jlc3QkOSA9IG1hdGNoJDE4WzBdOworICAgICAgICAgIGlmIChpZ25fdXNlZFsw
XSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAq
LzE7CisgICAgICAgICAgICB2YXIgaWdub3JlZF8wMDEgPSBvcHRfb2ZfcGFkKC8qICJfIiAqLzk1
LCBwYWQpOworICAgICAgICAgICAgdmFyIGlnbm9yZWQkNiA9IC8qIElnbm9yZWRfaW50ICovQmxv
Y2suX18oMiwgWworICAgICAgICAgICAgICAgIGljb252LAorICAgICAgICAgICAgICAgIGlnbm9y
ZWRfMDAxCisgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZt
dF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisgICAgICAgICAgICAg
ICAgICBpZ25vcmVkJDYsCisgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ5CisgICAgICAgICAg
ICAgICAgXSldOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBh
ZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICBwcmVjX3VzZWRbMF0gPSAvKiB0cnVl
ICovMTsKKyAgICAgICAgICAgIHZhciBwYWQkMzsKKyAgICAgICAgICAgIHZhciBleGl0JDMgPSAw
OworICAgICAgICAgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIiAmJiBwcmVjID09PSAw
KSB7CisgICAgICAgICAgICAgIHBhZCQzID0gcGFkOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQkMyA9IDk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoZXhpdCQzID09PSA5KSB7CisgICAgICAgICAgICAgIHBhZCQzID0gdHlwZW9m
IHBhZCA9PT0gIm51bWJlciIgPyAvKiBOb19wYWRkaW5nICovMCA6ICgKKyAgICAgICAgICAgICAg
ICAgIHBhZC50YWcgPyAoCisgICAgICAgICAgICAgICAgICAgICAgcGFkWzBdID49IDIgPyAoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2FjeV9iZWhhdmlvciQxID8gLyogQXJnX3BhZGRp
bmcgKi9CbG9jay5fXygxLCBbLyogUmlnaHQgKi8xXSkgOiBpbmNvbXBhdGlibGVfZmxhZyhwY3Rf
aW5kLCBzdHJfaW5kLCAvKiAiMCIgKi80OCwgInByZWNpc2lvbiIpCisgICAgICAgICAgICAgICAg
ICAgICAgICApIDogcGFkCisgICAgICAgICAgICAgICAgICAgICkgOiAoCisgICAgICAgICAgICAg
ICAgICAgICAgcGFkWzBdID49IDIgPyAoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2Fj
eV9iZWhhdmlvciQxID8gLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFkWzFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSA6IGlu
Y29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICIwIiAqLzQ4LCAicHJlY2lzaW9u
IikKKyAgICAgICAgICAgICAgICAgICAgICAgICkgOiBwYWQKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgbWF0
Y2gkMTkgPSBtYWtlX3BhZHByZWNfZm10X2ViYihwYWQkMywgKHByZWNfdXNlZFswXSA9IC8qIHRy
dWUgKi8xLCBwcmVjKSwgZm10X3Jlc3QkOSk7CisgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyog
Rm10X0VCQiAqL1svKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICBpY29u
diwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDE5WzBdLAorICAgICAgICAgICAgICAgICAgbWF0
Y2gkMTlbMV0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQxOVsyXQorICAgICAgICAgICAgICAg
IF0pXTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDggOiAKKyAg
ICAgICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCB8fCAhaXNfaW50X2Jhc2UoQ2FtbF9zdHJp
bmcuZ2V0KHN0ciwgc3RyX2luZCkpKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMjAgPSBwYXJz
ZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZt
dF9yZXN0JDEwID0gbWF0Y2gkMjBbMF07CisgICAgICAgICAgICB2YXIgY291bnRlciA9IGNvdW50
ZXJfb2ZfY2hhcihzeW1iKTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUg
Ki8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQkNyA9IC8qIElnbm9yZWRfc2Nh
bl9nZXRfY291bnRlciAqL0Jsb2NrLl9fKDEwLCBbY291bnRlcl0pOworICAgICAgICAgICAgICBm
bXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMs
IFsKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlZCQ3LAorICAgICAgICAgICAgICAgICAgICBm
bXRfcmVzdCQxMAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8q
IFNjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwgWworICAgICAgICAgICAgICAgICAgICBj
b3VudGVyLAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQxMAorICAgICAgICAgICAgICAg
ICAgXSldOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGV4aXQkMSA9IDY7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAg
ICAgCisgICAgfQorICAgIHN3aXRjaCAoZXhpdCQxKSB7CisgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICBwbHVzX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICBzcGFjZV91c2VkID0gLyog
dHJ1ZSAqLzE7CisgICAgICAgICAgdmFyIGZjb252ID0gY29tcHV0ZV9mbG9hdF9jb252KHBjdF9p
bmQsIHN0cl9pbmQsIHBsdXMsIHNwYWNlLCBzeW1iKTsKKyAgICAgICAgICB2YXIgbWF0Y2gkMjEg
PSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgIHZh
ciBmbXRfcmVzdCQxMSA9IG1hdGNoJDIxWzBdOworICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9
IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7
CisgICAgICAgICAgICB2YXIgaWdub3JlZF8wMDAkMyA9IG9wdF9vZl9wYWQoLyogIl8iICovOTUs
IHBhZCk7CisgICAgICAgICAgICB2YXIgaWdub3JlZF8wMDEkMSA9IGdldF9wcmVjX29wdCgvKiAo
KSAqLzApOworICAgICAgICAgICAgdmFyIGlnbm9yZWQkOCA9IC8qIElnbm9yZWRfZmxvYXQgKi9C
bG9jay5fXyg2LCBbCisgICAgICAgICAgICAgICAgaWdub3JlZF8wMDAkMywKKyAgICAgICAgICAg
ICAgICBpZ25vcmVkXzAwMSQxCisgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgZm10X3Jl
c3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisg
ICAgICAgICAgICAgICAgICBpZ25vcmVkJDgsCisgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQx
MQorICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgdmFyIG1hdGNo
JDIyID0gbWFrZV9wYWRwcmVjX2ZtdF9lYmIocGFkLCAocHJlY191c2VkWzBdID0gLyogdHJ1ZSAq
LzEsIHByZWMpLCBmbXRfcmVzdCQxMSk7CisgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10
X0VCQiAqL1svKiBGbG9hdCAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgIGZjb252
LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMjJbMF0sCisgICAgICAgICAgICAgICAgICBtYXRj
aCQyMlsxXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDIyWzJdCisgICAgICAgICAgICAgICAg
XSldOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMyA6IAorICAg
ICAgICAgIHZhciBtYXRjaCQyMyA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5k
X2luZCk7CisgICAgICAgICAgdmFyIGZtdF9yZXN0JDEyID0gbWF0Y2gkMjNbMF07CisgICAgICAg
ICAgZm10X3Jlc3VsdCA9IChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pID8gLyogRm10
X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAg
ICAgIC8qIElnbm9yZWRfYm9vbCAqLzIsCisgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQxMgor
ICAgICAgICAgICAgICAgIF0pXSA6IC8qIEZtdF9FQkIgKi9bLyogQm9vbCAqL0Jsb2NrLl9fKDks
IFtmbXRfcmVzdCQxMl0pXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6IAorICAg
ICAgICAgIHZhciBtYXRjaCQyNCA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5k
X2luZCk7CisgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogQ2hhcl9saXRl
cmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICBzeW1iLAorICAgICAgICAgICAg
ICAgIG1hdGNoJDI0WzBdCisgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgNSA6IAorICAgICAgICAgIGZtdF9yZXN1bHQgPSBDdXJyeS5fMyhmYWlsd2l0aF9t
ZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVy
YWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9y
bWF0ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9f
KDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEx
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IGF0IGNoYXJhY3RlciBudW1i
ZXIgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2suX18o
NCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9C
bG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIs
IGZsYWcgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1s
X2NoYXIgKi9CbG9jay5fXygxLCBbLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBpcyBvbmx5
IGFsbG93ZWQgYWZ0ZXIgdGhlICciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAiJSIgKi8zNywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBT
dHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJl
Y2lzaW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSldKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3Jt
YXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGZsYWcgJUMgaXMgb25seSBhbGxvd2VkIGFm
dGVyIHRoZSAnJSUnLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJlY2lzaW9uIgorICAgICAgICAgICAg
ICAgICAgXSksIHN0ciwgcGN0X2luZCwgc3ltYik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDYgOiAKKyAgICAgICAgICBpZiAoc3ltYiA+PSAxMDgpIHsKKyAgICAgICAgICAgIGlmIChz
eW1iID49IDExMSkgeworICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBzd2l0Y2ggKHN5bWIgLSAxMDggfCAwKSB7
CisgICAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgIHBsdXNfdXNl
ZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICAgICAgICBzaGFycF91c2VkID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgICAgICAgICAgIHNwYWNlX3VzZWQgPSAvKiB0cnVlICovMTsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGljb252JDEgPSBjb21wdXRlX2ludF9jb252KHBjdF9pbmQs
IHN0cl9pbmQgKyAxIHwgMCwgcGx1cywgc2hhcnAsIHNwYWNlLCBDYW1sX3N0cmluZy5nZXQoc3Ry
LCBzdHJfaW5kKSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBiZWdfaW5kJDIgPSBzdHJfaW5k
ICsgMSB8IDA7CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQyNSA9IHBhcnNlX2xpdGVy
YWwoYmVnX2luZCQyLCBiZWdfaW5kJDIsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgICAgICB2
YXIgZm10X3Jlc3QkMTMgPSBtYXRjaCQyNVswXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGln
bl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgICAgICAgICAgIHBh
ZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIGlnbm9yZWRf
MDAxJDIgPSBvcHRfb2ZfcGFkKC8qICJfIiAqLzk1LCBwYWQpOworICAgICAgICAgICAgICAgICAg
ICAgIHZhciBpZ25vcmVkJDkgPSAvKiBJZ25vcmVkX2ludDMyICovQmxvY2suX18oMywgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICBpY29udiQxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZ25vcmVkXzAwMSQyCisgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAg
ICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICov
QmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkJDksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3QkMTMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSldOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7Cisg
ICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDI2ID0gbWFrZV9wYWRwcmVjX2ZtdF9lYmIo
cGFkLCAocHJlY191c2VkWzBdID0gLyogdHJ1ZSAqLzEsIHByZWMpLCBmbXRfcmVzdCQxMyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogSW50MzIg
Ki9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbnYkMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyNlswXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQyNlsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aCQyNlsyXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgcGx1
c191c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgICAgICAgIHNoYXJwX3VzZWQgPSAv
KiB0cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgc3BhY2VfdXNlZCA9IC8qIHRydWUgKi8x
OworICAgICAgICAgICAgICAgICAgICB2YXIgaWNvbnYkMiA9IGNvbXB1dGVfaW50X2NvbnYocGN0
X2luZCwgc3RyX2luZCArIDEgfCAwLCBwbHVzLCBzaGFycCwgc3BhY2UsIENhbWxfc3RyaW5nLmdl
dChzdHIsIHN0cl9pbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkMyA9IHN0
cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDI3ID0gcGFyc2Vf
bGl0ZXJhbChiZWdfaW5kJDMsIGJlZ19pbmQkMywgZW5kX2luZCk7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBmbXRfcmVzdCQxNCA9IG1hdGNoJDI3WzBdOworICAgICAgICAgICAgICAgICAgICBp
ZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgaWdu
b3JlZF8wMDEkMyA9IG9wdF9vZl9wYWQoLyogIl8iICovOTUsIHBhZCk7CisgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGlnbm9yZWQkMTAgPSAvKiBJZ25vcmVkX25hdGl2ZWludCAqL0Jsb2NrLl9f
KDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbnYkMiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWdub3JlZF8wMDEkMworICAgICAgICAgICAgICAgICAgICAgICAgXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogSWdub3Jl
ZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdu
b3JlZCQxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQxNAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0
cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMjggPSBtYWtlX3BhZHBy
ZWNfZm10X2ViYihwYWQsIChwcmVjX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgcHJlYyksIGZtdF9y
ZXN0JDE0KTsKKyAgICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAq
L1svKiBOYXRpdmVpbnQgKi9CbG9jay5fXyg2LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWNvbnYkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyOFswXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyOFsxXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQyOFsyXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSBpZiAoc3ltYiAhPT0gNzYpIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBsdXNfdXNlZCA9IC8q
IHRydWUgKi8xOworICAgICAgICAgICAgc2hhcnBfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAg
ICAgICAgc3BhY2VfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgdmFyIGljb252JDMg
PSBjb21wdXRlX2ludF9jb252KHBjdF9pbmQsIHN0cl9pbmQgKyAxIHwgMCwgcGx1cywgc2hhcnAs
IHNwYWNlLCBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKSk7CisgICAgICAgICAgICB2YXIg
YmVnX2luZCQ0ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgdmFyIG1hdGNoJDI5ID0g
cGFyc2VfbGl0ZXJhbChiZWdfaW5kJDQsIGJlZ19pbmQkNCwgZW5kX2luZCk7CisgICAgICAgICAg
ICB2YXIgZm10X3Jlc3QkMTUgPSBtYXRjaCQyOVswXTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNl
ZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0
cnVlICovMTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWRfMDAxJDQgPSBvcHRfb2ZfcGFkKC8q
ICJfIiAqLzk1LCBwYWQpOworICAgICAgICAgICAgICB2YXIgaWdub3JlZCQxMSA9IC8qIElnbm9y
ZWRfaW50NjQgKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICAgICAgICBpY29udiQzLAorICAg
ICAgICAgICAgICAgICAgaWdub3JlZF8wMDEkNAorICAgICAgICAgICAgICAgIF0pOworICAgICAg
ICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxv
Y2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlZCQxMSwKKyAgICAgICAgICAg
ICAgICAgICAgZm10X3Jlc3QkMTUKKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUg
Ki8xOworICAgICAgICAgICAgICB2YXIgbWF0Y2gkMzAgPSBtYWtlX3BhZHByZWNfZm10X2ViYihw
YWQsIChwcmVjX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgcHJlYyksIGZtdF9yZXN0JDE1KTsKKyAg
ICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogSW50NjQgKi9CbG9jay5f
Xyg3LCBbCisgICAgICAgICAgICAgICAgICAgIGljb252JDMsCisgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDMwWzBdLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQzMFsxXSwKKyAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMzBbMl0KKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9CisgICAg
aWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIGZtdF9yZXN1bHQgPSBDdXJyeS5fMyhmYWlsd2l0aF9t
ZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAq
L0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAiLAor
ICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAg
ICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICI6IGF0IGNoYXJhY3RlciBudW1iZXIgIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIEludF9kICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5v
X3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmlu
Z19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcsIGludmFsaWQgY29udmVyc2lvbiAiJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIiUiICovMzcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hhciAqL0Jsb2NrLl9fKDAsIFsvKiBDaGFy
X2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogIlwiIiAqLzM0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKV0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAg
IF0pLAorICAgICAgICAgICAgICAgICdpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51
bWJlciAlZCwgaW52YWxpZCBjb252ZXJzaW9uICIlJSVjIicKKyAgICAgICAgICAgICAgXSksIHN0
ciwgc3RyX2luZCAtIDEgfCAwLCBzeW1iKTsKKyAgICB9CisgICAgaWYgKCFsZWdhY3lfYmVoYXZp
b3IkMSkgeworICAgICAgaWYgKCFwbHVzX3VzZWQgJiYgcGx1cykgeworICAgICAgICBpbmNvbXBh
dGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJysnIik7CisgICAgICB9CisgICAg
ICBpZiAoIXNoYXJwX3VzZWQgJiYgc2hhcnApIHsKKyAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWco
cGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIicjJyIpOworICAgICAgfQorICAgICAgaWYgKCFzcGFj
ZV91c2VkICYmIHNwYWNlKSB7CisgICAgICAgIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0
cl9pbmQsIHN5bWIsICInICciKTsKKyAgICAgIH0KKyAgICAgIGlmICghcGFkX3VzZWQgJiYgQ2Ft
bF9vYmouY2FtbF9ub3RlcXVhbCgvKiBQYWRkaW5nX0VCQiAqL1twYWRdLCAvKiBQYWRkaW5nX0VC
QiAqL1svKiBOb19wYWRkaW5nICovMF0pKSB7CisgICAgICAgIGluY29tcGF0aWJsZV9mbGFnKHBj
dF9pbmQsIHN0cl9pbmQsIHN5bWIsICJgcGFkZGluZyciKTsKKyAgICAgIH0KKyAgICAgIGlmICgh
cHJlY191c2VkWzBdICYmIENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyogUHJlY2lzaW9uX0VCQiAq
L1twcmVjXSwgLyogUHJlY2lzaW9uX0VCQiAqL1svKiBOb19wcmVjaXNpb24gKi8wXSkpIHsKKyAg
ICAgICAgaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgaWduID8gLyogIl8iICov
OTUgOiBzeW1iLCAiYHByZWNpc2lvbiciKTsKKyAgICAgIH0KKyAgICAgIGlmIChpZ24gJiYgcGx1
cykgeworICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCAvKiAiXyIg
Ki85NSwgIicrJyIpOworICAgICAgfQorICAgICAgCisgICAgfQorICAgIGlmICghaWduX3VzZWRb
MF0gJiYgaWduKSB7CisgICAgICB2YXIgZXhpdCQ0ID0gMDsKKyAgICAgIGlmIChzeW1iID49IDM4
KSB7CisgICAgICAgIGlmIChzeW1iICE9PSA0NCkgeworICAgICAgICAgIGlmIChzeW1iICE9PSA2
NCkgeworICAgICAgICAgICAgZXhpdCQ0ID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSBpZiAoIWxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICBleGl0JDQgPSAxOworICAg
ICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICghbGVnYWN5
X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICBleGl0JDQgPSAxOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgfQorICAgICAgZWxzZSBpZiAoc3ltYiAhPT0gMzMpIHsKKyAgICAgICAgaWYgKHN5
bWIgPj0gMzcpIHsKKyAgICAgICAgICBpZiAoIWxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAg
ICAgICBleGl0JDQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICBleGl0JDQgPSAxOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICBlbHNlIGlmICghbGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgZXhpdCQ0ID0gMTsK
KyAgICAgIH0KKyAgICAgIGlmIChleGl0JDQgPT09IDEpIHsKKyAgICAgICAgaW5jb21wYXRpYmxl
X2ZsYWcocGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIidfJyIpOworICAgICAgfQorICAgICAgCisg
ICAgfQorICAgIHJldHVybiBmbXRfcmVzdWx0OworICB9OworICB2YXIgcGFyc2VfZmxhZ3MgPSBm
dW5jdGlvbiAocGN0X2luZCwgc3RyX2luZCwgZW5kX2luZCwgaWduKSB7CisgICAgdmFyIHplcm8g
PSBbLyogZmFsc2UgKi8wXTsKKyAgICB2YXIgbWludXMgPSBbLyogZmFsc2UgKi8wXTsKKyAgICB2
YXIgcGx1cyA9IFsvKiBmYWxzZSAqLzBdOworICAgIHZhciBzcGFjZSA9IFsvKiBmYWxzZSAqLzBd
OworICAgIHZhciBzaGFycCA9IFsvKiBmYWxzZSAqLzBdOworICAgIHZhciBzZXRfZmxhZyA9IGZ1
bmN0aW9uIChzdHJfaW5kLCBmbGFnKSB7CisgICAgICBpZiAoZmxhZ1swXSAmJiAhbGVnYWN5X2Jl
aGF2aW9yJDEpIHsKKyAgICAgICAgQ3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQg
Ki9bCisgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBb
CisgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAg
ICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
U3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiLCBkdXBsaWNhdGUgZmxhZyAiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBDYW1sX2NoYXIgKi9CbG9jay5fXygxLCBbLyogRW5kX29mX2Zv
cm1hdCAqLzBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgXSks
CisgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1i
ZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDIgorICAgICAgICAgICAgICAgIF0pLCBzdHIsIHN0cl9p
bmQsIENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpKTsKKyAgICAgIH0KKyAgICAgIGZsYWdb
MF0gPSAvKiB0cnVlICovMTsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfTsKKyAgICB2
YXIgX3N0cl9pbmQgPSBzdHJfaW5kOworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBzdHJf
aW5kJDEgPSBfc3RyX2luZDsKKyAgICAgIGlmIChzdHJfaW5kJDEgPT09IGVuZF9pbmQpIHsKKyAg
ICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBlbmQgb2Yg
Zm9ybWF0Iik7CisgICAgICB9CisgICAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3Ry
LCBzdHJfaW5kJDEpOworICAgICAgdmFyIGV4aXQgPSAwOworICAgICAgdmFyIHN3aXRjaGVyID0g
bWF0Y2ggLSAzMiB8IDA7CisgICAgICBpZiAoc3dpdGNoZXIgPiAxNiB8fCBzd2l0Y2hlciA8IDAp
IHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3dp
dGNoIChzd2l0Y2hlcikgeworICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICBzZXRf
ZmxhZyhzdHJfaW5kJDEsIHNwYWNlKTsKKyAgICAgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5k
JDEgKyAxIHwgMDsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICBjYXNl
IDMgOiAKKyAgICAgICAgICAgICAgc2V0X2ZsYWcoc3RyX2luZCQxLCBzaGFycCk7CisgICAgICAg
ICAgICAgIF9zdHJfaW5kID0gc3RyX2luZCQxICsgMSB8IDA7CisgICAgICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICBzZXRfZmxhZyhz
dHJfaW5kJDEsIHBsdXMpOworICAgICAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQkMSArIDEg
fCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAK
KyAgICAgICAgICAgICAgc2V0X2ZsYWcoc3RyX2luZCQxLCBtaW51cyk7CisgICAgICAgICAgICAg
IF9zdHJfaW5kID0gc3RyX2luZCQxICsgMSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAg
Y2FzZSA0IDogCisgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgY2FzZSA2IDogCisgICAg
ICAgICAgY2FzZSA3IDogCisgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgY2FzZSA5IDog
CisgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICBj
YXNlIDE0IDogCisgICAgICAgICAgY2FzZSAxNSA6IAorICAgICAgICAgICAgICBleGl0ID0gMTsK
KyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAg
ICBzZXRfZmxhZyhzdHJfaW5kJDEsIHplcm8pOworICAgICAgICAgICAgICBfc3RyX2luZCA9IHN0
cl9pbmQkMSArIDEgfCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAg
IAorICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICB2
YXIgcGN0X2luZCQxID0gcGN0X2luZDsKKyAgICAgICAgdmFyIHN0cl9pbmQkMiA9IHN0cl9pbmQk
MTsKKyAgICAgICAgdmFyIGVuZF9pbmQkMSA9IGVuZF9pbmQ7CisgICAgICAgIHZhciB6ZXJvJDEg
PSB6ZXJvWzBdOworICAgICAgICB2YXIgbWludXMkMSA9IG1pbnVzWzBdOworICAgICAgICB2YXIg
cGx1cyQxID0gcGx1c1swXTsKKyAgICAgICAgdmFyIHNoYXJwJDEgPSBzaGFycFswXTsKKyAgICAg
ICAgdmFyIHNwYWNlJDEgPSBzcGFjZVswXTsKKyAgICAgICAgdmFyIGlnbiQxID0gaWduOworICAg
ICAgICBpZiAoc3RyX2luZCQyID09PSBlbmRfaW5kJDEpIHsKKyAgICAgICAgICBpbnZhbGlkX2Zv
cm1hdF9tZXNzYWdlKGVuZF9pbmQkMSwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAg
ICAgICB9CisgICAgICAgIHZhciBwYWR0eSA9IHplcm8kMSAhPT0gMCA/ICgKKyAgICAgICAgICAg
IG1pbnVzJDEgIT09IDAgPyAoCisgICAgICAgICAgICAgICAgbGVnYWN5X2JlaGF2aW9yJDEgPyAv
KiBMZWZ0ICovMCA6IGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQkMSwgc3RyX2luZCQyLCAvKiAi
LSIgKi80NSwgIjAiKQorICAgICAgICAgICAgICApIDogLyogWmVyb3MgKi8yCisgICAgICAgICAg
KSA6ICgKKyAgICAgICAgICAgIG1pbnVzJDEgIT09IDAgPyAvKiBMZWZ0ICovMCA6IC8qIFJpZ2h0
ICovMQorICAgICAgICAgICk7CisgICAgICAgIHZhciBtYXRjaCQxID0gQ2FtbF9zdHJpbmcuZ2V0
KHN0ciwgc3RyX2luZCQyKTsKKyAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgIGlmICht
YXRjaCQxID49IDQ4KSB7CisgICAgICAgICAgaWYgKG1hdGNoJDEgPj0gNTgpIHsKKyAgICAgICAg
ICAgIGV4aXQkMSA9IDE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgdmFyIG1hdGNoJDIgPSBwYXJzZV9wb3NpdGl2ZShzdHJfaW5kJDIsIGVuZF9pbmQkMSwgMCk7
CisgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhwY3RfaW5kJDEsIG1hdGNo
JDJbMF0sIGVuZF9pbmQkMSwgbWludXMkMSwgcGx1cyQxLCBzaGFycCQxLCBzcGFjZSQxLCBpZ24k
MSwgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhZHR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyWzFdCisgICAgICAg
ICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UgaWYgKG1hdGNoJDEgIT09IDQyKSB7CisgICAgICAgICAgZXhpdCQxID0gMTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhw
Y3RfaW5kJDEsIHN0cl9pbmQkMiArIDEgfCAwLCBlbmRfaW5kJDEsIG1pbnVzJDEsIHBsdXMkMSwg
c2hhcnAkMSwgc3BhY2UkMSwgaWduJDEsIC8qIEFyZ19wYWRkaW5nICovQmxvY2suX18oMSwgW3Bh
ZHR5XSkpOworICAgICAgICB9CisgICAgICAgIGlmIChleGl0JDEgPT09IDEpIHsKKyAgICAgICAg
ICBzd2l0Y2ggKHBhZHR5KSB7CisgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAg
ICBpZiAoIWxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICAgICAgICBpbnZhbGlkX2Zv
cm1hdF93aXRob3V0KHN0cl9pbmQkMiAtIDEgfCAwLCAvKiAiLSIgKi80NSwgInBhZGRpbmciKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2FmdGVyX3Bh
ZGRpbmcocGN0X2luZCQxLCBzdHJfaW5kJDIsIGVuZF9pbmQkMSwgbWludXMkMSwgcGx1cyQxLCBz
aGFycCQxLCBzcGFjZSQxLCBpZ24kMSwgLyogTm9fcGFkZGluZyAqLzApOworICAgICAgICAgICAg
Y2FzZSAxIDogCisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2FmdGVyX3BhZGRpbmcocGN0
X2luZCQxLCBzdHJfaW5kJDIsIGVuZF9pbmQkMSwgbWludXMkMSwgcGx1cyQxLCBzaGFycCQxLCBz
cGFjZSQxLCBpZ24kMSwgLyogTm9fcGFkZGluZyAqLzApOworICAgICAgICAgICAgY2FzZSAyIDog
CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2FmdGVyX3BhZGRpbmcocGN0X2luZCQxLCBz
dHJfaW5kJDIsIGVuZF9pbmQkMSwgbWludXMkMSwgcGx1cyQxLCBzaGFycCQxLCBzcGFjZSQxLCBp
Z24kMSwgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBSaWdodCAqLzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgfQorICAgICAgCisgICAgfTsKKyAgfTsK
KyAgdmFyIGlzX2ludF9iYXNlID0gZnVuY3Rpb24gKHN5bWIpIHsKKyAgICB2YXIgc3dpdGNoZXIg
PSBzeW1iIC0gODggfCAwOworICAgIGlmIChzd2l0Y2hlciA+IDMyIHx8IHN3aXRjaGVyIDwgMCkg
eworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBz
d2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgY2FzZSAzIDogCisgICAgICAgIGNhc2UgNCA6IAorICAgICAgICBjYXNlIDUgOiAK
KyAgICAgICAgY2FzZSA2IDogCisgICAgICAgIGNhc2UgNyA6IAorICAgICAgICBjYXNlIDggOiAK
KyAgICAgICAgY2FzZSA5IDogCisgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgY2FzZSAxMSA6
IAorICAgICAgICBjYXNlIDEzIDogCisgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgY2FzZSAx
NSA6IAorICAgICAgICBjYXNlIDE2IDogCisgICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgY2Fz
ZSAxOSA6IAorICAgICAgICBjYXNlIDIwIDogCisgICAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAg
Y2FzZSAyMiA6IAorICAgICAgICBjYXNlIDI0IDogCisgICAgICAgIGNhc2UgMjUgOiAKKyAgICAg
ICAgY2FzZSAyNiA6IAorICAgICAgICBjYXNlIDI3IDogCisgICAgICAgIGNhc2UgMjggOiAKKyAg
ICAgICAgY2FzZSAzMCA6IAorICAgICAgICBjYXNlIDMxIDogCisgICAgICAgICAgICByZXR1cm4g
LyogZmFsc2UgKi8wOworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgY2FzZSAxMiA6IAorICAg
ICAgICBjYXNlIDE3IDogCisgICAgICAgIGNhc2UgMjMgOiAKKyAgICAgICAgY2FzZSAyOSA6IAor
ICAgICAgICBjYXNlIDMyIDogCisgICAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAg
ICAgIAorICAgICAgfQorICAgIH0KKyAgfTsKKyAgdmFyIGNvdW50ZXJfb2ZfY2hhciA9IGZ1bmN0
aW9uIChzeW1iKSB7CisgICAgdmFyIGV4aXQgPSAwOworICAgIGlmIChzeW1iID49IDEwOCkgewor
ICAgICAgaWYgKHN5bWIgPj0gMTExKSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIHN3aXRjaCAoc3ltYiAtIDEwOCB8IDApIHsKKyAgICAgICAgICBj
YXNlIDAgOiAKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIExpbmVfY291bnRlciAqLzA7CisgICAg
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIENoYXJf
Y291bnRlciAqLzE7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAg
ZWxzZSBpZiAoc3ltYiAhPT0gNzYpIHsKKyAgICAgIGV4aXQgPSAxOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHJldHVybiAvKiBUb2tlbl9jb3VudGVyICovMjsKKyAgICB9CisgICAgaWYgKGV4
aXQgPT09IDEpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAiY2Ft
bGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgMjY4MywKKyAgICAgICAgICAgICAg
MzQKKyAgICAgICAgICAgIF0KKyAgICAgICAgICBdOworICAgIH0KKyAgICAKKyAgfTsKKyAgdmFy
IHBhcnNlX2NoYXJfc2V0ID0gZnVuY3Rpb24gKHN0cl9pbmQsIGVuZF9pbmQpIHsKKyAgICBpZiAo
c3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRf
aW5kLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgfQorICAgIHZhciBjaGFyX3Nl
dCA9IEJ5dGVzLm1ha2UoMzIsIC8qICJcMDAwIiAqLzApOworICAgIHZhciBhZGRfcmFuZ2UgPSBm
dW5jdGlvbiAoYywgYyRwcmltZSkgeworICAgICAgZm9yKHZhciBpID0gYzsgaSA8PSBjJHByaW1l
OyArK2kpeworICAgICAgICBhZGRfaW5fY2hhcl9zZXQoY2hhcl9zZXQsIFBlcnZhc2l2ZXMuY2hh
cl9vZl9pbnQoaSkpOworICAgICAgfQorICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9Owor
ICAgIHZhciBmYWlsX3NpbmdsZV9wZXJjZW50ID0gZnVuY3Rpb24gKHN0cl9pbmQpIHsKKyAgICAg
IHJldHVybiBDdXJyeS5fMihmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI6ICciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qICIlIiAqLzM3LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyBhbG9uZSBpcyBub3QgYWNjZXB0
ZWQgaW4gY2hhcmFjdGVyIHNldHMsIHVzZSAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAiJSIgKi8zNywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwg
Ki9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiAiJSIgKi8zNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbnN0
ZWFkIGF0IHBvc2l0aW9uICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hhcl9saXRl
cmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIi4iICovNDYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9m
b3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAg
ICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgJVM6
ICclJScgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCB1c2UgJSUlJSBp
bnN0ZWFkIGF0IHBvc2l0aW9uICVkLiIKKyAgICAgICAgICAgICAgICAgICAgXSksIHN0ciwgc3Ry
X2luZCk7CisgICAgfTsKKyAgICB2YXIgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciA9IGZ1bmN0
aW9uIChfc3RyX2luZCwgZW5kX2luZCwgX2MpIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAg
ICAgdmFyIGMgPSBfYzsKKyAgICAgICAgdmFyIHN0cl9pbmQgPSBfc3RyX2luZDsKKyAgICAgICAg
aWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNz
YWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAgICAgfQorICAg
ICAgICB2YXIgYyRwcmltZSA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAg
ICB2YXIgZXhpdCA9IDA7CisgICAgICAgIHZhciBleGl0JDEgPSAwOworICAgICAgICBpZiAoYyRw
cmltZSA+PSA0NikgeworICAgICAgICAgIGlmIChjJHByaW1lICE9PSA2NCkgeworICAgICAgICAg
ICAgaWYgKGMkcHJpbWUgIT09IDkzKSB7CisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGFkZF9pbl9jaGFyX3Nl
dChjaGFyX3NldCwgYyk7CisgICAgICAgICAgICAgIHJldHVybiBzdHJfaW5kICsgMSB8IDA7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ZXhpdCQxID0gMjsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYyRw
cmltZSAhPT0gMzcpIHsKKyAgICAgICAgICBpZiAoYyRwcmltZSA+PSA0NSkgeworICAgICAgICAg
ICAgdmFyIHN0cl9pbmQkMSA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICAgIHZhciBlbmRf
aW5kJDEgPSBlbmRfaW5kOworICAgICAgICAgICAgdmFyIGMkMSA9IGM7CisgICAgICAgICAgICBp
ZiAoc3RyX2luZCQxID09PSBlbmRfaW5kJDEpIHsKKyAgICAgICAgICAgICAgaW52YWxpZF9mb3Jt
YXRfbWVzc2FnZShlbmRfaW5kJDEsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHZhciBjJHByaW1lJDEgPSBDYW1sX3N0cmluZy5nZXQoc3Ry
LCBzdHJfaW5kJDEpOworICAgICAgICAgICAgaWYgKGMkcHJpbWUkMSAhPT0gMzcpIHsKKyAgICAg
ICAgICAgICAgaWYgKGMkcHJpbWUkMSAhPT0gOTMpIHsKKyAgICAgICAgICAgICAgICBhZGRfcmFu
Z2UoYyQxLCBjJHByaW1lJDEpOworICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZV9jaGFyX3Nl
dF9jb250ZW50KHN0cl9pbmQkMSArIDEgfCAwLCBlbmRfaW5kJDEpOworICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFkZF9pbl9jaGFyX3NldChj
aGFyX3NldCwgYyQxKTsKKyAgICAgICAgICAgICAgICBhZGRfaW5fY2hhcl9zZXQoY2hhcl9zZXQs
IC8qICItIiAqLzQ1KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RyX2luZCQxICsgMSB8IDA7
CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICBpZiAoKHN0cl9pbmQkMSArIDEgfCAwKSA9PT0gZW5kX2luZCQxKSB7CisgICAg
ICAgICAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kJDEsICJ1bmV4cGVjdGVk
IGVuZCBvZiBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB2YXIgYyRw
cmltZSQyID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCQxICsgMSB8IDApOworICAgICAg
ICAgICAgICB2YXIgZXhpdCQyID0gMDsKKyAgICAgICAgICAgICAgaWYgKGMkcHJpbWUkMiAhPT0g
MzcpIHsKKyAgICAgICAgICAgICAgICBpZiAoYyRwcmltZSQyICE9PSA2NCkgeworICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhaWxfc2luZ2xlX3BlcmNlbnQoc3RyX2luZCQxKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICBleGl0
JDIgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBleGl0JDIgPSAxOworICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgIGlmIChleGl0JDIgPT09IDEpIHsKKyAgICAgICAgICAgICAgICBhZGRfcmFu
Z2UoYyQxLCBjJHByaW1lJDIpOworICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZV9jaGFyX3Nl
dF9jb250ZW50KHN0cl9pbmQkMSArIDIgfCAwLCBlbmRfaW5kJDEpOworICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICBleGl0JDEgPSAyOworICAgICAgICB9CisgICAgICAgIGlm
IChleGl0JDEgPT09IDIpIHsKKyAgICAgICAgICBpZiAoYyA9PT0gLyogIiUiICovMzcpIHsKKyAg
ICAgICAgICAgIGFkZF9pbl9jaGFyX3NldChjaGFyX3NldCwgYyRwcmltZSk7CisgICAgICAgICAg
ICByZXR1cm4gcGFyc2VfY2hhcl9zZXRfY29udGVudChzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQp
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAg
ICAgIGlmIChjID09PSAvKiAiJSIgKi8zNykgeworICAgICAgICAgICAgZmFpbF9zaW5nbGVfcGVy
Y2VudChzdHJfaW5kKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYWRkX2luX2NoYXJfc2V0KGNo
YXJfc2V0LCBjKTsKKyAgICAgICAgICBfYyA9IGMkcHJpbWU7CisgICAgICAgICAgX3N0cl9pbmQg
PSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAg
ICAgICB9CisgICAgICAgIAorICAgICAgfTsKKyAgICB9OworICAgIHZhciBwYXJzZV9jaGFyX3Nl
dF9jb250ZW50ID0gZnVuY3Rpb24gKF9zdHJfaW5kLCBlbmRfaW5kKSB7CisgICAgICB3aGlsZSh0
cnVlKSB7CisgICAgICAgIHZhciBzdHJfaW5kID0gX3N0cl9pbmQ7CisgICAgICAgIGlmIChzdHJf
aW5kID09PSBlbmRfaW5kKSB7CisgICAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRf
aW5kLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgICAgIH0KKyAgICAgICAgdmFy
IGMgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgICAgaWYgKGMgIT09IDQ1
KSB7CisgICAgICAgICAgaWYgKGMgIT09IDkzKSB7CisgICAgICAgICAgICByZXR1cm4gcGFyc2Vf
Y2hhcl9zZXRfYWZ0ZXJfY2hhcihzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQsIGMpOworICAgICAg
ICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJfaW5kICsgMSB8
IDA7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGFk
ZF9pbl9jaGFyX3NldChjaGFyX3NldCwgLyogIi0iICovNDUpOworICAgICAgICAgIF9zdHJfaW5k
ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAg
ICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHZhciBwYXJzZV9jaGFyX3NldF9zdGFydCA9
IGZ1bmN0aW9uIChzdHJfaW5kLCBlbmRfaW5kKSB7CisgICAgICBpZiAoc3RyX2luZCA9PT0gZW5k
X2luZCkgeworICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVj
dGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAgIH0KKyAgICAgIHZhciBjID0gQ2FtbF9zdHJpbmcu
Z2V0KHN0ciwgc3RyX2luZCk7CisgICAgICByZXR1cm4gcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hh
cihzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQsIGMpOworICAgIH07CisgICAgaWYgKHN0cl9pbmQg
PT09IGVuZF9pbmQpIHsKKyAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVu
ZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgIH0KKyAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0
cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICB2YXIgbWF0Y2gkMSA9IG1hdGNoICE9PSA5NCA/
IC8qIHR1cGxlICovWworICAgICAgICBzdHJfaW5kLAorICAgICAgICAvKiBmYWxzZSAqLzAKKyAg
ICAgIF0gOiAvKiB0dXBsZSAqL1sKKyAgICAgICAgc3RyX2luZCArIDEgfCAwLAorICAgICAgICAv
KiB0cnVlICovMQorICAgICAgXTsKKyAgICB2YXIgbmV4dF9pbmQgPSBwYXJzZV9jaGFyX3NldF9z
dGFydChtYXRjaCQxWzBdLCBlbmRfaW5kKTsKKyAgICB2YXIgY2hhcl9zZXQkMSA9IEJ5dGVzLnRv
X3N0cmluZyhjaGFyX3NldCk7CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
bmV4dF9pbmQsCisgICAgICAgICAgICBtYXRjaCQxWzFdID8gcmV2X2NoYXJfc2V0KGNoYXJfc2V0
JDEpIDogY2hhcl9zZXQkMQorICAgICAgICAgIF07CisgIH07CisgIHZhciBjaGVja19vcGVuX2Jv
eCA9IGZ1bmN0aW9uIChmbXQpIHsKKyAgICBpZiAodHlwZW9mIGZtdCA9PT0gIm51bWJlciIpIHsK
KyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICAgIGVsc2UgaWYgKGZtdC50YWcgPT09
IDExKSB7CisgICAgICBpZiAodHlwZW9mIGZtdFsxXSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICBvcGVuX2JveF9vZl9zdHJpbmcoZm10WzBdKTsKKyAgICAgICAgICBy
ZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChleG4peworICAgICAg
ICAgIGlmIChleG5bMF0gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUpIHsKKyAg
ICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgdGhyb3cgZXhuOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAg
fQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH07CisgIHZh
ciBwYXJzZV90YWcgPSBmdW5jdGlvbiAoaXNfb3Blbl90YWcsIHN0cl9pbmQsIGVuZF9pbmQpIHsK
KyAgICB0cnkgeworICAgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgdGhy
b3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgICAgfQorICAgICAgdmFy
IG1hdGNoID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCk7CisgICAgICBpZiAobWF0Y2gg
IT09IDYwKSB7CisgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3Vu
ZDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgaW5kID0gJCRTdHJpbmcuaW5k
ZXhfZnJvbShzdHIsIHN0cl9pbmQgKyAxIHwgMCwgLyogIj4iICovNjIpOworICAgICAgICBpZiAo
aW5kID49IGVuZF9pbmQpIHsKKyAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5ub3RfZm91bmQ7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHN1Yl9zdHIgPSAkJFN0cmluZy5z
dWIoc3RyLCBzdHJfaW5kLCAoaW5kIC0gc3RyX2luZCB8IDApICsgMSB8IDApOworICAgICAgICB2
YXIgYmVnX2luZCA9IGluZCArIDEgfCAwOworICAgICAgICB2YXIgbWF0Y2gkMSA9IHBhcnNlX2xp
dGVyYWwoYmVnX2luZCwgYmVnX2luZCwgZW5kX2luZCk7CisgICAgICAgIHZhciBtYXRjaCQyID0g
cGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBpbmQgKyAxIHwgMCk7CisgICAgICAgIHZh
ciBzdWJfZm10ID0gbWF0Y2gkMlswXTsKKyAgICAgICAgdmFyIHN1Yl9mb3JtYXQgPSAvKiBGb3Jt
YXQgKi9bCisgICAgICAgICAgc3ViX2ZtdCwKKyAgICAgICAgICBzdWJfc3RyCisgICAgICAgIF07
CisgICAgICAgIHZhciBmb3JtYXR0aW5nID0gaXNfb3Blbl90YWcgPyAvKiBPcGVuX3RhZyAqL0Js
b2NrLl9fKDAsIFtzdWJfZm9ybWF0XSkgOiAoY2hlY2tfb3Blbl9ib3goc3ViX2ZtdCksIC8qIE9w
ZW5fYm94ICovQmxvY2suX18oMSwgW3N1Yl9mb3JtYXRdKSk7CisgICAgICAgIHJldHVybiAvKiBG
bXRfRUJCICovWy8qIEZvcm1hdHRpbmdfZ2VuICovQmxvY2suX18oMTgsIFsKKyAgICAgICAgICAg
ICAgICAgICAgZm9ybWF0dGluZywKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMVswXQorICAg
ICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAgIH0KKyAgICBjYXRjaCAoZXhuKXsKKyAg
ICAgIGlmIChleG4gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkgeworICAg
ICAgICB2YXIgbWF0Y2gkMyA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2lu
ZCk7CisgICAgICAgIHZhciBzdWJfZm9ybWF0JDEgPSAvKiBGb3JtYXQgKi9bCisgICAgICAgICAg
LyogRW5kX29mX2Zvcm1hdCAqLzAsCisgICAgICAgICAgIiIKKyAgICAgICAgXTsKKyAgICAgICAg
dmFyIGZvcm1hdHRpbmckMSA9IGlzX29wZW5fdGFnID8gLyogT3Blbl90YWcgKi9CbG9jay5fXygw
LCBbc3ViX2Zvcm1hdCQxXSkgOiAvKiBPcGVuX2JveCAqL0Jsb2NrLl9fKDEsIFtzdWJfZm9ybWF0
JDFdKTsKKyAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19nZW4gKi9C
bG9jay5fXygxOCwgWworICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nJDEsCisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDNbMF0KKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIH0K
KyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBleG47CisgICAgICB9CisgICAgfQorICB9Owor
ICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgwLCAwLCBzdHIubGVuZ3RoKTsKK30KKworZnVuY3Rpb24g
Zm9ybWF0X29mX3N0cmluZ19mbXR0eShzdHIsIGZtdHR5KSB7CisgIHZhciBtYXRjaCA9IGZtdF9l
YmJfb2Zfc3RyaW5nKC8qIE5vbmUgKi8wLCBzdHIpOworICB0cnkgeworICAgIHJldHVybiAvKiBG
b3JtYXQgKi9bCisgICAgICAgICAgICB0eXBlX2Zvcm1hdChtYXRjaFswXSwgZm10dHkpLAorICAg
ICAgICAgICAgc3RyCisgICAgICAgICAgXTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAo
ZXhuID09PSBUeXBlX21pc21hdGNoKSB7CisgICAgICByZXR1cm4gQ3VycnkuXzIoZmFpbHdpdGhf
bWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xp
dGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGlu
cHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiBhbmQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAg
ICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNt
YXRjaCBiZXR3ZWVuICVTIGFuZCAlUyIKKyAgICAgICAgICAgICAgICAgICAgXSksIHN0ciwgc3Ry
aW5nX29mX2ZtdHR5KGZtdHR5KSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhu
OworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdChzdHIs
IHBhcmFtKSB7CisgIHZhciBtYXRjaCA9IGZtdF9lYmJfb2Zfc3RyaW5nKC8qIE5vbmUgKi8wLCBz
dHIpOworICB0cnkgeworICAgIHJldHVybiAvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICB0eXBl
X2Zvcm1hdChtYXRjaFswXSwgZm10dHlfb2ZfZm10KHBhcmFtWzBdKSksCisgICAgICAgICAgICBz
dHIKKyAgICAgICAgICBdOworICB9CisgIGNhdGNoIChleG4peworICAgIGlmIChleG4gPT09IFR5
cGVfbWlzbWF0Y2gpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihmYWlsd2l0aF9tZXNzYWdlKC8q
IEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Js
b2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgaW5wdXQ6IGZvcm1h
dCB0eXBlIG1pc21hdGNoIGJldHdlZW4gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Q2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0
cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIGFuZCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENh
bWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAg
ICAgICAgICAgICAgICAgICAgICJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdl
ZW4gJVMgYW5kICVTIgorICAgICAgICAgICAgICAgICAgICBdKSwgc3RyLCBwYXJhbVsxXSk7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCitleHBv
cnRzLmlzX2luX2NoYXJfc2V0ICAgICAgICAgICAgICAgICA9IGlzX2luX2NoYXJfc2V0OworZXhw
b3J0cy5yZXZfY2hhcl9zZXQgICAgICAgICAgICAgICAgICAgPSByZXZfY2hhcl9zZXQ7CitleHBv
cnRzLmNyZWF0ZV9jaGFyX3NldCAgICAgICAgICAgICAgICA9IGNyZWF0ZV9jaGFyX3NldDsKK2V4
cG9ydHMuYWRkX2luX2NoYXJfc2V0ICAgICAgICAgICAgICAgID0gYWRkX2luX2NoYXJfc2V0Owor
ZXhwb3J0cy5mcmVlemVfY2hhcl9zZXQgICAgICAgICAgICAgICAgPSBmcmVlemVfY2hhcl9zZXQ7
CitleHBvcnRzLnBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA9IHBhcmFtX2Zvcm1hdF9v
Zl9pZ25vcmVkX2Zvcm1hdDsKK2V4cG9ydHMubWFrZV9wcmludGYgICAgICAgICAgICAgICAgICAg
ID0gbWFrZV9wcmludGY7CitleHBvcnRzLm91dHB1dF9hY2MgICAgICAgICAgICAgICAgICAgICA9
IG91dHB1dF9hY2M7CitleHBvcnRzLmJ1ZnB1dF9hY2MgICAgICAgICAgICAgICAgICAgICA9IGJ1
ZnB1dF9hY2M7CitleHBvcnRzLnN0cnB1dF9hY2MgICAgICAgICAgICAgICAgICAgICA9IHN0cnB1
dF9hY2M7CitleHBvcnRzLnR5cGVfZm9ybWF0ICAgICAgICAgICAgICAgICAgICA9IHR5cGVfZm9y
bWF0OworZXhwb3J0cy5mbXRfZWJiX29mX3N0cmluZyAgICAgICAgICAgICAgPSBmbXRfZWJiX29m
X3N0cmluZzsKK2V4cG9ydHMuZm9ybWF0X29mX3N0cmluZ19mbXR0eSAgICAgICAgID0gZm9ybWF0
X29mX3N0cmluZ19mbXR0eTsKK2V4cG9ydHMuZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgICAgICAg
ID0gZm9ybWF0X29mX3N0cmluZ19mb3JtYXQ7CitleHBvcnRzLmNoYXJfb2ZfaWNvbnYgICAgICAg
ICAgICAgICAgICA9IGNoYXJfb2ZfaWNvbnY7CitleHBvcnRzLnN0cmluZ19vZl9mb3JtYXR0aW5n
X2xpdCAgICAgICA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdDsKK2V4cG9ydHMuc3RyaW5nX29m
X2Zvcm1hdHRpbmdfZ2VuICAgICAgID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfZ2VuOworZXhwb3J0
cy5zdHJpbmdfb2ZfZm10dHkgICAgICAgICAgICAgICAgPSBzdHJpbmdfb2ZfZm10dHk7CitleHBv
cnRzLnN0cmluZ19vZl9mbXQgICAgICAgICAgICAgICAgICA9IHN0cmluZ19vZl9mbXQ7CitleHBv
cnRzLm9wZW5fYm94X29mX3N0cmluZyAgICAgICAgICAgICA9IG9wZW5fYm94X29mX3N0cmluZzsK
K2V4cG9ydHMuc3ltbSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc3ltbTsKK2V4cG9ydHMu
dHJhbnMgICAgICAgICAgICAgICAgICAgICAgICAgID0gdHJhbnM7CitleHBvcnRzLnJlY2FzdCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IHJlY2FzdDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisv
Ly8vLy8vLyBlbmQgb2YgY2FtbGludGVybmFsRm9ybWF0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1
cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2NhbWxfaW8nXSA9IGZ1bmN0aW9u
KCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxfaW8u
anMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5ICAgICAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVx
dWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiAkY2FyZXQocHJp
bSwgcHJpbSQxKSB7CisgIHJldHVybiBwcmltICsgcHJpbSQxOworfQorCit2YXIgc3RkaW4gPSB1
bmRlZmluZWQ7CisKK3ZhciBzdGRvdXQgPSAvKiByZWNvcmQgKi9bCisgIC8qIGJ1ZmZlciAqLyIi
LAorICAvKiBvdXRwdXQgKi9mdW5jdGlvbiAoXywgcykgeworICAgIHZhciB2ID0gcy5sZW5ndGgg
LSAxIHwgMDsKKyAgICBpZiAoKCAodHlwZW9mIHByb2Nlc3MgIT09ICJ1bmRlZmluZWQiKSAmJiBw
cm9jZXNzLnN0ZG91dCAmJiBwcm9jZXNzLnN0ZG91dC53cml0ZSkpIHsKKyAgICAgIHJldHVybiAo
IHByb2Nlc3Muc3Rkb3V0LndyaXRlICkocyk7CisgICAgfQorICAgIGVsc2UgaWYgKHNbdl0gPT09
ICJcbiIpIHsKKyAgICAgIGNvbnNvbGUubG9nKHMuc2xpY2UoMCwgdikpOworICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBjb25zb2xlLmxvZyhzKTsKKyAg
ICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICB9CitdOworCit2YXIgc3RkZXJyID0gLyog
cmVjb3JkICovWworICAvKiBidWZmZXIgKi8iIiwKKyAgLyogb3V0cHV0ICovZnVuY3Rpb24gKF8s
IHMpIHsKKyAgICB2YXIgdiA9IHMubGVuZ3RoIC0gMSB8IDA7CisgICAgaWYgKHNbdl0gPT09ICJc
biIpIHsKKyAgICAgIGNvbnNvbGUubG9nKHMuc2xpY2UoMCwgdikpOworICAgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBjb25zb2xlLmxvZyhzKTsKKyAgICAg
IHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICB9CitdOworCitmdW5jdGlvbiBjYW1sX21sX29w
ZW5fZGVzY3JpcHRvcl9pbigpIHsKKyAgdGhyb3cgWworICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4gbm90
IGltcGxlbWVudGVkIgorICAgICAgXTsKK30KKworZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2Ny
aXB0b3Jfb3V0KCkgeworICB0aHJvdyBbCisgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmZhaWx1cmUsCisgICAgICAgICJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQgbm90IGltcGxl
bWVudGVkIgorICAgICAgXTsKK30KKworZnVuY3Rpb24gY2FtbF9tbF9mbHVzaChvYykgeworICBp
ZiAob2NbLyogYnVmZmVyICovMF0gIT09ICIiKSB7CisgICAgQ3VycnkuXzIob2NbLyogb3V0cHV0
ICovMV0sIG9jLCBvY1svKiBidWZmZXIgKi8wXSk7CisgICAgb2NbLyogYnVmZmVyICovMF0gPSAi
IjsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOwor
ICB9Cit9CisKK3ZhciBub2RlX3N0ZF9vdXRwdXQgPSAoZnVuY3Rpb24gKHMpeworICAgcmV0dXJu
ICh0eXBlb2YgcHJvY2VzcyAhPT0gInVuZGVmaW5lZCIpICYmIHByb2Nlc3Muc3Rkb3V0ICYmIChw
cm9jZXNzLnN0ZG91dC53cml0ZShzKSwgdHJ1ZSk7CisgICB9CispOworCitmdW5jdGlvbiBjYW1s
X21sX291dHB1dChvYywgc3RyLCBvZmZzZXQsIGxlbikgeworICB2YXIgc3RyJDEgPSBvZmZzZXQg
PT09IDAgJiYgbGVuID09PSBzdHIubGVuZ3RoID8gc3RyIDogc3RyLnNsaWNlKG9mZnNldCwgbGVu
KTsKKyAgaWYgKCggKHR5cGVvZiBwcm9jZXNzICE9PSAidW5kZWZpbmVkIikgJiYgcHJvY2Vzcy5z
dGRvdXQgJiYgcHJvY2Vzcy5zdGRvdXQud3JpdGUgKSAmJiBvYyA9PT0gc3Rkb3V0KSB7CisgICAg
cmV0dXJuICggcHJvY2Vzcy5zdGRvdXQud3JpdGUgKShzdHIkMSk7CisgIH0KKyAgZWxzZSB7Cisg
ICAgdmFyIGlkID0gc3RyJDEubGFzdEluZGV4T2YoIlxuIik7CisgICAgaWYgKGlkIDwgMCkgewor
ICAgICAgb2NbLyogYnVmZmVyICovMF0gPSBvY1svKiBidWZmZXIgKi8wXSArIHN0ciQxOworICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBvY1svKiBidWZm
ZXIgKi8wXSA9IG9jWy8qIGJ1ZmZlciAqLzBdICsgc3RyJDEuc2xpY2UoMCwgaWQgKyAxIHwgMCk7
CisgICAgICBjYW1sX21sX2ZsdXNoKG9jKTsKKyAgICAgIG9jWy8qIGJ1ZmZlciAqLzBdID0gb2Nb
LyogYnVmZmVyICovMF0gKyBzdHIkMS5zbGljZShpZCArIDEgfCAwKTsKKyAgICAgIHJldHVybiAv
KiAoKSAqLzA7CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIo
b2MsICQkY2hhcikgeworICByZXR1cm4gY2FtbF9tbF9vdXRwdXQob2MsIFN0cmluZy5mcm9tQ2hh
ckNvZGUoJCRjaGFyKSwgMCwgMSk7Cit9CisKK2Z1bmN0aW9uIGNhbWxfbWxfaW5wdXQoXywgXyQx
LCBfJDIsIF8kMykgeworICB0aHJvdyBbCisgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmZhaWx1cmUsCisgICAgICAgICJjYW1sX21sX2lucHV0IGljIG5vdCBpbXBsZW1lbnRlZCIKKyAg
ICAgIF07Cit9CisKK2Z1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhcigpIHsKKyAgdGhyb3cgWwor
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAiY2FtbF9t
bF9pbnB1dF9jaGFyIG5vdCBpbXBsZW1udGVkIgorICAgICAgXTsKK30KKworZnVuY3Rpb24gY2Ft
bF9tbF9vdXRfY2hhbm5lbHNfbGlzdCgpIHsKKyAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAg
IHN0ZG91dCwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgIHN0ZGVyciwKKyAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKK30KKworZXhwb3J0cy4k
Y2FyZXQgICAgICAgICAgICAgICAgICAgICAgPSAkY2FyZXQ7CitleHBvcnRzLnN0ZGluICAgICAg
ICAgICAgICAgICAgICAgICA9IHN0ZGluOworZXhwb3J0cy5zdGRvdXQgICAgICAgICAgICAgICAg
ICAgICAgPSBzdGRvdXQ7CitleHBvcnRzLnN0ZGVyciAgICAgICAgICAgICAgICAgICAgICA9IHN0
ZGVycjsKK2V4cG9ydHMuY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4gID0gY2FtbF9tbF9vcGVu
X2Rlc2NyaXB0b3JfaW47CitleHBvcnRzLmNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCA9IGNh
bWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dDsKK2V4cG9ydHMuY2FtbF9tbF9mbHVzaCAgICAgICAg
ICAgICAgID0gY2FtbF9tbF9mbHVzaDsKK2V4cG9ydHMubm9kZV9zdGRfb3V0cHV0ICAgICAgICAg
ICAgID0gbm9kZV9zdGRfb3V0cHV0OworZXhwb3J0cy5jYW1sX21sX291dHB1dCAgICAgICAgICAg
ICAgPSBjYW1sX21sX291dHB1dDsKK2V4cG9ydHMuY2FtbF9tbF9vdXRwdXRfY2hhciAgICAgICAg
ID0gY2FtbF9tbF9vdXRwdXRfY2hhcjsKK2V4cG9ydHMuY2FtbF9tbF9pbnB1dCAgICAgICAgICAg
ICAgID0gY2FtbF9tbF9pbnB1dDsKK2V4cG9ydHMuY2FtbF9tbF9pbnB1dF9jaGFyICAgICAgICAg
ID0gY2FtbF9tbF9pbnB1dF9jaGFyOworZXhwb3J0cy5jYW1sX21sX291dF9jaGFubmVsc19saXN0
ICAgPSBjYW1sX21sX291dF9jaGFubmVsc19saXN0OworLyogc3RkaW4gTm90IGEgcHVyZSBtb2R1
bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX2lvLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4g
ZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2NhbWxfbGV4ZXInXSA9IGZ1bmN0aW9u
KCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxfbGV4
ZXIuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBm
YWlsKCkgeworICB0aHJvdyBbCisgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1
cmUsCisgICAgICAgICJsZXhpbmc6IGVtcHR5IHRva2VuIgorICAgICAgXTsKK30KKworIAorCisv
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICovCisvKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWws
IElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29w
eXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1
ZSBldCAgICovCisvKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhp
cyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovCisvKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICovCisvKiAgdGhlIHNw
ZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4g
ICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qICRJZDogbGV4
aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi8KKworLyogVGhlIHRh
YmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi8K
KworZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykgeworICAgIHZhciBsID0gcy5sZW5ndGggLyAy
OworICAgIHZhciBhID0gbmV3IEFycmF5KGwpOworICAgIC8vIHdoZW4gcy5jaGFyQ29kZUF0KDIg
KiBpICsgMSApID4gMTI4ICgweDgwKQorICAgIC8vIGFbaV0gPCAwICAKKyAgICAvLyBmb3IodmFy
IGkgPSAwIDsgaSA8PSAweGZmZmY7ICsraSkgeyBpZiAoaSA8PCAxNiA+PiAxNiAhPT1pKXtjb25z
b2xlLmxvZyhpPDwxNj4+MTYsICd2cycsaSl9fQorICAgIC8vIAorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbDsgaSsrKQorICAgICAgICBhW2ldID0gKHMuY2hhckNvZGVBdCgyICogaSkgfCAocy5j
aGFyQ29kZUF0KDIgKiBpICsgMSkgPDwgOCkpIDw8IDE2ID4+IDE2OworICAgIHJldHVybiBhOwor
fQorLyoqCisgKiBleHRlcm5hbCBjX2VuZ2luZSAgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhi
dWYgLT4gaW50CisgKiBsZXhpbmcubWwKKyAqIHR5cGUgbGV4X3RhYmxlcyA9IHsKKyAqICAgbGV4
X2Jhc2UgOiBzdHJpbmc7CisgKiAgIGxleF9iYWNrdHJrIDogc3RyaW5nOworICogICBsZXhfZGVm
YXVsdCA6IHN0cmluZzsKKyAqICAgbGV4X3RyYW5zIDogc3RyaW5nOworICogICBsZXhfY2hlY2sg
OiBzdHJpbmc7CisgKiAgIGxleF9iYXNlX2NvZGUgOiBzdHJpbmc7CisgKiAgIGxleF9iYWNrdHJr
X2NvZGUgOiBzdHJpbmc7CisgKiAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7CisgKiAgIGxl
eF90cmFuc19jb2RlIDogc3RyaW5nOworICogICBsZXhfY2hlY2tfY29kZSA6IHN0cmluZzsKKyAq
ICAgbGV4X2NvZGUgOiBzdHJpbmc7CisgKiB9CisgKgorICogdHlwZSBsZXhidWYgPSB7CisgKiAg
IHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQgOworICogICBtdXRhYmxlIGxleF9idWZmZXIg
OiBieXRlczsKKyAqICAgbXV0YWJsZSBsZXhfYnVmZmVyX2xlbiA6IGludDsKKyAqICAgbXV0YWJs
ZSBsZXhfYWJzX3BvcyA6IGludDsKKyAqICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50Owor
ICogICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDsKKyAqICAgbXV0YWJsZSBsZXhfbGFzdF9w
b3MgOiBpbnQ7CisgKiAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50OworICogICBtdXRh
YmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7CisgKiAgIG11dGFibGUgbGV4X21lbSA6IGludCBh
cnJheTsKKyAqICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uOworICogICBtdXRhYmxl
IGxleF9jdXJyX3A7CisgKiB9CisgKiBAcGFyYW0gdGJsCisgKiBAcGFyYW0gc3RhcnRfc3RhdGUK
KyAqIEBwYXJhbSBsZXhidWYKKyAqIEByZXR1cm5zIHthbnl9CisgKi8KK2Z1bmN0aW9uICQkY2Ft
bF9sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1ZikgeworICAgIC8vIExleGluZy5s
ZXhidWYKKyAgICB2YXIgbGV4X2J1ZmZlciA9IDE7CisgICAgdmFyIGxleF9idWZmZXJfbGVuID0g
MjsKKyAgICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDQ7CisgICAgdmFyIGxleF9jdXJyX3BvcyA9IDU7
CisgICAgdmFyIGxleF9sYXN0X3BvcyA9IDY7CisgICAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDc7
CisgICAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDg7CisgICAgLy8gTGV4aW5nLmxleF90YWJsZXMK
KyAgICB2YXIgbGV4X2Jhc2UgPSAwOworICAgIHZhciBsZXhfYmFja3RyayA9IDE7CisgICAgdmFy
IGxleF9kZWZhdWx0ID0gMjsKKyAgICB2YXIgbGV4X3RyYW5zID0gMzsKKyAgICB2YXIgbGV4X2No
ZWNrID0gNDsKKyAgICBpZiAoIXRibC5sZXhfZGVmYXVsdCkgeworICAgICAgICB0YmwubGV4X2Jh
c2UgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2VdKTsKKyAgICAgICAgdGJsLmxleF9iYWNr
dHJrID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYWNrdHJrXSk7CisgICAgICAgIHRibC5sZXhf
Y2hlY2sgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2NoZWNrXSk7CisgICAgICAgIHRibC5sZXhf
dHJhbnMgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7CisgICAgICAgIHRibC5sZXhf
ZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfZGVmYXVsdF0pOworICAgIH0KKyAgICB2
YXIgYzsKKyAgICB2YXIgc3RhdGUgPSBzdGFydF9zdGF0ZTsKKyAgICAvL3ZhciBidWZmZXIgPSBi
eXRlc19vZl9zdHJpbmcobGV4YnVmW2xleF9idWZmZXJdKTsKKyAgICB2YXIgYnVmZmVyID0gbGV4
YnVmW2xleF9idWZmZXJdOworICAgIGlmIChzdGF0ZSA+PSAwKSB7CisgICAgICAgIC8qIEZpcnN0
IGVudHJ5ICovCisgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFy
dF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107CisgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9h
Y3Rpb25dID0gLTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBSZWVudHJ5IGFmdGVy
IHJlZmlsbCAqLworICAgICAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7CisgICAgfQorICAgIGZvciAo
OzspIHsKKyAgICAgICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZv
ciBjdXJyZW50IHN0YXRlICovCisgICAgICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRl
XTsKKyAgICAgICAgaWYgKGJhc2UgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC1iYXNlIC0gMTsK
KyAgICAgICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi8KKyAgICAgICAgdmFy
IGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdOworICAgICAgICBpZiAoYmFja3RyayA+
PSAwKSB7CisgICAgICAgICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vy
cl9wb3NdOworICAgICAgICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrOwor
ICAgICAgICB9CisgICAgICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovCisgICAgICAg
IGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKSB7Cisg
ICAgICAgICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT09IDApCisgICAgICAgICAg
ICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgYyA9IDI1NjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIFJl
YWQgbmV4dCBpbnB1dCBjaGFyICovCisgICAgICAgICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhf
Y3Vycl9wb3NdXTsKKyAgICAgICAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdKys7CisgICAgICAg
IH0KKyAgICAgICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi8KKyAgICAgICAgaWYgKHRibC5s
ZXhfY2hlY2tbYmFzZSArIGNdID09PSBzdGF0ZSkgeworICAgICAgICAgICAgc3RhdGUgPSB0Ymwu
bGV4X3RyYW5zW2Jhc2UgKyBjXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTsKKyAgICAgICAgfQorICAgICAgICAv
KiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNr
IHBvaW50ICovCisgICAgICAgIGlmIChzdGF0ZSA8IDApIHsKKyAgICAgICAgICAgIGxleGJ1Zlts
ZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107CisgICAgICAgICAgICBpZiAobGV4
YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpCisgICAgICAgICAgICAgICAgZmFpbCgpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0
aW9uXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIEVyYXNlIHRo
ZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhcworICAg
ICAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJh
Y2t0cmFjayBhYm92ZSkKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGMgPT0gMjU2
KQorICAgICAgICAgICAgICAgIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDsKKyAgICAgICAg
fQorICAgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqLworLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAq
LworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisv
KioKKyAqIHMgLT4gTGV4aW5nLmxleF90YWJsZXMubGV4X2NvZGUKKyAqIG1lbSAtPiBMZXhpbmcu
bGV4YnVmLmxleF9tZW0gKCogaW50IGFycmF5ICopCisgKi8gICAgICAgICAgCisgICAgICAgICAg
CitmdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHsKKyAgICBm
b3IgKDs7KSB7CisgICAgICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7CisgICAgICAgIGkr
KzsKKyAgICAgICAgaWYgKGRzdCA9PSAweGZmKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOworICAgICAgICBpKys7CisgICAgICAgIGlmIChz
cmMgPT0gMHhmZikKKyAgICAgICAgICAgIG1lbVtkc3RdID0gY3Vycl9wb3M7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1lbVtkc3RdID0gbWVtW3NyY107CisgICAgfQorfQorCisKKy8qKgor
ICogcyAtPiBMZXhpbmcubGV4X3RhYmxlcy5sZXhfY29kZQorICogbWVtIC0+IExleGluZy5sZXhi
dWYubGV4X21lbSAoKiBpbnQgYXJyYXkgKikKKyAqLworICAKK2Z1bmN0aW9uIGNhbWxfbGV4X3J1
bl90YWcocywgaSwgbWVtKSB7CisgICAgZm9yICg7OykgeworICAgICAgICB2YXIgZHN0ID0gcy5j
aGFyQ29kZUF0KGkpOworICAgICAgICBpKys7CisgICAgICAgIGlmIChkc3QgPT0gMHhmZikKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsKKyAg
ICAgICAgaSsrOworICAgICAgICBpZiAoc3JjID09IDB4ZmYpCisgICAgICAgICAgICBtZW1bZHN0
XSA9IC0xOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtZW1bZHN0XSA9IG1lbVtzcmNdOwor
ICAgIH0KK30KKy8qKgorICogZXh0ZXJuYWwgY19uZXdfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBp
bnQgLT4gbGV4YnVmIC0+IGludCA9ICJjYW1sX25ld19sZXhfZW5naW5lIgorICogQHBhcmFtIHRi
bAorICogQHBhcmFtIHN0YXJ0X3N0YXRlCisgKiBAcGFyYW0gbGV4YnVmCisgKiBAcmV0dXJucyB7
YW55fQorICovCitmdW5jdGlvbiAkJGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0
ZSwgbGV4YnVmKSB7CisgICAgLy8gTGV4aW5nLmxleGJ1ZgorICAgIHZhciBsZXhfYnVmZmVyID0g
MTsKKyAgICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAyOworICAgIHZhciBsZXhfc3RhcnRfcG9zID0g
NDsKKyAgICB2YXIgbGV4X2N1cnJfcG9zID0gNTsKKyAgICB2YXIgbGV4X2xhc3RfcG9zID0gNjsK
KyAgICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gNzsKKyAgICB2YXIgbGV4X2VvZl9yZWFjaGVkID0g
ODsKKyAgICB2YXIgbGV4X21lbSA9IDk7CisgICAgLy8gTGV4aW5nLmxleF90YWJsZXMKKyAgICB2
YXIgbGV4X2Jhc2UgPSAwOworICAgIHZhciBsZXhfYmFja3RyayA9IDE7CisgICAgdmFyIGxleF9k
ZWZhdWx0ID0gMjsKKyAgICB2YXIgbGV4X3RyYW5zID0gMzsKKyAgICB2YXIgbGV4X2NoZWNrID0g
NDsKKyAgICB2YXIgbGV4X2Jhc2VfY29kZSA9IDU7CisgICAgdmFyIGxleF9iYWNrdHJrX2NvZGUg
PSA2OworICAgIHZhciBsZXhfZGVmYXVsdF9jb2RlID0gNzsKKyAgICB2YXIgbGV4X3RyYW5zX2Nv
ZGUgPSA4OworICAgIHZhciBsZXhfY2hlY2tfY29kZSA9IDk7CisgICAgdmFyIGxleF9jb2RlID0g
MTA7CisgICAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHsKKyAgICAgICAgdGJsLmxleF9iYXNlID0g
Y2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYXNlXSk7CisgICAgICAgIHRibC5sZXhfYmFja3RyayA9
IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfYmFja3Rya10pOworICAgICAgICB0YmwubGV4X2NoZWNr
ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja10pOworICAgICAgICB0YmwubGV4X3RyYW5z
ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF90cmFuc10pOworICAgICAgICB0YmwubGV4X2RlZmF1
bHQgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2RlZmF1bHRdKTsKKyAgICB9CisgICAgaWYgKCF0
YmwubGV4X2RlZmF1bHRfY29kZSkgeworICAgICAgICB0YmwubGV4X2Jhc2VfY29kZSA9IGNhbWxf
bGV4X2FycmF5KHRibFtsZXhfYmFzZV9jb2RlXSk7CisgICAgICAgIHRibC5sZXhfYmFja3Rya19j
b2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYWNrdHJrX2NvZGVdKTsKKyAgICAgICAgdGJs
LmxleF9jaGVja19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja19jb2RlXSk7Cisg
ICAgICAgIHRibC5sZXhfdHJhbnNfY29kZSA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfdHJhbnNf
Y29kZV0pOworICAgICAgICB0YmwubGV4X2RlZmF1bHRfY29kZSA9IGNhbWxfbGV4X2FycmF5KHRi
bFtsZXhfZGVmYXVsdF9jb2RlXSk7CisgICAgfQorICAgIGlmICh0YmwubGV4X2NvZGUgPT0gbnVs
bCkgeworICAgICAgICAvL3RibC5sZXhfY29kZSA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHRibFts
ZXhfY29kZV0pOworICAgICAgICB0YmwubGV4X2NvZGUgPSAodGJsW2xleF9jb2RlXSk7CisgICAg
fQorICAgIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlOworICAgIC8vdmFyIGJ1ZmZlciA9IGNh
bWxfYnl0ZXNfb2Zfc3RyaW5nKGxleGJ1ZltsZXhfYnVmZmVyXSk7CisgICAgdmFyIGJ1ZmZlciA9
IGxleGJ1ZltsZXhfYnVmZmVyXTsKKyAgICBpZiAoc3RhdGUgPj0gMCkgeworICAgICAgICAvKiBG
aXJzdCBlbnRyeSAqLworICAgICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhf
c3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdOworICAgICAgICBsZXhidWZbbGV4X2xh
c3RfYWN0aW9uXSA9IC0xOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogUmVlbnRyeSBh
ZnRlciByZWZpbGwgKi8KKyAgICAgICAgc3RhdGUgPSAtc3RhdGUgLSAxOworICAgIH0KKyAgICBm
b3IgKDs7KSB7CisgICAgICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJl
ciBmb3IgY3VycmVudCBzdGF0ZSAqLworICAgICAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtz
dGF0ZV07CisgICAgICAgIGlmIChiYXNlIDwgMCkgeworICAgICAgICAgICAgdmFyIHBjX29mZiA9
IHRibC5sZXhfYmFzZV9jb2RlW3N0YXRlXTsKKyAgICAgICAgICAgIGNhbWxfbGV4X3J1bl90YWco
dGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7CisgICAgICAgICAgICByZXR1
cm4gLWJhc2UgLSAxOworICAgICAgICB9CisgICAgICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3Ry
YWNrIHBvaW50ICovCisgICAgICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRl
XTsKKyAgICAgICAgaWYgKGJhY2t0cmsgPj0gMCkgeworICAgICAgICAgICAgdmFyIHBjX29mZiA9
IHRibC5sZXhfYmFja3Rya19jb2RlW3N0YXRlXTsKKyAgICAgICAgICAgIGNhbWxfbGV4X3J1bl90
YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7CisgICAgICAgICAgICBs
ZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdOworICAgICAgICAgICAg
bGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrOworICAgICAgICB9CisgICAgICAgIC8q
IFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovCisgICAgICAgIGlmIChsZXhidWZbbGV4X2N1cnJf
cG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKSB7CisgICAgICAgICAgICBpZiAobGV4YnVm
W2xleF9lb2ZfcmVhY2hlZF0gPT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLXN0YXRlIC0g
MTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjID0gMjU2OworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi8K
KyAgICAgICAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dOworICAgICAgICAg
ICAgbGV4YnVmW2xleF9jdXJyX3Bvc10rKzsKKyAgICAgICAgfQorICAgICAgICAvKiBEZXRlcm1p
bmUgbmV4dCBzdGF0ZSAqLworICAgICAgICB2YXIgcHN0YXRlID0gc3RhdGU7CisgICAgICAgIGlm
ICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSkKKyAgICAgICAgICAgIHN0YXRlID0g
dGJsLmxleF90cmFuc1tiYXNlICsgY107CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0YXRl
ID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTsKKyAgICAgICAgLyogSWYgbm8gdHJhbnNpdGlvbiBv
biB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqLworICAgICAgICBp
ZiAoc3RhdGUgPCAwKSB7CisgICAgICAgICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1
ZltsZXhfbGFzdF9wb3NdOworICAgICAgICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25d
ID09IC0xKQorICAgICAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBJZiBzb21lIHRyYW5zaXRpb24sIGdldCBhbmQg
cGVyZm9ybSBtZW1vcnkgbW92ZXMgKi8KKyAgICAgICAgICAgIHZhciBiYXNlX2NvZGUgPSB0Ymwu
bGV4X2Jhc2VfY29kZVtwc3RhdGVdLCBwY19vZmY7CisgICAgICAgICAgICBpZiAodGJsLmxleF9j
aGVja19jb2RlW2Jhc2VfY29kZSArIGNdID09IHBzdGF0ZSkKKyAgICAgICAgICAgICAgICBwY19v
ZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcGNfb2ZmID0gdGJsLmxleF9kZWZhdWx0X2NvZGVbcHN0YXRlXTsK
KyAgICAgICAgICAgIGlmIChwY19vZmYgPiAwKQorICAgICAgICAgICAgICAgIGNhbWxfbGV4X3J1
bl9tZW0odGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSwgbGV4YnVmW2xleF9j
dXJyX3Bvc10pOworICAgICAgICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBp
ZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzCisgICAgICAgICAgICAgY29uc3VtZWQgYnkg
dGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKQorICAgICAg
ICAgICAgICovCisgICAgICAgICAgICBpZiAoYyA9PSAyNTYpCisgICAgICAgICAgICAgICAgbGV4
YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwOworICAgICAgICB9CisgICAgfQorfQorCis7CisKK2Z1
bmN0aW9uIGNhbWxfbGV4X2VuZ2luZShwcmltLCBwcmltJDEsIHByaW0kMikgeworICByZXR1cm4g
JCRjYW1sX2xleF9lbmdpbmUocHJpbSwgcHJpbSQxLCBwcmltJDIpOworfQorCitmdW5jdGlvbiBj
YW1sX25ld19sZXhfZW5naW5lKHByaW0sIHByaW0kMSwgcHJpbSQyKSB7CisgIHJldHVybiAkJGNh
bWxfbmV3X2xleF9lbmdpbmUocHJpbSwgcHJpbSQxLCBwcmltJDIpOworfQorCitleHBvcnRzLmZh
aWwgICAgICAgICAgICAgICAgPSBmYWlsOworZXhwb3J0cy5jYW1sX2xleF9lbmdpbmUgICAgID0g
Y2FtbF9sZXhfZW5naW5lOworZXhwb3J0cy5jYW1sX25ld19sZXhfZW5naW5lID0gY2FtbF9uZXdf
bGV4X2VuZ2luZTsKKy8qICBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGNh
bWxfbGV4ZXIuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisg
IF9yZWdpc3RyeVsnY2FtbF9vYmonXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMg
PSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxfb2JqLmpzIC8vLy8vLy8vCisndXNlIHN0cmlj
dCc7CisKK3ZhciBCbG9jayAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYmxvY2siKTsK
K3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gY2FtbF9vYmpfZHVwKHgpIHsKKyAgdmFyIGxlbiA9IHgu
bGVuZ3RoOworICB2YXIgdiA9IG5ldyBBcnJheShsZW4pOworICBmb3IodmFyIGkgPSAwICxpX2Zp
bmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIHZbaV0gPSB4W2ld
OworICB9CisgIHYudGFnID0geC50YWcgfCAwOworICByZXR1cm4gdjsKK30KKworZnVuY3Rpb24g
Y2FtbF9vYmpfdHJ1bmNhdGUoeCwgbmV3X3NpemUpIHsKKyAgdmFyIGxlbiA9IHgubGVuZ3RoOwor
ICBpZiAobmV3X3NpemUgPD0gMCB8fCBuZXdfc2l6ZSA+IGxlbikgeworICAgIHRocm93IFsKKyAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAg
ICAgICJPYmoudHJ1bmNhdGUiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSBpZiAobGVuICE9PSBu
ZXdfc2l6ZSkgeworICAgIGZvcih2YXIgaSA9IG5ld19zaXplICxpX2ZpbmlzaCA9IGxlbiAtIDEg
fCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgICAgeFtpXSA9IDA7CisgICAgfQorICAgIHgu
bGVuZ3RoID0gbmV3X3NpemU7CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX2xhenlfbWFrZV9mb3J3YXJk
KHgpIHsKKyAgcmV0dXJuIEJsb2NrLl9fKDI1MCwgW3hdKTsKK30KKworZnVuY3Rpb24gY2FtbF91
cGRhdGVfZHVtbXkoeCwgeSkgeworICB2YXIgbGVuID0geS5sZW5ndGg7CisgIGZvcih2YXIgaSA9
IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgeFtp
XSA9IHlbaV07CisgIH0KKyAgdmFyIHlfdGFnID0geS50YWcgfCAwOworICBpZiAoeV90YWcgIT09
IDApIHsKKyAgICB4LnRhZyA9IHlfdGFnOworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFy
ZSh4LCB5KSB7CisgIGlmICh4IDwgeSkgeworICAgIHJldHVybiAtMTsKKyAgfQorICBlbHNlIGlm
ICh4ID09PSB5KSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDE7
CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9jb21wYXJlKF9hLCBfYikgeworICB3aGlsZSh0cnVl
KSB7CisgICAgdmFyIGIgPSBfYjsKKyAgICB2YXIgYSA9IF9hOworICAgIGlmICh0eXBlb2YgYSA9
PT0gInN0cmluZyIpIHsKKyAgICAgIHZhciB4ID0gYTsKKyAgICAgIHZhciB5ID0gYjsKKyAgICAg
IGlmICh4IDwgeSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgICB9CisgICAgICBlbHNlIGlm
ICh4ID09PSB5KSB7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIHJldHVybiAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0eXBlb2YgYSA9
PT0gIm51bWJlciIpIHsKKyAgICAgIHJldHVybiBjYW1sX2ludF9jb21wYXJlKGEsIGIpOworICAg
IH0KKyAgICBlbHNlIGlmICh0eXBlb2YgYSA9PT0gImJvb2xlYW4iIHx8IHR5cGVvZiBhID09PSAi
bnVsbCIgfHwgdHlwZW9mIGEgPT09ICJ1bmRlZmluZWQiKSB7CisgICAgICB2YXIgeCQxID0gYTsK
KyAgICAgIHZhciB5JDEgPSBiOworICAgICAgaWYgKHgkMSA9PT0geSQxKSB7CisgICAgICAgIHJl
dHVybiAwOworICAgICAgfQorICAgICAgZWxzZSBpZiAoeCQxIDwgeSQxKSB7CisgICAgICAgIHJl
dHVybiAtMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gMTsKKyAgICAg
IH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgdGFnX2EgPSBhLnRhZyB8IDA7CisgICAg
ICB2YXIgdGFnX2IgPSBiLnRhZyB8IDA7CisgICAgICBpZiAodGFnX2EgPT09IDI1MCkgeworICAg
ICAgICBfYSA9IGFbMF07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9Cisg
ICAgICBlbHNlIGlmICh0YWdfYiA9PT0gMjUwKSB7CisgICAgICAgIF9iID0gYlswXTsKKyAgICAg
ICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHRhZ19hID09
PSAyNDgpIHsKKyAgICAgICAgcmV0dXJuIGNhbWxfaW50X2NvbXBhcmUoYVsxXSwgYlsxXSk7Cisg
ICAgICB9CisgICAgICBlbHNlIGlmICh0YWdfYSA9PT0gMjUxKSB7CisgICAgICAgIHRocm93IFsK
KyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwK
KyAgICAgICAgICAgICAgImVxdWFsOiBhYnN0cmFjdCB2YWx1ZSIKKyAgICAgICAgICAgIF07Cisg
ICAgICB9CisgICAgICBlbHNlIGlmICh0YWdfYSAhPT0gdGFnX2IpIHsKKyAgICAgICAgaWYgKHRh
Z19hIDwgdGFnX2IpIHsKKyAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICB2YXIgbGVuX2EgPSBhLmxlbmd0aDsKKyAgICAgICAgdmFyIGxlbl9iID0g
Yi5sZW5ndGg7CisgICAgICAgIGlmIChsZW5fYSA9PT0gbGVuX2IpIHsKKyAgICAgICAgICB2YXIg
YSQxID0gYTsKKyAgICAgICAgICB2YXIgYiQxID0gYjsKKyAgICAgICAgICB2YXIgX2kgPSAwOwor
ICAgICAgICAgIHZhciBzYW1lX2xlbmd0aCA9IGxlbl9hOworICAgICAgICAgIHdoaWxlKHRydWUp
IHsKKyAgICAgICAgICAgIHZhciBpID0gX2k7CisgICAgICAgICAgICBpZiAoaSA9PT0gc2FtZV9s
ZW5ndGgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIHJlcyA9IGNhbWxfY29tcGFyZShhJDFbaV0s
IGIkMVtpXSk7CisgICAgICAgICAgICAgIGlmIChyZXMgIT09IDApIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgIH07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobGVuX2EgPCBsZW5fYikgeworICAg
ICAgICAgIHZhciBhJDIgPSBhOworICAgICAgICAgIHZhciBiJDIgPSBiOworICAgICAgICAgIHZh
ciBfaSQxID0gMDsKKyAgICAgICAgICB2YXIgc2hvcnRfbGVuZ3RoID0gbGVuX2E7CisgICAgICAg
ICAgd2hpbGUodHJ1ZSkgeworICAgICAgICAgICAgdmFyIGkkMSA9IF9pJDE7CisgICAgICAgICAg
ICBpZiAoaSQxID09PSBzaG9ydF9sZW5ndGgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC0xOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHZhciByZXMk
MSA9IGNhbWxfY29tcGFyZShhJDJbaSQxXSwgYiQyW2kkMV0pOworICAgICAgICAgICAgICBpZiAo
cmVzJDEgIT09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzJDE7CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgX2kkMSA9IGkkMSAr
IDEgfCAwOworICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH07CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgdmFyIGEkMyA9IGE7CisgICAgICAgICAgdmFyIGIkMyA9
IGI7CisgICAgICAgICAgdmFyIF9pJDIgPSAwOworICAgICAgICAgIHZhciBzaG9ydF9sZW5ndGgk
MSA9IGxlbl9iOworICAgICAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgICAgIHZhciBpJDIg
PSBfaSQyOworICAgICAgICAgICAgaWYgKGkkMiA9PT0gc2hvcnRfbGVuZ3RoJDEpIHsKKyAgICAg
ICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgdmFyIHJlcyQyID0gY2FtbF9jb21wYXJlKGEkM1tpJDJdLCBiJDNbaSQyXSk7
CisgICAgICAgICAgICAgIGlmIChyZXMkMiAhPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVy
biByZXMkMjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBfaSQyID0gaSQyICsgMSB8IDA7CisgICAgICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gY2Ft
bF9lcXVhbChfYSwgX2IpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBiID0gX2I7CisgICAg
dmFyIGEgPSBfYTsKKyAgICBpZiAoYSA9PT0gYikgeworICAgICAgcmV0dXJuIC8qIHRydWUgKi8x
OworICAgIH0KKyAgICBlbHNlIGlmICh0eXBlb2YgYSA9PT0gInN0cmluZyIgfHwgdHlwZW9mIGEg
PT09ICJudW1iZXIiIHx8IHR5cGVvZiBhID09PSAiYm9vbGVhbiIgfHwgdHlwZW9mIGEgPT09ICJ1
bmRlZmluZWQiIHx8IHR5cGVvZiBhID09PSAibnVsbCIpIHsKKyAgICAgIHJldHVybiAvKiBmYWxz
ZSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIHRhZ19hID0gYS50YWcgfCAwOwor
ICAgICAgdmFyIHRhZ19iID0gYi50YWcgfCAwOworICAgICAgaWYgKHRhZ19hID09PSAyNTApIHsK
KyAgICAgICAgX2EgPSBhWzBdOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAg
fQorICAgICAgZWxzZSBpZiAodGFnX2IgPT09IDI1MCkgeworICAgICAgICBfYiA9IGJbMF07Cisg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIGlmICh0YWdf
YSA9PT0gMjQ4KSB7CisgICAgICAgIHJldHVybiArKGFbMV0gPT09IGJbMV0pOworICAgICAgfQor
ICAgICAgZWxzZSBpZiAodGFnX2EgPT09IDI1MSkgeworICAgICAgICB0aHJvdyBbCisgICAgICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAg
ICAgICAgICJlcXVhbDogYWJzdHJhY3QgdmFsdWUiCisgICAgICAgICAgICBdOworICAgICAgfQor
ICAgICAgZWxzZSBpZiAodGFnX2EgIT09IHRhZ19iKSB7CisgICAgICAgIHJldHVybiAvKiBmYWxz
ZSAqLzA7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIGxlbl9hID0gYS5sZW5n
dGg7CisgICAgICAgIHZhciBsZW5fYiA9IGIubGVuZ3RoOworICAgICAgICBpZiAobGVuX2EgPT09
IGxlbl9iKSB7CisgICAgICAgICAgdmFyIGEkMSA9IGE7CisgICAgICAgICAgdmFyIGIkMSA9IGI7
CisgICAgICAgICAgdmFyIF9pID0gMDsKKyAgICAgICAgICB2YXIgc2FtZV9sZW5ndGggPSBsZW5f
YTsKKyAgICAgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgICAgICB2YXIgaSA9IF9pOworICAg
ICAgICAgICAgaWYgKGkgPT09IHNhbWVfbGVuZ3RoKSB7CisgICAgICAgICAgICAgIHJldHVybiAv
KiB0cnVlICovMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNhbWxfZXF1
YWwoYSQxW2ldLCBiJDFbaV0pKSB7CisgICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAg
ICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9
OworfQorCitmdW5jdGlvbiBjYW1sX25vdGVxdWFsKGEsIGIpIHsKKyAgcmV0dXJuIDEgLSBjYW1s
X2VxdWFsKGEsIGIpOworfQorCitmdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbChhLCBiKSB7Cisg
IHJldHVybiArKGNhbWxfY29tcGFyZShhLCBiKSA+PSAwKTsKK30KKworZnVuY3Rpb24gY2FtbF9n
cmVhdGVydGhhbihhLCBiKSB7CisgIHJldHVybiArKGNhbWxfY29tcGFyZShhLCBiKSA+IDApOwor
fQorCitmdW5jdGlvbiBjYW1sX2xlc3NlcXVhbChhLCBiKSB7CisgIHJldHVybiArKGNhbWxfY29t
cGFyZShhLCBiKSA8PSAwKTsKK30KKworZnVuY3Rpb24gY2FtbF9sZXNzdGhhbihhLCBiKSB7Cisg
IHJldHVybiArKGNhbWxfY29tcGFyZShhLCBiKSA8IDApOworfQorCit2YXIgY2FtbF9pbnQzMl9j
b21wYXJlID0gY2FtbF9pbnRfY29tcGFyZTsKKwordmFyIGNhbWxfbmF0aXZlaW50X2NvbXBhcmUg
PSBjYW1sX2ludF9jb21wYXJlOworCitleHBvcnRzLmNhbWxfb2JqX2R1cCAgICAgICAgICAgPSBj
YW1sX29ial9kdXA7CitleHBvcnRzLmNhbWxfb2JqX3RydW5jYXRlICAgICAgPSBjYW1sX29ial90
cnVuY2F0ZTsKK2V4cG9ydHMuY2FtbF9sYXp5X21ha2VfZm9yd2FyZCA9IGNhbWxfbGF6eV9tYWtl
X2ZvcndhcmQ7CitleHBvcnRzLmNhbWxfdXBkYXRlX2R1bW15ICAgICAgPSBjYW1sX3VwZGF0ZV9k
dW1teTsKK2V4cG9ydHMuY2FtbF9pbnRfY29tcGFyZSAgICAgICA9IGNhbWxfaW50X2NvbXBhcmU7
CitleHBvcnRzLmNhbWxfaW50MzJfY29tcGFyZSAgICAgPSBjYW1sX2ludDMyX2NvbXBhcmU7Citl
eHBvcnRzLmNhbWxfbmF0aXZlaW50X2NvbXBhcmUgPSBjYW1sX25hdGl2ZWludF9jb21wYXJlOwor
ZXhwb3J0cy5jYW1sX2NvbXBhcmUgICAgICAgICAgID0gY2FtbF9jb21wYXJlOworZXhwb3J0cy5j
YW1sX2VxdWFsICAgICAgICAgICAgID0gY2FtbF9lcXVhbDsKK2V4cG9ydHMuY2FtbF9ub3RlcXVh
bCAgICAgICAgICA9IGNhbWxfbm90ZXF1YWw7CitleHBvcnRzLmNhbWxfZ3JlYXRlcmVxdWFsICAg
ICAgPSBjYW1sX2dyZWF0ZXJlcXVhbDsKK2V4cG9ydHMuY2FtbF9ncmVhdGVydGhhbiAgICAgICA9
IGNhbWxfZ3JlYXRlcnRoYW47CitleHBvcnRzLmNhbWxfbGVzc3RoYW4gICAgICAgICAgPSBjYW1s
X2xlc3N0aGFuOworZXhwb3J0cy5jYW1sX2xlc3NlcXVhbCAgICAgICAgID0gY2FtbF9sZXNzZXF1
YWw7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfb2JqLmpzIC8v
Ly8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2Nh
bWxfb28nXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8v
IHN0YXJ0IG9mIGNhbWxfb28uanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIENhbWxf
YXJyYXkgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2FycmF5Iik7Cit2YXIgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7
CisKK3ZhciBjYW1sX21ldGhvZHNfY2FjaGUgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KDEw
MDAsIDApOworCitmdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kKG9iaiwgdGFnLCBjYWNo
ZWlkKSB7CisgIHZhciBtZXRocyA9IG9ialswXTsKKyAgdmFyIG9mZnMgPSBjYW1sX21ldGhvZHNf
Y2FjaGVbY2FjaGVpZF07CisgIGlmIChtZXRoc1tvZmZzXSA9PT0gdGFnKSB7CisgICAgcmV0dXJu
IG1ldGhzW29mZnMgLSAxIHwgMF07CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGF1eCA9IGZ1bmN0
aW9uIChfaSkgeworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIgaSA9IF9pOworICAg
ICAgICBpZiAoaSA8IDMpIHsKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICAgImNhbWxfb28ubWwiLAorICAgICAgICAgICAgICAgICAgNTQsCisg
ICAgICAgICAgICAgICAgICAyMAorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgXTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtZXRoc1tpXSA9PT0gdGFnKSB7CisgICAgICAg
ICAgY2FtbF9tZXRob2RzX2NhY2hlW2NhY2hlaWRdID0gaTsKKyAgICAgICAgICByZXR1cm4gaTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBfaSA9IGkgLSAyIHwgMDsKKyAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH07CisgICAg
fTsKKyAgICByZXR1cm4gbWV0aHNbYXV4KChtZXRoc1swXSA8PCAxKSArIDEgfCAwKSAtIDEgfCAw
XTsKKyAgfQorfQorCitleHBvcnRzLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QgPSBjYW1sX2dldF9w
dWJsaWNfbWV0aG9kOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1s
X29vLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVn
aXN0cnlbJ2NhbWxfcGFyc2VyJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0g
e307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX3BhcnNlci5qcyAvLy8vLy8vLworJ3VzZSBzdHJp
Y3QnOworCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgIFhhdmllciBMZXJveSwg
cHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovCisvKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hl
IGVuIEluZm9ybWF0aXF1ZSBldCAgICovCisvKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRz
IHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovCisvKiAgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAg
ICovCisvKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZp
bGUgLi4vTElDRU5TRS4gICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CisKKy8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQg
Ki8KKworLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5
YWNjICovCisKKy8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqLworCisvKioKKyAqIGNhbWxfbGV4
X2FycmF5KCJhYmNkIikKKyAqIFsyNTE4NSwgMjU2OTldCisgKiBAcGFyYW0gcworICogQHJldHVy
bnMge2FueVtdfQorICogVE9ETzogZHVwbGljYXRlZCB3aXRoIG1vZHVsZSB7IUNhbWxfbGV4fQor
ICovCitmdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7CisgICAgdmFyIGwgPSBzLmxlbmd0aCAv
IDI7CisgICAgdmFyIGEgPSBuZXcgQXJyYXkobCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBs
OyBpKyspCisgICAgICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2Rl
QXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7CisgICAgcmV0dXJuIGE7Cit9CisvKioK
KyAqIE5vdGUgdGhhdCBUUyBlbnVtIGlzIG5vdCBmcmllbmRseSB0byBDbG9zdXJlIGNvbXBpbGVy
CisgKiBAZW51bXtudW1iZXJ9CisgKi8KK3ZhciBBdXRvbWF0YSA9IHsKKyAgICBTVEFSVDogMCwK
KyAgICBMT09QOiA2LAorICAgIFRPS0VOX1JFQUQ6IDEsCisgICAgVEVTVF9TSElGVDogNywKKyAg
ICBFUlJPUl9ERVRFQ1RFRDogNSwKKyAgICBTSElGVDogOCwKKyAgICBTSElGVF9SRUNPVkVSOiA5
LAorICAgIFNUQUNLX0dST1dOXzE6IDIsCisgICAgUkVEVUNFOiAxMCwKKyAgICBTVEFDS19HUk9X
Tl8yOiAzLAorICAgIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRDogNAorfTsKKy8qKgorICogQGVu
dW17bnVtYmVyfQorICovCit2YXIgUmVzdWx0ID0geworICAgIFJFQURfVE9LRU46IDAsCisgICAg
UkFJU0VfUEFSU0VfRVJST1I6IDEsCisgICAgR1JPV19TVEFDS1NfMTogMiwKKyAgICBHUk9XX1NU
QUNLU18yOiAzLAorICAgIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OOiA0LAorICAgIENBTExfRVJS
T1JfRlVOQ1RJT046IDUKK307Cit2YXIgUEFSU0VSX1RSQUNFID0gZmFsc2U7CisvKioKKyAqIGV4
dGVybmFsIHBhcnNlX2VuZ2luZSA6IHBhcnNlX3RhYmxlcyAtPiBwYXJzZXJfZW52IC0+IHBhcnNl
cl9pbnB1dCAtPiBPYmoudCAtPiBwYXJzZXJfb3V0cHV0CisgKiBwYXJzaW5nLm1sCisgKgorICog
dHlwZSBwYXJzZV90YWJsZXMgPSB7CisgKiAgIGFjdGlvbnMgOiAocGFyc2VyX2VudiAtPiBPYmou
dCkgYXJyYXkKKyAqICAgdHJhbnNsX2NvbnN0IDogaW50IGFycmF5OworICogICB0cmFuc2xfYmxv
Y2sgOiBpbnQgYXJyYXk7CisgKiAgIGxocyA6IHN0cmluZzsKKyAqICAgbGVuIDogc3RyaW5nOwor
ICogICBkZWZyZWQgOiBzdHJpbmc7CisgKiAgIGRnb3RvIDogc3RyaW5nOworICogICBzaW5kZXgg
OiBzdHJpbmc7CisgKiAgIHJpbmRleCA6IHN0cmluZzsKKyAqICAgZ2luZGV4IDogc3RyaW5nOwor
ICogICB0YWJsZXNpemUgOiBpbnQ7CisgKiAgIHRhYmxlIDogc3RyaW5nOworICogICBjaGVjayA6
IHN0cmluZzsKKyAqICAgZXJyb3JfZnVuY3Rpb24gOiBzdHJpbmcgLT4gdW5pdDsKKyAqICAgbmFt
ZXNfY29uc3QgOiBzdHJpbmc7CisgKiAgIG5hbWVzX2Jsb2NrIDogc3RyaW5nCisgKiB9CisgKgor
ICogdHlwZSBwYXJzZXJfZW52ID0KKyAqIHsgbXV0YWJsZSBzX3N0YWNrIDogaW50IGFycmF5OyAg
ICAgICAgKCogU3RhdGVzICopCisgKiAgbXV0YWJsZSB2X3N0YWNrIDogT2JqLnQgYXJyYXk7ICAg
ICAgKCogU2VtYW50aWMgYXR0cmlidXRlcyAqKQorICogIG11dGFibGUgc3ltYl9zdGFydF9zdGFj
ayA6IHBvc2l0aW9uIGFycmF5OyAoKiBTdGFydCBwb3NpdGlvbnMgKikKKyAqICBtdXRhYmxlIHN5
bWJfZW5kX3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICAgKCogRW5kIHBvc2l0aW9ucyAqKQorICog
IG11dGFibGUgc3RhY2tzaXplIDogaW50OyAgICAgICAgICAgICgqIFNpemUgb2YgdGhlIHN0YWNr
cyAqKQorICogIG11dGFibGUgc3RhY2tiYXNlIDogaW50OyAgICAgICAgICAgICgqIEJhc2Ugc3Ag
Zm9yIGN1cnJlbnQgcGFyc2UgKikKKyAqICBtdXRhYmxlIGN1cnJfY2hhciA6IGludDsgICAgICAg
ICAgICAoKiBMYXN0IHRva2VuIHJlYWQgKikKKyAqICBtdXRhYmxlIGx2YWwgOiBPYmoudDsgICAg
ICAgICAgICAgICAoKiBJdHMgc2VtYW50aWMgYXR0cmlidXRlICopCisgKiAgbXV0YWJsZSBzeW1i
X3N0YXJ0IDogcG9zaXRpb247ICAgICAgKCogU3RhcnQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1i
b2wqKQorICogIG11dGFibGUgc3ltYl9lbmQgOiBwb3NpdGlvbjsgICAgICAgICgqIEVuZCBwb3Mu
IG9mIHRoZSBjdXJyZW50IHN5bWJvbCAqKQorICogIG11dGFibGUgYXNwIDogaW50OyAgICAgICAg
ICAgICAgICAgICgqIFRoZSBzdGFjayBwb2ludGVyIGZvciBhdHRyaWJ1dGVzICopCisgKiAgbXV0
YWJsZSBydWxlX2xlbiA6IGludDsgICAgICAgICAgICAgKCogTnVtYmVyIG9mIHJocyBpdGVtcyBp
biB0aGUgcnVsZSAqKQorICogIG11dGFibGUgcnVsZV9udW1iZXIgOiBpbnQ7ICAgICAgICAgICgq
IFJ1bGUgbnVtYmVyIHRvIHJlZHVjZSBieSAqKQorICogIG11dGFibGUgc3AgOiBpbnQ7ICAgICAg
ICAgICAgICAgICAgICgqIFNhdmVkIHNwIGZvciBwYXJzZV9lbmdpbmUgKikKKyAqICBtdXRhYmxl
IHN0YXRlIDogaW50OyAgICAgICAgICAgICAgICAoKiBTYXZlZCBzdGF0ZSBmb3IgcGFyc2VfZW5n
aW5lICopCisgKiAgbXV0YWJsZSBlcnJmbGFnIDogaW50IH0gICAgICAgICAgICAgKCogU2F2ZWQg
ZXJyb3IgZmxhZyBmb3IgcGFyc2VfZW5naW5lICopCisgKgorICogIHR5cGUgcGFyc2VyX2lucHV0
ID0KKyAqICAgfCBTdGFydAorICogICB8IFRva2VuX3JlYWQKKyAqICAgfCBTdGFja3NfZ3Jvd25f
MQorICogICB8IFN0YWNrc19ncm93bl8yCisgKiAgIHwgU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVk
CisgKiAgIHwgRXJyb3JfZGV0ZWN0ZWQKKworICogQHBhcmFtIHRhYmxlcworICogQHBhcmFtIGVu
dgorICogQHBhcmFtIGNtZAorICogQHBhcmFtIGFyZworICogQHJldHVybnMge251bWJlcn0KKyAq
LworZnVuY3Rpb24gJCRjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMgLyogcGFyc2VyX3RhYmxlICov
LCBlbnYgLyogcGFyc2VyX2VudiAqLywgY21kIC8qIHBhcnNlcl9pbnB1dCovLCBhcmcgLyogT2Jq
LnQqLykgeworICAgIHZhciBFUlJDT0RFID0gMjU2OworICAgIC8vdmFyIFNUQVJUID0gMDsKKyAg
ICAvL3ZhciBUT0tFTl9SRUFEID0gMTsKKyAgICAvL3ZhciBTVEFDS1NfR1JPV05fMSA9IDI7Cisg
ICAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzOworICAgIC8vdmFyIFNFTUFOVElDX0FDVElPTl9D
T01QVVRFRCA9IDQ7CisgICAgLy92YXIgRVJST1JfREVURUNURUQgPSA1OworICAgIC8vdmFyIGxv
b3AgPSA2OworICAgIC8vdmFyIHRlc3RzaGlmdCA9IDc7CisgICAgLy92YXIgc2hpZnQgPSA4Owor
ICAgIC8vdmFyIHNoaWZ0X3JlY292ZXIgPSA5OworICAgIC8vdmFyIHJlZHVjZSA9IDEwOworICAg
IC8vIFBhcnNpbmcucGFyc2VyX2VudgorICAgIHZhciBlbnZfc19zdGFjayA9IDA7IC8vIGFycmF5
CisgICAgdmFyIGVudl92X3N0YWNrID0gMTsgLy8gYXJyYXkKKyAgICB2YXIgZW52X3N5bWJfc3Rh
cnRfc3RhY2sgPSAyOyAvLyBhcnJheQorICAgIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSAzOyAv
LyBhcnJheQorICAgIHZhciBlbnZfc3RhY2tzaXplID0gNDsKKyAgICB2YXIgZW52X3N0YWNrYmFz
ZSA9IDU7CisgICAgdmFyIGVudl9jdXJyX2NoYXIgPSA2OworICAgIHZhciBlbnZfbHZhbCA9IDc7
IC8vIE9iai50CisgICAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gODsgLy8gcG9zaXRpb24KKyAgICB2
YXIgZW52X3N5bWJfZW5kID0gOTsgLy8gcG9zaXRpb24KKyAgICB2YXIgZW52X2FzcCA9IDEwOwor
ICAgIHZhciBlbnZfcnVsZV9sZW4gPSAxMTsKKyAgICB2YXIgZW52X3J1bGVfbnVtYmVyID0gMTI7
CisgICAgdmFyIGVudl9zcCA9IDEzOworICAgIHZhciBlbnZfc3RhdGUgPSAxNDsKKyAgICB2YXIg
ZW52X2VycmZsYWcgPSAxNTsKKyAgICAvLyBQYXJzaW5nLnBhcnNlX3RhYmxlcworICAgIC8vIHZh
ciBfdGJsX2FjdGlvbnMgPSAxOworICAgIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMTsgLy8gYXJy
YXkKKyAgICB2YXIgdGJsX3RyYW5zbF9ibG9jayA9IDI7IC8vIGFycmF5CisgICAgdmFyIHRibF9s
aHMgPSAzOworICAgIHZhciB0YmxfbGVuID0gNDsKKyAgICB2YXIgdGJsX2RlZnJlZCA9IDU7Cisg
ICAgdmFyIHRibF9kZ290byA9IDY7CisgICAgdmFyIHRibF9zaW5kZXggPSA3OworICAgIHZhciB0
YmxfcmluZGV4ID0gODsKKyAgICB2YXIgdGJsX2dpbmRleCA9IDk7CisgICAgdmFyIHRibF90YWJs
ZXNpemUgPSAxMDsKKyAgICB2YXIgdGJsX3RhYmxlID0gMTE7CisgICAgdmFyIHRibF9jaGVjayA9
IDEyOworICAgIC8vIHZhciBfdGJsX2Vycm9yX2Z1bmN0aW9uID0gMTQ7CisgICAgLy8gdmFyIF90
YmxfbmFtZXNfY29uc3QgPSAxNTsKKyAgICAvLyB2YXIgX3RibF9uYW1lc19ibG9jayA9IDE2Owor
ICAgIGlmICghdGFibGVzLmRnb3RvKSB7CisgICAgICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xl
eF9hcnJheSh0YWJsZXNbdGJsX2RlZnJlZF0pOworICAgICAgICB0YWJsZXMuc2luZGV4ID0gY2Ft
bF9sZXhfYXJyYXkodGFibGVzW3RibF9zaW5kZXhdKTsKKyAgICAgICAgdGFibGVzLmNoZWNrID0g
Y2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9jaGVja10pOworICAgICAgICB0YWJsZXMucmluZGV4
ID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9yaW5kZXhdKTsKKyAgICAgICAgdGFibGVzLnRh
YmxlID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF90YWJsZV0pOworICAgICAgICB0YWJsZXMu
bGVuID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9sZW5dKTsKKyAgICAgICAgdGFibGVzLmxo
cyA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfbGhzXSk7CisgICAgICAgIHRhYmxlcy5naW5k
ZXggPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2dpbmRleF0pOworICAgICAgICB0YWJsZXMu
ZGdvdG8gPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2Rnb3RvXSk7CisgICAgfQorICAgIHZh
ciByZXM7CisgICAgdmFyIG4sIG4xLCBuMiwgc3RhdGUxOworICAgIC8vIFJFU1RPUkUKKyAgICB2
YXIgc3AgPSBlbnZbZW52X3NwXTsKKyAgICB2YXIgc3RhdGUgPSBlbnZbZW52X3N0YXRlXTsKKyAg
ICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107CisgICAgZXhpdDogZm9yICg7Oykgewor
ICAgICAgICAvL2NvbnNvbGUuZXJyb3IoIlN0YXRlIiwgQXV0b21hdGFbY21kXSk7CisgICAgICAg
IHN3aXRjaCAoY21kKSB7CisgICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlNUQVJUOgorICAgICAg
ICAgICAgICAgIHN0YXRlID0gMDsKKyAgICAgICAgICAgICAgICBlcnJmbGFnID0gMDsKKyAgICAg
ICAgICAgIC8vIEZhbGwgdGhyb3VnaAorICAgICAgICAgICAgY2FzZSBBdXRvbWF0YS5MT09QOgor
ICAgICAgICAgICAgICAgIG4gPSB0YWJsZXMuZGVmcmVkW3N0YXRlXTsKKyAgICAgICAgICAgICAg
ICBpZiAobiAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLlJFRFVD
RTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgeworICAgICAgICAgICAgICAg
ICAgICBjbWQgPSBBdXRvbWF0YS5URVNUX1NISUZUOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0LlJFQURf
VE9LRU47CisgICAgICAgICAgICAgICAgYnJlYWsgZXhpdDsKKyAgICAgICAgICAgIC8qIFRoZSBN
TCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqLworICAgICAgICAgICAgLyogc3lt
Yl9zdGFydCBhbmQgc3ltYl9lbmQgKi8KKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuVE9LRU5f
UkVBRDoKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ251bWJlcicpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xf
YmxvY2tdW2FyZy50YWcgfCAwIC8qICsgMSAqL107CisgICAgICAgICAgICAgICAgICAgIGVudltl
bnZfbHZhbF0gPSBhcmdbMF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJs
X3RyYW5zbF9jb25zdF1bYXJnIC8qICsgMSAqL107CisgICAgICAgICAgICAgICAgICAgIGVudltl
bnZfbHZhbF0gPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoUEFS
U0VSX1RSQUNFKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlN0YXRlICVk
LCByZWFkIHRva2VuIiwgc3RhdGUsIGFyZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlRFU1RfU0hJRlQ6
CisgICAgICAgICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlXTsKKyAgICAgICAgICAg
ICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdOworICAgICAgICAgICAgICAgIGlmIChu
MSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmCisgICAg
ICAgICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7
CisgICAgICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLlNISUZUOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbjEgPSB0
YWJsZXMucmluZGV4W3N0YXRlXTsKKyAgICAgICAgICAgICAgICBuMiA9IG4xICsgZW52W2Vudl9j
dXJyX2NoYXJdOworICAgICAgICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIg
PD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmCisgICAgICAgICAgICAgICAgICAgIHRhYmxlcy5j
aGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7CisgICAgICAgICAgICAgICAgICAgIG4g
PSB0YWJsZXMudGFibGVbbjJdOworICAgICAgICAgICAgICAgICAgICBjbWQgPSBBdXRvbWF0YS5S
RURVQ0U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
cyA9IFJlc3VsdC5DQUxMX0VSUk9SX0ZVTkNUSU9OOworICAgICAgICAgICAgICAgICAgICBicmVh
ayBleGl0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAor
ICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGVycm9yIGZ1bmN0aW9uICovCisg
ICAgICAgICAgICBjYXNlIEF1dG9tYXRhLkVSUk9SX0RFVEVDVEVEOgorICAgICAgICAgICAgICAg
IGlmIChlcnJmbGFnIDwgMykgeworICAgICAgICAgICAgICAgICAgICBlcnJmbGFnID0gMzsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCAvKiArIDEqL107CisgICAgICAgICAgICAgICAgICAg
ICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGUxXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG4yID0gbjEgKyBFUlJDT0RFOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4xICE9IDAg
JiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IEVSUkNPREUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbWQgPSBBdXRvbWF0YS5TSElGVF9SRUNPVkVSOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFJlc3VsdC5SQUlTRV9QQVJTRV9FUlJPUjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcC0tOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDAp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0LlJBSVNFX1BBUlNFX0VSUk9S
OworICAgICAgICAgICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3Ig
Ki8KKyAgICAgICAgICAgICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7CisgICAgICAg
ICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLkxPT1A7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAorICAg
ICAgICAgICAgY2FzZSBBdXRvbWF0YS5TSElGVDoKKyAgICAgICAgICAgICAgICBlbnZbZW52X2N1
cnJfY2hhcl0gPSAtMTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyZmxhZyA+IDApCisgICAgICAg
ICAgICAgICAgICAgIGVycmZsYWctLTsKKyAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAorICAg
ICAgICAgICAgY2FzZSBBdXRvbWF0YS5TSElGVF9SRUNPVkVSOgorICAgICAgICAgICAgICAgIGlm
IChQQVJTRVJfVFJBQ0UpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiU3Rh
dGUgJWQ6IHNoaWZ0IHRvIHN0YXRlICVkIiwgc3RhdGUsIHRhYmxlcy50YWJsZVtuMl0pOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07
CisgICAgICAgICAgICAgICAgc3ArKzsKKyAgICAgICAgICAgICAgICBpZiAoc3AgPj0gZW52W2Vu
dl9zdGFja3NpemVdKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcyA9IFJlc3VsdC5HUk9XX1NU
QUNLU18xOworICAgICAgICAgICAgICAgICAgICBicmVhayBleGl0OworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAorICAgICAgICAgICAgLyogVGhlIE1MIGNv
ZGUgcmVzaXplcyB0aGUgc3RhY2tzICovCisgICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlNUQUNL
X0dST1dOXzE6CisgICAgICAgICAgICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCAvKiArIDEgKi9d
ID0gc3RhdGU7CisgICAgICAgICAgICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCAvKiArIDEgKi9d
ID0gZW52W2Vudl9sdmFsXTsKKyAgICAgICAgICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3Rh
Y2tdW3NwIC8qICsgMSAqL10gPSBlbnZbZW52X3N5bWJfc3RhcnRdOworICAgICAgICAgICAgICAg
IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwIC8qICsgMSAqL10gPSBlbnZbZW52X3N5bWJfZW5k
XTsKKyAgICAgICAgICAgICAgICBjbWQgPSBBdXRvbWF0YS5MT09QOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdXRvbWF0YS5SRURVQ0U6CisgICAgICAgICAgICAg
ICAgaWYgKFBBUlNFUl9UUkFDRSkgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9y
KCJTdGF0ZSAlZCA6IHJlZHVjZSBieSBydWxlICVkIiwgc3RhdGUsIG4pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07CisgICAgICAgICAg
ICAgICAgZW52W2Vudl9hc3BdID0gc3A7CisgICAgICAgICAgICAgICAgZW52W2Vudl9ydWxlX251
bWJlcl0gPSBuOworICAgICAgICAgICAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTsKKyAgICAg
ICAgICAgICAgICBzcCA9IHNwIC0gbSArIDE7CisgICAgICAgICAgICAgICAgbSA9IHRhYmxlcy5s
aHNbbl07CisgICAgICAgICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCAtIDFd
OyAvLworICAgICAgICAgICAgICAgIG4xID0gdGFibGVzLmdpbmRleFttXTsKKyAgICAgICAgICAg
ICAgICBuMiA9IG4xICsgc3RhdGUxOworICAgICAgICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4y
ID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmCisgICAgICAgICAgICAgICAg
ICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gc3RhdGUxKQorICAgICAgICAgICAgICAgICAgICBzdGF0
ZSA9IHRhYmxlcy50YWJsZVtuMl07CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTsKKyAgICAgICAgICAgICAgICBpZiAoc3Ag
Pj0gZW52W2Vudl9zdGFja3NpemVdKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcyA9IFJlc3Vs
dC5HUk9XX1NUQUNLU18yOworICAgICAgICAgICAgICAgICAgICBicmVhayBleGl0OworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAorICAgICAgICAgICAgLyog
VGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovCisgICAgICAgICAgICBjYXNlIEF1dG9t
YXRhLlNUQUNLX0dST1dOXzI6CisgICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0LkNPTVBVVEVf
U0VNQU5USUNfQUNUSU9OOworICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7CisgICAgICAgICAg
ICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovCisgICAgICAgICAg
ICBjYXNlIEF1dG9tYXRhLlNFTUFOVElDX0FDVElPTl9DT01QVVRFRDoKKyAgICAgICAgICAgICAg
ICBlbnZbZW52X3Nfc3RhY2tdW3NwIC8qICsgMSAqL10gPSBzdGF0ZTsKKyAgICAgICAgICAgICAg
ICBlbnZbZW52X3Zfc3RhY2tdW3NwIC8qICsgMSovXSA9IGFyZzsKKyAgICAgICAgICAgICAgICB2
YXIgYXNwID0gZW52W2Vudl9hc3BdOworICAgICAgICAgICAgICAgIGVudltlbnZfc3ltYl9lbmRf
c3RhY2tdW3NwIC8qICsgMSovXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCAvKiArIDEq
L107CisgICAgICAgICAgICAgICAgaWYgKHNwID4gYXNwKSB7CisgICAgICAgICAgICAgICAgICAg
IC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwg
dG8gc3ltYl9lbmQuICovCisgICAgICAgICAgICAgICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9z
dGFja11bc3AgLyogKyAxKi9dID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwIC8qKyAxKi9d
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjbWQgPSBBdXRvbWF0YS5MT09Q
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLyogU2hvdWxkIG5vdCBoYXBw
ZW4gKi8KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIFJlc3Vs
dC5SQUlTRV9QQVJTRV9FUlJPUjsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyBTQVZFCisgICAg
ZW52W2Vudl9zcF0gPSBzcDsKKyAgICBlbnZbZW52X3N0YXRlXSA9IHN0YXRlOworICAgIGVudltl
bnZfZXJyZmxhZ10gPSBlcnJmbGFnOworICAgIHJldHVybiByZXM7Cit9CisKKy8qKgorICogZXh0
ZXJuYWwgc2V0X3RyYWNlOiBib29sIC0+IGJvb2wgPSAiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIgor
ICogcGFyc2luZy5tbAorICogQHBhcmFtIHtib29sZWFufQorICogQHJldHVybnMge2Jvb2xlYW59
CisgKi8KK2Z1bmN0aW9uICQkY2FtbF9zZXRfcGFyc2VyX3RyYWNlKHYpIHsKKyAgICB2YXIgb2xk
ID0gUEFSU0VSX1RSQUNFOworICAgIFBBUlNFUl9UUkFDRSA9IHY7CisgICAgcmV0dXJuIG9sZDsK
K30KKworCis7CisKK2Z1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHByaW0sIHByaW0kMSwgcHJp
bSQyLCBwcmltJDMpIHsKKyAgcmV0dXJuICQkY2FtbF9wYXJzZV9lbmdpbmUocHJpbSwgcHJpbSQx
LCBwcmltJDIsIHByaW0kMyk7Cit9CisKK2Z1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShw
cmltKSB7CisgIHJldHVybiAkJGNhbWxfc2V0X3BhcnNlcl90cmFjZShwcmltKTsKK30KKworZXhw
b3J0cy5jYW1sX3BhcnNlX2VuZ2luZSAgICAgPSBjYW1sX3BhcnNlX2VuZ2luZTsKK2V4cG9ydHMu
Y2FtbF9zZXRfcGFyc2VyX3RyYWNlID0gY2FtbF9zZXRfcGFyc2VyX3RyYWNlOworLyogIE5vdCBh
IHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9wYXJzZXIuanMgLy8vLy8vLy8K
K8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9zdHJp
bmcnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0
YXJ0IG9mIGNhbWxfc3RyaW5nLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMi
KTsKKworZnVuY3Rpb24ganNfc3RyaW5nX29mX2NoYXIocHJpbSkgeworICByZXR1cm4gU3RyaW5n
LmZyb21DaGFyQ29kZShwcmltKTsKK30KKworZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0KHMsIGkp
IHsKKyAgaWYgKGkgPj0gcy5sZW5ndGggfHwgaSA8IDApIHsKKyAgICB0aHJvdyBbCisgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAi
aW5kZXggb3V0IG9mIGJvdW5kcyIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gcy5jaGFyQ29kZUF0KGkpOworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmlu
ZyhsZW4pIHsKKyAgaWYgKGxlbiA8IDApIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiU3RyaW5nLmNy
ZWF0ZSIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gbmV3IEFycmF5KGxl
bik7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHsKKyAg
aWYgKHMxID09PSBzMikgeworICAgIHJldHVybiAwOworICB9CisgIGVsc2UgaWYgKHMxIDwgczIp
IHsKKyAgICByZXR1cm4gLTE7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDE7CisgIH0KK30K
KworZnVuY3Rpb24gY2FtbF9maWxsX3N0cmluZyhzLCBpLCBsLCBjKSB7CisgIGlmIChsID4gMCkg
eworICAgIGZvcih2YXIgayA9IGkgLGtfZmluaXNoID0gKGwgKyBpIHwgMCkgLSAxIHwgMDsgayA8
PSBrX2ZpbmlzaDsgKytrKXsKKyAgICAgIHNba10gPSBjOworICAgIH0KKyAgICByZXR1cm4gLyog
KCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9u
IGNhbWxfYmxpdF9zdHJpbmcoczEsIGkxLCBzMiwgaTIsIGxlbikgeworICBpZiAobGVuID4gMCkg
eworICAgIHZhciBvZmYxID0gczEubGVuZ3RoIC0gaTEgfCAwOworICAgIGlmIChsZW4gPD0gb2Zm
MSkgeworICAgICAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsZW4gLSAxIHwgMDsgaSA8PSBp
X2ZpbmlzaDsgKytpKXsKKyAgICAgICAgczJbaTIgKyBpIHwgMF0gPSBzMS5jaGFyQ29kZUF0KGkx
ICsgaSB8IDApOworICAgICAgfQorICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICBmb3IodmFyIGkkMSA9IDAgLGlfZmluaXNoJDEgPSBvZmYxIC0gMSB8IDA7
IGkkMSA8PSBpX2ZpbmlzaCQxOyArK2kkMSl7CisgICAgICAgIHMyW2kyICsgaSQxIHwgMF0gPSBz
MS5jaGFyQ29kZUF0KGkxICsgaSQxIHwgMCk7CisgICAgICB9CisgICAgICBmb3IodmFyIGkkMiA9
IG9mZjEgLGlfZmluaXNoJDIgPSBsZW4gLSAxIHwgMDsgaSQyIDw9IGlfZmluaXNoJDI7ICsraSQy
KXsKKyAgICAgICAgczJbaTIgKyBpJDIgfCAwXSA9IC8qICJcMDAwIiAqLzA7CisgICAgICB9Cisg
ICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
MDsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX2JsaXRfYnl0ZXMoczEsIGkxLCBzMiwgaTIsIGxl
bikgeworICBpZiAobGVuID4gMCkgeworICAgIGlmIChzMSA9PT0gczIpIHsKKyAgICAgIHZhciBz
MSQxID0gczE7CisgICAgICB2YXIgaTEkMSA9IGkxOworICAgICAgdmFyIGkyJDEgPSBpMjsKKyAg
ICAgIHZhciBsZW4kMSA9IGxlbjsKKyAgICAgIGlmIChpMSQxIDwgaTIkMSkgeworICAgICAgICB2
YXIgcmFuZ2VfYSA9IChzMSQxLmxlbmd0aCAtIGkyJDEgfCAwKSAtIDEgfCAwOworICAgICAgICB2
YXIgcmFuZ2VfYiA9IGxlbiQxIC0gMSB8IDA7CisgICAgICAgIHZhciByYW5nZSA9IHJhbmdlX2Eg
PiByYW5nZV9iID8gcmFuZ2VfYiA6IHJhbmdlX2E7CisgICAgICAgIGZvcih2YXIgaiA9IHJhbmdl
OyBqID49IDA7IC0tail7CisgICAgICAgICAgczEkMVtpMiQxICsgaiB8IDBdID0gczEkMVtpMSQx
ICsgaiB8IDBdOworICAgICAgICB9CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9
CisgICAgICBlbHNlIGlmIChpMSQxID4gaTIkMSkgeworICAgICAgICB2YXIgcmFuZ2VfYSQxID0g
KHMxJDEubGVuZ3RoIC0gaTEkMSB8IDApIC0gMSB8IDA7CisgICAgICAgIHZhciByYW5nZV9iJDEg
PSBsZW4kMSAtIDEgfCAwOworICAgICAgICB2YXIgcmFuZ2UkMSA9IHJhbmdlX2EkMSA+IHJhbmdl
X2IkMSA/IHJhbmdlX2IkMSA6IHJhbmdlX2EkMTsKKyAgICAgICAgZm9yKHZhciBrID0gMDsgayA8
PSByYW5nZSQxOyArK2speworICAgICAgICAgIHMxJDFbaTIkMSArIGsgfCAwXSA9IHMxJDFbaTEk
MSArIGsgfCAwXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIHZhciBvZmYxID0gczEubGVuZ3RoIC0gaTEgfCAwOworICAgICAgaWYgKGxl
biA8PSBvZmYxKSB7CisgICAgICAgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8
IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgICAgICAgczJbaTIgKyBpIHwgMF0gPSBzMVtp
MSArIGkgfCAwXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIGZvcih2YXIgaSQxID0gMCAsaV9maW5pc2gkMSA9IG9m
ZjEgLSAxIHwgMDsgaSQxIDw9IGlfZmluaXNoJDE7ICsraSQxKXsKKyAgICAgICAgICBzMltpMiAr
IGkkMSB8IDBdID0gczFbaTEgKyBpJDEgfCAwXTsKKyAgICAgICAgfQorICAgICAgICBmb3IodmFy
IGkkMiA9IG9mZjEgLGlfZmluaXNoJDIgPSBsZW4gLSAxIHwgMDsgaSQyIDw9IGlfZmluaXNoJDI7
ICsraSQyKXsKKyAgICAgICAgICBzMltpMiArIGkkMiB8IDBdID0gLyogIlwwMDAiICovMDsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgfQorICAgIH0KKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBieXRlc19vZl9zdHJp
bmcocykgeworICB2YXIgbGVuID0gcy5sZW5ndGg7CisgIHZhciByZXMgPSBuZXcgQXJyYXkobGVu
KTsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsZW4gLSAxIHwgMDsgaSA8PSBpX2Zpbmlz
aDsgKytpKXsKKyAgICByZXNbaV0gPSBzLmNoYXJDb2RlQXQoaSk7CisgIH0KKyAgcmV0dXJuIHJl
czsKK30KKworZnVuY3Rpb24gYnl0ZXNfdG9fc3RyaW5nKGEpIHsKKyAgdmFyIGJ5dGVzID0gYTsK
KyAgdmFyIGkgPSAwOworICB2YXIgbGVuID0gYS5sZW5ndGg7CisgIHZhciBzID0gIiI7CisgIHZh
ciBzX2xlbiA9IGxlbjsKKyAgaWYgKGkgPT09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09PSBi
eXRlcy5sZW5ndGgpIHsKKyAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxs
LGJ5dGVzKTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgb2Zmc2V0ID0gMDsKKyAgICB3aGlsZShz
X2xlbiA+IDApIHsKKyAgICAgIHZhciBuZXh0ID0gc19sZW4gPCAxMDI0ID8gc19sZW4gOiAxMDI0
OworICAgICAgdmFyIHRtcF9ieXRlcyA9IG5ldyBBcnJheShuZXh0KTsKKyAgICAgIGNhbWxfYmxp
dF9ieXRlcyhieXRlcywgb2Zmc2V0LCB0bXBfYnl0ZXMsIDAsIG5leHQpOworICAgICAgcyA9IHMg
KyBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdG1wX2J5dGVzKTsKKyAgICAgIHNfbGVu
ID0gc19sZW4gLSBuZXh0IHwgMDsKKyAgICAgIG9mZnNldCA9IG9mZnNldCArIG5leHQgfCAwOwor
ICAgIH07CisgICAgcmV0dXJuIHM7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2Zf
Y2hhcl9hcnJheShjaGFycykgeworICB2YXIgbGVuID0gY2hhcnMubGVuZ3RoOworICB2YXIgYnl0
ZXMgPSBuZXcgQXJyYXkobGVuKTsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsZW4gLSAx
IHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICBieXRlc1tpXSA9IGNoYXJzW2ldOworICB9
CisgIHJldHVybiBieXRlc190b19zdHJpbmcoYnl0ZXMpOworfQorCitmdW5jdGlvbiBjYW1sX2lz
X3ByaW50YWJsZShjKSB7CisgIGlmIChjID4gMzEpIHsKKyAgICByZXR1cm4gKyhjIDwgMTI3KTsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK2Z1bmN0
aW9uIGNhbWxfc3RyaW5nX2dldDE2KHMsIGkpIHsKKyAgcmV0dXJuIHMuY2hhckNvZGVBdChpKSAr
IChzLmNoYXJDb2RlQXQoaSArIDEgfCAwKSA8PCA4KSB8IDA7Cit9CisKK2Z1bmN0aW9uIGNhbWxf
c3RyaW5nX2dldDMyKHMsIGkpIHsKKyAgcmV0dXJuICgocy5jaGFyQ29kZUF0KGkpICsgKHMuY2hh
ckNvZGVBdChpICsgMSB8IDApIDw8IDgpIHwgMCkgKyAocy5jaGFyQ29kZUF0KGkgKyAyIHwgMCkg
PDwgMTYpIHwgMCkgKyAocy5jaGFyQ29kZUF0KGkgKyAzIHwgMCkgPDwgMjQpIHwgMDsKK30KKwor
ZnVuY3Rpb24gZ2V0KHMsIGkpIHsKKyAgaWYgKGkgPCAwIHx8IGkgPj0gcy5sZW5ndGgpIHsKKyAg
ICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1
bWVudCwKKyAgICAgICAgICAiaW5kZXggb3V0IG9mIGJvdW5kcyIKKyAgICAgICAgXTsKKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpOworICB9Cit9CisKK2V4cG9ydHMu
Ynl0ZXNfb2Zfc3RyaW5nICAgICAgICAgICA9IGJ5dGVzX29mX3N0cmluZzsKK2V4cG9ydHMuYnl0
ZXNfdG9fc3RyaW5nICAgICAgICAgICA9IGJ5dGVzX3RvX3N0cmluZzsKK2V4cG9ydHMuY2FtbF9p
c19wcmludGFibGUgICAgICAgICA9IGNhbWxfaXNfcHJpbnRhYmxlOworZXhwb3J0cy5jYW1sX3N0
cmluZ19vZl9jaGFyX2FycmF5ID0gY2FtbF9zdHJpbmdfb2ZfY2hhcl9hcnJheTsKK2V4cG9ydHMu
Y2FtbF9zdHJpbmdfZ2V0ICAgICAgICAgICA9IGNhbWxfc3RyaW5nX2dldDsKK2V4cG9ydHMuY2Ft
bF9zdHJpbmdfY29tcGFyZSAgICAgICA9IGNhbWxfc3RyaW5nX2NvbXBhcmU7CitleHBvcnRzLmNh
bWxfY3JlYXRlX3N0cmluZyAgICAgICAgPSBjYW1sX2NyZWF0ZV9zdHJpbmc7CitleHBvcnRzLmNh
bWxfZmlsbF9zdHJpbmcgICAgICAgICAgPSBjYW1sX2ZpbGxfc3RyaW5nOworZXhwb3J0cy5jYW1s
X2JsaXRfc3RyaW5nICAgICAgICAgID0gY2FtbF9ibGl0X3N0cmluZzsKK2V4cG9ydHMuY2FtbF9i
bGl0X2J5dGVzICAgICAgICAgICA9IGNhbWxfYmxpdF9ieXRlczsKK2V4cG9ydHMuY2FtbF9zdHJp
bmdfZ2V0MTYgICAgICAgICA9IGNhbWxfc3RyaW5nX2dldDE2OworZXhwb3J0cy5jYW1sX3N0cmlu
Z19nZXQzMiAgICAgICAgID0gY2FtbF9zdHJpbmdfZ2V0MzI7CitleHBvcnRzLmpzX3N0cmluZ19v
Zl9jaGFyICAgICAgICAgPSBqc19zdHJpbmdfb2ZfY2hhcjsKK2V4cG9ydHMuZ2V0ICAgICAgICAg
ICAgICAgICAgICAgICA9IGdldDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQg
b2YgY2FtbF9zdHJpbmcuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsK
KworCisgIF9yZWdpc3RyeVsnY2FtbF91dGlscyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQg
ZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF91dGlscy5qcyAvLy8vLy8vLwor
J3VzZSBzdHJpY3QnOworCisKK3ZhciByZXBlYXQgPSAoIChTdHJpbmcucHJvdG90eXBlLnJlcGVh
dCAmJiBmdW5jdGlvbiAoY291bnQsc2VsZil7cmV0dXJuIHNlbGYucmVwZWF0KGNvdW50KX0pIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uKGNvdW50ICwgc2VsZikgeworICAgICAgICBpZiAoc2VsZi5sZW5ndGggPT0gMCB8fCBjb3Vu
dCA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gJyc7CisgICAgICAgIH0KKyAgICAgICAgLy8g
RW5zdXJpbmcgY291bnQgaXMgYSAzMS1iaXQgaW50ZWdlciBhbGxvd3MgdXMgdG8gaGVhdmlseSBv
cHRpbWl6ZSB0aGUKKyAgICAgICAgLy8gbWFpbiBwYXJ0LiBCdXQgYW55d2F5LCBtb3N0IGN1cnJl
bnQgKEF1Z3VzdCAyMDE0KSBicm93c2VycyBjYW4ndCBoYW5kbGUKKyAgICAgICAgLy8gc3RyaW5n
cyAxIDw8IDI4IGNoYXJzIG9yIGxvbmdlciwgc286CisgICAgICAgIGlmIChzZWxmLmxlbmd0aCAq
IGNvdW50ID49IDEgPDwgMjgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdy
ZXBlYXQgY291bnQgbXVzdCBub3Qgb3ZlcmZsb3cgbWF4aW11bSBzdHJpbmcgc2l6ZScpOworICAg
ICAgICB9CisgICAgICAgIHZhciBycHQgPSAnJzsKKyAgICAgICAgZm9yICg7OykgeworICAgICAg
ICAgICAgaWYgKChjb3VudCAmIDEpID09IDEpIHsKKyAgICAgICAgICAgICAgICBycHQgKz0gc2Vs
ZjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50ID4+Pj0gMTsKKyAgICAgICAgICAg
IGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBzZWxmICs9IHNlbGY7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJw
dDsKKyAgICB9CispOworCitleHBvcnRzLnJlcGVhdCA9IHJlcGVhdDsKKy8qIHJlcGVhdCBOb3Qg
YSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfdXRpbHMuanMgLy8vLy8vLy8K
K8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2hhciddID0g
ZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Yg
Y2hhci5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9zdHJpbmcgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9u
IGNocihuKSB7CisgIGlmIChuIDwgMCB8fCBuID4gMjU1KSB7CisgICAgdGhyb3cgWworICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAg
IkNoYXIuY2hyIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBuOworICB9
Cit9CisKK2Z1bmN0aW9uIGVzY2FwZWQoYykgeworICB2YXIgZXhpdCA9IDA7CisgIGlmIChjID49
IDQwKSB7CisgICAgaWYgKGMgIT09IDkyKSB7CisgICAgICBleGl0ID0gYyA+PSAxMjcgPyAxIDog
MjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gIlxcXFwiOworICAgIH0KKyAgfQor
ICBlbHNlIGlmIChjID49IDMyKSB7CisgICAgaWYgKGMgPj0gMzkpIHsKKyAgICAgIHJldHVybiAi
XFwnIjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBleGl0ID0gMjsKKyAgICB9CisgIH0KKyAg
ZWxzZSBpZiAoYyA+PSAxNCkgeworICAgIGV4aXQgPSAxOworICB9CisgIGVsc2UgeworICAgIHN3
aXRjaCAoYykgeworICAgICAgY2FzZSA4IDogCisgICAgICAgICAgcmV0dXJuICJcXGIiOworICAg
ICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0dXJuICJcXHQiOworICAgICAgY2FzZSAxMCA6IAor
ICAgICAgICAgIHJldHVybiAiXFxuIjsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgY2FzZSAxIDog
CisgICAgICBjYXNlIDIgOiAKKyAgICAgIGNhc2UgMyA6IAorICAgICAgY2FzZSA0IDogCisgICAg
ICBjYXNlIDUgOiAKKyAgICAgIGNhc2UgNiA6IAorICAgICAgY2FzZSA3IDogCisgICAgICBjYXNl
IDExIDogCisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgcmV0dXJuICJcXHIiOworICAgICAg
CisgICAgfQorICB9CisgIHN3aXRjaCAoZXhpdCkgeworICAgIGNhc2UgMSA6IAorICAgICAgICB2
YXIgcyA9IG5ldyBBcnJheSg0KTsKKyAgICAgICAgc1swXSA9IC8qICJcXCIgKi85MjsKKyAgICAg
ICAgc1sxXSA9IDQ4ICsgKGMgLyAxMDAgfCAwKSB8IDA7CisgICAgICAgIHNbMl0gPSA0OCArIChj
IC8gMTAgfCAwKSAlIDEwIHwgMDsKKyAgICAgICAgc1szXSA9IDQ4ICsgYyAlIDEwIHwgMDsKKyAg
ICAgICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzKTsKKyAgICBjYXNlIDIg
OiAKKyAgICAgICAgdmFyIHMkMSA9IG5ldyBBcnJheSgxKTsKKyAgICAgICAgcyQxWzBdID0gYzsK
KyAgICAgICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzJDEpOworICAgIAor
ICB9Cit9CisKK2Z1bmN0aW9uIGxvd2VyY2FzZShjKSB7CisgIGlmIChjID49IC8qICJBIiAqLzY1
ICYmIGMgPD0gLyogIloiICovOTAgfHwgYyA+PSAvKiAiXDE5MiIgKi8xOTIgJiYgYyA8PSAvKiAi
XDIxNCIgKi8yMTQgfHwgYyA+PSAvKiAiXDIxNiIgKi8yMTYgJiYgYyA8PSAvKiAiXDIyMiIgKi8y
MjIpIHsKKyAgICByZXR1cm4gYyArIDMyIHwgMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
YzsKKyAgfQorfQorCitmdW5jdGlvbiB1cHBlcmNhc2UoYykgeworICBpZiAoYyA+PSAvKiAiYSIg
Ki85NyAmJiBjIDw9IC8qICJ6IiAqLzEyMiB8fCBjID49IC8qICJcMjI0IiAqLzIyNCAmJiBjIDw9
IC8qICJcMjQ2IiAqLzI0NiB8fCBjID49IC8qICJcMjQ4IiAqLzI0OCAmJiBjIDw9IC8qICJcMjU0
IiAqLzI1NCkgeworICAgIHJldHVybiBjIC0gMzIgfCAwOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiBjOworICB9Cit9CisKK2Z1bmN0aW9uIGNvbXBhcmUoYzEsIGMyKSB7CisgIHJldHVybiBj
MSAtIGMyIHwgMDsKK30KKworZXhwb3J0cy5jaHIgICAgICAgPSBjaHI7CitleHBvcnRzLmVzY2Fw
ZWQgICA9IGVzY2FwZWQ7CitleHBvcnRzLmxvd2VyY2FzZSA9IGxvd2VyY2FzZTsKK2V4cG9ydHMu
dXBwZXJjYXNlID0gdXBwZXJjYXNlOworZXhwb3J0cy5jb21wYXJlICAgPSBjb21wYXJlOworLyog
Tm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBjaGFyLmpzIC8vLy8vLy8vCivCoCDC
oCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2N1cnJ5J10gPSBmdW5j
dGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjdXJy
eS5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9vbyAgICA9IHJlcXVpcmUo
Ii4vY2FtbF9vbyIpOwordmFyIENhbWxfYXJyYXkgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXkiKTsK
KworZnVuY3Rpb24gYXBwKF9mLCBfYXJncykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGFy
Z3MgPSBfYXJnczsKKyAgICB2YXIgZiA9IF9mOworICAgIHZhciBhcml0eSA9IGYubGVuZ3RoOwor
ICAgIHZhciBhcml0eSQxID0gYXJpdHkgPyBhcml0eSA6IDE7CisgICAgdmFyIGxlbiA9IGFyZ3Mu
bGVuZ3RoOworICAgIHZhciBkID0gYXJpdHkkMSAtIGxlbiB8IDA7CisgICAgaWYgKGQpIHsKKyAg
ICAgIGlmIChkIDwgMCkgeworICAgICAgICBfYXJncyA9IENhbWxfYXJyYXkuY2FtbF9hcnJheV9z
dWIoYXJncywgYXJpdHkkMSwgLWQgfCAwKTsKKyAgICAgICAgX2YgPSBmLmFwcGx5KG51bGwsIENh
bWxfYXJyYXkuY2FtbF9hcnJheV9zdWIoYXJncywgMCwgYXJpdHkkMSkpOworICAgICAgICBjb250
aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAo
ZnVuY3Rpb24oZixhcmdzKXsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAg
ICAgcmV0dXJuIGFwcChmLCBhcmdzLmNvbmNhdCgvKiBhcnJheSAqL1t4XSkpOworICAgICAgICB9
CisgICAgICAgIH0oZixhcmdzKSk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAg
cmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBq
cyhsYWJlbCwgY2FjaGVpZCwgb2JqLCBhcmdzKSB7CisgIHZhciBtZXRoID0gQ2FtbF9vby5jYW1s
X2dldF9wdWJsaWNfbWV0aG9kKG9iaiwgbGFiZWwsIGNhY2hlaWQpOworICByZXR1cm4gYXBwKG1l
dGgsIGFyZ3MpOworfQorCitmdW5jdGlvbiBjdXJyeV8xKG8sIGEwLCBhcml0eSkgeworICBpZiAo
YXJpdHkgPiA3IHx8IGFyaXR5IDwgMCkgeworICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9b
YTBdKTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAg
OiAKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiBvKGEwKTsKKyAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgIHJl
dHVybiBvKGEwLCBwYXJhbSk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEpIHsKKyAgICAgICAgICAgIHJldHVy
biBvKGEwLCBwYXJhbSwgcGFyYW0kMSk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgNCA6IAor
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpIHsKKyAg
ICAgICAgICAgIHJldHVybiBvKGEwLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMik7CisgICAgICAg
ICAgfTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0s
IHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBw
YXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMyk7CisgICAgICAgICAgfTsKKyAgICAgIGNh
c2UgNiA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEsIHBhcmFt
JDIsIHBhcmFtJDMsIHBhcmFtJDQpIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBwYXJhbSwg
cGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMywgcGFyYW0kNCk7CisgICAgICAgICAgfTsKKyAgICAg
IGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEsIHBh
cmFtJDIsIHBhcmFtJDMsIHBhcmFtJDQsIHBhcmFtJDUpIHsKKyAgICAgICAgICAgIHJldHVybiBv
KGEwLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMywgcGFyYW0kNCwgcGFyYW0kNSk7
CisgICAgICAgICAgfTsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBfMShvLCBh
MCkgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSAxKSB7CisgICAg
cmV0dXJuIG8oYTApOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBjdXJyeV8xKG8sIGEwLCBh
cml0eSk7CisgIH0KK30KKworZnVuY3Rpb24ganMxKGxhYmVsLCBjYWNoZWlkLCBhMCkgeworICBy
ZXR1cm4gXzEoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0aG9kKGEwLCBsYWJlbCwgY2FjaGVp
ZCksIGEwKTsKK30KKworZnVuY3Rpb24gX18xKG8pIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7
CisgIGlmIChhcml0eSA9PT0gMSkgeworICAgIHJldHVybiBvOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiBmdW5jdGlvbiAoYTApIHsKKyAgICAgIHJldHVybiBfMShvLCBhMCk7CisgICAgfTsK
KyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV8yKG8sIGEwLCBhMSwgYXJpdHkpIHsKKyAgaWYgKGFy
aXR5ID4gNyB8fCBhcml0eSA8IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovWwor
ICAgICAgICAgICAgICAgIGEwLAorICAgICAgICAgICAgICAgIGExCisgICAgICAgICAgICAgIF0p
OworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAor
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9b
YTFdKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiBvKGEwLCBhMSk7CisgICAg
ICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAg
ICAgICByZXR1cm4gbyhhMCwgYTEsIHBhcmFtKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA0
IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSkgeworICAgICAg
ICAgICAgcmV0dXJuIG8oYTAsIGExLCBwYXJhbSwgcGFyYW0kMSk7CisgICAgICAgICAgfTsKKyAg
ICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEs
IHBhcmFtJDIpIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgcGFyYW0sIHBhcmFtJDEs
IHBhcmFtJDIpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzKSB7CisgICAgICAg
ICAgICByZXR1cm4gbyhhMCwgYTEsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzKTsK
KyAgICAgICAgICB9OworICAgICAgY2FzZSA3IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
IChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMywgcGFyYW0kNCkgeworICAgICAgICAg
ICAgcmV0dXJuIG8oYTAsIGExLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMywgcGFy
YW0kNCk7CisgICAgICAgICAgfTsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBf
MihvLCBhMCwgYTEpIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0g
MikgeworICAgIHJldHVybiBvKGEwLCBhMSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGN1
cnJ5XzIobywgYTAsIGExLCBhcml0eSk7CisgIH0KK30KKworZnVuY3Rpb24ganMyKGxhYmVsLCBj
YWNoZWlkLCBhMCwgYTEpIHsKKyAgcmV0dXJuIF8yKENhbWxfb28uY2FtbF9nZXRfcHVibGljX21l
dGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEpOworfQorCitmdW5jdGlvbiBfXzIobykg
eworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSAyKSB7CisgICAgcmV0
dXJuIG87CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEpIHsKKyAg
ICAgIHJldHVybiBfMihvLCBhMCwgYTEpOworICAgIH07CisgIH0KK30KKworZnVuY3Rpb24gY3Vy
cnlfMyhvLCBhMCwgYTEsIGEyLCBhcml0eSkgeworICBpZiAoYXJpdHkgPiA3IHx8IGFyaXR5IDwg
MCkgeworICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgYTAs
CisgICAgICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgYTIKKyAgICAgICAgICAgICAg
XSk7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChhcml0eSkgeworICAgICAgY2FzZSAwIDog
CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICBhMSwKKyAgICAgICAgICAgICAgICAgICAgICBhMgor
ICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVy
biBhcHAobyhhMCwgYTEpLCAvKiBhcnJheSAqL1thMl0pOworICAgICAgY2FzZSAzIDogCisgICAg
ICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMik7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEy
LCBwYXJhbSk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVy
biBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEpIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBh
MSwgYTIsIHBhcmFtLCBwYXJhbSQxKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA2IDogCisg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgeworICAg
ICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOwor
ICAgICAgICAgIH07CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzKSB7CisgICAgICAgICAgICByZXR1cm4g
byhhMCwgYTEsIGEyLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMyk7CisgICAgICAg
ICAgfTsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBfMyhvLCBhMCwgYTEsIGEy
KSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDMpIHsKKyAgICBy
ZXR1cm4gbyhhMCwgYTEsIGEyKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gY3VycnlfMyhv
LCBhMCwgYTEsIGEyLCBhcml0eSk7CisgIH0KK30KKworZnVuY3Rpb24ganMzKGxhYmVsLCBjYWNo
ZWlkLCBhMCwgYTEsIGEyKSB7CisgIHJldHVybiBfMyhDYW1sX29vLmNhbWxfZ2V0X3B1YmxpY19t
ZXRob2QoYTAsIGxhYmVsLCBjYWNoZWlkKSwgYTAsIGExLCBhMik7Cit9CisKK2Z1bmN0aW9uIF9f
MyhvKSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDMpIHsKKyAg
ICByZXR1cm4gbzsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGEwLCBhMSwg
YTIpIHsKKyAgICAgIHJldHVybiBfMyhvLCBhMCwgYTEsIGEyKTsKKyAgICB9OworICB9Cit9CisK
K2Z1bmN0aW9uIGN1cnJ5XzQobywgYTAsIGExLCBhMiwgYTMsIGFyaXR5KSB7CisgIGlmIChhcml0
eSA+IDcgfHwgYXJpdHkgPCAwKSB7CisgICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKKyAg
ICAgICAgICAgICAgICBhMCwKKyAgICAgICAgICAgICAgICBhMSwKKyAgICAgICAgICAgICAgICBh
MiwKKyAgICAgICAgICAgICAgICBhMworICAgICAgICAgICAgICBdKTsKKyAgfQorICBlbHNlIHsK
KyAgICBzd2l0Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgIHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAg
ICAgICAgIGExLAorICAgICAgICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgICAg
ICAgIGEzCisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAyIDogCisgICAgICAg
ICAgcmV0dXJuIGFwcChvKGEwLCBhMSksIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgICAg
ICAgIGEyLAorICAgICAgICAgICAgICAgICAgICAgIGEzCisgICAgICAgICAgICAgICAgICAgIF0p
OworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIpLCAv
KiBhcnJheSAqL1thM10pOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuIG8oYTAs
IGExLCBhMiwgYTMpOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
IChwYXJhbSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIHBhcmFtKTsK
KyAgICAgICAgICB9OworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
IChwYXJhbSwgcGFyYW0kMSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMs
IHBhcmFtLCBwYXJhbSQxKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA3IDogCisgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgeworICAgICAgICAg
ICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsKKyAg
ICAgICAgICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF80KG8sIGEwLCBh
MSwgYTIsIGEzKSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDQp
IHsKKyAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMyk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0
dXJuIGN1cnJ5XzQobywgYTAsIGExLCBhMiwgYTMsIGFyaXR5KTsKKyAgfQorfQorCitmdW5jdGlv
biBqczQobGFiZWwsIGNhY2hlaWQsIGEwLCBhMSwgYTIsIGEzKSB7CisgIHJldHVybiBfNChDYW1s
X29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAsIGxhYmVsLCBjYWNoZWlkKSwgYTAsIGExLCBh
MiwgYTMpOworfQorCitmdW5jdGlvbiBfXzQobykgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsK
KyAgaWYgKGFyaXR5ID09PSA0KSB7CisgICAgcmV0dXJuIG87CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyLCBhMykgeworICAgICAgcmV0dXJuIF80KG8sIGEw
LCBhMSwgYTIsIGEzKTsKKyAgICB9OworICB9Cit9CisKK2Z1bmN0aW9uIGN1cnJ5XzUobywgYTAs
IGExLCBhMiwgYTMsIGE0LCBhcml0eSkgeworICBpZiAoYXJpdHkgPiA3IHx8IGFyaXR5IDwgMCkg
eworICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgYTAsCisg
ICAgICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAg
YTMsCisgICAgICAgICAgICAgICAgYTQKKyAgICAgICAgICAgICAgXSk7CisgIH0KKyAgZWxzZSB7
CisgICAgc3dpdGNoIChhcml0eSkgeworICAgICAgY2FzZSAwIDogCisgICAgICBjYXNlIDEgOiAK
KyAgICAgICAgICByZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICBhMSwKKyAgICAgICAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICAg
ICAgICBhMywKKyAgICAgICAgICAgICAgICAgICAgICBhNAorICAgICAgICAgICAgICAgICAgICBd
KTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEpLCAvKiBh
cnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICAgICAg
ICBhMywKKyAgICAgICAgICAgICAgICAgICAgICBhNAorICAgICAgICAgICAgICAgICAgICBdKTsK
KyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyKSwgLyog
YXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAg
ICAgYTQKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAg
ICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMpLCAvKiBhcnJheSAqL1thNF0pOworICAgICAg
Y2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0KTsKKyAgICAg
IGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAg
ICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgcGFyYW0pOworICAgICAgICAgIH07Cisg
ICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQx
KSB7CisgICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQsIHBhcmFtLCBwYXJh
bSQxKTsKKyAgICAgICAgICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF81
KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCkgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYg
KGFyaXR5ID09PSA1KSB7CisgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0KTsKKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gY3VycnlfNShvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGFyaXR5
KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczUobGFiZWwsIGNhY2hlaWQsIGEwLCBhMSwgYTIsIGEz
LCBhNCkgeworICByZXR1cm4gXzUoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0aG9kKGEwLCBs
YWJlbCwgY2FjaGVpZCksIGEwLCBhMSwgYTIsIGEzLCBhNCk7Cit9CisKK2Z1bmN0aW9uIF9fNShv
KSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDUpIHsKKyAgICBy
ZXR1cm4gbzsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGEwLCBhMSwgYTIs
IGEzLCBhNCkgeworICAgICAgcmV0dXJuIF81KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCk7CisgICAg
fTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV82KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUs
IGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcgfHwgYXJpdHkgPCAwKSB7CisgICAgcmV0dXJuIGFw
cChvLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICBhMCwKKyAgICAgICAgICAgICAgICBh
MSwKKyAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICBhMywKKyAgICAgICAgICAg
ICAgICBhNCwKKyAgICAgICAgICAgICAgICBhNQorICAgICAgICAgICAgICBdKTsKKyAgfQorICBl
bHNlIHsKKyAgICBzd2l0Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5ICovWworICAgICAgICAg
ICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAg
ICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgICAgICAgIGE0LAorICAgICAgICAgICAgICAg
ICAgICAgIGE1CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAyIDogCisgICAg
ICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSksIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAg
ICAgICAgIGEyLAorICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgICAg
ICAgIGE0LAorICAgICAgICAgICAgICAgICAgICAgIGE1CisgICAgICAgICAgICAgICAgICAgIF0p
OworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIpLCAv
KiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBhMywKKyAgICAgICAgICAgICAgICAg
ICAgICBhNCwKKyAgICAgICAgICAgICAgICAgICAgICBhNQorICAgICAgICAgICAgICAgICAgICBd
KTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyLCBh
MyksIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGE0LAorICAgICAgICAgICAg
ICAgICAgICAgIGE1CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA1IDogCisg
ICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzLCBhNCksIC8qIGFycmF5ICovW2E1
XSk7CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywg
YTQsIGE1KTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFy
YW0pIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIHBhcmFt
KTsKKyAgICAgICAgICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF82KG8s
IGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlm
IChhcml0eSA9PT0gNikgeworICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiBjdXJyeV82KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwg
YTUsIGFyaXR5KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczYobGFiZWwsIGNhY2hlaWQsIGEwLCBh
MSwgYTIsIGEzLCBhNCwgYTUpIHsKKyAgcmV0dXJuIF82KENhbWxfb28uY2FtbF9nZXRfcHVibGlj
X21ldGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1KTsKK30K
KworZnVuY3Rpb24gX182KG8pIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0
eSA9PT0gNikgeworICAgIHJldHVybiBvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5j
dGlvbiAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgeworICAgICAgcmV0dXJuIF82KG8sIGEwLCBh
MSwgYTIsIGEzLCBhNCwgYTUpOworICAgIH07CisgIH0KK30KKworZnVuY3Rpb24gY3VycnlfNyhv
LCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYXJpdHkpIHsKKyAgaWYgKGFyaXR5ID4gNyB8
fCBhcml0eSA8IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovWworICAgICAgICAg
ICAgICAgIGEwLAorICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgIGEyLAorICAg
ICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgIGE0LAorICAgICAgICAgICAgICAgIGE1
LAorICAgICAgICAgICAgICAgIGE2CisgICAgICAgICAgICAgIF0pOworICB9CisgIGVsc2Ugewor
ICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgY2FzZSAxIDogCisg
ICAgICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgYTEsCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAg
ICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAg
YTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYKKyAgICAgICAgICAgICAgICAgICAgXSk7Cisg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkg
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMs
CisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAgYTUsCisg
ICAgICAgICAgICAgICAgICAgICAgYTYKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiksIC8qIGFycmF5ICov
WworICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgICAgICAgIGE0LAor
ICAgICAgICAgICAgICAgICAgICAgIGE1LAorICAgICAgICAgICAgICAgICAgICAgIGE2CisgICAg
ICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuIGFw
cChvKGEwLCBhMSwgYTIsIGEzKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAg
YTQsCisgICAgICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYK
KyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICByZXR1
cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0KSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYKKyAgICAgICAgICAgICAgICAg
ICAgXSk7CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBh
MiwgYTMsIGE0LCBhNSksIC8qIGFycmF5ICovW2E2XSk7CisgICAgICBjYXNlIDcgOiAKKyAgICAg
ICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7CisgICAgICAKKyAgICB9
CisgIH0KK30KKworZnVuY3Rpb24gXzcobywgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIHsK
KyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNykgeworICAgIHJldHVy
biBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gY3VycnlfNyhvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYXJpdHkpOworICB9Cit9
CisKK2Z1bmN0aW9uIGpzNyhsYWJlbCwgY2FjaGVpZCwgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwg
YTYpIHsKKyAgcmV0dXJuIF83KENhbWxfb28uY2FtbF9nZXRfcHVibGljX21ldGhvZChhMCwgbGFi
ZWwsIGNhY2hlaWQpLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Cit9CisKK2Z1bmN0aW9u
IF9fNyhvKSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDcpIHsK
KyAgICByZXR1cm4gbzsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGEwLCBh
MSwgYTIsIGEzLCBhNCwgYTUsIGE2KSB7CisgICAgICByZXR1cm4gXzcobywgYTAsIGExLCBhMiwg
YTMsIGE0LCBhNSwgYTYpOworICAgIH07CisgIH0KK30KKworZnVuY3Rpb24gY3VycnlfOChvLCBh
MCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcg
fHwgYXJpdHkgPCAwKSB7CisgICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKKyAgICAgICAg
ICAgICAgICBhMCwKKyAgICAgICAgICAgICAgICBhMSwKKyAgICAgICAgICAgICAgICBhMiwKKyAg
ICAgICAgICAgICAgICBhMywKKyAgICAgICAgICAgICAgICBhNCwKKyAgICAgICAgICAgICAgICBh
NSwKKyAgICAgICAgICAgICAgICBhNiwKKyAgICAgICAgICAgICAgICBhNworICAgICAgICAgICAg
ICBdKTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAg
OiAKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5
ICovWworICAgICAgICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgICAgICAgIGEy
LAorICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgICAgICAgIGE0LAor
ICAgICAgICAgICAgICAgICAgICAgIGE1LAorICAgICAgICAgICAgICAgICAgICAgIGE2LAorICAg
ICAgICAgICAgICAgICAgICAgIGE3CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSksIC8qIGFycmF5ICovWworICAg
ICAgICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAg
ICAgICAgICAgICAgICAgIGE0LAorICAgICAgICAgICAgICAgICAgICAgIGE1LAorICAgICAgICAg
ICAgICAgICAgICAgIGE2LAorICAgICAgICAgICAgICAgICAgICAgIGE3CisgICAgICAgICAgICAg
ICAgICAgIF0pOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBh
MSwgYTIpLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBhMywKKyAgICAgICAg
ICAgICAgICAgICAgICBhNCwKKyAgICAgICAgICAgICAgICAgICAgICBhNSwKKyAgICAgICAgICAg
ICAgICAgICAgICBhNiwKKyAgICAgICAgICAgICAgICAgICAgICBhNworICAgICAgICAgICAgICAg
ICAgICBdKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEs
IGEyLCBhMyksIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGE0LAorICAgICAg
ICAgICAgICAgICAgICAgIGE1LAorICAgICAgICAgICAgICAgICAgICAgIGE2LAorICAgICAgICAg
ICAgICAgICAgICAgIGE3CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA1IDog
CisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzLCBhNCksIC8qIGFycmF5ICov
WworICAgICAgICAgICAgICAgICAgICAgIGE1LAorICAgICAgICAgICAgICAgICAgICAgIGE2LAor
ICAgICAgICAgICAgICAgICAgICAgIGE3CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAg
Y2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUp
LCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBhNiwKKyAgICAgICAgICAgICAg
ICAgICAgICBhNworICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNyA6IAorICAg
ICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiksIC8qIGFycmF5
ICovW2E3XSk7CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzgobywgYTAsIGEx
LCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBp
ZiAoYXJpdHkgPT09IDgpIHsKKyAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBh
NiwgYTcpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBjdXJyeV84KG8sIGEwLCBhMSwgYTIs
IGEzLCBhNCwgYTUsIGE2LCBhNywgYXJpdHkpOworICB9Cit9CisKK2Z1bmN0aW9uIGpzOChsYWJl
bCwgY2FjaGVpZCwgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSB7CisgIHJldHVybiBf
OChDYW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAsIGxhYmVsLCBjYWNoZWlkKSwgYTAs
IGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKK30KKworZnVuY3Rpb24gX184KG8pIHsKKyAg
dmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gOCkgeworICAgIHJldHVybiBv
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBhMiwgYTMsIGE0
LCBhNSwgYTYsIGE3KSB7CisgICAgICByZXR1cm4gXzgobywgYTAsIGExLCBhMiwgYTMsIGE0LCBh
NSwgYTYsIGE3KTsKKyAgICB9OworICB9Cit9CisKK2V4cG9ydHMuYXBwICAgICA9IGFwcDsKK2V4
cG9ydHMuanMgICAgICA9IGpzOworZXhwb3J0cy5jdXJyeV8xID0gY3VycnlfMTsKK2V4cG9ydHMu
XzEgICAgICA9IF8xOworZXhwb3J0cy5qczEgICAgID0ganMxOworZXhwb3J0cy5fXzEgICAgID0g
X18xOworZXhwb3J0cy5jdXJyeV8yID0gY3VycnlfMjsKK2V4cG9ydHMuXzIgICAgICA9IF8yOwor
ZXhwb3J0cy5qczIgICAgID0ganMyOworZXhwb3J0cy5fXzIgICAgID0gX18yOworZXhwb3J0cy5j
dXJyeV8zID0gY3VycnlfMzsKK2V4cG9ydHMuXzMgICAgICA9IF8zOworZXhwb3J0cy5qczMgICAg
ID0ganMzOworZXhwb3J0cy5fXzMgICAgID0gX18zOworZXhwb3J0cy5jdXJyeV80ID0gY3Vycnlf
NDsKK2V4cG9ydHMuXzQgICAgICA9IF80OworZXhwb3J0cy5qczQgICAgID0ganM0OworZXhwb3J0
cy5fXzQgICAgID0gX180OworZXhwb3J0cy5jdXJyeV81ID0gY3VycnlfNTsKK2V4cG9ydHMuXzUg
ICAgICA9IF81OworZXhwb3J0cy5qczUgICAgID0ganM1OworZXhwb3J0cy5fXzUgICAgID0gX181
OworZXhwb3J0cy5jdXJyeV82ID0gY3VycnlfNjsKK2V4cG9ydHMuXzYgICAgICA9IF82OworZXhw
b3J0cy5qczYgICAgID0ganM2OworZXhwb3J0cy5fXzYgICAgID0gX182OworZXhwb3J0cy5jdXJy
eV83ID0gY3VycnlfNzsKK2V4cG9ydHMuXzcgICAgICA9IF83OworZXhwb3J0cy5qczcgICAgID0g
anM3OworZXhwb3J0cy5fXzcgICAgID0gX183OworZXhwb3J0cy5jdXJyeV84ID0gY3VycnlfODsK
K2V4cG9ydHMuXzggICAgICA9IF84OworZXhwb3J0cy5qczggICAgID0ganM4OworZXhwb3J0cy5f
XzggICAgID0gX184OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBjdXJy
eS5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lz
dHJ5WydkZWNvZGUnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8v
Ly8vLy8vIHN0YXJ0IG9mIGRlY29kZS5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tM
RVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmlj
dCc7CisKK3ZhciBGMzIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2YzMiIpOwordmFyIEY2NCAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjY0Iik7Cit2YXIgSTMyICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9pMzIiKTsKK3ZhciBMaWIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2xpYiIpOwor
dmFyIExpc3QgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7
Cit2YXIgQmxvY2sgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2Nr
Iik7Cit2YXIgQ3VycnkgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1
cnJ5Iik7Cit2YXIgJCRFcnJvciAgICAgICAgID0gcmVxdWlyZSgiLi9lcnJvciIpOwordmFyIEVu
Y29kZSAgICAgICAgICA9IHJlcXVpcmUoIi4vZW5jb2RlIik7Cit2YXIgUHJpbnRmICAgICAgICAg
ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3ByaW50ZiIpOwordmFyIFNvdXJjZSAgICAg
ICAgICA9IHJlcXVpcmUoIi4vc291cmNlIik7Cit2YXIgJCRTdHJpbmcgICAgICAgID0gcmVxdWly
ZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwordmFyIENhbWxfb2JqICAgICAgICA9IHJl
cXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOwordmFyIE9wZXJhdG9ycyAgICAg
ICA9IHJlcXVpcmUoIi4vb3BlcmF0b3JzIik7Cit2YXIgQ2FtbF9pbnQ2NCAgICAgID0gcmVxdWly
ZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfaW50NjQiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2V4
Y2VwdGlvbnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9leGNlcHRpb25zIik7
CisKK3ZhciBFT1MgPSBDYW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJEZWNvZGUuRU9TIik7CisKK2Z1
bmN0aW9uIHN0cmVhbShuYW1lLCBicykgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAg
ICAgIC8qIG5hbWUgKi9uYW1lLAorICAgICAgICAgIC8qIGJ5dGVzICovYnMsCisgICAgICAgICAg
LyogcG9zICovWzBdCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGVvcyhzKSB7CisgIHJldHVy
biArKHNbLyogcG9zICovMl1bMF0gPT09IHNbLyogYnl0ZXMgKi8xXS5sZW5ndGgpOworfQorCitm
dW5jdGlvbiBjaGVjayhuLCBzKSB7CisgIGlmICgoc1svKiBwb3MgKi8yXVswXSArIG4gfCAwKSA+
IHNbLyogYnl0ZXMgKi8xXS5sZW5ndGgpIHsKKyAgICB0aHJvdyBFT1M7CisgIH0KKyAgZWxzZSB7
CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gc2tpcChuLCBzKSB7CisgIGNoZWNr
KG4sIHMpOworICBzWy8qIHBvcyAqLzJdWzBdID0gc1svKiBwb3MgKi8yXVswXSArIG4gfCAwOwor
ICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiByZWFkKHMpIHsKKyAgcmV0dXJuIENh
bWxfc3RyaW5nLmdldChzWy8qIGJ5dGVzICovMV0sIHNbLyogcG9zICovMl1bMF0pOworfQorCitm
dW5jdGlvbiBwZWVrKHMpIHsKKyAgaWYgKGVvcyhzKSkgeworICAgIHJldHVybiAvKiBOb25lICov
MDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogU29tZSAqL1tyZWFkKHMpXTsKKyAgfQor
fQorCitmdW5jdGlvbiBnZXQocykgeworICBjaGVjaygxLCBzKTsKKyAgdmFyIGIgPSByZWFkKHMp
OworICBza2lwKDEsIHMpOworICByZXR1cm4gYjsKK30KKwordmFyIENvZGUgPSAkJEVycm9yLk1h
a2UoLyogbW9kdWxlICovW10pOworCit2YXIgQ29kZSQxID0gQ29kZVsvKiBFcnJvciAqLzBdOwor
CitmdW5jdGlvbiBzdHJpbmdfb2ZfYnl0ZShiKSB7CisgIHJldHVybiBDdXJyeS5fMShQcmludGYu
c3ByaW50ZigvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5f
Xyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgLyogSW50X3ggKi82LAorICAgICAgICAgICAg
ICAgICAgICAgIC8qIExpdF9wYWRkaW5nICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBaZXJvcyAqLzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3By
ZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAK
KyAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAiJTAyeCIKKyAgICAg
ICAgICAgICAgICBdKSwgYik7Cit9CisKK2Z1bmN0aW9uIHBvc2l0aW9uKHMsIHBvcykgeworICBy
ZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGZpbGUgKi9zWy8qIG5hbWUgKi8wXSwK
KyAgICAgICAgICAvKiBsaW5lICovLTEsCisgICAgICAgICAgLyogY29sdW1uICovcG9zCisgICAg
ICAgIF07Cit9CisKK2Z1bmN0aW9uIHJlZ2lvbihzLCBsZWZ0LCByaWdodCkgeworICByZXR1cm4g
LyogcmVjb3JkICovWworICAgICAgICAgIC8qIGxlZnQgKi9wb3NpdGlvbihzLCBsZWZ0KSwKKyAg
ICAgICAgICAvKiByaWdodCAqL3Bvc2l0aW9uKHMsIHJpZ2h0KQorICAgICAgICBdOworfQorCitm
dW5jdGlvbiBlcnJvcihzLCBwb3MsIG1zZykgeworICB0aHJvdyBbCisgICAgICAgIENvZGUkMSwK
KyAgICAgICAgcmVnaW9uKHMsIHBvcywgcG9zKSwKKyAgICAgICAgbXNnCisgICAgICBdOworfQor
CitmdW5jdGlvbiAkJHJlcXVpcmUoYiwgcywgcG9zLCBtc2cpIHsKKyAgaWYgKGIpIHsKKyAgICBy
ZXR1cm4gMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gZXJyb3IocywgcG9zLCBtc2cpOwor
ICB9Cit9CisKK2Z1bmN0aW9uIGd1YXJkKGYsIHMpIHsKKyAgdHJ5IHsKKyAgICByZXR1cm4gQ3Vy
cnkuXzEoZiwgcyk7CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0gRU9TKSB7
CisgICAgICByZXR1cm4gZXJyb3Iocywgc1svKiBieXRlcyAqLzFdLmxlbmd0aCwgInVuZXhwZWN0
ZWQgZW5kIG9mIGJpbmFyeSBvciBmdW5jdGlvbiIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHRocm93IGV4bjsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gZ2V0JDEocGFyYW0pIHsKKyAg
cmV0dXJuIGd1YXJkKGdldCwgcGFyYW0pOworfQorCitmdW5jdGlvbiBleHBlY3QoYiwgcywgbXNn
KSB7CisgIHJldHVybiAkJHJlcXVpcmUoKyhndWFyZChnZXQkMSwgcykgPT09IGIpLCBzLCBzWy8q
IHBvcyAqLzJdWzBdIC0gMSB8IDAsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIGlsbGVnYWwocywgcG9z
LCBiKSB7CisgIHJldHVybiBlcnJvcihzLCBwb3MsICJpbGxlZ2FsIG9wY29kZSAiICsgc3RyaW5n
X29mX2J5dGUoYikpOworfQorCitmdW5jdGlvbiBhdChmLCBzKSB7CisgIHZhciBsZWZ0ID0gc1sv
KiBwb3MgKi8yXVswXTsKKyAgdmFyIHggPSBDdXJyeS5fMShmLCBzKTsKKyAgdmFyIHJpZ2h0ID0g
c1svKiBwb3MgKi8yXVswXTsKKyAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoeCwgcmVnaW9uKHMsIGxl
ZnQsIHJpZ2h0KSk7Cit9CisKK2Z1bmN0aW9uIHUxNihzKSB7CisgIHZhciBsbyA9IGd1YXJkKGdl
dCwgcyk7CisgIHZhciBoaSA9IGd1YXJkKGdldCwgcyk7CisgIHJldHVybiAoaGkgPDwgOCkgKyBs
byB8IDA7Cit9CisKK2Z1bmN0aW9uIHUzMihzKSB7CisgIHZhciBsbyA9IHUxNihzKTsKKyAgdmFy
IGhpID0gdTE2KHMpOworICByZXR1cm4gbG8gKyAoaGkgPDwgMTYpIHwgMDsKK30KKworZnVuY3Rp
b24gdTY0KHMpIHsKKyAgdmFyIGxvID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMih1MzIocykpOworICB2
YXIgaGkgPSBDYW1sX2ludDY0Lm9mX2ludDMyKHUzMihzKSk7CisgIHJldHVybiBDYW1sX2ludDY0
LmFkZChsbywgQ2FtbF9pbnQ2NC5sc2xfKGhpLCAzMikpOworfQorCitmdW5jdGlvbiB2dU4obiwg
cykgeworICAkJHJlcXVpcmUoKyhuID4gMCksIHMsIHNbLyogcG9zICovMl1bMF0sICJpbnRlZ2Vy
IHJlcHJlc2VudGF0aW9uIHRvbyBsb25nIik7CisgIHZhciBiID0gZ3VhcmQoZ2V0LCBzKTsKKyAg
JCRyZXF1aXJlKCsobiA+PSA3IHx8IChiICYgMTI3KSA8ICgxIDw8IG4pKSwgcywgc1svKiBwb3Mg
Ki8yXVswXSAtIDEgfCAwLCAiaW50ZWdlciB0b28gbGFyZ2UiKTsKKyAgdmFyIHggPSBDYW1sX2lu
dDY0Lm9mX2ludDMyKGIgJiAxMjcpOworICBpZiAoYiAmIDEyOCkgeworICAgIHJldHVybiBDYW1s
X2ludDY0Lm9yXyh4LCBDYW1sX2ludDY0LmxzbF8odnVOKG4gLSA3IHwgMCwgcyksIDcpKTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4geDsKKyAgfQorfQorCitmdW5jdGlvbiB2c04obiwgcykg
eworICAkJHJlcXVpcmUoKyhuID4gMCksIHMsIHNbLyogcG9zICovMl1bMF0sICJpbnRlZ2VyIHJl
cHJlc2VudGF0aW9uIHRvbyBsb25nIik7CisgIHZhciBiID0gZ3VhcmQoZ2V0LCBzKTsKKyAgdmFy
IG1hc2sgPSAoLTEgPDwgbikgJiAxMjc7CisgICQkcmVxdWlyZSgrKG4gPj0gNyB8fCAoYiAmIG1h
c2spID09PSAwIHx8IChiICYgbWFzaykgPT09IG1hc2spLCBzLCBzWy8qIHBvcyAqLzJdWzBdIC0g
MSB8IDAsICJpbnRlZ2VyIHRvbyBsYXJnZSIpOworICB2YXIgeCA9IENhbWxfaW50NjQub2ZfaW50
MzIoYiAmIDEyNyk7CisgIGlmIChiICYgMTI4KSB7CisgICAgcmV0dXJuIENhbWxfaW50NjQub3Jf
KHgsIENhbWxfaW50NjQubHNsXyh2c04obiAtIDcgfCAwLCBzKSwgNykpOworICB9CisgIGVsc2Ug
aWYgKGIgJiA2NCkgeworICAgIHJldHVybiAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgIC8qIGhp
ICoveFswXSB8IC8qIGhpICovLTEsCisgICAgICAgICAgICAvKiBsbyAqLygoeFsxXSB8IC8qIGxv
ICovNDI5NDk2NzE2OCkgPj4+IDApCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICBy
ZXR1cm4geDsKKyAgfQorfQorCitmdW5jdGlvbiB2dTMyKHMpIHsKKyAgcmV0dXJuIHZ1TigzMiwg
cylbMV0gfCAwOworfQorCitmdW5jdGlvbiB2czMyKHMpIHsKKyAgcmV0dXJuIHZzTigzMiwgcylb
MV0gfCAwOworfQorCitmdW5jdGlvbiB2czY0KHMpIHsKKyAgcmV0dXJuIHZzTig2NCwgcyk7Cit9
CisKK2Z1bmN0aW9uIGYzMihzKSB7CisgIHJldHVybiBDdXJyeS5fMShGMzIub2ZfYml0cywgdTMy
KHMpKTsKK30KKworZnVuY3Rpb24gZjY0KHMpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKEY2NC5vZl9i
aXRzLCB1NjQocykpOworfQorCitmdW5jdGlvbiBsZW4zMihzKSB7CisgIHZhciBwb3MgPSBzWy8q
IHBvcyAqLzJdWzBdOworICB2YXIgbiA9IHZ1TigzMiwgcylbMV0gfCAwOworICBpZiAobiA8PSBz
Wy8qIGJ5dGVzICovMV0ubGVuZ3RoKSB7CisgICAgcmV0dXJuIG47CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIGVycm9yKHMsIHBvcywgImxlbmd0aCBvdXQgb2YgYm91bmRzIik7CisgIH0KK30K
KworZnVuY3Rpb24gc3RyaW5nKHMpIHsKKyAgdmFyIG4gPSBsZW4zMihzKTsKKyAgcmV0dXJuIGd1
YXJkKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICB2YXIgbiQxID0gbjsKKyAgICAg
ICAgICAgICAgdmFyIHMgPSBwYXJhbTsKKyAgICAgICAgICAgICAgdmFyIGkgPSBzWy8qIHBvcyAq
LzJdWzBdOworICAgICAgICAgICAgICBza2lwKG4kMSwgcyk7CisgICAgICAgICAgICAgIHJldHVy
biAkJFN0cmluZy5zdWIoc1svKiBieXRlcyAqLzFdLCBpLCBuJDEpOworICAgICAgICAgICAgfSwg
cyk7Cit9CisKK2Z1bmN0aW9uIGxpc3QoZiwgbiwgcykgeworICBpZiAobikgeworICAgIHZhciB4
ID0gQ3VycnkuXzEoZiwgcyk7CisgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgeCwK
KyAgICAgICAgICAgIGxpc3QoZiwgbiAtIDEgfCAwLCBzKQorICAgICAgICAgIF07CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIC8qIFtdICovMDsKKyAgfQorfQorCitmdW5jdGlvbiBvcHQoZiwg
YiwgcykgeworICBpZiAoYikgeworICAgIHJldHVybiAvKiBTb21lICovW0N1cnJ5Ll8xKGYsIHMp
XTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogTm9uZSAqLzA7CisgIH0KK30KKworZnVu
Y3Rpb24gdmVjKGYsIHMpIHsKKyAgdmFyIG4gPSBsZW4zMihzKTsKKyAgcmV0dXJuIGxpc3QoZiwg
biwgcyk7Cit9CisKK2Z1bmN0aW9uIHNpemVkKGYsIHMpIHsKKyAgdmFyIHNpemUgPSBsZW4zMihz
KTsKKyAgdmFyIHN0YXJ0ID0gc1svKiBwb3MgKi8yXVswXTsKKyAgdmFyIHggPSBDdXJyeS5fMihm
LCBzaXplLCBzKTsKKyAgJCRyZXF1aXJlKCsoc1svKiBwb3MgKi8yXVswXSA9PT0gKHN0YXJ0ICsg
c2l6ZSB8IDApKSwgcywgc3RhcnQsICJzZWN0aW9uIHNpemUgbWlzbWF0Y2giKTsKKyAgcmV0dXJu
IHg7Cit9CisKK2Z1bmN0aW9uIHZhbHVlX3R5cGUocykgeworICB2YXIgbWF0Y2ggPSB2c04oNywg
cylbMV0gfCAwOworICB2YXIgc3dpdGNoZXIgPSBtYXRjaCArIDQgfCAwOworICBpZiAoc3dpdGNo
ZXIgPiAzIHx8IHN3aXRjaGVyIDwgMCkgeworICAgIHJldHVybiBlcnJvcihzLCBzWy8qIHBvcyAq
LzJdWzBdIC0gMSB8IDAsICJpbnZhbGlkIHZhbHVlIHR5cGUiKTsKKyAgfQorICBlbHNlIHsKKyAg
ICBzd2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4g
LyogRjY0VHlwZSAqLzM7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogRjMy
VHlwZSAqLzI7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gLyogSTY0VHlwZSAq
LzE7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogSTMyVHlwZSAqLzA7Cisg
ICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gZWxlbV90eXBlKHMpIHsKKyAgdmFyIG1h
dGNoID0gdnNOKDcsIHMpWzFdIHwgMDsKKyAgaWYgKG1hdGNoICE9PSAtMTYpIHsKKyAgICByZXR1
cm4gZXJyb3Iocywgc1svKiBwb3MgKi8yXVswXSAtIDEgfCAwLCAiaW52YWxpZCBlbGVtZW50IHR5
cGUiKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogRnVuY1JlZlR5cGUgKi8wOworICB9
Cit9CisKK2Z1bmN0aW9uIHN0YWNrX3R5cGUocykgeworICB2YXIgbWF0Y2ggPSBwZWVrKHMpOwor
ICBpZiAobWF0Y2gpIHsKKyAgICBpZiAobWF0Y2hbMF0gIT09IDY0KSB7CisgICAgICByZXR1cm4g
LyogOjogKi9bCisgICAgICAgICAgICAgIHZhbHVlX3R5cGUocyksCisgICAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBndWFyZChm
dW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgIHJldHVybiBza2lwKDEsIHBhcmFtKTsKKyAg
ICAgICAgICB9LCBzKTsKKyAgICAgIHJldHVybiAvKiBbXSAqLzA7CisgICAgfQorICB9CisgIGVs
c2UgeworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIHZhbHVlX3R5cGUocyksCisg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGZ1
bmNfdHlwZShzKSB7CisgIHZhciBtYXRjaCA9IHZzTig3LCBzKVsxXSB8IDA7CisgIGlmIChtYXRj
aCAhPT0gLTMyKSB7CisgICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwg
MCwgImludmFsaWQgZnVuY3Rpb24gdHlwZSIpOworICB9CisgIGVsc2UgeworICAgIHZhciBpbnMg
PSB2ZWModmFsdWVfdHlwZSwgcyk7CisgICAgdmFyIG91dCA9IHZlYyh2YWx1ZV90eXBlLCBzKTsK
KyAgICByZXR1cm4gLyogRnVuY1R5cGUgKi9bCisgICAgICAgICAgICBpbnMsCisgICAgICAgICAg
ICBvdXQKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGxpbWl0cyh2dSwgcykgewor
ICB2YXIgaGFzX21heCA9ICsoKHZ1TigxLCBzKVsxXSB8IDApID09PSAxKTsKKyAgdmFyIG1pbiA9
IEN1cnJ5Ll8xKHZ1LCBzKTsKKyAgdmFyIG1heCA9IG9wdCh2dSwgaGFzX21heCwgcyk7CisgIHJl
dHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogbWluICovbWluLAorICAgICAgICAgIC8q
IG1heCAqL21heAorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0YWJsZV90eXBlKHMpIHsKKyAg
dmFyIHQgPSBlbGVtX3R5cGUocyk7CisgIHZhciBsaW0gPSBsaW1pdHModnUzMiwgcyk7CisgIHJl
dHVybiAvKiBUYWJsZVR5cGUgKi9bCisgICAgICAgICAgbGltLAorICAgICAgICAgIHQKKyAgICAg
ICAgXTsKK30KKworZnVuY3Rpb24gbWVtb3J5X3R5cGUocykgeworICB2YXIgbGltID0gbGltaXRz
KHZ1MzIsIHMpOworICByZXR1cm4gLyogTWVtb3J5VHlwZSAqL1tsaW1dOworfQorCitmdW5jdGlv
biBtdXRhYmlsaXR5KHMpIHsKKyAgdmFyIG1hdGNoID0gZ3VhcmQoZ2V0LCBzKTsKKyAgaWYgKG1h
dGNoICE9PSAwKSB7CisgICAgaWYgKG1hdGNoICE9PSAxKSB7CisgICAgICByZXR1cm4gZXJyb3Io
cywgc1svKiBwb3MgKi8yXVswXSAtIDEgfCAwLCAiaW52YWxpZCBtdXRhYmlsaXR5Iik7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIE11dGFibGUgKi8xOworICAgIH0KKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gLyogSW1tdXRhYmxlICovMDsKKyAgfQorfQorCitmdW5jdGlv
biBnbG9iYWxfdHlwZShzKSB7CisgIHZhciB0ID0gdmFsdWVfdHlwZShzKTsKKyAgdmFyIG11dCA9
IG11dGFiaWxpdHkocyk7CisgIHJldHVybiAvKiBHbG9iYWxUeXBlICovWworICAgICAgICAgIHQs
CisgICAgICAgICAgbXV0CisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uICQkdmFyKHMpIHsKKyAg
cmV0dXJuIHZ1TigzMiwgcylbMV0gfCAwOworfQorCitmdW5jdGlvbiBtZW1vcChzKSB7CisgIHZh
ciBhbGlnbiA9IHZ1TigzMiwgcylbMV0gfCAwOworICAkJHJlcXVpcmUoQ3VycnkuXzIoSTMyLmxl
X3UsIGFsaWduLCAzMiksIHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwgImludmFsaWQgbWVt
b3AgZmxhZ3MiKTsKKyAgdmFyIG9mZnNldCA9IHZ1TigzMiwgcylbMV0gfCAwOworICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgYWxpZ24sCisgICAgICAgICAgb2Zmc2V0CisgICAgICAg
IF07Cit9CisKK2Z1bmN0aW9uIGluc3RyKHMpIHsKKyAgdmFyIHBvcyA9IHNbLyogcG9zICovMl1b
MF07CisgIHZhciBiID0gZ3VhcmQoZ2V0LCBzKTsKKyAgaWYgKGIgPiAxOTEgfHwgYiA8IDApIHsK
KyAgICByZXR1cm4gaWxsZWdhbChzLCBwb3MsIGIpOworICB9CisgIGVsc2UgeworICAgIHN3aXRj
aCAoYikgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy51bnJl
YWNoYWJsZTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMubm9w
OworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgdmFyIHRzID0gc3RhY2tfdHlwZShzKTsKKyAg
ICAgICAgICB2YXIgZXMkcHJpbWUgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBb
XSAqLzApKTsKKyAgICAgICAgICBleHBlY3QoMTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7
CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5ibG9jayh0cywgZXMkcHJpbWUpOworICAgICAg
Y2FzZSAzIDogCisgICAgICAgICAgdmFyIHRzJDEgPSBzdGFja190eXBlKHMpOworICAgICAgICAg
IHZhciBlcyRwcmltZSQxID0gTGlzdC5yZXYoaW5zdHJfYmxvY2skcHJpbWUocywgLyogW10gKi8w
KSk7CisgICAgICAgICAgZXhwZWN0KDExLCBzLCAiRU5EIG9wY29kZSBleHBlY3RlZCIpOworICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMubG9vcCh0cyQxLCBlcyRwcmltZSQxKTsKKyAgICAgIGNh
c2UgNCA6IAorICAgICAgICAgIHZhciB0cyQyID0gc3RhY2tfdHlwZShzKTsKKyAgICAgICAgICB2
YXIgZXMxID0gTGlzdC5yZXYoaW5zdHJfYmxvY2skcHJpbWUocywgLyogW10gKi8wKSk7CisgICAg
ICAgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwocGVlayhzKSwgLyogU29tZSAqL1s1XSkpIHsK
KyAgICAgICAgICAgIGV4cGVjdCg1LCBzLCAiRUxTRSBvciBFTkQgb3Bjb2RlIGV4cGVjdGVkIik7
CisgICAgICAgICAgICB2YXIgZXMyID0gTGlzdC5yZXYoaW5zdHJfYmxvY2skcHJpbWUocywgLyog
W10gKi8wKSk7CisgICAgICAgICAgICBleHBlY3QoMTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVjdGVk
Iik7CisgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmlmXyh0cyQyLCBlczEsIGVzMik7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhwZWN0KDExLCBzLCAi
RU5EIG9wY29kZSBleHBlY3RlZCIpOworICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pZl8o
dHMkMiwgZXMxLCAvKiBbXSAqLzApOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiBlcnJvcihzLCBwb3MsICJtaXNwbGFjZWQg
RUxTRSBvcGNvZGUiKTsKKyAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICByZXR1cm4gZXJyb3Io
cywgcG9zLCAibWlzcGxhY2VkIEVORCBvcGNvZGUiKTsKKyAgICAgIGNhc2UgMTIgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmJyKGF0KCQkdmFyLCBzKSk7CisgICAgICBjYXNlIDEzIDog
CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5icl9pZihhdCgkJHZhciwgcykpOworICAgICAg
Y2FzZSAxNCA6IAorICAgICAgICAgIHZhciB4cyA9IHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gYXQoJCR2YXIsIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwg
cyk7CisgICAgICAgICAgdmFyIHggPSBhdCgkJHZhciwgcyk7CisgICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5icl90YWJsZSh4cywgeCk7CisgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy4kJHJldHVybjsKKyAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmNhbGwoYXQoJCR2YXIsIHMpKTsKKyAgICAgIGNhc2UgMTcgOiAKKyAgICAg
ICAgICB2YXIgeCQxID0gYXQoJCR2YXIsIHMpOworICAgICAgICAgIGV4cGVjdCgwLCBzLCAiemVy
byBmbGFnIGV4cGVjdGVkIik7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5jYWxsX2luZGly
ZWN0KHgkMSk7CisgICAgICBjYXNlIDI2IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5k
cm9wOworICAgICAgY2FzZSAyNyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuc2VsZWN0
OworICAgICAgY2FzZSAzMiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZ2V0X2xvY2Fs
KGF0KCQkdmFyLCBzKSk7CisgICAgICBjYXNlIDMzIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5zZXRfbG9jYWwoYXQoJCR2YXIsIHMpKTsKKyAgICAgIGNhc2UgMzQgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLnRlZV9sb2NhbChhdCgkJHZhciwgcykpOworICAgICAgY2FzZSAz
NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZ2V0X2dsb2JhbChhdCgkJHZhciwgcykp
OworICAgICAgY2FzZSAzNiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuc2V0X2dsb2Jh
bChhdCgkJHZhciwgcykpOworICAgICAgY2FzZSA2IDogCisgICAgICBjYXNlIDcgOiAKKyAgICAg
IGNhc2UgOCA6IAorICAgICAgY2FzZSA5IDogCisgICAgICBjYXNlIDEwIDogCisgICAgICBjYXNl
IDE4IDogCisgICAgICBjYXNlIDE5IDogCisgICAgICBjYXNlIDIwIDogCisgICAgICBjYXNlIDIx
IDogCisgICAgICBjYXNlIDIyIDogCisgICAgICBjYXNlIDIzIDogCisgICAgICBjYXNlIDI0IDog
CisgICAgICBjYXNlIDI1IDogCisgICAgICBjYXNlIDI4IDogCisgICAgICBjYXNlIDI5IDogCisg
ICAgICBjYXNlIDMwIDogCisgICAgICBjYXNlIDMxIDogCisgICAgICBjYXNlIDM3IDogCisgICAg
ICBjYXNlIDM4IDogCisgICAgICBjYXNlIDM5IDogCisgICAgICAgICAgcmV0dXJuIGlsbGVnYWwo
cywgcG9zLCBiKTsKKyAgICAgIGNhc2UgNDAgOiAKKyAgICAgICAgICB2YXIgbWF0Y2ggPSBtZW1v
cChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2FkKG1hdGNoWzBdLCBtYXRj
aFsxXSk7CisgICAgICBjYXNlIDQxIDogCisgICAgICAgICAgdmFyIG1hdGNoJDEgPSBtZW1vcChz
KTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkKG1hdGNoJDFbMF0sIG1hdGNo
JDFbMV0pOworICAgICAgY2FzZSA0MiA6IAorICAgICAgICAgIHZhciBtYXRjaCQyID0gbWVtb3Ao
cyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfbG9hZChtYXRjaCQyWzBdLCBtYXRj
aCQyWzFdKTsKKyAgICAgIGNhc2UgNDMgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMyA9IG1lbW9w
KHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2xvYWQobWF0Y2gkM1swXSwgbWF0
Y2gkM1sxXSk7CisgICAgICBjYXNlIDQ0IDogCisgICAgICAgICAgdmFyIG1hdGNoJDQgPSBtZW1v
cChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2FkOF9zKG1hdGNoJDRbMF0s
IG1hdGNoJDRbMV0pOworICAgICAgY2FzZSA0NSA6IAorICAgICAgICAgIHZhciBtYXRjaCQ1ID0g
bWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbG9hZDhfdShtYXRjaCQ1
WzBdLCBtYXRjaCQ1WzFdKTsKKyAgICAgIGNhc2UgNDYgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gk
NiA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2xvYWQxNl9zKG1h
dGNoJDZbMF0sIG1hdGNoJDZbMV0pOworICAgICAgY2FzZSA0NyA6IAorICAgICAgICAgIHZhciBt
YXRjaCQ3ID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbG9hZDE2
X3UobWF0Y2gkN1swXSwgbWF0Y2gkN1sxXSk7CisgICAgICBjYXNlIDQ4IDogCisgICAgICAgICAg
dmFyIG1hdGNoJDggPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9s
b2FkOF9zKG1hdGNoJDhbMF0sIG1hdGNoJDhbMV0pOworICAgICAgY2FzZSA0OSA6IAorICAgICAg
ICAgIHZhciBtYXRjaCQ5ID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5p
NjRfbG9hZDhfdShtYXRjaCQ5WzBdLCBtYXRjaCQ5WzFdKTsKKyAgICAgIGNhc2UgNTAgOiAKKyAg
ICAgICAgICB2YXIgbWF0Y2gkMTAgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmk2NF9sb2FkMTZfcyhtYXRjaCQxMFswXSwgbWF0Y2gkMTBbMV0pOworICAgICAgY2FzZSA1
MSA6IAorICAgICAgICAgIHZhciBtYXRjaCQxMSA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X2xvYWQxNl91KG1hdGNoJDExWzBdLCBtYXRjaCQxMVsxXSk7CisgICAg
ICBjYXNlIDUyIDogCisgICAgICAgICAgdmFyIG1hdGNoJDEyID0gbWVtb3Aocyk7CisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfbG9hZDMyX3MobWF0Y2gkMTJbMF0sIG1hdGNoJDEyWzFd
KTsKKyAgICAgIGNhc2UgNTMgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMTMgPSBtZW1vcChzKTsK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkMzJfdShtYXRjaCQxM1swXSwgbWF0
Y2gkMTNbMV0pOworICAgICAgY2FzZSA1NCA6IAorICAgICAgICAgIHZhciBtYXRjaCQxNCA9IG1l
bW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3N0b3JlKG1hdGNoJDE0WzBd
LCBtYXRjaCQxNFsxXSk7CisgICAgICBjYXNlIDU1IDogCisgICAgICAgICAgdmFyIG1hdGNoJDE1
ID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfc3RvcmUobWF0Y2gk
MTVbMF0sIG1hdGNoJDE1WzFdKTsKKyAgICAgIGNhc2UgNTYgOiAKKyAgICAgICAgICB2YXIgbWF0
Y2gkMTYgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9zdG9yZSht
YXRjaCQxNlswXSwgbWF0Y2gkMTZbMV0pOworICAgICAgY2FzZSA1NyA6IAorICAgICAgICAgIHZh
ciBtYXRjaCQxNyA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X3N0
b3JlKG1hdGNoJDE3WzBdLCBtYXRjaCQxN1sxXSk7CisgICAgICBjYXNlIDU4IDogCisgICAgICAg
ICAgdmFyIG1hdGNoJDE4ID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5p
MzJfc3RvcmU4KG1hdGNoJDE4WzBdLCBtYXRjaCQxOFsxXSk7CisgICAgICBjYXNlIDU5IDogCisg
ICAgICAgICAgdmFyIG1hdGNoJDE5ID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pMzJfc3RvcmUxNihtYXRjaCQxOVswXSwgbWF0Y2gkMTlbMV0pOworICAgICAgY2FzZSA2
MCA6IAorICAgICAgICAgIHZhciBtYXRjaCQyMCA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X3N0b3JlOChtYXRjaCQyMFswXSwgbWF0Y2gkMjBbMV0pOworICAgICAg
Y2FzZSA2MSA6IAorICAgICAgICAgIHZhciBtYXRjaCQyMSA9IG1lbW9wKHMpOworICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMTYobWF0Y2gkMjFbMF0sIG1hdGNoJDIxWzFdKTsK
KyAgICAgIGNhc2UgNjIgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMjIgPSBtZW1vcChzKTsKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdG9yZTMyKG1hdGNoJDIyWzBdLCBtYXRjaCQy
MlsxXSk7CisgICAgICBjYXNlIDYzIDogCisgICAgICAgICAgZXhwZWN0KDAsIHMsICJ6ZXJvIGZs
YWcgZXhwZWN0ZWQiKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmN1cnJlbnRfbWVtb3J5
OworICAgICAgY2FzZSA2NCA6IAorICAgICAgICAgIGV4cGVjdCgwLCBzLCAiemVybyBmbGFnIGV4
cGVjdGVkIik7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5ncm93X21lbW9yeTsKKyAgICAg
IGNhc2UgNjUgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9jb25zdChhdCh2czMy
LCBzKSk7CisgICAgICBjYXNlIDY2IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRf
Y29uc3QoYXQodnM2NCwgcykpOworICAgICAgY2FzZSA2NyA6IAorICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuZjMyX2NvbnN0KGF0KGYzMiwgcykpOworICAgICAgY2FzZSA2OCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnN0KGF0KGY2NCwgcykpOworICAgICAgY2FzZSA2
OSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2VxejsKKyAgICAgIGNhc2UgNzAg
OiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9lcTsKKyAgICAgIGNhc2UgNzEgOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9uZTsKKyAgICAgIGNhc2UgNzIgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sdF9zOworICAgICAgY2FzZSA3MyA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2x0X3U7CisgICAgICBjYXNlIDc0IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfZ3RfczsKKyAgICAgIGNhc2UgNzUgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9ndF91OworICAgICAgY2FzZSA3NiA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2xlX3M7CisgICAgICBjYXNlIDc3IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbGVfdTsKKyAgICAgIGNhc2UgNzggOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmkzMl9nZV9zOworICAgICAgY2FzZSA3OSA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaTMyX2dlX3U7CisgICAgICBjYXNlIDgwIDogCisgICAgICAgICAg
cmV0dXJuIE9wZXJhdG9ycy5pNjRfZXF6OworICAgICAgY2FzZSA4MSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTY0X2VxOworICAgICAgY2FzZSA4MiA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X25lOworICAgICAgY2FzZSA4MyA6IAorICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTY0X2x0X3M7CisgICAgICBjYXNlIDg0IDogCisgICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pNjRfbHRfdTsKKyAgICAgIGNhc2UgODUgOiAKKyAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmk2NF9ndF9zOworICAgICAgY2FzZSA4NiA6IAorICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X2d0X3U7CisgICAgICBjYXNlIDg3IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pNjRfbGVfczsKKyAgICAgIGNhc2UgODggOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmk2NF9sZV91OworICAgICAgY2FzZSA4OSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuaTY0X2dlX3M7CisgICAgICBjYXNlIDkwIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5pNjRfZ2VfdTsKKyAgICAgIGNhc2UgOTEgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3Jz
LmYzMl9lcTsKKyAgICAgIGNhc2UgOTIgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYz
Ml9uZTsKKyAgICAgIGNhc2UgOTMgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9s
dDsKKyAgICAgIGNhc2UgOTQgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9ndDsK
KyAgICAgIGNhc2UgOTUgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9sZTsKKyAg
ICAgIGNhc2UgOTYgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9nZTsKKyAgICAg
IGNhc2UgOTcgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9lcTsKKyAgICAgIGNh
c2UgOTggOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9uZTsKKyAgICAgIGNhc2Ug
OTkgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9sdDsKKyAgICAgIGNhc2UgMTAw
IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfZ3Q7CisgICAgICBjYXNlIDEwMSA6
IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2xlOworICAgICAgY2FzZSAxMDIgOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9nZTsKKyAgICAgIGNhc2UgMTAzIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfY2x6OworICAgICAgY2FzZSAxMDQgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9jdHo7CisgICAgICBjYXNlIDEwNSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3BvcGNudDsKKyAgICAgIGNhc2UgMTA2IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfYWRkOworICAgICAgY2FzZSAxMDcgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zdWI7CisgICAgICBjYXNlIDEwOCA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX211bDsKKyAgICAgIGNhc2UgMTA5IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfZGl2X3M7CisgICAgICBjYXNlIDExMCA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2Rpdl91OworICAgICAgY2FzZSAxMTEgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9yZW1fczsKKyAgICAgIGNhc2UgMTEyIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfcmVtX3U7CisgICAgICBjYXNlIDExMyA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2FuZDsKKyAgICAgIGNhc2UgMTE0IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfb3I7CisgICAgICBjYXNlIDExNSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3hvcjsKKyAgICAgIGNhc2UgMTE2IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc2hsOworICAgICAgY2FzZSAxMTcgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zaHJfczsKKyAgICAgIGNhc2UgMTE4IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc2hyX3U7CisgICAgICBjYXNlIDExOSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3JvdGw7CisgICAgICBjYXNlIDEyMCA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3JvdHI7CisgICAgICBjYXNlIDEyMSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2NsejsKKyAgICAgIGNhc2UgMTIyIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfY3R6OworICAgICAgY2FzZSAxMjMgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9wb3BjbnQ7CisgICAgICBjYXNlIDEyNCA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2FkZDsKKyAgICAgIGNhc2UgMTI1IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfc3ViOworICAgICAgY2FzZSAxMjYgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9tdWw7CisgICAgICBjYXNlIDEyNyA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2Rpdl9zOworICAgICAgY2FzZSAxMjggOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9kaXZfdTsKKyAgICAgIGNhc2UgMTI5IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfcmVtX3M7CisgICAgICBjYXNlIDEzMCA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3JlbV91OworICAgICAgY2FzZSAxMzEgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9hbmQ7CisgICAgICBjYXNlIDEzMiA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X29yOworICAgICAgY2FzZSAxMzMgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF94b3I7CisgICAgICBjYXNlIDEzNCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3NobDsKKyAgICAgIGNhc2UgMTM1IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfc2hyX3M7CisgICAgICBjYXNlIDEzNiA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3Nocl91OworICAgICAgY2FzZSAxMzcgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9yb3RsOworICAgICAgY2FzZSAxMzggOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9yb3RyOworICAgICAgY2FzZSAxMzkgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9hYnM7CisgICAgICBjYXNlIDE0MCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX25lZzsKKyAgICAgIGNhc2UgMTQxIDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfY2VpbDsKKyAgICAgIGNhc2UgMTQyIDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfZmxvb3I7CisgICAgICBjYXNlIDE0MyA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3RydW5jOworICAgICAgY2FzZSAxNDQgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9uZWFyZXN0OworICAgICAgY2FzZSAxNDUgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9zcXJ0OworICAgICAgY2FzZSAxNDYgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9hZGQ7CisgICAgICBjYXNlIDE0NyA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3N1YjsKKyAgICAgIGNhc2UgMTQ4IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfbXVsOworICAgICAgY2FzZSAxNDkgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9kaXY7CisgICAgICBjYXNlIDE1MCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX21pbjsKKyAgICAgIGNhc2UgMTUxIDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfbWF4OworICAgICAgY2FzZSAxNTIgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmYzMl9jb3B5c2lnbjsKKyAgICAgIGNhc2UgMTUzIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfYWJzOworICAgICAgY2FzZSAxNTQgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9uZWc7CisgICAgICBjYXNlIDE1NSA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NlaWw7CisgICAgICBjYXNlIDE1NiA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2Zsb29yOworICAgICAgY2FzZSAxNTcgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF90cnVuYzsKKyAgICAgIGNhc2UgMTU4IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbmVhcmVzdDsKKyAgICAgIGNhc2UgMTU5IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfc3FydDsKKyAgICAgIGNhc2UgMTYwIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfYWRkOworICAgICAgY2FzZSAxNjEgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9zdWI7CisgICAgICBjYXNlIDE2MiA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X211bDsKKyAgICAgIGNhc2UgMTYzIDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfZGl2OworICAgICAgY2FzZSAxNjQgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9taW47CisgICAgICBjYXNlIDE2NSA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X21heDsKKyAgICAgIGNhc2UgMTY2IDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfY29weXNpZ247CisgICAgICBjYXNlIDE2NyA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3dyYXBfaTY0OworICAgICAgY2FzZSAxNjggOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl90cnVuY19zX2YzMjsKKyAgICAgIGNhc2Ug
MTY5IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfdHJ1bmNfdV9mMzI7CisgICAg
ICBjYXNlIDE3MCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3RydW5jX3NfZjY0
OworICAgICAgY2FzZSAxNzEgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl90cnVu
Y191X2Y2NDsKKyAgICAgIGNhc2UgMTcyIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5p
NjRfZXh0ZW5kX3NfaTMyOworICAgICAgY2FzZSAxNzMgOiAKKyAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmk2NF9leHRlbmRfdV9pMzI7CisgICAgICBjYXNlIDE3NCA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTY0X3RydW5jX3NfZjMyOworICAgICAgY2FzZSAxNzUgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF90cnVuY191X2YzMjsKKyAgICAgIGNhc2UgMTc2IDog
CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfdHJ1bmNfc19mNjQ7CisgICAgICBjYXNl
IDE3NyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3RydW5jX3VfZjY0OworICAg
ICAgY2FzZSAxNzggOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9jb252ZXJ0X3Nf
aTMyOworICAgICAgY2FzZSAxNzkgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9j
b252ZXJ0X3VfaTMyOworICAgICAgY2FzZSAxODAgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmYzMl9jb252ZXJ0X3NfaTY0OworICAgICAgY2FzZSAxODEgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmYzMl9jb252ZXJ0X3VfaTY0OworICAgICAgY2FzZSAxODIgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9kZW1vdGVfZjY0OworICAgICAgY2FzZSAxODMgOiAK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9jb252ZXJ0X3NfaTMyOworICAgICAgY2Fz
ZSAxODQgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9jb252ZXJ0X3VfaTMyOwor
ICAgICAgY2FzZSAxODUgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9jb252ZXJ0
X3NfaTY0OworICAgICAgY2FzZSAxODYgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2
NF9jb252ZXJ0X3VfaTY0OworICAgICAgY2FzZSAxODcgOiAKKyAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmY2NF9wcm9tb3RlX2YzMjsKKyAgICAgIGNhc2UgMTg4IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfcmVpbnRlcnByZXRfZjMyOworICAgICAgY2FzZSAxODkgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9yZWludGVycHJldF9mNjQ7CisgICAgICBjYXNl
IDE5MCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3JlaW50ZXJwcmV0X2kzMjsK
KyAgICAgIGNhc2UgMTkxIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfcmVpbnRl
cnByZXRfaTY0OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGluc3RyX2Jsb2Nr
JHByaW1lKHMsIF9lcykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGVzID0gX2VzOworICAg
IHZhciBtYXRjaCA9IHBlZWsocyk7CisgICAgaWYgKG1hdGNoKSB7CisgICAgICB2YXIgbWF0Y2gk
MSA9IG1hdGNoWzBdOworICAgICAgaWYgKG1hdGNoJDEgIT09IDUpIHsKKyAgICAgICAgaWYgKG1h
dGNoJDEgIT09IDExKSB7CisgICAgICAgICAgdmFyIHBvcyA9IHNbLyogcG9zICovMl1bMF07Cisg
ICAgICAgICAgdmFyIGUkcHJpbWUgPSBpbnN0cihzKTsKKyAgICAgICAgICBfZXMgPSAvKiA6OiAq
L1sKKyAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoZSRwcmltZSwgcmVnaW9uKHMsIHBvcywgcG9z
KSksCisgICAgICAgICAgICBlcworICAgICAgICAgIF07CisgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBl
czsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBlczsK
KyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gZXM7CisgICAgfQorICB9
OworfQorCitmdW5jdGlvbiBpbnN0cl9ibG9jayhzKSB7CisgIHJldHVybiBMaXN0LnJldihpbnN0
cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsKK30KKworZnVuY3Rpb24gJCRjb25zdChzKSB7
CisgIHZhciBjID0gYXQoaW5zdHJfYmxvY2ssIHMpOworICBleHBlY3QoMTEsIHMsICJFTkQgb3Bj
b2RlIGV4cGVjdGVkIik7CisgIHJldHVybiBjOworfQorCitmdW5jdGlvbiBpZChzKSB7CisgIHZh
ciBibyA9IHBlZWsocyk7CisgIHJldHVybiBDdXJyeS5fMihMaWIuT3B0aW9uWy8qIG1hcCAqLzFd
LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgaWYgKHBhcmFtID4gMTEgfHwgcGFy
YW0gPCAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1b
MF0sICJpbnZhbGlkIHNlY3Rpb24gaWQiKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgICAgICAgICAg
ICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogQ3VzdG9tU2Vj
dGlvbiAqLy04MDgwMTAyMjA7CisgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogVHlwZVNlY3Rpb24gKi84MzY1MDEwMzU7CisgICAgICAg
ICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogSW1w
b3J0U2VjdGlvbiAqLzY5NjUxNzM0NDsKKyAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGdW5jU2VjdGlvbiAqLzIwNTU1NjQ0OTsKKyAg
ICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAv
KiBUYWJsZVNlY3Rpb24gKi8xMDMxODY0MjE1OworICAgICAgICAgICAgICAgICAgY2FzZSA1IDog
CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE1lbW9yeVNlY3Rpb24gKi8tODQwMjAz
MDY4OworICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIC8qIEdsb2JhbFNlY3Rpb24gKi8tODcyMzEzMTgyOworICAgICAgICAgICAgICAgICAg
Y2FzZSA3IDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEV4cG9ydFNlY3Rpb24g
Ki8tNDQwNjc5NzU5OworICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIFN0YXJ0U2VjdGlvbiAqLzM5NTcyMDEzMTsKKyAgICAgICAgICAg
ICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBFbGVtU2Vj
dGlvbiAqLzQ0MDM4MDY2MjsKKyAgICAgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogQ29kZVNlY3Rpb24gKi8xMDIxMTMzODQ4OworICAgICAg
ICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBE
YXRhU2VjdGlvbiAqLzY2NDQ3NTQ3OworICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCBibyk7Cit9CisKK2Z1bmN0aW9u
IHNlY3Rpb25fd2l0aF9zaXplKHRhZywgZiwgJCRkZWZhdWx0LCBzKSB7CisgIHZhciBtYXRjaCA9
IGlkKHMpOworICBpZiAobWF0Y2ggJiYgQ2FtbF9vYmouY2FtbF9lcXVhbChtYXRjaFswXSwgdGFn
KSkgeworICAgIGd1YXJkKGdldCwgcyk7CisgICAgcmV0dXJuIHNpemVkKGYsIHMpOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAkJGRlZmF1bHQ7CisgIH0KK30KKworZnVuY3Rpb24gc2VjdGlv
bih0YWcsIGYsICQkZGVmYXVsdCwgcykgeworICByZXR1cm4gc2VjdGlvbl93aXRoX3NpemUodGFn
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHJldHVybiBmOworICAgICAgICAgICAgfSwg
JCRkZWZhdWx0LCBzKTsKK30KKworZnVuY3Rpb24gdHlwZV9zZWN0aW9uKHMpIHsKKyAgcmV0dXJu
IHNlY3Rpb24oLyogVHlwZVNlY3Rpb24gKi84MzY1MDEwMzUsIGZ1bmN0aW9uIChwYXJhbSkgewor
ICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmNfdHlwZSwgcGFyYW0pOworICAgICAgICAgICAg
fSwgLyogW10gKi8wLCBzKTsKK30KKworZnVuY3Rpb24gaW1wb3J0X2tpbmQocykgeworICB2YXIg
bWF0Y2ggPSBndWFyZChnZXQsIHMpOworICBpZiAobWF0Y2ggPiAzIHx8IG1hdGNoIDwgMCkgewor
ICAgIHJldHVybiBlcnJvcihzLCBzWy8qIHBvcyAqLzJdWzBdIC0gMSB8IDAsICJpbnZhbGlkIGlt
cG9ydCBraW5kIik7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChtYXRjaCkgeworICAgICAg
Y2FzZSAwIDogCisgICAgICAgICAgcmV0dXJuIC8qIEZ1bmNJbXBvcnQgKi9CbG9jay5fXygwLCBb
YXQoJCR2YXIsIHMpXSk7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogVGFi
bGVJbXBvcnQgKi9CbG9jay5fXygxLCBbdGFibGVfdHlwZShzKV0pOworICAgICAgY2FzZSAyIDog
CisgICAgICAgICAgcmV0dXJuIC8qIE1lbW9yeUltcG9ydCAqL0Jsb2NrLl9fKDIsIFttZW1vcnlf
dHlwZShzKV0pOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIC8qIEdsb2JhbElt
cG9ydCAqL0Jsb2NrLl9fKDMsIFtnbG9iYWxfdHlwZShzKV0pOworICAgICAgCisgICAgfQorICB9
Cit9CisKK2Z1bmN0aW9uICQkaW1wb3J0KHMpIHsKKyAgdmFyIG1vZHVsZV9uYW1lID0gc3RyaW5n
KHMpOworICB2YXIgaXRlbV9uYW1lID0gc3RyaW5nKHMpOworICB2YXIgaWtpbmQgPSBhdChpbXBv
cnRfa2luZCwgcyk7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogbW9kdWxl
X25hbWUgKi9tb2R1bGVfbmFtZSwKKyAgICAgICAgICAvKiBpdGVtX25hbWUgKi9pdGVtX25hbWUs
CisgICAgICAgICAgLyogaWtpbmQgKi9pa2luZAorICAgICAgICBdOworfQorCitmdW5jdGlvbiBp
bXBvcnRfc2VjdGlvbihzKSB7CisgIHJldHVybiBzZWN0aW9uKC8qIEltcG9ydFNlY3Rpb24gKi82
OTY1MTczNDQsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1
bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXQoJCRp
bXBvcnQsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAg
ICAgICAgIH0sIC8qIFtdICovMCwgcyk7Cit9CisKK2Z1bmN0aW9uIGZ1bmNfc2VjdGlvbihzKSB7
CisgIHJldHVybiBzZWN0aW9uKC8qIEZ1bmNTZWN0aW9uICovMjA1NTU2NDQ5LCBmdW5jdGlvbiAo
cGFyYW0pIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0KCQkdmFyLCBwYXJhbSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9LCBwYXJhbSk7CisgICAgICAgICAgICB9LCAvKiBbXSAqLzAsIHMp
OworfQorCitmdW5jdGlvbiB0YWJsZShzKSB7CisgIHZhciB0dHlwZSA9IHRhYmxlX3R5cGUocyk7
CisgIHJldHVybiAvKiByZWNvcmQgKi9bLyogdHR5cGUgKi90dHlwZV07Cit9CisKK2Z1bmN0aW9u
IHRhYmxlX3NlY3Rpb24ocykgeworICByZXR1cm4gc2VjdGlvbigvKiBUYWJsZVNlY3Rpb24gKi8x
MDMxODY0MjE1LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHZlYyhm
dW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0KHRh
YmxlLCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbSk7CisgICAgICAg
ICAgICB9LCAvKiBbXSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBtZW1vcnkocykgeworICB2YXIg
bXR5cGUgPSBtZW1vcnlfdHlwZShzKTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1svKiBtdHlwZSAq
L210eXBlXTsKK30KKworZnVuY3Rpb24gbWVtb3J5X3NlY3Rpb24ocykgeworICByZXR1cm4gc2Vj
dGlvbigvKiBNZW1vcnlTZWN0aW9uICovLTg0MDIwMzA2OCwgZnVuY3Rpb24gKHBhcmFtKSB7Cisg
ICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBhdChtZW1vcnksIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAgICAgIH0sIC8qIFtdICovMCwgcyk7Cit9CisKK2Z1
bmN0aW9uIGdsb2JhbChzKSB7CisgIHZhciBndHlwZSA9IGdsb2JhbF90eXBlKHMpOworICB2YXIg
dmFsdWUgPSAkJGNvbnN0KHMpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8q
IGd0eXBlICovZ3R5cGUsCisgICAgICAgICAgLyogdmFsdWUgKi92YWx1ZQorICAgICAgICBdOwor
fQorCitmdW5jdGlvbiBnbG9iYWxfc2VjdGlvbihzKSB7CisgIHJldHVybiBzZWN0aW9uKC8qIEds
b2JhbFNlY3Rpb24gKi8tODcyMzEzMTgyLCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAg
ICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGF0KGdsb2JhbCwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSwg
cGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKworZnVuY3Rpb24gZXhw
b3J0X2tpbmQocykgeworICB2YXIgbWF0Y2ggPSBndWFyZChnZXQsIHMpOworICBpZiAobWF0Y2gg
PiAzIHx8IG1hdGNoIDwgMCkgeworICAgIHJldHVybiBlcnJvcihzLCBzWy8qIHBvcyAqLzJdWzBd
IC0gMSB8IDAsICJpbnZhbGlkIGV4cG9ydCBraW5kIik7CisgIH0KKyAgZWxzZSB7CisgICAgc3dp
dGNoIChtYXRjaCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0dXJuIC8qIEZ1bmNF
eHBvcnQgKi8wOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIC8qIFRhYmxlRXhw
b3J0ICovMTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAvKiBNZW1vcnlFeHBv
cnQgKi8yOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJuIC8qIEdsb2JhbEV4cG9y
dCAqLzM7CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gJCRleHBvcnQocykgewor
ICB2YXIgbmFtZSA9IHN0cmluZyhzKTsKKyAgdmFyIGVraW5kID0gYXQoZXhwb3J0X2tpbmQsIHMp
OworICB2YXIgaXRlbSA9IGF0KCQkdmFyLCBzKTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAg
ICAgICAgICAvKiBuYW1lICovbmFtZSwKKyAgICAgICAgICAvKiBla2luZCAqL2VraW5kLAorICAg
ICAgICAgIC8qIGl0ZW0gKi9pdGVtCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGV4cG9ydF9z
ZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb24oLyogRXhwb3J0U2VjdGlvbiAqLy00NDA2Nzk3
NTksIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmN0aW9u
IChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXQoJCRleHBvcnQs
IHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAgICAg
IH0sIC8qIFtdICovMCwgcyk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0X3NlY3Rpb24ocykgeworICBy
ZXR1cm4gc2VjdGlvbigvKiBTdGFydFNlY3Rpb24gKi8zOTU3MjAxMzEsIGZ1bmN0aW9uIChwYXJh
bSkgeworICAgICAgICAgICAgICByZXR1cm4gLyogU29tZSAqL1thdCgkJHZhciwgcGFyYW0pXTsK
KyAgICAgICAgICAgIH0sIC8qIE5vbmUgKi8wLCBzKTsKK30KKworZnVuY3Rpb24gbG9jYWwocykg
eworICB2YXIgbiA9IGxlbjMyKHMpOworICB2YXIgdCA9IHZhbHVlX3R5cGUocyk7CisgIHJldHVy
biBDdXJyeS5fMihMaWIuTGlzdFsvKiBtYWtlICovMF0sIG4sIHQpOworfQorCitmdW5jdGlvbiBj
b2RlKF8sIHMpIHsKKyAgdmFyIGxvY2FscyA9IExpc3QuZmxhdHRlbih2ZWMobG9jYWwsIHMpKTsK
KyAgdmFyIGJvZHkgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsK
KyAgZXhwZWN0KDExLCBzLCAiRU5EIG9wY29kZSBleHBlY3RlZCIpOworICByZXR1cm4gLyogcmVj
b3JkICovWworICAgICAgICAgIC8qIGZ0eXBlICovU291cmNlLiRhdCRhdCgtMSwgU291cmNlLm5v
X3JlZ2lvbiksCisgICAgICAgICAgLyogbG9jYWxzICovbG9jYWxzLAorICAgICAgICAgIC8qIGJv
ZHkgKi9ib2R5CisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGNvZGVfc2VjdGlvbihzKSB7Cisg
IHJldHVybiBzZWN0aW9uKC8qIENvZGVTZWN0aW9uICovMTAyMTEzMzg0OCwgZnVuY3Rpb24gKHBh
cmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdChmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVkKGNvZGUsIHBhcmFt
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAgICAgIH0sIC8qIFtdICovMCwg
cyk7Cit9CisKK2Z1bmN0aW9uIHNlZ21lbnQoZGF0LCBzKSB7CisgIHZhciBpbmRleCA9IGF0KCQk
dmFyLCBzKTsKKyAgdmFyIG9mZnNldCA9ICQkY29uc3Qocyk7CisgIHZhciBpbml0ID0gQ3Vycnku
XzEoZGF0LCBzKTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBpbmRleCAq
L2luZGV4LAorICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAvKiBpbml0
ICovaW5pdAorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0YWJsZV9zZWdtZW50KHMpIHsKKyAg
cmV0dXJuIHNlZ21lbnQoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiB2
ZWMoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBh
dCgkJHZhciwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAg
ICAgICAgICAgfSwgcyk7Cit9CisKK2Z1bmN0aW9uIGVsZW1fc2VjdGlvbihzKSB7CisgIHJldHVy
biBzZWN0aW9uKC8qIEVsZW1TZWN0aW9uICovNDQwMzgwNjYyLCBmdW5jdGlvbiAocGFyYW0pIHsK
KyAgICAgICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGF0KHRhYmxlX3NlZ21lbnQsIHBhcmFtKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAgICAgIH0sIC8qIFtdICovMCwgcyk7
Cit9CisKK2Z1bmN0aW9uIG1lbW9yeV9zZWdtZW50KHMpIHsKKyAgcmV0dXJuIHNlZ21lbnQoc3Ry
aW5nLCBzKTsKK30KKworZnVuY3Rpb24gZGF0YV9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rp
b24oLyogRGF0YVNlY3Rpb24gKi82NjQ0NzU0NywgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAg
ICAgICAgIHJldHVybiB2ZWMoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBhdChtZW1vcnlfc2VnbWVudCwgcGFyYW0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKwor
ZnVuY3Rpb24gY3VzdG9tKHNpemUsIHMpIHsKKyAgdmFyIHN0YXJ0ID0gc1svKiBwb3MgKi8yXVsw
XTsKKyAgc3RyaW5nKHMpOworICB2YXIgcGFydGlhbF9hcmcgPSBzaXplIC0gKHNbLyogcG9zICov
Ml1bMF0gLSBzdGFydCB8IDApIHwgMDsKKyAgdmFyIHBhcnRpYWxfYXJnJDEgPSBmdW5jdGlvbiAo
cGFyYW0pIHsKKyAgICByZXR1cm4gc2tpcChwYXJ0aWFsX2FyZywgcGFyYW0pOworICB9OworICAo
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgIHJldHVybiBndWFyZChwYXJ0aWFsX2FyZyQxLCBw
YXJhbSk7CisgICAgICB9KHMpKTsKKyAgcmV0dXJuIC8qIHRydWUgKi8xOworfQorCitmdW5jdGlv
biBjdXN0b21fc2VjdGlvbihzKSB7CisgIHJldHVybiBzZWN0aW9uX3dpdGhfc2l6ZSgvKiBDdXN0
b21TZWN0aW9uICovLTgwODAxMDIyMCwgY3VzdG9tLCAvKiBmYWxzZSAqLzAsIHMpOworfQorCitm
dW5jdGlvbiBpdGVyYXRlKGYsIHMpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIGlmIChDdXJyeS5f
MShmLCBzKSkgeworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBtb2R1bGVfKHMpIHsK
KyAgdmFyIG1hZ2ljID0gdTMyKHMpOworICAkJHJlcXVpcmUoKyhtYWdpYyA9PT0gMTgzNjI3ODAx
NiksIHMsIDAsICJtYWdpYyBoZWFkZXIgbm90IGRldGVjdGVkIik7CisgIHZhciB2ZXJzaW9uID0g
dTMyKHMpOworICAkJHJlcXVpcmUoKyh2ZXJzaW9uID09PSBFbmNvZGUudmVyc2lvbiksIHMsIDQs
ICJ1bmtub3duIGJpbmFyeSB2ZXJzaW9uIik7CisgIGl0ZXJhdGUoY3VzdG9tX3NlY3Rpb24sIHMp
OworICB2YXIgdHlwZXMgPSB0eXBlX3NlY3Rpb24ocyk7CisgIGl0ZXJhdGUoY3VzdG9tX3NlY3Rp
b24sIHMpOworICB2YXIgaW1wb3J0cyA9IGltcG9ydF9zZWN0aW9uKHMpOworICBpdGVyYXRlKGN1
c3RvbV9zZWN0aW9uLCBzKTsKKyAgdmFyIGZ1bmNfdHlwZXMgPSBmdW5jX3NlY3Rpb24ocyk7Cisg
IGl0ZXJhdGUoY3VzdG9tX3NlY3Rpb24sIHMpOworICB2YXIgdGFibGVzID0gdGFibGVfc2VjdGlv
bihzKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciBtZW1vcmllcyA9IG1l
bW9yeV9zZWN0aW9uKHMpOworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKKyAgdmFyIGds
b2JhbHMgPSBnbG9iYWxfc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7
CisgIHZhciAkJGV4cG9ydHMgPSBleHBvcnRfc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0b21f
c2VjdGlvbiwgcyk7CisgIHZhciBzdGFydCA9IHN0YXJ0X3NlY3Rpb24ocyk7CisgIGl0ZXJhdGUo
Y3VzdG9tX3NlY3Rpb24sIHMpOworICB2YXIgZWxlbXMgPSBlbGVtX3NlY3Rpb24ocyk7CisgIGl0
ZXJhdGUoY3VzdG9tX3NlY3Rpb24sIHMpOworICB2YXIgZnVuY19ib2RpZXMgPSBjb2RlX3NlY3Rp
b24ocyk7CisgIGl0ZXJhdGUoY3VzdG9tX3NlY3Rpb24sIHMpOworICB2YXIgZGF0YSA9IGRhdGFf
c2VjdGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgICQkcmVxdWlyZSgr
KHNbLyogcG9zICovMl1bMF0gPT09IHNbLyogYnl0ZXMgKi8xXS5sZW5ndGgpLCBzLCBzWy8qIGJ5
dGVzICovMV0ubGVuZ3RoLCAianVuayBhZnRlciBsYXN0IHNlY3Rpb24iKTsKKyAgJCRyZXF1aXJl
KCsoTGlzdC5sZW5ndGgoZnVuY190eXBlcykgPT09IExpc3QubGVuZ3RoKGZ1bmNfYm9kaWVzKSks
IHMsIHNbLyogYnl0ZXMgKi8xXS5sZW5ndGgsICJmdW5jdGlvbiBhbmQgY29kZSBzZWN0aW9uIGhh
dmUgaW5jb25zaXN0ZW50IGxlbmd0aHMiKTsKKyAgdmFyIGZ1bmNzID0gTGlzdC5tYXAyKGZ1bmN0
aW9uICh0LCBmKSB7CisgICAgICAgIHZhciBpbml0ID0gZlsvKiBpdCAqLzFdOworICAgICAgICBy
ZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8q
IGZ0eXBlICovdCwKKyAgICAgICAgICAgICAgICAgICAgLyogbG9jYWxzICovaW5pdFsvKiBsb2Nh
bHMgKi8xXSwKKyAgICAgICAgICAgICAgICAgICAgLyogYm9keSAqL2luaXRbLyogYm9keSAqLzJd
CisgICAgICAgICAgICAgICAgICBdLCBmWy8qIGF0ICovMF0pOworICAgICAgfSwgZnVuY190eXBl
cywgZnVuY19ib2RpZXMpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIHR5
cGVzICovdHlwZXMsCisgICAgICAgICAgLyogZ2xvYmFscyAqL2dsb2JhbHMsCisgICAgICAgICAg
LyogdGFibGVzICovdGFibGVzLAorICAgICAgICAgIC8qIG1lbW9yaWVzICovbWVtb3JpZXMsCisg
ICAgICAgICAgLyogZnVuY3MgKi9mdW5jcywKKyAgICAgICAgICAvKiBzdGFydCAqL3N0YXJ0LAor
ICAgICAgICAgIC8qIGVsZW1zICovZWxlbXMsCisgICAgICAgICAgLyogZGF0YSAqL2RhdGEsCisg
ICAgICAgICAgLyogaW1wb3J0cyAqL2ltcG9ydHMsCisgICAgICAgICAgLyogZXhwb3J0cyAqLyQk
ZXhwb3J0cworICAgICAgICBdOworfQorCitmdW5jdGlvbiBkZWNvZGUobmFtZSwgYnMpIHsKKyAg
cmV0dXJuIGF0KG1vZHVsZV8sIHN0cmVhbShuYW1lLCBicykpOworfQorCitleHBvcnRzLkNvZGUg
ICA9IENvZGUkMTsKK2V4cG9ydHMuZGVjb2RlID0gZGVjb2RlOworLyogQ29kZSBOb3QgYSBwdXJl
IG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGRlY29kZS5qcyAvLy8vLy8vLworwqAgwqAgcmV0
dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydlbmNvZGUnXSA9IGZ1bmN0aW9u
KCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGVuY29kZS5q
cyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwg
UExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBGMzIgICAgICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjMyIik7Cit2YXIgRjY0ICAgICAgICAgICAgICAgICAg
ICAgPSByZXF1aXJlKCIuL2Y2NCIpOwordmFyIExpYiAgICAgICAgICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9saWIiKTsKK3ZhciBDaGFyICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9jaGFyIik7Cit2YXIgTGlzdCAgICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvbGlzdCIpOwordmFyIEJ5dGVzICAgICAgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2J5dGVzIik7Cit2YXIgQ3Vycnkg
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsK
K3ZhciAkJEVycm9yICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZXJyb3IiKTsKK3ZhciBC
dWZmZXIgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9idWZm
ZXIiKTsKK3ZhciBTb3VyY2UgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc291cmNlIik7
Cit2YXIgQ2FtbF9vYmogICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvY2FtbF9vYmoiKTsKK3ZhciBDYW1sX2ludDY0ICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9jYW1sX2ludDY0Iik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMi
KTsKKwordmFyIENvZGUgPSAkJEVycm9yLk1ha2UoLyogbW9kdWxlICovW10pOworCit2YXIgQ29k
ZSQxID0gQ29kZVsvKiBFcnJvciAqLzBdOworCitmdW5jdGlvbiBzdHJlYW0oKSB7CisgIHJldHVy
biAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogYnVmICovQnVmZmVyLmNyZWF0ZSg4MTkyKSwK
KyAgICAgICAgICAvKiBwYXRjaGVzICovWy8qIFtdICovMF0KKyAgICAgICAgXTsKK30KKworZnVu
Y3Rpb24gcGF0Y2gocywgcG9zLCBiKSB7CisgIHNbLyogcGF0Y2hlcyAqLzFdWzBdID0gLyogOjog
Ki9bCisgICAgLyogdHVwbGUgKi9bCisgICAgICBwb3MsCisgICAgICBiCisgICAgXSwKKyAgICBz
Wy8qIHBhdGNoZXMgKi8xXVswXQorICBdOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5j
dGlvbiBlbmNvZGUobSkgeworICB2YXIgcyA9IHN0cmVhbSgvKiAoKSAqLzApOworICB2YXIgdTgg
PSBmdW5jdGlvbiAoaSkgeworICAgIHZhciBiID0gQ2hhci5jaHIoaSAmIDI1NSk7CisgICAgcmV0
dXJuIEJ1ZmZlci5hZGRfY2hhcihzWy8qIGJ1ZiAqLzBdLCBiKTsKKyAgfTsKKyAgdmFyIHUxNiA9
IGZ1bmN0aW9uIChpKSB7CisgICAgdTgoaSAmIDI1NSk7CisgICAgcmV0dXJuIHU4KChpID4+PiA4
KSk7CisgIH07CisgIHZhciB1MzIgPSBmdW5jdGlvbiAoaSkgeworICAgIHUxNihpICYgNjU1MzUp
OworICAgIHJldHVybiB1MTYoKGkgPj4gMTYpKTsKKyAgfTsKKyAgdmFyIHZ1NjQgPSBmdW5jdGlv
biAoX2kpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgaSA9IF9pOworICAgICAgdmFy
IGIgPSBpWzFdICYgLyogbG8gKi8xMjcgfCAwOworICAgICAgaWYgKENhbWxfaW50NjQubGUoLyog
aW50NjQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgLyogbG8g
Ki8wCisgICAgICAgICAgICBdLCBpKSAmJiBDYW1sX2ludDY0Lmx0KGksIC8qIGludDY0ICovWwor
ICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAgIC8qIGxvICovMTI4CisgICAg
ICAgICAgICBdKSkgeworICAgICAgICByZXR1cm4gdTgoYik7CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgdTgoYiB8IDEyOCk7CisgICAgICAgIF9pID0gQ2FtbF9pbnQ2NC5sc3JfKGks
IDcpOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgIH07CisgIH07
CisgIHZhciB2czY0ID0gZnVuY3Rpb24gKF9pKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAg
dmFyIGkgPSBfaTsKKyAgICAgIHZhciBiID0gaVsxXSAmIC8qIGxvICovMTI3IHwgMDsKKyAgICAg
IGlmIChDYW1sX2ludDY0LmxlKC8qIGludDY0ICovWworICAgICAgICAgICAgICAvKiBoaSAqLy0x
LAorICAgICAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyMzIKKyAgICAgICAgICAgIF0sIGkpICYm
IENhbWxfaW50NjQubHQoaSwgLyogaW50NjQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICovMCwK
KyAgICAgICAgICAgICAgLyogbG8gKi82NAorICAgICAgICAgICAgXSkpIHsKKyAgICAgICAgcmV0
dXJuIHU4KGIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHU4KGIgfCAxMjgpOwor
ICAgICAgICBfaSA9IENhbWxfaW50NjQuYXNyXyhpLCA3KTsKKyAgICAgICAgY29udGludWUgOwor
ICAgICAgICAKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgdnUzMiA9IGZ1bmN0aW9uIChp
KSB7CisgICAgcmV0dXJuIHZ1NjQoQ2FtbF9pbnQ2NC5hbmRfKENhbWxfaW50NjQub2ZfaW50MzIo
aSksIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAg
ICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI5NQorICAgICAgICAgICAgICAgICAgXSkpOwor
ICB9OworICB2YXIgbGVuID0gZnVuY3Rpb24gKGkpIHsKKyAgICBpZiAoaSAhPT0gaSkgeworICAg
ICAgQ3VycnkuXzIoQ29kZVsvKiBlcnJvciAqLzJdLCBTb3VyY2Uubm9fcmVnaW9uLCAiY2Fubm90
IGVuY29kZSBsZW5ndGggd2l0aCBtb3JlIHRoYW4gMzIgYml0Iik7CisgICAgfQorICAgIHJldHVy
biB2dTMyKGkpOworICB9OworICB2YXIgYm9vbCA9IGZ1bmN0aW9uIChiKSB7CisgICAgdmFyIGkg
PSBiID8gMSA6IDA7CisgICAgcmV0dXJuIHZ1NjQoQ2FtbF9pbnQ2NC5hbmRfKENhbWxfaW50NjQu
b2ZfaW50MzIoaSksIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgICAvKiBoaSAqLzAs
CisgICAgICAgICAgICAgICAgICAgIC8qIGxvICovMQorICAgICAgICAgICAgICAgICAgXSkpOwor
ICB9OworICB2YXIgc3RyaW5nID0gZnVuY3Rpb24gKGJzKSB7CisgICAgbGVuKGJzLmxlbmd0aCk7
CisgICAgcmV0dXJuIEJ1ZmZlci5hZGRfc3RyaW5nKHNbLyogYnVmICovMF0sIGJzKTsKKyAgfTsK
KyAgdmFyIHZlYyA9IGZ1bmN0aW9uIChmLCB4cykgeworICAgIGxlbihMaXN0Lmxlbmd0aCh4cykp
OworICAgIHJldHVybiBMaXN0Lml0ZXIoZiwgeHMpOworICB9OworICB2YXIgZ2FwMzIgPSBmdW5j
dGlvbiAoKSB7CisgICAgdmFyIHAgPSBCdWZmZXIubGVuZ3RoKHNbLyogYnVmICovMF0pOworICAg
IHUzMigwKTsKKyAgICB1OCgwKTsKKyAgICByZXR1cm4gcDsKKyAgfTsKKyAgdmFyIHBhdGNoX2dh
cDMyID0gZnVuY3Rpb24gKHAsIG4pIHsKKyAgICBpZiAobiA+IDI2ODQzNTQ1NSkgeworICAgICAg
dGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1
cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21l
L3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5t
bCIsCisgICAgICAgICAgICAgIDgwLAorICAgICAgICAgICAgICA2CisgICAgICAgICAgICBdCisg
ICAgICAgICAgXTsKKyAgICB9CisgICAgcGF0Y2gocywgcCwgQ2hhci5jaHIoKG4gfCAxMjgpICYg
MjU1KSk7CisgICAgcGF0Y2gocywgcCArIDEgfCAwLCBDaGFyLmNocigoKG4gPj4+IDcpIHwgMTI4
KSAmIDI1NSkpOworICAgIHBhdGNoKHMsIHAgKyAyIHwgMCwgQ2hhci5jaHIoKChuID4+PiAxNCkg
fCAxMjgpICYgMjU1KSk7CisgICAgcGF0Y2gocywgcCArIDMgfCAwLCBDaGFyLmNocigoKG4gPj4+
IDIxKSB8IDEyOCkgJiAyNTUpKTsKKyAgICByZXR1cm4gcGF0Y2gocywgcCArIDQgfCAwLCBDaGFy
LmNocigobiA+Pj4gMjgpICYgMjU1KSk7CisgIH07CisgIHZhciB2YWx1ZV90eXBlID0gZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgc3dpdGNoIChwYXJhbSkgeworICAgICAgY2FzZSAwIDogCisgICAg
ICAgICAgcmV0dXJuIHZzNjQoLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgLyog
aGkgKi8tMSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyOTUKKyAgICAg
ICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gdnM2
NCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBoaSAqLy0xLAorICAgICAg
ICAgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI5NAorICAgICAgICAgICAgICAgICAgICBd
KTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiB2czY0KC8qIGludDY0ICovWwor
ICAgICAgICAgICAgICAgICAgICAgIC8qIGhpICovLTEsCisgICAgICAgICAgICAgICAgICAgICAg
LyogbG8gKi80Mjk0OTY3MjkzCisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAz
IDogCisgICAgICAgICAgcmV0dXJuIHZzNjQoLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgLyogaGkgKi8tMSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBsbyAqLzQyOTQ5Njcy
OTIKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAKKyAgICB9CisgIH07CisgIHZhciBz
dGFja190eXBlID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICBp
ZiAocGFyYW1bMV0pIHsKKyAgICAgICAgcmV0dXJuIEN1cnJ5Ll8yKENvZGVbLyogZXJyb3IgKi8y
XSwgU291cmNlLm5vX3JlZ2lvbiwgImNhbm5vdCBlbmNvZGUgc3RhY2sgdHlwZSB3aXRoIGFyaXR5
ID4gMSAoeWV0KSIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiB2YWx1
ZV90eXBlKHBhcmFtWzBdKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gdnM2NCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIGhpICovLTEsCisgICAg
ICAgICAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyMzIKKyAgICAgICAgICAgICAgICBdKTsKKyAg
ICB9CisgIH07CisgIHZhciBmdW5jX3R5cGUgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICB2czY0
KC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovLTEsCisgICAgICAgICAgLyogbG8gKi80
Mjk0OTY3MjY0CisgICAgICAgIF0pOworICAgIHZlYyh2YWx1ZV90eXBlLCBwYXJhbVswXSk7Cisg
ICAgcmV0dXJuIHZlYyh2YWx1ZV90eXBlLCBwYXJhbVsxXSk7CisgIH07CisgIHZhciBsaW1pdHMg
PSBmdW5jdGlvbiAodnUsIHBhcmFtKSB7CisgICAgdmFyIG1heCA9IHBhcmFtWy8qIG1heCAqLzFd
OworICAgIGJvb2woKyhtYXggIT09IC8qIE5vbmUgKi8wKSk7CisgICAgQ3VycnkuXzEodnUsIHBh
cmFtWy8qIG1pbiAqLzBdKTsKKyAgICByZXR1cm4gQ3VycnkuXzIoTGliLk9wdGlvblsvKiBhcHAg
Ki8yXSwgdnUsIG1heCk7CisgIH07CisgIHZhciB0YWJsZV90eXBlID0gZnVuY3Rpb24gKHBhcmFt
KSB7CisgICAgdnM2NCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAvKiBoaSAqLy0xLAorICAgICAg
ICAgIC8qIGxvICovNDI5NDk2NzI4MAorICAgICAgICBdKTsKKyAgICByZXR1cm4gbGltaXRzKHZ1
MzIsIHBhcmFtWzBdKTsKKyAgfTsKKyAgdmFyIG1lbW9yeV90eXBlID0gZnVuY3Rpb24gKHBhcmFt
KSB7CisgICAgcmV0dXJuIGxpbWl0cyh2dTMyLCBwYXJhbVswXSk7CisgIH07CisgIHZhciBnbG9i
YWxfdHlwZSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHZhbHVlX3R5cGUocGFyYW1bMF0pOwor
ICAgIHZhciBwYXJhbSQxID0gcGFyYW1bMV07CisgICAgaWYgKHBhcmFtJDEgIT09IDApIHsKKyAg
ICAgIHJldHVybiB1OCgxKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gdTgoMCk7
CisgICAgfQorICB9OworICB2YXIgbWVtb3AgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICB2dTMy
KHBhcmFtWy8qIGFsaWduICovMV0pOworICAgIHJldHVybiB2dTMyKHBhcmFtWy8qIG9mZnNldCAq
LzJdKTsKKyAgfTsKKyAgdmFyICQkdmFyID0gZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1cm4gdnUz
Mih4Wy8qIGl0ICovMV0pOworICB9OworICB2YXIgaW5zdHIgPSBmdW5jdGlvbiAoZSkgeworICAg
IHZhciBtYXRjaCA9IGVbLyogaXQgKi8xXTsKKyAgICBpZiAodHlwZW9mIG1hdGNoID09PSAibnVt
YmVyIikgeworICAgICAgc3dpdGNoIChtYXRjaCkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICAgIHJldHVybiB1OCgwKTsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICByZXR1
cm4gdTgoMSk7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgcmV0dXJuIHU4KDE1KTsK
KyAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICByZXR1cm4gdTgoMjYpOworICAgICAgICBj
YXNlIDQgOiAKKyAgICAgICAgICAgIHJldHVybiB1OCgyNyk7CisgICAgICAgIGNhc2UgNSA6IAor
ICAgICAgICAgICAgdTgoNjMpOworICAgICAgICAgICAgcmV0dXJuIHU4KDApOworICAgICAgICBj
YXNlIDYgOiAKKyAgICAgICAgICAgIHU4KDY0KTsKKyAgICAgICAgICAgIHJldHVybiB1OCgwKTsK
KyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoIChtYXRj
aC50YWcgfCAwKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgdTgoMik7CisgICAg
ICAgICAgICBzdGFja190eXBlKG1hdGNoWzBdKTsKKyAgICAgICAgICAgIExpc3QuaXRlcihpbnN0
ciwgbWF0Y2hbMV0pOworICAgICAgICAgICAgcmV0dXJuIHU4KDExKTsKKyAgICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgICB1OCgzKTsKKyAgICAgICAgICAgIHN0YWNrX3R5cGUobWF0Y2hbMF0p
OworICAgICAgICAgICAgTGlzdC5pdGVyKGluc3RyLCBtYXRjaFsxXSk7CisgICAgICAgICAgICBy
ZXR1cm4gdTgoMTEpOworICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIHZhciBlczIgPSBt
YXRjaFsyXTsKKyAgICAgICAgICAgIHU4KDQpOworICAgICAgICAgICAgc3RhY2tfdHlwZShtYXRj
aFswXSk7CisgICAgICAgICAgICBMaXN0Lml0ZXIoaW5zdHIsIG1hdGNoWzFdKTsKKyAgICAgICAg
ICAgIGlmIChlczIgIT09IC8qIFtdICovMCkgeworICAgICAgICAgICAgICB1OCg1KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIExpc3QuaXRlcihpbnN0ciwgZXMyKTsKKyAgICAgICAgICAg
IHJldHVybiB1OCgxMSk7CisgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgdTgoMTIpOwor
ICAgICAgICAgICAgcmV0dXJuIHZ1MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgIGNh
c2UgNCA6IAorICAgICAgICAgICAgdTgoMTMpOworICAgICAgICAgICAgcmV0dXJuIHZ1MzIobWF0
Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgdTgoMTQp
OworICAgICAgICAgICAgdmVjKCQkdmFyLCBtYXRjaFswXSk7CisgICAgICAgICAgICByZXR1cm4g
dnUzMihtYXRjaFsxXVsvKiBpdCAqLzFdKTsKKyAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAg
ICB1OCgxNik7CisgICAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBpdCAqLzFdKTsK
KyAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICB1OCgxNyk7CisgICAgICAgICAgICB2dTMy
KG1hdGNoWzBdWy8qIGl0ICovMV0pOworICAgICAgICAgICAgcmV0dXJuIHU4KDApOworICAgICAg
ICBjYXNlIDggOiAKKyAgICAgICAgICAgIHU4KDMyKTsKKyAgICAgICAgICAgIHJldHVybiB2dTMy
KG1hdGNoWzBdWy8qIGl0ICovMV0pOworICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgIHU4
KDMzKTsKKyAgICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNoWzBdWy8qIGl0ICovMV0pOworICAg
ICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICB1OCgzNCk7CisgICAgICAgICAgICByZXR1cm4g
dnUzMihtYXRjaFswXVsvKiBpdCAqLzFdKTsKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAg
ICAgdTgoMzUpOworICAgICAgICAgICAgcmV0dXJuIHZ1MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7
CisgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgIHU4KDM2KTsKKyAgICAgICAgICAgIHJl
dHVybiB2dTMyKG1hdGNoWzBdWy8qIGl0ICovMV0pOworICAgICAgICBjYXNlIDEzIDogCisgICAg
ICAgICAgICB2YXIgbW8gPSBtYXRjaFswXTsKKyAgICAgICAgICAgIHN3aXRjaCAobW9bLyogdHkg
Ki8wXSkgeworICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgIHZhciBt
YXRjaCQxID0gbW9bLyogc3ogKi8zXTsKKyAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQxKSB7
CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQyID0gbWF0Y2gkMVswXTsKKyAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQyWzBdKSB7CisgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQyWzFdICE9PSAw
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTgoNDUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdTgoNDQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1v
cChtbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDJbMV0gIT09
IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCg0Nyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1OCg0Nik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1l
bW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9m
YWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2Fz
bS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxODIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgdTgoNDApOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgdmFyIG1hdGNo
JDMgPSBtb1svKiBzeiAqLzNdOworICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDQgPSBtYXRjaCQzWzBdOworICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKG1hdGNoJDRbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNl
IDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDRbMV0gIT09IDApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCg0OSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1OCg0OCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1v
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkNFsxXSAhPT0gMCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4KDUxKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHU4KDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3Ao
bW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQ0WzFdICE9PSAw
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTgoNTMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdTgoNTIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1v
cChtbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHU4KDQxKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAg
ICAgIGlmIChtb1svKiBzeiAqLzNdKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2Zh
aWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJw
cmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA4CisgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdTgo
NDIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6
IAorICAgICAgICAgICAgICAgICAgaWYgKG1vWy8qIHN6ICovM10pIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJn
L3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICB1OCg0Myk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcCht
byk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAxNCA6IAorICAgICAgICAgICAgdmFyIG1vJDEgPSBtYXRjaFswXTsKKyAgICAgICAgICAgIHN3
aXRjaCAobW8kMVsvKiB0eSAqLzBdKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgICAgdmFyIG1hdGNoJDUgPSBtbyQxWy8qIHN6ICovM107CisgICAgICAgICAgICAg
ICAgICBpZiAobWF0Y2gkNSkgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDVb
MF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgdTgoNTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3Ao
bW8kMSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHU4KDU5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9w
KG1vJDEpOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9j
YWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xp
Yi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHU4KDU0
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vJDEpOworICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMSA6
IAorICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDYgPSBtbyQxWy8qIHN6ICovM107CisgICAg
ICAgICAgICAgICAgICBpZiAobWF0Y2gkNikgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KG1hdGNoJDZbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgdTgoNjApOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWVtb3AobW8kMSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHU4KDYxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG1lbW9wKG1vJDEpOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgICB1OCg2Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtZW1vcChtbyQxKTsKKyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIHU4KDU1KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1l
bW9wKG1vJDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgaWYgKG1vJDFbLyog
c3ogKi8zXSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3Iv
bG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9q
c2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNTgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1OCg1Nik7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyQxKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAg
ICAgICAgICAgIGlmIChtbyQxWy8qIHN6ICovM10pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3cgWworICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5h
c3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3Bl
Yy9pbnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgdTgoNTcpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7Cisg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxNSA6
IAorICAgICAgICAgICAgdmFyIG1hdGNoJDcgPSBtYXRjaFswXVsvKiBpdCAqLzFdOworICAgICAg
ICAgICAgc3dpdGNoIChtYXRjaCQ3LnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDog
CisgICAgICAgICAgICAgICAgICB1OCg2NSk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdnM2
NChDYW1sX2ludDY0Lm9mX2ludDMyKG1hdGNoJDdbMF0pKTsKKyAgICAgICAgICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgICAgICAgICB1OCg2Nik7CisgICAgICAgICAgICAgICAgICByZXR1cm4g
dnM2NChtYXRjaCQ3WzBdKTsKKyAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAg
ICAgICB1OCg2Nyk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdTMyKEN1cnJ5Ll8xKEYzMi50
b19iaXRzLCBtYXRjaCQ3WzBdKSk7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAg
ICAgICAgICAgdTgoNjgpOworICAgICAgICAgICAgICAgICAgdmFyIGkgPSBDdXJyeS5fMShGNjQu
dG9fYml0cywgbWF0Y2gkN1swXSk7CisgICAgICAgICAgICAgICAgICB1MzIoaVsxXSAmIC8qIGxv
ICovNDI5NDk2NzI5NSB8IDApOworICAgICAgICAgICAgICAgICAgcmV0dXJuIHUzMihDYW1sX2lu
dDY0LmFzcl8oaSwgMzIpWzFdIHwgMCk7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICAgIHN3aXRj
aCAobWF0Y2hbMF0udGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCg2OSk7CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHU4KDgwKTsKKyAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAg
ICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jl
cmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAy
NAorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUs
CisgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICIv
dXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVp
bGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIyMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgMjQKKyAgICAgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICB2YXIg
bWF0Y2gkOCA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ4LnRhZyB8IDAp
IHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1h
dGNoJDhbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoNzApOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg3MSk7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDcyKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdTgoNzMpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCg3NCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDc1KTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoNzYpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCg3Nyk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDc4KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA5IDogCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoNzkpOworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkOFswXSkg
eworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCg4MSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDgyKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoODMpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg4NCk7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDg1KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoODYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDYg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg4Nyk7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDg4KTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoODkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCg5MCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgMiA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ4WzBdKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDkxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdTgoOTIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg5Myk7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDk0KTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
OTUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCg5Nik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAor
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ4WzBdKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDk3KTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdTgoOTgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCg5OSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwMCk7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwMSk7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHU4KDEwMik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIHZhciBt
YXRjaCQ5ID0gbWF0Y2hbMF07CisgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDkudGFnIHwgMCkg
eworICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0
Y2gkOVswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxMDMpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMDQpOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMDUpOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgIHN3
aXRjaCAobWF0Y2gkOVswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjEpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjIpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1
OCgxMjMpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAobWF0Y2gkOVswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDApOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzkp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCgxNDEpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDIpOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDMpOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgx
NDQpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCgxNDUpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDMgOiAK
KyAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkOVswXSkgeworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTQpOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCgxNTMpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxNTUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTYpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTcp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCgxNTgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTkpOworICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE5IDog
CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSBtYXRjaFswXTsKKyAgICAgICAgICAgIHN3aXRj
aCAobWF0Y2gkMTAudGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTBbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTA2KTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
MTA3KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdTgoMTA4KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTA5KTsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTEwKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dTgoMTExKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdTgoMTEyKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA3IDogCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTEzKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTE0KTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdTgoMTE1KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHU4KDExNik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTcpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTE4
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDExOSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjApOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTBbMF0pIHsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTI0KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoMTI1KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTI2KTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTI3
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoMTI4KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTI5KTsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA2IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTMwKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
MTMxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdTgoMTMyKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA5IDogCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTMzKTsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSAxMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEzNCk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxMzUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTM2KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMyA6
IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEzNyk7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzgp
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAg
IHN3aXRjaCAobWF0Y2gkMTBbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDogCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTQ2KTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTQ3KTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdTgoMTQ4KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTQ5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTUwKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTUxKTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTUyKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDEwWzBdKSB7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2MCk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHU4KDE2MSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDE2Mik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2Myk7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2NCk7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHU4KDE2NSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHU4KDE2Nik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjAgOiAKKyAg
ICAgICAgICAgIHZhciBtYXRjaCQxMSA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dpdGNoICht
YXRjaCQxMS50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChtYXRjaCQxMVswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIv
X2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzMzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jl
cmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzMyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2Nyk7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2OCk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHU4KDE2OSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDE3MCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE3MSk7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE4OCk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgc3dp
dGNoIChtYXRjaCQxMVswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNzIpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNzMpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93
YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTc0KTsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTc1KTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
MTc2KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdTgoMTc3KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA3IDogCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTg5KTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDExWzBdKSB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDE3OCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE3OSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE4MCk7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE4
MSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21l
L3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5t
bCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1MywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODIpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxOTAp
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAg
IHN3aXRjaCAobWF0Y2gkMTFbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDogCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTgzKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTg0KTsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdTgoMTg1KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTg2KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTg3KTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFp
bHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVj
L2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMzYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDE5MSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgfQorICAgIH0K
KyAgfTsKKyAgdmFyICQkY29uc3QgPSBmdW5jdGlvbiAoYykgeworICAgIExpc3QuaXRlcihpbnN0
ciwgY1svKiBpdCAqLzFdKTsKKyAgICByZXR1cm4gdTgoMTEpOworICB9OworICB2YXIgc2VjdGlv
biA9IGZ1bmN0aW9uIChpZCwgZiwgeCwgbmVlZGVkKSB7CisgICAgaWYgKG5lZWRlZCkgeworICAg
ICAgdTgoaWQpOworICAgICAgdmFyIGcgPSBnYXAzMigvKiAoKSAqLzApOworICAgICAgdmFyIHAg
PSBCdWZmZXIubGVuZ3RoKHNbLyogYnVmICovMF0pOworICAgICAgQ3VycnkuXzEoZiwgeCk7Cisg
ICAgICByZXR1cm4gcGF0Y2hfZ2FwMzIoZywgQnVmZmVyLmxlbmd0aChzWy8qIGJ1ZiAqLzBdKSAt
IHAgfCAwKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH07
CisgIHZhciB0eXBlX3NlY3Rpb24gPSBmdW5jdGlvbiAodHMpIHsKKyAgICByZXR1cm4gc2VjdGlv
bigxLCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmNf
dHlwZSwgcGFyYW0pOworICAgICAgICAgICAgICB9LCB0cywgKyh0cyAhPT0gLyogW10gKi8wKSk7
CisgIH07CisgIHZhciAkJGltcG9ydCA9IGZ1bmN0aW9uIChpbSkgeworICAgIHZhciBtYXRjaCA9
IGltWy8qIGl0ICovMV07CisgICAgc3RyaW5nKG1hdGNoWy8qIG1vZHVsZV9uYW1lICovMF0pOwor
ICAgIHN0cmluZyhtYXRjaFsvKiBpdGVtX25hbWUgKi8xXSk7CisgICAgdmFyIGsgPSBtYXRjaFsv
KiBpa2luZCAqLzJdOworICAgIHZhciBtYXRjaCQxID0ga1svKiBpdCAqLzFdOworICAgIHN3aXRj
aCAobWF0Y2gkMS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICB1OCgwKTsK
KyAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaCQxWzBdWy8qIGl0ICovMV0pOworICAgICAgY2Fz
ZSAxIDogCisgICAgICAgICAgdTgoMSk7CisgICAgICAgICAgcmV0dXJuIHRhYmxlX3R5cGUobWF0
Y2gkMVswXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICB1OCgyKTsKKyAgICAgICAgICBy
ZXR1cm4gbWVtb3J5X3R5cGUobWF0Y2gkMVswXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAg
ICB1OCgzKTsKKyAgICAgICAgICByZXR1cm4gZ2xvYmFsX3R5cGUobWF0Y2gkMVswXSk7CisgICAg
ICAKKyAgICB9CisgIH07CisgIHZhciBpbXBvcnRfc2VjdGlvbiA9IGZ1bmN0aW9uIChpbXMpIHsK
KyAgICByZXR1cm4gc2VjdGlvbigyLCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdmVjKCQkaW1wb3J0LCBwYXJhbSk7CisgICAgICAgICAgICAgIH0sIGltcywgKyhp
bXMgIT09IC8qIFtdICovMCkpOworICB9OworICB2YXIgZnVuYyA9IGZ1bmN0aW9uIChmKSB7Cisg
ICAgcmV0dXJuIHZ1MzIoZlsvKiBpdCAqLzFdWy8qIGZ0eXBlICovMF1bLyogaXQgKi8xXSk7Cisg
IH07CisgIHZhciBmdW5jX3NlY3Rpb24gPSBmdW5jdGlvbiAoZnMpIHsKKyAgICByZXR1cm4gc2Vj
dGlvbigzLCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1
bmMsIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgZnMsICsoZnMgIT09IC8qIFtdICovMCkpOwor
ICB9OworICB2YXIgdGFibGUgPSBmdW5jdGlvbiAodGFiKSB7CisgICAgdmFyIG1hdGNoID0gdGFi
Wy8qIGl0ICovMV07CisgICAgcmV0dXJuIHRhYmxlX3R5cGUobWF0Y2hbLyogdHR5cGUgKi8wXSk7
CisgIH07CisgIHZhciB0YWJsZV9zZWN0aW9uID0gZnVuY3Rpb24gKHRhYnMpIHsKKyAgICByZXR1
cm4gc2VjdGlvbig0LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dmVjKHRhYmxlLCBwYXJhbSk7CisgICAgICAgICAgICAgIH0sIHRhYnMsICsodGFicyAhPT0gLyog
W10gKi8wKSk7CisgIH07CisgIHZhciBtZW1vcnkgPSBmdW5jdGlvbiAobWVtKSB7CisgICAgdmFy
IG1hdGNoID0gbWVtWy8qIGl0ICovMV07CisgICAgcmV0dXJuIG1lbW9yeV90eXBlKG1hdGNoWy8q
IG10eXBlICovMF0pOworICB9OworICB2YXIgbWVtb3J5X3NlY3Rpb24gPSBmdW5jdGlvbiAobWVt
cykgeworICAgIHJldHVybiBzZWN0aW9uKDUsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAg
ICAgICAgIHJldHVybiB2ZWMobWVtb3J5LCBwYXJhbSk7CisgICAgICAgICAgICAgIH0sIG1lbXMs
ICsobWVtcyAhPT0gLyogW10gKi8wKSk7CisgIH07CisgIHZhciBnbG9iYWwgPSBmdW5jdGlvbiAo
ZykgeworICAgIHZhciBtYXRjaCA9IGdbLyogaXQgKi8xXTsKKyAgICBnbG9iYWxfdHlwZShtYXRj
aFsvKiBndHlwZSAqLzBdKTsKKyAgICByZXR1cm4gJCRjb25zdChtYXRjaFsvKiB2YWx1ZSAqLzFd
KTsKKyAgfTsKKyAgdmFyIGdsb2JhbF9zZWN0aW9uID0gZnVuY3Rpb24gKGdzKSB7CisgICAgcmV0
dXJuIHNlY3Rpb24oNiwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHZlYyhnbG9iYWwsIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgZ3MsICsoZ3MgIT09IC8qIFtd
ICovMCkpOworICB9OworICB2YXIgZXhwb3J0X2tpbmQgPSBmdW5jdGlvbiAoaykgeworICAgIHZh
ciBtYXRjaCA9IGtbLyogaXQgKi8xXTsKKyAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgICBjYXNl
IDAgOiAKKyAgICAgICAgICByZXR1cm4gdTgoMCk7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAg
ICByZXR1cm4gdTgoMSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gdTgoMik7
CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gdTgoMyk7CisgICAgICAKKyAgICB9
CisgIH07CisgIHZhciAkJGV4cG9ydCA9IGZ1bmN0aW9uIChleCkgeworICAgIHZhciBtYXRjaCA9
IGV4Wy8qIGl0ICovMV07CisgICAgc3RyaW5nKG1hdGNoWy8qIG5hbWUgKi8wXSk7CisgICAgZXhw
b3J0X2tpbmQobWF0Y2hbLyogZWtpbmQgKi8xXSk7CisgICAgcmV0dXJuIHZ1MzIobWF0Y2hbLyog
aXRlbSAqLzJdWy8qIGl0ICovMV0pOworICB9OworICB2YXIgZXhwb3J0X3NlY3Rpb24gPSBmdW5j
dGlvbiAoZXhzKSB7CisgICAgcmV0dXJuIHNlY3Rpb24oNywgZnVuY3Rpb24gKHBhcmFtKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHZlYygkJGV4cG9ydCwgcGFyYW0pOworICAgICAgICAgICAg
ICB9LCBleHMsICsoZXhzICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIHN0YXJ0X3NlY3Rp
b24gPSBmdW5jdGlvbiAoeG8pIHsKKyAgICByZXR1cm4gc2VjdGlvbig4LCBmdW5jdGlvbiAocGFy
YW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzIoTGliLk9wdGlvblsvKiBhcHAg
Ki8yXSwgJCR2YXIsIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgeG8sICsoeG8gIT09IC8qIE5v
bmUgKi8wKSk7CisgIH07CisgIHZhciBjb21wcmVzcyA9IGZ1bmN0aW9uICh0cykgeworICAgIHZh
ciBjb21iaW5lID0gZnVuY3Rpb24gKHQsIHRzKSB7CisgICAgICBpZiAodHMpIHsKKyAgICAgICAg
dmFyIG1hdGNoID0gdHNbMF07CisgICAgICAgIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKHQsIG1h
dGNoWzBdKSkgeworICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAg
IC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgICB0LAorICAgICAgICAgICAgICAgICAg
ICBtYXRjaFsxXSArIDEgfCAwCisgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgdHNbMV0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIHR1cGxlICov
WworICAgICAgICAgICAgICAgICAgICB0LAorICAgICAgICAgICAgICAgICAgICAxCisgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgdHMKKyAgICAgICAgICAgICAgICBdOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIDo6ICov
WworICAgICAgICAgICAgICAgIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgdCwKKyAg
ICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIHRz
CisgICAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gTGlzdC5mb2xk
X3JpZ2h0KGNvbWJpbmUsIHRzLCAvKiBbXSAqLzApOworICB9OworICB2YXIgbG9jYWwgPSBmdW5j
dGlvbiAocGFyYW0pIHsKKyAgICBsZW4ocGFyYW1bMV0pOworICAgIHJldHVybiB2YWx1ZV90eXBl
KHBhcmFtWzBdKTsKKyAgfTsKKyAgdmFyIGNvZGUgPSBmdW5jdGlvbiAoZikgeworICAgIHZhciBt
YXRjaCA9IGZbLyogaXQgKi8xXTsKKyAgICB2YXIgZyA9IGdhcDMyKC8qICgpICovMCk7CisgICAg
dmFyIHAgPSBCdWZmZXIubGVuZ3RoKHNbLyogYnVmICovMF0pOworICAgIHZlYyhsb2NhbCwgY29t
cHJlc3MobWF0Y2hbLyogbG9jYWxzICovMV0pKTsKKyAgICBMaXN0Lml0ZXIoaW5zdHIsIG1hdGNo
Wy8qIGJvZHkgKi8yXSk7CisgICAgdTgoMTEpOworICAgIHJldHVybiBwYXRjaF9nYXAzMihnLCBC
dWZmZXIubGVuZ3RoKHNbLyogYnVmICovMF0pIC0gcCB8IDApOworICB9OworICB2YXIgY29kZV9z
ZWN0aW9uID0gZnVuY3Rpb24gKGZzKSB7CisgICAgcmV0dXJuIHNlY3Rpb24oMTAsIGZ1bmN0aW9u
IChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMoY29kZSwgcGFyYW0pOworICAg
ICAgICAgICAgICB9LCBmcywgKyhmcyAhPT0gLyogW10gKi8wKSk7CisgIH07CisgIHZhciBzZWdt
ZW50ID0gZnVuY3Rpb24gKGRhdCwgc2VnKSB7CisgICAgdmFyIG1hdGNoID0gc2VnWy8qIGl0ICov
MV07CisgICAgdnUzMihtYXRjaFsvKiBpbmRleCAqLzBdWy8qIGl0ICovMV0pOworICAgICQkY29u
c3QobWF0Y2hbLyogb2Zmc2V0ICovMV0pOworICAgIHJldHVybiBDdXJyeS5fMShkYXQsIG1hdGNo
Wy8qIGluaXQgKi8yXSk7CisgIH07CisgIHZhciB0YWJsZV9zZWdtZW50ID0gZnVuY3Rpb24gKHNl
ZykgeworICAgIHJldHVybiBzZWdtZW50KGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAg
ICAgIHJldHVybiB2ZWMoJCR2YXIsIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgc2VnKTsKKyAg
fTsKKyAgdmFyIGVsZW1fc2VjdGlvbiA9IGZ1bmN0aW9uIChlbGVtcykgeworICAgIHJldHVybiBz
ZWN0aW9uKDksIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMo
dGFibGVfc2VnbWVudCwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBlbGVtcywgKyhlbGVtcyAh
PT0gLyogW10gKi8wKSk7CisgIH07CisgIHZhciBtZW1vcnlfc2VnbWVudCA9IGZ1bmN0aW9uIChz
ZWcpIHsKKyAgICByZXR1cm4gc2VnbWVudChzdHJpbmcsIHNlZyk7CisgIH07CisgIHZhciBtb2R1
bGVfID0gZnVuY3Rpb24gKG0pIHsKKyAgICB1MzIoMTgzNjI3ODAxNik7CisgICAgdTMyKDEzKTsK
KyAgICB0eXBlX3NlY3Rpb24obVsvKiBpdCAqLzFdWy8qIHR5cGVzICovMF0pOworICAgIGltcG9y
dF9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBpbXBvcnRzICovOF0pOworICAgIGZ1bmNfc2VjdGlv
bihtWy8qIGl0ICovMV1bLyogZnVuY3MgKi80XSk7CisgICAgdGFibGVfc2VjdGlvbihtWy8qIGl0
ICovMV1bLyogdGFibGVzICovMl0pOworICAgIG1lbW9yeV9zZWN0aW9uKG1bLyogaXQgKi8xXVsv
KiBtZW1vcmllcyAqLzNdKTsKKyAgICBnbG9iYWxfc2VjdGlvbihtWy8qIGl0ICovMV1bLyogZ2xv
YmFscyAqLzFdKTsKKyAgICBleHBvcnRfc2VjdGlvbihtWy8qIGl0ICovMV1bLyogZXhwb3J0cyAq
LzldKTsKKyAgICBzdGFydF9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBzdGFydCAqLzVdKTsKKyAg
ICBlbGVtX3NlY3Rpb24obVsvKiBpdCAqLzFdWy8qIGVsZW1zICovNl0pOworICAgIGNvZGVfc2Vj
dGlvbihtWy8qIGl0ICovMV1bLyogZnVuY3MgKi80XSk7CisgICAgdmFyIGRhdGEgPSBtWy8qIGl0
ICovMV1bLyogZGF0YSAqLzddOworICAgIHJldHVybiBzZWN0aW9uKDExLCBmdW5jdGlvbiAocGFy
YW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmVjKG1lbW9yeV9zZWdtZW50LCBwYXJhbSk7
CisgICAgICAgICAgICAgIH0sIGRhdGEsICsoZGF0YSAhPT0gLyogW10gKi8wKSk7CisgIH07Cisg
IG1vZHVsZV8obSk7CisgIHZhciBzJDEgPSBzOworICB2YXIgYnMgPSBCdWZmZXIudG9fYnl0ZXMo
cyQxWy8qIGJ1ZiAqLzBdKTsKKyAgTGlzdC5pdGVyKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAg
ICBic1twYXJhbVswXV0gPSBwYXJhbVsxXTsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAg
ICAgIH0sIHMkMVsvKiBwYXRjaGVzICovMV1bMF0pOworICByZXR1cm4gQnl0ZXMudG9fc3RyaW5n
KGJzKTsKK30KKwordmFyIHZlcnNpb24gPSAxMzsKKworZXhwb3J0cy5Db2RlICAgID0gQ29kZSQx
OworZXhwb3J0cy52ZXJzaW9uID0gdmVyc2lvbjsKK2V4cG9ydHMuZW5jb2RlICA9IGVuY29kZTsK
Ky8qIENvZGUgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBlbmNvZGUuanMg
Ly8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsn
ZXJyb3InXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8v
IHN0YXJ0IG9mIGVycm9yLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBU
IFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIFNvdXJjZSAgICAgICAgICA9IHJlcXVpcmUoIi4vc291cmNlIik7Cit2YXIgQ2FtbF9leGNl
cHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZXhjZXB0aW9ucyIpOwor
CitmdW5jdGlvbiBNYWtlKCkgeworICB2YXIgJCRFcnJvciA9IENhbWxfZXhjZXB0aW9ucy5jcmVh
dGUoIkVycm9yLk1ha2UoKikuRXJyb3IiKTsKKyAgdmFyIHdhcm4gPSBmdW5jdGlvbiAoYXQsIG0p
IHsKKyAgICBjb25zb2xlLmVycm9yKFNvdXJjZS5zdHJpbmdfb2ZfcmVnaW9uKGF0KSArICgiOiB3
YXJuaW5nOiAiICsgbSkpOworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH07CisgIHZhciBlcnJv
ciA9IGZ1bmN0aW9uIChhdCwgbSkgeworICAgIHRocm93IFsKKyAgICAgICAgICAkJEVycm9yLAor
ICAgICAgICAgIGF0LAorICAgICAgICAgIG0KKyAgICAgICAgXTsKKyAgfTsKKyAgcmV0dXJuIC8q
IG1vZHVsZSAqL1sKKyAgICAgICAgICAvKiBFcnJvciAqLyQkRXJyb3IsCisgICAgICAgICAgLyog
d2FybiAqL3dhcm4sCisgICAgICAgICAgLyogZXJyb3IgKi9lcnJvcgorICAgICAgICBdOworfQor
CitleHBvcnRzLk1ha2UgPSBNYWtlOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVu
ZCBvZiBlcnJvci5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisK
KyAgX3JlZ2lzdHJ5WydmMzInXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7
fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGYzMi5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJV
Q0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0
cmljdCc7CisKK3ZhciBCbG9jayAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9i
bG9jayIpOwordmFyIEN1cnJ5ICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1
cnJ5Iik7Cit2YXIgRmxvYXQgICAgICAgPSByZXF1aXJlKCIuL2Zsb2F0Iik7Cit2YXIgSW50MzIg
ICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvaW50MzIiKTsKK3ZhciBQcmludGYg
ICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wcmludGYiKTsKK3ZhciBDYW1sX2Zs
b2F0ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zsb2F0Iik7Cit2YXIgQ2Ft
bF9mb3JtYXQgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9mb3JtYXQiKTsKKwor
ZnVuY3Rpb24gcHJpbnRfbmFuX3NpZ25pZmljYW5kX2RpZ2l0cyhhKSB7CisgIHJldHVybiBDdXJy
eS5fMShQcmludGYuc3ByaW50ZigvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBJ
bnQzMiAqL0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfeCAqLzYs
CisgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAg
ICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBF
bmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAg
ICAgICIlbHgiCisgICAgICAgICAgICAgICAgXSksIEludDMyLmFicygyMTM5MDk1MDQwIF4gYSkp
OworfQorCit2YXIgaW5jbHVkZSA9IEZsb2F0Lk1ha2UoLyogbW9kdWxlICovWworICAgICAgLyog
cG9zX25hbiAqLzIxNDMyODkzNDQsCisgICAgICAvKiBuZWdfbmFuICovLTQxOTQzMDQsCisgICAg
ICAvKiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgKi9DYW1sX2Zsb2F0LmNhbWxfaW50MzJfYml0
c19vZl9mbG9hdCwKKyAgICAgIC8qIGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyAqL0NhbWxfZmxv
YXQuY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzLAorICAgICAgLyogY2FtbF9pbnQzMl9vZl9zdHJp
bmcgKi9DYW1sX2Zvcm1hdC5jYW1sX2ludDMyX29mX3N0cmluZywKKyAgICAgIC8qIHRvX3N0cmlu
ZyAqL0ludDMyLnRvX3N0cmluZywKKyAgICAgIC8qICVpbnQzMl9hbmQgKi9mdW5jdGlvbiAocHJp
bSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiBwcmltICYgcHJpbSQxOworICAgICAgfSwKKyAg
ICAgIC8qICVpbnQzMl9vciAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0
dXJuIHByaW0gfCBwcmltJDE7CisgICAgICB9LAorICAgICAgLyogJWludDMyX3hvciAqL2Z1bmN0
aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIHByaW0gXiBwcmltJDE7CisgICAg
ICB9LAorICAgICAgLyogbWluX2ludCAqL0ludDMyLm1pbl9pbnQsCisgICAgICAvKiBtYXhfaW50
ICovSW50MzIubWF4X2ludCwKKyAgICAgIC8qIHplcm8gKi9JbnQzMi56ZXJvLAorICAgICAgLyog
YmFyZV9uYW4gKi8yMTM5MDk1MDQwLAorICAgICAgLyogcHJpbnRfbmFuX3NpZ25pZmljYW5kX2Rp
Z2l0cyAqL3ByaW50X25hbl9zaWduaWZpY2FuZF9kaWdpdHMKKyAgICBdKTsKKwordmFyIHBvc19u
YW4gPSBpbmNsdWRlWzBdOworCit2YXIgbmVnX25hbiA9IGluY2x1ZGVbMV07CisKK3ZhciBvZl9m
bG9hdCA9IGluY2x1ZGVbMl07CisKK3ZhciB0b19mbG9hdCA9IGluY2x1ZGVbM107CisKK3ZhciBv
Zl9zdHJpbmcgPSBpbmNsdWRlWzRdOworCit2YXIgdG9fc3RyaW5nID0gaW5jbHVkZVs1XTsKKwor
dmFyIG9mX2JpdHMgPSBpbmNsdWRlWzZdOworCit2YXIgdG9fYml0cyA9IGluY2x1ZGVbN107CisK
K3ZhciBhZGQgPSBpbmNsdWRlWzhdOworCit2YXIgc3ViID0gaW5jbHVkZVs5XTsKKwordmFyIG11
bCA9IGluY2x1ZGVbMTBdOworCit2YXIgZGl2ID0gaW5jbHVkZVsxMV07CisKK3ZhciBzcXJ0ID0g
aW5jbHVkZVsxMl07CisKK3ZhciBtaW4gPSBpbmNsdWRlWzEzXTsKKwordmFyIG1heCA9IGluY2x1
ZGVbMTRdOworCit2YXIgY2VpbCA9IGluY2x1ZGVbMTVdOworCit2YXIgZmxvb3IgPSBpbmNsdWRl
WzE2XTsKKwordmFyIHRydW5jID0gaW5jbHVkZVsxN107CisKK3ZhciBuZWFyZXN0ID0gaW5jbHVk
ZVsxOF07CisKK3ZhciBhYnMgPSBpbmNsdWRlWzE5XTsKKwordmFyIG5lZyA9IGluY2x1ZGVbMjBd
OworCit2YXIgY29weXNpZ24gPSBpbmNsdWRlWzIxXTsKKwordmFyIGVxID0gaW5jbHVkZVsyMl07
CisKK3ZhciBuZSA9IGluY2x1ZGVbMjNdOworCit2YXIgbHQgPSBpbmNsdWRlWzI0XTsKKwordmFy
IGxlID0gaW5jbHVkZVsyNV07CisKK3ZhciBndCA9IGluY2x1ZGVbMjZdOworCit2YXIgZ2UgPSBp
bmNsdWRlWzI3XTsKKwordmFyIHplcm8gPSBpbmNsdWRlWzI4XTsKKworZXhwb3J0cy5wb3NfbmFu
ICAgPSBwb3NfbmFuOworZXhwb3J0cy5uZWdfbmFuICAgPSBuZWdfbmFuOworZXhwb3J0cy5vZl9m
bG9hdCAgPSBvZl9mbG9hdDsKK2V4cG9ydHMudG9fZmxvYXQgID0gdG9fZmxvYXQ7CitleHBvcnRz
Lm9mX3N0cmluZyA9IG9mX3N0cmluZzsKK2V4cG9ydHMudG9fc3RyaW5nID0gdG9fc3RyaW5nOwor
ZXhwb3J0cy5vZl9iaXRzICAgPSBvZl9iaXRzOworZXhwb3J0cy50b19iaXRzICAgPSB0b19iaXRz
OworZXhwb3J0cy5hZGQgICAgICAgPSBhZGQ7CitleHBvcnRzLnN1YiAgICAgICA9IHN1YjsKK2V4
cG9ydHMubXVsICAgICAgID0gbXVsOworZXhwb3J0cy5kaXYgICAgICAgPSBkaXY7CitleHBvcnRz
LnNxcnQgICAgICA9IHNxcnQ7CitleHBvcnRzLm1pbiAgICAgICA9IG1pbjsKK2V4cG9ydHMubWF4
ICAgICAgID0gbWF4OworZXhwb3J0cy5jZWlsICAgICAgPSBjZWlsOworZXhwb3J0cy5mbG9vciAg
ICAgPSBmbG9vcjsKK2V4cG9ydHMudHJ1bmMgICAgID0gdHJ1bmM7CitleHBvcnRzLm5lYXJlc3Qg
ICA9IG5lYXJlc3Q7CitleHBvcnRzLmFicyAgICAgICA9IGFiczsKK2V4cG9ydHMubmVnICAgICAg
ID0gbmVnOworZXhwb3J0cy5jb3B5c2lnbiAgPSBjb3B5c2lnbjsKK2V4cG9ydHMuZXEgICAgICAg
ID0gZXE7CitleHBvcnRzLm5lICAgICAgICA9IG5lOworZXhwb3J0cy5sdCAgICAgICAgPSBsdDsK
K2V4cG9ydHMubGUgICAgICAgID0gbGU7CitleHBvcnRzLmd0ICAgICAgICA9IGd0OworZXhwb3J0
cy5nZSAgICAgICAgPSBnZTsKK2V4cG9ydHMuemVybyAgICAgID0gemVybzsKKy8qIGluY2x1ZGUg
Tm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBmMzIuanMgLy8vLy8vLy8KK8Kg
IMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnZjY0J10gPSBmdW5j
dGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBmNjQu
anMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAs
IFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgQmxvY2sgICAgICAg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2siKTsKK3ZhciBDdXJyeSAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyIEZsb2F0ICAgICAgID0g
cmVxdWlyZSgiLi9mbG9hdCIpOwordmFyIEludDY0ICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZv
cm0vbGliL2pzL2ludDY0Iik7Cit2YXIgUHJpbnRmICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvcHJpbnRmIik7Cit2YXIgQ2FtbF9pbnQ2NCAgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvY2FtbF9pbnQ2NCIpOwordmFyIENhbWxfZm9ybWF0ID0gcmVxdWlyZSgiYnMtcGxh
dGZvcm0vbGliL2pzL2NhbWxfZm9ybWF0Iik7CisKK3ZhciBiYXJlX25hbiA9IC8qIGludDY0ICov
WworICAvKiBoaSAqLzIxNDY0MzUwNzIsCisgIC8qIGxvICovMAorXTsKKworZnVuY3Rpb24gcHJp
bnRfbmFuX3NpZ25pZmljYW5kX2RpZ2l0cyhhKSB7CisgIHJldHVybiBDdXJyeS5fMShQcmludGYu
c3ByaW50ZigvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBJbnQ2NCAqL0Jsb2Nr
Ll9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfeCAqLzYsCisgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgLyog
Tm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0
ICovMAorICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICIlTHgiCisg
ICAgICAgICAgICAgICAgXSksIEludDY0LmFicygvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAg
ICAgIC8qIGhpICovLyogaGkgKi8yMTQ2NDM1MDcyIF4gYVswXSwKKyAgICAgICAgICAgICAgICAg
IC8qIGxvICovKCgvKiBsbyAqLzAgXiBhWzFdKSA+Pj4gMCkKKyAgICAgICAgICAgICAgICBdKSk7
Cit9CisKK3ZhciBpbmNsdWRlID0gRmxvYXQuTWFrZSgvKiBtb2R1bGUgKi9bCisgICAgICAvKiBw
b3NfbmFuIDogaW50NjQgKi9bCisgICAgICAgIC8qIGhpICovMjE0Njk1OTM2MCwKKyAgICAgICAg
LyogbG8gKi8wCisgICAgICBdLAorICAgICAgLyogbmVnX25hbiA6IGludDY0ICovWworICAgICAg
ICAvKiBoaSAqLy01MjQyODgsCisgICAgICAgIC8qIGxvICovMAorICAgICAgXSwKKyAgICAgIC8q
IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAqL0NhbWxfaW50NjQuYml0c19vZl9mbG9hdCwKKyAg
ICAgIC8qIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAqL0NhbWxfaW50NjQuZmxvYXRfb2ZfYml0
cywKKyAgICAgIC8qIGNhbWxfaW50NjRfb2Zfc3RyaW5nICovQ2FtbF9mb3JtYXQuY2FtbF9pbnQ2
NF9vZl9zdHJpbmcsCisgICAgICAvKiB0b19zdHJpbmcgKi9JbnQ2NC50b19zdHJpbmcsCisgICAg
ICAvKiAlaW50NjRfYW5kICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1
cm4gLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgLyogaGkgKi9wcmltWzBdICYgcHJpbSQx
WzBdLAorICAgICAgICAgICAgICAgIC8qIGxvICovKChwcmltWzFdICYgcHJpbSQxWzFdKSA+Pj4g
MCkKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0sCisgICAgICAvKiAlaW50NjRfb3IgKi9mdW5j
dGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAvKiBpbnQ2NCAqL1sKKyAgICAg
ICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gfCBwcmltJDFbMF0sCisgICAgICAgICAgICAgICAg
LyogbG8gKi8oKHByaW1bMV0gfCBwcmltJDFbMV0pID4+PiAwKQorICAgICAgICAgICAgICBdOwor
ICAgICAgfSwKKyAgICAgIC8qICVpbnQ2NF94b3IgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7
CisgICAgICAgIHJldHVybiAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL3By
aW1bMF0gXiBwcmltJDFbMF0sCisgICAgICAgICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gXiBw
cmltJDFbMV0pID4+PiAwKQorICAgICAgICAgICAgICBdOworICAgICAgfSwKKyAgICAgIC8qIG1p
bl9pbnQgKi9JbnQ2NC5taW5faW50LAorICAgICAgLyogbWF4X2ludCAqL0ludDY0Lm1heF9pbnQs
CisgICAgICAvKiB6ZXJvICovSW50NjQuemVybywKKyAgICAgIC8qIGJhcmVfbmFuICovYmFyZV9u
YW4sCisgICAgICAvKiBwcmludF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzICovcHJpbnRfbmFuX3Np
Z25pZmljYW5kX2RpZ2l0cworICAgIF0pOworCit2YXIgcG9zX25hbiA9IGluY2x1ZGVbMF07CisK
K3ZhciBuZWdfbmFuID0gaW5jbHVkZVsxXTsKKwordmFyIG9mX2Zsb2F0ID0gaW5jbHVkZVsyXTsK
KwordmFyIHRvX2Zsb2F0ID0gaW5jbHVkZVszXTsKKwordmFyIG9mX3N0cmluZyA9IGluY2x1ZGVb
NF07CisKK3ZhciB0b19zdHJpbmcgPSBpbmNsdWRlWzVdOworCit2YXIgb2ZfYml0cyA9IGluY2x1
ZGVbNl07CisKK3ZhciB0b19iaXRzID0gaW5jbHVkZVs3XTsKKwordmFyIGFkZCA9IGluY2x1ZGVb
OF07CisKK3ZhciBzdWIgPSBpbmNsdWRlWzldOworCit2YXIgbXVsID0gaW5jbHVkZVsxMF07CisK
K3ZhciBkaXYgPSBpbmNsdWRlWzExXTsKKwordmFyIHNxcnQgPSBpbmNsdWRlWzEyXTsKKwordmFy
IG1pbiA9IGluY2x1ZGVbMTNdOworCit2YXIgbWF4ID0gaW5jbHVkZVsxNF07CisKK3ZhciBjZWls
ID0gaW5jbHVkZVsxNV07CisKK3ZhciBmbG9vciA9IGluY2x1ZGVbMTZdOworCit2YXIgdHJ1bmMg
PSBpbmNsdWRlWzE3XTsKKwordmFyIG5lYXJlc3QgPSBpbmNsdWRlWzE4XTsKKwordmFyIGFicyA9
IGluY2x1ZGVbMTldOworCit2YXIgbmVnID0gaW5jbHVkZVsyMF07CisKK3ZhciBjb3B5c2lnbiA9
IGluY2x1ZGVbMjFdOworCit2YXIgZXEgPSBpbmNsdWRlWzIyXTsKKwordmFyIG5lID0gaW5jbHVk
ZVsyM107CisKK3ZhciBsdCA9IGluY2x1ZGVbMjRdOworCit2YXIgbGUgPSBpbmNsdWRlWzI1XTsK
KwordmFyIGd0ID0gaW5jbHVkZVsyNl07CisKK3ZhciBnZSA9IGluY2x1ZGVbMjddOworCit2YXIg
emVybyA9IGluY2x1ZGVbMjhdOworCitleHBvcnRzLnBvc19uYW4gICA9IHBvc19uYW47CitleHBv
cnRzLm5lZ19uYW4gICA9IG5lZ19uYW47CitleHBvcnRzLm9mX2Zsb2F0ICA9IG9mX2Zsb2F0Owor
ZXhwb3J0cy50b19mbG9hdCAgPSB0b19mbG9hdDsKK2V4cG9ydHMub2Zfc3RyaW5nID0gb2Zfc3Ry
aW5nOworZXhwb3J0cy50b19zdHJpbmcgPSB0b19zdHJpbmc7CitleHBvcnRzLm9mX2JpdHMgICA9
IG9mX2JpdHM7CitleHBvcnRzLnRvX2JpdHMgICA9IHRvX2JpdHM7CitleHBvcnRzLmFkZCAgICAg
ICA9IGFkZDsKK2V4cG9ydHMuc3ViICAgICAgID0gc3ViOworZXhwb3J0cy5tdWwgICAgICAgPSBt
dWw7CitleHBvcnRzLmRpdiAgICAgICA9IGRpdjsKK2V4cG9ydHMuc3FydCAgICAgID0gc3FydDsK
K2V4cG9ydHMubWluICAgICAgID0gbWluOworZXhwb3J0cy5tYXggICAgICAgPSBtYXg7CitleHBv
cnRzLmNlaWwgICAgICA9IGNlaWw7CitleHBvcnRzLmZsb29yICAgICA9IGZsb29yOworZXhwb3J0
cy50cnVuYyAgICAgPSB0cnVuYzsKK2V4cG9ydHMubmVhcmVzdCAgID0gbmVhcmVzdDsKK2V4cG9y
dHMuYWJzICAgICAgID0gYWJzOworZXhwb3J0cy5uZWcgICAgICAgPSBuZWc7CitleHBvcnRzLmNv
cHlzaWduICA9IGNvcHlzaWduOworZXhwb3J0cy5lcSAgICAgICAgPSBlcTsKK2V4cG9ydHMubmUg
ICAgICAgID0gbmU7CitleHBvcnRzLmx0ICAgICAgICA9IGx0OworZXhwb3J0cy5sZSAgICAgICAg
PSBsZTsKK2V4cG9ydHMuZ3QgICAgICAgID0gZ3Q7CitleHBvcnRzLmdlICAgICAgICA9IGdlOwor
ZXhwb3J0cy56ZXJvICAgICAgPSB6ZXJvOworLyogaW5jbHVkZSBOb3QgYSBwdXJlIG1vZHVsZSAq
LworLy8vLy8vLy8gZW5kIG9mIGY2NC5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7
CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydmbG9hdCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBs
ZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgZmxvYXQuanMgLy8vLy8vLy8KKy8v
IEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJ
VEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3ZhciAkJFN0cmluZyAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9zdHJpbmciKTsKK3ZhciBDYW1s
X29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29i
aiIpOwordmFyIFBlcnZhc2l2ZXMgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX2Zvcm1hdCAgICAgICAgICAgICA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zvcm1hdCIpOwordmFyIENhbWxfc3RyaW5nICAg
ICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfc3RyaW5nIik7Cit2
YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
Y2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gTWFrZShSZXApIHsKKyAgdmFy
IHBvc19uYW4gPSBSZXBbLyogcG9zX25hbiAqLzBdOworICB2YXIgbmVnX25hbiA9IFJlcFsvKiBu
ZWdfbmFuICovMV07CisgIHZhciBiYXJlX25hbiA9IFJlcFsvKiBiYXJlX25hbiAqLzEyXTsKKyAg
dmFyIG9mX2Zsb2F0ID0gUmVwWy8qIGJpdHNfb2ZfZmxvYXQgKi8yXTsKKyAgdmFyIHRvX2Zsb2F0
ID0gUmVwWy8qIGZsb2F0X29mX2JpdHMgKi8zXTsKKyAgdmFyIG9mX2JpdHMgPSBmdW5jdGlvbiAo
eCkgeworICAgIHJldHVybiB4OworICB9OworICB2YXIgdG9fYml0cyA9IGZ1bmN0aW9uICh4KSB7
CisgICAgcmV0dXJuIHg7CisgIH07CisgIHZhciBpc19uYW4gPSBmdW5jdGlvbiAoeCkgeworICAg
IHZhciB4ZiA9IEN1cnJ5Ll8xKFJlcFsvKiBmbG9hdF9vZl9iaXRzICovM10sIHgpOworICAgIHJl
dHVybiArKHhmICE9PSB4Zik7CisgIH07CisgIHZhciBjYW5vbmljYWxpemVfbmFuID0gZnVuY3Rp
b24gKHgpIHsKKyAgICByZXR1cm4gQ3VycnkuXzIoUmVwWy8qIGxvZ29yICovN10sIHgsIFJlcFsv
KiBwb3NfbmFuICovMF0pOworICB9OworICB2YXIgZGV0ZXJtaW5lX2JpbmFyeV9uYW4gPSBmdW5j
dGlvbiAoeCwgeSkgeworICAgIHJldHVybiBjYW5vbmljYWxpemVfbmFuKGlzX25hbih4KSA/IHgg
OiAoCisgICAgICAgICAgICAgICAgICBpc19uYW4oeSkgPyB5IDogUmVwWy8qIHBvc19uYW4gKi8w
XQorICAgICAgICAgICAgICAgICkpOworICB9OworICB2YXIgZGV0ZXJtaW5lX3VuYXJ5X25hbiA9
IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0dXJuIGNhbm9uaWNhbGl6ZV9uYW4oaXNfbmFuKHgpID8g
eCA6IFJlcFsvKiBwb3NfbmFuICovMF0pOworICB9OworICB2YXIgYmluYXJ5ID0gZnVuY3Rpb24g
KHgsIG9wLCB5KSB7CisgICAgdmFyIHhmID0gQ3VycnkuXzEodG9fZmxvYXQsIHgpOworICAgIHZh
ciB5ZiA9IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB5KTsKKyAgICB2YXIgdCA9IEN1cnJ5Ll8yKG9wLCB4
ZiwgeWYpOworICAgIGlmICh0ID09PSB0KSB7CisgICAgICByZXR1cm4gQ3VycnkuXzEob2ZfZmxv
YXQsIHQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBkZXRlcm1pbmVfYmluYXJ5
X25hbih4LCB5KTsKKyAgICB9CisgIH07CisgIHZhciB1bmFyeSA9IGZ1bmN0aW9uIChvcCwgeCkg
eworICAgIHZhciB0ID0gQ3VycnkuXzEob3AsIEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSk7CisgICAg
aWYgKHQgPT09IHQpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShvZl9mbG9hdCwgdCk7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGRldGVybWluZV91bmFyeV9uYW4oeCk7CisgICAg
fQorICB9OworICB2YXIgemVybyA9IEN1cnJ5Ll8xKG9mX2Zsb2F0LCAwLjApOworICB2YXIgYWRk
ID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gYmluYXJ5KHgsIGZ1bmN0aW9uIChwcmlt
LCBwcmltJDEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJpbSArIHByaW0kMTsKKyAgICAg
ICAgICAgICAgfSwgeSk7CisgIH07CisgIHZhciBzdWIgPSBmdW5jdGlvbiAoeCwgeSkgeworICAg
IHJldHVybiBiaW5hcnkoeCwgZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBwcmltIC0gcHJpbSQxOworICAgICAgICAgICAgICB9LCB5KTsKKyAgfTsKKyAg
dmFyIG11bCA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGJpbmFyeSh4LCBmdW5jdGlv
biAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByaW0gKiBwcmltJDE7
CisgICAgICAgICAgICAgIH0sIHkpOworICB9OworICB2YXIgZGl2ID0gZnVuY3Rpb24gKHgsIHkp
IHsKKyAgICByZXR1cm4gYmluYXJ5KHgsIGZ1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcHJpbSAvIHByaW0kMTsKKyAgICAgICAgICAgICAgfSwgeSk7Cisg
IH07CisgIHZhciBzcXJ0ID0gZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1cm4gdW5hcnkoZnVuY3Rp
b24gKHByaW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHByaW0pOworICAg
ICAgICAgICAgICB9LCB4KTsKKyAgfTsKKyAgdmFyIGNlaWwgPSBmdW5jdGlvbiAoeCkgeworICAg
IHJldHVybiB1bmFyeShmdW5jdGlvbiAocHJpbSkgeworICAgICAgICAgICAgICAgIHJldHVybiBN
YXRoLmNlaWwocHJpbSk7CisgICAgICAgICAgICAgIH0sIHgpOworICB9OworICB2YXIgZmxvb3Ig
PSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB1bmFyeShmdW5jdGlvbiAocHJpbSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKHByaW0pOworICAgICAgICAgICAgICB9LCB4
KTsKKyAgfTsKKyAgdmFyIHRydW5jID0gZnVuY3Rpb24gKHgpIHsKKyAgICB2YXIgeGYgPSBDdXJy
eS5fMSh0b19mbG9hdCwgeCk7CisgICAgaWYgKHhmID09PSAwLjApIHsKKyAgICAgIHJldHVybiB4
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBmID0geGYgPCAwLjAgPyBNYXRoLmNlaWwo
eGYpIDogTWF0aC5mbG9vcih4Zik7CisgICAgICB2YXIgcmVzdWx0ID0gQ3VycnkuXzEob2ZfZmxv
YXQsIGYpOworICAgICAgaWYgKGlzX25hbihyZXN1bHQpKSB7CisgICAgICAgIHJldHVybiBkZXRl
cm1pbmVfdW5hcnlfbmFuKHJlc3VsdCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgIH0KKyAgICB9CisgIH07CisgIHZhciBuZWFyZXN0ID0gZnVu
Y3Rpb24gKHgpIHsKKyAgICB2YXIgeGYgPSBDdXJyeS5fMSh0b19mbG9hdCwgeCk7CisgICAgaWYg
KHhmID09PSAwLjApIHsKKyAgICAgIHJldHVybiB4OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHZhciB1ID0gTWF0aC5jZWlsKHhmKTsKKyAgICAgIHZhciBkID0gTWF0aC5mbG9vcih4Zik7Cisg
ICAgICB2YXIgdW0gPSBNYXRoLmFicyh4ZiAtIHUpOworICAgICAgdmFyIGRtID0gTWF0aC5hYnMo
eGYgLSBkKTsKKyAgICAgIHZhciBoID0gdSAvIDI7CisgICAgICB2YXIgdV9vcl9kID0gKyh1bSA8
IGRtIHx8IHVtID09PSBkbSAmJiBNYXRoLmZsb29yKGgpID09PSBoKTsKKyAgICAgIHZhciBmID0g
dV9vcl9kID8gdSA6IGQ7CisgICAgICB2YXIgcmVzdWx0ID0gQ3VycnkuXzEob2ZfZmxvYXQsIGYp
OworICAgICAgaWYgKGlzX25hbihyZXN1bHQpKSB7CisgICAgICAgIHJldHVybiBkZXRlcm1pbmVf
dW5hcnlfbmFuKHJlc3VsdCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgIH0KKyAgICB9CisgIH07CisgIHZhciBtaW4gPSBmdW5jdGlvbiAoeCwg
eSkgeworICAgIHZhciB4ZiA9IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KTsKKyAgICB2YXIgeWYgPSBD
dXJyeS5fMSh0b19mbG9hdCwgeSk7CisgICAgaWYgKHhmID09PSB5ZikgeworICAgICAgcmV0dXJu
IEN1cnJ5Ll8yKFJlcFsvKiBsb2dvciAqLzddLCB4LCB5KTsKKyAgICB9CisgICAgZWxzZSBpZiAo
eGYgPCB5ZikgeworICAgICAgcmV0dXJuIHg7CisgICAgfQorICAgIGVsc2UgaWYgKHhmID4geWYp
IHsKKyAgICAgIHJldHVybiB5OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBkZXRl
cm1pbmVfYmluYXJ5X25hbih4LCB5KTsKKyAgICB9CisgIH07CisgIHZhciBtYXggPSBmdW5jdGlv
biAoeCwgeSkgeworICAgIHZhciB4ZiA9IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KTsKKyAgICB2YXIg
eWYgPSBDdXJyeS5fMSh0b19mbG9hdCwgeSk7CisgICAgaWYgKHhmID09PSB5ZikgeworICAgICAg
cmV0dXJuIEN1cnJ5Ll8yKFJlcFsvKiBsb2dhbmQgKi82XSwgeCwgeSk7CisgICAgfQorICAgIGVs
c2UgaWYgKHhmID4geWYpIHsKKyAgICAgIHJldHVybiB4OworICAgIH0KKyAgICBlbHNlIGlmICh4
ZiA8IHlmKSB7CisgICAgICByZXR1cm4geTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gZGV0ZXJtaW5lX2JpbmFyeV9uYW4oeCwgeSk7CisgICAgfQorICB9OworICB2YXIgYWJzID0g
ZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1cm4gQ3VycnkuXzIoUmVwWy8qIGxvZ2FuZCAqLzZdLCB4
LCBSZXBbLyogbWF4X2ludCAqLzEwXSk7CisgIH07CisgIHZhciBuZWcgPSBmdW5jdGlvbiAoeCkg
eworICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9neG9yICovOF0sIHgsIFJlcFsvKiBtaW5f
aW50ICovOV0pOworICB9OworICB2YXIgY29weXNpZ24gPSBmdW5jdGlvbiAoeCwgeSkgeworICAg
IHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9nb3IgKi83XSwgYWJzKHgpLCBDdXJyeS5fMihSZXBb
LyogbG9nYW5kICovNl0sIHksIFJlcFsvKiBtaW5faW50ICovOV0pKTsKKyAgfTsKKyAgdmFyIGVx
ID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gKyhDdXJyeS5fMSh0b19mbG9hdCwgeCkg
PT09IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB5KSk7CisgIH07CisgIHZhciBuZSA9IGZ1bmN0aW9uICh4
LCB5KSB7CisgICAgcmV0dXJuICsoQ3VycnkuXzEodG9fZmxvYXQsIHgpICE9PSBDdXJyeS5fMSh0
b19mbG9hdCwgeSkpOworICB9OworICB2YXIgbHQgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJl
dHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA8IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB5KSk7Cisg
IH07CisgIHZhciBndCA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuICsoQ3VycnkuXzEo
dG9fZmxvYXQsIHgpID4gQ3VycnkuXzEodG9fZmxvYXQsIHkpKTsKKyAgfTsKKyAgdmFyIGxlID0g
ZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gKyhDdXJyeS5fMSh0b19mbG9hdCwgeCkgPD0g
Q3VycnkuXzEodG9fZmxvYXQsIHkpKTsKKyAgfTsKKyAgdmFyIGdlID0gZnVuY3Rpb24gKHgsIHkp
IHsKKyAgICByZXR1cm4gKyhDdXJyeS5fMSh0b19mbG9hdCwgeCkgPj0gQ3VycnkuXzEodG9fZmxv
YXQsIHkpKTsKKyAgfTsKKyAgdmFyIG9mX3NpZ25sZXNzX3N0cmluZyA9IGZ1bmN0aW9uICh4LCBs
ZW4pIHsKKyAgICBpZiAoeCAhPT0gIm5hbiIgJiYgbGVuID4gNiAmJiAkJFN0cmluZy5zdWIoeCwg
MCwgNikgPT09ICJuYW46MHgiKSB7CisgICAgICB2YXIgcyA9IEN1cnJ5Ll8xKFJlcFsvKiBvZl9z
dHJpbmcgKi80XSwgJCRTdHJpbmcuc3ViKHgsIDQsIGxlbiAtIDQgfCAwKSk7CisgICAgICBpZiAo
Q2FtbF9vYmouY2FtbF9lcXVhbChzLCBSZXBbLyogemVybyAqLzExXSkpIHsKKyAgICAgICAgdGhy
b3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAg
ICAgICAgICAgICAibmFuIHBheWxvYWQgbXVzdCBub3QgYmUgemVybyIKKyAgICAgICAgICAgIF07
CisgICAgICB9CisgICAgICBlbHNlIGlmIChDYW1sX29iai5jYW1sX25vdGVxdWFsKEN1cnJ5Ll8y
KFJlcFsvKiBsb2dhbmQgKi82XSwgcywgYmFyZV9uYW4pLCBSZXBbLyogemVybyAqLzExXSkpIHsK
KyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5m
YWlsdXJlLAorICAgICAgICAgICAgICAibmFuIHBheWxvYWQgbXVzdCBub3Qgb3ZlcmxhcCB3aXRo
IGV4cG9uZW50IGJpdHMiCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSBpZiAo
Q2FtbF9vYmouY2FtbF9sZXNzdGhhbihzLCBSZXBbLyogemVybyAqLzExXSkpIHsKKyAgICAgICAg
dGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAor
ICAgICAgICAgICAgICAibmFuIHBheWxvYWQgbXVzdCBub3Qgb3ZlcmxhcCB3aXRoIHNpZ24gYml0
IgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4g
Q3VycnkuXzIoUmVwWy8qIGxvZ29yICovN10sIHMsIGJhcmVfbmFuKTsKKyAgICAgIH0KKyAgICB9
CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gQ3VycnkuXzEob2ZfZmxvYXQsIENhbWxfZm9ybWF0
LmNhbWxfZmxvYXRfb2Zfc3RyaW5nKHgpKTsKKyAgICB9CisgIH07CisgIHZhciBvZl9zdHJpbmcg
PSBmdW5jdGlvbiAoeCkgeworICAgIHZhciBsZW4gPSB4Lmxlbmd0aDsKKyAgICBpZiAobGVuID4g
MCAmJiBDYW1sX3N0cmluZy5nZXQoeCwgMCkgPT09IC8qICItIiAqLzQ1KSB7CisgICAgICByZXR1
cm4gbmVnKG9mX3NpZ25sZXNzX3N0cmluZygkJFN0cmluZy5zdWIoeCwgMSwgbGVuIC0gMSB8IDAp
LCBsZW4gLSAxIHwgMCkpOworICAgIH0KKyAgICBlbHNlIGlmIChsZW4gPiAwICYmIENhbWxfc3Ry
aW5nLmdldCh4LCAwKSA9PT0gLyogIisiICovNDMpIHsKKyAgICAgIHJldHVybiBvZl9zaWdubGVz
c19zdHJpbmcoJCRTdHJpbmcuc3ViKHgsIDEsIGxlbiAtIDEgfCAwKSwgbGVuIC0gMSB8IDApOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBvZl9zaWdubGVzc19zdHJpbmcoeCwgbGVu
KTsKKyAgICB9CisgIH07CisgIHZhciB0b19zdHJpbmcgPSBmdW5jdGlvbiAoeCkgeworICAgIHZh
ciBhID0gYWJzKHgpOworICAgIHJldHVybiAoCisgICAgICAgICAgICBDYW1sX29iai5jYW1sX2xl
c3N0aGFuKHgsIFJlcFsvKiB6ZXJvICovMTFdKSA/ICItIiA6ICIiCisgICAgICAgICAgKSArICgK
KyAgICAgICAgICAgIGlzX25hbihhKSA/ICJuYW46MHgiICsgQ3VycnkuXzEoUmVwWy8qIHByaW50
X25hbl9zaWduaWZpY2FuZF9kaWdpdHMgKi8xM10sIGEpIDogUGVydmFzaXZlcy5zdHJpbmdfb2Zf
ZmxvYXQoQ3VycnkuXzEodG9fZmxvYXQsIGEpKQorICAgICAgICAgICk7CisgIH07CisgIHJldHVy
biAvKiBtb2R1bGUgKi9bCisgICAgICAgICAgLyogcG9zX25hbiAqL3Bvc19uYW4sCisgICAgICAg
ICAgLyogbmVnX25hbiAqL25lZ19uYW4sCisgICAgICAgICAgLyogb2ZfZmxvYXQgKi9vZl9mbG9h
dCwKKyAgICAgICAgICAvKiB0b19mbG9hdCAqL3RvX2Zsb2F0LAorICAgICAgICAgIC8qIG9mX3N0
cmluZyAqL29mX3N0cmluZywKKyAgICAgICAgICAvKiB0b19zdHJpbmcgKi90b19zdHJpbmcsCisg
ICAgICAgICAgLyogb2ZfYml0cyAqL29mX2JpdHMsCisgICAgICAgICAgLyogdG9fYml0cyAqL3Rv
X2JpdHMsCisgICAgICAgICAgLyogYWRkICovYWRkLAorICAgICAgICAgIC8qIHN1YiAqL3N1YiwK
KyAgICAgICAgICAvKiBtdWwgKi9tdWwsCisgICAgICAgICAgLyogZGl2ICovZGl2LAorICAgICAg
ICAgIC8qIHNxcnQgKi9zcXJ0LAorICAgICAgICAgIC8qIG1pbiAqL21pbiwKKyAgICAgICAgICAv
KiBtYXggKi9tYXgsCisgICAgICAgICAgLyogY2VpbCAqL2NlaWwsCisgICAgICAgICAgLyogZmxv
b3IgKi9mbG9vciwKKyAgICAgICAgICAvKiB0cnVuYyAqL3RydW5jLAorICAgICAgICAgIC8qIG5l
YXJlc3QgKi9uZWFyZXN0LAorICAgICAgICAgIC8qIGFicyAqL2FicywKKyAgICAgICAgICAvKiBu
ZWcgKi9uZWcsCisgICAgICAgICAgLyogY29weXNpZ24gKi9jb3B5c2lnbiwKKyAgICAgICAgICAv
KiBlcSAqL2VxLAorICAgICAgICAgIC8qIG5lICovbmUsCisgICAgICAgICAgLyogbHQgKi9sdCwK
KyAgICAgICAgICAvKiBsZSAqL2xlLAorICAgICAgICAgIC8qIGd0ICovZ3QsCisgICAgICAgICAg
LyogZ2UgKi9nZSwKKyAgICAgICAgICAvKiB6ZXJvICovemVybworICAgICAgICBdOworfQorCitl
eHBvcnRzLk1ha2UgPSBNYWtlOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBv
ZiBmbG9hdC5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAg
X3JlZ2lzdHJ5Wydmb3JtYXQnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7
fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGZvcm1hdC5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgQmxvY2sgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Jsb2NrIik7Cit2YXIg
Qnl0ZXMgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2J5dGVzIik7Cit2YXIgQ3Vycnkg
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQnVmZmVyICAgICAg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL2J1ZmZlciIpOwordmFyICQkU3RyaW5nICAgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9zdHJpbmciKTsKK3ZhciBDYW1sX2lvICAgICAgICAgICAgICAg
ICA9IHJlcXVpcmUoIi4vY2FtbF9pbyIpOwordmFyIENhbWxfb2JqICAgICAgICAgICAgICAgID0g
cmVxdWlyZSgiLi9jYW1sX29iaiIpOwordmFyIFBlcnZhc2l2ZXMgICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9wZXJ2YXNpdmVzIik7Cit2YXIgQ2FtbF9zdHJpbmcgICAgICAgICAgICAgPSByZXF1
aXJlKCIuL2NhbWxfc3RyaW5nIik7Cit2YXIgQ2FtbF9leGNlcHRpb25zICAgICAgICAgPSByZXF1
aXJlKCIuL2NhbWxfZXhjZXB0aW9ucyIpOwordmFyIENhbWxpbnRlcm5hbEZvcm1hdCAgICAgID0g
cmVxdWlyZSgiLi9jYW1saW50ZXJuYWxGb3JtYXQiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24g
YWRkX3F1ZXVlKHgsIHEpIHsKKyAgdmFyIGMgPSAvKiBDb25zICovWy8qIHJlY29yZCAqL1sKKyAg
ICAgIC8qIGhlYWQgKi94LAorICAgICAgLyogdGFpbCA6IE5pbCAqLzAKKyAgICBdXTsKKyAgdmFy
IG1hdGNoID0gcVsvKiBpbnNlcnQgKi8wXTsKKyAgaWYgKG1hdGNoKSB7CisgICAgcVsvKiBpbnNl
cnQgKi8wXSA9IGM7CisgICAgbWF0Y2hbMF1bLyogdGFpbCAqLzFdID0gYzsKKyAgICByZXR1cm4g
LyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHFbLyogaW5zZXJ0ICovMF0gPSBjOworICAg
IHFbLyogYm9keSAqLzFdID0gYzsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9Cit9CisKK3Zh
ciBFbXB0eV9xdWV1ZSA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIkZvcm1hdC5FbXB0eV9xdWV1
ZSIpOworCitmdW5jdGlvbiBwZWVrX3F1ZXVlKHBhcmFtKSB7CisgIHZhciBtYXRjaCA9IHBhcmFt
Wy8qIGJvZHkgKi8xXTsKKyAgaWYgKG1hdGNoKSB7CisgICAgcmV0dXJuIG1hdGNoWzBdWy8qIGhl
YWQgKi8wXTsKKyAgfQorICBlbHNlIHsKKyAgICB0aHJvdyBFbXB0eV9xdWV1ZTsKKyAgfQorfQor
CitmdW5jdGlvbiB0YWtlX3F1ZXVlKHEpIHsKKyAgdmFyIG1hdGNoID0gcVsvKiBib2R5ICovMV07
CisgIGlmIChtYXRjaCkgeworICAgIHZhciBtYXRjaCQxID0gbWF0Y2hbMF07CisgICAgdmFyIHgg
PSBtYXRjaCQxWy8qIGhlYWQgKi8wXTsKKyAgICB2YXIgdGwgPSBtYXRjaCQxWy8qIHRhaWwgKi8x
XTsKKyAgICBxWy8qIGJvZHkgKi8xXSA9IHRsOworICAgIGlmICghdGwpIHsKKyAgICAgIHFbLyog
aW5zZXJ0ICovMF0gPSAvKiBOaWwgKi8wOworICAgIH0KKyAgICByZXR1cm4geDsKKyAgfQorICBl
bHNlIHsKKyAgICB0aHJvdyBFbXB0eV9xdWV1ZTsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9lbnF1
ZXVlKHN0YXRlLCB0b2tlbikgeworICBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSA9IHN0
YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdICsgdG9rZW5bLyogbGVuZ3RoICovMl0gfCAwOwor
ICByZXR1cm4gYWRkX3F1ZXVlKHRva2VuLCBzdGF0ZVsvKiBwcF9xdWV1ZSAqLzI2XSk7Cit9CisK
K2Z1bmN0aW9uIHBwX2NsZWFyX3F1ZXVlKHN0YXRlKSB7CisgIHN0YXRlWy8qIHBwX2xlZnRfdG90
YWwgKi8xMV0gPSAxOworICBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSA9IDE7CisgIHZh
ciBxID0gc3RhdGVbLyogcHBfcXVldWUgKi8yNl07CisgIHFbLyogaW5zZXJ0ICovMF0gPSAvKiBO
aWwgKi8wOworICBxWy8qIGJvZHkgKi8xXSA9IC8qIE5pbCAqLzA7CisgIHJldHVybiAvKiAoKSAq
LzA7Cit9CisKK2Z1bmN0aW9uIHBwX291dHB1dF9zdHJpbmcoc3RhdGUsIHMpIHsKKyAgcmV0dXJu
IEN1cnJ5Ll8zKHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0sIHMsIDAsIHMubGVuZ3RoKTsK
K30KKworZnVuY3Rpb24gYnJlYWtfbmV3X2xpbmUoc3RhdGUsIG9mZnNldCwgd2lkdGgpIHsKKyAg
Q3VycnkuXzEoc3RhdGVbLyogcHBfb3V0X25ld2xpbmUgKi8xOF0sIC8qICgpICovMCk7CisgIHN0
YXRlWy8qIHBwX2lzX25ld19saW5lICovMTBdID0gLyogdHJ1ZSAqLzE7CisgIHZhciBpbmRlbnQg
PSAoc3RhdGVbLyogcHBfbWFyZ2luICovNV0gLSB3aWR0aCB8IDApICsgb2Zmc2V0IHwgMDsKKyAg
dmFyIHJlYWxfaW5kZW50ID0gUGVydmFzaXZlcy5taW4oc3RhdGVbLyogcHBfbWF4X2luZGVudCAq
LzddLCBpbmRlbnQpOworICBzdGF0ZVsvKiBwcF9jdXJyZW50X2luZGVudCAqLzldID0gcmVhbF9p
bmRlbnQ7CisgIHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSA9IHN0YXRlWy8qIHBwX21hcmdp
biAqLzVdIC0gc3RhdGVbLyogcHBfY3VycmVudF9pbmRlbnQgKi85XSB8IDA7CisgIHJldHVybiBD
dXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfc3BhY2VzICovMTldLCBzdGF0ZVsvKiBwcF9jdXJyZW50
X2luZGVudCAqLzldKTsKK30KKworZnVuY3Rpb24gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCB3aWR0
aCkgeworICBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gPSBzdGF0ZVsvKiBwcF9zcGFjZV9s
ZWZ0ICovOF0gLSB3aWR0aCB8IDA7CisgIHJldHVybiBDdXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRf
c3BhY2VzICovMTldLCB3aWR0aCk7Cit9CisKK2Z1bmN0aW9uIHBwX2ZvcmNlX2JyZWFrX2xpbmUo
c3RhdGUpIHsKKyAgdmFyIG1hdGNoID0gc3RhdGVbLyogcHBfZm9ybWF0X3N0YWNrICovMV07Cisg
IGlmIChtYXRjaCkgeworICAgIHZhciBtYXRjaCQxID0gbWF0Y2hbMF07CisgICAgdmFyIHdpZHRo
ID0gbWF0Y2gkMVsxXTsKKyAgICB2YXIgYmxfdHkgPSBtYXRjaCQxWzBdOworICAgIGlmICh3aWR0
aCA+IHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSAmJiBibF90eSAhPT0gMCAmJiBibF90eSA8
IDUpIHsKKyAgICAgIHJldHVybiBicmVha19uZXdfbGluZShzdGF0ZSwgMCwgd2lkdGgpOworICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gQ3VycnkuXzEoc3RhdGVbLyogcHBfb3V0X25ld2xpbmUgKi8xOF0sIC8qICgpICov
MCk7CisgIH0KK30KKworZnVuY3Rpb24gZm9ybWF0X3BwX3Rva2VuKHN0YXRlLCBzaXplLCBwYXJh
bSkgeworICBpZiAodHlwZW9mIHBhcmFtID09PSAibnVtYmVyIikgeworICAgIHN3aXRjaCAocGFy
YW0pIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHZhciBtYXRjaCA9IHN0YXRlWy8qIHBw
X3Rib3hfc3RhY2sgKi8yXTsKKyAgICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICAgIHZh
ciB0YWJzID0gbWF0Y2hbMF1bMF07CisgICAgICAgICAgICB2YXIgYWRkX3RhYiA9IGZ1bmN0aW9u
IChuLCBscykgeworICAgICAgICAgICAgICBpZiAobHMpIHsKKyAgICAgICAgICAgICAgICB2YXIg
eCA9IGxzWzBdOworICAgICAgICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX2xlc3N0aGFuKG4s
IHgpKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxzCisgICAgICAgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX3RhYihuLCBsc1sxXSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIG4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9OworICAgICAgICAgICAgdGFic1swXSA9IGFkZF90YWIoc3RhdGVbLyogcHBf
bWFyZ2luICovNV0gLSBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gfCAwLCB0YWJzWzBdKTsK
KyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHN0YXRl
Wy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdOworICAgICAgICAgIGlmIChtYXRjaCQxKSB7CisgICAg
ICAgICAgICBzdGF0ZVsvKiBwcF9mb3JtYXRfc3RhY2sgKi8xXSA9IG1hdGNoJDFbMV07CisgICAg
ICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfQorICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgdmFyIG1hdGNoJDIgPSBzdGF0ZVsvKiBwcF90Ym94X3N0YWNrICovMl07
CisgICAgICAgICAgaWYgKG1hdGNoJDIpIHsKKyAgICAgICAgICAgIHN0YXRlWy8qIHBwX3Rib3hf
c3RhY2sgKi8yXSA9IG1hdGNoJDJbMV07CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAq
LzA7CisgICAgICAgICAgfQorICAgICAgY2FzZSAzIDogCisgICAgICAgICAgdmFyIG1hdGNoJDMg
PSBzdGF0ZVsvKiBwcF9mb3JtYXRfc3RhY2sgKi8xXTsKKyAgICAgICAgICBpZiAobWF0Y2gkMykg
eworICAgICAgICAgICAgcmV0dXJuIGJyZWFrX25ld19saW5lKHN0YXRlLCAwLCBtYXRjaCQzWzBd
WzFdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4g
Q3VycnkuXzEoc3RhdGVbLyogcHBfb3V0X25ld2xpbmUgKi8xOF0sIC8qICgpICovMCk7CisgICAg
ICAgICAgfQorICAgICAgY2FzZSA0IDogCisgICAgICAgICAgaWYgKHN0YXRlWy8qIHBwX2N1cnJl
bnRfaW5kZW50ICovOV0gIT09IChzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSAtIHN0YXRlWy8qIHBw
X3NwYWNlX2xlZnQgKi84XSB8IDApKSB7CisgICAgICAgICAgICB2YXIgc3RhdGUkMSA9IHN0YXRl
OworICAgICAgICAgICAgdmFyIG1hdGNoJDQgPSB0YWtlX3F1ZXVlKHN0YXRlJDFbLyogcHBfcXVl
dWUgKi8yNl0pOworICAgICAgICAgICAgdmFyIHNpemUkMSA9IG1hdGNoJDRbLyogZWxlbV9zaXpl
ICovMF07CisgICAgICAgICAgICBzdGF0ZSQxWy8qIHBwX2xlZnRfdG90YWwgKi8xMV0gPSBzdGF0
ZSQxWy8qIHBwX2xlZnRfdG90YWwgKi8xMV0gLSBtYXRjaCQ0Wy8qIGxlbmd0aCAqLzJdIHwgMDsK
KyAgICAgICAgICAgIHN0YXRlJDFbLyogcHBfc3BhY2VfbGVmdCAqLzhdID0gc3RhdGUkMVsvKiBw
cF9zcGFjZV9sZWZ0ICovOF0gKyBzaXplJDEgfCAwOworICAgICAgICAgICAgcmV0dXJuIC8qICgp
ICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICB9CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkNSA9
IHN0YXRlWy8qIHBwX21hcmtfc3RhY2sgKi80XTsKKyAgICAgICAgICBpZiAobWF0Y2gkNSkgewor
ICAgICAgICAgICAgdmFyIG1hcmtlciA9IEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX21hcmtfY2xvc2Vf
dGFnICovMjNdLCBtYXRjaCQ1WzBdKTsKKyAgICAgICAgICAgIHBwX291dHB1dF9zdHJpbmcoc3Rh
dGUsIG1hcmtlcik7CisgICAgICAgICAgICBzdGF0ZVsvKiBwcF9tYXJrX3N0YWNrICovNF0gPSBt
YXRjaCQ1WzFdOworICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAg
IH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBz
d2l0Y2ggKHBhcmFtLnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHN0YXRl
Wy8qIHBwX3NwYWNlX2xlZnQgKi84XSA9IHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSAtIHNp
emUgfCAwOworICAgICAgICAgIHBwX291dHB1dF9zdHJpbmcoc3RhdGUsIHBhcmFtWzBdKTsKKyAg
ICAgICAgICBzdGF0ZVsvKiBwcF9pc19uZXdfbGluZSAqLzEwXSA9IC8qIGZhbHNlICovMDsKKyAg
ICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgdmFy
IG9mZiA9IHBhcmFtWzFdOworICAgICAgICAgIHZhciBuID0gcGFyYW1bMF07CisgICAgICAgICAg
dmFyIG1hdGNoJDYgPSBzdGF0ZVsvKiBwcF9mb3JtYXRfc3RhY2sgKi8xXTsKKyAgICAgICAgICBp
ZiAobWF0Y2gkNikgeworICAgICAgICAgICAgdmFyIG1hdGNoJDcgPSBtYXRjaCQ2WzBdOworICAg
ICAgICAgICAgdmFyIHdpZHRoID0gbWF0Y2gkN1sxXTsKKyAgICAgICAgICAgIHN3aXRjaCAobWF0
Y2gkN1swXSkgeworICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWtfbmV3X2xpbmUoc3RhdGUsIG9mZiwg
d2lkdGgpOworICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgIGlmIChz
aXplID4gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdKSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBicmVha19uZXdfbGluZShzdGF0ZSwgb2ZmLCB3aWR0aCk7CisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGJyZWFrX3NhbWVfbGluZShzdGF0ZSwgbik7CisgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlWy8qIHBwX2lz
X25ld19saW5lICovMTBdIHx8ICEoc2l6ZSA+IHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSB8
fCBzdGF0ZVsvKiBwcF9jdXJyZW50X2luZGVudCAqLzldID4gKChzdGF0ZVsvKiBwcF9tYXJnaW4g
Ki81XSAtIHdpZHRoIHwgMCkgKyBvZmYgfCAwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGJyZWFrX3NhbWVfbGluZShzdGF0ZSwgbik7CisgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJyZWFrX25l
d19saW5lKHN0YXRlLCBvZmYsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGJyZWFrX3NhbWVfbGluZShzdGF0ZSwgbik7CisgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgdmFyIGluc2VydGlvbl9wb2ludCA9IHN0YXRlWy8qIHBwX21hcmdp
biAqLzVdIC0gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIHwgMDsKKyAgICAgICAgICB2YXIg
bWF0Y2gkOCA9IHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXTsKKyAgICAgICAgICBpZiAobWF0
Y2gkOCkgeworICAgICAgICAgICAgdmFyIHRhYnMkMSA9IG1hdGNoJDhbMF1bMF07CisgICAgICAg
ICAgICB2YXIgZmluZCA9IGZ1bmN0aW9uIChuLCBfcGFyYW0pIHsKKyAgICAgICAgICAgICAgd2hp
bGUodHJ1ZSkgeworICAgICAgICAgICAgICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICAgICAg
ICAgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgIHZhciB4ID0gcGFyYW1bMF07
CisgICAgICAgICAgICAgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9ncmVhdGVyZXF1YWwoeCwgbikp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgX3BhcmFtID0gcGFy
YW1bMV07CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMubm90X2ZvdW5kOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICB2YXIgbWF0Y2gkOSA9IHRhYnMkMVswXTsKKyAgICAgICAg
ICAgIHZhciB0YWI7CisgICAgICAgICAgICBpZiAobWF0Y2gkOSkgeworICAgICAgICAgICAgICB0
cnkgeworICAgICAgICAgICAgICAgIHRhYiA9IGZpbmQoaW5zZXJ0aW9uX3BvaW50LCB0YWJzJDFb
MF0pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGNhdGNoIChleG4peworICAgICAg
ICAgICAgICAgIGlmIChleG4gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkg
eworICAgICAgICAgICAgICAgICAgdGFiID0gbWF0Y2gkOVswXTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICB0aHJvdyBleG47Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdGFiID0gaW5zZXJ0aW9uX3BvaW50OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRhYiAtIGluc2VydGlvbl9wb2ludCB8
IDA7CisgICAgICAgICAgICBpZiAob2Zmc2V0ID49IDApIHsKKyAgICAgICAgICAgICAgcmV0dXJu
IGJyZWFrX3NhbWVfbGluZShzdGF0ZSwgb2Zmc2V0ICsgcGFyYW1bMF0gfCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICByZXR1cm4gYnJlYWtfbmV3
X2xpbmUoc3RhdGUsIHRhYiArIHBhcmFtWzFdIHwgMCwgc3RhdGVbLyogcHBfbWFyZ2luICovNV0p
OworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSAzIDogCisgICAgICAgICAgdmFyIHR5ID0gcGFyYW1bMV07CisgICAgICAgICAgdmFy
IGluc2VydGlvbl9wb2ludCQxID0gc3RhdGVbLyogcHBfbWFyZ2luICovNV0gLSBzdGF0ZVsvKiBw
cF9zcGFjZV9sZWZ0ICovOF0gfCAwOworICAgICAgICAgIGlmIChpbnNlcnRpb25fcG9pbnQkMSA+
IHN0YXRlWy8qIHBwX21heF9pbmRlbnQgKi83XSkgeworICAgICAgICAgICAgcHBfZm9yY2VfYnJl
YWtfbGluZShzdGF0ZSk7CisgICAgICAgICAgfQorICAgICAgICAgIHZhciBvZmZzZXQkMSA9IHN0
YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSAtIHBhcmFtWzBdIHwgMDsKKyAgICAgICAgICB2YXIg
YmxfdHlwZSA9IHR5ICE9PSAxID8gKAorICAgICAgICAgICAgICBzaXplID4gc3RhdGVbLyogcHBf
c3BhY2VfbGVmdCAqLzhdID8gdHkgOiAvKiBQcF9maXRzICovNQorICAgICAgICAgICAgKSA6IC8q
IFBwX3Zib3ggKi8xOworICAgICAgICAgIHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdID0g
LyogOjogKi9bCisgICAgICAgICAgICAvKiBGb3JtYXRfZWxlbSAqL1sKKyAgICAgICAgICAgICAg
YmxfdHlwZSwKKyAgICAgICAgICAgICAgb2Zmc2V0JDEKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICBzdGF0ZVsvKiBwcF9mb3JtYXRfc3RhY2sgKi8xXQorICAgICAgICAgIF07CisgICAgICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHN0YXRlWy8q
IHBwX3Rib3hfc3RhY2sgKi8yXSA9IC8qIDo6ICovWworICAgICAgICAgICAgcGFyYW1bMF0sCisg
ICAgICAgICAgICBzdGF0ZVsvKiBwcF90Ym94X3N0YWNrICovMl0KKyAgICAgICAgICBdOworICAg
ICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICB2YXIg
dGFnX25hbWUgPSBwYXJhbVswXTsKKyAgICAgICAgICB2YXIgbWFya2VyJDEgPSBDdXJyeS5fMShz
dGF0ZVsvKiBwcF9tYXJrX29wZW5fdGFnICovMjJdLCB0YWdfbmFtZSk7CisgICAgICAgICAgcHBf
b3V0cHV0X3N0cmluZyhzdGF0ZSwgbWFya2VyJDEpOworICAgICAgICAgIHN0YXRlWy8qIHBwX21h
cmtfc3RhY2sgKi80XSA9IC8qIDo6ICovWworICAgICAgICAgICAgdGFnX25hbWUsCisgICAgICAg
ICAgICBzdGF0ZVsvKiBwcF9tYXJrX3N0YWNrICovNF0KKyAgICAgICAgICBdOworICAgICAgICAg
IHJldHVybiAvKiAoKSAqLzA7CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gYWR2
YW5jZV9sZWZ0KHN0YXRlKSB7CisgIHRyeSB7CisgICAgdmFyIHN0YXRlJDEgPSBzdGF0ZTsKKyAg
ICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgbWF0Y2ggPSBwZWVrX3F1ZXVlKHN0YXRlJDFbLyog
cHBfcXVldWUgKi8yNl0pOworICAgICAgdmFyIHNpemUgPSBtYXRjaFsvKiBlbGVtX3NpemUgKi8w
XTsKKyAgICAgIGlmIChzaXplIDwgMCAmJiAoc3RhdGUkMVsvKiBwcF9yaWdodF90b3RhbCAqLzEy
XSAtIHN0YXRlJDFbLyogcHBfbGVmdF90b3RhbCAqLzExXSB8IDApIDwgc3RhdGUkMVsvKiBwcF9z
cGFjZV9sZWZ0ICovOF0pIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgdGFrZV9xdWV1ZShzdGF0ZSQxWy8qIHBwX3F1ZXVlICovMjZdKTsKKyAgICAg
ICAgZm9ybWF0X3BwX3Rva2VuKHN0YXRlJDEsIHNpemUgPCAwID8gMTAwMDAwMDAxMCA6IHNpemUs
IG1hdGNoWy8qIHRva2VuICovMV0pOworICAgICAgICBzdGF0ZSQxWy8qIHBwX2xlZnRfdG90YWwg
Ki8xMV0gPSBtYXRjaFsvKiBsZW5ndGggKi8yXSArIHN0YXRlJDFbLyogcHBfbGVmdF90b3RhbCAq
LzExXSB8IDA7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfTsK
KyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBFbXB0eV9xdWV1ZSkgeworICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47
CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGVucXVldWVfYWR2YW5jZShzdGF0ZSwgdG9rKSB7
CisgIHBwX2VucXVldWUoc3RhdGUsIHRvayk7CisgIHJldHVybiBhZHZhbmNlX2xlZnQoc3RhdGUp
OworfQorCitmdW5jdGlvbiBlbnF1ZXVlX3N0cmluZ19hcyhzdGF0ZSwgc2l6ZSwgcykgeworICBy
ZXR1cm4gZW5xdWV1ZV9hZHZhbmNlKHN0YXRlLCAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAg
IC8qIGVsZW1fc2l6ZSAqL3NpemUsCisgICAgICAgICAgICAgIC8qIHRva2VuIDogUHBfdGV4dCAq
L0Jsb2NrLl9fKDAsIFtzXSksCisgICAgICAgICAgICAgIC8qIGxlbmd0aCAqL3NpemUKKyAgICAg
ICAgICAgIF0pOworfQorCit2YXIgcV9lbGVtID0gLyogcmVjb3JkICovWworICAvKiBlbGVtX3Np
emUgKi8tMSwKKyAgLyogdG9rZW4gOiBQcF90ZXh0ICovQmxvY2suX18oMCwgWyIiXSksCisgIC8q
IGxlbmd0aCAqLzAKK107CisKK3ZhciBzY2FuX3N0YWNrX2JvdHRvbV8wMDAgPSAvKiBTY2FuX2Vs
ZW0gKi9bCisgIC0xLAorICBxX2VsZW0KK107CisKK3ZhciBzY2FuX3N0YWNrX2JvdHRvbSA9IC8q
IDo6ICovWworICBzY2FuX3N0YWNrX2JvdHRvbV8wMDAsCisgIC8qIFtdICovMAorXTsKKworZnVu
Y3Rpb24gc2V0X3NpemUoc3RhdGUsIHR5KSB7CisgIHZhciBtYXRjaCA9IHN0YXRlWy8qIHBwX3Nj
YW5fc3RhY2sgKi8wXTsKKyAgaWYgKG1hdGNoKSB7CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFsw
XTsKKyAgICB2YXIgcXVldWVfZWxlbSA9IG1hdGNoJDFbMV07CisgICAgdmFyIHNpemUgPSBxdWV1
ZV9lbGVtWy8qIGVsZW1fc2l6ZSAqLzBdOworICAgIHZhciB0ID0gbWF0Y2hbMV07CisgICAgaWYg
KG1hdGNoJDFbMF0gPCBzdGF0ZVsvKiBwcF9sZWZ0X3RvdGFsICovMTFdKSB7CisgICAgICBzdGF0
ZVsvKiBwcF9zY2FuX3N0YWNrICovMF0gPSBzY2FuX3N0YWNrX2JvdHRvbTsKKyAgICAgIHJldHVy
biAvKiAoKSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIGV4aXQgPSAwOworICAg
ICAgdmFyICRqcyA9IHF1ZXVlX2VsZW1bLyogdG9rZW4gKi8xXTsKKyAgICAgIGlmICh0eXBlb2Yg
JGpzID09PSAibnVtYmVyIikgeworICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIHN3aXRjaCAoJGpzLnRhZyB8IDApIHsKKyAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgZXhpdCA9IDE7Cisg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICBp
ZiAodHkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBxdWV1ZV9lbGVtWy8qIGVsZW1fc2l6
ZSAqLzBdID0gc3RhdGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0gKyBzaXplIHwgMDsKKyAgICAg
ICAgICAgICAgICBzdGF0ZVsvKiBwcF9zY2FuX3N0YWNrICovMF0gPSB0OworICAgICAgICAgICAg
ICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgfQorICAgICAgfQorICAg
ICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKHR5KSB7CisgICAgICAgICAgcXVldWVf
ZWxlbVsvKiBlbGVtX3NpemUgKi8wXSA9IHN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdICsg
c2l6ZSB8IDA7CisgICAgICAgICAgc3RhdGVbLyogcHBfc2Nhbl9zdGFjayAqLzBdID0gdDsKKyAg
ICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICB9CisgICAgICAKKyAgICB9CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQorfQorCitmdW5jdGlvbiBzY2Fu
X3B1c2goc3RhdGUsIGIsIHRvaykgeworICBwcF9lbnF1ZXVlKHN0YXRlLCB0b2spOworICBpZiAo
YikgeworICAgIHNldF9zaXplKHN0YXRlLCAvKiB0cnVlICovMSk7CisgIH0KKyAgc3RhdGVbLyog
cHBfc2Nhbl9zdGFjayAqLzBdID0gLyogOjogKi9bCisgICAgLyogU2Nhbl9lbGVtICovWworICAg
ICAgc3RhdGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0sCisgICAgICB0b2sKKyAgICBdLAorICAg
IHN0YXRlWy8qIHBwX3NjYW5fc3RhY2sgKi8wXQorICBdOworICByZXR1cm4gLyogKCkgKi8wOwor
fQorCitmdW5jdGlvbiBwcF9vcGVuX2JveF9nZW4oc3RhdGUsIGluZGVudCwgYnJfdHkpIHsKKyAg
c3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9IHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8x
M10gKyAxIHwgMDsKKyAgaWYgKHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPCBzdGF0ZVsv
KiBwcF9tYXhfYm94ZXMgKi8xNF0pIHsKKyAgICB2YXIgZWxlbSA9IC8qIHJlY29yZCAqL1sKKyAg
ICAgIC8qIGVsZW1fc2l6ZSAqLy1zdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSB8IDAsCisg
ICAgICAvKiB0b2tlbiA6IFBwX2JlZ2luICovQmxvY2suX18oMywgWworICAgICAgICAgIGluZGVu
dCwKKyAgICAgICAgICBicl90eQorICAgICAgICBdKSwKKyAgICAgIC8qIGxlbmd0aCAqLzAKKyAg
ICBdOworICAgIHJldHVybiBzY2FuX3B1c2goc3RhdGUsIC8qIGZhbHNlICovMCwgZWxlbSk7Cisg
IH0KKyAgZWxzZSBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9PT0gc3RhdGVbLyog
cHBfbWF4X2JveGVzICovMTRdKSB7CisgICAgdmFyIHN0YXRlJDEgPSBzdGF0ZTsKKyAgICB2YXIg
cyA9IHN0YXRlWy8qIHBwX2VsbGlwc2lzICovMTVdOworICAgIHZhciBsZW4gPSBzLmxlbmd0aDsK
KyAgICByZXR1cm4gZW5xdWV1ZV9zdHJpbmdfYXMoc3RhdGUkMSwgbGVuLCBzKTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9jbG9zZV9ib3goc3Rh
dGUsIF8pIHsKKyAgaWYgKHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPiAxKSB7CisgICAg
aWYgKHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPCBzdGF0ZVsvKiBwcF9tYXhfYm94ZXMg
Ki8xNF0pIHsKKyAgICAgIHBwX2VucXVldWUoc3RhdGUsIC8qIHJlY29yZCAqL1sKKyAgICAgICAg
ICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisgICAgICAgICAgICAvKiB0b2tlbiA6IFBwX2VuZCAqLzEs
CisgICAgICAgICAgICAvKiBsZW5ndGggKi8wCisgICAgICAgICAgXSk7CisgICAgICBzZXRfc2l6
ZShzdGF0ZSwgLyogdHJ1ZSAqLzEpOworICAgICAgc2V0X3NpemUoc3RhdGUsIC8qIGZhbHNlICov
MCk7CisgICAgfQorICAgIHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPSBzdGF0ZVsvKiBw
cF9jdXJyX2RlcHRoICovMTNdIC0gMSB8IDA7CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9vcGVuX3RhZyhz
dGF0ZSwgdGFnX25hbWUpIHsKKyAgaWYgKHN0YXRlWy8qIHBwX3ByaW50X3RhZ3MgKi8yMF0pIHsK
KyAgICBzdGF0ZVsvKiBwcF90YWdfc3RhY2sgKi8zXSA9IC8qIDo6ICovWworICAgICAgdGFnX25h
bWUsCisgICAgICBzdGF0ZVsvKiBwcF90YWdfc3RhY2sgKi8zXQorICAgIF07CisgICAgQ3Vycnku
XzEoc3RhdGVbLyogcHBfcHJpbnRfb3Blbl90YWcgKi8yNF0sIHRhZ19uYW1lKTsKKyAgfQorICBp
ZiAoc3RhdGVbLyogcHBfbWFya190YWdzICovMjFdKSB7CisgICAgcmV0dXJuIHBwX2VucXVldWUo
c3RhdGUsIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAvKiBlbGVtX3NpemUgKi8wLAor
ICAgICAgICAgICAgICAgIC8qIHRva2VuIDogUHBfb3Blbl90YWcgKi9CbG9jay5fXyg1LCBbdGFn
X25hbWVdKSwKKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggKi8wCisgICAgICAgICAgICAgIF0p
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2Ns
b3NlX3RhZyhzdGF0ZSwgXykgeworICBpZiAoc3RhdGVbLyogcHBfbWFya190YWdzICovMjFdKSB7
CisgICAgcHBfZW5xdWV1ZShzdGF0ZSwgLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGVsZW1f
c2l6ZSAqLzAsCisgICAgICAgICAgLyogdG9rZW4gOiBQcF9jbG9zZV90YWcgKi81LAorICAgICAg
ICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgICAgXSk7CisgIH0KKyAgaWYgKHN0YXRlWy8qIHBwX3By
aW50X3RhZ3MgKi8yMF0pIHsKKyAgICB2YXIgbWF0Y2ggPSBzdGF0ZVsvKiBwcF90YWdfc3RhY2sg
Ki8zXTsKKyAgICBpZiAobWF0Y2gpIHsKKyAgICAgIEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX3ByaW50
X2Nsb3NlX3RhZyAqLzI1XSwgbWF0Y2hbMF0pOworICAgICAgc3RhdGVbLyogcHBfdGFnX3N0YWNr
ICovM10gPSBtYXRjaFsxXTsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gcHBfc2V0X3ByaW50X3RhZ3Moc3RhdGUsIGIp
IHsKKyAgc3RhdGVbLyogcHBfcHJpbnRfdGFncyAqLzIwXSA9IGI7CisgIHJldHVybiAvKiAoKSAq
LzA7Cit9CisKK2Z1bmN0aW9uIHBwX3NldF9tYXJrX3RhZ3Moc3RhdGUsIGIpIHsKKyAgc3RhdGVb
LyogcHBfbWFya190YWdzICovMjFdID0gYjsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVu
Y3Rpb24gcHBfZ2V0X3ByaW50X3RhZ3Moc3RhdGUsIF8pIHsKKyAgcmV0dXJuIHN0YXRlWy8qIHBw
X3ByaW50X3RhZ3MgKi8yMF07Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9tYXJrX3RhZ3Moc3RhdGUs
IF8pIHsKKyAgcmV0dXJuIHN0YXRlWy8qIHBwX21hcmtfdGFncyAqLzIxXTsKK30KKworZnVuY3Rp
b24gcHBfc2V0X3RhZ3Moc3RhdGUsIGIpIHsKKyAgc3RhdGVbLyogcHBfcHJpbnRfdGFncyAqLzIw
XSA9IGI7CisgIHN0YXRlWy8qIHBwX21hcmtfdGFncyAqLzIxXSA9IGI7CisgIHJldHVybiAvKiAo
KSAqLzA7Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyhzdGF0
ZSwgXykgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIG1hcmtfb3Blbl90
YWcgKi9zdGF0ZVsvKiBwcF9tYXJrX29wZW5fdGFnICovMjJdLAorICAgICAgICAgIC8qIG1hcmtf
Y2xvc2VfdGFnICovc3RhdGVbLyogcHBfbWFya19jbG9zZV90YWcgKi8yM10sCisgICAgICAgICAg
LyogcHJpbnRfb3Blbl90YWcgKi9zdGF0ZVsvKiBwcF9wcmludF9vcGVuX3RhZyAqLzI0XSwKKyAg
ICAgICAgICAvKiBwcmludF9jbG9zZV90YWcgKi9zdGF0ZVsvKiBwcF9wcmludF9jbG9zZV90YWcg
Ki8yNV0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVu
Y3Rpb25zKHN0YXRlLCBwYXJhbSkgeworICBzdGF0ZVsvKiBwcF9tYXJrX29wZW5fdGFnICovMjJd
ID0gcGFyYW1bLyogbWFya19vcGVuX3RhZyAqLzBdOworICBzdGF0ZVsvKiBwcF9tYXJrX2Nsb3Nl
X3RhZyAqLzIzXSA9IHBhcmFtWy8qIG1hcmtfY2xvc2VfdGFnICovMV07CisgIHN0YXRlWy8qIHBw
X3ByaW50X29wZW5fdGFnICovMjRdID0gcGFyYW1bLyogcHJpbnRfb3Blbl90YWcgKi8yXTsKKyAg
c3RhdGVbLyogcHBfcHJpbnRfY2xvc2VfdGFnICovMjVdID0gcGFyYW1bLyogcHJpbnRfY2xvc2Vf
dGFnICovM107CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHBwX3Jpbml0KHN0
YXRlKSB7CisgIHBwX2NsZWFyX3F1ZXVlKHN0YXRlKTsKKyAgc3RhdGVbLyogcHBfc2Nhbl9zdGFj
ayAqLzBdID0gc2Nhbl9zdGFja19ib3R0b207CisgIHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAq
LzFdID0gLyogW10gKi8wOworICBzdGF0ZVsvKiBwcF90Ym94X3N0YWNrICovMl0gPSAvKiBbXSAq
LzA7CisgIHN0YXRlWy8qIHBwX3RhZ19zdGFjayAqLzNdID0gLyogW10gKi8wOworICBzdGF0ZVsv
KiBwcF9tYXJrX3N0YWNrICovNF0gPSAvKiBbXSAqLzA7CisgIHN0YXRlWy8qIHBwX2N1cnJlbnRf
aW5kZW50ICovOV0gPSAwOworICBzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdID0gMDsKKyAg
c3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdID0gc3RhdGVbLyogcHBfbWFyZ2luICovNV07Cisg
IHJldHVybiBwcF9vcGVuX2JveF9nZW4oc3RhdGUsIDAsIC8qIFBwX2hvdmJveCAqLzMpOworfQor
CitmdW5jdGlvbiBwcF9mbHVzaF9xdWV1ZShzdGF0ZSwgYikgeworICB3aGlsZShzdGF0ZVsvKiBw
cF9jdXJyX2RlcHRoICovMTNdID4gMSkgeworICAgIHBwX2Nsb3NlX2JveChzdGF0ZSwgLyogKCkg
Ki8wKTsKKyAgfTsKKyAgc3RhdGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0gPSAxMDAwMDAwMDEw
OworICBhZHZhbmNlX2xlZnQoc3RhdGUpOworICBpZiAoYikgeworICAgIEN1cnJ5Ll8xKHN0YXRl
Wy8qIHBwX291dF9uZXdsaW5lICovMThdLCAvKiAoKSAqLzApOworICB9CisgIHJldHVybiBwcF9y
aW5pdChzdGF0ZSk7Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X2FzX3NpemUoc3RhdGUsIHNpemUs
IHMpIHsKKyAgaWYgKHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPCBzdGF0ZVsvKiBwcF9t
YXhfYm94ZXMgKi8xNF0pIHsKKyAgICByZXR1cm4gZW5xdWV1ZV9zdHJpbmdfYXMoc3RhdGUsIHNp
emUsIHMpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK3ZhciBwcF9w
cmludF9hcyA9IHBwX3ByaW50X2FzX3NpemU7CisKK2Z1bmN0aW9uIHBwX3ByaW50X3N0cmluZyhz
dGF0ZSwgcykgeworICByZXR1cm4gcHBfcHJpbnRfYXMoc3RhdGUsIHMubGVuZ3RoLCBzKTsKK30K
KworZnVuY3Rpb24gcHBfcHJpbnRfaW50KHN0YXRlLCBpKSB7CisgIHJldHVybiBwcF9wcmludF9z
dHJpbmcoc3RhdGUsICIiICsgaSk7Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X2Zsb2F0KHN0YXRl
LCBmKSB7CisgIHJldHVybiBwcF9wcmludF9zdHJpbmcoc3RhdGUsIFBlcnZhc2l2ZXMuc3RyaW5n
X29mX2Zsb2F0KGYpKTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfYm9vbChzdGF0ZSwgYikgewor
ICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHN0YXRlLCBiID8gInRydWUiIDogImZhbHNlIik7Cit9
CisKK2Z1bmN0aW9uIHBwX3ByaW50X2NoYXIoc3RhdGUsIGMpIHsKKyAgcmV0dXJuIHBwX3ByaW50
X2FzKHN0YXRlLCAxLCBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFrZSgxLCBj
KSkpOworfQorCitmdW5jdGlvbiBwcF9vcGVuX2hib3goc3RhdGUsIF8pIHsKKyAgcmV0dXJuIHBw
X29wZW5fYm94X2dlbihzdGF0ZSwgMCwgLyogUHBfaGJveCAqLzApOworfQorCitmdW5jdGlvbiBw
cF9vcGVuX3Zib3goc3RhdGUsIGluZGVudCkgeworICByZXR1cm4gcHBfb3Blbl9ib3hfZ2VuKHN0
YXRlLCBpbmRlbnQsIC8qIFBwX3Zib3ggKi8xKTsKK30KKworZnVuY3Rpb24gcHBfb3Blbl9odmJv
eChzdGF0ZSwgaW5kZW50KSB7CisgIHJldHVybiBwcF9vcGVuX2JveF9nZW4oc3RhdGUsIGluZGVu
dCwgLyogUHBfaHZib3ggKi8yKTsKK30KKworZnVuY3Rpb24gcHBfb3Blbl9ob3Zib3goc3RhdGUs
IGluZGVudCkgeworICByZXR1cm4gcHBfb3Blbl9ib3hfZ2VuKHN0YXRlLCBpbmRlbnQsIC8qIFBw
X2hvdmJveCAqLzMpOworfQorCitmdW5jdGlvbiBwcF9vcGVuX2JveChzdGF0ZSwgaW5kZW50KSB7
CisgIHJldHVybiBwcF9vcGVuX2JveF9nZW4oc3RhdGUsIGluZGVudCwgLyogUHBfYm94ICovNCk7
Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X25ld2xpbmUoc3RhdGUsIF8pIHsKKyAgcHBfZmx1c2hf
cXVldWUoc3RhdGUsIC8qIHRydWUgKi8xKTsKKyAgcmV0dXJuIEN1cnJ5Ll8xKHN0YXRlWy8qIHBw
X291dF9mbHVzaCAqLzE3XSwgLyogKCkgKi8wKTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfZmx1
c2goc3RhdGUsIF8pIHsKKyAgcHBfZmx1c2hfcXVldWUoc3RhdGUsIC8qIGZhbHNlICovMCk7Cisg
IHJldHVybiBDdXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfZmx1c2ggKi8xN10sIC8qICgpICovMCk7
Cit9CisKK2Z1bmN0aW9uIHBwX2ZvcmNlX25ld2xpbmUoc3RhdGUsIF8pIHsKKyAgaWYgKHN0YXRl
Wy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPCBzdGF0ZVsvKiBwcF9tYXhfYm94ZXMgKi8xNF0pIHsK
KyAgICByZXR1cm4gZW5xdWV1ZV9hZHZhbmNlKHN0YXRlLCAvKiByZWNvcmQgKi9bCisgICAgICAg
ICAgICAgICAgLyogZWxlbV9zaXplICovMCwKKyAgICAgICAgICAgICAgICAvKiB0b2tlbiA6IFBw
X25ld2xpbmUgKi8zLAorICAgICAgICAgICAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgICAgICAg
ICAgXSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24g
cHBfcHJpbnRfaWZfbmV3bGluZShzdGF0ZSwgXykgeworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9k
ZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgIHJldHVybiBl
bnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAvKiBl
bGVtX3NpemUgKi8wLAorICAgICAgICAgICAgICAgIC8qIHRva2VuIDogUHBfaWZfbmV3bGluZSAq
LzQsCisgICAgICAgICAgICAgICAgLyogbGVuZ3RoICovMAorICAgICAgICAgICAgICBdKTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9wcmludF9i
cmVhayhzdGF0ZSwgd2lkdGgsIG9mZnNldCkgeworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0
aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgIHZhciBlbGVtID0g
LyogcmVjb3JkICovWworICAgICAgLyogZWxlbV9zaXplICovLXN0YXRlWy8qIHBwX3JpZ2h0X3Rv
dGFsICovMTJdIHwgMCwKKyAgICAgIC8qIHRva2VuIDogUHBfYnJlYWsgKi9CbG9jay5fXygxLCBb
CisgICAgICAgICAgd2lkdGgsCisgICAgICAgICAgb2Zmc2V0CisgICAgICAgIF0pLAorICAgICAg
LyogbGVuZ3RoICovd2lkdGgKKyAgICBdOworICAgIHJldHVybiBzY2FuX3B1c2goc3RhdGUsIC8q
IHRydWUgKi8xLCBlbGVtKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQor
CitmdW5jdGlvbiBwcF9wcmludF9zcGFjZShzdGF0ZSwgXykgeworICByZXR1cm4gcHBfcHJpbnRf
YnJlYWsoc3RhdGUsIDEsIDApOworfQorCitmdW5jdGlvbiBwcF9wcmludF9jdXQoc3RhdGUsIF8p
IHsKKyAgcmV0dXJuIHBwX3ByaW50X2JyZWFrKHN0YXRlLCAwLCAwKTsKK30KKworZnVuY3Rpb24g
cHBfb3Blbl90Ym94KHN0YXRlLCBfKSB7CisgIHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10g
PSBzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdICsgMSB8IDA7CisgIGlmIChzdGF0ZVsvKiBw
cF9jdXJyX2RlcHRoICovMTNdIDwgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7CisgICAg
dmFyIGVsZW0gPSAvKiByZWNvcmQgKi9bCisgICAgICAvKiBlbGVtX3NpemUgKi8wLAorICAgICAg
LyogdG9rZW4gOiBQcF90YmVnaW4gKi9CbG9jay5fXyg0LCBbLyogUHBfdGJveCAqL1tbLyogW10g
Ki8wXV1dKSwKKyAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICBdOworICAgIHJldHVybiBlbnF1ZXVl
X2FkdmFuY2Uoc3RhdGUsIGVsZW0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9
Cit9CisKK2Z1bmN0aW9uIHBwX2Nsb3NlX3Rib3goc3RhdGUsIF8pIHsKKyAgaWYgKHN0YXRlWy8q
IHBwX2N1cnJfZGVwdGggKi8xM10gPiAxKSB7CisgICAgaWYgKHN0YXRlWy8qIHBwX2N1cnJfZGVw
dGggKi8xM10gPCBzdGF0ZVsvKiBwcF9tYXhfYm94ZXMgKi8xNF0pIHsKKyAgICAgIHZhciBlbGVt
ID0gLyogcmVjb3JkICovWworICAgICAgICAvKiBlbGVtX3NpemUgKi8wLAorICAgICAgICAvKiB0
b2tlbiA6IFBwX3RlbmQgKi8yLAorICAgICAgICAvKiBsZW5ndGggKi8wCisgICAgICBdOworICAg
ICAgZW5xdWV1ZV9hZHZhbmNlKHN0YXRlLCBlbGVtKTsKKyAgICAgIHN0YXRlWy8qIHBwX2N1cnJf
ZGVwdGggKi8xM10gPSBzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdIC0gMSB8IDA7CisgICAg
ICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBw
cF9wcmludF90YnJlYWsoc3RhdGUsIHdpZHRoLCBvZmZzZXQpIHsKKyAgaWYgKHN0YXRlWy8qIHBw
X2N1cnJfZGVwdGggKi8xM10gPCBzdGF0ZVsvKiBwcF9tYXhfYm94ZXMgKi8xNF0pIHsKKyAgICB2
YXIgZWxlbSA9IC8qIHJlY29yZCAqL1sKKyAgICAgIC8qIGVsZW1fc2l6ZSAqLy1zdGF0ZVsvKiBw
cF9yaWdodF90b3RhbCAqLzEyXSB8IDAsCisgICAgICAvKiB0b2tlbiA6IFBwX3RicmVhayAqL0Js
b2NrLl9fKDIsIFsKKyAgICAgICAgICB3aWR0aCwKKyAgICAgICAgICBvZmZzZXQKKyAgICAgICAg
XSksCisgICAgICAvKiBsZW5ndGggKi93aWR0aAorICAgIF07CisgICAgcmV0dXJuIHNjYW5fcHVz
aChzdGF0ZSwgLyogdHJ1ZSAqLzEsIGVsZW0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAw
OworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X3RhYihzdGF0ZSwgXykgeworICByZXR1cm4g
cHBfcHJpbnRfdGJyZWFrKHN0YXRlLCAwLCAwKTsKK30KKworZnVuY3Rpb24gcHBfc2V0X3RhYihz
dGF0ZSwgXykgeworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8q
IHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgIHZhciBlbGVtID0gLyogcmVjb3JkICovWworICAg
ICAgLyogZWxlbV9zaXplICovMCwKKyAgICAgIC8qIHRva2VuIDogUHBfc3RhYiAqLzAsCisgICAg
ICAvKiBsZW5ndGggKi8wCisgICAgXTsKKyAgICByZXR1cm4gZW5xdWV1ZV9hZHZhbmNlKHN0YXRl
LCBlbGVtKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlv
biBwcF9wcmludF9saXN0KF8kc3Rhcm9wdCRzdGFyLCBwcF92LCBwcGYsIF9wYXJhbSkgeworICB3
aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIHZhciAkc3Rhcm9wdCRz
dGFyID0gXyRzdGFyb3B0JHN0YXI7CisgICAgdmFyIHBwX3NlcCA9ICRzdGFyb3B0JHN0YXIgPyAk
c3Rhcm9wdCRzdGFyWzBdIDogcHBfcHJpbnRfY3V0OworICAgIGlmIChwYXJhbSkgeworICAgICAg
dmFyIHZzID0gcGFyYW1bMV07CisgICAgICB2YXIgdiA9IHBhcmFtWzBdOworICAgICAgaWYgKHZz
KSB7CisgICAgICAgIEN1cnJ5Ll8yKHBwX3YsIHBwZiwgdik7CisgICAgICAgIEN1cnJ5Ll8yKHBw
X3NlcCwgcHBmLCAvKiAoKSAqLzApOworICAgICAgICBfcGFyYW0gPSB2czsKKyAgICAgICAgXyRz
dGFyb3B0JHN0YXIgPSAvKiBTb21lICovW3BwX3NlcF07CisgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIEN1cnJ5Ll8yKHBw
X3YsIHBwZiwgdik7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X3RleHQocHBmLCBz
KSB7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIGxlZnQgPSBbMF07CisgIHZhciByaWdo
dCA9IFswXTsKKyAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkgeworICAgIHBwX3ByaW50X3N0cmlu
ZyhwcGYsICQkU3RyaW5nLnN1YihzLCBsZWZ0WzBdLCByaWdodFswXSAtIGxlZnRbMF0gfCAwKSk7
CisgICAgcmlnaHRbMF0gPSByaWdodFswXSArIDEgfCAwOworICAgIGxlZnRbMF0gPSByaWdodFsw
XTsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9OworICB3aGlsZShyaWdodFswXSAhPT0gbGVu
KSB7CisgICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJpbmcuZ2V0KHMsIHJpZ2h0WzBdKTsKKyAgICBp
ZiAobWF0Y2ggIT09IDEwKSB7CisgICAgICBpZiAobWF0Y2ggIT09IDMyKSB7CisgICAgICAgIHJp
Z2h0WzBdID0gcmlnaHRbMF0gKyAxIHwgMDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICBmbHVzaCgvKiAoKSAqLzApOworICAgICAgICBwcF9wcmludF9icmVhayhwcGYsIDEsIDApOwor
ICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGZsdXNoKC8qICgpICovMCk7CisgICAg
ICBwcF9mb3JjZV9uZXdsaW5lKHBwZiwgLyogKCkgKi8wKTsKKyAgICB9CisgIH07CisgIGlmIChs
ZWZ0WzBdICE9PSBsZW4pIHsKKyAgICByZXR1cm4gZmx1c2goLyogKCkgKi8wKTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9zZXRfbWF4X2JveGVz
KHN0YXRlLCBuKSB7CisgIGlmIChuID4gMSkgeworICAgIHN0YXRlWy8qIHBwX21heF9ib3hlcyAq
LzE0XSA9IG47CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9nZXRfbWF4X2JveGVzKHN0YXRlLCBfKSB7Cisg
IHJldHVybiBzdGF0ZVsvKiBwcF9tYXhfYm94ZXMgKi8xNF07Cit9CisKK2Z1bmN0aW9uIHBwX292
ZXJfbWF4X2JveGVzKHN0YXRlLCBfKSB7CisgIHJldHVybiArKHN0YXRlWy8qIHBwX2N1cnJfZGVw
dGggKi8xM10gPT09IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSk7Cit9CisKK2Z1bmN0aW9u
IHBwX3NldF9lbGxpcHNpc190ZXh0KHN0YXRlLCBzKSB7CisgIHN0YXRlWy8qIHBwX2VsbGlwc2lz
ICovMTVdID0gczsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gcHBfZ2V0X2Vs
bGlwc2lzX3RleHQoc3RhdGUsIF8pIHsKKyAgcmV0dXJuIHN0YXRlWy8qIHBwX2VsbGlwc2lzICov
MTVdOworfQorCitmdW5jdGlvbiBwcF9saW1pdChuKSB7CisgIGlmIChuIDwgMTAwMDAwMDAxMCkg
eworICAgIHJldHVybiBuOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAxMDAwMDAwMDA5Owor
ICB9Cit9CisKK2Z1bmN0aW9uIHBwX3NldF9tYXhfaW5kZW50KHN0YXRlLCBuKSB7CisgIHZhciBz
dGF0ZSQxID0gc3RhdGU7CisgIHZhciBuJDEgPSBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSAtIG4g
fCAwOworICBpZiAobiQxID49IDEpIHsKKyAgICB2YXIgbiQyID0gcHBfbGltaXQobiQxKTsKKyAg
ICBzdGF0ZSQxWy8qIHBwX21pbl9zcGFjZV9sZWZ0ICovNl0gPSBuJDI7CisgICAgc3RhdGUkMVsv
KiBwcF9tYXhfaW5kZW50ICovN10gPSBzdGF0ZSQxWy8qIHBwX21hcmdpbiAqLzVdIC0gc3RhdGUk
MVsvKiBwcF9taW5fc3BhY2VfbGVmdCAqLzZdIHwgMDsKKyAgICByZXR1cm4gcHBfcmluaXQoc3Rh
dGUkMSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24g
cHBfZ2V0X21heF9pbmRlbnQoc3RhdGUsIF8pIHsKKyAgcmV0dXJuIHN0YXRlWy8qIHBwX21heF9p
bmRlbnQgKi83XTsKK30KKworZnVuY3Rpb24gcHBfc2V0X21hcmdpbihzdGF0ZSwgbikgeworICBp
ZiAobiA+PSAxKSB7CisgICAgdmFyIG4kMSA9IHBwX2xpbWl0KG4pOworICAgIHN0YXRlWy8qIHBw
X21hcmdpbiAqLzVdID0gbiQxOworICAgIHZhciBuZXdfbWF4X2luZGVudCA9IHN0YXRlWy8qIHBw
X21heF9pbmRlbnQgKi83XSA8PSBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSA/IHN0YXRlWy8qIHBw
X21heF9pbmRlbnQgKi83XSA6IFBlcnZhc2l2ZXMubWF4KFBlcnZhc2l2ZXMubWF4KHN0YXRlWy8q
IHBwX21hcmdpbiAqLzVdIC0gc3RhdGVbLyogcHBfbWluX3NwYWNlX2xlZnQgKi82XSB8IDAsIHN0
YXRlWy8qIHBwX21hcmdpbiAqLzVdIC8gMiB8IDApLCAxKTsKKyAgICByZXR1cm4gcHBfc2V0X21h
eF9pbmRlbnQoc3RhdGUsIG5ld19tYXhfaW5kZW50KTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9nZXRfbWFyZ2luKHN0YXRlLCBfKSB7CisgIHJl
dHVybiBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XTsKK30KKworZnVuY3Rpb24gcHBfc2V0X2Zvcm1h
dHRlcl9vdXRfZnVuY3Rpb25zKHN0YXRlLCBwYXJhbSkgeworICBzdGF0ZVsvKiBwcF9vdXRfc3Ry
aW5nICovMTZdID0gcGFyYW1bLyogb3V0X3N0cmluZyAqLzBdOworICBzdGF0ZVsvKiBwcF9vdXRf
Zmx1c2ggKi8xN10gPSBwYXJhbVsvKiBvdXRfZmx1c2ggKi8xXTsKKyAgc3RhdGVbLyogcHBfb3V0
X25ld2xpbmUgKi8xOF0gPSBwYXJhbVsvKiBvdXRfbmV3bGluZSAqLzJdOworICBzdGF0ZVsvKiBw
cF9vdXRfc3BhY2VzICovMTldID0gcGFyYW1bLyogb3V0X3NwYWNlcyAqLzNdOworICByZXR1cm4g
LyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMo
c3RhdGUsIF8pIHsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBvdXRfc3Ry
aW5nICovc3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSwKKyAgICAgICAgICAvKiBvdXRfZmx1
c2ggKi9zdGF0ZVsvKiBwcF9vdXRfZmx1c2ggKi8xN10sCisgICAgICAgICAgLyogb3V0X25ld2xp
bmUgKi9zdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwKKyAgICAgICAgICAvKiBvdXRfc3Bh
Y2VzICovc3RhdGVbLyogcHBfb3V0X3NwYWNlcyAqLzE5XQorICAgICAgICBdOworfQorCitmdW5j
dGlvbiBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMoc3RhdGUsIGYsIGcpIHsKKyAg
c3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSA9IGY7CisgIHN0YXRlWy8qIHBwX291dF9mbHVz
aCAqLzE3XSA9IGc7CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9m
b3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwgXykgeworICByZXR1cm4gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgc3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSwKKyAgICAgICAgICBz
dGF0ZVsvKiBwcF9vdXRfZmx1c2ggKi8xN10KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gcHBf
c2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwgZiwgZywgaCwgaSkgewor
ICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMoc3RhdGUsIGYsIGcpOworICBzdGF0
ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSA9IGg7CisgIHN0YXRlWy8qIHBwX291dF9zcGFjZXMg
Ki8xOV0gPSBpOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9nZXRfYWxs
X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0YXRlLCBfKSB7CisgIHJldHVybiAvKiB0dXBs
ZSAqL1sKKyAgICAgICAgICBzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLAorICAgICAgICAg
IHN0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XSwKKyAgICAgICAgICBzdGF0ZVsvKiBwcF9vdXRf
bmV3bGluZSAqLzE4XSwKKyAgICAgICAgICBzdGF0ZVsvKiBwcF9vdXRfc3BhY2VzICovMTldCisg
ICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGRpc3BsYXlfbmV3bGluZShzdGF0ZSwgXykgeworICBy
ZXR1cm4gQ3VycnkuXzMoc3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSwgIlxuIiwgMCwgMSk7
Cit9CisKK3ZhciBibGFua19saW5lID0gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5dGVz
Lm1ha2UoODAsIC8qICIgIiAqLzMyKSk7CisKK2Z1bmN0aW9uIGRpc3BsYXlfYmxhbmtzKHN0YXRl
LCBfbikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG4gPSBfbjsKKyAgICBpZiAobiA+IDAp
IHsKKyAgICAgIGlmIChuIDw9IDgwKSB7CisgICAgICAgIHJldHVybiBDdXJyeS5fMyhzdGF0ZVsv
KiBwcF9vdXRfc3RyaW5nICovMTZdLCBibGFua19saW5lLCAwLCBuKTsKKyAgICAgIH0KKyAgICAg
IGVsc2UgeworICAgICAgICBDdXJyeS5fMyhzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLCBi
bGFua19saW5lLCAwLCA4MCk7CisgICAgICAgIF9uID0gbiAtIDgwIHwgMDsKKyAgICAgICAgY29u
dGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2No
YW5uZWwoc3RhdGUsIG9zKSB7CisgIHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0gPSBmdW5j
dGlvbiAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpIHsKKyAgICByZXR1cm4gUGVydmFzaXZlcy5v
dXRwdXRfc3Vic3RyaW5nKG9zLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMik7CisgIH07CisgIHN0
YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XSA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gQ2Ft
bF9pby5jYW1sX21sX2ZsdXNoKG9zKTsKKyAgfTsKKyAgc3RhdGVbLyogcHBfb3V0X25ld2xpbmUg
Ki8xOF0gPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICByZXR1cm4gZGlzcGxheV9uZXdsaW5lKHN0
YXRlLCBwYXJhbSk7CisgIH07CisgIHN0YXRlWy8qIHBwX291dF9zcGFjZXMgKi8xOV0gPSBmdW5j
dGlvbiAocGFyYW0pIHsKKyAgICByZXR1cm4gZGlzcGxheV9ibGFua3Moc3RhdGUsIHBhcmFtKTsK
KyAgfTsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gZGVmYXVsdF9wcF9tYXJr
X29wZW5fdGFnKHMpIHsKKyAgcmV0dXJuICI8IiArIChzICsgIj4iKTsKK30KKworZnVuY3Rpb24g
ZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyhzKSB7CisgIHJldHVybiAiPC8iICsgKHMgKyAiPiIp
OworfQorCitmdW5jdGlvbiBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnKCkgeworICByZXR1cm4g
LyogKCkgKi8wOworfQorCitmdW5jdGlvbiBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZygpIHsK
KyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gcHBfbWFrZV9mb3JtYXR0ZXIoZiwg
ZywgaCwgaSkgeworICB2YXIgcHBfcSA9IC8qIHJlY29yZCAqL1sKKyAgICAvKiBpbnNlcnQgOiBO
aWwgKi8wLAorICAgIC8qIGJvZHkgOiBOaWwgKi8wCisgIF07CisgIHZhciBzeXNfdG9rID0gLyog
cmVjb3JkICovWworICAgIC8qIGVsZW1fc2l6ZSAqLy0xLAorICAgIC8qIHRva2VuIDogUHBfYmVn
aW4gKi9CbG9jay5fXygzLCBbCisgICAgICAgIDAsCisgICAgICAgIC8qIFBwX2hvdmJveCAqLzMK
KyAgICAgIF0pLAorICAgIC8qIGxlbmd0aCAqLzAKKyAgXTsKKyAgYWRkX3F1ZXVlKHN5c190b2ss
IHBwX3EpOworICB2YXIgc3lzX3NjYW5fc3RhY2tfMDAwID0gLyogU2Nhbl9lbGVtICovWworICAg
IDEsCisgICAgc3lzX3RvaworICBdOworICB2YXIgc3lzX3NjYW5fc3RhY2sgPSAvKiA6OiAqL1sK
KyAgICBzeXNfc2Nhbl9zdGFja18wMDAsCisgICAgc2Nhbl9zdGFja19ib3R0b20KKyAgXTsKKyAg
cmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBwcF9zY2FuX3N0YWNrICovc3lzX3Nj
YW5fc3RhY2ssCisgICAgICAgICAgLyogcHBfZm9ybWF0X3N0YWNrIDogW10gKi8wLAorICAgICAg
ICAgIC8qIHBwX3Rib3hfc3RhY2sgOiBbXSAqLzAsCisgICAgICAgICAgLyogcHBfdGFnX3N0YWNr
IDogW10gKi8wLAorICAgICAgICAgIC8qIHBwX21hcmtfc3RhY2sgOiBbXSAqLzAsCisgICAgICAg
ICAgLyogcHBfbWFyZ2luICovNzgsCisgICAgICAgICAgLyogcHBfbWluX3NwYWNlX2xlZnQgKi8x
MCwKKyAgICAgICAgICAvKiBwcF9tYXhfaW5kZW50ICovNjgsCisgICAgICAgICAgLyogcHBfc3Bh
Y2VfbGVmdCAqLzc4LAorICAgICAgICAgIC8qIHBwX2N1cnJlbnRfaW5kZW50ICovMCwKKyAgICAg
ICAgICAvKiBwcF9pc19uZXdfbGluZSA6IHRydWUgKi8xLAorICAgICAgICAgIC8qIHBwX2xlZnRf
dG90YWwgKi8xLAorICAgICAgICAgIC8qIHBwX3JpZ2h0X3RvdGFsICovMSwKKyAgICAgICAgICAv
KiBwcF9jdXJyX2RlcHRoICovMSwKKyAgICAgICAgICAvKiBwcF9tYXhfYm94ZXMgKi9QZXJ2YXNp
dmVzLm1heF9pbnQsCisgICAgICAgICAgLyogcHBfZWxsaXBzaXMgKi8iLiIsCisgICAgICAgICAg
LyogcHBfb3V0X3N0cmluZyAqL2YsCisgICAgICAgICAgLyogcHBfb3V0X2ZsdXNoICovZywKKyAg
ICAgICAgICAvKiBwcF9vdXRfbmV3bGluZSAqL2gsCisgICAgICAgICAgLyogcHBfb3V0X3NwYWNl
cyAqL2ksCisgICAgICAgICAgLyogcHBfcHJpbnRfdGFncyA6IGZhbHNlICovMCwKKyAgICAgICAg
ICAvKiBwcF9tYXJrX3RhZ3MgOiBmYWxzZSAqLzAsCisgICAgICAgICAgLyogcHBfbWFya19vcGVu
X3RhZyAqL2RlZmF1bHRfcHBfbWFya19vcGVuX3RhZywKKyAgICAgICAgICAvKiBwcF9tYXJrX2Ns
b3NlX3RhZyAqL2RlZmF1bHRfcHBfbWFya19jbG9zZV90YWcsCisgICAgICAgICAgLyogcHBfcHJp
bnRfb3Blbl90YWcgKi9kZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnLAorICAgICAgICAgIC8qIHBw
X3ByaW50X2Nsb3NlX3RhZyAqL2RlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnLAorICAgICAgICAg
IC8qIHBwX3F1ZXVlICovcHBfcQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBtYWtlX2Zvcm1h
dHRlcihvdXRwdXQsIGZsdXNoKSB7CisgIHZhciBwcGYgPSBwcF9tYWtlX2Zvcm1hdHRlcihvdXRw
dXQsIGZsdXNoLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAg
ICB9LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9KTsK
KyAgcHBmWy8qIHBwX291dF9uZXdsaW5lICovMThdID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAg
cmV0dXJuIGRpc3BsYXlfbmV3bGluZShwcGYsIHBhcmFtKTsKKyAgfTsKKyAgcHBmWy8qIHBwX291
dF9zcGFjZXMgKi8xOV0gPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICByZXR1cm4gZGlzcGxheV9i
bGFua3MocHBmLCBwYXJhbSk7CisgIH07CisgIHJldHVybiBwcGY7Cit9CisKK2Z1bmN0aW9uIGZv
cm1hdHRlcl9vZl9vdXRfY2hhbm5lbChvYykgeworICByZXR1cm4gbWFrZV9mb3JtYXR0ZXIoZnVu
Y3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKSB7CisgICAgICAgICAgICAgIHJldHVybiBQ
ZXJ2YXNpdmVzLm91dHB1dF9zdWJzdHJpbmcob2MsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsK
KyAgICAgICAgICAgIH0sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIENhbWxf
aW8uY2FtbF9tbF9mbHVzaChvYyk7CisgICAgICAgICAgICB9KTsKK30KKworZnVuY3Rpb24gZm9y
bWF0dGVyX29mX2J1ZmZlcihiKSB7CisgIHJldHVybiBtYWtlX2Zvcm1hdHRlcihmdW5jdGlvbiAo
cGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5h
ZGRfc3Vic3RyaW5nKGIsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsKKyAgICAgICAgICAgIH0s
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAg
ICAgIH0pOworfQorCit2YXIgc3RkYnVmID0gQnVmZmVyLmNyZWF0ZSg1MTIpOworCit2YXIgc3Rk
X2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbChQZXJ2YXNpdmVzLnN0ZG91dCk7
CisKK3ZhciBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsKFBlcnZhc2l2
ZXMuc3RkZXJyKTsKKwordmFyIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyKHN0
ZGJ1Zik7CisKK2Z1bmN0aW9uIGZsdXNoX3N0cl9mb3JtYXR0ZXIoKSB7CisgIHBwX2ZsdXNoX3F1
ZXVlKHN0cl9mb3JtYXR0ZXIsIC8qIGZhbHNlICovMCk7CisgIHZhciBzID0gQnVmZmVyLmNvbnRl
bnRzKHN0ZGJ1Zik7CisgIEJ1ZmZlci5yZXNldChzdGRidWYpOworICByZXR1cm4gczsKK30KKwor
ZnVuY3Rpb24gZmx1c2hfYnVmX2Zvcm1hdHRlcihidWYsIHBwZikgeworICBwcF9mbHVzaF9xdWV1
ZShwcGYsIC8qIGZhbHNlICovMCk7CisgIHZhciBzID0gQnVmZmVyLmNvbnRlbnRzKGJ1Zik7Cisg
IEJ1ZmZlci5yZXNldChidWYpOworICByZXR1cm4gczsKK30KKworZnVuY3Rpb24gb3Blbl9oYm94
KHBhcmFtKSB7CisgIHJldHVybiBwcF9vcGVuX2hib3goc3RkX2Zvcm1hdHRlciwgcGFyYW0pOwor
fQorCitmdW5jdGlvbiBvcGVuX3Zib3gocGFyYW0pIHsKKyAgcmV0dXJuIHBwX29wZW5fdmJveChz
dGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5faHZib3gocGFyYW0pIHsK
KyAgcmV0dXJuIHBwX29wZW5faHZib3goc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5j
dGlvbiBvcGVuX2hvdmJveChwYXJhbSkgeworICByZXR1cm4gcHBfb3Blbl9ob3Zib3goc3RkX2Zv
cm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBvcGVuX2JveChwYXJhbSkgeworICByZXR1
cm4gcHBfb3Blbl9ib3goc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBjbG9z
ZV9ib3gocGFyYW0pIHsKKyAgcmV0dXJuIHBwX2Nsb3NlX2JveChzdGRfZm9ybWF0dGVyLCBwYXJh
bSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5fdGFnKHBhcmFtKSB7CisgIHJldHVybiBwcF9vcGVuX3Rh
ZyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGNsb3NlX3RhZyhwYXJhbSkg
eworICByZXR1cm4gcHBfY2xvc2VfdGFnKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVu
Y3Rpb24gcHJpbnRfYXMocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIHBwX3ByaW50X2FzKHN0
ZF9mb3JtYXR0ZXIsIHBhcmFtLCBwYXJhbSQxKTsKK30KKworZnVuY3Rpb24gcHJpbnRfc3RyaW5n
KHBhcmFtKSB7CisgIHJldHVybiBwcF9wcmludF9zdHJpbmcoc3RkX2Zvcm1hdHRlciwgcGFyYW0p
OworfQorCitmdW5jdGlvbiBwcmludF9pbnQocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3ByaW50X3N0
cmluZyhzdGRfZm9ybWF0dGVyLCAiIiArIHBhcmFtKTsKK30KKworZnVuY3Rpb24gcHJpbnRfZmxv
YXQocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGRfZm9ybWF0dGVyLCBQZXJ2
YXNpdmVzLnN0cmluZ19vZl9mbG9hdChwYXJhbSkpOworfQorCitmdW5jdGlvbiBwcmludF9jaGFy
KHBhcmFtKSB7CisgIHJldHVybiBwcF9wcmludF9jaGFyKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsK
K30KKworZnVuY3Rpb24gcHJpbnRfYm9vbChwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfc3Ry
aW5nKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtID8gInRydWUiIDogImZhbHNlIik7Cit9CisKK2Z1bmN0
aW9uIHByaW50X2JyZWFrKHBhcmFtLCBwYXJhbSQxKSB7CisgIHJldHVybiBwcF9wcmludF9icmVh
ayhzdGRfZm9ybWF0dGVyLCBwYXJhbSwgcGFyYW0kMSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X2N1
dCgpIHsKKyAgcmV0dXJuIHBwX3ByaW50X2JyZWFrKHN0ZF9mb3JtYXR0ZXIsIDAsIDApOworfQor
CitmdW5jdGlvbiBwcmludF9zcGFjZSgpIHsKKyAgcmV0dXJuIHBwX3ByaW50X2JyZWFrKHN0ZF9m
b3JtYXR0ZXIsIDEsIDApOworfQorCitmdW5jdGlvbiBmb3JjZV9uZXdsaW5lKHBhcmFtKSB7Cisg
IHJldHVybiBwcF9mb3JjZV9uZXdsaW5lKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVu
Y3Rpb24gcHJpbnRfZmx1c2gocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3ByaW50X2ZsdXNoKHN0ZF9m
b3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gcHJpbnRfbmV3bGluZShwYXJhbSkgewor
ICByZXR1cm4gcHBfcHJpbnRfbmV3bGluZShzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1
bmN0aW9uIHByaW50X2lmX25ld2xpbmUocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3ByaW50X2lmX25l
d2xpbmUoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBvcGVuX3Rib3gocGFy
YW0pIHsKKyAgcmV0dXJuIHBwX29wZW5fdGJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisK
K2Z1bmN0aW9uIGNsb3NlX3Rib3gocGFyYW0pIHsKKyAgcmV0dXJuIHBwX2Nsb3NlX3Rib3goc3Rk
X2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmludF90YnJlYWsocGFyYW0sIHBh
cmFtJDEpIHsKKyAgcmV0dXJuIHBwX3ByaW50X3RicmVhayhzdGRfZm9ybWF0dGVyLCBwYXJhbSwg
cGFyYW0kMSk7Cit9CisKK2Z1bmN0aW9uIHNldF90YWIocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3Nl
dF90YWIoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmludF90YWIoKSB7
CisgIHJldHVybiBwcF9wcmludF90YnJlYWsoc3RkX2Zvcm1hdHRlciwgMCwgMCk7Cit9CisKK2Z1
bmN0aW9uIHNldF9tYXJnaW4ocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3NldF9tYXJnaW4oc3RkX2Zv
cm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBnZXRfbWFyZ2luKCkgeworICByZXR1cm4g
c3RkX2Zvcm1hdHRlclsvKiBwcF9tYXJnaW4gKi81XTsKK30KKworZnVuY3Rpb24gc2V0X21heF9p
bmRlbnQocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3NldF9tYXhfaW5kZW50KHN0ZF9mb3JtYXR0ZXIs
IHBhcmFtKTsKK30KKworZnVuY3Rpb24gZ2V0X21heF9pbmRlbnQoKSB7CisgIHJldHVybiBzdGRf
Zm9ybWF0dGVyWy8qIHBwX21heF9pbmRlbnQgKi83XTsKK30KKworZnVuY3Rpb24gc2V0X21heF9i
b3hlcyhwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X21heF9ib3hlcyhzdGRfZm9ybWF0dGVyLCBw
YXJhbSk7Cit9CisKK2Z1bmN0aW9uIGdldF9tYXhfYm94ZXMoKSB7CisgIHJldHVybiBzdGRfZm9y
bWF0dGVyWy8qIHBwX21heF9ib3hlcyAqLzE0XTsKK30KKworZnVuY3Rpb24gb3Zlcl9tYXhfYm94
ZXMocGFyYW0pIHsKKyAgcmV0dXJuIHBwX292ZXJfbWF4X2JveGVzKHN0ZF9mb3JtYXR0ZXIsIHBh
cmFtKTsKK30KKworZnVuY3Rpb24gc2V0X2VsbGlwc2lzX3RleHQocGFyYW0pIHsKKyAgc3RkX2Zv
cm1hdHRlclsvKiBwcF9lbGxpcHNpcyAqLzE1XSA9IHBhcmFtOworICByZXR1cm4gLyogKCkgKi8w
OworfQorCitmdW5jdGlvbiBnZXRfZWxsaXBzaXNfdGV4dCgpIHsKKyAgcmV0dXJuIHN0ZF9mb3Jt
YXR0ZXJbLyogcHBfZWxsaXBzaXMgKi8xNV07Cit9CisKK2Z1bmN0aW9uIHNldF9mb3JtYXR0ZXJf
b3V0X2NoYW5uZWwocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5u
ZWwoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBzZXRfZm9ybWF0dGVyX291
dF9mdW5jdGlvbnMocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0
aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGdldF9mb3JtYXR0ZXJf
b3V0X2Z1bmN0aW9ucyhwYXJhbSkgeworICByZXR1cm4gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVu
Y3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gc2V0X2Zvcm1hdHRl
cl9vdXRwdXRfZnVuY3Rpb25zKHBhcmFtLCBwYXJhbSQxKSB7CisgIHJldHVybiBwcF9zZXRfZm9y
bWF0dGVyX291dHB1dF9mdW5jdGlvbnMoc3RkX2Zvcm1hdHRlciwgcGFyYW0sIHBhcmFtJDEpOwor
fQorCitmdW5jdGlvbiBnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMocGFyYW0pIHsKKyAg
cmV0dXJuIHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBw
YXJhbSk7Cit9CisKK2Z1bmN0aW9uIHNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMo
cGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpIHsKKyAgcmV0dXJuIHBwX3NldF9hbGxf
Zm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMoc3RkX2Zvcm1hdHRlciwgcGFyYW0sIHBhcmFtJDEs
IHBhcmFtJDIsIHBhcmFtJDMpOworfQorCitmdW5jdGlvbiBnZXRfYWxsX2Zvcm1hdHRlcl9vdXRw
dXRfZnVuY3Rpb25zKHBhcmFtKSB7CisgIHJldHVybiBwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRw
dXRfZnVuY3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gc2V0X2Zv
cm1hdHRlcl90YWdfZnVuY3Rpb25zKHBhcmFtKSB7CisgIHJldHVybiBwcF9zZXRfZm9ybWF0dGVy
X3RhZ19mdW5jdGlvbnMoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBnZXRf
Zm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMocGFyYW0pIHsKKyAgcmV0dXJuIHBwX2dldF9mb3JtYXR0
ZXJfdGFnX2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHNl
dF9wcmludF90YWdzKHBhcmFtKSB7CisgIHN0ZF9mb3JtYXR0ZXJbLyogcHBfcHJpbnRfdGFncyAq
LzIwXSA9IHBhcmFtOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBnZXRfcHJp
bnRfdGFncygpIHsKKyAgcmV0dXJuIHN0ZF9mb3JtYXR0ZXJbLyogcHBfcHJpbnRfdGFncyAqLzIw
XTsKK30KKworZnVuY3Rpb24gc2V0X21hcmtfdGFncyhwYXJhbSkgeworICBzdGRfZm9ybWF0dGVy
Wy8qIHBwX21hcmtfdGFncyAqLzIxXSA9IHBhcmFtOworICByZXR1cm4gLyogKCkgKi8wOworfQor
CitmdW5jdGlvbiBnZXRfbWFya190YWdzKCkgeworICByZXR1cm4gc3RkX2Zvcm1hdHRlclsvKiBw
cF9tYXJrX3RhZ3MgKi8yMV07Cit9CisKK2Z1bmN0aW9uIHNldF90YWdzKHBhcmFtKSB7CisgIHJl
dHVybiBwcF9zZXRfdGFncyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGNv
bXB1dGVfdGFnKG91dHB1dCwgdGFnX2FjYykgeworICB2YXIgYnVmID0gQnVmZmVyLmNyZWF0ZSgx
Nik7CisgIHZhciBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyKGJ1Zik7CisgIEN1cnJ5Ll8yKG91
dHB1dCwgcHBmLCB0YWdfYWNjKTsKKyAgcHBfcHJpbnRfZmx1c2gocHBmLCAvKiAoKSAqLzApOwor
ICB2YXIgbGVuID0gYnVmWy8qIHBvc2l0aW9uICovMV07CisgIGlmIChsZW4gPCAyKSB7CisgICAg
cmV0dXJuIEJ1ZmZlci5jb250ZW50cyhidWYpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBC
dWZmZXIuc3ViKGJ1ZiwgMSwgbGVuIC0gMiB8IDApOworICB9Cit9CisKK2Z1bmN0aW9uIG91dHB1
dF9mb3JtYXR0aW5nX2xpdChwcGYsIGZtdGluZ19saXQpIHsKKyAgaWYgKHR5cGVvZiBmbXRpbmdf
bGl0ID09PSAibnVtYmVyIikgeworICAgIHN3aXRjaCAoZm10aW5nX2xpdCkgeworICAgICAgY2Fz
ZSAwIDogCisgICAgICAgICAgcmV0dXJuIHBwX2Nsb3NlX2JveChwcGYsIC8qICgpICovMCk7Cisg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gcHBfY2xvc2VfdGFnKHBwZiwgLyogKCkg
Ki8wKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiBwcF9wcmludF9mbHVzaChw
cGYsIC8qICgpICovMCk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gcHBfZm9y
Y2VfbmV3bGluZShwcGYsIC8qICgpICovMCk7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICBy
ZXR1cm4gcHBfcHJpbnRfbmV3bGluZShwcGYsIC8qICgpICovMCk7CisgICAgICBjYXNlIDUgOiAK
KyAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfY2hhcihwcGYsIC8qICJAIiAqLzY0KTsKKyAgICAg
IGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBwcF9wcmludF9jaGFyKHBwZiwgLyogIiUiICov
MzcpOworICAgICAgCisgICAgfQorICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAoZm10aW5nX2xp
dC50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gcHBfcHJpbnRf
YnJlYWsocHBmLCBmbXRpbmdfbGl0WzFdLCBmbXRpbmdfbGl0WzJdKTsKKyAgICAgIGNhc2UgMSA6
IAorICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAg
ICBwcF9wcmludF9jaGFyKHBwZiwgLyogIkAiICovNjQpOworICAgICAgICAgIHJldHVybiBwcF9w
cmludF9jaGFyKHBwZiwgZm10aW5nX2xpdFswXSk7CisgICAgICAKKyAgICB9CisgIH0KK30KKwor
ZnVuY3Rpb24gb3V0cHV0X2FjYyhwcGYsIGFjYykgeworICB2YXIgZXhpdCA9IDA7CisgIHZhciBw
OworICB2YXIgc2l6ZTsKKyAgdmFyIHM7CisgIHZhciBwJDE7CisgIHZhciBzaXplJDE7CisgIHZh
ciBjOworICBpZiAodHlwZW9mIGFjYyA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gLyogKCkg
Ki8wOworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAoYWNjLnRhZyB8IDApIHsKKyAgICAgIGNh
c2UgMCA6IAorICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBhY2NbMF0pOworICAgICAgICAgIHJl
dHVybiBvdXRwdXRfZm9ybWF0dGluZ19saXQocHBmLCBhY2NbMV0pOworICAgICAgY2FzZSAxIDog
CisgICAgICAgICAgdmFyIG1hdGNoID0gYWNjWzFdOworICAgICAgICAgIHZhciBwJDIgPSBhY2Nb
MF07CisgICAgICAgICAgb3V0cHV0X2FjYyhwcGYsIHAkMik7CisgICAgICAgICAgaWYgKG1hdGNo
LnRhZykgeworICAgICAgICAgICAgdmFyIG1hdGNoJDEgPSBDYW1saW50ZXJuYWxGb3JtYXQub3Bl
bl9ib3hfb2Zfc3RyaW5nKGNvbXB1dGVfdGFnKG91dHB1dF9hY2MsIG1hdGNoWzBdKSk7CisgICAg
ICAgICAgICByZXR1cm4gcHBfb3Blbl9ib3hfZ2VuKHBwZiwgbWF0Y2gkMVswXSwgbWF0Y2gkMVsx
XSk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHBw
X29wZW5fdGFnKHBwZiwgY29tcHV0ZV90YWcob3V0cHV0X2FjYywgbWF0Y2hbMF0pKTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICB2YXIg
cCQzID0gYWNjWzBdOworICAgICAgICAgIHZhciBleGl0JDEgPSAwOworICAgICAgICAgIGlmICh0
eXBlb2YgcCQzID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgZXhpdCQxID0gMzsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSBpZiAocCQzLnRhZykgeworICAgICAgICAgICAgZXhpdCQx
ID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkMiA9IHAkM1sxXTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkMiA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgICAgZXhpdCQxID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgaWYgKG1hdGNoJDIudGFnID09PSAxKSB7CisgICAgICAgICAgICAgIHAgPSBwJDNb
MF07CisgICAgICAgICAgICAgIHNpemUgPSBtYXRjaCQyWzFdOworICAgICAgICAgICAgICBzID0g
YWNjWzFdOworICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICBleGl0JDEgPSAzOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgICBpZiAoZXhpdCQxID09PSAzKSB7CisgICAgICAgICAgICBvdXRw
dXRfYWNjKHBwZiwgcCQzKTsKKyAgICAgICAgICAgIHJldHVybiBwcF9wcmludF9zdHJpbmcocHBm
LCBhY2NbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMyA6
IAorICAgICAgICAgIHZhciBwJDQgPSBhY2NbMF07CisgICAgICAgICAgdmFyIGV4aXQkMiA9IDA7
CisgICAgICAgICAgaWYgKHR5cGVvZiBwJDQgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBl
eGl0JDIgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChwJDQudGFnKSB7Cisg
ICAgICAgICAgICBleGl0JDIgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHZhciBtYXRjaCQzID0gcCQ0WzFdOworICAgICAgICAgICAgaWYgKHR5cGVvZiBt
YXRjaCQzID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgICBleGl0JDIgPSAzOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMy50YWcgPT09IDEpIHsKKyAgICAg
ICAgICAgICAgcCQxID0gcCQ0WzBdOworICAgICAgICAgICAgICBzaXplJDEgPSBtYXRjaCQzWzFd
OworICAgICAgICAgICAgICBjID0gYWNjWzFdOworICAgICAgICAgICAgICBleGl0ID0gMjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBleGl0JDIgPSAz
OworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoZXhpdCQyID09PSAz
KSB7CisgICAgICAgICAgICBvdXRwdXRfYWNjKHBwZiwgcCQ0KTsKKyAgICAgICAgICAgIHJldHVy
biBwcF9wcmludF9jaGFyKHBwZiwgYWNjWzFdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICB2YXIgcCQ1ID0gYWNjWzBdOworICAgICAg
ICAgIHZhciBleGl0JDMgPSAwOworICAgICAgICAgIGlmICh0eXBlb2YgcCQ1ID09PSAibnVtYmVy
IikgeworICAgICAgICAgICAgZXhpdCQzID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSBpZiAocCQ1LnRhZykgeworICAgICAgICAgICAgZXhpdCQzID0gMzsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IHAkNVsxXTsKKyAgICAg
ICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkNCA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAg
ZXhpdCQzID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDQu
dGFnID09PSAxKSB7CisgICAgICAgICAgICAgIHAgPSBwJDVbMF07CisgICAgICAgICAgICAgIHNp
emUgPSBtYXRjaCQ0WzFdOworICAgICAgICAgICAgICBzID0gYWNjWzFdOworICAgICAgICAgICAg
ICBleGl0ID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICBleGl0JDMgPSAzOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBp
ZiAoZXhpdCQzID09PSAzKSB7CisgICAgICAgICAgICBvdXRwdXRfYWNjKHBwZiwgcCQ1KTsKKyAg
ICAgICAgICAgIHJldHVybiBwcF9wcmludF9zdHJpbmcocHBmLCBhY2NbMV0pOworICAgICAgICAg
IH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHZhciBwJDYg
PSBhY2NbMF07CisgICAgICAgICAgdmFyIGV4aXQkNCA9IDA7CisgICAgICAgICAgaWYgKHR5cGVv
ZiBwJDYgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBleGl0JDQgPSAzOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIGlmIChwJDYudGFnKSB7CisgICAgICAgICAgICBleGl0JDQgPSAz
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ1
ID0gcCQ2WzFdOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQ1ID09PSAibnVtYmVyIikg
eworICAgICAgICAgICAgICBleGl0JDQgPSAzOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSBpZiAobWF0Y2gkNS50YWcgPT09IDEpIHsKKyAgICAgICAgICAgICAgcCQxID0gcCQ2WzBd
OworICAgICAgICAgICAgICBzaXplJDEgPSBtYXRjaCQ1WzFdOworICAgICAgICAgICAgICBjID0g
YWNjWzFdOworICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICBleGl0JDQgPSAzOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgICBpZiAoZXhpdCQ0ID09PSAzKSB7CisgICAgICAgICAgICBvdXRw
dXRfYWNjKHBwZiwgcCQ2KTsKKyAgICAgICAgICAgIHJldHVybiBwcF9wcmludF9jaGFyKHBwZiwg
YWNjWzFdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDYgOiAK
KyAgICAgICAgICBvdXRwdXRfYWNjKHBwZiwgYWNjWzBdKTsKKyAgICAgICAgICByZXR1cm4gQ3Vy
cnkuXzEoYWNjWzFdLCBwcGYpOworICAgICAgY2FzZSA3IDogCisgICAgICAgICAgb3V0cHV0X2Fj
YyhwcGYsIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2ZsdXNoKHBwZiwgLyog
KCkgKi8wKTsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBhY2Nb
MF0pOworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAgIGFjY1sxXQorICAgICAg
ICAgICAgICBdOworICAgICAgCisgICAgfQorICB9CisgIHN3aXRjaCAoZXhpdCkgeworICAgIGNh
c2UgMSA6IAorICAgICAgICBvdXRwdXRfYWNjKHBwZiwgcCk7CisgICAgICAgIHJldHVybiBwcF9w
cmludF9hc19zaXplKHBwZiwgc2l6ZSwgcyk7CisgICAgY2FzZSAyIDogCisgICAgICAgIG91dHB1
dF9hY2MocHBmLCBwJDEpOworICAgICAgICByZXR1cm4gcHBfcHJpbnRfYXNfc2l6ZShwcGYsIHNp
emUkMSwgQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5dGVzLm1ha2UoMSwgYykpKTsKKyAg
ICAKKyAgfQorfQorCitmdW5jdGlvbiBzdHJwdXRfYWNjKHBwZiwgYWNjKSB7CisgIHZhciBleGl0
ID0gMDsKKyAgdmFyIHA7CisgIHZhciBzaXplOworICB2YXIgczsKKyAgdmFyIHAkMTsKKyAgdmFy
IHNpemUkMTsKKyAgdmFyIGM7CisgIGlmICh0eXBlb2YgYWNjID09PSAibnVtYmVyIikgeworICAg
IHJldHVybiAvKiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChhY2MudGFnIHwg
MCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIGFjY1swXSk7
CisgICAgICAgICAgcmV0dXJuIG91dHB1dF9mb3JtYXR0aW5nX2xpdChwcGYsIGFjY1sxXSk7Cisg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB2YXIgbWF0Y2ggPSBhY2NbMV07CisgICAgICAgICAg
dmFyIHAkMiA9IGFjY1swXTsKKyAgICAgICAgICBzdHJwdXRfYWNjKHBwZiwgcCQyKTsKKyAgICAg
ICAgICBpZiAobWF0Y2gudGFnKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IENhbWxpbnRl
cm5hbEZvcm1hdC5vcGVuX2JveF9vZl9zdHJpbmcoY29tcHV0ZV90YWcoc3RycHV0X2FjYywgbWF0
Y2hbMF0pKTsKKyAgICAgICAgICAgIHJldHVybiBwcF9vcGVuX2JveF9nZW4ocHBmLCBtYXRjaCQx
WzBdLCBtYXRjaCQxWzFdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICByZXR1cm4gcHBfb3Blbl90YWcocHBmLCBjb21wdXRlX3RhZyhzdHJwdXRfYWNjLCBtYXRj
aFswXSkpOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAor
ICAgICAgICAgIHZhciBwJDMgPSBhY2NbMF07CisgICAgICAgICAgdmFyIGV4aXQkMSA9IDA7Cisg
ICAgICAgICAgaWYgKHR5cGVvZiBwJDMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBleGl0
JDEgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChwJDMudGFnKSB7CisgICAg
ICAgICAgICBleGl0JDEgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHZhciBtYXRjaCQyID0gcCQzWzFdOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXRj
aCQyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgICBleGl0JDEgPSAzOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMi50YWcgPT09IDEpIHsKKyAgICAgICAg
ICAgICAgcCA9IHAkM1swXTsKKyAgICAgICAgICAgICAgc2l6ZSA9IG1hdGNoJDJbMV07CisgICAg
ICAgICAgICAgIHMgPSBhY2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQkMSA9IDM7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDEgPT09IDMpIHsKKyAg
ICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDMpOworICAgICAgICAgICAgcmV0dXJuIHBwX3By
aW50X3N0cmluZyhwcGYsIGFjY1sxXSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAzIDogCisgICAgICAgICAgdmFyIHAkNCA9IGFjY1swXTsKKyAgICAgICAgICB2
YXIgZXhpdCQyID0gMDsKKyAgICAgICAgICBpZiAodHlwZW9mIHAkNCA9PT0gIm51bWJlciIpIHsK
KyAgICAgICAgICAgIGV4aXQkMiA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYg
KHAkNC50YWcpIHsKKyAgICAgICAgICAgIGV4aXQkMiA9IDM7CisgICAgICAgICAgfQorICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIG1hdGNoJDMgPSBwJDRbMV07CisgICAgICAgICAg
ICBpZiAodHlwZW9mIG1hdGNoJDMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQk
MiA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQzLnRhZyA9
PT0gMSkgeworICAgICAgICAgICAgICBwJDEgPSBwJDRbMF07CisgICAgICAgICAgICAgIHNpemUk
MSA9IG1hdGNoJDNbMV07CisgICAgICAgICAgICAgIGMgPSBhY2NbMV07CisgICAgICAgICAgICAg
IGV4aXQgPSAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgIGV4aXQkMiA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlm
IChleGl0JDIgPT09IDMpIHsKKyAgICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDQpOworICAg
ICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIocHBmLCBhY2NbMV0pOworICAgICAgICAgIH0K
KyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHZhciBwJDUgPSBh
Y2NbMF07CisgICAgICAgICAgdmFyIGV4aXQkMyA9IDA7CisgICAgICAgICAgaWYgKHR5cGVvZiBw
JDUgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBleGl0JDMgPSAzOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIGlmIChwJDUudGFnKSB7CisgICAgICAgICAgICBleGl0JDMgPSAzOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0g
cCQ1WzFdOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQ0ID09PSAibnVtYmVyIikgewor
ICAgICAgICAgICAgICBleGl0JDMgPSAzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSBpZiAobWF0Y2gkNC50YWcgPT09IDEpIHsKKyAgICAgICAgICAgICAgcCA9IHAkNVswXTsKKyAg
ICAgICAgICAgICAgc2l6ZSA9IG1hdGNoJDRbMV07CisgICAgICAgICAgICAgIHMgPSBhY2NbMV07
CisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAg
fQorICAgICAgICAgIGlmIChleGl0JDMgPT09IDMpIHsKKyAgICAgICAgICAgIHN0cnB1dF9hY2Mo
cHBmLCBwJDUpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIGFjY1sx
XSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAg
ICAgICAgdmFyIHAkNiA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQ0ID0gMDsKKyAgICAg
ICAgICBpZiAodHlwZW9mIHAkNiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9
IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkNi50YWcpIHsKKyAgICAgICAg
ICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgdmFyIG1hdGNoJDUgPSBwJDZbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDUg
PT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQ1LnRhZyA9PT0gMSkgeworICAgICAgICAgICAg
ICBwJDEgPSBwJDZbMF07CisgICAgICAgICAgICAgIHNpemUkMSA9IG1hdGNoJDVbMV07CisgICAg
ICAgICAgICAgIGMgPSBhY2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDQgPT09IDMpIHsKKyAg
ICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDYpOworICAgICAgICAgICAgcmV0dXJuIHBwX3By
aW50X2NoYXIocHBmLCBhY2NbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgNiA6IAorICAgICAgICAgIHZhciBwJDcgPSBhY2NbMF07CisgICAgICAgICAgdmFy
IGV4aXQkNSA9IDA7CisgICAgICAgICAgaWYgKHR5cGVvZiBwJDcgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICBleGl0JDUgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChw
JDcudGFnKSB7CisgICAgICAgICAgICBleGl0JDUgPSAzOworICAgICAgICAgIH0KKyAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ2ID0gcCQ3WzFdOworICAgICAgICAgICAg
aWYgKHR5cGVvZiBtYXRjaCQ2ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgICBleGl0JDUg
PSAzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkNi50YWcgPT09
IDEpIHsKKyAgICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkN1swXSk7CisgICAgICAgICAg
ICAgIHJldHVybiBwcF9wcmludF9hc19zaXplKHBwZiwgbWF0Y2gkNlsxXSwgQ3VycnkuXzEoYWNj
WzFdLCAvKiAoKSAqLzApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICBleGl0JDUgPSAzOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAg
ICAgICBpZiAoZXhpdCQ1ID09PSAzKSB7CisgICAgICAgICAgICBzdHJwdXRfYWNjKHBwZiwgcCQ3
KTsKKyAgICAgICAgICAgIHJldHVybiBwcF9wcmludF9zdHJpbmcocHBmLCBDdXJyeS5fMShhY2Nb
MV0sIC8qICgpICovMCkpOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgNyA6IAorICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBhY2NbMF0pOworICAgICAgICAgIHJl
dHVybiBwcF9wcmludF9mbHVzaChwcGYsIC8qICgpICovMCk7CisgICAgICBjYXNlIDggOiAKKyAg
ICAgICAgICBzdHJwdXRfYWNjKHBwZiwgYWNjWzBdKTsKKyAgICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAg
ICAgICAgICAgICAgICBhY2NbMV0KKyAgICAgICAgICAgICAgXTsKKyAgICAgIAorICAgIH0KKyAg
fQorICBzd2l0Y2ggKGV4aXQpIHsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgc3RycHV0X2FjYyhw
cGYsIHApOworICAgICAgICByZXR1cm4gcHBfcHJpbnRfYXNfc2l6ZShwcGYsIHNpemUsIHMpOwor
ICAgIGNhc2UgMiA6IAorICAgICAgICBzdHJwdXRfYWNjKHBwZiwgcCQxKTsKKyAgICAgICAgcmV0
dXJuIHBwX3ByaW50X2FzX3NpemUocHBmLCBzaXplJDEsIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0
cmluZyhCeXRlcy5tYWtlKDEsIGMpKSk7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24ga2Zwcmlu
dGYoaywgbywgcGFyYW0pIHsKKyAgcmV0dXJuIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50
ZihmdW5jdGlvbiAobywgYWNjKSB7CisgICAgICAgICAgICAgIG91dHB1dF9hY2MobywgYWNjKTsK
KyAgICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGssIG8pOworICAgICAgICAgICAgfSwgbywg
LyogRW5kX29mX2FjYyAqLzAsIHBhcmFtWzBdKTsKK30KKworZnVuY3Rpb24gaWtmcHJpbnRmKGss
IHgsIHBhcmFtKSB7CisgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYoZnVu
Y3Rpb24gKF8sIF8kMSkgeworICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoaywgeCk7Cisg
ICAgICAgICAgICB9LCB4LCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5j
dGlvbiBmcHJpbnRmKHBwZiwgZm10KSB7CisgIHJldHVybiBrZnByaW50ZihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgICB9LCBwcGYsIGZt
dCk7Cit9CisKK2Z1bmN0aW9uIGlmcHJpbnRmKHBwZiwgZm10KSB7CisgIHJldHVybiBpa2Zwcmlu
dGYoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAg
ICAgICAgfSwgcHBmLCBmbXQpOworfQorCitmdW5jdGlvbiBwcmludGYoZm10KSB7CisgIHJldHVy
biBmcHJpbnRmKHN0ZF9mb3JtYXR0ZXIsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIGVwcmludGYoZm10
KSB7CisgIHJldHVybiBmcHJpbnRmKGVycl9mb3JtYXR0ZXIsIGZtdCk7Cit9CisKK2Z1bmN0aW9u
IGtzcHJpbnRmKGssIHBhcmFtKSB7CisgIHZhciBiID0gQnVmZmVyLmNyZWF0ZSg1MTIpOworICB2
YXIgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlcihiKTsKKyAgdmFyIGskcHJpbWUgPSBmdW5jdGlv
biAoXywgYWNjKSB7CisgICAgc3RycHV0X2FjYyhwcGYsIGFjYyk7CisgICAgcmV0dXJuIEN1cnJ5
Ll8xKGssIGZsdXNoX2J1Zl9mb3JtYXR0ZXIoYiwgcHBmKSk7CisgIH07CisgIHJldHVybiBDYW1s
aW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYoayRwcmltZSwgLyogKCkgKi8wLCAvKiBFbmRfb2Zf
YWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5jdGlvbiBzcHJpbnRmKGZtdCkgeworICByZXR1
cm4ga3NwcmludGYoZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHM7CisgICAg
ICAgICAgICB9LCBmbXQpOworfQorCitmdW5jdGlvbiBhc3ByaW50ZihwYXJhbSkgeworICB2YXIg
YiA9IEJ1ZmZlci5jcmVhdGUoNTEyKTsKKyAgdmFyIHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIo
Yik7CisgIHZhciBrJHByaW1lID0gZnVuY3Rpb24gKHBwZiwgYWNjKSB7CisgICAgb3V0cHV0X2Fj
YyhwcGYsIGFjYyk7CisgICAgcHBfZmx1c2hfcXVldWUocHBmLCAvKiBmYWxzZSAqLzApOworICAg
IHJldHVybiBmbHVzaF9idWZfZm9ybWF0dGVyKGIsIHBwZik7CisgIH07CisgIHJldHVybiBDYW1s
aW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYoayRwcmltZSwgcHBmLCAvKiBFbmRfb2ZfYWNjICov
MCwgcGFyYW1bMF0pOworfQorCitmdW5jdGlvbiBicHJpbnRmKGIsIHBhcmFtKSB7CisgIHZhciBr
ID0gZnVuY3Rpb24gKHBwZiwgYWNjKSB7CisgICAgb3V0cHV0X2FjYyhwcGYsIGFjYyk7CisgICAg
cmV0dXJuIHBwX2ZsdXNoX3F1ZXVlKHBwZiwgLyogZmFsc2UgKi8wKTsKKyAgfTsKKyAgcmV0dXJu
IENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihrLCBmb3JtYXR0ZXJfb2ZfYnVmZmVyKGIp
LCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitQZXJ2YXNpdmVzLmF0X2V4aXQo
cHJpbnRfZmx1c2gpOworCit2YXIga3ByaW50ZiA9IGtzcHJpbnRmOworCitleHBvcnRzLm9wZW5f
Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBvcGVuX2JveDsKK2V4cG9ydHMuY2xv
c2VfYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGNsb3NlX2JveDsKK2V4cG9ydHMu
cHJpbnRfc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICA9IHByaW50X3N0cmluZzsKK2V4
cG9ydHMucHJpbnRfYXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHByaW50X2FzOwor
ZXhwb3J0cy5wcmludF9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfaW50
OworZXhwb3J0cy5wcmludF9mbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRf
ZmxvYXQ7CitleHBvcnRzLnByaW50X2NoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBw
cmludF9jaGFyOworZXhwb3J0cy5wcmludF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gcHJpbnRfYm9vbDsKK2V4cG9ydHMucHJpbnRfc3BhY2UgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IHByaW50X3NwYWNlOworZXhwb3J0cy5wcmludF9jdXQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gcHJpbnRfY3V0OworZXhwb3J0cy5wcmludF9icmVhayAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gcHJpbnRfYnJlYWs7CitleHBvcnRzLnByaW50X2ZsdXNoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBwcmludF9mbHVzaDsKK2V4cG9ydHMucHJpbnRfbmV3bGluZSAg
ICAgICAgICAgICAgICAgICAgICAgICA9IHByaW50X25ld2xpbmU7CitleHBvcnRzLmZvcmNlX25l
d2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgPSBmb3JjZV9uZXdsaW5lOworZXhwb3J0cy5w
cmludF9pZl9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfaWZfbmV3bGluZTsK
K2V4cG9ydHMuc2V0X21hcmdpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHNldF9tYXJn
aW47CitleHBvcnRzLmdldF9tYXJnaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXRf
bWFyZ2luOworZXhwb3J0cy5zZXRfbWF4X2luZGVudCAgICAgICAgICAgICAgICAgICAgICAgID0g
c2V0X21heF9pbmRlbnQ7CitleHBvcnRzLmdldF9tYXhfaW5kZW50ICAgICAgICAgICAgICAgICAg
ICAgICAgPSBnZXRfbWF4X2luZGVudDsKK2V4cG9ydHMuc2V0X21heF9ib3hlcyAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHNldF9tYXhfYm94ZXM7CitleHBvcnRzLmdldF9tYXhfYm94ZXMgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBnZXRfbWF4X2JveGVzOworZXhwb3J0cy5vdmVyX21heF9i
b3hlcyAgICAgICAgICAgICAgICAgICAgICAgID0gb3Zlcl9tYXhfYm94ZXM7CitleHBvcnRzLm9w
ZW5faGJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBvcGVuX2hib3g7CitleHBvcnRz
Lm9wZW5fdmJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBvcGVuX3Zib3g7CitleHBv
cnRzLm9wZW5faHZib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBvcGVuX2h2Ym94Owor
ZXhwb3J0cy5vcGVuX2hvdmJveCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gb3Blbl9ob3Zi
b3g7CitleHBvcnRzLm9wZW5fdGJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBvcGVu
X3Rib3g7CitleHBvcnRzLmNsb3NlX3Rib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBj
bG9zZV90Ym94OworZXhwb3J0cy5wcmludF90YnJlYWsgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gcHJpbnRfdGJyZWFrOworZXhwb3J0cy5zZXRfdGFiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gc2V0X3RhYjsKK2V4cG9ydHMucHJpbnRfdGFiICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IHByaW50X3RhYjsKK2V4cG9ydHMuc2V0X2VsbGlwc2lzX3RleHQgICAgICAgICAg
ICAgICAgICAgICA9IHNldF9lbGxpcHNpc190ZXh0OworZXhwb3J0cy5nZXRfZWxsaXBzaXNfdGV4
dCAgICAgICAgICAgICAgICAgICAgID0gZ2V0X2VsbGlwc2lzX3RleHQ7CitleHBvcnRzLm9wZW5f
dGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBvcGVuX3RhZzsKK2V4cG9ydHMuY2xv
c2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGNsb3NlX3RhZzsKK2V4cG9ydHMu
c2V0X3RhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHNldF90YWdzOworZXhwb3J0
cy5zZXRfcHJpbnRfdGFncyAgICAgICAgICAgICAgICAgICAgICAgID0gc2V0X3ByaW50X3RhZ3M7
CitleHBvcnRzLnNldF9tYXJrX3RhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgPSBzZXRfbWFy
a190YWdzOworZXhwb3J0cy5nZXRfcHJpbnRfdGFncyAgICAgICAgICAgICAgICAgICAgICAgID0g
Z2V0X3ByaW50X3RhZ3M7CitleHBvcnRzLmdldF9tYXJrX3RhZ3MgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBnZXRfbWFya190YWdzOworZXhwb3J0cy5zZXRfZm9ybWF0dGVyX291dF9jaGFubmVs
ICAgICAgICAgICAgID0gc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbDsKK2V4cG9ydHMuc2V0X2Zv
cm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zICAgICAgICA9IHNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1
bmN0aW9uczsKK2V4cG9ydHMuZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zICAgICAgICA9
IGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uczsKK2V4cG9ydHMuc2V0X2Zvcm1hdHRlcl9v
dXRfZnVuY3Rpb25zICAgICAgICAgICA9IHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9uczsKK2V4
cG9ydHMuZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICAgICAgICAgICA9IGdldF9mb3JtYXR0
ZXJfb3V0X2Z1bmN0aW9uczsKK2V4cG9ydHMuc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zICAg
ICAgICAgICA9IHNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9uczsKK2V4cG9ydHMuZ2V0X2Zvcm1h
dHRlcl90YWdfZnVuY3Rpb25zICAgICAgICAgICA9IGdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9u
czsKK2V4cG9ydHMuZm9ybWF0dGVyX29mX291dF9jaGFubmVsICAgICAgICAgICAgICA9IGZvcm1h
dHRlcl9vZl9vdXRfY2hhbm5lbDsKK2V4cG9ydHMuc3RkX2Zvcm1hdHRlciAgICAgICAgICAgICAg
ICAgICAgICAgICA9IHN0ZF9mb3JtYXR0ZXI7CitleHBvcnRzLmVycl9mb3JtYXR0ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBlcnJfZm9ybWF0dGVyOworZXhwb3J0cy5mb3JtYXR0ZXJfb2Zf
YnVmZmVyICAgICAgICAgICAgICAgICAgID0gZm9ybWF0dGVyX29mX2J1ZmZlcjsKK2V4cG9ydHMu
c3RkYnVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHN0ZGJ1ZjsKK2V4cG9ydHMu
c3RyX2Zvcm1hdHRlciAgICAgICAgICAgICAgICAgICAgICAgICA9IHN0cl9mb3JtYXR0ZXI7Citl
eHBvcnRzLmZsdXNoX3N0cl9mb3JtYXR0ZXIgICAgICAgICAgICAgICAgICAgPSBmbHVzaF9zdHJf
Zm9ybWF0dGVyOworZXhwb3J0cy5tYWtlX2Zvcm1hdHRlciAgICAgICAgICAgICAgICAgICAgICAg
ID0gbWFrZV9mb3JtYXR0ZXI7CitleHBvcnRzLnBwX29wZW5faGJveCAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBwcF9vcGVuX2hib3g7CitleHBvcnRzLnBwX29wZW5fdmJveCAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBwcF9vcGVuX3Zib3g7CitleHBvcnRzLnBwX29wZW5faHZib3ggICAg
ICAgICAgICAgICAgICAgICAgICAgPSBwcF9vcGVuX2h2Ym94OworZXhwb3J0cy5wcF9vcGVuX2hv
dmJveCAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfb3Blbl9ob3Zib3g7CitleHBvcnRzLnBw
X29wZW5fYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9vcGVuX2JveDsKK2V4cG9y
dHMucHBfY2xvc2VfYm94ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX2Nsb3NlX2JveDsK
K2V4cG9ydHMucHBfb3Blbl90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX29wZW5f
dGFnOworZXhwb3J0cy5wcF9jbG9zZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBf
Y2xvc2VfdGFnOworZXhwb3J0cy5wcF9wcmludF9zdHJpbmcgICAgICAgICAgICAgICAgICAgICAg
ID0gcHBfcHJpbnRfc3RyaW5nOworZXhwb3J0cy5wcF9wcmludF9hcyAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gcHBfcHJpbnRfYXM7CitleHBvcnRzLnBwX3ByaW50X2ludCAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBwcF9wcmludF9pbnQ7CitleHBvcnRzLnBwX3ByaW50X2Zsb2F0ICAg
ICAgICAgICAgICAgICAgICAgICAgPSBwcF9wcmludF9mbG9hdDsKK2V4cG9ydHMucHBfcHJpbnRf
Y2hhciAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2NoYXI7CitleHBvcnRzLnBw
X3ByaW50X2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9wcmludF9ib29sOworZXhw
b3J0cy5wcF9wcmludF9icmVhayAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfYnJl
YWs7CitleHBvcnRzLnBwX3ByaW50X2N1dCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9w
cmludF9jdXQ7CitleHBvcnRzLnBwX3ByaW50X3NwYWNlICAgICAgICAgICAgICAgICAgICAgICAg
PSBwcF9wcmludF9zcGFjZTsKK2V4cG9ydHMucHBfZm9yY2VfbmV3bGluZSAgICAgICAgICAgICAg
ICAgICAgICA9IHBwX2ZvcmNlX25ld2xpbmU7CitleHBvcnRzLnBwX3ByaW50X2ZsdXNoICAgICAg
ICAgICAgICAgICAgICAgICAgPSBwcF9wcmludF9mbHVzaDsKK2V4cG9ydHMucHBfcHJpbnRfbmV3
bGluZSAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X25ld2xpbmU7CitleHBvcnRzLnBw
X3ByaW50X2lmX25ld2xpbmUgICAgICAgICAgICAgICAgICAgPSBwcF9wcmludF9pZl9uZXdsaW5l
OworZXhwb3J0cy5wcF9vcGVuX3Rib3ggICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfb3Bl
bl90Ym94OworZXhwb3J0cy5wcF9jbG9zZV90Ym94ICAgICAgICAgICAgICAgICAgICAgICAgID0g
cHBfY2xvc2VfdGJveDsKK2V4cG9ydHMucHBfcHJpbnRfdGJyZWFrICAgICAgICAgICAgICAgICAg
ICAgICA9IHBwX3ByaW50X3RicmVhazsKK2V4cG9ydHMucHBfc2V0X3RhYiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHBwX3NldF90YWI7CitleHBvcnRzLnBwX3ByaW50X3RhYiAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBwcF9wcmludF90YWI7CitleHBvcnRzLnBwX3NldF90YWdzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9zZXRfdGFnczsKK2V4cG9ydHMucHBfc2V0X3By
aW50X3RhZ3MgICAgICAgICAgICAgICAgICAgICA9IHBwX3NldF9wcmludF90YWdzOworZXhwb3J0
cy5wcF9zZXRfbWFya190YWdzICAgICAgICAgICAgICAgICAgICAgID0gcHBfc2V0X21hcmtfdGFn
czsKK2V4cG9ydHMucHBfZ2V0X3ByaW50X3RhZ3MgICAgICAgICAgICAgICAgICAgICA9IHBwX2dl
dF9wcmludF90YWdzOworZXhwb3J0cy5wcF9nZXRfbWFya190YWdzICAgICAgICAgICAgICAgICAg
ICAgID0gcHBfZ2V0X21hcmtfdGFnczsKK2V4cG9ydHMucHBfc2V0X21hcmdpbiAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHBwX3NldF9tYXJnaW47CitleHBvcnRzLnBwX2dldF9tYXJnaW4gICAg
ICAgICAgICAgICAgICAgICAgICAgPSBwcF9nZXRfbWFyZ2luOworZXhwb3J0cy5wcF9zZXRfbWF4
X2luZGVudCAgICAgICAgICAgICAgICAgICAgID0gcHBfc2V0X21heF9pbmRlbnQ7CitleHBvcnRz
LnBwX2dldF9tYXhfaW5kZW50ICAgICAgICAgICAgICAgICAgICAgPSBwcF9nZXRfbWF4X2luZGVu
dDsKK2V4cG9ydHMucHBfc2V0X21heF9ib3hlcyAgICAgICAgICAgICAgICAgICAgICA9IHBwX3Nl
dF9tYXhfYm94ZXM7CitleHBvcnRzLnBwX2dldF9tYXhfYm94ZXMgICAgICAgICAgICAgICAgICAg
ICAgPSBwcF9nZXRfbWF4X2JveGVzOworZXhwb3J0cy5wcF9vdmVyX21heF9ib3hlcyAgICAgICAg
ICAgICAgICAgICAgID0gcHBfb3Zlcl9tYXhfYm94ZXM7CitleHBvcnRzLnBwX3NldF9lbGxpcHNp
c190ZXh0ICAgICAgICAgICAgICAgICAgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dDsKK2V4cG9ydHMu
cHBfZ2V0X2VsbGlwc2lzX3RleHQgICAgICAgICAgICAgICAgICA9IHBwX2dldF9lbGxpcHNpc190
ZXh0OworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsICAgICAgICAgID0gcHBf
c2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbDsKK2V4cG9ydHMucHBfc2V0X2Zvcm1hdHRlcl9vdXRw
dXRfZnVuY3Rpb25zICAgICA9IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uczsKK2V4
cG9ydHMucHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zICAgICA9IHBwX2dldF9mb3Jt
YXR0ZXJfb3V0cHV0X2Z1bmN0aW9uczsKK2V4cG9ydHMucHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVu
Y3Rpb25zICAgICAgICA9IHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9uczsKK2V4cG9ydHMu
cHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zICAgICAgICA9IHBwX2dldF9mb3JtYXR0ZXJf
dGFnX2Z1bmN0aW9uczsKK2V4cG9ydHMucHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICAg
ICAgICA9IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9uczsKK2V4cG9ydHMucHBfZ2V0X2Zv
cm1hdHRlcl9vdXRfZnVuY3Rpb25zICAgICAgICA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0
aW9uczsKK2V4cG9ydHMucHBfcHJpbnRfbGlzdCAgICAgICAgICAgICAgICAgICAgICAgICA9IHBw
X3ByaW50X2xpc3Q7CitleHBvcnRzLnBwX3ByaW50X3RleHQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBwcF9wcmludF90ZXh0OworZXhwb3J0cy5mcHJpbnRmICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gZnByaW50ZjsKK2V4cG9ydHMucHJpbnRmICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IHByaW50ZjsKK2V4cG9ydHMuZXByaW50ZiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IGVwcmludGY7CitleHBvcnRzLnNwcmludGYgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBzcHJpbnRmOworZXhwb3J0cy5hc3ByaW50ZiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gYXNwcmludGY7CitleHBvcnRzLmlmcHJpbnRmICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBpZnByaW50ZjsKK2V4cG9ydHMua2ZwcmludGYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IGtmcHJpbnRmOworZXhwb3J0cy5pa2ZwcmludGYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gaWtmcHJpbnRmOworZXhwb3J0cy5rc3ByaW50ZiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0ga3NwcmludGY7CitleHBvcnRzLmJwcmludGYgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBicHJpbnRmOworZXhwb3J0cy5rcHJpbnRmICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0ga3ByaW50ZjsKK2V4cG9ydHMuc2V0X2FsbF9mb3Jt
YXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAgICA9IHNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5j
dGlvbnM7CitleHBvcnRzLmdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgPSBn
ZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9zZXRfYWxsX2Zv
cm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID0gcHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1
bmN0aW9uczsKK2V4cG9ydHMucHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9
IHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnM7CisvKiBibGFua19saW5lIE5v
dCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgZm9ybWF0LmpzIC8vLy8vLy8vCivC
oCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2kzMiddID0gZnVu
Y3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgaTMy
LmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMg
LCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEludCAgICAgICAg
PSByZXF1aXJlKCIuL2ludCIpOwordmFyIEludDMyICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvaW50MzIiKTsKK3ZhciBDYW1sX2ludDMyID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL2NhbWxfaW50MzIiKTsKKwordmFyIGluY2x1ZGUgPSBJbnQuTWFrZSgvKiBtb2R1bGUg
Ki9bCisgICAgICAvKiB6ZXJvICovSW50MzIuemVybywKKyAgICAgIC8qIG9uZSAqL0ludDMyLm9u
ZSwKKyAgICAgIC8qIG1pbnVzX29uZSAqL0ludDMyLm1pbnVzX29uZSwKKyAgICAgIC8qIG1heF9p
bnQgKi9JbnQzMi5tYXhfaW50LAorICAgICAgLyogbWluX2ludCAqL0ludDMyLm1pbl9pbnQsCisg
ICAgICAvKiAlaW50MzJfbmVnICovZnVuY3Rpb24gKHByaW0pIHsKKyAgICAgICAgcmV0dXJuIC1w
cmltIHwgMDsKKyAgICAgIH0sCisgICAgICAvKiAlaW50MzJfYWRkICovZnVuY3Rpb24gKHByaW0s
IHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSArIHByaW0kMSB8IDA7CisgICAgICB9LAor
ICAgICAgLyogJWludDMyX3N1YiAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAg
cmV0dXJuIHByaW0gLSBwcmltJDEgfCAwOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl9tdWwg
Ki9DYW1sX2ludDMyLmltdWwsCisgICAgICAvKiAlaW50MzJfZGl2ICovQ2FtbF9pbnQzMi5kaXYs
CisgICAgICAvKiAlaW50MzJfbW9kICovQ2FtbF9pbnQzMi5tb2RfLAorICAgICAgLyogJWludDMy
X2FuZCAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIHByaW0gJiBw
cmltJDE7CisgICAgICB9LAorICAgICAgLyogbG9nbm90ICovSW50MzIubG9nbm90LAorICAgICAg
LyogJWludDMyX29yICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4g
cHJpbSB8IHByaW0kMTsKKyAgICAgIH0sCisgICAgICAvKiAlaW50MzJfeG9yICovZnVuY3Rpb24g
KHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSBeIHByaW0kMTsKKyAgICAgIH0s
CisgICAgICAvKiAlaW50MzJfbHNsICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAg
ICByZXR1cm4gKHByaW0gPDwgcHJpbSQxKTsKKyAgICAgIH0sCisgICAgICAvKiAlaW50MzJfYXNy
ICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gKHByaW0gPj4gcHJp
bSQxKTsKKyAgICAgIH0sCisgICAgICAvKiAlaW50MzJfbHNyICovZnVuY3Rpb24gKHByaW0sIHBy
aW0kMSkgeworICAgICAgICByZXR1cm4gKHByaW0gPj4+IHByaW0kMSkgfCAwOworICAgICAgfSwK
KyAgICAgIC8qICVpbnQzMl9vZl9pbnQgKi9mdW5jdGlvbiAocHJpbSkgeworICAgICAgICByZXR1
cm4gcHJpbTsKKyAgICAgIH0sCisgICAgICAvKiAlaW50MzJfdG9faW50ICovZnVuY3Rpb24gKHBy
aW0pIHsKKyAgICAgICAgcmV0dXJuIHByaW07CisgICAgICB9LAorICAgICAgLyogdG9fc3RyaW5n
ICovSW50MzIudG9fc3RyaW5nLAorICAgICAgLyogYml0d2lkdGggKi8zMgorICAgIF0pOworCit2
YXIgb2ZfYml0cyA9IGluY2x1ZGVbMF07CisKK3ZhciB0b19iaXRzID0gaW5jbHVkZVsxXTsKKwor
dmFyIHplcm8gPSBpbmNsdWRlWzJdOworCit2YXIgYWRkID0gaW5jbHVkZVszXTsKKwordmFyIHN1
YiA9IGluY2x1ZGVbNF07CisKK3ZhciBtdWwgPSBpbmNsdWRlWzVdOworCit2YXIgZGl2X3MgPSBp
bmNsdWRlWzZdOworCit2YXIgZGl2X3UgPSBpbmNsdWRlWzddOworCit2YXIgcmVtX3MgPSBpbmNs
dWRlWzhdOworCit2YXIgcmVtX3UgPSBpbmNsdWRlWzldOworCit2YXIgYW5kXyA9IGluY2x1ZGVb
MTBdOworCit2YXIgb3JfID0gaW5jbHVkZVsxMV07CisKK3ZhciB4b3IgPSBpbmNsdWRlWzEyXTsK
KwordmFyIHNobCA9IGluY2x1ZGVbMTNdOworCit2YXIgc2hyX3MgPSBpbmNsdWRlWzE0XTsKKwor
dmFyIHNocl91ID0gaW5jbHVkZVsxNV07CisKK3ZhciByb3RsID0gaW5jbHVkZVsxNl07CisKK3Zh
ciByb3RyID0gaW5jbHVkZVsxN107CisKK3ZhciBjbHogPSBpbmNsdWRlWzE4XTsKKwordmFyIGN0
eiA9IGluY2x1ZGVbMTldOworCit2YXIgcG9wY250ID0gaW5jbHVkZVsyMF07CisKK3ZhciBlcXog
PSBpbmNsdWRlWzIxXTsKKwordmFyIGVxID0gaW5jbHVkZVsyMl07CisKK3ZhciBuZSA9IGluY2x1
ZGVbMjNdOworCit2YXIgbHRfcyA9IGluY2x1ZGVbMjRdOworCit2YXIgbHRfdSA9IGluY2x1ZGVb
MjVdOworCit2YXIgbGVfcyA9IGluY2x1ZGVbMjZdOworCit2YXIgbGVfdSA9IGluY2x1ZGVbMjdd
OworCit2YXIgZ3RfcyA9IGluY2x1ZGVbMjhdOworCit2YXIgZ3RfdSA9IGluY2x1ZGVbMjldOwor
Cit2YXIgZ2VfcyA9IGluY2x1ZGVbMzBdOworCit2YXIgZ2VfdSA9IGluY2x1ZGVbMzFdOworCit2
YXIgb2ZfaW50X3MgPSBpbmNsdWRlWzMyXTsKKwordmFyIG9mX2ludF91ID0gaW5jbHVkZVszM107
CisKK3ZhciBvZl9zdHJpbmdfcyA9IGluY2x1ZGVbMzRdOworCit2YXIgb2Zfc3RyaW5nX3UgPSBp
bmNsdWRlWzM1XTsKKwordmFyIG9mX3N0cmluZyA9IGluY2x1ZGVbMzZdOworCit2YXIgdG9fc3Ry
aW5nX3MgPSBpbmNsdWRlWzM3XTsKKwordmFyIHRvX3N0cmluZ191ID0gaW5jbHVkZVszOF07CisK
K2V4cG9ydHMub2ZfYml0cyAgICAgPSBvZl9iaXRzOworZXhwb3J0cy50b19iaXRzICAgICA9IHRv
X2JpdHM7CitleHBvcnRzLnplcm8gICAgICAgID0gemVybzsKK2V4cG9ydHMuYWRkICAgICAgICAg
PSBhZGQ7CitleHBvcnRzLnN1YiAgICAgICAgID0gc3ViOworZXhwb3J0cy5tdWwgICAgICAgICA9
IG11bDsKK2V4cG9ydHMuZGl2X3MgICAgICAgPSBkaXZfczsKK2V4cG9ydHMuZGl2X3UgICAgICAg
PSBkaXZfdTsKK2V4cG9ydHMucmVtX3MgICAgICAgPSByZW1fczsKK2V4cG9ydHMucmVtX3UgICAg
ICAgPSByZW1fdTsKK2V4cG9ydHMuYW5kXyAgICAgICAgPSBhbmRfOworZXhwb3J0cy5vcl8gICAg
ICAgICA9IG9yXzsKK2V4cG9ydHMueG9yICAgICAgICAgPSB4b3I7CitleHBvcnRzLnNobCAgICAg
ICAgID0gc2hsOworZXhwb3J0cy5zaHJfcyAgICAgICA9IHNocl9zOworZXhwb3J0cy5zaHJfdSAg
ICAgICA9IHNocl91OworZXhwb3J0cy5yb3RsICAgICAgICA9IHJvdGw7CitleHBvcnRzLnJvdHIg
ICAgICAgID0gcm90cjsKK2V4cG9ydHMuY2x6ICAgICAgICAgPSBjbHo7CitleHBvcnRzLmN0eiAg
ICAgICAgID0gY3R6OworZXhwb3J0cy5wb3BjbnQgICAgICA9IHBvcGNudDsKK2V4cG9ydHMuZXF6
ICAgICAgICAgPSBlcXo7CitleHBvcnRzLmVxICAgICAgICAgID0gZXE7CitleHBvcnRzLm5lICAg
ICAgICAgID0gbmU7CitleHBvcnRzLmx0X3MgICAgICAgID0gbHRfczsKK2V4cG9ydHMubHRfdSAg
ICAgICAgPSBsdF91OworZXhwb3J0cy5sZV9zICAgICAgICA9IGxlX3M7CitleHBvcnRzLmxlX3Ug
ICAgICAgID0gbGVfdTsKK2V4cG9ydHMuZ3RfcyAgICAgICAgPSBndF9zOworZXhwb3J0cy5ndF91
ICAgICAgICA9IGd0X3U7CitleHBvcnRzLmdlX3MgICAgICAgID0gZ2VfczsKK2V4cG9ydHMuZ2Vf
dSAgICAgICAgPSBnZV91OworZXhwb3J0cy5vZl9pbnRfcyAgICA9IG9mX2ludF9zOworZXhwb3J0
cy5vZl9pbnRfdSAgICA9IG9mX2ludF91OworZXhwb3J0cy5vZl9zdHJpbmdfcyA9IG9mX3N0cmlu
Z19zOworZXhwb3J0cy5vZl9zdHJpbmdfdSA9IG9mX3N0cmluZ191OworZXhwb3J0cy5vZl9zdHJp
bmcgICA9IG9mX3N0cmluZzsKK2V4cG9ydHMudG9fc3RyaW5nX3MgPSB0b19zdHJpbmdfczsKK2V4
cG9ydHMudG9fc3RyaW5nX3UgPSB0b19zdHJpbmdfdTsKKy8qIGluY2x1ZGUgTm90IGEgcHVyZSBt
b2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBpMzIuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBl
eHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnaTY0J10gPSBmdW5jdGlvbigpIHsKK8Kg
IMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpNjQuanMgLy8vLy8vLy8K
Ky8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElU
IFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgSW50ICAgICAgICA9IHJlcXVpcmUoIi4v
aW50Iik7Cit2YXIgSW50NjQgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9pbnQ2
NCIpOwordmFyIENhbWxfaW50NjQgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9p
bnQ2NCIpOworCit2YXIgaW5jbHVkZSA9IEludC5NYWtlKC8qIG1vZHVsZSAqL1sKKyAgICAgIC8q
IHplcm8gKi9JbnQ2NC56ZXJvLAorICAgICAgLyogb25lICovSW50NjQub25lLAorICAgICAgLyog
bWludXNfb25lICovSW50NjQubWludXNfb25lLAorICAgICAgLyogbWF4X2ludCAqL0ludDY0Lm1h
eF9pbnQsCisgICAgICAvKiBtaW5faW50ICovSW50NjQubWluX2ludCwKKyAgICAgIC8qICVpbnQ2
NF9uZWcgKi9DYW1sX2ludDY0Lm5lZywKKyAgICAgIC8qICVpbnQ2NF9hZGQgKi9DYW1sX2ludDY0
LmFkZCwKKyAgICAgIC8qICVpbnQ2NF9zdWIgKi9DYW1sX2ludDY0LnN1YiwKKyAgICAgIC8qICVp
bnQ2NF9tdWwgKi9DYW1sX2ludDY0Lm11bCwKKyAgICAgIC8qICVpbnQ2NF9kaXYgKi9DYW1sX2lu
dDY0LmRpdiwKKyAgICAgIC8qICVpbnQ2NF9tb2QgKi9DYW1sX2ludDY0Lm1vZF8sCisgICAgICAv
KiAlaW50NjRfYW5kICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4g
LyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgLyogaGkgKi9wcmltWzBdICYgcHJpbSQxWzBd
LAorICAgICAgICAgICAgICAgIC8qIGxvICovKChwcmltWzFdICYgcHJpbSQxWzFdKSA+Pj4gMCkK
KyAgICAgICAgICAgICAgXTsKKyAgICAgIH0sCisgICAgICAvKiBsb2dub3QgKi9JbnQ2NC5sb2du
b3QsCisgICAgICAvKiAlaW50NjRfb3IgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAg
ICAgIHJldHVybiAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0g
fCBwcmltJDFbMF0sCisgICAgICAgICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gfCBwcmltJDFb
MV0pID4+PiAwKQorICAgICAgICAgICAgICBdOworICAgICAgfSwKKyAgICAgIC8qICVpbnQ2NF94
b3IgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAvKiBpbnQ2NCAq
L1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gXiBwcmltJDFbMF0sCisgICAgICAg
ICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gXiBwcmltJDFbMV0pID4+PiAwKQorICAgICAgICAg
ICAgICBdOworICAgICAgfSwKKyAgICAgIC8qICVpbnQ2NF9sc2wgKi9DYW1sX2ludDY0LmxzbF8s
CisgICAgICAvKiAlaW50NjRfYXNyICovQ2FtbF9pbnQ2NC5hc3JfLAorICAgICAgLyogJWludDY0
X2xzciAqL0NhbWxfaW50NjQubHNyXywKKyAgICAgIC8qICVpbnQ2NF9vZl9pbnQgKi9DYW1sX2lu
dDY0Lm9mX2ludDMyLAorICAgICAgLyogJWludDY0X3RvX2ludCAqL2Z1bmN0aW9uIChwcmltKSB7
CisgICAgICAgIHJldHVybiBwcmltWzFdIHwgMDsKKyAgICAgIH0sCisgICAgICAvKiB0b19zdHJp
bmcgKi9JbnQ2NC50b19zdHJpbmcsCisgICAgICAvKiBiaXR3aWR0aCAqLzY0CisgICAgXSk7CisK
K3ZhciBvZl9iaXRzID0gaW5jbHVkZVswXTsKKwordmFyIHRvX2JpdHMgPSBpbmNsdWRlWzFdOwor
Cit2YXIgemVybyA9IGluY2x1ZGVbMl07CisKK3ZhciBhZGQgPSBpbmNsdWRlWzNdOworCit2YXIg
c3ViID0gaW5jbHVkZVs0XTsKKwordmFyIG11bCA9IGluY2x1ZGVbNV07CisKK3ZhciBkaXZfcyA9
IGluY2x1ZGVbNl07CisKK3ZhciBkaXZfdSA9IGluY2x1ZGVbN107CisKK3ZhciByZW1fcyA9IGlu
Y2x1ZGVbOF07CisKK3ZhciByZW1fdSA9IGluY2x1ZGVbOV07CisKK3ZhciBhbmRfID0gaW5jbHVk
ZVsxMF07CisKK3ZhciBvcl8gPSBpbmNsdWRlWzExXTsKKwordmFyIHhvciA9IGluY2x1ZGVbMTJd
OworCit2YXIgc2hsID0gaW5jbHVkZVsxM107CisKK3ZhciBzaHJfcyA9IGluY2x1ZGVbMTRdOwor
Cit2YXIgc2hyX3UgPSBpbmNsdWRlWzE1XTsKKwordmFyIHJvdGwgPSBpbmNsdWRlWzE2XTsKKwor
dmFyIHJvdHIgPSBpbmNsdWRlWzE3XTsKKwordmFyIGNseiA9IGluY2x1ZGVbMThdOworCit2YXIg
Y3R6ID0gaW5jbHVkZVsxOV07CisKK3ZhciBwb3BjbnQgPSBpbmNsdWRlWzIwXTsKKwordmFyIGVx
eiA9IGluY2x1ZGVbMjFdOworCit2YXIgZXEgPSBpbmNsdWRlWzIyXTsKKwordmFyIG5lID0gaW5j
bHVkZVsyM107CisKK3ZhciBsdF9zID0gaW5jbHVkZVsyNF07CisKK3ZhciBsdF91ID0gaW5jbHVk
ZVsyNV07CisKK3ZhciBsZV9zID0gaW5jbHVkZVsyNl07CisKK3ZhciBsZV91ID0gaW5jbHVkZVsy
N107CisKK3ZhciBndF9zID0gaW5jbHVkZVsyOF07CisKK3ZhciBndF91ID0gaW5jbHVkZVsyOV07
CisKK3ZhciBnZV9zID0gaW5jbHVkZVszMF07CisKK3ZhciBnZV91ID0gaW5jbHVkZVszMV07CisK
K3ZhciBvZl9pbnRfcyA9IGluY2x1ZGVbMzJdOworCit2YXIgb2ZfaW50X3UgPSBpbmNsdWRlWzMz
XTsKKwordmFyIG9mX3N0cmluZ19zID0gaW5jbHVkZVszNF07CisKK3ZhciBvZl9zdHJpbmdfdSA9
IGluY2x1ZGVbMzVdOworCit2YXIgb2Zfc3RyaW5nID0gaW5jbHVkZVszNl07CisKK3ZhciB0b19z
dHJpbmdfcyA9IGluY2x1ZGVbMzddOworCit2YXIgdG9fc3RyaW5nX3UgPSBpbmNsdWRlWzM4XTsK
KworZXhwb3J0cy5vZl9iaXRzICAgICA9IG9mX2JpdHM7CitleHBvcnRzLnRvX2JpdHMgICAgID0g
dG9fYml0czsKK2V4cG9ydHMuemVybyAgICAgICAgPSB6ZXJvOworZXhwb3J0cy5hZGQgICAgICAg
ICA9IGFkZDsKK2V4cG9ydHMuc3ViICAgICAgICAgPSBzdWI7CitleHBvcnRzLm11bCAgICAgICAg
ID0gbXVsOworZXhwb3J0cy5kaXZfcyAgICAgICA9IGRpdl9zOworZXhwb3J0cy5kaXZfdSAgICAg
ICA9IGRpdl91OworZXhwb3J0cy5yZW1fcyAgICAgICA9IHJlbV9zOworZXhwb3J0cy5yZW1fdSAg
ICAgICA9IHJlbV91OworZXhwb3J0cy5hbmRfICAgICAgICA9IGFuZF87CitleHBvcnRzLm9yXyAg
ICAgICAgID0gb3JfOworZXhwb3J0cy54b3IgICAgICAgICA9IHhvcjsKK2V4cG9ydHMuc2hsICAg
ICAgICAgPSBzaGw7CitleHBvcnRzLnNocl9zICAgICAgID0gc2hyX3M7CitleHBvcnRzLnNocl91
ICAgICAgID0gc2hyX3U7CitleHBvcnRzLnJvdGwgICAgICAgID0gcm90bDsKK2V4cG9ydHMucm90
ciAgICAgICAgPSByb3RyOworZXhwb3J0cy5jbHogICAgICAgICA9IGNsejsKK2V4cG9ydHMuY3R6
ICAgICAgICAgPSBjdHo7CitleHBvcnRzLnBvcGNudCAgICAgID0gcG9wY250OworZXhwb3J0cy5l
cXogICAgICAgICA9IGVxejsKK2V4cG9ydHMuZXEgICAgICAgICAgPSBlcTsKK2V4cG9ydHMubmUg
ICAgICAgICAgPSBuZTsKK2V4cG9ydHMubHRfcyAgICAgICAgPSBsdF9zOworZXhwb3J0cy5sdF91
ICAgICAgICA9IGx0X3U7CitleHBvcnRzLmxlX3MgICAgICAgID0gbGVfczsKK2V4cG9ydHMubGVf
dSAgICAgICAgPSBsZV91OworZXhwb3J0cy5ndF9zICAgICAgICA9IGd0X3M7CitleHBvcnRzLmd0
X3UgICAgICAgID0gZ3RfdTsKK2V4cG9ydHMuZ2VfcyAgICAgICAgPSBnZV9zOworZXhwb3J0cy5n
ZV91ICAgICAgICA9IGdlX3U7CitleHBvcnRzLm9mX2ludF9zICAgID0gb2ZfaW50X3M7CitleHBv
cnRzLm9mX2ludF91ICAgID0gb2ZfaW50X3U7CitleHBvcnRzLm9mX3N0cmluZ19zID0gb2Zfc3Ry
aW5nX3M7CitleHBvcnRzLm9mX3N0cmluZ191ID0gb2Zfc3RyaW5nX3U7CitleHBvcnRzLm9mX3N0
cmluZyAgID0gb2Zfc3RyaW5nOworZXhwb3J0cy50b19zdHJpbmdfcyA9IHRvX3N0cmluZ19zOwor
ZXhwb3J0cy50b19zdHJpbmdfdSA9IHRvX3N0cmluZ191OworLyogaW5jbHVkZSBOb3QgYSBwdXJl
IG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGk2NC5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJu
IGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydpbnQzMiddID0gZnVuY3Rpb24oKSB7
CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgaW50MzIuanMgLy8v
Ly8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIENhbWxfb2JqICAgID0gcmVxdWlyZSgiLi9jYW1s
X29iaiIpOwordmFyIENhbWxfZm9ybWF0ID0gcmVxdWlyZSgiLi9jYW1sX2Zvcm1hdCIpOworCitm
dW5jdGlvbiBzdWNjKG4pIHsKKyAgcmV0dXJuIG4gKyAxIHwgMDsKK30KKworZnVuY3Rpb24gcHJl
ZChuKSB7CisgIHJldHVybiBuIC0gMSB8IDA7Cit9CisKK2Z1bmN0aW9uIGFicyhuKSB7CisgIGlm
IChuID49IDApIHsKKyAgICByZXR1cm4gbjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLW4g
fCAwOworICB9Cit9CisKK2Z1bmN0aW9uIGxvZ25vdChuKSB7CisgIHJldHVybiBuIF4gLTE7Cit9
CisKK2Z1bmN0aW9uIHRvX3N0cmluZyhuKSB7CisgIHJldHVybiBDYW1sX2Zvcm1hdC5jYW1sX2lu
dDMyX2Zvcm1hdCgiJWQiLCBuKTsKK30KKwordmFyIGNvbXBhcmUgPSBDYW1sX29iai5jYW1sX2lu
dDMyX2NvbXBhcmU7CisKK3ZhciB6ZXJvID0gMDsKKwordmFyIG9uZSA9IDE7CisKK3ZhciBtaW51
c19vbmUgPSAtMTsKKwordmFyIG1heF9pbnQgPSAyMTQ3NDgzNjQ3OworCit2YXIgbWluX2ludCA9
IC0yMTQ3NDgzNjQ4OworCitleHBvcnRzLnplcm8gICAgICA9IHplcm87CitleHBvcnRzLm9uZSAg
ICAgICA9IG9uZTsKK2V4cG9ydHMubWludXNfb25lID0gbWludXNfb25lOworZXhwb3J0cy5zdWNj
ICAgICAgPSBzdWNjOworZXhwb3J0cy5wcmVkICAgICAgPSBwcmVkOworZXhwb3J0cy5hYnMgICAg
ICAgPSBhYnM7CitleHBvcnRzLm1heF9pbnQgICA9IG1heF9pbnQ7CitleHBvcnRzLm1pbl9pbnQg
ICA9IG1pbl9pbnQ7CitleHBvcnRzLmxvZ25vdCAgICA9IGxvZ25vdDsKK2V4cG9ydHMudG9fc3Ry
aW5nID0gdG9fc3RyaW5nOworZXhwb3J0cy5jb21wYXJlICAgPSBjb21wYXJlOworLyogTm8gc2lk
ZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBpbnQzMi5qcyAvLy8vLy8vLworwqAgwqAgcmV0
dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydpbnQ2NCddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgaW50NjQuanMg
Ly8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIENhbWxfaW50NjQgID0gcmVxdWlyZSgiLi9j
YW1sX2ludDY0Iik7Cit2YXIgQ2FtbF9mb3JtYXQgPSByZXF1aXJlKCIuL2NhbWxfZm9ybWF0Iik7
CisKK2Z1bmN0aW9uIHN1Y2MobikgeworICByZXR1cm4gQ2FtbF9pbnQ2NC5hZGQobiwgLyogaW50
NjQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgLyogbG8gKi8x
CisgICAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gcHJlZChuKSB7CisgIHJldHVybiBDYW1s
X2ludDY0LnN1YihuLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAg
ICAgICAgICAgICAvKiBsbyAqLzEKKyAgICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBhYnMo
bikgeworICBpZiAoQ2FtbF9pbnQ2NC5nZShuLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAvKiBo
aSAqLzAsCisgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgIF0pKSB7CisgICAgcmV0dXJuIG47
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfaW50NjQubmVnKG4pOworICB9Cit9CisK
K2Z1bmN0aW9uIGxvZ25vdChuKSB7CisgIHJldHVybiAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAv
KiBoaSAqL25bMF0gXiAvKiBoaSAqLy0xLAorICAgICAgICAgIC8qIGxvICovKChuWzFdIF4gLyog
bG8gKi80Mjk0OTY3Mjk1KSA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gdG9fc3Ry
aW5nKG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfaW50NjRfZm9ybWF0KCIlZCIsIG4p
OworfQorCit2YXIgY29tcGFyZSA9IENhbWxfaW50NjQuY29tcGFyZTsKKwordmFyIHplcm8gPSAv
KiBpbnQ2NCAqL1sKKyAgLyogaGkgKi8wLAorICAvKiBsbyAqLzAKK107CisKK3ZhciBvbmUgPSAv
KiBpbnQ2NCAqL1sKKyAgLyogaGkgKi8wLAorICAvKiBsbyAqLzEKK107CisKK3ZhciBtaW51c19v
bmUgPSAvKiBpbnQ2NCAqL1sKKyAgLyogaGkgKi8tMSwKKyAgLyogbG8gKi80Mjk0OTY3Mjk1Citd
OworCit2YXIgbWF4X2ludCA9IC8qIGludDY0ICovWworICAvKiBoaSAqLzIxNDc0ODM2NDcsCisg
IC8qIGxvICovNDI5NDk2NzI5NQorXTsKKwordmFyIG1pbl9pbnQgPSAvKiBpbnQ2NCAqL1sKKyAg
LyogaGkgKi8tMjE0NzQ4MzY0OCwKKyAgLyogbG8gKi8wCitdOworCitleHBvcnRzLnplcm8gICAg
ICA9IHplcm87CitleHBvcnRzLm9uZSAgICAgICA9IG9uZTsKK2V4cG9ydHMubWludXNfb25lID0g
bWludXNfb25lOworZXhwb3J0cy5zdWNjICAgICAgPSBzdWNjOworZXhwb3J0cy5wcmVkICAgICAg
PSBwcmVkOworZXhwb3J0cy5hYnMgICAgICAgPSBhYnM7CitleHBvcnRzLm1heF9pbnQgICA9IG1h
eF9pbnQ7CitleHBvcnRzLm1pbl9pbnQgICA9IG1pbl9pbnQ7CitleHBvcnRzLmxvZ25vdCAgICA9
IGxvZ25vdDsKK2V4cG9ydHMudG9fc3RyaW5nID0gdG9fc3RyaW5nOworZXhwb3J0cy5jb21wYXJl
ICAgPSBjb21wYXJlOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBpbnQ2
NC5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lz
dHJ5WydpbnQnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8v
Ly8vIHN0YXJ0IG9mIGludC5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQ
VCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisK
K3ZhciBDdXJyeSAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7
Cit2YXIgQ2FtbF9vYmogICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29i
aiIpOwordmFyIFBlcnZhc2l2ZXMgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVy
dmFzaXZlcyIpOwordmFyIENhbWxfc3RyaW5nICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvY2FtbF9zdHJpbmciKTsKK3ZhciBOdW1lcmljX2Vycm9yID0gcmVxdWlyZSgiLi9udW1lcmlj
X2Vycm9yIik7CisKK2Z1bmN0aW9uIE1ha2UoUmVwKSB7CisgIHZhciBjbXBfdSA9IGZ1bmN0aW9u
ICh4LCBvcCwgeSkgeworICAgIHJldHVybiBDdXJyeS5fMihvcCwgQ3VycnkuXzIoUmVwWy8qIGFk
ZCAqLzZdLCB4LCBSZXBbLyogbWluX2ludCAqLzRdKSwgQ3VycnkuXzIoUmVwWy8qIGFkZCAqLzZd
LCB5LCBSZXBbLyogbWluX2ludCAqLzRdKSk7CisgIH07CisgIHZhciBkaXZyZW1fdSA9IGZ1bmN0
aW9uIChuLCBkKSB7CisgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwoZCwgUmVwWy8qIHplcm8g
Ki8wXSkpIHsKKyAgICAgIHRocm93IE51bWVyaWNfZXJyb3IuSW50ZWdlckRpdmlkZUJ5WmVybzsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgdCA9IEN1cnJ5Ll8yKFJlcFsvKiBzaGlmdF9y
aWdodCAqLzE2XSwgZCwgUmVwWy8qIGJpdHdpZHRoICovMjFdIC0gMSB8IDApOworICAgICAgdmFy
IG4kcHJpbWUgPSBDdXJyeS5fMihSZXBbLyogbG9nYW5kICovMTFdLCBuLCBDdXJyeS5fMShSZXBb
LyogbG9nbm90ICovMTJdLCB0KSk7CisgICAgICB2YXIgcSA9IEN1cnJ5Ll8yKFJlcFsvKiBzaGlm
dF9sZWZ0ICovMTVdLCBDdXJyeS5fMihSZXBbLyogZGl2ICovOV0sIEN1cnJ5Ll8yKFJlcFsvKiBz
aGlmdF9yaWdodF9sb2dpY2FsICovMTddLCBuJHByaW1lLCAxKSwgZCksIDEpOworICAgICAgdmFy
IHIgPSBDdXJyeS5fMihSZXBbLyogc3ViICovN10sIG4sIEN1cnJ5Ll8yKFJlcFsvKiBtdWwgKi84
XSwgcSwgZCkpOworICAgICAgaWYgKGNtcF91KHIsIENhbWxfb2JqLmNhbWxfbGVzc3RoYW4sIGQp
KSB7CisgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICBxLAorICAg
ICAgICAgICAgICAgIHIKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgQ3VycnkuXzIoUmVw
Wy8qIGFkZCAqLzZdLCBxLCBSZXBbLyogb25lICovMV0pLAorICAgICAgICAgICAgICAgIEN1cnJ5
Ll8yKFJlcFsvKiBzdWIgKi83XSwgciwgZCkKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAg
ICB9CisgIH07CisgIHZhciBvZl9iaXRzID0gZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1cm4geDsK
KyAgfTsKKyAgdmFyIHRvX2JpdHMgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB4OworICB9
OworICB2YXIgemVybyA9IFJlcFsvKiB6ZXJvICovMF07CisgIHZhciBvbmUgPSBSZXBbLyogb25l
ICovMV07CisgIHZhciB0ZW4gPSBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCAxMCk7Cisg
IHZhciBhZGQgPSBSZXBbLyogYWRkICovNl07CisgIHZhciBzdWIgPSBSZXBbLyogc3ViICovN107
CisgIHZhciBtdWwgPSBSZXBbLyogbXVsICovOF07CisgIHZhciBkaXZfcyA9IGZ1bmN0aW9uICh4
LCB5KSB7CisgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwoeSwgUmVwWy8qIHplcm8gKi8wXSkp
IHsKKyAgICAgIHRocm93IE51bWVyaWNfZXJyb3IuSW50ZWdlckRpdmlkZUJ5WmVybzsKKyAgICB9
CisgICAgZWxzZSBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbCh4LCBSZXBbLyogbWluX2ludCAqLzRd
KSAmJiBDYW1sX29iai5jYW1sX2VxdWFsKHksIFJlcFsvKiBtaW51c19vbmUgKi8yXSkpIHsKKyAg
ICAgIHRocm93IE51bWVyaWNfZXJyb3IuSW50ZWdlck92ZXJmbG93OworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogZGl2ICovOV0sIHgsIHkpOworICAgIH0K
KyAgfTsKKyAgdmFyIGRpdl91ID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gZGl2cmVt
X3UoeCwgeSlbMF07CisgIH07CisgIHZhciByZW1fcyA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAg
aWYgKENhbWxfb2JqLmNhbWxfZXF1YWwoeSwgUmVwWy8qIHplcm8gKi8wXSkpIHsKKyAgICAgIHRo
cm93IE51bWVyaWNfZXJyb3IuSW50ZWdlckRpdmlkZUJ5WmVybzsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICByZXR1cm4gQ3VycnkuXzIoUmVwWy8qIHJlbSAqLzEwXSwgeCwgeSk7CisgICAgfQor
ICB9OworICB2YXIgcmVtX3UgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiBkaXZyZW1f
dSh4LCB5KVsxXTsKKyAgfTsKKyAgdmFyIGFuZF8gPSBSZXBbLyogbG9nYW5kICovMTFdOworICB2
YXIgb3JfID0gUmVwWy8qIGxvZ29yICovMTNdOworICB2YXIgeG9yID0gUmVwWy8qIGxvZ3hvciAq
LzE0XTsKKyAgdmFyIHNoaWZ0ID0gZnVuY3Rpb24gKGYsIHgsIHkpIHsKKyAgICByZXR1cm4gQ3Vy
cnkuXzIoZiwgeCwgQ3VycnkuXzEoUmVwWy8qIHRvX2ludCAqLzE5XSwgQ3VycnkuXzIoUmVwWy8q
IGxvZ2FuZCAqLzExXSwgeSwgQ3VycnkuXzEoUmVwWy8qIG9mX2ludCAqLzE4XSwgUmVwWy8qIGJp
dHdpZHRoICovMjFdIC0gMSB8IDApKSkpOworICB9OworICB2YXIgc2hsID0gZnVuY3Rpb24gKHgs
IHkpIHsKKyAgICByZXR1cm4gc2hpZnQoUmVwWy8qIHNoaWZ0X2xlZnQgKi8xNV0sIHgsIHkpOwor
ICB9OworICB2YXIgc2hyX3MgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiBzaGlmdChS
ZXBbLyogc2hpZnRfcmlnaHQgKi8xNl0sIHgsIHkpOworICB9OworICB2YXIgc2hyX3UgPSBmdW5j
dGlvbiAoeCwgeSkgeworICAgIHJldHVybiBzaGlmdChSZXBbLyogc2hpZnRfcmlnaHRfbG9naWNh
bCAqLzE3XSwgeCwgeSk7CisgIH07CisgIHZhciBjbGFtcF9yb3RhdGVfY291bnQgPSBmdW5jdGlv
biAobikgeworICAgIHJldHVybiBDdXJyeS5fMShSZXBbLyogdG9faW50ICovMTldLCBDdXJyeS5f
MihSZXBbLyogbG9nYW5kICovMTFdLCBuLCBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCBS
ZXBbLyogYml0d2lkdGggKi8yMV0gLSAxIHwgMCkpKTsKKyAgfTsKKyAgdmFyIHJvdGwgPSBmdW5j
dGlvbiAoeCwgeSkgeworICAgIHZhciBuID0gY2xhbXBfcm90YXRlX2NvdW50KHkpOworICAgIHJl
dHVybiBDdXJyeS5fMihvcl8sIEN1cnJ5Ll8yKFJlcFsvKiBzaGlmdF9sZWZ0ICovMTVdLCB4LCBu
KSwgQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKi8xN10sIHgsIFJlcFsvKiBi
aXR3aWR0aCAqLzIxXSAtIG4gfCAwKSk7CisgIH07CisgIHZhciByb3RyID0gZnVuY3Rpb24gKHgs
IHkpIHsKKyAgICB2YXIgbiA9IGNsYW1wX3JvdGF0ZV9jb3VudCh5KTsKKyAgICByZXR1cm4gQ3Vy
cnkuXzIob3JfLCBDdXJyeS5fMihSZXBbLyogc2hpZnRfcmlnaHRfbG9naWNhbCAqLzE3XSwgeCwg
biksIEN1cnJ5Ll8yKFJlcFsvKiBzaGlmdF9sZWZ0ICovMTVdLCB4LCBSZXBbLyogYml0d2lkdGgg
Ki8yMV0gLSBuIHwgMCkpOworICB9OworICB2YXIgY2x6ID0gZnVuY3Rpb24gKHgpIHsKKyAgICB2
YXIgbG9vcCA9IGZ1bmN0aW9uIChfYWNjLCBfbikgeworICAgICAgd2hpbGUodHJ1ZSkgeworICAg
ICAgICB2YXIgbiA9IF9uOworICAgICAgICB2YXIgYWNjID0gX2FjYzsKKyAgICAgICAgaWYgKENh
bWxfb2JqLmNhbWxfZXF1YWwobiwgUmVwWy8qIHplcm8gKi8wXSkpIHsKKyAgICAgICAgICByZXR1
cm4gUmVwWy8qIGJpdHdpZHRoICovMjFdOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKENh
bWxfb2JqLmNhbWxfZXF1YWwoQ3VycnkuXzIoYW5kXywgbiwgQ3VycnkuXzIoUmVwWy8qIHNoaWZ0
X2xlZnQgKi8xNV0sIFJlcFsvKiBvbmUgKi8xXSwgUmVwWy8qIGJpdHdpZHRoICovMjFdIC0gMSB8
IDApKSwgUmVwWy8qIHplcm8gKi8wXSkpIHsKKyAgICAgICAgICBfbiA9IEN1cnJ5Ll8yKFJlcFsv
KiBzaGlmdF9sZWZ0ICovMTVdLCBuLCAxKTsKKyAgICAgICAgICBfYWNjID0gMSArIGFjYyB8IDA7
CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiBhY2M7CisgICAgICAgIH0KKyAgICAgIH07CisgICAgfTsK
KyAgICByZXR1cm4gQ3VycnkuXzEoUmVwWy8qIG9mX2ludCAqLzE4XSwgbG9vcCgwLCB4KSk7Cisg
IH07CisgIHZhciBjdHogPSBmdW5jdGlvbiAoeCkgeworICAgIHZhciBsb29wID0gZnVuY3Rpb24g
KF9hY2MsIF9uKSB7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHZhciBuID0gX247Cisg
ICAgICAgIHZhciBhY2MgPSBfYWNjOworICAgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChu
LCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgICAgIHJldHVybiBSZXBbLyogYml0d2lkdGgg
Ki8yMV07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChD
dXJyeS5fMihhbmRfLCBuLCBSZXBbLyogb25lICovMV0pLCBSZXBbLyogb25lICovMV0pKSB7Cisg
ICAgICAgICAgcmV0dXJuIGFjYzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICBfbiA9IEN1cnJ5Ll8yKFJlcFsvKiBzaGlmdF9yaWdodF9sb2dpY2FsICovMTddLCBuLCAxKTsK
KyAgICAgICAgICBfYWNjID0gMSArIGFjYyB8IDA7CisgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgIAorICAgICAgICB9CisgICAgICB9OworICAgIH07CisgICAgcmV0dXJuIEN1cnJ5Ll8x
KFJlcFsvKiBvZl9pbnQgKi8xOF0sIGxvb3AoMCwgeCkpOworICB9OworICB2YXIgcG9wY250ID0g
ZnVuY3Rpb24gKHgpIHsKKyAgICB2YXIgbG9vcCA9IGZ1bmN0aW9uIChfYWNjLCBfaSwgX24pIHsK
KyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFyIG4gPSBfbjsKKyAgICAgICAgdmFyIGkg
PSBfaTsKKyAgICAgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgICAgIGlmIChDYW1sX29iai5jYW1s
X2VxdWFsKG4sIFJlcFsvKiB6ZXJvICovMF0pKSB7CisgICAgICAgICAgcmV0dXJuIGFjYzsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgYWNjJHByaW1lID0gQ2FtbF9v
YmouY2FtbF9lcXVhbChDdXJyeS5fMihhbmRfLCBuLCBSZXBbLyogb25lICovMV0pLCBSZXBbLyog
b25lICovMV0pID8gYWNjICsgMSB8IDAgOiBhY2M7CisgICAgICAgICAgX24gPSBDdXJyeS5fMihS
ZXBbLyogc2hpZnRfcmlnaHRfbG9naWNhbCAqLzE3XSwgbiwgMSk7CisgICAgICAgICAgX2kgPSBp
IC0gMSB8IDA7CisgICAgICAgICAgX2FjYyA9IGFjYyRwcmltZTsKKyAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH07CisgICAgfTsKKyAgICByZXR1cm4g
Q3VycnkuXzEoUmVwWy8qIG9mX2ludCAqLzE4XSwgbG9vcCgwLCBSZXBbLyogYml0d2lkdGggKi8y
MV0sIHgpKTsKKyAgfTsKKyAgdmFyIGVxeiA9IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0dXJuIENh
bWxfb2JqLmNhbWxfZXF1YWwoeCwgUmVwWy8qIHplcm8gKi8wXSk7CisgIH07CisgIHZhciBlcSA9
IENhbWxfb2JqLmNhbWxfZXF1YWw7CisgIHZhciBuZSA9IENhbWxfb2JqLmNhbWxfbm90ZXF1YWw7
CisgIHZhciBsdF9zID0gQ2FtbF9vYmouY2FtbF9sZXNzdGhhbjsKKyAgdmFyIGx0X3UgPSBmdW5j
dGlvbiAoeCwgeSkgeworICAgIHJldHVybiBjbXBfdSh4LCBDYW1sX29iai5jYW1sX2xlc3N0aGFu
LCB5KTsKKyAgfTsKKyAgdmFyIGxlX3MgPSBDYW1sX29iai5jYW1sX2xlc3NlcXVhbDsKKyAgdmFy
IGxlX3UgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiBjbXBfdSh4LCBDYW1sX29iai5j
YW1sX2xlc3NlcXVhbCwgeSk7CisgIH07CisgIHZhciBndF9zID0gQ2FtbF9vYmouY2FtbF9ncmVh
dGVydGhhbjsKKyAgdmFyIGd0X3UgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiBjbXBf
dSh4LCBDYW1sX29iai5jYW1sX2dyZWF0ZXJ0aGFuLCB5KTsKKyAgfTsKKyAgdmFyIGdlX3MgPSBD
YW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbDsKKyAgdmFyIGdlX3UgPSBmdW5jdGlvbiAoeCwgeSkg
eworICAgIHJldHVybiBjbXBfdSh4LCBDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbCwgeSk7Cisg
IH07CisgIHZhciBvZl9pbnRfcyA9IFJlcFsvKiBvZl9pbnQgKi8xOF07CisgIHZhciBvZl9pbnRf
dSA9IGZ1bmN0aW9uIChpKSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKGFuZF8sIEN1cnJ5Ll8xKFJl
cFsvKiBvZl9pbnQgKi8xOF0sIGkpLCBDdXJyeS5fMihvcl8sIHNobChDdXJyeS5fMShSZXBbLyog
b2ZfaW50ICovMThdLCBQZXJ2YXNpdmVzLm1heF9pbnQpLCBvbmUpLCBvbmUpKTsKKyAgfTsKKyAg
dmFyIHRvX3N0cmluZ19zID0gUmVwWy8qIHRvX3N0cmluZyAqLzIwXTsKKyAgdmFyIHRvX3N0cmlu
Z191ID0gZnVuY3Rpb24gKGkpIHsKKyAgICBpZiAoQ2FtbF9vYmouY2FtbF9ncmVhdGVyZXF1YWwo
aSwgUmVwWy8qIHplcm8gKi8wXSkpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMSh0b19zdHJpbmdf
cywgaSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8xKHRvX3N0cmlu
Z19zLCBkaXZfdShpLCB0ZW4pKSArIEN1cnJ5Ll8xKHRvX3N0cmluZ19zLCByZW1fdShpLCB0ZW4p
KTsKKyAgICB9CisgIH07CisgIHZhciAkJHJlcXVpcmUgPSBmdW5jdGlvbiAoYikgeworICAgIGlm
IChiKSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
UGVydmFzaXZlcy5mYWlsd2l0aCgib2Zfc3RyaW5nIik7CisgICAgfQorICB9OworICB2YXIgZGVj
X2RpZ2l0ID0gZnVuY3Rpb24gKGMpIHsKKyAgICBpZiAoYyA+IDU3IHx8IGMgPCA0OCkgeworICAg
ICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoIm9mX3N0cmluZyIpOworICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIHJldHVybiBjIC0gLyogIjAiICovNDggfCAwOworICAgIH0KKyAgfTsKKyAg
dmFyIGhleF9kaWdpdCA9IGZ1bmN0aW9uIChjKSB7CisgICAgaWYgKGMgPj0gNjUpIHsKKyAgICAg
IGlmIChjID49IDk3KSB7CisgICAgICAgIGlmIChjID49IDEwMykgeworICAgICAgICAgIHJldHVy
biBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJvZl9zdHJpbmciKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICByZXR1cm4gKDEwICsgYyB8IDApIC0gLyogImEiICovOTcgfCAwOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChjID49IDcxKSB7CisgICAgICAgIHJl
dHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJvZl9zdHJpbmciKTsKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICByZXR1cm4gKDEwICsgYyB8IDApIC0gLyogIkEiICovNjUgfCAwOworICAg
ICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChjID4gNTcgfHwgYyA8IDQ4KSB7CisgICAgICByZXR1
cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgib2Zfc3RyaW5nIik7CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgcmV0dXJuIGMgLSAvKiAiMCIgKi80OCB8IDA7CisgICAgfQorICB9OworICB2YXIgbWF0
Y2ggPSBkaXZyZW1fdShSZXBbLyogbWludXNfb25lICovMl0sIHRlbik7CisgIHZhciBtYXhfbG93
ZXIgPSBtYXRjaFsxXTsKKyAgdmFyIG1heF91cHBlciA9IG1hdGNoWzBdOworICB2YXIgb2Zfc3Ry
aW5nID0gZnVuY3Rpb24gKHMpIHsKKyAgICB2YXIgbGVuID0gcy5sZW5ndGg7CisgICAgdmFyIHBh
cnNlX2ludCA9IGZ1bmN0aW9uIChpKSB7CisgICAgICAkJHJlcXVpcmUoKygobGVuIC0gaSB8IDAp
ID4gMCkpOworICAgICAgaWYgKChpICsgMiB8IDApIDw9IGxlbiAmJiBDYW1sX3N0cmluZy5nZXQo
cywgaSkgPT09IC8qICIwIiAqLzQ4ICYmIENhbWxfc3RyaW5nLmdldChzLCBpICsgMSB8IDApID09
PSAvKiAieCIgKi8xMjApIHsKKyAgICAgICAgdmFyIF9pID0gaSArIDIgfCAwOworICAgICAgICB2
YXIgX251bSA9IFJlcFsvKiB6ZXJvICovMF07CisgICAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAg
ICAgICB2YXIgbnVtID0gX251bTsKKyAgICAgICAgICB2YXIgaSQxID0gX2k7CisgICAgICAgICAg
aWYgKGkkMSA9PT0gbGVuKSB7CisgICAgICAgICAgICByZXR1cm4gbnVtOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBkaWdpdCA9IEN1cnJ5Ll8xKFJlcFsv
KiBvZl9pbnQgKi8xOF0sIGhleF9kaWdpdChDYW1sX3N0cmluZy5nZXQocywgaSQxKSkpOworICAg
ICAgICAgICAgJCRyZXF1aXJlKGxlX3UobnVtLCBzaHJfdShSZXBbLyogbWludXNfb25lICovMl0s
IEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0sIDQpKSkpOworICAgICAgICAgICAgX251bSA9
IEN1cnJ5Ll8yKFJlcFsvKiBsb2dvciAqLzEzXSwgQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X2xlZnQg
Ki8xNV0sIG51bSwgNCksIGRpZ2l0KTsKKyAgICAgICAgICAgIF9pID0gaSQxICsgMSB8IDA7Cisg
ICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAg
IH07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIF9pJDEgPSBpOworICAgICAg
ICB2YXIgX251bSQxID0gUmVwWy8qIHplcm8gKi8wXTsKKyAgICAgICAgd2hpbGUodHJ1ZSkgewor
ICAgICAgICAgIHZhciBudW0kMSA9IF9udW0kMTsKKyAgICAgICAgICB2YXIgaSQyID0gX2kkMTsK
KyAgICAgICAgICBpZiAoaSQyID09PSBsZW4pIHsKKyAgICAgICAgICAgIHJldHVybiBudW0kMTsK
KyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgZGlnaXQkMSA9
IEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0sIGRlY19kaWdpdChDYW1sX3N0cmluZy5nZXQo
cywgaSQyKSkpOworICAgICAgICAgICAgJCRyZXF1aXJlKGx0X3UobnVtJDEsIG1heF91cHBlcikg
fHwgQ2FtbF9vYmouY2FtbF9lcXVhbChudW0kMSwgbWF4X3VwcGVyKSAmJiBsZV91KGRpZ2l0JDEs
IG1heF9sb3dlcikpOworICAgICAgICAgICAgX251bSQxID0gQ3VycnkuXzIoUmVwWy8qIGFkZCAq
LzZdLCBDdXJyeS5fMihSZXBbLyogbXVsICovOF0sIG51bSQxLCB0ZW4pLCBkaWdpdCQxKTsKKyAg
ICAgICAgICAgIF9pJDEgPSBpJDIgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgIH0KKyAgICB9OworICAg
ICQkcmVxdWlyZSgrKGxlbiA+IDApKTsKKyAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQo
cywgMCk7CisgICAgdmFyIHN3aXRjaGVyID0gbWF0Y2ggLSA0MyB8IDA7CisgICAgaWYgKHN3aXRj
aGVyID4gMiB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgIHJldHVybiBwYXJzZV9pbnQoMCk7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoIChzd2l0Y2hlcikgeworICAgICAgICBjYXNl
IDAgOiAKKyAgICAgICAgICAgIHJldHVybiBwYXJzZV9pbnQoMSk7CisgICAgICAgIGNhc2UgMSA6
IAorICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2ludCgwKTsKKyAgICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgICB2YXIgbiA9IHBhcnNlX2ludCgxKTsKKyAgICAgICAgICAgICQkcmVxdWlyZShD
YW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbChDdXJyeS5fMihSZXBbLyogc3ViICovN10sIG4sIFJl
cFsvKiBvbmUgKi8xXSksIFJlcFsvKiBtaW51c19vbmUgKi8yXSkpOworICAgICAgICAgICAgcmV0
dXJuIEN1cnJ5Ll8xKFJlcFsvKiBuZWcgKi81XSwgbik7CisgICAgICAgIAorICAgICAgfQorICAg
IH0KKyAgfTsKKyAgdmFyIG9mX3N0cmluZ19zID0gZnVuY3Rpb24gKHMpIHsKKyAgICB2YXIgbiA9
IG9mX3N0cmluZyhzKTsKKyAgICAkJHJlcXVpcmUoKyhDYW1sX3N0cmluZy5nZXQocywgMCkgPT09
IC8qICItIiAqLzQ1KSB8fCBDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbChuLCBSZXBbLyogemVy
byAqLzBdKSk7CisgICAgcmV0dXJuIG47CisgIH07CisgIHZhciBvZl9zdHJpbmdfdSA9IGZ1bmN0
aW9uIChzKSB7CisgICAgdmFyIG4gPSBvZl9zdHJpbmcocyk7CisgICAgJCRyZXF1aXJlKCsoQ2Ft
bF9zdHJpbmcuZ2V0KHMsIDApICE9PSAvKiAiKyIgKi80MyAmJiBDYW1sX3N0cmluZy5nZXQocywg
MCkgIT09IC8qICItIiAqLzQ1KSk7CisgICAgcmV0dXJuIG47CisgIH07CisgIHJldHVybiAvKiBt
b2R1bGUgKi9bCisgICAgICAgICAgLyogb2ZfYml0cyAqL29mX2JpdHMsCisgICAgICAgICAgLyog
dG9fYml0cyAqL3RvX2JpdHMsCisgICAgICAgICAgLyogemVybyAqL3plcm8sCisgICAgICAgICAg
LyogYWRkICovYWRkLAorICAgICAgICAgIC8qIHN1YiAqL3N1YiwKKyAgICAgICAgICAvKiBtdWwg
Ki9tdWwsCisgICAgICAgICAgLyogZGl2X3MgKi9kaXZfcywKKyAgICAgICAgICAvKiBkaXZfdSAq
L2Rpdl91LAorICAgICAgICAgIC8qIHJlbV9zICovcmVtX3MsCisgICAgICAgICAgLyogcmVtX3Ug
Ki9yZW1fdSwKKyAgICAgICAgICAvKiBhbmRfICovYW5kXywKKyAgICAgICAgICAvKiBvcl8gKi9v
cl8sCisgICAgICAgICAgLyogeG9yICoveG9yLAorICAgICAgICAgIC8qIHNobCAqL3NobCwKKyAg
ICAgICAgICAvKiBzaHJfcyAqL3Nocl9zLAorICAgICAgICAgIC8qIHNocl91ICovc2hyX3UsCisg
ICAgICAgICAgLyogcm90bCAqL3JvdGwsCisgICAgICAgICAgLyogcm90ciAqL3JvdHIsCisgICAg
ICAgICAgLyogY2x6ICovY2x6LAorICAgICAgICAgIC8qIGN0eiAqL2N0eiwKKyAgICAgICAgICAv
KiBwb3BjbnQgKi9wb3BjbnQsCisgICAgICAgICAgLyogZXF6ICovZXF6LAorICAgICAgICAgIC8q
IGVxICovZXEsCisgICAgICAgICAgLyogbmUgKi9uZSwKKyAgICAgICAgICAvKiBsdF9zICovbHRf
cywKKyAgICAgICAgICAvKiBsdF91ICovbHRfdSwKKyAgICAgICAgICAvKiBsZV9zICovbGVfcywK
KyAgICAgICAgICAvKiBsZV91ICovbGVfdSwKKyAgICAgICAgICAvKiBndF9zICovZ3RfcywKKyAg
ICAgICAgICAvKiBndF91ICovZ3RfdSwKKyAgICAgICAgICAvKiBnZV9zICovZ2VfcywKKyAgICAg
ICAgICAvKiBnZV91ICovZ2VfdSwKKyAgICAgICAgICAvKiBvZl9pbnRfcyAqL29mX2ludF9zLAor
ICAgICAgICAgIC8qIG9mX2ludF91ICovb2ZfaW50X3UsCisgICAgICAgICAgLyogb2Zfc3RyaW5n
X3MgKi9vZl9zdHJpbmdfcywKKyAgICAgICAgICAvKiBvZl9zdHJpbmdfdSAqL29mX3N0cmluZ191
LAorICAgICAgICAgIC8qIG9mX3N0cmluZyAqL29mX3N0cmluZywKKyAgICAgICAgICAvKiB0b19z
dHJpbmdfcyAqL3RvX3N0cmluZ19zLAorICAgICAgICAgIC8qIHRvX3N0cmluZ191ICovdG9fc3Ry
aW5nX3UKKyAgICAgICAgXTsKK30KKworZXhwb3J0cy5NYWtlID0gTWFrZTsKKy8qIE5vIHNpZGUg
ZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgaW50LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4g
ZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2xleGVyJ10gPSBmdW5jdGlvbigpIHsK
K8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBsZXhlci5qcyAvLy8v
Ly8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNF
IEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBGMzIgICAgICAgICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vZjMyIik7Cit2YXIgRjY0ICAgICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL2Y2NCIpOwordmFyIEkzMiAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgi
Li9pMzIiKTsKK3ZhciBJNjQgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vaTY0Iik7
Cit2YXIgTGliICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2xpYiIpOwordmFyIENo
YXIgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NoYXIi
KTsKK3ZhciBCbG9jayAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xp
Yi9qcy9ibG9jayIpOwordmFyIEN1cnJ5ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2YXIgQnVmZmVyICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYnVmZmVyIik7Cit2YXIgTGV4aW5nICAgICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvbGV4aW5nIik7Cit2YXIgU2Ny
aXB0ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3NjcmlwdCIpOwordmFyIFNvdXJjZSAg
ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciAkJFN0cmluZyAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9zdHJpbmciKTsKK3ZhciBP
cGVyYXRvcnMgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vb3BlcmF0b3JzIik7Cit2YXIgQ2Ft
bF9mb3JtYXQgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9m
b3JtYXQiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRm
b3JtL2xpYi9qcy9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0g
cmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisK
K2Z1bmN0aW9uIGNvbnZlcnRfcG9zKHBvcykgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAg
ICAgICAgIC8qIGZpbGUgKi9wb3NbLyogcG9zX2ZuYW1lICovMF0sCisgICAgICAgICAgLyogbGlu
ZSAqL3Bvc1svKiBwb3NfbG51bSAqLzFdLAorICAgICAgICAgIC8qIGNvbHVtbiAqL3Bvc1svKiBw
b3NfY251bSAqLzNdIC0gcG9zWy8qIHBvc19ib2wgKi8yXSB8IDAKKyAgICAgICAgXTsKK30KKwor
ZnVuY3Rpb24gcmVnaW9uKGxleGJ1ZikgeworICB2YXIgbGVmdCA9IGNvbnZlcnRfcG9zKExleGlu
Zy5sZXhlbWVfc3RhcnRfcChsZXhidWYpKTsKKyAgdmFyIHJpZ2h0ID0gY29udmVydF9wb3MoTGV4
aW5nLmxleGVtZV9lbmRfcChsZXhidWYpKTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAg
ICAgICAvKiBsZWZ0ICovbGVmdCwKKyAgICAgICAgICAvKiByaWdodCAqL3JpZ2h0CisgICAgICAg
IF07Cit9CisKK2Z1bmN0aW9uIGVycm9yKGxleGJ1ZiwgbXNnKSB7CisgIHRocm93IFsKKyAgICAg
ICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgcmVnaW9uKGxleGJ1ZiksCisgICAgICAgIG1zZwor
ICAgICAgXTsKK30KKworZnVuY3Rpb24gZXJyb3JfbmVzdChzdGFydCwgbGV4YnVmLCBtc2cpIHsK
KyAgbGV4YnVmWy8qIGxleF9zdGFydF9wICovMTBdID0gc3RhcnQ7CisgIHJldHVybiBlcnJvcihs
ZXhidWYsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHRleHQocykgeworICB2YXIgYiA9IEJ1ZmZlci5j
cmVhdGUocy5sZW5ndGgpOworICB2YXIgaSA9IDE7CisgIHdoaWxlKGkgPCAocy5sZW5ndGggLSAx
IHwgMCkpIHsKKyAgICB2YXIgYzsKKyAgICBpZiAoQ2FtbF9zdHJpbmcuZ2V0KHMsIGkpICE9PSAv
KiAiXFwiICovOTIpIHsKKyAgICAgIGMgPSBDYW1sX3N0cmluZy5nZXQocywgaSk7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgaSA9IGkgKyAxIHwgMDsKKyAgICAgIHZhciBkID0gQ2FtbF9zdHJp
bmcuZ2V0KHMsIGkpOworICAgICAgdmFyIGV4aXQgPSAwOworICAgICAgaWYgKGQgPj0gOTIpIHsK
KyAgICAgICAgaWYgKGQgIT09IDExMCkgeworICAgICAgICAgIGlmIChkICE9PSAxMTYpIHsKKyAg
ICAgICAgICAgIGlmIChkID49IDkzKSB7CisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGMgPSAvKiAiXFwiICov
OTI7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgYyA9IC8qICJcdCIgKi85OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICBjID0gLyogIlxuIiAqLzEwOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICBlbHNlIGlmIChkICE9PSAzNCkgeworICAgICAgICBpZiAoZCAhPT0gMzkpIHsKKyAgICAg
ICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBjID0g
LyogIiciICovMzk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBj
ID0gLyogIlwiIiAqLzM0OworICAgICAgfQorICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAg
ICAgaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgYyA9IENoYXIuY2hyKENhbWxfZm9ybWF0LmNhbWxf
aW50X29mX3N0cmluZygiMHgiICsgKCQkU3RyaW5nLm1ha2UoMSwgZCkgKyAkJFN0cmluZy5tYWtl
KDEsIENhbWxfc3RyaW5nLmdldChzLCBpKSkpKSk7CisgICAgICB9CisgICAgICAKKyAgICB9Cisg
ICAgQnVmZmVyLmFkZF9jaGFyKGIsIGMpOworICAgIGkgPSBpICsgMSB8IDA7CisgIH07CisgIHJl
dHVybiBCdWZmZXIuY29udGVudHMoYik7Cit9CisKK2Z1bmN0aW9uIHZhbHVlX3R5cGUocGFyYW0p
IHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgImYzMiIgOiAKKyAgICAgICAgcmV0dXJu
IC8qIEYzMlR5cGUgKi8yOworICAgIGNhc2UgImY2NCIgOiAKKyAgICAgICAgcmV0dXJuIC8qIEY2
NFR5cGUgKi8zOworICAgIGNhc2UgImkzMiIgOiAKKyAgICAgICAgcmV0dXJuIC8qIEkzMlR5cGUg
Ki8wOworICAgIGNhc2UgImk2NCIgOiAKKyAgICAgICAgcmV0dXJuIC8qIEk2NFR5cGUgKi8xOwor
ICAgIGRlZmF1bHQ6CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgInRl
eHQvbGV4ZXIubWxsIiwKKyAgICAgICAgICAgICAgNDUsCisgICAgICAgICAgICAgIDkKKyAgICAg
ICAgICAgIF0KKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGludG9wKHQsIGkzMiwg
aTY0KSB7CisgIHN3aXRjaCAodCkgeworICAgIGNhc2UgImkzMiIgOiAKKyAgICAgICAgcmV0dXJu
IGkzMjsKKyAgICBjYXNlICJpNjQiIDogCisgICAgICAgIHJldHVybiBpNjQ7CisgICAgZGVmYXVs
dDoKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAidGV4dC9sZXhlci5t
bGwiLAorICAgICAgICAgICAgICA1MSwKKyAgICAgICAgICAgICAgOQorICAgICAgICAgICAgXQor
ICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gZmxvYXRvcCh0LCBmMzIsIGY2NCkgewor
ICBzd2l0Y2ggKHQpIHsKKyAgICBjYXNlICJmMzIiIDogCisgICAgICAgIHJldHVybiBmMzI7Cisg
ICAgY2FzZSAiZjY0IiA6IAorICAgICAgICByZXR1cm4gZjY0OworICAgIGRlZmF1bHQ6CisgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFp
bHVyZSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgInRleHQvbGV4ZXIubWxsIiwKKyAg
ICAgICAgICAgICAgNTcsCisgICAgICAgICAgICAgIDkKKyAgICAgICAgICAgIF0KKyAgICAgICAg
ICBdOworICB9Cit9CisKK2Z1bmN0aW9uIG51bW9wKHQsIGkzMiwgaTY0LCBmMzIsIGY2NCkgewor
ICBzd2l0Y2ggKHQpIHsKKyAgICBjYXNlICJmMzIiIDogCisgICAgICAgIHJldHVybiBmMzI7Cisg
ICAgY2FzZSAiZjY0IiA6IAorICAgICAgICByZXR1cm4gZjY0OworICAgIGNhc2UgImkzMiIgOiAK
KyAgICAgICAgcmV0dXJuIGkzMjsKKyAgICBjYXNlICJpNjQiIDogCisgICAgICAgIHJldHVybiBp
NjQ7CisgICAgZGVmYXVsdDoKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAidGV4dC9sZXhlci5tbGwiLAorICAgICAgICAgICAgICA2NSwKKyAgICAgICAgICAgICAgOQor
ICAgICAgICAgICAgXQorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbWVtc3ooc3os
IG04LCBtMTYsIG0zMikgeworICBzd2l0Y2ggKHN6KSB7CisgICAgY2FzZSAiMTYiIDogCisgICAg
ICAgIHJldHVybiBtMTY7CisgICAgY2FzZSAiMzIiIDogCisgICAgICAgIHJldHVybiBtMzI7Cisg
ICAgY2FzZSAiOCIgOiAKKyAgICAgICAgcmV0dXJuIG04OworICAgIGRlZmF1bHQ6CisgICAgICB0
aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVy
ZSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgInRleHQvbGV4ZXIubWxsIiwKKyAgICAg
ICAgICAgICAgNzIsCisgICAgICAgICAgICAgIDkKKyAgICAgICAgICAgIF0KKyAgICAgICAgICBd
OworICB9Cit9CisKK2Z1bmN0aW9uIGV4dChlLCBzLCB1KSB7CisgIHZhciBzd2l0Y2hlciA9IGUg
LSAxMTUgfCAwOworICBpZiAoc3dpdGNoZXIgPiAyIHx8IHN3aXRjaGVyIDwgMCkgeworICAgIHRo
cm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwK
KyAgICAgICAgICBbCisgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAorICAgICAgICAgICAg
NzgsCisgICAgICAgICAgICA5CisgICAgICAgICAgXQorICAgICAgICBdOworICB9CisgIGVsc2Ug
eworICAgIHN3aXRjaCAoc3dpdGNoZXIpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJl
dHVybiBzOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICJ0ZXh0L2xleGVyLm1sbCIsCisgICAgICAgICAgICAg
ICAgICA3OCwKKyAgICAgICAgICAgICAgICAgIDkKKyAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgIF07CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gdTsKKyAgICAgIAor
ICAgIH0KKyAgfQorfQorCit2YXIgb3B0ID0gTGliLk9wdGlvblsvKiBnZXQgKi8wXTsKKwordmFy
IF9fb2NhbWxfbGV4X3RhYmxlcyA9IC8qIHJlY29yZCAqL1sKKyAgLyogbGV4X2Jhc2UgKi8iXDBc
MG9ceGZmcFx4ZmZxXHhmZnJceGZmXHgwMVwwVVwwXHgwN1wwXHgxYlwwXHgwNVwwb1wwb1wwdFww
XHgwNlwwalwwXHgwZVwwa1wweVwwXHgxMFwweVwwc1wwXHhiNFwwXHgwMVx4MDF6XDBceGJlXDBc
eGM1XDBceDA0XHgwMVx4MWFceDAxXHhmZVx4ZmZceDAyXDBzXHhmZlx4MTNcMDxceDAxUlx4MDF4
XHgwMVwiXDBceDhmXHgwMVx4ZDVceDAxXHgwZVx4MDFceGVlXHgwMS9ceDAyPlx4MDJVXHgwMlx4
OTZceDAyXHhhMFx4MDJPXDBEXDBceGFjXHgwMlx4YzJceDAyXHhlN1x4MDJcMFx4MDMmXHgwM0xc
eDAzelwwfFwwflwwXHg4NlwwfFwweVwwXHhmYlx4ZmZceDg1XDBcMFwwXHgwZlwwXHg4N1wwclx4
MDNceDk4XHgwM1x4YjFcMFx4ZThceGZmXHJcMFx4MTBcMFx4ZWVcMFx4YWRcMFx4YjZcMFx4YmJc
MFx4YzJcMFx4ODJceGZmXHhiNFwweFx4ZmZcMFwwXHg5Y1x4MDJceGI4XDBceGJiXDBceGYxXDBc
eGNhXDBceGJmXDBceGMyXDBceGUzXDBceGYyXDBceGVmXDBceGU0XDBceGY4XDBceGViXDBceGYz
XDAqXHgwMVxuXHgwMVx4ZTZcMFx4ZThcMFx4ZjVcMFx4ZjdcMFx4ZjdcMFx4ZjVceGZmXHhkN1x4
ZmZceGQ2XHhmZlwwXDBceDAxXDBceDE2XHgwMVx4MTRceDAxalx4MDFceDFjXDBceDFhXDBceDFi
XHgwMVxiXHgwMVx4ZGJceGZmXHgxOVx4MDFceGIzXHhmZlx4YjRceGZmJ1x4MDFceGIxXHhmZlx4
YjJceGZmM1x4MDFceDFhXHgwMVx4MWVceDAxXHgxZVx4MDEsXHgwMVx4YWVceDAxXHgxZlwwJlww
XHhkYVx4ZmZceGNjXHhmZkFceDAxXHhjM1x4ZmZWXHgwMVx4YzFceGZmXHhjMlx4ZmYzXHgwMUFc
eDAxOVx4MDE+XHgwMVx4ZDVceGZmZlx4MDFoXHgwMVx4Y2RceGZmXHhjNlx4ZmZhXHgwMVx4Y2Jc
eGZmWFx4MDFwXHgwMWNceDAxXHhjOVx4ZmZceGNhXHhmZmNceDAxd1x4MDF0XHgwMVx4ODRceDAx
clx4MDFceGM3XHhmZlx4YzhceGZmdVx4MDFceDg1XHgwMXlceDAxfFx4MDF7XHgwMVx4ODlceDAx
e1x4MDFcMFwwXHg5MFx4MDEqXDAsXDBceDk3XHhmZlx4OGJceDAxXHhiZlx4ZmZceGMwXHhmZlx4
YzVceGZmXHg4Nlx4MDFceGM0XHhmZlx4N2ZceDAxXHhiN1x4ZmZceGI1XHhmZlx4OWJceDAxXHg5
Y1x4MDFceDg5XHgwMVx4YWZceGZmXHhiMFx4ZmZceDljXHgwMVx4YWRceGZmXHhhZVx4ZmZceGEz
XHgwMVx4YTBceDAxXHhlM1x4MDFceGFhXHgwMVx4ZGVceDAxXHhlMVx4MDFceGE2XHhmZlx4YThc
eDAxXHhiYVx4MDFceGM2XHgwMVx4Y2JceDAxXHhiOFx4MDFceGZkXHgwMVx4ZmZceDAxXHhjZlx4
MDFcdFx4MDJcdFx4MDJcZlx4MDJceGExXHhmZlx4OWZceGZmXHhkYVx4MDFceDBlXHgwMlx4MGVc
eDAyXHgxMVx4MDJceGEwXHhmZlx4OWVceGZmXHgxOFx4MDJ+XHgwM1x4ZDZceDAxXHhlNlx4MDFc
eGRmXHgwMVx4ZGJceDAxXHhkNlx4MDFceGU4XHgwMVx4ZTRceDAxXHhlN1x4MDFceGU2XHgwMVx4
ZjRceDAxXHhlNlx4MDEsXHgwMlx4ZjZceDAxJ1x4MDI2XHgwMlx4OTZceGZmXHhmOFx4MDFcYlx4
MDJcblx4MDJceDE1XHgwMlx4MWJceDAyXGJceDAyTVx4MDJPXHgwMiZceDAyXVx4MDJfXHgwMlx4
YTVceGZmKVx4MDJgXHgwMmJceDAyXHhhNFx4ZmYmXHgwMipceDAyKVx4MDJceDg2XHhmZi5ceDAy
XHhmMlx4ZmZceGY4XHhmZlx4ZjlceGZmXHhmYVx4ZmZceGQxXHgwM0ZceDA0XHhmN1x4ZmY5XHgw
NFx4YTRceDA0N1x4MDJyXHgwMnVceDAyelx4MDJceGI3XHgwM0RceDAySFx4MDI5XHgwMkZceDAy
S1x4MDI+XHgwMkVceDAyUVx4MDJNXHgwMk1ceDAyXHhiZFx4MDNceDk3XHgwMlRceDAyeFx4MDJG
XHgwMnRceDAyXlx4MDJSXHgwMmdceDAyXHg4YVx4MDJ4XHgwMlx4YmRceDAyXHhiZlx4MDJceDg2
XHgwMlx4Y2ZceDAyXHhjYVx4MDJceGQyXHgwMlx4OWRceGZmXHg5Ylx4ZmZceGE0XHgwMlx4ZGZc
eDAyXHhlMlx4MDJceGVmXHgwMlx4OWNceGZmXHg5YVx4ZmZceGFmXHgwMlx4YmFceDAyXHhiZFx4
MDJceGI3XHgwMlx4YjhceGZmXHhiYVx4MDJceGQxXHhmZlx4YTlceGZmXHhhYVx4ZmZceGNlXHgw
Mlx4ZDdceDAyXHhkZFx4ZmZceGRhXHgwMlx4Y2JceDAyXHhjZlx4MDJceGNkXHgwMlx4ZGJceDAy
XHhkY1x4ZmZceGQzXHgwMlx4ZDJceGZmXHhiZFx4ZmZceGVlXHgwMlx4ZGNceDAyXHhkNFx4ZmZc
eGViXHgwMlx4ZGZceDAyXHhlY1x4MDJceGNlXHhmZlx0XHgwM1x4ZmJceDAyXHhkM1x4ZmZceGJl
XHhmZlwwXHgwM1x4MDJceDAzXDBceDAzXHhkMFx4ZmZceGZlXHgwMlx4MDZceDAzXHgxMlx4MDNc
eGNmXHhmZlx4ZmVceDAyXHRceDAzXGZceDAzXHhiY1x4ZmZceGJhXHhmZlx4YjlceGZmXGZceDAz
XHgwNVx4MDNceGJiXHhmZlx4MTdceDAzXHgxZlx4MDMvXHgwM2ZceDAzMVx4MDNiXHgwM2VceDAz
XHhhM1x4ZmZceGFjXHhmZlx4YTdceGZmXHhhOFx4ZmYxXHgwMy1ceDAzKFx4MDM4XHgwMyxceDAz
L1x4MDMuXHgwMzxceDAzOFx4MDNceDhhXHgwM1FceDAzXHg4OFx4MDNceDhiXHgwM1x4OTlceGZm
XHg5MFx4MDNceDFmXHgwNFpceDAzTlx4MDNYXHgwM1NceDAzVlx4MDNVXHgwM1FceDAzYVx4MDNc
eDk4XHgwM2xceDAzXHhhZFx4MDNceGIyXHgwM1x4YTJceGZmfVx4MDN5XHgwM3RceDAzXHg4NFx4
MDN9XHgwM1x4ODRceDAzXHg4M1x4MDNceDkyXHgwM1x4OGJceDAzXHhkMVx4MDNceGEyXHgwM1x4
ZDZceDAzXHhkOVx4MDNceDk4XHhmZlx4YWJceDAzXHg5Mlx4ZmZceDljXHgwM1x4YTdceDAzXHg5
OFx4MDNceGIzXHgwM1x4YWFceDAzXHhiMlx4MDNceGJlXHgwM1x4ZjRceGZmXHhiZlx4MDNceGI5
XHgwM1x4ZWJceDAzXHg5N1x4MDRceGEyXHgwNFx4YWNceDA0XHhiNlx4MDRceGRjXHgwNFx4Yzlc
eDAzXHhiZFx4MDNceGJjXHgwM1x4ZDlceDAzXHhjMFx4MDRceGMxXHgwM1x4YzhceDAzXHhkNlx4
MDNceGNlXHgwM1x4Y2VceDAzXHhkMFx4MDNceGRmXHgwM1x4ZDVceDAzXHhkY1x4MDNceGQ0XHgw
M1x4ZDJceDAzXHhmOVx4MDNceDAyXHgwNFx4MGZceDA0XHg4MFx4ZmZceGZlXHgwM1x4MTRceDA0
XG5ceDA0XHgwZVx4MDRceDE0XHgwNFx4N2ZceGZmXHgxM1x4MDRcclx4MDQoXHgwNFx4MWZceDA0
XHgxYlx4MDRceDE0XHgwNC1ceDA0JFx4MDQrXHgwNDFceDA0flx4ZmYqXHgwNC5ceDA0Klx4MDQu
XHgwND9ceDA0P1x4MDQ3XHgwNF9ceDA0fVx4ZmZ8XHgwNHxceDA0XHg4MFx4MDRceDg1XHgwNFx4
OTVceDA0XHg4N1x4MDRceDk1XHgwNFx4OGZceDA0e1x4ZmZceDlkXHgwNFx4OGZceDA0elx4ZmZc
eDk5XHgwNFx4YTFceDA0XHg4ZVx4MDRceDkxXHgwNFx4OTFceDA0XHg5ZFx4MDRceDk4XHgwNFx4
OWFceDA0eVx4ZmZceDljXHgwNFx4YTZceDA0XHg5N1x4MDRceGYzXHhmZlx4YTFceDA0XHhiYVx4
MDRceGMyXHgwNFx4OGNceGZmXHhiOVx4MDRceGI4XHgwNFx4YjJceDA0XHg4YVx4ZmZceGJhXHgw
NFx4YzlceDA0XHhjZVx4MDRceGNkXHgwNFx4YzlceDA0XHhkNVx4MDRceGQ1XHgwNFx4Y2NceDA0
XHhkNFx4MDRceGYxXHhmZlx4YzZceDA0XHhjY1x4MDRceGNjXHgwNFx4ZjBceGZmXHhlMlx4MDRc
eDg4XHhmZlx4ZTVceDA0XHhkNlx4MDRceGU0XHgwNFx4ZGRceDA0XHhlZlx4ZmZceGUwXHgwNFx4
ZTlceDA0XHhlNVx4MDRceGViXHhmZlx4ZWFceDA0XHhlMVx4MDRceGU5XHgwNFx4ZWFceGZmXHhl
Y1x4MDRceGVmXHgwNFx4ZTFceDA0XHhlZVx4ZmZceGU2XHgwNFx4OGVceGZmXHhlM1x4MDRceGYw
XHgwNFx4ZjJceDA0XHhlZFx4ZmZceGVhXHgwNFx4ZjNceDA0XHhlNlx4ZmZceDg5XHhmZlx4ZWFc
eDA0XHhlOFx4MDRceGU4XHgwNFx4ODVceGZmXHhmNlx4MDRceGY1XHgwNFx4ZWFceDA0XHhlYlx4
MDRceGVmXHgwNFx4ZjRceDA0XHhlOVx4ZmZceGY4XHgwNFx4ZjFceDA0XHg4Zlx4ZmZceGYzXHgw
NFx4ZjNceDA0XHgwM1x4MDVceGY5XHgwNFx4ODNceGZmXG5ceDA1XHhmZFx4MDRcdFx4MDVcblx4
MDVceDAyXHgwNVx4ZTdceGZmXHgxMlx4MDVceDA2XHgwNVx4MDRceDA1XHgxMVx4MDVceDE0XHgw
NVxuXHgwNVx4ZTBceGZmXHgxMlx4MDVceDkzXHhmZlxmXHgwNVx4MTRceDA1XHg4Ylx4ZmZcYlx4
MDVceDFhXHgwNVx4MTBceDA1XHgxZVx4MDVceDE5XHgwNVx4MWNceDA1XGZceDA1XHhlNVx4ZmZc
eDFhXHgwNVx4MTZceDA1XHgxNFx4MDVcIlx4MDUmXHgwNVx4MWNceDA1XHhlMVx4ZmZceDFhXHgw
NShceDA1Klx4MDUgXHgwNVx4ZGVceGZmXHgxYlx4MDVceDFhXHgwNVx4OTFceGZmJlx4MDUgXHgw
NVx4MWRceDA1XHg4NFx4ZmYgXHgwNSdceDA1KFx4MDU2XHgwNS1ceDA1KVx4MDU0XHgwNTBceDA1
KFx4MDU2XHgwNTlceDA1KVx4MDVceGUzXHhmZixceDA1Olx4MDUyXHgwNS1ceDA1Q1x4MDU2XHgw
NUBceDA1OVx4MDU4XHgwNTZceDA1MFx4MDVceDk1XHhmZjtceDA1PFx4MDU4XHgwNU5ceDA1R1x4
MDVDXHgwNUFceDA1Tlx4MDVRXHgwNUhceDA1XHhlMlx4ZmZGXHgwNVRceDA1Vlx4MDVMXHgwNVx4
ZGZceGZmQlx4MDVbXHgwNU5ceDA1V1x4MDVQXHgwNU9ceDA1TVx4MDVHXHgwNVx4OTRceGZmX1x4
MDVhXHgwNVdceDA1XHg4ZFx4ZmZQXHgwNV9ceDA1U1x4MDViXHgwNVRceDA1XHg4Y1x4MDVceDlh
XHgwNVx4YTRceDA1XHhhZVx4MDVceGI4XHgwNVx4Y2ZceDA1XHg4Mlx4MDV+XHgwNVx4ODBceDA1
d1x4ZmZceDgzXHgwNVx4OTVceDA1XHg4YVx4MDVceDkwXHhmZlx4MTVceDA2XHhlZVx4MDV0XHhm
ZnVceGZmXHgwMlx4MDZceGZiXHhmZlx4ZmNceGZmXHhmZFx4ZmZceGNlXHgwNVx4MDFcMFx4ZmZc
eGZmXHhmZVx4ZmYiLAorICAvKiBsZXhfYmFja3RyayAqLyJceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHg5MFwwXHg5MFwwXHg5MFwwXHg5MFwwXHg5MFwwXHg5MFwwXHg5
MFwwXHg5MFwwXHg5MFwwXHg5MFwwXHg5MFwwXHg5MFwwXHg5MFwwXHg5MFwwXHg5MFwwXHg5MFww
XHg5MFwwXHg5MFwwXHg5MFwwXHg5MFwwXHg5MFwwXHgwMlwwXHgwMlwwXHhmZlx4ZmZcMFwwXHhm
Zlx4ZmZceGZmXHhmZlx4MDRcMFx4ZmZceGZmXHgwMlwwXHhmZlx4ZmZceGZmXHhmZlx4MDJcMFx4
ZmZceGZmXHgwMlwwXHgwNFwwXHhmZlx4ZmZceDA0XDBceDA0XDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceDAzXDBceDAzXDBceGZmXHhmZlx4MDNcMFx4MDNcMFx4MDNcMFx4ZmZceGZmXHgwNFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwNFwwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwNFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXCJcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmI1wwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZklcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx0XDBceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZcYlwwXGJcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx0XDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZUXDBceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx0XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYn
XDAnXDBceGZmXHhmZidcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceDgzXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgxM1wwXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgxYlwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmflwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmeFwwXHhmZlx4ZmYmXDAmXDBceGZmXHhmZiZcMFx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceDg5XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4MDRcMFx4MDRcMFx4ZmZceGZmXHhmZlx4ZmYiLAorICAvKiBsZXhfZGVmYXVs
dCAqLyJceDAxXDBcMFwwXDBcMFwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXHgwMVx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
MFwwXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4
ZmZcMFwwXDBcMFx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlwwXDBceGZm
XHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZc
eGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFww
XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFwwXDBcMFwwXHhmZlx4ZmZc
MFwwXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhmZlx4
ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlww
XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXDBcMFwwXDBcMFwwXHgw
MVx4MDFcMFx4MDFcMFwwXHhmZlx4ZmZcMFx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXDBcMFwwXDBceGZmXHhmZlx4
ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhm
Zlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XDBcMFx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFww
XDBcMFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZm
XHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBc
MFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhhOVx4MDJcMFwwXDBcMFx4YWRceDAyXDBcMFww
XDBcMFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwIiwKKyAgLyogbGV4X3RyYW5zICovJ1wwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDRcMFx4MDNcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFx4MDRcMFwwXDBceDE2XDBcMFwwXHgwNlwwXDBcMFwwXDBcMFwwXHgxZFww
XHgxY1wwXHhiMlx4MDJceDE5XDBcMFwwXHgxOVwwT1wwXHhhNVwwXHgxYlwwXHgxYVwwXHgxYVww
XHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwPlwwXHgwNVwwXHhhOVx4
MDJceDFlXDAsXDA/XDAsXDBceGQ0XDBOXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDAm
XDBuXDAmXDBuXDBceDdmXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDBceDdmXDBceGE3
XDBceGE4XDB0XDBxXDBceDE0XDBceDEwXDBcblwwXHgxMVwwXHgwZVwwXHgxNVwwXHRcMFx4YTRc
eDAyXHgxOFwwelx4MDIjXHgwMlx4MGZcMFx4MTNcMFx4MTdcMFxiXDBceDA3XDB4XHgwMlxyXDBc
eDBiXDBcZlwwXHgxMlwwXHhhOFx4MDJ5XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceDExXHgwMlx4ZjRceDAxXHhhOFx4MDJceGE4XHgwMlx4OTZceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4OTVceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDI8XDBceGE4XHgwMjVcMFx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJgXHgwMlx4YThceDAyRFx4MDJc
eGE4XHgwMkZceDAyMlx4MDJceDE4XHgwMlx4MDVceDAyXHgxOVx4MDI0XHgwMlx4ZmVceDAxPFx4
MDA1XHgwMlx4MDRceDAyXHhlOFx4MDFceDk2XHgwMTZcMFx4OTdceDAxXHgxN1x4MDJFXHgwMl9c
eDAyN1wwXHg5NVx4MDFceDA2XHgwMVx4ZTlceDAxXHhmYVwwXHgwNVx4MDFceGZmXHgwMThceDAw
M1x4MDJceGVhXHgwMTlcMDpcMEVcMDtcMD1cMERceDAwMFwwL1wwL1wwL1wwL1wwL1wwL1wwL1ww
L1wwL1wwQFwwXHgwMlwwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1ww
XHhmY1wwXHhmY1wwXHhmY1wwXHhmZFwwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhm
Y1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1ww
XHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmY1wwXHhmNlwwTFwwXHhmZVwwQ1wwSVww
SlwwS1wwTVwwXHgwNFx4MDFceGMxXDBCXDBGXDBceGJhXDAuXDBceGIxXDBceGFmXDBceGFkXDAg
XDAtXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFh
XDBceDFhXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAgXDBceDFmXDBceDFhXDBceDFh
XDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXHgwMDZcMFx4
YWNcMFx4YjJcMFx4OTdcMFx4OTFcMFx4OGZcMFx4ODZcMHdcMFx4OGNcMFx4ZmZcMEdcMFx4MWZc
MGZcMFx4OTZcMGVcMGJcMEhcMFx4YjNcMFx4OGJcMHlcMHhcMFx4MWZcMGNcMGRcMCBcMCBcMCBc
MCBcMCBcMCBcMCBcMCBcMCBcMCBcMGBcMGpcMGtcMGFcMG9cMHBcMFx4ODBcMHBcMF9cMFx4MWZc
MFx4ZmNcMFx4MWZcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMHNcMHpcMHJcMGdcMHtc
MHxcMCFcMCJcMCJcMCJcMCJcMCJcMCJcMGlcMHZcMG1cMHVcMGxcMGhcMFx4ODJcMFx4ODNcMFx4
MWZcMG5cMFx4ODdcMFx4ODhcMFx4ODFcMCRcMFx4ODlcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJc
MCJcMCJcMFx4OGFcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCVcMCJcMCRcMCRcMCRc
MCRcMCRcMCRcMCRcMCRcMCRcMCRcMFx4ODVcMFx4OGVcMFx4ODRcMFx4OGRcMFx4OTBcMFx4OTJc
MFx4OTNcMCRcMCRcMCRcMCRcMClcMCRcMFx4OTVcMFx4YTlcMFx4OTRcMCJcMCJcMCJcMCJcMCVc
MCJcMH5cMFx4OThcMH1cMFx4OWRcMFx4OWFcMFx4OTlcMFx4OWNcMFx4N2ZcMFx4OWJcMCNcMFx4
OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMCRcMCRcMCRcMCRcMClcMCRc
MFx4YTZcMFx4YWJcMFx4YWVcMFx4YjBcMFx4YjdcMFx4YjRcMFx4YjZcMFx4YWFcMFx4YjVcMCNc
MCZcMFx4ZmRcMCZcMCRcMFx4YmJcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdc
MFwnXDBceGI5XDBceGJjXDBceGI4XDBceGJkXDBceGJlXDBceGJmXDBceGMwXDAiXDAiXDAiXDAi
XDAlXDAiXDAkXDBceGMyXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1ww
XHhjM1wwXHhjNFwwXHhjNVwwXHhjN1wwXHhjZVwwXHhjNlwwXHhjOFwwIlwwIlwwIlwwIlwwJVww
IlwwXHhjOVwwIlwwIlwwIlwwIlwwJVwwIlwwXHhjYlwwXHhjZFwwXHhjY1wwXHhjYVwwXHhjZlww
XHhkMVwwXHhkM1wwXHhkMlwwXHhkMFwwI1wwXHhkNVwwXHhhZlwwXHhkOVwwXHhkYVwwXHhkYlww
XHhkOFwwXHg5OVwwXHhkY1wwXHhlNlwwIlwwIlwwIlwwIlwwJVwwIlwwXHg5NlwwXHhkZFwwXHhk
ZVwwXHhkZlwwXHhlMFwwXHhlMVwwXHhlMlwwXHhlM1wwXHhlNFwwI1wwKFwwKFwwKFwwKFwwKFww
KFwwKFwwKFwwKFwwKFwwJlwwXHhlNVwwJlwwXHhlN1wwXHhlOFwwKlwwKlwwKlwwKlwwKlwwKlww
KlwwKlwwKlwwKlwwXHhlOVwwXHhlYVwwXHhlYlwwXHhlZFwwXHhmMlwwXHhlY1wwXHhlZVwwJFww
JFwwJFwwJFwwKVwwJFwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwXHhlZlwwXHhmMFww
XHhmMVwwXHhmM1wwXHhmNFwwXHhmNVwwXHhmN1wwJFwwJFwwJFwwJFwwKVwwJFwwXHhmOFwwXHhm
OVwwXHhmYlwwJFwwJFwwJFwwJFwwKVwwJFwwXHg5M1x4MDF2XHgwMVx4MDdceDAxXGJceDAxaFx4
MDFlXHgwMVpceDAxVFx4MDFmXHgwMSNcMFtceDAxUFx4MDFMXHgwMUFceDAxSVx4MDFVXHgwMUhc
eDAxJFwwJFwwJFwwJFwwKVwwJFwwZ1x4MDExXHgwMTlceDAxLFx4MDFWXHgwMTpceDAxOFx4MDFc
eDFhXHgwMVx4MWJceDAxI1wwK1wwK1wwK1wwK1wwK1wwK1wwK1wwK1wwK1wwK1wwK1wwK1wwK1ww
K1wwK1wwK1wwK1wwK1wwK1wwK1wwIFwwXHgxY1x4MDEvXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDAv
XDAvXDBceDE4XHgwMWNcMFx4MTdceDAxXHgxZFx4MDFceDE5XHgwMVx4MWZceDAxJlx4MDFceDFl
XHgwMSBceDAxIVx4MDEgXDBceDFmXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDBceDE1
XHgwMVpcMCVceDAxXlwwWFwwVFwwI1x4MDFSXDAkXHgwMSJceDAxXHgxNlx4MDFceDFmXDBdXDBZ
XDBTXDBWXDBbXDBcJ1x4MDFXXDBcXFwwUFwwXHgxZlwwKVx4MDFRXDBVXDAoXHgwMStceDAxMlx4
MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlwwKlx4MDEtXHgwMS5c
eDAxL1x4MDEwXHgwMTJceDAxXHgxZlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlwwJFx4
MDA2XHgwMTJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAw
MVx4MDA3XHgwMUBceDAxPlx4MDE7XHgwMTxceDAxPVx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDNc
eDAwMlwwP1x4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlwwRFx4MDFCXHgwMUVceDAxJlww
Rlx4MDEmXDAkXDBDXHgwMTRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0
XHgwMDRcMEdceDAxMlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDJceDAwMlx4MDAyXHgwMDJceDAw
Mlx4MDAzXHgwMDJcMEtceDAxSlx4MDFNXHgwMSNcME5ceDAxT1x4MDFRXHgwMVJceDAxU1x4MDFZ
XHgwMVhceDAxV1x4MDFdXHgwMSRcMFxcXHgwMTRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgw
MDRceDAwNFx4MDA0XHgwMDRcMF5ceDAxMlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDJceDAwMlx4
MDAyXHgwMDJceDAwMlx4MDAzXHgwMDJcMF9ceDAxYFx4MDFhXHgwMSNcMGJceDAxY1x4MDFkXHgw
MWlceDAxalx4MDFrXHgwMWxceDAxbVx4MDFuXHgwMW9ceDAxcFx4MDFBXDBBXDBBXDBBXDBBXDBB
XDBBXDBBXDBBXDBBXDBxXHgwMTJceDAwMlx4MDAyXHgwMDJceDAwM1x4MDAyXDBBXDBBXDBBXDBB
XDBBXDBBXDByXHgwMXNceDAxdFx4MDEjXDB1XHgwMXdceDAxXHg4NVx4MDF7XHgwMVtceDAxfFx4
MDF9XHgwMX5ceDAxXHg3Zlx4MDFceDgwXHgwMVx4ODFceDAxQVwwQVwwQVwwQVwwQVwwQVwwQVww
QVwwQVwwQVwwXHg4Mlx4MDFBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBaXDBc
eDgzXHgwMV5cMFhcMFx4ZDZcMFx4ODRceDAxUlwwXHg4Nlx4MDFceDg3XHgwMVx4ODhceDAxXHg4
OVx4MDFdXDBZXDBTXDBWXDBbXDBceDhhXHgwMVx4ZDdcMFxcXDBQXDBceDAzXHgwMVx4OGJceDAx
XHg4Y1x4MDFVXDBceDhkXHgwMVx4MDNceDAxQVwwQVwwQVwwQVwwQVwwQVwwXHg4ZVx4MDFceDhm
XHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJc
eDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHg5MFx4MDFceDkxXHgwMVx4OTJceDAxXHg5NFx4
MDFceGE1XHgwMVx4OWRceDAxXHg5OFx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgw
MVx4MDJceDAxXHgwMlx4MDFceDEwXHgwMVx4OTlceDAxXHgxNFx4MDFcZlx4MDFceDBiXHgwMVx4
MGZceDAxXG5ceDAxXHg5YVx4MDFceDliXHgwMVx4OWNceDAxM1x4MDFceDEzXHgwMVxyXHgwMVx4
MTFceDAxXHg5ZVx4MDFceDlmXHgwMVx4YTBceDAxXHRceDAxXHgxMlx4MDFceDBlXHgwMTVceDAx
XHgwM1x4MDFceGE2XHgwMVx4YTdceDAxXHhhOFx4MDE0XHgwMVx4MDJceDAxXHgwMlx4MDFceDAy
XHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4YTlceDAxXHhkZlx4MDFceGRjXHgwMVx4ZDNc
eDAxXHhjYVx4MDFceGJmXHgwMVx4YjlceDAxXHgwM1x4MDFceGIxXHgwMVx4YjJceDAxXHhiM1x4
MDFceGI0XHgwMVx4YjVceDAxXHgwM1x4MDFceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBc
eGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZkXDBceGZjXDBceGZjXDBceGZjXDBceGZj
XDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBc
eGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGI2XHgwMVx4
YjdceDAxXHhmZVwwXDBceDAxXDBceDAxXDBceDAxXDBceDAxXDBceDAxXDBceDAxXDBceDAxXDBc
eDAxXDBceDAxXDBceDAxXHhiOFx4MDFceGJhXHgwMVx4YmJceDAxXHhiY1x4MDFceGJkXHgwMVx4
YmVceDAxXHhjMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFceDEwXHgw
MVx4YzFceDAxXHgxNFx4MDF6XHgwMVx4MGJceDAxXHgwZlx4MDFcblx4MDFceGMyXHgwMVx4YzNc
eDAxXHhjNFx4MDFceGM1XHgwMVx4MTNceDAxXHJceDAxXHgxMVx4MDFceGM2XHgwMXlceDAxXHhj
N1x4MDF4XHgwMVx4MTJceDAxXHgwZVx4MDFceGM4XHgwMVx4YzlceDAxXHhjYlx4MDFceGNjXHgw
MVx4Y2RceDAxXHhjZVx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFceGNm
XHgwMVx4ZDBceDAxXHhmZlwwXHhkMVx4MDFceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBc
eGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZkXDBceGZjXDBceGZjXDBceGZjXDBceGZj
XDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBc
eGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGQyXHgwMVx4
ZmNcMFx4ZmVcMFx4YTJceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgw
MVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhmZlx4ZmZceGExXHgwMVx4YTFceDAx
XHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFc
eGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4
YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhh
NFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGQ0
XHgwMVx4ZDVceDAxXHhkNlx4MDFceGQ3XHgwMVx4ZDhceDAxXHhkOVx4MDFceGRhXHgwMVx4YTRc
eDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4ZGJceDAxXHhkZFx4
MDFceGRlXHgwMVx4ZmZcMFx4ZTBceDAxXHhlMVx4MDFceGUyXHgwMVx4ZTNceDAxXHhlNFx4MDFc
eGU1XHgwMVx4ZTZceDAxXHhlN1x4MDFceGYwXHgwMVx4ZWNceDAxXHhlYlx4MDFceGE0XHgwMVx4
YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhh
NFx4MDFceGE0XHgwMVx4ZWRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0
XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRc
eDAxXHhmY1wwXHhhM1x4MDFceGFhXHgwMVx4ZWVceDAxXHhlZlx4MDFceGYxXHgwMVx4YWZceDAx
XHhmMlx4MDFceGYzXHgwMVx4ZjVceDAxXHhiMFx4MDFceGY2XHgwMVx4ZjdceDAxXHhmOFx4MDFc
eGY5XHgwMVx4YWNceDAxXHhhZVx4MDFceGFiXHgwMVx4YWRceDAxXHhmYVx4MDFceGZiXHgwMVx4
ZmNceDAxXHhmZFx4MDFceDAyXHgwMlwwXHgwMlx4MDFceDAyXHhhNFx4MDFceGE0XHgwMVx4YTRc
eDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHgwM1x4MDJcdFx4MDJceDA2XHgwMlx4ZmRcMFx4
MDdceDAyXGJceDAyXHgwYlx4MDJcclx4MDJcZlx4MDJceDBlXHgwMlx4MGZceDAyXHgxMFx4MDJc
eDEyXHgwMlx4MTVceDAyXHgxNFx4MDJceDE2XHgwMlx4MWZceDAyXG5ceDAyXHgxYlx4MDJceDFh
XHgwMlx4MWVceDAyXHgxZFx4MDIgXHgwMiFceDAyXHgxM1x4MDIiXHgwMiRceDAyLVx4MDIqXHgw
MlwnXHgwMihceDAyKVx4MDJceDFjXHgwMitceDAyLFx4MDIuXHgwMi9ceDAyMFx4MDIlXHgwMiZc
eDAyMVx4MDJBXHgwMj9ceDAyOFx4MDI2XHgwMjdceDAyOVx4MDI6XHgwMjtceDAyPFx4MDI9XHgw
Mj5ceDAyQFx4MDJCXHgwMkNceDAyW1x4MDJYXHgwMkhceDAyTFx4MDJJXHgwMkpceDAyS1x4MDJN
XHgwMlNceDAyT1x4MDJHXHgwMlBceDAyTlx4MDJRXHgwMlJceDAyVFx4MDJVXHgwMlZceDAyV1x4
MDJZXHgwMlpceDAyXFxceDAyXVx4MDJeXHgwMmxceDAyYVx4MDJiXHgwMmNceDAyZFx4MDJlXHgw
MmZceDAyZ1x4MDJoXHgwMmlceDAyalx4MDJrXHgwMm1ceDAyblx4MDJvXHgwMnBceDAycVx4MDJy
XHgwMlx4ZmRcMHNceDAydFx4MDJ1XHgwMnZceDAyd1x4MDJceDkxXHgwMlx4ODhceDAye1x4MDJ8
XHgwMn1ceDAyXHg4M1x4MDJceDdmXHgwMlx4ODBceDAyXHg4MVx4MDJ+XHgwMlx4ODJceDAyXHg4
NFx4MDJceDg1XHgwMlx4ODZceDAyXHg4N1x4MDJceDg5XHgwMlx4OGFceDAyXHg4Ylx4MDJceDhj
XHgwMlx4OGRceDAyXHg4ZVx4MDJceDhmXHgwMlx4OTBceDAyXHg5Mlx4MDJceDkzXHgwMlx4OTRc
eDAyXHhhMFx4MDJceDk3XHgwMlx4OThceDAyXHg5OVx4MDJceDlhXHgwMlx4OWJceDAyXHg5ZFx4
MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgw
Mlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAy
XHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJc
eDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4
OWNceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5
Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceGExXHgwMlx4YTJceDAyXHhhM1x4MDJceGE1
XHgwMlx4YTZceDAyXHhhN1x4MDJceGFhXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZc
eDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4
MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHhiM1x4MDJcMFwwXDBc
MFx4YWZceDAyXDBcMFwwXDBcMFwwXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlm
XHgwMlx4OWZceDAyXDBcMFwwXDBcMFwwXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJc
eDlmXHgwMlx4OWZceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4OWVceDAyXDBcMFww
XDBcMFwwXHhiMFx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFx4OWZceDAyXHg5Zlx4MDJceDlmXHgw
Mlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YThceDAyXDBcMFx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGIxXHgwMlwwXDBceGE4XHgwMlx4YThceDAyXDBcMFx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJcMFwwXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJcMFwwXHhhOFx4MDJcMFwwXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlwwXDBceGE4XHgwMlwwXDBceGE4
XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YWJceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YWVceDAy
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMCcsCisgIC8qIGxleF9jaGVjayAqLyJceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
MFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
MFwwXDBcMFx4YjFceDAyXDBcMFx4ZmZceGZmXDBcME5cMFx4YTRcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDA9XDBcMFwwXHgwNVwwXHgxZFwwXHgxZlwwPlwwXHgxZlww
RFwwRVwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxZlwwXHgx
ZlwwXHgxZlwwI1wwbFwwI1wwbVwwfVwwI1wwI1wwI1wwI1wwI1wwI1wwI1wwI1wwI1wwI1wwflww
XHhhNlwwXHhhN1wwZ1wwaFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDdcMFwwXDBc
dFwwXHJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHRcMFwwXDBcMFwwXDBcMFwwXDBceDA2XDBcdFww
XHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwZlwwXHgxMlwwXHgwNlwwXHgwNlwwXGJc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFxiXDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBc
eDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2
XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBc
eDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDAtXDBceDA2XDAu
XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBc
eDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2
XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBceDA2XDBc
eDA2XDBcblwwXHgwNlwwXHgwYlwwXHgwNlwwXHgwYlwwXGZcMFx4MGVcMFx4MTBcMFx4MGVcMFxm
XDBceDExXDBceDE3XDBcZlwwXHgxMFwwXHgxM1wwXHgxNFx4MDA1XDBceDE0XDBceDBlXDBceDBi
XDBcblx4MDA2XDBceDE0XDBceDE1XDBceDEzXDBceDE3XDBceDE1XDBceDExXHgwMDdcMFxmXDBc
eDEzXHgwMDhceDAwOVwwXHgxOFwwOlwwPFwwXHgxOFwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVww
XHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwP1wwXDBcMFx4MTZcMFx4MTZcMFx4
MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZc
MFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4
MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZcMFx4MTZc
MFx4MTZcMEJcMEdcMFx4MTZcMFx4MThcMEhcMElcMEpcMExcMFx4MTVcMFBcMFx4MThcMFx4MThc
MFFcMFx4MTlcMFNcMFRcMFVcMFx4MWFcMFx4MTlcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4
MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMCZcMCZcMCZcMCZcMCZcMCZcMCZcMCZc
MCZcMCZcMFx4MWJcMFx4MWFcMFx4MWJcMFx4MWJcMFx4MWJcMFx4MWJcMFx4MWJcMFx4MWJcMFx4
MWJcMFx4MWJcMFx4MWJcMFx4MWJcMEZcMFZcMFJcMFdcMFhcMFlcMFtcMFxcXDBaXDBceDE2XDBG
XDBceDFiXDBfXDBXXDBgXDBhXDBGXDBSXDBaXDBcXFwwXFxcMFx4MWFcMGJcMGNcMCBcMCBcMCBc
MCBcMCBcMCBcMCBcMCBcMCBcMCBcMF5cMGlcMGpcMF5cMG5cMG9cMHhcMG9cMF5cMFx4MWJcMFx4
MTZcMCBcMCFcMCFcMCFcMCFcMCFcMCFcMCFcMCFcMCFcMCFcMHFcMHlcMHFcMF1cMHpcMHtcMFx4
MWJcMCFcMCFcMCFcMCFcMCFcMCFcMF1cMHRcMGtcMHRcMGtcMF1cMHdcMFx4ODFcMCBcMGtcMFx4
ODZcMFx4ODdcMHdcMFwiXDBceDg4XDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwi
XDBcIlwwXHg4OVwwIVwwIVwwIVwwIVwwIVwwIVwwXCJcMFwiXDBcIlwwXCJcMFwiXDBcIlwwJFww
JFwwJFwwJFwwJFwwJFwwJFwwJFwwJFwwJFwwXHg4M1wwXHg4YlwwXHg4M1wwXHg4Y1wwXHg4Zlww
XHg5MVwwXHg5MlwwJFwwJFwwJFwwJFwwJFwwJFwwXHg5M1wwXHg5NlwwXHg5M1wwXCJcMFwiXDBc
IlwwXCJcMFwiXDBcIlwwfFwwXHg5N1wwfFwwXHg5OFwwXHg5OVwwXHg5N1wwXHg5YVwwfFwwXHg5
YVwwXCJcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMCRcMCRcMCRc
MCRcMCRcMCRcMFx4YTVcMFx4YTlcMFx4YWRcMFx4YWZcMFx4YjJcMFx4YjNcMFx4YjRcMFx4YTlc
MFx4YjRcMCRcMCVcMFx4MTZcMCVcMCVcMFx4YmFcMCVcMCVcMCVcMCVcMCVcMCVcMCVcMCVcMCVc
MCVcMFx4YjdcMFx4YmJcMFx4YjdcMFx4YmNcMFx4YmRcMFx4YmVcMFx4YmZcMCVcMCVcMCVcMCVc
MCVcMCVcMCdcMFx4YzFcMCdcMCdcMCdcMCdcMCdcMCdcMCdcMCdcMCdcMCdcMFx4YzJcMFx4YzNc
MFx4YzRcMFx4YzVcMFx4YzZcMFx4YzVcMFx4YzdcMCdcMCdcMCdcMCdcMCdcMCdcMFx4YzhcMCVc
MCVcMCVcMCVcMCVcMCVcMFx4YzlcMFx4Y2FcMFx4Y2JcMFx4YzlcMFx4Y2VcMFx4Y2ZcMFx4ZDBc
MFx4ZDFcMFx4Y2ZcMCVcMFx4ZDRcMFx4ZDZcMFx4ZDhcMFx4ZDlcMFx4ZGFcMFx4ZDdcMFx4ZDhc
MFx4ZGJcMFx4ZDZcMCdcMCdcMCdcMCdcMCdcMCdcMFx4ZDdcMFx4ZGNcMFx4ZGRcMFx4ZGVcMFx4
ZGZcMFx4ZTBcMFx4ZTFcMFx4ZTJcMFx4ZTNcMCdcMChcMChcMChcMChcMChcMChcMChcMChcMChc
MChcMClcMFx4ZTRcMClcMFx4ZTZcMFx4ZTdcMClcMClcMClcMClcMClcMClcMClcMClcMClcMClc
MFx4ZThcMFx4ZTlcMFx4ZWFcMFx4ZWJcMFx4ZWNcMFx4ZWJcMFx4ZWRcMClcMClcMClcMClcMClc
MClcMCpcMCpcMCpcMCpcMCpcMCpcMCpcMCpcMCpcMCpcMFx4ZWVcMFx4ZWZcMFx4ZjBcMFx4ZjJc
MFx4ZjNcMFx4ZjRcMFx4ZjZcMCpcMCpcMCpcMCpcMCpcMCpcMFx4ZjdcMFx4ZjhcMFx4ZmFcMClc
MClcMClcMClcMClcMClcMFx4MDRceDAxXHgwNVx4MDFceDA2XHgwMVx4MDdceDAxXHRceDAxXHgw
Ylx4MDFcZlx4MDFcclx4MDFcblx4MDEpXDBcZlx4MDFceDBlXHgwMVx4MGZceDAxXHgxMVx4MDFc
eDEwXHgwMVxyXHgwMVx4MTBceDAxKlwwKlwwKlwwKlwwKlwwKlwwXG5ceDAxXHgxNVx4MDFceDEy
XHgwMVx4MTdceDAxXHJceDAxXHgxMlx4MDFceDEyXHgwMVx4MTlceDAxXHgxYVx4MDEqXDArXDAr
XDArXDArXDArXDArXDArXDArXDArXDArXDAsXDAsXDAsXDAsXDAsXDAsXDAsXDAsXDAsXDAsXDAv
XDBceDFiXHgwMS9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMFx4MTZceDAxXHgxOFx4MDFc
eDE2XHgwMVx4MWNceDAxXHgxOFx4MDFceDFkXHgwMVx4MWVceDAxXHgxZFx4MDFceDFmXHgwMSBc
eDAxMFwwL1x4MDAwXHgwMDBceDAwMFx4MDAwXHgwMDBceDAwMFx4MDAwXHgwMDBceDAwMFx4MDAw
XDBceDE0XHgwMU9cMFwiXHgwMU9cME9cME9cMCFceDAxT1wwI1x4MDEhXHgwMVx4MTRceDAxMFww
T1wwT1wwT1wwT1wwT1wwJlx4MDFPXDBPXDBPXDAvXDAnXHgwMU9cME9cMCdceDAxKFx4MDExXHgw
MDFceDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXDApXHgwMSxceDAxLVx4
MDEuXHgwMS9ceDAxMVx4MDEwXHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDJceDAw
NVx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDBc
eDAwNlx4MDE4XHgwMTlceDAxOlx4MDE7XHgwMTxceDAxMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgw
MDJcMD5ceDAxMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFcMEJceDAxQVx4MDFEXHgwMTNcMEVc
eDAxM1x4MDAzXDBBXHgwMTNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAz
XHgwMDNcMEZceDAxMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwM1x4MDAzXHgwMDNceDAw
M1x4MDAzXHgwMDNcMEhceDAxSVx4MDFMXHgwMTJcME1ceDAxTlx4MDFQXHgwMVFceDAxUlx4MDFU
XHgwMVVceDAxVlx4MDFaXHgwMTRcMFtceDAxNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAw
NFx4MDA0XHgwMDRceDAwNFwwXVx4MDEzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDA0XHgw
MDRceDAwNFx4MDA0XHgwMDRceDAwNFwwXlx4MDFfXHgwMWBceDAxM1wwYVx4MDFiXHgwMWNceDAx
aFx4MDFpXHgwMWpceDAxa1x4MDFsXHgwMW1ceDAxblx4MDFvXHgwMUBcMEBcMEBcMEBcMEBcMEBc
MEBcMEBcMEBcMEBcMHBceDAxNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRcMEBcMEBcMEBcMEBc
MEBcMEBcMHFceDAxclx4MDFzXHgwMTRcMHRceDAxdlx4MDF4XHgwMXlceDAxelx4MDF7XHgwMXxc
eDAxfVx4MDF+XHgwMVx4N2ZceDAxXHg4MFx4MDFBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBB
XDBceDgxXHgwMUBcMEBcMEBcMEBcMEBcMEBcMEFcMEFcMEFcMEFcMEFcMEFcMFx4ZDVcMFx4ODJc
eDAxXHhkNVwwXHhkNVwwXHhkNVwwXHg4M1x4MDFceGQ1XDBceDg1XHgwMVx4ODZceDAxXHg4N1x4
MDFceDg4XHgwMVx4ZDVcMFx4ZDVcMFx4ZDVcMFx4ZDVcMFx4ZDVcMFx4ODlceDAxXHhkNVwwXHhk
NVwwXHhkNVwwXHhmZlwwXHg4YVx4MDFceDhiXHgwMVx4ZDVcMFx4OGNceDAxXHhmZlwwQVwwQVww
QVwwQVwwQVwwQVwwXHg4ZFx4MDFceDhlXHgwMVx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZc
MFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4OGZceDAxXHg5MFx4MDFceDkxXHgwMVx4
OTNceDAxXHg5NVx4MDFceDk2XHgwMVx4OTdceDAxXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhm
ZlwwXHhmZlwwXGJceDAxXHg5OFx4MDFcYlx4MDFcYlx4MDFcYlx4MDFcYlx4MDFcYlx4MDFceDk5
XHgwMVx4OWFceDAxXHg5Ylx4MDFceDEzXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVx4OWRceDAxXHg5
ZVx4MDFceDlmXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVx4MTNceDAxXHhmZlwwXHhhNVx4MDFceGE2
XHgwMVx4YTdceDAxXHgxM1x4MDFceGZmXDBceGZmXDBceGZmXDBceGZmXDBceGZmXDBceGZmXDBc
eGE4XHgwMVx4YWFceDAxXHhhYlx4MDFceGFjXHgwMVx4YWRceDAxXHhhZVx4MDFceGFmXHgwMVx4
ZmZcMFx4YjBceDAxXHhiMVx4MDFceGIyXHgwMVx4YjNceDAxXHhiNFx4MDFceGZmXDBcMFx4MDFc
MFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4
MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFc
MFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4
MDFcMFx4MDFcMFx4MDFceGI1XHgwMVx4YjZceDAxXDBceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJc
eDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4
MDFceGI3XHgwMVx4YjlceDAxXHhiYVx4MDFceGJiXHgwMVx4YmNceDAxXHhiZFx4MDFceGJmXHgw
MVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMXdceDAxXHhj
MFx4MDF3XHgwMXdceDAxd1x4MDF3XHgwMXdceDAxXHhjMVx4MDFceGMyXHgwMVx4YzNceDAxXHhj
NFx4MDF3XHgwMXdceDAxd1x4MDFceGM1XHgwMXdceDAxXHhjNlx4MDF3XHgwMXdceDAxd1x4MDFc
eGM3XHgwMVx4YzhceDAxXHhjYVx4MDFceGNiXHgwMVx4Y2NceDAxXHhjZFx4MDFceDAyXHgwMVx4
MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceGNlXHgwMVx4Y2ZceDAxXDBc
eDAxXHhkMFx4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4
MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgw
MVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAx
XHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFc
eDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHhkMVx4MDFcMFx4MDFceDAz
XHgwMVx4YTBceDAxXHhhMFx4MDFceGEwXHgwMVx4YTBceDAxXHhhMFx4MDFceGEwXHgwMVx4YTBc
eDAxXHhhMFx4MDFceGEwXHgwMVx4YTBceDAxXHhmZlwwXHhhMVx4MDFceGExXHgwMVx4YTFceDAx
XHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFc
eGEyXHgwMVx4YTJceDAxXHhhMlx4MDFceGEyXHgwMVx4YTJceDAxXHhhMlx4MDFceGEyXHgwMVx4
YTJceDAxXHhhMlx4MDFceGEyXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhh
M1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhkM1x4MDFceGQ0
XHgwMVx4ZDVceDAxXHhkNlx4MDFceGQ3XHgwMVx4ZDhceDAxXHhkOVx4MDFceGEzXHgwMVx4YTNc
eDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGRhXHgwMVx4ZGNceDAxXHhkZFx4
MDFceDAzXHgwMVx4ZGZceDAxXHhlMFx4MDFceGUxXHgwMVx4ZTJceDAxXHhlM1x4MDFceGU0XHgw
MVx4ZTVceDAxXHhlNlx4MDFceGU4XHgwMVx4ZTlceDAxXHhlYVx4MDFceGE0XHgwMVx4YTRceDAx
XHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFc
eGE0XHgwMVx4ZWNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4
YTNceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHgw
M1x4MDFceGEyXHgwMVx4YTlceDAxXHhlZFx4MDFceGVlXHgwMVx4ZjBceDAxXHhhOVx4MDFceGYx
XHgwMVx4ZjJceDAxXHhmNFx4MDFceGE5XHgwMVx4ZjVceDAxXHhmNlx4MDFceGY3XHgwMVx4Zjhc
eDAxXHhhOVx4MDFceGE5XHgwMVx4YTlceDAxXHhhOVx4MDFceGY5XHgwMVx4ZmFceDAxXHhmYlx4
MDFceGZjXHgwMVx4ZmVceDAxXHhmZlx4MDFcMFx4MDJceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFc
eGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceDAyXHgwMlx4MDRceDAyXHgwNVx4MDJcMFx4MDFceDA2
XHgwMlx4MDdceDAyXHRceDAyXG5ceDAyXHgwYlx4MDJcclx4MDJceDBlXHgwMlx4MGZceDAyXHgx
MVx4MDJceDEyXHgwMlx4MTNceDAyXHgxNVx4MDJceDE3XHgwMlx0XHgwMlx4MThceDAyXHgxOVx4
MDJceDFiXHgwMlx4MWNceDAyXHgxZlx4MDIgXHgwMlx4MTFceDAyIVx4MDIjXHgwMiRceDAyJVx4
MDImXHgwMidceDAyKFx4MDJceDE4XHgwMipceDAyK1x4MDItXHgwMi5ceDAyL1x4MDIjXHgwMiNc
eDAyMFx4MDIyXHgwMjNceDAyNFx4MDI1XHgwMjZceDAyOFx4MDI5XHgwMjpceDAyO1x4MDI8XHgw
Mj1ceDAyP1x4MDJBXHgwMkJceDAyRFx4MDJFXHgwMkZceDAyR1x4MDJIXHgwMklceDAySlx4MDJM
XHgwMk1ceDAyTlx4MDJGXHgwMk9ceDAyTFx4MDJQXHgwMlFceDAyU1x4MDJUXHgwMlVceDAyVlx4
MDJYXHgwMllceDAyW1x4MDJcXFx4MDJdXHgwMl9ceDAyYFx4MDJhXHgwMmJceDAyY1x4MDJkXHgw
MmVceDAyZlx4MDJnXHgwMmhceDAyaVx4MDJqXHgwMmxceDAybVx4MDJuXHgwMm9ceDAycFx4MDJx
XHgwMlx4MDNceDAxclx4MDJzXHgwMnRceDAydVx4MDJ2XHgwMnhceDAyeVx4MDJ6XHgwMntceDAy
fFx4MDJ9XHgwMn5ceDAyXHg3Zlx4MDJceDgwXHgwMnxceDAyXHg4MVx4MDJceDgzXHgwMlx4ODRc
eDAyXHg4NVx4MDJceDg2XHgwMlx4ODhceDAyXHg4OVx4MDJceDhhXHgwMlx4OGJceDAyXHg4Y1x4
MDJceDhkXHgwMlx4OGVceDAyXHg4Zlx4MDJceDkxXHgwMlx4OTJceDAyXHg5M1x4MDJceDk1XHgw
Mlx4OTZceDAyXHg5N1x4MDJceDk4XHgwMlx4OTlceDAyXHg5YVx4MDJceDliXHgwMlx4OWJceDAy
XHg5Ylx4MDJceDliXHgwMlx4OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4OWJceDAyXHg5Ylx4MDJc
eDliXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4
OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5ZFx4MDJceDlkXHgwMlx4OWRceDAyXHg5
ZFx4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDll
XHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVc
eDAyXHg5ZVx4MDJceDllXHgwMlx4YTBceDAyXHhhMVx4MDJceGEyXHgwMlx4YTRceDAyXHhhNVx4
MDJceGE2XHgwMlx4YTlceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgw
Mlx4OWVceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAy
XHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceGIwXHgwMlx4ZmZceGZmXHhmZlx4ZmZc
eGFjXHgwMlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4
OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4OWVceDAyXHg5
ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHg5ZFx4MDJceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGFjXHgwMlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceGE4XHgw
Mlx4ZmZceGZmXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YWNceDAy
XHhmZlx4ZmZceGE4XHgwMlx4YThceDAyXHhmZlx4ZmZceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhmZlx4ZmZceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4ZmZceGZmXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhmZlx4ZmZceGE4
XHgwMlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4YTlceDAyXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGFjXHgwMlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmIiwKKyAgLyogbGV4X2Jhc2VfY29kZSAqLyIiLAorICAvKiBsZXhf
YmFja3Rya19jb2RlICovIiIsCisgIC8qIGxleF9kZWZhdWx0X2NvZGUgKi8iIiwKKyAgLyogbGV4
X3RyYW5zX2NvZGUgKi8iIiwKKyAgLyogbGV4X2NoZWNrX2NvZGUgKi8iIiwKKyAgLyogbGV4X2Nv
ZGUgKi8iIgorXTsKKworZnVuY3Rpb24gdG9rZW4obGV4YnVmKSB7CisgIHZhciBsZXhidWYkMSA9
IGxleGJ1ZjsKKyAgdmFyIF9fX29jYW1sX2xleF9zdGF0ZSA9IDA7CisgIHdoaWxlKHRydWUpIHsK
KyAgICB2YXIgX19vY2FtbF9sZXhfc3RhdGUgPSBfX19vY2FtbF9sZXhfc3RhdGU7CisgICAgdmFy
IF9fb2NhbWxfbGV4X3N0YXRlJDEgPSBMZXhpbmcuZW5naW5lKF9fb2NhbWxfbGV4X3RhYmxlcywg
X19vY2FtbF9sZXhfc3RhdGUsIGxleGJ1ZiQxKTsKKyAgICBpZiAoX19vY2FtbF9sZXhfc3RhdGUk
MSA+IDE0NCB8fCBfX29jYW1sX2xleF9zdGF0ZSQxIDwgMCkgeworICAgICAgQ3VycnkuXzEobGV4
YnVmJDFbLyogcmVmaWxsX2J1ZmYgKi8wXSwgbGV4YnVmJDEpOworICAgICAgX19fb2NhbWxfbGV4
X3N0YXRlID0gX19vY2FtbF9sZXhfc3RhdGUkMTsKKyAgICAgIGNvbnRpbnVlIDsKKyAgICAgIAor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoX19vY2FtbF9sZXhfc3RhdGUkMSkgewor
ICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBMUEFSICovMjsKKyAgICAg
ICAgY2FzZSAxIDogCisgICAgICAgICAgICByZXR1cm4gLyogUlBBUiAqLzM7CisgICAgICAgIGNh
c2UgMiA6IAorICAgICAgICAgICAgdmFyIHMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfY3Vycl9wb3Mg
Ki81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogTkFUICovQmxvY2suX18oMCwgW3NdKTsKKyAg
ICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICB2YXIgcyQxID0gTGV4aW5nLnN1Yl9sZXhlbWUo
bGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4
X2N1cnJfcG9zICovNV0pOworICAgICAgICAgICAgcmV0dXJuIC8qIElOVCAqL0Jsb2NrLl9fKDEs
IFtzJDFdKTsKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICB2YXIgcyQyID0gTGV4aW5n
LnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4
YnVmJDFbLyogbGV4X2N1cnJfcG9zICovNV0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZMT0FU
ICovQmxvY2suX18oMiwgW3MkMl0pOworICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIHZh
ciBzJDMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0
X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfY3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogVEVYVCAqL0Jsb2NrLl9fKDMsIFt0ZXh0KHMkMyldKTsKKyAgICAgICAgY2FzZSA2
IDogCisgICAgICAgICAgICByZXR1cm4gZXJyb3IobGV4YnVmJDEsICJ1bmNsb3NlZCB0ZXh0IGxp
dGVyYWwiKTsKKyAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICByZXR1cm4gZXJyb3IobGV4
YnVmJDEsICJpbGxlZ2FsIGNvbnRyb2wgY2hhcmFjdGVyIGluIHRleHQgbGl0ZXJhbCIpOworICAg
ICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJvcl9uZXN0KExleGluZy5sZXhl
bWVfZW5kX3AobGV4YnVmJDEpLCBsZXhidWYkMSwgImlsbGVnYWwgZXNjYXBlIik7CisgICAgICAg
IGNhc2UgOSA6IAorICAgICAgICAgICAgdmFyIHQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYk
MSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogVkFMVUVfVFlQRSAqL0Js
b2NrLl9fKDUsIFt2YWx1ZV90eXBlKHQpXSk7CisgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAg
ICAgIHZhciB0JDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQ09OU1QgKi9CbG9jay5fXygxMCwgW251bW9wKHQkMSwg
ZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IEN1cnJ5
Ll8xKEkzMi5vZl9zdHJpbmcsIHNbLyogaXQgKi8xXSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgT3BlcmF0b3JzLmkzMl9jb25zdChTb3VyY2UuJGF0JGF0KG4sIHNbLyogYXQgKi8wXSkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSTMyICovQmxvY2suX18o
MCwgW25dKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChzKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIG4gPSBDdXJyeS5fMShJNjQub2Zfc3RyaW5nLCBzWy8qIGl0ICovMV0pOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9ycy5pNjRfY29uc3QoU291cmNlLiRhdCRh
dChuLCBzWy8qIGF0ICovMF0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEk2NCAqL0Jsb2NrLl9fKDEsIFtuXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdOworICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gQ3VycnkuXzEoRjMyLm9mX3N0cmluZywg
c1svKiBpdCAqLzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVyYXRvcnMuZjMy
X2NvbnN0KFNvdXJjZS4kYXQkYXQobiwgc1svKiBhdCAqLzBdKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBGMzIgKi9CbG9jay5fXygyLCBbbl0pCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfSwg
ZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IEN1cnJ5
Ll8xKEY2NC5vZl9zdHJpbmcsIHNbLyogaXQgKi8xXSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgT3BlcmF0b3JzLmY2NF9jb25zdChTb3VyY2UuJGF0JGF0KG4sIHNbLyogYXQgKi8wXSkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRjY0ICovQmxvY2suX18o
MywgW25dKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0pXSk7CisgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgIHJl
dHVybiAvKiBGVU5DUkVGICovMDsKKyAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIE1VVCAqLzE7CisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIHJldHVybiAv
KiBOT1AgKi80OworICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICByZXR1cm4gLyogVU5S
RUFDSEFCTEUgKi8yNDsKKyAgICAgICAgY2FzZSAxNSA6IAorICAgICAgICAgICAgcmV0dXJuIC8q
IERST1AgKi81OworICAgICAgICBjYXNlIDE2IDogCisgICAgICAgICAgICByZXR1cm4gLyogQkxP
Q0sgKi82OworICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICByZXR1cm4gLyogTE9PUCAq
LzEyOworICAgICAgICBjYXNlIDE4IDogCisgICAgICAgICAgICByZXR1cm4gLyogRU5EICovNzsK
KyAgICAgICAgY2FzZSAxOSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEJSICovMTM7CisgICAg
ICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBCUl9JRiAqLzE0OworICAgICAg
ICBjYXNlIDIxIDogCisgICAgICAgICAgICByZXR1cm4gLyogQlJfVEFCTEUgKi8xNTsKKyAgICAg
ICAgY2FzZSAyMiA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFJFVFVSTiAqLzE4OworICAgICAg
ICBjYXNlIDIzIDogCisgICAgICAgICAgICByZXR1cm4gLyogSUYgKi84OworICAgICAgICBjYXNl
IDI0IDogCisgICAgICAgICAgICByZXR1cm4gLyogVEhFTiAqLzk7CisgICAgICAgIGNhc2UgMjUg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFTFNFICovMTA7CisgICAgICAgIGNhc2UgMjYgOiAK
KyAgICAgICAgICAgIHJldHVybiAvKiBTRUxFQ1QgKi8xMTsKKyAgICAgICAgY2FzZSAyNyA6IAor
ICAgICAgICAgICAgcmV0dXJuIC8qIENBTEwgKi8xNjsKKyAgICAgICAgY2FzZSAyOCA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIENBTExfSU5ESVJFQ1QgKi8xNzsKKyAgICAgICAgY2FzZSAyOSA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIEdFVF9MT0NBTCAqLzE5OworICAgICAgICBjYXNlIDMw
IDogCisgICAgICAgICAgICByZXR1cm4gLyogU0VUX0xPQ0FMICovMjA7CisgICAgICAgIGNhc2Ug
MzEgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBURUVfTE9DQUwgKi8yMTsKKyAgICAgICAgY2Fz
ZSAzMiA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEdFVF9HTE9CQUwgKi8yMjsKKyAgICAgICAg
Y2FzZSAzMyA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFNFVF9HTE9CQUwgKi8yMzsKKyAgICAg
ICAgY2FzZSAzNCA6IAorICAgICAgICAgICAgdmFyIHQkMiA9IExleGluZy5zdWJfbGV4ZW1lKGxl
eGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9z
dGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBMT0FEICovQmxv
Y2suX18oNiwgWyhmdW5jdGlvbih0JDIpeworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbiAoYSwgbykgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRpYWxfYXJn
ID0gQ3VycnkuXzIob3B0LCBhLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJ0
aWFsX2FyZyQxID0gQ3VycnkuXzIob3B0LCBhLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBwYXJ0aWFsX2FyZyQyID0gQ3VycnkuXzIob3B0LCBhLCAyKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBwYXJ0aWFsX2FyZyQzID0gQ3VycnkuXzIob3B0LCBhLCAzKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShudW1vcCh0JDIsIGZ1bmN0aW9uIChw
YXJhbSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTMyX2xvYWQocGFydGlhbF9hcmcsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfbG9hZChwYXJ0
aWFsX2FyZyQxLCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2xvYWQocGFydGlhbF9hcmckMiwgcGFyYW0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocGFyYW0p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmY2NF9sb2FkKHBhcnRpYWxfYXJnJDMsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSksIG8pOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICB9KHQkMikpXSk7CisgICAgICAgIGNhc2UgMzUgOiAKKyAgICAgICAg
ICAgIHZhciB0JDMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogU1RPUkUgKi9CbG9jay5fXyg3LCBbKGZ1bmN0aW9uKHQk
Myl7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhLCBvKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmcgPSBDdXJyeS5fMihvcHQsIGEsIDIp
OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRpYWxfYXJnJDEgPSBDdXJyeS5fMihv
cHQsIGEsIDMpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRpYWxfYXJnJDIgPSBD
dXJyeS5fMihvcHQsIGEsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRpYWxf
YXJnJDMgPSBDdXJyeS5fMihvcHQsIGEsIDMpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEN1cnJ5Ll8xKG51bW9wKHQkMywgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmUocGFy
dGlhbF9hcmcsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfc3RvcmUocGFydGlhbF9hcmckMSwgcGFyYW0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocGFyYW0p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmYzMl9zdG9yZShwYXJ0aWFsX2FyZyQyLCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X3N0b3JlKHBhcnRp
YWxfYXJnJDMsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSksIG8pOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICB9
KHQkMykpXSk7CisgICAgICAgIGNhc2UgMzYgOiAKKyAgICAgICAgICAgIHZhciB0JDQgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICB2YXIg
c3ogPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdICsgOCB8IDAsIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdIC0gMiB8IDApOwor
ICAgICAgICAgICAgdmFyIHMkNCA9IExleGluZy5zdWJfbGV4ZW1lX2NoYXIobGV4YnVmJDEsIGxl
eGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdIC0gMSB8IDApOworICAgICAgICAgICAgaWYgKHQk
NCA9PT0gImkzMiIgJiYgc3ogPT09ICIzMiIpIHsKKyAgICAgICAgICAgICAgZXJyb3IobGV4YnVm
JDEsICJ1bmtub3duIG9wZXJhdG9yIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gLyogTE9BRCAqL0Jsb2NrLl9fKDYsIFsoZnVuY3Rpb24odCQ0LHN6LHMkNCl7CisgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhLCBvKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gaW50b3AodCQ0LCBDdXJyeS5fMShtZW1zeihzeiwgQ3VycnkuXzEoZXh0
KHMkNCwgT3BlcmF0b3JzLmkzMl9sb2FkOF9zLCBPcGVyYXRvcnMuaTMyX2xvYWQ4X3UpLCBDdXJy
eS5fMihvcHQsIGEsIDApKSwgQ3VycnkuXzEoZXh0KHMkNCwgT3BlcmF0b3JzLmkzMl9sb2FkMTZf
cywgT3BlcmF0b3JzLmkzMl9sb2FkMTZfdSksIEN1cnJ5Ll8yKG9wdCwgYSwgMSkpLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMudW5yZWFjaGFibGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9KSwgbyksIEN1cnJ5Ll8xKG1lbXN6KHN6LCBDdXJyeS5fMShleHQocyQ0LCBP
cGVyYXRvcnMuaTY0X2xvYWQ4X3MsIE9wZXJhdG9ycy5pNjRfbG9hZDhfdSksIEN1cnJ5Ll8yKG9w
dCwgYSwgMCkpLCBDdXJyeS5fMShleHQocyQ0LCBPcGVyYXRvcnMuaTY0X2xvYWQxNl9zLCBPcGVy
YXRvcnMuaTY0X2xvYWQxNl91KSwgQ3VycnkuXzIob3B0LCBhLCAxKSksIEN1cnJ5Ll8xKGV4dChz
JDQsIE9wZXJhdG9ycy5pNjRfbG9hZDMyX3MsIE9wZXJhdG9ycy5pNjRfbG9hZDMyX3UpLCBDdXJy
eS5fMihvcHQsIGEsIDIpKSksIG8pKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgfSh0JDQsc3oscyQ0KSldKTsKKyAgICAgICAgY2FzZSAzNyA6IAorICAg
ICAgICAgICAgdmFyIHQkNSA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMg
fCAwKTsKKyAgICAgICAgICAgIHZhciBzeiQxID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEs
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDkgfCAwLCBsZXhidWYkMVsvKiBsZXhf
Y3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICBpZiAodCQ1ID09PSAiaTMyIiAmJiBzeiQxID09
PSAiMzIiKSB7CisgICAgICAgICAgICAgIGVycm9yKGxleGJ1ZiQxLCAidW5rbm93biBvcGVyYXRv
ciIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIC8qIFNUT1JFICovQmxvY2su
X18oNywgWyhmdW5jdGlvbih0JDUsc3okMSl7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uIChhLCBvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9h
cmcgPSBDdXJyeS5fMihvcHQsIGEsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBh
cnRpYWxfYXJnJDEgPSBDdXJyeS5fMihvcHQsIGEsIDEpOworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHBhcnRpYWxfYXJnJDIgPSBDdXJyeS5fMihvcHQsIGEsIDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHBhcnRpYWxfYXJnJDMgPSBDdXJyeS5fMihvcHQsIGEsIDEpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRpYWxfYXJnJDQgPSBDdXJyeS5fMihvcHQsIGEs
IDIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludG9wKHQkNSwgQ3VycnkuXzEo
bWVtc3ooc3okMSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3N0b3JlOChwYXJ0aWFsX2Fy
ZywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwg
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3N0b3JlMTYocGFydGlhbF9hcmckMSwgcGFyYW0p
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLnVucmVhY2hhYmxlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSksIG8pLCBDdXJyeS5fMShtZW1zeihzeiQxLCBmdW5jdGlvbiAocGFyYW0pIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pNjRfc3RvcmU4KHBhcnRpYWxfYXJnJDIsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9z
dG9yZTE2KHBhcnRpYWxfYXJnJDMsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdG9yZTMyKHBh
cnRpYWxfYXJnJDQsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0pLCBvKSk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgIH0odCQ1LHN6JDEpKV0pOworICAgICAgICBjYXNlIDM4IDogCisgICAgICAgICAgICB2
YXIgcyQ1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDcgfCAwLCBsZXhidWYkMVsvKiBsZXhfY3Vycl9wb3MgKi81XSk7CisgICAg
ICAgICAgICByZXR1cm4gLyogT0ZGU0VUX0VRX05BVCAqL0Jsb2NrLl9fKDgsIFtzJDVdKTsKKyAg
ICAgICAgY2FzZSAzOSA6IAorICAgICAgICAgICAgdmFyIHMkNiA9IExleGluZy5zdWJfbGV4ZW1l
KGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyA2IHwgMCwgbGV4YnVm
JDFbLyogbGV4X2N1cnJfcG9zICovNV0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEFMSUdOX0VR
X05BVCAqL0Jsb2NrLl9fKDksIFtzJDZdKTsKKyAgICAgICAgY2FzZSA0MCA6IAorICAgICAgICAg
ICAgdmFyIHQkNiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsK
KyAgICAgICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbaW50b3AodCQ2LCBP
cGVyYXRvcnMuaTMyX2NseiwgT3BlcmF0b3JzLmk2NF9jbHopXSk7CisgICAgICAgIGNhc2UgNDEg
OiAKKyAgICAgICAgICAgIHZhciB0JDcgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwg
W2ludG9wKHQkNywgT3BlcmF0b3JzLmkzMl9jdHosIE9wZXJhdG9ycy5pNjRfY3R6KV0pOworICAg
ICAgICBjYXNlIDQyIDogCisgICAgICAgICAgICB2YXIgdCQ4ID0gTGV4aW5nLnN1Yl9sZXhlbWUo
bGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIFVOQVJZICov
QmxvY2suX18oMTEsIFtpbnRvcCh0JDgsIE9wZXJhdG9ycy5pMzJfcG9wY250LCBPcGVyYXRvcnMu
aTY0X3BvcGNudCldKTsKKyAgICAgICAgY2FzZSA0MyA6IAorICAgICAgICAgICAgdmFyIHQkOSA9
IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAg
IHJldHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbZmxvYXRvcCh0JDksIE9wZXJhdG9ycy5m
MzJfbmVnLCBPcGVyYXRvcnMuZjY0X25lZyldKTsKKyAgICAgICAgY2FzZSA0NCA6IAorICAgICAg
ICAgICAgdmFyIHQkMTAgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwg
MCk7CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3Ao
dCQxMCwgT3BlcmF0b3JzLmYzMl9hYnMsIE9wZXJhdG9ycy5mNjRfYWJzKV0pOworICAgICAgICBj
YXNlIDQ1IDogCisgICAgICAgICAgICB2YXIgdCQxMSA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2Nr
Ll9fKDExLCBbZmxvYXRvcCh0JDExLCBPcGVyYXRvcnMuZjMyX3NxcnQsIE9wZXJhdG9ycy5mNjRf
c3FydCldKTsKKyAgICAgICAgY2FzZSA0NiA6IAorICAgICAgICAgICAgdmFyIHQkMTIgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1
cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3AodCQxMiwgT3BlcmF0b3JzLmYzMl9j
ZWlsLCBPcGVyYXRvcnMuZjY0X2NlaWwpXSk7CisgICAgICAgIGNhc2UgNDcgOiAKKyAgICAgICAg
ICAgIHZhciB0JDEzID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OworICAgICAgICAgICAgcmV0dXJuIC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtmbG9hdG9wKHQk
MTMsIE9wZXJhdG9ycy5mMzJfZmxvb3IsIE9wZXJhdG9ycy5mNjRfZmxvb3IpXSk7CisgICAgICAg
IGNhc2UgNDggOiAKKyAgICAgICAgICAgIHZhciB0JDE0ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4
YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIFVOQVJZICovQmxv
Y2suX18oMTEsIFtmbG9hdG9wKHQkMTQsIE9wZXJhdG9ycy5mMzJfdHJ1bmMsIE9wZXJhdG9ycy5m
NjRfdHJ1bmMpXSk7CisgICAgICAgIGNhc2UgNDkgOiAKKyAgICAgICAgICAgIHZhciB0JDE1ID0g
TGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80
XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAg
cmV0dXJuIC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtmbG9hdG9wKHQkMTUsIE9wZXJhdG9ycy5m
MzJfbmVhcmVzdCwgT3BlcmF0b3JzLmY2NF9uZWFyZXN0KV0pOworICAgICAgICBjYXNlIDUwIDog
CisgICAgICAgICAgICB2YXIgdCQxNiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhi
dWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80
XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9CbG9jay5fXygxMiwg
W2ludG9wKHQkMTYsIE9wZXJhdG9ycy5pMzJfYWRkLCBPcGVyYXRvcnMuaTY0X2FkZCldKTsKKyAg
ICAgICAgY2FzZSA1MSA6IAorICAgICAgICAgICAgdmFyIHQkMTcgPSBMZXhpbmcuc3ViX2xleGVt
ZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZ
ICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDE3LCBPcGVyYXRvcnMuaTMyX3N1YiwgT3BlcmF0b3Jz
Lmk2NF9zdWIpXSk7CisgICAgICAgIGNhc2UgNTIgOiAKKyAgICAgICAgICAgIHZhciB0JDE4ID0g
TGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80
XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAg
cmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQxOCwgT3BlcmF0b3JzLmkz
Ml9tdWwsIE9wZXJhdG9ycy5pNjRfbXVsKV0pOworICAgICAgICBjYXNlIDUzIDogCisgICAgICAg
ICAgICB2YXIgdCQxOSA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAw
KTsKKyAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9CbG9jay5fXygxMiwgW2ludG9wKHQk
MTksIE9wZXJhdG9ycy5pMzJfZGl2X3MsIE9wZXJhdG9ycy5pNjRfZGl2X3MpXSk7CisgICAgICAg
IGNhc2UgNTQgOiAKKyAgICAgICAgICAgIHZhciB0JDIwID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4
YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Js
b2NrLl9fKDEyLCBbaW50b3AodCQyMCwgT3BlcmF0b3JzLmkzMl9kaXZfdSwgT3BlcmF0b3JzLmk2
NF9kaXZfdSldKTsKKyAgICAgICAgY2FzZSA1NSA6IAorICAgICAgICAgICAgdmFyIHQkMjEgPSBM
ZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
LCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDIxLCBPcGVyYXRvcnMuaTMy
X3JlbV9zLCBPcGVyYXRvcnMuaTY0X3JlbV9zKV0pOworICAgICAgICBjYXNlIDU2IDogCisgICAg
ICAgICAgICB2YXIgdCQyMiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMg
fCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9CbG9jay5fXygxMiwgW2ludG9w
KHQkMjIsIE9wZXJhdG9ycy5pMzJfcmVtX3UsIE9wZXJhdG9ycy5pNjRfcmVtX3UpXSk7CisgICAg
ICAgIGNhc2UgNTcgOiAKKyAgICAgICAgICAgIHZhciB0JDIzID0gTGV4aW5nLnN1Yl9sZXhlbWUo
bGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAq
L0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyMywgT3BlcmF0b3JzLmkzMl9hbmQsIE9wZXJhdG9ycy5p
NjRfYW5kKV0pOworICAgICAgICBjYXNlIDU4IDogCisgICAgICAgICAgICB2YXIgdCQyNCA9IExl
eGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0s
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBCSU5BUlkgKi9CbG9jay5fXygxMiwgW2ludG9wKHQkMjQsIE9wZXJhdG9ycy5pMzJf
b3IsIE9wZXJhdG9ycy5pNjRfb3IpXSk7CisgICAgICAgIGNhc2UgNTkgOiAKKyAgICAgICAgICAg
IHZhciB0JDI1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9z
dGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwor
ICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyNSwg
T3BlcmF0b3JzLmkzMl94b3IsIE9wZXJhdG9ycy5pNjRfeG9yKV0pOworICAgICAgICBjYXNlIDYw
IDogCisgICAgICAgICAgICB2YXIgdCQyNiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9CbG9jay5fXygx
MiwgW2ludG9wKHQkMjYsIE9wZXJhdG9ycy5pMzJfc2hsLCBPcGVyYXRvcnMuaTY0X3NobCldKTsK
KyAgICAgICAgY2FzZSA2MSA6IAorICAgICAgICAgICAgdmFyIHQkMjcgPSBMZXhpbmcuc3ViX2xl
eGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklO
QVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDI3LCBPcGVyYXRvcnMuaTMyX3Nocl9zLCBPcGVy
YXRvcnMuaTY0X3Nocl9zKV0pOworICAgICAgICBjYXNlIDYyIDogCisgICAgICAgICAgICB2YXIg
dCQyOCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9CbG9jay5fXygxMiwgW2ludG9wKHQkMjgsIE9wZXJh
dG9ycy5pMzJfc2hyX3UsIE9wZXJhdG9ycy5pNjRfc2hyX3UpXSk7CisgICAgICAgIGNhc2UgNjMg
OiAKKyAgICAgICAgICAgIHZhciB0JDI5ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEy
LCBbaW50b3AodCQyOSwgT3BlcmF0b3JzLmkzMl9yb3RsLCBPcGVyYXRvcnMuaTY0X3JvdGwpXSk7
CisgICAgICAgIGNhc2UgNjQgOiAKKyAgICAgICAgICAgIHZhciB0JDMwID0gTGV4aW5nLnN1Yl9s
ZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJ
TkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQzMCwgT3BlcmF0b3JzLmkzMl9yb3RyLCBPcGVy
YXRvcnMuaTY0X3JvdHIpXSk7CisgICAgICAgIGNhc2UgNjUgOiAKKyAgICAgICAgICAgIHZhciB0
JDMxID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAg
ICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbZmxvYXRvcCh0JDMxLCBPcGVy
YXRvcnMuZjMyX2FkZCwgT3BlcmF0b3JzLmY2NF9hZGQpXSk7CisgICAgICAgIGNhc2UgNjYgOiAK
KyAgICAgICAgICAgIHZhciB0JDMyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBb
ZmxvYXRvcCh0JDMyLCBPcGVyYXRvcnMuZjMyX3N1YiwgT3BlcmF0b3JzLmY2NF9zdWIpXSk7Cisg
ICAgICAgIGNhc2UgNjcgOiAKKyAgICAgICAgICAgIHZhciB0JDMzID0gTGV4aW5nLnN1Yl9sZXhl
bWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFS
WSAqL0Jsb2NrLl9fKDEyLCBbZmxvYXRvcCh0JDMzLCBPcGVyYXRvcnMuZjMyX211bCwgT3BlcmF0
b3JzLmY2NF9tdWwpXSk7CisgICAgICAgIGNhc2UgNjggOiAKKyAgICAgICAgICAgIHZhciB0JDM0
ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAg
ICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbZmxvYXRvcCh0JDM0LCBPcGVyYXRv
cnMuZjMyX2RpdiwgT3BlcmF0b3JzLmY2NF9kaXYpXSk7CisgICAgICAgIGNhc2UgNjkgOiAKKyAg
ICAgICAgICAgIHZhciB0JDM1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQx
Wy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsg
MyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbZmxv
YXRvcCh0JDM1LCBPcGVyYXRvcnMuZjMyX21pbiwgT3BlcmF0b3JzLmY2NF9taW4pXSk7CisgICAg
ICAgIGNhc2UgNzAgOiAKKyAgICAgICAgICAgIHZhciB0JDM2ID0gTGV4aW5nLnN1Yl9sZXhlbWUo
bGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAq
L0Jsb2NrLl9fKDEyLCBbZmxvYXRvcCh0JDM2LCBPcGVyYXRvcnMuZjMyX21heCwgT3BlcmF0b3Jz
LmY2NF9tYXgpXSk7CisgICAgICAgIGNhc2UgNzEgOiAKKyAgICAgICAgICAgIHZhciB0JDM3ID0g
TGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80
XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAg
cmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbZmxvYXRvcCh0JDM3LCBPcGVyYXRvcnMu
ZjMyX2NvcHlzaWduLCBPcGVyYXRvcnMuZjY0X2NvcHlzaWduKV0pOworICAgICAgICBjYXNlIDcy
IDogCisgICAgICAgICAgICB2YXIgdCQzOCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBURVNUICovQmxvY2suX18oMTUs
IFtpbnRvcCh0JDM4LCBPcGVyYXRvcnMuaTMyX2VxeiwgT3BlcmF0b3JzLmk2NF9lcXopXSk7Cisg
ICAgICAgIGNhc2UgNzMgOiAKKyAgICAgICAgICAgIHZhciB0JDM5ID0gTGV4aW5nLnN1Yl9sZXhl
bWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBB
UkUgKi9CbG9jay5fXygxMywgW2ludG9wKHQkMzksIE9wZXJhdG9ycy5pMzJfZXEsIE9wZXJhdG9y
cy5pNjRfZXEpXSk7CisgICAgICAgIGNhc2UgNzQgOiAKKyAgICAgICAgICAgIHZhciB0JDQwID0g
TGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80
XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAg
cmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2ludG9wKHQkNDAsIE9wZXJhdG9ycy5p
MzJfbmUsIE9wZXJhdG9ycy5pNjRfbmUpXSk7CisgICAgICAgIGNhc2UgNzUgOiAKKyAgICAgICAg
ICAgIHZhciB0JDQxID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2ludG9wKHQk
NDEsIE9wZXJhdG9ycy5pMzJfbHRfcywgT3BlcmF0b3JzLmk2NF9sdF9zKV0pOworICAgICAgICBj
YXNlIDc2IDogCisgICAgICAgICAgICB2YXIgdCQ0MiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT01QQVJFICovQmxv
Y2suX18oMTMsIFtpbnRvcCh0JDQyLCBPcGVyYXRvcnMuaTMyX2x0X3UsIE9wZXJhdG9ycy5pNjRf
bHRfdSldKTsKKyAgICAgICAgY2FzZSA3NyA6IAorICAgICAgICAgICAgdmFyIHQkNDMgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1
cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0MywgT3BlcmF0b3JzLmkzMl9s
ZV9zLCBPcGVyYXRvcnMuaTY0X2xlX3MpXSk7CisgICAgICAgIGNhc2UgNzggOiAKKyAgICAgICAg
ICAgIHZhciB0JDQ0ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2ludG9wKHQk
NDQsIE9wZXJhdG9ycy5pMzJfbGVfdSwgT3BlcmF0b3JzLmk2NF9sZV91KV0pOworICAgICAgICBj
YXNlIDc5IDogCisgICAgICAgICAgICB2YXIgdCQ0NSA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT01QQVJFICovQmxv
Y2suX18oMTMsIFtpbnRvcCh0JDQ1LCBPcGVyYXRvcnMuaTMyX2d0X3MsIE9wZXJhdG9ycy5pNjRf
Z3RfcyldKTsKKyAgICAgICAgY2FzZSA4MCA6IAorICAgICAgICAgICAgdmFyIHQkNDYgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1
cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0NiwgT3BlcmF0b3JzLmkzMl9n
dF91LCBPcGVyYXRvcnMuaTY0X2d0X3UpXSk7CisgICAgICAgIGNhc2UgODEgOiAKKyAgICAgICAg
ICAgIHZhciB0JDQ3ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2ludG9wKHQk
NDcsIE9wZXJhdG9ycy5pMzJfZ2VfcywgT3BlcmF0b3JzLmk2NF9nZV9zKV0pOworICAgICAgICBj
YXNlIDgyIDogCisgICAgICAgICAgICB2YXIgdCQ0OCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT01QQVJFICovQmxv
Y2suX18oMTMsIFtpbnRvcCh0JDQ4LCBPcGVyYXRvcnMuaTMyX2dlX3UsIE9wZXJhdG9ycy5pNjRf
Z2VfdSldKTsKKyAgICAgICAgY2FzZSA4MyA6IAorICAgICAgICAgICAgdmFyIHQkNDkgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1
cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbZmxvYXRvcCh0JDQ5LCBPcGVyYXRvcnMuZjMy
X2VxLCBPcGVyYXRvcnMuZjY0X2VxKV0pOworICAgICAgICBjYXNlIDg0IDogCisgICAgICAgICAg
ICB2YXIgdCQ1MCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsK
KyAgICAgICAgICAgIHJldHVybiAvKiBDT01QQVJFICovQmxvY2suX18oMTMsIFtmbG9hdG9wKHQk
NTAsIE9wZXJhdG9ycy5mMzJfbmUsIE9wZXJhdG9ycy5mNjRfbmUpXSk7CisgICAgICAgIGNhc2Ug
ODUgOiAKKyAgICAgICAgICAgIHZhciB0JDUxID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEs
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5f
XygxMywgW2Zsb2F0b3AodCQ1MSwgT3BlcmF0b3JzLmYzMl9sdCwgT3BlcmF0b3JzLmY2NF9sdCld
KTsKKyAgICAgICAgY2FzZSA4NiA6IAorICAgICAgICAgICAgdmFyIHQkNTIgPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyog
Q09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbZmxvYXRvcCh0JDUyLCBPcGVyYXRvcnMuZjMyX2xlLCBP
cGVyYXRvcnMuZjY0X2xlKV0pOworICAgICAgICBjYXNlIDg3IDogCisgICAgICAgICAgICB2YXIg
dCQ1MyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiAvKiBDT01QQVJFICovQmxvY2suX18oMTMsIFtmbG9hdG9wKHQkNTMsIE9w
ZXJhdG9ycy5mMzJfZ3QsIE9wZXJhdG9ycy5mNjRfZ3QpXSk7CisgICAgICAgIGNhc2UgODggOiAK
KyAgICAgICAgICAgIHZhciB0JDU0ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywg
W2Zsb2F0b3AodCQ1NCwgT3BlcmF0b3JzLmYzMl9nZSwgT3BlcmF0b3JzLmY2NF9nZSldKTsKKyAg
ICAgICAgY2FzZSA4OSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5f
XygxNCwgW09wZXJhdG9ycy5pMzJfd3JhcF9pNjRdKTsKKyAgICAgICAgY2FzZSA5MCA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5pNjRf
ZXh0ZW5kX3NfaTMyXSk7CisgICAgICAgIGNhc2UgOTEgOiAKKyAgICAgICAgICAgIHJldHVybiAv
KiBDT05WRVJUICovQmxvY2suX18oMTQsIFtPcGVyYXRvcnMuaTY0X2V4dGVuZF91X2kzMl0pOwor
ICAgICAgICBjYXNlIDkyIDogCisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2Nr
Ll9fKDE0LCBbT3BlcmF0b3JzLmYzMl9kZW1vdGVfZjY0XSk7CisgICAgICAgIGNhc2UgOTMgOiAK
KyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtPcGVyYXRvcnMu
ZjY0X3Byb21vdGVfZjMyXSk7CisgICAgICAgIGNhc2UgOTQgOiAKKyAgICAgICAgICAgIHZhciB0
JDU1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAg
ICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW2ludG9wKHQkNTUsIE9wZXJh
dG9ycy5pMzJfdHJ1bmNfc19mMzIsIE9wZXJhdG9ycy5pNjRfdHJ1bmNfc19mMzIpXSk7CisgICAg
ICAgIGNhc2UgOTUgOiAKKyAgICAgICAgICAgIHZhciB0JDU2ID0gTGV4aW5nLnN1Yl9sZXhlbWUo
bGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQg
Ki9CbG9jay5fXygxNCwgW2ludG9wKHQkNTYsIE9wZXJhdG9ycy5pMzJfdHJ1bmNfdV9mMzIsIE9w
ZXJhdG9ycy5pNjRfdHJ1bmNfdV9mMzIpXSk7CisgICAgICAgIGNhc2UgOTYgOiAKKyAgICAgICAg
ICAgIHZhciB0JDU3ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OworICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW2ludG9wKHQk
NTcsIE9wZXJhdG9ycy5pMzJfdHJ1bmNfc19mNjQsIE9wZXJhdG9ycy5pNjRfdHJ1bmNfc19mNjQp
XSk7CisgICAgICAgIGNhc2UgOTcgOiAKKyAgICAgICAgICAgIHZhciB0JDU4ID0gTGV4aW5nLnN1
Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVm
JDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8q
IENPTlZFUlQgKi9CbG9jay5fXygxNCwgW2ludG9wKHQkNTgsIE9wZXJhdG9ycy5pMzJfdHJ1bmNf
dV9mNjQsIE9wZXJhdG9ycy5pNjRfdHJ1bmNfdV9mNjQpXSk7CisgICAgICAgIGNhc2UgOTggOiAK
KyAgICAgICAgICAgIHZhciB0JDU5ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwg
W2Zsb2F0b3AodCQ1OSwgT3BlcmF0b3JzLmYzMl9jb252ZXJ0X3NfaTMyLCBPcGVyYXRvcnMuZjY0
X2NvbnZlcnRfc19pMzIpXSk7CisgICAgICAgIGNhc2UgOTkgOiAKKyAgICAgICAgICAgIHZhciB0
JDYwID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAg
ICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW2Zsb2F0b3AodCQ2MCwgT3Bl
cmF0b3JzLmYzMl9jb252ZXJ0X3VfaTMyLCBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfdV9pMzIpXSk7
CisgICAgICAgIGNhc2UgMTAwIDogCisgICAgICAgICAgICB2YXIgdCQ2MSA9IExleGluZy5zdWJf
bGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQx
Wy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBD
T05WRVJUICovQmxvY2suX18oMTQsIFtmbG9hdG9wKHQkNjEsIE9wZXJhdG9ycy5mMzJfY29udmVy
dF9zX2k2NCwgT3BlcmF0b3JzLmY2NF9jb252ZXJ0X3NfaTY0KV0pOworICAgICAgICBjYXNlIDEw
MSA6IAorICAgICAgICAgICAgdmFyIHQkNjIgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9f
KDE0LCBbZmxvYXRvcCh0JDYyLCBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfdV9pNjQsIE9wZXJhdG9y
cy5mNjRfY29udmVydF91X2k2NCldKTsKKyAgICAgICAgY2FzZSAxMDIgOiAKKyAgICAgICAgICAg
IHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtPcGVyYXRvcnMuZjMyX3JlaW50ZXJw
cmV0X2kzMl0pOworICAgICAgICBjYXNlIDEwMyA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIENP
TlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5mNjRfcmVpbnRlcnByZXRfaTY0XSk7Cisg
ICAgICAgIGNhc2UgMTA0IDogCisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2Nr
Ll9fKDE0LCBbT3BlcmF0b3JzLmkzMl9yZWludGVycHJldF9mMzJdKTsKKyAgICAgICAgY2FzZSAx
MDUgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtPcGVy
YXRvcnMuaTY0X3JlaW50ZXJwcmV0X2Y2NF0pOworICAgICAgICBjYXNlIDEwNiA6IAorICAgICAg
ICAgICAgcmV0dXJuIC8qIENVUlJFTlRfTUVNT1JZICovMjU7CisgICAgICAgIGNhc2UgMTA3IDog
CisgICAgICAgICAgICByZXR1cm4gLyogR1JPV19NRU1PUlkgKi8yNjsKKyAgICAgICAgY2FzZSAx
MDggOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBUWVBFICovMjk7CisgICAgICAgIGNhc2UgMTA5
IDogCisgICAgICAgICAgICByZXR1cm4gLyogRlVOQyAqLzI3OworICAgICAgICBjYXNlIDExMCA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIFNUQVJUICovMjg7CisgICAgICAgIGNhc2UgMTExIDog
CisgICAgICAgICAgICByZXR1cm4gLyogUEFSQU0gKi8zMDsKKyAgICAgICAgY2FzZSAxMTIgOiAK
KyAgICAgICAgICAgIHJldHVybiAvKiBSRVNVTFQgKi8zMTsKKyAgICAgICAgY2FzZSAxMTMgOiAK
KyAgICAgICAgICAgIHJldHVybiAvKiBMT0NBTCAqLzMyOworICAgICAgICBjYXNlIDExNCA6IAor
ICAgICAgICAgICAgcmV0dXJuIC8qIEdMT0JBTCAqLzMzOworICAgICAgICBjYXNlIDExNSA6IAor
ICAgICAgICAgICAgcmV0dXJuIC8qIE1PRFVMRSAqLzM0OworICAgICAgICBjYXNlIDExNiA6IAor
ICAgICAgICAgICAgcmV0dXJuIC8qIFRBQkxFICovMzU7CisgICAgICAgIGNhc2UgMTE3IDogCisg
ICAgICAgICAgICByZXR1cm4gLyogTUVNT1JZICovMzc7CisgICAgICAgIGNhc2UgMTE4IDogCisg
ICAgICAgICAgICByZXR1cm4gLyogRUxFTSAqLzM2OworICAgICAgICBjYXNlIDExOSA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIERBVEEgKi8zODsKKyAgICAgICAgY2FzZSAxMjAgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBPRkZTRVQgKi8zOTsKKyAgICAgICAgY2FzZSAxMjEgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBJTVBPUlQgKi80MDsKKyAgICAgICAgY2FzZSAxMjIgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBFWFBPUlQgKi80MTsKKyAgICAgICAgY2FzZSAxMjMgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBTQ1JJUFQgKi80MjsKKyAgICAgICAgY2FzZSAxMjQgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBSRUdJU1RFUiAqLzQzOworICAgICAgICBjYXNlIDEyNSA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIElOVk9LRSAqLzQ0OworICAgICAgICBjYXNlIDEyNiA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIEdFVCAqLzQ1OworICAgICAgICBjYXNlIDEyNyA6IAorICAgICAg
ICAgICAgcmV0dXJuIC8qIEFTU0VSVF9NQUxGT1JNRUQgKi80NjsKKyAgICAgICAgY2FzZSAxMjgg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBBU1NFUlRfSU5WQUxJRCAqLzQ3OworICAgICAgICBj
YXNlIDEyOSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEFTU0VSVF9TT0ZUX0lOVkFMSUQgKi80
ODsKKyAgICAgICAgY2FzZSAxMzAgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBBU1NFUlRfVU5M
SU5LQUJMRSAqLzQ5OworICAgICAgICBjYXNlIDEzMSA6IAorICAgICAgICAgICAgcmV0dXJuIC8q
IEFTU0VSVF9SRVRVUk4gKi81MDsKKyAgICAgICAgY2FzZSAxMzIgOiAKKyAgICAgICAgICAgIHJl
dHVybiAvKiBBU1NFUlRfUkVUVVJOX05BTiAqLzUxOworICAgICAgICBjYXNlIDEzMyA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIEFTU0VSVF9UUkFQICovNTI7CisgICAgICAgIGNhc2UgMTM0IDog
CisgICAgICAgICAgICByZXR1cm4gLyogQVNTRVJUX0VYSEFVU1RJT04gKi81MzsKKyAgICAgICAg
Y2FzZSAxMzUgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBJTlBVVCAqLzU0OworICAgICAgICBj
YXNlIDEzNiA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIE9VVFBVVCAqLzU1OworICAgICAgICBj
YXNlIDEzNyA6IAorICAgICAgICAgICAgdmFyIHMkNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9jdXJy
X3BvcyAqLzVdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBWQVIgKi9CbG9jay5fXyg0LCBbcyQ3
XSk7CisgICAgICAgIGNhc2UgMTQwIDogCisgICAgICAgICAgICBfX29jYW1sX2xleF9jb21tZW50
X3JlYyhMZXhpbmcubGV4ZW1lX3N0YXJ0X3AobGV4YnVmJDEpLCBsZXhidWYkMSwgNjg0KTsKKyAg
ICAgICAgICAgIHJldHVybiB0b2tlbihsZXhidWYkMSk7CisgICAgICAgIGNhc2UgMTQxIDogCisg
ICAgICAgICAgICByZXR1cm4gdG9rZW4obGV4YnVmJDEpOworICAgICAgICBjYXNlIDEzOSA6IAor
ICAgICAgICBjYXNlIDE0MiA6IAorICAgICAgICAgICAgTGV4aW5nLm5ld19saW5lKGxleGJ1ZiQx
KTsKKyAgICAgICAgICAgIHJldHVybiB0b2tlbihsZXhidWYkMSk7CisgICAgICAgIGNhc2UgMTM4
IDogCisgICAgICAgIGNhc2UgMTQzIDogCisgICAgICAgICAgICByZXR1cm4gLyogRU9GICovNTY7
CisgICAgICAgIGNhc2UgMTQ0IDogCisgICAgICAgICAgICByZXR1cm4gZXJyb3IobGV4YnVmJDEs
ICJ1bmtub3duIG9wZXJhdG9yIik7CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgfTsKK30K
KworZnVuY3Rpb24gX19vY2FtbF9sZXhfY29tbWVudF9yZWMoc3RhcnQsIGxleGJ1ZiwgX19fb2Nh
bWxfbGV4X3N0YXRlKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgX19vY2FtbF9sZXhfc3Rh
dGUgPSBfX19vY2FtbF9sZXhfc3RhdGU7CisgICAgdmFyIF9fb2NhbWxfbGV4X3N0YXRlJDEgPSBM
ZXhpbmcuZW5naW5lKF9fb2NhbWxfbGV4X3RhYmxlcywgX19vY2FtbF9sZXhfc3RhdGUsIGxleGJ1
Zik7CisgICAgaWYgKF9fb2NhbWxfbGV4X3N0YXRlJDEgPiA0IHx8IF9fb2NhbWxfbGV4X3N0YXRl
JDEgPCAwKSB7CisgICAgICBDdXJyeS5fMShsZXhidWZbLyogcmVmaWxsX2J1ZmYgKi8wXSwgbGV4
YnVmKTsKKyAgICAgIF9fX29jYW1sX2xleF9zdGF0ZSA9IF9fb2NhbWxfbGV4X3N0YXRlJDE7Cisg
ICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzd2l0Y2gg
KF9fb2NhbWxfbGV4X3N0YXRlJDEpIHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogKCkgKi8wOworICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIF9fb2NhbWxf
bGV4X2NvbW1lbnRfcmVjKExleGluZy5sZXhlbWVfc3RhcnRfcChsZXhidWYpLCBsZXhidWYsIDY4
NCk7CisgICAgICAgICAgICBfX19vY2FtbF9sZXhfc3RhdGUgPSA2ODQ7CisgICAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIExleGluZy5uZXdf
bGluZShsZXhidWYpOworICAgICAgICAgICAgX19fb2NhbWxfbGV4X3N0YXRlID0gNjg0OworICAg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICBy
ZXR1cm4gZXJyb3JfbmVzdChzdGFydCwgbGV4YnVmLCAidW5jbG9zZWQgY29tbWVudCIpOworICAg
ICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIF9fX29jYW1sX2xleF9zdGF0ZSA9IDY4NDsKKyAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgfTsK
K30KKworZXhwb3J0cy5jb252ZXJ0X3BvcyA9IGNvbnZlcnRfcG9zOworZXhwb3J0cy50b2tlbiAg
ICAgICA9IHRva2VuOworLyogRjMyIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQg
b2YgbGV4ZXIuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisg
IF9yZWdpc3RyeVsnbGV4aW5nJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0g
e307CisvLy8vLy8vLyBzdGFydCBvZiBsZXhpbmcuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsK
KwordmFyIFN5cyAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zeXMiKTsKK3ZhciBC
eXRlcyAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnl0ZXMiKTsKK3ZhciBDdXJyeSAg
ICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBDYW1sX2J5dGVzICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9ieXRlcyIpOwordmFyIENhbWxfbGV4ZXIgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2xleGVyIik7Cit2YXIgUGVydmFzaXZlcyAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rp
b24gZW5naW5lKHRibCwgc3RhdGUsIGJ1ZikgeworICB2YXIgcmVzdWx0ID0gQ2FtbF9sZXhlci5j
YW1sX2xleF9lbmdpbmUodGJsLCBzdGF0ZSwgYnVmKTsKKyAgaWYgKHJlc3VsdCA+PSAwKSB7Cisg
ICAgYnVmWy8qIGxleF9zdGFydF9wICovMTBdID0gYnVmWy8qIGxleF9jdXJyX3AgKi8xMV07Cisg
ICAgdmFyIGluaXQgPSBidWZbLyogbGV4X2N1cnJfcCAqLzExXTsKKyAgICBidWZbLyogbGV4X2N1
cnJfcCAqLzExXSA9IC8qIHJlY29yZCAqL1sKKyAgICAgIC8qIHBvc19mbmFtZSAqL2luaXRbLyog
cG9zX2ZuYW1lICovMF0sCisgICAgICAvKiBwb3NfbG51bSAqL2luaXRbLyogcG9zX2xudW0gKi8x
XSwKKyAgICAgIC8qIHBvc19ib2wgKi9pbml0Wy8qIHBvc19ib2wgKi8yXSwKKyAgICAgIC8qIHBv
c19jbnVtICovYnVmWy8qIGxleF9hYnNfcG9zICovM10gKyBidWZbLyogbGV4X2N1cnJfcG9zICov
NV0gfCAwCisgICAgXTsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBuZXdf
ZW5naW5lKHRibCwgc3RhdGUsIGJ1ZikgeworICB2YXIgcmVzdWx0ID0gQ2FtbF9sZXhlci5jYW1s
X25ld19sZXhfZW5naW5lKHRibCwgc3RhdGUsIGJ1Zik7CisgIGlmIChyZXN1bHQgPj0gMCkgewor
ICAgIGJ1ZlsvKiBsZXhfc3RhcnRfcCAqLzEwXSA9IGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdOwor
ICAgIHZhciBpbml0ID0gYnVmWy8qIGxleF9jdXJyX3AgKi8xMV07CisgICAgYnVmWy8qIGxleF9j
dXJyX3AgKi8xMV0gPSAvKiByZWNvcmQgKi9bCisgICAgICAvKiBwb3NfZm5hbWUgKi9pbml0Wy8q
IHBvc19mbmFtZSAqLzBdLAorICAgICAgLyogcG9zX2xudW0gKi9pbml0Wy8qIHBvc19sbnVtICov
MV0sCisgICAgICAvKiBwb3NfYm9sICovaW5pdFsvKiBwb3NfYm9sICovMl0sCisgICAgICAvKiBw
b3NfY251bSAqL2J1ZlsvKiBsZXhfYWJzX3BvcyAqLzNdICsgYnVmWy8qIGxleF9jdXJyX3BvcyAq
LzVdIHwgMAorICAgIF07CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordmFyIHplcm9fcG9z
ID0gLyogcmVjb3JkICovWworICAvKiBwb3NfZm5hbWUgKi8iIiwKKyAgLyogcG9zX2xudW0gKi8x
LAorICAvKiBwb3NfYm9sICovMCwKKyAgLyogcG9zX2NudW0gKi8wCitdOworCitmdW5jdGlvbiBm
cm9tX2Z1bmN0aW9uKGYpIHsKKyAgdmFyIHBhcnRpYWxfYXJnID0gbmV3IEFycmF5KDUxMik7Cisg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogcmVmaWxsX2J1ZmYgKi9mdW5jdGlv
biAocGFyYW0pIHsKKyAgICAgICAgICAgIHZhciByZWFkX2Z1biA9IGY7CisgICAgICAgICAgICB2
YXIgYXV4X2J1ZmZlciA9IHBhcnRpYWxfYXJnOworICAgICAgICAgICAgdmFyIGxleGJ1ZiA9IHBh
cmFtOworICAgICAgICAgICAgdmFyIHJlYWQgPSBDdXJyeS5fMihyZWFkX2Z1biwgYXV4X2J1ZmZl
ciwgYXV4X2J1ZmZlci5sZW5ndGgpOworICAgICAgICAgICAgdmFyIG4gPSByZWFkID4gMCA/IHJl
YWQgOiAobGV4YnVmWy8qIGxleF9lb2ZfcmVhY2hlZCAqLzhdID0gLyogdHJ1ZSAqLzEsIDApOwor
ICAgICAgICAgICAgaWYgKChsZXhidWZbLyogbGV4X2J1ZmZlcl9sZW4gKi8yXSArIG4gfCAwKSA+
IGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0ubGVuZ3RoKSB7CisgICAgICAgICAgICAgIGlmICgo
KGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gbGV4YnVmWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSB8IDApICsgbiB8IDApIDw9IGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0ubGVuZ3RoKSB7
CisgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdChsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdLCBs
ZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdLCAw
LCBsZXhidWZbLyogbGV4X2J1ZmZlcl9sZW4gKi8yXSAtIGxleGJ1ZlsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gfCAwKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICB2YXIgbmV3bGVuID0gUGVydmFzaXZlcy5taW4oKGxleGJ1ZlsvKiBsZXhfYnVm
ZmVyICovMV0ubGVuZ3RoIDw8IDEpLCBTeXMubWF4X3N0cmluZ19sZW5ndGgpOworICAgICAgICAg
ICAgICAgIGlmICgoKGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gbGV4YnVmWy8qIGxl
eF9zdGFydF9wb3MgKi80XSB8IDApICsgbiB8IDApID4gbmV3bGVuKSB7CisgICAgICAgICAgICAg
ICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgIkxleGluZy5sZXhfcmVmaWxs
OiBjYW5ub3QgZ3JvdyBidWZmZXIiCisgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIG5ld2J1ZiA9IENhbWxfc3RyaW5nLmNhbWxf
Y3JlYXRlX3N0cmluZyhuZXdsZW4pOworICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXQobGV4YnVm
Wy8qIGxleF9idWZmZXIgKi8xXSwgbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbmV3YnVm
LCAwLCBsZXhidWZbLyogbGV4X2J1ZmZlcl9sZW4gKi8yXSAtIGxleGJ1ZlsvKiBsZXhfc3RhcnRf
cG9zICovNF0gfCAwKTsKKyAgICAgICAgICAgICAgICBsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFd
ID0gbmV3YnVmOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHZhciBzID0gbGV4YnVm
Wy8qIGxleF9zdGFydF9wb3MgKi80XTsKKyAgICAgICAgICAgICAgbGV4YnVmWy8qIGxleF9hYnNf
cG9zICovM10gPSBsZXhidWZbLyogbGV4X2Fic19wb3MgKi8zXSArIHMgfCAwOworICAgICAgICAg
ICAgICBsZXhidWZbLyogbGV4X2N1cnJfcG9zICovNV0gPSBsZXhidWZbLyogbGV4X2N1cnJfcG9z
ICovNV0gLSBzIHwgMDsKKyAgICAgICAgICAgICAgbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80
XSA9IDA7CisgICAgICAgICAgICAgIGxleGJ1ZlsvKiBsZXhfbGFzdF9wb3MgKi82XSA9IGxleGJ1
ZlsvKiBsZXhfbGFzdF9wb3MgKi82XSAtIHMgfCAwOworICAgICAgICAgICAgICBsZXhidWZbLyog
bGV4X2J1ZmZlcl9sZW4gKi8yXSA9IGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gcyB8
IDA7CisgICAgICAgICAgICAgIHZhciB0ID0gbGV4YnVmWy8qIGxleF9tZW0gKi85XTsKKyAgICAg
ICAgICAgICAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSB0Lmxlbmd0aCAtIDEgfCAwOyBpIDw9
IGlfZmluaXNoOyArK2kpeworICAgICAgICAgICAgICAgIHZhciB2ID0gdFtpXTsKKyAgICAgICAg
ICAgICAgICBpZiAodiA+PSAwKSB7CisgICAgICAgICAgICAgICAgICB0W2ldID0gdiAtIHMgfCAw
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgQnl0ZXMuYmxpdChhdXhfYnVmZmVyLCAwLCBsZXhi
dWZbLyogbGV4X2J1ZmZlciAqLzFdLCBsZXhidWZbLyogbGV4X2J1ZmZlcl9sZW4gKi8yXSwgbik7
CisgICAgICAgICAgICBsZXhidWZbLyogbGV4X2J1ZmZlcl9sZW4gKi8yXSA9IGxleGJ1ZlsvKiBs
ZXhfYnVmZmVyX2xlbiAqLzJdICsgbiB8IDA7CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8w
OworICAgICAgICAgIH0sCisgICAgICAgICAgLyogbGV4X2J1ZmZlciAqL25ldyBBcnJheSgxMDI0
KSwKKyAgICAgICAgICAvKiBsZXhfYnVmZmVyX2xlbiAqLzAsCisgICAgICAgICAgLyogbGV4X2Fi
c19wb3MgKi8wLAorICAgICAgICAgIC8qIGxleF9zdGFydF9wb3MgKi8wLAorICAgICAgICAgIC8q
IGxleF9jdXJyX3BvcyAqLzAsCisgICAgICAgICAgLyogbGV4X2xhc3RfcG9zICovMCwKKyAgICAg
ICAgICAvKiBsZXhfbGFzdF9hY3Rpb24gKi8wLAorICAgICAgICAgIC8qIGxleF9lb2ZfcmVhY2hl
ZCA6IGZhbHNlICovMCwKKyAgICAgICAgICAvKiBsZXhfbWVtIDogaW50IGFycmF5ICovW10sCisg
ICAgICAgICAgLyogbGV4X3N0YXJ0X3AgKi96ZXJvX3BvcywKKyAgICAgICAgICAvKiBsZXhfY3Vy
cl9wICovemVyb19wb3MKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZnJvbV9jaGFubmVsKGlj
KSB7CisgIHJldHVybiBmcm9tX2Z1bmN0aW9uKGZ1bmN0aW9uIChidWYsIG4pIHsKKyAgICAgICAg
ICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuaW5wdXQoaWMsIGJ1ZiwgMCwgbik7CisgICAgICAgICAg
ICB9KTsKK30KKworZnVuY3Rpb24gZnJvbV9zdHJpbmcocykgeworICByZXR1cm4gLyogcmVjb3Jk
ICovWworICAgICAgICAgIC8qIHJlZmlsbF9idWZmICovZnVuY3Rpb24gKGxleGJ1ZikgeworICAg
ICAgICAgICAgbGV4YnVmWy8qIGxleF9lb2ZfcmVhY2hlZCAqLzhdID0gLyogdHJ1ZSAqLzE7Cisg
ICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgIH0sCisgICAgICAgICAgLyog
bGV4X2J1ZmZlciAqL0J5dGVzLm9mX3N0cmluZyhzKSwKKyAgICAgICAgICAvKiBsZXhfYnVmZmVy
X2xlbiAqL3MubGVuZ3RoLAorICAgICAgICAgIC8qIGxleF9hYnNfcG9zICovMCwKKyAgICAgICAg
ICAvKiBsZXhfc3RhcnRfcG9zICovMCwKKyAgICAgICAgICAvKiBsZXhfY3Vycl9wb3MgKi8wLAor
ICAgICAgICAgIC8qIGxleF9sYXN0X3BvcyAqLzAsCisgICAgICAgICAgLyogbGV4X2xhc3RfYWN0
aW9uICovMCwKKyAgICAgICAgICAvKiBsZXhfZW9mX3JlYWNoZWQgOiB0cnVlICovMSwKKyAgICAg
ICAgICAvKiBsZXhfbWVtIDogaW50IGFycmF5ICovW10sCisgICAgICAgICAgLyogbGV4X3N0YXJ0
X3AgKi96ZXJvX3BvcywKKyAgICAgICAgICAvKiBsZXhfY3Vycl9wICovemVyb19wb3MKKyAgICAg
ICAgXTsKK30KKworZnVuY3Rpb24gbGV4ZW1lKGxleGJ1ZikgeworICB2YXIgbGVuID0gbGV4YnVm
Wy8qIGxleF9jdXJyX3BvcyAqLzVdIC0gbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSB8IDA7
CisgIHJldHVybiBCeXRlcy5zdWJfc3RyaW5nKGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGxl
eGJ1ZlsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxlbik7Cit9CisKK2Z1bmN0aW9uIHN1Yl9sZXhl
bWUobGV4YnVmLCBpMSwgaTIpIHsKKyAgdmFyIGxlbiA9IGkyIC0gaTEgfCAwOworICByZXR1cm4g
Qnl0ZXMuc3ViX3N0cmluZyhsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdLCBpMSwgbGVuKTsKK30K
KworZnVuY3Rpb24gc3ViX2xleGVtZV9vcHQobGV4YnVmLCBpMSwgaTIpIHsKKyAgaWYgKGkxID49
IDApIHsKKyAgICB2YXIgbGVuID0gaTIgLSBpMSB8IDA7CisgICAgcmV0dXJuIC8qIFNvbWUgKi9b
Qnl0ZXMuc3ViX3N0cmluZyhsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdLCBpMSwgbGVuKV07Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9u
IHN1Yl9sZXhlbWVfY2hhcihsZXhidWYsIGkpIHsKKyAgcmV0dXJuIENhbWxfYnl0ZXMuZ2V0KGxl
eGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGkpOworfQorCitmdW5jdGlvbiBzdWJfbGV4ZW1lX2No
YXJfb3B0KGxleGJ1ZiwgaSkgeworICBpZiAoaSA+PSAwKSB7CisgICAgcmV0dXJuIC8qIFNvbWUg
Ki9bQ2FtbF9ieXRlcy5nZXQobGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXSwgaSldOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAvKiBOb25lICovMDsKKyAgfQorfQorCitmdW5jdGlvbiBsZXhl
bWVfY2hhcihsZXhidWYsIGkpIHsKKyAgcmV0dXJuIENhbWxfYnl0ZXMuZ2V0KGxleGJ1ZlsvKiBs
ZXhfYnVmZmVyICovMV0sIGxleGJ1ZlsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyBpIHwgMCk7Cit9
CisKK2Z1bmN0aW9uIGxleGVtZV9zdGFydChsZXhidWYpIHsKKyAgcmV0dXJuIGxleGJ1ZlsvKiBs
ZXhfc3RhcnRfcCAqLzEwXVsvKiBwb3NfY251bSAqLzNdOworfQorCitmdW5jdGlvbiBsZXhlbWVf
ZW5kKGxleGJ1ZikgeworICByZXR1cm4gbGV4YnVmWy8qIGxleF9jdXJyX3AgKi8xMV1bLyogcG9z
X2NudW0gKi8zXTsKK30KKworZnVuY3Rpb24gbGV4ZW1lX3N0YXJ0X3AobGV4YnVmKSB7CisgIHJl
dHVybiBsZXhidWZbLyogbGV4X3N0YXJ0X3AgKi8xMF07Cit9CisKK2Z1bmN0aW9uIGxleGVtZV9l
bmRfcChsZXhidWYpIHsKKyAgcmV0dXJuIGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdOworfQor
CitmdW5jdGlvbiBuZXdfbGluZShsZXhidWYpIHsKKyAgdmFyIGxjcCA9IGxleGJ1ZlsvKiBsZXhf
Y3Vycl9wICovMTFdOworICBsZXhidWZbLyogbGV4X2N1cnJfcCAqLzExXSA9IC8qIHJlY29yZCAq
L1sKKyAgICAvKiBwb3NfZm5hbWUgKi9sY3BbLyogcG9zX2ZuYW1lICovMF0sCisgICAgLyogcG9z
X2xudW0gKi9sY3BbLyogcG9zX2xudW0gKi8xXSArIDEgfCAwLAorICAgIC8qIHBvc19ib2wgKi9s
Y3BbLyogcG9zX2NudW0gKi8zXSwKKyAgICAvKiBwb3NfY251bSAqL2xjcFsvKiBwb3NfY251bSAq
LzNdCisgIF07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGZsdXNoX2lucHV0
KGxiKSB7CisgIGxiWy8qIGxleF9jdXJyX3BvcyAqLzVdID0gMDsKKyAgbGJbLyogbGV4X2Fic19w
b3MgKi8zXSA9IDA7CisgIHZhciBpbml0ID0gbGJbLyogbGV4X2N1cnJfcCAqLzExXTsKKyAgbGJb
LyogbGV4X2N1cnJfcCAqLzExXSA9IC8qIHJlY29yZCAqL1sKKyAgICAvKiBwb3NfZm5hbWUgKi9p
bml0Wy8qIHBvc19mbmFtZSAqLzBdLAorICAgIC8qIHBvc19sbnVtICovaW5pdFsvKiBwb3NfbG51
bSAqLzFdLAorICAgIC8qIHBvc19ib2wgKi9pbml0Wy8qIHBvc19ib2wgKi8yXSwKKyAgICAvKiBw
b3NfY251bSAqLzAKKyAgXTsKKyAgbGJbLyogbGV4X2J1ZmZlcl9sZW4gKi8yXSA9IDA7CisgIHJl
dHVybiAvKiAoKSAqLzA7Cit9CisKK3ZhciBkdW1teV9wb3MgPSAvKiByZWNvcmQgKi9bCisgIC8q
IHBvc19mbmFtZSAqLyIiLAorICAvKiBwb3NfbG51bSAqLzAsCisgIC8qIHBvc19ib2wgKi8wLAor
ICAvKiBwb3NfY251bSAqLy0xCitdOworCitleHBvcnRzLmR1bW15X3BvcyAgICAgICAgICAgPSBk
dW1teV9wb3M7CitleHBvcnRzLmZyb21fY2hhbm5lbCAgICAgICAgPSBmcm9tX2NoYW5uZWw7Citl
eHBvcnRzLmZyb21fc3RyaW5nICAgICAgICAgPSBmcm9tX3N0cmluZzsKK2V4cG9ydHMuZnJvbV9m
dW5jdGlvbiAgICAgICA9IGZyb21fZnVuY3Rpb247CitleHBvcnRzLmxleGVtZSAgICAgICAgICAg
ICAgPSBsZXhlbWU7CitleHBvcnRzLmxleGVtZV9jaGFyICAgICAgICAgPSBsZXhlbWVfY2hhcjsK
K2V4cG9ydHMubGV4ZW1lX3N0YXJ0ICAgICAgICA9IGxleGVtZV9zdGFydDsKK2V4cG9ydHMubGV4
ZW1lX2VuZCAgICAgICAgICA9IGxleGVtZV9lbmQ7CitleHBvcnRzLmxleGVtZV9zdGFydF9wICAg
ICAgPSBsZXhlbWVfc3RhcnRfcDsKK2V4cG9ydHMubGV4ZW1lX2VuZF9wICAgICAgICA9IGxleGVt
ZV9lbmRfcDsKK2V4cG9ydHMubmV3X2xpbmUgICAgICAgICAgICA9IG5ld19saW5lOworZXhwb3J0
cy5mbHVzaF9pbnB1dCAgICAgICAgID0gZmx1c2hfaW5wdXQ7CitleHBvcnRzLnN1Yl9sZXhlbWUg
ICAgICAgICAgPSBzdWJfbGV4ZW1lOworZXhwb3J0cy5zdWJfbGV4ZW1lX29wdCAgICAgID0gc3Vi
X2xleGVtZV9vcHQ7CitleHBvcnRzLnN1Yl9sZXhlbWVfY2hhciAgICAgPSBzdWJfbGV4ZW1lX2No
YXI7CitleHBvcnRzLnN1Yl9sZXhlbWVfY2hhcl9vcHQgPSBzdWJfbGV4ZW1lX2NoYXJfb3B0Owor
ZXhwb3J0cy5lbmdpbmUgICAgICAgICAgICAgID0gZW5naW5lOworZXhwb3J0cy5uZXdfZW5naW5l
ICAgICAgICAgID0gbmV3X2VuZ2luZTsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBl
bmQgb2YgbGV4aW5nLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisK
KworICBfcmVnaXN0cnlbJ2xpYiddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9
IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgbGliLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkg
QlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ug
c3RyaWN0JzsKKwordmFyICQkQXJyYXkgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxh
dGZvcm0vbGliL2pzL2FycmF5Iik7Cit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1
aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3ZhciBJbnQzMiAgICAgICAgICAgICAg
ICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9pbnQzMiIpOwordmFyICQkU3RyaW5n
ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwor
dmFyIEJpZ2FycmF5ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2JpZ2FycmF5Iik7Cit2YXIgQ2FtbF9vYmogICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1w
bGF0Zm9ybS9saWIvanMvY2FtbF9vYmoiKTsKK3ZhciBDYW1sX2FycmF5ICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2FycmF5Iik7Cit2YXIgQ2FtbF9pbnQ2
NCAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9pbnQ2NCIp
OwordmFyIFBlcnZhc2l2ZXMgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGli
L2pzL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUo
ImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlv
biByZXBlYXQoX24sIGYsIHgpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBuID0gX247Cisg
ICAgaWYgKG4pIHsKKyAgICAgIEN1cnJ5Ll8xKGYsIHgpOworICAgICAgX24gPSBuIC0gMSB8IDA7
CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gLyogKCkgKi8wOworICAgIH0KKyAgfTsKK30KKwordmFyIEZ1biA9IC8qIG1vZHVsZSAqL1sv
KiByZXBlYXQgKi9yZXBlYXRdOworCitmdW5jdGlvbiBtYWtlKG4sIHgpIHsKKyAgaWYgKG4pIHsK
KyAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICB4LAorICAgICAgICAgICAgbWFrZShu
IC0gMSB8IDAsIHgpCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyog
W10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHRhYmxlJHByaW1lKGksIG4sIGYpIHsKKyAgaWYg
KGkgPT09IG4pIHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKGYsIGkpLAorICAgICAgICAgICAg
dGFibGUkcHJpbWUoaSArIDEgfCAwLCBuLCBmKQorICAgICAgICAgIF07CisgIH0KK30KKworZnVu
Y3Rpb24gdGFibGUobiwgZikgeworICByZXR1cm4gdGFibGUkcHJpbWUoMCwgbiwgZik7Cit9CisK
K2Z1bmN0aW9uIHRha2UobiwgeHMpIHsKKyAgaWYgKG4gIT09IDApIHsKKyAgICBpZiAoeHMpIHsK
KyAgICAgIGlmIChuID4gMCkgeworICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgeHNbMF0sCisgICAgICAgICAgICAgICAgdGFrZShuIC0gMSB8IDAsIHhzWzFdKQorICAg
ICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQZXJ2
YXNpdmVzLmZhaWx3aXRoKCJ0YWtlIik7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoInRha2UiKTsKKyAgICB9CisgIH0KKyAgZWxz
ZSB7CisgICAgcmV0dXJuIC8qIFtdICovMDsKKyAgfQorfQorCitmdW5jdGlvbiBkcm9wKF9uLCBf
eHMpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciB4cyA9IF94czsKKyAgICB2YXIgbiA9IF9u
OworICAgIGlmIChuICE9PSAwKSB7CisgICAgICBpZiAoeHMpIHsKKyAgICAgICAgaWYgKG4gPiAw
KSB7CisgICAgICAgICAgX3hzID0geHNbMV07CisgICAgICAgICAgX24gPSBuIC0gMSB8IDA7Cisg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJkcm9wIik7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWls
d2l0aCgiZHJvcCIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiB4
czsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGxhc3QoX3BhcmFtKSB7CisgIHdoaWxlKHRy
dWUpIHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgaWYgKHBhcmFtKSB7CisgICAgICB2
YXIgeHMgPSBwYXJhbVsxXTsKKyAgICAgIGlmICh4cykgeworICAgICAgICBfcGFyYW0gPSB4czsK
KyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAg
ICAgICByZXR1cm4gcGFyYW1bMF07CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAg
cmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImxhc3QiKTsKKyAgICB9CisgIH07Cit9CisKK2Z1
bmN0aW9uIHNwbGl0X2xhc3QocGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgdmFyIHhzID0g
cGFyYW1bMV07CisgICAgdmFyIHggPSBwYXJhbVswXTsKKyAgICBpZiAoeHMpIHsKKyAgICAgIHZh
ciBtYXRjaCA9IHNwbGl0X2xhc3QoeHMpOworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAg
ICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICB4LAorICAgICAgICAgICAgICAg
IG1hdGNoWzBdCisgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgIG1hdGNoWzFdCisgICAg
ICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
KyAgICAgICAgICAgICAgLyogW10gKi8wLAorICAgICAgICAgICAgICB4CisgICAgICAgICAgICBd
OworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgi
c3BsaXRfbGFzdCIpOworICB9Cit9CisKK2Z1bmN0aW9uIGluZGV4X29mKHgsIHhzKSB7CisgIHZh
ciB4JDEgPSB4OworICB2YXIgX3hzID0geHM7CisgIHZhciBfaSA9IDA7CisgIHdoaWxlKHRydWUp
IHsKKyAgICB2YXIgaSA9IF9pOworICAgIHZhciB4cyQxID0gX3hzOworICAgIGlmICh4cyQxKSB7
CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbCh4JDEsIHhzJDFbMF0pKSB7CisgICAgICAg
IHJldHVybiAvKiBTb21lICovW2ldOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIF9p
ID0gaSArIDEgfCAwOworICAgICAgICBfeHMgPSB4cyQxWzFdOworICAgICAgICBjb250aW51ZSA7
CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBO
b25lICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGxlbmd0aCh4cykgeworICB2YXIg
X3hzID0geHM7CisgIHZhciBfbiA9IDA7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbiA9IF9u
OworICAgIHZhciB4cyQxID0gX3hzOworICAgIGlmICh4cyQxKSB7CisgICAgICBpZiAobiA8IElu
dDMyLm1heF9pbnQpIHsKKyAgICAgICAgX24gPSBuICsgMSB8IDA7CisgICAgICAgIF94cyA9IHhz
JDFbMV07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImxlbmd0aCIpOworICAgICAg
fQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBuOworICAgIH0KKyAgfTsKK30KKwor
ZnVuY3Rpb24gbnRoKF94cywgX24pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBuID0gX247
CisgICAgdmFyIHhzID0gX3hzOworICAgIGlmIChuICE9PSAwKSB7CisgICAgICBpZiAoeHMpIHsK
KyAgICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgICAgX24gPSBuIC0gMSB8IDA7CisgICAgICAg
ICAgX3hzID0geHNbMV07CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRo
KCJudGgiKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVy
biBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJudGgiKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBp
ZiAoeHMpIHsKKyAgICAgIHJldHVybiB4c1swXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBy
ZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgibnRoIik7CisgICAgfQorICB9OworfQorCitmdW5j
dGlvbiB0YWtlJDEobiwgeHMpIHsKKyAgaWYgKG4gIT09IDApIHsKKyAgICBpZiAoeHMpIHsKKyAg
ICAgIGlmIChuID4gMCkgeworICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgeHNbMF0sCisgICAgICAgICAgICAgICAgdGFrZSQxKG4gLSAxIHwgMCwgeHNbMV0pCisgICAg
ICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFBlcnZh
c2l2ZXMuZmFpbHdpdGgoInRha2UiKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgidGFrZSIpOworICAgIH0KKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGRyb3AkMShfbiwg
X3hzKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgeHMgPSBfeHM7CisgICAgdmFyIG4gPSBf
bjsKKyAgICBpZiAobiAhPT0gMCkgeworICAgICAgaWYgKHhzKSB7CisgICAgICAgIGlmIChuID4g
MCkgeworICAgICAgICAgIF94cyA9IHhzWzFdOworICAgICAgICAgIF9uID0gbiAtIDEgfCAwOwor
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgiZHJvcCIpOworICAgICAg
ICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFp
bHdpdGgoImRyb3AiKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
eHM7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBtYWtlJDEobiwgeCkgeworICBpZiAobiA8
IDAgfHwgQ2FtbF9pbnQ2NC5ndChDYW1sX2ludDY0Lm9mX2ludDMyKG4pLCBDYW1sX2ludDY0Lm9m
X2ludDMyKFBlcnZhc2l2ZXMubWF4X2ludCkpKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkFycmF5
MzIubWFrZSIKKyAgICAgICAgXTsKKyAgfQorICByZXR1cm4gQ2FtbF9hcnJheS5jYW1sX21ha2Vf
dmVjdChuLCB4KTsKK30KKworZnVuY3Rpb24gbGVuZ3RoJDEoYSkgeworICByZXR1cm4gYS5sZW5n
dGg7Cit9CisKK2Z1bmN0aW9uIGluZGV4X29mX2ludDMyKGkpIHsKKyAgaWYgKGkgPCAwIHx8IENh
bWxfaW50NjQuZ3QoQ2FtbF9pbnQ2NC5vZl9pbnQzMihpKSwgQ2FtbF9pbnQ2NC5vZl9pbnQzMihQ
ZXJ2YXNpdmVzLm1heF9pbnQpKSkgeworICAgIHJldHVybiAtMTsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gaTsKKyAgfQorfQorCitmdW5jdGlvbiBnZXQoYSwgaSkgeworICByZXR1cm4gYVtp
bmRleF9vZl9pbnQzMihpKV07Cit9CisKK2Z1bmN0aW9uIHNldChhLCBpLCB4KSB7CisgIGFbaW5k
ZXhfb2ZfaW50MzIoaSldID0geDsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24g
YmxpdChhMSwgaTEsIGEyLCBpMiwgbikgeworICByZXR1cm4gJCRBcnJheS5ibGl0KGExLCBpbmRl
eF9vZl9pbnQzMihpMSksIGEyLCBpbmRleF9vZl9pbnQzMihpMiksIGluZGV4X29mX2ludDMyKG4p
KTsKK30KKworZnVuY3Rpb24gY3JlYXRlKGtpbmQsIGxheW91dCwgbikgeworICBpZiAoQ2FtbF9p
bnQ2NC5sdChuLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAg
LyogbG8gKi8wCisgICAgICAgIF0pIHx8IENhbWxfaW50NjQuZ3QobiwgQ2FtbF9pbnQ2NC5vZl9p
bnQzMihQZXJ2YXNpdmVzLm1heF9pbnQpKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJCaWdhcnJh
eS5BcnJheTFfNjQuY3JlYXRlIgorICAgICAgICBdOworICB9CisgIHJldHVybiBDdXJyeS5fMyhC
aWdhcnJheS5BcnJheTFbLyogY3JlYXRlICovMF0sIGtpbmQsIGxheW91dCwgblsxXSB8IDApOwor
fQorCitmdW5jdGlvbiBkaW0oKSB7CisgIHJldHVybiBDYW1sX2ludDY0Lm9mX2ludDMyKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9kaW1fMSBub3QgaW1wbGVt
ZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICAgICAgfSgpKTsKK30KKwor
ZnVuY3Rpb24gZ2V0JDEoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB0aHJvdyAiY2FtbF9iYV9nZXRfMSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0
IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHNldCQxKF8sIF8kMSwgXyQy
KSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9z
ZXRfMSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9
KCk7Cit9CisKK2Z1bmN0aW9uIHN1YihfLCBfJDEsIF8kMikgeworICByZXR1cm4gZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfYmFfc3ViIG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gZ2V0JDIo
bywgeCkgeworICBpZiAobykgeworICAgIHJldHVybiBvWzBdOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiB4OworICB9Cit9CisKK2Z1bmN0aW9uIG1hcChmLCBwYXJhbSkgeworICBpZiAocGFy
YW0pIHsKKyAgICByZXR1cm4gLyogU29tZSAqL1tDdXJyeS5fMShmLCBwYXJhbVswXSldOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiAvKiBOb25lICovMDsKKyAgfQorfQorCitmdW5jdGlvbiBh
cHAoZiwgcGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKGYsIHBh
cmFtWzBdKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9Cit9CisK
K3ZhciBPcHRpb24gPSAvKiBtb2R1bGUgKi9bCisgIC8qIGdldCAqL2dldCQyLAorICAvKiBtYXAg
Ki9tYXAsCisgIC8qIGFwcCAqL2FwcAorXTsKKworZnVuY3Rpb24gbG9nMihuKSB7CisgIGlmIChu
IDw9IDApIHsKKyAgICBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJsb2cyIik7CisgIH0KKyAgdmFyIF9h
Y2MgPSAwOworICB2YXIgX24gPSBuOworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG4kMSA9IF9u
OworICAgIHZhciBhY2MgPSBfYWNjOworICAgIGlmIChuJDEgPT09IDEpIHsKKyAgICAgIHJldHVy
biBhY2M7CisgICAgfQorICAgIGVsc2UgeworICAgICAgX24gPSAobiQxID4+PiAxKTsKKyAgICAg
IF9hY2MgPSBhY2MgKyAxIHwgMDsKKyAgICAgIGNvbnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAg
fTsKK30KKworZnVuY3Rpb24gaXNfcG93ZXJfb2ZfdHdvKG4pIHsKKyAgaWYgKG4gPCAwKSB7Cisg
ICAgUGVydmFzaXZlcy5mYWlsd2l0aCgiaXNfcG93ZXJfb2ZfdHdvIik7CisgIH0KKyAgaWYgKG4g
IT09IDApIHsKKyAgICByZXR1cm4gKygobiAmIChuIC0gMSB8IDApKSA9PT0gMCk7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgfQorfQorCit2YXIgSW50ID0gLyog
bW9kdWxlICovWworICAvKiBsb2cyICovbG9nMiwKKyAgLyogaXNfcG93ZXJfb2ZfdHdvICovaXNf
cG93ZXJfb2ZfdHdvCitdOworCitmdW5jdGlvbiBicmVha3VwKHMsIG4pIHsKKyAgdmFyIGxvb3Ag
PSBmdW5jdGlvbiAoaSkgeworICAgIHZhciBsZW4gPSBQZXJ2YXNpdmVzLm1pbihuLCBzLmxlbmd0
aCAtIGkgfCAwKTsKKyAgICBpZiAobGVuKSB7CisgICAgICByZXR1cm4gLyogOjogKi9bCisgICAg
ICAgICAgICAgICQkU3RyaW5nLnN1YihzLCBpLCBsZW4pLAorICAgICAgICAgICAgICBsb29wKGkg
KyBsZW4gfCAwKQorICAgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gLyogW10gKi8wOworICAgIH0KKyAgfTsKKyAgcmV0dXJuIGxvb3AoMCk7Cit9CisKK3ZhciAk
JFN0cmluZyQxID0gLyogbW9kdWxlICovWy8qIGJyZWFrdXAgKi9icmVha3VwXTsKKwordmFyIExp
c3QgPSBbCisgIG1ha2UsCisgIHRhYmxlLAorICB0YWtlLAorICBkcm9wLAorICBsYXN0LAorICBz
cGxpdF9sYXN0LAorICBpbmRleF9vZgorXTsKKwordmFyIExpc3QzMiA9IFsKKyAgbGVuZ3RoLAor
ICBudGgsCisgIHRha2UkMSwKKyAgZHJvcCQxCitdOworCit2YXIgQXJyYXkzMiA9IFsKKyAgbWFr
ZSQxLAorICBsZW5ndGgkMSwKKyAgZ2V0LAorICBzZXQsCisgIGJsaXQKK107CisKK3ZhciBCaWdh
cnJheSQxID0gW1sKKyAgICBjcmVhdGUsCisgICAgZGltLAorICAgIGdldCQxLAorICAgIHNldCQx
LAorICAgIHN1YgorICBdXTsKKworZXhwb3J0cy5GdW4gICAgICA9IEZ1bjsKK2V4cG9ydHMuTGlz
dCAgICAgPSBMaXN0OworZXhwb3J0cy5MaXN0MzIgICA9IExpc3QzMjsKK2V4cG9ydHMuQXJyYXkz
MiAgPSBBcnJheTMyOworZXhwb3J0cy5CaWdhcnJheSA9IEJpZ2FycmF5JDE7CitleHBvcnRzLk9w
dGlvbiAgID0gT3B0aW9uOworZXhwb3J0cy5JbnQgICAgICA9IEludDsKK2V4cG9ydHMuJCRTdHJp
bmcgPSAkJFN0cmluZyQxOworLyogQmlnYXJyYXkgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8v
Ly8vIGVuZCBvZiBsaWIuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsK
KworCisgIF9yZWdpc3RyeVsnbGlzdCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0
cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgbGlzdC5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3Qn
OworCit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2
YXIgQ2FtbF9vYmogICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfb2JqIik7Cit2YXIg
UGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMiKTsKKworZnVuY3Rpb24gbGVuZ3RoKGwpIHsKKyAgdmFyIF9sZW4gPSAwOworICB2YXIgX3Bh
cmFtID0gbDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICB2
YXIgbGVuID0gX2xlbjsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIF9wYXJhbSA9IHBhcmFtWzFd
OworICAgICAgX2xlbiA9IGxlbiArIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGxlbjsKKyAgICB9CisgIH07Cit9CisKK2Z1
bmN0aW9uIGhkKHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHJldHVybiBwYXJhbVswXTsK
KyAgfQorICBlbHNlIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuZmFpbHVyZSwKKyAgICAgICAgICAiaGQiCisgICAgICAgIF07CisgIH0KK30KKworZnVu
Y3Rpb24gdGwocGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuIHBhcmFtWzFdOwor
ICB9CisgIGVsc2UgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5mYWlsdXJlLAorICAgICAgICAgICJ0bCIKKyAgICAgICAgXTsKKyAgfQorfQorCitmdW5j
dGlvbiBudGgobCwgbikgeworICBpZiAobiA8IDApIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiTGlz
dC5udGgiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIF9sID0gbDsKKyAgICB2
YXIgX24gPSBuOworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBuJDEgPSBfbjsKKyAgICAg
IHZhciBsJDEgPSBfbDsKKyAgICAgIGlmIChsJDEpIHsKKyAgICAgICAgaWYgKG4kMSkgeworICAg
ICAgICAgIF9uID0gbiQxIC0gMSB8IDA7CisgICAgICAgICAgX2wgPSBsJDFbMV07CisgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIHJldHVybiBsJDFbMF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZh
aWx1cmUsCisgICAgICAgICAgICAgICJudGgiCisgICAgICAgICAgICBdOworICAgICAgfQorICAg
IH07CisgIH0KK30KKworZnVuY3Rpb24gcmV2X2FwcGVuZChfbDEsIF9sMikgeworICB3aGlsZSh0
cnVlKSB7CisgICAgdmFyIGwyID0gX2wyOworICAgIHZhciBsMSA9IF9sMTsKKyAgICBpZiAobDEp
IHsKKyAgICAgIF9sMiA9IC8qIDo6ICovWworICAgICAgICBsMVswXSwKKyAgICAgICAgbDIKKyAg
ICAgIF07CisgICAgICBfbDEgPSBsMVsxXTsKKyAgICAgIGNvbnRpbnVlIDsKKyAgICAgIAorICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBsMjsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0
aW9uIHJldihsKSB7CisgIHJldHVybiByZXZfYXBwZW5kKGwsIC8qIFtdICovMCk7Cit9CisKK2Z1
bmN0aW9uIGZsYXR0ZW4ocGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuIFBlcnZh
c2l2ZXMuJGF0KHBhcmFtWzBdLCBmbGF0dGVuKHBhcmFtWzFdKSk7CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIC8qIFtdICovMDsKKyAgfQorfQorCitmdW5jdGlvbiBtYXAoZiwgcGFyYW0pIHsK
KyAgaWYgKHBhcmFtKSB7CisgICAgdmFyIHIgPSBDdXJyeS5fMShmLCBwYXJhbVswXSk7CisgICAg
cmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgciwKKyAgICAgICAgICAgIG1hcChmLCBwYXJh
bVsxXSkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7
CisgIH0KK30KKworZnVuY3Rpb24gbWFwaShpLCBmLCBwYXJhbSkgeworICBpZiAocGFyYW0pIHsK
KyAgICB2YXIgciA9IEN1cnJ5Ll8yKGYsIGksIHBhcmFtWzBdKTsKKyAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICByLAorICAgICAgICAgICAgbWFwaShpICsgMSB8IDAsIGYsIHBhcmFt
WzFdKQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIFtdICovMDsK
KyAgfQorfQorCitmdW5jdGlvbiBtYXBpJDEoZiwgbCkgeworICByZXR1cm4gbWFwaSgwLCBmLCBs
KTsKK30KKworZnVuY3Rpb24gcmV2X21hcChmLCBsKSB7CisgIHZhciBfYWNjdSA9IC8qIFtdICov
MDsKKyAgdmFyIF9wYXJhbSA9IGw7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBf
cGFyYW07CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIF9w
YXJhbSA9IHBhcmFtWzFdOworICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKKyAgICAgICAgQ3Vycnku
XzEoZiwgcGFyYW1bMF0pLAorICAgICAgICBhY2N1CisgICAgICBdOworICAgICAgY29udGludWUg
OworICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGFjY3U7CisgICAgfQor
ICB9OworfQorCitmdW5jdGlvbiBpdGVyKGYsIF9wYXJhbSkgeworICB3aGlsZSh0cnVlKSB7Cisg
ICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgQ3VycnkuXzEo
ZiwgcGFyYW1bMF0pOworICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICBjb250aW51ZSA7
CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAg
IH0KKyAgfTsKK30KKworZnVuY3Rpb24gaXRlcmkoZiwgbCkgeworICB2YXIgX2kgPSAwOworICB2
YXIgZiQxID0gZjsKKyAgdmFyIF9wYXJhbSA9IGw7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIg
cGFyYW0gPSBfcGFyYW07CisgICAgdmFyIGkgPSBfaTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAg
IEN1cnJ5Ll8yKGYkMSwgaSwgcGFyYW1bMF0pOworICAgICAgX3BhcmFtID0gcGFyYW1bMV07Cisg
ICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgIGNvbnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICB9OworfQorCitmdW5j
dGlvbiBmb2xkX2xlZnQoZiwgX2FjY3UsIF9sKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIg
bCA9IF9sOworICAgIHZhciBhY2N1ID0gX2FjY3U7CisgICAgaWYgKGwpIHsKKyAgICAgIF9sID0g
bFsxXTsKKyAgICAgIF9hY2N1ID0gQ3VycnkuXzIoZiwgYWNjdSwgbFswXSk7CisgICAgICBjb250
aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gYWNjdTsKKyAg
ICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZvbGRfcmlnaHQoZiwgbCwgYWNjdSkgeworICBpZiAo
bCkgeworICAgIHJldHVybiBDdXJyeS5fMihmLCBsWzBdLCBmb2xkX3JpZ2h0KGYsIGxbMV0sIGFj
Y3UpKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYWNjdTsKKyAgfQorfQorCitmdW5jdGlv
biBtYXAyKGYsIGwxLCBsMikgeworICBpZiAobDEpIHsKKyAgICBpZiAobDIpIHsKKyAgICAgIHZh
ciByID0gQ3VycnkuXzIoZiwgbDFbMF0sIGwyWzBdKTsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgciwKKyAgICAgICAgICAgICAgbWFwMihmLCBsMVsxXSwgbDJbMV0pCisg
ICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAg
ICAiTGlzdC5tYXAyIgorICAgICAgICAgIF07CisgICAgfQorICB9CisgIGVsc2UgaWYgKGwyKSB7
CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRf
YXJndW1lbnQsCisgICAgICAgICAgIkxpc3QubWFwMiIKKyAgICAgICAgXTsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHJldl9tYXAyKGYs
IGwxLCBsMikgeworICB2YXIgX2FjY3UgPSAvKiBbXSAqLzA7CisgIHZhciBfbDEgPSBsMTsKKyAg
dmFyIF9sMiA9IGwyOworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGwyJDEgPSBfbDI7CisgICAg
dmFyIGwxJDEgPSBfbDE7CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAobDEkMSkgewor
ICAgICAgaWYgKGwyJDEpIHsKKyAgICAgICAgX2wyID0gbDIkMVsxXTsKKyAgICAgICAgX2wxID0g
bDEkMVsxXTsKKyAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKKyAgICAgICAgICBDdXJyeS5fMihm
LCBsMSQxWzBdLCBsMiQxWzBdKSwKKyAgICAgICAgICBhY2N1CisgICAgICAgIF07CisgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhy
b3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3Vt
ZW50LAorICAgICAgICAgICAgICAiTGlzdC5yZXZfbWFwMiIKKyAgICAgICAgICAgIF07CisgICAg
ICB9CisgICAgfQorICAgIGVsc2UgaWYgKGwyJDEpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAg
ICAiTGlzdC5yZXZfbWFwMiIKKyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHJldHVybiBhY2N1OworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gaXRlcjIoZiwgX2wxLCBf
bDIpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsMiA9IF9sMjsKKyAgICB2YXIgbDEgPSBf
bDE7CisgICAgaWYgKGwxKSB7CisgICAgICBpZiAobDIpIHsKKyAgICAgICAgQ3VycnkuXzIoZiwg
bDFbMF0sIGwyWzBdKTsKKyAgICAgICAgX2wyID0gbDJbMV07CisgICAgICAgIF9sMSA9IGwxWzFd
OworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52
YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAgIkxpc3QuaXRlcjIiCisgICAgICAgICAgICBd
OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChsMikgeworICAgICAgdGhyb3cgWworICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAg
ICAgICAgICJMaXN0Lml0ZXIyIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZvbGRfbGVm
dDIoZiwgX2FjY3UsIF9sMSwgX2wyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbDIgPSBf
bDI7CisgICAgdmFyIGwxID0gX2wxOworICAgIHZhciBhY2N1ID0gX2FjY3U7CisgICAgaWYgKGwx
KSB7CisgICAgICBpZiAobDIpIHsKKyAgICAgICAgX2wyID0gbDJbMV07CisgICAgICAgIF9sMSA9
IGwxWzFdOworICAgICAgICBfYWNjdSA9IEN1cnJ5Ll8zKGYsIGFjY3UsIGwxWzBdLCBsMlswXSk7
CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZh
bGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAiTGlzdC5mb2xkX2xlZnQyIgorICAgICAgICAg
ICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobDIpIHsKKyAgICAgIHRocm93IFsK
KyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisg
ICAgICAgICAgICAiTGlzdC5mb2xkX2xlZnQyIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIGFjY3U7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBmb2xk
X3JpZ2h0MihmLCBsMSwgbDIsIGFjY3UpIHsKKyAgaWYgKGwxKSB7CisgICAgaWYgKGwyKSB7Cisg
ICAgICByZXR1cm4gQ3VycnkuXzMoZiwgbDFbMF0sIGwyWzBdLCBmb2xkX3JpZ2h0MihmLCBsMVsx
XSwgbDJbMV0sIGFjY3UpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAg
ICAgICAgIkxpc3QuZm9sZF9yaWdodDIiCisgICAgICAgICAgXTsKKyAgICB9CisgIH0KKyAgZWxz
ZSBpZiAobDIpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiTGlzdC5mb2xkX3JpZ2h0MiIKKyAgICAg
ICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYWNjdTsKKyAgfQorfQorCitmdW5jdGlv
biBmb3JfYWxsKHAsIF9wYXJhbSkgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0g
X3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgaWYgKEN1cnJ5Ll8xKHAsIHBhcmFtWzBd
KSkgeworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8w
OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0cnVlICovMTsK
KyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGV4aXN0cyhwLCBfcGFyYW0pIHsKKyAgd2hpbGUo
dHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAg
IGlmIChDdXJyeS5fMShwLCBwYXJhbVswXSkpIHsKKyAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8x
OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBmb3Jf
YWxsMihwLCBfbDEsIF9sMikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGwyID0gX2wyOwor
ICAgIHZhciBsMSA9IF9sMTsKKyAgICBpZiAobDEpIHsKKyAgICAgIGlmIChsMikgeworICAgICAg
ICBpZiAoQ3VycnkuXzIocCwgbDFbMF0sIGwyWzBdKSkgeworICAgICAgICAgIF9sMiA9IGwyWzFd
OworICAgICAgICAgIF9sMSA9IGwxWzFdOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyogZmFsc2Ug
Ki8wOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWwor
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAor
ICAgICAgICAgICAgICAiTGlzdC5mb3JfYWxsMiIKKyAgICAgICAgICAgIF07CisgICAgICB9Cisg
ICAgfQorICAgIGVsc2UgaWYgKGwyKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgIkxpc3Qu
Zm9yX2FsbDIiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
LyogdHJ1ZSAqLzE7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBleGlzdHMyKHAsIF9sMSwg
X2wyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbDIgPSBfbDI7CisgICAgdmFyIGwxID0g
X2wxOworICAgIGlmIChsMSkgeworICAgICAgaWYgKGwyKSB7CisgICAgICAgIGlmIChDdXJyeS5f
MihwLCBsMVswXSwgbDJbMF0pKSB7CisgICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIF9sMiA9IGwyWzFdOworICAgICAgICAg
IF9sMSA9IGwxWzFdOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAg
fQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAg
Ikxpc3QuZXhpc3RzMiIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfQorICAgIGVsc2Ug
aWYgKGwyKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgIkxpc3QuZXhpc3RzMiIKKyAgICAg
ICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7Cisg
ICAgfQorICB9OworfQorCitmdW5jdGlvbiBtZW0oeCwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUp
IHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgaWYgKHBhcmFtKSB7CisgICAgICBpZiAo
Q2FtbF9vYmouY2FtbF9jb21wYXJlKHBhcmFtWzBdLCB4KSkgeworICAgICAgICBfcGFyYW0gPSBw
YXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICB9CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0
aW9uIG1lbXEoeCwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBf
cGFyYW07CisgICAgaWYgKHBhcmFtKSB7CisgICAgICBpZiAocGFyYW1bMF0gPT09IHgpIHsKKyAg
ICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAg
fQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAgfQor
ICB9OworfQorCitmdW5jdGlvbiBhc3NvYyh4LCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgewor
ICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciBtYXRj
aCA9IHBhcmFtWzBdOworICAgICAgaWYgKENhbWxfb2JqLmNhbWxfY29tcGFyZShtYXRjaFswXSwg
eCkpIHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG1hdGNoWzFdOwor
ICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLm5vdF9mb3VuZDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGFzc3EoeCwgX3Bh
cmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgaWYg
KHBhcmFtKSB7CisgICAgICB2YXIgbWF0Y2ggPSBwYXJhbVswXTsKKyAgICAgIGlmIChtYXRjaFsw
XSA9PT0geCkgeworICAgICAgICByZXR1cm4gbWF0Y2hbMV07CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gbWVtX2Fz
c29jKHgsIF9wYXJhbSkgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFt
OworICAgIGlmIChwYXJhbSkgeworICAgICAgaWYgKENhbWxfb2JqLmNhbWxfY29tcGFyZShwYXJh
bVswXVswXSwgeCkpIHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8q
IHRydWUgKi8xOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBm
YWxzZSAqLzA7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBtZW1fYXNzcSh4LCBfcGFyYW0p
IHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFy
YW0pIHsKKyAgICAgIGlmIChwYXJhbVswXVswXSA9PT0geCkgeworICAgICAgICByZXR1cm4gLyog
dHJ1ZSAqLzE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1b
MV07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0
aW9uIHJlbW92ZV9hc3NvYyh4LCBwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICB2YXIgbCA9
IHBhcmFtWzFdOworICAgIHZhciBwYWlyID0gcGFyYW1bMF07CisgICAgaWYgKENhbWxfb2JqLmNh
bWxfY29tcGFyZShwYWlyWzBdLCB4KSkgeworICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAg
ICAgICAgICBwYWlyLAorICAgICAgICAgICAgICByZW1vdmVfYXNzb2MoeCwgbCkKKyAgICAgICAg
ICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGw7CisgICAgfQorICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gcmVtb3Zl
X2Fzc3EoeCwgcGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgdmFyIGwgPSBwYXJhbVsxXTsK
KyAgICB2YXIgcGFpciA9IHBhcmFtWzBdOworICAgIGlmIChwYWlyWzBdID09PSB4KSB7CisgICAg
ICByZXR1cm4gbDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogOjogKi9bCisg
ICAgICAgICAgICAgIHBhaXIsCisgICAgICAgICAgICAgIHJlbW92ZV9hc3NxKHgsIGwpCisgICAg
ICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8wOwor
ICB9Cit9CisKK2Z1bmN0aW9uIGZpbmQocCwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAg
ICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgaWYgKHBhcmFtKSB7CisgICAgICB2YXIgeCA9IHBh
cmFtWzBdOworICAgICAgaWYgKEN1cnJ5Ll8xKHAsIHgpKSB7CisgICAgICAgIHJldHVybiB4Owor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAgICB9CisgIH07Cit9
CisKK2Z1bmN0aW9uIGZpbmRfYWxsKHApIHsKKyAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgewor
ICAgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgICB2YXIgX3BhcmFtID0gcGFyYW07CisgICAg
d2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtJDEgPSBfcGFyYW07CisgICAgICB2YXIgYWNj
dSA9IF9hY2N1OworICAgICAgaWYgKHBhcmFtJDEpIHsKKyAgICAgICAgdmFyIGwgPSBwYXJhbSQx
WzFdOworICAgICAgICB2YXIgeCA9IHBhcmFtJDFbMF07CisgICAgICAgIGlmIChDdXJyeS5fMShw
LCB4KSkgeworICAgICAgICAgIF9wYXJhbSA9IGw7CisgICAgICAgICAgX2FjY3UgPSAvKiA6OiAq
L1sKKyAgICAgICAgICAgIHgsCisgICAgICAgICAgICBhY2N1CisgICAgICAgICAgXTsKKyAgICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgX3BhcmFtID0gbDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gcmV2X2FwcGVu
ZChhY2N1LCAvKiBbXSAqLzApOworICAgICAgfQorICAgIH07CisgIH07Cit9CisKK2Z1bmN0aW9u
IHBhcnRpdGlvbihwLCBsKSB7CisgIHZhciBfeWVzID0gLyogW10gKi8wOworICB2YXIgX25vID0g
LyogW10gKi8wOworICB2YXIgX3BhcmFtID0gbDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBw
YXJhbSA9IF9wYXJhbTsKKyAgICB2YXIgbm8gPSBfbm87CisgICAgdmFyIHllcyA9IF95ZXM7Cisg
ICAgaWYgKHBhcmFtKSB7CisgICAgICB2YXIgbCQxID0gcGFyYW1bMV07CisgICAgICB2YXIgeCA9
IHBhcmFtWzBdOworICAgICAgaWYgKEN1cnJ5Ll8xKHAsIHgpKSB7CisgICAgICAgIF9wYXJhbSA9
IGwkMTsKKyAgICAgICAgX3llcyA9IC8qIDo6ICovWworICAgICAgICAgIHgsCisgICAgICAgICAg
eWVzCisgICAgICAgIF07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gbCQxOworICAgICAgICBfbm8gPSAvKiA6OiAq
L1sKKyAgICAgICAgICB4LAorICAgICAgICAgIG5vCisgICAgICAgIF07CisgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJu
IC8qIHR1cGxlICovWworICAgICAgICAgICAgICByZXZfYXBwZW5kKHllcywgLyogW10gKi8wKSwK
KyAgICAgICAgICAgICAgcmV2X2FwcGVuZChubywgLyogW10gKi8wKQorICAgICAgICAgICAgXTsK
KyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHNwbGl0KHBhcmFtKSB7CisgIGlmIChwYXJhbSkg
eworICAgIHZhciBtYXRjaCA9IHBhcmFtWzBdOworICAgIHZhciBtYXRjaCQxID0gc3BsaXQocGFy
YW1bMV0pOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgICAgICAgbWF0Y2gkMVswXQorICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICBtYXRjaFsxXSwK
KyAgICAgICAgICAgICAgbWF0Y2gkMVsxXQorICAgICAgICAgICAgXQorICAgICAgICAgIF07Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgLyogW10g
Ki8wLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5j
dGlvbiBjb21iaW5lKGwxLCBsMikgeworICBpZiAobDEpIHsKKyAgICBpZiAobDIpIHsKKyAgICAg
IHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogdHVwbGUgKi9bCisgICAgICAgICAg
ICAgICAgbDFbMF0sCisgICAgICAgICAgICAgICAgbDJbMF0KKyAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgY29tYmluZShsMVsxXSwgbDJbMV0pCisgICAgICAgICAgICBdOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTGlzdC5jb21iaW5lIgorICAg
ICAgICAgIF07CisgICAgfQorICB9CisgIGVsc2UgaWYgKGwyKSB7CisgICAgdGhyb3cgWworICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAg
ICAgIkxpc3QuY29tYmluZSIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
LyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIG1lcmdlKGNtcCwgbDEsIGwyKSB7CisgIGlm
IChsMSkgeworICAgIGlmIChsMikgeworICAgICAgdmFyIGgyID0gbDJbMF07CisgICAgICB2YXIg
aDEgPSBsMVswXTsKKyAgICAgIGlmIChDdXJyeS5fMihjbXAsIGgxLCBoMikgPD0gMCkgeworICAg
ICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAg
ICAgbWVyZ2UoY21wLCBsMVsxXSwgbDIpCisgICAgICAgICAgICAgIF07CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgIGgyLAor
ICAgICAgICAgICAgICAgIG1lcmdlKGNtcCwgbDEsIGwyWzFdKQorICAgICAgICAgICAgICBdOwor
ICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBsMTsKKyAgICB9CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuIGwyOworICB9Cit9CisKK2Z1bmN0aW9uIGNob3AoX2ssIF9s
KSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbCA9IF9sOworICAgIHZhciBrID0gX2s7Cisg
ICAgaWYgKGspIHsKKyAgICAgIGlmIChsKSB7CisgICAgICAgIF9sID0gbFsxXTsKKyAgICAgICAg
X2sgPSBrIC0gMSB8IDA7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICJsaXN0Lm1sIiwKKyAgICAgICAgICAgICAgICAyMjMsCisgICAgICAgICAgICAgICAgMTEK
KyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gbDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHN0YWJsZV9z
b3J0KGNtcCwgbCkgeworICB2YXIgc29ydCA9IGZ1bmN0aW9uIChuLCBsKSB7CisgICAgdmFyIGV4
aXQgPSAwOworICAgIGlmIChuICE9PSAyKSB7CisgICAgICBpZiAobiAhPT0gMykgeworICAgICAg
ICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGwpIHsKKyAgICAgICAgdmFyIG1h
dGNoID0gbFsxXTsKKyAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAgdmFyIG1hdGNoJDEg
PSBtYXRjaFsxXTsKKyAgICAgICAgICBpZiAobWF0Y2gkMSkgeworICAgICAgICAgICAgdmFyIHgz
ID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICAgIHZhciB4MiA9IG1hdGNoWzBdOworICAgICAgICAg
ICAgdmFyIHgxID0gbFswXTsKKyAgICAgICAgICAgIGlmIChDdXJyeS5fMihjbXAsIHgxLCB4Mikg
PD0gMCkgeworICAgICAgICAgICAgICBpZiAoQ3VycnkuXzIoY21wLCB4MiwgeDMpIDw9IDApIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIGVsc2UgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEsIHgzKSA8PSAwKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChDdXJyeS5fMihjbXAsIHgx
LCB4MykgPD0gMCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MiwgeDMpIDw9IDApIHsKKyAgICAgICAgICAgICAgcmV0
dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAg
ICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICByZXR1cm4gLyog
OjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV4aXQgPSAx
OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBleGl0
ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAx
OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChsKSB7CisgICAgICB2YXIgbWF0Y2gkMiA9
IGxbMV07CisgICAgICBpZiAobWF0Y2gkMikgeworICAgICAgICB2YXIgeDIkMSA9IG1hdGNoJDJb
MF07CisgICAgICAgIHZhciB4MSQxID0gbFswXTsKKyAgICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwg
eDEkMSwgeDIkMSkgPD0gMCkgeworICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICAgIHgxJDEsCisgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgeDIkMSwKKyAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICB4MiQxLAorICAg
ICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgIHgxJDEsCisgICAg
ICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBleGl0
ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBleGl0ID0gMTsKKyAgICB9
CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIHZhciBuMSA9IChuID4+IDEpOworICAgICAg
dmFyIG4yID0gbiAtIG4xIHwgMDsKKyAgICAgIHZhciBsMiA9IGNob3AobjEsIGwpOworICAgICAg
dmFyIHMxID0gcmV2X3NvcnQobjEsIGwpOworICAgICAgdmFyIHMyID0gcmV2X3NvcnQobjIsIGwy
KTsKKyAgICAgIHZhciBfbDEgPSBzMTsKKyAgICAgIHZhciBfbDIgPSBzMjsKKyAgICAgIHZhciBf
YWNjdSA9IC8qIFtdICovMDsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFyIGFjY3Ug
PSBfYWNjdTsKKyAgICAgICAgdmFyIGwyJDEgPSBfbDI7CisgICAgICAgIHZhciBsMSA9IF9sMTsK
KyAgICAgICAgaWYgKGwxKSB7CisgICAgICAgICAgaWYgKGwyJDEpIHsKKyAgICAgICAgICAgIHZh
ciBoMiA9IGwyJDFbMF07CisgICAgICAgICAgICB2YXIgaDEgPSBsMVswXTsKKyAgICAgICAgICAg
IGlmIChDdXJyeS5fMihjbXAsIGgxLCBoMikgPiAwKSB7CisgICAgICAgICAgICAgIF9hY2N1ID0g
LyogOjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAgICAgYWNjdQorICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgICBfbDEgPSBsMVsxXTsKKyAgICAgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgICAgICAgIGgy
LAorICAgICAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAg
X2wyID0gbDIkMVsxXTsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICByZXR1cm4gcmV2X2FwcGVuZChsMSwgYWNjdSk7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiByZXZfYXBwZW5kKGwyJDEsIGFjY3UpOwor
ICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAgICAKKyAgfTsKKyAgdmFyIHJldl9zb3J0ID0g
ZnVuY3Rpb24gKG4sIGwpIHsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKG4gIT09IDIpIHsK
KyAgICAgIGlmIChuICE9PSAzKSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgICAg
ZWxzZSBpZiAobCkgeworICAgICAgICB2YXIgbWF0Y2ggPSBsWzFdOworICAgICAgICBpZiAobWF0
Y2gpIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IG1hdGNoWzFdOworICAgICAgICAgIGlmICht
YXRjaCQxKSB7CisgICAgICAgICAgICB2YXIgeDMgPSBtYXRjaCQxWzBdOworICAgICAgICAgICAg
dmFyIHgyID0gbWF0Y2hbMF07CisgICAgICAgICAgICB2YXIgeDEgPSBsWzBdOworICAgICAgICAg
ICAgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEsIHgyKSA+IDApIHsKKyAgICAgICAgICAgICAgaWYgKEN1
cnJ5Ll8yKGNtcCwgeDIsIHgzKSA+IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICBdOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgaWYgKEN1cnJ5Ll8yKGNt
cCwgeDEsIHgzKSA+IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICov
WworICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVy
biAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEsIHgzKSA+IDApIHsKKyAgICAgICAgICAgICAgcmV0
dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAg
ICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKEN1cnJ5Ll8yKGNtcCwgeDIsIHgzKSA+
IDApIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
ICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgeDMs
CisgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChs
KSB7CisgICAgICB2YXIgbWF0Y2gkMiA9IGxbMV07CisgICAgICBpZiAobWF0Y2gkMikgeworICAg
ICAgICB2YXIgeDIkMSA9IG1hdGNoJDJbMF07CisgICAgICAgIHZhciB4MSQxID0gbFswXTsKKyAg
ICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEkMSwgeDIkMSkgPiAwKSB7CisgICAgICAgICAgcmV0
dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAg
IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICB4MiQxLAorICAgICAgICAgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgIHgyJDEsCisgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIGV4aXQgPSAxOworICAgIH0KKyAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgdmFy
IG4xID0gKG4gPj4gMSk7CisgICAgICB2YXIgbjIgPSBuIC0gbjEgfCAwOworICAgICAgdmFyIGwy
ID0gY2hvcChuMSwgbCk7CisgICAgICB2YXIgczEgPSBzb3J0KG4xLCBsKTsKKyAgICAgIHZhciBz
MiA9IHNvcnQobjIsIGwyKTsKKyAgICAgIHZhciBfbDEgPSBzMTsKKyAgICAgIHZhciBfbDIgPSBz
MjsKKyAgICAgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAg
ICAgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICAgICAgdmFyIGwyJDEgPSBfbDI7CisgICAgICAg
IHZhciBsMSA9IF9sMTsKKyAgICAgICAgaWYgKGwxKSB7CisgICAgICAgICAgaWYgKGwyJDEpIHsK
KyAgICAgICAgICAgIHZhciBoMiA9IGwyJDFbMF07CisgICAgICAgICAgICB2YXIgaDEgPSBsMVsw
XTsKKyAgICAgICAgICAgIGlmIChDdXJyeS5fMihjbXAsIGgxLCBoMikgPD0gMCkgeworICAgICAg
ICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgICAgICAgIGgxLAorICAgICAgICAg
ICAgICAgIGFjY3UKKyAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgX2wxID0gbDFbMV07
CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICBoMiwKKyAgICAgICAgICAgICAgICBhY2N1CisgICAgICAgICAgICAgIF07
CisgICAgICAgICAgICAgIF9sMiA9IGwyJDFbMV07CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgcmV0dXJuIHJldl9hcHBlbmQobDEsIGFjY3UpOworICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gcmV2X2FwcGVu
ZChsMiQxLCBhY2N1KTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9CisgICAgCisgIH07Cisg
IHZhciBsZW4gPSBsZW5ndGgobCk7CisgIGlmIChsZW4gPCAyKSB7CisgICAgcmV0dXJuIGw7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHNvcnQobGVuLCBsKTsKKyAgfQorfQorCitmdW5jdGlv
biBzb3J0X3VuaXEoY21wLCBsKSB7CisgIHZhciBzb3J0ID0gZnVuY3Rpb24gKG4sIGwpIHsKKyAg
ICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKG4gIT09IDIpIHsKKyAgICAgIGlmIChuICE9PSAzKSB7
CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgICAgZWxzZSBpZiAobCkgeworICAgICAg
ICB2YXIgbWF0Y2ggPSBsWzFdOworICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICB2YXIg
bWF0Y2gkMSA9IG1hdGNoWzFdOworICAgICAgICAgIGlmIChtYXRjaCQxKSB7CisgICAgICAgICAg
ICB2YXIgeDMgPSBtYXRjaCQxWzBdOworICAgICAgICAgICAgdmFyIHgyID0gbWF0Y2hbMF07Cisg
ICAgICAgICAgICB2YXIgeDEgPSBsWzBdOworICAgICAgICAgICAgdmFyIGMgPSBDdXJyeS5fMihj
bXAsIHgxLCB4Mik7CisgICAgICAgICAgICBpZiAoYykgeworICAgICAgICAgICAgICBpZiAoYyA8
IDApIHsKKyAgICAgICAgICAgICAgICB2YXIgYyQxID0gQ3VycnkuXzIoY21wLCB4MiwgeDMpOwor
ICAgICAgICAgICAgICAgIGlmIChjJDEpIHsKKyAgICAgICAgICAgICAgICAgIGlmIChjJDEgPCAw
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGMkMiA9IEN1cnJ5Ll8yKGNtcCwg
eDEsIHgzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMkMikgeworICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjJDIgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyog
OjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIHZhciBjJDMgPSBDdXJyeS5fMihjbXAsIHgxLCB4Myk7CisgICAgICAgICAg
ICAgICAgaWYgKGMkMykgeworICAgICAgICAgICAgICAgICAgaWYgKGMkMyA8IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICB2YXIgYyQ0ID0gQ3VycnkuXzIoY21wLCB4MiwgeDMpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoYyQ0KSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYg
KGMkNCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICB2YXIgYyQ1ID0gQ3VycnkuXzIoY21wLCB4MiwgeDMpOworICAgICAgICAg
ICAgICBpZiAoYyQ1KSB7CisgICAgICAgICAgICAgICAgaWYgKGMkNSA8IDApIHsKKyAgICAgICAg
ICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
IHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAg
IGVsc2UgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAo
bCkgeworICAgICAgdmFyIG1hdGNoJDIgPSBsWzFdOworICAgICAgaWYgKG1hdGNoJDIpIHsKKyAg
ICAgICAgdmFyIHgyJDEgPSBtYXRjaCQyWzBdOworICAgICAgICB2YXIgeDEkMSA9IGxbMF07Cisg
ICAgICAgIHZhciBjJDYgPSBDdXJyeS5fMihjbXAsIHgxJDEsIHgyJDEpOworICAgICAgICBpZiAo
YyQ2KSB7CisgICAgICAgICAgaWYgKGMkNiA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgeDIkMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAgICAgICAgICAgICAgICAgIC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgICAgIHgxJDEsCisgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIHgxJDEsCisgICAgICAgICAgICAgICAgICAvKiBb
XSAqLzAKKyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAg
ZXhpdCA9IDE7CisgICAgfQorICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICB2YXIgbjEgPSAo
biA+PiAxKTsKKyAgICAgIHZhciBuMiA9IG4gLSBuMSB8IDA7CisgICAgICB2YXIgbDIgPSBjaG9w
KG4xLCBsKTsKKyAgICAgIHZhciBzMSA9IHJldl9zb3J0KG4xLCBsKTsKKyAgICAgIHZhciBzMiA9
IHJldl9zb3J0KG4yLCBsMik7CisgICAgICB2YXIgX2wxID0gczE7CisgICAgICB2YXIgX2wyID0g
czI7CisgICAgICB2YXIgX2FjY3UgPSAvKiBbXSAqLzA7CisgICAgICB3aGlsZSh0cnVlKSB7Cisg
ICAgICAgIHZhciBhY2N1ID0gX2FjY3U7CisgICAgICAgIHZhciBsMiQxID0gX2wyOworICAgICAg
ICB2YXIgbDEgPSBfbDE7CisgICAgICAgIGlmIChsMSkgeworICAgICAgICAgIGlmIChsMiQxKSB7
CisgICAgICAgICAgICB2YXIgdDIgPSBsMiQxWzFdOworICAgICAgICAgICAgdmFyIGgyID0gbDIk
MVswXTsKKyAgICAgICAgICAgIHZhciB0MSA9IGwxWzFdOworICAgICAgICAgICAgdmFyIGgxID0g
bDFbMF07CisgICAgICAgICAgICB2YXIgYyQ3ID0gQ3VycnkuXzIoY21wLCBoMSwgaDIpOworICAg
ICAgICAgICAgaWYgKGMkNykgeworICAgICAgICAgICAgICBpZiAoYyQ3ID4gMCkgeworICAgICAg
ICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBoMSwKKyAgICAg
ICAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIF9s
MSA9IHQxOworICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfYWNj
dSA9IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgaDIsCisgICAgICAgICAgICAgICAgICBh
Y2N1CisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICBfbDIgPSB0MjsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBfYWNjdSA9
IC8qIDo6ICovWworICAgICAgICAgICAgICAgIGgxLAorICAgICAgICAgICAgICAgIGFjY3UKKyAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgX2wyID0gdDI7CisgICAgICAgICAgICAgIF9s
MSA9IHQxOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVy
biByZXZfYXBwZW5kKGwxLCBhY2N1KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgcmV0dXJuIHJldl9hcHBlbmQobDIkMSwgYWNjdSk7CisgICAgICAg
IH0KKyAgICAgIH07CisgICAgfQorICAgIAorICB9OworICB2YXIgcmV2X3NvcnQgPSBmdW5jdGlv
biAobiwgbCkgeworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAobiAhPT0gMikgeworICAgICAg
aWYgKG4gIT09IDMpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIGlm
IChsKSB7CisgICAgICAgIHZhciBtYXRjaCA9IGxbMV07CisgICAgICAgIGlmIChtYXRjaCkgewor
ICAgICAgICAgIHZhciBtYXRjaCQxID0gbWF0Y2hbMV07CisgICAgICAgICAgaWYgKG1hdGNoJDEp
IHsKKyAgICAgICAgICAgIHZhciB4MyA9IG1hdGNoJDFbMF07CisgICAgICAgICAgICB2YXIgeDIg
PSBtYXRjaFswXTsKKyAgICAgICAgICAgIHZhciB4MSA9IGxbMF07CisgICAgICAgICAgICB2YXIg
YyA9IEN1cnJ5Ll8yKGNtcCwgeDEsIHgyKTsKKyAgICAgICAgICAgIGlmIChjKSB7CisgICAgICAg
ICAgICAgIGlmIChjID4gMCkgeworICAgICAgICAgICAgICAgIHZhciBjJDEgPSBDdXJyeS5fMihj
bXAsIHgyLCB4Myk7CisgICAgICAgICAgICAgICAgaWYgKGMkMSkgeworICAgICAgICAgICAgICAg
ICAgaWYgKGMkMSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB2YXIgYyQyID0g
Q3VycnkuXzIoY21wLCB4MSwgeDMpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyQyKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGMkMiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIGMkMyA9IEN1cnJ5Ll8yKGNtcCwgeDEsIHgz
KTsKKyAgICAgICAgICAgICAgICBpZiAoYyQzKSB7CisgICAgICAgICAgICAgICAgICBpZiAoYyQz
ID4gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjJDQgPSBDdXJyeS5fMihj
bXAsIHgyLCB4Myk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjJDQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYyQ0ID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
eDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHZhciBjJDUgPSBDdXJyeS5fMihjbXAsIHgyLCB4
Myk7CisgICAgICAgICAgICAgIGlmIChjJDUpIHsKKyAgICAgICAgICAgICAgICBpZiAoYyQ1ID4g
MCkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8w
CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0K
KyAgICBlbHNlIGlmIChsKSB7CisgICAgICB2YXIgbWF0Y2gkMiA9IGxbMV07CisgICAgICBpZiAo
bWF0Y2gkMikgeworICAgICAgICB2YXIgeDIkMSA9IG1hdGNoJDJbMF07CisgICAgICAgIHZhciB4
MSQxID0gbFswXTsKKyAgICAgICAgdmFyIGMkNiA9IEN1cnJ5Ll8yKGNtcCwgeDEkMSwgeDIkMSk7
CisgICAgICAgIGlmIChjJDYpIHsKKyAgICAgICAgICBpZiAoYyQ2ID4gMCkgeworICAgICAgICAg
ICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAg
ICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MiQxLAorICAgICAg
ICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgeDIkMSwKKyAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICBleGl0ID0gMTsKKyAgICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAg
ICAgIHZhciBuMSA9IChuID4+IDEpOworICAgICAgdmFyIG4yID0gbiAtIG4xIHwgMDsKKyAgICAg
IHZhciBsMiA9IGNob3AobjEsIGwpOworICAgICAgdmFyIHMxID0gc29ydChuMSwgbCk7CisgICAg
ICB2YXIgczIgPSBzb3J0KG4yLCBsMik7CisgICAgICB2YXIgX2wxID0gczE7CisgICAgICB2YXIg
X2wyID0gczI7CisgICAgICB2YXIgX2FjY3UgPSAvKiBbXSAqLzA7CisgICAgICB3aGlsZSh0cnVl
KSB7CisgICAgICAgIHZhciBhY2N1ID0gX2FjY3U7CisgICAgICAgIHZhciBsMiQxID0gX2wyOwor
ICAgICAgICB2YXIgbDEgPSBfbDE7CisgICAgICAgIGlmIChsMSkgeworICAgICAgICAgIGlmIChs
MiQxKSB7CisgICAgICAgICAgICB2YXIgdDIgPSBsMiQxWzFdOworICAgICAgICAgICAgdmFyIGgy
ID0gbDIkMVswXTsKKyAgICAgICAgICAgIHZhciB0MSA9IGwxWzFdOworICAgICAgICAgICAgdmFy
IGgxID0gbDFbMF07CisgICAgICAgICAgICB2YXIgYyQ3ID0gQ3VycnkuXzIoY21wLCBoMSwgaDIp
OworICAgICAgICAgICAgaWYgKGMkNykgeworICAgICAgICAgICAgICBpZiAoYyQ3IDwgMCkgewor
ICAgICAgICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBoMSwK
KyAgICAgICAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
ICAgIF9sMSA9IHQxOworICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgaDIsCisgICAgICAgICAgICAg
ICAgICBhY2N1CisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICBfbDIgPSB0MjsK
KyAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBf
YWNjdSA9IC8qIDo6ICovWworICAgICAgICAgICAgICAgIGgxLAorICAgICAgICAgICAgICAgIGFj
Y3UKKyAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgX2wyID0gdDI7CisgICAgICAgICAg
ICAgIF9sMSA9IHQxOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHJldHVybiByZXZfYXBwZW5kKGwxLCBhY2N1KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIHJldl9hcHBlbmQobDIkMSwgYWNjdSk7Cisg
ICAgICAgIH0KKyAgICAgIH07CisgICAgfQorICAgIAorICB9OworICB2YXIgbGVuID0gbGVuZ3Ro
KGwpOworICBpZiAobGVuIDwgMikgeworICAgIHJldHVybiBsOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiBzb3J0KGxlbiwgbCk7CisgIH0KK30KKwordmFyIGFwcGVuZCA9IFBlcnZhc2l2ZXMu
JGF0OworCit2YXIgY29uY2F0ID0gZmxhdHRlbjsKKwordmFyIGZpbHRlciA9IGZpbmRfYWxsOwor
Cit2YXIgc29ydCA9IHN0YWJsZV9zb3J0OworCit2YXIgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnQ7
CisKK2V4cG9ydHMubGVuZ3RoICAgICAgID0gbGVuZ3RoOworZXhwb3J0cy5oZCAgICAgICAgICAg
PSBoZDsKK2V4cG9ydHMudGwgICAgICAgICAgID0gdGw7CitleHBvcnRzLm50aCAgICAgICAgICA9
IG50aDsKK2V4cG9ydHMucmV2ICAgICAgICAgID0gcmV2OworZXhwb3J0cy5hcHBlbmQgICAgICAg
PSBhcHBlbmQ7CitleHBvcnRzLnJldl9hcHBlbmQgICA9IHJldl9hcHBlbmQ7CitleHBvcnRzLmNv
bmNhdCAgICAgICA9IGNvbmNhdDsKK2V4cG9ydHMuZmxhdHRlbiAgICAgID0gZmxhdHRlbjsKK2V4
cG9ydHMuaXRlciAgICAgICAgID0gaXRlcjsKK2V4cG9ydHMuaXRlcmkgICAgICAgID0gaXRlcmk7
CitleHBvcnRzLm1hcCAgICAgICAgICA9IG1hcDsKK2V4cG9ydHMubWFwaSAgICAgICAgID0gbWFw
aSQxOworZXhwb3J0cy5yZXZfbWFwICAgICAgPSByZXZfbWFwOworZXhwb3J0cy5mb2xkX2xlZnQg
ICAgPSBmb2xkX2xlZnQ7CitleHBvcnRzLmZvbGRfcmlnaHQgICA9IGZvbGRfcmlnaHQ7CitleHBv
cnRzLml0ZXIyICAgICAgICA9IGl0ZXIyOworZXhwb3J0cy5tYXAyICAgICAgICAgPSBtYXAyOwor
ZXhwb3J0cy5yZXZfbWFwMiAgICAgPSByZXZfbWFwMjsKK2V4cG9ydHMuZm9sZF9sZWZ0MiAgID0g
Zm9sZF9sZWZ0MjsKK2V4cG9ydHMuZm9sZF9yaWdodDIgID0gZm9sZF9yaWdodDI7CitleHBvcnRz
LmZvcl9hbGwgICAgICA9IGZvcl9hbGw7CitleHBvcnRzLmV4aXN0cyAgICAgICA9IGV4aXN0czsK
K2V4cG9ydHMuZm9yX2FsbDIgICAgID0gZm9yX2FsbDI7CitleHBvcnRzLmV4aXN0czIgICAgICA9
IGV4aXN0czI7CitleHBvcnRzLm1lbSAgICAgICAgICA9IG1lbTsKK2V4cG9ydHMubWVtcSAgICAg
ICAgID0gbWVtcTsKK2V4cG9ydHMuZmluZCAgICAgICAgID0gZmluZDsKK2V4cG9ydHMuZmlsdGVy
ICAgICAgID0gZmlsdGVyOworZXhwb3J0cy5maW5kX2FsbCAgICAgPSBmaW5kX2FsbDsKK2V4cG9y
dHMucGFydGl0aW9uICAgID0gcGFydGl0aW9uOworZXhwb3J0cy5hc3NvYyAgICAgICAgPSBhc3Nv
YzsKK2V4cG9ydHMuYXNzcSAgICAgICAgID0gYXNzcTsKK2V4cG9ydHMubWVtX2Fzc29jICAgID0g
bWVtX2Fzc29jOworZXhwb3J0cy5tZW1fYXNzcSAgICAgPSBtZW1fYXNzcTsKK2V4cG9ydHMucmVt
b3ZlX2Fzc29jID0gcmVtb3ZlX2Fzc29jOworZXhwb3J0cy5yZW1vdmVfYXNzcSAgPSByZW1vdmVf
YXNzcTsKK2V4cG9ydHMuc3BsaXQgICAgICAgID0gc3BsaXQ7CitleHBvcnRzLmNvbWJpbmUgICAg
ICA9IGNvbWJpbmU7CitleHBvcnRzLnNvcnQgICAgICAgICA9IHNvcnQ7CitleHBvcnRzLnN0YWJs
ZV9zb3J0ICA9IHN0YWJsZV9zb3J0OworZXhwb3J0cy5mYXN0X3NvcnQgICAgPSBmYXN0X3NvcnQ7
CitleHBvcnRzLnNvcnRfdW5pcSAgICA9IHNvcnRfdW5pcTsKK2V4cG9ydHMubWVyZ2UgICAgICAg
ID0gbWVyZ2U7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGxpc3QuanMg
Ly8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsn
bWFwJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBz
dGFydCBvZiBtYXAuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5ICAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlv
biBNYWtlKGZ1bmFyZykgeworICB2YXIgaGVpZ2h0ID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAg
aWYgKHBhcmFtKSB7CisgICAgICByZXR1cm4gcGFyYW1bNF07CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9OworICB2YXIgY3JlYXRlID0gZnVuY3Rpb24gKGws
IHgsIGQsIHIpIHsKKyAgICB2YXIgaGwgPSBoZWlnaHQobCk7CisgICAgdmFyIGhyID0gaGVpZ2h0
KHIpOworICAgIHJldHVybiAvKiBOb2RlICovWworICAgICAgICAgICAgbCwKKyAgICAgICAgICAg
IHgsCisgICAgICAgICAgICBkLAorICAgICAgICAgICAgciwKKyAgICAgICAgICAgIGhsID49IGhy
ID8gaGwgKyAxIHwgMCA6IGhyICsgMSB8IDAKKyAgICAgICAgICBdOworICB9OworICB2YXIgc2lu
Z2xldG9uID0gZnVuY3Rpb24gKHgsIGQpIHsKKyAgICByZXR1cm4gLyogTm9kZSAqL1sKKyAgICAg
ICAgICAgIC8qIEVtcHR5ICovMCwKKyAgICAgICAgICAgIHgsCisgICAgICAgICAgICBkLAorICAg
ICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAgICAgICAgMQorICAgICAgICAgIF07CisgIH07
CisgIHZhciBiYWwgPSBmdW5jdGlvbiAobCwgeCwgZCwgcikgeworICAgIHZhciBobCA9IGwgPyBs
WzRdIDogMDsKKyAgICB2YXIgaHIgPSByID8gcls0XSA6IDA7CisgICAgaWYgKGhsID4gKGhyICsg
MiB8IDApKSB7CisgICAgICBpZiAobCkgeworICAgICAgICB2YXIgbHIgPSBsWzNdOworICAgICAg
ICB2YXIgbGQgPSBsWzJdOworICAgICAgICB2YXIgbHYgPSBsWzFdOworICAgICAgICB2YXIgbGwg
PSBsWzBdOworICAgICAgICBpZiAoaGVpZ2h0KGxsKSA+PSBoZWlnaHQobHIpKSB7CisgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZShsbCwgbHYsIGxkLCBjcmVhdGUobHIsIHgsIGQsIHIpKTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIGlmIChscikgeworICAgICAgICAgIHJldHVybiBjcmVhdGUoY3Jl
YXRlKGxsLCBsdiwgbGQsIGxyWzBdKSwgbHJbMV0sIGxyWzJdLCBjcmVhdGUobHJbM10sIHgsIGQs
IHIpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAg
ICAgICAgICAgICAgICAiTWFwLmJhbCIKKyAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAgIk1hcC5i
YWwiCisgICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChociA+ICho
bCArIDIgfCAwKSkgeworICAgICAgaWYgKHIpIHsKKyAgICAgICAgdmFyIHJyID0gclszXTsKKyAg
ICAgICAgdmFyIHJkID0gclsyXTsKKyAgICAgICAgdmFyIHJ2ID0gclsxXTsKKyAgICAgICAgdmFy
IHJsID0gclswXTsKKyAgICAgICAgaWYgKGhlaWdodChycikgPj0gaGVpZ2h0KHJsKSkgeworICAg
ICAgICAgIHJldHVybiBjcmVhdGUoY3JlYXRlKGwsIHgsIGQsIHJsKSwgcnYsIHJkLCBycik7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmwpIHsKKyAgICAgICAgICByZXR1cm4gY3JlYXRl
KGNyZWF0ZShsLCB4LCBkLCBybFswXSksIHJsWzFdLCBybFsyXSwgY3JlYXRlKHJsWzNdLCBydiwg
cmQsIHJyKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdGhyb3cgWwor
ICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQs
CisgICAgICAgICAgICAgICAgIk1hcC5iYWwiCisgICAgICAgICAgICAgIF07CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAgICJN
YXAuYmFsIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gLyogTm9kZSAqL1sKKyAgICAgICAgICAgICAgbCwKKyAgICAgICAgICAgICAgeCwK
KyAgICAgICAgICAgICAgZCwKKyAgICAgICAgICAgICAgciwKKyAgICAgICAgICAgICAgaGwgPj0g
aHIgPyBobCArIDEgfCAwIDogaHIgKyAxIHwgMAorICAgICAgICAgICAgXTsKKyAgICB9CisgIH07
CisgIHZhciBpc19lbXB0eSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIGlmIChwYXJhbSkgewor
ICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gLyogdHJ1ZSAqLzE7CisgICAgfQorICB9OworICB2YXIgYWRkID0gZnVuY3Rpb24gKHgsIGRh
dGEsIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICB2YXIgciA9IHBhcmFtWzNdOwor
ICAgICAgdmFyIGQgPSBwYXJhbVsyXTsKKyAgICAgIHZhciB2ID0gcGFyYW1bMV07CisgICAgICB2
YXIgbCA9IHBhcmFtWzBdOworICAgICAgdmFyIGMgPSBDdXJyeS5fMihmdW5hcmdbLyogY29tcGFy
ZSAqLzBdLCB4LCB2KTsKKyAgICAgIGlmIChjKSB7CisgICAgICAgIGlmIChjIDwgMCkgeworICAg
ICAgICAgIHJldHVybiBiYWwoYWRkKHgsIGRhdGEsIGwpLCB2LCBkLCByKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gYmFsKGwsIHYsIGQsIGFkZCh4LCBkYXRh
LCByKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4g
LyogTm9kZSAqL1sKKyAgICAgICAgICAgICAgICBsLAorICAgICAgICAgICAgICAgIHgsCisgICAg
ICAgICAgICAgICAgZGF0YSwKKyAgICAgICAgICAgICAgICByLAorICAgICAgICAgICAgICAgIHBh
cmFtWzRdCisgICAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgcmV0dXJuIC8qIE5vZGUgKi9bCisgICAgICAgICAgICAgIC8qIEVtcHR5ICovMCwKKyAgICAg
ICAgICAgICAgeCwKKyAgICAgICAgICAgICAgZGF0YSwKKyAgICAgICAgICAgICAgLyogRW1wdHkg
Ki8wLAorICAgICAgICAgICAgICAxCisgICAgICAgICAgICBdOworICAgIH0KKyAgfTsKKyAgdmFy
IGZpbmQgPSBmdW5jdGlvbiAoeCwgX3BhcmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAg
dmFyIHBhcmFtID0gX3BhcmFtOworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIHZhciBjID0g
Q3VycnkuXzIoZnVuYXJnWy8qIGNvbXBhcmUgKi8wXSwgeCwgcGFyYW1bMV0pOworICAgICAgICBp
ZiAoYykgeworICAgICAgICAgIF9wYXJhbSA9IGMgPCAwID8gcGFyYW1bMF0gOiBwYXJhbVszXTsK
KyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgcmV0dXJuIHBhcmFtWzJdOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5k
OworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBtZW0gPSBmdW5jdGlvbiAoeCwgX3BhcmFt
KSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgICAg
aWYgKHBhcmFtKSB7CisgICAgICAgIHZhciBjID0gQ3VycnkuXzIoZnVuYXJnWy8qIGNvbXBhcmUg
Ki8wXSwgeCwgcGFyYW1bMV0pOworICAgICAgICBpZiAoYykgeworICAgICAgICAgIF9wYXJhbSA9
IGMgPCAwID8gcGFyYW1bMF0gOiBwYXJhbVszXTsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIHRy
dWUgKi8xOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJu
IC8qIGZhbHNlICovMDsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgbWluX2JpbmRpbmcg
PSBmdW5jdGlvbiAoX3BhcmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFt
ID0gX3BhcmFtOworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIHZhciBsID0gcGFyYW1bMF07
CisgICAgICAgIGlmIChsKSB7CisgICAgICAgICAgX3BhcmFtID0gbDsKKyAgICAgICAgICBjb250
aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
cmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgcGFyYW1bMV0sCisgICAgICAg
ICAgICAgICAgICBwYXJhbVsyXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5u
b3RfZm91bmQ7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIG1heF9iaW5kaW5nID0gZnVu
Y3Rpb24gKF9wYXJhbSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBwYXJhbSA9IF9w
YXJhbTsKKyAgICAgIGlmIChwYXJhbSkgeworICAgICAgICB2YXIgciA9IHBhcmFtWzNdOworICAg
ICAgICBpZiAocikgeworICAgICAgICAgIF9wYXJhbSA9IHI7CisgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVy
biAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIHBhcmFtWzFdLAorICAgICAgICAgICAg
ICAgICAgcGFyYW1bMl0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2Zv
dW5kOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciByZW1vdmVfbWluX2JpbmRpbmcgPSBm
dW5jdGlvbiAocGFyYW0pIHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciBsID0gcGFyYW1b
MF07CisgICAgICBpZiAobCkgeworICAgICAgICByZXR1cm4gYmFsKHJlbW92ZV9taW5fYmluZGlu
ZyhsKSwgcGFyYW1bMV0sIHBhcmFtWzJdLCBwYXJhbVszXSk7CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgcmV0dXJuIHBhcmFtWzNdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFs
aWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTWFwLnJlbW92ZV9taW5fZWx0IgorICAgICAgICAg
IF07CisgICAgfQorICB9OworICB2YXIgcmVtb3ZlID0gZnVuY3Rpb24gKHgsIHBhcmFtKSB7Cisg
ICAgaWYgKHBhcmFtKSB7CisgICAgICB2YXIgciA9IHBhcmFtWzNdOworICAgICAgdmFyIGQgPSBw
YXJhbVsyXTsKKyAgICAgIHZhciB2ID0gcGFyYW1bMV07CisgICAgICB2YXIgbCA9IHBhcmFtWzBd
OworICAgICAgdmFyIGMgPSBDdXJyeS5fMihmdW5hcmdbLyogY29tcGFyZSAqLzBdLCB4LCB2KTsK
KyAgICAgIGlmIChjKSB7CisgICAgICAgIGlmIChjIDwgMCkgeworICAgICAgICAgIHJldHVybiBi
YWwocmVtb3ZlKHgsIGwpLCB2LCBkLCByKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICByZXR1cm4gYmFsKGwsIHYsIGQsIHJlbW92ZSh4LCByKSk7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgdDEgPSBsOworICAgICAgICB2YXIgdDIg
PSByOworICAgICAgICBpZiAodDEpIHsKKyAgICAgICAgICBpZiAodDIpIHsKKyAgICAgICAgICAg
IHZhciBtYXRjaCA9IG1pbl9iaW5kaW5nKHQyKTsKKyAgICAgICAgICAgIHJldHVybiBiYWwodDEs
IG1hdGNoWzBdLCBtYXRjaFsxXSwgcmVtb3ZlX21pbl9iaW5kaW5nKHQyKSk7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHQxOworICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gdDI7CisgICAgICAg
IH0KKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogRW1wdHkgKi8w
OworICAgIH0KKyAgfTsKKyAgdmFyIGl0ZXIgPSBmdW5jdGlvbiAoZiwgX3BhcmFtKSB7CisgICAg
d2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgICAgaWYgKHBhcmFt
KSB7CisgICAgICAgIGl0ZXIoZiwgcGFyYW1bMF0pOworICAgICAgICBDdXJyeS5fMihmLCBwYXJh
bVsxXSwgcGFyYW1bMl0pOworICAgICAgICBfcGFyYW0gPSBwYXJhbVszXTsKKyAgICAgICAgY29u
dGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBtYXAgPSBmdW5jdGlvbiAo
ZiwgcGFyYW0pIHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciBsJHByaW1lID0gbWFwKGYs
IHBhcmFtWzBdKTsKKyAgICAgIHZhciBkJHByaW1lID0gQ3VycnkuXzEoZiwgcGFyYW1bMl0pOwor
ICAgICAgdmFyIHIkcHJpbWUgPSBtYXAoZiwgcGFyYW1bM10pOworICAgICAgcmV0dXJuIC8qIE5v
ZGUgKi9bCisgICAgICAgICAgICAgIGwkcHJpbWUsCisgICAgICAgICAgICAgIHBhcmFtWzFdLAor
ICAgICAgICAgICAgICBkJHByaW1lLAorICAgICAgICAgICAgICByJHByaW1lLAorICAgICAgICAg
ICAgICBwYXJhbVs0XQorICAgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBy
ZXR1cm4gLyogRW1wdHkgKi8wOworICAgIH0KKyAgfTsKKyAgdmFyIG1hcGkgPSBmdW5jdGlvbiAo
ZiwgcGFyYW0pIHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciB2ID0gcGFyYW1bMV07Cisg
ICAgICB2YXIgbCRwcmltZSA9IG1hcGkoZiwgcGFyYW1bMF0pOworICAgICAgdmFyIGQkcHJpbWUg
PSBDdXJyeS5fMihmLCB2LCBwYXJhbVsyXSk7CisgICAgICB2YXIgciRwcmltZSA9IG1hcGkoZiwg
cGFyYW1bM10pOworICAgICAgcmV0dXJuIC8qIE5vZGUgKi9bCisgICAgICAgICAgICAgIGwkcHJp
bWUsCisgICAgICAgICAgICAgIHYsCisgICAgICAgICAgICAgIGQkcHJpbWUsCisgICAgICAgICAg
ICAgIHIkcHJpbWUsCisgICAgICAgICAgICAgIHBhcmFtWzRdCisgICAgICAgICAgICBdOworICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBFbXB0eSAqLzA7CisgICAgfQorICB9Owor
ICB2YXIgZm9sZCA9IGZ1bmN0aW9uIChmLCBfbSwgX2FjY3UpIHsKKyAgICB3aGlsZSh0cnVlKSB7
CisgICAgICB2YXIgYWNjdSA9IF9hY2N1OworICAgICAgdmFyIG0gPSBfbTsKKyAgICAgIGlmICht
KSB7CisgICAgICAgIF9hY2N1ID0gQ3VycnkuXzMoZiwgbVsxXSwgbVsyXSwgZm9sZChmLCBtWzBd
LCBhY2N1KSk7CisgICAgICAgIF9tID0gbVszXTsKKyAgICAgICAgY29udGludWUgOworICAgICAg
ICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gYWNjdTsKKyAgICAgIH0K
KyAgICB9OworICB9OworICB2YXIgZm9yX2FsbCA9IGZ1bmN0aW9uIChwLCBfcGFyYW0pIHsKKyAg
ICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICBpZiAocGFy
YW0pIHsKKyAgICAgICAgaWYgKEN1cnJ5Ll8yKHAsIHBhcmFtWzFdLCBwYXJhbVsyXSkpIHsKKyAg
ICAgICAgICBpZiAoZm9yX2FsbChwLCBwYXJhbVswXSkpIHsKKyAgICAgICAgICAgIF9wYXJhbSA9
IHBhcmFtWzNdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsK
KyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJu
IC8qIGZhbHNlICovMDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IHJldHVybiAvKiB0cnVlICovMTsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgZXhpc3Rz
ID0gZnVuY3Rpb24gKHAsIF9wYXJhbSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBw
YXJhbSA9IF9wYXJhbTsKKyAgICAgIGlmIChwYXJhbSkgeworICAgICAgICBpZiAoQ3VycnkuXzIo
cCwgcGFyYW1bMV0sIHBhcmFtWzJdKSkgeworICAgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChleGlzdHMocCwgcGFyYW1bMF0pKSB7CisgICAg
ICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIF9wYXJhbSA9IHBhcmFtWzNdOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiBm
YWxzZSAqLzA7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIGFkZF9taW5fYmluZGluZyA9
IGZ1bmN0aW9uIChrLCB2LCBwYXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgcmV0dXJu
IGJhbChhZGRfbWluX2JpbmRpbmcoaywgdiwgcGFyYW1bMF0pLCBwYXJhbVsxXSwgcGFyYW1bMl0s
IHBhcmFtWzNdKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gc2luZ2xldG9uKGss
IHYpOworICAgIH0KKyAgfTsKKyAgdmFyIGFkZF9tYXhfYmluZGluZyA9IGZ1bmN0aW9uIChrLCB2
LCBwYXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgcmV0dXJuIGJhbChwYXJhbVswXSwg
cGFyYW1bMV0sIHBhcmFtWzJdLCBhZGRfbWF4X2JpbmRpbmcoaywgdiwgcGFyYW1bM10pKTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gc2luZ2xldG9uKGssIHYpOworICAgIH0KKyAg
fTsKKyAgdmFyIGpvaW4gPSBmdW5jdGlvbiAobCwgdiwgZCwgcikgeworICAgIGlmIChsKSB7Cisg
ICAgICBpZiAocikgeworICAgICAgICB2YXIgcmggPSByWzRdOworICAgICAgICB2YXIgbGggPSBs
WzRdOworICAgICAgICBpZiAobGggPiAocmggKyAyIHwgMCkpIHsKKyAgICAgICAgICByZXR1cm4g
YmFsKGxbMF0sIGxbMV0sIGxbMl0sIGpvaW4obFszXSwgdiwgZCwgcikpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKHJoID4gKGxoICsgMiB8IDApKSB7CisgICAgICAgICAgcmV0dXJuIGJh
bChqb2luKGwsIHYsIGQsIHJbMF0pLCByWzFdLCByWzJdLCByWzNdKTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gY3JlYXRlKGwsIHYsIGQsIHIpOworICAgICAg
ICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGFkZF9tYXhfYmluZGlu
Zyh2LCBkLCBsKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gYWRk
X21pbl9iaW5kaW5nKHYsIGQsIHIpOworICAgIH0KKyAgfTsKKyAgdmFyIGNvbmNhdCA9IGZ1bmN0
aW9uICh0MSwgdDIpIHsKKyAgICBpZiAodDEpIHsKKyAgICAgIGlmICh0MikgeworICAgICAgICB2
YXIgbWF0Y2ggPSBtaW5fYmluZGluZyh0Mik7CisgICAgICAgIHJldHVybiBqb2luKHQxLCBtYXRj
aFswXSwgbWF0Y2hbMV0sIHJlbW92ZV9taW5fYmluZGluZyh0MikpOworICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHJldHVybiB0MTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICByZXR1cm4gdDI7CisgICAgfQorICB9OworICB2YXIgY29uY2F0X29yX2pvaW4gPSBmdW5j
dGlvbiAodDEsIHYsIGQsIHQyKSB7CisgICAgaWYgKGQpIHsKKyAgICAgIHJldHVybiBqb2luKHQx
LCB2LCBkWzBdLCB0Mik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGNvbmNhdCh0
MSwgdDIpOworICAgIH0KKyAgfTsKKyAgdmFyIHNwbGl0ID0gZnVuY3Rpb24gKHgsIHBhcmFtKSB7
CisgICAgaWYgKHBhcmFtKSB7CisgICAgICB2YXIgciA9IHBhcmFtWzNdOworICAgICAgdmFyIGQg
PSBwYXJhbVsyXTsKKyAgICAgIHZhciB2ID0gcGFyYW1bMV07CisgICAgICB2YXIgbCA9IHBhcmFt
WzBdOworICAgICAgdmFyIGMgPSBDdXJyeS5fMihmdW5hcmdbLyogY29tcGFyZSAqLzBdLCB4LCB2
KTsKKyAgICAgIGlmIChjKSB7CisgICAgICAgIGlmIChjIDwgMCkgeworICAgICAgICAgIHZhciBt
YXRjaCA9IHNwbGl0KHgsIGwpOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgICAgIG1hdGNoWzBdLAorICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCisgICAg
ICAgICAgICAgICAgICBqb2luKG1hdGNoWzJdLCB2LCBkLCByKQorICAgICAgICAgICAgICAgIF07
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFyIG1hdGNoJDEgPSBzcGxp
dCh4LCByKTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAg
ICBqb2luKGwsIHYsIGQsIG1hdGNoJDFbMF0pLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMVsx
XSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDFbMl0KKyAgICAgICAgICAgICAgICBdOworICAg
ICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICov
WworICAgICAgICAgICAgICAgIGwsCisgICAgICAgICAgICAgICAgLyogU29tZSAqL1tkXSwKKyAg
ICAgICAgICAgICAgICByCisgICAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAvKiBFbXB0eSAq
LzAsCisgICAgICAgICAgICAgIC8qIE5vbmUgKi8wLAorICAgICAgICAgICAgICAvKiBFbXB0eSAq
LzAKKyAgICAgICAgICAgIF07CisgICAgfQorICB9OworICB2YXIgbWVyZ2UgPSBmdW5jdGlvbiAo
ZiwgczEsIHMyKSB7CisgICAgdmFyIGV4aXQgPSAwOworICAgIGlmIChzMSkgeworICAgICAgdmFy
IHYxID0gczFbMV07CisgICAgICBpZiAoczFbNF0gPj0gaGVpZ2h0KHMyKSkgeworICAgICAgICB2
YXIgbWF0Y2ggPSBzcGxpdCh2MSwgczIpOworICAgICAgICByZXR1cm4gY29uY2F0X29yX2pvaW4o
bWVyZ2UoZiwgczFbMF0sIG1hdGNoWzBdKSwgdjEsIEN1cnJ5Ll8zKGYsIHYxLCAvKiBTb21lICov
W3MxWzJdXSwgbWF0Y2hbMV0pLCBtZXJnZShmLCBzMVszXSwgbWF0Y2hbMl0pKTsKKyAgICAgIH0K
KyAgICAgIGVsc2UgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxz
ZSBpZiAoczIpIHsKKyAgICAgIGV4aXQgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJl
dHVybiAvKiBFbXB0eSAqLzA7CisgICAgfQorICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICBp
ZiAoczIpIHsKKyAgICAgICAgdmFyIHYyID0gczJbMV07CisgICAgICAgIHZhciBtYXRjaCQxID0g
c3BsaXQodjIsIHMxKTsKKyAgICAgICAgcmV0dXJuIGNvbmNhdF9vcl9qb2luKG1lcmdlKGYsIG1h
dGNoJDFbMF0sIHMyWzBdKSwgdjIsIEN1cnJ5Ll8zKGYsIHYyLCBtYXRjaCQxWzFdLCAvKiBTb21l
ICovW3MyWzJdXSksIG1lcmdlKGYsIG1hdGNoJDFbMl0sIHMyWzNdKSk7CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICJtYXAubWwiLAorICAgICAgICAgICAgICAgIDI3MCwKKyAgICAgICAgICAgICAgICAxMAorICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICAKKyAgfTsK
KyAgdmFyIGZpbHRlciA9IGZ1bmN0aW9uIChwLCBwYXJhbSkgeworICAgIGlmIChwYXJhbSkgewor
ICAgICAgdmFyIGQgPSBwYXJhbVsyXTsKKyAgICAgIHZhciB2ID0gcGFyYW1bMV07CisgICAgICB2
YXIgbCRwcmltZSA9IGZpbHRlcihwLCBwYXJhbVswXSk7CisgICAgICB2YXIgcHZkID0gQ3Vycnku
XzIocCwgdiwgZCk7CisgICAgICB2YXIgciRwcmltZSA9IGZpbHRlcihwLCBwYXJhbVszXSk7Cisg
ICAgICBpZiAocHZkKSB7CisgICAgICAgIHJldHVybiBqb2luKGwkcHJpbWUsIHYsIGQsIHIkcHJp
bWUpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBjb25jYXQobCRwcmlt
ZSwgciRwcmltZSk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8q
IEVtcHR5ICovMDsKKyAgICB9CisgIH07CisgIHZhciBwYXJ0aXRpb24gPSBmdW5jdGlvbiAocCwg
cGFyYW0pIHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciBkID0gcGFyYW1bMl07CisgICAg
ICB2YXIgdiA9IHBhcmFtWzFdOworICAgICAgdmFyIG1hdGNoID0gcGFydGl0aW9uKHAsIHBhcmFt
WzBdKTsKKyAgICAgIHZhciBsZiA9IG1hdGNoWzFdOworICAgICAgdmFyIGx0ID0gbWF0Y2hbMF07
CisgICAgICB2YXIgcHZkID0gQ3VycnkuXzIocCwgdiwgZCk7CisgICAgICB2YXIgbWF0Y2gkMSA9
IHBhcnRpdGlvbihwLCBwYXJhbVszXSk7CisgICAgICB2YXIgcmYgPSBtYXRjaCQxWzFdOworICAg
ICAgdmFyIHJ0ID0gbWF0Y2gkMVswXTsKKyAgICAgIGlmIChwdmQpIHsKKyAgICAgICAgcmV0dXJu
IC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIGpvaW4obHQsIHYsIGQsIHJ0KSwKKyAgICAg
ICAgICAgICAgICBjb25jYXQobGYsIHJmKQorICAgICAgICAgICAgICBdOworICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICBj
b25jYXQobHQsIHJ0KSwKKyAgICAgICAgICAgICAgICBqb2luKGxmLCB2LCBkLCByZikKKyAgICAg
ICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIEVtcHR5ICovMCwKKyAgICAgICAgICAgICAgLyog
RW1wdHkgKi8wCisgICAgICAgICAgICBdOworICAgIH0KKyAgfTsKKyAgdmFyIGNvbnNfZW51bSA9
IGZ1bmN0aW9uIChfbSwgX2UpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgZSA9IF9l
OworICAgICAgdmFyIG0gPSBfbTsKKyAgICAgIGlmIChtKSB7CisgICAgICAgIF9lID0gLyogTW9y
ZSAqL1sKKyAgICAgICAgICBtWzFdLAorICAgICAgICAgIG1bMl0sCisgICAgICAgICAgbVszXSwK
KyAgICAgICAgICBlCisgICAgICAgIF07CisgICAgICAgIF9tID0gbVswXTsKKyAgICAgICAgY29u
dGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4g
ZTsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgY29tcGFyZSA9IGZ1bmN0aW9uIChjbXAs
IG0xLCBtMikgeworICAgIHZhciBfZTEgPSBjb25zX2VudW0obTEsIC8qIEVuZCAqLzApOworICAg
IHZhciBfZTIgPSBjb25zX2VudW0obTIsIC8qIEVuZCAqLzApOworICAgIHdoaWxlKHRydWUpIHsK
KyAgICAgIHZhciBlMiA9IF9lMjsKKyAgICAgIHZhciBlMSA9IF9lMTsKKyAgICAgIGlmIChlMSkg
eworICAgICAgICBpZiAoZTIpIHsKKyAgICAgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1sv
KiBjb21wYXJlICovMF0sIGUxWzBdLCBlMlswXSk7CisgICAgICAgICAgaWYgKGMgIT09IDApIHsK
KyAgICAgICAgICAgIHJldHVybiBjOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHZhciBjJDEgPSBDdXJyeS5fMihjbXAsIGUxWzFdLCBlMlsxXSk7CisgICAgICAg
ICAgICBpZiAoYyQxICE9PSAwKSB7CisgICAgICAgICAgICAgIHJldHVybiBjJDE7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgX2UyID0gY29uc19lbnVt
KGUyWzJdLCBlMlszXSk7CisgICAgICAgICAgICAgIF9lMSA9IGNvbnNfZW51bShlMVsyXSwgZTFb
M10pOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAoZTIpIHsKKyAgICAg
ICAgcmV0dXJuIC0xOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAwOwor
ICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBlcXVhbCA9IGZ1bmN0aW9uIChjbXAsIG0xLCBt
MikgeworICAgIHZhciBfZTEgPSBjb25zX2VudW0obTEsIC8qIEVuZCAqLzApOworICAgIHZhciBf
ZTIgPSBjb25zX2VudW0obTIsIC8qIEVuZCAqLzApOworICAgIHdoaWxlKHRydWUpIHsKKyAgICAg
IHZhciBlMiA9IF9lMjsKKyAgICAgIHZhciBlMSA9IF9lMTsKKyAgICAgIGlmIChlMSkgeworICAg
ICAgICBpZiAoZTIpIHsKKyAgICAgICAgICBpZiAoQ3VycnkuXzIoZnVuYXJnWy8qIGNvbXBhcmUg
Ki8wXSwgZTFbMF0sIGUyWzBdKSkgeworICAgICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsK
KyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCBlMVsxXSwgZTJb
MV0pKSB7CisgICAgICAgICAgICBfZTIgPSBjb25zX2VudW0oZTJbMl0sIGUyWzNdKTsKKyAgICAg
ICAgICAgIF9lMSA9IGNvbnNfZW51bShlMVsyXSwgZTFbM10pOworICAgICAgICAgICAgY29udGlu
dWUgOworICAgICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICAgICAgfQorICAg
ICAgfQorICAgICAgZWxzZSBpZiAoZTIpIHsKKyAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsK
KyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAg
ICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIGNhcmRpbmFsID0gZnVuY3Rpb24gKHBhcmFtKSB7Cisg
ICAgaWYgKHBhcmFtKSB7CisgICAgICByZXR1cm4gKGNhcmRpbmFsKHBhcmFtWzBdKSArIDEgfCAw
KSArIGNhcmRpbmFsKHBhcmFtWzNdKSB8IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0
dXJuIDA7CisgICAgfQorICB9OworICB2YXIgYmluZGluZ3NfYXV4ID0gZnVuY3Rpb24gKF9hY2N1
LCBfcGFyYW0pIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07
CisgICAgICB2YXIgYWNjdSA9IF9hY2N1OworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIF9w
YXJhbSA9IHBhcmFtWzBdOworICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgIC8q
IHR1cGxlICovWworICAgICAgICAgICAgcGFyYW1bMV0sCisgICAgICAgICAgICBwYXJhbVsyXQor
ICAgICAgICAgIF0sCisgICAgICAgICAgYmluZGluZ3NfYXV4KGFjY3UsIHBhcmFtWzNdKQorICAg
ICAgICBdOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHJldHVybiBhY2N1OworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBi
aW5kaW5ncyA9IGZ1bmN0aW9uIChzKSB7CisgICAgcmV0dXJuIGJpbmRpbmdzX2F1eCgvKiBbXSAq
LzAsIHMpOworICB9OworICByZXR1cm4gWworICAgICAgICAgIC8qIEVtcHR5ICovMCwKKyAgICAg
ICAgICBpc19lbXB0eSwKKyAgICAgICAgICBtZW0sCisgICAgICAgICAgYWRkLAorICAgICAgICAg
IHNpbmdsZXRvbiwKKyAgICAgICAgICByZW1vdmUsCisgICAgICAgICAgbWVyZ2UsCisgICAgICAg
ICAgY29tcGFyZSwKKyAgICAgICAgICBlcXVhbCwKKyAgICAgICAgICBpdGVyLAorICAgICAgICAg
IGZvbGQsCisgICAgICAgICAgZm9yX2FsbCwKKyAgICAgICAgICBleGlzdHMsCisgICAgICAgICAg
ZmlsdGVyLAorICAgICAgICAgIHBhcnRpdGlvbiwKKyAgICAgICAgICBjYXJkaW5hbCwKKyAgICAg
ICAgICBiaW5kaW5ncywKKyAgICAgICAgICBtaW5fYmluZGluZywKKyAgICAgICAgICBtYXhfYmlu
ZGluZywKKyAgICAgICAgICBtaW5fYmluZGluZywKKyAgICAgICAgICBzcGxpdCwKKyAgICAgICAg
ICBmaW5kLAorICAgICAgICAgIG1hcCwKKyAgICAgICAgICBtYXBpCisgICAgICAgIF07Cit9CisK
K2V4cG9ydHMuTWFrZSA9IE1ha2U7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5k
IG9mIG1hcC5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAg
X3JlZ2lzdHJ5WydudW1lcmljX2Vycm9yJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBv
cnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBudW1lcmljX2Vycm9yLmpzIC8vLy8vLy8vCisv
LyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBX
SVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIENhbWxfZXhjZXB0aW9ucyA9IHJlcXVpcmUo
ImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2V4Y2VwdGlvbnMiKTsKKwordmFyIEludGVnZXJPdmVy
ZmxvdyA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIk51bWVyaWNfZXJyb3IuSW50ZWdlck92ZXJm
bG93Iik7CisKK3ZhciBJbnRlZ2VyRGl2aWRlQnlaZXJvID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0
ZSgiTnVtZXJpY19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvIik7CisKK3ZhciBJbnZhbGlkQ29u
dmVyc2lvblRvSW50ZWdlciA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIk51bWVyaWNfZXJyb3Iu
SW52YWxpZENvbnZlcnNpb25Ub0ludGVnZXIiKTsKKworZXhwb3J0cy5JbnRlZ2VyT3ZlcmZsb3cg
ICAgICAgICAgICA9IEludGVnZXJPdmVyZmxvdzsKK2V4cG9ydHMuSW50ZWdlckRpdmlkZUJ5WmVy
byAgICAgICAgPSBJbnRlZ2VyRGl2aWRlQnlaZXJvOworZXhwb3J0cy5JbnZhbGlkQ29udmVyc2lv
blRvSW50ZWdlciA9IEludmFsaWRDb252ZXJzaW9uVG9JbnRlZ2VyOworLyogTm8gc2lkZSBlZmZl
Y3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBudW1lcmljX2Vycm9yLmpzIC8vLy8vLy8vCivCoCDCoCBy
ZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ29iaiddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Ygb2JqLmpzIC8v
Ly8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBNYXJzaGFsICAgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vbWFyc2hhbCIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWly
ZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBkb3VibGVfZmllbGQo
eCwgaSkgeworICByZXR1cm4geFtpXTsKK30KKworZnVuY3Rpb24gc2V0X2RvdWJsZV9maWVsZCh4
LCBpLCB2KSB7CisgIHhbaV0gPSB2OworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlv
biBtYXJzaGFsKCkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cg
ImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHVubWFyc2hhbChzdHIs
IHBvcykgeworICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgTWFyc2hhbC5mcm9tX2J5
dGVzKHN0ciwgcG9zKSwKKyAgICAgICAgICBwb3MgKyBNYXJzaGFsLnRvdGFsX3NpemUoc3RyLCBw
b3MpIHwgMAorICAgICAgICBdOworfQorCitmdW5jdGlvbiBleHRlbnNpb25fc2xvdCh4KSB7Cisg
IHZhciBzbG90ID0geC5sZW5ndGggIT09IHVuZGVmaW5lZCAmJiAoeC50YWcgfCAwKSAhPT0gMjQ4
ICYmIHgubGVuZ3RoID49IDEgPyB4WzBdIDogeDsKKyAgdmFyIG5hbWU7CisgIGlmIChzbG90Lmxl
bmd0aCAhPT0gdW5kZWZpbmVkICYmIHNsb3QudGFnID09PSAyNDgpIHsKKyAgICBuYW1lID0gc2xv
dFswXTsKKyAgfQorICBlbHNlIHsKKyAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5u
b3RfZm91bmQ7CisgIH0KKyAgaWYgKG5hbWUudGFnID09PSAyNTIpIHsKKyAgICByZXR1cm4gc2xv
dDsKKyAgfQorICBlbHNlIHsKKyAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3Rf
Zm91bmQ7CisgIH0KK30KKworZnVuY3Rpb24gZXh0ZW5zaW9uX25hbWUoeCkgeworICB0cnkgewor
ICAgIHZhciBzbG90ID0gZXh0ZW5zaW9uX3Nsb3QoeCk7CisgICAgcmV0dXJuIHNsb3RbMF07Cisg
IH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMubm90X2ZvdW5kKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgIk9iai5leHRlbnNpb25f
bmFtZSIKKyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IGV4bjsK
KyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gZXh0ZW5zaW9uX2lkKHgpIHsKKyAgdHJ5IHsKKyAg
ICB2YXIgc2xvdCA9IGV4dGVuc2lvbl9zbG90KHgpOworICAgIHJldHVybiBzbG90WzFdOworICB9
CisgIGNhdGNoIChleG4peworICAgIGlmIChleG4gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25z
Lm5vdF9mb3VuZCkgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJPYmouZXh0ZW5zaW9uX2lk
IgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOworICAg
IH0KKyAgfQorfQorCitmdW5jdGlvbiBleHRlbnNpb25fc2xvdCQxKHgpIHsKKyAgdHJ5IHsKKyAg
ICByZXR1cm4gZXh0ZW5zaW9uX3Nsb3QoeCk7CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYg
KGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7CisgICAgICB0aHJv
dyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50
LAorICAgICAgICAgICAgIk9iai5leHRlbnNpb25fc2xvdCIKKyAgICAgICAgICBdOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHRocm93IGV4bjsKKyAgICB9CisgIH0KK30KKwordmFyIGZpcnN0
X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwOworCit2YXIgbGFzdF9ub25fY29uc3Rh
bnRfY29uc3RydWN0b3JfdGFnID0gMjQ1OworCit2YXIgbGF6eV90YWcgPSAyNDY7CisKK3ZhciBj
bG9zdXJlX3RhZyA9IDI0NzsKKwordmFyIG9iamVjdF90YWcgPSAyNDg7CisKK3ZhciBpbmZpeF90
YWcgPSAyNDk7CisKK3ZhciBmb3J3YXJkX3RhZyA9IDI1MDsKKwordmFyIG5vX3NjYW5fdGFnID0g
MjUxOworCit2YXIgYWJzdHJhY3RfdGFnID0gMjUxOworCit2YXIgc3RyaW5nX3RhZyA9IDI1MjsK
KwordmFyIGRvdWJsZV90YWcgPSAyNTM7CisKK3ZhciBkb3VibGVfYXJyYXlfdGFnID0gMjU0Owor
Cit2YXIgY3VzdG9tX3RhZyA9IDI1NTsKKwordmFyIGZpbmFsX3RhZyA9IDI1NTsKKwordmFyIGlu
dF90YWcgPSAxMDAwOworCit2YXIgb3V0X29mX2hlYXBfdGFnID0gMTAwMTsKKwordmFyIHVuYWxp
Z25lZF90YWcgPSAxMDAyOworCitleHBvcnRzLmRvdWJsZV9maWVsZCAgICAgICAgICAgICAgICAg
ICAgICAgPSBkb3VibGVfZmllbGQ7CitleHBvcnRzLnNldF9kb3VibGVfZmllbGQgICAgICAgICAg
ICAgICAgICAgPSBzZXRfZG91YmxlX2ZpZWxkOworZXhwb3J0cy5maXJzdF9ub25fY29uc3RhbnRf
Y29uc3RydWN0b3JfdGFnID0gZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZzsKK2V4
cG9ydHMubGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnICA9IGxhc3Rfbm9uX2NvbnN0
YW50X2NvbnN0cnVjdG9yX3RhZzsKK2V4cG9ydHMubGF6eV90YWcgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IGxhenlfdGFnOworZXhwb3J0cy5jbG9zdXJlX3RhZyAgICAgICAgICAgICAgICAg
ICAgICAgID0gY2xvc3VyZV90YWc7CitleHBvcnRzLm9iamVjdF90YWcgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBvYmplY3RfdGFnOworZXhwb3J0cy5pbmZpeF90YWcgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gaW5maXhfdGFnOworZXhwb3J0cy5mb3J3YXJkX3RhZyAgICAgICAgICAgICAg
ICAgICAgICAgID0gZm9yd2FyZF90YWc7CitleHBvcnRzLm5vX3NjYW5fdGFnICAgICAgICAgICAg
ICAgICAgICAgICAgPSBub19zY2FuX3RhZzsKK2V4cG9ydHMuYWJzdHJhY3RfdGFnICAgICAgICAg
ICAgICAgICAgICAgICA9IGFic3RyYWN0X3RhZzsKK2V4cG9ydHMuc3RyaW5nX3RhZyAgICAgICAg
ICAgICAgICAgICAgICAgICA9IHN0cmluZ190YWc7CitleHBvcnRzLmRvdWJsZV90YWcgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBkb3VibGVfdGFnOworZXhwb3J0cy5kb3VibGVfYXJyYXlfdGFn
ICAgICAgICAgICAgICAgICAgID0gZG91YmxlX2FycmF5X3RhZzsKK2V4cG9ydHMuY3VzdG9tX3Rh
ZyAgICAgICAgICAgICAgICAgICAgICAgICA9IGN1c3RvbV90YWc7CitleHBvcnRzLmZpbmFsX3Rh
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgPSBmaW5hbF90YWc7CitleHBvcnRzLmludF90YWcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBpbnRfdGFnOworZXhwb3J0cy5vdXRfb2ZfaGVh
cF90YWcgICAgICAgICAgICAgICAgICAgID0gb3V0X29mX2hlYXBfdGFnOworZXhwb3J0cy51bmFs
aWduZWRfdGFnICAgICAgICAgICAgICAgICAgICAgID0gdW5hbGlnbmVkX3RhZzsKK2V4cG9ydHMu
ZXh0ZW5zaW9uX25hbWUgICAgICAgICAgICAgICAgICAgICA9IGV4dGVuc2lvbl9uYW1lOworZXhw
b3J0cy5leHRlbnNpb25faWQgICAgICAgICAgICAgICAgICAgICAgID0gZXh0ZW5zaW9uX2lkOwor
ZXhwb3J0cy5leHRlbnNpb25fc2xvdCAgICAgICAgICAgICAgICAgICAgID0gZXh0ZW5zaW9uX3Ns
b3QkMTsKK2V4cG9ydHMubWFyc2hhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1hcnNo
YWw7CitleHBvcnRzLnVubWFyc2hhbCAgICAgICAgICAgICAgICAgICAgICAgICAgPSB1bm1hcnNo
YWw7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIG9iai5qcyAvLy8vLy8v
LworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydvbyddID0g
ZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Yg
b28uanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIENhbWxpbnRlcm5hbE9PID0gcmVx
dWlyZSgiLi9jYW1saW50ZXJuYWxPTyIpOworCit2YXIgY29weSA9IENhbWxpbnRlcm5hbE9PLmNv
cHk7CisKK3ZhciBuZXdfbWV0aG9kID0gQ2FtbGludGVybmFsT08ucHVibGljX21ldGhvZF9sYWJl
bDsKKwordmFyIHB1YmxpY19tZXRob2RfbGFiZWwgPSBDYW1saW50ZXJuYWxPTy5wdWJsaWNfbWV0
aG9kX2xhYmVsOworCitleHBvcnRzLmNvcHkgICAgICAgICAgICAgICAgPSBjb3B5OworZXhwb3J0
cy5uZXdfbWV0aG9kICAgICAgICAgID0gbmV3X21ldGhvZDsKK2V4cG9ydHMucHVibGljX21ldGhv
ZF9sYWJlbCA9IHB1YmxpY19tZXRob2RfbGFiZWw7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8v
Ly8vLy8gZW5kIG9mIG9vLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07
CisKKworICBfcmVnaXN0cnlbJ29wZXJhdG9ycyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQg
ZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Ygb3BlcmF0b3JzLmpzIC8vLy8vLy8vCisv
LyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBX
SVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEJsb2NrICA9IHJlcXVpcmUoImJzLXBsYXRm
b3JtL2xpYi9qcy9ibG9jayIpOwordmFyIFNvdXJjZSA9IHJlcXVpcmUoIi4vc291cmNlIik7CisK
K2Z1bmN0aW9uIGkzMl9jb25zdChuKSB7CisgIHJldHVybiAvKiBDb25zdCAqL0Jsb2NrLl9fKDE1
LCBbU291cmNlLiRhdCRhdCgvKiBJMzIgKi9CbG9jay5fXygwLCBbblsvKiBpdCAqLzFdXSksIG5b
LyogYXQgKi8wXSldKTsKK30KKworZnVuY3Rpb24gaTY0X2NvbnN0KG4pIHsKKyAgcmV0dXJuIC8q
IENvbnN0ICovQmxvY2suX18oMTUsIFtTb3VyY2UuJGF0JGF0KC8qIEk2NCAqL0Jsb2NrLl9fKDEs
IFtuWy8qIGl0ICovMV1dKSwgblsvKiBhdCAqLzBdKV0pOworfQorCitmdW5jdGlvbiBmMzJfY29u
c3QobikgeworICByZXR1cm4gLyogQ29uc3QgKi9CbG9jay5fXygxNSwgW1NvdXJjZS4kYXQkYXQo
LyogRjMyICovQmxvY2suX18oMiwgW25bLyogaXQgKi8xXV0pLCBuWy8qIGF0ICovMF0pXSk7Cit9
CisKK2Z1bmN0aW9uIGY2NF9jb25zdChuKSB7CisgIHJldHVybiAvKiBDb25zdCAqL0Jsb2NrLl9f
KDE1LCBbU291cmNlLiRhdCRhdCgvKiBGNjQgKi9CbG9jay5fXygzLCBbblsvKiBpdCAqLzFdXSks
IG5bLyogYXQgKi8wXSldKTsKK30KKworZnVuY3Rpb24gYmxvY2sodHMsIGVzKSB7CisgIHJldHVy
biAvKiBCbG9jayAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgIHRzLAorICAgICAgICAgICAg
ZXMKKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gbG9vcCh0cywgZXMpIHsKKyAgcmV0dXJu
IC8qIExvb3AgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICB0cywKKyAgICAgICAgICAgIGVz
CisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGJyKHgpIHsKKyAgcmV0dXJuIC8qIEJyICov
QmxvY2suX18oMywgW3hdKTsKK30KKworZnVuY3Rpb24gYnJfaWYoeCkgeworICByZXR1cm4gLyog
QnJJZiAqL0Jsb2NrLl9fKDQsIFt4XSk7Cit9CisKK2Z1bmN0aW9uIGJyX3RhYmxlKHhzLCB4KSB7
CisgIHJldHVybiAvKiBCclRhYmxlICovQmxvY2suX18oNSwgWworICAgICAgICAgICAgeHMsCisg
ICAgICAgICAgICB4CisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGlmXyh0cywgZXMxLCBl
czIpIHsKKyAgcmV0dXJuIC8qIElmICovQmxvY2suX18oMiwgWworICAgICAgICAgICAgdHMsCisg
ICAgICAgICAgICBlczEsCisgICAgICAgICAgICBlczIKKyAgICAgICAgICBdKTsKK30KKworZnVu
Y3Rpb24gY2FsbCh4KSB7CisgIHJldHVybiAvKiBDYWxsICovQmxvY2suX18oNiwgW3hdKTsKK30K
KworZnVuY3Rpb24gY2FsbF9pbmRpcmVjdCh4KSB7CisgIHJldHVybiAvKiBDYWxsSW5kaXJlY3Qg
Ki9CbG9jay5fXyg3LCBbeF0pOworfQorCitmdW5jdGlvbiBnZXRfbG9jYWwoeCkgeworICByZXR1
cm4gLyogR2V0TG9jYWwgKi9CbG9jay5fXyg4LCBbeF0pOworfQorCitmdW5jdGlvbiBzZXRfbG9j
YWwoeCkgeworICByZXR1cm4gLyogU2V0TG9jYWwgKi9CbG9jay5fXyg5LCBbeF0pOworfQorCitm
dW5jdGlvbiB0ZWVfbG9jYWwoeCkgeworICByZXR1cm4gLyogVGVlTG9jYWwgKi9CbG9jay5fXygx
MCwgW3hdKTsKK30KKworZnVuY3Rpb24gZ2V0X2dsb2JhbCh4KSB7CisgIHJldHVybiAvKiBHZXRH
bG9iYWwgKi9CbG9jay5fXygxMSwgW3hdKTsKK30KKworZnVuY3Rpb24gc2V0X2dsb2JhbCh4KSB7
CisgIHJldHVybiAvKiBTZXRHbG9iYWwgKi9CbG9jay5fXygxMiwgW3hdKTsKK30KKworZnVuY3Rp
b24gaTMyX2xvYWQoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9f
KDEzLCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEkzMlR5cGUgKi8wLAor
ICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQg
Ki9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogTm9uZSAqLzAKKyAgICAgICAgICAgIF1d
KTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyog
TG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6
IEk2NFR5cGUgKi8xLAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAg
ICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogTm9uZSAqLzAK
KyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gZjMyX2xvYWQoYWxpZ24sIG9mZnNldCkg
eworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyogcmVjb3JkICovWworICAgICAg
ICAgICAgICAvKiB0eSA6IEYzMlR5cGUgKi8yLAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2Fs
aWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8q
IHN6IDogTm9uZSAqLzAKKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gZjY0X2xvYWQo
YWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyogcmVj
b3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEY2NFR5cGUgKi8zLAorICAgICAgICAgICAg
ICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCisg
ICAgICAgICAgICAgIC8qIHN6IDogTm9uZSAqLzAKKyAgICAgICAgICAgIF1dKTsKK30KKworZnVu
Y3Rpb24gaTMyX2xvYWQ4X3MoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Js
b2NrLl9fKDEzLCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEkzMlR5cGUg
Ki8wLAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBv
ZmZzZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgICAgICAgIC8qIE1lbTggKi8wLAorICAgICAgICAgICAgICAgICAgLyog
U1ggKi8wCisgICAgICAgICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rp
b24gaTMyX2xvYWQ4X3UoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2Nr
Ll9fKDEzLCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEkzMlR5cGUgKi8w
LAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZz
ZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sK
KyAgICAgICAgICAgICAgICAgIC8qIE1lbTggKi8wLAorICAgICAgICAgICAgICAgICAgLyogWlgg
Ki8xCisgICAgICAgICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24g
aTMyX2xvYWQxNl9zKGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5f
XygxMywgWy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwK
KyAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0
ICovb2Zmc2V0LAorICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgICAgICAvKiBNZW0xNiAqLzEsCisgICAgICAgICAgICAgICAgICAvKiBTWCAq
LzAKKyAgICAgICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBp
MzJfbG9hZDE2X3UoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9f
KDEzLCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEkzMlR5cGUgKi8wLAor
ICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQg
Ki9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICAgICAgIC8qIE1lbTE2ICovMSwKKyAgICAgICAgICAgICAgICAgIC8qIFpYICov
MQorICAgICAgICAgICAgICAgIF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGk2
NF9sb2FkOF9zKGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygx
MywgWy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAg
ICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICov
b2Zmc2V0LAorICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICAgICAgICAvKiBNZW04ICovMCwKKyAgICAgICAgICAgICAgICAgIC8qIFNYICovMAor
ICAgICAgICAgICAgICAgIF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGk2NF9s
b2FkOF91KGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywg
Wy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAg
ICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zm
c2V0LAorICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgICAgICAvKiBNZW04ICovMCwKKyAgICAgICAgICAgICAgICAgIC8qIFpYICovMQorICAg
ICAgICAgICAgICAgIF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGk2NF9sb2Fk
MTZfcyhhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsv
KiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEsCisgICAgICAg
ICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNl
dCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAgICAg
ICAgICAgICAgLyogTWVtMTYgKi8xLAorICAgICAgICAgICAgICAgICAgLyogU1ggKi8wCisgICAg
ICAgICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQx
Nl91KGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywgWy8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAg
ICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0
LAorICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAg
ICAgICAgICAvKiBNZW0xNiAqLzEsCisgICAgICAgICAgICAgICAgICAvKiBaWCAqLzEKKyAgICAg
ICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpNjRfbG9hZDMy
X3MoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAgICAg
ICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQs
CisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
ICAgICAgIC8qIE1lbTMyICovMiwKKyAgICAgICAgICAgICAgICAgIC8qIFNYICovMAorICAgICAg
ICAgICAgICAgIF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGk2NF9sb2FkMzJf
dShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEsCisgICAgICAgICAg
ICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwK
KyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAgICAgLyogTWVtMzIgKi8yLAorICAgICAgICAgICAgICAgICAgLyogWlggKi8xCisgICAgICAg
ICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTMyX3N0b3JlKGFs
aWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIFN0b3JlICovQmxvY2suX18oMTQsIFsvKiByZWNv
cmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisgICAgICAgICAgICAg
IC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAg
ICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAgICAgXV0pOworfQorCitmdW5j
dGlvbiBpNjRfc3RvcmUoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9j
ay5fXygxNCwgWy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICov
MSwKKyAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zm
c2V0ICovb2Zmc2V0LAorICAgICAgICAgICAgICAvKiBzeiA6IE5vbmUgKi8wCisgICAgICAgICAg
ICBdXSk7Cit9CisKK2Z1bmN0aW9uIGYzMl9zdG9yZShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVy
biAvKiBTdG9yZSAqL0Jsb2NrLl9fKDE0LCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAv
KiB0eSA6IEYzMlR5cGUgKi8yLAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAg
ICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogTm9u
ZSAqLzAKKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gZjY0X3N0b3JlKGFsaWduLCBv
ZmZzZXQpIHsKKyAgcmV0dXJuIC8qIFN0b3JlICovQmxvY2suX18oMTQsIFsvKiByZWNvcmQgKi9b
CisgICAgICAgICAgICAgIC8qIHR5IDogRjY0VHlwZSAqLzMsCisgICAgICAgICAgICAgIC8qIGFs
aWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAg
ICAgICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBp
MzJfc3RvcmU4KGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIFN0b3JlICovQmxvY2suX18o
MTQsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisg
ICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAq
L29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIE1lbTggKi8wXQorICAg
ICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpMzJfc3RvcmUxNihhbGlnbiwgb2Zmc2V0KSB7
CisgIHJldHVybiAvKiBTdG9yZSAqL0Jsb2NrLl9fKDE0LCBbLyogcmVjb3JkICovWworICAgICAg
ICAgICAgICAvKiB0eSA6IEkzMlR5cGUgKi8wLAorICAgICAgICAgICAgICAvKiBhbGlnbiAqL2Fs
aWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCisgICAgICAgICAgICAgIC8q
IHN6IDogU29tZSAqL1svKiBNZW0xNiAqLzFdCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0
aW9uIGk2NF9zdG9yZTgoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9j
ay5fXygxNCwgWy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICov
MSwKKyAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zm
c2V0ICovb2Zmc2V0LAorICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogTWVtOCAqLzBd
CisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGk2NF9zdG9yZTE2KGFsaWduLCBvZmZz
ZXQpIHsKKyAgcmV0dXJuIC8qIFN0b3JlICovQmxvY2suX18oMTQsIFsvKiByZWNvcmQgKi9bCisg
ICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEsCisgICAgICAgICAgICAgIC8qIGFsaWdu
ICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAg
ICAgLyogc3ogOiBTb21lICovWy8qIE1lbTE2ICovMV0KKyAgICAgICAgICAgIF1dKTsKK30KKwor
ZnVuY3Rpb24gaTY0X3N0b3JlMzIoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogU3RvcmUg
Ki9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRU
eXBlICovMSwKKyAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAg
Lyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogTWVt
MzIgKi8yXQorICAgICAgICAgICAgXV0pOworfQorCit2YXIgdW5yZWFjaGFibGUgPSAvKiBVbnJl
YWNoYWJsZSAqLzA7CisKK3ZhciBub3AgPSAvKiBOb3AgKi8xOworCit2YXIgZHJvcCA9IC8qIERy
b3AgKi8zOworCit2YXIgJCRyZXR1cm4gPSAvKiBSZXR1cm4gKi8yOworCit2YXIgc2VsZWN0ID0g
LyogU2VsZWN0ICovNDsKKwordmFyIGkzMl9jbHogPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBb
LyogSTMyICovQmxvY2suX18oMCwgWy8qIENseiAqLzBdKV0pOworCit2YXIgaTMyX2N0eiA9IC8q
IFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogQ3R6ICovMV0p
XSk7CisKK3ZhciBpMzJfcG9wY250ID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEkzMiAq
L0Jsb2NrLl9fKDAsIFsvKiBQb3BjbnQgKi8yXSldKTsKKwordmFyIGk2NF9jbHogPSAvKiBVbmFy
eSAqL0Jsb2NrLl9fKDE4LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIENseiAqLzBdKV0pOwor
Cit2YXIgaTY0X2N0eiA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBJNjQgKi9CbG9jay5f
XygxLCBbLyogQ3R6ICovMV0pXSk7CisKK3ZhciBpNjRfcG9wY250ID0gLyogVW5hcnkgKi9CbG9j
ay5fXygxOCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBQb3BjbnQgKi8yXSldKTsKKwordmFy
IGYzMl9uZWcgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjMyICovQmxvY2suX18oMiwg
Wy8qIE5lZyAqLzBdKV0pOworCit2YXIgZjMyX2FicyA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgs
IFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogQWJzICovMV0pXSk7CisKK3ZhciBmMzJfc3FydCA9
IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogU3FydCAq
LzZdKV0pOworCit2YXIgZjMyX2NlaWwgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjMy
ICovQmxvY2suX18oMiwgWy8qIENlaWwgKi8yXSldKTsKKwordmFyIGYzMl9mbG9vciA9IC8qIFVu
YXJ5ICovQmxvY2suX18oMTgsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogRmxvb3IgKi8zXSld
KTsKKwordmFyIGYzMl90cnVuYyA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGMzIgKi9C
bG9jay5fXygyLCBbLyogVHJ1bmMgKi80XSldKTsKKwordmFyIGYzMl9uZWFyZXN0ID0gLyogVW5h
cnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBOZWFyZXN0ICovNV0p
XSk7CisKK3ZhciBmNjRfbmVnID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEY2NCAqL0Js
b2NrLl9fKDMsIFsvKiBOZWcgKi8wXSldKTsKKwordmFyIGY2NF9hYnMgPSAvKiBVbmFyeSAqL0Js
b2NrLl9fKDE4LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIEFicyAqLzFdKV0pOworCit2YXIg
ZjY0X3NxcnQgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjY0ICovQmxvY2suX18oMywg
Wy8qIFNxcnQgKi82XSldKTsKKwordmFyIGY2NF9jZWlsID0gLyogVW5hcnkgKi9CbG9jay5fXygx
OCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBDZWlsICovMl0pXSk7CisKK3ZhciBmNjRfZmxv
b3IgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIEZs
b29yICovM10pXSk7CisKK3ZhciBmNjRfdHJ1bmMgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBb
LyogRjY0ICovQmxvY2suX18oMywgWy8qIFRydW5jICovNF0pXSk7CisKK3ZhciBmNjRfbmVhcmVz
dCA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTmVh
cmVzdCAqLzVdKV0pOworCit2YXIgaTMyX2FkZCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBb
LyogSTMyICovQmxvY2suX18oMCwgWy8qIEFkZCAqLzBdKV0pOworCit2YXIgaTMyX3N1YiA9IC8q
IEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFN1YiAqLzFd
KV0pOworCit2YXIgaTMyX211bCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICov
QmxvY2suX18oMCwgWy8qIE11bCAqLzJdKV0pOworCit2YXIgaTMyX2Rpdl9zID0gLyogQmluYXJ5
ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogRGl2UyAqLzNdKV0pOwor
Cit2YXIgaTMyX2Rpdl91ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9j
ay5fXygwLCBbLyogRGl2VSAqLzRdKV0pOworCit2YXIgaTMyX3JlbV9zID0gLyogQmluYXJ5ICov
QmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogUmVtUyAqLzVdKV0pOworCit2
YXIgaTMyX3JlbV91ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5f
XygwLCBbLyogUmVtVSAqLzZdKV0pOworCit2YXIgaTMyX2FuZCA9IC8qIEJpbmFyeSAqL0Jsb2Nr
Ll9fKDE5LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIEFuZCAqLzddKV0pOworCit2YXIgaTMy
X29yID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyog
T3IgKi84XSldKTsKKwordmFyIGkzMl94b3IgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8q
IEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBYb3IgKi85XSldKTsKKwordmFyIGkzMl9zaGwgPSAvKiBC
aW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBTaGwgKi8xMF0p
XSk7CisKK3ZhciBpMzJfc2hyX3MgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAq
L0Jsb2NrLl9fKDAsIFsvKiBTaHJTICovMTFdKV0pOworCit2YXIgaTMyX3Nocl91ID0gLyogQmlu
YXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogU2hyVSAqLzEyXSld
KTsKKwordmFyIGkzMl9yb3RsID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9C
bG9jay5fXygwLCBbLyogUm90bCAqLzEzXSldKTsKKwordmFyIGkzMl9yb3RyID0gLyogQmluYXJ5
ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogUm90ciAqLzE0XSldKTsK
KwordmFyIGk2NF9hZGQgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2Nr
Ll9fKDEsIFsvKiBBZGQgKi8wXSldKTsKKwordmFyIGk2NF9zdWIgPSAvKiBCaW5hcnkgKi9CbG9j
ay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBTdWIgKi8xXSldKTsKKwordmFyIGk2
NF9tdWwgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsv
KiBNdWwgKi8yXSldKTsKKwordmFyIGk2NF9kaXZfcyA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5
LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIERpdlMgKi8zXSldKTsKKwordmFyIGk2NF9kaXZf
dSA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIERp
dlUgKi80XSldKTsKKwordmFyIGk2NF9yZW1fcyA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBb
LyogSTY0ICovQmxvY2suX18oMSwgWy8qIFJlbVMgKi81XSldKTsKKwordmFyIGk2NF9yZW1fdSA9
IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIFJlbVUg
Ki82XSldKTsKKwordmFyIGk2NF9hbmQgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2
NCAqL0Jsb2NrLl9fKDEsIFsvKiBBbmQgKi83XSldKTsKKwordmFyIGk2NF9vciA9IC8qIEJpbmFy
eSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIE9yICovOF0pXSk7CisK
K3ZhciBpNjRfeG9yID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5f
XygxLCBbLyogWG9yICovOV0pXSk7CisKK3ZhciBpNjRfc2hsID0gLyogQmluYXJ5ICovQmxvY2su
X18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogU2hsICovMTBdKV0pOworCit2YXIgaTY0
X3Nocl9zID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBb
LyogU2hyUyAqLzExXSldKTsKKwordmFyIGk2NF9zaHJfdSA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9f
KDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIFNoclUgKi8xMl0pXSk7CisKK3ZhciBpNjRf
cm90bCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8q
IFJvdGwgKi8xM10pXSk7CisKK3ZhciBpNjRfcm90ciA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5
LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIFJvdHIgKi8xNF0pXSk7CisKK3ZhciBmMzJfYWRk
ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogQWRk
ICovMF0pXSk7CisKK3ZhciBmMzJfc3ViID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBG
MzIgKi9CbG9jay5fXygyLCBbLyogU3ViICovMV0pXSk7CisKK3ZhciBmMzJfbXVsID0gLyogQmlu
YXJ5ICovQmxvY2suX18oMTksIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogTXVsICovMl0pXSk7
CisKK3ZhciBmMzJfZGl2ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGMzIgKi9CbG9j
ay5fXygyLCBbLyogRGl2ICovM10pXSk7CisKK3ZhciBmMzJfbWluID0gLyogQmluYXJ5ICovQmxv
Y2suX18oMTksIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogTWluICovNF0pXSk7CisKK3ZhciBm
MzJfbWF4ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGMzIgKi9CbG9jay5fXygyLCBb
LyogTWF4ICovNV0pXSk7CisKK3ZhciBmMzJfY29weXNpZ24gPSAvKiBCaW5hcnkgKi9CbG9jay5f
XygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBDb3B5U2lnbiAqLzZdKV0pOworCit2YXIg
ZjY0X2FkZCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogRjY0ICovQmxvY2suX18oMywg
Wy8qIEFkZCAqLzBdKV0pOworCit2YXIgZjY0X3N1YiA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5
LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIFN1YiAqLzFdKV0pOworCit2YXIgZjY0X211bCA9
IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIE11bCAq
LzJdKV0pOworCit2YXIgZjY0X2RpdiA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogRjY0
ICovQmxvY2suX18oMywgWy8qIERpdiAqLzNdKV0pOworCit2YXIgZjY0X21pbiA9IC8qIEJpbmFy
eSAqL0Jsb2NrLl9fKDE5LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIE1pbiAqLzRdKV0pOwor
Cit2YXIgZjY0X21heCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogRjY0ICovQmxvY2su
X18oMywgWy8qIE1heCAqLzVdKV0pOworCit2YXIgZjY0X2NvcHlzaWduID0gLyogQmluYXJ5ICov
QmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQ29weVNpZ24gKi82XSldKTsK
KwordmFyIGkzMl9lcXogPSAvKiBUZXN0ICovQmxvY2suX18oMTYsIFsvKiBJMzIgKi9CbG9jay5f
XygwLCBbLyogRXF6ICovMF0pXSk7CisKK3ZhciBpNjRfZXF6ID0gLyogVGVzdCAqL0Jsb2NrLl9f
KDE2LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIEVxeiAqLzBdKV0pOworCit2YXIgaTMyX2Vx
ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIEVx
ICovMF0pXSk7CisKK3ZhciBpMzJfbmUgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJ
MzIgKi9CbG9jay5fXygwLCBbLyogTmUgKi8xXSldKTsKKwordmFyIGkzMl9sdF9zID0gLyogQ29t
cGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIEx0UyAqLzJdKV0p
OworCit2YXIgaTMyX2x0X3UgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9C
bG9jay5fXygwLCBbLyogTHRVICovM10pXSk7CisKK3ZhciBpMzJfbGVfcyA9IC8qIENvbXBhcmUg
Ki9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBMZVMgKi82XSldKTsKKwor
dmFyIGkzMl9sZV91ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTMyICovQmxvY2su
X18oMCwgWy8qIExlVSAqLzddKV0pOworCit2YXIgaTMyX2d0X3MgPSAvKiBDb21wYXJlICovQmxv
Y2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogR3RTICovNF0pXSk7CisKK3ZhciBp
MzJfZ3RfdSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAs
IFsvKiBHdFUgKi81XSldKTsKKwordmFyIGkzMl9nZV9zID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9f
KDE3LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIEdlUyAqLzhdKV0pOworCit2YXIgaTMyX2dl
X3UgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyog
R2VVICovOV0pXSk7CisKK3ZhciBpNjRfZXEgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsv
KiBJNjQgKi9CbG9jay5fXygxLCBbLyogRXEgKi8wXSldKTsKKwordmFyIGk2NF9uZSA9IC8qIENv
bXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBOZSAqLzFdKV0p
OworCit2YXIgaTY0X2x0X3MgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJNjQgKi9C
bG9jay5fXygxLCBbLyogTHRTICovMl0pXSk7CisKK3ZhciBpNjRfbHRfdSA9IC8qIENvbXBhcmUg
Ki9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBMdFUgKi8zXSldKTsKKwor
dmFyIGk2NF9sZV9zID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2su
X18oMSwgWy8qIExlUyAqLzZdKV0pOworCit2YXIgaTY0X2xlX3UgPSAvKiBDb21wYXJlICovQmxv
Y2suX18oMTcsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogTGVVICovN10pXSk7CisKK3ZhciBp
NjRfZ3RfcyA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEs
IFsvKiBHdFMgKi80XSldKTsKKwordmFyIGk2NF9ndF91ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9f
KDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIEd0VSAqLzVdKV0pOworCit2YXIgaTY0X2dl
X3MgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyog
R2VTICovOF0pXSk7CisKK3ZhciBpNjRfZ2VfdSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywg
Wy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBHZVUgKi85XSldKTsKKwordmFyIGYzMl9lcSA9IC8q
IENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBFcSAqLzBd
KV0pOworCit2YXIgZjMyX25lID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjMyICov
QmxvY2suX18oMiwgWy8qIE5lICovMV0pXSk7CisKK3ZhciBmMzJfbHQgPSAvKiBDb21wYXJlICov
QmxvY2suX18oMTcsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogTHQgKi8yXSldKTsKKwordmFy
IGYzMl9sZSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEYzMiAqL0Jsb2NrLl9fKDIs
IFsvKiBMZSAqLzRdKV0pOworCit2YXIgZjMyX2d0ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3
LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIEd0ICovM10pXSk7CisKK3ZhciBmMzJfZ2UgPSAv
KiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogR2UgKi81
XSldKTsKKwordmFyIGY2NF9lcSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEY2NCAq
L0Jsb2NrLl9fKDMsIFsvKiBFcSAqLzBdKV0pOworCit2YXIgZjY0X25lID0gLyogQ29tcGFyZSAq
L0Jsb2NrLl9fKDE3LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIE5lICovMV0pXSk7CisKK3Zh
ciBmNjRfbHQgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGNjQgKi9CbG9jay5fXygz
LCBbLyogTHQgKi8yXSldKTsKKwordmFyIGY2NF9sZSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygx
NywgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBMZSAqLzRdKV0pOworCit2YXIgZjY0X2d0ID0g
LyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIEd0ICov
M10pXSk7CisKK3ZhciBmNjRfZ2UgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGNjQg
Ki9CbG9jay5fXygzLCBbLyogR2UgKi81XSldKTsKKwordmFyIGkzMl93cmFwX2k2NCA9IC8qIENv
bnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBXcmFwSTY0ICov
Ml0pXSk7CisKK3ZhciBpMzJfdHJ1bmNfc19mMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAs
IFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogVHJ1bmNTRjMyICovM10pXSk7CisKK3ZhciBpMzJf
dHJ1bmNfdV9mMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJMzIgKi9CbG9jay5f
XygwLCBbLyogVHJ1bmNVRjMyICovNF0pXSk7CisKK3ZhciBpMzJfdHJ1bmNfc19mNjQgPSAvKiBD
b252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogVHJ1bmNTRjY0
ICovNV0pXSk7CisKK3ZhciBpMzJfdHJ1bmNfdV9mNjQgPSAvKiBDb252ZXJ0ICovQmxvY2suX18o
MjAsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogVHJ1bmNVRjY0ICovNl0pXSk7CisKK3ZhciBp
NjRfZXh0ZW5kX3NfaTMyID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogSTY0ICovQmxv
Y2suX18oMSwgWy8qIEV4dGVuZFNJMzIgKi8wXSldKTsKKwordmFyIGk2NF9leHRlbmRfdV9pMzIg
PSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogRXh0
ZW5kVUkzMiAqLzFdKV0pOworCit2YXIgaTY0X3RydW5jX3NfZjMyID0gLyogQ29udmVydCAqL0Js
b2NrLl9fKDIwLCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIFRydW5jU0YzMiAqLzNdKV0pOwor
Cit2YXIgaTY0X3RydW5jX3VfZjMyID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogSTY0
ICovQmxvY2suX18oMSwgWy8qIFRydW5jVUYzMiAqLzRdKV0pOworCit2YXIgaTY0X3RydW5jX3Nf
ZjY0ID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8q
IFRydW5jU0Y2NCAqLzVdKV0pOworCit2YXIgaTY0X3RydW5jX3VfZjY0ID0gLyogQ29udmVydCAq
L0Jsb2NrLl9fKDIwLCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIFRydW5jVUY2NCAqLzZdKV0p
OworCit2YXIgZjMyX2NvbnZlcnRfc19pMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsv
KiBGMzIgKi9CbG9jay5fXygyLCBbLyogQ29udmVydFNJMzIgKi8wXSldKTsKKwordmFyIGYzMl9j
b252ZXJ0X3VfaTMyID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjMyICovQmxvY2su
X18oMiwgWy8qIENvbnZlcnRVSTMyICovMV0pXSk7CisKK3ZhciBmMzJfY29udmVydF9zX2k2NCA9
IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBDb252
ZXJ0U0k2NCAqLzJdKV0pOworCit2YXIgZjMyX2NvbnZlcnRfdV9pNjQgPSAvKiBDb252ZXJ0ICov
QmxvY2suX18oMjAsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogQ29udmVydFVJNjQgKi8zXSld
KTsKKwordmFyIGYzMl9kZW1vdGVfZjY0ID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyog
RjMyICovQmxvY2suX18oMiwgWy8qIERlbW90ZUY2NCAqLzVdKV0pOworCit2YXIgZjY0X2NvbnZl
cnRfc19pMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBGNjQgKi9CbG9jay5fXygz
LCBbLyogQ29udmVydFNJMzIgKi8wXSldKTsKKwordmFyIGY2NF9jb252ZXJ0X3VfaTMyID0gLyog
Q29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIENvbnZlcnRV
STMyICovMV0pXSk7CisKK3ZhciBmNjRfY29udmVydF9zX2k2NCA9IC8qIENvbnZlcnQgKi9CbG9j
ay5fXygyMCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBDb252ZXJ0U0k2NCAqLzJdKV0pOwor
Cit2YXIgZjY0X2NvbnZlcnRfdV9pNjQgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBG
NjQgKi9CbG9jay5fXygzLCBbLyogQ29udmVydFVJNjQgKi8zXSldKTsKKwordmFyIGY2NF9wcm9t
b3RlX2YzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMs
IFsvKiBQcm9tb3RlRjMyICovNF0pXSk7CisKK3ZhciBpMzJfcmVpbnRlcnByZXRfZjMyID0gLyog
Q29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFJlaW50ZXJw
cmV0RmxvYXQgKi83XSldKTsKKwordmFyIGk2NF9yZWludGVycHJldF9mNjQgPSAvKiBDb252ZXJ0
ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogUmVpbnRlcnByZXRGbG9h
dCAqLzddKV0pOworCit2YXIgZjMyX3JlaW50ZXJwcmV0X2kzMiA9IC8qIENvbnZlcnQgKi9CbG9j
ay5fXygyMCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBSZWludGVycHJldEludCAqLzZdKV0p
OworCit2YXIgZjY0X3JlaW50ZXJwcmV0X2k2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwg
Wy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBSZWludGVycHJldEludCAqLzZdKV0pOworCit2YXIg
Y3VycmVudF9tZW1vcnkgPSAvKiBDdXJyZW50TWVtb3J5ICovNTsKKwordmFyIGdyb3dfbWVtb3J5
ID0gLyogR3Jvd01lbW9yeSAqLzY7CisKK2V4cG9ydHMuaTMyX2NvbnN0ICAgICAgICAgICA9IGkz
Ml9jb25zdDsKK2V4cG9ydHMuaTY0X2NvbnN0ICAgICAgICAgICA9IGk2NF9jb25zdDsKK2V4cG9y
dHMuZjMyX2NvbnN0ICAgICAgICAgICA9IGYzMl9jb25zdDsKK2V4cG9ydHMuZjY0X2NvbnN0ICAg
ICAgICAgICA9IGY2NF9jb25zdDsKK2V4cG9ydHMudW5yZWFjaGFibGUgICAgICAgICA9IHVucmVh
Y2hhYmxlOworZXhwb3J0cy5ub3AgICAgICAgICAgICAgICAgID0gbm9wOworZXhwb3J0cy5kcm9w
ICAgICAgICAgICAgICAgID0gZHJvcDsKK2V4cG9ydHMuYmxvY2sgICAgICAgICAgICAgICA9IGJs
b2NrOworZXhwb3J0cy5sb29wICAgICAgICAgICAgICAgID0gbG9vcDsKK2V4cG9ydHMuYnIgICAg
ICAgICAgICAgICAgICA9IGJyOworZXhwb3J0cy5icl9pZiAgICAgICAgICAgICAgID0gYnJfaWY7
CitleHBvcnRzLmJyX3RhYmxlICAgICAgICAgICAgPSBicl90YWJsZTsKK2V4cG9ydHMuJCRyZXR1
cm4gICAgICAgICAgICA9ICQkcmV0dXJuOworZXhwb3J0cy5pZl8gICAgICAgICAgICAgICAgID0g
aWZfOworZXhwb3J0cy5zZWxlY3QgICAgICAgICAgICAgID0gc2VsZWN0OworZXhwb3J0cy5jYWxs
ICAgICAgICAgICAgICAgID0gY2FsbDsKK2V4cG9ydHMuY2FsbF9pbmRpcmVjdCAgICAgICA9IGNh
bGxfaW5kaXJlY3Q7CitleHBvcnRzLmdldF9sb2NhbCAgICAgICAgICAgPSBnZXRfbG9jYWw7Citl
eHBvcnRzLnNldF9sb2NhbCAgICAgICAgICAgPSBzZXRfbG9jYWw7CitleHBvcnRzLnRlZV9sb2Nh
bCAgICAgICAgICAgPSB0ZWVfbG9jYWw7CitleHBvcnRzLmdldF9nbG9iYWwgICAgICAgICAgPSBn
ZXRfZ2xvYmFsOworZXhwb3J0cy5zZXRfZ2xvYmFsICAgICAgICAgID0gc2V0X2dsb2JhbDsKK2V4
cG9ydHMuaTMyX2xvYWQgICAgICAgICAgICA9IGkzMl9sb2FkOworZXhwb3J0cy5pNjRfbG9hZCAg
ICAgICAgICAgID0gaTY0X2xvYWQ7CitleHBvcnRzLmYzMl9sb2FkICAgICAgICAgICAgPSBmMzJf
bG9hZDsKK2V4cG9ydHMuZjY0X2xvYWQgICAgICAgICAgICA9IGY2NF9sb2FkOworZXhwb3J0cy5p
MzJfbG9hZDhfcyAgICAgICAgID0gaTMyX2xvYWQ4X3M7CitleHBvcnRzLmkzMl9sb2FkOF91ICAg
ICAgICAgPSBpMzJfbG9hZDhfdTsKK2V4cG9ydHMuaTMyX2xvYWQxNl9zICAgICAgICA9IGkzMl9s
b2FkMTZfczsKK2V4cG9ydHMuaTMyX2xvYWQxNl91ICAgICAgICA9IGkzMl9sb2FkMTZfdTsKK2V4
cG9ydHMuaTY0X2xvYWQ4X3MgICAgICAgICA9IGk2NF9sb2FkOF9zOworZXhwb3J0cy5pNjRfbG9h
ZDhfdSAgICAgICAgID0gaTY0X2xvYWQ4X3U7CitleHBvcnRzLmk2NF9sb2FkMTZfcyAgICAgICAg
PSBpNjRfbG9hZDE2X3M7CitleHBvcnRzLmk2NF9sb2FkMTZfdSAgICAgICAgPSBpNjRfbG9hZDE2
X3U7CitleHBvcnRzLmk2NF9sb2FkMzJfcyAgICAgICAgPSBpNjRfbG9hZDMyX3M7CitleHBvcnRz
Lmk2NF9sb2FkMzJfdSAgICAgICAgPSBpNjRfbG9hZDMyX3U7CitleHBvcnRzLmkzMl9zdG9yZSAg
ICAgICAgICAgPSBpMzJfc3RvcmU7CitleHBvcnRzLmk2NF9zdG9yZSAgICAgICAgICAgPSBpNjRf
c3RvcmU7CitleHBvcnRzLmYzMl9zdG9yZSAgICAgICAgICAgPSBmMzJfc3RvcmU7CitleHBvcnRz
LmY2NF9zdG9yZSAgICAgICAgICAgPSBmNjRfc3RvcmU7CitleHBvcnRzLmkzMl9zdG9yZTggICAg
ICAgICAgPSBpMzJfc3RvcmU4OworZXhwb3J0cy5pMzJfc3RvcmUxNiAgICAgICAgID0gaTMyX3N0
b3JlMTY7CitleHBvcnRzLmk2NF9zdG9yZTggICAgICAgICAgPSBpNjRfc3RvcmU4OworZXhwb3J0
cy5pNjRfc3RvcmUxNiAgICAgICAgID0gaTY0X3N0b3JlMTY7CitleHBvcnRzLmk2NF9zdG9yZTMy
ICAgICAgICAgPSBpNjRfc3RvcmUzMjsKK2V4cG9ydHMuaTMyX2NseiAgICAgICAgICAgICA9IGkz
Ml9jbHo7CitleHBvcnRzLmkzMl9jdHogICAgICAgICAgICAgPSBpMzJfY3R6OworZXhwb3J0cy5p
MzJfcG9wY250ICAgICAgICAgID0gaTMyX3BvcGNudDsKK2V4cG9ydHMuaTY0X2NseiAgICAgICAg
ICAgICA9IGk2NF9jbHo7CitleHBvcnRzLmk2NF9jdHogICAgICAgICAgICAgPSBpNjRfY3R6Owor
ZXhwb3J0cy5pNjRfcG9wY250ICAgICAgICAgID0gaTY0X3BvcGNudDsKK2V4cG9ydHMuZjMyX25l
ZyAgICAgICAgICAgICA9IGYzMl9uZWc7CitleHBvcnRzLmYzMl9hYnMgICAgICAgICAgICAgPSBm
MzJfYWJzOworZXhwb3J0cy5mMzJfc3FydCAgICAgICAgICAgID0gZjMyX3NxcnQ7CitleHBvcnRz
LmYzMl9jZWlsICAgICAgICAgICAgPSBmMzJfY2VpbDsKK2V4cG9ydHMuZjMyX2Zsb29yICAgICAg
ICAgICA9IGYzMl9mbG9vcjsKK2V4cG9ydHMuZjMyX3RydW5jICAgICAgICAgICA9IGYzMl90cnVu
YzsKK2V4cG9ydHMuZjMyX25lYXJlc3QgICAgICAgICA9IGYzMl9uZWFyZXN0OworZXhwb3J0cy5m
NjRfbmVnICAgICAgICAgICAgID0gZjY0X25lZzsKK2V4cG9ydHMuZjY0X2FicyAgICAgICAgICAg
ICA9IGY2NF9hYnM7CitleHBvcnRzLmY2NF9zcXJ0ICAgICAgICAgICAgPSBmNjRfc3FydDsKK2V4
cG9ydHMuZjY0X2NlaWwgICAgICAgICAgICA9IGY2NF9jZWlsOworZXhwb3J0cy5mNjRfZmxvb3Ig
ICAgICAgICAgID0gZjY0X2Zsb29yOworZXhwb3J0cy5mNjRfdHJ1bmMgICAgICAgICAgID0gZjY0
X3RydW5jOworZXhwb3J0cy5mNjRfbmVhcmVzdCAgICAgICAgID0gZjY0X25lYXJlc3Q7CitleHBv
cnRzLmkzMl9hZGQgICAgICAgICAgICAgPSBpMzJfYWRkOworZXhwb3J0cy5pMzJfc3ViICAgICAg
ICAgICAgID0gaTMyX3N1YjsKK2V4cG9ydHMuaTMyX211bCAgICAgICAgICAgICA9IGkzMl9tdWw7
CitleHBvcnRzLmkzMl9kaXZfcyAgICAgICAgICAgPSBpMzJfZGl2X3M7CitleHBvcnRzLmkzMl9k
aXZfdSAgICAgICAgICAgPSBpMzJfZGl2X3U7CitleHBvcnRzLmkzMl9yZW1fcyAgICAgICAgICAg
PSBpMzJfcmVtX3M7CitleHBvcnRzLmkzMl9yZW1fdSAgICAgICAgICAgPSBpMzJfcmVtX3U7Citl
eHBvcnRzLmkzMl9hbmQgICAgICAgICAgICAgPSBpMzJfYW5kOworZXhwb3J0cy5pMzJfb3IgICAg
ICAgICAgICAgID0gaTMyX29yOworZXhwb3J0cy5pMzJfeG9yICAgICAgICAgICAgID0gaTMyX3hv
cjsKK2V4cG9ydHMuaTMyX3NobCAgICAgICAgICAgICA9IGkzMl9zaGw7CitleHBvcnRzLmkzMl9z
aHJfcyAgICAgICAgICAgPSBpMzJfc2hyX3M7CitleHBvcnRzLmkzMl9zaHJfdSAgICAgICAgICAg
PSBpMzJfc2hyX3U7CitleHBvcnRzLmkzMl9yb3RsICAgICAgICAgICAgPSBpMzJfcm90bDsKK2V4
cG9ydHMuaTMyX3JvdHIgICAgICAgICAgICA9IGkzMl9yb3RyOworZXhwb3J0cy5pNjRfYWRkICAg
ICAgICAgICAgID0gaTY0X2FkZDsKK2V4cG9ydHMuaTY0X3N1YiAgICAgICAgICAgICA9IGk2NF9z
dWI7CitleHBvcnRzLmk2NF9tdWwgICAgICAgICAgICAgPSBpNjRfbXVsOworZXhwb3J0cy5pNjRf
ZGl2X3MgICAgICAgICAgID0gaTY0X2Rpdl9zOworZXhwb3J0cy5pNjRfZGl2X3UgICAgICAgICAg
ID0gaTY0X2Rpdl91OworZXhwb3J0cy5pNjRfcmVtX3MgICAgICAgICAgID0gaTY0X3JlbV9zOwor
ZXhwb3J0cy5pNjRfcmVtX3UgICAgICAgICAgID0gaTY0X3JlbV91OworZXhwb3J0cy5pNjRfYW5k
ICAgICAgICAgICAgID0gaTY0X2FuZDsKK2V4cG9ydHMuaTY0X29yICAgICAgICAgICAgICA9IGk2
NF9vcjsKK2V4cG9ydHMuaTY0X3hvciAgICAgICAgICAgICA9IGk2NF94b3I7CitleHBvcnRzLmk2
NF9zaGwgICAgICAgICAgICAgPSBpNjRfc2hsOworZXhwb3J0cy5pNjRfc2hyX3MgICAgICAgICAg
ID0gaTY0X3Nocl9zOworZXhwb3J0cy5pNjRfc2hyX3UgICAgICAgICAgID0gaTY0X3Nocl91Owor
ZXhwb3J0cy5pNjRfcm90bCAgICAgICAgICAgID0gaTY0X3JvdGw7CitleHBvcnRzLmk2NF9yb3Ry
ICAgICAgICAgICAgPSBpNjRfcm90cjsKK2V4cG9ydHMuZjMyX2FkZCAgICAgICAgICAgICA9IGYz
Ml9hZGQ7CitleHBvcnRzLmYzMl9zdWIgICAgICAgICAgICAgPSBmMzJfc3ViOworZXhwb3J0cy5m
MzJfbXVsICAgICAgICAgICAgID0gZjMyX211bDsKK2V4cG9ydHMuZjMyX2RpdiAgICAgICAgICAg
ICA9IGYzMl9kaXY7CitleHBvcnRzLmYzMl9taW4gICAgICAgICAgICAgPSBmMzJfbWluOworZXhw
b3J0cy5mMzJfbWF4ICAgICAgICAgICAgID0gZjMyX21heDsKK2V4cG9ydHMuZjMyX2NvcHlzaWdu
ICAgICAgICA9IGYzMl9jb3B5c2lnbjsKK2V4cG9ydHMuZjY0X2FkZCAgICAgICAgICAgICA9IGY2
NF9hZGQ7CitleHBvcnRzLmY2NF9zdWIgICAgICAgICAgICAgPSBmNjRfc3ViOworZXhwb3J0cy5m
NjRfbXVsICAgICAgICAgICAgID0gZjY0X211bDsKK2V4cG9ydHMuZjY0X2RpdiAgICAgICAgICAg
ICA9IGY2NF9kaXY7CitleHBvcnRzLmY2NF9taW4gICAgICAgICAgICAgPSBmNjRfbWluOworZXhw
b3J0cy5mNjRfbWF4ICAgICAgICAgICAgID0gZjY0X21heDsKK2V4cG9ydHMuZjY0X2NvcHlzaWdu
ICAgICAgICA9IGY2NF9jb3B5c2lnbjsKK2V4cG9ydHMuaTMyX2VxeiAgICAgICAgICAgICA9IGkz
Ml9lcXo7CitleHBvcnRzLmk2NF9lcXogICAgICAgICAgICAgPSBpNjRfZXF6OworZXhwb3J0cy5p
MzJfZXEgICAgICAgICAgICAgID0gaTMyX2VxOworZXhwb3J0cy5pMzJfbmUgICAgICAgICAgICAg
ID0gaTMyX25lOworZXhwb3J0cy5pMzJfbHRfcyAgICAgICAgICAgID0gaTMyX2x0X3M7CitleHBv
cnRzLmkzMl9sdF91ICAgICAgICAgICAgPSBpMzJfbHRfdTsKK2V4cG9ydHMuaTMyX2xlX3MgICAg
ICAgICAgICA9IGkzMl9sZV9zOworZXhwb3J0cy5pMzJfbGVfdSAgICAgICAgICAgID0gaTMyX2xl
X3U7CitleHBvcnRzLmkzMl9ndF9zICAgICAgICAgICAgPSBpMzJfZ3RfczsKK2V4cG9ydHMuaTMy
X2d0X3UgICAgICAgICAgICA9IGkzMl9ndF91OworZXhwb3J0cy5pMzJfZ2VfcyAgICAgICAgICAg
ID0gaTMyX2dlX3M7CitleHBvcnRzLmkzMl9nZV91ICAgICAgICAgICAgPSBpMzJfZ2VfdTsKK2V4
cG9ydHMuaTY0X2VxICAgICAgICAgICAgICA9IGk2NF9lcTsKK2V4cG9ydHMuaTY0X25lICAgICAg
ICAgICAgICA9IGk2NF9uZTsKK2V4cG9ydHMuaTY0X2x0X3MgICAgICAgICAgICA9IGk2NF9sdF9z
OworZXhwb3J0cy5pNjRfbHRfdSAgICAgICAgICAgID0gaTY0X2x0X3U7CitleHBvcnRzLmk2NF9s
ZV9zICAgICAgICAgICAgPSBpNjRfbGVfczsKK2V4cG9ydHMuaTY0X2xlX3UgICAgICAgICAgICA9
IGk2NF9sZV91OworZXhwb3J0cy5pNjRfZ3RfcyAgICAgICAgICAgID0gaTY0X2d0X3M7CitleHBv
cnRzLmk2NF9ndF91ICAgICAgICAgICAgPSBpNjRfZ3RfdTsKK2V4cG9ydHMuaTY0X2dlX3MgICAg
ICAgICAgICA9IGk2NF9nZV9zOworZXhwb3J0cy5pNjRfZ2VfdSAgICAgICAgICAgID0gaTY0X2dl
X3U7CitleHBvcnRzLmYzMl9lcSAgICAgICAgICAgICAgPSBmMzJfZXE7CitleHBvcnRzLmYzMl9u
ZSAgICAgICAgICAgICAgPSBmMzJfbmU7CitleHBvcnRzLmYzMl9sdCAgICAgICAgICAgICAgPSBm
MzJfbHQ7CitleHBvcnRzLmYzMl9sZSAgICAgICAgICAgICAgPSBmMzJfbGU7CitleHBvcnRzLmYz
Ml9ndCAgICAgICAgICAgICAgPSBmMzJfZ3Q7CitleHBvcnRzLmYzMl9nZSAgICAgICAgICAgICAg
PSBmMzJfZ2U7CitleHBvcnRzLmY2NF9lcSAgICAgICAgICAgICAgPSBmNjRfZXE7CitleHBvcnRz
LmY2NF9uZSAgICAgICAgICAgICAgPSBmNjRfbmU7CitleHBvcnRzLmY2NF9sdCAgICAgICAgICAg
ICAgPSBmNjRfbHQ7CitleHBvcnRzLmY2NF9sZSAgICAgICAgICAgICAgPSBmNjRfbGU7CitleHBv
cnRzLmY2NF9ndCAgICAgICAgICAgICAgPSBmNjRfZ3Q7CitleHBvcnRzLmY2NF9nZSAgICAgICAg
ICAgICAgPSBmNjRfZ2U7CitleHBvcnRzLmkzMl93cmFwX2k2NCAgICAgICAgPSBpMzJfd3JhcF9p
NjQ7CitleHBvcnRzLmkzMl90cnVuY19zX2YzMiAgICAgPSBpMzJfdHJ1bmNfc19mMzI7CitleHBv
cnRzLmkzMl90cnVuY191X2YzMiAgICAgPSBpMzJfdHJ1bmNfdV9mMzI7CitleHBvcnRzLmkzMl90
cnVuY19zX2Y2NCAgICAgPSBpMzJfdHJ1bmNfc19mNjQ7CitleHBvcnRzLmkzMl90cnVuY191X2Y2
NCAgICAgPSBpMzJfdHJ1bmNfdV9mNjQ7CitleHBvcnRzLmk2NF9leHRlbmRfc19pMzIgICAgPSBp
NjRfZXh0ZW5kX3NfaTMyOworZXhwb3J0cy5pNjRfZXh0ZW5kX3VfaTMyICAgID0gaTY0X2V4dGVu
ZF91X2kzMjsKK2V4cG9ydHMuaTY0X3RydW5jX3NfZjMyICAgICA9IGk2NF90cnVuY19zX2YzMjsK
K2V4cG9ydHMuaTY0X3RydW5jX3VfZjMyICAgICA9IGk2NF90cnVuY191X2YzMjsKK2V4cG9ydHMu
aTY0X3RydW5jX3NfZjY0ICAgICA9IGk2NF90cnVuY19zX2Y2NDsKK2V4cG9ydHMuaTY0X3RydW5j
X3VfZjY0ICAgICA9IGk2NF90cnVuY191X2Y2NDsKK2V4cG9ydHMuZjMyX2NvbnZlcnRfc19pMzIg
ICA9IGYzMl9jb252ZXJ0X3NfaTMyOworZXhwb3J0cy5mMzJfY29udmVydF91X2kzMiAgID0gZjMy
X2NvbnZlcnRfdV9pMzI7CitleHBvcnRzLmYzMl9jb252ZXJ0X3NfaTY0ICAgPSBmMzJfY29udmVy
dF9zX2k2NDsKK2V4cG9ydHMuZjMyX2NvbnZlcnRfdV9pNjQgICA9IGYzMl9jb252ZXJ0X3VfaTY0
OworZXhwb3J0cy5mMzJfZGVtb3RlX2Y2NCAgICAgID0gZjMyX2RlbW90ZV9mNjQ7CitleHBvcnRz
LmY2NF9jb252ZXJ0X3NfaTMyICAgPSBmNjRfY29udmVydF9zX2kzMjsKK2V4cG9ydHMuZjY0X2Nv
bnZlcnRfdV9pMzIgICA9IGY2NF9jb252ZXJ0X3VfaTMyOworZXhwb3J0cy5mNjRfY29udmVydF9z
X2k2NCAgID0gZjY0X2NvbnZlcnRfc19pNjQ7CitleHBvcnRzLmY2NF9jb252ZXJ0X3VfaTY0ICAg
PSBmNjRfY29udmVydF91X2k2NDsKK2V4cG9ydHMuZjY0X3Byb21vdGVfZjMyICAgICA9IGY2NF9w
cm9tb3RlX2YzMjsKK2V4cG9ydHMuaTMyX3JlaW50ZXJwcmV0X2YzMiA9IGkzMl9yZWludGVycHJl
dF9mMzI7CitleHBvcnRzLmk2NF9yZWludGVycHJldF9mNjQgPSBpNjRfcmVpbnRlcnByZXRfZjY0
OworZXhwb3J0cy5mMzJfcmVpbnRlcnByZXRfaTMyID0gZjMyX3JlaW50ZXJwcmV0X2kzMjsKK2V4
cG9ydHMuZjY0X3JlaW50ZXJwcmV0X2k2NCA9IGY2NF9yZWludGVycHJldF9pNjQ7CitleHBvcnRz
LmN1cnJlbnRfbWVtb3J5ICAgICAgPSBjdXJyZW50X21lbW9yeTsKK2V4cG9ydHMuZ3Jvd19tZW1v
cnkgICAgICAgICA9IGdyb3dfbWVtb3J5OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8v
IGVuZCBvZiBvcGVyYXRvcnMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAg
fTsKKworCisgIF9yZWdpc3RyeVsncGFyc2UnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4
cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHBhcnNlLmpzIC8vLy8vLy8vCisvLyBHZW5l
cmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENB
UkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL2N1cnJ5Iik7Cit2YXIgTGV4ZXIgICAgPSByZXF1aXJlKCIuL2xleGVyIik7Cit2YXIg
TGV4aW5nICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvbGV4aW5nIik7Cit2YXIgUGFy
c2VyICAgPSByZXF1aXJlKCIuL3BhcnNlciIpOwordmFyIFNjcmlwdCAgID0gcmVxdWlyZSgiLi9z
Y3JpcHQiKTsKK3ZhciBTb3VyY2UgICA9IHJlcXVpcmUoIi4vc291cmNlIik7Cit2YXIgQ2FtbF9v
YmogPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9vYmoiKTsKKworZnVuY3Rpb24g
cGFyc2UkcHJpbWUobmFtZSwgbGV4YnVmLCBzdGFydCkgeworICB2YXIgaW5pdCA9IGxleGJ1Zlsv
KiBsZXhfY3Vycl9wICovMTFdOworICBsZXhidWZbLyogbGV4X2N1cnJfcCAqLzExXSA9IC8qIHJl
Y29yZCAqL1sKKyAgICAvKiBwb3NfZm5hbWUgKi9uYW1lLAorICAgIC8qIHBvc19sbnVtICovaW5p
dFsvKiBwb3NfbG51bSAqLzFdLAorICAgIC8qIHBvc19ib2wgKi9pbml0Wy8qIHBvc19ib2wgKi8y
XSwKKyAgICAvKiBwb3NfY251bSAqL2luaXRbLyogcG9zX2NudW0gKi8zXQorICBdOworICB0cnkg
eworICAgIHJldHVybiBDdXJyeS5fMihzdGFydCwgTGV4ZXIudG9rZW4sIGxleGJ1Zik7CisgIH0K
KyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4blswXSA9PT0gU2NyaXB0LlN5bnRheCkgeworICAg
ICAgdmFyIHJlZ2lvbiA9IGV4blsxXTsKKyAgICAgIHZhciByZWdpb24kcHJpbWUgPSBDYW1sX29i
ai5jYW1sX25vdGVxdWFsKHJlZ2lvbiwgU291cmNlLm5vX3JlZ2lvbikgPyByZWdpb24gOiAvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgLyogbGVmdCAqL0xleGVyLmNvbnZlcnRfcG9zKGxleGJ1Zlsv
KiBsZXhfc3RhcnRfcCAqLzEwXSksCisgICAgICAgICAgLyogcmlnaHQgKi9MZXhlci5jb252ZXJ0
X3BvcyhsZXhidWZbLyogbGV4X2N1cnJfcCAqLzExXSkKKyAgICAgICAgXTsKKyAgICAgIHRocm93
IFsKKyAgICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICByZWdpb24kcHJpbWUs
CisgICAgICAgICAgICBleG5bMl0KKyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIHRocm93IGV4bjsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gcGFyc2UobmFtZSwgbGV4
YnVmLCBwYXJhbSkgeworICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAwIDogCisgICAgICAg
IHJldHVybiBwYXJzZSRwcmltZShuYW1lLCBsZXhidWYsIFBhcnNlci5tb2R1bGUxKTsKKyAgICBj
YXNlIDEgOiAKKyAgICAgICAgcmV0dXJuIHBhcnNlJHByaW1lKG5hbWUsIGxleGJ1ZiwgUGFyc2Vy
LnNjcmlwdCk7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiBwYXJzZSRwcmltZShuYW1l
LCBsZXhidWYsIFBhcnNlci5zY3JpcHQxKTsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBzdHJp
bmdfdG8oc3RhcnQsIHMpIHsKKyAgdmFyIGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyhzKTsK
KyAgcmV0dXJuIHBhcnNlKCJzdHJpbmciLCBsZXhidWYsIHN0YXJ0KTsKK30KKworZnVuY3Rpb24g
c3RyaW5nX3RvX3NjcmlwdChzKSB7CisgIHJldHVybiBzdHJpbmdfdG8oLyogU2NyaXB0ICovMSwg
cyk7Cit9CisKK2Z1bmN0aW9uIHN0cmluZ190b19tb2R1bGUocykgeworICByZXR1cm4gc3RyaW5n
X3RvKC8qIE1vZHVsZSAqLzAsIHMpOworfQorCit2YXIgU3ludGF4ID0gU2NyaXB0LlN5bnRheDsK
KworZXhwb3J0cy5TeW50YXggICAgICAgICAgID0gU3ludGF4OworZXhwb3J0cy5wYXJzZSAgICAg
ICAgICAgID0gcGFyc2U7CitleHBvcnRzLnN0cmluZ190b19zY3JpcHQgPSBzdHJpbmdfdG9fc2Ny
aXB0OworZXhwb3J0cy5zdHJpbmdfdG9fbW9kdWxlID0gc3RyaW5nX3RvX21vZHVsZTsKKy8qIExl
eGVyIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgcGFyc2UuanMgLy8vLy8v
Ly8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsncGFyc2Vy
J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFy
dCBvZiBwYXJzZXIuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVS
U0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIg
QXN0ICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2FzdCIpOwordmFyIEkzMiAgICAg
ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9pMzIiKTsKK3ZhciBMaWIgICAgICAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vbGliIik7Cit2YXIgJCRNYXAgICAgICAgICAgICAgICAgICAg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvbWFwIik7Cit2YXIgTGlzdCAgICAgICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvbGlzdCIpOwordmFyIEJsb2Nr
ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7
Cit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvY3VycnkiKTsKK3ZhciBTY3JpcHQgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc2Ny
aXB0Iik7Cit2YXIgU291cmNlICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3NvdXJjZSIp
OwordmFyICQkU3RyaW5nICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGli
L2pzL3N0cmluZyIpOwordmFyIFBhcnNpbmcgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL3BhcnNpbmciKTsKK3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOwordmFyIE9wZXJhdG9ycyAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9vcGVyYXRvcnMiKTsKK3ZhciBQZXJ2YXNpdmVzICAg
ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7Cit2
YXIgQ2FtbF9mb3JtYXQgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
Y2FtbF9mb3JtYXQiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBw
YXJzZV9lcnJvcihtc2cpIHsKKyAgdmFyIG1zZyQxID0gbXNnID09PSAic3ludGF4IGVycm9yIiA/
ICJ1bmV4cGVjdGVkIHRva2VuIiA6IG1zZzsKKyAgdGhyb3cgWworICAgICAgICBTY3JpcHQuU3lu
dGF4LAorICAgICAgICBTb3VyY2Uubm9fcmVnaW9uLAorICAgICAgICBtc2ckMQorICAgICAgXTsK
K30KKworZnVuY3Rpb24gcG9zaXRpb25fdG9fcG9zKHBvc2l0aW9uKSB7CisgIHJldHVybiAvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgLyogZmlsZSAqL3Bvc2l0aW9uWy8qIHBvc19mbmFtZSAqLzBd
LAorICAgICAgICAgIC8qIGxpbmUgKi9wb3NpdGlvblsvKiBwb3NfbG51bSAqLzFdLAorICAgICAg
ICAgIC8qIGNvbHVtbiAqL3Bvc2l0aW9uWy8qIHBvc19jbnVtICovM10gLSBwb3NpdGlvblsvKiBw
b3NfYm9sICovMl0gfCAwCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHBvc2l0aW9uc190b19y
ZWdpb24ocG9zaXRpb24xLCBwb3NpdGlvbjIpIHsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAg
ICAgICAgICAvKiBsZWZ0ICovcG9zaXRpb25fdG9fcG9zKHBvc2l0aW9uMSksCisgICAgICAgICAg
LyogcmlnaHQgKi9wb3NpdGlvbl90b19wb3MocG9zaXRpb24yKQorICAgICAgICBdOworfQorCitm
dW5jdGlvbiBhdCgpIHsKKyAgcmV0dXJuIHBvc2l0aW9uc190b19yZWdpb24oUGFyc2luZy5zeW1i
b2xfc3RhcnRfcG9zKC8qICgpICovMCksIFBhcnNpbmcuc3ltYm9sX2VuZF9wb3MoLyogKCkgKi8w
KSk7Cit9CisKK2Z1bmN0aW9uIGF0aShpKSB7CisgIHJldHVybiBwb3NpdGlvbnNfdG9fcmVnaW9u
KFBhcnNpbmcucmhzX3N0YXJ0X3BvcyhpKSwgUGFyc2luZy5yaHNfZW5kX3BvcyhpKSk7Cit9CisK
K2Z1bmN0aW9uIGxpdGVyYWwoZiwgcykgeworICB0cnkgeworICAgIHJldHVybiBDdXJyeS5fMShm
LCBzKTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuWzBdID09PSBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBTY3Jp
cHQuU3ludGF4LAorICAgICAgICAgICAgc1svKiBhdCAqLzBdLAorICAgICAgICAgICAgImNvbnN0
YW50IG91dCBvZiByYW5nZSIKKyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHRocm93IGV4bjsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gbmF0KHMsIGF0KSB7CisgIHRy
eSB7CisgICAgdmFyIG4gPSBDYW1sX2Zvcm1hdC5jYW1sX2ludF9vZl9zdHJpbmcocyk7CisgICAg
aWYgKG4gPj0gMCkgeworICAgICAgcmV0dXJuIG47CisgICAgfQorICAgIGVsc2UgeworICAgICAg
dGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAg
ICAgICAgICAgICIiCisgICAgICAgICAgXTsKKyAgICB9CisgIH0KKyAgY2F0Y2ggKGV4bil7Cisg
ICAgaWYgKGV4blswXSA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSkgeworICAg
ICAgdGhyb3cgWworICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgIGF0LAor
ICAgICAgICAgICAgImludGVnZXIgY29uc3RhbnQgb3V0IG9mIHJhbmdlIgorICAgICAgICAgIF07
CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCitm
dW5jdGlvbiBuYXQzMihzLCBhdCkgeworICB0cnkgeworICAgIHJldHVybiBDdXJyeS5fMShJMzIu
b2Zfc3RyaW5nX3UsIHMpOworICB9CisgIGNhdGNoIChleG4peworICAgIGlmIChleG5bMF0gPT09
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUpIHsKKyAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICBhdCwKKyAgICAgICAgICAgICJpMzIg
Y29uc3RhbnQgb3V0IG9mIHJhbmdlIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCit2YXIgVmFyTWFwID0gJCRNYXAuTWFr
ZShbJCRTdHJpbmcuY29tcGFyZV0pOworCitmdW5jdGlvbiBlbXB0eV9jb250ZXh0KCkgeworICBy
ZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIHR5cGVzIDogcmVjb3JkICovWworICAg
ICAgICAgICAgLyogdG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdLAorICAgICAgICAgICAgLyog
dGxpc3QgOiBbXSAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIHRhYmxlcyA6IHJlY29y
ZCAqL1sKKyAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdLAorICAgICAg
ICAgICAgLyogY291bnQgKi8wCisgICAgICAgICAgXSwKKyAgICAgICAgICAvKiBtZW1vcmllcyA6
IHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdLAor
ICAgICAgICAgICAgLyogY291bnQgKi8wCisgICAgICAgICAgXSwKKyAgICAgICAgICAvKiBmdW5j
cyA6IHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBd
LAorICAgICAgICAgICAgLyogY291bnQgKi8wCisgICAgICAgICAgXSwKKyAgICAgICAgICAvKiBs
b2NhbHMgOiByZWNvcmQgKi9bCisgICAgICAgICAgICAvKiBtYXAgKi9WYXJNYXBbLyogZW1wdHkg
Ki8wXSwKKyAgICAgICAgICAgIC8qIGNvdW50ICovMAorICAgICAgICAgIF0sCisgICAgICAgICAg
LyogZ2xvYmFscyA6IHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBl
bXB0eSAqLzBdLAorICAgICAgICAgICAgLyogY291bnQgKi8wCisgICAgICAgICAgXSwKKyAgICAg
ICAgICAvKiBsYWJlbHMgKi9WYXJNYXBbLyogZW1wdHkgKi8wXQorICAgICAgICBdOworfQorCitm
dW5jdGlvbiBlbnRlcl9mdW5jKGMpIHsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAg
ICAvKiB0eXBlcyAqL2NbLyogdHlwZXMgKi8wXSwKKyAgICAgICAgICAvKiB0YWJsZXMgKi9jWy8q
IHRhYmxlcyAqLzFdLAorICAgICAgICAgIC8qIG1lbW9yaWVzICovY1svKiBtZW1vcmllcyAqLzJd
LAorICAgICAgICAgIC8qIGZ1bmNzICovY1svKiBmdW5jcyAqLzNdLAorICAgICAgICAgIC8qIGxv
Y2FscyA6IHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAq
LzBdLAorICAgICAgICAgICAgLyogY291bnQgKi8wCisgICAgICAgICAgXSwKKyAgICAgICAgICAv
KiBnbG9iYWxzICovY1svKiBnbG9iYWxzICovNV0sCisgICAgICAgICAgLyogbGFiZWxzICovVmFy
TWFwWy8qIGVtcHR5ICovMF0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gdHlwZV8oYywgeCkg
eworICB0cnkgeworICAgIHJldHVybiBDdXJyeS5fMihWYXJNYXBbLyogZmluZCAqLzIxXSwgeFsv
KiBpdCAqLzFdLCBjWy8qIHR5cGVzICovMF1bLyogdG1hcCAqLzBdKTsKKyAgfQorICBjYXRjaCAo
ZXhuKXsKKyAgICBpZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQp
IHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAg
ICB4Wy8qIGF0ICovMF0sCisgICAgICAgICAgICAidW5rbm93biB0eXBlICIgKyB4Wy8qIGl0ICov
MV0KKyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IGV4bjsKKyAg
ICB9CisgIH0KK30KKworZnVuY3Rpb24gbG9va3VwKGNhdGVnb3J5LCBzcGFjZSwgeCkgeworICB0
cnkgeworICAgIHJldHVybiBDdXJyeS5fMihWYXJNYXBbLyogZmluZCAqLzIxXSwgeFsvKiBpdCAq
LzFdLCBzcGFjZVsvKiBtYXAgKi8wXSk7CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4
biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7CisgICAgICB0aHJvdyBb
CisgICAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAor
ICAgICAgICAgICAgInVua25vd24gIiArIChjYXRlZ29yeSArICgiICIgKyB4Wy8qIGl0ICovMV0p
KQorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOworICAg
IH0KKyAgfQorfQorCitmdW5jdGlvbiBmdW5jKGMsIHgpIHsKKyAgcmV0dXJuIGxvb2t1cCgiZnVu
Y3Rpb24iLCBjWy8qIGZ1bmNzICovM10sIHgpOworfQorCitmdW5jdGlvbiBsb2NhbChjLCB4KSB7
CisgIHJldHVybiBsb29rdXAoImxvY2FsIiwgY1svKiBsb2NhbHMgKi80XSwgeCk7Cit9CisKK2Z1
bmN0aW9uIGdsb2JhbChjLCB4KSB7CisgIHJldHVybiBsb29rdXAoImdsb2JhbCIsIGNbLyogZ2xv
YmFscyAqLzVdLCB4KTsKK30KKworZnVuY3Rpb24gdGFibGUoYywgeCkgeworICByZXR1cm4gbG9v
a3VwKCJ0YWJsZSIsIGNbLyogdGFibGVzICovMV0sIHgpOworfQorCitmdW5jdGlvbiBtZW1vcnko
YywgeCkgeworICByZXR1cm4gbG9va3VwKCJtZW1vcnkiLCBjWy8qIG1lbW9yaWVzICovMl0sIHgp
OworfQorCitmdW5jdGlvbiBsYWJlbChjLCB4KSB7CisgIHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5
Ll8yKFZhck1hcFsvKiBmaW5kICovMjFdLCB4Wy8qIGl0ICovMV0sIGNbLyogbGFiZWxzICovNl0p
OworICB9CisgIGNhdGNoIChleG4peworICAgIGlmIChleG4gPT09IENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLm5vdF9mb3VuZCkgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgU2NyaXB0LlN5
bnRheCwKKyAgICAgICAgICAgIHhbLyogYXQgKi8wXSwKKyAgICAgICAgICAgICJ1bmtub3duIGxh
YmVsICIgKyB4Wy8qIGl0ICovMV0KKyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIHRocm93IGV4bjsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gYW5vbl90eXBlKGMsIHR5
KSB7CisgIGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdID0gUGVydmFzaXZlcy4kYXQoY1sv
KiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0sIC8qIDo6ICovWworICAgICAgICB0eSwKKyAgICAg
ICAgLyogW10gKi8wCisgICAgICBdKTsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rp
b24gYmluZChjYXRlZ29yeSwgc3BhY2UsIHgpIHsKKyAgaWYgKEN1cnJ5Ll8yKFZhck1hcFsvKiBt
ZW0gKi8yXSwgeFsvKiBpdCAqLzFdLCBzcGFjZVsvKiBtYXAgKi8wXSkpIHsKKyAgICB0aHJvdyBb
CisgICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICB4Wy8qIGF0ICovMF0sCisgICAg
ICAgICAgImR1cGxpY2F0ZSAiICsgKGNhdGVnb3J5ICsgKCIgIiArIHhbLyogaXQgKi8xXSkpCisg
ICAgICAgIF07CisgIH0KKyAgc3BhY2VbLyogbWFwICovMF0gPSBDdXJyeS5fMyhWYXJNYXBbLyog
YWRkICovM10sIHhbLyogaXQgKi8xXSwgc3BhY2VbLyogY291bnQgKi8xXSwgc3BhY2VbLyogbWFw
ICovMF0pOworICBzcGFjZVsvKiBjb3VudCAqLzFdID0gc3BhY2VbLyogY291bnQgKi8xXSArIDEg
fCAwOworICBpZiAoc3BhY2VbLyogY291bnQgKi8xXSkgeworICAgIHJldHVybiAwOworICB9Cisg
IGVsc2UgeworICAgIHRocm93IFsKKyAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAg
IHhbLyogYXQgKi8wXSwKKyAgICAgICAgICAidG9vIG1hbnkgIiArIChjYXRlZ29yeSArICIgYmlu
ZGluZ3MiKQorICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGJpbmRfZnVuYyhjLCB4KSB7
CisgIHJldHVybiBiaW5kKCJmdW5jdGlvbiIsIGNbLyogZnVuY3MgKi8zXSwgeCk7Cit9CisKK2Z1
bmN0aW9uIGJpbmRfbG9jYWwoYywgeCkgeworICByZXR1cm4gYmluZCgibG9jYWwiLCBjWy8qIGxv
Y2FscyAqLzRdLCB4KTsKK30KKworZnVuY3Rpb24gYmluZF9nbG9iYWwoYywgeCkgeworICByZXR1
cm4gYmluZCgiZ2xvYmFsIiwgY1svKiBnbG9iYWxzICovNV0sIHgpOworfQorCitmdW5jdGlvbiBi
aW5kX3RhYmxlKGMsIHgpIHsKKyAgcmV0dXJuIGJpbmQoInRhYmxlIiwgY1svKiB0YWJsZXMgKi8x
XSwgeCk7Cit9CisKK2Z1bmN0aW9uIGJpbmRfbWVtb3J5KGMsIHgpIHsKKyAgcmV0dXJuIGJpbmQo
Im1lbW9yeSIsIGNbLyogbWVtb3JpZXMgKi8yXSwgeCk7Cit9CisKK2Z1bmN0aW9uIGFub24oY2F0
ZWdvcnksIHNwYWNlLCBuKSB7CisgIHNwYWNlWy8qIGNvdW50ICovMV0gPSBzcGFjZVsvKiBjb3Vu
dCAqLzFdICsgbiB8IDA7CisgIGlmIChDdXJyeS5fMihJMzIubHRfdSwgc3BhY2VbLyogY291bnQg
Ki8xXSwgbikpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAg
ICAgICBTb3VyY2Uubm9fcmVnaW9uLAorICAgICAgICAgICJ0b28gbWFueSAiICsgKGNhdGVnb3J5
ICsgIiBiaW5kaW5ncyIpCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7
CisgIH0KK30KKworZnVuY3Rpb24gYW5vbl9mdW5jKGMpIHsKKyAgcmV0dXJuIGFub24oImZ1bmN0
aW9uIiwgY1svKiBmdW5jcyAqLzNdLCAxKTsKK30KKworZnVuY3Rpb24gYW5vbl9sb2NhbHMoYywg
dHMpIHsKKyAgcmV0dXJuIGFub24oImxvY2FsIiwgY1svKiBsb2NhbHMgKi80XSwgQ3VycnkuXzEo
TGliLkxpc3QzMlsvKiBsZW5ndGggKi8wXSwgdHMpKTsKK30KKworZnVuY3Rpb24gYW5vbl9nbG9i
YWwoYykgeworICByZXR1cm4gYW5vbigiZ2xvYmFsIiwgY1svKiBnbG9iYWxzICovNV0sIDEpOwor
fQorCitmdW5jdGlvbiBhbm9uX3RhYmxlKGMpIHsKKyAgcmV0dXJuIGFub24oInRhYmxlIiwgY1sv
KiB0YWJsZXMgKi8xXSwgMSk7Cit9CisKK2Z1bmN0aW9uIGFub25fbWVtb3J5KGMpIHsKKyAgcmV0
dXJuIGFub24oIm1lbW9yeSIsIGNbLyogbWVtb3JpZXMgKi8yXSwgMSk7Cit9CisKK2Z1bmN0aW9u
IGFub25fbGFiZWwoYykgeworICB2YXIgbmV3cmVjb3JkID0gYy5zbGljZSgpOworICBuZXdyZWNv
cmRbLyogbGFiZWxzICovNl0gPSBDdXJyeS5fMihWYXJNYXBbLyogbWFwICovMjJdLCBmdW5jdGlv
biAocGFyYW0pIHsKKyAgICAgICAgcmV0dXJuIDEgKyBwYXJhbSB8IDA7CisgICAgICB9LCBjWy8q
IGxhYmVscyAqLzZdKTsKKyAgcmV0dXJuIG5ld3JlY29yZDsKK30KKwordmFyIGVtcHR5X3R5cGUg
PSAvKiBGdW5jVHlwZSAqL1sKKyAgLyogW10gKi8wLAorICAvKiBbXSAqLzAKK107CisKK2Z1bmN0
aW9uIGV4cGxpY2l0X3NpZyhjLCB2YXJfc2VtLCB0eSwgYXQpIHsKKyAgdmFyIHggPSBDdXJyeS5f
Mih2YXJfc2VtLCBjLCB0eXBlXyk7CisgIGlmICh4Wy8qIGl0ICovMV0gPCBDdXJyeS5fMShMaWIu
TGlzdDMyWy8qIGxlbmd0aCAqLzBdLCBjWy8qIHR5cGVzICovMF1bLyogdGxpc3QgKi8xXSkgJiYg
Q2FtbF9vYmouY2FtbF9ub3RlcXVhbCh0eSwgZW1wdHlfdHlwZSkgJiYgQ2FtbF9vYmouY2FtbF9u
b3RlcXVhbCh0eSwgQ3VycnkuXzIoTGliLkxpc3QzMlsvKiBudGggKi8xXSwgY1svKiB0eXBlcyAq
LzBdWy8qIHRsaXN0ICovMV0sIHhbLyogaXQgKi8xXSkpKSB7CisgICAgdGhyb3cgWworICAgICAg
ICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgYXQsCisgICAgICAgICAgInNpZ25hdHVyZSBt
aXNtYXRjaCIKKyAgICAgICAgXTsKKyAgfQorICByZXR1cm4geDsKK30KKworZnVuY3Rpb24gaW5s
aW5lX3R5cGUoYywgdHksIGF0KSB7CisgIHZhciBtYXRjaCA9IEN1cnJ5Ll8yKExpYi5MaXN0Wy8q
IGluZGV4X29mICovNl0sIHR5LCBjWy8qIHR5cGVzICovMF1bLyogdGxpc3QgKi8xXSk7CisgIGlm
IChtYXRjaCkgeworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KG1hdGNoWzBdLCBhdCk7CisgIH0K
KyAgZWxzZSB7CisgICAgdmFyIGkgPSBDdXJyeS5fMShMaWIuTGlzdDMyWy8qIGxlbmd0aCAqLzBd
LCBjWy8qIHR5cGVzICovMF1bLyogdGxpc3QgKi8xXSk7CisgICAgYW5vbl90eXBlKGMsIHR5KTsK
KyAgICByZXR1cm4gU291cmNlLiRhdCRhdChpLCBhdCk7CisgIH0KK30KKwordmFyIHl5dHJhbnNs
X2NvbnN0ID0gLyogYXJyYXkgKi9bCisgIDI2MywKKyAgMjY0LAorICAyNjUsCisgIDI2NiwKKyAg
MjY3LAorICAyNjgsCisgIDI2OSwKKyAgMjcwLAorICAyNzEsCisgIDI3MiwKKyAgMjczLAorICAy
NzQsCisgIDI3NSwKKyAgMjc2LAorICAyNzcsCisgIDI3OCwKKyAgMjc5LAorICAyODAsCisgIDI4
MSwKKyAgMjgyLAorICAyODMsCisgIDI4NCwKKyAgMjg1LAorICAyODYsCisgIDI5NiwKKyAgMjk3
LAorICAyOTgsCisgIDI5OSwKKyAgMzAwLAorICAzMDEsCisgIDMwMiwKKyAgMzAzLAorICAzMDQs
CisgIDMwNSwKKyAgMzA2LAorICAzMDcsCisgIDMwOCwKKyAgMzA5LAorICAzMTAsCisgIDMxMSwK
KyAgMzEyLAorICAzMTMsCisgIDMxNCwKKyAgMzE1LAorICAzMTYsCisgIDMxNywKKyAgMzE4LAor
ICAzMTksCisgIDMyMCwKKyAgMzIxLAorICAzMjIsCisgIDMyMywKKyAgMzI0LAorICAzMjUsCisg
IDMyNiwKKyAgMzI3LAorICAwLAorICAwCitdOworCit2YXIgeXl0cmFuc2xfYmxvY2sgPSAvKiBh
cnJheSAqL1sKKyAgMjU3LAorICAyNTgsCisgIDI1OSwKKyAgMjYwLAorICAyNjEsCisgIDI2MiwK
KyAgMjg3LAorICAyODgsCisgIDI4OSwKKyAgMjkwLAorICAyOTEsCisgIDI5MiwKKyAgMjkzLAor
ICAyOTQsCisgIDI5NSwKKyAgMzI4LAorICAwCitdOworCit2YXIgeXlhY3QgPSAvKiBhcnJheSAq
L1sKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJwYXJz
ZXIiKTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAiIjsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIF8xICsgXzI7CisgIH0sCisgIGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAwKTsKKyAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICBfMSwKKyAgICAgICAg
ICAgIF8yCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAv
KiBGdW5jUmVmVHlwZSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwor
ICAgIHJldHVybiAvKiBHbG9iYWxUeXBlICovWworICAgICAgICAgICAgXzEsCisgICAgICAgICAg
ICAvKiBJbW11dGFibGUgKi8wCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgICAgcmV0dXJuIC8qIEdsb2JhbFR5cGUgKi9bCisgICAgICAgICAgICBf
MywKKyAgICAgICAgICAgIC8qIE11dGFibGUgKi8xCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgcmV0dXJuIFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJu
IC8qIEZ1bmNUeXBlICovWworICAgICAgICAgICAgLyogW10gKi8wLAorICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7
CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgdmFyIGlucyA9IF81WzBdOworICAgIGlmIChpbnMgIT09IC8qIFtdICovMCkgeworICAgICAg
dmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgICAgdGhyb3cgWworICAgICAgICAgICAgU2Ny
aXB0LlN5bnRheCwKKyAgICAgICAgICAgIGF0JDEsCisgICAgICAgICAgICAicmVzdWx0IGJlZm9y
ZSBwYXJhbWV0ZXIiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgcmV0dXJuIC8qIEZ1bmNUeXBl
ICovWworICAgICAgICAgICAgaW5zLAorICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoXzMsIF81
WzFdKQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwor
ICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAg
IHJldHVybiAvKiBGdW5jVHlwZSAqL1sKKyAgICAgICAgICAgIFBlcnZhc2l2ZXMuJGF0KF8zLCBf
NVswXSksCisgICAgICAgICAgICBfNVsxXQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDIpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDApOworICAgIHJldHVybiAvKiBGdW5jVHlwZSAqL1sKKyAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICBfNCwKKyAgICAgICAgICAgICAgXzZbMF0KKyAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICBfNlsxXQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICAgIHJldHVybiAvKiBUYWJsZVR5cGUgKi9bCisgICAgICAgICAgICBfMSwKKyAg
ICAgICAgICAgIF8yCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgICAgcmV0dXJuIC8qIE1lbW9yeVR5cGUgKi9bXzFdOworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAg
ICAgLyogbWluICovbmF0MzIoXzEsIGF0aSgxKSksCisgICAgICAgICAgICAvKiBtYXggOiBOb25l
ICovMAorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwor
ICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAvKiBtaW4gKi9uYXQzMihfMSwgYXRp
KDEpKSwKKyAgICAgICAgICAgIC8qIG1heCA6IFNvbWUgKi9bbmF0MzIoXzIsIGF0aSgyKSldCisg
ICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAg
cmV0dXJuIFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdChfMSwg
YXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAg
IHJldHVybiBTb3VyY2UuJGF0JGF0KF8xLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoXzEsIGF0KC8q
ICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICB2YXIg
YXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBfJDEpIHsKKyAg
ICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KG5hdDMyKF8xLCBhdCQxKSwgYXQkMSk7CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIGF0JDEgPSBhdCgv
KiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYywgbG9va3VwKSB7CisgICAgICByZXR1
cm4gU291cmNlLiRhdCRhdChDdXJyeS5fMihsb29rdXAsIGMsIFNvdXJjZS4kYXQkYXQoXzEsIGF0
JDEpKSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBm
dW5jdGlvbiAoXywgXyQxKSB7CisgICAgICByZXR1cm4gLyogW10gKi8wOworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYywgbG9v
a3VwKSB7CisgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgIEN1cnJ5Ll8yKF8x
LCBjLCBsb29rdXApLAorICAgICAgICAgICAgICBDdXJyeS5fMihfMiwgYywgbG9va3VwKQorICAg
ICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChjLCBhbm9uLCBfKSB7CisgICAgICByZXR1cm4gQ3VycnkuXzEoYW5vbiwgYyk7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8x
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChjLCBfLCBiaW5kKSB7CisgICAgICByZXR1cm4gQ3VycnkuXzIoYmluZCwgYywgXzEp
OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVy
biBTb3VyY2UuJGF0JGF0KF8xLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkg
eworICAgIHJldHVybiBmdW5jdGlvbiAoYywgeHMpIHsKKyAgICAgIExpc3QuaXRlcihmdW5jdGlv
biAoeCkgeworICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgU2NyaXB0LlN5
bnRheCwKKyAgICAgICAgICAgICAgICAgIHhbLyogYXQgKi8wXSwKKyAgICAgICAgICAgICAgICAg
ICJtaXNtYXRjaGluZyBsYWJlbCIKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0sIHhz
KTsKKyAgICAgIHJldHVybiBhbm9uX2xhYmVsKGMpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYywgeHMpIHsKKyAgICAg
IExpc3QuaXRlcihmdW5jdGlvbiAoeCkgeworICAgICAgICAgICAgaWYgKHhbLyogaXQgKi8xXSAh
PT0gXzFbLyogaXQgKi8xXSkgeworICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAg
ICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICAgICAgICAgIHhbLyogYXQgKi8wXSwK
KyAgICAgICAgICAgICAgICAgICAgIm1pc21hdGNoaW5nIGxhYmVsIgorICAgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB4cyk7CisgICAgICB2YXIgYyQx
ID0gYzsKKyAgICAgIHZhciB4ID0gXzE7CisgICAgICB2YXIgbmV3cmVjb3JkID0gYyQxLnNsaWNl
KCk7CisgICAgICBuZXdyZWNvcmRbLyogbGFiZWxzICovNl0gPSBDdXJyeS5fMyhWYXJNYXBbLyog
YWRkICovM10sIHhbLyogaXQgKi8xXSwgMCwgQ3VycnkuXzIoVmFyTWFwWy8qIG1hcCAqLzIyXSwg
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDEgKyBwYXJhbSB8IDA7
CisgICAgICAgICAgICAgIH0sIGMkMVsvKiBsYWJlbHMgKi82XSkpOworICAgICAgcmV0dXJuIG5l
d3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIC8qIFtd
ICovMDsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8x
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgXzEsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICBdOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIDA7CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBuYXQzMihfMSwgYXQoLyogKCkgKi8w
KSk7CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gLyogTm9uZSAqLzA7CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBuID0gbmF0KF8xLCBhdCgv
KiAoKSAqLzApKTsKKyAgICBpZiAoIUN1cnJ5Ll8xKExpYi5JbnRbLyogaXNfcG93ZXJfb2ZfdHdv
ICovMV0sIG4pKSB7CisgICAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgICB0aHJv
dyBbCisgICAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgICAgYXQkMSwKKyAgICAg
ICAgICAgICJhbGlnbm1lbnQgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byIKKyAgICAgICAgICBdOwor
ICAgIH0KKyAgICByZXR1cm4gLyogU29tZSAqL1tDdXJyeS5fMShMaWIuSW50Wy8qIGxvZzIgKi8w
XSwgbildOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICB2YXIgYXQk
MSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1
cm4gLyogOjogKi9bCisgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzEsIGMp
LCBhdCQxKSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAgIH07
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBhdCQxID0gYXQo
LyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgU291cmNlLiRhdCRhdChDdXJyeS5fMShfMSwgYyksIGF0JDEp
LAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwK
KyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgcmV0dXJuIFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAg
cmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMudW5yZWFjaGFibGU7
CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7
CisgICAgICByZXR1cm4gT3BlcmF0b3JzLm5vcDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVy
biBPcGVyYXRvcnMuYnIoQ3VycnkuXzIoXzIsIGMsIGxhYmVsKSk7CisgICAgfTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Cisg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmJyX2lmKEN1cnJ5Ll8yKF8yLCBjLCBsYWJlbCkpOworICAg
IH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoTGliLkxpc3RbLyogc3BsaXRfbGFz
dCAqLzVdLCAvKiA6OiAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8yKF8yLCBjLCBsYWJlbCksCisg
ICAgICAgICAgICBDdXJyeS5fMihfMywgYywgbGFiZWwpCisgICAgICAgICAgXSk7CisgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmJyX3RhYmxlKG1hdGNoWzBdLCBtYXRjaFsxXSk7CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1
cm4gT3BlcmF0b3JzLiQkcmV0dXJuOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5jYWxsKEN1cnJ5Ll8yKF8yLCBjLCBmdW5jKSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmNhbGxfaW5kaXJlY3QoQ3VycnkuXzIoXzIsIGMsIHR5cGVfKSk7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Cisg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmRyb3A7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkg
eworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gT3BlcmF0b3JzLnNlbGVj
dDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1
cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuZ2V0X2xvY2FsKEN1cnJ5
Ll8yKF8yLCBjLCBsb2NhbCkpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5zZXRfbG9jYWwoQ3VycnkuXzIoXzIsIGMsIGxvY2FsKSk7CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAg
ICByZXR1cm4gT3BlcmF0b3JzLnRlZV9sb2NhbChDdXJyeS5fMihfMiwgYywgbG9jYWwpKTsKKyAg
ICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuZ2V0X2dsb2JhbChDdXJyeS5fMihf
MiwgYywgZ2xvYmFsKSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJf
ZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gT3BlcmF0b3JzLnNl
dF9nbG9iYWwoQ3VycnkuXzIoXzIsIGMsIGdsb2JhbCkpOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4g
Q3VycnkuXzIoXzEsIF8zLCBfMik7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMik7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMSk7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihfMSwg
XzMsIF8yKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0
aW9uICgpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuY3VycmVudF9tZW1vcnk7CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmdyb3dfbWVtb3J5OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gbGl0
ZXJhbChfMSwgXzIpWzBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDApOworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gXzE7CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9u
ICgpIHsKKyAgICAgIHJldHVybiBfMTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIF8xOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBm
dW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gXzE7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVy
biBfMTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAg
ICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIg
XzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4g
ZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBjJHByaW1lID0gQ3VycnkuXzIoXzIsIGMsIF81KTsK
KyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiBP
cGVyYXRvcnMuYmxvY2sobWF0Y2hbMF0sIG1hdGNoWzFdKTsKKyAgICB9OworICB9LAorICBmdW5j
dGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBj
JHByaW1lID0gQ3VycnkuXzIoXzIsIGMsIF81KTsKKyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8x
KF8zLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMubG9vcChtYXRjaFswXSwgbWF0
Y2hbMV0pOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAg
IHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZh
ciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVy
biBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgXzUp
OworICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJpbWUpOworICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pZl8obWF0Y2hbMF0sIG1hdGNoWzFdLCAvKiBbXSAqLzApOworICAgIH07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDYpOworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDUpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfOCA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAg
dmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgUGVydmFzaXZlcy4kYXQoXzUsIF84KSk7Cisg
ICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMywgYyRwcmltZSk7CisgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmlmXyhtYXRjaFswXSwgbWF0Y2hbMV0sIEN1cnJ5Ll8xKF82LCBjJHByaW1lKSk7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8x
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uIChjKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIF8xLAor
ICAgICAgICAgICAgICBDdXJyeS5fMShfMiwgYykKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAo
KSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIG1hdGNoID0gQ3Vy
cnkuXzEoXzIsIGMpOworICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuJGF0KG1hdGNoWzBdLCAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQobWF0Y2hbMV0sIGF0JDEpLAor
ICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSk7CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChj
KSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIEN1cnJ5Ll8xKF8y
LCBjKVsxXSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzEsIGMpCisgICAgICAgICAgICBdOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMyA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5j
dGlvbiAoYykgeworICAgICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgLyogW10gKi8w
KTsKKyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKKyAgICAgIHJldHVy
biAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgLyogW10gKi8wLAorICAgICAgICAgICAgICBP
cGVyYXRvcnMuYmxvY2sobWF0Y2hbMF0sIG1hdGNoWzFdKQorICAgICAgICAgICAgXTsKKyAgICB9
OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzMgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24g
KGMpIHsKKyAgICAgIHZhciBjJHByaW1lID0gQ3VycnkuXzIoXzIsIGMsIC8qIFtdICovMCk7Cisg
ICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMywgYyRwcmltZSk7CisgICAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIFtdICovMCwKKyAgICAgICAgICAgICAgT3BlcmF0
b3JzLmxvb3AobWF0Y2hbMF0sIG1hdGNoWzFdKQorICAgICAgICAgICAgXTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAg
ICAgIHZhciBjJHByaW1lID0gQ3VycnkuXzIoXzIsIGMsIC8qIFtdICovMCk7CisgICAgICB2YXIg
bWF0Y2ggPSBDdXJyeS5fMihfNCwgYywgYyRwcmltZSk7CisgICAgICByZXR1cm4gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgIG1hdGNoWzBdLAorICAgICAgICAgICAgICBPcGVyYXRvcnMuaWZf
KF8zLCBtYXRjaFsxXSwgbWF0Y2hbMl0pCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisg
IGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDUpOworICAgIHZhciBfNyA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoXywgYyRwcmlt
ZSkgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAvKiBbXSAqLzAs
CisgICAgICAgICAgICAgIEN1cnJ5Ll8xKF8zLCBjJHByaW1lKSwKKyAgICAgICAgICAgICAgQ3Vy
cnkuXzEoXzcsIGMkcHJpbWUpCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoXywgYyRwcmltZSkg
eworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAvKiBbXSAqLzAsCisg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKF8zLCBjJHByaW1lKSwKKyAgICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDgpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDUpOworICAgIHZhciBfOCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEp
OworICAgIHJldHVybiBmdW5jdGlvbiAoYywgYyRwcmltZSkgeworICAgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgICBDdXJyeS5fMShfMSwgYyksCisgICAgICAgICAgICAgIEN1
cnJ5Ll8xKF80LCBjJHByaW1lKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzgsIGMkcHJpbWUp
CisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDQpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEp
OworICAgIHJldHVybiBmdW5jdGlvbiAoYywgYyRwcmltZSkgeworICAgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgICBDdXJyeS5fMShfMSwgYyksCisgICAgICAgICAgICAgIEN1
cnJ5Ll8xKF80LCBjJHByaW1lKSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZh
ciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBf
MyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBm
dW5jdGlvbiAoYywgYyRwcmltZSkgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAg
ICAgICAgICBDdXJyeS5fMShfMSwgYyksCisgICAgICAgICAgICAgIEN1cnJ5Ll8xKF8yLCBjJHBy
aW1lKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzMsIGMkcHJpbWUpCisgICAgICAgICAgICBd
OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBf
MiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBm
dW5jdGlvbiAoYywgYyRwcmltZSkgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAg
ICAgICAgICBDdXJyeS5fMShfMSwgYyksCisgICAgICAgICAgICAgIEN1cnJ5Ll8xKF8yLCBjJHBy
aW1lKSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAgIH07Cisg
IH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0
dXJuIC8qIFtdICovMDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsK
KyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBQZXJ2YXNpdmVzLiRhdChD
dXJyeS5fMShfMSwgYyksIEN1cnJ5Ll8xKF8yLCBjKSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKCkgeworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAg
ICAgXTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAg
ICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2
YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1
cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBlczEgPSBDdXJyeS5fMShfMSwgYyk7CisgICAg
ICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMiwgYyk7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9b
CisgICAgICAgICAgICAgIG1hdGNoWzBdICsgMSB8IDAsCisgICAgICAgICAgICAgIFBlcnZhc2l2
ZXMuJGF0KGVzMSwgbWF0Y2hbMV0pCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1
bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsK
KyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KEN1
cnJ5Ll8xKF8xLCBjKSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgcmV0dXJuIFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICB2YXIgbWF0Y2gg
PSBfNVswXTsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAvKiBGdW5jVHlw
ZSAqL1sKKyAgICAgICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgIFBlcnZhc2l2ZXMu
JGF0KF8zLCBtYXRjaFsxXSkKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBmdW5jdGlvbiAo
YykgeworICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoXzVbMV0sIGMpOworICAgICAgICAg
ICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwor
ICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAg
IHZhciBtYXRjaCA9IF81WzBdOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
IC8qIEZ1bmNUeXBlICovWworICAgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChfMywgbWF0Y2hb
MF0pLAorICAgICAgICAgICAgICBtYXRjaFsxXQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
IGZ1bmN0aW9uIChjKSB7CisgICAgICAgICAgICAgIGFub25fbG9jYWxzKGMsIF8zKTsKKyAgICAg
ICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKF81WzFdLCBjKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzYgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICB2YXIgbWF0Y2ggPSBf
NlswXTsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAvKiBGdW5jVHlwZSAq
L1sKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgXzQsCisgICAgICAg
ICAgICAgICAgbWF0Y2hbMF0KKyAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgbWF0Y2hb
MV0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBmdW5jdGlvbiAoYykgeworICAgICAgICAg
ICAgICBiaW5kX2xvY2FsKGMsIF8zKTsKKyAgICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKF82
WzFdLCBjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBl
bXB0eV90eXBlLAorICAgICAgICAgICAgZnVuY3Rpb24gKGMpIHsKKyAgICAgICAgICAgICAgdmFy
IGMkcHJpbWUgPSBhbm9uX2xhYmVsKGMpOworICAgICAgICAgICAgICByZXR1cm4gLyogcmVjb3Jk
ICovWworICAgICAgICAgICAgICAgICAgICAgIC8qIGZ0eXBlICovU291cmNlLiRhdCRhdCgtMSwg
YXQoLyogKCkgKi8wKSksCisgICAgICAgICAgICAgICAgICAgICAgLyogbG9jYWxzIDogW10gKi8w
LAorICAgICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9DdXJyeS5fMShfMSwgYyRwcmltZSkK
KyAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBdOworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICBfNVswXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIChjKSB7CisgICAgICAgICAg
ICAgIGFub25fbG9jYWxzKGMsIF8zKTsKKyAgICAgICAgICAgICAgdmFyIGYgPSBDdXJyeS5fMShf
NVsxXSwgYyk7CisgICAgICAgICAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgLyogZnR5cGUgKi9mWy8qIGZ0eXBlICovMF0sCisgICAgICAgICAgICAgICAg
ICAgICAgLyogbG9jYWxzICovUGVydmFzaXZlcy4kYXQoXzMsIGZbLyogbG9jYWxzICovMV0pLAor
ICAgICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9mWy8qIGJvZHkgKi8yXQorICAgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIF82
WzBdLAorICAgICAgICAgICAgZnVuY3Rpb24gKGMpIHsKKyAgICAgICAgICAgICAgYmluZF9sb2Nh
bChjLCBfMyk7CisgICAgICAgICAgICAgIHZhciBmID0gQ3VycnkuXzEoXzZbMV0sIGMpOworICAg
ICAgICAgICAgICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgIC8q
IGZ0eXBlICovZlsvKiBmdHlwZSAqLzBdLAorICAgICAgICAgICAgICAgICAgICAgIC8qIGxvY2Fs
cyA6IDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgXzQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBmWy8qIGxvY2FscyAqLzFdCisgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAvKiBib2R5ICovZlsvKiBib2R5ICovMl0KKyAgICAgICAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCA0KTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAyKTsKKyAgICB2YXIgXzYgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9mdW5jLCBiaW5kX2Z1bmMpOwor
ICAgICAgdmFyIHQgPSBleHBsaWNpdF9zaWcoYywgXzUsIF82WzBdLCBhdCQxKTsKKyAgICAgIHJl
dHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIHZhciBpbml0ID0gQ3VycnkuXzEoXzZbMV0sIGVudGVyX2Z1bmMoYykpOworICAgICAg
ICAgICAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBmdHlwZSAqL3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogbG9jYWxzICovaW5pdFsvKiBsb2NhbHMgKi8xXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBib2R5ICovaW5pdFsvKiBib2R5ICovMl0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSwgYXQkMSk7CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIEN1cnJ5Ll8z
KF80LCAvKiBGdW5jRXhwb3J0ICovMCwgY1svKiBmdW5jcyAqLzNdWy8qIGNvdW50ICovMV0sIGMp
CisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIp
OworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwor
ICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
KyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX2Z1bmMsIGJpbmRfZnVuYyk7CisgICAgICB2YXIg
dCA9IGV4cGxpY2l0X3NpZyhjLCBfNCwgXzVbMF0sIGF0JDEpOworICAgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFy
IGluaXQgPSBDdXJyeS5fMShfNVsxXSwgZW50ZXJfZnVuYyhjKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIGZ0eXBlICovdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2Nh
bHMgKi9pbml0Wy8qIGxvY2FscyAqLzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IGJvZHkgKi9pbml0Wy8qIGJvZHkgKi8yXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBh
dCQxKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAg
IHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZh
ciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBh
dCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1
cnJ5Ll8zKF8zLCBjLCBhbm9uX2Z1bmMsIGJpbmRfZnVuYyk7CisgICAgICB2YXIgdCA9IGlubGlu
ZV90eXBlKGMsIF81WzBdLCBhdCQxKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBpbml0ID0gQ3Vycnku
XzEoXzVbMV0sIGVudGVyX2Z1bmMoYykpOworICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2Uu
JGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmdHlw
ZSAqL3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbG9jYWxzICovaW5pdFsvKiBs
b2NhbHMgKi8xXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBib2R5ICovaW5pdFsv
KiBib2R5ICovMl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBGdW5jRXhwb3J0ICovMCwg
Y1svKiBmdW5jcyAqLzNdWy8qIGNvdW50ICovMV0sIGMpCisgICAgICAgICAgICBdOworICAgIH07
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyog
KCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBj
LCBhbm9uX2Z1bmMsIGJpbmRfZnVuYyk7CisgICAgICB2YXIgdCA9IGlubGluZV90eXBlKGMsIF80
WzBdLCBhdCQxKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBpbml0ID0gQ3VycnkuXzEoXzRbMV0sIGVu
dGVyX2Z1bmMoYykpOworICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmdHlwZSAqL3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogbG9jYWxzICovaW5pdFsvKiBsb2NhbHMgKi8xXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBib2R5ICovaW5pdFsvKiBib2R5ICovMl0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDApOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24g
KGMpIHsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KEN1cnJ5Ll8xKF8xLCBjKSwgYXQkMSk7
CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBh
dCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIFNv
dXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgLyogaW5kZXggKi9D
dXJyeS5fMihfMywgYywgdGFibGUpLAorICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0ICovQ3Vy
cnkuXzEoXzQsIGMpLAorICAgICAgICAgICAgICAgICAgLyogaW5pdCAqL0N1cnJ5Ll8yKF81LCBj
LCBmdW5jKQorICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29y
ZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIGluZGV4ICovU291cmNlLiRhdCRhdCgwLCBhdCQx
KSwKKyAgICAgICAgICAgICAgICAgIC8qIG9mZnNldCAqL0N1cnJ5Ll8xKF8zLCBjKSwKKyAgICAg
ICAgICAgICAgICAgIC8qIGluaXQgKi9DdXJyeS5fMihfNCwgYywgZnVuYykKKyAgICAgICAgICAg
ICAgICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAz
KTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsK
KyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAg
ICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Cisg
ICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl90YWJsZSwgYmluZF90YWJsZSk7CisgICAgICByZXR1
cm4gZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAg
ICAgICAgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bLyogdHR5cGUgKi9fNV0sIGF0JDEpLAor
ICAgICAgICAgICAgICAgIC8qIFtdICovMCwKKyAgICAgICAgICAgICAgICBDdXJyeS5fMyhfNCwg
LyogVGFibGVFeHBvcnQgKi8xLCBjWy8qIHRhYmxlcyAqLzFdWy8qIGNvdW50ICovMV0sIGMpCisg
ICAgICAgICAgICAgIF07CisgICAgICB9OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDcpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDYpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDUpOworICAgIHZhciBfOCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDIpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24g
KGMpIHsKKyAgICAgIHZhciBpID0gY1svKiB0YWJsZXMgKi8xXVsvKiBjb3VudCAqLzFdOworICAg
ICAgQ3VycnkuXzMoXzMsIGMsIGFub25fdGFibGUsIGJpbmRfdGFibGUpOworICAgICAgcmV0dXJu
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGluaXQgPSBDdXJyeS5fMihfOCwgYywgZnVuYyk7
CisgICAgICAgIHZhciBzaXplID0gTGlzdC5sZW5ndGgoaW5pdCk7CisgICAgICAgIHJldHVybiAv
KiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sv
KiB0dHlwZSA6IFRhYmxlVHlwZSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlY29y
ZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbWluICovc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbWF4IDogU29tZSAqL1tzaXplXQorICAgICAgICAgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIF81CisgICAgICAgICAgICAgICAg
ICAgICAgXV0sIGF0JDEpLAorICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ICAgICAgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBpbmRleCAqL1NvdXJjZS4kYXQkYXQoaSwgYXQkMSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBvZmZzZXQgKi9Tb3VyY2UuJGF0JGF0KC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU291cmNlLiRhdCRhdChPcGVyYXRvcnMuaTMyX2NvbnN0KFNvdXJjZS4k
YXQkYXQoMCwgYXQkMSkpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgLyogaW5pdCAqL2luaXQKKyAgICAgICAgICAgICAgICAgICAgICBdLCBh
dCQxKSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgQ3VycnkuXzMoXzQsIC8qIFRhYmxlRXhwb3J0ICovMSwgY1svKiB0YWJs
ZXMgKi8xXVsvKiBjb3VudCAqLzFdLCBjKQorICAgICAgICAgICAgICBdOworICAgICAgfTsKKyAg
ICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8q
ICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gU291cmNl
LiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBpbmRleCAqL0N1cnJ5
Ll8yKF8zLCBjLCBtZW1vcnkpLAorICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0ICovQ3Vycnku
XzEoXzQsIGMpLAorICAgICAgICAgICAgICAgICAgLyogaW5pdCAqL181CisgICAgICAgICAgICAg
ICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7
CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Cisg
ICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgewor
ICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAg
ICAgLyogaW5kZXggKi9Tb3VyY2UuJGF0JGF0KDAsIGF0JDEpLAorICAgICAgICAgICAgICAgICAg
Lyogb2Zmc2V0ICovQ3VycnkuXzEoXzMsIGMpLAorICAgICAgICAgICAgICAgICAgLyogaW5pdCAq
L180CisgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBm
dW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fbWVtb3J5LCBiaW5kX21l
bW9yeSk7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIFNvdXJjZS4k
YXQkYXQoLyogcmVjb3JkICovWy8qIG10eXBlICovXzVdLCBhdCQxKSwKKyAgICAgICAgICAgICAg
LyogW10gKi8wLAorICAgICAgICAgICAgICBDdXJyeS5fMyhfNCwgLyogTWVtb3J5RXhwb3J0ICov
MiwgY1svKiBtZW1vcmllcyAqLzJdWy8qIGNvdW50ICovMV0sIGMpCisgICAgICAgICAgICBdOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDYpOworICAgIHZhciBfNCA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDUpOworICAgIHZhciBfNyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBhdCQxID0gYXQo
LyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBpID0gY1sv
KiBtZW1vcmllcyAqLzJdWy8qIGNvdW50ICovMV07CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5v
bl9tZW1vcnksIGJpbmRfbWVtb3J5KTsKKyAgICAgIHZhciBzaXplID0gKF83Lmxlbmd0aCArIDY1
NTM1IHwgMCkgLyA2NTUzNiB8IDA7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWy8qIG10eXBlIDogTWVtb3J5VHlwZSAq
L1svKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBtaW4gKi9zaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgLyogbWF4IDogU29tZSAqL1tzaXplXQorICAgICAgICAg
ICAgICAgICAgICAgIF1dXSwgYXQkMSksCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAg
ICAgIC8qIGluZGV4ICovU291cmNlLiRhdCRhdChpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAvKiBvZmZzZXQgKi9Tb3VyY2UuJGF0JGF0KC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoT3BlcmF0b3JzLmkzMl9jb25zdChTb3VyY2UuJGF0
JGF0KDAsIGF0JDEpKSwgYXQkMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpLAorICAgICAgICAgICAgICAg
ICAgICAgIC8qIGluaXQgKi9fNworICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKSwKKyAgICAg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgQ3Vy
cnkuXzMoXzQsIC8qIE1lbW9yeUV4cG9ydCAqLzIsIGNbLyogbWVtb3JpZXMgKi8yXVsvKiBjb3Vu
dCAqLzFdLCBjKQorICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCA1KTsKKyAgICB2YXIgXzYgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAyKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChjKSB7CisgICAgICB2YXIgaSA9IGNbLyogbWVtb3JpZXMgKi8yXVsvKiBjb3VudCAq
LzFdOworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fbWVtb3J5LCBiaW5kX21lbW9yeSk7Cisg
ICAgICB2YXIgc2l6ZSA9IChfNi5sZW5ndGggKyA2NTUzNSB8IDApIC8gNjU1MzYgfCAwOworICAg
ICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KC8qIHJl
Y29yZCAqL1svKiBtdHlwZSA6IE1lbW9yeVR5cGUgKi9bLyogcmVjb3JkICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgLyogbWluICovc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8q
IG1heCA6IFNvbWUgKi9bc2l6ZV0KKyAgICAgICAgICAgICAgICAgICAgICBdXV0sIGF0JDEpLAor
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBpbmRleCAqL1NvdXJjZS4kYXQk
YXQoaSwgYXQkMSksCisgICAgICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0ICovU291cmNlLiRh
dCRhdCgvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0
KE9wZXJhdG9ycy5pMzJfY29uc3QoU291cmNlLiRhdCRhdCgwLCBhdCQxKSksIGF0JDEpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0ICovXzYKKyAgICAg
ICAgICAgICAgICAgICAgXSwgYXQkMSksCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgXTsKKyAg
ICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCA0KTsKKyAgICB2YXIgXzQgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzUgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzYgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgp
ICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywg
YW5vbl9nbG9iYWwsIGJpbmRfZ2xvYmFsKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2Uu
JGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBndHlw
ZSAqL181LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZhbHVlICovQ3VycnkuXzEo
XzYsIGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICBDdXJyeS5fMyhfNCwgLyogR2xvYmFsRXhwb3J0ICovMywgY1sv
KiBnbG9iYWxzICovNV1bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAgICAgIF07CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAq
LzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFu
b25fZ2xvYmFsLCBiaW5kX2dsb2JhbCk7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU291cmNlLiRh
dCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZ3R5cGUg
Ki9fNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YWx1ZSAqL0N1cnJ5Ll8xKF81
LCBjKQorICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgewor
ICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHJldHVy
biAvKiBGdW5jSW1wb3J0ICovQmxvY2suX18oMCwgW0N1cnJ5Ll8yKF80LCBjLCB0eXBlXyldKTsK
KyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQ0ID0g
YXRpKDQpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMs
IGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHJldHVybiAvKiBGdW5jSW1wb3J0ICovQmxv
Y2suX18oMCwgW2lubGluZV90eXBlKGMsIF80LCBhdDQpXSk7CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBD
dXJyeS5fMyhfMywgYywgYW5vbl90YWJsZSwgYmluZF90YWJsZSk7CisgICAgICByZXR1cm4gLyog
VGFibGVJbXBvcnQgKi9CbG9jay5fXygxLCBbXzRdKTsKKyAgICB9OworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5
Ll8zKF8zLCBjLCBhbm9uX21lbW9yeSwgYmluZF9tZW1vcnkpOworICAgICAgcmV0dXJuIC8qIE1l
bW9yeUltcG9ydCAqL0Jsb2NrLl9fKDIsIFtfNF0pOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3Vycnku
XzMoXzMsIGMsIGFub25fZ2xvYmFsLCBiaW5kX2dsb2JhbCk7CisgICAgICByZXR1cm4gLyogR2xv
YmFsSW1wb3J0ICovQmxvY2suX18oMywgW180XSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHZhciBhdDUg
PSBhdGkoNSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gU291cmNl
LiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBtb2R1bGVfbmFtZSAq
L18zLAorICAgICAgICAgICAgICAgICAgLyogaXRlbV9uYW1lICovXzQsCisgICAgICAgICAgICAg
ICAgICAvKiBpa2luZCAqL1NvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzUsIGMpLCBhdDUpCisgICAg
ICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAo
YykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAg
IHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8q
IG1vZHVsZV9uYW1lICovXzRbMF0sCisgICAgICAgICAgICAgICAgICAvKiBpdGVtX25hbWUgKi9f
NFsxXSwKKyAgICAgICAgICAgICAgICAgIC8qIGlraW5kICovU291cmNlLiRhdCRhdCgvKiBGdW5j
SW1wb3J0ICovQmxvY2suX18oMCwgW0N1cnJ5Ll8yKF81LCBjLCB0eXBlXyldKSwgYXQkMSkKKyAg
ICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgdmFyIGF0NSA9IGF0aSg1
KTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9u
X2Z1bmMsIGJpbmRfZnVuYyk7CisgICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQg
Ki9bCisgICAgICAgICAgICAgICAgICAvKiBtb2R1bGVfbmFtZSAqL180WzBdLAorICAgICAgICAg
ICAgICAgICAgLyogaXRlbV9uYW1lICovXzRbMV0sCisgICAgICAgICAgICAgICAgICAvKiBpa2lu
ZCAqL1NvdXJjZS4kYXQkYXQoLyogRnVuY0ltcG9ydCAqL0Jsb2NrLl9fKDAsIFtpbmxpbmVfdHlw
ZShjLCBfNSwgYXQ1KV0pLCBhdCQxKQorICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAgIH07
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkg
Ki8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBh
bm9uX3RhYmxlLCBiaW5kX3RhYmxlKTsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIG1vZHVsZV9uYW1lICovXzRbMF0sCisgICAg
ICAgICAgICAgICAgICAvKiBpdGVtX25hbWUgKi9fNFsxXSwKKyAgICAgICAgICAgICAgICAgIC8q
IGlraW5kICovU291cmNlLiRhdCRhdCgvKiBUYWJsZUltcG9ydCAqL0Jsb2NrLl9fKDEsIFtfNV0p
LCBhdCQxKQorICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1
cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX21lbW9yeSwgYmlu
ZF9tZW1vcnkpOworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAg
ICAgICAgICAgICAgICAgLyogbW9kdWxlX25hbWUgKi9fNFswXSwKKyAgICAgICAgICAgICAgICAg
IC8qIGl0ZW1fbmFtZSAqL180WzFdLAorICAgICAgICAgICAgICAgICAgLyogaWtpbmQgKi9Tb3Vy
Y2UuJGF0JGF0KC8qIE1lbW9yeUltcG9ydCAqL0Jsb2NrLl9fKDIsIFtfNV0pLCBhdCQxKQorICAg
ICAgICAgICAgICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24g
KGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX2dsb2JhbCwgYmluZF9nbG9iYWwpOwor
ICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAg
ICAgLyogbW9kdWxlX25hbWUgKi9fNFswXSwKKyAgICAgICAgICAgICAgICAgIC8qIGl0ZW1fbmFt
ZSAqL180WzFdLAorICAgICAgICAgICAgICAgICAgLyogaWtpbmQgKi9Tb3VyY2UuJGF0JGF0KC8q
IEdsb2JhbEltcG9ydCAqL0Jsb2NrLl9fKDMsIFtfNV0pLCBhdCQxKQorICAgICAgICAgICAgICAg
IF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwor
ICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAg
IHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgXzQKKyAg
ICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1
cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
ICAgLyogRnVuY0V4cG9ydCAqLzAsCisgICAgICAgICAgICAgIEN1cnJ5Ll8yKF8zLCBjLCBmdW5j
KQorICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNl
cl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAxKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgICAgLyogVGFibGVFeHBvcnQgKi8xLAorICAgICAgICAgICAgICBDdXJy
eS5fMihfMywgYywgdGFibGUpCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAg
cmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAvKiBNZW1vcnlFeHBvcnQgKi8yLAor
ICAgICAgICAgICAgICBDdXJyeS5fMihfMywgYywgbWVtb3J5KQorICAgICAgICAgICAgXTsKKyAg
ICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgLyog
R2xvYmFsRXhwb3J0ICovMywKKyAgICAgICAgICAgICAgQ3VycnkuXzIoXzMsIGMsIGdsb2JhbCkK
KyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJf
ZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
Mik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHZhciBhdDQgPSBhdGkoNCk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfNCwg
Yyk7CisgICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAg
ICAgICAgICAvKiBuYW1lICovXzMsCisgICAgICAgICAgICAgICAgICAvKiBla2luZCAqL1NvdXJj
ZS4kYXQkYXQobWF0Y2hbMF0sIGF0NCksCisgICAgICAgICAgICAgICAgICAvKiBpdGVtICovbWF0
Y2hbMV0KKyAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlv
biAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBfJDEsIF8kMikgeworICAgICAgcmV0dXJu
IC8qIFtdICovMDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyog
KCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGssIGNvdW50LCBfKSB7CisgICAgICByZXR1
cm4gLyogOjogKi9bCisgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWwor
ICAgICAgICAgICAgICAgICAgICAvKiBuYW1lICovXzMsCisgICAgICAgICAgICAgICAgICAgIC8q
IGVraW5kICovU291cmNlLiRhdCRhdChrLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAgLyog
aXRlbSAqL1NvdXJjZS4kYXQkYXQoY291bnQgLSAxIHwgMCwgYXQkMSkKKyAgICAgICAgICAgICAg
ICAgIF0sIGF0JDEpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8z
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gYW5vbl90eXBlKGMsIF8zKTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
KyAgICAgIHZhciBjJDEgPSBjOworICAgICAgdmFyIHggPSBfMzsKKyAgICAgIHZhciB0eSA9IF80
OworICAgICAgaWYgKEN1cnJ5Ll8yKFZhck1hcFsvKiBtZW0gKi8yXSwgeFsvKiBpdCAqLzFdLCBj
JDFbLyogdHlwZXMgKi8wXVsvKiB0bWFwICovMF0pKSB7CisgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAg
ICAgICAgICAgICAiZHVwbGljYXRlIHR5cGUgIiArIHhbLyogaXQgKi8xXQorICAgICAgICAgICAg
XTsKKyAgICAgIH0KKyAgICAgIGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRtYXAgKi8wXSA9IEN1cnJ5
Ll8zKFZhck1hcFsvKiBhZGQgKi8zXSwgeFsvKiBpdCAqLzFdLCBDdXJyeS5fMShMaWIuTGlzdDMy
Wy8qIGxlbmd0aCAqLzBdLCBjJDFbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKSwgYyQxWy8q
IHR5cGVzICovMF1bLyogdG1hcCAqLzBdKTsKKyAgICAgIGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRs
aXN0ICovMV0gPSBQZXJ2YXNpdmVzLiRhdChjJDFbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFd
LCAvKiA6OiAqL1sKKyAgICAgICAgICAgIHR5LAorICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgXSk7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAg
cmV0dXJuIEN1cnJ5Ll8yKF8zLCBjLCBmdW5jKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbmV3cmVjb3JkID0gQXN0
LmVtcHR5X21vZHVsZS5zbGljZSgpOworICAgICAgbmV3cmVjb3JkWy8qIHR5cGVzICovMF0gPSBj
Wy8qIHR5cGVzICovMF1bLyogdGxpc3QgKi8xXTsKKyAgICAgIHJldHVybiBuZXdyZWNvcmQ7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8x
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uIChjKSB7CisgICAgICBDdXJyeS5fMShfMSwgYyk7CisgICAgICByZXR1cm4gQ3VycnkuXzEo
XzIsIGMpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAg
IHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJl
dHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzEsIGMpOwor
ICAgICAgdmFyIG0gPSBDdXJyeS5fMShfMiwgYyk7CisgICAgICBpZiAobVsvKiBpbXBvcnRzICov
OF0gIT09IC8qIFtdICovMCkgeworICAgICAgICB2YXIgYXQgPSBMaXN0LmhkKG1bLyogaW1wb3J0
cyAqLzhdKVsvKiBhdCAqLzBdOworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIFNjcmlw
dC5TeW50YXgsCisgICAgICAgICAgICAgIGF0LAorICAgICAgICAgICAgICAiaW1wb3J0IGFmdGVy
IGdsb2JhbCBkZWZpbml0aW9uIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAgIHZhciBu
ZXdyZWNvcmQgPSBtLnNsaWNlKCk7CisgICAgICBuZXdyZWNvcmRbLyogZ2xvYmFscyAqLzFdID0g
LyogOjogKi9bCisgICAgICAgIEN1cnJ5Ll8xKG1hdGNoWzBdLCAvKiAoKSAqLzApLAorICAgICAg
ICBtWy8qIGdsb2JhbHMgKi8xXQorICAgICAgXTsKKyAgICAgIG5ld3JlY29yZFsvKiBleHBvcnRz
ICovOV0gPSBQZXJ2YXNpdmVzLiRhdChtYXRjaFsxXSwgbVsvKiBleHBvcnRzICovOV0pOworICAg
ICAgcmV0dXJuIG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciB0ID0gQ3VycnkuXzEo
XzEsIGMpOworICAgICAgdmFyIG0gPSBDdXJyeS5fMShfMiwgYyk7CisgICAgICB2YXIgbWF0Y2gg
PSBDdXJyeS5fMSh0LCAvKiAoKSAqLzApOworICAgICAgaWYgKG1bLyogaW1wb3J0cyAqLzhdICE9
PSAvKiBbXSAqLzApIHsKKyAgICAgICAgdmFyIGF0ID0gTGlzdC5oZChtWy8qIGltcG9ydHMgKi84
XSlbLyogYXQgKi8wXTsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBTY3JpcHQuU3lu
dGF4LAorICAgICAgICAgICAgICBhdCwKKyAgICAgICAgICAgICAgImltcG9ydCBhZnRlciB0YWJs
ZSBkZWZpbml0aW9uIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAgIHZhciBuZXdyZWNv
cmQgPSBtLnNsaWNlKCk7CisgICAgICBuZXdyZWNvcmRbLyogdGFibGVzICovMl0gPSAvKiA6OiAq
L1sKKyAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgIG1bLyogdGFibGVzICovMl0KKyAgICAgIF07
CisgICAgICBuZXdyZWNvcmRbLyogZWxlbXMgKi82XSA9IFBlcnZhc2l2ZXMuJGF0KG1hdGNoWzFd
LCBtWy8qIGVsZW1zICovNl0pOworICAgICAgbmV3cmVjb3JkWy8qIGV4cG9ydHMgKi85XSA9IFBl
cnZhc2l2ZXMuJGF0KG1hdGNoWzJdLCBtWy8qIGV4cG9ydHMgKi85XSk7CisgICAgICByZXR1cm4g
bmV3cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwor
ICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAg
IHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzEsIGMp
OworICAgICAgdmFyIG0gPSBDdXJyeS5fMShfMiwgYyk7CisgICAgICBpZiAobVsvKiBpbXBvcnRz
ICovOF0gIT09IC8qIFtdICovMCkgeworICAgICAgICB2YXIgYXQgPSBMaXN0LmhkKG1bLyogaW1w
b3J0cyAqLzhdKVsvKiBhdCAqLzBdOworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIFNj
cmlwdC5TeW50YXgsCisgICAgICAgICAgICAgIGF0LAorICAgICAgICAgICAgICAiaW1wb3J0IGFm
dGVyIG1lbW9yeSBkZWZpbml0aW9uIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAgIHZh
ciBuZXdyZWNvcmQgPSBtLnNsaWNlKCk7CisgICAgICBuZXdyZWNvcmRbLyogbWVtb3JpZXMgKi8z
XSA9IC8qIDo6ICovWworICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgbVsvKiBtZW1vcmllcyAq
LzNdCisgICAgICBdOworICAgICAgbmV3cmVjb3JkWy8qIGRhdGEgKi83XSA9IFBlcnZhc2l2ZXMu
JGF0KG1hdGNoWzFdLCBtWy8qIGRhdGEgKi83XSk7CisgICAgICBuZXdyZWNvcmRbLyogZXhwb3J0
cyAqLzldID0gUGVydmFzaXZlcy4kYXQobWF0Y2hbMl0sIG1bLyogZXhwb3J0cyAqLzldKTsKKyAg
ICAgIHJldHVybiBuZXdyZWNvcmQ7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJy
eS5fMShfMSwgYyk7CisgICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHZhciBm
dW5jID0gQ3VycnkuXzEobWF0Y2hbMF0sIC8qICgpICovMCk7CisgICAgICBpZiAobVsvKiBpbXBv
cnRzICovOF0gIT09IC8qIFtdICovMCkgeworICAgICAgICB2YXIgYXQgPSBMaXN0LmhkKG1bLyog
aW1wb3J0cyAqLzhdKVsvKiBhdCAqLzBdOworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAg
IFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICAgIGF0LAorICAgICAgICAgICAgICAiaW1wb3J0
IGFmdGVyIGZ1bmN0aW9uIGRlZmluaXRpb24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAg
ICAgdmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBmdW5jcyAq
LzRdID0gLyogOjogKi9bCisgICAgICAgIGZ1bmMsCisgICAgICAgIG1bLyogZnVuY3MgKi80XQor
ICAgICAgXTsKKyAgICAgIG5ld3JlY29yZFsvKiBleHBvcnRzICovOV0gPSBQZXJ2YXNpdmVzLiRh
dChtYXRjaFsxXSwgbVsvKiBleHBvcnRzICovOV0pOworICAgICAgcmV0dXJuIG5ld3JlY29yZDsK
KyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGMpIHsKKyAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMpOworICAgICAgdmFyIG5l
d3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBlbGVtcyAqLzZdID0gLyog
OjogKi9bCisgICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgbVsvKiBlbGVtcyAqLzZd
CisgICAgICBdOworICAgICAgcmV0dXJuIG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5j
dGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZh
ciBtID0gQ3VycnkuXzEoXzIsIGMpOworICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsK
KyAgICAgIG5ld3JlY29yZFsvKiBkYXRhICovN10gPSAvKiA6OiAqL1sKKyAgICAgICAgQ3Vycnku
XzEoXzEsIGMpLAorICAgICAgICBtWy8qIGRhdGEgKi83XQorICAgICAgXTsKKyAgICAgIHJldHVy
biBuZXdyZWNvcmQ7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsK
KyAgICAgIHZhciB4ID0gQ3VycnkuXzEoXzEsIGMpOworICAgICAgdmFyIG1hdGNoID0gbVsvKiBz
dGFydCAqLzVdOworICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAg
ICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAgICAg
ICAgICAgICAibXVsdGlwbGUgc3RhcnQgc2VjdGlvbnMiCisgICAgICAgICAgICBdOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciBuZXdyZWNvcmQgPSBtLnNsaWNlKCk7CisgICAg
ICAgIG5ld3JlY29yZFsvKiBzdGFydCAqLzVdID0gLyogU29tZSAqL1t4XTsKKyAgICAgICAgcmV0
dXJuIG5ld3JlY29yZDsKKyAgICAgIH0KKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBpID0gQ3Vycnku
XzEoXzEsIGMpOworICAgICAgdmFyIG0gPSBDdXJyeS5fMShfMiwgYyk7CisgICAgICB2YXIgbmV3
cmVjb3JkID0gbS5zbGljZSgpOworICAgICAgbmV3cmVjb3JkWy8qIGltcG9ydHMgKi84XSA9IC8q
IDo6ICovWworICAgICAgICBpLAorICAgICAgICBtWy8qIGltcG9ydHMgKi84XQorICAgICAgXTsK
KyAgICAgIHJldHVybiBuZXdyZWNvcmQ7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbSA9IEN1cnJ5
Ll8xKF8yLCBjKTsKKyAgICAgIHZhciBuZXdyZWNvcmQgPSBtLnNsaWNlKCk7CisgICAgICBuZXdy
ZWNvcmRbLyogZXhwb3J0cyAqLzldID0gLyogOjogKi9bCisgICAgICAgIEN1cnJ5Ll8xKF8xLCBj
KSwKKyAgICAgICAgbVsvKiBleHBvcnRzICovOV0KKyAgICAgIF07CisgICAgICByZXR1cm4gbmV3
cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAg
IHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJl
dHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgU291cmNlLiRh
dCRhdCgvKiBUZXh0dWFsICovQmxvY2suX18oMCwgW1NvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzQs
IGVtcHR5X2NvbnRleHQoLyogKCkgKi8wKSksIGF0KC8qICgpICovMCkpXSksIGF0KC8qICgpICov
MCkpCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7Cisg
ICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAg
dmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0
dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgXzMsCisgICAgICAgICAgICBTb3VyY2UuJGF0
JGF0KC8qIEVuY29kZWQgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICJiaW5h
cnkiLAorICAgICAgICAgICAgICAgICAgICBfNCArIF81CisgICAgICAgICAgICAgICAgICBdKSwg
YXQoLyogKCkgKi8wKSkKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAg
cmV0dXJuIC8qIE5vbmUgKi8wOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsK
KyAgICByZXR1cm4gLyogU29tZSAqL1tTb3VyY2UuJGF0JGF0KF8xLCBhdCgvKiAoKSAqLzApKV07
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0
KC8qIEludm9rZSAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAg
ICAgICAgICAgICAgXzQsCisgICAgICAgICAgICAgICAgICBfNQorICAgICAgICAgICAgICAgIF0p
LCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Cisg
ICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAg
cmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogR2V0ICovQmxvY2suX18oMSwgWworICAgICAgICAgICAg
ICAgICAgXzMsCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0pLCBhdCgv
KiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAg
dmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFy
IF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJu
IFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0TWFsZm9ybWVkICovQmxvY2suX18oMCwgWworICAgICAg
ICAgICAgICAgICAgXzNbMV0sCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAg
IF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7
CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Cisg
ICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0SW52YWxpZCAqL0Jsb2NrLl9fKDEsIFsK
KyAgICAgICAgICAgICAgICAgIF8zWzFdLAorICAgICAgICAgICAgICAgICAgXzQKKyAgICAgICAg
ICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIEFzc2VydFNvZnRJbnZhbGlkICovQmxv
Y2suX18oMiwgWworICAgICAgICAgICAgICAgICAgXzNbMV0sCisgICAgICAgICAgICAgICAgICBf
NAorICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0VW5saW5r
YWJsZSAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgIF8zWzFdLAorICAgICAgICAg
ICAgICAgICAgXzQKKyAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisg
IGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIEFz
c2VydFVuaW5zdGFudGlhYmxlICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgXzNb
MV0sCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAq
LzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8z
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJj
ZS4kYXQkYXQoLyogQXNzZXJ0UmV0dXJuICovQmxvY2suX18oNSwgWworICAgICAgICAgICAgICAg
ICAgXzMsCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAo
KSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJu
IFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0UmV0dXJuTmFOICovQmxvY2suX18oNiwgW18zXSksIGF0
KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAg
ICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2
YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1
cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRUcmFwICovQmxvY2suX18oNywgWworICAgICAgICAg
ICAgICAgICAgXzMsCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0pLCBh
dCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAg
dmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0
dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0RXhoYXVzdGlvbiAqL0Jsb2NrLl9fKDgsIFsKKyAg
ICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgICAgICAgXzQKKyAgICAgICAgICAgICAg
ICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDAp
OworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIEFjdGlvbiAqL0Jsb2NrLl9fKDIsIFtfMV0p
LCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0aW9uICovQmxvY2suX18oMywgW18xXSks
IGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsK
KyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAg
ICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBNb2R1bGUgKi9CbG9jay5fXygwLCBbCisgICAgICAg
ICAgICAgICAgICBfMVswXSwKKyAgICAgICAgICAgICAgICAgIF8xWzFdCisgICAgICAgICAgICAg
ICAgXSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAy
KTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsK
KyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBSZWdpc3RlciAqL0Jsb2NrLl9fKDEsIFsKKyAg
ICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgICAgICAgXzQKKyAgICAgICAgICAgICAg
ICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDAp
OworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIE1ldGEgKi9CbG9jay5fXyg0LCBbXzFdKSwg
YXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gLyogW10g
Ki8wOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICBfMSwKKyAgICAgICAgICAgIF8yCisgICAgICAgICAgXTsKKyAgfSwK
KyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyog
U2NyaXB0ICovQmxvY2suX18oMiwgWworICAgICAgICAgICAgICAgICAgXzMsCisgICAgICAgICAg
ICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogSW5w
dXQgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICBfMywKKyAgICAgICAgICAgICAg
ICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5j
dGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBPdXRwdXQg
Ki9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICBfMywKKyAgICAgICAgICAgICAgICAg
IC8qIFNvbWUgKi9bXzRdCisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRh
dCgvKiBPdXRwdXQgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICBfMywKKyAgICAg
ICAgICAgICAgICAgIC8qIE5vbmUgKi8wCisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICov
MCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzMgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNl
LiRhdCRhdChsaXRlcmFsKF8yLCBfMylbMV0sIGF0aSgzKSk7CisgIH0sCisgIGZ1bmN0aW9uICgp
IHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNl
cl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAw
KTsKKyAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICBfMSwKKyAgICAgICAgICAgIF8y
CisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgcmV0dXJuIFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICB9LAor
ICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gLyogOjogKi9bCisgICAg
ICAgICAgICBfMSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgIH0sCisg
IGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHJldHVybiBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKVsxXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdGhyb3cgWworICAgICAgICAgIFBhcnNpbmcuWVlleGl0LAorICAg
ICAgICAgIFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApCisgICAgICAgIF07
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHRocm93IFsKKyAg
ICAgICAgICBQYXJzaW5nLllZZXhpdCwKKyAgICAgICAgICBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAwKQorICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgUGFyc2luZy5ZWWV4aXQsCisgICAg
ICAgICAgUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCkKKyAgICAgICAgXTsK
KyAgfQorXTsKKwordmFyIHl5dGFibGVzID0gLyogcmVjb3JkICovWworICAvKiBhY3Rpb25zICov
eXlhY3QsCisgIC8qIHRyYW5zbF9jb25zdCAqL3l5dHJhbnNsX2NvbnN0LAorICAvKiB0cmFuc2xf
YmxvY2sgKi95eXRyYW5zbF9ibG9jaywKKyAgLyogbGhzICovJ1x4ZmZceGZmXHgwNFwwXHgwNFww
XHgwNVwwXHgwNVwwXHgwNlwwXHgwN1wwXHgwN1wwXGJcMFx0XDBcdFwwXHRcMFx0XDBceDBiXDBc
clwwXGZcMFxmXDBceDBlXDBceDEwXDBceDEwXDBceDEwXDBceDBmXDBceDBmXDBceDExXDBceDEx
XDBceDEyXDBceDEyXDBcblwwXHgxM1wwXHgxM1wwXHgxNFwwXHgxNFwwXHgxNVwwXHgxNVwwXHgx
NlwwXHgxNlwwXHgxN1wwXHgxN1wwXHgxN1wwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFww
XHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgx
OFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFww
XHgxOFwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxYlwwXHgxYVwwXHgxZFwwXHgxZFwwXHgx
ZFwwXHgxZFwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxY1wwXHgxY1ww
XHgxZVwwXHgxZVwwIFwwIVwwIVwwIVwwIVwwIlwwIlwwIlwwI1wwI1wwI1wwI1wwJVwwJVwwJlww
JlwwXCdcMFwnXDApXDApXDAqXDAqXDAqXDArXDArXDAsXDAsXDAsXDAsXDAsXDAtXDAtXDAtXDAt
XDAtXDAtXDAuXDAvXDAvXDAvXDAvXHgwMDBcMChcMChcMCRceDAwMVx4MDAxXHgwMDJceDAwM1x4
MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDRceDAw
NFx4MDA1XHgwMDVceDAwNlx4MDA2XHgwMDhceDAwOFx4MDA4XHgwMDhceDAwOFx4MDA4XHgwMDhc
eDAwOFx4MDA4XHgwMDlceDAwOVx4MDA5XHgwMDlceDAwOVwwO1wwO1wwOlwwOlwwOlwwOlwwPFx4
MDA3XHgwMDdcMFx4MDFcMFx4MDJcMFx4MDNcMFwwXDBcMFwwXDBcMCcsCisgIC8qIGxlbiAqLyJc
eDAyXDBcMFwwXHgwMlwwXDBcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDRcMFx4MDRcMFwwXDBceDA1
XDBceDA1XDBceDA2XDBceDAyXDBceDAxXDBceDAxXDBceDAyXDBceDA0XDBceDAxXDBceDAxXDBc
eDAxXDBceDAxXDBceDAxXDBcMFwwXHgwMlwwXDBcMFx4MDFcMFx4MDFcMFwwXDBceDAxXDBcMFww
XHgwMVwwXDBcMFx4MDFcMFwwXDBceDAxXDBceDAxXDBceDAxXDBceDAxXDBceDAxXDBceDAxXDBc
eDAyXDBceDAyXDBceDAzXDBceDAxXDBceDAyXDBceDAyXDBceDAxXDBceDAxXDBceDAyXDBceDAy
XDBceDAyXDBceDAyXDBceDAyXDBceDAzXDBceDAzXDBceDAxXDBceDAxXDBceDAyXDBceDAxXDBc
eDAxXDBceDAxXDBceDAxXDBceDAxXDBceDA1XDBceDA1XDBceDA1XDBcYlwwXHgwMlwwXHgwM1ww
XHgwMlwwXHgwM1wwXHgwM1wwXHgwNFwwXGJcMFx4MDRcMFx0XDBceDA1XDBceDAzXDBceDAyXDBc
MFwwXHgwMlwwXDBcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDVcMFx4MDVcMFx4MDZcMFx4MDFcMFx4
MDVcMFx4MDZcMFx4MDdcMFx4MDZcMFx4MDZcMFx4MDVcMFx4MDRcMFx4MDFcMFx4MDZcMFx4MDVc
MFx4MDZcMFxuXDBceDA2XDBceDA1XDBceDA2XDBcdFwwXGJcMFx4MDdcMFx4MDZcMFx4MDVcMFx4
MDVcMFx4MDVcMFx4MDVcMFx4MDVcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDVcMFx4MDRcMFx4MDRcMFx4MDRcMFx4MDRcMFx4MDVcMFwwXDBceDAxXDBceDA0XDBceDA0
XDBceDA1XDBceDA0XDBcMFwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwMlwwXHgw
MlwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwNVwwXHgwNlwwXDBcMFx4MDFcMFx4MDZcMFx4MDVcMFx4
MDVcMFx4MDVcMFx4MDVcMFx4MDVcMFx4MDVcMFx4MDVcMFx4MDRcMFx4MDVcMFx4MDVcMFx4MDFc
MFx4MDFcMFx4MDFcMFx4MDVcMFx4MDFcMFwwXDBceDAyXDBceDA1XDBceDA1XDBceDA1XDBceDA0
XDBceDA0XDBcMFwwXHgwMlwwXHgwMlwwXHgwMVwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwMlwwIiwK
KyAgLyogZGVmcmVkICovIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YWZcMFx4YTBcMFx4OWVc
MFx4OWZcMFwwXDBceGEyXDBcMFwwXHhiMFwwXHhhZFwwXDBcMFx4YjFcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGE0XDBc
eGFjXDBceGFlXDBceDkyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDAxXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFx4OWJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhOFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDg5XDBceDhhXDBceDg3XDBceDhi
XDBceDg4XDBceDg2XDBceDhkXDBceDhlXDBceDg1XDBceDhjXDBceDhmXDBceGE1XDBceGExXDBc
MFwwXHg5NFwwXHg5NVwwXHg5NlwwXHg5N1wwXHg5OFwwXDBcMFx4OWFcMFx4YWJcMFx4OTlcMFx4
OWNcMFx4OWRcMFx4YTZcMFx4YTdcMFx4MDJcMFx4OTBcMFx4MWJcMFx4MWFcMFwwXDBceDE1XDBc
eDE2XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGFcMFwwXDBcMFwwXDBcMFx4MDFc
MFwwXDBcMFwwXHg5M1wwXHgxMlwwXHgxM1wwXHgxNFwwXDBcMFwwXDAoXDAvXDBcMFwwXDBceDAw
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwLFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDA9XDA+XDA8XDA/XDAnXHgwMDhceDAwOVwwO1wwXDBcMFwwXDAkXDAlXDAmXDBZXDBcMFww
VVwwXDBcMFwwXDBceDgzXDBcMFwwXHg4MVwwXDBcMFx4MDZcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XHg3ZlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXHgwMVwwXDBcMFwwXDBcMFwwXDBcMFx4YTlcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFx4MWRcMFwwXDBcMFwwXDBcMClcMCpcMFwwXDAtXDAuXHgwMDFceDAwMlx4MDAzXHgwMDRc
eDAwNVwwIVwwXDBcMFwwXDA6XDBcMFwwXDBcMFwwXDBRXDBfXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFx4ODJcMFwwXDBUXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDVcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMEZcMEVcMFwwXDBceDE4XDBjXDBceDAxXDBc
MFwwXHgwZVwwXDBcMFwwXDBcMFwwZ1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwfVwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCtcMCNceDAwNlx4
MDA3XDBdXDBcMFwwXlwwXDBcMFwwXDB0XDBzXDBcYlwwXDBcMGxcMFwwXDB3XDBceDEwXDBcMFww
ZFwwXHJcMHVcMEdcMFwwXDBIXDBgXDBTXDBiXDBcMFwwXHgwMVwwaFwwdlwwZlwwXDBcMFwwXDBc
MFwwXDBcMHJcMFwwXDBcMFwwXDBcMFwwXDBceDExXDBceDA0XDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBceDgwXDBEXDBcMFwwXDBcMFwwXDBcMFwwXFxcMFwwXDBcMFwwXDBcMFx4MDdcMGtcMFww
XDBcMFwwXDBcMElcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMHlcMHxcMHpcMHtcMFdcMFwwXDBc
MFwwVlwwWlwwXDBcMHhcMFx4MWZcMEBcMEJcMFwwXDBBXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwalwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwWFwwW1wwXDBcMFx4MGJcMFwwXDBcblww
XDBcMFwwXDBcMFwwTlwwaVwwblwwbVwwcVwwb1wwcFwwXDBcMFxmXDBlXDBcMFwwXDBcMENcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMEpcMFwwXDBMXDAiLAorICAvKiBkZ290byAqLydceDA0XDBc
eDA2XDBcclwwXHgxMFwwVlx4MDAxXHgwMVxmXHgwMVx4YzRcMFx4ODVcMFx4ZmZcMFx4N2ZcMFxy
XHgwMVx4MGVceDAxXHgxZFx4MDFceGI0XDBceGQyXDBceDk2XDBceGQzXDBceDgwXDBceGU1XDBc
eDg4XHgwMVx4ZjNceDAwN1x4MDFceGI1XDBceGI2XDBceGI3XDBceGI4XHgwMDJceDAxXHhiOVww
XHhkMFwwXHgxNVx4MDF1XHgwMVx4MDZceDAxXHhiYVwwXHhiYlx4MDA5XDBceGJjXDBceDhjXDA6
XDA7XDBceGM5XDA8XDA9XDA+XDAiXHgwMT9cMFx4YmRcMFx4ZGNcMEBcMEFcMEJcMENcMFx4MDdc
MCVcMFxiXDBNXDBcdFwwXG5cMFx4MGJcMFxmXDBOXDAnLAorICAvKiBzaW5kZXggKi8nXHhkNFww
XHgxN1x4ZmZceDE3XHhmZi5ceGZmXDBcMGFceGZmXDBcMFwwXDBcMFwwXDBcMFx4MTdceGZmXDBc
MEBcMFwwXDBcMFwwIlx4ZmZcMFwwbFwwaVx4ZmZpXHhmZndceGZmaVx4ZmZpXHhmZi5ceGZmLlx4
ZmYuXHhmZi5ceGZmcFx4ZmZwXHhmZn5ceGZmcFx4ZmZpXHhmZmlceGZmXDBcMFwwXDBcMFwwXDBc
MFx4YWJceGZmXHgxN1x4ZmZpXHhmZlx4OTJceGZmXHhhY1x4ZmZceGM5XHhmZlx4ZDlceGZmXHhm
Nlx4ZmZceGY5XHhmZlxmXHhmZlx4YTFceGZmXHhhZlx4ZmZceGZjXHhmZVx4ZmJceGZmXHhmZVx4
ZmZceDE1XDBceDFjXHgwMDFceGZmXDBcMFx4MTdcMFx4MWRcMFx4MWRcMFx4MWRcMFx4MWRcMFx4
MWRcMFx4MWRcMFx4MWRcMFx4MWRcMFx4MWRcMFx4MWRcMFx4YjFceGZmXHhiNlx4ZmZceDExXDBc
eGExXHhmZi1ceDAwN1wwPVwwP1wwRFwwL1wwSlwwXHhhMVx4ZmZcMFwwS1wwU1wwZFwwZVwwblww
XDBcMFtceGZmUlwwXHhiN1x4ZmZceGM2XHhmZlJcMFJcMFx4OGZceGZmUlwwXHg4Zlx4ZmZ2XDB3
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwweVww
XDBcMFwwXDBcMFwwXDBcMFwwXDBceDBiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFx4MTZceDAyXDBcMFwwXDB6XDBWXDBceDhhXDBceDk1XDBceGU5XHhmZlx4
OTdcMFdceDAzXHg5OFwwXDBcMFx4YjdceGZmXHg5OVwwXHg5OFwwXDBcMFx4OWJcMFx4YTFcMFww
XDBcMFwwXDBcMFwwXDBceGJiXDBceGQ0XHgwMlwwXDBcMFwwUlwwUlwwXDBcMFJcMFx4YjdceGZm
XHhiN1x4ZmZceGI3XHhmZlx4YjdceGZmXHhiN1x4ZmZcMFwwXHhiN1x4ZmZceGI3XHhmZlx4Yjdc
eGZmXHhiN1x4ZmZceGI3XHhmZlx4YTVcMFx4YTVcMFx4MGJcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwPFx4MDJiXHgwMlwwXDBcMFwwXDBcMFwwXDBceGJkXDBcMFwwXHg4OFx4MDJc
eGJmXDBcMFwwXHhjN1wwXDBcMFx4ZDdcMFwwXDBcclx4ZmZiXHgwMlx4ZWRceGZmXHhlZFx4ZmZc
eGNkXHhmZlwwXDB1XHhmZlx4ZWFcMFJcMFJcMFJcMGJceDAyXHhlM1wwXHhlNFwwXHhiN1x4ZmZc
eGI3XHhmZlx4ZWNcMFx4OThceGZmXHhmZVwwXHhlYVwwXHhlYVwwXDBcMFx4N2ZceGZmXGJceDAx
XHhmZVx4ZmVcdFx4MDFcMFwwXHhiN1x4ZmZceDEyXDBceGU3XDBceDEyXDBceDBlXHgwMVx4MTBc
eDAxXDBcMFx4ZTdcMFx4ZTdcMFx4ZTdcMFwwXDBcMFwwXHhiN1x4ZmZcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFx4ZmFcMFx4ZmFcMFwwXHgwMDFceDAzI1x4MDFceGVmXHgwM1wwXDBc
MFwwXHgwYlx4MDM8XHgwMi1ceDAxXHhlN1x4ZmYuXHgwMS9ceDAxXHg5OVx4ZmYwXHgwMVwwXDA8
XHgwMVwwXDBJXHgwMVVceDAxYlx4MDJUXHgwMV5ceDAxXDBcMFdceDAxb1x4MDFbXHgwMXlceDAx
XHhlN1wwXHhlN1wwXHhlN1wwelx4MDFceGUzXDBcMFwwXDBcMHtceDAxXDBcMFwwXDBcMFwwUFx4
MDFcMFwwXHg4Mlx4MDFceDg0XHgwMVx4YTlceGZmXDBcMGRceGZmXHg4NVx4MDFceGI3XHhmZlx4
YjdceGZmXHhiN1x4ZmZceGI3XHhmZlwwXDBceDk1XHgwMVx4ZTdcMFx4OWZceDAxYlx4MDFceGEw
XHgwMVx4YTFceDAxXHhhNlx4MDFceGFhXHgwMVx4YWJceDAxYlx4MDJceGI3XHgwMVx4ZTZceGZm
XHhjMVx4MDFcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YzZceDAxXDBcMFx4MTJcMFx4ZTdcMFwwXDBc
MFwwXDBcMFx4YzdceDAxXDBcMFx4YzhceDAxXDBcMFwwXDBceDgwXHgwMVwwXDBcMFwwXDBcMFww
XDBceGNmXHgwMVwwXDBcMFwwXDBcMFwwXDBceGFkXHhmZlwwXDBcMFwwXDBcMFwwXDBSXDBSXDBS
XDBSXDBcMFwwXHhkMFx4MDFceGQxXHgwMVx4ZTFceDAxXHhlYlx4MDFcMFwwXDBcMDxceDAyXHhl
Y1x4MDFceGFlXHgwMlx4YWVceDAyXHhlZFx4MDFceGVlXHgwMVwwXDBcMFwwUlwwUlwwUlwwUlww
XDBcMFx4ZjZceDAxXHhmNFx4MDFceGY3XHgwMVwwXDBcMFwwXHhiN1x4ZmZ9XHgwM1xiXHgwMlww
XDBceDExXHgwMlx4YmJceGZmXHhiZlwwXHhlZFx4ZmZceGVhXDBceGVhXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMDxceDAyXHhhM1x4MDNcMFwwXDBcMFx4YWVceDAyXDBcMFwwXDBcMFwwXDBcMGJceDAy
XDBcMFx4YzdcMFx4MTJceDAyXHhjN1wwXHgxM1x4MDJiXHgwMlx4YzlceDAzXHhlM1wwXDBcMFx4
MTRceDAyXHgxYVx4MDJceDFjXHgwMlx4MWRceDAyLVx4MDI3XHgwMlwwXDBcMFx4MDA0XHgwMlww
XDBceGM3XDBcMFx4MDA5XHgwMjpceDAyYlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
UlwwXDBcMFwwXDBceDE3XHgwMkBceDAyXDBceDAwNVx4MDJDXHgwMmJceDAyTFx4MDJdXHgwMmJc
eDAyXDBcMF5ceDAyXDBcMCcsCisgIC8qIHJpbmRleCAqLyJcMFwwTVx4MDNcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFx4MDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBPXHhm
Zlx4MTRcMFwwXDB3XDB3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMHdcMFx4YzJc
eGZmXDBcMFwwXDBcMFwwXDBcMF9ceDAyYFx4MDJmXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBoXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMF9ceDAyX1x4MDJf
XHgwMl9ceDAyX1x4MDJfXHgwMl9ceDAyX1x4MDJfXHgwMl9ceDAyXDBcMFwwXDBcMFwwaFx4MDJc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaFx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMH5ceDAxXDBcMFwwXDBceGYyXHhmZmhceGZmXDBcMClceGZmXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMGlceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODNceGZmXDBcMFwwXDBc
MFwweVx4MDJrXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcME1cMFx4MTZcMFwwXDBNXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFx4OWFcMFx4OWFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGlc
eDAydFx4ZmZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBpXHgwMlx4ODNceDAyXDBcMFx4ODNceDAy
XDBcMFwwXDBcMFwwXDBcMGlceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwc1wwXHhmM1x4ZmZz
XDBpXHgwMlx4ODRceDAyXDBcMHlceDAyXHhjMFwwXDBcMFwwXDBceDhlXHgwMlwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODZceDAyXHg4Nlx4MDJceDg2XHgwMlwwXDBcMFww
XDBcMFx4YTRceDAxWFx4MDFceGE0XHgwMVwwXDBcMFwwXHhjMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBceGU2XDBceGU2XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4
MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGlceDAyXDBcMFx4
ZjdceGZmXDBcMFwwXDBcMFwwXDBcMFwwXDBceGNhXHgwMVx4ODlceDAyXHhjYVx4MDFcMFwwXHg4
NFx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFxmXHgwMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDB0XHhmZlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDg2XHgw
Mlx4ODZceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDA8XDBceGYyXHhmZlx4
OTVceDAyXHg5NVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4MDJcMFwwaVx4MDJp
XHgwMlwwXDBcMFwwXDBcMFwwXHgwMDJceDAxMlx4MDFceGYwXHgwMTJceDAxXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwweVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODNceDAyXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBpXHgwMlwwXDBcMFwwXDBcMGlceDAyXDBcMFwwXDBcMFwwXDBc
MFx4OGFceDAyXDBcMFx4ODNceDAyXDBcMFx4ODNceDAyXDBcMGlceDAyXDBcMFx4YWZceGZmXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDgzXHgwMlwwXDBcMFww
XDBcMGlceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDAwMlx4MDFcMFwwXDBcMFx4OGZc
eDAyXDBcMFwwXDBcMFwwXHg5Zlx4MDJpXHgwMlwwXDBcMFwwaVx4MDJcMFwwXDBcMFwwXDAiLAor
ICAvKiBnaW5kZXggKi8iXDBcMFwwXDBcMFwwXDBcMHhceGZmRFx4ZmZceGE1XHgwMlFceGZmLlx4
MDNGXHhmZlx4YTdceGZmR1x4ZmZIXHhmZjNceGZmTFx4ZmZceGJjXHhmZlxuXHgwM1BceGZmXHhi
Mlx4ZmZceDgwXHhmZlx4YmRceGZlXGZceDAzXHhjNFx4MDJcMFwwXHg4Mlx4ZmZcMFwwXHhhNlx4
ZmZWXHhmZk5ceGZmXDBcMFx4YThceDAyXDBcMEJceGZmUlx4ZmZceGNhXHhmZVwwXDBceGNhXHhm
Zlx4YjVceGZmXDBcMFwwXHgwMDJceDAzXDBcMFwwXDBcMFwwXDBcMFwwXDBceGUzXHhmZlwwXDBc
MFwwXDBcMFwwXDBceGFjXDB0XDBceDk2XDBceGJlXDBceGYwXHhmZlwwXDBceGJjXHgwM1wwXDAh
XDBcMFwwIiwKKyAgLyogdGFibGVzaXplICovMTMzNSwKKyAgLyogdGFibGUgKi8nXHg4NlwwXHhh
M1wwXHg4YlwwXHhmOVwwXHg4YlwwXHgwMlx4MDFceGY3XDBceGQ5XDBceGZjXDBcMFx4MDFceDFl
XHgwMVx4Y2ZcMFx4ODdcMFx4ODhcMFx4ZmRcMFx4OGRcMFx4MTNceDAxXHgwZlx4MDFceDA1XHgw
MVx4OGZcMFx4ODNcMFx4MDRceDAxXGJceDAxXHRceDAxXHg4YVwwXHhjZlwwXHg4ZVwwXHhlNlww
XHgwNVx4MDFceGU3XDBceDFjXHgwMVx4MWNceDAxXHgwNVwwXHgxN1x4MDFceDE4XHgwMSpceDAx
LFx4MDEtXHgwMVx4ODlceDAxXHg4YVx4MDFceDhiXHgwMSNceDAxXHgxOVwwIVwwXHg4M1x4MDFc
eDg0XHgwMVx4MTJcMCRceDAxXHg4YlwwJVx4MDFceDE5XDAmXHgwMVx4OGJcMFRcMG5cMFx4MGZc
MFx4MTVcMFx4MTZceDAwNVx4MDFVXHgwMDNceDAxNFx4MDF2XDBceGQxXDAiXDBceGU0XDBceGU0
XDBceGQ4XDBceGU0XDBceGUyXDBceGUzXDBEXDBceDE1XDBceDE2XDBDXHgwMVx4MTBceDAxXHgx
MVx4MDFceDEyXHgwMTpceDAxXHg5Ylx4MDFceDFmXHgwMVx4YzVcMFx4YzhcMFx4OTFcMFx4MTJc
MEtceDAxXHgwNVx4MDFceGQ1XDBceDkxXDBceDkxXDBceGU4XDBceGU5XDBceGVhXDBceGViXDBc
eGVjXDB8XDBceGVkXDBceGVlXDBceGVmXDBceGYwXDBceGYxXDB9XDBKXHgwMVx4YWZceDAxTFx4
MDFceDE5XDBceGM2XDBceGNhXDAjXDBfXHgwMSRcMFx4MTlcMFx4ZDdcMFx4MTlcMFx4ZTRcMFx4
ZTRcMFx4ZTRcMFx4MTRceDAxXG5ceDAxXHgxMVwwXHhjZlwwLlwwXHhjZlwwXCdcMFx4MGJceDAx
XHhjZlwwUFwwZ1x4MDFtXHgwMW9ceDAxUFwwfFwwflwwUFwwK1x4MDExXDAuXHgwMSBceDAxflww
KlwwK1wwLFwwLVwwVVx4MDFceDgxXHgwMDJcMFBceDAxXHgxMlwwXHg4MlwwVlx4MDFGXDBXXHgw
MVx4ODlcMFhceDAxKFx4MDFceDEzXDBceDE0XDBceDE1XDBceDE2XDBceDE3XDBceDE4XDBceDE5
XDBceDFhXDBceDFiXDBceDFjXDBceDFkXDBceDFlXDBceDFmXDAgXDAmXDBMXDAoXDApXDB8XDBc
eDk5XHgwMTdcMEdcMHxcMFx4ODBceDAxVFx4MDE4XHgwMDVceDAwNlwwdlx4MDFceDgxXDBPXDBc
eDE0XHgwMWtcMFx4ODJcMEVcMFx4OTVceDAxfFwwbFwwXHg5OFx4MDFceDhmXHgwMVx4MWNceDAx
XHg5Nlx4MDFceDk0XHgwMVx4OTFcMDxceDAxPVx4MDF3XHgwMVx4OTdceDAxflwwXHg5MVwwSFww
XHgxYVx4MDFceDg0XDBceGUyXDBceGUzXDBceDlkXHgwMVx4OWFceDAxXHg5Zlx4MDFceDAxXDBc
eDAyXDBceDAzXDBceDljXHgwMS9ceDAwMFx4MDAzXHgwMDRcMElcMFx4YTFceDAxWlx4MDFbXHgw
MVxcXHgwMV1ceDAxblx4MDFceGFiXHgwMWFcMGJcMGNcMGRcMGVcMGZcMGdcMGhcMGlcMGpcMFx4
YzJcMFx4YWVceDAxdFx4MDFceGMzXDBceGMyXDBpXHgwMVx4Y2ZcMFx4MDdceDAxalx4MDFceDE5
XDBceDFjXDBKXDBceDE5XDBceDFjXDBLXDBceDBmXDBQXDBceGI0XHgwMVx4MGZcMFFcMFx4Yjdc
eDAxXHhjZlwwXHhlMlwwXHhlM1wweFx4MDF5XHgwMXpceDAxe1x4MDFceGEzXDBceDkzXDBceDk0
XDBceDk1XDBceDg3XHgwMVx4ODdceDAxXHg4N1x4MDFceDg3XHgwMVx4Y2ZcMFx4ZGVcMDxceDAx
PVx4MDF+XDApXHgwMVJcMFx4OTJceDAxbVwwXHgxY1wwXHg5MVwwXHg5MVwwXHgxY1wwU1wwXHgx
Y1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1x4MDA4XDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBc
eDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFj
XDBceDFjXDBceDFjXDBvXDBceGEzXHgwMVx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4
MWNcMFx4MWNcMFx4MWNcMHBcMFdcMFhcMFlcMFx4MTlcMFx4MTlcMHFcMFpcMHJcMFtcMFxcXDBd
XDBeXDBzXDBfXDBgXDBceDg3XHgwMXRcMFx4MWNcMHVcMHdcMFx4MWNcMH5cMFx4MWNcMFx4MWNc
MFx4MWNcMFx4MWNcMFx4MWNcMHhcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNc
MFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4
MWNcMHlcMHpcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNc
MHtcMFx4MWNcMFx4OTBcMFx4OTFcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4YmZc
MFx4MWNcMFx4OTJcMFx4YmVcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4
MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4YzBc
MFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4
ODRcMFx4ZGFcMFx4YzdcMFx4ODlcMFx4ZDRcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMFx4ZGJcMCBc
MCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMFx4MWNcMCBcMCBc
MCBcMCBcMCBcMCBcMCBcMCBcMCBcMFx4ZGRcMFx4ZjJcMFx4ZmFcMFx4ZmVcMFx4MTdcMFx4MTdc
MFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdcMFx4MDFceDAxXHgxN1wwXHgxN1wwXHgxN1ww
XHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgx
N1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgwM1x4MDEgXDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBc
eDE3XDBceDE3XDBceDE3XDBceDE3XDBcblx4MDFceGY4XDApXHgwMVx4MTZceDAxIlwwIlwwIlww
IlwwIlwwIlwwIlwwXHgxOVx4MDEiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAi
XDAiXDAiXDAiXDBceDFiXHgwMVx4MTdcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCFceDAxL1x4
MDFcJ1x4MDEwXHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNceDAw
Nlx4MDFceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXHgwMDlceDAxIlwwXHgw
M1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwO1x4MDE+XHgwMT9c
eDAxQFx4MDFceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBBXHgwMVx4
MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVc
MFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMEJceDAxXHgwM1wwXHgxZVwwXHgx
ZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgwNFx4MDFEXHgwMUVceDAx
Rlx4MDFceDAzXDBceDBiXHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMGFceDAxXHgw
M1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1ww
XHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwR1x4MDFceDFlXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBJXHgwMU1ceDAxT1x4MDFRXHgw
MVx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFJceDAxXHgxOVwwU1x4MDFZXHgwMVx4MTlc
MFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4
MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMF5ceDAxXHgwM1wwXHgxOVwwXHgxOVwwXHgxOVww
XHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwYFx4MDFiXHgwMWNceDAxZFx4MDFceDAzXDBl
XHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMHJceDAxZlx4MDFceDAzXDBceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDBceDAzXDBoXHgwMVx4MTlcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMFx4MDNcMFx4MDNcMGtceDAxbFx4MDFwXHgwMXFceDAxXHgwM1wwXHgwM1wwXHgw
M1wwXHgwM1wwXHgwM1wwc1x4MDFceDAzXDB8XHgwMX1ceDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgw
M1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1ww
XHgwM1wwXHgwM1wwflx4MDFceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDBceDdmXHgwMVx4ODFceDAxXHg4NVx4MDFceDg2XHgwMVx4MWVcMFx4OGRc
eDAxXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHg4Y1x4MDFceDhlXHgwMVx4MWVcMFx4
MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVc
MFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4OTFceDAxXHgwM1wwXHgxZVwwXHgxZVwwXHgxZVww
XHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHg5M1x4MDFceDllXHgwMVx4YTBceDAxXHhh
NFx4MDFceDk3XDBceGIwXHgwMVx4OThcMFx4OTlcMFx4OWFcMFx4YTVceDAxXHg5YlwwXHhhNlx4
MDFceGE3XHgwMVx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNc
MFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFx4YThceDAxXHgxZVww
XHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXHhhOVx4MDFc
eGFhXHgwMVx4YWNceDAxXHhhZFx4MDFceGY2XDBceGIyXHgwMVx4OThcMFx4OTlcMFx4OWFcMFx4
YjFceDAxXHg5YlwwXHhiM1x4MDFceGEzXDBceDljXDBceDlkXDBceDllXDBceDlmXDBceGEwXDBc
eGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFh
XDBceGI1XHgwMVx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFc
MFx4YjJcMFx4YjZceDAxXHhiOFx4MDFceDg0XDBceGEzXDBceGY4XDB+XDBceDk4XDBceDk5XDBc
eDlhXDBceDkxXDBceDliXDBceGFhXDBQXDBceDljXDBceDlkXDBceDllXDBceDlmXDBceGEwXDBc
eGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFh
XDBceDE3XDBceGIzXDBceGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBc
eGIyXDBcdFwwUlwwXHg3ZlwwXHgwM1wwXHhmYlwwXHgwM1wwXHg5OFwwXHg5OVwwXHg5YVwwXHgx
OVwwXHg5YlwwUFwwS1wwXHg5Y1wwXHg5ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlww
XHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhhYVwwTVwwXHhiM1ww
XHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwSFx4MDFceGMx
XDBceGY1XDBceGY0XDBceDgyXHgwMThceDAxXHg5OFwwXHg5OVwwXHg5YVwwTlx4MDFceDliXDBc
eDBlXDBceGQ2XDBceDljXDBceDlkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEz
XDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhh
YlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXHg5OFwwXHg5OVwwXHhjYlwwXDBcMFx4Y2NcMFwwXDBcMFwwXHg5Y1wwXHhj
ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlww
XHhhN1wwXHhhOFwwXHhhOVwwXHhhYVwwXDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVc
MFx4YWZcMFx4YjBcMFx4YjFcMFx4YjJcMFwwXDBcMFwwXHhkZVwwXHhkZlwwXHhlMFwwXHhlMVww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ZTJcMFx4ZTNcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXHg5OFwwXHg5OVwwXHhjYlwwXDBcMFx4Y2NcMFwwXDBceGIzXDBceDlj
XDBceGNkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBc
eGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBcMFwwXDBcMFx4YWJcMFx4YWNcMFx4YWRcMFx4
YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4YjJcMFwwXDBcMFwwXHhkZVwwXHhkZlwwXHhlMFwwXHhl
MVwwXHg5OFwwXHg5OVwwXHhjYlwwXDBcMFx4Y2NcMFwwXDBcMFwwXHg5Y1wwXHhjZFwwXHg5ZVww
XHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhh
OFwwXHhhOVwwXHhhYVwwXDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4
YjBcMFx4YjFcMFx4YjJcMFwwXDBcMFwwXDBcMFx4ZGZcMFx4ZTBcMFx4ZTFcMFx4OThcMFx4OTlc
MFx4Y2JcMFwwXDBceGNjXDBcMFwwXDBcMFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4
YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFc
MFwwXDBceGIzXDBceGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIy
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXHg5
MFx4MDFceGNlXDBceDljXDBceGNkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEz
XDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhh
YlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXHg5OFwwXHg5OVwwXHhjYlwwXDBcMFx4Y2NcMFwwXDBcMFwwXHg5Y1wwXHhj
ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlww
XHhhN1wwXHhhOFwwXHhhOVwwXHhhYVwwXDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVc
MFx4YWZcMFx4YjBcMFx4YjFcMFx4YjJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhlMVwwXHg5OFww
XHg5OVwwXHhjYlwwXDBcMFx4Y2NcMFx4YTJceDAxXDBcMFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZc
MFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4
YTlcMFx4YWFcMFwwXDBceGIzXDBceGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBc
eGIxXDBceGIyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFww
XHhjY1wwXDBcMFwwXDBceDljXDBceGNkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBc
eGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBcMFwwXHhiM1ww
XHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGIzXDAn
LAorICAvKiBjaGVjayAqLyJZXDBcMFwwXFxcMFx4YjVcMF5cMFx4YmZcMFx4YjRcMFx4OGZcMFx4
YmNcMFx4YmRcMFx4ZDdcMFx4ODlcMFpcMFtcMFx4YmNcMF1cMFx4Y2VcMFx4Y2FcMFx4YzRcMF5c
MFhcMFxiXHgwMVx4YzVcMFx4YzZcMFxcXDBceDk3XDBeXDBceDliXDBceGNlXDBceDlkXDBceGQ2
XDBceGQ3XDBcdFx4MDFceGQxXDBceGQyXDBceGRmXDBceGUwXDBceGUxXDBpXHgwMWpceDAxa1x4
MDErXHgwMVx4MDFceDAxXG5cMGJceDAxY1x4MDEyXHgwMTFceDAxXHg4YVx4MDAzXHgwMVx0XHgw
MTVceDAxXHg4ZVwwXHgwNFx4MDFGXDBcdFx4MDE8XHgwMT1ceDAxXHhlYVwwXG5ceDAxXHhlNlww
XHhlN1wwTlwwXHg4YVwwXDBcMFx4OWFcMFx4OWJcMFx4OGVcMFx4OWRceDAwOFx4MDE5XHgwMSZc
MDxceDAxPVx4MDFcYlx4MDFceGNiXDBceGNjXDBceGNkXDBceGZjXDBceDg1XHgwMVx4ZDhcMFx4
ODdcMFx4ODhcMFx4MDRceDAxMlx4MDFceDExXHgwMVxiXHgwMVx4OGRcMFx0XHgwMVxuXHgwMVx4
OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4MDRceDAxXHhhNFwwXHhhNVwwXHhhNlwwXHhh
N1wwXHhhOFwwXG5ceDAxXHgxMFx4MDFceGFhXHgwMVx4MTJceDAxXHgwMVx4MDFceDg3XDBceDg4
XDBcMFwwKVx4MDFceDA1XHgwMVx4MDdceDAxXHg4ZFwwXHRceDAxXHhjYlwwXHhjY1wwXHhjZFww
XHhjZlwwXHgwMVx4MDFceDAzXDBceGY2XDBcdFx4MDFceGY4XDBceDA0XHgwMVx4MDdceDAxXHhm
YlwwXG5ceDAxMVx4MDE8XHgwMT1ceDAxXHgwZVx4MDFceDA0XHgwMVx4MDFceDAxXHgxMVx4MDFc
eGRmXDBcdFx4MDFceGUxXDBcblx4MDFceDA3XHgwMVx4MTdcMFx4MThcMFx4MTlcMFx4MWFcMCtc
eDAxXHgwMVx4MDFceDFkXDBceDFhXHgwMTJceDAxXHgwNVx4MDExXHgwMVx4MDRceDAxM1x4MDFc
dFx4MDE1XHgwMVx4ZGVcMDpceDAxO1x4MDE8XHgwMT1ceDAxPlx4MDE/XHgwMUBceDAxQVx4MDFC
XHgwMUNceDAxRFx4MDFFXHgwMUZceDAxR1x4MDFceDEzXDBcdFx4MDFceDE1XDBceDE2XDBceDA0
XHgwMXtceDAxXHgwNFx4MDFceDA0XHgwMVx4MDRceDAxYFx4MDFcblx4MDFcdFx4MDFceDFmXDAg
XDBcblx4MDFceDAxXHgwMVxuXHgwMVx4MTRceDAxXG5ceDAxXHgwNVx4MDEnXDB4XHgwMVx4MDRc
eDAxXG5ceDAxelx4MDFyXHgwMXtceDAxeFx4MDFcblx4MDFceDA0XHgwMS5ceDAxL1x4MDFRXHgw
MXlceDAxXHgwNVx4MDFcblx4MDFceDA0XHgwMTZceDAxXHRceDAxOFx4MDE5XHgwMVx4OGNceDAx
XHg4MVx4MDFceDhlXHgwMVx4MDFcMFx4MDJcMFx4MDNcMFx4OGFceDAxXHgxYlwwXHgxY1wwXHgx
ZFwwXHgxZVwwXHgwNFx4MDFceDkwXHgwMSNceDAxJFx4MDElXHgwMSZceDAxPFx4MDFceDllXHgw
MTlcMDpcMDtcMDxcMD1cMD5cMD9cMEBcMEFcMEJcMFx4MDZceDAxXHhhMlx4MDFLXHgwMVx0XHgw
MVx4MDZceDAxXHgwZVx4MDFzXHgwMVx0XHgwMVx4MTFceDAxXHgwNlx4MDFceDA2XHgwMVx4MDRc
eDAxXHRceDAxXHRceDAxXHgwNFx4MDFceDA3XHgwMVx4MDRceDAxXHhiMlx4MDFcblx4MDFceDA0
XHgwMVx4YjVceDAxXHg4Mlx4MDE4XHgwMTlceDAxVVx4MDFWXHgwMVdceDAxWFx4MDFcblx4MDFc
eDAxXHgwMVx4MDJceDAxXHgwM1x4MDFoXHgwMWlceDAxalx4MDFrXHgwMVx4OTFceDAxLVx4MDEu
XHgwMS9ceDAxXHgwNVx4MDFceDA2XHgwMVx4MDRceDAxdFx4MDFcblx4MDFceDA2XHgwMVx0XHgw
MVxuXHgwMVx0XHgwMVx4MDRceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAx
XHRceDAxXHgxMVx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgx
N1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFl
XHgwMVx4MWZceDAxIFx4MDFcblx4MDFceDkyXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEo
XHgwMSlceDAxKlx4MDFcblx4MDErXHgwMSxceDAxLVx4MDFcdFx4MDFcblx4MDFcblx4MDExXHgw
MVxuXHgwMTNceDAxNFx4MDE1XHgwMTZceDAxXG5ceDAxOFx4MDE5XHgwMVx4YWFceDAxI1x4MDFc
eDA2XHgwMVxuXHgwMVxuXHgwMVx0XHgwMVx4MDVceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceDBl
XHgwMVx4MGZceDAxXG5ceDAxSFx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4
MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgx
ZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4MDFcblx4MDEjXHgwMSRceDAxJVx4MDEmXHgw
MSdceDAxKFx4MDEpXHgwMSpceDAxXG5ceDAxXHgwNlx4MDFceDA0XHgwMVx4MDRceDAxXHRceDAx
XG5ceDAxXHgwYlx4MDFcZlx4MDFcclx4MDErXHgwMVx4MGZceDAxXG5ceDAxXG5ceDAxXHgxMlx4
MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgw
MVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXG5c
eDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHRceDAxXHgw
NFx4MDFcdFx4MDFcdFx4MDFcdFx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4
MGVceDAxXHgwZlx4MDFcdFx4MDFceDExXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVc
eDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4
MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMUhceDAxXCJceDAxI1x4MDEkXHgwMSVceDAx
Jlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVxuXHgwMSFceDAxXG5ceDAxXHRceDAxXHRceDAxXG5c
eDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxXHRceDAxXHgxMVx4MDFceDEy
XHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlc
eDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFc
blx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceDAxXHgw
MVx0XHgwMVx4MDZceDAxXG5ceDAxXHRceDAxXG5ceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceDBl
XHgwMVx4MGZceDAxXG5ceDAxXHgxMVx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgw
MVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAx
XHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcdFx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZc
eDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcdFx4MDFceDA0XHgwMVxuXHgwMVx4MDRceDAxXHRceDAx
XG5ceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxXCJceDAxXHgxMVx4MDFc
eDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4
MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4
MDFcblx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4
MDFcblx4MDFcblx4MDFcblx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVc
eDAxXHgwZlx4MDFceDA2XHgwMVx4MTFceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4
MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgw
MVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEm
XHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXGJceDAxXG5ceDAxXHgwMVx4MDFcdFx4MDFcdFx4MDFc
eDA3XHgwMVx4MGJceDAxXGZceDAxXHJceDAxXHgwZVx4MDFceDBmXHgwMVx4MDZceDAxXHgxMVx4
MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgw
MVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAx
IFx4MDFcblx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFc
blx4MDFcblx4MDFcblx4MDE2XHgwMVx0XHgwMVxuXHgwMVx4MGJceDAxXGZceDAxXHJceDAxXG5c
eDAxXHgwZlx4MDFcblx4MDFcblx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4
MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgx
ZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAx
J1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4MDFcblx4MDFceDA2XHgwMVx0XHgwMVx4MDRc
eDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxNFx4MDFcblx4MDFceDEyXHgw
MVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAx
XHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFceDBl
XHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4MGVceDAx
XG5ceDAxXG5ceDAxXG5ceDAxXHRceDAxXG5ceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFcdFx4MDFc
eDBmXHgwMVxuXHgwMVxuXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4
MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgw
MVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgw
MShceDAxKVx4MDEqXHgwMVxuXHgwMVxuXHgwMVxuXHgwMVxuXHgwMVx0XHgwMVx4MDZceDAxXHgw
Ylx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxXG5ceDAxXG5ceDAxXHgxMlx4MDFceDEz
XHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFc
eDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHRceDAxSFx4
MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXG5ceDAxXG5ceDAxXG5c
eDAxXG5ceDAxXHRceDAxXHRceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFcblx4MDFceDBmXHgwMVxu
XHgwMVxuXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgw
MVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAx
XHgxZlx4MDEgXHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4
MDEqXHgwMVxuXHgwMVx4MGVceDAxXG5ceDAxXG5ceDAxXHRceDAxXHgxMVx4MDFceDBiXHgwMVxm
XHgwMVxyXHgwMVxuXHgwMVx4MGZceDAxXHRceDAxXDBcMFx4MTJceDAxXHgxM1x4MDFceDE0XHgw
MVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAx
XHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4MTFceDAxSFx4MDEjXHgwMSRc
eDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXG5ceDAxXG5ceDAxXG5ceDAxXG5ceDAx
XHRceDAxXHgwMVx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVxuXHgwMVx4MGZceDAxXG5ceDAxXG5c
eDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4
MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgw
MSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAx
XG5ceDAxXG5ceDAxXHgwMVx4MDFcblx4MDFcdFx4MDFcdFx4MDFceDBiXHgwMVxmXHgwMVxyXHgw
MVx4MDFceDAxXHgwZlx4MDFceDBlXHgwMVxuXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4
MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgx
Y1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVc
eDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4MGVceDAxXHg4NlwwXHhhYlwwXHhhYVwwXHRc
eDAxXHhmNFwwXHgwYlx4MDFcZlx4MDFcclx4MDFceDE0XHgwMVx4MGZceDAxXHgwMlwwXHg4ZFww
XHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFc
eDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBc
eDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxm
XHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4MDFceDEzXHgw
MVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAx
XHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgw
MSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZm
LVx4MDEuXHgwMS9ceDAxMFx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZjhceDAxOVx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwYlx4MDFcZlx4MDFcclx4MDFc
eGZmXHhmZlx4MGZceDAxXHhmZlx4ZmZIXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVc
eDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4
MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4ZmZceGZmXHhmZlx4ZmYjXHgwMSRceDAx
JVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHhmZlx4ZmZceGZmXHhmZi1ceDAxLlx4MDEv
XHgwMTBceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceGZmXHhmZlx4MGZceDAxXHhmZlx4ZmZceGZm
XHhmZlx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThc
eDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4
MDEgXHgwMVx4ZmZceGZmSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpc
eDAxXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmLlx4MDEvXHgwMTBceDAxXHgwYlx4MDFcZlx4MDFc
clx4MDFceGZmXHhmZlx4MGZceDAxXHhmZlx4ZmZceGZmXHhmZlx4MTJceDAxXHgxM1x4MDFceDE0
XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJc
eDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4ZmZceGZmSFx4MDEjXHgw
MSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwYlx4MDFcZlx4MDFcclx4MDFceGZmXHhmZlx4
MGZceDAxXHgxMFx4MDE3XHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4
MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgw
MVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4ZmZceGZmSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdc
eDAxKFx4MDEpXHgwMSpceDAxXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHgwYlx4MDFcZlx4MDFcclx4MDFceGZmXHhmZlx4MGZceDAxXHhmZlx4ZmZceGZm
XHhmZlx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThc
eDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4
MDEgXHgwMVx4ZmZceGZmSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpc
eDAxXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZjBceDAxXHgwYlx4MDFc
Zlx4MDFcclx4MDFceGZmXHhmZlx4MGZceDAxXHgxMFx4MDFceGZmXHhmZlx4MTJceDAxXHgxM1x4
MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgw
MVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4ZmZceGZmSFx4
MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwYlx4MDFcZlx4MDFcclx4MDFceGZm
XHhmZlx4MGZceDAxXHhmZlx4ZmZceGZmXHhmZlx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVc
eDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4
MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4ZmZceGZmSFx4MDEjXHgwMSRceDAxJVx4
MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZkhceDAxIiwKKyAgLyogZXJyb3JfZnVuY3Rp
b24gKi9wYXJzZV9lcnJvciwKKyAgLyogbmFtZXNfY29uc3QgKi8iRlVOQ1JFRlwwTVVUXDBMUEFS
XDBSUEFSXDBOT1BcMERST1BcMEJMT0NLXDBFTkRcMElGXDBUSEVOXDBFTFNFXDBTRUxFQ1RcMExP
T1BcMEJSXDBCUl9JRlwwQlJfVEFCTEVcMENBTExcMENBTExfSU5ESVJFQ1RcMFJFVFVSTlwwR0VU
X0xPQ0FMXDBTRVRfTE9DQUxcMFRFRV9MT0NBTFwwR0VUX0dMT0JBTFwwU0VUX0dMT0JBTFwwVU5S
RUFDSEFCTEVcMENVUlJFTlRfTUVNT1JZXDBHUk9XX01FTU9SWVwwRlVOQ1wwU1RBUlRcMFRZUEVc
MFBBUkFNXDBSRVNVTFRcMExPQ0FMXDBHTE9CQUxcME1PRFVMRVwwVEFCTEVcMEVMRU1cME1FTU9S
WVwwREFUQVwwT0ZGU0VUXDBJTVBPUlRcMEVYUE9SVFwwU0NSSVBUXDBSRUdJU1RFUlwwSU5WT0tF
XDBHRVRcMEFTU0VSVF9NQUxGT1JNRURcMEFTU0VSVF9JTlZBTElEXDBBU1NFUlRfU09GVF9JTlZB
TElEXDBBU1NFUlRfVU5MSU5LQUJMRVwwQVNTRVJUX1JFVFVSTlwwQVNTRVJUX1JFVFVSTl9OQU5c
MEFTU0VSVF9UUkFQXDBBU1NFUlRfRVhIQVVTVElPTlwwSU5QVVRcME9VVFBVVFwwRU9GXDAiLAor
ICAvKiBuYW1lc19ibG9jayAqLyJOQVRcMElOVFwwRkxPQVRcMFRFWFRcMFZBUlwwVkFMVUVfVFlQ
RVwwTE9BRFwwU1RPUkVcME9GRlNFVF9FUV9OQVRcMEFMSUdOX0VRX05BVFwwQ09OU1RcMFVOQVJZ
XDBCSU5BUllcMENPTVBBUkVcMENPTlZFUlRcMFRFU1RcMCIKK107CisKK2Z1bmN0aW9uIHNjcmlw
dChsZXhmdW4sIGxleGJ1ZikgeworICByZXR1cm4gUGFyc2luZy55eXBhcnNlKHl5dGFibGVzLCAx
LCBsZXhmdW4sIGxleGJ1Zik7Cit9CisKK2Z1bmN0aW9uIHNjcmlwdDEobGV4ZnVuLCBsZXhidWYp
IHsKKyAgcmV0dXJuIFBhcnNpbmcueXlwYXJzZSh5eXRhYmxlcywgMiwgbGV4ZnVuLCBsZXhidWYp
OworfQorCitmdW5jdGlvbiBtb2R1bGUxKGxleGZ1biwgbGV4YnVmKSB7CisgIHJldHVybiBQYXJz
aW5nLnl5cGFyc2UoeXl0YWJsZXMsIDMsIGxleGZ1biwgbGV4YnVmKTsKK30KKworZXhwb3J0cy5z
Y3JpcHQgID0gc2NyaXB0OworZXhwb3J0cy5zY3JpcHQxID0gc2NyaXB0MTsKK2V4cG9ydHMubW9k
dWxlMSA9IG1vZHVsZTE7CisvKiBWYXJNYXAgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8v
IGVuZCBvZiBwYXJzZXIuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsK
KworCisgIF9yZWdpc3RyeVsncGFyc2luZyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhw
b3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgcGFyc2luZy5qcyAvLy8vLy8vLworJ3VzZSBz
dHJpY3QnOworCit2YXIgJCRBcnJheSAgICAgICAgID0gcmVxdWlyZSgiLi9hcnJheSIpOwordmFy
IEN1cnJ5ICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBMZXhpbmcgICAgICAg
ICAgPSByZXF1aXJlKCIuL2xleGluZyIpOwordmFyIENhbWxfb2JqICAgICAgICA9IHJlcXVpcmUo
Ii4vY2FtbF9vYmoiKTsKK3ZhciBDYW1sX2FycmF5ICAgICAgPSByZXF1aXJlKCIuL2NhbWxfYXJy
YXkiKTsKK3ZhciBDYW1sX3BhcnNlciAgICAgPSByZXF1aXJlKCIuL2NhbWxfcGFyc2VyIik7Cit2
YXIgQ2FtbF9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2V4Y2VwdGlvbnMiKTsKKwordmFy
IFlZZXhpdCA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIlBhcnNpbmcuWVlleGl0Iik7CisKK3Zh
ciBQYXJzZV9lcnJvciA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIlBhcnNpbmcuUGFyc2VfZXJy
b3IiKTsKKwordmFyIGVudiA9IC8qIHJlY29yZCAqL1sKKyAgLyogc19zdGFjayAqL0NhbWxfYXJy
YXkuY2FtbF9tYWtlX3ZlY3QoMTAwLCAwKSwKKyAgLyogdl9zdGFjayAqL0NhbWxfYXJyYXkuY2Ft
bF9tYWtlX3ZlY3QoMTAwLCAvKiAoKSAqLzApLAorICAvKiBzeW1iX3N0YXJ0X3N0YWNrICovQ2Ft
bF9hcnJheS5jYW1sX21ha2VfdmVjdCgxMDAsIExleGluZy5kdW1teV9wb3MpLAorICAvKiBzeW1i
X2VuZF9zdGFjayAqL0NhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QoMTAwLCBMZXhpbmcuZHVtbXlf
cG9zKSwKKyAgLyogc3RhY2tzaXplICovMTAwLAorICAvKiBzdGFja2Jhc2UgKi8wLAorICAvKiBj
dXJyX2NoYXIgKi8wLAorICAvKiBsdmFsIDogKCkgKi8wLAorICAvKiBzeW1iX3N0YXJ0ICovTGV4
aW5nLmR1bW15X3BvcywKKyAgLyogc3ltYl9lbmQgKi9MZXhpbmcuZHVtbXlfcG9zLAorICAvKiBh
c3AgKi8wLAorICAvKiBydWxlX2xlbiAqLzAsCisgIC8qIHJ1bGVfbnVtYmVyICovMCwKKyAgLyog
c3AgKi8wLAorICAvKiBzdGF0ZSAqLzAsCisgIC8qIGVycmZsYWcgKi8wCitdOworCitmdW5jdGlv
biBncm93X3N0YWNrcygpIHsKKyAgdmFyIG9sZHNpemUgPSBlbnZbLyogc3RhY2tzaXplICovNF07
CisgIHZhciBuZXdzaXplID0gKG9sZHNpemUgPDwgMSk7CisgIHZhciBuZXdfcyA9IENhbWxfYXJy
YXkuY2FtbF9tYWtlX3ZlY3QobmV3c2l6ZSwgMCk7CisgIHZhciBuZXdfdiA9IENhbWxfYXJyYXku
Y2FtbF9tYWtlX3ZlY3QobmV3c2l6ZSwgLyogKCkgKi8wKTsKKyAgdmFyIG5ld19zdGFydCA9IENh
bWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QobmV3c2l6ZSwgTGV4aW5nLmR1bW15X3Bvcyk7CisgIHZh
ciBuZXdfZW5kID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChuZXdzaXplLCBMZXhpbmcuZHVt
bXlfcG9zKTsKKyAgJCRBcnJheS5ibGl0KGVudlsvKiBzX3N0YWNrICovMF0sIDAsIG5ld19zLCAw
LCBvbGRzaXplKTsKKyAgZW52Wy8qIHNfc3RhY2sgKi8wXSA9IG5ld19zOworICAkJEFycmF5LmJs
aXQoZW52Wy8qIHZfc3RhY2sgKi8xXSwgMCwgbmV3X3YsIDAsIG9sZHNpemUpOworICBlbnZbLyog
dl9zdGFjayAqLzFdID0gbmV3X3Y7CisgICQkQXJyYXkuYmxpdChlbnZbLyogc3ltYl9zdGFydF9z
dGFjayAqLzJdLCAwLCBuZXdfc3RhcnQsIDAsIG9sZHNpemUpOworICBlbnZbLyogc3ltYl9zdGFy
dF9zdGFjayAqLzJdID0gbmV3X3N0YXJ0OworICAkJEFycmF5LmJsaXQoZW52Wy8qIHN5bWJfZW5k
X3N0YWNrICovM10sIDAsIG5ld19lbmQsIDAsIG9sZHNpemUpOworICBlbnZbLyogc3ltYl9lbmRf
c3RhY2sgKi8zXSA9IG5ld19lbmQ7CisgIGVudlsvKiBzdGFja3NpemUgKi80XSA9IG5ld3NpemU7
CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGNsZWFyX3BhcnNlcigpIHsKKyAg
JCRBcnJheS5maWxsKGVudlsvKiB2X3N0YWNrICovMV0sIDAsIGVudlsvKiBzdGFja3NpemUgKi80
XSwgLyogKCkgKi8wKTsKKyAgZW52Wy8qIGx2YWwgKi83XSA9IC8qICgpICovMDsKKyAgcmV0dXJu
IC8qICgpICovMDsKK30KKwordmFyIGN1cnJlbnRfbG9va2FoZWFkX2Z1biA9IFtmdW5jdGlvbiAo
KSB7CisgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgfV07CisKK2Z1bmN0aW9uIHl5cGFyc2Uo
dGFibGVzLCBzdGFydCwgbGV4ZXIsIGxleGJ1ZikgeworICB2YXIgaW5pdF9hc3AgPSBlbnZbLyog
YXNwICovMTBdOworICB2YXIgaW5pdF9zcCA9IGVudlsvKiBzcCAqLzEzXTsKKyAgdmFyIGluaXRf
c3RhY2tiYXNlID0gZW52Wy8qIHN0YWNrYmFzZSAqLzVdOworICB2YXIgaW5pdF9zdGF0ZSA9IGVu
dlsvKiBzdGF0ZSAqLzE0XTsKKyAgdmFyIGluaXRfY3Vycl9jaGFyID0gZW52Wy8qIGN1cnJfY2hh
ciAqLzZdOworICB2YXIgaW5pdF9sdmFsID0gZW52Wy8qIGx2YWwgKi83XTsKKyAgdmFyIGluaXRf
ZXJyZmxhZyA9IGVudlsvKiBlcnJmbGFnICovMTVdOworICBlbnZbLyogc3RhY2tiYXNlICovNV0g
PSBlbnZbLyogc3AgKi8xM10gKyAxIHwgMDsKKyAgZW52Wy8qIGN1cnJfY2hhciAqLzZdID0gc3Rh
cnQ7CisgIGVudlsvKiBzeW1iX2VuZCAqLzldID0gbGV4YnVmWy8qIGxleF9jdXJyX3AgKi8xMV07
CisgIHRyeSB7CisgICAgdmFyIF9jbWQgPSAvKiBTdGFydCAqLzA7CisgICAgdmFyIF9hcmcgPSAv
KiAoKSAqLzA7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIGFyZyA9IF9hcmc7CisgICAg
ICB2YXIgY21kID0gX2NtZDsKKyAgICAgIHZhciBtYXRjaCA9IENhbWxfcGFyc2VyLmNhbWxfcGFy
c2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZyk7CisgICAgICBzd2l0Y2ggKG1hdGNoKSB7
CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgdmFyIHQgPSBDdXJyeS5fMShsZXhlciwg
bGV4YnVmKTsKKyAgICAgICAgICAgIGVudlsvKiBzeW1iX3N0YXJ0ICovOF0gPSBsZXhidWZbLyog
bGV4X3N0YXJ0X3AgKi8xMF07CisgICAgICAgICAgICBlbnZbLyogc3ltYl9lbmQgKi85XSA9IGxl
eGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdOworICAgICAgICAgICAgX2FyZyA9IHQ7CisgICAgICAg
ICAgICBfY21kID0gLyogVG9rZW5fcmVhZCAqLzE7CisgICAgICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIHRocm93IFBhcnNlX2Vycm9yOworICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGdyb3dfc3RhY2tzKC8qICgpICovMCk7CisgICAg
ICAgICAgICBfYXJnID0gLyogKCkgKi8wOworICAgICAgICAgICAgX2NtZCA9IC8qIFN0YWNrc19n
cm93bl8xICovMjsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMyA6
IAorICAgICAgICAgICAgZ3Jvd19zdGFja3MoLyogKCkgKi8wKTsKKyAgICAgICAgICAgIF9hcmcg
PSAvKiAoKSAqLzA7CisgICAgICAgICAgICBfY21kID0gLyogU3RhY2tzX2dyb3duXzIgKi8zOwor
ICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAg
ICB2YXIgbWF0Y2gkMTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgIG1hdGNoJDEg
PSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAvKiBTZW1hbnRpY19hY3Rpb25fY29tcHV0
ZWQgKi80LAorICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKHRhYmxlc1svKiBhY3Rpb25zICovMF1b
ZW52Wy8qIHJ1bGVfbnVtYmVyICovMTJdXSwgZW52KQorICAgICAgICAgICAgICBdOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKGV4bil7CisgICAgICAgICAgICAgIGlmIChleG4g
PT09IFBhcnNlX2Vycm9yKSB7CisgICAgICAgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICov
WworICAgICAgICAgICAgICAgICAgLyogRXJyb3JfZGV0ZWN0ZWQgKi81LAorICAgICAgICAgICAg
ICAgICAgLyogKCkgKi8wCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBleG47CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9hcmcgPSBtYXRjaCQxWzFdOworICAg
ICAgICAgICAgX2NtZCA9IG1hdGNoJDFbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIEN1cnJ5Ll8xKHRhYmxlc1svKiBlcnJvcl9m
dW5jdGlvbiAqLzEzXSwgInN5bnRheCBlcnJvciIpOworICAgICAgICAgICAgX2FyZyA9IC8qICgp
ICovMDsKKyAgICAgICAgICAgIF9jbWQgPSAvKiBFcnJvcl9kZXRlY3RlZCAqLzU7CisgICAgICAg
ICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgIH0KKyAgICB9OworICB9CisgIGNh
dGNoIChleG4kMSl7CisgICAgdmFyIGN1cnJfY2hhciA9IGVudlsvKiBjdXJyX2NoYXIgKi82XTsK
KyAgICBlbnZbLyogYXNwICovMTBdID0gaW5pdF9hc3A7CisgICAgZW52Wy8qIHNwICovMTNdID0g
aW5pdF9zcDsKKyAgICBlbnZbLyogc3RhY2tiYXNlICovNV0gPSBpbml0X3N0YWNrYmFzZTsKKyAg
ICBlbnZbLyogc3RhdGUgKi8xNF0gPSBpbml0X3N0YXRlOworICAgIGVudlsvKiBjdXJyX2NoYXIg
Ki82XSA9IGluaXRfY3Vycl9jaGFyOworICAgIGVudlsvKiBsdmFsICovN10gPSBpbml0X2x2YWw7
CisgICAgZW52Wy8qIGVycmZsYWcgKi8xNV0gPSBpbml0X2VycmZsYWc7CisgICAgaWYgKGV4biQx
WzBdID09PSBZWWV4aXQpIHsKKyAgICAgIHJldHVybiBleG4kMVsxXTsKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICBjdXJyZW50X2xvb2thaGVhZF9mdW5bMF0gPSBmdW5jdGlvbiAodG9rKSB7Cisg
ICAgICAgIGlmICh0b2subGVuZ3RoICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICByZXR1cm4g
Kyh0YWJsZXNbLyogdHJhbnNsX2Jsb2NrICovMl1bdG9rLnRhZyB8IDBdID09PSBjdXJyX2NoYXIp
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiArKHRhYmxlc1sv
KiB0cmFuc2xfY29uc3QgKi8xXVt0b2tdID09PSBjdXJyX2NoYXIpOworICAgICAgICB9CisgICAg
ICB9OworICAgICAgdGhyb3cgZXhuJDE7CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIHBlZWtf
dmFsKGVudiwgbikgeworICByZXR1cm4gZW52Wy8qIHZfc3RhY2sgKi8xXVtlbnZbLyogYXNwICov
MTBdIC0gbiB8IDBdOworfQorCitmdW5jdGlvbiBzeW1ib2xfc3RhcnRfcG9zKCkgeworICB2YXIg
X2kgPSBlbnZbLyogcnVsZV9sZW4gKi8xMV07CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgaSA9
IF9pOworICAgIGlmIChpIDw9IDApIHsKKyAgICAgIHJldHVybiBlbnZbLyogc3ltYl9lbmRfc3Rh
Y2sgKi8zXVtlbnZbLyogYXNwICovMTBdXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIg
c3QgPSBlbnZbLyogc3ltYl9zdGFydF9zdGFjayAqLzJdWyhlbnZbLyogYXNwICovMTBdIC0gaSB8
IDApICsgMSB8IDBdOworICAgICAgdmFyIGVuID0gZW52Wy8qIHN5bWJfZW5kX3N0YWNrICovM11b
KGVudlsvKiBhc3AgKi8xMF0gLSBpIHwgMCkgKyAxIHwgMF07CisgICAgICBpZiAoQ2FtbF9vYmou
Y2FtbF9ub3RlcXVhbChzdCwgZW4pKSB7CisgICAgICAgIHJldHVybiBzdDsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICBfaSA9IGkgLSAxIHwgMDsKKyAgICAgICAgY29udGludWUgOwor
ICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHN5bWJvbF9lbmRf
cG9zKCkgeworICByZXR1cm4gZW52Wy8qIHN5bWJfZW5kX3N0YWNrICovM11bZW52Wy8qIGFzcCAq
LzEwXV07Cit9CisKK2Z1bmN0aW9uIHJoc19zdGFydF9wb3MobikgeworICByZXR1cm4gZW52Wy8q
IHN5bWJfc3RhcnRfc3RhY2sgKi8yXVtlbnZbLyogYXNwICovMTBdIC0gKGVudlsvKiBydWxlX2xl
biAqLzExXSAtIG4gfCAwKSB8IDBdOworfQorCitmdW5jdGlvbiByaHNfZW5kX3BvcyhuKSB7Cisg
IHJldHVybiBlbnZbLyogc3ltYl9lbmRfc3RhY2sgKi8zXVtlbnZbLyogYXNwICovMTBdIC0gKGVu
dlsvKiBydWxlX2xlbiAqLzExXSAtIG4gfCAwKSB8IDBdOworfQorCitmdW5jdGlvbiBzeW1ib2xf
c3RhcnQoKSB7CisgIHJldHVybiBzeW1ib2xfc3RhcnRfcG9zKC8qICgpICovMClbLyogcG9zX2Nu
dW0gKi8zXTsKK30KKworZnVuY3Rpb24gc3ltYm9sX2VuZCgpIHsKKyAgcmV0dXJuIHN5bWJvbF9l
bmRfcG9zKC8qICgpICovMClbLyogcG9zX2NudW0gKi8zXTsKK30KKworZnVuY3Rpb24gcmhzX3N0
YXJ0KG4pIHsKKyAgcmV0dXJuIHJoc19zdGFydF9wb3MobilbLyogcG9zX2NudW0gKi8zXTsKK30K
KworZnVuY3Rpb24gcmhzX2VuZChuKSB7CisgIHJldHVybiByaHNfZW5kX3BvcyhuKVsvKiBwb3Nf
Y251bSAqLzNdOworfQorCitmdW5jdGlvbiBpc19jdXJyZW50X2xvb2thaGVhZCh0b2spIHsKKyAg
cmV0dXJuIEN1cnJ5Ll8xKGN1cnJlbnRfbG9va2FoZWFkX2Z1blswXSwgdG9rKTsKK30KKworZnVu
Y3Rpb24gcGFyc2VfZXJyb3IoKSB7CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK3ZhciBzZXRf
dHJhY2UgPSBDYW1sX3BhcnNlci5jYW1sX3NldF9wYXJzZXJfdHJhY2U7CisKK2V4cG9ydHMuc3lt
Ym9sX3N0YXJ0ICAgICAgICAgPSBzeW1ib2xfc3RhcnQ7CitleHBvcnRzLnN5bWJvbF9lbmQgICAg
ICAgICAgID0gc3ltYm9sX2VuZDsKK2V4cG9ydHMucmhzX3N0YXJ0ICAgICAgICAgICAgPSByaHNf
c3RhcnQ7CitleHBvcnRzLnJoc19lbmQgICAgICAgICAgICAgID0gcmhzX2VuZDsKK2V4cG9ydHMu
c3ltYm9sX3N0YXJ0X3BvcyAgICAgPSBzeW1ib2xfc3RhcnRfcG9zOworZXhwb3J0cy5zeW1ib2xf
ZW5kX3BvcyAgICAgICA9IHN5bWJvbF9lbmRfcG9zOworZXhwb3J0cy5yaHNfc3RhcnRfcG9zICAg
ICAgICA9IHJoc19zdGFydF9wb3M7CitleHBvcnRzLnJoc19lbmRfcG9zICAgICAgICAgID0gcmhz
X2VuZF9wb3M7CitleHBvcnRzLmNsZWFyX3BhcnNlciAgICAgICAgID0gY2xlYXJfcGFyc2VyOwor
ZXhwb3J0cy5QYXJzZV9lcnJvciAgICAgICAgICA9IFBhcnNlX2Vycm9yOworZXhwb3J0cy5zZXRf
dHJhY2UgICAgICAgICAgICA9IHNldF90cmFjZTsKK2V4cG9ydHMuWVlleGl0ICAgICAgICAgICAg
ICAgPSBZWWV4aXQ7CitleHBvcnRzLnl5cGFyc2UgICAgICAgICAgICAgID0geXlwYXJzZTsKK2V4
cG9ydHMucGVla192YWwgICAgICAgICAgICAgPSBwZWVrX3ZhbDsKK2V4cG9ydHMuaXNfY3VycmVu
dF9sb29rYWhlYWQgPSBpc19jdXJyZW50X2xvb2thaGVhZDsKK2V4cG9ydHMucGFyc2VfZXJyb3Ig
ICAgICAgICAgPSBwYXJzZV9lcnJvcjsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBl
bmQgb2YgcGFyc2luZy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9Owor
CisKKyAgX3JlZ2lzdHJ5WydwZXJ2YXNpdmVzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBl
eHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBwZXJ2YXNpdmVzLmpzIC8vLy8vLy8vCisn
dXNlIHN0cmljdCc7CisKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIu
L2N1cnJ5Iik7Cit2YXIgQ2FtbF9pbyAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1s
X2lvIik7Cit2YXIgQ2FtbF9vYmogICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX29i
aiIpOwordmFyIENhbWxfZm9ybWF0ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9mb3Jt
YXQiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfc3Ry
aW5nIik7Cit2YXIgQ2FtbF9leGNlcHRpb25zICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2V4
Y2VwdGlvbnMiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyAgPSByZXF1aXJlKCIuL2Nh
bWxfYnVpbHRpbl9leGNlcHRpb25zIik7Cit2YXIgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzID0g
cmVxdWlyZSgiLi9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MiKTsKKworZnVuY3Rpb24gZmFpbHdp
dGgocykgeworICB0aHJvdyBbCisgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1
cmUsCisgICAgICAgIHMKKyAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGludmFsaWRfYXJnKHMpIHsK
KyAgdGhyb3cgWworICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3Vt
ZW50LAorICAgICAgICBzCisgICAgICBdOworfQorCit2YXIgRXhpdCA9IENhbWxfZXhjZXB0aW9u
cy5jcmVhdGUoIlBlcnZhc2l2ZXMuRXhpdCIpOworCitmdW5jdGlvbiBtaW4oeCwgeSkgeworICBp
ZiAoQ2FtbF9vYmouY2FtbF9sZXNzZXF1YWwoeCwgeSkpIHsKKyAgICByZXR1cm4geDsKKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4geTsKKyAgfQorfQorCitmdW5jdGlvbiBtYXgoeCwgeSkgewor
ICBpZiAoQ2FtbF9vYmouY2FtbF9ncmVhdGVyZXF1YWwoeCwgeSkpIHsKKyAgICByZXR1cm4geDsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4geTsKKyAgfQorfQorCitmdW5jdGlvbiBhYnMoeCkg
eworICBpZiAoeCA+PSAwKSB7CisgICAgcmV0dXJuIHg7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0
dXJuIC14IHwgMDsKKyAgfQorfQorCitmdW5jdGlvbiBsbm90KHgpIHsKKyAgcmV0dXJuIHggXiAt
MTsKK30KKwordmFyIG1pbl9pbnQgPSAtMjE0NzQ4MzY0ODsKKworZnVuY3Rpb24gJGNhcmV0KGEs
IGIpIHsKKyAgcmV0dXJuIGEgKyBiOworfQorCitmdW5jdGlvbiBjaGFyX29mX2ludChuKSB7Cisg
IGlmIChuIDwgMCB8fCBuID4gMjU1KSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgImNoYXJfb2ZfaW50
IgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBuOworICB9Cit9CisKK2Z1
bmN0aW9uIHN0cmluZ19vZl9ib29sKGIpIHsKKyAgaWYgKGIpIHsKKyAgICByZXR1cm4gInRydWUi
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiAiZmFsc2UiOworICB9Cit9CisKK2Z1bmN0aW9u
IGJvb2xfb2Zfc3RyaW5nKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlICJm
YWxzZSIgOiAKKyAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICBjYXNlICJ0cnVlIiA6
IAorICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgZGVmYXVsdDoKKyAgICAgIHRocm93
IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQs
CisgICAgICAgICAgICAiYm9vbF9vZl9zdHJpbmciCisgICAgICAgICAgXTsKKyAgfQorfQorCitm
dW5jdGlvbiBzdHJpbmdfb2ZfaW50KHBhcmFtKSB7CisgIHJldHVybiAiIiArIHBhcmFtOworfQor
CitmdW5jdGlvbiB2YWxpZF9mbG9hdF9sZXhlbShzKSB7CisgIHZhciBsID0gcy5sZW5ndGg7Cisg
IHZhciBfaSA9IDA7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChp
ID49IGwpIHsKKyAgICAgIHJldHVybiAkY2FyZXQocywgIi4iKTsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQocywgaSk7CisgICAgICBpZiAobWF0
Y2ggPj0gNDgpIHsKKyAgICAgICAgaWYgKG1hdGNoID49IDU4KSB7CisgICAgICAgICAgcmV0dXJu
IHM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7
CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9Cisg
ICAgICBlbHNlIGlmIChtYXRjaCAhPT0gNDUpIHsKKyAgICAgICAgcmV0dXJuIHM7CisgICAgICB9
CisgICAgICBlbHNlIHsKKyAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBzdHJpbmdf
b2ZfZmxvYXQoZikgeworICByZXR1cm4gdmFsaWRfZmxvYXRfbGV4ZW0oQ2FtbF9mb3JtYXQuY2Ft
bF9mb3JtYXRfZmxvYXQoIiUuMTJnIiwgZikpOworfQorCitmdW5jdGlvbiAkYXQobDEsIGwyKSB7
CisgIGlmIChsMSkgeworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIGwxWzBdLAor
ICAgICAgICAgICAgJGF0KGwxWzFdLCBsMikKKyAgICAgICAgICBdOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBsMjsKKyAgfQorfQorCit2YXIgc3RkaW4gPSBDYW1sX2lvLnN0ZGluOworCit2
YXIgc3Rkb3V0ID0gQ2FtbF9pby5zdGRvdXQ7CisKK3ZhciBzdGRlcnIgPSBDYW1sX2lvLnN0ZGVy
cjsKKworZnVuY3Rpb24gb3Blbl9vdXRfZ2VuKF8sIF8kMSwgXyQyKSB7CisgIHJldHVybiBDYW1s
X2lvLmNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgdGhyb3cgImNhbWxfc3lzX29wZW4gbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlw
dCB5ZXRcbiI7CisgICAgICAgICAgICAgIH0oKSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5fb3V0KG5h
bWUpIHsKKyAgcmV0dXJuIG9wZW5fb3V0X2dlbigvKiA6OiAqL1sKKyAgICAgICAgICAgICAgLyog
T3Blbl93cm9ubHkgKi8xLAorICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAvKiBPcGVuX2NyZWF0ICovMywKKyAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICAgIC8qIE9wZW5fdHJ1bmMgKi80LAorICAgICAgICAgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgIC8qIE9wZW5fdGV4dCAqLzcsCisgICAgICAgICAgICAgICAg
ICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgXSwgNDM4LCBuYW1lKTsKK30KKworZnVuY3Rpb24g
b3Blbl9vdXRfYmluKG5hbWUpIHsKKyAgcmV0dXJuIG9wZW5fb3V0X2dlbigvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgLyogT3Blbl93cm9ubHkgKi8xLAorICAgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAvKiBPcGVuX2NyZWF0ICovMywKKyAgICAgICAgICAgICAgICAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIE9wZW5fdHJ1bmMgKi80LAorICAgICAgICAgICAg
ICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIE9wZW5fYmluYXJ5ICovNiwK
KyAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdLCA0MzgsIG5hbWUp
OworfQorCitmdW5jdGlvbiBmbHVzaF9hbGwoKSB7CisgIHZhciBfcGFyYW0gPSBDYW1sX2lvLmNh
bWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QoLyogKCkgKi8wKTsKKyAgd2hpbGUodHJ1ZSkgeworICAg
IHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHRyeSB7CisgICAg
ICAgIENhbWxfaW8uY2FtbF9tbF9mbHVzaChwYXJhbVswXSk7CisgICAgICB9CisgICAgICBjYXRj
aCAoZXhuKXsKKyAgICAgICAgCisgICAgICB9CisgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAv
KiAoKSAqLzA7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBvdXRwdXRfYnl0ZXMob2MsIHMp
IHsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXQob2MsIHMsIDAsIHMubGVuZ3RoKTsK
K30KKworZnVuY3Rpb24gb3V0cHV0X3N0cmluZyhvYywgcykgeworICByZXR1cm4gQ2FtbF9pby5j
YW1sX21sX291dHB1dChvYywgcywgMCwgcy5sZW5ndGgpOworfQorCitmdW5jdGlvbiBvdXRwdXQo
b2MsIHMsIG9mcywgbGVuKSB7CisgIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gKHMu
bGVuZ3RoIC0gbGVuIHwgMCkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAib3V0cHV0IgorICAgICAg
ICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfb3V0cHV0KG9j
LCBzLCBvZnMsIGxlbik7CisgIH0KK30KKworZnVuY3Rpb24gb3V0cHV0X3N1YnN0cmluZyhvYywg
cywgb2ZzLCBsZW4pIHsKKyAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiAocy5sZW5n
dGggLSBsZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJvdXRwdXRfc3Vic3RyaW5nIgor
ICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfb3V0
cHV0KG9jLCBzLCBvZnMsIGxlbik7CisgIH0KK30KKworZnVuY3Rpb24gb3V0cHV0X3ZhbHVlKF8s
IF8kMSkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxf
b3V0cHV0X3ZhbHVlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAg
ICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gY2xvc2Vfb3V0KG9jKSB7CisgIENhbWxfaW8uY2Ft
bF9tbF9mbHVzaChvYyk7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJv
dyAiY2FtbF9tbF9jbG9zZV9jaGFubmVsIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQg
eWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gY2xvc2Vfb3V0X25vZXJyKG9j
KSB7CisgIHRyeSB7CisgICAgQ2FtbF9pby5jYW1sX21sX2ZsdXNoKG9jKTsKKyAgfQorICBjYXRj
aCAoZXhuKXsKKyAgICAKKyAgfQorICB0cnkgeworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2Nsb3NlX2NoYW5uZWwgbm90IGltcGxlbWVudGVk
IGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgICB9KCk7CisgIH0KKyAgY2F0Y2gg
KGV4biQxKXsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIG9wZW5f
aW5fZ2VuKF8sIF8kMSwgXyQyKSB7CisgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfb3Blbl9kZXNj
cmlwdG9yX2luKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyAiY2FtbF9zeXNf
b3BlbiBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICAg
ICAgfSgpKTsKK30KKworZnVuY3Rpb24gb3Blbl9pbihuYW1lKSB7CisgIHJldHVybiBvcGVuX2lu
X2dlbigvKiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogT3Blbl9yZG9ubHkgKi8wLAorICAgICAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAvKiBPcGVuX3RleHQgKi83LAorICAg
ICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdLCAw
LCBuYW1lKTsKK30KKworZnVuY3Rpb24gb3Blbl9pbl9iaW4obmFtZSkgeworICByZXR1cm4gb3Bl
bl9pbl9nZW4oLyogOjogKi9bCisgICAgICAgICAgICAgIC8qIE9wZW5fcmRvbmx5ICovMCwKKyAg
ICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgLyogT3Blbl9iaW5hcnkgKi82
LAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICBdLCAwLCBuYW1lKTsKK30KKworZnVuY3Rpb24gaW5wdXQoXywgcywgb2ZzLCBsZW4pIHsKKyAg
aWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiAocy5sZW5ndGggLSBsZW4gfCAwKSkgewor
ICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2Fy
Z3VtZW50LAorICAgICAgICAgICJpbnB1dCIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9pbnB1
dCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICAgIH0o
KTsKKyAgfQorfQorCitmdW5jdGlvbiB1bnNhZmVfcmVhbGx5X2lucHV0KF8sIF8kMSwgX29mcywg
X2xlbikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGxlbiA9IF9sZW47CisgICAgdmFyIG9m
cyA9IF9vZnM7CisgICAgaWYgKGxlbiA8PSAwKSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciByID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
IHRocm93ICJjYW1sX21sX2lucHV0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0
XG4iOworICAgICAgICB9KCk7CisgICAgICBpZiAocikgeworICAgICAgICBfbGVuID0gbGVuIC0g
ciB8IDA7CisgICAgICAgIF9vZnMgPSBvZnMgKyByIHwgMDsKKyAgICAgICAgY29udGludWUgOwor
ICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5lbmRfb2ZfZmlsZTsKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1
bmN0aW9uIHJlYWxseV9pbnB1dChpYywgcywgb2ZzLCBsZW4pIHsKKyAgaWYgKG9mcyA8IDAgfHwg
bGVuIDwgMCB8fCBvZnMgPiAocy5sZW5ndGggLSBsZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAg
ICAgICJyZWFsbHlfaW5wdXQiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IHVuc2FmZV9yZWFsbHlfaW5wdXQoaWMsIHMsIG9mcywgbGVuKTsKKyAgfQorfQorCitmdW5jdGlv
biByZWFsbHlfaW5wdXRfc3RyaW5nKGljLCBsZW4pIHsKKyAgdmFyIHMgPSBDYW1sX3N0cmluZy5j
YW1sX2NyZWF0ZV9zdHJpbmcobGVuKTsKKyAgcmVhbGx5X2lucHV0KGljLCBzLCAwLCBsZW4pOwor
ICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHMpOworfQorCitmdW5jdGlvbiBp
bnB1dF9saW5lKGNoYW4pIHsKKyAgdmFyIGJ1aWxkX3Jlc3VsdCA9IGZ1bmN0aW9uIChidWYsIF9w
b3MsIF9wYXJhbSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBwYXJhbSA9IF9wYXJh
bTsKKyAgICAgIHZhciBwb3MgPSBfcG9zOworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIHZh
ciBoZCA9IHBhcmFtWzBdOworICAgICAgICB2YXIgbGVuID0gaGQubGVuZ3RoOworICAgICAgICBD
YW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMoaGQsIDAsIGJ1ZiwgcG9zIC0gbGVuIHwgMCwgbGVu
KTsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIF9wb3MgPSBwb3MgLSBsZW4g
fCAwOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHJldHVybiBidWY7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHNjYW4g
PSBmdW5jdGlvbiAoX2FjY3UsIF9sZW4pIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIg
bGVuID0gX2xlbjsKKyAgICAgIHZhciBhY2N1ID0gX2FjY3U7CisgICAgICB2YXIgbiA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUgbm90IGlt
cGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgIH0oKTsKKyAgICAgIGlm
IChuKSB7CisgICAgICAgIGlmIChuID4gMCkgeworICAgICAgICAgIHZhciByZXMgPSBDYW1sX3N0
cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcobiAtIDEgfCAwKTsKKyAgICAgICAgICAoZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0IG5vdCBpbXBsZW1lbnRl
ZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgICB9KCkpOworICAgICAgICAg
IENhbWxfaW8uY2FtbF9tbF9pbnB1dF9jaGFyKGNoYW4pOworICAgICAgICAgIGlmIChhY2N1KSB7
CisgICAgICAgICAgICB2YXIgbGVuJDEgPSAobGVuICsgbiB8IDApIC0gMSB8IDA7CisgICAgICAg
ICAgICByZXR1cm4gYnVpbGRfcmVzdWx0KENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhs
ZW4kMSksIGxlbiQxLCAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcmVzOworICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgYmVnID0g
Q2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKC1uIHwgMCk7CisgICAgICAgICAgKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9pbnB1dCBub3QgaW1wbGVt
ZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICAgICAgfSgpKTsKKyAgICAg
ICAgICBfbGVuID0gbGVuIC0gbiB8IDA7CisgICAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKKyAg
ICAgICAgICAgIGJlZywKKyAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICBdOworICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBp
ZiAoYWNjdSkgeworICAgICAgICByZXR1cm4gYnVpbGRfcmVzdWx0KENhbWxfc3RyaW5nLmNhbWxf
Y3JlYXRlX3N0cmluZyhsZW4pLCBsZW4sIGFjY3UpOworICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmVuZF9vZl9maWxlOworICAgICAg
fQorICAgIH07CisgIH07CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoc2Nh
bigvKiBbXSAqLzAsIDApKTsKK30KKworZnVuY3Rpb24gY2xvc2VfaW5fbm9lcnIoKSB7CisgIHRy
eSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgdGhyb3cgImNhbWxf
bWxfY2xvc2VfY2hhbm5lbCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsK
KyAgICAgICAgICAgIH0oKTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICByZXR1cm4gLyogKCkg
Ki8wOworICB9Cit9CisKK2Z1bmN0aW9uIHByaW50X2NoYXIoYykgeworICByZXR1cm4gQ2FtbF9p
by5jYW1sX21sX291dHB1dF9jaGFyKHN0ZG91dCwgYyk7Cit9CisKK2Z1bmN0aW9uIHByaW50X3N0
cmluZyhzKSB7CisgIHJldHVybiBvdXRwdXRfc3RyaW5nKHN0ZG91dCwgcyk7Cit9CisKK2Z1bmN0
aW9uIHByaW50X2J5dGVzKHMpIHsKKyAgcmV0dXJuIG91dHB1dF9ieXRlcyhzdGRvdXQsIHMpOwor
fQorCitmdW5jdGlvbiBwcmludF9pbnQoaSkgeworICByZXR1cm4gb3V0cHV0X3N0cmluZyhzdGRv
dXQsICIiICsgaSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X2Zsb2F0KGYpIHsKKyAgcmV0dXJuIG91
dHB1dF9zdHJpbmcoc3Rkb3V0LCB2YWxpZF9mbG9hdF9sZXhlbShDYW1sX2Zvcm1hdC5jYW1sX2Zv
cm1hdF9mbG9hdCgiJS4xMmciLCBmKSkpOworfQorCitmdW5jdGlvbiBwcmludF9lbmRsaW5lKHBh
cmFtKSB7CisgIGNvbnNvbGUubG9nKHBhcmFtKTsKKyAgcmV0dXJuIDA7Cit9CisKK2Z1bmN0aW9u
IHByaW50X25ld2xpbmUoKSB7CisgIENhbWxfaW8uY2FtbF9tbF9vdXRwdXRfY2hhcihzdGRvdXQs
IC8qICJcbiIgKi8xMCk7CisgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfZmx1c2goc3Rkb3V0KTsK
K30KKworZnVuY3Rpb24gcHJlcnJfY2hhcihjKSB7CisgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxf
b3V0cHV0X2NoYXIoc3RkZXJyLCBjKTsKK30KKworZnVuY3Rpb24gcHJlcnJfc3RyaW5nKHMpIHsK
KyAgcmV0dXJuIG91dHB1dF9zdHJpbmcoc3RkZXJyLCBzKTsKK30KKworZnVuY3Rpb24gcHJlcnJf
Ynl0ZXMocykgeworICByZXR1cm4gb3V0cHV0X2J5dGVzKHN0ZGVyciwgcyk7Cit9CisKK2Z1bmN0
aW9uIHByZXJyX2ludChpKSB7CisgIHJldHVybiBvdXRwdXRfc3RyaW5nKHN0ZGVyciwgIiIgKyBp
KTsKK30KKworZnVuY3Rpb24gcHJlcnJfZmxvYXQoZikgeworICByZXR1cm4gb3V0cHV0X3N0cmlu
ZyhzdGRlcnIsIHZhbGlkX2Zsb2F0X2xleGVtKENhbWxfZm9ybWF0LmNhbWxfZm9ybWF0X2Zsb2F0
KCIlLjEyZyIsIGYpKSk7Cit9CisKK2Z1bmN0aW9uIHByZXJyX2VuZGxpbmUocGFyYW0pIHsKKyAg
Y29uc29sZS5lcnJvcihwYXJhbSk7CisgIHJldHVybiAwOworfQorCitmdW5jdGlvbiBwcmVycl9u
ZXdsaW5lKCkgeworICBDYW1sX2lvLmNhbWxfbWxfb3V0cHV0X2NoYXIoc3RkZXJyLCAvKiAiXG4i
ICovMTApOworICByZXR1cm4gQ2FtbF9pby5jYW1sX21sX2ZsdXNoKHN0ZGVycik7Cit9CisKK2Z1
bmN0aW9uIHJlYWRfbGluZSgpIHsKKyAgQ2FtbF9pby5jYW1sX21sX2ZsdXNoKHN0ZG91dCk7Cisg
IHJldHVybiBpbnB1dF9saW5lKHN0ZGluKTsKK30KKworZnVuY3Rpb24gcmVhZF9pbnQoKSB7Cisg
IHJldHVybiBDYW1sX2Zvcm1hdC5jYW1sX2ludF9vZl9zdHJpbmcoKENhbWxfaW8uY2FtbF9tbF9m
bHVzaChzdGRvdXQpLCBpbnB1dF9saW5lKHN0ZGluKSkpOworfQorCitmdW5jdGlvbiByZWFkX2Zs
b2F0KCkgeworICByZXR1cm4gQ2FtbF9mb3JtYXQuY2FtbF9mbG9hdF9vZl9zdHJpbmcoKENhbWxf
aW8uY2FtbF9tbF9mbHVzaChzdGRvdXQpLCBpbnB1dF9saW5lKHN0ZGluKSkpOworfQorCitmdW5j
dGlvbiBzdHJpbmdfb2ZfZm9ybWF0KHBhcmFtKSB7CisgIHJldHVybiBwYXJhbVsxXTsKK30KKwor
ZnVuY3Rpb24gJGNhcmV0JGNhcmV0KHBhcmFtLCBwYXJhbSQxKSB7CisgIHJldHVybiAvKiBGb3Jt
YXQgKi9bCisgICAgICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXQocGFy
YW1bMF0sIHBhcmFtJDFbMF0pLAorICAgICAgICAgICRjYXJldChwYXJhbVsxXSwgJGNhcmV0KCIl
LCIsIHBhcmFtJDFbMV0pKQorICAgICAgICBdOworfQorCit2YXIgZXhpdF9mdW5jdGlvbiA9IFtm
bHVzaF9hbGxdOworCitmdW5jdGlvbiBhdF9leGl0KGYpIHsKKyAgdmFyIGcgPSBleGl0X2Z1bmN0
aW9uWzBdOworICBleGl0X2Z1bmN0aW9uWzBdID0gZnVuY3Rpb24gKCkgeworICAgIEN1cnJ5Ll8x
KGYsIC8qICgpICovMCk7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKGcsIC8qICgpICovMCk7CisgIH07
CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGRvX2F0X2V4aXQoKSB7CisgIHJl
dHVybiBDdXJyeS5fMShleGl0X2Z1bmN0aW9uWzBdLCAvKiAoKSAqLzApOworfQorCitmdW5jdGlv
biBleGl0KCkgeworICBkb19hdF9leGl0KC8qICgpICovMCk7CisgIHJldHVybiBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9zeXNfZXhpdCBub3QgaW1wbGVtZW50ZWQgYnkg
YnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK3ZhciBtYXhfaW50ID0g
MjE0NzQ4MzY0NzsKKwordmFyIGluZmluaXR5ID0gSW5maW5pdHk7CisKK3ZhciBuZWdfaW5maW5p
dHkgPSAtSW5maW5pdHk7CisKK3ZhciBuYW4gPSBOYU47CisKK3ZhciBtYXhfZmxvYXQgPSBOdW1i
ZXIuTUFYX1ZBTFVFOworCit2YXIgbWluX2Zsb2F0ID0gTnVtYmVyLk1JTl9WQUxVRTsKKwordmFy
IGVwc2lsb25fZmxvYXQgPSAyLjIyMDQ0NjA0OTI1MDMxM2UtMTY7CisKK3ZhciBmbHVzaCA9IENh
bWxfaW8uY2FtbF9tbF9mbHVzaDsKKwordmFyIG91dHB1dF9jaGFyID0gQ2FtbF9pby5jYW1sX21s
X291dHB1dF9jaGFyOworCit2YXIgb3V0cHV0X2J5dGUgPSBDYW1sX2lvLmNhbWxfbWxfb3V0cHV0
X2NoYXI7CisKK2Z1bmN0aW9uIG91dHB1dF9iaW5hcnlfaW50KF8sIF8kMSkgeworICByZXR1cm4g
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfb3V0cHV0X2ludCBub3Qg
aW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisK
K2Z1bmN0aW9uIHNlZWtfb3V0KF8sIF8kMSkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgdGhyb3cgImNhbWxfbWxfc2Vla19vdXQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2ts
ZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBwb3Nfb3V0KCkg
eworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfcG9z
X291dCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9
KCk7Cit9CisKK2Z1bmN0aW9uIG91dF9jaGFubmVsX2xlbmd0aCgpIHsKKyAgcmV0dXJuIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2NoYW5uZWxfc2l6ZSBub3QgaW1w
bGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1
bmN0aW9uIHNldF9iaW5hcnlfbW9kZV9vdXQoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUgbm90IGltcGxl
bWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCit2YXIg
aW5wdXRfY2hhciA9IENhbWxfaW8uY2FtbF9tbF9pbnB1dF9jaGFyOworCit2YXIgaW5wdXRfYnl0
ZSA9IENhbWxfaW8uY2FtbF9tbF9pbnB1dF9jaGFyOworCitmdW5jdGlvbiBpbnB1dF9iaW5hcnlf
aW50KCkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxf
bWxfaW5wdXRfaW50IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAg
ICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gaW5wdXRfdmFsdWUoKSB7CisgIHJldHVybiBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9pbnB1dF92YWx1ZSBub3QgaW1wbGVt
ZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0
aW9uIHNlZWtfaW4oXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB0aHJvdyAiY2FtbF9tbF9zZWVrX2luIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQg
eWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gcG9zX2luKCkgeworICByZXR1
cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfcG9zX2luIG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwor
ZnVuY3Rpb24gaW5fY2hhbm5lbF9sZW5ndGgoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9jaGFubmVsX3NpemUgbm90IGltcGxlbWVudGVkIGJ5
IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBjbG9z
ZV9pbigpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1s
X21sX2Nsb3NlX2NoYW5uZWwgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7
CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBzZXRfYmluYXJ5X21vZGVfaW4oXywgXyQx
KSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9z
ZXRfYmluYXJ5X21vZGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Cisg
ICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBMYXJnZUZpbGVfMDAwKF8sIF8kMSkgeworICBy
ZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfc2Vla19vdXRf
NjQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgp
OworfQorCitmdW5jdGlvbiBMYXJnZUZpbGVfMDAxKCkgeworICByZXR1cm4gZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfcG9zX291dF82NCBub3QgaW1wbGVtZW50ZWQg
YnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIExh
cmdlRmlsZV8wMDIoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJv
dyAiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlw
dCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBMYXJnZUZpbGVfMDAzKF8s
IF8kMSkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxf
bWxfc2Vla19pbl82NCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAg
ICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIExhcmdlRmlsZV8wMDQoKSB7CisgIHJldHVybiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3NfaW5fNjQgbm90IGlt
cGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitm
dW5jdGlvbiBMYXJnZUZpbGVfMDA1KCkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgdGhyb3cgImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwordmFyIExhcmdlRmlsZSA9
IFsKKyAgTGFyZ2VGaWxlXzAwMCwKKyAgTGFyZ2VGaWxlXzAwMSwKKyAgTGFyZ2VGaWxlXzAwMiwK
KyAgTGFyZ2VGaWxlXzAwMywKKyAgTGFyZ2VGaWxlXzAwNCwKKyAgTGFyZ2VGaWxlXzAwNQorXTsK
KworZXhwb3J0cy5pbnZhbGlkX2FyZyAgICAgICAgID0gaW52YWxpZF9hcmc7CitleHBvcnRzLmZh
aWx3aXRoICAgICAgICAgICAgPSBmYWlsd2l0aDsKK2V4cG9ydHMuRXhpdCAgICAgICAgICAgICAg
ICA9IEV4aXQ7CitleHBvcnRzLm1pbiAgICAgICAgICAgICAgICAgPSBtaW47CitleHBvcnRzLm1h
eCAgICAgICAgICAgICAgICAgPSBtYXg7CitleHBvcnRzLmFicyAgICAgICAgICAgICAgICAgPSBh
YnM7CitleHBvcnRzLm1heF9pbnQgICAgICAgICAgICAgPSBtYXhfaW50OworZXhwb3J0cy5taW5f
aW50ICAgICAgICAgICAgID0gbWluX2ludDsKK2V4cG9ydHMubG5vdCAgICAgICAgICAgICAgICA9
IGxub3Q7CitleHBvcnRzLmluZmluaXR5ICAgICAgICAgICAgPSBpbmZpbml0eTsKK2V4cG9ydHMu
bmVnX2luZmluaXR5ICAgICAgICA9IG5lZ19pbmZpbml0eTsKK2V4cG9ydHMubmFuICAgICAgICAg
ICAgICAgICA9IG5hbjsKK2V4cG9ydHMubWF4X2Zsb2F0ICAgICAgICAgICA9IG1heF9mbG9hdDsK
K2V4cG9ydHMubWluX2Zsb2F0ICAgICAgICAgICA9IG1pbl9mbG9hdDsKK2V4cG9ydHMuZXBzaWxv
bl9mbG9hdCAgICAgICA9IGVwc2lsb25fZmxvYXQ7CitleHBvcnRzLiRjYXJldCAgICAgICAgICAg
ICAgPSAkY2FyZXQ7CitleHBvcnRzLmNoYXJfb2ZfaW50ICAgICAgICAgPSBjaGFyX29mX2ludDsK
K2V4cG9ydHMuc3RyaW5nX29mX2Jvb2wgICAgICA9IHN0cmluZ19vZl9ib29sOworZXhwb3J0cy5i
b29sX29mX3N0cmluZyAgICAgID0gYm9vbF9vZl9zdHJpbmc7CitleHBvcnRzLnN0cmluZ19vZl9p
bnQgICAgICAgPSBzdHJpbmdfb2ZfaW50OworZXhwb3J0cy5zdHJpbmdfb2ZfZmxvYXQgICAgID0g
c3RyaW5nX29mX2Zsb2F0OworZXhwb3J0cy4kYXQgICAgICAgICAgICAgICAgID0gJGF0OworZXhw
b3J0cy5zdGRpbiAgICAgICAgICAgICAgID0gc3RkaW47CitleHBvcnRzLnN0ZG91dCAgICAgICAg
ICAgICAgPSBzdGRvdXQ7CitleHBvcnRzLnN0ZGVyciAgICAgICAgICAgICAgPSBzdGRlcnI7Citl
eHBvcnRzLnByaW50X2NoYXIgICAgICAgICAgPSBwcmludF9jaGFyOworZXhwb3J0cy5wcmludF9z
dHJpbmcgICAgICAgID0gcHJpbnRfc3RyaW5nOworZXhwb3J0cy5wcmludF9ieXRlcyAgICAgICAg
ID0gcHJpbnRfYnl0ZXM7CitleHBvcnRzLnByaW50X2ludCAgICAgICAgICAgPSBwcmludF9pbnQ7
CitleHBvcnRzLnByaW50X2Zsb2F0ICAgICAgICAgPSBwcmludF9mbG9hdDsKK2V4cG9ydHMucHJp
bnRfZW5kbGluZSAgICAgICA9IHByaW50X2VuZGxpbmU7CitleHBvcnRzLnByaW50X25ld2xpbmUg
ICAgICAgPSBwcmludF9uZXdsaW5lOworZXhwb3J0cy5wcmVycl9jaGFyICAgICAgICAgID0gcHJl
cnJfY2hhcjsKK2V4cG9ydHMucHJlcnJfc3RyaW5nICAgICAgICA9IHByZXJyX3N0cmluZzsKK2V4
cG9ydHMucHJlcnJfYnl0ZXMgICAgICAgICA9IHByZXJyX2J5dGVzOworZXhwb3J0cy5wcmVycl9p
bnQgICAgICAgICAgID0gcHJlcnJfaW50OworZXhwb3J0cy5wcmVycl9mbG9hdCAgICAgICAgID0g
cHJlcnJfZmxvYXQ7CitleHBvcnRzLnByZXJyX2VuZGxpbmUgICAgICAgPSBwcmVycl9lbmRsaW5l
OworZXhwb3J0cy5wcmVycl9uZXdsaW5lICAgICAgID0gcHJlcnJfbmV3bGluZTsKK2V4cG9ydHMu
cmVhZF9saW5lICAgICAgICAgICA9IHJlYWRfbGluZTsKK2V4cG9ydHMucmVhZF9pbnQgICAgICAg
ICAgICA9IHJlYWRfaW50OworZXhwb3J0cy5yZWFkX2Zsb2F0ICAgICAgICAgID0gcmVhZF9mbG9h
dDsKK2V4cG9ydHMub3Blbl9vdXQgICAgICAgICAgICA9IG9wZW5fb3V0OworZXhwb3J0cy5vcGVu
X291dF9iaW4gICAgICAgID0gb3Blbl9vdXRfYmluOworZXhwb3J0cy5vcGVuX291dF9nZW4gICAg
ICAgID0gb3Blbl9vdXRfZ2VuOworZXhwb3J0cy5mbHVzaCAgICAgICAgICAgICAgID0gZmx1c2g7
CitleHBvcnRzLmZsdXNoX2FsbCAgICAgICAgICAgPSBmbHVzaF9hbGw7CitleHBvcnRzLm91dHB1
dF9jaGFyICAgICAgICAgPSBvdXRwdXRfY2hhcjsKK2V4cG9ydHMub3V0cHV0X3N0cmluZyAgICAg
ICA9IG91dHB1dF9zdHJpbmc7CitleHBvcnRzLm91dHB1dF9ieXRlcyAgICAgICAgPSBvdXRwdXRf
Ynl0ZXM7CitleHBvcnRzLm91dHB1dCAgICAgICAgICAgICAgPSBvdXRwdXQ7CitleHBvcnRzLm91
dHB1dF9zdWJzdHJpbmcgICAgPSBvdXRwdXRfc3Vic3RyaW5nOworZXhwb3J0cy5vdXRwdXRfYnl0
ZSAgICAgICAgID0gb3V0cHV0X2J5dGU7CitleHBvcnRzLm91dHB1dF9iaW5hcnlfaW50ICAgPSBv
dXRwdXRfYmluYXJ5X2ludDsKK2V4cG9ydHMub3V0cHV0X3ZhbHVlICAgICAgICA9IG91dHB1dF92
YWx1ZTsKK2V4cG9ydHMuc2Vla19vdXQgICAgICAgICAgICA9IHNlZWtfb3V0OworZXhwb3J0cy5w
b3Nfb3V0ICAgICAgICAgICAgID0gcG9zX291dDsKK2V4cG9ydHMub3V0X2NoYW5uZWxfbGVuZ3Ro
ICA9IG91dF9jaGFubmVsX2xlbmd0aDsKK2V4cG9ydHMuY2xvc2Vfb3V0ICAgICAgICAgICA9IGNs
b3NlX291dDsKK2V4cG9ydHMuY2xvc2Vfb3V0X25vZXJyICAgICA9IGNsb3NlX291dF9ub2VycjsK
K2V4cG9ydHMuc2V0X2JpbmFyeV9tb2RlX291dCA9IHNldF9iaW5hcnlfbW9kZV9vdXQ7CitleHBv
cnRzLm9wZW5faW4gICAgICAgICAgICAgPSBvcGVuX2luOworZXhwb3J0cy5vcGVuX2luX2JpbiAg
ICAgICAgID0gb3Blbl9pbl9iaW47CitleHBvcnRzLm9wZW5faW5fZ2VuICAgICAgICAgPSBvcGVu
X2luX2dlbjsKK2V4cG9ydHMuaW5wdXRfY2hhciAgICAgICAgICA9IGlucHV0X2NoYXI7CitleHBv
cnRzLmlucHV0X2xpbmUgICAgICAgICAgPSBpbnB1dF9saW5lOworZXhwb3J0cy5pbnB1dCAgICAg
ICAgICAgICAgID0gaW5wdXQ7CitleHBvcnRzLnJlYWxseV9pbnB1dCAgICAgICAgPSByZWFsbHlf
aW5wdXQ7CitleHBvcnRzLnJlYWxseV9pbnB1dF9zdHJpbmcgPSByZWFsbHlfaW5wdXRfc3RyaW5n
OworZXhwb3J0cy5pbnB1dF9ieXRlICAgICAgICAgID0gaW5wdXRfYnl0ZTsKK2V4cG9ydHMuaW5w
dXRfYmluYXJ5X2ludCAgICA9IGlucHV0X2JpbmFyeV9pbnQ7CitleHBvcnRzLmlucHV0X3ZhbHVl
ICAgICAgICAgPSBpbnB1dF92YWx1ZTsKK2V4cG9ydHMuc2Vla19pbiAgICAgICAgICAgICA9IHNl
ZWtfaW47CitleHBvcnRzLnBvc19pbiAgICAgICAgICAgICAgPSBwb3NfaW47CitleHBvcnRzLmlu
X2NoYW5uZWxfbGVuZ3RoICAgPSBpbl9jaGFubmVsX2xlbmd0aDsKK2V4cG9ydHMuY2xvc2VfaW4g
ICAgICAgICAgICA9IGNsb3NlX2luOworZXhwb3J0cy5jbG9zZV9pbl9ub2VyciAgICAgID0gY2xv
c2VfaW5fbm9lcnI7CitleHBvcnRzLnNldF9iaW5hcnlfbW9kZV9pbiAgPSBzZXRfYmluYXJ5X21v
ZGVfaW47CitleHBvcnRzLkxhcmdlRmlsZSAgICAgICAgICAgPSBMYXJnZUZpbGU7CitleHBvcnRz
LnN0cmluZ19vZl9mb3JtYXQgICAgPSBzdHJpbmdfb2ZfZm9ybWF0OworZXhwb3J0cy4kY2FyZXQk
Y2FyZXQgICAgICAgID0gJGNhcmV0JGNhcmV0OworZXhwb3J0cy5leGl0ICAgICAgICAgICAgICAg
ID0gZXhpdDsKK2V4cG9ydHMuYXRfZXhpdCAgICAgICAgICAgICA9IGF0X2V4aXQ7CitleHBvcnRz
LnZhbGlkX2Zsb2F0X2xleGVtICAgPSB2YWxpZF9mbG9hdF9sZXhlbTsKK2V4cG9ydHMudW5zYWZl
X3JlYWxseV9pbnB1dCA9IHVuc2FmZV9yZWFsbHlfaW5wdXQ7CitleHBvcnRzLmRvX2F0X2V4aXQg
ICAgICAgICAgPSBkb19hdF9leGl0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVu
ZCBvZiBwZXJ2YXNpdmVzLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07
CisKKworICBfcmVnaXN0cnlbJ3ByaW50ZiddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhw
b3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgcHJpbnRmLmpzIC8vLy8vLy8vCisndXNlIHN0
cmljdCc7CisKK3ZhciBDdXJyeSAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2
YXIgQnVmZmVyICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9idWZmZXIiKTsKK3ZhciBQZXJ2YXNp
dmVzICAgICAgICAgPSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1saW50ZXJuYWxG
b3JtYXQgPSByZXF1aXJlKCIuL2NhbWxpbnRlcm5hbEZvcm1hdCIpOworCitmdW5jdGlvbiBrZnBy
aW50ZihrLCBvLCBwYXJhbSkgeworICByZXR1cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJp
bnRmKGZ1bmN0aW9uIChvLCBhY2MpIHsKKyAgICAgICAgICAgICAgQ2FtbGludGVybmFsRm9ybWF0
Lm91dHB1dF9hY2MobywgYWNjKTsKKyAgICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGssIG8p
OworICAgICAgICAgICAgfSwgbywgLyogRW5kX29mX2FjYyAqLzAsIHBhcmFtWzBdKTsKK30KKwor
ZnVuY3Rpb24ga2JwcmludGYoaywgYiwgcGFyYW0pIHsKKyAgcmV0dXJuIENhbWxpbnRlcm5hbEZv
cm1hdC5tYWtlX3ByaW50ZihmdW5jdGlvbiAoYiwgYWNjKSB7CisgICAgICAgICAgICAgIENhbWxp
bnRlcm5hbEZvcm1hdC5idWZwdXRfYWNjKGIsIGFjYyk7CisgICAgICAgICAgICAgIHJldHVybiBD
dXJyeS5fMShrLCBiKTsKKyAgICAgICAgICAgIH0sIGIsIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJh
bVswXSk7Cit9CisKK2Z1bmN0aW9uIGlrZnByaW50ZihrLCBvYywgcGFyYW0pIHsKKyAgcmV0dXJu
IENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihmdW5jdGlvbiAob2MsIF8pIHsKKyAgICAg
ICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGssIG9jKTsKKyAgICAgICAgICAgIH0sIG9jLCAvKiBF
bmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5jdGlvbiBmcHJpbnRmKG9jLCBmbXQp
IHsKKyAgcmV0dXJuIGtmcHJpbnRmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICAgICAgICAgIH0sIG9jLCBmbXQpOworfQorCitmdW5jdGlvbiBicHJp
bnRmKGIsIGZtdCkgeworICByZXR1cm4ga2JwcmludGYoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgICAgfSwgYiwgZm10KTsKK30KKworZnVu
Y3Rpb24gaWZwcmludGYob2MsIGZtdCkgeworICByZXR1cm4gaWtmcHJpbnRmKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICAgIH0sIG9jLCBm
bXQpOworfQorCitmdW5jdGlvbiBwcmludGYoZm10KSB7CisgIHJldHVybiBmcHJpbnRmKFBlcnZh
c2l2ZXMuc3Rkb3V0LCBmbXQpOworfQorCitmdW5jdGlvbiBlcHJpbnRmKGZtdCkgeworICByZXR1
cm4gZnByaW50ZihQZXJ2YXNpdmVzLnN0ZGVyciwgZm10KTsKK30KKworZnVuY3Rpb24ga3Nwcmlu
dGYoaywgcGFyYW0pIHsKKyAgdmFyIGskcHJpbWUgPSBmdW5jdGlvbiAoXywgYWNjKSB7CisgICAg
dmFyIGJ1ZiA9IEJ1ZmZlci5jcmVhdGUoNjQpOworICAgIENhbWxpbnRlcm5hbEZvcm1hdC5zdHJw
dXRfYWNjKGJ1ZiwgYWNjKTsKKyAgICByZXR1cm4gQ3VycnkuXzEoaywgQnVmZmVyLmNvbnRlbnRz
KGJ1ZikpOworICB9OworICByZXR1cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGsk
cHJpbWUsIC8qICgpICovMCwgLyogRW5kX29mX2FjYyAqLzAsIHBhcmFtWzBdKTsKK30KKworZnVu
Y3Rpb24gc3ByaW50ZihmbXQpIHsKKyAgcmV0dXJuIGtzcHJpbnRmKGZ1bmN0aW9uIChzKSB7Cisg
ICAgICAgICAgICAgIHJldHVybiBzOworICAgICAgICAgICAgfSwgZm10KTsKK30KKwordmFyIGtw
cmludGYgPSBrc3ByaW50ZjsKKworZXhwb3J0cy5mcHJpbnRmICAgPSBmcHJpbnRmOworZXhwb3J0
cy5wcmludGYgICAgPSBwcmludGY7CitleHBvcnRzLmVwcmludGYgICA9IGVwcmludGY7CitleHBv
cnRzLnNwcmludGYgICA9IHNwcmludGY7CitleHBvcnRzLmJwcmludGYgICA9IGJwcmludGY7Citl
eHBvcnRzLmlmcHJpbnRmICA9IGlmcHJpbnRmOworZXhwb3J0cy5rZnByaW50ZiAgPSBrZnByaW50
ZjsKK2V4cG9ydHMuaWtmcHJpbnRmID0gaWtmcHJpbnRmOworZXhwb3J0cy5rc3ByaW50ZiAgPSBr
c3ByaW50ZjsKK2V4cG9ydHMua2JwcmludGYgID0ga2JwcmludGY7CitleHBvcnRzLmtwcmludGYg
ICA9IGtwcmludGY7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIHByaW50
Zi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lz
dHJ5WydwcmludCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8v
Ly8vLy8gc3RhcnQgb2YgcHJpbnQuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVT
Q1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3Qn
OworCit2YXIgTGlzdCAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2
YXIgU2V4cHIgICA9IHJlcXVpcmUoIi4vc2V4cHIiKTsKK3ZhciBBcnJhbmdlID0gcmVxdWlyZSgi
Li9hcnJhbmdlIik7CisKK2Z1bmN0aW9uIGluc3RyKG9jLCB3aWR0aCwgZSkgeworICByZXR1cm4g
U2V4cHIub3V0cHV0KG9jLCB3aWR0aCwgQXJyYW5nZS5pbnN0cihlKSk7Cit9CisKK2Z1bmN0aW9u
IGZ1bmMob2MsIHdpZHRoLCBmKSB7CisgIHJldHVybiBTZXhwci5vdXRwdXQob2MsIHdpZHRoLCBB
cnJhbmdlLmZ1bmMoZikpOworfQorCitmdW5jdGlvbiBtb2R1bGVfKG9jLCB3aWR0aCwgbSkgewor
ICByZXR1cm4gU2V4cHIub3V0cHV0KG9jLCB3aWR0aCwgQXJyYW5nZS5tb2R1bGVfKG0pKTsKK30K
KworZnVuY3Rpb24gc2NyaXB0KG9jLCB3aWR0aCwgbW9kZSwgcykgeworICByZXR1cm4gTGlzdC5p
dGVyKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4gU2V4cHIub3V0cHV0
KG9jLCB3aWR0aCwgcGFyYW0pOworICAgICAgICAgICAgfSwgQXJyYW5nZS5zY3JpcHQobW9kZSwg
cykpOworfQorCitleHBvcnRzLmluc3RyICAgPSBpbnN0cjsKK2V4cG9ydHMuZnVuYyAgICA9IGZ1
bmM7CitleHBvcnRzLm1vZHVsZV8gPSBtb2R1bGVfOworZXhwb3J0cy5zY3JpcHQgID0gc2NyaXB0
OworLyogQXJyYW5nZSBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIHByaW50
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ3NjcmlwdCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8v
Ly8vLy8gc3RhcnQgb2Ygc2NyaXB0LmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xF
U0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0
JzsKKwordmFyIENhbWxfZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9j
YW1sX2V4Y2VwdGlvbnMiKTsKKwordmFyIFN5bnRheCA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUo
IlNjcmlwdC5TeW50YXgiKTsKKworZXhwb3J0cy5TeW50YXggPSBTeW50YXg7CisvKiBObyBzaWRl
IGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIHNjcmlwdC5qcyAvLy8vLy8vLworwqAgwqAgcmV0
dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydzZXhwciddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Ygc2V4cHIuanMg
Ly8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBM
RUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgTGlzdCAgICAgICA9IHJl
cXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQmxvY2sgICAgICA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFyIEN1cnJ5ICAgICAgPSByZXF1aXJl
KCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3ZhciAkJFN0cmluZyAgID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwordmFyIFBlcnZhc2l2ZXMgPSByZXF1aXJlKCJi
cy1wbGF0Zm9ybS9saWIvanMvcGVydmFzaXZlcyIpOworCitmdW5jdGlvbiAkY2FyZXQkcGx1cyhz
LCByKSB7CisgIHJldHVybiAvKiBDb25jYXQgKi9CbG9jay5fXygxLCBbLyogOjogKi9bCisgICAg
ICAgICAgICAgIC8qIExlYWYgKi9CbG9jay5fXygwLCBbc10pLAorICAgICAgICAgICAgICAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICByLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uICRwbHVzJGNhcmV0
KHIsIHMpIHsKKyAgcmV0dXJuIC8qIENvbmNhdCAqL0Jsb2NrLl9fKDEsIFsvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgciwKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
LyogTGVhZiAqL0Jsb2NrLl9fKDAsIFtzXSksCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaXRlcihmLCBw
YXJhbSkgeworICBpZiAocGFyYW0udGFnKSB7CisgICAgcmV0dXJuIExpc3QuaXRlcihmdW5jdGlv
biAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihmLCBwYXJhbSk7CisgICAg
ICAgICAgICAgIH0sIHBhcmFtWzBdKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ3Vycnku
XzEoZiwgcGFyYW1bMF0pOworICB9Cit9CisKK2Z1bmN0aW9uIGNvbmNhdChwYXJhbSkgeworICBp
ZiAocGFyYW0udGFnKSB7CisgICAgcmV0dXJuICQkU3RyaW5nLmNvbmNhdCgiIiwgTGlzdC5tYXAo
Y29uY2F0LCBwYXJhbVswXSkpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBwYXJhbVswXTsK
KyAgfQorfQorCitmdW5jdGlvbiBwcChvZmYsIHdpZHRoLCBwYXJhbSkgeworICBpZiAocGFyYW0u
dGFnKSB7CisgICAgdmFyIHMgPSBwYXJhbVswXTsKKyAgICB2YXIgcGFydGlhbF9hcmcgPSBvZmYg
KyAyIHwgMDsKKyAgICB2YXIgbWF0Y2ggPSBMaXN0LnNwbGl0KExpc3QubWFwKGZ1bmN0aW9uIChw
YXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4gcHAocGFydGlhbF9hcmcsIHdpZHRoLCBwYXJh
bSk7CisgICAgICAgICAgICB9LCBwYXJhbVsxXSkpOworICAgIHZhciBycyA9IG1hdGNoWzFdOwor
ICAgIHZhciBsZW4gPSAocy5sZW5ndGggKyBMaXN0Lmxlbmd0aChycykgfCAwKSArIExpc3QuZm9s
ZF9sZWZ0KGZ1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgICByZXR1cm4gcHJpbSAr
IHByaW0kMSB8IDA7CisgICAgICAgIH0sIDIsIG1hdGNoWzBdKSB8IDA7CisgICAgdmFyIG1hdGNo
JDE7CisgICAgaWYgKChvZmYgKyBsZW4gfCAwKSA8PSB3aWR0aCkgeworICAgICAgbWF0Y2gkMSA9
IC8qIHR1cGxlICovWworICAgICAgICAiICIsCisgICAgICAgICIiCisgICAgICBdOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHZhciBpbmRlbnQgPSAkJFN0cmluZy5tYWtlKG9mZiwgLyogIiAi
ICovMzIpOworICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAiXG4gICIgKyBp
bmRlbnQsCisgICAgICAgICJcbiIgKyBpbmRlbnQKKyAgICAgIF07CisgICAgfQorICAgIHZhciBz
ZXAgPSBtYXRjaCQxWzBdOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIGxl
biwKKyAgICAgICAgICAgICRjYXJldCRwbHVzKCIoIiwgJGNhcmV0JHBsdXMocywgJHBsdXMkY2Fy
ZXQoJHBsdXMkY2FyZXQoLyogQ29uY2F0ICovQmxvY2suX18oMSwgW0xpc3QubWFwKGZ1bmN0aW9u
IChyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkY2Fy
ZXQkcGx1cyhzZXAsIHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwg
cnMpXSksIG1hdGNoJDFbMV0pLCAiKSIpKSkKKyAgICAgICAgICBdOworICB9CisgIGVsc2Ugewor
ICAgIHZhciBzJDEgPSBwYXJhbVswXTsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICBzJDEubGVuZ3RoLAorICAgICAgICAgICAgLyogTGVhZiAqL0Jsb2NrLl9fKDAsIFtzJDFd
KQorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gb3V0cHV0KG9jLCB3aWR0aCwgeCkg
eworICBpdGVyKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5v
dXRwdXRfc3RyaW5nKG9jLCBwYXJhbSk7CisgICAgICB9LCBwcCgwLCB3aWR0aCwgeClbMV0pOwor
ICBQZXJ2YXNpdmVzLm91dHB1dF9zdHJpbmcob2MsICJcbiIpOworICByZXR1cm4gQ3VycnkuXzEo
UGVydmFzaXZlcy5mbHVzaCwgb2MpOworfQorCitmdW5jdGlvbiBwcmludChwYXJhbSwgcGFyYW0k
MSkgeworICByZXR1cm4gb3V0cHV0KFBlcnZhc2l2ZXMuc3Rkb3V0LCBwYXJhbSwgcGFyYW0kMSk7
Cit9CisKK2Z1bmN0aW9uIHRvX3N0cmluZyh3aWR0aCwgeCkgeworICByZXR1cm4gY29uY2F0KHBw
KDAsIHdpZHRoLCB4KVsxXSkgKyAiXG4iOworfQorCitleHBvcnRzLm91dHB1dCAgICA9IG91dHB1
dDsKK2V4cG9ydHMucHJpbnQgICAgID0gcHJpbnQ7CitleHBvcnRzLnRvX3N0cmluZyA9IHRvX3N0
cmluZzsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2Ygc2V4cHIuanMgLy8v
Ly8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnc291
cmNlJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBz
dGFydCBvZiBzb3VyY2UuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQg
VkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2
YXIgQmxvY2sgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFy
IEN1cnJ5ICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3ZhciBQ
cmludGYgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3ByaW50ZiIpOwordmFyIENh
bWxfb2JqICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9vYmoiKTsKK3ZhciBQ
ZXJ2YXNpdmVzID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3BlcnZhc2l2ZXMiKTsKKwor
ZnVuY3Rpb24gJGF0JGF0KHgsIHJlZ2lvbikgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAg
ICAgICAgIC8qIGF0ICovcmVnaW9uLAorICAgICAgICAgIC8qIGl0ICoveAorICAgICAgICBdOwor
fQorCit2YXIgbm9fcG9zID0gLyogcmVjb3JkICovWworICAvKiBmaWxlICovIiIsCisgIC8qIGxp
bmUgKi8wLAorICAvKiBjb2x1bW4gKi8wCitdOworCit2YXIgbm9fcmVnaW9uID0gLyogcmVjb3Jk
ICovWworICAvKiBsZWZ0ICovbm9fcG9zLAorICAvKiByaWdodCAqL25vX3BvcworXTsKKworZnVu
Y3Rpb24gc3RyaW5nX29mX3Bvcyhwb3MpIHsKKyAgaWYgKHBvc1svKiBsaW5lICovMV0gPT09IC0x
KSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50Zi5zcHJpbnRmKC8qIEZvcm1hdCAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgIjB4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIElu
dCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfeCAq
LzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAg
ICAiMHgleCIKKyAgICAgICAgICAgICAgICAgIF0pLCBwb3NbLyogY29sdW1uICovMl0pOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBQZXJ2YXNpdmVzLnN0cmluZ19vZl9pbnQocG9zWy8qIGxp
bmUgKi8xXSkgKyAoIi4iICsgUGVydmFzaXZlcy5zdHJpbmdfb2ZfaW50KHBvc1svKiBjb2x1bW4g
Ki8yXSArIDEgfCAwKSk7CisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX29mX3JlZ2lvbihyKSB7
CisgIHJldHVybiByWy8qIGxlZnQgKi8wXVsvKiBmaWxlICovMF0gKyAoIjoiICsgKHN0cmluZ19v
Zl9wb3MoclsvKiBsZWZ0ICovMF0pICsgKAorICAgICAgICAgICAgICBDYW1sX29iai5jYW1sX2Vx
dWFsKHJbLyogcmlnaHQgKi8xXSwgclsvKiBsZWZ0ICovMF0pID8gIiIgOiAiLSIgKyBzdHJpbmdf
b2ZfcG9zKHJbLyogcmlnaHQgKi8xXSkKKyAgICAgICAgICAgICkpKTsKK30KKworZXhwb3J0cy5u
b19wb3MgICAgICAgICAgID0gbm9fcG9zOworZXhwb3J0cy5ub19yZWdpb24gICAgICAgID0gbm9f
cmVnaW9uOworZXhwb3J0cy5zdHJpbmdfb2ZfcG9zICAgID0gc3RyaW5nX29mX3BvczsKK2V4cG9y
dHMuc3RyaW5nX29mX3JlZ2lvbiA9IHN0cmluZ19vZl9yZWdpb247CitleHBvcnRzLiRhdCRhdCAg
ICAgICAgICAgPSAkYXQkYXQ7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9m
IHNvdXJjZS5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAg
X3JlZ2lzdHJ5WydzdHJpbmcnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7
fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHN0cmluZy5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOwor
Cit2YXIgTGlzdCAgICAgICAgPSByZXF1aXJlKCIuL2xpc3QiKTsKK3ZhciBCeXRlcyAgICAgICA9
IHJlcXVpcmUoIi4vYnl0ZXMiKTsKK3ZhciBDYW1sX2ludDMyICA9IHJlcXVpcmUoIi4vY2FtbF9p
bnQzMiIpOwordmFyIENhbWxfc3RyaW5nID0gcmVxdWlyZSgiLi9jYW1sX3N0cmluZyIpOworCitm
dW5jdGlvbiBtYWtlKG4sIGMpIHsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmlu
ZyhCeXRlcy5tYWtlKG4sIGMpKTsKK30KKworZnVuY3Rpb24gaW5pdChuLCBmKSB7CisgIHJldHVy
biBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMuaW5pdChuLCBmKSk7Cit9CisKK2Z1
bmN0aW9uIGNvcHkocykgeworICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5
dGVzLmNvcHkoQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpKSk7Cit9CisKK2Z1bmN0aW9u
IHN1YihzLCBvZnMsIGxlbikgeworICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5n
KEJ5dGVzLnN1YihDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocyksIG9mcywgbGVuKSk7Cit9
CisKK2Z1bmN0aW9uIGNvbmNhdChzZXAsIGwpIHsKKyAgaWYgKGwpIHsKKyAgICB2YXIgaGQgPSBs
WzBdOworICAgIHZhciBudW0gPSBbMF07CisgICAgdmFyIGxlbiA9IFswXTsKKyAgICBMaXN0Lml0
ZXIoZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICBudW1bMF0gPSBudW1bMF0gKyAxIHwgMDsKKyAg
ICAgICAgICBsZW5bMF0gPSBsZW5bMF0gKyBzLmxlbmd0aCB8IDA7CisgICAgICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICAgICAgfSwgbCk7CisgICAgdmFyIHIgPSBDYW1sX3N0cmluZy5jYW1s
X2NyZWF0ZV9zdHJpbmcobGVuWzBdICsgQ2FtbF9pbnQzMi5pbXVsKHNlcC5sZW5ndGgsIG51bVsw
XSAtIDEgfCAwKSB8IDApOworICAgIENhbWxfc3RyaW5nLmNhbWxfYmxpdF9zdHJpbmcoaGQsIDAs
IHIsIDAsIGhkLmxlbmd0aCk7CisgICAgdmFyIHBvcyA9IFtoZC5sZW5ndGhdOworICAgIExpc3Qu
aXRlcihmdW5jdGlvbiAocykgeworICAgICAgICAgIENhbWxfc3RyaW5nLmNhbWxfYmxpdF9zdHJp
bmcoc2VwLCAwLCByLCBwb3NbMF0sIHNlcC5sZW5ndGgpOworICAgICAgICAgIHBvc1swXSA9IHBv
c1swXSArIHNlcC5sZW5ndGggfCAwOworICAgICAgICAgIENhbWxfc3RyaW5nLmNhbWxfYmxpdF9z
dHJpbmcocywgMCwgciwgcG9zWzBdLCBzLmxlbmd0aCk7CisgICAgICAgICAgcG9zWzBdID0gcG9z
WzBdICsgcy5sZW5ndGggfCAwOworICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAg
IH0sIGxbMV0pOworICAgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocik7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuICIiOworICB9Cit9CisKK2Z1bmN0aW9uIGl0ZXIoZiwg
cykgeworICByZXR1cm4gQnl0ZXMuaXRlcihmLCBDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmco
cykpOworfQorCitmdW5jdGlvbiBpdGVyaShmLCBzKSB7CisgIHJldHVybiBCeXRlcy5pdGVyaShm
LCBDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykpOworfQorCitmdW5jdGlvbiBtYXAoZiwg
cykgeworICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5dGVzLm1hcChmLCBD
YW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykpKTsKK30KKworZnVuY3Rpb24gbWFwaShmLCBz
KSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFwaShmLCBD
YW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykpKTsKK30KKworZnVuY3Rpb24gaXNfc3BhY2Uo
cGFyYW0pIHsKKyAgdmFyIHN3aXRjaGVyID0gcGFyYW0gLSA5IHwgMDsKKyAgaWYgKHN3aXRjaGVy
ID4gNCB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICBpZiAoc3dpdGNoZXIgIT09IDIzKSB7CisgICAg
ICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAv
KiB0cnVlICovMTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoc3dpdGNoZXIgIT09IDIpIHsKKyAg
ICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIGZhbHNl
ICovMDsKKyAgfQorfQorCitmdW5jdGlvbiB0cmltKHMpIHsKKyAgaWYgKHMgPT09ICIiIHx8ICEo
aXNfc3BhY2Uocy5jaGFyQ29kZUF0KDApKSB8fCBpc19zcGFjZShzLmNoYXJDb2RlQXQocy5sZW5n
dGggLSAxIHwgMCkpKSkgeworICAgIHJldHVybiBzOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMudHJpbShDYW1sX3N0cmluZy5ieXRl
c19vZl9zdHJpbmcocykpKTsKKyAgfQorfQorCitmdW5jdGlvbiBlc2NhcGVkKHMpIHsKKyAgdmFy
IG5lZWRzX2VzY2FwZSA9IGZ1bmN0aW9uIChfaSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAg
IHZhciBpID0gX2k7CisgICAgICBpZiAoaSA+PSBzLmxlbmd0aCkgeworICAgICAgICByZXR1cm4g
LyogZmFsc2UgKi8wOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciBtYXRjaCA9
IHMuY2hhckNvZGVBdChpKTsKKyAgICAgICAgaWYgKG1hdGNoID49IDMyKSB7CisgICAgICAgICAg
dmFyIHN3aXRjaGVyID0gbWF0Y2ggLSAzNCB8IDA7CisgICAgICAgICAgaWYgKHN3aXRjaGVyID4g
NTggfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgICAgICAgICBpZiAoc3dpdGNoZXIgPj0gOTMpIHsK
KyAgICAgICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIGlmIChzd2l0Y2hlciA+IDU3IHx8IHN3aXRjaGVyIDwgMSkgeworICAg
ICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH07Cisg
IH07CisgIGlmIChuZWVkc19lc2NhcGUoMCkpIHsKKyAgICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0
ZXNfdG9fc3RyaW5nKEJ5dGVzLmVzY2FwZWQoQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMp
KSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHM7CisgIH0KK30KKworZnVuY3Rpb24gaW5k
ZXgocywgYykgeworICByZXR1cm4gQnl0ZXMuaW5kZXgoQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3Ry
aW5nKHMpLCBjKTsKK30KKworZnVuY3Rpb24gcmluZGV4KHMsIGMpIHsKKyAgcmV0dXJuIEJ5dGVz
LnJpbmRleChDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocyksIGMpOworfQorCitmdW5jdGlv
biBpbmRleF9mcm9tKHMsIGksIGMpIHsKKyAgcmV0dXJuIEJ5dGVzLmluZGV4X2Zyb20oQ2FtbF9z
dHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBpLCBjKTsKK30KKworZnVuY3Rpb24gcmluZGV4X2Zy
b20ocywgaSwgYykgeworICByZXR1cm4gQnl0ZXMucmluZGV4X2Zyb20oQ2FtbF9zdHJpbmcuYnl0
ZXNfb2Zfc3RyaW5nKHMpLCBpLCBjKTsKK30KKworZnVuY3Rpb24gY29udGFpbnMocywgYykgewor
ICByZXR1cm4gQnl0ZXMuY29udGFpbnMoQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBj
KTsKK30KKworZnVuY3Rpb24gY29udGFpbnNfZnJvbShzLCBpLCBjKSB7CisgIHJldHVybiBCeXRl
cy5jb250YWluc19mcm9tKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgaSwgYyk7Cit9
CisKK2Z1bmN0aW9uIHJjb250YWluc19mcm9tKHMsIGksIGMpIHsKKyAgcmV0dXJuIEJ5dGVzLnJj
b250YWluc19mcm9tKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgaSwgYyk7Cit9CisK
K2Z1bmN0aW9uIHVwcGVyY2FzZShzKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19z
dHJpbmcoQnl0ZXMudXBwZXJjYXNlKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkpOwor
fQorCitmdW5jdGlvbiBsb3dlcmNhc2UocykgeworICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNf
dG9fc3RyaW5nKEJ5dGVzLmxvd2VyY2FzZShDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykp
KTsKK30KKworZnVuY3Rpb24gY2FwaXRhbGl6ZShzKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5i
eXRlc190b19zdHJpbmcoQnl0ZXMuY2FwaXRhbGl6ZShDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJp
bmcocykpKTsKK30KKworZnVuY3Rpb24gdW5jYXBpdGFsaXplKHMpIHsKKyAgcmV0dXJuIENhbWxf
c3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy51bmNhcGl0YWxpemUoQ2FtbF9zdHJpbmcuYnl0
ZXNfb2Zfc3RyaW5nKHMpKSk7Cit9CisKK3ZhciBjb21wYXJlID0gQ2FtbF9zdHJpbmcuY2FtbF9z
dHJpbmdfY29tcGFyZTsKKwordmFyIGZpbGwgPSBCeXRlcy5maWxsOworCit2YXIgYmxpdCA9IEJ5
dGVzLmJsaXRfc3RyaW5nOworCitleHBvcnRzLm1ha2UgICAgICAgICAgID0gbWFrZTsKK2V4cG9y
dHMuaW5pdCAgICAgICAgICAgPSBpbml0OworZXhwb3J0cy5jb3B5ICAgICAgICAgICA9IGNvcHk7
CitleHBvcnRzLnN1YiAgICAgICAgICAgID0gc3ViOworZXhwb3J0cy5maWxsICAgICAgICAgICA9
IGZpbGw7CitleHBvcnRzLmJsaXQgICAgICAgICAgID0gYmxpdDsKK2V4cG9ydHMuY29uY2F0ICAg
ICAgICAgPSBjb25jYXQ7CitleHBvcnRzLml0ZXIgICAgICAgICAgID0gaXRlcjsKK2V4cG9ydHMu
aXRlcmkgICAgICAgICAgPSBpdGVyaTsKK2V4cG9ydHMubWFwICAgICAgICAgICAgPSBtYXA7Citl
eHBvcnRzLm1hcGkgICAgICAgICAgID0gbWFwaTsKK2V4cG9ydHMudHJpbSAgICAgICAgICAgPSB0
cmltOworZXhwb3J0cy5lc2NhcGVkICAgICAgICA9IGVzY2FwZWQ7CitleHBvcnRzLmluZGV4ICAg
ICAgICAgID0gaW5kZXg7CitleHBvcnRzLnJpbmRleCAgICAgICAgID0gcmluZGV4OworZXhwb3J0
cy5pbmRleF9mcm9tICAgICA9IGluZGV4X2Zyb207CitleHBvcnRzLnJpbmRleF9mcm9tICAgID0g
cmluZGV4X2Zyb207CitleHBvcnRzLmNvbnRhaW5zICAgICAgID0gY29udGFpbnM7CitleHBvcnRz
LmNvbnRhaW5zX2Zyb20gID0gY29udGFpbnNfZnJvbTsKK2V4cG9ydHMucmNvbnRhaW5zX2Zyb20g
PSByY29udGFpbnNfZnJvbTsKK2V4cG9ydHMudXBwZXJjYXNlICAgICAgPSB1cHBlcmNhc2U7Citl
eHBvcnRzLmxvd2VyY2FzZSAgICAgID0gbG93ZXJjYXNlOworZXhwb3J0cy5jYXBpdGFsaXplICAg
ICA9IGNhcGl0YWxpemU7CitleHBvcnRzLnVuY2FwaXRhbGl6ZSAgID0gdW5jYXBpdGFsaXplOwor
ZXhwb3J0cy5jb21wYXJlICAgICAgICA9IGNvbXBhcmU7CisvKiBObyBzaWRlIGVmZmVjdCAqLwor
Ly8vLy8vLy8gZW5kIG9mIHN0cmluZy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7
CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydzeXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0
IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHN5cy5qcyAvLy8vLy8vLworJ3VzZSBz
dHJpY3QnOworCit2YXIgQ2FtbF9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2V4Y2VwdGlv
bnMiKTsKKwordmFyIGlzX2pzID0gLyogdHJ1ZSAqLzE7CisKK3ZhciBtYXRjaF8wMDEgPSAvKiBh
cnJheSAqL1tdOworCit2YXIgYmlnX2VuZGlhbiA9IC8qIGZhbHNlICovMDsKKwordmFyIHVuaXgg
PSAvKiB0cnVlICovMTsKKwordmFyIHdpbjMyID0gLyogZmFsc2UgKi8wOworCit2YXIgY3lnd2lu
ID0gLyogZmFsc2UgKi8wOworCit2YXIgbWF4X2FycmF5X2xlbmd0aCA9IDIxNDc0ODM2NDc7CisK
K3ZhciBtYXhfc3RyaW5nX2xlbmd0aCA9IDIxNDc0ODM2NDc7CisKK3ZhciBpbnRlcmFjdGl2ZSA9
IFsvKiBmYWxzZSAqLzBdOworCitmdW5jdGlvbiBzZXRfc2lnbmFsKF8sIF8kMSkgeworICByZXR1
cm4gLyogKCkgKi8wOworfQorCit2YXIgQnJlYWsgPSBDYW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJT
eXMuQnJlYWsiKTsKKworZnVuY3Rpb24gY2F0Y2hfYnJlYWsoKSB7CisgIHJldHVybiAvKiAoKSAq
LzA7Cit9CisKK3ZhciBhcmd2ID0gbWF0Y2hfMDAxOworCit2YXIgZXhlY3V0YWJsZV9uYW1lID0g
ImNtZCI7CisKK3ZhciBvc190eXBlID0gIlVuaXgiOworCit2YXIgd29yZF9zaXplID0gMzI7CisK
K3ZhciBzaWdhYnJ0ID0gLTE7CisKK3ZhciBzaWdhbHJtID0gLTI7CisKK3ZhciBzaWdmcGUgPSAt
MzsKKwordmFyIHNpZ2h1cCA9IC00OworCit2YXIgc2lnaWxsID0gLTU7CisKK3ZhciBzaWdpbnQg
PSAtNjsKKwordmFyIHNpZ2tpbGwgPSAtNzsKKwordmFyIHNpZ3BpcGUgPSAtODsKKwordmFyIHNp
Z3F1aXQgPSAtOTsKKwordmFyIHNpZ3NlZ3YgPSAtMTA7CisKK3ZhciBzaWd0ZXJtID0gLTExOwor
Cit2YXIgc2lndXNyMSA9IC0xMjsKKwordmFyIHNpZ3VzcjIgPSAtMTM7CisKK3ZhciBzaWdjaGxk
ID0gLTE0OworCit2YXIgc2lnY29udCA9IC0xNTsKKwordmFyIHNpZ3N0b3AgPSAtMTY7CisKK3Zh
ciBzaWd0c3RwID0gLTE3OworCit2YXIgc2lndHRpbiA9IC0xODsKKwordmFyIHNpZ3R0b3UgPSAt
MTk7CisKK3ZhciBzaWd2dGFscm0gPSAtMjA7CisKK3ZhciBzaWdwcm9mID0gLTIxOworCit2YXIg
b2NhbWxfdmVyc2lvbiA9ICI0LjAyLjMrZGV2MS0yMDE1LTA3LTEwIjsKKworZXhwb3J0cy5hcmd2
ICAgICAgICAgICAgICA9IGFyZ3Y7CitleHBvcnRzLmV4ZWN1dGFibGVfbmFtZSAgID0gZXhlY3V0
YWJsZV9uYW1lOworZXhwb3J0cy5pbnRlcmFjdGl2ZSAgICAgICA9IGludGVyYWN0aXZlOworZXhw
b3J0cy5vc190eXBlICAgICAgICAgICA9IG9zX3R5cGU7CitleHBvcnRzLnVuaXggICAgICAgICAg
ICAgID0gdW5peDsKK2V4cG9ydHMud2luMzIgICAgICAgICAgICAgPSB3aW4zMjsKK2V4cG9ydHMu
Y3lnd2luICAgICAgICAgICAgPSBjeWd3aW47CitleHBvcnRzLndvcmRfc2l6ZSAgICAgICAgID0g
d29yZF9zaXplOworZXhwb3J0cy5iaWdfZW5kaWFuICAgICAgICA9IGJpZ19lbmRpYW47CitleHBv
cnRzLmlzX2pzICAgICAgICAgICAgID0gaXNfanM7CitleHBvcnRzLm1heF9zdHJpbmdfbGVuZ3Ro
ID0gbWF4X3N0cmluZ19sZW5ndGg7CitleHBvcnRzLm1heF9hcnJheV9sZW5ndGggID0gbWF4X2Fy
cmF5X2xlbmd0aDsKK2V4cG9ydHMuc2V0X3NpZ25hbCAgICAgICAgPSBzZXRfc2lnbmFsOworZXhw
b3J0cy5zaWdhYnJ0ICAgICAgICAgICA9IHNpZ2FicnQ7CitleHBvcnRzLnNpZ2Fscm0gICAgICAg
ICAgID0gc2lnYWxybTsKK2V4cG9ydHMuc2lnZnBlICAgICAgICAgICAgPSBzaWdmcGU7CitleHBv
cnRzLnNpZ2h1cCAgICAgICAgICAgID0gc2lnaHVwOworZXhwb3J0cy5zaWdpbGwgICAgICAgICAg
ICA9IHNpZ2lsbDsKK2V4cG9ydHMuc2lnaW50ICAgICAgICAgICAgPSBzaWdpbnQ7CitleHBvcnRz
LnNpZ2tpbGwgICAgICAgICAgID0gc2lna2lsbDsKK2V4cG9ydHMuc2lncGlwZSAgICAgICAgICAg
PSBzaWdwaXBlOworZXhwb3J0cy5zaWdxdWl0ICAgICAgICAgICA9IHNpZ3F1aXQ7CitleHBvcnRz
LnNpZ3NlZ3YgICAgICAgICAgID0gc2lnc2VndjsKK2V4cG9ydHMuc2lndGVybSAgICAgICAgICAg
PSBzaWd0ZXJtOworZXhwb3J0cy5zaWd1c3IxICAgICAgICAgICA9IHNpZ3VzcjE7CitleHBvcnRz
LnNpZ3VzcjIgICAgICAgICAgID0gc2lndXNyMjsKK2V4cG9ydHMuc2lnY2hsZCAgICAgICAgICAg
PSBzaWdjaGxkOworZXhwb3J0cy5zaWdjb250ICAgICAgICAgICA9IHNpZ2NvbnQ7CitleHBvcnRz
LnNpZ3N0b3AgICAgICAgICAgID0gc2lnc3RvcDsKK2V4cG9ydHMuc2lndHN0cCAgICAgICAgICAg
PSBzaWd0c3RwOworZXhwb3J0cy5zaWd0dGluICAgICAgICAgICA9IHNpZ3R0aW47CitleHBvcnRz
LnNpZ3R0b3UgICAgICAgICAgID0gc2lndHRvdTsKK2V4cG9ydHMuc2lndnRhbHJtICAgICAgICAg
PSBzaWd2dGFscm07CitleHBvcnRzLnNpZ3Byb2YgICAgICAgICAgID0gc2lncHJvZjsKK2V4cG9y
dHMuQnJlYWsgICAgICAgICAgICAgPSBCcmVhazsKK2V4cG9ydHMuY2F0Y2hfYnJlYWsgICAgICAg
PSBjYXRjaF9icmVhazsKK2V4cG9ydHMub2NhbWxfdmVyc2lvbiAgICAgPSBvY2FtbF92ZXJzaW9u
OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBzeXMuanMgLy8vLy8vLy8K
K8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsndHlwZXMnXSA9
IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9m
IHR5cGVzLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04g
MS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEkzMiAg
ICAgID0gcmVxdWlyZSgiLi9pMzIiKTsKK3ZhciBMaXN0ICAgICA9IHJlcXVpcmUoImJzLXBsYXRm
b3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQ3VycnkgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvY3VycnkiKTsKK3ZhciAkJFN0cmluZyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9q
cy9zdHJpbmciKTsKKworZnVuY3Rpb24gc2l6ZShwYXJhbSkgeworICBpZiAocGFyYW0gIT09IDEg
JiYgcGFyYW0gPCAzKSB7CisgICAgcmV0dXJuIDQ7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IDg7CisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX29mX3ZhbHVlX3R5cGUocGFyYW0pIHsKKyAg
c3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gImkzMiI7Cisg
ICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAiaTY0IjsKKyAgICBjYXNlIDIgOiAKKyAgICAg
ICAgcmV0dXJuICJmMzIiOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gImY2NCI7Cisg
ICAgCisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX29mX3ZhbHVlX3R5cGVzKHRzKSB7CisgIHZh
ciBleGl0ID0gMDsKKyAgaWYgKHRzKSB7CisgICAgaWYgKHRzWzFdKSB7CisgICAgICBleGl0ID0g
MTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gc3RyaW5nX29mX3ZhbHVlX3R5cGUo
dHNbMF0pOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBleGl0ID0gMTsKKyAgfQorICBpZiAo
ZXhpdCA9PT0gMSkgeworICAgIHJldHVybiAiWyIgKyAoJCRTdHJpbmcuY29uY2F0KCIgIiwgTGlz
dC5tYXAoc3RyaW5nX29mX3ZhbHVlX3R5cGUsIHRzKSkgKyAiXSIpOworICB9CisgIAorfQorCitm
dW5jdGlvbiBzdHJpbmdfb2ZfZWxlbV90eXBlKCkgeworICByZXR1cm4gImZ1bmNyZWYiOworfQor
CitmdW5jdGlvbiBzdHJpbmdfb2ZfbGltaXRzKHBhcmFtKSB7CisgIHZhciBtYXggPSBwYXJhbVsv
KiBtYXggKi8xXTsKKyAgcmV0dXJuIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgcGFyYW1bLyog
bWluICovMF0pICsgKAorICAgICAgICAgIG1heCA/ICIgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJp
bmdfdSwgbWF4WzBdKSA6ICIiCisgICAgICAgICk7Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9t
ZW1vcnlfdHlwZShwYXJhbSkgeworICByZXR1cm4gc3RyaW5nX29mX2xpbWl0cyhwYXJhbVswXSk7
Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl90YWJsZV90eXBlKHBhcmFtKSB7CisgIHJldHVybiBz
dHJpbmdfb2ZfbGltaXRzKHBhcmFtWzBdKSArICIgZnVuY3JlZiI7Cit9CisKK2Z1bmN0aW9uIHN0
cmluZ19vZl9nbG9iYWxfdHlwZShwYXJhbSkgeworICB2YXIgdCA9IHBhcmFtWzBdOworICBpZiAo
cGFyYW1bMV0gIT09IDApIHsKKyAgICByZXR1cm4gIihtdXQgIiArIChzdHJpbmdfb2ZfdmFsdWVf
dHlwZSh0KSArICIpIik7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHN0cmluZ19vZl92YWx1
ZV90eXBlKHQpOworICB9Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9zdGFja190eXBlKHRzKSB7
CisgIHJldHVybiAiWyIgKyAoJCRTdHJpbmcuY29uY2F0KCIgIiwgTGlzdC5tYXAoc3RyaW5nX29m
X3ZhbHVlX3R5cGUsIHRzKSkgKyAiXSIpOworfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfZnVuY190
eXBlKHBhcmFtKSB7CisgIHJldHVybiBzdHJpbmdfb2Zfc3RhY2tfdHlwZShwYXJhbVswXSkgKyAo
IiAtPiAiICsgc3RyaW5nX29mX3N0YWNrX3R5cGUocGFyYW1bMV0pKTsKK30KKworZXhwb3J0cy5z
aXplICAgICAgICAgICAgICAgICAgPSBzaXplOworZXhwb3J0cy5zdHJpbmdfb2ZfdmFsdWVfdHlw
ZSAgPSBzdHJpbmdfb2ZfdmFsdWVfdHlwZTsKK2V4cG9ydHMuc3RyaW5nX29mX3ZhbHVlX3R5cGVz
ID0gc3RyaW5nX29mX3ZhbHVlX3R5cGVzOworZXhwb3J0cy5zdHJpbmdfb2ZfZWxlbV90eXBlICAg
PSBzdHJpbmdfb2ZfZWxlbV90eXBlOworZXhwb3J0cy5zdHJpbmdfb2ZfbGltaXRzICAgICAgPSBz
dHJpbmdfb2ZfbGltaXRzOworZXhwb3J0cy5zdHJpbmdfb2ZfbWVtb3J5X3R5cGUgPSBzdHJpbmdf
b2ZfbWVtb3J5X3R5cGU7CitleHBvcnRzLnN0cmluZ19vZl90YWJsZV90eXBlICA9IHN0cmluZ19v
Zl90YWJsZV90eXBlOworZXhwb3J0cy5zdHJpbmdfb2ZfZ2xvYmFsX3R5cGUgPSBzdHJpbmdfb2Zf
Z2xvYmFsX3R5cGU7CitleHBvcnRzLnN0cmluZ19vZl9zdGFja190eXBlICA9IHN0cmluZ19vZl9z
dGFja190eXBlOworZXhwb3J0cy5zdHJpbmdfb2ZfZnVuY190eXBlICAgPSBzdHJpbmdfb2ZfZnVu
Y190eXBlOworLyogSTMyIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgdHlw
ZXMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdp
c3RyeVsndmFsdWVzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307Cisv
Ly8vLy8vLyBzdGFydCBvZiB2YWx1ZXMuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNL
TEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJp
Y3QnOworCit2YXIgRjMyICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9mMzIiKTsKK3ZhciBGNjQg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Y2NCIpOwordmFyIEkzMiAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vaTMyIik7Cit2YXIgSTY0ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9pNjQiKTsK
K3ZhciBMaXN0ICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvbGlzdCIp
OwordmFyIEJsb2NrICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9j
ayIpOwordmFyIEN1cnJ5ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9j
dXJyeSIpOwordmFyICQkU3RyaW5nICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9q
cy9zdHJpbmciKTsKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvY2FtbF9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIHR5cGVfb2YocGFyYW0pIHsKKyAg
c3dpdGNoIChwYXJhbS50YWcgfCAwKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVybiAv
KiBJMzJUeXBlICovMDsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuIC8qIEk2NFR5cGUg
Ki8xOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gLyogRjMyVHlwZSAqLzI7CisgICAg
Y2FzZSAzIDogCisgICAgICAgIHJldHVybiAvKiBGNjRUeXBlICovMzsKKyAgICAKKyAgfQorfQor
CitmdW5jdGlvbiBkZWZhdWx0X3ZhbHVlKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAg
ICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIC8qIEkzMiAqL0Jsb2NrLl9fKDAsIFtJMzIuemVy
b10pOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gLyogSTY0ICovQmxvY2suX18oMSwg
W0k2NC56ZXJvXSk7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiBGMzIgKi9CbG9j
ay5fXygyLCBbRjMyLnplcm9dKTsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAgcmV0dXJuIC8qIEY2
NCAqL0Jsb2NrLl9fKDMsIFtGNjQuemVyb10pOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIHZh
bHVlX29mX2Jvb2woYikgeworICByZXR1cm4gLyogSTMyICovQmxvY2suX18oMCwgW2IgPyAxIDog
MF0pOworfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfdmFsdWUocGFyYW0pIHsKKyAgc3dpdGNoIChw
YXJhbS50YWcgfCAwKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVybiBDdXJyeS5fMShJ
MzIudG9fc3RyaW5nX3MsIHBhcmFtWzBdKTsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJu
IEN1cnJ5Ll8xKEk2NC50b19zdHJpbmdfcywgcGFyYW1bMF0pOworICAgIGNhc2UgMiA6IAorICAg
ICAgICByZXR1cm4gQ3VycnkuXzEoRjMyLnRvX3N0cmluZywgcGFyYW1bMF0pOworICAgIGNhc2Ug
MyA6IAorICAgICAgICByZXR1cm4gQ3VycnkuXzEoRjY0LnRvX3N0cmluZywgcGFyYW1bMF0pOwor
ICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl92YWx1ZXModnMpIHsKKyAgdmFyIGV4
aXQgPSAwOworICBpZiAodnMpIHsKKyAgICBpZiAodnNbMV0pIHsKKyAgICAgIGV4aXQgPSAxOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzdHJpbmdfb2ZfdmFsdWUodnNbMF0pOwor
ICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBleGl0ID0gMTsKKyAgfQorICBpZiAoZXhpdCA9PT0g
MSkgeworICAgIHJldHVybiAiWyIgKyAoJCRTdHJpbmcuY29uY2F0KCIgIiwgTGlzdC5tYXAoc3Ry
aW5nX29mX3ZhbHVlLCB2cykpICsgIl0iKTsKKyAgfQorICAKK30KKwordmFyIFZhbHVlID0gQ2Ft
bF9leGNlcHRpb25zLmNyZWF0ZSgiVmFsdWVzLlZhbHVlIik7CisKK2Z1bmN0aW9uIHRvX3ZhbHVl
KGkpIHsKKyAgcmV0dXJuIC8qIEkzMiAqL0Jsb2NrLl9fKDAsIFtpXSk7Cit9CisKK2Z1bmN0aW9u
IG9mX3ZhbHVlKHBhcmFtKSB7CisgIGlmIChwYXJhbS50YWcpIHsKKyAgICB0aHJvdyBbCisgICAg
ICAgICAgVmFsdWUsCisgICAgICAgICAgLyogSTMyVHlwZSAqLzAKKyAgICAgICAgXTsKKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gcGFyYW1bMF07CisgIH0KK30KKwordmFyIEkzMlZhbHVlID0g
LyogbW9kdWxlICovWworICAvKiB0b192YWx1ZSAqL3RvX3ZhbHVlLAorICAvKiBvZl92YWx1ZSAq
L29mX3ZhbHVlCitdOworCitmdW5jdGlvbiB0b192YWx1ZSQxKGkpIHsKKyAgcmV0dXJuIC8qIEk2
NCAqL0Jsb2NrLl9fKDEsIFtpXSk7Cit9CisKK2Z1bmN0aW9uIG9mX3ZhbHVlJDEocGFyYW0pIHsK
KyAgaWYgKHBhcmFtLnRhZyA9PT0gMSkgeworICAgIHJldHVybiBwYXJhbVswXTsKKyAgfQorICBl
bHNlIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgVmFsdWUsCisgICAgICAgICAgLyogSTY0VHlw
ZSAqLzEKKyAgICAgICAgXTsKKyAgfQorfQorCit2YXIgSTY0VmFsdWUgPSAvKiBtb2R1bGUgKi9b
CisgIC8qIHRvX3ZhbHVlICovdG9fdmFsdWUkMSwKKyAgLyogb2ZfdmFsdWUgKi9vZl92YWx1ZSQx
CitdOworCitmdW5jdGlvbiB0b192YWx1ZSQyKGkpIHsKKyAgcmV0dXJuIC8qIEYzMiAqL0Jsb2Nr
Ll9fKDIsIFtpXSk7Cit9CisKK2Z1bmN0aW9uIG9mX3ZhbHVlJDIocGFyYW0pIHsKKyAgaWYgKHBh
cmFtLnRhZyA9PT0gMikgeworICAgIHJldHVybiBwYXJhbVswXTsKKyAgfQorICBlbHNlIHsKKyAg
ICB0aHJvdyBbCisgICAgICAgICAgVmFsdWUsCisgICAgICAgICAgLyogRjMyVHlwZSAqLzIKKyAg
ICAgICAgXTsKKyAgfQorfQorCit2YXIgRjMyVmFsdWUgPSAvKiBtb2R1bGUgKi9bCisgIC8qIHRv
X3ZhbHVlICovdG9fdmFsdWUkMiwKKyAgLyogb2ZfdmFsdWUgKi9vZl92YWx1ZSQyCitdOworCitm
dW5jdGlvbiB0b192YWx1ZSQzKGkpIHsKKyAgcmV0dXJuIC8qIEY2NCAqL0Jsb2NrLl9fKDMsIFtp
XSk7Cit9CisKK2Z1bmN0aW9uIG9mX3ZhbHVlJDMocGFyYW0pIHsKKyAgaWYgKHBhcmFtLnRhZyA9
PT0gMykgeworICAgIHJldHVybiBwYXJhbVswXTsKKyAgfQorICBlbHNlIHsKKyAgICB0aHJvdyBb
CisgICAgICAgICAgVmFsdWUsCisgICAgICAgICAgLyogRjY0VHlwZSAqLzMKKyAgICAgICAgXTsK
KyAgfQorfQorCit2YXIgRjY0VmFsdWUgPSAvKiBtb2R1bGUgKi9bCisgIC8qIHRvX3ZhbHVlICov
dG9fdmFsdWUkMywKKyAgLyogb2ZfdmFsdWUgKi9vZl92YWx1ZSQzCitdOworCitleHBvcnRzLnR5
cGVfb2YgICAgICAgICAgPSB0eXBlX29mOworZXhwb3J0cy5kZWZhdWx0X3ZhbHVlICAgID0gZGVm
YXVsdF92YWx1ZTsKK2V4cG9ydHMudmFsdWVfb2ZfYm9vbCAgICA9IHZhbHVlX29mX2Jvb2w7Citl
eHBvcnRzLnN0cmluZ19vZl92YWx1ZSAgPSBzdHJpbmdfb2ZfdmFsdWU7CitleHBvcnRzLnN0cmlu
Z19vZl92YWx1ZXMgPSBzdHJpbmdfb2ZfdmFsdWVzOworZXhwb3J0cy5WYWx1ZSAgICAgICAgICAg
ID0gVmFsdWU7CitleHBvcnRzLkkzMlZhbHVlICAgICAgICAgPSBJMzJWYWx1ZTsKK2V4cG9ydHMu
STY0VmFsdWUgICAgICAgICA9IEk2NFZhbHVlOworZXhwb3J0cy5GMzJWYWx1ZSAgICAgICAgID0g
RjMyVmFsdWU7CitleHBvcnRzLkY2NFZhbHVlICAgICAgICAgPSBGNjRWYWx1ZTsKKy8qIEYzMiBO
b3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIHZhbHVlcy5qcyAvLy8vLy8vLwor
wqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wyd3YXNtJ10gPSBm
dW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiB3
YXNtLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40
LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFBhcnNlICAg
ICAgPSByZXF1aXJlKCIuL3BhcnNlIik7Cit2YXIgU2V4cHIgICAgICA9IHJlcXVpcmUoIi4vc2V4
cHIiKTsKK3ZhciBEZWNvZGUgICAgID0gcmVxdWlyZSgiLi9kZWNvZGUiKTsKK3ZhciBFbmNvZGUg
ICAgID0gcmVxdWlyZSgiLi9lbmNvZGUiKTsKK3ZhciBBcnJhbmdlICAgID0gcmVxdWlyZSgiLi9h
cnJhbmdlIik7Cit2YXIgQ2FtbF9pbnQ2NCA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9j
YW1sX2ludDY0Iik7Cit2YXIgUGVydmFzaXZlcyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9q
cy9wZXJ2YXNpdmVzIik7CisKK2Z1bmN0aW9uIGVuY29kZShzKSB7CisgIHZhciBkZWYgPSBQYXJz
ZS5zdHJpbmdfdG9fbW9kdWxlKHMpOworICB2YXIgbWF0Y2ggPSBkZWZbLyogaXQgKi8xXTsKKyAg
aWYgKG1hdGNoLnRhZykgeworICAgIHJldHVybiBtYXRjaFsxXTsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gRW5jb2RlLmVuY29kZShtYXRjaFswXSk7CisgIH0KK30KKworZnVuY3Rpb24gZGVj
b2RlKHMsIHdpZHRoKSB7CisgIHZhciBtID0gRGVjb2RlLmRlY29kZSgiKGRlY29kZSkiLCBzKTsK
KyAgcmV0dXJuIFNleHByLnRvX3N0cmluZyh3aWR0aCwgQXJyYW5nZS5tb2R1bGVfKG0pKTsKK30K
KworZnVuY3Rpb24gZih4KSB7CisgIFBlcnZhc2l2ZXMucHJpbnRfc3RyaW5nKCJmIik7CisgIHJl
dHVybiB4OworfQorCitmdW5jdGlvbiBnKHgpIHsKKyAgcmV0dXJuIENhbWxfaW50NjQub3JfKHgs
IChQZXJ2YXNpdmVzLnByaW50X3N0cmluZygiZiIpLCB4KSk7Cit9CisKK2V4cG9ydHMuZW5jb2Rl
ID0gZW5jb2RlOworZXhwb3J0cy5kZWNvZGUgPSBkZWNvZGU7CitleHBvcnRzLmYgICAgICA9IGY7
CitleHBvcnRzLmcgICAgICA9IGc7CisvKiBQYXJzZSBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8v
Ly8vLy8gZW5kIG9mIHdhc20uanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAg
fTsKKworCisgIGZ1bmN0aW9uIGJpbmFyeShieXRlcykgeworICAgIGxldCBidWZmZXIgPSBuZXcg
QXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKKyAgICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5
KGJ1ZmZlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgewor
ICAgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7CisgICAgfQorICAgIHJldHVybiBi
dWZmZXI7CisgIH0KKyAgZnVuY3Rpb24gYnl0ZXMoYnVmZmVyKSB7CisgICAgbGV0IHN0cmluZyA9
ICcnOworICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyArK2kpIHsKKyAgICAgIHN0cmluZyArPSBTdHJpbmcu
ZnJvbUNvZGVQb2ludCh2aWV3W2ldKTsKKyAgICB9CisgICAgcmV0dXJuIHN0cmluZzsKKyAgfQor
wqAgbGV0IFdhc20gPSByZXF1aXJlKCd3YXNtJyk7CisgIHJldHVybiB7CisgICAgZW5jb2RlKHMp
IHsgcmV0dXJuIGJpbmFyeShXYXNtLmVuY29kZShzKSkgfSwKKyAgICBkZWNvZGUoYiwgdyA9IDgw
KSB7IHJldHVybiBXYXNtLmRlY29kZShieXRlcyhiKSwgdykgfQorICB9OworfSkoKTsKKworCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2Fs
bC53YXN0IGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGwu
d2FzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJmOTFmNGRlYWM2
OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3Rz
L3JldHVybl9jYWxsLndhc3QKQEAgLTAsMCArMSwyMDIgQEAKKzs7IFRlc3QgYHJldHVybl9jYWxs
YCBvcGVyYXRvcgorCisobW9kdWxlCisgIDs7IEF1eGlsaWFyeSBkZWZpbml0aW9ucworICAoZnVu
YyAkY29uc3QtaTMyIChyZXN1bHQgaTMyKSAoaTMyLmNvbnN0IDB4MTMyKSkKKyAgKGZ1bmMgJGNv
bnN0LWk2NCAocmVzdWx0IGk2NCkgKGk2NC5jb25zdCAweDE2NCkpCisgIChmdW5jICRjb25zdC1m
MzIgKHJlc3VsdCBmMzIpIChmMzIuY29uc3QgMHhmMzIpKQorICAoZnVuYyAkY29uc3QtZjY0IChy
ZXN1bHQgZjY0KSAoZjY0LmNvbnN0IDB4ZjY0KSkKKworICAoZnVuYyAkaWQtaTMyIChwYXJhbSBp
MzIpIChyZXN1bHQgaTMyKSAobG9jYWwuZ2V0IDApKQorICAoZnVuYyAkaWQtaTY0IChwYXJhbSBp
NjQpIChyZXN1bHQgaTY0KSAobG9jYWwuZ2V0IDApKQorICAoZnVuYyAkaWQtZjMyIChwYXJhbSBm
MzIpIChyZXN1bHQgZjMyKSAobG9jYWwuZ2V0IDApKQorICAoZnVuYyAkaWQtZjY0IChwYXJhbSBm
NjQpIChyZXN1bHQgZjY0KSAobG9jYWwuZ2V0IDApKQorCisgIChmdW5jICRmMzItaTMyIChwYXJh
bSBmMzIgaTMyKSAocmVzdWx0IGkzMikgKGxvY2FsLmdldCAxKSkKKyAgKGZ1bmMgJGkzMi1pNjQg
KHBhcmFtIGkzMiBpNjQpIChyZXN1bHQgaTY0KSAobG9jYWwuZ2V0IDEpKQorICAoZnVuYyAkZjY0
LWYzMiAocGFyYW0gZjY0IGYzMikgKHJlc3VsdCBmMzIpIChsb2NhbC5nZXQgMSkpCisgIChmdW5j
ICRpNjQtZjY0IChwYXJhbSBpNjQgZjY0KSAocmVzdWx0IGY2NCkgKGxvY2FsLmdldCAxKSkKKwor
ICA7OyBUeXBpbmcKKworICAoZnVuYyAoZXhwb3J0ICJ0eXBlLWkzMiIpIChyZXN1bHQgaTMyKSAo
cmV0dXJuX2NhbGwgJGNvbnN0LWkzMikpCisgIChmdW5jIChleHBvcnQgInR5cGUtaTY0IikgKHJl
c3VsdCBpNjQpIChyZXR1cm5fY2FsbCAkY29uc3QtaTY0KSkKKyAgKGZ1bmMgKGV4cG9ydCAidHlw
ZS1mMzIiKSAocmVzdWx0IGYzMikgKHJldHVybl9jYWxsICRjb25zdC1mMzIpKQorICAoZnVuYyAo
ZXhwb3J0ICJ0eXBlLWY2NCIpIChyZXN1bHQgZjY0KSAocmV0dXJuX2NhbGwgJGNvbnN0LWY2NCkp
CisKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1maXJzdC1pMzIiKSAocmVzdWx0IGkzMikgKHJldHVy
bl9jYWxsICRpZC1pMzIgKGkzMi5jb25zdCAzMikpKQorICAoZnVuYyAoZXhwb3J0ICJ0eXBlLWZp
cnN0LWk2NCIpIChyZXN1bHQgaTY0KSAocmV0dXJuX2NhbGwgJGlkLWk2NCAoaTY0LmNvbnN0IDY0
KSkpCisgIChmdW5jIChleHBvcnQgInR5cGUtZmlyc3QtZjMyIikgKHJlc3VsdCBmMzIpIChyZXR1
cm5fY2FsbCAkaWQtZjMyIChmMzIuY29uc3QgMS4zMikpKQorICAoZnVuYyAoZXhwb3J0ICJ0eXBl
LWZpcnN0LWY2NCIpIChyZXN1bHQgZjY0KSAocmV0dXJuX2NhbGwgJGlkLWY2NCAoZjY0LmNvbnN0
IDEuNjQpKSkKKworICAoZnVuYyAoZXhwb3J0ICJ0eXBlLXNlY29uZC1pMzIiKSAocmVzdWx0IGkz
MikKKyAgICAocmV0dXJuX2NhbGwgJGYzMi1pMzIgKGYzMi5jb25zdCAzMi4xKSAoaTMyLmNvbnN0
IDMyKSkKKyAgKQorICAoZnVuYyAoZXhwb3J0ICJ0eXBlLXNlY29uZC1pNjQiKSAocmVzdWx0IGk2
NCkKKyAgICAocmV0dXJuX2NhbGwgJGkzMi1pNjQgKGkzMi5jb25zdCAzMikgKGk2NC5jb25zdCA2
NCkpCisgICkKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1zZWNvbmQtZjMyIikgKHJlc3VsdCBmMzIp
CisgICAgKHJldHVybl9jYWxsICRmNjQtZjMyIChmNjQuY29uc3QgNjQpIChmMzIuY29uc3QgMzIp
KQorICApCisgIChmdW5jIChleHBvcnQgInR5cGUtc2Vjb25kLWY2NCIpIChyZXN1bHQgZjY0KQor
ICAgIChyZXR1cm5fY2FsbCAkaTY0LWY2NCAoaTY0LmNvbnN0IDY0KSAoZjY0LmNvbnN0IDY0LjEp
KQorICApCisKKyAgOzsgUmVjdXJzaW9uCisKKyAgKGZ1bmMgJGZhYy1hY2MgKGV4cG9ydCAiZmFj
LWFjYyIpIChwYXJhbSBpNjQgaTY0KSAocmVzdWx0IGk2NCkKKyAgICAoaWYgKHJlc3VsdCBpNjQp
IChpNjQuZXF6IChsb2NhbC5nZXQgMCkpCisgICAgICAodGhlbiAobG9jYWwuZ2V0IDEpKQorICAg
ICAgKGVsc2UKKyAgICAgICAgKHJldHVybl9jYWxsICRmYWMtYWNjCisgICAgICAgICAgKGk2NC5z
dWIgKGxvY2FsLmdldCAwKSAoaTY0LmNvbnN0IDEpKQorICAgICAgICAgIChpNjQubXVsIChsb2Nh
bC5nZXQgMCkgKGxvY2FsLmdldCAxKSkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQor
CisgIChmdW5jICRjb3VudCAoZXhwb3J0ICJjb3VudCIpIChwYXJhbSBpNjQpIChyZXN1bHQgaTY0
KQorICAgIChpZiAocmVzdWx0IGk2NCkgKGk2NC5lcXogKGxvY2FsLmdldCAwKSkKKyAgICAgICh0
aGVuIChsb2NhbC5nZXQgMCkpCisgICAgICAoZWxzZSAocmV0dXJuX2NhbGwgJGNvdW50IChpNjQu
c3ViIChsb2NhbC5nZXQgMCkgKGk2NC5jb25zdCAxKSkpKQorICAgICkKKyAgKQorCisgIChmdW5j
ICRldmVuIChleHBvcnQgImV2ZW4iKSAocGFyYW0gaTY0KSAocmVzdWx0IGkzMikKKyAgICAoaWYg
KHJlc3VsdCBpMzIpIChpNjQuZXF6IChsb2NhbC5nZXQgMCkpCisgICAgICAodGhlbiAoaTMyLmNv
bnN0IDQ0KSkKKyAgICAgIChlbHNlIChyZXR1cm5fY2FsbCAkb2RkIChpNjQuc3ViIChsb2NhbC5n
ZXQgMCkgKGk2NC5jb25zdCAxKSkpKQorICAgICkKKyAgKQorICAoZnVuYyAkb2RkIChleHBvcnQg
Im9kZCIpIChwYXJhbSBpNjQpIChyZXN1bHQgaTMyKQorICAgIChpZiAocmVzdWx0IGkzMikgKGk2
NC5lcXogKGxvY2FsLmdldCAwKSkKKyAgICAgICh0aGVuIChpMzIuY29uc3QgOTkpKQorICAgICAg
KGVsc2UgKHJldHVybl9jYWxsICRldmVuIChpNjQuc3ViIChsb2NhbC5nZXQgMCkgKGk2NC5jb25z
dCAxKSkpKQorICAgICkKKyAgKQorKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWkz
MiIpIChpMzIuY29uc3QgMHgxMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1pNjQi
KSAoaTY0LmNvbnN0IDB4MTY0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZjMyIikg
KGYzMi5jb25zdCAweGYzMikpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWY2NCIpIChm
NjQuY29uc3QgMHhmNjQpKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWZpcnN0LWkz
MiIpIChpMzIuY29uc3QgMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1maXJzdC1p
NjQiKSAoaTY0LmNvbnN0IDY0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZmlyc3Qt
ZjMyIikgKGYzMi5jb25zdCAxLjMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZmly
c3QtZjY0IikgKGY2NC5jb25zdCAxLjY0KSkKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlw
ZS1zZWNvbmQtaTMyIikgKGkzMi5jb25zdCAzMikpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0
eXBlLXNlY29uZC1pNjQiKSAoaTY0LmNvbnN0IDY0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2Ug
InR5cGUtc2Vjb25kLWYzMiIpIChmMzIuY29uc3QgMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9r
ZSAidHlwZS1zZWNvbmQtZjY0IikgKGY2NC5jb25zdCA2NC4xKSkKKworKGFzc2VydF9yZXR1cm4g
KGludm9rZSAiZmFjLWFjYyIgKGk2NC5jb25zdCAwKSAoaTY0LmNvbnN0IDEpKSAoaTY0LmNvbnN0
IDEpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZmFjLWFjYyIgKGk2NC5jb25zdCAxKSAoaTY0
LmNvbnN0IDEpKSAoaTY0LmNvbnN0IDEpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZmFjLWFj
YyIgKGk2NC5jb25zdCA1KSAoaTY0LmNvbnN0IDEpKSAoaTY0LmNvbnN0IDEyMCkpCisoYXNzZXJ0
X3JldHVybgorICAoaW52b2tlICJmYWMtYWNjIiAoaTY0LmNvbnN0IDI1KSAoaTY0LmNvbnN0IDEp
KQorICAoaTY0LmNvbnN0IDcwMzQ1MzUyNzc1NzM5NjM3NzYpCispCisKKyhhc3NlcnRfcmV0dXJu
IChpbnZva2UgImNvdW50IiAoaTY0LmNvbnN0IDApKSAoaTY0LmNvbnN0IDApKQorKGFzc2VydF9y
ZXR1cm4gKGludm9rZSAiY291bnQiIChpNjQuY29uc3QgMTAwMCkpIChpNjQuY29uc3QgMCkpCiso
YXNzZXJ0X3JldHVybiAoaW52b2tlICJjb3VudCIgKGk2NC5jb25zdCAxXzAwMF8wMDApKSAoaTY0
LmNvbnN0IDApKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJldmVuIiAoaTY0LmNvbnN0IDAp
KSAoaTMyLmNvbnN0IDQ0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4iIChpNjQuY29u
c3QgMSkpIChpMzIuY29uc3QgOTkpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZXZlbiIgKGk2
NC5jb25zdCAxMDApKSAoaTMyLmNvbnN0IDQ0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2
ZW4iIChpNjQuY29uc3QgNzcpKSAoaTMyLmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZv
a2UgImV2ZW4iIChpNjQuY29uc3QgMV8wMDBfMDAwKSkgKGkzMi5jb25zdCA0NCkpCisoYXNzZXJ0
X3JldHVybiAoaW52b2tlICJldmVuIiAoaTY0LmNvbnN0IDFfMDAwXzAwMSkpIChpMzIuY29uc3Qg
OTkpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAib2RkIiAoaTY0LmNvbnN0IDApKSAoaTMyLmNv
bnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGk2NC5jb25zdCAxKSkgKGkz
Mi5jb25zdCA0NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChpNjQuY29uc3QgMjAw
KSkgKGkzMi5jb25zdCA5OSkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChpNjQuY29u
c3QgNzcpKSAoaTMyLmNvbnN0IDQ0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGk2
NC5jb25zdCAxXzAwMF8wMDApKSAoaTMyLmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZv
a2UgIm9kZCIgKGk2NC5jb25zdCA5OTlfOTk5KSkgKGkzMi5jb25zdCA0NCkpCisKKworOzsgSW52
YWxpZCB0eXBpbmcKKworKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAoZnVuYyAkdHlw
ZS12b2lkLXZzLW51bSAocmVzdWx0IGkzMikgKHJldHVybl9jYWxsIDEpIChpMzIuY29uc3QgMCkp
CisgICAgKGZ1bmMpCisgICkKKyAgInR5cGUgbWlzbWF0Y2giCispCisoYXNzZXJ0X2ludmFsaWQK
KyAgKG1vZHVsZQorICAgIChmdW5jICR0eXBlLW51bS12cy1udW0gKHJlc3VsdCBpMzIpIChyZXR1
cm5fY2FsbCAxKSAoaTMyLmNvbnN0IDApKQorICAgIChmdW5jIChyZXN1bHQgaTY0KSAoaTY0LmNv
bnN0IDEpKQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQorCisoYXNzZXJ0X2ludmFsaWQKKyAg
KG1vZHVsZQorICAgIChmdW5jICRhcml0eS0wLXZzLTEgKHJldHVybl9jYWxsIDEpKQorICAgIChm
dW5jIChwYXJhbSBpMzIpKQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZh
bGlkCisgIChtb2R1bGUKKyAgICAoZnVuYyAkYXJpdHktMC12cy0yIChyZXR1cm5fY2FsbCAxKSkK
KyAgICAoZnVuYyAocGFyYW0gZjY0IGkzMikpCisgICkKKyAgInR5cGUgbWlzbWF0Y2giCispCisK
Kyhtb2R1bGUKKyAgKGZ1bmMgJGFyaXR5LTEtdnMtMCAoaTMyLmNvbnN0IDEpIChyZXR1cm5fY2Fs
bCAxKSkKKyAgKGZ1bmMpCispCisKKyhtb2R1bGUKKyAgKGZ1bmMgJGFyaXR5LTItdnMtMCAoZjY0
LmNvbnN0IDIpIChpMzIuY29uc3QgMSkgKHJldHVybl9jYWxsIDEpKQorICAoZnVuYykKKykKKwor
KGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAoZnVuYyAkdHlwZS1maXJzdC12b2lkLXZz
LW51bSAocmV0dXJuX2NhbGwgMSAobm9wKSAoaTMyLmNvbnN0IDEpKSkKKyAgICAoZnVuYyAocGFy
YW0gaTMyIGkzMikpCisgICkKKyAgInR5cGUgbWlzbWF0Y2giCispCisoYXNzZXJ0X2ludmFsaWQK
KyAgKG1vZHVsZQorICAgIChmdW5jICR0eXBlLXNlY29uZC12b2lkLXZzLW51bSAocmV0dXJuX2Nh
bGwgMSAoaTMyLmNvbnN0IDEpIChub3ApKSkKKyAgICAoZnVuYyAocGFyYW0gaTMyIGkzMikpCisg
ICkKKyAgInR5cGUgbWlzbWF0Y2giCispCisoYXNzZXJ0X2ludmFsaWQKKyAgKG1vZHVsZQorICAg
IChmdW5jICR0eXBlLWZpcnN0LW51bS12cy1udW0gKHJldHVybl9jYWxsIDEgKGY2NC5jb25zdCAx
KSAoaTMyLmNvbnN0IDEpKSkKKyAgICAoZnVuYyAocGFyYW0gaTMyIGY2NCkpCisgICkKKyAgInR5
cGUgbWlzbWF0Y2giCispCisoYXNzZXJ0X2ludmFsaWQKKyAgKG1vZHVsZQorICAgIChmdW5jICR0
eXBlLXNlY29uZC1udW0tdnMtbnVtIChyZXR1cm5fY2FsbCAxIChpMzIuY29uc3QgMSkgKGY2NC5j
b25zdCAxKSkpCisgICAgKGZ1bmMgKHBhcmFtIGY2NCBpMzIpKQorICApCisgICJ0eXBlIG1pc21h
dGNoIgorKQorCisKKzs7IFVuYm91bmQgZnVuY3Rpb24KKworKGFzc2VydF9pbnZhbGlkCisgICht
b2R1bGUgKGZ1bmMgJHVuYm91bmQtZnVuYyAocmV0dXJuX2NhbGwgMSkpKQorICAidW5rbm93biBm
dW5jdGlvbiIKKykKKyhhc3NlcnRfaW52YWxpZAorICAobW9kdWxlIChmdW5jICRsYXJnZS1mdW5j
IChyZXR1cm5fY2FsbCAxMDEyMzIxMzAwKSkpCisgICJ1bmtub3duIGZ1bmN0aW9uIgorKQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGwu
d2FzdC5qcyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVybl9jYWxs
Lndhc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45M2ZkYjNm
YzBmNDcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10
ZXN0cy9yZXR1cm5fY2FsbC53YXN0LmpzCkBAIC0wLDAgKzEsMTMyIEBACisKKy8vIHJldHVybl9j
YWxsLndhc3Q6MworbGV0ICQxID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4
MDBceDAwXHgwMVx4YzhceDgwXHg4MFx4ODBceDAwXHgwZVx4NjBceDAwXHgwMVx4N2ZceDYwXHgw
MFx4MDFceDdlXHg2MFx4MDBceDAxXHg3ZFx4NjBceDAwXHgwMVx4N2NceDYwXHgwMVx4N2ZceDAx
XHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHg2MFx4MDFceDdkXHgwMVx4N2RceDYwXHgwMVx4N2Nc
eDAxXHg3Y1x4NjBceDAyXHg3ZFx4N2ZceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4
NjBceDAyXHg3Y1x4N2RceDAxXHg3ZFx4NjBceDAyXHg3ZVx4N2NceDAxXHg3Y1x4NjBceDAyXHg3
ZVx4N2VceDAxXHg3ZVx4NjBceDAxXHg3ZVx4MDFceDdmXHgwM1x4OWRceDgwXHg4MFx4ODBceDAw
XHgxY1x4MDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4MDlceDBhXHgwYlx4MDBc
eDAxXHgwMlx4MDNceDAwXHgwMVx4MDJceDAzXHgwMFx4MDFceDAyXHgwM1x4MGNceDA1XHgwZFx4
MGRceDA3XHhkOFx4ODFceDgwXHg4MFx4MDBceDEwXHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2
OVx4MzNceDMyXHgwMFx4MGNceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY5XHgzNlx4MzRceDAw
XHgwZFx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDMzXHgzMlx4MDBceDBlXHgwOFx4NzRc
eDc5XHg3MFx4NjVceDJkXHg2Nlx4MzZceDM0XHgwMFx4MGZceDBlXHg3NFx4NzlceDcwXHg2NVx4
MmRceDY2XHg2OVx4NzJceDczXHg3NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxMFx4MGVceDc0XHg3
OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjlceDM2XHgzNFx4MDBceDEx
XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2Nlx4MzNc
eDMyXHgwMFx4MTJceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4
MmRceDY2XHgzNlx4MzRceDAwXHgxM1x4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2
M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxNFx4MGZceDc0XHg3OVx4NzBceDY1
XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzNlx4MzRceDAwXHgxNVx4MGZc
eDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzM1x4
MzJceDAwXHgxNlx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2
NFx4MmRceDY2XHgzNlx4MzRceDAwXHgxN1x4MDdceDY2XHg2MVx4NjNceDJkXHg2MVx4NjNceDYz
XHgwMFx4MThceDA1XHg2M1x4NmZceDc1XHg2ZVx4NzRceDAwXHgxOVx4MDRceDY1XHg3Nlx4NjVc
eDZlXHgwMFx4MWFceDAzXHg2Zlx4NjRceDY0XHgwMFx4MWJceDBhXHg4MFx4ODNceDgwXHg4MFx4
MDBceDFjXHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4YjJceDAyXHgwYlx4ODVceDgwXHg4
MFx4ODBceDAwXHgwMFx4NDJceGU0XHgwMlx4MGJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDQz
XHgwMFx4MjBceDczXHg0NVx4MGJceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4MDBc
eDAwXHgwMFx4MDBceGM4XHhhZVx4NDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4
MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4ODBceDgwXHg4
MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDBi
XHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBc
eDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4
ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgx
Mlx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDBiXHg4NFx4ODBceDgw
XHg4MFx4MDBceDAwXHgxMlx4MDJceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDNc
eDBiXHg4Nlx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MjBceDEyXHgwNFx4MGJceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDBceDQyXHhjMFx4MDBceDEyXHgwNVx4MGJceDg5XHg4MFx4ODBceDgwXHgw
MFx4MDBceDQzXHhjM1x4ZjVceGE4XHgzZlx4MTJceDA2XHgwYlx4OGRceDgwXHg4MFx4ODBceDAw
XHgwMFx4NDRceDNkXHgwYVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4MTJceDA3XHgwYlx4OGJc
eDgwXHg4MFx4ODBceDAwXHgwMFx4NDNceDY2XHg2Nlx4MDBceDQyXHg0MVx4MjBceDEyXHgwOFx4
MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgyMFx4NDJceGMwXHgwMFx4MTJceDA5XHgw
Ylx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDUw
XHg0MFx4NDNceDAwXHgwMFx4MDBceDQyXHgxMlx4MGFceDBiXHg5MFx4ODBceDgwXHg4MFx4MDBc
eDAwXHg0Mlx4YzBceDAwXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBceDQwXHgxMlx4
MGJceDBiXHg5N1x4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDUwXHgwNFx4N2VceDIwXHgw
MVx4MDVceDIwXHgwMFx4NDJceDAxXHg3ZFx4MjBceDAwXHgyMFx4MDFceDdlXHgxMlx4MThceDBi
XHgwYlx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg1MFx4MDRceDdlXHgyMFx4MDBc
eDA1XHgyMFx4MDBceDQyXHgwMVx4N2RceDEyXHgxOVx4MGJceDBiXHg5Mlx4ODBceDgwXHg4MFx4
MDBceDAwXHgyMFx4MDBceDUwXHgwNFx4N2ZceDQxXHgyY1x4MDVceDIwXHgwMFx4NDJceDAxXHg3
ZFx4MTJceDFiXHgwYlx4MGJceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NTBceDA0
XHg3Zlx4NDFceGUzXHgwMFx4MDVceDIwXHgwMFx4NDJceDAxXHg3ZFx4MTJceDFhXHgwYlx4MGIi
KTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDo4MAorYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAidHlwZS1pMzIiLCBbXSksIDMwNik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODEKK3J1bigo
KSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4
NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgw
MVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4ODRceDgx
XHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg3NFx4Nzlc
eDcwXHg2NVx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
MVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4
NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2
NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVc
eDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgw
YVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQw
XHgxMFx4MDBceDAxXHg0Mlx4ZTRceDAyXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBc
eDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+
IGNhbGwoJDEsICJ0eXBlLWk2NCIsIFtdKSwgaW50NjQoIjM1NiIpKQorCisvLyByZXR1cm5fY2Fs
bC53YXN0OjgyCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4
MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2
MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAx
XHg3ZFx4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNc
eDY1XHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVc
eDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3
NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgw
XHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiY1x4NDNceDAwXHgyMFx4NzNceDQ1XHhiY1x4NDZc
eDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWYzMiIsIFtdKSwgMzg5MC4p
CisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdc
eDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4
MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgw
MVx4N2ZceDYwXHgwMFx4MDFceDdjXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZk
XHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHgzNlx4MzRc
eDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFc
eDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4
MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgw
MVx4OThceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4MDBceDAw
XHgwMFx4MDBceDAwXHhjOFx4YWVceDQwXHhiZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBc
eDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+
IGNhbGwoJDEsICJ0eXBlLWY2NCIsIFtdKSwgMzk0MC4pCisKKy8vIHJldHVybl9jYWxsLndhc3Q6
ODUKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtZmlyc3QtaTMyIiwgW10pLCAz
Mik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODYKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4
MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2
MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcw
XHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZc
eDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4
NzJceDczXHg3NFx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHgxMFx4MDBceDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4
MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgp
ID0+IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWk2NCIsIFtdKSwgaW50NjQoIjY0IikpCisKKy8vIHJl
dHVybl9jYWxsLndhc3Q6ODcKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4
MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgw
MVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYw
XHgwMFx4MDFceDdkXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4
MmRceDY2XHgzM1x4MzJceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgw
MFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4
N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFceDgw
XHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBc
eGJjXHg0M1x4YzNceGY1XHhhOFx4M2ZceGJjXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4
MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4g
Y2FsbCgkMSwgInR5cGUtZmlyc3QtZjMyIiwgW10pLCAxLjMyMDAwMDA1MjQ1KQorCisvLyByZXR1
cm5fY2FsbC53YXN0Ojg4CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAw
XHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFc
eDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4
MDBceDAxXHg3Y1x4MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3
NVx4NmNceDY1XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJk
XHg2Nlx4MzZceDM0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhi
ZFx4NDRceDNkXHgwYVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4YmRceDUxXHg0NVx4MGRceDAw
XHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0
X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1maXJzdC1mNjQiLCBbXSksIDEuNjQpCisKKy8v
IHJldHVybl9jYWxsLndhc3Q6OTAKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUt
c2Vjb25kLWkzMiIsIFtdKSwgMzIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjkxCitydW4oKCkg
PT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhh
M1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYw
XHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFc
eDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZVx4MDJceDhiXHg4MVx4
ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwZlx4NzRceDc5XHg3
MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjlceDM2XHgzNFx4MDBceDA2
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDcz
XHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAz
XHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5Mlx4
ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4MDFceDQyXHhjMFx4MDBceDAxXHg1
MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10p
KTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWk2NCIsIFtd
KSwgaW50NjQoIjY0IikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTIKK3J1bigoKSA9PiBjYWxs
KGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4
ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2
Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYw
XHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdkXHgwMlx4OGJceDgxXHg4MFx4ODBc
eDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBmXHg3NFx4NzlceDcwXHg2NVx4
MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4
NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4
MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcy
XHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiY1x4NDNceDAwXHgwMFx4MDBceDQyXHhiY1x4
NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtd
KSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1mMzIiLCBb
XSksIDMyLikKKworLy8gcmV0dXJuX2NhbGwud2FzdDo5MworcnVuKCgpID0+IGNhbGwoaW5zdGFu
Y2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBc
eDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4
N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3
MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2NceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNc
eDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5
XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2
ZVx4MDBceDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAw
XHgwMFx4MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBc
eDQwXHhiZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAg
InJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29u
ZC1mNjQiLCBbXSksIDY0LjEpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTUKK3J1bigoKSA9PiBj
YWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4
MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAx
XHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2Zc
eDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4
ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2
MVx4NjNceDJkXHg2MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1
XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVc
eDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2
ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAw
XHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFc
eDliXHg4MFx4ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4
NDJceDAwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFceDUxXHg0NVx4MGRceDAwXHgw
Zlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAiZmFjLWFjYyIsIFtpbnQ2NCgiMCIpLCBpbnQ2NCgiMSIpXSks
IGludDY0KCIxIikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTYKK3J1bigoKSA9PiBjYWxsKGlu
c3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBc
eDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4
MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgw
Mlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgw
XHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNc
eDJkXHg2MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4
ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4
MFx4ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDAx
XHg0Mlx4MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJc
eDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigo
KSA9PiBjYWxsKCQxLCAiZmFjLWFjYyIsIFtpbnQ2NCgiMSIpLCBpbnQ2NCgiMSIpXSksIGludDY0
KCIxIikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTcKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgw
MFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdm
XHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4
MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2
MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDljXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDA1XHg0Mlx4
MDFceDEwXHgwMFx4MDFceDQyXHhmOFx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgw
MFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkg
PT4gY2FsbCgkMSwgImZhYy1hY2MiLCBbaW50NjQoIjUiKSwgaW50NjQoIjEiKV0pLCBpbnQ2NCgi
MTIwIikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTgKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgw
MFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdm
XHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4
MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2
MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceGE0XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDllXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDE5XHg0Mlx4
MDFceDEwXHgwMFx4MDFceDQyXHg4MFx4ODBceDgwXHhkZVx4ODdceDkyXHhlY1x4Y2ZceGUxXHgw
MFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJy
dW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZmFjLWFjYyIsIFtp
bnQ2NCgiMjUiKSwgaW50NjQoIjEiKV0pLCBpbnQ2NCgiN18wMzRfNTM1XzI3N181NzNfOTYzXzc3
NiIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwMworcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHgwMlx4ODFceDgxXHg4MFx4ODBceDAwXHgw
Nlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA1XHg2M1x4NmZceDc1XHg2ZVx4NzRceDAw
XHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5
XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1
XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBc
eDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4
OTNceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDBceDEwXHgwMFx4MDFceDQyXHgw
MFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJy
dW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiY291bnQiLCBbaW50
NjQoIjAiKV0pLCBpbnQ2NCgiMCIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwNAorcnVuKCgp
ID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2
MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAx
XHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHgwMlx4ODFc
eDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA1XHg2M1x4
NmZceDc1XHg2ZVx4NzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgw
MFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4
N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFceDgw
XHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4ZThc
eDA3XHgxMFx4MDBceDAxXHg0Mlx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4
MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4g
Y2FsbCgkMSwgImNvdW50IiwgW2ludDY0KCIxXzAwMCIpXSksIGludDY0KCIwIikpCisKKy8vIHJl
dHVybl9jYWxsLndhc3Q6MTA1CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBc
eDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4
MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2
MFx4MDFceDdlXHgwMVx4N2VceDAyXHg4MVx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZm
XHg2NFx4NzVceDZjXHg2NVx4MDVceDYzXHg2Zlx4NzVceDZlXHg3NFx4MDBceDA2XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAy
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1
XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBc
eDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4
NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4
MFx4MDBceDAwXHgwMlx4NDBceDQyXHhjMFx4ODRceDNkXHgxMFx4MDBceDAxXHg0Mlx4MDBceDAx
XHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwg
W10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImNvdW50IiwgW2ludDY0KCIx
XzAwMF8wMDAiKV0pLCBpbnQ2NCgiMCIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwNworcnVu
KCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
MVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZm
XHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZc
eDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4
ODBceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2
NVx4NzZceDY1XHg2ZVx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAw
XHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OVx4ODBc
eDgwXHg4MFx4MDBceDAxXHg5M1x4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwMFx4
MTBceDAwXHgwMVx4NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwg
ZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwo
JDEsICJldmVuIiwgW2ludDY0KCIwIildKSwgNDQpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTA4
CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgw
MVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZm
XHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2Zc
eDAyXHg4MFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4
MDRceDY1XHg3Nlx4NjVceDZlXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2
Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcx
XHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4
NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgw
N1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlh
XHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJc
eDAxXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4
MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgp
ID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxIildKSwgOTkpCisKKy8vIHJldHVybl9jYWxs
Lndhc3Q6MTA5CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4
MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2
MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdl
XHgwMVx4N2ZceDAyXHg4MFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVc
eDZjXHg2NVx4MDRceDY1XHg3Nlx4NjVceDZlXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgw
Nlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAy
XHg0MFx4NDJceGU0XHgwMFx4MTBceDAwXHgwMVx4NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBc
eDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRf
cmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxMDAiKV0pLCA0NCkKKworLy8g
cmV0dXJuX2NhbGwud2FzdDoxMTAKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgw
MFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcw
XHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2Zc
eDYwXHgwMVx4N2VceDAxXHg3Zlx4MDJceDgwXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4
NmZceDY0XHg3NVx4NmNceDY1XHgwNFx4NjVceDc2XHg2NVx4NmVceDAwXHgwNlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNc
eDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3
NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4
NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1
XHg2ZVx4MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MDJceDQwXHg0Mlx4Y2RceDAwXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4
NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtd
KSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCI3NyIp
XSksIDk5KQorCisvLyByZXR1cm5fY2FsbC53YXN0OjExMQorcnVuKCgpID0+IGNhbGwoaW5zdGFu
Y2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBc
eDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4
N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3
MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ODBceDgxXHg4MFx4ODBceDAw
XHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBc
eDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4Njlc
eDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3
Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDcz
XHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVc
eDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4
MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5
NVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhjMFx4ODRceDNkXHgxMFx4MDBceDAx
XHg0MVx4MmNceDAxXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQx
KSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV2ZW4i
LCBbaW50NjQoIjFfMDAwXzAwMCIpXSksIDQ0KQorCisvLyByZXR1cm5fY2FsbC53YXN0OjExMgor
cnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFc
eDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4
NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgw
Mlx4ODBceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0
XHg2NVx4NzZceDY1XHg2ZVx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZc
eDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdc
eDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Y1x4
ODBceDgwXHg4MFx4MDBceDAxXHg5Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhj
MVx4ODRceDNkXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBm
XHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0
dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxXzAwMF8wMDEiKV0pLCA5OSkKKwor
Ly8gcmV0dXJuX2NhbGwud2FzdDoxMTMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYw
XHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4
N2ZceDYwXHgwMVx4N2VceDAxXHg3Zlx4MDJceGZmXHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2
ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NmZceDY0XHg2NFx4MDBceDA2XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4
NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1
XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3
MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgw
XHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVc
eDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4
MDBceDAwXHgwMlx4NDBceDQyXHgwMFx4MTBceDAwXHgwMVx4NDFceGUzXHgwMFx4MDFceDQ2XHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2ludDY0KCIwIildKSwgOTkp
CisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTE0CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgw
MFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3
XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBc
eDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4
MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
Mlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJc
eDc1XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4
ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQxXHgyY1x4MDFceDQ2XHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2ludDY0KCIxIildKSwgNDQp
CisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTE1CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgw
MFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3
XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBc
eDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4
MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
Mlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJc
eDc1XHg2ZVx4MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4
ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4YzhceDAxXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgw
MVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIs
IFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbaW50NjQoIjIw
MCIpXSksIDk5KQorCisvLyByZXR1cm5fY2FsbC53YXN0OjExNgorcnVuKCgpID0+IGNhbGwoaW5z
dGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4
ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgw
MVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAy
XHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ZmZceDgwXHg4MFx4ODBc
eDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDAzXHg2Zlx4NjRceDY0XHgwMFx4
MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4
NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4
MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0
XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceGNkXHgwMFx4MTBceDAwXHgwMVx4NDFc
eDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAg
InJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbaW50
NjQoIjc3IildKSwgNDQpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTE3CitydW4oKCkgPT4gY2Fs
bChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBc
eDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4
NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2
MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgw
XHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRc
eDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFc
eDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4
MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgw
MVx4OTZceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4YzBceDg0XHgzZFx4MTBceDAw
XHgwMVx4NDFceGUzXHgwMFx4MDFceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4
cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAib2RkIiwgW2ludDY0KCIxXzAwMF8wMDAiKV0pLCA5OSkKKworLy8gcmV0dXJuX2NhbGwud2Fz
dDoxMTgKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4
N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgw
Mlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAx
XHg3Zlx4MDJceGZmXHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNc
eDY1XHgwM1x4NmZceDY0XHg2NFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3
MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4
MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5
Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQy
XHhiZlx4ODRceDNkXHgxMFx4MDBceDAxXHg0MVx4MmNceDAxXHg0Nlx4NDVceDBkXHgwMFx4MGZc
eDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1
cm4oKCkgPT4gY2FsbCgkMSwgIm9kZCIsIFtpbnQ2NCgiOTk5Xzk5OSIpXSksIDQ0KQorCisvLyBy
ZXR1cm5fY2FsbC53YXN0OjEyMworYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgwMVx4N2Zc
eDYwXHgwMFx4MDBceDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5M1x4
ODBceDgwXHg4MFx4MDBceDAyXHg4Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDQxXHgw
MFx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsLndh
c3Q6MTMwCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAxXHg3Zlx4NjBceDAwXHgwMVx4
N2VceDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5NVx4ODBceDgwXHg4
MFx4MDBceDAyXHg4Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDQxXHgwMFx4MGJceDg0
XHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHgwMVx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwud2Fz
dDoxMzgKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4
MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAwXHgw
M1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OTFceDgwXHg4MFx4ODBceDAw
XHgwMlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDAxXHgwYlx4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDoxNDUKK2Fzc2VydF9pbnZhbGlk
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgw
MFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMlx4N2NceDdmXHgwMFx4MDNceDgzXHg4MFx4ODBceDgw
XHgwMFx4MDJceDAwXHgwMVx4MGFceDkxXHg4MFx4ODBceDgwXHgwMFx4MDJceDg0XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDEyXHgwMVx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisK
Ky8vIHJldHVybl9jYWxsLndhc3Q6MTUzCitsZXQgJDIgPSBpbnN0YW5jZSgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBc
eDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAwXHgwYVx4OTNceDgwXHg4MFx4
ODBceDAwXHgwMlx4ODZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgxMlx4MDFceDBiXHg4
Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE1OAor
bGV0ICQzID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgw
MFx4MDJceDAwXHgwMFx4MGFceDljXHg4MFx4ODBceDgwXHgwMFx4MDJceDhmXHg4MFx4ODBceDgw
XHgwMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDBceDQxXHgwMVx4MTJc
eDAxXHgwYlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwu
d2FzdDoxNjMKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMlx4N2ZceDdm
XHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgwMVx4MGFceDk0XHg4MFx4ODBc
eDgwXHgwMFx4MDJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDAxXHg0MVx4MDFceDEyXHgwMVx4
MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6
MTcwCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAwXHg2MFx4MDJceDdmXHg3Zlx4MDBc
eDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5NFx4ODBceDgwXHg4MFx4
MDBceDAyXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDFceDAxXHgxMlx4MDFceDBiXHg4
Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE3Nwor
YXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlc
eDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgwMFx4NjBceDAyXHg3Zlx4N2NceDAwXHgwM1x4
ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgw
Mlx4OGZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceGYw
XHgzZlx4NDFceDAxXHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOwor
CisvLyByZXR1cm5fY2FsbC53YXN0OjE4NAorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4
NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgw
MFx4NjBceDAyXHg3Y1x4N2ZceDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAx
XHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMlx4OGZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFc
eDAxXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ZjBceDNmXHgxMlx4MDFceDBiXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE5NQorYXNz
ZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgw
XHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAwXHgwYVx4OGFceDgwXHg4MFx4ODBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4
MTJceDAxXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE5OQorYXNzZXJ0X2ludmFsaWQo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAw
XHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4OGVc
eDgwXHg4MFx4ODBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDk0XHg5OFx4
ZGJceGUyXHgwM1x4MGIiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1z
cGVjLXRlc3RzL3JldHVybl9jYWxsX2luZGlyZWN0Lndhc3QgYi9KU1Rlc3RzL3dhc20vcmV0dXJu
LWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWNmMGE3MmUwNmEwCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGxfaW5kaXJl
Y3Qud2FzdApAQCAtMCwwICsxLDUzNiBAQAorOzsgVGVzdCBgcmV0dXJuX2NhbGxfaW5kaXJlY3Rg
IG9wZXJhdG9yCisKKyhtb2R1bGUKKyAgOzsgQXV4aWxpYXJ5IGRlZmluaXRpb25zCisgICh0eXBl
ICRwcm9jIChmdW5jKSkKKyAgKHR5cGUgJG91dC1pMzIgKGZ1bmMgKHJlc3VsdCBpMzIpKSkKKyAg
KHR5cGUgJG91dC1pNjQgKGZ1bmMgKHJlc3VsdCBpNjQpKSkKKyAgKHR5cGUgJG91dC1mMzIgKGZ1
bmMgKHJlc3VsdCBmMzIpKSkKKyAgKHR5cGUgJG91dC1mNjQgKGZ1bmMgKHJlc3VsdCBmNjQpKSkK
KyAgKHR5cGUgJG92ZXItaTMyIChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICh0
eXBlICRvdmVyLWk2NCAoZnVuYyAocGFyYW0gaTY0KSAocmVzdWx0IGk2NCkpKQorICAodHlwZSAk
b3Zlci1mMzIgKGZ1bmMgKHBhcmFtIGYzMikgKHJlc3VsdCBmMzIpKSkKKyAgKHR5cGUgJG92ZXIt
ZjY0IChmdW5jIChwYXJhbSBmNjQpIChyZXN1bHQgZjY0KSkpCisgICh0eXBlICRmMzItaTMyIChm
dW5jIChwYXJhbSBmMzIgaTMyKSAocmVzdWx0IGkzMikpKQorICAodHlwZSAkaTMyLWk2NCAoZnVu
YyAocGFyYW0gaTMyIGk2NCkgKHJlc3VsdCBpNjQpKSkKKyAgKHR5cGUgJGY2NC1mMzIgKGZ1bmMg
KHBhcmFtIGY2NCBmMzIpIChyZXN1bHQgZjMyKSkpCisgICh0eXBlICRpNjQtZjY0IChmdW5jIChw
YXJhbSBpNjQgZjY0KSAocmVzdWx0IGY2NCkpKQorICAodHlwZSAkb3Zlci1pMzItZHVwbGljYXRl
IChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICh0eXBlICRvdmVyLWk2NC1kdXBs
aWNhdGUgKGZ1bmMgKHBhcmFtIGk2NCkgKHJlc3VsdCBpNjQpKSkKKyAgKHR5cGUgJG92ZXItZjMy
LWR1cGxpY2F0ZSAoZnVuYyAocGFyYW0gZjMyKSAocmVzdWx0IGYzMikpKQorICAodHlwZSAkb3Zl
ci1mNjQtZHVwbGljYXRlIChmdW5jIChwYXJhbSBmNjQpIChyZXN1bHQgZjY0KSkpCisKKyAgKGZ1
bmMgJGNvbnN0LWkzMiAodHlwZSAkb3V0LWkzMikgKGkzMi5jb25zdCAweDEzMikpCisgIChmdW5j
ICRjb25zdC1pNjQgKHR5cGUgJG91dC1pNjQpIChpNjQuY29uc3QgMHgxNjQpKQorICAoZnVuYyAk
Y29uc3QtZjMyICh0eXBlICRvdXQtZjMyKSAoZjMyLmNvbnN0IDB4ZjMyKSkKKyAgKGZ1bmMgJGNv
bnN0LWY2NCAodHlwZSAkb3V0LWY2NCkgKGY2NC5jb25zdCAweGY2NCkpCisKKyAgKGZ1bmMgJGlk
LWkzMiAodHlwZSAkb3Zlci1pMzIpIChsb2NhbC5nZXQgMCkpCisgIChmdW5jICRpZC1pNjQgKHR5
cGUgJG92ZXItaTY0KSAobG9jYWwuZ2V0IDApKQorICAoZnVuYyAkaWQtZjMyICh0eXBlICRvdmVy
LWYzMikgKGxvY2FsLmdldCAwKSkKKyAgKGZ1bmMgJGlkLWY2NCAodHlwZSAkb3Zlci1mNjQpIChs
b2NhbC5nZXQgMCkpCisKKyAgKGZ1bmMgJGkzMi1pNjQgKHR5cGUgJGkzMi1pNjQpIChsb2NhbC5n
ZXQgMSkpCisgIChmdW5jICRpNjQtZjY0ICh0eXBlICRpNjQtZjY0KSAobG9jYWwuZ2V0IDEpKQor
ICAoZnVuYyAkZjMyLWkzMiAodHlwZSAkZjMyLWkzMikgKGxvY2FsLmdldCAxKSkKKyAgKGZ1bmMg
JGY2NC1mMzIgKHR5cGUgJGY2NC1mMzIpIChsb2NhbC5nZXQgMSkpCisKKyAgKGZ1bmMgJG92ZXIt
aTMyLWR1cGxpY2F0ZSAodHlwZSAkb3Zlci1pMzItZHVwbGljYXRlKSAobG9jYWwuZ2V0IDApKQor
ICAoZnVuYyAkb3Zlci1pNjQtZHVwbGljYXRlICh0eXBlICRvdmVyLWk2NC1kdXBsaWNhdGUpIChs
b2NhbC5nZXQgMCkpCisgIChmdW5jICRvdmVyLWYzMi1kdXBsaWNhdGUgKHR5cGUgJG92ZXItZjMy
LWR1cGxpY2F0ZSkgKGxvY2FsLmdldCAwKSkKKyAgKGZ1bmMgJG92ZXItZjY0LWR1cGxpY2F0ZSAo
dHlwZSAkb3Zlci1mNjQtZHVwbGljYXRlKSAobG9jYWwuZ2V0IDApKQorCisgICh0YWJsZSBmdW5j
cmVmCisgICAgKGVsZW0KKyAgICAgICRjb25zdC1pMzIgJGNvbnN0LWk2NCAkY29uc3QtZjMyICRj
b25zdC1mNjQKKyAgICAgICRpZC1pMzIgJGlkLWk2NCAkaWQtZjMyICRpZC1mNjQKKyAgICAgICRm
MzItaTMyICRpMzItaTY0ICRmNjQtZjMyICRpNjQtZjY0CisgICAgICAkZmFjICRmYWMtYWNjICRl
dmVuICRvZGQKKyAgICAgICRvdmVyLWkzMi1kdXBsaWNhdGUgJG92ZXItaTY0LWR1cGxpY2F0ZQor
ICAgICAgJG92ZXItZjMyLWR1cGxpY2F0ZSAkb3Zlci1mNjQtZHVwbGljYXRlCisgICAgKQorICAp
CisKKyAgOzsgU3ludGF4CisKKyAgKGZ1bmMKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKGkz
Mi5jb25zdCAwKSkKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHBhcmFtIGk2NCkgKGk2NC5j
b25zdCAwKSAoaTMyLmNvbnN0IDApKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocGFyYW0g
aTY0KSAocGFyYW0pIChwYXJhbSBmNjQgaTMyIGk2NCkKKyAgICAgIChpNjQuY29uc3QgMCkgKGY2
NC5jb25zdCAwKSAoaTMyLmNvbnN0IDApIChpNjQuY29uc3QgMCkgKGkzMi5jb25zdCAwKQorICAg
ICkKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHJlc3VsdCkgKGkzMi5jb25zdCAwKSkKKyAg
KQorCisgIChmdW5jIChyZXN1bHQgaTMyKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocmVz
dWx0IGkzMikgKGkzMi5jb25zdCAwKSkKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHJlc3Vs
dCBpMzIpIChyZXN1bHQpIChpMzIuY29uc3QgMCkpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0
IChwYXJhbSBpNjQpIChyZXN1bHQgaTMyKSAoaTY0LmNvbnN0IDApIChpMzIuY29uc3QgMCkpCisg
ICAgKHJldHVybl9jYWxsX2luZGlyZWN0CisgICAgICAocGFyYW0pIChwYXJhbSBpNjQpIChwYXJh
bSkgKHBhcmFtIGY2NCBpMzIgaTY0KSAocGFyYW0pIChwYXJhbSkKKyAgICAgIChyZXN1bHQpIChy
ZXN1bHQgaTMyKSAocmVzdWx0KSAocmVzdWx0KQorICAgICAgKGk2NC5jb25zdCAwKSAoZjY0LmNv
bnN0IDApIChpMzIuY29uc3QgMCkgKGk2NC5jb25zdCAwKSAoaTMyLmNvbnN0IDApCisgICAgKQor
ICApCisKKyAgKGZ1bmMgKHJlc3VsdCBpNjQpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0
eXBlICRvdmVyLWk2NCkgKHBhcmFtIGk2NCkgKHJlc3VsdCBpNjQpCisgICAgICAoaTY0LmNvbnN0
IDApIChpMzIuY29uc3QgMCkKKyAgICApCisgICkKKworICA7OyBUeXBpbmcKKworICAoZnVuYyAo
ZXhwb3J0ICJ0eXBlLWkzMiIpIChyZXN1bHQgaTMyKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVj
dCAodHlwZSAkb3V0LWkzMikgKGkzMi5jb25zdCAwKSkKKyAgKQorICAoZnVuYyAoZXhwb3J0ICJ0
eXBlLWk2NCIpIChyZXN1bHQgaTY0KQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAk
b3V0LWk2NCkgKGkzMi5jb25zdCAxKSkKKyAgKQorICAoZnVuYyAoZXhwb3J0ICJ0eXBlLWYzMiIp
IChyZXN1bHQgZjMyKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkb3V0LWYzMikg
KGkzMi5jb25zdCAyKSkKKyAgKQorICAoZnVuYyAoZXhwb3J0ICJ0eXBlLWY2NCIpIChyZXN1bHQg
ZjY0KQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkb3V0LWY2NCkgKGkzMi5jb25z
dCAzKSkKKyAgKQorCisgIChmdW5jIChleHBvcnQgInR5cGUtaW5kZXgiKSAocmVzdWx0IGk2NCkK
KyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJG92ZXItaTY0KSAoaTY0LmNvbnN0IDEw
MCkgKGkzMi5jb25zdCA1KSkKKyAgKQorCisgIChmdW5jIChleHBvcnQgInR5cGUtZmlyc3QtaTMy
IikgKHJlc3VsdCBpMzIpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdmVyLWkz
MikgKGkzMi5jb25zdCAzMikgKGkzMi5jb25zdCA0KSkKKyAgKQorICAoZnVuYyAoZXhwb3J0ICJ0
eXBlLWZpcnN0LWk2NCIpIChyZXN1bHQgaTY0KQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAo
dHlwZSAkb3Zlci1pNjQpIChpNjQuY29uc3QgNjQpIChpMzIuY29uc3QgNSkpCisgICkKKyAgKGZ1
bmMgKGV4cG9ydCAidHlwZS1maXJzdC1mMzIiKSAocmVzdWx0IGYzMikKKyAgICAocmV0dXJuX2Nh
bGxfaW5kaXJlY3QgKHR5cGUgJG92ZXItZjMyKSAoZjMyLmNvbnN0IDEuMzIpIChpMzIuY29uc3Qg
NikpCisgICkKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1maXJzdC1mNjQiKSAocmVzdWx0IGY2NCkK
KyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJG92ZXItZjY0KSAoZjY0LmNvbnN0IDEu
NjQpIChpMzIuY29uc3QgNykpCisgICkKKworICAoZnVuYyAoZXhwb3J0ICJ0eXBlLXNlY29uZC1p
MzIiKSAocmVzdWx0IGkzMikKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJGYzMi1p
MzIpCisgICAgICAoZjMyLmNvbnN0IDMyLjEpIChpMzIuY29uc3QgMzIpIChpMzIuY29uc3QgOCkK
KyAgICApCisgICkKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1zZWNvbmQtaTY0IikgKHJlc3VsdCBp
NjQpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRpMzItaTY0KQorICAgICAgKGkz
Mi5jb25zdCAzMikgKGk2NC5jb25zdCA2NCkgKGkzMi5jb25zdCA5KQorICAgICkKKyAgKQorICAo
ZnVuYyAoZXhwb3J0ICJ0eXBlLXNlY29uZC1mMzIiKSAocmVzdWx0IGYzMikKKyAgICAocmV0dXJu
X2NhbGxfaW5kaXJlY3QgKHR5cGUgJGY2NC1mMzIpCisgICAgICAoZjY0LmNvbnN0IDY0KSAoZjMy
LmNvbnN0IDMyKSAoaTMyLmNvbnN0IDEwKQorICAgICkKKyAgKQorICAoZnVuYyAoZXhwb3J0ICJ0
eXBlLXNlY29uZC1mNjQiKSAocmVzdWx0IGY2NCkKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3Qg
KHR5cGUgJGk2NC1mNjQpCisgICAgICAoaTY0LmNvbnN0IDY0KSAoZjY0LmNvbnN0IDY0LjEpIChp
MzIuY29uc3QgMTEpCisgICAgKQorICApCisKKyAgOzsgRGlzcGF0Y2gKKworICAoZnVuYyAoZXhw
b3J0ICJkaXNwYXRjaCIpIChwYXJhbSBpMzIgaTY0KSAocmVzdWx0IGk2NCkKKyAgICAocmV0dXJu
X2NhbGxfaW5kaXJlY3QgKHR5cGUgJG92ZXItaTY0KSAobG9jYWwuZ2V0IDEpIChsb2NhbC5nZXQg
MCkpCisgICkKKworICAoZnVuYyAoZXhwb3J0ICJkaXNwYXRjaC1zdHJ1Y3R1cmFsIikgKHBhcmFt
IGkzMikgKHJlc3VsdCBpNjQpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdmVy
LWk2NC1kdXBsaWNhdGUpCisgICAgICAoaTY0LmNvbnN0IDkpIChsb2NhbC5nZXQgMCkKKyAgICAp
CisgICkKKworICA7OyBNdWx0aXBsZSB0YWJsZXMKKworICAodGFibGUgJHRhYjIgZnVuY3JlZiAo
ZWxlbSAkdGFiLWYxKSkKKyAgKHRhYmxlICR0YWIzIGZ1bmNyZWYgKGVsZW0gJHRhYi1mMikpCisK
KyAgKGZ1bmMgJHRhYi1mMSAocmVzdWx0IGkzMikgKGkzMi5jb25zdCAweDEzMykpCisgIChmdW5j
ICR0YWItZjIgKHJlc3VsdCBpMzIpIChpMzIuY29uc3QgMHgxMzQpKQorCisgIChmdW5jIChleHBv
cnQgImNhbGwtdGFiIikgKHBhcmFtICRpIGkzMikgKHJlc3VsdCBpMzIpCisgICAgKGlmIChpMzIu
ZXEgKGxvY2FsLmdldCAkaSkgKGkzMi5jb25zdCAwKSkKKyAgICAgICh0aGVuIChyZXR1cm5fY2Fs
bF9pbmRpcmVjdCAodHlwZSAkb3V0LWkzMikgKGkzMi5jb25zdCAwKSkpCisgICAgKQorICAgIChp
ZiAoaTMyLmVxIChsb2NhbC5nZXQgJGkpIChpMzIuY29uc3QgMSkpCisgICAgICAodGhlbiAocmV0
dXJuX2NhbGxfaW5kaXJlY3QgMSAodHlwZSAkb3V0LWkzMikgKGkzMi5jb25zdCAwKSkpCisgICAg
KQorICAgIChpZiAoaTMyLmVxIChsb2NhbC5nZXQgJGkpIChpMzIuY29uc3QgMikpCisgICAgICAo
dGhlbiAocmV0dXJuX2NhbGxfaW5kaXJlY3QgJHRhYjMgKHR5cGUgJG91dC1pMzIpIChpMzIuY29u
c3QgMCkpKQorICAgICkKKyAgICAoaTMyLmNvbnN0IDApCisgICkKKworICA7OyBSZWN1cnNpb24K
KworICAoZnVuYyAkZmFjIChleHBvcnQgImZhYyIpICh0eXBlICRvdmVyLWk2NCkKKyAgICAocmV0
dXJuX2NhbGxfaW5kaXJlY3QgKHBhcmFtIGk2NCBpNjQpIChyZXN1bHQgaTY0KQorICAgICAgKGxv
Y2FsLmdldCAwKSAoaTY0LmNvbnN0IDEpIChpMzIuY29uc3QgMTMpCisgICAgKQorICApCisKKyAg
KGZ1bmMgJGZhYy1hY2MgKHBhcmFtIGk2NCBpNjQpIChyZXN1bHQgaTY0KQorICAgIChpZiAocmVz
dWx0IGk2NCkgKGk2NC5lcXogKGxvY2FsLmdldCAwKSkKKyAgICAgICh0aGVuIChsb2NhbC5nZXQg
MSkpCisgICAgICAoZWxzZQorICAgICAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHBhcmFtIGk2
NCBpNjQpIChyZXN1bHQgaTY0KQorICAgICAgICAgIChpNjQuc3ViIChsb2NhbC5nZXQgMCkgKGk2
NC5jb25zdCAxKSkKKyAgICAgICAgICAoaTY0Lm11bCAobG9jYWwuZ2V0IDApIChsb2NhbC5nZXQg
MSkpCisgICAgICAgICAgKGkzMi5jb25zdCAxMykKKyAgICAgICAgKQorICAgICAgKQorICAgICkK
KyAgKQorCisgIChmdW5jICRldmVuIChleHBvcnQgImV2ZW4iKSAocGFyYW0gaTMyKSAocmVzdWx0
IGkzMikKKyAgICAoaWYgKHJlc3VsdCBpMzIpIChpMzIuZXF6IChsb2NhbC5nZXQgMCkpCisgICAg
ICAodGhlbiAoaTMyLmNvbnN0IDQ0KSkKKyAgICAgIChlbHNlCisgICAgICAgIChyZXR1cm5fY2Fs
bF9pbmRpcmVjdCAodHlwZSAkb3Zlci1pMzIpCisgICAgICAgICAgKGkzMi5zdWIgKGxvY2FsLmdl
dCAwKSAoaTMyLmNvbnN0IDEpKQorICAgICAgICAgIChpMzIuY29uc3QgMTUpCisgICAgICAgICkK
KyAgICAgICkKKyAgICApCisgICkKKyAgKGZ1bmMgJG9kZCAoZXhwb3J0ICJvZGQiKSAocGFyYW0g
aTMyKSAocmVzdWx0IGkzMikKKyAgICAoaWYgKHJlc3VsdCBpMzIpIChpMzIuZXF6IChsb2NhbC5n
ZXQgMCkpCisgICAgICAodGhlbiAoaTMyLmNvbnN0IDk5KSkKKyAgICAgIChlbHNlCisgICAgICAg
IChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkb3Zlci1pMzIpCisgICAgICAgICAgKGkzMi5z
dWIgKGxvY2FsLmdldCAwKSAoaTMyLmNvbnN0IDEpKQorICAgICAgICAgIChpMzIuY29uc3QgMTQp
CisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKworKGFzc2VydF9yZXR1cm4gKGlu
dm9rZSAidHlwZS1pMzIiKSAoaTMyLmNvbnN0IDB4MTMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZv
a2UgInR5cGUtaTY0IikgKGk2NC5jb25zdCAweDE2NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tl
ICJ0eXBlLWYzMiIpIChmMzIuY29uc3QgMHhmMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAi
dHlwZS1mNjQiKSAoZjY0LmNvbnN0IDB4ZjY0KSkKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAi
dHlwZS1pbmRleCIpIChpNjQuY29uc3QgMTAwKSkKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAi
dHlwZS1maXJzdC1pMzIiKSAoaTMyLmNvbnN0IDMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2Ug
InR5cGUtZmlyc3QtaTY0IikgKGk2NC5jb25zdCA2NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tl
ICJ0eXBlLWZpcnN0LWYzMiIpIChmMzIuY29uc3QgMS4zMikpCisoYXNzZXJ0X3JldHVybiAoaW52
b2tlICJ0eXBlLWZpcnN0LWY2NCIpIChmNjQuY29uc3QgMS42NCkpCisKKyhhc3NlcnRfcmV0dXJu
IChpbnZva2UgInR5cGUtc2Vjb25kLWkzMiIpIChpMzIuY29uc3QgMzIpKQorKGFzc2VydF9yZXR1
cm4gKGludm9rZSAidHlwZS1zZWNvbmQtaTY0IikgKGk2NC5jb25zdCA2NCkpCisoYXNzZXJ0X3Jl
dHVybiAoaW52b2tlICJ0eXBlLXNlY29uZC1mMzIiKSAoZjMyLmNvbnN0IDMyKSkKKyhhc3NlcnRf
cmV0dXJuIChpbnZva2UgInR5cGUtc2Vjb25kLWY2NCIpIChmNjQuY29uc3QgNjQuMSkpCisKKyhh
c3NlcnRfcmV0dXJuIChpbnZva2UgImRpc3BhdGNoIiAoaTMyLmNvbnN0IDUpIChpNjQuY29uc3Qg
MikpIChpNjQuY29uc3QgMikpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJkaXNwYXRjaCIgKGkz
Mi5jb25zdCA1KSAoaTY0LmNvbnN0IDUpKSAoaTY0LmNvbnN0IDUpKQorKGFzc2VydF9yZXR1cm4g
KGludm9rZSAiZGlzcGF0Y2giIChpMzIuY29uc3QgMTIpIChpNjQuY29uc3QgNSkpIChpNjQuY29u
c3QgMTIwKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImRpc3BhdGNoIiAoaTMyLmNvbnN0IDE3
KSAoaTY0LmNvbnN0IDIpKSAoaTY0LmNvbnN0IDIpKQorKGFzc2VydF90cmFwIChpbnZva2UgImRp
c3BhdGNoIiAoaTMyLmNvbnN0IDApIChpNjQuY29uc3QgMikpICJpbmRpcmVjdCBjYWxsIHR5cGUg
bWlzbWF0Y2giKQorKGFzc2VydF90cmFwIChpbnZva2UgImRpc3BhdGNoIiAoaTMyLmNvbnN0IDE1
KSAoaTY0LmNvbnN0IDIpKSAiaW5kaXJlY3QgY2FsbCB0eXBlIG1pc21hdGNoIikKKyhhc3NlcnRf
dHJhcCAoaW52b2tlICJkaXNwYXRjaCIgKGkzMi5jb25zdCAyMCkgKGk2NC5jb25zdCAyKSkgInVu
ZGVmaW5lZCBlbGVtZW50IikKKyhhc3NlcnRfdHJhcCAoaW52b2tlICJkaXNwYXRjaCIgKGkzMi5j
b25zdCAtMSkgKGk2NC5jb25zdCAyKSkgInVuZGVmaW5lZCBlbGVtZW50IikKKyhhc3NlcnRfdHJh
cCAoaW52b2tlICJkaXNwYXRjaCIgKGkzMi5jb25zdCAxMjEzNDMyNDIzKSAoaTY0LmNvbnN0IDIp
KSAidW5kZWZpbmVkIGVsZW1lbnQiKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJkaXNwYXRj
aC1zdHJ1Y3R1cmFsIiAoaTMyLmNvbnN0IDUpKSAoaTY0LmNvbnN0IDkpKQorKGFzc2VydF9yZXR1
cm4gKGludm9rZSAiZGlzcGF0Y2gtc3RydWN0dXJhbCIgKGkzMi5jb25zdCA1KSkgKGk2NC5jb25z
dCA5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImRpc3BhdGNoLXN0cnVjdHVyYWwiIChpMzIu
Y29uc3QgMTIpKSAoaTY0LmNvbnN0IDM2Mjg4MCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJk
aXNwYXRjaC1zdHJ1Y3R1cmFsIiAoaTMyLmNvbnN0IDE3KSkgKGk2NC5jb25zdCA5KSkKKyhhc3Nl
cnRfdHJhcCAoaW52b2tlICJkaXNwYXRjaC1zdHJ1Y3R1cmFsIiAoaTMyLmNvbnN0IDExKSkgImlu
ZGlyZWN0IGNhbGwgdHlwZSBtaXNtYXRjaCIpCisoYXNzZXJ0X3RyYXAgKGludm9rZSAiZGlzcGF0
Y2gtc3RydWN0dXJhbCIgKGkzMi5jb25zdCAxNikpICJpbmRpcmVjdCBjYWxsIHR5cGUgbWlzbWF0
Y2giKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJjYWxsLXRhYiIgKGkzMi5jb25zdCAwKSkg
KGkzMi5jb25zdCAweDEzMikpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJjYWxsLXRhYiIgKGkz
Mi5jb25zdCAxKSkgKGkzMi5jb25zdCAweDEzMykpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJj
YWxsLXRhYiIgKGkzMi5jb25zdCAyKSkgKGkzMi5jb25zdCAweDEzNCkpCisKKyhhc3NlcnRfcmV0
dXJuIChpbnZva2UgImZhYyIgKGk2NC5jb25zdCAwKSkgKGk2NC5jb25zdCAxKSkKKyhhc3NlcnRf
cmV0dXJuIChpbnZva2UgImZhYyIgKGk2NC5jb25zdCAxKSkgKGk2NC5jb25zdCAxKSkKKyhhc3Nl
cnRfcmV0dXJuIChpbnZva2UgImZhYyIgKGk2NC5jb25zdCA1KSkgKGk2NC5jb25zdCAxMjApKQor
KGFzc2VydF9yZXR1cm4gKGludm9rZSAiZmFjIiAoaTY0LmNvbnN0IDI1KSkgKGk2NC5jb25zdCA3
MDM0NTM1Mjc3NTczOTYzNzc2KSkKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZXZlbiIgKGkz
Mi5jb25zdCAwKSkgKGkzMi5jb25zdCA0NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJldmVu
IiAoaTMyLmNvbnN0IDEpKSAoaTMyLmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2Ug
ImV2ZW4iIChpMzIuY29uc3QgMTAwKSkgKGkzMi5jb25zdCA0NCkpCisoYXNzZXJ0X3JldHVybiAo
aW52b2tlICJldmVuIiAoaTMyLmNvbnN0IDc3KSkgKGkzMi5jb25zdCA5OSkpCisoYXNzZXJ0X3Jl
dHVybiAoaW52b2tlICJldmVuIiAoaTMyLmNvbnN0IDEwMF8wMDApKSAoaTMyLmNvbnN0IDQ0KSkK
Kyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4iIChpMzIuY29uc3QgMTExXzExMSkpIChpMzIu
Y29uc3QgOTkpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAib2RkIiAoaTMyLmNvbnN0IDApKSAo
aTMyLmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGkzMi5jb25zdCAx
KSkgKGkzMi5jb25zdCA0NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChpMzIuY29u
c3QgMjAwKSkgKGkzMi5jb25zdCA5OSkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChp
MzIuY29uc3QgNzcpKSAoaTMyLmNvbnN0IDQ0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgIm9k
ZCIgKGkzMi5jb25zdCAyMDBfMDAyKSkgKGkzMi5jb25zdCA5OSkpCisoYXNzZXJ0X3JldHVybiAo
aW52b2tlICJvZGQiIChpMzIuY29uc3QgMzAwXzAwMykpIChpMzIuY29uc3QgNDQpKQorCisKKzs7
IEludmFsaWQgc3ludGF4CisKKyhhc3NlcnRfbWFsZm9ybWVkCisgIChtb2R1bGUgcXVvdGUKKyAg
ICAiKHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKSIKKyAgICAiKHRh
YmxlIDAgZnVuY3JlZikiCisgICAgIihmdW5jIChyZXN1bHQgaTMyKSIKKyAgICAiICAocmV0dXJu
X2NhbGxfaW5kaXJlY3QgKHR5cGUgJHNpZykgKHJlc3VsdCBpMzIpIChwYXJhbSBpMzIpIgorICAg
ICIgICAgKGkzMi5jb25zdCAwKSAoaTMyLmNvbnN0IDApIgorICAgICIgICkiCisgICAgIikiCisg
ICkKKyAgInVuZXhwZWN0ZWQgdG9rZW4iCispCisoYXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxl
IHF1b3RlCisgICAgIih0eXBlICRzaWcgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSki
CisgICAgIih0YWJsZSAwIGZ1bmNyZWYpIgorICAgICIoZnVuYyAocmVzdWx0IGkzMikiCisgICAg
IiAgKHJldHVybl9jYWxsX2luZGlyZWN0IChwYXJhbSBpMzIpICh0eXBlICRzaWcpIChyZXN1bHQg
aTMyKSIKKyAgICAiICAgIChpMzIuY29uc3QgMCkgKGkzMi5jb25zdCAwKSIKKyAgICAiICApIgor
ICAgICIpIgorICApCisgICJ1bmV4cGVjdGVkIHRva2VuIgorKQorKGFzc2VydF9tYWxmb3JtZWQK
KyAgKG1vZHVsZSBxdW90ZQorICAgICIodHlwZSAkc2lnIChmdW5jIChwYXJhbSBpMzIpIChyZXN1
bHQgaTMyKSkpIgorICAgICIodGFibGUgMCBmdW5jcmVmKSIKKyAgICAiKGZ1bmMgKHJlc3VsdCBp
MzIpIgorICAgICIgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocGFyYW0gaTMyKSAocmVzdWx0IGkz
MikgKHR5cGUgJHNpZykiCisgICAgIiAgICAoaTMyLmNvbnN0IDApIChpMzIuY29uc3QgMCkiCisg
ICAgIiAgKSIKKyAgICAiKSIKKyAgKQorICAidW5leHBlY3RlZCB0b2tlbiIKKykKKyhhc3NlcnRf
bWFsZm9ybWVkCisgIChtb2R1bGUgcXVvdGUKKyAgICAiKHR5cGUgJHNpZyAoZnVuYyAocGFyYW0g
aTMyKSAocmVzdWx0IGkzMikpKSIKKyAgICAiKHRhYmxlIDAgZnVuY3JlZikiCisgICAgIihmdW5j
IChyZXN1bHQgaTMyKSIKKyAgICAiICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHJlc3VsdCBpMzIp
ICh0eXBlICRzaWcpIChwYXJhbSBpMzIpIgorICAgICIgICAgKGkzMi5jb25zdCAwKSAoaTMyLmNv
bnN0IDApIgorICAgICIgICkiCisgICAgIikiCisgICkKKyAgInVuZXhwZWN0ZWQgdG9rZW4iCisp
CisoYXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxlIHF1b3RlCisgICAgIih0eXBlICRzaWcgKGZ1
bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkiCisgICAgIih0YWJsZSAwIGZ1bmNyZWYpIgor
ICAgICIoZnVuYyAocmVzdWx0IGkzMikiCisgICAgIiAgKHJldHVybl9jYWxsX2luZGlyZWN0IChy
ZXN1bHQgaTMyKSAocGFyYW0gaTMyKSAodHlwZSAkc2lnKSIKKyAgICAiICAgIChpMzIuY29uc3Qg
MCkgKGkzMi5jb25zdCAwKSIKKyAgICAiICApIgorICAgICIpIgorICApCisgICJ1bmV4cGVjdGVk
IHRva2VuIgorKQorKGFzc2VydF9tYWxmb3JtZWQKKyAgKG1vZHVsZSBxdW90ZQorICAgICIodGFi
bGUgMCBmdW5jcmVmKSIKKyAgICAiKGZ1bmMgKHJlc3VsdCBpMzIpIgorICAgICIgIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAocmVzdWx0IGkzMikgKHBhcmFtIGkzMikiCisgICAgIiAgICAoaTMyLmNv
bnN0IDApIChpMzIuY29uc3QgMCkiCisgICAgIiAgKSIKKyAgICAiKSIKKyAgKQorICAidW5leHBl
Y3RlZCB0b2tlbiIKKykKKworKGFzc2VydF9tYWxmb3JtZWQKKyAgKG1vZHVsZSBxdW90ZQorICAg
ICIodGFibGUgMCBmdW5jcmVmKSIKKyAgICAiKGZ1bmMgKHJldHVybl9jYWxsX2luZGlyZWN0IChw
YXJhbSAkeCBpMzIpIChpMzIuY29uc3QgMCkgKGkzMi5jb25zdCAwKSkpIgorICApCisgICJ1bmV4
cGVjdGVkIHRva2VuIgorKQorKGFzc2VydF9tYWxmb3JtZWQKKyAgKG1vZHVsZSBxdW90ZQorICAg
ICIodHlwZSAkc2lnIChmdW5jKSkiCisgICAgIih0YWJsZSAwIGZ1bmNyZWYpIgorICAgICIoZnVu
YyAocmVzdWx0IGkzMikiCisgICAgIiAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRzaWcp
IChyZXN1bHQgaTMyKSAoaTMyLmNvbnN0IDApKSIKKyAgICAiKSIKKyAgKQorICAiaW5saW5lIGZ1
bmN0aW9uIHR5cGUiCispCisoYXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxlIHF1b3RlCisgICAg
Iih0eXBlICRzaWcgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkiCisgICAgIih0YWJs
ZSAwIGZ1bmNyZWYpIgorICAgICIoZnVuYyAocmVzdWx0IGkzMikiCisgICAgIiAgKHJldHVybl9j
YWxsX2luZGlyZWN0ICh0eXBlICRzaWcpIChyZXN1bHQgaTMyKSAoaTMyLmNvbnN0IDApKSIKKyAg
ICAiKSIKKyAgKQorICAiaW5saW5lIGZ1bmN0aW9uIHR5cGUiCispCisoYXNzZXJ0X21hbGZvcm1l
ZAorICAobW9kdWxlIHF1b3RlCisgICAgIih0eXBlICRzaWcgKGZ1bmMgKHBhcmFtIGkzMikgKHJl
c3VsdCBpMzIpKSkiCisgICAgIih0YWJsZSAwIGZ1bmNyZWYpIgorICAgICIoZnVuYyIKKyAgICAi
ICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJHNpZykgKHBhcmFtIGkzMikiCisgICAgIiAg
ICAoaTMyLmNvbnN0IDApIChpMzIuY29uc3QgMCkiCisgICAgIiAgKSIKKyAgICAiKSIKKyAgKQor
ICAiaW5saW5lIGZ1bmN0aW9uIHR5cGUiCispCisoYXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxl
IHF1b3RlCisgICAgIih0eXBlICRzaWcgKGZ1bmMgKHBhcmFtIGkzMiBpMzIpIChyZXN1bHQgaTMy
KSkpIgorICAgICIodGFibGUgMCBmdW5jcmVmKSIKKyAgICAiKGZ1bmMgKHJlc3VsdCBpMzIpIgor
ICAgICIgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkc2lnKSAocGFyYW0gaTMyKSAocmVz
dWx0IGkzMikiCisgICAgIiAgICAoaTMyLmNvbnN0IDApIChpMzIuY29uc3QgMCkiCisgICAgIiAg
KSIKKyAgICAiKSIKKyAgKQorICAiaW5saW5lIGZ1bmN0aW9uIHR5cGUiCispCisKKzs7IEludmFs
aWQgdHlwaW5nCisKKyhhc3NlcnRfaW52YWxpZAorICAobW9kdWxlCisgICAgKHR5cGUgKGZ1bmMp
KQorICAgIChmdW5jICRuby10YWJsZSAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkz
Mi5jb25zdCAwKSkpCisgICkKKyAgInVua25vd24gdGFibGUiCispCisKKyhhc3NlcnRfaW52YWxp
ZAorICAobW9kdWxlCisgICAgKHR5cGUgKGZ1bmMpKQorICAgICh0YWJsZSAwIGZ1bmNyZWYpCisg
ICAgKGZ1bmMgJHR5cGUtdm9pZC12cy1udW0gKGkzMi5lcXogKHJldHVybl9jYWxsX2luZGlyZWN0
ICh0eXBlIDApIChpMzIuY29uc3QgMCkpKSkKKyAgKQorICAidHlwZSBtaXNtYXRjaCIKKykKKyhh
c3NlcnRfaW52YWxpZAorICAobW9kdWxlCisgICAgKHR5cGUgKGZ1bmMgKHJlc3VsdCBpNjQpKSkK
KyAgICAodGFibGUgMCBmdW5jcmVmKQorICAgIChmdW5jICR0eXBlLW51bS12cy1udW0gKGkzMi5l
cXogKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlIDApIChpMzIuY29uc3QgMCkpKSkKKyAgKQor
ICAidHlwZSBtaXNtYXRjaCIKKykKKworKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAo
dHlwZSAoZnVuYyAocGFyYW0gaTMyKSkpCisgICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVu
YyAkYXJpdHktMC12cy0xIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0
IDApKSkKKyAgKQorICAidHlwZSBtaXNtYXRjaCIKKykKKyhhc3NlcnRfaW52YWxpZAorICAobW9k
dWxlCisgICAgKHR5cGUgKGZ1bmMgKHBhcmFtIGY2NCBpMzIpKSkKKyAgICAodGFibGUgMCBmdW5j
cmVmKQorICAgIChmdW5jICRhcml0eS0wLXZzLTIgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBl
IDApIChpMzIuY29uc3QgMCkpKQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQorCisobW9kdWxl
CisgICh0eXBlIChmdW5jKSkKKyAgKHRhYmxlIDAgZnVuY3JlZikKKyAgKGZ1bmMgJGFyaXR5LTEt
dnMtMCAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkzMi5jb25zdCAxKSAoaTMyLmNv
bnN0IDApKSkKKykKKworKG1vZHVsZQorICAodHlwZSAoZnVuYykpCisgICh0YWJsZSAwIGZ1bmNy
ZWYpCisgIChmdW5jICRhcml0eS0yLXZzLTAKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5
cGUgMCkgKGY2NC5jb25zdCAyKSAoaTMyLmNvbnN0IDEpIChpMzIuY29uc3QgMCkpCisgICkKKykK
KworKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodHlwZSAoZnVuYyAocGFyYW0gaTMy
KSkpCisgICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkdHlwZS1mdW5jLXZvaWQtdnMt
aTMyIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDEpIChub3ApKSkK
KyAgKQorICAidHlwZSBtaXNtYXRjaCIKKykKKyhhc3NlcnRfaW52YWxpZAorICAobW9kdWxlCisg
ICAgKHR5cGUgKGZ1bmMgKHBhcmFtIGkzMikpKQorICAgICh0YWJsZSAwIGZ1bmNyZWYpCisgICAg
KGZ1bmMgJHR5cGUtZnVuYy1udW0tdnMtaTMyIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAw
KSAoaTMyLmNvbnN0IDApIChpNjQuY29uc3QgMSkpKQorICApCisgICJ0eXBlIG1pc21hdGNoIgor
KQorCisoYXNzZXJ0X2ludmFsaWQKKyAgKG1vZHVsZQorICAgICh0eXBlIChmdW5jIChwYXJhbSBp
MzIgaTMyKSkpCisgICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkdHlwZS1maXJzdC12
b2lkLXZzLW51bQorICAgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlIDApIChub3ApIChp
MzIuY29uc3QgMSkgKGkzMi5jb25zdCAwKSkKKyAgICApCisgICkKKyAgInR5cGUgbWlzbWF0Y2gi
CispCisoYXNzZXJ0X2ludmFsaWQKKyAgKG1vZHVsZQorICAgICh0eXBlIChmdW5jIChwYXJhbSBp
MzIgaTMyKSkpCisgICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkdHlwZS1zZWNvbmQt
dm9pZC12cy1udW0KKyAgICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNv
bnN0IDEpIChub3ApIChpMzIuY29uc3QgMCkpCisgICAgKQorICApCisgICJ0eXBlIG1pc21hdGNo
IgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodHlwZSAoZnVuYyAocGFyYW0g
aTMyIGY2NCkpKQorICAgICh0YWJsZSAwIGZ1bmNyZWYpCisgICAgKGZ1bmMgJHR5cGUtZmlyc3Qt
bnVtLXZzLW51bQorICAgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlIDApIChmNjQuY29u
c3QgMSkgKGkzMi5jb25zdCAxKSAoaTMyLmNvbnN0IDApKQorICAgICkKKyAgKQorICAidHlwZSBt
aXNtYXRjaCIKKykKKyhhc3NlcnRfaW52YWxpZAorICAobW9kdWxlCisgICAgKHR5cGUgKGZ1bmMg
KHBhcmFtIGY2NCBpMzIpKSkKKyAgICAodGFibGUgMCBmdW5jcmVmKQorICAgIChmdW5jICR0eXBl
LXNlY29uZC1udW0tdnMtbnVtCisgICAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkg
KGkzMi5jb25zdCAxKSAoZjY0LmNvbnN0IDEpIChpMzIuY29uc3QgMCkpCisgICAgKQorICApCisg
ICJ0eXBlIG1pc21hdGNoIgorKQorCisKKzs7IFVuYm91bmQgdHlwZQorCisoYXNzZXJ0X2ludmFs
aWQKKyAgKG1vZHVsZQorICAgICh0YWJsZSAwIGZ1bmNyZWYpCisgICAgKGZ1bmMgJHVuYm91bmQt
dHlwZSAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMSkgKGkzMi5jb25zdCAwKSkpCisgICkK
KyAgInVua25vd24gdHlwZSIKKykKKyhhc3NlcnRfaW52YWxpZAorICAobW9kdWxlCisgICAgKHRh
YmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkbGFyZ2UtdHlwZSAocmV0dXJuX2NhbGxfaW5kaXJl
Y3QgKHR5cGUgMTAxMjMyMTMwMCkgKGkzMi5jb25zdCAwKSkpCisgICkKKyAgInVua25vd24gdHlw
ZSIKKykKKworCis7OyBVbmJvdW5kIGZ1bmN0aW9uIGluIHRhYmxlCisKKyhhc3NlcnRfaW52YWxp
ZAorICAobW9kdWxlICh0YWJsZSBmdW5jcmVmIChlbGVtIDAgMCkpKQorICAidW5rbm93biBmdW5j
dGlvbiAwIgorKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtdGVz
dHMvcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdC5qcyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2Fs
bC1zcGVjLXRlc3RzL3JldHVybl9jYWxsX2luZGlyZWN0Lndhc3QuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYTgzMmM1M2YxNDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVj
dC53YXN0LmpzCkBAIC0wLDAgKzEsMjMyIEBACisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndh
c3Q6MworbGV0ICQxID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4ZjdceDgwXHg4MFx4ODBceDAwXHgxN1x4NjBceDAwXHgwMFx4NjBceDAwXHgwMVx4N2Zc
eDYwXHgwMFx4MDFceDdlXHg2MFx4MDBceDAxXHg3ZFx4NjBceDAwXHgwMVx4N2NceDYwXHgwMVx4
N2ZceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHg2MFx4MDFceDdkXHgwMVx4N2RceDYwXHgw
MVx4N2NceDAxXHg3Y1x4NjBceDAyXHg3ZFx4N2ZceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAx
XHg3ZVx4NjBceDAyXHg3Y1x4N2RceDAxXHg3ZFx4NjBceDAyXHg3ZVx4N2NceDAxXHg3Y1x4NjBc
eDAxXHg3Zlx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2VceDYwXHgwMVx4N2RceDAxXHg3ZFx4
NjBceDAxXHg3Y1x4MDFceDdjXHg2MFx4MDRceDdlXHg3Y1x4N2ZceDdlXHgwMFx4NjBceDAxXHg3
ZVx4MDBceDYwXHgwNFx4N2VceDdjXHg3Zlx4N2VceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdm
XHg2MFx4MDFceDdmXHgwMVx4N2VceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAzXHhhYVx4ODBc
eDgwXHg4MFx4MDBceDI5XHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1x4MDhceDBhXHgwY1x4
MDlceDBiXHgwZFx4MGVceDBmXHgxMFx4MDBceDAxXHgwMlx4MDFceDAyXHgwM1x4MDRceDAyXHgw
MVx4MDJceDAzXHgwNFx4MDFceDAyXHgwM1x4MDRceDBhXHgxNVx4MDFceDAxXHgwNVx4MDZceDE2
XHgwNVx4MDVceDA0XHg4ZFx4ODBceDgwXHg4MFx4MDBceDAzXHg3MFx4MDFceDE0XHgxNFx4NzBc
eDAxXHgwMVx4MDFceDcwXHgwMVx4MDFceDAxXHgwN1x4ODVceDgyXHg4MFx4ODBceDAwXHgxM1x4
MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDMzXHgzMlx4MDBceDEzXHgwOFx4NzRceDc5XHg3
MFx4NjVceDJkXHg2OVx4MzZceDM0XHgwMFx4MTRceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY2
XHgzM1x4MzJceDAwXHgxNVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDM2XHgzNFx4MDBc
eDE2XHgwYVx4NzRceDc5XHg3MFx4NjVceDJkXHg2OVx4NmVceDY0XHg2NVx4NzhceDAwXHgxN1x4
MGVceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjlceDMzXHgz
Mlx4MDBceDE4XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJk
XHg2OVx4MzZceDM0XHgwMFx4MTlceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJc
eDczXHg3NFx4MmRceDY2XHgzM1x4MzJceDAwXHgxYVx4MGVceDc0XHg3OVx4NzBceDY1XHgyZFx4
NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjZceDM2XHgzNFx4MDBceDFiXHgwZlx4NzRceDc5XHg3
MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjlceDMzXHgzMlx4MDBceDFj
XHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4Njlc
eDM2XHgzNFx4MDBceDFkXHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4
NmVceDY0XHgyZFx4NjZceDMzXHgzMlx4MDBceDFlXHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3
M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjZceDM2XHgzNFx4MDBceDFmXHgwOFx4NjRceDY5
XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MjBceDEzXHg2NFx4NjlceDczXHg3MFx4NjFc
eDc0XHg2M1x4NjhceDJkXHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYxXHg2Y1x4
MDBceDIxXHgwOFx4NjNceDYxXHg2Y1x4NmNceDJkXHg3NFx4NjFceDYyXHgwMFx4MjRceDAzXHg2
Nlx4NjFceDYzXHgwMFx4MjVceDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBceDI3XHgwM1x4NmZceDY0
XHg2NFx4MDBceDI4XHgwOVx4YWFceDgwXHg4MFx4ODBceDAwXHgwM1x4MDBceDQxXHgwMFx4MGJc
eDE0XHgwMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdceDBhXHgwOFx4MGJceDA5XHgyNVx4
MjZceDI3XHgyOFx4MGNceDBkXHgwZVx4MGZceDAyXHgwMVx4NDFceDAwXHgwYlx4MDBceDAxXHgy
Mlx4MDJceDAyXHg0MVx4MDBceDBiXHgwMFx4MDFceDIzXHgwYVx4OWZceDg1XHg4MFx4ODBceDAw
XHgyOVx4ODVceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceGIyXHgwMlx4MGJceDg1XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDQyXHhlNFx4MDJceDBiXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0M1x4
MDBceDIwXHg3M1x4NDVceDBiXHg4Ylx4ODBceDgwXHg4MFx4MDBceDAwXHg0NFx4MDBceDAwXHgw
MFx4MDBceDAwXHhjOFx4YWVceDQwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAw
XHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4
ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgw
MFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgw
XHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBc
eDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4
ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgw
Ylx4YTdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDBceDAwXHg0Mlx4MDBceDQx
XHgwMFx4MTNceDEyXHgwMFx4NDJceDAwXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHg0MVx4MDBceDQyXHgwMFx4NDFceDAwXHgxM1x4MTFceDAwXHg0MVx4MDBceDEzXHgwMFx4
MDBceDBiXHhhN1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMVx4MDBceDQxXHgw
MFx4MTNceDAxXHgwMFx4NDJceDAwXHg0MVx4MDBceDEzXHgxNFx4MDBceDQyXHgwMFx4NDRceDAw
XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDFceDAwXHg0Mlx4MDBceDQxXHgwMFx4MTNc
eDEzXHgwMFx4MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHgwMFx4NDFceDAwXHgxM1x4
MDZceDAwXHgwYlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDFceDAwXHgw
Ylx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgxM1x4MDJceDAwXHgwYlx4ODdceDgw
XHg4MFx4ODBceDAwXHgwMFx4NDFceDAyXHgxM1x4MDNceDAwXHgwYlx4ODdceDgwXHg4MFx4ODBc
eDAwXHgwMFx4NDFceDAzXHgxM1x4MDRceDAwXHgwYlx4OGFceDgwXHg4MFx4ODBceDAwXHgwMFx4
NDJceGU0XHgwMFx4NDFceDA1XHgxM1x4MDZceDAwXHgwYlx4ODlceDgwXHg4MFx4ODBceDAwXHgw
MFx4NDFceDIwXHg0MVx4MDRceDEzXHgwNVx4MDBceDBiXHg4YVx4ODBceDgwXHg4MFx4MDBceDAw
XHg0Mlx4YzBceDAwXHg0MVx4MDVceDEzXHgwNlx4MDBceDBiXHg4Y1x4ODBceDgwXHg4MFx4MDBc
eDAwXHg0M1x4YzNceGY1XHhhOFx4M2ZceDQxXHgwNlx4MTNceDA3XHgwMFx4MGJceDkwXHg4MFx4
ODBceDgwXHgwMFx4MDBceDQ0XHgzZFx4MGFceGQ3XHhhM1x4NzBceDNkXHhmYVx4M2ZceDQxXHgw
N1x4MTNceDA4XHgwMFx4MGJceDhlXHg4MFx4ODBceDgwXHgwMFx4MDBceDQzXHg2Nlx4NjZceDAw
XHg0Mlx4NDFceDIwXHg0MVx4MDhceDEzXHgwOVx4MDBceDBiXHg4Y1x4ODBceDgwXHg4MFx4MDBc
eDAwXHg0MVx4MjBceDQyXHhjMFx4MDBceDQxXHgwOVx4MTNceDBhXHgwMFx4MGJceDk1XHg4MFx4
ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHg1MFx4NDBceDQzXHgw
MFx4MDBceDAwXHg0Mlx4NDFceDBhXHgxM1x4MGJceDAwXHgwYlx4OTNceDgwXHg4MFx4ODBceDAw
XHgwMFx4NDJceGMwXHgwMFx4NDRceDY2XHg2Nlx4NjZceDY2XHg2Nlx4MDZceDUwXHg0MFx4NDFc
eDBiXHgxM1x4MGNceDAwXHgwYlx4ODlceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgyMFx4
MDBceDEzXHgwNlx4MDBceDBiXHg4OVx4ODBceDgwXHg4MFx4MDBceDAwXHg0Mlx4MDlceDIwXHgw
MFx4MTNceDBlXHgwMFx4MGJceDg1XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHhiM1x4MDJceDBi
XHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4YjRceDAyXHgwYlx4YWJceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MjBceDAwXHg0MVx4MDBceDQ2XHgwNFx4NDBceDQxXHgwMFx4MTNceDAxXHgwMFx4
MGJceDIwXHgwMFx4NDFceDAxXHg0Nlx4MDRceDQwXHg0MVx4MDBceDEzXHgwMVx4MDFceDBiXHgy
MFx4MDBceDQxXHgwMlx4NDZceDA0XHg0MFx4NDFceDAwXHgxM1x4MDFceDAyXHgwYlx4NDFceDAw
XHgwYlx4OGJceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg0Mlx4MDFceDQxXHgwZFx4MTNc
eDE2XHgwMFx4MGJceDlhXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NTBceDA0XHg3ZVx4
MjBceDAxXHgwNVx4MjBceDAwXHg0Mlx4MDFceDdkXHgyMFx4MDBceDIwXHgwMVx4N2VceDQxXHgw
ZFx4MTNceDE2XHgwMFx4MGJceDBiXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDQ1
XHgwNFx4N2ZceDQxXHgyY1x4MDVceDIwXHgwMFx4NDFceDAxXHg2Ylx4NDFceDBmXHgxM1x4MDVc
eDAwXHgwYlx4MGJceDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NDVceDA0XHg3Zlx4
NDFceGUzXHgwMFx4MDVceDIwXHgwMFx4NDFceDAxXHg2Ylx4NDFceDBlXHgxM1x4MDVceDAwXHgw
Ylx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMTMKK2Fzc2VydF9yZXR1
cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtaTMyIiwgW10pLCAzMDYpOworCisvLyByZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0OjIxNAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAw
XHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBc
eDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4
NjBceDAwXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2
NFx4NzVceDZjXHg2NVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDM2XHgzNFx4MDBceDA2
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDcz
XHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAz
XHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5Mlx4
ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4MDFceDQyXHhlNFx4MDJceDAxXHg1
MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10p
KTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtaTY0IiwgW10pLCBpbnQ2
NCgiMzU2IikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjE1CitydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZFx4MDJceDg0XHg4MVx4ODBc
eDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NzRceDc5XHg3MFx4
NjVceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2
Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcx
XHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4
NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgw
N1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlh
XHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBc
eDAwXHhiY1x4NDNceDAwXHgyMFx4NzNceDQ1XHhiY1x4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4
MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgp
ID0+IGNhbGwoJDEsICJ0eXBlLWYzMiIsIFtdKSwgMzg5MC4pCisKKy8vIHJldHVybl9jYWxsX2lu
ZGlyZWN0Lndhc3Q6MjE2CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAw
XHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFc
eDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4
MDBceDAxXHg3Y1x4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3
NVx4NmNceDY1XHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4MzZceDM0XHgwMFx4MDZceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
YVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgy
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNc
eDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4ODBceDgwXHgwMFx4MDFceDk4XHg4MFx4
ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiZFx4NDRceDAwXHgwMFx4MDBceDAwXHgw
MFx4YzhceGFlXHg0MFx4YmRceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9y
dHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAi
dHlwZS1mNjQiLCBbXSksIDM5NDAuKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIx
OAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4
MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2
Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2VceDAy
XHg4Nlx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGFc
eDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDZlXHg2NFx4NjVceDc4XHgwMFx4MDZceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVc
eDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3
NVx4NmVceDAwXHgwNlx4MGFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDFceDkyXHg4MFx4ODBceDgw
XHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHgwMVx4NDJceGU0XHgwMFx4MDFceDUxXHg0NVx4MGRc
eDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNz
ZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1pbmRleCIsIFtdKSwgaW50NjQoIjEwMCIp
KQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyMAorYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAidHlwZS1maXJzdC1pMzIiLCBbXSksIDMyKTsKKworLy8gcmV0dXJuX2NhbGxf
aW5kaXJlY3Qud2FzdDoyMjEKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4
MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgw
MVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYw
XHgwMFx4MDFceDdlXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4
MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgw
MFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4
N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OThceDgw
XHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBc
eDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhw
b3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEs
ICJ0eXBlLWZpcnN0LWk2NCIsIFtdKSwgaW50NjQoIjY0IikpCisKKy8vIHJldHVybl9jYWxsX2lu
ZGlyZWN0Lndhc3Q6MjIyCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAw
XHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFc
eDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4
MDBceDAxXHg3ZFx4MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3
NVx4NmNceDY1XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJk
XHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhi
Y1x4NDNceGMzXHhmNVx4YThceDNmXHhiY1x4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBi
IiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNh
bGwoJDEsICJ0eXBlLWZpcnN0LWYzMiIsIFtdKSwgMS4zMjAwMDAwNTI0NSkKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDoyMjMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYw
XHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4
N2ZceDYwXHgwMFx4MDFceDdjXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2
Zlx4NjRceDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDcz
XHg3NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4
NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZl
XHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBc
eDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4
OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgx
MFx4MDBceGJkXHg0NFx4M2RceDBhXHhkN1x4YTNceDcwXHgzZFx4ZmFceDNmXHhiZFx4NTFceDQ1
XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAv
LyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWY2NCIsIFtdKSwgMS42
NCkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMjUKK2Fzc2VydF9yZXR1cm4oKCkg
PT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWkzMiIsIFtdKSwgMzIpOworCisvLyByZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0OjIyNgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAw
XHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBc
eDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4
NjBceDAwXHgwMVx4N2VceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2
NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZl
XHg2NFx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4
NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZl
XHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBc
eDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4
OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgx
MFx4MDBceDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBi
IiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNh
bGwoJDEsICJ0eXBlLXNlY29uZC1pNjQiLCBbXSksIGludDY0KCI2NCIpKQorCisvLyByZXR1cm5f
Y2FsbF9pbmRpcmVjdC53YXN0OjIyNworcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBc
eDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4
NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3
Zlx4NjBceDAwXHgwMVx4N2RceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZm
XHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZc
eDZlXHg2NFx4MmRceDY2XHgzM1x4MzJceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
MVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4
NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2
NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVc
eDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgw
YVx4OWFceDgwXHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQw
XHgxMFx4MDBceGJjXHg0M1x4MDBceDAwXHgwMFx4NDJceGJjXHg0Nlx4NDVceDBkXHgwMFx4MGZc
eDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1
cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWYzMiIsIFtdKSwgMzIuKQorCisvLyByZXR1
cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyOAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4
NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgw
MVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAx
XHg3Zlx4NjBceDAwXHgwMVx4N2NceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRc
eDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4
NmZceDZlXHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHgxMFx4MDBceGJkXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBceDQwXHhiZFx4
NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtd
KSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1mNjQiLCBb
XSksIDY0LjEpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMwCitydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNVx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdlXHgwMlx4ODRc
eDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg2NFx4
NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHg0MVx4MDVceDQyXHgwMlx4MTBceDAwXHgwMVx4NDJceDAyXHgwMVx4NTFceDQ1XHgwZFx4
MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3Nl
cnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFs1LCBpbnQ2NCgiMiIpXSksIGlu
dDY0KCIyIikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMxCitydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNVx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdlXHgwMlx4ODRc
eDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg2NFx4
NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHg0MVx4MDVceDQyXHgwNVx4MTBceDAwXHgwMVx4NDJceDA1XHgwMVx4NTFceDQ1XHgwZFx4
MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3Nl
cnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFs1LCBpbnQ2NCgiNSIpXSksIGlu
dDY0KCI1IikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMyCitydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNVx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdlXHgwMlx4ODRc
eDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg2NFx4
NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMVx4OTZceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHg0MVx4MGNceDQyXHgwNVx4MTBceDAwXHgwMVx4NDJceGY4XHgwMFx4MDFceDUxXHg0NVx4
MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8g
YXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTIsIGludDY0KCI1Iild
KSwgaW50NjQoIjEyMCIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIzMworcnVu
KCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
MVx4YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZm
XHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZc
eDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4
MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgw
OFx4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4
NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZl
XHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4
MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1
Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgw
XHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVc
eDAwXHgwNlx4MGFceDliXHg4MFx4ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4
MDBceDAyXHg0MFx4NDFceDExXHg0Mlx4MDJceDEwXHgwMFx4MDFceDQyXHgwMlx4MDFceDUxXHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTcsIGludDY0KCIy
IildKSwgaW50NjQoIjIiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMzQKK2Fz
c2VydF90cmFwKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4
MDBceDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3
Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAy
XHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2Vc
eDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4
NmNceDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4
NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4
MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcy
XHg3NVx4NmVceDAwXHgwNlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDFceDhkXHg4MFx4ODBc
eDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDAwXHg0Mlx4MDJceDEwXHgwMFx4MGZceDBiXHgwMFx4
MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF90cmFwKCgpID0+IGNh
bGwoJDEsICJkaXNwYXRjaCIsIFswLCBpbnQ2NCgiMiIpXSkpCisKKy8vIHJldHVybl9jYWxsX2lu
ZGlyZWN0Lndhc3Q6MjM1Cithc3NlcnRfdHJhcCgoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4MDdceDYw
XHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4
N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNceDcwXHg2MVx4NzRceDYz
XHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2
XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5M1x4ODBceDgwXHg4MFx4
MDBceDAxXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgwZlx4NDJceDAyXHgx
MFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBh
c3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTUsIGludDY0KCIyIildKSkK
KworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMzYKK2Fzc2VydF90cmFwKCgpID0+IGNh
bGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTVceDgw
XHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFc
eDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4
NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4MDJceDg0XHg4
MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NjRceDY5
XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJc
eDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4
NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1
XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4
MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0
MFx4NDFceDE0XHg0Mlx4MDJceDEwXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSks
ICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIs
IFsyMCwgaW50NjQoIjIiKV0pKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIzNwor
YXNzZXJ0X3RyYXAoKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAw
XHgwMFx4MDBceDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFc
eDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4
MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3
ZVx4MDFceDdlXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1
XHg2Y1x4NjVceDA4XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4
NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMVx4OGRceDgwXHg4
MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0MVx4N2ZceDQyXHgwMlx4MTBceDAwXHgwZlx4MGJceDAw
XHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAoKCkgPT4g
Y2FsbCgkMSwgImRpc3BhdGNoIiwgWy0xLCBpbnQ2NCgiMiIpXSkpCisKKy8vIHJldHVybl9jYWxs
X2luZGlyZWN0Lndhc3Q6MjM4Cithc3NlcnRfdHJhcCgoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4MDdc
eDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4
MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgw
MVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNceDcwXHg2MVx4NzRc
eDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5N1x4ODBceDgwXHg4
MFx4MDBceDAxXHg5MVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHhlN1x4ODRceGNl
XHhjMlx4MDRceDQyXHgwMlx4MTBceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwg
ICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoIiwg
WzFfMjEzXzQzMl80MjMsIGludDY0KCIyIildKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDoyNDAKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgw
MVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYw
XHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2Zc
eDAxXHg3ZVx4MDJceDhmXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4
NmNceDY1XHgxM1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgyZFx4NzNceDc0XHg3
Mlx4NzVceDYzXHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHg0MVx4MDVceDEwXHgwMFx4MDFceDQyXHgwOVx4MDFceDUxXHg0NVx4MGRceDAwXHgw
Zlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFs1XSksIGludDY0KCI5
IikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjQxCitydW4oKCkgPT4gY2FsbChp
bnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgw
XHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZc
eDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4
MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4ODFceDgwXHg4
MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2OVx4NzNceDcw
XHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1XHg3Mlx4NjFc
eDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZc
eDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk5XHg4MFx4ODBceDgwXHgw
MFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDA1XHgxMFx4MDBceDAx
XHg0Mlx4MDlceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQx
KSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImRpc3Bh
dGNoLXN0cnVjdHVyYWwiLCBbNV0pLCBpbnQ2NCgiOSIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRp
cmVjdC53YXN0OjI0MgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4
NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3
Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAx
XHg3Zlx4MDFceDdlXHgwMlx4OGZceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDEzXHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDJkXHg3M1x4
NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYxXHg2Y1x4MDBceDA2XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4Njlc
eDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2
ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDcz
XHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4
NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4
MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZl
XHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4MFx4MDBc
eDAwXHgwMlx4NDBceDQxXHgwY1x4MTBceDAwXHgwMVx4NDJceDgwXHg5M1x4MTZceDAxXHg1MVx4
NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsg
IC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBb
MTJdKSwgaW50NjQoIjM2Ml84ODAiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoy
NDMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2Zc
eDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4
NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2ZceDAxXHg3
ZVx4MDJceDhmXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1
XHgxM1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgyZFx4NzNceDc0XHg3Mlx4NzVc
eDYzXHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
MVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4
NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2
NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVc
eDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgw
YVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQw
XHg0MVx4MTFceDEwXHgwMFx4MDFceDQyXHgwOVx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJc
eDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigo
KSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxN10pLCBpbnQ2NCgiOSIpKQor
CisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0NAorYXNzZXJ0X3RyYXAoKCkgPT4gY2Fs
bChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBc
eDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4
NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2
MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4ODFceDgw
XHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2OVx4NzNc
eDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1XHg3Mlx4
NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDkxXHg4MFx4ODBceDgw
XHgwMFx4MDFceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDBiXHgxMFx4MDBc
eDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRf
dHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxMV0pKQorCisvLyBy
ZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0NQorYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbChpbnN0
YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4
MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAx
XHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJc
eDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4ODFceDgwXHg4MFx4
MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2OVx4NzNceDcwXHg2
MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1XHg3Mlx4NjFceDZj
XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAw
XHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDkxXHg4MFx4ODBceDgwXHgwMFx4
MDFceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDEwXHgxMFx4MDBceDBmXHgw
Ylx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfdHJhcCgo
KSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxNl0pKQorCisvLyByZXR1cm5f
Y2FsbF9pbmRpcmVjdC53YXN0OjI0NworYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiY2Fs
bC10YWIiLCBbMF0pLCAzMDYpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0OAor
YXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiY2FsbC10YWIiLCBbMV0pLCAzMDcpOworCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0OQorYXNzZXJ0X3JldHVybigoKSA9PiBjYWxs
KCQxLCAiY2FsbC10YWIiLCBbMl0pLCAzMDgpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53
YXN0OjI1MQorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAx
XHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBc
eDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4
MDFceDdlXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2
Y1x4NjVceDAzXHg2Nlx4NjFceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1
XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVc
eDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2
ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAw
XHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFc
eDk5XHg4MFx4ODBceDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4
NDJceDAwXHgxMFx4MDBceDAxXHg0Mlx4MDFceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgw
MFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkg
PT4gY2FsbCgkMSwgImZhYyIsIFtpbnQ2NCgiMCIpXSksIGludDY0KCIxIikpCisKKy8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6MjUyCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2
MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAx
XHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFc
eDdmXHg2MFx4MDFceDdlXHgwMVx4N2VceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgwNlx4
NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDY2XHg2MVx4NjNceDAwXHgwNlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNc
eDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3
NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4
NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1
XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MDJceDQwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFceDUxXHg0NVx4
MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8g
YXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZmFjIiwgW2ludDY0KCIxIildKSwgaW50NjQo
IjEiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNTMKK3J1bigoKSA9PiBjYWxs
KGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4
ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2
Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYw
XHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3ZVx4MDJceGZmXHg4MFx4ODBc
eDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NjZceDYxXHg2M1x4
MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4
NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4
MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgw
MFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4MDBceDAx
XHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwNVx4MTBceDAwXHgwMVx4NDJc
eGY4XHgwMFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEp
KSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZmFjIiwg
W2ludDY0KCI1IildKSwgaW50NjQoIjEyMCIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53
YXN0OjI1NAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAx
XHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBc
eDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4
MDFceDdlXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2
Y1x4NjVceDAzXHg2Nlx4NjFceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1
XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVc
eDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2
ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAw
XHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFc
eGEyXHg4MFx4ODBceDgwXHgwMFx4MDFceDljXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4
NDJceDE5XHgxMFx4MDBceDAxXHg0Mlx4ODBceDgwXHg4MFx4ZGVceDg3XHg5Mlx4ZWNceGNmXHhl
MVx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSks
ICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImZhYyIsIFtp
bnQ2NCgiMjUiKV0pLCBpbnQ2NCgiN18wMzRfNTM1XzI3N181NzNfOTYzXzc3NiIpKQorCisvLyBy
ZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI1NgorYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAiZXZlbiIsIFswXSksIDQ0KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNTcK
K2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV2ZW4iLCBbMV0pLCA5OSk7CisKKy8vIHJl
dHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjU4Cithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEs
ICJldmVuIiwgWzEwMF0pLCA0NCk7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjU5
Cithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzc3XSksIDk5KTsKKworLy8g
cmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNjAKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgk
MSwgImV2ZW4iLCBbMTAwXzAwMF0pLCA0NCk7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndh
c3Q6MjYxCithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzExMV8xMTFdKSwg
OTkpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2MgorYXNzZXJ0X3JldHVybigo
KSA9PiBjYWxsKCQxLCAib2RkIiwgWzBdKSwgOTkpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVj
dC53YXN0OjI2MworYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzFdKSwgNDQp
OworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2NAorYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAib2RkIiwgWzIwMF0pLCA5OSk7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6MjY1Cithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbNzddKSwgNDQp
OworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2NgorYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAib2RkIiwgWzIwMF8wMDJdKSwgOTkpOworCisvLyByZXR1cm5fY2FsbF9pbmRp
cmVjdC53YXN0OjI2NworYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzMwMF8w
MDNdKSwgNDQpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI3MgorYXNzZXJ0X21h
bGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcx
XHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoy
ODQKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2
NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxsX2lu
ZGlyZWN0Lndhc3Q6Mjk2Cithc3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4
NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyBy
ZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjMwOAorYXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRc
eDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4
M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDozMjAKK2Fzc2VydF9tYWxmb3Jt
ZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVc
eDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MzMyCith
c3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0
XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVj
dC53YXN0OjM0NAorYXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3
Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDozNTEKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4
NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7
CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MzYxCithc3NlcnRfbWFsZm9ybWVkKCJc
eDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4
NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjM3MQorYXNzZXJ0
X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBc
eDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2Fz
dDozODMKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZk
XHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxs
X2luZGlyZWN0Lndhc3Q6Mzk4Cithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAwXHgwM1x4
ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDBhXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAxXHg4
N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJl
dHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDA2CisvLyBOT1RFOgorLy8gICAobW9kdWxlCisvLyAg
ICAodHlwZSAoZnVuYykpCisvLyAgICAodGFibGUgMCBmdW5jcmVmKQorLy8gICAgKGZ1bmMgJHR5
cGUtdm9pZC12cy1udW0gKGkzMi5lcXogKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlIDApIChp
MzIuY29uc3QgMCkpKSkKKy8vICApCisvLyBUaGlzIHZhbGlkYXRlcyBzaW5jZSB1bnJlYWNoYWJs
ZSBiaW5hcnkgb3BzIGFyZSBpZ25vcmVkIGluIFdhc21GdW5jdGlvblBhcnNlci4KKy8vYXNzZXJ0
X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4
MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAw
XHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDhlXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAwXHgwMFx4
NDVceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDE0Cithc3NlcnRfaW52
YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4ODBceDgwXHg4
MFx4MDBceDAyXHg2MFx4MDBceDAxXHg3ZVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgw
XHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFc
eDhlXHg4MFx4ODBceDgwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4
MTNceDAwXHgwMFx4NDVceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDIz
Cithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4
OFx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDFceDdmXHgwMFx4NjBceDAwXHgwMFx4MDNceDgy
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBc
eDAwXHgwMFx4MGFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDFceDg3XHg4MFx4ODBceDgwXHgwMFx4
MDBceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDo0MzEKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMlx4N2NceDdmXHgwMFx4NjBceDAw
XHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBc
eDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDFceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2Nh
bGxfaW5kaXJlY3Qud2FzdDo0NDAKK2xldCAkMiA9IGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZk
XHgwMVx4MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgwMFx4MDBc
eDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4
MDFceDcwXHgwMFx4MDBceDBhXHg4Zlx4ODBceDgwXHg4MFx4MDBceDAxXHg4OVx4ODBceDgwXHg4
MFx4MDBceDAwXHg0MVx4MDFceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDo0NDYKK2xldCAkMyA9IGluc3RhbmNlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgwMFx4
MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4ODBceDgwXHgw
MFx4MDFceDcwXHgwMFx4MDBceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5Mlx4ODBceDgw
XHg4MFx4MDBceDAwXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDQwXHg0MVx4MDFc
eDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2Fz
dDo0NTQKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4
MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMVx4N2ZceDAwXHg2MFx4MDBceDAwXHgw
M1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAx
XHg3MFx4MDBceDAwXHgwYVx4OGVceDgwXHg4MFx4ODBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBc
eDAwXHgwMFx4NDFceDAxXHgwMVx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxf
aW5kaXJlY3Qud2FzdDo0NjIKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMVx4N2ZceDAwXHg2
MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4ODBceDgw
XHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OGZceDgwXHg4MFx4ODBceDAwXHgwMVx4ODlc
eDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHg0Mlx4MDFceDEzXHgwMFx4MDBceDBiIik7CisK
Ky8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDcxCithc3NlcnRfaW52YWxpZCgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2
MFx4MDJceDdmXHg3Zlx4MDBceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAx
XHgwMVx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg5MFx4ODBc
eDgwXHg4MFx4MDBceDAxXHg4YVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMVx4NDFceDAxXHg0MVx4
MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDgx
Cithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4
OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDJceDdmXHg3Zlx4MDBceDYwXHgwMFx4MDBceDAz
XHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDcwXHgwMFx4MDBceDBhXHg5MFx4ODBceDgwXHg4MFx4MDBceDAxXHg4YVx4ODBceDgwXHg4MFx4
MDBceDAwXHg0MVx4MDFceDAxXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6NDkxCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDJceDdm
XHg3Y1x4MDBceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4MDRc
eDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg5OFx4ODBceDgwXHg4MFx4
MDBceDAxXHg5Mlx4ODBceDgwXHg4MFx4MDBceDAwXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgw
MFx4ZjBceDNmXHg0MVx4MDFceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDo1MDEKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZk
XHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMlx4N2Nc
eDdmXHgwMFx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4
ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDk4XHg4MFx4ODBceDgwXHgw
MFx4MDFceDkyXHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMVx4NDRceDAwXHgwMFx4MDBceDAw
XHgwMFx4MDBceGYwXHgzZlx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5f
Y2FsbF9pbmRpcmVjdC53YXN0OjUxNQorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4
MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgw
MVx4NzBceDAwXHgwMFx4MGFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDFceDg3XHg4MFx4ODBceDgw
XHgwMFx4MDBceDQxXHgwMFx4MTNceDAxXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDo1MjIKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgwMFx4MDBceDAzXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgw
MFx4MDBceDBhXHg5MVx4ODBceDgwXHg4MFx4MDBceDAxXHg4Ylx4ODBceDgwXHg4MFx4MDBceDAw
XHg0MVx4MDBceDEzXHg5NFx4OThceGRiXHhlMlx4MDNceDAwXHgwYiIpOworCisvLyByZXR1cm5f
Y2FsbF9pbmRpcmVjdC53YXN0OjUzMworYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwNFx4ODVceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAxXHgwMlx4
MDJceDA5XHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4NDFceDAwXHgwYlx4MDJceDAwXHgw
MCIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLmpz
IGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTgwZjQzMmQzZTU5Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLmpzCkBAIC0wLDAgKzEsNzEw
IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAiLi4vYXNzZXJ0LmpzIjsKK2ltcG9ydCBCdWls
ZGVyIGZyb20gIi4uL0J1aWxkZXIuanMiOworCitjb25zdCBkZWZhdWx0RXhwb3J0U2l6ZSA9IDU7
Citjb25zdCBzaWduYXR1cmVNYXhBcml0eSA9IDUwOworY29uc3QgdmVyYm9zZSA9IDA7CisKK2Ns
YXNzIFR5cGVHZW5lcmF0b3IgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICBjb25zdCBmbG9hdDY0
Rmxvb3IgPSAodmFsdWUpID0+IHsKKyAgICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlKTsKKyAg
ICB9OworICAgIGNvbnN0IGZsb2F0NjRGbG9hdDMyID0gKHZhbHVlKSA9PiB7CisgICAgICByZXR1
cm4gTWF0aC5mcm91bmQodmFsdWUpOworICAgIH07CisgICAgY29uc3QgZmxvYXQ2NCA9ICh2YWx1
ZSkgPT4geworICAgICAgcmV0dXJuIHZhbHVlOworICAgIH07CisgICAgdGhpcy5nZW5lcmF0b3JN
YXAgPSBuZXcgTWFwKCk7CisgICAgdGhpcy5nZW5lcmF0b3JNYXAuc2V0KCJpMzIiLCB7CisgICAg
ICB0b0pTOiBmbG9hdDY0Rmxvb3IsCisgICAgICB0b0J1aWxkZXJUeXBlOiAodmFsdWUsIGJ1aWxk
ZXIpID0+IHsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuSTMyQ29uc3QodmFsdWUpOworICAgICAg
fSwKKyAgICAgIHRvQnVpbGRlckxvYWQ6IChpbW0xLCBpbW0yLCBidWlsZGVyKSA9PiB7CisgICAg
ICAgIHJldHVybiBidWlsZGVyLkkzMkxvYWQoaW1tMSwgaW1tMik7CisgICAgICB9LAorICAgICAg
dG9CdWlsZGVyU3RvcmU6IChpbW0xLCBpbW0yLCBidWlsZGVyKSA9PiB7CisgICAgICAgIHJldHVy
biBidWlsZGVyLkkzMlN0b3JlKGltbTEsIGltbTIpOworICAgICAgfSwKKyAgICB9KTsKKyAgICB0
aGlzLmdlbmVyYXRvck1hcC5zZXQoImk2NCIsIHsKKyAgICAgIHRvSlM6ICh2YWx1ZSkgPT4gewor
ICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih2YWx1ZSk7CisgICAgICB9LAorICAgICAgdG9CdWls
ZGVyVHlwZTogKHZhbHVlLCBidWlsZGVyKSA9PiB7CisgICAgICAgIHJldHVybiBidWlsZGVyLkk2
NENvbnN0KHZhbHVlKTsKKyAgICAgIH0sCisgICAgICB0b0J1aWxkZXJMb2FkOiAoaW1tMSwgaW1t
MiwgYnVpbGRlcikgPT4geworICAgICAgICByZXR1cm4gYnVpbGRlci5JNjRMb2FkKGltbTEsIGlt
bTIpOworICAgICAgfSwKKyAgICAgIHRvQnVpbGRlclN0b3JlOiAoaW1tMSwgaW1tMiwgYnVpbGRl
cikgPT4geworICAgICAgICByZXR1cm4gYnVpbGRlci5JNjRTdG9yZShpbW0xLCBpbW0yKTsKKyAg
ICAgIH0sCisgICAgfSk7CisgICAgdGhpcy5nZW5lcmF0b3JNYXAuc2V0KCJmMzIiLCB7CisgICAg
ICB0b0pTOiBmbG9hdDY0RmxvYXQzMiwKKyAgICAgIHRvQnVpbGRlclR5cGU6ICh2YWx1ZSwgYnVp
bGRlcikgPT4geworICAgICAgICByZXR1cm4gYnVpbGRlci5GMzJDb25zdCh2YWx1ZSk7CisgICAg
ICB9LAorICAgICAgdG9CdWlsZGVyTG9hZDogKGltbTEsIGltbTIsIGJ1aWxkZXIpID0+IHsKKyAg
ICAgICAgcmV0dXJuIGJ1aWxkZXIuRjMyTG9hZChpbW0xLCBpbW0yKTsKKyAgICAgIH0sCisgICAg
ICB0b0J1aWxkZXJTdG9yZTogKGltbTEsIGltbTIsIGJ1aWxkZXIpID0+IHsKKyAgICAgICAgcmV0
dXJuIGJ1aWxkZXIuRjMyU3RvcmUoaW1tMSwgaW1tMik7CisgICAgICB9LAorICAgIH0pOworICAg
IHRoaXMuZ2VuZXJhdG9yTWFwLnNldCgiZjY0IiwgeworICAgICAgdG9KUzogZmxvYXQ2NCwKKyAg
ICAgIHRvQnVpbGRlclR5cGU6ICh2YWx1ZSwgYnVpbGRlcikgPT4geworICAgICAgICByZXR1cm4g
YnVpbGRlci5GNjRDb25zdCh2YWx1ZSk7CisgICAgICB9LAorICAgICAgdG9CdWlsZGVyTG9hZDog
KGltbTEsIGltbTIsIGJ1aWxkZXIpID0+IHsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuRjY0TG9h
ZChpbW0xLCBpbW0yKTsKKyAgICAgIH0sCisgICAgICB0b0J1aWxkZXJTdG9yZTogKGltbTEsIGlt
bTIsIGJ1aWxkZXIpID0+IHsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuRjY0U3RvcmUoaW1tMSwg
aW1tMik7CisgICAgICB9LAorICAgIH0pOworICAgIHRoaXMudHlwZXMgPSBBcnJheS5mcm9tKHRo
aXMuZ2VuZXJhdG9yTWFwLmtleXMoKSk7CisgIH0KKyAgZ2V0KGtleSkgeworICAgIHJldHVybiB0
aGlzLmdlbmVyYXRvck1hcC5nZXQoa2V5KTsKKyAgfQorICBnZXRSYW5kb21UeXBlKCkgeworICAg
IGNvbnN0IGxlbmd0aCA9IHRoaXMuZ2VuZXJhdG9yTWFwLnNpemU7CisgICAgY29uc3QgaW5kZXgg
PSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBsZW5ndGgpOworICAgIHJldHVybiB0aGlzLnR5
cGVzW2luZGV4XTsKKyAgfQorICBjcmVhdGVTaWduYXR1cmUocGFyYW1zTGVuLCByZXR1cm5MZW4s
IHR5cGUpIHsKKyAgICBwYXJhbXNMZW4gPSBwYXJhbXNMZW4gPT0gdW5kZWZpbmVkCisgICAgICA/
IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHNpZ25hdHVyZU1heEFyaXR5KQorICAgICAgOiBw
YXJhbXNMZW47CisgICAgcmV0dXJuTGVuID0gcmV0dXJuTGVuID09IHVuZGVmaW5lZAorICAgICAg
PyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBzaWduYXR1cmVNYXhBcml0eSkKKyAgICAgIDog
cmV0dXJuTGVuOworICAgIHJldHVybiB7CisgICAgICBwYXJhbXM6IEFycmF5LmZyb20oCisgICAg
ICAgIHsgbGVuZ3RoOiBwYXJhbXNMZW4gfSwKKyAgICAgICAgKCkgPT4gdHlwZSA/IHR5cGUgOiB0
eXBlR2VuZXJhdG9yLmdldFJhbmRvbVR5cGUoKSwKKyAgICAgICksCisgICAgICByZXQ6IEFycmF5
LmZyb20oCisgICAgICAgIHsgbGVuZ3RoOiByZXR1cm5MZW4gfSwKKyAgICAgICAgKCkgPT4gdHlw
ZSA/IHR5cGUgOiB0eXBlR2VuZXJhdG9yLmdldFJhbmRvbVR5cGUoKSwKKyAgICAgICksCisgICAg
fTsKKyAgfQorICBqc0FyZ0Zyb21XYXNtVHlwZSh2YWx1ZSwgdHlwZSkgeworICAgIGNvbnN0IGVu
dHJ5ID0gdGhpcy5nZW5lcmF0b3JNYXAuZ2V0KHR5cGUpOworICAgIGlmIChlbnRyeSA9PSB1bmRl
ZmluZWQpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcihgZW50cnkgbm90IGZvdW5kOiAke3R5cGV9
YCk7CisgICAgfQorICAgIHJldHVybiBlbnRyeS50b0pTKHZhbHVlKTsKKyAgfQorICBidWlsZGVy
TG9hZEZyb21XYXNtVHlwZShpbW0xLCBpbW0yLCB0eXBlLCBidWlsZGVyKSB7CisgICAgY29uc3Qg
ZW50cnkgPSB0aGlzLmdlbmVyYXRvck1hcC5nZXQodHlwZSk7CisgICAgaWYgKGVudHJ5ID09IHVu
ZGVmaW5lZCkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKGBlbnRyeSBub3QgZm91bmQ6ICR7dHlw
ZX1gKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJ5LnRvQnVpbGRlckxvYWQoaW1tMSwgaW1tMiwg
YnVpbGRlcik7CisgIH0KKyAganNBcmdGcm9tV2FzbVNpZ25hdHVyZSh2YWx1ZSwgdHlwZSkgewor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgY2FzZSAiaTMyIjoKKyAgICAgICAgcmV0dXJuIE1h
dGguZmxvb3IodmFsdWUpOworICAgICAgY2FzZSAiaTY0IjoKKyAgICAgICAgcmV0dXJuIEJpZ0lu
dChNYXRoLmZsb29yKHZhbHVlKSk7CisgICAgICBjYXNlICJmMzIiOgorICAgICAgICByZXR1cm4g
TWF0aC5mcm91bmQodmFsdWUpOworICAgICAgY2FzZSAiZjY0IjoKKyAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgIH0KKyAgfQorICBqc0FyZ3NGcm9tV2FzbVBhcmFtcyhwYXJhbXMpIHsKKyAgICBj
b25zdCB2YWx1ZXMgPSBBcnJheS5mcm9tKHBhcmFtcywgKCkgPT4geworICAgICAgcmV0dXJuIE1h
dGgucmFuZG9tKCkgKiAweDIwOworICAgIH0pOworICAgIHJldHVybiBBcnJheS5mcm9tKHZhbHVl
cywgKHZhbCwgaW5kZXgpID0+IHsKKyAgICAgIHJldHVybiB0aGlzLmpzQXJnRnJvbVdhc21TaWdu
YXR1cmUodmFsLCBwYXJhbXNbaW5kZXhdKTsKKyAgICB9KTsKKyAgfQorICBidWlsZGVyVHlwZUZy
b21XYXNtVHlwZSh2YWx1ZSwgdHlwZSwgYnVpbGRlcikgeworICAgIGNvbnN0IGVudHJ5ID0gdGhp
cy5nZW5lcmF0b3JNYXAuZ2V0KHR5cGUpOworICAgIGlmIChlbnRyeSA9PSB1bmRlZmluZWQpIHsK
KyAgICAgIHRocm93IG5ldyBFcnJvcihgZW50cnkgbm90IGZvdW5kOiAke3R5cGV9YCk7CisgICAg
fQorICAgIHJldHVybiBlbnRyeS50b0J1aWxkZXJUeXBlKHZhbHVlLCBidWlsZGVyKTsKKyAgfQor
fQorCitjb25zdCB0eXBlR2VuZXJhdG9yID0gbmV3IFR5cGVHZW5lcmF0b3IoKTsKKworLy8gQnVp
bGRlciBoZWxwZXJzCisKK2NvbnN0IGNyZWF0ZUJ1aWxkZXIgPSAoYnVpbGRlckluZm8pID0+IHsK
KyAgY29uc3QgZnVuYyA9IGJ1aWxkZXJJbmZvWyJmdW5jIl07CisKKyAgY29uc3QgaW1wb3J0cyA9
IGJ1aWxkZXJJbmZvWyJpbXBvcnRzIl07CisgIGNvbnN0IHR5cGVzID0gYnVpbGRlckluZm9bInR5
cGVzIl07CisgIGNvbnN0IGV4cG9ydHMgPSBidWlsZGVySW5mb1siZXhwb3J0cyJdOworICBjb25z
dCB1c2VSZXR1cm5DYWxsID0gYnVpbGRlckluZm9bInVzZVJldHVybkNhbGwiXTsKKworICBsZXQg
YnVpbGRlciA9IG5ldyBCdWlsZGVyKCk7CisgIGJ1aWxkZXIgPSBjcmVhdGVUeXBlcyhidWlsZGVy
LCB0eXBlcyk7CisgIGJ1aWxkZXIgPSBjcmVhdGVJbXBvcnRzKGJ1aWxkZXIsIGltcG9ydHMpLkZ1
bmN0aW9uKCkuRW5kKCk7CisgIGlmIChidWlsZGVySW5mb1sidGFibGUiXSkKKyAgICBidWlsZGVy
ID0gYnVpbGRlci5UYWJsZSgpLlRhYmxlKGJ1aWxkZXJJbmZvWyJ0YWJsZSJdKS5FbmQoKTsKKyAg
YnVpbGRlciA9IGNyZWF0ZUV4cG9ydHMoYnVpbGRlciwgZXhwb3J0cyk7CisgIGlmIChidWlsZGVy
SW5mb1siZWxlbWVudCJdKQorICAgIGJ1aWxkZXIgPSBidWlsZGVyLkVsZW1lbnQoKS5FbGVtZW50
KGJ1aWxkZXJJbmZvWyJlbGVtZW50Il0pLkVuZCgpOworICByZXR1cm4gY3JlYXRlQ29kZShidWls
ZGVyLCBmdW5jLCB1c2VSZXR1cm5DYWxsKTsKK307CisKK2NvbnN0IGNyZWF0ZUltcG9ydHMgPSAo
YnVpbGRlciwgaW1wb3J0cykgPT4geworICBpZiAoaW1wb3J0cyA9PSB1bmRlZmluZWQgfHwgaW1w
b3J0c1siaW1wIl0gPT0gdW5kZWZpbmVkKSB7CisgICAgcmV0dXJuIGJ1aWxkZXI7CisgIH0KKyAg
YnVpbGRlciA9IGJ1aWxkZXIuSW1wb3J0KCk7CisgIGZvciAoY29uc3QgaW1wb3J0VHlwZSBvZiBP
YmplY3Qua2V5cyhpbXBvcnRzWyJpbXAiXSkpIHsKKyAgICBzd2l0Y2ggKGltcG9ydFR5cGUpIHsK
KyAgICAgIGNhc2UgIm1lbW9yeSI6CisgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLk1lbW9yeSgi
aW1wIiwgIm1lbW9yeSIsIGltcG9ydHNbImltcCJdW2ltcG9ydFR5cGVdKTsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlICJ0YWJsZSI6CisgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLlRhYmxl
KCJpbXAiLCAidGFibGUiLCBpbXBvcnRzWyJpbXAiXVtpbXBvcnRUeXBlXSk7CisgICAgICAgIGJy
ZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuRnVuY3Rpb24o
CisgICAgICAgICAgImltcCIsCisgICAgICAgICAgaW1wb3J0VHlwZSwKKyAgICAgICAgICBpbXBv
cnRzWyJpbXAiXVtpbXBvcnRUeXBlXSwKKyAgICAgICAgKTsKKyAgICB9CisgIH0KKyAgcmV0dXJu
IGJ1aWxkZXIuRW5kKCk7Cit9OworCitjb25zdCBjcmVhdGVFeHBvcnRzID0gKGJ1aWxkZXIsIGZ1
bmN0aW9ucykgPT4geworICBsZXQgbmV3QnVpbGRlciA9IGJ1aWxkZXIuRXhwb3J0KCk7CisgIGlm
IChmdW5jdGlvbnMgPT0gdW5kZWZpbmVkKSB7CisgICAgcmV0dXJuIG5ld0J1aWxkZXIuRW5kKCk7
CisgIH0KKyAgZm9yIChjb25zdCBmIG9mIGZ1bmN0aW9ucykgeworICAgIG5ld0J1aWxkZXIgPSBu
ZXdCdWlsZGVyLkZ1bmN0aW9uKGZbIm5hbWUiXSk7CisgIH0KKyAgcmV0dXJuIG5ld0J1aWxkZXIu
RW5kKCk7Cit9OworCitjb25zdCBjcmVhdGVDb2RlID0gKGJ1aWxkZXIsIGZ1bmN0aW9ucywgdXNl
UmV0dXJuQ2FsbCkgPT4geworICBsZXQgbmV3QnVpbGRlciA9IGJ1aWxkZXIuQ29kZSgpOworICBm
b3IgKGNvbnN0IGYgb2YgZnVuY3Rpb25zKSB7CisgICAgbmV3QnVpbGRlciA9IGZbImJvZHkiXShu
ZXdCdWlsZGVyLCB1c2VSZXR1cm5DYWxsKTsKKyAgfQorICByZXR1cm4gbmV3QnVpbGRlci5FbmQo
KTsKK307CisKK2NvbnN0IGNyZWF0ZVR5cGVzID0gKGJ1aWxkZXIsIHNpZ25hdHVyZXMpID0+IHsK
KyAgYnVpbGRlciA9IGJ1aWxkZXIuVHlwZSgpOworICBpZiAoc2lnbmF0dXJlcyA9PSB1bmRlZmlu
ZWQpIHsKKyAgICByZXR1cm4gYnVpbGRlci5FbmQoKTsKKyAgfQorICBmb3IgKGNvbnN0IHMgb2Yg
c2lnbmF0dXJlcykgeworICAgIGJ1aWxkZXIgPSBidWlsZGVyLkZ1bmMoc1sicGFyYW1zIl0sIHNb
InJldCJdKTsKKyAgfQorICByZXR1cm4gYnVpbGRlci5FbmQoKTsKK307CisKKy8vIENvZGUgaGVs
cGVycworCitjb25zdCBjcmVhdGVDYWxsZXIgPSAobmFtZSwgY2FsbGVlLCBjYWxsZXJTaWduYXR1
cmUsIGlzSW5kaXJlY3QpID0+IHsKKyAgcmV0dXJuIHsKKyAgICBuYW1lOiBuYW1lLAorICAgIHNp
Z25hdHVyZTogY2FsbGVyU2lnbmF0dXJlLAorICAgIGJvZHk6IChidWlsZGVyLCB1c2VSZXR1cm5D
YWxsKSA9PiB7CisgICAgICBidWlsZGVyID0gcG9wdWxhdGVTdGFjaygKKyAgICAgICAgYnVpbGRl
ci5GdW5jdGlvbihuYW1lLCBjYWxsZXJTaWduYXR1cmUpLAorICAgICAgICBjYWxsZXJTaWduYXR1
cmUucGFyYW1zLAorICAgICAgICBjYWxsZWUuc2lnbmF0dXJlLnBhcmFtcywKKyAgICAgICAgKGJ1
aWxkZXIsIHZhbHVlLCB0eXBlKSA9PiB7CisgICAgICAgICAgY29uc3QganNBcmcgPSB0eXBlR2Vu
ZXJhdG9yLmpzQXJnRnJvbVdhc21UeXBlKHZhbHVlLCB0eXBlKTsKKyAgICAgICAgICByZXR1cm4g
dHlwZUdlbmVyYXRvci5idWlsZGVyVHlwZUZyb21XYXNtVHlwZShqc0FyZywgdHlwZSwgYnVpbGRl
cik7CisgICAgICAgIH0sCisgICAgICApOworICAgICAgcmV0dXJuIGlzSW5kaXJlY3QgPworICAg
ICAgICB0cnlSZXR1cm5DYWxsSW5kaXJlY3QoYnVpbGRlciwgdXNlUmV0dXJuQ2FsbCwgY2FsbGVl
LmluZGV4LCAvKnRhYmxlSW5kZXgqLzApLkVuZCgpIDoKKyAgICAgICAgdHJ5UmV0dXJuQ2FsbChi
dWlsZGVyLCB1c2VSZXR1cm5DYWxsLCBjYWxsZWUuaW5kZXgpLkVuZCgpCisgICAgfSwKKyAgfTsK
K307CisKK2NvbnN0IGRlZmF1bHRUYWlsRnVuY3RvciA9IChidWlsZGVyLCB2YWx1ZSwgdHlwZSkg
PT4geworICBjb25zdCBqc0FyZyA9IHR5cGVHZW5lcmF0b3IuanNBcmdGcm9tV2FzbVR5cGUodmFs
dWUsIHR5cGUpOworICByZXR1cm4gdHlwZUdlbmVyYXRvci5idWlsZGVyVHlwZUZyb21XYXNtVHlw
ZShqc0FyZywgdHlwZSwgYnVpbGRlcik7Cit9OworCitjb25zdCBjcmVhdGVUYWlsRnVuY3Rpb24g
PSAobmFtZSwgc2lnbmF0dXJlLCBmdW5jdG9yKSA9PiB7CisgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9
ICJ0YWlsXyIgKyBuYW1lOworICByZXR1cm4geworICAgIG5hbWU6IGZ1bmN0aW9uTmFtZSwKKyAg
ICBzaWduYXR1cmU6IHNpZ25hdHVyZSwKKyAgICBib2R5OiAoYnVpbGRlcikgPT4geworICAgICAg
cmV0dXJuIHBvcHVsYXRlU3RhY2soCisgICAgICAgIGJ1aWxkZXIuRnVuY3Rpb24oZnVuY3Rpb25O
YW1lLCBzaWduYXR1cmUpLAorICAgICAgICBzaWduYXR1cmUucGFyYW1zLAorICAgICAgICBzaWdu
YXR1cmUucmV0LAorICAgICAgICBmdW5jdG9yID8gZnVuY3RvciA6IGRlZmF1bHRUYWlsRnVuY3Rv
ciwKKyAgICAgICkuRW5kKCk7CisgICAgfSwKKyAgfTsKK307CisKK2NvbnN0IHBvcHVsYXRlU3Rh
Y2sgPSAoIGJ1aWxkZXIsIGNhbGxlclBhcmFtc1NpZ25hdHVyZSwgY2FsbGVlUGFyYW1zU2lnbmF0
dXJlLCBmdW5jdG9yKSA9PiB7CisgIGxldCBpID0gMDsKKyAgY29uc3QgbWFwID0gbmV3IE1hcCgp
OworCisgIGZvciAoIDsgaSA8IE1hdGgubWluKGNhbGxlclBhcmFtc1NpZ25hdHVyZS5sZW5ndGgs
IGNhbGxlZVBhcmFtc1NpZ25hdHVyZS5sZW5ndGgpOyArK2kpIHsKKyAgICAvLyBnZXQgcmVxdWVz
dGVkIHR5cGUgZnJvbSBjYWxsZXIncyBzaWduYXR1cmUKKyAgICBsZXQgc2F2ZWRUeXBlSW5kaWNl
cyA9IG1hcC5nZXQoY2FsbGVlUGFyYW1zU2lnbmF0dXJlW2ldKTsKKyAgICBpZiAoc2F2ZWRUeXBl
SW5kaWNlcyA9PSB1bmRlZmluZWQpIHsKKyAgICAgIGNvbnN0IG5vdEZvdW5kID0gLTE7CisgICAg
ICBjb25zdCBuZXdUeXBlID0gY2FsbGVlUGFyYW1zU2lnbmF0dXJlW2ldOworICAgICAgY29uc3Qg
aW5kaWNlcyA9IGNhbGxlclBhcmFtc1NpZ25hdHVyZS5tYXAoKHZhbCwgaW5kZXgpID0+CisgICAg
ICAgIHZhbCA9PSBuZXdUeXBlID8gaW5kZXggOiBub3RGb3VuZAorICAgICAgKS5maWx0ZXIoKHZh
bCkgPT4gdmFsICE9IG5vdEZvdW5kKTsKKyAgICAgIHNhdmVkVHlwZUluZGljZXMgPSBtYXAuc2V0
KG5ld1R5cGUsIHsgaW5kaWNlczogaW5kaWNlcywgY3VycmVudDogMCB9KS5nZXQoCisgICAgICAg
IG5ld1R5cGUsCisgICAgICApOworICAgIH0KKyAgICBpZiAoIXNhdmVkVHlwZUluZGljZXMuaW5k
aWNlcy5sZW5ndGgpIHsKKyAgICAgIGJ1aWxkZXIgPSBmdW5jdG9yKGJ1aWxkZXIsIGksIGNhbGxl
ZVBhcmFtc1NpZ25hdHVyZVtpXSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGJ1aWxkZXIgPSBidWls
ZGVyLkdldExvY2FsKAorICAgICAgICBzYXZlZFR5cGVJbmRpY2VzLmluZGljZXNbc2F2ZWRUeXBl
SW5kaWNlcy5jdXJyZW50XSwKKyAgICAgICk7CisgICAgICBzYXZlZFR5cGVJbmRpY2VzLmN1cnJl
bnQgPSAoc2F2ZWRUeXBlSW5kaWNlcy5jdXJyZW50ICsgMSkgJQorICAgICAgICBzYXZlZFR5cGVJ
bmRpY2VzLmluZGljZXMubGVuZ3RoOworICAgIH0KKyAgfQorCisgIGZvciAoOyBpIDwgY2FsbGVl
UGFyYW1zU2lnbmF0dXJlLmxlbmd0aDsgKytpKQorICAgIGJ1aWxkZXIgPSBmdW5jdG9yKGJ1aWxk
ZXIsIGksIGNhbGxlZVBhcmFtc1NpZ25hdHVyZVtpXSk7CisgIHJldHVybiBidWlsZGVyOworfTsK
KworY29uc3QgdHJ5UmV0dXJuQ2FsbCA9IChidWlsZGVyLCB1c2VSZXR1cm5DYWxsLCBpbmRleCkg
PT4geworICByZXR1cm4gdXNlUmV0dXJuQ2FsbCA/IGJ1aWxkZXIuUmV0dXJuQ2FsbChpbmRleCkg
OiBidWlsZGVyLkNhbGwoaW5kZXgpOworfTsKKworY29uc3QgdHJ5UmV0dXJuQ2FsbEluZGlyZWN0
ID0gKGJ1aWxkZXIsIHVzZVJldHVybkNhbGwsIGluZGV4LCB0YWJsZUluZGV4KSA9PiB7CisgIGNv
bnN0IG5ld0J1aWxkZXIgPSBidWlsZGVyLkkzMkNvbnN0KGluZGV4KTsKKyAgcmV0dXJuIHVzZVJl
dHVybkNhbGwKKyAgICA/IG5ld0J1aWxkZXIuUmV0dXJuQ2FsbEluZGlyZWN0KGluZGV4LCB0YWJs
ZUluZGV4KQorICAgIDogbmV3QnVpbGRlci5DYWxsSW5kaXJlY3QoaW5kZXgsIHRhYmxlSW5kZXgp
OworfTsKKworY29uc3QgY29tbWl0RnVuY3Rpb24gPSAoZnVuYywgZGVzdCkgPT4geworICBmdW5j
WyJpbmRleCJdID0gZGVzdC5sZW5ndGg7CisgIGRlc3QucHVzaChmdW5jKTsKKyAgcmV0dXJuIGZ1
bmM7Cit9OworCitjb25zdCByZWdpc3RlckNhbGxTaXRlID0gKGNhbGxlciwgY2FsbGVlcywgZGVz
dCkgPT4geworICBjYWxsZXJbImNhbGxTaXRlSW5kZXgiXSA9IGRlc3QubGVuZ3RoOworICBkZXN0
LnB1c2goeworICAgIGNhbGxlcjogY2FsbGVyLAorICAgIGNhbGxlZXM6IEFycmF5LmlzQXJyYXko
Y2FsbGVlcykgPyBjYWxsZWVzIDogW2NhbGxlZXNdLAorICB9KTsKKyAgcmV0dXJuIGNhbGxlcjsK
K307CisKKy8vIERlYnVnIGhlbHBlcnMKKworY29uc3QgZHVtcEZ1bmN0aW9uSGVhZGVyID0gKGZ1
bmMsIGNhbGxEZXB0aCkgPT4geworICBsZXQgaW5kZW50ID0gIiI7CisgIGZvciAobGV0IGkgPSAw
OyBpIDwgY2FsbERlcHRoOyArK2kpCisgICAgaW5kZW50ICs9ICJcdCI7CisgIHByaW50KGAke2lu
ZGVudH0ke2Z1bmMubmFtZX1cblwKKyAgICAke2luZGVudH0oJHtmdW5jLnNpZ25hdHVyZS5wYXJh
bXN9KS0+KCR7ZnVuYy5zaWduYXR1cmUucmV0fSlcblwKKyAgICAke2luZGVudH1wYXJhbXMgbGVu
Z3RoOiR7ZnVuYy5zaWduYXR1cmUucGFyYW1zLmxlbmd0aH0sIHJldCBsZW5ndGg6JHtmdW5jLnNp
Z25hdHVyZS5yZXQubGVuZ3RofWApOworfTsKKworY29uc3QgZHVtcEJhY2t0cmFjZSA9IChjYWxs
U2l0ZSwgY2FsbFNpdGVzLCBjYWxsRGVwdGgpID0+IHsKKyAgZHVtcEZ1bmN0aW9uSGVhZGVyKGNh
bGxTaXRlWyJjYWxsZXIiXSwgY2FsbERlcHRoKTsKKyAgY29uc3QgY2FsbGVlcyA9IGNhbGxTaXRl
WyJjYWxsZWVzIl07CisgIGlmIChjYWxsZWVzKSB7CisgICAgZm9yIChjb25zdCBjYWxsZWUgb2Yg
Y2FsbGVlcykgeworICAgICAgY29uc3QgY2FsbFNpdGVJbmRleCA9IGNhbGxlZS5jYWxsU2l0ZUlu
ZGV4OworICAgICAgaWYgKGNhbGxTaXRlSW5kZXgpCisgICAgICAgIGR1bXBCYWNrdHJhY2UoY2Fs
bFNpdGVzW2NhbGxTaXRlSW5kZXhdLCBjYWxsU2l0ZXMsIGNhbGxEZXB0aCArIDEpOworICAgICAg
ZWxzZQorICAgICAgICBkdW1wRnVuY3Rpb25IZWFkZXIoY2FsbGVlLCBjYWxsRGVwdGggKyAxKTsK
KyAgICB9CisgIH0KK307CisKKy8vIFRlc3QgaGVscGVycworCitjb25zdCBhZGRDYWxscyA9IChk
ZXN0LCBjYWxsU2l0ZXMsIGV4cG9ydFNpemUsIGlzSW5kaXJlY3QpID0+IHsKKyAgaWYgKGV4cG9y
dFNpemUgPT0gdW5kZWZpbmVkKSB7CisgICAgZXhwb3J0U2l6ZSA9IGRlZmF1bHRFeHBvcnRTaXpl
OworICB9CisgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhwb3J0U2l6ZTsgaSsrKSB7CisgICAgY29u
c3QgbmV3VGFpbEZ1bmN0aW9uID0gY3JlYXRlVGFpbEZ1bmN0aW9uKAorICAgICAgYCR7ZGVzdC5s
ZW5ndGh9YCwKKyAgICAgIHR5cGVHZW5lcmF0b3IuY3JlYXRlU2lnbmF0dXJlKCksCisgICAgKTsK
KyAgICBjb21taXRGdW5jdGlvbihuZXdUYWlsRnVuY3Rpb24sIGRlc3QpOworICAgIGFkZERlcHRo
KG5ld1RhaWxGdW5jdGlvbiwgLypjYWxsRGVwdGgqLyAzLCBkZXN0LCBjYWxsU2l0ZXMsIGlzSW5k
aXJlY3QpOworICB9Cit9OworCitjb25zdCBhZGREZXB0aCA9IChmdW5jLCBjYWxsRGVwdGgsIGRl
c3QsIGNhbGxTaXRlcywgaXNJbmRpcmVjdCkgPT4geworICBsZXQgcHJldmlvdXNDYWxsZWUgPSBm
dW5jOworICBmb3IgKGxldCBkZXB0aCA9IDA7IGRlcHRoIDwgY2FsbERlcHRoOyBkZXB0aCsrKSB7
CisgICAgY29uc3QgY2FsbGVyU2lnbmF0dXJlID0gdHlwZUdlbmVyYXRvci5jcmVhdGVTaWduYXR1
cmUoCisgICAgICB1bmRlZmluZWQsCisgICAgICBwcmV2aW91c0NhbGxlZS5zaWduYXR1cmUucmV0
Lmxlbmd0aCwKKyAgICApOworICAgIGNhbGxlclNpZ25hdHVyZS5yZXQgPSBwcmV2aW91c0NhbGxl
ZS5zaWduYXR1cmUucmV0OworICAgIGNvbnN0IGNhbGxlck5hbWUgPSAiZGVwdGgiICsgZGVwdGgu
dG9TdHJpbmcoKSArICItPiIgKyBwcmV2aW91c0NhbGxlZS5uYW1lOworICAgIGNvbnN0IGNhbGxl
ciA9IGNyZWF0ZUNhbGxlcihjYWxsZXJOYW1lLCBwcmV2aW91c0NhbGxlZSwgY2FsbGVyU2lnbmF0
dXJlLCBpc0luZGlyZWN0KTsKKyAgICBjb21taXRGdW5jdGlvbihjYWxsZXIsIGRlc3QpOworICAg
IHJlZ2lzdGVyQ2FsbFNpdGUoY2FsbGVyLCBwcmV2aW91c0NhbGxlZSwgY2FsbFNpdGVzKTsKKyAg
ICBwcmV2aW91c0NhbGxlZSA9IGNhbGxlcjsKKyAgfQorfTsKKworCitjb25zdCBjb21wYXJlID0g
KGxocywgcmhzLCBleHBvcnRzLCBjYWxsU2l0ZXMpID0+IHsKKyAgZm9yIChsZXQgaSA9IDA7IGkg
PCBleHBvcnRzLmxlbmd0aDsgKytpKSB7CisgICAgY29uc3QgY2FsbGVyID0gZXhwb3J0c1tpXTsK
KyAgICBjb25zdCBjYWxsZXJOYW1lID0gY2FsbGVyLm5hbWU7CisgICAgY29uc3QgbGhzRW50cnlw
b2ludCA9IGxocy5leHBvcnRzW2NhbGxlck5hbWVdOworICAgIGNvbnN0IHJoc0VudHJ5cG9pbnQg
PSByaHMuZXhwb3J0c1tjYWxsZXJOYW1lXTsKKyAgICBjb25zdCBwYXJhbXMgPSB0eXBlR2VuZXJh
dG9yLmpzQXJnc0Zyb21XYXNtUGFyYW1zKGNhbGxlci5zaWduYXR1cmUucGFyYW1zKTsKKyAgICBj
b25zdCBsaHNSZXN1bHQgPSBsaHNFbnRyeXBvaW50KC4uLnBhcmFtcyk7CisgICAgY29uc3Qgcmhz
UmVzdWx0ID0gcmhzRW50cnlwb2ludCguLi5wYXJhbXMpOworICAgIGlmICh2ZXJib3NlKSB7Cisg
ICAgICBpZiAoY2FsbGVyLmNhbGxTaXRlSW5kZXggIT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGR1
bXBCYWNrdHJhY2UoY2FsbFNpdGVzW2NhbGxlci5jYWxsU2l0ZUluZGV4XSwgY2FsbFNpdGVzLCAw
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50KGNhbGxlck5hbWUpOworICAgICAgfQor
ICAgICAgaWYgKHZlcmJvc2UgPT0gMikgeworICAgICAgICBwcmludCgicGFyYW1zOiIgKyBwYXJh
bXMpOworICAgICAgfQorICAgICAgcHJpbnQobGhzUmVzdWx0KTsKKyAgICAgIHByaW50KHJoc1Jl
c3VsdCk7CisgICAgfQorICAgIGFzc2VydC5lcShsaHNSZXN1bHQsIHJoc1Jlc3VsdCk7CisgIH0K
K307CisKK2NvbnN0IHJ1blRlc3RXaXRoaW5Nb2R1bGUgPSAoKSA9PiB7CisgIGNvbnN0IGV4cG9y
dHMgPSBbXTsKKyAgY29uc3QgY2FsbFNpdGVzID0gW107CisgIGFkZENhbGxzKGV4cG9ydHMsIGNh
bGxTaXRlcywgLypleHBvcnRTaXplKi8gMyk7CisgIGFkZENhbGxzKGV4cG9ydHMsIGNhbGxTaXRl
cywgLypleHBvcnRTaXplKi8gMywgLyppc0luZGlyZWN0Ki90cnVlKTsKKworICBjb25zdCBsaHMg
PSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoCisgICAgbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgK
KyAgICAgIGNyZWF0ZUJ1aWxkZXIoeworICAgICAgICB1c2VSZXR1cm5DYWxsOiB0cnVlLAorICAg
ICAgICBmdW5jOiBleHBvcnRzLAorICAgICAgICBleHBvcnRzOiBleHBvcnRzLAorICAgICAgICB0
YWJsZTogeyBpbml0aWFsOiBleHBvcnRzLmxlbmd0aCwgZWxlbWVudDogImZ1bmNyZWYiIH0sCisg
ICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICB0YWJsZUluZGV4OiAwLCBvZmZzZXQ6IDAsIGZ1
bmN0aW9uSW5kaWNlczogQXJyYXkuZnJvbShleHBvcnRzLCAodmFsdWUpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiB2YWx1ZS5pbmRleDsKKyAgICAgICAgICB9KQorICAgICAgICB9CisgICAgICB9
KS5XZWJBc3NlbWJseSgpLmdldCgpLAorICAgICksCisgICk7CisgIGNvbnN0IHJocyA9IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZSgKKyAgICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKAorICAgICAg
Y3JlYXRlQnVpbGRlcih7CisgICAgICAgIHVzZVJldHVybkNhbGw6IGZhbHNlLAorICAgICAgICBm
dW5jOiBleHBvcnRzLAorICAgICAgICBleHBvcnRzOiBleHBvcnRzLAorICAgICAgICB0YWJsZTog
eyBpbml0aWFsOiBleHBvcnRzLmxlbmd0aCwgZWxlbWVudDogImZ1bmNyZWYiIH0sCisgICAgICAg
IGVsZW1lbnQ6IHsKKyAgICAgICAgICB0YWJsZUluZGV4OiAwLCBvZmZzZXQ6IDAsIGZ1bmN0aW9u
SW5kaWNlczogQXJyYXkuZnJvbShleHBvcnRzLCAodmFsdWUpID0+IHsKKyAgICAgICAgICAgIHJl
dHVybiB2YWx1ZS5pbmRleDsKKyAgICAgICAgICB9KQorICAgICAgICB9CisgICAgICB9KS5XZWJB
c3NlbWJseSgpLmdldCgpLAorICAgICksCisgICk7CisgIGNvbXBhcmUobGhzLCByaHMsIGV4cG9y
dHMsIGNhbGxTaXRlcyk7Cit9OworCitjb25zdCBydW5UZXN0QWNyb3NzTW9kdWxlcyA9ICgpID0+
IHsKKyAgY29uc3QgY2FsbFNpdGVzID0gW107CisgIGxldCBlbnRyeXBvaW50cyA9IFtdOworCisg
IGNvbnN0IGxvYWRGcm9tTWVtb3J5ID0gKGJ1aWxkZXIsIF92YWx1ZSwgdHlwZSkgPT4geworICAg
IHJldHVybiB0eXBlR2VuZXJhdG9yLmJ1aWxkZXJMb2FkRnJvbVdhc21UeXBlKAorICAgICAgLypp
bW0xKi8yLAorICAgICAgLyppbW0yKi8wLAorICAgICAgdHlwZSwKKyAgICAgIGJ1aWxkZXIuSTMy
Q29uc3QoMCksCisgICAgKTsKKyAgfTsKKworICBjb25zdCBjcmVhdGVFbnRyeXBvaW50ID0gKG5h
bWUsIGNhbGxlZSwgc2lnbmF0dXJlLCB0YWJsZU9mZnNldCkgPT4geworICAgIHJldHVybiB7Cisg
ICAgICBuYW1lOiBuYW1lLAorICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsCisgICAgICBib2R5
OiAoYnVpbGRlciwgdXNlUmV0dXJuQ2FsbCkgPT4geworICAgICAgICByZXR1cm4gdHJ5UmV0dXJu
Q2FsbCgKKyAgICAgICAgICBidWlsZGVyLkZ1bmN0aW9uKG5hbWUsIHNpZ25hdHVyZSksCisgICAg
ICAgICAgdXNlUmV0dXJuQ2FsbCwKKyAgICAgICAgICBjYWxsZWUuaW5kZXgsCisgICAgICAgICku
RW5kKCk7CisgICAgICB9LAorICAgICAgdGFibGVPZmZzZXQ6IHRhYmxlT2Zmc2V0LAorICAgIH07
CisgIH07CisKKyAgY29uc3QgY3JlYXRlTWFpbiA9IChuYW1lLCBjYWxsZWVzLCBzaWduYXR1cmUp
ID0+IHsKKyAgICByZXR1cm4geworICAgICAgbmFtZTogbmFtZSwKKyAgICAgIHNpZ25hdHVyZTog
c2lnbmF0dXJlLAorICAgICAgYm9keTogKGJ1aWxkZXIpID0+IHsKKyAgICAgICAgYnVpbGRlciA9
IGJ1aWxkZXIuRnVuY3Rpb24obmFtZSwgc2lnbmF0dXJlKTsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBjYWxsZWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgYnVpbGRlciA9IGJ1aWxk
ZXIuR2V0TG9jYWwoMCk7CisgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuQ2FsbChjYWxsZWVz
W2ldLmluZGV4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVpbGRlci5FbmQoKTsKKyAg
ICAgIH0sCisgICAgfTsKKyAgfTsKKworICBjb25zdCBjcmVhdGVFbnRyeXBvaW50SW5zdGFuY2Ug
PSAodXNlUmV0dXJuQ2FsbCkgPT4geworICAgIGNvbnN0IGluc3QwX2Z1bmN0aW9ucyA9IFtdLCBp
bnN0MV9mdW5jdGlvbnMgPSBbXSwgaW5zdDJfZnVuY3Rpb25zID0gW107CisKKyAgICBjb25zdCB0
YWlsU2lnbmF0dXJlID0gdHlwZUdlbmVyYXRvci5jcmVhdGVTaWduYXR1cmUoMCwgMTUsICJpMzIi
KTsKKyAgICBjb25zdCBuVGFpbHMgPSAyOworICAgIGNvbnN0IG1haW5TaWduYXR1cmUgPSB0eXBl
R2VuZXJhdG9yLmNyZWF0ZVNpZ25hdHVyZSgKKyAgICAgIDEsCisgICAgICBuVGFpbHMgKyBuVGFp
bHMgKiB0YWlsU2lnbmF0dXJlLnJldC5sZW5ndGgsCisgICAgICAiaTMyIiwKKyAgICApOworCisg
ICAgY29uc3QgaW5zdDFfdGFpbCA9IGNvbW1pdEZ1bmN0aW9uKAorICAgICAgY3JlYXRlVGFpbEZ1
bmN0aW9uKCJpbnN0MV90YWlsIiwgdGFpbFNpZ25hdHVyZSwgbG9hZEZyb21NZW1vcnkpLAorICAg
ICAgaW5zdDFfZnVuY3Rpb25zLAorICAgICk7CisgICAgY29uc3QgaW5zdDFfZW50cnlwb2ludCA9
IGNvbW1pdEZ1bmN0aW9uKAorICAgICAgY3JlYXRlRW50cnlwb2ludCgKKyAgICAgICAgImluc3Qx
X2VudHJ5cG9pbnQiLAorICAgICAgICBpbnN0MV90YWlsLAorICAgICAgICB0YWlsU2lnbmF0dXJl
LAorICAgICAgICAvKnRhYmxlT2Zmc2V0Ki8gMCwKKyAgICAgICksCisgICAgICBpbnN0MV9mdW5j
dGlvbnMsCisgICAgKTsKKworICAgIGNvbnN0IGluc3QyX3RhaWwgPSBjb21taXRGdW5jdGlvbigK
KyAgICAgIGNyZWF0ZVRhaWxGdW5jdGlvbigiaW5zdDJfdGFpbCIsIHRhaWxTaWduYXR1cmUsIGxv
YWRGcm9tTWVtb3J5KSwKKyAgICAgIGluc3QyX2Z1bmN0aW9ucywKKyAgICApOworICAgIGNvbnN0
IGluc3QyX2VudHJ5cG9pbnQgPSBjb21taXRGdW5jdGlvbigKKyAgICAgIGNyZWF0ZUVudHJ5cG9p
bnQoCisgICAgICAgICJpbnN0Ml9lbnRyeXBvaW50IiwKKyAgICAgICAgaW5zdDJfdGFpbCwKKyAg
ICAgICAgdGFpbFNpZ25hdHVyZSwKKyAgICAgICAgLyp0YWJsZU9mZnNldCovIDEsCisgICAgICAp
LAorICAgICAgaW5zdDJfZnVuY3Rpb25zLAorICAgICk7CisKKyAgICBjb25zdCBpbnN0MF9pbnN0
MV9pbXBvcnQgPSBjb21taXRGdW5jdGlvbigKKyAgICAgIE9iamVjdC5hc3NpZ24oaW5zdDFfZW50
cnlwb2ludCksCisgICAgICBpbnN0MF9mdW5jdGlvbnMsCisgICAgKTsKKyAgICBjb25zdCBpbnN0
MF9pbnN0Ml9pbXBvcnQgPSBjb21taXRGdW5jdGlvbigKKyAgICAgIE9iamVjdC5hc3NpZ24oaW5z
dDJfZW50cnlwb2ludCksCisgICAgICBpbnN0MF9mdW5jdGlvbnMsCisgICAgKTsKKworICAgIGNv
bnN0IHRyYW1wb2xpbmVfaW5zdDFfdmlhX2ltcG9ydCA9IGNvbW1pdEZ1bmN0aW9uKAorICAgICAg
Y3JlYXRlQ2FsbGVyKAorICAgICAgICAiaW5zdDBfdHJhbXBvbGluZV9pbnN0MV92aWFfaW1wb3J0
IiwKKyAgICAgICAgaW5zdDBfaW5zdDFfaW1wb3J0LAorICAgICAgICB0YWlsU2lnbmF0dXJlLAor
ICAgICAgKSwKKyAgICAgIGluc3QwX2Z1bmN0aW9ucywKKyAgICApOworICAgIGNvbnN0IHRyYW1w
b2xpbmVfaW5zdDJfdmlhX2ltcG9ydCA9IGNvbW1pdEZ1bmN0aW9uKAorICAgICAgY3JlYXRlQ2Fs
bGVyKAorICAgICAgICAiaW5zdDBfdHJhbXBvbGluZV9pbnN0Ml92aWFfaW1wb3J0IiwKKyAgICAg
ICAgaW5zdDBfaW5zdDJfaW1wb3J0LAorICAgICAgICB0YWlsU2lnbmF0dXJlLAorICAgICAgKSwK
KyAgICAgIGluc3QwX2Z1bmN0aW9ucywKKyAgICApOworCisgICAgY29uc3QgdHJhbXBvbGluZV9p
bnN0MV92aWFfdGFibGUgPSBjb21taXRGdW5jdGlvbigKKyAgICAgIGNyZWF0ZUNhbGxlcigKKyAg
ICAgICAgImluc3QwX3RyYW1wb2xpbmVfaW5zdDFfdmlhX3RhYmxlIiwKKyAgICAgICAgaW5zdDFf
ZW50cnlwb2ludCwKKyAgICAgICAgdGFpbFNpZ25hdHVyZSwKKyAgICAgICAgLyppc0luZGlyZWN0
Ki90cnVlCisgICAgICApLAorICAgICAgaW5zdDBfZnVuY3Rpb25zLAorICAgICk7CisgICAgY29u
c3QgdHJhbXBvbGluZV9pbnN0Ml92aWFfdGFibGUgPSBjb21taXRGdW5jdGlvbigKKyAgICAgIGNy
ZWF0ZUNhbGxlcigKKyAgICAgICAgImluc3QwX3RyYW1wb2xpbmVfaW5zdDJfdmlhX3RhYmxlIiwK
KyAgICAgICAgaW5zdDJfZW50cnlwb2ludCwKKyAgICAgICAgdGFpbFNpZ25hdHVyZSwKKyAgICAg
ICAgLyppc0luZGlyZWN0Ki90cnVlCisgICAgICApLAorICAgICAgaW5zdDBfZnVuY3Rpb25zLAor
ICAgICk7CisKKyAgICBlbnRyeXBvaW50cy5wdXNoKAorICAgICAgcmVnaXN0ZXJDYWxsU2l0ZSgK
KyAgICAgICAgY29tbWl0RnVuY3Rpb24oCisgICAgICAgICAgY3JlYXRlTWFpbigiaW5zdDBfbWFp
bl92aWFfdGFibGUiLCBbCisgICAgICAgICAgICB0cmFtcG9saW5lX2luc3QxX3ZpYV90YWJsZSwK
KyAgICAgICAgICAgIHRyYW1wb2xpbmVfaW5zdDJfdmlhX3RhYmxlLAorICAgICAgICAgIF0sIG1h
aW5TaWduYXR1cmUpLAorICAgICAgICAgIGluc3QwX2Z1bmN0aW9ucywKKyAgICAgICAgKSwKKyAg
ICAgICAgW3RyYW1wb2xpbmVfaW5zdDFfdmlhX3RhYmxlLCB0cmFtcG9saW5lX2luc3QyX3ZpYV90
YWJsZV0sCisgICAgICAgIGNhbGxTaXRlcywKKyAgICAgICksCisgICAgKTsKKworICAgIGVudHJ5
cG9pbnRzLnB1c2goCisgICAgICByZWdpc3RlckNhbGxTaXRlKAorICAgICAgICBjb21taXRGdW5j
dGlvbigKKyAgICAgICAgICBjcmVhdGVNYWluKCJpbnN0MF9tYWluX3ZpYV9pbXBvcnQiLCBbCisg
ICAgICAgICAgICB0cmFtcG9saW5lX2luc3QxX3ZpYV9pbXBvcnQsCisgICAgICAgICAgICB0cmFt
cG9saW5lX2luc3QyX3ZpYV9pbXBvcnQsCisgICAgICAgICAgXSwgbWFpblNpZ25hdHVyZSksCisg
ICAgICAgICAgaW5zdDBfZnVuY3Rpb25zLAorICAgICAgICApLAorICAgICAgICBbdHJhbXBvbGlu
ZV9pbnN0MV92aWFfaW1wb3J0LCB0cmFtcG9saW5lX2luc3QyX3ZpYV9pbXBvcnRdLAorICAgICAg
ICBjYWxsU2l0ZXMsCisgICAgICApLAorICAgICk7CisKKyAgICAvLyBpbnN0WzEtMl1fZW50cnlw
b2ludCBoYXZlIGJlZW4gcHVzaGVkIGZpcnN0LCB0byBleHBvc2UgdGhlaXIgaW5kaWNlcyBhcyBw
YXJ0IG9mIHRoZSBpbmRleCBzcGFjZQorICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gYWRkIHRoZW0g
dG8gdGhlIG1haW4gbW9kdWxlLCBzbyB3ZSByZW1vdmUgdGhlbQorICAgIGNvbnN0IGluc3QwX2Nv
ZGUgPSBpbnN0MF9mdW5jdGlvbnMuc3BsaWNlKDIpOworCisgICAgY29uc3QgaW5zdDBNZW1EZXNj
cmlwdGlvbiA9IHsgaW5pdGlhbDogMSB9OworICAgIGNvbnN0IGluc3QxTWVtRGVzY3JpcHRpb24g
PSB7IGluaXRpYWw6IDIgfTsKKyAgICBjb25zdCBpbnN0MExoc01lbSA9IG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkoaW5zdDBNZW1EZXNjcmlwdGlvbik7CisgICAgY29uc3QgaW5zdDFMaHNNZW0gPSBu
ZXcgV2ViQXNzZW1ibHkuTWVtb3J5KGluc3QxTWVtRGVzY3JpcHRpb24pOworCisgICAgbmV3IFVp
bnQ4QXJyYXkoaW5zdDBMaHNNZW0uYnVmZmVyKS5mb3JFYWNoKChfdmFsdWUsIGluZGV4LCBhcnJh
eSkgPT4geworICAgICAgYXJyYXlbaW5kZXhdID0gMDsKKyAgICB9KTsKKyAgICBuZXcgVWludDhB
cnJheShpbnN0MUxoc01lbS5idWZmZXIpLmZvckVhY2goKF92YWx1ZSwgaW5kZXgsIGFycmF5KSA9
PiB7CisgICAgICBhcnJheVtpbmRleF0gPSAweGZmOworICAgIH0pOworCisgICAgY29uc3QgdGFi
bGVJbmZvID0geyBpbml0aWFsOiAyLCBlbGVtZW50OiAiZnVuY3JlZiIgfTsKKyAgICBjb25zdCB0
YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh0YWJsZUluZm8pOworCisgICAgY29uc3QgaW5z
dDEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoCisgICAgICBuZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKAorICAgICAgICBjcmVhdGVCdWlsZGVyKHsKKyAgICAgICAgICAvKmJ1aWxkZXJJbmZvKi8K
KyAgICAgICAgICB1c2VSZXR1cm5DYWxsOiB1c2VSZXR1cm5DYWxsLAorICAgICAgICAgIGZ1bmM6
IGluc3QxX2Z1bmN0aW9ucywKKyAgICAgICAgICB0eXBlczogW3RhaWxTaWduYXR1cmUsIHRhaWxT
aWduYXR1cmVdLAorICAgICAgICAgIGltcG9ydHM6IHsKKyAgICAgICAgICAgIGltcDogeworICAg
ICAgICAgICAgICB0YWJsZTogdGFibGVJbmZvLAorICAgICAgICAgICAgICBtZW1vcnk6IGluc3Qw
TWVtRGVzY3JpcHRpb24sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH0sCisgICAgICAgICAg
ZXhwb3J0czogW2luc3QxX2VudHJ5cG9pbnRdLAorICAgICAgICAgIHRhYmxlOiB0YWJsZUluZm8s
CisgICAgICAgICAgZWxlbWVudDogeworICAgICAgICAgICAgb2Zmc2V0OiAwLAorICAgICAgICAg
ICAgZnVuY3Rpb25JbmRpY2VzOiBbMV0sCisgICAgICAgICAgfSwKKyAgICAgICAgfSkuV2ViQXNz
ZW1ibHkoKS5nZXQoKSwKKyAgICAgICksCisgICAgICAvKmltcG9ydE9iamVjdCovIHsKKyAgICAg
ICAgaW1wOiB7CisgICAgICAgICAgdGFibGU6IHRhYmxlLAorICAgICAgICAgIG1lbW9yeTogaW5z
dDBMaHNNZW0sCisgICAgICAgIH0sCisgICAgICB9LAorICAgICk7CisKKyAgICBjb25zdCBpbnN0
MiA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSgKKyAgICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1
bGUoCisgICAgICAgIGNyZWF0ZUJ1aWxkZXIoeworICAgICAgICAgIC8qYnVpbGRlckluZm8qLwor
ICAgICAgICAgIHVzZVJldHVybkNhbGw6IHVzZVJldHVybkNhbGwsCisgICAgICAgICAgZnVuYzog
aW5zdDJfZnVuY3Rpb25zLAorICAgICAgICAgIHR5cGVzOiBbdGFpbFNpZ25hdHVyZSwgdGFpbFNp
Z25hdHVyZV0sCisgICAgICAgICAgaW1wb3J0czogeworICAgICAgICAgICAgaW1wOiB7CisgICAg
ICAgICAgICAgIHRhYmxlOiB0YWJsZUluZm8sCisgICAgICAgICAgICAgIG1lbW9yeTogaW5zdDFN
ZW1EZXNjcmlwdGlvbiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgfSwKKyAgICAgICAgICBl
eHBvcnRzOiBbaW5zdDJfZW50cnlwb2ludF0sCisgICAgICAgICAgdGFibGU6IHRhYmxlSW5mbywK
KyAgICAgICAgICBlbGVtZW50OiB7CisgICAgICAgICAgICBvZmZzZXQ6IDEsCisgICAgICAgICAg
ICBmdW5jdGlvbkluZGljZXM6IFsxXSwKKyAgICAgICAgICB9LAorICAgICAgICB9KS5XZWJBc3Nl
bWJseSgpLmdldCgpLAorICAgICAgKSwKKyAgICAgIHsKKyAgICAgICAgLyppbXBvcnRPYmplY3Qq
LworICAgICAgICBpbXA6IHsKKyAgICAgICAgICB0YWJsZTogdGFibGUsCisgICAgICAgICAgbWVt
b3J5OiBpbnN0MUxoc01lbSwKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAgKTsKKworICAgIGNv
bnN0IGltcG9ydE9iamVjdEluZm8gPSB7IGltcDogeyB0YWJsZTogdGFibGVJbmZvIH0gfTsKKyAg
ICBjb25zdCBpbXBvcnRPYmplY3QgPSB7IGltcDogeyB0YWJsZTogdGFibGUgfSB9OworICAgIGlt
cG9ydE9iamVjdEluZm9bImltcCJdW2luc3QxX2VudHJ5cG9pbnQubmFtZV0gPSBpbnN0MV9lbnRy
eXBvaW50LnNpZ25hdHVyZTsKKyAgICBpbXBvcnRPYmplY3RJbmZvWyJpbXAiXVtpbnN0Ml9lbnRy
eXBvaW50Lm5hbWVdID0gaW5zdDJfZW50cnlwb2ludC5zaWduYXR1cmU7CisgICAgaW1wb3J0T2Jq
ZWN0WyJpbXAiXVtpbnN0MV9lbnRyeXBvaW50Lm5hbWVdID0KKyAgICAgIGluc3QxLmV4cG9ydHNb
aW5zdDFfZW50cnlwb2ludC5uYW1lXTsKKyAgICBpbXBvcnRPYmplY3RbImltcCJdW2luc3QyX2Vu
dHJ5cG9pbnQubmFtZV0gPQorICAgICAgaW5zdDIuZXhwb3J0c1tpbnN0Ml9lbnRyeXBvaW50Lm5h
bWVdOworCisgICAgY29uc3QgaW5zdDAgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoCisgICAg
ICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKAorICAgICAgICBjcmVhdGVCdWlsZGVyKHsKKyAgICAg
ICAgICAvKmJ1aWxkZXJJbmZvKi8KKyAgICAgICAgICB1c2VSZXR1cm5DYWxsOiB1c2VSZXR1cm5D
YWxsLAorICAgICAgICAgIGZ1bmM6IGluc3QwX2NvZGUsCisgICAgICAgICAgZXhwb3J0czogaW5z
dDBfY29kZSwKKyAgICAgICAgICB0eXBlczogW3RhaWxTaWduYXR1cmUsIHRhaWxTaWduYXR1cmVd
LAorICAgICAgICAgIGltcG9ydHM6IGltcG9ydE9iamVjdEluZm8sCisgICAgICAgICAgdGFibGU6
IHRhYmxlSW5mbywKKyAgICAgICAgfSkuV2ViQXNzZW1ibHkoKS5nZXQoKSwKKyAgICAgICksCisg
ICAgICBpbXBvcnRPYmplY3QsCisgICAgKTsKKworICAgIHJldHVybiBpbnN0MDsKKyAgfTsKKwor
ICBjb25zdCBsaHMgPSBjcmVhdGVFbnRyeXBvaW50SW5zdGFuY2UoLyp1c2VSZXR1cm5DYWxsKi8g
dHJ1ZSk7CisgIGNvbnN0IHJocyA9IGNyZWF0ZUVudHJ5cG9pbnRJbnN0YW5jZSgvKnVzZVJldHVy
bkNhbGwqLyBmYWxzZSk7CisgIGVudHJ5cG9pbnRzID0gZW50cnlwb2ludHMuc3BsaWNlKDIpOwor
ICByZXR1cm4gY29tcGFyZShsaHMsIHJocywgZW50cnlwb2ludHMsIGNhbGxTaXRlcyk7Cit9Owor
CitydW5UZXN0V2l0aGluTW9kdWxlKCk7CitydW5UZXN0QWNyb3NzTW9kdWxlcygpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5k
ZXggMDY2MTY3M2I0NzdkLi44Y2QzYmZmZGFjMjAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS93
YXNtLmpzb24KKysrIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAtOTgsNiArOTgsOCBAQAog
ICAgICAgICAiZGF0YS5kcm9wIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImV4dHRhYmxlIiwg
ICAidmFsdWUiOiAgMjUyLCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAic2VnbWVudF9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
InNocmlua3MgdGhlIHNpemUgb2YgdGhlIHNlZ21lbnQgdG8gemVybyIsICJleHRlbmRlZE9wIjog
OSB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwi
LCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIi
fV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCiAgICAgICAgICJjYWxsX2lu
ZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywg
InJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjog
WyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0
eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5k
ZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9u
IGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAgICAgICAicmV0dXJu
X2NhbGwiOiAgICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVl
IjogIDE4LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ0YWlsIGNh
bGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCisgICAgICAgICJyZXR1cm5fY2FsbF9pbmRp
cmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTksICJy
ZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsi
Y2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlw
ZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInRhYmxlX2luZGV4
IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2NyaXB0aW9uIjogInRhaWwgY2FsbCBhIGZ1bmN0
aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAgICAgICAiY2Fs
bF9yZWYiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAg
MjAsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRl
ciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5j
dGlvbiByZWZlcmVuY2UiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0
ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsiaTMyIl0sICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAg
ICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBl
IjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIi
fV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxv
YWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDUs
ICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6
IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
ZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIs
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9y
eSIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKaW5kZXggMmNjMGExNDg5ZmE2Li43NTg5YjJiMjQ1YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCkBAIC00MDEzLDYgKzQwMTMsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ2FsbCht
X2Fzc2VtYmxlci5sYWJlbCgpLCBDYWxsOjpMaW5rYWJsZU5lYXIpOwogICAgIH0KIAorICAgIEFM
V0FZU19JTkxJTkUgQ2FsbCB0aHJlYWRTYWZlUGF0Y2hhYmxlTmVhclRhaWxDYWxsKCkKKyAgICB7
CisgICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYigpOworICAgICAgICByZXR1cm4gQ2FsbChsYWJlbCwgQ2FsbDo6
TGlua2FibGVOZWFyVGFpbCk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJldCgp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5yZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggMDBiOGVk
Njg5MWU0Li41YjU4N2FiNTQwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0yMzEyLDYgKzIzMTIsMTIgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgoZGF0YVRlbXBSZWdp
c3RlciksIENhbGw6OkxpbmthYmxlTmVhcik7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSBD
YWxsIHRocmVhZFNhZmVQYXRjaGFibGVOZWFyVGFpbENhbGwoKQorICAgIHsKKyAgICAgICAgaW52
YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKKyAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJs
ZXIuYigpLCBDYWxsOjpMaW5rYWJsZU5lYXJUYWlsKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5M
SU5FIENhbGwgY2FsbChQdHJUYWcpCiAgICAgewogICAgICAgICBtb3ZlRml4ZWRXaWR0aEVuY29k
aW5nKFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaAppbmRl
eCBmYzk4ZjliNTIyMTQuLjQ1ZmFhNzZhMDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCkBAIC0xODg1LDYg
KzE4ODUsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ2FsbChsYWJlbCwgQ2FsbDo6TGlu
a2FibGVOZWFyKTsKICAgICB9CiAKKyAgICBDYWxsIHRocmVhZFNhZmVQYXRjaGFibGVOZWFyVGFp
bENhbGwoKQorICAgIHsKKyAgICAgICAgYXV0byBsYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLm5lYXJDYWxsUGxhY2Vob2xkZXIoCisgICAgICAgICAgICBb
Jl0geworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmphbEluc24oUklTQ1Y2NFJlZ2lzdGVy
czo6emVybywgSW1tOjpKPDA+KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBD
YWxsKGxhYmVsLCBDYWxsOjpMaW5rYWJsZU5lYXJUYWlsKTsKKyAgICB9CisKICAgICB2b2lkIHJl
dCgpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5qYWxySW5zbihSSVNDVjY0UmVnaXN0ZXJz
Ojp6ZXJvLCBSSVNDVjY0UmVnaXN0ZXJzOjp4MSwgSW1tOjpJPDA+KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmlu
ZGV4IGJlYWM3MzZhNjUwMy4uOGU3ODY2MTVjNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC0yODAsNiAr
MjgwLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBD
YWxsIHRocmVhZFNhZmVQYXRjaGFibGVOZWFyVGFpbENhbGwoKQorICAgIHsKKyAgICAgICAgY29u
c3Qgc2l6ZV90IG5lYXJDYWxsT3Bjb2RlU2l6ZSA9IDE7CisgICAgICAgIGNvbnN0IHNpemVfdCBu
ZWFyQ2FsbFJlbGF0aXZlTG9jYXRpb25TaXplID0gc2l6ZW9mKGludDMyX3QpOworICAgICAgICAv
LyBXZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgMzItYml0IG5lYXIgY2FsbCBpbW1lZGlhdGUgaXMg
MzItYml0IGFsaWduZWQuCisgICAgICAgIHNpemVfdCBjb2RlU2l6ZSA9IG1fYXNzZW1ibGVyLmNv
ZGVTaXplKCk7CisgICAgICAgIHNpemVfdCBhbGlnbmVkU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZjxuZWFyQ2FsbFJlbGF0aXZlTG9jYXRpb25TaXplPihjb2RlU2l6ZSArIG5lYXJDYWxs
T3Bjb2RlU2l6ZSk7CisgICAgICAgIGVtaXROb3BzKGFsaWduZWRTaXplIC0gKGNvZGVTaXplICsg
bmVhckNhbGxPcGNvZGVTaXplKSk7CisgICAgICAgIERhdGFMYWJlbFB0ciBsYWJlbCA9IERhdGFM
YWJlbFB0cih0aGlzKTsKKyAgICAgICAgQ2FsbCByZXN1bHQgPSBuZWFyVGFpbENhbGwoKTsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChsYWJlbCwgZGlmZmVyZW5jZUJldHdlZW4obGFiZWwsIHJlc3Vs
dCkgPT0gKG5lYXJDYWxsT3Bjb2RlU2l6ZSArIG5lYXJDYWxsUmVsYXRpdmVMb2NhdGlvblNpemUp
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaEFkZDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgc3JjLCBBYnNvbHV0ZUFkZHJlc3Mg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1fcHRyKSwgc2Ny
YXRjaFJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIKaW5kZXggOTZjYzEzOTMzMDIzLi44Njc2YmNmNzVmMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTQ5MCw2ICsx
NDkwLDEwIEBAIG9wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0CiBvcCA6d2Fz
bV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHMKIG9wIDp3YXNtX3RyYW1wb2xp
bmVfd2FzbV9jYWxsX3JlZgogb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3Rs
cworb3AgOndhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsCitvcCA6d2FzbV90cmFtcG9s
aW5lX3dhc21fcmV0dXJuX2NhbGxfbm9fdGxzCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fcmV0
dXJuX2NhbGxfaW5kaXJlY3QKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9p
bmRpcmVjdF9ub190bHMKIAogZW5kX3NlY3Rpb24gOk5hdGl2ZUhlbHBlcnMKIApAQCAtMTY4Niw2
ICsxNjkwLDIyIEBAIG9wIDpjYWxsX25vX3RscywKICAgICAgICAgbnVtYmVyT2ZTdGFja0FyZ3M6
IHVuc2lnbmVkLAogICAgIH0KIAorb3AgOnJldHVybl9jYWxsLAorICAgIGFyZ3M6IHsKKyAgICAg
ICAgZnVuY3Rpb25JbmRleDogdW5zaWduZWQsCisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25l
ZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZWVTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgICAgICBu
dW1iZXJPZkNhbGxlclN0YWNrQXJnczogdW5zaWduZWQsCisgICAgfQorCitvcCA6cmV0dXJuX2Nh
bGxfbm9fdGxzLAorICAgIGFyZ3M6IHsKKyAgICAgICAgZnVuY3Rpb25JbmRleDogdW5zaWduZWQs
CisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZWVT
dGFja0FyZ3M6IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJPZkNhbGxlclN0YWNrQXJnczogdW5z
aWduZWQsCisgICAgfQorCiBvcCA6Y2FsbF9pbmRpcmVjdCwKICAgICBhcmdzOiB7CiAgICAgICAg
IGZ1bmN0aW9uSW5kZXg6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTE3MDQsNiArMTcyNCwyNiBAQCBv
cCA6Y2FsbF9pbmRpcmVjdF9ub190bHMsCiAgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAog
ICAgIH0KIAorb3AgOnJldHVybl9jYWxsX2luZGlyZWN0LAorICAgIGFyZ3M6IHsKKyAgICAgICAg
ZnVuY3Rpb25JbmRleDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzaWduYXR1cmVJbmRleDog
dW5zaWduZWQsCisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVy
T2ZDYWxsZWVTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJPZkNhbGxlclN0YWNr
QXJnczogdW5zaWduZWQsCisgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAorICAgIH0KKwor
b3AgOnJldHVybl9jYWxsX2luZGlyZWN0X25vX3RscywKKyAgICBhcmdzOiB7CisgICAgICAgIGZ1
bmN0aW9uSW5kZXg6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVu
c2lnbmVkLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgICAgIG51bWJlck9m
Q2FsbGVlU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZXJTdGFja0Fy
Z3M6IHVuc2lnbmVkLAorICAgICAgICB0YWJsZUluZGV4OiB1bnNpZ25lZCwKKyAgICB9CisKIG9w
IDpjYWxsX3JlZiwKICAgICBhcmdzOiB7CiAgICAgICAgIGZ1bmN0aW9uUmVmZXJlbmNlOiBWaXJ0
dWFsUmVnaXN0ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKaW5kZXggNWJkYzVlNDRiZDAwLi4xMGVjOGI0NTAyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTM3NCw2ICszNzQsMTAgQEAg
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEoKICAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2Nh
bGxfaW5kaXJlY3Rfbm9fdGxzOgogICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9y
ZWY6CiAgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZl9ub190bHM6CisgICAg
Y2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbDoKKyAgICBjYXNlIHdhc21fdHJh
bXBvbGluZV93YXNtX3JldHVybl9jYWxsX25vX3RsczoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGlu
ZV93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0OgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dh
c21fcmV0dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgogICAgICAgICByZXR1cm4gQ2Fubm90Q29t
cGlsZTsKICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDMwZmZi
YTdjMDQ2Li5iZmFlN2Y1YmY5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI3NTQsNiArMjc1NCwxOCBAQCBfd2Fz
bV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF93aWRlMzI6CiBfd2FzbV90cmFtcG9saW5l
X3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lkZTMyOgogX3dhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfcmVmX3dpZGUzMjoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZl9ub190bHNf
d2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsOgorX3dhc21fdHJhbXBv
bGluZV93YXNtX3JldHVybl9jYWxsX25vX3RsczoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1
cm5fY2FsbF9pbmRpcmVjdDoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9pbmRp
cmVjdF9ub190bHM6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfd2lkZTE2Ogor
X3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsX25vX3Rsc193aWRlMTY6Citfd2FzbV90
cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5kaXJlY3Rfd2lkZTE2OgorX3dhc21fdHJhbXBv
bGluZV93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMTY6Citfd2FzbV90cmFt
cG9saW5lX3dhc21fcmV0dXJuX2NhbGxfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX3Jl
dHVybl9jYWxsX25vX3Rsc193aWRlMzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2Nh
bGxfaW5kaXJlY3Rfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsX2lu
ZGlyZWN0X25vX3Rsc193aWRlMzI6CiAgICAgY3Jhc2goKQogCiBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IGNjY2M2M2YxM2FjZi4uYzc5ZGIw
NmM5Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1i
bHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20K
QEAgLTI3Myw2ICsyNzMsNTEgQEAgbWFjcm8gcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgp
CiAgICAgZW5kCiBlbmQKIAorbWFjcm8gcHJlc2VydmVHUFJzVXNlZEJ5UmV0dXJuQ2FsbCgpCisg
ICAgaWYgQVJNNjQgb3IgQVJNNjRFIG9yIEFSTXY3CisgICAgICAgIGVtaXQgInN0cCB4MCwgeDEs
IFtzcCwgIzE2XSIKKyAgICBlbHNpZiBYODZfNjQgb3IgUklTQ1Y2NAorICAgICAgICBzdG9yZXAg
d2EwLCBDb2RlQmxvY2tbc3BdCisgICAgICAgIHN0b3JlcCB3YTEsIENhbGxlZVtzcF0KKyAgICBl
bHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gcmVzdG9yZUdQUnNVc2Vk
QnlSZXR1cm5DYWxsKCkKKyAgICBpZiBBUk02NCBvciBBUk02NEUgb3IgQVJNdjcKKyAgICAgICAg
ZW1pdCAibGRwIHgwLCB4MSwgW3NwLCAjMTZdIgorICAgIGVsc2lmIFg4Nl82NCBvciBSSVNDVjY0
CisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tzcF0sIHdhMAorICAgICAgICBsb2FkcCBDYWxsZWVb
c3BdLCB3YTEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8g
cHJlc2VydmVSZXR1cm5BZGRyZXNzKHNjcmF0Y2gpCisgICAgaWYgQVJNNjQgb3IgQVJNNjRFIG9y
IEFSTXY3IG9yIFJJU0NWNjQKKyAgICAgICAgbG9hZHAgUHRyU2l6ZVtjZnJdLCBscgorICAgIGVs
c2lmIFg4Nl82NAorICAgICAgICBsb2FkcCBQdHJTaXplW2Nmcl0sIHNjcmF0Y2gKKyAgICAgICAg
c3RvcmVwIHNjcmF0Y2gsIFB0clNpemVbc3BdCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAg
IGVuZAorZW5kCisKK21hY3JvIHVzZVByZXZpb3VzRnJhbWUoKQorICAgIGlmIEFSTTY0IG9yIEFS
TTY0RSBvciBBUk12NworICAgICAgICBlbWl0ICJsZHAgeDI2LCB4MjksIFt4MjksICMtOF0iCisg
ICAgZWxzaWYgWDg2XzY0IG9yIFJJU0NWNjQKKyAgICAgICAgbG9hZHAgLVB0clNpemVbY2ZyXSwg
UEIKKyAgICAgICAgbG9hZHAgW2Nmcl0sIGNmcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAg
ICBlbmQKK2VuZAorCisKIG1hY3JvIGxvYWRXYXNtSW5zdGFuY2VGcm9tVExTVG8ocmVnKQogaWYg
IEhBVkVfRkFTVF9UTFMKICAgICB0bHNfbG9hZHAgV1RGX1dBU01fQ09OVEVYVF9LRVksIHJlZwpA
QCAtMTAxOCw2ICsxMDYzLDE0MyBAQCBlbmQKICAgICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHNs
b3dQYXRoRm9yV2FzbVJldHVybkNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2Up
CisgICAgY2FsbFdhc21DYWxsU2xvd1BhdGgoCisgICAgICAgIHNsb3dQYXRoLAorICAgICAgICAj
IGNhbGxlZSBpcyByMCBhbmQgdGFyZ2V0V2FzbUluc3RhbmNlIGlzIHIxCisgICAgICAgIG1hY3Jv
IChjYWxsZWUsIHRhcmdldFdhc21JbnN0YW5jZSkKKyAgICAgICAgICAgIG1vdmUgY2FsbGVlLCB3
czAKKworICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdP
ZmZzZXRbY2ZyXSwgUEMKKworICAgICAgICAgICAgIyB0aGUgY2FsbCBtaWdodCB0aHJvdyAoZS5n
LiBpbmRpcmVjdCBjYWxsIHdpdGggYmFkIHNpZ25hdHVyZSkKKyAgICAgICAgICAgIGJ0cHogdGFy
Z2V0V2FzbUluc3RhbmNlLCAudGhyb3cKKworICAgICAgICAgICAgd2dldHUoY3R4LCBtX3N0YWNr
T2Zmc2V0LCB3czEpCisgICAgICAgICAgICBtdWxpIFNsb3RTaXplLCB3czEKKworaWYgQVJNdjcK
KyAgICAgICAgICAgIHN1YnAgY2ZyLCB3czEsIHdzMQorICAgICAgICAgICAgbW92ZSB3czEsIHNw
CitlbHNlCisgICAgICAgICAgICBzdWJwIGNmciwgd3MxLCBzcAorZW5kCisKKyAgICAgICAgICAg
IHN0b3JlV2FzbUluc3RhbmNlKHRhcmdldFdhc21JbnN0YW5jZSkKKyAgICAgICAgICAgIHJlbG9h
ZE1lbW9yeVJlZ2lzdGVyc0Zyb21JbnN0YW5jZSh0YXJnZXRXYXNtSW5zdGFuY2UsIHdhMCwgd2Ex
KQorCisgICAgICAgICAgICB3Z2V0dShjdHgsIG1fbnVtYmVyT2ZDYWxsZWVTdGFja0FyZ3MsIHdz
MSkKKworaWYgQVJNNjQgb3IgQVJNNjRFCisgICAgICAgICAgICBsZWFwIFtzcCwgd3MxLCA4XSwg
d3MxCisgICAgICAgICAgICBmb3JFYWNoQXJndW1lbnRKU1IobWFjcm8gKG9mZnNldCwgZ3ByMSwg
Z3ByMikKKyAgICAgICAgICAgICAgICBsb2FkcGFpcnEgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDgg
KyBvZmZzZXRbd3MxXSwgZ3ByMSwgZ3ByMgorICAgICAgICAgICAgZW5kKQorZWxzaWYgSlNWQUxV
RTY0CisgICAgICAgICAgICBmb3JFYWNoQXJndW1lbnRKU1IobWFjcm8gKG9mZnNldCwgZ3ByKQor
ICAgICAgICAgICAgICAgIGxvYWRxIENhbGxGcmFtZUhlYWRlclNpemUgKyA4ICsgb2Zmc2V0W3Nw
LCB3czEsIDhdLCBncHIKKyAgICAgICAgICAgIGVuZCkKK2Vsc2UKKyAgICAgICAgICAgIGZvckVh
Y2hBcmd1bWVudEpTUihtYWNybyAob2Zmc2V0LCBncHJNc3csIGdwTHN3KQorICAgICAgICAgICAg
ICAgIGxvYWQyaWEgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbc3AsIHdzMSwgOF0s
IGdwTHN3LCBncHJNc3cKKyAgICAgICAgICAgIGVuZCkKK2VuZAoraWYgQVJNNjQgb3IgQVJNNjRF
CisgICAgICAgICAgICBmb3JFYWNoQXJndW1lbnRGUFIobWFjcm8gKG9mZnNldCwgZnByMSwgZnBy
MikKKyAgICAgICAgICAgICAgICBsb2FkcGFpcmQgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBv
ZmZzZXRbd3MxXSwgZnByMSwgZnByMgorICAgICAgICAgICAgZW5kKQorZWxzZQorICAgICAgICAg
ICAgZm9yRWFjaEFyZ3VtZW50RlBSKG1hY3JvIChvZmZzZXQsIGZwcikKKyAgICAgICAgICAgICAg
ICBsb2FkZCBDYWxsRnJhbWVIZWFkZXJTaXplICsgOCArIG9mZnNldFtzcCwgd3MxLCA4XSwgZnBy
CisgICAgICAgICAgICBlbmQpCitlbmQKKworICAgICAgICAgICAgIyBXZSBuZWVkIFBDIHRvIGxv
YWQgaW5mb3JtYXRpb24gZnJvbSBjb250ZXh0CisgICAgICAgICAgICAjIGFuZCB0d28gc2NyYXRj
aCByZWdpc3RlcnMgdG8gcGVyZm9ybSB0aGUgY29weQorICAgICAgICAgICAgcHJlc2VydmVHUFJz
VXNlZEJ5UmV0dXJuQ2FsbCgpCisgICAgICAgICAgICBtb3ZlIFBDLCB3czEKKyAgICAgICAgICAg
IGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisK
KyAgICAgICAgICAgICMgZ2V0IG9sZCBzdGFjayBzaXplCisgICAgICAgICAgICB3Z2V0dShjdHgs
IG1fbnVtYmVyT2ZDYWxsZXJTdGFja0FyZ3MsIHdhMCkKKyAgICAgICAgICAgIG11bGkgU2xvdFNp
emUsIHdhMAorICAgICAgICAgICAgYWRkaSBDYWxsRnJhbWVIZWFkZXJTaXplICsgU3RhY2tBbGln
bm1lbnQgLSAxLCB3YTAKKyAgICAgICAgICAgIGFuZGkgflN0YWNrQWxpZ25tZW50TWFzaywgd2Ew
CisKKyAgICAgICAgICAgICMgZ2V0IG5ldyBzdGFjayBzaXplCisgICAgICAgICAgICB3Z2V0dShj
dHgsIG1fbnVtYmVyT2ZDYWxsZWVTdGFja0FyZ3MsIHdhMSkKKyAgICAgICAgICAgIG11bGkgU2xv
dFNpemUsIHdhMQorICAgICAgICAgICAgYWRkaSBDYWxsRnJhbWVIZWFkZXJTaXplICsgU3RhY2tB
bGlnbm1lbnQgLSAxLCB3YTEKKyAgICAgICAgICAgIGFuZGkgflN0YWNrQWxpZ25tZW50TWFzaywg
d2ExCisKKyAgICAgICAgICAgICMgZ2V0IG5ldyBzdGFjayBwb2ludGVyCisgICAgICAgICAgICBh
ZGRwIGNmciwgd2EwCisgICAgICAgICAgICBzdWJwIHdhMSAsIHdhMAorCisgICAgICAgICAgICBt
b3ZlIHdzMSwgUEMKKyAgICAgICAgICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzcyh3czEpCisgICAg
ICAgICAgICB1c2VQcmV2aW91c0ZyYW1lKCkKKworICAgICAgICAgICAgLmNvcHlMb29wOgorICAg
ICAgICAgICAgICAgIGlmIEFSTTY0IGFuZCBub3QgQUREUkVTUzY0CisgICAgICAgICAgICAgICAg
ICAgIHN1YmkgTWFjaGluZVJlZ2lzdGVyU2l6ZSwgd2ExCisgICAgICAgICAgICAgICAgICAgIGxv
YWRxIFtzcCwgd2ExLCAxXSwgd3MxCisgICAgICAgICAgICAgICAgICAgIHN0b3JlcSB3czEsIFt3
YTAsIHdhMSwgMV0KKyAgICAgICAgICAgICAgICAgICAgYnRpbnogd2ExLCAuY29weUxvb3AKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN1YnAgTWFjaGluZVJlZ2lz
dGVyU2l6ZSwgd2ExCisgICAgICAgICAgICAgICAgICAgIGxvYWRwIFtzcCwgd2ExLCAxXSwgd3Mx
CisgICAgICAgICAgICAgICAgICAgIHN0b3JlcCB3czEsIFt3YTAsIHdhMSwgMV0KKyAgICAgICAg
ICAgICAgICAgICAgYnRpbnogd2ExLCAuY29weUxvb3AKKyAgICAgICAgICAgICAgICBlbmQKKwor
ICAgICAgICAgICAgbW92ZSB3YTAsIHdzMQorICAgICAgICAgICAgcmVzdG9yZUdQUnNVc2VkQnlS
ZXR1cm5DYWxsKCkKKworICAgICAgICAgICAgaWYgQVJNNjQgb3IgQVJNNjRFIG9yIEFSTXY3IG9y
IFJJU0NWNjQKKyAgICAgICAgICAgICAgICBhZGRwIENhbGxlckZyYW1lQW5kUENTaXplLCB3czEs
IHNwCisgICAgICAgICAgICBlbHNpZiBYODZfNjQKKyAgICAgICAgICAgICAgICBhZGRwIFB0clNp
emUsIHdzMSwgc3AKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlcnJvcgorICAg
ICAgICAgICAgZW5kCisKKyAgICAgICAgICAgIGN0eChtYWNybyhvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIHNpemUpCisgICAgICAgICAgICAgICAgbWFjcm8ganVtcE5hcnJvdygpCisgICAgICAg
ICAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgICAgICAgICAgbGVhcCBKU0ND
b25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3Rl
eHByIEdhdGU6OiVvcGNvZGVOYW1lJSkgKiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQYXRo
UHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBfd2Fz
bV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJToKKyAgICAgICAgICAgICAgICAgICAgam1wIHdzMCwg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAg
ICAgICBtYWNybyBqdW1wV2lkZTE2KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisg
ICAgICAgICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9m
ZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dp
ZGUxNikgKiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNv
ZGVOYW1lJV93aWRlMTY6CisgICAgICAgICAgICAgICAgICAgIGptcCB3czAsIEpTRW50cnlTbG93
UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAgICAgbWFjcm8g
anVtcFdpZGUzMigpCisgICAgICAgICAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAg
ICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0Nv
bmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMzIpICogUHRy
U2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2ZVRvSklU
R2F0ZVB0clRhZyAjIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgICAgICBl
bmQKKyAgICAgICAgICAgICAgICAgICAgX3dhc21fdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lk
ZTMyOgorICAgICAgICAgICAgICAgICAgICBqbXAgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcK
KyAgICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICAgIHNpemUoanVtcE5hcnJvdywg
anVtcFdpZGUxNiwganVtcFdpZGUzMiwgbWFjcm8gKGdlbikgZ2VuKCkgZW5kKQorICAgICAgICAg
ICAgZW5kKQorICAgIC50aHJvdzoKKyAgICByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKKyAgICBk
aXNwYXRjaChjdHgpCisgICAgZW5kKQorZW5kCisKIHVucHJlZml4ZWRXYXNtT3Aod2FzbV9jYWxs
LCBXYXNtQ2FsbCwgbWFjcm8oY3R4KQogICAgIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xv
d19wYXRoX3dhc21fY2FsbCwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKIGVuZCkKQEAgLTEwNDIs
NiArMTIyNCwyMiBAQCB3YXNtT3AoY2FsbF9yZWZfbm9fdGxzLCBXYXNtQ2FsbFJlZk5vVGxzLCBt
YWNybyhjdHgpCiAgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9j
YWxsX3JlZl9ub190bHMsIG1hY3JvKHRhcmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNl
LCB3YXNtSW5zdGFuY2UgZW5kKQogZW5kKQogCit3YXNtT3AocmV0dXJuX2NhbGwsIFdhc21SZXR1
cm5DYWxsLCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtUmV0dXJuQ2FsbChjdHgsIF9z
bG93X3BhdGhfd2FzbV9yZXR1cm5fY2FsbCwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKK2VuZCkK
Kword2FzbU9wKHJldHVybl9jYWxsX25vX3RscywgV2FzbVJldHVybkNhbGxOb1RscywgbWFjcm8o
Y3R4KQorICAgIHNsb3dQYXRoRm9yV2FzbVJldHVybkNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21f
cmV0dXJuX2NhbGxfbm9fdGxzLCBtYWNybyh0YXJnZXRJbnN0YW5jZSkgbW92ZSB0YXJnZXRJbnN0
YW5jZSwgd2FzbUluc3RhbmNlIGVuZCkKK2VuZCkKKword2FzbU9wKHJldHVybl9jYWxsX2luZGly
ZWN0LCBXYXNtUmV0dXJuQ2FsbEluZGlyZWN0LCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JX
YXNtUmV0dXJuQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdCwg
c3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKK2VuZCkKKword2FzbU9wKHJldHVybl9jYWxsX2luZGly
ZWN0X25vX3RscywgV2FzbVJldHVybkNhbGxJbmRpcmVjdE5vVGxzLCBtYWNybyhjdHgpCisgICAg
c2xvd1BhdGhGb3JXYXNtUmV0dXJuQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9yZXR1cm5fY2Fs
bF9pbmRpcmVjdF9ub190bHMsIG1hY3JvKHRhcmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3Rh
bmNlLCB3YXNtSW5zdGFuY2UgZW5kKQorZW5kKQorCiB3YXNtT3AoY3VycmVudF9tZW1vcnksIFdh
c21DdXJyZW50TWVtb3J5LCBtYWNybyhjdHgpCiAgICAgbG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1f
bWVtb3J5W3dhc21JbnN0YW5jZV0sIHQwCiAgICAgbG9hZHAgV2FzbTo6TWVtb3J5OjptX2hhbmRs
ZVt0MF0sIHQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApp
bmRleCAwNTVjYzhiZWQ2MTEuLmQ2MWE5ZWQwZjM3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01NTQsNiArNTU0LDcgQEAgYm9vbCBjYW5Vc2VX
ZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5R0MsIGZh
bHNlLCBOb3JtYWwsICJBbGxvdyBnYyB0eXBlcyBmcm9tIHRoZSB3YXNtIGdjIHByb3Bvc2FsLiIp
IFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5RXhjZXB0aW9ucywgdHJ1ZSwgTm9ybWFsLCAi
QWxsb3cgdGhlIG5ldyBzZWN0aW9uIGFuZCBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgd2FzbSBleGNl
cHRpb24gaGFuZGxpbmcgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseUJyYW5j
aEhpbnRzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0aGUgbmV3IHNlY3Rpb24gZnJvbSB0aGUgd2Fz
bSBicmFuY2ggaGludGluZyBzcGVjLiIpIFwKKyAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VGFp
bENhbGxzLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgdGhlIG5ldyBpbnN0cnVjdGlvbnMgZnJvbSB0
aGUgd2FzbSB0YWlsIGNhbGxzIHNwZWMuIikgXAogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAKaW5kZXggMjljNThlYTgwZTY3Li5lOTY0ODE3NTQwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtNDE3LDggKzQxNywx
MSBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2Fs
bCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhw
cmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRl
eCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBS
ZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRDYWxsUmVmKGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBl
PiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkUmV0dXJuQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgVHlw
ZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiBy
ZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5D
YWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGVtaXRJbmRpcmVjdENhbGwoVHlwZWRUbXAg
Y2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUsIGNvbnN0IFR5cGVEZWZp
bml0aW9uJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYp
OworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGVtaXRSZXR1cm5DYWxsSW5k
aXJlY3QoVHlwZWRUbXAgY2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUs
IGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJn
cywgUmVzdWx0TGlzdCYpOwogICAgIHN0ZDo6cGFpcjxCMzo6UGF0Y2hwb2ludFZhbHVlKiwgUGF0
Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGVtaXRDYWxsUGF0Y2hw
b2ludChCYXNpY0Jsb2NrKiwgY29uc3QgVHlwZURlZmluaXRpb24mLCBjb25zdCBSZXN1bHRMaXN0
JiByZXN1bHRzLCBjb25zdCBWZWN0b3I8VHlwZWRUbXA+JiBhcmdzLCBWZWN0b3I8Q29uc3RyYWlu
ZWRUbXA+IGV4dHJhQXJncyA9IHsgfSk7CiAKICAgICBQYXJ0aWFsUmVzdWx0IGFkZFNoaWZ0KFR5
cGUsIEIzOjpBaXI6Ok9wY29kZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBl
IHNoaWZ0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKQEAgLTgzNCw2ICs4MzcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVzdG9yZVdhc21Db250ZXh0SW5zdGFuY2UoQmFzaWNCbG9jayosIFR5
cGVkVG1wKTsKICAgICBlbnVtIGNsYXNzIFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHsgTm8sIFll
cyB9OwogICAgIHZvaWQgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hl
ZFN0YWNrTGltaXQsIGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiwgVHlwZWRUbXAgaW5zdGFuY2Us
IEJhc2ljQmxvY2sqKTsKKyAgICB2b2lkIHByZXBhcmVGb3JSZXR1cm5DYWxsKENDYWxsSGVscGVy
cyYsIGNvbnN0IENhbGxJbmZvcm1hdGlvbiYsIGNvbnN0IENhbGxJbmZvcm1hdGlvbiYpOwogCiAg
ICAgQjM6Ok9yaWdpbiBvcmlnaW4oKTsKIApAQCAtMzY0NSwxNCArMzY0OSwxNCBAQCBhdXRvIEFp
cklSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFR5cGVE
ZWZpbml0aW9uJiBzaWduYQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUu
YXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPnJldHVybkNvdW50KCk7ICsraSkKICAgICAgICAgcmVz
dWx0cy5hcHBlbmQodG1wRm9yVHlwZShzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkt
PnJldHVyblR5cGUoaSkpKTsKIAorICAgIGF1dG8gY3VycmVudEluc3RhbmNlID0gZzY0KCk7Cisg
ICAgYXBwZW5kKE1vdmUsIGluc3RhbmNlVmFsdWUoKSwgY3VycmVudEluc3RhbmNlKTsKKwogICAg
IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiogdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMg
PSAmbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsKIAogICAgIGlmIChtX2luZm8uaXNJbXBvcnRl
ZEZ1bmN0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KSkgewogICAgICAg
ICBtX21heE51bUpTQ2FsbEFyZ3VtZW50cyA9IHN0ZDo6bWF4KG1fbWF4TnVtSlNDYWxsQXJndW1l
bnRzLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJncy5zaXplKCkpKTsKIAotICAgICAgICBhdXRv
IGN1cnJlbnRJbnN0YW5jZSA9IGc2NCgpOwotICAgICAgICBhcHBlbmQoTW92ZSwgaW5zdGFuY2VW
YWx1ZSgpLCBjdXJyZW50SW5zdGFuY2UpOwotCiAgICAgICAgIGF1dG8gdGFyZ2V0SW5zdGFuY2Ug
PSBnNjQoKTsKIAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYmV0dGVyIGlzZWwg
aGVyZS4KQEAgLTM3MTcsOCArMzcyMSw2IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGwo
dWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hCiAgICAg
ICAgIH0KIAogICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKLSAgICAgICAg
Ly8gVGhlIGNhbGwgY291bGQgaGF2ZSBiZWVuIHRvIGFub3RoZXIgV2ViQXNzZW1ibHkgaW5zdGFu
Y2UsIGFuZCAvIG9yIGNvdWxkIGhhdmUgbW9kaWZpZWQgb3VyIE1lbW9yeS4KLSAgICAgICAgcmVz
dG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6Olllcywg
bV9pbmZvLm1lbW9yeSwgY3VycmVudEluc3RhbmNlLCBjb250aW51YXRpb24pOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGF1dG8gcGFpciA9IGVtaXRDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9j
aywgc2lnbmF0dXJlLCByZXN1bHRzLCBhcmdzKTsKICAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9
IHBhaXIuZmlyc3Q7CkBAIC0zNzM1LDYgKzM3MzcsOCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWdu
YQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KKyAgICAvLyBUaGUgY2FsbCBj
b3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBXZWJBc3NlbWJseSBpbnN0YW5jZSwgYW5kIC8gb3Ig
Y291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVtb3J5LgorICAgIHJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0OjpZZXMsIG1faW5mby5tZW1vcnksIGN1
cnJlbnRJbnN0YW5jZSwgbV9jdXJyZW50QmxvY2spOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAg
LTM4NTAsNiArMzg1NCwyMjUgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25z
dCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2kKICAgICByZXR1cm4g
ZW1pdEluZGlyZWN0Q2FsbChjYWxsZWVJbnN0YW5jZSwgY2FsbGVlQ29kZSwgc2lnbmF0dXJlLCBh
cmdzLCByZXN1bHRzKTsKIH0KIAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbCh1
aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0
aWFsUmVzdWx0Cit7CisgICAgQVNTRVJUKHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4o
KS0+YXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKKworICAgIGNvbnN0IFR5cGVJbmRl
eCBjYWxsZXJUeXBlSW5kZXggPSBtX2luZm8uaW50ZXJuYWxGdW5jdGlvblR5cGVJbmRpY2VzW21f
ZnVuY3Rpb25JbmRleF07CisgICAgY29uc3QgVHlwZURlZmluaXRpb24mIGNhbGxlclR5cGVEZWZp
bml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoY2FsbGVyVHlwZUluZGV4KTsKKyAgICBjb25z
dCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpOworICAg
IENhbGxJbmZvcm1hdGlvbiB3YXNtQ2FsbGVySW5mbyA9IGNhbGxpbmdDb252ZW50aW9uLmNhbGxJ
bmZvcm1hdGlvbkZvcihjYWxsZXJUeXBlRGVmaW5pdGlvbiwgQ2FsbFJvbGU6OkNhbGxlZSk7Cisg
ICAgQ2FsbEluZm9ybWF0aW9uIHdhc21DYWxsZWVJbmZvID0gY2FsbGluZ0NvbnZlbnRpb24uY2Fs
bEluZm9ybWF0aW9uRm9yKHNpZ25hdHVyZSwgQ2FsbFJvbGU6OkNhbGxlcik7CisKKyAgICBtX21h
a2VzQ2FsbHMgPSB0cnVlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVy
ZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+cmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICBy
ZXN1bHRzLmFwcGVuZCh0bXBGb3JUeXBlKHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4o
KS0+cmV0dXJuVHlwZShpKSkpOworCisgICAgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+
KiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscyA9ICZtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzOwor
CisgICAgaWYgKG1faW5mby5pc0ltcG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNl
KGZ1bmN0aW9uSW5kZXgpKSB7CisgICAgICAgIG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzID0gc3Rk
OjptYXgobV9tYXhOdW1KU0NhbGxBcmd1bWVudHMsIHN0YXRpY19jYXN0PHVpbnQzMl90Pihhcmdz
LnNpemUoKSkpOworCisgICAgICAgIGF1dG8gY3VycmVudEluc3RhbmNlID0gZzY0KCk7CisgICAg
ICAgIGFwcGVuZChNb3ZlLCBpbnN0YW5jZVZhbHVlKCksIGN1cnJlbnRJbnN0YW5jZSk7CisKKyAg
ICAgICAgYXV0byB0YXJnZXRJbnN0YW5jZSA9IGc2NCgpOworCisgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgaGF2ZSBiZXR0ZXIgaXNlbCBoZXJlLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzOTk5CisgICAgICAgIGFwcGVuZChNb3ZlLCBB
cmc6OmJpZ0ltbShJbnN0YW5jZTo6b2Zmc2V0T2ZUYXJnZXRJbnN0YW5jZShmdW5jdGlvbkluZGV4
KSksIHRhcmdldEluc3RhbmNlKTsKKyAgICAgICAgYXBwZW5kKEFkZDY0LCBpbnN0YW5jZVZhbHVl
KCksIHRhcmdldEluc3RhbmNlKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0YXJn
ZXRJbnN0YW5jZSksIHRhcmdldEluc3RhbmNlKTsKKworICAgICAgICBCYXNpY0Jsb2NrKiBpc1dh
c21CbG9jayA9IG1fY29kZS5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBpc0VtYmVk
ZGVyQmxvY2sgPSBtX2NvZGUuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uID0gbV9jb2RlLmFkZEJsb2NrKCk7CisKKyAgICAgICAgYXBwZW5kKEJyYW5jaFRlc3Q2
NCwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvKSwgdGFyZ2V0SW5zdGFuY2Us
IHRhcmdldEluc3RhbmNlKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPnNldFN1Y2Nlc3NvcnMo
aXNXYXNtQmxvY2ssIGlzRW1iZWRkZXJCbG9jayk7CisKKyAgICAgICAgeworICAgICAgICAgICAg
YXV0byBwYWlyID0gZW1pdENhbGxQYXRjaHBvaW50KGlzV2FzbUJsb2NrLCBzaWduYXR1cmUsIHJl
c3VsdHMsIGFyZ3MpOworICAgICAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9IHBhaXIuZmlyc3Q7
CisgICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbkhhbmRsZSA9IHBhaXIuc2Vjb25kOworICAgICAg
ICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlubmVkIHJlZ2lzdGVy
cyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5jZS4KKyAgICAgICAgICAgIC8v
IFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UgY291bGQgYmUgY2FsbGluZyB0byBzb21ldGhp
bmcgdGhhdCBpcyBib3VuZHMgY2hlY2tpbmcuCisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkbid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjE4MQorICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVk
UmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsK
KworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXShDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOworICAgICAgICAgICAgICAgIHByZXBhcmVGb3JSZXR1cm5DYWxsKGppdCwgd2Fz
bUNhbGxlckluZm8sIHdhc21DYWxsZWVJbmZvKTsKKyAgICAgICAgICAgICAgICBleGNlcHRpb25I
YW5kbGUuZ2VuZXJhdGUoaml0LCBwYXJhbXMsIHRoaXMpOworICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyVGFpbENhbGwo
KTsKKyAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soW3VubGlua2VkV2FzbVRvV2FzbUNh
bGxzLCBjYWxsLCBmdW5jdGlvbkluZGV4XShMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAg
ICAgICAgICAgICAgICAgIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLT5hcHBlbmQoeyBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxXYXNtRW50cnlQdHJUYWc+KGNhbGwpLCBmdW5jdGlvbklu
ZGV4IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgIGFwcGVuZChpc1dhc21CbG9jaywgSnVtcCk7CisgICAgICAgICAgICBpc1dhc21CbG9jay0+
c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgeworICAg
ICAgICAgICAgYXV0byBqdW1wRGVzdGluYXRpb24gPSBnNjQoKTsKKyAgICAgICAgICAgIGFwcGVu
ZChpc0VtYmVkZGVyQmxvY2ssIE1vdmUsIEFyZzo6YmlnSW1tKEluc3RhbmNlOjpvZmZzZXRPZldh
c21Ub0VtYmVkZGVyU3R1YihmdW5jdGlvbkluZGV4KSksIGp1bXBEZXN0aW5hdGlvbik7CisgICAg
ICAgICAgICBhcHBlbmQoaXNFbWJlZGRlckJsb2NrLCBBZGQ2NCwgaW5zdGFuY2VWYWx1ZSgpLCBq
dW1wRGVzdGluYXRpb24pOworICAgICAgICAgICAgYXBwZW5kKGlzRW1iZWRkZXJCbG9jaywgTW92
ZSwgQXJnOjphZGRyKGp1bXBEZXN0aW5hdGlvbiksIGp1bXBEZXN0aW5hdGlvbik7CisKKyAgICAg
ICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFRtcD4ganVtcEFyZ3M7CisgICAgICAgICAgICBqdW1w
QXJncy5hcHBlbmQoeyBqdW1wRGVzdGluYXRpb24sIEIzOjpWYWx1ZVJlcDo6U29tZVJlZ2lzdGVy
IH0pOworICAgICAgICAgICAgYXV0byBwYWlyID0gZW1pdENhbGxQYXRjaHBvaW50KGlzRW1iZWRk
ZXJCbG9jaywgc2lnbmF0dXJlLCByZXN1bHRzLCBhcmdzLCBXVEZNb3ZlKGp1bXBBcmdzKSk7Cisg
ICAgICAgICAgICBhdXRvKiBwYXRjaHBvaW50ID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgIGF1
dG8gZXhjZXB0aW9uSGFuZGxlID0gcGFpci5zZWNvbmQ7CisKKyAgICAgICAgICAgIC8vIFdlIG5l
ZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWln
aHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCisgICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3Rp
Y2FsbHkgYXNzdW1lIHdlIGNvdWxkIGJlIGNhbGxpbmcgdG8gc29tZXRoaW5nIHRoYXQgaXMgYm91
bmRzIGNoZWNraW5nLgorICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRv
IGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEK
KyAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6
Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgICAgICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAg
ICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsK
KyAgICAgICAgICAgICAgICBqaXQuY2FsbChwYXJhbXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3Vu
dChwYXJhbXMudmFsdWUoKS0+dHlwZSgpKV0uZ3ByKCksIFdhc21FbnRyeVB0clRhZyk7CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgYXBwZW5kKGlzRW1iZWRkZXJCbG9jaywgSnVtcCk7
CisgICAgICAgICAgICBpc0VtYmVkZGVyQmxvY2stPnNldFN1Y2Nlc3NvcnMoY29udGludWF0aW9u
KTsKKyAgICAgICAgfQorCisgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gcGFpciA9IGVtaXRDYWxsUGF0Y2hwb2ludChtX2N1
cnJlbnRCbG9jaywgc2lnbmF0dXJlLCByZXN1bHRzLCBhcmdzKTsKKyAgICAgICAgYXV0byogcGF0
Y2hwb2ludCA9IHBhaXIuZmlyc3Q7CisgICAgICAgIGF1dG8gZXhjZXB0aW9uSGFuZGxlID0gcGFp
ci5zZWNvbmQ7CisgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciB0aGUgc2l6ZSByZWdpc3Rl
ciBzaW5jZSB0aGUgTExJbnQgYWx3YXlzIGJvdW5kcyBjaGVja3MKKyAgICAgICAgaWYgKG1fbW9k
ZSA9PSBNZW1vcnlNb2RlOjpTaWduYWxpbmcgfHwgbV9pbmZvLm1lbW9yeS5pc1NoYXJlZCgpKQor
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQaW5uZWRS
ZWdpc3RlckluZm86OmdldCgpLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyIH0pOworCisgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPSwgdGhpc10oQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAg
ICAgICAgICAgcHJlcGFyZUZvclJldHVybkNhbGwoaml0LCB3YXNtQ2FsbGVySW5mbywgd2FzbUNh
bGxlZUluZm8pOworICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLmdlbmVyYXRlKGppdCwgcGFy
YW1zLCB0aGlzKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRo
cmVhZFNhZmVQYXRjaGFibGVOZWFyVGFpbENhbGwoKTsKKyAgICAgICAgICAgIGppdC5hZGRMaW5r
VGFzayhbdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNhbGwsIGZ1bmN0aW9uSW5kZXhdKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICB1bmxpbmtlZFdhc21Ub1dhc21D
YWxscy0+YXBwZW5kKHsgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8V2FzbUVudHJ5UHRy
VGFnPihjYWxsKSwgZnVuY3Rpb25JbmRleCB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBBaXJJUkdlbmVyYXRvcjo6cHJl
cGFyZUZvclJldHVybkNhbGwoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IENhbGxJbmZvcm1hdGlv
biYgY2FsbGVySW5mbywgY29uc3QgQ2FsbEluZm9ybWF0aW9uJiBjYWxsZWVJbmZvKQoreworICAg
IHVpbnQzMl90IGNhbGxlclN0YWNrU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudEJ5dGVzKCksIGNhbGxlckluZm8uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJ
bkJ5dGVzKTsKKyAgICB1aW50MzJfdCBjYWxsZWVTdGFja1NpemUgPSBXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBjYWxsZWVJbmZvLmhlYWRlckFuZEFyZ3Vt
ZW50U3RhY2tTaXplSW5CeXRlcyk7CisgICAgdWludDMyX3Qgb2Zmc2V0RnJvbVNQID0gbV9jb2Rl
LmZyYW1lU2l6ZSgpICsgY2FsbGVyU3RhY2tTaXplIC0gY2FsbGVlU3RhY2tTaXplOworICAgIEdQ
UlJlZyBzY3JhdGNoID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BS
c1sxXTsKKworI2lmIENQVShYODZfNjQpCisgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6QWRkcmVzcyhNYWNyb0Fz
c2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQo
KSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpLCBzY3JhdGNoKTsKKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFQUExFX0FSTVY3Uykg
fHwgQ1BVKFJJU0NWNjQpCisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKE1h
Y3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09m
ZnNldCgpKSwgaml0LmxpbmtSZWdpc3Rlcik7CisjZWxzZQorICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOworI2VuZGlmCisKKyAgICBqaXQuZW1pdFJlc3RvcmUobV9jb2RlLmNhbGxlZVNh
dmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKSwgTWFjcm9Bc3Nl
bWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIHVpbnQzMl90IG9mZnNldCA9IGNh
bGxlZVN0YWNrU2l6ZSArIHNpemVvZihSZWdpc3Rlcik7CisgICAgd2hpbGUgKG9mZnNldCkgewor
ICAgICAgICBvZmZzZXQgLT0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
b2Zmc2V0KSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50
ZXJSZWdpc3Rlciwgb2Zmc2V0RnJvbVNQICsgb2Zmc2V0KSwgc2NyYXRjaCk7CisgICAgfQorICAg
IGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihvZmZzZXRGcm9tU1ApLCBN
YWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworfQorCithdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRSZXR1cm5DYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3Qg
VHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywg
UmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAoreworICAgIEV4cHJlc3Npb25U
eXBlIGNhbGxlZUluZGV4ID0gYXJncy50YWtlTGFzdCgpOworICAgIEFTU0VSVChzaWduYXR1cmUu
YXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7
CisgICAgQVNTRVJUKG1faW5mby50YWJsZUNvdW50KCkgPiB0YWJsZUluZGV4KTsKKyAgICBBU1NF
UlQobV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6
RnVuY3JlZik7CisKKyAgICBtX21ha2VzQ2FsbHMgPSB0cnVlOworICAgIC8vIE5vdGU6IGNhbGwg
aW5kaXJlY3QgY2FuIGNhbGwgZWl0aGVyIFdlYkFzc2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24uIEJlY2F1c2UKKyAgICAvLyBXZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbiBpcyBsaWtlIGNhbGxpbmcgaW50byB0aGUgZW1iZWRkZXIsIHdlIGNvbnNlcnZhdGl2ZWx5
IGFzc3VtZSBhbGwgY2FsbCBpbmRpcmVjdHMKKyAgICAvLyBjYW4gYmUgdG8gdGhlIGVtYmVkZGVy
IGZvciBvdXIgc3RhY2sgY2hlY2sgY2FsY3VsYXRpb24uCisgICAgbV9tYXhOdW1KU0NhbGxBcmd1
bWVudHMgPSBzdGQ6Om1heChtX21heE51bUpTQ2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7CisKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsYWJsZUZ1bmN0
aW9uQnVmZmVyID0gZzY0KCk7CisgICAgRXhwcmVzc2lvblR5cGUgaW5zdGFuY2VzQnVmZmVyID0g
ZzY0KCk7CisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCA9
IGc2NCgpOworICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZv
cm0oRnVuY1JlZlRhYmxlOjpvZmZzZXRPZkZ1bmN0aW9ucygpLCBCMzo6V2lkdGg2NCkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShGdW5jUmVmVGFibGU6Om9m
ZnNldE9mSW5zdGFuY2VzKCksIEIzOjpXaWR0aDY0KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KEFyZzo6aXNWYWxpZEFkZHJGb3JtKEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZMZW5ndGgoKSwgQjM6
OldpZHRoNjQpKTsKKworICAgICAgICBpZiAoVU5MSUtFTFkoIUFyZzo6aXNWYWxpZEFkZHJGb3Jt
KEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUlu
ZGV4KSwgQjM6OldpZHRoNjQpKSkgeworICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6Ymln
SW1tKEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJs
ZUluZGV4KSksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgpOworICAgICAgICAgICAgYXBw
ZW5kKEFkZDY0LCBpbnN0YW5jZVZhbHVlKCksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgp
OworICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVm
ZmVyTGVuZ3RoKSwgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihpbnN0YW5jZVZhbHVlKCksIElu
c3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4
KSksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgpOworICAgICAgICBhcHBlbmQoTW92ZSwg
QXJnOjphZGRyKGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgsIEZ1bmNSZWZUYWJsZTo6b2Zm
c2V0T2ZGdW5jdGlvbnMoKSksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXIpOworICAgICAgICBhcHBl
bmQoTW92ZSwgQXJnOjphZGRyKGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgsIEZ1bmNSZWZU
YWJsZTo6b2Zmc2V0T2ZJbnN0YW5jZXMoKSksIGluc3RhbmNlc0J1ZmZlcik7CisgICAgICAgIGFw
cGVuZChNb3ZlMzIsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBUYWJs
ZTo6b2Zmc2V0T2ZMZW5ndGgoKSksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgpOworICAg
IH0KKworICAgIGFwcGVuZChNb3ZlMzIsIGNhbGxlZUluZGV4LCBjYWxsZWVJbmRleCk7CisKKyAg
ICAvLyBDaGVjayB0aGUgaW5kZXggd2UgYXJlIGxvb2tpbmcgZm9yIGlzIHZhbGlkLgorICAgIGVt
aXRDaGVjayhbJl0geworICAgICAgICByZXR1cm4gSW5zdChCcmFuY2gzMiwgbnVsbHB0ciwgQXJn
OjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwpLCBjYWxsZWVJbmRleCwgY2Fs
bGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCk7CisgICAgICAgIH0sIFs9LCB0aGlzXShDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAg
ICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9m
Qm91bmRzQ2FsbEluZGlyZWN0KTsKKyAgICAgICAgfSk7CisKKyAgICBFeHByZXNzaW9uVHlwZSBj
YWxsZWVDb2RlID0gZzY0KCk7CisgICAgeworICAgICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVT
aWduYXR1cmVJbmRleCA9IGc2NCgpOworICAgICAgICAvLyBDb21wdXRlIHRoZSBvZmZzZXQgaW4g
dGhlIHRhYmxlIGluZGV4IHNwYWNlIHdlIGFyZSBsb29raW5nIGZvci4KKyAgICAgICAgYXBwZW5k
KE1vdmUsIEFyZzo6aW1tKHNpemVvZihXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uKSksIGNh
bGxlZVNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgYXBwZW5kKE11bDY0LCBjYWxsZWVJbmRleCwg
Y2FsbGVlU2lnbmF0dXJlSW5kZXgpOworICAgICAgICBhcHBlbmQoQWRkNjQsIGNhbGxhYmxlRnVu
Y3Rpb25CdWZmZXIsIGNhbGxlZVNpZ25hdHVyZUluZGV4KTsKKworICAgICAgICBhcHBlbmQoTW92
ZSwgQXJnOjphZGRyKGNhbGxlZVNpZ25hdHVyZUluZGV4LCBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1
bmN0aW9uOjpvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSksIGNhbGxlZUNvZGUpOyAv
LyBQb2ludGVyIHRvIGNhbGxlZSBjb2RlLgorCisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIFdh
c21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24gaXMgaW5pdGlhbGl6ZWQuIFdlIHRyYXAgaWYgaXQg
aXNuJ3QuIEFuICJpbnZhbGlkIiBTaWduYXR1cmVJbmRleCBpbmRpY2F0ZXMgaXQncyBub3QgaW5p
dGlhbGl6ZWQuCisgICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGhhdmUgdHJhcCBoYW5kbGVycywg
d2UgY2FuIGp1c3QgbGV0IHRoZSBjYWxsIGZhaWwgYmVjYXVzZSBTaWduYXR1cmU6OmludmFsaWRJ
bmRleCBpcyAwLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjEw
CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rp
b246OnR5cGVJbmRleCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIkxvYWQgY29kZWdlbiBhc3N1bWVz
IGk2NCIpOworCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlZW1zIHdhc3RlZnVsIHRvIGRvIHR3
byBjaGVja3MganVzdCBmb3IgYSBuaWNlciBlcnJvciBtZXNzYWdlLgorICAgICAgICAvLyBXZSBz
aG91bGQgbW92ZSBqdXN0IHRvIHVzZSBhIHNpbmdsZSBicmFuY2ggYW5kIHRoZW4gZmlndXJlIG91
dCB3aGF0CisgICAgICAgIC8vIGVycm9yIHRvIHVzZSBpbiB0aGUgZXhjZXB0aW9uIGhhbmRsZXIu
CisKKyAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsZWVTaWduYXR1cmVJbmRleCwg
V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZTaWduYXR1cmVJbmRleCgpKSwg
Y2FsbGVlU2lnbmF0dXJlSW5kZXgpOworCisgICAgICAgIGVtaXRDaGVjayhbJl0geworICAgICAg
ICAgICAgc3RhdGljX2Fzc2VydCghVHlwZURlZmluaXRpb246OmludmFsaWRJbmRleCwgIiIpOwor
ICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoVGVzdDY0LCBudWxscHRyLCBBcmc6OnJlc0Nv
bmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBjYWxsZWVTaWduYXR1cmVJbmRleCwgY2FsbGVlU2ln
bmF0dXJlSW5kZXgpOworICAgICAgICB9LCBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgdGhpcy0+
ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6TnVsbFRhYmxlRW50cnkpOwor
ICAgICAgICB9KTsKKworICAgICAgICBFeHByZXNzaW9uVHlwZSBleHBlY3RlZFNpZ25hdHVyZUlu
ZGV4ID0gZzY0KCk7CisgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbShUeXBlSW5mb3Jt
YXRpb246OmdldChzaWduYXR1cmUpKSwgZXhwZWN0ZWRTaWduYXR1cmVJbmRleCk7CisgICAgICAg
IGVtaXRDaGVjayhbJl0geworICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJhbmNoNjQsIG51bGxw
dHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpLCBjYWxsZWVTaWduYXR1
cmVJbmRleCwgZXhwZWN0ZWRTaWduYXR1cmVJbmRleCk7CisgICAgICAgIH0sIFs9LCB0aGlzXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
CisgICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBl
OjpCYWRTaWduYXR1cmUpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxlZUlu
c3RhbmNlID0gZzY0KCk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6aW5kZXgoaW5zdGFuY2VzQnVm
ZmVyLCBjYWxsZWVJbmRleCwgOCwgMCksIGNhbGxlZUluc3RhbmNlKTsKKworICAgIHJldHVybiBl
bWl0UmV0dXJuQ2FsbEluZGlyZWN0KGNhbGxlZUluc3RhbmNlLCBjYWxsZWVDb2RlLCBzaWduYXR1
cmUsIGFyZ3MsIHJlc3VsdHMpOworfQorCiBhdXRvIEFpcklSR2VuZXJhdG9yOjplbWl0SW5kaXJl
Y3RDYWxsKFR5cGVkVG1wIGNhbGxlZUluc3RhbmNlLCBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2Rl
LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAg
ICAgYXV0byBjdXJyZW50SW5zdGFuY2UgPSBnNjQoKTsKQEAgLTM5MzEsNiArNDE1NCw5MyBAQCBh
dXRvIEFpcklSR2VuZXJhdG9yOjplbWl0SW5kaXJlY3RDYWxsKFR5cGVkVG1wIGNhbGxlZUluc3Rh
bmNlLCBFeHByZXNzaW9uVHlwZSBjYQogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gQWlySVJH
ZW5lcmF0b3I6OmVtaXRSZXR1cm5DYWxsSW5kaXJlY3QoVHlwZWRUbXAgY2FsbGVlSW5zdGFuY2Us
IEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1
cmUsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3Vs
dHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBhdXRvIGN1cnJlbnRJbnN0YW5jZSA9IGc2NCgp
OworICAgIGFwcGVuZChNb3ZlLCBpbnN0YW5jZVZhbHVlKCksIGN1cnJlbnRJbnN0YW5jZSk7CisK
KyAgICBjb25zdCBUeXBlSW5kZXggY2FsbGVyVHlwZUluZGV4ID0gbV9pbmZvLmludGVybmFsRnVu
Y3Rpb25UeXBlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdOworICAgIGNvbnN0IFR5cGVEZWZpbml0
aW9uJiBjYWxsZXJUeXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlclR5
cGVJbmRleCk7CisgICAgY29uc3QgYXV0byYgY2FsbGluZ0NvbnZlbnRpb24gPSB3YXNtQ2FsbGlu
Z0NvbnZlbnRpb24oKTsKKyAgICBDYWxsSW5mb3JtYXRpb24gd2FzbUNhbGxlckluZm8gPSBjYWxs
aW5nQ29udmVudGlvbi5jYWxsSW5mb3JtYXRpb25Gb3IoY2FsbGVyVHlwZURlZmluaXRpb24sIENh
bGxSb2xlOjpDYWxsZWUpOworICAgIENhbGxJbmZvcm1hdGlvbiB3YXNtQ2FsbGVlSW5mbyA9IGNh
bGxpbmdDb252ZW50aW9uLmNhbGxJbmZvcm1hdGlvbkZvcihzaWduYXR1cmUsIENhbGxSb2xlOjpD
YWxsZXIpOworCisgICAgLy8gRG8gYSBjb250ZXh0IHN3aXRjaCBpZiBuZWVkZWQuCisgICAgewor
ICAgICAgICBCYXNpY0Jsb2NrKiBkb0NvbnRleHRTd2l0Y2ggPSBtX2NvZGUuYWRkQmxvY2soKTsK
KyAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gbV9jb2RlLmFkZEJsb2NrKCk7CisK
KyAgICAgICAgYXBwZW5kKEJyYW5jaDY0LCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsKSwgY2FsbGVlSW5zdGFuY2UsIGN1cnJlbnRJbnN0YW5jZSk7CisgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlvbiwgZG9Db250ZXh0U3dpdGNoKTsKKwor
ICAgICAgICBhdXRvKiBwYXRjaHBvaW50ID0gYWRkUGF0Y2hwb2ludChCMzo6Vm9pZCk7CisgICAg
ICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgLy8g
V2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSdyZSBjYWxsaW5nIHNvbWV0aGluZyB3aXRoIEJv
dW5kc0NoZWNraW5nIG1lbW9yeS4KKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZl
IHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIx
ODEKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihQaW5uZWRSZWdpc3RlckluZm86OmdldCgp
LnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOworICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisKKyAgICAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBHUFJSZWcg
Y2FsbGVlSW5zdGFuY2UgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgb2xk
Q29udGV4dEluc3RhbmNlID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAgY29uc3QgUGlu
bmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsK
KyAgICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9p
bnRlcjsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsZWVJbnN0YW5jZSAhPSBiYXNlTWVtb3J5KTsK
KyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhvbGRDb250ZXh0
SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQoKSksIGJhc2VNZW1v
cnkpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhjYWxsZWVJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1p
dCgpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKGNhbGxlZUlu
c3RhbmNlKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRo
YW4gb25lIG1lbW9yeSBzaXplIHJlZ2lzdGVyCisgICAgICAgICAgICAvLyAgIHNlZTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgorICAgICAgICAgICAgQVNT
RVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gY2FsbGVlSW5zdGFu
Y2UpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOwor
CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlSW5z
dGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlu
bmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7IC8vIEJvdW5kIGNoZWNraW5nIHNp
emUuCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVl
SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7
IC8vIE1lbW9yeTo6dm9pZCouCisKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFu
ZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MuYm91bmRz
Q2hlY2tpbmdTaXplUmVnaXN0ZXIsIHNjcmF0Y2gpOworICAgICAgICB9KTsKKworICAgICAgICBl
bWl0UGF0Y2hwb2ludChkb0NvbnRleHRTd2l0Y2gsIHBhdGNocG9pbnQsIFRtcCgpLCBjYWxsZWVJ
bnN0YW5jZSwgY3VycmVudEluc3RhbmNlKTsKKyAgICAgICAgYXBwZW5kKGRvQ29udGV4dFN3aXRj
aCwgSnVtcCk7CisgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+c2V0U3VjY2Vzc29ycyhjb250aW51
YXRpb24pOworCisgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworICAgIH0K
KworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoY2FsbGVlQ29kZSksIGNhbGxlZUNvZGUpOwor
CisgICAgVmVjdG9yPENvbnN0cmFpbmVkVG1wPiBleHRyYUFyZ3M7CisgICAgZXh0cmFBcmdzLmFw
cGVuZChjYWxsZWVDb2RlKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1
cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPnJldHVybkNvdW50KCk7ICsraSkKKyAgICAgICAg
cmVzdWx0cy5hcHBlbmQodG1wRm9yVHlwZShzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+
KCktPnJldHVyblR5cGUoaSkpKTsKKworICAgIGF1dG8gcGFpciA9IGVtaXRDYWxsUGF0Y2hwb2lu
dChtX2N1cnJlbnRCbG9jaywgc2lnbmF0dXJlLCByZXN1bHRzLCBhcmdzLCBXVEZNb3ZlKGV4dHJh
QXJncykpOworICAgIGF1dG8qIHBhdGNocG9pbnQgPSBwYWlyLmZpcnN0OworICAgIGF1dG8gZXhj
ZXB0aW9uSGFuZGxlID0gcGFpci5zZWNvbmQ7CisKKyAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIg
YWxsIHBvdGVudGlhbCBwaW5uZWQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxlYXZpbmcg
dGhlIGluc3RhbmNlLgorICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UncmUgYWx3
YXlzIGNhbGxpbmcgc29tZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5nIHNvCisgICAgLy8g
YmVjYXVzZSB0aGUgd2FzbS0+d2FzbSB0aHVuayB1bmNvbmRpdGlvbmFsbHkgb3ZlcnJpZGVzIHRo
ZSBzaXplIHJlZ2lzdGVycy4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBoYXZlIHRvIGRv
IHRoaXMsIGJ1dCB0aGUgd2FzbS0+d2FzbSBzdHViIGFzc3VtZXMgaXQgY2FuCisgICAgLy8gdXNl
IGFsbCB0aGUgcGlubmVkIHJlZ2lzdGVycyBhcyBzY3JhdGNoOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0
ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVj
a2luZykpOworCisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXShDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CisgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKKyAgICAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnBy
b2xvZ3VlU2NyYXRjaEdQUnNbMF07CisgICAgICAgIGppdC5tb3ZlKHBhcmFtc1twYXJhbXMucHJv
YygpLnJlc3VsdENvdW50KHBhcmFtcy52YWx1ZSgpLT50eXBlKCkpXS5ncHIoKSwgY2FsbGVlR1BS
KTsKKyAgICAgICAgcHJlcGFyZUZvclJldHVybkNhbGwoaml0LCB3YXNtQ2FsbGVySW5mbywgd2Fz
bUNhbGxlZUluZm8pOworICAgICAgICBleGNlcHRpb25IYW5kbGUuZ2VuZXJhdGUoaml0LCBwYXJh
bXMsIHRoaXMpOworICAgICAgICBqaXQuZmFySnVtcChjYWxsZWVHUFIsIFdhc21FbnRyeVB0clRh
Zyk7CisgICAgfSk7CisKKyAgICByZXR1cm4geyB9OworfQorCiB2b2lkIEFpcklSR2VuZXJhdG9y
Ojp1bmlmeShjb25zdCBFeHByZXNzaW9uVHlwZSBkc3QsIGNvbnN0IEV4cHJlc3Npb25UeXBlIHNv
dXJjZSkKIHsKICAgICBBU1NFUlQoaXNTdWJ0eXBlKHNvdXJjZS50eXBlKCksIGRzdC50eXBlKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cAppbmRleCBmN2U3MDg0YTNmNmYuLmE3OTFiZTQ2N2MxMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMzk1LDkgKzM5NSwxMyBA
QCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1
aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwg
Y29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1
bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRDYWxsUmVmKGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYg
YXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkUmV0dXJuQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgVHlwZURl
ZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1
bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5DYWxs
SW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGVtaXRJbmRpcmVjdENhbGwoVmFsdWUqIGNhbGxl
ZUluc3RhbmNlLCBWYWx1ZSogY2FsbGVlQ29kZSwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0Jik7CisgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdFJldHVybkNhbGxJbmRpcmVjdChWYWx1ZSogY2FsbGVl
SW5zdGFuY2UsIFZhbHVlKiBjYWxsZWVDb2RlLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3Rv
cjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmKTsKICAgICBCMzo6VmFsdWUqIGNy
ZWF0ZUNhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqLCBPcmlnaW4sIGNvbnN0IFR5cGVEZWZpbml0
aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgY29uc3QgU2NvcGVkTGFtYmRhPHZv
aWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4mIHBh
dGNocG9pbnRGdW5jdG9yKTsKKyAgICB2b2lkIHByZXBhcmVGb3JSZXR1cm5DYWxsKENDYWxsSGVs
cGVycyYsIGNvbnN0IENhbGxJbmZvcm1hdGlvbiYsIGNvbnN0IENhbGxJbmZvcm1hdGlvbiYpOwog
CiAgICAgdm9pZCBkdW1wKGNvbnN0IENvbnRyb2xTdGFjayYsIGNvbnN0IFN0YWNrKiBleHByZXNz
aW9uU3RhY2spOwogICAgIHZvaWQgc2V0UGFyc2VyKEZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0
b3I+KiBwYXJzZXIpIHsgbV9wYXJzZXIgPSBwYXJzZXI7IH07CkBAIC0xMjEyLDYgKzEyMTYsMTAx
IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSogY2FsbGVlSW5z
dGFuY2UsIFZhbHVlKiBjYWxsZWVDb2RlLCBjCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBC
M0lSR2VuZXJhdG9yOjplbWl0UmV0dXJuQ2FsbEluZGlyZWN0KFZhbHVlKiBjYWxsZWVJbnN0YW5j
ZSwgVmFsdWUqIGNhbGxlZUNvZGUsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZl
Y3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRp
YWxSZXN1bHQKK3sKKyAgICBjb25zdCBUeXBlSW5kZXggY2FsbGVyVHlwZUluZGV4ID0gbV9pbmZv
LmludGVybmFsRnVuY3Rpb25UeXBlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdOworICAgIGNvbnN0
IFR5cGVEZWZpbml0aW9uJiBjYWxsZXJUeXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6
Z2V0KGNhbGxlclR5cGVJbmRleCk7CisgICAgY29uc3QgYXV0byYgY2FsbGluZ0NvbnZlbnRpb24g
PSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKKyAgICBDYWxsSW5mb3JtYXRpb24gd2FzbUNhbGxl
ckluZm8gPSBjYWxsaW5nQ29udmVudGlvbi5jYWxsSW5mb3JtYXRpb25Gb3IoY2FsbGVyVHlwZURl
ZmluaXRpb24sIENhbGxSb2xlOjpDYWxsZWUpOworICAgIENhbGxJbmZvcm1hdGlvbiB3YXNtQ2Fs
bGVlSW5mbyA9IGNhbGxpbmdDb252ZW50aW9uLmNhbGxJbmZvcm1hdGlvbkZvcihzaWduYXR1cmUs
IENhbGxSb2xlOjpDYWxsZXIpOworCisgICAgLy8gRG8gYSBjb250ZXh0IHN3aXRjaCBpZiBuZWVk
ZWQuCisgICAgeworICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBtX3Byb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZG9Db250ZXh0U3dpdGNoID0gbV9wcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGlzU2FtZUNvbnRleHRJbnN0YW5jZSA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLAorICAg
ICAgICAgICAgY2FsbGVlSW5zdGFuY2UsIGluc3RhbmNlVmFsdWUoKSk7CisgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBCMzo6QnJhbmNoLCBvcmln
aW4oKSwKKyAgICAgICAgICAgIGlzU2FtZUNvbnRleHRJbnN0YW5jZSwgRnJlcXVlbnRlZEJsb2Nr
KGNvbnRpbnVhdGlvbiksIEZyZXF1ZW50ZWRCbG9jayhkb0NvbnRleHRTd2l0Y2gpKTsKKworICAg
ICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBkb0NvbnRleHRTd2l0Y2gtPmFwcGVu
ZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICAvLyBX
ZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGNhbGxpbmcgc29tZXRoaW5nIHdpdGggQm91
bmRzQ2hlY2tpbmcgbWVtb3J5LgorICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUg
dG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4
MQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCku
dG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgICAgIHBhdGNocG9pbnQt
PmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKGNhbGxlZUluc3RhbmNlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVy
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGluc3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6
OlNvbWVSZWdpc3Rlcik7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVy
cyA9IDE7CisKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisgICAgICAgICAgICBHUFJSZWcgY2FsbGVlSW5zdGFuY2UgPSBwYXJhbXNbMF0uZ3ByKCk7
CisgICAgICAgICAgICBHUFJSZWcgb2xkQ29udGV4dEluc3RhbmNlID0gcGFyYW1zWzFdLmdwcigp
OworICAgICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlu
bmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKKyAgICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0g
cGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsZWVJ
bnN0YW5jZSAhPSBiYXNlTWVtb3J5KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhvbGRDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZFN0YWNrTGltaXQoKSksIGJhc2VNZW1vcnkpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKGJh
c2VNZW1vcnksIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVJbnN0YW5jZSwgSW5zdGFuY2U6
Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmVXYXNt
Q29udGV4dEluc3RhbmNlKGNhbGxlZUluc3RhbmNlKTsKKyAgICAgICAgICAgIEFTU0VSVChwaW5u
ZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IGJhc2VNZW1vcnkpOworICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNp
emUgcmVnaXN0ZXIKKyAgICAgICAgICAgIC8vICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCisgICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5i
b3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAhPSBjYWxsZWVJbnN0YW5jZSk7CisgICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisKKyAgICAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVJbnN0YW5jZSwgSW5zdGFuY2U6
Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5kc0No
ZWNraW5nU2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUuCisgICAgICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlSW5zdGFuY2UsIEluc3RhbmNlOjpvZmZz
ZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCisKKyAg
ICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIsIHNj
cmF0Y2gpOworICAgICAgICB9KTsKKyAgICAgICAgZG9Db250ZXh0U3dpdGNoLT5hcHBlbmROZXdD
b250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgY29udGludWF0aW9uKTsKKworICAg
ICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICB9CisKKyAgICBCMzo6VHlw
ZSByZXR1cm5UeXBlID0gdG9CM1Jlc3VsdFR5cGUoJnNpZ25hdHVyZSk7CisgICAgVmFsdWUqIGNh
bGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgb3JpZ2luKCks
IHNpZ25hdHVyZSwgYXJncywKKyAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0Y2hwb2lu
dFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4oWz0sIHRoaXNdKFBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2hwb2ludCwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGhh
bmRsZSkgLT4gdm9pZCB7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bp
bm5lZCA9IHRydWU7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFs
IHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2Uu
CisgICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGFsd2F5cyBj
YWxsaW5nIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVja2luZyBzbworICAgICAgICAgICAg
Ly8gYmVjYXVzZSB0aGUgd2FzbS0+d2FzbSB0aHVuayB1bmNvbmRpdGlvbmFsbHkgb3ZlcnJpZGVz
IHRoZSBzaXplIHJlZ2lzdGVycy4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90
IGhhdmUgdG8gZG8gdGhpcywgYnV0IHRoZSB3YXNtLT53YXNtIHN0dWIgYXNzdW1lcyBpdCBjYW4K
KyAgICAgICAgICAgIC8vIHVzZSBhbGwgdGhlIHBpbm5lZCByZWdpc3RlcnMgYXMgc2NyYXRjaDog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1Nh
dmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKworICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKGNhbGxlZUNvZGUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXShDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwor
ICAgICAgICAgICAgICAgIEdQUlJlZyBjYWxsZWVHUFIgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24o
KS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzBdOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFt
c1twYXJhbXMucHJvYygpLnJlc3VsdENvdW50KHJldHVyblR5cGUpXS5ncHIoKSwgY2FsbGVlR1BS
KTsKKyAgICAgICAgICAgICAgICBwcmVwYXJlRm9yUmV0dXJuQ2FsbChqaXQsIHdhc21DYWxsZXJJ
bmZvLCB3YXNtQ2FsbGVlSW5mbyk7CisgICAgICAgICAgICAgICAgaGFuZGxlLT5nZW5lcmF0ZShq
aXQsIHBhcmFtcywgdGhpcyk7CisgICAgICAgICAgICAgICAgaml0LmZhckp1bXAoY2FsbGVlR1BS
LCBXYXNtRW50cnlQdHJUYWcpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pKTsKKworICAg
IHN3aXRjaCAocmV0dXJuVHlwZS5raW5kKCkpIHsKKyAgICBjYXNlIEIzOjpWb2lkOiB7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEIzOjpUdXBsZTogeworICAgICAgICBjb25zdCBW
ZWN0b3I8QjM6OlR5cGU+JiB0dXBsZSA9IG1fcHJvYy50dXBsZUZvclR5cGUocmV0dXJuVHlwZSk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXM8RnVuY3Rpb25T
aWduYXR1cmU+KCktPnJldHVybkNvdW50KCk7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKHB1c2gobV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxFeHRyYWN0VmFsdWU+KG1fcHJvYywg
b3JpZ2luKCksIHR1cGxlW2ldLCBjYWxsUmVzdWx0LCBpKSkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgZGVmYXVsdDogeworICAgICAgICByZXN1bHRzLmFwcGVuZChwdXNoKGNhbGxSZXN1
bHQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKyAgICByZXR1cm4geyB9OworfQor
CiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1bHQg
PSBwdXNoKG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQz
Miwgb3JpZ2luKCksCkBAIC0zMDAzLDggKzMxMDIsNiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFk
ZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25h
dAogICAgICAgICAgICAgZmlsbFJlc3VsdHMocGhpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8v
IFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNl
LCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCi0gICAgICAgIHJlc3Rv
cmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0OjpZZXMsIG1f
aW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9wcm9jLCBjb250aW51YXRpb24pOwogICAg
IH0gZWxzZSB7CiAKICAgICAgICAgVmFsdWUqIHBhdGNoID0gY3JlYXRlQ2FsbFBhdGNocG9pbnQo
bV9jdXJyZW50QmxvY2ssIG9yaWdpbigpLCBzaWduYXR1cmUsIGFyZ3MsCkBAIC0zMDI2LDYgKzMx
MjMsOCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRl
eCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdAogICAgICAgICAgICAgfSkpOwogICAgICAg
ICBmaWxsUmVzdWx0cyhwYXRjaCk7CiAgICAgfQorICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUg
YmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZl
IG1vZGlmaWVkIG91ciBNZW1vcnkuCisgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUo
UmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6OlllcywgbV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1
ZSgpLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0z
MTQ3LDYgKzMyNDYsMjQ0IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBU
eXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAgICAgcmV0dXJuIGVt
aXRJbmRpcmVjdENhbGwoY2FsbGVlSW5zdGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwgYXJn
cywgcmVzdWx0cyk7CiB9CiAKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbCh1aW50
MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFs
UmVzdWx0Cit7CisgICAgQVNTRVJUKHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+
YXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKKworICAgIGNvbnN0IFR5cGVJbmRleCBj
YWxsZXJUeXBlSW5kZXggPSBtX2luZm8uaW50ZXJuYWxGdW5jdGlvblR5cGVJbmRpY2VzW21fZnVu
Y3Rpb25JbmRleF07CisgICAgY29uc3QgVHlwZURlZmluaXRpb24mIGNhbGxlclR5cGVEZWZpbml0
aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoY2FsbGVyVHlwZUluZGV4KTsKKyAgICBjb25zdCBh
dXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpOworICAgIENh
bGxJbmZvcm1hdGlvbiB3YXNtQ2FsbGVySW5mbyA9IGNhbGxpbmdDb252ZW50aW9uLmNhbGxJbmZv
cm1hdGlvbkZvcihjYWxsZXJUeXBlRGVmaW5pdGlvbiwgQ2FsbFJvbGU6OkNhbGxlZSk7CisgICAg
Q2FsbEluZm9ybWF0aW9uIHdhc21DYWxsZWVJbmZvID0gY2FsbGluZ0NvbnZlbnRpb24uY2FsbElu
Zm9ybWF0aW9uRm9yKHNpZ25hdHVyZSwgQ2FsbFJvbGU6OkNhbGxlcik7CisKKyAgICBtX21ha2Vz
Q2FsbHMgPSB0cnVlOworICAgIEIzOjpUeXBlIHJldHVyblR5cGUgPSB0b0IzUmVzdWx0VHlwZSgm
c2lnbmF0dXJlKTsKKworICAgIGF1dG8gZmlsbFJlc3VsdHMgPSBbJl0oVmFsdWUqIGNhbGxSZXN1
bHQpIHsKKyAgICAgICAgQVNTRVJUKHJldHVyblR5cGUgPT0gY2FsbFJlc3VsdC0+dHlwZSgpKTsK
KworICAgICAgICBzd2l0Y2ggKHJldHVyblR5cGUua2luZCgpKSB7CisgICAgICAgIGNhc2UgQjM6
OlZvaWQ6IHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgQjM6
OlR1cGxlOiB7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8QjM6OlR5cGU+JiB0dXBsZSA9IG1f
cHJvYy50dXBsZUZvclR5cGUocmV0dXJuVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQoc2lnbmF0
dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5yZXR1cm5Db3VudCgpID09IHR1cGxlLnNpemUo
KSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFzPEZ1
bmN0aW9uU2lnbmF0dXJlPigpLT5yZXR1cm5Db3VudCgpOyArK2kpCisgICAgICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEV4dHJhY3RWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgdHVwbGVbaV0sIGNhbGxSZXN1bHQsIGkpKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChwdXNoKGNhbGxSZXN1bHQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgVmVjdG9yPFVubGlua2VkV2FzbVRvV2Fz
bUNhbGw+KiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscyA9ICZtX3VubGlua2VkV2FzbVRvV2FzbUNh
bGxzOworCisgICAgaWYgKG1faW5mby5pc0ltcG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRl
eFNwYWNlKGZ1bmN0aW9uSW5kZXgpKSB7CisgICAgICAgIG1fbWF4TnVtSlNDYWxsQXJndW1lbnRz
ID0gc3RkOjptYXgobV9tYXhOdW1KU0NhbGxBcmd1bWVudHMsIHN0YXRpY19jYXN0PHVpbnQzMl90
PihhcmdzLnNpemUoKSkpOworCisgICAgICAgIC8vIEZJWE1FOiBpbXBvcnRzIGNhbiBiZSBsaW5r
ZWQgaGVyZSwgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGEgcGF0Y2hwb2ludCwgYmVjYXVzZSBhbGwg
aW1wb3J0IHN0dWJzIGFyZSBnZW5lcmF0ZWQgYmVmb3JlIEIzIGNvbXBpbGF0aW9uIHN0YXJ0cy4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ2MgorICAgICAgICBW
YWx1ZSogdGFyZ2V0SW5zdGFuY2UgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBpbnN0YW5jZVZhbHVl
KCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3RhbmNlOjpvZmZzZXRPZlRhcmdldEluc3RhbmNlKGZ1
bmN0aW9uSW5kZXgpKSk7CisgICAgICAgIC8vIFRoZSB0YXJnZXQgaW5zdGFuY2UgaXMgMCB1bmxl
c3MgdGhlIGNhbGwgaXMgd2FzbS0+d2FzbS4KKyAgICAgICAgVmFsdWUqIGlzV2FzbUNhbGwgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIE5vdEVxdWFsLCBvcmlnaW4o
KSwgdGFyZ2V0SW5zdGFuY2UsIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
PihtX3Byb2MsIG9yaWdpbigpLCAwKSk7CisKKyAgICAgICAgQmFzaWNCbG9jayogaXNXYXNtQmxv
Y2sgPSBtX3Byb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogaXNFbWJlZGRlckJs
b2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlv
biA9IG1fcHJvYy5hZGRCbG9jaygpOworICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKG1fcHJvYywgQjM6OkJyYW5jaCwgb3JpZ2luKCksIGlzV2FzbUNhbGwsIEZy
ZXF1ZW50ZWRCbG9jayhpc1dhc21CbG9jayksIEZyZXF1ZW50ZWRCbG9jayhpc0VtYmVkZGVyQmxv
Y2spKTsKKworICAgICAgICBWYWx1ZSogd2FzbUNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hw
b2ludChpc1dhc21CbG9jaywgb3JpZ2luKCksIHNpZ25hdHVyZSwgYXJncywKKyAgICAgICAgICAg
IHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlPik+KFs9LCB0aGlzXShQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQsIEJv
eDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBoYW5kbGUpIC0+IHZvaWQgeworICAgICAgICAg
ICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIgYWxsIHBvdGVudGlhbCBwaW5uZWQgcmVnaXN0
ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxlYXZpbmcgdGhlIGluc3RhbmNlLgorICAgICAgICAgICAg
ICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UgY291bGQgYmUgY2FsbGluZyB0byBz
b21ldGhpbmcgdGhhdCBpcyBib3VuZHMgY2hlY2tpbmcuCisgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzIxODEKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9i
YmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpCb3Vu
ZHNDaGVja2luZykpOworICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihb
dGhpcywgaGFuZGxlLCB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgZnVuY3Rpb25JbmRleCwgd2Fz
bUNhbGxlckluZm8sIHdhc21DYWxsZWVJbmZvXShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6
OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgcHJlcGFyZUZvclJldHVybkNhbGwoaml0LCB3YXNtQ2FsbGVySW5mbywg
d2FzbUNhbGxlZUluZm8pOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmdlbmVyYXRlKGpp
dCwgcGFyYW1zLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IGNhbGwgPSBqaXQudGhyZWFkU2FmZVBhdGNoYWJsZU5lYXJUYWlsQ2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soW3VubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjYWxs
LCBmdW5jdGlvbkluZGV4XShMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB1bmxpbmtlZFdhc21Ub1dhc21DYWxscy0+YXBwZW5kKHsgbGlua0J1ZmZlci5s
b2NhdGlvbk9mTmVhckNhbGw8V2FzbUVudHJ5UHRyVGFnPihjYWxsKSwgZnVuY3Rpb25JbmRleCB9
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9KSk7CisgICAgICAgIFVwc2lsb25WYWx1ZSogd2FzbUNhbGxSZXN1bHRVcHNpbG9uID0g
cmV0dXJuVHlwZSA9PSBCMzo6Vm9pZCA/IG51bGxwdHIgOiBpc1dhc21CbG9jay0+YXBwZW5kTmV3
PFVwc2lsb25WYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgd2FzbUNhbGxSZXN1bHQpOworICAgICAg
ICBpc1dhc21CbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2lu
KCksIGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgLy8gRklYTUU6IExldCdzIHJlbW92ZSB0aGlz
IGluZGlyZWN0aW9uIGJ5IGNyZWF0aW5nIGEgUElDIGZyaWVuZGx5IElDCisgICAgICAgIC8vIGZv
ciBjYWxscyBvdXQgdG8gdGhlIGVtYmVkZGVyLiBUaGlzIHNob3VsZG4ndCBiZSB0aGF0IGhhcmQg
dG8gZG8uIFdlIGNvdWxkIHByb2JhYmx5CisgICAgICAgIC8vIGltcGxlbWVudCB0aGUgSUMgdG8g
YmUgb3ZlciBDb250ZXh0Ki4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MDM3NQorICAgICAgICBWYWx1ZSoganVtcERlc3RpbmF0aW9uID0gaXNF
bWJlZGRlckJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywKKyAgICAgICAgICAg
IExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0
PGludDMyX3Q+KEluc3RhbmNlOjpvZmZzZXRPZldhc21Ub0VtYmVkZGVyU3R1YihmdW5jdGlvbklu
ZGV4KSkpOworCisgICAgICAgIFZhbHVlKiBlbWJlZGRlckNhbGxSZXN1bHQgPSBjcmVhdGVDYWxs
UGF0Y2hwb2ludChpc0VtYmVkZGVyQmxvY2ssIG9yaWdpbigpLCBzaWduYXR1cmUsIGFyZ3MsCisg
ICAgICAgICAgICBzY29wZWRMYW1iZGFSZWY8dm9pZChQYXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0
Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4pPihbPSwgdGhpc10oUGF0Y2hwb2ludFZhbHVlKiBwYXRj
aHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gaGFuZGxlKSAtPiB2b2lkIHsK
KyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGp1bXBEZXN0aW5hdGlvbiwgVmFs
dWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9i
YmVyIGFsbCBwb3RlbnRpYWwgcGlubmVkIHJlZ2lzdGVycyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2
aW5nIHRoZSBpbnN0YW5jZS4KKyAgICAgICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkg
YXNzdW1lIHdlIGNvdWxkIGJlIGNhbGxpbmcgdG8gc29tZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNo
ZWNraW5nLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBk
byB0aGlzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisg
ICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZv
OjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKyAgICAgICAgICAg
ICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3RoaXMsIGhhbmRsZSwgcmV0dXJuVHlwZV0o
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgeworICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+Z2VuZXJh
dGUoaml0LCBwYXJhbXMsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICBqaXQuY2FsbChwYXJh
bXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChyZXR1cm5UeXBlKV0uZ3ByKCksIFdhc21FbnRy
eVB0clRhZyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSk7CisgICAgICAg
IFVwc2lsb25WYWx1ZSogZW1iZWRkZXJDYWxsUmVzdWx0VXBzaWxvbiA9IHJldHVyblR5cGUgPT0g
QjM6OlZvaWQgPyBudWxscHRyIDogaXNFbWJlZGRlckJsb2NrLT5hcHBlbmROZXc8VXBzaWxvblZh
bHVlPihtX3Byb2MsIG9yaWdpbigpLCBlbWJlZGRlckNhbGxSZXN1bHQpOworICAgICAgICBpc0Vt
YmVkZGVyQmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG9yaWdpbigp
LCBjb250aW51YXRpb24pOworCisgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9u
OworCisgICAgICAgIGlmIChyZXR1cm5UeXBlICE9IEIzOjpWb2lkKSB7CisgICAgICAgICAgICBW
YWx1ZSogcGhpID0gY29udGludWF0aW9uLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgUGhpLCBy
ZXR1cm5UeXBlLCBvcmlnaW4oKSk7CisgICAgICAgICAgICB3YXNtQ2FsbFJlc3VsdFVwc2lsb24t
PnNldFBoaShwaGkpOworICAgICAgICAgICAgZW1iZWRkZXJDYWxsUmVzdWx0VXBzaWxvbi0+c2V0
UGhpKHBoaSk7CisgICAgICAgICAgICBmaWxsUmVzdWx0cyhwaGkpOworICAgICAgICB9CisKKyAg
ICB9IGVsc2UgeworCisgICAgICAgIFZhbHVlKiBwYXRjaCA9IGNyZWF0ZUNhbGxQYXRjaHBvaW50
KG1fY3VycmVudEJsb2NrLCBvcmlnaW4oKSwgc2lnbmF0dXJlLCBhcmdzLAorICAgICAgICAgICAg
c2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNl
cHRpb25IYW5kbGU+KT4oWz0sIHRoaXNdKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCwgQm94
PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGhhbmRsZSkgLT4gdm9pZCB7CisgICAgICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOworCisgICAgICAg
ICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIHRoZSBzaXplIHJlZ2lzdGVyIHNpbmNlIHRo
ZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNrcworICAgICAgICAgICAgICAgIGlmIChtX21vZGUg
PT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nIHx8IG1faW5mby5tZW1vcnkuaXNTaGFyZWQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQ
aW5uZWRSZWdpc3RlckluZm86OmdldCgpLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyIH0pOwor
ICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdGhpcywgaGFuZGxlLCB1
bmxpbmtlZFdhc21Ub1dhc21DYWxscywgZnVuY3Rpb25JbmRleCwgd2FzbUNhbGxlckluZm8sIHdh
c21DYWxsZWVJbmZvXShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgICAgICAgICAg
cHJlcGFyZUZvclJldHVybkNhbGwoaml0LCB3YXNtQ2FsbGVySW5mbywgd2FzbUNhbGxlZUluZm8p
OworICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlz
KTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQudGhy
ZWFkU2FmZVBhdGNoYWJsZU5lYXJUYWlsQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICBqaXQu
YWRkTGlua1Rhc2soW3VubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjYWxsLCBmdW5jdGlvbkluZGV4
XShMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bmxp
bmtlZFdhc21Ub1dhc21DYWxscy0+YXBwZW5kKHsgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNh
bGw8V2FzbUVudHJ5UHRyVGFnPihjYWxsKSwgZnVuY3Rpb25JbmRleCB9KTsKKyAgICAgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSk7CisgICAg
ICAgIGZpbGxSZXN1bHRzKHBhdGNoKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCit2
b2lkIEIzSVJHZW5lcmF0b3I6OnByZXBhcmVGb3JSZXR1cm5DYWxsKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBDYWxsSW5mb3JtYXRpb24mIGNhbGxlckluZm8sIGNvbnN0IENhbGxJbmZvcm1hdGlv
biYgY2FsbGVlSW5mbykKK3sKKyAgICB1aW50MzJfdCBjYWxsZXJTdGFja1NpemUgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBjYWxsZXJJbmZvLmhlYWRl
ckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcyk7CisgICAgdWludDMyX3QgY2FsbGVlU3RhY2tT
aXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgY2Fs
bGVlSW5mby5oZWFkZXJBbmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMpOworICAgIHVpbnQzMl90
IG9mZnNldEZyb21TUCA9IG1fcHJvYy5mcmFtZVNpemUoKSArIGNhbGxlclN0YWNrU2l6ZSAtIGNh
bGxlZVN0YWNrU2l6ZTsKKyAgICBHUFJSZWcgc2NyYXRjaCA9IHdhc21DYWxsaW5nQ29udmVudGlv
bigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMV07CisjaWYgQ1BVKFg4Nl82NCkKKyAgICBqaXQuc3Vi
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSksIE1hY3Jv
QXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lOjpyZXR1cm5QQ09mZnNldCgpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1i
bGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciksIHNjcmF0Y2gpOworI2VsaWYgQ1BVKEFSTTY0KSB8
fCBDUFUoQVBQTEVfQVJNVjdTKSB8fCBDUFUoUklTQ1Y2NCkKKyAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBD
YWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLCBqaXQubGlua1JlZ2lzdGVyKTsKKyNlbHNlCisg
ICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisjZW5kaWYKKworICAgIGppdC5lbWl0UmVz
dG9yZShtX3Byb2MuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOworICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVy
UmVnaXN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworCisgICAg
dWludDMyX3Qgb2Zmc2V0ID0gY2FsbGVlU3RhY2tTaXplICsgc2l6ZW9mKFJlZ2lzdGVyKTsKKyAg
ICB3aGlsZSAob2Zmc2V0KSB7CisgICAgICAgIG9mZnNldCAtPSBzaXplb2YoUmVnaXN0ZXIpOwor
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBvZmZzZXQpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoTWFjcm9B
c3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBvZmZzZXRGcm9tU1AgKyBvZmZzZXQpLCBz
Y3JhdGNoKTsKKyAgICB9CisgICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKG9mZnNldEZyb21TUCksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
Cit9CisKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbEluZGlyZWN0KHVuc2lnbmVk
IHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQK
K3sKKyAgICBWYWx1ZSogY2FsbGVlSW5kZXggPSBnZXQoYXJncy50YWtlTGFzdCgpKTsKKyAgICBB
U1NFUlQoc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5hcmd1bWVudENvdW50KCkg
PT0gYXJncy5zaXplKCkpOworCisgICAgbV9tYWtlc0NhbGxzID0gdHJ1ZTsKKyAgICAvLyBOb3Rl
OiBjYWxsIGluZGlyZWN0IGNhbiBjYWxsIGVpdGhlciBXZWJBc3NlbWJseUZ1bmN0aW9uIG9yIFdl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLiBCZWNhdXNlCisgICAgLy8gV2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb24gaXMgbGlrZSBjYWxsaW5nIGludG8gdGhlIGVtYmVkZGVyLCB3ZSBjb25zZXJ2
YXRpdmVseSBhc3N1bWUgYWxsIGNhbGwgaW5kaXJlY3RzCisgICAgLy8gY2FuIGJlIHRvIHRoZSBl
bWJlZGRlciBmb3Igb3VyIHN0YWNrIGNoZWNrIGNhbGN1bGF0aW9uLgorICAgIG1fbWF4TnVtSlND
YWxsQXJndW1lbnRzID0gc3RkOjptYXgobV9tYXhOdW1KU0NhbGxBcmd1bWVudHMsIHN0YXRpY19j
YXN0PHVpbnQzMl90PihhcmdzLnNpemUoKSkpOworCisgICAgVmFsdWUqIGNhbGxhYmxlRnVuY3Rp
b25CdWZmZXI7CisgICAgVmFsdWUqIGluc3RhbmNlc0J1ZmZlcjsKKyAgICBWYWx1ZSogY2FsbGFi
bGVGdW5jdGlvbkJ1ZmZlckxlbmd0aDsKKyAgICB7CisgICAgICAgIFZhbHVlKiB0YWJsZSA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgb3JpZ2luKCksCisgICAgICAgICAgICBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0
PGludDMyX3Q+KEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25z
LCB0YWJsZUluZGV4KSkpOworICAgICAgICBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlw
ZSgpLCBvcmlnaW4oKSwKKyAgICAgICAgICAgIHRhYmxlLCBzYWZlQ2FzdDxpbnQzMl90PihGdW5j
UmVmVGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCkpKTsKKyAgICAgICAgaW5zdGFuY2VzQnVmZmVy
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBw
b2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKKyAgICAgICAgICAgIHRhYmxlLCBzYWZlQ2FzdDxpbnQz
Ml90PihGdW5jUmVmVGFibGU6Om9mZnNldE9mSW5zdGFuY2VzKCkpKTsKKyAgICAgICAgY2FsbGFi
bGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50MzIsIG9yaWdpbigpLAorICAgICAgICAgICAgdGFibGUs
IHNhZmVDYXN0PGludDMyX3Q+KFRhYmxlOjpvZmZzZXRPZkxlbmd0aCgpKSk7CisgICAgfQorCisg
ICAgLy8gQ2hlY2sgdGhlIGluZGV4IHdlIGFyZSBsb29raW5nIGZvciBpcyB2YWxpZC4KKyAgICB7
CisgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
aGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKKyAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQWJvdmVFcXVhbCwgb3JpZ2luKCksIGNh
bGxlZUluZGV4LCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKSk7CisKKyAgICAgICAgY2hl
Y2stPnNldEdlbmVyYXRvcihbPSwgdGhpc10oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICB0aGlzLT5lbWl0RXhjZXB0
aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc0NhbGxJbmRpcmVjdCk7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIGNhbGxlZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBaRXh0MzIsIG9yaWdpbigpLCBjYWxsZWVJbmRleCk7CisK
KyAgICBWYWx1ZSogY2FsbGFibGVGdW5jdGlvbjsKKyAgICB7CisgICAgICAgIC8vIENvbXB1dGUg
dGhlIG9mZnNldCBpbiB0aGUgdGFibGUgaW5kZXggc3BhY2Ugd2UgYXJlIGxvb2tpbmcgZm9yLgor
ICAgICAgICBWYWx1ZSogb2Zmc2V0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBNdWwsIG9yaWdpbigpLAorICAgICAgICAgICAgY2FsbGVlSW5kZXgsIGNvbnN0YW50
KHBvaW50ZXJUeXBlKCksIHNpemVvZihXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uKSkpOwor
ICAgICAgICBjYWxsYWJsZUZ1bmN0aW9uID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4obV9wcm9jLCBBZGQsIG9yaWdpbigpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyLCBvZmZzZXQp
OworCisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rp
b24gaXMgaW5pdGlhbGl6ZWQuIFdlIHRyYXAgaWYgaXQgaXNuJ3QuIEFuICJpbnZhbGlkIiBTaWdu
YXR1cmVJbmRleCBpbmRpY2F0ZXMgaXQncyBub3QgaW5pdGlhbGl6ZWQuCisgICAgICAgIC8vIEZJ
WE1FOiB3aGVuIHdlIGhhdmUgdHJhcCBoYW5kbGVycywgd2UgY2FuIGp1c3QgbGV0IHRoZSBjYWxs
IGZhaWwgYmVjYXVzZSBTaWduYXR1cmU6OmludmFsaWRJbmRleCBpcyAwLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjEwCisgICAgICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OnR5cGVJbmRleCkgPT0gc2l6ZW9m
KHVpbnQ2NF90KSwgIkxvYWQgY29kZWdlbiBhc3N1bWVzIGk2NCIpOworICAgICAgICBWYWx1ZSog
Y2FsbGVlU2lnbmF0dXJlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIExvYWQsIEludDY0LCBvcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgc2Fm
ZUNhc3Q8aW50MzJfdD4oV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZTaWdu
YXR1cmVJbmRleCgpKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNr
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBv
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgY2FsbGVlU2ln
bmF0dXJlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBUeXBlRGVmaW5pdGlvbjo6aW52YWxp
ZEluZGV4KSkpOworCisgICAgICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXShD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsK
KyAgICAgICAgICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25U
eXBlOjpOdWxsVGFibGVFbnRyeSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIENoZWNrIHRoZSBzaWduYXR1cmUgbWF0Y2hlcyB0aGUgdmFsdWUgd2UgZXhwZWN0Lgor
ICAgICAgICB7CisgICAgICAgICAgICBWYWx1ZSogZXhwZWN0ZWRTaWduYXR1cmVJbmRleCA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBU
eXBlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmUpKTsKKyAgICAgICAgICAgIENoZWNrVmFsdWUq
IGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENo
ZWNrLCBvcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PFZhbHVlPihtX3Byb2MsIE5vdEVxdWFsLCBvcmlnaW4oKSwgY2FsbGVlU2lnbmF0dXJlSW5kZXgs
IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXgpKTsKKworICAgICAgICAgICAgY2hlY2stPnNldEdlbmVy
YXRvcihbPSwgdGhpc10oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNr
KGppdCwgRXhjZXB0aW9uVHlwZTo6QmFkU2lnbmF0dXJlKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisgICAgfQorCisgICAgVmFsdWUqIG9mZnNldCA9IG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8VmFsdWU+KG1fcHJvYywgTXVsLCBvcmlnaW4oKSwKKyAgICAgICAgY2FsbGVlSW5kZXgs
IGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIHNpemVvZihJbnN0YW5jZSopKSk7CisgICAgVmFsdWUq
IGNhbGxlZUluc3RhbmNlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
bV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKKyAgICAgICAgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIG9yaWdpbigpLCBpbnN0YW5jZXNC
dWZmZXIsIG9mZnNldCkpOworICAgIFZhbHVlKiBjYWxsZWVDb2RlID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmln
aW4oKSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwKKyAg
ICAgICAgICAgIHNhZmVDYXN0PGludDMyX3Q+KFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246
Om9mZnNldE9mRW50cnlwb2ludExvYWRMb2NhdGlvbigpKSkpOworCisgICAgcmV0dXJuIGVtaXRS
ZXR1cm5DYWxsSW5kaXJlY3QoY2FsbGVlSW5zdGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwg
YXJncywgcmVzdWx0cyk7Cit9CisKIHZvaWQgQjNJUkdlbmVyYXRvcjo6dW5pZnkoVmFsdWUqIHBo
aSwgY29uc3QgRXhwcmVzc2lvblR5cGUgc291cmNlKQogewogICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBnZXQoc291cmNlKSwgcGhp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgK
aW5kZXggNmQ4OTkyODMxM2U4Li44MTJlY2I0ODAyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCkBAIC0xMjMxLDYgKzEyMzEsOSBAQCBG
T1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAKKyAgICBjYXNlIFJldHVybkNhbGw6CisgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VGFpbENhbGxzKCksICJ3YXNtIHRhaWwg
Y2FsbHMgYXJlIG5vdCBlbmFibGVkIik7CisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2Ug
Q2FsbDogewogICAgICAgICB1aW50MzJfdCBmdW5jdGlvbkluZGV4OwogICAgICAgICBXQVNNX0ZB
SUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY3Rpb25JbmRleChmdW5jdGlvbkluZGV4KSk7CkBA
IC0xMjM4LDYgKzEyNDEsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVf
Q0FTRSkKICAgICAgICAgVHlwZUluZGV4IGNhbGxlZVR5cGVJbmRleCA9IG1faW5mby50eXBlSW5k
ZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOwogICAgICAgICBjb25zdCBU
eXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChjYWxs
ZWVUeXBlSW5kZXgpOwogICAgICAgICBjb25zdCBhdXRvJiBjYWxsZWVTaWduYXR1cmUgPSAqdHlw
ZURlZmluaXRpb24uYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CisgICAgICAgIGNvbnN0IGF1dG8m
IGNhbGxlclNpZ25hdHVyZSA9ICptX3NpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsK
ICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3Vu
dCgpID4gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FsbCBmdW5jdGlvbiBpbmRleCAiLCBm
dW5jdGlvbkluZGV4LCAiIGhhcyAiLCBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAi
IGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBob2xkcyAiLCBt
X2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CiAKICAgICAgICAgc2l6ZV90IGZp
cnN0QXJndW1lbnRJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAtIGNhbGxlZVNpZ25h
dHVyZS5hcmd1bWVudENvdW50KCk7CkBAIC0xMjU0LDE2ICsxMjU4LDM4IEBAIEZPUl9FQUNIX1dB
U01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChj
YWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKIAogICAgICAg
ICBSZXN1bHRMaXN0IHJlc3VsdHM7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFk
ZENhbGwoZnVuY3Rpb25JbmRleCwgdHlwZURlZmluaXRpb24sIGFyZ3MsIHJlc3VsdHMpKTsKIAot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKSA9PSBy
ZXN1bHRzLnNpemUoKSk7CisgICAgICAgIGlmIChtX2N1cnJlbnRPcGNvZGUgPT0gUmV0dXJuQ2Fs
bCkgeworICAgICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkUmV0dXJuQ2FsbChm
dW5jdGlvbkluZGV4LCB0eXBlRGVmaW5pdGlvbiwgYXJncywgcmVzdWx0cykpOwogCi0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsg
KytpKQotICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKGNh
bGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpID09IHJlc3VsdHMuc2l6
ZSgpKTsKIAotICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRihjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKSAhPSBjYWxsZXJTaWduYXR1cmUucmV0
dXJuQ291bnQoKSwgInRhaWwgY2FsbCBmdW5jdGlvbiBpbmRleCAiLCBmdW5jdGlvbkluZGV4LCAi
IHdpdGggcmV0dXJuIGNvdW50ICIsIGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpLCAiLCBi
dXQgdGhlIGNhbGxlcidzIHNpZ25hdHVyZSBoYXMgIiwgY2FsbGVyU2lnbmF0dXJlLnJldHVybkNv
dW50KCksICIgcmV0dXJuIHZhbHVlcyIpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCk7ICsraSkgeworICAgICAgICAg
ICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShjYWxsZXJTaWduYXR1cmUu
cmV0dXJuVHlwZShpKSwgY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSkpLCAicmV0dXJuIHR5
cGUgbWlzbWF0Y2ggaW4gdGFpbCBjYWxsLCBnb3QgIiwgY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5
cGUoaSkua2luZCwgIiwgZXhwZWN0ZWQgIiwgY2FsbGVyU2lnbmF0dXJlLnJldHVyblR5cGUoaSku
a2luZCk7CisgICAgICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBw
ZW5kKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhjaGVja0JyYW5j
aFRhcmdldChtX2NvbnRyb2xTdGFja1swXS5jb250cm9sRGF0YSkpOworICAgICAgICAgICAgV0FT
TV9UUllfQUREX1RPX0NPTlRFWFQoYWRkUmV0dXJuKG1fY29udHJvbFN0YWNrWzBdLmNvbnRyb2xE
YXRhLCBtX2V4cHJlc3Npb25TdGFjaykpOworICAgICAgICAgICAgbV91bnJlYWNoYWJsZUJsb2Nr
cyA9IDE7CisKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgICAg
IFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZENhbGwoZnVuY3Rpb25JbmRleCwgdHlwZURlZmlu
aXRpb24sIGFyZ3MsIHJlc3VsdHMpKTsKKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2Fs
bGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCkgPT0gcmVzdWx0cy5zaXplKCkpOworCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50
KCk7ICsraSkKKyAgICAgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRB
cHBlbmQoY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOworCisgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAorICAgIGNhc2UgUmV0dXJuQ2FsbEluZGlyZWN0
OgorICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVRh
aWxDYWxscygpLCAid2FzbSB0YWlsIGNhbGxzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICBG
QUxMVEhST1VHSDsKICAgICBjYXNlIENhbGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJfdCBz
aWduYXR1cmVJbmRleDsKICAgICAgICAgdWludDMyX3QgdGFibGVJbmRleDsKQEAgLTEyNzYsNiAr
MTMwMiw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogCiAg
ICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbiA9IG1faW5mby50eXBl
U2lnbmF0dXJlc1tzaWduYXR1cmVJbmRleF0uZ2V0KCk7CiAgICAgICAgIGNvbnN0IGF1dG8mIGNh
bGxlZVNpZ25hdHVyZSA9ICp0eXBlRGVmaW5pdGlvbi5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsK
KyAgICAgICAgY29uc3QgYXV0byYgY2FsbGVyU2lnbmF0dXJlID0gKm1fc2lnbmF0dXJlLmFzPEZ1
bmN0aW9uU2lnbmF0dXJlPigpOwogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGNhbGxl
ZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxlZSdzIGluZGV4
LgogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtX2V4cHJlc3Np
b25TdGFjay5zaXplKCksICJjYWxsX2luZGlyZWN0IGV4cGVjdHMgIiwgYXJndW1lbnRDb3VudCwg
IiBhcmd1bWVudHMsIGJ1dCB0aGUgZXhwcmVzc2lvbiBzdGFjayBjdXJyZW50bHkgaG9sZHMgIiwg
bV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHZhbHVlcyIpOwogCkBAIC0xMjk0LDEyICsxMzIx
LDMxIEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAg
ICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsKIAogICAgICAg
ICBSZXN1bHRMaXN0IHJlc3VsdHM7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFk
ZENhbGxJbmRpcmVjdCh0YWJsZUluZGV4LCB0eXBlRGVmaW5pdGlvbiwgYXJncywgcmVzdWx0cykp
OwogCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0
dXJuQ291bnQoKTsgKytpKQotICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0
QW5kQXBwZW5kKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKyAg
ICAgICAgaWYgKG1fY3VycmVudE9wY29kZSA9PSBSZXR1cm5DYWxsSW5kaXJlY3QpIHsKKyAgICAg
ICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFJldHVybkNhbGxJbmRpcmVjdCh0YWJs
ZUluZGV4LCB0eXBlRGVmaW5pdGlvbiwgYXJncywgcmVzdWx0cykpOwogCi0gICAgICAgIHJldHVy
biB7IH07CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsZWVTaWduYXR1cmUucmV0dXJu
Q291bnQoKSA9PSByZXN1bHRzLnNpemUoKSk7CisKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCkgIT0gY2FsbGVyU2lnbmF0dXJlLnJl
dHVybkNvdW50KCksICJ0YWlsIGNhbGwgaW5kaXJlY3QgZnVuY3Rpb24gd2l0aCByZXR1cm4gY291
bnQgIiwgY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCksICIsIGJ1dCB0aGUgY2FsbGVyJ3Mg
c2lnbmF0dXJlIGhhcyAiLCBjYWxsZXJTaWduYXR1cmUucmV0dXJuQ291bnQoKSwgIiByZXR1cm4g
dmFsdWVzIik7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsZWVT
aWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgV0FTTV9WQUxJ
REFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGNhbGxlclNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCBj
YWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSksICJyZXR1cm4gdHlwZSBtaXNtYXRjaCBpbiB0
YWlsIGNhbGwgaW5kaXJlY3QsIGdvdCAiLCBjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKS5r
aW5kLCAiLCBleHBlY3RlZCAiLCBjYWxsZXJTaWduYXR1cmUucmV0dXJuVHlwZShpKS5raW5kKTsK
KyAgICAgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoY2Fs
bGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKGNoZWNrQnJhbmNoVGFyZ2V0
KG1fY29udHJvbFN0YWNrWzBdLmNvbnRyb2xEYXRhKSk7CisgICAgICAgICAgICBXQVNNX1RSWV9B
RERfVE9fQ09OVEVYVChhZGRSZXR1cm4obV9jb250cm9sU3RhY2tbMF0uY29udHJvbERhdGEsIG1f
ZXhwcmVzc2lvblN0YWNrKSk7CisgICAgICAgICAgICBtX3VucmVhY2hhYmxlQmxvY2tzID0gMTsK
KworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICAgICAgV0FTTV9U
UllfQUREX1RPX0NPTlRFWFQoYWRkQ2FsbEluZGlyZWN0KHRhYmxlSW5kZXgsIHR5cGVEZWZpbml0
aW9uLCBhcmdzLCByZXN1bHRzKSk7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICAgICAgICAg
IG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChjYWxsZWVTaWduYXR1cmUucmV0
dXJuVHlwZShpKSwgcmVzdWx0c1tpXSk7CisKKyAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCiAgICAgY2FzZSBDYWxsUmVmOiB7CkBAIC0xODA2LDYgKzE4NTIsOSBAQCBhdXRvIEZ1bmN0
aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBhcnRp
YWxSZXN1bHQKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICBjYXNlIFJldHVybkNh
bGxJbmRpcmVjdDoKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlUYWlsQ2FsbHMoKSwgIndhc20gdGFpbCBjYWxscyBhcmUgbm90IGVuYWJsZWQiKTsK
KyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDYWxsSW5kaXJlY3Q6IHsKICAgICAgICAg
dWludDMyX3QgdW51c2VkOwogICAgICAgICB1aW50MzJfdCB1bnVzZWQyOwpAQCAtMTg1MCw2ICsx
ODk5LDkgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4
cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CisgICAgY2FzZSBSZXR1cm5DYWxsOgorICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRp
b25zOjp1c2VXZWJBc3NlbWJseVRhaWxDYWxscygpLCAid2FzbSB0YWlsIGNhbGxzIGFyZSBub3Qg
ZW5hYmxlZCIpOworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENhbGw6IHsKICAgICAg
ICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9G
QUlMUyhwYXJzZUZ1bmN0aW9uSW5kZXgoZnVuY3Rpb25JbmRleCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKaW5kZXggNWM0NjMxZjk2
MWYyLi4yM2EyN2ZkNGM1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtMzI2LDYgKzMyNiw4IEBAIHB1YmxpYzoKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUlu
ZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5p
dGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMp
OwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxSZWYoY29uc3Qg
VHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0
JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1
cm5DYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3Rv
cjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOworICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldHVybkNhbGxJbmRpcmVjdCh1bnNpZ25l
ZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNp
bmdMb2NhbHMoKTsKQEAgLTEzNTcsNiArMTM1OSw1NSBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjph
ZGRDYWxsUmVmKGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNz
aQogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFJldHVybkNh
bGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVy
ZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4g
UGFydGlhbFJlc3VsdAoreworICAgIEFTU0VSVChzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1
cmU+KCktPmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7CisgICAgY29uc3QgYXV0byYg
Y2FsbGluZ0NvbnZlbnRpb24gPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKKyAgICBMTEludENh
bGxJbmZvcm1hdGlvbiBjYWxsZWVJbmZvID0gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKCpzaWdu
YXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpOworICAgIGNvbnN0IFR5cGVJbmRleCBjYWxs
ZXJUeXBlSW5kZXggPSBtX2luZm8uaW50ZXJuYWxGdW5jdGlvblR5cGVJbmRpY2VzW21fZnVuY3Rp
b25JbmRleF07CisgICAgY29uc3QgVHlwZURlZmluaXRpb24mIGNhbGxlclR5cGVEZWZpbml0aW9u
ID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoY2FsbGVyVHlwZUluZGV4KTsKKyAgICB1aW50MzJfdCBj
YWxsZXJTdGFja0FyZ3MgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRS
ZWdpc3RlcnMoKSwKKyAgICAgICAgc3RkOjptYXgoY2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZT
dGFja0FyZ3VtZW50cygqY2FsbGVyVHlwZURlZmluaXRpb24uYXM8RnVuY3Rpb25TaWduYXR1cmU+
KCkpLAorICAgICAgICAgICAgY2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZTdGFja1Jlc3VsdHMo
KmNhbGxlclR5cGVEZWZpbml0aW9uLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKSkpOworCisgICAg
dW5pZnlWYWx1ZXNXaXRoQmxvY2soY2FsbGVlSW5mby5hcmd1bWVudHMsIGFyZ3MpOworCisgICAg
aWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkKKyAgICAgICAgV2FzbVJldHVybkNhbGw6OmVtaXQo
dGhpcywgZnVuY3Rpb25JbmRleCwgY2FsbGVlSW5mby5zdGFja09mZnNldCwgY2FsbGVlSW5mby5u
dW1iZXJPZlN0YWNrQXJndW1lbnRzLCBjYWxsZXJTdGFja0FyZ3MpOworICAgIGVsc2UKKyAgICAg
ICAgV2FzbVJldHVybkNhbGxOb1Rsczo6ZW1pdCh0aGlzLCBmdW5jdGlvbkluZGV4LCBjYWxsZWVJ
bmZvLnN0YWNrT2Zmc2V0LCBjYWxsZWVJbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMsIGNhbGxl
clN0YWNrQXJncyk7CisKKyAgICBjYWxsZWVJbmZvLmNvbW1pdFJlc3VsdHMocmVzdWx0cyk7CisK
KyAgICByZXR1cm4geyB9OworfQorCithdXRvIExMSW50R2VuZXJhdG9yOjphZGRSZXR1cm5DYWxs
SW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25h
dHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykg
LT4gUGFydGlhbFJlc3VsdAoreworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJn
cy50YWtlTGFzdCgpOworCisgICAgQVNTRVJUKHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVy
ZT4oKS0+YXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9pbmZv
LnRhYmxlQ291bnQoKSA+IHRhYmxlSW5kZXgpOworICAgIEFTU0VSVChtX2luZm8udGFibGVzW3Rh
YmxlSW5kZXhdLnR5cGUoKSA9PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKKworICAgIExM
SW50Q2FsbEluZm9ybWF0aW9uIGNhbGxlZUluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIo
KnNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKSk7CisgICAgY29uc3QgYXV0byYgY2Fs
bGluZ0NvbnZlbnRpb24gPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKKyAgICBjb25zdCBUeXBl
SW5kZXggY2FsbGVyVHlwZUluZGV4ID0gbV9pbmZvLmludGVybmFsRnVuY3Rpb25UeXBlSW5kaWNl
c1ttX2Z1bmN0aW9uSW5kZXhdOworICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBjYWxsZXJUeXBl
RGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlclR5cGVJbmRleCk7CisgICAg
dWludDMyX3QgY2FsbGVyU3RhY2tBcmdzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNr
QWxpZ25tZW50UmVnaXN0ZXJzKCksIHN0ZDo6bWF4KGNhbGxpbmdDb252ZW50aW9uLm51bWJlck9m
U3RhY2tBcmd1bWVudHMoKmNhbGxlclR5cGVEZWZpbml0aW9uLmFzPEZ1bmN0aW9uU2lnbmF0dXJl
PigpKSwgY2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZTdGFja1Jlc3VsdHMoKmNhbGxlclR5cGVE
ZWZpbml0aW9uLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKSkpOworCisgICAgdW5pZnlWYWx1ZXNX
aXRoQmxvY2soY2FsbGVlSW5mby5hcmd1bWVudHMsIGFyZ3MpOworCisgICAgaWYgKENvbnRleHQ6
OnVzZUZhc3RUTFMoKSkKKyAgICAgICAgV2FzbVJldHVybkNhbGxJbmRpcmVjdDo6ZW1pdCh0aGlz
LCBjYWxsZWVJbmRleCwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZSgqc2lnbmF0dXJlLmFzPEZ1
bmN0aW9uU2lnbmF0dXJlPigpKSwgY2FsbGVlSW5mby5zdGFja09mZnNldCwgY2FsbGVlSW5mby5u
dW1iZXJPZlN0YWNrQXJndW1lbnRzLCBjYWxsZXJTdGFja0FyZ3MsIHRhYmxlSW5kZXgpOworICAg
IGVsc2UKKyAgICAgICAgV2FzbVJldHVybkNhbGxJbmRpcmVjdE5vVGxzOjplbWl0KHRoaXMsIGNh
bGxlZUluZGV4LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKCpzaWduYXR1cmUuYXM8RnVuY3Rp
b25TaWduYXR1cmU+KCkpLCBjYWxsZWVJbmZvLnN0YWNrT2Zmc2V0LCBjYWxsZWVJbmZvLm51bWJl
ck9mU3RhY2tBcmd1bWVudHMsIGNhbGxlclN0YWNrQXJncywgdGFibGVJbmRleCk7CisKKyAgICBj
YWxsZWVJbmZvLmNvbW1pdFJlc3VsdHMocmVzdWx0cyk7CisKKyAgICByZXR1cm4geyB9OworfQor
CiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1bHQg
PSBwdXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3Bw
CmluZGV4IDQ0MDY1MDQyNWU4Zi4uNGMxYzg0NWY1ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcApAQCAtNTY2LDYgKzU2NiwzNiBAQCBXQVNNX1NM
T1dfUEFUSF9ERUNMKGNhbGxfcmVmX25vX3RscykKICAgICByZXR1cm4gZG9XYXNtQ2FsbFJlZihj
YWxsRnJhbWUsIGluc3RhbmNlLCByZWZlcmVuY2UsIGluc3RydWN0aW9uLm1fdHlwZUluZGV4KTsK
IH0KIAorV0FTTV9TTE9XX1BBVEhfREVDTChyZXR1cm5fY2FsbCkKK3sKKyAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKKworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVJldHVy
bkNhbGw+KCk7CisgICAgcmV0dXJuIGRvV2FzbUNhbGwoaW5zdGFuY2UsIGluc3RydWN0aW9uLm1f
ZnVuY3Rpb25JbmRleCk7Cit9CisKK1dBU01fU0xPV19QQVRIX0RFQ0wocmV0dXJuX2NhbGxfbm9f
dGxzKQoreworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworCisgICAgYXV0byBpbnN0cnVj
dGlvbiA9IHBjLT5hczxXYXNtUmV0dXJuQ2FsbE5vVGxzPigpOworICAgIHJldHVybiBkb1dhc21D
YWxsKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpOworfQorCitXQVNNX1NM
T1dfUEFUSF9ERUNMKHJldHVybl9jYWxsX2luZGlyZWN0KQoreworICAgIGF1dG8gaW5zdHJ1Y3Rp
b24gPSBwYy0+YXM8V2FzbVJldHVybkNhbGxJbmRpcmVjdD4oKTsKKyAgICB1bnNpZ25lZCBmdW5j
dGlvbkluZGV4ID0gUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpLnVuYm94ZWRJbnQz
MigpOworICAgIHJldHVybiBkb1dhc21DYWxsSW5kaXJlY3QoY2FsbEZyYW1lLCBpbnN0YW5jZSwg
ZnVuY3Rpb25JbmRleCwgaW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBpbnN0cnVjdGlvbi5tX3Np
Z25hdHVyZUluZGV4KTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChyZXR1cm5fY2FsbF9pbmRp
cmVjdF9ub190bHMpCit7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtUmV0dXJu
Q2FsbEluZGlyZWN0Tm9UbHM+KCk7CisgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleCA9IFJFQUQo
aW5zdHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4KS51bmJveGVkSW50MzIoKTsKKyAgICByZXR1cm4g
ZG9XYXNtQ2FsbEluZGlyZWN0KGNhbGxGcmFtZSwgaW5zdGFuY2UsIGZ1bmN0aW9uSW5kZXgsIGlu
c3RydWN0aW9uLm1fdGFibGVJbmRleCwgaW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7Cit9
CisKIFdBU01fU0xPV19QQVRIX0RFQ0woc2V0X2dsb2JhbF9yZWYpCiB7CiAgICAgYXV0byBpbnN0
cnVjdGlvbiA9IHBjLT5hczxXYXNtU2V0R2xvYmFsUmVmPigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCmluZGV4IGU3MDBkYWQ2OWFhNy4uNDM4ZjE4YWE1N2U5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCkBAIC04MSw2
ICs4MSwxMCBAQCBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsX2luZGlyZWN0KTsKIFdB
U01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNhbGxfaW5kaXJlY3Rfbm9fdGxzKTsKIFdBU01fU0xP
V19QQVRIX0hJRERFTl9ERUNMKGNhbGxfcmVmKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNM
KGNhbGxfcmVmX25vX3Rscyk7CitXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChyZXR1cm5fY2Fs
bCk7CitXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChyZXR1cm5fY2FsbF9ub190bHMpOworV0FT
TV9TTE9XX1BBVEhfSElEREVOX0RFQ0wocmV0dXJuX2NhbGxfaW5kaXJlY3QpOworV0FTTV9TTE9X
X1BBVEhfSElEREVOX0RFQ0wocmV0dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzKTsKIFdBU01fU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNldF9nbG9iYWxfcmVmKTsKIFdBU01fU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNldF9nbG9iYWxfcmVmX3BvcnRhYmxlX2JpbmRpbmcpOwogV0FTTV9TTE9XX1BBVEhf
SElEREVOX0RFQ0wobWVtb3J5X2F0b21pY193YWl0MzIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
d2FzbS5qc29uCmluZGV4IDA2NjE2NzNiNDc3ZC4uY2JiY2ZhYjZmZGZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vd2FzbS5qc29uCkBAIC05OCw2ICs5OCw4IEBACiAgICAgICAgICJkYXRhLmRy
b3AiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiZXh0dGFibGUiLCAgICJ2YWx1ZSI6ICAyNTIs
ICJyZXR1cm4iOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjog
W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJz
ZWdtZW50X2luZGV4IiwgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2hyaW5rcyB0aGUgc2l6
ZSBvZiB0aGUgc2VnbWVudCB0byB6ZXJvIiwgImV4dGVuZGVkT3AiOiA5IH0sCiAgICAgICAgICJj
YWxsIjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6
ICAxNiwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1l
dGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFt
ZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1
bmN0aW9uIGJ5IGl0cyBpbmRleCIgfSwKICAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7
ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxs
Il0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUiOiAidmFy
dWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBh
biBleHBlY3RlZCBzaWduYXR1cmUiIH0sCisgICAgICAgICJyZXR1cm5fY2FsbCI6ICAgICAgICAg
ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTgsICJyZXR1cm4i
OiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25f
aW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRhaWwgY2FsbCBhIGZ1bmN0aW9uIGJ5
IGl0cyBpbmRleCIgfSwKKyAgICAgICAgInJldHVybl9jYWxsX2luZGlyZWN0IjogICAgICAgeyAi
Y2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxOSwgInJldHVybiI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiaW5kaXJlY3QgdGFpbCBjYWxsIGEgZnVuY3Rpb24gd2l0
aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCiAgICAgICAgICJjYWxsX3JlZiI6ICAgICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAyMCwgInJldHVybiI6IFsi
Y2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIHJlZmVyZW5jZSIg
fSwKICAgICAgICAgImkzMi5sb2FkOF9zIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnki
LCAgICAgInZhbHVlIjogIDQ0LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9u
IjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDhfdSI6ICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsiaTMy
Il0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVu
LWpzYy1zdHJlc3MtdGVzdHMKaW5kZXggZDNiZjExMjA4NDg5Li42ZmIxNTQ1MzE3MWIgMTAwNzU1
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2Ny
aXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtMTg5OSw2ICsxODk5LDEwIEBAIGRlZiBydW5X
ZWJBc3NlbWJseUZ1bmN0aW9uUmVmZXJlbmNlU3BlY1Rlc3QobW9kZSkKICAgICBydW5XZWJBc3Nl
bWJseVNwZWNUZXN0QmFzZShtb2RlLCAic3BlYy1oYXJuZXNzIiwgIi0tdXNlV2ViQXNzZW1ibHlU
eXBlZEZ1bmN0aW9uUmVmZXJlbmNlcz10cnVlIikKIGVuZAogCitkZWYgcnVuV2ViQXNzZW1ibHlS
ZXR1cm5DYWxsU3BlY1Rlc3QobW9kZSkKKyAgICBydW5XZWJBc3NlbWJseVNwZWNUZXN0QmFzZSht
b2RlLCAicmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzIiwgIi0tdXNlV2ViQXNzZW1ibHlUYWlsQ2Fs
bHM9dHJ1ZSIpCitlbmQKKwogZGVmIHJ1bldlYkFzc2VtYmx5TG93RXhlY3V0YWJsZU1lbW9yeSgq
b3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJldHVybiBpZiAhJGppdFRlc3RzCiAg
ICAgcmV0dXJuIGlmICEkaXNXYXNtUGxhdGZvcm0KLS0gCjIuMzcuMAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>460587</attachid>
            <date>2022-06-30 09:37:46 -0700</date>
            <delta_ts>2022-07-01 15:22:06 -0700</delta_ts>
            <desc>Implement wasm tail calls</desc>
            <filename>0001-implement-wasm-tail-call.patch</filename>
            <type>text/plain</type>
            <size>1195927</size>
            <attacher name="Tom Tartarin">tom</attacher>
            
              <data encoding="base64">RnJvbSBhMWUzZDNiNzM0MWI3MWNmOWE1ZWM0OTAyOTQ1NTM1OTQzZTY0ZDIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gVGFydGFyaW4gPHRvbUBsZWFuaW5ndGVjaC5jb20+CkRh
dGU6IE1vbiwgMjcgSnVuIDIwMjIgMTE6Mzk6NTggKzAyMDAKU3ViamVjdDogW1BBVENIXSBpbXBs
ZW1lbnQgd2FzbSB0YWlsIGNhbGwKCi0tLQogSlNUZXN0cy93YXNtLnlhbWwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgIDcgKwogSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMt
aGFybmVzcy5qcyAgICAgIHwgICAgMzggKwogLi4uL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9h
c3luY19pbmRleC5qcyAgIHwgICA0MjYgKwogLi4uL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9z
eW5jX2luZGV4LmpzICAgIHwgICAzODcgKwogLi4uL3dhc20tY29uc3RhbnRzLmpzICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAzODQgKwogLi4uL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMgICAg
ICAgICAgICAgICAgICAgIHwgICA1ODMgKwogSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMt
aGFybmVzcy93YXN0LmpzIHwgMjk3NzcgKysrKysrKysrKysrKysrKwogLi4uL3JldHVybi1jYWxs
LXNwZWMtdGVzdHMvcmV0dXJuX2NhbGwud2FzdCAgIHwgICAyMDIgKwogLi4uL3JldHVybl9jYWxs
Lndhc3QuanMgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMzIgKwogLi4uL3JldHVybl9jYWxs
X2luZGlyZWN0Lndhc3QgICAgICAgICAgICAgICAgIHwgICA1MzYgKwogLi4uL3JldHVybl9jYWxs
X2luZGlyZWN0Lndhc3QuanMgICAgICAgICAgICAgIHwgICAyMzIgKwogSlNUZXN0cy93YXNtL3Jl
dHVybi1jYWxsL3JldHVybi1jYWxsLmpzICAgICAgIHwgICA3MTAgKwogSlNUZXN0cy93YXNtL3dh
c20uanNvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDIgKwogLi4uL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmggICAgICAgICAgIHwgICAgIDcgKwogLi4uL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmggICAgICAgICAgIHwgICAgIDYgKwogLi4uL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclJJU0NWNjQuaCAgICAgICAgIHwgICAgMTAgKwogLi4uL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oICAgICAgICAgIHwgICAgMTQgKwogLi4uL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiAgIHwgICAgNDAgKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIHwgICAgIDQgKwogLi4uL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtICAgICAgICAgICAgIHwgICAgMTIgKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbSAgIHwgICAxOTggKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCAgIHwgICAgIDEgKwogLi4uL3dhc20vV2FzbUFp
cklSR2VuZXJhdG9yLmNwcCAgICAgICAgICAgICAgIHwgICAzMjAgKy0KIC4uLi9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCB8ICAgMzQxICstCiAuLi4vd2FzbS9XYXNt
Q2FsbGluZ0NvbnZlbnRpb24uaCAgICAgICAgICAgICAgfCAgICA4NiArLQogLi4uL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggIHwgICAgNzAgKy0KIC4uLi93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAgICAgICAgICAgICAgICB8ICAgMTE0ICstCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCAgfCAgICAzMCArCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmggICAgfCAgICAgNCArCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgICAgfCAgICAgNCArCiAuLi4vd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCAgICAgICAgICAgfCAgICAgNCArCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24gICAgICAgICAgfCAgICAgMiArCiBUb29scy9TY3Jp
cHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzICAgICAgICAgICAgfCAgICAgNCArCiAzMyBmaWxlcyBj
aGFuZ2VkLCAzNDYxNyBpbnNlcnRpb25zKCspLCA3MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzLmpzCiBjcmVhdGUg
bW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9hc3luY19p
bmRleC5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVj
LWhhcm5lc3Mvc3luY19pbmRleC5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9y
ZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMuanMKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBKU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dhc20tbW9kdWxlLWJ1
aWxkZXIuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3Bl
Yy1oYXJuZXNzL3dhc3QuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0dXJu
LWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbC53YXN0CiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNU
ZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGwud2FzdC5qcwogY3Jl
YXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0
dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0LmpzCiBjcmVhdGUg
bW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLmpzCgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtLnlhbWwgYi9KU1Rlc3RzL3dhc20ueWFtbAppbmRleCA5Y2Q0
MGViZjk4YjkzOWYxYjBmN2I3NDAyZTZkMDE1MTMwYTQ5NDgyLi5iMThjMWFkYmFjN2Y1MjMyZGY2
M2Y4MzU2M2NjZTZjN2JkNmQzZjU3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20ueWFtbAorKysg
Yi9KU1Rlc3RzL3dhc20ueWFtbApAQCAtMjk1LDYgKzI5NSwxMyBAQAogLSBwYXRoOiB3YXNtL3Nw
ZWMtdGVzdHMvdXRmOC1pbnZhbGlkLWVuY29kaW5nLndhc3QuanMKICAgY21kOiBydW5XZWJBc3Nl
bWJseVNwZWNUZXN0IDpub3JtYWwKIAorLSBwYXRoOiB3YXNtL3JldHVybi1jYWxsCisgIGNtZDog
cnVuV2ViQXNzZW1ibHlTdWl0ZSgiLS11c2VXZWJBc3NlbWJseVRhaWxDYWxscz10cnVlIikKKy0g
cGF0aDogd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVybl9jYWxsLndhc3QuanMKKyAg
Y21kOiBydW5XZWJBc3NlbWJseVJldHVybkNhbGxTcGVjVGVzdCA6bm9ybWFsCistIHBhdGg6IHdh
c20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0LmpzCisg
IGNtZDogcnVuV2ViQXNzZW1ibHlSZXR1cm5DYWxsU3BlY1Rlc3QgOm5vcm1hbAorCiAtIHBhdGg6
IHdhc20vbW9kdWxlcy9ydW4tZnJvbS13YXNtLndhc20KICAgY21kOiBydW5XZWJBc3NlbWJseQog
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzLmpzIGIv
SlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWVl
YjU5MzE2ZTAyNGVlMjdmY2UzZTEwZjQyYTMzZTk4NDNjYzMyCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy5qcwpAQCAtMCwwICsxLDM4IEBA
CisidXNlIHN0cmljdCI7CisKKy8vIFRoaXMgaXMgb3VyIG5pZnR5IHdheSB0byBtYWtlIG1vZHVs
ZXMgc3luY2hyb25vdXMuCitsZXQgYXNzZXJ0OworaW1wb3J0KCcuL2Fzc2VydC5qcycpLnRoZW4o
KG1vZHVsZSkgPT4geworICAgIGFzc2VydCA9IG1vZHVsZTsKK30sICR2bS5jcmFzaCk7CitkcmFp
bk1pY3JvdGFza3MoKTsKKworZnVuY3Rpb24gdGVzdChmdW5jLCBkZXNjcmlwdGlvbikgeworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHByaW50
KCJVbmV4cGVjdGVkIGV4Y2VwdGlvbjoiLCBkZXNjcmlwdGlvbik7CisgICAgICAgIHRocm93IGU7
CisgICAgfQorfQorCitmdW5jdGlvbiBwcm9taXNlX3Rlc3QoZnVuYywgZGVzY3JpcHRpb24pIHsK
KyAgICBhc3NlcnQuYXN5bmNUZXN0KGZ1bmMoKSk7Cit9OworCitsZXQgYXNzZXJ0X2VxdWFscyA9
IGFzc2VydC5lcTsKK2xldCBhc3NlcnRfdHJ1ZSA9ICh4KSA9PiBhc3NlcnQuZXEoeCx0cnVlKTsK
K2xldCBhc3NlcnRfZmFsc2UgPSAoeCkgPT4gYXNzZXJ0LmVxKHgsZmFsc2UpOworbGV0IGFzc2Vy
dF91bnJlYWNoZWQgPSAoKSA9PiB7CisgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgaGF2ZSBi
ZWVuIHVucmVhY2hhYmxlIik7Cit9OworCitsZXQgY29uc29sZSA9IHsKKyAgICBsb2coLi4uYXJn
cykgeworICAgICAgICBwcmludCguLi5hcmdzKTsKKyAgICB9Cit9OworCitsb2FkKCIuL3JldHVy
bi1jYWxsLXNwZWMtaGFybmVzcy9zeW5jX2luZGV4LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOwor
bG9hZCgiLi9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMuanMiLCAiY2Fs
bGVyIHJlbGF0aXZlIik7Citsb2FkKCIuL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy93YXNtLW1v
ZHVsZS1idWlsZGVyLmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9hc3luY19pbmRleC5qcyBiL0pTVGVzdHMv
d2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3MvYXN5bmNfaW5kZXguanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzIwMDAxOWFjNjk5OTA0NGVmOTUwNGZmMDgxMThjNzM0YzdlMGIxNgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3MvYXN5bmNfaW5kZXguanMK
QEAgLTAsMCArMSw0MjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxOCBXZWJBc3NlbWJseSBDb21t
dW5pdHkgR3JvdXAgcGFydGljaXBhbnRzCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
ICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworInVzZSBzdHJpY3QiOworCitsZXQgdGVz
dE51bSA9IChmdW5jdGlvbigpIHsKKyAgbGV0IGNvdW50ID0gMTsKKyAgcmV0dXJuIGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiBgIyR7Y291bnQrK30gYDsKKyAgfTsKK30pKCk7CisKK2Z1bmN0aW9u
IHVuaXF1ZVRlc3QoZnVuYywgZGVzYykgeworICB0ZXN0KGZ1bmMsIHRlc3ROdW0oKSArIGRlc2Mp
OworfQorCisvLyBXUFQncyBhc3NlcnRfdGhyb3cgdXNlcyBhIGxpc3Qgb2YgcHJlZGVmaW5lZCwg
aGFyZGNvZGVkIGtub3duIGVycm9ycy4gU2luY2UKKy8vIGl0IGlzIG5vdCBhd2FyZSBvZiB0aGUg
V2ViQXNzZW1ibHkgZXJyb3IgdHlwZXMgKHlldCksIGltcGxlbWVudCBvdXIgb3duCisvLyB2ZXJz
aW9uLgorZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGZ1bmMsIGVycikgeworICBsZXQgY2F1Z2h0ID0g
ZmFsc2U7CisgIHRyeSB7CisgICAgZnVuYygpOworICB9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0
X3RydWUoCisgICAgICBlIGluc3RhbmNlb2YgZXJyLAorICAgICAgYGV4cGVjdGVkICR7ZXJyLm5h
bWV9LCBvYnNlcnZlZCAke2UuY29uc3RydWN0b3IubmFtZX1gCisgICAgKTsKKyAgICBjYXVnaHQg
PSB0cnVlOworICB9CisgIGFzc2VydF90cnVlKGNhdWdodCwgdGVzdE51bSgpICsgImFzc2VydFRo
cm93cyBtdXN0IGNhdGNoIGFueSBlcnJvci4iKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFdBU1QgSEFSTkVTUyAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2Nv
bnN0IEVYUEVDVF9JTlZBTElEID0gZmFsc2U7CisKKy8qIERBVEEgKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwor
bGV0IGV4dGVybnJlZnMgPSB7fTsKK2xldCBleHRlcm5zeW0gPSBTeW1ib2woImV4dGVybnJlZiIp
OworZnVuY3Rpb24gZXh0ZXJucmVmKHMpIHsKKyAgaWYgKCEgKHMgaW4gZXh0ZXJucmVmcykpIGV4
dGVybnJlZnNbc10gPSB7W2V4dGVybnN5bV06IHN9OworICByZXR1cm4gZXh0ZXJucmVmc1tzXTsK
K30KK2Z1bmN0aW9uIGlzX2V4dGVybnJlZih4KSB7CisgIHJldHVybiAoeCAhPT0gbnVsbCAmJiBl
eHRlcm5zeW0gaW4geCkgPyAxIDogMDsKK30KK2Z1bmN0aW9uIGlzX2Z1bmNyZWYoeCkgeworICBy
ZXR1cm4gdHlwZW9mIHggPT09ICJmdW5jdGlvbiIgPyAxIDogMDsKK30KK2Z1bmN0aW9uIGVxX2V4
dGVybnJlZih4LCB5KSB7CisgIHJldHVybiB4ID09PSB5ID8gMSA6IDA7Cit9CitmdW5jdGlvbiBl
cV9mdW5jcmVmKHgsIHkpIHsKKyAgcmV0dXJuIHggPT09IHkgPyAxIDogMDsKK30KKworLy8gRGVm
YXVsdCBpbXBvcnRzLgordmFyIHJlZ2lzdHJ5ID0ge307CisKKy8vIEFsbCB0ZXN0cyBydW4gYXN5
bmNocm9ub3VzbHkgYW5kIHJldHVybiB0aGVpciByZXN1bHRzIGFzIHByb21pc2VzLiBUbyBlbnN1
cmUKKy8vIHRoYXQgYWxsIHRlc3RzIGV4ZWN1dGUgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHdlIGNo
YWluIHRoZSBwcm9taXNlcyB0b2dldGhlcgorLy8gc28gdGhhdCBhIHRlc3QgaXMgb25seSBleGVj
dXRlZCB3aGVuIGFsbCBwcmV2aW91cyB0ZXN0cyBoYXZlIGZpbmlzaGVkIHRoZWlyCisvLyBleGVj
dXRpb24uCitsZXQgY2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTsKKworLy8gUmVzZXRzIHRoZSBy
ZWdpc3RyeSBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgV1BUIHRlc3RzLgorZnVuY3Rpb24gcmVpbml0
aWFsaXplUmVnaXN0cnkoKSB7CisgIGlmICh0eXBlb2YgV2ViQXNzZW1ibHkgPT09ICJ1bmRlZmlu
ZWQiKSByZXR1cm47CisKKyAgY2hhaW4gPSBjaGFpbi50aGVuKF8gPT4geworICAgIGxldCBzcGVj
dGVzdCA9IHsKKyAgICAgIGV4dGVybnJlZjogZXh0ZXJucmVmLAorICAgICAgaXNfZXh0ZXJucmVm
OiBpc19leHRlcm5yZWYsCisgICAgICBpc19mdW5jcmVmOiBpc19mdW5jcmVmLAorICAgICAgZXFf
ZXh0ZXJucmVmOiBlcV9leHRlcm5yZWYsCisgICAgICBlcV9mdW5jcmVmOiBlcV9mdW5jcmVmLAor
ICAgICAgcHJpbnQ6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICBwcmludF9pMzI6
IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICBwcmludF9pMzJfZjMyOiBjb25zb2xl
LmxvZy5iaW5kKGNvbnNvbGUpLAorICAgICAgcHJpbnRfZjY0X2Y2NDogY29uc29sZS5sb2cuYmlu
ZChjb25zb2xlKSwKKyAgICAgIHByaW50X2YzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwK
KyAgICAgIHByaW50X2Y2NDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgIGdsb2Jh
bF9pMzI6IDY2NiwKKyAgICAgIGdsb2JhbF9mMzI6IDY2NiwKKyAgICAgIGdsb2JhbF9mNjQ6IDY2
NiwKKyAgICAgIHRhYmxlOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoeworICAgICAgICBpbml0aWFs
OiAxMCwKKyAgICAgICAgbWF4aW11bTogMjAsCisgICAgICAgIGVsZW1lbnQ6ICJhbnlmdW5jIgor
ICAgICAgfSksCisgICAgICBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFs
OiAxLCBtYXhpbXVtOiAyIH0pCisgICAgfTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgIGdl
dCh0YXJnZXQsIHByb3ApIHsKKyAgICAgICAgcmV0dXJuIHByb3AgaW4gdGFyZ2V0ID8gdGFyZ2V0
W3Byb3BdIDoge307CisgICAgICB9CisgICAgfTsKKyAgICByZWdpc3RyeSA9IG5ldyBQcm94eSh7
IHNwZWN0ZXN0IH0sIGhhbmRsZXIpOworICB9KTsKKworICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGdlbmVyYXRlZCBqcyB0ZXN0IGZpbGUuIEJ5CisgIC8v
IGFkZGluZyB0aGUgY2hhaW4gYXMgYSBwcm9taXNlX3Rlc3QgaGVyZSB3ZSBtYWtlIHN1cmUgdGhh
dCB0aGUgV1BUIGhhcm5lc3MKKyAgLy8gd2FpdHMgZm9yIGFsbCB0ZXN0cyBpbiB0aGUgY2hhaW4g
dG8gZmluaXNoLgorICBwcm9taXNlX3Rlc3QoXyA9PiBjaGFpbiwgdGVzdE51bSgpICsgIlJlaW5p
dGlhbGl6ZSB0aGUgZGVmYXVsdCBpbXBvcnRzIik7Cit9CisKK3JlaW5pdGlhbGl6ZVJlZ2lzdHJ5
KCk7CisKKy8qIFdBU1QgUE9MWUZJTEwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworZnVuY3Rpb24gYmluYXJ5KGJ5dGVzKSB7
CisgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKKyAgbGV0IHZp
ZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVz
Lmxlbmd0aDsgKytpKSB7CisgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7CisgIH0K
KyAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLyoqCisgKiBSZXR1cm5zIGEgY29tcGlsZWQgbW9kdWxl
LCBvciB0aHJvd3MgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGF0IGNvbXBpbGF0aW9uLgorICovCitm
dW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBjb25zdCB0ZXN0ID0gdmFs
aWQKKyAgICA/ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgY29tcGlsYXRpb24gc3VjY2VlZHMiCisg
ICAgOiAiVGVzdCB0aGF0IFdlYkFzc2VtYmx5IGNvbXBpbGF0aW9uIGZhaWxzIjsKKyAgY29uc3Qg
bG9jID0gbmV3IEVycm9yKCkuc3RhY2sudG9TdHJpbmcoKS5yZXBsYWNlKCJFcnJvciIsICIiKTsK
KyAgbGV0IGJ1ZmZlciA9IGJpbmFyeShieXRlcyk7CisgIGxldCB2YWxpZGF0ZWQgPSBXZWJBc3Nl
bWJseS52YWxpZGF0ZShidWZmZXIpOworCisgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgYXNzZXJ0
X2VxdWFscyh2YWxpZCwgdmFsaWRhdGVkKTsKKyAgfSwgdGVzdCk7CisKKyAgY2hhaW4gPSBjaGFp
bi50aGVuKF8gPT4gV2ViQXNzZW1ibHkuY29tcGlsZShidWZmZXIpKS50aGVuKAorICAgIG1vZHVs
ZSA9PiB7CisgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSh2YWxp
ZCwgbG9jKTsKKyAgICAgIH0sIHRlc3QpOworICAgICAgcmV0dXJuIG1vZHVsZTsKKyAgICB9LAor
ICAgIGVycm9yID0+IHsKKyAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgIGFzc2VydF90
cnVlKAorICAgICAgICAgICF2YWxpZCwKKyAgICAgICAgICBgV2ViQXNzZW1ibHkuY29tcGlsZSBm
YWlsZWQgdW5leHBlY3RlZGx5IHdpdGggJHtlcnJvcn0gYXQge2xvY31gCisgICAgICAgICk7Cisg
ICAgICB9LCB0ZXN0KTsKKyAgICB9CisgICk7CisgIHJldHVybiBjaGFpbjsKK30KKworZnVuY3Rp
b24gYXNzZXJ0X2ludmFsaWQoYnl0ZXMpIHsKKyAgbW9kdWxlKGJ5dGVzLCBFWFBFQ1RfSU5WQUxJ
RCk7Cit9CisKK2NvbnN0IGFzc2VydF9tYWxmb3JtZWQgPSBhc3NlcnRfaW52YWxpZDsKKworZnVu
Y3Rpb24gaW5zdGFuY2UoYnl0ZXMsIGltcG9ydHMsIHZhbGlkID0gdHJ1ZSkgeworICBjb25zdCB0
ZXN0ID0gdmFsaWQKKyAgICA/ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgaW5zdGFudGlhdGlvbiBz
dWNjZWVkcyIKKyAgICA6ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgaW5zdGFudGlhdGlvbiBmYWls
cyI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgi
RXJyb3IiLCAiIik7CisgIGNoYWluID0gUHJvbWlzZS5hbGwoW2ltcG9ydHMsIGNoYWluXSkKKyAg
ICAudGhlbih2YWx1ZXMgPT4geworICAgICAgbGV0IGltcG9ydHMgPSB2YWx1ZXNbMF0gPyB2YWx1
ZXNbMF0gOiByZWdpc3RyeTsKKyAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShi
aW5hcnkoYnl0ZXMpLCBpbXBvcnRzKTsKKyAgICB9KQorICAgIC50aGVuKAorICAgICAgcGFpciA9
PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUodmFs
aWQsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgICByZXR1cm4gcGFpci5pbnN0YW5j
ZTsKKyAgICAgIH0sCisgICAgICBlcnJvciA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7
CisgICAgICAgICAgYXNzZXJ0X3RydWUoCisgICAgICAgICAgICAhdmFsaWQsCisgICAgICAgICAg
ICBgdW5leHBlY3RlZCBpbnN0YW50aWF0aW9uIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xv
Y31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICAgIHJldHVybiBlcnJv
cjsKKyAgICAgIH0KKyAgICApOworICByZXR1cm4gY2hhaW47Cit9CisKK2Z1bmN0aW9uIGV4cG9y
dHMoaW5zdGFuY2UpIHsKKyAgcmV0dXJuIGluc3RhbmNlLnRoZW4oaW5zdCA9PiB7CisgICAgcmV0
dXJuIHsgbW9kdWxlOiBpbnN0LmV4cG9ydHMsIHNwZWN0ZXN0OiByZWdpc3RyeS5zcGVjdGVzdCB9
OworICB9KTsKK30KKworZnVuY3Rpb24gY2FsbChpbnN0YW5jZSwgbmFtZSwgYXJncykgeworICBy
ZXR1cm4gUHJvbWlzZS5hbGwoW2luc3RhbmNlLCBjaGFpbl0pLnRoZW4odmFsdWVzID0+IHsKKyAg
ICByZXR1cm4gdmFsdWVzWzBdLmV4cG9ydHNbbmFtZV0oLi4uYXJncyk7CisgIH0pOworfQorCitm
dW5jdGlvbiBydW4oYWN0aW9uKSB7CisgIGNvbnN0IHRlc3QgPSAiUnVuIGEgV2ViQXNzZW1ibHkg
dGVzdCB3aXRob3V0IHNwZWNpYWwgYXNzZXJ0aW9ucyI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJv
cigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGNoYWluID0gUHJv
bWlzZS5hbGwoW2NoYWluLCBhY3Rpb24oKV0pCisgICAgLnRoZW4oCisgICAgICBfID0+IHsKKyAg
ICAgICAgdW5pcXVlVGVzdChfID0+IHt9LCB0ZXN0KTsKKyAgICAgIH0sCisgICAgICBlcnJvciA9
PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoCisg
ICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgIGB1bmV4cGVjdGVkIHJ1bnRpbWUgZXJyb3Is
IG9ic2VydmVkICR7ZXJyb3J9ICR7bG9jfWAKKyAgICAgICAgICApOworICAgICAgICB9LCAicnVu
Iik7CisgICAgICB9CisgICAgKQorICAgIC8vIENsZWFyIGFsbCBleGNlcHRpb25zLCBzbyB0aGF0
IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVkLgorICAgIC5jYXRjaChfID0+IHt9KTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X3RyYXAoYWN0aW9uKSB7CisgIGNvbnN0IHRlc3QgPSAiVGVzdCB0
aGF0IGEgV2ViQXNzZW1ibHkgY29kZSB0cmFwcyI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigp
LnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGNoYWluID0gUHJvbWlz
ZS5hbGwoW2NoYWluLCBhY3Rpb24oKV0pCisgICAgLnRoZW4oCisgICAgICByZXN1bHQgPT4gewor
ICAgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICAgIGFzc2VydF90cnVlKGZhbHNlLCBs
b2MpOworICAgICAgICB9LCB0ZXN0KTsKKyAgICAgIH0sCisgICAgICBlcnJvciA9PiB7CisgICAg
ICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoCisgICAgICAgICAg
ICBlcnJvciBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAg
IGBleHBlY3RlZCBydW50aW1lIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xvY31gCisgICAg
ICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9CisgICAgKQorICAgIC8vIENsZWFy
IGFsbCBleGNlcHRpb25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVkLgor
ICAgIC5jYXRjaChfID0+IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3JldHVybihhY3Rpb24s
IC4uLmV4cGVjdGVkKSB7CisgIGNvbnN0IHRlc3QgPSAiVGVzdCB0aGF0IGEgV2ViQXNzZW1ibHkg
Y29kZSByZXR1cm5zIGEgc3BlY2lmaWMgcmVzdWx0IjsKKyAgY29uc3QgbG9jID0gbmV3IEVycm9y
KCkuc3RhY2sudG9TdHJpbmcoKS5yZXBsYWNlKCJFcnJvciIsICIiKTsKKyAgY2hhaW4gPSBQcm9t
aXNlLmFsbChbYWN0aW9uKCksIGNoYWluXSkKKyAgICAudGhlbigKKyAgICAgIHZhbHVlcyA9PiB7
CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgaWYgKGFjdHVhbCA9PT0gdW5k
ZWZpbmVkKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBbXTsKKyAgICAgICAgICB9IGVsc2UgaWYg
KCFBcnJheS5pc0FycmF5KGFjdHVhbCkpIHsKKyAgICAgICAgICAgIGFjdHVhbCA9IFthY3R1YWxd
OworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoYWN0dWFsLmxlbmd0aCAhPT0gZXhwZWN0ZWQu
bGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhwZWN0ZWQubGVuZ3RoICsg
IiB2YWx1ZShzKSBleHBlY3RlZCwgZ290ICIgKyBhY3R1YWwubGVuZ3RoKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3R1YWwubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRbaV0pIHsKKyAgICAgICAgICAgICAgY2FzZSAibmFu
OmNhbm9uaWNhbCI6CisgICAgICAgICAgICAgIGNhc2UgIm5hbjphcml0aG1ldGljIjoKKyAgICAg
ICAgICAgICAgY2FzZSAibmFuOmFueSI6CisgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IEpT
IGNhbid0IHJlbGlhYmx5IGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBOYU4gdmFsdWVzLAorICAgICAg
ICAgICAgICAgIC8vIHNvIHRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gdGVzdCB0aGF0IGl0J3MgYSBj
YW5vbmljYWwgTmFOLgorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKE51bWJlci5pc05hTihh
Y3R1YWxbaV0pLCBgZXhwZWN0ZWQgTmFOLCBvYnNlcnZlZCAke2FjdHVhbFtpXX0uYCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlICJyZWYuZnVuYyI6CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X3RydWUodHlwZW9mIGFjdHVhbFtpXSA9PT0gImZ1bmN0aW9uIiwg
YGV4cGVjdGVkIFdhc20gZnVuY3Rpb24sIGdvdCAke2FjdHVhbFtpXX1gKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgInJlZi5leHRlcm4iOgorICAgICAgICAg
ICAgICAgIGFzc2VydF90cnVlKGFjdHVhbFtpXSAhPT0gbnVsbCwgYGV4cGVjdGVkIFdhc20gcmVm
ZXJlbmNlLCBnb3QgJHthY3R1YWxbaV19YCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYWN0dWFs
W2ldLCBleHBlY3RlZFtpXSwgbG9jKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sIHRlc3QpOworICAgICAgfSwKKyAgICAgIGVycm9yID0+IHsKKyAgICAgICAgdW5pcXVl
VGVzdChfID0+IHsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZSgKKyAgICAgICAgICAgIGZhbHNlLAor
ICAgICAgICAgICAgYHVuZXhwZWN0ZWQgcnVudGltZSBlcnJvciwgb2JzZXJ2ZWQgJHtlcnJvcn0g
JHtsb2N9YAorICAgICAgICAgICk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfQorICAgICkK
KyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdl
dCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2xldCBTdGFja092ZXJmbG93
OwordHJ5IHsKKyAgKGZ1bmN0aW9uIGYoKSB7CisgICAgMSArIGYoKTsKKyAgfSkoKTsKK30gY2F0
Y2ggKGUpIHsKKyAgU3RhY2tPdmVyZmxvdyA9IGUuY29uc3RydWN0b3I7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF9leGhhdXN0aW9uKGFjdGlvbikgeworICBjb25zdCB0ZXN0ID0gIlRlc3QgdGhhdCBh
IFdlYkFzc2VtYmx5IGNvZGUgZXhoYXV0cyB0aGUgc3RhY2sgc3BhY2UiOworICBjb25zdCBsb2Mg
PSBuZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9yIiwgIiIpOworICBj
aGFpbiA9IFByb21pc2UuYWxsKFthY3Rpb24oKSwgY2hhaW5dKQorICAgIC50aGVuKAorICAgICAg
XyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUo
ZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfSwKKyAgICAgIGVycm9yID0+
IHsKKyAgICAgICAgdW5pcXVlVGVzdChfID0+IHsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZSgKKyAg
ICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgU3RhY2tPdmVyZmxvdywKKyAgICAgICAgICAgIGBl
eHBlY3RlZCBydW50aW1lIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xvY31gCisgICAgICAg
ICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9CisgICAgKQorICAgIC8vIENsZWFyIGFs
bCBleGNlcHRpb25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVkLgorICAg
IC5jYXRjaChfID0+IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3VubGlua2FibGUoYnl0ZXMp
IHsKKyAgY29uc3QgdGVzdCA9ICJUZXN0IHRoYXQgYSBXZWJBc3NlbWJseSBtb2R1bGUgaXMgdW5s
aW5rYWJsZSI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVw
bGFjZSgiRXJyb3IiLCAiIik7CisgIGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lO
VkFMSUQpCisgICAgLnRoZW4oCisgICAgICByZXN1bHQgPT4geworICAgICAgICB1bmlxdWVUZXN0
KF8gPT4geworICAgICAgICAgIGFzc2VydF90cnVlKAorICAgICAgICAgICAgcmVzdWx0IGluc3Rh
bmNlb2YgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAorICAgICAgICAgICAgYGV4cGVjdGVkIGxpbmsg
ZXJyb3IsIG9ic2VydmVkICR7cmVzdWx0fSAke2xvY31gCisgICAgICAgICAgKTsKKyAgICAgICAg
fSwgdGVzdCk7CisgICAgICB9LAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9
PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3Qp
OworICAgICAgfQorICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBz
dWJzZXF1ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydF91bmluc3RhbnRpYWJsZShieXRlcykgeworICBjb25zdCB0ZXN0ID0g
IlRlc3QgdGhhdCBhIFdlYkFzc2VtYmx5IG1vZHVsZSBpcyB1bmluc3RhbnRpYWJsZSI7CisgIGNv
bnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAi
Iik7CisgIGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lOVkFMSUQpCisgICAgLnRo
ZW4oCisgICAgICByZXN1bHQgPT4geworICAgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAg
ICAgIGFzc2VydF90cnVlKAorICAgICAgICAgICAgcmVzdWx0IGluc3RhbmNlb2YgV2ViQXNzZW1i
bHkuUnVudGltZUVycm9yLAorICAgICAgICAgICAgYGV4cGVjdGVkIGxpbmsgZXJyb3IsIG9ic2Vy
dmVkICR7cmVzdWx0fSAke2xvY31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7Cisg
ICAgICB9LAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAg
ICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfQor
ICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRl
c3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2Z1bmN0aW9uIHJl
Z2lzdGVyKG5hbWUsIGluc3RhbmNlKSB7CisgIGNvbnN0IHRlc3QgPQorICAgICJUZXN0IHRoYXQg
dGhlIGV4cG9ydHMgb2YgYSBXZWJBc3NlbWJseSBtb2R1bGUgY2FuIGJlIHJlZ2lzdGVyZWQiOwor
ICBjb25zdCBsb2MgPSBuZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9y
IiwgIiIpOworICBsZXQgc3RhY2sgPSBuZXcgRXJyb3IoKTsKKyAgY2hhaW4gPSBQcm9taXNlLmFs
bChbaW5zdGFuY2UsIGNoYWluXSkKKyAgICAudGhlbigKKyAgICAgIHZhbHVlcyA9PiB7CisgICAg
ICAgIHJlZ2lzdHJ5W25hbWVdID0gdmFsdWVzWzBdLmV4cG9ydHM7CisgICAgICB9LAorICAgICAg
XyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUo
ZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfQorICAgICkKKyAgICAvLyBD
bGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdldCBleGVjdXRl
ZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2Z1bmN0aW9uIGdldChpbnN0YW5jZSwgbmFt
ZSkgeworICBjb25zdCB0ZXN0ID0gIlRlc3QgdGhhdCBhbiBleHBvcnQgb2YgYSBXZWJBc3NlbWJs
eSBpbnN0YW5jZSBjYW4gYmUgYWNxdWlyZWQiOworICBjb25zdCBsb2MgPSBuZXcgRXJyb3IoKS5z
dGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9yIiwgIiIpOworICBjaGFpbiA9IFByb21pc2Uu
YWxsKFtpbnN0YW5jZSwgY2hhaW5dKS50aGVuKAorICAgIHZhbHVlcyA9PiB7CisgICAgICBsZXQg
diA9IHZhbHVlc1swXS5leHBvcnRzW25hbWVdOworICAgICAgcmV0dXJuICh2IGluc3RhbmNlb2Yg
V2ViQXNzZW1ibHkuR2xvYmFsKSA/IHYudmFsdWUgOiB2OworICAgIH0sCisgICAgXyA9PiB7Cisg
ICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShmYWxzZSwgbG9jKTsK
KyAgICAgIH0sIHRlc3QpOworICAgIH0KKyAgKTsKKyAgcmV0dXJuIGNoYWluOworfQorCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3N5bmNfaW5kZXgu
anMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3N5bmNfaW5kZXguanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2VkOWYyOTE1OTdjN2U0Y2ZiMzYwOTFmNGQ4ODEwYmFlYTZjNGRlZAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvc3lu
Y19pbmRleC5qcwpAQCAtMCwwICsxLDM4NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFdlYkFz
c2VtYmx5IENvbW11bml0eSBHcm91cCBwYXJ0aWNpcGFudHMKKyAqCisgKiBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAq
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisKKyd1c2Ugc3RyaWN0JzsK
KworbGV0IHRlc3ROdW0gPSAoZnVuY3Rpb24oKSB7CisgICAgbGV0IGNvdW50ID0gMTsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBgIyR7Y291bnQrK30gYDsKKyAgICB9
Cit9KSgpOworCisvLyBXUFQncyBhc3NlcnRfdGhyb3cgdXNlcyBhIGxpc3Qgb2YgcHJlZGVmaW5l
ZCwgaGFyZGNvZGVkIGtub3duIGVycm9ycy4gU2luY2UKKy8vIGl0IGlzIG5vdCBhd2FyZSBvZiB0
aGUgV2ViQXNzZW1ibHkgZXJyb3IgdHlwZXMgKHlldCksIGltcGxlbWVudCBvdXIgb3duCisvLyB2
ZXJzaW9uLgorZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGZ1bmMsIGVycikgeworICAgIGxldCBjYXVn
aHQgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaChlKSB7
CisgICAgICAgIGFzc2VydF90cnVlKGUgaW5zdGFuY2VvZiBlcnIsIGBleHBlY3RlZCAke2Vyci5u
YW1lfSwgb2JzZXJ2ZWQgJHtlLmNvbnN0cnVjdG9yLm5hbWV9YCk7CisgICAgICAgIGNhdWdodCA9
IHRydWU7CisgICAgfQorICAgIGFzc2VydF90cnVlKGNhdWdodCwgdGVzdE51bSgpICsgImFzc2Vy
dFRocm93cyBtdXN0IGNhdGNoIGFueSBlcnJvci4iKQorfQorCisvKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBXQVNUIEhBUk5FU1MgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8v
IEZvciBhc3NlcnRpb25zIGludGVybmFsIHRvIG91ciB0ZXN0IGhhcm5lc3MuCitmdW5jdGlvbiBf
YXNzZXJ0KHgpIHsKKyAgICBpZiAoIXgpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3Nl
cnRpb24gZmFpbHVyZTogJHt4fWApOworICAgIH0KK30KKworLy8gQSBzaW1wbGUgc3VtIHR5cGUg
dGhhdCBjYW4gZWl0aGVyIGJlIGEgdmFsaWQgVmFsdWUgb3IgYW4gRXJyb3IuCitmdW5jdGlvbiBS
ZXN1bHQodHlwZSwgbWF5YmVWYWx1ZSkgeworICAgIHRoaXMudmFsdWUgPSBtYXliZVZhbHVlOwor
ICAgIHRoaXMudHlwZSA9IHR5cGU7Cit9OworCitSZXN1bHQuVkFMVUUgPSAnVkFMVUUnOworUmVz
dWx0LkVSUk9SID0gJ0VSUk9SJzsKKworZnVuY3Rpb24gVmFsdWVSZXN1bHQodmFsKSB7IHJldHVy
biBuZXcgUmVzdWx0KFJlc3VsdC5WQUxVRSwgdmFsKTsgfQorZnVuY3Rpb24gRXJyb3JSZXN1bHQo
ZXJyKSB7IHJldHVybiBuZXcgUmVzdWx0KFJlc3VsdC5FUlJPUiwgZXJyKTsgfQorCitSZXN1bHQu
cHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMudHlwZSA9PT0gUmVz
dWx0LkVSUk9SOyB9CisKK2NvbnN0IEVYUEVDVF9JTlZBTElEID0gZmFsc2U7CisKKy8qIERBVEEg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKi8KKworbGV0IGV4dGVybnJlZnMgPSB7fTsKK2xldCBleHRlcm5zeW0gPSBT
eW1ib2woImV4dGVybnJlZiIpOworZnVuY3Rpb24gZXh0ZXJucmVmKHMpIHsKKyAgaWYgKCEgKHMg
aW4gZXh0ZXJucmVmcykpIGV4dGVybnJlZnNbc10gPSB7W2V4dGVybnN5bV06IHN9OworICByZXR1
cm4gZXh0ZXJucmVmc1tzXTsKK30KK2Z1bmN0aW9uIGlzX2V4dGVybnJlZih4KSB7CisgIHJldHVy
biAoeCAhPT0gbnVsbCAmJiBleHRlcm5zeW0gaW4geCkgPyAxIDogMDsKK30KK2Z1bmN0aW9uIGlz
X2Z1bmNyZWYoeCkgeworICByZXR1cm4gdHlwZW9mIHggPT09ICJmdW5jdGlvbiIgPyAxIDogMDsK
K30KK2Z1bmN0aW9uIGVxX2V4dGVybnJlZih4LCB5KSB7CisgIHJldHVybiB4ID09PSB5ID8gMSA6
IDA7Cit9CitmdW5jdGlvbiBlcV9mdW5jcmVmKHgsIHkpIHsKKyAgcmV0dXJuIHggPT09IHkgPyAx
IDogMDsKK30KKworbGV0ICQkOworCisvLyBEZWZhdWx0IGltcG9ydHMuCit2YXIgcmVnaXN0cnkg
PSB7fTsKKworLy8gUmVzZXRzIHRoZSByZWdpc3RyeSBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgV1BU
IHRlc3RzLgorZnVuY3Rpb24gcmVpbml0aWFsaXplUmVnaXN0cnkoKSB7CisgICAgaWYgKHR5cGVv
ZiBXZWJBc3NlbWJseSA9PT0gJ3VuZGVmaW5lZCcpCisgICAgICAgIHJldHVybjsKKworICAgIGxl
dCBzcGVjdGVzdCA9IHsKKyAgICAgICAgZXh0ZXJucmVmOiBleHRlcm5yZWYsCisgICAgICAgIGlz
X2V4dGVybnJlZjogaXNfZXh0ZXJucmVmLAorICAgICAgICBpc19mdW5jcmVmOiBpc19mdW5jcmVm
LAorICAgICAgICBlcV9leHRlcm5yZWY6IGVxX2V4dGVybnJlZiwKKyAgICAgICAgZXFfZnVuY3Jl
ZjogZXFfZnVuY3JlZiwKKyAgICAgICAgcHJpbnQ6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSks
CisgICAgICAgIHByaW50X2kzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgICAg
cHJpbnRfaTMyX2YzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgICAgcHJpbnRf
ZjY0X2Y2NDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgICAgcHJpbnRfZjMyOiBj
b25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAorICAgICAgICBwcmludF9mNjQ6IGNvbnNvbGUubG9n
LmJpbmQoY29uc29sZSksCisgICAgICAgIGdsb2JhbF9pMzI6IDY2NiwKKyAgICAgICAgZ2xvYmFs
X2YzMjogNjY2LAorICAgICAgICBnbG9iYWxfZjY0OiA2NjYsCisgICAgICAgIHRhYmxlOiBuZXcg
V2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDEwLCBtYXhpbXVtOiAyMCwgZWxlbWVudDogJ2Fu
eWZ1bmMnfSksCisgICAgICAgIG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlh
bDogMSwgbWF4aW11bTogMn0pCisgICAgfTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAg
Z2V0KHRhcmdldCwgcHJvcCkgeworICAgICAgICByZXR1cm4gKHByb3AgaW4gdGFyZ2V0KSA/ICB0
YXJnZXRbcHJvcF0gOiB7fTsKKyAgICAgIH0KKyAgICB9OworICAgIHJlZ2lzdHJ5ID0gbmV3IFBy
b3h5KHtzcGVjdGVzdH0sIGhhbmRsZXIpOworfQorCityZWluaXRpYWxpemVSZWdpc3RyeSgpOwor
CisvKiBXQVNUIFBPTFlGSUxMICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKK2Z1bmN0aW9uIGJpbmFyeShieXRlcykgeworICAg
IGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKKyAgICBsZXQgdmll
dyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRl
cy5sZW5ndGg7ICsraSkgeworICAgICAgICB2aWV3W2ldID0gYnl0ZXMuY2hhckNvZGVBdChpKTsK
KyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLyoqCisgKiBSZXR1cm5zIGEgY29tcGls
ZWQgbW9kdWxlLCBvciB0aHJvd3MgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGF0IGNvbXBpbGF0aW9u
LgorICovCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICAgIGxldCBi
dWZmZXIgPSBiaW5hcnkoYnl0ZXMpOworICAgIGxldCB2YWxpZGF0ZWQ7CisKKyAgICB0cnkgewor
ICAgICAgICB2YWxpZGF0ZWQgPSBXZWJBc3NlbWJseS52YWxpZGF0ZShidWZmZXIpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXZWJBc3NlbWJseS52YWxpZGF0
ZSB0aHJvd3MgJHt0eXBlb2YgZX06ICR7ZX0ke2Uuc3RhY2t9YCk7CisgICAgfQorCisgICAgaWYg
KHZhbGlkYXRlZCAhPT0gdmFsaWQpIHsKKyAgICAgICAgLy8gVHJ5IHRvIGdldCBhIG1vcmUgcHJl
Y2lzZSBlcnJvciBtZXNzYWdlIGZyb20gdGhlIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvci4KKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsK
KyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBXZWJB
c3NlbWJseS5Db21waWxlRXJyb3IpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdlYkFzc2Vt
Ymx5LkNvbXBpbGVFcnJvcihgV2ViQXNzZW1ibHkudmFsaWRhdGUgZXJyb3I6ICR7ZS50b1N0cmlu
ZygpfSR7ZS5zdGFja31cbmApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgV2ViQXNzZW1ibHkudmFsaWRhdGUgdGhyb3dzICR7dHlwZW9mIGV9OiAk
e2V9JHtlLnN0YWNrfWApOworICAgICAgICB9CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgV2Vi
QXNzZW1ibHkudmFsaWRhdGUgd2FzIGV4cGVjdGVkIHRvIGZhaWwsIGJ1dCBkaWRuJ3RgKTsKKyAg
ICB9CisKKyAgICBsZXQgbW9kdWxlOworICAgIHRyeSB7CisgICAgICAgIG1vZHVsZSA9IG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYg
KHZhbGlkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXZWJBc3NlbWJseS5Nb2R1bGUg
Y3RvciB1bmV4cGVjdGVkbHkgdGhyb3dzICR7dHlwZW9mIGV9OiAke2V9JHtlLnN0YWNrfScpOwor
ICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIHJldHVybiBtb2R1bGU7Cit9CisKK2Z1bmN0
aW9uIHVuaXF1ZVRlc3QoZnVuYywgZGVzYykgeworICAgIHRlc3QoZnVuYywgdGVzdE51bSgpICsg
ZGVzYyk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9pbnZhbGlkKGJ5dGVzKSB7CisgICAgdW5pcXVl
VGVzdCgoKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtb2R1bGUoYnl0ZXMsIC8q
IHZhbGlkICovIGZhbHNlKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZGlkIG5vdCBm
YWlsJyk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBp
bnN0YW5jZW9mIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgImV4cGVjdGVkIGludmFsaWQgZmFp
bHVyZToiKTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQgc2hvdWxkIGJl
IGludmFsaWQgb3IgbWFsZm9ybWVkLiIpOworfQorCitjb25zdCBhc3NlcnRfbWFsZm9ybWVkID0g
YXNzZXJ0X2ludmFsaWQ7CisKK2Z1bmN0aW9uIGluc3RhbmNlKGJ5dGVzLCBpbXBvcnRzID0gcmVn
aXN0cnksIHZhbGlkID0gdHJ1ZSkgeworICAgIGlmIChpbXBvcnRzIGluc3RhbmNlb2YgUmVzdWx0
KSB7CisgICAgICAgIGlmIChpbXBvcnRzLmlzRXJyb3IoKSkKKyAgICAgICAgICAgIHJldHVybiBp
bXBvcnRzOworICAgICAgICBpbXBvcnRzID0gaW1wb3J0cy52YWx1ZTsKKyAgICB9CisKKyAgICBs
ZXQgZXJyID0gbnVsbDsKKworICAgIGxldCBtLCBpOworICAgIHRyeSB7CisgICAgICAgIGxldCBt
ID0gbW9kdWxlKGJ5dGVzKTsKKyAgICAgICAgaSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
LCBpbXBvcnRzKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXJyID0gZTsKKyAgICB9CisK
KyAgICBpZiAodmFsaWQpIHsKKyAgICAgICAgdW5pcXVlVGVzdCgoKSA9PiB7CisgICAgICAgICAg
ICBsZXQgaW5zdGFudGlhdGVkID0gZXJyID09PSBudWxsOworICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoaW5zdGFudGlhdGVkLCBlcnIpOworICAgICAgICB9LCAibW9kdWxlIHN1Y2Nlc3NmdWxseSBp
bnN0YW50aWF0ZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyICE9PSBudWxsID8gRXJyb3JS
ZXN1bHQoZXJyKSA6IFZhbHVlUmVzdWx0KGkpOworfQorCitmdW5jdGlvbiByZWdpc3RlcihuYW1l
LCBpbnN0YW5jZSkgeworICAgIF9hc3NlcnQoaW5zdGFuY2UgaW5zdGFuY2VvZiBSZXN1bHQpOwor
CisgICAgaWYgKGluc3RhbmNlLmlzRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVn
aXN0cnlbbmFtZV0gPSBpbnN0YW5jZS52YWx1ZS5leHBvcnRzOworfQorCitmdW5jdGlvbiBjYWxs
KGluc3RhbmNlLCBuYW1lLCBhcmdzKSB7CisgICAgX2Fzc2VydChpbnN0YW5jZSBpbnN0YW5jZW9m
IFJlc3VsdCk7CisKKyAgICBpZiAoaW5zdGFuY2UuaXNFcnJvcigpKQorICAgICAgICByZXR1cm4g
aW5zdGFuY2U7CisKKyAgICBsZXQgZXJyID0gbnVsbDsKKyAgICBsZXQgcmVzdWx0OworICAgIHRy
eSB7CisgICAgICAgIHJlc3VsdCA9IGluc3RhbmNlLnZhbHVlLmV4cG9ydHNbbmFtZV0oLi4uYXJn
cyk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGVyciA9IGU7CisgICAgfQorCisgICAgcmV0
dXJuIGVyciAhPT0gbnVsbCA/IEVycm9yUmVzdWx0KGVycikgOiBWYWx1ZVJlc3VsdChyZXN1bHQp
OworfTsKKworZnVuY3Rpb24gZ2V0KGluc3RhbmNlLCBuYW1lKSB7CisgICAgX2Fzc2VydChpbnN0
YW5jZSBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICBpZiAoaW5zdGFuY2UuaXNFcnJvcigpKQor
ICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisKKyAgICBsZXQgdiA9IGluc3RhbmNlLnZhbHVlLmV4
cG9ydHNbbmFtZV07CisgICAgcmV0dXJuIFZhbHVlUmVzdWx0KCh2IGluc3RhbmNlb2YgV2ViQXNz
ZW1ibHkuR2xvYmFsKSA/IHYudmFsdWUgOiB2KTsKK30KKworZnVuY3Rpb24gZXhwb3J0cyhpbnN0
YW5jZSkgeworICAgIF9hc3NlcnQoaW5zdGFuY2UgaW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAg
aWYgKGluc3RhbmNlLmlzRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworCisgICAg
cmV0dXJuIFZhbHVlUmVzdWx0KHsgbW9kdWxlOiBpbnN0YW5jZS52YWx1ZS5leHBvcnRzLCBzcGVj
dGVzdDogcmVnaXN0cnkuc3BlY3Rlc3QgfSk7Cit9CisKK2Z1bmN0aW9uIHJ1bihhY3Rpb24pIHsK
KyAgICBsZXQgcmVzdWx0ID0gYWN0aW9uKCk7CisKKyAgICBfYXNzZXJ0KHJlc3VsdCBpbnN0YW5j
ZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAgICAgICAgaWYgKHJlc3Vs
dC5pc0Vycm9yKCkpCisgICAgICAgICAgICB0aHJvdyByZXN1bHQudmFsdWU7CisgICAgfSwgIkEg
d2FzdCB0ZXN0IHRoYXQgcnVucyB3aXRob3V0IGFueSBzcGVjaWFsIGFzc2VydGlvbi4iKTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X3VubGlua2FibGUoYnl0ZXMpIHsKKyAgICBsZXQgcmVzdWx0ID0g
aW5zdGFuY2UoYnl0ZXMsIHJlZ2lzdHJ5LCBFWFBFQ1RfSU5WQUxJRCk7CisKKyAgICBfYXNzZXJ0
KHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAg
ICAgICAgYXNzZXJ0X3RydWUocmVzdWx0LmlzRXJyb3IoKSwgJ2V4cGVjdGVkIGVycm9yIHJlc3Vs
dCcpOworICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgeworICAgICAgICAgICAgbGV0IGUg
PSByZXN1bHQudmFsdWU7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShlIGluc3RhbmNlb2YgV2Vi
QXNzZW1ibHkuTGlua0Vycm9yLCBgZXhwZWN0ZWQgbGluayBlcnJvciwgb2JzZXJ2ZWQgJHtlfTpg
KTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQgaXMgdW5saW5rYWJsZS4i
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3VuaW5zdGFudGlhYmxlKGJ5dGVzKSB7CisgICAgbGV0
IHJlc3VsdCA9IGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lOVkFMSUQpOworCisg
ICAgX2Fzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAgdW5pcXVlVGVzdCgo
KSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKHJlc3VsdC5pc0Vycm9yKCksICdleHBlY3RlZCBl
cnJvciByZXN1bHQnKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKKyAgICAgICAg
ICAgIGxldCBlID0gcmVzdWx0LnZhbHVlOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBpbnN0
YW5jZW9mIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgYGV4cGVjdGVkIHJ1bnRpbWUgZXJyb3Is
IG9ic2VydmVkICR7ZX06YCk7CisgICAgICAgIH0KKyAgICB9LCAiQSB3YXN0IG1vZHVsZSB0aGF0
IGlzIHVuaW5zdGFudGlhYmxlLiIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfdHJhcChhY3Rpb24p
IHsKKyAgICBsZXQgcmVzdWx0ID0gYWN0aW9uKCk7CisKKyAgICBfYXNzZXJ0KHJlc3VsdCBpbnN0
YW5jZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0
X3RydWUocmVzdWx0LmlzRXJyb3IoKSwgJ2V4cGVjdGVkIGVycm9yIHJlc3VsdCcpOworICAgICAg
ICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgeworICAgICAgICAgICAgbGV0IGUgPSByZXN1bHQudmFs
dWU7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuUnVu
dGltZUVycm9yLCBgZXhwZWN0ZWQgcnVudGltZSBlcnJvciwgb2JzZXJ2ZWQgJHtlfTpgKTsKKyAg
ICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQgbXVzdCB0cmFwIGF0IHJ1bnRpbWUu
Iik7Cit9CisKK2xldCBTdGFja092ZXJmbG93OwordHJ5IHsgKGZ1bmN0aW9uIGYoKSB7IDEgKyBm
KCkgfSkoKSB9IGNhdGNoIChlKSB7IFN0YWNrT3ZlcmZsb3cgPSBlLmNvbnN0cnVjdG9yIH0KKwor
ZnVuY3Rpb24gYXNzZXJ0X2V4aGF1c3Rpb24oYWN0aW9uKSB7CisgICAgbGV0IHJlc3VsdCA9IGFj
dGlvbigpOworCisgICAgX2Fzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAg
dW5pcXVlVGVzdCgoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKHJlc3VsdC5pc0Vycm9yKCks
ICdleHBlY3RlZCBlcnJvciByZXN1bHQnKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkp
IHsKKyAgICAgICAgICAgIGxldCBlID0gcmVzdWx0LnZhbHVlOworICAgICAgICAgICAgYXNzZXJ0
X3RydWUoZSBpbnN0YW5jZW9mIFN0YWNrT3ZlcmZsb3csIGBleHBlY3RlZCBzdGFjayBvdmVyZmxv
dyBlcnJvciwgb2JzZXJ2ZWQgJHtlfTpgKTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9k
dWxlIHRoYXQgbXVzdCBleGhhdXN0IHRoZSBzdGFjayBzcGFjZS4iKTsKK30KKworZnVuY3Rpb24g
YXNzZXJ0X3JldHVybihhY3Rpb24sIC4uLmV4cGVjdGVkKSB7CisgICAgbGV0IHJlc3VsdCA9IGFj
dGlvbigpOworICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KTsKKworICAgIHVu
aXF1ZVRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSghcmVzdWx0LmlzRXJyb3IoKSwg
YGV4cGVjdGVkIHN1Y2Nlc3MgcmVzdWx0LCBnb3Q6ICR7cmVzdWx0LnZhbHVlfS5gKTsKKyAgICAg
ICAgbGV0IGFjdHVhbCA9IHJlc3VsdC52YWx1ZTsKKyAgICAgICAgaWYgKGFjdHVhbCA9PT0gdW5k
ZWZpbmVkKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBbXTsKKyAgICAgICAgfSBlbHNlIGlmICgh
QXJyYXkuaXNBcnJheShhY3R1YWwpKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBbYWN0dWFsXTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoYWN0dWFsLmxlbmd0aCAhPT0gZXhwZWN0ZWQubGVuZ3Ro
KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhwZWN0ZWQubGVuZ3RoICsgIiB2YWx1
ZShzKSBleHBlY3RlZCwgZ290ICIgKyBhY3R1YWwubGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdHVhbC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
aWYgKGV4cGVjdGVkW2ldIGluc3RhbmNlb2YgUmVzdWx0KSB7CisgICAgICAgICAgICAgICAgaWYg
KGV4cGVjdGVkW2ldLmlzRXJyb3IoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkW2ldID0gZXhwZWN0ZWRbaV0udmFsdWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdGVkW2ldKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSAibmFuOmNhbm9uaWNhbCI6CisgICAgICAgICAgICAgICAgY2FzZSAibmFuOmFyaXRobWV0
aWMiOgorICAgICAgICAgICAgICAgIGNhc2UgIm5hbjphbnkiOgorICAgICAgICAgICAgICAgICAg
ICAvLyBOb3RlIHRoYXQgSlMgY2FuJ3QgcmVsaWFibHkgZGlzdGluZ3Vpc2ggZGlmZmVyZW50IE5h
TiB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgIC8vIHNvIHRoZXJlJ3Mgbm8gZ29vZCB3YXkg
dG8gdGVzdCB0aGF0IGl0J3MgYSBjYW5vbmljYWwgTmFOLgorICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfdHJ1ZShOdW1iZXIuaXNOYU4oYWN0dWFsW2ldKSwgYGV4cGVjdGVkIE5hTiwgb2JzZXJ2
ZWQgJHthY3R1YWxbaV19LmApOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgY2FzZSAicmVmLmZ1bmMiOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1
ZSh0eXBlb2YgYWN0dWFsW2ldID09PSAiZnVuY3Rpb24iLCBgZXhwZWN0ZWQgV2FzbSBmdW5jdGlv
biwgZ290ICR7YWN0dWFsW2ldfWApOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgY2FzZSAicmVmLmV4dGVybiI6CisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGFjdHVhbFtpXSAhPT0gbnVsbCwgYGV4cGVjdGVkIFdhc20gcmVmZXJlbmNlLCBnb3Qg
JHthY3R1YWxbaV19YCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGFjdHVhbFtp
XSwgZXhwZWN0ZWRbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwgIkEgd2Fz
dCBtb2R1bGUgdGhhdCBtdXN0IHJldHVybiBhIHBhcnRpY3VsYXIgdmFsdWUuIik7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9yZXR1cm5fbmFuKGFjdGlvbikgeworICAgIGxldCByZXN1bHQgPSBhY3Rp
b24oKTsKKworICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KTsKKworICAgIHVu
aXF1ZVRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSghcmVzdWx0LmlzRXJyb3IoKSwg
J2V4cGVjdGVkIHN1Y2Nlc3MgcmVzdWx0Jyk7CisgICAgICAgIGlmICghcmVzdWx0LmlzRXJyb3Io
KSkgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUoTnVtYmVyLmlzTmFOKHJlc3VsdC52YWx1ZSks
IGBleHBlY3RlZCBOYU4sIG9ic2VydmVkICR7cmVzdWx0LnZhbHVlfS5gKTsKKyAgICAgICAgfTsK
KyAgICB9LCAiQSB3YXN0IG1vZHVsZSB0aGF0IG11c3QgcmV0dXJuIE5hTi4iKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFu
dHMuanMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dhc20tY29uc3Rh
bnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ0MzlhMjVkN2RlYTQ5ODZlMzYzMzQ2ZTJjZWNjMzVhYWNjMTU2
NzYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJu
ZXNzL3dhc20tY29uc3RhbnRzLmpzCkBAIC0wLDAgKzEsMzg0IEBACisvLyBDb3B5cmlnaHQgMjAx
NSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0tZXhw
b3NlLXdhc20KKworbGV0IGhvc3RyZWZzID0ge307CitsZXQgaG9zdHN5bSA9IFN5bWJvbCgiaG9z
dHJlZiIpOworZnVuY3Rpb24gaG9zdHJlZihzKSB7CisgIGlmICghIChzIGluIGhvc3RyZWZzKSkg
aG9zdHJlZnNbc10gPSB7W2hvc3RzeW1dOiBzfTsKKyAgcmV0dXJuIGhvc3RyZWZzW3NdOworfQor
CitmdW5jdGlvbiBieXRlcygpIHsKKyAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihhcmd1
bWVudHMubGVuZ3RoKTsKKyAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBm
b3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgIHZhciB2YWwg
PSBhcmd1bWVudHNbaV07CisgICAgaWYgKCh0eXBlb2YgdmFsKSA9PSAic3RyaW5nIikgdmFsID0g
dmFsLmNoYXJDb2RlQXQoMCk7CisgICAgdmlld1tpXSA9IHZhbCB8IDA7CisgIH0KKyAgcmV0dXJu
IGJ1ZmZlcjsKK30KKworLy8gSGVhZGVyIGRlY2xhcmF0aW9uIGNvbnN0YW50cwordmFyIGtXYXNt
SDAgPSAwOwordmFyIGtXYXNtSDEgPSAweDYxOwordmFyIGtXYXNtSDIgPSAweDczOwordmFyIGtX
YXNtSDMgPSAweDZkOworCit2YXIga1dhc21WMCA9IDB4MTsKK3ZhciBrV2FzbVYxID0gMDsKK3Zh
ciBrV2FzbVYyID0gMDsKK3ZhciBrV2FzbVYzID0gMDsKKwordmFyIGtIZWFkZXJTaXplID0gODsK
K3ZhciBrUGFnZVNpemUgPSA2NTUzNjsKKworZnVuY3Rpb24gYnl0ZXNXaXRoSGVhZGVyKCkgewor
ICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGtIZWFkZXJTaXplICsgYXJndW1lbnRzLmxl
bmd0aCk7CisgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgdmlld1swXSA9
IGtXYXNtSDA7CisgIHZpZXdbMV0gPSBrV2FzbUgxOworICB2aWV3WzJdID0ga1dhc21IMjsKKyAg
dmlld1szXSA9IGtXYXNtSDM7CisgIHZpZXdbNF0gPSBrV2FzbVYwOworICB2aWV3WzVdID0ga1dh
c21WMTsKKyAgdmlld1s2XSA9IGtXYXNtVjI7CisgIHZpZXdbN10gPSBrV2FzbVYzOworICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgIHZhciB2YWwgPSBh
cmd1bWVudHNbaV07CisgICAgaWYgKCh0eXBlb2YgdmFsKSA9PSAic3RyaW5nIikgdmFsID0gdmFs
LmNoYXJDb2RlQXQoMCk7CisgICAgdmlld1trSGVhZGVyU2l6ZSArIGldID0gdmFsIHwgMDsKKyAg
fQorICByZXR1cm4gYnVmZmVyOworfQorCitsZXQga0RlY2xOb0xvY2FscyA9IDA7CisKKy8vIFNl
Y3Rpb24gZGVjbGFyYXRpb24gY29uc3RhbnRzCitsZXQga1Vua25vd25TZWN0aW9uQ29kZSA9IDA7
CitsZXQga1R5cGVTZWN0aW9uQ29kZSA9IDE7ICAgICAgLy8gRnVuY3Rpb24gc2lnbmF0dXJlIGRl
Y2xhcmF0aW9ucworbGV0IGtJbXBvcnRTZWN0aW9uQ29kZSA9IDI7ICAgIC8vIEltcG9ydCBkZWNs
YXJhdGlvbnMKK2xldCBrRnVuY3Rpb25TZWN0aW9uQ29kZSA9IDM7ICAvLyBGdW5jdGlvbiBkZWNs
YXJhdGlvbnMKK2xldCBrVGFibGVTZWN0aW9uQ29kZSA9IDQ7ICAgICAvLyBJbmRpcmVjdCBmdW5j
dGlvbiB0YWJsZSBhbmQgb3RoZXIgdGFibGVzCitsZXQga01lbW9yeVNlY3Rpb25Db2RlID0gNTsg
ICAgLy8gTWVtb3J5IGF0dHJpYnV0ZXMKK2xldCBrR2xvYmFsU2VjdGlvbkNvZGUgPSA2OyAgICAv
LyBHbG9iYWwgZGVjbGFyYXRpb25zCitsZXQga0V4cG9ydFNlY3Rpb25Db2RlID0gNzsgICAgLy8g
RXhwb3J0cworbGV0IGtTdGFydFNlY3Rpb25Db2RlID0gODsgICAgIC8vIFN0YXJ0IGZ1bmN0aW9u
IGRlY2xhcmF0aW9uCitsZXQga0VsZW1lbnRTZWN0aW9uQ29kZSA9IDk7ICAvLyBFbGVtZW50cyBz
ZWN0aW9uCitsZXQga0NvZGVTZWN0aW9uQ29kZSA9IDEwOyAgICAgIC8vIEZ1bmN0aW9uIGNvZGUK
K2xldCBrRGF0YVNlY3Rpb25Db2RlID0gMTE7ICAgICAvLyBEYXRhIHNlZ21lbnRzCitsZXQga05h
bWVTZWN0aW9uQ29kZSA9IDEyOyAgICAgLy8gTmFtZSBzZWN0aW9uIChlbmNvZGVkIGFzIHN0cmlu
ZykKKworLy8gTmFtZSBzZWN0aW9uIHR5cGVzCitsZXQga01vZHVsZU5hbWVDb2RlID0gMDsKK2xl
dCBrRnVuY3Rpb25OYW1lc0NvZGUgPSAxOworbGV0IGtMb2NhbE5hbWVzQ29kZSA9IDI7CisKK2xl
dCBrV2FzbUZ1bmN0aW9uVHlwZUZvcm0gPSAweDYwOworbGV0IGtXYXNtRnVuY1JlZnRpb25UeXBl
Rm9ybSA9IDB4NzA7CisKK2xldCBrUmVzaXphYmxlTWF4aW11bUZsYWcgPSAxOworCisvLyBGdW5j
dGlvbiBkZWNsYXJhdGlvbiBmbGFncworbGV0IGtEZWNsRnVuY3Rpb25OYW1lICAgPSAweDAxOwor
bGV0IGtEZWNsRnVuY3Rpb25JbXBvcnQgPSAweDAyOworbGV0IGtEZWNsRnVuY3Rpb25Mb2NhbHMg
PSAweDA0OworbGV0IGtEZWNsRnVuY3Rpb25FeHBvcnQgPSAweDA4OworCisvLyBMb2NhbCB0eXBl
cworbGV0IGtXYXNtU3RtdCA9IDB4NDA7CitsZXQga1dhc21JMzIgPSAweDdmOworbGV0IGtXYXNt
STY0ID0gMHg3ZTsKK2xldCBrV2FzbUYzMiA9IDB4N2Q7CitsZXQga1dhc21GNjQgPSAweDdjOwor
bGV0IGtXYXNtUzEyOCA9IDB4N2I7CisKK2xldCBrRXh0ZXJuYWxGdW5jdGlvbiA9IDA7CitsZXQg
a0V4dGVybmFsVGFibGUgPSAxOworbGV0IGtFeHRlcm5hbE1lbW9yeSA9IDI7CitsZXQga0V4dGVy
bmFsR2xvYmFsID0gMzsKKworbGV0IGtUYWJsZVplcm8gPSAwOworbGV0IGtNZW1vcnlaZXJvID0g
MDsKKworLy8gVXNlZnVsIHNpZ25hdHVyZXMKK2xldCBrU2lnX2lfaSA9IG1ha2VTaWcoW2tXYXNt
STMyXSwgW2tXYXNtSTMyXSk7CitsZXQga1NpZ19sX2wgPSBtYWtlU2lnKFtrV2FzbUk2NF0sIFtr
V2FzbUk2NF0pOworbGV0IGtTaWdfaV9sID0gbWFrZVNpZyhba1dhc21JNjRdLCBba1dhc21JMzJd
KTsKK2xldCBrU2lnX2lfaWkgPSBtYWtlU2lnKFtrV2FzbUkzMiwga1dhc21JMzJdLCBba1dhc21J
MzJdKTsKK2xldCBrU2lnX2lfaWlpID0gbWFrZVNpZyhba1dhc21JMzIsIGtXYXNtSTMyLCBrV2Fz
bUkzMl0sIFtrV2FzbUkzMl0pOworbGV0IGtTaWdfZF9kZCA9IG1ha2VTaWcoW2tXYXNtRjY0LCBr
V2FzbUY2NF0sIFtrV2FzbUY2NF0pOworbGV0IGtTaWdfbF9sbCA9IG1ha2VTaWcoW2tXYXNtSTY0
LCBrV2FzbUk2NF0sIFtrV2FzbUk2NF0pOworbGV0IGtTaWdfaV9kZCA9IG1ha2VTaWcoW2tXYXNt
RjY0LCBrV2FzbUY2NF0sIFtrV2FzbUkzMl0pOworbGV0IGtTaWdfdl92ID0gbWFrZVNpZyhbXSwg
W10pOworbGV0IGtTaWdfaV92ID0gbWFrZVNpZyhbXSwgW2tXYXNtSTMyXSk7CitsZXQga1NpZ19s
X3YgPSBtYWtlU2lnKFtdLCBba1dhc21JNjRdKTsKK2xldCBrU2lnX2ZfdiA9IG1ha2VTaWcoW10s
IFtrV2FzbUY2NF0pOworbGV0IGtTaWdfZF92ID0gbWFrZVNpZyhbXSwgW2tXYXNtRjY0XSk7Cits
ZXQga1NpZ192X2kgPSBtYWtlU2lnKFtrV2FzbUkzMl0sIFtdKTsKK2xldCBrU2lnX3ZfaWkgPSBt
YWtlU2lnKFtrV2FzbUkzMiwga1dhc21JMzJdLCBbXSk7CitsZXQga1NpZ192X2lpaSA9IG1ha2VT
aWcoW2tXYXNtSTMyLCBrV2FzbUkzMiwga1dhc21JMzJdLCBbXSk7CitsZXQga1NpZ192X2wgPSBt
YWtlU2lnKFtrV2FzbUk2NF0sIFtdKTsKK2xldCBrU2lnX3ZfZCA9IG1ha2VTaWcoW2tXYXNtRjY0
XSwgW10pOworbGV0IGtTaWdfdl9kZCA9IG1ha2VTaWcoW2tXYXNtRjY0LCBrV2FzbUY2NF0sIFtd
KTsKK2xldCBrU2lnX3ZfZGRpID0gbWFrZVNpZyhba1dhc21GNjQsIGtXYXNtRjY0LCBrV2FzbUkz
Ml0sIFtdKTsKK2xldCBrU2lnX3NfdiA9IG1ha2VTaWcoW10sIFtrV2FzbVMxMjhdKTsKKworZnVu
Y3Rpb24gbWFrZVNpZyhwYXJhbXMsIHJlc3VsdHMpIHsKKyAgcmV0dXJuIHtwYXJhbXM6IHBhcmFt
cywgcmVzdWx0czogcmVzdWx0c307Cit9CisKK2Z1bmN0aW9uIG1ha2VTaWdfdl94KHgpIHsKKyAg
cmV0dXJuIG1ha2VTaWcoW3hdLCBbXSk7Cit9CisKK2Z1bmN0aW9uIG1ha2VTaWdfdl94eCh4KSB7
CisgIHJldHVybiBtYWtlU2lnKFt4LCB4XSwgW10pOworfQorCitmdW5jdGlvbiBtYWtlU2lnX3Jf
dihyKSB7CisgIHJldHVybiBtYWtlU2lnKFtdLCBbcl0pOworfQorCitmdW5jdGlvbiBtYWtlU2ln
X3JfeChyLCB4KSB7CisgIHJldHVybiBtYWtlU2lnKFt4XSwgW3JdKTsKK30KKworZnVuY3Rpb24g
bWFrZVNpZ19yX3h4KHIsIHgpIHsKKyAgcmV0dXJuIG1ha2VTaWcoW3gsIHhdLCBbcl0pOworfQor
CisvLyBPcGNvZGVzCitsZXQga0V4cHJVbnJlYWNoYWJsZSA9IDB4MDA7CitsZXQga0V4cHJOb3Ag
PSAweDAxOworbGV0IGtFeHByQmxvY2sgPSAweDAyOworbGV0IGtFeHByTG9vcCA9IDB4MDM7Cits
ZXQga0V4cHJJZiA9IDB4MDQ7CitsZXQga0V4cHJFbHNlID0gMHgwNTsKK2xldCBrRXhwclRyeSA9
IDB4MDY7CitsZXQga0V4cHJDYXRjaCA9IDB4MDc7CitsZXQga0V4cHJUaHJvdyA9IDB4MDg7Cits
ZXQga0V4cHJFbmQgPSAweDBiOworbGV0IGtFeHByQnIgPSAweDBjOworbGV0IGtFeHByQnJJZiA9
IDB4MGQ7CitsZXQga0V4cHJCclRhYmxlID0gMHgwZTsKK2xldCBrRXhwclJldHVybiA9IDB4MGY7
CitsZXQga0V4cHJDYWxsRnVuY3Rpb24gPSAweDEwOworbGV0IGtFeHByQ2FsbEluZGlyZWN0ID0g
MHgxMTsKK2xldCBrRXhwckRyb3AgPSAweDFhOworbGV0IGtFeHByU2VsZWN0ID0gMHgxYjsKK2xl
dCBrRXhwckdldExvY2FsID0gMHgyMDsKK2xldCBrRXhwclNldExvY2FsID0gMHgyMTsKK2xldCBr
RXhwclRlZUxvY2FsID0gMHgyMjsKK2xldCBrRXhwckdldEdsb2JhbCA9IDB4MjM7CitsZXQga0V4
cHJTZXRHbG9iYWwgPSAweDI0OworbGV0IGtFeHBySTMyQ29uc3QgPSAweDQxOworbGV0IGtFeHBy
STY0Q29uc3QgPSAweDQyOworbGV0IGtFeHByRjMyQ29uc3QgPSAweDQzOworbGV0IGtFeHByRjY0
Q29uc3QgPSAweDQ0OworbGV0IGtFeHBySTMyTG9hZE1lbSA9IDB4Mjg7CitsZXQga0V4cHJJNjRM
b2FkTWVtID0gMHgyOTsKK2xldCBrRXhwckYzMkxvYWRNZW0gPSAweDJhOworbGV0IGtFeHByRjY0
TG9hZE1lbSA9IDB4MmI7CitsZXQga0V4cHJJMzJMb2FkTWVtOFMgPSAweDJjOworbGV0IGtFeHBy
STMyTG9hZE1lbThVID0gMHgyZDsKK2xldCBrRXhwckkzMkxvYWRNZW0xNlMgPSAweDJlOworbGV0
IGtFeHBySTMyTG9hZE1lbTE2VSA9IDB4MmY7CitsZXQga0V4cHJJNjRMb2FkTWVtOFMgPSAweDMw
OworbGV0IGtFeHBySTY0TG9hZE1lbThVID0gMHgzMTsKK2xldCBrRXhwckk2NExvYWRNZW0xNlMg
PSAweDMyOworbGV0IGtFeHBySTY0TG9hZE1lbTE2VSA9IDB4MzM7CitsZXQga0V4cHJJNjRMb2Fk
TWVtMzJTID0gMHgzNDsKK2xldCBrRXhwckk2NExvYWRNZW0zMlUgPSAweDM1OworbGV0IGtFeHBy
STMyU3RvcmVNZW0gPSAweDM2OworbGV0IGtFeHBySTY0U3RvcmVNZW0gPSAweDM3OworbGV0IGtF
eHByRjMyU3RvcmVNZW0gPSAweDM4OworbGV0IGtFeHByRjY0U3RvcmVNZW0gPSAweDM5OworbGV0
IGtFeHBySTMyU3RvcmVNZW04ID0gMHgzYTsKK2xldCBrRXhwckkzMlN0b3JlTWVtMTYgPSAweDNi
OworbGV0IGtFeHBySTY0U3RvcmVNZW04ID0gMHgzYzsKK2xldCBrRXhwckk2NFN0b3JlTWVtMTYg
PSAweDNkOworbGV0IGtFeHBySTY0U3RvcmVNZW0zMiA9IDB4M2U7CitsZXQga0V4cHJNZW1vcnlT
aXplID0gMHgzZjsKK2xldCBrRXhwckdyb3dNZW1vcnkgPSAweDQwOworbGV0IGtFeHBySTMyRXF6
ID0gMHg0NTsKK2xldCBrRXhwckkzMkVxID0gMHg0NjsKK2xldCBrRXhwckkzMk5lID0gMHg0NzsK
K2xldCBrRXhwckkzMkx0UyA9IDB4NDg7CitsZXQga0V4cHJJMzJMdFUgPSAweDQ5OworbGV0IGtF
eHBySTMyR3RTID0gMHg0YTsKK2xldCBrRXhwckkzMkd0VSA9IDB4NGI7CitsZXQga0V4cHJJMzJM
ZVMgPSAweDRjOworbGV0IGtFeHBySTMyTGVVID0gMHg0ZDsKK2xldCBrRXhwckkzMkdlUyA9IDB4
NGU7CitsZXQga0V4cHJJMzJHZVUgPSAweDRmOworbGV0IGtFeHBySTY0RXF6ID0gMHg1MDsKK2xl
dCBrRXhwckk2NEVxID0gMHg1MTsKK2xldCBrRXhwckk2NE5lID0gMHg1MjsKK2xldCBrRXhwckk2
NEx0UyA9IDB4NTM7CitsZXQga0V4cHJJNjRMdFUgPSAweDU0OworbGV0IGtFeHBySTY0R3RTID0g
MHg1NTsKK2xldCBrRXhwckk2NEd0VSA9IDB4NTY7CitsZXQga0V4cHJJNjRMZVMgPSAweDU3Owor
bGV0IGtFeHBySTY0TGVVID0gMHg1ODsKK2xldCBrRXhwckk2NEdlUyA9IDB4NTk7CitsZXQga0V4
cHJJNjRHZVUgPSAweDVhOworbGV0IGtFeHByRjMyRXEgPSAweDViOworbGV0IGtFeHByRjMyTmUg
PSAweDVjOworbGV0IGtFeHByRjMyTHQgPSAweDVkOworbGV0IGtFeHByRjMyR3QgPSAweDVlOwor
bGV0IGtFeHByRjMyTGUgPSAweDVmOworbGV0IGtFeHByRjMyR2UgPSAweDYwOworbGV0IGtFeHBy
RjY0RXEgPSAweDYxOworbGV0IGtFeHByRjY0TmUgPSAweDYyOworbGV0IGtFeHByRjY0THQgPSAw
eDYzOworbGV0IGtFeHByRjY0R3QgPSAweDY0OworbGV0IGtFeHByRjY0TGUgPSAweDY1OworbGV0
IGtFeHByRjY0R2UgPSAweDY2OworbGV0IGtFeHBySTMyQ2x6ID0gMHg2NzsKK2xldCBrRXhwckkz
MkN0eiA9IDB4Njg7CitsZXQga0V4cHJJMzJQb3BjbnQgPSAweDY5OworbGV0IGtFeHBySTMyQWRk
ID0gMHg2YTsKK2xldCBrRXhwckkzMlN1YiA9IDB4NmI7CitsZXQga0V4cHJJMzJNdWwgPSAweDZj
OworbGV0IGtFeHBySTMyRGl2UyA9IDB4NmQ7CitsZXQga0V4cHJJMzJEaXZVID0gMHg2ZTsKK2xl
dCBrRXhwckkzMlJlbVMgPSAweDZmOworbGV0IGtFeHBySTMyUmVtVSA9IDB4NzA7CitsZXQga0V4
cHJJMzJBbmQgPSAweDcxOworbGV0IGtFeHBySTMySW9yID0gMHg3MjsKK2xldCBrRXhwckkzMlhv
ciA9IDB4NzM7CitsZXQga0V4cHJJMzJTaGwgPSAweDc0OworbGV0IGtFeHBySTMyU2hyUyA9IDB4
NzU7CitsZXQga0V4cHJJMzJTaHJVID0gMHg3NjsKK2xldCBrRXhwckkzMlJvbCA9IDB4Nzc7Cits
ZXQga0V4cHJJMzJSb3IgPSAweDc4OworbGV0IGtFeHBySTY0Q2x6ID0gMHg3OTsKK2xldCBrRXhw
ckk2NEN0eiA9IDB4N2E7CitsZXQga0V4cHJJNjRQb3BjbnQgPSAweDdiOworbGV0IGtFeHBySTY0
QWRkID0gMHg3YzsKK2xldCBrRXhwckk2NFN1YiA9IDB4N2Q7CitsZXQga0V4cHJJNjRNdWwgPSAw
eDdlOworbGV0IGtFeHBySTY0RGl2UyA9IDB4N2Y7CitsZXQga0V4cHJJNjREaXZVID0gMHg4MDsK
K2xldCBrRXhwckk2NFJlbVMgPSAweDgxOworbGV0IGtFeHBySTY0UmVtVSA9IDB4ODI7CitsZXQg
a0V4cHJJNjRBbmQgPSAweDgzOworbGV0IGtFeHBySTY0SW9yID0gMHg4NDsKK2xldCBrRXhwckk2
NFhvciA9IDB4ODU7CitsZXQga0V4cHJJNjRTaGwgPSAweDg2OworbGV0IGtFeHBySTY0U2hyUyA9
IDB4ODc7CitsZXQga0V4cHJJNjRTaHJVID0gMHg4ODsKK2xldCBrRXhwckk2NFJvbCA9IDB4ODk7
CitsZXQga0V4cHJJNjRSb3IgPSAweDhhOworbGV0IGtFeHByRjMyQWJzID0gMHg4YjsKK2xldCBr
RXhwckYzMk5lZyA9IDB4OGM7CitsZXQga0V4cHJGMzJDZWlsID0gMHg4ZDsKK2xldCBrRXhwckYz
MkZsb29yID0gMHg4ZTsKK2xldCBrRXhwckYzMlRydW5jID0gMHg4ZjsKK2xldCBrRXhwckYzMk5l
YXJlc3RJbnQgPSAweDkwOworbGV0IGtFeHByRjMyU3FydCA9IDB4OTE7CitsZXQga0V4cHJGMzJB
ZGQgPSAweDkyOworbGV0IGtFeHByRjMyU3ViID0gMHg5MzsKK2xldCBrRXhwckYzMk11bCA9IDB4
OTQ7CitsZXQga0V4cHJGMzJEaXYgPSAweDk1OworbGV0IGtFeHByRjMyTWluID0gMHg5NjsKK2xl
dCBrRXhwckYzMk1heCA9IDB4OTc7CitsZXQga0V4cHJGMzJDb3B5U2lnbiA9IDB4OTg7CitsZXQg
a0V4cHJGNjRBYnMgPSAweDk5OworbGV0IGtFeHByRjY0TmVnID0gMHg5YTsKK2xldCBrRXhwckY2
NENlaWwgPSAweDliOworbGV0IGtFeHByRjY0Rmxvb3IgPSAweDljOworbGV0IGtFeHByRjY0VHJ1
bmMgPSAweDlkOworbGV0IGtFeHByRjY0TmVhcmVzdEludCA9IDB4OWU7CitsZXQga0V4cHJGNjRT
cXJ0ID0gMHg5ZjsKK2xldCBrRXhwckY2NEFkZCA9IDB4YTA7CitsZXQga0V4cHJGNjRTdWIgPSAw
eGExOworbGV0IGtFeHByRjY0TXVsID0gMHhhMjsKK2xldCBrRXhwckY2NERpdiA9IDB4YTM7Cits
ZXQga0V4cHJGNjRNaW4gPSAweGE0OworbGV0IGtFeHByRjY0TWF4ID0gMHhhNTsKK2xldCBrRXhw
ckY2NENvcHlTaWduID0gMHhhNjsKK2xldCBrRXhwckkzMkNvbnZlcnRJNjQgPSAweGE3OworbGV0
IGtFeHBySTMyU0NvbnZlcnRGMzIgPSAweGE4OworbGV0IGtFeHBySTMyVUNvbnZlcnRGMzIgPSAw
eGE5OworbGV0IGtFeHBySTMyU0NvbnZlcnRGNjQgPSAweGFhOworbGV0IGtFeHBySTMyVUNvbnZl
cnRGNjQgPSAweGFiOworbGV0IGtFeHBySTY0U0NvbnZlcnRJMzIgPSAweGFjOworbGV0IGtFeHBy
STY0VUNvbnZlcnRJMzIgPSAweGFkOworbGV0IGtFeHBySTY0U0NvbnZlcnRGMzIgPSAweGFlOwor
bGV0IGtFeHBySTY0VUNvbnZlcnRGMzIgPSAweGFmOworbGV0IGtFeHBySTY0U0NvbnZlcnRGNjQg
PSAweGIwOworbGV0IGtFeHBySTY0VUNvbnZlcnRGNjQgPSAweGIxOworbGV0IGtFeHByRjMyU0Nv
bnZlcnRJMzIgPSAweGIyOworbGV0IGtFeHByRjMyVUNvbnZlcnRJMzIgPSAweGIzOworbGV0IGtF
eHByRjMyU0NvbnZlcnRJNjQgPSAweGI0OworbGV0IGtFeHByRjMyVUNvbnZlcnRJNjQgPSAweGI1
OworbGV0IGtFeHByRjMyQ29udmVydEY2NCA9IDB4YjY7CitsZXQga0V4cHJGNjRTQ29udmVydEkz
MiA9IDB4Yjc7CitsZXQga0V4cHJGNjRVQ29udmVydEkzMiA9IDB4Yjg7CitsZXQga0V4cHJGNjRT
Q29udmVydEk2NCA9IDB4Yjk7CitsZXQga0V4cHJGNjRVQ29udmVydEk2NCA9IDB4YmE7CitsZXQg
a0V4cHJGNjRDb252ZXJ0RjMyID0gMHhiYjsKK2xldCBrRXhwckkzMlJlaW50ZXJwcmV0RjMyID0g
MHhiYzsKK2xldCBrRXhwckk2NFJlaW50ZXJwcmV0RjY0ID0gMHhiZDsKK2xldCBrRXhwckYzMlJl
aW50ZXJwcmV0STMyID0gMHhiZTsKK2xldCBrRXhwckY2NFJlaW50ZXJwcmV0STY0ID0gMHhiZjsK
KworbGV0IGtUcmFwVW5yZWFjaGFibGUgICAgICAgICAgPSAwOworbGV0IGtUcmFwTWVtT3V0T2ZC
b3VuZHMgICAgICAgPSAxOworbGV0IGtUcmFwRGl2QnlaZXJvICAgICAgICAgICAgPSAyOworbGV0
IGtUcmFwRGl2VW5yZXByZXNlbnRhYmxlICAgPSAzOworbGV0IGtUcmFwUmVtQnlaZXJvICAgICAg
ICAgICAgPSA0OworbGV0IGtUcmFwRmxvYXRVbnJlcHJlc2VudGFibGUgPSA1OworbGV0IGtUcmFw
RnVuY0ludmFsaWQgICAgICAgICAgPSA2OworbGV0IGtUcmFwRnVuY1NpZ01pc21hdGNoICAgICAg
PSA3OworbGV0IGtUcmFwSW52YWxpZEluZGV4ICAgICAgICAgPSA4OworCitsZXQga1RyYXBNc2dz
ID0gWworICAidW5yZWFjaGFibGUiLAorICAibWVtb3J5IGFjY2VzcyBvdXQgb2YgYm91bmRzIiwK
KyAgImRpdmlkZSBieSB6ZXJvIiwKKyAgImRpdmlkZSByZXN1bHQgdW5yZXByZXNlbnRhYmxlIiwK
KyAgInJlbWFpbmRlciBieSB6ZXJvIiwKKyAgImludGVnZXIgcmVzdWx0IHVucmVwcmVzZW50YWJs
ZSIsCisgICJpbnZhbGlkIGZ1bmN0aW9uIiwKKyAgImZ1bmN0aW9uIHNpZ25hdHVyZSBtaXNtYXRj
aCIsCisgICJpbnZhbGlkIGluZGV4IGludG8gZnVuY3Rpb24gdGFibGUiCitdOworCitmdW5jdGlv
biBhc3NlcnRUcmFwcyh0cmFwLCBjb2RlKSB7CisgIHRyeSB7CisgICAgaWYgKHR5cGVvZiBjb2Rl
ID09PSAnZnVuY3Rpb24nKSB7CisgICAgICBjb2RlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGV2
YWwoY29kZSk7CisgICAgfQorICB9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0RXF1YWxzKCdvYmpl
Y3QnLCB0eXBlb2YgZSk7CisgICAgYXNzZXJ0RXF1YWxzKGtUcmFwTXNnc1t0cmFwXSwgZS5tZXNz
YWdlKTsKKyAgICAvLyBTdWNjZXNzLgorICAgIHJldHVybjsKKyAgfQorICB0aHJvdyBuZXcgTWpz
VW5pdEFzc2VydGlvbkVycm9yKCdEaWQgbm90IHRyYXAsIGV4cGVjdGVkOiAnICsga1RyYXBNc2dz
W3RyYXBdKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0V2FzbVRocm93cyh2YWx1ZSwgY29kZSkgewor
ICBhc3NlcnRFcXVhbHMoJ251bWJlcicsIHR5cGVvZiB2YWx1ZSk7CisgIHRyeSB7CisgICAgaWYg
KHR5cGVvZiBjb2RlID09PSAnZnVuY3Rpb24nKSB7CisgICAgICBjb2RlKCk7CisgICAgfSBlbHNl
IHsKKyAgICAgIGV2YWwoY29kZSk7CisgICAgfQorICB9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0
RXF1YWxzKCdudW1iZXInLCB0eXBlb2YgZSk7CisgICAgYXNzZXJ0RXF1YWxzKHZhbHVlLCBlKTsK
KyAgICAvLyBTdWNjZXNzLgorICAgIHJldHVybjsKKyAgfQorICB0aHJvdyBuZXcgTWpzVW5pdEFz
c2VydGlvbkVycm9yKCdEaWQgbm90IHRocm93LCBleHBlY3RlZDogJyArIHZhbHVlKTsKK30KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1tb2R1
bGUtYnVpbGRlci5qcyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2Fz
bS1tb2R1bGUtYnVpbGRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTgxYWY4OGZiOTc3YWVlOTA5NWQxNTI0
OGU4MzRmNTczNzE3Mjc0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3JldHVybi1j
YWxsLXNwZWMtaGFybmVzcy93YXNtLW1vZHVsZS1idWlsZGVyLmpzCkBAIC0wLDAgKzEsNTgzIEBA
CisvLyBDb3B5cmlnaHQgMjAxNiB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworLy8gVXNlZCBmb3IgZW5jb2RpbmcgZjMyIGFuZCBkb3VibGUgY29uc3RhbnRzIHRvIGJpdHMu
CitsZXQgX19idWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoOCk7CitsZXQgYnl0ZV92aWV3ID0gbmV3
IEludDhBcnJheShfX2J1ZmZlcik7CitsZXQgZjMyX3ZpZXcgPSBuZXcgRmxvYXQzMkFycmF5KF9f
YnVmZmVyKTsKK2xldCBmNjRfdmlldyA9IG5ldyBGbG9hdDY0QXJyYXkoX19idWZmZXIpOworCitj
bGFzcyBCaW5hcnkgZXh0ZW5kcyBBcnJheSB7CisgIGVtaXRfdTgodmFsKSB7CisgICAgdGhpcy5w
dXNoKHZhbCk7CisgIH0KKworICBlbWl0X3UxNih2YWwpIHsKKyAgICB0aGlzLnB1c2godmFsICYg
MHhmZik7CisgICAgdGhpcy5wdXNoKCh2YWwgPj4gOCkgJiAweGZmKTsKKyAgfQorCisgIGVtaXRf
dTMyKHZhbCkgeworICAgIHRoaXMucHVzaCh2YWwgJiAweGZmKTsKKyAgICB0aGlzLnB1c2goKHZh
bCA+PiA4KSAmIDB4ZmYpOworICAgIHRoaXMucHVzaCgodmFsID4+IDE2KSAmIDB4ZmYpOworICAg
IHRoaXMucHVzaCgodmFsID4+IDI0KSAmIDB4ZmYpOworICB9CisKKyAgZW1pdF91MzJ2KHZhbCkg
eworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBsZXQgdiA9IHZhbCAmIDB4ZmY7CisgICAgICB2
YWwgPSB2YWwgPj4+IDc7CisgICAgICBpZiAodmFsID09IDApIHsKKyAgICAgICAgdGhpcy5wdXNo
KHYpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHRoaXMucHVzaCh2IHwgMHg4MCk7
CisgICAgfQorICB9CisKKyAgZW1pdF9ieXRlcyhkYXRhKSB7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7CisgICAgICB0aGlzLnB1c2goZGF0YVtpXSAmIDB4ZmYp
OworICAgIH0KKyAgfQorCisgIGVtaXRfc3RyaW5nKHN0cmluZykgeworICAgIC8vIFdoZW4gdGVz
dGluZyBpbGxlZ2FsIG5hbWVzLCB3ZSBwYXNzIGEgYnl0ZSBhcnJheSBkaXJlY3RseS4KKyAgICBp
ZiAoc3RyaW5nIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgIHRoaXMuZW1pdF91MzJ2KHN0cmlu
Zy5sZW5ndGgpOworICAgICAgdGhpcy5lbWl0X2J5dGVzKHN0cmluZyk7CisgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gVGhpcyBpcyB0aGUgaGFja3kgd2F5IHRvIGNvbnZlcnQgYSBKYXZh
U2NyaXB0IHN0cmluZyB0byBhIFVURjggZW5jb2RlZAorICAgIC8vIHN0cmluZyBvbmx5IGNvbnRh
aW5pbmcgc2luZ2xlLWJ5dGUgY2hhcmFjdGVycy4KKyAgICBsZXQgc3RyaW5nX3V0ZjggPSB1bmVz
Y2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKSk7CisgICAgdGhpcy5lbWl0X3UzMnYoc3Ry
aW5nX3V0ZjgubGVuZ3RoKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ191dGY4Lmxl
bmd0aDsgaSsrKSB7CisgICAgICB0aGlzLmVtaXRfdTgoc3RyaW5nX3V0ZjguY2hhckNvZGVBdChp
KSk7CisgICAgfQorICB9CisKKyAgZW1pdF9oZWFkZXIoKSB7CisgICAgdGhpcy5wdXNoKGtXYXNt
SDAsIGtXYXNtSDEsIGtXYXNtSDIsIGtXYXNtSDMsCisgICAgICAgICAgICAgIGtXYXNtVjAsIGtX
YXNtVjEsIGtXYXNtVjIsIGtXYXNtVjMpOworICB9CisKKyAgZW1pdF9zZWN0aW9uKHNlY3Rpb25f
Y29kZSwgY29udGVudF9nZW5lcmF0b3IpIHsKKyAgICAvLyBFbWl0IHNlY3Rpb24gbmFtZS4KKyAg
ICB0aGlzLmVtaXRfdTgoc2VjdGlvbl9jb2RlKTsKKyAgICAvLyBFbWl0IHRoZSBzZWN0aW9uIHRv
IGEgdGVtcG9yYXJ5IGJ1ZmZlcjogaXRzIGZ1bGwgbGVuZ3RoIGlzbid0IGtub3cgeWV0LgorICAg
IGxldCBzZWN0aW9uID0gbmV3IEJpbmFyeTsKKyAgICBjb250ZW50X2dlbmVyYXRvcihzZWN0aW9u
KTsKKyAgICAvLyBFbWl0IHNlY3Rpb24gbGVuZ3RoLgorICAgIHRoaXMuZW1pdF91MzJ2KHNlY3Rp
b24ubGVuZ3RoKTsKKyAgICAvLyBDb3B5IHRoZSB0ZW1wb3JhcnkgYnVmZmVyLgorICAgIGZvciAo
Y29uc3Qgc2VjdGlvbkJ5dGUgb2Ygc2VjdGlvbikgeworICAgICAgdGhpcy5wdXNoKHNlY3Rpb25C
eXRlKTsKKyAgICB9CisgIH0KK30KKworY2xhc3MgV2FzbUZ1bmN0aW9uQnVpbGRlciB7CisgIGNv
bnN0cnVjdG9yKG1vZHVsZSwgbmFtZSwgdHlwZV9pbmRleCkgeworICAgIHRoaXMubW9kdWxlID0g
bW9kdWxlOworICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy50eXBlX2luZGV4ID0gdHlw
ZV9pbmRleDsKKyAgICB0aGlzLmJvZHkgPSBbXTsKKyAgfQorCisgIGV4cG9ydEFzKG5hbWUpIHsK
KyAgICB0aGlzLm1vZHVsZS5hZGRFeHBvcnQobmFtZSwgdGhpcy5pbmRleCk7CisgICAgcmV0dXJu
IHRoaXM7CisgIH0KKworICBleHBvcnRGdW5jKCkgeworICAgIHRoaXMuZXhwb3J0QXModGhpcy5u
YW1lKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZEJvZHkoYm9keSkgeworICAgIGZv
ciAobGV0IGIgb2YgYm9keSkgeworICAgICAgaWYgKHR5cGVvZiBiICE9ICdudW1iZXInKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgYm9keSAoZW50cmllcyBoYXZlIHRvIGJlIG51
bWJlcnMpOiAnICsgYm9keSk7CisgICAgfQorICAgIHRoaXMuYm9keSA9IGJvZHkuc2xpY2UoKTsK
KyAgICAvLyBBdXRvbWF0aWNhbGx5IGFkZCB0aGUgZW5kIGZvciB0aGUgZnVuY3Rpb24gYmxvY2sg
dG8gdGhlIGJvZHkuCisgICAgdGhpcy5ib2R5LnB1c2goa0V4cHJFbmQpOworICAgIHJldHVybiB0
aGlzOworICB9CisKKyAgYWRkTG9jYWxzKGxvY2FscykgeworICAgIHRoaXMubG9jYWxzID0gbG9j
YWxzOworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgZW5kKCkgeworICAgIHRoaXMuYm9keS5w
dXNoKGtFeHByRW5kKTsKKyAgICByZXR1cm4gdGhpcy5tb2R1bGU7CisgIH0KK30KKworY2xhc3Mg
V2FzbUdsb2JhbEJ1aWxkZXIgeworICBjb25zdHJ1Y3Rvcihtb2R1bGUsIHR5cGUsIG11dGFibGUp
IHsKKyAgICB0aGlzLm1vZHVsZSA9IG1vZHVsZTsKKyAgICB0aGlzLnR5cGUgPSB0eXBlOworICAg
IHRoaXMubXV0YWJsZSA9IG11dGFibGU7CisgICAgdGhpcy5pbml0ID0gMDsKKyAgfQorCisgIGV4
cG9ydEFzKG5hbWUpIHsKKyAgICB0aGlzLm1vZHVsZS5leHBvcnRzLnB1c2goe25hbWU6IG5hbWUs
IGtpbmQ6IGtFeHRlcm5hbEdsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4OiB0aGlzLmluZGV4fSk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KK30KKworY2xhc3MgV2Fz
bU1vZHVsZUJ1aWxkZXIgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnR5cGVzID0gW107
CisgICAgdGhpcy5pbXBvcnRzID0gW107CisgICAgdGhpcy5leHBvcnRzID0gW107CisgICAgdGhp
cy5nbG9iYWxzID0gW107CisgICAgdGhpcy5mdW5jdGlvbnMgPSBbXTsKKyAgICB0aGlzLmZ1bmN0
aW9uX3RhYmxlID0gW107CisgICAgdGhpcy5mdW5jdGlvbl90YWJsZV9sZW5ndGggPSAwOworICAg
IHRoaXMuZnVuY3Rpb25fdGFibGVfaW5pdHMgPSBbXTsKKyAgICB0aGlzLnNlZ21lbnRzID0gW107
CisgICAgdGhpcy5leHBsaWNpdCA9IFtdOworICAgIHRoaXMubnVtX2ltcG9ydGVkX2Z1bmNzID0g
MDsKKyAgICB0aGlzLm51bV9pbXBvcnRlZF9nbG9iYWxzID0gMDsKKyAgICByZXR1cm4gdGhpczsK
KyAgfQorCisgIGFkZFN0YXJ0KHN0YXJ0X2luZGV4KSB7CisgICAgdGhpcy5zdGFydF9pbmRleCA9
IHN0YXJ0X2luZGV4OworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYWRkTWVtb3J5KG1pbiwg
bWF4LCBleHApIHsKKyAgICB0aGlzLm1lbW9yeSA9IHttaW46IG1pbiwgbWF4OiBtYXgsIGV4cDog
ZXhwfTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZEV4cGxpY2l0U2VjdGlvbihieXRl
cykgeworICAgIHRoaXMuZXhwbGljaXQucHVzaChieXRlcyk7CisgICAgcmV0dXJuIHRoaXM7Cisg
IH0KKworICBzdHJpbmdUb0J5dGVzKG5hbWUpIHsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IEJpbmFy
eSgpOworICAgIHJlc3VsdC5lbWl0X3UzMnYobmFtZS5sZW5ndGgpOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykgeworICAgICAgcmVzdWx0LmVtaXRfdTgobmFtZS5j
aGFyQ29kZUF0KGkpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIGFkZEN1
c3RvbVNlY3Rpb24obmFtZSwgYnl0ZXMpIHsKKyAgICBuYW1lID0gdGhpcy5zdHJpbmdUb0J5dGVz
KG5hbWUpOworICAgIHZhciBsZW5ndGggPSBuZXcgQmluYXJ5KCk7CisgICAgbGVuZ3RoLmVtaXRf
dTMydihuYW1lLmxlbmd0aCArIGJ5dGVzLmxlbmd0aCk7CisgICAgdGhpcy5leHBsaWNpdC5wdXNo
KFswLCAuLi5sZW5ndGgsIC4uLm5hbWUsIC4uLmJ5dGVzXSk7CisgIH0KKworICBhZGRUeXBlKHR5
cGUpIHsKKyAgICAvLyBUT0RPOiBjYW5vbmljYWxpemUgdHlwZXM/CisgICAgdGhpcy50eXBlcy5w
dXNoKHR5cGUpOworICAgIHJldHVybiB0aGlzLnR5cGVzLmxlbmd0aCAtIDE7CisgIH0KKworICBh
ZGRHbG9iYWwobG9jYWxfdHlwZSwgbXV0YWJsZSkgeworICAgIGxldCBnbG9iID0gbmV3IFdhc21H
bG9iYWxCdWlsZGVyKHRoaXMsIGxvY2FsX3R5cGUsIG11dGFibGUpOworICAgIGdsb2IuaW5kZXgg
PSB0aGlzLmdsb2JhbHMubGVuZ3RoICsgdGhpcy5udW1faW1wb3J0ZWRfZ2xvYmFsczsKKyAgICB0
aGlzLmdsb2JhbHMucHVzaChnbG9iKTsKKyAgICByZXR1cm4gZ2xvYjsKKyAgfQorCisgIGFkZEZ1
bmN0aW9uKG5hbWUsIHR5cGUpIHsKKyAgICBsZXQgdHlwZV9pbmRleCA9ICh0eXBlb2YgdHlwZSkg
PT0gIm51bWJlciIgPyB0eXBlIDogdGhpcy5hZGRUeXBlKHR5cGUpOworICAgIGxldCBmdW5jID0g
bmV3IFdhc21GdW5jdGlvbkJ1aWxkZXIodGhpcywgbmFtZSwgdHlwZV9pbmRleCk7CisgICAgZnVu
Yy5pbmRleCA9IHRoaXMuZnVuY3Rpb25zLmxlbmd0aCArIHRoaXMubnVtX2ltcG9ydGVkX2Z1bmNz
OworICAgIHRoaXMuZnVuY3Rpb25zLnB1c2goZnVuYyk7CisgICAgcmV0dXJuIGZ1bmM7CisgIH0K
KworICBhZGRJbXBvcnQobW9kdWxlID0gIiIsIG5hbWUsIHR5cGUpIHsKKyAgICBsZXQgdHlwZV9p
bmRleCA9ICh0eXBlb2YgdHlwZSkgPT0gIm51bWJlciIgPyB0eXBlIDogdGhpcy5hZGRUeXBlKHR5
cGUpOworICAgIHRoaXMuaW1wb3J0cy5wdXNoKHttb2R1bGU6IG1vZHVsZSwgbmFtZTogbmFtZSwg
a2luZDoga0V4dGVybmFsRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5
cGVfaW5kZXh9KTsKKyAgICByZXR1cm4gdGhpcy5udW1faW1wb3J0ZWRfZnVuY3MrKzsKKyAgfQor
CisgIGFkZEltcG9ydGVkR2xvYmFsKG1vZHVsZSA9ICIiLCBuYW1lLCB0eXBlKSB7CisgICAgbGV0
IG8gPSB7bW9kdWxlOiBtb2R1bGUsIG5hbWU6IG5hbWUsIGtpbmQ6IGtFeHRlcm5hbEdsb2JhbCwg
dHlwZTogdHlwZSwKKyAgICAgICAgICAgICBtdXRhYmxlOiBmYWxzZX0KKyAgICB0aGlzLmltcG9y
dHMucHVzaChvKTsKKyAgICByZXR1cm4gdGhpcy5udW1faW1wb3J0ZWRfZ2xvYmFscysrOworICB9
CisKKyAgYWRkSW1wb3J0ZWRNZW1vcnkobW9kdWxlID0gIiIsIG5hbWUsIGluaXRpYWwgPSAwLCBt
YXhpbXVtKSB7CisgICAgbGV0IG8gPSB7bW9kdWxlOiBtb2R1bGUsIG5hbWU6IG5hbWUsIGtpbmQ6
IGtFeHRlcm5hbE1lbW9yeSwKKyAgICAgICAgICAgICBpbml0aWFsOiBpbml0aWFsLCBtYXhpbXVt
OiBtYXhpbXVtfTsKKyAgICB0aGlzLmltcG9ydHMucHVzaChvKTsKKyAgICByZXR1cm4gdGhpczsK
KyAgfQorCisgIGFkZEltcG9ydGVkVGFibGUobW9kdWxlID0gIiIsIG5hbWUsIGluaXRpYWwsIG1h
eGltdW0pIHsKKyAgICBsZXQgbyA9IHttb2R1bGU6IG1vZHVsZSwgbmFtZTogbmFtZSwga2luZDog
a0V4dGVybmFsVGFibGUsIGluaXRpYWw6IGluaXRpYWwsCisgICAgICAgICAgICAgbWF4aW11bTog
bWF4aW11bX07CisgICAgdGhpcy5pbXBvcnRzLnB1c2gobyk7CisgIH0KKworICBhZGRFeHBvcnQo
bmFtZSwgaW5kZXgpIHsKKyAgICB0aGlzLmV4cG9ydHMucHVzaCh7bmFtZTogbmFtZSwga2luZDog
a0V4dGVybmFsRnVuY3Rpb24sIGluZGV4OiBpbmRleH0pOworICAgIHJldHVybiB0aGlzOworICB9
CisKKyAgYWRkRXhwb3J0T2ZLaW5kKG5hbWUsIGtpbmQsIGluZGV4KSB7CisgICAgdGhpcy5leHBv
cnRzLnB1c2goe25hbWU6IG5hbWUsIGtpbmQ6IGtpbmQsIGluZGV4OiBpbmRleH0pOworICAgIHJl
dHVybiB0aGlzOworICB9CisKKyAgYWRkRGF0YVNlZ21lbnQoYWRkciwgZGF0YSwgaXNfZ2xvYmFs
ID0gZmFsc2UpIHsKKyAgICB0aGlzLnNlZ21lbnRzLnB1c2goe2FkZHI6IGFkZHIsIGRhdGE6IGRh
dGEsIGlzX2dsb2JhbDogaXNfZ2xvYmFsfSk7CisgICAgcmV0dXJuIHRoaXMuc2VnbWVudHMubGVu
Z3RoIC0gMTsKKyAgfQorCisgIGV4cG9ydE1lbW9yeUFzKG5hbWUpIHsKKyAgICB0aGlzLmV4cG9y
dHMucHVzaCh7bmFtZTogbmFtZSwga2luZDoga0V4dGVybmFsTWVtb3J5LCBpbmRleDogMH0pOwor
ICB9CisKKyAgYWRkRnVuY3Rpb25UYWJsZUluaXQoYmFzZSwgaXNfZ2xvYmFsLCBhcnJheSwgaXNf
aW1wb3J0ID0gZmFsc2UpIHsKKyAgICB0aGlzLmZ1bmN0aW9uX3RhYmxlX2luaXRzLnB1c2goe2Jh
c2U6IGJhc2UsIGlzX2dsb2JhbDogaXNfZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJyYXk6IGFycmF5fSk7CisgICAgaWYgKCFpc19nbG9iYWwpIHsKKyAgICAg
IHZhciBsZW5ndGggPSBiYXNlICsgYXJyYXkubGVuZ3RoOworICAgICAgaWYgKGxlbmd0aCA+IHRo
aXMuZnVuY3Rpb25fdGFibGVfbGVuZ3RoICYmICFpc19pbXBvcnQpIHsKKyAgICAgICAgdGhpcy5m
dW5jdGlvbl90YWJsZV9sZW5ndGggPSBsZW5ndGg7CisgICAgICB9CisgICAgfQorICAgIHJldHVy
biB0aGlzOworICB9CisKKyAgYXBwZW5kVG9UYWJsZShhcnJheSkgeworICAgIGZvciAobGV0IG4g
b2YgYXJyYXkpIHsKKyAgICAgIGlmICh0eXBlb2YgbiAhPSAnbnVtYmVyJykKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdpbnZhbGlkIHRhYmxlIChlbnRyaWVzIGhhdmUgdG8gYmUgbnVtYmVycyk6
ICcgKyBhcnJheSk7CisgICAgfQorICAgIHJldHVybiB0aGlzLmFkZEZ1bmN0aW9uVGFibGVJbml0
KHRoaXMuZnVuY3Rpb25fdGFibGUubGVuZ3RoLCBmYWxzZSwgYXJyYXkpOworICB9CisKKyAgc2V0
RnVuY3Rpb25UYWJsZUxlbmd0aChsZW5ndGgpIHsKKyAgICB0aGlzLmZ1bmN0aW9uX3RhYmxlX2xl
bmd0aCA9IGxlbmd0aDsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIHRvQXJyYXkoZGVidWcg
PSBmYWxzZSkgeworICAgIGxldCBiaW5hcnkgPSBuZXcgQmluYXJ5OworICAgIGxldCB3YXNtID0g
dGhpczsKKworICAgIC8vIEFkZCBoZWFkZXIKKyAgICBiaW5hcnkuZW1pdF9oZWFkZXIoKTsKKwor
ICAgIC8vIEFkZCB0eXBlIHNlY3Rpb24KKyAgICBpZiAod2FzbS50eXBlcy5sZW5ndGggPiAwKSB7
CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyB0eXBlcyBAICIgKyBiaW5hcnkubGVu
Z3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa1R5cGVTZWN0aW9uQ29kZSwgc2VjdGlv
biA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20udHlwZXMubGVuZ3RoKTsKKyAg
ICAgICAgZm9yIChsZXQgdHlwZSBvZiB3YXNtLnR5cGVzKSB7CisgICAgICAgICAgc2VjdGlvbi5l
bWl0X3U4KGtXYXNtRnVuY3Rpb25UeXBlRm9ybSk7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3Uz
MnYodHlwZS5wYXJhbXMubGVuZ3RoKTsKKyAgICAgICAgICBmb3IgKGxldCBwYXJhbSBvZiB0eXBl
LnBhcmFtcykgeworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KHBhcmFtKTsKKyAgICAgICAg
ICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYodHlwZS5yZXN1bHRzLmxlbmd0aCk7Cisg
ICAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHR5cGUucmVzdWx0cykgeworICAgICAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KHJlc3VsdCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9
KTsKKyAgICB9CisKKyAgICAvLyBBZGQgaW1wb3J0cyBzZWN0aW9uCisgICAgaWYgKHdhc20uaW1w
b3J0cy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyBpbXBv
cnRzIEAgIiArIGJpbmFyeS5sZW5ndGgpOworICAgICAgYmluYXJ5LmVtaXRfc2VjdGlvbihrSW1w
b3J0U2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3
YXNtLmltcG9ydHMubGVuZ3RoKTsKKyAgICAgICAgZm9yIChsZXQgaW1wIG9mIHdhc20uaW1wb3J0
cykgeworICAgICAgICAgIHNlY3Rpb24uZW1pdF9zdHJpbmcoaW1wLm1vZHVsZSk7CisgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3N0cmluZyhpbXAubmFtZSB8fCAnJyk7CisgICAgICAgICAgc2VjdGlv
bi5lbWl0X3U4KGltcC5raW5kKTsKKyAgICAgICAgICBpZiAoaW1wLmtpbmQgPT0ga0V4dGVybmFs
RnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGltcC50eXBlKTsKKyAg
ICAgICAgICB9IGVsc2UgaWYgKGltcC5raW5kID09IGtFeHRlcm5hbEdsb2JhbCkgeworICAgICAg
ICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW1wLnR5cGUpOworICAgICAgICAgICAgc2VjdGlvbi5l
bWl0X3U4KGltcC5tdXRhYmxlKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGltcC5raW5kID09IGtF
eHRlcm5hbE1lbW9yeSkgeworICAgICAgICAgICAgdmFyIGhhc19tYXggPSAodHlwZW9mIGltcC5t
YXhpbXVtKSAhPSAidW5kZWZpbmVkIjsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChoYXNf
bWF4ID8gMSA6IDApOyAvLyBmbGFncworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW1w
LmluaXRpYWwpOyAvLyBpbml0aWFsCisgICAgICAgICAgICBpZiAoaGFzX21heCkgc2VjdGlvbi5l
bWl0X3UzMnYoaW1wLm1heGltdW0pOyAvLyBtYXhpbXVtCisgICAgICAgICAgfSBlbHNlIGlmIChp
bXAua2luZCA9PSBrRXh0ZXJuYWxUYWJsZSkgeworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4
KGtXYXNtRnVuY1JlZnRpb25UeXBlRm9ybSk7CisgICAgICAgICAgICB2YXIgaGFzX21heCA9ICh0
eXBlb2YgaW1wLm1heGltdW0pICE9ICJ1bmRlZmluZWQiOworICAgICAgICAgICAgc2VjdGlvbi5l
bWl0X3U4KGhhc19tYXggPyAxIDogMCk7IC8vIGZsYWdzCisgICAgICAgICAgICBzZWN0aW9uLmVt
aXRfdTMydihpbXAuaW5pdGlhbCk7IC8vIGluaXRpYWwKKyAgICAgICAgICAgIGlmIChoYXNfbWF4
KSBzZWN0aW9uLmVtaXRfdTMydihpbXAubWF4aW11bSk7IC8vIG1heGltdW0KKyAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duL3Vuc3VwcG9ydGVk
IGltcG9ydCBraW5kICIgKyBpbXAua2luZCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZnVuY3Rpb25zIGRlY2xhcmF0aW9ucworICAgIGxl
dCBudW1fZnVuY3Rpb25fbmFtZXMgPSAwOworICAgIGxldCBuYW1lcyA9IGZhbHNlOworICAgIGlm
ICh3YXNtLmZ1bmN0aW9ucy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJl
bWl0dGluZyBmdW5jdGlvbiBkZWNscyBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFy
eS5lbWl0X3NlY3Rpb24oa0Z1bmN0aW9uU2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAg
ICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLmZ1bmN0aW9ucy5sZW5ndGgpOworICAgICAgICBmb3Ig
KGxldCBmdW5jIG9mIHdhc20uZnVuY3Rpb25zKSB7CisgICAgICAgICAgaWYgKGZ1bmMubmFtZSAh
PT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICArK251bV9mdW5jdGlvbl9uYW1lczsKKyAgICAg
ICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoZnVuYy50eXBlX2luZGV4KTsKKyAg
ICAgICAgfQorICAgICAgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGZ1bmN0aW9uX3RhYmxlLgor
ICAgIGlmICh3YXNtLmZ1bmN0aW9uX3RhYmxlX2xlbmd0aCA+IDApIHsKKyAgICAgIGlmIChkZWJ1
ZykgcHJpbnQoImVtaXR0aW5nIHRhYmxlIEAgIiArIGJpbmFyeS5sZW5ndGgpOworICAgICAgYmlu
YXJ5LmVtaXRfc2VjdGlvbihrVGFibGVTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAg
IHNlY3Rpb24uZW1pdF91OCgxKTsgIC8vIG9uZSB0YWJsZSBlbnRyeQorICAgICAgICBzZWN0aW9u
LmVtaXRfdTgoa1dhc21GdW5jUmVmdGlvblR5cGVGb3JtKTsKKyAgICAgICAgc2VjdGlvbi5lbWl0
X3U4KDEpOworICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLmZ1bmN0aW9uX3RhYmxlX2xl
bmd0aCk7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZnVuY3Rpb25fdGFibGVfbGVu
Z3RoKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIC8vIEFkZCBtZW1vcnkgc2VjdGlvbgorICAg
IGlmICh3YXNtLm1lbW9yeSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50
KCJlbWl0dGluZyBtZW1vcnkgQCAiICsgYmluYXJ5Lmxlbmd0aCk7CisgICAgICBiaW5hcnkuZW1p
dF9zZWN0aW9uKGtNZW1vcnlTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rp
b24uZW1pdF91OCgxKTsgIC8vIG9uZSBtZW1vcnkgZW50cnkKKyAgICAgICAgY29uc3QgaGFzX21h
eCA9IHdhc20ubWVtb3J5Lm1heCAhPT0gdW5kZWZpbmVkOworICAgICAgICBzZWN0aW9uLmVtaXRf
dTMydihoYXNfbWF4ID8ga1Jlc2l6YWJsZU1heGltdW1GbGFnIDogMCk7CisgICAgICAgIHNlY3Rp
b24uZW1pdF91MzJ2KHdhc20ubWVtb3J5Lm1pbik7CisgICAgICAgIGlmIChoYXNfbWF4KSBzZWN0
aW9uLmVtaXRfdTMydih3YXNtLm1lbW9yeS5tYXgpOworICAgICAgfSk7CisgICAgfQorCisgICAg
Ly8gQWRkIGdsb2JhbCBzZWN0aW9uLgorICAgIGlmICh3YXNtLmdsb2JhbHMubGVuZ3RoID4gMCkg
eworICAgICAgaWYgKGRlYnVnKSBwcmludCAoImVtaXR0aW5nIGdsb2JhbHMgQCAiICsgYmluYXJ5
Lmxlbmd0aCk7CisgICAgICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtHbG9iYWxTZWN0aW9uQ29kZSwg
c2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZ2xvYmFscy5sZW5n
dGgpOworICAgICAgICBmb3IgKGxldCBnbG9iYWwgb2Ygd2FzbS5nbG9iYWxzKSB7CisgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3U4KGdsb2JhbC50eXBlKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRf
dTgoZ2xvYmFsLm11dGFibGUpOworICAgICAgICAgIGlmICgodHlwZW9mIGdsb2JhbC5pbml0X2lu
ZGV4KSA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgLy8gRW1pdCBhIGNvbnN0YW50IGlu
aXRpYWxpemVyLgorICAgICAgICAgICAgc3dpdGNoIChnbG9iYWwudHlwZSkgeworICAgICAgICAg
ICAgY2FzZSBrV2FzbUkzMjoKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHBySTMy
Q29uc3QpOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihnbG9iYWwuaW5pdCk7Cisg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrV2FzbUk2NDoKKyAgICAgICAg
ICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHBySTY0Q29uc3QpOworICAgICAgICAgICAgICBzZWN0
aW9uLmVtaXRfdTMydihnbG9iYWwuaW5pdCk7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBrV2FzbUYzMjoKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHBy
RjMyQ29uc3QpOworICAgICAgICAgICAgICBmMzJfdmlld1swXSA9IGdsb2JhbC5pbml0OworICAg
ICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzBdKTsKKyAgICAgICAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1sxXSk7CisgICAgICAgICAgICAgIHNlY3Rpb24uZW1p
dF91OChieXRlX3ZpZXdbMl0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92
aWV3WzNdKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGtXYXNtRjY0
OgorICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJGNjRDb25zdCk7CisgICAgICAg
ICAgICAgIGY2NF92aWV3WzBdID0gZ2xvYmFsLmluaXQ7CisgICAgICAgICAgICAgIHNlY3Rpb24u
ZW1pdF91OChieXRlX3ZpZXdbMF0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0
ZV92aWV3WzFdKTsKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1syXSk7
CisgICAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbM10pOworICAgICAgICAg
ICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzRdKTsKKyAgICAgICAgICAgICAgc2VjdGlv
bi5lbWl0X3U4KGJ5dGVfdmlld1s1XSk7CisgICAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChi
eXRlX3ZpZXdbNl0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3Wzdd
KTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIEVtaXQgYSBnbG9iYWwtaW5kZXggaW5pdGlhbGl6ZXIuCisgICAg
ICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJHZXRHbG9iYWwpOworICAgICAgICAgICAgc2Vj
dGlvbi5lbWl0X3UzMnYoZ2xvYmFsLmluaXRfaW5kZXgpOworICAgICAgICAgIH0KKyAgICAgICAg
ICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJFbmQpOyAgLy8gZW5kIG9mIGluaXQgZXhwcmVzc2lvbgor
ICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZXhwb3J0IHRhYmxlLgor
ICAgIHZhciBtZW1fZXhwb3J0ID0gKHdhc20ubWVtb3J5ICE9PSB1bmRlZmluZWQgJiYgd2FzbS5t
ZW1vcnkuZXhwKTsKKyAgICB2YXIgZXhwb3J0c19jb3VudCA9IHdhc20uZXhwb3J0cy5sZW5ndGgg
KyAobWVtX2V4cG9ydCA/IDEgOiAwKTsKKyAgICBpZiAoZXhwb3J0c19jb3VudCA+IDApIHsKKyAg
ICAgIGlmIChkZWJ1ZykgcHJpbnQoImVtaXR0aW5nIGV4cG9ydHMgQCAiICsgYmluYXJ5Lmxlbmd0
aCk7CisgICAgICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtFeHBvcnRTZWN0aW9uQ29kZSwgc2VjdGlv
biA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGV4cG9ydHNfY291bnQpOworICAgICAg
ICBmb3IgKGxldCBleHAgb2Ygd2FzbS5leHBvcnRzKSB7CisgICAgICAgICAgc2VjdGlvbi5lbWl0
X3N0cmluZyhleHAubmFtZSk7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGV4cC5raW5kKTsK
KyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihleHAuaW5kZXgpOworICAgICAgICB9CisgICAg
ICAgIGlmIChtZW1fZXhwb3J0KSB7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3N0cmluZygibWVt
b3J5Iik7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHRlcm5hbE1lbW9yeSk7CisgICAg
ICAgICAgc2VjdGlvbi5lbWl0X3U4KDApOworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisK
KyAgICAvLyBBZGQgc3RhcnQgZnVuY3Rpb24gc2VjdGlvbi4KKyAgICBpZiAod2FzbS5zdGFydF9p
bmRleCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyBz
dGFydCBmdW5jdGlvbiBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3Nl
Y3Rpb24oa1N0YXJ0U2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAgICBzZWN0aW9uLmVt
aXRfdTMydih3YXNtLnN0YXJ0X2luZGV4KTsKKyAgICAgIH0pOworICAgIH0KKworICAgIC8vIEFk
ZCB0YWJsZSBlbGVtZW50cy4KKyAgICBpZiAod2FzbS5mdW5jdGlvbl90YWJsZV9pbml0cy5sZW5n
dGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyB0YWJsZSBAICIgKyBi
aW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0VsZW1lbnRTZWN0aW9u
Q29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHZhciBpbml0cyA9IHdhc20uZnVuY3Rpb25fdGFi
bGVfaW5pdHM7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGluaXRzLmxlbmd0aCk7CisKKyAg
ICAgICAgZm9yIChsZXQgaW5pdCBvZiBpbml0cykgeworICAgICAgICAgIHNlY3Rpb24uZW1pdF91
OCgwKTsgLy8gdGFibGUgaW5kZXgKKyAgICAgICAgICBpZiAoaW5pdC5pc19nbG9iYWwpIHsKKyAg
ICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckdldEdsb2JhbCk7CisgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckkzMkNvbnN0KTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW5pdC5iYXNlKTsKKyAgICAgICAg
ICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJFbmQpOworICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2
KGluaXQuYXJyYXkubGVuZ3RoKTsKKyAgICAgICAgICBmb3IgKGxldCBpbmRleCBvZiBpbml0LmFy
cmF5KSB7CisgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihpbmRleCk7CisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZnVuY3Rpb24gYm9k
aWVzLgorICAgIGlmICh3YXNtLmZ1bmN0aW9ucy5sZW5ndGggPiAwKSB7CisgICAgICAvLyBlbWl0
IGZ1bmN0aW9uIGJvZGllcworICAgICAgaWYgKGRlYnVnKSBwcmludCgiZW1pdHRpbmcgY29kZSBA
ICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0NvZGVTZWN0
aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZnVu
Y3Rpb25zLmxlbmd0aCk7CisgICAgICAgIGZvciAobGV0IGZ1bmMgb2Ygd2FzbS5mdW5jdGlvbnMp
IHsKKyAgICAgICAgICAvLyBGdW5jdGlvbiBib2R5IGxlbmd0aCB3aWxsIGJlIHBhdGNoZWQgbGF0
ZXIuCisgICAgICAgICAgbGV0IGxvY2FsX2RlY2xzID0gW107CisgICAgICAgICAgbGV0IGwgPSBm
dW5jLmxvY2FsczsKKyAgICAgICAgICBpZiAobCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAg
ICBsZXQgbG9jYWxfZGVjbHNfY291bnQgPSAwOworICAgICAgICAgICAgaWYgKGwuaTMyX2NvdW50
ID4gMCkgeworICAgICAgICAgICAgICBsb2NhbF9kZWNscy5wdXNoKHtjb3VudDogbC5pMzJfY291
bnQsIHR5cGU6IGtXYXNtSTMyfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobC5p
NjRfY291bnQgPiAwKSB7CisgICAgICAgICAgICAgIGxvY2FsX2RlY2xzLnB1c2goe2NvdW50OiBs
Lmk2NF9jb3VudCwgdHlwZToga1dhc21JNjR9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChsLmYzMl9jb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgbG9jYWxfZGVjbHMucHVzaCh7
Y291bnQ6IGwuZjMyX2NvdW50LCB0eXBlOiBrV2FzbUYzMn0pOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGwuZjY0X2NvdW50ID4gMCkgeworICAgICAgICAgICAgICBsb2NhbF9kZWNs
cy5wdXNoKHtjb3VudDogbC5mNjRfY291bnQsIHR5cGU6IGtXYXNtRjY0fSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgbGV0IGhlYWRlciA9IG5ldyBCaW5hcnk7Cisg
ICAgICAgICAgaGVhZGVyLmVtaXRfdTMydihsb2NhbF9kZWNscy5sZW5ndGgpOworICAgICAgICAg
IGZvciAobGV0IGRlY2wgb2YgbG9jYWxfZGVjbHMpIHsKKyAgICAgICAgICAgIGhlYWRlci5lbWl0
X3UzMnYoZGVjbC5jb3VudCk7CisgICAgICAgICAgICBoZWFkZXIuZW1pdF91OChkZWNsLnR5cGUp
OworICAgICAgICAgIH0KKworICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGhlYWRlci5sZW5n
dGggKyBmdW5jLmJvZHkubGVuZ3RoKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfYnl0ZXMoaGVh
ZGVyKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfYnl0ZXMoZnVuYy5ib2R5KTsKKyAgICAgICAg
fQorICAgICAgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGRhdGEgc2VnbWVudHMuCisgICAgaWYg
KHdhc20uc2VnbWVudHMubGVuZ3RoID4gMCkgeworICAgICAgaWYgKGRlYnVnKSBwcmludCgiZW1p
dHRpbmcgZGF0YSBzZWdtZW50cyBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5l
bWl0X3NlY3Rpb24oa0RhdGFTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rp
b24uZW1pdF91MzJ2KHdhc20uc2VnbWVudHMubGVuZ3RoKTsKKyAgICAgICAgZm9yIChsZXQgc2Vn
IG9mIHdhc20uc2VnbWVudHMpIHsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoMCk7ICAvLyBs
aW5lYXIgbWVtb3J5IGluZGV4IDAKKyAgICAgICAgICBpZiAoc2VnLmlzX2dsb2JhbCkgeworICAg
ICAgICAgICAgLy8gaW5pdGlhbGl6ZXIgaXMgYSBnbG9iYWwgdmFyaWFibGUKKyAgICAgICAgICAg
IHNlY3Rpb24uZW1pdF91OChrRXhwckdldEdsb2JhbCk7CisgICAgICAgICAgICBzZWN0aW9uLmVt
aXRfdTMydihzZWcuYWRkcik7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGlu
aXRpYWxpemVyIGlzIGEgY29uc3RhbnQKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhw
ckkzMkNvbnN0KTsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHNlZy5hZGRyKTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHByRW5kKTsKKyAgICAgICAg
ICBzZWN0aW9uLmVtaXRfdTMydihzZWcuZGF0YS5sZW5ndGgpOworICAgICAgICAgIHNlY3Rpb24u
ZW1pdF9ieXRlcyhzZWcuZGF0YSk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0KKworICAg
IC8vIEFkZCBhbnkgZXhwbGljaXRseSBhZGRlZCBzZWN0aW9ucworICAgIGZvciAobGV0IGV4cCBv
ZiB3YXNtLmV4cGxpY2l0KSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyBleHBs
aWNpdCBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X2J5dGVzKGV4cCk7
CisgICAgfQorCisgICAgLy8gQWRkIGZ1bmN0aW9uIG5hbWVzLgorICAgIGlmIChudW1fZnVuY3Rp
b25fbmFtZXMgPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCdlbWl0dGluZyBuYW1lcyBA
ICcgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa1Vua25vd25T
ZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF9zdHJpbmcoJ25h
bWUnKTsKKyAgICAgICAgc2VjdGlvbi5lbWl0X3NlY3Rpb24oa0Z1bmN0aW9uTmFtZXNDb2RlLCBu
YW1lX3NlY3Rpb24gPT4geworICAgICAgICAgIG5hbWVfc2VjdGlvbi5lbWl0X3UzMnYobnVtX2Z1
bmN0aW9uX25hbWVzKTsKKyAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIHdhc20uZnVuY3Rpb25z
KSB7CisgICAgICAgICAgICBpZiAoZnVuYy5uYW1lID09PSB1bmRlZmluZWQpIGNvbnRpbnVlOwor
ICAgICAgICAgICAgbmFtZV9zZWN0aW9uLmVtaXRfdTMydihmdW5jLmluZGV4KTsKKyAgICAgICAg
ICAgIG5hbWVfc2VjdGlvbi5lbWl0X3N0cmluZyhmdW5jLm5hbWUpOworICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gYmluYXJ5OworICB9CisK
KyAgdG9CdWZmZXIoZGVidWcgPSBmYWxzZSkgeworICAgIGxldCBieXRlcyA9IHRoaXMudG9BcnJh
eShkZWJ1Zyk7CisgICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgp
OworICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICBsZXQgdmFsID0gYnl0ZXNbaV07
CisgICAgICBpZiAoKHR5cGVvZiB2YWwpID09ICJzdHJpbmciKSB2YWwgPSB2YWwuY2hhckNvZGVB
dCgwKTsKKyAgICAgIHZpZXdbaV0gPSB2YWwgfCAwOworICAgIH0KKyAgICByZXR1cm4gYnVmZmVy
OworICB9CisKKyAgaW5zdGFudGlhdGUoZmZpKSB7CisgICAgbGV0IG1vZHVsZSA9IG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUodGhpcy50b0J1ZmZlcigpKTsKKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCBmZmkpOworICAgIHJldHVybiBpbnN0YW5jZTsK
KyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVz
cy93YXN0LmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy93YXN0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNlYTcxYTMzMjhlNTMyYmJiMDcxMzhmMTA1NGM0ZDdmNWY3Njc5YTIKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dh
c3QuanMKQEAgLTAsMCArMSwyOTc3NyBAQAorLy8gRE8gTk9UIEVESVQuIEdlbmVyYXRlZCBmcm9t
IFdlYkFzc2VtYmx5IHNwZWMgaW50ZXJwcmV0ZXIKKworbGV0IFdlYkFzc2VtYmx5VGV4dCA9IChm
dW5jdGlvbigpIHsKK8KgIGxldCBfcmVnaXN0cnkgPSB7X19wcm90b19fOiBudWxsfTsKKyAgZnVu
Y3Rpb24gbm9ybWFsaXplKGZpbGUpIHsKKyAgICByZXR1cm4gZmlsZS5zcGxpdCgnLycpLnJldmVy
c2UoKVswXS5zcGxpdCgnLicpWzBdOworICB9CivCoCBmdW5jdGlvbiByZXF1aXJlKGZpbGUpIHsK
K8KgIMKgIGxldCBuYW1lID0gbm9ybWFsaXplKGZpbGUpOworICAgIGlmICghKG5hbWUgaW4gX3Jl
Z2lzdHJ5KSkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIG1vZHVsZTogJyArIG5h
bWUpCivCoCDCoCB9IGVsc2UgaWYgKHR5cGVvZiBfcmVnaXN0cnlbbmFtZV0gPT09ICdmdW5jdGlv
bicpIHsKKworCivCoCDCoCDCoCBsZXQgZiA9IF9yZWdpc3RyeVtuYW1lXTsKK8KgIMKgIMKgIF9y
ZWdpc3RyeVtuYW1lXSA9IGZ1bmN0aW9uKCkgeyB0aHJvdyBuZXcgRXJyb3IoJ2N5Y2xpYyBtb2R1
bGU6ICcgKyBuYW1lKSB9OworwqAgwqAgwqAgX3JlZ2lzdHJ5W25hbWVdID0gZigpOworwqAgwqAg
fQorwqAgwqAgcmV0dXJuIF9yZWdpc3RyeVtuYW1lXTsKK8KgIH0KKworCisgIF9yZWdpc3RyeVsn
YXJyYW5nZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2YgYXJyYW5nZS5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVND
UklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7
CisKK3ZhciBGMzIgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjMyIik7Cit2YXIg
RjY0ICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Y2NCIpOwordmFyIEkzMiAgICAg
ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9pMzIiKTsKK3ZhciBJNjQgICAgICAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vaTY0Iik7Cit2YXIgTGliICAgICAgICAgICAgICAgICAgICAg
PSByZXF1aXJlKCIuL2xpYiIpOwordmFyIExpc3QgICAgICAgICAgICAgICAgICAgID0gcmVxdWly
ZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBCbG9jayAgICAgICAgICAgICAgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFyIEN1cnJ5ICAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2YXIg
VHlwZXMgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3R5cGVzIik7Cit2YXIgQnVmZmVy
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYnVmZmVyIik7
Cit2YXIgRGVjb2RlICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2RlY29kZSIpOwordmFy
IEVuY29kZSAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9lbmNvZGUiKTsKK3ZhciBQcmlu
dGYgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wcmludGYi
KTsKK3ZhciBTb3VyY2UgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc291cmNlIik7Cit2
YXIgJCRTdHJpbmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
c3RyaW5nIik7Cit2YXIgVmFsdWVzICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3ZhbHVl
cyIpOwordmFyIENhbWxfaW50MzIgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL2NhbWxfaW50MzIiKTsKK3ZhciBQZXJ2YXNpdmVzICAgICAgICAgICAgICA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMiKTsKKworZnVuY3Rpb24gYWRkX2hleF9jaGFyKGJ1ZiwgYykgeworICByZXR1cm4gQ3Vy
cnkuXzEoUHJpbnRmLmJwcmludGYoYnVmLCAvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAg
ICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAg
IC8qICJcXCIgKi85MiwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBaZXJvcyAqLzIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICJcXCUwMngiCisgICAgICAg
ICAgICAgICAgXSksIGMpOworfQorCitmdW5jdGlvbiBhZGRfY2hhcihidWYsIGMpIHsKKyAgaWYg
KGMgPCAvKiAiICIgKi8zMiB8fCBjID49IC8qICJcMTI3IiAqLzEyNykgeworICAgIHJldHVybiBh
ZGRfaGV4X2NoYXIoYnVmLCBjKTsKKyAgfQorICBlbHNlIHsKKyAgICBpZiAoYyA9PT0gLyogIlwi
IiAqLzM0IHx8IGMgPT09IC8qICJcXCIgKi85MikgeworICAgICAgQnVmZmVyLmFkZF9jaGFyKGJ1
ZiwgLyogIlxcIiAqLzkyKTsKKyAgICB9CisgICAgcmV0dXJuIEJ1ZmZlci5hZGRfY2hhcihidWYs
IGMpOworICB9Cit9CisKK2Z1bmN0aW9uIHN0cmluZ193aXRoKGFkZF9jaGFyLCBzKSB7CisgIHZh
ciBidWYgPSBCdWZmZXIuY3JlYXRlKENhbWxfaW50MzIuaW11bCgzLCBzLmxlbmd0aCkgKyAyIHwg
MCk7CisgIEJ1ZmZlci5hZGRfY2hhcihidWYsIC8qICJcIiIgKi8zNCk7CisgICQkU3RyaW5nLml0
ZXIoQ3VycnkuXzEoYWRkX2NoYXIsIGJ1ZiksIHMpOworICBCdWZmZXIuYWRkX2NoYXIoYnVmLCAv
KiAiXCIiICovMzQpOworICByZXR1cm4gQnVmZmVyLmNvbnRlbnRzKGJ1Zik7Cit9CisKK2Z1bmN0
aW9uIGxpc3Rfb2Zfb3B0KHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgIHBhcmFtWzBdLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisK
K2Z1bmN0aW9uIGJyZWFrX2J5dGVzKHMpIHsKKyAgdmFyIHNzID0gQ3VycnkuXzIoTGliLiQkU3Ry
aW5nWy8qIGJyZWFrdXAgKi8wXSwgcywgMTYpOworICB2YXIgZiA9IGZ1bmN0aW9uIChwYXJhbSkg
eworICAgIHJldHVybiAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFkZF9oZXhf
Y2hhciwgcGFyYW0pXSk7CisgIH07CisgIHJldHVybiBMaXN0Lm1hcChmLCBzcyk7Cit9CisKK2Z1
bmN0aW9uIGRlY2xzKGtpbmQsIHRzKSB7CisgIHZhciBoZWFkID0ga2luZDsKKyAgdmFyIGYgPSBm
dW5jdGlvbiAocGFyYW0pIHsKKyAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBl
cy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSldKTsKKyAgfTsKKyAgdmFyIHhzID0gdHM7Cisg
IGlmICh4cykgeworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIC8qIE5vZGUgKi9C
bG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgaGVhZCwKKyAgICAgICAgICAgICAgICBMaXN0
Lm1hcChmLCB4cykKKyAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KK30K
KworZnVuY3Rpb24gZnVuY190eXBlKHBhcmFtKSB7CisgIHJldHVybiAvKiBOb2RlICovQmxvY2su
X18oMSwgWworICAgICAgICAgICAgImZ1bmMiLAorICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQo
ZGVjbHMoInBhcmFtIiwgcGFyYW1bMF0pLCBkZWNscygicmVzdWx0IiwgcGFyYW1bMV0pKQorICAg
ICAgICAgIF0pOworfQorCitmdW5jdGlvbiBsaW1pdHMobmF0LCBwYXJhbSkgeworICB2YXIgeHMg
PSBsaXN0X29mX29wdChwYXJhbVsvKiBtYXggKi8xXSk7CisgIHJldHVybiAkJFN0cmluZy5jb25j
YXQoIiAiLCAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzEobmF0LCBwYXJhbVsvKiBt
aW4gKi8wXSksCisgICAgICAgICAgICAgIExpc3QubWFwKG5hdCwgeHMpCisgICAgICAgICAgICBd
KTsKK30KKworZnVuY3Rpb24gZ2xvYmFsX3R5cGUocGFyYW0pIHsKKyAgdmFyIHQgPSBwYXJhbVsw
XTsKKyAgaWYgKHBhcmFtWzFdICE9PSAwKSB7CisgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5f
XygxLCBbCisgICAgICAgICAgICAgICJtdXQiLAorICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW1R5cGVzLnN0cmluZ19vZl92YWx1
ZV90eXBlKHQpXSksCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgIF0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBBdG9tICovQmxv
Y2suX18oMCwgW1R5cGVzLnN0cmluZ19vZl92YWx1ZV90eXBlKHQpXSk7CisgIH0KK30KKworZnVu
Y3Rpb24gdGVzdG9wKF8sIF8kMSkgeworICByZXR1cm4gImVxeiI7Cit9CisKK2Z1bmN0aW9uIHJl
bG9wKF8sIHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAg
ICAgcmV0dXJuICJlcSI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAibmUiOworICAg
IGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gImx0X3MiOworICAgIGNhc2UgMyA6IAorICAgICAg
ICByZXR1cm4gImx0X3UiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gImd0X3MiOwor
ICAgIGNhc2UgNSA6IAorICAgICAgICByZXR1cm4gImd0X3UiOworICAgIGNhc2UgNiA6IAorICAg
ICAgICByZXR1cm4gImxlX3MiOworICAgIGNhc2UgNyA6IAorICAgICAgICByZXR1cm4gImxlX3Ui
OworICAgIGNhc2UgOCA6IAorICAgICAgICByZXR1cm4gImdlX3MiOworICAgIGNhc2UgOSA6IAor
ICAgICAgICByZXR1cm4gImdlX3UiOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIHVub3AoXywg
cGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1
cm4gImNseiI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAiY3R6IjsKKyAgICBjYXNl
IDIgOiAKKyAgICAgICAgcmV0dXJuICJwb3BjbnQiOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9u
IGJpbm9wKF8sIHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAg
ICAgICAgcmV0dXJuICJhZGQiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gInN1YiI7
CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAibXVsIjsKKyAgICBjYXNlIDMgOiAKKyAg
ICAgICAgcmV0dXJuICJkaXZfcyI7CisgICAgY2FzZSA0IDogCisgICAgICAgIHJldHVybiAiZGl2
X3UiOworICAgIGNhc2UgNSA6IAorICAgICAgICByZXR1cm4gInJlbV9zIjsKKyAgICBjYXNlIDYg
OiAKKyAgICAgICAgcmV0dXJuICJyZW1fdSI7CisgICAgY2FzZSA3IDogCisgICAgICAgIHJldHVy
biAiYW5kIjsKKyAgICBjYXNlIDggOiAKKyAgICAgICAgcmV0dXJuICJvciI7CisgICAgY2FzZSA5
IDogCisgICAgICAgIHJldHVybiAieG9yIjsKKyAgICBjYXNlIDEwIDogCisgICAgICAgIHJldHVy
biAic2hsIjsKKyAgICBjYXNlIDExIDogCisgICAgICAgIHJldHVybiAic2hyX3MiOworICAgIGNh
c2UgMTIgOiAKKyAgICAgICAgcmV0dXJuICJzaHJfdSI7CisgICAgY2FzZSAxMyA6IAorICAgICAg
ICByZXR1cm4gInJvdGwiOworICAgIGNhc2UgMTQgOiAKKyAgICAgICAgcmV0dXJuICJyb3RyIjsK
KyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBjdnRvcCh4eCwgcGFyYW0pIHsKKyAgc3dpdGNoIChw
YXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gImV4dGVuZF9zL2kzMiI7Cisg
ICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAiZXh0ZW5kX3UvaTMyIjsKKyAgICBjYXNlIDIg
OiAKKyAgICAgICAgcmV0dXJuICJ3cmFwL2k2NCI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJl
dHVybiAidHJ1bmNfcy9mMzIiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gInRydW5j
X3UvZjMyIjsKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuICJ0cnVuY19zL2Y2NCI7Cisg
ICAgY2FzZSA2IDogCisgICAgICAgIHJldHVybiAidHJ1bmNfdS9mNjQiOworICAgIGNhc2UgNyA6
IAorICAgICAgICByZXR1cm4gInJlaW50ZXJwcmV0L2YiICsgeHg7CisgICAgCisgIH0KK30KKwor
ZnVuY3Rpb24gdGVzdG9wJDEoXywgXyQxKSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgIFsKKyAgICAgICAgICAiL3Vz
ci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxk
L2pzbGliL3NyYy9hcnJhbmdlLm1sIiwKKyAgICAgICAgICAxMjgsCisgICAgICAgICAgMjcKKyAg
ICAgICAgXQorICAgICAgXTsKK30KKworZnVuY3Rpb24gcmVsb3AkMShfLCBwYXJhbSkgeworICBz
d2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVybiAiZXEiOworICAg
IGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gIm5lIjsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAg
cmV0dXJuICJsdCI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAiZ3QiOworICAgIGNh
c2UgNCA6IAorICAgICAgICByZXR1cm4gImxlIjsKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0
dXJuICJnZSI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gdW5vcCQxKF8sIHBhcmFtKSB7Cisg
IHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuICJuZWciOwor
ICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gImFicyI7CisgICAgY2FzZSAyIDogCisgICAg
ICAgIHJldHVybiAiY2VpbCI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAiZmxvb3Ii
OworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gInRydW5jIjsKKyAgICBjYXNlIDUgOiAK
KyAgICAgICAgcmV0dXJuICJuZWFyZXN0IjsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgcmV0dXJu
ICJzcXJ0IjsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBiaW5vcCQxKF8sIHBhcmFtKSB7Cisg
IHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuICJhZGQiOwor
ICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gInN1YiI7CisgICAgY2FzZSAyIDogCisgICAg
ICAgIHJldHVybiAibXVsIjsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAgcmV0dXJuICJkaXYiOwor
ICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gIm1pbiI7CisgICAgY2FzZSA1IDogCisgICAg
ICAgIHJldHVybiAibWF4IjsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgcmV0dXJuICJjb3B5c2ln
biI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gY3Z0b3AkMSh4eCwgcGFyYW0pIHsKKyAgc3dp
dGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfcy9p
MzIiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfdS9pMzIiOworICAg
IGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfcy9pNjQiOworICAgIGNhc2UgMyA6
IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfdS9pNjQiOworICAgIGNhc2UgNCA6IAorICAgICAg
ICByZXR1cm4gInByb21vdGUvZjMyIjsKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuICJk
ZW1vdGUvZjY0IjsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgcmV0dXJuICJyZWludGVycHJldC9p
IiArIHh4OworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIG9wZXIocGFyYW0sIG9wKSB7CisgIHZh
ciBmbG9hdG9wID0gcGFyYW1bMV07CisgIHZhciBpbnRvcCA9IHBhcmFtWzBdOworICB2YXIgJGpz
OworICBzd2l0Y2ggKG9wLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgJGpzID0g
Q3VycnkuXzIoaW50b3AsICIzMiIsIG9wWzBdKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAx
IDogCisgICAgICAgICRqcyA9IEN1cnJ5Ll8yKGludG9wLCAiNjQiLCBvcFswXSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgMiA6IAorICAgICAgICAkanMgPSBDdXJyeS5fMihmbG9hdG9wLCAi
MzIiLCBvcFswXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMyA6IAorICAgICAgICAkanMg
PSBDdXJyeS5fMihmbG9hdG9wLCAiNjQiLCBvcFswXSk7CisgICAgICAgIGJyZWFrOworICAgIAor
ICB9CisgIHJldHVybiBUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShWYWx1ZXMudHlwZV9vZihv
cCkpICsgKCIuIiArICRqcyk7Cit9CisKK3ZhciBwYXJ0aWFsX2FyZyA9IC8qIHR1cGxlICovWwor
ICB1bm9wLAorICB1bm9wJDEKK107CisKK2Z1bmN0aW9uIHVub3AkMihwYXJhbSkgeworICByZXR1
cm4gb3BlcihwYXJ0aWFsX2FyZywgcGFyYW0pOworfQorCit2YXIgcGFydGlhbF9hcmckMSA9IC8q
IHR1cGxlICovWworICBiaW5vcCwKKyAgYmlub3AkMQorXTsKKworZnVuY3Rpb24gYmlub3AkMihw
YXJhbSkgeworICByZXR1cm4gb3BlcihwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7Cit9CisKK3ZhciBw
YXJ0aWFsX2FyZyQyID0gLyogdHVwbGUgKi9bCisgIHRlc3RvcCwKKyAgdGVzdG9wJDEKK107CisK
K2Z1bmN0aW9uIHRlc3RvcCQyKHBhcmFtKSB7CisgIHJldHVybiBvcGVyKHBhcnRpYWxfYXJnJDIs
IHBhcmFtKTsKK30KKwordmFyIHBhcnRpYWxfYXJnJDMgPSAvKiB0dXBsZSAqL1sKKyAgcmVsb3As
CisgIHJlbG9wJDEKK107CisKK2Z1bmN0aW9uIHJlbG9wJDIocGFyYW0pIHsKKyAgcmV0dXJuIG9w
ZXIocGFydGlhbF9hcmckMywgcGFyYW0pOworfQorCit2YXIgcGFydGlhbF9hcmckNCA9IC8qIHR1
cGxlICovWworICBjdnRvcCwKKyAgY3Z0b3AkMQorXTsKKworZnVuY3Rpb24gY3Z0b3AkMihwYXJh
bSkgeworICByZXR1cm4gb3BlcihwYXJ0aWFsX2FyZyQ0LCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9u
IG1lbV9zaXplKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAg
ICAgICAgcmV0dXJuICI4IjsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuICIxNiI7Cisg
ICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAiMzIiOworICAgIAorICB9Cit9CisKK2Z1bmN0
aW9uIGV4dGVuc2lvbihwYXJhbSkgeworICBpZiAocGFyYW0gIT09IDApIHsKKyAgICByZXR1cm4g
Il91IjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gIl9zIjsKKyAgfQorfQorCitmdW5jdGlv
biBtZW1vcChuYW1lLCBwYXJhbSkgeworICB2YXIgb2Zmc2V0ID0gcGFyYW1bLyogb2Zmc2V0ICov
Ml07CisgIHZhciBhbGlnbiA9IHBhcmFtWy8qIGFsaWduICovMV07CisgIHZhciB0eSA9IHBhcmFt
Wy8qIHR5ICovMF07CisgIHJldHVybiBUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZSh0eSkgKyAo
Ii4iICsgKG5hbWUgKyAoKAorICAgICAgICAgICAgICAgIG9mZnNldCA/ICIgb2Zmc2V0PSIgKyBD
dXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG9mZnNldCkgOiAiIgorICAgICAgICAgICAgICApICsg
KAorICAgICAgICAgICAgICAgICgxIDw8IGFsaWduKSA9PT0gVHlwZXMuc2l6ZSh0eSkgPyAiIiA6
ICIgYWxpZ249IiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgQ3VycnkuXzEoSTMyLm9mX2lu
dF91LCAoMSA8PCBhbGlnbikpKQorICAgICAgICAgICAgICApKSkpOworfQorCitmdW5jdGlvbiBs
b2Fkb3Aob3ApIHsKKyAgdmFyIG1hdGNoID0gb3BbLyogc3ogKi8zXTsKKyAgaWYgKG1hdGNoKSB7
CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICByZXR1cm4gbWVtb3AoImxvYWQiICsg
KG1lbV9zaXplKG1hdGNoJDFbMF0pICsgZXh0ZW5zaW9uKG1hdGNoJDFbMV0pKSwgb3ApOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBtZW1vcCgibG9hZCIsIG9wKTsKKyAgfQorfQorCitmdW5j
dGlvbiBzdG9yZW9wKG9wKSB7CisgIHZhciBtYXRjaCA9IG9wWy8qIHN6ICovM107CisgIGlmICht
YXRjaCkgeworICAgIHJldHVybiBtZW1vcCgic3RvcmUiICsgbWVtX3NpemUobWF0Y2hbMF0pLCBv
cCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG1lbW9wKCJzdG9yZSIsIG9wKTsKKyAgfQor
fQorCitmdW5jdGlvbiAkJHZhcih4KSB7CisgIHJldHVybiBDdXJyeS5fMShJMzIudG9fc3RyaW5n
X3UsIHhbLyogaXQgKi8xXSk7Cit9CisKK2Z1bmN0aW9uIGNvbnN0b3AodikgeworICByZXR1cm4g
VHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUoVmFsdWVzLnR5cGVfb2YodlsvKiBpdCAqLzFdKSkg
KyAiLmNvbnN0IjsKK30KKworZnVuY3Rpb24gaW5zdHIoZSkgeworICB2YXIgbWF0Y2ggPSBlWy8q
IGl0ICovMV07CisgIHZhciBtYXRjaCQxOworICBpZiAodHlwZW9mIG1hdGNoID09PSAibnVtYmVy
IikgeworICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIG1h
dGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJ1bnJlYWNoYWJsZSIsCisgICAgICAg
ICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAxIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgIm5v
cCIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAg
ICAgICAgICAgInJldHVybiIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8q
IHR1cGxlICovWworICAgICAgICAgICAgImRyb3AiLAorICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAg
IG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJzZWxlY3QiLAorICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
NSA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJjdXJy
ZW50X21lbW9yeSIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxl
ICovWworICAgICAgICAgICAgImdyb3dfbWVtb3J5IiwKKyAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9CisgIH0KKyAgZWxz
ZSB7CisgICAgc3dpdGNoIChtYXRjaC50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICB2YXIgZiA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgcmV0dXJuIC8qIEF0
b20gKi9CbG9jay5fXygwLCBbVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUocGFyYW0pXSk7Cisg
ICAgICAgICAgfTsKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAg
ICAiYmxvY2siLAorICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoTGlzdC5tYXAoZiwgbWF0Y2hb
MF0pLCBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMV0pKQorICAgICAgICAgIF07CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB2YXIgZiQxID0gZnVuY3Rpb24gKHBh
cmFtKSB7CisgICAgICAgICAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBlcy5z
dHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSldKTsKKyAgICAgICAgICB9OworICAgICAgICAgIG1h
dGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJsb29wIiwKKyAgICAgICAgICAgIFBl
cnZhc2l2ZXMuJGF0KExpc3QubWFwKGYkMSwgbWF0Y2hbMF0pLCBMaXN0Lm1hcChpbnN0ciwgbWF0
Y2hbMV0pKQorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICB2YXIgZiQyID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICByZXR1
cm4gLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJh
bSldKTsKKyAgICAgICAgICB9OworICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICJpZiIsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChMaXN0Lm1hcChmJDIs
IG1hdGNoWzBdKSwgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAvKiBOb2RlICovQmxvY2su
X18oMSwgWworICAgICAgICAgICAgICAgICAgICAgICJ0aGVuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMV0pCisgICAgICAgICAgICAgICAgICAgIF0pLAor
ICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIE5vZGUg
Ki9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAiZWxzZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMl0pCisgICAgICAgICAgICAg
ICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICJiciAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXRjaFswXVsvKiBp
dCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9b
CisgICAgICAgICAgICAiYnJfaWYgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hb
MF1bLyogaXQgKi8xXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIHhzID0gUGVydmFz
aXZlcy4kYXQobWF0Y2hbMF0sIC8qIDo6ICovWworICAgICAgICAgICAgICAgIG1hdGNoWzFdLAor
ICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICBt
YXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAiYnJfdGFibGUgIiArICQkU3RyaW5n
LmNvbmNhdCgiICIsIExpc3QubWFwKCQkdmFyLCB4cykpLAorICAgICAgICAgICAgLyogW10gKi8w
CisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6IAorICAgICAg
ICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJjYWxsICIgKyBDdXJyeS5f
MShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pLAorICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNyA6IAor
ICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJjYWxsX2luZGly
ZWN0ICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pLAor
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgOCA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICJnZXRfbG9jYWwgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyog
aXQgKi8xXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICov
WworICAgICAgICAgICAgInNldF9sb2NhbCAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBt
YXRjaFswXVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgbWF0Y2gkMSA9
IC8qIHR1cGxlICovWworICAgICAgICAgICAgInRlZV9sb2NhbCAiICsgQ3VycnkuXzEoSTMyLnRv
X3N0cmluZ191LCBtYXRjaFswXVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDExIDogCisgICAgICAg
ICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgImdldF9nbG9iYWwgIiArIEN1
cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSksCisgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAx
MiA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJzZXRf
Z2xvYmFsICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0p
LAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICBsb2Fkb3AobWF0Y2hbMF0pLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICBtYXRj
aCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBzdG9yZW9wKG1hdGNoWzBdKSwKKyAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDE1IDogCisgICAgICAgICAgdmFyIGxpdCA9IG1hdGNoWzBdOworICAgICAgICAgIG1hdGNo
JDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIGNvbnN0b3AobGl0KSArICgiICIgKyBWYWx1
ZXMuc3RyaW5nX29mX3ZhbHVlKGxpdFsvKiBpdCAqLzFdKSksCisgICAgICAgICAgICAvKiBbXSAq
LzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxNiA6IAorICAg
ICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKHRlc3Rv
cCQyLCBtYXRjaFswXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxNyA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0
dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKHJlbG9wJDIsIG1hdGNoWzBdKSwKKyAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDE4IDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAg
Q3VycnkuXzEodW5vcCQyLCBtYXRjaFswXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxOSA6IAorICAgICAgICAgIG1h
dGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKGJpbm9wJDIsIG1hdGNo
WzBdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDIwIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWwor
ICAgICAgICAgICAgQ3VycnkuXzEoY3Z0b3AkMiwgbWF0Y2hbMF0pLAorICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAg
fQorICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgIG1hdGNoJDFb
MF0sCisgICAgICAgICAgICBtYXRjaCQxWzFdCisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9u
IGZ1bmNfd2l0aF9uYW1lKG5hbWUsIGYpIHsKKyAgdmFyIG1hdGNoID0gZlsvKiBpdCAqLzFdOwor
ICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICJmdW5jIiArIG5h
bWUsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdCgvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgInR5cGUg
IiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbLyogZnR5cGUgKi8wXVsvKiBpdCAq
LzFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAg
ICAgXSksCisgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICBdLCBQ
ZXJ2YXNpdmVzLiRhdChkZWNscygibG9jYWwiLCBtYXRjaFsvKiBsb2NhbHMgKi8xXSksIExpc3Qu
bWFwKGluc3RyLCBtYXRjaFsvKiBib2R5ICovMl0pKSkKKyAgICAgICAgICBdKTsKK30KKworZnVu
Y3Rpb24gZnVuYyhmKSB7CisgIHJldHVybiBmdW5jX3dpdGhfbmFtZSgiIiwgZik7Cit9CisKK2Z1
bmN0aW9uIHN0YXJ0KHgpIHsKKyAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAg
ICAgICAgICAic3RhcnQgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgeFsvKiBpdCAqLzFd
KSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiB0
YWJsZShvZmYsIGksIHRhYikgeworICB2YXIgbWF0Y2ggPSB0YWJbLyogaXQgKi8xXTsKKyAgdmFy
IG1hdGNoJDEgPSBtYXRjaFsvKiB0dHlwZSAqLzBdOworICByZXR1cm4gLyogTm9kZSAqL0Jsb2Nr
Ll9fKDEsIFsKKyAgICAgICAgICAgICJ0YWJsZSAkIiArIChDdXJyeS5fMShJMzIudG9fc3RyaW5n
X3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgb2ZmICsgaSB8IDApKSArICgiICIgKyBsaW1pdHMo
STMyLnRvX3N0cmluZ191LCBtYXRjaCQxWzBdKSkpLAorICAgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbVHlwZXMuc3RyaW5nX29mX2VsZW1f
dHlwZShtYXRjaCQxWzFdKV0pLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
IF0KKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gbWVtb3J5KG9mZiwgaSwgbWVtKSB7Cisg
IHZhciBtYXRjaCA9IG1lbVsvKiBpdCAqLzFdOworICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9f
KDEsIFsKKyAgICAgICAgICAgICJtZW1vcnkgJCIgKyAoQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191
LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIG9mZiArIGkgfCAwKSkgKyAoIiAiICsgbGltaXRzKEkz
Mi50b19zdHJpbmdfdSwgbWF0Y2hbLyogbXR5cGUgKi8wXVswXSkpKSwKKyAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBzZWdtZW50KGhlYWQsIGRhdCwg
c2VnKSB7CisgIHZhciBtYXRjaCA9IHNlZ1svKiBpdCAqLzFdOworICByZXR1cm4gLyogTm9kZSAq
L0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgIGhlYWQsCisgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtDdXJyeS5fMShJMzIudG9fc3Ry
aW5nX3UsIG1hdGNoWy8qIGluZGV4ICovMF1bLyogaXQgKi8xXSldKSwKKyAgICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgICAgLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgIm9mZnNldCIsCisgICAgICAgICAgICAgICAgICAgIExpc3QubWFwKGlu
c3RyLCBtYXRjaFsvKiBvZmZzZXQgKi8xXVsvKiBpdCAqLzFdKQorICAgICAgICAgICAgICAgICAg
XSksCisgICAgICAgICAgICAgICAgQ3VycnkuXzEoZGF0LCBtYXRjaFsvKiBpbml0ICovMl0pCisg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0KKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rp
b24gZWxlbXMoc2VnKSB7CisgIHJldHVybiBzZWdtZW50KCJlbGVtIiwgZnVuY3Rpb24gKHBhcmFt
KSB7CisgICAgICAgICAgICAgIHJldHVybiBMaXN0Lm1hcChmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEF0b20gKi9CbG9jay5fXygwLCBbQ3Vy
cnkuXzEoSTMyLnRvX3N0cmluZ191LCBwYXJhbVsvKiBpdCAqLzFdKV0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgc2VnKTsKK30KKworZnVuY3Rp
b24gZGF0YShzZWcpIHsKKyAgcmV0dXJuIHNlZ21lbnQoImRhdGEiLCBicmVha19ieXRlcywgc2Vn
KTsKK30KKworZnVuY3Rpb24gdHlwZWRlZihpLCB0KSB7CisgIHJldHVybiAvKiBOb2RlICovQmxv
Y2suX18oMSwgWworICAgICAgICAgICAgInR5cGUgJCIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5n
X3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgaSkpLAorICAgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAgIGZ1bmNfdHlwZSh0KSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgICBdCisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGltcG9ydF9raW5kKGksIGsp
IHsKKyAgdmFyIG1hdGNoID0ga1svKiBpdCAqLzFdOworICBzd2l0Y2ggKG1hdGNoLnRhZyB8IDAp
IHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBb
CisgICAgICAgICAgICAgICAgICAiZnVuYyAkIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwg
Q3VycnkuXzEoSTMyLm9mX2ludF91LCBpKSksCisgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJ0eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW0N1cnJ5Ll8x
KEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSldKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF0pOworICAgIGNhc2UgMSA6IAorICAgICAg
ICByZXR1cm4gdGFibGUoMCwgaSwgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bLyogdHR5cGUg
Ki9tYXRjaFswXV0sIGtbLyogYXQgKi8wXSkpOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1
cm4gbWVtb3J5KDAsIGksIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWy8qIG10eXBlICovbWF0
Y2hbMF1dLCBrWy8qIGF0ICovMF0pKTsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAgcmV0dXJuIC8q
IE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAiZ2xvYmFsICQiICsgQ3Vy
cnkuXzEoSTMyLnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIGkpKSwKKyAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICBnbG9iYWxfdHlwZSht
YXRjaFswXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgIF0pOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uICQkaW1w
b3J0KGksIGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV07CisgIHJldHVybiAvKiBO
b2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgImltcG9ydCIsCisgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0
aChhZGRfY2hhciwgbWF0Y2hbLyogbW9kdWxlX25hbWUgKi8wXSldKSwKKyAgICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdf
d2l0aChhZGRfY2hhciwgbWF0Y2hbLyogaXRlbV9uYW1lICovMV0pXSksCisgICAgICAgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBpbXBvcnRfa2luZChpLCBtYXRjaFsvKiBp
a2luZCAqLzJdKSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXQorICAgICAgICAgIF0pOworfQorCitm
dW5jdGlvbiBleHBvcnRfa2luZChrKSB7CisgIHZhciBtYXRjaCA9IGtbLyogaXQgKi8xXTsKKyAg
c3dpdGNoIChtYXRjaCkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gImZ1bmMiOwor
ICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gInRhYmxlIjsKKyAgICBjYXNlIDIgOiAKKyAg
ICAgICAgcmV0dXJuICJtZW1vcnkiOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gImds
b2JhbCI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gJCRleHBvcnQoZXgpIHsKKyAgdmFyIG1h
dGNoID0gZXhbLyogaXQgKi8xXTsKKyAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisg
ICAgICAgICAgICAiZXhwb3J0IiwKKyAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFkZF9jaGFyLCBtYXRjaFsvKiBu
YW1lICovMF0pXSksCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIC8q
IE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgIGV4cG9ydF9raW5kKG1h
dGNoWy8qIGVraW5kICovMV0pLAorICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW0N1cnJ5Ll8xKEkzMi50b19z
dHJpbmdfdSwgbWF0Y2hbLyogaXRlbSAqLzJdWy8qIGl0ICovMV0pXSksCisgICAgICAgICAgICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICAgIF0pLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICBdCisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIHZhcl9vcHQocGFyYW0pIHsK
KyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuICIgIiArIHBhcmFtWzBdWy8qIGl0ICovMV07Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuICIiOworICB9Cit9CisKK2Z1bmN0aW9uIGlzX2Z1bmNf
aW1wb3J0KGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV1bLyogaWtpbmQgKi8yXVsv
KiBpdCAqLzFdOworICBpZiAobWF0Y2gudGFnKSB7CisgICAgcmV0dXJuIC8qIGZhbHNlICovMDsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgIH0KK30KKworZnVuY3Rp
b24gaXNfdGFibGVfaW1wb3J0KGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV1bLyog
aWtpbmQgKi8yXVsvKiBpdCAqLzFdOworICBpZiAobWF0Y2gudGFnID09PSAxKSB7CisgICAgcmV0
dXJuIC8qIHRydWUgKi8xOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7
CisgIH0KK30KKworZnVuY3Rpb24gaXNfbWVtb3J5X2ltcG9ydChpbSkgeworICB2YXIgbWF0Y2gg
PSBpbVsvKiBpdCAqLzFdWy8qIGlraW5kICovMl1bLyogaXQgKi8xXTsKKyAgaWYgKG1hdGNoLnRh
ZyA9PT0gMikgeworICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgfQorICBlbHNlIHsKKyAgICBy
ZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGlzX2dsb2JhbF9pbXBvcnQo
aW0pIHsKKyAgdmFyIG1hdGNoID0gaW1bLyogaXQgKi8xXVsvKiBpa2luZCAqLzJdWy8qIGl0ICov
MV07CisgIGlmIChtYXRjaC50YWcgPT09IDMpIHsKKyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgfQorfQorCitmdW5jdGlv
biBtb2R1bGVfd2l0aF92YXJfb3B0KHhfb3B0LCBtKSB7CisgIHZhciBmdW5jX2ltcG9ydHMgPSBM
aXN0LmZpbHRlcihpc19mdW5jX2ltcG9ydCkobVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84XSk7
CisgIHZhciB0YWJsZV9pbXBvcnRzID0gTGlzdC5maWx0ZXIoaXNfdGFibGVfaW1wb3J0KShtWy8q
IGl0ICovMV1bLyogaW1wb3J0cyAqLzhdKTsKKyAgdmFyIG1lbW9yeV9pbXBvcnRzID0gTGlzdC5m
aWx0ZXIoaXNfbWVtb3J5X2ltcG9ydCkobVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84XSk7Cisg
IHZhciBnbG9iYWxfaW1wb3J0cyA9IExpc3QuZmlsdGVyKGlzX2dsb2JhbF9pbXBvcnQpKG1bLyog
aXQgKi8xXVsvKiBpbXBvcnRzICovOF0pOworICB2YXIgcGFydGlhbF9hcmcgPSBMaXN0Lmxlbmd0
aCh0YWJsZV9pbXBvcnRzKTsKKyAgdmFyIGYgPSBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEpIHsK
KyAgICByZXR1cm4gdGFibGUocGFydGlhbF9hcmcsIHBhcmFtLCBwYXJhbSQxKTsKKyAgfTsKKyAg
dmFyIHBhcnRpYWxfYXJnJDEgPSBMaXN0Lmxlbmd0aChtZW1vcnlfaW1wb3J0cyk7CisgIHZhciBm
JDEgPSBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEpIHsKKyAgICByZXR1cm4gbWVtb3J5KHBhcnRp
YWxfYXJnJDEsIHBhcmFtLCBwYXJhbSQxKTsKKyAgfTsKKyAgdmFyIHBhcnRpYWxfYXJnJDIgPSBM
aXN0Lmxlbmd0aChnbG9iYWxfaW1wb3J0cyk7CisgIHZhciBmJDIgPSBmdW5jdGlvbiAocGFyYW0s
IHBhcmFtJDEpIHsKKyAgICB2YXIgb2ZmID0gcGFydGlhbF9hcmckMjsKKyAgICB2YXIgaSA9IHBh
cmFtOworICAgIHZhciBnID0gcGFyYW0kMTsKKyAgICB2YXIgbWF0Y2ggPSBnWy8qIGl0ICovMV07
CisgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICJnbG9i
YWwgJCIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwg
b2ZmICsgaSB8IDApKSwKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
Z2xvYmFsX3R5cGUobWF0Y2hbLyogZ3R5cGUgKi8wXSksCisgICAgICAgICAgICAgICAgTGlzdC5t
YXAoaW5zdHIsIG1hdGNoWy8qIHZhbHVlICovMV1bLyogaXQgKi8xXSkKKyAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgXSk7CisgIH07CisgIHZhciBwYXJ0aWFsX2FyZyQzID0gTGlzdC5sZW5n
dGgoZnVuY19pbXBvcnRzKTsKKyAgdmFyIGYkMyA9IGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSkg
eworICAgIHZhciBvZmYgPSBwYXJ0aWFsX2FyZyQzOworICAgIHZhciBpID0gcGFyYW07CisgICAg
dmFyIGYkNCA9IHBhcmFtJDE7CisgICAgcmV0dXJuIGZ1bmNfd2l0aF9uYW1lKCIgJCIgKyBDdXJy
eS5fMShJMzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgb2ZmICsgaSB8IDAp
KSwgZiQ0KTsKKyAgfTsKKyAgdmFyIHhzID0gbGlzdF9vZl9vcHQobVsvKiBpdCAqLzFdWy8qIHN0
YXJ0ICovNV0pOworICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAg
ICJtb2R1bGUiICsgdmFyX29wdCh4X29wdCksCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChM
aXN0Lm1hcGkodHlwZWRlZiwgbVsvKiBpdCAqLzFdWy8qIHR5cGVzICovMF0pLCBQZXJ2YXNpdmVz
LiRhdChMaXN0Lm1hcGkoJCRpbXBvcnQsIHRhYmxlX2ltcG9ydHMpLCBQZXJ2YXNpdmVzLiRhdChM
aXN0Lm1hcGkoJCRpbXBvcnQsIG1lbW9yeV9pbXBvcnRzKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5t
YXBpKCQkaW1wb3J0LCBnbG9iYWxfaW1wb3J0cyksIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFwaSgk
JGltcG9ydCwgZnVuY19pbXBvcnRzKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5tYXBpKGYsIG1bLyog
aXQgKi8xXVsvKiB0YWJsZXMgKi8yXSksIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFwaShmJDEsIG1b
LyogaXQgKi8xXVsvKiBtZW1vcmllcyAqLzNdKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5tYXBpKGYk
MiwgbVsvKiBpdCAqLzFdWy8qIGdsb2JhbHMgKi8xXSksIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFw
aShmJDMsIG1bLyogaXQgKi8xXVsvKiBmdW5jcyAqLzRdKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5t
YXAoJCRleHBvcnQsIG1bLyogaXQgKi8xXVsvKiBleHBvcnRzICovOV0pLCBQZXJ2YXNpdmVzLiRh
dChMaXN0Lm1hcChzdGFydCwgeHMpLCBQZXJ2YXNpdmVzLiRhdChMaXN0Lm1hcChlbGVtcywgbVsv
KiBpdCAqLzFdWy8qIGVsZW1zICovNl0pLCBMaXN0Lm1hcChkYXRhLCBtWy8qIGl0ICovMV1bLyog
ZGF0YSAqLzddKSkpKSkpKSkpKSkpKQorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBtb2R1
bGVfKHBhcmFtKSB7CisgIHJldHVybiBtb2R1bGVfd2l0aF92YXJfb3B0KC8qIE5vbmUgKi8wLCBw
YXJhbSk7Cit9CisKK2Z1bmN0aW9uIGxpdGVyYWwobGl0KSB7CisgIHZhciBtYXRjaCA9IGxpdFsv
KiBpdCAqLzFdOworICBzd2l0Y2ggKG1hdGNoLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAg
ICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAi
aTMyLmNvbnN0ICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3MsIG1hdGNoWzBdKSwKKyAgICAg
ICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgIF0pOworICAgIGNhc2UgMSA6
IAorICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAg
ICAgICJpNjQuY29uc3QgIiArIEN1cnJ5Ll8xKEk2NC50b19zdHJpbmdfcywgbWF0Y2hbMF0pLAor
ICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSk7CisgICAgY2Fz
ZSAyIDogCisgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAg
ICAgICAgICAgImYzMi5jb25zdCAiICsgQ3VycnkuXzEoRjMyLnRvX3N0cmluZywgbWF0Y2hbMF0p
LAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSk7CisgICAg
Y2FzZSAzIDogCisgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAg
ICAgICAgICAgICAgImY2NC5jb25zdCAiICsgQ3VycnkuXzEoRjY0LnRvX3N0cmluZywgbWF0Y2hb
MF0pLAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSk7Cisg
ICAgCisgIH0KK30KKworZnVuY3Rpb24gZGVmaW5pdGlvbihtb2RlLCB4X29wdCwgZGVmKSB7Cisg
IHZhciBtYXRjaCA9IGRlZlsvKiBpdCAqLzFdOworICB2YXIgZXhpdCA9IDA7CisgIGV4aXQgPSBt
b2RlICE9PSA1NjQxNDYyMDkgJiYgIShtb2RlID49IDk4MzE2NzA4OSAmJiBtYXRjaC50YWcpID8g
MSA6IDI7CisgIHN3aXRjaCAoZXhpdCkgeworICAgIGNhc2UgMSA6IAorICAgICAgICB2YXIgbWF0
Y2gkMSA9IGRlZlsvKiBpdCAqLzFdOworICAgICAgICB2YXIgbTsKKyAgICAgICAgbSA9IG1hdGNo
JDEudGFnID8gRGVjb2RlLmRlY29kZSgiIiwgbWF0Y2gkMVsxXSkgOiBtYXRjaCQxWzBdOworICAg
ICAgICByZXR1cm4gbW9kdWxlX3dpdGhfdmFyX29wdCh4X29wdCwgbSk7CisgICAgY2FzZSAyIDog
CisgICAgICAgIHZhciBtYXRjaCQyID0gZGVmWy8qIGl0ICovMV07CisgICAgICAgIHZhciBiczsK
KyAgICAgICAgYnMgPSBtYXRjaCQyLnRhZyA/IG1hdGNoJDJbMV0gOiBFbmNvZGUuZW5jb2RlKG1h
dGNoJDJbMF0pOworICAgICAgICB2YXIgeF9vcHQkMSA9IHhfb3B0OworICAgICAgICB2YXIgYnMk
MSA9IGJzOworICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAg
ICAgICAgICAgICJtb2R1bGUiICsgdmFyX29wdCh4X29wdCQxKSwKKyAgICAgICAgICAgICAgICAg
IGJyZWFrX2J5dGVzKGJzJDEpCisgICAgICAgICAgICAgICAgXSk7CisgICAgCisgIH0KK30KKwor
ZnVuY3Rpb24gYWNjZXNzKHhfb3B0LCBuYW1lKSB7CisgIHJldHVybiAkJFN0cmluZy5jb25jYXQo
IiAiLCAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgdmFyX29wdCh4X29wdCksCisgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIHN0cmluZ193aXRoKGFkZF9jaGFyLCBuYW1l
KSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgXSk7Cit9CisKK2Z1bmN0aW9uIGFjdGlvbihhY3QpIHsKKyAgdmFyIG1hdGNoID0gYWN0Wy8q
IGl0ICovMV07CisgIGlmIChtYXRjaC50YWcpIHsKKyAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2Nr
Ll9fKDEsIFsKKyAgICAgICAgICAgICAgImdldCIgKyBhY2Nlc3MobWF0Y2hbMF0sIG1hdGNoWzFd
KSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdKTsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgImlu
dm9rZSIgKyBhY2Nlc3MobWF0Y2hbMF0sIG1hdGNoWzFdKSwKKyAgICAgICAgICAgICAgTGlzdC5t
YXAobGl0ZXJhbCwgbWF0Y2hbMl0pCisgICAgICAgICAgICBdKTsKKyAgfQorfQorCitmdW5jdGlv
biBzY3JpcHQobW9kZSwgc2NyKSB7CisgIHJldHVybiBMaXN0Lm1hcChmdW5jdGlvbiAocGFyYW0p
IHsKKyAgICAgICAgICAgICAgdmFyIG1vZGUkMSA9IG1vZGU7CisgICAgICAgICAgICAgIHZhciBj
bWQgPSBwYXJhbTsKKyAgICAgICAgICAgICAgdmFyIG1hdGNoID0gY21kWy8qIGl0ICovMV07Cisg
ICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gudGFnIHwgMCkgeworICAgICAgICAgICAgICAgIGNh
c2UgMCA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5pdGlvbihtb2RlJDEsIG1h
dGNoWzBdLCBtYXRjaFsxXSk7CisgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInJlZ2lzdGVyICIgKyAoc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNo
WzBdKSArIHZhcl9vcHQobWF0Y2hbMV0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0aW9uKG1hdGNoWzBd
KTsKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1v
ZGUkMiA9IG1vZGUkMTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGFzcyA9IG1hdGNoWzBdOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IGFzc1svKiBpdCAqLzFdOworICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDEudGFnIHwgMCkgeworICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9k
ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJh
c3NlcnRfbWFsZm9ybWVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9u
KC8qIE9yaWdpbmFsICovOTgzMTY3MDg5LCAvKiBOb25lICovMCwgbWF0Y2gkMVswXSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5n
X3dpdGgoYWRkX2NoYXIsIG1hdGNoJDFbMV0pXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5f
XygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X2ludmFs
aWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24obW9kZSQyLCAvKiBO
b25lICovMCwgbWF0Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoJDFbMV0pXSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsK
KyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiYXNzZXJ0X3NvZnRfaW52YWxpZCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmaW5pdGlvbihtb2RlJDIsIC8qIE5vbmUgKi8wLCBtYXRjaCQxWzBdKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJp
bmdfd2l0aChhZGRfY2hhciwgbWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2Nr
Ll9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdW5s
aW5rYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbihtb2RlJDIs
IC8qIE5vbmUgKi8wLCBtYXRjaCQxWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0aChhZGRfY2hhciwgbWF0Y2gkMVsx
XSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdHJhcCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmaW5pdGlvbihtb2RlJDIsIC8qIE5vbmUgKi8wLCBtYXRjaCQxWzBdKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdf
d2l0aChhZGRfY2hhciwgbWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
NSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9f
KDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfcmV0dXJu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24obWF0Y2gkMVswXSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwKGxpdGVyYWwsIG1hdGNo
JDFbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2
IDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18o
MSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF9yZXR1cm5f
bmFuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24obWF0Y2gkMVswXSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdHJhcCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uKG1hdGNoJDFbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFkZF9jaGFyLCBtYXRj
aCQxWzFdKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtd
ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF9leGhhdXN0aW9uIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb24obWF0Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIs
IG1hdGNoJDFbMV0pXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVj
L2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvYXJyYW5nZS5tbCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIHNjcik7Cit9CisK
K2V4cG9ydHMuaW5zdHIgICA9IGluc3RyOworZXhwb3J0cy5mdW5jICAgID0gZnVuYzsKK2V4cG9y
dHMubW9kdWxlXyA9IG1vZHVsZV87CitleHBvcnRzLnNjcmlwdCAgPSBzY3JpcHQ7CisvKiBGMzIg
Tm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBhcnJhbmdlLmpzIC8vLy8vLy8v
CivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2FycmF5J10g
PSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBv
ZiBhcnJheS5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9hcnJheSAgICAgICAgICAg
ICAgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgICAgICAg
ICA9IHJlcXVpcmUoIi4vY2FtbF9leGNlcHRpb25zIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9u
IGluaXQobCwgZikgeworICBpZiAobCkgeworICAgIGlmIChsIDwgMCkgeworICAgICAgdGhyb3cg
WworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwK
KyAgICAgICAgICAgICJBcnJheS5pbml0IgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdmFyIHJlcyA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QobCwgQ3VycnkuXzEo
ZiwgMCkpOworICAgICAgZm9yKHZhciBpID0gMSAsaV9maW5pc2ggPSBsIC0gMSB8IDA7IGkgPD0g
aV9maW5pc2g7ICsraSl7CisgICAgICAgIHJlc1tpXSA9IEN1cnJ5Ll8xKGYsIGkpOworICAgICAg
fQorICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8q
IGFycmF5ICovW107CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9tYXRyaXgoc3gsIHN5LCBpbml0
KSB7CisgIHZhciByZXMgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KHN4LCAvKiBhcnJheSAq
L1tdKTsKKyAgZm9yKHZhciB4ID0gMCAseF9maW5pc2ggPSBzeCAtIDEgfCAwOyB4IDw9IHhfZmlu
aXNoOyArK3gpeworICAgIHJlc1t4XSA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3Qoc3ksIGlu
aXQpOworICB9CisgIHJldHVybiByZXM7Cit9CisKK2Z1bmN0aW9uIGNvcHkoYSkgeworICB2YXIg
bCA9IGEubGVuZ3RoOworICBpZiAobCkgeworICAgIHJldHVybiBDYW1sX2FycmF5LmNhbWxfYXJy
YXlfc3ViKGEsIDAsIGwpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBhcnJheSAqL1td
OworICB9Cit9CisKK2Z1bmN0aW9uIGFwcGVuZChhMSwgYTIpIHsKKyAgdmFyIGwxID0gYTEubGVu
Z3RoOworICBpZiAobDEpIHsKKyAgICBpZiAoYTIubGVuZ3RoKSB7CisgICAgICByZXR1cm4gYTEu
Y29uY2F0KGEyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gQ2FtbF9hcnJheS5j
YW1sX2FycmF5X3N1YihhMSwgMCwgbDEpOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gY29weShhMik7CisgIH0KK30KKworZnVuY3Rpb24gc3ViKGEsIG9mcywgbGVuKSB7CisgIGlm
IChsZW4gPCAwIHx8IG9mcyA+IChhLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWwor
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgIkFycmF5LnN1YiIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
Q2FtbF9hcnJheS5jYW1sX2FycmF5X3N1YihhLCBvZnMsIGxlbik7CisgIH0KK30KKworZnVuY3Rp
b24gZmlsbChhLCBvZnMsIGxlbiwgdikgeworICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9m
cyA+IChhLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkFycmF5LmZp
bGwiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgZm9yKHZhciBpID0gb2ZzICxpX2Zp
bmlzaCA9IChvZnMgKyBsZW4gfCAwKSAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAg
ICAgYVtpXSA9IHY7CisgICAgfQorICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKworZnVu
Y3Rpb24gYmxpdChhMSwgb2ZzMSwgYTIsIG9mczIsIGxlbikgeworICBpZiAobGVuIDwgMCB8fCBv
ZnMxIDwgMCB8fCBvZnMxID4gKGExLmxlbmd0aCAtIGxlbiB8IDApIHx8IG9mczIgPCAwIHx8IG9m
czIgPiAoYTIubGVuZ3RoIC0gbGVuIHwgMCkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQXJyYXku
YmxpdCIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2FtbF9hcnJheS5j
YW1sX2FycmF5X2JsaXQoYTEsIG9mczEsIGEyLCBvZnMyLCBsZW4pOworICB9Cit9CisKK2Z1bmN0
aW9uIGl0ZXIoZiwgYSkgeworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGEubGVuZ3RoIC0g
MSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgQ3VycnkuXzEoZiwgYVtpXSk7CisgIH0K
KyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gbWFwKGYsIGEpIHsKKyAgdmFyIGwg
PSBhLmxlbmd0aDsKKyAgaWYgKGwpIHsKKyAgICB2YXIgciA9IENhbWxfYXJyYXkuY2FtbF9tYWtl
X3ZlY3QobCwgQ3VycnkuXzEoZiwgYVswXSkpOworICAgIGZvcih2YXIgaSA9IDEgLGlfZmluaXNo
ID0gbCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgICAgcltpXSA9IEN1cnJ5Ll8x
KGYsIGFbaV0pOworICAgIH0KKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gLyogYXJyYXkgKi9bXTsKKyAgfQorfQorCitmdW5jdGlvbiBpdGVyaShmLCBhKSB7CisgIGZv
cih2YXIgaSA9IDAgLGlfZmluaXNoID0gYS5sZW5ndGggLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsg
KytpKXsKKyAgICBDdXJyeS5fMihmLCBpLCBhW2ldKTsKKyAgfQorICByZXR1cm4gLyogKCkgKi8w
OworfQorCitmdW5jdGlvbiBtYXBpKGYsIGEpIHsKKyAgdmFyIGwgPSBhLmxlbmd0aDsKKyAgaWYg
KGwpIHsKKyAgICB2YXIgciA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QobCwgQ3VycnkuXzIo
ZiwgMCwgYVswXSkpOworICAgIGZvcih2YXIgaSA9IDEgLGlfZmluaXNoID0gbCAtIDEgfCAwOyBp
IDw9IGlfZmluaXNoOyArK2kpeworICAgICAgcltpXSA9IEN1cnJ5Ll8yKGYsIGksIGFbaV0pOwor
ICAgIH0KKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogYXJyYXkg
Ki9bXTsKKyAgfQorfQorCitmdW5jdGlvbiB0b19saXN0KGEpIHsKKyAgdmFyIF9pID0gYS5sZW5n
dGggLSAxIHwgMDsKKyAgdmFyIF9yZXMgPSAvKiBbXSAqLzA7CisgIHdoaWxlKHRydWUpIHsKKyAg
ICB2YXIgcmVzID0gX3JlczsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChpIDwgMCkgeworICAg
ICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBfcmVzID0gLyogOjogKi9b
CisgICAgICAgIGFbaV0sCisgICAgICAgIHJlcworICAgICAgXTsKKyAgICAgIF9pID0gaSAtIDEg
fCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICB9OworfQorCitmdW5jdGlv
biBsaXN0X2xlbmd0aChfYWNjdSwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIg
cGFyYW0gPSBfcGFyYW07CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAocGFyYW0pIHsK
KyAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgX2FjY3UgPSBhY2N1ICsgMSB8IDA7Cisg
ICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
YWNjdTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG9mX2xpc3QobCkgeworICBpZiAobCkg
eworICAgIHZhciBhID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChsaXN0X2xlbmd0aCgwLCBs
KSwgbFswXSk7CisgICAgdmFyIF9pID0gMTsKKyAgICB2YXIgX3BhcmFtID0gbFsxXTsKKyAgICB3
aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICB2YXIgaSA9IF9p
OworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIGFbaV0gPSBwYXJhbVswXTsKKyAgICAgICAg
X3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICBjb250
aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBh
OworICAgICAgfQorICAgIH07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIGFycmF5ICov
W107CisgIH0KK30KKworZnVuY3Rpb24gZm9sZF9sZWZ0KGYsIHgsIGEpIHsKKyAgdmFyIHIgPSB4
OworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGEubGVuZ3RoIC0gMSB8IDA7IGkgPD0gaV9m
aW5pc2g7ICsraSl7CisgICAgciA9IEN1cnJ5Ll8yKGYsIHIsIGFbaV0pOworICB9CisgIHJldHVy
biByOworfQorCitmdW5jdGlvbiBmb2xkX3JpZ2h0KGYsIGEsIHgpIHsKKyAgdmFyIHIgPSB4Owor
ICBmb3IodmFyIGkgPSBhLmxlbmd0aCAtIDEgfCAwOyBpID49IDA7IC0taSl7CisgICAgciA9IEN1
cnJ5Ll8yKGYsIGFbaV0sIHIpOworICB9CisgIHJldHVybiByOworfQorCit2YXIgQm90dG9tID0g
Q2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiQXJyYXkuQm90dG9tIik7CisKK2Z1bmN0aW9uIHNvcnQo
Y21wLCBhKSB7CisgIHZhciBtYXhzb24gPSBmdW5jdGlvbiAobCwgaSkgeworICAgIHZhciBpMzEg
PSAoKGkgKyBpIHwgMCkgKyBpIHwgMCkgKyAxIHwgMDsKKyAgICB2YXIgeCA9IGkzMTsKKyAgICBp
ZiAoKGkzMSArIDIgfCAwKSA8IGwpIHsKKyAgICAgIGlmIChDdXJyeS5fMihjbXAsIGFbaTMxXSwg
YVtpMzEgKyAxIHwgMF0pIDwgMCkgeworICAgICAgICB4ID0gaTMxICsgMSB8IDA7CisgICAgICB9
CisgICAgICBpZiAoQ3VycnkuXzIoY21wLCBhW3hdLCBhW2kzMSArIDIgfCAwXSkgPCAwKSB7Cisg
ICAgICAgIHggPSBpMzEgKyAyIHwgMDsKKyAgICAgIH0KKyAgICAgIHJldHVybiB4OworICAgIH0K
KyAgICBlbHNlIGlmICgoaTMxICsgMSB8IDApIDwgbCAmJiBDdXJyeS5fMihjbXAsIGFbaTMxXSwg
YVtpMzEgKyAxIHwgMF0pIDwgMCkgeworICAgICAgcmV0dXJuIGkzMSArIDEgfCAwOworICAgIH0K
KyAgICBlbHNlIGlmIChpMzEgPCBsKSB7CisgICAgICByZXR1cm4gaTMxOworICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIEJvdHRvbSwKKyAgICAgICAgICAgIGkK
KyAgICAgICAgICBdOworICAgIH0KKyAgfTsKKyAgdmFyIHRyaWNrbGUgPSBmdW5jdGlvbiAobCwg
aSwgZSkgeworICAgIHRyeSB7CisgICAgICB2YXIgbCQxID0gbDsKKyAgICAgIHZhciBfaSA9IGk7
CisgICAgICB2YXIgZSQxID0gZTsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFyIGkk
MSA9IF9pOworICAgICAgICB2YXIgaiA9IG1heHNvbihsJDEsIGkkMSk7CisgICAgICAgIGlmIChD
dXJyeS5fMihjbXAsIGFbal0sIGUkMSkgPiAwKSB7CisgICAgICAgICAgYVtpJDFdID0gYVtqXTsK
KyAgICAgICAgICBfaSA9IGo7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGFbaSQxXSA9IGUkMTsKKyAgICAgICAg
ICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAgICBjYXRj
aCAoZXhuKXsKKyAgICAgIGlmIChleG5bMF0gPT09IEJvdHRvbSkgeworICAgICAgICBhW2V4blsx
XV0gPSBlOworICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07CisgIHZhciBidWJibGUg
PSBmdW5jdGlvbiAobCwgaSkgeworICAgIHRyeSB7CisgICAgICB2YXIgbCQxID0gbDsKKyAgICAg
IHZhciBfaSA9IGk7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHZhciBpJDEgPSBfaTsK
KyAgICAgICAgdmFyIGogPSBtYXhzb24obCQxLCBpJDEpOworICAgICAgICBhW2kkMV0gPSBhW2pd
OworICAgICAgICBfaSA9IGo7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9
OworICAgIH0KKyAgICBjYXRjaCAoZXhuKXsKKyAgICAgIGlmIChleG5bMF0gPT09IEJvdHRvbSkg
eworICAgICAgICByZXR1cm4gZXhuWzFdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07CisgIHZhciB0cmlja2xldXAgPSBmdW5j
dGlvbiAoX2ksIGUpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgaSA9IF9pOworICAg
ICAgdmFyIGZhdGhlciA9IChpIC0gMSB8IDApIC8gMyB8IDA7CisgICAgICBpZiAoaSA9PT0gZmF0
aGVyKSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAi
YXJyYXkubWwiLAorICAgICAgICAgICAgICAgIDE2OCwKKyAgICAgICAgICAgICAgICA0CisgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBpZiAoQ3VycnkuXzIo
Y21wLCBhW2ZhdGhlcl0sIGUpIDwgMCkgeworICAgICAgICBhW2ldID0gYVtmYXRoZXJdOworICAg
ICAgICBpZiAoZmF0aGVyID4gMCkgeworICAgICAgICAgIF9pID0gZmF0aGVyOworICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICBhWzBdID0gZTsKKyAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9Cisg
ICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgYVtpXSA9IGU7CisgICAgICAgIHJldHVybiAv
KiAoKSAqLzA7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIGwgPSBhLmxlbmd0aDsKKyAg
Zm9yKHZhciBpID0gKChsICsgMSB8IDApIC8gMyB8IDApIC0gMSB8IDA7IGkgPj0gMDsgLS1pKXsK
KyAgICB0cmlja2xlKGwsIGksIGFbaV0pOworICB9CisgIGZvcih2YXIgaSQxID0gbCAtIDEgfCAw
OyBpJDEgPj0gMjsgLS1pJDEpeworICAgIHZhciBlID0gYVtpJDFdOworICAgIGFbaSQxXSA9IGFb
MF07CisgICAgdHJpY2tsZXVwKGJ1YmJsZShpJDEsIDApLCBlKTsKKyAgfQorICBpZiAobCA+IDEp
IHsKKyAgICB2YXIgZSQxID0gYVsxXTsKKyAgICBhWzFdID0gYVswXTsKKyAgICBhWzBdID0gZSQx
OworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7Cisg
IH0KK30KKworZnVuY3Rpb24gc3RhYmxlX3NvcnQoY21wLCBhKSB7CisgIHZhciBtZXJnZSA9IGZ1
bmN0aW9uIChzcmMxb2ZzLCBzcmMxbGVuLCBzcmMyLCBzcmMyb2ZzLCBzcmMybGVuLCBkc3QsIGRz
dG9mcykgeworICAgIHZhciBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIHwgMDsKKyAgICB2YXIg
c3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiB8IDA7CisgICAgdmFyIF9pMSA9IHNyYzFvZnM7Cisg
ICAgdmFyIF9zMSA9IGFbc3JjMW9mc107CisgICAgdmFyIF9pMiA9IHNyYzJvZnM7CisgICAgdmFy
IF9zMiA9IHNyYzJbc3JjMm9mc107CisgICAgdmFyIF9kID0gZHN0b2ZzOworICAgIHdoaWxlKHRy
dWUpIHsKKyAgICAgIHZhciBkID0gX2Q7CisgICAgICB2YXIgczIgPSBfczI7CisgICAgICB2YXIg
aTIgPSBfaTI7CisgICAgICB2YXIgczEgPSBfczE7CisgICAgICB2YXIgaTEgPSBfaTE7CisgICAg
ICBpZiAoQ3VycnkuXzIoY21wLCBzMSwgczIpIDw9IDApIHsKKyAgICAgICAgZHN0W2RdID0gczE7
CisgICAgICAgIHZhciBpMSQxID0gaTEgKyAxIHwgMDsKKyAgICAgICAgaWYgKGkxJDEgPCBzcmMx
cikgeworICAgICAgICAgIF9kID0gZCArIDEgfCAwOworICAgICAgICAgIF9zMSA9IGFbaTEkMV07
CisgICAgICAgICAgX2kxID0gaTEkMTsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGJsaXQoc3JjMiwg
aTIsIGRzdCwgZCArIDEgfCAwLCBzcmMyciAtIGkyIHwgMCk7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIGVsc2UgeworICAgICAgICBkc3RbZF0gPSBzMjsKKyAgICAgICAgdmFyIGkyJDEgPSBp
MiArIDEgfCAwOworICAgICAgICBpZiAoaTIkMSA8IHNyYzJyKSB7CisgICAgICAgICAgX2QgPSBk
ICsgMSB8IDA7CisgICAgICAgICAgX3MyID0gc3JjMltpMiQxXTsKKyAgICAgICAgICBfaTIgPSBp
MiQxOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gYmxpdChhLCBpMSwgZHN0LCBkICsgMSB8IDAsIHNy
YzFyIC0gaTEgfCAwKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBp
c29ydHRvID0gZnVuY3Rpb24gKHNyY29mcywgZHN0LCBkc3RvZnMsIGxlbikgeworICAgIGZvcih2
YXIgaSA9IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7Cisg
ICAgICB2YXIgZSA9IGFbc3Jjb2ZzICsgaSB8IDBdOworICAgICAgdmFyIGogPSAoZHN0b2ZzICsg
aSB8IDApIC0gMSB8IDA7CisgICAgICB3aGlsZShqID49IGRzdG9mcyAmJiBDdXJyeS5fMihjbXAs
IGRzdFtqXSwgZSkgPiAwKSB7CisgICAgICAgIGRzdFtqICsgMSB8IDBdID0gZHN0W2pdOworICAg
ICAgICBqID0gaiAtIDEgfCAwOworICAgICAgfTsKKyAgICAgIGRzdFtqICsgMSB8IDBdID0gZTsK
KyAgICB9CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfTsKKyAgdmFyIHNvcnR0byA9IGZ1bmN0
aW9uIChzcmNvZnMsIGRzdCwgZHN0b2ZzLCBsZW4pIHsKKyAgICBpZiAobGVuIDw9IDUpIHsKKyAg
ICAgIHJldHVybiBpc29ydHRvKHNyY29mcywgZHN0LCBkc3RvZnMsIGxlbik7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgdmFyIGwxID0gbGVuIC8gMiB8IDA7CisgICAgICB2YXIgbDIgPSBsZW4g
LSBsMSB8IDA7CisgICAgICBzb3J0dG8oc3Jjb2ZzICsgbDEgfCAwLCBkc3QsIGRzdG9mcyArIGwx
IHwgMCwgbDIpOworICAgICAgc29ydHRvKHNyY29mcywgYSwgc3Jjb2ZzICsgbDIgfCAwLCBsMSk7
CisgICAgICByZXR1cm4gbWVyZ2Uoc3Jjb2ZzICsgbDIgfCAwLCBsMSwgZHN0LCBkc3RvZnMgKyBs
MSB8IDAsIGwyLCBkc3QsIGRzdG9mcyk7CisgICAgfQorICB9OworICB2YXIgbCA9IGEubGVuZ3Ro
OworICBpZiAobCA8PSA1KSB7CisgICAgcmV0dXJuIGlzb3J0dG8oMCwgYSwgMCwgbCk7CisgIH0K
KyAgZWxzZSB7CisgICAgdmFyIGwxID0gbCAvIDIgfCAwOworICAgIHZhciBsMiA9IGwgLSBsMSB8
IDA7CisgICAgdmFyIHQgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KGwyLCBhWzBdKTsKKyAg
ICBzb3J0dG8obDEsIHQsIDAsIGwyKTsKKyAgICBzb3J0dG8oMCwgYSwgbDIsIGwxKTsKKyAgICBy
ZXR1cm4gbWVyZ2UobDIsIGwxLCB0LCAwLCBsMiwgYSwgMCk7CisgIH0KK30KKwordmFyIGNyZWF0
ZV9tYXRyaXggPSBtYWtlX21hdHJpeDsKKwordmFyIGNvbmNhdCA9IENhbWxfYXJyYXkuY2FtbF9h
cnJheV9jb25jYXQ7CisKK3ZhciBmYXN0X3NvcnQgPSBzdGFibGVfc29ydDsKKworZXhwb3J0cy5p
bml0ICAgICAgICAgID0gaW5pdDsKK2V4cG9ydHMubWFrZV9tYXRyaXggICA9IG1ha2VfbWF0cml4
OworZXhwb3J0cy5jcmVhdGVfbWF0cml4ID0gY3JlYXRlX21hdHJpeDsKK2V4cG9ydHMuYXBwZW5k
ICAgICAgICA9IGFwcGVuZDsKK2V4cG9ydHMuY29uY2F0ICAgICAgICA9IGNvbmNhdDsKK2V4cG9y
dHMuc3ViICAgICAgICAgICA9IHN1YjsKK2V4cG9ydHMuY29weSAgICAgICAgICA9IGNvcHk7Citl
eHBvcnRzLmZpbGwgICAgICAgICAgPSBmaWxsOworZXhwb3J0cy5ibGl0ICAgICAgICAgID0gYmxp
dDsKK2V4cG9ydHMudG9fbGlzdCAgICAgICA9IHRvX2xpc3Q7CitleHBvcnRzLm9mX2xpc3QgICAg
ICAgPSBvZl9saXN0OworZXhwb3J0cy5pdGVyICAgICAgICAgID0gaXRlcjsKK2V4cG9ydHMubWFw
ICAgICAgICAgICA9IG1hcDsKK2V4cG9ydHMuaXRlcmkgICAgICAgICA9IGl0ZXJpOworZXhwb3J0
cy5tYXBpICAgICAgICAgID0gbWFwaTsKK2V4cG9ydHMuZm9sZF9sZWZ0ICAgICA9IGZvbGRfbGVm
dDsKK2V4cG9ydHMuZm9sZF9yaWdodCAgICA9IGZvbGRfcmlnaHQ7CitleHBvcnRzLnNvcnQgICAg
ICAgICAgPSBzb3J0OworZXhwb3J0cy5zdGFibGVfc29ydCAgID0gc3RhYmxlX3NvcnQ7CitleHBv
cnRzLmZhc3Rfc29ydCAgICAgPSBmYXN0X3NvcnQ7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8v
Ly8vLy8gZW5kIG9mIGFycmF5LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8Kg
IH07CisKKworICBfcmVnaXN0cnlbJ2FzdCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhw
b3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgYXN0LmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0
ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIExpYiAgICAgID0gcmVxdWlyZSgiLi9saWIiKTsKK3ZhciBC
bG9jayAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFyIEN1cnJ5
ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2YXIgQ2FtbF9vYmog
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9vYmoiKTsKKwordmFyIEludE9wID0g
LyogbW9kdWxlICovW107CisKK3ZhciBGbG9hdE9wID0gLyogbW9kdWxlICovW107CisKK2Z1bmN0
aW9uIGV4cG9ydF9raW5kX29mX2ltcG9ydF9raW5kKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0u
dGFnIHwgMCkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gLyogRnVuY0V4cG9ydCAq
LzA7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiBUYWJsZUV4cG9ydCAqLzE7Cisg
ICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiBNZW1vcnlFeHBvcnQgKi8yOworICAgIGNh
c2UgMyA6IAorICAgICAgICByZXR1cm4gLyogR2xvYmFsRXhwb3J0ICovMzsKKyAgICAKKyAgfQor
fQorCitmdW5jdGlvbiBpbXBvcnRfdHlwZShtLCBpbSkgeworICB2YXIgbWF0Y2ggPSBpbVsvKiBp
dCAqLzFdOworICB2YXIgbWF0Y2gkMSA9IG1hdGNoWy8qIGlraW5kICovMl1bLyogaXQgKi8xXTsK
KyAgc3dpdGNoIChtYXRjaCQxLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0
dXJuIC8qIEV4dGVybmFsRnVuY1R5cGUgKi9CbG9jay5fXygwLCBbQ3VycnkuXzIoTGliLkxpc3Qz
MlsvKiBudGggKi8xXSwgbVsvKiBpdCAqLzFdWy8qIHR5cGVzICovMF0sIG1hdGNoJDFbMF1bLyog
aXQgKi8xXSldKTsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsVGFi
bGVUeXBlICovQmxvY2suX18oMSwgW21hdGNoJDFbMF1dKTsKKyAgICBjYXNlIDIgOiAKKyAgICAg
ICAgcmV0dXJuIC8qIEV4dGVybmFsTWVtb3J5VHlwZSAqL0Jsb2NrLl9fKDIsIFttYXRjaCQxWzBd
XSk7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAvKiBFeHRlcm5hbEdsb2JhbFR5cGUg
Ki9CbG9jay5fXygzLCBbbWF0Y2gkMVswXV0pOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIGV4
cG9ydF90eXBlKG0sIGV4KSB7CisgIHZhciBtYXRjaCA9IGV4Wy8qIGl0ICovMV07CisgIHZhciBl
a2luZCA9IG1hdGNoWy8qIGVraW5kICovMV07CisgIHZhciBfaSA9IG1hdGNoWy8qIGl0ZW0gKi8y
XVsvKiBpdCAqLzFdOworICB2YXIgX3BhcmFtID0gbVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84
XTsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICB2YXIgaSA9
IF9pOworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGltcyA9IHBhcmFtWzFdOworICAgICAg
dmFyIGltID0gcGFyYW1bMF07CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChleHBvcnRf
a2luZF9vZl9pbXBvcnRfa2luZChpbVsvKiBpdCAqLzFdWy8qIGlraW5kICovMl1bLyogaXQgKi8x
XSksIGVraW5kWy8qIGl0ICovMV0pKSB7CisgICAgICAgIGlmIChpKSB7CisgICAgICAgICAgX3Bh
cmFtID0gaW1zOworICAgICAgICAgIF9pID0gaSAtIDEgfCAwOworICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gaW1wb3J0X3R5cGUobSwgaW0pOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgX3BhcmFtID0gaW1zOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAg
ICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBtYXRjaCQxID0gZWtpbmRbLyogaXQg
Ki8xXTsKKyAgICAgIHN3aXRjaCAobWF0Y2gkMSkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBFeHRlcm5hbEZ1bmNUeXBlICovQmxvY2suX18oMCwgW0N1cnJ5Ll8y
KExpYi5MaXN0MzJbLyogbnRoICovMV0sIG1bLyogaXQgKi8xXVsvKiB0eXBlcyAqLzBdLCBDdXJy
eS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyogZnVuY3MgKi80XSwg
aSlbLyogaXQgKi8xXVsvKiBmdHlwZSAqLzBdWy8qIGl0ICovMV0pXSk7CisgICAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsVGFibGVUeXBlICovQmxvY2suX18o
MSwgW0N1cnJ5Ll8yKExpYi5MaXN0MzJbLyogbnRoICovMV0sIG1bLyogaXQgKi8xXVsvKiB0YWJs
ZXMgKi8yXSwgaSlbLyogaXQgKi8xXVsvKiB0dHlwZSAqLzBdXSk7CisgICAgICAgIGNhc2UgMiA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsTWVtb3J5VHlwZSAqL0Jsb2NrLl9fKDIs
IFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyogbWVtb3Jp
ZXMgKi8zXSwgaSlbLyogaXQgKi8xXVsvKiBtdHlwZSAqLzBdXSk7CisgICAgICAgIGNhc2UgMyA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsR2xvYmFsVHlwZSAqL0Jsb2NrLl9fKDMs
IFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyogZ2xvYmFs
cyAqLzFdLCBpKVsvKiBpdCAqLzFdWy8qIGd0eXBlICovMF1dKTsKKyAgICAgICAgCisgICAgICB9
CisgICAgfQorICB9OworfQorCit2YXIgSTMyT3AgPSAwOworCit2YXIgSTY0T3AgPSAwOworCit2
YXIgRjMyT3AgPSAwOworCit2YXIgRjY0T3AgPSAwOworCit2YXIgZW1wdHlfbW9kdWxlID0gLyog
cmVjb3JkICovWworICAvKiB0eXBlcyA6IFtdICovMCwKKyAgLyogZ2xvYmFscyA6IFtdICovMCwK
KyAgLyogdGFibGVzIDogW10gKi8wLAorICAvKiBtZW1vcmllcyA6IFtdICovMCwKKyAgLyogZnVu
Y3MgOiBbXSAqLzAsCisgIC8qIHN0YXJ0IDogTm9uZSAqLzAsCisgIC8qIGVsZW1zIDogW10gKi8w
LAorICAvKiBkYXRhIDogW10gKi8wLAorICAvKiBpbXBvcnRzIDogW10gKi8wLAorICAvKiBleHBv
cnRzIDogW10gKi8wCitdOworCitleHBvcnRzLkludE9wICAgICAgICAgICAgICAgICAgICAgID0g
SW50T3A7CitleHBvcnRzLkZsb2F0T3AgICAgICAgICAgICAgICAgICAgID0gRmxvYXRPcDsKK2V4
cG9ydHMuSTMyT3AgICAgICAgICAgICAgICAgICAgICAgPSBJMzJPcDsKK2V4cG9ydHMuSTY0T3Ag
ICAgICAgICAgICAgICAgICAgICAgPSBJNjRPcDsKK2V4cG9ydHMuRjMyT3AgICAgICAgICAgICAg
ICAgICAgICAgPSBGMzJPcDsKK2V4cG9ydHMuRjY0T3AgICAgICAgICAgICAgICAgICAgICAgPSBG
NjRPcDsKK2V4cG9ydHMuZW1wdHlfbW9kdWxlICAgICAgICAgICAgICAgPSBlbXB0eV9tb2R1bGU7
CitleHBvcnRzLmV4cG9ydF9raW5kX29mX2ltcG9ydF9raW5kID0gZXhwb3J0X2tpbmRfb2ZfaW1w
b3J0X2tpbmQ7CitleHBvcnRzLmltcG9ydF90eXBlICAgICAgICAgICAgICAgID0gaW1wb3J0X3R5
cGU7CitleHBvcnRzLmV4cG9ydF90eXBlICAgICAgICAgICAgICAgID0gZXhwb3J0X3R5cGU7Cisv
KiBMaWIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBhc3QuanMgLy8vLy8v
Ly8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnYmlnYXJy
YXknXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0
YXJ0IG9mIGJpZ2FycmF5LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX2Fy
cmF5ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9hcnJheSIpOwordmFyIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOwor
CitmdW5jdGlvbiBkaW1zKCkgeworICB2YXIgbiA9IGZ1bmN0aW9uICgpIHsKKyAgICAgIHRocm93
ICJjYW1sX2JhX251bV9kaW1zIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4i
OworICAgIH0oKTsKKyAgdmFyIGQgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KG4sIDApOwor
ICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IG4gLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytp
KXsKKyAgICBkW2ldID0gZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyAiY2FtbF9iYV9kaW0g
bm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICB9KCk7CisgIH0K
KyAgcmV0dXJuIGQ7Cit9CisKK2Z1bmN0aW9uIG1hcF9maWxlKF8sICRzdGFyb3B0JHN0YXIsIF8k
MSwgXyQyLCBfJDMsIF8kNCkgeworICAkc3Rhcm9wdCRzdGFyID8gJHN0YXJvcHQkc3RhclswXSA6
IC8qIGludDY0ICovWworICAgICAgLyogaGkgKi8wLAorICAgICAgLyogbG8gKi8wCisgICAgXTsK
KyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX21hcF9m
aWxlX2J5dGVjb2RlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAg
ICAgICAgIH0oKTsKK30KKwordmFyIEdlbmFycmF5ID0gLyogbW9kdWxlICovWworICAvKiBkaW1z
ICovZGltcywKKyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZQorXTsKKworZnVuY3Rpb24gY3JlYXRl
KF8sIF8kMSwgXyQyKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJv
dyAiY2FtbF9iYV9jcmVhdGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7
CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBvZl9hcnJheShraW5kLCBsYXlvdXQsIGRh
dGEpIHsKKyAgdmFyIGJhID0gY3JlYXRlKGtpbmQsIGxheW91dCwgZGF0YS5sZW5ndGgpOworICBs
YXlvdXQgIT09IDAgPyAxIDogMDsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBkYXRhLmxl
bmd0aCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgdGhyb3cgImNhbWxfYmFfc2V0XzEgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNj
cmlwdCB5ZXRcbiI7CisgICAgICAgIH0oKSk7CisgIH0KKyAgcmV0dXJuIGJhOworfQorCitmdW5j
dGlvbiBtYXBfZmlsZSQxKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW0pIHsKKyAg
cmV0dXJuIG1hcF9maWxlKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hhcmVkLCAvKiBpbnQgYXJy
YXkgKi9bZGltXSk7Cit9CisKK3ZhciBBcnJheTEgPSAvKiBtb2R1bGUgKi9bCisgIC8qIGNyZWF0
ZSAqL2NyZWF0ZSwKKyAgLyogb2ZfYXJyYXkgKi9vZl9hcnJheSwKKyAgLyogbWFwX2ZpbGUgKi9t
YXBfZmlsZSQxCitdOworCitmdW5jdGlvbiBjcmVhdGUkMShfLCBfJDEsIF8kMiwgXyQzKSB7Cisg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9jcmVhdGUg
bm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOwor
fQorCitmdW5jdGlvbiBzbGljZV9sZWZ0KF8sIF8kMSkgeworICByZXR1cm4gZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgdGhyb3cgImNhbWxfYmFfc2xpY2Ugbm90IGltcGxlbWVudGVkIGJ5IGJ1
Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBzbGljZV9y
aWdodChfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93
ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwor
ICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gb2ZfYXJyYXkkMShraW5kLCBsYXlvdXQsIGRh
dGEpIHsKKyAgdmFyIGRpbTEgPSBkYXRhLmxlbmd0aDsKKyAgdmFyIGRpbTIgPSBkaW0xID8gZGF0
YVswXS5sZW5ndGggOiAwOworICB2YXIgYmEgPSBjcmVhdGUkMShraW5kLCBsYXlvdXQsIGRpbTEs
IGRpbTIpOworICBsYXlvdXQgIT09IDAgPyAxIDogMDsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5p
c2ggPSBkaW0xIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgdmFyIHJvdyA9IGRh
dGFbaV07CisgICAgaWYgKHJvdy5sZW5ndGggIT09IGRpbTIpIHsKKyAgICAgIHRocm93IFsKKyAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgICAiQmlnYXJyYXkuQXJyYXkyLm9mX2FycmF5OiBub24tcmVjdGFuZ3VsYXIgZGF0YSIK
KyAgICAgICAgICBdOworICAgIH0KKyAgICBmb3IodmFyIGogPSAwICxqX2ZpbmlzaCA9IGRpbTIg
LSAxIHwgMDsgaiA8PSBqX2ZpbmlzaDsgKytqKXsKKyAgICAgIChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0aHJvdyAiY2FtbF9iYV9zZXRfMiBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKKyAgICAgICAgICB9KCkpOworICAgIH0KKyAgfQorICByZXR1cm4gYmE7Cit9
CisKK2Z1bmN0aW9uIG1hcF9maWxlJDIoZmQsIHBvcywga2luZCwgbGF5b3V0LCBzaGFyZWQsIGRp
bTEsIGRpbTIpIHsKKyAgcmV0dXJuIG1hcF9maWxlKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hh
cmVkLCAvKiBpbnQgYXJyYXkgKi9bCisgICAgICAgICAgICAgIGRpbTEsCisgICAgICAgICAgICAg
IGRpbTIKKyAgICAgICAgICAgIF0pOworfQorCit2YXIgQXJyYXkyID0gLyogbW9kdWxlICovWwor
ICAvKiBjcmVhdGUgKi9jcmVhdGUkMSwKKyAgLyogc2xpY2VfbGVmdCAqL3NsaWNlX2xlZnQsCisg
IC8qIHNsaWNlX3JpZ2h0ICovc2xpY2VfcmlnaHQsCisgIC8qIG9mX2FycmF5ICovb2ZfYXJyYXkk
MSwKKyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZSQyCitdOworCitmdW5jdGlvbiBjcmVhdGUkMihf
LCBfJDEsIF8kMiwgXyQzLCBfJDQpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHRocm93ICJjYW1sX2JhX2NyZWF0ZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0
IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHNsaWNlX2xlZnRfMShfLCBf
JDEsIF8kMikgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNh
bWxfYmFfc2xpY2Ugbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAg
ICAgICAgfSgpOworfQorCitmdW5jdGlvbiBzbGljZV9yaWdodF8xKF8sIF8kMSwgXyQyKSB7Cisg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9zbGljZSBu
b3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9
CisKK2Z1bmN0aW9uIHNsaWNlX2xlZnRfMihfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2xpY2Vf
cmlnaHRfMihfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRo
cm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4i
OworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gb2ZfYXJyYXkkMihraW5kLCBsYXlvdXQs
IGRhdGEpIHsKKyAgdmFyIGRpbTEgPSBkYXRhLmxlbmd0aDsKKyAgdmFyIGRpbTIgPSBkaW0xID8g
ZGF0YVswXS5sZW5ndGggOiAwOworICB2YXIgZGltMyA9IGRpbTIgPyBkYXRhWzBdWzBdLmxlbmd0
aCA6IDA7CisgIHZhciBiYSA9IGNyZWF0ZSQyKGtpbmQsIGxheW91dCwgZGltMSwgZGltMiwgZGlt
Myk7CisgIGxheW91dCAhPT0gMCA/IDEgOiAwOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9
IGRpbTEgLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICB2YXIgcm93ID0gZGF0YVtp
XTsKKyAgICBpZiAocm93Lmxlbmd0aCAhPT0gZGltMikgeworICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAgICJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhIgorICAgICAgICAg
IF07CisgICAgfQorICAgIGZvcih2YXIgaiA9IDAgLGpfZmluaXNoID0gZGltMiAtIDEgfCAwOyBq
IDw9IGpfZmluaXNoOyArK2opeworICAgICAgdmFyIGNvbCA9IHJvd1tqXTsKKyAgICAgIGlmIChj
b2wubGVuZ3RoICE9PSBkaW0zKSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAgIkJp
Z2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGEiCisgICAgICAgICAgICBdOwor
ICAgICAgfQorICAgICAgZm9yKHZhciBrID0gMCAsa19maW5pc2ggPSBkaW0zIC0gMSB8IDA7IGsg
PD0ga19maW5pc2g7ICsrayl7CisgICAgICAgIChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
IHRocm93ICJjYW1sX2JhX3NldF8zIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0
XG4iOworICAgICAgICAgICAgfSgpKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIGJh
OworfQorCitmdW5jdGlvbiBtYXBfZmlsZSQzKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hhcmVk
LCBkaW0xLCBkaW0yLCBkaW0zKSB7CisgIHJldHVybiBtYXBfZmlsZShmZCwgcG9zLCBraW5kLCBs
YXlvdXQsIHNoYXJlZCwgLyogaW50IGFycmF5ICovWworICAgICAgICAgICAgICBkaW0xLAorICAg
ICAgICAgICAgICBkaW0yLAorICAgICAgICAgICAgICBkaW0zCisgICAgICAgICAgICBdKTsKK30K
KwordmFyIEFycmF5MyA9IC8qIG1vZHVsZSAqL1sKKyAgLyogY3JlYXRlICovY3JlYXRlJDIsCisg
IC8qIHNsaWNlX2xlZnRfMSAqL3NsaWNlX2xlZnRfMSwKKyAgLyogc2xpY2VfcmlnaHRfMSAqL3Ns
aWNlX3JpZ2h0XzEsCisgIC8qIHNsaWNlX2xlZnRfMiAqL3NsaWNlX2xlZnRfMiwKKyAgLyogc2xp
Y2VfcmlnaHRfMiAqL3NsaWNlX3JpZ2h0XzIsCisgIC8qIG9mX2FycmF5ICovb2ZfYXJyYXkkMiwK
KyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZSQzCitdOworCitmdW5jdGlvbiBhcnJheTFfb2ZfZ2Vu
YXJyYXkoYSkgeworICBpZiAoZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyAiY2FtbF9iYV9u
dW1fZGltcyBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgIH0o
KSA9PT0gMSkgeworICAgIHJldHVybiBhOworICB9CisgIGVsc2UgeworICAgIHRocm93IFsKKyAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAg
ICAgICJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXkiCisgICAgICAgIF07CisgIH0KK30KKwor
ZnVuY3Rpb24gYXJyYXkyX29mX2dlbmFycmF5KGEpIHsKKyAgaWYgKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgdGhyb3cgImNhbWxfYmFfbnVtX2RpbXMgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNj
cmlwdCB5ZXRcbiI7CisgICAgICB9KCkgPT09IDIpIHsKKyAgICByZXR1cm4gYTsKKyAgfQorICBl
bHNlIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52
YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5Igor
ICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGFycmF5M19vZl9nZW5hcnJheShhKSB7Cisg
IGlmIChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRocm93ICJjYW1sX2JhX251bV9kaW1zIG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgfSgpID09PSAzKSB7Cisg
ICAgcmV0dXJuIGE7CisgIH0KKyAgZWxzZSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkJpZ2FycmF5
LmFycmF5M19vZl9nZW5hcnJheSIKKyAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiByZXNo
YXBlXzEoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJv
dyAiY2FtbF9iYV9yZXNoYXBlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4i
OworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gcmVzaGFwZV8yKF8sIF8kMSwgXyQyKSB7
CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9yZXNo
YXBlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0o
KTsKK30KKworZnVuY3Rpb24gcmVzaGFwZV8zKF8sIF8kMSwgXyQyLCBfJDMpIHsKKyAgcmV0dXJu
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3Jlc2hhcGUgbm90IGlt
cGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCit2
YXIgZmxvYXQzMiA9IC8qIEZsb2F0MzIgKi8wOworCit2YXIgZmxvYXQ2NCA9IC8qIEZsb2F0NjQg
Ki8xOworCit2YXIgY29tcGxleDMyID0gLyogQ29tcGxleDMyICovMTA7CisKK3ZhciBjb21wbGV4
NjQgPSAvKiBDb21wbGV4NjQgKi8xMTsKKwordmFyIGludDhfc2lnbmVkID0gLyogSW50OF9zaWdu
ZWQgKi8yOworCit2YXIgaW50OF91bnNpZ25lZCA9IC8qIEludDhfdW5zaWduZWQgKi8zOworCit2
YXIgaW50MTZfc2lnbmVkID0gLyogSW50MTZfc2lnbmVkICovNDsKKwordmFyIGludDE2X3Vuc2ln
bmVkID0gLyogSW50MTZfdW5zaWduZWQgKi81OworCit2YXIgJCRpbnQgPSAvKiBJbnQgKi84Owor
Cit2YXIgaW50MzIgPSAvKiBJbnQzMiAqLzY7CisKK3ZhciBpbnQ2NCA9IC8qIEludDY0ICovNzsK
KwordmFyIG5hdGl2ZWludCA9IC8qIE5hdGl2ZWludCAqLzk7CisKK3ZhciAkJGNoYXIgPSAvKiBD
aGFyICovMTI7CisKK3ZhciBjX2xheW91dCA9IC8qIENfbGF5b3V0ICovMDsKKwordmFyIGZvcnRy
YW5fbGF5b3V0ID0gLyogRm9ydHJhbl9sYXlvdXQgKi8xOworCitmdW5jdGlvbiByZXNoYXBlKF8s
IF8kMSkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxf
YmFfcmVzaGFwZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAg
ICAgICB9KCk7Cit9CisKK2V4cG9ydHMuZmxvYXQzMiAgICAgICAgICAgID0gZmxvYXQzMjsKK2V4
cG9ydHMuZmxvYXQ2NCAgICAgICAgICAgID0gZmxvYXQ2NDsKK2V4cG9ydHMuY29tcGxleDMyICAg
ICAgICAgID0gY29tcGxleDMyOworZXhwb3J0cy5jb21wbGV4NjQgICAgICAgICAgPSBjb21wbGV4
NjQ7CitleHBvcnRzLmludDhfc2lnbmVkICAgICAgICA9IGludDhfc2lnbmVkOworZXhwb3J0cy5p
bnQ4X3Vuc2lnbmVkICAgICAgPSBpbnQ4X3Vuc2lnbmVkOworZXhwb3J0cy5pbnQxNl9zaWduZWQg
ICAgICAgPSBpbnQxNl9zaWduZWQ7CitleHBvcnRzLmludDE2X3Vuc2lnbmVkICAgICA9IGludDE2
X3Vuc2lnbmVkOworZXhwb3J0cy4kJGludCAgICAgICAgICAgICAgPSAkJGludDsKK2V4cG9ydHMu
aW50MzIgICAgICAgICAgICAgID0gaW50MzI7CitleHBvcnRzLmludDY0ICAgICAgICAgICAgICA9
IGludDY0OworZXhwb3J0cy5uYXRpdmVpbnQgICAgICAgICAgPSBuYXRpdmVpbnQ7CitleHBvcnRz
LiQkY2hhciAgICAgICAgICAgICA9ICQkY2hhcjsKK2V4cG9ydHMuY19sYXlvdXQgICAgICAgICAg
ID0gY19sYXlvdXQ7CitleHBvcnRzLmZvcnRyYW5fbGF5b3V0ICAgICA9IGZvcnRyYW5fbGF5b3V0
OworZXhwb3J0cy5HZW5hcnJheSAgICAgICAgICAgPSBHZW5hcnJheTsKK2V4cG9ydHMuQXJyYXkx
ICAgICAgICAgICAgID0gQXJyYXkxOworZXhwb3J0cy5BcnJheTIgICAgICAgICAgICAgPSBBcnJh
eTI7CitleHBvcnRzLkFycmF5MyAgICAgICAgICAgICA9IEFycmF5MzsKK2V4cG9ydHMuYXJyYXkx
X29mX2dlbmFycmF5ID0gYXJyYXkxX29mX2dlbmFycmF5OworZXhwb3J0cy5hcnJheTJfb2ZfZ2Vu
YXJyYXkgPSBhcnJheTJfb2ZfZ2VuYXJyYXk7CitleHBvcnRzLmFycmF5M19vZl9nZW5hcnJheSA9
IGFycmF5M19vZl9nZW5hcnJheTsKK2V4cG9ydHMucmVzaGFwZSAgICAgICAgICAgID0gcmVzaGFw
ZTsKK2V4cG9ydHMucmVzaGFwZV8xICAgICAgICAgID0gcmVzaGFwZV8xOworZXhwb3J0cy5yZXNo
YXBlXzIgICAgICAgICAgPSByZXNoYXBlXzI7CitleHBvcnRzLnJlc2hhcGVfMyAgICAgICAgICA9
IHJlc2hhcGVfMzsKKy8qICBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGJp
Z2FycmF5LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBf
cmVnaXN0cnlbJ2Jsb2NrJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307
CisvLy8vLy8vLyBzdGFydCBvZiBibG9jay5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisK
K2Z1bmN0aW9uIF9fKHRhZywgYmxvY2spIHsKKyAgYmxvY2sudGFnID0gdGFnOworICByZXR1cm4g
YmxvY2s7Cit9CisKK2V4cG9ydHMuX18gPSBfXzsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8v
Ly8vLyBlbmQgb2YgYmxvY2suanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAg
fTsKKworCisgIF9yZWdpc3RyeVsnYnVmZmVyJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBl
eHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBidWZmZXIuanMgLy8vLy8vLy8KKyd1c2Ug
c3RyaWN0JzsKKwordmFyIFN5cyAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zeXMi
KTsKK3ZhciBCeXRlcyAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnl0ZXMiKTsKK3Zh
ciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciAkJFN0
cmluZyAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc3RyaW5nIik7Cit2YXIgUGVydmFzaXZl
cyAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX3N0cmlu
ZyAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKwor
ZnVuY3Rpb24gY3JlYXRlKG4pIHsKKyAgdmFyIG4kMSA9IG4gPCAxID8gMSA6IG47CisgIHZhciBu
JDIgPSBuJDEgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggPyBTeXMubWF4X3N0cmluZ19sZW5ndGgg
OiBuJDE7CisgIHZhciBzID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKG4kMik7Cisg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogYnVmZmVyICovcywKKyAgICAgICAg
ICAvKiBwb3NpdGlvbiAqLzAsCisgICAgICAgICAgLyogbGVuZ3RoICovbiQyLAorICAgICAgICAg
IC8qIGluaXRpYWxfYnVmZmVyICovcworICAgICAgICBdOworfQorCitmdW5jdGlvbiBjb250ZW50
cyhiKSB7CisgIHJldHVybiBCeXRlcy5zdWJfc3RyaW5nKGJbLyogYnVmZmVyICovMF0sIDAsIGJb
LyogcG9zaXRpb24gKi8xXSk7Cit9CisKK2Z1bmN0aW9uIHRvX2J5dGVzKGIpIHsKKyAgcmV0dXJu
IEJ5dGVzLnN1YihiWy8qIGJ1ZmZlciAqLzBdLCAwLCBiWy8qIHBvc2l0aW9uICovMV0pOworfQor
CitmdW5jdGlvbiBzdWIoYiwgb2ZzLCBsZW4pIHsKKyAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8
fCBvZnMgPiAoYlsvKiBwb3NpdGlvbiAqLzFdIC0gbGVuIHwgMCkpIHsKKyAgICB0aHJvdyBbCisg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAg
ICAgICAiQnVmZmVyLnN1YiIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
Qnl0ZXMuc3ViX3N0cmluZyhiWy8qIGJ1ZmZlciAqLzBdLCBvZnMsIGxlbik7CisgIH0KK30KKwor
ZnVuY3Rpb24gYmxpdChzcmMsIHNyY29mZiwgZHN0LCBkc3RvZmYsIGxlbikgeworICBpZiAobGVu
IDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IChzcmNbLyogcG9zaXRpb24gKi8xXSAtIGxl
biB8IDApIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKGRzdC5sZW5ndGggLSBsZW4gfCAwKSkg
eworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlk
X2FyZ3VtZW50LAorICAgICAgICAgICJCdWZmZXIuYmxpdCIKKyAgICAgICAgXTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gQnl0ZXMuYmxpdChzcmNbLyogYnVmZmVyICovMF0sIHNyY29mZiwg
ZHN0LCBkc3RvZmYsIGxlbik7CisgIH0KK30KKworZnVuY3Rpb24gbnRoKGIsIG9mcykgeworICBp
ZiAob2ZzIDwgMCB8fCBvZnMgPj0gYlsvKiBwb3NpdGlvbiAqLzFdKSB7CisgICAgdGhyb3cgWwor
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgIkJ1ZmZlci5udGgiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IGJbLyogYnVmZmVyICovMF1bb2ZzXTsKKyAgfQorfQorCitmdW5jdGlvbiBsZW5ndGgoYikgewor
ICByZXR1cm4gYlsvKiBwb3NpdGlvbiAqLzFdOworfQorCitmdW5jdGlvbiBjbGVhcihiKSB7Cisg
IGJbLyogcG9zaXRpb24gKi8xXSA9IDA7CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0
aW9uIHJlc2V0KGIpIHsKKyAgYlsvKiBwb3NpdGlvbiAqLzFdID0gMDsKKyAgYlsvKiBidWZmZXIg
Ki8wXSA9IGJbLyogaW5pdGlhbF9idWZmZXIgKi8zXTsKKyAgYlsvKiBsZW5ndGggKi8yXSA9IGJb
LyogYnVmZmVyICovMF0ubGVuZ3RoOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlv
biByZXNpemUoYiwgbW9yZSkgeworICB2YXIgbGVuID0gYlsvKiBsZW5ndGggKi8yXTsKKyAgdmFy
IG5ld19sZW4gPSBsZW47CisgIHdoaWxlKChiWy8qIHBvc2l0aW9uICovMV0gKyBtb3JlIHwgMCkg
PiBuZXdfbGVuKSB7CisgICAgbmV3X2xlbiA9IChuZXdfbGVuIDw8IDEpOworICB9OworICBpZiAo
bmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgeworICAgIGlmICgoYlsvKiBwb3NpdGlv
biAqLzFdICsgbW9yZSB8IDApIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgeworICAgICAgbmV3
X2xlbiA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0
aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAg
ICAgICAgICAgIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlciIKKyAgICAgICAgICBdOwor
ICAgIH0KKyAgfQorICB2YXIgbmV3X2J1ZmZlciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0
cmluZyhuZXdfbGVuKTsKKyAgQnl0ZXMuYmxpdChiWy8qIGJ1ZmZlciAqLzBdLCAwLCBuZXdfYnVm
ZmVyLCAwLCBiWy8qIHBvc2l0aW9uICovMV0pOworICBiWy8qIGJ1ZmZlciAqLzBdID0gbmV3X2J1
ZmZlcjsKKyAgYlsvKiBsZW5ndGggKi8yXSA9IG5ld19sZW47CisgIHJldHVybiAvKiAoKSAqLzA7
Cit9CisKK2Z1bmN0aW9uIGFkZF9jaGFyKGIsIGMpIHsKKyAgdmFyIHBvcyA9IGJbLyogcG9zaXRp
b24gKi8xXTsKKyAgaWYgKHBvcyA+PSBiWy8qIGxlbmd0aCAqLzJdKSB7CisgICAgcmVzaXplKGIs
IDEpOworICB9CisgIGJbLyogYnVmZmVyICovMF1bcG9zXSA9IGM7CisgIGJbLyogcG9zaXRpb24g
Ki8xXSA9IHBvcyArIDEgfCAwOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBh
ZGRfc3Vic3RyaW5nKGIsIHMsIG9mZnNldCwgbGVuKSB7CisgIGlmIChvZmZzZXQgPCAwIHx8IGxl
biA8IDAgfHwgKG9mZnNldCArIGxlbiB8IDApID4gcy5sZW5ndGgpIHsKKyAgICB0aHJvdyBbCisg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAg
ICAgICAiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzIgorICAgICAgICBdOworICB9
CisgIHZhciBuZXdfcG9zaXRpb24gPSBiWy8qIHBvc2l0aW9uICovMV0gKyBsZW4gfCAwOworICBp
ZiAobmV3X3Bvc2l0aW9uID4gYlsvKiBsZW5ndGggKi8yXSkgeworICAgIHJlc2l6ZShiLCBsZW4p
OworICB9CisgIEJ5dGVzLmJsaXRfc3RyaW5nKHMsIG9mZnNldCwgYlsvKiBidWZmZXIgKi8wXSwg
YlsvKiBwb3NpdGlvbiAqLzFdLCBsZW4pOworICBiWy8qIHBvc2l0aW9uICovMV0gPSBuZXdfcG9z
aXRpb247CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGFkZF9zdWJieXRlcyhi
LCBzLCBvZmZzZXQsIGxlbikgeworICByZXR1cm4gYWRkX3N1YnN0cmluZyhiLCBDYW1sX3N0cmlu
Zy5ieXRlc190b19zdHJpbmcocyksIG9mZnNldCwgbGVuKTsKK30KKworZnVuY3Rpb24gYWRkX3N0
cmluZyhiLCBzKSB7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIG5ld19wb3NpdGlvbiA9
IGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDA7CisgIGlmIChuZXdfcG9zaXRpb24gPiBiWy8q
IGxlbmd0aCAqLzJdKSB7CisgICAgcmVzaXplKGIsIGxlbik7CisgIH0KKyAgQnl0ZXMuYmxpdF9z
dHJpbmcocywgMCwgYlsvKiBidWZmZXIgKi8wXSwgYlsvKiBwb3NpdGlvbiAqLzFdLCBsZW4pOwor
ICBiWy8qIHBvc2l0aW9uICovMV0gPSBuZXdfcG9zaXRpb247CisgIHJldHVybiAvKiAoKSAqLzA7
Cit9CisKK2Z1bmN0aW9uIGFkZF9ieXRlcyhiLCBzKSB7CisgIHJldHVybiBhZGRfc3RyaW5nKGIs
IENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzKSk7Cit9CisKK2Z1bmN0aW9uIGFkZF9idWZm
ZXIoYiwgYnMpIHsKKyAgcmV0dXJuIGFkZF9zdWJieXRlcyhiLCBic1svKiBidWZmZXIgKi8wXSwg
MCwgYnNbLyogcG9zaXRpb24gKi8xXSk7Cit9CisKK2Z1bmN0aW9uIGFkZF9jaGFubmVsKGIsIGlj
LCBsZW4pIHsKKyAgaWYgKGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoKSB7
CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRf
YXJndW1lbnQsCisgICAgICAgICAgIkJ1ZmZlci5hZGRfY2hhbm5lbCIKKyAgICAgICAgXTsKKyAg
fQorICBpZiAoKGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDApID4gYlsvKiBsZW5ndGggKi8y
XSkgeworICAgIHJlc2l6ZShiLCBsZW4pOworICB9CisgIFBlcnZhc2l2ZXMucmVhbGx5X2lucHV0
KGljLCBiWy8qIGJ1ZmZlciAqLzBdLCBiWy8qIHBvc2l0aW9uICovMV0sIGxlbik7CisgIGJbLyog
cG9zaXRpb24gKi8xXSA9IGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDA7CisgIHJldHVybiAv
KiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIG91dHB1dF9idWZmZXIob2MsIGIpIHsKKyAgcmV0dXJu
IFBlcnZhc2l2ZXMub3V0cHV0KG9jLCBiWy8qIGJ1ZmZlciAqLzBdLCAwLCBiWy8qIHBvc2l0aW9u
ICovMV0pOworfQorCitmdW5jdGlvbiBjbG9zaW5nKHBhcmFtKSB7CisgIGlmIChwYXJhbSAhPT0g
NDApIHsKKyAgICBpZiAocGFyYW0gIT09IDEyMykgeworICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICJidWZmZXIubWwiLAorICAgICAgICAgICAgICAxMTUsCisgICAgICAg
ICAgICAgIDkKKyAgICAgICAgICAgIF0KKyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHJldHVybiAvKiAifSIgKi8xMjU7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiAiKSIgKi80MTsKKyAgfQorfQorCitmdW5jdGlvbiBhZHZhbmNlX3RvX2Nsb3Npbmco
b3BlbmluZywgY2xvc2luZywgaywgcywgc3RhcnQpIHsKKyAgdmFyIF9rID0gazsKKyAgdmFyIF9p
ID0gc3RhcnQ7CisgIHZhciBsaW0gPSBzLmxlbmd0aDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZh
ciBpID0gX2k7CisgICAgdmFyIGskMSA9IF9rOworICAgIGlmIChpID49IGxpbSkgeworICAgICAg
dGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgIH0KKyAgICBlbHNl
IGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgPT09IG9wZW5pbmcpIHsKKyAgICAgIF9pID0gaSAr
IDEgfCAwOworICAgICAgX2sgPSBrJDEgKyAxIHwgMDsKKyAgICAgIGNvbnRpbnVlIDsKKyAgICAg
IAorICAgIH0KKyAgICBlbHNlIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgPT09IGNsb3Npbmcp
IHsKKyAgICAgIGlmIChrJDEpIHsKKyAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgIF9r
ID0gayQxIC0gMSB8IDA7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgICB9CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9
CisgIH07Cit9CisKK2Z1bmN0aW9uIGFkdmFuY2VfdG9fbm9uX2FscGhhKHMsIHN0YXJ0KSB7Cisg
IHZhciBfaSA9IHN0YXJ0OworICB2YXIgbGltID0gcy5sZW5ndGg7CisgIHdoaWxlKHRydWUpIHsK
KyAgICB2YXIgaSA9IF9pOworICAgIGlmIChpID49IGxpbSkgeworICAgICAgcmV0dXJuIGxpbTsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQocywg
aSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICBpZiAobWF0Y2ggPj0gOTEpIHsKKyAgICAg
ICAgaWYgKG1hdGNoID49IDk3KSB7CisgICAgICAgICAgaWYgKG1hdGNoID49IDEyMykgeworICAg
ICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYg
KG1hdGNoICE9PSA5NSkgeworICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBl
bHNlIGlmIChtYXRjaCA+PSA1OCkgeworICAgICAgICBpZiAobWF0Y2ggPj0gNjUpIHsKKyAgICAg
ICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gaTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAobWF0Y2ggPj0gNDgpIHsK
KyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJu
IGk7CisgICAgICB9CisgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICBfaSA9IGkgKyAx
IHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIAorICAg
IH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmluZF9pZGVudChzLCBzdGFydCwgbGltKSB7CisgIGlm
IChzdGFydCA+PSBsaW0pIHsKKyAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3Rf
Zm91bmQ7CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGMgPSBDYW1sX3N0cmluZy5nZXQocywgc3Rh
cnQpOworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAoYyAhPT0gNDApIHsKKyAgICAgIGlmIChj
ICE9PSAxMjMpIHsKKyAgICAgICAgdmFyIHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYShzLCBz
dGFydCArIDEgfCAwKTsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAgICQkU3RyaW5nLnN1YihzLCBzdGFydCwgc3RvcCAtIHN0YXJ0IHwgMCksCisgICAgICAgICAg
ICAgICAgc3RvcAorICAgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGV4aXQgPSAx
OworICAgIH0KKyAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgdmFyIG5ld19zdGFydCA9IHN0
YXJ0ICsgMSB8IDA7CisgICAgICB2YXIgc3RvcCQxID0gYWR2YW5jZV90b19jbG9zaW5nKGMsIGNs
b3NpbmcoYyksIDAsIHMsIG5ld19zdGFydCk7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgICQkU3RyaW5nLnN1YihzLCBuZXdfc3RhcnQsIChzdG9wJDEgLSBzdGFydCB8
IDApIC0gMSB8IDApLAorICAgICAgICAgICAgICBzdG9wJDEgKyAxIHwgMAorICAgICAgICAgICAg
XTsKKyAgICB9CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gYWRkX3N1YnN0aXR1dGUoYiwgZiwg
cykgeworICB2YXIgbGltID0gcy5sZW5ndGg7CisgIHZhciBfcHJldmlvdXMgPSAvKiAiICIgKi8z
MjsKKyAgdmFyIF9pID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0gX2k7CisgICAg
dmFyIHByZXZpb3VzID0gX3ByZXZpb3VzOworICAgIGlmIChpIDwgbGltKSB7CisgICAgICB2YXIg
Y3VycmVudCA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICAgIGlmIChjdXJyZW50ICE9PSAz
NikgeworICAgICAgICBpZiAocHJldmlvdXMgPT09IC8qICJcXCIgKi85MikgeworICAgICAgICAg
IGFkZF9jaGFyKGIsIC8qICJcXCIgKi85Mik7CisgICAgICAgICAgYWRkX2NoYXIoYiwgY3VycmVu
dCk7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgX3ByZXZpb3VzID0gLyog
IiAiICovMzI7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKGN1cnJlbnQgIT09IDkyKSB7CisgICAgICAgICAgYWRkX2NoYXIoYiwg
Y3VycmVudCk7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgX3ByZXZpb3Vz
ID0gY3VycmVudDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgX3By
ZXZpb3VzID0gY3VycmVudDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHByZXZpb3VzID09PSAvKiAiXFwiICovOTIp
IHsKKyAgICAgICAgYWRkX2NoYXIoYiwgY3VycmVudCk7CisgICAgICAgIF9pID0gaSArIDEgfCAw
OworICAgICAgICBfcHJldmlvdXMgPSAvKiAiICIgKi8zMjsKKyAgICAgICAgY29udGludWUgOwor
ICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgaiA9IGkgKyAxIHwg
MDsKKyAgICAgICAgdmFyIG1hdGNoID0gZmluZF9pZGVudChzLCBqLCBsaW0pOworICAgICAgICBh
ZGRfc3RyaW5nKGIsIEN1cnJ5Ll8xKGYsIG1hdGNoWzBdKSk7CisgICAgICAgIF9pID0gbWF0Y2hb
MV07CisgICAgICAgIF9wcmV2aW91cyA9IC8qICIgIiAqLzMyOworICAgICAgICBjb250aW51ZSA7
CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChwcmV2aW91cyA9PT0gLyog
IlxcIiAqLzkyKSB7CisgICAgICByZXR1cm4gYWRkX2NoYXIoYiwgcHJldmlvdXMpOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgfTsKK30KKworZXhwb3J0cy5j
cmVhdGUgICAgICAgICA9IGNyZWF0ZTsKK2V4cG9ydHMuY29udGVudHMgICAgICAgPSBjb250ZW50
czsKK2V4cG9ydHMudG9fYnl0ZXMgICAgICAgPSB0b19ieXRlczsKK2V4cG9ydHMuc3ViICAgICAg
ICAgICAgPSBzdWI7CitleHBvcnRzLmJsaXQgICAgICAgICAgID0gYmxpdDsKK2V4cG9ydHMubnRo
ICAgICAgICAgICAgPSBudGg7CitleHBvcnRzLmxlbmd0aCAgICAgICAgID0gbGVuZ3RoOworZXhw
b3J0cy5jbGVhciAgICAgICAgICA9IGNsZWFyOworZXhwb3J0cy5yZXNldCAgICAgICAgICA9IHJl
c2V0OworZXhwb3J0cy5hZGRfY2hhciAgICAgICA9IGFkZF9jaGFyOworZXhwb3J0cy5hZGRfc3Ry
aW5nICAgICA9IGFkZF9zdHJpbmc7CitleHBvcnRzLmFkZF9ieXRlcyAgICAgID0gYWRkX2J5dGVz
OworZXhwb3J0cy5hZGRfc3Vic3RyaW5nICA9IGFkZF9zdWJzdHJpbmc7CitleHBvcnRzLmFkZF9z
dWJieXRlcyAgID0gYWRkX3N1YmJ5dGVzOworZXhwb3J0cy5hZGRfc3Vic3RpdHV0ZSA9IGFkZF9z
dWJzdGl0dXRlOworZXhwb3J0cy5hZGRfYnVmZmVyICAgICA9IGFkZF9idWZmZXI7CitleHBvcnRz
LmFkZF9jaGFubmVsICAgID0gYWRkX2NoYW5uZWw7CitleHBvcnRzLm91dHB1dF9idWZmZXIgID0g
b3V0cHV0X2J1ZmZlcjsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgYnVm
ZmVyLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVn
aXN0cnlbJ2J5dGVzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307Cisv
Ly8vLy8vLyBzdGFydCBvZiBieXRlcy5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIg
Q2hhciAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NoYXIiKTsKK3ZhciBMaXN0ICAg
ICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGlzdCIpOwordmFyIEN1cnJ5ICAgICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfb2JqICAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9jYW1sX29iaiIpOwordmFyIENhbWxfaW50MzIgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9jYW1sX2ludDMyIik7Cit2YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAg
PSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9
IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9
IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gbWFrZShu
LCBjKSB7CisgIHZhciBzID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKG4pOworICBD
YW1sX3N0cmluZy5jYW1sX2ZpbGxfc3RyaW5nKHMsIDAsIG4sIGMpOworICByZXR1cm4gczsKK30K
KworZnVuY3Rpb24gaW5pdChuLCBmKSB7CisgIHZhciBzID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVh
dGVfc3RyaW5nKG4pOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IG4gLSAxIHwgMDsgaSA8
PSBpX2ZpbmlzaDsgKytpKXsKKyAgICBzW2ldID0gQ3VycnkuXzEoZiwgaSk7CisgIH0KKyAgcmV0
dXJuIHM7Cit9CisKK3ZhciBlbXB0eSA9IFtdOworCitmdW5jdGlvbiBjb3B5KHMpIHsKKyAgdmFy
IGxlbiA9IHMubGVuZ3RoOworICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmlu
ZyhsZW4pOworICBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMocywgMCwgciwgMCwgbGVuKTsK
KyAgcmV0dXJuIHI7Cit9CisKK2Z1bmN0aW9uIHRvX3N0cmluZyhiKSB7CisgIHJldHVybiBDYW1s
X3N0cmluZy5ieXRlc190b19zdHJpbmcoY29weShiKSk7Cit9CisKK2Z1bmN0aW9uIG9mX3N0cmlu
ZyhzKSB7CisgIHJldHVybiBjb3B5KENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSk7Cit9
CisKK2Z1bmN0aW9uIHN1YihzLCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAw
IHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIlN0
cmluZy5zdWIgLyBCeXRlcy5zdWIiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgdmFy
IHIgPSBDYW1sX3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcobGVuKTsKKyAgICBDYW1sX3N0cmlu
Zy5jYW1sX2JsaXRfYnl0ZXMocywgb2ZzLCByLCAwLCBsZW4pOworICAgIHJldHVybiByOworICB9
Cit9CisKK2Z1bmN0aW9uIHN1Yl9zdHJpbmcoYiwgb2ZzLCBsZW4pIHsKKyAgcmV0dXJuIENhbWxf
c3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzdWIoYiwgb2ZzLCBsZW4pKTsKK30KKworZnVuY3Rpb24g
ZXh0ZW5kKHMsIGxlZnQsIHJpZ2h0KSB7CisgIHZhciBsZW4gPSAocy5sZW5ndGggKyBsZWZ0IHwg
MCkgKyByaWdodCB8IDA7CisgIHZhciByID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5n
KGxlbik7CisgIHZhciBtYXRjaCA9IGxlZnQgPCAwID8gLyogdHVwbGUgKi9bCisgICAgICAtbGVm
dCB8IDAsCisgICAgICAwCisgICAgXSA6IC8qIHR1cGxlICovWworICAgICAgMCwKKyAgICAgIGxl
ZnQKKyAgICBdOworICB2YXIgZHN0b2ZmID0gbWF0Y2hbMV07CisgIHZhciBzcmNvZmYgPSBtYXRj
aFswXTsKKyAgdmFyIGNweWxlbiA9IFBlcnZhc2l2ZXMubWluKHMubGVuZ3RoIC0gc3Jjb2ZmIHwg
MCwgbGVuIC0gZHN0b2ZmIHwgMCk7CisgIGlmIChjcHlsZW4gPiAwKSB7CisgICAgQ2FtbF9zdHJp
bmcuY2FtbF9ibGl0X2J5dGVzKHMsIHNyY29mZiwgciwgZHN0b2ZmLCBjcHlsZW4pOworICB9Cisg
IHJldHVybiByOworfQorCitmdW5jdGlvbiBmaWxsKHMsIG9mcywgbGVuLCBjKSB7CisgIGlmIChv
ZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gKHMubGVuZ3RoIC0gbGVuIHwgMCkpIHsKKyAgICB0
aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVu
dCwKKyAgICAgICAgICAiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsIgorICAgICAgICBdOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5jYW1sX2ZpbGxfc3RyaW5nKHMsIG9m
cywgbGVuLCBjKTsKKyAgfQorfQorCitmdW5jdGlvbiBibGl0KHMxLCBvZnMxLCBzMiwgb2ZzMiwg
bGVuKSB7CisgIGlmIChsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiAoczEubGVuZ3RoIC0g
bGVuIHwgMCkgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IChzMi5sZW5ndGggLSBsZW4gfCAwKSkgewor
ICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2Fy
Z3VtZW50LAorICAgICAgICAgICJCeXRlcy5ibGl0IgorICAgICAgICBdOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMoczEsIG9mczEsIHMyLCBv
ZnMyLCBsZW4pOworICB9Cit9CisKK2Z1bmN0aW9uIGJsaXRfc3RyaW5nKHMxLCBvZnMxLCBzMiwg
b2ZzMiwgbGVuKSB7CisgIGlmIChsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiAoczEubGVu
Z3RoIC0gbGVuIHwgMCkgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IChzMi5sZW5ndGggLSBsZW4gfCAw
KSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZh
bGlkX2FyZ3VtZW50LAorICAgICAgICAgICJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5n
IgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5jYW1s
X2JsaXRfc3RyaW5nKHMxLCBvZnMxLCBzMiwgb2ZzMiwgbGVuKTsKKyAgfQorfQorCitmdW5jdGlv
biBpdGVyKGYsIGEpIHsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBhLmxlbmd0aCAtIDEg
fCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIEN1cnJ5Ll8xKGYsIGFbaV0pOworICB9Cisg
IHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGl0ZXJpKGYsIGEpIHsKKyAgZm9yKHZh
ciBpID0gMCAsaV9maW5pc2ggPSBhLmxlbmd0aCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kp
eworICAgIEN1cnJ5Ll8yKGYsIGksIGFbaV0pOworICB9CisgIHJldHVybiAvKiAoKSAqLzA7Cit9
CisKK2Z1bmN0aW9uIGNvbmNhdChzZXAsIGwpIHsKKyAgaWYgKGwpIHsKKyAgICB2YXIgaGQgPSBs
WzBdOworICAgIHZhciBudW0gPSBbMF07CisgICAgdmFyIGxlbiA9IFswXTsKKyAgICBMaXN0Lml0
ZXIoZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICBudW1bMF0gPSBudW1bMF0gKyAxIHwgMDsKKyAg
ICAgICAgICBsZW5bMF0gPSBsZW5bMF0gKyBzLmxlbmd0aCB8IDA7CisgICAgICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICAgICAgfSwgbCk7CisgICAgdmFyIHIgPSBDYW1sX3N0cmluZy5jYW1s
X2NyZWF0ZV9zdHJpbmcobGVuWzBdICsgQ2FtbF9pbnQzMi5pbXVsKHNlcC5sZW5ndGgsIG51bVsw
XSAtIDEgfCAwKSB8IDApOworICAgIENhbWxfc3RyaW5nLmNhbWxfYmxpdF9ieXRlcyhoZCwgMCwg
ciwgMCwgaGQubGVuZ3RoKTsKKyAgICB2YXIgcG9zID0gW2hkLmxlbmd0aF07CisgICAgTGlzdC5p
dGVyKGZ1bmN0aW9uIChzKSB7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X2J5dGVz
KHNlcCwgMCwgciwgcG9zWzBdLCBzZXAubGVuZ3RoKTsKKyAgICAgICAgICBwb3NbMF0gPSBwb3Nb
MF0gKyBzZXAubGVuZ3RoIHwgMDsKKyAgICAgICAgICBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0
ZXMocywgMCwgciwgcG9zWzBdLCBzLmxlbmd0aCk7CisgICAgICAgICAgcG9zWzBdID0gcG9zWzBd
ICsgcy5sZW5ndGggfCAwOworICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgIH0s
IGxbMV0pOworICAgIHJldHVybiByOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBlbXB0eTsK
KyAgfQorfQorCitmdW5jdGlvbiBjYXQoYSwgYikgeworICByZXR1cm4gYS5jb25jYXQoYik7Cit9
CisKK2Z1bmN0aW9uIGlzX3NwYWNlKHBhcmFtKSB7CisgIHZhciBzd2l0Y2hlciA9IHBhcmFtIC0g
OSB8IDA7CisgIGlmIChzd2l0Y2hlciA+IDQgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgaWYgKHN3
aXRjaGVyICE9PSAyMykgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgfQorICB9CisgIGVsc2UgaWYg
KHN3aXRjaGVyICE9PSAyKSB7CisgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gdHJpbShzKSB7
CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIGkgPSAwOworICB3aGlsZShpIDwgbGVuICYm
IGlzX3NwYWNlKHNbaV0pKSB7CisgICAgaSA9IGkgKyAxIHwgMDsKKyAgfTsKKyAgdmFyIGogPSBs
ZW4gLSAxIHwgMDsKKyAgd2hpbGUoaiA+PSBpICYmIGlzX3NwYWNlKHNbal0pKSB7CisgICAgaiA9
IGogLSAxIHwgMDsKKyAgfTsKKyAgaWYgKGogPj0gaSkgeworICAgIHJldHVybiBzdWIocywgaSwg
KGogLSBpIHwgMCkgKyAxIHwgMCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGVtcHR5Owor
ICB9Cit9CisKK2Z1bmN0aW9uIGVzY2FwZWQocykgeworICB2YXIgbiA9IDA7CisgIGZvcih2YXIg
aSA9IDAgLGlfZmluaXNoID0gcy5sZW5ndGggLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsK
KyAgICB2YXIgbWF0Y2ggPSBzW2ldOworICAgIHZhciAkanM7CisgICAgaWYgKG1hdGNoID49IDMy
KSB7CisgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDM0IHwgMDsKKyAgICAgICRqcyA9IHN3
aXRjaGVyID4gNTggfHwgc3dpdGNoZXIgPCAwID8gKAorICAgICAgICAgIHN3aXRjaGVyID49IDkz
ID8gNCA6IDEKKyAgICAgICAgKSA6ICgKKyAgICAgICAgICBzd2l0Y2hlciA+IDU3IHx8IHN3aXRj
aGVyIDwgMSA/IDIgOiAxCisgICAgICAgICk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgJGpz
ID0gbWF0Y2ggPj0gMTEgPyAoCisgICAgICAgICAgbWF0Y2ggIT09IDEzID8gNCA6IDIKKyAgICAg
ICAgKSA6ICgKKyAgICAgICAgICBtYXRjaCA+PSA4ID8gMiA6IDQKKyAgICAgICAgKTsKKyAgICB9
CisgICAgbiA9IG4gKyAkanMgfCAwOworICB9CisgIGlmIChuID09PSBzLmxlbmd0aCkgeworICAg
IHJldHVybiBjb3B5KHMpOworICB9CisgIGVsc2UgeworICAgIHZhciBzJHByaW1lID0gQ2FtbF9z
dHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKG4pOworICAgIG4gPSAwOworICAgIGZvcih2YXIgaSQx
ID0gMCAsaV9maW5pc2gkMSA9IHMubGVuZ3RoIC0gMSB8IDA7IGkkMSA8PSBpX2ZpbmlzaCQxOyAr
K2kkMSl7CisgICAgICB2YXIgYyA9IHNbaSQxXTsKKyAgICAgIHZhciBleGl0ID0gMDsKKyAgICAg
IGlmIChjID49IDM1KSB7CisgICAgICAgIGlmIChjICE9PSA5MikgeworICAgICAgICAgIGlmIChj
ID49IDEyNykgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgcyRwcmltZVtuXSA9IGM7CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICB9CisgICAg
ICB9CisgICAgICBlbHNlIGlmIChjID49IDMyKSB7CisgICAgICAgIGlmIChjID49IDM0KSB7Cisg
ICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
cyRwcmltZVtuXSA9IGM7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGMgPj0g
MTQpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
c3dpdGNoIChjKSB7CisgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgIHMkcHJpbWVb
bl0gPSAvKiAiXFwiICovOTI7CisgICAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7CisgICAgICAg
ICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiYiIgKi85ODsKKyAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiXFwiICov
OTI7CisgICAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7CisgICAgICAgICAgICAgIHMkcHJpbWVb
bl0gPSAvKiAidCIgKi8xMTY7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2Ug
MTAgOiAKKyAgICAgICAgICAgICAgcyRwcmltZVtuXSA9IC8qICJcXCIgKi85MjsKKyAgICAgICAg
ICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgICAgICAgcyRwcmltZVtuXSA9IC8qICJuIiAq
LzExMDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAwIDogCisgICAgICAg
ICAgY2FzZSAxIDogCisgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgY2FzZSAzIDogCisg
ICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgY2FzZSA2
IDogCisgICAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAg
IGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgcyRwcmltZVtuXSA9IC8qICJc
XCIgKi85MjsKKyAgICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgICAgICAgcyRw
cmltZVtuXSA9IC8qICJyIiAqLzExNDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHN3aXRjaCAoZXhpdCkgeworICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiXFwiICovOTI7CisgICAgICAgICAg
ICBuID0gbiArIDEgfCAwOworICAgICAgICAgICAgcyRwcmltZVtuXSA9IDQ4ICsgKGMgLyAxMDAg
fCAwKSB8IDA7CisgICAgICAgICAgICBuID0gbiArIDEgfCAwOworICAgICAgICAgICAgcyRwcmlt
ZVtuXSA9IDQ4ICsgKGMgLyAxMCB8IDApICUgMTAgfCAwOworICAgICAgICAgICAgbiA9IG4gKyAx
IHwgMDsKKyAgICAgICAgICAgIHMkcHJpbWVbbl0gPSA0OCArIGMgJSAxMCB8IDA7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICBzJHByaW1lW25dID0g
LyogIlxcIiAqLzkyOworICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgICAgIHMk
cHJpbWVbbl0gPSBjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgfQorICAg
ICAgbiA9IG4gKyAxIHwgMDsKKyAgICB9CisgICAgcmV0dXJuIHMkcHJpbWU7CisgIH0KK30KKwor
ZnVuY3Rpb24gbWFwKGYsIHMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsKKyAgaWYgKGwpIHsKKyAg
ICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhsKTsKKyAgICBmb3IodmFy
IGkgPSAwICxpX2ZpbmlzaCA9IGwgLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICAg
IHJbaV0gPSBDdXJyeS5fMShmLCBzW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIHI7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIHM7CisgIH0KK30KKworZnVuY3Rpb24gbWFwaShmLCBzKSB7Cisg
IHZhciBsID0gcy5sZW5ndGg7CisgIGlmIChsKSB7CisgICAgdmFyIHIgPSBDYW1sX3N0cmluZy5j
YW1sX2NyZWF0ZV9zdHJpbmcobCk7CisgICAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsIC0g
MSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgICByW2ldID0gQ3VycnkuXzIoZiwgaSwg
c1tpXSk7CisgICAgfQorICAgIHJldHVybiByOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBz
OworICB9Cit9CisKK2Z1bmN0aW9uIHVwcGVyY2FzZShzKSB7CisgIHJldHVybiBtYXAoQ2hhci51
cHBlcmNhc2UsIHMpOworfQorCitmdW5jdGlvbiBsb3dlcmNhc2UocykgeworICByZXR1cm4gbWFw
KENoYXIubG93ZXJjYXNlLCBzKTsKK30KKworZnVuY3Rpb24gYXBwbHkxKGYsIHMpIHsKKyAgaWYg
KHMubGVuZ3RoKSB7CisgICAgdmFyIHIgPSBjb3B5KHMpOworICAgIHJbMF0gPSBDdXJyeS5fMShm
LCBzWzBdKTsKKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gczsKKyAg
fQorfQorCitmdW5jdGlvbiBjYXBpdGFsaXplKHMpIHsKKyAgcmV0dXJuIGFwcGx5MShDaGFyLnVw
cGVyY2FzZSwgcyk7Cit9CisKK2Z1bmN0aW9uIHVuY2FwaXRhbGl6ZShzKSB7CisgIHJldHVybiBh
cHBseTEoQ2hhci5sb3dlcmNhc2UsIHMpOworfQorCitmdW5jdGlvbiBpbmRleF9yZWMocywgbGlt
LCBfaSwgYykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGkgPSBfaTsKKyAgICBpZiAoaSA+
PSBsaW0pIHsKKyAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsK
KyAgICB9CisgICAgZWxzZSBpZiAoc1tpXSA9PT0gYykgeworICAgICAgcmV0dXJuIGk7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICBjb250aW51ZSA7Cisg
ICAgICAKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGluZGV4KHMsIGMpIHsKKyAgcmV0dXJu
IGluZGV4X3JlYyhzLCBzLmxlbmd0aCwgMCwgYyk7Cit9CisKK2Z1bmN0aW9uIGluZGV4X2Zyb20o
cywgaSwgYykgeworICB2YXIgbCA9IHMubGVuZ3RoOworICBpZiAoaSA8IDAgfHwgaSA+IGwpIHsK
KyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9h
cmd1bWVudCwKKyAgICAgICAgICAiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9t
IgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBpbmRleF9yZWMocywgbCwg
aSwgYyk7CisgIH0KK30KKworZnVuY3Rpb24gcmluZGV4X3JlYyhzLCBfaSwgYykgeworICB3aGls
ZSh0cnVlKSB7CisgICAgdmFyIGkgPSBfaTsKKyAgICBpZiAoaSA8IDApIHsKKyAgICAgIHRocm93
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAgICB9CisgICAgZWxzZSBpZiAo
c1tpXSA9PT0gYykgeworICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
X2kgPSBpIC0gMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgIH07Cit9
CisKK2Z1bmN0aW9uIHJpbmRleChzLCBjKSB7CisgIHJldHVybiByaW5kZXhfcmVjKHMsIHMubGVu
Z3RoIC0gMSB8IDAsIGMpOworfQorCitmdW5jdGlvbiByaW5kZXhfZnJvbShzLCBpLCBjKSB7Cisg
IGlmIChpIDwgLTEgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJTdHJp
bmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbSIKKyAgICAgICAgXTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gcmluZGV4X3JlYyhzLCBpLCBjKTsKKyAgfQorfQorCitmdW5jdGlv
biBjb250YWluc19mcm9tKHMsIGksIGMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsKKyAgaWYgKGkg
PCAwIHx8IGkgPiBsKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIlN0cmluZy5jb250YWluc19mcm9t
IC8gQnl0ZXMuY29udGFpbnNfZnJvbSIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICB0
cnkgeworICAgICAgaW5kZXhfcmVjKHMsIGwsIGksIGMpOworICAgICAgcmV0dXJuIC8qIHRydWUg
Ki8xOworICAgIH0KKyAgICBjYXRjaCAoZXhuKXsKKyAgICAgIGlmIChleG4gPT09IENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkgeworICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8w
OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAg
ICB9CisgIH0KK30KKworZnVuY3Rpb24gY29udGFpbnMocywgYykgeworICByZXR1cm4gY29udGFp
bnNfZnJvbShzLCAwLCBjKTsKK30KKworZnVuY3Rpb24gcmNvbnRhaW5zX2Zyb20ocywgaSwgYykg
eworICBpZiAoaSA8IDAgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsKKyAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJT
dHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbSIKKyAgICAgICAgXTsK
KyAgfQorICBlbHNlIHsKKyAgICB0cnkgeworICAgICAgcmluZGV4X3JlYyhzLCBpLCBjKTsKKyAg
ICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICB9CisgICAgY2F0Y2ggKGV4bil7CisgICAgICBp
ZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgICAg
cmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJv
dyBleG47CisgICAgICB9CisgICAgfQorICB9Cit9CisKK3ZhciBjb21wYXJlID0gQ2FtbF9vYmou
Y2FtbF9jb21wYXJlOworCit2YXIgdW5zYWZlX3RvX3N0cmluZyA9IENhbWxfc3RyaW5nLmJ5dGVz
X3RvX3N0cmluZzsKKwordmFyIHVuc2FmZV9vZl9zdHJpbmcgPSBDYW1sX3N0cmluZy5ieXRlc19v
Zl9zdHJpbmc7CisKK2V4cG9ydHMubWFrZSAgICAgICAgICAgICA9IG1ha2U7CitleHBvcnRzLmlu
aXQgICAgICAgICAgICAgPSBpbml0OworZXhwb3J0cy5lbXB0eSAgICAgICAgICAgID0gZW1wdHk7
CitleHBvcnRzLmNvcHkgICAgICAgICAgICAgPSBjb3B5OworZXhwb3J0cy5vZl9zdHJpbmcgICAg
ICAgID0gb2Zfc3RyaW5nOworZXhwb3J0cy50b19zdHJpbmcgICAgICAgID0gdG9fc3RyaW5nOwor
ZXhwb3J0cy5zdWIgICAgICAgICAgICAgID0gc3ViOworZXhwb3J0cy5zdWJfc3RyaW5nICAgICAg
ID0gc3ViX3N0cmluZzsKK2V4cG9ydHMuZXh0ZW5kICAgICAgICAgICA9IGV4dGVuZDsKK2V4cG9y
dHMuZmlsbCAgICAgICAgICAgICA9IGZpbGw7CitleHBvcnRzLmJsaXQgICAgICAgICAgICAgPSBi
bGl0OworZXhwb3J0cy5ibGl0X3N0cmluZyAgICAgID0gYmxpdF9zdHJpbmc7CitleHBvcnRzLmNv
bmNhdCAgICAgICAgICAgPSBjb25jYXQ7CitleHBvcnRzLmNhdCAgICAgICAgICAgICAgPSBjYXQ7
CitleHBvcnRzLml0ZXIgICAgICAgICAgICAgPSBpdGVyOworZXhwb3J0cy5pdGVyaSAgICAgICAg
ICAgID0gaXRlcmk7CitleHBvcnRzLm1hcCAgICAgICAgICAgICAgPSBtYXA7CitleHBvcnRzLm1h
cGkgICAgICAgICAgICAgPSBtYXBpOworZXhwb3J0cy50cmltICAgICAgICAgICAgID0gdHJpbTsK
K2V4cG9ydHMuZXNjYXBlZCAgICAgICAgICA9IGVzY2FwZWQ7CitleHBvcnRzLmluZGV4ICAgICAg
ICAgICAgPSBpbmRleDsKK2V4cG9ydHMucmluZGV4ICAgICAgICAgICA9IHJpbmRleDsKK2V4cG9y
dHMuaW5kZXhfZnJvbSAgICAgICA9IGluZGV4X2Zyb207CitleHBvcnRzLnJpbmRleF9mcm9tICAg
ICAgPSByaW5kZXhfZnJvbTsKK2V4cG9ydHMuY29udGFpbnMgICAgICAgICA9IGNvbnRhaW5zOwor
ZXhwb3J0cy5jb250YWluc19mcm9tICAgID0gY29udGFpbnNfZnJvbTsKK2V4cG9ydHMucmNvbnRh
aW5zX2Zyb20gICA9IHJjb250YWluc19mcm9tOworZXhwb3J0cy51cHBlcmNhc2UgICAgICAgID0g
dXBwZXJjYXNlOworZXhwb3J0cy5sb3dlcmNhc2UgICAgICAgID0gbG93ZXJjYXNlOworZXhwb3J0
cy5jYXBpdGFsaXplICAgICAgID0gY2FwaXRhbGl6ZTsKK2V4cG9ydHMudW5jYXBpdGFsaXplICAg
ICA9IHVuY2FwaXRhbGl6ZTsKK2V4cG9ydHMuY29tcGFyZSAgICAgICAgICA9IGNvbXBhcmU7Citl
eHBvcnRzLnVuc2FmZV90b19zdHJpbmcgPSB1bnNhZmVfdG9fc3RyaW5nOworZXhwb3J0cy51bnNh
ZmVfb2Zfc3RyaW5nID0gdW5zYWZlX29mX3N0cmluZzsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisv
Ly8vLy8vLyBlbmQgb2YgYnl0ZXMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOwor
wqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9hcnJheSddID0gZnVuY3Rpb24oKSB7CivCoCDC
oCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9hcnJheS5qcyAvLy8v
Ly8vLworJ3VzZSBzdHJpY3QnOworCisKK2Z1bmN0aW9uIGNhbWxfYXJyYXlfc3ViKHgsIG9mZnNl
dCwgbGVuKSB7CisgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkobGVuKTsKKyAgdmFyIGogPSAwOwor
ICB2YXIgaSA9IG9mZnNldDsKKyAgd2hpbGUoaiA8IGxlbikgeworICAgIHJlc3VsdFtqXSA9IHhb
aV07CisgICAgaiA9IGogKyAxIHwgMDsKKyAgICBpID0gaSArIDEgfCAwOworICB9OworICByZXR1
cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBsZW4oX2FjYywgX2wpIHsKKyAgd2hpbGUodHJ1ZSkg
eworICAgIHZhciBsID0gX2w7CisgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgaWYgKGwpIHsKKyAg
ICAgIF9sID0gbFsxXTsKKyAgICAgIF9hY2MgPSBsWzBdLmxlbmd0aCArIGFjYyB8IDA7CisgICAg
ICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gYWNj
OworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmlsbChhcnIsIF9pLCBfbCkgeworICB3aGls
ZSh0cnVlKSB7CisgICAgdmFyIGwgPSBfbDsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChsKSB7
CisgICAgICB2YXIgeCA9IGxbMF07CisgICAgICB2YXIgbCQxID0geC5sZW5ndGg7CisgICAgICB2
YXIgayA9IGk7CisgICAgICB2YXIgaiA9IDA7CisgICAgICB3aGlsZShqIDwgbCQxKSB7CisgICAg
ICAgIGFycltrXSA9IHhbal07CisgICAgICAgIGsgPSBrICsgMSB8IDA7CisgICAgICAgIGogPSBq
ICsgMSB8IDA7CisgICAgICB9OworICAgICAgX2wgPSBsWzFdOworICAgICAgX2kgPSBrOworICAg
ICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwp
IHsKKyAgdmFyIHYgPSBsZW4oMCwgbCk7CisgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkodik7Cisg
IGZpbGwocmVzdWx0LCAwLCBsKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gY2Ft
bF9tYWtlX3ZlY3QobGVuLCBpbml0KSB7CisgIHZhciBiID0gbmV3IEFycmF5KGxlbik7CisgIGZv
cih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7
CisgICAgYltpXSA9IGluaXQ7CisgIH0KKyAgcmV0dXJuIGI7Cit9CisKK2Z1bmN0aW9uIGNhbWxf
YXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7CisgIGlmIChpMiA8PSBpMSkgeworICAg
IGZvcih2YXIgaiA9IDAgLGpfZmluaXNoID0gbGVuIC0gMSB8IDA7IGogPD0gal9maW5pc2g7ICsr
ail7CisgICAgICBhMltqICsgaTIgfCAwXSA9IGExW2ogKyBpMSB8IDBdOworICAgIH0KKyAgICBy
ZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIGZvcih2YXIgaiQxID0gbGVuIC0g
MSB8IDA7IGokMSA+PSAwOyAtLWokMSl7CisgICAgICBhMltqJDEgKyBpMiB8IDBdID0gYTFbaiQx
ICsgaTEgfCAwXTsKKyAgICB9CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQorfQorCitleHBv
cnRzLmNhbWxfYXJyYXlfc3ViICAgID0gY2FtbF9hcnJheV9zdWI7CitleHBvcnRzLmNhbWxfYXJy
YXlfY29uY2F0ID0gY2FtbF9hcnJheV9jb25jYXQ7CitleHBvcnRzLmNhbWxfbWFrZV92ZWN0ICAg
ID0gY2FtbF9tYWtlX3ZlY3Q7CitleHBvcnRzLmNhbWxfYXJyYXlfYmxpdCAgID0gY2FtbF9hcnJh
eV9ibGl0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX2FycmF5
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ2NhbWxfYnVpbHRpbl9leGNlcHRpb25zJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBl
eHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5q
cyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisKK3ZhciBvdXRfb2ZfbWVtb3J5ID0gLyogdHVw
bGUgKi9bCisgICJPdXRfb2ZfbWVtb3J5IiwKKyAgMAorXTsKKwordmFyIHN5c19lcnJvciA9IC8q
IHR1cGxlICovWworICAiU3lzX2Vycm9yIiwKKyAgLTEKK107CisKK3ZhciBmYWlsdXJlID0gLyog
dHVwbGUgKi9bCisgICJGYWlsdXJlIiwKKyAgLTIKK107CisKK3ZhciBpbnZhbGlkX2FyZ3VtZW50
ID0gLyogdHVwbGUgKi9bCisgICJJbnZhbGlkX2FyZ3VtZW50IiwKKyAgLTMKK107CisKK3ZhciBl
bmRfb2ZfZmlsZSA9IC8qIHR1cGxlICovWworICAiRW5kX29mX2ZpbGUiLAorICAtNAorXTsKKwor
dmFyIGRpdmlzaW9uX2J5X3plcm8gPSAvKiB0dXBsZSAqL1sKKyAgIkRpdmlzaW9uX2J5X3plcm8i
LAorICAtNQorXTsKKwordmFyIG5vdF9mb3VuZCA9IC8qIHR1cGxlICovWworICAiTm90X2ZvdW5k
IiwKKyAgLTYKK107CisKK3ZhciBtYXRjaF9mYWlsdXJlID0gLyogdHVwbGUgKi9bCisgICJNYXRj
aF9mYWlsdXJlIiwKKyAgLTcKK107CisKK3ZhciBzdGFja19vdmVyZmxvdyA9IC8qIHR1cGxlICov
WworICAiU3RhY2tfb3ZlcmZsb3ciLAorICAtOAorXTsKKwordmFyIHN5c19ibG9ja2VkX2lvID0g
LyogdHVwbGUgKi9bCisgICJTeXNfYmxvY2tlZF9pbyIsCisgIC05CitdOworCit2YXIgYXNzZXJ0
X2ZhaWx1cmUgPSAvKiB0dXBsZSAqL1sKKyAgIkFzc2VydF9mYWlsdXJlIiwKKyAgLTEwCitdOwor
Cit2YXIgdW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSAvKiB0dXBsZSAqL1sKKyAgIlVuZGVm
aW5lZF9yZWN1cnNpdmVfbW9kdWxlIiwKKyAgLTExCitdOworCitleHBvcnRzLm91dF9vZl9tZW1v
cnkgICAgICAgICAgICAgID0gb3V0X29mX21lbW9yeTsKK2V4cG9ydHMuc3lzX2Vycm9yICAgICAg
ICAgICAgICAgICAgPSBzeXNfZXJyb3I7CitleHBvcnRzLmZhaWx1cmUgICAgICAgICAgICAgICAg
ICAgID0gZmFpbHVyZTsKK2V4cG9ydHMuaW52YWxpZF9hcmd1bWVudCAgICAgICAgICAgPSBpbnZh
bGlkX2FyZ3VtZW50OworZXhwb3J0cy5lbmRfb2ZfZmlsZSAgICAgICAgICAgICAgICA9IGVuZF9v
Zl9maWxlOworZXhwb3J0cy5kaXZpc2lvbl9ieV96ZXJvICAgICAgICAgICA9IGRpdmlzaW9uX2J5
X3plcm87CitleHBvcnRzLm5vdF9mb3VuZCAgICAgICAgICAgICAgICAgID0gbm90X2ZvdW5kOwor
ZXhwb3J0cy5tYXRjaF9mYWlsdXJlICAgICAgICAgICAgICA9IG1hdGNoX2ZhaWx1cmU7CitleHBv
cnRzLnN0YWNrX292ZXJmbG93ICAgICAgICAgICAgID0gc3RhY2tfb3ZlcmZsb3c7CitleHBvcnRz
LnN5c19ibG9ja2VkX2lvICAgICAgICAgICAgID0gc3lzX2Jsb2NrZWRfaW87CitleHBvcnRzLmFz
c2VydF9mYWlsdXJlICAgICAgICAgICAgID0gYXNzZXJ0X2ZhaWx1cmU7CitleHBvcnRzLnVuZGVm
aW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gdW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGU7CisvKiBO
byBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ2NhbWxfYnl0ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsK
Ky8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxfYnl0ZXMuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsK
KwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBnZXQocywgaSkgeworICBpZiAoaSA8IDAgfHwgaSA+
PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIgor
ICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBzW2ldOworICB9Cit9CisKK2V4
cG9ydHMuZ2V0ID0gZ2V0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBj
YW1sX2J5dGVzLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKwor
ICBfcmVnaXN0cnlbJ2NhbWxfZXhjZXB0aW9ucyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQg
ZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9leGNlcHRpb25zLmpzIC8vLy8v
Ly8vCisndXNlIHN0cmljdCc7CisKKwordmFyIGlkID0gWzBdOworCitmdW5jdGlvbiBjYW1sX3Nl
dF9vb19pZChiKSB7CisgIGJbMV0gPSBpZFswXTsKKyAgaWRbMF0gKz0gMTsKKyAgcmV0dXJuIGI7
Cit9CisKK2Z1bmN0aW9uIGdldF9pZCgpIHsKKyAgaWRbMF0gKz0gMTsKKyAgcmV0dXJuIGlkWzBd
OworfQorCitmdW5jdGlvbiBjcmVhdGUoc3RyKSB7CisgIHZhciB2XzAwMSA9IGdldF9pZCgvKiAo
KSAqLzApOworICB2YXIgdiA9IC8qIHR1cGxlICovWworICAgIHN0ciwKKyAgICB2XzAwMQorICBd
OworICB2LnRhZyA9IDI0ODsKKyAgcmV0dXJuIHY7Cit9CisKK2V4cG9ydHMuY2FtbF9zZXRfb29f
aWQgPSBjYW1sX3NldF9vb19pZDsKK2V4cG9ydHMuZ2V0X2lkICAgICAgICAgPSBnZXRfaWQ7Citl
eHBvcnRzLmNyZWF0ZSAgICAgICAgID0gY3JlYXRlOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8v
Ly8vLy8vIGVuZCBvZiBjYW1sX2V4Y2VwdGlvbnMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBl
eHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9mbG9hdCddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9mbG9h
dC5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisKK2Z1bmN0aW9uIGNhbWxfaW50MzJfZmxv
YXRfb2ZfYml0cyh4KSB7CisgIHZhciBpbnQzMiA9IG5ldyBJbnQzMkFycmF5KC8qIGFycmF5ICov
W3hdKTsKKyAgdmFyIGZsb2F0MzIgPSBuZXcgRmxvYXQzMkFycmF5KGludDMyLmJ1ZmZlcik7Cisg
IHJldHVybiBmbG9hdDMyWzBdOworfQorCitmdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxv
YXQoeCkgeworICB2YXIgZmxvYXQzMiA9IG5ldyBGbG9hdDMyQXJyYXkoLyogZmxvYXQgYXJyYXkg
Ki9beF0pOworICByZXR1cm4gbmV3IEludDMyQXJyYXkoZmxvYXQzMi5idWZmZXIpWzBdOworfQor
CitmdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0KHgpIHsKKyAgaWYgKGlzRmluaXRlKHgpKSB7
CisgICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4KSB7CisgICAg
ICByZXR1cm4gLyogRlBfbm9ybWFsICovMDsKKyAgICB9CisgICAgZWxzZSBpZiAoeCAhPT0gMCkg
eworICAgICAgcmV0dXJuIC8qIEZQX3N1Ym5vcm1hbCAqLzE7CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgcmV0dXJuIC8qIEZQX3plcm8gKi8yOworICAgIH0KKyAgfQorICBlbHNlIGlmIChpc05h
Tih4KSkgeworICAgIHJldHVybiAvKiBGUF9uYW4gKi80OworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiBGUF9pbmZpbml0ZSAqLzM7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9tb2RmX2Zs
b2F0KHgpIHsKKyAgaWYgKGlzRmluaXRlKHgpKSB7CisgICAgdmFyIG5lZyA9ICsoMSAvIHggPCAw
KTsKKyAgICB2YXIgeCQxID0gTWF0aC5hYnMoeCk7CisgICAgdmFyIGkgPSBNYXRoLmZsb29yKHgk
MSk7CisgICAgdmFyIGYgPSB4JDEgLSBpOworICAgIGlmIChuZWcpIHsKKyAgICAgIHJldHVybiAv
KiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgLWYsCisgICAgICAgICAgICAgIC1pCisgICAgICAg
ICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICAgZiwKKyAgICAgICAgICAgICAgaQorICAgICAgICAgICAgXTsKKyAgICB9Cisg
IH0KKyAgZWxzZSBpZiAoaXNOYU4oeCkpIHsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICBOYU4sCisgICAgICAgICAgICBOYU4KKyAgICAgICAgICBdOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIDEgLyB4LAorICAgICAgICAg
ICAgeAorICAgICAgICAgIF07CisgIH0KK30KKwordmFyIGNhbWxfbGRleHBfZmxvYXQgPSAoIGZ1
bmN0aW9uICh4LGV4cCkgeworICAgIGV4cCB8PSAwOworICAgIGlmIChleHAgPiAxMDIzKSB7Cisg
ICAgICAgIGV4cCAtPSAxMDIzOworICAgICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpOworICAg
ICAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5vcm1hbAorICAgICAg
ICAgICAgZXhwIC09IDEwMjM7CisgICAgICAgICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpOwor
ICAgICAgICB9CisgICAgfQorICAgIGlmIChleHAgPCAtMTAyMykgeworICAgICAgICBleHAgKz0g
MTAyMzsKKyAgICAgICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7CisgICAgfQorICAgIHggKj0g
TWF0aC5wb3coMiwgZXhwKTsKKyAgICByZXR1cm4geDsKK30KKyk7CisKK3ZhciBjYW1sX2ZyZXhw
X2Zsb2F0ID0gKGZ1bmN0aW9uICh4KSB7CisgICAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4
KSkgcmV0dXJuIFsgeCwgMF07CisgICAgdmFyIG5lZyA9IHggPCAwOworICAgIGlmIChuZWcpIHgg
PSAtIHg7CisgICAgdmFyIGV4cCA9IE1hdGguZmxvb3IoTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSkg
KyAxOworICAgIHggKj0gTWF0aC5wb3coMiwtZXhwKTsKKyAgICBpZiAoeCA8IDAuNSkgeyB4ICo9
IDI7IGV4cCAtPSAxOyB9CisgICAgaWYgKG5lZykgeCA9IC0geDsKKyAgICByZXR1cm4gW3gsIGV4
cF07Cit9CispOworCitmdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUoeCwgeSkgeworICBpZiAo
eCA9PT0geSkgeworICAgIHJldHVybiAwOworICB9CisgIGVsc2UgaWYgKHggPCB5KSB7CisgICAg
cmV0dXJuIC0xOworICB9CisgIGVsc2UgaWYgKHggPiB5IHx8IHggPT09IHgpIHsKKyAgICByZXR1
cm4gMTsKKyAgfQorICBlbHNlIGlmICh5ID09PSB5KSB7CisgICAgcmV0dXJuIC0xOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfY29weXNpZ25f
ZmxvYXQoeCwgeSkgeworICB2YXIgeCQxID0gTWF0aC5hYnMoeCk7CisgIHZhciB5JDEgPSB5ID09
PSAwID8gMSAvIHkgOiB5OworICBpZiAoeSQxIDwgMCkgeworICAgIHJldHVybiAteCQxOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiB4JDE7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9leHBt
MV9mbG9hdCh4KSB7CisgIHZhciB5ID0gTWF0aC5leHAoeCk7CisgIHZhciB6ID0geSAtIDE7Cisg
IGlmIChNYXRoLmFicyh4KSA+IDEpIHsKKyAgICByZXR1cm4gejsKKyAgfQorICBlbHNlIGlmICh6
ID09PSAwKSB7CisgICAgcmV0dXJuIHg7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHggKiB6
IC8gTWF0aC5sb2coeSk7CisgIH0KK30KKwordmFyIGNhbWxfaHlwb3RfZmxvYXQgPSAoIGZ1bmN0
aW9uICh4LCB5KSB7CisgICAgdmFyIHgwID0gTWF0aC5hYnMoeCksIHkwID0gTWF0aC5hYnMoeSk7
CisgICAgdmFyIGEgPSBNYXRoLm1heCh4MCwgeTApLCBiID0gTWF0aC5taW4oeDAseTApIC8gKGE/
YToxKTsKKyAgICByZXR1cm4gYSAqIE1hdGguc3FydCgxICsgYipiKTsKK30KKyk7CisKK3ZhciBj
YW1sX2xvZzEwX2Zsb2F0ID0gKCBmdW5jdGlvbiAgKHgpIHsgCisgICByZXR1cm4gTWF0aC5MT0cx
MEUgKiBNYXRoLmxvZyh4KTsgfQorKTsKKworZXhwb3J0cy5jYW1sX2ludDMyX2Zsb2F0X29mX2Jp
dHMgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHM7CitleHBvcnRzLmNhbWxfaW50MzJfYml0c19v
Zl9mbG9hdCA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdDsKK2V4cG9ydHMuY2FtbF9jbGFzc2lm
eV9mbG9hdCAgICAgID0gY2FtbF9jbGFzc2lmeV9mbG9hdDsKK2V4cG9ydHMuY2FtbF9tb2RmX2Zs
b2F0ICAgICAgICAgID0gY2FtbF9tb2RmX2Zsb2F0OworZXhwb3J0cy5jYW1sX2xkZXhwX2Zsb2F0
ICAgICAgICAgPSBjYW1sX2xkZXhwX2Zsb2F0OworZXhwb3J0cy5jYW1sX2ZyZXhwX2Zsb2F0ICAg
ICAgICAgPSBjYW1sX2ZyZXhwX2Zsb2F0OworZXhwb3J0cy5jYW1sX2Zsb2F0X2NvbXBhcmUgICAg
ICAgPSBjYW1sX2Zsb2F0X2NvbXBhcmU7CitleHBvcnRzLmNhbWxfY29weXNpZ25fZmxvYXQgICAg
ICA9IGNhbWxfY29weXNpZ25fZmxvYXQ7CitleHBvcnRzLmNhbWxfZXhwbTFfZmxvYXQgICAgICAg
ICA9IGNhbWxfZXhwbTFfZmxvYXQ7CitleHBvcnRzLmNhbWxfaHlwb3RfZmxvYXQgICAgICAgICA9
IGNhbWxfaHlwb3RfZmxvYXQ7CitleHBvcnRzLmNhbWxfbG9nMTBfZmxvYXQgICAgICAgICA9IGNh
bWxfbG9nMTBfZmxvYXQ7CisvKiBjYW1sX2xkZXhwX2Zsb2F0IE5vdCBhIHB1cmUgbW9kdWxlICov
CisvLy8vLy8vLyBlbmQgb2YgY2FtbF9mbG9hdC5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4
cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX2Zvcm1hdCddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9mb3Jt
YXQuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5ICAgICAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfaW50MzIgICAgICAgICAgICAgID0g
cmVxdWlyZSgiLi9jYW1sX2ludDMyIik7Cit2YXIgQ2FtbF9pbnQ2NCAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL2NhbWxfaW50NjQiKTsKK3ZhciBDYW1sX3V0aWxzICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF91dGlscyIpOwordmFyIENhbWxfc3RyaW5nICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVx
dWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBjYW1sX2ZhaWx3
aXRoKHMpIHsKKyAgdGhyb3cgWworICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWls
dXJlLAorICAgICAgICBzCisgICAgICBdOworfQorCitmdW5jdGlvbiBwYXJzZV9kaWdpdChjKSB7
CisgIGlmIChjID49IDY1KSB7CisgICAgaWYgKGMgPj0gOTcpIHsKKyAgICAgIGlmIChjID49IDEy
MykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIGMgLSA4NyB8IDA7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGMgPj0gOTEp
IHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gYyAt
IDU1IHwgMDsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoYyA+IDU3IHx8IGMgPCA0OCkgeworICAg
IHJldHVybiAtMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYyAtIC8qICIwIiAqLzQ4IHwg
MDsKKyAgfQorfQorCitmdW5jdGlvbiBpbnRfb2Zfc3RyaW5nX2Jhc2UocGFyYW0pIHsKKyAgc3dp
dGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gODsKKyAgICBjYXNl
IDEgOiAKKyAgICAgICAgcmV0dXJuIDE2OworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4g
MTA7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAyOworICAgIAorICB9Cit9CisKK2Z1
bmN0aW9uIHBhcnNlX3NpZ25fYW5kX2Jhc2UocykgeworICB2YXIgc2lnbiA9IDE7CisgIHZhciBi
YXNlID0gLyogRGVjICovMjsKKyAgdmFyIGkgPSAwOworICBpZiAoc1tpXSA9PT0gIi0iKSB7Cisg
ICAgc2lnbiA9IC0xOworICAgIGkgPSBpICsgMSB8IDA7CisgIH0KKyAgdmFyIG1hdGNoID0gcy5j
aGFyQ29kZUF0KGkpOworICB2YXIgbWF0Y2gkMSA9IHMuY2hhckNvZGVBdChpICsgMSB8IDApOwor
ICBpZiAobWF0Y2ggPT09IDQ4KSB7CisgICAgaWYgKG1hdGNoJDEgPj0gODkpIHsKKyAgICAgIGlm
IChtYXRjaCQxICE9PSA5OCkgeworICAgICAgICBpZiAobWF0Y2gkMSAhPT0gMTExKSB7CisgICAg
ICAgICAgaWYgKG1hdGNoJDEgPT09IDEyMCkgeworICAgICAgICAgICAgYmFzZSA9IC8qIEhleCAq
LzE7CisgICAgICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgICAgIH0KKyAgICAgICAgICAK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBiYXNlID0gLyogT2N0ICovMDsK
KyAgICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgYmFzZSA9IC8qIEJpbiAqLzM7CisgICAgICAgIGkgPSBpICsgMiB8IDA7Cisg
ICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKG1hdGNoJDEgIT09IDY2KSB7CisgICAgICBpZiAo
bWF0Y2gkMSAhPT0gNzkpIHsKKyAgICAgICAgaWYgKG1hdGNoJDEgPj0gODgpIHsKKyAgICAgICAg
ICBiYXNlID0gLyogSGV4ICovMTsKKyAgICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGJhc2UgPSAvKiBPY3Qg
Ki8wOworICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIGJhc2UgPSAvKiBCaW4gKi8zOworICAgICAgaSA9IGkgKyAyIHwgMDsKKyAgICB9Cisg
IH0KKyAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgIGksCisgICAgICAgICAgc2lnbiwK
KyAgICAgICAgICBiYXNlCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGNhbWxfaW50X29mX3N0
cmluZyhzKSB7CisgIHZhciBtYXRjaCA9IHBhcnNlX3NpZ25fYW5kX2Jhc2Uocyk7CisgIHZhciBp
ID0gbWF0Y2hbMF07CisgIHZhciBiYXNlID0gaW50X29mX3N0cmluZ19iYXNlKG1hdGNoWzJdKTsK
KyAgdmFyIHRocmVzaG9sZCA9IDQyOTQ5NjcyOTU7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAg
dmFyIGMgPSBpIDwgbGVuID8gcy5jaGFyQ29kZUF0KGkpIDogLyogIlwwMDAiICovMDsKKyAgdmFy
IGQgPSBwYXJzZV9kaWdpdChjKTsKKyAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgeworICAgIHRo
cm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAg
ICAgICJpbnRfb2Zfc3RyaW5nIgorICAgICAgICBdOworICB9CisgIHZhciBhdXggPSBmdW5jdGlv
biAoX2FjYywgX2spIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgayA9IF9rOworICAg
ICAgdmFyIGFjYyA9IF9hY2M7CisgICAgICBpZiAoayA9PT0gbGVuKSB7CisgICAgICAgIHJldHVy
biBhY2M7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIGEgPSBzLmNoYXJDb2Rl
QXQoayk7CisgICAgICAgIGlmIChhID09PSAvKiAiXyIgKi85NSkgeworICAgICAgICAgIF9rID0g
ayArIDEgfCAwOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgdiA9IHBhcnNlX2RpZ2l0KGEpOworICAgICAg
ICAgIGlmICh2IDwgMCB8fCB2ID49IGJhc2UpIHsKKyAgICAgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICAg
ICAgICAgICAiaW50X29mX3N0cmluZyIKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBhY2MkMSA9IGJhc2UgKiBhY2MgKyB2
OworICAgICAgICAgICAgaWYgKGFjYyQxID4gdGhyZXNob2xkKSB7CisgICAgICAgICAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVy
ZSwKKyAgICAgICAgICAgICAgICAgICAgImludF9vZl9zdHJpbmciCisgICAgICAgICAgICAgICAg
ICBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9r
ID0gayArIDEgfCAwOworICAgICAgICAgICAgICBfYWNjID0gYWNjJDE7CisgICAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHJlcyA9IG1hdGNoWzFdICog
YXV4KGQsIGkgKyAxIHwgMCk7CisgIHZhciBvcl9yZXMgPSByZXMgfCAwOworICBpZiAoYmFzZSA9
PT0gMTAgJiYgcmVzICE9PSBvcl9yZXMpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAgICAgICAiaW50X29mX3N0cmluZyIKKyAg
ICAgICAgXTsKKyAgfQorICByZXR1cm4gb3JfcmVzOworfQorCitmdW5jdGlvbiBjYW1sX2ludDY0
X29mX3N0cmluZyhzKSB7CisgIHZhciBtYXRjaCA9IHBhcnNlX3NpZ25fYW5kX2Jhc2Uocyk7Cisg
IHZhciBoYmFzZSA9IG1hdGNoWzJdOworICB2YXIgaSA9IG1hdGNoWzBdOworICB2YXIgYmFzZSA9
IENhbWxfaW50NjQub2ZfaW50MzIoaW50X29mX3N0cmluZ19iYXNlKGhiYXNlKSk7CisgIHZhciBz
aWduID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMihtYXRjaFsxXSk7CisgIHZhciB0aHJlc2hvbGQ7Cisg
IHN3aXRjaCAoaGJhc2UpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgdGhyZXNob2xkID0gLyog
aW50NjQgKi9bCisgICAgICAgICAgLyogaGkgKi81MzY4NzA5MTEsCisgICAgICAgICAgLyogbG8g
Ki80Mjk0OTY3Mjk1CisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMSA6IAor
ICAgICAgICB0aHJlc2hvbGQgPSAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAvKiBoaSAqLzI2ODQz
NTQ1NSwKKyAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyOTUKKyAgICAgICAgXTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSAyIDogCisgICAgICAgIHRocmVzaG9sZCA9IC8qIGludDY0ICovWwor
ICAgICAgICAgIC8qIGhpICovNDI5NDk2NzI5LAorICAgICAgICAgIC8qIGxvICovMjU3Njk4MDM3
NworICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAgdGhy
ZXNob2xkID0gLyogaW50NjQgKi9bCisgICAgICAgICAgLyogaGkgKi8yMTQ3NDgzNjQ3LAorICAg
ICAgICAgIC8qIGxvICovNDI5NDk2NzI5NQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAg
ICAKKyAgfQorICB2YXIgbGVuID0gcy5sZW5ndGg7CisgIHZhciBjID0gaSA8IGxlbiA/IHMuY2hh
ckNvZGVBdChpKSA6IC8qICJcMDAwIiAqLzA7CisgIHZhciBkID0gQ2FtbF9pbnQ2NC5vZl9pbnQz
MihwYXJzZV9kaWdpdChjKSk7CisgIGlmIChDYW1sX2ludDY0Lmx0KGQsIC8qIGludDY0ICovWwor
ICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAgXSkgfHwg
Q2FtbF9pbnQ2NC5nZShkLCBiYXNlKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAgICJpbnQ2NF9vZl9zdHJpbmciCisg
ICAgICAgIF07CisgIH0KKyAgdmFyIGF1eCA9IGZ1bmN0aW9uIChfYWNjLCBfaykgeworICAgIHdo
aWxlKHRydWUpIHsKKyAgICAgIHZhciBrID0gX2s7CisgICAgICB2YXIgYWNjID0gX2FjYzsKKyAg
ICAgIGlmIChrID09PSBsZW4pIHsKKyAgICAgICAgcmV0dXJuIGFjYzsKKyAgICAgIH0KKyAgICAg
IGVsc2UgeworICAgICAgICB2YXIgYSA9IHMuY2hhckNvZGVBdChrKTsKKyAgICAgICAgaWYgKGEg
PT09IC8qICJfIiAqLzk1KSB7CisgICAgICAgICAgX2sgPSBrICsgMSB8IDA7CisgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgIHZhciB2ID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMihwYXJzZV9kaWdpdChhKSk7CisgICAgICAg
ICAgaWYgKENhbWxfaW50NjQubHQodiwgLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgICAv
KiBoaSAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAgICAgICAgICBd
KSB8fCBDYW1sX2ludDY0LmdlKHYsIGJhc2UpKSB7CisgICAgICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAg
ICAgICAgICAgImludDY0X29mX3N0cmluZyIKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBhY2MkMSA9IENhbWxfaW50NjQu
YWRkKENhbWxfaW50NjQubXVsKGJhc2UsIGFjYyksIHYpOworICAgICAgICAgICAgaWYgKENhbWxf
aW50NjQuZ3QoYWNjJDEsIHRocmVzaG9sZCkpIHsKKyAgICAgICAgICAgICAgdGhyb3cgWworICAg
ICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAg
ICAgICAgICAgICAgICAiaW50NjRfb2Zfc3RyaW5nIgorICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBfayA9IGsgKyAx
IHwgMDsKKyAgICAgICAgICAgICAgX2FjYyA9IGFjYyQxOworICAgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgfQorICAgIH07CisgIH07CisgIHZhciByZXMgPSBDYW1sX2ludDY0Lm11bChzaWdu
LCBhdXgoZCwgaSArIDEgfCAwKSk7CisgIHZhciBvcl9yZXNfMDAwID0gLyogaGkgKi9yZXNbMF0g
fCAvKiBoaSAqLzA7CisgIHZhciBvcl9yZXNfMDAxID0gLyogbG8gKi8ocmVzWzFdID4+PiAwKTsK
KyAgdmFyIG9yX3JlcyA9IC8qIGludDY0ICovWworICAgIG9yX3Jlc18wMDAsCisgICAgb3JfcmVz
XzAwMQorICBdOworICBpZiAoQ2FtbF9pbnQ2NC5lcShiYXNlLCAvKiBpbnQ2NCAqL1sKKyAgICAg
ICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgLyogbG8gKi8xMAorICAgICAgICBdKSAmJiBDYW1s
X2ludDY0Lm5lcShyZXMsIG9yX3JlcykpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAgICAgICAiaW50NjRfb2Zfc3RyaW5nIgor
ICAgICAgICBdOworICB9CisgIHJldHVybiBvcl9yZXM7Cit9CisKK2Z1bmN0aW9uIGludF9vZl9i
YXNlKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAg
cmV0dXJuIDg7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAxNjsKKyAgICBjYXNlIDIg
OiAKKyAgICAgICAgcmV0dXJuIDEwOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIGxvd2VyY2Fz
ZShjKSB7CisgIGlmIChjID49IC8qICJBIiAqLzY1ICYmIGMgPD0gLyogIloiICovOTAgfHwgYyA+
PSAvKiAiXDE5MiIgKi8xOTIgJiYgYyA8PSAvKiAiXDIxNCIgKi8yMTQgfHwgYyA+PSAvKiAiXDIx
NiIgKi8yMTYgJiYgYyA8PSAvKiAiXDIyMiIgKi8yMjIpIHsKKyAgICByZXR1cm4gYyArIDMyIHwg
MDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYzsKKyAgfQorfQorCitmdW5jdGlvbiBwYXJz
ZV9mb3JtYXQoZm10KSB7CisgIHZhciBsZW4gPSBmbXQubGVuZ3RoOworICBpZiAobGVuID4gMzEp
IHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxp
ZF9hcmd1bWVudCwKKyAgICAgICAgICAiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nIgorICAg
ICAgICBdOworICB9CisgIHZhciBmID0gLyogcmVjb3JkICovWworICAgIC8qIGp1c3RpZnkgKi8i
KyIsCisgICAgLyogc2lnbnN0eWxlICovIi0iLAorICAgIC8qIGZpbHRlciAqLyIgIiwKKyAgICAv
KiBhbHRlcm5hdGUgOiBmYWxzZSAqLzAsCisgICAgLyogYmFzZSA6IERlYyAqLzIsCisgICAgLyog
c2lnbmVkY29udiA6IGZhbHNlICovMCwKKyAgICAvKiB3aWR0aCAqLzAsCisgICAgLyogdXBwZXJj
YXNlIDogZmFsc2UgKi8wLAorICAgIC8qIHNpZ24gKi8xLAorICAgIC8qIHByZWMgKi8tMSwKKyAg
ICAvKiBjb252ICovImYiCisgIF07CisgIHZhciBfaSA9IDA7CisgIHdoaWxlKHRydWUpIHsKKyAg
ICB2YXIgaSA9IF9pOworICAgIGlmIChpID49IGxlbikgeworICAgICAgcmV0dXJuIGY7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgdmFyIGMgPSBmbXQuY2hhckNvZGVBdChpKTsKKyAgICAgIHZh
ciBleGl0ID0gMDsKKyAgICAgIGlmIChjID49IDY5KSB7CisgICAgICAgIGlmIChjID49IDg4KSB7
CisgICAgICAgICAgaWYgKGMgPj0gMTIxKSB7CisgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKGMgLSA4OCB8IDAp
IHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICBmWy8qIGJhc2Ug
Ki80XSA9IC8qIEhleCAqLzE7CisgICAgICAgICAgICAgICAgICBmWy8qIHVwcGVyY2FzZSAqLzdd
ID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAg
ICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAg
ICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgICAg
ICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgMjMgOiAKKyAgICAgICAgICAgICAgICAgIGZbLyogYmFzZSAqLzRdID0gLyogT2N0ICovMDsK
KyAgICAgICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAgICAgY29u
dGludWUgOworICAgICAgICAgICAgICAgICAgY2FzZSAyOSA6IAorICAgICAgICAgICAgICAgICAg
ZlsvKiBiYXNlICovNF0gPSAvKiBEZWMgKi8yOworICAgICAgICAgICAgICAgICAgX2kgPSBpICsg
MSB8IDA7CisgICAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgIGNhc2UgMyA6
IAorICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAg
ICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAg
ICAgY2FzZSA4IDogCisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgICBjYXNl
IDEwIDogCisgICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgY2FzZSAxNiA6
IAorICAgICAgICAgICAgICBjYXNlIDE4IDogCisgICAgICAgICAgICAgIGNhc2UgMTkgOiAKKyAg
ICAgICAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgICBjYXNlIDIxIDogCisgICAgICAg
ICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgICAgY2FzZSAyNCA6IAorICAgICAgICAgICAg
ICBjYXNlIDI1IDogCisgICAgICAgICAgICAgIGNhc2UgMjYgOiAKKyAgICAgICAgICAgICAgY2Fz
ZSAyNyA6IAorICAgICAgICAgICAgICBjYXNlIDI4IDogCisgICAgICAgICAgICAgIGNhc2UgMzAg
OiAKKyAgICAgICAgICAgICAgY2FzZSAzMSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAzMiA6IAorICAg
ICAgICAgICAgICAgICAgZlsvKiBiYXNlICovNF0gPSAvKiBIZXggKi8xOworICAgICAgICAgICAg
ICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSBpZiAoYyA+PSA3MikgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGZbLyogc2lnbmVkY29udiAqLzVdID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgZlsvKiB1cHBlcmNhc2UgKi83XSA9IC8qIHRydWUgKi8xOworICAg
ICAgICAgIGZbLyogY29udiAqLzEwXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUobG93ZXJjYXNlKGMp
KTsKKyAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgc3dp
dGNoZXIgPSBjIC0gMzIgfCAwOworICAgICAgICBpZiAoc3dpdGNoZXIgPiAyNSB8fCBzd2l0Y2hl
ciA8IDApIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICBzd2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgICAgICBjYXNlIDMgOiAKKyAg
ICAgICAgICAgICAgICBmWy8qIGFsdGVybmF0ZSAqLzNdID0gLyogdHJ1ZSAqLzE7CisgICAgICAg
ICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAg
ICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAxMyA6IAorICAgICAgICAgICAgICAgIGZbLyoganVzdGlmeSAqLzBdID0gIi0iOworICAgICAg
ICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgZlsvKiBwcmVjICovOV0g
PSAwOworICAgICAgICAgICAgICAgIHZhciBqID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAg
IHdoaWxlKChmdW5jdGlvbihqKXsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IGZtdC5jaGFyQ29kZUF0KGopIC0g
LyogIjAiICovNDggfCAwOworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiArKHcgPj0gMCAm
JiB3IDw9IDkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0o
aikpKCkpIHsKKyAgICAgICAgICAgICAgICAgIGZbLyogcHJlYyAqLzldID0gKENhbWxfaW50MzIu
aW11bChmWy8qIHByZWMgKi85XSwgMTApICsgZm10LmNoYXJDb2RlQXQoaikgfCAwKSAtIC8qICIw
IiAqLzQ4IHwgMDsKKyAgICAgICAgICAgICAgICAgIGogPSBqICsgMSB8IDA7CisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICBfaSA9IGo7CisgICAgICAgICAgICAgICAgY29udGlu
dWUgOworICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAg
Y2FzZSA2IDogCisgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIGNhc2UgOCA6IAor
ICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAg
ICBjYXNlIDEyIDogCisgICAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICAgICAgZXhp
dCA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE2IDogCisg
ICAgICAgICAgICAgICAgZlsvKiBmaWx0ZXIgKi8yXSA9ICIwIjsKKyAgICAgICAgICAgICAgICBf
aSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAg
ICAgY2FzZSAxNyA6IAorICAgICAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgICAgY2FzZSAx
OSA6IAorICAgICAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgY2FzZSAyMSA6IAorICAg
ICAgICAgICAgY2FzZSAyMiA6IAorICAgICAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgICAg
Y2FzZSAyNCA6IAorICAgICAgICAgICAgY2FzZSAyNSA6IAorICAgICAgICAgICAgICAgIGV4aXQg
PSAzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICB9CisgICAgICBzd2l0Y2ggKGV4aXQpIHsKKyAgICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgZlsvKiBzaWduc3R5bGUgKi8xXSA9
IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7CisgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAg
ZlsvKiB3aWR0aCAqLzZdID0gMDsKKyAgICAgICAgICAgIHZhciBqJDEgPSBpOworICAgICAgICAg
ICAgd2hpbGUoKGZ1bmN0aW9uKGokMSl7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgIHZhciB3ID0gZm10LmNoYXJDb2RlQXQoaiQxKSAtIC8q
ICIwIiAqLzQ4IHwgMDsKKyAgICAgICAgICAgICAgICAgIHJldHVybiArKHcgPj0gMCAmJiB3IDw9
IDkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KGokMSkpKCkpIHsKKyAg
ICAgICAgICAgICAgZlsvKiB3aWR0aCAqLzZdID0gKENhbWxfaW50MzIuaW11bChmWy8qIHdpZHRo
ICovNl0sIDEwKSArIGZtdC5jaGFyQ29kZUF0KGokMSkgfCAwKSAtIC8qICIwIiAqLzQ4IHwgMDsK
KyAgICAgICAgICAgICAgaiQxID0gaiQxICsgMSB8IDA7CisgICAgICAgICAgICB9OworICAgICAg
ICAgICAgX2kgPSBqJDE7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNl
IDQgOiAKKyAgICAgICAgICAgIGZbLyogc2lnbmVkY29udiAqLzVdID0gLyogdHJ1ZSAqLzE7Cisg
ICAgICAgICAgICBmWy8qIGJhc2UgKi80XSA9IC8qIERlYyAqLzI7CisgICAgICAgICAgICBfaSA9
IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgNSA6
IAorICAgICAgICAgICAgZlsvKiBzaWduZWRjb252ICovNV0gPSAvKiB0cnVlICovMTsKKyAgICAg
ICAgICAgIGZbLyogY29udiAqLzEwXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7CisgICAgICAg
ICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
IAorICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmluaXNoX2Zvcm1hdHRpbmco
cGFyYW0sIHJhd2J1ZmZlcikgeworICB2YXIganVzdGlmeSA9IHBhcmFtWy8qIGp1c3RpZnkgKi8w
XTsKKyAgdmFyIHNpZ25zdHlsZSA9IHBhcmFtWy8qIHNpZ25zdHlsZSAqLzFdOworICB2YXIgZmls
dGVyID0gcGFyYW1bLyogZmlsdGVyICovMl07CisgIHZhciBhbHRlcm5hdGUgPSBwYXJhbVsvKiBh
bHRlcm5hdGUgKi8zXTsKKyAgdmFyIGJhc2UgPSBwYXJhbVsvKiBiYXNlICovNF07CisgIHZhciBz
aWduZWRjb252ID0gcGFyYW1bLyogc2lnbmVkY29udiAqLzVdOworICB2YXIgd2lkdGggPSBwYXJh
bVsvKiB3aWR0aCAqLzZdOworICB2YXIgdXBwZXJjYXNlID0gcGFyYW1bLyogdXBwZXJjYXNlICov
N107CisgIHZhciBzaWduID0gcGFyYW1bLyogc2lnbiAqLzhdOworICB2YXIgbGVuID0gcmF3YnVm
ZmVyLmxlbmd0aDsKKyAgaWYgKHNpZ25lZGNvbnYgJiYgKHNpZ24gPCAwIHx8IHNpZ25zdHlsZSAh
PT0gIi0iKSkgeworICAgIGxlbiA9IGxlbiArIDEgfCAwOworICB9CisgIGlmIChhbHRlcm5hdGUp
IHsKKyAgICBpZiAoYmFzZSkgeworICAgICAgaWYgKGJhc2UgPT09IC8qIEhleCAqLzEpIHsKKyAg
ICAgICAgbGVuID0gbGVuICsgMiB8IDA7CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICBsZW4gPSBsZW4gKyAxIHwgMDsKKyAgICB9CisgIH0KKyAgdmFyIGJ1ZmZlciA9
ICIiOworICBpZiAoanVzdGlmeSA9PT0gIisiICYmIGZpbHRlciA9PT0gIiAiKSB7CisgICAgZm9y
KHZhciBpID0gbGVuICxpX2ZpbmlzaCA9IHdpZHRoIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsr
aSl7CisgICAgICBidWZmZXIgPSBidWZmZXIgKyBmaWx0ZXI7CisgICAgfQorICB9CisgIGlmIChz
aWduZWRjb252KSB7CisgICAgaWYgKHNpZ24gPCAwKSB7CisgICAgICBidWZmZXIgPSBidWZmZXIg
KyAiLSI7CisgICAgfQorICAgIGVsc2UgaWYgKHNpZ25zdHlsZSAhPT0gIi0iKSB7CisgICAgICBi
dWZmZXIgPSBidWZmZXIgKyBzaWduc3R5bGU7CisgICAgfQorICAgIAorICB9CisgIGlmIChhbHRl
cm5hdGUgJiYgYmFzZSA9PT0gLyogT2N0ICovMCkgeworICAgIGJ1ZmZlciA9IGJ1ZmZlciArICIw
IjsKKyAgfQorICBpZiAoYWx0ZXJuYXRlICYmIGJhc2UgPT09IC8qIEhleCAqLzEpIHsKKyAgICBi
dWZmZXIgPSBidWZmZXIgKyAiMHgiOworICB9CisgIGlmIChqdXN0aWZ5ID09PSAiKyIgJiYgZmls
dGVyID09PSAiMCIpIHsKKyAgICBmb3IodmFyIGkkMSA9IGxlbiAsaV9maW5pc2gkMSA9IHdpZHRo
IC0gMSB8IDA7IGkkMSA8PSBpX2ZpbmlzaCQxOyArK2kkMSl7CisgICAgICBidWZmZXIgPSBidWZm
ZXIgKyBmaWx0ZXI7CisgICAgfQorICB9CisgIGJ1ZmZlciA9IHVwcGVyY2FzZSA/IGJ1ZmZlciAr
IHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpIDogYnVmZmVyICsgcmF3YnVmZmVyOworICBpZiAoanVz
dGlmeSA9PT0gIi0iKSB7CisgICAgZm9yKHZhciBpJDIgPSBsZW4gLGlfZmluaXNoJDIgPSB3aWR0
aCAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gkMjsgKytpJDIpeworICAgICAgYnVmZmVyID0gYnVm
ZmVyICsgIiAiOworICAgIH0KKyAgfQorICByZXR1cm4gYnVmZmVyOworfQorCitmdW5jdGlvbiBj
YW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7CisgIGlmIChmbXQgPT09ICIlZCIpIHsKKyAgICByZXR1
cm4gIiIgKyBpOworICB9CisgIGVsc2UgeworICAgIHZhciBmID0gcGFyc2VfZm9ybWF0KGZtdCk7
CisgICAgdmFyIGYkMSA9IGY7CisgICAgdmFyIGkkMSA9IGk7CisgICAgdmFyIGkkMiA9IGkkMSA8
IDAgPyAoCisgICAgICAgIGYkMVsvKiBzaWduZWRjb252ICovNV0gPyAoZiQxWy8qIHNpZ24gKi84
XSA9IC0xLCAtaSQxKSA6IChpJDEgPj4+IDApCisgICAgICApIDogaSQxOworICAgIHZhciBzID0g
aSQyLnRvU3RyaW5nKGludF9vZl9iYXNlKGYkMVsvKiBiYXNlICovNF0pKTsKKyAgICBpZiAoZiQx
Wy8qIHByZWMgKi85XSA+PSAwKSB7CisgICAgICBmJDFbLyogZmlsdGVyICovMl0gPSAiICI7Cisg
ICAgICB2YXIgbiA9IGYkMVsvKiBwcmVjICovOV0gLSBzLmxlbmd0aCB8IDA7CisgICAgICBpZiAo
biA+IDApIHsKKyAgICAgICAgcyA9IENhbWxfdXRpbHMucmVwZWF0KG4sICIwIikgKyBzOworICAg
ICAgfQorICAgICAgCisgICAgfQorICAgIHJldHVybiBmaW5pc2hfZm9ybWF0dGluZyhmJDEsIHMp
OworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0KGZtdCwgeCkgeworICB2YXIg
ZiA9IHBhcnNlX2Zvcm1hdChmbXQpOworICB2YXIgeCQxID0gZlsvKiBzaWduZWRjb252ICovNV0g
JiYgQ2FtbF9pbnQ2NC5sdCh4LCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgLyogaGkgKi8wLAorICAg
ICAgICAvKiBsbyAqLzAKKyAgICAgIF0pID8gKGZbLyogc2lnbiAqLzhdID0gLTEsIENhbWxfaW50
NjQubmVnKHgpKSA6IHg7CisgIHZhciBzID0gIiI7CisgIHZhciBtYXRjaCA9IGZbLyogYmFzZSAq
LzRdOworICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHZhciB3YmFz
ZSA9IC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAvKiBsbyAq
LzgKKyAgICAgICAgXTsKKyAgICAgICAgdmFyIGN2dGJsID0gIjAxMjM0NTY3IjsKKyAgICAgICAg
aWYgKENhbWxfaW50NjQubHQoeCQxLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBo
aSAqLzAsCisgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgIF0pKSB7Cisg
ICAgICAgICAgdmFyIHkgPSBDYW1sX2ludDY0LmRpc2NhcmRfc2lnbih4JDEpOworICAgICAgICAg
IHZhciBtYXRjaCQxID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHksIHdiYXNlKTsKKyAgICAgICAgICB2
YXIgcXVvdGllbnQgPSBDYW1sX2ludDY0LmFkZCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAg
ICAvKiBoaSAqLzI2ODQzNTQ1NiwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAg
ICAgICAgXSwgbWF0Y2gkMVswXSk7CisgICAgICAgICAgdmFyIG1vZHVsdXMgPSBtYXRjaCQxWzFd
OworICAgICAgICAgIHMgPSBDYW1sX3N0cmluZy5qc19zdHJpbmdfb2ZfY2hhcihjdnRibC5jaGFy
Q29kZUF0KG1vZHVsdXNbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxfaW50NjQu
bmVxKHF1b3RpZW50LCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIGhpICovMCwK
KyAgICAgICAgICAgICAgICAgIC8qIGxvICovMAorICAgICAgICAgICAgICAgIF0pKSB7CisgICAg
ICAgICAgICB2YXIgbWF0Y2gkMiA9IENhbWxfaW50NjQuZGl2X21vZChxdW90aWVudCwgd2Jhc2Up
OworICAgICAgICAgICAgcXVvdGllbnQgPSBtYXRjaCQyWzBdOworICAgICAgICAgICAgbW9kdWx1
cyA9IG1hdGNoJDJbMV07CisgICAgICAgICAgICBzID0gQ2FtbF9zdHJpbmcuanNfc3RyaW5nX29m
X2NoYXIoY3Z0YmwuY2hhckNvZGVBdChtb2R1bHVzWzFdIHwgMCkpICsgczsKKyAgICAgICAgICB9
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBtYXRjaCQzID0gQ2Ft
bF9pbnQ2NC5kaXZfbW9kKHgkMSwgd2Jhc2UpOworICAgICAgICAgIHZhciBxdW90aWVudCQxID0g
bWF0Y2gkM1swXTsKKyAgICAgICAgICB2YXIgbW9kdWx1cyQxID0gbWF0Y2gkM1sxXTsKKyAgICAg
ICAgICBzID0gQ2FtbF9zdHJpbmcuanNfc3RyaW5nX29mX2NoYXIoY3Z0YmwuY2hhckNvZGVBdCht
b2R1bHVzJDFbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxfaW50NjQubmVxKHF1
b3RpZW50JDEsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAg
ICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgICAgXSkpIHsKKyAgICAgICAg
ICAgIHZhciBtYXRjaCQ0ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1b3RpZW50JDEsIHdiYXNlKTsK
KyAgICAgICAgICAgIHF1b3RpZW50JDEgPSBtYXRjaCQ0WzBdOworICAgICAgICAgICAgbW9kdWx1
cyQxID0gbWF0Y2gkNFsxXTsKKyAgICAgICAgICAgIHMgPSBDYW1sX3N0cmluZy5qc19zdHJpbmdf
b2ZfY2hhcihjdnRibC5jaGFyQ29kZUF0KG1vZHVsdXMkMVsxXSB8IDApKSArIHM7CisgICAgICAg
ICAgfTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAg
cyA9IENhbWxfaW50NjQudG9faGV4KHgkMSkgKyBzOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IDIgOiAKKyAgICAgICAgdmFyIHdiYXNlJDEgPSAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAvKiBo
aSAqLzAsCisgICAgICAgICAgLyogbG8gKi8xMAorICAgICAgICBdOworICAgICAgICB2YXIgY3Z0
YmwkMSA9ICIwMTIzNDU2Nzg5IjsKKyAgICAgICAgaWYgKENhbWxfaW50NjQubHQoeCQxLCAvKiBp
bnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAgICAgLyog
bG8gKi8wCisgICAgICAgICAgICAgIF0pKSB7CisgICAgICAgICAgdmFyIHkkMSA9IENhbWxfaW50
NjQuZGlzY2FyZF9zaWduKHgkMSk7CisgICAgICAgICAgdmFyIG1hdGNoJDUgPSBDYW1sX2ludDY0
LmRpdl9tb2QoeSQxLCB3YmFzZSQxKTsKKyAgICAgICAgICB2YXIgbWF0Y2gkNiA9IENhbWxfaW50
NjQuZGl2X21vZChDYW1sX2ludDY0LmFkZCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAgICAgICAvKiBsbyAqLzgKKyAgICAgICAgICAg
ICAgICAgIF0sIG1hdGNoJDVbMV0pLCB3YmFzZSQxKTsKKyAgICAgICAgICB2YXIgcXVvdGllbnQk
MiA9IENhbWxfaW50NjQuYWRkKENhbWxfaW50NjQuYWRkKC8qIGludDY0ICovWworICAgICAgICAg
ICAgICAgICAgICAvKiBoaSAqLzIxNDc0ODM2NCwKKyAgICAgICAgICAgICAgICAgICAgLyogbG8g
Ki8zNDM1OTczODM2CisgICAgICAgICAgICAgICAgICBdLCBtYXRjaCQ1WzBdKSwgbWF0Y2gkNlsw
XSk7CisgICAgICAgICAgdmFyIG1vZHVsdXMkMiA9IG1hdGNoJDZbMV07CisgICAgICAgICAgcyA9
IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNvZGVBdChtb2R1bHVz
JDJbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxfaW50NjQubmVxKHF1b3RpZW50
JDIsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAg
ICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgICAgXSkpIHsKKyAgICAgICAgICAgIHZh
ciBtYXRjaCQ3ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1b3RpZW50JDIsIHdiYXNlJDEpOworICAg
ICAgICAgICAgcXVvdGllbnQkMiA9IG1hdGNoJDdbMF07CisgICAgICAgICAgICBtb2R1bHVzJDIg
PSBtYXRjaCQ3WzFdOworICAgICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9j
aGFyKGN2dGJsJDEuY2hhckNvZGVBdChtb2R1bHVzJDJbMV0gfCAwKSkgKyBzOworICAgICAgICAg
IH07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFyIG1hdGNoJDggPSBD
YW1sX2ludDY0LmRpdl9tb2QoeCQxLCB3YmFzZSQxKTsKKyAgICAgICAgICB2YXIgcXVvdGllbnQk
MyA9IG1hdGNoJDhbMF07CisgICAgICAgICAgdmFyIG1vZHVsdXMkMyA9IG1hdGNoJDhbMV07Cisg
ICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNv
ZGVBdChtb2R1bHVzJDNbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxfaW50NjQu
bmVxKHF1b3RpZW50JDMsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8w
LAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgICAgXSkpIHsKKyAg
ICAgICAgICAgIHZhciBtYXRjaCQ5ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1b3RpZW50JDMsIHdi
YXNlJDEpOworICAgICAgICAgICAgcXVvdGllbnQkMyA9IG1hdGNoJDlbMF07CisgICAgICAgICAg
ICBtb2R1bHVzJDMgPSBtYXRjaCQ5WzFdOworICAgICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpz
X3N0cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNvZGVBdChtb2R1bHVzJDNbMV0gfCAwKSkgKyBz
OworICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgCisgIH0KKyAg
aWYgKGZbLyogcHJlYyAqLzldID49IDApIHsKKyAgICBmWy8qIGZpbHRlciAqLzJdID0gIiAiOwor
ICAgIHZhciBuID0gZlsvKiBwcmVjICovOV0gLSBzLmxlbmd0aCB8IDA7CisgICAgaWYgKG4gPiAw
KSB7CisgICAgICBzID0gQ2FtbF91dGlscy5yZXBlYXQobiwgIjAiKSArIHM7CisgICAgfQorICAg
IAorICB9CisgIHJldHVybiBmaW5pc2hfZm9ybWF0dGluZyhmLCBzKTsKK30KKworZnVuY3Rpb24g
Y2FtbF9mb3JtYXRfZmxvYXQoZm10LCB4KSB7CisgIHZhciBmID0gcGFyc2VfZm9ybWF0KGZtdCk7
CisgIHZhciBwcmVjID0gZlsvKiBwcmVjICovOV0gPCAwID8gNiA6IGZbLyogcHJlYyAqLzldOwor
ICB2YXIgeCQxID0geCA8IDAgPyAoZlsvKiBzaWduICovOF0gPSAtMSwgLXgpIDogeDsKKyAgdmFy
IHMgPSAiIjsKKyAgaWYgKGlzTmFOKHgkMSkpIHsKKyAgICBzID0gIm5hbiI7CisgICAgZlsvKiBm
aWx0ZXIgKi8yXSA9ICIgIjsKKyAgfQorICBlbHNlIGlmIChpc0Zpbml0ZSh4JDEpKSB7CisgICAg
dmFyIG1hdGNoID0gZlsvKiBjb252ICovMTBdOworICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAg
IGNhc2UgImUiIDogCisgICAgICAgICAgcyA9IHgkMS50b0V4cG9uZW50aWFsKHByZWMpOworICAg
ICAgICAgIHZhciBpID0gcy5sZW5ndGg7CisgICAgICAgICAgaWYgKHNbaSAtIDMgfCAwXSA9PT0g
ImUiKSB7CisgICAgICAgICAgICBzID0gcy5zbGljZSgwLCBpIC0gMSB8IDApICsgKCIwIiArIHMu
c2xpY2UoaSAtIDEgfCAwKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSAiZiIgOiAKKyAgICAgICAgICBzID0geCQxLnRvRml4ZWQocHJlYyk7CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlICJnIiA6IAorICAgICAgICAgIHZhciBwcmVjJDEgPSBwcmVjICE9
PSAwID8gcHJlYyA6IDE7CisgICAgICAgICAgcyA9IHgkMS50b0V4cG9uZW50aWFsKHByZWMkMSAt
IDEgfCAwKTsKKyAgICAgICAgICB2YXIgaiA9IHMuaW5kZXhPZigiZSIpOworICAgICAgICAgIHZh
ciBleHAgPSArcy5zbGljZShqICsgMSB8IDApOworICAgICAgICAgIGlmIChleHAgPCAtNCB8fCB4
JDEgPj0gMWUyMSB8fCB4JDEudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjJDEpIHsKKyAgICAgICAg
ICAgIHZhciBpJDEgPSBqIC0gMSB8IDA7CisgICAgICAgICAgICB3aGlsZShzW2kkMV0gPT09ICIw
IikgeworICAgICAgICAgICAgICBpJDEgPSBpJDEgLSAxIHwgMDsKKyAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICBpZiAoc1tpJDFdID09PSAiLiIpIHsKKyAgICAgICAgICAgICAgaSQxID0gaSQx
IC0gMSB8IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzID0gcy5zbGljZSgwLCBpJDEg
KyAxIHwgMCkgKyBzLnNsaWNlKGopOworICAgICAgICAgICAgdmFyIGkkMiA9IHMubGVuZ3RoOwor
ICAgICAgICAgICAgaWYgKHNbaSQyIC0gMyB8IDBdID09PSAiZSIpIHsKKyAgICAgICAgICAgICAg
cyA9IHMuc2xpY2UoMCwgaSQyIC0gMSB8IDApICsgKCIwIiArIHMuc2xpY2UoaSQyIC0gMSB8IDAp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHZhciBwID0gcHJlYyQxOworICAgICAgICAgICAgaWYgKGV4cCA8
IDApIHsKKyAgICAgICAgICAgICAgcCA9IHAgLSAoZXhwICsgMSB8IDApIHwgMDsKKyAgICAgICAg
ICAgICAgcyA9IHgkMS50b0ZpeGVkKHApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgIHdoaWxlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcyA9IHgkMS50b0ZpeGVkKHApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKyhzLmxl
bmd0aCA+IChwcmVjJDEgKyAxIHwgMCkpOworICAgICAgICAgICAgICAgICAgfSgpKSB7CisgICAg
ICAgICAgICAgICAgcCA9IHAgLSAxIHwgMDsKKyAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChwICE9PSAwKSB7CisgICAgICAgICAgICAgIHZhciBrID0gcy5s
ZW5ndGggLSAxIHwgMDsKKyAgICAgICAgICAgICAgd2hpbGUoc1trXSA9PT0gIjAiKSB7CisgICAg
ICAgICAgICAgICAgayA9IGsgLSAxIHwgMDsKKyAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgaWYgKHNba10gPT09ICIuIikgeworICAgICAgICAgICAgICAgIGsgPSBrIC0gMSB8IDA7Cisg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwgayArIDEgfCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBicmVh
azsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIAorICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBz
ID0gImluZiI7CisgICAgZlsvKiBmaWx0ZXIgKi8yXSA9ICIgIjsKKyAgfQorICByZXR1cm4gZmlu
aXNoX2Zvcm1hdHRpbmcoZiwgcyk7Cit9CisKK3ZhciBmbG9hdF9vZl9zdHJpbmcgPSAoCisgIGZ1
bmN0aW9uIChzLCBjYW1sX2ZhaWx3aXRoKSB7CisgICAgdmFyIHJlcyA9ICtzOworICAgIGlmICgo
cy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKQorICAgICAgICByZXR1cm4gcmVzOworICAg
IHMgPSBzLnJlcGxhY2UoL18vZywgIiIpOworICAgIHJlcyA9ICtzOworICAgIGlmICgoKHMubGVu
Z3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSB7Cisg
ICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIDsKKyAgICBpZiAoL14gKjB4WzAtOWEtZl9d
K3BbKy1dP1swLTlfXSsvaS50ZXN0KHMpKSB7CisgICAgICAgIHZhciBwaWR4ID0gcy5pbmRleE9m
KCdwJyk7CisgICAgICAgIHBpZHggPSAocGlkeCA9PSAtMSkgPyBzLmluZGV4T2YoJ1AnKSA6IHBp
ZHg7CisgICAgICAgIHZhciBleHAgPSArcy5zdWJzdHJpbmcocGlkeCArIDEpOworICAgICAgICBy
ZXMgPSArcy5zdWJzdHJpbmcoMCwgcGlkeCk7CisgICAgICAgIHJldHVybiByZXMgKiBNYXRoLnBv
dygyLCBleHApOworICAgIH0KKyAgICBpZiAoL15cKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKQor
ICAgICAgICByZXR1cm4gSW5maW5pdHk7CisgICAgaWYgKC9eLWluZihpbml0eSk/JC9pLnRlc3Qo
cykpCisgICAgICAgIHJldHVybiAtSW5maW5pdHk7CisgICAgY2FtbF9mYWlsd2l0aCgiZmxvYXRf
b2Zfc3RyaW5nIik7Cit9CisKKyk7CisKK2Z1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMp
IHsKKyAgcmV0dXJuIEN1cnJ5Ll8yKGZsb2F0X29mX3N0cmluZywgcywgY2FtbF9mYWlsd2l0aCk7
Cit9CisKK3ZhciBjYW1sX25hdGl2ZWludF9mb3JtYXQgPSBjYW1sX2Zvcm1hdF9pbnQ7CisKK3Zh
ciBjYW1sX2ludDMyX2Zvcm1hdCA9IGNhbWxfZm9ybWF0X2ludDsKKwordmFyIGNhbWxfaW50MzJf
b2Zfc3RyaW5nID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworCit2YXIgY2FtbF9uYXRpdmVpbnRfb2Zf
c3RyaW5nID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworCitleHBvcnRzLmNhbWxfZm9ybWF0X2Zsb2F0
ICAgICAgICA9IGNhbWxfZm9ybWF0X2Zsb2F0OworZXhwb3J0cy5jYW1sX2Zvcm1hdF9pbnQgICAg
ICAgICAgPSBjYW1sX2Zvcm1hdF9pbnQ7CitleHBvcnRzLmNhbWxfbmF0aXZlaW50X2Zvcm1hdCAg
ICA9IGNhbWxfbmF0aXZlaW50X2Zvcm1hdDsKK2V4cG9ydHMuY2FtbF9pbnQzMl9mb3JtYXQgICAg
ICAgID0gY2FtbF9pbnQzMl9mb3JtYXQ7CitleHBvcnRzLmNhbWxfZmxvYXRfb2Zfc3RyaW5nICAg
ICA9IGNhbWxfZmxvYXRfb2Zfc3RyaW5nOworZXhwb3J0cy5jYW1sX2ludDY0X2Zvcm1hdCAgICAg
ICAgPSBjYW1sX2ludDY0X2Zvcm1hdDsKK2V4cG9ydHMuY2FtbF9pbnRfb2Zfc3RyaW5nICAgICAg
ID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworZXhwb3J0cy5jYW1sX2ludDMyX29mX3N0cmluZyAgICAg
PSBjYW1sX2ludDMyX29mX3N0cmluZzsKK2V4cG9ydHMuY2FtbF9pbnQ2NF9vZl9zdHJpbmcgICAg
ID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmc7CitleHBvcnRzLmNhbWxfbmF0aXZlaW50X29mX3N0cmlu
ZyA9IGNhbWxfbmF0aXZlaW50X29mX3N0cmluZzsKKy8qIGZsb2F0X29mX3N0cmluZyBOb3QgYSBw
dXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfZm9ybWF0LmpzIC8vLy8vLy8vCivC
oCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2NhbWxfaW50MzIn
XSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0
IG9mIGNhbWxfaW50MzIuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOwor
CitmdW5jdGlvbiBkaXYoeCwgeSkgeworICBpZiAoeSA9PT0gMCkgeworICAgIHRocm93IENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmRpdmlzaW9uX2J5X3plcm87CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIHggLyB5IHwgMDsKKyAgfQorfQorCitmdW5jdGlvbiBtb2RfKHgsIHkpIHsKKyAgaWYg
KHkgPT09IDApIHsKKyAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5kaXZpc2lvbl9i
eV96ZXJvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiB4ICUgeTsKKyAgfQorfQorCitmdW5j
dGlvbiBjYW1sX2Jzd2FwMTYoeCkgeworICByZXR1cm4gKCh4ICYgMjU1KSA8PCA4KSB8ICgoeCAm
IDY1MjgwKSA+Pj4gOCk7Cit9CisKK2Z1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkgeworICBy
ZXR1cm4gKCh4ICYgMjU1KSA8PCAyNCkgfCAoKHggJiA2NTI4MCkgPDwgOCkgfCAoKHggJiAxNjcx
MTY4MCkgPj4+IDgpIHwgKCh4ICYgNDI3ODE5MDA4MCkgPj4+IDI0KTsKK30KKwordmFyIGltdWwg
PSAoIE1hdGguaW11bCB8fCBmdW5jdGlvbiAoeCx5KSB7CisgIHkgfD0gMDsgcmV0dXJuICgoKCh4
ID4+IDE2KSAqIHkpIDw8IDE2KSArICh4ICYgMHhmZmZmKSAqIHkpfDA7IAorfQorKTsKKwordmFy
IGNhbWxfbmF0aXZlaW50X2Jzd2FwID0gY2FtbF9pbnQzMl9ic3dhcDsKKworZXhwb3J0cy5kaXYg
ICAgICAgICAgICAgICAgICA9IGRpdjsKK2V4cG9ydHMubW9kXyAgICAgICAgICAgICAgICAgPSBt
b2RfOworZXhwb3J0cy5jYW1sX2Jzd2FwMTYgICAgICAgICA9IGNhbWxfYnN3YXAxNjsKK2V4cG9y
dHMuY2FtbF9pbnQzMl9ic3dhcCAgICAgPSBjYW1sX2ludDMyX2Jzd2FwOworZXhwb3J0cy5jYW1s
X25hdGl2ZWludF9ic3dhcCA9IGNhbWxfbmF0aXZlaW50X2Jzd2FwOworZXhwb3J0cy5pbXVsICAg
ICAgICAgICAgICAgICA9IGltdWw7CisvKiBpbXVsIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8v
Ly8vLyBlbmQgb2YgY2FtbF9pbnQzMi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7
CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX2ludDY0J10gPSBmdW5jdGlvbigpIHsKK8Kg
IMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX2ludDY0LmpzIC8v
Ly8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9vYmoiKTsKK3ZhciBDYW1sX2ludDMyICAgICAgICAgICAgICA9IHJlcXVp
cmUoIi4vY2FtbF9pbnQzMiIpOwordmFyIENhbWxfdXRpbHMgICAgICAgICAgICAgID0gcmVxdWly
ZSgiLi9jYW1sX3V0aWxzIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJl
KCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK3ZhciBtaW5faW50ID0gLyogcmVjb3Jk
ICovWworICAvKiBoaSAqLy0yMTQ3NDgzNjQ4LAorICAvKiBsbyAqLzAKK107CisKK3ZhciBtYXhf
aW50ID0gLyogcmVjb3JkICovWworICAvKiBoaSAqLzEzNDIxNzcyNywKKyAgLyogbG8gKi8xCitd
OworCit2YXIgb25lID0gLyogcmVjb3JkICovWworICAvKiBoaSAqLzAsCisgIC8qIGxvICovMQor
XTsKKwordmFyIHplcm8gPSAvKiByZWNvcmQgKi9bCisgIC8qIGhpICovMCwKKyAgLyogbG8gKi8w
CitdOworCit2YXIgbmVnX29uZSA9IC8qIHJlY29yZCAqL1sKKyAgLyogaGkgKi8tMSwKKyAgLyog
bG8gKi80Mjk0OTY3Mjk1CitdOworCitmdW5jdGlvbiBuZWdfc2lnbmVkKHgpIHsKKyAgcmV0dXJu
ICsoKHggJiAyMTQ3NDgzNjQ4KSAhPT0gMCk7Cit9CisKK2Z1bmN0aW9uIGFkZChwYXJhbSwgcGFy
YW0kMSkgeworICB2YXIgb3RoZXJfbG93XyA9IHBhcmFtJDFbLyogbG8gKi8xXTsKKyAgdmFyIHRo
aXNfbG93XyA9IHBhcmFtWy8qIGxvICovMV07CisgIHZhciBsbyA9IHRoaXNfbG93XyArIG90aGVy
X2xvd18gJiA0Mjk0OTY3Mjk1OworICB2YXIgb3ZlcmZsb3cgPSBuZWdfc2lnbmVkKHRoaXNfbG93
XykgJiYgKG5lZ19zaWduZWQob3RoZXJfbG93XykgfHwgIW5lZ19zaWduZWQobG8pKSB8fCBuZWdf
c2lnbmVkKG90aGVyX2xvd18pICYmICFuZWdfc2lnbmVkKGxvKSA/IDEgOiAwOworICB2YXIgaGkg
PSBwYXJhbVsvKiBoaSAqLzBdICsgcGFyYW0kMVsvKiBoaSAqLzBdICsgb3ZlcmZsb3cgJiA0Mjk0
OTY3Mjk1OworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGhpICovaGksCisg
ICAgICAgICAgLyogbG8gKi8obG8gPj4+IDApCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIG5v
dChwYXJhbSkgeworICB2YXIgaGkgPSBwYXJhbVsvKiBoaSAqLzBdIF4gLTE7CisgIHZhciBsbyA9
IHBhcmFtWy8qIGxvICovMV0gXiAtMTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAg
ICAvKiBoaSAqL2hpLAorICAgICAgICAgIC8qIGxvICovKGxvID4+PiAwKQorICAgICAgICBdOwor
fQorCitmdW5jdGlvbiBlcSh4LCB5KSB7CisgIGlmICh4Wy8qIGhpICovMF0gPT09IHlbLyogaGkg
Ki8wXSkgeworICAgIHJldHVybiArKHhbLyogbG8gKi8xXSA9PT0geVsvKiBsbyAqLzFdKTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK2Z1bmN0aW9u
IG5lZyh4KSB7CisgIGlmIChlcSh4LCBtaW5faW50KSkgeworICAgIHJldHVybiBtaW5faW50Owor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiBhZGQobm90KHgpLCBvbmUpOworICB9Cit9CisKK2Z1
bmN0aW9uIHN1Yih4LCB5KSB7CisgIHJldHVybiBhZGQoeCwgbmVnKHkpKTsKK30KKworZnVuY3Rp
b24gbHNsXyh4LCBudW1CaXRzKSB7CisgIHZhciBsbyA9IHhbLyogbG8gKi8xXTsKKyAgaWYgKG51
bUJpdHMpIHsKKyAgICBpZiAobnVtQml0cyA+PSAzMikgeworICAgICAgcmV0dXJuIC8qIHJlY29y
ZCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8obG8gPDwgKG51bUJpdHMgLSAzMiB8IDApKSwK
KyAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHZhciBoaSA9IChsbyA+Pj4gKDMyIC0gbnVtQml0cyB8IDApKSB8ICh4Wy8qIGhp
ICovMF0gPDwgbnVtQml0cyk7CisgICAgICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAg
ICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgICAgICAvKiBsbyAqLygobG8gPDwgbnVtQml0cykg
Pj4+IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
eDsKKyAgfQorfQorCitmdW5jdGlvbiBsc3JfKHgsIG51bUJpdHMpIHsKKyAgdmFyIGhpID0geFsv
KiBoaSAqLzBdOworICBpZiAobnVtQml0cykgeworICAgIHZhciBvZmZzZXQgPSBudW1CaXRzIC0g
MzIgfCAwOworICAgIGlmIChvZmZzZXQpIHsKKyAgICAgIGlmIChvZmZzZXQgPiAwKSB7CisgICAg
ICAgIHZhciBsbyA9IChoaSA+Pj4gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIC8qIHJlY29yZCAq
L1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAgICAgLyogbG8gKi8o
bG8gPj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg
ICAgdmFyIGhpJDEgPSAoaGkgPj4+IG51bUJpdHMpOworICAgICAgICB2YXIgbG8kMSA9IChoaSA8
PCAoLW9mZnNldCB8IDApKSB8ICh4Wy8qIGxvICovMV0gPj4+IG51bUJpdHMpOworICAgICAgICBy
ZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgIC8qIGhpICovaGkkMSwKKyAgICAg
ICAgICAgICAgICAvKiBsbyAqLyhsbyQxID4+PiAwKQorICAgICAgICAgICAgICBdOworICAgICAg
fQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAg
ICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgLyogbG8gKi8oaGkgPj4+IDApCisgICAg
ICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4geDsKKyAgfQorfQor
CitmdW5jdGlvbiBhc3JfKHgsIG51bUJpdHMpIHsKKyAgdmFyIGhpID0geFsvKiBoaSAqLzBdOwor
ICBpZiAobnVtQml0cykgeworICAgIGlmIChudW1CaXRzIDwgMzIpIHsKKyAgICAgIHZhciBoaSQx
ID0gKGhpID4+IG51bUJpdHMpOworICAgICAgdmFyIGxvID0gKGhpIDw8ICgzMiAtIG51bUJpdHMg
fCAwKSkgfCAoeFsvKiBsbyAqLzFdID4+PiBudW1CaXRzKTsKKyAgICAgIHJldHVybiAvKiByZWNv
cmQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICovaGkkMSwKKyAgICAgICAgICAgICAgLyogbG8g
Ki8obG8gPj4+IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZh
ciBsbyQxID0gKGhpID4+IChudW1CaXRzIC0gMzIgfCAwKSk7CisgICAgICByZXR1cm4gLyogcmVj
b3JkICovWworICAgICAgICAgICAgICAvKiBoaSAqL2hpID49IDAgPyAwIDogLTEsCisgICAgICAg
ICAgICAgIC8qIGxvICovKGxvJDEgPj4+IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4geDsKKyAgfQorfQorCitmdW5jdGlvbiBpc196ZXJvKHBhcmFt
KSB7CisgIGlmIChwYXJhbVsvKiBoaSAqLzBdICE9PSAwIHx8IHBhcmFtWy8qIGxvICovMV0gIT09
IDApIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biAvKiB0cnVlICovMTsKKyAgfQorfQorCitmdW5jdGlvbiBtdWwoX3RoaXMsIF9vdGhlcikgewor
ICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG90aGVyID0gX290aGVyOworICAgIHZhciAkJHRoaXMg
PSBfdGhpczsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgdmFyIGxvOworICAgIHZhciB0aGlzX2hp
ID0gJCR0aGlzWy8qIGhpICovMF07CisgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgdmFyIGV4aXQk
MiA9IDA7CisgICAgdmFyIGV4aXQkMyA9IDA7CisgICAgaWYgKHRoaXNfaGkgIT09IDApIHsKKyAg
ICAgIGV4aXQkMyA9IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKCQkdGhpc1svKiBsbyAqLzFdICE9
PSAwKSB7CisgICAgICBleGl0JDMgPSA0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biB6ZXJvOworICAgIH0KKyAgICBpZiAoZXhpdCQzID09PSA0KSB7CisgICAgICBpZiAob3RoZXJb
LyogaGkgKi8wXSAhPT0gMCkgeworICAgICAgICBleGl0JDIgPSAzOworICAgICAgfQorICAgICAg
ZWxzZSBpZiAob3RoZXJbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICBleGl0JDIgPSAzOwor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiB6ZXJvOworICAgICAgfQorICAg
IH0KKyAgICBpZiAoZXhpdCQyID09PSAzKSB7CisgICAgICBpZiAodGhpc19oaSAhPT0gLTIxNDc0
ODM2NDgpIHsKKyAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCQk
dGhpc1svKiBsbyAqLzFdICE9PSAwKSB7CisgICAgICAgIGV4aXQkMSA9IDI7CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgbG8gPSBvdGhlclsvKiBsbyAqLzFdOworICAgICAgICBleGl0
ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKGV4aXQkMSA9PT0gMikgeworICAgICAgdmFy
IG90aGVyX2hpID0gb3RoZXJbLyogaGkgKi8wXTsKKyAgICAgIHZhciBsbyQxID0gJCR0aGlzWy8q
IGxvICovMV07CisgICAgICB2YXIgZXhpdCQ0ID0gMDsKKyAgICAgIGlmIChvdGhlcl9oaSAhPT0g
LTIxNDc0ODM2NDgpIHsKKyAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKG90aGVyWy8qIGxvICovMV0gIT09IDApIHsKKyAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICBsbyA9IGxvJDE7CisgICAgICAgIGV4aXQgPSAxOwor
ICAgICAgfQorICAgICAgaWYgKGV4aXQkNCA9PT0gMykgeworICAgICAgICB2YXIgb3RoZXJfbG8g
PSBvdGhlclsvKiBsbyAqLzFdOworICAgICAgICBpZiAodGhpc19oaSA8IDApIHsKKyAgICAgICAg
ICBpZiAob3RoZXJfaGkgPCAwKSB7CisgICAgICAgICAgICBfb3RoZXIgPSBuZWcob3RoZXIpOwor
ICAgICAgICAgICAgX3RoaXMgPSBuZWcoJCR0aGlzKTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHJldHVybiBuZWcobXVsKG5lZygkJHRoaXMpLCBvdGhlcikpOworICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBlbHNlIGlmIChvdGhlcl9oaSA8IDApIHsKKyAgICAgICAgICByZXR1cm4g
bmVnKG11bCgkJHRoaXMsIG5lZyhvdGhlcikpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICB2YXIgYTQ4ID0gKHRoaXNfaGkgPj4+IDE2KTsKKyAgICAgICAgICB2YXIgYTMy
ID0gdGhpc19oaSAmIDY1NTM1OworICAgICAgICAgIHZhciBhMTYgPSAobG8kMSA+Pj4gMTYpOwor
ICAgICAgICAgIHZhciBhMDAgPSBsbyQxICYgNjU1MzU7CisgICAgICAgICAgdmFyIGI0OCA9IChv
dGhlcl9oaSA+Pj4gMTYpOworICAgICAgICAgIHZhciBiMzIgPSBvdGhlcl9oaSAmIDY1NTM1Owor
ICAgICAgICAgIHZhciBiMTYgPSAob3RoZXJfbG8gPj4+IDE2KTsKKyAgICAgICAgICB2YXIgYjAw
ID0gb3RoZXJfbG8gJiA2NTUzNTsKKyAgICAgICAgICB2YXIgYzQ4ID0gMDsKKyAgICAgICAgICB2
YXIgYzMyID0gMDsKKyAgICAgICAgICB2YXIgYzE2ID0gMDsKKyAgICAgICAgICB2YXIgYzAwID0g
YTAwICogYjAwOworICAgICAgICAgIGMxNiA9IChjMDAgPj4+IDE2KSArIGExNiAqIGIwMDsKKyAg
ICAgICAgICBjMzIgPSAoYzE2ID4+PiAxNik7CisgICAgICAgICAgYzE2ID0gKGMxNiAmIDY1NTM1
KSArIGEwMCAqIGIxNjsKKyAgICAgICAgICBjMzIgPSBjMzIgKyAoYzE2ID4+PiAxNikgKyBhMzIg
KiBiMDA7CisgICAgICAgICAgYzQ4ID0gKGMzMiA+Pj4gMTYpOworICAgICAgICAgIGMzMiA9IChj
MzIgJiA2NTUzNSkgKyBhMTYgKiBiMTY7CisgICAgICAgICAgYzQ4ICs9IChjMzIgPj4+IDE2KTsK
KyAgICAgICAgICBjMzIgPSAoYzMyICYgNjU1MzUpICsgYTAwICogYjMyOworICAgICAgICAgIGM0
OCArPSAoYzMyID4+PiAxNik7CisgICAgICAgICAgYzMyID0gYzMyICYgNjU1MzU7CisgICAgICAg
ICAgYzQ4ID0gYzQ4ICsgKGE0OCAqIGIwMCArIGEzMiAqIGIxNiArIGExNiAqIGIzMiArIGEwMCAq
IGI0OCkgJiA2NTUzNTsKKyAgICAgICAgICB2YXIgaGkgPSBjMzIgfCAoYzQ4IDw8IDE2KTsKKyAg
ICAgICAgICB2YXIgbG8kMiA9IGMwMCAmIDY1NTM1IHwgKChjMTYgJiA2NTUzNSkgPDwgMTYpOwor
ICAgICAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBoaSAq
L2hpLAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8obG8kMiA+Pj4gMCkKKyAgICAgICAgICAg
ICAgICBdOworICAgICAgICB9CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgaWYgKGV4aXQg
PT09IDEpIHsKKyAgICAgIGlmICgobG8gJiAxKSA9PT0gMCkgeworICAgICAgICByZXR1cm4gemVy
bzsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gbWluX2ludDsKKyAgICAg
IH0KKyAgICB9CisgICAgCisgIH07Cit9CisKK2Z1bmN0aW9uIHN3YXAocGFyYW0pIHsKKyAgdmFy
IGhpID0gQ2FtbF9pbnQzMi5jYW1sX2ludDMyX2Jzd2FwKHBhcmFtWy8qIGxvICovMV0pOworICB2
YXIgbG8gPSBDYW1sX2ludDMyLmNhbWxfaW50MzJfYnN3YXAocGFyYW1bLyogaGkgKi8wXSk7Cisg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogaGkgKi9oaSwKKyAgICAgICAgICAv
KiBsbyAqLyhsbyA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24geG9yKHBhcmFtLCBw
YXJhbSQxKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogaGkgKi9wYXJh
bVsvKiBoaSAqLzBdIF4gcGFyYW0kMVsvKiBoaSAqLzBdLAorICAgICAgICAgIC8qIGxvICovKChw
YXJhbVsvKiBsbyAqLzFdIF4gcGFyYW0kMVsvKiBsbyAqLzFdKSA+Pj4gMCkKKyAgICAgICAgXTsK
K30KKworZnVuY3Rpb24gb3JfKHBhcmFtLCBwYXJhbSQxKSB7CisgIHJldHVybiAvKiByZWNvcmQg
Ki9bCisgICAgICAgICAgLyogaGkgKi9wYXJhbVsvKiBoaSAqLzBdIHwgcGFyYW0kMVsvKiBoaSAq
LzBdLAorICAgICAgICAgIC8qIGxvICovKChwYXJhbVsvKiBsbyAqLzFdIHwgcGFyYW0kMVsvKiBs
byAqLzFdKSA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gYW5kXyhwYXJhbSwgcGFy
YW0kMSkgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGhpICovcGFyYW1b
LyogaGkgKi8wXSAmIHBhcmFtJDFbLyogaGkgKi8wXSwKKyAgICAgICAgICAvKiBsbyAqLygocGFy
YW1bLyogbG8gKi8xXSAmIHBhcmFtJDFbLyogbG8gKi8xXSkgPj4+IDApCisgICAgICAgIF07Cit9
CisKK2Z1bmN0aW9uIGdlKHBhcmFtLCBwYXJhbSQxKSB7CisgIHZhciBvdGhlcl9oaSA9IHBhcmFt
JDFbLyogaGkgKi8wXTsKKyAgdmFyIGhpID0gcGFyYW1bLyogaGkgKi8wXTsKKyAgaWYgKGhpID4g
b3RoZXJfaGkpIHsKKyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgIH0KKyAgZWxzZSBpZiAoaGkg
PCBvdGhlcl9oaSkgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuICsocGFyYW1bLyogbG8gKi8xXSA+PSBwYXJhbSQxWy8qIGxvICovMV0pOworICB9
Cit9CisKK2Z1bmN0aW9uIG5lcSh4LCB5KSB7CisgIHJldHVybiAxIC0gZXEoeCwgeSk7Cit9CisK
K2Z1bmN0aW9uIGx0KHgsIHkpIHsKKyAgcmV0dXJuIDEgLSBnZSh4LCB5KTsKK30KKworZnVuY3Rp
b24gZ3QoeCwgeSkgeworICBpZiAoeFsvKiBoaSAqLzBdID4geVsvKiBoaSAqLzBdKSB7CisgICAg
cmV0dXJuIC8qIHRydWUgKi8xOworICB9CisgIGVsc2UgaWYgKHhbLyogaGkgKi8wXSA8IHlbLyog
aGkgKi8wXSkgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuICsoeFsvKiBsbyAqLzFdID4geVsvKiBsbyAqLzFdKTsKKyAgfQorfQorCitmdW5jdGlv
biBsZSh4LCB5KSB7CisgIHJldHVybiAxIC0gZ3QoeCwgeSk7Cit9CisKK2Z1bmN0aW9uIHRvX2Zs
b2F0KHBhcmFtKSB7CisgIHJldHVybiBwYXJhbVsvKiBoaSAqLzBdICogNDI5NDk2NzI5NiArIHBh
cmFtWy8qIGxvICovMV07Cit9CisKK3ZhciB0d29fcHRyXzMyX2RibCA9IE1hdGgucG93KDIsIDMy
KTsKKwordmFyIHR3b19wdHJfNjNfZGJsID0gTWF0aC5wb3coMiwgNjMpOworCit2YXIgbmVnX3R3
b19wdHJfNjMgPSAtTWF0aC5wb3coMiwgNjMpOworCitmdW5jdGlvbiBvZl9mbG9hdCh4KSB7Cisg
IGlmIChpc05hTih4KSB8fCAhaXNGaW5pdGUoeCkpIHsKKyAgICByZXR1cm4gemVybzsKKyAgfQor
ICBlbHNlIGlmICh4IDw9IG5lZ190d29fcHRyXzYzKSB7CisgICAgcmV0dXJuIG1pbl9pbnQ7Cisg
IH0KKyAgZWxzZSBpZiAoeCArIDEgPj0gdHdvX3B0cl82M19kYmwpIHsKKyAgICByZXR1cm4gbWF4
X2ludDsKKyAgfQorICBlbHNlIGlmICh4IDwgMCkgeworICAgIHJldHVybiBuZWcob2ZfZmxvYXQo
LXgpKTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgaGkgPSB4IC8gdHdvX3B0cl8zMl9kYmwgfCAw
OworICAgIHZhciBsbyA9IHggJSB0d29fcHRyXzMyX2RibCB8IDA7CisgICAgcmV0dXJuIC8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAgIC8qIGhpICovaGksCisgICAgICAgICAgICAvKiBsbyAqLyhs
byA+Pj4gMCkKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGRpdihfc2VsZiwgX290
aGVyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgb3RoZXIgPSBfb3RoZXI7CisgICAgdmFy
IHNlbGYgPSBfc2VsZjsKKyAgICB2YXIgc2VsZl9oaSA9IHNlbGZbLyogaGkgKi8wXTsKKyAgICB2
YXIgZXhpdCA9IDA7CisgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgaWYgKG90aGVyWy8qIGhpICov
MF0gIT09IDApIHsKKyAgICAgIGV4aXQkMSA9IDI7CisgICAgfQorICAgIGVsc2UgaWYgKG90aGVy
Wy8qIGxvICovMV0gIT09IDApIHsKKyAgICAgIGV4aXQkMSA9IDI7CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZGl2aXNpb25fYnlfemVybzsK
KyAgICB9CisgICAgaWYgKGV4aXQkMSA9PT0gMikgeworICAgICAgaWYgKHNlbGZfaGkgIT09IC0y
MTQ3NDgzNjQ4KSB7CisgICAgICAgIGlmIChzZWxmX2hpICE9PSAwKSB7CisgICAgICAgICAgZXhp
dCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc2VsZlsvKiBsbyAqLzFdICE9PSAw
KSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIHplcm87CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHNl
bGZbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAg
IGVsc2UgaWYgKGVxKG90aGVyLCBvbmUpIHx8IGVxKG90aGVyLCBuZWdfb25lKSkgeworICAgICAg
ICByZXR1cm4gc2VsZjsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGVxKG90aGVyLCBtaW5faW50
KSkgeworICAgICAgICByZXR1cm4gb25lOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IHZhciBvdGhlcl9oaSA9IG90aGVyWy8qIGhpICovMF07CisgICAgICAgIHZhciBoYWxmX3RoaXMg
PSBhc3JfKHNlbGYsIDEpOworICAgICAgICB2YXIgYXBwcm94ID0gbHNsXyhkaXYoaGFsZl90aGlz
LCBvdGhlciksIDEpOworICAgICAgICB2YXIgZXhpdCQyID0gMDsKKyAgICAgICAgaWYgKGFwcHJv
eFsvKiBoaSAqLzBdICE9PSAwKSB7CisgICAgICAgICAgZXhpdCQyID0gMzsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIGlmIChhcHByb3hbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICAgIGV4
aXQkMiA9IDM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAob3RoZXJfaGkgPCAwKSB7Cisg
ICAgICAgICAgcmV0dXJuIG9uZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICByZXR1cm4gbmVnKG9uZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMiA9PT0gMykg
eworICAgICAgICAgIHZhciB5ID0gbXVsKG90aGVyLCBhcHByb3gpOworICAgICAgICAgIHZhciBy
ZW0gPSBhZGQoc2VsZiwgbmVnKHkpKTsKKyAgICAgICAgICByZXR1cm4gYWRkKGFwcHJveCwgZGl2
KHJlbSwgb3RoZXIpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAg
aWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIHZhciBvdGhlcl9oaSQxID0gb3RoZXJbLyogaGkgKi8w
XTsKKyAgICAgIHZhciBleGl0JDMgPSAwOworICAgICAgaWYgKG90aGVyX2hpJDEgIT09IC0yMTQ3
NDgzNjQ4KSB7CisgICAgICAgIGV4aXQkMyA9IDI7CisgICAgICB9CisgICAgICBlbHNlIGlmIChv
dGhlclsvKiBsbyAqLzFdICE9PSAwKSB7CisgICAgICAgIGV4aXQkMyA9IDI7CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHplcm87CisgICAgICB9CisgICAgICBpZiAoZXhp
dCQzID09PSAyKSB7CisgICAgICAgIGlmIChzZWxmX2hpIDwgMCkgeworICAgICAgICAgIGlmIChv
dGhlcl9oaSQxIDwgMCkgeworICAgICAgICAgICAgX290aGVyID0gbmVnKG90aGVyKTsKKyAgICAg
ICAgICAgIF9zZWxmID0gbmVnKHNlbGYpOworICAgICAgICAgICAgY29udGludWUgOworICAgICAg
ICAgICAgCisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJu
IG5lZyhkaXYobmVnKHNlbGYpLCBvdGhlcikpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlIGlmIChvdGhlcl9oaSQxIDwgMCkgeworICAgICAgICAgIHJldHVybiBuZWcoZGl2
KHNlbGYsIG5lZyhvdGhlcikpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICB2YXIgcmVzID0gemVybzsKKyAgICAgICAgICB2YXIgcmVtJDEgPSBzZWxmOworICAgICAgICAg
IHdoaWxlKGdlKHJlbSQxLCBvdGhlcikpIHsKKyAgICAgICAgICAgIHZhciBhcHByb3gkMSA9IE1h
dGgubWF4KDEsIE1hdGguZmxvb3IodG9fZmxvYXQocmVtJDEpIC8gdG9fZmxvYXQob3RoZXIpKSk7
CisgICAgICAgICAgICB2YXIgbG9nMiA9IE1hdGguY2VpbChNYXRoLmxvZyhhcHByb3gkMSkgLyBN
YXRoLkxOMik7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBsb2cyIDw9IDQ4ID8gMSA6IE1hdGgu
cG93KDIsIGxvZzIgLSA0OCk7CisgICAgICAgICAgICB2YXIgYXBwcm94UmVzID0gb2ZfZmxvYXQo
YXBwcm94JDEpOworICAgICAgICAgICAgdmFyIGFwcHJveFJlbSA9IG11bChhcHByb3hSZXMsIG90
aGVyKTsKKyAgICAgICAgICAgIHdoaWxlKGFwcHJveFJlbVsvKiBoaSAqLzBdIDwgMCB8fCBndChh
cHByb3hSZW0sIHJlbSQxKSkgeworICAgICAgICAgICAgICBhcHByb3gkMSAtPSBkZWx0YTsKKyAg
ICAgICAgICAgICAgYXBwcm94UmVzID0gb2ZfZmxvYXQoYXBwcm94JDEpOworICAgICAgICAgICAg
ICBhcHByb3hSZW0gPSBtdWwoYXBwcm94UmVzLCBvdGhlcik7CisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgaWYgKGlzX3plcm8oYXBwcm94UmVzKSkgeworICAgICAgICAgICAgICBhcHByb3hS
ZXMgPSBvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBhZGQocmVzLCBhcHBy
b3hSZXMpOworICAgICAgICAgICAgcmVtJDEgPSBhZGQocmVtJDEsIG5lZyhhcHByb3hSZW0pKTsK
KyAgICAgICAgICB9OworICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIAorICAgIH0KKyAgICAKKyAgfTsKK30KKworZnVuY3Rpb24gbW9kXyhzZWxmLCBvdGhl
cikgeworICB2YXIgeSA9IG11bChkaXYoc2VsZiwgb3RoZXIpLCBvdGhlcik7CisgIHJldHVybiBh
ZGQoc2VsZiwgbmVnKHkpKTsKK30KKworZnVuY3Rpb24gZGl2X21vZChzZWxmLCBvdGhlcikgewor
ICB2YXIgcXVvdGllbnQgPSBkaXYoc2VsZiwgb3RoZXIpOworICB2YXIgeSA9IG11bChxdW90aWVu
dCwgb3RoZXIpOworICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgcXVvdGllbnQsCisg
ICAgICAgICAgYWRkKHNlbGYsIG5lZyh5KSkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gY29t
cGFyZShzZWxmLCBvdGhlcikgeworICB2YXIgdiA9IENhbWxfb2JqLmNhbWxfbmF0aXZlaW50X2Nv
bXBhcmUoc2VsZlsvKiBoaSAqLzBdLCBvdGhlclsvKiBoaSAqLzBdKTsKKyAgaWYgKHYpIHsKKyAg
ICByZXR1cm4gdjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2FtbF9vYmouY2FtbF9uYXRp
dmVpbnRfY29tcGFyZShzZWxmWy8qIGxvICovMV0sIG90aGVyWy8qIGxvICovMV0pOworICB9Cit9
CisKK2Z1bmN0aW9uIG9mX2ludDMyKGxvKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgLyogaGkgKi9sbyA8IDAgPyAtMSA6IDAsCisgICAgICAgICAgLyogbG8gKi8obG8gPj4+
IDApCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRvX2ludDMyKHgpIHsKKyAgcmV0dXJuIHhb
LyogbG8gKi8xXSB8IDA7Cit9CisKK2Z1bmN0aW9uIHRvX2hleCh4KSB7CisgIHZhciBhdXggPSBm
dW5jdGlvbiAodikgeworICAgIHJldHVybiAodiA+Pj4gMCkudG9TdHJpbmcoMTYpOworICB9Owor
ICB2YXIgbWF0Y2ggPSB4Wy8qIGhpICovMF07CisgIHZhciBtYXRjaCQxID0geFsvKiBsbyAqLzFd
OworICB2YXIgZXhpdCA9IDA7CisgIGlmIChtYXRjaCAhPT0gMCkgeworICAgIGV4aXQgPSAxOwor
ICB9CisgIGVsc2UgaWYgKG1hdGNoJDEgIT09IDApIHsKKyAgICBleGl0ID0gMTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gIjAiOworICB9CisgIGlmIChleGl0ID09PSAxKSB7CisgICAgaWYg
KG1hdGNoJDEgIT09IDApIHsKKyAgICAgIGlmIChtYXRjaCAhPT0gMCkgeworICAgICAgICB2YXIg
bG8gPSBhdXgoeFsvKiBsbyAqLzFdKTsKKyAgICAgICAgdmFyIHBhZCA9IDggLSBsby5sZW5ndGgg
fCAwOworICAgICAgICBpZiAocGFkIDw9IDApIHsKKyAgICAgICAgICByZXR1cm4gYXV4KHhbLyog
aGkgKi8wXSkgKyBsbzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gYXV4KHhbLyogaGkgKi8wXSkgKyAoQ2FtbF91dGlscy5yZXBlYXQocGFkLCAiMCIpICsgbG8p
OworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGF1eCh4
Wy8qIGxvICovMV0pOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBh
dXgoeFsvKiBoaSAqLzBdKSArICIwMDAwMDAwMCI7CisgICAgfQorICB9CisgIAorfQorCitmdW5j
dGlvbiBkaXNjYXJkX3NpZ24oeCkgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAg
IC8qIGhpICovMjE0NzQ4MzY0NyAmIHhbLyogaGkgKi8wXSwKKyAgICAgICAgICAvKiBsbyAqL3hb
LyogbG8gKi8xXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBmbG9hdF9vZl9iaXRzKHgpIHsK
KyAgdmFyIGludDMyID0gbmV3IEludDMyQXJyYXkoLyogYXJyYXkgKi9bCisgICAgICAgIHhbLyog
bG8gKi8xXSwKKyAgICAgICAgeFsvKiBoaSAqLzBdCisgICAgICBdKTsKKyAgcmV0dXJuIG5ldyBG
bG9hdDY0QXJyYXkoaW50MzIuYnVmZmVyKVswXTsKK30KKworZnVuY3Rpb24gYml0c19vZl9mbG9h
dCh4KSB7CisgIHZhciB0b19uYXQgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB4OworICB9
OworICB2YXIgdSA9IG5ldyBGbG9hdDY0QXJyYXkoLyogZmxvYXQgYXJyYXkgKi9beF0pOworICB2
YXIgaW50MzIgPSBuZXcgSW50MzJBcnJheSh1LmJ1ZmZlcik7CisgIHZhciBoaSA9IHRvX25hdChp
bnQzMlsxXSk7CisgIHZhciBsbyA9IHRvX25hdChpbnQzMlswXSk7CisgIHJldHVybiAvKiByZWNv
cmQgKi9bCisgICAgICAgICAgLyogaGkgKi9oaSwKKyAgICAgICAgICAvKiBsbyAqLyhsbyA+Pj4g
MCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZ2V0NjQocywgaSkgeworICB2YXIgaGkgPSAo
cy5jaGFyQ29kZUF0KGkgKyA0IHwgMCkgPDwgMzIpIHwgKHMuY2hhckNvZGVBdChpICsgNSB8IDAp
IDw8IDQwKSB8IChzLmNoYXJDb2RlQXQoaSArIDYgfCAwKSA8PCA0OCkgfCAocy5jaGFyQ29kZUF0
KGkgKyA3IHwgMCkgPDwgNTYpOworICB2YXIgbG8gPSBzLmNoYXJDb2RlQXQoaSkgfCAocy5jaGFy
Q29kZUF0KGkgKyAxIHwgMCkgPDwgOCkgfCAocy5jaGFyQ29kZUF0KGkgKyAyIHwgMCkgPDwgMTYp
IHwgKHMuY2hhckNvZGVBdChpICsgMyB8IDApIDw8IDI0KTsKKyAgcmV0dXJuIC8qIHJlY29yZCAq
L1sKKyAgICAgICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgIC8qIGxvICovKGxvID4+PiAwKQor
ICAgICAgICBdOworfQorCitleHBvcnRzLm1pbl9pbnQgICAgICAgPSBtaW5faW50OworZXhwb3J0
cy5tYXhfaW50ICAgICAgID0gbWF4X2ludDsKK2V4cG9ydHMub25lICAgICAgICAgICA9IG9uZTsK
K2V4cG9ydHMuemVybyAgICAgICAgICA9IHplcm87CitleHBvcnRzLm5vdCAgICAgICAgICAgPSBu
b3Q7CitleHBvcnRzLm9mX2ludDMyICAgICAgPSBvZl9pbnQzMjsKK2V4cG9ydHMudG9faW50MzIg
ICAgICA9IHRvX2ludDMyOworZXhwb3J0cy5hZGQgICAgICAgICAgID0gYWRkOworZXhwb3J0cy5u
ZWcgICAgICAgICAgID0gbmVnOworZXhwb3J0cy5zdWIgICAgICAgICAgID0gc3ViOworZXhwb3J0
cy5sc2xfICAgICAgICAgID0gbHNsXzsKK2V4cG9ydHMubHNyXyAgICAgICAgICA9IGxzcl87Citl
eHBvcnRzLmFzcl8gICAgICAgICAgPSBhc3JfOworZXhwb3J0cy5pc196ZXJvICAgICAgID0gaXNf
emVybzsKK2V4cG9ydHMubXVsICAgICAgICAgICA9IG11bDsKK2V4cG9ydHMueG9yICAgICAgICAg
ICA9IHhvcjsKK2V4cG9ydHMub3JfICAgICAgICAgICA9IG9yXzsKK2V4cG9ydHMuYW5kXyAgICAg
ICAgICA9IGFuZF87CitleHBvcnRzLnN3YXAgICAgICAgICAgPSBzd2FwOworZXhwb3J0cy5nZSAg
ICAgICAgICAgID0gZ2U7CitleHBvcnRzLmVxICAgICAgICAgICAgPSBlcTsKK2V4cG9ydHMubmVx
ICAgICAgICAgICA9IG5lcTsKK2V4cG9ydHMubHQgICAgICAgICAgICA9IGx0OworZXhwb3J0cy5n
dCAgICAgICAgICAgID0gZ3Q7CitleHBvcnRzLmxlICAgICAgICAgICAgPSBsZTsKK2V4cG9ydHMu
dG9fZmxvYXQgICAgICA9IHRvX2Zsb2F0OworZXhwb3J0cy5vZl9mbG9hdCAgICAgID0gb2ZfZmxv
YXQ7CitleHBvcnRzLmRpdiAgICAgICAgICAgPSBkaXY7CitleHBvcnRzLm1vZF8gICAgICAgICAg
PSBtb2RfOworZXhwb3J0cy5kaXZfbW9kICAgICAgID0gZGl2X21vZDsKK2V4cG9ydHMuY29tcGFy
ZSAgICAgICA9IGNvbXBhcmU7CitleHBvcnRzLnRvX2hleCAgICAgICAgPSB0b19oZXg7CitleHBv
cnRzLmRpc2NhcmRfc2lnbiAgPSBkaXNjYXJkX3NpZ247CitleHBvcnRzLmZsb2F0X29mX2JpdHMg
PSBmbG9hdF9vZl9iaXRzOworZXhwb3J0cy5iaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdDsK
K2V4cG9ydHMuZ2V0NjQgICAgICAgICA9IGdldDY0OworLyogdHdvX3B0cl8zMl9kYmwgTm90IGEg
cHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX2ludDY0LmpzIC8vLy8vLy8vCivC
oCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2NhbWxpbnRlcm5h
bEZvcm1hdEJhc2ljcyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9Owor
Ly8vLy8vLy8gc3RhcnQgb2YgY2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmpzIC8vLy8vLy8vCisn
dXNlIHN0cmljdCc7CisKK3ZhciBCbG9jayA9IHJlcXVpcmUoIi4vYmxvY2siKTsKKworZnVuY3Rp
b24gZXJhc2VfcmVsKHBhcmFtKSB7CisgIGlmICh0eXBlb2YgcGFyYW0gPT09ICJudW1iZXIiKSB7
CisgICAgcmV0dXJuIC8qIEVuZF9vZl9mbXR0eSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgc3dp
dGNoIChwYXJhbS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4g
LyogQ2hhcl90eSAqL0Jsb2NrLl9fKDAsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogU3RyaW5nX3R5ICovQmxvY2suX18oMSwgW2Vy
YXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAv
KiBJbnRfdHkgKi9CbG9jay5fXygyLCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOworICAgICAgY2Fz
ZSAzIDogCisgICAgICAgICAgcmV0dXJuIC8qIEludDMyX3R5ICovQmxvY2suX18oMywgW2VyYXNl
X3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJldHVybiAvKiBO
YXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOworICAgICAg
Y2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW2Vy
YXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiAv
KiBGbG9hdF90eSAqL0Jsb2NrLl9fKDYsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBj
YXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcsIFtlcmFz
ZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICByZXR1cm4gLyog
Rm9ybWF0X2FyZ190eSAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1b
MF0sCisgICAgICAgICAgICAgICAgICAgIGVyYXNlX3JlbChwYXJhbVsxXSkKKyAgICAgICAgICAg
ICAgICAgIF0pOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgdmFyIHR5MSA9IHBhcmFtWzBd
OworICAgICAgICAgIHJldHVybiAvKiBGb3JtYXRfc3Vic3RfdHkgKi9CbG9jay5fXyg5LCBbCisg
ICAgICAgICAgICAgICAgICAgIHR5MSwKKyAgICAgICAgICAgICAgICAgICAgdHkxLAorICAgICAg
ICAgICAgICAgICAgICBlcmFzZV9yZWwocGFyYW1bMl0pCisgICAgICAgICAgICAgICAgICBdKTsK
KyAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICByZXR1cm4gLyogQWxwaGFfdHkgKi9CbG9jay5f
XygxMCwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAg
ICByZXR1cm4gLyogVGhldGFfdHkgKi9CbG9jay5fXygxMSwgW2VyYXNlX3JlbChwYXJhbVswXSld
KTsKKyAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICByZXR1cm4gLyogQW55X3R5ICovQmxvY2su
X18oMTIsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEzIDogCisgICAgICAg
ICAgcmV0dXJuIC8qIFJlYWRlcl90eSAqL0Jsb2NrLl9fKDEzLCBbZXJhc2VfcmVsKHBhcmFtWzBd
KV0pOworICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgIHJldHVybiAvKiBJZ25vcmVkX3JlYWRl
cl90eSAqL0Jsb2NrLl9fKDE0LCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOworICAgICAgCisgICAg
fQorICB9Cit9CisKK2Z1bmN0aW9uIGNvbmNhdF9mbXR0eShmbXR0eTEsIGZtdHR5MikgeworICBp
ZiAodHlwZW9mIGZtdHR5MSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gZm10dHkyOworICB9
CisgIGVsc2UgeworICAgIHN3aXRjaCAoZm10dHkxLnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6
IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxvY2suX18oMCwgW2NvbmNhdF9mbXR0
eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVy
biAvKiBTdHJpbmdfdHkgKi9CbG9jay5fXygxLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10
dHkyKV0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIC8qIEludF90eSAqL0Js
b2NrLl9fKDIsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7CisgICAgICBjYXNl
IDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50MzJfdHkgKi9CbG9jay5fXygzLCBbY29uY2F0
X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAg
cmV0dXJuIC8qIE5hdGl2ZWludF90eSAqL0Jsb2NrLl9fKDQsIFtjb25jYXRfZm10dHkoZm10dHkx
WzBdLCBmbXR0eTIpXSk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50
NjRfdHkgKi9CbG9jay5fXyg1LCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOwor
ICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3R5ICovQmxvY2suX18o
NiwgW2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgNyA6IAor
ICAgICAgICAgIHJldHVybiAvKiBCb29sX3R5ICovQmxvY2suX18oNywgW2NvbmNhdF9mbXR0eShm
bXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIHJldHVybiAv
KiBGb3JtYXRfYXJnX3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICBmbXR0
eTFbMF0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXR0eShmbXR0eTFbMV0sIGZtdHR5
MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0
dXJuIC8qIEZvcm1hdF9zdWJzdF90eSAqL0Jsb2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAg
ICAgZm10dHkxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXR0eTFbMV0sCisgICAgICAgICAg
ICAgICAgICAgIGNvbmNhdF9mbXR0eShmbXR0eTFbMl0sIGZtdHR5MikKKyAgICAgICAgICAgICAg
ICAgIF0pOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIHJldHVybiAvKiBBbHBoYV90eSAq
L0Jsb2NrLl9fKDEwLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOworICAgICAg
Y2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiAvKiBUaGV0YV90eSAqL0Jsb2NrLl9fKDExLCBb
Y29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOworICAgICAgY2FzZSAxMiA6IAorICAg
ICAgICAgIHJldHVybiAvKiBBbnlfdHkgKi9CbG9jay5fXygxMiwgW2NvbmNhdF9mbXR0eShmbXR0
eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICByZXR1cm4gLyog
UmVhZGVyX3R5ICovQmxvY2suX18oMTMsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIp
XSk7CisgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgcmV0dXJuIC8qIElnbm9yZWRfcmVhZGVy
X3R5ICovQmxvY2suX18oMTQsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7Cisg
ICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gY29uY2F0X2ZtdChmbXQxLCBmbXQyKSB7
CisgIGlmICh0eXBlb2YgZm10MSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gZm10MjsKKyAg
fQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGZtdDEudGFnIHwgMCkgeworICAgICAgY2FzZSAwIDog
CisgICAgICAgICAgcmV0dXJuIC8qIENoYXIgKi9CbG9jay5fXygwLCBbY29uY2F0X2ZtdChmbXQx
WzBdLCBmbXQyKV0pOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIC8qIENhbWxf
Y2hhciAqL0Jsb2NrLl9fKDEsIFtjb25jYXRfZm10KGZtdDFbMF0sIGZtdDIpXSk7CisgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gLyogU3RyaW5nICovQmxvY2suX18oMiwgWworICAg
ICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10
KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMyA6IAor
ICAgICAgICAgIHJldHVybiAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAg
ICAgICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQx
WzFdLCBmbXQyKQorICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAg
ICAgICByZXR1cm4gLyogSW50ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICBm
bXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAgICAgICAgICAgICAg
ICBmbXQxWzJdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbM10sIGZtdDIp
CisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVy
biAvKiBJbnQzMiAqL0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwK
KyAgICAgICAgICAgICAgICAgICAgZm10MVsxXSwKKyAgICAgICAgICAgICAgICAgICAgZm10MVsy
XSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzNdLCBmbXQyKQorICAgICAg
ICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICByZXR1cm4gLyogTmF0
aXZlaW50ICovQmxvY2suX18oNiwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAg
ICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzJdLAor
ICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbM10sIGZtdDIpCisgICAgICAgICAg
ICAgICAgICBdKTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiAvKiBJbnQ2NCAq
L0Jsb2NrLl9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAg
ICAgICAgICAgZm10MVsxXSwKKyAgICAgICAgICAgICAgICAgICAgZm10MVsyXSwKKyAgICAgICAg
ICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzNdLCBmbXQyKQorICAgICAgICAgICAgICAgICAg
XSk7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICByZXR1cm4gLyogRmxvYXQgKi9CbG9jay5f
Xyg4LCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAgICAgICAgICAg
IGZtdDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMl0sCisgICAgICAgICAgICAgICAg
ICAgIGNvbmNhdF9mbXQoZm10MVszXSwgZm10MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAg
ICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0dXJuIC8qIEJvb2wgKi9CbG9jay5fXyg5LCBbY29u
Y2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0pOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIHJl
dHVybiAvKiBGbHVzaCAqL0Jsb2NrLl9fKDEwLCBbY29uY2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0p
OworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiAvKiBTdHJpbmdfbGl0ZXJhbCAq
L0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAg
ICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsxXSwgZm10MikKKyAgICAgICAgICAgICAgICAgIF0p
OworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyX2xpdGVyYWwgKi9C
bG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAg
ICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsK
KyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0X2FyZyAqL0Jsb2Nr
Ll9fKDEzLCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAgICAgICAg
ICAgIGZtdDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsyXSwgZm10
MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgIHJl
dHVybiAvKiBGb3JtYXRfc3Vic3QgKi9CbG9jay5fXygxNCwgWworICAgICAgICAgICAgICAgICAg
ICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAgICAgICAgICAg
ICAgICBjb25jYXRfZm10KGZtdDFbMl0sIGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsKKyAg
ICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICByZXR1cm4gLyogQWxwaGEgKi9CbG9jay5fXygxNSwg
W2NvbmNhdF9mbXQoZm10MVswXSwgZm10MildKTsKKyAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAg
ICByZXR1cm4gLyogVGhldGEgKi9CbG9jay5fXygxNiwgW2NvbmNhdF9mbXQoZm10MVswXSwgZm10
MildKTsKKyAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0dGluZ19s
aXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAg
ICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAgICAgICAg
ICBdKTsKKyAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0dGluZ19n
ZW4gKi9CbG9jay5fXygxOCwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAg
ICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAgICAgICAg
ICBdKTsKKyAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICByZXR1cm4gLyogUmVhZGVyICovQmxv
Y2suX18oMTksIFtjb25jYXRfZm10KGZtdDFbMF0sIGZtdDIpXSk7CisgICAgICBjYXNlIDIwIDog
CisgICAgICAgICAgcmV0dXJuIC8qIFNjYW5fY2hhcl9zZXQgKi9CbG9jay5fXygyMCwgWworICAg
ICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAor
ICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMl0sIGZtdDIpCisgICAgICAgICAg
ICAgICAgICBdKTsKKyAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICByZXR1cm4gLyogU2Nhbl9n
ZXRfY291bnRlciAqL0Jsb2NrLl9fKDIxLCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0s
CisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsxXSwgZm10MikKKyAgICAgICAg
ICAgICAgICAgIF0pOworICAgICAgY2FzZSAyMiA6IAorICAgICAgICAgIHJldHVybiAvKiBTY2Fu
X25leHRfY2hhciAqL0Jsb2NrLl9fKDIyLCBbY29uY2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0pOwor
ICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgIHJldHVybiAvKiBJZ25vcmVkX3BhcmFtICovQmxv
Y2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAgICAg
ICAgICAgY29uY2F0X2ZtdChmbXQxWzFdLCBmbXQyKQorICAgICAgICAgICAgICAgICAgXSk7Cisg
ICAgICBjYXNlIDI0IDogCisgICAgICAgICAgcmV0dXJuIC8qIEN1c3RvbSAqL0Jsb2NrLl9fKDI0
LCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAgICAgICAgICAgIGZt
dDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsyXSwgZm10MikKKyAg
ICAgICAgICAgICAgICAgIF0pOworICAgICAgCisgICAgfQorICB9Cit9CisKK2V4cG9ydHMuY29u
Y2F0X2ZtdHR5ID0gY29uY2F0X2ZtdHR5OworZXhwb3J0cy5lcmFzZV9yZWwgICAgPSBlcmFzZV9y
ZWw7CitleHBvcnRzLmNvbmNhdF9mbXQgICA9IGNvbmNhdF9mbXQ7CisvKiBObyBzaWRlIGVmZmVj
dCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5qcyAvLy8vLy8v
LworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1saW50
ZXJuYWxGb3JtYXQnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8v
Ly8vLy8vIHN0YXJ0IG9mIGNhbWxpbnRlcm5hbEZvcm1hdC5qcyAvLy8vLy8vLworJ3VzZSBzdHJp
Y3QnOworCit2YXIgU3lzICAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zeXMiKTsK
K3ZhciBDaGFyICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NoYXIiKTsKK3ZhciBC
bG9jayAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Jsb2NrIik7Cit2YXIgQnl0ZXMg
ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ieXRlcyIpOwordmFyIEN1cnJ5ICAgICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBCdWZmZXIgICAgICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2J1ZmZlciIpOwordmFyICQkU3RyaW5nICAgICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vc3RyaW5nIik7Cit2YXIgQ2FtbF9pbyAgICAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9jYW1sX2lvIik7Cit2YXIgQ2FtbF9vYmogICAgICAgICAgICAgICAgID0g
cmVxdWlyZSgiLi9jYW1sX29iaiIpOwordmFyIENhbWxfYnl0ZXMgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9ieXRlcyIpOwordmFyIENhbWxfZmxvYXQgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9mbG9hdCIpOwordmFyIENhbWxfaW50MzIgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9pbnQzMiIpOwordmFyIFBlcnZhc2l2ZXMgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxfZm9ybWF0ICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9mb3JtYXQiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7Cit2YXIgQ2FtbF9leGNlcHRpb25zICAgICAgICAgID0g
cmVxdWlyZSgiLi9jYW1sX2V4Y2VwdGlvbnMiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cyAgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7Cit2YXIgQ2FtbGludGVy
bmFsRm9ybWF0QmFzaWNzID0gcmVxdWlyZSgiLi9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MiKTsK
KworZnVuY3Rpb24gY3JlYXRlX2NoYXJfc2V0KCkgeworICByZXR1cm4gQnl0ZXMubWFrZSgzMiwg
LyogIlwwMDAiICovMCk7Cit9CisKK2Z1bmN0aW9uIGFkZF9pbl9jaGFyX3NldChjaGFyX3NldCwg
YykgeworICB2YXIgc3RyX2luZCA9IChjID4+PiAzKTsKKyAgdmFyIG1hc2sgPSAoMSA8PCAoYyAm
IDcpKTsKKyAgY2hhcl9zZXRbc3RyX2luZF0gPSBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KENhbWxf
Ynl0ZXMuZ2V0KGNoYXJfc2V0LCBzdHJfaW5kKSB8IG1hc2spOworICByZXR1cm4gLyogKCkgKi8w
OworfQorCit2YXIgZnJlZXplX2NoYXJfc2V0ID0gQnl0ZXMudG9fc3RyaW5nOworCitmdW5jdGlv
biByZXZfY2hhcl9zZXQoY2hhcl9zZXQpIHsKKyAgdmFyIGNoYXJfc2V0JHByaW1lID0gQnl0ZXMu
bWFrZSgzMiwgLyogIlwwMDAiICovMCk7CisgIGZvcih2YXIgaSA9IDA7IGkgPD0gMzE7ICsraSl7
CisgICAgY2hhcl9zZXQkcHJpbWVbaV0gPSBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KENhbWxfc3Ry
aW5nLmdldChjaGFyX3NldCwgaSkgXiAyNTUpOworICB9CisgIHJldHVybiBDYW1sX3N0cmluZy5i
eXRlc190b19zdHJpbmcoY2hhcl9zZXQkcHJpbWUpOworfQorCitmdW5jdGlvbiBpc19pbl9jaGFy
X3NldChjaGFyX3NldCwgYykgeworICB2YXIgc3RyX2luZCA9IChjID4+PiAzKTsKKyAgdmFyIG1h
c2sgPSAoMSA8PCAoYyAmIDcpKTsKKyAgcmV0dXJuICsoKENhbWxfc3RyaW5nLmdldChjaGFyX3Nl
dCwgc3RyX2luZCkgJiBtYXNrKSAhPT0gMCk7Cit9CisKK2Z1bmN0aW9uIHBhZF9vZl9wYWRfb3B0
KHBhZF9vcHQpIHsKKyAgaWYgKHBhZF9vcHQpIHsKKyAgICByZXR1cm4gLyogTGl0X3BhZGRpbmcg
Ki9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgIC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAg
ICAgcGFkX29wdFswXQorICAgICAgICAgICAgXSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IC8qIE5vX3BhZGRpbmcgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHByZWNfb2ZfcHJlY19vcHQo
cHJlY19vcHQpIHsKKyAgaWYgKHByZWNfb3B0KSB7CisgICAgcmV0dXJuIC8qIExpdF9wcmVjaXNp
b24gKi9bcHJlY19vcHRbMF1dOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBOb19wcmVj
aXNpb24gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zv
cm1hdChpZ24sIGZtdCkgeworICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJlciIpIHsKKyAgICBz
d2l0Y2ggKGlnbikgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFt
X2Zvcm1hdF9FQkIgKi9bLyogQ2hhciAqL0Jsb2NrLl9fKDAsIFtmbXRdKV07CisgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBDYW1sX2No
YXIgKi9CbG9jay5fXygxLCBbZm10XSldOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0
dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogQm9vbCAqL0Jsb2NrLl9fKDksIFtmbXRdKV07
CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAq
L1svKiBSZWFkZXIgKi9CbG9jay5fXygxOSwgW2ZtdF0pXTsKKyAgICAgIGNhc2UgNCA6IAorICAg
ICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIFNjYW5fbmV4dF9jaGFyICov
QmxvY2suX18oMjIsIFtmbXRdKV07CisgICAgICAKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAg
c3dpdGNoIChpZ24udGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0dXJu
IC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogU3RyaW5nICovQmxvY2suX18oMiwgWworICAgICAg
ICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblswXSksCisgICAgICAgICAgICAgICAg
ICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNhc2UgMSA6IAorICAg
ICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIENhbWxfc3RyaW5nICovQmxv
Y2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblswXSks
CisgICAgICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8q
IEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICBpZ25bMF0sCisgICAg
ICAgICAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQoaWduWzFdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIGZtdAor
ICAgICAgICAgICAgICAgICAgICBdKV07CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1
cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBJbnQzMiAqL0Jsb2NrLl9fKDUsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICBpZ25bMF0sCisgICAgICAgICAgICAgICAgICAgICAgcGFkX29mX3Bh
ZF9vcHQoaWduWzFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8w
LAorICAgICAgICAgICAgICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAgICBdKV07Cisg
ICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1sv
KiBOYXRpdmVpbnQgKi9CbG9jay5fXyg2LCBbCisgICAgICAgICAgICAgICAgICAgICAgaWduWzBd
LAorICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblsxXSksCisgICAgICAg
ICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAg
ICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgY2FzZSA1IDogCisgICAgICAg
ICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogSW50NjQgKi9CbG9jay5fXyg3LCBb
CisgICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgIHBh
ZF9vZl9wYWRfb3B0KGlnblsxXSksCisgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lz
aW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAg
XSldOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9F
QkIgKi9bLyogRmxvYXQgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgICAgLyog
RmxvYXRfZiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQoaWduWzBd
KSwKKyAgICAgICAgICAgICAgICAgICAgICBwcmVjX29mX3ByZWNfb3B0KGlnblsxXSksCisgICAg
ICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNh
c2UgNyA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIEZvcm1h
dF9hcmcgKi9CbG9jay5fXygxMywgWworICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKKyAg
ICAgICAgICAgICAgICAgICAgICBpZ25bMV0sCisgICAgICAgICAgICAgICAgICAgICAgZm10Cisg
ICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIHJldHVy
biAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIEZvcm1hdF9zdWJzdCAqL0Jsb2NrLl9fKDE0LCBb
CisgICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgIGln
blsxXSwKKyAgICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSld
OworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIg
Ki9bLyogU2Nhbl9jaGFyX3NldCAqL0Jsb2NrLl9fKDIwLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgIGlnblsxXSwKKyAgICAgICAgICAgICAg
ICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgY2FzZSAxMCA6IAor
ICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIFNjYW5fZ2V0X2NvdW50
ZXIgKi9CbG9jay5fXygyMSwgWworICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKKyAgICAg
ICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgCisg
ICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGJ1ZmZlcl9jaGVja19zaXplKGJ1Ziwgb3ZlcmhlYWQp
IHsKKyAgdmFyIGxlbiA9IGJ1ZlsvKiBieXRlcyAqLzFdLmxlbmd0aDsKKyAgdmFyIG1pbl9sZW4g
PSBidWZbLyogaW5kICovMF0gKyBvdmVyaGVhZCB8IDA7CisgIGlmIChtaW5fbGVuID4gbGVuKSB7
CisgICAgdmFyIG5ld19sZW4gPSBQZXJ2YXNpdmVzLm1heCgobGVuIDw8IDEpLCBtaW5fbGVuKTsK
KyAgICB2YXIgbmV3X3N0ciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhuZXdfbGVu
KTsKKyAgICBCeXRlcy5ibGl0KGJ1ZlsvKiBieXRlcyAqLzFdLCAwLCBuZXdfc3RyLCAwLCBsZW4p
OworICAgIGJ1ZlsvKiBieXRlcyAqLzFdID0gbmV3X3N0cjsKKyAgICByZXR1cm4gLyogKCkgKi8w
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGJ1ZmZl
cl9hZGRfY2hhcihidWYsIGMpIHsKKyAgYnVmZmVyX2NoZWNrX3NpemUoYnVmLCAxKTsKKyAgYnVm
Wy8qIGJ5dGVzICovMV1bYnVmWy8qIGluZCAqLzBdXSA9IGM7CisgIGJ1ZlsvKiBpbmQgKi8wXSA9
IGJ1ZlsvKiBpbmQgKi8wXSArIDEgfCAwOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5j
dGlvbiBidWZmZXJfYWRkX3N0cmluZyhidWYsIHMpIHsKKyAgdmFyIHN0cl9sZW4gPSBzLmxlbmd0
aDsKKyAgYnVmZmVyX2NoZWNrX3NpemUoYnVmLCBzdHJfbGVuKTsKKyAgJCRTdHJpbmcuYmxpdChz
LCAwLCBidWZbLyogYnl0ZXMgKi8xXSwgYnVmWy8qIGluZCAqLzBdLCBzdHJfbGVuKTsKKyAgYnVm
Wy8qIGluZCAqLzBdID0gYnVmWy8qIGluZCAqLzBdICsgc3RyX2xlbiB8IDA7CisgIHJldHVybiAv
KiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGJ1ZmZlcl9jb250ZW50cyhidWYpIHsKKyAgcmV0dXJu
IEJ5dGVzLnN1Yl9zdHJpbmcoYnVmWy8qIGJ5dGVzICovMV0sIDAsIGJ1ZlsvKiBpbmQgKi8wXSk7
Cit9CisKK2Z1bmN0aW9uIGNoYXJfb2ZfaWNvbnYoaWNvbnYpIHsKKyAgc3dpdGNoIChpY29udikg
eworICAgIGNhc2UgMCA6IAorICAgIGNhc2UgMSA6IAorICAgIGNhc2UgMiA6IAorICAgICAgICBy
ZXR1cm4gLyogImQiICovMTAwOworICAgIGNhc2UgMyA6IAorICAgIGNhc2UgNCA6IAorICAgIGNh
c2UgNSA6IAorICAgICAgICByZXR1cm4gLyogImkiICovMTA1OworICAgIGNhc2UgNiA6IAorICAg
IGNhc2UgNyA6IAorICAgICAgICByZXR1cm4gLyogIngiICovMTIwOworICAgIGNhc2UgOCA6IAor
ICAgIGNhc2UgOSA6IAorICAgICAgICByZXR1cm4gLyogIlgiICovODg7CisgICAgY2FzZSAxMCA6
IAorICAgIGNhc2UgMTEgOiAKKyAgICAgICAgcmV0dXJuIC8qICJvIiAqLzExMTsKKyAgICBjYXNl
IDEyIDogCisgICAgICAgIHJldHVybiAvKiAidSIgKi8xMTc7CisgICAgCisgIH0KK30KKworZnVu
Y3Rpb24gY2hhcl9vZl9mY29udihmY29udikgeworICBzd2l0Y2ggKGZjb252KSB7CisgICAgY2Fz
ZSAwIDogCisgICAgY2FzZSAxIDogCisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiAi
ZiIgKi8xMDI7CisgICAgY2FzZSAzIDogCisgICAgY2FzZSA0IDogCisgICAgY2FzZSA1IDogCisg
ICAgICAgIHJldHVybiAvKiAiZSIgKi8xMDE7CisgICAgY2FzZSA2IDogCisgICAgY2FzZSA3IDog
CisgICAgY2FzZSA4IDogCisgICAgICAgIHJldHVybiAvKiAiRSIgKi82OTsKKyAgICBjYXNlIDkg
OiAKKyAgICBjYXNlIDEwIDogCisgICAgY2FzZSAxMSA6IAorICAgICAgICByZXR1cm4gLyogImci
ICovMTAzOworICAgIGNhc2UgMTIgOiAKKyAgICBjYXNlIDEzIDogCisgICAgY2FzZSAxNCA6IAor
ICAgICAgICByZXR1cm4gLyogIkciICovNzE7CisgICAgY2FzZSAxNSA6IAorICAgICAgICByZXR1
cm4gLyogIkYiICovNzA7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gY2hhcl9vZl9jb3VudGVy
KGNvdW50ZXIpIHsKKyAgc3dpdGNoIChjb3VudGVyKSB7CisgICAgY2FzZSAwIDogCisgICAgICAg
IHJldHVybiAvKiAibCIgKi8xMDg7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiAi
biIgKi8xMTA7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiAiTiIgKi83ODsKKyAg
ICAKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfY2hhcl9zZXQoYnVmLCBjaGFyX3NldCkgewor
ICB2YXIgcHJpbnRfY2hhciA9IGZ1bmN0aW9uIChidWYsIGkpIHsKKyAgICB2YXIgYyA9IFBlcnZh
c2l2ZXMuY2hhcl9vZl9pbnQoaSk7CisgICAgaWYgKGMgIT09IDM3KSB7CisgICAgICBpZiAoYyAh
PT0gNjQpIHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGMpOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3
KTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJAIiAqLzY0KTsKKyAg
ICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAi
JSIgKi8zNyk7CisgICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcp
OworICAgIH0KKyAgfTsKKyAgdmFyIHByaW50X291dCA9IGZ1bmN0aW9uIChzZXQsIF9pKSB7Cisg
ICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIGkgPSBfaTsKKyAgICAgIGlmIChpIDwgMjU2KSB7
CisgICAgICAgIGlmIChpc19pbl9jaGFyX3NldChzZXQsIFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQo
aSkpKSB7CisgICAgICAgICAgdmFyIHNldCQxID0gc2V0OworICAgICAgICAgIHZhciBpJDEgPSBp
OworICAgICAgICAgIHZhciBtYXRjaCA9IFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoaSQxKTsKKyAg
ICAgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQ1IHwgMDsKKyAgICAgICAgICBpZiAoc3dp
dGNoZXIgPiA0OCB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICAgIGlmIChzd2l0Y2hlciA+
PSAyMTApIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHByaW50X2NoYXIoYnVmLCAyNTUpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBwcmlu
dF9zZWNvbmQoc2V0JDEsIGkkMSArIDEgfCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSBpZiAoc3dpdGNoZXIgPiA0NyB8fCBzd2l0Y2hlciA8IDEpIHsKKyAg
ICAgICAgICAgIHJldHVybiBwcmludF9vdXQoc2V0JDEsIGkkMSArIDEgfCAwKTsKKyAgICAgICAg
ICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcHJpbnRfc2Vjb25kKHNl
dCQxLCBpJDEgKyAxIHwgMCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAw
OworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBwcmludF9zZWNvbmQgPSBmdW5jdGlvbiAo
c2V0LCBpKSB7CisgICAgaWYgKGlzX2luX2NoYXJfc2V0KHNldCwgUGVydmFzaXZlcy5jaGFyX29m
X2ludChpKSkpIHsKKyAgICAgIHZhciBtYXRjaCA9IFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoaSk7
CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQ1IHwg
MDsKKyAgICAgIGlmIChzd2l0Y2hlciA+IDQ4IHx8IHN3aXRjaGVyIDwgMCkgeworICAgICAgICBp
ZiAoc3dpdGNoZXIgPj0gMjEwKSB7CisgICAgICAgICAgcHJpbnRfY2hhcihidWYsIDI1NCk7Cisg
ICAgICAgICAgcmV0dXJuIHByaW50X2NoYXIoYnVmLCAyNTUpOworICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBl
bHNlIGlmIChzd2l0Y2hlciA+IDQ3IHx8IHN3aXRjaGVyIDwgMSkgeworICAgICAgICBpZiAoaXNf
aW5fY2hhcl9zZXQoc2V0LCBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KGkgKyAxIHwgMCkpKSB7Cisg
ICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
cHJpbnRfY2hhcihidWYsIGkgLSAxIHwgMCk7CisgICAgICAgICAgcmV0dXJuIHByaW50X291dChz
ZXQsIGkgKyAxIHwgMCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgIGlm
IChpc19pbl9jaGFyX3NldChzZXQsIFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoaSArIDEgfCAwKSkp
IHsKKyAgICAgICAgICB2YXIgc2V0JDEgPSBzZXQ7CisgICAgICAgICAgdmFyIGkkMSA9IGkgLSAx
IHwgMDsKKyAgICAgICAgICB2YXIgX2ogPSBpICsgMiB8IDA7CisgICAgICAgICAgd2hpbGUodHJ1
ZSkgeworICAgICAgICAgICAgdmFyIGogPSBfajsKKyAgICAgICAgICAgIGlmIChqID09PSAyNTYg
fHwgIWlzX2luX2NoYXJfc2V0KHNldCQxLCBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KGopKSkgewor
ICAgICAgICAgICAgICBwcmludF9jaGFyKGJ1ZiwgaSQxKTsKKyAgICAgICAgICAgICAgcHJpbnRf
Y2hhcihidWYsIC8qICItIiAqLzQ1KTsKKyAgICAgICAgICAgICAgcHJpbnRfY2hhcihidWYsIGog
LSAxIHwgMCk7CisgICAgICAgICAgICAgIGlmIChqIDwgMjU2KSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHByaW50X291dChzZXQkMSwgaiArIDEgfCAwKTsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9q
ID0gaiArIDEgfCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgfQorICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgcHJpbnRfY2hhcihidWYsIGkgLSAxIHwgMCk7CisgICAgICAgICAgcHJpbnRfY2hh
cihidWYsIGkpOworICAgICAgICAgIHJldHVybiBwcmludF9vdXQoc2V0LCBpICsgMiB8IDApOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBwcmlu
dF9jaGFyKGJ1ZiwgaSAtIDEgfCAwKTsKKyAgICAgIHJldHVybiBwcmludF9vdXQoc2V0LCBpICsg
MSB8IDApOworICAgIH0KKyAgfTsKKyAgdmFyIHByaW50X3N0YXJ0ID0gZnVuY3Rpb24gKHNldCkg
eworICAgIHZhciBpc19hbG9uZSA9IGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2hfMDAw
ID0gQ2hhci5jaHIoYyAtIDEgfCAwKTsKKyAgICAgIHZhciBtYXRjaF8wMDEgPSBDaGFyLmNocihj
ICsgMSB8IDApOworICAgICAgaWYgKGlzX2luX2NoYXJfc2V0KHNldCwgYykpIHsKKyAgICAgICAg
cmV0dXJuIDEgLSAoaXNfaW5fY2hhcl9zZXQoc2V0LCBtYXRjaF8wMDApICYmIGlzX2luX2NoYXJf
c2V0KHNldCwgbWF0Y2hfMDAxKSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0
dXJuIC8qIGZhbHNlICovMDsKKyAgICAgIH0KKyAgICB9OworICAgIGlmIChpc19hbG9uZSgvKiAi
XSIgKi85MykpIHsKKyAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJdIiAqLzkzKTsKKyAg
ICB9CisgICAgcHJpbnRfb3V0KHNldCwgMSk7CisgICAgaWYgKGlzX2Fsb25lKC8qICItIiAqLzQ1
KSkgeworICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICItIiAqLzQ1KTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH07CisgIGJ1ZmZlcl9h
ZGRfY2hhcihidWYsIC8qICJbIiAqLzkxKTsKKyAgcHJpbnRfc3RhcnQoaXNfaW5fY2hhcl9zZXQo
Y2hhcl9zZXQsIC8qICJcMDAwIiAqLzApID8gKGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJeIiAq
Lzk0KSwgcmV2X2NoYXJfc2V0KGNoYXJfc2V0KSkgOiBjaGFyX3NldCk7CisgIHJldHVybiBidWZm
ZXJfYWRkX2NoYXIoYnVmLCAvKiAiXSIgKi85Myk7Cit9CisKK2Z1bmN0aW9uIGJwcmludF9wYWR0
eShidWYsIHBhZHR5KSB7CisgIHN3aXRjaCAocGFkdHkpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAg
ICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICItIiAqLzQ1KTsKKyAgICBjYXNlIDEg
OiAKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0
dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIwIiAqLzQ4KTsKKyAgICAKKyAgfQorfQorCitm
dW5jdGlvbiBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpIHsKKyAgaWYgKGlnbl9m
bGFnKSB7CisgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJfIiAqLzk1KTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfcGFk
X29wdChidWYsIHBhZF9vcHQpIHsKKyAgaWYgKHBhZF9vcHQpIHsKKyAgICByZXR1cm4gYnVmZmVy
X2FkZF9zdHJpbmcoYnVmLCAiIiArIHBhZF9vcHRbMF0pOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gYnByaW50X3BhZGRpbmcoYnVmLCBw
YWQpIHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8qICgp
ICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBicHJpbnRfcGFkdHkoYnVmLCBwYWRbMF0pOworICAg
IGlmIChwYWQudGFnKSB7CisgICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIioi
ICovNDIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBidWZmZXJfYWRkX3N0cmlu
ZyhidWYsICIiICsgcGFkWzFdKTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gYnByaW50X3By
ZWNpc2lvbihidWYsIHByZWMpIHsKKyAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgewor
ICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICByZXR1cm4gYnVmZmVyX2FkZF9zdHJpbmcoYnVm
LCAiLioiKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAg
IH0KKyAgfQorICBlbHNlIHsKKyAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiLiIgKi80Nik7
CisgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiIgKyBwcmVjWzBdKTsKKyAgfQor
fQorCitmdW5jdGlvbiBicHJpbnRfaWNvbnZfZmxhZyhidWYsIGljb252KSB7CisgIHN3aXRjaCAo
aWNvbnYpIHsKKyAgICBjYXNlIDEgOiAKKyAgICBjYXNlIDQgOiAKKyAgICAgICAgcmV0dXJuIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICIrIiAqLzQzKTsKKyAgICBjYXNlIDIgOiAKKyAgICBjYXNl
IDUgOiAKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIgIiAqLzMyKTsK
KyAgICBjYXNlIDcgOiAKKyAgICBjYXNlIDkgOiAKKyAgICBjYXNlIDExIDogCisgICAgICAgIHJl
dHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiIyIgKi8zNSk7CisgICAgY2FzZSAwIDogCisg
ICAgY2FzZSAzIDogCisgICAgY2FzZSA2IDogCisgICAgY2FzZSA4IDogCisgICAgY2FzZSAxMCA6
IAorICAgIGNhc2UgMTIgOiAKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAKKyAgfQor
fQorCitmdW5jdGlvbiBicHJpbnRfaW50X2ZtdChidWYsIGlnbl9mbGFnLCBpY29udiwgcGFkLCBw
cmVjKSB7CisgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgYnByaW50X2ln
bm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgYnByaW50X2ljb252X2ZsYWcoYnVmLCBpY29u
dik7CisgIGJwcmludF9wYWRkaW5nKGJ1ZiwgcGFkKTsKKyAgYnByaW50X3ByZWNpc2lvbihidWYs
IHByZWMpOworICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgY2hhcl9vZl9pY29udihpY29u
dikpOworfQorCitmdW5jdGlvbiBicHJpbnRfYWx0aW50X2ZtdChidWYsIGlnbl9mbGFnLCBpY29u
diwgcGFkLCBwcmVjLCBjKSB7CisgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsK
KyAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgYnByaW50X2ljb252X2Zs
YWcoYnVmLCBpY29udik7CisgIGJwcmludF9wYWRkaW5nKGJ1ZiwgcGFkKTsKKyAgYnByaW50X3By
ZWNpc2lvbihidWYsIHByZWMpOworICBidWZmZXJfYWRkX2NoYXIoYnVmLCBjKTsKKyAgcmV0dXJu
IGJ1ZmZlcl9hZGRfY2hhcihidWYsIGNoYXJfb2ZfaWNvbnYoaWNvbnYpKTsKK30KKworZnVuY3Rp
b24gYnByaW50X2Zjb252X2ZsYWcoYnVmLCBmY29udikgeworICBzd2l0Y2ggKGZjb252KSB7Cisg
ICAgY2FzZSAxIDogCisgICAgY2FzZSA0IDogCisgICAgY2FzZSA3IDogCisgICAgY2FzZSAxMCA6
IAorICAgIGNhc2UgMTMgOiAKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8q
ICIrIiAqLzQzKTsKKyAgICBjYXNlIDIgOiAKKyAgICBjYXNlIDUgOiAKKyAgICBjYXNlIDggOiAK
KyAgICBjYXNlIDExIDogCisgICAgY2FzZSAxNCA6IAorICAgICAgICByZXR1cm4gYnVmZmVyX2Fk
ZF9jaGFyKGJ1ZiwgLyogIiAiICovMzIpOworICAgIGNhc2UgMCA6IAorICAgIGNhc2UgMyA6IAor
ICAgIGNhc2UgNiA6IAorICAgIGNhc2UgOSA6IAorICAgIGNhc2UgMTIgOiAKKyAgICBjYXNlIDE1
IDogCisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24g
YnByaW50X2Zsb2F0X2ZtdChidWYsIGlnbl9mbGFnLCBmY29udiwgcGFkLCBwcmVjKSB7CisgIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgYnByaW50X2lnbm9yZWRfZmxhZyhi
dWYsIGlnbl9mbGFnKTsKKyAgYnByaW50X2Zjb252X2ZsYWcoYnVmLCBmY29udik7CisgIGJwcmlu
dF9wYWRkaW5nKGJ1ZiwgcGFkKTsKKyAgYnByaW50X3ByZWNpc2lvbihidWYsIHByZWMpOworICBy
ZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgY2hhcl9vZl9mY29udihmY29udikpOworfQorCitm
dW5jdGlvbiBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoZm9ybWF0dGluZ19saXQpIHsKKyAgaWYg
KHR5cGVvZiBmb3JtYXR0aW5nX2xpdCA9PT0gIm51bWJlciIpIHsKKyAgICBzd2l0Y2ggKGZvcm1h
dHRpbmdfbGl0KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gIkBdIjsKKyAg
ICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAiQH0iOworICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgcmV0dXJuICJAPyI7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4g
IkBcbiI7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gIkAuIjsKKyAgICAgIGNh
c2UgNSA6IAorICAgICAgICAgIHJldHVybiAiQEAiOworICAgICAgY2FzZSA2IDogCisgICAgICAg
ICAgcmV0dXJuICJAJSI7CisgICAgICAKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNo
IChmb3JtYXR0aW5nX2xpdC50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgIHJldHVybiBmb3JtYXR0aW5nX2xpdFswXTsKKyAgICAgIGNhc2UgMiA6
IAorICAgICAgICAgIHJldHVybiAiQCIgKyBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0
ZXMubWFrZSgxLCBmb3JtYXR0aW5nX2xpdFswXSkpOworICAgICAgCisgICAgfQorICB9Cit9CisK
K2Z1bmN0aW9uIHN0cmluZ19vZl9mb3JtYXR0aW5nX2dlbihmb3JtYXR0aW5nX2dlbikgeworICBy
ZXR1cm4gZm9ybWF0dGluZ19nZW5bMF1bMV07Cit9CisKK2Z1bmN0aW9uIGJwcmludF9jaGFyX2xp
dGVyYWwoYnVmLCBjaHIpIHsKKyAgaWYgKGNociAhPT0gMzcpIHsKKyAgICByZXR1cm4gYnVmZmVy
X2FkZF9jaGFyKGJ1ZiwgY2hyKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYnVmZmVyX2Fk
ZF9zdHJpbmcoYnVmLCAiJSUiKTsKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfc3RyaW5nX2xp
dGVyYWwoYnVmLCBzdHIpIHsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBzdHIubGVuZ3Ro
IC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgYnByaW50X2NoYXJfbGl0ZXJhbChi
dWYsIENhbWxfc3RyaW5nLmdldChzdHIsIGkpKTsKKyAgfQorICByZXR1cm4gLyogKCkgKi8wOwor
fQorCitmdW5jdGlvbiBicHJpbnRfZm10dHkoYnVmLCBfZm10dHkpIHsKKyAgd2hpbGUodHJ1ZSkg
eworICAgIHZhciBmbXR0eSA9IF9mbXR0eTsKKyAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVt
YmVyIikgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICBzd2l0Y2ggKGZtdHR5LnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAg
ICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlYyIpOworICAgICAgICAgICAgX2ZtdHR5ID0gZm10
dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEgOiAKKyAg
ICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVzIik7CisgICAgICAgICAgICBfZm10
dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJWkiKTsKKyAgICAgICAg
ICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgY2FzZSAzIDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlbGkiKTsK
KyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYs
ICIlbmkiKTsKKyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAgY29u
dGludWUgOworICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0
cmluZyhidWYsICIlTGkiKTsKKyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAg
ICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICBidWZm
ZXJfYWRkX3N0cmluZyhidWYsICIlZiIpOworICAgICAgICAgICAgX2ZtdHR5ID0gZm10dHlbMF07
CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAg
ICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVCIik7CisgICAgICAgICAgICBfZm10dHkgPSBm
bXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgOCA6IAor
ICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJXsiKTsKKyAgICAgICAgICAgIGJw
cmludF9mbXR0eShidWYsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5n
KGJ1ZiwgIiV9Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVsxXTsKKyAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgYnVmZmVyX2Fk
ZF9zdHJpbmcoYnVmLCAiJSgiKTsKKyAgICAgICAgICAgIGJwcmludF9mbXR0eShidWYsIGZtdHR5
WzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiUpIik7CisgICAgICAg
ICAgICBfZm10dHkgPSBmbXR0eVsyXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVhIik7
CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1
ZiwgIiV0Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRf
c3RyaW5nKGJ1ZiwgIiU/Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIGJ1
ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVyIik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVsw
XTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAg
ICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVfciIpOworICAgICAgICAgICAgX2ZtdHR5
ID0gZm10dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAg
IH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGludF9vZl9jdXN0b21fYXJpdHkocGFyYW0p
IHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuIDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5KHBh
cmFtWzBdKSB8IDA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVu
Y3Rpb24gYnByaW50X2ZtdChidWYsIGZtdCkgeworICB2YXIgX2ZtdCA9IGZtdDsKKyAgdmFyIF9p
Z25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpZ25fZmxh
ZyA9IF9pZ25fZmxhZzsKKyAgICB2YXIgZm10JDEgPSBfZm10OworICAgIGlmICh0eXBlb2YgZm10
JDEgPT09ICJudW1iZXIiKSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIHN3aXRjaCAoZm10JDEudGFnIHwgMCkgeworICAgICAgICBjYXNlIDAgOiAK
KyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAg
ICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBidWZm
ZXJfYWRkX2NoYXIoYnVmLCAvKiAiYyIgKi85OSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAv
KiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRf
Y2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWco
YnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiQyIg
Ki82Nyk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAg
ICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsK
KyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAg
ICAgICBicHJpbnRfcGFkZGluZyhidWYsIGZtdCQxWzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9h
ZGRfY2hhcihidWYsIC8qICJzIiAqLzExNSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBm
YWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAgICAgICAgICBjb250
aW51ZSA7CisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hh
cihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVm
LCBpZ25fZmxhZyk7CisgICAgICAgICAgICBicHJpbnRfcGFkZGluZyhidWYsIGZtdCQxWzBdKTsK
KyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJTIiAqLzgzKTsKKyAgICAgICAg
ICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsx
XTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAg
ICAgICAgYnByaW50X2ludF9mbXQoYnVmLCBpZ25fZmxhZywgZm10JDFbMF0sIGZtdCQxWzFdLCBm
bXQkMVsyXSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAg
ICAgICBfZm10ID0gZm10JDFbM107CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGJwcmludF9hbHRpbnRfZm10KGJ1ZiwgaWduX2ZsYWcs
IGZtdCQxWzBdLCBmbXQkMVsxXSwgZm10JDFbMl0sIC8qICJsIiAqLzEwOCk7CisgICAgICAgICAg
ICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbM107
CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAg
ICAgIGJwcmludF9hbHRpbnRfZm10KGJ1ZiwgaWduX2ZsYWcsIGZtdCQxWzBdLCBmbXQkMVsxXSwg
Zm10JDFbMl0sIC8qICJuIiAqLzExMCk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxz
ZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbM107CisgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIGJwcmludF9hbHRpbnRfZm10
KGJ1ZiwgaWduX2ZsYWcsIGZtdCQxWzBdLCBmbXQkMVsxXSwgZm10JDFbMl0sIC8qICJMIiAqLzc2
KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9m
bXQgPSBmbXQkMVszXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2Ug
OCA6IAorICAgICAgICAgICAgYnByaW50X2Zsb2F0X2ZtdChidWYsIGlnbl9mbGFnLCBmbXQkMVsw
XSwgZm10JDFbMV0sIGZtdCQxWzJdKTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNl
ICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVszXTsKKyAgICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1
ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGln
bl9mbGFnKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJCIiAqLzY2KTsK
KyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQg
PSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTAg
OiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiUhIik7CisgICAgICAgICAg
ICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBj
YXNlIDExIDogCisgICAgICAgICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwoYnVmLCBmbXQkMVsw
XSk7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBicHJpbnRfY2hhcl9saXRlcmFs
KGJ1ZiwgZm10JDFbMF0pOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzFdOworICAgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgYnVmZmVy
X2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnByaW50X2lnbm9yZWRf
ZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAgIGJwcmludF9wYWRfb3B0KGJ1ZiwgZm10
JDFbMF0pOworICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogInsiICovMTIzKTsK
KyAgICAgICAgICAgIGJwcmludF9mbXR0eShidWYsIGZtdCQxWzFdKTsKKyAgICAgICAgICAgIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRf
Y2hhcihidWYsIC8qICJ9IiAqLzEyNSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxz
ZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMl07CisgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIo
YnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1Ziwg
aWduX2ZsYWcpOworICAgICAgICAgICAgYnByaW50X3BhZF9vcHQoYnVmLCBmbXQkMVswXSk7Cisg
ICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiKCIgKi80MCk7CisgICAgICAgICAg
ICBicHJpbnRfZm10dHkoYnVmLCBmbXQkMVsxXSk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2No
YXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAv
KiAiKSIgKi80MSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAg
ICAgICAgICBfZm10ID0gZm10JDFbMl07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIg
Ki8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOwor
ICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogImEiICovOTcpOworICAgICAgICAg
ICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzBd
OworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxNiA6IAorICAgICAg
ICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnBy
aW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRf
Y2hhcihidWYsIC8qICJ0IiAqLzExNik7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxz
ZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBicHJpbnRfc3RyaW5nX2xp
dGVyYWwoYnVmLCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoZm10JDFbMF0pKTsKKyAgICAgICAg
ICAgIF9mbXQgPSBmbXQkMVsxXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
IGNhc2UgMTggOiAKKyAgICAgICAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbChidWYsICJAeyIp
OworICAgICAgICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsKGJ1Ziwgc3RyaW5nX29mX2Zvcm1h
dHRpbmdfZ2VuKGZtdCQxWzBdKSk7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgICBi
dWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdu
b3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOworICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1
ZiwgLyogInIiICovMTE0KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsK
KyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8q
ICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxh
Zyk7CisgICAgICAgICAgICBicHJpbnRfcGFkX29wdChidWYsIGZtdCQxWzBdKTsKKyAgICAgICAg
ICAgIGJwcmludF9jaGFyX3NldChidWYsIGZtdCQxWzFdKTsKKyAgICAgICAgICAgIF9pZ25fZmxh
ZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsyXTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICAgIGJ1ZmZl
cl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVk
X2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCBj
aGFyX29mX2NvdW50ZXIoZm10JDFbMF0pKTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZh
bHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsxXTsKKyAgICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hh
cihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVm
LCBpZ25fZmxhZyk7CisgICAgICAgICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwoYnVmLCAiMGMi
KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9m
bXQgPSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2Ug
MjMgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zv
cm1hdChmbXQkMVswXSwgZm10JDFbMV0pOworICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgICBfZm10ID0gbWF0Y2hbMF07CisgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgICBmb3IodmFyIF9pID0gMSAs
X2lfZmluaXNoID0gaW50X29mX2N1c3RvbV9hcml0eShmbXQkMVswXSk7IF9pIDw9IF9pX2Zpbmlz
aDsgKytfaSl7CisgICAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3
KTsKKyAgICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAg
ICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIj8iICovNjMpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAg
X2ZtdCA9IGZtdCQxWzJdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisg
ICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfZm10KGZtdCkgewor
ICB2YXIgYnVmID0gLyogcmVjb3JkICovWworICAgIC8qIGluZCAqLzAsCisgICAgLyogYnl0ZXMg
Ki9uZXcgQXJyYXkoMTYpCisgIF07CisgIGJwcmludF9mbXQoYnVmLCBmbXQpOworICByZXR1cm4g
YnVmZmVyX2NvbnRlbnRzKGJ1Zik7Cit9CisKK2Z1bmN0aW9uIHN5bW0ocGFyYW0pIHsKKyAgaWYg
KHR5cGVvZiBwYXJhbSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gLyogRW5kX29mX2ZtdHR5
ICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKHBhcmFtLnRhZyB8IDApIHsKKyAgICAg
IGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxvY2suX18oMCwgW3N5
bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogU3Ry
aW5nX3R5ICovQmxvY2suX18oMSwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICByZXR1cm4gLyogSW50X3R5ICovQmxvY2suX18oMiwgW3N5bW0ocGFyYW1bMF0p
XSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50MzJfdHkgKi9CbG9j
ay5fXygzLCBbc3ltbShwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJl
dHVybiAvKiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbc3ltbShwYXJhbVswXSldKTsKKyAg
ICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiAvKiBJbnQ2NF90eSAqL0Jsb2NrLl9fKDUs
IFtzeW1tKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIC8q
IEZsb2F0X3R5ICovQmxvY2suX18oNiwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDcg
OiAKKyAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcsIFtzeW1tKHBhcmFt
WzBdKV0pOworICAgICAgY2FzZSA4IDogCisgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9hcmdf
dHkgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgIHBhcmFtWzBdLAorICAgICAg
ICAgICAgICAgICAgICBzeW1tKHBhcmFtWzFdKQorICAgICAgICAgICAgICAgICAgXSk7CisgICAg
ICBjYXNlIDkgOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0X3N1YnN0X3R5ICovQmxvY2su
X18oOSwgWworICAgICAgICAgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW1bMF0sCisgICAgICAgICAgICAgICAgICAgIHN5bW0ocGFyYW1bMl0pCisgICAgICAg
ICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICByZXR1cm4gLyogQWxw
aGFfdHkgKi9CbG9jay5fXygxMCwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDExIDog
CisgICAgICAgICAgcmV0dXJuIC8qIFRoZXRhX3R5ICovQmxvY2suX18oMTEsIFtzeW1tKHBhcmFt
WzBdKV0pOworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHJldHVybiAvKiBBbnlfdHkgKi9C
bG9jay5fXygxMiwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEzIDogCisgICAgICAg
ICAgcmV0dXJuIC8qIFJlYWRlcl90eSAqL0Jsb2NrLl9fKDEzLCBbc3ltbShwYXJhbVswXSldKTsK
KyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICByZXR1cm4gLyogSWdub3JlZF9yZWFkZXJfdHkg
Ki9CbG9jay5fXygxNCwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICAKKyAgICB9CisgIH0KK30K
KworZnVuY3Rpb24gZm10dHlfcmVsX2RldChwYXJhbSkgeworICBpZiAodHlwZW9mIHBhcmFtID09
PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJl
ZmwgKi8wOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAg
ICAgICAgfQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChwYXJhbS50
YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICB2YXIgbWF0Y2ggPSBmbXR0eV9y
ZWxfZGV0KHBhcmFtWzBdKTsKKyAgICAgICAgICB2YXIgYWYgPSBtYXRjaFsxXTsKKyAgICAgICAg
ICB2YXIgZmEgPSBtYXRjaFswXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8x
KGZhLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICov
MDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmLCAvKiBSZWZsICovMCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICBtYXRjaFsyXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoWzNdCisg
ICAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHZhciBtYXRjaCQx
ID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDEgPSBtYXRjaCQx
WzFdOworICAgICAgICAgIHZhciBmYSQxID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIEN1cnJ5Ll8xKGZhJDEsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkMSwg
LyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Cisg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMVsyXSwKKyAgICAg
ICAgICAgICAgICAgIG1hdGNoJDFbM10KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgdmFyIG1hdGNoJDIgPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKKyAg
ICAgICAgICB2YXIgYWYkMiA9IG1hdGNoJDJbMV07CisgICAgICAgICAgdmFyIGZhJDIgPSBtYXRj
aCQyWzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkMiwgLyogUmVm
bCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICBDdXJyeS5fMShhZiQyLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICBtYXRjaCQyWzJdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMlszXQorICAgICAg
ICAgICAgICAgIF07CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMyA9IGZt
dHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAgICAgICAgIHZhciBhZiQzID0gbWF0Y2gkM1sxXTsK
KyAgICAgICAgICB2YXIgZmEkMyA9IG1hdGNoJDNbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICBDdXJyeS5fMShmYSQzLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDMsIC8qIFJl
ZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDNbMl0sCisgICAgICAgICAg
ICAgICAgICBtYXRjaCQzWzNdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgNCA6IAor
ICAgICAgICAgIHZhciBtYXRjaCQ0ID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAg
ICAgdmFyIGFmJDQgPSBtYXRjaCQ0WzFdOworICAgICAgICAgIHZhciBmYSQ0ID0gbWF0Y2gkNFsw
XTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGZhJDQsIC8qIFJlZmwgKi8w
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQ3VycnkuXzEoYWYkNCwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICAgbWF0Y2gkNFsyXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDRbM10KKyAgICAgICAgICAg
ICAgICBdOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIG1hdGNoJDUgPSBmbXR0eV9y
ZWxfZGV0KHBhcmFtWzBdKTsKKyAgICAgICAgICB2YXIgYWYkNSA9IG1hdGNoJDVbMV07CisgICAg
ICAgICAgdmFyIGZhJDUgPSBtYXRjaCQ1WzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
Q3VycnkuXzEoZmEkNSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQ1LCAvKiBSZWZsICov
MCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQ1WzJdLAorICAgICAgICAgICAgICAg
ICAgbWF0Y2gkNVszXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDYgOiAKKyAgICAg
ICAgICB2YXIgbWF0Y2gkNiA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAgICAgICAgIHZh
ciBhZiQ2ID0gbWF0Y2gkNlsxXTsKKyAgICAgICAgICB2YXIgZmEkNiA9IG1hdGNoJDZbMF07Cisg
ICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQ2LCAvKiBSZWZsICovMCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
IEN1cnJ5Ll8xKGFmJDYsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIG1h
dGNoJDZbMl0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQ2WzNdCisgICAgICAgICAgICAgICAg
XTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHZhciBtYXRjaCQ3ID0gZm10dHlfcmVsX2Rl
dChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDcgPSBtYXRjaCQ3WzFdOworICAgICAgICAg
IHZhciBmYSQ3ID0gbWF0Y2gkN1swXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5
Ll8xKGZhJDcsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJl
ZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkNywgLyogUmVmbCAqLzApOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkN1syXSwKKyAgICAgICAgICAgICAgICAgIG1h
dGNoJDdbM10KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSA4IDogCisgICAgICAgICAg
dmFyIG1hdGNoJDggPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzFdKTsKKyAgICAgICAgICB2YXIgYWYk
OCA9IG1hdGNoJDhbMV07CisgICAgICAgICAgdmFyIGZhJDggPSBtYXRjaCQ4WzBdOworICAgICAg
ICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkOCwgLyogUmVmbCAqLzApOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJy
eS5fMShhZiQ4LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBS
ZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQ4
WzJdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkOFszXQorICAgICAgICAgICAgICAgIF07Cisg
ICAgICBjYXNlIDkgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkOSA9IGZtdHR5X3JlbF9kZXQocGFy
YW1bMl0pOworICAgICAgICAgIHZhciBkZSA9IG1hdGNoJDlbM107CisgICAgICAgICAgdmFyIGVk
ID0gbWF0Y2gkOVsyXTsKKyAgICAgICAgICB2YXIgYWYkOSA9IG1hdGNoJDlbMV07CisgICAgICAg
ICAgdmFyIGZhJDkgPSBtYXRjaCQ5WzBdOworICAgICAgICAgIHZhciB0eSA9IHRyYW5zKHN5bW0o
cGFyYW1bMF0pLCBwYXJhbVsxXSk7CisgICAgICAgICAgdmFyIG1hdGNoJDEwID0gZm10dHlfcmVs
X2RldCh0eSk7CisgICAgICAgICAgdmFyIGpkID0gbWF0Y2gkMTBbM107CisgICAgICAgICAgdmFy
IGRqID0gbWF0Y2gkMTBbMl07CisgICAgICAgICAgdmFyIGdhID0gbWF0Y2gkMTBbMV07CisgICAg
ICAgICAgdmFyIGFnID0gbWF0Y2gkMTBbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICov
WworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBD
dXJyeS5fMShmYSQ5LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8x
KGFnLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICov
MDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGdhLCAvKiBSZWZsICovMCk7CisgICAgICAg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDksIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZWQs
IC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZGosIC8qIFJlZmwg
Ki8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQ3VycnkuXzEoamQsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAg
Q3VycnkuXzEoZGUsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF07CisgICAg
ICBjYXNlIDEwIDogCisgICAgICAgICAgdmFyIG1hdGNoJDExID0gZm10dHlfcmVsX2RldChwYXJh
bVswXSk7CisgICAgICAgICAgdmFyIGFmJDEwID0gbWF0Y2gkMTFbMV07CisgICAgICAgICAgdmFy
IGZhJDEwID0gbWF0Y2gkMTFbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5f
MShmYSQxMCwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVm
bCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQxMCwgLyogUmVmbCAqLzApOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMTFbMl0sCisgICAgICAgICAgICAgICAgICBt
YXRjaCQxMVszXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDExIDogCisgICAgICAg
ICAgdmFyIG1hdGNoJDEyID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFy
IGFmJDExID0gbWF0Y2gkMTJbMV07CisgICAgICAgICAgdmFyIGZhJDExID0gbWF0Y2gkMTJbMF07
CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQxMSwgLyogUmVmbCAqLzAp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICBDdXJyeS5fMShhZiQxMSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMTJbMl0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQxMlszXQorICAgICAgICAg
ICAgICAgIF07CisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgdmFyIG1hdGNoJDEzID0gZm10
dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDEyID0gbWF0Y2gkMTNbMV07
CisgICAgICAgICAgdmFyIGZhJDEyID0gbWF0Y2gkMTNbMF07CisgICAgICAgICAgcmV0dXJuIC8q
IHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICBDdXJyeS5fMShmYSQxMiwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQxMiwg
LyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Cisg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMTNbMl0sCisgICAg
ICAgICAgICAgICAgICBtYXRjaCQxM1szXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNl
IDEzIDogCisgICAgICAgICAgdmFyIG1hdGNoJDE0ID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7
CisgICAgICAgICAgdmFyIGRlJDEgPSBtYXRjaCQxNFszXTsKKyAgICAgICAgICB2YXIgZWQkMSA9
IG1hdGNoJDE0WzJdOworICAgICAgICAgIHZhciBhZiQxMyA9IG1hdGNoJDE0WzFdOworICAgICAg
ICAgIHZhciBmYSQxMyA9IG1hdGNoJDE0WzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
Q3VycnkuXzEoZmEkMTMsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkMTMsIC8qIFJlZmwg
Ki8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQ3VycnkuXzEoZWQkMSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShkZSQxLCAv
KiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSAxNCA6IAor
ICAgICAgICAgIHZhciBtYXRjaCQxNSA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAgICAg
ICAgIHZhciBkZSQyID0gbWF0Y2gkMTVbM107CisgICAgICAgICAgdmFyIGVkJDIgPSBtYXRjaCQx
NVsyXTsKKyAgICAgICAgICB2YXIgYWYkMTQgPSBtYXRjaCQxNVsxXTsKKyAgICAgICAgICB2YXIg
ZmEkMTQgPSBtYXRjaCQxNVswXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8x
KGZhJDE0LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZs
ICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDE0LCAvKiBSZWZsICovMCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
IEN1cnJ5Ll8xKGVkJDIsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZGUkMiwgLyogUmVmbCAq
LzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgXTsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitm
dW5jdGlvbiB0cmFucyh0eTEsIHR5MikgeworICB2YXIgZXhpdCA9IDA7CisgIGlmICh0eXBlb2Yg
dHkxID09PSAibnVtYmVyIikgeworICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgewor
ICAgICAgaWYgKHR5MikgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgODE2LAor
ICAgICAgICAgICAgICAgIDIzCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIEVuZF9vZl9mbXR0eSAqLzA7Cisg
ICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgewor
ICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIGV4aXQgPSA2OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgZXhpdCA9IDc7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgZXhpdCA9IDE7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgZXhpdCA9IDI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgZXhp
dCA9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAg
ICAgZXhpdCA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxNCA6IAorICAg
ICAgICAgICAgZXhpdCA9IDU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICA4MTYsCisgICAgICAg
ICAgICAgICAgICAyMworICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgXTsKKyAgICAg
IH0KKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoICh0eTEudGFnIHwgMCkgeworICAg
ICAgY2FzZSAwIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICBleGl0ID0gODsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAor
ICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIENoYXJfdHkgKi9CbG9jay5fXygwLCBbdHJhbnMo
dHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAg
ICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBpZiAodHlwZW9m
IHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAg
ICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogU3RyaW5n
X3R5ICovQmxvY2suX18oMSwgW3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOworICAgICAgICAgICAg
ICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA2OworICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgICAgICAgZXhp
dCA9IDc7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6
IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7Cisg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAg
ICAgICAgICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7CisgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICAg
ICAgZXhpdCA9IDU7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICBleGl0ID0gODsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBz
d2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFt0cmFucyh0eTFbMF0sIHR5
MlswXSldKTsKKyAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gNjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDkgOiAK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSA3OworICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAg
ICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOworICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgICAg
IGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
MTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1OworICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAi
bnVtYmVyIikgeworICAgICAgICAgICAgZXhpdCA9IDg7CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgeworICAgICAgICAgICAg
ICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBJbnQzMl90eSAqL0Jsb2Nr
Ll9fKDMsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAgY2FzZSA4IDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gNjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA3OworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAg
ICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAg
IGV4aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
MTMgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1
OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAg
fQorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6IAorICAgICAg
ICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgZXhpdCA9IDg7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIu
dGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbdHJhbnModHkxWzBdLCB0eTJbMF0p
XSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDY7
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSA5IDogCisgICAg
ICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2Fz
ZSA1IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50NjRfdHkgKi9CbG9jay5fXyg1
LCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICBp
ZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8
IDApIHsKKyAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogRmxvYXRfdHkgKi9CbG9jay5fXyg2LCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAg
ICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDY7CisgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gNzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAg
ICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIDcgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAg
ICAgICAgICAgIGV4aXQgPSA4OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSA3IDogCisg
ICAgICAgICAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcsIFt0cmFucyh0
eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gNjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA3OworICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQg
PSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTEgOiAK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAg
ICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1OworICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIGlmICh0eXBlb2Yg
dHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAg
ICAgICAgICAgICAgICAgICA4MDIsCisgICAgICAgICAgICAgICAgICAgIDI2CisgICAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNh
c2UgOCA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9hcmdfdHkgKi9CbG9j
ay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnModHkxWzBdLCB0eTJb
MF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zKHR5MVsxXSwgdHkyWzFdKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6IAor
ICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAg
ICAgICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7CisgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICAgICAg
ZXhpdCA9IDU7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICA4MDIsCisgICAgICAgICAgICAgICAgICAgICAgICAyNgorICAg
ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDkgOiAKKyAgICAg
ICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFsK
KyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJl
LAorICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFs
Rm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgODEyLAorICAgICAgICAgICAgICAgICAg
ICAyOAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgewor
ICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA2OworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAg
ICAgICAgICAgdmFyIHR5ID0gdHJhbnMoc3ltbSh0eTFbMV0pLCB0eTJbMF0pOworICAgICAgICAg
ICAgICAgICAgdmFyIG1hdGNoID0gZm10dHlfcmVsX2RldCh0eSk7CisgICAgICAgICAgICAgICAg
ICBDdXJyeS5fMShtYXRjaFsxXSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgQ3Vy
cnkuXzEobWF0Y2hbM10sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAv
KiBGb3JtYXRfc3Vic3RfdHkgKi9CbG9jay5fXyg5LCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHkxWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5MlsxXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmFucyh0eTFbMl0sIHR5MlsyXSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4
aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMg
OiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1Owor
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgODEyLAorICAgICAgICAgICAgICAgICAgICAgICAgMjgKKyAgICAgICAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIGlmICh0
eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwi
LAorICAgICAgICAgICAgICAgICAgICA3ODAsCisgICAgICAgICAgICAgICAgICAgIDIxCisgICAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAg
ICAgZWxzZSBpZiAodHkyLnRhZyA9PT0gMTApIHsKKyAgICAgICAgICAgIHJldHVybiAvKiBBbHBo
YV90eSAqL0Jsb2NrLl9fKDEwLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAg
ICAgICAgICAgICAgICAgICA3ODAsCisgICAgICAgICAgICAgICAgICAgIDIxCisgICAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDExIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1i
ZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAg
ICAgIDc4NCwKKyAgICAgICAgICAgICAgICAgICAgMjEKKyAgICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFRoZXRhX3R5
ICovQmxvY2suX18oMTEsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIs
CisgICAgICAgICAgICAgICAgICAgICAgICA3ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAy
MQorICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEyIDog
CisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0
aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRf
ZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgImNhbWxp
bnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAgIDc4OCwKKyAgICAgICAgICAg
ICAgICAgICAgMTkKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8
IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9
IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAor
ICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEFueV90
eSAqL0Jsb2NrLl9fKDEyLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwi
LAorICAgICAgICAgICAgICAgICAgICAgICAgNzg4LAorICAgICAgICAgICAgICAgICAgICAgICAg
MTkKKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMyA6
IAorICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAg
dGhyb3cgWworICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0
X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1s
aW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgICA3OTIsCisgICAgICAgICAg
ICAgICAgICAgIDIyCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcg
fCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQg
PSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTEgOiAK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW3RyYW5zKHR5MVsw
XSwgdHkyWzBdKV0pOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3Nl
cnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDc5
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDIyCisgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9
PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAg
ICAgICAgICAgICAgNzk3LAorICAgICAgICAgICAgICAgICAgICAzMAorICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDEw
IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsK
KyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAg
ICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogSWdub3JlZF9yZWFkZXJfdHkgKi9CbG9jay5fXygxNCwgW3RyYW5zKHR5
MVswXSwgdHkyWzBdKV0pOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5h
c3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDc5NywKKyAgICAgICAgICAgICAgICAgICAgICAgIDMwCisgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg
ICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAgfQorICBzd2l0Y2ggKGV4aXQpIHsKKyAg
ICBjYXNlIDEgOiAKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgIDc4MSwKKyAgICAg
ICAgICAgICAgICAyMQorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgIGNhc2Ug
MiA6IAorICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNh
bWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgNzg1LAorICAgICAgICAgICAg
ICAgIDIxCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgY2FzZSAzIDogCisg
ICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNz
ZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY2FtbGludGVy
bmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICA3ODksCisgICAgICAgICAgICAgICAgMTkK
KyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXTsKKyAgICBjYXNlIDQgOiAKKyAgICAgICAg
dGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFp
bHVyZSwKKyAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3Jt
YXQubWwiLAorICAgICAgICAgICAgICAgIDc5MywKKyAgICAgICAgICAgICAgICAyMgorICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICBdOworICAgIGNhc2UgNSA6IAorICAgICAgICB0aHJvdyBb
CisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAor
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIs
CisgICAgICAgICAgICAgICAgNzk4LAorICAgICAgICAgICAgICAgIDMwCisgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIF07CisgICAgY2FzZSA2IDogCisgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAg
ICAgICAgICAgICA4MDMsCisgICAgICAgICAgICAgICAgMjYKKyAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgXTsKKyAgICBjYXNlIDcgOiAKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAg
ICAgIDgxMywKKyAgICAgICAgICAgICAgICAyOAorICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICBdOworICAgIGNhc2UgOCA6IAorICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgODE3
LAorICAgICAgICAgICAgICAgIDIzCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07Cisg
ICAgCisgIH0KK30KKworZnVuY3Rpb24gZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4oZm9ybWF0dGlu
Z19nZW4pIHsKKyAgcmV0dXJuIGZtdHR5X29mX2ZtdChmb3JtYXR0aW5nX2dlblswXVswXSk7Cit9
CisKK2Z1bmN0aW9uIGZtdHR5X29mX2ZtdChfZm10dHkpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAg
IHZhciBmbXR0eSA9IF9mbXR0eTsKKyAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikg
eworICAgICAgcmV0dXJuIC8qIEVuZF9vZl9mbXR0eSAqLzA7CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgc3dpdGNoIChmbXR0eS50YWcgfCAwKSB7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAg
ICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5KGZt
dHR5WzBdLCAvKiBTdHJpbmdfdHkgKi9CbG9jay5fXygxLCBbZm10dHlfb2ZfZm10KGZtdHR5WzFd
KV0pKTsKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICB2YXIgdHlfcmVzdCA9IGZtdHR5
X29mX2ZtdChmbXR0eVszXSk7CisgICAgICAgICAgICB2YXIgcHJlY190eSA9IGZtdHR5X29mX3By
ZWNpc2lvbl9mbXR0eShmbXR0eVsyXSwgLyogSW50X3R5ICovQmxvY2suX18oMiwgW3R5X3Jlc3Rd
KSk7CisgICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfcGFkZGluZ19mbXR0eShmbXR0eVsxXSwg
cHJlY190eSk7CisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgdmFyIHR5X3Jlc3QkMSA9
IGZtdHR5X29mX2ZtdChmbXR0eVszXSk7CisgICAgICAgICAgICB2YXIgcHJlY190eSQxID0gZm10
dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5KGZtdHR5WzJdLCAvKiBJbnQzMl90eSAqL0Jsb2NrLl9fKDMs
IFt0eV9yZXN0JDFdKSk7CisgICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfcGFkZGluZ19mbXR0
eShmbXR0eVsxXSwgcHJlY190eSQxKTsKKyAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICB2
YXIgdHlfcmVzdCQyID0gZm10dHlfb2ZfZm10KGZtdHR5WzNdKTsKKyAgICAgICAgICAgIHZhciBw
cmVjX3R5JDIgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkoZm10dHlbMl0sIC8qIE5hdGl2ZWlu
dF90eSAqL0Jsb2NrLl9fKDQsIFt0eV9yZXN0JDJdKSk7CisgICAgICAgICAgICByZXR1cm4gZm10
dHlfb2ZfcGFkZGluZ19mbXR0eShmbXR0eVsxXSwgcHJlY190eSQyKTsKKyAgICAgICAgY2FzZSA3
IDogCisgICAgICAgICAgICB2YXIgdHlfcmVzdCQzID0gZm10dHlfb2ZfZm10KGZtdHR5WzNdKTsK
KyAgICAgICAgICAgIHZhciBwcmVjX3R5JDMgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkoZm10
dHlbMl0sIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW3R5X3Jlc3QkM10pKTsKKyAgICAgICAg
ICAgIHJldHVybiBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5KGZtdHR5WzFdLCBwcmVjX3R5JDMpOwor
ICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIHZhciB0eV9yZXN0JDQgPSBmbXR0eV9vZl9m
bXQoZm10dHlbM10pOworICAgICAgICAgICAgdmFyIHByZWNfdHkkNCA9IGZtdHR5X29mX3ByZWNp
c2lvbl9mbXR0eShmbXR0eVsyXSwgLyogRmxvYXRfdHkgKi9CbG9jay5fXyg2LCBbdHlfcmVzdCQ0
XSkpOworICAgICAgICAgICAgcmV0dXJuIGZtdHR5X29mX3BhZGRpbmdfZm10dHkoZm10dHlbMV0s
IHByZWNfdHkkNCk7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEJv
b2xfdHkgKi9CbG9jay5fXyg3LCBbZm10dHlfb2ZfZm10KGZtdHR5WzBdKV0pOworICAgICAgICBj
YXNlIDEwIDogCisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBG
b3JtYXRfYXJnX3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICAgIGZtdHR5
WzFdLAorICAgICAgICAgICAgICAgICAgICAgIGZtdHR5X29mX2ZtdChmbXR0eVsyXSkKKyAgICAg
ICAgICAgICAgICAgICAgXSk7CisgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgIHZhciB0
eSA9IGZtdHR5WzFdOworICAgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9zdWJzdF90eSAqL0Js
b2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAgICAgICB0eSwKKyAgICAgICAgICAgICAgICAg
ICAgICB0eSwKKyAgICAgICAgICAgICAgICAgICAgICBmbXR0eV9vZl9mbXQoZm10dHlbMl0pCisg
ICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogQWxwaGFfdHkgKi9CbG9jay5fXygxMCwgW2ZtdHR5X29mX2ZtdChmbXR0eVswXSld
KTsKKyAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFRoZXRhX3R5ICov
QmxvY2suX18oMTEsIFtmbXR0eV9vZl9mbXQoZm10dHlbMF0pXSk7CisgICAgICAgIGNhc2UgMTEg
OiAKKyAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBf
Zm10dHkgPSBmbXR0eVsxXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNh
c2UgMTggOiAKKyAgICAgICAgICAgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29u
Y2F0X2ZtdHR5KGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuKGZtdHR5WzBdKSwgZm10dHlfb2ZfZm10
KGZtdHR5WzFdKSk7CisgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBS
ZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW2ZtdHR5X29mX2ZtdChmbXR0eVswXSldKTsKKyAgICAg
ICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFN0cmluZ190eSAqL0Jsb2NrLl9f
KDEsIFtmbXR0eV9vZl9mbXQoZm10dHlbMl0pXSk7CisgICAgICAgIGNhc2UgMjEgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbZm10dHlfb2ZfZm10KGZtdHR5
WzFdKV0pOworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgIGNh
c2UgMjIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxvY2suX18oMCwgW2Zt
dHR5X29mX2ZtdChmbXR0eVswXSldKTsKKyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgICAg
dmFyIGlnbiA9IGZtdHR5WzBdOworICAgICAgICAgICAgdmFyIGZtdCA9IGZtdHR5WzFdOworICAg
ICAgICAgICAgaWYgKHR5cGVvZiBpZ24gPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIHN3
aXRjaCAoaWduKSB7CisgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBJZ25vcmVkX3JlYWRlcl90eSAqL0Jsb2NrLl9fKDE0LCBbZm10dHlfb2Zf
Zm10KGZtdCldKTsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNl
IDQgOiAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZtdHR5X29mX2ZtdChmbXQpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgc3dpdGNoIChpZ24udGFnIHwgMCkgeworICAgICAgICAg
ICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ2FtbGludGVybmFs
Rm9ybWF0QmFzaWNzLmNvbmNhdF9mbXR0eShpZ25bMV0sIGZtdHR5X29mX2ZtdChmbXQpKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAg
ICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAg
ICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAg
ICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmbXR0eV9vZl9mbXQoZm10KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgICBy
ZXR1cm4gZm10dHlfb2ZfY3VzdG9tKGZtdHR5WzBdLCBmbXR0eV9vZl9mbXQoZm10dHlbMl0pKTsK
KyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBmbXR0eV9vZl9j
dXN0b20oYXJpdHksIGZtdHR5KSB7CisgIGlmIChhcml0eSkgeworICAgIHJldHVybiAvKiBBbnlf
dHkgKi9CbG9jay5fXygxMiwgW2ZtdHR5X29mX2N1c3RvbShhcml0eVswXSwgZm10dHkpXSk7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZtdHR5OworICB9Cit9CisKK2Z1bmN0aW9uIGZtdHR5
X29mX3BhZGRpbmdfZm10dHkocGFkLCBmbXR0eSkgeworICBpZiAodHlwZW9mIHBhZCA9PT0gIm51
bWJlciIgfHwgIXBhZC50YWcpIHsKKyAgICByZXR1cm4gZm10dHk7CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFtmbXR0eV0pOworICB9Cit9CisKK2Z1
bmN0aW9uIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eShwcmVjLCBmbXR0eSkgeworICBpZiAodHlw
ZW9mIHByZWMgPT09ICJudW1iZXIiICYmIHByZWMgIT09IDApIHsKKyAgICByZXR1cm4gLyogSW50
X3R5ICovQmxvY2suX18oMiwgW2ZtdHR5XSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZt
dHR5OworICB9Cit9CisKK3ZhciBUeXBlX21pc21hdGNoID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0
ZSgiQ2FtbGludGVybmFsRm9ybWF0LlR5cGVfbWlzbWF0Y2giKTsKKworZnVuY3Rpb24gdHlwZV9w
YWRkaW5nKHBhZCwgZm10dHkpIHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7Cisg
ICAgcmV0dXJuIC8qIFBhZGRpbmdfZm10dHlfRUJCICovWworICAgICAgICAgICAgLyogTm9fcGFk
ZGluZyAqLzAsCisgICAgICAgICAgICBmbXR0eQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSBp
ZiAocGFkLnRhZykgeworICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgIH0KKyAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09
IDIpIHsKKyAgICAgIHJldHVybiAvKiBQYWRkaW5nX2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAg
ICAgLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbcGFkWzBdXSksCisgICAgICAgICAgICAg
IGZtdHR5WzBdCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93
IFR5cGVfbWlzbWF0Y2g7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBQYWRk
aW5nX2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExpdF9wYWRkaW5nICovQmxvY2suX18o
MCwgWworICAgICAgICAgICAgICAgIHBhZFswXSwKKyAgICAgICAgICAgICAgICBwYWRbMV0KKyAg
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICBmbXR0eQorICAgICAgICAgIF07CisgIH0KK30K
KworZnVuY3Rpb24gdHlwZV9wYWRwcmVjKHBhZCwgcHJlYywgZm10dHkpIHsKKyAgdmFyIG1hdGNo
ID0gdHlwZV9wYWRkaW5nKHBhZCwgZm10dHkpOworICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1i
ZXIiKSB7CisgICAgaWYgKHByZWMgIT09IDApIHsKKyAgICAgIHZhciBtYXRjaCQxID0gbWF0Y2hb
MV07CisgICAgICBpZiAodHlwZW9mIG1hdGNoJDEgPT09ICJudW1iZXIiKSB7CisgICAgICAgIHRo
cm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICB9CisgICAgICBlbHNlIGlmIChtYXRjaCQxLnRhZyA9
PT0gMikgeworICAgICAgICByZXR1cm4gLyogUGFkcHJlY19mbXR0eV9FQkIgKi9bCisgICAgICAg
ICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgICAgLyogQXJnX3ByZWNpc2lvbiAqLzEs
CisgICAgICAgICAgICAgICAgbWF0Y2gkMVswXQorICAgICAgICAgICAgICBdOworICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICB9CisgICAg
fQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIFBhZHByZWNfZm10dHlfRUJCICovWworICAg
ICAgICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwK
KyAgICAgICAgICAgICAgbWF0Y2hbMV0KKyAgICAgICAgICAgIF07CisgICAgfQorICB9CisgIGVs
c2UgeworICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgIG1h
dGNoWzBdLAorICAgICAgICAgICAgLyogTGl0X3ByZWNpc2lvbiAqL1twcmVjWzBdXSwKKyAgICAg
ICAgICAgIG1hdGNoWzFdCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiB0eXBlX2ln
bm9yZWRfcGFyYW1fb25lKGlnbiwgZm10LCBmbXR0eSkgeworICB2YXIgbWF0Y2ggPSB0eXBlX2Zv
cm1hdF9nZW4oZm10LCBmbXR0eSk7CisgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAg
ICAgICAgIC8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICBp
Z24sCisgICAgICAgICAgICAgIG1hdGNoWzBdCisgICAgICAgICAgICBdKSwKKyAgICAgICAgICBt
YXRjaFsxXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0eXBlX2Zvcm1hdF9nZW4oZm10LCBm
bXR0eSkgeworICBpZiAodHlwZW9mIGZtdCA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gLyog
Rm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wLAorICAg
ICAgICAgICAgZm10dHkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAo
Zm10LnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10
dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcpIHsKKyAgICAgICAgICAgIHRo
cm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgdmFyIG1hdGNoID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10dHlbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIENoYXIgKi9CbG9jay5fXygwLCBbbWF0Y2hbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAg
bWF0Y2hbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51
bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZykgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9t
aXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIg
bWF0Y2gkMSA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5WzBdKTsKKyAgICAgICAgICAg
IHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBDYW1s
X2NoYXIgKi9CbG9jay5fXygxLCBbbWF0Y2gkMVswXV0pLAorICAgICAgICAgICAgICAgICAgICBt
YXRjaCQxWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHZhciBtYXRjaCQyID0gdHlwZV9wYWRk
aW5nKGZtdFswXSwgZm10dHkpOworICAgICAgICAgIHZhciBtYXRjaCQzID0gbWF0Y2gkMlsxXTsK
KyAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmICht
YXRjaCQzLnRhZyA9PT0gMSkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDQgPSB0eXBlX2Zvcm1h
dF9nZW4oZm10WzFdLCBtYXRjaCQzWzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10
dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmcgKi9CbG9jay5fXygyLCBb
CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyWzBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkNFswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQ0WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAg
ICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgdmFyIG1h
dGNoJDUgPSB0eXBlX3BhZGRpbmcoZm10WzBdLCBmbXR0eSk7CisgICAgICAgICAgdmFyIG1hdGNo
JDYgPSBtYXRjaCQ1WzFdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkNiA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgaWYgKG1hdGNoJDYudGFnID09PSAxKSB7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkNyA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMV0sIG1hdGNoJDZbMF0pOworICAgICAgICAgICAg
cmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIENhbWxf
c3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNVsw
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDdbMF0KKyAgICAgICAgICAgICAgICAg
ICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkN1sxXQorICAgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBU
eXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
NCA6IAorICAgICAgICAgIHZhciBtYXRjaCQ4ID0gdHlwZV9wYWRwcmVjKGZtdFsxXSwgZm10WzJd
LCBmbXR0eSk7CisgICAgICAgICAgdmFyIG1hdGNoJDkgPSBtYXRjaCQ4WzJdOworICAgICAgICAg
IGlmICh0eXBlb2YgbWF0Y2gkOSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5
cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDkudGFn
ID09PSAyKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSB0eXBlX2Zvcm1hdF9nZW4oZm10
WzNdLCBtYXRjaCQ5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICov
WworICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICBmbXRbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ4WzBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkOFsxXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoJDEwWzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAg
ICAgICAgICAgIG1hdGNoJDEwWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAg
ICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFy
IG1hdGNoJDExID0gdHlwZV9wYWRwcmVjKGZtdFsxXSwgZm10WzJdLCBmbXR0eSk7CisgICAgICAg
ICAgdmFyIG1hdGNoJDEyID0gbWF0Y2gkMTFbMl07CisgICAgICAgICAgaWYgKHR5cGVvZiBtYXRj
aCQxMiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDEyLnRhZyA9PT0gMykgeworICAg
ICAgICAgICAgdmFyIG1hdGNoJDEzID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFszXSwgbWF0Y2gkMTJb
MF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIEludDMyICovQmxvY2suX18oNSwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTFbMF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQxMVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoJDEzWzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDEzWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgdmFyIG1hdGNoJDE0
ID0gdHlwZV9wYWRwcmVjKGZtdFsxXSwgZm10WzJdLCBmbXR0eSk7CisgICAgICAgICAgdmFyIG1h
dGNoJDE1ID0gbWF0Y2gkMTRbMl07CisgICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQxNSA9PT0g
Im51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDE1LnRhZyA9PT0gNCkgeworICAgICAgICAgICAg
dmFyIG1hdGNoJDE2ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFszXSwgbWF0Y2gkMTVbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIE5hdGl2ZWludCAqL0Jsb2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZt
dFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE0WzBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMTRbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQx
NlswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRj
aCQxNlsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHZhciBtYXRjaCQxNyA9IHR5
cGVfcGFkcHJlYyhmbXRbMV0sIGZtdFsyXSwgZm10dHkpOworICAgICAgICAgIHZhciBtYXRjaCQx
OCA9IG1hdGNoJDE3WzJdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkMTggPT09ICJudW1i
ZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIGlmIChtYXRjaCQxOC50YWcgPT09IDUpIHsKKyAgICAgICAgICAgIHZhciBt
YXRjaCQxOSA9IHR5cGVfZm9ybWF0X2dlbihmbXRbM10sIG1hdGNoJDE4WzBdKTsKKyAgICAgICAg
ICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBJ
bnQ2NCAqL0Jsb2NrLl9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFswXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE3WzBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMTdbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxOVswXQorICAg
ICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQxOVsxXQor
ICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIHZhciBtYXRjaCQyMCA9IHR5cGVfcGFkcHJl
YyhmbXRbMV0sIGZtdFsyXSwgZm10dHkpOworICAgICAgICAgIHZhciBtYXRjaCQyMSA9IG1hdGNo
JDIwWzJdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkMjEgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChtYXRjaCQyMS50YWcgPT09IDYpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyMiA9
IHR5cGVfZm9ybWF0X2dlbihmbXRbM10sIG1hdGNoJDIxWzBdKTsKKyAgICAgICAgICAgIHJldHVy
biAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBGbG9hdCAqL0Js
b2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFswXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDIwWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gk
MjBbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMlswXQorICAgICAgICAgICAg
ICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMlsxXQorICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0
aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgOSA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChmbXR0eS50YWcgPT09IDcpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyMyA9IHR5
cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBG
bXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBCb29sICovQmxvY2suX18o
OSwgW21hdGNoJDIzWzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDIzWzFdCisgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIHZhciBtYXRjaCQyNCA9IHR5cGVfZm9ybWF0X2dl
bihmbXRbMF0sIGZtdHR5KTsKKyAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sK
KyAgICAgICAgICAgICAgICAgIC8qIEZsdXNoICovQmxvY2suX18oMTAsIFttYXRjaCQyNFswXV0p
LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMjRbMV0KKyAgICAgICAgICAgICAgICBdOworICAg
ICAgY2FzZSAxMSA6IAorICAgICAgICAgIHZhciBtYXRjaCQyNSA9IHR5cGVfZm9ybWF0X2dlbihm
bXRbMV0sIGZtdHR5KTsKKyAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAg
ICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICBmbXRbMF0sCisgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjVb
MF0KKyAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICBtYXRjaCQyNVsx
XQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgdmFyIG1h
dGNoJDI2ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsxXSwgZm10dHkpOworICAgICAgICAgIHJldHVy
biAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgLyogQ2hhcl9saXRlcmFs
ICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0sCisgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkMjZbMF0KKyAgICAgICAgICAgICAgICAgICAgXSksCisgICAg
ICAgICAgICAgICAgICBtYXRjaCQyNlsxXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNl
IDEzIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAg
ICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
aWYgKGZtdHR5LnRhZyA9PT0gOCkgeworICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eSRwcmltZSA9
IGZtdHR5WzBdOworICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyogRm10
dHlfRUJCICovW2ZtdFsxXV0sIC8qIEZtdHR5X0VCQiAqL1tzdWJfZm10dHkkcHJpbWVdKSkgewor
ICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdmFyIG1hdGNoJDI3ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsyXSwgZm10dHlbMV0pOwor
ICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAg
ICAgIC8qIEZvcm1hdF9hcmcgKi9CbG9jay5fXygxMywgWworICAgICAgICAgICAgICAgICAgICAg
ICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3ViX2ZtdHR5JHByaW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjdbMF0KKyAgICAgICAgICAgICAgICAgICAgICBd
KSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjdbMV0KKyAgICAgICAgICAgICAgICAgIF07
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9t
aXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE0IDog
CisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAg
IHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZt
dHR5LnRhZyA9PT0gOSkgeworICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eTEgPSBmbXR0eVswXTsK
KyAgICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX25vdGVxdWFsKC8qIEZtdHR5X0VCQiAqL1tD
YW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKGZtdFsxXSldLCAvKiBGbXR0eV9FQkIg
Ki9bQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChzdWJfZm10dHkxKV0pKSB7Cisg
ICAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB2YXIgbWF0Y2gkMjggPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzJdLCBDYW1saW50ZXJuYWxG
b3JtYXRCYXNpY3MuZXJhc2VfcmVsKGZtdHR5WzJdKSk7CisgICAgICAgICAgICByZXR1cm4gLyog
Rm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0X3N1YnN0ICov
QmxvY2suX18oMTQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFswXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN1Yl9mbXR0eTEsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aCQyOFswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBt
YXRjaCQyOFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZt
dHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMCkgeworICAgICAg
ICAgICAgdmFyIG1hdGNoJDI5ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10dHlbMF0pOwor
ICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAg
ICAgIC8qIEFscGhhICovQmxvY2suX18oMTUsIFttYXRjaCQyOVswXV0pLAorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQyOVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICBpZiAo
dHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNt
YXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMSkg
eworICAgICAgICAgICAgdmFyIG1hdGNoJDMwID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10
dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAg
ICAgICAgICAgICAgIC8qIFRoZXRhICovQmxvY2suX18oMTYsIFttYXRjaCQzMFswXV0pLAorICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQzMFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTcgOiAKKyAgICAg
ICAgICB2YXIgbWF0Y2gkMzEgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzFdLCBmbXR0eSk7CisgICAg
ICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAvKiBG
b3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAgICAgICAgICAgZm10
WzBdLAorICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDMxWzBdCisgICAgICAgICAgICAgICAg
ICAgIF0pLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMzFbMV0KKyAgICAgICAgICAgICAgICBd
OworICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgIHZhciBmb3JtYXR0aW5nX2dlbiA9IGZtdFsw
XTsKKyAgICAgICAgICB2YXIgZm10MCA9IGZtdFsxXTsKKyAgICAgICAgICB2YXIgZm10dHkwID0g
Zm10dHk7CisgICAgICAgICAgaWYgKGZvcm1hdHRpbmdfZ2VuLnRhZykgeworICAgICAgICAgICAg
dmFyIG1hdGNoJDMyID0gZm9ybWF0dGluZ19nZW5bMF07CisgICAgICAgICAgICB2YXIgbWF0Y2gk
MzMgPSB0eXBlX2Zvcm1hdF9nZW4obWF0Y2gkMzJbMF0sIGZtdHR5MCk7CisgICAgICAgICAgICB2
YXIgbWF0Y2gkMzQgPSB0eXBlX2Zvcm1hdF9nZW4oZm10MCwgbWF0Y2gkMzNbMV0pOworICAgICAg
ICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8q
IEZvcm1hdHRpbmdfZ2VuICovQmxvY2suX18oMTgsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8qIE9wZW5fYm94ICovQmxvY2suX18oMSwgWy8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDMzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMzJbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXSksCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQzNFswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAor
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQzNFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMzUgPSBm
b3JtYXR0aW5nX2dlblswXTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQzNiA9IHR5cGVfZm9ybWF0
X2dlbihtYXRjaCQzNVswXSwgZm10dHkwKTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQzNyA9IHR5
cGVfZm9ybWF0X2dlbihmbXQwLCBtYXRjaCQzNlsxXSk7CisgICAgICAgICAgICByZXR1cm4gLyog
Rm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0dGluZ19nZW4g
Ki9CbG9jay5fXygxOCwgWworICAgICAgICAgICAgICAgICAgICAgICAgLyogT3Blbl90YWcgKi9C
bG9jay5fXygwLCBbLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkMzZbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQzNVsxXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1dKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDM3WzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDM3WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAg
IGNhc2UgMTkgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewor
ICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSBpZiAoZm10dHkudGFnID09PSAxMykgeworICAgICAgICAgICAgdmFyIG1hdGNoJDM4ID0g
dHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8q
IEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIFJlYWRlciAqL0Jsb2Nr
Ll9fKDE5LCBbbWF0Y2gkMzhbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMzhbMV0K
KyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDIwIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51
bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMSkgeworICAgICAgICAgICAgdmFyIG1h
dGNoJDM5ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsyXSwgZm10dHlbMF0pOworICAgICAgICAgICAg
cmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIFNjYW5f
Y2hhcl9zZXQgKi9CbG9jay5fXygyMCwgWworICAgICAgICAgICAgICAgICAgICAgICAgZm10WzBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgZm10WzFdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMzlbMF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkMzlbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAg
ICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIxIDogCisgICAgICAgICAgaWYgKHR5
cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0
Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMikgewor
ICAgICAgICAgICAgdmFyIG1hdGNoJDQwID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsxXSwgZm10dHlb
MF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIFNjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwgWworICAgICAgICAg
ICAgICAgICAgICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNDBb
MF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gk
NDBbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIDIzIDogCisgICAgICAgICAgdmFyIGlnbiA9IGZtdFswXTsK
KyAgICAgICAgICB2YXIgZm10JDEgPSBmbXRbMV07CisgICAgICAgICAgdmFyIGZtdHR5JDEgPSBm
bXR0eTsKKyAgICAgICAgICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoaWduKSB7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAg
ICAgICAgaWYgKHR5cGVvZiBmbXR0eSQxID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoZm10dHkkMS50YWcgPT09IDE0KSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBtYXRjaCQ0MSA9IHR5cGVfZm9ybWF0X2dlbihmbXQkMSwgZm10dHkkMVswXSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmVkX3JlYWRlciAqLzMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDQxWzBdCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0MVsx
XQorICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVfbWlz
bWF0Y2g7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZShpZ24sIGZtdCQxLCBmbXR0eSQxKTsKKyAg
ICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgc3dpdGNoIChpZ24udGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNl
IDcgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lKC8q
IElnbm9yZWRfZm9ybWF0X2FyZyAqL0Jsb2NrLl9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25b
MV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQkMSwgZm10dHkkMSk7Cisg
ICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDQyID0g
dHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oaWduWzFdLCBmbXQkMSwgZm10dHkkMSk7
CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNDMgPSBtYXRjaCQ0MlsxXTsKKyAgICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfZm9ybWF0X3N1YnN0ICovQmxvY2suX18oOCwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0MlswXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDQzWzBdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDQzWzFdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBj
YXNlIDAgOiAKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgIGNhc2UgMiA6
IAorICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAg
ICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAg
ICAgY2FzZSA5IDogCisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgICAg
IHJldHVybiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lKGlnbiwgZm10JDEsIGZtdHR5JDEpOworICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICBjYXNlIDIyIDog
CisgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAg
IAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1
dGlvbihzdWJfZm10dHksIGZtdCwgZm10dHkpIHsKKyAgaWYgKHR5cGVvZiBzdWJfZm10dHkgPT09
ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAg
ICAvKiBFbmRfb2ZfZm10dHkgKi8wLAorICAgICAgICAgICAgdHlwZV9mb3JtYXRfZ2VuKGZtdCwg
Zm10dHkpCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKHN1Yl9mbXR0
eS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5
ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnKSB7CisgICAgICAgICAgICB0aHJv
dyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHZhciBtYXRjaCA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKHN1Yl9mbXR0
eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICByZXR1cm4gLyogRm10dHlfZm10X0VC
QiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogQ2hhcl90eSAqL0Jsb2NrLl9fKDAsIFttYXRj
aFswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXQorICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cg
VHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFn
ID09PSAxKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHR5cGVfaWdub3JlZF9mb3JtYXRf
c3Vic3RpdHV0aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogRm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5n
X3R5ICovQmxvY2suX18oMSwgW21hdGNoJDFbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0
Y2gkMVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkg
PT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDIpIHsKKyAgICAgICAgICAg
IHZhciBtYXRjaCQyID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5
WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJC
ICovWworICAgICAgICAgICAgICAgICAgICAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbbWF0Y2gk
MlswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQyWzFdCisgICAgICAgICAgICAgICAg
ICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5
cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAz
IDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAg
ICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYg
KGZtdHR5LnRhZyA9PT0gMykgeworICAgICAgICAgICAgdmFyIG1hdGNoJDMgPSB0eXBlX2lnbm9y
ZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIEludDMyX3R5ICovQmxvY2suX18oMywgW21hdGNoJDNbMF1dKSwKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkM1sxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAg
IH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIGlmICh0eXBl
b2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDQpIHsKKyAg
ICAgICAgICAgIHZhciBtYXRjaCQ0ID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24o
c3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0
eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBOYXRpdmVpbnRfdHkgKi9CbG9j
ay5fXyg0LCBbbWF0Y2gkNFswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0WzFdCisg
ICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gNSkgeworICAgICAgICAgICAgdmFyIG1hdGNo
JDUgPSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwg
Zm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAg
ICAgICAgICAgICAgICAgIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW21hdGNoJDVbMF1dKSwK
KyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21h
dGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6IAorICAg
ICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJv
dyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50
YWcgPT09IDYpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ2ID0gdHlwZV9pZ25vcmVkX2Zvcm1h
dF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAg
IHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBGbG9h
dF90eSAqL0Jsb2NrLl9fKDYsIFttYXRjaCQ2WzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1h
dGNoJDZbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5
ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSA3KSB7CisgICAgICAgICAg
ICB2YXIgbWF0Y2gkNyA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKHN1Yl9mbXR0
eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICByZXR1cm4gLyogRm10dHlfZm10X0VC
QiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcsIFttYXRj
aCQ3WzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDdbMV0KKyAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cg
VHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDggOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAg
ICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBp
ZiAoZm10dHkudGFnID09PSA4KSB7CisgICAgICAgICAgICB2YXIgc3ViMl9mbXR0eSRwcmltZSA9
IGZtdHR5WzBdOworICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyogRm10
dHlfRUJCICovW3N1Yl9mbXR0eVswXV0sIC8qIEZtdHR5X0VCQiAqL1tzdWIyX2ZtdHR5JHByaW1l
XSkpIHsKKyAgICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHZhciBtYXRjaCQ4ID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRp
b24oc3ViX2ZtdHR5WzFdLCBmbXQsIGZtdHR5WzFdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBG
bXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBGb3JtYXRfYXJnX3R5ICov
QmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMl9mbXR0eSRwcmltZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDhbMF0KKyAgICAgICAgICAgICAgICAgICAg
ICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkOFsxXQorICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBl
X21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOSA6
IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChm
bXR0eS50YWcgPT09IDkpIHsKKyAgICAgICAgICAgIHZhciBzdWIyX2ZtdHR5JHByaW1lJDEgPSBm
bXR0eVsxXTsKKyAgICAgICAgICAgIHZhciBzdWIxX2ZtdHR5JHByaW1lID0gZm10dHlbMF07Cisg
ICAgICAgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBGbXR0eV9FQkIgKi9bQ2Ft
bGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChzdWJfZm10dHlbMF0pXSwgLyogRm10dHlf
RUJCICovW0NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3ViMV9mbXR0eSRwcmlt
ZSldKSkgeworICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyogRm10dHlfRUJCICov
W0NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3ViX2ZtdHR5WzFdKV0sIC8qIEZt
dHR5X0VCQiAqL1tDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKHN1YjJfZm10dHkk
cHJpbWUkMSldKSkgeworICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eSRwcmltZSA9IHRyYW5zKHN5bW0oc3Vi
MV9mbXR0eSRwcmltZSksIHN1YjJfZm10dHkkcHJpbWUkMSk7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkOSA9IGZtdHR5X3JlbF9kZXQoc3ViX2ZtdHR5JHByaW1lKTsKKyAgICAgICAgICAgIEN1cnJ5
Ll8xKG1hdGNoJDlbMV0sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgIEN1cnJ5Ll8xKG1hdGNo
JDlbM10sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxMCA9IHR5cGVfaWdu
b3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9y
ZWwoc3ViX2ZtdHR5WzJdKSwgZm10LCBmbXR0eVsyXSk7CisgICAgICAgICAgICByZXR1cm4gLyog
Rm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0X3N1YnN0X3R5
ICovQmxvY2suX18oOSwgWworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMV9mbXR0eSRwcmlt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YjJfZm10dHkkcHJpbWUkMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bW0obWF0Y2gkMTBbMF0pCisgICAgICAgICAgICAgICAgICAgICAg
XSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEwWzFdCisgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVf
bWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMCA6
IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChm
bXR0eS50YWcgPT09IDEwKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTEgPSB0eXBlX2lnbm9y
ZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIEFscGhhX3R5ICovQmxvY2suX18oMTAsIFttYXRjaCQxMVswXV0pLAorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQxMVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICBpZiAo
dHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNt
YXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMSkg
eworICAgICAgICAgICAgdmFyIG1hdGNoJDEyID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0
dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAv
KiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBUaGV0YV90eSAqL0Js
b2NrLl9fKDExLCBbbWF0Y2gkMTJbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTJb
MV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsK
KyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVy
IikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMykgeworICAgICAgICAgICAgdmFyIG1hdGNo
JDEzID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQs
IGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAg
ICAgICAgICAgICAgICAgICAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW21hdGNoJDEzWzBd
XSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzWzFdCisgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVf
bWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxNCA6
IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChm
bXR0eS50YWcgPT09IDE0KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTQgPSB0eXBlX2lnbm9y
ZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIElnbm9yZWRfcmVhZGVyX3R5ICovQmxvY2suX18oMTQsIFttYXRjaCQxNFswXV0pLAorICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQxNFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAgfQorfQor
CitmdW5jdGlvbiB0eXBlX2Zvcm1hdChmbXQsIGZtdHR5KSB7CisgIHZhciBtYXRjaCA9IHR5cGVf
Zm9ybWF0X2dlbihmbXQsIGZtdHR5KTsKKyAgaWYgKHR5cGVvZiBtYXRjaFsxXSA9PT0gIm51bWJl
ciIpIHsKKyAgICByZXR1cm4gbWF0Y2hbMF07CisgIH0KKyAgZWxzZSB7CisgICAgdGhyb3cgVHlw
ZV9taXNtYXRjaDsKKyAgfQorfQorCitmdW5jdGlvbiByZWNhc3QoZm10LCBmbXR0eSkgeworICBy
ZXR1cm4gdHlwZV9mb3JtYXQoZm10LCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVs
KHN5bW0oZm10dHkpKSk7Cit9CisKK2Z1bmN0aW9uIGZpeF9wYWRkaW5nKHBhZHR5LCB3aWR0aCwg
c3RyKSB7CisgIHZhciBsZW4gPSBzdHIubGVuZ3RoOworICB2YXIgbWF0Y2hfMDAwID0gUGVydmFz
aXZlcy5hYnMod2lkdGgpOworICB2YXIgbWF0Y2hfMDAxID0gd2lkdGggPCAwID8gLyogTGVmdCAq
LzAgOiBwYWR0eTsKKyAgdmFyIHBhZHR5JDEgPSBtYXRjaF8wMDE7CisgIHZhciB3aWR0aCQxID0g
bWF0Y2hfMDAwOworICBpZiAod2lkdGgkMSA8PSBsZW4pIHsKKyAgICByZXR1cm4gc3RyOworICB9
CisgIGVsc2UgeworICAgIHZhciByZXMgPSBCeXRlcy5tYWtlKHdpZHRoJDEsIHBhZHR5JDEgPT09
IC8qIFplcm9zICovMiA/IC8qICIwIiAqLzQ4IDogLyogIiAiICovMzIpOworICAgIHN3aXRjaCAo
cGFkdHkkMSkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgJCRTdHJpbmcuYmxpdChzdHIs
IDAsIHJlcywgMCwgbGVuKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMSA6IAorICAg
ICAgICAgICQkU3RyaW5nLmJsaXQoc3RyLCAwLCByZXMsIHdpZHRoJDEgLSBsZW4gfCAwLCBsZW4p
OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgaWYgKGxlbiA+
IDAgJiYgKENhbWxfc3RyaW5nLmdldChzdHIsIDApID09PSAvKiAiKyIgKi80MyB8fCBDYW1sX3N0
cmluZy5nZXQoc3RyLCAwKSA9PT0gLyogIi0iICovNDUgfHwgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwg
MCkgPT09IC8qICIgIiAqLzMyKSkgeworICAgICAgICAgICAgcmVzWzBdID0gQ2FtbF9zdHJpbmcu
Z2V0KHN0ciwgMCk7CisgICAgICAgICAgICAkJFN0cmluZy5ibGl0KHN0ciwgMSwgcmVzLCAod2lk
dGgkMSAtIGxlbiB8IDApICsgMSB8IDAsIGxlbiAtIDEgfCAwKTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSBpZiAobGVuID4gMSAmJiBDYW1sX3N0cmluZy5nZXQoc3RyLCAwKSA9PT0gLyog
IjAiICovNDggJiYgKENhbWxfc3RyaW5nLmdldChzdHIsIDEpID09PSAvKiAieCIgKi8xMjAgfHwg
Q2FtbF9zdHJpbmcuZ2V0KHN0ciwgMSkgPT09IC8qICJYIiAqLzg4KSkgeworICAgICAgICAgICAg
cmVzWzFdID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgMSk7CisgICAgICAgICAgICAkJFN0cmluZy5i
bGl0KHN0ciwgMiwgcmVzLCAod2lkdGgkMSAtIGxlbiB8IDApICsgMiB8IDAsIGxlbiAtIDIgfCAw
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAkJFN0cmluZy5i
bGl0KHN0ciwgMCwgcmVzLCB3aWR0aCQxIC0gbGVuIHwgMCwgbGVuKTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9CisgICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5
dGVzX3RvX3N0cmluZyhyZXMpOworICB9Cit9CisKK2Z1bmN0aW9uIGZpeF9pbnRfcHJlY2lzaW9u
KHByZWMsIHN0cikgeworICB2YXIgcHJlYyQxID0gUGVydmFzaXZlcy5hYnMocHJlYyk7CisgIHZh
ciBsZW4gPSBzdHIubGVuZ3RoOworICB2YXIgYyA9IENhbWxfc3RyaW5nLmdldChzdHIsIDApOwor
ICB2YXIgZXhpdCA9IDA7CisgIGlmIChjID49IDU4KSB7CisgICAgaWYgKGMgPj0gNzEpIHsKKyAg
ICAgIGlmIChjID4gMTAyIHx8IGMgPCA5NykgeworICAgICAgICByZXR1cm4gc3RyOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAyOworICAgICAgfQorICAgIH0KKyAgICBl
bHNlIGlmIChjID49IDY1KSB7CisgICAgICBleGl0ID0gMjsKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICByZXR1cm4gc3RyOworICAgIH0KKyAgfQorICBlbHNlIGlmIChjICE9PSAzMikgeworICAg
IGlmIChjID49IDQzKSB7CisgICAgICBzd2l0Y2ggKGMgLSA0MyB8IDApIHsKKyAgICAgICAgY2Fz
ZSAwIDogCisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgIGNhc2UgMyA6IAorICAgICAg
ICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAgIGNhc2UgNSA6IAor
ICAgICAgICAgICAgaWYgKChwcmVjJDEgKyAyIHwgMCkgPiBsZW4gJiYgbGVuID4gMSAmJiAoQ2Ft
bF9zdHJpbmcuZ2V0KHN0ciwgMSkgPT09IC8qICJ4IiAqLzEyMCB8fCBDYW1sX3N0cmluZy5nZXQo
c3RyLCAxKSA9PT0gLyogIlgiICovODgpKSB7CisgICAgICAgICAgICAgIHZhciByZXMgPSBCeXRl
cy5tYWtlKHByZWMkMSArIDIgfCAwLCAvKiAiMCIgKi80OCk7CisgICAgICAgICAgICAgIHJlc1sx
XSA9IENhbWxfc3RyaW5nLmdldChzdHIsIDEpOworICAgICAgICAgICAgICAkJFN0cmluZy5ibGl0
KHN0ciwgMiwgcmVzLCAocHJlYyQxIC0gbGVuIHwgMCkgKyA0IHwgMCwgbGVuIC0gMiB8IDApOwor
ICAgICAgICAgICAgICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHJlcyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCA9IDI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2IDogCisg
ICAgICAgIGNhc2UgNyA6IAorICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgY2FzZSA5IDogCisg
ICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICBjYXNlIDEyIDog
CisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgZXhp
dCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAg
IGVsc2UgeworICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgZXhp
dCA9IDE7CisgIH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAgY2FzZSAxIDogCisgICAgICAgIGlm
ICgocHJlYyQxICsgMSB8IDApID4gbGVuKSB7CisgICAgICAgICAgdmFyIHJlcyQxID0gQnl0ZXMu
bWFrZShwcmVjJDEgKyAxIHwgMCwgLyogIjAiICovNDgpOworICAgICAgICAgIHJlcyQxWzBdID0g
YzsKKyAgICAgICAgICAkJFN0cmluZy5ibGl0KHN0ciwgMSwgcmVzJDEsIChwcmVjJDEgLSBsZW4g
fCAwKSArIDIgfCAwLCBsZW4gLSAxIHwgMCk7CisgICAgICAgICAgcmV0dXJuIENhbWxfc3RyaW5n
LmJ5dGVzX3RvX3N0cmluZyhyZXMkMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIHN0cjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIDIg
OiAKKyAgICAgICAgaWYgKHByZWMkMSA+IGxlbikgeworICAgICAgICAgIHZhciByZXMkMiA9IEJ5
dGVzLm1ha2UocHJlYyQxLCAvKiAiMCIgKi80OCk7CisgICAgICAgICAgJCRTdHJpbmcuYmxpdChz
dHIsIDAsIHJlcyQyLCBwcmVjJDEgLSBsZW4gfCAwLCBsZW4pOworICAgICAgICAgIHJldHVybiBD
YW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocmVzJDIpOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgCisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX3RvX2NhbWxfc3RyaW5nKHN0cikgeworICBy
ZXR1cm4gJCRTdHJpbmcuY29uY2F0KCQkU3RyaW5nLmVzY2FwZWQoc3RyKSwgLyogOjogKi9bCisg
ICAgICAgICAgICAgICciJywKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgJyInLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gZm9ybWF0X29mX2ljb252KGljb252KSB7CisgIHN3
aXRjaCAoaWNvbnYpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuICIlZCI7CisgICAg
Y2FzZSAxIDogCisgICAgICAgIHJldHVybiAiJStkIjsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAg
cmV0dXJuICIlIGQiOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gIiVpIjsKKyAgICBj
YXNlIDQgOiAKKyAgICAgICAgcmV0dXJuICIlK2kiOworICAgIGNhc2UgNSA6IAorICAgICAgICBy
ZXR1cm4gIiUgaSI7CisgICAgY2FzZSA2IDogCisgICAgICAgIHJldHVybiAiJXgiOworICAgIGNh
c2UgNyA6IAorICAgICAgICByZXR1cm4gIiUjeCI7CisgICAgY2FzZSA4IDogCisgICAgICAgIHJl
dHVybiAiJVgiOworICAgIGNhc2UgOSA6IAorICAgICAgICByZXR1cm4gIiUjWCI7CisgICAgY2Fz
ZSAxMCA6IAorICAgICAgICByZXR1cm4gIiVvIjsKKyAgICBjYXNlIDExIDogCisgICAgICAgIHJl
dHVybiAiJSNvIjsKKyAgICBjYXNlIDEyIDogCisgICAgICAgIHJldHVybiAiJXUiOworICAgIAor
ICB9Cit9CisKK2Z1bmN0aW9uIGZvcm1hdF9vZl9hY29udihpY29udiwgYykgeworICB2YXIgc2Vw
czsKKyAgc3dpdGNoIChpY29udikgeworICAgIGNhc2UgMCA6IAorICAgICAgICBzZXBzID0gLyog
OjogKi9bCisgICAgICAgICAgIiUiLAorICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ImQiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICovWworICAg
ICAgICAgICIlKyIsCisgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAiZCIsCisgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgMiA6IAorICAgICAgICBzZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUg
IiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJkIiwKKyAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSAzIDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSIsCisgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAiaSIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICBdCisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNCA6IAorICAg
ICAgICBzZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUrIiwKKyAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICJpIiwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0K
KyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA1IDogCisgICAgICAgIHNlcHMg
PSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSAiLAorICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgImkiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAgICBd
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICov
WworICAgICAgICAgICIlIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJ4IiwK
KyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSA3IDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAg
ICAiJSMiLAorICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgIngiLAorICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIDggOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICovWworICAgICAgICAgICIlIiwKKyAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJYIiwKKyAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA5IDog
CisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSMiLAorICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgIlgiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgXQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDEwIDogCisgICAgICAg
IHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSIsCisgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAibyIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAg
ICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTEgOiAKKyAgICAgICAgc2VwcyA9IC8q
IDo6ICovWworICAgICAgICAgICIlIyIsCisgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAibyIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgMTIgOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICovWwor
ICAgICAgICAgICIlIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJ1IiwKKyAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJl
YWs7CisgICAgCisgIH0KKyAgcmV0dXJuICQkU3RyaW5nLmNvbmNhdChDYW1sX3N0cmluZy5ieXRl
c190b19zdHJpbmcoQnl0ZXMubWFrZSgxLCBjKSksIHNlcHMpOworfQorCitmdW5jdGlvbiBmb3Jt
YXRfb2ZfZmNvbnYoZmNvbnYsIHByZWMpIHsKKyAgaWYgKGZjb252ID09PSAvKiBGbG9hdF9GICov
MTUpIHsKKyAgICByZXR1cm4gIiUuMTJnIjsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgcHJlYyQx
ID0gUGVydmFzaXZlcy5hYnMocHJlYyk7CisgICAgdmFyIHN5bWIgPSBjaGFyX29mX2Zjb252KGZj
b252KTsKKyAgICB2YXIgYnVmID0gLyogcmVjb3JkICovWworICAgICAgLyogaW5kICovMCwKKyAg
ICAgIC8qIGJ5dGVzICovbmV3IEFycmF5KDE2KQorICAgIF07CisgICAgYnVmZmVyX2FkZF9jaGFy
KGJ1ZiwgLyogIiUiICovMzcpOworICAgIGJwcmludF9mY29udl9mbGFnKGJ1ZiwgZmNvbnYpOwor
ICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIuIiAqLzQ2KTsKKyAgICBidWZmZXJfYWRkX3N0
cmluZyhidWYsICIiICsgcHJlYyQxKTsKKyAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCBzeW1iKTsK
KyAgICByZXR1cm4gYnVmZmVyX2NvbnRlbnRzKGJ1Zik7CisgIH0KK30KKworZnVuY3Rpb24gY29u
dmVydF9pbnQoaWNvbnYsIG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfZm9ybWF0X2lu
dChmb3JtYXRfb2ZfaWNvbnYoaWNvbnYpLCBuKTsKK30KKworZnVuY3Rpb24gY29udmVydF9pbnQz
MihpY29udiwgbikgeworICByZXR1cm4gQ2FtbF9mb3JtYXQuY2FtbF9pbnQzMl9mb3JtYXQoZm9y
bWF0X29mX2Fjb252KGljb252LCAvKiAibCIgKi8xMDgpLCBuKTsKK30KKworZnVuY3Rpb24gY29u
dmVydF9uYXRpdmVpbnQoaWNvbnYsIG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfbmF0
aXZlaW50X2Zvcm1hdChmb3JtYXRfb2ZfYWNvbnYoaWNvbnYsIC8qICJuIiAqLzExMCksIG4pOwor
fQorCitmdW5jdGlvbiBjb252ZXJ0X2ludDY0KGljb252LCBuKSB7CisgIHJldHVybiBDYW1sX2Zv
cm1hdC5jYW1sX2ludDY0X2Zvcm1hdChmb3JtYXRfb2ZfYWNvbnYoaWNvbnYsIC8qICJMIiAqLzc2
KSwgbik7Cit9CisKK2Z1bmN0aW9uIGNvbnZlcnRfZmxvYXQoZmNvbnYsIHByZWMsIHgpIHsKKyAg
dmFyIHByZWMkMSA9IFBlcnZhc2l2ZXMuYWJzKHByZWMpOworICB2YXIgc3RyID0gQ2FtbF9mb3Jt
YXQuY2FtbF9mb3JtYXRfZmxvYXQoZm9ybWF0X29mX2Zjb252KGZjb252LCBwcmVjJDEpLCB4KTsK
KyAgaWYgKGZjb252ICE9PSAvKiBGbG9hdF9GICovMTUpIHsKKyAgICByZXR1cm4gc3RyOworICB9
CisgIGVsc2UgeworICAgIHZhciBsZW4gPSBzdHIubGVuZ3RoOworICAgIHZhciBpc192YWxpZCA9
IGZ1bmN0aW9uIChfaSkgeworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIgaSA9IF9p
OworICAgICAgICBpZiAoaSA9PT0gbGVuKSB7CisgICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICov
MDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2ggPSBDYW1s
X3N0cmluZy5nZXQoc3RyLCBpKTsKKyAgICAgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQ2
IHwgMDsKKyAgICAgICAgICBpZiAoc3dpdGNoZXIgPiAyMyB8fCBzd2l0Y2hlciA8IDApIHsKKyAg
ICAgICAgICAgIGlmIChzd2l0Y2hlciAhPT0gNTUpIHsKKyAgICAgICAgICAgICAgX2kgPSBpICsg
MSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIHRydWUg
Ki8xOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChzd2l0
Y2hlciA+IDIyIHx8IHN3aXRjaGVyIDwgMSkgeworICAgICAgICAgICAgcmV0dXJuIC8qIHRydWUg
Ki8xOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9pID0gaSAr
IDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICB9OworICAgIH07CisgICAgdmFyIG1hdGNoID0gQ2FtbF9mbG9h
dC5jYW1sX2NsYXNzaWZ5X2Zsb2F0KHgpOworICAgIGlmIChtYXRjaCAhPT0gMykgeworICAgICAg
aWYgKG1hdGNoID49IDQpIHsKKyAgICAgICAgcmV0dXJuICJuYW4iOworICAgICAgfQorICAgICAg
ZWxzZSBpZiAoaXNfdmFsaWQoMCkpIHsKKyAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICByZXR1cm4gc3RyICsgIi4iOworICAgICAgfQorICAgIH0KKyAg
ICBlbHNlIGlmICh4IDwgMC4wKSB7CisgICAgICByZXR1cm4gIm5lZ19pbmZpbml0eSI7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgcmV0dXJuICJpbmZpbml0eSI7CisgICAgfQorICB9Cit9CisK
K2Z1bmN0aW9uIGZvcm1hdF9jYW1sX2NoYXIoYykgeworICByZXR1cm4gJCRTdHJpbmcuY29uY2F0
KENoYXIuZXNjYXBlZChjKSwgLyogOjogKi9bCisgICAgICAgICAgICAgICInIiwKKyAgICAgICAg
ICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgIiciLAorICAgICAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24g
c3RyaW5nX29mX2ZtdHR5KGZtdHR5KSB7CisgIHZhciBidWYgPSAvKiByZWNvcmQgKi9bCisgICAg
LyogaW5kICovMCwKKyAgICAvKiBieXRlcyAqL25ldyBBcnJheSgxNikKKyAgXTsKKyAgYnByaW50
X2ZtdHR5KGJ1ZiwgZm10dHkpOworICByZXR1cm4gYnVmZmVyX2NvbnRlbnRzKGJ1Zik7Cit9CisK
K2Z1bmN0aW9uIG1ha2VfcHJpbnRmKF9rLCBvLCBfYWNjLCBfZm10KSB7CisgIHdoaWxlKHRydWUp
IHsKKyAgICB2YXIgZm10ID0gX2ZtdDsKKyAgICB2YXIgYWNjID0gX2FjYzsKKyAgICB2YXIgayA9
IF9rOworICAgIGlmICh0eXBlb2YgZm10ID09PSAibnVtYmVyIikgeworICAgICAgcmV0dXJuIEN1
cnJ5Ll8yKGssIG8sIGFjYyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoIChmbXQu
dGFnIHwgMCkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHZhciByZXN0ID0gZm10
WzBdOworICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrLGFjYyxyZXN0KXsKKyAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICB2YXIgbmV3X2FjYyA9IC8q
IEFjY19kYXRhX2NoYXIgKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICAgICAgICBhY2MsCisg
ICAgICAgICAgICAgICAgICBjCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIHJl
dHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCByZXN0KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0oayxhY2MscmVzdCkpOworICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAg
IHZhciByZXN0JDEgPSBmbXRbMF07CisgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGssYWNj
LHJlc3QkMSl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgICAgICAg
ICAgdmFyIG5ld19hY2NfMDAxID0gZm9ybWF0X2NhbWxfY2hhcihjKTsKKyAgICAgICAgICAgICAg
dmFyIG5ld19hY2MgPSAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAg
ICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICBuZXdfYWNjXzAwMQorICAgICAgICAg
ICAgICAgIF0pOworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2Fj
YywgcmVzdCQxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0oayxhY2MscmVzdCQxKSk7
CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgcmV0dXJuIG1ha2Vfc3RyaW5nX3BhZGRp
bmcoaywgbywgYWNjLCBmbXRbMV0sIGZtdFswXSwgZnVuY3Rpb24gKHN0cikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICByZXR1cm4gbWFrZV9zdHJpbmdfcGFkZGluZyhr
LCBvLCBhY2MsIGZtdFsxXSwgZm10WzBdLCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcpOworICAgICAg
ICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lv
bihrLCBvLCBhY2MsIGZtdFszXSwgZm10WzFdLCBmbXRbMl0sIGNvbnZlcnRfaW50LCBmbXRbMF0p
OworICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2ludF9wYWRkaW5n
X3ByZWNpc2lvbihrLCBvLCBhY2MsIGZtdFszXSwgZm10WzFdLCBmbXRbMl0sIGNvbnZlcnRfaW50
MzIsIGZtdFswXSk7CisgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgcmV0dXJuIG1ha2Vf
aW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFjYywgZm10WzNdLCBmbXRbMV0sIGZtdFsyXSwg
Y29udmVydF9uYXRpdmVpbnQsIGZtdFswXSk7CisgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAg
ICAgcmV0dXJuIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFjYywgZm10WzNdLCBm
bXRbMV0sIGZtdFsyXSwgY29udmVydF9pbnQ2NCwgZm10WzBdKTsKKyAgICAgICAgY2FzZSA4IDog
CisgICAgICAgICAgICB2YXIgayQxID0gazsKKyAgICAgICAgICAgIHZhciBvJDEgPSBvOworICAg
ICAgICAgICAgdmFyIGFjYyQxID0gYWNjOworICAgICAgICAgICAgdmFyIGZtdCQxID0gZm10WzNd
OworICAgICAgICAgICAgdmFyIHBhZCA9IGZtdFsxXTsKKyAgICAgICAgICAgIHZhciBwcmVjID0g
Zm10WzJdOworICAgICAgICAgICAgdmFyIGZjb252ID0gZm10WzBdOworICAgICAgICAgICAgaWYg
KHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJl
YyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAg
ICAgICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252
KXsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocCwgeCkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgc3RyID0gY29udmVydF9mbG9hdChmY29udiwgcCwgeCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3Ry
aW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFj
YyQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252KSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgcmV0dXJu
IChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252KXsKKyAgICAgICAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gY29u
dmVydF9mbG9hdChmY29udiwgNiwgeCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
X3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwg
Zm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfShrJDEsbyQx
LGFjYyQxLGZtdCQxLGZjb252KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBwID0gcHJlY1swXTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEsZm10JDEsZmNv
bnYscCl7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAg
ICAgICAgICB2YXIgc3RyID0gY29udmVydF9mbG9hdChmY29udiwgcCwgeCk7CisgICAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAq
L0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHApKTsKKyAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocGFkLnRhZykgeworICAgICAgICAgICAgICB2
YXIgcGFkdHkgPSBwYWRbMF07CisgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51
bWJlciIpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgICAgICAg
ICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5KXsK
KyAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAodywgcCwgeCkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHksIHcsIGNvbnZlcnRfZmxvYXQo
ZmNvbnYsIHAsIHgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGsk
MSwgbyQxLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQkMSk7Cisg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9KGskMSxvJDEsYWNjJDEsZm10
JDEsZmNvbnYscGFkdHkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEsZm10
JDEsZmNvbnYscGFkdHkpeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh3LCB4
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBjb252ZXJ0X2Zsb2F0KGZjb252LCA2
LCB4KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciRwcmltZSA9IGZpeF9wYWRkaW5nKHBh
ZHR5LCB3LCBzdHIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQx
LCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY2MkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHIkcHJpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCQx
KTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0oayQxLG8kMSxhY2Mk
MSxmbXQkMSxmY29udixwYWR0eSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgcCQxID0gcHJlY1sw
XTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEsZm10JDEs
ZmNvbnYscGFkdHkscCQxKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHcsIHgp
IHsKKyAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0eSwgdywgY29u
dmVydF9mbG9hdChmY29udiwgcCQxLCB4KSk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCQx
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZt
dCQxLGZjb252LHBhZHR5LHAkMSkpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIHcgPSBwYWRbMV07CisgICAgICAg
ICAgICAgIHZhciBwYWR0eSQxID0gcGFkWzBdOworICAgICAgICAgICAgICBpZiAodHlwZW9mIHBy
ZWMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgIT09IDApIHsKKyAg
ICAgICAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29u
dixwYWR0eSQxLHcpeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwLCB4KSB7
CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0eSQxLCB3LCBj
b252ZXJ0X2Zsb2F0KGZjb252LCBwLCB4KSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
KSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfShrJDEs
byQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdykpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24o
ayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0eSQxLHcpeworICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBjb252
ZXJ0X2Zsb2F0KGZjb252LCA2LCB4KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciRwcmlt
ZSA9IGZpeF9wYWRkaW5nKHBhZHR5JDEsIHcsIHN0cik7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18o
NCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciRwcmltZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdykpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICB2YXIgcCQyID0gcHJlY1swXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0
aW9uKGskMSxvJDEsYWNjJDEsZm10JDEsZmNvbnYscGFkdHkkMSx3LHAkMil7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICAgICAgICB2YXIgc3RyID0g
Zml4X3BhZGRpbmcocGFkdHkkMSwgdywgY29udmVydF9mbG9hdChmY29udiwgcCQyLCB4KSk7Cisg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRh
X3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWNjJDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdyxwJDIpKTsKKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAg
ICAgIHZhciByZXN0JDIgPSBmbXRbMF07CisgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGss
YWNjLHJlc3QkMil7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGIpIHsKKyAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2Nr
Ll9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYiA/ICJ0cnVlIiA6ICJmYWxzZSIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSksIHJlc3QkMik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJl
c3QkMikpOworICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICBfZm10ID0gZm10WzBdOwor
ICAgICAgICAgICAgX2FjYyA9IC8qIEFjY19mbHVzaCAqL0Jsb2NrLl9fKDcsIFthY2NdKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAg
IF9mbXQgPSBmbXRbMV07CisgICAgICAgICAgICBfYWNjID0gLyogQWNjX3N0cmluZ19saXRlcmFs
ICovQmxvY2suX18oMiwgWworICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICBm
bXRbMF0KKyAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBfZm10ID0gZm10WzFdOworICAgICAgICAgICAg
X2FjYyA9IC8qIEFjY19jaGFyX2xpdGVyYWwgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAg
ICAgYWNjLAorICAgICAgICAgICAgICAgIGZtdFswXQorICAgICAgICAgICAgICBdKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIHZh
ciByZXN0JDMgPSBmbXRbMl07CisgICAgICAgICAgICB2YXIgdHkgPSBzdHJpbmdfb2ZfZm10dHko
Zm10WzFdKTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2MscmVzdCQzLHR5KXsK
KyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHJldHVybiBt
YWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCByZXN0JDMpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgfShrLGFjYyxyZXN0JDMsdHkpKTsKKyAgICAgICAgY2FzZSAxNCA6IAor
ICAgICAgICAgICAgdmFyIHJlc3QkNCA9IGZtdFsyXTsKKyAgICAgICAgICAgIHZhciBmbXR0eSA9
IGZtdFsxXTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2MsZm10dHkscmVzdCQ0
KXsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIGFjYywgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNv
bmNhdF9mbXQocmVjYXN0KHBhcmFtWzBdLCBmbXR0eSksIHJlc3QkNCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgfShrLGFjYyxmbXR0eSxyZXN0JDQpKTsKKyAgICAgICAgY2FzZSAxNSA6
IAorICAgICAgICAgICAgdmFyIHJlc3QkNSA9IGZtdFswXTsKKyAgICAgICAgICAgIHJldHVybiAo
ZnVuY3Rpb24oayxhY2MscmVzdCQ1KXsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZiwg
eCkgeworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2RlbGF5
ICovQmxvY2suX18oNiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAobykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8yKGYsIG8sIHgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIHJlc3QkNSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJlc3QkNSkpOworICAgICAgICBjYXNlIDE2
IDogCisgICAgICAgICAgICB2YXIgcmVzdCQ2ID0gZm10WzBdOworICAgICAgICAgICAgcmV0dXJu
IChmdW5jdGlvbihrLGFjYyxyZXN0JDYpeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChm
KSB7CisgICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGVsYXkg
Ki9CbG9jay5fXyg2LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIHJl
c3QkNik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJlc3QkNikpOworICAg
ICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBfZm10ID0gZm10WzFdOworICAgICAgICAgICAg
X2FjYyA9IC8qIEFjY19mb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAg
ICAgICBhY2MsCisgICAgICAgICAgICAgICAgZm10WzBdCisgICAgICAgICAgICAgIF0pOworICAg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgICAg
dmFyIG1hdGNoID0gZm10WzBdOworICAgICAgICAgICAgaWYgKG1hdGNoLnRhZykgeworICAgICAg
ICAgICAgICB2YXIgcmVzdCQ3ID0gZm10WzFdOworICAgICAgICAgICAgICB2YXIgayRwcmltZSA9
IChmdW5jdGlvbihrLGFjYyxyZXN0JDcpeworICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
ayRwcmltZShrb2MsIGthY2MpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYo
aywga29jLCAvKiBBY2NfZm9ybWF0dGluZ19nZW4gKi9CbG9jay5fXygxLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBBY2Nfb3Blbl9ib3ggKi9CbG9jay5fXygxLCBba2FjY10pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSksIHJlc3QkNyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfShr
LGFjYyxyZXN0JDcpKTsKKyAgICAgICAgICAgICAgX2ZtdCA9IG1hdGNoWzBdWzBdOworICAgICAg
ICAgICAgICBfYWNjID0gLyogRW5kX29mX2FjYyAqLzA7CisgICAgICAgICAgICAgIF9rID0gayRw
cmltZTsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICB2YXIgcmVzdCQ4ID0gZm10
WzFdOworICAgICAgICAgICAgICB2YXIgayRwcmltZSQxID0gKGZ1bmN0aW9uKGssYWNjLHJlc3Qk
OCl7CisgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBrJHByaW1lJDEoa29jLCBrYWNjKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIGtvYywgLyogQWNjX2Zvcm1h
dHRpbmdfZ2VuICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWNjX29wZW5fdGFnICovQmxv
Y2suX18oMCwgW2thY2NdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCByZXN0JDgp
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0oayxhY2MscmVzdCQ4KSk7CisgICAg
ICAgICAgICAgIF9mbXQgPSBtYXRjaFswXVswXTsKKyAgICAgICAgICAgICAgX2FjYyA9IC8qIEVu
ZF9vZl9hY2MgKi8wOworICAgICAgICAgICAgICBfayA9IGskcHJpbWUkMTsKKyAgICAgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5t
bCIsCisgICAgICAgICAgICAgICAgICAgIDE0NDksCisgICAgICAgICAgICAgICAgICAgIDQKKyAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICBjYXNlIDIwIDog
CisgICAgICAgICAgICB2YXIgcmVzdCQ5ID0gZm10WzJdOworICAgICAgICAgICAgdmFyIG5ld19h
Y2MgPSAvKiBBY2NfaW52YWxpZF9hcmcgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAg
YWNjLAorICAgICAgICAgICAgICAgICJQcmludGY6IGJhZCBjb252ZXJzaW9uICVbIgorICAgICAg
ICAgICAgICBdKTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxyZXN0JDksbmV3X2Fj
Yyl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1
cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgcmVzdCQ5KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0oayxyZXN0JDksbmV3X2FjYykpOworICAgICAgICBjYXNlIDIxIDogCisgICAg
ICAgICAgICB2YXIgcmVzdCQxMCA9IGZtdFsxXTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rp
b24oayxhY2MscmVzdCQxMCl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG4pIHsKKyAg
ICAgICAgICAgICAgdmFyIG5ld19hY2NfMDAxID0gQ2FtbF9mb3JtYXQuY2FtbF9mb3JtYXRfaW50
KCIldSIsIG4pOworICAgICAgICAgICAgICB2YXIgbmV3X2FjYyA9IC8qIEFjY19kYXRhX3N0cmlu
ZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAg
ICAgIG5ld19hY2NfMDAxCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIHJldHVy
biBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCByZXN0JDEwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0oayxhY2MscmVzdCQxMCkpOworICAgICAgICBjYXNlIDIyIDogCisgICAgICAg
ICAgICB2YXIgcmVzdCQxMSA9IGZtdFswXTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24o
ayxhY2MscmVzdCQxMSl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAg
ICAgICAgICAgdmFyIG5ld19hY2MgPSAvKiBBY2NfZGF0YV9jaGFyICovQmxvY2suX18oNSwgWwor
ICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAgYworICAgICAgICAgICAg
ICAgIF0pOworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywg
cmVzdCQxMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJlc3QkMTEpKTsK
KyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgICAgdmFyIGskMiA9IGs7CisgICAgICAgICAg
ICB2YXIgbyQyID0gbzsKKyAgICAgICAgICAgIHZhciBhY2MkMiA9IGFjYzsKKyAgICAgICAgICAg
IHZhciBpZ24gPSBmbXRbMF07CisgICAgICAgICAgICB2YXIgZm10JDIgPSBmbXRbMV07CisgICAg
ICAgICAgICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgc3dp
dGNoIChpZ24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE1MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAg
ICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfaW52YWxpZF9hcmcoayQyLCBvJDIsIGFjYyQyLCBm
bXQkMik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBzd2l0Y2ggKGlnbi50YWcgfCAwKSB7
CisgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlX2Zyb21fZm10dHkoayQyLCBvJDIsIGFjYyQyLCBpZ25bMV0sIGZtdCQyKTsKKyAgICAgICAg
ICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAg
ICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICBj
YXNlIDYgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAgICBjYXNl
IDkgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlX2ludmFsaWRfYXJnKGskMiwgbyQyLCBhY2MkMiwgZm10JDIpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgMjQg
OiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2N1c3RvbShrLCBvLCBhY2MsIGZtdFsyXSwgZm10
WzBdLCBDdXJyeS5fMShmbXRbMV0sIC8qICgpICovMCkpOworICAgICAgICAKKyAgICAgIH0KKyAg
ICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIGZtdHR5
LCBmbXQpIHsKKyAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4g
bWFrZV9pbnZhbGlkX2FyZyhrLCBvLCBhY2MsIGZtdCk7CisgIH0KKyAgZWxzZSB7CisgICAgc3dp
dGNoIChmbXR0eS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICB2YXIgcmVz
dCA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCwgZm10KTsKKyAgICAgICAg
ICB9OworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgdmFyIHJlc3QkMSA9IGZtdHR5WzBdOwor
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9m
cm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQxLCBmbXQpOworICAgICAgICAgIH07CisgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICB2YXIgcmVzdCQyID0gZm10dHlbMF07CisgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywg
bywgYWNjLCByZXN0JDIsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgMyA6IAorICAg
ICAgICAgIHZhciByZXN0JDMgPSBmbXR0eVswXTsKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJlc3Qk
MywgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgdmFyIHJl
c3QkNCA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQ0LCBmbXQpOworICAg
ICAgICAgIH07CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICB2YXIgcmVzdCQ1ID0gZm10dHlb
MF07CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlX2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0JDUsIGZtdCk7CisgICAgICAgICAgfTsKKyAg
ICAgIGNhc2UgNiA6IAorICAgICAgICAgIHZhciByZXN0JDYgPSBmbXR0eVswXTsKKyAgICAgICAg
ICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0
eShrLCBvLCBhY2MsIHJlc3QkNiwgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA3IDog
CisgICAgICAgICAgdmFyIHJlc3QkNyA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywg
cmVzdCQ3LCBmbXQpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICB2
YXIgcmVzdCQ4ID0gZm10dHlbMV07CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0JDgsIGZtdCk7
CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgOSA6IAorICAgICAgICAgIHZhciByZXN0JDkgPSBm
bXR0eVsyXTsKKyAgICAgICAgICB2YXIgdHkgPSB0cmFucyhzeW1tKGZtdHR5WzBdKSwgZm10dHlb
MV0pOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4g
bWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNh
dF9mbXR0eSh0eSwgcmVzdCQ5KSwgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSAxMCA6
IAorICAgICAgICAgIHZhciByZXN0JDEwID0gZm10dHlbMF07CisgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uIChfLCBfJDEpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywg
bywgYWNjLCByZXN0JDEwLCBmbXQpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDExIDogCisg
ICAgICAgICAgdmFyIHJlc3QkMTEgPSBmbXR0eVswXTsKKyAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJl
c3QkMTEsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICB2
YXIgcmVzdCQxMiA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQxMiwgZm10
KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgIHRocm93IFsKKyAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1s
IiwKKyAgICAgICAgICAgICAgICAgIDE1NDAsCisgICAgICAgICAgICAgICAgICAzMQorICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0
X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgImNhbWxpbnRl
cm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAxNTQxLAorICAgICAgICAgICAgICAg
ICAgMzEKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgIF07CisgICAgICAKKyAgICB9
CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9pbnZhbGlkX2FyZyhrLCBvLCBhY2MsIGZtdCkgewor
ICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2ludmFsaWRfYXJnICovQmxvY2suX18o
OCwgWworICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAiUHJpbnRmOiBiYWQg
Y29udmVyc2lvbiAlXyIKKyAgICAgICAgICAgICAgXSksIGZtdCk7Cit9CisKK2Z1bmN0aW9uIG1h
a2Vfc3RyaW5nX3BhZGRpbmcoaywgbywgYWNjLCBmbXQsIHBhZCwgdHJhbnMpIHsKKyAgaWYgKHR5
cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAg
ICB2YXIgbmV3X2FjY18wMDEgPSBDdXJyeS5fMSh0cmFucywgeCk7CisgICAgICB2YXIgbmV3X2Fj
YyA9IC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICBhY2MsCisg
ICAgICAgICAgbmV3X2FjY18wMDEKKyAgICAgICAgXSk7CisgICAgICByZXR1cm4gbWFrZV9wcmlu
dGYoaywgbywgbmV3X2FjYywgZm10KTsKKyAgICB9OworICB9CisgIGVsc2UgaWYgKHBhZC50YWcp
IHsKKyAgICB2YXIgcGFkdHkgPSBwYWRbMF07CisgICAgcmV0dXJuIGZ1bmN0aW9uICh3LCB4KSB7
CisgICAgICB2YXIgbmV3X2FjY18wMDEgPSBmaXhfcGFkZGluZyhwYWR0eSwgdywgQ3VycnkuXzEo
dHJhbnMsIHgpKTsKKyAgICAgIHZhciBuZXdfYWNjID0gLyogQWNjX2RhdGFfc3RyaW5nICovQmxv
Y2suX18oNCwgWworICAgICAgICAgIGFjYywKKyAgICAgICAgICBuZXdfYWNjXzAwMQorICAgICAg
ICBdKTsKKyAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCBmbXQpOworICAg
IH07CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIHdpZHRoID0gcGFkWzFdOworICAgIHZhciBwYWR0
eSQxID0gcGFkWzBdOworICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgdmFyIG5ld19h
Y2NfMDAxID0gZml4X3BhZGRpbmcocGFkdHkkMSwgd2lkdGgsIEN1cnJ5Ll8xKHRyYW5zLCB4KSk7
CisgICAgICB2YXIgbmV3X2FjYyA9IC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsK
KyAgICAgICAgICBhY2MsCisgICAgICAgICAgbmV3X2FjY18wMDEKKyAgICAgICAgXSk7CisgICAg
ICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgZm10KTsKKyAgICB9OworICB9Cit9
CisKK2Z1bmN0aW9uIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFjYywgZm10LCBw
YWQsIHByZWMsIHRyYW5zLCBpY29udikgeworICBpZiAodHlwZW9mIHBhZCA9PT0gIm51bWJlciIp
IHsKKyAgICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7CisgICAgICBpZiAocHJlYyAh
PT0gMCkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHAsIHgpIHsKKyAgICAgICAgICB2YXIg
c3RyID0gZml4X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSk7Cisg
ICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Js
b2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQpOworICAgICAgICB9
OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkgewor
ICAgICAgICAgIHZhciBzdHIgPSBDdXJyeS5fMih0cmFucywgaWNvbnYsIHgpOworICAgICAgICAg
IHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAgICAgfTsKKyAgICAg
IH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgcCA9IHByZWNbMF07CisgICAgICByZXR1
cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAgICAgdmFyIHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uKHAs
IEN1cnJ5Ll8yKHRyYW5zLCBpY29udiwgeCkpOworICAgICAgICByZXR1cm4gbWFrZV9wcmludGYo
aywgbywgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAg
ICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAg
ICAgXSksIGZtdCk7CisgICAgICB9OworICAgIH0KKyAgfQorICBlbHNlIGlmIChwYWQudGFnKSB7
CisgICAgdmFyIHBhZHR5ID0gcGFkWzBdOworICAgIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51bWJl
ciIpIHsKKyAgICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAo
dywgcCwgeCkgeworICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0eSwgdywgZml4
X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSkpOworICAgICAgICAg
IHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAgICAgfTsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHcsIHgpIHsKKyAgICAg
ICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHksIHcsIEN1cnJ5Ll8yKHRyYW5zLCBpY29u
diwgeCkpOworICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9z
dHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsK
KyAgICAgICAgfTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgcCQxID0g
cHJlY1swXTsKKyAgICAgIHJldHVybiBmdW5jdGlvbiAodywgeCkgeworICAgICAgICB2YXIgc3Ry
ID0gZml4X3BhZGRpbmcocGFkdHksIHcsIGZpeF9pbnRfcHJlY2lzaW9uKHAkMSwgQ3VycnkuXzIo
dHJhbnMsIGljb252LCB4KSkpOworICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyog
QWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgIGFj
YywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgXSksIGZt
dCk7CisgICAgICB9OworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICB2YXIgdyA9IHBhZFsxXTsK
KyAgICB2YXIgcGFkdHkkMSA9IHBhZFswXTsKKyAgICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1i
ZXIiKSB7CisgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KHAsIHgpIHsKKyAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHkkMSwgdywgZml4
X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSkpOworICAgICAgICAg
IHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAgICAgfTsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAgICAg
ICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHkkMSwgdywgQ3VycnkuXzIodHJhbnMsIGljb252
LCB4KSk7CisgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0
cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQpOwor
ICAgICAgICB9OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBwJDIgPSBw
cmVjWzBdOworICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgIHZhciBzdHIgPSBm
aXhfcGFkZGluZyhwYWR0eSQxLCB3LCBmaXhfaW50X3ByZWNpc2lvbihwJDIsIEN1cnJ5Ll8yKHRy
YW5zLCBpY29udiwgeCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFj
Y19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICBhY2Ms
CisgICAgICAgICAgICAgICAgICAgICAgc3RyCisgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQp
OworICAgICAgfTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9jdXN0b20oaywgbywg
YWNjLCByZXN0LCBhcml0eSwgZikgeworICBpZiAoYXJpdHkpIHsKKyAgICB2YXIgYXJpdHkkMSA9
IGFyaXR5WzBdOworICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgcmV0dXJuIG1ha2Vf
Y3VzdG9tKGssIG8sIGFjYywgcmVzdCwgYXJpdHkkMSwgQ3VycnkuXzEoZiwgeCkpOworICAgIH07
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRh
X3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAg
ICAgICAgICAgIGYKKyAgICAgICAgICAgICAgICBdKSwgcmVzdCk7CisgIH0KK30KKworZnVuY3Rp
b24gb3V0cHV0X2FjYyhvLCBfYWNjKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgYWNjID0g
X2FjYzsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHR5cGVvZiBhY2MgPT09ICJudW1iZXIi
KSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3
aXRjaCAoYWNjLnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICB2YXIg
cyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdChhY2NbMV0pOworICAgICAgICAgICAgb3V0cHV0
X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMub3V0cHV0X3N0
cmluZyhvLCBzKTsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBh
Y2NbMV07CisgICAgICAgICAgICB2YXIgcCA9IGFjY1swXTsKKyAgICAgICAgICAgIG91dHB1dF9h
Y2MobywgcCk7CisgICAgICAgICAgICBpZiAobWF0Y2gudGFnKSB7CisgICAgICAgICAgICAgIFBl
cnZhc2l2ZXMub3V0cHV0X3N0cmluZyhvLCAiQFsiKTsKKyAgICAgICAgICAgICAgX2FjYyA9IG1h
dGNoWzBdOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIFBlcnZhc2l2ZXMub3V0
cHV0X3N0cmluZyhvLCAiQHsiKTsKKyAgICAgICAgICAgICAgX2FjYyA9IG1hdGNoWzBdOworICAg
ICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICBjYXNlIDQgOiAKKyAg
ICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMyA6
IAorICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2Nb
MF0pOworICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGFjY1sxXSwgbyk7CisgICAgICAgIGNh
c2UgNyA6IAorICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgICAg
cmV0dXJuIENhbWxfaW8uY2FtbF9tbF9mbHVzaChvKTsKKyAgICAgICAgY2FzZSA4IDogCisgICAg
ICAgICAgICBvdXRwdXRfYWNjKG8sIGFjY1swXSk7CisgICAgICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAor
ICAgICAgICAgICAgICAgICAgYWNjWzFdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgCisg
ICAgICB9CisgICAgfQorICAgIHN3aXRjaCAoZXhpdCkgeworICAgICAgY2FzZSAxIDogCisgICAg
ICAgICAgb3V0cHV0X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgIHJldHVybiBQZXJ2YXNpdmVz
Lm91dHB1dF9zdHJpbmcobywgYWNjWzFdKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIG91
dHB1dF9hY2MobywgYWNjWzBdKTsKKyAgICAgICAgICByZXR1cm4gQ2FtbF9pby5jYW1sX21sX291
dHB1dF9jaGFyKG8sIGFjY1sxXSk7CisgICAgICAKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9u
IGJ1ZnB1dF9hY2MoYiwgX2FjYykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGFjYyA9IF9h
Y2M7CisgICAgdmFyIGV4aXQgPSAwOworICAgIGlmICh0eXBlb2YgYWNjID09PSAibnVtYmVyIikg
eworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzd2l0
Y2ggKGFjYy50YWcgfCAwKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgdmFyIHMg
PSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoYWNjWzFdKTsKKyAgICAgICAgICAgIGJ1ZnB1dF9h
Y2MoYiwgYWNjWzBdKTsKKyAgICAgICAgICAgIHJldHVybiBCdWZmZXIuYWRkX3N0cmluZyhiLCBz
KTsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBhY2NbMV07Cisg
ICAgICAgICAgICB2YXIgcCA9IGFjY1swXTsKKyAgICAgICAgICAgIGJ1ZnB1dF9hY2MoYiwgcCk7
CisgICAgICAgICAgICBpZiAobWF0Y2gudGFnKSB7CisgICAgICAgICAgICAgIEJ1ZmZlci5hZGRf
c3RyaW5nKGIsICJAWyIpOworICAgICAgICAgICAgICBfYWNjID0gbWF0Y2hbMF07CisgICAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcoYiwgIkB7Iik7Cisg
ICAgICAgICAgICAgIF9hY2MgPSBtYXRjaFswXTsKKyAgICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIDIgOiAKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBleGl0ID0gMTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgY2FzZSA1IDogCisg
ICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDYg
OiAKKyAgICAgICAgICAgIGJ1ZnB1dF9hY2MoYiwgYWNjWzBdKTsKKyAgICAgICAgICAgIHJldHVy
biBDdXJyeS5fMShhY2NbMV0sIGIpOworICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIF9h
Y2MgPSBhY2NbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDgg
OiAKKyAgICAgICAgICAgIGJ1ZnB1dF9hY2MoYiwgYWNjWzBdKTsKKyAgICAgICAgICAgIHRocm93
IFsKKyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJn
dW1lbnQsCisgICAgICAgICAgICAgICAgICBhY2NbMV0KKyAgICAgICAgICAgICAgICBdOworICAg
ICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgc3dpdGNoIChleGl0KSB7CisgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICBidWZwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIEJ1
ZmZlci5hZGRfc3RyaW5nKGIsIGFjY1sxXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICBi
dWZwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5hZGRfY2hhcihi
LCBhY2NbMV0pOworICAgICAgCisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBzdHJwdXRfYWNj
KGIsIF9hY2MpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBhY2MgPSBfYWNjOworICAgIHZh
ciBleGl0ID0gMDsKKyAgICBpZiAodHlwZW9mIGFjYyA9PT0gIm51bWJlciIpIHsKKyAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoIChhY2MudGFn
IHwgMCkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHZhciBzID0gc3RyaW5nX29m
X2Zvcm1hdHRpbmdfbGl0KGFjY1sxXSk7CisgICAgICAgICAgICBzdHJwdXRfYWNjKGIsIGFjY1sw
XSk7CisgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmFkZF9zdHJpbmcoYiwgcyk7CisgICAgICAg
IGNhc2UgMSA6IAorICAgICAgICAgICAgdmFyIG1hdGNoID0gYWNjWzFdOworICAgICAgICAgICAg
dmFyIHAgPSBhY2NbMF07CisgICAgICAgICAgICBzdHJwdXRfYWNjKGIsIHApOworICAgICAgICAg
ICAgaWYgKG1hdGNoLnRhZykgeworICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyhiLCAi
QFsiKTsKKyAgICAgICAgICAgICAgX2FjYyA9IG1hdGNoWzBdOworICAgICAgICAgICAgICBjb250
aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nKGIsICJAeyIpOworICAgICAgICAgICAg
ICBfYWNjID0gbWF0Y2hbMF07CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
ICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyIDog
CisgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAg
ZXhpdCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2IDogCisgICAgICAg
ICAgICBzdHJwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmFk
ZF9zdHJpbmcoYiwgQ3VycnkuXzEoYWNjWzFdLCAvKiAoKSAqLzApKTsKKyAgICAgICAgY2FzZSA3
IDogCisgICAgICAgICAgICBfYWNjID0gYWNjWzBdOworICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICBzdHJwdXRfYWNjKGIsIGFjY1swXSk7
CisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAgICAgYWNjWzFdCisgICAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIHN3aXRjaCAoZXhp
dCkgeworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgc3RycHV0X2FjYyhiLCBhY2NbMF0pOwor
ICAgICAgICAgIHJldHVybiBCdWZmZXIuYWRkX3N0cmluZyhiLCBhY2NbMV0pOworICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgc3RycHV0X2FjYyhiLCBhY2NbMF0pOworICAgICAgICAgIHJldHVy
biBCdWZmZXIuYWRkX2NoYXIoYiwgYWNjWzFdKTsKKyAgICAgIAorICAgIH0KKyAgfTsKK30KKwor
ZnVuY3Rpb24gZmFpbHdpdGhfbWVzc2FnZShwYXJhbSkgeworICB2YXIgYnVmID0gQnVmZmVyLmNy
ZWF0ZSgyNTYpOworICB2YXIgayA9IGZ1bmN0aW9uIChfLCBhY2MpIHsKKyAgICBzdHJwdXRfYWNj
KGJ1ZiwgYWNjKTsKKyAgICB2YXIgcyA9IEJ1ZmZlci5jb250ZW50cyhidWYpOworICAgIHRocm93
IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAg
IHMKKyAgICAgICAgXTsKKyAgfTsKKyAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIC8qICgpICovMCwg
LyogRW5kX29mX2FjYyAqLzAsIHBhcmFtWzBdKTsKK30KKworZnVuY3Rpb24gb3Blbl9ib3hfb2Zf
c3RyaW5nKHN0cikgeworICBpZiAoc3RyID09PSAiIikgeworICAgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAvKiBQcF9ib3ggKi80CisgICAgICAgICAg
XTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgbGVuID0gc3RyLmxlbmd0aDsKKyAgICB2YXIgaW52
YWxpZF9ib3ggPSBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gQ3VycnkuXzEoZmFpbHdpdGhf
bWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xp
dGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxp
ZCBib3ggZGVzY3JpcHRpb24gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9z
dHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBO
b19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9m
b3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGJveCBkZXNjcmlw
dGlvbiAlUyIKKyAgICAgICAgICAgICAgICAgICAgXSksIHN0cik7CisgICAgfTsKKyAgICB2YXIg
cGFyc2Vfc3BhY2VzID0gZnVuY3Rpb24gKF9pKSB7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAg
ICAgIHZhciBpID0gX2k7CisgICAgICAgIGlmIChpID09PSBsZW4pIHsKKyAgICAgICAgICByZXR1
cm4gaTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2ggPSBD
YW1sX3N0cmluZy5nZXQoc3RyLCBpKTsKKyAgICAgICAgICBpZiAobWF0Y2ggIT09IDkpIHsKKyAg
ICAgICAgICAgIGlmIChtYXRjaCAhPT0gMzIpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgX2kgPSBpICsg
MSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX2kgPSBp
ICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgIH07CisgICAgfTsKKyAgICB2YXIgcGFyc2VfbHdvcmQgPSBm
dW5jdGlvbiAoXywgX2opIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFyIGogPSBf
ajsKKyAgICAgICAgaWYgKGogPT09IGxlbikgeworICAgICAgICAgIHJldHVybiBqOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdl
dChzdHIsIGopOworICAgICAgICAgIGlmIChtYXRjaCA+IDEyMiB8fCBtYXRjaCA8IDk3KSB7Cisg
ICAgICAgICAgICByZXR1cm4gajsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBfaiA9IGogKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHZhciBw
YXJzZV9pbnQgPSBmdW5jdGlvbiAoXywgX2opIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAg
ICAgdmFyIGogPSBfajsKKyAgICAgICAgaWYgKGogPT09IGxlbikgeworICAgICAgICAgIHJldHVy
biBqOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBtYXRjaCA9IENh
bWxfc3RyaW5nLmdldChzdHIsIGopOworICAgICAgICAgIGlmIChtYXRjaCA+PSA0OCkgeworICAg
ICAgICAgICAgaWYgKG1hdGNoID49IDU4KSB7CisgICAgICAgICAgICAgIHJldHVybiBqOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9qID0gaiArIDEg
fCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChtYXRjaCAhPT0gNDUpIHsKKyAg
ICAgICAgICAgIHJldHVybiBqOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIF9qID0gaiArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9OworICAgIH07CisgICAgdmFyIHdz
dGFydCA9IHBhcnNlX3NwYWNlcygwKTsKKyAgICB2YXIgd2VuZCA9IHBhcnNlX2x3b3JkKHdzdGFy
dCwgd3N0YXJ0KTsKKyAgICB2YXIgYm94X25hbWUgPSAkJFN0cmluZy5zdWIoc3RyLCB3c3RhcnQs
IHdlbmQgLSB3c3RhcnQgfCAwKTsKKyAgICB2YXIgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzKHdlbmQp
OworICAgIHZhciBuZW5kID0gcGFyc2VfaW50KG5zdGFydCwgbnN0YXJ0KTsKKyAgICB2YXIgaW5k
ZW50OworICAgIGlmIChuc3RhcnQgPT09IG5lbmQpIHsKKyAgICAgIGluZGVudCA9IDA7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgdHJ5IHsKKyAgICAgICAgaW5kZW50ID0gQ2FtbF9mb3JtYXQu
Y2FtbF9pbnRfb2Zfc3RyaW5nKCQkU3RyaW5nLnN1YihzdHIsIG5zdGFydCwgbmVuZCAtIG5zdGFy
dCB8IDApKTsKKyAgICAgIH0KKyAgICAgIGNhdGNoIChleG4peworICAgICAgICBpZiAoZXhuWzBd
ID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7CisgICAgICAgICAgaW5kZW50
ID0gaW52YWxpZF9ib3goLyogKCkgKi8wKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICB0aHJvdyBleG47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgdmFyIGV4
cF9lbmQgPSBwYXJzZV9zcGFjZXMobmVuZCk7CisgICAgaWYgKGV4cF9lbmQgIT09IGxlbikgewor
ICAgICAgaW52YWxpZF9ib3goLyogKCkgKi8wKTsKKyAgICB9CisgICAgdmFyIGJveF90eXBlOwor
ICAgIHN3aXRjaCAoYm94X25hbWUpIHsKKyAgICAgIGNhc2UgIiIgOiAKKyAgICAgIGNhc2UgImIi
IDogCisgICAgICAgICAgYm94X3R5cGUgPSAvKiBQcF9ib3ggKi80OworICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAiaCIgOiAKKyAgICAgICAgICBib3hfdHlwZSA9IC8qIFBwX2hib3ggKi8w
OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAiaG92IiA6IAorICAgICAgICAgIGJveF90
eXBlID0gLyogUHBfaG92Ym94ICovMzsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgImh2
IiA6IAorICAgICAgICAgIGJveF90eXBlID0gLyogUHBfaHZib3ggKi8yOworICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAidiIgOiAKKyAgICAgICAgICBib3hfdHlwZSA9IC8qIFBwX3Zib3gg
Ki8xOworICAgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgYm94X3R5cGUg
PSBpbnZhbGlkX2JveCgvKiAoKSAqLzApOworICAgIH0KKyAgICByZXR1cm4gLyogdHVwbGUgKi9b
CisgICAgICAgICAgICBpbmRlbnQsCisgICAgICAgICAgICBib3hfdHlwZQorICAgICAgICAgIF07
CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9wYWRkaW5nX2ZtdF9lYmIocGFkLCBmbXQpIHsKKyAg
aWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8qIFBhZGRpbmdfZm10
X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgZm10
CisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIGlmIChwYWQudGFnKSB7CisgICAgcmV0dXJuIC8q
IFBhZGRpbmdfZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIEFyZ19wYWRkaW5nICovQmxvY2su
X18oMSwgW3BhZFswXV0pLAorICAgICAgICAgICAgZm10CisgICAgICAgICAgXTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gLyogUGFkZGluZ19mbXRfRUJCICovWworICAgICAgICAgICAgLyog
TGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgcGFkWzBdLAorICAg
ICAgICAgICAgICAgIHBhZFsxXQorICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgIGZtdAor
ICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9wcmVjaXNpb25fZm10X2ViYihw
cmVjLCBmbXQpIHsKKyAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgIGlmIChw
cmVjICE9PSAwKSB7CisgICAgICByZXR1cm4gLyogUHJlY2lzaW9uX2ZtdF9FQkIgKi9bCisgICAg
ICAgICAgICAgIC8qIEFyZ19wcmVjaXNpb24gKi8xLAorICAgICAgICAgICAgICBmbXQKKyAgICAg
ICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIFByZWNpc2lvbl9m
bXRfRUJCICovWworICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAg
ICAgICBmbXQKKyAgICAgICAgICAgIF07CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVy
biAvKiBQcmVjaXNpb25fZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExpdF9wcmVjaXNpb24g
Ki9bcHJlY1swXV0sCisgICAgICAgICAgICBmbXQKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1
bmN0aW9uIG1ha2VfcGFkcHJlY19mbXRfZWJiKHBhZCwgcHJlYywgZm10KSB7CisgIHZhciBtYXRj
aCA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIocHJlYywgZm10KTsKKyAgdmFyIGZtdCRwcmltZSA9
IG1hdGNoWzFdOworICB2YXIgcHJlYyQxID0gbWF0Y2hbMF07CisgIGlmICh0eXBlb2YgcGFkID09
PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdF9FQkIgKi9bCisgICAgICAg
ICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgIHByZWMkMSwKKyAgICAgICAgICAg
IGZtdCRwcmltZQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSBpZiAocGFkLnRhZykgeworICAg
IHJldHVybiAvKiBQYWRwcmVjX2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAvKiBBcmdfcGFkZGlu
ZyAqL0Jsb2NrLl9fKDEsIFtwYWRbMF1dKSwKKyAgICAgICAgICAgIHByZWMkMSwKKyAgICAgICAg
ICAgIGZtdCRwcmltZQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8q
IFBhZHByZWNfZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExpdF9wYWRkaW5nICovQmxvY2su
X18oMCwgWworICAgICAgICAgICAgICAgIHBhZFswXSwKKyAgICAgICAgICAgICAgICBwYWRbMV0K
KyAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICBwcmVjJDEsCisgICAgICAgICAgICBmbXQk
cHJpbWUKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGZtdF9lYmJfb2Zfc3RyaW5n
KGxlZ2FjeV9iZWhhdmlvciwgc3RyKSB7CisgIHZhciBsZWdhY3lfYmVoYXZpb3IkMSA9IGxlZ2Fj
eV9iZWhhdmlvciA/IGxlZ2FjeV9iZWhhdmlvclswXSA6IC8qIHRydWUgKi8xOworICB2YXIgaW52
YWxpZF9mb3JtYXRfbWVzc2FnZSA9IGZ1bmN0aW9uIChzdHJfaW5kLCBtc2cpIHsKKyAgICByZXR1
cm4gQ3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAg
ICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgLyog
Q2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5n
X2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEludF9kICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFN0cmluZyAqL0Jsb2NrLl9fKDIsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAg
ICAgICAiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIgorICAg
ICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2luZCwgbXNnKTsKKyAgfTsKKyAgdmFyIGludmFs
aWRfZm9ybWF0X3dpdGhvdXQgPSBmdW5jdGlvbiAoc3RyX2luZCwgYywgcykgeworICAgIHJldHVy
biBDdXJyeS5fNChmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAg
ICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBD
YW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICI6IGF0IGNoYXJhY3RlciBudW1iZXIgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogSW50ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIsICciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIENoYXIgKi9CbG9jay5fXygwLCBbLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9j
ay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIicgd2l0aG91dCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogU3RyaW5nICovQmxvY2suX18oMiwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9m
b3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSld
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
KQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF0p
LAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBu
dW1iZXIgJWQsICclYycgd2l0aG91dCAlcyIKKyAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHN0
cl9pbmQsIGMsIHMpOworICB9OworICB2YXIgZXhwZWN0ZWRfY2hhcmFjdGVyID0gZnVuY3Rpb24g
KHN0cl9pbmQsIGV4cGVjdGVkLCByZWFkKSB7CisgICAgcmV0dXJuIEN1cnJ5Ll80KGZhaWx3aXRo
X21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0
ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBm
b3JtYXQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2su
X18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18o
MTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXQgY2hhcmFjdGVyIG51
bWJlciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5f
Xyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAq
L0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiwgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmcg
Ki9CbG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGV4cGVjdGVkLCByZWFkICIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1s
X2NoYXIgKi9CbG9jay5fXygxLCBbLyogRW5kX29mX2Zvcm1hdCAqLzBdKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKQor
ICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBm
b3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVkLCByZWFkICVDIgor
ICAgICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2luZCwgZXhwZWN0ZWQsIHJlYWQpOworICB9
OworICB2YXIgY29tcHV0ZV9pbnRfY29udiA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBf
cGx1cywgX3NoYXJwLCBfc3BhY2UsIHN5bWIpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2
YXIgc3BhY2UgPSBfc3BhY2U7CisgICAgICB2YXIgc2hhcnAgPSBfc2hhcnA7CisgICAgICB2YXIg
cGx1cyA9IF9wbHVzOworICAgICAgdmFyIGV4aXQgPSAwOworICAgICAgdmFyIGV4aXQkMSA9IDA7
CisgICAgICBpZiAocGx1cyAhPT0gMCkgeworICAgICAgICBpZiAoc2hhcnAgIT09IDApIHsKKyAg
ICAgICAgICBleGl0JDEgPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNwYWNlICE9
PSAwKSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo
c3ltYiAhPT0gMTAwKSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDEwNSkgeworICAgICAgICAg
ICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
cmV0dXJuIC8qIEludF9waSAqLzQ7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiAvKiBJbnRfcGQgKi8xOworICAgICAgICB9CisgICAgICB9
CisgICAgICBlbHNlIGlmIChzaGFycCAhPT0gMCkgeworICAgICAgICBpZiAoc3BhY2UgIT09IDAp
IHsKKyAgICAgICAgICBleGl0JDEgPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN5
bWIgIT09IDg4KSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDExMSkgeworICAgICAgICAgICAg
aWYgKHN5bWIgIT09IDEyMCkgeworICAgICAgICAgICAgICBleGl0JDEgPSAyOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiBJbnRfQ3gg
Ki83OworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHJldHVybiAvKiBJbnRfQ28gKi8xMTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIEludF9DWCAqLzk7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHNwYWNlICE9PSAwKSB7CisgICAgICAgIGlmIChzeW1i
ICE9PSAxMDApIHsKKyAgICAgICAgICBpZiAoc3ltYiAhPT0gMTA1KSB7CisgICAgICAgICAgICBl
eGl0ID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1
cm4gLyogSW50X3NpICovNTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgcmV0dXJuIC8qIEludF9zZCAqLzI7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICB2YXIgc3dpdGNoZXIgPSBzeW1iIC0gODggfCAwOworICAgICAg
ICBpZiAoc3dpdGNoZXIgPiAzMiB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICBleGl0ID0g
MTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzd2l0Y2ggKHN3aXRjaGVy
KSB7CisgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50
X1ggKi84OworICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgICAgIHJldHVybiAv
KiBJbnRfZCAqLzA7CisgICAgICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEludF9pICovMzsKKyAgICAgICAgICAgIGNhc2UgMjMgOiAKKyAgICAgICAgICAgICAg
ICByZXR1cm4gLyogSW50X28gKi8xMDsKKyAgICAgICAgICAgIGNhc2UgMjkgOiAKKyAgICAgICAg
ICAgICAgICByZXR1cm4gLyogSW50X3UgKi8xMjsKKyAgICAgICAgICAgIGNhc2UgMSA6IAorICAg
ICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIGNh
c2UgNCA6IAorICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICBjYXNlIDYgOiAKKyAg
ICAgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICBj
YXNlIDkgOiAKKyAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGNhc2UgMTEgOiAK
KyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAg
ICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICAgIGNhc2Ug
MTggOiAKKyAgICAgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAgIGNhc2UgMjAgOiAKKyAg
ICAgICAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAg
IGNhc2UgMjQgOiAKKyAgICAgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAgICAgIGNhc2UgMjYg
OiAKKyAgICAgICAgICAgIGNhc2UgMjcgOiAKKyAgICAgICAgICAgIGNhc2UgMjggOiAKKyAgICAg
ICAgICAgIGNhc2UgMzAgOiAKKyAgICAgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgICAgICAg
ICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzIg
OiAKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50X3ggKi82OworICAgICAgICAgICAgCisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoZXhpdCQxID09PSAyKSB7
CisgICAgICAgIHZhciBleGl0JDIgPSAwOworICAgICAgICB2YXIgc3dpdGNoZXIkMSA9IHN5bWIg
LSA4OCB8IDA7CisgICAgICAgIGlmIChzd2l0Y2hlciQxID4gMzIgfHwgc3dpdGNoZXIkMSA8IDAp
IHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICBzd2l0Y2ggKHN3aXRjaGVyJDEpIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEludF9DWCAqLzk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgICAg
ICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IEludF9DbyAqLzExOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgIGNhc2Ug
MTcgOiAKKyAgICAgICAgICAgIGNhc2UgMjkgOiAKKyAgICAgICAgICAgICAgICBleGl0JDIgPSAz
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgY2FzZSA0
IDogCisgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAg
ICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIGNhc2Ug
OSA6IAorICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgY2FzZSAxMSA6IAorICAg
ICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAg
Y2FzZSAxNSA6IAorICAgICAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgY2FzZSAxOCA6
IAorICAgICAgICAgICAgY2FzZSAxOSA6IAorICAgICAgICAgICAgY2FzZSAyMCA6IAorICAgICAg
ICAgICAgY2FzZSAyMSA6IAorICAgICAgICAgICAgY2FzZSAyMiA6IAorICAgICAgICAgICAgY2Fz
ZSAyNCA6IAorICAgICAgICAgICAgY2FzZSAyNSA6IAorICAgICAgICAgICAgY2FzZSAyNiA6IAor
ICAgICAgICAgICAgY2FzZSAyNyA6IAorICAgICAgICAgICAgY2FzZSAyOCA6IAorICAgICAgICAg
ICAgY2FzZSAzMCA6IAorICAgICAgICAgICAgY2FzZSAzMSA6IAorICAgICAgICAgICAgICAgIGV4
aXQgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzMiA6IAor
ICAgICAgICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIEludF9DeCAqLzc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGlmIChleGl0JDIgPT09IDMpIHsKKyAgICAgICAgICBpZiAobGVnYWN5
X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIF9zaGFycCA9IC8qIGZhbHNlICovMDsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJf
aW5kLCBzeW1iLCAiJyMnIik7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAg
ICAgfQorICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKHBsdXMgIT09IDApIHsK
KyAgICAgICAgICBpZiAoc3BhY2UgIT09IDApIHsKKyAgICAgICAgICAgIGlmIChsZWdhY3lfYmVo
YXZpb3IkMSkgeworICAgICAgICAgICAgICBfc3BhY2UgPSAvKiBmYWxzZSAqLzA7CisgICAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9p
bmQsIHN0cl9pbmQsIC8qICIgIiAqLzMyLCAiJysnIik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAg
ICBfcGx1cyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBp
bmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJysnIik7CisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNwYWNlICE9PSAwKSB7CisgICAgICAg
ICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICBfc3BhY2UgPSAvKiBmYWxz
ZSAqLzA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWco
cGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIicgJyIpOworICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAg
ICAyNzE2LAorICAgICAgICAgICAgICAgICAgMjgKKyAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAgIH07CisgIH07CisgIHZh
ciBpbmNvbXBhdGlibGVfZmxhZyA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCBv
cHRpb24pIHsKKyAgICB2YXIgc3ViZm10ID0gJCRTdHJpbmcuc3ViKHN0ciwgcGN0X2luZCwgc3Ry
X2luZCAtIHBjdF9pbmQgfCAwKTsKKyAgICByZXR1cm4gQ3VycnkuXzUoZmFpbHdpdGhfbWVzc2Fn
ZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICov
QmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAi
LAorICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF9kICovMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2su
X18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZyAqL0Jsb2Nr
Ll9fKDIsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Tm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaXMgaW5jb21wYXRpYmxlIHdpdGggJyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGFy
ICovQmxvY2suX18oMCwgWy8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIicgaW4g
c3ViLWZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3Bh
ZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKQor
ICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBm
b3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGlzIGluY29tcGF0aWJsZSB3aXRo
ICclYycgaW4gc3ViLWZvcm1hdCAlUyIKKyAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHBjdF9p
bmQsIG9wdGlvbiwgc3ltYiwgc3ViZm10KTsKKyAgfTsKKyAgdmFyIHBhcnNlX3Bvc2l0aXZlID0g
ZnVuY3Rpb24gKF9zdHJfaW5kLCBlbmRfaW5kLCBfYWNjKSB7CisgICAgd2hpbGUodHJ1ZSkgewor
ICAgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgICB2YXIgc3RyX2luZCA9IF9zdHJfaW5kOworICAg
ICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVz
c2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgICB9CisgICAg
ICB2YXIgYyA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAgaWYgKGMgPiA1
NyB8fCBjIDwgNDgpIHsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAgIHN0cl9pbmQsCisgICAgICAgICAgICAgICAgYWNjCisgICAgICAgICAgICAgIF07CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG5ld19hY2MgPSBDYW1sX2ludDMyLmltdWwo
YWNjLCAxMCkgKyAoYyAtIC8qICIwIiAqLzQ4IHwgMCkgfCAwOworICAgICAgICBpZiAobmV3X2Fj
YyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgeworICAgICAgICAgIHJldHVybiBDdXJyeS5fMyhm
YWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICI6IGludGVnZXIgIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVy
YWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2Qg
Ki8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1h
dCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkIgorICAgICAgICAg
ICAgICAgICAgICAgICAgXSksIHN0ciwgbmV3X2FjYywgU3lzLm1heF9zdHJpbmdfbGVuZ3RoKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBfYWNjID0gbmV3X2FjYzsKKyAg
ICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgcGFy
c2VfYWZ0ZXJfcHJlY2lzaW9uID0gZnVuY3Rpb24gKHBjdF9pbmQsIHN0cl9pbmQsIGVuZF9pbmQs
IG1pbnVzLCBwbHVzLCBzaGFycCwgc3BhY2UsIGlnbiwgcGFkLCBwcmVjKSB7CisgICAgaWYgKHN0
cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2lu
ZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgIH0KKyAgICB2YXIgcGFyc2VfY29u
diA9IGZ1bmN0aW9uIChwYWRwcmVjKSB7CisgICAgICByZXR1cm4gcGFyc2VfY29udmVyc2lvbihw
Y3RfaW5kLCBzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQsIHBsdXMsIHNoYXJwLCBzcGFjZSwgaWdu
LCBwYWQsIHByZWMsIHBhZHByZWMsIENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpKTsKKyAg
ICB9OworICAgIGlmICh0eXBlb2YgcGFkID09PSAibnVtYmVyIikgeworICAgICAgdmFyIGV4aXQg
PSAwOworICAgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgICAgICBpZiAo
cHJlYyAhPT0gMCkgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiBwYXJzZV9jb252KC8qIE5vX3BhZGRpbmcgKi8wKTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAg
fQorICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKG1pbnVzICE9PSAwKSB7Cisg
ICAgICAgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgcmV0
dXJuIHBhcnNlX2NvbnYoLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbLyogTGVmdCAqLzBd
KSk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHBh
cnNlX2NvbnYoLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIExlZnQgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjWzBd
CisgICAgICAgICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgICAgICAgIHJl
dHVybiBwYXJzZV9jb252KC8qIEFyZ19wYWRkaW5nICovQmxvY2suX18oMSwgWy8qIFJpZ2h0ICov
MV0pKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gcGFyc2Vf
Y29udigvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWNbMF0KKyAgICAg
ICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBwYXJzZV9jb252KHBhZCk7CisgICAgfQorICB9Owor
ICB2YXIgcGFyc2VfYWZ0ZXJfcGFkZGluZyA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBl
bmRfaW5kLCBtaW51cywgcGx1cywgc2hhcnAsIHNwYWNlLCBpZ24sIHBhZCkgeworICAgIGlmIChz
dHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9p
bmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICB9CisgICAgdmFyIHN5bWIgPSBD
YW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICBpZiAoc3ltYiAhPT0gNDYpIHsKKyAg
ICAgIHJldHVybiBwYXJzZV9jb252ZXJzaW9uKHBjdF9pbmQsIHN0cl9pbmQgKyAxIHwgMCwgZW5k
X2luZCwgcGx1cywgc2hhcnAsIHNwYWNlLCBpZ24sIHBhZCwgLyogTm9fcHJlY2lzaW9uICovMCwg
cGFkLCBzeW1iKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgcGN0X2luZCQxID0gcGN0
X2luZDsKKyAgICAgIHZhciBzdHJfaW5kJDEgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICB2YXIg
ZW5kX2luZCQxID0gZW5kX2luZDsKKyAgICAgIHZhciBtaW51cyQxID0gbWludXM7CisgICAgICB2
YXIgcGx1cyQxID0gcGx1czsKKyAgICAgIHZhciBzaGFycCQxID0gc2hhcnA7CisgICAgICB2YXIg
c3BhY2UkMSA9IHNwYWNlOworICAgICAgdmFyIGlnbiQxID0gaWduOworICAgICAgdmFyIHBhZCQx
ID0gcGFkOworICAgICAgaWYgKHN0cl9pbmQkMSA9PT0gZW5kX2luZCQxKSB7CisgICAgICAgIGlu
dmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCQxLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0
Iik7CisgICAgICB9CisgICAgICB2YXIgcGFyc2VfbGl0ZXJhbCA9IGZ1bmN0aW9uIChtaW51cywg
c3RyX2luZCkgeworICAgICAgICB2YXIgbWF0Y2ggPSBwYXJzZV9wb3NpdGl2ZShzdHJfaW5kLCBl
bmRfaW5kJDEsIDApOworICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uKHBjdF9p
bmQkMSwgbWF0Y2hbMF0sIGVuZF9pbmQkMSwgbWludXMsIHBsdXMkMSwgc2hhcnAkMSwgc3BhY2Uk
MSwgaWduJDEsIHBhZCQxLCAvKiBMaXRfcHJlY2lzaW9uICovW21hdGNoWzFdXSk7CisgICAgICB9
OworICAgICAgdmFyIHN5bWIkMSA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQkMSk7Cisg
ICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgIGlmIChzeW1i
JDEgPj0gNDgpIHsKKyAgICAgICAgaWYgKHN5bWIkMSA+PSA1OCkgeworICAgICAgICAgIGV4aXQg
PSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBwYXJzZV9s
aXRlcmFsKG1pbnVzJDEsIHN0cl9pbmQkMSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVs
c2UgaWYgKHN5bWIkMSA+PSA0MikgeworICAgICAgICBzd2l0Y2ggKHN5bWIkMSAtIDQyIHwgMCkg
eworICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJf
cHJlY2lzaW9uKHBjdF9pbmQkMSwgc3RyX2luZCQxICsgMSB8IDAsIGVuZF9pbmQkMSwgbWludXMk
MSwgcGx1cyQxLCBzaGFycCQxLCBzcGFjZSQxLCBpZ24kMSwgcGFkJDEsIC8qIEFyZ19wcmVjaXNp
b24gKi8xKTsKKyAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgY2FzZSA1IDogCisgICAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAKKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQor
ICAgICAgaWYgKGV4aXQkMSA9PT0gMikgeworICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEp
IHsKKyAgICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbChtaW51cyQxIHx8ICsoc3ltYiQxID09
PSAvKiAiLSIgKi80NSksIHN0cl9pbmQkMSArIDEgfCAwKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgaWYg
KGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAg
ICAgcmV0dXJuIHBhcnNlX2FmdGVyX3ByZWNpc2lvbihwY3RfaW5kJDEsIHN0cl9pbmQkMSwgZW5k
X2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGlnbiQxLCBwYWQkMSwg
LyogTGl0X3ByZWNpc2lvbiAqL1swXSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIGludmFsaWRfZm9ybWF0X3dpdGhvdXQoc3RyX2luZCQxIC0gMSB8IDAsIC8q
ICIuIiAqLzQ2LCAicHJlY2lzaW9uIik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAg
IH0KKyAgfTsKKyAgdmFyIHBhcnNlX2xpdGVyYWwgPSBmdW5jdGlvbiAobGl0X3N0YXJ0LCBfc3Ry
X2luZCwgZW5kX2luZCkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBzdHJfaW5kID0g
X3N0cl9pbmQ7CisgICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgICByZXR1
cm4gYWRkX2xpdGVyYWwobGl0X3N0YXJ0LCBzdHJfaW5kLCAvKiBFbmRfb2ZfZm9ybWF0ICovMCk7
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJpbmcu
Z2V0KHN0ciwgc3RyX2luZCk7CisgICAgICAgIGlmIChtYXRjaCAhPT0gMzcpIHsKKyAgICAgICAg
ICBpZiAobWF0Y2ggIT09IDY0KSB7CisgICAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAx
IHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxID0gcGFyc2VfYWZ0ZXJf
YXQoc3RyX2luZCArIDEgfCAwLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHJldHVybiBhZGRfbGl0
ZXJhbChsaXRfc3RhcnQsIHN0cl9pbmQsIG1hdGNoJDFbMF0pOworICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMiA9IHBhcnNlX2Zvcm1h
dChzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICByZXR1cm4gYWRkX2xpdGVyYWwobGl0X3N0
YXJ0LCBzdHJfaW5kLCBtYXRjaCQyWzBdKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH07Cisg
IH07CisgIHZhciBwYXJzZV9mb3JtYXQgPSBmdW5jdGlvbiAocGN0X2luZCwgZW5kX2luZCkgewor
ICAgIHZhciBwY3RfaW5kJDEgPSBwY3RfaW5kOworICAgIHZhciBzdHJfaW5kID0gcGN0X2luZCAr
IDEgfCAwOworICAgIHZhciBlbmRfaW5kJDEgPSBlbmRfaW5kOworICAgIGlmIChzdHJfaW5kID09
PSBlbmRfaW5kJDEpIHsKKyAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCQxLCAi
dW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgfQorICAgIHZhciBtYXRjaCA9IENhbWxf
c3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgIGlmIChtYXRjaCAhPT0gOTUpIHsKKyAgICAg
IHJldHVybiBwYXJzZV9mbGFncyhwY3RfaW5kJDEsIHN0cl9pbmQsIGVuZF9pbmQkMSwgLyogZmFs
c2UgKi8wKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gcGFyc2VfZmxhZ3MocGN0
X2luZCQxLCBzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQkMSwgLyogdHJ1ZSAqLzEpOworICAgIH0K
KyAgfTsKKyAgdmFyIHBhcnNlX2FmdGVyX2F0ID0gZnVuY3Rpb24gKHN0cl9pbmQsIGVuZF9pbmQp
IHsKKyAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgcmV0dXJuIC8qIEZtdF9F
QkIgKi9bLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAg
IC8qICJAIiAqLzY0LAorICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAg
ICAgICAgICAgICAgICBdKV07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIGMgPSBDYW1s
X3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgIHZhciBleGl0ID0gMDsKKyAgICAgIGlm
IChjID49IDY1KSB7CisgICAgICAgIGlmIChjID49IDk0KSB7CisgICAgICAgICAgdmFyIHN3aXRj
aGVyID0gYyAtIDEyMyB8IDA7CisgICAgICAgICAgaWYgKHN3aXRjaGVyID4gMiB8fCBzd2l0Y2hl
ciA8IDApIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3dpdGNoZXIpIHsKKyAgICAgICAgICAgICAgY2Fz
ZSAwIDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfdGFnKC8qIHRydWUgKi8xLCBz
dHJfaW5kICsgMSB8IDAsIGVuZF9pbmQpOworICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQgPSBzdHJfaW5k
ICsgMSB8IDA7CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSBwYXJzZV9saXRlcmFsKGJl
Z19pbmQsIGJlZ19pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZt
dF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogQ2xvc2VfdGFnICovMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOworICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAoYyA+PSA5MSkgeworICAgICAgICAgIHN3aXRjaCAoYyAtIDkxIHwgMCkgewor
ICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX3RhZygv
KiBmYWxzZSAqLzAsIHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCk7CisgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgIHZhciBiZWdfaW5kJDEgPSBz
dHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDEgPSBwYXJzZV9saXRl
cmFsKGJlZ19pbmQkMSwgYmVnX2luZCQxLCBlbmRfaW5kKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2xvc2VfYm94ICovMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQxWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsK
KyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAoYyAh
PT0gMTApIHsKKyAgICAgICAgaWYgKGMgPj0gMzIpIHsKKyAgICAgICAgICBzd2l0Y2ggKGMgLSAz
MiB8IDApIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgIHZhciBiZWdf
aW5kJDIgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBw
YXJzZV9saXRlcmFsKGJlZ19pbmQkMiwgYmVnX2luZCQyLCBlbmRfaW5kKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQnJlYWsgKi9CbG9jay5fXygwLCBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAICIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDJbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAg
ICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgaWYgKChzdHJfaW5kICsgMSB8IDApIDwgZW5k
X2luZCAmJiBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kICsgMSB8IDApID09PSAvKiAiJSIg
Ki8zNykgeworICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkMyA9IHN0cl9pbmQgKyAyIHwg
MDsKKyAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQzID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5k
JDMsIGJlZ19pbmQkMywgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10
X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBFc2NhcGVkX3BlcmNlbnQgKi82LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkM1swXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
XTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICB2YXIgbWF0Y2gkNCA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5k
X2luZCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBDaGFyX2xp
dGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
IkAiICovNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0WzBdCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICB2
YXIgYmVnX2luZCQ0ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRj
aCQ1ID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDQsIGJlZ19pbmQkNCwgZW5kX2luZCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9j
ay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJyZWFrICovQmxvY2su
X18oMCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQCwiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQ1WzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAg
ICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQ1ID0gc3Ry
X2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQ2ID0gcGFyc2VfbGl0ZXJh
bChiZWdfaW5kJDUsIGJlZ19pbmQkNSwgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIEZsdXNoX25ld2xpbmUgKi80LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDZbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSld
OworICAgICAgICAgICAgY2FzZSAyNyA6IAorICAgICAgICAgICAgICAgIHZhciBzdHJfaW5kJDEg
PSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFyIGVuZF9pbmQkMSA9IGVuZF9p
bmQ7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDc7CisgICAgICAgICAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgICAgICAgIGlmIChzdHJfaW5kJDEgPT09IGVuZF9pbmQkMSB8fCBDYW1sX3N0
cmluZy5nZXQoc3RyLCBzdHJfaW5kJDEpICE9PSAvKiAiPCIgKi82MCkgeworICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB2YXIgc3RyX2luZF8xID0gcGFyc2Vfc3Bh
Y2VzKHN0cl9pbmQkMSArIDEgfCAwLCBlbmRfaW5kJDEpOworICAgICAgICAgICAgICAgICAgdmFy
IG1hdGNoJDggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kXzEpOworICAgICAgICAgICAg
ICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkOCA+PSA0
OCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkOCA+PSA1OCkgeworICAgICAgICAg
ICAgICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICBleGl0JDEgPSAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQ4ICE9PSA0NSkg
eworICAgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3Rf
Zm91bmQ7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgZXhpdCQxID0gMTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgIGlmIChleGl0JDEgPT09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IG1hdGNoJDkgPSBwYXJzZV9pbnRlZ2VyKHN0cl9pbmRfMSwgZW5kX2luZCQxKTsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHdpZHRoID0gbWF0Y2gkOVsxXTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyhtYXRjaCQ5WzBdLCBlbmRfaW5kJDEpOworICAg
ICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJf
aW5kXzMpOworICAgICAgICAgICAgICAgICAgICB2YXIgc3dpdGNoZXIkMSA9IG1hdGNoJDEwIC0g
NDUgfCAwOworICAgICAgICAgICAgICAgICAgICBpZiAoc3dpdGNoZXIkMSA+IDEyIHx8IHN3aXRj
aGVyJDEgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYgKHN3aXRjaGVyJDEgIT09IDE3
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5ub3RfZm91bmQ7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAkJFN0cmluZy5zdWIo
c3RyLCBzdHJfaW5kJDEgLSAyIHwgMCwgKHN0cl9pbmRfMyAtIHN0cl9pbmQkMSB8IDApICsgMyB8
IDApOworICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNyA9IC8qIHR1cGxlICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxIHwgMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogQnJlYWsgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN3aXRj
aGVyJDEgPT09IDIgfHwgc3dpdGNoZXIkMSA9PT0gMSkgeworICAgICAgICAgICAgICAgICAgICAg
IHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICB2YXIgbWF0Y2gkMTEgPSBwYXJzZV9pbnRlZ2VyKHN0cl9pbmRfMywgZW5kX2luZCQxKTsKKyAg
ICAgICAgICAgICAgICAgICAgICB2YXIgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzKG1hdGNoJDEx
WzBdLCBlbmRfaW5kJDEpOworICAgICAgICAgICAgICAgICAgICAgIGlmIChDYW1sX3N0cmluZy5n
ZXQoc3RyLCBzdHJfaW5kXzUpICE9PSAvKiAiPiIgKi82MikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICB2YXIgcyQxID0gJCRTdHJpbmcu
c3ViKHN0ciwgc3RyX2luZCQxIC0gMiB8IDAsIChzdHJfaW5kXzUgLSBzdHJfaW5kJDEgfCAwKSAr
IDMgfCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ3ID0gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxIHwgMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIEJyZWFrICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMVsxXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICBdKQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjYXRjaCAoZXhuKXsKKyAgICAgICAgICAgICAgICAgIGlmIChleG4g
PT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkgeworICAgICAgICAgICAgICAg
ICAgICBtYXRjaCQ3ID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgc3RyX2lu
ZCQxLAorICAgICAgICAgICAgICAgICAgICAgIC8qIEJyZWFrICovQmxvY2suX18oMCwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAiQDsiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAwCisgICAgICAgICAgICAgICAgICAgICAgICBd
KQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoZXhuWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWls
dXJlKSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDcgPSAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICBzdHJfaW5kJDEsCisgICAgICAgICAgICAgICAgICAgICAgLyogQnJl
YWsgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICJAOyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgZXhuOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB2YXIgbmV4dF9pbmQgPSBtYXRjaCQ3WzBdOworICAgICAgICAgICAgICAg
IHZhciBtYXRjaCQxMiA9IHBhcnNlX2xpdGVyYWwobmV4dF9pbmQsIG5leHRfaW5kLCBlbmRfaW5k
JDEpOworICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdf
bGl0ICovQmxvY2suX18oMTcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ3
WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEyWzBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgIGNhc2UgMjggOiAKKyAgICAgICAgICAg
ICAgICB2YXIgc3RyX2luZCQyID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZh
ciBlbmRfaW5kJDIgPSBlbmRfaW5kOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQxMzsKKyAg
ICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgdmFyIHN0cl9pbmRfMSQxID0g
cGFyc2Vfc3BhY2VzKHN0cl9pbmQkMiwgZW5kX2luZCQyKTsKKyAgICAgICAgICAgICAgICAgIHZh
ciBtYXRjaCQxNCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmRfMSQxKTsKKyAgICAgICAg
ICAgICAgICAgIHZhciBleGl0JDIgPSAwOworICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDE0
ID49IDQ4KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQxNCA+PSA1OCkgeworICAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgZXhpdCQyID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMTQgIT09IDQ1KSB7CisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7CisgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCQyID0g
MTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGlmIChleGl0JDIgPT09
IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE1ID0gcGFyc2VfaW50ZWdlcihz
dHJfaW5kXzEkMSwgZW5kX2luZCQyKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0cl9pbmRf
MyQxID0gcGFyc2Vfc3BhY2VzKG1hdGNoJDE1WzBdLCBlbmRfaW5kJDIpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZF8zJDEpICE9PSAvKiAiPiIg
Ki82MikgeworICAgICAgICAgICAgICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLm5vdF9mb3VuZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB2YXIgcyQyID0gJCRTdHJpbmcuc3ViKHN0ciwgc3RyX2luZCQyIC0gMiB8IDAsIChzdHJfaW5k
XzMkMSAtIHN0cl9pbmQkMiB8IDApICsgMyB8IDApOworICAgICAgICAgICAgICAgICAgICBtYXRj
aCQxMyA9IC8qIFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICBz
dHJfaW5kXzMkMSArIDEgfCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogTWFnaWNfc2l6
ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzJDIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTVbMV0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICBdXTsKKyAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
YXRjaCAoZXhuJDEpeworICAgICAgICAgICAgICAgICAgaWYgKGV4biQxID09PSBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTMg
PSAvKiBOb25lICovMDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGV4biQxWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7CisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3cgZXhuJDE7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGlmIChtYXRjaCQxMykgeworICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE2
ID0gbWF0Y2gkMTNbMF07CisgICAgICAgICAgICAgICAgICB2YXIgbmV4dF9pbmQkMSA9IG1hdGNo
JDE2WzBdOworICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE3ID0gcGFyc2VfbGl0ZXJhbChu
ZXh0X2luZCQxLCBuZXh0X2luZCQxLCBlbmRfaW5kJDIpOworICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTZbMV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQxN1swXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
XTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICB2YXIgbWF0Y2gkMTggPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQkMiwgc3RyX2luZCQy
LCBlbmRfaW5kJDIpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyog
Rm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogU2Nhbl9pbmRpYyAqL0Jsb2NrLl9fKDIsIFsvKiAiPCIgKi82MF0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMThbMF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAxIDogCisg
ICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAg
Y2FzZSA0IDogCisgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgIGNhc2UgNyA6IAor
ICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAg
IGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgIGNhc2UgMTMg
OiAKKyAgICAgICAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICAgIGNhc2UgMTYgOiAKKyAgICAg
ICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIGNh
c2UgMTkgOiAKKyAgICAgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAgIGNhc2UgMjEgOiAK
KyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgIGNhc2UgMjMgOiAKKyAgICAgICAg
ICAgIGNhc2UgMjQgOiAKKyAgICAgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAgICAgIGNhc2Ug
MjYgOiAKKyAgICAgICAgICAgIGNhc2UgMjkgOiAKKyAgICAgICAgICAgIGNhc2UgMzAgOiAKKyAg
ICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMzEgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQ2ID0gc3RyX2luZCAr
IDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQxOSA9IHBhcnNlX2xpdGVyYWwoYmVn
X2luZCQ2LCBiZWdfaW5kJDYsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgIHJldHVybiAvKiBG
bXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBGRmx1c2ggKi8yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDE5WzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAg
ICAgIGNhc2UgMzIgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQ3ID0gc3RyX2luZCAr
IDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQyMCA9IHBhcnNlX2xpdGVyYWwoYmVn
X2luZCQ3LCBiZWdfaW5kJDcsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgIHJldHVybiAvKiBG
bXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBFc2NhcGVkX2F0ICovNSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQyMFswXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07CisgICAg
ICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2
YXIgYmVnX2luZCQ4ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICB2YXIgbWF0Y2gkMjEgPSBw
YXJzZV9saXRlcmFsKGJlZ19pbmQkOCwgYmVnX2luZCQ4LCBlbmRfaW5kKTsKKyAgICAgICAgcmV0
dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAg
ICAgICAgICAgICAgICAgICAvKiBGb3JjZV9uZXdsaW5lICovMywKKyAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMjFbMF0KKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIH0KKyAgICAgIGlm
IChleGl0ID09PSAxKSB7CisgICAgICAgIHZhciBiZWdfaW5kJDkgPSBzdHJfaW5kICsgMSB8IDA7
CisgICAgICAgIHZhciBtYXRjaCQyMiA9IHBhcnNlX2xpdGVyYWwoYmVnX2luZCQ5LCBiZWdfaW5k
JDksIGVuZF9pbmQpOworICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5n
X2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAgICAgICAgIC8qIFNjYW5faW5kaWMg
Ki9CbG9jay5fXygyLCBbY10pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMlswXQorICAg
ICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAgICAgCisgICAgfQorICB9OworICB2YXIg
YWRkX2xpdGVyYWwgPSBmdW5jdGlvbiAobGl0X3N0YXJ0LCBzdHJfaW5kLCBmbXQpIHsKKyAgICB2
YXIgc2l6ZSA9IHN0cl9pbmQgLSBsaXRfc3RhcnQgfCAwOworICAgIGlmIChzaXplICE9PSAwKSB7
CisgICAgICBpZiAoc2l6ZSAhPT0gMSkgeworICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1sv
KiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICQk
U3RyaW5nLnN1YihzdHIsIGxpdF9zdGFydCwgc2l6ZSksCisgICAgICAgICAgICAgICAgICAgIGZt
dAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IHJldHVybiAvKiBGbXRfRUJCICovWy8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisg
ICAgICAgICAgICAgICAgICAgIENhbWxfc3RyaW5nLmdldChzdHIsIGxpdF9zdGFydCksCisgICAg
ICAgICAgICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBGbXRfRUJCICovW2ZtdF07CisgICAgfQor
ICB9OworICB2YXIgcGFyc2Vfc3BhY2VzID0gZnVuY3Rpb24gKF9zdHJfaW5kLCBlbmRfaW5kKSB7
CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHN0cl9pbmQgPSBfc3RyX2luZDsKKyAgICAg
IGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3Nh
Z2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgfQorICAgICAg
aWYgKENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpID09PSAvKiAiICIgKi8zMikgeworICAg
ICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gc3RyX2luZDsKKyAg
ICAgIH0KKyAgICB9OworICB9OworICB2YXIgcGFyc2VfaW50ZWdlciA9IGZ1bmN0aW9uIChzdHJf
aW5kLCBlbmRfaW5kKSB7CisgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgIGlu
dmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIp
OworICAgIH0KKyAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsK
KyAgICBpZiAobWF0Y2ggPj0gNDgpIHsKKyAgICAgIGlmIChtYXRjaCA+PSA1OCkgeworICAgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9m
YWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZv
cm1hdC5tbCIsCisgICAgICAgICAgICAgICAgMjYyMSwKKyAgICAgICAgICAgICAgICAxMQorICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHJldHVybiBwYXJzZV9wb3NpdGl2ZShzdHJfaW5kLCBlbmRfaW5kLCAwKTsKKyAgICAgIH0K
KyAgICB9CisgICAgZWxzZSBpZiAobWF0Y2ggIT09IDQ1KSB7CisgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAg
ICAgIDI2MjEsCisgICAgICAgICAgICAgIDExCisgICAgICAgICAgICBdCisgICAgICAgICAgXTsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICBpZiAoKHN0cl9pbmQgKyAxIHwgMCkgPT09IGVuZF9p
bmQpIHsKKyAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3Rl
ZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgICB9CisgICAgICB2YXIgYyA9IENhbWxfc3RyaW5nLmdl
dChzdHIsIHN0cl9pbmQgKyAxIHwgMCk7CisgICAgICBpZiAoYyA+IDU3IHx8IGMgPCA0OCkgewor
ICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hhcmFjdGVyKHN0cl9pbmQgKyAxIHwgMCwgImRpZ2l0
IiwgYyk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNoJDEgPSBwYXJz
ZV9wb3NpdGl2ZShzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQsIDApOworICAgICAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgbWF0Y2gkMVswXSwKKyAgICAgICAgICAgICAg
ICAtbWF0Y2gkMVsxXSB8IDAKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgIH07
CisgIHZhciBjb21wdXRlX2Zsb2F0X2NvbnYgPSBmdW5jdGlvbiAocGN0X2luZCwgc3RyX2luZCwg
X3BsdXMsIF9zcGFjZSwgc3ltYikgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBzcGFj
ZSA9IF9zcGFjZTsKKyAgICAgIHZhciBwbHVzID0gX3BsdXM7CisgICAgICBpZiAocGx1cyAhPT0g
MCkgeworICAgICAgICBpZiAoc3BhY2UgIT09IDApIHsKKyAgICAgICAgICBpZiAobGVnYWN5X2Jl
aGF2aW9yJDEpIHsKKyAgICAgICAgICAgIF9zcGFjZSA9IC8qIGZhbHNlICovMDsKKyAgICAgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5k
LCAvKiAiICIgKi8zMiwgIicrJyIpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICAgICAgaWYgKHN5bWIgPj0gNzIp
IHsKKyAgICAgICAgICAgIHZhciBzd2l0Y2hlciA9IHN5bWIgLSAxMDEgfCAwOworICAgICAgICAg
ICAgaWYgKHN3aXRjaGVyID4gMiB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICAgICAgZXhp
dCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
c3dpdGNoIChzd2l0Y2hlcikgeworICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcGUgKi80OworICAgICAgICAgICAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcGYgKi8xOworICAgICAg
ICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRf
cGcgKi8xMDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChzeW1iID49IDY5KSB7CisgICAgICAg
ICAgICBzd2l0Y2ggKHN5bWIgLSA2OSB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisg
ICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcEUgKi83OworICAgICAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIEZsb2F0X3BHICovMTM7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAg
ICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAg
IH0KKyAgICAgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICAgICAgaWYgKGxlZ2FjeV9i
ZWhhdmlvciQxKSB7CisgICAgICAgICAgICAgIF9wbHVzID0gLyogZmFsc2UgKi8wOworICAgICAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3Rf
aW5kLCBzdHJfaW5kLCBzeW1iLCAiJysnIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChzcGFjZSAhPT0g
MCkgeworICAgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgICAgaWYgKHN5bWIgPj0gNzIpIHsK
KyAgICAgICAgICB2YXIgc3dpdGNoZXIkMSA9IHN5bWIgLSAxMDEgfCAwOworICAgICAgICAgIGlm
IChzd2l0Y2hlciQxID4gMiB8fCBzd2l0Y2hlciQxIDwgMCkgeworICAgICAgICAgICAgZXhpdCQx
ID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2gg
KHN3aXRjaGVyJDEpIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogRmxvYXRfc2UgKi81OworICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9zZiAqLzI7CisgICAgICAgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3NnICovMTE7CisgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl
bHNlIGlmIChzeW1iID49IDY5KSB7CisgICAgICAgICAgc3dpdGNoIChzeW1iIC0gNjkgfCAwKSB7
CisgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRf
c0UgKi84OworICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgZXhpdCQxID0g
MTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9zRyAqLzE0OworICAgICAgICAgICAgCisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQkMSA9IDE7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMSA9PT0gMSkgeworICAgICAgICAgIGlmIChsZWdh
Y3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgX3NwYWNlID0gLyogZmFsc2UgKi8wOworICAg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0
cl9pbmQsIHN5bWIsICInICciKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICB9CisgICAgICBlbHNlIGlmIChzeW1iID49IDcyKSB7CisgICAgICAgIHZhciBzd2l0Y2hl
ciQyID0gc3ltYiAtIDEwMSB8IDA7CisgICAgICAgIGlmIChzd2l0Y2hlciQyID4gMiB8fCBzd2l0
Y2hlciQyIDwgMCkgeworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAg
IDI3NDQsCisgICAgICAgICAgICAgICAgICAyNQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzd2l0Y2ggKHN3
aXRjaGVyJDIpIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgIHJldHVy
biAvKiBGbG9hdF9lICovMzsKKyAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAg
IHJldHVybiAvKiBGbG9hdF9mICovMDsKKyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBGbG9hdF9nICovOTsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAoc3ltYiA+PSA2OSkgeworICAgICAg
ICBzd2l0Y2ggKHN5bWIgLSA2OSB8IDApIHsKKyAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICAgICAgcmV0dXJuIC8qIEZsb2F0X0UgKi82OworICAgICAgICAgIGNhc2UgMSA6IAorICAgICAg
ICAgICAgICByZXR1cm4gLyogRmxvYXRfRiAqLzE1OworICAgICAgICAgIGNhc2UgMiA6IAorICAg
ICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfRyAqLzEyOworICAgICAgICAgIAorICAgICAgICB9
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAg
IDI3NDQsCisgICAgICAgICAgICAgICAgMjUKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
XTsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgc2VhcmNoX3N1YmZvcm1hdF9lbmQgPSBm
dW5jdGlvbiAoX3N0cl9pbmQsIGVuZF9pbmQsIGMpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAg
ICB2YXIgc3RyX2luZCA9IF9zdHJfaW5kOworICAgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQp
IHsKKyAgICAgICAgQ3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAg
ICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAg
ICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAgICAg
LyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
OiB1bmNsb3NlZCBzdWItZm9ybWF0LCBleHBlY3RlZCAiJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogIiUiICovMzcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogQ2hhciAqL0Jsb2NrLl9fKDAsIFsvKiBTdHJpbmdfbGl0ZXJhbCAqL0Js
b2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
IiBhdCBjaGFyYWN0ZXIgbnVtYmVyICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29m
X2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKV0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgIF0pLAor
ICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3NlZCBzdWItZm9ybWF0
LCBleHBlY3RlZCAiJSUlYyIgYXQgY2hhcmFjdGVyIG51bWJlciAlZCcKKyAgICAgICAgICAgICAg
ICBdKSwgc3RyLCBjLCBlbmRfaW5kKTsKKyAgICAgIH0KKyAgICAgIHZhciBtYXRjaCA9IENhbWxf
c3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAgaWYgKG1hdGNoICE9PSAzNykgeworICAg
ICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBpZiAoKHN0cl9pbmQgKyAxIHwg
MCkgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9p
bmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
Q2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCArIDEgfCAwKSA9PT0gYykgeworICAgICAgICAg
IHJldHVybiBzdHJfaW5kOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZh
ciBtYXRjaCQxID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCArIDEgfCAwKTsKKyAgICAg
ICAgICB2YXIgZXhpdCA9IDA7CisgICAgICAgICAgaWYgKG1hdGNoJDEgPj0gOTUpIHsKKyAgICAg
ICAgICAgIGlmIChtYXRjaCQxID49IDEyMykgeworICAgICAgICAgICAgICBpZiAobWF0Y2gkMSA+
PSAxMjYpIHsKKyAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDEgLSAxMjMg
fCAwKSB7CisgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kKHN0cl9pbmQgKyAyIHwgMCwgZW5k
X2luZCwgLyogIn0iICovMTI1KTsKKyAgICAgICAgICAgICAgICAgICAgICBfc3RyX2luZCA9IHN1
Yl9lbmQgKyAyIHwgMDsKKyAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7
CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIDIg
OiAKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hhcmFjdGVyKHN0cl9p
bmQgKyAxIHwgMCwgImNoYXJhY3RlciAnKSciLCAvKiAifSIgKi8xMjUpOworICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQxID49IDk2KSB7CisgICAgICAgICAgICAgIGV4
aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IGlmICgoc3RyX2luZCArIDIgfCAwKSA9PT0gZW5kX2luZCkgeworICAgICAgICAgICAgICAgIGlu
dmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIp
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHZhciBtYXRjaCQyID0gQ2FtbF9zdHJp
bmcuZ2V0KHN0ciwgc3RyX2luZCArIDIgfCAwKTsKKyAgICAgICAgICAgICAgaWYgKG1hdGNoJDIg
IT09IDQwKSB7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDIgIT09IDEyMykgeworICAgICAg
ICAgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kICsgMyB8IDA7CisgICAgICAgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICB2YXIgc3ViX2VuZCQxID0gc2Vh
cmNoX3N1YmZvcm1hdF9lbmQoc3RyX2luZCArIDMgfCAwLCBlbmRfaW5kLCAvKiAifSIgKi8xMjUp
OworICAgICAgICAgICAgICAgICAgX3N0cl9pbmQgPSBzdWJfZW5kJDEgKyAyIHwgMDsKKyAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB2YXIgc3ViX2VuZCQyID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQoc3RyX2luZCArIDMgfCAw
LCBlbmRfaW5kLCAvKiAiKSIgKi80MSk7CisgICAgICAgICAgICAgICAgX3N0cl9pbmQgPSBzdWJf
ZW5kJDIgKyAyIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAg
ICAgZWxzZSBpZiAobWF0Y2gkMSAhPT0gNDApIHsKKyAgICAgICAgICAgIGlmIChtYXRjaCQxICE9
PSA0MSkgeworICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hhcmFjdGVyKHN0cl9p
bmQgKyAxIHwgMCwgImNoYXJhY3RlciAnfSciLCAvKiAiKSIgKi80MSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIHN1Yl9lbmQk
MyA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kKHN0cl9pbmQgKyAyIHwgMCwgZW5kX2luZCwgLyogIiki
ICovNDEpOworICAgICAgICAgICAgX3N0cl9pbmQgPSBzdWJfZW5kJDMgKyAyIHwgMDsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBp
ZiAoZXhpdCA9PT0gMSkgeworICAgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kICsgMiB8IDA7
CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAg
ICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgcGFyc2VfY29u
dmVyc2lvbiA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBlbmRfaW5kLCBwbHVzLCBzaGFy
cCwgc3BhY2UsIGlnbiwgcGFkLCBwcmVjLCBwYWRwcmVjLCBzeW1iKSB7CisgICAgdmFyIHBsdXNf
dXNlZCA9IC8qIGZhbHNlICovMDsKKyAgICB2YXIgc2hhcnBfdXNlZCA9IC8qIGZhbHNlICovMDsK
KyAgICB2YXIgc3BhY2VfdXNlZCA9IC8qIGZhbHNlICovMDsKKyAgICB2YXIgaWduX3VzZWQgPSBb
LyogZmFsc2UgKi8wXTsKKyAgICB2YXIgcGFkX3VzZWQgPSAvKiBmYWxzZSAqLzA7CisgICAgdmFy
IHByZWNfdXNlZCA9IFsvKiBmYWxzZSAqLzBdOworICAgIHZhciBjaGVja19ub18wID0gZnVuY3Rp
b24gKHN5bWIsIHBhZCkgeworICAgICAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgIHJldHVybiBwYWQ7CisgICAgICB9CisgICAgICBlbHNlIGlmIChwYWQudGFnKSB7Cisg
ICAgICAgIGlmIChwYWRbMF0gPj0gMikgeworICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3Ik
MSkgeworICAgICAgICAgICAgcmV0dXJuIC8qIEFyZ19wYWRkaW5nICovQmxvY2suX18oMSwgWy8q
IFJpZ2h0ICovMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiMCIpOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4g
cGFkOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChwYWRbMF0gPj0gMikgewor
ICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICByZXR1cm4gLyogTGl0
X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgIC8qIFJpZ2h0ICov
MSwKKyAgICAgICAgICAgICAgICAgICAgcGFkWzFdCisgICAgICAgICAgICAgICAgICBdKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2Zs
YWcocGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIjAiKTsKKyAgICAgICAgfQorICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIHJldHVybiBwYWQ7CisgICAgICB9CisgICAgfTsKKyAgICB2YXIg
b3B0X29mX3BhZCA9IGZ1bmN0aW9uIChjLCBwYWQpIHsKKyAgICAgIGlmICh0eXBlb2YgcGFkID09
PSAibnVtYmVyIikgeworICAgICAgICByZXR1cm4gLyogTm9uZSAqLzA7CisgICAgICB9CisgICAg
ICBlbHNlIGlmIChwYWQudGFnKSB7CisgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhw
Y3RfaW5kLCBzdHJfaW5kLCBjLCAiJyonIik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg
ICAgc3dpdGNoIChwYWRbMF0pIHsKKyAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAg
aWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFNvbWUg
Ki9bcGFkWzFdXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgYywg
IictJyIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAg
ICAgIHJldHVybiAvKiBTb21lICovW3BhZFsxXV07CisgICAgICAgICAgY2FzZSAyIDogCisgICAg
ICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICAgIHJldHVy
biAvKiBTb21lICovW3BhZFsxXV07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0
cl9pbmQsIGMsICInMCciKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICB9
CisgICAgICB9CisgICAgfTsKKyAgICB2YXIgZ2V0X3ByZWNfb3B0ID0gZnVuY3Rpb24gKCkgewor
ICAgICAgcHJlY191c2VkWzBdID0gLyogdHJ1ZSAqLzE7CisgICAgICBpZiAodHlwZW9mIHByZWMg
PT09ICJudW1iZXIiKSB7CisgICAgICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICAgICAgcmV0
dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICJfIiAqLzk1LCAiJyon
Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIE5vbmUg
Ki8wOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8q
IFNvbWUgKi9bcHJlY1swXV07CisgICAgICB9CisgICAgfTsKKyAgICB2YXIgZm10X3Jlc3VsdDsK
KyAgICB2YXIgZXhpdCA9IDA7CisgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgdmFyIGV4aXQkMiA9
IDA7CisgICAgaWYgKHN5bWIgPj0gMTI0KSB7CisgICAgICBleGl0JDEgPSA2OworICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoc3ltYikgeworICAgICAgICBjYXNlIDMzIDogCisgICAg
ICAgICAgICB2YXIgbWF0Y2ggPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9p
bmQpOworICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogRmx1c2ggKi9C
bG9jay5fXygxMCwgW21hdGNoWzBdXSldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgNDAgOiAKKyAgICAgICAgICAgIHZhciBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQo
c3RyX2luZCwgZW5kX2luZCwgLyogIikiICovNDEpOworICAgICAgICAgICAgdmFyIGJlZ19pbmQg
PSBzdWJfZW5kICsgMiB8IDA7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHBhcnNlX2xpdGVy
YWwoYmVnX2luZCwgYmVnX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIgZm10X3Jlc3Qg
PSBtYXRjaCQxWzBdOworICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBwYXJzZV9saXRlcmFsKHN0
cl9pbmQsIHN0cl9pbmQsIHN1Yl9lbmQpOworICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eSA9IGZt
dHR5X29mX2ZtdChtYXRjaCQyWzBdKTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8q
IHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsK
KyAgICAgICAgICAgICAgdmFyIGlnbm9yZWRfMDAwID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwg
cGFkKTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQgPSAvKiBJZ25vcmVkX2Zvcm1hdF9zdWJz
dCAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgIGlnbm9yZWRfMDAwLAorICAgICAg
ICAgICAgICAgICAgc3ViX2ZtdHR5CisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAg
IGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygy
MywgWworICAgICAgICAgICAgICAgICAgICBpZ25vcmVkLAorICAgICAgICAgICAgICAgICAgICBm
bXRfcmVzdAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAg
ICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIEZvcm1hdF9zdWJzdCAqL0Jsb2Nr
Ll9fKDE0LCBbCisgICAgICAgICAgICAgICAgICAgIG9wdF9vZl9wYWQoLyogIigiICovNDAsIHBh
ZCksCisgICAgICAgICAgICAgICAgICAgIHN1Yl9mbXR0eSwKKyAgICAgICAgICAgICAgICAgICAg
Zm10X3Jlc3QKKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ0IDogCisgICAgICAgICAgICBmbXRfcmVzdWx0ID0g
cGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIDM3IDogCisgICAgICAgIGNhc2UgNjQgOiAKKyAgICAgICAgICAg
IGV4aXQkMSA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2NyA6IAorICAg
ICAgICAgICAgdmFyIG1hdGNoJDMgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVu
ZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDEgPSBtYXRjaCQzWzBdOworICAgICAg
ICAgICAgZm10X3Jlc3VsdCA9IChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pID8gLyog
Rm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAg
ICAgICAgICAgLyogSWdub3JlZF9jYW1sX2NoYXIgKi8xLAorICAgICAgICAgICAgICAgICAgICBm
bXRfcmVzdCQxCisgICAgICAgICAgICAgICAgICBdKV0gOiAvKiBGbXRfRUJCICovWy8qIENhbWxf
Y2hhciAqL0Jsb2NrLl9fKDEsIFtmbXRfcmVzdCQxXSldOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgNzggOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gcGFyc2VfbGl0ZXJh
bChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBmbXRfcmVzdCQy
ID0gbWF0Y2gkNFswXTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8x
LCBpZ24pIHsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQkMSA9IC8qIElnbm9yZWRfc2Nhbl9n
ZXRfY291bnRlciAqL0Jsb2NrLl9fKDEwLCBbLyogVG9rZW5fY291bnRlciAqLzJdKTsKKyAgICAg
ICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Js
b2NrLl9fKDIzLCBbCisgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQkMSwKKyAgICAgICAgICAg
ICAgICAgICAgZm10X3Jlc3QkMgorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRf
RUJCICovWy8qIFNjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwgWworICAgICAgICAgICAg
ICAgICAgICAvKiBUb2tlbl9jb3VudGVyICovMiwKKyAgICAgICAgICAgICAgICAgICAgZm10X3Jl
c3QkMgorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgODMgOiAKKyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgICB2YXIgcGFkJDEgPSBjaGVja19ub18wKHN5bWIsIHBhZHByZWMp
OworICAgICAgICAgICAgdmFyIG1hdGNoJDUgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9p
bmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDMgPSBtYXRjaCQ1WzBdOwor
ICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAg
ICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICB2YXIgaWdub3Jl
ZCQyID0gLyogSWdub3JlZF9jYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDEsIFtvcHRfb2ZfcGFkKC8q
ICJfIiAqLzk1LCBwYWRwcmVjKV0pOworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10
X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAg
ICAgICAgaWdub3JlZCQyLAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQzCisgICAgICAg
ICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgdmFyIG1hdGNoJDYgPSBtYWtlX3BhZGRpbmdfZm10X2ViYihwYWQkMSwgZm10X3Jl
c3QkMyk7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIENhbWxf
c3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICBtYXRjaCQ2WzBdLAor
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQ2WzFdCisgICAgICAgICAgICAgICAgICBdKV07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA5MSA6IAorICAg
ICAgICAgICAgdmFyIG1hdGNoJDcgPSBwYXJzZV9jaGFyX3NldChzdHJfaW5kLCBlbmRfaW5kKTsK
KyAgICAgICAgICAgIHZhciBjaGFyX3NldCA9IG1hdGNoJDdbMV07CisgICAgICAgICAgICB2YXIg
bmV4dF9pbmQgPSBtYXRjaCQ3WzBdOworICAgICAgICAgICAgdmFyIG1hdGNoJDggPSBwYXJzZV9s
aXRlcmFsKG5leHRfaW5kLCBuZXh0X2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIgZm10
X3Jlc3QkNCA9IG1hdGNoJDhbMF07CisgICAgICAgICAgICBpZiAoaWduX3VzZWRbMF0gPSAvKiB0
cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7Cisg
ICAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMCQxID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwg
cGFkKTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQkMyA9IC8qIElnbm9yZWRfc2Nhbl9jaGFy
X3NldCAqL0Jsb2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAgIGlnbm9yZWRfMDAwJDEsCisg
ICAgICAgICAgICAgICAgICBjaGFyX3NldAorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAg
ICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2su
X18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlZCQzLAorICAgICAgICAgICAgICAg
ICAgICBmbXRfcmVzdCQ0CisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsK
KyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogU2Nhbl9jaGFyX3Nl
dCAqL0Jsb2NrLl9fKDIwLCBbCisgICAgICAgICAgICAgICAgICAgIG9wdF9vZl9wYWQoLyogIlsi
ICovOTEsIHBhZCksCisgICAgICAgICAgICAgICAgICAgIGNoYXJfc2V0LAorICAgICAgICAgICAg
ICAgICAgICBmbXRfcmVzdCQ0CisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzMiA6IAorICAgICAgICBjYXNlIDM1
IDogCisgICAgICAgIGNhc2UgNDMgOiAKKyAgICAgICAgY2FzZSA0NSA6IAorICAgICAgICBjYXNl
IDk1IDogCisgICAgICAgICAgICBleGl0JDEgPSA1OworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgOTcgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gcGFyc2VfbGl0ZXJhbChz
dHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBG
bXRfRUJCICovWy8qIEFscGhhICovQmxvY2suX18oMTUsIFttYXRjaCQ5WzBdXSldOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNjYgOiAKKyAgICAgICAgY2FzZSA5OCA6IAorICAg
ICAgICAgICAgZXhpdCQxID0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDk5
IDogCisgICAgICAgICAgICB2YXIgY2hhcl9mb3JtYXQgPSBmdW5jdGlvbiAoZm10X3Jlc3QpIHsK
KyAgICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9j
ay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfY2hhciAq
LzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3QKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSldOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIENoYXIgKi9CbG9jay5fXygw
LCBbZm10X3Jlc3RdKV07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAg
ICAgICB2YXIgc2Nhbl9mb3JtYXQgPSBmdW5jdGlvbiAoZm10X3Jlc3QpIHsKKyAgICAgICAgICAg
ICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgICAg
IHJldHVybiAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgKi80
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBTY2FuX25leHRfY2hhciAqL0Js
b2NrLl9fKDIyLCBbZm10X3Jlc3RdKV07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07
CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9p
bmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDUgPSBtYXRjaCQxMFswXTsK
KyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkMTEgPSBvcHRfb2ZfcGFkKC8qICJjIiAqLzk5LCBwYWQpOworICAgICAgICAgICAgZm10X3Jl
c3VsdCA9IG1hdGNoJDExID8gKAorICAgICAgICAgICAgICAgIG1hdGNoJDExWzBdICE9PSAwID8g
KAorICAgICAgICAgICAgICAgICAgICBsZWdhY3lfYmVoYXZpb3IkMSA/IGNoYXJfZm9ybWF0KGZt
dF9yZXN0JDUpIDogaW52YWxpZF9mb3JtYXRfbWVzc2FnZShzdHJfaW5kLCAibm9uLXplcm8gd2lk
dGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnMiKQorICAgICAgICAgICAgICAg
ICAgKSA6IHNjYW5fZm9ybWF0KGZtdF9yZXN0JDUpCisgICAgICAgICAgICAgICkgOiBjaGFyX2Zv
cm1hdChmbXRfcmVzdCQ1KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDY5IDog
CisgICAgICAgIGNhc2UgNzAgOiAKKyAgICAgICAgY2FzZSA3MSA6IAorICAgICAgICBjYXNlIDEw
MSA6IAorICAgICAgICBjYXNlIDEwMiA6IAorICAgICAgICBjYXNlIDEwMyA6IAorICAgICAgICAg
ICAgZXhpdCQxID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDc2IDogCisg
ICAgICAgIGNhc2UgMTA4IDogCisgICAgICAgIGNhc2UgMTEwIDogCisgICAgICAgICAgICBleGl0
JDIgPSA4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTE0IDogCisgICAgICAg
ICAgICB2YXIgbWF0Y2gkMTIgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9p
bmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDYgPSBtYXRjaCQxMlswXTsKKyAgICAgICAg
ICAgIGZtdF9yZXN1bHQgPSAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSA/IC8qIEZt
dF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisgICAgICAgICAgICAg
ICAgICAgIC8qIElnbm9yZWRfcmVhZGVyICovMywKKyAgICAgICAgICAgICAgICAgICAgZm10X3Jl
c3QkNgorICAgICAgICAgICAgICAgICAgXSldIDogLyogRm10X0VCQiAqL1svKiBSZWFkZXIgKi9C
bG9jay5fXygxOSwgW2ZtdF9yZXN0JDZdKV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAxMTUgOiAKKyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAg
ICAgICB2YXIgcGFkJDIgPSBjaGVja19ub18wKHN5bWIsIHBhZHByZWMpOworICAgICAgICAgICAg
dmFyIG1hdGNoJDEzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsK
KyAgICAgICAgICAgIHZhciBmbXRfcmVzdCQ3ID0gbWF0Y2gkMTNbMF07CisgICAgICAgICAgICBp
ZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgIHBhZF91
c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkJDQgPSAvKiBJZ25v
cmVkX3N0cmluZyAqL0Jsb2NrLl9fKDAsIFtvcHRfb2ZfcGFkKC8qICJfIiAqLzk1LCBwYWRwcmVj
KV0pOworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVk
X3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlZCQ0LAor
ICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ3CisgICAgICAgICAgICAgICAgICBdKV07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIG1hdGNo
JDE0ID0gbWFrZV9wYWRkaW5nX2ZtdF9lYmIocGFkJDIsIGZtdF9yZXN0JDcpOworICAgICAgICAg
ICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBTdHJpbmcgKi9CbG9jay5fXygyLCBb
CisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE0WzBdLAorICAgICAgICAgICAgICAgICAgICBt
YXRjaCQxNFsxXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTE2IDogCisgICAgICAgICAgICB2YXIgbWF0Y2gk
MTUgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAg
ICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogVGhldGEgKi9CbG9jay5fXygxNiwgW21h
dGNoJDE1WzBdXSldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgODggOiAKKyAg
ICAgICAgY2FzZSAxMDAgOiAKKyAgICAgICAgY2FzZSAxMDUgOiAKKyAgICAgICAgY2FzZSAxMTEg
OiAKKyAgICAgICAgY2FzZSAxMTcgOiAKKyAgICAgICAgY2FzZSAxMjAgOiAKKyAgICAgICAgICAg
IGV4aXQkMiA9IDc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAwIDogCisgICAg
ICAgIGNhc2UgMSA6IAorICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgY2FzZSAzIDogCisgICAg
ICAgIGNhc2UgNCA6IAorICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgY2FzZSA2IDogCisgICAg
ICAgIGNhc2UgNyA6IAorICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgY2FzZSA5IDogCisgICAg
ICAgIGNhc2UgMTAgOiAKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICBjYXNlIDEyIDogCisg
ICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICBjYXNlIDE1IDog
CisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgY2FzZSAxNyA6IAorICAgICAgICBjYXNlIDE4
IDogCisgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICBjYXNl
IDIxIDogCisgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICBj
YXNlIDI0IDogCisgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAgY2FzZSAyNiA6IAorICAgICAg
ICBjYXNlIDI3IDogCisgICAgICAgIGNhc2UgMjggOiAKKyAgICAgICAgY2FzZSAyOSA6IAorICAg
ICAgICBjYXNlIDMwIDogCisgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgY2FzZSAzNCA6IAor
ICAgICAgICBjYXNlIDM2IDogCisgICAgICAgIGNhc2UgMzggOiAKKyAgICAgICAgY2FzZSAzOSA6
IAorICAgICAgICBjYXNlIDQxIDogCisgICAgICAgIGNhc2UgNDIgOiAKKyAgICAgICAgY2FzZSA0
NiA6IAorICAgICAgICBjYXNlIDQ3IDogCisgICAgICAgIGNhc2UgNDggOiAKKyAgICAgICAgY2Fz
ZSA0OSA6IAorICAgICAgICBjYXNlIDUwIDogCisgICAgICAgIGNhc2UgNTEgOiAKKyAgICAgICAg
Y2FzZSA1MiA6IAorICAgICAgICBjYXNlIDUzIDogCisgICAgICAgIGNhc2UgNTQgOiAKKyAgICAg
ICAgY2FzZSA1NSA6IAorICAgICAgICBjYXNlIDU2IDogCisgICAgICAgIGNhc2UgNTcgOiAKKyAg
ICAgICAgY2FzZSA1OCA6IAorICAgICAgICBjYXNlIDU5IDogCisgICAgICAgIGNhc2UgNjAgOiAK
KyAgICAgICAgY2FzZSA2MSA6IAorICAgICAgICBjYXNlIDYyIDogCisgICAgICAgIGNhc2UgNjMg
OiAKKyAgICAgICAgY2FzZSA2NSA6IAorICAgICAgICBjYXNlIDY4IDogCisgICAgICAgIGNhc2Ug
NzIgOiAKKyAgICAgICAgY2FzZSA3MyA6IAorICAgICAgICBjYXNlIDc0IDogCisgICAgICAgIGNh
c2UgNzUgOiAKKyAgICAgICAgY2FzZSA3NyA6IAorICAgICAgICBjYXNlIDc5IDogCisgICAgICAg
IGNhc2UgODAgOiAKKyAgICAgICAgY2FzZSA4MSA6IAorICAgICAgICBjYXNlIDgyIDogCisgICAg
ICAgIGNhc2UgODQgOiAKKyAgICAgICAgY2FzZSA4NSA6IAorICAgICAgICBjYXNlIDg2IDogCisg
ICAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgY2FzZSA4OSA6IAorICAgICAgICBjYXNlIDkwIDog
CisgICAgICAgIGNhc2UgOTIgOiAKKyAgICAgICAgY2FzZSA5MyA6IAorICAgICAgICBjYXNlIDk0
IDogCisgICAgICAgIGNhc2UgOTYgOiAKKyAgICAgICAgY2FzZSAxMDQgOiAKKyAgICAgICAgY2Fz
ZSAxMDYgOiAKKyAgICAgICAgY2FzZSAxMDcgOiAKKyAgICAgICAgY2FzZSAxMDkgOiAKKyAgICAg
ICAgY2FzZSAxMTIgOiAKKyAgICAgICAgY2FzZSAxMTMgOiAKKyAgICAgICAgY2FzZSAxMTggOiAK
KyAgICAgICAgY2FzZSAxMTkgOiAKKyAgICAgICAgY2FzZSAxMjEgOiAKKyAgICAgICAgY2FzZSAx
MjIgOiAKKyAgICAgICAgICAgIGV4aXQkMSA9IDY7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSAxMjMgOiAKKyAgICAgICAgICAgIHZhciBzdWJfZW5kJDEgPSBzZWFyY2hfc3ViZm9y
bWF0X2VuZChzdHJfaW5kLCBlbmRfaW5kLCAvKiAifSIgKi8xMjUpOworICAgICAgICAgICAgdmFy
IG1hdGNoJDE2ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBzdWJfZW5kJDEpOwor
ICAgICAgICAgICAgdmFyIGJlZ19pbmQkMSA9IHN1Yl9lbmQkMSArIDIgfCAwOworICAgICAgICAg
ICAgdmFyIG1hdGNoJDE3ID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDEsIGJlZ19pbmQkMSwgZW5k
X2luZCk7CisgICAgICAgICAgICB2YXIgZm10X3Jlc3QkOCA9IG1hdGNoJDE3WzBdOworICAgICAg
ICAgICAgdmFyIHN1Yl9mbXR0eSQxID0gZm10dHlfb2ZfZm10KG1hdGNoJDE2WzBdKTsKKyAgICAg
ICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAg
ICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWRfMDAw
JDIgPSBvcHRfb2ZfcGFkKC8qICJfIiAqLzk1LCBwYWQpOworICAgICAgICAgICAgICB2YXIgaWdu
b3JlZCQ1ID0gLyogSWdub3JlZF9mb3JtYXRfYXJnICovQmxvY2suX18oNywgWworICAgICAgICAg
ICAgICAgICAgaWdub3JlZF8wMDAkMiwKKyAgICAgICAgICAgICAgICAgIHN1Yl9mbXR0eSQxCisg
ICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJC
ICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAg
ICBpZ25vcmVkJDUsCisgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDgKKyAgICAgICAgICAg
ICAgICAgIF0pXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0g
LyogRm10X0VCQiAqL1svKiBGb3JtYXRfYXJnICovQmxvY2suX18oMTMsIFsKKyAgICAgICAgICAg
ICAgICAgICAgb3B0X29mX3BhZCgvKiAieyIgKi8xMjMsIHBhZCksCisgICAgICAgICAgICAgICAg
ICAgIHN1Yl9mbXR0eSQxLAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ4CisgICAgICAg
ICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgCisgICAgICB9CisgICAgfQorICAgIHN3aXRjaCAoZXhpdCQyKSB7CisgICAgICBjYXNlIDcg
OiAKKyAgICAgICAgICBwbHVzX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICBzaGFycF91
c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgc3BhY2VfdXNlZCA9IC8qIHRydWUgKi8xOwor
ICAgICAgICAgIHZhciBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYocGN0X2luZCwgc3RyX2luZCwg
cGx1cywgc2hhcnAsIHNwYWNlLCBzeW1iKTsKKyAgICAgICAgICB2YXIgbWF0Y2gkMTggPSBwYXJz
ZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgIHZhciBmbXRf
cmVzdCQ5ID0gbWF0Y2gkMThbMF07CisgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1
ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAg
ICAgICAgIHZhciBpZ25vcmVkXzAwMSA9IG9wdF9vZl9wYWQoLyogIl8iICovOTUsIHBhZCk7Cisg
ICAgICAgICAgICB2YXIgaWdub3JlZCQ2ID0gLyogSWdub3JlZF9pbnQgKi9CbG9jay5fXygyLCBb
CisgICAgICAgICAgICAgICAgaWNvbnYsCisgICAgICAgICAgICAgICAgaWdub3JlZF8wMDEKKyAg
ICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1sv
KiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgIGlnbm9y
ZWQkNiwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDkKKyAgICAgICAgICAgICAgICBdKV07
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFkX3VzZWQgPSAv
KiB0cnVlICovMTsKKyAgICAgICAgICAgIHByZWNfdXNlZFswXSA9IC8qIHRydWUgKi8xOworICAg
ICAgICAgICAgdmFyIHBhZCQzOworICAgICAgICAgICAgdmFyIGV4aXQkMyA9IDA7CisgICAgICAg
ICAgICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiICYmIHByZWMgPT09IDApIHsKKyAgICAg
ICAgICAgICAgcGFkJDMgPSBwYWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgZXhpdCQzID0gOTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChleGl0JDMgPT09IDkpIHsKKyAgICAgICAgICAgICAgcGFkJDMgPSB0eXBlb2YgcGFkID09PSAi
bnVtYmVyIiA/IC8qIE5vX3BhZGRpbmcgKi8wIDogKAorICAgICAgICAgICAgICAgICAgcGFkLnRh
ZyA/ICgKKyAgICAgICAgICAgICAgICAgICAgICBwYWRbMF0gPj0gMiA/ICgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGVnYWN5X2JlaGF2aW9yJDEgPyAvKiBBcmdfcGFkZGluZyAqL0Jsb2Nr
Ll9fKDEsIFsvKiBSaWdodCAqLzFdKSA6IGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9p
bmQsIC8qICIwIiAqLzQ4LCAicHJlY2lzaW9uIikKKyAgICAgICAgICAgICAgICAgICAgICAgICkg
OiBwYWQKKyAgICAgICAgICAgICAgICAgICAgKSA6ICgKKyAgICAgICAgICAgICAgICAgICAgICBw
YWRbMF0gPj0gMiA/ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5X2JlaGF2aW9y
JDEgPyAvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogUmlnaHQgKi8xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYWRbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pIDogaW5jb21wYXRpYmxl
X2ZsYWcocGN0X2luZCwgc3RyX2luZCwgLyogIjAiICovNDgsICJwcmVjaXNpb24iKQorICAgICAg
ICAgICAgICAgICAgICAgICAgKSA6IHBhZAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBtYXRjaCQxOSA9IG1h
a2VfcGFkcHJlY19mbXRfZWJiKHBhZCQzLCAocHJlY191c2VkWzBdID0gLyogdHJ1ZSAqLzEsIHBy
ZWMpLCBmbXRfcmVzdCQ5KTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICov
Wy8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGljb252LAorICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMTlbMF0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQxOVsxXSwK
KyAgICAgICAgICAgICAgICAgIG1hdGNoJDE5WzJdCisgICAgICAgICAgICAgICAgXSldOworICAg
ICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIGlm
IChzdHJfaW5kID09PSBlbmRfaW5kIHx8ICFpc19pbnRfYmFzZShDYW1sX3N0cmluZy5nZXQoc3Ry
LCBzdHJfaW5kKSkpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyMCA9IHBhcnNlX2xpdGVyYWwo
c3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIgZm10X3Jlc3QkMTAg
PSBtYXRjaCQyMFswXTsKKyAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcl9vZl9jaGFy
KHN5bWIpOworICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikg
eworICAgICAgICAgICAgICB2YXIgaWdub3JlZCQ3ID0gLyogSWdub3JlZF9zY2FuX2dldF9jb3Vu
dGVyICovQmxvY2suX18oMTAsIFtjb3VudGVyXSk7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQg
PSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAg
ICAgICAgICAgICAgICBpZ25vcmVkJDcsCisgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEw
CisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogU2Nhbl9nZXRf
Y291bnRlciAqL0Jsb2NrLl9fKDIxLCBbCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIsCisg
ICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEwCisgICAgICAgICAgICAgICAgICBdKV07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ZXhpdCQxID0gNjsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9
CisgICAgc3dpdGNoIChleGl0JDEpIHsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHBsdXNf
dXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgIHNwYWNlX3VzZWQgPSAvKiB0cnVlICovMTsK
KyAgICAgICAgICB2YXIgZmNvbnYgPSBjb21wdXRlX2Zsb2F0X2NvbnYocGN0X2luZCwgc3RyX2lu
ZCwgcGx1cywgc3BhY2UsIHN5bWIpOworICAgICAgICAgIHZhciBtYXRjaCQyMSA9IHBhcnNlX2xp
dGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgdmFyIGZtdF9yZXN0
JDExID0gbWF0Y2gkMjFbMF07CisgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAq
LzEsIGlnbikgeworICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAg
ICAgIHZhciBpZ25vcmVkXzAwMCQzID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwgcGFkKTsKKyAg
ICAgICAgICAgIHZhciBpZ25vcmVkXzAwMSQxID0gZ2V0X3ByZWNfb3B0KC8qICgpICovMCk7Cisg
ICAgICAgICAgICB2YXIgaWdub3JlZCQ4ID0gLyogSWdub3JlZF9mbG9hdCAqL0Jsb2NrLl9fKDYs
IFsKKyAgICAgICAgICAgICAgICBpZ25vcmVkXzAwMCQzLAorICAgICAgICAgICAgICAgIGlnbm9y
ZWRfMDAxJDEKKyAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyog
Rm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAg
ICAgICAgIGlnbm9yZWQkOCwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDExCisgICAgICAg
ICAgICAgICAgXSldOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMjIgPSBtYWtl
X3BhZHByZWNfZm10X2ViYihwYWQsIChwcmVjX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgcHJlYyks
IGZtdF9yZXN0JDExKTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8q
IEZsb2F0ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgZmNvbnYsCisgICAgICAg
ICAgICAgICAgICBtYXRjaCQyMlswXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDIyWzFdLAor
ICAgICAgICAgICAgICAgICAgbWF0Y2gkMjJbMl0KKyAgICAgICAgICAgICAgICBdKV07CisgICAg
ICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgdmFy
IG1hdGNoJDIzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAg
ICAgICAgICB2YXIgZm10X3Jlc3QkMTIgPSBtYXRjaCQyM1swXTsKKyAgICAgICAgICBmbXRfcmVz
dWx0ID0gKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgPyAvKiBGbXRfRUJCICovWy8q
IElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAgLyogSWdu
b3JlZF9ib29sICovMiwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEyCisgICAgICAgICAg
ICAgICAgXSldIDogLyogRm10X0VCQiAqL1svKiBCb29sICovQmxvY2suX18oOSwgW2ZtdF9yZXN0
JDEyXSldOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgdmFy
IG1hdGNoJDI0ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAg
ICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBDaGFyX2xpdGVyYWwgKi9CbG9j
ay5fXygxMiwgWworICAgICAgICAgICAgICAgIHN5bWIsCisgICAgICAgICAgICAgICAgbWF0Y2gk
MjRbMF0KKyAgICAgICAgICAgICAgXSldOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1
IDogCisgICAgICAgICAgZm10X3Jlc3VsdCA9IEN1cnJ5Ll8zKGZhaWx3aXRoX21lc3NhZ2UoLyog
Rm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2Nr
Ll9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXQgY2hhcmFjdGVyIG51bWJlciAiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEx
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgZmxhZyAiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfY2hhciAqL0Js
b2NrLl9fKDEsIFsvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGlzIG9ubHkgYWxsb3dlZCBh
ZnRlciB0aGUgJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICIlIiAqLzM3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRl
cmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIicsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb24iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAg
ICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzogYXQg
Y2hhcmFjdGVyIG51bWJlciAlZCwgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICcl
JScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb24iCisgICAgICAgICAgICAgICAgICBdKSwg
c3RyLCBwY3RfaW5kLCBzeW1iKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6IAor
ICAgICAgICAgIGlmIChzeW1iID49IDEwOCkgeworICAgICAgICAgICAgaWYgKHN5bWIgPj0gMTEx
KSB7CisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgIHN3aXRjaCAoc3ltYiAtIDEwOCB8IDApIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgcGx1c191c2VkID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgICAgICAgICAgIHNoYXJwX3VzZWQgPSAvKiB0cnVlICovMTsKKyAg
ICAgICAgICAgICAgICAgICAgc3BhY2VfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAg
ICAgICAgICB2YXIgaWNvbnYkMSA9IGNvbXB1dGVfaW50X2NvbnYocGN0X2luZCwgc3RyX2luZCAr
IDEgfCAwLCBwbHVzLCBzaGFycCwgc3BhY2UsIENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQp
KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkMiA9IHN0cl9pbmQgKyAxIHwgMDsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDI1ID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5k
JDIsIGJlZ19pbmQkMiwgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgICAgIHZhciBmbXRfcmVz
dCQxMyA9IG1hdGNoJDI1WzBdOworICAgICAgICAgICAgICAgICAgICBpZiAoaWduX3VzZWRbMF0g
PSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgICAgICAgICAgcGFkX3VzZWQgPSAv
KiB0cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgaWdub3JlZF8wMDEkMiA9IG9w
dF9vZl9wYWQoLyogIl8iICovOTUsIHBhZCk7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIGln
bm9yZWQkOSA9IC8qIElnbm9yZWRfaW50MzIgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGljb252JDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRf
MDAxJDIKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAg
IGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygy
MywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQkOSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbXRfcmVzdCQxMworICAgICAgICAgICAgICAgICAgICAgICAgICBd
KV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAg
ICAgICAgICAgICB2YXIgbWF0Y2gkMjYgPSBtYWtlX3BhZHByZWNfZm10X2ViYihwYWQsIChwcmVj
X3VzZWRbMF0gPSAvKiB0cnVlICovMSwgcHJlYyksIGZtdF9yZXN0JDEzKTsKKyAgICAgICAgICAg
ICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJbnQzMiAqL0Jsb2NrLl9f
KDUsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29udiQxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDI2WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDI2WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI2WzJdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICBwbHVzX3VzZWQgPSAv
KiB0cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgc2hhcnBfdXNlZCA9IC8qIHRydWUgKi8x
OworICAgICAgICAgICAgICAgICAgICBzcGFjZV91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBpY29udiQyID0gY29tcHV0ZV9pbnRfY29udihwY3RfaW5kLCBzdHJf
aW5kICsgMSB8IDAsIHBsdXMsIHNoYXJwLCBzcGFjZSwgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3Ry
X2luZCkpOworICAgICAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQzID0gc3RyX2luZCArIDEg
fCAwOworICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMjcgPSBwYXJzZV9saXRlcmFsKGJl
Z19pbmQkMywgYmVnX2luZCQzLCBlbmRfaW5kKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGZt
dF9yZXN0JDE0ID0gbWF0Y2gkMjdbMF07CisgICAgICAgICAgICAgICAgICAgIGlmIChpZ25fdXNl
ZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgICAgICAgICBwYWRfdXNl
ZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMSQz
ID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwgcGFkKTsKKyAgICAgICAgICAgICAgICAgICAgICB2
YXIgaWdub3JlZCQxMCA9IC8qIElnbm9yZWRfbmF0aXZlaW50ICovQmxvY2suX18oNCwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICBpY29udiQyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZ25vcmVkXzAwMSQzCisgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAg
ICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICov
QmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkJDEwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDE0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOwor
ICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQyOCA9IG1ha2VfcGFkcHJlY19mbXRfZWJi
KHBhZCwgKHByZWNfdXNlZFswXSA9IC8qIHRydWUgKi8xLCBwcmVjKSwgZm10X3Jlc3QkMTQpOwor
ICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIE5hdGl2
ZWludCAqL0Jsb2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29udiQy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI4WzBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDI4WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDI4WzJdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChzeW1iICE9PSA3NikgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGx1c191c2VkID0gLyogdHJ1ZSAqLzE7
CisgICAgICAgICAgICBzaGFycF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICBzcGFj
ZV91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgaWNvbnYkMyA9IGNvbXB1dGVf
aW50X2NvbnYocGN0X2luZCwgc3RyX2luZCArIDEgfCAwLCBwbHVzLCBzaGFycCwgc3BhY2UsIENh
bWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpKTsKKyAgICAgICAgICAgIHZhciBiZWdfaW5kJDQg
PSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMjkgPSBwYXJzZV9saXRl
cmFsKGJlZ19pbmQkNCwgYmVnX2luZCQ0LCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBmbXRf
cmVzdCQxNSA9IG1hdGNoJDI5WzBdOworICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyog
dHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOwor
ICAgICAgICAgICAgICB2YXIgaWdub3JlZF8wMDEkNCA9IG9wdF9vZl9wYWQoLyogIl8iICovOTUs
IHBhZCk7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkJDExID0gLyogSWdub3JlZF9pbnQ2NCAq
L0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAgICAgICAgIGljb252JDMsCisgICAgICAgICAgICAg
ICAgICBpZ25vcmVkXzAwMSQ0CisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIGZt
dF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywg
WworICAgICAgICAgICAgICAgICAgICBpZ25vcmVkJDExLAorICAgICAgICAgICAgICAgICAgICBm
bXRfcmVzdCQxNQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAg
ICAgICAgICAgIHZhciBtYXRjaCQzMCA9IG1ha2VfcGFkcHJlY19mbXRfZWJiKHBhZCwgKHByZWNf
dXNlZFswXSA9IC8qIHRydWUgKi8xLCBwcmVjKSwgZm10X3Jlc3QkMTUpOworICAgICAgICAgICAg
ICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJbnQ2NCAqL0Jsb2NrLl9fKDcsIFsKKyAg
ICAgICAgICAgICAgICAgICAgaWNvbnYkMywKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMzBb
MF0sCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDMwWzFdLAorICAgICAgICAgICAgICAgICAg
ICBtYXRjaCQzMFsyXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAgICBpZiAoZXhpdCA9
PT0gMSkgeworICAgICAgZm10X3Jlc3VsdCA9IEN1cnJ5Ll8zKGZhaWx3aXRoX21lc3NhZ2UoLyog
Rm9ybWF0ICovWworICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18o
MTEsIFsKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAg
ICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAg
ICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBT
dHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIjogYXQgY2hhcmFjdGVyIG51bWJlciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRk
aW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9u
ICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwg
Ki9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywg
aW52YWxpZCBjb252ZXJzaW9uICInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiAiJSIgKi8zNywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBDaGFyICovQmxvY2suX18oMCwgWy8qIENoYXJfbGl0ZXJhbCAq
L0Jsb2NrLl9fKDEyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiAiXCIiICovMzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
XSkKKyAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgXSksCisgICAg
ICAgICAgICAgICAgJ2ludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBp
bnZhbGlkIGNvbnZlcnNpb24gIiUlJWMiJworICAgICAgICAgICAgICBdKSwgc3RyLCBzdHJfaW5k
IC0gMSB8IDAsIHN5bWIpOworICAgIH0KKyAgICBpZiAoIWxlZ2FjeV9iZWhhdmlvciQxKSB7Cisg
ICAgICBpZiAoIXBsdXNfdXNlZCAmJiBwbHVzKSB7CisgICAgICAgIGluY29tcGF0aWJsZV9mbGFn
KHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIsICInKyciKTsKKyAgICAgIH0KKyAgICAgIGlmICghc2hh
cnBfdXNlZCAmJiBzaGFycCkgeworICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBz
dHJfaW5kLCBzeW1iLCAiJyMnIik7CisgICAgICB9CisgICAgICBpZiAoIXNwYWNlX3VzZWQgJiYg
c3BhY2UpIHsKKyAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgc3lt
YiwgIicgJyIpOworICAgICAgfQorICAgICAgaWYgKCFwYWRfdXNlZCAmJiBDYW1sX29iai5jYW1s
X25vdGVxdWFsKC8qIFBhZGRpbmdfRUJCICovW3BhZF0sIC8qIFBhZGRpbmdfRUJCICovWy8qIE5v
X3BhZGRpbmcgKi8wXSkpIHsKKyAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3Ry
X2luZCwgc3ltYiwgImBwYWRkaW5nJyIpOworICAgICAgfQorICAgICAgaWYgKCFwcmVjX3VzZWRb
MF0gJiYgQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBQcmVjaXNpb25fRUJCICovW3ByZWNdLCAv
KiBQcmVjaXNpb25fRUJCICovWy8qIE5vX3ByZWNpc2lvbiAqLzBdKSkgeworICAgICAgICBpbmNv
bXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBpZ24gPyAvKiAiXyIgKi85NSA6IHN5bWIs
ICJgcHJlY2lzaW9uJyIpOworICAgICAgfQorICAgICAgaWYgKGlnbiAmJiBwbHVzKSB7CisgICAg
ICAgIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICJfIiAqLzk1LCAiJysn
Iik7CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgaWYgKCFpZ25fdXNlZFswXSAmJiBpZ24p
IHsKKyAgICAgIHZhciBleGl0JDQgPSAwOworICAgICAgaWYgKHN5bWIgPj0gMzgpIHsKKyAgICAg
ICAgaWYgKHN5bWIgIT09IDQ0KSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDY0KSB7CisgICAg
ICAgICAgICBleGl0JDQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmICghbGVn
YWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9IDE7CisgICAgICAgICAgfQor
ICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFsZWdhY3lfYmVoYXZpb3Ik
MSkgeworICAgICAgICAgIGV4aXQkNCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICB9
CisgICAgICBlbHNlIGlmIChzeW1iICE9PSAzMykgeworICAgICAgICBpZiAoc3ltYiA+PSAzNykg
eworICAgICAgICAgIGlmICghbGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIGV4aXQk
NCA9IDE7CisgICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIGV4aXQkNCA9IDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKCFsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICBleGl0JDQgPSAxOworICAgICAgfQor
ICAgICAgaWYgKGV4aXQkNCA9PT0gMSkgeworICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyhwY3Rf
aW5kLCBzdHJfaW5kLCBzeW1iLCAiJ18nIik7CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAg
cmV0dXJuIGZtdF9yZXN1bHQ7CisgIH07CisgIHZhciBwYXJzZV9mbGFncyA9IGZ1bmN0aW9uIChw
Y3RfaW5kLCBzdHJfaW5kLCBlbmRfaW5kLCBpZ24pIHsKKyAgICB2YXIgemVybyA9IFsvKiBmYWxz
ZSAqLzBdOworICAgIHZhciBtaW51cyA9IFsvKiBmYWxzZSAqLzBdOworICAgIHZhciBwbHVzID0g
Wy8qIGZhbHNlICovMF07CisgICAgdmFyIHNwYWNlID0gWy8qIGZhbHNlICovMF07CisgICAgdmFy
IHNoYXJwID0gWy8qIGZhbHNlICovMF07CisgICAgdmFyIHNldF9mbGFnID0gZnVuY3Rpb24gKHN0
cl9pbmQsIGZsYWcpIHsKKyAgICAgIGlmIChmbGFnWzBdICYmICFsZWdhY3lfYmVoYXZpb3IkMSkg
eworICAgICAgICBDdXJyeS5fMyhmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAg
ICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAv
KiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19s
aXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6
IGF0IGNoYXJhY3RlciBudW1iZXIgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBJbnRfZCAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFk
ZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lz
aW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0
ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIsIGR1cGxpY2F0ZSBmbGFnICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIENhbWxfY2hhciAqL0Jsb2NrLl9fKDEsIFsvKiBFbmRfb2ZfZm9ybWF0ICovMF0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAg
ICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAg
ICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZHVw
bGljYXRlIGZsYWcgJUMiCisgICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2luZCwgQ2FtbF9z
dHJpbmcuZ2V0KHN0ciwgc3RyX2luZCkpOworICAgICAgfQorICAgICAgZmxhZ1swXSA9IC8qIHRy
dWUgKi8xOworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9OworICAgIHZhciBfc3RyX2lu
ZCA9IHN0cl9pbmQ7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHN0cl9pbmQkMSA9IF9z
dHJfaW5kOworICAgICAgaWYgKHN0cl9pbmQkMSA9PT0gZW5kX2luZCkgeworICAgICAgICBpbnZh
bGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsK
KyAgICAgIH0KKyAgICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQk
MSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDMy
IHwgMDsKKyAgICAgIGlmIChzd2l0Y2hlciA+IDE2IHx8IHN3aXRjaGVyIDwgMCkgeworICAgICAg
ICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzd2l0Y2ggKHN3aXRj
aGVyKSB7CisgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgIHNldF9mbGFnKHN0cl9p
bmQkMSwgc3BhY2UpOworICAgICAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQkMSArIDEgfCAw
OworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAg
ICAgICAgICAgICBzZXRfZmxhZyhzdHJfaW5kJDEsIHNoYXJwKTsKKyAgICAgICAgICAgICAgX3N0
cl9pbmQgPSBzdHJfaW5kJDEgKyAxIHwgMDsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgIHNldF9mbGFnKHN0cl9pbmQkMSwg
cGx1cyk7CisgICAgICAgICAgICAgIF9zdHJfaW5kID0gc3RyX2luZCQxICsgMSB8IDA7CisgICAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAg
ICAgICBzZXRfZmxhZyhzdHJfaW5kJDEsIG1pbnVzKTsKKyAgICAgICAgICAgICAgX3N0cl9pbmQg
PSBzdHJfaW5kJDEgKyAxIHwgMDsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICBjYXNlIDQgOiAK
KyAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICBjYXNl
IDcgOiAKKyAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAg
ICBjYXNlIDEwIDogCisgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIGNhc2UgMTQgOiAK
KyAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDE2IDogCisgICAgICAgICAgICAgIHNldF9mbGFn
KHN0cl9pbmQkMSwgemVybyk7CisgICAgICAgICAgICAgIF9zdHJfaW5kID0gc3RyX2luZCQxICsg
MSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgIHZhciBwY3RfaW5k
JDEgPSBwY3RfaW5kOworICAgICAgICB2YXIgc3RyX2luZCQyID0gc3RyX2luZCQxOworICAgICAg
ICB2YXIgZW5kX2luZCQxID0gZW5kX2luZDsKKyAgICAgICAgdmFyIHplcm8kMSA9IHplcm9bMF07
CisgICAgICAgIHZhciBtaW51cyQxID0gbWludXNbMF07CisgICAgICAgIHZhciBwbHVzJDEgPSBw
bHVzWzBdOworICAgICAgICB2YXIgc2hhcnAkMSA9IHNoYXJwWzBdOworICAgICAgICB2YXIgc3Bh
Y2UkMSA9IHNwYWNlWzBdOworICAgICAgICB2YXIgaWduJDEgPSBpZ247CisgICAgICAgIGlmIChz
dHJfaW5kJDIgPT09IGVuZF9pbmQkMSkgeworICAgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3Nh
Z2UoZW5kX2luZCQxLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgICAgIH0KKyAg
ICAgICAgdmFyIHBhZHR5ID0gemVybyQxICE9PSAwID8gKAorICAgICAgICAgICAgbWludXMkMSAh
PT0gMCA/ICgKKyAgICAgICAgICAgICAgICBsZWdhY3lfYmVoYXZpb3IkMSA/IC8qIExlZnQgKi8w
IDogaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCQxLCBzdHJfaW5kJDIsIC8qICItIiAqLzQ1LCAi
MCIpCisgICAgICAgICAgICAgICkgOiAvKiBaZXJvcyAqLzIKKyAgICAgICAgICApIDogKAorICAg
ICAgICAgICAgbWludXMkMSAhPT0gMCA/IC8qIExlZnQgKi8wIDogLyogUmlnaHQgKi8xCisgICAg
ICAgICAgKTsKKyAgICAgICAgdmFyIG1hdGNoJDEgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJf
aW5kJDIpOworICAgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgICAgaWYgKG1hdGNoJDEgPj0g
NDgpIHsKKyAgICAgICAgICBpZiAobWF0Y2gkMSA+PSA1OCkgeworICAgICAgICAgICAgZXhpdCQx
ID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkMiA9IHBhcnNlX3Bvc2l0aXZlKHN0cl9pbmQkMiwgZW5kX2luZCQxLCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZV9hZnRlcl9wYWRkaW5nKHBjdF9pbmQkMSwgbWF0Y2gkMlswXSwgZW5k
X2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGlnbiQxLCAvKiBMaXRf
cGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkdHks
CisgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDJbMV0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIF0pKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobWF0
Y2gkMSAhPT0gNDIpIHsKKyAgICAgICAgICBleGl0JDEgPSAxOworICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgIHJldHVybiBwYXJzZV9hZnRlcl9wYWRkaW5nKHBjdF9pbmQkMSwg
c3RyX2luZCQyICsgMSB8IDAsIGVuZF9pbmQkMSwgbWludXMkMSwgcGx1cyQxLCBzaGFycCQxLCBz
cGFjZSQxLCBpZ24kMSwgLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbcGFkdHldKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMSA9PT0gMSkgeworICAgICAgICAgIHN3aXRjaCAo
cGFkdHkpIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgIGlmICghbGVn
YWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhv
dXQoc3RyX2luZCQyIC0gMSB8IDAsIC8qICItIiAqLzQ1LCAicGFkZGluZyIpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhwY3Rf
aW5kJDEsIHN0cl9pbmQkMiwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNw
YWNlJDEsIGlnbiQxLCAvKiBOb19wYWRkaW5nICovMCk7CisgICAgICAgICAgICBjYXNlIDEgOiAK
KyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhwY3RfaW5kJDEsIHN0
cl9pbmQkMiwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGln
biQxLCAvKiBOb19wYWRkaW5nICovMCk7CisgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhwY3RfaW5kJDEsIHN0cl9pbmQkMiwg
ZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGlnbiQxLCAvKiBM
aXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICB9CisgICAgICAKKyAgICB9OworICB9OworICB2YXIgaXNf
aW50X2Jhc2UgPSBmdW5jdGlvbiAoc3ltYikgeworICAgIHZhciBzd2l0Y2hlciA9IHN5bWIgLSA4
OCB8IDA7CisgICAgaWYgKHN3aXRjaGVyID4gMzIgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgICBy
ZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoc3dp
dGNoZXIpIHsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICBj
YXNlIDYgOiAKKyAgICAgICAgY2FzZSA3IDogCisgICAgICAgIGNhc2UgOCA6IAorICAgICAgICBj
YXNlIDkgOiAKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICBjYXNlIDExIDogCisgICAgICAg
IGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICBjYXNlIDE1IDogCisgICAg
ICAgIGNhc2UgMTYgOiAKKyAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICBjYXNlIDE5IDogCisg
ICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgY2FzZSAyMSA6IAorICAgICAgICBjYXNlIDIyIDog
CisgICAgICAgIGNhc2UgMjQgOiAKKyAgICAgICAgY2FzZSAyNSA6IAorICAgICAgICBjYXNlIDI2
IDogCisgICAgICAgIGNhc2UgMjcgOiAKKyAgICAgICAgY2FzZSAyOCA6IAorICAgICAgICBjYXNl
IDMwIDogCisgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBmYWxzZSAq
LzA7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICBjYXNlIDEyIDogCisgICAgICAgIGNhc2Ug
MTcgOiAKKyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICBjYXNlIDI5IDogCisgICAgICAgIGNh
c2UgMzIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICAgICAgCisgICAg
ICB9CisgICAgfQorICB9OworICB2YXIgY291bnRlcl9vZl9jaGFyID0gZnVuY3Rpb24gKHN5bWIp
IHsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHN5bWIgPj0gMTA4KSB7CisgICAgICBpZiAo
c3ltYiA+PSAxMTEpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgc3dpdGNoIChzeW1iIC0gMTA4IHwgMCkgeworICAgICAgICAgIGNhc2UgMCA6IAor
ICAgICAgICAgICAgICByZXR1cm4gLyogTGluZV9jb3VudGVyICovMDsKKyAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICByZXR1cm4gLyogQ2hhcl9jb3VudGVyICov
MTsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChz
eW1iICE9PSA3NikgeworICAgICAgZXhpdCA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
cmV0dXJuIC8qIFRva2VuX2NvdW50ZXIgKi8yOworICAgIH0KKyAgICBpZiAoZXhpdCA9PT0gMSkg
eworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNz
ZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxG
b3JtYXQubWwiLAorICAgICAgICAgICAgICAyNjgzLAorICAgICAgICAgICAgICAzNAorICAgICAg
ICAgICAgXQorICAgICAgICAgIF07CisgICAgfQorICAgIAorICB9OworICB2YXIgcGFyc2VfY2hh
cl9zZXQgPSBmdW5jdGlvbiAoc3RyX2luZCwgZW5kX2luZCkgeworICAgIGlmIChzdHJfaW5kID09
PSBlbmRfaW5kKSB7CisgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4
cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICB9CisgICAgdmFyIGNoYXJfc2V0ID0gQnl0ZXMu
bWFrZSgzMiwgLyogIlwwMDAiICovMCk7CisgICAgdmFyIGFkZF9yYW5nZSA9IGZ1bmN0aW9uIChj
LCBjJHByaW1lKSB7CisgICAgICBmb3IodmFyIGkgPSBjOyBpIDw9IGMkcHJpbWU7ICsraSl7Cisg
ICAgICAgIGFkZF9pbl9jaGFyX3NldChjaGFyX3NldCwgUGVydmFzaXZlcy5jaGFyX29mX2ludChp
KSk7CisgICAgICB9CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH07CisgICAgdmFyIGZh
aWxfc2luZ2xlX3BlcmNlbnQgPSBmdW5jdGlvbiAoc3RyX2luZCkgeworICAgICAgcmV0dXJuIEN1
cnJ5Ll8yKGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAg
ICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBT
dHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIjogJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hh
cl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogIiUiICovMzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICInIGFsb25lIGlzIG5vdCBhY2NlcHRlZCBpbiBjaGFy
YWN0ZXIgc2V0cywgdXNlICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICIlIiAqLzM3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9f
KDEyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qICIlIiAqLzM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGluc3RlYWQgYXQgcG9z
aXRpb24gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFk
ZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9j
ay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiAiLiIgKi80NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IF0pLAorICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9u
ZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIHVzZSAlJSUlIGluc3RlYWQgYXQg
cG9zaXRpb24gJWQuIgorICAgICAgICAgICAgICAgICAgICBdKSwgc3RyLCBzdHJfaW5kKTsKKyAg
ICB9OworICAgIHZhciBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyID0gZnVuY3Rpb24gKF9zdHJf
aW5kLCBlbmRfaW5kLCBfYykgeworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIgYyA9
IF9jOworICAgICAgICB2YXIgc3RyX2luZCA9IF9zdHJfaW5kOworICAgICAgICBpZiAoc3RyX2lu
ZCA9PT0gZW5kX2luZCkgeworICAgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2lu
ZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgICB9CisgICAgICAgIHZhciBj
JHByaW1lID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCk7CisgICAgICAgIHZhciBleGl0
ID0gMDsKKyAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgIGlmIChjJHByaW1lID49IDQ2
KSB7CisgICAgICAgICAgaWYgKGMkcHJpbWUgIT09IDY0KSB7CisgICAgICAgICAgICBpZiAoYyRw
cmltZSAhPT0gOTMpIHsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgYWRkX2luX2NoYXJfc2V0KGNoYXJfc2V0
LCBjKTsKKyAgICAgICAgICAgICAgcmV0dXJuIHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBleGl0JDEgPSAy
OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjJHByaW1lICE9PSAz
NykgeworICAgICAgICAgIGlmIChjJHByaW1lID49IDQ1KSB7CisgICAgICAgICAgICB2YXIgc3Ry
X2luZCQxID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgdmFyIGVuZF9pbmQkMSA9IGVu
ZF9pbmQ7CisgICAgICAgICAgICB2YXIgYyQxID0gYzsKKyAgICAgICAgICAgIGlmIChzdHJfaW5k
JDEgPT09IGVuZF9pbmQkMSkgeworICAgICAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdl
KGVuZF9pbmQkMSwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgdmFyIGMkcHJpbWUkMSA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQk
MSk7CisgICAgICAgICAgICBpZiAoYyRwcmltZSQxICE9PSAzNykgeworICAgICAgICAgICAgICBp
ZiAoYyRwcmltZSQxICE9PSA5MykgeworICAgICAgICAgICAgICAgIGFkZF9yYW5nZShjJDEsIGMk
cHJpbWUkMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQo
c3RyX2luZCQxICsgMSB8IDAsIGVuZF9pbmQkMSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYWRkX2luX2NoYXJfc2V0KGNoYXJfc2V0LCBj
JDEpOworICAgICAgICAgICAgICAgIGFkZF9pbl9jaGFyX3NldChjaGFyX3NldCwgLyogIi0iICov
NDUpOworICAgICAgICAgICAgICAgIHJldHVybiBzdHJfaW5kJDEgKyAxIHwgMDsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IGlmICgoc3RyX2luZCQxICsgMSB8IDApID09PSBlbmRfaW5kJDEpIHsKKyAgICAgICAgICAgICAg
ICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQkMSwgInVuZXhwZWN0ZWQgZW5kIG9mIGZv
cm1hdCIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHZhciBjJHByaW1lJDIgPSBD
YW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kJDEgKyAxIHwgMCk7CisgICAgICAgICAgICAgIHZh
ciBleGl0JDIgPSAwOworICAgICAgICAgICAgICBpZiAoYyRwcmltZSQyICE9PSAzNykgeworICAg
ICAgICAgICAgICAgIGlmIChjJHByaW1lJDIgIT09IDY0KSB7CisgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFpbF9zaW5nbGVfcGVyY2VudChzdHJfaW5kJDEpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIGV4aXQkMiA9IDE7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIGV4aXQkMiA9IDE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgaWYgKGV4aXQkMiA9PT0gMSkgeworICAgICAgICAgICAgICAgIGFkZF9yYW5nZShjJDEsIGMk
cHJpbWUkMik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQo
c3RyX2luZCQxICsgMiB8IDAsIGVuZF9pbmQkMSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIGV4aXQkMSA9IDI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMSA9
PT0gMikgeworICAgICAgICAgIGlmIChjID09PSAvKiAiJSIgKi8zNykgeworICAgICAgICAgICAg
YWRkX2luX2NoYXJfc2V0KGNoYXJfc2V0LCBjJHByaW1lKTsKKyAgICAgICAgICAgIHJldHVybiBw
YXJzZV9jaGFyX3NldF9jb250ZW50KHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCk7CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgICAgaWYgKGMg
PT09IC8qICIlIiAqLzM3KSB7CisgICAgICAgICAgICBmYWlsX3NpbmdsZV9wZXJjZW50KHN0cl9p
bmQpOworICAgICAgICAgIH0KKyAgICAgICAgICBhZGRfaW5fY2hhcl9zZXQoY2hhcl9zZXQsIGMp
OworICAgICAgICAgIF9jID0gYyRwcmltZTsKKyAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQg
KyAxIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICB9OworICAgIH07CisgICAgdmFyIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQg
PSBmdW5jdGlvbiAoX3N0cl9pbmQsIGVuZF9pbmQpIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAg
ICAgICAgdmFyIHN0cl9pbmQgPSBfc3RyX2luZDsKKyAgICAgICAgaWYgKHN0cl9pbmQgPT09IGVu
ZF9pbmQpIHsKKyAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4
cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgYyA9IENhbWxf
c3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAgICBpZiAoYyAhPT0gNDUpIHsKKyAgICAg
ICAgICBpZiAoYyAhPT0gOTMpIHsKKyAgICAgICAgICAgIHJldHVybiBwYXJzZV9jaGFyX3NldF9h
ZnRlcl9jaGFyKHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCwgYyk7CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN0cl9pbmQgKyAxIHwgMDsKKyAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgYWRkX2luX2NoYXJf
c2V0KGNoYXJfc2V0LCAvKiAiLSIgKi80NSk7CisgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5k
ICsgMSB8IDA7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9Cisg
ICAgICB9OworICAgIH07CisgICAgdmFyIHBhcnNlX2NoYXJfc2V0X3N0YXJ0ID0gZnVuY3Rpb24g
KHN0cl9pbmQsIGVuZF9pbmQpIHsKKyAgICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7Cisg
ICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9m
IGZvcm1hdCIpOworICAgICAgfQorICAgICAgdmFyIGMgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBz
dHJfaW5kKTsKKyAgICAgIHJldHVybiBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyKHN0cl9pbmQg
KyAxIHwgMCwgZW5kX2luZCwgYyk7CisgICAgfTsKKyAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2lu
ZCkgeworICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBl
bmQgb2YgZm9ybWF0Iik7CisgICAgfQorICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChz
dHIsIHN0cl9pbmQpOworICAgIHZhciBtYXRjaCQxID0gbWF0Y2ggIT09IDk0ID8gLyogdHVwbGUg
Ki9bCisgICAgICAgIHN0cl9pbmQsCisgICAgICAgIC8qIGZhbHNlICovMAorICAgICAgXSA6IC8q
IHR1cGxlICovWworICAgICAgICBzdHJfaW5kICsgMSB8IDAsCisgICAgICAgIC8qIHRydWUgKi8x
CisgICAgICBdOworICAgIHZhciBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0KG1hdGNo
JDFbMF0sIGVuZF9pbmQpOworICAgIHZhciBjaGFyX3NldCQxID0gQnl0ZXMudG9fc3RyaW5nKGNo
YXJfc2V0KTsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBuZXh0X2luZCwK
KyAgICAgICAgICAgIG1hdGNoJDFbMV0gPyByZXZfY2hhcl9zZXQoY2hhcl9zZXQkMSkgOiBjaGFy
X3NldCQxCisgICAgICAgICAgXTsKKyAgfTsKKyAgdmFyIGNoZWNrX29wZW5fYm94ID0gZnVuY3Rp
b24gKGZtdCkgeworICAgIGlmICh0eXBlb2YgZm10ID09PSAibnVtYmVyIikgeworICAgICAgcmV0
dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSBpZiAoZm10LnRhZyA9PT0gMTEpIHsKKyAg
ICAgIGlmICh0eXBlb2YgZm10WzFdID09PSAibnVtYmVyIikgeworICAgICAgICB0cnkgeworICAg
ICAgICAgIG9wZW5fYm94X29mX3N0cmluZyhmbXRbMF0pOworICAgICAgICAgIHJldHVybiAvKiAo
KSAqLzA7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGV4bil7CisgICAgICAgICAgaWYgKGV4
blswXSA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSkgeworICAgICAgICAgICAg
cmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICB0aHJvdyBleG47CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0KKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgfTsKKyAgdmFyIHBhcnNlX3Rh
ZyA9IGZ1bmN0aW9uIChpc19vcGVuX3RhZywgc3RyX2luZCwgZW5kX2luZCkgeworICAgIHRyeSB7
CisgICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgICB0aHJvdyBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICB9CisgICAgICB2YXIgbWF0Y2ggPSBD
YW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgIGlmIChtYXRjaCAhPT0gNjApIHsK
KyAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciBpbmQgPSAkJFN0cmluZy5pbmRleF9mcm9tKHN0
ciwgc3RyX2luZCArIDEgfCAwLCAvKiAiPiIgKi82Mik7CisgICAgICAgIGlmIChpbmQgPj0gZW5k
X2luZCkgeworICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3Vu
ZDsKKyAgICAgICAgfQorICAgICAgICB2YXIgc3ViX3N0ciA9ICQkU3RyaW5nLnN1YihzdHIsIHN0
cl9pbmQsIChpbmQgLSBzdHJfaW5kIHwgMCkgKyAxIHwgMCk7CisgICAgICAgIHZhciBiZWdfaW5k
ID0gaW5kICsgMSB8IDA7CisgICAgICAgIHZhciBtYXRjaCQxID0gcGFyc2VfbGl0ZXJhbChiZWdf
aW5kLCBiZWdfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgdmFyIG1hdGNoJDIgPSBwYXJzZV9saXRl
cmFsKHN0cl9pbmQsIHN0cl9pbmQsIGluZCArIDEgfCAwKTsKKyAgICAgICAgdmFyIHN1Yl9mbXQg
PSBtYXRjaCQyWzBdOworICAgICAgICB2YXIgc3ViX2Zvcm1hdCA9IC8qIEZvcm1hdCAqL1sKKyAg
ICAgICAgICBzdWJfZm10LAorICAgICAgICAgIHN1Yl9zdHIKKyAgICAgICAgXTsKKyAgICAgICAg
dmFyIGZvcm1hdHRpbmcgPSBpc19vcGVuX3RhZyA/IC8qIE9wZW5fdGFnICovQmxvY2suX18oMCwg
W3N1Yl9mb3JtYXRdKSA6IChjaGVja19vcGVuX2JveChzdWJfZm10KSwgLyogT3Blbl9ib3ggKi9C
bG9jay5fXygxLCBbc3ViX2Zvcm1hdF0pKTsKKyAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9b
LyogRm9ybWF0dGluZ19nZW4gKi9CbG9jay5fXygxOCwgWworICAgICAgICAgICAgICAgICAgICBm
b3JtYXR0aW5nLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQxWzBdCisgICAgICAgICAgICAg
ICAgICBdKV07CisgICAgICB9CisgICAgfQorICAgIGNhdGNoIChleG4peworICAgICAgaWYgKGV4
biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7CisgICAgICAgIHZhciBt
YXRjaCQzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAg
ICAgdmFyIHN1Yl9mb3JtYXQkMSA9IC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAvKiBFbmRfb2Zf
Zm9ybWF0ICovMCwKKyAgICAgICAgICAiIgorICAgICAgICBdOworICAgICAgICB2YXIgZm9ybWF0
dGluZyQxID0gaXNfb3Blbl90YWcgPyAvKiBPcGVuX3RhZyAqL0Jsb2NrLl9fKDAsIFtzdWJfZm9y
bWF0JDFdKSA6IC8qIE9wZW5fYm94ICovQmxvY2suX18oMSwgW3N1Yl9mb3JtYXQkMV0pOworICAg
ICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2dlbiAqL0Jsb2NrLl9fKDE4
LCBbCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmckMSwKKyAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkM1swXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07CisgIHJldHVybiBw
YXJzZV9saXRlcmFsKDAsIDAsIHN0ci5sZW5ndGgpOworfQorCitmdW5jdGlvbiBmb3JtYXRfb2Zf
c3RyaW5nX2ZtdHR5KHN0ciwgZm10dHkpIHsKKyAgdmFyIG1hdGNoID0gZm10X2ViYl9vZl9zdHJp
bmcoLyogTm9uZSAqLzAsIHN0cik7CisgIHRyeSB7CisgICAgcmV0dXJuIC8qIEZvcm1hdCAqL1sK
KyAgICAgICAgICAgIHR5cGVfZm9ybWF0KG1hdGNoWzBdLCBmbXR0eSksCisgICAgICAgICAgICBz
dHIKKyAgICAgICAgICBdOworICB9CisgIGNhdGNoIChleG4peworICAgIGlmIChleG4gPT09IFR5
cGVfbWlzbWF0Y2gpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihmYWlsd2l0aF9tZXNzYWdlKC8q
IEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Js
b2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgaW5wdXQ6IGZvcm1h
dCB0eXBlIG1pc21hdGNoIGJldHdlZW4gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Q2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0
cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIGFuZCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENh
bWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAg
ICAgICAgICAgICAgICAgICAgICJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdl
ZW4gJVMgYW5kICVTIgorICAgICAgICAgICAgICAgICAgICBdKSwgc3RyLCBzdHJpbmdfb2ZfZm10
dHkoZm10dHkpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQor
ICB9Cit9CisKK2Z1bmN0aW9uIGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0KHN0ciwgcGFyYW0pIHsK
KyAgdmFyIG1hdGNoID0gZm10X2ViYl9vZl9zdHJpbmcoLyogTm9uZSAqLzAsIHN0cik7CisgIHRy
eSB7CisgICAgcmV0dXJuIC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgIHR5cGVfZm9ybWF0KG1h
dGNoWzBdLCBmbXR0eV9vZl9mbXQocGFyYW1bMF0pKSwKKyAgICAgICAgICAgIHN0cgorICAgICAg
ICAgIF07CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0gVHlwZV9taXNtYXRj
aCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8yKGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICov
WworICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEs
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlz
bWF0Y2ggYmV0d2VlbiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmlu
ZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3Bh
ZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVy
YWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
YW5kICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcg
Ki9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAg
ICAgICAgICAgImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQg
JVMiCisgICAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHBhcmFtWzFdKTsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9CisKK2V4cG9ydHMuaXNfaW5f
Y2hhcl9zZXQgICAgICAgICAgICAgICAgID0gaXNfaW5fY2hhcl9zZXQ7CitleHBvcnRzLnJldl9j
aGFyX3NldCAgICAgICAgICAgICAgICAgICA9IHJldl9jaGFyX3NldDsKK2V4cG9ydHMuY3JlYXRl
X2NoYXJfc2V0ICAgICAgICAgICAgICAgID0gY3JlYXRlX2NoYXJfc2V0OworZXhwb3J0cy5hZGRf
aW5fY2hhcl9zZXQgICAgICAgICAgICAgICAgPSBhZGRfaW5fY2hhcl9zZXQ7CitleHBvcnRzLmZy
ZWV6ZV9jaGFyX3NldCAgICAgICAgICAgICAgICA9IGZyZWV6ZV9jaGFyX3NldDsKK2V4cG9ydHMu
cGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0ID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRf
Zm9ybWF0OworZXhwb3J0cy5tYWtlX3ByaW50ZiAgICAgICAgICAgICAgICAgICAgPSBtYWtlX3By
aW50ZjsKK2V4cG9ydHMub3V0cHV0X2FjYyAgICAgICAgICAgICAgICAgICAgID0gb3V0cHV0X2Fj
YzsKK2V4cG9ydHMuYnVmcHV0X2FjYyAgICAgICAgICAgICAgICAgICAgID0gYnVmcHV0X2FjYzsK
K2V4cG9ydHMuc3RycHV0X2FjYyAgICAgICAgICAgICAgICAgICAgID0gc3RycHV0X2FjYzsKK2V4
cG9ydHMudHlwZV9mb3JtYXQgICAgICAgICAgICAgICAgICAgID0gdHlwZV9mb3JtYXQ7CitleHBv
cnRzLmZtdF9lYmJfb2Zfc3RyaW5nICAgICAgICAgICAgICA9IGZtdF9lYmJfb2Zfc3RyaW5nOwor
ZXhwb3J0cy5mb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5ICAgICAgICAgPSBmb3JtYXRfb2Zfc3RyaW5n
X2ZtdHR5OworZXhwb3J0cy5mb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCAgICAgICAgPSBmb3JtYXRf
b2Zfc3RyaW5nX2Zvcm1hdDsKK2V4cG9ydHMuY2hhcl9vZl9pY29udiAgICAgICAgICAgICAgICAg
ID0gY2hhcl9vZl9pY29udjsKK2V4cG9ydHMuc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0ICAgICAg
ID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0OworZXhwb3J0cy5zdHJpbmdfb2ZfZm9ybWF0dGlu
Z19nZW4gICAgICAgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19nZW47CitleHBvcnRzLnN0cmluZ19v
Zl9mbXR0eSAgICAgICAgICAgICAgICA9IHN0cmluZ19vZl9mbXR0eTsKK2V4cG9ydHMuc3RyaW5n
X29mX2ZtdCAgICAgICAgICAgICAgICAgID0gc3RyaW5nX29mX2ZtdDsKK2V4cG9ydHMub3Blbl9i
b3hfb2Zfc3RyaW5nICAgICAgICAgICAgID0gb3Blbl9ib3hfb2Zfc3RyaW5nOworZXhwb3J0cy5z
eW1tICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBzeW1tOworZXhwb3J0cy50cmFucyAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSB0cmFuczsKK2V4cG9ydHMucmVjYXN0ICAgICAgICAgICAg
ICAgICAgICAgICAgID0gcmVjYXN0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVu
ZCBvZiBjYW1saW50ZXJuYWxGb3JtYXQuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRz
OworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9pbyddID0gZnVuY3Rpb24oKSB7CivCoCDC
oCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9pby5qcyAvLy8vLy8v
LworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJl
KCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2Nh
bWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uICRjYXJldChwcmltLCBwcmltJDEp
IHsKKyAgcmV0dXJuIHByaW0gKyBwcmltJDE7Cit9CisKK3ZhciBzdGRpbiA9IHVuZGVmaW5lZDsK
KwordmFyIHN0ZG91dCA9IC8qIHJlY29yZCAqL1sKKyAgLyogYnVmZmVyICovIiIsCisgIC8qIG91
dHB1dCAqL2Z1bmN0aW9uIChfLCBzKSB7CisgICAgdmFyIHYgPSBzLmxlbmd0aCAtIDEgfCAwOwor
ICAgIGlmICgoICh0eXBlb2YgcHJvY2VzcyAhPT0gInVuZGVmaW5lZCIpICYmIHByb2Nlc3Muc3Rk
b3V0ICYmIHByb2Nlc3Muc3Rkb3V0LndyaXRlKSkgeworICAgICAgcmV0dXJuICggcHJvY2Vzcy5z
dGRvdXQud3JpdGUgKShzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc1t2XSA9PT0gIlxuIikgewor
ICAgICAgY29uc29sZS5sb2cocy5zbGljZSgwLCB2KSk7CisgICAgICByZXR1cm4gLyogKCkgKi8w
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGNvbnNvbGUubG9nKHMpOworICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICB9CisgIH0KK107CisKK3ZhciBzdGRlcnIgPSAvKiByZWNvcmQgKi9b
CisgIC8qIGJ1ZmZlciAqLyIiLAorICAvKiBvdXRwdXQgKi9mdW5jdGlvbiAoXywgcykgeworICAg
IHZhciB2ID0gcy5sZW5ndGggLSAxIHwgMDsKKyAgICBpZiAoc1t2XSA9PT0gIlxuIikgeworICAg
ICAgY29uc29sZS5sb2cocy5zbGljZSgwLCB2KSk7CisgICAgICByZXR1cm4gLyogKCkgKi8wOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGNvbnNvbGUubG9nKHMpOworICAgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgICB9CisgIH0KK107CisKK2Z1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlw
dG9yX2luKCkgeworICB0aHJvdyBbCisgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZh
aWx1cmUsCisgICAgICAgICJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiBub3QgaW1wbGVtZW50
ZWQiCisgICAgICBdOworfQorCitmdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQo
KSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwK
KyAgICAgICAgImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCBub3QgaW1wbGVtZW50ZWQiCisg
ICAgICBdOworfQorCitmdW5jdGlvbiBjYW1sX21sX2ZsdXNoKG9jKSB7CisgIGlmIChvY1svKiBi
dWZmZXIgKi8wXSAhPT0gIiIpIHsKKyAgICBDdXJyeS5fMihvY1svKiBvdXRwdXQgKi8xXSwgb2Ms
IG9jWy8qIGJ1ZmZlciAqLzBdKTsKKyAgICBvY1svKiBidWZmZXIgKi8wXSA9ICIiOworICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKwor
dmFyIG5vZGVfc3RkX291dHB1dCA9IChmdW5jdGlvbiAocyl7CisgICByZXR1cm4gKHR5cGVvZiBw
cm9jZXNzICE9PSAidW5kZWZpbmVkIikgJiYgcHJvY2Vzcy5zdGRvdXQgJiYgKHByb2Nlc3Muc3Rk
b3V0LndyaXRlKHMpLCB0cnVlKTsKKyAgIH0KKyk7CisKK2Z1bmN0aW9uIGNhbWxfbWxfb3V0cHV0
KG9jLCBzdHIsIG9mZnNldCwgbGVuKSB7CisgIHZhciBzdHIkMSA9IG9mZnNldCA9PT0gMCAmJiBs
ZW4gPT09IHN0ci5sZW5ndGggPyBzdHIgOiBzdHIuc2xpY2Uob2Zmc2V0LCBsZW4pOworICBpZiAo
KCAodHlwZW9mIHByb2Nlc3MgIT09ICJ1bmRlZmluZWQiKSAmJiBwcm9jZXNzLnN0ZG91dCAmJiBw
cm9jZXNzLnN0ZG91dC53cml0ZSApICYmIG9jID09PSBzdGRvdXQpIHsKKyAgICByZXR1cm4gKCBw
cm9jZXNzLnN0ZG91dC53cml0ZSApKHN0ciQxKTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgaWQg
PSBzdHIkMS5sYXN0SW5kZXhPZigiXG4iKTsKKyAgICBpZiAoaWQgPCAwKSB7CisgICAgICBvY1sv
KiBidWZmZXIgKi8wXSA9IG9jWy8qIGJ1ZmZlciAqLzBdICsgc3RyJDE7CisgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIG9jWy8qIGJ1ZmZlciAqLzBdID0g
b2NbLyogYnVmZmVyICovMF0gKyBzdHIkMS5zbGljZSgwLCBpZCArIDEgfCAwKTsKKyAgICAgIGNh
bWxfbWxfZmx1c2gob2MpOworICAgICAgb2NbLyogYnVmZmVyICovMF0gPSBvY1svKiBidWZmZXIg
Ki8wXSArIHN0ciQxLnNsaWNlKGlkICsgMSB8IDApOworICAgICAgcmV0dXJuIC8qICgpICovMDsK
KyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhcihvYywgJCRjaGFy
KSB7CisgIHJldHVybiBjYW1sX21sX291dHB1dChvYywgU3RyaW5nLmZyb21DaGFyQ29kZSgkJGNo
YXIpLCAwLCAxKTsKK30KKworZnVuY3Rpb24gY2FtbF9tbF9pbnB1dChfLCBfJDEsIF8kMiwgXyQz
KSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwK
KyAgICAgICAgImNhbWxfbWxfaW5wdXQgaWMgbm90IGltcGxlbWVudGVkIgorICAgICAgXTsKK30K
KworZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyKCkgeworICB0aHJvdyBbCisgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICJjYW1sX21sX2lucHV0X2No
YXIgbm90IGltcGxlbW50ZWQiCisgICAgICBdOworfQorCitmdW5jdGlvbiBjYW1sX21sX291dF9j
aGFubmVsc19saXN0KCkgeworICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgc3Rkb3V0LAor
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgc3RkZXJyLAorICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworfQorCitleHBvcnRzLiRjYXJldCAgICAg
ICAgICAgICAgICAgICAgICA9ICRjYXJldDsKK2V4cG9ydHMuc3RkaW4gICAgICAgICAgICAgICAg
ICAgICAgID0gc3RkaW47CitleHBvcnRzLnN0ZG91dCAgICAgICAgICAgICAgICAgICAgICA9IHN0
ZG91dDsKK2V4cG9ydHMuc3RkZXJyICAgICAgICAgICAgICAgICAgICAgID0gc3RkZXJyOworZXhw
b3J0cy5jYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAgPSBjYW1sX21sX29wZW5fZGVzY3JpcHRv
cl9pbjsKK2V4cG9ydHMuY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0ID0gY2FtbF9tbF9vcGVu
X2Rlc2NyaXB0b3Jfb3V0OworZXhwb3J0cy5jYW1sX21sX2ZsdXNoICAgICAgICAgICAgICAgPSBj
YW1sX21sX2ZsdXNoOworZXhwb3J0cy5ub2RlX3N0ZF9vdXRwdXQgICAgICAgICAgICAgPSBub2Rl
X3N0ZF9vdXRwdXQ7CitleHBvcnRzLmNhbWxfbWxfb3V0cHV0ICAgICAgICAgICAgICA9IGNhbWxf
bWxfb3V0cHV0OworZXhwb3J0cy5jYW1sX21sX291dHB1dF9jaGFyICAgICAgICAgPSBjYW1sX21s
X291dHB1dF9jaGFyOworZXhwb3J0cy5jYW1sX21sX2lucHV0ICAgICAgICAgICAgICAgPSBjYW1s
X21sX2lucHV0OworZXhwb3J0cy5jYW1sX21sX2lucHV0X2NoYXIgICAgICAgICAgPSBjYW1sX21s
X2lucHV0X2NoYXI7CitleHBvcnRzLmNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgICA9IGNhbWxf
bWxfb3V0X2NoYW5uZWxzX2xpc3Q7CisvKiBzdGRpbiBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8v
Ly8vLy8gZW5kIG9mIGNhbWxfaW8uanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOwor
wqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9sZXhlciddID0gZnVuY3Rpb24oKSB7CivCoCDC
oCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9sZXhlci5qcyAvLy8v
Ly8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1
aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIGZhaWwoKSB7Cisg
IHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAg
ICAgImxleGluZzogZW1wdHkgdG9rZW4iCisgICAgICBdOworfQorCisgCisKKy8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Jq
ZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KKy8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9j
cXVlbmNvdXJ0ICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5
NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi8K
Ky8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMg
ZGlzdHJpYnV0ZWQgICAgKi8KKy8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKi8KKy8qICB0aGUgc3BlY2lhbCBleGNl
cHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi8KKy8q
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogJElkOiBsZXhpbmcuYyA2MDQ1
IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqLworCisvKiBUaGUgdGFibGUtZHJpdmVu
IGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqLworCitmdW5jdGlv
biBjYW1sX2xleF9hcnJheShzKSB7CisgICAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7CisgICAgdmFy
IGEgPSBuZXcgQXJyYXkobCk7CisgICAgLy8gd2hlbiBzLmNoYXJDb2RlQXQoMiAqIGkgKyAxICkg
PiAxMjggKDB4ODApCisgICAgLy8gYVtpXSA8IDAgIAorICAgIC8vIGZvcih2YXIgaSA9IDAgOyBp
IDw9IDB4ZmZmZjsgKytpKSB7IGlmIChpIDw8IDE2ID4+IDE2ICE9PWkpe2NvbnNvbGUubG9nKGk8
PDE2Pj4xNiwgJ3ZzJyxpKX19CisgICAgLy8gCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBp
KyspCisgICAgICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2RlQXQo
MiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7CisgICAgcmV0dXJuIGE7Cit9CisvKioKKyAq
IGV4dGVybmFsIGNfZW5naW5lICA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQK
KyAqIGxleGluZy5tbAorICogdHlwZSBsZXhfdGFibGVzID0geworICogICBsZXhfYmFzZSA6IHN0
cmluZzsKKyAqICAgbGV4X2JhY2t0cmsgOiBzdHJpbmc7CisgKiAgIGxleF9kZWZhdWx0IDogc3Ry
aW5nOworICogICBsZXhfdHJhbnMgOiBzdHJpbmc7CisgKiAgIGxleF9jaGVjayA6IHN0cmluZzsK
KyAqICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZzsKKyAqICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0
cmluZzsKKyAqICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZzsKKyAqICAgbGV4X3RyYW5zX2Nv
ZGUgOiBzdHJpbmc7CisgKiAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nOworICogICBsZXhfY29k
ZSA6IHN0cmluZzsKKyAqIH0KKyAqCisgKiB0eXBlIGxleGJ1ZiA9IHsKKyAqICAgcmVmaWxsX2J1
ZmYgOiBsZXhidWYgLT4gdW5pdCA7CisgKiAgIG11dGFibGUgbGV4X2J1ZmZlciA6IGJ5dGVzOwor
ICogICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50OworICogICBtdXRhYmxlIGxleF9hYnNf
cG9zIDogaW50OworICogICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7CisgKiAgIG11dGFi
bGUgbGV4X2N1cnJfcG9zIDogaW50OworICogICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDsK
KyAqICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7CisgKiAgIG11dGFibGUgbGV4X2Vv
Zl9yZWFjaGVkIDogYm9vbDsKKyAqICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5OworICog
ICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247CisgKiAgIG11dGFibGUgbGV4X2N1cnJf
cDsKKyAqIH0KKyAqIEBwYXJhbSB0YmwKKyAqIEBwYXJhbSBzdGFydF9zdGF0ZQorICogQHBhcmFt
IGxleGJ1ZgorICogQHJldHVybnMge2FueX0KKyAqLworZnVuY3Rpb24gJCRjYW1sX2xleF9lbmdp
bmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7CisgICAgLy8gTGV4aW5nLmxleGJ1ZgorICAg
IHZhciBsZXhfYnVmZmVyID0gMTsKKyAgICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAyOworICAgIHZh
ciBsZXhfc3RhcnRfcG9zID0gNDsKKyAgICB2YXIgbGV4X2N1cnJfcG9zID0gNTsKKyAgICB2YXIg
bGV4X2xhc3RfcG9zID0gNjsKKyAgICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gNzsKKyAgICB2YXIg
bGV4X2VvZl9yZWFjaGVkID0gODsKKyAgICAvLyBMZXhpbmcubGV4X3RhYmxlcworICAgIHZhciBs
ZXhfYmFzZSA9IDA7CisgICAgdmFyIGxleF9iYWNrdHJrID0gMTsKKyAgICB2YXIgbGV4X2RlZmF1
bHQgPSAyOworICAgIHZhciBsZXhfdHJhbnMgPSAzOworICAgIHZhciBsZXhfY2hlY2sgPSA0Owor
ICAgIGlmICghdGJsLmxleF9kZWZhdWx0KSB7CisgICAgICAgIHRibC5sZXhfYmFzZSA9IGNhbWxf
bGV4X2FycmF5KHRibFtsZXhfYmFzZV0pOworICAgICAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1s
X2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTsKKyAgICAgICAgdGJsLmxleF9jaGVjayA9IGNh
bWxfbGV4X2FycmF5KHRibFtsZXhfY2hlY2tdKTsKKyAgICAgICAgdGJsLmxleF90cmFucyA9IGNh
bWxfbGV4X2FycmF5KHRibFtsZXhfdHJhbnNdKTsKKyAgICAgICAgdGJsLmxleF9kZWZhdWx0ID0g
Y2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7CisgICAgfQorICAgIHZhciBjOworICAg
IHZhciBzdGF0ZSA9IHN0YXJ0X3N0YXRlOworICAgIC8vdmFyIGJ1ZmZlciA9IGJ5dGVzX29mX3N0
cmluZyhsZXhidWZbbGV4X2J1ZmZlcl0pOworICAgIHZhciBidWZmZXIgPSBsZXhidWZbbGV4X2J1
ZmZlcl07CisgICAgaWYgKHN0YXRlID49IDApIHsKKyAgICAgICAgLyogRmlyc3QgZW50cnkgKi8K
KyAgICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBs
ZXhidWZbbGV4X2N1cnJfcG9zXTsKKyAgICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAt
MTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICov
CisgICAgICAgIHN0YXRlID0gLXN0YXRlIC0gMTsKKyAgICB9CisgICAgZm9yICg7OykgeworICAg
ICAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQg
c3RhdGUgKi8KKyAgICAgICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdOworICAgICAg
ICBpZiAoYmFzZSA8IDApCisgICAgICAgICAgICByZXR1cm4gLWJhc2UgLSAxOworICAgICAgICAv
KiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqLworICAgICAgICB2YXIgYmFja3RyayA9
IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07CisgICAgICAgIGlmIChiYWNrdHJrID49IDApIHsKKyAg
ICAgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107Cisg
ICAgICAgICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7CisgICAgICAgIH0K
KyAgICAgICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi8KKyAgICAgICAgaWYgKGxleGJ1
ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pIHsKKyAgICAgICAgICAg
IGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PT0gMCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gLXN0YXRlIC0gMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjID0gMjU2
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogUmVhZCBuZXh0IGlu
cHV0IGNoYXIgKi8KKyAgICAgICAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11d
OworICAgICAgICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10rKzsKKyAgICAgICAgfQorICAgICAg
ICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqLworICAgICAgICBpZiAodGJsLmxleF9jaGVja1ti
YXNlICsgY10gPT09IHN0YXRlKSB7CisgICAgICAgICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNb
YmFzZSArIGNdOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3RhdGUg
PSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdOworICAgICAgICB9CisgICAgICAgIC8qIElmIG5vIHRy
YW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi8K
KyAgICAgICAgaWYgKHN0YXRlIDwgMCkgeworICAgICAgICAgICAgbGV4YnVmW2xleF9jdXJyX3Bv
c10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTsKKyAgICAgICAgICAgIGlmIChsZXhidWZbbGV4X2xh
c3RfYWN0aW9uXSA9PSAtMSkKKyAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25k
aXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzCisgICAgICAgICAgICAg
Y29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFi
b3ZlKQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoYyA9PSAyNTYpCisgICAgICAg
ICAgICAgICAgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwOworICAgICAgICB9CisgICAgfQor
fQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisv
KiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovCisvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKgorICogcyAt
PiBMZXhpbmcubGV4X3RhYmxlcy5sZXhfY29kZQorICogbWVtIC0+IExleGluZy5sZXhidWYubGV4
X21lbSAoKiBpbnQgYXJyYXkgKikKKyAqLyAgICAgICAgICAKKyAgICAgICAgICAKK2Z1bmN0aW9u
IGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3BvcykgeworICAgIGZvciAoOzspIHsK
KyAgICAgICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsKKyAgICAgICAgaSsrOworICAgICAg
ICBpZiAoZHN0ID09IDB4ZmYpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBzcmMg
PSBzLmNoYXJDb2RlQXQoaSk7CisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKHNyYyA9PSAweGZm
KQorICAgICAgICAgICAgbWVtW2RzdF0gPSBjdXJyX3BvczsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbWVtW2RzdF0gPSBtZW1bc3JjXTsKKyAgICB9Cit9CisKKworLyoqCisgKiBzIC0+IExl
eGluZy5sZXhfdGFibGVzLmxleF9jb2RlCisgKiBtZW0gLT4gTGV4aW5nLmxleGJ1Zi5sZXhfbWVt
ICgqIGludCBhcnJheSAqKQorICovCisgIAorZnVuY3Rpb24gY2FtbF9sZXhfcnVuX3RhZyhzLCBp
LCBtZW0pIHsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQo
aSk7CisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKGRzdCA9PSAweGZmKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOworICAgICAgICBpKys7
CisgICAgICAgIGlmIChzcmMgPT0gMHhmZikKKyAgICAgICAgICAgIG1lbVtkc3RdID0gLTE7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbVtkc3RdID0gbWVtW3NyY107CisgICAgfQorfQor
LyoqCisgKiBleHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhi
dWYgLT4gaW50ID0gImNhbWxfbmV3X2xleF9lbmdpbmUiCisgKiBAcGFyYW0gdGJsCisgKiBAcGFy
YW0gc3RhcnRfc3RhdGUKKyAqIEBwYXJhbSBsZXhidWYKKyAqIEByZXR1cm5zIHthbnl9CisgKi8K
K2Z1bmN0aW9uICQkY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYp
IHsKKyAgICAvLyBMZXhpbmcubGV4YnVmCisgICAgdmFyIGxleF9idWZmZXIgPSAxOworICAgIHZh
ciBsZXhfYnVmZmVyX2xlbiA9IDI7CisgICAgdmFyIGxleF9zdGFydF9wb3MgPSA0OworICAgIHZh
ciBsZXhfY3Vycl9wb3MgPSA1OworICAgIHZhciBsZXhfbGFzdF9wb3MgPSA2OworICAgIHZhciBs
ZXhfbGFzdF9hY3Rpb24gPSA3OworICAgIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA4OworICAgIHZh
ciBsZXhfbWVtID0gOTsKKyAgICAvLyBMZXhpbmcubGV4X3RhYmxlcworICAgIHZhciBsZXhfYmFz
ZSA9IDA7CisgICAgdmFyIGxleF9iYWNrdHJrID0gMTsKKyAgICB2YXIgbGV4X2RlZmF1bHQgPSAy
OworICAgIHZhciBsZXhfdHJhbnMgPSAzOworICAgIHZhciBsZXhfY2hlY2sgPSA0OworICAgIHZh
ciBsZXhfYmFzZV9jb2RlID0gNTsKKyAgICB2YXIgbGV4X2JhY2t0cmtfY29kZSA9IDY7CisgICAg
dmFyIGxleF9kZWZhdWx0X2NvZGUgPSA3OworICAgIHZhciBsZXhfdHJhbnNfY29kZSA9IDg7Cisg
ICAgdmFyIGxleF9jaGVja19jb2RlID0gOTsKKyAgICB2YXIgbGV4X2NvZGUgPSAxMDsKKyAgICBp
ZiAoIXRibC5sZXhfZGVmYXVsdCkgeworICAgICAgICB0YmwubGV4X2Jhc2UgPSBjYW1sX2xleF9h
cnJheSh0YmxbbGV4X2Jhc2VdKTsKKyAgICAgICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhf
YXJyYXkodGJsW2xleF9iYWNrdHJrXSk7CisgICAgICAgIHRibC5sZXhfY2hlY2sgPSBjYW1sX2xl
eF9hcnJheSh0YmxbbGV4X2NoZWNrXSk7CisgICAgICAgIHRibC5sZXhfdHJhbnMgPSBjYW1sX2xl
eF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7CisgICAgICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxf
bGV4X2FycmF5KHRibFtsZXhfZGVmYXVsdF0pOworICAgIH0KKyAgICBpZiAoIXRibC5sZXhfZGVm
YXVsdF9jb2RlKSB7CisgICAgICAgIHRibC5sZXhfYmFzZV9jb2RlID0gY2FtbF9sZXhfYXJyYXko
dGJsW2xleF9iYXNlX2NvZGVdKTsKKyAgICAgICAgdGJsLmxleF9iYWNrdHJrX2NvZGUgPSBjYW1s
X2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtfY29kZV0pOworICAgICAgICB0YmwubGV4X2NoZWNr
X2NvZGUgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2NoZWNrX2NvZGVdKTsKKyAgICAgICAgdGJs
LmxleF90cmFuc19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF90cmFuc19jb2RlXSk7Cisg
ICAgICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZh
dWx0X2NvZGVdKTsKKyAgICB9CisgICAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB7CisgICAg
ICAgIC8vdGJsLmxleF9jb2RlID0gY2FtbF9ieXRlc19vZl9zdHJpbmcodGJsW2xleF9jb2RlXSk7
CisgICAgICAgIHRibC5sZXhfY29kZSA9ICh0YmxbbGV4X2NvZGVdKTsKKyAgICB9CisgICAgdmFy
IGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7CisgICAgLy92YXIgYnVmZmVyID0gY2FtbF9ieXRlc19v
Zl9zdHJpbmcobGV4YnVmW2xleF9idWZmZXJdKTsKKyAgICB2YXIgYnVmZmVyID0gbGV4YnVmW2xl
eF9idWZmZXJdOworICAgIGlmIChzdGF0ZSA+PSAwKSB7CisgICAgICAgIC8qIEZpcnN0IGVudHJ5
ICovCisgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3Nd
ID0gbGV4YnVmW2xleF9jdXJyX3Bvc107CisgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25d
ID0gLTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmls
bCAqLworICAgICAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7CisgICAgfQorICAgIGZvciAoOzspIHsK
KyAgICAgICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJy
ZW50IHN0YXRlICovCisgICAgICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTsKKyAg
ICAgICAgaWYgKGJhc2UgPCAwKSB7CisgICAgICAgICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9i
YXNlX2NvZGVbc3RhdGVdOworICAgICAgICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2Nv
ZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTsKKyAgICAgICAgICAgIHJldHVybiAtYmFzZSAt
IDE7CisgICAgICAgIH0KKyAgICAgICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQg
Ki8KKyAgICAgICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdOworICAgICAg
ICBpZiAoYmFja3RyayA+PSAwKSB7CisgICAgICAgICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9i
YWNrdHJrX2NvZGVbc3RhdGVdOworICAgICAgICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4
X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTsKKyAgICAgICAgICAgIGxleGJ1ZltsZXhf
bGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107CisgICAgICAgICAgICBsZXhidWZbbGV4
X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7CisgICAgICAgIH0KKyAgICAgICAgLyogU2VlIGlmIHdl
IG5lZWQgYSByZWZpbGwgKi8KKyAgICAgICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxl
eGJ1ZltsZXhfYnVmZmVyX2xlbl0pIHsKKyAgICAgICAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9y
ZWFjaGVkXSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtc3RhdGUgLSAxOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGMgPSAyNTY7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqLworICAgICAgICAg
ICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07CisgICAgICAgICAgICBsZXhidWZb
bGV4X2N1cnJfcG9zXSsrOworICAgICAgICB9CisgICAgICAgIC8qIERldGVybWluZSBuZXh0IHN0
YXRlICovCisgICAgICAgIHZhciBwc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgaWYgKHRibC5sZXhf
Y2hlY2tbYmFzZSArIGNdID09IHN0YXRlKQorICAgICAgICAgICAgc3RhdGUgPSB0YmwubGV4X3Ry
YW5zW2Jhc2UgKyBjXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RhdGUgPSB0YmwubGV4
X2RlZmF1bHRbc3RhdGVdOworICAgICAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hh
ciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovCisgICAgICAgIGlmIChzdGF0ZSA8
IDApIHsKKyAgICAgICAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0
X3Bvc107CisgICAgICAgICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpCisg
ICAgICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1l
bW9yeSBtb3ZlcyAqLworICAgICAgICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9j
b2RlW3BzdGF0ZV0sIHBjX29mZjsKKyAgICAgICAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVb
YmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKQorICAgICAgICAgICAgICAgIHBjX29mZiA9IHRibC5s
ZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdOworICAgICAgICAg
ICAgaWYgKHBjX29mZiA+IDApCisgICAgICAgICAgICAgICAgY2FtbF9sZXhfcnVuX21lbSh0Ymwu
bGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7
CisgICAgICAgICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0Yg
cHNldWRvLWNoYXJhY3RlciB3YXMKKyAgICAgICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21h
dG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpCisgICAgICAgICAgICAgKi8K
KyAgICAgICAgICAgIGlmIChjID09IDI1NikKKyAgICAgICAgICAgICAgICBsZXhidWZbbGV4X2Vv
Zl9yZWFjaGVkXSA9IDA7CisgICAgICAgIH0KKyAgICB9Cit9CisKKzsKKworZnVuY3Rpb24gY2Ft
bF9sZXhfZW5naW5lKHByaW0sIHByaW0kMSwgcHJpbSQyKSB7CisgIHJldHVybiAkJGNhbWxfbGV4
X2VuZ2luZShwcmltLCBwcmltJDEsIHByaW0kMik7Cit9CisKK2Z1bmN0aW9uIGNhbWxfbmV3X2xl
eF9lbmdpbmUocHJpbSwgcHJpbSQxLCBwcmltJDIpIHsKKyAgcmV0dXJuICQkY2FtbF9uZXdfbGV4
X2VuZ2luZShwcmltLCBwcmltJDEsIHByaW0kMik7Cit9CisKK2V4cG9ydHMuZmFpbCAgICAgICAg
ICAgICAgICA9IGZhaWw7CitleHBvcnRzLmNhbWxfbGV4X2VuZ2luZSAgICAgPSBjYW1sX2xleF9l
bmdpbmU7CitleHBvcnRzLmNhbWxfbmV3X2xleF9lbmdpbmUgPSBjYW1sX25ld19sZXhfZW5naW5l
OworLyogIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9sZXhlci5q
cyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5
WydjYW1sX29iaiddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8v
Ly8vLy8gc3RhcnQgb2YgY2FtbF9vYmouanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFy
IEJsb2NrICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ibG9jayIpOwordmFyIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIp
OworCitmdW5jdGlvbiBjYW1sX29ial9kdXAoeCkgeworICB2YXIgbGVuID0geC5sZW5ndGg7Cisg
IHZhciB2ID0gbmV3IEFycmF5KGxlbik7CisgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVu
IC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgdltpXSA9IHhbaV07CisgIH0KKyAg
di50YWcgPSB4LnRhZyB8IDA7CisgIHJldHVybiB2OworfQorCitmdW5jdGlvbiBjYW1sX29ial90
cnVuY2F0ZSh4LCBuZXdfc2l6ZSkgeworICB2YXIgbGVuID0geC5sZW5ndGg7CisgIGlmIChuZXdf
c2l6ZSA8PSAwIHx8IG5ld19zaXplID4gbGVuKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIk9iai50
cnVuY2F0ZSIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIGlmIChsZW4gIT09IG5ld19zaXplKSB7
CisgICAgZm9yKHZhciBpID0gbmV3X3NpemUgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0g
aV9maW5pc2g7ICsraSl7CisgICAgICB4W2ldID0gMDsKKyAgICB9CisgICAgeC5sZW5ndGggPSBu
ZXdfc2l6ZTsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biAwOworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQoeCkgeworICBy
ZXR1cm4gQmxvY2suX18oMjUwLCBbeF0pOworfQorCitmdW5jdGlvbiBjYW1sX3VwZGF0ZV9kdW1t
eSh4LCB5KSB7CisgIHZhciBsZW4gPSB5Lmxlbmd0aDsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5p
c2ggPSBsZW4gLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICB4W2ldID0geVtpXTsK
KyAgfQorICB2YXIgeV90YWcgPSB5LnRhZyB8IDA7CisgIGlmICh5X3RhZyAhPT0gMCkgeworICAg
IHgudGFnID0geV90YWc7CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX2ludF9jb21wYXJlKHgsIHkpIHsK
KyAgaWYgKHggPCB5KSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2UgaWYgKHggPT09IHkp
IHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMTsKKyAgfQorfQor
CitmdW5jdGlvbiBjYW1sX2NvbXBhcmUoX2EsIF9iKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2
YXIgYiA9IF9iOworICAgIHZhciBhID0gX2E7CisgICAgaWYgKHR5cGVvZiBhID09PSAic3RyaW5n
IikgeworICAgICAgdmFyIHggPSBhOworICAgICAgdmFyIHkgPSBiOworICAgICAgaWYgKHggPCB5
KSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHggPT09IHkp
IHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGVvZiBhID09PSAibnVtYmVy
IikgeworICAgICAgcmV0dXJuIGNhbWxfaW50X2NvbXBhcmUoYSwgYik7CisgICAgfQorICAgIGVs
c2UgaWYgKHR5cGVvZiBhID09PSAiYm9vbGVhbiIgfHwgdHlwZW9mIGEgPT09ICJudWxsIiB8fCB0
eXBlb2YgYSA9PT0gInVuZGVmaW5lZCIpIHsKKyAgICAgIHZhciB4JDEgPSBhOworICAgICAgdmFy
IHkkMSA9IGI7CisgICAgICBpZiAoeCQxID09PSB5JDEpIHsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICB9CisgICAgICBlbHNlIGlmICh4JDEgPCB5JDEpIHsKKyAgICAgICAgcmV0dXJuIC0xOwor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAxOworICAgICAgfQorICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHZhciB0YWdfYSA9IGEudGFnIHwgMDsKKyAgICAgIHZhciB0YWdf
YiA9IGIudGFnIHwgMDsKKyAgICAgIGlmICh0YWdfYSA9PT0gMjUwKSB7CisgICAgICAgIF9hID0g
YVswXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKHRhZ19iID09PSAyNTApIHsKKyAgICAgICAgX2IgPSBiWzBdOworICAgICAgICBjb250aW51
ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSBpZiAodGFnX2EgPT09IDI0OCkgewor
ICAgICAgICByZXR1cm4gY2FtbF9pbnRfY29tcGFyZShhWzFdLCBiWzFdKTsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKHRhZ19hID09PSAyNTEpIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAg
ICAgICAiZXF1YWw6IGFic3RyYWN0IHZhbHVlIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKHRhZ19hICE9PSB0YWdfYikgeworICAgICAgICBpZiAodGFnX2EgPCB0YWdf
YikgeworICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHZhciBsZW5fYSA9IGEubGVuZ3RoOworICAgICAgICB2YXIgbGVuX2IgPSBiLmxlbmd0aDsK
KyAgICAgICAgaWYgKGxlbl9hID09PSBsZW5fYikgeworICAgICAgICAgIHZhciBhJDEgPSBhOwor
ICAgICAgICAgIHZhciBiJDEgPSBiOworICAgICAgICAgIHZhciBfaSA9IDA7CisgICAgICAgICAg
dmFyIHNhbWVfbGVuZ3RoID0gbGVuX2E7CisgICAgICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAg
ICAgICAgdmFyIGkgPSBfaTsKKyAgICAgICAgICAgIGlmIChpID09PSBzYW1lX2xlbmd0aCkgewor
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICB2YXIgcmVzID0gY2FtbF9jb21wYXJlKGEkMVtpXSwgYiQxW2ldKTsK
KyAgICAgICAgICAgICAgaWYgKHJlcyAhPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBy
ZXM7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmIChsZW5fYSA8IGxlbl9iKSB7CisgICAgICAgICAgdmFy
IGEkMiA9IGE7CisgICAgICAgICAgdmFyIGIkMiA9IGI7CisgICAgICAgICAgdmFyIF9pJDEgPSAw
OworICAgICAgICAgIHZhciBzaG9ydF9sZW5ndGggPSBsZW5fYTsKKyAgICAgICAgICB3aGlsZSh0
cnVlKSB7CisgICAgICAgICAgICB2YXIgaSQxID0gX2kkMTsKKyAgICAgICAgICAgIGlmIChpJDEg
PT09IHNob3J0X2xlbmd0aCkgeworICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIHJlcyQxID0gY2FtbF9j
b21wYXJlKGEkMltpJDFdLCBiJDJbaSQxXSk7CisgICAgICAgICAgICAgIGlmIChyZXMkMSAhPT0g
MCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXMkMTsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfaSQxID0gaSQxICsgMSB8IDA7Cisg
ICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICB2YXIgYSQzID0gYTsKKyAgICAgICAgICB2YXIgYiQzID0gYjsKKyAgICAg
ICAgICB2YXIgX2kkMiA9IDA7CisgICAgICAgICAgdmFyIHNob3J0X2xlbmd0aCQxID0gbGVuX2I7
CisgICAgICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICAgICAgdmFyIGkkMiA9IF9pJDI7Cisg
ICAgICAgICAgICBpZiAoaSQyID09PSBzaG9ydF9sZW5ndGgkMSkgeworICAgICAgICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICB2YXIgcmVzJDIgPSBjYW1sX2NvbXBhcmUoYSQzW2kkMl0sIGIkM1tpJDJdKTsKKyAgICAgICAg
ICAgICAgaWYgKHJlcyQyICE9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlcyQyOwor
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9p
JDIgPSBpJDIgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9OworICAg
ICAgICB9CisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBjYW1sX2VxdWFsKF9h
LCBfYikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGIgPSBfYjsKKyAgICB2YXIgYSA9IF9h
OworICAgIGlmIChhID09PSBiKSB7CisgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgfQor
ICAgIGVsc2UgaWYgKHR5cGVvZiBhID09PSAic3RyaW5nIiB8fCB0eXBlb2YgYSA9PT0gIm51bWJl
ciIgfHwgdHlwZW9mIGEgPT09ICJib29sZWFuIiB8fCB0eXBlb2YgYSA9PT0gInVuZGVmaW5lZCIg
fHwgdHlwZW9mIGEgPT09ICJudWxsIikgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgdGFnX2EgPSBhLnRhZyB8IDA7CisgICAgICB2YXIg
dGFnX2IgPSBiLnRhZyB8IDA7CisgICAgICBpZiAodGFnX2EgPT09IDI1MCkgeworICAgICAgICBf
YSA9IGFbMF07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBl
bHNlIGlmICh0YWdfYiA9PT0gMjUwKSB7CisgICAgICAgIF9iID0gYlswXTsKKyAgICAgICAgY29u
dGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHRhZ19hID09PSAyNDgp
IHsKKyAgICAgICAgcmV0dXJuICsoYVsxXSA9PT0gYlsxXSk7CisgICAgICB9CisgICAgICBlbHNl
IGlmICh0YWdfYSA9PT0gMjUxKSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAgImVx
dWFsOiBhYnN0cmFjdCB2YWx1ZSIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNl
IGlmICh0YWdfYSAhPT0gdGFnX2IpIHsKKyAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgbGVuX2EgPSBhLmxlbmd0aDsKKyAgICAg
ICAgdmFyIGxlbl9iID0gYi5sZW5ndGg7CisgICAgICAgIGlmIChsZW5fYSA9PT0gbGVuX2IpIHsK
KyAgICAgICAgICB2YXIgYSQxID0gYTsKKyAgICAgICAgICB2YXIgYiQxID0gYjsKKyAgICAgICAg
ICB2YXIgX2kgPSAwOworICAgICAgICAgIHZhciBzYW1lX2xlbmd0aCA9IGxlbl9hOworICAgICAg
ICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgICAgIHZhciBpID0gX2k7CisgICAgICAgICAgICBp
ZiAoaSA9PT0gc2FtZV9sZW5ndGgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8x
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2FtbF9lcXVhbChhJDFbaV0s
IGIkMVtpXSkpIHsKKyAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVy
biAvKiBmYWxzZSAqLzA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1
bmN0aW9uIGNhbWxfbm90ZXF1YWwoYSwgYikgeworICByZXR1cm4gMSAtIGNhbWxfZXF1YWwoYSwg
Yik7Cit9CisKK2Z1bmN0aW9uIGNhbWxfZ3JlYXRlcmVxdWFsKGEsIGIpIHsKKyAgcmV0dXJuICso
Y2FtbF9jb21wYXJlKGEsIGIpID49IDApOworfQorCitmdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFu
KGEsIGIpIHsKKyAgcmV0dXJuICsoY2FtbF9jb21wYXJlKGEsIGIpID4gMCk7Cit9CisKK2Z1bmN0
aW9uIGNhbWxfbGVzc2VxdWFsKGEsIGIpIHsKKyAgcmV0dXJuICsoY2FtbF9jb21wYXJlKGEsIGIp
IDw9IDApOworfQorCitmdW5jdGlvbiBjYW1sX2xlc3N0aGFuKGEsIGIpIHsKKyAgcmV0dXJuICso
Y2FtbF9jb21wYXJlKGEsIGIpIDwgMCk7Cit9CisKK3ZhciBjYW1sX2ludDMyX2NvbXBhcmUgPSBj
YW1sX2ludF9jb21wYXJlOworCit2YXIgY2FtbF9uYXRpdmVpbnRfY29tcGFyZSA9IGNhbWxfaW50
X2NvbXBhcmU7CisKK2V4cG9ydHMuY2FtbF9vYmpfZHVwICAgICAgICAgICA9IGNhbWxfb2JqX2R1
cDsKK2V4cG9ydHMuY2FtbF9vYmpfdHJ1bmNhdGUgICAgICA9IGNhbWxfb2JqX3RydW5jYXRlOwor
ZXhwb3J0cy5jYW1sX2xhenlfbWFrZV9mb3J3YXJkID0gY2FtbF9sYXp5X21ha2VfZm9yd2FyZDsK
K2V4cG9ydHMuY2FtbF91cGRhdGVfZHVtbXkgICAgICA9IGNhbWxfdXBkYXRlX2R1bW15OworZXhw
b3J0cy5jYW1sX2ludF9jb21wYXJlICAgICAgID0gY2FtbF9pbnRfY29tcGFyZTsKK2V4cG9ydHMu
Y2FtbF9pbnQzMl9jb21wYXJlICAgICA9IGNhbWxfaW50MzJfY29tcGFyZTsKK2V4cG9ydHMuY2Ft
bF9uYXRpdmVpbnRfY29tcGFyZSA9IGNhbWxfbmF0aXZlaW50X2NvbXBhcmU7CitleHBvcnRzLmNh
bWxfY29tcGFyZSAgICAgICAgICAgPSBjYW1sX2NvbXBhcmU7CitleHBvcnRzLmNhbWxfZXF1YWwg
ICAgICAgICAgICAgPSBjYW1sX2VxdWFsOworZXhwb3J0cy5jYW1sX25vdGVxdWFsICAgICAgICAg
ID0gY2FtbF9ub3RlcXVhbDsKK2V4cG9ydHMuY2FtbF9ncmVhdGVyZXF1YWwgICAgICA9IGNhbWxf
Z3JlYXRlcmVxdWFsOworZXhwb3J0cy5jYW1sX2dyZWF0ZXJ0aGFuICAgICAgID0gY2FtbF9ncmVh
dGVydGhhbjsKK2V4cG9ydHMuY2FtbF9sZXNzdGhhbiAgICAgICAgICA9IGNhbWxfbGVzc3RoYW47
CitleHBvcnRzLmNhbWxfbGVzc2VxdWFsICAgICAgICAgPSBjYW1sX2xlc3NlcXVhbDsKKy8qIE5v
IHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9vYmouanMgLy8vLy8vLy8KK8Kg
IMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9vbyddID0g
ZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Yg
Y2FtbF9vby5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9hcnJheSAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKwordmFyIGNh
bWxfbWV0aG9kc19jYWNoZSA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QoMTAwMCwgMCk7CisK
K2Z1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2Qob2JqLCB0YWcsIGNhY2hlaWQpIHsKKyAg
dmFyIG1ldGhzID0gb2JqWzBdOworICB2YXIgb2ZmcyA9IGNhbWxfbWV0aG9kc19jYWNoZVtjYWNo
ZWlkXTsKKyAgaWYgKG1ldGhzW29mZnNdID09PSB0YWcpIHsKKyAgICByZXR1cm4gbWV0aHNbb2Zm
cyAtIDEgfCAwXTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgYXV4ID0gZnVuY3Rpb24gKF9pKSB7
CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHZhciBpID0gX2k7CisgICAgICAgIGlmIChp
IDwgMykgeworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAiY2FtbF9vby5tbCIsCisgICAgICAgICAgICAgICAgICA1NCwKKyAgICAgICAgICAg
ICAgICAgIDIwCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICBdOworICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYgKG1ldGhzW2ldID09PSB0YWcpIHsKKyAgICAgICAgICBjYW1sX21l
dGhvZHNfY2FjaGVbY2FjaGVpZF0gPSBpOworICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIF9pID0gaSAtIDIgfCAwOworICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHJl
dHVybiBtZXRoc1thdXgoKG1ldGhzWzBdIDw8IDEpICsgMSB8IDApIC0gMSB8IDBdOworICB9Cit9
CisKK2V4cG9ydHMuY2FtbF9nZXRfcHVibGljX21ldGhvZCA9IGNhbWxfZ2V0X3B1YmxpY19tZXRo
b2Q7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfb28uanMgLy8v
Ly8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2Ft
bF9wYXJzZXInXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8v
Ly8vIHN0YXJ0IG9mIGNhbWxfcGFyc2VyLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKKwor
CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAg
ICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K
Ky8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jp
c3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8q
ICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3Jt
YXRpcXVlIGV0ICAgKi8KKy8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
ICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi8KKy8qICB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKi8KKy8qICB0
aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNF
TlNFLiAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogJElk
OiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kgJCAqLworCisvKiBU
aGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2FtbHlhY2MgKi8KKwor
LyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovCisKKy8qKgorICogY2FtbF9sZXhfYXJyYXkoImFi
Y2QiKQorICogWzI1MTg1LCAyNTY5OV0KKyAqIEBwYXJhbSBzCisgKiBAcmV0dXJucyB7YW55W119
CisgKiBUT0RPOiBkdXBsaWNhdGVkIHdpdGggbW9kdWxlIHshQ2FtbF9sZXh9CisgKi8KK2Z1bmN0
aW9uIGNhbWxfbGV4X2FycmF5KHMpIHsKKyAgICB2YXIgbCA9IHMubGVuZ3RoIC8gMjsKKyAgICB2
YXIgYSA9IG5ldyBBcnJheShsKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykKKyAg
ICAgICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSAr
IDEpIDw8IDgpKSA8PCAxNiA+PiAxNjsKKyAgICByZXR1cm4gYTsKK30KKy8qKgorICogTm90ZSB0
aGF0IFRTIGVudW0gaXMgbm90IGZyaWVuZGx5IHRvIENsb3N1cmUgY29tcGlsZXIKKyAqIEBlbnVt
e251bWJlcn0KKyAqLwordmFyIEF1dG9tYXRhID0geworICAgIFNUQVJUOiAwLAorICAgIExPT1A6
IDYsCisgICAgVE9LRU5fUkVBRDogMSwKKyAgICBURVNUX1NISUZUOiA3LAorICAgIEVSUk9SX0RF
VEVDVEVEOiA1LAorICAgIFNISUZUOiA4LAorICAgIFNISUZUX1JFQ09WRVI6IDksCisgICAgU1RB
Q0tfR1JPV05fMTogMiwKKyAgICBSRURVQ0U6IDEwLAorICAgIFNUQUNLX0dST1dOXzI6IDMsCisg
ICAgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOiA0Cit9OworLyoqCisgKiBAZW51bXtudW1iZXJ9
CisgKi8KK3ZhciBSZXN1bHQgPSB7CisgICAgUkVBRF9UT0tFTjogMCwKKyAgICBSQUlTRV9QQVJT
RV9FUlJPUjogMSwKKyAgICBHUk9XX1NUQUNLU18xOiAyLAorICAgIEdST1dfU1RBQ0tTXzI6IDMs
CisgICAgQ09NUFVURV9TRU1BTlRJQ19BQ1RJT046IDQsCisgICAgQ0FMTF9FUlJPUl9GVU5DVElP
TjogNQorfTsKK3ZhciBQQVJTRVJfVFJBQ0UgPSBmYWxzZTsKKy8qKgorICogZXh0ZXJuYWwgcGFy
c2VfZW5naW5lIDogcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2VyX2lucHV0IC0+
IE9iai50IC0+IHBhcnNlcl9vdXRwdXQKKyAqIHBhcnNpbmcubWwKKyAqCisgKiB0eXBlIHBhcnNl
X3RhYmxlcyA9IHsKKyAqICAgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50KSBhcnJheQor
ICogICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7CisgKiAgIHRyYW5zbF9ibG9jayA6IGludCBh
cnJheTsKKyAqICAgbGhzIDogc3RyaW5nOworICogICBsZW4gOiBzdHJpbmc7CisgKiAgIGRlZnJl
ZCA6IHN0cmluZzsKKyAqICAgZGdvdG8gOiBzdHJpbmc7CisgKiAgIHNpbmRleCA6IHN0cmluZzsK
KyAqICAgcmluZGV4IDogc3RyaW5nOworICogICBnaW5kZXggOiBzdHJpbmc7CisgKiAgIHRhYmxl
c2l6ZSA6IGludDsKKyAqICAgdGFibGUgOiBzdHJpbmc7CisgKiAgIGNoZWNrIDogc3RyaW5nOwor
ICogICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0OworICogICBuYW1lc19jb25zdCA6
IHN0cmluZzsKKyAqICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcKKyAqIH0KKyAqCisgKiB0eXBlIHBh
cnNlcl9lbnYgPQorICogeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBT
dGF0ZXMgKikKKyAqICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1h
bnRpYyBhdHRyaWJ1dGVzICopCisgKiAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRp
b24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKQorICogIG11dGFibGUgc3ltYl9lbmRfc3Rh
Y2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopCisgKiAgbXV0YWJsZSBz
dGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopCisgKiAg
bXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVu
dCBwYXJzZSAqKQorICogIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExh
c3QgdG9rZW4gcmVhZCAqKQorICogIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAg
ICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKikKKyAqICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBw
b3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopCisgKiAg
bXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1
cnJlbnQgc3ltYm9sICopCisgKiAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAg
KCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKikKKyAqICBtdXRhYmxlIHJ1bGVf
bGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxl
ICopCisgKiAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1i
ZXIgdG8gcmVkdWNlIGJ5ICopCisgKiAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAg
ICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKQorICogIG11dGFibGUgc3RhdGUgOiBp
bnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKikKKyAq
ICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFn
IGZvciBwYXJzZV9lbmdpbmUgKikKKyAqCisgKiAgdHlwZSBwYXJzZXJfaW5wdXQgPQorICogICB8
IFN0YXJ0CisgKiAgIHwgVG9rZW5fcmVhZAorICogICB8IFN0YWNrc19ncm93bl8xCisgKiAgIHwg
U3RhY2tzX2dyb3duXzIKKyAqICAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQKKyAqICAgfCBF
cnJvcl9kZXRlY3RlZAorCisgKiBAcGFyYW0gdGFibGVzCisgKiBAcGFyYW0gZW52CisgKiBAcGFy
YW0gY21kCisgKiBAcGFyYW0gYXJnCisgKiBAcmV0dXJucyB7bnVtYmVyfQorICovCitmdW5jdGlv
biAkJGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcyAvKiBwYXJzZXJfdGFibGUgKi8sIGVudiAvKiBw
YXJzZXJfZW52ICovLCBjbWQgLyogcGFyc2VyX2lucHV0Ki8sIGFyZyAvKiBPYmoudCovKSB7Cisg
ICAgdmFyIEVSUkNPREUgPSAyNTY7CisgICAgLy92YXIgU1RBUlQgPSAwOworICAgIC8vdmFyIFRP
S0VOX1JFQUQgPSAxOworICAgIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjsKKyAgICAvL3ZhciBT
VEFDS1NfR1JPV05fMiA9IDM7CisgICAgLy92YXIgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEID0g
NDsKKyAgICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7CisgICAgLy92YXIgbG9vcCA9IDY7Cisg
ICAgLy92YXIgdGVzdHNoaWZ0ID0gNzsKKyAgICAvL3ZhciBzaGlmdCA9IDg7CisgICAgLy92YXIg
c2hpZnRfcmVjb3ZlciA9IDk7CisgICAgLy92YXIgcmVkdWNlID0gMTA7CisgICAgLy8gUGFyc2lu
Zy5wYXJzZXJfZW52CisgICAgdmFyIGVudl9zX3N0YWNrID0gMDsgLy8gYXJyYXkKKyAgICB2YXIg
ZW52X3Zfc3RhY2sgPSAxOyAvLyBhcnJheQorICAgIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9
IDI7IC8vIGFycmF5CisgICAgdmFyIGVudl9zeW1iX2VuZF9zdGFjayA9IDM7IC8vIGFycmF5Cisg
ICAgdmFyIGVudl9zdGFja3NpemUgPSA0OworICAgIHZhciBlbnZfc3RhY2tiYXNlID0gNTsKKyAg
ICB2YXIgZW52X2N1cnJfY2hhciA9IDY7CisgICAgdmFyIGVudl9sdmFsID0gNzsgLy8gT2JqLnQK
KyAgICB2YXIgZW52X3N5bWJfc3RhcnQgPSA4OyAvLyBwb3NpdGlvbgorICAgIHZhciBlbnZfc3lt
Yl9lbmQgPSA5OyAvLyBwb3NpdGlvbgorICAgIHZhciBlbnZfYXNwID0gMTA7CisgICAgdmFyIGVu
dl9ydWxlX2xlbiA9IDExOworICAgIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMjsKKyAgICB2YXIg
ZW52X3NwID0gMTM7CisgICAgdmFyIGVudl9zdGF0ZSA9IDE0OworICAgIHZhciBlbnZfZXJyZmxh
ZyA9IDE1OworICAgIC8vIFBhcnNpbmcucGFyc2VfdGFibGVzCisgICAgLy8gdmFyIF90YmxfYWN0
aW9ucyA9IDE7CisgICAgdmFyIHRibF90cmFuc2xfY29uc3QgPSAxOyAvLyBhcnJheQorICAgIHZh
ciB0YmxfdHJhbnNsX2Jsb2NrID0gMjsgLy8gYXJyYXkKKyAgICB2YXIgdGJsX2xocyA9IDM7Cisg
ICAgdmFyIHRibF9sZW4gPSA0OworICAgIHZhciB0YmxfZGVmcmVkID0gNTsKKyAgICB2YXIgdGJs
X2Rnb3RvID0gNjsKKyAgICB2YXIgdGJsX3NpbmRleCA9IDc7CisgICAgdmFyIHRibF9yaW5kZXgg
PSA4OworICAgIHZhciB0YmxfZ2luZGV4ID0gOTsKKyAgICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDEw
OworICAgIHZhciB0YmxfdGFibGUgPSAxMTsKKyAgICB2YXIgdGJsX2NoZWNrID0gMTI7CisgICAg
Ly8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDsKKyAgICAvLyB2YXIgX3RibF9uYW1lc19j
b25zdCA9IDE1OworICAgIC8vIHZhciBfdGJsX25hbWVzX2Jsb2NrID0gMTY7CisgICAgaWYgKCF0
YWJsZXMuZGdvdG8pIHsKKyAgICAgICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5KHRh
Ymxlc1t0YmxfZGVmcmVkXSk7CisgICAgICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJh
eSh0YWJsZXNbdGJsX3NpbmRleF0pOworICAgICAgICB0YWJsZXMuY2hlY2sgPSBjYW1sX2xleF9h
cnJheSh0YWJsZXNbdGJsX2NoZWNrXSk7CisgICAgICAgIHRhYmxlcy5yaW5kZXggPSBjYW1sX2xl
eF9hcnJheSh0YWJsZXNbdGJsX3JpbmRleF0pOworICAgICAgICB0YWJsZXMudGFibGUgPSBjYW1s
X2xleF9hcnJheSh0YWJsZXNbdGJsX3RhYmxlXSk7CisgICAgICAgIHRhYmxlcy5sZW4gPSBjYW1s
X2xleF9hcnJheSh0YWJsZXNbdGJsX2xlbl0pOworICAgICAgICB0YWJsZXMubGhzID0gY2FtbF9s
ZXhfYXJyYXkodGFibGVzW3RibF9saHNdKTsKKyAgICAgICAgdGFibGVzLmdpbmRleCA9IGNhbWxf
bGV4X2FycmF5KHRhYmxlc1t0YmxfZ2luZGV4XSk7CisgICAgICAgIHRhYmxlcy5kZ290byA9IGNh
bWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfZGdvdG9dKTsKKyAgICB9CisgICAgdmFyIHJlczsKKyAg
ICB2YXIgbiwgbjEsIG4yLCBzdGF0ZTE7CisgICAgLy8gUkVTVE9SRQorICAgIHZhciBzcCA9IGVu
dltlbnZfc3BdOworICAgIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdOworICAgIHZhciBlcnJm
bGFnID0gZW52W2Vudl9lcnJmbGFnXTsKKyAgICBleGl0OiBmb3IgKDs7KSB7CisgICAgICAgIC8v
Y29uc29sZS5lcnJvcigiU3RhdGUiLCBBdXRvbWF0YVtjbWRdKTsKKyAgICAgICAgc3dpdGNoIChj
bWQpIHsKKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuU1RBUlQ6CisgICAgICAgICAgICAgICAg
c3RhdGUgPSAwOworICAgICAgICAgICAgICAgIGVycmZsYWcgPSAwOworICAgICAgICAgICAgLy8g
RmFsbCB0aHJvdWdoCisgICAgICAgICAgICBjYXNlIEF1dG9tYXRhLkxPT1A6CisgICAgICAgICAg
ICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdOworICAgICAgICAgICAgICAgIGlmIChuICE9
IDApIHsKKyAgICAgICAgICAgICAgICAgICAgY21kID0gQXV0b21hdGEuUkVEVUNFOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGNtZCA9
IEF1dG9tYXRhLlRFU1RfU0hJRlQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXMgPSBSZXN1bHQuUkVBRF9UT0tFTjsKKyAg
ICAgICAgICAgICAgICBicmVhayBleGl0OworICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgY2Fs
bHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovCisgICAgICAgICAgICAvKiBzeW1iX3N0YXJ0IGFu
ZCBzeW1iX2VuZCAqLworICAgICAgICAgICAgY2FzZSBBdXRvbWF0YS5UT0tFTl9SRUFEOgorICAg
ICAgICAgICAgICAgIGlmICh0eXBlb2YgYXJnICE9PSAnbnVtYmVyJykgeworICAgICAgICAgICAg
ICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJn
LnRhZyB8IDAgLyogKyAxICovXTsKKyAgICAgICAgICAgICAgICAgICAgZW52W2Vudl9sdmFsXSA9
IGFyZ1swXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Nv
bnN0XVthcmcgLyogKyAxICovXTsKKyAgICAgICAgICAgICAgICAgICAgZW52W2Vudl9sdmFsXSA9
IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChQQVJTRVJfVFJBQ0Up
IHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiU3RhdGUgJWQsIHJlYWQgdG9r
ZW4iLCBzdGF0ZSwgYXJnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBGYWxs
IHRocm91Z2gKKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuVEVTVF9TSElGVDoKKyAgICAgICAg
ICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdOworICAgICAgICAgICAgICAgIG4yID0g
bjEgKyBlbnZbZW52X2N1cnJfY2hhcl07CisgICAgICAgICAgICAgICAgaWYgKG4xICE9IDAgJiYg
bjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAgICAgICAgICAg
ICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHsKKyAgICAgICAg
ICAgICAgICAgICAgY21kID0gQXV0b21hdGEuU0hJRlQ7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuMSA9IHRhYmxlcy5yaW5k
ZXhbc3RhdGVdOworICAgICAgICAgICAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07
CisgICAgICAgICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNb
dGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAgICAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9
PSBlbnZbZW52X2N1cnJfY2hhcl0pIHsKKyAgICAgICAgICAgICAgICAgICAgbiA9IHRhYmxlcy50
YWJsZVtuMl07CisgICAgICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLlJFRFVDRTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIChlcnJmbGFnIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0
LkNBTExfRVJST1JfRlVOQ1RJT047CisgICAgICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAg
ICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi8KKyAgICAgICAgICAg
IGNhc2UgQXV0b21hdGEuRVJST1JfREVURUNURUQ6CisgICAgICAgICAgICAgICAgaWYgKGVycmZs
YWcgPCAzKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmZsYWcgPSAzOworICAgICAgICAgICAg
ICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTEgPSBlbnZb
ZW52X3Nfc3RhY2tdW3NwIC8qICsgMSovXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG4xID0g
dGFibGVzLnNpbmRleFtzdGF0ZTFdOworICAgICAgICAgICAgICAgICAgICAgICAgbjIgPSBuMSAr
IEVSUkNPREU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAw
ICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLlNISUZUX1JFQ09WRVI7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Ag
PD0gZW52W2Vudl9zdGFja2Jhc2VdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUmVzdWx0LlJBSVNFX1BBUlNFX0VSUk9SOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNwLS07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuUkFJU0VfUEFSU0VfRVJST1I7CisgICAgICAg
ICAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqLworICAgICAg
ICAgICAgICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTsKKyAgICAgICAgICAgICAgICAg
ICAgY21kID0gQXV0b21hdGEuTE9PUDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICBj
YXNlIEF1dG9tYXRhLlNISUZUOgorICAgICAgICAgICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9
IC0xOworICAgICAgICAgICAgICAgIGlmIChlcnJmbGFnID4gMCkKKyAgICAgICAgICAgICAgICAg
ICAgZXJyZmxhZy0tOworICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICBj
YXNlIEF1dG9tYXRhLlNISUZUX1JFQ09WRVI6CisgICAgICAgICAgICAgICAgaWYgKFBBUlNFUl9U
UkFDRSkgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJTdGF0ZSAlZDogc2hp
ZnQgdG8gc3RhdGUgJWQiLCBzdGF0ZSwgdGFibGVzLnRhYmxlW24yXSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTsKKyAgICAgICAg
ICAgICAgICBzcCsrOworICAgICAgICAgICAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6
ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0LkdST1dfU1RBQ0tTXzE7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVz
IHRoZSBzdGFja3MgKi8KKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuU1RBQ0tfR1JPV05fMToK
KyAgICAgICAgICAgICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwIC8qICsgMSAqL10gPSBzdGF0ZTsK
KyAgICAgICAgICAgICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwIC8qICsgMSAqL10gPSBlbnZbZW52
X2x2YWxdOworICAgICAgICAgICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgLyog
KyAxICovXSA9IGVudltlbnZfc3ltYl9zdGFydF07CisgICAgICAgICAgICAgICAgZW52W2Vudl9z
eW1iX2VuZF9zdGFja11bc3AgLyogKyAxICovXSA9IGVudltlbnZfc3ltYl9lbmRdOworICAgICAg
ICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLkxPT1A7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlJFRFVDRToKKyAgICAgICAgICAgICAgICBpZiAoUEFS
U0VSX1RSQUNFKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlN0YXRlICVk
IDogcmVkdWNlIGJ5IHJ1bGUgJWQiLCBzdGF0ZSwgbik7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTsKKyAgICAgICAgICAgICAgICBlbnZb
ZW52X2FzcF0gPSBzcDsKKyAgICAgICAgICAgICAgICBlbnZbZW52X3J1bGVfbnVtYmVyXSA9IG47
CisgICAgICAgICAgICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtOworICAgICAgICAgICAgICAg
IHNwID0gc3AgLSBtICsgMTsKKyAgICAgICAgICAgICAgICBtID0gdGFibGVzLmxoc1tuXTsKKyAg
ICAgICAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwIC0gMV07IC8vCisgICAg
ICAgICAgICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dOworICAgICAgICAgICAgICAgIG4yID0g
bjEgKyBzdGF0ZTE7CisgICAgICAgICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBu
MiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAgICAgICAgICAgICAgICAgdGFibGVz
LmNoZWNrW24yXSA9PSBzdGF0ZTEpCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gdGFibGVz
LnRhYmxlW24yXTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gdGFibGVzLmRnb3RvW21dOworICAgICAgICAgICAgICAgIGlmIChzcCA+PSBlbnZbZW52
X3N0YWNrc2l6ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0LkdST1dfU1RB
Q0tTXzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICAvKiBUaGUgTUwgY29k
ZSByZXNpemVzIHRoZSBzdGFja3MgKi8KKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuU1RBQ0tf
R1JPV05fMjoKKyAgICAgICAgICAgICAgICByZXMgPSBSZXN1bHQuQ09NUFVURV9TRU1BTlRJQ19B
Q1RJT047CisgICAgICAgICAgICAgICAgYnJlYWsgZXhpdDsKKyAgICAgICAgICAgIC8qIFRoZSBN
TCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi8KKyAgICAgICAgICAgIGNhc2UgQXV0
b21hdGEuU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOgorICAgICAgICAgICAgICAgIGVudltlbnZf
c19zdGFja11bc3AgLyogKyAxICovXSA9IHN0YXRlOworICAgICAgICAgICAgICAgIGVudltlbnZf
dl9zdGFja11bc3AgLyogKyAxKi9dID0gYXJnOworICAgICAgICAgICAgICAgIHZhciBhc3AgPSBl
bnZbZW52X2FzcF07CisgICAgICAgICAgICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3Ag
LyogKyAxKi9dID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwIC8qICsgMSovXTsKKyAgICAg
ICAgICAgICAgICBpZiAoc3AgPiBhc3ApIHsKKyAgICAgICAgICAgICAgICAgICAgLyogVGhpcyBp
cyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2Vu
ZC4gKi8KKyAgICAgICAgICAgICAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCAv
KiArIDEqL10gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgLyorIDEqL107CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLkxPT1A7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqLworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0LlJBSVNFX1BB
UlNFX0VSUk9SOworICAgICAgICB9CisgICAgfQorICAgIC8vIFNBVkUKKyAgICBlbnZbZW52X3Nw
XSA9IHNwOworICAgIGVudltlbnZfc3RhdGVdID0gc3RhdGU7CisgICAgZW52W2Vudl9lcnJmbGFn
XSA9IGVycmZsYWc7CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqCisgKiBleHRlcm5hbCBzZXRf
dHJhY2U6IGJvb2wgLT4gYm9vbCA9ICJjYW1sX3NldF9wYXJzZXJfdHJhY2UiCisgKiBwYXJzaW5n
Lm1sCisgKiBAcGFyYW0ge2Jvb2xlYW59CisgKiBAcmV0dXJucyB7Ym9vbGVhbn0KKyAqLworZnVu
Y3Rpb24gJCRjYW1sX3NldF9wYXJzZXJfdHJhY2UodikgeworICAgIHZhciBvbGQgPSBQQVJTRVJf
VFJBQ0U7CisgICAgUEFSU0VSX1RSQUNFID0gdjsKKyAgICByZXR1cm4gb2xkOworfQorCisKKzsK
KworZnVuY3Rpb24gY2FtbF9wYXJzZV9lbmdpbmUocHJpbSwgcHJpbSQxLCBwcmltJDIsIHByaW0k
MykgeworICByZXR1cm4gJCRjYW1sX3BhcnNlX2VuZ2luZShwcmltLCBwcmltJDEsIHByaW0kMiwg
cHJpbSQzKTsKK30KKworZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNlKHByaW0pIHsKKyAg
cmV0dXJuICQkY2FtbF9zZXRfcGFyc2VyX3RyYWNlKHByaW0pOworfQorCitleHBvcnRzLmNhbWxf
cGFyc2VfZW5naW5lICAgICA9IGNhbWxfcGFyc2VfZW5naW5lOworZXhwb3J0cy5jYW1sX3NldF9w
YXJzZXJfdHJhY2UgPSBjYW1sX3NldF9wYXJzZXJfdHJhY2U7CisvKiAgTm90IGEgcHVyZSBtb2R1
bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX3BhcnNlci5qcyAvLy8vLy8vLworwqAgwqAgcmV0
dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX3N0cmluZyddID0gZnVu
Y3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2Ft
bF9zdHJpbmcuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5j
dGlvbiBqc19zdHJpbmdfb2ZfY2hhcihwcmltKSB7CisgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJD
b2RlKHByaW0pOworfQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQocywgaSkgeworICBpZiAo
aSA+PSBzLmxlbmd0aCB8fCBpIDwgMCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJpbmRleCBvdXQg
b2YgYm91bmRzIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBzLmNoYXJD
b2RlQXQoaSk7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikgewor
ICBpZiAobGVuIDwgMCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJTdHJpbmcuY3JlYXRlIgorICAg
ICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBuZXcgQXJyYXkobGVuKTsKKyAgfQor
fQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikgeworICBpZiAoczEgPT09
IHMyKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgZWxzZSBpZiAoczEgPCBzMikgeworICAgIHJl
dHVybiAtMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMTsKKyAgfQorfQorCitmdW5jdGlv
biBjYW1sX2ZpbGxfc3RyaW5nKHMsIGksIGwsIGMpIHsKKyAgaWYgKGwgPiAwKSB7CisgICAgZm9y
KHZhciBrID0gaSAsa19maW5pc2ggPSAobCArIGkgfCAwKSAtIDEgfCAwOyBrIDw9IGtfZmluaXNo
OyArK2speworICAgICAgc1trXSA9IGM7CisgICAgfQorICAgIHJldHVybiAvKiAoKSAqLzA7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9ibGl0
X3N0cmluZyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7CisgIGlmIChsZW4gPiAwKSB7CisgICAgdmFy
IG9mZjEgPSBzMS5sZW5ndGggLSBpMSB8IDA7CisgICAgaWYgKGxlbiA8PSBvZmYxKSB7CisgICAg
ICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyAr
K2kpeworICAgICAgICBzMltpMiArIGkgfCAwXSA9IHMxLmNoYXJDb2RlQXQoaTEgKyBpIHwgMCk7
CisgICAgICB9CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIGZvcih2YXIgaSQxID0gMCAsaV9maW5pc2gkMSA9IG9mZjEgLSAxIHwgMDsgaSQxIDw9IGlf
ZmluaXNoJDE7ICsraSQxKXsKKyAgICAgICAgczJbaTIgKyBpJDEgfCAwXSA9IHMxLmNoYXJDb2Rl
QXQoaTEgKyBpJDEgfCAwKTsKKyAgICAgIH0KKyAgICAgIGZvcih2YXIgaSQyID0gb2ZmMSAsaV9m
aW5pc2gkMiA9IGxlbiAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gkMjsgKytpJDIpeworICAgICAg
ICBzMltpMiArIGkkMiB8IDBdID0gLyogIlwwMDAiICovMDsKKyAgICAgIH0KKyAgICAgIHJldHVy
biAvKiAoKSAqLzA7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9
CisKK2Z1bmN0aW9uIGNhbWxfYmxpdF9ieXRlcyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7CisgIGlm
IChsZW4gPiAwKSB7CisgICAgaWYgKHMxID09PSBzMikgeworICAgICAgdmFyIHMxJDEgPSBzMTsK
KyAgICAgIHZhciBpMSQxID0gaTE7CisgICAgICB2YXIgaTIkMSA9IGkyOworICAgICAgdmFyIGxl
biQxID0gbGVuOworICAgICAgaWYgKGkxJDEgPCBpMiQxKSB7CisgICAgICAgIHZhciByYW5nZV9h
ID0gKHMxJDEubGVuZ3RoIC0gaTIkMSB8IDApIC0gMSB8IDA7CisgICAgICAgIHZhciByYW5nZV9i
ID0gbGVuJDEgLSAxIHwgMDsKKyAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2VfYSA+IHJhbmdlX2Ig
PyByYW5nZV9iIDogcmFuZ2VfYTsKKyAgICAgICAgZm9yKHZhciBqID0gcmFuZ2U7IGogPj0gMDsg
LS1qKXsKKyAgICAgICAgICBzMSQxW2kyJDEgKyBqIHwgMF0gPSBzMSQxW2kxJDEgKyBqIHwgMF07
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0KKyAgICAgIGVs
c2UgaWYgKGkxJDEgPiBpMiQxKSB7CisgICAgICAgIHZhciByYW5nZV9hJDEgPSAoczEkMS5sZW5n
dGggLSBpMSQxIHwgMCkgLSAxIHwgMDsKKyAgICAgICAgdmFyIHJhbmdlX2IkMSA9IGxlbiQxIC0g
MSB8IDA7CisgICAgICAgIHZhciByYW5nZSQxID0gcmFuZ2VfYSQxID4gcmFuZ2VfYiQxID8gcmFu
Z2VfYiQxIDogcmFuZ2VfYSQxOworICAgICAgICBmb3IodmFyIGsgPSAwOyBrIDw9IHJhbmdlJDE7
ICsrayl7CisgICAgICAgICAgczEkMVtpMiQxICsgayB8IDBdID0gczEkMVtpMSQxICsgayB8IDBd
OworICAgICAgICB9CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgdmFyIG9mZjEgPSBzMS5sZW5ndGggLSBpMSB8IDA7CisgICAgICBpZiAobGVuIDw9IG9mZjEp
IHsKKyAgICAgICAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsZW4gLSAxIHwgMDsgaSA8PSBp
X2ZpbmlzaDsgKytpKXsKKyAgICAgICAgICBzMltpMiArIGkgfCAwXSA9IHMxW2kxICsgaSB8IDBd
OworICAgICAgICB9CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgZm9yKHZhciBpJDEgPSAwICxpX2ZpbmlzaCQxID0gb2ZmMSAtIDEgfCAw
OyBpJDEgPD0gaV9maW5pc2gkMTsgKytpJDEpeworICAgICAgICAgIHMyW2kyICsgaSQxIHwgMF0g
PSBzMVtpMSArIGkkMSB8IDBdOworICAgICAgICB9CisgICAgICAgIGZvcih2YXIgaSQyID0gb2Zm
MSAsaV9maW5pc2gkMiA9IGxlbiAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gkMjsgKytpJDIpewor
ICAgICAgICAgIHMyW2kyICsgaSQyIHwgMF0gPSAvKiAiXDAwMCIgKi8wOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgfQorICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGJ5dGVzX29mX3N0cmluZyhzKSB7Cisg
IHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4pOworICBmb3Io
dmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpewor
ICAgIHJlc1tpXSA9IHMuY2hhckNvZGVBdChpKTsKKyAgfQorICByZXR1cm4gcmVzOworfQorCitm
dW5jdGlvbiBieXRlc190b19zdHJpbmcoYSkgeworICB2YXIgYnl0ZXMgPSBhOworICB2YXIgaSA9
IDA7CisgIHZhciBsZW4gPSBhLmxlbmd0aDsKKyAgdmFyIHMgPSAiIjsKKyAgdmFyIHNfbGVuID0g
bGVuOworICBpZiAoaSA9PT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT09IGJ5dGVzLmxlbmd0
aCkgeworICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsYnl0ZXMpOwor
ICB9CisgIGVsc2UgeworICAgIHZhciBvZmZzZXQgPSAwOworICAgIHdoaWxlKHNfbGVuID4gMCkg
eworICAgICAgdmFyIG5leHQgPSBzX2xlbiA8IDEwMjQgPyBzX2xlbiA6IDEwMjQ7CisgICAgICB2
YXIgdG1wX2J5dGVzID0gbmV3IEFycmF5KG5leHQpOworICAgICAgY2FtbF9ibGl0X2J5dGVzKGJ5
dGVzLCBvZmZzZXQsIHRtcF9ieXRlcywgMCwgbmV4dCk7CisgICAgICBzID0gcyArIFN0cmluZy5m
cm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0bXBfYnl0ZXMpOworICAgICAgc19sZW4gPSBzX2xlbiAt
IG5leHQgfCAwOworICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICsgbmV4dCB8IDA7CisgICAgfTsKKyAg
ICByZXR1cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9jaGFyX2FycmF5
KGNoYXJzKSB7CisgIHZhciBsZW4gPSBjaGFycy5sZW5ndGg7CisgIHZhciBieXRlcyA9IG5ldyBB
cnJheShsZW4pOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9
IGlfZmluaXNoOyArK2kpeworICAgIGJ5dGVzW2ldID0gY2hhcnNbaV07CisgIH0KKyAgcmV0dXJu
IGJ5dGVzX3RvX3N0cmluZyhieXRlcyk7Cit9CisKK2Z1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxl
KGMpIHsKKyAgaWYgKGMgPiAzMSkgeworICAgIHJldHVybiArKGMgPCAxMjcpOworICB9CisgIGVs
c2UgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9z
dHJpbmdfZ2V0MTYocywgaSkgeworICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpICsgKHMuY2hhckNv
ZGVBdChpICsgMSB8IDApIDw8IDgpIHwgMDsKK30KKworZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0
MzIocywgaSkgeworICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgKyAocy5jaGFyQ29kZUF0KGkg
KyAxIHwgMCkgPDwgOCkgfCAwKSArIChzLmNoYXJDb2RlQXQoaSArIDIgfCAwKSA8PCAxNikgfCAw
KSArIChzLmNoYXJDb2RlQXQoaSArIDMgfCAwKSA8PCAyNCkgfCAwOworfQorCitmdW5jdGlvbiBn
ZXQocywgaSkgeworICBpZiAoaSA8IDAgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsK
KyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAg
ICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIgorICAgICAgICBdOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7CisgIH0KK30KKworZXhwb3J0cy5ieXRlc19vZl9z
dHJpbmcgICAgICAgICAgID0gYnl0ZXNfb2Zfc3RyaW5nOworZXhwb3J0cy5ieXRlc190b19zdHJp
bmcgICAgICAgICAgID0gYnl0ZXNfdG9fc3RyaW5nOworZXhwb3J0cy5jYW1sX2lzX3ByaW50YWJs
ZSAgICAgICAgID0gY2FtbF9pc19wcmludGFibGU7CitleHBvcnRzLmNhbWxfc3RyaW5nX29mX2No
YXJfYXJyYXkgPSBjYW1sX3N0cmluZ19vZl9jaGFyX2FycmF5OworZXhwb3J0cy5jYW1sX3N0cmlu
Z19nZXQgICAgICAgICAgID0gY2FtbF9zdHJpbmdfZ2V0OworZXhwb3J0cy5jYW1sX3N0cmluZ19j
b21wYXJlICAgICAgID0gY2FtbF9zdHJpbmdfY29tcGFyZTsKK2V4cG9ydHMuY2FtbF9jcmVhdGVf
c3RyaW5nICAgICAgICA9IGNhbWxfY3JlYXRlX3N0cmluZzsKK2V4cG9ydHMuY2FtbF9maWxsX3N0
cmluZyAgICAgICAgICA9IGNhbWxfZmlsbF9zdHJpbmc7CitleHBvcnRzLmNhbWxfYmxpdF9zdHJp
bmcgICAgICAgICAgPSBjYW1sX2JsaXRfc3RyaW5nOworZXhwb3J0cy5jYW1sX2JsaXRfYnl0ZXMg
ICAgICAgICAgID0gY2FtbF9ibGl0X2J5dGVzOworZXhwb3J0cy5jYW1sX3N0cmluZ19nZXQxNiAg
ICAgICAgID0gY2FtbF9zdHJpbmdfZ2V0MTY7CitleHBvcnRzLmNhbWxfc3RyaW5nX2dldDMyICAg
ICAgICAgPSBjYW1sX3N0cmluZ19nZXQzMjsKK2V4cG9ydHMuanNfc3RyaW5nX29mX2NoYXIgICAg
ICAgICA9IGpzX3N0cmluZ19vZl9jaGFyOworZXhwb3J0cy5nZXQgICAgICAgICAgICAgICAgICAg
ICAgID0gZ2V0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX3N0
cmluZy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3Jl
Z2lzdHJ5WydjYW1sX3V0aWxzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0g
e307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX3V0aWxzLmpzIC8vLy8vLy8vCisndXNlIHN0cmlj
dCc7CisKKwordmFyIHJlcGVhdCA9ICggKFN0cmluZy5wcm90b3R5cGUucmVwZWF0ICYmIGZ1bmN0
aW9uIChjb3VudCxzZWxmKXtyZXR1cm4gc2VsZi5yZXBlYXQoY291bnQpfSkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oY291bnQg
LCBzZWxmKSB7CisgICAgICAgIGlmIChzZWxmLmxlbmd0aCA9PSAwIHx8IGNvdW50ID09IDApIHsK
KyAgICAgICAgICAgIHJldHVybiAnJzsKKyAgICAgICAgfQorICAgICAgICAvLyBFbnN1cmluZyBj
b3VudCBpcyBhIDMxLWJpdCBpbnRlZ2VyIGFsbG93cyB1cyB0byBoZWF2aWx5IG9wdGltaXplIHRo
ZQorICAgICAgICAvLyBtYWluIHBhcnQuIEJ1dCBhbnl3YXksIG1vc3QgY3VycmVudCAoQXVndXN0
IDIwMTQpIGJyb3dzZXJzIGNhbid0IGhhbmRsZQorICAgICAgICAvLyBzdHJpbmdzIDEgPDwgMjgg
Y2hhcnMgb3IgbG9uZ2VyLCBzbzoKKyAgICAgICAgaWYgKHNlbGYubGVuZ3RoICogY291bnQgPj0g
MSA8PCAyOCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3JlcGVhdCBjb3Vu
dCBtdXN0IG5vdCBvdmVyZmxvdyBtYXhpbXVtIHN0cmluZyBzaXplJyk7CisgICAgICAgIH0KKyAg
ICAgICAgdmFyIHJwdCA9ICcnOworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBpZiAo
KGNvdW50ICYgMSkgPT0gMSkgeworICAgICAgICAgICAgICAgIHJwdCArPSBzZWxmOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY291bnQgPj4+PSAxOworICAgICAgICAgICAgaWYgKGNvdW50
ID09IDApIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHNlbGYgKz0gc2VsZjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcnB0OworICAgIH0K
Kyk7CisKK2V4cG9ydHMucmVwZWF0ID0gcmVwZWF0OworLyogcmVwZWF0IE5vdCBhIHB1cmUgbW9k
dWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF91dGlscy5qcyAvLy8vLy8vLworwqAgwqAgcmV0
dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjaGFyJ10gPSBmdW5jdGlvbigp
IHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjaGFyLmpzIC8v
Ly8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJl
cXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gY2hyKG4pIHsK
KyAgaWYgKG4gPCAwIHx8IG4gPiAyNTUpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQ2hhci5jaHIi
CisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG47CisgIH0KK30KKworZnVu
Y3Rpb24gZXNjYXBlZChjKSB7CisgIHZhciBleGl0ID0gMDsKKyAgaWYgKGMgPj0gNDApIHsKKyAg
ICBpZiAoYyAhPT0gOTIpIHsKKyAgICAgIGV4aXQgPSBjID49IDEyNyA/IDEgOiAyOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAiXFxcXCI7CisgICAgfQorICB9CisgIGVsc2UgaWYg
KGMgPj0gMzIpIHsKKyAgICBpZiAoYyA+PSAzOSkgeworICAgICAgcmV0dXJuICJcXCciOworICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIGV4aXQgPSAyOworICAgIH0KKyAgfQorICBlbHNlIGlmIChj
ID49IDE0KSB7CisgICAgZXhpdCA9IDE7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChjKSB7
CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICByZXR1cm4gIlxcYiI7CisgICAgICBjYXNlIDkg
OiAKKyAgICAgICAgICByZXR1cm4gIlxcdCI7CisgICAgICBjYXNlIDEwIDogCisgICAgICAgICAg
cmV0dXJuICJcXG4iOworICAgICAgY2FzZSAwIDogCisgICAgICBjYXNlIDEgOiAKKyAgICAgIGNh
c2UgMiA6IAorICAgICAgY2FzZSAzIDogCisgICAgICBjYXNlIDQgOiAKKyAgICAgIGNhc2UgNSA6
IAorICAgICAgY2FzZSA2IDogCisgICAgICBjYXNlIDcgOiAKKyAgICAgIGNhc2UgMTEgOiAKKyAg
ICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICByZXR1cm4gIlxcciI7CisgICAgICAKKyAgICB9Cisg
IH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAgY2FzZSAxIDogCisgICAgICAgIHZhciBzID0gbmV3
IEFycmF5KDQpOworICAgICAgICBzWzBdID0gLyogIlxcIiAqLzkyOworICAgICAgICBzWzFdID0g
NDggKyAoYyAvIDEwMCB8IDApIHwgMDsKKyAgICAgICAgc1syXSA9IDQ4ICsgKGMgLyAxMCB8IDAp
ICUgMTAgfCAwOworICAgICAgICBzWzNdID0gNDggKyBjICUgMTAgfCAwOworICAgICAgICByZXR1
cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHMpOworICAgIGNhc2UgMiA6IAorICAgICAg
ICB2YXIgcyQxID0gbmV3IEFycmF5KDEpOworICAgICAgICBzJDFbMF0gPSBjOworICAgICAgICBy
ZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHMkMSk7CisgICAgCisgIH0KK30KKwor
ZnVuY3Rpb24gbG93ZXJjYXNlKGMpIHsKKyAgaWYgKGMgPj0gLyogIkEiICovNjUgJiYgYyA8PSAv
KiAiWiIgKi85MCB8fCBjID49IC8qICJcMTkyIiAqLzE5MiAmJiBjIDw9IC8qICJcMjE0IiAqLzIx
NCB8fCBjID49IC8qICJcMjE2IiAqLzIxNiAmJiBjIDw9IC8qICJcMjIyIiAqLzIyMikgeworICAg
IHJldHVybiBjICsgMzIgfCAwOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBjOworICB9Cit9
CisKK2Z1bmN0aW9uIHVwcGVyY2FzZShjKSB7CisgIGlmIChjID49IC8qICJhIiAqLzk3ICYmIGMg
PD0gLyogInoiICovMTIyIHx8IGMgPj0gLyogIlwyMjQiICovMjI0ICYmIGMgPD0gLyogIlwyNDYi
ICovMjQ2IHx8IGMgPj0gLyogIlwyNDgiICovMjQ4ICYmIGMgPD0gLyogIlwyNTQiICovMjU0KSB7
CisgICAgcmV0dXJuIGMgLSAzMiB8IDA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGM7Cisg
IH0KK30KKworZnVuY3Rpb24gY29tcGFyZShjMSwgYzIpIHsKKyAgcmV0dXJuIGMxIC0gYzIgfCAw
OworfQorCitleHBvcnRzLmNociAgICAgICA9IGNocjsKK2V4cG9ydHMuZXNjYXBlZCAgID0gZXNj
YXBlZDsKK2V4cG9ydHMubG93ZXJjYXNlID0gbG93ZXJjYXNlOworZXhwb3J0cy51cHBlcmNhc2Ug
PSB1cHBlcmNhc2U7CitleHBvcnRzLmNvbXBhcmUgICA9IGNvbXBhcmU7CisvKiBObyBzaWRlIGVm
ZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNoYXIuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBl
eHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY3VycnknXSA9IGZ1bmN0aW9uKCkgewor
wqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGN1cnJ5LmpzIC8vLy8v
Ly8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX29vICAgID0gcmVxdWlyZSgiLi9jYW1sX29v
Iik7Cit2YXIgQ2FtbF9hcnJheSA9IHJlcXVpcmUoIi4vY2FtbF9hcnJheSIpOworCitmdW5jdGlv
biBhcHAoX2YsIF9hcmdzKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgYXJncyA9IF9hcmdz
OworICAgIHZhciBmID0gX2Y7CisgICAgdmFyIGFyaXR5ID0gZi5sZW5ndGg7CisgICAgdmFyIGFy
aXR5JDEgPSBhcml0eSA/IGFyaXR5IDogMTsKKyAgICB2YXIgbGVuID0gYXJncy5sZW5ndGg7Cisg
ICAgdmFyIGQgPSBhcml0eSQxIC0gbGVuIHwgMDsKKyAgICBpZiAoZCkgeworICAgICAgaWYgKGQg
PCAwKSB7CisgICAgICAgIF9hcmdzID0gQ2FtbF9hcnJheS5jYW1sX2FycmF5X3N1YihhcmdzLCBh
cml0eSQxLCAtZCB8IDApOworICAgICAgICBfZiA9IGYuYXBwbHkobnVsbCwgQ2FtbF9hcnJheS5j
YW1sX2FycmF5X3N1YihhcmdzLCAwLCBhcml0eSQxKSk7CisgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIChmdW5jdGlvbihm
LGFyZ3MpeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAgICAgICByZXR1cm4g
YXBwKGYsIGFyZ3MuY29uY2F0KC8qIGFycmF5ICovW3hdKSk7CisgICAgICAgIH0KKyAgICAgICAg
fShmLGFyZ3MpKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gZi5h
cHBseShudWxsLCBhcmdzKTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGpzKGxhYmVsLCBj
YWNoZWlkLCBvYmosIGFyZ3MpIHsKKyAgdmFyIG1ldGggPSBDYW1sX29vLmNhbWxfZ2V0X3B1Ymxp
Y19tZXRob2Qob2JqLCBsYWJlbCwgY2FjaGVpZCk7CisgIHJldHVybiBhcHAobWV0aCwgYXJncyk7
Cit9CisKK2Z1bmN0aW9uIGN1cnJ5XzEobywgYTAsIGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcg
fHwgYXJpdHkgPCAwKSB7CisgICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1thMF0pOworICB9
CisgIGVsc2UgeworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAg
Y2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIG8oYTApOworICAgICAgY2FzZSAyIDogCisgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAs
IHBhcmFtKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBh
cmFtLCBwYXJhbSQxKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA0IDogCisgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgeworICAgICAgICAgICAg
cmV0dXJuIG8oYTAsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsKKyAgICAgICAgICB9OworICAg
ICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwg
cGFyYW0kMiwgcGFyYW0kMykgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBhcmFtLCBwYXJh
bSQxLCBwYXJhbSQyLCBwYXJhbSQzKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA2IDogCisg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0k
MywgcGFyYW0kNCkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBhcmFtLCBwYXJhbSQxLCBw
YXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA3IDog
CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFy
YW0kMywgcGFyYW0kNCwgcGFyYW0kNSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBhcmFt
LCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0LCBwYXJhbSQ1KTsKKyAgICAgICAg
ICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF8xKG8sIGEwKSB7CisgIHZh
ciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDEpIHsKKyAgICByZXR1cm4gbyhh
MCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGN1cnJ5XzEobywgYTAsIGFyaXR5KTsKKyAg
fQorfQorCitmdW5jdGlvbiBqczEobGFiZWwsIGNhY2hlaWQsIGEwKSB7CisgIHJldHVybiBfMShD
YW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAsIGxhYmVsLCBjYWNoZWlkKSwgYTApOwor
fQorCitmdW5jdGlvbiBfXzEobykgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFy
aXR5ID09PSAxKSB7CisgICAgcmV0dXJuIG87CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChhMCkgeworICAgICAgcmV0dXJuIF8xKG8sIGEwKTsKKyAgICB9OworICB9Cit9CisK
K2Z1bmN0aW9uIGN1cnJ5XzIobywgYTAsIGExLCBhcml0eSkgeworICBpZiAoYXJpdHkgPiA3IHx8
IGFyaXR5IDwgMCkgeworICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9bCisgICAgICAgICAg
ICAgICAgYTAsCisgICAgICAgICAgICAgICAgYTEKKyAgICAgICAgICAgICAgXSk7CisgIH0KKyAg
ZWxzZSB7CisgICAgc3dpdGNoIChhcml0eSkgeworICAgICAgY2FzZSAwIDogCisgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAqL1thMV0pOworICAg
ICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIG8oYTAsIGExKTsKKyAgICAgIGNhc2UgMyA6
IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgIHJldHVy
biBvKGEwLCBhMSwgcGFyYW0pOworICAgICAgICAgIH07CisgICAgICBjYXNlIDQgOiAKKyAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxKSB7CisgICAgICAgICAgICByZXR1
cm4gbyhhMCwgYTEsIHBhcmFtLCBwYXJhbSQxKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA1
IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikg
eworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMik7
CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlv
biAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpIHsKKyAgICAgICAgICAgIHJldHVy
biBvKGEwLCBhMSwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpOworICAgICAgICAg
IH07CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBw
YXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0KSB7CisgICAgICAgICAgICByZXR1cm4g
byhhMCwgYTEsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0KTsKKyAg
ICAgICAgICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF8yKG8sIGEwLCBh
MSkgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSAyKSB7CisgICAg
cmV0dXJuIG8oYTAsIGExKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gY3VycnlfMihvLCBh
MCwgYTEsIGFyaXR5KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczIobGFiZWwsIGNhY2hlaWQsIGEw
LCBhMSkgeworICByZXR1cm4gXzIoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0aG9kKGEwLCBs
YWJlbCwgY2FjaGVpZCksIGEwLCBhMSk7Cit9CisKK2Z1bmN0aW9uIF9fMihvKSB7CisgIHZhciBh
cml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDIpIHsKKyAgICByZXR1cm4gbzsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGEwLCBhMSkgeworICAgICAgcmV0dXJu
IF8yKG8sIGEwLCBhMSk7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV8zKG8sIGEw
LCBhMSwgYTIsIGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcgfHwgYXJpdHkgPCAwKSB7CisgICAg
cmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICBhMCwKKyAgICAgICAg
ICAgICAgICBhMSwKKyAgICAgICAgICAgICAgICBhMgorICAgICAgICAgICAgICBdKTsKKyAgfQor
ICBlbHNlIHsKKyAgICBzd2l0Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5ICovWworICAgICAg
ICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgICAgICAgIGEyCisgICAgICAgICAg
ICAgICAgICAgIF0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEw
LCBhMSksIC8qIGFycmF5ICovW2EyXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1
cm4gbyhhMCwgYTEsIGEyKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJldHVybiBmdW5j
dGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIHBhcmFtKTsK
KyAgICAgICAgICB9OworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
IChwYXJhbSwgcGFyYW0kMSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgcGFy
YW0sIHBhcmFtJDEpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKSB7CisgICAgICAgICAgICBy
ZXR1cm4gbyhhMCwgYTEsIGEyLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMik7CisgICAgICAgICAg
fTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBh
cmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwg
YTIsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzKTsKKyAgICAgICAgICB9OworICAg
ICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF8zKG8sIGEwLCBhMSwgYTIpIHsKKyAgdmFy
IGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gMykgeworICAgIHJldHVybiBvKGEw
LCBhMSwgYTIpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBjdXJyeV8zKG8sIGEwLCBhMSwg
YTIsIGFyaXR5KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczMobGFiZWwsIGNhY2hlaWQsIGEwLCBh
MSwgYTIpIHsKKyAgcmV0dXJuIF8zKENhbWxfb28uY2FtbF9nZXRfcHVibGljX21ldGhvZChhMCwg
bGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEsIGEyKTsKK30KKworZnVuY3Rpb24gX18zKG8pIHsKKyAg
dmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gMykgeworICAgIHJldHVybiBv
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBhMikgeworICAg
ICAgcmV0dXJuIF8zKG8sIGEwLCBhMSwgYTIpOworICAgIH07CisgIH0KK30KKworZnVuY3Rpb24g
Y3VycnlfNChvLCBhMCwgYTEsIGEyLCBhMywgYXJpdHkpIHsKKyAgaWYgKGFyaXR5ID4gNyB8fCBh
cml0eSA8IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovWworICAgICAgICAgICAg
ICAgIGEwLAorICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgIGEyLAorICAgICAg
ICAgICAgICAgIGEzCisgICAgICAgICAgICAgIF0pOworICB9CisgIGVsc2UgeworICAgIHN3aXRj
aCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgY2FzZSAxIDogCisgICAgICAgICAg
cmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTEs
CisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMKKyAg
ICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4g
YXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisg
ICAgICAgICAgICAgICAgICAgICAgYTMKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiksIC8qIGFycmF5ICov
W2EzXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBh
Myk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7
CisgICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgcGFyYW0pOworICAgICAgICAg
IH07CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBw
YXJhbSQxKSB7CisgICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgcGFyYW0sIHBh
cmFtJDEpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKSB7CisgICAgICAgICAgICByZXR1cm4g
byhhMCwgYTEsIGEyLCBhMywgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOworICAgICAgICAgIH07
CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzQobywgYTAsIGExLCBhMiwgYTMp
IHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNCkgeworICAgIHJl
dHVybiBvKGEwLCBhMSwgYTIsIGEzKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gY3Vycnlf
NChvLCBhMCwgYTEsIGEyLCBhMywgYXJpdHkpOworICB9Cit9CisKK2Z1bmN0aW9uIGpzNChsYWJl
bCwgY2FjaGVpZCwgYTAsIGExLCBhMiwgYTMpIHsKKyAgcmV0dXJuIF80KENhbWxfb28uY2FtbF9n
ZXRfcHVibGljX21ldGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEsIGEyLCBhMyk7Cit9
CisKK2Z1bmN0aW9uIF9fNChvKSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJp
dHkgPT09IDQpIHsKKyAgICByZXR1cm4gbzsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGEwLCBhMSwgYTIsIGEzKSB7CisgICAgICByZXR1cm4gXzQobywgYTAsIGExLCBhMiwg
YTMpOworICAgIH07CisgIH0KK30KKworZnVuY3Rpb24gY3VycnlfNShvLCBhMCwgYTEsIGEyLCBh
MywgYTQsIGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcgfHwgYXJpdHkgPCAwKSB7CisgICAgcmV0
dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICBhMCwKKyAgICAgICAgICAg
ICAgICBhMSwKKyAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICBhMywKKyAgICAg
ICAgICAgICAgICBhNAorICAgICAgICAgICAgICBdKTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0
Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
IHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGEx
LAorICAgICAgICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgICAgICAgIGEzLAor
ICAgICAgICAgICAgICAgICAgICAgIGE0CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAg
Y2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSksIC8qIGFycmF5ICovWwor
ICAgICAgICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAg
ICAgICAgICAgICAgICAgICAgIGE0CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2Fz
ZSAzIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIpLCAvKiBhcnJheSAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICBhMywKKyAgICAgICAgICAgICAgICAgICAgICBhNAorICAg
ICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJldHVybiBh
cHAobyhhMCwgYTEsIGEyLCBhMyksIC8qIGFycmF5ICovW2E0XSk7CisgICAgICBjYXNlIDUgOiAK
KyAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQpOworICAgICAgY2FzZSA2IDog
CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgcmV0dXJu
IG8oYTAsIGExLCBhMiwgYTMsIGE0LCBwYXJhbSk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2Ug
NyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEpIHsKKyAgICAg
ICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgcGFyYW0sIHBhcmFtJDEpOworICAg
ICAgICAgIH07CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzUobywgYTAsIGEx
LCBhMiwgYTMsIGE0KSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09
IDUpIHsKKyAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQpOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBjdXJyeV81KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYXJpdHkpOworICB9Cit9
CisKK2Z1bmN0aW9uIGpzNShsYWJlbCwgY2FjaGVpZCwgYTAsIGExLCBhMiwgYTMsIGE0KSB7Cisg
IHJldHVybiBfNShDYW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAsIGxhYmVsLCBjYWNo
ZWlkKSwgYTAsIGExLCBhMiwgYTMsIGE0KTsKK30KKworZnVuY3Rpb24gX181KG8pIHsKKyAgdmFy
IGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNSkgeworICAgIHJldHVybiBvOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBhMiwgYTMsIGE0KSB7
CisgICAgICByZXR1cm4gXzUobywgYTAsIGExLCBhMiwgYTMsIGE0KTsKKyAgICB9OworICB9Cit9
CisKK2Z1bmN0aW9uIGN1cnJ5XzYobywgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYXJpdHkpIHsK
KyAgaWYgKGFyaXR5ID4gNyB8fCBhcml0eSA8IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFy
cmF5ICovWworICAgICAgICAgICAgICAgIGEwLAorICAgICAgICAgICAgICAgIGExLAorICAgICAg
ICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgIGE0LAor
ICAgICAgICAgICAgICAgIGE1CisgICAgICAgICAgICAgIF0pOworICB9CisgIGVsc2UgeworICAg
IHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgY2FzZSAxIDogCisgICAg
ICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgYTEsCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAg
YTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAgYTUK
KyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1
cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTIs
CisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisg
ICAgICAgICAgICAgICAgICAgICAgYTUKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiksIC8qIGFycmF5ICov
WworICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgICAgICAgIGE0LAor
ICAgICAgICAgICAgICAgICAgICAgIGE1CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAg
Y2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzKSwgLyogYXJy
YXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAg
YTUKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBy
ZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0KSwgLyogYXJyYXkgKi9bYTVdKTsKKyAgICAg
IGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOwor
ICAgICAgY2FzZSA3IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgeworICAg
ICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgcGFyYW0pOworICAgICAg
ICAgIH07CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzYobywgYTAsIGExLCBh
MiwgYTMsIGE0LCBhNSkgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09
PSA2KSB7CisgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSk7CisgIH0KKyAgZWxz
ZSB7CisgICAgcmV0dXJuIGN1cnJ5XzYobywgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYXJpdHkp
OworICB9Cit9CisKK2Z1bmN0aW9uIGpzNihsYWJlbCwgY2FjaGVpZCwgYTAsIGExLCBhMiwgYTMs
IGE0LCBhNSkgeworICByZXR1cm4gXzYoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0aG9kKGEw
LCBsYWJlbCwgY2FjaGVpZCksIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOworfQorCitmdW5jdGlv
biBfXzYobykgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSA2KSB7
CisgICAgcmV0dXJuIG87CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwg
YTEsIGEyLCBhMywgYTQsIGE1KSB7CisgICAgICByZXR1cm4gXzYobywgYTAsIGExLCBhMiwgYTMs
IGE0LCBhNSk7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV83KG8sIGEwLCBhMSwg
YTIsIGEzLCBhNCwgYTUsIGE2LCBhcml0eSkgeworICBpZiAoYXJpdHkgPiA3IHx8IGFyaXR5IDwg
MCkgeworICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgYTAs
CisgICAgICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAg
ICAgYTMsCisgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAgYTUsCisgICAgICAg
ICAgICAgICAgYTYKKyAgICAgICAgICAgICAgXSk7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNo
IChhcml0eSkgeworICAgICAgY2FzZSAwIDogCisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBy
ZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBhMSwK
KyAgICAgICAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICAgICAgICBhMywKKyAg
ICAgICAgICAgICAgICAgICAgICBhNCwKKyAgICAgICAgICAgICAgICAgICAgICBhNSwKKyAgICAg
ICAgICAgICAgICAgICAgICBhNgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEpLCAvKiBhcnJheSAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICAgICAgICBhMywKKyAgICAgICAg
ICAgICAgICAgICAgICBhNCwKKyAgICAgICAgICAgICAgICAgICAgICBhNSwKKyAgICAgICAgICAg
ICAgICAgICAgICBhNgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMyA6IAor
ICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyKSwgLyogYXJyYXkgKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAg
ICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYKKyAgICAgICAgICAgICAg
ICAgICAgXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGEx
LCBhMiwgYTMpLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBhNCwKKyAgICAg
ICAgICAgICAgICAgICAgICBhNSwKKyAgICAgICAgICAgICAgICAgICAgICBhNgorICAgICAgICAg
ICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhh
MCwgYTEsIGEyLCBhMywgYTQpLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBh
NSwKKyAgICAgICAgICAgICAgICAgICAgICBhNgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAg
ICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyLCBhMywgYTQs
IGE1KSwgLyogYXJyYXkgKi9bYTZdKTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVy
biBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKKyAgICAgIAorICAgIH0KKyAgfQorfQor
CitmdW5jdGlvbiBfNyhvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgeworICB2YXIgYXJp
dHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSA3KSB7CisgICAgcmV0dXJuIG8oYTAsIGEx
LCBhMiwgYTMsIGE0LCBhNSwgYTYpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBjdXJyeV83
KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhcml0eSk7CisgIH0KK30KKworZnVuY3Rp
b24ganM3KGxhYmVsLCBjYWNoZWlkLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgeworICBy
ZXR1cm4gXzcoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0aG9kKGEwLCBsYWJlbCwgY2FjaGVp
ZCksIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKK30KKworZnVuY3Rpb24gX183KG8pIHsK
KyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNykgeworICAgIHJldHVy
biBvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBhMiwgYTMs
IGE0LCBhNSwgYTYpIHsKKyAgICAgIHJldHVybiBfNyhvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1
LCBhNik7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV84KG8sIGEwLCBhMSwgYTIs
IGEzLCBhNCwgYTUsIGE2LCBhNywgYXJpdHkpIHsKKyAgaWYgKGFyaXR5ID4gNyB8fCBhcml0eSA8
IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgIGEw
LAorICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAg
ICAgIGEzLAorICAgICAgICAgICAgICAgIGE0LAorICAgICAgICAgICAgICAgIGE1LAorICAgICAg
ICAgICAgICAgIGE2LAorICAgICAgICAgICAgICAgIGE3CisgICAgICAgICAgICAgIF0pOworICB9
CisgIGVsc2UgeworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAg
Y2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAg
ICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAg
ICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYsCisgICAgICAgICAgICAg
ICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDIgOiAKKyAg
ICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAg
ICAgICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAg
ICAgYTYsCisgICAgICAgICAgICAgICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7
CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiksIC8q
IGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgICAg
ICAgIGE0LAorICAgICAgICAgICAgICAgICAgICAgIGE1LAorICAgICAgICAgICAgICAgICAgICAg
IGE2LAorICAgICAgICAgICAgICAgICAgICAgIGE3CisgICAgICAgICAgICAgICAgICAgIF0pOwor
ICAgICAgY2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzKSwg
LyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAg
ICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYsCisgICAgICAgICAgICAgICAgICAg
ICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAg
ICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0KSwgLyogYXJyYXkgKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYsCisgICAgICAgICAg
ICAgICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDYgOiAK
KyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSksIC8qIGFycmF5
ICovWworICAgICAgICAgICAgICAgICAgICAgIGE2LAorICAgICAgICAgICAgICAgICAgICAgIGE3
CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA3IDogCisgICAgICAgICAgcmV0
dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSwgLyogYXJyYXkgKi9bYTddKTsK
KyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBfOChvLCBhMCwgYTEsIGEyLCBhMywg
YTQsIGE1LCBhNiwgYTcpIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9
PT0gOCkgeworICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGN1cnJ5XzgobywgYTAsIGExLCBhMiwgYTMsIGE0LCBh
NSwgYTYsIGE3LCBhcml0eSk7CisgIH0KK30KKworZnVuY3Rpb24ganM4KGxhYmVsLCBjYWNoZWlk
LCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIHsKKyAgcmV0dXJuIF84KENhbWxfb28u
Y2FtbF9nZXRfcHVibGljX21ldGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEsIGEyLCBh
MywgYTQsIGE1LCBhNiwgYTcpOworfQorCitmdW5jdGlvbiBfXzgobykgeworICB2YXIgYXJpdHkg
PSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSA4KSB7CisgICAgcmV0dXJuIG87CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwg
YTcpIHsKKyAgICAgIHJldHVybiBfOChvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcp
OworICAgIH07CisgIH0KK30KKworZXhwb3J0cy5hcHAgICAgID0gYXBwOworZXhwb3J0cy5qcyAg
ICAgID0ganM7CitleHBvcnRzLmN1cnJ5XzEgPSBjdXJyeV8xOworZXhwb3J0cy5fMSAgICAgID0g
XzE7CitleHBvcnRzLmpzMSAgICAgPSBqczE7CitleHBvcnRzLl9fMSAgICAgPSBfXzE7CitleHBv
cnRzLmN1cnJ5XzIgPSBjdXJyeV8yOworZXhwb3J0cy5fMiAgICAgID0gXzI7CitleHBvcnRzLmpz
MiAgICAgPSBqczI7CitleHBvcnRzLl9fMiAgICAgPSBfXzI7CitleHBvcnRzLmN1cnJ5XzMgPSBj
dXJyeV8zOworZXhwb3J0cy5fMyAgICAgID0gXzM7CitleHBvcnRzLmpzMyAgICAgPSBqczM7Citl
eHBvcnRzLl9fMyAgICAgPSBfXzM7CitleHBvcnRzLmN1cnJ5XzQgPSBjdXJyeV80OworZXhwb3J0
cy5fNCAgICAgID0gXzQ7CitleHBvcnRzLmpzNCAgICAgPSBqczQ7CitleHBvcnRzLl9fNCAgICAg
PSBfXzQ7CitleHBvcnRzLmN1cnJ5XzUgPSBjdXJyeV81OworZXhwb3J0cy5fNSAgICAgID0gXzU7
CitleHBvcnRzLmpzNSAgICAgPSBqczU7CitleHBvcnRzLl9fNSAgICAgPSBfXzU7CitleHBvcnRz
LmN1cnJ5XzYgPSBjdXJyeV82OworZXhwb3J0cy5fNiAgICAgID0gXzY7CitleHBvcnRzLmpzNiAg
ICAgPSBqczY7CitleHBvcnRzLl9fNiAgICAgPSBfXzY7CitleHBvcnRzLmN1cnJ5XzcgPSBjdXJy
eV83OworZXhwb3J0cy5fNyAgICAgID0gXzc7CitleHBvcnRzLmpzNyAgICAgPSBqczc7CitleHBv
cnRzLl9fNyAgICAgPSBfXzc7CitleHBvcnRzLmN1cnJ5XzggPSBjdXJyeV84OworZXhwb3J0cy5f
OCAgICAgID0gXzg7CitleHBvcnRzLmpzOCAgICAgPSBqczg7CitleHBvcnRzLl9fOCAgICAgPSBf
Xzg7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGN1cnJ5LmpzIC8vLy8v
Ly8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2RlY29k
ZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3Rh
cnQgb2YgZGVjb2RlLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZF
UlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IEYzMiAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjMyIik7Cit2YXIgRjY0ICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9mNjQiKTsKK3ZhciBJMzIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2kz
MiIpOwordmFyIExpYiAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGliIik7Cit2YXIgTGlzdCAg
ICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBCbG9j
ayAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2siKTsKK3ZhciBD
dXJyeSAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3Zh
ciAkJEVycm9yICAgICAgICAgPSByZXF1aXJlKCIuL2Vycm9yIik7Cit2YXIgRW5jb2RlICAgICAg
ICAgID0gcmVxdWlyZSgiLi9lbmNvZGUiKTsKK3ZhciBQcmludGYgICAgICAgICAgPSByZXF1aXJl
KCJicy1wbGF0Zm9ybS9saWIvanMvcHJpbnRmIik7Cit2YXIgU291cmNlICAgICAgICAgID0gcmVx
dWlyZSgiLi9zb3VyY2UiKTsKK3ZhciAkJFN0cmluZyAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0
Zm9ybS9saWIvanMvc3RyaW5nIik7Cit2YXIgQ2FtbF9vYmogICAgICAgID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIgT3BlcmF0b3JzICAgICAgID0gcmVxdWly
ZSgiLi9vcGVyYXRvcnMiKTsKK3ZhciBDYW1sX2ludDY0ICAgICAgPSByZXF1aXJlKCJicy1wbGF0
Zm9ybS9saWIvanMvY2FtbF9pbnQ2NCIpOwordmFyIENhbWxfc3RyaW5nICAgICA9IHJlcXVpcmUo
ImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfZXhjZXB0aW9ucyA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2V4Y2VwdGlvbnMiKTsKKwordmFyIEVP
UyA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIkRlY29kZS5FT1MiKTsKKworZnVuY3Rpb24gc3Ry
ZWFtKG5hbWUsIGJzKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogbmFt
ZSAqL25hbWUsCisgICAgICAgICAgLyogYnl0ZXMgKi9icywKKyAgICAgICAgICAvKiBwb3MgKi9b
MF0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZW9zKHMpIHsKKyAgcmV0dXJuICsoc1svKiBw
b3MgKi8yXVswXSA9PT0gc1svKiBieXRlcyAqLzFdLmxlbmd0aCk7Cit9CisKK2Z1bmN0aW9uIGNo
ZWNrKG4sIHMpIHsKKyAgaWYgKChzWy8qIHBvcyAqLzJdWzBdICsgbiB8IDApID4gc1svKiBieXRl
cyAqLzFdLmxlbmd0aCkgeworICAgIHRocm93IEVPUzsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBza2lwKG4sIHMpIHsKKyAgY2hlY2sobiwgcyk7Cisg
IHNbLyogcG9zICovMl1bMF0gPSBzWy8qIHBvcyAqLzJdWzBdICsgbiB8IDA7CisgIHJldHVybiAv
KiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHJlYWQocykgeworICByZXR1cm4gQ2FtbF9zdHJpbmcu
Z2V0KHNbLyogYnl0ZXMgKi8xXSwgc1svKiBwb3MgKi8yXVswXSk7Cit9CisKK2Z1bmN0aW9uIHBl
ZWsocykgeworICBpZiAoZW9zKHMpKSB7CisgICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAvKiBTb21lICovW3JlYWQocyldOworICB9Cit9CisKK2Z1bmN0
aW9uIGdldChzKSB7CisgIGNoZWNrKDEsIHMpOworICB2YXIgYiA9IHJlYWQocyk7CisgIHNraXAo
MSwgcyk7CisgIHJldHVybiBiOworfQorCit2YXIgQ29kZSA9ICQkRXJyb3IuTWFrZSgvKiBtb2R1
bGUgKi9bXSk7CisKK3ZhciBDb2RlJDEgPSBDb2RlWy8qIEVycm9yICovMF07CisKK2Z1bmN0aW9u
IHN0cmluZ19vZl9ieXRlKGIpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50Zi5zcHJpbnRmKC8q
IEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAvKiBJbnRfeCAqLzYsCisgICAgICAgICAgICAgICAgICAgICAg
LyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFplcm9zICovMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMgorICAgICAgICAgICAg
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICov
MCwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAg
ICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICIlMDJ4IgorICAgICAgICAgICAgICAg
IF0pLCBiKTsKK30KKworZnVuY3Rpb24gcG9zaXRpb24ocywgcG9zKSB7CisgIHJldHVybiAvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgLyogZmlsZSAqL3NbLyogbmFtZSAqLzBdLAorICAgICAgICAg
IC8qIGxpbmUgKi8tMSwKKyAgICAgICAgICAvKiBjb2x1bW4gKi9wb3MKKyAgICAgICAgXTsKK30K
KworZnVuY3Rpb24gcmVnaW9uKHMsIGxlZnQsIHJpZ2h0KSB7CisgIHJldHVybiAvKiByZWNvcmQg
Ki9bCisgICAgICAgICAgLyogbGVmdCAqL3Bvc2l0aW9uKHMsIGxlZnQpLAorICAgICAgICAgIC8q
IHJpZ2h0ICovcG9zaXRpb24ocywgcmlnaHQpCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGVy
cm9yKHMsIHBvcywgbXNnKSB7CisgIHRocm93IFsKKyAgICAgICAgQ29kZSQxLAorICAgICAgICBy
ZWdpb24ocywgcG9zLCBwb3MpLAorICAgICAgICBtc2cKKyAgICAgIF07Cit9CisKK2Z1bmN0aW9u
ICQkcmVxdWlyZShiLCBzLCBwb3MsIG1zZykgeworICBpZiAoYikgeworICAgIHJldHVybiAwOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiBlcnJvcihzLCBwb3MsIG1zZyk7CisgIH0KK30KKwor
ZnVuY3Rpb24gZ3VhcmQoZiwgcykgeworICB0cnkgeworICAgIHJldHVybiBDdXJyeS5fMShmLCBz
KTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBFT1MpIHsKKyAgICAgIHJl
dHVybiBlcnJvcihzLCBzWy8qIGJ5dGVzICovMV0ubGVuZ3RoLCAidW5leHBlY3RlZCBlbmQgb2Yg
YmluYXJ5IG9yIGZ1bmN0aW9uIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhu
OworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBnZXQkMShwYXJhbSkgeworICByZXR1cm4gZ3Vh
cmQoZ2V0LCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGV4cGVjdChiLCBzLCBtc2cpIHsKKyAgcmV0
dXJuICQkcmVxdWlyZSgrKGd1YXJkKGdldCQxLCBzKSA9PT0gYiksIHMsIHNbLyogcG9zICovMl1b
MF0gLSAxIHwgMCwgbXNnKTsKK30KKworZnVuY3Rpb24gaWxsZWdhbChzLCBwb3MsIGIpIHsKKyAg
cmV0dXJuIGVycm9yKHMsIHBvcywgImlsbGVnYWwgb3Bjb2RlICIgKyBzdHJpbmdfb2ZfYnl0ZShi
KSk7Cit9CisKK2Z1bmN0aW9uIGF0KGYsIHMpIHsKKyAgdmFyIGxlZnQgPSBzWy8qIHBvcyAqLzJd
WzBdOworICB2YXIgeCA9IEN1cnJ5Ll8xKGYsIHMpOworICB2YXIgcmlnaHQgPSBzWy8qIHBvcyAq
LzJdWzBdOworICByZXR1cm4gU291cmNlLiRhdCRhdCh4LCByZWdpb24ocywgbGVmdCwgcmlnaHQp
KTsKK30KKworZnVuY3Rpb24gdTE2KHMpIHsKKyAgdmFyIGxvID0gZ3VhcmQoZ2V0LCBzKTsKKyAg
dmFyIGhpID0gZ3VhcmQoZ2V0LCBzKTsKKyAgcmV0dXJuIChoaSA8PCA4KSArIGxvIHwgMDsKK30K
KworZnVuY3Rpb24gdTMyKHMpIHsKKyAgdmFyIGxvID0gdTE2KHMpOworICB2YXIgaGkgPSB1MTYo
cyk7CisgIHJldHVybiBsbyArIChoaSA8PCAxNikgfCAwOworfQorCitmdW5jdGlvbiB1NjQocykg
eworICB2YXIgbG8gPSBDYW1sX2ludDY0Lm9mX2ludDMyKHUzMihzKSk7CisgIHZhciBoaSA9IENh
bWxfaW50NjQub2ZfaW50MzIodTMyKHMpKTsKKyAgcmV0dXJuIENhbWxfaW50NjQuYWRkKGxvLCBD
YW1sX2ludDY0LmxzbF8oaGksIDMyKSk7Cit9CisKK2Z1bmN0aW9uIHZ1TihuLCBzKSB7CisgICQk
cmVxdWlyZSgrKG4gPiAwKSwgcywgc1svKiBwb3MgKi8yXVswXSwgImludGVnZXIgcmVwcmVzZW50
YXRpb24gdG9vIGxvbmciKTsKKyAgdmFyIGIgPSBndWFyZChnZXQsIHMpOworICAkJHJlcXVpcmUo
KyhuID49IDcgfHwgKGIgJiAxMjcpIDwgKDEgPDwgbikpLCBzLCBzWy8qIHBvcyAqLzJdWzBdIC0g
MSB8IDAsICJpbnRlZ2VyIHRvbyBsYXJnZSIpOworICB2YXIgeCA9IENhbWxfaW50NjQub2ZfaW50
MzIoYiAmIDEyNyk7CisgIGlmIChiICYgMTI4KSB7CisgICAgcmV0dXJuIENhbWxfaW50NjQub3Jf
KHgsIENhbWxfaW50NjQubHNsXyh2dU4obiAtIDcgfCAwLCBzKSwgNykpOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiB4OworICB9Cit9CisKK2Z1bmN0aW9uIHZzTihuLCBzKSB7CisgICQkcmVx
dWlyZSgrKG4gPiAwKSwgcywgc1svKiBwb3MgKi8yXVswXSwgImludGVnZXIgcmVwcmVzZW50YXRp
b24gdG9vIGxvbmciKTsKKyAgdmFyIGIgPSBndWFyZChnZXQsIHMpOworICB2YXIgbWFzayA9ICgt
MSA8PCBuKSAmIDEyNzsKKyAgJCRyZXF1aXJlKCsobiA+PSA3IHx8IChiICYgbWFzaykgPT09IDAg
fHwgKGIgJiBtYXNrKSA9PT0gbWFzayksIHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwgImlu
dGVnZXIgdG9vIGxhcmdlIik7CisgIHZhciB4ID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMihiICYgMTI3
KTsKKyAgaWYgKGIgJiAxMjgpIHsKKyAgICByZXR1cm4gQ2FtbF9pbnQ2NC5vcl8oeCwgQ2FtbF9p
bnQ2NC5sc2xfKHZzTihuIC0gNyB8IDAsIHMpLCA3KSk7CisgIH0KKyAgZWxzZSBpZiAoYiAmIDY0
KSB7CisgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgLyogaGkgKi94WzBdIHwg
LyogaGkgKi8tMSwKKyAgICAgICAgICAgIC8qIGxvICovKCh4WzFdIHwgLyogbG8gKi80Mjk0OTY3
MTY4KSA+Pj4gMCkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiB4Owor
ICB9Cit9CisKK2Z1bmN0aW9uIHZ1MzIocykgeworICByZXR1cm4gdnVOKDMyLCBzKVsxXSB8IDA7
Cit9CisKK2Z1bmN0aW9uIHZzMzIocykgeworICByZXR1cm4gdnNOKDMyLCBzKVsxXSB8IDA7Cit9
CisKK2Z1bmN0aW9uIHZzNjQocykgeworICByZXR1cm4gdnNOKDY0LCBzKTsKK30KKworZnVuY3Rp
b24gZjMyKHMpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKEYzMi5vZl9iaXRzLCB1MzIocykpOworfQor
CitmdW5jdGlvbiBmNjQocykgeworICByZXR1cm4gQ3VycnkuXzEoRjY0Lm9mX2JpdHMsIHU2NChz
KSk7Cit9CisKK2Z1bmN0aW9uIGxlbjMyKHMpIHsKKyAgdmFyIHBvcyA9IHNbLyogcG9zICovMl1b
MF07CisgIHZhciBuID0gdnVOKDMyLCBzKVsxXSB8IDA7CisgIGlmIChuIDw9IHNbLyogYnl0ZXMg
Ki8xXS5sZW5ndGgpIHsKKyAgICByZXR1cm4gbjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
ZXJyb3IocywgcG9zLCAibGVuZ3RoIG91dCBvZiBib3VuZHMiKTsKKyAgfQorfQorCitmdW5jdGlv
biBzdHJpbmcocykgeworICB2YXIgbiA9IGxlbjMyKHMpOworICByZXR1cm4gZ3VhcmQoZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHZhciBuJDEgPSBuOworICAgICAgICAgICAgICB2
YXIgcyA9IHBhcmFtOworICAgICAgICAgICAgICB2YXIgaSA9IHNbLyogcG9zICovMl1bMF07Cisg
ICAgICAgICAgICAgIHNraXAobiQxLCBzKTsKKyAgICAgICAgICAgICAgcmV0dXJuICQkU3RyaW5n
LnN1YihzWy8qIGJ5dGVzICovMV0sIGksIG4kMSk7CisgICAgICAgICAgICB9LCBzKTsKK30KKwor
ZnVuY3Rpb24gbGlzdChmLCBuLCBzKSB7CisgIGlmIChuKSB7CisgICAgdmFyIHggPSBDdXJyeS5f
MShmLCBzKTsKKyAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICB4LAorICAgICAgICAg
ICAgbGlzdChmLCBuIC0gMSB8IDAsIHMpCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIG9wdChmLCBiLCBzKSB7Cisg
IGlmIChiKSB7CisgICAgcmV0dXJuIC8qIFNvbWUgKi9bQ3VycnkuXzEoZiwgcyldOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAvKiBOb25lICovMDsKKyAgfQorfQorCitmdW5jdGlvbiB2ZWMo
ZiwgcykgeworICB2YXIgbiA9IGxlbjMyKHMpOworICByZXR1cm4gbGlzdChmLCBuLCBzKTsKK30K
KworZnVuY3Rpb24gc2l6ZWQoZiwgcykgeworICB2YXIgc2l6ZSA9IGxlbjMyKHMpOworICB2YXIg
c3RhcnQgPSBzWy8qIHBvcyAqLzJdWzBdOworICB2YXIgeCA9IEN1cnJ5Ll8yKGYsIHNpemUsIHMp
OworICAkJHJlcXVpcmUoKyhzWy8qIHBvcyAqLzJdWzBdID09PSAoc3RhcnQgKyBzaXplIHwgMCkp
LCBzLCBzdGFydCwgInNlY3Rpb24gc2l6ZSBtaXNtYXRjaCIpOworICByZXR1cm4geDsKK30KKwor
ZnVuY3Rpb24gdmFsdWVfdHlwZShzKSB7CisgIHZhciBtYXRjaCA9IHZzTig3LCBzKVsxXSB8IDA7
CisgIHZhciBzd2l0Y2hlciA9IG1hdGNoICsgNCB8IDA7CisgIGlmIChzd2l0Y2hlciA+IDMgfHwg
c3dpdGNoZXIgPCAwKSB7CisgICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0gLSAx
IHwgMCwgImludmFsaWQgdmFsdWUgdHlwZSIpOworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAo
c3dpdGNoZXIpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiAvKiBGNjRUeXBl
ICovMzsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAvKiBGMzJUeXBlICovMjsK
KyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAvKiBJNjRUeXBlICovMTsKKyAgICAg
IGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiAvKiBJMzJUeXBlICovMDsKKyAgICAgIAorICAg
IH0KKyAgfQorfQorCitmdW5jdGlvbiBlbGVtX3R5cGUocykgeworICB2YXIgbWF0Y2ggPSB2c04o
NywgcylbMV0gfCAwOworICBpZiAobWF0Y2ggIT09IC0xNikgeworICAgIHJldHVybiBlcnJvcihz
LCBzWy8qIHBvcyAqLzJdWzBdIC0gMSB8IDAsICJpbnZhbGlkIGVsZW1lbnQgdHlwZSIpOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiAvKiBGdW5jUmVmVHlwZSAqLzA7CisgIH0KK30KKworZnVu
Y3Rpb24gc3RhY2tfdHlwZShzKSB7CisgIHZhciBtYXRjaCA9IHBlZWsocyk7CisgIGlmIChtYXRj
aCkgeworICAgIGlmIChtYXRjaFswXSAhPT0gNjQpIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgdmFsdWVfdHlwZShzKSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGd1YXJkKGZ1bmN0aW9uIChw
YXJhbSkgeworICAgICAgICAgICAgcmV0dXJuIHNraXAoMSwgcGFyYW0pOworICAgICAgICAgIH0s
IHMpOworICAgICAgcmV0dXJuIC8qIFtdICovMDsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgdmFsdWVfdHlwZShzKSwKKyAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gZnVuY190eXBlKHMp
IHsKKyAgdmFyIG1hdGNoID0gdnNOKDcsIHMpWzFdIHwgMDsKKyAgaWYgKG1hdGNoICE9PSAtMzIp
IHsKKyAgICByZXR1cm4gZXJyb3Iocywgc1svKiBwb3MgKi8yXVswXSAtIDEgfCAwLCAiaW52YWxp
ZCBmdW5jdGlvbiB0eXBlIik7CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGlucyA9IHZlYyh2YWx1
ZV90eXBlLCBzKTsKKyAgICB2YXIgb3V0ID0gdmVjKHZhbHVlX3R5cGUsIHMpOworICAgIHJldHVy
biAvKiBGdW5jVHlwZSAqL1sKKyAgICAgICAgICAgIGlucywKKyAgICAgICAgICAgIG91dAorICAg
ICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbGltaXRzKHZ1LCBzKSB7CisgIHZhciBoYXNf
bWF4ID0gKygodnVOKDEsIHMpWzFdIHwgMCkgPT09IDEpOworICB2YXIgbWluID0gQ3VycnkuXzEo
dnUsIHMpOworICB2YXIgbWF4ID0gb3B0KHZ1LCBoYXNfbWF4LCBzKTsKKyAgcmV0dXJuIC8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAvKiBtaW4gKi9taW4sCisgICAgICAgICAgLyogbWF4ICovbWF4
CisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRhYmxlX3R5cGUocykgeworICB2YXIgdCA9IGVs
ZW1fdHlwZShzKTsKKyAgdmFyIGxpbSA9IGxpbWl0cyh2dTMyLCBzKTsKKyAgcmV0dXJuIC8qIFRh
YmxlVHlwZSAqL1sKKyAgICAgICAgICBsaW0sCisgICAgICAgICAgdAorICAgICAgICBdOworfQor
CitmdW5jdGlvbiBtZW1vcnlfdHlwZShzKSB7CisgIHZhciBsaW0gPSBsaW1pdHModnUzMiwgcyk7
CisgIHJldHVybiAvKiBNZW1vcnlUeXBlICovW2xpbV07Cit9CisKK2Z1bmN0aW9uIG11dGFiaWxp
dHkocykgeworICB2YXIgbWF0Y2ggPSBndWFyZChnZXQsIHMpOworICBpZiAobWF0Y2ggIT09IDAp
IHsKKyAgICBpZiAobWF0Y2ggIT09IDEpIHsKKyAgICAgIHJldHVybiBlcnJvcihzLCBzWy8qIHBv
cyAqLzJdWzBdIC0gMSB8IDAsICJpbnZhbGlkIG11dGFiaWxpdHkiKTsKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gLyogTXV0YWJsZSAqLzE7CisgICAgfQorICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiAvKiBJbW11dGFibGUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGdsb2JhbF90
eXBlKHMpIHsKKyAgdmFyIHQgPSB2YWx1ZV90eXBlKHMpOworICB2YXIgbXV0ID0gbXV0YWJpbGl0
eShzKTsKKyAgcmV0dXJuIC8qIEdsb2JhbFR5cGUgKi9bCisgICAgICAgICAgdCwKKyAgICAgICAg
ICBtdXQKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gJCR2YXIocykgeworICByZXR1cm4gdnVO
KDMyLCBzKVsxXSB8IDA7Cit9CisKK2Z1bmN0aW9uIG1lbW9wKHMpIHsKKyAgdmFyIGFsaWduID0g
dnVOKDMyLCBzKVsxXSB8IDA7CisgICQkcmVxdWlyZShDdXJyeS5fMihJMzIubGVfdSwgYWxpZ24s
IDMyKSwgcywgc1svKiBwb3MgKi8yXVswXSAtIDEgfCAwLCAiaW52YWxpZCBtZW1vcCBmbGFncyIp
OworICB2YXIgb2Zmc2V0ID0gdnVOKDMyLCBzKVsxXSB8IDA7CisgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICBhbGlnbiwKKyAgICAgICAgICBvZmZzZXQKKyAgICAgICAgXTsKK30KKwor
ZnVuY3Rpb24gaW5zdHIocykgeworICB2YXIgcG9zID0gc1svKiBwb3MgKi8yXVswXTsKKyAgdmFy
IGIgPSBndWFyZChnZXQsIHMpOworICBpZiAoYiA+IDE5MSB8fCBiIDwgMCkgeworICAgIHJldHVy
biBpbGxlZ2FsKHMsIHBvcywgYik7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChiKSB7Cisg
ICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLnVucmVhY2hhYmxlOwor
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5ub3A7CisgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICB2YXIgdHMgPSBzdGFja190eXBlKHMpOworICAgICAgICAgIHZh
ciBlcyRwcmltZSA9IExpc3QucmV2KGluc3RyX2Jsb2NrJHByaW1lKHMsIC8qIFtdICovMCkpOwor
ICAgICAgICAgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0ZWQiKTsKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmJsb2NrKHRzLCBlcyRwcmltZSk7CisgICAgICBjYXNlIDMgOiAK
KyAgICAgICAgICB2YXIgdHMkMSA9IHN0YWNrX3R5cGUocyk7CisgICAgICAgICAgdmFyIGVzJHBy
aW1lJDEgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsKKyAgICAg
ICAgICBleHBlY3QoMTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7CisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5sb29wKHRzJDEsIGVzJHByaW1lJDEpOworICAgICAgY2FzZSA0IDogCisg
ICAgICAgICAgdmFyIHRzJDIgPSBzdGFja190eXBlKHMpOworICAgICAgICAgIHZhciBlczEgPSBM
aXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsKKyAgICAgICAgICBpZiAo
Q2FtbF9vYmouY2FtbF9lcXVhbChwZWVrKHMpLCAvKiBTb21lICovWzVdKSkgeworICAgICAgICAg
ICAgZXhwZWN0KDUsIHMsICJFTFNFIG9yIEVORCBvcGNvZGUgZXhwZWN0ZWQiKTsKKyAgICAgICAg
ICAgIHZhciBlczIgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsK
KyAgICAgICAgICAgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0ZWQiKTsKKyAgICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaWZfKHRzJDIsIGVzMSwgZXMyKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBleHBlY3QoMTEsIHMsICJFTkQgb3Bjb2Rl
IGV4cGVjdGVkIik7CisgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmlmXyh0cyQyLCBlczEs
IC8qIFtdICovMCk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1
IDogCisgICAgICAgICAgcmV0dXJuIGVycm9yKHMsIHBvcywgIm1pc3BsYWNlZCBFTFNFIG9wY29k
ZSIpOworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiBlcnJvcihzLCBwb3MsICJt
aXNwbGFjZWQgRU5EIG9wY29kZSIpOworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuYnIoYXQoJCR2YXIsIHMpKTsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmJyX2lmKGF0KCQkdmFyLCBzKSk7CisgICAgICBjYXNlIDE0IDog
CisgICAgICAgICAgdmFyIHhzID0gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBhdCgkJHZhciwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBzKTsKKyAgICAg
ICAgICB2YXIgeCA9IGF0KCQkdmFyLCBzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmJy
X3RhYmxlKHhzLCB4KTsKKyAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLiQkcmV0dXJuOworICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuY2FsbChhdCgkJHZhciwgcykpOworICAgICAgY2FzZSAxNyA6IAorICAgICAgICAgIHZhciB4
JDEgPSBhdCgkJHZhciwgcyk7CisgICAgICAgICAgZXhwZWN0KDAsIHMsICJ6ZXJvIGZsYWcgZXhw
ZWN0ZWQiKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmNhbGxfaW5kaXJlY3QoeCQxKTsK
KyAgICAgIGNhc2UgMjYgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmRyb3A7CisgICAg
ICBjYXNlIDI3IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5zZWxlY3Q7CisgICAgICBj
YXNlIDMyIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfbG9jYWwoYXQoJCR2YXIs
IHMpKTsKKyAgICAgIGNhc2UgMzMgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLnNldF9s
b2NhbChhdCgkJHZhciwgcykpOworICAgICAgY2FzZSAzNCA6IAorICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMudGVlX2xvY2FsKGF0KCQkdmFyLCBzKSk7CisgICAgICBjYXNlIDM1IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfZ2xvYmFsKGF0KCQkdmFyLCBzKSk7CisgICAgICBj
YXNlIDM2IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5zZXRfZ2xvYmFsKGF0KCQkdmFy
LCBzKSk7CisgICAgICBjYXNlIDYgOiAKKyAgICAgIGNhc2UgNyA6IAorICAgICAgY2FzZSA4IDog
CisgICAgICBjYXNlIDkgOiAKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgIGNhc2UgMTggOiAKKyAg
ICAgIGNhc2UgMTkgOiAKKyAgICAgIGNhc2UgMjAgOiAKKyAgICAgIGNhc2UgMjEgOiAKKyAgICAg
IGNhc2UgMjIgOiAKKyAgICAgIGNhc2UgMjMgOiAKKyAgICAgIGNhc2UgMjQgOiAKKyAgICAgIGNh
c2UgMjUgOiAKKyAgICAgIGNhc2UgMjggOiAKKyAgICAgIGNhc2UgMjkgOiAKKyAgICAgIGNhc2Ug
MzAgOiAKKyAgICAgIGNhc2UgMzEgOiAKKyAgICAgIGNhc2UgMzcgOiAKKyAgICAgIGNhc2UgMzgg
OiAKKyAgICAgIGNhc2UgMzkgOiAKKyAgICAgICAgICByZXR1cm4gaWxsZWdhbChzLCBwb3MsIGIp
OworICAgICAgY2FzZSA0MCA6IAorICAgICAgICAgIHZhciBtYXRjaCA9IG1lbW9wKHMpOworICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2xvYWQobWF0Y2hbMF0sIG1hdGNoWzFdKTsKKyAg
ICAgIGNhc2UgNDEgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IG1lbW9wKHMpOworICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQobWF0Y2gkMVswXSwgbWF0Y2gkMVsxXSk7Cisg
ICAgICBjYXNlIDQyIDogCisgICAgICAgICAgdmFyIG1hdGNoJDIgPSBtZW1vcChzKTsKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9sb2FkKG1hdGNoJDJbMF0sIG1hdGNoJDJbMV0pOwor
ICAgICAgY2FzZSA0MyA6IAorICAgICAgICAgIHZhciBtYXRjaCQzID0gbWVtb3Aocyk7CisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbG9hZChtYXRjaCQzWzBdLCBtYXRjaCQzWzFdKTsK
KyAgICAgIGNhc2UgNDQgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkNCA9IG1lbW9wKHMpOworICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2xvYWQ4X3MobWF0Y2gkNFswXSwgbWF0Y2gkNFsx
XSk7CisgICAgICBjYXNlIDQ1IDogCisgICAgICAgICAgdmFyIG1hdGNoJDUgPSBtZW1vcChzKTsK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2FkOF91KG1hdGNoJDVbMF0sIG1hdGNo
JDVbMV0pOworICAgICAgY2FzZSA0NiA6IAorICAgICAgICAgIHZhciBtYXRjaCQ2ID0gbWVtb3Ao
cyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbG9hZDE2X3MobWF0Y2gkNlswXSwg
bWF0Y2gkNlsxXSk7CisgICAgICBjYXNlIDQ3IDogCisgICAgICAgICAgdmFyIG1hdGNoJDcgPSBt
ZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2FkMTZfdShtYXRjaCQ3
WzBdLCBtYXRjaCQ3WzFdKTsKKyAgICAgIGNhc2UgNDggOiAKKyAgICAgICAgICB2YXIgbWF0Y2gk
OCA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQ4X3MobWF0
Y2gkOFswXSwgbWF0Y2gkOFsxXSk7CisgICAgICBjYXNlIDQ5IDogCisgICAgICAgICAgdmFyIG1h
dGNoJDkgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkOF91
KG1hdGNoJDlbMF0sIG1hdGNoJDlbMV0pOworICAgICAgY2FzZSA1MCA6IAorICAgICAgICAgIHZh
ciBtYXRjaCQxMCA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xv
YWQxNl9zKG1hdGNoJDEwWzBdLCBtYXRjaCQxMFsxXSk7CisgICAgICBjYXNlIDUxIDogCisgICAg
ICAgICAgdmFyIG1hdGNoJDExID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5pNjRfbG9hZDE2X3UobWF0Y2gkMTFbMF0sIG1hdGNoJDExWzFdKTsKKyAgICAgIGNhc2UgNTIg
OiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMTIgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmk2NF9sb2FkMzJfcyhtYXRjaCQxMlswXSwgbWF0Y2gkMTJbMV0pOworICAgICAg
Y2FzZSA1MyA6IAorICAgICAgICAgIHZhciBtYXRjaCQxMyA9IG1lbW9wKHMpOworICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQzMl91KG1hdGNoJDEzWzBdLCBtYXRjaCQxM1sxXSk7
CisgICAgICBjYXNlIDU0IDogCisgICAgICAgICAgdmFyIG1hdGNoJDE0ID0gbWVtb3Aocyk7Cisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmUobWF0Y2gkMTRbMF0sIG1hdGNoJDE0
WzFdKTsKKyAgICAgIGNhc2UgNTUgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMTUgPSBtZW1vcChz
KTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdG9yZShtYXRjaCQxNVswXSwgbWF0
Y2gkMTVbMV0pOworICAgICAgY2FzZSA1NiA6IAorICAgICAgICAgIHZhciBtYXRjaCQxNiA9IG1l
bW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3N0b3JlKG1hdGNoJDE2WzBd
LCBtYXRjaCQxNlsxXSk7CisgICAgICBjYXNlIDU3IDogCisgICAgICAgICAgdmFyIG1hdGNoJDE3
ID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfc3RvcmUobWF0Y2gk
MTdbMF0sIG1hdGNoJDE3WzFdKTsKKyAgICAgIGNhc2UgNTggOiAKKyAgICAgICAgICB2YXIgbWF0
Y2gkMTggPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zdG9yZTgo
bWF0Y2gkMThbMF0sIG1hdGNoJDE4WzFdKTsKKyAgICAgIGNhc2UgNTkgOiAKKyAgICAgICAgICB2
YXIgbWF0Y2gkMTkgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9z
dG9yZTE2KG1hdGNoJDE5WzBdLCBtYXRjaCQxOVsxXSk7CisgICAgICBjYXNlIDYwIDogCisgICAg
ICAgICAgdmFyIG1hdGNoJDIwID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5pNjRfc3RvcmU4KG1hdGNoJDIwWzBdLCBtYXRjaCQyMFsxXSk7CisgICAgICBjYXNlIDYxIDog
CisgICAgICAgICAgdmFyIG1hdGNoJDIxID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pNjRfc3RvcmUxNihtYXRjaCQyMVswXSwgbWF0Y2gkMjFbMV0pOworICAgICAgY2Fz
ZSA2MiA6IAorICAgICAgICAgIHZhciBtYXRjaCQyMiA9IG1lbW9wKHMpOworICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMzIobWF0Y2gkMjJbMF0sIG1hdGNoJDIyWzFdKTsKKyAg
ICAgIGNhc2UgNjMgOiAKKyAgICAgICAgICBleHBlY3QoMCwgcywgInplcm8gZmxhZyBleHBlY3Rl
ZCIpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuY3VycmVudF9tZW1vcnk7CisgICAgICBj
YXNlIDY0IDogCisgICAgICAgICAgZXhwZWN0KDAsIHMsICJ6ZXJvIGZsYWcgZXhwZWN0ZWQiKTsK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmdyb3dfbWVtb3J5OworICAgICAgY2FzZSA2NSA6
IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2NvbnN0KGF0KHZzMzIsIHMpKTsKKyAg
ICAgIGNhc2UgNjYgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9jb25zdChhdCh2
czY0LCBzKSk7CisgICAgICBjYXNlIDY3IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5m
MzJfY29uc3QoYXQoZjMyLCBzKSk7CisgICAgICBjYXNlIDY4IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mNjRfY29uc3QoYXQoZjY0LCBzKSk7CisgICAgICBjYXNlIDY5IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfZXF6OworICAgICAgY2FzZSA3MCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2VxOworICAgICAgY2FzZSA3MSA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaTMyX25lOworICAgICAgY2FzZSA3MiA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTMyX2x0X3M7CisgICAgICBjYXNlIDczIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfbHRfdTsKKyAgICAgIGNhc2UgNzQgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmkzMl9ndF9zOworICAgICAgY2FzZSA3NSA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTMyX2d0X3U7CisgICAgICBjYXNlIDc2IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pMzJfbGVfczsKKyAgICAgIGNhc2UgNzcgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmkzMl9sZV91OworICAgICAgY2FzZSA3OCA6IAorICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTMyX2dlX3M7CisgICAgICBjYXNlIDc5IDogCisgICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pMzJfZ2VfdTsKKyAgICAgIGNhc2UgODAgOiAKKyAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmk2NF9lcXo7CisgICAgICBjYXNlIDgxIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pNjRfZXE7CisgICAgICBjYXNlIDgyIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5pNjRfbmU7CisgICAgICBjYXNlIDgzIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5p
NjRfbHRfczsKKyAgICAgIGNhc2UgODQgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2
NF9sdF91OworICAgICAgY2FzZSA4NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0
X2d0X3M7CisgICAgICBjYXNlIDg2IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRf
Z3RfdTsKKyAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9s
ZV9zOworICAgICAgY2FzZSA4OCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xl
X3U7CisgICAgICBjYXNlIDg5IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfZ2Vf
czsKKyAgICAgIGNhc2UgOTAgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9nZV91
OworICAgICAgY2FzZSA5MSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2VxOwor
ICAgICAgY2FzZSA5MiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX25lOworICAg
ICAgY2FzZSA5MyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2x0OworICAgICAg
Y2FzZSA5NCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2d0OworICAgICAgY2Fz
ZSA5NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2xlOworICAgICAgY2FzZSA5
NiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2dlOworICAgICAgY2FzZSA5NyA6
IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2VxOworICAgICAgY2FzZSA5OCA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X25lOworICAgICAgY2FzZSA5OSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2x0OworICAgICAgY2FzZSAxMDAgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9ndDsKKyAgICAgIGNhc2UgMTAxIDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbGU7CisgICAgICBjYXNlIDEwMiA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuZjY0X2dlOworICAgICAgY2FzZSAxMDMgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmkzMl9jbHo7CisgICAgICBjYXNlIDEwNCA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTMyX2N0ejsKKyAgICAgIGNhc2UgMTA1IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfcG9wY250OworICAgICAgY2FzZSAxMDYgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmkzMl9hZGQ7CisgICAgICBjYXNlIDEwNyA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTMyX3N1YjsKKyAgICAgIGNhc2UgMTA4IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfbXVsOworICAgICAgY2FzZSAxMDkgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmkzMl9kaXZfczsKKyAgICAgIGNhc2UgMTEwIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfZGl2X3U7CisgICAgICBjYXNlIDExMSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTMyX3JlbV9zOworICAgICAgY2FzZSAxMTIgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmkzMl9yZW1fdTsKKyAgICAgIGNhc2UgMTEzIDogCisgICAgICAgICAg
cmV0dXJuIE9wZXJhdG9ycy5pMzJfYW5kOworICAgICAgY2FzZSAxMTQgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmkzMl9vcjsKKyAgICAgIGNhc2UgMTE1IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfeG9yOworICAgICAgY2FzZSAxMTYgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmkzMl9zaGw7CisgICAgICBjYXNlIDExNyA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTMyX3Nocl9zOworICAgICAgY2FzZSAxMTggOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmkzMl9zaHJfdTsKKyAgICAgIGNhc2UgMTE5IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfcm90bDsKKyAgICAgIGNhc2UgMTIwIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfcm90cjsKKyAgICAgIGNhc2UgMTIxIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfY2x6OworICAgICAgY2FzZSAxMjIgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmk2NF9jdHo7CisgICAgICBjYXNlIDEyMyA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X3BvcGNudDsKKyAgICAgIGNhc2UgMTI0IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfYWRkOworICAgICAgY2FzZSAxMjUgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmk2NF9zdWI7CisgICAgICBjYXNlIDEyNiA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X211bDsKKyAgICAgIGNhc2UgMTI3IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pNjRfZGl2X3M7CisgICAgICBjYXNlIDEyOCA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X2Rpdl91OworICAgICAgY2FzZSAxMjkgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmk2NF9yZW1fczsKKyAgICAgIGNhc2UgMTMwIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfcmVtX3U7CisgICAgICBjYXNlIDEzMSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTY0X2FuZDsKKyAgICAgIGNhc2UgMTMyIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfb3I7CisgICAgICBjYXNlIDEzMyA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X3hvcjsKKyAgICAgIGNhc2UgMTM0IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pNjRfc2hsOworICAgICAgY2FzZSAxMzUgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmk2NF9zaHJfczsKKyAgICAgIGNhc2UgMTM2IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pNjRfc2hyX3U7CisgICAgICBjYXNlIDEzNyA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X3JvdGw7CisgICAgICBjYXNlIDEzOCA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X3JvdHI7CisgICAgICBjYXNlIDEzOSA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjMyX2FiczsKKyAgICAgIGNhc2UgMTQwIDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mMzJfbmVnOworICAgICAgY2FzZSAxNDEgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmYzMl9jZWlsOworICAgICAgY2FzZSAxNDIgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmYzMl9mbG9vcjsKKyAgICAgIGNhc2UgMTQzIDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mMzJfdHJ1bmM7CisgICAgICBjYXNlIDE0NCA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjMyX25lYXJlc3Q7CisgICAgICBjYXNlIDE0NSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuZjMyX3NxcnQ7CisgICAgICBjYXNlIDE0NiA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuZjMyX2FkZDsKKyAgICAgIGNhc2UgMTQ3IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5mMzJfc3ViOworICAgICAgY2FzZSAxNDggOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmYzMl9tdWw7CisgICAgICBjYXNlIDE0OSA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjMyX2RpdjsKKyAgICAgIGNhc2UgMTUwIDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mMzJfbWluOworICAgICAgY2FzZSAxNTEgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmYzMl9tYXg7CisgICAgICBjYXNlIDE1MiA6IAorICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuZjMyX2NvcHlzaWduOworICAgICAgY2FzZSAxNTMgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmY2NF9hYnM7CisgICAgICBjYXNlIDE1NCA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjY0X25lZzsKKyAgICAgIGNhc2UgMTU1IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mNjRfY2VpbDsKKyAgICAgIGNhc2UgMTU2IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mNjRfZmxvb3I7CisgICAgICBjYXNlIDE1NyA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjY0X3RydW5jOworICAgICAgY2FzZSAxNTggOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmY2NF9uZWFyZXN0OworICAgICAgY2FzZSAxNTkgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmY2NF9zcXJ0OworICAgICAgY2FzZSAxNjAgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmY2NF9hZGQ7CisgICAgICBjYXNlIDE2MSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuZjY0X3N1YjsKKyAgICAgIGNhc2UgMTYyIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5mNjRfbXVsOworICAgICAgY2FzZSAxNjMgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmY2NF9kaXY7CisgICAgICBjYXNlIDE2NCA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjY0X21pbjsKKyAgICAgIGNhc2UgMTY1IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mNjRfbWF4OworICAgICAgY2FzZSAxNjYgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmY2NF9jb3B5c2lnbjsKKyAgICAgIGNhc2UgMTY3IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfd3JhcF9pNjQ7CisgICAgICBjYXNlIDE2OCA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaTMyX3RydW5jX3NfZjMyOworICAgICAgY2FzZSAxNjkgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl90cnVuY191X2YzMjsKKyAgICAgIGNhc2UgMTcw
IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfdHJ1bmNfc19mNjQ7CisgICAgICBj
YXNlIDE3MSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3RydW5jX3VfZjY0Owor
ICAgICAgY2FzZSAxNzIgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9leHRlbmRf
c19pMzI7CisgICAgICBjYXNlIDE3MyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0
X2V4dGVuZF91X2kzMjsKKyAgICAgIGNhc2UgMTc0IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pNjRfdHJ1bmNfc19mMzI7CisgICAgICBjYXNlIDE3NSA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X3RydW5jX3VfZjMyOworICAgICAgY2FzZSAxNzYgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmk2NF90cnVuY19zX2Y2NDsKKyAgICAgIGNhc2UgMTc3IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfdHJ1bmNfdV9mNjQ7CisgICAgICBjYXNlIDE3
OCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfc19pMzI7CisgICAg
ICBjYXNlIDE3OSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfdV9p
MzI7CisgICAgICBjYXNlIDE4MCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2Nv
bnZlcnRfc19pNjQ7CisgICAgICBjYXNlIDE4MSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuZjMyX2NvbnZlcnRfdV9pNjQ7CisgICAgICBjYXNlIDE4MiA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjMyX2RlbW90ZV9mNjQ7CisgICAgICBjYXNlIDE4MyA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pMzI7CisgICAgICBjYXNlIDE4NCA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfdV9pMzI7CisgICAgICBjYXNl
IDE4NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pNjQ7Cisg
ICAgICBjYXNlIDE4NiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRf
dV9pNjQ7CisgICAgICBjYXNlIDE4NyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0
X3Byb21vdGVfZjMyOworICAgICAgY2FzZSAxODggOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmkzMl9yZWludGVycHJldF9mMzI7CisgICAgICBjYXNlIDE4OSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTY0X3JlaW50ZXJwcmV0X2Y2NDsKKyAgICAgIGNhc2UgMTkwIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfcmVpbnRlcnByZXRfaTMyOworICAgICAgY2Fz
ZSAxOTEgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9yZWludGVycHJldF9pNjQ7
CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gaW5zdHJfYmxvY2skcHJpbWUocywg
X2VzKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgZXMgPSBfZXM7CisgICAgdmFyIG1hdGNo
ID0gcGVlayhzKTsKKyAgICBpZiAobWF0Y2gpIHsKKyAgICAgIHZhciBtYXRjaCQxID0gbWF0Y2hb
MF07CisgICAgICBpZiAobWF0Y2gkMSAhPT0gNSkgeworICAgICAgICBpZiAobWF0Y2gkMSAhPT0g
MTEpIHsKKyAgICAgICAgICB2YXIgcG9zID0gc1svKiBwb3MgKi8yXVswXTsKKyAgICAgICAgICB2
YXIgZSRwcmltZSA9IGluc3RyKHMpOworICAgICAgICAgIF9lcyA9IC8qIDo6ICovWworICAgICAg
ICAgICAgU291cmNlLiRhdCRhdChlJHByaW1lLCByZWdpb24ocywgcG9zLCBwb3MpKSwKKyAgICAg
ICAgICAgIGVzCisgICAgICAgICAgXTsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGVzOworICAgICAg
ICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGVzOworICAgICAgfQor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBlczsKKyAgICB9CisgIH07Cit9CisKK2Z1
bmN0aW9uIGluc3RyX2Jsb2NrKHMpIHsKKyAgcmV0dXJuIExpc3QucmV2KGluc3RyX2Jsb2NrJHBy
aW1lKHMsIC8qIFtdICovMCkpOworfQorCitmdW5jdGlvbiAkJGNvbnN0KHMpIHsKKyAgdmFyIGMg
PSBhdChpbnN0cl9ibG9jaywgcyk7CisgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0
ZWQiKTsKKyAgcmV0dXJuIGM7Cit9CisKK2Z1bmN0aW9uIGlkKHMpIHsKKyAgdmFyIGJvID0gcGVl
ayhzKTsKKyAgcmV0dXJuIEN1cnJ5Ll8yKExpYi5PcHRpb25bLyogbWFwICovMV0sIGZ1bmN0aW9u
IChwYXJhbSkgeworICAgICAgICAgICAgICBpZiAocGFyYW0gPiAxMSB8fCBwYXJhbSA8IDApIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Iocywgc1svKiBwb3MgKi8yXVswXSwgImludmFs
aWQgc2VjdGlvbiBpZCIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHN3aXRjaCAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgIGNhc2Ug
MCA6IAorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBDdXN0b21TZWN0aW9uICovLTgw
ODAxMDIyMDsKKyAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBUeXBlU2VjdGlvbiAqLzgzNjUwMTAzNTsKKyAgICAgICAgICAgICAgICAg
IGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBJbXBvcnRTZWN0aW9u
ICovNjk2NTE3MzQ0OworICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIEZ1bmNTZWN0aW9uICovMjA1NTU2NDQ5OworICAgICAgICAgICAg
ICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFRhYmxlU2Vj
dGlvbiAqLzEwMzE4NjQyMTU7CisgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogTWVtb3J5U2VjdGlvbiAqLy04NDAyMDMwNjg7CisgICAg
ICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyog
R2xvYmFsU2VjdGlvbiAqLy04NzIzMTMxODI7CisgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAK
KyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRXhwb3J0U2VjdGlvbiAqLy00NDA2Nzk3
NTk7CisgICAgICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogU3RhcnRTZWN0aW9uICovMzk1NzIwMTMxOworICAgICAgICAgICAgICAgICAgY2Fz
ZSA5IDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEVsZW1TZWN0aW9uICovNDQw
MzgwNjYyOworICAgICAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBDb2RlU2VjdGlvbiAqLzEwMjExMzM4NDg7CisgICAgICAgICAgICAgICAg
ICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIERhdGFTZWN0aW9u
ICovNjY0NDc1NDc7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIGJvKTsKK30KKworZnVuY3Rpb24gc2VjdGlvbl93
aXRoX3NpemUodGFnLCBmLCAkJGRlZmF1bHQsIHMpIHsKKyAgdmFyIG1hdGNoID0gaWQocyk7Cisg
IGlmIChtYXRjaCAmJiBDYW1sX29iai5jYW1sX2VxdWFsKG1hdGNoWzBdLCB0YWcpKSB7CisgICAg
Z3VhcmQoZ2V0LCBzKTsKKyAgICByZXR1cm4gc2l6ZWQoZiwgcyk7CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuICQkZGVmYXVsdDsKKyAgfQorfQorCitmdW5jdGlvbiBzZWN0aW9uKHRhZywgZiwg
JCRkZWZhdWx0LCBzKSB7CisgIHJldHVybiBzZWN0aW9uX3dpdGhfc2l6ZSh0YWcsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGY7CisgICAgICAgICAgICB9LCAkJGRlZmF1bHQs
IHMpOworfQorCitmdW5jdGlvbiB0eXBlX3NlY3Rpb24ocykgeworICByZXR1cm4gc2VjdGlvbigv
KiBUeXBlU2VjdGlvbiAqLzgzNjUwMTAzNSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAg
ICAgIHJldHVybiB2ZWMoZnVuY190eXBlLCBwYXJhbSk7CisgICAgICAgICAgICB9LCAvKiBbXSAq
LzAsIHMpOworfQorCitmdW5jdGlvbiBpbXBvcnRfa2luZChzKSB7CisgIHZhciBtYXRjaCA9IGd1
YXJkKGdldCwgcyk7CisgIGlmIChtYXRjaCA+IDMgfHwgbWF0Y2ggPCAwKSB7CisgICAgcmV0dXJu
IGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwgImludmFsaWQgaW1wb3J0IGtpbmQi
KTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgICBjYXNlIDAgOiAK
KyAgICAgICAgICByZXR1cm4gLyogRnVuY0ltcG9ydCAqL0Jsb2NrLl9fKDAsIFthdCgkJHZhciwg
cyldKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAvKiBUYWJsZUltcG9ydCAq
L0Jsb2NrLl9fKDEsIFt0YWJsZV90eXBlKHMpXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAg
ICByZXR1cm4gLyogTWVtb3J5SW1wb3J0ICovQmxvY2suX18oMiwgW21lbW9yeV90eXBlKHMpXSk7
CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogR2xvYmFsSW1wb3J0ICovQmxv
Y2suX18oMywgW2dsb2JhbF90eXBlKHMpXSk7CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVu
Y3Rpb24gJCRpbXBvcnQocykgeworICB2YXIgbW9kdWxlX25hbWUgPSBzdHJpbmcocyk7CisgIHZh
ciBpdGVtX25hbWUgPSBzdHJpbmcocyk7CisgIHZhciBpa2luZCA9IGF0KGltcG9ydF9raW5kLCBz
KTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBtb2R1bGVfbmFtZSAqL21v
ZHVsZV9uYW1lLAorICAgICAgICAgIC8qIGl0ZW1fbmFtZSAqL2l0ZW1fbmFtZSwKKyAgICAgICAg
ICAvKiBpa2luZCAqL2lraW5kCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGltcG9ydF9zZWN0
aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb24oLyogSW1wb3J0U2VjdGlvbiAqLzY5NjUxNzM0NCwg
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY3Rpb24gKHBh
cmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdCgkJGltcG9ydCwgcGFy
YW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwg
LyogW10gKi8wLCBzKTsKK30KKworZnVuY3Rpb24gZnVuY19zZWN0aW9uKHMpIHsKKyAgcmV0dXJu
IHNlY3Rpb24oLyogRnVuY1NlY3Rpb24gKi8yMDU1NTY0NDksIGZ1bmN0aW9uIChwYXJhbSkgewor
ICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYXQoJCR2YXIsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAgICAgIH0sIC8qIFtdICovMCwgcyk7Cit9CisKK2Z1
bmN0aW9uIHRhYmxlKHMpIHsKKyAgdmFyIHR0eXBlID0gdGFibGVfdHlwZShzKTsKKyAgcmV0dXJu
IC8qIHJlY29yZCAqL1svKiB0dHlwZSAqL3R0eXBlXTsKK30KKworZnVuY3Rpb24gdGFibGVfc2Vj
dGlvbihzKSB7CisgIHJldHVybiBzZWN0aW9uKC8qIFRhYmxlU2VjdGlvbiAqLzEwMzE4NjQyMTUs
IGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChw
YXJhbSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXQodGFibGUsIHBhcmFt
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAgICAgIH0sIC8q
IFtdICovMCwgcyk7Cit9CisKK2Z1bmN0aW9uIG1lbW9yeShzKSB7CisgIHZhciBtdHlwZSA9IG1l
bW9yeV90eXBlKHMpOworICByZXR1cm4gLyogcmVjb3JkICovWy8qIG10eXBlICovbXR5cGVdOwor
fQorCitmdW5jdGlvbiBtZW1vcnlfc2VjdGlvbihzKSB7CisgIHJldHVybiBzZWN0aW9uKC8qIE1l
bW9yeVNlY3Rpb24gKi8tODQwMjAzMDY4LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAg
ICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGF0KG1lbW9yeSwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSwg
cGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKworZnVuY3Rpb24gZ2xv
YmFsKHMpIHsKKyAgdmFyIGd0eXBlID0gZ2xvYmFsX3R5cGUocyk7CisgIHZhciB2YWx1ZSA9ICQk
Y29uc3Qocyk7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogZ3R5cGUgKi9n
dHlwZSwKKyAgICAgICAgICAvKiB2YWx1ZSAqL3ZhbHVlCisgICAgICAgIF07Cit9CisKK2Z1bmN0
aW9uIGdsb2JhbF9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb24oLyogR2xvYmFsU2VjdGlv
biAqLy04NzIzMTMxODIsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4g
dmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
YXQoZ2xvYmFsLCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbSk7Cisg
ICAgICAgICAgICB9LCAvKiBbXSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBleHBvcnRfa2luZChz
KSB7CisgIHZhciBtYXRjaCA9IGd1YXJkKGdldCwgcyk7CisgIGlmIChtYXRjaCA+IDMgfHwgbWF0
Y2ggPCAwKSB7CisgICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwg
ImludmFsaWQgZXhwb3J0IGtpbmQiKTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKG1hdGNo
KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gLyogRnVuY0V4cG9ydCAqLzA7
CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogVGFibGVFeHBvcnQgKi8xOwor
ICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIC8qIE1lbW9yeUV4cG9ydCAqLzI7Cisg
ICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogR2xvYmFsRXhwb3J0ICovMzsKKyAg
ICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiAkJGV4cG9ydChzKSB7CisgIHZhciBuYW1l
ID0gc3RyaW5nKHMpOworICB2YXIgZWtpbmQgPSBhdChleHBvcnRfa2luZCwgcyk7CisgIHZhciBp
dGVtID0gYXQoJCR2YXIsIHMpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8q
IG5hbWUgKi9uYW1lLAorICAgICAgICAgIC8qIGVraW5kICovZWtpbmQsCisgICAgICAgICAgLyog
aXRlbSAqL2l0ZW0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZXhwb3J0X3NlY3Rpb24ocykg
eworICByZXR1cm4gc2VjdGlvbigvKiBFeHBvcnRTZWN0aW9uICovLTQ0MDY3OTc1OSwgZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY3Rpb24gKHBhcmFtKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdCgkJGV4cG9ydCwgcGFyYW0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10g
Ki8wLCBzKTsKK30KKworZnVuY3Rpb24gc3RhcnRfc2VjdGlvbihzKSB7CisgIHJldHVybiBzZWN0
aW9uKC8qIFN0YXJ0U2VjdGlvbiAqLzM5NTcyMDEzMSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAg
ICAgICAgICAgIHJldHVybiAvKiBTb21lICovW2F0KCQkdmFyLCBwYXJhbSldOworICAgICAgICAg
ICAgfSwgLyogTm9uZSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBsb2NhbChzKSB7CisgIHZhciBu
ID0gbGVuMzIocyk7CisgIHZhciB0ID0gdmFsdWVfdHlwZShzKTsKKyAgcmV0dXJuIEN1cnJ5Ll8y
KExpYi5MaXN0Wy8qIG1ha2UgKi8wXSwgbiwgdCk7Cit9CisKK2Z1bmN0aW9uIGNvZGUoXywgcykg
eworICB2YXIgbG9jYWxzID0gTGlzdC5mbGF0dGVuKHZlYyhsb2NhbCwgcykpOworICB2YXIgYm9k
eSA9IExpc3QucmV2KGluc3RyX2Jsb2NrJHByaW1lKHMsIC8qIFtdICovMCkpOworICBleHBlY3Qo
MTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisg
ICAgICAgICAgLyogZnR5cGUgKi9Tb3VyY2UuJGF0JGF0KC0xLCBTb3VyY2Uubm9fcmVnaW9uKSwK
KyAgICAgICAgICAvKiBsb2NhbHMgKi9sb2NhbHMsCisgICAgICAgICAgLyogYm9keSAqL2JvZHkK
KyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gY29kZV9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNl
Y3Rpb24oLyogQ29kZVNlY3Rpb24gKi8xMDIxMTMzODQ4LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICAgICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGF0KGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZWQoY29kZSwgcGFyYW0pOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKwor
ZnVuY3Rpb24gc2VnbWVudChkYXQsIHMpIHsKKyAgdmFyIGluZGV4ID0gYXQoJCR2YXIsIHMpOwor
ICB2YXIgb2Zmc2V0ID0gJCRjb25zdChzKTsKKyAgdmFyIGluaXQgPSBDdXJyeS5fMShkYXQsIHMp
OworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGluZGV4ICovaW5kZXgsCisg
ICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgIC8qIGluaXQgKi9pbml0Cisg
ICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRhYmxlX3NlZ21lbnQocykgeworICByZXR1cm4gc2Vn
bWVudChmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlv
biAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0KCQkdmFyLCBw
YXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbSk7CisgICAgICAgICAgICB9
LCBzKTsKK30KKworZnVuY3Rpb24gZWxlbV9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb24o
LyogRWxlbVNlY3Rpb24gKi80NDAzODA2NjIsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAg
ICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYXQodGFibGVfc2VnbWVudCwgcGFyYW0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKworZnVu
Y3Rpb24gbWVtb3J5X3NlZ21lbnQocykgeworICByZXR1cm4gc2VnbWVudChzdHJpbmcsIHMpOwor
fQorCitmdW5jdGlvbiBkYXRhX3NlY3Rpb24ocykgeworICByZXR1cm4gc2VjdGlvbigvKiBEYXRh
U2VjdGlvbiAqLzY2NDQ3NTQ3LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgcmV0
dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGF0KG1lbW9yeV9zZWdtZW50LCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
LCBwYXJhbSk7CisgICAgICAgICAgICB9LCAvKiBbXSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBj
dXN0b20oc2l6ZSwgcykgeworICB2YXIgc3RhcnQgPSBzWy8qIHBvcyAqLzJdWzBdOworICBzdHJp
bmcocyk7CisgIHZhciBwYXJ0aWFsX2FyZyA9IHNpemUgLSAoc1svKiBwb3MgKi8yXVswXSAtIHN0
YXJ0IHwgMCkgfCAwOworICB2YXIgcGFydGlhbF9hcmckMSA9IGZ1bmN0aW9uIChwYXJhbSkgewor
ICAgIHJldHVybiBza2lwKHBhcnRpYWxfYXJnLCBwYXJhbSk7CisgIH07CisgIChmdW5jdGlvbiAo
cGFyYW0pIHsKKyAgICAgICAgcmV0dXJuIGd1YXJkKHBhcnRpYWxfYXJnJDEsIHBhcmFtKTsKKyAg
ICAgIH0ocykpOworICByZXR1cm4gLyogdHJ1ZSAqLzE7Cit9CisKK2Z1bmN0aW9uIGN1c3RvbV9z
ZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb25fd2l0aF9zaXplKC8qIEN1c3RvbVNlY3Rpb24g
Ki8tODA4MDEwMjIwLCBjdXN0b20sIC8qIGZhbHNlICovMCwgcyk7Cit9CisKK2Z1bmN0aW9uIGl0
ZXJhdGUoZiwgcykgeworICB3aGlsZSh0cnVlKSB7CisgICAgaWYgKEN1cnJ5Ll8xKGYsIHMpKSB7
CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1vZHVsZV8ocykgeworICB2YXIgbWFn
aWMgPSB1MzIocyk7CisgICQkcmVxdWlyZSgrKG1hZ2ljID09PSAxODM2Mjc4MDE2KSwgcywgMCwg
Im1hZ2ljIGhlYWRlciBub3QgZGV0ZWN0ZWQiKTsKKyAgdmFyIHZlcnNpb24gPSB1MzIocyk7Cisg
ICQkcmVxdWlyZSgrKHZlcnNpb24gPT09IEVuY29kZS52ZXJzaW9uKSwgcywgNCwgInVua25vd24g
YmluYXJ5IHZlcnNpb24iKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciB0
eXBlcyA9IHR5cGVfc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7Cisg
IHZhciBpbXBvcnRzID0gaW1wb3J0X3NlY3Rpb24ocyk7CisgIGl0ZXJhdGUoY3VzdG9tX3NlY3Rp
b24sIHMpOworICB2YXIgZnVuY190eXBlcyA9IGZ1bmNfc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShj
dXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciB0YWJsZXMgPSB0YWJsZV9zZWN0aW9uKHMpOworICBp
dGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKKyAgdmFyIG1lbW9yaWVzID0gbWVtb3J5X3NlY3Rp
b24ocyk7CisgIGl0ZXJhdGUoY3VzdG9tX3NlY3Rpb24sIHMpOworICB2YXIgZ2xvYmFscyA9IGds
b2JhbF9zZWN0aW9uKHMpOworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKKyAgdmFyICQk
ZXhwb3J0cyA9IGV4cG9ydF9zZWN0aW9uKHMpOworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBz
KTsKKyAgdmFyIHN0YXJ0ID0gc3RhcnRfc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0b21fc2Vj
dGlvbiwgcyk7CisgIHZhciBlbGVtcyA9IGVsZW1fc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0
b21fc2VjdGlvbiwgcyk7CisgIHZhciBmdW5jX2JvZGllcyA9IGNvZGVfc2VjdGlvbihzKTsKKyAg
aXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciBkYXRhID0gZGF0YV9zZWN0aW9uKHMp
OworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKKyAgJCRyZXF1aXJlKCsoc1svKiBwb3Mg
Ki8yXVswXSA9PT0gc1svKiBieXRlcyAqLzFdLmxlbmd0aCksIHMsIHNbLyogYnl0ZXMgKi8xXS5s
ZW5ndGgsICJqdW5rIGFmdGVyIGxhc3Qgc2VjdGlvbiIpOworICAkJHJlcXVpcmUoKyhMaXN0Lmxl
bmd0aChmdW5jX3R5cGVzKSA9PT0gTGlzdC5sZW5ndGgoZnVuY19ib2RpZXMpKSwgcywgc1svKiBi
eXRlcyAqLzFdLmxlbmd0aCwgImZ1bmN0aW9uIGFuZCBjb2RlIHNlY3Rpb24gaGF2ZSBpbmNvbnNp
c3RlbnQgbGVuZ3RocyIpOworICB2YXIgZnVuY3MgPSBMaXN0Lm1hcDIoZnVuY3Rpb24gKHQsIGYp
IHsKKyAgICAgICAgdmFyIGluaXQgPSBmWy8qIGl0ICovMV07CisgICAgICAgIHJldHVybiBTb3Vy
Y2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogZnR5cGUgKi90
LAorICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2FscyAqLzFdLAor
ICAgICAgICAgICAgICAgICAgICAvKiBib2R5ICovaW5pdFsvKiBib2R5ICovMl0KKyAgICAgICAg
ICAgICAgICAgIF0sIGZbLyogYXQgKi8wXSk7CisgICAgICB9LCBmdW5jX3R5cGVzLCBmdW5jX2Jv
ZGllcyk7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogdHlwZXMgKi90eXBl
cywKKyAgICAgICAgICAvKiBnbG9iYWxzICovZ2xvYmFscywKKyAgICAgICAgICAvKiB0YWJsZXMg
Ki90YWJsZXMsCisgICAgICAgICAgLyogbWVtb3JpZXMgKi9tZW1vcmllcywKKyAgICAgICAgICAv
KiBmdW5jcyAqL2Z1bmNzLAorICAgICAgICAgIC8qIHN0YXJ0ICovc3RhcnQsCisgICAgICAgICAg
LyogZWxlbXMgKi9lbGVtcywKKyAgICAgICAgICAvKiBkYXRhICovZGF0YSwKKyAgICAgICAgICAv
KiBpbXBvcnRzICovaW1wb3J0cywKKyAgICAgICAgICAvKiBleHBvcnRzICovJCRleHBvcnRzCisg
ICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGRlY29kZShuYW1lLCBicykgeworICByZXR1cm4gYXQo
bW9kdWxlXywgc3RyZWFtKG5hbWUsIGJzKSk7Cit9CisKK2V4cG9ydHMuQ29kZSAgID0gQ29kZSQx
OworZXhwb3J0cy5kZWNvZGUgPSBkZWNvZGU7CisvKiBDb2RlIE5vdCBhIHB1cmUgbW9kdWxlICov
CisvLy8vLy8vLyBlbmQgb2YgZGVjb2RlLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0
czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2VuY29kZSddID0gZnVuY3Rpb24oKSB7CivCoCDC
oCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgZW5jb2RlLmpzIC8vLy8vLy8v
CisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJ
VCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEYzMiAgICAgICAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9mMzIiKTsKK3ZhciBGNjQgICAgICAgICAgICAgICAgICAgICA9IHJlcXVp
cmUoIi4vZjY0Iik7Cit2YXIgTGliICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2xp
YiIpOwordmFyIENoYXIgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL2NoYXIiKTsKK3ZhciBMaXN0ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQnl0ZXMgICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYnl0ZXMiKTsKK3ZhciBDdXJyeSAgICAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyICQkRXJy
b3IgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9lcnJvciIpOwordmFyIEJ1ZmZlciAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2J1ZmZlciIpOwordmFy
IFNvdXJjZSAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciBDYW1s
X29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29i
aiIpOwordmFyIENhbWxfaW50NjQgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL2NhbWxfaW50NjQiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCit2YXIg
Q29kZSA9ICQkRXJyb3IuTWFrZSgvKiBtb2R1bGUgKi9bXSk7CisKK3ZhciBDb2RlJDEgPSBDb2Rl
Wy8qIEVycm9yICovMF07CisKK2Z1bmN0aW9uIHN0cmVhbSgpIHsKKyAgcmV0dXJuIC8qIHJlY29y
ZCAqL1sKKyAgICAgICAgICAvKiBidWYgKi9CdWZmZXIuY3JlYXRlKDgxOTIpLAorICAgICAgICAg
IC8qIHBhdGNoZXMgKi9bLyogW10gKi8wXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBwYXRj
aChzLCBwb3MsIGIpIHsKKyAgc1svKiBwYXRjaGVzICovMV1bMF0gPSAvKiA6OiAqL1sKKyAgICAv
KiB0dXBsZSAqL1sKKyAgICAgIHBvcywKKyAgICAgIGIKKyAgICBdLAorICAgIHNbLyogcGF0Y2hl
cyAqLzFdWzBdCisgIF07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGVuY29k
ZShtKSB7CisgIHZhciBzID0gc3RyZWFtKC8qICgpICovMCk7CisgIHZhciB1OCA9IGZ1bmN0aW9u
IChpKSB7CisgICAgdmFyIGIgPSBDaGFyLmNocihpICYgMjU1KTsKKyAgICByZXR1cm4gQnVmZmVy
LmFkZF9jaGFyKHNbLyogYnVmICovMF0sIGIpOworICB9OworICB2YXIgdTE2ID0gZnVuY3Rpb24g
KGkpIHsKKyAgICB1OChpICYgMjU1KTsKKyAgICByZXR1cm4gdTgoKGkgPj4+IDgpKTsKKyAgfTsK
KyAgdmFyIHUzMiA9IGZ1bmN0aW9uIChpKSB7CisgICAgdTE2KGkgJiA2NTUzNSk7CisgICAgcmV0
dXJuIHUxNigoaSA+PiAxNikpOworICB9OworICB2YXIgdnU2NCA9IGZ1bmN0aW9uIChfaSkgewor
ICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBpID0gX2k7CisgICAgICB2YXIgYiA9IGlbMV0g
JiAvKiBsbyAqLzEyNyB8IDA7CisgICAgICBpZiAoQ2FtbF9pbnQ2NC5sZSgvKiBpbnQ2NCAqL1sK
KyAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAvKiBsbyAqLzAKKyAgICAg
ICAgICAgIF0sIGkpICYmIENhbWxfaW50NjQubHQoaSwgLyogaW50NjQgKi9bCisgICAgICAgICAg
ICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgLyogbG8gKi8xMjgKKyAgICAgICAgICAgIF0p
KSB7CisgICAgICAgIHJldHVybiB1OChiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICB1OChiIHwgMTI4KTsKKyAgICAgICAgX2kgPSBDYW1sX2ludDY0Lmxzcl8oaSwgNyk7CisgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHZz
NjQgPSBmdW5jdGlvbiAoX2kpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgaSA9IF9p
OworICAgICAgdmFyIGIgPSBpWzFdICYgLyogbG8gKi8xMjcgfCAwOworICAgICAgaWYgKENhbWxf
aW50NjQubGUoLyogaW50NjQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICovLTEsCisgICAgICAg
ICAgICAgIC8qIGxvICovNDI5NDk2NzIzMgorICAgICAgICAgICAgXSwgaSkgJiYgQ2FtbF9pbnQ2
NC5sdChpLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAg
ICAgICAvKiBsbyAqLzY0CisgICAgICAgICAgICBdKSkgeworICAgICAgICByZXR1cm4gdTgoYik7
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdTgoYiB8IDEyOCk7CisgICAgICAgIF9p
ID0gQ2FtbF9pbnQ2NC5hc3JfKGksIDcpOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAor
ICAgICAgfQorICAgIH07CisgIH07CisgIHZhciB2dTMyID0gZnVuY3Rpb24gKGkpIHsKKyAgICBy
ZXR1cm4gdnU2NChDYW1sX2ludDY0LmFuZF8oQ2FtbF9pbnQ2NC5vZl9pbnQzMihpKSwgLyogaW50
NjQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgICAg
ICAgLyogbG8gKi80Mjk0OTY3Mjk1CisgICAgICAgICAgICAgICAgICBdKSk7CisgIH07CisgIHZh
ciBsZW4gPSBmdW5jdGlvbiAoaSkgeworICAgIGlmIChpICE9PSBpKSB7CisgICAgICBDdXJyeS5f
MihDb2RlWy8qIGVycm9yICovMl0sIFNvdXJjZS5ub19yZWdpb24sICJjYW5ub3QgZW5jb2RlIGxl
bmd0aCB3aXRoIG1vcmUgdGhhbiAzMiBiaXQiKTsKKyAgICB9CisgICAgcmV0dXJuIHZ1MzIoaSk7
CisgIH07CisgIHZhciBib29sID0gZnVuY3Rpb24gKGIpIHsKKyAgICB2YXIgaSA9IGIgPyAxIDog
MDsKKyAgICByZXR1cm4gdnU2NChDYW1sX2ludDY0LmFuZF8oQ2FtbF9pbnQ2NC5vZl9pbnQzMihp
KSwgLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAg
ICAgICAgICAgICAgLyogbG8gKi8xCisgICAgICAgICAgICAgICAgICBdKSk7CisgIH07CisgIHZh
ciBzdHJpbmcgPSBmdW5jdGlvbiAoYnMpIHsKKyAgICBsZW4oYnMubGVuZ3RoKTsKKyAgICByZXR1
cm4gQnVmZmVyLmFkZF9zdHJpbmcoc1svKiBidWYgKi8wXSwgYnMpOworICB9OworICB2YXIgdmVj
ID0gZnVuY3Rpb24gKGYsIHhzKSB7CisgICAgbGVuKExpc3QubGVuZ3RoKHhzKSk7CisgICAgcmV0
dXJuIExpc3QuaXRlcihmLCB4cyk7CisgIH07CisgIHZhciBnYXAzMiA9IGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgcCA9IEJ1ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSk7CisgICAgdTMyKDApOwor
ICAgIHU4KDApOworICAgIHJldHVybiBwOworICB9OworICB2YXIgcGF0Y2hfZ2FwMzIgPSBmdW5j
dGlvbiAocCwgbikgeworICAgIGlmIChuID4gMjY4NDM1NDU1KSB7CisgICAgICB0aHJvdyBbCisg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcv
d2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAg
ICAgICAgICAgODAsCisgICAgICAgICAgICAgIDYKKyAgICAgICAgICAgIF0KKyAgICAgICAgICBd
OworICAgIH0KKyAgICBwYXRjaChzLCBwLCBDaGFyLmNocigobiB8IDEyOCkgJiAyNTUpKTsKKyAg
ICBwYXRjaChzLCBwICsgMSB8IDAsIENoYXIuY2hyKCgobiA+Pj4gNykgfCAxMjgpICYgMjU1KSk7
CisgICAgcGF0Y2gocywgcCArIDIgfCAwLCBDaGFyLmNocigoKG4gPj4+IDE0KSB8IDEyOCkgJiAy
NTUpKTsKKyAgICBwYXRjaChzLCBwICsgMyB8IDAsIENoYXIuY2hyKCgobiA+Pj4gMjEpIHwgMTI4
KSAmIDI1NSkpOworICAgIHJldHVybiBwYXRjaChzLCBwICsgNCB8IDAsIENoYXIuY2hyKChuID4+
PiAyOCkgJiAyNTUpKTsKKyAgfTsKKyAgdmFyIHZhbHVlX3R5cGUgPSBmdW5jdGlvbiAocGFyYW0p
IHsKKyAgICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1
cm4gdnM2NCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBoaSAqLy0xLAor
ICAgICAgICAgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI5NQorICAgICAgICAgICAgICAg
ICAgICBdKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiB2czY0KC8qIGludDY0
ICovWworICAgICAgICAgICAgICAgICAgICAgIC8qIGhpICovLTEsCisgICAgICAgICAgICAgICAg
ICAgICAgLyogbG8gKi80Mjk0OTY3Mjk0CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAg
Y2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIHZzNjQoLyogaW50NjQgKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgLyogaGkgKi8tMSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBsbyAqLzQy
OTQ5NjcyOTMKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICByZXR1cm4gdnM2NCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBo
aSAqLy0xLAorICAgICAgICAgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI5MgorICAgICAg
ICAgICAgICAgICAgICBdKTsKKyAgICAgIAorICAgIH0KKyAgfTsKKyAgdmFyIHN0YWNrX3R5cGUg
PSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIGlmIChwYXJhbVsx
XSkgeworICAgICAgICByZXR1cm4gQ3VycnkuXzIoQ29kZVsvKiBlcnJvciAqLzJdLCBTb3VyY2Uu
bm9fcmVnaW9uLCAiY2Fubm90IGVuY29kZSBzdGFjayB0eXBlIHdpdGggYXJpdHkgPiAxICh5ZXQp
Iik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX3R5cGUocGFy
YW1bMF0pOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiB2czY0KC8q
IGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8tMSwKKyAgICAgICAgICAgICAg
ICAgIC8qIGxvICovNDI5NDk2NzIzMgorICAgICAgICAgICAgICAgIF0pOworICAgIH0KKyAgfTsK
KyAgdmFyIGZ1bmNfdHlwZSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHZzNjQoLyogaW50NjQg
Ki9bCisgICAgICAgICAgLyogaGkgKi8tMSwKKyAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyNjQK
KyAgICAgICAgXSk7CisgICAgdmVjKHZhbHVlX3R5cGUsIHBhcmFtWzBdKTsKKyAgICByZXR1cm4g
dmVjKHZhbHVlX3R5cGUsIHBhcmFtWzFdKTsKKyAgfTsKKyAgdmFyIGxpbWl0cyA9IGZ1bmN0aW9u
ICh2dSwgcGFyYW0pIHsKKyAgICB2YXIgbWF4ID0gcGFyYW1bLyogbWF4ICovMV07CisgICAgYm9v
bCgrKG1heCAhPT0gLyogTm9uZSAqLzApKTsKKyAgICBDdXJyeS5fMSh2dSwgcGFyYW1bLyogbWlu
ICovMF0pOworICAgIHJldHVybiBDdXJyeS5fMihMaWIuT3B0aW9uWy8qIGFwcCAqLzJdLCB2dSwg
bWF4KTsKKyAgfTsKKyAgdmFyIHRhYmxlX3R5cGUgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICB2
czY0KC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovLTEsCisgICAgICAgICAgLyogbG8g
Ki80Mjk0OTY3MjgwCisgICAgICAgIF0pOworICAgIHJldHVybiBsaW1pdHModnUzMiwgcGFyYW1b
MF0pOworICB9OworICB2YXIgbWVtb3J5X3R5cGUgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBy
ZXR1cm4gbGltaXRzKHZ1MzIsIHBhcmFtWzBdKTsKKyAgfTsKKyAgdmFyIGdsb2JhbF90eXBlID0g
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgdmFsdWVfdHlwZShwYXJhbVswXSk7CisgICAgdmFyIHBh
cmFtJDEgPSBwYXJhbVsxXTsKKyAgICBpZiAocGFyYW0kMSAhPT0gMCkgeworICAgICAgcmV0dXJu
IHU4KDEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiB1OCgwKTsKKyAgICB9Cisg
IH07CisgIHZhciBtZW1vcCA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHZ1MzIocGFyYW1bLyog
YWxpZ24gKi8xXSk7CisgICAgcmV0dXJuIHZ1MzIocGFyYW1bLyogb2Zmc2V0ICovMl0pOworICB9
OworICB2YXIgJCR2YXIgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB2dTMyKHhbLyogaXQg
Ki8xXSk7CisgIH07CisgIHZhciBpbnN0ciA9IGZ1bmN0aW9uIChlKSB7CisgICAgdmFyIG1hdGNo
ID0gZVsvKiBpdCAqLzFdOworICAgIGlmICh0eXBlb2YgbWF0Y2ggPT09ICJudW1iZXIiKSB7Cisg
ICAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgcmV0
dXJuIHU4KDApOworICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIHJldHVybiB1OCgxKTsK
KyAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICByZXR1cm4gdTgoMTUpOworICAgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICAgIHJldHVybiB1OCgyNik7CisgICAgICAgIGNhc2UgNCA6IAor
ICAgICAgICAgICAgcmV0dXJuIHU4KDI3KTsKKyAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAg
ICB1OCg2Myk7CisgICAgICAgICAgICByZXR1cm4gdTgoMCk7CisgICAgICAgIGNhc2UgNiA6IAor
ICAgICAgICAgICAgdTgoNjQpOworICAgICAgICAgICAgcmV0dXJuIHU4KDApOworICAgICAgICAK
KyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzd2l0Y2ggKG1hdGNoLnRhZyB8IDAp
IHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICB1OCgyKTsKKyAgICAgICAgICAgIHN0
YWNrX3R5cGUobWF0Y2hbMF0pOworICAgICAgICAgICAgTGlzdC5pdGVyKGluc3RyLCBtYXRjaFsx
XSk7CisgICAgICAgICAgICByZXR1cm4gdTgoMTEpOworICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgIHU4KDMpOworICAgICAgICAgICAgc3RhY2tfdHlwZShtYXRjaFswXSk7CisgICAgICAg
ICAgICBMaXN0Lml0ZXIoaW5zdHIsIG1hdGNoWzFdKTsKKyAgICAgICAgICAgIHJldHVybiB1OCgx
MSk7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgdmFyIGVzMiA9IG1hdGNoWzJdOwor
ICAgICAgICAgICAgdTgoNCk7CisgICAgICAgICAgICBzdGFja190eXBlKG1hdGNoWzBdKTsKKyAg
ICAgICAgICAgIExpc3QuaXRlcihpbnN0ciwgbWF0Y2hbMV0pOworICAgICAgICAgICAgaWYgKGVz
MiAhPT0gLyogW10gKi8wKSB7CisgICAgICAgICAgICAgIHU4KDUpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgTGlzdC5pdGVyKGluc3RyLCBlczIpOworICAgICAgICAgICAgcmV0dXJuIHU4
KDExKTsKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICB1OCgxMik7CisgICAgICAgICAg
ICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBpdCAqLzFdKTsKKyAgICAgICAgY2FzZSA0IDogCisg
ICAgICAgICAgICB1OCgxMyk7CisgICAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBp
dCAqLzFdKTsKKyAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICB1OCgxNCk7CisgICAgICAg
ICAgICB2ZWMoJCR2YXIsIG1hdGNoWzBdKTsKKyAgICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNo
WzFdWy8qIGl0ICovMV0pOworICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgIHU4KDE2KTsK
KyAgICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNoWzBdWy8qIGl0ICovMV0pOworICAgICAgICBj
YXNlIDcgOiAKKyAgICAgICAgICAgIHU4KDE3KTsKKyAgICAgICAgICAgIHZ1MzIobWF0Y2hbMF1b
LyogaXQgKi8xXSk7CisgICAgICAgICAgICByZXR1cm4gdTgoMCk7CisgICAgICAgIGNhc2UgOCA6
IAorICAgICAgICAgICAgdTgoMzIpOworICAgICAgICAgICAgcmV0dXJuIHZ1MzIobWF0Y2hbMF1b
LyogaXQgKi8xXSk7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgdTgoMzMpOworICAg
ICAgICAgICAgcmV0dXJuIHZ1MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgIGNhc2Ug
MTAgOiAKKyAgICAgICAgICAgIHU4KDM0KTsKKyAgICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNo
WzBdWy8qIGl0ICovMV0pOworICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICB1OCgzNSk7
CisgICAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBpdCAqLzFdKTsKKyAgICAgICAg
Y2FzZSAxMiA6IAorICAgICAgICAgICAgdTgoMzYpOworICAgICAgICAgICAgcmV0dXJuIHZ1MzIo
bWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIHZh
ciBtbyA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dpdGNoIChtb1svKiB0eSAqLzBdKSB7Cisg
ICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDEgPSBt
b1svKiBzeiAqLzNdOworICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDEpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBtYXRjaCQxWzBdOworICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG1hdGNoJDJbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDJbMV0gIT09IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1OCg0NSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
OCg0NCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6
IAorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkMlsxXSAhPT0gMCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHU4KDQ3KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHU4KDQ2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50
ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICB1OCg0MCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcCht
byk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMyA9IG1vWy8q
IHN6ICovM107CisgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkMykgeworICAgICAgICAgICAg
ICAgICAgICB2YXIgbWF0Y2gkNCA9IG1hdGNoJDNbMF07CisgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAobWF0Y2gkNFswXSkgeworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkNFsxXSAhPT0gMCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHU4KDQ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4KDQ4
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQ0WzFdICE9PSAwKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdTgoNTEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBtZW1vcChtbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTgo
NTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDRbMV0gIT09IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1OCg1Myk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
OCg1Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdTgoNDEpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgaWYgKG1v
Wy8qIHN6ICovM10pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIv
dXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVp
bGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTk2
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1OCg0Mik7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7CisgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgICAgICAgICBpZiAobW9bLyogc3ogKi8zXSkgeworICAgICAgICAgICAgICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVj
L2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxOTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIHU4KDQzKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE0IDogCisg
ICAgICAgICAgICB2YXIgbW8kMSA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dpdGNoIChtbyQx
Wy8qIHR5ICovMF0pIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAg
ICB2YXIgbWF0Y2gkNSA9IG1vJDFbLyogc3ogKi8zXTsKKyAgICAgICAgICAgICAgICAgIGlmICht
YXRjaCQ1KSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkNVswXSkgeworICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICB1
OCg1OCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyQxKTsKKyAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
dTgoNTkpOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUv
aG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNv
ZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwNCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1MgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdTgoNTQpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7CisgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgICAgICAgICB2YXIgbWF0Y2gkNiA9IG1vJDFbLyogc3ogKi8zXTsKKyAgICAgICAgICAgICAg
ICAgIGlmIChtYXRjaCQ2KSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkNlsw
XSkgeworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAg
ICAgICAgICB1OCg2MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcCht
byQxKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgdTgoNjEpOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3Ao
bW8kMSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHU4KDYyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9w
KG1vJDEpOworICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgdTgoNTUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7
CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICBpZiAobW8kMVsvKiBzeiAqLzNdKSB7
CisgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29n
bGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9l
bmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwOCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1OAorICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHU4KDU2KTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1lbW9wKG1vJDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAg
aWYgKG1vJDFbLyogc3ogKi8zXSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWls
dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJl
dGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyMDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1OCg1
Nyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyQxKTsKKyAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE1IDogCisgICAgICAg
ICAgICB2YXIgbWF0Y2gkNyA9IG1hdGNoWzBdWy8qIGl0ICovMV07CisgICAgICAgICAgICBzd2l0
Y2ggKG1hdGNoJDcudGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICAgICAgICAgIHU4KDY1KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB2czY0KENhbWxfaW50
NjQub2ZfaW50MzIobWF0Y2gkN1swXSkpOworICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICAgIHU4KDY2KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB2czY0KG1hdGNo
JDdbMF0pOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgIHU4KDY3
KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB1MzIoQ3VycnkuXzEoRjMyLnRvX2JpdHMsIG1h
dGNoJDdbMF0pKTsKKyAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICB1
OCg2OCk7CisgICAgICAgICAgICAgICAgICB2YXIgaSA9IEN1cnJ5Ll8xKEY2NC50b19iaXRzLCBt
YXRjaCQ3WzBdKTsKKyAgICAgICAgICAgICAgICAgIHUzMihpWzFdICYgLyogbG8gKi80Mjk0OTY3
Mjk1IHwgMCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdTMyKENhbWxfaW50NjQuYXNyXyhp
LCAzMilbMV0gfCAwKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgc3dpdGNoIChtYXRjaFsw
XS50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDY5KTsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoODApOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAg
ICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3Nw
ZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAyMjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDI0CisgICAgICAg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAg
ICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwv
Z29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9z
cmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjIxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAyNAorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQ4ID0g
bWF0Y2hbMF07CisgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDgudGFnIHwgMCkgeworICAgICAg
ICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkOFswXSkg
eworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCg3MCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDcxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoNzIpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg3Myk7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDc0KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoNzUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDYg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg3Nik7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDc3KTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoNzgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCg3OSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ4WzBdKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDgxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdTgoODIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg4Myk7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDg0KTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
ODUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCg4Nik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDg3KTsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA3IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoODgpOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg4
OSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDkwKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDhbMF0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTEpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCg5Mik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDkzKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTQpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg5NSk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHU4KDk2KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKG1hdGNoJDhbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAw
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTcpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg5OCk7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDk5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoMTAwKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTAxKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTAy
KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgICAgdmFyIG1hdGNoJDkgPSBt
YXRjaFswXTsKKyAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkOS50YWcgfCAwKSB7CisgICAgICAg
ICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ5WzBdKSB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDEwMyk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwNCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwNSk7CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRj
aCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDEyMSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEyMik7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEyMyk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgc3dp
dGNoIChtYXRjaCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0MCk7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEzOSk7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDE0MSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHU4KDE0Mik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0Myk7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0NCk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHU4KDE0NSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChtYXRjaCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1NCk7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1
Myk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDE1NSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1Nik7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1Nyk7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDE1OCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHU4KDE1OSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAg
ICAgIHZhciBtYXRjaCQxMCA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQx
MC50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAg
c3dpdGNoIChtYXRjaCQxMFswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMDYpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMDcpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxMDgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxMDkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTApOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTEpOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCgxMTIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxMTMpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDgg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTQpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTUp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoMTE2KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDExNyk7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTgpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dTgoMTE5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDEyMCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQxMFswXSkgeworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgx
MjQpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCgxMjUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjYpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjcpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1
OCgxMjgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxMjkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzApOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzEpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxMzIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxMzMpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEwIDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTM0KTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEzNSk7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCgxMzYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTM3KTsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAxNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEzOCk7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoICht
YXRjaCQxMFswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxNDYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDcpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDgp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCgxNDkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTApOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTEpOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgx
NTIpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAobWF0Y2gkMTBbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTYwKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTYxKTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTYyKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoMTYzKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY0KTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY1
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoMTY2KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAg
dmFyIG1hdGNoJDExID0gbWF0Y2hbMF07CisgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDExLnRh
ZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKG1hdGNoJDExWzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvdXNyL2xv
Y2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVpbGQvanNs
aWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9m
YWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3Nw
ZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTY3KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY4KTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY5KTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTcwKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoMTcxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA3
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTg4KTsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNo
JDExWzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDE3Mik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE3Myk7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9p
bnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDM0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxNzQpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNzUpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNzYpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxNzcpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxODkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IDIgOiAKKyAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTFbMF0pIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
MTc4KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdTgoMTc5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTgwKTsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSAzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTgxKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5h
c3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcv
d2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE4Mik7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgNiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE5MCk7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoICht
YXRjaCQxMVswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxODMpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODQpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODUp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCgxODYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODcpOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0
ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzNjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTkxKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworICB2
YXIgJCRjb25zdCA9IGZ1bmN0aW9uIChjKSB7CisgICAgTGlzdC5pdGVyKGluc3RyLCBjWy8qIGl0
ICovMV0pOworICAgIHJldHVybiB1OCgxMSk7CisgIH07CisgIHZhciBzZWN0aW9uID0gZnVuY3Rp
b24gKGlkLCBmLCB4LCBuZWVkZWQpIHsKKyAgICBpZiAobmVlZGVkKSB7CisgICAgICB1OChpZCk7
CisgICAgICB2YXIgZyA9IGdhcDMyKC8qICgpICovMCk7CisgICAgICB2YXIgcCA9IEJ1ZmZlci5s
ZW5ndGgoc1svKiBidWYgKi8wXSk7CisgICAgICBDdXJyeS5fMShmLCB4KTsKKyAgICAgIHJldHVy
biBwYXRjaF9nYXAzMihnLCBCdWZmZXIubGVuZ3RoKHNbLyogYnVmICovMF0pIC0gcCB8IDApOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgfTsKKyAgdmFyIHR5
cGVfc2VjdGlvbiA9IGZ1bmN0aW9uICh0cykgeworICAgIHJldHVybiBzZWN0aW9uKDEsIGZ1bmN0
aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY190eXBlLCBwYXJh
bSk7CisgICAgICAgICAgICAgIH0sIHRzLCArKHRzICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAg
dmFyICQkaW1wb3J0ID0gZnVuY3Rpb24gKGltKSB7CisgICAgdmFyIG1hdGNoID0gaW1bLyogaXQg
Ki8xXTsKKyAgICBzdHJpbmcobWF0Y2hbLyogbW9kdWxlX25hbWUgKi8wXSk7CisgICAgc3RyaW5n
KG1hdGNoWy8qIGl0ZW1fbmFtZSAqLzFdKTsKKyAgICB2YXIgayA9IG1hdGNoWy8qIGlraW5kICov
Ml07CisgICAgdmFyIG1hdGNoJDEgPSBrWy8qIGl0ICovMV07CisgICAgc3dpdGNoIChtYXRjaCQx
LnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHU4KDApOworICAgICAgICAg
IHJldHVybiB2dTMyKG1hdGNoJDFbMF1bLyogaXQgKi8xXSk7CisgICAgICBjYXNlIDEgOiAKKyAg
ICAgICAgICB1OCgxKTsKKyAgICAgICAgICByZXR1cm4gdGFibGVfdHlwZShtYXRjaCQxWzBdKTsK
KyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHU4KDIpOworICAgICAgICAgIHJldHVybiBtZW1v
cnlfdHlwZShtYXRjaCQxWzBdKTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHU4KDMpOwor
ICAgICAgICAgIHJldHVybiBnbG9iYWxfdHlwZShtYXRjaCQxWzBdKTsKKyAgICAgIAorICAgIH0K
KyAgfTsKKyAgdmFyIGltcG9ydF9zZWN0aW9uID0gZnVuY3Rpb24gKGltcykgeworICAgIHJldHVy
biBzZWN0aW9uKDIsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2
ZWMoJCRpbXBvcnQsIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgaW1zLCArKGltcyAhPT0gLyog
W10gKi8wKSk7CisgIH07CisgIHZhciBmdW5jID0gZnVuY3Rpb24gKGYpIHsKKyAgICByZXR1cm4g
dnUzMihmWy8qIGl0ICovMV1bLyogZnR5cGUgKi8wXVsvKiBpdCAqLzFdKTsKKyAgfTsKKyAgdmFy
IGZ1bmNfc2VjdGlvbiA9IGZ1bmN0aW9uIChmcykgeworICAgIHJldHVybiBzZWN0aW9uKDMsIGZ1
bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuYywgcGFyYW0p
OworICAgICAgICAgICAgICB9LCBmcywgKyhmcyAhPT0gLyogW10gKi8wKSk7CisgIH07CisgIHZh
ciB0YWJsZSA9IGZ1bmN0aW9uICh0YWIpIHsKKyAgICB2YXIgbWF0Y2ggPSB0YWJbLyogaXQgKi8x
XTsKKyAgICByZXR1cm4gdGFibGVfdHlwZShtYXRjaFsvKiB0dHlwZSAqLzBdKTsKKyAgfTsKKyAg
dmFyIHRhYmxlX3NlY3Rpb24gPSBmdW5jdGlvbiAodGFicykgeworICAgIHJldHVybiBzZWN0aW9u
KDQsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWModGFibGUs
IHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgdGFicywgKyh0YWJzICE9PSAvKiBbXSAqLzApKTsK
KyAgfTsKKyAgdmFyIG1lbW9yeSA9IGZ1bmN0aW9uIChtZW0pIHsKKyAgICB2YXIgbWF0Y2ggPSBt
ZW1bLyogaXQgKi8xXTsKKyAgICByZXR1cm4gbWVtb3J5X3R5cGUobWF0Y2hbLyogbXR5cGUgKi8w
XSk7CisgIH07CisgIHZhciBtZW1vcnlfc2VjdGlvbiA9IGZ1bmN0aW9uIChtZW1zKSB7CisgICAg
cmV0dXJuIHNlY3Rpb24oNSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHZlYyhtZW1vcnksIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgbWVtcywgKyhtZW1zICE9
PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIGdsb2JhbCA9IGZ1bmN0aW9uIChnKSB7CisgICAg
dmFyIG1hdGNoID0gZ1svKiBpdCAqLzFdOworICAgIGdsb2JhbF90eXBlKG1hdGNoWy8qIGd0eXBl
ICovMF0pOworICAgIHJldHVybiAkJGNvbnN0KG1hdGNoWy8qIHZhbHVlICovMV0pOworICB9Owor
ICB2YXIgZ2xvYmFsX3NlY3Rpb24gPSBmdW5jdGlvbiAoZ3MpIHsKKyAgICByZXR1cm4gc2VjdGlv
big2LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmVjKGdsb2Jh
bCwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBncywgKyhncyAhPT0gLyogW10gKi8wKSk7Cisg
IH07CisgIHZhciBleHBvcnRfa2luZCA9IGZ1bmN0aW9uIChrKSB7CisgICAgdmFyIG1hdGNoID0g
a1svKiBpdCAqLzFdOworICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAgIGNhc2UgMCA6IAorICAg
ICAgICAgIHJldHVybiB1OCgwKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiB1
OCgxKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiB1OCgyKTsKKyAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgIHJldHVybiB1OCgzKTsKKyAgICAgIAorICAgIH0KKyAgfTsKKyAg
dmFyICQkZXhwb3J0ID0gZnVuY3Rpb24gKGV4KSB7CisgICAgdmFyIG1hdGNoID0gZXhbLyogaXQg
Ki8xXTsKKyAgICBzdHJpbmcobWF0Y2hbLyogbmFtZSAqLzBdKTsKKyAgICBleHBvcnRfa2luZCht
YXRjaFsvKiBla2luZCAqLzFdKTsKKyAgICByZXR1cm4gdnUzMihtYXRjaFsvKiBpdGVtICovMl1b
LyogaXQgKi8xXSk7CisgIH07CisgIHZhciBleHBvcnRfc2VjdGlvbiA9IGZ1bmN0aW9uIChleHMp
IHsKKyAgICByZXR1cm4gc2VjdGlvbig3LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdmVjKCQkZXhwb3J0LCBwYXJhbSk7CisgICAgICAgICAgICAgIH0sIGV4cywg
KyhleHMgIT09IC8qIFtdICovMCkpOworICB9OworICB2YXIgc3RhcnRfc2VjdGlvbiA9IGZ1bmN0
aW9uICh4bykgeworICAgIHJldHVybiBzZWN0aW9uKDgsIGZ1bmN0aW9uIChwYXJhbSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMihMaWIuT3B0aW9uWy8qIGFwcCAqLzJdLCAkJHZh
ciwgcGFyYW0pOworICAgICAgICAgICAgICB9LCB4bywgKyh4byAhPT0gLyogTm9uZSAqLzApKTsK
KyAgfTsKKyAgdmFyIGNvbXByZXNzID0gZnVuY3Rpb24gKHRzKSB7CisgICAgdmFyIGNvbWJpbmUg
PSBmdW5jdGlvbiAodCwgdHMpIHsKKyAgICAgIGlmICh0cykgeworICAgICAgICB2YXIgbWF0Y2gg
PSB0c1swXTsKKyAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwodCwgbWF0Y2hbMF0pKSB7
CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgICAgICAgIHQsCisgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFd
ICsgMSB8IDAKKyAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICB0c1sxXQor
ICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
cmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgICAgICAgIHQsCisgICAgICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgICB0cworICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAg
ICAgICAgICAgLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICB0LAorICAgICAgICAgICAg
ICAgICAgMQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgdHMKKyAgICAgICAg
ICAgICAgXTsKKyAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBMaXN0LmZvbGRfcmlnaHQoY29t
YmluZSwgdHMsIC8qIFtdICovMCk7CisgIH07CisgIHZhciBsb2NhbCA9IGZ1bmN0aW9uIChwYXJh
bSkgeworICAgIGxlbihwYXJhbVsxXSk7CisgICAgcmV0dXJuIHZhbHVlX3R5cGUocGFyYW1bMF0p
OworICB9OworICB2YXIgY29kZSA9IGZ1bmN0aW9uIChmKSB7CisgICAgdmFyIG1hdGNoID0gZlsv
KiBpdCAqLzFdOworICAgIHZhciBnID0gZ2FwMzIoLyogKCkgKi8wKTsKKyAgICB2YXIgcCA9IEJ1
ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSk7CisgICAgdmVjKGxvY2FsLCBjb21wcmVzcyhtYXRj
aFsvKiBsb2NhbHMgKi8xXSkpOworICAgIExpc3QuaXRlcihpbnN0ciwgbWF0Y2hbLyogYm9keSAq
LzJdKTsKKyAgICB1OCgxMSk7CisgICAgcmV0dXJuIHBhdGNoX2dhcDMyKGcsIEJ1ZmZlci5sZW5n
dGgoc1svKiBidWYgKi8wXSkgLSBwIHwgMCk7CisgIH07CisgIHZhciBjb2RlX3NlY3Rpb24gPSBm
dW5jdGlvbiAoZnMpIHsKKyAgICByZXR1cm4gc2VjdGlvbigxMCwgZnVuY3Rpb24gKHBhcmFtKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYyhjb2RlLCBwYXJhbSk7CisgICAgICAgICAgICAg
IH0sIGZzLCArKGZzICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIHNlZ21lbnQgPSBmdW5j
dGlvbiAoZGF0LCBzZWcpIHsKKyAgICB2YXIgbWF0Y2ggPSBzZWdbLyogaXQgKi8xXTsKKyAgICB2
dTMyKG1hdGNoWy8qIGluZGV4ICovMF1bLyogaXQgKi8xXSk7CisgICAgJCRjb25zdChtYXRjaFsv
KiBvZmZzZXQgKi8xXSk7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKGRhdCwgbWF0Y2hbLyogaW5pdCAq
LzJdKTsKKyAgfTsKKyAgdmFyIHRhYmxlX3NlZ21lbnQgPSBmdW5jdGlvbiAoc2VnKSB7CisgICAg
cmV0dXJuIHNlZ21lbnQoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHZlYygkJHZhciwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBzZWcpOworICB9OworICB2YXIg
ZWxlbV9zZWN0aW9uID0gZnVuY3Rpb24gKGVsZW1zKSB7CisgICAgcmV0dXJuIHNlY3Rpb24oOSwg
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYyh0YWJsZV9zZWdt
ZW50LCBwYXJhbSk7CisgICAgICAgICAgICAgIH0sIGVsZW1zLCArKGVsZW1zICE9PSAvKiBbXSAq
LzApKTsKKyAgfTsKKyAgdmFyIG1lbW9yeV9zZWdtZW50ID0gZnVuY3Rpb24gKHNlZykgeworICAg
IHJldHVybiBzZWdtZW50KHN0cmluZywgc2VnKTsKKyAgfTsKKyAgdmFyIG1vZHVsZV8gPSBmdW5j
dGlvbiAobSkgeworICAgIHUzMigxODM2Mjc4MDE2KTsKKyAgICB1MzIoMTMpOworICAgIHR5cGVf
c2VjdGlvbihtWy8qIGl0ICovMV1bLyogdHlwZXMgKi8wXSk7CisgICAgaW1wb3J0X3NlY3Rpb24o
bVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84XSk7CisgICAgZnVuY19zZWN0aW9uKG1bLyogaXQg
Ki8xXVsvKiBmdW5jcyAqLzRdKTsKKyAgICB0YWJsZV9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiB0
YWJsZXMgKi8yXSk7CisgICAgbWVtb3J5X3NlY3Rpb24obVsvKiBpdCAqLzFdWy8qIG1lbW9yaWVz
ICovM10pOworICAgIGdsb2JhbF9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBnbG9iYWxzICovMV0p
OworICAgIGV4cG9ydF9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBleHBvcnRzICovOV0pOworICAg
IHN0YXJ0X3NlY3Rpb24obVsvKiBpdCAqLzFdWy8qIHN0YXJ0ICovNV0pOworICAgIGVsZW1fc2Vj
dGlvbihtWy8qIGl0ICovMV1bLyogZWxlbXMgKi82XSk7CisgICAgY29kZV9zZWN0aW9uKG1bLyog
aXQgKi8xXVsvKiBmdW5jcyAqLzRdKTsKKyAgICB2YXIgZGF0YSA9IG1bLyogaXQgKi8xXVsvKiBk
YXRhICovN107CisgICAgcmV0dXJuIHNlY3Rpb24oMTEsIGZ1bmN0aW9uIChwYXJhbSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiB2ZWMobWVtb3J5X3NlZ21lbnQsIHBhcmFtKTsKKyAgICAgICAg
ICAgICAgfSwgZGF0YSwgKyhkYXRhICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgbW9kdWxlXyht
KTsKKyAgdmFyIHMkMSA9IHM7CisgIHZhciBicyA9IEJ1ZmZlci50b19ieXRlcyhzJDFbLyogYnVm
ICovMF0pOworICBMaXN0Lml0ZXIoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgIGJzW3BhcmFt
WzBdXSA9IHBhcmFtWzFdOworICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgfSwgcyQx
Wy8qIHBhdGNoZXMgKi8xXVswXSk7CisgIHJldHVybiBCeXRlcy50b19zdHJpbmcoYnMpOworfQor
Cit2YXIgdmVyc2lvbiA9IDEzOworCitleHBvcnRzLkNvZGUgICAgPSBDb2RlJDE7CitleHBvcnRz
LnZlcnNpb24gPSB2ZXJzaW9uOworZXhwb3J0cy5lbmNvZGUgID0gZW5jb2RlOworLyogQ29kZSBO
b3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGVuY29kZS5qcyAvLy8vLy8vLwor
wqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydlcnJvciddID0g
ZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Yg
ZXJyb3IuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAx
LjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgU291cmNl
ICAgICAgICAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgPSBy
ZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9u
IE1ha2UoKSB7CisgIHZhciAkJEVycm9yID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiRXJyb3Iu
TWFrZSgqKS5FcnJvciIpOworICB2YXIgd2FybiA9IGZ1bmN0aW9uIChhdCwgbSkgeworICAgIGNv
bnNvbGUuZXJyb3IoU291cmNlLnN0cmluZ19vZl9yZWdpb24oYXQpICsgKCI6IHdhcm5pbmc6ICIg
KyBtKSk7CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfTsKKyAgdmFyIGVycm9yID0gZnVuY3Rp
b24gKGF0LCBtKSB7CisgICAgdGhyb3cgWworICAgICAgICAgICQkRXJyb3IsCisgICAgICAgICAg
YXQsCisgICAgICAgICAgbQorICAgICAgICBdOworICB9OworICByZXR1cm4gLyogbW9kdWxlICov
WworICAgICAgICAgIC8qIEVycm9yICovJCRFcnJvciwKKyAgICAgICAgICAvKiB3YXJuICovd2Fy
biwKKyAgICAgICAgICAvKiBlcnJvciAqL2Vycm9yCisgICAgICAgIF07Cit9CisKK2V4cG9ydHMu
TWFrZSA9IE1ha2U7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGVycm9y
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ2YzMiddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2YgZjMyLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBU
IFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIEJsb2NrICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2
YXIgQ3VycnkgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3Zh
ciBGbG9hdCAgICAgICA9IHJlcXVpcmUoIi4vZmxvYXQiKTsKK3ZhciBJbnQzMiAgICAgICA9IHJl
cXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9pbnQzMiIpOwordmFyIFByaW50ZiAgICAgID0gcmVx
dWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3ByaW50ZiIpOwordmFyIENhbWxfZmxvYXQgID0gcmVx
dWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZmxvYXQiKTsKK3ZhciBDYW1sX2Zvcm1hdCA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zvcm1hdCIpOworCitmdW5jdGlvbiBw
cmludF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzKGEpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50
Zi5zcHJpbnRmKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEludDMyICovQmxv
Y2suX18oNSwgWworICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwKKyAgICAgICAg
ICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3Jt
YXQgKi8wCisgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgIiVseCIK
KyAgICAgICAgICAgICAgICBdKSwgSW50MzIuYWJzKDIxMzkwOTUwNDAgXiBhKSk7Cit9CisKK3Zh
ciBpbmNsdWRlID0gRmxvYXQuTWFrZSgvKiBtb2R1bGUgKi9bCisgICAgICAvKiBwb3NfbmFuICov
MjE0MzI4OTM0NCwKKyAgICAgIC8qIG5lZ19uYW4gKi8tNDE5NDMwNCwKKyAgICAgIC8qIGNhbWxf
aW50MzJfYml0c19vZl9mbG9hdCAqL0NhbWxfZmxvYXQuY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0
LAorICAgICAgLyogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICovQ2FtbF9mbG9hdC5jYW1sX2lu
dDMyX2Zsb2F0X29mX2JpdHMsCisgICAgICAvKiBjYW1sX2ludDMyX29mX3N0cmluZyAqL0NhbWxf
Zm9ybWF0LmNhbWxfaW50MzJfb2Zfc3RyaW5nLAorICAgICAgLyogdG9fc3RyaW5nICovSW50MzIu
dG9fc3RyaW5nLAorICAgICAgLyogJWludDMyX2FuZCAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEp
IHsKKyAgICAgICAgcmV0dXJuIHByaW0gJiBwcmltJDE7CisgICAgICB9LAorICAgICAgLyogJWlu
dDMyX29yICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSB8
IHByaW0kMTsKKyAgICAgIH0sCisgICAgICAvKiAlaW50MzJfeG9yICovZnVuY3Rpb24gKHByaW0s
IHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSBeIHByaW0kMTsKKyAgICAgIH0sCisgICAg
ICAvKiBtaW5faW50ICovSW50MzIubWluX2ludCwKKyAgICAgIC8qIG1heF9pbnQgKi9JbnQzMi5t
YXhfaW50LAorICAgICAgLyogemVybyAqL0ludDMyLnplcm8sCisgICAgICAvKiBiYXJlX25hbiAq
LzIxMzkwOTUwNDAsCisgICAgICAvKiBwcmludF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzICovcHJp
bnRfbmFuX3NpZ25pZmljYW5kX2RpZ2l0cworICAgIF0pOworCit2YXIgcG9zX25hbiA9IGluY2x1
ZGVbMF07CisKK3ZhciBuZWdfbmFuID0gaW5jbHVkZVsxXTsKKwordmFyIG9mX2Zsb2F0ID0gaW5j
bHVkZVsyXTsKKwordmFyIHRvX2Zsb2F0ID0gaW5jbHVkZVszXTsKKwordmFyIG9mX3N0cmluZyA9
IGluY2x1ZGVbNF07CisKK3ZhciB0b19zdHJpbmcgPSBpbmNsdWRlWzVdOworCit2YXIgb2ZfYml0
cyA9IGluY2x1ZGVbNl07CisKK3ZhciB0b19iaXRzID0gaW5jbHVkZVs3XTsKKwordmFyIGFkZCA9
IGluY2x1ZGVbOF07CisKK3ZhciBzdWIgPSBpbmNsdWRlWzldOworCit2YXIgbXVsID0gaW5jbHVk
ZVsxMF07CisKK3ZhciBkaXYgPSBpbmNsdWRlWzExXTsKKwordmFyIHNxcnQgPSBpbmNsdWRlWzEy
XTsKKwordmFyIG1pbiA9IGluY2x1ZGVbMTNdOworCit2YXIgbWF4ID0gaW5jbHVkZVsxNF07CisK
K3ZhciBjZWlsID0gaW5jbHVkZVsxNV07CisKK3ZhciBmbG9vciA9IGluY2x1ZGVbMTZdOworCit2
YXIgdHJ1bmMgPSBpbmNsdWRlWzE3XTsKKwordmFyIG5lYXJlc3QgPSBpbmNsdWRlWzE4XTsKKwor
dmFyIGFicyA9IGluY2x1ZGVbMTldOworCit2YXIgbmVnID0gaW5jbHVkZVsyMF07CisKK3ZhciBj
b3B5c2lnbiA9IGluY2x1ZGVbMjFdOworCit2YXIgZXEgPSBpbmNsdWRlWzIyXTsKKwordmFyIG5l
ID0gaW5jbHVkZVsyM107CisKK3ZhciBsdCA9IGluY2x1ZGVbMjRdOworCit2YXIgbGUgPSBpbmNs
dWRlWzI1XTsKKwordmFyIGd0ID0gaW5jbHVkZVsyNl07CisKK3ZhciBnZSA9IGluY2x1ZGVbMjdd
OworCit2YXIgemVybyA9IGluY2x1ZGVbMjhdOworCitleHBvcnRzLnBvc19uYW4gICA9IHBvc19u
YW47CitleHBvcnRzLm5lZ19uYW4gICA9IG5lZ19uYW47CitleHBvcnRzLm9mX2Zsb2F0ICA9IG9m
X2Zsb2F0OworZXhwb3J0cy50b19mbG9hdCAgPSB0b19mbG9hdDsKK2V4cG9ydHMub2Zfc3RyaW5n
ID0gb2Zfc3RyaW5nOworZXhwb3J0cy50b19zdHJpbmcgPSB0b19zdHJpbmc7CitleHBvcnRzLm9m
X2JpdHMgICA9IG9mX2JpdHM7CitleHBvcnRzLnRvX2JpdHMgICA9IHRvX2JpdHM7CitleHBvcnRz
LmFkZCAgICAgICA9IGFkZDsKK2V4cG9ydHMuc3ViICAgICAgID0gc3ViOworZXhwb3J0cy5tdWwg
ICAgICAgPSBtdWw7CitleHBvcnRzLmRpdiAgICAgICA9IGRpdjsKK2V4cG9ydHMuc3FydCAgICAg
ID0gc3FydDsKK2V4cG9ydHMubWluICAgICAgID0gbWluOworZXhwb3J0cy5tYXggICAgICAgPSBt
YXg7CitleHBvcnRzLmNlaWwgICAgICA9IGNlaWw7CitleHBvcnRzLmZsb29yICAgICA9IGZsb29y
OworZXhwb3J0cy50cnVuYyAgICAgPSB0cnVuYzsKK2V4cG9ydHMubmVhcmVzdCAgID0gbmVhcmVz
dDsKK2V4cG9ydHMuYWJzICAgICAgID0gYWJzOworZXhwb3J0cy5uZWcgICAgICAgPSBuZWc7Citl
eHBvcnRzLmNvcHlzaWduICA9IGNvcHlzaWduOworZXhwb3J0cy5lcSAgICAgICAgPSBlcTsKK2V4
cG9ydHMubmUgICAgICAgID0gbmU7CitleHBvcnRzLmx0ICAgICAgICA9IGx0OworZXhwb3J0cy5s
ZSAgICAgICAgPSBsZTsKK2V4cG9ydHMuZ3QgICAgICAgID0gZ3Q7CitleHBvcnRzLmdlICAgICAg
ICA9IGdlOworZXhwb3J0cy56ZXJvICAgICAgPSB6ZXJvOworLyogaW5jbHVkZSBOb3QgYSBwdXJl
IG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGYzMi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJu
IGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydmNjQnXSA9IGZ1bmN0aW9uKCkgewor
wqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGY2NC5qcyAvLy8vLy8v
LworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVE
SVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBCbG9jayAgICAgICA9IHJlcXVpcmUo
ImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFyIEN1cnJ5ICAgICAgID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2YXIgRmxvYXQgICAgICAgPSByZXF1aXJlKCIu
L2Zsb2F0Iik7Cit2YXIgSW50NjQgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
aW50NjQiKTsKK3ZhciBQcmludGYgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9w
cmludGYiKTsKK3ZhciBDYW1sX2ludDY0ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9j
YW1sX2ludDY0Iik7Cit2YXIgQ2FtbF9mb3JtYXQgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvY2FtbF9mb3JtYXQiKTsKKwordmFyIGJhcmVfbmFuID0gLyogaW50NjQgKi9bCisgIC8qIGhp
ICovMjE0NjQzNTA3MiwKKyAgLyogbG8gKi8wCitdOworCitmdW5jdGlvbiBwcmludF9uYW5fc2ln
bmlmaWNhbmRfZGlnaXRzKGEpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50Zi5zcHJpbnRmKC8q
IEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEludDY0ICovQmxvY2suX18oNywgWwor
ICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwKKyAgICAgICAgICAgICAgICAgICAg
ICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNp
b24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAg
ICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgIiVMeCIKKyAgICAgICAgICAg
ICAgICBdKSwgSW50NjQuYWJzKC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkg
Ki8vKiBoaSAqLzIxNDY0MzUwNzIgXiBhWzBdLAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8o
KC8qIGxvICovMCBeIGFbMV0pID4+PiAwKQorICAgICAgICAgICAgICAgIF0pKTsKK30KKwordmFy
IGluY2x1ZGUgPSBGbG9hdC5NYWtlKC8qIG1vZHVsZSAqL1sKKyAgICAgIC8qIHBvc19uYW4gOiBp
bnQ2NCAqL1sKKyAgICAgICAgLyogaGkgKi8yMTQ2OTU5MzYwLAorICAgICAgICAvKiBsbyAqLzAK
KyAgICAgIF0sCisgICAgICAvKiBuZWdfbmFuIDogaW50NjQgKi9bCisgICAgICAgIC8qIGhpICov
LTUyNDI4OCwKKyAgICAgICAgLyogbG8gKi8wCisgICAgICBdLAorICAgICAgLyogY2FtbF9pbnQ2
NF9iaXRzX29mX2Zsb2F0ICovQ2FtbF9pbnQ2NC5iaXRzX29mX2Zsb2F0LAorICAgICAgLyogY2Ft
bF9pbnQ2NF9mbG9hdF9vZl9iaXRzICovQ2FtbF9pbnQ2NC5mbG9hdF9vZl9iaXRzLAorICAgICAg
LyogY2FtbF9pbnQ2NF9vZl9zdHJpbmcgKi9DYW1sX2Zvcm1hdC5jYW1sX2ludDY0X29mX3N0cmlu
ZywKKyAgICAgIC8qIHRvX3N0cmluZyAqL0ludDY0LnRvX3N0cmluZywKKyAgICAgIC8qICVpbnQ2
NF9hbmQgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAvKiBpbnQ2
NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gJiBwcmltJDFbMF0sCisgICAg
ICAgICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gJiBwcmltJDFbMV0pID4+PiAwKQorICAgICAg
ICAgICAgICBdOworICAgICAgfSwKKyAgICAgIC8qICVpbnQ2NF9vciAqL2Z1bmN0aW9uIChwcmlt
LCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgICAg
IC8qIGhpICovcHJpbVswXSB8IHByaW0kMVswXSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLygo
cHJpbVsxXSB8IHByaW0kMVsxXSkgPj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9LAor
ICAgICAgLyogJWludDY0X3hvciAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAg
cmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgIC8qIGhpICovcHJpbVswXSBeIHBy
aW0kMVswXSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLygocHJpbVsxXSBeIHByaW0kMVsxXSkg
Pj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9LAorICAgICAgLyogbWluX2ludCAqL0lu
dDY0Lm1pbl9pbnQsCisgICAgICAvKiBtYXhfaW50ICovSW50NjQubWF4X2ludCwKKyAgICAgIC8q
IHplcm8gKi9JbnQ2NC56ZXJvLAorICAgICAgLyogYmFyZV9uYW4gKi9iYXJlX25hbiwKKyAgICAg
IC8qIHByaW50X25hbl9zaWduaWZpY2FuZF9kaWdpdHMgKi9wcmludF9uYW5fc2lnbmlmaWNhbmRf
ZGlnaXRzCisgICAgXSk7CisKK3ZhciBwb3NfbmFuID0gaW5jbHVkZVswXTsKKwordmFyIG5lZ19u
YW4gPSBpbmNsdWRlWzFdOworCit2YXIgb2ZfZmxvYXQgPSBpbmNsdWRlWzJdOworCit2YXIgdG9f
ZmxvYXQgPSBpbmNsdWRlWzNdOworCit2YXIgb2Zfc3RyaW5nID0gaW5jbHVkZVs0XTsKKwordmFy
IHRvX3N0cmluZyA9IGluY2x1ZGVbNV07CisKK3ZhciBvZl9iaXRzID0gaW5jbHVkZVs2XTsKKwor
dmFyIHRvX2JpdHMgPSBpbmNsdWRlWzddOworCit2YXIgYWRkID0gaW5jbHVkZVs4XTsKKwordmFy
IHN1YiA9IGluY2x1ZGVbOV07CisKK3ZhciBtdWwgPSBpbmNsdWRlWzEwXTsKKwordmFyIGRpdiA9
IGluY2x1ZGVbMTFdOworCit2YXIgc3FydCA9IGluY2x1ZGVbMTJdOworCit2YXIgbWluID0gaW5j
bHVkZVsxM107CisKK3ZhciBtYXggPSBpbmNsdWRlWzE0XTsKKwordmFyIGNlaWwgPSBpbmNsdWRl
WzE1XTsKKwordmFyIGZsb29yID0gaW5jbHVkZVsxNl07CisKK3ZhciB0cnVuYyA9IGluY2x1ZGVb
MTddOworCit2YXIgbmVhcmVzdCA9IGluY2x1ZGVbMThdOworCit2YXIgYWJzID0gaW5jbHVkZVsx
OV07CisKK3ZhciBuZWcgPSBpbmNsdWRlWzIwXTsKKwordmFyIGNvcHlzaWduID0gaW5jbHVkZVsy
MV07CisKK3ZhciBlcSA9IGluY2x1ZGVbMjJdOworCit2YXIgbmUgPSBpbmNsdWRlWzIzXTsKKwor
dmFyIGx0ID0gaW5jbHVkZVsyNF07CisKK3ZhciBsZSA9IGluY2x1ZGVbMjVdOworCit2YXIgZ3Qg
PSBpbmNsdWRlWzI2XTsKKwordmFyIGdlID0gaW5jbHVkZVsyN107CisKK3ZhciB6ZXJvID0gaW5j
bHVkZVsyOF07CisKK2V4cG9ydHMucG9zX25hbiAgID0gcG9zX25hbjsKK2V4cG9ydHMubmVnX25h
biAgID0gbmVnX25hbjsKK2V4cG9ydHMub2ZfZmxvYXQgID0gb2ZfZmxvYXQ7CitleHBvcnRzLnRv
X2Zsb2F0ICA9IHRvX2Zsb2F0OworZXhwb3J0cy5vZl9zdHJpbmcgPSBvZl9zdHJpbmc7CitleHBv
cnRzLnRvX3N0cmluZyA9IHRvX3N0cmluZzsKK2V4cG9ydHMub2ZfYml0cyAgID0gb2ZfYml0czsK
K2V4cG9ydHMudG9fYml0cyAgID0gdG9fYml0czsKK2V4cG9ydHMuYWRkICAgICAgID0gYWRkOwor
ZXhwb3J0cy5zdWIgICAgICAgPSBzdWI7CitleHBvcnRzLm11bCAgICAgICA9IG11bDsKK2V4cG9y
dHMuZGl2ICAgICAgID0gZGl2OworZXhwb3J0cy5zcXJ0ICAgICAgPSBzcXJ0OworZXhwb3J0cy5t
aW4gICAgICAgPSBtaW47CitleHBvcnRzLm1heCAgICAgICA9IG1heDsKK2V4cG9ydHMuY2VpbCAg
ICAgID0gY2VpbDsKK2V4cG9ydHMuZmxvb3IgICAgID0gZmxvb3I7CitleHBvcnRzLnRydW5jICAg
ICA9IHRydW5jOworZXhwb3J0cy5uZWFyZXN0ICAgPSBuZWFyZXN0OworZXhwb3J0cy5hYnMgICAg
ICAgPSBhYnM7CitleHBvcnRzLm5lZyAgICAgICA9IG5lZzsKK2V4cG9ydHMuY29weXNpZ24gID0g
Y29weXNpZ247CitleHBvcnRzLmVxICAgICAgICA9IGVxOworZXhwb3J0cy5uZSAgICAgICAgPSBu
ZTsKK2V4cG9ydHMubHQgICAgICAgID0gbHQ7CitleHBvcnRzLmxlICAgICAgICA9IGxlOworZXhw
b3J0cy5ndCAgICAgICAgPSBndDsKK2V4cG9ydHMuZ2UgICAgICAgID0gZ2U7CitleHBvcnRzLnpl
cm8gICAgICA9IHplcm87CisvKiBpbmNsdWRlIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8v
LyBlbmQgb2YgZjY0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisK
KworICBfcmVnaXN0cnlbJ2Zsb2F0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRz
ID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBmbG9hdC5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVk
IGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisn
dXNlIHN0cmljdCc7CisKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyICQkU3RyaW5nICAgICAgICAgICAgICAgID0g
cmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwordmFyIENhbWxfb2JqICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIg
UGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVy
dmFzaXZlcyIpOwordmFyIENhbWxfZm9ybWF0ICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxh
dGZvcm0vbGliL2pzL2NhbWxfZm9ybWF0Iik7Cit2YXIgQ2FtbF9zdHJpbmcgICAgICAgICAgICAg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBNYWtlKFJlcCkgeworICB2YXIgcG9zX25hbiA9
IFJlcFsvKiBwb3NfbmFuICovMF07CisgIHZhciBuZWdfbmFuID0gUmVwWy8qIG5lZ19uYW4gKi8x
XTsKKyAgdmFyIGJhcmVfbmFuID0gUmVwWy8qIGJhcmVfbmFuICovMTJdOworICB2YXIgb2ZfZmxv
YXQgPSBSZXBbLyogYml0c19vZl9mbG9hdCAqLzJdOworICB2YXIgdG9fZmxvYXQgPSBSZXBbLyog
ZmxvYXRfb2ZfYml0cyAqLzNdOworICB2YXIgb2ZfYml0cyA9IGZ1bmN0aW9uICh4KSB7CisgICAg
cmV0dXJuIHg7CisgIH07CisgIHZhciB0b19iaXRzID0gZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1
cm4geDsKKyAgfTsKKyAgdmFyIGlzX25hbiA9IGZ1bmN0aW9uICh4KSB7CisgICAgdmFyIHhmID0g
Q3VycnkuXzEoUmVwWy8qIGZsb2F0X29mX2JpdHMgKi8zXSwgeCk7CisgICAgcmV0dXJuICsoeGYg
IT09IHhmKTsKKyAgfTsKKyAgdmFyIGNhbm9uaWNhbGl6ZV9uYW4gPSBmdW5jdGlvbiAoeCkgewor
ICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9nb3IgKi83XSwgeCwgUmVwWy8qIHBvc19uYW4g
Ki8wXSk7CisgIH07CisgIHZhciBkZXRlcm1pbmVfYmluYXJ5X25hbiA9IGZ1bmN0aW9uICh4LCB5
KSB7CisgICAgcmV0dXJuIGNhbm9uaWNhbGl6ZV9uYW4oaXNfbmFuKHgpID8geCA6ICgKKyAgICAg
ICAgICAgICAgICAgIGlzX25hbih5KSA/IHkgOiBSZXBbLyogcG9zX25hbiAqLzBdCisgICAgICAg
ICAgICAgICAgKSk7CisgIH07CisgIHZhciBkZXRlcm1pbmVfdW5hcnlfbmFuID0gZnVuY3Rpb24g
KHgpIHsKKyAgICByZXR1cm4gY2Fub25pY2FsaXplX25hbihpc19uYW4oeCkgPyB4IDogUmVwWy8q
IHBvc19uYW4gKi8wXSk7CisgIH07CisgIHZhciBiaW5hcnkgPSBmdW5jdGlvbiAoeCwgb3AsIHkp
IHsKKyAgICB2YXIgeGYgPSBDdXJyeS5fMSh0b19mbG9hdCwgeCk7CisgICAgdmFyIHlmID0gQ3Vy
cnkuXzEodG9fZmxvYXQsIHkpOworICAgIHZhciB0ID0gQ3VycnkuXzIob3AsIHhmLCB5Zik7Cisg
ICAgaWYgKHQgPT09IHQpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShvZl9mbG9hdCwgdCk7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGRldGVybWluZV9iaW5hcnlfbmFuKHgsIHkp
OworICAgIH0KKyAgfTsKKyAgdmFyIHVuYXJ5ID0gZnVuY3Rpb24gKG9wLCB4KSB7CisgICAgdmFy
IHQgPSBDdXJyeS5fMShvcCwgQ3VycnkuXzEodG9fZmxvYXQsIHgpKTsKKyAgICBpZiAodCA9PT0g
dCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8xKG9mX2Zsb2F0LCB0KTsKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gZGV0ZXJtaW5lX3VuYXJ5X25hbih4KTsKKyAgICB9CisgIH07Cisg
IHZhciB6ZXJvID0gQ3VycnkuXzEob2ZfZmxvYXQsIDAuMCk7CisgIHZhciBhZGQgPSBmdW5jdGlv
biAoeCwgeSkgeworICAgIHJldHVybiBiaW5hcnkoeCwgZnVuY3Rpb24gKHByaW0sIHByaW0kMSkg
eworICAgICAgICAgICAgICAgIHJldHVybiBwcmltICsgcHJpbSQxOworICAgICAgICAgICAgICB9
LCB5KTsKKyAgfTsKKyAgdmFyIHN1YiA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGJp
bmFyeSh4LCBmdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHByaW0gLSBwcmltJDE7CisgICAgICAgICAgICAgIH0sIHkpOworICB9OworICB2YXIgbXVsID0g
ZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gYmluYXJ5KHgsIGZ1bmN0aW9uIChwcmltLCBw
cmltJDEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJpbSAqIHByaW0kMTsKKyAgICAgICAg
ICAgICAgfSwgeSk7CisgIH07CisgIHZhciBkaXYgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJl
dHVybiBiaW5hcnkoeCwgZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICAgICAgICAg
IHJldHVybiBwcmltIC8gcHJpbSQxOworICAgICAgICAgICAgICB9LCB5KTsKKyAgfTsKKyAgdmFy
IHNxcnQgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB1bmFyeShmdW5jdGlvbiAocHJpbSkg
eworICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQocHJpbSk7CisgICAgICAgICAgICAg
IH0sIHgpOworICB9OworICB2YXIgY2VpbCA9IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0dXJuIHVu
YXJ5KGZ1bmN0aW9uIChwcmltKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbChw
cmltKTsKKyAgICAgICAgICAgICAgfSwgeCk7CisgIH07CisgIHZhciBmbG9vciA9IGZ1bmN0aW9u
ICh4KSB7CisgICAgcmV0dXJuIHVuYXJ5KGZ1bmN0aW9uIChwcmltKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE1hdGguZmxvb3IocHJpbSk7CisgICAgICAgICAgICAgIH0sIHgpOworICB9Owor
ICB2YXIgdHJ1bmMgPSBmdW5jdGlvbiAoeCkgeworICAgIHZhciB4ZiA9IEN1cnJ5Ll8xKHRvX2Zs
b2F0LCB4KTsKKyAgICBpZiAoeGYgPT09IDAuMCkgeworICAgICAgcmV0dXJuIHg7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgdmFyIGYgPSB4ZiA8IDAuMCA/IE1hdGguY2VpbCh4ZikgOiBNYXRo
LmZsb29yKHhmKTsKKyAgICAgIHZhciByZXN1bHQgPSBDdXJyeS5fMShvZl9mbG9hdCwgZik7Cisg
ICAgICBpZiAoaXNfbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgcmV0dXJuIGRldGVybWluZV91bmFy
eV9uYW4ocmVzdWx0KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgfQorICAgIH0KKyAgfTsKKyAgdmFyIG5lYXJlc3QgPSBmdW5jdGlvbiAoeCkg
eworICAgIHZhciB4ZiA9IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KTsKKyAgICBpZiAoeGYgPT09IDAu
MCkgeworICAgICAgcmV0dXJuIHg7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIHUgPSBN
YXRoLmNlaWwoeGYpOworICAgICAgdmFyIGQgPSBNYXRoLmZsb29yKHhmKTsKKyAgICAgIHZhciB1
bSA9IE1hdGguYWJzKHhmIC0gdSk7CisgICAgICB2YXIgZG0gPSBNYXRoLmFicyh4ZiAtIGQpOwor
ICAgICAgdmFyIGggPSB1IC8gMjsKKyAgICAgIHZhciB1X29yX2QgPSArKHVtIDwgZG0gfHwgdW0g
PT09IGRtICYmIE1hdGguZmxvb3IoaCkgPT09IGgpOworICAgICAgdmFyIGYgPSB1X29yX2QgPyB1
IDogZDsKKyAgICAgIHZhciByZXN1bHQgPSBDdXJyeS5fMShvZl9mbG9hdCwgZik7CisgICAgICBp
ZiAoaXNfbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgcmV0dXJuIGRldGVybWluZV91bmFyeV9uYW4o
cmVzdWx0KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgfQorICAgIH0KKyAgfTsKKyAgdmFyIG1pbiA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAg
dmFyIHhmID0gQ3VycnkuXzEodG9fZmxvYXQsIHgpOworICAgIHZhciB5ZiA9IEN1cnJ5Ll8xKHRv
X2Zsb2F0LCB5KTsKKyAgICBpZiAoeGYgPT09IHlmKSB7CisgICAgICByZXR1cm4gQ3VycnkuXzIo
UmVwWy8qIGxvZ29yICovN10sIHgsIHkpOworICAgIH0KKyAgICBlbHNlIGlmICh4ZiA8IHlmKSB7
CisgICAgICByZXR1cm4geDsKKyAgICB9CisgICAgZWxzZSBpZiAoeGYgPiB5ZikgeworICAgICAg
cmV0dXJuIHk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGRldGVybWluZV9iaW5h
cnlfbmFuKHgsIHkpOworICAgIH0KKyAgfTsKKyAgdmFyIG1heCA9IGZ1bmN0aW9uICh4LCB5KSB7
CisgICAgdmFyIHhmID0gQ3VycnkuXzEodG9fZmxvYXQsIHgpOworICAgIHZhciB5ZiA9IEN1cnJ5
Ll8xKHRvX2Zsb2F0LCB5KTsKKyAgICBpZiAoeGYgPT09IHlmKSB7CisgICAgICByZXR1cm4gQ3Vy
cnkuXzIoUmVwWy8qIGxvZ2FuZCAqLzZdLCB4LCB5KTsKKyAgICB9CisgICAgZWxzZSBpZiAoeGYg
PiB5ZikgeworICAgICAgcmV0dXJuIHg7CisgICAgfQorICAgIGVsc2UgaWYgKHhmIDwgeWYpIHsK
KyAgICAgIHJldHVybiB5OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBkZXRlcm1p
bmVfYmluYXJ5X25hbih4LCB5KTsKKyAgICB9CisgIH07CisgIHZhciBhYnMgPSBmdW5jdGlvbiAo
eCkgeworICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9nYW5kICovNl0sIHgsIFJlcFsvKiBt
YXhfaW50ICovMTBdKTsKKyAgfTsKKyAgdmFyIG5lZyA9IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0
dXJuIEN1cnJ5Ll8yKFJlcFsvKiBsb2d4b3IgKi84XSwgeCwgUmVwWy8qIG1pbl9pbnQgKi85XSk7
CisgIH07CisgIHZhciBjb3B5c2lnbiA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIEN1
cnJ5Ll8yKFJlcFsvKiBsb2dvciAqLzddLCBhYnMoeCksIEN1cnJ5Ll8yKFJlcFsvKiBsb2dhbmQg
Ki82XSwgeSwgUmVwWy8qIG1pbl9pbnQgKi85XSkpOworICB9OworICB2YXIgZXEgPSBmdW5jdGlv
biAoeCwgeSkgeworICAgIHJldHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA9PT0gQ3Vycnku
XzEodG9fZmxvYXQsIHkpKTsKKyAgfTsKKyAgdmFyIG5lID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAg
ICByZXR1cm4gKyhDdXJyeS5fMSh0b19mbG9hdCwgeCkgIT09IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB5
KSk7CisgIH07CisgIHZhciBsdCA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuICsoQ3Vy
cnkuXzEodG9fZmxvYXQsIHgpIDwgQ3VycnkuXzEodG9fZmxvYXQsIHkpKTsKKyAgfTsKKyAgdmFy
IGd0ID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gKyhDdXJyeS5fMSh0b19mbG9hdCwg
eCkgPiBDdXJyeS5fMSh0b19mbG9hdCwgeSkpOworICB9OworICB2YXIgbGUgPSBmdW5jdGlvbiAo
eCwgeSkgeworICAgIHJldHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA8PSBDdXJyeS5fMSh0
b19mbG9hdCwgeSkpOworICB9OworICB2YXIgZ2UgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJl
dHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA+PSBDdXJyeS5fMSh0b19mbG9hdCwgeSkpOwor
ICB9OworICB2YXIgb2Zfc2lnbmxlc3Nfc3RyaW5nID0gZnVuY3Rpb24gKHgsIGxlbikgeworICAg
IGlmICh4ICE9PSAibmFuIiAmJiBsZW4gPiA2ICYmICQkU3RyaW5nLnN1Yih4LCAwLCA2KSA9PT0g
Im5hbjoweCIpIHsKKyAgICAgIHZhciBzID0gQ3VycnkuXzEoUmVwWy8qIG9mX3N0cmluZyAqLzRd
LCAkJFN0cmluZy5zdWIoeCwgNCwgbGVuIC0gNCB8IDApKTsKKyAgICAgIGlmIChDYW1sX29iai5j
YW1sX2VxdWFsKHMsIFJlcFsvKiB6ZXJvICovMTFdKSkgeworICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICAgICAg
ICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBiZSB6ZXJvIgorICAgICAgICAgICAgXTsKKyAgICAgIH0K
KyAgICAgIGVsc2UgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoQ3VycnkuXzIoUmVwWy8qIGxv
Z2FuZCAqLzZdLCBzLCBiYXJlX25hbiksIFJlcFsvKiB6ZXJvICovMTFdKSkgeworICAgICAgICB0
aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisg
ICAgICAgICAgICAgICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBvdmVybGFwIHdpdGggZXhwb25lbnQg
Yml0cyIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNlIGlmIChDYW1sX29iai5j
YW1sX2xlc3N0aGFuKHMsIFJlcFsvKiB6ZXJvICovMTFdKSkgeworICAgICAgICB0aHJvdyBbCisg
ICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICAg
ICAgICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBvdmVybGFwIHdpdGggc2lnbiBiaXQiCisgICAgICAg
ICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBDdXJyeS5fMihS
ZXBbLyogbG9nb3IgKi83XSwgcywgYmFyZV9uYW4pOworICAgICAgfQorICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShvZl9mbG9hdCwgQ2FtbF9mb3JtYXQuY2FtbF9mbG9h
dF9vZl9zdHJpbmcoeCkpOworICAgIH0KKyAgfTsKKyAgdmFyIG9mX3N0cmluZyA9IGZ1bmN0aW9u
ICh4KSB7CisgICAgdmFyIGxlbiA9IHgubGVuZ3RoOworICAgIGlmIChsZW4gPiAwICYmIENhbWxf
c3RyaW5nLmdldCh4LCAwKSA9PT0gLyogIi0iICovNDUpIHsKKyAgICAgIHJldHVybiBuZWcob2Zf
c2lnbmxlc3Nfc3RyaW5nKCQkU3RyaW5nLnN1Yih4LCAxLCBsZW4gLSAxIHwgMCksIGxlbiAtIDEg
fCAwKSk7CisgICAgfQorICAgIGVsc2UgaWYgKGxlbiA+IDAgJiYgQ2FtbF9zdHJpbmcuZ2V0KHgs
IDApID09PSAvKiAiKyIgKi80MykgeworICAgICAgcmV0dXJuIG9mX3NpZ25sZXNzX3N0cmluZygk
JFN0cmluZy5zdWIoeCwgMSwgbGVuIC0gMSB8IDApLCBsZW4gLSAxIHwgMCk7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgcmV0dXJuIG9mX3NpZ25sZXNzX3N0cmluZyh4LCBsZW4pOworICAgIH0K
KyAgfTsKKyAgdmFyIHRvX3N0cmluZyA9IGZ1bmN0aW9uICh4KSB7CisgICAgdmFyIGEgPSBhYnMo
eCk7CisgICAgcmV0dXJuICgKKyAgICAgICAgICAgIENhbWxfb2JqLmNhbWxfbGVzc3RoYW4oeCwg
UmVwWy8qIHplcm8gKi8xMV0pID8gIi0iIDogIiIKKyAgICAgICAgICApICsgKAorICAgICAgICAg
ICAgaXNfbmFuKGEpID8gIm5hbjoweCIgKyBDdXJyeS5fMShSZXBbLyogcHJpbnRfbmFuX3NpZ25p
ZmljYW5kX2RpZ2l0cyAqLzEzXSwgYSkgOiBQZXJ2YXNpdmVzLnN0cmluZ19vZl9mbG9hdChDdXJy
eS5fMSh0b19mbG9hdCwgYSkpCisgICAgICAgICAgKTsKKyAgfTsKKyAgcmV0dXJuIC8qIG1vZHVs
ZSAqL1sKKyAgICAgICAgICAvKiBwb3NfbmFuICovcG9zX25hbiwKKyAgICAgICAgICAvKiBuZWdf
bmFuICovbmVnX25hbiwKKyAgICAgICAgICAvKiBvZl9mbG9hdCAqL29mX2Zsb2F0LAorICAgICAg
ICAgIC8qIHRvX2Zsb2F0ICovdG9fZmxvYXQsCisgICAgICAgICAgLyogb2Zfc3RyaW5nICovb2Zf
c3RyaW5nLAorICAgICAgICAgIC8qIHRvX3N0cmluZyAqL3RvX3N0cmluZywKKyAgICAgICAgICAv
KiBvZl9iaXRzICovb2ZfYml0cywKKyAgICAgICAgICAvKiB0b19iaXRzICovdG9fYml0cywKKyAg
ICAgICAgICAvKiBhZGQgKi9hZGQsCisgICAgICAgICAgLyogc3ViICovc3ViLAorICAgICAgICAg
IC8qIG11bCAqL211bCwKKyAgICAgICAgICAvKiBkaXYgKi9kaXYsCisgICAgICAgICAgLyogc3Fy
dCAqL3NxcnQsCisgICAgICAgICAgLyogbWluICovbWluLAorICAgICAgICAgIC8qIG1heCAqL21h
eCwKKyAgICAgICAgICAvKiBjZWlsICovY2VpbCwKKyAgICAgICAgICAvKiBmbG9vciAqL2Zsb29y
LAorICAgICAgICAgIC8qIHRydW5jICovdHJ1bmMsCisgICAgICAgICAgLyogbmVhcmVzdCAqL25l
YXJlc3QsCisgICAgICAgICAgLyogYWJzICovYWJzLAorICAgICAgICAgIC8qIG5lZyAqL25lZywK
KyAgICAgICAgICAvKiBjb3B5c2lnbiAqL2NvcHlzaWduLAorICAgICAgICAgIC8qIGVxICovZXEs
CisgICAgICAgICAgLyogbmUgKi9uZSwKKyAgICAgICAgICAvKiBsdCAqL2x0LAorICAgICAgICAg
IC8qIGxlICovbGUsCisgICAgICAgICAgLyogZ3QgKi9ndCwKKyAgICAgICAgICAvKiBnZSAqL2dl
LAorICAgICAgICAgIC8qIHplcm8gKi96ZXJvCisgICAgICAgIF07Cit9CisKK2V4cG9ydHMuTWFr
ZSA9IE1ha2U7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGZsb2F0Lmpz
IC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlb
J2Zvcm1hdCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2YgZm9ybWF0LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBCbG9j
ayAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYmxvY2siKTsKK3ZhciBCeXRlcyAgICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnl0ZXMiKTsKK3ZhciBDdXJyeSAgICAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBCdWZmZXIgICAgICAgICAgICAgICAg
ICA9IHJlcXVpcmUoIi4vYnVmZmVyIik7Cit2YXIgJCRTdHJpbmcgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL3N0cmluZyIpOwordmFyIENhbWxfaW8gICAgICAgICAgICAgICAgID0gcmVxdWly
ZSgiLi9jYW1sX2lvIik7Cit2YXIgQ2FtbF9vYmogICAgICAgICAgICAgICAgPSByZXF1aXJlKCIu
L2NhbWxfb2JqIik7Cit2YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3Bl
cnZhc2l2ZXMiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2Ft
bF9zdHJpbmciKTsKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgICAgICAgICA9IHJlcXVpcmUoIi4vY2Ft
bF9leGNlcHRpb25zIik7Cit2YXIgQ2FtbGludGVybmFsRm9ybWF0ICAgICAgPSByZXF1aXJlKCIu
L2NhbWxpbnRlcm5hbEZvcm1hdCIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVx
dWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBhZGRfcXVldWUo
eCwgcSkgeworICB2YXIgYyA9IC8qIENvbnMgKi9bLyogcmVjb3JkICovWworICAgICAgLyogaGVh
ZCAqL3gsCisgICAgICAvKiB0YWlsIDogTmlsICovMAorICAgIF1dOworICB2YXIgbWF0Y2ggPSBx
Wy8qIGluc2VydCAqLzBdOworICBpZiAobWF0Y2gpIHsKKyAgICBxWy8qIGluc2VydCAqLzBdID0g
YzsKKyAgICBtYXRjaFswXVsvKiB0YWlsICovMV0gPSBjOworICAgIHJldHVybiAvKiAoKSAqLzA7
CisgIH0KKyAgZWxzZSB7CisgICAgcVsvKiBpbnNlcnQgKi8wXSA9IGM7CisgICAgcVsvKiBib2R5
ICovMV0gPSBjOworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKwordmFyIEVtcHR5X3F1
ZXVlID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiRm9ybWF0LkVtcHR5X3F1ZXVlIik7CisKK2Z1
bmN0aW9uIHBlZWtfcXVldWUocGFyYW0pIHsKKyAgdmFyIG1hdGNoID0gcGFyYW1bLyogYm9keSAq
LzFdOworICBpZiAobWF0Y2gpIHsKKyAgICByZXR1cm4gbWF0Y2hbMF1bLyogaGVhZCAqLzBdOwor
ICB9CisgIGVsc2UgeworICAgIHRocm93IEVtcHR5X3F1ZXVlOworICB9Cit9CisKK2Z1bmN0aW9u
IHRha2VfcXVldWUocSkgeworICB2YXIgbWF0Y2ggPSBxWy8qIGJvZHkgKi8xXTsKKyAgaWYgKG1h
dGNoKSB7CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICB2YXIgeCA9IG1hdGNoJDFb
LyogaGVhZCAqLzBdOworICAgIHZhciB0bCA9IG1hdGNoJDFbLyogdGFpbCAqLzFdOworICAgIHFb
LyogYm9keSAqLzFdID0gdGw7CisgICAgaWYgKCF0bCkgeworICAgICAgcVsvKiBpbnNlcnQgKi8w
XSA9IC8qIE5pbCAqLzA7CisgICAgfQorICAgIHJldHVybiB4OworICB9CisgIGVsc2UgeworICAg
IHRocm93IEVtcHR5X3F1ZXVlOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2VucXVldWUoc3RhdGUs
IHRva2VuKSB7CisgIHN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdID0gc3RhdGVbLyogcHBf
cmlnaHRfdG90YWwgKi8xMl0gKyB0b2tlblsvKiBsZW5ndGggKi8yXSB8IDA7CisgIHJldHVybiBh
ZGRfcXVldWUodG9rZW4sIHN0YXRlWy8qIHBwX3F1ZXVlICovMjZdKTsKK30KKworZnVuY3Rpb24g
cHBfY2xlYXJfcXVldWUoc3RhdGUpIHsKKyAgc3RhdGVbLyogcHBfbGVmdF90b3RhbCAqLzExXSA9
IDE7CisgIHN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdID0gMTsKKyAgdmFyIHEgPSBzdGF0
ZVsvKiBwcF9xdWV1ZSAqLzI2XTsKKyAgcVsvKiBpbnNlcnQgKi8wXSA9IC8qIE5pbCAqLzA7Cisg
IHFbLyogYm9keSAqLzFdID0gLyogTmlsICovMDsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKwor
ZnVuY3Rpb24gcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgcykgeworICByZXR1cm4gQ3VycnkuXzMo
c3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSwgcywgMCwgcy5sZW5ndGgpOworfQorCitmdW5j
dGlvbiBicmVha19uZXdfbGluZShzdGF0ZSwgb2Zmc2V0LCB3aWR0aCkgeworICBDdXJyeS5fMShz
dGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkgKi8wKTsKKyAgc3RhdGVbLyogcHBf
aXNfbmV3X2xpbmUgKi8xMF0gPSAvKiB0cnVlICovMTsKKyAgdmFyIGluZGVudCA9IChzdGF0ZVsv
KiBwcF9tYXJnaW4gKi81XSAtIHdpZHRoIHwgMCkgKyBvZmZzZXQgfCAwOworICB2YXIgcmVhbF9p
bmRlbnQgPSBQZXJ2YXNpdmVzLm1pbihzdGF0ZVsvKiBwcF9tYXhfaW5kZW50ICovN10sIGluZGVu
dCk7CisgIHN0YXRlWy8qIHBwX2N1cnJlbnRfaW5kZW50ICovOV0gPSByZWFsX2luZGVudDsKKyAg
c3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdID0gc3RhdGVbLyogcHBfbWFyZ2luICovNV0gLSBz
dGF0ZVsvKiBwcF9jdXJyZW50X2luZGVudCAqLzldIHwgMDsKKyAgcmV0dXJuIEN1cnJ5Ll8xKHN0
YXRlWy8qIHBwX291dF9zcGFjZXMgKi8xOV0sIHN0YXRlWy8qIHBwX2N1cnJlbnRfaW5kZW50ICov
OV0pOworfQorCitmdW5jdGlvbiBicmVha19zYW1lX2xpbmUoc3RhdGUsIHdpZHRoKSB7CisgIHN0
YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSA9IHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSAt
IHdpZHRoIHwgMDsKKyAgcmV0dXJuIEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX291dF9zcGFjZXMgKi8x
OV0sIHdpZHRoKTsKK30KKworZnVuY3Rpb24gcHBfZm9yY2VfYnJlYWtfbGluZShzdGF0ZSkgewor
ICB2YXIgbWF0Y2ggPSBzdGF0ZVsvKiBwcF9mb3JtYXRfc3RhY2sgKi8xXTsKKyAgaWYgKG1hdGNo
KSB7CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICB2YXIgd2lkdGggPSBtYXRjaCQx
WzFdOworICAgIHZhciBibF90eSA9IG1hdGNoJDFbMF07CisgICAgaWYgKHdpZHRoID4gc3RhdGVb
LyogcHBfc3BhY2VfbGVmdCAqLzhdICYmIGJsX3R5ICE9PSAwICYmIGJsX3R5IDwgNSkgeworICAg
ICAgcmV0dXJuIGJyZWFrX25ld19saW5lKHN0YXRlLCAwLCB3aWR0aCk7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiBD
dXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkgKi8wKTsKKyAgfQor
fQorCitmdW5jdGlvbiBmb3JtYXRfcHBfdG9rZW4oc3RhdGUsIHNpemUsIHBhcmFtKSB7CisgIGlm
ICh0eXBlb2YgcGFyYW0gPT09ICJudW1iZXIiKSB7CisgICAgc3dpdGNoIChwYXJhbSkgeworICAg
ICAgY2FzZSAwIDogCisgICAgICAgICAgdmFyIG1hdGNoID0gc3RhdGVbLyogcHBfdGJveF9zdGFj
ayAqLzJdOworICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAgdmFyIHRhYnMgPSBt
YXRjaFswXVswXTsKKyAgICAgICAgICAgIHZhciBhZGRfdGFiID0gZnVuY3Rpb24gKG4sIGxzKSB7
CisgICAgICAgICAgICAgIGlmIChscykgeworICAgICAgICAgICAgICAgIHZhciB4ID0gbHNbMF07
CisgICAgICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbGVzc3RoYW4obiwgeCkpIHsKKyAg
ICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbHMKKyAgICAgICAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfdGFiKG4sIGxzWzFdKQorICAgICAgICAg
ICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICB0YWJzWzBdID0gYWRkX3RhYihzdGF0ZVsvKiBwcF9tYXJnaW4gKi81
XSAtIHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSB8IDAsIHRhYnNbMF0pOworICAgICAgICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHZhciBtYXRjaCQxID0gc3RhdGVbLyogcHBfZm9y
bWF0X3N0YWNrICovMV07CisgICAgICAgICAgaWYgKG1hdGNoJDEpIHsKKyAgICAgICAgICAgIHN0
YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdID0gbWF0Y2gkMVsxXTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICB2YXIgbWF0Y2gkMiA9IHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXTsKKyAgICAgICAg
ICBpZiAobWF0Y2gkMikgeworICAgICAgICAgICAgc3RhdGVbLyogcHBfdGJveF9zdGFjayAqLzJd
ID0gbWF0Y2gkMlsxXTsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAg
ICAgICB9CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMyA9IHN0YXRlWy8q
IHBwX2Zvcm1hdF9zdGFjayAqLzFdOworICAgICAgICAgIGlmIChtYXRjaCQzKSB7CisgICAgICAg
ICAgICByZXR1cm4gYnJlYWtfbmV3X2xpbmUoc3RhdGUsIDAsIG1hdGNoJDNbMF1bMV0pOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShz
dGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkgKi8wKTsKKyAgICAgICAgICB9Cisg
ICAgICBjYXNlIDQgOiAKKyAgICAgICAgICBpZiAoc3RhdGVbLyogcHBfY3VycmVudF9pbmRlbnQg
Ki85XSAhPT0gKHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdIC0gc3RhdGVbLyogcHBfc3BhY2VfbGVm
dCAqLzhdIHwgMCkpIHsKKyAgICAgICAgICAgIHZhciBzdGF0ZSQxID0gc3RhdGU7CisgICAgICAg
ICAgICB2YXIgbWF0Y2gkNCA9IHRha2VfcXVldWUoc3RhdGUkMVsvKiBwcF9xdWV1ZSAqLzI2XSk7
CisgICAgICAgICAgICB2YXIgc2l6ZSQxID0gbWF0Y2gkNFsvKiBlbGVtX3NpemUgKi8wXTsKKyAg
ICAgICAgICAgIHN0YXRlJDFbLyogcHBfbGVmdF90b3RhbCAqLzExXSA9IHN0YXRlJDFbLyogcHBf
bGVmdF90b3RhbCAqLzExXSAtIG1hdGNoJDRbLyogbGVuZ3RoICovMl0gfCAwOworICAgICAgICAg
ICAgc3RhdGUkMVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gPSBzdGF0ZSQxWy8qIHBwX3NwYWNlX2xl
ZnQgKi84XSArIHNpemUkMSB8IDA7CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAgIH0KKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHZhciBtYXRjaCQ1ID0gc3RhdGVbLyog
cHBfbWFya19zdGFjayAqLzRdOworICAgICAgICAgIGlmIChtYXRjaCQ1KSB7CisgICAgICAgICAg
ICB2YXIgbWFya2VyID0gQ3VycnkuXzEoc3RhdGVbLyogcHBfbWFya19jbG9zZV90YWcgKi8yM10s
IG1hdGNoJDVbMF0pOworICAgICAgICAgICAgcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgbWFya2Vy
KTsKKyAgICAgICAgICAgIHN0YXRlWy8qIHBwX21hcmtfc3RhY2sgKi80XSA9IG1hdGNoJDVbMV07
CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfQorICAgICAg
ICAgIGJyZWFrOworICAgICAgCisgICAgfQorICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAocGFy
YW0udGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgc3RhdGVbLyogcHBfc3Bh
Y2VfbGVmdCAqLzhdID0gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIC0gc2l6ZSB8IDA7Cisg
ICAgICAgICAgcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgcGFyYW1bMF0pOworICAgICAgICAgIHN0
YXRlWy8qIHBwX2lzX25ld19saW5lICovMTBdID0gLyogZmFsc2UgKi8wOworICAgICAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB2YXIgb2ZmID0gcGFy
YW1bMV07CisgICAgICAgICAgdmFyIG4gPSBwYXJhbVswXTsKKyAgICAgICAgICB2YXIgbWF0Y2gk
NiA9IHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdOworICAgICAgICAgIGlmIChtYXRjaCQ2
KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkNyA9IG1hdGNoJDZbMF07CisgICAgICAgICAgICB2
YXIgd2lkdGggPSBtYXRjaCQ3WzFdOworICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ3WzBdKSB7
CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICAgICAgICAgIHJldHVybiBicmVha19uZXdfbGluZShzdGF0ZSwgb2ZmLCB3aWR0aCk7Cisg
ICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgaWYgKHNpemUgPiBzdGF0
ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJy
ZWFrX25ld19saW5lKHN0YXRlLCBvZmYsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWtf
c2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
Y2FzZSA0IDogCisgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVbLyogcHBfaXNfbmV3X2xpbmUg
Ki8xMF0gfHwgIShzaXplID4gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIHx8IHN0YXRlWy8q
IHBwX2N1cnJlbnRfaW5kZW50ICovOV0gPiAoKHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdIC0gd2lk
dGggfCAwKSArIG9mZiB8IDApKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWtf
c2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWtfbmV3X2xpbmUoc3Rh
dGUsIG9mZiwgd2lkdGgpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBjYXNl
IDAgOiAKKyAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4g
YnJlYWtfc2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIC8qICgp
ICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIgOiAKKyAg
ICAgICAgICB2YXIgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGVbLyogcHBfbWFyZ2luICovNV0gLSBz
dGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gfCAwOworICAgICAgICAgIHZhciBtYXRjaCQ4ID0g
c3RhdGVbLyogcHBfdGJveF9zdGFjayAqLzJdOworICAgICAgICAgIGlmIChtYXRjaCQ4KSB7Cisg
ICAgICAgICAgICB2YXIgdGFicyQxID0gbWF0Y2gkOFswXVswXTsKKyAgICAgICAgICAgIHZhciBm
aW5kID0gZnVuY3Rpb24gKG4sIF9wYXJhbSkgeworICAgICAgICAgICAgICB3aGlsZSh0cnVlKSB7
CisgICAgICAgICAgICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgICAgICAgICAgICAgIGlm
IChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgdmFyIHggPSBwYXJhbVswXTsKKyAgICAgICAg
ICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbCh4LCBuKSkgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91
bmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gdGFicyQxWzBdOworICAgICAgICAgICAgdmFyIHRh
YjsKKyAgICAgICAgICAgIGlmIChtYXRjaCQ5KSB7CisgICAgICAgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICAgICAgdGFiID0gZmluZChpbnNlcnRpb25fcG9pbnQsIHRhYnMkMVswXSk7CisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgY2F0Y2ggKGV4bil7CisgICAgICAgICAgICAgICAg
aWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7CisgICAgICAg
ICAgICAgICAgICB0YWIgPSBtYXRjaCQ5WzBdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHRocm93IGV4bjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICB0YWIgPSBpbnNlcnRpb25fcG9pbnQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IHwgMDsKKyAgICAg
ICAgICAgIGlmIChvZmZzZXQgPj0gMCkgeworICAgICAgICAgICAgICByZXR1cm4gYnJlYWtfc2Ft
ZV9saW5lKHN0YXRlLCBvZmZzZXQgKyBwYXJhbVswXSB8IDApOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBicmVha19uZXdfbGluZShzdGF0
ZSwgdGFiICsgcGFyYW1bMV0gfCAwLCBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDMg
OiAKKyAgICAgICAgICB2YXIgdHkgPSBwYXJhbVsxXTsKKyAgICAgICAgICB2YXIgaW5zZXJ0aW9u
X3BvaW50JDEgPSBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSAtIHN0YXRlWy8qIHBwX3NwYWNlX2xl
ZnQgKi84XSB8IDA7CisgICAgICAgICAgaWYgKGluc2VydGlvbl9wb2ludCQxID4gc3RhdGVbLyog
cHBfbWF4X2luZGVudCAqLzddKSB7CisgICAgICAgICAgICBwcF9mb3JjZV9icmVha19saW5lKHN0
YXRlKTsKKyAgICAgICAgICB9CisgICAgICAgICAgdmFyIG9mZnNldCQxID0gc3RhdGVbLyogcHBf
c3BhY2VfbGVmdCAqLzhdIC0gcGFyYW1bMF0gfCAwOworICAgICAgICAgIHZhciBibF90eXBlID0g
dHkgIT09IDEgPyAoCisgICAgICAgICAgICAgIHNpemUgPiBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0
ICovOF0gPyB0eSA6IC8qIFBwX2ZpdHMgKi81CisgICAgICAgICAgICApIDogLyogUHBfdmJveCAq
LzE7CisgICAgICAgICAgc3RhdGVbLyogcHBfZm9ybWF0X3N0YWNrICovMV0gPSAvKiA6OiAqL1sK
KyAgICAgICAgICAgIC8qIEZvcm1hdF9lbGVtICovWworICAgICAgICAgICAgICBibF90eXBlLAor
ICAgICAgICAgICAgICBvZmZzZXQkMQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHN0YXRl
Wy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdCisgICAgICAgICAgXTsKKyAgICAgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgc3RhdGVbLyogcHBfdGJveF9z
dGFjayAqLzJdID0gLyogOjogKi9bCisgICAgICAgICAgICBwYXJhbVswXSwKKyAgICAgICAgICAg
IHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXQorICAgICAgICAgIF07CisgICAgICAgICAgcmV0
dXJuIC8qICgpICovMDsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHZhciB0YWdfbmFtZSA9
IHBhcmFtWzBdOworICAgICAgICAgIHZhciBtYXJrZXIkMSA9IEN1cnJ5Ll8xKHN0YXRlWy8qIHBw
X21hcmtfb3Blbl90YWcgKi8yMl0sIHRhZ19uYW1lKTsKKyAgICAgICAgICBwcF9vdXRwdXRfc3Ry
aW5nKHN0YXRlLCBtYXJrZXIkMSk7CisgICAgICAgICAgc3RhdGVbLyogcHBfbWFya19zdGFjayAq
LzRdID0gLyogOjogKi9bCisgICAgICAgICAgICB0YWdfbmFtZSwKKyAgICAgICAgICAgIHN0YXRl
Wy8qIHBwX21hcmtfc3RhY2sgKi80XQorICAgICAgICAgIF07CisgICAgICAgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBhZHZhbmNlX2xlZnQo
c3RhdGUpIHsKKyAgdHJ5IHsKKyAgICB2YXIgc3RhdGUkMSA9IHN0YXRlOworICAgIHdoaWxlKHRy
dWUpIHsKKyAgICAgIHZhciBtYXRjaCA9IHBlZWtfcXVldWUoc3RhdGUkMVsvKiBwcF9xdWV1ZSAq
LzI2XSk7CisgICAgICB2YXIgc2l6ZSA9IG1hdGNoWy8qIGVsZW1fc2l6ZSAqLzBdOworICAgICAg
aWYgKHNpemUgPCAwICYmIChzdGF0ZSQxWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdIC0gc3RhdGUk
MVsvKiBwcF9sZWZ0X3RvdGFsICovMTFdIHwgMCkgPCBzdGF0ZSQxWy8qIHBwX3NwYWNlX2xlZnQg
Ki84XSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICB0YWtlX3F1ZXVlKHN0YXRlJDFbLyogcHBfcXVldWUgKi8yNl0pOworICAgICAgICBmb3JtYXRf
cHBfdG9rZW4oc3RhdGUkMSwgc2l6ZSA8IDAgPyAxMDAwMDAwMDEwIDogc2l6ZSwgbWF0Y2hbLyog
dG9rZW4gKi8xXSk7CisgICAgICAgIHN0YXRlJDFbLyogcHBfbGVmdF90b3RhbCAqLzExXSA9IG1h
dGNoWy8qIGxlbmd0aCAqLzJdICsgc3RhdGUkMVsvKiBwcF9sZWZ0X3RvdGFsICovMTFdIHwgMDsK
KyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9OworICB9CisgIGNh
dGNoIChleG4peworICAgIGlmIChleG4gPT09IEVtcHR5X3F1ZXVlKSB7CisgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IGV4bjsKKyAgICB9Cisg
IH0KK30KKworZnVuY3Rpb24gZW5xdWV1ZV9hZHZhbmNlKHN0YXRlLCB0b2spIHsKKyAgcHBfZW5x
dWV1ZShzdGF0ZSwgdG9rKTsKKyAgcmV0dXJuIGFkdmFuY2VfbGVmdChzdGF0ZSk7Cit9CisKK2Z1
bmN0aW9uIGVucXVldWVfc3RyaW5nX2FzKHN0YXRlLCBzaXplLCBzKSB7CisgIHJldHVybiBlbnF1
ZXVlX2FkdmFuY2Uoc3RhdGUsIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogZWxlbV9z
aXplICovc2l6ZSwKKyAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF90ZXh0ICovQmxvY2suX18o
MCwgW3NdKSwKKyAgICAgICAgICAgICAgLyogbGVuZ3RoICovc2l6ZQorICAgICAgICAgICAgXSk7
Cit9CisKK3ZhciBxX2VsZW0gPSAvKiByZWNvcmQgKi9bCisgIC8qIGVsZW1fc2l6ZSAqLy0xLAor
ICAvKiB0b2tlbiA6IFBwX3RleHQgKi9CbG9jay5fXygwLCBbIiJdKSwKKyAgLyogbGVuZ3RoICov
MAorXTsKKwordmFyIHNjYW5fc3RhY2tfYm90dG9tXzAwMCA9IC8qIFNjYW5fZWxlbSAqL1sKKyAg
LTEsCisgIHFfZWxlbQorXTsKKwordmFyIHNjYW5fc3RhY2tfYm90dG9tID0gLyogOjogKi9bCisg
IHNjYW5fc3RhY2tfYm90dG9tXzAwMCwKKyAgLyogW10gKi8wCitdOworCitmdW5jdGlvbiBzZXRf
c2l6ZShzdGF0ZSwgdHkpIHsKKyAgdmFyIG1hdGNoID0gc3RhdGVbLyogcHBfc2Nhbl9zdGFjayAq
LzBdOworICBpZiAobWF0Y2gpIHsKKyAgICB2YXIgbWF0Y2gkMSA9IG1hdGNoWzBdOworICAgIHZh
ciBxdWV1ZV9lbGVtID0gbWF0Y2gkMVsxXTsKKyAgICB2YXIgc2l6ZSA9IHF1ZXVlX2VsZW1bLyog
ZWxlbV9zaXplICovMF07CisgICAgdmFyIHQgPSBtYXRjaFsxXTsKKyAgICBpZiAobWF0Y2gkMVsw
XSA8IHN0YXRlWy8qIHBwX2xlZnRfdG90YWwgKi8xMV0pIHsKKyAgICAgIHN0YXRlWy8qIHBwX3Nj
YW5fc3RhY2sgKi8wXSA9IHNjYW5fc3RhY2tfYm90dG9tOworICAgICAgcmV0dXJuIC8qICgpICov
MDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgJGpz
ID0gcXVldWVfZWxlbVsvKiB0b2tlbiAqLzFdOworICAgICAgaWYgKHR5cGVvZiAkanMgPT09ICJu
dW1iZXIiKSB7CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgc3dpdGNoICgkanMudGFnIHwgMCkgeworICAgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgIGlmICh0eSkgewor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIHF1ZXVlX2VsZW1bLyogZWxlbV9zaXplICovMF0gPSBz
dGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSArIHNpemUgfCAwOworICAgICAgICAgICAgICAg
IHN0YXRlWy8qIHBwX3NjYW5fc3RhY2sgKi8wXSA9IHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoZXhp
dCA9PT0gMSkgeworICAgICAgICBpZiAodHkpIHsKKyAgICAgICAgICBxdWV1ZV9lbGVtWy8qIGVs
ZW1fc2l6ZSAqLzBdID0gc3RhdGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0gKyBzaXplIHwgMDsK
KyAgICAgICAgICBzdGF0ZVsvKiBwcF9zY2FuX3N0YWNrICovMF0gPSB0OworICAgICAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAgIH0KKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gLyogKCkgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHNjYW5fcHVzaChzdGF0
ZSwgYiwgdG9rKSB7CisgIHBwX2VucXVldWUoc3RhdGUsIHRvayk7CisgIGlmIChiKSB7CisgICAg
c2V0X3NpemUoc3RhdGUsIC8qIHRydWUgKi8xKTsKKyAgfQorICBzdGF0ZVsvKiBwcF9zY2FuX3N0
YWNrICovMF0gPSAvKiA6OiAqL1sKKyAgICAvKiBTY2FuX2VsZW0gKi9bCisgICAgICBzdGF0ZVsv
KiBwcF9yaWdodF90b3RhbCAqLzEyXSwKKyAgICAgIHRvaworICAgIF0sCisgICAgc3RhdGVbLyog
cHBfc2Nhbl9zdGFjayAqLzBdCisgIF07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0
aW9uIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCBicl90eSkgeworICBzdGF0ZVsvKiBw
cF9jdXJyX2RlcHRoICovMTNdID0gc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSArIDEgfCAw
OworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9i
b3hlcyAqLzE0XSkgeworICAgIHZhciBlbGVtID0gLyogcmVjb3JkICovWworICAgICAgLyogZWxl
bV9zaXplICovLXN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdIHwgMCwKKyAgICAgIC8qIHRv
a2VuIDogUHBfYmVnaW4gKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgaW5kZW50LAorICAgICAg
ICAgIGJyX3R5CisgICAgICAgIF0pLAorICAgICAgLyogbGVuZ3RoICovMAorICAgIF07CisgICAg
cmV0dXJuIHNjYW5fcHVzaChzdGF0ZSwgLyogZmFsc2UgKi8wLCBlbGVtKTsKKyAgfQorICBlbHNl
IGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdID09PSBzdGF0ZVsvKiBwcF9tYXhfYm94
ZXMgKi8xNF0pIHsKKyAgICB2YXIgc3RhdGUkMSA9IHN0YXRlOworICAgIHZhciBzID0gc3RhdGVb
LyogcHBfZWxsaXBzaXMgKi8xNV07CisgICAgdmFyIGxlbiA9IHMubGVuZ3RoOworICAgIHJldHVy
biBlbnF1ZXVlX3N0cmluZ19hcyhzdGF0ZSQxLCBsZW4sIHMpOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2Nsb3NlX2JveChzdGF0ZSwgXykgewor
ICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA+IDEpIHsKKyAgICBpZiAoc3RhdGVb
LyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgewor
ICAgICAgcHBfZW5xdWV1ZShzdGF0ZSwgLyogcmVjb3JkICovWworICAgICAgICAgICAgLyogZWxl
bV9zaXplICovMCwKKyAgICAgICAgICAgIC8qIHRva2VuIDogUHBfZW5kICovMSwKKyAgICAgICAg
ICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgICAgICBdKTsKKyAgICAgIHNldF9zaXplKHN0YXRlLCAv
KiB0cnVlICovMSk7CisgICAgICBzZXRfc2l6ZShzdGF0ZSwgLyogZmFsc2UgKi8wKTsKKyAgICB9
CisgICAgc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9IHN0YXRlWy8qIHBwX2N1cnJfZGVw
dGggKi8xM10gLSAxIHwgMDsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5fdGFnKHN0YXRlLCB0YWdf
bmFtZSkgeworICBpZiAoc3RhdGVbLyogcHBfcHJpbnRfdGFncyAqLzIwXSkgeworICAgIHN0YXRl
Wy8qIHBwX3RhZ19zdGFjayAqLzNdID0gLyogOjogKi9bCisgICAgICB0YWdfbmFtZSwKKyAgICAg
IHN0YXRlWy8qIHBwX3RhZ19zdGFjayAqLzNdCisgICAgXTsKKyAgICBDdXJyeS5fMShzdGF0ZVsv
KiBwcF9wcmludF9vcGVuX3RhZyAqLzI0XSwgdGFnX25hbWUpOworICB9CisgIGlmIChzdGF0ZVsv
KiBwcF9tYXJrX3RhZ3MgKi8yMV0pIHsKKyAgICByZXR1cm4gcHBfZW5xdWV1ZShzdGF0ZSwgLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisgICAgICAgICAg
ICAgICAgLyogdG9rZW4gOiBQcF9vcGVuX3RhZyAqL0Jsb2NrLl9fKDUsIFt0YWdfbmFtZV0pLAor
ICAgICAgICAgICAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgICAgICAgICAgXSk7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gcHBfY2xvc2VfdGFnKHN0
YXRlLCBfKSB7CisgIGlmIChzdGF0ZVsvKiBwcF9tYXJrX3RhZ3MgKi8yMV0pIHsKKyAgICBwcF9l
bnF1ZXVlKHN0YXRlLCAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogZWxlbV9zaXplICovMCwK
KyAgICAgICAgICAvKiB0b2tlbiA6IFBwX2Nsb3NlX3RhZyAqLzUsCisgICAgICAgICAgLyogbGVu
Z3RoICovMAorICAgICAgICBdKTsKKyAgfQorICBpZiAoc3RhdGVbLyogcHBfcHJpbnRfdGFncyAq
LzIwXSkgeworICAgIHZhciBtYXRjaCA9IHN0YXRlWy8qIHBwX3RhZ19zdGFjayAqLzNdOworICAg
IGlmIChtYXRjaCkgeworICAgICAgQ3VycnkuXzEoc3RhdGVbLyogcHBfcHJpbnRfY2xvc2VfdGFn
ICovMjVdLCBtYXRjaFswXSk7CisgICAgICBzdGF0ZVsvKiBwcF90YWdfc3RhY2sgKi8zXSA9IG1h
dGNoWzFdOworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsK
KyAgfQorfQorCitmdW5jdGlvbiBwcF9zZXRfcHJpbnRfdGFncyhzdGF0ZSwgYikgeworICBzdGF0
ZVsvKiBwcF9wcmludF90YWdzICovMjBdID0gYjsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKwor
ZnVuY3Rpb24gcHBfc2V0X21hcmtfdGFncyhzdGF0ZSwgYikgeworICBzdGF0ZVsvKiBwcF9tYXJr
X3RhZ3MgKi8yMV0gPSBiOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9n
ZXRfcHJpbnRfdGFncyhzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBfcHJpbnRfdGFn
cyAqLzIwXTsKK30KKworZnVuY3Rpb24gcHBfZ2V0X21hcmtfdGFncyhzdGF0ZSwgXykgeworICBy
ZXR1cm4gc3RhdGVbLyogcHBfbWFya190YWdzICovMjFdOworfQorCitmdW5jdGlvbiBwcF9zZXRf
dGFncyhzdGF0ZSwgYikgeworICBzdGF0ZVsvKiBwcF9wcmludF90YWdzICovMjBdID0gYjsKKyAg
c3RhdGVbLyogcHBfbWFya190YWdzICovMjFdID0gYjsKKyAgcmV0dXJuIC8qICgpICovMDsKK30K
KworZnVuY3Rpb24gcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zKHN0YXRlLCBfKSB7Cisg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogbWFya19vcGVuX3RhZyAqL3N0YXRl
Wy8qIHBwX21hcmtfb3Blbl90YWcgKi8yMl0sCisgICAgICAgICAgLyogbWFya19jbG9zZV90YWcg
Ki9zdGF0ZVsvKiBwcF9tYXJrX2Nsb3NlX3RhZyAqLzIzXSwKKyAgICAgICAgICAvKiBwcmludF9v
cGVuX3RhZyAqL3N0YXRlWy8qIHBwX3ByaW50X29wZW5fdGFnICovMjRdLAorICAgICAgICAgIC8q
IHByaW50X2Nsb3NlX3RhZyAqL3N0YXRlWy8qIHBwX3ByaW50X2Nsb3NlX3RhZyAqLzI1XQorICAg
ICAgICBdOworfQorCitmdW5jdGlvbiBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMoc3Rh
dGUsIHBhcmFtKSB7CisgIHN0YXRlWy8qIHBwX21hcmtfb3Blbl90YWcgKi8yMl0gPSBwYXJhbVsv
KiBtYXJrX29wZW5fdGFnICovMF07CisgIHN0YXRlWy8qIHBwX21hcmtfY2xvc2VfdGFnICovMjNd
ID0gcGFyYW1bLyogbWFya19jbG9zZV90YWcgKi8xXTsKKyAgc3RhdGVbLyogcHBfcHJpbnRfb3Bl
bl90YWcgKi8yNF0gPSBwYXJhbVsvKiBwcmludF9vcGVuX3RhZyAqLzJdOworICBzdGF0ZVsvKiBw
cF9wcmludF9jbG9zZV90YWcgKi8yNV0gPSBwYXJhbVsvKiBwcmludF9jbG9zZV90YWcgKi8zXTsK
KyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gcHBfcmluaXQoc3RhdGUpIHsKKyAg
cHBfY2xlYXJfcXVldWUoc3RhdGUpOworICBzdGF0ZVsvKiBwcF9zY2FuX3N0YWNrICovMF0gPSBz
Y2FuX3N0YWNrX2JvdHRvbTsKKyAgc3RhdGVbLyogcHBfZm9ybWF0X3N0YWNrICovMV0gPSAvKiBb
XSAqLzA7CisgIHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXSA9IC8qIFtdICovMDsKKyAgc3Rh
dGVbLyogcHBfdGFnX3N0YWNrICovM10gPSAvKiBbXSAqLzA7CisgIHN0YXRlWy8qIHBwX21hcmtf
c3RhY2sgKi80XSA9IC8qIFtdICovMDsKKyAgc3RhdGVbLyogcHBfY3VycmVudF9pbmRlbnQgKi85
XSA9IDA7CisgIHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPSAwOworICBzdGF0ZVsvKiBw
cF9zcGFjZV9sZWZ0ICovOF0gPSBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XTsKKyAgcmV0dXJuIHBw
X29wZW5fYm94X2dlbihzdGF0ZSwgMCwgLyogUHBfaG92Ym94ICovMyk7Cit9CisKK2Z1bmN0aW9u
IHBwX2ZsdXNoX3F1ZXVlKHN0YXRlLCBiKSB7CisgIHdoaWxlKHN0YXRlWy8qIHBwX2N1cnJfZGVw
dGggKi8xM10gPiAxKSB7CisgICAgcHBfY2xvc2VfYm94KHN0YXRlLCAvKiAoKSAqLzApOworICB9
OworICBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSA9IDEwMDAwMDAwMTA7CisgIGFkdmFu
Y2VfbGVmdChzdGF0ZSk7CisgIGlmIChiKSB7CisgICAgQ3VycnkuXzEoc3RhdGVbLyogcHBfb3V0
X25ld2xpbmUgKi8xOF0sIC8qICgpICovMCk7CisgIH0KKyAgcmV0dXJuIHBwX3Jpbml0KHN0YXRl
KTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfYXNfc2l6ZShzdGF0ZSwgc2l6ZSwgcykgeworICBp
ZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAq
LzE0XSkgeworICAgIHJldHVybiBlbnF1ZXVlX3N0cmluZ19hcyhzdGF0ZSwgc2l6ZSwgcyk7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKwordmFyIHBwX3ByaW50X2FzID0g
cHBfcHJpbnRfYXNfc2l6ZTsKKworZnVuY3Rpb24gcHBfcHJpbnRfc3RyaW5nKHN0YXRlLCBzKSB7
CisgIHJldHVybiBwcF9wcmludF9hcyhzdGF0ZSwgcy5sZW5ndGgsIHMpOworfQorCitmdW5jdGlv
biBwcF9wcmludF9pbnQoc3RhdGUsIGkpIHsKKyAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGF0
ZSwgIiIgKyBpKTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfZmxvYXQoc3RhdGUsIGYpIHsKKyAg
cmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGF0ZSwgUGVydmFzaXZlcy5zdHJpbmdfb2ZfZmxvYXQo
ZikpOworfQorCitmdW5jdGlvbiBwcF9wcmludF9ib29sKHN0YXRlLCBiKSB7CisgIHJldHVybiBw
cF9wcmludF9zdHJpbmcoc3RhdGUsIGIgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30KKworZnVuY3Rp
b24gcHBfcHJpbnRfY2hhcihzdGF0ZSwgYykgeworICByZXR1cm4gcHBfcHJpbnRfYXMoc3RhdGUs
IDEsIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5tYWtlKDEsIGMpKSk7Cit9CisK
K2Z1bmN0aW9uIHBwX29wZW5faGJveChzdGF0ZSwgXykgeworICByZXR1cm4gcHBfb3Blbl9ib3hf
Z2VuKHN0YXRlLCAwLCAvKiBQcF9oYm94ICovMCk7Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5fdmJv
eChzdGF0ZSwgaW5kZW50KSB7CisgIHJldHVybiBwcF9vcGVuX2JveF9nZW4oc3RhdGUsIGluZGVu
dCwgLyogUHBfdmJveCAqLzEpOworfQorCitmdW5jdGlvbiBwcF9vcGVuX2h2Ym94KHN0YXRlLCBp
bmRlbnQpIHsKKyAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCAvKiBQcF9o
dmJveCAqLzIpOworfQorCitmdW5jdGlvbiBwcF9vcGVuX2hvdmJveChzdGF0ZSwgaW5kZW50KSB7
CisgIHJldHVybiBwcF9vcGVuX2JveF9nZW4oc3RhdGUsIGluZGVudCwgLyogUHBfaG92Ym94ICov
Myk7Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5fYm94KHN0YXRlLCBpbmRlbnQpIHsKKyAgcmV0dXJu
IHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCAvKiBQcF9ib3ggKi80KTsKK30KKworZnVu
Y3Rpb24gcHBfcHJpbnRfbmV3bGluZShzdGF0ZSwgXykgeworICBwcF9mbHVzaF9xdWV1ZShzdGF0
ZSwgLyogdHJ1ZSAqLzEpOworICByZXR1cm4gQ3VycnkuXzEoc3RhdGVbLyogcHBfb3V0X2ZsdXNo
ICovMTddLCAvKiAoKSAqLzApOworfQorCitmdW5jdGlvbiBwcF9wcmludF9mbHVzaChzdGF0ZSwg
XykgeworICBwcF9mbHVzaF9xdWV1ZShzdGF0ZSwgLyogZmFsc2UgKi8wKTsKKyAgcmV0dXJuIEN1
cnJ5Ll8xKHN0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XSwgLyogKCkgKi8wKTsKK30KKworZnVu
Y3Rpb24gcHBfZm9yY2VfbmV3bGluZShzdGF0ZSwgXykgeworICBpZiAoc3RhdGVbLyogcHBfY3Vy
cl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgIHJldHVy
biBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAv
KiBlbGVtX3NpemUgKi8wLAorICAgICAgICAgICAgICAgIC8qIHRva2VuIDogUHBfbmV3bGluZSAq
LzMsCisgICAgICAgICAgICAgICAgLyogbGVuZ3RoICovMAorICAgICAgICAgICAgICBdKTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9wcmludF9p
Zl9uZXdsaW5lKHN0YXRlLCBfKSB7CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNd
IDwgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7CisgICAgcmV0dXJuIGVucXVldWVfYWR2
YW5jZShzdGF0ZSwgLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgIC8qIGVsZW1fc2l6ZSAq
LzAsCisgICAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF9pZl9uZXdsaW5lICovNCwKKyAgICAg
ICAgICAgICAgICAvKiBsZW5ndGggKi8wCisgICAgICAgICAgICAgIF0pOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X2JyZWFrKHN0YXRl
LCB3aWR0aCwgb2Zmc2V0KSB7CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdIDwg
c3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7CisgICAgdmFyIGVsZW0gPSAvKiByZWNvcmQg
Ki9bCisgICAgICAvKiBlbGVtX3NpemUgKi8tc3RhdGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0g
fCAwLAorICAgICAgLyogdG9rZW4gOiBQcF9icmVhayAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAg
ICB3aWR0aCwKKyAgICAgICAgICBvZmZzZXQKKyAgICAgICAgXSksCisgICAgICAvKiBsZW5ndGgg
Ki93aWR0aAorICAgIF07CisgICAgcmV0dXJuIHNjYW5fcHVzaChzdGF0ZSwgLyogdHJ1ZSAqLzEs
IGVsZW0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9u
IHBwX3ByaW50X3NwYWNlKHN0YXRlLCBfKSB7CisgIHJldHVybiBwcF9wcmludF9icmVhayhzdGF0
ZSwgMSwgMCk7Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X2N1dChzdGF0ZSwgXykgeworICByZXR1
cm4gcHBfcHJpbnRfYnJlYWsoc3RhdGUsIDAsIDApOworfQorCitmdW5jdGlvbiBwcF9vcGVuX3Ri
b3goc3RhdGUsIF8pIHsKKyAgc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9IHN0YXRlWy8q
IHBwX2N1cnJfZGVwdGggKi8xM10gKyAxIHwgMDsKKyAgaWYgKHN0YXRlWy8qIHBwX2N1cnJfZGVw
dGggKi8xM10gPCBzdGF0ZVsvKiBwcF9tYXhfYm94ZXMgKi8xNF0pIHsKKyAgICB2YXIgZWxlbSA9
IC8qIHJlY29yZCAqL1sKKyAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisgICAgICAvKiB0b2tlbiA6
IFBwX3RiZWdpbiAqL0Jsb2NrLl9fKDQsIFsvKiBQcF90Ym94ICovW1svKiBbXSAqLzBdXV0pLAor
ICAgICAgLyogbGVuZ3RoICovMAorICAgIF07CisgICAgcmV0dXJuIGVucXVldWVfYWR2YW5jZShz
dGF0ZSwgZWxlbSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVu
Y3Rpb24gcHBfY2xvc2VfdGJveChzdGF0ZSwgXykgeworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9k
ZXB0aCAqLzEzXSA+IDEpIHsKKyAgICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8
IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgICAgdmFyIGVsZW0gPSAvKiByZWNv
cmQgKi9bCisgICAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisgICAgICAgIC8qIHRva2VuIDogUHBf
dGVuZCAqLzIsCisgICAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgIF07CisgICAgICBlbnF1ZXVl
X2FkdmFuY2Uoc3RhdGUsIGVsZW0pOworICAgICAgc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEz
XSA9IHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gLSAxIHwgMDsKKyAgICAgIHJldHVybiAv
KiAoKSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9
CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X3Ri
cmVhayhzdGF0ZSwgd2lkdGgsIG9mZnNldCkgeworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0
aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgIHZhciBlbGVtID0g
LyogcmVjb3JkICovWworICAgICAgLyogZWxlbV9zaXplICovLXN0YXRlWy8qIHBwX3JpZ2h0X3Rv
dGFsICovMTJdIHwgMCwKKyAgICAgIC8qIHRva2VuIDogUHBfdGJyZWFrICovQmxvY2suX18oMiwg
WworICAgICAgICAgIHdpZHRoLAorICAgICAgICAgIG9mZnNldAorICAgICAgICBdKSwKKyAgICAg
IC8qIGxlbmd0aCAqL3dpZHRoCisgICAgXTsKKyAgICByZXR1cm4gc2Nhbl9wdXNoKHN0YXRlLCAv
KiB0cnVlICovMSwgZWxlbSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30K
KworZnVuY3Rpb24gcHBfcHJpbnRfdGFiKHN0YXRlLCBfKSB7CisgIHJldHVybiBwcF9wcmludF90
YnJlYWsoc3RhdGUsIDAsIDApOworfQorCitmdW5jdGlvbiBwcF9zZXRfdGFiKHN0YXRlLCBfKSB7
CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdIDwgc3RhdGVbLyogcHBfbWF4X2Jv
eGVzICovMTRdKSB7CisgICAgdmFyIGVsZW0gPSAvKiByZWNvcmQgKi9bCisgICAgICAvKiBlbGVt
X3NpemUgKi8wLAorICAgICAgLyogdG9rZW4gOiBQcF9zdGFiICovMCwKKyAgICAgIC8qIGxlbmd0
aCAqLzAKKyAgICBdOworICAgIHJldHVybiBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIGVsZW0pOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50
X2xpc3QoXyRzdGFyb3B0JHN0YXIsIHBwX3YsIHBwZiwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUp
IHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgdmFyICRzdGFyb3B0JHN0YXIgPSBfJHN0
YXJvcHQkc3RhcjsKKyAgICB2YXIgcHBfc2VwID0gJHN0YXJvcHQkc3RhciA/ICRzdGFyb3B0JHN0
YXJbMF0gOiBwcF9wcmludF9jdXQ7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICB2YXIgdnMgPSBw
YXJhbVsxXTsKKyAgICAgIHZhciB2ID0gcGFyYW1bMF07CisgICAgICBpZiAodnMpIHsKKyAgICAg
ICAgQ3VycnkuXzIocHBfdiwgcHBmLCB2KTsKKyAgICAgICAgQ3VycnkuXzIocHBfc2VwLCBwcGYs
IC8qICgpICovMCk7CisgICAgICAgIF9wYXJhbSA9IHZzOworICAgICAgICBfJHN0YXJvcHQkc3Rh
ciA9IC8qIFNvbWUgKi9bcHBfc2VwXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gQ3VycnkuXzIocHBfdiwgcHBmLCB2
KTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOwor
ICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfdGV4dChwcGYsIHMpIHsKKyAgdmFy
IGxlbiA9IHMubGVuZ3RoOworICB2YXIgbGVmdCA9IFswXTsKKyAgdmFyIHJpZ2h0ID0gWzBdOwor
ICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7CisgICAgcHBfcHJpbnRfc3RyaW5nKHBwZiwgJCRT
dHJpbmcuc3ViKHMsIGxlZnRbMF0sIHJpZ2h0WzBdIC0gbGVmdFswXSB8IDApKTsKKyAgICByaWdo
dFswXSA9IHJpZ2h0WzBdICsgMSB8IDA7CisgICAgbGVmdFswXSA9IHJpZ2h0WzBdOworICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgIH07CisgIHdoaWxlKHJpZ2h0WzBdICE9PSBsZW4pIHsKKyAgICB2
YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQocywgcmlnaHRbMF0pOworICAgIGlmIChtYXRjaCAh
PT0gMTApIHsKKyAgICAgIGlmIChtYXRjaCAhPT0gMzIpIHsKKyAgICAgICAgcmlnaHRbMF0gPSBy
aWdodFswXSArIDEgfCAwOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGZsdXNoKC8q
ICgpICovMCk7CisgICAgICAgIHBwX3ByaW50X2JyZWFrKHBwZiwgMSwgMCk7CisgICAgICB9Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgZmx1c2goLyogKCkgKi8wKTsKKyAgICAgIHBwX2ZvcmNl
X25ld2xpbmUocHBmLCAvKiAoKSAqLzApOworICAgIH0KKyAgfTsKKyAgaWYgKGxlZnRbMF0gIT09
IGxlbikgeworICAgIHJldHVybiBmbHVzaCgvKiAoKSAqLzApOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3NldF9tYXhfYm94ZXMoc3RhdGUsIG4p
IHsKKyAgaWYgKG4gPiAxKSB7CisgICAgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdID0gbjsK
KyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9
Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9tYXhfYm94ZXMoc3RhdGUsIF8pIHsKKyAgcmV0dXJuIHN0
YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XTsKK30KKworZnVuY3Rpb24gcHBfb3Zlcl9tYXhfYm94
ZXMoc3RhdGUsIF8pIHsKKyAgcmV0dXJuICsoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9
PT0gc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKTsKK30KKworZnVuY3Rpb24gcHBfc2V0X2Vs
bGlwc2lzX3RleHQoc3RhdGUsIHMpIHsKKyAgc3RhdGVbLyogcHBfZWxsaXBzaXMgKi8xNV0gPSBz
OworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9nZXRfZWxsaXBzaXNfdGV4
dChzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBfZWxsaXBzaXMgKi8xNV07Cit9CisK
K2Z1bmN0aW9uIHBwX2xpbWl0KG4pIHsKKyAgaWYgKG4gPCAxMDAwMDAwMDEwKSB7CisgICAgcmV0
dXJuIG47CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDEwMDAwMDAwMDk7CisgIH0KK30KKwor
ZnVuY3Rpb24gcHBfc2V0X21heF9pbmRlbnQoc3RhdGUsIG4pIHsKKyAgdmFyIHN0YXRlJDEgPSBz
dGF0ZTsKKyAgdmFyIG4kMSA9IHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdIC0gbiB8IDA7CisgIGlm
IChuJDEgPj0gMSkgeworICAgIHZhciBuJDIgPSBwcF9saW1pdChuJDEpOworICAgIHN0YXRlJDFb
LyogcHBfbWluX3NwYWNlX2xlZnQgKi82XSA9IG4kMjsKKyAgICBzdGF0ZSQxWy8qIHBwX21heF9p
bmRlbnQgKi83XSA9IHN0YXRlJDFbLyogcHBfbWFyZ2luICovNV0gLSBzdGF0ZSQxWy8qIHBwX21p
bl9zcGFjZV9sZWZ0ICovNl0gfCAwOworICAgIHJldHVybiBwcF9yaW5pdChzdGF0ZSQxKTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9nZXRfbWF4
X2luZGVudChzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBfbWF4X2luZGVudCAqLzdd
OworfQorCitmdW5jdGlvbiBwcF9zZXRfbWFyZ2luKHN0YXRlLCBuKSB7CisgIGlmIChuID49IDEp
IHsKKyAgICB2YXIgbiQxID0gcHBfbGltaXQobik7CisgICAgc3RhdGVbLyogcHBfbWFyZ2luICov
NV0gPSBuJDE7CisgICAgdmFyIG5ld19tYXhfaW5kZW50ID0gc3RhdGVbLyogcHBfbWF4X2luZGVu
dCAqLzddIDw9IHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdID8gc3RhdGVbLyogcHBfbWF4X2luZGVu
dCAqLzddIDogUGVydmFzaXZlcy5tYXgoUGVydmFzaXZlcy5tYXgoc3RhdGVbLyogcHBfbWFyZ2lu
ICovNV0gLSBzdGF0ZVsvKiBwcF9taW5fc3BhY2VfbGVmdCAqLzZdIHwgMCwgc3RhdGVbLyogcHBf
bWFyZ2luICovNV0gLyAyIHwgMCksIDEpOworICAgIHJldHVybiBwcF9zZXRfbWF4X2luZGVudChz
dGF0ZSwgbmV3X21heF9pbmRlbnQpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9
Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9tYXJnaW4oc3RhdGUsIF8pIHsKKyAgcmV0dXJuIHN0YXRl
Wy8qIHBwX21hcmdpbiAqLzVdOworfQorCitmdW5jdGlvbiBwcF9zZXRfZm9ybWF0dGVyX291dF9m
dW5jdGlvbnMoc3RhdGUsIHBhcmFtKSB7CisgIHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0g
PSBwYXJhbVsvKiBvdXRfc3RyaW5nICovMF07CisgIHN0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3
XSA9IHBhcmFtWy8qIG91dF9mbHVzaCAqLzFdOworICBzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAq
LzE4XSA9IHBhcmFtWy8qIG91dF9uZXdsaW5lICovMl07CisgIHN0YXRlWy8qIHBwX291dF9zcGFj
ZXMgKi8xOV0gPSBwYXJhbVsvKiBvdXRfc3BhY2VzICovM107CisgIHJldHVybiAvKiAoKSAqLzA7
Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyhzdGF0ZSwgXykg
eworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIG91dF9zdHJpbmcgKi9zdGF0
ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLAorICAgICAgICAgIC8qIG91dF9mbHVzaCAqL3N0YXRl
Wy8qIHBwX291dF9mbHVzaCAqLzE3XSwKKyAgICAgICAgICAvKiBvdXRfbmV3bGluZSAqL3N0YXRl
Wy8qIHBwX291dF9uZXdsaW5lICovMThdLAorICAgICAgICAgIC8qIG91dF9zcGFjZXMgKi9zdGF0
ZVsvKiBwcF9vdXRfc3BhY2VzICovMTldCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHBwX3Nl
dF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwgZiwgZykgeworICBzdGF0ZVsvKiBw
cF9vdXRfc3RyaW5nICovMTZdID0gZjsKKyAgc3RhdGVbLyogcHBfb3V0X2ZsdXNoICovMTddID0g
ZzsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gcHBfZ2V0X2Zvcm1hdHRlcl9v
dXRwdXRfZnVuY3Rpb25zKHN0YXRlLCBfKSB7CisgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICBzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLAorICAgICAgICAgIHN0YXRlWy8qIHBw
X291dF9mbHVzaCAqLzE3XQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBwcF9zZXRfYWxsX2Zv
cm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0YXRlLCBmLCBnLCBoLCBpKSB7CisgIHBwX3NldF9m
b3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwgZiwgZyk7CisgIHN0YXRlWy8qIHBwX291
dF9uZXdsaW5lICovMThdID0gaDsKKyAgc3RhdGVbLyogcHBfb3V0X3NwYWNlcyAqLzE5XSA9IGk7
CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9hbGxfZm9ybWF0dGVy
X291dHB1dF9mdW5jdGlvbnMoc3RhdGUsIF8pIHsKKyAgcmV0dXJuIC8qIHR1cGxlICovWworICAg
ICAgICAgIHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0sCisgICAgICAgICAgc3RhdGVbLyog
cHBfb3V0X2ZsdXNoICovMTddLAorICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9uZXdsaW5lICov
MThdLAorICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9zcGFjZXMgKi8xOV0KKyAgICAgICAgXTsK
K30KKworZnVuY3Rpb24gZGlzcGxheV9uZXdsaW5lKHN0YXRlLCBfKSB7CisgIHJldHVybiBDdXJy
eS5fMyhzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLCAiXG4iLCAwLCAxKTsKK30KKwordmFy
IGJsYW5rX2xpbmUgPSBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFrZSg4MCwg
LyogIiAiICovMzIpKTsKKworZnVuY3Rpb24gZGlzcGxheV9ibGFua3Moc3RhdGUsIF9uKSB7Cisg
IHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbiA9IF9uOworICAgIGlmIChuID4gMCkgeworICAgICAg
aWYgKG4gPD0gODApIHsKKyAgICAgICAgcmV0dXJuIEN1cnJ5Ll8zKHN0YXRlWy8qIHBwX291dF9z
dHJpbmcgKi8xNl0sIGJsYW5rX2xpbmUsIDAsIG4pOworICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIEN1cnJ5Ll8zKHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0sIGJsYW5rX2xpbmUs
IDAsIDgwKTsKKyAgICAgICAgX24gPSBuIC0gODAgfCAwOworICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOworICAg
IH0KKyAgfTsKK30KKworZnVuY3Rpb24gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbChzdGF0
ZSwgb3MpIHsKKyAgc3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSA9IGZ1bmN0aW9uIChwYXJh
bSwgcGFyYW0kMSwgcGFyYW0kMikgeworICAgIHJldHVybiBQZXJ2YXNpdmVzLm91dHB1dF9zdWJz
dHJpbmcob3MsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsKKyAgfTsKKyAgc3RhdGVbLyogcHBf
b3V0X2ZsdXNoICovMTddID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBDYW1sX2lvLmNhbWxf
bWxfZmx1c2gob3MpOworICB9OworICBzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSA9IGZ1
bmN0aW9uIChwYXJhbSkgeworICAgIHJldHVybiBkaXNwbGF5X25ld2xpbmUoc3RhdGUsIHBhcmFt
KTsKKyAgfTsKKyAgc3RhdGVbLyogcHBfb3V0X3NwYWNlcyAqLzE5XSA9IGZ1bmN0aW9uIChwYXJh
bSkgeworICAgIHJldHVybiBkaXNwbGF5X2JsYW5rcyhzdGF0ZSwgcGFyYW0pOworICB9OworICBy
ZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWco
cykgeworICByZXR1cm4gIjwiICsgKHMgKyAiPiIpOworfQorCitmdW5jdGlvbiBkZWZhdWx0X3Bw
X21hcmtfY2xvc2VfdGFnKHMpIHsKKyAgcmV0dXJuICI8LyIgKyAocyArICI+Iik7Cit9CisKK2Z1
bmN0aW9uIGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcoKSB7CisgIHJldHVybiAvKiAoKSAqLzA7
Cit9CisKK2Z1bmN0aW9uIGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnKCkgeworICByZXR1cm4g
LyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9tYWtlX2Zvcm1hdHRlcihmLCBnLCBoLCBpKSB7
CisgIHZhciBwcF9xID0gLyogcmVjb3JkICovWworICAgIC8qIGluc2VydCA6IE5pbCAqLzAsCisg
ICAgLyogYm9keSA6IE5pbCAqLzAKKyAgXTsKKyAgdmFyIHN5c190b2sgPSAvKiByZWNvcmQgKi9b
CisgICAgLyogZWxlbV9zaXplICovLTEsCisgICAgLyogdG9rZW4gOiBQcF9iZWdpbiAqL0Jsb2Nr
Ll9fKDMsIFsKKyAgICAgICAgMCwKKyAgICAgICAgLyogUHBfaG92Ym94ICovMworICAgICAgXSks
CisgICAgLyogbGVuZ3RoICovMAorICBdOworICBhZGRfcXVldWUoc3lzX3RvaywgcHBfcSk7Cisg
IHZhciBzeXNfc2Nhbl9zdGFja18wMDAgPSAvKiBTY2FuX2VsZW0gKi9bCisgICAgMSwKKyAgICBz
eXNfdG9rCisgIF07CisgIHZhciBzeXNfc2Nhbl9zdGFjayA9IC8qIDo6ICovWworICAgIHN5c19z
Y2FuX3N0YWNrXzAwMCwKKyAgICBzY2FuX3N0YWNrX2JvdHRvbQorICBdOworICByZXR1cm4gLyog
cmVjb3JkICovWworICAgICAgICAgIC8qIHBwX3NjYW5fc3RhY2sgKi9zeXNfc2Nhbl9zdGFjaywK
KyAgICAgICAgICAvKiBwcF9mb3JtYXRfc3RhY2sgOiBbXSAqLzAsCisgICAgICAgICAgLyogcHBf
dGJveF9zdGFjayA6IFtdICovMCwKKyAgICAgICAgICAvKiBwcF90YWdfc3RhY2sgOiBbXSAqLzAs
CisgICAgICAgICAgLyogcHBfbWFya19zdGFjayA6IFtdICovMCwKKyAgICAgICAgICAvKiBwcF9t
YXJnaW4gKi83OCwKKyAgICAgICAgICAvKiBwcF9taW5fc3BhY2VfbGVmdCAqLzEwLAorICAgICAg
ICAgIC8qIHBwX21heF9pbmRlbnQgKi82OCwKKyAgICAgICAgICAvKiBwcF9zcGFjZV9sZWZ0ICov
NzgsCisgICAgICAgICAgLyogcHBfY3VycmVudF9pbmRlbnQgKi8wLAorICAgICAgICAgIC8qIHBw
X2lzX25ld19saW5lIDogdHJ1ZSAqLzEsCisgICAgICAgICAgLyogcHBfbGVmdF90b3RhbCAqLzEs
CisgICAgICAgICAgLyogcHBfcmlnaHRfdG90YWwgKi8xLAorICAgICAgICAgIC8qIHBwX2N1cnJf
ZGVwdGggKi8xLAorICAgICAgICAgIC8qIHBwX21heF9ib3hlcyAqL1BlcnZhc2l2ZXMubWF4X2lu
dCwKKyAgICAgICAgICAvKiBwcF9lbGxpcHNpcyAqLyIuIiwKKyAgICAgICAgICAvKiBwcF9vdXRf
c3RyaW5nICovZiwKKyAgICAgICAgICAvKiBwcF9vdXRfZmx1c2ggKi9nLAorICAgICAgICAgIC8q
IHBwX291dF9uZXdsaW5lICovaCwKKyAgICAgICAgICAvKiBwcF9vdXRfc3BhY2VzICovaSwKKyAg
ICAgICAgICAvKiBwcF9wcmludF90YWdzIDogZmFsc2UgKi8wLAorICAgICAgICAgIC8qIHBwX21h
cmtfdGFncyA6IGZhbHNlICovMCwKKyAgICAgICAgICAvKiBwcF9tYXJrX29wZW5fdGFnICovZGVm
YXVsdF9wcF9tYXJrX29wZW5fdGFnLAorICAgICAgICAgIC8qIHBwX21hcmtfY2xvc2VfdGFnICov
ZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZywKKyAgICAgICAgICAvKiBwcF9wcmludF9vcGVuX3Rh
ZyAqL2RlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcsCisgICAgICAgICAgLyogcHBfcHJpbnRfY2xv
c2VfdGFnICovZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcsCisgICAgICAgICAgLyogcHBfcXVl
dWUgKi9wcF9xCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIG1ha2VfZm9ybWF0dGVyKG91dHB1
dCwgZmx1c2gpIHsKKyAgdmFyIHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyKG91dHB1dCwgZmx1c2gs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0sIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0pOworICBwcGZbLyog
cHBfb3V0X25ld2xpbmUgKi8xOF0gPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICByZXR1cm4gZGlz
cGxheV9uZXdsaW5lKHBwZiwgcGFyYW0pOworICB9OworICBwcGZbLyogcHBfb3V0X3NwYWNlcyAq
LzE5XSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHJldHVybiBkaXNwbGF5X2JsYW5rcyhwcGYs
IHBhcmFtKTsKKyAgfTsKKyAgcmV0dXJuIHBwZjsKK30KKworZnVuY3Rpb24gZm9ybWF0dGVyX29m
X291dF9jaGFubmVsKG9jKSB7CisgIHJldHVybiBtYWtlX2Zvcm1hdHRlcihmdW5jdGlvbiAocGFy
YW0sIHBhcmFtJDEsIHBhcmFtJDIpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMu
b3V0cHV0X3N1YnN0cmluZyhvYywgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOworICAgICAgICAg
ICAgfSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1cm4gQ2FtbF9pby5jYW1sX21s
X2ZsdXNoKG9jKTsKKyAgICAgICAgICAgIH0pOworfQorCitmdW5jdGlvbiBmb3JtYXR0ZXJfb2Zf
YnVmZmVyKGIpIHsKKyAgcmV0dXJuIG1ha2VfZm9ybWF0dGVyKGZ1bmN0aW9uIChwYXJhbSwgcGFy
YW0kMSwgcGFyYW0kMikgeworICAgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmFkZF9zdWJzdHJp
bmcoYiwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOworICAgICAgICAgICAgfSwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgICAgfSk7Cit9
CisKK3ZhciBzdGRidWYgPSBCdWZmZXIuY3JlYXRlKDUxMik7CisKK3ZhciBzdGRfZm9ybWF0dGVy
ID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsKFBlcnZhc2l2ZXMuc3Rkb3V0KTsKKwordmFyIGVy
cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwoUGVydmFzaXZlcy5zdGRlcnIp
OworCit2YXIgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIoc3RkYnVmKTsKKwor
ZnVuY3Rpb24gZmx1c2hfc3RyX2Zvcm1hdHRlcigpIHsKKyAgcHBfZmx1c2hfcXVldWUoc3RyX2Zv
cm1hdHRlciwgLyogZmFsc2UgKi8wKTsKKyAgdmFyIHMgPSBCdWZmZXIuY29udGVudHMoc3RkYnVm
KTsKKyAgQnVmZmVyLnJlc2V0KHN0ZGJ1Zik7CisgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBm
bHVzaF9idWZfZm9ybWF0dGVyKGJ1ZiwgcHBmKSB7CisgIHBwX2ZsdXNoX3F1ZXVlKHBwZiwgLyog
ZmFsc2UgKi8wKTsKKyAgdmFyIHMgPSBCdWZmZXIuY29udGVudHMoYnVmKTsKKyAgQnVmZmVyLnJl
c2V0KGJ1Zik7CisgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBvcGVuX2hib3gocGFyYW0pIHsK
KyAgcmV0dXJuIHBwX29wZW5faGJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0
aW9uIG9wZW5fdmJveChwYXJhbSkgeworICByZXR1cm4gcHBfb3Blbl92Ym94KHN0ZF9mb3JtYXR0
ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gb3Blbl9odmJveChwYXJhbSkgeworICByZXR1cm4g
cHBfb3Blbl9odmJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5f
aG92Ym94KHBhcmFtKSB7CisgIHJldHVybiBwcF9vcGVuX2hvdmJveChzdGRfZm9ybWF0dGVyLCBw
YXJhbSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5fYm94KHBhcmFtKSB7CisgIHJldHVybiBwcF9vcGVu
X2JveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGNsb3NlX2JveChwYXJh
bSkgeworICByZXR1cm4gcHBfY2xvc2VfYm94KHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKwor
ZnVuY3Rpb24gb3Blbl90YWcocGFyYW0pIHsKKyAgcmV0dXJuIHBwX29wZW5fdGFnKHN0ZF9mb3Jt
YXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gY2xvc2VfdGFnKHBhcmFtKSB7CisgIHJldHVy
biBwcF9jbG9zZV90YWcoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmlu
dF9hcyhwYXJhbSwgcGFyYW0kMSkgeworICByZXR1cm4gcHBfcHJpbnRfYXMoc3RkX2Zvcm1hdHRl
ciwgcGFyYW0sIHBhcmFtJDEpOworfQorCitmdW5jdGlvbiBwcmludF9zdHJpbmcocGFyYW0pIHsK
KyAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1
bmN0aW9uIHByaW50X2ludChwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHN0ZF9m
b3JtYXR0ZXIsICIiICsgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmludF9mbG9hdChwYXJhbSkg
eworICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHN0ZF9mb3JtYXR0ZXIsIFBlcnZhc2l2ZXMuc3Ry
aW5nX29mX2Zsb2F0KHBhcmFtKSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X2NoYXIocGFyYW0pIHsK
KyAgcmV0dXJuIHBwX3ByaW50X2NoYXIoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5j
dGlvbiBwcmludF9ib29sKHBhcmFtKSB7CisgIHJldHVybiBwcF9wcmludF9zdHJpbmcoc3RkX2Zv
cm1hdHRlciwgcGFyYW0gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30KKworZnVuY3Rpb24gcHJpbnRf
YnJlYWsocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIHBwX3ByaW50X2JyZWFrKHN0ZF9mb3Jt
YXR0ZXIsIHBhcmFtLCBwYXJhbSQxKTsKK30KKworZnVuY3Rpb24gcHJpbnRfY3V0KCkgeworICBy
ZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3RkX2Zvcm1hdHRlciwgMCwgMCk7Cit9CisKK2Z1bmN0aW9u
IHByaW50X3NwYWNlKCkgeworICByZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3RkX2Zvcm1hdHRlciwg
MSwgMCk7Cit9CisKK2Z1bmN0aW9uIGZvcmNlX25ld2xpbmUocGFyYW0pIHsKKyAgcmV0dXJuIHBw
X2ZvcmNlX25ld2xpbmUoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmlu
dF9mbHVzaChwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfZmx1c2goc3RkX2Zvcm1hdHRlciwg
cGFyYW0pOworfQorCitmdW5jdGlvbiBwcmludF9uZXdsaW5lKHBhcmFtKSB7CisgIHJldHVybiBw
cF9wcmludF9uZXdsaW5lKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gcHJp
bnRfaWZfbmV3bGluZShwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfaWZfbmV3bGluZShzdGRf
Zm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5fdGJveChwYXJhbSkgeworICBy
ZXR1cm4gcHBfb3Blbl90Ym94KHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24g
Y2xvc2VfdGJveChwYXJhbSkgeworICByZXR1cm4gcHBfY2xvc2VfdGJveChzdGRfZm9ybWF0dGVy
LCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X3RicmVhayhwYXJhbSwgcGFyYW0kMSkgewor
ICByZXR1cm4gcHBfcHJpbnRfdGJyZWFrKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtLCBwYXJhbSQxKTsK
K30KKworZnVuY3Rpb24gc2V0X3RhYihwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X3RhYihzdGRf
Zm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X3RhYigpIHsKKyAgcmV0dXJu
IHBwX3ByaW50X3RicmVhayhzdGRfZm9ybWF0dGVyLCAwLCAwKTsKK30KKworZnVuY3Rpb24gc2V0
X21hcmdpbihwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X21hcmdpbihzdGRfZm9ybWF0dGVyLCBw
YXJhbSk7Cit9CisKK2Z1bmN0aW9uIGdldF9tYXJnaW4oKSB7CisgIHJldHVybiBzdGRfZm9ybWF0
dGVyWy8qIHBwX21hcmdpbiAqLzVdOworfQorCitmdW5jdGlvbiBzZXRfbWF4X2luZGVudChwYXJh
bSkgeworICByZXR1cm4gcHBfc2V0X21heF9pbmRlbnQoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOwor
fQorCitmdW5jdGlvbiBnZXRfbWF4X2luZGVudCgpIHsKKyAgcmV0dXJuIHN0ZF9mb3JtYXR0ZXJb
LyogcHBfbWF4X2luZGVudCAqLzddOworfQorCitmdW5jdGlvbiBzZXRfbWF4X2JveGVzKHBhcmFt
KSB7CisgIHJldHVybiBwcF9zZXRfbWF4X2JveGVzKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30K
KworZnVuY3Rpb24gZ2V0X21heF9ib3hlcygpIHsKKyAgcmV0dXJuIHN0ZF9mb3JtYXR0ZXJbLyog
cHBfbWF4X2JveGVzICovMTRdOworfQorCitmdW5jdGlvbiBvdmVyX21heF9ib3hlcyhwYXJhbSkg
eworICByZXR1cm4gcHBfb3Zlcl9tYXhfYm94ZXMoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQor
CitmdW5jdGlvbiBzZXRfZWxsaXBzaXNfdGV4dChwYXJhbSkgeworICBzdGRfZm9ybWF0dGVyWy8q
IHBwX2VsbGlwc2lzICovMTVdID0gcGFyYW07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1
bmN0aW9uIGdldF9lbGxpcHNpc190ZXh0KCkgeworICByZXR1cm4gc3RkX2Zvcm1hdHRlclsvKiBw
cF9lbGxpcHNpcyAqLzE1XTsKK30KKworZnVuY3Rpb24gc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5l
bChwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbChzdGRfZm9y
bWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9u
cyhwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zKHN0ZF9m
b3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rp
b25zKHBhcmFtKSB7CisgIHJldHVybiBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMoc3Rk
X2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBzZXRfZm9ybWF0dGVyX291dHB1dF9m
dW5jdGlvbnMocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIHBwX3NldF9mb3JtYXR0ZXJfb3V0
cHV0X2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSwgcGFyYW0kMSk7Cit9CisKK2Z1bmN0
aW9uIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhwYXJhbSkgeworICByZXR1cm4gcHBf
Z2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30K
KworZnVuY3Rpb24gc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhwYXJhbSwgcGFy
YW0kMSwgcGFyYW0kMiwgcGFyYW0kMykgeworICByZXR1cm4gcHBfc2V0X2FsbF9mb3JtYXR0ZXJf
b3V0cHV0X2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwg
cGFyYW0kMyk7Cit9CisKK2Z1bmN0aW9uIGdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlv
bnMocGFyYW0pIHsKKyAgcmV0dXJuIHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlv
bnMoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBzZXRfZm9ybWF0dGVyX3Rh
Z19mdW5jdGlvbnMocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0
aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGdldF9mb3JtYXR0ZXJf
dGFnX2Z1bmN0aW9ucyhwYXJhbSkgeworICByZXR1cm4gcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVu
Y3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gc2V0X3ByaW50X3Rh
Z3MocGFyYW0pIHsKKyAgc3RkX2Zvcm1hdHRlclsvKiBwcF9wcmludF90YWdzICovMjBdID0gcGFy
YW07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGdldF9wcmludF90YWdzKCkg
eworICByZXR1cm4gc3RkX2Zvcm1hdHRlclsvKiBwcF9wcmludF90YWdzICovMjBdOworfQorCitm
dW5jdGlvbiBzZXRfbWFya190YWdzKHBhcmFtKSB7CisgIHN0ZF9mb3JtYXR0ZXJbLyogcHBfbWFy
a190YWdzICovMjFdID0gcGFyYW07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9u
IGdldF9tYXJrX3RhZ3MoKSB7CisgIHJldHVybiBzdGRfZm9ybWF0dGVyWy8qIHBwX21hcmtfdGFn
cyAqLzIxXTsKK30KKworZnVuY3Rpb24gc2V0X3RhZ3MocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3Nl
dF90YWdzKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gY29tcHV0ZV90YWco
b3V0cHV0LCB0YWdfYWNjKSB7CisgIHZhciBidWYgPSBCdWZmZXIuY3JlYXRlKDE2KTsKKyAgdmFy
IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIoYnVmKTsKKyAgQ3VycnkuXzIob3V0cHV0LCBwcGYs
IHRhZ19hY2MpOworICBwcF9wcmludF9mbHVzaChwcGYsIC8qICgpICovMCk7CisgIHZhciBsZW4g
PSBidWZbLyogcG9zaXRpb24gKi8xXTsKKyAgaWYgKGxlbiA8IDIpIHsKKyAgICByZXR1cm4gQnVm
ZmVyLmNvbnRlbnRzKGJ1Zik7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIEJ1ZmZlci5zdWIo
YnVmLCAxLCBsZW4gLSAyIHwgMCk7CisgIH0KK30KKworZnVuY3Rpb24gb3V0cHV0X2Zvcm1hdHRp
bmdfbGl0KHBwZiwgZm10aW5nX2xpdCkgeworICBpZiAodHlwZW9mIGZtdGluZ19saXQgPT09ICJu
dW1iZXIiKSB7CisgICAgc3dpdGNoIChmbXRpbmdfbGl0KSB7CisgICAgICBjYXNlIDAgOiAKKyAg
ICAgICAgICByZXR1cm4gcHBfY2xvc2VfYm94KHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgIHJldHVybiBwcF9jbG9zZV90YWcocHBmLCAvKiAoKSAqLzApOworICAg
ICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2ZsdXNoKHBwZiwgLyogKCkg
Ki8wKTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiBwcF9mb3JjZV9uZXdsaW5l
KHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJldHVybiBwcF9w
cmludF9uZXdsaW5lKHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAg
IHJldHVybiBwcF9wcmludF9jaGFyKHBwZiwgLyogIkAiICovNjQpOworICAgICAgY2FzZSA2IDog
CisgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIocHBmLCAvKiAiJSIgKi8zNyk7CisgICAg
ICAKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChmbXRpbmdfbGl0LnRhZyB8IDAp
IHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiBwcF9wcmludF9icmVhayhwcGYs
IGZtdGluZ19saXRbMV0sIGZtdGluZ19saXRbMl0pOworICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHBwX3ByaW50
X2NoYXIocHBmLCAvKiAiQCIgKi82NCk7CisgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIo
cHBmLCBmbXRpbmdfbGl0WzBdKTsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBv
dXRwdXRfYWNjKHBwZiwgYWNjKSB7CisgIHZhciBleGl0ID0gMDsKKyAgdmFyIHA7CisgIHZhciBz
aXplOworICB2YXIgczsKKyAgdmFyIHAkMTsKKyAgdmFyIHNpemUkMTsKKyAgdmFyIGM7CisgIGlm
ICh0eXBlb2YgYWNjID09PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0K
KyAgZWxzZSB7CisgICAgc3dpdGNoIChhY2MudGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisg
ICAgICAgICAgb3V0cHV0X2FjYyhwcGYsIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIG91dHB1
dF9mb3JtYXR0aW5nX2xpdChwcGYsIGFjY1sxXSk7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAg
ICB2YXIgbWF0Y2ggPSBhY2NbMV07CisgICAgICAgICAgdmFyIHAkMiA9IGFjY1swXTsKKyAgICAg
ICAgICBvdXRwdXRfYWNjKHBwZiwgcCQyKTsKKyAgICAgICAgICBpZiAobWF0Y2gudGFnKSB7Cisg
ICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IENhbWxpbnRlcm5hbEZvcm1hdC5vcGVuX2JveF9vZl9z
dHJpbmcoY29tcHV0ZV90YWcob3V0cHV0X2FjYywgbWF0Y2hbMF0pKTsKKyAgICAgICAgICAgIHJl
dHVybiBwcF9vcGVuX2JveF9nZW4ocHBmLCBtYXRjaCQxWzBdLCBtYXRjaCQxWzFdKTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcHBfb3Blbl90YWco
cHBmLCBjb21wdXRlX3RhZyhvdXRwdXRfYWNjLCBtYXRjaFswXSkpOworICAgICAgICAgIH0KKyAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHZhciBwJDMgPSBhY2Nb
MF07CisgICAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgICAgaWYgKHR5cGVvZiBwJDMg
PT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBleGl0JDEgPSAzOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIGlmIChwJDMudGFnKSB7CisgICAgICAgICAgICBleGl0JDEgPSAzOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyID0gcCQz
WzFdOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQyID09PSAibnVtYmVyIikgeworICAg
ICAgICAgICAgICBleGl0JDEgPSAzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBp
ZiAobWF0Y2gkMi50YWcgPT09IDEpIHsKKyAgICAgICAgICAgICAgcCA9IHAkM1swXTsKKyAgICAg
ICAgICAgICAgc2l6ZSA9IG1hdGNoJDJbMV07CisgICAgICAgICAgICAgIHMgPSBhY2NbMV07Cisg
ICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgIGV4aXQkMSA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICAgIGlmIChleGl0JDEgPT09IDMpIHsKKyAgICAgICAgICAgIG91dHB1dF9hY2MocHBm
LCBwJDMpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIGFjY1sxXSk7
CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgdmFyIHAkNCA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQyID0gMDsKKyAgICAgICAg
ICBpZiAodHlwZW9mIHAkNCA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkMiA9IDM7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkNC50YWcpIHsKKyAgICAgICAgICAg
IGV4aXQkMiA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
dmFyIG1hdGNoJDMgPSBwJDRbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDMgPT09
ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkMiA9IDM7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQzLnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBw
JDEgPSBwJDRbMF07CisgICAgICAgICAgICAgIHNpemUkMSA9IG1hdGNoJDNbMV07CisgICAgICAg
ICAgICAgIGMgPSBhY2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQkMiA9IDM7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDIgPT09IDMpIHsKKyAgICAg
ICAgICAgIG91dHB1dF9hY2MocHBmLCBwJDQpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50
X2NoYXIocHBmLCBhY2NbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgNCA6IAorICAgICAgICAgIHZhciBwJDUgPSBhY2NbMF07CisgICAgICAgICAgdmFyIGV4
aXQkMyA9IDA7CisgICAgICAgICAgaWYgKHR5cGVvZiBwJDUgPT09ICJudW1iZXIiKSB7CisgICAg
ICAgICAgICBleGl0JDMgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChwJDUu
dGFnKSB7CisgICAgICAgICAgICBleGl0JDMgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gcCQ1WzFdOworICAgICAgICAgICAgaWYg
KHR5cGVvZiBtYXRjaCQ0ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgICBleGl0JDMgPSAz
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkNC50YWcgPT09IDEp
IHsKKyAgICAgICAgICAgICAgcCA9IHAkNVswXTsKKyAgICAgICAgICAgICAgc2l6ZSA9IG1hdGNo
JDRbMV07CisgICAgICAgICAgICAgIHMgPSBhY2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAx
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQk
MyA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDMg
PT09IDMpIHsKKyAgICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBwJDUpOworICAgICAgICAgICAg
cmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIGFjY1sxXSk7CisgICAgICAgICAgfQorICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIHAkNiA9IGFjY1swXTsK
KyAgICAgICAgICB2YXIgZXhpdCQ0ID0gMDsKKyAgICAgICAgICBpZiAodHlwZW9mIHAkNiA9PT0g
Im51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgfQorICAgICAg
ICAgIGVsc2UgaWYgKHAkNi50YWcpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIG1hdGNoJDUgPSBwJDZbMV07
CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDUgPT09ICJudW1iZXIiKSB7CisgICAgICAg
ICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICht
YXRjaCQ1LnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBwJDEgPSBwJDZbMF07CisgICAgICAg
ICAgICAgIHNpemUkMSA9IG1hdGNoJDVbMV07CisgICAgICAgICAgICAgIGMgPSBhY2NbMV07Cisg
ICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICAgIGlmIChleGl0JDQgPT09IDMpIHsKKyAgICAgICAgICAgIG91dHB1dF9hY2MocHBm
LCBwJDYpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIocHBmLCBhY2NbMV0pOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAg
IG91dHB1dF9hY2MocHBmLCBhY2NbMF0pOworICAgICAgICAgIHJldHVybiBDdXJyeS5fMShhY2Nb
MV0sIHBwZik7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBvdXRwdXRfYWNjKHBwZiwgYWNj
WzBdKTsKKyAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfZmx1c2gocHBmLCAvKiAoKSAqLzApOwor
ICAgICAgY2FzZSA4IDogCisgICAgICAgICAgb3V0cHV0X2FjYyhwcGYsIGFjY1swXSk7CisgICAg
ICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmlu
dmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAgICAgYWNjWzFdCisgICAgICAgICAgICAgIF07
CisgICAgICAKKyAgICB9CisgIH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAgY2FzZSAxIDogCisg
ICAgICAgIG91dHB1dF9hY2MocHBmLCBwKTsKKyAgICAgICAgcmV0dXJuIHBwX3ByaW50X2FzX3Np
emUocHBmLCBzaXplLCBzKTsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgb3V0cHV0X2FjYyhwcGYs
IHAkMSk7CisgICAgICAgIHJldHVybiBwcF9wcmludF9hc19zaXplKHBwZiwgc2l6ZSQxLCBDYW1s
X3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFrZSgxLCBjKSkpOworICAgIAorICB9Cit9
CisKK2Z1bmN0aW9uIHN0cnB1dF9hY2MocHBmLCBhY2MpIHsKKyAgdmFyIGV4aXQgPSAwOworICB2
YXIgcDsKKyAgdmFyIHNpemU7CisgIHZhciBzOworICB2YXIgcCQxOworICB2YXIgc2l6ZSQxOwor
ICB2YXIgYzsKKyAgaWYgKHR5cGVvZiBhY2MgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGFjYy50YWcgfCAwKSB7CisgICAg
ICBjYXNlIDAgOiAKKyAgICAgICAgICBzdHJwdXRfYWNjKHBwZiwgYWNjWzBdKTsKKyAgICAgICAg
ICByZXR1cm4gb3V0cHV0X2Zvcm1hdHRpbmdfbGl0KHBwZiwgYWNjWzFdKTsKKyAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgIHZhciBtYXRjaCA9IGFjY1sxXTsKKyAgICAgICAgICB2YXIgcCQyID0g
YWNjWzBdOworICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDIpOworICAgICAgICAgIGlmICht
YXRjaC50YWcpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxID0gQ2FtbGludGVybmFsRm9ybWF0
Lm9wZW5fYm94X29mX3N0cmluZyhjb21wdXRlX3RhZyhzdHJwdXRfYWNjLCBtYXRjaFswXSkpOwor
ICAgICAgICAgICAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihwcGYsIG1hdGNoJDFbMF0sIG1hdGNo
JDFbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVy
biBwcF9vcGVuX3RhZyhwcGYsIGNvbXB1dGVfdGFnKHN0cnB1dF9hY2MsIG1hdGNoWzBdKSk7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAg
dmFyIHAkMyA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgICAgICBp
ZiAodHlwZW9mIHAkMyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkMSA9IDM7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkMy50YWcpIHsKKyAgICAgICAgICAgIGV4
aXQkMSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFy
IG1hdGNoJDIgPSBwJDNbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDIgPT09ICJu
dW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkMSA9IDM7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIGlmIChtYXRjaCQyLnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBwID0g
cCQzWzBdOworICAgICAgICAgICAgICBzaXplID0gbWF0Y2gkMlsxXTsKKyAgICAgICAgICAgICAg
cyA9IGFjY1sxXTsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQxID0gMzsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGV4aXQkMSA9PT0gMykgeworICAgICAgICAgICAg
c3RycHV0X2FjYyhwcGYsIHAkMyk7CisgICAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfc3RyaW5n
KHBwZiwgYWNjWzFdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDMgOiAKKyAgICAgICAgICB2YXIgcCQ0ID0gYWNjWzBdOworICAgICAgICAgIHZhciBleGl0JDIg
PSAwOworICAgICAgICAgIGlmICh0eXBlb2YgcCQ0ID09PSAibnVtYmVyIikgeworICAgICAgICAg
ICAgZXhpdCQyID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAocCQ0LnRhZykg
eworICAgICAgICAgICAgZXhpdCQyID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICB2YXIgbWF0Y2gkMyA9IHAkNFsxXTsKKyAgICAgICAgICAgIGlmICh0eXBl
b2YgbWF0Y2gkMyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgZXhpdCQyID0gMzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDMudGFnID09PSAxKSB7Cisg
ICAgICAgICAgICAgIHAkMSA9IHAkNFswXTsKKyAgICAgICAgICAgICAgc2l6ZSQxID0gbWF0Y2gk
M1sxXTsKKyAgICAgICAgICAgICAgYyA9IGFjY1sxXTsKKyAgICAgICAgICAgICAgZXhpdCA9IDI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQy
ID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGV4aXQkMiA9
PT0gMykgeworICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkNCk7CisgICAgICAgICAgICBy
ZXR1cm4gcHBfcHJpbnRfY2hhcihwcGYsIGFjY1sxXSk7CisgICAgICAgICAgfQorICAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgdmFyIHAkNSA9IGFjY1swXTsKKyAg
ICAgICAgICB2YXIgZXhpdCQzID0gMDsKKyAgICAgICAgICBpZiAodHlwZW9mIHAkNSA9PT0gIm51
bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgaWYgKHAkNS50YWcpIHsKKyAgICAgICAgICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIG1hdGNoJDQgPSBwJDVbMV07Cisg
ICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDQgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRj
aCQ0LnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBwID0gcCQ1WzBdOworICAgICAgICAgICAg
ICBzaXplID0gbWF0Y2gkNFsxXTsKKyAgICAgICAgICAgICAgcyA9IGFjY1sxXTsKKyAgICAgICAg
ICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgZXhpdCQzID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAg
ICAgaWYgKGV4aXQkMyA9PT0gMykgeworICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkNSk7
CisgICAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHBwZiwgYWNjWzFdKTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICB2YXIg
cCQ2ID0gYWNjWzBdOworICAgICAgICAgIHZhciBleGl0JDQgPSAwOworICAgICAgICAgIGlmICh0
eXBlb2YgcCQ2ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSBpZiAocCQ2LnRhZykgeworICAgICAgICAgICAgZXhpdCQ0
ID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkNSA9IHAkNlsxXTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkNSA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgaWYgKG1hdGNoJDUudGFnID09PSAxKSB7CisgICAgICAgICAgICAgIHAkMSA9IHAk
NlswXTsKKyAgICAgICAgICAgICAgc2l6ZSQxID0gbWF0Y2gkNVsxXTsKKyAgICAgICAgICAgICAg
YyA9IGFjY1sxXTsKKyAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGV4aXQkNCA9PT0gMykgeworICAgICAgICAgICAg
c3RycHV0X2FjYyhwcGYsIHAkNik7CisgICAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfY2hhcihw
cGYsIGFjY1sxXSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2
IDogCisgICAgICAgICAgdmFyIHAkNyA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQ1ID0g
MDsKKyAgICAgICAgICBpZiAodHlwZW9mIHAkNyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAg
IGV4aXQkNSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkNy50YWcpIHsK
KyAgICAgICAgICAgIGV4aXQkNSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgdmFyIG1hdGNoJDYgPSBwJDdbMV07CisgICAgICAgICAgICBpZiAodHlwZW9m
IG1hdGNoJDYgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkNSA9IDM7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQ2LnRhZyA9PT0gMSkgeworICAg
ICAgICAgICAgICBzdHJwdXRfYWNjKHBwZiwgcCQ3WzBdKTsKKyAgICAgICAgICAgICAgcmV0dXJu
IHBwX3ByaW50X2FzX3NpemUocHBmLCBtYXRjaCQ2WzFdLCBDdXJyeS5fMShhY2NbMV0sIC8qICgp
ICovMCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IGV4aXQkNSA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChl
eGl0JDUgPT09IDMpIHsKKyAgICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDcpOworICAgICAg
ICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIEN1cnJ5Ll8xKGFjY1sxXSwgLyogKCkg
Ki8wKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA3IDogCisg
ICAgICAgICAgc3RycHV0X2FjYyhwcGYsIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIHBwX3By
aW50X2ZsdXNoKHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIHN0
cnB1dF9hY2MocHBmLCBhY2NbMF0pOworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAg
ICAgIGFjY1sxXQorICAgICAgICAgICAgICBdOworICAgICAgCisgICAgfQorICB9CisgIHN3aXRj
aCAoZXhpdCkgeworICAgIGNhc2UgMSA6IAorICAgICAgICBzdHJwdXRfYWNjKHBwZiwgcCk7Cisg
ICAgICAgIHJldHVybiBwcF9wcmludF9hc19zaXplKHBwZiwgc2l6ZSwgcyk7CisgICAgY2FzZSAy
IDogCisgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDEpOworICAgICAgICByZXR1cm4gcHBfcHJp
bnRfYXNfc2l6ZShwcGYsIHNpemUkMSwgQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5dGVz
Lm1ha2UoMSwgYykpKTsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBrZnByaW50ZihrLCBvLCBw
YXJhbSkgeworICByZXR1cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGZ1bmN0aW9u
IChvLCBhY2MpIHsKKyAgICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2MpOworICAgICAgICAg
ICAgICByZXR1cm4gQ3VycnkuXzEoaywgbyk7CisgICAgICAgICAgICB9LCBvLCAvKiBFbmRfb2Zf
YWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5jdGlvbiBpa2ZwcmludGYoaywgeCwgcGFyYW0p
IHsKKyAgcmV0dXJuIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihmdW5jdGlvbiAoXywg
XyQxKSB7CisgICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShrLCB4KTsKKyAgICAgICAgICAg
IH0sIHgsIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIGZwcmlu
dGYocHBmLCBmbXQpIHsKKyAgcmV0dXJuIGtmcHJpbnRmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICAgIH0sIHBwZiwgZm10KTsKK30KKwor
ZnVuY3Rpb24gaWZwcmludGYocHBmLCBmbXQpIHsKKyAgcmV0dXJuIGlrZnByaW50ZihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgICB9LCBw
cGYsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIHByaW50ZihmbXQpIHsKKyAgcmV0dXJuIGZwcmludGYo
c3RkX2Zvcm1hdHRlciwgZm10KTsKK30KKworZnVuY3Rpb24gZXByaW50ZihmbXQpIHsKKyAgcmV0
dXJuIGZwcmludGYoZXJyX2Zvcm1hdHRlciwgZm10KTsKK30KKworZnVuY3Rpb24ga3NwcmludGYo
aywgcGFyYW0pIHsKKyAgdmFyIGIgPSBCdWZmZXIuY3JlYXRlKDUxMik7CisgIHZhciBwcGYgPSBm
b3JtYXR0ZXJfb2ZfYnVmZmVyKGIpOworICB2YXIgayRwcmltZSA9IGZ1bmN0aW9uIChfLCBhY2Mp
IHsKKyAgICBzdHJwdXRfYWNjKHBwZiwgYWNjKTsKKyAgICByZXR1cm4gQ3VycnkuXzEoaywgZmx1
c2hfYnVmX2Zvcm1hdHRlcihiLCBwcGYpKTsKKyAgfTsKKyAgcmV0dXJuIENhbWxpbnRlcm5hbEZv
cm1hdC5tYWtlX3ByaW50ZihrJHByaW1lLCAvKiAoKSAqLzAsIC8qIEVuZF9vZl9hY2MgKi8wLCBw
YXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIHNwcmludGYoZm10KSB7CisgIHJldHVybiBrc3ByaW50
ZihmdW5jdGlvbiAocykgeworICAgICAgICAgICAgICByZXR1cm4gczsKKyAgICAgICAgICAgIH0s
IGZtdCk7Cit9CisKK2Z1bmN0aW9uIGFzcHJpbnRmKHBhcmFtKSB7CisgIHZhciBiID0gQnVmZmVy
LmNyZWF0ZSg1MTIpOworICB2YXIgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlcihiKTsKKyAgdmFy
IGskcHJpbWUgPSBmdW5jdGlvbiAocHBmLCBhY2MpIHsKKyAgICBvdXRwdXRfYWNjKHBwZiwgYWNj
KTsKKyAgICBwcF9mbHVzaF9xdWV1ZShwcGYsIC8qIGZhbHNlICovMCk7CisgICAgcmV0dXJuIGZs
dXNoX2J1Zl9mb3JtYXR0ZXIoYiwgcHBmKTsKKyAgfTsKKyAgcmV0dXJuIENhbWxpbnRlcm5hbEZv
cm1hdC5tYWtlX3ByaW50ZihrJHByaW1lLCBwcGYsIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVsw
XSk7Cit9CisKK2Z1bmN0aW9uIGJwcmludGYoYiwgcGFyYW0pIHsKKyAgdmFyIGsgPSBmdW5jdGlv
biAocHBmLCBhY2MpIHsKKyAgICBvdXRwdXRfYWNjKHBwZiwgYWNjKTsKKyAgICByZXR1cm4gcHBf
Zmx1c2hfcXVldWUocHBmLCAvKiBmYWxzZSAqLzApOworICB9OworICByZXR1cm4gQ2FtbGludGVy
bmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGssIGZvcm1hdHRlcl9vZl9idWZmZXIoYiksIC8qIEVuZF9v
Zl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK1BlcnZhc2l2ZXMuYXRfZXhpdChwcmludF9mbHVz
aCk7CisKK3ZhciBrcHJpbnRmID0ga3NwcmludGY7CisKK2V4cG9ydHMub3Blbl9ib3ggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fYm94OworZXhwb3J0cy5jbG9zZV9ib3ggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gY2xvc2VfYm94OworZXhwb3J0cy5wcmludF9zdHJp
bmcgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfc3RyaW5nOworZXhwb3J0cy5wcmlu
dF9hcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfYXM7CitleHBvcnRzLnBy
aW50X2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9pbnQ7CitleHBvcnRz
LnByaW50X2Zsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9mbG9hdDsKK2V4
cG9ydHMucHJpbnRfY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHByaW50X2NoYXI7
CitleHBvcnRzLnByaW50X2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9i
b29sOworZXhwb3J0cy5wcmludF9zcGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJp
bnRfc3BhY2U7CitleHBvcnRzLnByaW50X2N1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBwcmludF9jdXQ7CitleHBvcnRzLnByaW50X2JyZWFrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBwcmludF9icmVhazsKK2V4cG9ydHMucHJpbnRfZmx1c2ggICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IHByaW50X2ZsdXNoOworZXhwb3J0cy5wcmludF9uZXdsaW5lICAgICAgICAgICAg
ICAgICAgICAgICAgID0gcHJpbnRfbmV3bGluZTsKK2V4cG9ydHMuZm9yY2VfbmV3bGluZSAgICAg
ICAgICAgICAgICAgICAgICAgICA9IGZvcmNlX25ld2xpbmU7CitleHBvcnRzLnByaW50X2lmX25l
d2xpbmUgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9pZl9uZXdsaW5lOworZXhwb3J0cy5z
ZXRfbWFyZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc2V0X21hcmdpbjsKK2V4cG9y
dHMuZ2V0X21hcmdpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdldF9tYXJnaW47Citl
eHBvcnRzLnNldF9tYXhfaW5kZW50ICAgICAgICAgICAgICAgICAgICAgICAgPSBzZXRfbWF4X2lu
ZGVudDsKK2V4cG9ydHMuZ2V0X21heF9pbmRlbnQgICAgICAgICAgICAgICAgICAgICAgICA9IGdl
dF9tYXhfaW5kZW50OworZXhwb3J0cy5zZXRfbWF4X2JveGVzICAgICAgICAgICAgICAgICAgICAg
ICAgID0gc2V0X21heF9ib3hlczsKK2V4cG9ydHMuZ2V0X21heF9ib3hlcyAgICAgICAgICAgICAg
ICAgICAgICAgICA9IGdldF9tYXhfYm94ZXM7CitleHBvcnRzLm92ZXJfbWF4X2JveGVzICAgICAg
ICAgICAgICAgICAgICAgICAgPSBvdmVyX21heF9ib3hlczsKK2V4cG9ydHMub3Blbl9oYm94ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5faGJveDsKK2V4cG9ydHMub3Blbl92Ym94
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fdmJveDsKK2V4cG9ydHMub3Blbl9o
dmJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5faHZib3g7CitleHBvcnRzLm9w
ZW5faG92Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBvcGVuX2hvdmJveDsKK2V4cG9y
dHMub3Blbl90Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fdGJveDsKK2V4
cG9ydHMuY2xvc2VfdGJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGNsb3NlX3Rib3g7
CitleHBvcnRzLnByaW50X3RicmVhayAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF90
YnJlYWs7CitleHBvcnRzLnNldF90YWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBz
ZXRfdGFiOworZXhwb3J0cy5wcmludF90YWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
cHJpbnRfdGFiOworZXhwb3J0cy5zZXRfZWxsaXBzaXNfdGV4dCAgICAgICAgICAgICAgICAgICAg
ID0gc2V0X2VsbGlwc2lzX3RleHQ7CitleHBvcnRzLmdldF9lbGxpcHNpc190ZXh0ICAgICAgICAg
ICAgICAgICAgICAgPSBnZXRfZWxsaXBzaXNfdGV4dDsKK2V4cG9ydHMub3Blbl90YWcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fdGFnOworZXhwb3J0cy5jbG9zZV90YWcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gY2xvc2VfdGFnOworZXhwb3J0cy5zZXRfdGFncyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc2V0X3RhZ3M7CitleHBvcnRzLnNldF9wcmlu
dF90YWdzICAgICAgICAgICAgICAgICAgICAgICAgPSBzZXRfcHJpbnRfdGFnczsKK2V4cG9ydHMu
c2V0X21hcmtfdGFncyAgICAgICAgICAgICAgICAgICAgICAgICA9IHNldF9tYXJrX3RhZ3M7Citl
eHBvcnRzLmdldF9wcmludF90YWdzICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXRfcHJpbnRf
dGFnczsKK2V4cG9ydHMuZ2V0X21hcmtfdGFncyAgICAgICAgICAgICAgICAgICAgICAgICA9IGdl
dF9tYXJrX3RhZ3M7CitleHBvcnRzLnNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgICAgICAgICAg
ICAgPSBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsOworZXhwb3J0cy5zZXRfZm9ybWF0dGVyX291
dHB1dF9mdW5jdGlvbnMgICAgICAgID0gc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOwor
ZXhwb3J0cy5nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgICAgID0gZ2V0X2Zvcm1h
dHRlcl9vdXRwdXRfZnVuY3Rpb25zOworZXhwb3J0cy5zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlv
bnMgICAgICAgICAgID0gc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOworZXhwb3J0cy5nZXRf
Zm9ybWF0dGVyX291dF9mdW5jdGlvbnMgICAgICAgICAgID0gZ2V0X2Zvcm1hdHRlcl9vdXRfZnVu
Y3Rpb25zOworZXhwb3J0cy5zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgICAgICAgICAgID0g
c2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOworZXhwb3J0cy5nZXRfZm9ybWF0dGVyX3RhZ19m
dW5jdGlvbnMgICAgICAgICAgID0gZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOworZXhwb3J0
cy5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgICAgICAgICAgICAgID0gZm9ybWF0dGVyX29mX291
dF9jaGFubmVsOworZXhwb3J0cy5zdGRfZm9ybWF0dGVyICAgICAgICAgICAgICAgICAgICAgICAg
ID0gc3RkX2Zvcm1hdHRlcjsKK2V4cG9ydHMuZXJyX2Zvcm1hdHRlciAgICAgICAgICAgICAgICAg
ICAgICAgICA9IGVycl9mb3JtYXR0ZXI7CitleHBvcnRzLmZvcm1hdHRlcl9vZl9idWZmZXIgICAg
ICAgICAgICAgICAgICAgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyOworZXhwb3J0cy5zdGRidWYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RkYnVmOworZXhwb3J0cy5zdHJfZm9ybWF0
dGVyICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RyX2Zvcm1hdHRlcjsKK2V4cG9ydHMuZmx1
c2hfc3RyX2Zvcm1hdHRlciAgICAgICAgICAgICAgICAgICA9IGZsdXNoX3N0cl9mb3JtYXR0ZXI7
CitleHBvcnRzLm1ha2VfZm9ybWF0dGVyICAgICAgICAgICAgICAgICAgICAgICAgPSBtYWtlX2Zv
cm1hdHRlcjsKK2V4cG9ydHMucHBfb3Blbl9oYm94ICAgICAgICAgICAgICAgICAgICAgICAgICA9
IHBwX29wZW5faGJveDsKK2V4cG9ydHMucHBfb3Blbl92Ym94ICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IHBwX29wZW5fdmJveDsKK2V4cG9ydHMucHBfb3Blbl9odmJveCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IHBwX29wZW5faHZib3g7CitleHBvcnRzLnBwX29wZW5faG92Ym94ICAgICAg
ICAgICAgICAgICAgICAgICAgPSBwcF9vcGVuX2hvdmJveDsKK2V4cG9ydHMucHBfb3Blbl9ib3gg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX29wZW5fYm94OworZXhwb3J0cy5wcF9jbG9z
ZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfY2xvc2VfYm94OworZXhwb3J0cy5w
cF9vcGVuX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfb3Blbl90YWc7CitleHBv
cnRzLnBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9jbG9zZV90YWc7
CitleHBvcnRzLnBwX3ByaW50X3N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9wcmlu
dF9zdHJpbmc7CitleHBvcnRzLnBwX3ByaW50X2FzICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBwcF9wcmludF9hczsKK2V4cG9ydHMucHBfcHJpbnRfaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IHBwX3ByaW50X2ludDsKK2V4cG9ydHMucHBfcHJpbnRfZmxvYXQgICAgICAgICAgICAg
ICAgICAgICAgICA9IHBwX3ByaW50X2Zsb2F0OworZXhwb3J0cy5wcF9wcmludF9jaGFyICAgICAg
ICAgICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfY2hhcjsKK2V4cG9ydHMucHBfcHJpbnRfYm9v
bCAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2Jvb2w7CitleHBvcnRzLnBwX3By
aW50X2JyZWFrICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9wcmludF9icmVhazsKK2V4cG9y
dHMucHBfcHJpbnRfY3V0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2N1dDsK
K2V4cG9ydHMucHBfcHJpbnRfc3BhY2UgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50
X3NwYWNlOworZXhwb3J0cy5wcF9mb3JjZV9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgID0g
cHBfZm9yY2VfbmV3bGluZTsKK2V4cG9ydHMucHBfcHJpbnRfZmx1c2ggICAgICAgICAgICAgICAg
ICAgICAgICA9IHBwX3ByaW50X2ZsdXNoOworZXhwb3J0cy5wcF9wcmludF9uZXdsaW5lICAgICAg
ICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfbmV3bGluZTsKK2V4cG9ydHMucHBfcHJpbnRfaWZf
bmV3bGluZSAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2lmX25ld2xpbmU7CitleHBvcnRz
LnBwX29wZW5fdGJveCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9vcGVuX3Rib3g7Citl
eHBvcnRzLnBwX2Nsb3NlX3Rib3ggICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9jbG9zZV90
Ym94OworZXhwb3J0cy5wcF9wcmludF90YnJlYWsgICAgICAgICAgICAgICAgICAgICAgID0gcHBf
cHJpbnRfdGJyZWFrOworZXhwb3J0cy5wcF9zZXRfdGFiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gcHBfc2V0X3RhYjsKK2V4cG9ydHMucHBfcHJpbnRfdGFiICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IHBwX3ByaW50X3RhYjsKK2V4cG9ydHMucHBfc2V0X3RhZ3MgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHBwX3NldF90YWdzOworZXhwb3J0cy5wcF9zZXRfcHJpbnRfdGFncyAg
ICAgICAgICAgICAgICAgICAgID0gcHBfc2V0X3ByaW50X3RhZ3M7CitleHBvcnRzLnBwX3NldF9t
YXJrX3RhZ3MgICAgICAgICAgICAgICAgICAgICAgPSBwcF9zZXRfbWFya190YWdzOworZXhwb3J0
cy5wcF9nZXRfcHJpbnRfdGFncyAgICAgICAgICAgICAgICAgICAgID0gcHBfZ2V0X3ByaW50X3Rh
Z3M7CitleHBvcnRzLnBwX2dldF9tYXJrX3RhZ3MgICAgICAgICAgICAgICAgICAgICAgPSBwcF9n
ZXRfbWFya190YWdzOworZXhwb3J0cy5wcF9zZXRfbWFyZ2luICAgICAgICAgICAgICAgICAgICAg
ICAgID0gcHBfc2V0X21hcmdpbjsKK2V4cG9ydHMucHBfZ2V0X21hcmdpbiAgICAgICAgICAgICAg
ICAgICAgICAgICA9IHBwX2dldF9tYXJnaW47CitleHBvcnRzLnBwX3NldF9tYXhfaW5kZW50ICAg
ICAgICAgICAgICAgICAgICAgPSBwcF9zZXRfbWF4X2luZGVudDsKK2V4cG9ydHMucHBfZ2V0X21h
eF9pbmRlbnQgICAgICAgICAgICAgICAgICAgICA9IHBwX2dldF9tYXhfaW5kZW50OworZXhwb3J0
cy5wcF9zZXRfbWF4X2JveGVzICAgICAgICAgICAgICAgICAgICAgID0gcHBfc2V0X21heF9ib3hl
czsKK2V4cG9ydHMucHBfZ2V0X21heF9ib3hlcyAgICAgICAgICAgICAgICAgICAgICA9IHBwX2dl
dF9tYXhfYm94ZXM7CitleHBvcnRzLnBwX292ZXJfbWF4X2JveGVzICAgICAgICAgICAgICAgICAg
ICAgPSBwcF9vdmVyX21heF9ib3hlczsKK2V4cG9ydHMucHBfc2V0X2VsbGlwc2lzX3RleHQgICAg
ICAgICAgICAgICAgICA9IHBwX3NldF9lbGxpcHNpc190ZXh0OworZXhwb3J0cy5wcF9nZXRfZWxs
aXBzaXNfdGV4dCAgICAgICAgICAgICAgICAgID0gcHBfZ2V0X2VsbGlwc2lzX3RleHQ7CitleHBv
cnRzLnBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgICAgICAgICAgPSBwcF9zZXRfZm9ybWF0
dGVyX291dF9jaGFubmVsOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlv
bnMgICAgID0gcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9n
ZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRw
dXRfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgICAg
ICAgID0gcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9nZXRfZm9y
bWF0dGVyX3RhZ19mdW5jdGlvbnMgICAgICAgID0gcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rp
b25zOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgICAgICAgID0gcHBf
c2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9nZXRfZm9ybWF0dGVyX291
dF9mdW5jdGlvbnMgICAgICAgID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOworZXhw
b3J0cy5wcF9wcmludF9saXN0ICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfbGlz
dDsKK2V4cG9ydHMucHBfcHJpbnRfdGV4dCAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3By
aW50X3RleHQ7CitleHBvcnRzLmZwcmludGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBmcHJpbnRmOworZXhwb3J0cy5wcmludGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gcHJpbnRmOworZXhwb3J0cy5lcHJpbnRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gZXByaW50ZjsKK2V4cG9ydHMuc3ByaW50ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IHNwcmludGY7CitleHBvcnRzLmFzcHJpbnRmICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBhc3ByaW50ZjsKK2V4cG9ydHMuaWZwcmludGYgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IGlmcHJpbnRmOworZXhwb3J0cy5rZnByaW50ZiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0ga2ZwcmludGY7CitleHBvcnRzLmlrZnByaW50ZiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBpa2ZwcmludGY7CitleHBvcnRzLmtzcHJpbnRmICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBrc3ByaW50ZjsKK2V4cG9ydHMuYnByaW50ZiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IGJwcmludGY7CitleHBvcnRzLmtwcmludGYgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBrcHJpbnRmOworZXhwb3J0cy5zZXRfYWxsX2Zvcm1hdHRlcl9vdXRw
dXRfZnVuY3Rpb25zICAgID0gc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uczsKK2V4
cG9ydHMuZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAgICA9IGdldF9hbGxfZm9y
bWF0dGVyX291dHB1dF9mdW5jdGlvbnM7CitleHBvcnRzLnBwX3NldF9hbGxfZm9ybWF0dGVyX291
dHB1dF9mdW5jdGlvbnMgPSBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOwor
ZXhwb3J0cy5wcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID0gcHBfZ2V0X2Fs
bF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uczsKKy8qIGJsYW5rX2xpbmUgTm90IGEgcHVyZSBt
b2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBmb3JtYXQuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVy
biBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnaTMyJ10gPSBmdW5jdGlvbigpIHsK
K8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpMzIuanMgLy8vLy8v
Ly8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBF
RElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgSW50ICAgICAgICA9IHJlcXVpcmUo
Ii4vaW50Iik7Cit2YXIgSW50MzIgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9p
bnQzMiIpOwordmFyIENhbWxfaW50MzIgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2Ft
bF9pbnQzMiIpOworCit2YXIgaW5jbHVkZSA9IEludC5NYWtlKC8qIG1vZHVsZSAqL1sKKyAgICAg
IC8qIHplcm8gKi9JbnQzMi56ZXJvLAorICAgICAgLyogb25lICovSW50MzIub25lLAorICAgICAg
LyogbWludXNfb25lICovSW50MzIubWludXNfb25lLAorICAgICAgLyogbWF4X2ludCAqL0ludDMy
Lm1heF9pbnQsCisgICAgICAvKiBtaW5faW50ICovSW50MzIubWluX2ludCwKKyAgICAgIC8qICVp
bnQzMl9uZWcgKi9mdW5jdGlvbiAocHJpbSkgeworICAgICAgICByZXR1cm4gLXByaW0gfCAwOwor
ICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl9hZGQgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7
CisgICAgICAgIHJldHVybiBwcmltICsgcHJpbSQxIHwgMDsKKyAgICAgIH0sCisgICAgICAvKiAl
aW50MzJfc3ViICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJp
bSAtIHByaW0kMSB8IDA7CisgICAgICB9LAorICAgICAgLyogJWludDMyX211bCAqL0NhbWxfaW50
MzIuaW11bCwKKyAgICAgIC8qICVpbnQzMl9kaXYgKi9DYW1sX2ludDMyLmRpdiwKKyAgICAgIC8q
ICVpbnQzMl9tb2QgKi9DYW1sX2ludDMyLm1vZF8sCisgICAgICAvKiAlaW50MzJfYW5kICovZnVu
Y3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSAmIHByaW0kMTsKKyAg
ICAgIH0sCisgICAgICAvKiBsb2dub3QgKi9JbnQzMi5sb2dub3QsCisgICAgICAvKiAlaW50MzJf
b3IgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiBwcmltIHwgcHJp
bSQxOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl94b3IgKi9mdW5jdGlvbiAocHJpbSwgcHJp
bSQxKSB7CisgICAgICAgIHJldHVybiBwcmltIF4gcHJpbSQxOworICAgICAgfSwKKyAgICAgIC8q
ICVpbnQzMl9sc2wgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAo
cHJpbSA8PCBwcmltJDEpOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl9hc3IgKi9mdW5jdGlv
biAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAocHJpbSA+PiBwcmltJDEpOworICAg
ICAgfSwKKyAgICAgIC8qICVpbnQzMl9sc3IgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7Cisg
ICAgICAgIHJldHVybiAocHJpbSA+Pj4gcHJpbSQxKSB8IDA7CisgICAgICB9LAorICAgICAgLyog
JWludDMyX29mX2ludCAqL2Z1bmN0aW9uIChwcmltKSB7CisgICAgICAgIHJldHVybiBwcmltOwor
ICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl90b19pbnQgKi9mdW5jdGlvbiAocHJpbSkgeworICAg
ICAgICByZXR1cm4gcHJpbTsKKyAgICAgIH0sCisgICAgICAvKiB0b19zdHJpbmcgKi9JbnQzMi50
b19zdHJpbmcsCisgICAgICAvKiBiaXR3aWR0aCAqLzMyCisgICAgXSk7CisKK3ZhciBvZl9iaXRz
ID0gaW5jbHVkZVswXTsKKwordmFyIHRvX2JpdHMgPSBpbmNsdWRlWzFdOworCit2YXIgemVybyA9
IGluY2x1ZGVbMl07CisKK3ZhciBhZGQgPSBpbmNsdWRlWzNdOworCit2YXIgc3ViID0gaW5jbHVk
ZVs0XTsKKwordmFyIG11bCA9IGluY2x1ZGVbNV07CisKK3ZhciBkaXZfcyA9IGluY2x1ZGVbNl07
CisKK3ZhciBkaXZfdSA9IGluY2x1ZGVbN107CisKK3ZhciByZW1fcyA9IGluY2x1ZGVbOF07CisK
K3ZhciByZW1fdSA9IGluY2x1ZGVbOV07CisKK3ZhciBhbmRfID0gaW5jbHVkZVsxMF07CisKK3Zh
ciBvcl8gPSBpbmNsdWRlWzExXTsKKwordmFyIHhvciA9IGluY2x1ZGVbMTJdOworCit2YXIgc2hs
ID0gaW5jbHVkZVsxM107CisKK3ZhciBzaHJfcyA9IGluY2x1ZGVbMTRdOworCit2YXIgc2hyX3Ug
PSBpbmNsdWRlWzE1XTsKKwordmFyIHJvdGwgPSBpbmNsdWRlWzE2XTsKKwordmFyIHJvdHIgPSBp
bmNsdWRlWzE3XTsKKwordmFyIGNseiA9IGluY2x1ZGVbMThdOworCit2YXIgY3R6ID0gaW5jbHVk
ZVsxOV07CisKK3ZhciBwb3BjbnQgPSBpbmNsdWRlWzIwXTsKKwordmFyIGVxeiA9IGluY2x1ZGVb
MjFdOworCit2YXIgZXEgPSBpbmNsdWRlWzIyXTsKKwordmFyIG5lID0gaW5jbHVkZVsyM107CisK
K3ZhciBsdF9zID0gaW5jbHVkZVsyNF07CisKK3ZhciBsdF91ID0gaW5jbHVkZVsyNV07CisKK3Zh
ciBsZV9zID0gaW5jbHVkZVsyNl07CisKK3ZhciBsZV91ID0gaW5jbHVkZVsyN107CisKK3ZhciBn
dF9zID0gaW5jbHVkZVsyOF07CisKK3ZhciBndF91ID0gaW5jbHVkZVsyOV07CisKK3ZhciBnZV9z
ID0gaW5jbHVkZVszMF07CisKK3ZhciBnZV91ID0gaW5jbHVkZVszMV07CisKK3ZhciBvZl9pbnRf
cyA9IGluY2x1ZGVbMzJdOworCit2YXIgb2ZfaW50X3UgPSBpbmNsdWRlWzMzXTsKKwordmFyIG9m
X3N0cmluZ19zID0gaW5jbHVkZVszNF07CisKK3ZhciBvZl9zdHJpbmdfdSA9IGluY2x1ZGVbMzVd
OworCit2YXIgb2Zfc3RyaW5nID0gaW5jbHVkZVszNl07CisKK3ZhciB0b19zdHJpbmdfcyA9IGlu
Y2x1ZGVbMzddOworCit2YXIgdG9fc3RyaW5nX3UgPSBpbmNsdWRlWzM4XTsKKworZXhwb3J0cy5v
Zl9iaXRzICAgICA9IG9mX2JpdHM7CitleHBvcnRzLnRvX2JpdHMgICAgID0gdG9fYml0czsKK2V4
cG9ydHMuemVybyAgICAgICAgPSB6ZXJvOworZXhwb3J0cy5hZGQgICAgICAgICA9IGFkZDsKK2V4
cG9ydHMuc3ViICAgICAgICAgPSBzdWI7CitleHBvcnRzLm11bCAgICAgICAgID0gbXVsOworZXhw
b3J0cy5kaXZfcyAgICAgICA9IGRpdl9zOworZXhwb3J0cy5kaXZfdSAgICAgICA9IGRpdl91Owor
ZXhwb3J0cy5yZW1fcyAgICAgICA9IHJlbV9zOworZXhwb3J0cy5yZW1fdSAgICAgICA9IHJlbV91
OworZXhwb3J0cy5hbmRfICAgICAgICA9IGFuZF87CitleHBvcnRzLm9yXyAgICAgICAgID0gb3Jf
OworZXhwb3J0cy54b3IgICAgICAgICA9IHhvcjsKK2V4cG9ydHMuc2hsICAgICAgICAgPSBzaGw7
CitleHBvcnRzLnNocl9zICAgICAgID0gc2hyX3M7CitleHBvcnRzLnNocl91ICAgICAgID0gc2hy
X3U7CitleHBvcnRzLnJvdGwgICAgICAgID0gcm90bDsKK2V4cG9ydHMucm90ciAgICAgICAgPSBy
b3RyOworZXhwb3J0cy5jbHogICAgICAgICA9IGNsejsKK2V4cG9ydHMuY3R6ICAgICAgICAgPSBj
dHo7CitleHBvcnRzLnBvcGNudCAgICAgID0gcG9wY250OworZXhwb3J0cy5lcXogICAgICAgICA9
IGVxejsKK2V4cG9ydHMuZXEgICAgICAgICAgPSBlcTsKK2V4cG9ydHMubmUgICAgICAgICAgPSBu
ZTsKK2V4cG9ydHMubHRfcyAgICAgICAgPSBsdF9zOworZXhwb3J0cy5sdF91ICAgICAgICA9IGx0
X3U7CitleHBvcnRzLmxlX3MgICAgICAgID0gbGVfczsKK2V4cG9ydHMubGVfdSAgICAgICAgPSBs
ZV91OworZXhwb3J0cy5ndF9zICAgICAgICA9IGd0X3M7CitleHBvcnRzLmd0X3UgICAgICAgID0g
Z3RfdTsKK2V4cG9ydHMuZ2VfcyAgICAgICAgPSBnZV9zOworZXhwb3J0cy5nZV91ICAgICAgICA9
IGdlX3U7CitleHBvcnRzLm9mX2ludF9zICAgID0gb2ZfaW50X3M7CitleHBvcnRzLm9mX2ludF91
ICAgID0gb2ZfaW50X3U7CitleHBvcnRzLm9mX3N0cmluZ19zID0gb2Zfc3RyaW5nX3M7CitleHBv
cnRzLm9mX3N0cmluZ191ID0gb2Zfc3RyaW5nX3U7CitleHBvcnRzLm9mX3N0cmluZyAgID0gb2Zf
c3RyaW5nOworZXhwb3J0cy50b19zdHJpbmdfcyA9IHRvX3N0cmluZ19zOworZXhwb3J0cy50b19z
dHJpbmdfdSA9IHRvX3N0cmluZ191OworLyogaW5jbHVkZSBOb3QgYSBwdXJlIG1vZHVsZSAqLwor
Ly8vLy8vLy8gZW5kIG9mIGkzMi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivC
oCB9OworCisKKyAgX3JlZ2lzdHJ5WydpNjQnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4
cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGk2NC5qcyAvLy8vLy8vLworLy8gR2VuZXJh
dGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJF
CisndXNlIHN0cmljdCc7CisKK3ZhciBJbnQgICAgICAgID0gcmVxdWlyZSgiLi9pbnQiKTsKK3Zh
ciBJbnQ2NCAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2ludDY0Iik7Cit2YXIg
Q2FtbF9pbnQ2NCA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2ludDY0Iik7CisK
K3ZhciBpbmNsdWRlID0gSW50Lk1ha2UoLyogbW9kdWxlICovWworICAgICAgLyogemVybyAqL0lu
dDY0Lnplcm8sCisgICAgICAvKiBvbmUgKi9JbnQ2NC5vbmUsCisgICAgICAvKiBtaW51c19vbmUg
Ki9JbnQ2NC5taW51c19vbmUsCisgICAgICAvKiBtYXhfaW50ICovSW50NjQubWF4X2ludCwKKyAg
ICAgIC8qIG1pbl9pbnQgKi9JbnQ2NC5taW5faW50LAorICAgICAgLyogJWludDY0X25lZyAqL0Nh
bWxfaW50NjQubmVnLAorICAgICAgLyogJWludDY0X2FkZCAqL0NhbWxfaW50NjQuYWRkLAorICAg
ICAgLyogJWludDY0X3N1YiAqL0NhbWxfaW50NjQuc3ViLAorICAgICAgLyogJWludDY0X211bCAq
L0NhbWxfaW50NjQubXVsLAorICAgICAgLyogJWludDY0X2RpdiAqL0NhbWxfaW50NjQuZGl2LAor
ICAgICAgLyogJWludDY0X21vZCAqL0NhbWxfaW50NjQubW9kXywKKyAgICAgIC8qICVpbnQ2NF9h
bmQgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAvKiBpbnQ2NCAq
L1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gJiBwcmltJDFbMF0sCisgICAgICAg
ICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gJiBwcmltJDFbMV0pID4+PiAwKQorICAgICAgICAg
ICAgICBdOworICAgICAgfSwKKyAgICAgIC8qIGxvZ25vdCAqL0ludDY0LmxvZ25vdCwKKyAgICAg
IC8qICVpbnQ2NF9vciAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJu
IC8qIGludDY0ICovWworICAgICAgICAgICAgICAgIC8qIGhpICovcHJpbVswXSB8IHByaW0kMVsw
XSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLygocHJpbVsxXSB8IHByaW0kMVsxXSkgPj4+IDAp
CisgICAgICAgICAgICAgIF07CisgICAgICB9LAorICAgICAgLyogJWludDY0X3hvciAqL2Z1bmN0
aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAg
ICAgICAgICAgIC8qIGhpICovcHJpbVswXSBeIHByaW0kMVswXSwKKyAgICAgICAgICAgICAgICAv
KiBsbyAqLygocHJpbVsxXSBeIHByaW0kMVsxXSkgPj4+IDApCisgICAgICAgICAgICAgIF07Cisg
ICAgICB9LAorICAgICAgLyogJWludDY0X2xzbCAqL0NhbWxfaW50NjQubHNsXywKKyAgICAgIC8q
ICVpbnQ2NF9hc3IgKi9DYW1sX2ludDY0LmFzcl8sCisgICAgICAvKiAlaW50NjRfbHNyICovQ2Ft
bF9pbnQ2NC5sc3JfLAorICAgICAgLyogJWludDY0X29mX2ludCAqL0NhbWxfaW50NjQub2ZfaW50
MzIsCisgICAgICAvKiAlaW50NjRfdG9faW50ICovZnVuY3Rpb24gKHByaW0pIHsKKyAgICAgICAg
cmV0dXJuIHByaW1bMV0gfCAwOworICAgICAgfSwKKyAgICAgIC8qIHRvX3N0cmluZyAqL0ludDY0
LnRvX3N0cmluZywKKyAgICAgIC8qIGJpdHdpZHRoICovNjQKKyAgICBdKTsKKwordmFyIG9mX2Jp
dHMgPSBpbmNsdWRlWzBdOworCit2YXIgdG9fYml0cyA9IGluY2x1ZGVbMV07CisKK3ZhciB6ZXJv
ID0gaW5jbHVkZVsyXTsKKwordmFyIGFkZCA9IGluY2x1ZGVbM107CisKK3ZhciBzdWIgPSBpbmNs
dWRlWzRdOworCit2YXIgbXVsID0gaW5jbHVkZVs1XTsKKwordmFyIGRpdl9zID0gaW5jbHVkZVs2
XTsKKwordmFyIGRpdl91ID0gaW5jbHVkZVs3XTsKKwordmFyIHJlbV9zID0gaW5jbHVkZVs4XTsK
KwordmFyIHJlbV91ID0gaW5jbHVkZVs5XTsKKwordmFyIGFuZF8gPSBpbmNsdWRlWzEwXTsKKwor
dmFyIG9yXyA9IGluY2x1ZGVbMTFdOworCit2YXIgeG9yID0gaW5jbHVkZVsxMl07CisKK3ZhciBz
aGwgPSBpbmNsdWRlWzEzXTsKKwordmFyIHNocl9zID0gaW5jbHVkZVsxNF07CisKK3ZhciBzaHJf
dSA9IGluY2x1ZGVbMTVdOworCit2YXIgcm90bCA9IGluY2x1ZGVbMTZdOworCit2YXIgcm90ciA9
IGluY2x1ZGVbMTddOworCit2YXIgY2x6ID0gaW5jbHVkZVsxOF07CisKK3ZhciBjdHogPSBpbmNs
dWRlWzE5XTsKKwordmFyIHBvcGNudCA9IGluY2x1ZGVbMjBdOworCit2YXIgZXF6ID0gaW5jbHVk
ZVsyMV07CisKK3ZhciBlcSA9IGluY2x1ZGVbMjJdOworCit2YXIgbmUgPSBpbmNsdWRlWzIzXTsK
KwordmFyIGx0X3MgPSBpbmNsdWRlWzI0XTsKKwordmFyIGx0X3UgPSBpbmNsdWRlWzI1XTsKKwor
dmFyIGxlX3MgPSBpbmNsdWRlWzI2XTsKKwordmFyIGxlX3UgPSBpbmNsdWRlWzI3XTsKKwordmFy
IGd0X3MgPSBpbmNsdWRlWzI4XTsKKwordmFyIGd0X3UgPSBpbmNsdWRlWzI5XTsKKwordmFyIGdl
X3MgPSBpbmNsdWRlWzMwXTsKKwordmFyIGdlX3UgPSBpbmNsdWRlWzMxXTsKKwordmFyIG9mX2lu
dF9zID0gaW5jbHVkZVszMl07CisKK3ZhciBvZl9pbnRfdSA9IGluY2x1ZGVbMzNdOworCit2YXIg
b2Zfc3RyaW5nX3MgPSBpbmNsdWRlWzM0XTsKKwordmFyIG9mX3N0cmluZ191ID0gaW5jbHVkZVsz
NV07CisKK3ZhciBvZl9zdHJpbmcgPSBpbmNsdWRlWzM2XTsKKwordmFyIHRvX3N0cmluZ19zID0g
aW5jbHVkZVszN107CisKK3ZhciB0b19zdHJpbmdfdSA9IGluY2x1ZGVbMzhdOworCitleHBvcnRz
Lm9mX2JpdHMgICAgID0gb2ZfYml0czsKK2V4cG9ydHMudG9fYml0cyAgICAgPSB0b19iaXRzOwor
ZXhwb3J0cy56ZXJvICAgICAgICA9IHplcm87CitleHBvcnRzLmFkZCAgICAgICAgID0gYWRkOwor
ZXhwb3J0cy5zdWIgICAgICAgICA9IHN1YjsKK2V4cG9ydHMubXVsICAgICAgICAgPSBtdWw7Citl
eHBvcnRzLmRpdl9zICAgICAgID0gZGl2X3M7CitleHBvcnRzLmRpdl91ICAgICAgID0gZGl2X3U7
CitleHBvcnRzLnJlbV9zICAgICAgID0gcmVtX3M7CitleHBvcnRzLnJlbV91ICAgICAgID0gcmVt
X3U7CitleHBvcnRzLmFuZF8gICAgICAgID0gYW5kXzsKK2V4cG9ydHMub3JfICAgICAgICAgPSBv
cl87CitleHBvcnRzLnhvciAgICAgICAgID0geG9yOworZXhwb3J0cy5zaGwgICAgICAgICA9IHNo
bDsKK2V4cG9ydHMuc2hyX3MgICAgICAgPSBzaHJfczsKK2V4cG9ydHMuc2hyX3UgICAgICAgPSBz
aHJfdTsKK2V4cG9ydHMucm90bCAgICAgICAgPSByb3RsOworZXhwb3J0cy5yb3RyICAgICAgICA9
IHJvdHI7CitleHBvcnRzLmNseiAgICAgICAgID0gY2x6OworZXhwb3J0cy5jdHogICAgICAgICA9
IGN0ejsKK2V4cG9ydHMucG9wY250ICAgICAgPSBwb3BjbnQ7CitleHBvcnRzLmVxeiAgICAgICAg
ID0gZXF6OworZXhwb3J0cy5lcSAgICAgICAgICA9IGVxOworZXhwb3J0cy5uZSAgICAgICAgICA9
IG5lOworZXhwb3J0cy5sdF9zICAgICAgICA9IGx0X3M7CitleHBvcnRzLmx0X3UgICAgICAgID0g
bHRfdTsKK2V4cG9ydHMubGVfcyAgICAgICAgPSBsZV9zOworZXhwb3J0cy5sZV91ICAgICAgICA9
IGxlX3U7CitleHBvcnRzLmd0X3MgICAgICAgID0gZ3RfczsKK2V4cG9ydHMuZ3RfdSAgICAgICAg
PSBndF91OworZXhwb3J0cy5nZV9zICAgICAgICA9IGdlX3M7CitleHBvcnRzLmdlX3UgICAgICAg
ID0gZ2VfdTsKK2V4cG9ydHMub2ZfaW50X3MgICAgPSBvZl9pbnRfczsKK2V4cG9ydHMub2ZfaW50
X3UgICAgPSBvZl9pbnRfdTsKK2V4cG9ydHMub2Zfc3RyaW5nX3MgPSBvZl9zdHJpbmdfczsKK2V4
cG9ydHMub2Zfc3RyaW5nX3UgPSBvZl9zdHJpbmdfdTsKK2V4cG9ydHMub2Zfc3RyaW5nICAgPSBv
Zl9zdHJpbmc7CitleHBvcnRzLnRvX3N0cmluZ19zID0gdG9fc3RyaW5nX3M7CitleHBvcnRzLnRv
X3N0cmluZ191ID0gdG9fc3RyaW5nX3U7CisvKiBpbmNsdWRlIE5vdCBhIHB1cmUgbW9kdWxlICov
CisvLy8vLy8vLyBlbmQgb2YgaTY0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsK
K8KgIH07CisKKworICBfcmVnaXN0cnlbJ2ludDMyJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxl
dCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpbnQzMi5qcyAvLy8vLy8vLworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgQ2FtbF9vYmogICAgPSByZXF1aXJlKCIuL2NhbWxfb2JqIik7Cit2
YXIgQ2FtbF9mb3JtYXQgPSByZXF1aXJlKCIuL2NhbWxfZm9ybWF0Iik7CisKK2Z1bmN0aW9uIHN1
Y2MobikgeworICByZXR1cm4gbiArIDEgfCAwOworfQorCitmdW5jdGlvbiBwcmVkKG4pIHsKKyAg
cmV0dXJuIG4gLSAxIHwgMDsKK30KKworZnVuY3Rpb24gYWJzKG4pIHsKKyAgaWYgKG4gPj0gMCkg
eworICAgIHJldHVybiBuOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAtbiB8IDA7CisgIH0K
K30KKworZnVuY3Rpb24gbG9nbm90KG4pIHsKKyAgcmV0dXJuIG4gXiAtMTsKK30KKworZnVuY3Rp
b24gdG9fc3RyaW5nKG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfaW50MzJfZm9ybWF0
KCIlZCIsIG4pOworfQorCit2YXIgY29tcGFyZSA9IENhbWxfb2JqLmNhbWxfaW50MzJfY29tcGFy
ZTsKKwordmFyIHplcm8gPSAwOworCit2YXIgb25lID0gMTsKKwordmFyIG1pbnVzX29uZSA9IC0x
OworCit2YXIgbWF4X2ludCA9IDIxNDc0ODM2NDc7CisKK3ZhciBtaW5faW50ID0gLTIxNDc0ODM2
NDg7CisKK2V4cG9ydHMuemVybyAgICAgID0gemVybzsKK2V4cG9ydHMub25lICAgICAgID0gb25l
OworZXhwb3J0cy5taW51c19vbmUgPSBtaW51c19vbmU7CitleHBvcnRzLnN1Y2MgICAgICA9IHN1
Y2M7CitleHBvcnRzLnByZWQgICAgICA9IHByZWQ7CitleHBvcnRzLmFicyAgICAgICA9IGFiczsK
K2V4cG9ydHMubWF4X2ludCAgID0gbWF4X2ludDsKK2V4cG9ydHMubWluX2ludCAgID0gbWluX2lu
dDsKK2V4cG9ydHMubG9nbm90ICAgID0gbG9nbm90OworZXhwb3J0cy50b19zdHJpbmcgPSB0b19z
dHJpbmc7CitleHBvcnRzLmNvbXBhcmUgICA9IGNvbXBhcmU7CisvKiBObyBzaWRlIGVmZmVjdCAq
LworLy8vLy8vLy8gZW5kIG9mIGludDMyLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0
czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2ludDY0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKg
IGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpbnQ2NC5qcyAvLy8vLy8vLwor
J3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9pbnQ2NCAgPSByZXF1aXJlKCIuL2NhbWxfaW50NjQi
KTsKK3ZhciBDYW1sX2Zvcm1hdCA9IHJlcXVpcmUoIi4vY2FtbF9mb3JtYXQiKTsKKworZnVuY3Rp
b24gc3VjYyhuKSB7CisgIHJldHVybiBDYW1sX2ludDY0LmFkZChuLCAvKiBpbnQ2NCAqL1sKKyAg
ICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAvKiBsbyAqLzEKKyAgICAgICAg
ICAgIF0pOworfQorCitmdW5jdGlvbiBwcmVkKG4pIHsKKyAgcmV0dXJuIENhbWxfaW50NjQuc3Vi
KG4sIC8qIGludDY0ICovWworICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAg
IC8qIGxvICovMQorICAgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGFicyhuKSB7CisgIGlm
IChDYW1sX2ludDY0LmdlKG4sIC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAg
ICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAgXSkpIHsKKyAgICByZXR1cm4gbjsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gQ2FtbF9pbnQ2NC5uZWcobik7CisgIH0KK30KKworZnVuY3Rpb24g
bG9nbm90KG4pIHsKKyAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovblsw
XSBeIC8qIGhpICovLTEsCisgICAgICAgICAgLyogbG8gKi8oKG5bMV0gXiAvKiBsbyAqLzQyOTQ5
NjcyOTUpID4+PiAwKQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0b19zdHJpbmcobikgewor
ICByZXR1cm4gQ2FtbF9mb3JtYXQuY2FtbF9pbnQ2NF9mb3JtYXQoIiVkIiwgbik7Cit9CisKK3Zh
ciBjb21wYXJlID0gQ2FtbF9pbnQ2NC5jb21wYXJlOworCit2YXIgemVybyA9IC8qIGludDY0ICov
WworICAvKiBoaSAqLzAsCisgIC8qIGxvICovMAorXTsKKwordmFyIG9uZSA9IC8qIGludDY0ICov
WworICAvKiBoaSAqLzAsCisgIC8qIGxvICovMQorXTsKKwordmFyIG1pbnVzX29uZSA9IC8qIGlu
dDY0ICovWworICAvKiBoaSAqLy0xLAorICAvKiBsbyAqLzQyOTQ5NjcyOTUKK107CisKK3ZhciBt
YXhfaW50ID0gLyogaW50NjQgKi9bCisgIC8qIGhpICovMjE0NzQ4MzY0NywKKyAgLyogbG8gKi80
Mjk0OTY3Mjk1CitdOworCit2YXIgbWluX2ludCA9IC8qIGludDY0ICovWworICAvKiBoaSAqLy0y
MTQ3NDgzNjQ4LAorICAvKiBsbyAqLzAKK107CisKK2V4cG9ydHMuemVybyAgICAgID0gemVybzsK
K2V4cG9ydHMub25lICAgICAgID0gb25lOworZXhwb3J0cy5taW51c19vbmUgPSBtaW51c19vbmU7
CitleHBvcnRzLnN1Y2MgICAgICA9IHN1Y2M7CitleHBvcnRzLnByZWQgICAgICA9IHByZWQ7Citl
eHBvcnRzLmFicyAgICAgICA9IGFiczsKK2V4cG9ydHMubWF4X2ludCAgID0gbWF4X2ludDsKK2V4
cG9ydHMubWluX2ludCAgID0gbWluX2ludDsKK2V4cG9ydHMubG9nbm90ICAgID0gbG9nbm90Owor
ZXhwb3J0cy50b19zdHJpbmcgPSB0b19zdHJpbmc7CitleHBvcnRzLmNvbXBhcmUgICA9IGNvbXBh
cmU7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGludDY0LmpzIC8vLy8v
Ly8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2ludCdd
ID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQg
b2YgaW50LmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04g
MS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5
ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3ZhciBDYW1s
X29iaiAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIg
UGVydmFzaXZlcyAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7
Cit2YXIgQ2FtbF9zdHJpbmcgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX3N0
cmluZyIpOwordmFyIE51bWVyaWNfZXJyb3IgPSByZXF1aXJlKCIuL251bWVyaWNfZXJyb3IiKTsK
KworZnVuY3Rpb24gTWFrZShSZXApIHsKKyAgdmFyIGNtcF91ID0gZnVuY3Rpb24gKHgsIG9wLCB5
KSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKG9wLCBDdXJyeS5fMihSZXBbLyogYWRkICovNl0sIHgs
IFJlcFsvKiBtaW5faW50ICovNF0pLCBDdXJyeS5fMihSZXBbLyogYWRkICovNl0sIHksIFJlcFsv
KiBtaW5faW50ICovNF0pKTsKKyAgfTsKKyAgdmFyIGRpdnJlbV91ID0gZnVuY3Rpb24gKG4sIGQp
IHsKKyAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChkLCBSZXBbLyogemVybyAqLzBdKSkgewor
ICAgICAgdGhyb3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvOworICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIHZhciB0ID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X3JpZ2h0ICovMTZd
LCBkLCBSZXBbLyogYml0d2lkdGggKi8yMV0gLSAxIHwgMCk7CisgICAgICB2YXIgbiRwcmltZSA9
IEN1cnJ5Ll8yKFJlcFsvKiBsb2dhbmQgKi8xMV0sIG4sIEN1cnJ5Ll8xKFJlcFsvKiBsb2dub3Qg
Ki8xMl0sIHQpKTsKKyAgICAgIHZhciBxID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X2xlZnQgKi8x
NV0sIEN1cnJ5Ll8yKFJlcFsvKiBkaXYgKi85XSwgQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X3JpZ2h0
X2xvZ2ljYWwgKi8xN10sIG4kcHJpbWUsIDEpLCBkKSwgMSk7CisgICAgICB2YXIgciA9IEN1cnJ5
Ll8yKFJlcFsvKiBzdWIgKi83XSwgbiwgQ3VycnkuXzIoUmVwWy8qIG11bCAqLzhdLCBxLCBkKSk7
CisgICAgICBpZiAoY21wX3UociwgQ2FtbF9vYmouY2FtbF9sZXNzdGhhbiwgZCkpIHsKKyAgICAg
ICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIHEsCisgICAgICAgICAgICAg
ICAgcgorICAgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJl
dHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICBDdXJyeS5fMihSZXBbLyogYWRkICov
Nl0sIHEsIFJlcFsvKiBvbmUgKi8xXSksCisgICAgICAgICAgICAgICAgQ3VycnkuXzIoUmVwWy8q
IHN1YiAqLzddLCByLCBkKQorICAgICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgfTsK
KyAgdmFyIG9mX2JpdHMgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB4OworICB9OworICB2
YXIgdG9fYml0cyA9IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0dXJuIHg7CisgIH07CisgIHZhciB6
ZXJvID0gUmVwWy8qIHplcm8gKi8wXTsKKyAgdmFyIG9uZSA9IFJlcFsvKiBvbmUgKi8xXTsKKyAg
dmFyIHRlbiA9IEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0sIDEwKTsKKyAgdmFyIGFkZCA9
IFJlcFsvKiBhZGQgKi82XTsKKyAgdmFyIHN1YiA9IFJlcFsvKiBzdWIgKi83XTsKKyAgdmFyIG11
bCA9IFJlcFsvKiBtdWwgKi84XTsKKyAgdmFyIGRpdl9zID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAg
ICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbCh5LCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAg
dGhyb3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvOworICAgIH0KKyAgICBlbHNl
IGlmIChDYW1sX29iai5jYW1sX2VxdWFsKHgsIFJlcFsvKiBtaW5faW50ICovNF0pICYmIENhbWxf
b2JqLmNhbWxfZXF1YWwoeSwgUmVwWy8qIG1pbnVzX29uZSAqLzJdKSkgeworICAgICAgdGhyb3cg
TnVtZXJpY19lcnJvci5JbnRlZ2VyT3ZlcmZsb3c7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
cmV0dXJuIEN1cnJ5Ll8yKFJlcFsvKiBkaXYgKi85XSwgeCwgeSk7CisgICAgfQorICB9OworICB2
YXIgZGl2X3UgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiBkaXZyZW1fdSh4LCB5KVsw
XTsKKyAgfTsKKyAgdmFyIHJlbV9zID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICBpZiAoQ2FtbF9v
YmouY2FtbF9lcXVhbCh5LCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgdGhyb3cgTnVtZXJp
Y19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJl
dHVybiBDdXJyeS5fMihSZXBbLyogcmVtICovMTBdLCB4LCB5KTsKKyAgICB9CisgIH07CisgIHZh
ciByZW1fdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGRpdnJlbV91KHgsIHkpWzFd
OworICB9OworICB2YXIgYW5kXyA9IFJlcFsvKiBsb2dhbmQgKi8xMV07CisgIHZhciBvcl8gPSBS
ZXBbLyogbG9nb3IgKi8xM107CisgIHZhciB4b3IgPSBSZXBbLyogbG9neG9yICovMTRdOworICB2
YXIgc2hpZnQgPSBmdW5jdGlvbiAoZiwgeCwgeSkgeworICAgIHJldHVybiBDdXJyeS5fMihmLCB4
LCBDdXJyeS5fMShSZXBbLyogdG9faW50ICovMTldLCBDdXJyeS5fMihSZXBbLyogbG9nYW5kICov
MTFdLCB5LCBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCBSZXBbLyogYml0d2lkdGggKi8y
MV0gLSAxIHwgMCkpKSk7CisgIH07CisgIHZhciBzaGwgPSBmdW5jdGlvbiAoeCwgeSkgeworICAg
IHJldHVybiBzaGlmdChSZXBbLyogc2hpZnRfbGVmdCAqLzE1XSwgeCwgeSk7CisgIH07CisgIHZh
ciBzaHJfcyA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIHNoaWZ0KFJlcFsvKiBzaGlm
dF9yaWdodCAqLzE2XSwgeCwgeSk7CisgIH07CisgIHZhciBzaHJfdSA9IGZ1bmN0aW9uICh4LCB5
KSB7CisgICAgcmV0dXJuIHNoaWZ0KFJlcFsvKiBzaGlmdF9yaWdodF9sb2dpY2FsICovMTddLCB4
LCB5KTsKKyAgfTsKKyAgdmFyIGNsYW1wX3JvdGF0ZV9jb3VudCA9IGZ1bmN0aW9uIChuKSB7Cisg
ICAgcmV0dXJuIEN1cnJ5Ll8xKFJlcFsvKiB0b19pbnQgKi8xOV0sIEN1cnJ5Ll8yKFJlcFsvKiBs
b2dhbmQgKi8xMV0sIG4sIEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0sIFJlcFsvKiBiaXR3
aWR0aCAqLzIxXSAtIDEgfCAwKSkpOworICB9OworICB2YXIgcm90bCA9IGZ1bmN0aW9uICh4LCB5
KSB7CisgICAgdmFyIG4gPSBjbGFtcF9yb3RhdGVfY291bnQoeSk7CisgICAgcmV0dXJuIEN1cnJ5
Ll8yKG9yXywgQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X2xlZnQgKi8xNV0sIHgsIG4pLCBDdXJyeS5f
MihSZXBbLyogc2hpZnRfcmlnaHRfbG9naWNhbCAqLzE3XSwgeCwgUmVwWy8qIGJpdHdpZHRoICov
MjFdIC0gbiB8IDApKTsKKyAgfTsKKyAgdmFyIHJvdHIgPSBmdW5jdGlvbiAoeCwgeSkgeworICAg
IHZhciBuID0gY2xhbXBfcm90YXRlX2NvdW50KHkpOworICAgIHJldHVybiBDdXJyeS5fMihvcl8s
IEN1cnJ5Ll8yKFJlcFsvKiBzaGlmdF9yaWdodF9sb2dpY2FsICovMTddLCB4LCBuKSwgQ3Vycnku
XzIoUmVwWy8qIHNoaWZ0X2xlZnQgKi8xNV0sIHgsIFJlcFsvKiBiaXR3aWR0aCAqLzIxXSAtIG4g
fCAwKSk7CisgIH07CisgIHZhciBjbHogPSBmdW5jdGlvbiAoeCkgeworICAgIHZhciBsb29wID0g
ZnVuY3Rpb24gKF9hY2MsIF9uKSB7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHZhciBu
ID0gX247CisgICAgICAgIHZhciBhY2MgPSBfYWNjOworICAgICAgICBpZiAoQ2FtbF9vYmouY2Ft
bF9lcXVhbChuLCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgICAgIHJldHVybiBSZXBbLyog
Yml0d2lkdGggKi8yMV07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoQ2FtbF9vYmouY2Ft
bF9lcXVhbChDdXJyeS5fMihhbmRfLCBuLCBDdXJyeS5fMihSZXBbLyogc2hpZnRfbGVmdCAqLzE1
XSwgUmVwWy8qIG9uZSAqLzFdLCBSZXBbLyogYml0d2lkdGggKi8yMV0gLSAxIHwgMCkpLCBSZXBb
LyogemVybyAqLzBdKSkgeworICAgICAgICAgIF9uID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X2xl
ZnQgKi8xNV0sIG4sIDEpOworICAgICAgICAgIF9hY2MgPSAxICsgYWNjIHwgMDsKKyAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIGFjYzsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHJldHVy
biBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCBsb29wKDAsIHgpKTsKKyAgfTsKKyAgdmFy
IGN0eiA9IGZ1bmN0aW9uICh4KSB7CisgICAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoX2FjYywgX24p
IHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFyIG4gPSBfbjsKKyAgICAgICAgdmFy
IGFjYyA9IF9hY2M7CisgICAgICAgIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKG4sIFJlcFsvKiB6
ZXJvICovMF0pKSB7CisgICAgICAgICAgcmV0dXJuIFJlcFsvKiBiaXR3aWR0aCAqLzIxXTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKEN1cnJ5Ll8yKGFu
ZF8sIG4sIFJlcFsvKiBvbmUgKi8xXSksIFJlcFsvKiBvbmUgKi8xXSkpIHsKKyAgICAgICAgICBy
ZXR1cm4gYWNjOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIF9uID0gQ3Vy
cnkuXzIoUmVwWy8qIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKi8xN10sIG4sIDEpOworICAgICAgICAg
IF9hY2MgPSAxICsgYWNjIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisg
ICAgICAgIH0KKyAgICAgIH07CisgICAgfTsKKyAgICByZXR1cm4gQ3VycnkuXzEoUmVwWy8qIG9m
X2ludCAqLzE4XSwgbG9vcCgwLCB4KSk7CisgIH07CisgIHZhciBwb3BjbnQgPSBmdW5jdGlvbiAo
eCkgeworICAgIHZhciBsb29wID0gZnVuY3Rpb24gKF9hY2MsIF9pLCBfbikgeworICAgICAgd2hp
bGUodHJ1ZSkgeworICAgICAgICB2YXIgbiA9IF9uOworICAgICAgICB2YXIgaSA9IF9pOworICAg
ICAgICB2YXIgYWNjID0gX2FjYzsKKyAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwobiwg
UmVwWy8qIHplcm8gKi8wXSkpIHsKKyAgICAgICAgICByZXR1cm4gYWNjOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBhY2MkcHJpbWUgPSBDYW1sX29iai5jYW1sX2Vx
dWFsKEN1cnJ5Ll8yKGFuZF8sIG4sIFJlcFsvKiBvbmUgKi8xXSksIFJlcFsvKiBvbmUgKi8xXSkg
PyBhY2MgKyAxIHwgMCA6IGFjYzsKKyAgICAgICAgICBfbiA9IEN1cnJ5Ll8yKFJlcFsvKiBzaGlm
dF9yaWdodF9sb2dpY2FsICovMTddLCBuLCAxKTsKKyAgICAgICAgICBfaSA9IGkgLSAxIHwgMDsK
KyAgICAgICAgICBfYWNjID0gYWNjJHByaW1lOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHJldHVybiBDdXJyeS5fMShS
ZXBbLyogb2ZfaW50ICovMThdLCBsb29wKDAsIFJlcFsvKiBiaXR3aWR0aCAqLzIxXSwgeCkpOwor
ICB9OworICB2YXIgZXF6ID0gZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1cm4gQ2FtbF9vYmouY2Ft
bF9lcXVhbCh4LCBSZXBbLyogemVybyAqLzBdKTsKKyAgfTsKKyAgdmFyIGVxID0gQ2FtbF9vYmou
Y2FtbF9lcXVhbDsKKyAgdmFyIG5lID0gQ2FtbF9vYmouY2FtbF9ub3RlcXVhbDsKKyAgdmFyIGx0
X3MgPSBDYW1sX29iai5jYW1sX2xlc3N0aGFuOworICB2YXIgbHRfdSA9IGZ1bmN0aW9uICh4LCB5
KSB7CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxfb2JqLmNhbWxfbGVzc3RoYW4sIHkpOworICB9
OworICB2YXIgbGVfcyA9IENhbWxfb2JqLmNhbWxfbGVzc2VxdWFsOworICB2YXIgbGVfdSA9IGZ1
bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxfb2JqLmNhbWxfbGVzc2Vx
dWFsLCB5KTsKKyAgfTsKKyAgdmFyIGd0X3MgPSBDYW1sX29iai5jYW1sX2dyZWF0ZXJ0aGFuOwor
ICB2YXIgZ3RfdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxf
b2JqLmNhbWxfZ3JlYXRlcnRoYW4sIHkpOworICB9OworICB2YXIgZ2VfcyA9IENhbWxfb2JqLmNh
bWxfZ3JlYXRlcmVxdWFsOworICB2YXIgZ2VfdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0
dXJuIGNtcF91KHgsIENhbWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsLCB5KTsKKyAgfTsKKyAgdmFy
IG9mX2ludF9zID0gUmVwWy8qIG9mX2ludCAqLzE4XTsKKyAgdmFyIG9mX2ludF91ID0gZnVuY3Rp
b24gKGkpIHsKKyAgICByZXR1cm4gQ3VycnkuXzIoYW5kXywgQ3VycnkuXzEoUmVwWy8qIG9mX2lu
dCAqLzE4XSwgaSksIEN1cnJ5Ll8yKG9yXywgc2hsKEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8x
OF0sIFBlcnZhc2l2ZXMubWF4X2ludCksIG9uZSksIG9uZSkpOworICB9OworICB2YXIgdG9fc3Ry
aW5nX3MgPSBSZXBbLyogdG9fc3RyaW5nICovMjBdOworICB2YXIgdG9fc3RyaW5nX3UgPSBmdW5j
dGlvbiAoaSkgeworICAgIGlmIChDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbChpLCBSZXBbLyog
emVybyAqLzBdKSkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8xKHRvX3N0cmluZ19zLCBpKTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gQ3VycnkuXzEodG9fc3RyaW5nX3MsIGRpdl91
KGksIHRlbikpICsgQ3VycnkuXzEodG9fc3RyaW5nX3MsIHJlbV91KGksIHRlbikpOworICAgIH0K
KyAgfTsKKyAgdmFyICQkcmVxdWlyZSA9IGZ1bmN0aW9uIChiKSB7CisgICAgaWYgKGIpIHsKKyAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBQZXJ2YXNpdmVz
LmZhaWx3aXRoKCJvZl9zdHJpbmciKTsKKyAgICB9CisgIH07CisgIHZhciBkZWNfZGlnaXQgPSBm
dW5jdGlvbiAoYykgeworICAgIGlmIChjID4gNTcgfHwgYyA8IDQ4KSB7CisgICAgICByZXR1cm4g
UGVydmFzaXZlcy5mYWlsd2l0aCgib2Zfc3RyaW5nIik7CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgcmV0dXJuIGMgLSAvKiAiMCIgKi80OCB8IDA7CisgICAgfQorICB9OworICB2YXIgaGV4X2Rp
Z2l0ID0gZnVuY3Rpb24gKGMpIHsKKyAgICBpZiAoYyA+PSA2NSkgeworICAgICAgaWYgKGMgPj0g
OTcpIHsKKyAgICAgICAgaWYgKGMgPj0gMTAzKSB7CisgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2
ZXMuZmFpbHdpdGgoIm9mX3N0cmluZyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIHJldHVybiAoMTAgKyBjIHwgMCkgLSAvKiAiYSIgKi85NyB8IDA7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGMgPj0gNzEpIHsKKyAgICAgICAgcmV0dXJuIFBlcnZh
c2l2ZXMuZmFpbHdpdGgoIm9mX3N0cmluZyIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHJldHVybiAoMTAgKyBjIHwgMCkgLSAvKiAiQSIgKi82NSB8IDA7CisgICAgICB9CisgICAg
fQorICAgIGVsc2UgaWYgKGMgPiA1NyB8fCBjIDwgNDgpIHsKKyAgICAgIHJldHVybiBQZXJ2YXNp
dmVzLmZhaWx3aXRoKCJvZl9zdHJpbmciKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gYyAtIC8qICIwIiAqLzQ4IHwgMDsKKyAgICB9CisgIH07CisgIHZhciBtYXRjaCA9IGRpdnJl
bV91KFJlcFsvKiBtaW51c19vbmUgKi8yXSwgdGVuKTsKKyAgdmFyIG1heF9sb3dlciA9IG1hdGNo
WzFdOworICB2YXIgbWF4X3VwcGVyID0gbWF0Y2hbMF07CisgIHZhciBvZl9zdHJpbmcgPSBmdW5j
dGlvbiAocykgeworICAgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgICB2YXIgcGFyc2VfaW50ID0g
ZnVuY3Rpb24gKGkpIHsKKyAgICAgICQkcmVxdWlyZSgrKChsZW4gLSBpIHwgMCkgPiAwKSk7Cisg
ICAgICBpZiAoKGkgKyAyIHwgMCkgPD0gbGVuICYmIENhbWxfc3RyaW5nLmdldChzLCBpKSA9PT0g
LyogIjAiICovNDggJiYgQ2FtbF9zdHJpbmcuZ2V0KHMsIGkgKyAxIHwgMCkgPT09IC8qICJ4IiAq
LzEyMCkgeworICAgICAgICB2YXIgX2kgPSBpICsgMiB8IDA7CisgICAgICAgIHZhciBfbnVtID0g
UmVwWy8qIHplcm8gKi8wXTsKKyAgICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICAgIHZhciBu
dW0gPSBfbnVtOworICAgICAgICAgIHZhciBpJDEgPSBfaTsKKyAgICAgICAgICBpZiAoaSQxID09
PSBsZW4pIHsKKyAgICAgICAgICAgIHJldHVybiBudW07CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgdmFyIGRpZ2l0ID0gQ3VycnkuXzEoUmVwWy8qIG9mX2ludCAq
LzE4XSwgaGV4X2RpZ2l0KENhbWxfc3RyaW5nLmdldChzLCBpJDEpKSk7CisgICAgICAgICAgICAk
JHJlcXVpcmUobGVfdShudW0sIHNocl91KFJlcFsvKiBtaW51c19vbmUgKi8yXSwgQ3VycnkuXzEo
UmVwWy8qIG9mX2ludCAqLzE4XSwgNCkpKSk7CisgICAgICAgICAgICBfbnVtID0gQ3VycnkuXzIo
UmVwWy8qIGxvZ29yICovMTNdLCBDdXJyeS5fMihSZXBbLyogc2hpZnRfbGVmdCAqLzE1XSwgbnVt
LCA0KSwgZGlnaXQpOworICAgICAgICAgICAgX2kgPSBpJDEgKyAxIHwgMDsKKyAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgX2kkMSA9IGk7CisgICAgICAgIHZhciBfbnVt
JDEgPSBSZXBbLyogemVybyAqLzBdOworICAgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgICAg
dmFyIG51bSQxID0gX251bSQxOworICAgICAgICAgIHZhciBpJDIgPSBfaSQxOworICAgICAgICAg
IGlmIChpJDIgPT09IGxlbikgeworICAgICAgICAgICAgcmV0dXJuIG51bSQxOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBkaWdpdCQxID0gQ3VycnkuXzEo
UmVwWy8qIG9mX2ludCAqLzE4XSwgZGVjX2RpZ2l0KENhbWxfc3RyaW5nLmdldChzLCBpJDIpKSk7
CisgICAgICAgICAgICAkJHJlcXVpcmUobHRfdShudW0kMSwgbWF4X3VwcGVyKSB8fCBDYW1sX29i
ai5jYW1sX2VxdWFsKG51bSQxLCBtYXhfdXBwZXIpICYmIGxlX3UoZGlnaXQkMSwgbWF4X2xvd2Vy
KSk7CisgICAgICAgICAgICBfbnVtJDEgPSBDdXJyeS5fMihSZXBbLyogYWRkICovNl0sIEN1cnJ5
Ll8yKFJlcFsvKiBtdWwgKi84XSwgbnVtJDEsIHRlbiksIGRpZ2l0JDEpOworICAgICAgICAgICAg
X2kkMSA9IGkkMiArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAg
CisgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgfQorICAgIH07CisgICAgJCRyZXF1aXJl
KCsobGVuID4gMCkpOworICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChzLCAwKTsKKyAg
ICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQzIHwgMDsKKyAgICBpZiAoc3dpdGNoZXIgPiAyIHx8
IHN3aXRjaGVyIDwgMCkgeworICAgICAgcmV0dXJuIHBhcnNlX2ludCgwKTsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICBzd2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlX2ludCgxKTsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgICByZXR1cm4gcGFyc2VfaW50KDApOworICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAg
IHZhciBuID0gcGFyc2VfaW50KDEpOworICAgICAgICAgICAgJCRyZXF1aXJlKENhbWxfb2JqLmNh
bWxfZ3JlYXRlcmVxdWFsKEN1cnJ5Ll8yKFJlcFsvKiBzdWIgKi83XSwgbiwgUmVwWy8qIG9uZSAq
LzFdKSwgUmVwWy8qIG1pbnVzX29uZSAqLzJdKSk7CisgICAgICAgICAgICByZXR1cm4gQ3Vycnku
XzEoUmVwWy8qIG5lZyAqLzVdLCBuKTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9Owor
ICB2YXIgb2Zfc3RyaW5nX3MgPSBmdW5jdGlvbiAocykgeworICAgIHZhciBuID0gb2Zfc3RyaW5n
KHMpOworICAgICQkcmVxdWlyZSgrKENhbWxfc3RyaW5nLmdldChzLCAwKSA9PT0gLyogIi0iICov
NDUpIHx8IENhbWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsKG4sIFJlcFsvKiB6ZXJvICovMF0pKTsK
KyAgICByZXR1cm4gbjsKKyAgfTsKKyAgdmFyIG9mX3N0cmluZ191ID0gZnVuY3Rpb24gKHMpIHsK
KyAgICB2YXIgbiA9IG9mX3N0cmluZyhzKTsKKyAgICAkJHJlcXVpcmUoKyhDYW1sX3N0cmluZy5n
ZXQocywgMCkgIT09IC8qICIrIiAqLzQzICYmIENhbWxfc3RyaW5nLmdldChzLCAwKSAhPT0gLyog
Ii0iICovNDUpKTsKKyAgICByZXR1cm4gbjsKKyAgfTsKKyAgcmV0dXJuIC8qIG1vZHVsZSAqL1sK
KyAgICAgICAgICAvKiBvZl9iaXRzICovb2ZfYml0cywKKyAgICAgICAgICAvKiB0b19iaXRzICov
dG9fYml0cywKKyAgICAgICAgICAvKiB6ZXJvICovemVybywKKyAgICAgICAgICAvKiBhZGQgKi9h
ZGQsCisgICAgICAgICAgLyogc3ViICovc3ViLAorICAgICAgICAgIC8qIG11bCAqL211bCwKKyAg
ICAgICAgICAvKiBkaXZfcyAqL2Rpdl9zLAorICAgICAgICAgIC8qIGRpdl91ICovZGl2X3UsCisg
ICAgICAgICAgLyogcmVtX3MgKi9yZW1fcywKKyAgICAgICAgICAvKiByZW1fdSAqL3JlbV91LAor
ICAgICAgICAgIC8qIGFuZF8gKi9hbmRfLAorICAgICAgICAgIC8qIG9yXyAqL29yXywKKyAgICAg
ICAgICAvKiB4b3IgKi94b3IsCisgICAgICAgICAgLyogc2hsICovc2hsLAorICAgICAgICAgIC8q
IHNocl9zICovc2hyX3MsCisgICAgICAgICAgLyogc2hyX3UgKi9zaHJfdSwKKyAgICAgICAgICAv
KiByb3RsICovcm90bCwKKyAgICAgICAgICAvKiByb3RyICovcm90ciwKKyAgICAgICAgICAvKiBj
bHogKi9jbHosCisgICAgICAgICAgLyogY3R6ICovY3R6LAorICAgICAgICAgIC8qIHBvcGNudCAq
L3BvcGNudCwKKyAgICAgICAgICAvKiBlcXogKi9lcXosCisgICAgICAgICAgLyogZXEgKi9lcSwK
KyAgICAgICAgICAvKiBuZSAqL25lLAorICAgICAgICAgIC8qIGx0X3MgKi9sdF9zLAorICAgICAg
ICAgIC8qIGx0X3UgKi9sdF91LAorICAgICAgICAgIC8qIGxlX3MgKi9sZV9zLAorICAgICAgICAg
IC8qIGxlX3UgKi9sZV91LAorICAgICAgICAgIC8qIGd0X3MgKi9ndF9zLAorICAgICAgICAgIC8q
IGd0X3UgKi9ndF91LAorICAgICAgICAgIC8qIGdlX3MgKi9nZV9zLAorICAgICAgICAgIC8qIGdl
X3UgKi9nZV91LAorICAgICAgICAgIC8qIG9mX2ludF9zICovb2ZfaW50X3MsCisgICAgICAgICAg
Lyogb2ZfaW50X3UgKi9vZl9pbnRfdSwKKyAgICAgICAgICAvKiBvZl9zdHJpbmdfcyAqL29mX3N0
cmluZ19zLAorICAgICAgICAgIC8qIG9mX3N0cmluZ191ICovb2Zfc3RyaW5nX3UsCisgICAgICAg
ICAgLyogb2Zfc3RyaW5nICovb2Zfc3RyaW5nLAorICAgICAgICAgIC8qIHRvX3N0cmluZ19zICov
dG9fc3RyaW5nX3MsCisgICAgICAgICAgLyogdG9fc3RyaW5nX3UgKi90b19zdHJpbmdfdQorICAg
ICAgICBdOworfQorCitleHBvcnRzLk1ha2UgPSBNYWtlOworLyogTm8gc2lkZSBlZmZlY3QgKi8K
Ky8vLy8vLy8vIGVuZCBvZiBpbnQuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOwor
wqAgfTsKKworCisgIF9yZWdpc3RyeVsnbGV4ZXInXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0
IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGxleGVyLmpzIC8vLy8vLy8vCisvLyBH
ZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRI
IENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEYzMiAgICAgICAgICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9mMzIiKTsKK3ZhciBGNjQgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4v
ZjY0Iik7Cit2YXIgSTMyICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2kzMiIpOwor
dmFyIEk2NCAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9pNjQiKTsKK3ZhciBMaWIg
ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGliIik7Cit2YXIgQ2hhciAgICAgICAg
ICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2hhciIpOwordmFyIEJs
b2NrICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2Nr
Iik7Cit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvY3VycnkiKTsKK3ZhciBCdWZmZXIgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9idWZmZXIiKTsKK3ZhciBMZXhpbmcgICAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9sZXhpbmciKTsKK3ZhciBTY3JpcHQgICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vc2NyaXB0Iik7Cit2YXIgU291cmNlICAgICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL3NvdXJjZSIpOwordmFyICQkU3RyaW5nICAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwordmFyIE9wZXJhdG9ycyAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9vcGVyYXRvcnMiKTsKK3ZhciBDYW1sX2Zvcm1hdCAg
ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zvcm1hdCIpOwor
dmFyIENhbWxfc3RyaW5nICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2NhbWxfc3RyaW5nIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCJi
cy1wbGF0Zm9ybS9saWIvanMvY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24g
Y29udmVydF9wb3MocG9zKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyog
ZmlsZSAqL3Bvc1svKiBwb3NfZm5hbWUgKi8wXSwKKyAgICAgICAgICAvKiBsaW5lICovcG9zWy8q
IHBvc19sbnVtICovMV0sCisgICAgICAgICAgLyogY29sdW1uICovcG9zWy8qIHBvc19jbnVtICov
M10gLSBwb3NbLyogcG9zX2JvbCAqLzJdIHwgMAorICAgICAgICBdOworfQorCitmdW5jdGlvbiBy
ZWdpb24obGV4YnVmKSB7CisgIHZhciBsZWZ0ID0gY29udmVydF9wb3MoTGV4aW5nLmxleGVtZV9z
dGFydF9wKGxleGJ1ZikpOworICB2YXIgcmlnaHQgPSBjb252ZXJ0X3BvcyhMZXhpbmcubGV4ZW1l
X2VuZF9wKGxleGJ1ZikpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGxl
ZnQgKi9sZWZ0LAorICAgICAgICAgIC8qIHJpZ2h0ICovcmlnaHQKKyAgICAgICAgXTsKK30KKwor
ZnVuY3Rpb24gZXJyb3IobGV4YnVmLCBtc2cpIHsKKyAgdGhyb3cgWworICAgICAgICBTY3JpcHQu
U3ludGF4LAorICAgICAgICByZWdpb24obGV4YnVmKSwKKyAgICAgICAgbXNnCisgICAgICBdOwor
fQorCitmdW5jdGlvbiBlcnJvcl9uZXN0KHN0YXJ0LCBsZXhidWYsIG1zZykgeworICBsZXhidWZb
LyogbGV4X3N0YXJ0X3AgKi8xMF0gPSBzdGFydDsKKyAgcmV0dXJuIGVycm9yKGxleGJ1ZiwgbXNn
KTsKK30KKworZnVuY3Rpb24gdGV4dChzKSB7CisgIHZhciBiID0gQnVmZmVyLmNyZWF0ZShzLmxl
bmd0aCk7CisgIHZhciBpID0gMTsKKyAgd2hpbGUoaSA8IChzLmxlbmd0aCAtIDEgfCAwKSkgewor
ICAgIHZhciBjOworICAgIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgIT09IC8qICJcXCIgKi85
MikgeworICAgICAgYyA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICBpID0gaSArIDEgfCAwOworICAgICAgdmFyIGQgPSBDYW1sX3N0cmluZy5nZXQocywg
aSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICBpZiAoZCA+PSA5MikgeworICAgICAgICBp
ZiAoZCAhPT0gMTEwKSB7CisgICAgICAgICAgaWYgKGQgIT09IDExNikgeworICAgICAgICAgICAg
aWYgKGQgPj0gOTMpIHsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgYyA9IC8qICJcXCIgKi85MjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjID0g
LyogIlx0IiAqLzk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIGMgPSAvKiAiXG4iICovMTA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKGQgIT09IDM0KSB7CisgICAgICAgIGlmIChkICE9PSAzOSkgeworICAgICAgICAgIGV4aXQg
PSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGMgPSAvKiAiJyIgKi8z
OTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGMgPSAvKiAiXCIi
ICovMzQ7CisgICAgICB9CisgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICBpID0gaSAr
IDEgfCAwOworICAgICAgICBjID0gQ2hhci5jaHIoQ2FtbF9mb3JtYXQuY2FtbF9pbnRfb2Zfc3Ry
aW5nKCIweCIgKyAoJCRTdHJpbmcubWFrZSgxLCBkKSArICQkU3RyaW5nLm1ha2UoMSwgQ2FtbF9z
dHJpbmcuZ2V0KHMsIGkpKSkpKTsKKyAgICAgIH0KKyAgICAgIAorICAgIH0KKyAgICBCdWZmZXIu
YWRkX2NoYXIoYiwgYyk7CisgICAgaSA9IGkgKyAxIHwgMDsKKyAgfTsKKyAgcmV0dXJuIEJ1ZmZl
ci5jb250ZW50cyhiKTsKK30KKworZnVuY3Rpb24gdmFsdWVfdHlwZShwYXJhbSkgeworICBzd2l0
Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAiZjMyIiA6IAorICAgICAgICByZXR1cm4gLyogRjMyVHlw
ZSAqLzI7CisgICAgY2FzZSAiZjY0IiA6IAorICAgICAgICByZXR1cm4gLyogRjY0VHlwZSAqLzM7
CisgICAgY2FzZSAiaTMyIiA6IAorICAgICAgICByZXR1cm4gLyogSTMyVHlwZSAqLzA7CisgICAg
Y2FzZSAiaTY0IiA6IAorICAgICAgICByZXR1cm4gLyogSTY0VHlwZSAqLzE7CisgICAgZGVmYXVs
dDoKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAidGV4dC9sZXhlci5t
bGwiLAorICAgICAgICAgICAgICA0NSwKKyAgICAgICAgICAgICAgOQorICAgICAgICAgICAgXQor
ICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gaW50b3AodCwgaTMyLCBpNjQpIHsKKyAg
c3dpdGNoICh0KSB7CisgICAgY2FzZSAiaTMyIiA6IAorICAgICAgICByZXR1cm4gaTMyOworICAg
IGNhc2UgImk2NCIgOiAKKyAgICAgICAgcmV0dXJuIGk2NDsKKyAgICBkZWZhdWx0OgorICAgICAg
dGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1
cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICJ0ZXh0L2xleGVyLm1sbCIsCisgICAg
ICAgICAgICAgIDUxLAorICAgICAgICAgICAgICA5CisgICAgICAgICAgICBdCisgICAgICAgICAg
XTsKKyAgfQorfQorCitmdW5jdGlvbiBmbG9hdG9wKHQsIGYzMiwgZjY0KSB7CisgIHN3aXRjaCAo
dCkgeworICAgIGNhc2UgImYzMiIgOiAKKyAgICAgICAgcmV0dXJuIGYzMjsKKyAgICBjYXNlICJm
NjQiIDogCisgICAgICAgIHJldHVybiBmNjQ7CisgICAgZGVmYXVsdDoKKyAgICAgIHRocm93IFsK
KyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAorICAgICAgICAgICAg
ICA1NywKKyAgICAgICAgICAgICAgOQorICAgICAgICAgICAgXQorICAgICAgICAgIF07CisgIH0K
K30KKworZnVuY3Rpb24gbnVtb3AodCwgaTMyLCBpNjQsIGYzMiwgZjY0KSB7CisgIHN3aXRjaCAo
dCkgeworICAgIGNhc2UgImYzMiIgOiAKKyAgICAgICAgcmV0dXJuIGYzMjsKKyAgICBjYXNlICJm
NjQiIDogCisgICAgICAgIHJldHVybiBmNjQ7CisgICAgY2FzZSAiaTMyIiA6IAorICAgICAgICBy
ZXR1cm4gaTMyOworICAgIGNhc2UgImk2NCIgOiAKKyAgICAgICAgcmV0dXJuIGk2NDsKKyAgICBk
ZWZhdWx0OgorICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICJ0ZXh0L2xl
eGVyLm1sbCIsCisgICAgICAgICAgICAgIDY1LAorICAgICAgICAgICAgICA5CisgICAgICAgICAg
ICBdCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBtZW1zeihzeiwgbTgsIG0xNiwg
bTMyKSB7CisgIHN3aXRjaCAoc3opIHsKKyAgICBjYXNlICIxNiIgOiAKKyAgICAgICAgcmV0dXJu
IG0xNjsKKyAgICBjYXNlICIzMiIgOiAKKyAgICAgICAgcmV0dXJuIG0zMjsKKyAgICBjYXNlICI4
IiA6IAorICAgICAgICByZXR1cm4gbTg7CisgICAgZGVmYXVsdDoKKyAgICAgIHRocm93IFsKKyAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAorICAgICAgICAgICAgICA3
MiwKKyAgICAgICAgICAgICAgOQorICAgICAgICAgICAgXQorICAgICAgICAgIF07CisgIH0KK30K
KworZnVuY3Rpb24gZXh0KGUsIHMsIHUpIHsKKyAgdmFyIHN3aXRjaGVyID0gZSAtIDExNSB8IDA7
CisgIGlmIChzd2l0Y2hlciA+IDIgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgdGhyb3cgWworICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAg
IFsKKyAgICAgICAgICAgICJ0ZXh0L2xleGVyLm1sbCIsCisgICAgICAgICAgICA3OCwKKyAgICAg
ICAgICAgIDkKKyAgICAgICAgICBdCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgc3dp
dGNoIChzd2l0Y2hlcikgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0dXJuIHM7Cisg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgInRleHQvbGV4ZXIubWxsIiwKKyAgICAgICAgICAgICAgICAgIDc4LAor
ICAgICAgICAgICAgICAgICAgOQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgXTsK
KyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiB1OworICAgICAgCisgICAgfQorICB9
Cit9CisKK3ZhciBvcHQgPSBMaWIuT3B0aW9uWy8qIGdldCAqLzBdOworCit2YXIgX19vY2FtbF9s
ZXhfdGFibGVzID0gLyogcmVjb3JkICovWworICAvKiBsZXhfYmFzZSAqLyJcMFwwb1x4ZmZwXHhm
ZnFceGZmclx4ZmZceDAxXDBVXDBceDA3XDBceDFiXDBceDA1XDBvXDBvXDB0XDBceDA2XDBqXDBc
eDBlXDBrXDB5XDBceDEwXDB5XDBzXDBceGI0XDBceDAxXHgwMXpcMFx4YmVcMFx4YzVcMFx4MDRc
eDAxXHgxYVx4MDFceGZlXHhmZlx4MDJcMHNceGZmXHgxM1wwPFx4MDFSXHgwMXhceDAxXCJcMFx4
OGZceDAxXHhkNVx4MDFceDBlXHgwMVx4ZWVceDAxL1x4MDI+XHgwMlVceDAyXHg5Nlx4MDJceGEw
XHgwMk9cMERcMFx4YWNceDAyXHhjMlx4MDJceGU3XHgwMlwwXHgwMyZceDAzTFx4MDN6XDB8XDB+
XDBceDg2XDB8XDB5XDBceGZiXHhmZlx4ODVcMFwwXDBceDBmXDBceDg3XDByXHgwM1x4OThceDAz
XHhiMVwwXHhlOFx4ZmZcclwwXHgxMFwwXHhlZVwwXHhhZFwwXHhiNlwwXHhiYlwwXHhjMlwwXHg4
Mlx4ZmZceGI0XDB4XHhmZlwwXDBceDljXHgwMlx4YjhcMFx4YmJcMFx4ZjFcMFx4Y2FcMFx4YmZc
MFx4YzJcMFx4ZTNcMFx4ZjJcMFx4ZWZcMFx4ZTRcMFx4ZjhcMFx4ZWJcMFx4ZjNcMCpceDAxXG5c
eDAxXHhlNlwwXHhlOFwwXHhmNVwwXHhmN1wwXHhmN1wwXHhmNVx4ZmZceGQ3XHhmZlx4ZDZceGZm
XDBcMFx4MDFcMFx4MTZceDAxXHgxNFx4MDFqXHgwMVx4MWNcMFx4MWFcMFx4MWJceDAxXGJceDAx
XHhkYlx4ZmZceDE5XHgwMVx4YjNceGZmXHhiNFx4ZmYnXHgwMVx4YjFceGZmXHhiMlx4ZmYzXHgw
MVx4MWFceDAxXHgxZVx4MDFceDFlXHgwMSxceDAxXHhhZVx4MDFceDFmXDAmXDBceGRhXHhmZlx4
Y2NceGZmQVx4MDFceGMzXHhmZlZceDAxXHhjMVx4ZmZceGMyXHhmZjNceDAxQVx4MDE5XHgwMT5c
eDAxXHhkNVx4ZmZmXHgwMWhceDAxXHhjZFx4ZmZceGM2XHhmZmFceDAxXHhjYlx4ZmZYXHgwMXBc
eDAxY1x4MDFceGM5XHhmZlx4Y2FceGZmY1x4MDF3XHgwMXRceDAxXHg4NFx4MDFyXHgwMVx4Yzdc
eGZmXHhjOFx4ZmZ1XHgwMVx4ODVceDAxeVx4MDF8XHgwMXtceDAxXHg4OVx4MDF7XHgwMVwwXDBc
eDkwXHgwMSpcMCxcMFx4OTdceGZmXHg4Ylx4MDFceGJmXHhmZlx4YzBceGZmXHhjNVx4ZmZceDg2
XHgwMVx4YzRceGZmXHg3Zlx4MDFceGI3XHhmZlx4YjVceGZmXHg5Ylx4MDFceDljXHgwMVx4ODlc
eDAxXHhhZlx4ZmZceGIwXHhmZlx4OWNceDAxXHhhZFx4ZmZceGFlXHhmZlx4YTNceDAxXHhhMFx4
MDFceGUzXHgwMVx4YWFceDAxXHhkZVx4MDFceGUxXHgwMVx4YTZceGZmXHhhOFx4MDFceGJhXHgw
MVx4YzZceDAxXHhjYlx4MDFceGI4XHgwMVx4ZmRceDAxXHhmZlx4MDFceGNmXHgwMVx0XHgwMlx0
XHgwMlxmXHgwMlx4YTFceGZmXHg5Zlx4ZmZceGRhXHgwMVx4MGVceDAyXHgwZVx4MDJceDExXHgw
Mlx4YTBceGZmXHg5ZVx4ZmZceDE4XHgwMn5ceDAzXHhkNlx4MDFceGU2XHgwMVx4ZGZceDAxXHhk
Ylx4MDFceGQ2XHgwMVx4ZThceDAxXHhlNFx4MDFceGU3XHgwMVx4ZTZceDAxXHhmNFx4MDFceGU2
XHgwMSxceDAyXHhmNlx4MDEnXHgwMjZceDAyXHg5Nlx4ZmZceGY4XHgwMVxiXHgwMlxuXHgwMlx4
MTVceDAyXHgxYlx4MDJcYlx4MDJNXHgwMk9ceDAyJlx4MDJdXHgwMl9ceDAyXHhhNVx4ZmYpXHgw
MmBceDAyYlx4MDJceGE0XHhmZiZceDAyKlx4MDIpXHgwMlx4ODZceGZmLlx4MDJceGYyXHhmZlx4
ZjhceGZmXHhmOVx4ZmZceGZhXHhmZlx4ZDFceDAzRlx4MDRceGY3XHhmZjlceDA0XHhhNFx4MDQ3
XHgwMnJceDAydVx4MDJ6XHgwMlx4YjdceDAzRFx4MDJIXHgwMjlceDAyRlx4MDJLXHgwMj5ceDAy
RVx4MDJRXHgwMk1ceDAyTVx4MDJceGJkXHgwM1x4OTdceDAyVFx4MDJ4XHgwMkZceDAydFx4MDJe
XHgwMlJceDAyZ1x4MDJceDhhXHgwMnhceDAyXHhiZFx4MDJceGJmXHgwMlx4ODZceDAyXHhjZlx4
MDJceGNhXHgwMlx4ZDJceDAyXHg5ZFx4ZmZceDliXHhmZlx4YTRceDAyXHhkZlx4MDJceGUyXHgw
Mlx4ZWZceDAyXHg5Y1x4ZmZceDlhXHhmZlx4YWZceDAyXHhiYVx4MDJceGJkXHgwMlx4YjdceDAy
XHhiOFx4ZmZceGJhXHgwMlx4ZDFceGZmXHhhOVx4ZmZceGFhXHhmZlx4Y2VceDAyXHhkN1x4MDJc
eGRkXHhmZlx4ZGFceDAyXHhjYlx4MDJceGNmXHgwMlx4Y2RceDAyXHhkYlx4MDJceGRjXHhmZlx4
ZDNceDAyXHhkMlx4ZmZceGJkXHhmZlx4ZWVceDAyXHhkY1x4MDJceGQ0XHhmZlx4ZWJceDAyXHhk
Zlx4MDJceGVjXHgwMlx4Y2VceGZmXHRceDAzXHhmYlx4MDJceGQzXHhmZlx4YmVceGZmXDBceDAz
XHgwMlx4MDNcMFx4MDNceGQwXHhmZlx4ZmVceDAyXHgwNlx4MDNceDEyXHgwM1x4Y2ZceGZmXHhm
ZVx4MDJcdFx4MDNcZlx4MDNceGJjXHhmZlx4YmFceGZmXHhiOVx4ZmZcZlx4MDNceDA1XHgwM1x4
YmJceGZmXHgxN1x4MDNceDFmXHgwMy9ceDAzZlx4MDMxXHgwM2JceDAzZVx4MDNceGEzXHhmZlx4
YWNceGZmXHhhN1x4ZmZceGE4XHhmZjFceDAzLVx4MDMoXHgwMzhceDAzLFx4MDMvXHgwMy5ceDAz
PFx4MDM4XHgwM1x4OGFceDAzUVx4MDNceDg4XHgwM1x4OGJceDAzXHg5OVx4ZmZceDkwXHgwM1x4
MWZceDA0Wlx4MDNOXHgwM1hceDAzU1x4MDNWXHgwM1VceDAzUVx4MDNhXHgwM1x4OThceDAzbFx4
MDNceGFkXHgwM1x4YjJceDAzXHhhMlx4ZmZ9XHgwM3lceDAzdFx4MDNceDg0XHgwM31ceDAzXHg4
NFx4MDNceDgzXHgwM1x4OTJceDAzXHg4Ylx4MDNceGQxXHgwM1x4YTJceDAzXHhkNlx4MDNceGQ5
XHgwM1x4OThceGZmXHhhYlx4MDNceDkyXHhmZlx4OWNceDAzXHhhN1x4MDNceDk4XHgwM1x4YjNc
eDAzXHhhYVx4MDNceGIyXHgwM1x4YmVceDAzXHhmNFx4ZmZceGJmXHgwM1x4YjlceDAzXHhlYlx4
MDNceDk3XHgwNFx4YTJceDA0XHhhY1x4MDRceGI2XHgwNFx4ZGNceDA0XHhjOVx4MDNceGJkXHgw
M1x4YmNceDAzXHhkOVx4MDNceGMwXHgwNFx4YzFceDAzXHhjOFx4MDNceGQ2XHgwM1x4Y2VceDAz
XHhjZVx4MDNceGQwXHgwM1x4ZGZceDAzXHhkNVx4MDNceGRjXHgwM1x4ZDRceDAzXHhkMlx4MDNc
eGY5XHgwM1x4MDJceDA0XHgwZlx4MDRceDgwXHhmZlx4ZmVceDAzXHgxNFx4MDRcblx4MDRceDBl
XHgwNFx4MTRceDA0XHg3Zlx4ZmZceDEzXHgwNFxyXHgwNChceDA0XHgxZlx4MDRceDFiXHgwNFx4
MTRceDA0LVx4MDQkXHgwNCtceDA0MVx4MDR+XHhmZipceDA0Llx4MDQqXHgwNC5ceDA0P1x4MDQ/
XHgwNDdceDA0X1x4MDR9XHhmZnxceDA0fFx4MDRceDgwXHgwNFx4ODVceDA0XHg5NVx4MDRceDg3
XHgwNFx4OTVceDA0XHg4Zlx4MDR7XHhmZlx4OWRceDA0XHg4Zlx4MDR6XHhmZlx4OTlceDA0XHhh
MVx4MDRceDhlXHgwNFx4OTFceDA0XHg5MVx4MDRceDlkXHgwNFx4OThceDA0XHg5YVx4MDR5XHhm
Zlx4OWNceDA0XHhhNlx4MDRceDk3XHgwNFx4ZjNceGZmXHhhMVx4MDRceGJhXHgwNFx4YzJceDA0
XHg4Y1x4ZmZceGI5XHgwNFx4YjhceDA0XHhiMlx4MDRceDhhXHhmZlx4YmFceDA0XHhjOVx4MDRc
eGNlXHgwNFx4Y2RceDA0XHhjOVx4MDRceGQ1XHgwNFx4ZDVceDA0XHhjY1x4MDRceGQ0XHgwNFx4
ZjFceGZmXHhjNlx4MDRceGNjXHgwNFx4Y2NceDA0XHhmMFx4ZmZceGUyXHgwNFx4ODhceGZmXHhl
NVx4MDRceGQ2XHgwNFx4ZTRceDA0XHhkZFx4MDRceGVmXHhmZlx4ZTBceDA0XHhlOVx4MDRceGU1
XHgwNFx4ZWJceGZmXHhlYVx4MDRceGUxXHgwNFx4ZTlceDA0XHhlYVx4ZmZceGVjXHgwNFx4ZWZc
eDA0XHhlMVx4MDRceGVlXHhmZlx4ZTZceDA0XHg4ZVx4ZmZceGUzXHgwNFx4ZjBceDA0XHhmMlx4
MDRceGVkXHhmZlx4ZWFceDA0XHhmM1x4MDRceGU2XHhmZlx4ODlceGZmXHhlYVx4MDRceGU4XHgw
NFx4ZThceDA0XHg4NVx4ZmZceGY2XHgwNFx4ZjVceDA0XHhlYVx4MDRceGViXHgwNFx4ZWZceDA0
XHhmNFx4MDRceGU5XHhmZlx4ZjhceDA0XHhmMVx4MDRceDhmXHhmZlx4ZjNceDA0XHhmM1x4MDRc
eDAzXHgwNVx4ZjlceDA0XHg4M1x4ZmZcblx4MDVceGZkXHgwNFx0XHgwNVxuXHgwNVx4MDJceDA1
XHhlN1x4ZmZceDEyXHgwNVx4MDZceDA1XHgwNFx4MDVceDExXHgwNVx4MTRceDA1XG5ceDA1XHhl
MFx4ZmZceDEyXHgwNVx4OTNceGZmXGZceDA1XHgxNFx4MDVceDhiXHhmZlxiXHgwNVx4MWFceDA1
XHgxMFx4MDVceDFlXHgwNVx4MTlceDA1XHgxY1x4MDVcZlx4MDVceGU1XHhmZlx4MWFceDA1XHgx
Nlx4MDVceDE0XHgwNVwiXHgwNSZceDA1XHgxY1x4MDVceGUxXHhmZlx4MWFceDA1KFx4MDUqXHgw
NSBceDA1XHhkZVx4ZmZceDFiXHgwNVx4MWFceDA1XHg5MVx4ZmYmXHgwNSBceDA1XHgxZFx4MDVc
eDg0XHhmZiBceDA1J1x4MDUoXHgwNTZceDA1LVx4MDUpXHgwNTRceDA1MFx4MDUoXHgwNTZceDA1
OVx4MDUpXHgwNVx4ZTNceGZmLFx4MDU6XHgwNTJceDA1LVx4MDVDXHgwNTZceDA1QFx4MDU5XHgw
NThceDA1Nlx4MDUwXHgwNVx4OTVceGZmO1x4MDU8XHgwNThceDA1Tlx4MDVHXHgwNUNceDA1QVx4
MDVOXHgwNVFceDA1SFx4MDVceGUyXHhmZkZceDA1VFx4MDVWXHgwNUxceDA1XHhkZlx4ZmZCXHgw
NVtceDA1Tlx4MDVXXHgwNVBceDA1T1x4MDVNXHgwNUdceDA1XHg5NFx4ZmZfXHgwNWFceDA1V1x4
MDVceDhkXHhmZlBceDA1X1x4MDVTXHgwNWJceDA1VFx4MDVceDhjXHgwNVx4OWFceDA1XHhhNFx4
MDVceGFlXHgwNVx4YjhceDA1XHhjZlx4MDVceDgyXHgwNX5ceDA1XHg4MFx4MDV3XHhmZlx4ODNc
eDA1XHg5NVx4MDVceDhhXHgwNVx4OTBceGZmXHgxNVx4MDZceGVlXHgwNXRceGZmdVx4ZmZceDAy
XHgwNlx4ZmJceGZmXHhmY1x4ZmZceGZkXHhmZlx4Y2VceDA1XHgwMVwwXHhmZlx4ZmZceGZlXHhm
ZiIsCisgIC8qIGxleF9iYWNrdHJrICovIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBc
eDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkw
XDBceDkwXDBceDkwXDBceDkwXDBceDAyXDBceDAyXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZc
eGZmXHgwNFwwXHhmZlx4ZmZceDAyXDBceGZmXHhmZlx4ZmZceGZmXHgwMlwwXHhmZlx4ZmZceDAy
XDBceDA0XDBceGZmXHhmZlx4MDRcMFx4MDRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MDNc
MFx4MDNcMFx4ZmZceGZmXHgwM1wwXHgwM1wwXHgwM1wwXHhmZlx4ZmZceDA0XDBceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDA0XDBceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceDA0XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
dFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
IlwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmYjXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmSVwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlxiXDBcYlww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZidcMCdcMFx4ZmZc
eGZmJ1wwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ODNcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDEzXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDFiXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZ+XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZ4XDBceGZmXHhmZiZcMCZcMFx4ZmZceGZmJlwwXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ODlc
MFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHgwNFwwXHgwNFwwXHhmZlx4ZmZceGZmXHhmZiIsCisgIC8qIGxleF9kZWZhdWx0ICovIlx4MDFc
MFwwXDBcMFwwXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBceDAxXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhm
ZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFww
XHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFww
XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXDBc
MFwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXDBcMFwwXDBceGZmXHhmZlwwXDBceGZmXHhm
ZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlwwXDBcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXDBcMFwwXDBceDAxXHgwMVwwXHgw
MVwwXDBceGZmXHhmZlwwXHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBc
MFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4
ZmZceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFwwXDBceGZm
XHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4
ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlww
XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGE5XHgwMlwwXDBcMFwwXHhhZFx4MDJcMFwwXDBcMFwwXDBceGZm
XHhmZlx4ZmZceGZmXDBcMFwwXDAiLAorICAvKiBsZXhfdHJhbnMgKi8nXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwNFwwXHgwM1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXHgwNFwwXDBcMFx4MTZcMFwwXDBceDA2XDBcMFwwXDBcMFwwXDBceDFkXDBceDFjXDBceGIy
XHgwMlx4MTlcMFwwXDBceDE5XDBPXDBceGE1XDBceDFiXDBceDFhXDBceDFhXDBceDFhXDBceDFh
XDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDA+XDBceDA1XDBceGE5XHgwMlx4MWVcMCxc
MD9cMCxcMFx4ZDRcME5cMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCZcMG5cMCZcMG5c
MFx4N2ZcMChcMChcMChcMChcMChcMChcMChcMChcMChcMChcMFx4N2ZcMFx4YTdcMFx4YThcMHRc
MHFcMFx4MTRcMFx4MTBcMFxuXDBceDExXDBceDBlXDBceDE1XDBcdFwwXHhhNFx4MDJceDE4XDB6
XHgwMiNceDAyXHgwZlwwXHgxM1wwXHgxN1wwXGJcMFx4MDdcMHhceDAyXHJcMFx4MGJcMFxmXDBc
eDEyXDBceGE4XHgwMnlceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4MTFceDAyXHhmNFx4MDFceGE4XHgwMlx4YThceDAyXHg5Nlx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHg5NVx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMjxcMFx4YThceDAyNVwwXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMmBceDAyXHhhOFx4MDJEXHgwMlx4YThceDAyRlx4
MDIyXHgwMlx4MThceDAyXHgwNVx4MDJceDE5XHgwMjRceDAyXHhmZVx4MDE8XHgwMDVceDAyXHgw
NFx4MDJceGU4XHgwMVx4OTZceDAxNlwwXHg5N1x4MDFceDE3XHgwMkVceDAyX1x4MDI3XDBceDk1
XHgwMVx4MDZceDAxXHhlOVx4MDFceGZhXDBceDA1XHgwMVx4ZmZceDAxOFx4MDAzXHgwMlx4ZWFc
eDAxOVwwOlwwRVwwO1wwPVwwRFx4MDAwXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDBAXDBc
eDAyXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZj
XDBceGZjXDBceGZkXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBc
eGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZj
XDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGY2XDBMXDBceGZlXDBDXDBJXDBKXDBLXDBNXDBc
eDA0XHgwMVx4YzFcMEJcMEZcMFx4YmFcMC5cMFx4YjFcMFx4YWZcMFx4YWRcMCBcMC1cMFx4MWFc
MFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMChc
MChcMChcMChcMChcMChcMChcMChcMChcMChcMCBcMFx4MWZcMFx4MWFcMFx4MWFcMFx4MWFcMFx4
MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFceDAwNlwwXHhhY1wwXHhiMlww
XHg5N1wwXHg5MVwwXHg4ZlwwXHg4Nlwwd1wwXHg4Y1wwXHhmZlwwR1wwXHgxZlwwZlwwXHg5Nlww
ZVwwYlwwSFwwXHhiM1wwXHg4YlwweVwweFwwXHgxZlwwY1wwZFwwIFwwIFwwIFwwIFwwIFwwIFww
IFwwIFwwIFwwIFwwYFwwalwwa1wwYVwwb1wwcFwwXHg4MFwwcFwwX1wwXHgxZlwwXHhmY1wwXHgx
ZlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwc1wwelwwclwwZ1wwe1wwfFwwIVwwIlww
IlwwIlwwIlwwIlwwIlwwaVwwdlwwbVwwdVwwbFwwaFwwXHg4MlwwXHg4M1wwXHgxZlwwblwwXHg4
N1wwXHg4OFwwXHg4MVwwJFwwXHg4OVwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwXHg4
YVwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwJVwwIlwwJFwwJFwwJFwwJFwwJFwwJFww
JFwwJFwwJFwwJFwwXHg4NVwwXHg4ZVwwXHg4NFwwXHg4ZFwwXHg5MFwwXHg5MlwwXHg5M1wwJFww
JFwwJFwwJFwwKVwwJFwwXHg5NVwwXHhhOVwwXHg5NFwwIlwwIlwwIlwwIlwwJVwwIlwwflwwXHg5
OFwwfVwwXHg5ZFwwXHg5YVwwXHg5OVwwXHg5Y1wwXHg3ZlwwXHg5YlwwI1wwXHg5ZVwwXHg5Zlww
XHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwJFwwJFwwJFwwJFwwKVwwJFwwXHhhNlwwXHhh
YlwwXHhhZVwwXHhiMFwwXHhiN1wwXHhiNFwwXHhiNlwwXHhhYVwwXHhiNVwwI1wwJlwwXHhmZFww
JlwwJFwwXHhiYlwwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFx4Yjlc
MFx4YmNcMFx4YjhcMFx4YmRcMFx4YmVcMFx4YmZcMFx4YzBcMCJcMCJcMCJcMCJcMCVcMCJcMCRc
MFx4YzJcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBceGMzXDBceGM0
XDBceGM1XDBceGM3XDBceGNlXDBceGM2XDBceGM4XDAiXDAiXDAiXDAiXDAlXDAiXDBceGM5XDAi
XDAiXDAiXDAiXDAlXDAiXDBceGNiXDBceGNkXDBceGNjXDBceGNhXDBceGNmXDBceGQxXDBceGQz
XDBceGQyXDBceGQwXDAjXDBceGQ1XDBceGFmXDBceGQ5XDBceGRhXDBceGRiXDBceGQ4XDBceDk5
XDBceGRjXDBceGU2XDAiXDAiXDAiXDAiXDAlXDAiXDBceDk2XDBceGRkXDBceGRlXDBceGRmXDBc
eGUwXDBceGUxXDBceGUyXDBceGUzXDBceGU0XDAjXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAo
XDAoXDAmXDBceGU1XDAmXDBceGU3XDBceGU4XDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAq
XDBceGU5XDBceGVhXDBceGViXDBceGVkXDBceGYyXDBceGVjXDBceGVlXDAkXDAkXDAkXDAkXDAp
XDAkXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDBceGVmXDBceGYwXDBceGYxXDBceGYz
XDBceGY0XDBceGY1XDBceGY3XDAkXDAkXDAkXDAkXDApXDAkXDBceGY4XDBceGY5XDBceGZiXDAk
XDAkXDAkXDAkXDApXDAkXDBceDkzXHgwMXZceDAxXHgwN1x4MDFcYlx4MDFoXHgwMWVceDAxWlx4
MDFUXHgwMWZceDAxI1wwW1x4MDFQXHgwMUxceDAxQVx4MDFJXHgwMVVceDAxSFx4MDEkXDAkXDAk
XDAkXDApXDAkXDBnXHgwMTFceDAxOVx4MDEsXHgwMVZceDAxOlx4MDE4XHgwMVx4MWFceDAxXHgx
Ylx4MDEjXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDAr
XDArXDArXDArXDAgXDBceDFjXHgwMS9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMFx4MThc
eDAxY1wwXHgxN1x4MDFceDFkXHgwMVx4MTlceDAxXHgxZlx4MDEmXHgwMVx4MWVceDAxIFx4MDEh
XHgwMSBcMFx4MWZcMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMFx4MTVceDAxWlwwJVx4
MDFeXDBYXDBUXDAjXHgwMVJcMCRceDAxIlx4MDFceDE2XHgwMVx4MWZcMF1cMFlcMFNcMFZcMFtc
MFwnXHgwMVdcMFxcXDBQXDBceDFmXDApXHgwMVFcMFVcMChceDAxK1x4MDEyXHgwMDJceDAwMlx4
MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDAqXHgwMS1ceDAxLlx4MDEvXHgwMTBc
eDAxMlx4MDFceDFmXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDAkXHgwMDZceDAxMlx4
MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAxXHgwMDdceDAx
QFx4MDE+XHgwMTtceDAxPFx4MDE9XHgwMTJceDAwMlx4MDAyXHgwMDJceDAwM1x4MDAyXDA/XHgw
MTJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDBEXHgwMUJceDAxRVx4MDEmXDBGXHgwMSZcMCRc
MENceDAxNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFwwR1x4
MDEyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAw
MlwwS1x4MDFKXHgwMU1ceDAxI1wwTlx4MDFPXHgwMVFceDAxUlx4MDFTXHgwMVlceDAxWFx4MDFX
XHgwMV1ceDAxJFwwXFxceDAxNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgw
MDRceDAwNFwwXlx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAwMlx4MDAyXHgwMDJceDAwMlx4
MDAyXHgwMDNceDAwMlwwX1x4MDFgXHgwMWFceDAxI1wwYlx4MDFjXHgwMWRceDAxaVx4MDFqXHgw
MWtceDAxbFx4MDFtXHgwMW5ceDAxb1x4MDFwXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFc
MEFcMHFceDAxMlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDJcMEFcMEFcMEFcMEFcMEFcMEFcMHJc
eDAxc1x4MDF0XHgwMSNcMHVceDAxd1x4MDFceDg1XHgwMXtceDAxW1x4MDF8XHgwMX1ceDAxflx4
MDFceDdmXHgwMVx4ODBceDAxXHg4MVx4MDFBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBc
eDgyXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMFpcMFx4ODNceDAxXlww
WFwwXHhkNlwwXHg4NFx4MDFSXDBceDg2XHgwMVx4ODdceDAxXHg4OFx4MDFceDg5XHgwMV1cMFlc
MFNcMFZcMFtcMFx4OGFceDAxXHhkN1wwXFxcMFBcMFx4MDNceDAxXHg4Ylx4MDFceDhjXHgwMVVc
MFx4OGRceDAxXHgwM1x4MDFBXDBBXDBBXDBBXDBBXDBBXDBceDhlXHgwMVx4OGZceDAxXHgwMlx4
MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgw
MVx4MDJceDAxXHgwMlx4MDFceDkwXHgwMVx4OTFceDAxXHg5Mlx4MDFceDk0XHgwMVx4YTVceDAx
XHg5ZFx4MDFceDk4XHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFc
eDAyXHgwMVx4MTBceDAxXHg5OVx4MDFceDE0XHgwMVxmXHgwMVx4MGJceDAxXHgwZlx4MDFcblx4
MDFceDlhXHgwMVx4OWJceDAxXHg5Y1x4MDEzXHgwMVx4MTNceDAxXHJceDAxXHgxMVx4MDFceDll
XHgwMVx4OWZceDAxXHhhMFx4MDFcdFx4MDFceDEyXHgwMVx4MGVceDAxNVx4MDFceDAzXHgwMVx4
YTZceDAxXHhhN1x4MDFceGE4XHgwMTRceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4
MDFceDAyXHgwMVx4MDJceDAxXHhhOVx4MDFceGRmXHgwMVx4ZGNceDAxXHhkM1x4MDFceGNhXHgw
MVx4YmZceDAxXHhiOVx4MDFceDAzXHgwMVx4YjFceDAxXHhiMlx4MDFceGIzXHgwMVx4YjRceDAx
XHhiNVx4MDFceDAzXHgwMVx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmRcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4YjZceDAxXHhiN1x4MDFceGZl
XDBcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFc
MFx4MDFceGI4XHgwMVx4YmFceDAxXHhiYlx4MDFceGJjXHgwMVx4YmRceDAxXHhiZVx4MDFceGMw
XHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVx4MTBceDAxXHhjMVx4MDFc
eDE0XHgwMXpceDAxXHgwYlx4MDFceDBmXHgwMVxuXHgwMVx4YzJceDAxXHhjM1x4MDFceGM0XHgw
MVx4YzVceDAxXHgxM1x4MDFcclx4MDFceDExXHgwMVx4YzZceDAxeVx4MDFceGM3XHgwMXhceDAx
XHgxMlx4MDFceDBlXHgwMVx4YzhceDAxXHhjOVx4MDFceGNiXHgwMVx4Y2NceDAxXHhjZFx4MDFc
eGNlXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVx4Y2ZceDAxXHhkMFx4
MDFceGZmXDBceGQxXHgwMVx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmRcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZDJceDAxXHhmY1wwXHhmZVww
XHhhMlx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFc
eGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGZmXHhmZlx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4
YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhh
MVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGEx
XHgwMVx4YTFceDAxXHhhMVx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRc
eDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4ZDRceDAxXHhkNVx4
MDFceGQ2XHgwMVx4ZDdceDAxXHhkOFx4MDFceGQ5XHgwMVx4ZGFceDAxXHhhNFx4MDFceGE0XHgw
MVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhkYlx4MDFceGRkXHgwMVx4ZGVceDAx
XHhmZlwwXHhlMFx4MDFceGUxXHgwMVx4ZTJceDAxXHhlM1x4MDFceGU0XHgwMVx4ZTVceDAxXHhl
Nlx4MDFceGU3XHgwMVx4ZjBceDAxXHhlY1x4MDFceGViXHgwMVx4YTRceDAxXHhhNFx4MDFceGE0
XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRc
eDAxXHhlZFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4
MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGZjXDBc
eGEzXHgwMVx4YWFceDAxXHhlZVx4MDFceGVmXHgwMVx4ZjFceDAxXHhhZlx4MDFceGYyXHgwMVx4
ZjNceDAxXHhmNVx4MDFceGIwXHgwMVx4ZjZceDAxXHhmN1x4MDFceGY4XHgwMVx4ZjlceDAxXHhh
Y1x4MDFceGFlXHgwMVx4YWJceDAxXHhhZFx4MDFceGZhXHgwMVx4ZmJceDAxXHhmY1x4MDFceGZk
XHgwMVx4MDJceDAyXDBceDAyXHgwMVx4MDJceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgw
MVx4YTRceDAxXHhhNFx4MDFceDAzXHgwMlx0XHgwMlx4MDZceDAyXHhmZFwwXHgwN1x4MDJcYlx4
MDJceDBiXHgwMlxyXHgwMlxmXHgwMlx4MGVceDAyXHgwZlx4MDJceDEwXHgwMlx4MTJceDAyXHgx
NVx4MDJceDE0XHgwMlx4MTZceDAyXHgxZlx4MDJcblx4MDJceDFiXHgwMlx4MWFceDAyXHgxZVx4
MDJceDFkXHgwMiBceDAyIVx4MDJceDEzXHgwMiJceDAyJFx4MDItXHgwMipceDAyXCdceDAyKFx4
MDIpXHgwMlx4MWNceDAyK1x4MDIsXHgwMi5ceDAyL1x4MDIwXHgwMiVceDAyJlx4MDIxXHgwMkFc
eDAyP1x4MDI4XHgwMjZceDAyN1x4MDI5XHgwMjpceDAyO1x4MDI8XHgwMj1ceDAyPlx4MDJAXHgw
MkJceDAyQ1x4MDJbXHgwMlhceDAySFx4MDJMXHgwMklceDAySlx4MDJLXHgwMk1ceDAyU1x4MDJP
XHgwMkdceDAyUFx4MDJOXHgwMlFceDAyUlx4MDJUXHgwMlVceDAyVlx4MDJXXHgwMllceDAyWlx4
MDJcXFx4MDJdXHgwMl5ceDAybFx4MDJhXHgwMmJceDAyY1x4MDJkXHgwMmVceDAyZlx4MDJnXHgw
MmhceDAyaVx4MDJqXHgwMmtceDAybVx4MDJuXHgwMm9ceDAycFx4MDJxXHgwMnJceDAyXHhmZFww
c1x4MDJ0XHgwMnVceDAydlx4MDJ3XHgwMlx4OTFceDAyXHg4OFx4MDJ7XHgwMnxceDAyfVx4MDJc
eDgzXHgwMlx4N2ZceDAyXHg4MFx4MDJceDgxXHgwMn5ceDAyXHg4Mlx4MDJceDg0XHgwMlx4ODVc
eDAyXHg4Nlx4MDJceDg3XHgwMlx4ODlceDAyXHg4YVx4MDJceDhiXHgwMlx4OGNceDAyXHg4ZFx4
MDJceDhlXHgwMlx4OGZceDAyXHg5MFx4MDJceDkyXHgwMlx4OTNceDAyXHg5NFx4MDJceGEwXHgw
Mlx4OTdceDAyXHg5OFx4MDJceDk5XHgwMlx4OWFceDAyXHg5Ylx4MDJceDlkXHgwMlx4OWNceDAy
XHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJc
eDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4
OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5
Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDlm
XHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZc
eDAyXHg5Zlx4MDJceDlmXHgwMlx4YTFceDAyXHhhMlx4MDJceGEzXHgwMlx4YTVceDAyXHhhNlx4
MDJceGE3XHgwMlx4YWFceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgw
Mlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAy
XHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceGIzXHgwMlwwXDBcMFwwXHhhZlx4MDJc
MFwwXDBcMFwwXDBceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4
MDJcMFwwXDBcMFwwXDBceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5
Zlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5ZVx4MDJcMFwwXDBcMFwwXDBceGIw
XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJc
eDlmXHgwMlx4OWZceDAyXHhhOFx4MDJcMFwwXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YjFceDAyXDBcMFx4YThceDAyXHhhOFx4MDJcMFwwXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlwwXDBceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlwwXDBceGE4XHgwMlwwXDBceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXDBcMFx4YThceDAyXDBcMFx4YThceDAyXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXHhhYlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhZVx4MDJcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwJywKKyAgLyogbGV4X2NoZWNrICovIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4
ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhi
MVx4MDJcMFwwXHhmZlx4ZmZcMFwwTlwwXHhhNFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMD1cMFwwXDBceDA1XDBceDFkXDBceDFmXDA+XDBceDFmXDBEXDBFXDBceDFm
XDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDAj
XDBsXDAjXDBtXDB9XDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDB+XDBceGE2XDBceGE3
XDBnXDBoXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwN1wwXDBcMFx0XDBcclwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcdFwwXDBcMFwwXDBcMFwwXDBcMFx4MDZcMFx0XDBceDA2XDBceDA2
XDBceDA2XDBceDA2XDBceDA2XDBceDBmXDBceDEyXDBceDA2XDBceDA2XDBcYlwwXHgwNlwwXHgw
NlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlww
XHgwNlwwXHgwNlwwXHgwNlwwXGJcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMC1cMFx4MDZcMC5cMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFxuXDBc
eDA2XDBceDBiXDBceDA2XDBceDBiXDBcZlwwXHgwZVwwXHgxMFwwXHgwZVwwXGZcMFx4MTFcMFx4
MTdcMFxmXDBceDEwXDBceDEzXDBceDE0XHgwMDVcMFx4MTRcMFx4MGVcMFx4MGJcMFxuXHgwMDZc
MFx4MTRcMFx4MTVcMFx4MTNcMFx4MTdcMFx4MTVcMFx4MTFceDAwN1wwXGZcMFx4MTNceDAwOFx4
MDA5XDBceDE4XDA6XDA8XDBceDE4XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5
XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDA/XDBcMFwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlww
XHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgx
NlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlww
XHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwQlww
R1wwXHgxNlwwXHgxOFwwSFwwSVwwSlwwTFwwXHgxNVwwUFwwXHgxOFwwXHgxOFwwUVwwXHgxOVww
U1wwVFwwVVwwXHgxYVwwXHgxOVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVww
XHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwXHgx
YlwwXHgxYVwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlww
XHgxYlwwXHgxYlwwRlwwVlwwUlwwV1wwWFwwWVwwW1wwXFxcMFpcMFx4MTZcMEZcMFx4MWJcMF9c
MFdcMGBcMGFcMEZcMFJcMFpcMFxcXDBcXFwwXHgxYVwwYlwwY1wwIFwwIFwwIFwwIFwwIFwwIFww
IFwwIFwwIFwwIFwwXlwwaVwwalwwXlwwblwwb1wweFwwb1wwXlwwXHgxYlwwXHgxNlwwIFwwIVww
IVwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwcVwweVwwcVwwXVwwelwwe1wwXHgxYlwwIVwwIVww
IVwwIVwwIVwwIVwwXVwwdFwwa1wwdFwwa1wwXVwwd1wwXHg4MVwwIFwwa1wwXHg4NlwwXHg4N1ww
d1wwXCJcMFx4ODhcMFwiXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDBceDg5
XDAhXDAhXDAhXDAhXDAhXDAhXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDAkXDAkXDAkXDAkXDAk
XDAkXDAkXDAkXDAkXDAkXDBceDgzXDBceDhiXDBceDgzXDBceDhjXDBceDhmXDBceDkxXDBceDky
XDAkXDAkXDAkXDAkXDAkXDAkXDBceDkzXDBceDk2XDBceDkzXDBcIlwwXCJcMFwiXDBcIlwwXCJc
MFwiXDB8XDBceDk3XDB8XDBceDk4XDBceDk5XDBceDk3XDBceDlhXDB8XDBceDlhXDBcIlwwXHg5
ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwJFwwJFwwJFwwJFwwJFwwJFww
XHhhNVwwXHhhOVwwXHhhZFwwXHhhZlwwXHhiMlwwXHhiM1wwXHhiNFwwXHhhOVwwXHhiNFwwJFww
JVwwXHgxNlwwJVwwJVwwXHhiYVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwXHhiN1ww
XHhiYlwwXHhiN1wwXHhiY1wwXHhiZFwwXHhiZVwwXHhiZlwwJVwwJVwwJVwwJVwwJVwwJVwwJ1ww
XHhjMVwwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhjMlwwXHhjM1wwXHhjNFwwXHhj
NVwwXHhjNlwwXHhjNVwwXHhjN1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhjOFwwJVwwJVwwJVwwJVww
JVwwJVwwXHhjOVwwXHhjYVwwXHhjYlwwXHhjOVwwXHhjZVwwXHhjZlwwXHhkMFwwXHhkMVwwXHhj
ZlwwJVwwXHhkNFwwXHhkNlwwXHhkOFwwXHhkOVwwXHhkYVwwXHhkN1wwXHhkOFwwXHhkYlwwXHhk
NlwwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhkN1wwXHhkY1wwXHhkZFwwXHhkZVwwXHhkZlwwXHhlMFww
XHhlMVwwXHhlMlwwXHhlM1wwJ1wwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKVwwXHhl
NFwwKVwwXHhlNlwwXHhlN1wwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwXHhlOFwwXHhl
OVwwXHhlYVwwXHhlYlwwXHhlY1wwXHhlYlwwXHhlZFwwKVwwKVwwKVwwKVwwKVwwKVwwKlwwKlww
KlwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwXHhlZVwwXHhlZlwwXHhmMFwwXHhmMlwwXHhmM1wwXHhm
NFwwXHhmNlwwKlwwKlwwKlwwKlwwKlwwKlwwXHhmN1wwXHhmOFwwXHhmYVwwKVwwKVwwKVwwKVww
KVwwKVwwXHgwNFx4MDFceDA1XHgwMVx4MDZceDAxXHgwN1x4MDFcdFx4MDFceDBiXHgwMVxmXHgw
MVxyXHgwMVxuXHgwMSlcMFxmXHgwMVx4MGVceDAxXHgwZlx4MDFceDExXHgwMVx4MTBceDAxXHJc
eDAxXHgxMFx4MDEqXDAqXDAqXDAqXDAqXDAqXDBcblx4MDFceDE1XHgwMVx4MTJceDAxXHgxN1x4
MDFcclx4MDFceDEyXHgwMVx4MTJceDAxXHgxOVx4MDFceDFhXHgwMSpcMCtcMCtcMCtcMCtcMCtc
MCtcMCtcMCtcMCtcMCtcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMC9cMFx4MWJceDAx
L1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwXHgxNlx4MDFceDE4XHgwMVx4MTZceDAxXHgx
Y1x4MDFceDE4XHgwMVx4MWRceDAxXHgxZVx4MDFceDFkXHgwMVx4MWZceDAxIFx4MDEwXDAvXHgw
MDBceDAwMFx4MDAwXHgwMDBceDAwMFx4MDAwXHgwMDBceDAwMFx4MDAwXHgwMDBcMFx4MTRceDAx
T1wwXCJceDAxT1wwT1wwT1wwIVx4MDFPXDAjXHgwMSFceDAxXHgxNFx4MDEwXDBPXDBPXDBPXDBP
XDBPXDAmXHgwMU9cME9cME9cMC9cMCdceDAxT1wwT1wwJ1x4MDEoXHgwMTFceDAwMVx4MDAxXHgw
MDFceDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFcMClceDAxLFx4MDEtXHgwMS5ceDAxL1x4
MDExXHgwMTBceDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMlx4MDA1XHgwMTJceDAw
Mlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMFx4MDA2XHgwMThc
eDAxOVx4MDE6XHgwMTtceDAxPFx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlwwPlx4MDEx
XHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMVwwQlx4MDFBXHgwMURceDAxM1wwRVx4MDEzXHgwMDNc
MEFceDAxM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1wwRlx4
MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAw
M1wwSFx4MDFJXHgwMUxceDAxMlwwTVx4MDFOXHgwMVBceDAxUVx4MDFSXHgwMVRceDAxVVx4MDFW
XHgwMVpceDAxNFwwW1x4MDE0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAw
NFx4MDA0XDBdXHgwMTNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDRceDAwNFx4MDA0XHgw
MDRceDAwNFx4MDA0XDBeXHgwMV9ceDAxYFx4MDEzXDBhXHgwMWJceDAxY1x4MDFoXHgwMWlceDAx
alx4MDFrXHgwMWxceDAxbVx4MDFuXHgwMW9ceDAxQFwwQFwwQFwwQFwwQFwwQFwwQFwwQFwwQFww
QFwwcFx4MDE0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFwwQFwwQFwwQFwwQFwwQFwwQFwwcVx4
MDFyXHgwMXNceDAxNFwwdFx4MDF2XHgwMXhceDAxeVx4MDF6XHgwMXtceDAxfFx4MDF9XHgwMX5c
eDAxXHg3Zlx4MDFceDgwXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMFx4ODFceDAx
QFwwQFwwQFwwQFwwQFwwQFwwQVwwQVwwQVwwQVwwQVwwQVwwXHhkNVwwXHg4Mlx4MDFceGQ1XDBc
eGQ1XDBceGQ1XDBceDgzXHgwMVx4ZDVcMFx4ODVceDAxXHg4Nlx4MDFceDg3XHgwMVx4ODhceDAx
XHhkNVwwXHhkNVwwXHhkNVwwXHhkNVwwXHhkNVwwXHg4OVx4MDFceGQ1XDBceGQ1XDBceGQ1XDBc
eGZmXDBceDhhXHgwMVx4OGJceDAxXHhkNVwwXHg4Y1x4MDFceGZmXDBBXDBBXDBBXDBBXDBBXDBB
XDBceDhkXHgwMVx4OGVceDAxXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhm
ZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHg4Zlx4MDFceDkwXHgwMVx4OTFceDAxXHg5M1x4MDFceDk1
XHgwMVx4OTZceDAxXHg5N1x4MDFceGZmXDBceGZmXDBceGZmXDBceGZmXDBceGZmXDBceGZmXDBc
Ylx4MDFceDk4XHgwMVxiXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVx4OTlceDAxXHg5YVx4
MDFceDliXHgwMVx4MTNceDAxXGJceDAxXGJceDAxXGJceDAxXHg5ZFx4MDFceDllXHgwMVx4OWZc
eDAxXGJceDAxXGJceDAxXGJceDAxXHgxM1x4MDFceGZmXDBceGE1XHgwMVx4YTZceDAxXHhhN1x4
MDFceDEzXHgwMVx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4YThceDAxXHhh
YVx4MDFceGFiXHgwMVx4YWNceDAxXHhhZFx4MDFceGFlXHgwMVx4YWZceDAxXHhmZlwwXHhiMFx4
MDFceGIxXHgwMVx4YjJceDAxXHhiM1x4MDFceGI0XHgwMVx4ZmZcMFwwXHgwMVwwXHgwMVwwXHgw
MVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVww
XHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgw
MVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVww
XHgwMVx4YjVceDAxXHhiNlx4MDFcMFx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgw
MVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4YjdceDAx
XHhiOVx4MDFceGJhXHgwMVx4YmJceDAxXHhiY1x4MDFceGJkXHgwMVx4YmZceDAxXHgwMlx4MDFc
eDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxd1x4MDFceGMwXHgwMXdceDAx
d1x4MDF3XHgwMXdceDAxd1x4MDFceGMxXHgwMVx4YzJceDAxXHhjM1x4MDFceGM0XHgwMXdceDAx
d1x4MDF3XHgwMVx4YzVceDAxd1x4MDFceGM2XHgwMXdceDAxd1x4MDF3XHgwMVx4YzdceDAxXHhj
OFx4MDFceGNhXHgwMVx4Y2JceDAxXHhjY1x4MDFceGNkXHgwMVx4MDJceDAxXHgwMlx4MDFceDAy
XHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4Y2VceDAxXHhjZlx4MDFcMFx4MDFceGQwXHgw
MVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAx
XHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFc
eDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4
MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgw
M1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceGQxXHgwMVwwXHgwMVx4MDNceDAxXHhhMFx4
MDFceGEwXHgwMVx4YTBceDAxXHhhMFx4MDFceGEwXHgwMVx4YTBceDAxXHhhMFx4MDFceGEwXHgw
MVx4YTBceDAxXHhhMFx4MDFceGZmXDBceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4
YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTJceDAxXHhh
Mlx4MDFceGEyXHgwMVx4YTJceDAxXHhhMlx4MDFceGEyXHgwMVx4YTJceDAxXHhhMlx4MDFceGEy
XHgwMVx4YTJceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNc
eDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGQzXHgwMVx4ZDRceDAxXHhkNVx4
MDFceGQ2XHgwMVx4ZDdceDAxXHhkOFx4MDFceGQ5XHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgw
MVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4ZGFceDAxXHhkY1x4MDFceGRkXHgwMVx4MDNceDAx
XHhkZlx4MDFceGUwXHgwMVx4ZTFceDAxXHhlMlx4MDFceGUzXHgwMVx4ZTRceDAxXHhlNVx4MDFc
eGU2XHgwMVx4ZThceDAxXHhlOVx4MDFceGVhXHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4
YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhl
Y1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGE0
XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceDAzXHgwMVx4YTJc
eDAxXHhhOVx4MDFceGVkXHgwMVx4ZWVceDAxXHhmMFx4MDFceGE5XHgwMVx4ZjFceDAxXHhmMlx4
MDFceGY0XHgwMVx4YTlceDAxXHhmNVx4MDFceGY2XHgwMVx4ZjdceDAxXHhmOFx4MDFceGE5XHgw
MVx4YTlceDAxXHhhOVx4MDFceGE5XHgwMVx4ZjlceDAxXHhmYVx4MDFceGZiXHgwMVx4ZmNceDAx
XHhmZVx4MDFceGZmXHgwMVwwXHgwMlx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhh
NFx4MDFceGE0XHgwMVx4MDJceDAyXHgwNFx4MDJceDA1XHgwMlwwXHgwMVx4MDZceDAyXHgwN1x4
MDJcdFx4MDJcblx4MDJceDBiXHgwMlxyXHgwMlx4MGVceDAyXHgwZlx4MDJceDExXHgwMlx4MTJc
eDAyXHgxM1x4MDJceDE1XHgwMlx4MTdceDAyXHRceDAyXHgxOFx4MDJceDE5XHgwMlx4MWJceDAy
XHgxY1x4MDJceDFmXHgwMiBceDAyXHgxMVx4MDIhXHgwMiNceDAyJFx4MDIlXHgwMiZceDAyJ1x4
MDIoXHgwMlx4MThceDAyKlx4MDIrXHgwMi1ceDAyLlx4MDIvXHgwMiNceDAyI1x4MDIwXHgwMjJc
eDAyM1x4MDI0XHgwMjVceDAyNlx4MDI4XHgwMjlceDAyOlx4MDI7XHgwMjxceDAyPVx4MDI/XHgw
MkFceDAyQlx4MDJEXHgwMkVceDAyRlx4MDJHXHgwMkhceDAySVx4MDJKXHgwMkxceDAyTVx4MDJO
XHgwMkZceDAyT1x4MDJMXHgwMlBceDAyUVx4MDJTXHgwMlRceDAyVVx4MDJWXHgwMlhceDAyWVx4
MDJbXHgwMlxcXHgwMl1ceDAyX1x4MDJgXHgwMmFceDAyYlx4MDJjXHgwMmRceDAyZVx4MDJmXHgw
MmdceDAyaFx4MDJpXHgwMmpceDAybFx4MDJtXHgwMm5ceDAyb1x4MDJwXHgwMnFceDAyXHgwM1x4
MDFyXHgwMnNceDAydFx4MDJ1XHgwMnZceDAyeFx4MDJ5XHgwMnpceDAye1x4MDJ8XHgwMn1ceDAy
flx4MDJceDdmXHgwMlx4ODBceDAyfFx4MDJceDgxXHgwMlx4ODNceDAyXHg4NFx4MDJceDg1XHgw
Mlx4ODZceDAyXHg4OFx4MDJceDg5XHgwMlx4OGFceDAyXHg4Ylx4MDJceDhjXHgwMlx4OGRceDAy
XHg4ZVx4MDJceDhmXHgwMlx4OTFceDAyXHg5Mlx4MDJceDkzXHgwMlx4OTVceDAyXHg5Nlx4MDJc
eDk3XHgwMlx4OThceDAyXHg5OVx4MDJceDlhXHgwMlx4OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4
OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4OWJceDAyXHg5
Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDlj
XHgwMlx4OWNceDAyXHg5Y1x4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDlkXHgwMlx4OWRc
eDAyXHg5ZFx4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDlkXHgwMlx4OWVceDAyXHg5ZVx4
MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgw
Mlx4OWVceDAyXHhhMFx4MDJceGExXHgwMlx4YTJceDAyXHhhNFx4MDJceGE1XHgwMlx4YTZceDAy
XHhhOVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJc
eDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4
OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YjBceDAyXHhmZlx4ZmZceGZmXHhmZlx4YWNceDAyXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlm
XHgwMlx4OWZceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHg5ZVx4MDJceDllXHgwMlx4OWVc
eDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDlkXHgwMlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4YWNceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4OWZceDAy
XHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YThceDAyXHhmZlx4ZmZc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhY1x4MDJceGZmXHhmZlx4
YThceDAyXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhmZlx4ZmZc
eGE4XHgwMlx4ZmZceGZmXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4ZmZceGZmXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhhOVx4MDJceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4YWNceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmYiLAorICAvKiBsZXhfYmFzZV9jb2RlICovIiIsCisgIC8qIGxleF9iYWNrdHJrX2Nv
ZGUgKi8iIiwKKyAgLyogbGV4X2RlZmF1bHRfY29kZSAqLyIiLAorICAvKiBsZXhfdHJhbnNfY29k
ZSAqLyIiLAorICAvKiBsZXhfY2hlY2tfY29kZSAqLyIiLAorICAvKiBsZXhfY29kZSAqLyIiCitd
OworCitmdW5jdGlvbiB0b2tlbihsZXhidWYpIHsKKyAgdmFyIGxleGJ1ZiQxID0gbGV4YnVmOwor
ICB2YXIgX19fb2NhbWxfbGV4X3N0YXRlID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBf
X29jYW1sX2xleF9zdGF0ZSA9IF9fX29jYW1sX2xleF9zdGF0ZTsKKyAgICB2YXIgX19vY2FtbF9s
ZXhfc3RhdGUkMSA9IExleGluZy5lbmdpbmUoX19vY2FtbF9sZXhfdGFibGVzLCBfX29jYW1sX2xl
eF9zdGF0ZSwgbGV4YnVmJDEpOworICAgIGlmIChfX29jYW1sX2xleF9zdGF0ZSQxID4gMTQ0IHx8
IF9fb2NhbWxfbGV4X3N0YXRlJDEgPCAwKSB7CisgICAgICBDdXJyeS5fMShsZXhidWYkMVsvKiBy
ZWZpbGxfYnVmZiAqLzBdLCBsZXhidWYkMSk7CisgICAgICBfX19vY2FtbF9sZXhfc3RhdGUgPSBf
X29jYW1sX2xleF9zdGF0ZSQxOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAg
IGVsc2UgeworICAgICAgc3dpdGNoIChfX29jYW1sX2xleF9zdGF0ZSQxKSB7CisgICAgICAgIGNh
c2UgMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIExQQVIgKi8yOworICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBSUEFSICovMzsKKyAgICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgICB2YXIgcyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKKyAg
ICAgICAgICAgIHJldHVybiAvKiBOQVQgKi9CbG9jay5fXygwLCBbc10pOworICAgICAgICBjYXNl
IDMgOiAKKyAgICAgICAgICAgIHZhciBzJDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfY3Vycl9wb3Mg
Ki81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogSU5UICovQmxvY2suX18oMSwgW3MkMV0pOwor
ICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHZhciBzJDIgPSBMZXhpbmcuc3ViX2xleGVt
ZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBs
ZXhfY3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogRkxPQVQgKi9CbG9jay5f
XygyLCBbcyQyXSk7CisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgdmFyIHMkMyA9IExl
eGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0s
IGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBU
RVhUICovQmxvY2suX18oMywgW3RleHQocyQzKV0pOworICAgICAgICBjYXNlIDYgOiAKKyAgICAg
ICAgICAgIHJldHVybiBlcnJvcihsZXhidWYkMSwgInVuY2xvc2VkIHRleHQgbGl0ZXJhbCIpOwor
ICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihsZXhidWYkMSwgImls
bGVnYWwgY29udHJvbCBjaGFyYWN0ZXIgaW4gdGV4dCBsaXRlcmFsIik7CisgICAgICAgIGNhc2Ug
OCA6IAorICAgICAgICAgICAgcmV0dXJuIGVycm9yX25lc3QoTGV4aW5nLmxleGVtZV9lbmRfcChs
ZXhidWYkMSksIGxleGJ1ZiQxLCAiaWxsZWdhbCBlc2NhcGUiKTsKKyAgICAgICAgY2FzZSA5IDog
CisgICAgICAgICAgICB2YXIgdCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSAr
IDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBWQUxVRV9UWVBFICovQmxvY2suX18oNSwg
W3ZhbHVlX3R5cGUodCldKTsKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgdmFyIHQk
MSA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiAvKiBDT05TVCAqL0Jsb2NrLl9fKDEwLCBbbnVtb3AodCQxLCBmdW5jdGlvbiAo
cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gQ3VycnkuXzEoSTMyLm9m
X3N0cmluZywgc1svKiBpdCAqLzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVy
YXRvcnMuaTMyX2NvbnN0KFNvdXJjZS4kYXQkYXQobiwgc1svKiBhdCAqLzBdKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJMzIgKi9CbG9jay5fXygwLCBbbl0pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwgZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
biA9IEN1cnJ5Ll8xKEk2NC5vZl9zdHJpbmcsIHNbLyogaXQgKi8xXSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgT3BlcmF0b3JzLmk2NF9jb25zdChTb3VyY2UuJGF0JGF0KG4sIHNbLyog
YXQgKi8wXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSTY0ICov
QmxvY2suX18oMSwgW25dKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChzKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIG4gPSBDdXJyeS5fMShGMzIub2Zfc3RyaW5nLCBzWy8qIGl0ICov
MV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9ycy5mMzJfY29uc3QoU291
cmNlLiRhdCRhdChuLCBzWy8qIGF0ICovMF0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIEYzMiAqL0Jsb2NrLl9fKDIsIFtuXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAo
cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gQ3VycnkuXzEoRjY0Lm9m
X3N0cmluZywgc1svKiBpdCAqLzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVy
YXRvcnMuZjY0X2NvbnN0KFNvdXJjZS4kYXQkYXQobiwgc1svKiBhdCAqLzBdKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGNjQgKi9CbG9jay5fXygzLCBbbl0pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSldKTsKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEZV
TkNSRUYgKi8wOworICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICByZXR1cm4gLyogTVVU
ICovMTsKKyAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIE5PUCAqLzQ7
CisgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBVTlJFQUNIQUJMRSAq
LzI0OworICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICByZXR1cm4gLyogRFJPUCAqLzU7
CisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBCTE9DSyAqLzY7Cisg
ICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBMT09QICovMTI7CisgICAg
ICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFTkQgKi83OworICAgICAgICBj
YXNlIDE5IDogCisgICAgICAgICAgICByZXR1cm4gLyogQlIgKi8xMzsKKyAgICAgICAgY2FzZSAy
MCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEJSX0lGICovMTQ7CisgICAgICAgIGNhc2UgMjEg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBCUl9UQUJMRSAqLzE1OworICAgICAgICBjYXNlIDIy
IDogCisgICAgICAgICAgICByZXR1cm4gLyogUkVUVVJOICovMTg7CisgICAgICAgIGNhc2UgMjMg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBJRiAqLzg7CisgICAgICAgIGNhc2UgMjQgOiAKKyAg
ICAgICAgICAgIHJldHVybiAvKiBUSEVOICovOTsKKyAgICAgICAgY2FzZSAyNSA6IAorICAgICAg
ICAgICAgcmV0dXJuIC8qIEVMU0UgKi8xMDsKKyAgICAgICAgY2FzZSAyNiA6IAorICAgICAgICAg
ICAgcmV0dXJuIC8qIFNFTEVDVCAqLzExOworICAgICAgICBjYXNlIDI3IDogCisgICAgICAgICAg
ICByZXR1cm4gLyogQ0FMTCAqLzE2OworICAgICAgICBjYXNlIDI4IDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogQ0FMTF9JTkRJUkVDVCAqLzE3OworICAgICAgICBjYXNlIDI5IDogCisgICAgICAg
ICAgICByZXR1cm4gLyogR0VUX0xPQ0FMICovMTk7CisgICAgICAgIGNhc2UgMzAgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBTRVRfTE9DQUwgKi8yMDsKKyAgICAgICAgY2FzZSAzMSA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIFRFRV9MT0NBTCAqLzIxOworICAgICAgICBjYXNlIDMyIDogCisg
ICAgICAgICAgICByZXR1cm4gLyogR0VUX0dMT0JBTCAqLzIyOworICAgICAgICBjYXNlIDMzIDog
CisgICAgICAgICAgICByZXR1cm4gLyogU0VUX0dMT0JBTCAqLzIzOworICAgICAgICBjYXNlIDM0
IDogCisgICAgICAgICAgICB2YXIgdCQyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIExPQUQgKi9CbG9jay5fXyg2LCBb
KGZ1bmN0aW9uKHQkMil7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChh
LCBvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmcgPSBDdXJyeS5f
MihvcHQsIGEsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRpYWxfYXJnJDEg
PSBDdXJyeS5fMihvcHQsIGEsIDMpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRp
YWxfYXJnJDIgPSBDdXJyeS5fMihvcHQsIGEsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHBhcnRpYWxfYXJnJDMgPSBDdXJyeS5fMihvcHQsIGEsIDMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKG51bW9wKHQkMiwgZnVuY3Rpb24gKHBhcmFtKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5p
MzJfbG9hZChwYXJ0aWFsX2FyZywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkKHBhcnRpYWxfYXJnJDEs
IHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5mMzJfbG9hZChwYXJ0aWFsX2FyZyQyLCBwYXJhbSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2xv
YWQocGFydGlhbF9hcmckMywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9KSwgbyk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgIH0odCQyKSldKTsKKyAgICAgICAgY2FzZSAzNSA6IAorICAgICAgICAgICAgdmFyIHQk
MyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiAvKiBTVE9SRSAqL0Jsb2NrLl9fKDcsIFsoZnVuY3Rpb24odCQzKXsKKyAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIG8pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBwYXJ0aWFsX2FyZyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMik7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMSA9IEN1cnJ5Ll8yKG9wdCwgYSwgMyk7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMiA9IEN1cnJ5Ll8yKG9w
dCwgYSwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMyA9IEN1
cnJ5Ll8yKG9wdCwgYSwgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ3Vycnku
XzEobnVtb3AodCQzLCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zdG9yZShwYXJ0aWFsX2FyZywg
cGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlv
biAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmk2NF9zdG9yZShwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3N0
b3JlKHBhcnRpYWxfYXJnJDIsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfc3RvcmUocGFydGlhbF9hcmckMywg
cGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIH0odCQzKSldKTsK
KyAgICAgICAgY2FzZSAzNiA6IAorICAgICAgICAgICAgdmFyIHQkNCA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHZhciBzeiA9IExleGlu
Zy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyA4
IHwgMCwgbGV4YnVmJDFbLyogbGV4X2N1cnJfcG9zICovNV0gLSAyIHwgMCk7CisgICAgICAgICAg
ICB2YXIgcyQ0ID0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhcihsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X2N1cnJfcG9zICovNV0gLSAxIHwgMCk7CisgICAgICAgICAgICBpZiAodCQ0ID09PSAiaTMy
IiAmJiBzeiA9PT0gIjMyIikgeworICAgICAgICAgICAgICBlcnJvcihsZXhidWYkMSwgInVua25v
d24gb3BlcmF0b3IiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAvKiBMT0FE
ICovQmxvY2suX18oNiwgWyhmdW5jdGlvbih0JDQsc3oscyQ0KXsKKyAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBpbnRvcCh0JDQsIEN1cnJ5Ll8xKG1lbXN6KHN6LCBDdXJyeS5fMShleHQocyQ0LCBPcGVy
YXRvcnMuaTMyX2xvYWQ4X3MsIE9wZXJhdG9ycy5pMzJfbG9hZDhfdSksIEN1cnJ5Ll8yKG9wdCwg
YSwgMCkpLCBDdXJyeS5fMShleHQocyQ0LCBPcGVyYXRvcnMuaTMyX2xvYWQxNl9zLCBPcGVyYXRv
cnMuaTMyX2xvYWQxNl91KSwgQ3VycnkuXzIob3B0LCBhLCAxKSksIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy51bnJlYWNoYWJsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0pLCBvKSwgQ3VycnkuXzEobWVtc3ooc3osIEN1cnJ5Ll8xKGV4dChzJDQsIE9wZXJhdG9ycy5p
NjRfbG9hZDhfcywgT3BlcmF0b3JzLmk2NF9sb2FkOF91KSwgQ3VycnkuXzIob3B0LCBhLCAwKSks
IEN1cnJ5Ll8xKGV4dChzJDQsIE9wZXJhdG9ycy5pNjRfbG9hZDE2X3MsIE9wZXJhdG9ycy5pNjRf
bG9hZDE2X3UpLCBDdXJyeS5fMihvcHQsIGEsIDEpKSwgQ3VycnkuXzEoZXh0KHMkNCwgT3BlcmF0
b3JzLmk2NF9sb2FkMzJfcywgT3BlcmF0b3JzLmk2NF9sb2FkMzJfdSksIEN1cnJ5Ll8yKG9wdCwg
YSwgMikpKSwgbykpOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICB9KHQkNCxzeixzJDQpKV0pOworICAgICAgICBjYXNlIDM3IDogCisgICAgICAgICAgICB2
YXIgdCQ1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAg
ICAgICAgICAgdmFyIHN6JDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgOSB8IDAsIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAq
LzVdKTsKKyAgICAgICAgICAgIGlmICh0JDUgPT09ICJpMzIiICYmIHN6JDEgPT09ICIzMiIpIHsK
KyAgICAgICAgICAgICAgZXJyb3IobGV4YnVmJDEsICJ1bmtub3duIG9wZXJhdG9yIik7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLyogU1RPUkUgKi9CbG9jay5fXyg3LCBbKGZ1
bmN0aW9uKHQkNSxzeiQxKXsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KGEsIG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJ0aWFsX2FyZyA9IEN1cnJ5
Ll8yKG9wdCwgYSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmck
MSA9IEN1cnJ5Ll8yKG9wdCwgYSwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFy
dGlhbF9hcmckMiA9IEN1cnJ5Ll8yKG9wdCwgYSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgcGFydGlhbF9hcmckMyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckNCA9IEN1cnJ5Ll8yKG9wdCwgYSwgMik7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50b3AodCQ1LCBDdXJyeS5fMShtZW1zeihzeiQx
LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmU4KHBhcnRpYWxfYXJnLCBwYXJhbSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAo
cGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmUxNihwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMu
dW5yZWFjaGFibGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KSwgbyksIEN1cnJ5Ll8xKG1lbXN6KHN6JDEsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9z
dG9yZTgocGFydGlhbF9hcmckMiwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMTYocGFy
dGlhbF9hcmckMywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMzIocGFydGlhbF9hcmck
NCwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSks
IG8pKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgfSh0
JDUsc3okMSkpXSk7CisgICAgICAgIGNhc2UgMzggOiAKKyAgICAgICAgICAgIHZhciBzJDUgPSBM
ZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgNyB8IDAsIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBPRkZTRVRfRVFfTkFUICovQmxvY2suX18oOCwgW3MkNV0pOworICAgICAgICBjYXNl
IDM5IDogCisgICAgICAgICAgICB2YXIgcyQ2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEs
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDYgfCAwLCBsZXhidWYkMVsvKiBsZXhf
Y3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogQUxJR05fRVFfTkFUICovQmxv
Y2suX18oOSwgW3MkNl0pOworICAgICAgICBjYXNlIDQwIDogCisgICAgICAgICAgICB2YXIgdCQ2
ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAg
ICAgcmV0dXJuIC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtpbnRvcCh0JDYsIE9wZXJhdG9ycy5p
MzJfY2x6LCBPcGVyYXRvcnMuaTY0X2NseildKTsKKyAgICAgICAgY2FzZSA0MSA6IAorICAgICAg
ICAgICAgdmFyIHQkNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAw
KTsKKyAgICAgICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbaW50b3AodCQ3
LCBPcGVyYXRvcnMuaTMyX2N0eiwgT3BlcmF0b3JzLmk2NF9jdHopXSk7CisgICAgICAgIGNhc2Ug
NDIgOiAKKyAgICAgICAgICAgIHZhciB0JDggPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygx
MSwgW2ludG9wKHQkOCwgT3BlcmF0b3JzLmkzMl9wb3BjbnQsIE9wZXJhdG9ycy5pNjRfcG9wY250
KV0pOworICAgICAgICBjYXNlIDQzIDogCisgICAgICAgICAgICB2YXIgdCQ5ID0gTGV4aW5nLnN1
Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVm
JDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8q
IFVOQVJZICovQmxvY2suX18oMTEsIFtmbG9hdG9wKHQkOSwgT3BlcmF0b3JzLmYzMl9uZWcsIE9w
ZXJhdG9ycy5mNjRfbmVnKV0pOworICAgICAgICBjYXNlIDQ0IDogCisgICAgICAgICAgICB2YXIg
dCQxMCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbZmxvYXRvcCh0JDEwLCBPcGVy
YXRvcnMuZjMyX2FicywgT3BlcmF0b3JzLmY2NF9hYnMpXSk7CisgICAgICAgIGNhc2UgNDUgOiAK
KyAgICAgICAgICAgIHZhciB0JDExID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtm
bG9hdG9wKHQkMTEsIE9wZXJhdG9ycy5mMzJfc3FydCwgT3BlcmF0b3JzLmY2NF9zcXJ0KV0pOwor
ICAgICAgICBjYXNlIDQ2IDogCisgICAgICAgICAgICB2YXIgdCQxMiA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBVTkFS
WSAqL0Jsb2NrLl9fKDExLCBbZmxvYXRvcCh0JDEyLCBPcGVyYXRvcnMuZjMyX2NlaWwsIE9wZXJh
dG9ycy5mNjRfY2VpbCldKTsKKyAgICAgICAgY2FzZSA0NyA6IAorICAgICAgICAgICAgdmFyIHQk
MTMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3AodCQxMywgT3BlcmF0
b3JzLmYzMl9mbG9vciwgT3BlcmF0b3JzLmY2NF9mbG9vcildKTsKKyAgICAgICAgY2FzZSA0OCA6
IAorICAgICAgICAgICAgdmFyIHQkMTQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwg
W2Zsb2F0b3AodCQxNCwgT3BlcmF0b3JzLmYzMl90cnVuYywgT3BlcmF0b3JzLmY2NF90cnVuYyld
KTsKKyAgICAgICAgY2FzZSA0OSA6IAorICAgICAgICAgICAgdmFyIHQkMTUgPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyog
VU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3AodCQxNSwgT3BlcmF0b3JzLmYzMl9uZWFyZXN0
LCBPcGVyYXRvcnMuZjY0X25lYXJlc3QpXSk7CisgICAgICAgIGNhc2UgNTAgOiAKKyAgICAgICAg
ICAgIHZhciB0JDE2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQx
NiwgT3BlcmF0b3JzLmkzMl9hZGQsIE9wZXJhdG9ycy5pNjRfYWRkKV0pOworICAgICAgICBjYXNl
IDUxIDogCisgICAgICAgICAgICB2YXIgdCQxNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQx
LCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9CbG9jay5f
XygxMiwgW2ludG9wKHQkMTcsIE9wZXJhdG9ycy5pMzJfc3ViLCBPcGVyYXRvcnMuaTY0X3N1Yild
KTsKKyAgICAgICAgY2FzZSA1MiA6IAorICAgICAgICAgICAgdmFyIHQkMTggPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyog
QklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDE4LCBPcGVyYXRvcnMuaTMyX211bCwgT3Bl
cmF0b3JzLmk2NF9tdWwpXSk7CisgICAgICAgIGNhc2UgNTMgOiAKKyAgICAgICAgICAgIHZhciB0
JDE5ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAg
ICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQxOSwgT3BlcmF0
b3JzLmkzMl9kaXZfcywgT3BlcmF0b3JzLmk2NF9kaXZfcyldKTsKKyAgICAgICAgY2FzZSA1NCA6
IAorICAgICAgICAgICAgdmFyIHQkMjAgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIs
IFtpbnRvcCh0JDIwLCBPcGVyYXRvcnMuaTMyX2Rpdl91LCBPcGVyYXRvcnMuaTY0X2Rpdl91KV0p
OworICAgICAgICBjYXNlIDU1IDogCisgICAgICAgICAgICB2YXIgdCQyMSA9IExleGluZy5zdWJf
bGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQx
Wy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBC
SU5BUlkgKi9CbG9jay5fXygxMiwgW2ludG9wKHQkMjEsIE9wZXJhdG9ycy5pMzJfcmVtX3MsIE9w
ZXJhdG9ycy5pNjRfcmVtX3MpXSk7CisgICAgICAgIGNhc2UgNTYgOiAKKyAgICAgICAgICAgIHZh
ciB0JDIyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyMiwgT3Bl
cmF0b3JzLmkzMl9yZW1fdSwgT3BlcmF0b3JzLmk2NF9yZW1fdSldKTsKKyAgICAgICAgY2FzZSA1
NyA6IAorICAgICAgICAgICAgdmFyIHQkMjMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18o
MTIsIFtpbnRvcCh0JDIzLCBPcGVyYXRvcnMuaTMyX2FuZCwgT3BlcmF0b3JzLmk2NF9hbmQpXSk7
CisgICAgICAgIGNhc2UgNTggOiAKKyAgICAgICAgICAgIHZhciB0JDI0ID0gTGV4aW5nLnN1Yl9s
ZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJ
TkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyNCwgT3BlcmF0b3JzLmkzMl9vciwgT3BlcmF0
b3JzLmk2NF9vcildKTsKKyAgICAgICAgY2FzZSA1OSA6IAorICAgICAgICAgICAgdmFyIHQkMjUg
PSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDI1LCBPcGVyYXRvcnMu
aTMyX3hvciwgT3BlcmF0b3JzLmk2NF94b3IpXSk7CisgICAgICAgIGNhc2UgNjAgOiAKKyAgICAg
ICAgICAgIHZhciB0JDI2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8
IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3Ao
dCQyNiwgT3BlcmF0b3JzLmkzMl9zaGwsIE9wZXJhdG9ycy5pNjRfc2hsKV0pOworICAgICAgICBj
YXNlIDYxIDogCisgICAgICAgICAgICB2YXIgdCQyNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9CbG9j
ay5fXygxMiwgW2ludG9wKHQkMjcsIE9wZXJhdG9ycy5pMzJfc2hyX3MsIE9wZXJhdG9ycy5pNjRf
c2hyX3MpXSk7CisgICAgICAgIGNhc2UgNjIgOiAKKyAgICAgICAgICAgIHZhciB0JDI4ID0gTGV4
aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0
dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyOCwgT3BlcmF0b3JzLmkzMl9z
aHJfdSwgT3BlcmF0b3JzLmk2NF9zaHJfdSldKTsKKyAgICAgICAgY2FzZSA2MyA6IAorICAgICAg
ICAgICAgdmFyIHQkMjkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwg
MCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0
JDI5LCBPcGVyYXRvcnMuaTMyX3JvdGwsIE9wZXJhdG9ycy5pNjRfcm90bCldKTsKKyAgICAgICAg
Y2FzZSA2NCA6IAorICAgICAgICAgICAgdmFyIHQkMzAgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhi
dWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3Rh
cnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxv
Y2suX18oMTIsIFtpbnRvcCh0JDMwLCBPcGVyYXRvcnMuaTMyX3JvdHIsIE9wZXJhdG9ycy5pNjRf
cm90cildKTsKKyAgICAgICAgY2FzZSA2NSA6IAorICAgICAgICAgICAgdmFyIHQkMzEgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1
cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzEsIE9wZXJhdG9ycy5mMzJf
YWRkLCBPcGVyYXRvcnMuZjY0X2FkZCldKTsKKyAgICAgICAgY2FzZSA2NiA6IAorICAgICAgICAg
ICAgdmFyIHQkMzIgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQk
MzIsIE9wZXJhdG9ycy5mMzJfc3ViLCBPcGVyYXRvcnMuZjY0X3N1YildKTsKKyAgICAgICAgY2Fz
ZSA2NyA6IAorICAgICAgICAgICAgdmFyIHQkMzMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYk
MSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2su
X18oMTIsIFtmbG9hdG9wKHQkMzMsIE9wZXJhdG9ycy5mMzJfbXVsLCBPcGVyYXRvcnMuZjY0X211
bCldKTsKKyAgICAgICAgY2FzZSA2OCA6IAorICAgICAgICAgICAgdmFyIHQkMzQgPSBMZXhpbmcu
c3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhi
dWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4g
LyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzQsIE9wZXJhdG9ycy5mMzJfZGl2
LCBPcGVyYXRvcnMuZjY0X2RpdildKTsKKyAgICAgICAgY2FzZSA2OSA6IAorICAgICAgICAgICAg
dmFyIHQkMzUgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzUs
IE9wZXJhdG9ycy5mMzJfbWluLCBPcGVyYXRvcnMuZjY0X21pbildKTsKKyAgICAgICAgY2FzZSA3
MCA6IAorICAgICAgICAgICAgdmFyIHQkMzYgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18o
MTIsIFtmbG9hdG9wKHQkMzYsIE9wZXJhdG9ycy5mMzJfbWF4LCBPcGVyYXRvcnMuZjY0X21heCld
KTsKKyAgICAgICAgY2FzZSA3MSA6IAorICAgICAgICAgICAgdmFyIHQkMzcgPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyog
QklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzcsIE9wZXJhdG9ycy5mMzJfY29weXNp
Z24sIE9wZXJhdG9ycy5mNjRfY29weXNpZ24pXSk7CisgICAgICAgIGNhc2UgNzIgOiAKKyAgICAg
ICAgICAgIHZhciB0JDM4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8
IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIFRFU1QgKi9CbG9jay5fXygxNSwgW2ludG9wKHQk
MzgsIE9wZXJhdG9ycy5pMzJfZXF6LCBPcGVyYXRvcnMuaTY0X2VxeildKTsKKyAgICAgICAgY2Fz
ZSA3MyA6IAorICAgICAgICAgICAgdmFyIHQkMzkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYk
MSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2Nr
Ll9fKDEzLCBbaW50b3AodCQzOSwgT3BlcmF0b3JzLmkzMl9lcSwgT3BlcmF0b3JzLmk2NF9lcSld
KTsKKyAgICAgICAgY2FzZSA3NCA6IAorICAgICAgICAgICAgdmFyIHQkNDAgPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyog
Q09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0MCwgT3BlcmF0b3JzLmkzMl9uZSwgT3Bl
cmF0b3JzLmk2NF9uZSldKTsKKyAgICAgICAgY2FzZSA3NSA6IAorICAgICAgICAgICAgdmFyIHQk
NDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0MSwgT3BlcmF0
b3JzLmkzMl9sdF9zLCBPcGVyYXRvcnMuaTY0X2x0X3MpXSk7CisgICAgICAgIGNhc2UgNzYgOiAK
KyAgICAgICAgICAgIHZhciB0JDQyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywg
W2ludG9wKHQkNDIsIE9wZXJhdG9ycy5pMzJfbHRfdSwgT3BlcmF0b3JzLmk2NF9sdF91KV0pOwor
ICAgICAgICBjYXNlIDc3IDogCisgICAgICAgICAgICB2YXIgdCQ0MyA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT01Q
QVJFICovQmxvY2suX18oMTMsIFtpbnRvcCh0JDQzLCBPcGVyYXRvcnMuaTMyX2xlX3MsIE9wZXJh
dG9ycy5pNjRfbGVfcyldKTsKKyAgICAgICAgY2FzZSA3OCA6IAorICAgICAgICAgICAgdmFyIHQk
NDQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0NCwgT3BlcmF0
b3JzLmkzMl9sZV91LCBPcGVyYXRvcnMuaTY0X2xlX3UpXSk7CisgICAgICAgIGNhc2UgNzkgOiAK
KyAgICAgICAgICAgIHZhciB0JDQ1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywg
W2ludG9wKHQkNDUsIE9wZXJhdG9ycy5pMzJfZ3RfcywgT3BlcmF0b3JzLmk2NF9ndF9zKV0pOwor
ICAgICAgICBjYXNlIDgwIDogCisgICAgICAgICAgICB2YXIgdCQ0NiA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT01Q
QVJFICovQmxvY2suX18oMTMsIFtpbnRvcCh0JDQ2LCBPcGVyYXRvcnMuaTMyX2d0X3UsIE9wZXJh
dG9ycy5pNjRfZ3RfdSldKTsKKyAgICAgICAgY2FzZSA4MSA6IAorICAgICAgICAgICAgdmFyIHQk
NDcgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0NywgT3BlcmF0
b3JzLmkzMl9nZV9zLCBPcGVyYXRvcnMuaTY0X2dlX3MpXSk7CisgICAgICAgIGNhc2UgODIgOiAK
KyAgICAgICAgICAgIHZhciB0JDQ4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywg
W2ludG9wKHQkNDgsIE9wZXJhdG9ycy5pMzJfZ2VfdSwgT3BlcmF0b3JzLmk2NF9nZV91KV0pOwor
ICAgICAgICBjYXNlIDgzIDogCisgICAgICAgICAgICB2YXIgdCQ0OSA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT01Q
QVJFICovQmxvY2suX18oMTMsIFtmbG9hdG9wKHQkNDksIE9wZXJhdG9ycy5mMzJfZXEsIE9wZXJh
dG9ycy5mNjRfZXEpXSk7CisgICAgICAgIGNhc2UgODQgOiAKKyAgICAgICAgICAgIHZhciB0JDUw
ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAg
ICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2Zsb2F0b3AodCQ1MCwgT3BlcmF0
b3JzLmYzMl9uZSwgT3BlcmF0b3JzLmY2NF9uZSldKTsKKyAgICAgICAgY2FzZSA4NSA6IAorICAg
ICAgICAgICAgdmFyIHQkNTEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAz
IHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbZmxv
YXRvcCh0JDUxLCBPcGVyYXRvcnMuZjMyX2x0LCBPcGVyYXRvcnMuZjY0X2x0KV0pOworICAgICAg
ICBjYXNlIDg2IDogCisgICAgICAgICAgICB2YXIgdCQ1MiA9IExleGluZy5zdWJfbGV4ZW1lKGxl
eGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9z
dGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT01QQVJFICov
QmxvY2suX18oMTMsIFtmbG9hdG9wKHQkNTIsIE9wZXJhdG9ycy5mMzJfbGUsIE9wZXJhdG9ycy5m
NjRfbGUpXSk7CisgICAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgICAgIHZhciB0JDUzID0gTGV4
aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0
dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2Zsb2F0b3AodCQ1MywgT3BlcmF0b3JzLmYz
Ml9ndCwgT3BlcmF0b3JzLmY2NF9ndCldKTsKKyAgICAgICAgY2FzZSA4OCA6IAorICAgICAgICAg
ICAgdmFyIHQkNTQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbZmxvYXRvcCh0
JDU0LCBPcGVyYXRvcnMuZjMyX2dlLCBPcGVyYXRvcnMuZjY0X2dlKV0pOworICAgICAgICBjYXNl
IDg5IDogCisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbT3Bl
cmF0b3JzLmkzMl93cmFwX2k2NF0pOworICAgICAgICBjYXNlIDkwIDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbT3BlcmF0b3JzLmk2NF9leHRlbmRfc19p
MzJdKTsKKyAgICAgICAgY2FzZSA5MSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQg
Ki9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5pNjRfZXh0ZW5kX3VfaTMyXSk7CisgICAgICAgIGNh
c2UgOTIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtP
cGVyYXRvcnMuZjMyX2RlbW90ZV9mNjRdKTsKKyAgICAgICAgY2FzZSA5MyA6IAorICAgICAgICAg
ICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5mNjRfcHJvbW90
ZV9mMzJdKTsKKyAgICAgICAgY2FzZSA5NCA6IAorICAgICAgICAgICAgdmFyIHQkNTUgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1
cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1NSwgT3BlcmF0b3JzLmkzMl90
cnVuY19zX2YzMiwgT3BlcmF0b3JzLmk2NF90cnVuY19zX2YzMildKTsKKyAgICAgICAgY2FzZSA5
NSA6IAorICAgICAgICAgICAgdmFyIHQkNTYgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9f
KDE0LCBbaW50b3AodCQ1NiwgT3BlcmF0b3JzLmkzMl90cnVuY191X2YzMiwgT3BlcmF0b3JzLmk2
NF90cnVuY191X2YzMildKTsKKyAgICAgICAgY2FzZSA5NiA6IAorICAgICAgICAgICAgdmFyIHQk
NTcgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1NywgT3BlcmF0
b3JzLmkzMl90cnVuY19zX2Y2NCwgT3BlcmF0b3JzLmk2NF90cnVuY19zX2Y2NCldKTsKKyAgICAg
ICAgY2FzZSA5NyA6IAorICAgICAgICAgICAgdmFyIHQkNTggPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAq
L0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1OCwgT3BlcmF0b3JzLmkzMl90cnVuY191X2Y2NCwgT3Bl
cmF0b3JzLmk2NF90cnVuY191X2Y2NCldKTsKKyAgICAgICAgY2FzZSA5OCA6IAorICAgICAgICAg
ICAgdmFyIHQkNTkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbZmxvYXRvcCh0
JDU5LCBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfc19pMzIsIE9wZXJhdG9ycy5mNjRfY29udmVydF9z
X2kzMildKTsKKyAgICAgICAgY2FzZSA5OSA6IAorICAgICAgICAgICAgdmFyIHQkNjAgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1
cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbZmxvYXRvcCh0JDYwLCBPcGVyYXRvcnMuZjMy
X2NvbnZlcnRfdV9pMzIsIE9wZXJhdG9ycy5mNjRfY29udmVydF91X2kzMildKTsKKyAgICAgICAg
Y2FzZSAxMDAgOiAKKyAgICAgICAgICAgIHZhciB0JDYxID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4
YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9C
bG9jay5fXygxNCwgW2Zsb2F0b3AodCQ2MSwgT3BlcmF0b3JzLmYzMl9jb252ZXJ0X3NfaTY0LCBP
cGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pNjQpXSk7CisgICAgICAgIGNhc2UgMTAxIDogCisgICAg
ICAgICAgICB2YXIgdCQ2MiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMg
fCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtmbG9h
dG9wKHQkNjIsIE9wZXJhdG9ycy5mMzJfY29udmVydF91X2k2NCwgT3BlcmF0b3JzLmY2NF9jb252
ZXJ0X3VfaTY0KV0pOworICAgICAgICBjYXNlIDEwMiA6IAorICAgICAgICAgICAgcmV0dXJuIC8q
IENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5mMzJfcmVpbnRlcnByZXRfaTMyXSk7
CisgICAgICAgIGNhc2UgMTAzIDogCisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Js
b2NrLl9fKDE0LCBbT3BlcmF0b3JzLmY2NF9yZWludGVycHJldF9pNjRdKTsKKyAgICAgICAgY2Fz
ZSAxMDQgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtP
cGVyYXRvcnMuaTMyX3JlaW50ZXJwcmV0X2YzMl0pOworICAgICAgICBjYXNlIDEwNSA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5pNjRf
cmVpbnRlcnByZXRfZjY0XSk7CisgICAgICAgIGNhc2UgMTA2IDogCisgICAgICAgICAgICByZXR1
cm4gLyogQ1VSUkVOVF9NRU1PUlkgKi8yNTsKKyAgICAgICAgY2FzZSAxMDcgOiAKKyAgICAgICAg
ICAgIHJldHVybiAvKiBHUk9XX01FTU9SWSAqLzI2OworICAgICAgICBjYXNlIDEwOCA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIFRZUEUgKi8yOTsKKyAgICAgICAgY2FzZSAxMDkgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBGVU5DICovMjc7CisgICAgICAgIGNhc2UgMTEwIDogCisgICAgICAg
ICAgICByZXR1cm4gLyogU1RBUlQgKi8yODsKKyAgICAgICAgY2FzZSAxMTEgOiAKKyAgICAgICAg
ICAgIHJldHVybiAvKiBQQVJBTSAqLzMwOworICAgICAgICBjYXNlIDExMiA6IAorICAgICAgICAg
ICAgcmV0dXJuIC8qIFJFU1VMVCAqLzMxOworICAgICAgICBjYXNlIDExMyA6IAorICAgICAgICAg
ICAgcmV0dXJuIC8qIExPQ0FMICovMzI7CisgICAgICAgIGNhc2UgMTE0IDogCisgICAgICAgICAg
ICByZXR1cm4gLyogR0xPQkFMICovMzM7CisgICAgICAgIGNhc2UgMTE1IDogCisgICAgICAgICAg
ICByZXR1cm4gLyogTU9EVUxFICovMzQ7CisgICAgICAgIGNhc2UgMTE2IDogCisgICAgICAgICAg
ICByZXR1cm4gLyogVEFCTEUgKi8zNTsKKyAgICAgICAgY2FzZSAxMTcgOiAKKyAgICAgICAgICAg
IHJldHVybiAvKiBNRU1PUlkgKi8zNzsKKyAgICAgICAgY2FzZSAxMTggOiAKKyAgICAgICAgICAg
IHJldHVybiAvKiBFTEVNICovMzY7CisgICAgICAgIGNhc2UgMTE5IDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogREFUQSAqLzM4OworICAgICAgICBjYXNlIDEyMCA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIE9GRlNFVCAqLzM5OworICAgICAgICBjYXNlIDEyMSA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIElNUE9SVCAqLzQwOworICAgICAgICBjYXNlIDEyMiA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIEVYUE9SVCAqLzQxOworICAgICAgICBjYXNlIDEyMyA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIFNDUklQVCAqLzQyOworICAgICAgICBjYXNlIDEyNCA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIFJFR0lTVEVSICovNDM7CisgICAgICAgIGNhc2UgMTI1IDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogSU5WT0tFICovNDQ7CisgICAgICAgIGNhc2UgMTI2IDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogR0VUICovNDU7CisgICAgICAgIGNhc2UgMTI3IDogCisgICAgICAgICAgICByZXR1
cm4gLyogQVNTRVJUX01BTEZPUk1FRCAqLzQ2OworICAgICAgICBjYXNlIDEyOCA6IAorICAgICAg
ICAgICAgcmV0dXJuIC8qIEFTU0VSVF9JTlZBTElEICovNDc7CisgICAgICAgIGNhc2UgMTI5IDog
CisgICAgICAgICAgICByZXR1cm4gLyogQVNTRVJUX1NPRlRfSU5WQUxJRCAqLzQ4OworICAgICAg
ICBjYXNlIDEzMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEFTU0VSVF9VTkxJTktBQkxFICov
NDk7CisgICAgICAgIGNhc2UgMTMxIDogCisgICAgICAgICAgICByZXR1cm4gLyogQVNTRVJUX1JF
VFVSTiAqLzUwOworICAgICAgICBjYXNlIDEzMiA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEFT
U0VSVF9SRVRVUk5fTkFOICovNTE7CisgICAgICAgIGNhc2UgMTMzIDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogQVNTRVJUX1RSQVAgKi81MjsKKyAgICAgICAgY2FzZSAxMzQgOiAKKyAgICAgICAg
ICAgIHJldHVybiAvKiBBU1NFUlRfRVhIQVVTVElPTiAqLzUzOworICAgICAgICBjYXNlIDEzNSA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIElOUFVUICovNTQ7CisgICAgICAgIGNhc2UgMTM2IDog
CisgICAgICAgICAgICByZXR1cm4gLyogT1VUUFVUICovNTU7CisgICAgICAgIGNhc2UgMTM3IDog
CisgICAgICAgICAgICB2YXIgcyQ3ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X2N1cnJfcG9zICovNV0p
OworICAgICAgICAgICAgcmV0dXJuIC8qIFZBUiAqL0Jsb2NrLl9fKDQsIFtzJDddKTsKKyAgICAg
ICAgY2FzZSAxNDAgOiAKKyAgICAgICAgICAgIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjKExleGlu
Zy5sZXhlbWVfc3RhcnRfcChsZXhidWYkMSksIGxleGJ1ZiQxLCA2ODQpOworICAgICAgICAgICAg
cmV0dXJuIHRva2VuKGxleGJ1ZiQxKTsKKyAgICAgICAgY2FzZSAxNDEgOiAKKyAgICAgICAgICAg
IHJldHVybiB0b2tlbihsZXhidWYkMSk7CisgICAgICAgIGNhc2UgMTM5IDogCisgICAgICAgIGNh
c2UgMTQyIDogCisgICAgICAgICAgICBMZXhpbmcubmV3X2xpbmUobGV4YnVmJDEpOworICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKGxleGJ1ZiQxKTsKKyAgICAgICAgY2FzZSAxMzggOiAKKyAgICAg
ICAgY2FzZSAxNDMgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFT0YgKi81NjsKKyAgICAgICAg
Y2FzZSAxNDQgOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihsZXhidWYkMSwgInVua25vd24g
b3BlcmF0b3IiKTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlv
biBfX29jYW1sX2xleF9jb21tZW50X3JlYyhzdGFydCwgbGV4YnVmLCBfX19vY2FtbF9sZXhfc3Rh
dGUpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBfX29jYW1sX2xleF9zdGF0ZSA9IF9fX29j
YW1sX2xleF9zdGF0ZTsKKyAgICB2YXIgX19vY2FtbF9sZXhfc3RhdGUkMSA9IExleGluZy5lbmdp
bmUoX19vY2FtbF9sZXhfdGFibGVzLCBfX29jYW1sX2xleF9zdGF0ZSwgbGV4YnVmKTsKKyAgICBp
ZiAoX19vY2FtbF9sZXhfc3RhdGUkMSA+IDQgfHwgX19vY2FtbF9sZXhfc3RhdGUkMSA8IDApIHsK
KyAgICAgIEN1cnJ5Ll8xKGxleGJ1ZlsvKiByZWZpbGxfYnVmZiAqLzBdLCBsZXhidWYpOworICAg
ICAgX19fb2NhbWxfbGV4X3N0YXRlID0gX19vY2FtbF9sZXhfc3RhdGUkMTsKKyAgICAgIGNvbnRp
bnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoX19vY2FtbF9s
ZXhfc3RhdGUkMSkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiAo
KSAqLzA7CisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgX19vY2FtbF9sZXhfY29tbWVu
dF9yZWMoTGV4aW5nLmxleGVtZV9zdGFydF9wKGxleGJ1ZiksIGxleGJ1ZiwgNjg0KTsKKyAgICAg
ICAgICAgIF9fX29jYW1sX2xleF9zdGF0ZSA9IDY4NDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgTGV4aW5nLm5ld19saW5lKGxleGJ1
Zik7CisgICAgICAgICAgICBfX19vY2FtbF9sZXhfc3RhdGUgPSA2ODQ7CisgICAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJv
cl9uZXN0KHN0YXJ0LCBsZXhidWYsICJ1bmNsb3NlZCBjb21tZW50Iik7CisgICAgICAgIGNhc2Ug
NCA6IAorICAgICAgICAgICAgX19fb2NhbWxfbGV4X3N0YXRlID0gNjg0OworICAgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitleHBv
cnRzLmNvbnZlcnRfcG9zID0gY29udmVydF9wb3M7CitleHBvcnRzLnRva2VuICAgICAgID0gdG9r
ZW47CisvKiBGMzIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBsZXhlci5q
cyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5
WydsZXhpbmcnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8v
Ly8vIHN0YXJ0IG9mIGxleGluZy5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgU3lz
ICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3N5cyIpOwordmFyIEJ5dGVzICAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ieXRlcyIpOwordmFyIEN1cnJ5ICAgICAgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfYnl0ZXMgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9jYW1sX2J5dGVzIik7Cit2YXIgQ2FtbF9sZXhlciAgICAgICAgICAgICAg
PSByZXF1aXJlKCIuL2NhbWxfbGV4ZXIiKTsKK3ZhciBQZXJ2YXNpdmVzICAgICAgICAgICAgICA9
IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxfc3RyaW5nICAgICAgICAgICAgID0g
cmVxdWlyZSgiLi9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0g
cmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBlbmdpbmUo
dGJsLCBzdGF0ZSwgYnVmKSB7CisgIHZhciByZXN1bHQgPSBDYW1sX2xleGVyLmNhbWxfbGV4X2Vu
Z2luZSh0YmwsIHN0YXRlLCBidWYpOworICBpZiAocmVzdWx0ID49IDApIHsKKyAgICBidWZbLyog
bGV4X3N0YXJ0X3AgKi8xMF0gPSBidWZbLyogbGV4X2N1cnJfcCAqLzExXTsKKyAgICB2YXIgaW5p
dCA9IGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdOworICAgIGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFd
ID0gLyogcmVjb3JkICovWworICAgICAgLyogcG9zX2ZuYW1lICovaW5pdFsvKiBwb3NfZm5hbWUg
Ki8wXSwKKyAgICAgIC8qIHBvc19sbnVtICovaW5pdFsvKiBwb3NfbG51bSAqLzFdLAorICAgICAg
LyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJdLAorICAgICAgLyogcG9zX2NudW0gKi9i
dWZbLyogbGV4X2Fic19wb3MgKi8zXSArIGJ1ZlsvKiBsZXhfY3Vycl9wb3MgKi81XSB8IDAKKyAg
ICBdOworICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIG5ld19lbmdpbmUodGJs
LCBzdGF0ZSwgYnVmKSB7CisgIHZhciByZXN1bHQgPSBDYW1sX2xleGVyLmNhbWxfbmV3X2xleF9l
bmdpbmUodGJsLCBzdGF0ZSwgYnVmKTsKKyAgaWYgKHJlc3VsdCA+PSAwKSB7CisgICAgYnVmWy8q
IGxleF9zdGFydF9wICovMTBdID0gYnVmWy8qIGxleF9jdXJyX3AgKi8xMV07CisgICAgdmFyIGlu
aXQgPSBidWZbLyogbGV4X2N1cnJfcCAqLzExXTsKKyAgICBidWZbLyogbGV4X2N1cnJfcCAqLzEx
XSA9IC8qIHJlY29yZCAqL1sKKyAgICAgIC8qIHBvc19mbmFtZSAqL2luaXRbLyogcG9zX2ZuYW1l
ICovMF0sCisgICAgICAvKiBwb3NfbG51bSAqL2luaXRbLyogcG9zX2xudW0gKi8xXSwKKyAgICAg
IC8qIHBvc19ib2wgKi9pbml0Wy8qIHBvc19ib2wgKi8yXSwKKyAgICAgIC8qIHBvc19jbnVtICov
YnVmWy8qIGxleF9hYnNfcG9zICovM10gKyBidWZbLyogbGV4X2N1cnJfcG9zICovNV0gfCAwCisg
ICAgXTsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit2YXIgemVyb19wb3MgPSAvKiByZWNv
cmQgKi9bCisgIC8qIHBvc19mbmFtZSAqLyIiLAorICAvKiBwb3NfbG51bSAqLzEsCisgIC8qIHBv
c19ib2wgKi8wLAorICAvKiBwb3NfY251bSAqLzAKK107CisKK2Z1bmN0aW9uIGZyb21fZnVuY3Rp
b24oZikgeworICB2YXIgcGFydGlhbF9hcmcgPSBuZXcgQXJyYXkoNTEyKTsKKyAgcmV0dXJuIC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAvKiByZWZpbGxfYnVmZiAqL2Z1bmN0aW9uIChwYXJhbSkg
eworICAgICAgICAgICAgdmFyIHJlYWRfZnVuID0gZjsKKyAgICAgICAgICAgIHZhciBhdXhfYnVm
ZmVyID0gcGFydGlhbF9hcmc7CisgICAgICAgICAgICB2YXIgbGV4YnVmID0gcGFyYW07CisgICAg
ICAgICAgICB2YXIgcmVhZCA9IEN1cnJ5Ll8yKHJlYWRfZnVuLCBhdXhfYnVmZmVyLCBhdXhfYnVm
ZmVyLmxlbmd0aCk7CisgICAgICAgICAgICB2YXIgbiA9IHJlYWQgPiAwID8gcmVhZCA6IChsZXhi
dWZbLyogbGV4X2VvZl9yZWFjaGVkICovOF0gPSAvKiB0cnVlICovMSwgMCk7CisgICAgICAgICAg
ICBpZiAoKGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdICsgbiB8IDApID4gbGV4YnVmWy8q
IGxleF9idWZmZXIgKi8xXS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgaWYgKCgobGV4YnVmWy8q
IGxleF9idWZmZXJfbGVuICovMl0gLSBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdIHwgMCkg
KyBuIHwgMCkgPD0gbGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXS5sZW5ndGgpIHsKKyAgICAgICAg
ICAgICAgICBCeXRlcy5ibGl0KGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGxleGJ1ZlsvKiBs
ZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIDAsIGxleGJ1Zlsv
KiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSB8IDAp
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IHZhciBuZXdsZW4gPSBQZXJ2YXNpdmVzLm1pbigobGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXS5s
ZW5ndGggPDwgMSksIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCk7CisgICAgICAgICAgICAgICAgaWYg
KCgobGV4YnVmWy8qIGxleF9idWZmZXJfbGVuICovMl0gLSBsZXhidWZbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdIHwgMCkgKyBuIHwgMCkgPiBuZXdsZW4pIHsKKyAgICAgICAgICAgICAgICAgIHRocm93
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAiTGV4aW5nLmxleF9yZWZpbGw6IGNhbm5vdCBn
cm93IGJ1ZmZlciIKKyAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB2YXIgbmV3YnVmID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3Ry
aW5nKG5ld2xlbik7CisgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdChsZXhidWZbLyogbGV4X2J1
ZmZlciAqLzFdLCBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBuZXdidWYsIDAsIGxleGJ1
ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSB8
IDApOworICAgICAgICAgICAgICAgIGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0gPSBuZXdidWY7
CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgdmFyIHMgPSBsZXhidWZbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdOworICAgICAgICAgICAgICBsZXhidWZbLyogbGV4X2Fic19wb3MgKi8zXSA9
IGxleGJ1ZlsvKiBsZXhfYWJzX3BvcyAqLzNdICsgcyB8IDA7CisgICAgICAgICAgICAgIGxleGJ1
ZlsvKiBsZXhfY3Vycl9wb3MgKi81XSA9IGxleGJ1ZlsvKiBsZXhfY3Vycl9wb3MgKi81XSAtIHMg
fCAwOworICAgICAgICAgICAgICBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdID0gMDsKKyAg
ICAgICAgICAgICAgbGV4YnVmWy8qIGxleF9sYXN0X3BvcyAqLzZdID0gbGV4YnVmWy8qIGxleF9s
YXN0X3BvcyAqLzZdIC0gcyB8IDA7CisgICAgICAgICAgICAgIGxleGJ1ZlsvKiBsZXhfYnVmZmVy
X2xlbiAqLzJdID0gbGV4YnVmWy8qIGxleF9idWZmZXJfbGVuICovMl0gLSBzIHwgMDsKKyAgICAg
ICAgICAgICAgdmFyIHQgPSBsZXhidWZbLyogbGV4X21lbSAqLzldOworICAgICAgICAgICAgICBm
b3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IHQubGVuZ3RoIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7
ICsraSl7CisgICAgICAgICAgICAgICAgdmFyIHYgPSB0W2ldOworICAgICAgICAgICAgICAgIGlm
ICh2ID49IDApIHsKKyAgICAgICAgICAgICAgICAgIHRbaV0gPSB2IC0gcyB8IDA7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBCeXRlcy5ibGl0KGF1eF9idWZmZXIsIDAsIGxleGJ1ZlsvKiBsZXhf
YnVmZmVyICovMV0sIGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdLCBuKTsKKyAgICAgICAg
ICAgIGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdID0gbGV4YnVmWy8qIGxleF9idWZmZXJf
bGVuICovMl0gKyBuIHwgMDsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAg
ICAgfSwKKyAgICAgICAgICAvKiBsZXhfYnVmZmVyICovbmV3IEFycmF5KDEwMjQpLAorICAgICAg
ICAgIC8qIGxleF9idWZmZXJfbGVuICovMCwKKyAgICAgICAgICAvKiBsZXhfYWJzX3BvcyAqLzAs
CisgICAgICAgICAgLyogbGV4X3N0YXJ0X3BvcyAqLzAsCisgICAgICAgICAgLyogbGV4X2N1cnJf
cG9zICovMCwKKyAgICAgICAgICAvKiBsZXhfbGFzdF9wb3MgKi8wLAorICAgICAgICAgIC8qIGxl
eF9sYXN0X2FjdGlvbiAqLzAsCisgICAgICAgICAgLyogbGV4X2VvZl9yZWFjaGVkIDogZmFsc2Ug
Ki8wLAorICAgICAgICAgIC8qIGxleF9tZW0gOiBpbnQgYXJyYXkgKi9bXSwKKyAgICAgICAgICAv
KiBsZXhfc3RhcnRfcCAqL3plcm9fcG9zLAorICAgICAgICAgIC8qIGxleF9jdXJyX3AgKi96ZXJv
X3BvcworICAgICAgICBdOworfQorCitmdW5jdGlvbiBmcm9tX2NoYW5uZWwoaWMpIHsKKyAgcmV0
dXJuIGZyb21fZnVuY3Rpb24oZnVuY3Rpb24gKGJ1ZiwgbikgeworICAgICAgICAgICAgICByZXR1
cm4gUGVydmFzaXZlcy5pbnB1dChpYywgYnVmLCAwLCBuKTsKKyAgICAgICAgICAgIH0pOworfQor
CitmdW5jdGlvbiBmcm9tX3N0cmluZyhzKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgLyogcmVmaWxsX2J1ZmYgKi9mdW5jdGlvbiAobGV4YnVmKSB7CisgICAgICAgICAgICBs
ZXhidWZbLyogbGV4X2VvZl9yZWFjaGVkICovOF0gPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAg
IHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfSwKKyAgICAgICAgICAvKiBsZXhfYnVmZmVy
ICovQnl0ZXMub2Zfc3RyaW5nKHMpLAorICAgICAgICAgIC8qIGxleF9idWZmZXJfbGVuICovcy5s
ZW5ndGgsCisgICAgICAgICAgLyogbGV4X2Fic19wb3MgKi8wLAorICAgICAgICAgIC8qIGxleF9z
dGFydF9wb3MgKi8wLAorICAgICAgICAgIC8qIGxleF9jdXJyX3BvcyAqLzAsCisgICAgICAgICAg
LyogbGV4X2xhc3RfcG9zICovMCwKKyAgICAgICAgICAvKiBsZXhfbGFzdF9hY3Rpb24gKi8wLAor
ICAgICAgICAgIC8qIGxleF9lb2ZfcmVhY2hlZCA6IHRydWUgKi8xLAorICAgICAgICAgIC8qIGxl
eF9tZW0gOiBpbnQgYXJyYXkgKi9bXSwKKyAgICAgICAgICAvKiBsZXhfc3RhcnRfcCAqL3plcm9f
cG9zLAorICAgICAgICAgIC8qIGxleF9jdXJyX3AgKi96ZXJvX3BvcworICAgICAgICBdOworfQor
CitmdW5jdGlvbiBsZXhlbWUobGV4YnVmKSB7CisgIHZhciBsZW4gPSBsZXhidWZbLyogbGV4X2N1
cnJfcG9zICovNV0gLSBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdIHwgMDsKKyAgcmV0dXJu
IEJ5dGVzLnN1Yl9zdHJpbmcobGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXSwgbGV4YnVmWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGVuKTsKK30KKworZnVuY3Rpb24gc3ViX2xleGVtZShsZXhidWYs
IGkxLCBpMikgeworICB2YXIgbGVuID0gaTIgLSBpMSB8IDA7CisgIHJldHVybiBCeXRlcy5zdWJf
c3RyaW5nKGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGkxLCBsZW4pOworfQorCitmdW5jdGlv
biBzdWJfbGV4ZW1lX29wdChsZXhidWYsIGkxLCBpMikgeworICBpZiAoaTEgPj0gMCkgeworICAg
IHZhciBsZW4gPSBpMiAtIGkxIHwgMDsKKyAgICByZXR1cm4gLyogU29tZSAqL1tCeXRlcy5zdWJf
c3RyaW5nKGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGkxLCBsZW4pXTsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogTm9uZSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gc3ViX2xleGVt
ZV9jaGFyKGxleGJ1ZiwgaSkgeworICByZXR1cm4gQ2FtbF9ieXRlcy5nZXQobGV4YnVmWy8qIGxl
eF9idWZmZXIgKi8xXSwgaSk7Cit9CisKK2Z1bmN0aW9uIHN1Yl9sZXhlbWVfY2hhcl9vcHQobGV4
YnVmLCBpKSB7CisgIGlmIChpID49IDApIHsKKyAgICByZXR1cm4gLyogU29tZSAqL1tDYW1sX2J5
dGVzLmdldChsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdLCBpKV07CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGxleGVtZV9jaGFyKGxl
eGJ1ZiwgaSkgeworICByZXR1cm4gQ2FtbF9ieXRlcy5nZXQobGV4YnVmWy8qIGxleF9idWZmZXIg
Ki8xXSwgbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSArIGkgfCAwKTsKK30KKworZnVuY3Rp
b24gbGV4ZW1lX3N0YXJ0KGxleGJ1ZikgeworICByZXR1cm4gbGV4YnVmWy8qIGxleF9zdGFydF9w
ICovMTBdWy8qIHBvc19jbnVtICovM107Cit9CisKK2Z1bmN0aW9uIGxleGVtZV9lbmQobGV4YnVm
KSB7CisgIHJldHVybiBsZXhidWZbLyogbGV4X2N1cnJfcCAqLzExXVsvKiBwb3NfY251bSAqLzNd
OworfQorCitmdW5jdGlvbiBsZXhlbWVfc3RhcnRfcChsZXhidWYpIHsKKyAgcmV0dXJuIGxleGJ1
ZlsvKiBsZXhfc3RhcnRfcCAqLzEwXTsKK30KKworZnVuY3Rpb24gbGV4ZW1lX2VuZF9wKGxleGJ1
ZikgeworICByZXR1cm4gbGV4YnVmWy8qIGxleF9jdXJyX3AgKi8xMV07Cit9CisKK2Z1bmN0aW9u
IG5ld19saW5lKGxleGJ1ZikgeworICB2YXIgbGNwID0gbGV4YnVmWy8qIGxleF9jdXJyX3AgKi8x
MV07CisgIGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdID0gLyogcmVjb3JkICovWworICAgIC8q
IHBvc19mbmFtZSAqL2xjcFsvKiBwb3NfZm5hbWUgKi8wXSwKKyAgICAvKiBwb3NfbG51bSAqL2xj
cFsvKiBwb3NfbG51bSAqLzFdICsgMSB8IDAsCisgICAgLyogcG9zX2JvbCAqL2xjcFsvKiBwb3Nf
Y251bSAqLzNdLAorICAgIC8qIHBvc19jbnVtICovbGNwWy8qIHBvc19jbnVtICovM10KKyAgXTsK
KyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gZmx1c2hfaW5wdXQobGIpIHsKKyAg
bGJbLyogbGV4X2N1cnJfcG9zICovNV0gPSAwOworICBsYlsvKiBsZXhfYWJzX3BvcyAqLzNdID0g
MDsKKyAgdmFyIGluaXQgPSBsYlsvKiBsZXhfY3Vycl9wICovMTFdOworICBsYlsvKiBsZXhfY3Vy
cl9wICovMTFdID0gLyogcmVjb3JkICovWworICAgIC8qIHBvc19mbmFtZSAqL2luaXRbLyogcG9z
X2ZuYW1lICovMF0sCisgICAgLyogcG9zX2xudW0gKi9pbml0Wy8qIHBvc19sbnVtICovMV0sCisg
ICAgLyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJdLAorICAgIC8qIHBvc19jbnVtICov
MAorICBdOworICBsYlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdID0gMDsKKyAgcmV0dXJuIC8qICgp
ICovMDsKK30KKwordmFyIGR1bW15X3BvcyA9IC8qIHJlY29yZCAqL1sKKyAgLyogcG9zX2ZuYW1l
ICovIiIsCisgIC8qIHBvc19sbnVtICovMCwKKyAgLyogcG9zX2JvbCAqLzAsCisgIC8qIHBvc19j
bnVtICovLTEKK107CisKK2V4cG9ydHMuZHVtbXlfcG9zICAgICAgICAgICA9IGR1bW15X3BvczsK
K2V4cG9ydHMuZnJvbV9jaGFubmVsICAgICAgICA9IGZyb21fY2hhbm5lbDsKK2V4cG9ydHMuZnJv
bV9zdHJpbmcgICAgICAgICA9IGZyb21fc3RyaW5nOworZXhwb3J0cy5mcm9tX2Z1bmN0aW9uICAg
ICAgID0gZnJvbV9mdW5jdGlvbjsKK2V4cG9ydHMubGV4ZW1lICAgICAgICAgICAgICA9IGxleGVt
ZTsKK2V4cG9ydHMubGV4ZW1lX2NoYXIgICAgICAgICA9IGxleGVtZV9jaGFyOworZXhwb3J0cy5s
ZXhlbWVfc3RhcnQgICAgICAgID0gbGV4ZW1lX3N0YXJ0OworZXhwb3J0cy5sZXhlbWVfZW5kICAg
ICAgICAgID0gbGV4ZW1lX2VuZDsKK2V4cG9ydHMubGV4ZW1lX3N0YXJ0X3AgICAgICA9IGxleGVt
ZV9zdGFydF9wOworZXhwb3J0cy5sZXhlbWVfZW5kX3AgICAgICAgID0gbGV4ZW1lX2VuZF9wOwor
ZXhwb3J0cy5uZXdfbGluZSAgICAgICAgICAgID0gbmV3X2xpbmU7CitleHBvcnRzLmZsdXNoX2lu
cHV0ICAgICAgICAgPSBmbHVzaF9pbnB1dDsKK2V4cG9ydHMuc3ViX2xleGVtZSAgICAgICAgICA9
IHN1Yl9sZXhlbWU7CitleHBvcnRzLnN1Yl9sZXhlbWVfb3B0ICAgICAgPSBzdWJfbGV4ZW1lX29w
dDsKK2V4cG9ydHMuc3ViX2xleGVtZV9jaGFyICAgICA9IHN1Yl9sZXhlbWVfY2hhcjsKK2V4cG9y
dHMuc3ViX2xleGVtZV9jaGFyX29wdCA9IHN1Yl9sZXhlbWVfY2hhcl9vcHQ7CitleHBvcnRzLmVu
Z2luZSAgICAgICAgICAgICAgPSBlbmdpbmU7CitleHBvcnRzLm5ld19lbmdpbmUgICAgICAgICAg
PSBuZXdfZW5naW5lOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBsZXhp
bmcuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdp
c3RyeVsnbGliJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8v
Ly8vLyBzdGFydCBvZiBsaWIuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJ
UFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOwor
Cit2YXIgJCRBcnJheSAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvYXJyYXkiKTsKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBs
YXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyIEludDMyICAgICAgICAgICAgICAgICAgID0gcmVx
dWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2ludDMyIik7Cit2YXIgJCRTdHJpbmcgICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvc3RyaW5nIik7Cit2YXIgQmlnYXJy
YXkgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmlnYXJyYXki
KTsKK3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xp
Yi9qcy9jYW1sX29iaiIpOwordmFyIENhbWxfYXJyYXkgICAgICAgICAgICAgID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1sX2ludDY0ICAgICAgICAg
ICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2ludDY0Iik7Cit2YXIgUGVy
dmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVydmFz
aXZlcyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZv
cm0vbGliL2pzL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIHJlcGVhdChf
biwgZiwgeCkgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG4gPSBfbjsKKyAgICBpZiAobikg
eworICAgICAgQ3VycnkuXzEoZiwgeCk7CisgICAgICBfbiA9IG4gLSAxIHwgMDsKKyAgICAgIGNv
bnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiAoKSAq
LzA7CisgICAgfQorICB9OworfQorCit2YXIgRnVuID0gLyogbW9kdWxlICovWy8qIHJlcGVhdCAq
L3JlcGVhdF07CisKK2Z1bmN0aW9uIG1ha2UobiwgeCkgeworICBpZiAobikgeworICAgIHJldHVy
biAvKiA6OiAqL1sKKyAgICAgICAgICAgIHgsCisgICAgICAgICAgICBtYWtlKG4gLSAxIHwgMCwg
eCkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7Cisg
IH0KK30KKworZnVuY3Rpb24gdGFibGUkcHJpbWUoaSwgbiwgZikgeworICBpZiAoaSA9PT0gbikg
eworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIDo6
ICovWworICAgICAgICAgICAgQ3VycnkuXzEoZiwgaSksCisgICAgICAgICAgICB0YWJsZSRwcmlt
ZShpICsgMSB8IDAsIG4sIGYpCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiB0YWJs
ZShuLCBmKSB7CisgIHJldHVybiB0YWJsZSRwcmltZSgwLCBuLCBmKTsKK30KKworZnVuY3Rpb24g
dGFrZShuLCB4cykgeworICBpZiAobiAhPT0gMCkgeworICAgIGlmICh4cykgeworICAgICAgaWYg
KG4gPiAwKSB7CisgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICB4c1sw
XSwKKyAgICAgICAgICAgICAgICB0YWtlKG4gLSAxIHwgMCwgeHNbMV0pCisgICAgICAgICAgICAg
IF07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFp
bHdpdGgoInRha2UiKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
UGVydmFzaXZlcy5mYWlsd2l0aCgidGFrZSIpOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBy
ZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGRyb3AoX24sIF94cykgeworICB3
aGlsZSh0cnVlKSB7CisgICAgdmFyIHhzID0gX3hzOworICAgIHZhciBuID0gX247CisgICAgaWYg
KG4gIT09IDApIHsKKyAgICAgIGlmICh4cykgeworICAgICAgICBpZiAobiA+IDApIHsKKyAgICAg
ICAgICBfeHMgPSB4c1sxXTsKKyAgICAgICAgICBfbiA9IG4gLSAxIHwgMDsKKyAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImRyb3AiKTsKKyAgICAgICAgfQorICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJkcm9w
Iik7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIHhzOworICAgIH0K
KyAgfTsKK30KKworZnVuY3Rpb24gbGFzdChfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAg
IHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciB4cyA9IHBh
cmFtWzFdOworICAgICAgaWYgKHhzKSB7CisgICAgICAgIF9wYXJhbSA9IHhzOworICAgICAgICBj
b250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVy
biBwYXJhbVswXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gUGVy
dmFzaXZlcy5mYWlsd2l0aCgibGFzdCIpOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3Bs
aXRfbGFzdChwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICB2YXIgeHMgPSBwYXJhbVsxXTsK
KyAgICB2YXIgeCA9IHBhcmFtWzBdOworICAgIGlmICh4cykgeworICAgICAgdmFyIG1hdGNoID0g
c3BsaXRfbGFzdCh4cyk7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAg
IC8qIDo6ICovWworICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgbWF0Y2hbMF0K
KyAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgbWF0Y2hbMV0KKyAgICAgICAgICAgIF07
CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAg
ICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAgIHgKKyAgICAgICAgICAgIF07CisgICAgfQor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJzcGxpdF9sYXN0
Iik7CisgIH0KK30KKworZnVuY3Rpb24gaW5kZXhfb2YoeCwgeHMpIHsKKyAgdmFyIHgkMSA9IHg7
CisgIHZhciBfeHMgPSB4czsKKyAgdmFyIF9pID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZh
ciBpID0gX2k7CisgICAgdmFyIHhzJDEgPSBfeHM7CisgICAgaWYgKHhzJDEpIHsKKyAgICAgIGlm
IChDYW1sX29iai5jYW1sX2VxdWFsKHgkMSwgeHMkMVswXSkpIHsKKyAgICAgICAgcmV0dXJuIC8q
IFNvbWUgKi9baV07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgX2kgPSBpICsgMSB8
IDA7CisgICAgICAgIF94cyA9IHhzJDFbMV07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIE5vbmUgKi8wOwor
ICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gbGVuZ3RoKHhzKSB7CisgIHZhciBfeHMgPSB4czsK
KyAgdmFyIF9uID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBuID0gX247CisgICAgdmFy
IHhzJDEgPSBfeHM7CisgICAgaWYgKHhzJDEpIHsKKyAgICAgIGlmIChuIDwgSW50MzIubWF4X2lu
dCkgeworICAgICAgICBfbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgX3hzID0geHMkMVsxXTsKKyAg
ICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgibGVuZ3RoIik7CisgICAgICB9CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgcmV0dXJuIG47CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBu
dGgoX3hzLCBfbikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG4gPSBfbjsKKyAgICB2YXIg
eHMgPSBfeHM7CisgICAgaWYgKG4gIT09IDApIHsKKyAgICAgIGlmICh4cykgeworICAgICAgICBp
ZiAobiA+IDApIHsKKyAgICAgICAgICBfbiA9IG4gLSAxIHwgMDsKKyAgICAgICAgICBfeHMgPSB4
c1sxXTsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoIm50aCIpOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFBlcnZhc2l2
ZXMuZmFpbHdpdGgoIm50aCIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh4cykgewor
ICAgICAgcmV0dXJuIHhzWzBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBQZXJ2
YXNpdmVzLmZhaWx3aXRoKCJudGgiKTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHRha2Uk
MShuLCB4cykgeworICBpZiAobiAhPT0gMCkgeworICAgIGlmICh4cykgeworICAgICAgaWYgKG4g
PiAwKSB7CisgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICB4c1swXSwK
KyAgICAgICAgICAgICAgICB0YWtlJDEobiAtIDEgfCAwLCB4c1sxXSkKKyAgICAgICAgICAgICAg
XTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWls
d2l0aCgidGFrZSIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBQ
ZXJ2YXNpdmVzLmZhaWx3aXRoKCJ0YWtlIik7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gZHJvcCQxKF9uLCBfeHMpIHsKKyAg
d2hpbGUodHJ1ZSkgeworICAgIHZhciB4cyA9IF94czsKKyAgICB2YXIgbiA9IF9uOworICAgIGlm
IChuICE9PSAwKSB7CisgICAgICBpZiAoeHMpIHsKKyAgICAgICAgaWYgKG4gPiAwKSB7CisgICAg
ICAgICAgX3hzID0geHNbMV07CisgICAgICAgICAgX24gPSBuIC0gMSB8IDA7CisgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJkcm9wIik7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgiZHJv
cCIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiB4czsKKyAgICB9
CisgIH07Cit9CisKK2Z1bmN0aW9uIG1ha2UkMShuLCB4KSB7CisgIGlmIChuIDwgMCB8fCBDYW1s
X2ludDY0Lmd0KENhbWxfaW50NjQub2ZfaW50MzIobiksIENhbWxfaW50NjQub2ZfaW50MzIoUGVy
dmFzaXZlcy5tYXhfaW50KSkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQXJyYXkzMi5tYWtlIgor
ICAgICAgICBdOworICB9CisgIHJldHVybiBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KG4sIHgp
OworfQorCitmdW5jdGlvbiBsZW5ndGgkMShhKSB7CisgIHJldHVybiBhLmxlbmd0aDsKK30KKwor
ZnVuY3Rpb24gaW5kZXhfb2ZfaW50MzIoaSkgeworICBpZiAoaSA8IDAgfHwgQ2FtbF9pbnQ2NC5n
dChDYW1sX2ludDY0Lm9mX2ludDMyKGkpLCBDYW1sX2ludDY0Lm9mX2ludDMyKFBlcnZhc2l2ZXMu
bWF4X2ludCkpKSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBp
OworICB9Cit9CisKK2Z1bmN0aW9uIGdldChhLCBpKSB7CisgIHJldHVybiBhW2luZGV4X29mX2lu
dDMyKGkpXTsKK30KKworZnVuY3Rpb24gc2V0KGEsIGksIHgpIHsKKyAgYVtpbmRleF9vZl9pbnQz
MihpKV0gPSB4OworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBibGl0KGExLCBp
MSwgYTIsIGkyLCBuKSB7CisgIHJldHVybiAkJEFycmF5LmJsaXQoYTEsIGluZGV4X29mX2ludDMy
KGkxKSwgYTIsIGluZGV4X29mX2ludDMyKGkyKSwgaW5kZXhfb2ZfaW50MzIobikpOworfQorCitm
dW5jdGlvbiBjcmVhdGUoa2luZCwgbGF5b3V0LCBuKSB7CisgIGlmIChDYW1sX2ludDY0Lmx0KG4s
IC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAvKiBsbyAqLzAK
KyAgICAgICAgXSkgfHwgQ2FtbF9pbnQ2NC5ndChuLCBDYW1sX2ludDY0Lm9mX2ludDMyKFBlcnZh
c2l2ZXMubWF4X2ludCkpKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkJpZ2FycmF5LkFycmF5MV82
NC5jcmVhdGUiCisgICAgICAgIF07CisgIH0KKyAgcmV0dXJuIEN1cnJ5Ll8zKEJpZ2FycmF5LkFy
cmF5MVsvKiBjcmVhdGUgKi8wXSwga2luZCwgbGF5b3V0LCBuWzFdIHwgMCk7Cit9CisKK2Z1bmN0
aW9uIGRpbSgpIHsKKyAgcmV0dXJuIENhbWxfaW50NjQub2ZfaW50MzIoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX2RpbV8xIG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgICB9KCkpOworfQorCitmdW5jdGlvbiBn
ZXQkMShfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93
ICJjYW1sX2JhX2dldF8xIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwor
ICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2V0JDEoXywgXyQxLCBfJDIpIHsKKyAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NldF8xIG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwor
ZnVuY3Rpb24gc3ViKF8sIF8kMSwgXyQyKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0aHJvdyAiY2FtbF9iYV9zdWIgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlw
dCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBnZXQkMihvLCB4KSB7Cisg
IGlmIChvKSB7CisgICAgcmV0dXJuIG9bMF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHg7
CisgIH0KK30KKworZnVuY3Rpb24gbWFwKGYsIHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAg
IHJldHVybiAvKiBTb21lICovW0N1cnJ5Ll8xKGYsIHBhcmFtWzBdKV07CisgIH0KKyAgZWxzZSB7
CisgICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGFwcChmLCBwYXJh
bSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gQ3VycnkuXzEoZiwgcGFyYW1bMF0pOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKwordmFyIE9wdGlv
biA9IC8qIG1vZHVsZSAqL1sKKyAgLyogZ2V0ICovZ2V0JDIsCisgIC8qIG1hcCAqL21hcCwKKyAg
LyogYXBwICovYXBwCitdOworCitmdW5jdGlvbiBsb2cyKG4pIHsKKyAgaWYgKG4gPD0gMCkgewor
ICAgIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImxvZzIiKTsKKyAgfQorICB2YXIgX2FjYyA9IDA7Cisg
IHZhciBfbiA9IG47CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbiQxID0gX247CisgICAgdmFy
IGFjYyA9IF9hY2M7CisgICAgaWYgKG4kMSA9PT0gMSkgeworICAgICAgcmV0dXJuIGFjYzsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICBfbiA9IChuJDEgPj4+IDEpOworICAgICAgX2FjYyA9IGFj
YyArIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICB9OworfQorCitm
dW5jdGlvbiBpc19wb3dlcl9vZl90d28obikgeworICBpZiAobiA8IDApIHsKKyAgICBQZXJ2YXNp
dmVzLmZhaWx3aXRoKCJpc19wb3dlcl9vZl90d28iKTsKKyAgfQorICBpZiAobiAhPT0gMCkgewor
ICAgIHJldHVybiArKChuICYgKG4gLSAxIHwgMCkpID09PSAwKTsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK3ZhciBJbnQgPSAvKiBtb2R1bGUgKi9b
CisgIC8qIGxvZzIgKi9sb2cyLAorICAvKiBpc19wb3dlcl9vZl90d28gKi9pc19wb3dlcl9vZl90
d28KK107CisKK2Z1bmN0aW9uIGJyZWFrdXAocywgbikgeworICB2YXIgbG9vcCA9IGZ1bmN0aW9u
IChpKSB7CisgICAgdmFyIGxlbiA9IFBlcnZhc2l2ZXMubWluKG4sIHMubGVuZ3RoIC0gaSB8IDAp
OworICAgIGlmIChsZW4pIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
JCRTdHJpbmcuc3ViKHMsIGksIGxlbiksCisgICAgICAgICAgICAgIGxvb3AoaSArIGxlbiB8IDAp
CisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBbXSAq
LzA7CisgICAgfQorICB9OworICByZXR1cm4gbG9vcCgwKTsKK30KKwordmFyICQkU3RyaW5nJDEg
PSAvKiBtb2R1bGUgKi9bLyogYnJlYWt1cCAqL2JyZWFrdXBdOworCit2YXIgTGlzdCA9IFsKKyAg
bWFrZSwKKyAgdGFibGUsCisgIHRha2UsCisgIGRyb3AsCisgIGxhc3QsCisgIHNwbGl0X2xhc3Qs
CisgIGluZGV4X29mCitdOworCit2YXIgTGlzdDMyID0gWworICBsZW5ndGgsCisgIG50aCwKKyAg
dGFrZSQxLAorICBkcm9wJDEKK107CisKK3ZhciBBcnJheTMyID0gWworICBtYWtlJDEsCisgIGxl
bmd0aCQxLAorICBnZXQsCisgIHNldCwKKyAgYmxpdAorXTsKKwordmFyIEJpZ2FycmF5JDEgPSBb
WworICAgIGNyZWF0ZSwKKyAgICBkaW0sCisgICAgZ2V0JDEsCisgICAgc2V0JDEsCisgICAgc3Vi
CisgIF1dOworCitleHBvcnRzLkZ1biAgICAgID0gRnVuOworZXhwb3J0cy5MaXN0ICAgICA9IExp
c3Q7CitleHBvcnRzLkxpc3QzMiAgID0gTGlzdDMyOworZXhwb3J0cy5BcnJheTMyICA9IEFycmF5
MzI7CitleHBvcnRzLkJpZ2FycmF5ID0gQmlnYXJyYXkkMTsKK2V4cG9ydHMuT3B0aW9uICAgPSBP
cHRpb247CitleHBvcnRzLkludCAgICAgID0gSW50OworZXhwb3J0cy4kJFN0cmluZyA9ICQkU3Ry
aW5nJDE7CisvKiBCaWdhcnJheSBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9m
IGxpYi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3Jl
Z2lzdHJ5WydsaXN0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307Cisv
Ly8vLy8vLyBzdGFydCBvZiBsaXN0LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBD
dXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBDYW1sX29i
aiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9vYmoiKTsKK3ZhciBQZXJ2YXNpdmVz
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitm
dW5jdGlvbiBsZW5ndGgobCkgeworICB2YXIgX2xlbiA9IDA7CisgIHZhciBfcGFyYW0gPSBsOwor
ICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIHZhciBsZW4gPSBf
bGVuOworICAgIGlmIChwYXJhbSkgeworICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICBf
bGVuID0gbGVuICsgMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICByZXR1cm4gbGVuOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gaGQo
cGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVs
c2UgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWls
dXJlLAorICAgICAgICAgICJoZCIKKyAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiB0bChw
YXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gcGFyYW1bMV07CisgIH0KKyAgZWxz
ZSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1
cmUsCisgICAgICAgICAgInRsIgorICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIG50aChs
LCBuKSB7CisgIGlmIChuIDwgMCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJMaXN0Lm50aCIKKyAg
ICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgX2wgPSBsOworICAgIHZhciBfbiA9IG47
CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIG4kMSA9IF9uOworICAgICAgdmFyIGwkMSA9
IF9sOworICAgICAgaWYgKGwkMSkgeworICAgICAgICBpZiAobiQxKSB7CisgICAgICAgICAgX24g
PSBuJDEgLSAxIHwgMDsKKyAgICAgICAgICBfbCA9IGwkMVsxXTsKKyAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0
dXJuIGwkMVswXTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAg
ICAgICAgICAgICAgIm50aCIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfTsKKyAgfQor
fQorCitmdW5jdGlvbiByZXZfYXBwZW5kKF9sMSwgX2wyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAg
ICB2YXIgbDIgPSBfbDI7CisgICAgdmFyIGwxID0gX2wxOworICAgIGlmIChsMSkgeworICAgICAg
X2wyID0gLyogOjogKi9bCisgICAgICAgIGwxWzBdLAorICAgICAgICBsMgorICAgICAgXTsKKyAg
ICAgIF9sMSA9IGwxWzFdOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIGwyOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcmV2KGwp
IHsKKyAgcmV0dXJuIHJldl9hcHBlbmQobCwgLyogW10gKi8wKTsKK30KKworZnVuY3Rpb24gZmxh
dHRlbihwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gUGVydmFzaXZlcy4kYXQo
cGFyYW1bMF0sIGZsYXR0ZW4ocGFyYW1bMV0pKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
LyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIG1hcChmLCBwYXJhbSkgeworICBpZiAocGFy
YW0pIHsKKyAgICB2YXIgciA9IEN1cnJ5Ll8xKGYsIHBhcmFtWzBdKTsKKyAgICByZXR1cm4gLyog
OjogKi9bCisgICAgICAgICAgICByLAorICAgICAgICAgICAgbWFwKGYsIHBhcmFtWzFdKQorICAg
ICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIFtdICovMDsKKyAgfQorfQor
CitmdW5jdGlvbiBtYXBpKGksIGYsIHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHZhciBy
ID0gQ3VycnkuXzIoZiwgaSwgcGFyYW1bMF0pOworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgIHIsCisgICAgICAgICAgICBtYXBpKGkgKyAxIHwgMCwgZiwgcGFyYW1bMV0pCisgICAg
ICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisK
K2Z1bmN0aW9uIG1hcGkkMShmLCBsKSB7CisgIHJldHVybiBtYXBpKDAsIGYsIGwpOworfQorCitm
dW5jdGlvbiByZXZfbWFwKGYsIGwpIHsKKyAgdmFyIF9hY2N1ID0gLyogW10gKi8wOworICB2YXIg
X3BhcmFtID0gbDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAg
ICB2YXIgYWNjdSA9IF9hY2N1OworICAgIGlmIChwYXJhbSkgeworICAgICAgX3BhcmFtID0gcGFy
YW1bMV07CisgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICBDdXJyeS5fMShmLCBwYXJh
bVswXSksCisgICAgICAgIGFjY3UKKyAgICAgIF07CisgICAgICBjb250aW51ZSA7CisgICAgICAK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gYWNjdTsKKyAgICB9CisgIH07Cit9CisK
K2Z1bmN0aW9uIGl0ZXIoZiwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFy
YW0gPSBfcGFyYW07CisgICAgaWYgKHBhcmFtKSB7CisgICAgICBDdXJyeS5fMShmLCBwYXJhbVsw
XSk7CisgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgIGNvbnRpbnVlIDsKKyAgICAgIAor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICB9Owor
fQorCitmdW5jdGlvbiBpdGVyaShmLCBsKSB7CisgIHZhciBfaSA9IDA7CisgIHZhciBmJDEgPSBm
OworICB2YXIgX3BhcmFtID0gbDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9w
YXJhbTsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChwYXJhbSkgeworICAgICAgQ3VycnkuXzIo
ZiQxLCBpLCBwYXJhbVswXSk7CisgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgIF9pID0g
aSArIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZvbGRf
bGVmdChmLCBfYWNjdSwgX2wpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsID0gX2w7Cisg
ICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAobCkgeworICAgICAgX2wgPSBsWzFdOworICAg
ICAgX2FjY3UgPSBDdXJyeS5fMihmLCBhY2N1LCBsWzBdKTsKKyAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBhY2N1OworICAgIH0KKyAgfTsK
K30KKworZnVuY3Rpb24gZm9sZF9yaWdodChmLCBsLCBhY2N1KSB7CisgIGlmIChsKSB7CisgICAg
cmV0dXJuIEN1cnJ5Ll8yKGYsIGxbMF0sIGZvbGRfcmlnaHQoZiwgbFsxXSwgYWNjdSkpOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBhY2N1OworICB9Cit9CisKK2Z1bmN0aW9uIG1hcDIoZiwg
bDEsIGwyKSB7CisgIGlmIChsMSkgeworICAgIGlmIChsMikgeworICAgICAgdmFyIHIgPSBDdXJy
eS5fMihmLCBsMVswXSwgbDJbMF0pOworICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAg
ICAgICByLAorICAgICAgICAgICAgICBtYXAyKGYsIGwxWzFdLCBsMlsxXSkKKyAgICAgICAgICAg
IF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJMaXN0Lm1h
cDIiCisgICAgICAgICAgXTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAobDIpIHsKKyAgICB0aHJv
dyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwK
KyAgICAgICAgICAiTGlzdC5tYXAyIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gcmV2X21hcDIoZiwgbDEsIGwyKSB7
CisgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgdmFyIF9sMSA9IGwxOworICB2YXIgX2wyID0g
bDI7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbDIkMSA9IF9sMjsKKyAgICB2YXIgbDEkMSA9
IF9sMTsKKyAgICB2YXIgYWNjdSA9IF9hY2N1OworICAgIGlmIChsMSQxKSB7CisgICAgICBpZiAo
bDIkMSkgeworICAgICAgICBfbDIgPSBsMiQxWzFdOworICAgICAgICBfbDEgPSBsMSQxWzFdOwor
ICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgIEN1cnJ5Ll8yKGYsIGwxJDFbMF0s
IGwyJDFbMF0pLAorICAgICAgICAgIGFjY3UKKyAgICAgICAgXTsKKyAgICAgICAgY29udGludWUg
OworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgICAgICJMaXN0LnJldl9tYXAyIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9
CisgICAgZWxzZSBpZiAobDIkMSkgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJMaXN0LnJl
dl9tYXAyIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGFj
Y3U7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBpdGVyMihmLCBfbDEsIF9sMikgeworICB3
aGlsZSh0cnVlKSB7CisgICAgdmFyIGwyID0gX2wyOworICAgIHZhciBsMSA9IF9sMTsKKyAgICBp
ZiAobDEpIHsKKyAgICAgIGlmIChsMikgeworICAgICAgICBDdXJyeS5fMihmLCBsMVswXSwgbDJb
MF0pOworICAgICAgICBfbDIgPSBsMlsxXTsKKyAgICAgICAgX2wxID0gbDFbMV07CisgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhy
b3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3Vt
ZW50LAorICAgICAgICAgICAgICAiTGlzdC5pdGVyMiIKKyAgICAgICAgICAgIF07CisgICAgICB9
CisgICAgfQorICAgIGVsc2UgaWYgKGwyKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgIkxp
c3QuaXRlcjIiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZm9sZF9sZWZ0MihmLCBfYWNj
dSwgX2wxLCBfbDIpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsMiA9IF9sMjsKKyAgICB2
YXIgbDEgPSBfbDE7CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAobDEpIHsKKyAgICAg
IGlmIChsMikgeworICAgICAgICBfbDIgPSBsMlsxXTsKKyAgICAgICAgX2wxID0gbDFbMV07Cisg
ICAgICAgIF9hY2N1ID0gQ3VycnkuXzMoZiwgYWNjdSwgbDFbMF0sIGwyWzBdKTsKKyAgICAgICAg
Y29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCisgICAgICAgICAgICAgICJMaXN0LmZvbGRfbGVmdDIiCisgICAgICAgICAgICBdOworICAg
ICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChsMikgeworICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAg
ICJMaXN0LmZvbGRfbGVmdDIiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gYWNjdTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZvbGRfcmlnaHQyKGYs
IGwxLCBsMiwgYWNjdSkgeworICBpZiAobDEpIHsKKyAgICBpZiAobDIpIHsKKyAgICAgIHJldHVy
biBDdXJyeS5fMyhmLCBsMVswXSwgbDJbMF0sIGZvbGRfcmlnaHQyKGYsIGwxWzFdLCBsMlsxXSwg
YWNjdSkpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTGlz
dC5mb2xkX3JpZ2h0MiIKKyAgICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIGlmIChsMikg
eworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlk
X2FyZ3VtZW50LAorICAgICAgICAgICJMaXN0LmZvbGRfcmlnaHQyIgorICAgICAgICBdOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBhY2N1OworICB9Cit9CisKK2Z1bmN0aW9uIGZvcl9hbGwo
cCwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07Cisg
ICAgaWYgKHBhcmFtKSB7CisgICAgICBpZiAoQ3VycnkuXzEocCwgcGFyYW1bMF0pKSB7CisgICAg
ICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAg
ICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAgICB9
CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgIH0KKyAg
fTsKK30KKworZnVuY3Rpb24gZXhpc3RzKHAsIF9wYXJhbSkgeworICB3aGlsZSh0cnVlKSB7Cisg
ICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgaWYgKEN1cnJ5
Ll8xKHAsIHBhcmFtWzBdKSkgeworICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICB9
CisgICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJu
IC8qIGZhbHNlICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZvcl9hbGwyKHAsIF9s
MSwgX2wyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbDIgPSBfbDI7CisgICAgdmFyIGwx
ID0gX2wxOworICAgIGlmIChsMSkgeworICAgICAgaWYgKGwyKSB7CisgICAgICAgIGlmIChDdXJy
eS5fMihwLCBsMVswXSwgbDJbMF0pKSB7CisgICAgICAgICAgX2wyID0gbDJbMV07CisgICAgICAg
ICAgX2wxID0gbDFbMV07CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAg
ICAgICJMaXN0LmZvcl9hbGwyIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAg
ZWxzZSBpZiAobDIpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTGlzdC5mb3JfYWxsMiIK
KyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0cnVlICov
MTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGV4aXN0czIocCwgX2wxLCBfbDIpIHsKKyAg
d2hpbGUodHJ1ZSkgeworICAgIHZhciBsMiA9IF9sMjsKKyAgICB2YXIgbDEgPSBfbDE7CisgICAg
aWYgKGwxKSB7CisgICAgICBpZiAobDIpIHsKKyAgICAgICAgaWYgKEN1cnJ5Ll8yKHAsIGwxWzBd
LCBsMlswXSkpIHsKKyAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgX2wyID0gbDJbMV07CisgICAgICAgICAgX2wxID0gbDFb
MV07CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9
CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAiTGlzdC5leGlz
dHMyIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobDIpIHsK
KyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFs
aWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTGlzdC5leGlzdHMyIgorICAgICAgICAgIF07Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgIH07
Cit9CisKK2Z1bmN0aW9uIG1lbSh4LCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZh
ciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIGlmIChDYW1sX29iai5j
YW1sX2NvbXBhcmUocGFyYW1bMF0sIHgpKSB7CisgICAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOwor
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gbWVtcSh4
LCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAg
ICBpZiAocGFyYW0pIHsKKyAgICAgIGlmIChwYXJhbVswXSA9PT0geCkgeworICAgICAgICByZXR1
cm4gLyogdHJ1ZSAqLzE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0g
cGFyYW1bMV07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgIH07Cit9CisK
K2Z1bmN0aW9uIGFzc29jKHgsIF9wYXJhbSkgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBh
cmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIG1hdGNoID0gcGFyYW1b
MF07CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9jb21wYXJlKG1hdGNoWzBdLCB4KSkgeworICAg
ICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gbWF0Y2hbMV07CisgICAgICB9Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90
X2ZvdW5kOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gYXNzcSh4LCBfcGFyYW0pIHsKKyAg
d2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsK
KyAgICAgIHZhciBtYXRjaCA9IHBhcmFtWzBdOworICAgICAgaWYgKG1hdGNoWzBdID09PSB4KSB7
CisgICAgICAgIHJldHVybiBtYXRjaFsxXTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAg
IH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5ub3RfZm91bmQ7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBtZW1fYXNzb2MoeCwgX3Bh
cmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgaWYg
KHBhcmFtKSB7CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9jb21wYXJlKHBhcmFtWzBdWzBdLCB4
KSkgeworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7
CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsK
KyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1lbV9hc3NxKHgsIF9wYXJhbSkgeworICB3aGls
ZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAg
ICAgaWYgKHBhcmFtWzBdWzBdID09PSB4KSB7CisgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsK
KyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAg
ICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcmVtb3Zl
X2Fzc29jKHgsIHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHZhciBsID0gcGFyYW1bMV07
CisgICAgdmFyIHBhaXIgPSBwYXJhbVswXTsKKyAgICBpZiAoQ2FtbF9vYmouY2FtbF9jb21wYXJl
KHBhaXJbMF0sIHgpKSB7CisgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgIHBh
aXIsCisgICAgICAgICAgICAgIHJlbW92ZV9hc3NvYyh4LCBsKQorICAgICAgICAgICAgXTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gbDsKKyAgICB9CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIC8qIFtdICovMDsKKyAgfQorfQorCitmdW5jdGlvbiByZW1vdmVfYXNzcSh4LCBw
YXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICB2YXIgbCA9IHBhcmFtWzFdOworICAgIHZhciBw
YWlyID0gcGFyYW1bMF07CisgICAgaWYgKHBhaXJbMF0gPT09IHgpIHsKKyAgICAgIHJldHVybiBs
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgcGFpciwKKyAgICAgICAgICAgICAgcmVtb3ZlX2Fzc3EoeCwgbCkKKyAgICAgICAgICAgIF07
CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KK30KKwor
ZnVuY3Rpb24gZmluZChwLCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJh
bSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciB4ID0gcGFyYW1bMF07Cisg
ICAgICBpZiAoQ3VycnkuXzEocCwgeCkpIHsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rp
b24gZmluZF9hbGwocCkgeworICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgdmFyIF9h
Y2N1ID0gLyogW10gKi8wOworICAgIHZhciBfcGFyYW0gPSBwYXJhbTsKKyAgICB3aGlsZSh0cnVl
KSB7CisgICAgICB2YXIgcGFyYW0kMSA9IF9wYXJhbTsKKyAgICAgIHZhciBhY2N1ID0gX2FjY3U7
CisgICAgICBpZiAocGFyYW0kMSkgeworICAgICAgICB2YXIgbCA9IHBhcmFtJDFbMV07CisgICAg
ICAgIHZhciB4ID0gcGFyYW0kMVswXTsKKyAgICAgICAgaWYgKEN1cnJ5Ll8xKHAsIHgpKSB7Cisg
ICAgICAgICAgX3BhcmFtID0gbDsKKyAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAg
ICAgICAgeCwKKyAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICBdOworICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBf
cGFyYW0gPSBsOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiByZXZfYXBwZW5kKGFjY3UsIC8q
IFtdICovMCk7CisgICAgICB9CisgICAgfTsKKyAgfTsKK30KKworZnVuY3Rpb24gcGFydGl0aW9u
KHAsIGwpIHsKKyAgdmFyIF95ZXMgPSAvKiBbXSAqLzA7CisgIHZhciBfbm8gPSAvKiBbXSAqLzA7
CisgIHZhciBfcGFyYW0gPSBsOworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3Bh
cmFtOworICAgIHZhciBubyA9IF9ubzsKKyAgICB2YXIgeWVzID0gX3llczsKKyAgICBpZiAocGFy
YW0pIHsKKyAgICAgIHZhciBsJDEgPSBwYXJhbVsxXTsKKyAgICAgIHZhciB4ID0gcGFyYW1bMF07
CisgICAgICBpZiAoQ3VycnkuXzEocCwgeCkpIHsKKyAgICAgICAgX3BhcmFtID0gbCQxOworICAg
ICAgICBfeWVzID0gLyogOjogKi9bCisgICAgICAgICAgeCwKKyAgICAgICAgICB5ZXMKKyAgICAg
ICAgXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICBfcGFyYW0gPSBsJDE7CisgICAgICAgIF9ubyA9IC8qIDo6ICovWworICAgICAg
ICAgIHgsCisgICAgICAgICAgbm8KKyAgICAgICAgXTsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgIHJldl9hcHBlbmQoeWVzLCAvKiBbXSAqLzApLAorICAgICAgICAg
ICAgICByZXZfYXBwZW5kKG5vLCAvKiBbXSAqLzApCisgICAgICAgICAgICBdOworICAgIH0KKyAg
fTsKK30KKworZnVuY3Rpb24gc3BsaXQocGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgdmFy
IG1hdGNoID0gcGFyYW1bMF07CisgICAgdmFyIG1hdGNoJDEgPSBzcGxpdChwYXJhbVsxXSk7Cisg
ICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgIG1hdGNoWzBdLAorICAgICAgICAgICAgICBtYXRjaCQxWzBdCisgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgIG1hdGNoWzFdLAorICAgICAgICAg
ICAgICBtYXRjaCQxWzFdCisgICAgICAgICAgICBdCisgICAgICAgICAgXTsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGNvbWJp
bmUobDEsIGwyKSB7CisgIGlmIChsMSkgeworICAgIGlmIChsMikgeworICAgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgICAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICBsMVsw
XSwKKyAgICAgICAgICAgICAgICBsMlswXQorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICBjb21iaW5lKGwxWzFdLCBsMlsxXSkKKyAgICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52
YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJMaXN0LmNvbWJpbmUiCisgICAgICAgICAgXTsK
KyAgICB9CisgIH0KKyAgZWxzZSBpZiAobDIpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiTGlzdC5j
b21iaW5lIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7
CisgIH0KK30KKworZnVuY3Rpb24gbWVyZ2UoY21wLCBsMSwgbDIpIHsKKyAgaWYgKGwxKSB7Cisg
ICAgaWYgKGwyKSB7CisgICAgICB2YXIgaDIgPSBsMlswXTsKKyAgICAgIHZhciBoMSA9IGwxWzBd
OworICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgaDEsIGgyKSA8PSAwKSB7CisgICAgICAgIHJldHVy
biAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBoMSwKKyAgICAgICAgICAgICAgICBtZXJnZShj
bXAsIGwxWzFdLCBsMikKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDIsCisgICAgICAgICAg
ICAgICAgbWVyZ2UoY21wLCBsMSwgbDJbMV0pCisgICAgICAgICAgICAgIF07CisgICAgICB9Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGwxOworICAgIH0KKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gbDI7CisgIH0KK30KKworZnVuY3Rpb24gY2hvcChfaywgX2wpIHsKKyAgd2hp
bGUodHJ1ZSkgeworICAgIHZhciBsID0gX2w7CisgICAgdmFyIGsgPSBfazsKKyAgICBpZiAoaykg
eworICAgICAgaWYgKGwpIHsKKyAgICAgICAgX2wgPSBsWzFdOworICAgICAgICBfayA9IGsgLSAx
IHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImxpc3Qu
bWwiLAorICAgICAgICAgICAgICAgIDIyMywKKyAgICAgICAgICAgICAgICAxMQorICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHJldHVybiBsOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3RhYmxlX3NvcnQoY21wLCBs
KSB7CisgIHZhciBzb3J0ID0gZnVuY3Rpb24gKG4sIGwpIHsKKyAgICB2YXIgZXhpdCA9IDA7Cisg
ICAgaWYgKG4gIT09IDIpIHsKKyAgICAgIGlmIChuICE9PSAzKSB7CisgICAgICAgIGV4aXQgPSAx
OworICAgICAgfQorICAgICAgZWxzZSBpZiAobCkgeworICAgICAgICB2YXIgbWF0Y2ggPSBsWzFd
OworICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IG1hdGNoWzFd
OworICAgICAgICAgIGlmIChtYXRjaCQxKSB7CisgICAgICAgICAgICB2YXIgeDMgPSBtYXRjaCQx
WzBdOworICAgICAgICAgICAgdmFyIHgyID0gbWF0Y2hbMF07CisgICAgICAgICAgICB2YXIgeDEg
PSBsWzBdOworICAgICAgICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEsIHgyKSA8PSAwKSB7Cisg
ICAgICAgICAgICAgIGlmIChDdXJyeS5fMihjbXAsIHgyLCB4MykgPD0gMCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDMpIDw9IDApIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
IHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEsIHgzKSA8PSAw
KSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChD
dXJyeS5fMihjbXAsIHgyLCB4MykgPD0gMCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAg
ICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9
CisgICAgfQorICAgIGVsc2UgaWYgKGwpIHsKKyAgICAgIHZhciBtYXRjaCQyID0gbFsxXTsKKyAg
ICAgIGlmIChtYXRjaCQyKSB7CisgICAgICAgIHZhciB4MiQxID0gbWF0Y2gkMlswXTsKKyAgICAg
ICAgdmFyIHgxJDEgPSBsWzBdOworICAgICAgICBpZiAoQ3VycnkuXzIoY21wLCB4MSQxLCB4MiQx
KSA8PSAwKSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
eDEkMSwKKyAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICB4
MiQxLAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
IHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAgICAgICAgICAg
ICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAg
ICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAg
ICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGV4aXQgPSAxOworICAgIH0KKyAgICBpZiAo
ZXhpdCA9PT0gMSkgeworICAgICAgdmFyIG4xID0gKG4gPj4gMSk7CisgICAgICB2YXIgbjIgPSBu
IC0gbjEgfCAwOworICAgICAgdmFyIGwyID0gY2hvcChuMSwgbCk7CisgICAgICB2YXIgczEgPSBy
ZXZfc29ydChuMSwgbCk7CisgICAgICB2YXIgczIgPSByZXZfc29ydChuMiwgbDIpOworICAgICAg
dmFyIF9sMSA9IHMxOworICAgICAgdmFyIF9sMiA9IHMyOworICAgICAgdmFyIF9hY2N1ID0gLyog
W10gKi8wOworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIgYWNjdSA9IF9hY2N1Owor
ICAgICAgICB2YXIgbDIkMSA9IF9sMjsKKyAgICAgICAgdmFyIGwxID0gX2wxOworICAgICAgICBp
ZiAobDEpIHsKKyAgICAgICAgICBpZiAobDIkMSkgeworICAgICAgICAgICAgdmFyIGgyID0gbDIk
MVswXTsKKyAgICAgICAgICAgIHZhciBoMSA9IGwxWzBdOworICAgICAgICAgICAgaWYgKEN1cnJ5
Ll8yKGNtcCwgaDEsIGgyKSA+IDApIHsKKyAgICAgICAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICBoMSwKKyAgICAgICAgICAgICAgICBhY2N1CisgICAgICAgICAgICAg
IF07CisgICAgICAgICAgICAgIF9sMSA9IGwxWzFdOworICAgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDIsCisgICAgICAg
ICAgICAgICAgYWNjdQorICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBfbDIgPSBsMiQx
WzFdOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBy
ZXZfYXBwZW5kKGwxLCBhY2N1KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgcmV0dXJuIHJldl9hcHBlbmQobDIkMSwgYWNjdSk7CisgICAgICAgIH0K
KyAgICAgIH07CisgICAgfQorICAgIAorICB9OworICB2YXIgcmV2X3NvcnQgPSBmdW5jdGlvbiAo
biwgbCkgeworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAobiAhPT0gMikgeworICAgICAgaWYg
KG4gIT09IDMpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIGlmIChs
KSB7CisgICAgICAgIHZhciBtYXRjaCA9IGxbMV07CisgICAgICAgIGlmIChtYXRjaCkgeworICAg
ICAgICAgIHZhciBtYXRjaCQxID0gbWF0Y2hbMV07CisgICAgICAgICAgaWYgKG1hdGNoJDEpIHsK
KyAgICAgICAgICAgIHZhciB4MyA9IG1hdGNoJDFbMF07CisgICAgICAgICAgICB2YXIgeDIgPSBt
YXRjaFswXTsKKyAgICAgICAgICAgIHZhciB4MSA9IGxbMF07CisgICAgICAgICAgICBpZiAoQ3Vy
cnkuXzIoY21wLCB4MSwgeDIpID4gMCkgeworICAgICAgICAgICAgICBpZiAoQ3VycnkuXzIoY21w
LCB4MiwgeDMpID4gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDMp
ID4gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICov
WworICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAo
Q3VycnkuXzIoY21wLCB4MSwgeDMpID4gMCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MiwgeDMpID4gMCkgeworICAg
ICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgeDIsCisg
ICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4
MywKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGwpIHsKKyAgICAg
IHZhciBtYXRjaCQyID0gbFsxXTsKKyAgICAgIGlmIChtYXRjaCQyKSB7CisgICAgICAgIHZhciB4
MiQxID0gbWF0Y2gkMlswXTsKKyAgICAgICAgdmFyIHgxJDEgPSBsWzBdOworICAgICAgICBpZiAo
Q3VycnkuXzIoY21wLCB4MSQxLCB4MiQxKSA+IDApIHsKKyAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgeDIkMSwKKyAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
ICB4MSQxLAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgZXhp
dCA9IDE7CisgICAgfQorICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICB2YXIgbjEgPSAobiA+
PiAxKTsKKyAgICAgIHZhciBuMiA9IG4gLSBuMSB8IDA7CisgICAgICB2YXIgbDIgPSBjaG9wKG4x
LCBsKTsKKyAgICAgIHZhciBzMSA9IHNvcnQobjEsIGwpOworICAgICAgdmFyIHMyID0gc29ydChu
MiwgbDIpOworICAgICAgdmFyIF9sMSA9IHMxOworICAgICAgdmFyIF9sMiA9IHMyOworICAgICAg
dmFyIF9hY2N1ID0gLyogW10gKi8wOworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIg
YWNjdSA9IF9hY2N1OworICAgICAgICB2YXIgbDIkMSA9IF9sMjsKKyAgICAgICAgdmFyIGwxID0g
X2wxOworICAgICAgICBpZiAobDEpIHsKKyAgICAgICAgICBpZiAobDIkMSkgeworICAgICAgICAg
ICAgdmFyIGgyID0gbDIkMVswXTsKKyAgICAgICAgICAgIHZhciBoMSA9IGwxWzBdOworICAgICAg
ICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgaDEsIGgyKSA8PSAwKSB7CisgICAgICAgICAgICAgIF9h
Y2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAgICAgYWNj
dQorICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBfbDEgPSBsMVsxXTsKKyAgICAgICAg
ICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgICAg
ICAgIGgyLAorICAgICAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICAgICAgXTsKKyAgICAgICAg
ICAgICAgX2wyID0gbDIkMVsxXTsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMSwgYWNjdSk7CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiByZXZfYXBwZW5kKGwyJDEsIGFj
Y3UpOworICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAgICAKKyAgfTsKKyAgdmFyIGxlbiA9
IGxlbmd0aChsKTsKKyAgaWYgKGxlbiA8IDIpIHsKKyAgICByZXR1cm4gbDsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gc29ydChsZW4sIGwpOworICB9Cit9CisKK2Z1bmN0aW9uIHNvcnRfdW5p
cShjbXAsIGwpIHsKKyAgdmFyIHNvcnQgPSBmdW5jdGlvbiAobiwgbCkgeworICAgIHZhciBleGl0
ID0gMDsKKyAgICBpZiAobiAhPT0gMikgeworICAgICAgaWYgKG4gIT09IDMpIHsKKyAgICAgICAg
ZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIGlmIChsKSB7CisgICAgICAgIHZhciBtYXRj
aCA9IGxbMV07CisgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgIHZhciBtYXRjaCQxID0g
bWF0Y2hbMV07CisgICAgICAgICAgaWYgKG1hdGNoJDEpIHsKKyAgICAgICAgICAgIHZhciB4MyA9
IG1hdGNoJDFbMF07CisgICAgICAgICAgICB2YXIgeDIgPSBtYXRjaFswXTsKKyAgICAgICAgICAg
IHZhciB4MSA9IGxbMF07CisgICAgICAgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGNtcCwgeDEsIHgy
KTsKKyAgICAgICAgICAgIGlmIChjKSB7CisgICAgICAgICAgICAgIGlmIChjIDwgMCkgeworICAg
ICAgICAgICAgICAgIHZhciBjJDEgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7CisgICAgICAgICAg
ICAgICAgaWYgKGMkMSkgeworICAgICAgICAgICAgICAgICAgaWYgKGMkMSA8IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICB2YXIgYyQyID0gQ3VycnkuXzIoY21wLCB4MSwgeDMpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoYyQyKSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYg
KGMkMiA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgdmFyIGMkMyA9IEN1cnJ5Ll8yKGNtcCwgeDEsIHgzKTsKKyAgICAgICAgICAgICAgICBpZiAo
YyQzKSB7CisgICAgICAgICAgICAgICAgICBpZiAoYyQzIDwgMCkgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBjJDQgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjJDQpIHsKKyAgICAgICAgICAgICAgICAgICAgICBpZiAoYyQ0IDwgMCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgIHZhciBjJDUgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7CisgICAgICAgICAgICAgIGlmIChj
JDUpIHsKKyAgICAgICAgICAgICAgICBpZiAoYyQ1IDwgMCkgeworICAgICAgICAgICAgICAgICAg
cmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVy
biAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChsKSB7CisgICAg
ICB2YXIgbWF0Y2gkMiA9IGxbMV07CisgICAgICBpZiAobWF0Y2gkMikgeworICAgICAgICB2YXIg
eDIkMSA9IG1hdGNoJDJbMF07CisgICAgICAgIHZhciB4MSQxID0gbFswXTsKKyAgICAgICAgdmFy
IGMkNiA9IEN1cnJ5Ll8yKGNtcCwgeDEkMSwgeDIkMSk7CisgICAgICAgIGlmIChjJDYpIHsKKyAg
ICAgICAgICBpZiAoYyQ2IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICB4MiQxLAorICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgeDIkMSwKKyAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAg
ICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBleGl0ID0gMTsK
KyAgICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIHZhciBuMSA9IChuID4+IDEpOwor
ICAgICAgdmFyIG4yID0gbiAtIG4xIHwgMDsKKyAgICAgIHZhciBsMiA9IGNob3AobjEsIGwpOwor
ICAgICAgdmFyIHMxID0gcmV2X3NvcnQobjEsIGwpOworICAgICAgdmFyIHMyID0gcmV2X3NvcnQo
bjIsIGwyKTsKKyAgICAgIHZhciBfbDEgPSBzMTsKKyAgICAgIHZhciBfbDIgPSBzMjsKKyAgICAg
IHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFy
IGFjY3UgPSBfYWNjdTsKKyAgICAgICAgdmFyIGwyJDEgPSBfbDI7CisgICAgICAgIHZhciBsMSA9
IF9sMTsKKyAgICAgICAgaWYgKGwxKSB7CisgICAgICAgICAgaWYgKGwyJDEpIHsKKyAgICAgICAg
ICAgIHZhciB0MiA9IGwyJDFbMV07CisgICAgICAgICAgICB2YXIgaDIgPSBsMiQxWzBdOworICAg
ICAgICAgICAgdmFyIHQxID0gbDFbMV07CisgICAgICAgICAgICB2YXIgaDEgPSBsMVswXTsKKyAg
ICAgICAgICAgIHZhciBjJDcgPSBDdXJyeS5fMihjbXAsIGgxLCBoMik7CisgICAgICAgICAgICBp
ZiAoYyQ3KSB7CisgICAgICAgICAgICAgIGlmIChjJDcgPiAwKSB7CisgICAgICAgICAgICAgICAg
X2FjY3UgPSAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIGgxLAorICAgICAgICAgICAgICAg
ICAgYWNjdQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgX2wxID0gdDE7Cisg
ICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9hY2N1ID0gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICBoMiwKKyAgICAgICAgICAgICAgICAgIGFjY3UKKyAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIF9sMiA9IHQyOworICAgICAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9b
CisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAg
ICBdOworICAgICAgICAgICAgICBfbDIgPSB0MjsKKyAgICAgICAgICAgICAgX2wxID0gdDE7Cisg
ICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHJldl9hcHBl
bmQobDEsIGFjY3UpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMiQxLCBhY2N1KTsKKyAgICAgICAgfQorICAgICAg
fTsKKyAgICB9CisgICAgCisgIH07CisgIHZhciByZXZfc29ydCA9IGZ1bmN0aW9uIChuLCBsKSB7
CisgICAgdmFyIGV4aXQgPSAwOworICAgIGlmIChuICE9PSAyKSB7CisgICAgICBpZiAobiAhPT0g
MykgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGwpIHsKKyAg
ICAgICAgdmFyIG1hdGNoID0gbFsxXTsKKyAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAg
dmFyIG1hdGNoJDEgPSBtYXRjaFsxXTsKKyAgICAgICAgICBpZiAobWF0Y2gkMSkgeworICAgICAg
ICAgICAgdmFyIHgzID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICAgIHZhciB4MiA9IG1hdGNoWzBd
OworICAgICAgICAgICAgdmFyIHgxID0gbFswXTsKKyAgICAgICAgICAgIHZhciBjID0gQ3Vycnku
XzIoY21wLCB4MSwgeDIpOworICAgICAgICAgICAgaWYgKGMpIHsKKyAgICAgICAgICAgICAgaWYg
KGMgPiAwKSB7CisgICAgICAgICAgICAgICAgdmFyIGMkMSA9IEN1cnJ5Ll8yKGNtcCwgeDIsIHgz
KTsKKyAgICAgICAgICAgICAgICBpZiAoYyQxKSB7CisgICAgICAgICAgICAgICAgICBpZiAoYyQx
ID4gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjJDIgPSBDdXJyeS5fMihj
bXAsIHgxLCB4Myk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjJDIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYyQyID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
eDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICB2YXIgYyQzID0gQ3VycnkuXzIoY21wLCB4MSwgeDMpOworICAgICAg
ICAgICAgICAgIGlmIChjJDMpIHsKKyAgICAgICAgICAgICAgICAgIGlmIChjJDMgPiAwKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGMkNCA9IEN1cnJ5Ll8yKGNtcCwgeDIsIHgz
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMkNCkgeworICAgICAgICAgICAgICAgICAgICAg
IGlmIChjJDQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAq
LzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgdmFyIGMkNSA9IEN1cnJ5Ll8yKGNtcCwgeDIsIHgzKTsKKyAgICAg
ICAgICAgICAgaWYgKGMkNSkgeworICAgICAgICAgICAgICAgIGlmIChjJDUgPiAwKSB7CisgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2Ug
aWYgKGwpIHsKKyAgICAgIHZhciBtYXRjaCQyID0gbFsxXTsKKyAgICAgIGlmIChtYXRjaCQyKSB7
CisgICAgICAgIHZhciB4MiQxID0gbWF0Y2gkMlswXTsKKyAgICAgICAgdmFyIHgxJDEgPSBsWzBd
OworICAgICAgICB2YXIgYyQ2ID0gQ3VycnkuXzIoY21wLCB4MSQxLCB4MiQxKTsKKyAgICAgICAg
aWYgKGMkNikgeworICAgICAgICAgIGlmIChjJDYgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4g
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgIHgxJDEsCisgICAgICAgICAgICAgICAgICAg
IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAgICAgICAgICAgICAg
ICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICB4MiQxLAorICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAg
ICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIGV4aXQgPSAxOworICAgIH0KKyAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgdmFyIG4x
ID0gKG4gPj4gMSk7CisgICAgICB2YXIgbjIgPSBuIC0gbjEgfCAwOworICAgICAgdmFyIGwyID0g
Y2hvcChuMSwgbCk7CisgICAgICB2YXIgczEgPSBzb3J0KG4xLCBsKTsKKyAgICAgIHZhciBzMiA9
IHNvcnQobjIsIGwyKTsKKyAgICAgIHZhciBfbDEgPSBzMTsKKyAgICAgIHZhciBfbDIgPSBzMjsK
KyAgICAgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAg
ICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICAgICAgdmFyIGwyJDEgPSBfbDI7CisgICAgICAgIHZh
ciBsMSA9IF9sMTsKKyAgICAgICAgaWYgKGwxKSB7CisgICAgICAgICAgaWYgKGwyJDEpIHsKKyAg
ICAgICAgICAgIHZhciB0MiA9IGwyJDFbMV07CisgICAgICAgICAgICB2YXIgaDIgPSBsMiQxWzBd
OworICAgICAgICAgICAgdmFyIHQxID0gbDFbMV07CisgICAgICAgICAgICB2YXIgaDEgPSBsMVsw
XTsKKyAgICAgICAgICAgIHZhciBjJDcgPSBDdXJyeS5fMihjbXAsIGgxLCBoMik7CisgICAgICAg
ICAgICBpZiAoYyQ3KSB7CisgICAgICAgICAgICAgIGlmIChjJDcgPCAwKSB7CisgICAgICAgICAg
ICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIGgxLAorICAgICAgICAg
ICAgICAgICAgYWNjdQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgX2wxID0g
dDE7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9hY2N1ID0g
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICBoMiwKKyAgICAgICAgICAgICAgICAgIGFjY3UK
KyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIF9sMiA9IHQyOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9hY2N1ID0gLyog
OjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAgICAgYWNjdQorICAgICAg
ICAgICAgICBdOworICAgICAgICAgICAgICBfbDIgPSB0MjsKKyAgICAgICAgICAgICAgX2wxID0g
dDE7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHJl
dl9hcHBlbmQobDEsIGFjY3UpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMiQxLCBhY2N1KTsKKyAgICAgICAgfQor
ICAgICAgfTsKKyAgICB9CisgICAgCisgIH07CisgIHZhciBsZW4gPSBsZW5ndGgobCk7CisgIGlm
IChsZW4gPCAyKSB7CisgICAgcmV0dXJuIGw7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHNv
cnQobGVuLCBsKTsKKyAgfQorfQorCit2YXIgYXBwZW5kID0gUGVydmFzaXZlcy4kYXQ7CisKK3Zh
ciBjb25jYXQgPSBmbGF0dGVuOworCit2YXIgZmlsdGVyID0gZmluZF9hbGw7CisKK3ZhciBzb3J0
ID0gc3RhYmxlX3NvcnQ7CisKK3ZhciBmYXN0X3NvcnQgPSBzdGFibGVfc29ydDsKKworZXhwb3J0
cy5sZW5ndGggICAgICAgPSBsZW5ndGg7CitleHBvcnRzLmhkICAgICAgICAgICA9IGhkOworZXhw
b3J0cy50bCAgICAgICAgICAgPSB0bDsKK2V4cG9ydHMubnRoICAgICAgICAgID0gbnRoOworZXhw
b3J0cy5yZXYgICAgICAgICAgPSByZXY7CitleHBvcnRzLmFwcGVuZCAgICAgICA9IGFwcGVuZDsK
K2V4cG9ydHMucmV2X2FwcGVuZCAgID0gcmV2X2FwcGVuZDsKK2V4cG9ydHMuY29uY2F0ICAgICAg
ID0gY29uY2F0OworZXhwb3J0cy5mbGF0dGVuICAgICAgPSBmbGF0dGVuOworZXhwb3J0cy5pdGVy
ICAgICAgICAgPSBpdGVyOworZXhwb3J0cy5pdGVyaSAgICAgICAgPSBpdGVyaTsKK2V4cG9ydHMu
bWFwICAgICAgICAgID0gbWFwOworZXhwb3J0cy5tYXBpICAgICAgICAgPSBtYXBpJDE7CitleHBv
cnRzLnJldl9tYXAgICAgICA9IHJldl9tYXA7CitleHBvcnRzLmZvbGRfbGVmdCAgICA9IGZvbGRf
bGVmdDsKK2V4cG9ydHMuZm9sZF9yaWdodCAgID0gZm9sZF9yaWdodDsKK2V4cG9ydHMuaXRlcjIg
ICAgICAgID0gaXRlcjI7CitleHBvcnRzLm1hcDIgICAgICAgICA9IG1hcDI7CitleHBvcnRzLnJl
dl9tYXAyICAgICA9IHJldl9tYXAyOworZXhwb3J0cy5mb2xkX2xlZnQyICAgPSBmb2xkX2xlZnQy
OworZXhwb3J0cy5mb2xkX3JpZ2h0MiAgPSBmb2xkX3JpZ2h0MjsKK2V4cG9ydHMuZm9yX2FsbCAg
ICAgID0gZm9yX2FsbDsKK2V4cG9ydHMuZXhpc3RzICAgICAgID0gZXhpc3RzOworZXhwb3J0cy5m
b3JfYWxsMiAgICAgPSBmb3JfYWxsMjsKK2V4cG9ydHMuZXhpc3RzMiAgICAgID0gZXhpc3RzMjsK
K2V4cG9ydHMubWVtICAgICAgICAgID0gbWVtOworZXhwb3J0cy5tZW1xICAgICAgICAgPSBtZW1x
OworZXhwb3J0cy5maW5kICAgICAgICAgPSBmaW5kOworZXhwb3J0cy5maWx0ZXIgICAgICAgPSBm
aWx0ZXI7CitleHBvcnRzLmZpbmRfYWxsICAgICA9IGZpbmRfYWxsOworZXhwb3J0cy5wYXJ0aXRp
b24gICAgPSBwYXJ0aXRpb247CitleHBvcnRzLmFzc29jICAgICAgICA9IGFzc29jOworZXhwb3J0
cy5hc3NxICAgICAgICAgPSBhc3NxOworZXhwb3J0cy5tZW1fYXNzb2MgICAgPSBtZW1fYXNzb2M7
CitleHBvcnRzLm1lbV9hc3NxICAgICA9IG1lbV9hc3NxOworZXhwb3J0cy5yZW1vdmVfYXNzb2Mg
PSByZW1vdmVfYXNzb2M7CitleHBvcnRzLnJlbW92ZV9hc3NxICA9IHJlbW92ZV9hc3NxOworZXhw
b3J0cy5zcGxpdCAgICAgICAgPSBzcGxpdDsKK2V4cG9ydHMuY29tYmluZSAgICAgID0gY29tYmlu
ZTsKK2V4cG9ydHMuc29ydCAgICAgICAgID0gc29ydDsKK2V4cG9ydHMuc3RhYmxlX3NvcnQgID0g
c3RhYmxlX3NvcnQ7CitleHBvcnRzLmZhc3Rfc29ydCAgICA9IGZhc3Rfc29ydDsKK2V4cG9ydHMu
c29ydF91bmlxICAgID0gc29ydF91bmlxOworZXhwb3J0cy5tZXJnZSAgICAgICAgPSBtZXJnZTsK
Ky8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgbGlzdC5qcyAvLy8vLy8vLwor
wqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydtYXAnXSA9IGZ1
bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIG1h
cC5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgICAgICAgICAgICAg
ICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSBy
ZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIE1ha2UoZnVu
YXJnKSB7CisgIHZhciBoZWlnaHQgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBpZiAocGFyYW0p
IHsKKyAgICAgIHJldHVybiBwYXJhbVs0XTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gMDsKKyAgICB9CisgIH07CisgIHZhciBjcmVhdGUgPSBmdW5jdGlvbiAobCwgeCwgZCwgcikg
eworICAgIHZhciBobCA9IGhlaWdodChsKTsKKyAgICB2YXIgaHIgPSBoZWlnaHQocik7CisgICAg
cmV0dXJuIC8qIE5vZGUgKi9bCisgICAgICAgICAgICBsLAorICAgICAgICAgICAgeCwKKyAgICAg
ICAgICAgIGQsCisgICAgICAgICAgICByLAorICAgICAgICAgICAgaGwgPj0gaHIgPyBobCArIDEg
fCAwIDogaHIgKyAxIHwgMAorICAgICAgICAgIF07CisgIH07CisgIHZhciBzaW5nbGV0b24gPSBm
dW5jdGlvbiAoeCwgZCkgeworICAgIHJldHVybiAvKiBOb2RlICovWworICAgICAgICAgICAgLyog
RW1wdHkgKi8wLAorICAgICAgICAgICAgeCwKKyAgICAgICAgICAgIGQsCisgICAgICAgICAgICAv
KiBFbXB0eSAqLzAsCisgICAgICAgICAgICAxCisgICAgICAgICAgXTsKKyAgfTsKKyAgdmFyIGJh
bCA9IGZ1bmN0aW9uIChsLCB4LCBkLCByKSB7CisgICAgdmFyIGhsID0gbCA/IGxbNF0gOiAwOwor
ICAgIHZhciBociA9IHIgPyByWzRdIDogMDsKKyAgICBpZiAoaGwgPiAoaHIgKyAyIHwgMCkpIHsK
KyAgICAgIGlmIChsKSB7CisgICAgICAgIHZhciBsciA9IGxbM107CisgICAgICAgIHZhciBsZCA9
IGxbMl07CisgICAgICAgIHZhciBsdiA9IGxbMV07CisgICAgICAgIHZhciBsbCA9IGxbMF07Cisg
ICAgICAgIGlmIChoZWlnaHQobGwpID49IGhlaWdodChscikpIHsKKyAgICAgICAgICByZXR1cm4g
Y3JlYXRlKGxsLCBsdiwgbGQsIGNyZWF0ZShsciwgeCwgZCwgcikpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKGxyKSB7CisgICAgICAgICAgcmV0dXJuIGNyZWF0ZShjcmVhdGUobGwsIGx2
LCBsZCwgbHJbMF0pLCBsclsxXSwgbHJbMl0sIGNyZWF0ZShsclszXSwgeCwgZCwgcikpOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAg
ICAgICJNYXAuYmFsIgorICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAiTWFwLmJhbCIKKyAgICAg
ICAgICAgIF07CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGhyID4gKGhsICsgMiB8IDAp
KSB7CisgICAgICBpZiAocikgeworICAgICAgICB2YXIgcnIgPSByWzNdOworICAgICAgICB2YXIg
cmQgPSByWzJdOworICAgICAgICB2YXIgcnYgPSByWzFdOworICAgICAgICB2YXIgcmwgPSByWzBd
OworICAgICAgICBpZiAoaGVpZ2h0KHJyKSA+PSBoZWlnaHQocmwpKSB7CisgICAgICAgICAgcmV0
dXJuIGNyZWF0ZShjcmVhdGUobCwgeCwgZCwgcmwpLCBydiwgcmQsIHJyKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIGlmIChybCkgeworICAgICAgICAgIHJldHVybiBjcmVhdGUoY3JlYXRlKGws
IHgsIGQsIHJsWzBdKSwgcmxbMV0sIHJsWzJdLCBjcmVhdGUocmxbM10sIHJ2LCByZCwgcnIpKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAgICAgICAiTWFwLmJhbCIKKyAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAgIk1hcC5iYWwiCisg
ICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAv
KiBOb2RlICovWworICAgICAgICAgICAgICBsLAorICAgICAgICAgICAgICB4LAorICAgICAgICAg
ICAgICBkLAorICAgICAgICAgICAgICByLAorICAgICAgICAgICAgICBobCA+PSBociA/IGhsICsg
MSB8IDAgOiBociArIDEgfCAwCisgICAgICAgICAgICBdOworICAgIH0KKyAgfTsKKyAgdmFyIGlz
X2VtcHR5ID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICByZXR1
cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0cnVl
ICovMTsKKyAgICB9CisgIH07CisgIHZhciBhZGQgPSBmdW5jdGlvbiAoeCwgZGF0YSwgcGFyYW0p
IHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICB2YXIg
ZCA9IHBhcmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsID0gcGFy
YW1bMF07CisgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJlICovMF0sIHgs
IHYpOworICAgICAgaWYgKGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgcmV0
dXJuIGJhbChhZGQoeCwgZGF0YSwgbCksIHYsIGQsIHIpOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiBiYWwobCwgdiwgZCwgYWRkKHgsIGRhdGEsIHIpKTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiBOb2RlICov
WworICAgICAgICAgICAgICAgIGwsCisgICAgICAgICAgICAgICAgeCwKKyAgICAgICAgICAgICAg
ICBkYXRhLAorICAgICAgICAgICAgICAgIHIsCisgICAgICAgICAgICAgICAgcGFyYW1bNF0KKyAg
ICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
LyogTm9kZSAqL1sKKyAgICAgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAgICAgICAgICB4
LAorICAgICAgICAgICAgICBkYXRhLAorICAgICAgICAgICAgICAvKiBFbXB0eSAqLzAsCisgICAg
ICAgICAgICAgIDEKKyAgICAgICAgICAgIF07CisgICAgfQorICB9OworICB2YXIgZmluZCA9IGZ1
bmN0aW9uICh4LCBfcGFyYW0pIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0g
PSBfcGFyYW07CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGMgPSBDdXJyeS5fMihm
dW5hcmdbLyogY29tcGFyZSAqLzBdLCB4LCBwYXJhbVsxXSk7CisgICAgICAgIGlmIChjKSB7Cisg
ICAgICAgICAgX3BhcmFtID0gYyA8IDAgPyBwYXJhbVswXSA6IHBhcmFtWzNdOworICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICByZXR1cm4gcGFyYW1bMl07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICB9
CisgICAgfTsKKyAgfTsKKyAgdmFyIG1lbSA9IGZ1bmN0aW9uICh4LCBfcGFyYW0pIHsKKyAgICB3
aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICBpZiAocGFyYW0p
IHsKKyAgICAgICAgdmFyIGMgPSBDdXJyeS5fMihmdW5hcmdbLyogY29tcGFyZSAqLzBdLCB4LCBw
YXJhbVsxXSk7CisgICAgICAgIGlmIChjKSB7CisgICAgICAgICAgX3BhcmFtID0gYyA8IDAgPyBw
YXJhbVswXSA6IHBhcmFtWzNdOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogZmFsc2Ug
Ki8wOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBtaW5fYmluZGluZyA9IGZ1bmN0aW9u
IChfcGFyYW0pIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07
CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGwgPSBwYXJhbVswXTsKKyAgICAgICAg
aWYgKGwpIHsKKyAgICAgICAgICBfcGFyYW0gPSBsOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAgICAgICAgICAgICAg
IHBhcmFtWzJdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsK
KyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgbWF4X2JpbmRpbmcgPSBmdW5jdGlvbiAoX3Bh
cmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAg
ICAgaWYgKHBhcmFtKSB7CisgICAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICAgIGlmIChy
KSB7CisgICAgICAgICAgX3BhcmFtID0gcjsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAgICAgcGFyYW1bMV0sCisgICAgICAgICAgICAgICAgICBwYXJh
bVsyXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAg
ICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uIChw
YXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGwgPSBwYXJhbVswXTsKKyAgICAg
IGlmIChsKSB7CisgICAgICAgIHJldHVybiBiYWwocmVtb3ZlX21pbl9iaW5kaW5nKGwpLCBwYXJh
bVsxXSwgcGFyYW1bMl0sIHBhcmFtWzNdKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICByZXR1cm4gcGFyYW1bM107CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhy
b3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVu
dCwKKyAgICAgICAgICAgICJNYXAucmVtb3ZlX21pbl9lbHQiCisgICAgICAgICAgXTsKKyAgICB9
CisgIH07CisgIHZhciByZW1vdmUgPSBmdW5jdGlvbiAoeCwgcGFyYW0pIHsKKyAgICBpZiAocGFy
YW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICB2YXIgZCA9IHBhcmFtWzJdOwor
ICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsID0gcGFyYW1bMF07CisgICAgICB2
YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJlICovMF0sIHgsIHYpOworICAgICAgaWYg
KGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgcmV0dXJuIGJhbChyZW1vdmUo
eCwgbCksIHYsIGQsIHIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJl
dHVybiBiYWwobCwgdiwgZCwgcmVtb3ZlKHgsIHIpKTsKKyAgICAgICAgfQorICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIHZhciB0MSA9IGw7CisgICAgICAgIHZhciB0MiA9IHI7CisgICAg
ICAgIGlmICh0MSkgeworICAgICAgICAgIGlmICh0MikgeworICAgICAgICAgICAgdmFyIG1hdGNo
ID0gbWluX2JpbmRpbmcodDIpOworICAgICAgICAgICAgcmV0dXJuIGJhbCh0MSwgbWF0Y2hbMF0s
IG1hdGNoWzFdLCByZW1vdmVfbWluX2JpbmRpbmcodDIpKTsKKyAgICAgICAgICB9CisgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdDE7CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiB0MjsKKyAgICAgICAgfQorICAgICAg
fQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBFbXB0eSAqLzA7CisgICAgfQor
ICB9OworICB2YXIgaXRlciA9IGZ1bmN0aW9uIChmLCBfcGFyYW0pIHsKKyAgICB3aGlsZSh0cnVl
KSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAg
ICAgaXRlcihmLCBwYXJhbVswXSk7CisgICAgICAgIEN1cnJ5Ll8yKGYsIHBhcmFtWzFdLCBwYXJh
bVsyXSk7CisgICAgICAgIF9wYXJhbSA9IHBhcmFtWzNdOworICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7
CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIG1hcCA9IGZ1bmN0aW9uIChmLCBwYXJhbSkg
eworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGwkcHJpbWUgPSBtYXAoZiwgcGFyYW1bMF0p
OworICAgICAgdmFyIGQkcHJpbWUgPSBDdXJyeS5fMShmLCBwYXJhbVsyXSk7CisgICAgICB2YXIg
ciRwcmltZSA9IG1hcChmLCBwYXJhbVszXSk7CisgICAgICByZXR1cm4gLyogTm9kZSAqL1sKKyAg
ICAgICAgICAgICAgbCRwcmltZSwKKyAgICAgICAgICAgICAgcGFyYW1bMV0sCisgICAgICAgICAg
ICAgIGQkcHJpbWUsCisgICAgICAgICAgICAgIHIkcHJpbWUsCisgICAgICAgICAgICAgIHBhcmFt
WzRdCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBF
bXB0eSAqLzA7CisgICAgfQorICB9OworICB2YXIgbWFwaSA9IGZ1bmN0aW9uIChmLCBwYXJhbSkg
eworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBs
JHByaW1lID0gbWFwaShmLCBwYXJhbVswXSk7CisgICAgICB2YXIgZCRwcmltZSA9IEN1cnJ5Ll8y
KGYsIHYsIHBhcmFtWzJdKTsKKyAgICAgIHZhciByJHByaW1lID0gbWFwaShmLCBwYXJhbVszXSk7
CisgICAgICByZXR1cm4gLyogTm9kZSAqL1sKKyAgICAgICAgICAgICAgbCRwcmltZSwKKyAgICAg
ICAgICAgICAgdiwKKyAgICAgICAgICAgICAgZCRwcmltZSwKKyAgICAgICAgICAgICAgciRwcmlt
ZSwKKyAgICAgICAgICAgICAgcGFyYW1bNF0KKyAgICAgICAgICAgIF07CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIC8qIEVtcHR5ICovMDsKKyAgICB9CisgIH07CisgIHZhciBmb2xk
ID0gZnVuY3Rpb24gKGYsIF9tLCBfYWNjdSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZh
ciBhY2N1ID0gX2FjY3U7CisgICAgICB2YXIgbSA9IF9tOworICAgICAgaWYgKG0pIHsKKyAgICAg
ICAgX2FjY3UgPSBDdXJyeS5fMyhmLCBtWzFdLCBtWzJdLCBmb2xkKGYsIG1bMF0sIGFjY3UpKTsK
KyAgICAgICAgX20gPSBtWzNdOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBhY2N1OworICAgICAgfQorICAgIH07Cisg
IH07CisgIHZhciBmb3JfYWxsID0gZnVuY3Rpb24gKHAsIF9wYXJhbSkgeworICAgIHdoaWxlKHRy
dWUpIHsKKyAgICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICAgIGlmIChwYXJhbSkgeworICAg
ICAgICBpZiAoQ3VycnkuXzIocCwgcGFyYW1bMV0sIHBhcmFtWzJdKSkgeworICAgICAgICAgIGlm
IChmb3JfYWxsKHAsIHBhcmFtWzBdKSkgeworICAgICAgICAgICAgX3BhcmFtID0gcGFyYW1bM107
CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyogZmFsc2Ug
Ki8wOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8q
IHRydWUgKi8xOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBleGlzdHMgPSBmdW5jdGlv
biAocCwgX3BhcmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3Bh
cmFtOworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIGlmIChDdXJyeS5fMihwLCBwYXJhbVsx
XSwgcGFyYW1bMl0pKSB7CisgICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYgKGV4aXN0cyhwLCBwYXJhbVswXSkpIHsKKyAgICAgICAgICByZXR1
cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgX3Bh
cmFtID0gcGFyYW1bM107CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAg
ICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsK
KyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgYWRkX21pbl9iaW5kaW5nID0gZnVuY3Rpb24g
KGssIHYsIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICByZXR1cm4gYmFsKGFkZF9t
aW5fYmluZGluZyhrLCB2LCBwYXJhbVswXSksIHBhcmFtWzFdLCBwYXJhbVsyXSwgcGFyYW1bM10p
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzaW5nbGV0b24oaywgdik7CisgICAg
fQorICB9OworICB2YXIgYWRkX21heF9iaW5kaW5nID0gZnVuY3Rpb24gKGssIHYsIHBhcmFtKSB7
CisgICAgaWYgKHBhcmFtKSB7CisgICAgICByZXR1cm4gYmFsKHBhcmFtWzBdLCBwYXJhbVsxXSwg
cGFyYW1bMl0sIGFkZF9tYXhfYmluZGluZyhrLCB2LCBwYXJhbVszXSkpOworICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIHJldHVybiBzaW5nbGV0b24oaywgdik7CisgICAgfQorICB9OworICB2YXIg
am9pbiA9IGZ1bmN0aW9uIChsLCB2LCBkLCByKSB7CisgICAgaWYgKGwpIHsKKyAgICAgIGlmIChy
KSB7CisgICAgICAgIHZhciByaCA9IHJbNF07CisgICAgICAgIHZhciBsaCA9IGxbNF07CisgICAg
ICAgIGlmIChsaCA+IChyaCArIDIgfCAwKSkgeworICAgICAgICAgIHJldHVybiBiYWwobFswXSwg
bFsxXSwgbFsyXSwgam9pbihsWzNdLCB2LCBkLCByKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSBpZiAocmggPiAobGggKyAyIHwgMCkpIHsKKyAgICAgICAgICByZXR1cm4gYmFsKGpvaW4obCwg
diwgZCwgclswXSksIHJbMV0sIHJbMl0sIHJbM10pOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIHJldHVybiBjcmVhdGUobCwgdiwgZCwgcik7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gYWRkX21heF9iaW5kaW5nKHYsIGQsIGwp
OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBhZGRfbWluX2JpbmRp
bmcodiwgZCwgcik7CisgICAgfQorICB9OworICB2YXIgY29uY2F0ID0gZnVuY3Rpb24gKHQxLCB0
MikgeworICAgIGlmICh0MSkgeworICAgICAgaWYgKHQyKSB7CisgICAgICAgIHZhciBtYXRjaCA9
IG1pbl9iaW5kaW5nKHQyKTsKKyAgICAgICAgcmV0dXJuIGpvaW4odDEsIG1hdGNoWzBdLCBtYXRj
aFsxXSwgcmVtb3ZlX21pbl9iaW5kaW5nKHQyKSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgcmV0dXJuIHQxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biB0MjsKKyAgICB9CisgIH07CisgIHZhciBjb25jYXRfb3Jfam9pbiA9IGZ1bmN0aW9uICh0MSwg
diwgZCwgdDIpIHsKKyAgICBpZiAoZCkgeworICAgICAgcmV0dXJuIGpvaW4odDEsIHYsIGRbMF0s
IHQyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gY29uY2F0KHQxLCB0Mik7Cisg
ICAgfQorICB9OworICB2YXIgc3BsaXQgPSBmdW5jdGlvbiAoeCwgcGFyYW0pIHsKKyAgICBpZiAo
cGFyYW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICB2YXIgZCA9IHBhcmFtWzJd
OworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsID0gcGFyYW1bMF07CisgICAg
ICB2YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJlICovMF0sIHgsIHYpOworICAgICAg
aWYgKGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgdmFyIG1hdGNoID0gc3Bs
aXQoeCwgbCk7CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAg
ICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKKyAgICAgICAgICAgICAg
ICAgIGpvaW4obWF0Y2hbMl0sIHYsIGQsIHIpCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHNwbGl0KHgsIHIpOwor
ICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGpvaW4obCwg
diwgZCwgbWF0Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICBtYXRjaCQxWzFdLAorICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMVsyXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgICAgbCwKKyAgICAgICAgICAgICAgICAvKiBTb21lICovW2RdLAorICAgICAgICAgICAg
ICAgIHIKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIEVtcHR5ICovMCwKKyAgICAg
ICAgICAgICAgLyogTm9uZSAqLzAsCisgICAgICAgICAgICAgIC8qIEVtcHR5ICovMAorICAgICAg
ICAgICAgXTsKKyAgICB9CisgIH07CisgIHZhciBtZXJnZSA9IGZ1bmN0aW9uIChmLCBzMSwgczIp
IHsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHMxKSB7CisgICAgICB2YXIgdjEgPSBzMVsx
XTsKKyAgICAgIGlmIChzMVs0XSA+PSBoZWlnaHQoczIpKSB7CisgICAgICAgIHZhciBtYXRjaCA9
IHNwbGl0KHYxLCBzMik7CisgICAgICAgIHJldHVybiBjb25jYXRfb3Jfam9pbihtZXJnZShmLCBz
MVswXSwgbWF0Y2hbMF0pLCB2MSwgQ3VycnkuXzMoZiwgdjEsIC8qIFNvbWUgKi9bczFbMl1dLCBt
YXRjaFsxXSksIG1lcmdlKGYsIHMxWzNdLCBtYXRjaFsyXSkpOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChzMikg
eworICAgICAgZXhpdCA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIEVt
cHR5ICovMDsKKyAgICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIGlmIChzMikgewor
ICAgICAgICB2YXIgdjIgPSBzMlsxXTsKKyAgICAgICAgdmFyIG1hdGNoJDEgPSBzcGxpdCh2Miwg
czEpOworICAgICAgICByZXR1cm4gY29uY2F0X29yX2pvaW4obWVyZ2UoZiwgbWF0Y2gkMVswXSwg
czJbMF0pLCB2MiwgQ3VycnkuXzMoZiwgdjIsIG1hdGNoJDFbMV0sIC8qIFNvbWUgKi9bczJbMl1d
KSwgbWVyZ2UoZiwgbWF0Y2gkMVsyXSwgczJbM10pKTsKKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIm1hcC5tbCIs
CisgICAgICAgICAgICAgICAgMjcwLAorICAgICAgICAgICAgICAgIDEwCisgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfQorICAgIAorICB9OworICB2YXIgZmls
dGVyID0gZnVuY3Rpb24gKHAsIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICB2YXIg
ZCA9IHBhcmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsJHByaW1l
ID0gZmlsdGVyKHAsIHBhcmFtWzBdKTsKKyAgICAgIHZhciBwdmQgPSBDdXJyeS5fMihwLCB2LCBk
KTsKKyAgICAgIHZhciByJHByaW1lID0gZmlsdGVyKHAsIHBhcmFtWzNdKTsKKyAgICAgIGlmIChw
dmQpIHsKKyAgICAgICAgcmV0dXJuIGpvaW4obCRwcmltZSwgdiwgZCwgciRwcmltZSk7CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGNvbmNhdChsJHByaW1lLCByJHByaW1l
KTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogRW1wdHkgKi8w
OworICAgIH0KKyAgfTsKKyAgdmFyIHBhcnRpdGlvbiA9IGZ1bmN0aW9uIChwLCBwYXJhbSkgewor
ICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGQgPSBwYXJhbVsyXTsKKyAgICAgIHZhciB2ID0g
cGFyYW1bMV07CisgICAgICB2YXIgbWF0Y2ggPSBwYXJ0aXRpb24ocCwgcGFyYW1bMF0pOworICAg
ICAgdmFyIGxmID0gbWF0Y2hbMV07CisgICAgICB2YXIgbHQgPSBtYXRjaFswXTsKKyAgICAgIHZh
ciBwdmQgPSBDdXJyeS5fMihwLCB2LCBkKTsKKyAgICAgIHZhciBtYXRjaCQxID0gcGFydGl0aW9u
KHAsIHBhcmFtWzNdKTsKKyAgICAgIHZhciByZiA9IG1hdGNoJDFbMV07CisgICAgICB2YXIgcnQg
PSBtYXRjaCQxWzBdOworICAgICAgaWYgKHB2ZCkgeworICAgICAgICByZXR1cm4gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgICAgam9pbihsdCwgdiwgZCwgcnQpLAorICAgICAgICAgICAgICAg
IGNvbmNhdChsZiwgcmYpCisgICAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIGNvbmNhdChsdCwg
cnQpLAorICAgICAgICAgICAgICAgIGpvaW4obGYsIHYsIGQsIHJmKQorICAgICAgICAgICAgICBd
OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
KyAgICAgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAgICAgICAgICAvKiBFbXB0eSAqLzAK
KyAgICAgICAgICAgIF07CisgICAgfQorICB9OworICB2YXIgY29uc19lbnVtID0gZnVuY3Rpb24g
KF9tLCBfZSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBlID0gX2U7CisgICAgICB2
YXIgbSA9IF9tOworICAgICAgaWYgKG0pIHsKKyAgICAgICAgX2UgPSAvKiBNb3JlICovWworICAg
ICAgICAgIG1bMV0sCisgICAgICAgICAgbVsyXSwKKyAgICAgICAgICBtWzNdLAorICAgICAgICAg
IGUKKyAgICAgICAgXTsKKyAgICAgICAgX20gPSBtWzBdOworICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBlOworICAgICAg
fQorICAgIH07CisgIH07CisgIHZhciBjb21wYXJlID0gZnVuY3Rpb24gKGNtcCwgbTEsIG0yKSB7
CisgICAgdmFyIF9lMSA9IGNvbnNfZW51bShtMSwgLyogRW5kICovMCk7CisgICAgdmFyIF9lMiA9
IGNvbnNfZW51bShtMiwgLyogRW5kICovMCk7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFy
IGUyID0gX2UyOworICAgICAgdmFyIGUxID0gX2UxOworICAgICAgaWYgKGUxKSB7CisgICAgICAg
IGlmIChlMikgeworICAgICAgICAgIHZhciBjID0gQ3VycnkuXzIoZnVuYXJnWy8qIGNvbXBhcmUg
Ki8wXSwgZTFbMF0sIGUyWzBdKTsKKyAgICAgICAgICBpZiAoYyAhPT0gMCkgeworICAgICAgICAg
ICAgcmV0dXJuIGM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
dmFyIGMkMSA9IEN1cnJ5Ll8yKGNtcCwgZTFbMV0sIGUyWzFdKTsKKyAgICAgICAgICAgIGlmIChj
JDEgIT09IDApIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGMkMTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBfZTIgPSBjb25zX2VudW0oZTJbMl0sIGUy
WzNdKTsKKyAgICAgICAgICAgICAgX2UxID0gY29uc19lbnVtKGUxWzJdLCBlMVszXSk7CisgICAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAxOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChlMikgeworICAgICAgICByZXR1cm4g
LTE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9Cisg
ICAgfTsKKyAgfTsKKyAgdmFyIGVxdWFsID0gZnVuY3Rpb24gKGNtcCwgbTEsIG0yKSB7CisgICAg
dmFyIF9lMSA9IGNvbnNfZW51bShtMSwgLyogRW5kICovMCk7CisgICAgdmFyIF9lMiA9IGNvbnNf
ZW51bShtMiwgLyogRW5kICovMCk7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIGUyID0g
X2UyOworICAgICAgdmFyIGUxID0gX2UxOworICAgICAgaWYgKGUxKSB7CisgICAgICAgIGlmIChl
MikgeworICAgICAgICAgIGlmIChDdXJyeS5fMihmdW5hcmdbLyogY29tcGFyZSAqLzBdLCBlMVsw
XSwgZTJbMF0pKSB7CisgICAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIGlmIChDdXJyeS5fMihjbXAsIGUxWzFdLCBlMlsxXSkpIHsKKyAg
ICAgICAgICAgIF9lMiA9IGNvbnNfZW51bShlMlsyXSwgZTJbM10pOworICAgICAgICAgICAgX2Ux
ID0gY29uc19lbnVtKGUxWzJdLCBlMVszXSk7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1
cm4gLyogZmFsc2UgKi8wOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBlbHNlIGlmIChlMikgeworICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICAgIH0KKyAgICB9
OworICB9OworICB2YXIgY2FyZGluYWwgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBpZiAocGFy
YW0pIHsKKyAgICAgIHJldHVybiAoY2FyZGluYWwocGFyYW1bMF0pICsgMSB8IDApICsgY2FyZGlu
YWwocGFyYW1bM10pIHwgMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgIH07CisgIHZhciBiaW5kaW5nc19hdXggPSBmdW5jdGlvbiAoX2FjY3UsIF9wYXJhbSkg
eworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICAgIHZh
ciBhY2N1ID0gX2FjY3U7CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgX3BhcmFtID0gcGFy
YW1bMF07CisgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgLyogdHVwbGUgKi9b
CisgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAgICAgICAgIHBhcmFtWzJdCisgICAgICAgICAg
XSwKKyAgICAgICAgICBiaW5kaW5nc19hdXgoYWNjdSwgcGFyYW1bM10pCisgICAgICAgIF07Cisg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg
ICAgcmV0dXJuIGFjY3U7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIGJpbmRpbmdzID0g
ZnVuY3Rpb24gKHMpIHsKKyAgICByZXR1cm4gYmluZGluZ3NfYXV4KC8qIFtdICovMCwgcyk7Cisg
IH07CisgIHJldHVybiBbCisgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAgICAgIGlzX2Vt
cHR5LAorICAgICAgICAgIG1lbSwKKyAgICAgICAgICBhZGQsCisgICAgICAgICAgc2luZ2xldG9u
LAorICAgICAgICAgIHJlbW92ZSwKKyAgICAgICAgICBtZXJnZSwKKyAgICAgICAgICBjb21wYXJl
LAorICAgICAgICAgIGVxdWFsLAorICAgICAgICAgIGl0ZXIsCisgICAgICAgICAgZm9sZCwKKyAg
ICAgICAgICBmb3JfYWxsLAorICAgICAgICAgIGV4aXN0cywKKyAgICAgICAgICBmaWx0ZXIsCisg
ICAgICAgICAgcGFydGl0aW9uLAorICAgICAgICAgIGNhcmRpbmFsLAorICAgICAgICAgIGJpbmRp
bmdzLAorICAgICAgICAgIG1pbl9iaW5kaW5nLAorICAgICAgICAgIG1heF9iaW5kaW5nLAorICAg
ICAgICAgIG1pbl9iaW5kaW5nLAorICAgICAgICAgIHNwbGl0LAorICAgICAgICAgIGZpbmQsCisg
ICAgICAgICAgbWFwLAorICAgICAgICAgIG1hcGkKKyAgICAgICAgXTsKK30KKworZXhwb3J0cy5N
YWtlID0gTWFrZTsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgbWFwLmpz
IC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlb
J251bWVyaWNfZXJyb3InXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsK
Ky8vLy8vLy8vIHN0YXJ0IG9mIG51bWVyaWNfZXJyb3IuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRl
ZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQor
J3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZv
cm0vbGliL2pzL2NhbWxfZXhjZXB0aW9ucyIpOworCit2YXIgSW50ZWdlck92ZXJmbG93ID0gQ2Ft
bF9leGNlcHRpb25zLmNyZWF0ZSgiTnVtZXJpY19lcnJvci5JbnRlZ2VyT3ZlcmZsb3ciKTsKKwor
dmFyIEludGVnZXJEaXZpZGVCeVplcm8gPSBDYW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJOdW1lcmlj
X2Vycm9yLkludGVnZXJEaXZpZGVCeVplcm8iKTsKKwordmFyIEludmFsaWRDb252ZXJzaW9uVG9J
bnRlZ2VyID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiTnVtZXJpY19lcnJvci5JbnZhbGlkQ29u
dmVyc2lvblRvSW50ZWdlciIpOworCitleHBvcnRzLkludGVnZXJPdmVyZmxvdyAgICAgICAgICAg
ID0gSW50ZWdlck92ZXJmbG93OworZXhwb3J0cy5JbnRlZ2VyRGl2aWRlQnlaZXJvICAgICAgICA9
IEludGVnZXJEaXZpZGVCeVplcm87CitleHBvcnRzLkludmFsaWRDb252ZXJzaW9uVG9JbnRlZ2Vy
ID0gSW52YWxpZENvbnZlcnNpb25Ub0ludGVnZXI7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8v
Ly8vLy8gZW5kIG9mIG51bWVyaWNfZXJyb3IuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBv
cnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnb2JqJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKg
IGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBvYmouanMgLy8vLy8vLy8KKyd1
c2Ugc3RyaWN0JzsKKwordmFyIE1hcnNoYWwgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9t
YXJzaGFsIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxf
YnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIGRvdWJsZV9maWVsZCh4LCBpKSB7Cisg
IHJldHVybiB4W2ldOworfQorCitmdW5jdGlvbiBzZXRfZG91YmxlX2ZpZWxkKHgsIGksIHYpIHsK
KyAgeFtpXSA9IHY7CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIG1hcnNoYWwo
KSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9vdXRw
dXRfdmFsdWVfdG9fc3RyaW5nIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4i
OworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gdW5tYXJzaGFsKHN0ciwgcG9zKSB7Cisg
IHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICBNYXJzaGFsLmZyb21fYnl0ZXMoc3RyLCBw
b3MpLAorICAgICAgICAgIHBvcyArIE1hcnNoYWwudG90YWxfc2l6ZShzdHIsIHBvcykgfCAwCisg
ICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl9zbG90KHgpIHsKKyAgdmFyIHNsb3Qg
PSB4Lmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmICh4LnRhZyB8IDApICE9PSAyNDggJiYgeC5sZW5n
dGggPj0gMSA/IHhbMF0gOiB4OworICB2YXIgbmFtZTsKKyAgaWYgKHNsb3QubGVuZ3RoICE9PSB1
bmRlZmluZWQgJiYgc2xvdC50YWcgPT09IDI0OCkgeworICAgIG5hbWUgPSBzbG90WzBdOworICB9
CisgIGVsc2UgeworICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsK
KyAgfQorICBpZiAobmFtZS50YWcgPT09IDI1MikgeworICAgIHJldHVybiBzbG90OworICB9Cisg
IGVsc2UgeworICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAg
fQorfQorCitmdW5jdGlvbiBleHRlbnNpb25fbmFtZSh4KSB7CisgIHRyeSB7CisgICAgdmFyIHNs
b3QgPSBleHRlbnNpb25fc2xvdCh4KTsKKyAgICByZXR1cm4gc2xvdFswXTsKKyAgfQorICBjYXRj
aCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91
bmQpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiT2JqLmV4dGVuc2lvbl9uYW1lIgorICAg
ICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAg
fQorfQorCitmdW5jdGlvbiBleHRlbnNpb25faWQoeCkgeworICB0cnkgeworICAgIHZhciBzbG90
ID0gZXh0ZW5zaW9uX3Nsb3QoeCk7CisgICAgcmV0dXJuIHNsb3RbMV07CisgIH0KKyAgY2F0Y2gg
KGV4bil7CisgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5k
KSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5p
bnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgIk9iai5leHRlbnNpb25faWQiCisgICAgICAg
ICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9
CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl9zbG90JDEoeCkgeworICB0cnkgeworICAgIHJldHVybiBl
eHRlbnNpb25fc2xvdCh4KTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAg
ICAgICAiT2JqLmV4dGVuc2lvbl9zbG90IgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCit2YXIgZmlyc3Rfbm9uX2NvbnN0
YW50X2NvbnN0cnVjdG9yX3RhZyA9IDA7CisKK3ZhciBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1
Y3Rvcl90YWcgPSAyNDU7CisKK3ZhciBsYXp5X3RhZyA9IDI0NjsKKwordmFyIGNsb3N1cmVfdGFn
ID0gMjQ3OworCit2YXIgb2JqZWN0X3RhZyA9IDI0ODsKKwordmFyIGluZml4X3RhZyA9IDI0OTsK
KwordmFyIGZvcndhcmRfdGFnID0gMjUwOworCit2YXIgbm9fc2Nhbl90YWcgPSAyNTE7CisKK3Zh
ciBhYnN0cmFjdF90YWcgPSAyNTE7CisKK3ZhciBzdHJpbmdfdGFnID0gMjUyOworCit2YXIgZG91
YmxlX3RhZyA9IDI1MzsKKwordmFyIGRvdWJsZV9hcnJheV90YWcgPSAyNTQ7CisKK3ZhciBjdXN0
b21fdGFnID0gMjU1OworCit2YXIgZmluYWxfdGFnID0gMjU1OworCit2YXIgaW50X3RhZyA9IDEw
MDA7CisKK3ZhciBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxOworCit2YXIgdW5hbGlnbmVkX3RhZyA9
IDEwMDI7CisKK2V4cG9ydHMuZG91YmxlX2ZpZWxkICAgICAgICAgICAgICAgICAgICAgICA9IGRv
dWJsZV9maWVsZDsKK2V4cG9ydHMuc2V0X2RvdWJsZV9maWVsZCAgICAgICAgICAgICAgICAgICA9
IHNldF9kb3VibGVfZmllbGQ7CitleHBvcnRzLmZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rv
cl90YWcgPSBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnOworZXhwb3J0cy5sYXN0
X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgID0gbGFzdF9ub25fY29uc3RhbnRfY29uc3Ry
dWN0b3JfdGFnOworZXhwb3J0cy5sYXp5X3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
bGF6eV90YWc7CitleHBvcnRzLmNsb3N1cmVfdGFnICAgICAgICAgICAgICAgICAgICAgICAgPSBj
bG9zdXJlX3RhZzsKK2V4cG9ydHMub2JqZWN0X3RhZyAgICAgICAgICAgICAgICAgICAgICAgICA9
IG9iamVjdF90YWc7CitleHBvcnRzLmluZml4X3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBpbmZpeF90YWc7CitleHBvcnRzLmZvcndhcmRfdGFnICAgICAgICAgICAgICAgICAgICAgICAg
PSBmb3J3YXJkX3RhZzsKK2V4cG9ydHMubm9fc2Nhbl90YWcgICAgICAgICAgICAgICAgICAgICAg
ICA9IG5vX3NjYW5fdGFnOworZXhwb3J0cy5hYnN0cmFjdF90YWcgICAgICAgICAgICAgICAgICAg
ICAgID0gYWJzdHJhY3RfdGFnOworZXhwb3J0cy5zdHJpbmdfdGFnICAgICAgICAgICAgICAgICAg
ICAgICAgID0gc3RyaW5nX3RhZzsKK2V4cG9ydHMuZG91YmxlX3RhZyAgICAgICAgICAgICAgICAg
ICAgICAgICA9IGRvdWJsZV90YWc7CitleHBvcnRzLmRvdWJsZV9hcnJheV90YWcgICAgICAgICAg
ICAgICAgICAgPSBkb3VibGVfYXJyYXlfdGFnOworZXhwb3J0cy5jdXN0b21fdGFnICAgICAgICAg
ICAgICAgICAgICAgICAgID0gY3VzdG9tX3RhZzsKK2V4cG9ydHMuZmluYWxfdGFnICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IGZpbmFsX3RhZzsKK2V4cG9ydHMuaW50X3RhZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IGludF90YWc7CitleHBvcnRzLm91dF9vZl9oZWFwX3RhZyAgICAg
ICAgICAgICAgICAgICAgPSBvdXRfb2ZfaGVhcF90YWc7CitleHBvcnRzLnVuYWxpZ25lZF90YWcg
ICAgICAgICAgICAgICAgICAgICAgPSB1bmFsaWduZWRfdGFnOworZXhwb3J0cy5leHRlbnNpb25f
bmFtZSAgICAgICAgICAgICAgICAgICAgID0gZXh0ZW5zaW9uX25hbWU7CitleHBvcnRzLmV4dGVu
c2lvbl9pZCAgICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25faWQ7CitleHBvcnRzLmV4
dGVuc2lvbl9zbG90ICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25fc2xvdCQxOworZXhw
b3J0cy5tYXJzaGFsICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbWFyc2hhbDsKK2V4cG9y
dHMudW5tYXJzaGFsICAgICAgICAgICAgICAgICAgICAgICAgICA9IHVubWFyc2hhbDsKKy8qIE5v
IHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2Ygb2JqLmpzIC8vLy8vLy8vCivCoCDCoCBy
ZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ29vJ10gPSBmdW5jdGlvbigp
IHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBvby5qcyAvLy8v
Ly8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbGludGVybmFsT08gPSByZXF1aXJlKCIuL2Nh
bWxpbnRlcm5hbE9PIik7CisKK3ZhciBjb3B5ID0gQ2FtbGludGVybmFsT08uY29weTsKKwordmFy
IG5ld19tZXRob2QgPSBDYW1saW50ZXJuYWxPTy5wdWJsaWNfbWV0aG9kX2xhYmVsOworCit2YXIg
cHVibGljX21ldGhvZF9sYWJlbCA9IENhbWxpbnRlcm5hbE9PLnB1YmxpY19tZXRob2RfbGFiZWw7
CisKK2V4cG9ydHMuY29weSAgICAgICAgICAgICAgICA9IGNvcHk7CitleHBvcnRzLm5ld19tZXRo
b2QgICAgICAgICAgPSBuZXdfbWV0aG9kOworZXhwb3J0cy5wdWJsaWNfbWV0aG9kX2xhYmVsID0g
cHVibGljX21ldGhvZF9sYWJlbDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQg
b2Ygb28uanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9y
ZWdpc3RyeVsnb3BlcmF0b3JzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0g
e307CisvLy8vLy8vLyBzdGFydCBvZiBvcGVyYXRvcnMuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRl
ZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQor
J3VzZSBzdHJpY3QnOworCit2YXIgQmxvY2sgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2Jsb2NrIik7Cit2YXIgU291cmNlID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKKworZnVuY3Rpb24g
aTMyX2NvbnN0KG4pIHsKKyAgcmV0dXJuIC8qIENvbnN0ICovQmxvY2suX18oMTUsIFtTb3VyY2Uu
JGF0JGF0KC8qIEkzMiAqL0Jsb2NrLl9fKDAsIFtuWy8qIGl0ICovMV1dKSwgblsvKiBhdCAqLzBd
KV0pOworfQorCitmdW5jdGlvbiBpNjRfY29uc3QobikgeworICByZXR1cm4gLyogQ29uc3QgKi9C
bG9jay5fXygxNSwgW1NvdXJjZS4kYXQkYXQoLyogSTY0ICovQmxvY2suX18oMSwgW25bLyogaXQg
Ki8xXV0pLCBuWy8qIGF0ICovMF0pXSk7Cit9CisKK2Z1bmN0aW9uIGYzMl9jb25zdChuKSB7Cisg
IHJldHVybiAvKiBDb25zdCAqL0Jsb2NrLl9fKDE1LCBbU291cmNlLiRhdCRhdCgvKiBGMzIgKi9C
bG9jay5fXygyLCBbblsvKiBpdCAqLzFdXSksIG5bLyogYXQgKi8wXSldKTsKK30KKworZnVuY3Rp
b24gZjY0X2NvbnN0KG4pIHsKKyAgcmV0dXJuIC8qIENvbnN0ICovQmxvY2suX18oMTUsIFtTb3Vy
Y2UuJGF0JGF0KC8qIEY2NCAqL0Jsb2NrLl9fKDMsIFtuWy8qIGl0ICovMV1dKSwgblsvKiBhdCAq
LzBdKV0pOworfQorCitmdW5jdGlvbiBibG9jayh0cywgZXMpIHsKKyAgcmV0dXJuIC8qIEJsb2Nr
ICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgdHMsCisgICAgICAgICAgICBlcworICAgICAg
ICAgIF0pOworfQorCitmdW5jdGlvbiBsb29wKHRzLCBlcykgeworICByZXR1cm4gLyogTG9vcCAq
L0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgIHRzLAorICAgICAgICAgICAgZXMKKyAgICAgICAg
ICBdKTsKK30KKworZnVuY3Rpb24gYnIoeCkgeworICByZXR1cm4gLyogQnIgKi9CbG9jay5fXygz
LCBbeF0pOworfQorCitmdW5jdGlvbiBicl9pZih4KSB7CisgIHJldHVybiAvKiBCcklmICovQmxv
Y2suX18oNCwgW3hdKTsKK30KKworZnVuY3Rpb24gYnJfdGFibGUoeHMsIHgpIHsKKyAgcmV0dXJu
IC8qIEJyVGFibGUgKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICB4cywKKyAgICAgICAgICAg
IHgKKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gaWZfKHRzLCBlczEsIGVzMikgeworICBy
ZXR1cm4gLyogSWYgKi9CbG9jay5fXygyLCBbCisgICAgICAgICAgICB0cywKKyAgICAgICAgICAg
IGVzMSwKKyAgICAgICAgICAgIGVzMgorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBjYWxs
KHgpIHsKKyAgcmV0dXJuIC8qIENhbGwgKi9CbG9jay5fXyg2LCBbeF0pOworfQorCitmdW5jdGlv
biBjYWxsX2luZGlyZWN0KHgpIHsKKyAgcmV0dXJuIC8qIENhbGxJbmRpcmVjdCAqL0Jsb2NrLl9f
KDcsIFt4XSk7Cit9CisKK2Z1bmN0aW9uIGdldF9sb2NhbCh4KSB7CisgIHJldHVybiAvKiBHZXRM
b2NhbCAqL0Jsb2NrLl9fKDgsIFt4XSk7Cit9CisKK2Z1bmN0aW9uIHNldF9sb2NhbCh4KSB7Cisg
IHJldHVybiAvKiBTZXRMb2NhbCAqL0Jsb2NrLl9fKDksIFt4XSk7Cit9CisKK2Z1bmN0aW9uIHRl
ZV9sb2NhbCh4KSB7CisgIHJldHVybiAvKiBUZWVMb2NhbCAqL0Jsb2NrLl9fKDEwLCBbeF0pOwor
fQorCitmdW5jdGlvbiBnZXRfZ2xvYmFsKHgpIHsKKyAgcmV0dXJuIC8qIEdldEdsb2JhbCAqL0Js
b2NrLl9fKDExLCBbeF0pOworfQorCitmdW5jdGlvbiBzZXRfZ2xvYmFsKHgpIHsKKyAgcmV0dXJu
IC8qIFNldEdsb2JhbCAqL0Jsb2NrLl9fKDEyLCBbeF0pOworfQorCitmdW5jdGlvbiBpMzJfbG9h
ZChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisgICAgICAgICAg
ICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwK
KyAgICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAgICAgXV0pOworfQorCitm
dW5jdGlvbiBpNjRfbG9hZChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxv
Y2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAq
LzEsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9m
ZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAg
ICAgXV0pOworfQorCitmdW5jdGlvbiBmMzJfbG9hZChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVy
biAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8q
IHR5IDogRjMyVHlwZSAqLzIsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAg
ICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBOb25l
ICovMAorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBmNjRfbG9hZChhbGlnbiwgb2Zm
c2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisg
ICAgICAgICAgICAgIC8qIHR5IDogRjY0VHlwZSAqLzMsCisgICAgICAgICAgICAgIC8qIGFsaWdu
ICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAg
ICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpMzJf
bG9hZDhfcyhhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMs
IFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisgICAg
ICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29m
ZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAg
ICAgICAgICAgICAgLyogTWVtOCAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBTWCAqLzAKKyAg
ICAgICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpMzJfbG9h
ZDhfdShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsv
KiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisgICAgICAg
ICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNl
dCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAgICAg
ICAgICAgICAgLyogTWVtOCAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBaWCAqLzEKKyAgICAg
ICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpMzJfbG9hZDE2
X3MoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEkzMlR5cGUgKi8wLAorICAgICAgICAg
ICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQs
CisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
ICAgICAgIC8qIE1lbTE2ICovMSwKKyAgICAgICAgICAgICAgICAgIC8qIFNYICovMAorICAgICAg
ICAgICAgICAgIF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGkzMl9sb2FkMTZf
dShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisgICAgICAgICAg
ICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwK
KyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAgICAgLyogTWVtMTYgKi8xLAorICAgICAgICAgICAgICAgICAgLyogWlggKi8xCisgICAgICAg
ICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQ4X3Mo
YWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyogcmVj
b3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAgICAgICAg
ICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCisg
ICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAg
ICAgIC8qIE1lbTggKi8wLAorICAgICAgICAgICAgICAgICAgLyogU1ggKi8wCisgICAgICAgICAg
ICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQ4X3UoYWxp
Z24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyogcmVjb3Jk
ICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAgICAgICAgICAv
KiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCisgICAg
ICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAg
IC8qIE1lbTggKi8wLAorICAgICAgICAgICAgICAgICAgLyogWlggKi8xCisgICAgICAgICAgICAg
ICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQxNl9zKGFsaWdu
LCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywgWy8qIHJlY29yZCAq
L1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAgICAgICAgLyog
YWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAg
ICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAv
KiBNZW0xNiAqLzEsCisgICAgICAgICAgICAgICAgICAvKiBTWCAqLzAKKyAgICAgICAgICAgICAg
ICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpNjRfbG9hZDE2X3UoYWxpZ24s
IG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyogcmVjb3JkICov
WworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAgICAgICAgICAvKiBh
bGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCisgICAgICAg
ICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIC8q
IE1lbTE2ICovMSwKKyAgICAgICAgICAgICAgICAgIC8qIFpYICovMQorICAgICAgICAgICAgICAg
IF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGk2NF9sb2FkMzJfcyhhbGlnbiwg
b2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiByZWNvcmQgKi9b
CisgICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEsCisgICAgICAgICAgICAgIC8qIGFs
aWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAg
ICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgLyog
TWVtMzIgKi8yLAorICAgICAgICAgICAgICAgICAgLyogU1ggKi8wCisgICAgICAgICAgICAgICAg
XV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQzMl91KGFsaWduLCBv
ZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywgWy8qIHJlY29yZCAqL1sK
KyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAgICAgICAgLyogYWxp
Z24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAg
ICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAvKiBN
ZW0zMiAqLzIsCisgICAgICAgICAgICAgICAgICAvKiBaWCAqLzEKKyAgICAgICAgICAgICAgICBd
XQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpMzJfc3RvcmUoYWxpZ24sIG9mZnNl
dCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sKKyAg
ICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwKKyAgICAgICAgICAgICAgLyogYWxpZ24g
Ki9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgICAg
ICAvKiBzeiA6IE5vbmUgKi8wCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGk2NF9z
dG9yZShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9yZSAqL0Jsb2NrLl9fKDE0LCBb
LyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAg
ICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZz
ZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogTm9uZSAqLzAKKyAgICAgICAgICAgIF1dKTsKK30K
KworZnVuY3Rpb24gZjMyX3N0b3JlKGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIFN0b3Jl
ICovQmxvY2suX18oMTQsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogRjMy
VHlwZSAqLzIsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAg
IC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAorICAg
ICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBmNjRfc3RvcmUoYWxpZ24sIG9mZnNldCkgewor
ICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sKKyAgICAgICAg
ICAgICAgLyogdHkgOiBGNjRUeXBlICovMywKKyAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGln
biwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgICAgICAvKiBz
eiA6IE5vbmUgKi8wCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGkzMl9zdG9yZTgo
YWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwKKyAgICAgICAgICAg
ICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAor
ICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogTWVtOCAqLzBdCisgICAgICAgICAgICBd
XSk7Cit9CisKK2Z1bmN0aW9uIGkzMl9zdG9yZTE2KGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJu
IC8qIFN0b3JlICovQmxvY2suX18oMTQsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8q
IHR5IDogSTMyVHlwZSAqLzAsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAg
ICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21l
ICovWy8qIE1lbTE2ICovMV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X3N0
b3JlOChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9yZSAqL0Jsb2NrLl9fKDE0LCBb
LyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAg
ICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZz
ZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiBNZW04ICovMF0KKyAgICAgICAg
ICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X3N0b3JlMTYoYWxpZ24sIG9mZnNldCkgeworICBy
ZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAg
ICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwK
KyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgICAgICAvKiBzeiA6
IFNvbWUgKi9bLyogTWVtMTYgKi8xXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBp
NjRfc3RvcmUzMihhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9yZSAqL0Jsb2NrLl9f
KDE0LCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAor
ICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQg
Ki9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiBNZW0zMiAqLzJdCisg
ICAgICAgICAgICBdXSk7Cit9CisKK3ZhciB1bnJlYWNoYWJsZSA9IC8qIFVucmVhY2hhYmxlICov
MDsKKwordmFyIG5vcCA9IC8qIE5vcCAqLzE7CisKK3ZhciBkcm9wID0gLyogRHJvcCAqLzM7CisK
K3ZhciAkJHJldHVybiA9IC8qIFJldHVybiAqLzI7CisKK3ZhciBzZWxlY3QgPSAvKiBTZWxlY3Qg
Ki80OworCit2YXIgaTMyX2NseiA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBJMzIgKi9C
bG9jay5fXygwLCBbLyogQ2x6ICovMF0pXSk7CisKK3ZhciBpMzJfY3R6ID0gLyogVW5hcnkgKi9C
bG9jay5fXygxOCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBDdHogKi8xXSldKTsKKwordmFy
IGkzMl9wb3BjbnQgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogSTMyICovQmxvY2suX18o
MCwgWy8qIFBvcGNudCAqLzJdKV0pOworCit2YXIgaTY0X2NseiA9IC8qIFVuYXJ5ICovQmxvY2su
X18oMTgsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogQ2x6ICovMF0pXSk7CisKK3ZhciBpNjRf
Y3R6ID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBD
dHogKi8xXSldKTsKKwordmFyIGk2NF9wb3BjbnQgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBb
LyogSTY0ICovQmxvY2suX18oMSwgWy8qIFBvcGNudCAqLzJdKV0pOworCit2YXIgZjMyX25lZyA9
IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogTmVnICov
MF0pXSk7CisKK3ZhciBmMzJfYWJzID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAq
L0Jsb2NrLl9fKDIsIFsvKiBBYnMgKi8xXSldKTsKKwordmFyIGYzMl9zcXJ0ID0gLyogVW5hcnkg
Ki9CbG9jay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBTcXJ0ICovNl0pXSk7CisK
K3ZhciBmMzJfY2VpbCA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGMzIgKi9CbG9jay5f
XygyLCBbLyogQ2VpbCAqLzJdKV0pOworCit2YXIgZjMyX2Zsb29yID0gLyogVW5hcnkgKi9CbG9j
ay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBGbG9vciAqLzNdKV0pOworCit2YXIg
ZjMyX3RydW5jID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIs
IFsvKiBUcnVuYyAqLzRdKV0pOworCit2YXIgZjMyX25lYXJlc3QgPSAvKiBVbmFyeSAqL0Jsb2Nr
Ll9fKDE4LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIE5lYXJlc3QgKi81XSldKTsKKwordmFy
IGY2NF9uZWcgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjY0ICovQmxvY2suX18oMywg
Wy8qIE5lZyAqLzBdKV0pOworCit2YXIgZjY0X2FicyA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgs
IFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQWJzICovMV0pXSk7CisKK3ZhciBmNjRfc3FydCA9
IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogU3FydCAq
LzZdKV0pOworCit2YXIgZjY0X2NlaWwgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjY0
ICovQmxvY2suX18oMywgWy8qIENlaWwgKi8yXSldKTsKKwordmFyIGY2NF9mbG9vciA9IC8qIFVu
YXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogRmxvb3IgKi8zXSld
KTsKKwordmFyIGY2NF90cnVuYyA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9C
bG9jay5fXygzLCBbLyogVHJ1bmMgKi80XSldKTsKKwordmFyIGY2NF9uZWFyZXN0ID0gLyogVW5h
cnkgKi9CbG9jay5fXygxOCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBOZWFyZXN0ICovNV0p
XSk7CisKK3ZhciBpMzJfYWRkID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9C
bG9jay5fXygwLCBbLyogQWRkICovMF0pXSk7CisKK3ZhciBpMzJfc3ViID0gLyogQmluYXJ5ICov
QmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogU3ViICovMV0pXSk7CisKK3Zh
ciBpMzJfbXVsID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygw
LCBbLyogTXVsICovMl0pXSk7CisKK3ZhciBpMzJfZGl2X3MgPSAvKiBCaW5hcnkgKi9CbG9jay5f
XygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBEaXZTICovM10pXSk7CisKK3ZhciBpMzJf
ZGl2X3UgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsv
KiBEaXZVICovNF0pXSk7CisKK3ZhciBpMzJfcmVtX3MgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygx
OSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBSZW1TICovNV0pXSk7CisKK3ZhciBpMzJfcmVt
X3UgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBS
ZW1VICovNl0pXSk7CisKK3ZhciBpMzJfYW5kID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsv
KiBJMzIgKi9CbG9jay5fXygwLCBbLyogQW5kICovN10pXSk7CisKK3ZhciBpMzJfb3IgPSAvKiBC
aW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBPciAqLzhdKV0p
OworCit2YXIgaTMyX3hvciA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxv
Y2suX18oMCwgWy8qIFhvciAqLzldKV0pOworCit2YXIgaTMyX3NobCA9IC8qIEJpbmFyeSAqL0Js
b2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFNobCAqLzEwXSldKTsKKwordmFy
IGkzMl9zaHJfcyA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18o
MCwgWy8qIFNoclMgKi8xMV0pXSk7CisKK3ZhciBpMzJfc2hyX3UgPSAvKiBCaW5hcnkgKi9CbG9j
ay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBTaHJVICovMTJdKV0pOworCit2YXIg
aTMyX3JvdGwgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAs
IFsvKiBSb3RsICovMTNdKV0pOworCit2YXIgaTMyX3JvdHIgPSAvKiBCaW5hcnkgKi9CbG9jay5f
XygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBSb3RyICovMTRdKV0pOworCit2YXIgaTY0
X2FkZCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8q
IEFkZCAqLzBdKV0pOworCit2YXIgaTY0X3N1YiA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBb
LyogSTY0ICovQmxvY2suX18oMSwgWy8qIFN1YiAqLzFdKV0pOworCit2YXIgaTY0X211bCA9IC8q
IEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIE11bCAqLzJd
KV0pOworCit2YXIgaTY0X2Rpdl9zID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQg
Ki9CbG9jay5fXygxLCBbLyogRGl2UyAqLzNdKV0pOworCit2YXIgaTY0X2Rpdl91ID0gLyogQmlu
YXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogRGl2VSAqLzRdKV0p
OworCit2YXIgaTY0X3JlbV9zID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9C
bG9jay5fXygxLCBbLyogUmVtUyAqLzVdKV0pOworCit2YXIgaTY0X3JlbV91ID0gLyogQmluYXJ5
ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogUmVtVSAqLzZdKV0pOwor
Cit2YXIgaTY0X2FuZCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2su
X18oMSwgWy8qIEFuZCAqLzddKV0pOworCit2YXIgaTY0X29yID0gLyogQmluYXJ5ICovQmxvY2su
X18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogT3IgKi84XSldKTsKKwordmFyIGk2NF94
b3IgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBY
b3IgKi85XSldKTsKKwordmFyIGk2NF9zaGwgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8q
IEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBTaGwgKi8xMF0pXSk7CisKK3ZhciBpNjRfc2hyX3MgPSAv
KiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBTaHJTICov
MTFdKV0pOworCit2YXIgaTY0X3Nocl91ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJ
NjQgKi9CbG9jay5fXygxLCBbLyogU2hyVSAqLzEyXSldKTsKKwordmFyIGk2NF9yb3RsID0gLyog
QmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogUm90bCAqLzEz
XSldKTsKKwordmFyIGk2NF9yb3RyID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQg
Ki9CbG9jay5fXygxLCBbLyogUm90ciAqLzE0XSldKTsKKwordmFyIGYzMl9hZGQgPSAvKiBCaW5h
cnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBBZGQgKi8wXSldKTsK
KwordmFyIGYzMl9zdWIgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2Nr
Ll9fKDIsIFsvKiBTdWIgKi8xXSldKTsKKwordmFyIGYzMl9tdWwgPSAvKiBCaW5hcnkgKi9CbG9j
ay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBNdWwgKi8yXSldKTsKKwordmFyIGYz
Ml9kaXYgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsv
KiBEaXYgKi8zXSldKTsKKwordmFyIGYzMl9taW4gPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwg
Wy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBNaW4gKi80XSldKTsKKwordmFyIGYzMl9tYXggPSAv
KiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBNYXggKi81
XSldKTsKKwordmFyIGYzMl9jb3B5c2lnbiA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyog
RjMyICovQmxvY2suX18oMiwgWy8qIENvcHlTaWduICovNl0pXSk7CisKK3ZhciBmNjRfYWRkID0g
LyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQWRkICov
MF0pXSk7CisKK3ZhciBmNjRfc3ViID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQg
Ki9CbG9jay5fXygzLCBbLyogU3ViICovMV0pXSk7CisKK3ZhciBmNjRfbXVsID0gLyogQmluYXJ5
ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTXVsICovMl0pXSk7CisK
K3ZhciBmNjRfZGl2ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5f
XygzLCBbLyogRGl2ICovM10pXSk7CisKK3ZhciBmNjRfbWluID0gLyogQmluYXJ5ICovQmxvY2su
X18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTWluICovNF0pXSk7CisKK3ZhciBmNjRf
bWF4ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyog
TWF4ICovNV0pXSk7CisKK3ZhciBmNjRfY29weXNpZ24gPSAvKiBCaW5hcnkgKi9CbG9jay5fXygx
OSwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBDb3B5U2lnbiAqLzZdKV0pOworCit2YXIgaTMy
X2VxeiA9IC8qIFRlc3QgKi9CbG9jay5fXygxNiwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBF
cXogKi8wXSldKTsKKwordmFyIGk2NF9lcXogPSAvKiBUZXN0ICovQmxvY2suX18oMTYsIFsvKiBJ
NjQgKi9CbG9jay5fXygxLCBbLyogRXF6ICovMF0pXSk7CisKK3ZhciBpMzJfZXEgPSAvKiBDb21w
YXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogRXEgKi8wXSldKTsK
KwordmFyIGkzMl9uZSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2Nr
Ll9fKDAsIFsvKiBOZSAqLzFdKV0pOworCit2YXIgaTMyX2x0X3MgPSAvKiBDb21wYXJlICovQmxv
Y2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogTHRTICovMl0pXSk7CisKK3ZhciBp
MzJfbHRfdSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAs
IFsvKiBMdFUgKi8zXSldKTsKKwordmFyIGkzMl9sZV9zID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9f
KDE3LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIExlUyAqLzZdKV0pOworCit2YXIgaTMyX2xl
X3UgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyog
TGVVICovN10pXSk7CisKK3ZhciBpMzJfZ3RfcyA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywg
Wy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBHdFMgKi80XSldKTsKKwordmFyIGkzMl9ndF91ID0g
LyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIEd0VSAq
LzVdKV0pOworCit2YXIgaTMyX2dlX3MgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJ
MzIgKi9CbG9jay5fXygwLCBbLyogR2VTICovOF0pXSk7CisKK3ZhciBpMzJfZ2VfdSA9IC8qIENv
bXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBHZVUgKi85XSld
KTsKKwordmFyIGk2NF9lcSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Js
b2NrLl9fKDEsIFsvKiBFcSAqLzBdKV0pOworCit2YXIgaTY0X25lID0gLyogQ29tcGFyZSAqL0Js
b2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIE5lICovMV0pXSk7CisKK3ZhciBp
NjRfbHRfcyA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEs
IFsvKiBMdFMgKi8yXSldKTsKKwordmFyIGk2NF9sdF91ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9f
KDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIEx0VSAqLzNdKV0pOworCit2YXIgaTY0X2xl
X3MgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyog
TGVTICovNl0pXSk7CisKK3ZhciBpNjRfbGVfdSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywg
Wy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBMZVUgKi83XSldKTsKKwordmFyIGk2NF9ndF9zID0g
LyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIEd0UyAq
LzRdKV0pOworCit2YXIgaTY0X2d0X3UgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJ
NjQgKi9CbG9jay5fXygxLCBbLyogR3RVICovNV0pXSk7CisKK3ZhciBpNjRfZ2VfcyA9IC8qIENv
bXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBHZVMgKi84XSld
KTsKKwordmFyIGk2NF9nZV91ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICov
QmxvY2suX18oMSwgWy8qIEdlVSAqLzldKV0pOworCit2YXIgZjMyX2VxID0gLyogQ29tcGFyZSAq
L0Jsb2NrLl9fKDE3LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIEVxICovMF0pXSk7CisKK3Zh
ciBmMzJfbmUgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGMzIgKi9CbG9jay5fXygy
LCBbLyogTmUgKi8xXSldKTsKKwordmFyIGYzMl9sdCA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygx
NywgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBMdCAqLzJdKV0pOworCit2YXIgZjMyX2xlID0g
LyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIExlICov
NF0pXSk7CisKK3ZhciBmMzJfZ3QgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGMzIg
Ki9CbG9jay5fXygyLCBbLyogR3QgKi8zXSldKTsKKwordmFyIGYzMl9nZSA9IC8qIENvbXBhcmUg
Ki9CbG9jay5fXygxNywgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBHZSAqLzVdKV0pOworCit2
YXIgZjY0X2VxID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjY0ICovQmxvY2suX18o
MywgWy8qIEVxICovMF0pXSk7CisKK3ZhciBmNjRfbmUgPSAvKiBDb21wYXJlICovQmxvY2suX18o
MTcsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTmUgKi8xXSldKTsKKwordmFyIGY2NF9sdCA9
IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBMdCAq
LzJdKV0pOworCit2YXIgZjY0X2xlID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjY0
ICovQmxvY2suX18oMywgWy8qIExlICovNF0pXSk7CisKK3ZhciBmNjRfZ3QgPSAvKiBDb21wYXJl
ICovQmxvY2suX18oMTcsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogR3QgKi8zXSldKTsKKwor
dmFyIGY2NF9nZSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEY2NCAqL0Jsb2NrLl9f
KDMsIFsvKiBHZSAqLzVdKV0pOworCit2YXIgaTMyX3dyYXBfaTY0ID0gLyogQ29udmVydCAqL0Js
b2NrLl9fKDIwLCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFdyYXBJNjQgKi8yXSldKTsKKwor
dmFyIGkzMl90cnVuY19zX2YzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkzMiAq
L0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1NGMzIgKi8zXSldKTsKKwordmFyIGkzMl90cnVuY191X2Yz
MiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBU
cnVuY1VGMzIgKi80XSldKTsKKwordmFyIGkzMl90cnVuY19zX2Y2NCA9IC8qIENvbnZlcnQgKi9C
bG9jay5fXygyMCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1NGNjQgKi81XSldKTsK
KwordmFyIGkzMl90cnVuY191X2Y2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkz
MiAqL0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1VGNjQgKi82XSldKTsKKwordmFyIGk2NF9leHRlbmRf
c19pMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBb
LyogRXh0ZW5kU0kzMiAqLzBdKV0pOworCit2YXIgaTY0X2V4dGVuZF91X2kzMiA9IC8qIENvbnZl
cnQgKi9CbG9jay5fXygyMCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBFeHRlbmRVSTMyICov
MV0pXSk7CisKK3ZhciBpNjRfdHJ1bmNfc19mMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAs
IFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogVHJ1bmNTRjMyICovM10pXSk7CisKK3ZhciBpNjRf
dHJ1bmNfdV9mMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5f
XygxLCBbLyogVHJ1bmNVRjMyICovNF0pXSk7CisKK3ZhciBpNjRfdHJ1bmNfc19mNjQgPSAvKiBD
b252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogVHJ1bmNTRjY0
ICovNV0pXSk7CisKK3ZhciBpNjRfdHJ1bmNfdV9mNjQgPSAvKiBDb252ZXJ0ICovQmxvY2suX18o
MjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogVHJ1bmNVRjY0ICovNl0pXSk7CisKK3ZhciBm
MzJfY29udmVydF9zX2kzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEYzMiAqL0Js
b2NrLl9fKDIsIFsvKiBDb252ZXJ0U0kzMiAqLzBdKV0pOworCit2YXIgZjMyX2NvbnZlcnRfdV9p
MzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyog
Q29udmVydFVJMzIgKi8xXSldKTsKKwordmFyIGYzMl9jb252ZXJ0X3NfaTY0ID0gLyogQ29udmVy
dCAqL0Jsb2NrLl9fKDIwLCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIENvbnZlcnRTSTY0ICov
Ml0pXSk7CisKK3ZhciBmMzJfY29udmVydF91X2k2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygy
MCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBDb252ZXJ0VUk2NCAqLzNdKV0pOworCit2YXIg
ZjMyX2RlbW90ZV9mNjQgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBGMzIgKi9CbG9j
ay5fXygyLCBbLyogRGVtb3RlRjY0ICovNV0pXSk7CisKK3ZhciBmNjRfY29udmVydF9zX2kzMiA9
IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBDb252
ZXJ0U0kzMiAqLzBdKV0pOworCit2YXIgZjY0X2NvbnZlcnRfdV9pMzIgPSAvKiBDb252ZXJ0ICov
QmxvY2suX18oMjAsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQ29udmVydFVJMzIgKi8xXSld
KTsKKwordmFyIGY2NF9jb252ZXJ0X3NfaTY0ID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBb
LyogRjY0ICovQmxvY2suX18oMywgWy8qIENvbnZlcnRTSTY0ICovMl0pXSk7CisKK3ZhciBmNjRf
Y29udmVydF91X2k2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEY2NCAqL0Jsb2Nr
Ll9fKDMsIFsvKiBDb252ZXJ0VUk2NCAqLzNdKV0pOworCit2YXIgZjY0X3Byb21vdGVfZjMyID0g
LyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIFByb21v
dGVGMzIgKi80XSldKTsKKwordmFyIGkzMl9yZWludGVycHJldF9mMzIgPSAvKiBDb252ZXJ0ICov
QmxvY2suX18oMjAsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogUmVpbnRlcnByZXRGbG9hdCAq
LzddKV0pOworCit2YXIgaTY0X3JlaW50ZXJwcmV0X2Y2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5f
XygyMCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBSZWludGVycHJldEZsb2F0ICovN10pXSk7
CisKK3ZhciBmMzJfcmVpbnRlcnByZXRfaTMyID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBb
LyogRjMyICovQmxvY2suX18oMiwgWy8qIFJlaW50ZXJwcmV0SW50ICovNl0pXSk7CisKK3ZhciBm
NjRfcmVpbnRlcnByZXRfaTY0ID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjY0ICov
QmxvY2suX18oMywgWy8qIFJlaW50ZXJwcmV0SW50ICovNl0pXSk7CisKK3ZhciBjdXJyZW50X21l
bW9yeSA9IC8qIEN1cnJlbnRNZW1vcnkgKi81OworCit2YXIgZ3Jvd19tZW1vcnkgPSAvKiBHcm93
TWVtb3J5ICovNjsKKworZXhwb3J0cy5pMzJfY29uc3QgICAgICAgICAgID0gaTMyX2NvbnN0Owor
ZXhwb3J0cy5pNjRfY29uc3QgICAgICAgICAgID0gaTY0X2NvbnN0OworZXhwb3J0cy5mMzJfY29u
c3QgICAgICAgICAgID0gZjMyX2NvbnN0OworZXhwb3J0cy5mNjRfY29uc3QgICAgICAgICAgID0g
ZjY0X2NvbnN0OworZXhwb3J0cy51bnJlYWNoYWJsZSAgICAgICAgID0gdW5yZWFjaGFibGU7Citl
eHBvcnRzLm5vcCAgICAgICAgICAgICAgICAgPSBub3A7CitleHBvcnRzLmRyb3AgICAgICAgICAg
ICAgICAgPSBkcm9wOworZXhwb3J0cy5ibG9jayAgICAgICAgICAgICAgID0gYmxvY2s7CitleHBv
cnRzLmxvb3AgICAgICAgICAgICAgICAgPSBsb29wOworZXhwb3J0cy5iciAgICAgICAgICAgICAg
ICAgID0gYnI7CitleHBvcnRzLmJyX2lmICAgICAgICAgICAgICAgPSBicl9pZjsKK2V4cG9ydHMu
YnJfdGFibGUgICAgICAgICAgICA9IGJyX3RhYmxlOworZXhwb3J0cy4kJHJldHVybiAgICAgICAg
ICAgID0gJCRyZXR1cm47CitleHBvcnRzLmlmXyAgICAgICAgICAgICAgICAgPSBpZl87CitleHBv
cnRzLnNlbGVjdCAgICAgICAgICAgICAgPSBzZWxlY3Q7CitleHBvcnRzLmNhbGwgICAgICAgICAg
ICAgICAgPSBjYWxsOworZXhwb3J0cy5jYWxsX2luZGlyZWN0ICAgICAgID0gY2FsbF9pbmRpcmVj
dDsKK2V4cG9ydHMuZ2V0X2xvY2FsICAgICAgICAgICA9IGdldF9sb2NhbDsKK2V4cG9ydHMuc2V0
X2xvY2FsICAgICAgICAgICA9IHNldF9sb2NhbDsKK2V4cG9ydHMudGVlX2xvY2FsICAgICAgICAg
ICA9IHRlZV9sb2NhbDsKK2V4cG9ydHMuZ2V0X2dsb2JhbCAgICAgICAgICA9IGdldF9nbG9iYWw7
CitleHBvcnRzLnNldF9nbG9iYWwgICAgICAgICAgPSBzZXRfZ2xvYmFsOworZXhwb3J0cy5pMzJf
bG9hZCAgICAgICAgICAgID0gaTMyX2xvYWQ7CitleHBvcnRzLmk2NF9sb2FkICAgICAgICAgICAg
PSBpNjRfbG9hZDsKK2V4cG9ydHMuZjMyX2xvYWQgICAgICAgICAgICA9IGYzMl9sb2FkOworZXhw
b3J0cy5mNjRfbG9hZCAgICAgICAgICAgID0gZjY0X2xvYWQ7CitleHBvcnRzLmkzMl9sb2FkOF9z
ICAgICAgICAgPSBpMzJfbG9hZDhfczsKK2V4cG9ydHMuaTMyX2xvYWQ4X3UgICAgICAgICA9IGkz
Ml9sb2FkOF91OworZXhwb3J0cy5pMzJfbG9hZDE2X3MgICAgICAgID0gaTMyX2xvYWQxNl9zOwor
ZXhwb3J0cy5pMzJfbG9hZDE2X3UgICAgICAgID0gaTMyX2xvYWQxNl91OworZXhwb3J0cy5pNjRf
bG9hZDhfcyAgICAgICAgID0gaTY0X2xvYWQ4X3M7CitleHBvcnRzLmk2NF9sb2FkOF91ICAgICAg
ICAgPSBpNjRfbG9hZDhfdTsKK2V4cG9ydHMuaTY0X2xvYWQxNl9zICAgICAgICA9IGk2NF9sb2Fk
MTZfczsKK2V4cG9ydHMuaTY0X2xvYWQxNl91ICAgICAgICA9IGk2NF9sb2FkMTZfdTsKK2V4cG9y
dHMuaTY0X2xvYWQzMl9zICAgICAgICA9IGk2NF9sb2FkMzJfczsKK2V4cG9ydHMuaTY0X2xvYWQz
Ml91ICAgICAgICA9IGk2NF9sb2FkMzJfdTsKK2V4cG9ydHMuaTMyX3N0b3JlICAgICAgICAgICA9
IGkzMl9zdG9yZTsKK2V4cG9ydHMuaTY0X3N0b3JlICAgICAgICAgICA9IGk2NF9zdG9yZTsKK2V4
cG9ydHMuZjMyX3N0b3JlICAgICAgICAgICA9IGYzMl9zdG9yZTsKK2V4cG9ydHMuZjY0X3N0b3Jl
ICAgICAgICAgICA9IGY2NF9zdG9yZTsKK2V4cG9ydHMuaTMyX3N0b3JlOCAgICAgICAgICA9IGkz
Ml9zdG9yZTg7CitleHBvcnRzLmkzMl9zdG9yZTE2ICAgICAgICAgPSBpMzJfc3RvcmUxNjsKK2V4
cG9ydHMuaTY0X3N0b3JlOCAgICAgICAgICA9IGk2NF9zdG9yZTg7CitleHBvcnRzLmk2NF9zdG9y
ZTE2ICAgICAgICAgPSBpNjRfc3RvcmUxNjsKK2V4cG9ydHMuaTY0X3N0b3JlMzIgICAgICAgICA9
IGk2NF9zdG9yZTMyOworZXhwb3J0cy5pMzJfY2x6ICAgICAgICAgICAgID0gaTMyX2NsejsKK2V4
cG9ydHMuaTMyX2N0eiAgICAgICAgICAgICA9IGkzMl9jdHo7CitleHBvcnRzLmkzMl9wb3BjbnQg
ICAgICAgICAgPSBpMzJfcG9wY250OworZXhwb3J0cy5pNjRfY2x6ICAgICAgICAgICAgID0gaTY0
X2NsejsKK2V4cG9ydHMuaTY0X2N0eiAgICAgICAgICAgICA9IGk2NF9jdHo7CitleHBvcnRzLmk2
NF9wb3BjbnQgICAgICAgICAgPSBpNjRfcG9wY250OworZXhwb3J0cy5mMzJfbmVnICAgICAgICAg
ICAgID0gZjMyX25lZzsKK2V4cG9ydHMuZjMyX2FicyAgICAgICAgICAgICA9IGYzMl9hYnM7Citl
eHBvcnRzLmYzMl9zcXJ0ICAgICAgICAgICAgPSBmMzJfc3FydDsKK2V4cG9ydHMuZjMyX2NlaWwg
ICAgICAgICAgICA9IGYzMl9jZWlsOworZXhwb3J0cy5mMzJfZmxvb3IgICAgICAgICAgID0gZjMy
X2Zsb29yOworZXhwb3J0cy5mMzJfdHJ1bmMgICAgICAgICAgID0gZjMyX3RydW5jOworZXhwb3J0
cy5mMzJfbmVhcmVzdCAgICAgICAgID0gZjMyX25lYXJlc3Q7CitleHBvcnRzLmY2NF9uZWcgICAg
ICAgICAgICAgPSBmNjRfbmVnOworZXhwb3J0cy5mNjRfYWJzICAgICAgICAgICAgID0gZjY0X2Fi
czsKK2V4cG9ydHMuZjY0X3NxcnQgICAgICAgICAgICA9IGY2NF9zcXJ0OworZXhwb3J0cy5mNjRf
Y2VpbCAgICAgICAgICAgID0gZjY0X2NlaWw7CitleHBvcnRzLmY2NF9mbG9vciAgICAgICAgICAg
PSBmNjRfZmxvb3I7CitleHBvcnRzLmY2NF90cnVuYyAgICAgICAgICAgPSBmNjRfdHJ1bmM7Citl
eHBvcnRzLmY2NF9uZWFyZXN0ICAgICAgICAgPSBmNjRfbmVhcmVzdDsKK2V4cG9ydHMuaTMyX2Fk
ZCAgICAgICAgICAgICA9IGkzMl9hZGQ7CitleHBvcnRzLmkzMl9zdWIgICAgICAgICAgICAgPSBp
MzJfc3ViOworZXhwb3J0cy5pMzJfbXVsICAgICAgICAgICAgID0gaTMyX211bDsKK2V4cG9ydHMu
aTMyX2Rpdl9zICAgICAgICAgICA9IGkzMl9kaXZfczsKK2V4cG9ydHMuaTMyX2Rpdl91ICAgICAg
ICAgICA9IGkzMl9kaXZfdTsKK2V4cG9ydHMuaTMyX3JlbV9zICAgICAgICAgICA9IGkzMl9yZW1f
czsKK2V4cG9ydHMuaTMyX3JlbV91ICAgICAgICAgICA9IGkzMl9yZW1fdTsKK2V4cG9ydHMuaTMy
X2FuZCAgICAgICAgICAgICA9IGkzMl9hbmQ7CitleHBvcnRzLmkzMl9vciAgICAgICAgICAgICAg
PSBpMzJfb3I7CitleHBvcnRzLmkzMl94b3IgICAgICAgICAgICAgPSBpMzJfeG9yOworZXhwb3J0
cy5pMzJfc2hsICAgICAgICAgICAgID0gaTMyX3NobDsKK2V4cG9ydHMuaTMyX3Nocl9zICAgICAg
ICAgICA9IGkzMl9zaHJfczsKK2V4cG9ydHMuaTMyX3Nocl91ICAgICAgICAgICA9IGkzMl9zaHJf
dTsKK2V4cG9ydHMuaTMyX3JvdGwgICAgICAgICAgICA9IGkzMl9yb3RsOworZXhwb3J0cy5pMzJf
cm90ciAgICAgICAgICAgID0gaTMyX3JvdHI7CitleHBvcnRzLmk2NF9hZGQgICAgICAgICAgICAg
PSBpNjRfYWRkOworZXhwb3J0cy5pNjRfc3ViICAgICAgICAgICAgID0gaTY0X3N1YjsKK2V4cG9y
dHMuaTY0X211bCAgICAgICAgICAgICA9IGk2NF9tdWw7CitleHBvcnRzLmk2NF9kaXZfcyAgICAg
ICAgICAgPSBpNjRfZGl2X3M7CitleHBvcnRzLmk2NF9kaXZfdSAgICAgICAgICAgPSBpNjRfZGl2
X3U7CitleHBvcnRzLmk2NF9yZW1fcyAgICAgICAgICAgPSBpNjRfcmVtX3M7CitleHBvcnRzLmk2
NF9yZW1fdSAgICAgICAgICAgPSBpNjRfcmVtX3U7CitleHBvcnRzLmk2NF9hbmQgICAgICAgICAg
ICAgPSBpNjRfYW5kOworZXhwb3J0cy5pNjRfb3IgICAgICAgICAgICAgID0gaTY0X29yOworZXhw
b3J0cy5pNjRfeG9yICAgICAgICAgICAgID0gaTY0X3hvcjsKK2V4cG9ydHMuaTY0X3NobCAgICAg
ICAgICAgICA9IGk2NF9zaGw7CitleHBvcnRzLmk2NF9zaHJfcyAgICAgICAgICAgPSBpNjRfc2hy
X3M7CitleHBvcnRzLmk2NF9zaHJfdSAgICAgICAgICAgPSBpNjRfc2hyX3U7CitleHBvcnRzLmk2
NF9yb3RsICAgICAgICAgICAgPSBpNjRfcm90bDsKK2V4cG9ydHMuaTY0X3JvdHIgICAgICAgICAg
ICA9IGk2NF9yb3RyOworZXhwb3J0cy5mMzJfYWRkICAgICAgICAgICAgID0gZjMyX2FkZDsKK2V4
cG9ydHMuZjMyX3N1YiAgICAgICAgICAgICA9IGYzMl9zdWI7CitleHBvcnRzLmYzMl9tdWwgICAg
ICAgICAgICAgPSBmMzJfbXVsOworZXhwb3J0cy5mMzJfZGl2ICAgICAgICAgICAgID0gZjMyX2Rp
djsKK2V4cG9ydHMuZjMyX21pbiAgICAgICAgICAgICA9IGYzMl9taW47CitleHBvcnRzLmYzMl9t
YXggICAgICAgICAgICAgPSBmMzJfbWF4OworZXhwb3J0cy5mMzJfY29weXNpZ24gICAgICAgID0g
ZjMyX2NvcHlzaWduOworZXhwb3J0cy5mNjRfYWRkICAgICAgICAgICAgID0gZjY0X2FkZDsKK2V4
cG9ydHMuZjY0X3N1YiAgICAgICAgICAgICA9IGY2NF9zdWI7CitleHBvcnRzLmY2NF9tdWwgICAg
ICAgICAgICAgPSBmNjRfbXVsOworZXhwb3J0cy5mNjRfZGl2ICAgICAgICAgICAgID0gZjY0X2Rp
djsKK2V4cG9ydHMuZjY0X21pbiAgICAgICAgICAgICA9IGY2NF9taW47CitleHBvcnRzLmY2NF9t
YXggICAgICAgICAgICAgPSBmNjRfbWF4OworZXhwb3J0cy5mNjRfY29weXNpZ24gICAgICAgID0g
ZjY0X2NvcHlzaWduOworZXhwb3J0cy5pMzJfZXF6ICAgICAgICAgICAgID0gaTMyX2VxejsKK2V4
cG9ydHMuaTY0X2VxeiAgICAgICAgICAgICA9IGk2NF9lcXo7CitleHBvcnRzLmkzMl9lcSAgICAg
ICAgICAgICAgPSBpMzJfZXE7CitleHBvcnRzLmkzMl9uZSAgICAgICAgICAgICAgPSBpMzJfbmU7
CitleHBvcnRzLmkzMl9sdF9zICAgICAgICAgICAgPSBpMzJfbHRfczsKK2V4cG9ydHMuaTMyX2x0
X3UgICAgICAgICAgICA9IGkzMl9sdF91OworZXhwb3J0cy5pMzJfbGVfcyAgICAgICAgICAgID0g
aTMyX2xlX3M7CitleHBvcnRzLmkzMl9sZV91ICAgICAgICAgICAgPSBpMzJfbGVfdTsKK2V4cG9y
dHMuaTMyX2d0X3MgICAgICAgICAgICA9IGkzMl9ndF9zOworZXhwb3J0cy5pMzJfZ3RfdSAgICAg
ICAgICAgID0gaTMyX2d0X3U7CitleHBvcnRzLmkzMl9nZV9zICAgICAgICAgICAgPSBpMzJfZ2Vf
czsKK2V4cG9ydHMuaTMyX2dlX3UgICAgICAgICAgICA9IGkzMl9nZV91OworZXhwb3J0cy5pNjRf
ZXEgICAgICAgICAgICAgID0gaTY0X2VxOworZXhwb3J0cy5pNjRfbmUgICAgICAgICAgICAgID0g
aTY0X25lOworZXhwb3J0cy5pNjRfbHRfcyAgICAgICAgICAgID0gaTY0X2x0X3M7CitleHBvcnRz
Lmk2NF9sdF91ICAgICAgICAgICAgPSBpNjRfbHRfdTsKK2V4cG9ydHMuaTY0X2xlX3MgICAgICAg
ICAgICA9IGk2NF9sZV9zOworZXhwb3J0cy5pNjRfbGVfdSAgICAgICAgICAgID0gaTY0X2xlX3U7
CitleHBvcnRzLmk2NF9ndF9zICAgICAgICAgICAgPSBpNjRfZ3RfczsKK2V4cG9ydHMuaTY0X2d0
X3UgICAgICAgICAgICA9IGk2NF9ndF91OworZXhwb3J0cy5pNjRfZ2VfcyAgICAgICAgICAgID0g
aTY0X2dlX3M7CitleHBvcnRzLmk2NF9nZV91ICAgICAgICAgICAgPSBpNjRfZ2VfdTsKK2V4cG9y
dHMuZjMyX2VxICAgICAgICAgICAgICA9IGYzMl9lcTsKK2V4cG9ydHMuZjMyX25lICAgICAgICAg
ICAgICA9IGYzMl9uZTsKK2V4cG9ydHMuZjMyX2x0ICAgICAgICAgICAgICA9IGYzMl9sdDsKK2V4
cG9ydHMuZjMyX2xlICAgICAgICAgICAgICA9IGYzMl9sZTsKK2V4cG9ydHMuZjMyX2d0ICAgICAg
ICAgICAgICA9IGYzMl9ndDsKK2V4cG9ydHMuZjMyX2dlICAgICAgICAgICAgICA9IGYzMl9nZTsK
K2V4cG9ydHMuZjY0X2VxICAgICAgICAgICAgICA9IGY2NF9lcTsKK2V4cG9ydHMuZjY0X25lICAg
ICAgICAgICAgICA9IGY2NF9uZTsKK2V4cG9ydHMuZjY0X2x0ICAgICAgICAgICAgICA9IGY2NF9s
dDsKK2V4cG9ydHMuZjY0X2xlICAgICAgICAgICAgICA9IGY2NF9sZTsKK2V4cG9ydHMuZjY0X2d0
ICAgICAgICAgICAgICA9IGY2NF9ndDsKK2V4cG9ydHMuZjY0X2dlICAgICAgICAgICAgICA9IGY2
NF9nZTsKK2V4cG9ydHMuaTMyX3dyYXBfaTY0ICAgICAgICA9IGkzMl93cmFwX2k2NDsKK2V4cG9y
dHMuaTMyX3RydW5jX3NfZjMyICAgICA9IGkzMl90cnVuY19zX2YzMjsKK2V4cG9ydHMuaTMyX3Ry
dW5jX3VfZjMyICAgICA9IGkzMl90cnVuY191X2YzMjsKK2V4cG9ydHMuaTMyX3RydW5jX3NfZjY0
ICAgICA9IGkzMl90cnVuY19zX2Y2NDsKK2V4cG9ydHMuaTMyX3RydW5jX3VfZjY0ICAgICA9IGkz
Ml90cnVuY191X2Y2NDsKK2V4cG9ydHMuaTY0X2V4dGVuZF9zX2kzMiAgICA9IGk2NF9leHRlbmRf
c19pMzI7CitleHBvcnRzLmk2NF9leHRlbmRfdV9pMzIgICAgPSBpNjRfZXh0ZW5kX3VfaTMyOwor
ZXhwb3J0cy5pNjRfdHJ1bmNfc19mMzIgICAgID0gaTY0X3RydW5jX3NfZjMyOworZXhwb3J0cy5p
NjRfdHJ1bmNfdV9mMzIgICAgID0gaTY0X3RydW5jX3VfZjMyOworZXhwb3J0cy5pNjRfdHJ1bmNf
c19mNjQgICAgID0gaTY0X3RydW5jX3NfZjY0OworZXhwb3J0cy5pNjRfdHJ1bmNfdV9mNjQgICAg
ID0gaTY0X3RydW5jX3VfZjY0OworZXhwb3J0cy5mMzJfY29udmVydF9zX2kzMiAgID0gZjMyX2Nv
bnZlcnRfc19pMzI7CitleHBvcnRzLmYzMl9jb252ZXJ0X3VfaTMyICAgPSBmMzJfY29udmVydF91
X2kzMjsKK2V4cG9ydHMuZjMyX2NvbnZlcnRfc19pNjQgICA9IGYzMl9jb252ZXJ0X3NfaTY0Owor
ZXhwb3J0cy5mMzJfY29udmVydF91X2k2NCAgID0gZjMyX2NvbnZlcnRfdV9pNjQ7CitleHBvcnRz
LmYzMl9kZW1vdGVfZjY0ICAgICAgPSBmMzJfZGVtb3RlX2Y2NDsKK2V4cG9ydHMuZjY0X2NvbnZl
cnRfc19pMzIgICA9IGY2NF9jb252ZXJ0X3NfaTMyOworZXhwb3J0cy5mNjRfY29udmVydF91X2kz
MiAgID0gZjY0X2NvbnZlcnRfdV9pMzI7CitleHBvcnRzLmY2NF9jb252ZXJ0X3NfaTY0ICAgPSBm
NjRfY29udmVydF9zX2k2NDsKK2V4cG9ydHMuZjY0X2NvbnZlcnRfdV9pNjQgICA9IGY2NF9jb252
ZXJ0X3VfaTY0OworZXhwb3J0cy5mNjRfcHJvbW90ZV9mMzIgICAgID0gZjY0X3Byb21vdGVfZjMy
OworZXhwb3J0cy5pMzJfcmVpbnRlcnByZXRfZjMyID0gaTMyX3JlaW50ZXJwcmV0X2YzMjsKK2V4
cG9ydHMuaTY0X3JlaW50ZXJwcmV0X2Y2NCA9IGk2NF9yZWludGVycHJldF9mNjQ7CitleHBvcnRz
LmYzMl9yZWludGVycHJldF9pMzIgPSBmMzJfcmVpbnRlcnByZXRfaTMyOworZXhwb3J0cy5mNjRf
cmVpbnRlcnByZXRfaTY0ID0gZjY0X3JlaW50ZXJwcmV0X2k2NDsKK2V4cG9ydHMuY3VycmVudF9t
ZW1vcnkgICAgICA9IGN1cnJlbnRfbWVtb3J5OworZXhwb3J0cy5ncm93X21lbW9yeSAgICAgICAg
ID0gZ3Jvd19tZW1vcnk7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIG9w
ZXJhdG9ycy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAg
X3JlZ2lzdHJ5WydwYXJzZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9
OworLy8vLy8vLy8gc3RhcnQgb2YgcGFyc2UuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBC
VUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBz
dHJpY3QnOworCit2YXIgQ3VycnkgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3Vy
cnkiKTsKK3ZhciBMZXhlciAgICA9IHJlcXVpcmUoIi4vbGV4ZXIiKTsKK3ZhciBMZXhpbmcgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9sZXhpbmciKTsKK3ZhciBQYXJzZXIgICA9IHJl
cXVpcmUoIi4vcGFyc2VyIik7Cit2YXIgU2NyaXB0ICAgPSByZXF1aXJlKCIuL3NjcmlwdCIpOwor
dmFyIFNvdXJjZSAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciBDYW1sX29iaiA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOworCitmdW5jdGlvbiBwYXJzZSRwcmlt
ZShuYW1lLCBsZXhidWYsIHN0YXJ0KSB7CisgIHZhciBpbml0ID0gbGV4YnVmWy8qIGxleF9jdXJy
X3AgKi8xMV07CisgIGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdID0gLyogcmVjb3JkICovWwor
ICAgIC8qIHBvc19mbmFtZSAqL25hbWUsCisgICAgLyogcG9zX2xudW0gKi9pbml0Wy8qIHBvc19s
bnVtICovMV0sCisgICAgLyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJdLAorICAgIC8q
IHBvc19jbnVtICovaW5pdFsvKiBwb3NfY251bSAqLzNdCisgIF07CisgIHRyeSB7CisgICAgcmV0
dXJuIEN1cnJ5Ll8yKHN0YXJ0LCBMZXhlci50b2tlbiwgbGV4YnVmKTsKKyAgfQorICBjYXRjaCAo
ZXhuKXsKKyAgICBpZiAoZXhuWzBdID09PSBTY3JpcHQuU3ludGF4KSB7CisgICAgICB2YXIgcmVn
aW9uID0gZXhuWzFdOworICAgICAgdmFyIHJlZ2lvbiRwcmltZSA9IENhbWxfb2JqLmNhbWxfbm90
ZXF1YWwocmVnaW9uLCBTb3VyY2Uubm9fcmVnaW9uKSA/IHJlZ2lvbiA6IC8qIHJlY29yZCAqL1sK
KyAgICAgICAgICAvKiBsZWZ0ICovTGV4ZXIuY29udmVydF9wb3MobGV4YnVmWy8qIGxleF9zdGFy
dF9wICovMTBdKSwKKyAgICAgICAgICAvKiByaWdodCAqL0xleGVyLmNvbnZlcnRfcG9zKGxleGJ1
ZlsvKiBsZXhfY3Vycl9wICovMTFdKQorICAgICAgICBdOworICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgIHJlZ2lvbiRwcmltZSwKKyAgICAgICAg
ICAgIGV4blsyXQorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cg
ZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBwYXJzZShuYW1lLCBsZXhidWYsIHBhcmFt
KSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIHBh
cnNlJHByaW1lKG5hbWUsIGxleGJ1ZiwgUGFyc2VyLm1vZHVsZTEpOworICAgIGNhc2UgMSA6IAor
ICAgICAgICByZXR1cm4gcGFyc2UkcHJpbWUobmFtZSwgbGV4YnVmLCBQYXJzZXIuc2NyaXB0KTsK
KyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuIHBhcnNlJHByaW1lKG5hbWUsIGxleGJ1Ziwg
UGFyc2VyLnNjcmlwdDEpOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIHN0cmluZ190byhzdGFy
dCwgcykgeworICB2YXIgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nKHMpOworICByZXR1cm4g
cGFyc2UoInN0cmluZyIsIGxleGJ1Ziwgc3RhcnQpOworfQorCitmdW5jdGlvbiBzdHJpbmdfdG9f
c2NyaXB0KHMpIHsKKyAgcmV0dXJuIHN0cmluZ190bygvKiBTY3JpcHQgKi8xLCBzKTsKK30KKwor
ZnVuY3Rpb24gc3RyaW5nX3RvX21vZHVsZShzKSB7CisgIHJldHVybiBzdHJpbmdfdG8oLyogTW9k
dWxlICovMCwgcyk7Cit9CisKK3ZhciBTeW50YXggPSBTY3JpcHQuU3ludGF4OworCitleHBvcnRz
LlN5bnRheCAgICAgICAgICAgPSBTeW50YXg7CitleHBvcnRzLnBhcnNlICAgICAgICAgICAgPSBw
YXJzZTsKK2V4cG9ydHMuc3RyaW5nX3RvX3NjcmlwdCA9IHN0cmluZ190b19zY3JpcHQ7CitleHBv
cnRzLnN0cmluZ190b19tb2R1bGUgPSBzdHJpbmdfdG9fbW9kdWxlOworLyogTGV4ZXIgTm90IGEg
cHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBwYXJzZS5qcyAvLy8vLy8vLworwqAgwqAg
cmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydwYXJzZXInXSA9IGZ1bmN0
aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHBhcnNl
ci5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4z
ICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBBc3QgICAgICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYXN0Iik7Cit2YXIgSTMyICAgICAgICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2kzMiIpOwordmFyIExpYiAgICAgICAgICAgICAgICAgICAgID0g
cmVxdWlyZSgiLi9saWIiKTsKK3ZhciAkJE1hcCAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUo
ImJzLXBsYXRmb3JtL2xpYi9qcy9tYXAiKTsKK3ZhciBMaXN0ICAgICAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQmxvY2sgICAgICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2siKTsKK3ZhciBDdXJy
eSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIp
OwordmFyIFNjcmlwdCAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zY3JpcHQiKTsKK3Zh
ciBTb3VyY2UgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc291cmNlIik7Cit2YXIgJCRT
dHJpbmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvc3RyaW5n
Iik7Cit2YXIgUGFyc2luZyAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvcGFyc2luZyIpOwordmFyIENhbWxfb2JqICAgICAgICAgICAgICAgID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIgT3BlcmF0b3JzICAgICAgICAgICAg
ICAgPSByZXF1aXJlKCIuL29wZXJhdG9ycyIpOwordmFyIFBlcnZhc2l2ZXMgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX2Zv
cm1hdCAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zvcm1h
dCIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIHBhcnNlX2Vycm9y
KG1zZykgeworICB2YXIgbXNnJDEgPSBtc2cgPT09ICJzeW50YXggZXJyb3IiID8gInVuZXhwZWN0
ZWQgdG9rZW4iIDogbXNnOworICB0aHJvdyBbCisgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAg
ICAgIFNvdXJjZS5ub19yZWdpb24sCisgICAgICAgIG1zZyQxCisgICAgICBdOworfQorCitmdW5j
dGlvbiBwb3NpdGlvbl90b19wb3MocG9zaXRpb24pIHsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sK
KyAgICAgICAgICAvKiBmaWxlICovcG9zaXRpb25bLyogcG9zX2ZuYW1lICovMF0sCisgICAgICAg
ICAgLyogbGluZSAqL3Bvc2l0aW9uWy8qIHBvc19sbnVtICovMV0sCisgICAgICAgICAgLyogY29s
dW1uICovcG9zaXRpb25bLyogcG9zX2NudW0gKi8zXSAtIHBvc2l0aW9uWy8qIHBvc19ib2wgKi8y
XSB8IDAKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gcG9zaXRpb25zX3RvX3JlZ2lvbihwb3Np
dGlvbjEsIHBvc2l0aW9uMikgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8q
IGxlZnQgKi9wb3NpdGlvbl90b19wb3MocG9zaXRpb24xKSwKKyAgICAgICAgICAvKiByaWdodCAq
L3Bvc2l0aW9uX3RvX3Bvcyhwb3NpdGlvbjIpCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGF0
KCkgeworICByZXR1cm4gcG9zaXRpb25zX3RvX3JlZ2lvbihQYXJzaW5nLnN5bWJvbF9zdGFydF9w
b3MoLyogKCkgKi8wKSwgUGFyc2luZy5zeW1ib2xfZW5kX3BvcygvKiAoKSAqLzApKTsKK30KKwor
ZnVuY3Rpb24gYXRpKGkpIHsKKyAgcmV0dXJuIHBvc2l0aW9uc190b19yZWdpb24oUGFyc2luZy5y
aHNfc3RhcnRfcG9zKGkpLCBQYXJzaW5nLnJoc19lbmRfcG9zKGkpKTsKK30KKworZnVuY3Rpb24g
bGl0ZXJhbChmLCBzKSB7CisgIHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKGYsIHMpOworICB9
CisgIGNhdGNoIChleG4peworICAgIGlmIChleG5bMF0gPT09IENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmZhaWx1cmUpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIFNjcmlwdC5TeW50YXgs
CisgICAgICAgICAgICBzWy8qIGF0ICovMF0sCisgICAgICAgICAgICAiY29uc3RhbnQgb3V0IG9m
IHJhbmdlIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhu
OworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBuYXQocywgYXQpIHsKKyAgdHJ5IHsKKyAgICB2
YXIgbiA9IENhbWxfZm9ybWF0LmNhbWxfaW50X29mX3N0cmluZyhzKTsKKyAgICBpZiAobiA+PSAw
KSB7CisgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBbCisg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAgICAg
IiIKKyAgICAgICAgICBdOworICAgIH0KKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhu
WzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7CisgICAgICB0aHJvdyBb
CisgICAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgICAgYXQsCisgICAgICAgICAg
ICAiaW50ZWdlciBjb25zdGFudCBvdXQgb2YgcmFuZ2UiCisgICAgICAgICAgXTsKKyAgICB9Cisg
ICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIG5h
dDMyKHMsIGF0KSB7CisgIHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKEkzMi5vZl9zdHJpbmdf
dSwgcyk7CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4blswXSA9PT0gQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuZmFpbHVyZSkgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgU2Ny
aXB0LlN5bnRheCwKKyAgICAgICAgICAgIGF0LAorICAgICAgICAgICAgImkzMiBjb25zdGFudCBv
dXQgb2YgcmFuZ2UiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJv
dyBleG47CisgICAgfQorICB9Cit9CisKK3ZhciBWYXJNYXAgPSAkJE1hcC5NYWtlKFskJFN0cmlu
Zy5jb21wYXJlXSk7CisKK2Z1bmN0aW9uIGVtcHR5X2NvbnRleHQoKSB7CisgIHJldHVybiAvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgLyogdHlwZXMgOiByZWNvcmQgKi9bCisgICAgICAgICAgICAv
KiB0bWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAgICAgICAgICAvKiB0bGlzdCA6IFtd
ICovMAorICAgICAgICAgIF0sCisgICAgICAgICAgLyogdGFibGVzIDogcmVjb3JkICovWworICAg
ICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAgICAgICAgICAvKiBj
b3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIG1lbW9yaWVzIDogcmVjb3JkICov
WworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAgICAgICAg
ICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIGZ1bmNzIDogcmVjb3Jk
ICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAgICAg
ICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIGxvY2FscyA6IHJl
Y29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdLAorICAg
ICAgICAgICAgLyogY291bnQgKi8wCisgICAgICAgICAgXSwKKyAgICAgICAgICAvKiBnbG9iYWxz
IDogcmVjb3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0s
CisgICAgICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIGxh
YmVscyAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGVu
dGVyX2Z1bmMoYykgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIHR5cGVz
ICovY1svKiB0eXBlcyAqLzBdLAorICAgICAgICAgIC8qIHRhYmxlcyAqL2NbLyogdGFibGVzICov
MV0sCisgICAgICAgICAgLyogbWVtb3JpZXMgKi9jWy8qIG1lbW9yaWVzICovMl0sCisgICAgICAg
ICAgLyogZnVuY3MgKi9jWy8qIGZ1bmNzICovM10sCisgICAgICAgICAgLyogbG9jYWxzIDogcmVj
b3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAg
ICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIGdsb2JhbHMg
Ki9jWy8qIGdsb2JhbHMgKi81XSwKKyAgICAgICAgICAvKiBsYWJlbHMgKi9WYXJNYXBbLyogZW1w
dHkgKi8wXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0eXBlXyhjLCB4KSB7CisgIHRyeSB7
CisgICAgcmV0dXJuIEN1cnJ5Ll8yKFZhck1hcFsvKiBmaW5kICovMjFdLCB4Wy8qIGl0ICovMV0s
IGNbLyogdHlwZXMgKi8wXVsvKiB0bWFwICovMF0pOworICB9CisgIGNhdGNoIChleG4peworICAg
IGlmIChleG4gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkgeworICAgICAg
dGhyb3cgWworICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgIHhbLyogYXQg
Ki8wXSwKKyAgICAgICAgICAgICJ1bmtub3duIHR5cGUgIiArIHhbLyogaXQgKi8xXQorICAgICAg
ICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQor
fQorCitmdW5jdGlvbiBsb29rdXAoY2F0ZWdvcnksIHNwYWNlLCB4KSB7CisgIHRyeSB7CisgICAg
cmV0dXJuIEN1cnJ5Ll8yKFZhck1hcFsvKiBmaW5kICovMjFdLCB4Wy8qIGl0ICovMV0sIHNwYWNl
Wy8qIG1hcCAqLzBdKTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAg
ICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICB4Wy8qIGF0ICovMF0sCisgICAgICAgICAg
ICAidW5rbm93biAiICsgKGNhdGVnb3J5ICsgKCIgIiArIHhbLyogaXQgKi8xXSkpCisgICAgICAg
ICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9
CisKK2Z1bmN0aW9uIGZ1bmMoYywgeCkgeworICByZXR1cm4gbG9va3VwKCJmdW5jdGlvbiIsIGNb
LyogZnVuY3MgKi8zXSwgeCk7Cit9CisKK2Z1bmN0aW9uIGxvY2FsKGMsIHgpIHsKKyAgcmV0dXJu
IGxvb2t1cCgibG9jYWwiLCBjWy8qIGxvY2FscyAqLzRdLCB4KTsKK30KKworZnVuY3Rpb24gZ2xv
YmFsKGMsIHgpIHsKKyAgcmV0dXJuIGxvb2t1cCgiZ2xvYmFsIiwgY1svKiBnbG9iYWxzICovNV0s
IHgpOworfQorCitmdW5jdGlvbiB0YWJsZShjLCB4KSB7CisgIHJldHVybiBsb29rdXAoInRhYmxl
IiwgY1svKiB0YWJsZXMgKi8xXSwgeCk7Cit9CisKK2Z1bmN0aW9uIG1lbW9yeShjLCB4KSB7Cisg
IHJldHVybiBsb29rdXAoIm1lbW9yeSIsIGNbLyogbWVtb3JpZXMgKi8yXSwgeCk7Cit9CisKK2Z1
bmN0aW9uIGxhYmVsKGMsIHgpIHsKKyAgdHJ5IHsKKyAgICByZXR1cm4gQ3VycnkuXzIoVmFyTWFw
Wy8qIGZpbmQgKi8yMV0sIHhbLyogaXQgKi8xXSwgY1svKiBsYWJlbHMgKi82XSk7CisgIH0KKyAg
Y2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90
X2ZvdW5kKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAg
ICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAgICAgICAgICAgInVua25vd24gbGFiZWwgIiArIHhb
LyogaXQgKi8xXQorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cg
ZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBhbm9uX3R5cGUoYywgdHkpIHsKKyAgY1sv
KiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0gPSBQZXJ2YXNpdmVzLiRhdChjWy8qIHR5cGVzICov
MF1bLyogdGxpc3QgKi8xXSwgLyogOjogKi9bCisgICAgICAgIHR5LAorICAgICAgICAvKiBbXSAq
LzAKKyAgICAgIF0pOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBiaW5kKGNh
dGVnb3J5LCBzcGFjZSwgeCkgeworICBpZiAoQ3VycnkuXzIoVmFyTWFwWy8qIG1lbSAqLzJdLCB4
Wy8qIGl0ICovMV0sIHNwYWNlWy8qIG1hcCAqLzBdKSkgeworICAgIHRocm93IFsKKyAgICAgICAg
ICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgIHhbLyogYXQgKi8wXSwKKyAgICAgICAgICAiZHVw
bGljYXRlICIgKyAoY2F0ZWdvcnkgKyAoIiAiICsgeFsvKiBpdCAqLzFdKSkKKyAgICAgICAgXTsK
KyAgfQorICBzcGFjZVsvKiBtYXAgKi8wXSA9IEN1cnJ5Ll8zKFZhck1hcFsvKiBhZGQgKi8zXSwg
eFsvKiBpdCAqLzFdLCBzcGFjZVsvKiBjb3VudCAqLzFdLCBzcGFjZVsvKiBtYXAgKi8wXSk7Cisg
IHNwYWNlWy8qIGNvdW50ICovMV0gPSBzcGFjZVsvKiBjb3VudCAqLzFdICsgMSB8IDA7CisgIGlm
IChzcGFjZVsvKiBjb3VudCAqLzFdKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgZWxzZSB7Cisg
ICAgdGhyb3cgWworICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgeFsvKiBhdCAq
LzBdLAorICAgICAgICAgICJ0b28gbWFueSAiICsgKGNhdGVnb3J5ICsgIiBiaW5kaW5ncyIpCisg
ICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gYmluZF9mdW5jKGMsIHgpIHsKKyAgcmV0dXJu
IGJpbmQoImZ1bmN0aW9uIiwgY1svKiBmdW5jcyAqLzNdLCB4KTsKK30KKworZnVuY3Rpb24gYmlu
ZF9sb2NhbChjLCB4KSB7CisgIHJldHVybiBiaW5kKCJsb2NhbCIsIGNbLyogbG9jYWxzICovNF0s
IHgpOworfQorCitmdW5jdGlvbiBiaW5kX2dsb2JhbChjLCB4KSB7CisgIHJldHVybiBiaW5kKCJn
bG9iYWwiLCBjWy8qIGdsb2JhbHMgKi81XSwgeCk7Cit9CisKK2Z1bmN0aW9uIGJpbmRfdGFibGUo
YywgeCkgeworICByZXR1cm4gYmluZCgidGFibGUiLCBjWy8qIHRhYmxlcyAqLzFdLCB4KTsKK30K
KworZnVuY3Rpb24gYmluZF9tZW1vcnkoYywgeCkgeworICByZXR1cm4gYmluZCgibWVtb3J5Iiwg
Y1svKiBtZW1vcmllcyAqLzJdLCB4KTsKK30KKworZnVuY3Rpb24gYW5vbihjYXRlZ29yeSwgc3Bh
Y2UsIG4pIHsKKyAgc3BhY2VbLyogY291bnQgKi8xXSA9IHNwYWNlWy8qIGNvdW50ICovMV0gKyBu
IHwgMDsKKyAgaWYgKEN1cnJ5Ll8yKEkzMi5sdF91LCBzcGFjZVsvKiBjb3VudCAqLzFdLCBuKSkg
eworICAgIHRocm93IFsKKyAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgIFNvdXJj
ZS5ub19yZWdpb24sCisgICAgICAgICAgInRvbyBtYW55ICIgKyAoY2F0ZWdvcnkgKyAiIGJpbmRp
bmdzIikKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQor
CitmdW5jdGlvbiBhbm9uX2Z1bmMoYykgeworICByZXR1cm4gYW5vbigiZnVuY3Rpb24iLCBjWy8q
IGZ1bmNzICovM10sIDEpOworfQorCitmdW5jdGlvbiBhbm9uX2xvY2FscyhjLCB0cykgeworICBy
ZXR1cm4gYW5vbigibG9jYWwiLCBjWy8qIGxvY2FscyAqLzRdLCBDdXJyeS5fMShMaWIuTGlzdDMy
Wy8qIGxlbmd0aCAqLzBdLCB0cykpOworfQorCitmdW5jdGlvbiBhbm9uX2dsb2JhbChjKSB7Cisg
IHJldHVybiBhbm9uKCJnbG9iYWwiLCBjWy8qIGdsb2JhbHMgKi81XSwgMSk7Cit9CisKK2Z1bmN0
aW9uIGFub25fdGFibGUoYykgeworICByZXR1cm4gYW5vbigidGFibGUiLCBjWy8qIHRhYmxlcyAq
LzFdLCAxKTsKK30KKworZnVuY3Rpb24gYW5vbl9tZW1vcnkoYykgeworICByZXR1cm4gYW5vbigi
bWVtb3J5IiwgY1svKiBtZW1vcmllcyAqLzJdLCAxKTsKK30KKworZnVuY3Rpb24gYW5vbl9sYWJl
bChjKSB7CisgIHZhciBuZXdyZWNvcmQgPSBjLnNsaWNlKCk7CisgIG5ld3JlY29yZFsvKiBsYWJl
bHMgKi82XSA9IEN1cnJ5Ll8yKFZhck1hcFsvKiBtYXAgKi8yMl0sIGZ1bmN0aW9uIChwYXJhbSkg
eworICAgICAgICByZXR1cm4gMSArIHBhcmFtIHwgMDsKKyAgICAgIH0sIGNbLyogbGFiZWxzICov
Nl0pOworICByZXR1cm4gbmV3cmVjb3JkOworfQorCit2YXIgZW1wdHlfdHlwZSA9IC8qIEZ1bmNU
eXBlICovWworICAvKiBbXSAqLzAsCisgIC8qIFtdICovMAorXTsKKworZnVuY3Rpb24gZXhwbGlj
aXRfc2lnKGMsIHZhcl9zZW0sIHR5LCBhdCkgeworICB2YXIgeCA9IEN1cnJ5Ll8yKHZhcl9zZW0s
IGMsIHR5cGVfKTsKKyAgaWYgKHhbLyogaXQgKi8xXSA8IEN1cnJ5Ll8xKExpYi5MaXN0MzJbLyog
bGVuZ3RoICovMF0sIGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKSAmJiBDYW1sX29iai5j
YW1sX25vdGVxdWFsKHR5LCBlbXB0eV90eXBlKSAmJiBDYW1sX29iai5jYW1sX25vdGVxdWFsKHR5
LCBDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBjWy8qIHR5cGVzICovMF1bLyogdGxp
c3QgKi8xXSwgeFsvKiBpdCAqLzFdKSkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgU2NyaXB0
LlN5bnRheCwKKyAgICAgICAgICBhdCwKKyAgICAgICAgICAic2lnbmF0dXJlIG1pc21hdGNoIgor
ICAgICAgICBdOworICB9CisgIHJldHVybiB4OworfQorCitmdW5jdGlvbiBpbmxpbmVfdHlwZShj
LCB0eSwgYXQpIHsKKyAgdmFyIG1hdGNoID0gQ3VycnkuXzIoTGliLkxpc3RbLyogaW5kZXhfb2Yg
Ki82XSwgdHksIGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKTsKKyAgaWYgKG1hdGNoKSB7
CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQobWF0Y2hbMF0sIGF0KTsKKyAgfQorICBlbHNlIHsK
KyAgICB2YXIgaSA9IEN1cnJ5Ll8xKExpYi5MaXN0MzJbLyogbGVuZ3RoICovMF0sIGNbLyogdHlw
ZXMgKi8wXVsvKiB0bGlzdCAqLzFdKTsKKyAgICBhbm9uX3R5cGUoYywgdHkpOworICAgIHJldHVy
biBTb3VyY2UuJGF0JGF0KGksIGF0KTsKKyAgfQorfQorCit2YXIgeXl0cmFuc2xfY29uc3QgPSAv
KiBhcnJheSAqL1sKKyAgMjYzLAorICAyNjQsCisgIDI2NSwKKyAgMjY2LAorICAyNjcsCisgIDI2
OCwKKyAgMjY5LAorICAyNzAsCisgIDI3MSwKKyAgMjcyLAorICAyNzMsCisgIDI3NCwKKyAgMjc1
LAorICAyNzYsCisgIDI3NywKKyAgMjc4LAorICAyNzksCisgIDI4MCwKKyAgMjgxLAorICAyODIs
CisgIDI4MywKKyAgMjg0LAorICAyODUsCisgIDI4NiwKKyAgMjk2LAorICAyOTcsCisgIDI5OCwK
KyAgMjk5LAorICAzMDAsCisgIDMwMSwKKyAgMzAyLAorICAzMDMsCisgIDMwNCwKKyAgMzA1LAor
ICAzMDYsCisgIDMwNywKKyAgMzA4LAorICAzMDksCisgIDMxMCwKKyAgMzExLAorICAzMTIsCisg
IDMxMywKKyAgMzE0LAorICAzMTUsCisgIDMxNiwKKyAgMzE3LAorICAzMTgsCisgIDMxOSwKKyAg
MzIwLAorICAzMjEsCisgIDMyMiwKKyAgMzIzLAorICAzMjQsCisgIDMyNSwKKyAgMzI2LAorICAz
MjcsCisgIDAsCisgIDAKK107CisKK3ZhciB5eXRyYW5zbF9ibG9jayA9IC8qIGFycmF5ICovWwor
ICAyNTcsCisgIDI1OCwKKyAgMjU5LAorICAyNjAsCisgIDI2MSwKKyAgMjYyLAorICAyODcsCisg
IDI4OCwKKyAgMjg5LAorICAyOTAsCisgIDI5MSwKKyAgMjkyLAorICAyOTMsCisgIDI5NCwKKyAg
Mjk1LAorICAzMjgsCisgIDAKK107CisKK3ZhciB5eWFjdCA9IC8qIGFycmF5ICovWworICBmdW5j
dGlvbiAoKSB7CisgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoInBhcnNlciIpOworICB9
LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICIiOworICB9LAorICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAwKTsKKyAgICByZXR1cm4gXzEgKyBfMjsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgewor
ICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEp
OworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwor
ICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIF8xLAorICAgICAgICAgICAgXzIKKyAg
ICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIC8qIEZ1bmNSZWZU
eXBlICovMDsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJu
IC8qIEdsb2JhbFR5cGUgKi9bCisgICAgICAgICAgICBfMSwKKyAgICAgICAgICAgIC8qIEltbXV0
YWJsZSAqLzAKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICByZXR1cm4gLyogR2xvYmFsVHlwZSAqL1sKKyAgICAgICAgICAgIF8zLAorICAgICAg
ICAgICAgLyogTXV0YWJsZSAqLzEKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gLyogRnVuY1R5
cGUgKi9bCisgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIg
XzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICB2YXIgaW5z
ID0gXzVbMF07CisgICAgaWYgKGlucyAhPT0gLyogW10gKi8wKSB7CisgICAgICB2YXIgYXQkMSA9
IGF0KC8qICgpICovMCk7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBTY3JpcHQuU3ludGF4
LAorICAgICAgICAgICAgYXQkMSwKKyAgICAgICAgICAgICJyZXN1bHQgYmVmb3JlIHBhcmFtZXRl
ciIKKyAgICAgICAgICBdOworICAgIH0KKyAgICByZXR1cm4gLyogRnVuY1R5cGUgKi9bCisgICAg
ICAgICAgICBpbnMsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChfMywgXzVbMV0pCisgICAg
ICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIC8q
IEZ1bmNUeXBlICovWworICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoXzMsIF81WzBdKSwKKyAg
ICAgICAgICAgIF81WzFdCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7
CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Cisg
ICAgdmFyIF82ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
cmV0dXJuIC8qIEZ1bmNUeXBlICovWworICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgIF80LAorICAgICAgICAgICAgICBfNlswXQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
IF82WzFdCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgcmV0dXJuIC8qIFRhYmxlVHlwZSAqL1sKKyAgICAgICAgICAgIF8xLAorICAgICAgICAgICAg
XzIKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsK
KyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAg
ICByZXR1cm4gLyogTWVtb3J5VHlwZSAqL1tfMV07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDApOworICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAvKiBtaW4g
Ki9uYXQzMihfMSwgYXRpKDEpKSwKKyAgICAgICAgICAgIC8qIG1heCA6IE5vbmUgKi8wCisgICAg
ICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8y
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1pbiAqL25hdDMyKF8xLCBhdGkoMSkpLAorICAg
ICAgICAgICAgLyogbWF4IDogU29tZSAqL1tuYXQzMihfMiwgYXRpKDIpKV0KKyAgICAgICAgICBd
OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgIH0sCisgIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KF8xLCBhdCgvKiAoKSAq
LzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8x
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIFNv
dXJjZS4kYXQkYXQoXzEsIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAwKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdChfMSwgYXQoLyogKCkgKi8wKSk7
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBhdCQxID0gYXQo
LyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKF8sIF8kMSkgeworICAgICAgcmV0dXJu
IFNvdXJjZS4kYXQkYXQobmF0MzIoXzEsIGF0JDEpLCBhdCQxKTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBsb29rdXApIHsKKyAgICAgIHJldHVybiBTb3VyY2Uu
JGF0JGF0KEN1cnJ5Ll8yKGxvb2t1cCwgYywgU291cmNlLiRhdCRhdChfMSwgYXQkMSkpLCBhdCQx
KTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChf
LCBfJDEpIHsKKyAgICAgIHJldHVybiAvKiBbXSAqLzA7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBsb29rdXApIHsKKyAg
ICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzIoXzEsIGMsIGxvb2t1
cCksCisgICAgICAgICAgICAgIEN1cnJ5Ll8yKF8yLCBjLCBsb29rdXApCisgICAgICAgICAgICBd
OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMs
IGFub24sIF8pIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShhbm9uLCBjKTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMs
IF8sIGJpbmQpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihiaW5kLCBjLCBfMSk7CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIFNvdXJjZS4k
YXQkYXQoXzEsIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0
dXJuIGZ1bmN0aW9uIChjLCB4cykgeworICAgICAgTGlzdC5pdGVyKGZ1bmN0aW9uICh4KSB7Cisg
ICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAg
ICAgICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAgICAgICAgICAgICAgICAgIm1pc21hdGNo
aW5nIGxhYmVsIgorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfSwgeHMpOworICAgICAg
cmV0dXJuIGFub25fbGFiZWwoYyk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCB4cykgeworICAgICAgTGlzdC5pdGVy
KGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICBpZiAoeFsvKiBpdCAqLzFdICE9PSBfMVsvKiBp
dCAqLzFdKSB7CisgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgU2Ny
aXB0LlN5bnRheCwKKyAgICAgICAgICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAgICAgICAg
ICAgICAgICAgICAibWlzbWF0Y2hpbmcgbGFiZWwiCisgICAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHhzKTsKKyAgICAgIHZhciBjJDEgPSBjOworICAg
ICAgdmFyIHggPSBfMTsKKyAgICAgIHZhciBuZXdyZWNvcmQgPSBjJDEuc2xpY2UoKTsKKyAgICAg
IG5ld3JlY29yZFsvKiBsYWJlbHMgKi82XSA9IEN1cnJ5Ll8zKFZhck1hcFsvKiBhZGQgKi8zXSwg
eFsvKiBpdCAqLzFdLCAwLCBDdXJyeS5fMihWYXJNYXBbLyogbWFwICovMjJdLCBmdW5jdGlvbiAo
cGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMSArIHBhcmFtIHwgMDsKKyAgICAgICAg
ICAgICAgfSwgYyQxWy8qIGxhYmVscyAqLzZdKSk7CisgICAgICByZXR1cm4gbmV3cmVjb3JkOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gLyogOjogKi9bCisg
ICAgICAgICAgICBfMSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgIH0s
CisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gMDsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMCk7CisgICAgcmV0dXJuIG5hdDMyKF8xLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwK
KyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAvKiBOb25lICovMDsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIG4gPSBuYXQoXzEsIGF0KC8qICgpICovMCkp
OworICAgIGlmICghQ3VycnkuXzEoTGliLkludFsvKiBpc19wb3dlcl9vZl90d28gKi8xXSwgbikp
IHsKKyAgICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICBhdCQxLAorICAgICAgICAgICAgImFs
aWdubWVudCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIgorICAgICAgICAgIF07CisgICAgfQorICAg
IHJldHVybiAvKiBTb21lICovW0N1cnJ5Ll8xKExpYi5JbnRbLyogbG9nMiAqLzBdLCBuKV07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBhdCQxID0gYXQoLyog
KCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgU291cmNlLiRhdCRhdChDdXJyeS5fMShfMSwgYyksIGF0JDEpLAor
ICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzAp
OworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIC8qIDo6ICovWworICAg
ICAgICAgICAgICBTb3VyY2UuJGF0JGF0KEN1cnJ5Ll8xKF8xLCBjKSwgYXQkMSksCisgICAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMCk7CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKCkgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy51bnJlYWNoYWJsZTsKKyAgICB9Owor
ICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJl
dHVybiBPcGVyYXRvcnMubm9wOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5icihDdXJyeS5fMihfMiwgYywgbGFiZWwpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVy
biBPcGVyYXRvcnMuYnJfaWYoQ3VycnkuXzIoXzIsIGMsIGxhYmVsKSk7CisgICAgfTsKKyAgfSwK
KyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Cisg
ICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShMaWIuTGlzdFsvKiBzcGxpdF9sYXN0ICovNV0sIC8q
IDo6ICovWworICAgICAgICAgICAgQ3VycnkuXzIoXzIsIGMsIGxhYmVsKSwKKyAgICAgICAgICAg
IEN1cnJ5Ll8yKF8zLCBjLCBsYWJlbCkKKyAgICAgICAgICBdKTsKKyAgICAgIHJldHVybiBPcGVy
YXRvcnMuYnJfdGFibGUobWF0Y2hbMF0sIG1hdGNoWzFdKTsKKyAgICB9OworICB9LAorICBmdW5j
dGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBPcGVyYXRv
cnMuJCRyZXR1cm47CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gT3BlcmF0b3JzLmNhbGwo
Q3VycnkuXzIoXzIsIGMsIGZ1bmMpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBPcGVy
YXRvcnMuY2FsbF9pbmRpcmVjdChDdXJyeS5fMihfMiwgYywgdHlwZV8pKTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVy
biBPcGVyYXRvcnMuZHJvcDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuc2VsZWN0OworICAgIH07
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfbG9jYWwoQ3VycnkuXzIoXzIsIGMs
IGxvY2FsKSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gT3BlcmF0b3JzLnNldF9sb2Nh
bChDdXJyeS5fMihfMiwgYywgbG9jYWwpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBP
cGVyYXRvcnMudGVlX2xvY2FsKEN1cnJ5Ll8yKF8yLCBjLCBsb2NhbCkpOworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykg
eworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfZ2xvYmFsKEN1cnJ5Ll8yKF8yLCBjLCBnbG9i
YWwpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAg
ICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuc2V0X2dsb2JhbChD
dXJyeS5fMihfMiwgYywgZ2xvYmFsKSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMik7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMSk7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihf
MSwgXzMsIF8yKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsK
KyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAg
ICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8yKF8xLCBfMywgXzIpOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgewor
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5jdXJyZW50X21lbW9yeTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBPcGVy
YXRvcnMuZ3Jvd19tZW1vcnk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBsaXRlcmFsKF8xLCBf
MilbMF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
cmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBfMTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAg
ICAgcmV0dXJuIF8xOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDAp
OworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gXzE7CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgp
IHsKKyAgICAgIHJldHVybiBfMTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIF8xOworICAg
IH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfMyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAo
YykgeworICAgICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgXzUpOworICAgICAgdmFy
IG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJpbWUpOworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5i
bG9jayhtYXRjaFswXSwgbWF0Y2hbMV0pOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDMpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGMkcHJpbWUgPSBD
dXJyeS5fMihfMiwgYywgXzUpOworICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJp
bWUpOworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5sb29wKG1hdGNoWzBdLCBtYXRjaFsxXSk7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8y
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF8zID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9u
IChjKSB7CisgICAgICB2YXIgYyRwcmltZSA9IEN1cnJ5Ll8yKF8yLCBjLCBfNSk7CisgICAgICB2
YXIgbWF0Y2ggPSBDdXJyeS5fMShfMywgYyRwcmltZSk7CisgICAgICByZXR1cm4gT3BlcmF0b3Jz
LmlmXyhtYXRjaFswXSwgbWF0Y2hbMV0sIC8qIFtdICovMCk7CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgNik7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF82ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMik7CisgICAgdmFyIF84ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgYyRwcmlt
ZSA9IEN1cnJ5Ll8yKF8yLCBjLCBQZXJ2YXNpdmVzLiRhdChfNSwgXzgpKTsKKyAgICAgIHZhciBt
YXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuaWZf
KG1hdGNoWzBdLCBtYXRjaFsxXSwgQ3VycnkuXzEoXzYsIGMkcHJpbWUpKTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
KyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgXzEsCisgICAgICAgICAg
ICAgIEN1cnJ5Ll8xKF8yLCBjKQorICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBmdW5j
dGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMiwg
Yyk7CisgICAgICByZXR1cm4gUGVydmFzaXZlcy4kYXQobWF0Y2hbMF0sIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgU291cmNlLiRhdCRhdChtYXRjaFsxXSwgYXQkMSksCisgICAgICAgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICBdKTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAg
IHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzIsIGMpWzFdLAor
ICAgICAgICAgICAgICBDdXJyeS5fMShfMSwgYykKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8zID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7
CisgICAgICB2YXIgYyRwcmltZSA9IEN1cnJ5Ll8yKF8yLCBjLCAvKiBbXSAqLzApOworICAgICAg
dmFyIG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJpbWUpOworICAgICAgcmV0dXJuIC8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAgIE9wZXJhdG9ycy5i
bG9jayhtYXRjaFswXSwgbWF0Y2hbMV0pCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisg
IGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAg
ICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgLyogW10gKi8wKTsKKyAgICAgIHZhciBt
YXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
KyAgICAgICAgICAgICAgLyogW10gKi8wLAorICAgICAgICAgICAgICBPcGVyYXRvcnMubG9vcCht
YXRjaFswXSwgbWF0Y2hbMV0pCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGMk
cHJpbWUgPSBDdXJyeS5fMihfMiwgYywgLyogW10gKi8wKTsKKyAgICAgIHZhciBtYXRjaCA9IEN1
cnJ5Ll8yKF80LCBjLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgIE9wZXJhdG9ycy5pZl8oXzMsIG1hdGNo
WzFdLCBtYXRjaFsyXSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF83ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBjJHByaW1lKSB7CisgICAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIFtdICovMCwKKyAgICAgICAg
ICAgICAgQ3VycnkuXzEoXzMsIGMkcHJpbWUpLAorICAgICAgICAgICAgICBDdXJyeS5fMShfNywg
YyRwcmltZSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBjJHByaW1lKSB7CisgICAgICBy
ZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIFtdICovMCwKKyAgICAgICAgICAg
ICAgQ3VycnkuXzEoXzMsIGMkcHJpbWUpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgOCk7Cisg
ICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAg
dmFyIF84ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0
dXJuIGZ1bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzQs
IGMkcHJpbWUpLAorICAgICAgICAgICAgICBDdXJyeS5fMShfOCwgYyRwcmltZSkKKyAgICAgICAg
ICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNCk7CisgICAg
dmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0
dXJuIGZ1bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzQs
IGMkcHJpbWUpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAg
fTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF8yID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8zID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChj
LCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIEN1
cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzIsIGMkcHJpbWUpLAorICAg
ICAgICAgICAgICBDdXJyeS5fMShfMywgYyRwcmltZSkKKyAgICAgICAgICAgIF07CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChj
LCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIEN1
cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzIsIGMkcHJpbWUpLAorICAg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKCkgeworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gLyogW10g
Ki8wOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZh
ciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVy
biBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuJGF0KEN1cnJ5Ll8xKF8x
LCBjKSwgQ3VycnkuXzEoXzIsIGMpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgMCwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAg
IH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgdmFyIGVzMSA9IEN1cnJ5Ll8xKF8xLCBjKTsKKyAgICAgIHZhciBtYXRj
aCA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICAgbWF0Y2hbMF0gKyAxIHwgMCwKKyAgICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoZXMx
LCBtYXRjaFsxXSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9f
Y2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMCk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVy
biBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzEs
IGMpLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBtYXRjaCA9IF81WzBdOwor
ICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIC8qIEZ1bmNUeXBlICovWworICAg
ICAgICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoXzMsIG1h
dGNoWzFdKQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIChjKSB7CisgICAg
ICAgICAgICAgIHJldHVybiBDdXJyeS5fMShfNVsxXSwgYyk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIG1hdGNo
ID0gXzVbMF07CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgLyogRnVuY1R5
cGUgKi9bCisgICAgICAgICAgICAgIFBlcnZhc2l2ZXMuJGF0KF8zLCBtYXRjaFswXSksCisgICAg
ICAgICAgICAgIG1hdGNoWzFdCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgZnVuY3Rpb24g
KGMpIHsKKyAgICAgICAgICAgICAgYW5vbl9sb2NhbHMoYywgXzMpOworICAgICAgICAgICAgICBy
ZXR1cm4gQ3VycnkuXzEoXzVbMV0sIGMpOworICAgICAgICAgICAgfQorICAgICAgICAgIF07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBtYXRjaCA9IF82WzBdOworICAg
IHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIC8qIEZ1bmNUeXBlICovWworICAgICAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBfNCwKKyAgICAgICAgICAgICAgICBt
YXRjaFswXQorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICBtYXRjaFsxXQorICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIChjKSB7CisgICAgICAgICAgICAgIGJpbmRf
bG9jYWwoYywgXzMpOworICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoXzZbMV0sIGMpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIGVtcHR5X3R5cGUs
CisgICAgICAgICAgICBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICB2YXIgYyRwcmltZSA9
IGFub25fbGFiZWwoYyk7CisgICAgICAgICAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgLyogZnR5cGUgKi9Tb3VyY2UuJGF0JGF0KC0xLCBhdCgvKiAoKSAq
LzApKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgOiBbXSAqLzAsCisgICAgICAg
ICAgICAgICAgICAgICAgLyogYm9keSAqL0N1cnJ5Ll8xKF8xLCBjJHByaW1lKQorICAgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
IF81WzBdLAorICAgICAgICAgICAgZnVuY3Rpb24gKGMpIHsKKyAgICAgICAgICAgICAgYW5vbl9s
b2NhbHMoYywgXzMpOworICAgICAgICAgICAgICB2YXIgZiA9IEN1cnJ5Ll8xKF81WzFdLCBjKTsK
KyAgICAgICAgICAgICAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAvKiBmdHlwZSAqL2ZbLyogZnR5cGUgKi8wXSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBs
b2NhbHMgKi9QZXJ2YXNpdmVzLiRhdChfMywgZlsvKiBsb2NhbHMgKi8xXSksCisgICAgICAgICAg
ICAgICAgICAgICAgLyogYm9keSAqL2ZbLyogYm9keSAqLzJdCisgICAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgICB9CisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMik7CisgICAgdmFyIF82ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgXzZbMF0sCisgICAg
ICAgICAgICBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICBiaW5kX2xvY2FsKGMsIF8zKTsK
KyAgICAgICAgICAgICAgdmFyIGYgPSBDdXJyeS5fMShfNlsxXSwgYyk7CisgICAgICAgICAgICAg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgLyogZnR5cGUgKi9m
Wy8qIGZ0eXBlICovMF0sCisgICAgICAgICAgICAgICAgICAgICAgLyogbG9jYWxzIDogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgICAgICBfNCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZb
LyogbG9jYWxzICovMV0KKyAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAgIC8qIGJvZHkgKi9mWy8qIGJvZHkgKi8yXQorICAgICAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDQpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDMpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIp
OworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwor
ICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
KyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX2Z1bmMsIGJpbmRfZnVuYyk7CisgICAgICB2YXIg
dCA9IGV4cGxpY2l0X3NpZyhjLCBfNSwgXzZbMF0sIGF0JDEpOworICAgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFy
IGluaXQgPSBDdXJyeS5fMShfNlsxXSwgZW50ZXJfZnVuYyhjKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIGZ0eXBlICovdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2Nh
bHMgKi9pbml0Wy8qIGxvY2FscyAqLzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IGJvZHkgKi9pbml0Wy8qIGJvZHkgKi8yXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBh
dCQxKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgQ3VycnkuXzMoXzQsIC8qIEZ1
bmNFeHBvcnQgKi8wLCBjWy8qIGZ1bmNzICovM11bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAg
ICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAg
dmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFy
IF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0
JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3Vy
cnkuXzMoXzMsIGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHZhciB0ID0gZXhwbGlj
aXRfc2lnKGMsIF80LCBfNVswXSwgYXQkMSk7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgaW5pdCA9IEN1
cnJ5Ll8xKF81WzFdLCBlbnRlcl9mdW5jKGMpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU291
cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
ZnR5cGUgKi90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxvY2FscyAqL2luaXRb
LyogbG9jYWxzICovMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYm9keSAqL2lu
aXRbLyogYm9keSAqLzJdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8z
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgv
KiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMs
IGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHZhciB0ID0gaW5saW5lX3R5cGUoYywg
XzVbMF0sIGF0JDEpOworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGluaXQgPSBDdXJyeS5fMShfNVsxXSwg
ZW50ZXJfZnVuYyhjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZ0eXBlICovdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2FscyAqLzFd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9pbml0Wy8qIGJvZHkgKi8y
XQorICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgQ3VycnkuXzMoXzQsIC8qIEZ1bmNFeHBvcnQgKi8wLCBjWy8qIGZ1bmNz
ICovM11bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOwor
ICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZnVu
YywgYmluZF9mdW5jKTsKKyAgICAgIHZhciB0ID0gaW5saW5lX3R5cGUoYywgXzRbMF0sIGF0JDEp
OworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgdmFyIGluaXQgPSBDdXJyeS5fMShfNFsxXSwgZW50ZXJfZnVuYyhj
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZ0eXBlICovdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2FscyAqLzFdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9pbml0Wy8qIGJvZHkgKi8yXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgeworICAgIHJldHVybiBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
dmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAg
ICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzEsIGMpLCBhdCQxKTsKKyAgICB9Owor
ICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICov
MCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gU291cmNlLiRhdCRh
dCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBpbmRleCAqL0N1cnJ5Ll8yKF8z
LCBjLCB0YWJsZSksCisgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9DdXJyeS5fMShfNCwg
YyksCisgICAgICAgICAgICAgICAgICAvKiBpbml0ICovQ3VycnkuXzIoXzUsIGMsIGZ1bmMpCisg
ICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5j
dGlvbiAoYykgeworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAg
ICAgICAgICAgICAgICAgLyogaW5kZXggKi9Tb3VyY2UuJGF0JGF0KDAsIGF0JDEpLAorICAgICAg
ICAgICAgICAgICAgLyogb2Zmc2V0ICovQ3VycnkuXzEoXzMsIGMpLAorICAgICAgICAgICAgICAg
ICAgLyogaW5pdCAqL0N1cnJ5Ll8yKF80LCBjLCBmdW5jKQorICAgICAgICAgICAgICAgIF0sIGF0
JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZh
ciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBf
NSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQx
ID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5
Ll8zKF8zLCBjLCBhbm9uX3RhYmxlLCBiaW5kX3RhYmxlKTsKKyAgICAgIHJldHVybiBmdW5jdGlv
biAoKSB7CisgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICBTb3Vy
Y2UuJGF0JGF0KC8qIHJlY29yZCAqL1svKiB0dHlwZSAqL181XSwgYXQkMSksCisgICAgICAgICAg
ICAgICAgLyogW10gKi8wLAorICAgICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBUYWJsZUV4
cG9ydCAqLzEsIGNbLyogdGFibGVzICovMV1bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAgICAg
ICAgXTsKKyAgICAgIH07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJf
ZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
Nyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNik7
CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7Cisg
ICAgdmFyIF84ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAg
dmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAg
ICAgdmFyIGkgPSBjWy8qIHRhYmxlcyAqLzFdWy8qIGNvdW50ICovMV07CisgICAgICBDdXJyeS5f
MyhfMywgYywgYW5vbl90YWJsZSwgYmluZF90YWJsZSk7CisgICAgICByZXR1cm4gZnVuY3Rpb24g
KCkgeworICAgICAgICB2YXIgaW5pdCA9IEN1cnJ5Ll8yKF84LCBjLCBmdW5jKTsKKyAgICAgICAg
dmFyIHNpemUgPSBMaXN0Lmxlbmd0aChpbml0KTsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICov
WworICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWy8qIHR0eXBlIDog
VGFibGVUeXBlICovWworICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVjb3JkICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBtaW4gKi9zaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBtYXggOiBTb21lICovW3NpemVdCisgICAgICAgICAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgXzUKKyAgICAgICAgICAgICAgICAgICAgICBdXSwg
YXQkMSksCisgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBTb3Vy
Y2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4
ICovU291cmNlLiRhdCRhdChpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9m
ZnNldCAqL1NvdXJjZS4kYXQkYXQoLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTb3VyY2UuJGF0JGF0KE9wZXJhdG9ycy5pMzJfY29uc3QoU291cmNlLiRhdCRhdCgwLCBh
dCQxKSksIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBpbml0ICovaW5pdAorICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpLAorICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICBDdXJyeS5fMyhfNCwgLyogVGFibGVFeHBvcnQgKi8xLCBjWy8qIHRhYmxlcyAqLzFdWy8q
IGNvdW50ICovMV0sIGMpCisgICAgICAgICAgICAgIF07CisgICAgICB9OworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsK
KyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIGluZGV4ICovQ3VycnkuXzIoXzMsIGMs
IG1lbW9yeSksCisgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9DdXJyeS5fMShfNCwgYyks
CisgICAgICAgICAgICAgICAgICAvKiBpbml0ICovXzUKKyAgICAgICAgICAgICAgICBdLCBhdCQx
KTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIg
XzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQk
MSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1
cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBpbmRl
eCAqL1NvdXJjZS4kYXQkYXQoMCwgYXQkMSksCisgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQg
Ki9DdXJyeS5fMShfMywgYyksCisgICAgICAgICAgICAgICAgICAvKiBpbml0ICovXzQKKyAgICAg
ICAgICAgICAgICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChj
KSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9tZW1vcnksIGJpbmRfbWVtb3J5KTsKKyAg
ICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgU291cmNlLiRhdCRhdCgvKiBy
ZWNvcmQgKi9bLyogbXR5cGUgKi9fNV0sIGF0JDEpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAs
CisgICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBNZW1vcnlFeHBvcnQgKi8yLCBjWy8qIG1l
bW9yaWVzICovMl1bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNik7CisgICAgdmFyIF80ID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF83ID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzAp
OworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGkgPSBjWy8qIG1lbW9yaWVz
ICovMl1bLyogY291bnQgKi8xXTsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX21lbW9yeSwg
YmluZF9tZW1vcnkpOworICAgICAgdmFyIHNpemUgPSAoXzcubGVuZ3RoICsgNjU1MzUgfCAwKSAv
IDY1NTM2IHwgMDsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgU291
cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bLyogbXR5cGUgOiBNZW1vcnlUeXBlICovWy8qIHJlY29y
ZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbiAqL3NpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBtYXggOiBTb21lICovW3NpemVdCisgICAgICAgICAgICAgICAgICAg
ICAgXV1dLCBhdCQxKSwKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
U291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgLyogaW5k
ZXggKi9Tb3VyY2UuJGF0JGF0KGksIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAgIC8qIG9m
ZnNldCAqL1NvdXJjZS4kYXQkYXQoLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU291cmNlLiRhdCRhdChPcGVyYXRvcnMuaTMyX2NvbnN0KFNvdXJjZS4kYXQkYXQoMCwgYXQk
MSkpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSksCisgICAgICAgICAgICAgICAgICAgICAgLyog
aW5pdCAqL183CisgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpLAorICAgICAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICBDdXJyeS5fMyhfNCwg
LyogTWVtb3J5RXhwb3J0ICovMiwgY1svKiBtZW1vcmllcyAqLzJdWy8qIGNvdW50ICovMV0sIGMp
CisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDUpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIp
OworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMp
IHsKKyAgICAgIHZhciBpID0gY1svKiBtZW1vcmllcyAqLzJdWy8qIGNvdW50ICovMV07CisgICAg
ICBDdXJyeS5fMyhfMywgYywgYW5vbl9tZW1vcnksIGJpbmRfbWVtb3J5KTsKKyAgICAgIHZhciBz
aXplID0gKF82Lmxlbmd0aCArIDY1NTM1IHwgMCkgLyA2NTUzNiB8IDA7CisgICAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWy8q
IG10eXBlIDogTWVtb3J5VHlwZSAqL1svKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBtaW4gKi9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogbWF4IDogU29t
ZSAqL1tzaXplXQorICAgICAgICAgICAgICAgICAgICAgIF1dXSwgYXQkMSksCisgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICov
WworICAgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4ICovU291cmNlLiRhdCRhdChpLCBhdCQx
KSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9Tb3VyY2UuJGF0JGF0KC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoT3BlcmF0b3Jz
LmkzMl9jb25zdChTb3VyY2UuJGF0JGF0KDAsIGF0JDEpKSwgYXQkMSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGF0
JDEpLAorICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXQgKi9fNgorICAgICAgICAgICAgICAg
ICAgICBdLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDQpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX2dsb2Jh
bCwgYmluZF9nbG9iYWwpOworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGd0eXBlICovXzUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmFsdWUgKi9DdXJyeS5fMShfNiwgYykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBHbG9iYWxFeHBvcnQgKi8zLCBjWy8qIGdsb2JhbHMg
Ki81XVsvKiBjb3VudCAqLzFdLCBjKQorICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAg
cmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9nbG9iYWws
IGJpbmRfZ2xvYmFsKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBndHlwZSAqL180LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZhbHVlICovQ3VycnkuXzEoXzUsIGMpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJy
eS5fMyhfMywgYywgYW5vbl9mdW5jLCBiaW5kX2Z1bmMpOworICAgICAgcmV0dXJuIC8qIEZ1bmNJ
bXBvcnQgKi9CbG9jay5fXygwLCBbQ3VycnkuXzIoXzQsIGMsIHR5cGVfKV0pOworICAgIH07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdDQgPSBhdGkoNCk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9mdW5j
LCBiaW5kX2Z1bmMpOworICAgICAgcmV0dXJuIC8qIEZ1bmNJbXBvcnQgKi9CbG9jay5fXygwLCBb
aW5saW5lX3R5cGUoYywgXzQsIGF0NCldKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAxKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8z
LCBjLCBhbm9uX3RhYmxlLCBiaW5kX3RhYmxlKTsKKyAgICAgIHJldHVybiAvKiBUYWJsZUltcG9y
dCAqL0Jsb2NrLl9fKDEsIFtfNF0pOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMs
IGFub25fbWVtb3J5LCBiaW5kX21lbW9yeSk7CisgICAgICByZXR1cm4gLyogTWVtb3J5SW1wb3J0
ICovQmxvY2suX18oMiwgW180XSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywg
YW5vbl9nbG9iYWwsIGJpbmRfZ2xvYmFsKTsKKyAgICAgIHJldHVybiAvKiBHbG9iYWxJbXBvcnQg
Ki9CbG9jay5fXygzLCBbXzRdKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgdmFyIGF0NSA9IGF0aSg1KTsK
KyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIG1vZHVsZV9uYW1lICovXzMsCisgICAg
ICAgICAgICAgICAgICAvKiBpdGVtX25hbWUgKi9fNCwKKyAgICAgICAgICAgICAgICAgIC8qIGlr
aW5kICovU291cmNlLiRhdCRhdChDdXJyeS5fMShfNSwgYyksIGF0NSkKKyAgICAgICAgICAgICAg
ICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsK
KyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAg
ICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2
YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAg
ICBDdXJyeS5fMyhfMywgYywgYW5vbl9mdW5jLCBiaW5kX2Z1bmMpOworICAgICAgcmV0dXJuIFNv
dXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgLyogbW9kdWxlX25h
bWUgKi9fNFswXSwKKyAgICAgICAgICAgICAgICAgIC8qIGl0ZW1fbmFtZSAqL180WzFdLAorICAg
ICAgICAgICAgICAgICAgLyogaWtpbmQgKi9Tb3VyY2UuJGF0JGF0KC8qIEZ1bmNJbXBvcnQgKi9C
bG9jay5fXygwLCBbQ3VycnkuXzIoXzUsIGMsIHR5cGVfKV0pLCBhdCQxKQorICAgICAgICAgICAg
ICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMp
OworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwor
ICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAg
IHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICB2YXIgYXQ1ID0gYXRpKDUpOworICAgIHJl
dHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZnVuYywgYmlu
ZF9mdW5jKTsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAg
ICAgICAgICAgICAgIC8qIG1vZHVsZV9uYW1lICovXzRbMF0sCisgICAgICAgICAgICAgICAgICAv
KiBpdGVtX25hbWUgKi9fNFsxXSwKKyAgICAgICAgICAgICAgICAgIC8qIGlraW5kICovU291cmNl
LiRhdCRhdCgvKiBGdW5jSW1wb3J0ICovQmxvY2suX18oMCwgW2lubGluZV90eXBlKGMsIF81LCBh
dDUpXSksIGF0JDEpCisgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAg
IHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fdGFibGUs
IGJpbmRfdGFibGUpOworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWwor
ICAgICAgICAgICAgICAgICAgLyogbW9kdWxlX25hbWUgKi9fNFswXSwKKyAgICAgICAgICAgICAg
ICAgIC8qIGl0ZW1fbmFtZSAqL180WzFdLAorICAgICAgICAgICAgICAgICAgLyogaWtpbmQgKi9T
b3VyY2UuJGF0JGF0KC8qIFRhYmxlSW1wb3J0ICovQmxvY2suX18oMSwgW181XSksIGF0JDEpCisg
ICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fbWVtb3J5LCBiaW5kX21lbW9yeSk7
CisgICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAg
ICAgICAvKiBtb2R1bGVfbmFtZSAqL180WzBdLAorICAgICAgICAgICAgICAgICAgLyogaXRlbV9u
YW1lICovXzRbMV0sCisgICAgICAgICAgICAgICAgICAvKiBpa2luZCAqL1NvdXJjZS4kYXQkYXQo
LyogTWVtb3J5SW1wb3J0ICovQmxvY2suX18oMiwgW181XSksIGF0JDEpCisgICAgICAgICAgICAg
ICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7
CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Cisg
ICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAg
dmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAg
ICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZ2xvYmFsLCBiaW5kX2dsb2JhbCk7CisgICAgICByZXR1
cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBtb2R1
bGVfbmFtZSAqL180WzBdLAorICAgICAgICAgICAgICAgICAgLyogaXRlbV9uYW1lICovXzRbMV0s
CisgICAgICAgICAgICAgICAgICAvKiBpa2luZCAqL1NvdXJjZS4kYXQkYXQoLyogR2xvYmFsSW1w
b3J0ICovQmxvY2suX18oMywgW181XSksIGF0JDEpCisgICAgICAgICAgICAgICAgXSwgYXQkMSk7
CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIC8q
IHR1cGxlICovWworICAgICAgICAgICAgXzMsCisgICAgICAgICAgICBfNAorICAgICAgICAgIF07
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAvKiBGdW5j
RXhwb3J0ICovMCwKKyAgICAgICAgICAgICAgQ3VycnkuXzIoXzMsIGMsIGZ1bmMpCisgICAgICAg
ICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAg
IHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAg
ICAgICAgICAvKiBUYWJsZUV4cG9ydCAqLzEsCisgICAgICAgICAgICAgIEN1cnJ5Ll8yKF8zLCBj
LCB0YWJsZSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIE1lbW9yeUV4cG9ydCAqLzIsCisgICAgICAgICAg
ICAgIEN1cnJ5Ll8yKF8zLCBjLCBtZW1vcnkpCisgICAgICAgICAgICBdOworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykg
eworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAvKiBHbG9iYWxFeHBv
cnQgKi8zLAorICAgICAgICAgICAgICBDdXJyeS5fMihfMywgYywgZ2xvYmFsKQorICAgICAgICAg
ICAgXTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAg
ICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2
YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIg
YXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgdmFyIGF0NCA9IGF0aSg0KTsKKyAgICByZXR1cm4g
ZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF80LCBjKTsKKyAgICAg
IHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8q
IG5hbWUgKi9fMywKKyAgICAgICAgICAgICAgICAgIC8qIGVraW5kICovU291cmNlLiRhdCRhdCht
YXRjaFswXSwgYXQ0KSwKKyAgICAgICAgICAgICAgICAgIC8qIGl0ZW0gKi9tYXRjaFsxXQorICAg
ICAgICAgICAgICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKF8sIF8kMSwgXyQyKSB7CisgICAgICByZXR1cm4gLyogW10gKi8w
OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHJl
dHVybiBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOwor
ICAgIHJldHVybiBmdW5jdGlvbiAoaywgY291bnQsIF8pIHsKKyAgICAgIHJldHVybiAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIG5hbWUgKi9fMywKKyAgICAgICAgICAgICAgICAgICAgLyogZWtpbmQgKi9T
b3VyY2UuJGF0JGF0KGssIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAvKiBpdGVtICovU291
cmNlLiRhdCRhdChjb3VudCAtIDEgfCAwLCBhdCQxKQorICAgICAgICAgICAgICAgICAgXSwgYXQk
MSksCisgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgXTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMp
IHsKKyAgICAgIHJldHVybiBhbm9uX3R5cGUoYywgXzMpOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFy
IGMkMSA9IGM7CisgICAgICB2YXIgeCA9IF8zOworICAgICAgdmFyIHR5ID0gXzQ7CisgICAgICBp
ZiAoQ3VycnkuXzIoVmFyTWFwWy8qIG1lbSAqLzJdLCB4Wy8qIGl0ICovMV0sIGMkMVsvKiB0eXBl
cyAqLzBdWy8qIHRtYXAgKi8wXSkpIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBT
Y3JpcHQuU3ludGF4LAorICAgICAgICAgICAgICB4Wy8qIGF0ICovMF0sCisgICAgICAgICAgICAg
ICJkdXBsaWNhdGUgdHlwZSAiICsgeFsvKiBpdCAqLzFdCisgICAgICAgICAgICBdOworICAgICAg
fQorICAgICAgYyQxWy8qIHR5cGVzICovMF1bLyogdG1hcCAqLzBdID0gQ3VycnkuXzMoVmFyTWFw
Wy8qIGFkZCAqLzNdLCB4Wy8qIGl0ICovMV0sIEN1cnJ5Ll8xKExpYi5MaXN0MzJbLyogbGVuZ3Ro
ICovMF0sIGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0pLCBjJDFbLyogdHlwZXMgKi8w
XVsvKiB0bWFwICovMF0pOworICAgICAgYyQxWy8qIHR5cGVzICovMF1bLyogdGxpc3QgKi8xXSA9
IFBlcnZhc2l2ZXMuJGF0KGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0sIC8qIDo6ICov
WworICAgICAgICAgICAgdHksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdKTsK
KyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gQ3Vy
cnkuXzIoXzMsIGMsIGZ1bmMpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBuZXdyZWNvcmQgPSBBc3QuZW1wdHlfbW9k
dWxlLnNsaWNlKCk7CisgICAgICBuZXdyZWNvcmRbLyogdHlwZXMgKi8wXSA9IGNbLyogdHlwZXMg
Ki8wXVsvKiB0bGlzdCAqLzFdOworICAgICAgcmV0dXJuIG5ld3JlY29yZDsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
KyAgICAgIEN1cnJ5Ll8xKF8xLCBjKTsKKyAgICAgIHJldHVybiBDdXJyeS5fMShfMiwgYyk7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8x
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMSwgYyk7CisgICAgICB2YXIg
bSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIGlmIChtWy8qIGltcG9ydHMgKi84XSAhPT0gLyog
W10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsvKiBpbXBvcnRzICovOF0pWy8q
IGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwK
KyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBvcnQgYWZ0ZXIgZ2xvYmFsIGRl
ZmluaXRpb24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgdmFyIG5ld3JlY29yZCA9
IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBnbG9iYWxzICovMV0gPSAvKiA6OiAqL1sK
KyAgICAgICAgQ3VycnkuXzEobWF0Y2hbMF0sIC8qICgpICovMCksCisgICAgICAgIG1bLyogZ2xv
YmFscyAqLzFdCisgICAgICBdOworICAgICAgbmV3cmVjb3JkWy8qIGV4cG9ydHMgKi85XSA9IFBl
cnZhc2l2ZXMuJGF0KG1hdGNoWzFdLCBtWy8qIGV4cG9ydHMgKi85XSk7CisgICAgICByZXR1cm4g
bmV3cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwor
ICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAg
IHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIHQgPSBDdXJyeS5fMShfMSwgYyk7Cisg
ICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8x
KHQsIC8qICgpICovMCk7CisgICAgICBpZiAobVsvKiBpbXBvcnRzICovOF0gIT09IC8qIFtdICov
MCkgeworICAgICAgICB2YXIgYXQgPSBMaXN0LmhkKG1bLyogaW1wb3J0cyAqLzhdKVsvKiBhdCAq
LzBdOworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAg
ICAgICAgICAgIGF0LAorICAgICAgICAgICAgICAiaW1wb3J0IGFmdGVyIHRhYmxlIGRlZmluaXRp
b24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xp
Y2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiB0YWJsZXMgKi8yXSA9IC8qIDo6ICovWworICAgICAg
ICBtYXRjaFswXSwKKyAgICAgICAgbVsvKiB0YWJsZXMgKi8yXQorICAgICAgXTsKKyAgICAgIG5l
d3JlY29yZFsvKiBlbGVtcyAqLzZdID0gUGVydmFzaXZlcy4kYXQobWF0Y2hbMV0sIG1bLyogZWxl
bXMgKi82XSk7CisgICAgICBuZXdyZWNvcmRbLyogZXhwb3J0cyAqLzldID0gUGVydmFzaXZlcy4k
YXQobWF0Y2hbMl0sIG1bLyogZXhwb3J0cyAqLzldKTsKKyAgICAgIHJldHVybiBuZXdyZWNvcmQ7
CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8y
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMSwgYyk7CisgICAgICB2
YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIGlmIChtWy8qIGltcG9ydHMgKi84XSAhPT0g
LyogW10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsvKiBpbXBvcnRzICovOF0p
Wy8qIGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgU2NyaXB0LlN5bnRh
eCwKKyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBvcnQgYWZ0ZXIgbWVtb3J5
IGRlZmluaXRpb24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgdmFyIG5ld3JlY29y
ZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBtZW1vcmllcyAqLzNdID0gLyogOjog
Ki9bCisgICAgICAgIG1hdGNoWzBdLAorICAgICAgICBtWy8qIG1lbW9yaWVzICovM10KKyAgICAg
IF07CisgICAgICBuZXdyZWNvcmRbLyogZGF0YSAqLzddID0gUGVydmFzaXZlcy4kYXQobWF0Y2hb
MV0sIG1bLyogZGF0YSAqLzddKTsKKyAgICAgIG5ld3JlY29yZFsvKiBleHBvcnRzICovOV0gPSBQ
ZXJ2YXNpdmVzLiRhdChtYXRjaFsyXSwgbVsvKiBleHBvcnRzICovOV0pOworICAgICAgcmV0dXJu
IG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsK
KyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF8xLCBj
KTsKKyAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMpOworICAgICAgdmFyIGZ1bmMgPSBDdXJy
eS5fMShtYXRjaFswXSwgLyogKCkgKi8wKTsKKyAgICAgIGlmIChtWy8qIGltcG9ydHMgKi84XSAh
PT0gLyogW10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsvKiBpbXBvcnRzICov
OF0pWy8qIGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgU2NyaXB0LlN5
bnRheCwKKyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBvcnQgYWZ0ZXIgZnVu
Y3Rpb24gZGVmaW5pdGlvbiIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICB2YXIgbmV3
cmVjb3JkID0gbS5zbGljZSgpOworICAgICAgbmV3cmVjb3JkWy8qIGZ1bmNzICovNF0gPSAvKiA6
OiAqL1sKKyAgICAgICAgZnVuYywKKyAgICAgICAgbVsvKiBmdW5jcyAqLzRdCisgICAgICBdOwor
ICAgICAgbmV3cmVjb3JkWy8qIGV4cG9ydHMgKi85XSA9IFBlcnZhc2l2ZXMuJGF0KG1hdGNoWzFd
LCBtWy8qIGV4cG9ydHMgKi85XSk7CisgICAgICByZXR1cm4gbmV3cmVjb3JkOworICAgIH07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykg
eworICAgICAgdmFyIG0gPSBDdXJyeS5fMShfMiwgYyk7CisgICAgICB2YXIgbmV3cmVjb3JkID0g
bS5zbGljZSgpOworICAgICAgbmV3cmVjb3JkWy8qIGVsZW1zICovNl0gPSAvKiA6OiAqL1sKKyAg
ICAgICAgQ3VycnkuXzEoXzEsIGMpLAorICAgICAgICBtWy8qIGVsZW1zICovNl0KKyAgICAgIF07
CisgICAgICByZXR1cm4gbmV3cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIG0gPSBDdXJy
eS5fMShfMiwgYyk7CisgICAgICB2YXIgbmV3cmVjb3JkID0gbS5zbGljZSgpOworICAgICAgbmV3
cmVjb3JkWy8qIGRhdGEgKi83XSA9IC8qIDo6ICovWworICAgICAgICBDdXJyeS5fMShfMSwgYyks
CisgICAgICAgIG1bLyogZGF0YSAqLzddCisgICAgICBdOworICAgICAgcmV0dXJuIG5ld3JlY29y
ZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIg
XzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4g
ZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMpOworICAgICAgdmFy
IHggPSBDdXJyeS5fMShfMSwgYyk7CisgICAgICB2YXIgbWF0Y2ggPSBtWy8qIHN0YXJ0ICovNV07
CisgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBTY3Jp
cHQuU3ludGF4LAorICAgICAgICAgICAgICB4Wy8qIGF0ICovMF0sCisgICAgICAgICAgICAgICJt
dWx0aXBsZSBzdGFydCBzZWN0aW9ucyIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgICAgbmV3cmVj
b3JkWy8qIHN0YXJ0ICovNV0gPSAvKiBTb21lICovW3hdOworICAgICAgICByZXR1cm4gbmV3cmVj
b3JkOworICAgICAgfQorICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEp
OworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwor
ICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGkgPSBDdXJyeS5fMShfMSwgYyk7
CisgICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHZhciBuZXdyZWNvcmQgPSBt
LnNsaWNlKCk7CisgICAgICBuZXdyZWNvcmRbLyogaW1wb3J0cyAqLzhdID0gLyogOjogKi9bCisg
ICAgICAgIGksCisgICAgICAgIG1bLyogaW1wb3J0cyAqLzhdCisgICAgICBdOworICAgICAgcmV0
dXJuIG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsK
KyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMp
OworICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBl
eHBvcnRzICovOV0gPSAvKiA6OiAqL1sKKyAgICAgICAgQ3VycnkuXzEoXzEsIGMpLAorICAgICAg
ICBtWy8qIGV4cG9ydHMgKi85XQorICAgICAgXTsKKyAgICAgIHJldHVybiBuZXdyZWNvcmQ7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8z
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgXzMsCisgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KC8qIFRl
eHR1YWwgKi9CbG9jay5fXygwLCBbU291cmNlLiRhdCRhdChDdXJyeS5fMShfNCwgZW1wdHlfY29u
dGV4dCgvKiAoKSAqLzApKSwgYXQoLyogKCkgKi8wKSldKSwgYXQoLyogKCkgKi8wKSkKKyAgICAg
ICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICBfMywKKyAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogRW5j
b2RlZCAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgImJpbmFyeSIsCisgICAg
ICAgICAgICAgICAgICAgIF80ICsgXzUKKyAgICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAq
LzApKQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gLyog
Tm9uZSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVy
biAvKiBTb21lICovW1NvdXJjZS4kYXQkYXQoXzEsIGF0KC8qICgpICovMCkpXTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogSW52b2tl
ICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgICAgXzMsCisgICAgICAgICAgICAgICAg
ICBfNCwKKyAgICAgICAgICAgICAgICAgIF81CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgp
ICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291
cmNlLiRhdCRhdCgvKiBHZXQgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICBfMywK
KyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkp
OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRh
dCRhdCgvKiBBc3NlcnRNYWxmb3JtZWQgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAg
ICBfM1sxXSwKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8q
ICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIg
XzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4g
U291cmNlLiRhdCRhdCgvKiBBc3NlcnRJbnZhbGlkICovQmxvY2suX18oMSwgWworICAgICAgICAg
ICAgICAgICAgXzNbMV0sCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0p
LCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Cisg
ICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAg
cmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0U29mdEludmFsaWQgKi9CbG9jay5fXygyLCBb
CisgICAgICAgICAgICAgICAgICBfM1sxXSwKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAg
ICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRVbmxpbmthYmxlICovQmxv
Y2suX18oMywgWworICAgICAgICAgICAgICAgICAgXzNbMV0sCisgICAgICAgICAgICAgICAgICBf
NAorICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0VW5pbnN0
YW50aWFibGUgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICBfM1sxXSwKKyAgICAg
ICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgv
KiBBc3NlcnRSZXR1cm4gKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICAgICAgICBfMywKKyAg
ICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOwor
ICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRh
dCRhdCgvKiBBc3NlcnRSZXR1cm5OYU4gKi9CbG9jay5fXyg2LCBbXzNdKSwgYXQoLyogKCkgKi8w
KSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2Uu
JGF0JGF0KC8qIEFzc2VydFRyYXAgKi9CbG9jay5fXyg3LCBbCisgICAgICAgICAgICAgICAgICBf
MywKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICov
MCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNl
LiRhdCRhdCgvKiBBc3NlcnRFeGhhdXN0aW9uICovQmxvY2suX18oOCwgWworICAgICAgICAgICAg
ICAgICAgXzMsCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0pLCBhdCgv
KiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAg
dmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0
dXJuIFNvdXJjZS4kYXQkYXQoLyogQWN0aW9uICovQmxvY2suX18oMiwgW18xXSksIGF0KC8qICgp
ICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4g
U291cmNlLiRhdCRhdCgvKiBBc3NlcnRpb24gKi9CbG9jay5fXygzLCBbXzFdKSwgYXQoLyogKCkg
Ki8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBT
b3VyY2UuJGF0JGF0KC8qIE1vZHVsZSAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAg
IF8xWzBdLAorICAgICAgICAgICAgICAgICAgXzFbMV0KKyAgICAgICAgICAgICAgICBdKSwgYXQo
LyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZh
ciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVy
biBTb3VyY2UuJGF0JGF0KC8qIFJlZ2lzdGVyICovQmxvY2suX18oMSwgWworICAgICAgICAgICAg
ICAgICAgXzMsCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0pLCBhdCgv
KiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAg
dmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0
dXJuIFNvdXJjZS4kYXQkYXQoLyogTWV0YSAqL0Jsb2NrLl9fKDQsIFtfMV0pLCBhdCgvKiAoKSAq
LzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgIF8xLAorICAgICAgICAgICAgXzIKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBTY3JpcHQgKi9C
bG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICBfMywKKyAgICAgICAgICAgICAgICAgIF80
CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBJbnB1dCAqL0Jsb2Nr
Ll9fKDAsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgICAgICAgXzQKKyAg
ICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIE91dHB1dCAqL0Jsb2NrLl9f
KDEsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgICAgICAgLyogU29tZSAq
L1tfNF0KKyAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIE91dHB1
dCAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgICAg
ICAgLyogTm9uZSAqLzAKKyAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KGxp
dGVyYWwoXzIsIF8zKVsxXSwgYXRpKDMpKTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJl
dHVybiAvKiBbXSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAg
IHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJl
dHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIF8xLAorICAgICAgICAgICAgXzIKKyAgICAgICAg
ICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgIH0sCisgIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIF8x
LAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgcmV0dXJuIFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDEpWzFdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgUGFyc2luZy5ZWWV4aXQsCisgICAgICAgICAgUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCkKKyAgICAgICAgXTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdGhyb3cgWworICAgICAgICAgIFBh
cnNpbmcuWVlleGl0LAorICAgICAgICAgIFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApCisgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHRocm93IFsKKyAgICAgICAgICBQYXJzaW5nLllZZXhpdCwKKyAgICAgICAgICBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKQorICAgICAgICBdOworICB9CitdOwor
Cit2YXIgeXl0YWJsZXMgPSAvKiByZWNvcmQgKi9bCisgIC8qIGFjdGlvbnMgKi95eWFjdCwKKyAg
LyogdHJhbnNsX2NvbnN0ICoveXl0cmFuc2xfY29uc3QsCisgIC8qIHRyYW5zbF9ibG9jayAqL3l5
dHJhbnNsX2Jsb2NrLAorICAvKiBsaHMgKi8nXHhmZlx4ZmZceDA0XDBceDA0XDBceDA1XDBceDA1
XDBceDA2XDBceDA3XDBceDA3XDBcYlwwXHRcMFx0XDBcdFwwXHRcMFx4MGJcMFxyXDBcZlwwXGZc
MFx4MGVcMFx4MTBcMFx4MTBcMFx4MTBcMFx4MGZcMFx4MGZcMFx4MTFcMFx4MTFcMFx4MTJcMFx4
MTJcMFxuXDBceDEzXDBceDEzXDBceDE0XDBceDE0XDBceDE1XDBceDE1XDBceDE2XDBceDE2XDBc
eDE3XDBceDE3XDBceDE3XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4
XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBc
eDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE5
XDBceDE5XDBceDE5XDBceDE5XDBceDFiXDBceDFhXDBceDFkXDBceDFkXDBceDFkXDBceDFkXDBc
eDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFjXDBceDFjXDBceDFlXDBceDFl
XDAgXDAhXDAhXDAhXDAhXDAiXDAiXDAiXDAjXDAjXDAjXDAjXDAlXDAlXDAmXDAmXDBcJ1wwXCdc
MClcMClcMCpcMCpcMCpcMCtcMCtcMCxcMCxcMCxcMCxcMCxcMC1cMC1cMC1cMC1cMC1cMC1cMC5c
MC9cMC9cMC9cMC9ceDAwMFwwKFwwKFwwJFx4MDAxXHgwMDFceDAwMlx4MDAzXHgwMDNceDAwM1x4
MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwNFx4MDA0XHgwMDVceDAw
NVx4MDA2XHgwMDZceDAwOFx4MDA4XHgwMDhceDAwOFx4MDA4XHgwMDhceDAwOFx4MDA4XHgwMDhc
eDAwOVx4MDA5XHgwMDlceDAwOVx4MDA5XDA7XDA7XDA6XDA6XDA6XDA6XDA8XHgwMDdceDAwN1ww
XHgwMVwwXHgwMlwwXHgwM1wwXDBcMFwwXDBcMFwwJywKKyAgLyogbGVuICovIlx4MDJcMFwwXDBc
eDAyXDBcMFwwXHgwMlwwXHgwMVwwXHgwMVwwXHgwNFwwXHgwNFwwXDBcMFx4MDVcMFx4MDVcMFx4
MDZcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDRcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFc
MFx4MDFcMFwwXDBceDAyXDBcMFwwXHgwMVwwXHgwMVwwXDBcMFx4MDFcMFwwXDBceDAxXDBcMFww
XHgwMVwwXDBcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDJc
MFx4MDNcMFx4MDFcMFx4MDJcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDJcMFx4MDJcMFx4
MDJcMFx4MDJcMFx4MDNcMFx4MDNcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDFc
MFx4MDFcMFx4MDFcMFx4MDVcMFx4MDVcMFx4MDVcMFxiXDBceDAyXDBceDAzXDBceDAyXDBceDAz
XDBceDAzXDBceDA0XDBcYlwwXHgwNFwwXHRcMFx4MDVcMFx4MDNcMFx4MDJcMFwwXDBceDAyXDBc
MFwwXHgwMlwwXHgwMVwwXHgwMVwwXHgwNVwwXHgwNVwwXHgwNlwwXHgwMVwwXHgwNVwwXHgwNlww
XHgwN1wwXHgwNlwwXHgwNlwwXHgwNVwwXHgwNFwwXHgwMVwwXHgwNlwwXHgwNVwwXHgwNlwwXG5c
MFx4MDZcMFx4MDVcMFx4MDZcMFx0XDBcYlwwXHgwN1wwXHgwNlwwXHgwNVwwXHgwNVwwXHgwNVww
XHgwNVwwXHgwNVwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNVwwXHgw
NFwwXHgwNFwwXHgwNFwwXHgwNFwwXHgwNVwwXDBcMFx4MDFcMFx4MDRcMFx4MDRcMFx4MDVcMFx4
MDRcMFwwXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBc
eDAyXDBceDAyXDBceDA1XDBceDA2XDBcMFwwXHgwMVwwXHgwNlwwXHgwNVwwXHgwNVwwXHgwNVww
XHgwNVwwXHgwNVwwXHgwNVwwXHgwNVwwXHgwNFwwXHgwNVwwXHgwNVwwXHgwMVwwXHgwMVwwXHgw
MVwwXHgwNVwwXHgwMVwwXDBcMFx4MDJcMFx4MDVcMFx4MDVcMFx4MDVcMFx4MDRcMFx4MDRcMFww
XDBceDAyXDBceDAyXDBceDAxXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDAiLAorICAvKiBkZWZy
ZWQgKi8iXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhZlwwXHhhMFwwXHg5ZVwwXHg5ZlwwXDBc
MFx4YTJcMFwwXDBceGIwXDBceGFkXDBcMFwwXHhiMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YTRcMFx4YWNcMFx4YWVc
MFx4OTJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXHg5YlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGE4XDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODlcMFx4OGFcMFx4ODdcMFx4OGJcMFx4ODhcMFx4
ODZcMFx4OGRcMFx4OGVcMFx4ODVcMFx4OGNcMFx4OGZcMFx4YTVcMFx4YTFcMFwwXDBceDk0XDBc
eDk1XDBceDk2XDBceDk3XDBceDk4XDBcMFwwXHg5YVwwXHhhYlwwXHg5OVwwXHg5Y1wwXHg5ZFww
XHhhNlwwXHhhN1wwXHgwMlwwXHg5MFwwXHgxYlwwXHgxYVwwXDBcMFx4MTVcMFx4MTZcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwYVwwXDBcMFwwXDBcMFwwXHgwMVwwXDBcMFwwXDBc
eDkzXDBceDEyXDBceDEzXDBceDE0XDBcMFwwXDBcMChcMC9cMFwwXDBcMFx4MDAwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDAsXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMD1cMD5c
MDxcMD9cMCdceDAwOFx4MDA5XDA7XDBcMFwwXDBcMCRcMCVcMCZcMFlcMFwwXDBVXDBcMFwwXDBc
MFx4ODNcMFwwXDBceDgxXDBcMFwwXHgwNlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDdmXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
eDAxXDBcMFwwXDBcMFwwXDBcMFwwXHhhOVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgxZFww
XDBcMFwwXDBcMFwwKVwwKlwwXDBcMC1cMC5ceDAwMVx4MDAyXHgwMDNceDAwNFx4MDA1XDAhXDBc
MFwwXDBcMDpcMFwwXDBcMFwwXDBcMFFcMF9cMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXHg4MlwwXDBcMFRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwNVwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwRlwwRVwwXDBcMFx4MThcMGNcMFx4MDFcMFwwXDBceDBlXDBc
MFwwXDBcMFwwXDBnXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDB9XDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwK1wwI1x4MDA2XHgwMDdcMF1cMFww
XDBeXDBcMFwwXDBcMHRcMHNcMFxiXDBcMFwwbFwwXDBcMHdcMFx4MTBcMFwwXDBkXDBcclwwdVww
R1wwXDBcMEhcMGBcMFNcMGJcMFwwXDBceDAxXDBoXDB2XDBmXDBcMFwwXDBcMFwwXDBcMFwwclww
XDBcMFwwXDBcMFwwXDBcMFx4MTFcMFx4MDRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODBc
MERcMFwwXDBcMFwwXDBcMFwwXDBcXFwwXDBcMFwwXDBcMFwwXHgwN1wwa1wwXDBcMFwwXDBcMFww
SVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwweVwwfFwwelwwe1wwV1wwXDBcMFwwXDBWXDBaXDBc
MFwweFwwXHgxZlwwQFwwQlwwXDBcMEFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBqXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBYXDBbXDBcMFwwXHgwYlwwXDBcMFxuXDBcMFwwXDBcMFww
XDBOXDBpXDBuXDBtXDBxXDBvXDBwXDBcMFwwXGZcMGVcMFwwXDBcMFwwQ1wwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwSlwwXDBcMExcMCIsCisgIC8qIGRnb3RvICovJ1x4MDRcMFx4MDZcMFxyXDBc
eDEwXDBWXHgwMDFceDAxXGZceDAxXHhjNFwwXHg4NVwwXHhmZlwwXHg3ZlwwXHJceDAxXHgwZVx4
MDFceDFkXHgwMVx4YjRcMFx4ZDJcMFx4OTZcMFx4ZDNcMFx4ODBcMFx4ZTVcMFx4ODhceDAxXHhm
M1x4MDA3XHgwMVx4YjVcMFx4YjZcMFx4YjdcMFx4YjhceDAwMlx4MDFceGI5XDBceGQwXDBceDE1
XHgwMXVceDAxXHgwNlx4MDFceGJhXDBceGJiXHgwMDlcMFx4YmNcMFx4OGNcMDpcMDtcMFx4Yzlc
MDxcMD1cMD5cMCJceDAxP1wwXHhiZFwwXHhkY1wwQFwwQVwwQlwwQ1wwXHgwN1wwJVwwXGJcME1c
MFx0XDBcblwwXHgwYlwwXGZcME5cMCcsCisgIC8qIHNpbmRleCAqLydceGQ0XDBceDE3XHhmZlx4
MTdceGZmLlx4ZmZcMFwwYVx4ZmZcMFwwXDBcMFwwXDBcMFwwXHgxN1x4ZmZcMFwwQFwwXDBcMFww
XDAiXHhmZlwwXDBsXDBpXHhmZmlceGZmd1x4ZmZpXHhmZmlceGZmLlx4ZmYuXHhmZi5ceGZmLlx4
ZmZwXHhmZnBceGZmflx4ZmZwXHhmZmlceGZmaVx4ZmZcMFwwXDBcMFwwXDBcMFwwXHhhYlx4ZmZc
eDE3XHhmZmlceGZmXHg5Mlx4ZmZceGFjXHhmZlx4YzlceGZmXHhkOVx4ZmZceGY2XHhmZlx4Zjlc
eGZmXGZceGZmXHhhMVx4ZmZceGFmXHhmZlx4ZmNceGZlXHhmYlx4ZmZceGZlXHhmZlx4MTVcMFx4
MWNceDAwMVx4ZmZcMFwwXHgxN1wwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFww
XHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHhiMVx4ZmZceGI2XHhmZlx4MTFcMFx4YTFceGZmLVx4
MDA3XDA9XDA/XDBEXDAvXDBKXDBceGExXHhmZlwwXDBLXDBTXDBkXDBlXDBuXDBcMFwwW1x4ZmZS
XDBceGI3XHhmZlx4YzZceGZmUlwwUlwwXHg4Zlx4ZmZSXDBceDhmXHhmZnZcMHdcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDB5XDBcMFwwXDBcMFww
XDBcMFwwXDBcMFx4MGJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXHgxNlx4MDJcMFwwXDBcMHpcMFZcMFx4OGFcMFx4OTVcMFx4ZTlceGZmXHg5N1wwV1x4MDNc
eDk4XDBcMFwwXHhiN1x4ZmZceDk5XDBceDk4XDBcMFwwXHg5YlwwXHhhMVwwXDBcMFwwXDBcMFww
XDBcMFx4YmJcMFx4ZDRceDAyXDBcMFwwXDBSXDBSXDBcMFwwUlwwXHhiN1x4ZmZceGI3XHhmZlx4
YjdceGZmXHhiN1x4ZmZceGI3XHhmZlwwXDBceGI3XHhmZlx4YjdceGZmXHhiN1x4ZmZceGI3XHhm
Zlx4YjdceGZmXHhhNVwwXHhhNVwwXHgwYlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDA8XHgwMmJceDAyXDBcMFwwXDBcMFwwXDBcMFx4YmRcMFwwXDBceDg4XHgwMlx4YmZcMFwwXDBc
eGM3XDBcMFwwXHhkN1wwXDBcMFxyXHhmZmJceDAyXHhlZFx4ZmZceGVkXHhmZlx4Y2RceGZmXDBc
MHVceGZmXHhlYVwwUlwwUlwwUlwwYlx4MDJceGUzXDBceGU0XDBceGI3XHhmZlx4YjdceGZmXHhl
Y1wwXHg5OFx4ZmZceGZlXDBceGVhXDBceGVhXDBcMFwwXHg3Zlx4ZmZcYlx4MDFceGZlXHhmZVx0
XHgwMVwwXDBceGI3XHhmZlx4MTJcMFx4ZTdcMFx4MTJcMFx4MGVceDAxXHgxMFx4MDFcMFwwXHhl
N1wwXHhlN1wwXHhlN1wwXDBcMFwwXDBceGI3XHhmZlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXHhmYVwwXHhmYVwwXDBceDAwMVx4MDMjXHgwMVx4ZWZceDAzXDBcMFwwXDBceDBiXHgw
MzxceDAyLVx4MDFceGU3XHhmZi5ceDAxL1x4MDFceDk5XHhmZjBceDAxXDBcMDxceDAxXDBcMElc
eDAxVVx4MDFiXHgwMlRceDAxXlx4MDFcMFwwV1x4MDFvXHgwMVtceDAxeVx4MDFceGU3XDBceGU3
XDBceGU3XDB6XHgwMVx4ZTNcMFwwXDBcMFwwe1x4MDFcMFwwXDBcMFwwXDBQXHgwMVwwXDBceDgy
XHgwMVx4ODRceDAxXHhhOVx4ZmZcMFwwZFx4ZmZceDg1XHgwMVx4YjdceGZmXHhiN1x4ZmZceGI3
XHhmZlx4YjdceGZmXDBcMFx4OTVceDAxXHhlN1wwXHg5Zlx4MDFiXHgwMVx4YTBceDAxXHhhMVx4
MDFceGE2XHgwMVx4YWFceDAxXHhhYlx4MDFiXHgwMlx4YjdceDAxXHhlNlx4ZmZceGMxXHgwMVww
XDBcMFwwXDBcMFwwXDBcMFwwXHhjNlx4MDFcMFwwXHgxMlwwXHhlN1wwXDBcMFwwXDBcMFwwXHhj
N1x4MDFcMFwwXHhjOFx4MDFcMFwwXDBcMFx4ODBceDAxXDBcMFwwXDBcMFwwXDBcMFx4Y2ZceDAx
XDBcMFwwXDBcMFwwXDBcMFx4YWRceGZmXDBcMFwwXDBcMFwwXDBcMFJcMFJcMFJcMFJcMFwwXDBc
eGQwXHgwMVx4ZDFceDAxXHhlMVx4MDFceGViXHgwMVwwXDBcMFwwPFx4MDJceGVjXHgwMVx4YWVc
eDAyXHhhZVx4MDJceGVkXHgwMVx4ZWVceDAxXDBcMFwwXDBSXDBSXDBSXDBSXDBcMFwwXHhmNlx4
MDFceGY0XHgwMVx4ZjdceDAxXDBcMFwwXDBceGI3XHhmZn1ceDAzXGJceDAyXDBcMFx4MTFceDAy
XHhiYlx4ZmZceGJmXDBceGVkXHhmZlx4ZWFcMFx4ZWFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwPFx4
MDJceGEzXHgwM1wwXDBcMFwwXHhhZVx4MDJcMFwwXDBcMFwwXDBcMFwwYlx4MDJcMFwwXHhjN1ww
XHgxMlx4MDJceGM3XDBceDEzXHgwMmJceDAyXHhjOVx4MDNceGUzXDBcMFwwXHgxNFx4MDJceDFh
XHgwMlx4MWNceDAyXHgxZFx4MDItXHgwMjdceDAyXDBcMFwwXHgwMDRceDAyXDBcMFx4YzdcMFww
XHgwMDlceDAyOlx4MDJiXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBSXDBcMFwwXDBc
MFx4MTdceDAyQFx4MDJcMFx4MDA1XHgwMkNceDAyYlx4MDJMXHgwMl1ceDAyYlx4MDJcMFwwXlx4
MDJcMFwwJywKKyAgLyogcmluZGV4ICovIlwwXDBNXHgwM1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXHgwMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcME9ceGZmXHgxNFwwXDBc
MHdcMHdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwd1wwXHhjMlx4ZmZcMFwwXDBc
MFwwXDBcMFwwX1x4MDJgXHgwMmZceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGhceDAy
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwX1x4MDJfXHgwMl9ceDAyX1x4MDJf
XHgwMl9ceDAyX1x4MDJfXHgwMl9ceDAyX1x4MDJcMFwwXDBcMFwwXDBoXHgwMlwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBoXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwflx4
MDFcMFwwXDBcMFx4ZjJceGZmaFx4ZmZcMFwwKVx4ZmZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4
MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg4M1x4ZmZcMFwwXDBcMFwwXDB5XHgwMmtc
eDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwTVwwXHgx
NlwwXDBcME1cMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5
YVwwXHg5YVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4MDJ0XHhmZlww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMGlceDAyXHg4M1x4MDJcMFwwXHg4M1x4MDJcMFwwXDBcMFww
XDBcMFwwaVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBzXDBceGYzXHhmZnNcMGlceDAyXHg4
NFx4MDJcMFwweVx4MDJceGMwXDBcMFwwXDBcMFx4OGVceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXHg4Nlx4MDJceDg2XHgwMlx4ODZceDAyXDBcMFwwXDBcMFwwXHhhNFx4
MDFYXHgwMVx4YTRceDAxXDBcMFwwXDBceGMwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFx4ZTZcMFx4ZTZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBpXHgwMlwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4MDJcMFwwXHhmN1x4ZmZcMFww
XDBcMFwwXDBcMFwwXDBcMFx4Y2FceDAxXHg4OVx4MDJceGNhXHgwMVwwXDBceDg0XHgwMlwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXGZceDAxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMHRceGZm
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODZceDAyXHg4Nlx4MDJc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMDxcMFx4ZjJceGZmXHg5NVx4MDJceDk1
XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBpXHgwMlwwXDBpXHgwMmlceDAyXDBcMFww
XDBcMFwwXDBceDAwMlx4MDEyXHgwMVx4ZjBceDAxMlx4MDFcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDB5XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXHg4M1x4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMGlceDAyXDBcMFwwXDBcMFwwaVx4MDJcMFwwXDBcMFwwXDBcMFwwXHg4YVx4MDJc
MFwwXHg4M1x4MDJcMFwwXHg4M1x4MDJcMFwwaVx4MDJcMFwwXHhhZlx4ZmZcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODNceDAyXDBcMFwwXDBcMFwwaVx4MDJc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDAyXHgwMVwwXDBcMFwwXHg4Zlx4MDJcMFwwXDBc
MFwwXDBceDlmXHgwMmlceDAyXDBcMFwwXDBpXHgwMlwwXDBcMFwwXDBcMCIsCisgIC8qIGdpbmRl
eCAqLyJcMFwwXDBcMFwwXDBcMFwweFx4ZmZEXHhmZlx4YTVceDAyUVx4ZmYuXHgwM0ZceGZmXHhh
N1x4ZmZHXHhmZkhceGZmM1x4ZmZMXHhmZlx4YmNceGZmXG5ceDAzUFx4ZmZceGIyXHhmZlx4ODBc
eGZmXHhiZFx4ZmVcZlx4MDNceGM0XHgwMlwwXDBceDgyXHhmZlwwXDBceGE2XHhmZlZceGZmTlx4
ZmZcMFwwXHhhOFx4MDJcMFwwQlx4ZmZSXHhmZlx4Y2FceGZlXDBcMFx4Y2FceGZmXHhiNVx4ZmZc
MFwwXDBceDAwMlx4MDNcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ZTNceGZmXDBcMFwwXDBcMFwwXDBc
MFx4YWNcMHRcMFx4OTZcMFx4YmVcMFx4ZjBceGZmXDBcMFx4YmNceDAzXDBcMCFcMFwwXDAiLAor
ICAvKiB0YWJsZXNpemUgKi8xMzM1LAorICAvKiB0YWJsZSAqLydceDg2XDBceGEzXDBceDhiXDBc
eGY5XDBceDhiXDBceDAyXHgwMVx4ZjdcMFx4ZDlcMFx4ZmNcMFwwXHgwMVx4MWVceDAxXHhjZlww
XHg4N1wwXHg4OFwwXHhmZFwwXHg4ZFwwXHgxM1x4MDFceDBmXHgwMVx4MDVceDAxXHg4ZlwwXHg4
M1wwXHgwNFx4MDFcYlx4MDFcdFx4MDFceDhhXDBceGNmXDBceDhlXDBceGU2XDBceDA1XHgwMVx4
ZTdcMFx4MWNceDAxXHgxY1x4MDFceDA1XDBceDE3XHgwMVx4MThceDAxKlx4MDEsXHgwMS1ceDAx
XHg4OVx4MDFceDhhXHgwMVx4OGJceDAxI1x4MDFceDE5XDAhXDBceDgzXHgwMVx4ODRceDAxXHgx
MlwwJFx4MDFceDhiXDAlXHgwMVx4MTlcMCZceDAxXHg4YlwwVFwwblwwXHgwZlwwXHgxNVwwXHgx
Nlx4MDA1XHgwMVVceDAwM1x4MDE0XHgwMXZcMFx4ZDFcMCJcMFx4ZTRcMFx4ZTRcMFx4ZDhcMFx4
ZTRcMFx4ZTJcMFx4ZTNcMERcMFx4MTVcMFx4MTZcMENceDAxXHgxMFx4MDFceDExXHgwMVx4MTJc
eDAxOlx4MDFceDliXHgwMVx4MWZceDAxXHhjNVwwXHhjOFwwXHg5MVwwXHgxMlwwS1x4MDFceDA1
XHgwMVx4ZDVcMFx4OTFcMFx4OTFcMFx4ZThcMFx4ZTlcMFx4ZWFcMFx4ZWJcMFx4ZWNcMHxcMFx4
ZWRcMFx4ZWVcMFx4ZWZcMFx4ZjBcMFx4ZjFcMH1cMEpceDAxXHhhZlx4MDFMXHgwMVx4MTlcMFx4
YzZcMFx4Y2FcMCNcMF9ceDAxJFwwXHgxOVwwXHhkN1wwXHgxOVwwXHhlNFwwXHhlNFwwXHhlNFww
XHgxNFx4MDFcblx4MDFceDExXDBceGNmXDAuXDBceGNmXDBcJ1wwXHgwYlx4MDFceGNmXDBQXDBn
XHgwMW1ceDAxb1x4MDFQXDB8XDB+XDBQXDArXHgwMTFcMC5ceDAxIFx4MDF+XDAqXDArXDAsXDAt
XDBVXHgwMVx4ODFceDAwMlwwUFx4MDFceDEyXDBceDgyXDBWXHgwMUZcMFdceDAxXHg4OVwwWFx4
MDEoXHgwMVx4MTNcMFx4MTRcMFx4MTVcMFx4MTZcMFx4MTdcMFx4MThcMFx4MTlcMFx4MWFcMFx4
MWJcMFx4MWNcMFx4MWRcMFx4MWVcMFx4MWZcMCBcMCZcMExcMChcMClcMHxcMFx4OTlceDAxN1ww
R1wwfFwwXHg4MFx4MDFUXHgwMThceDAwNVx4MDA2XDB2XHgwMVx4ODFcME9cMFx4MTRceDAxa1ww
XHg4MlwwRVwwXHg5NVx4MDF8XDBsXDBceDk4XHgwMVx4OGZceDAxXHgxY1x4MDFceDk2XHgwMVx4
OTRceDAxXHg5MVwwPFx4MDE9XHgwMXdceDAxXHg5N1x4MDF+XDBceDkxXDBIXDBceDFhXHgwMVx4
ODRcMFx4ZTJcMFx4ZTNcMFx4OWRceDAxXHg5YVx4MDFceDlmXHgwMVx4MDFcMFx4MDJcMFx4MDNc
MFx4OWNceDAxL1x4MDAwXHgwMDNceDAwNFwwSVwwXHhhMVx4MDFaXHgwMVtceDAxXFxceDAxXVx4
MDFuXHgwMVx4YWJceDAxYVwwYlwwY1wwZFwwZVwwZlwwZ1wwaFwwaVwwalwwXHhjMlwwXHhhZVx4
MDF0XHgwMVx4YzNcMFx4YzJcMGlceDAxXHhjZlwwXHgwN1x4MDFqXHgwMVx4MTlcMFx4MWNcMEpc
MFx4MTlcMFx4MWNcMEtcMFx4MGZcMFBcMFx4YjRceDAxXHgwZlwwUVwwXHhiN1x4MDFceGNmXDBc
eGUyXDBceGUzXDB4XHgwMXlceDAxelx4MDF7XHgwMVx4YTNcMFx4OTNcMFx4OTRcMFx4OTVcMFx4
ODdceDAxXHg4N1x4MDFceDg3XHgwMVx4ODdceDAxXHhjZlwwXHhkZVwwPFx4MDE9XHgwMX5cMClc
eDAxUlwwXHg5Mlx4MDFtXDBceDFjXDBceDkxXDBceDkxXDBceDFjXDBTXDBceDFjXDBceDFjXDBc
eDFjXDBceDFjXDBceDFjXHgwMDhcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNc
MFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4
MWNcMG9cMFx4YTNceDAxXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1ww
XHgxY1wwcFwwV1wwWFwwWVwwXHgxOVwwXHgxOVwwcVwwWlwwclwwW1wwXFxcMF1cMF5cMHNcMF9c
MGBcMFx4ODdceDAxdFwwXHgxY1wwdVwwd1wwXHgxY1wwflwwXHgxY1wwXHgxY1wwXHgxY1wwXHgx
Y1wwXHgxY1wweFwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgx
Y1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wweVwwelww
XHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwe1wwXHgxY1ww
XHg5MFwwXHg5MVwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHhiZlwwXHgxY1wwXHg5
MlwwXHhiZVwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1ww
XHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHhjMFwwXHgxY1wwXHgx
Y1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHg4NFwwXHhkYVww
XHhjN1wwXHg4OVwwXHhkNFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwXHhkYlwwIFwwIFwwIFwwIFww
IFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwXHgxY1wwIFwwIFwwIFwwIFwwIFww
IFwwIFwwIFwwIFwwXHhkZFwwXHhmMlwwXHhmYVwwXHhmZVwwXHgxN1wwXHgxN1wwXHgxN1wwXHgx
N1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgwMVx4MDFceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3
XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBc
eDE3XDBceDE3XDBceDAzXHgwMSBcMFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdc
MFx4MTdcMFx4MTdcMFxuXHgwMVx4ZjhcMClceDAxXHgxNlx4MDEiXDAiXDAiXDAiXDAiXDAiXDAi
XDBceDE5XHgwMSJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJc
MFx4MWJceDAxXHgxN1wwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIVx4MDEvXHgwMVwnXHgwMTBc
eDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1x4MDA2XHgwMVx4MDNc
MFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNceDAwOVx4MDEiXDBceDAzXDBceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDA7XHgwMT5ceDAxP1x4MDFAXHgwMVx4
MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMEFceDAxXHgxZVwwXHgxZVww
XHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgx
ZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwQlx4MDFceDAzXDBceDFlXDBceDFlXDBceDFlXDBc
eDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDA0XHgwMURceDAxRVx4MDFGXHgwMVx4MDNc
MFx4MGJceDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwYVx4MDFceDAzXDBceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBHXHgwMVx4MWVcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMElceDAxTVx4MDFPXHgwMVFceDAxXHgxOVwwXHgx
OVwwXHgxOVwwXHgxOVwwXHgxOVwwUlx4MDFceDE5XDBTXHgwMVlceDAxXHgxOVwwXHgxOVwwXHgx
OVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVww
XHgxOVwwXHgxOVwwXHgxOVwwXlx4MDFceDAzXDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5
XDBceDE5XDBceDE5XDBceDE5XDBgXHgwMWJceDAxY1x4MDFkXHgwMVx4MDNcMGVceDAxXHgwM1ww
XHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwclx4MDFmXHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNc
MFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMGhceDAxXHgxOVwwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1ww
XHgwM1wwXHgwM1wwa1x4MDFsXHgwMXBceDAxcVx4MDFceDAzXDBceDAzXDBceDAzXDBceDAzXDBc
eDAzXDBzXHgwMVx4MDNcMHxceDAxfVx4MDFceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDB+XHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4N2ZceDAxXHg4MVx4MDFceDg1XHgwMVx4ODZceDAxXHgxZVwwXHg4ZFx4MDFceDFlXDBc
eDFlXDBceDFlXDBceDFlXDBceDFlXDBceDhjXHgwMVx4OGVceDAxXHgxZVwwXHgxZVwwXHgxZVww
XHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgx
ZVwwXHgxZVwwXHgxZVwwXHg5MVx4MDFceDAzXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFl
XDBceDFlXDBceDFlXDBceDFlXDBceDkzXHgwMVx4OWVceDAxXHhhMFx4MDFceGE0XHgwMVx4OTdc
MFx4YjBceDAxXHg5OFwwXHg5OVwwXHg5YVwwXHhhNVx4MDFceDliXDBceGE2XHgwMVx4YTdceDAx
XHg5Y1wwXHg5ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhh
NVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhhYVwwXHhhOFx4MDFceDFlXDBceGFiXDBceGFj
XDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBceGE5XHgwMVx4YWFceDAxXHhh
Y1x4MDFceGFkXHgwMVx4ZjZcMFx4YjJceDAxXHg5OFwwXHg5OVwwXHg5YVwwXHhiMVx4MDFceDli
XDBceGIzXHgwMVx4YTNcMFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJc
MFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFx4YjVceDAx
XHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXHhi
Nlx4MDFceGI4XHgwMVx4ODRcMFx4YTNcMFx4ZjhcMH5cMFx4OThcMFx4OTlcMFx4OWFcMFx4OTFc
MFx4OWJcMFx4YWFcMFBcMFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJc
MFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFx4MTdcMFx4
YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4YjJcMFx0XDBS
XDBceDdmXDBceDAzXDBceGZiXDBceDAzXDBceDk4XDBceDk5XDBceDlhXDBceDE5XDBceDliXDBQ
XDBLXDBceDljXDBceDlkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0
XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBNXDBceGIzXDBceGFiXDBceGFj
XDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBIXHgwMVx4YzFcMFx4ZjVcMFx4
ZjRcMFx4ODJceDAxOFx4MDFceDk4XDBceDk5XDBceDlhXDBOXHgwMVx4OWJcMFx4MGVcMFx4ZDZc
MFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4
YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBceGFiXDBceGFjXDBc
eGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBceGNkXDBceDllXDBc
eDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4
XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhi
MFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBceGRlXDBceGRmXDBceGUwXDBceGUxXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXHhlMlwwXHhlM1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFx4YjNcMFx4OWNcMFx4Y2RcMFx4
OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdc
MFx4YThcMFx4YTlcMFx4YWFcMFwwXDBcMFwwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlww
XHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBceGRlXDBceGRmXDBceGUwXDBceGUxXDBceDk4XDBc
eDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBceGNkXDBceDllXDBceDlmXDBceGEw
XDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBc
eGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVww
XHhiMlwwXDBcMFwwXDBcMFwwXHhkZlwwXHhlMFwwXHhlMVwwXHg5OFwwXHg5OVwwXHhjYlwwXDBc
MFx4Y2NcMFwwXDBcMFwwXHg5Y1wwXHhjZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlww
XHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhhYVwwXDBcMFx4YjNc
MFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4YjJcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFx4OThcMFx4OTlcMFx4Y2JcMFwwXDBceGNjXDBceDkwXHgwMVx4Y2Vc
MFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4
YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBceGFiXDBceGFjXDBc
eGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBceGNkXDBceDllXDBc
eDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4
XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhi
MFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGUxXDBceDk4XDBceDk5XDBceGNi
XDBcMFwwXHhjY1wwXHhhMlx4MDFcMFwwXHg5Y1wwXHhjZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhh
MVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhhYVww
XDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4YjJc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4OThcMFx4OTlcMFx4Y2JcMFwwXDBceGNjXDBcMFww
XDBcMFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRc
MFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBceGFiXDBceGFj
XDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YjNcMCcsCisgIC8qIGNo
ZWNrICovIllcMFwwXDBcXFwwXHhiNVwwXlwwXHhiZlwwXHhiNFwwXHg4ZlwwXHhiY1wwXHhiZFww
XHhkN1wwXHg4OVwwWlwwW1wwXHhiY1wwXVwwXHhjZVwwXHhjYVwwXHhjNFwwXlwwWFwwXGJceDAx
XHhjNVwwXHhjNlwwXFxcMFx4OTdcMF5cMFx4OWJcMFx4Y2VcMFx4OWRcMFx4ZDZcMFx4ZDdcMFx0
XHgwMVx4ZDFcMFx4ZDJcMFx4ZGZcMFx4ZTBcMFx4ZTFcMGlceDAxalx4MDFrXHgwMStceDAxXHgw
MVx4MDFcblwwYlx4MDFjXHgwMTJceDAxMVx4MDFceDhhXHgwMDNceDAxXHRceDAxNVx4MDFceDhl
XDBceDA0XHgwMUZcMFx0XHgwMTxceDAxPVx4MDFceGVhXDBcblx4MDFceGU2XDBceGU3XDBOXDBc
eDhhXDBcMFwwXHg5YVwwXHg5YlwwXHg4ZVwwXHg5ZFx4MDA4XHgwMTlceDAxJlwwPFx4MDE9XHgw
MVxiXHgwMVx4Y2JcMFx4Y2NcMFx4Y2RcMFx4ZmNcMFx4ODVceDAxXHhkOFwwXHg4N1wwXHg4OFww
XHgwNFx4MDEyXHgwMVx4MTFceDAxXGJceDAxXHg4ZFwwXHRceDAxXG5ceDAxXHg5ZVwwXHg5Zlww
XHhhMFwwXHhhMVwwXHhhMlwwXHgwNFx4MDFceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBc
blx4MDFceDEwXHgwMVx4YWFceDAxXHgxMlx4MDFceDAxXHgwMVx4ODdcMFx4ODhcMFwwXDApXHgw
MVx4MDVceDAxXHgwN1x4MDFceDhkXDBcdFx4MDFceGNiXDBceGNjXDBceGNkXDBceGNmXDBceDAx
XHgwMVx4MDNcMFx4ZjZcMFx0XHgwMVx4ZjhcMFx4MDRceDAxXHgwN1x4MDFceGZiXDBcblx4MDEx
XHgwMTxceDAxPVx4MDFceDBlXHgwMVx4MDRceDAxXHgwMVx4MDFceDExXHgwMVx4ZGZcMFx0XHgw
MVx4ZTFcMFxuXHgwMVx4MDdceDAxXHgxN1wwXHgxOFwwXHgxOVwwXHgxYVwwK1x4MDFceDAxXHgw
MVx4MWRcMFx4MWFceDAxMlx4MDFceDA1XHgwMTFceDAxXHgwNFx4MDEzXHgwMVx0XHgwMTVceDAx
XHhkZVwwOlx4MDE7XHgwMTxceDAxPVx4MDE+XHgwMT9ceDAxQFx4MDFBXHgwMUJceDAxQ1x4MDFE
XHgwMUVceDAxRlx4MDFHXHgwMVx4MTNcMFx0XHgwMVx4MTVcMFx4MTZcMFx4MDRceDAxe1x4MDFc
eDA0XHgwMVx4MDRceDAxXHgwNFx4MDFgXHgwMVxuXHgwMVx0XHgwMVx4MWZcMCBcMFxuXHgwMVx4
MDFceDAxXG5ceDAxXHgxNFx4MDFcblx4MDFceDA1XHgwMSdcMHhceDAxXHgwNFx4MDFcblx4MDF6
XHgwMXJceDAxe1x4MDF4XHgwMVxuXHgwMVx4MDRceDAxLlx4MDEvXHgwMVFceDAxeVx4MDFceDA1
XHgwMVxuXHgwMVx4MDRceDAxNlx4MDFcdFx4MDE4XHgwMTlceDAxXHg4Y1x4MDFceDgxXHgwMVx4
OGVceDAxXHgwMVwwXHgwMlwwXHgwM1wwXHg4YVx4MDFceDFiXDBceDFjXDBceDFkXDBceDFlXDBc
eDA0XHgwMVx4OTBceDAxI1x4MDEkXHgwMSVceDAxJlx4MDE8XHgwMVx4OWVceDAxOVwwOlwwO1ww
PFwwPVwwPlwwP1wwQFwwQVwwQlwwXHgwNlx4MDFceGEyXHgwMUtceDAxXHRceDAxXHgwNlx4MDFc
eDBlXHgwMXNceDAxXHRceDAxXHgxMVx4MDFceDA2XHgwMVx4MDZceDAxXHgwNFx4MDFcdFx4MDFc
dFx4MDFceDA0XHgwMVx4MDdceDAxXHgwNFx4MDFceGIyXHgwMVxuXHgwMVx4MDRceDAxXHhiNVx4
MDFceDgyXHgwMThceDAxOVx4MDFVXHgwMVZceDAxV1x4MDFYXHgwMVxuXHgwMVx4MDFceDAxXHgw
Mlx4MDFceDAzXHgwMWhceDAxaVx4MDFqXHgwMWtceDAxXHg5MVx4MDEtXHgwMS5ceDAxL1x4MDFc
eDA1XHgwMVx4MDZceDAxXHgwNFx4MDF0XHgwMVxuXHgwMVx4MDZceDAxXHRceDAxXG5ceDAxXHRc
eDAxXHgwNFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcdFx4MDFceDEx
XHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThc
eDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4
MDEgXHgwMVxuXHgwMVx4OTJceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEq
XHgwMVxuXHgwMStceDAxLFx4MDEtXHgwMVx0XHgwMVxuXHgwMVxuXHgwMTFceDAxXG5ceDAxM1x4
MDE0XHgwMTVceDAxNlx4MDFcblx4MDE4XHgwMTlceDAxXHhhYVx4MDEjXHgwMVx4MDZceDAxXG5c
eDAxXG5ceDAxXHRceDAxXHgwNVx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4
MDFcblx4MDFIXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3
XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVc
eDAxXHgxZlx4MDEgXHgwMVxuXHgwMVxuXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgw
MSlceDAxKlx4MDFcblx4MDFceDA2XHgwMVx4MDRceDAxXHgwNFx4MDFcdFx4MDFcblx4MDFceDBi
XHgwMVxmXHgwMVxyXHgwMStceDAxXHgwZlx4MDFcblx4MDFcblx4MDFceDEyXHgwMVx4MTNceDAx
XHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFc
eDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4MDFIXHgwMSNc
eDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcdFx4MDFceDA0XHgwMVx0XHgw
MVx0XHgwMVx0XHgwMVx0XHgwMVxuXHgwMVx4MGJceDAxXGZceDAxXHJceDAxXHgwZVx4MDFceDBm
XHgwMVx0XHgwMVx4MTFceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgw
MVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAx
XHgxZVx4MDFceDFmXHgwMSBceDAxSFx4MDFcIlx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAx
KFx4MDEpXHgwMSpceDAxXG5ceDAxIVx4MDFcblx4MDFcdFx4MDFcdFx4MDFcblx4MDFceDBiXHgw
MVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcdFx4MDFceDExXHgwMVx4MTJceDAxXHgxM1x4
MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgw
MVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMUhceDAx
I1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4MDFceDAxXHRceDAxXHgw
Nlx4MDFcblx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4
MDFcblx4MDFceDExXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFc
eDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4
MWVceDAxXHgxZlx4MDEgXHgwMVx0XHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShc
eDAxKVx4MDEqXHgwMVx0XHgwMVx4MDRceDAxXG5ceDAxXHgwNFx4MDFcdFx4MDFcblx4MDFceDBi
XHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcIlx4MDFceDExXHgwMVx4MTJceDAxXHgx
M1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFh
XHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMUhc
eDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVxuXHgwMVxuXHgwMVxu
XHgwMVxuXHgwMVx0XHgwMVxuXHgwMVx4MGJceDAxXGZceDAxXHJceDAxXHgwZVx4MDFceDBmXHgw
MVx4MDZceDAxXHgxMVx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAx
XHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFc
eDFlXHgwMVx4MWZceDAxIFx4MDFcblx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEo
XHgwMSlceDAxKlx4MDFcYlx4MDFcblx4MDFceDAxXHgwMVx0XHgwMVx0XHgwMVx4MDdceDAxXHgw
Ylx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxXHgwNlx4MDFceDExXHgwMVx4MTJceDAx
XHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFc
eDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgw
MUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVxuXHgwMVxuXHgw
MVxuXHgwMTZceDAxXHRceDAxXG5ceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFcblx4MDFceDBmXHgw
MVxuXHgwMVxuXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3
XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVc
eDAxXHgxZlx4MDEgXHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAx
KVx4MDEqXHgwMVxuXHgwMVxuXHgwMVxuXHgwMVx4MDZceDAxXHRceDAxXHgwNFx4MDFceDBiXHgw
MVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDE0XHgwMVxuXHgwMVx4MTJceDAxXHgxM1x4MDFc
eDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4
MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4MGVceDAxSFx4MDEj
XHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHgwZVx4MDFcblx4MDFcblx4
MDFcblx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx0XHgwMVx4MGZceDAxXG5c
eDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAx
XHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFc
eDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgw
MSpceDAxXG5ceDAxXG5ceDAxXG5ceDAxXG5ceDAxXHRceDAxXHgwNlx4MDFceDBiXHgwMVxmXHgw
MVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcblx4MDFcblx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4
MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgw
MVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcdFx4MDFIXHgwMSNceDAxJFx4
MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4MDFcblx4MDFcblx4MDFc
dFx4MDFcdFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVxuXHgwMVx4MGZceDAxXG5ceDAxXG5ceDAx
XHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFc
eDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBc
eDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXG5c
eDAxXHgwZVx4MDFcblx4MDFcblx4MDFcdFx4MDFceDExXHgwMVx4MGJceDAxXGZceDAxXHJceDAx
XG5ceDAxXHgwZlx4MDFcdFx4MDFcMFwwXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFc
eDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4
MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHgxMVx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZc
eDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4MDFcblx4MDFcblx4MDFcdFx4MDFceDAx
XHgwMVx4MGJceDAxXGZceDAxXHJceDAxXG5ceDAxXHgwZlx4MDFcblx4MDFcblx4MDFceDEyXHgw
MVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAx
XHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4
MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4
MDFceDAxXHgwMVxuXHgwMVx0XHgwMVx0XHgwMVx4MGJceDAxXGZceDAxXHJceDAxXHgwMVx4MDFc
eDBmXHgwMVx4MGVceDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2
XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRc
eDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdc
eDAxKFx4MDEpXHgwMSpceDAxXHgwZVx4MDFceDg2XDBceGFiXDBceGFhXDBcdFx4MDFceGY0XDBc
eDBiXHgwMVxmXHgwMVxyXHgwMVx4MTRceDAxXHgwZlx4MDFceDAyXDBceDhkXDBceDEyXHgwMVx4
MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgx
YVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFceGZmXHhm
ZkhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MGJceDAxXGZceDAxXHJceDAx
XHhmZlx4ZmZceDBmXHgwMVx4ZmZceGZmXHhmZlx4ZmZceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFc
eDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4
MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFceGZmXHhmZkhceDAxI1x4MDEkXHgw
MSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4ZmZceGZmXHhmZlx4ZmYtXHgwMS5ceDAx
L1x4MDEwXHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmOFx4MDE5XHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgw
Zlx4MDFceGZmXHhmZkhceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgw
MVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAx
XHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZceGZmXHhmZiNceDAxJFx4MDElXHgwMSZceDAx
J1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmLVx4MDEuXHgwMS9ceDAxMFx4MDFc
eDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4
MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgw
MVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhm
Zlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmYuXHgwMS9ceDAxMFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZc
eGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4
MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgw
MVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgw
MSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceDEw
XHgwMTdceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAx
XHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFc
eDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlc
eDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4
MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgw
MVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhm
Zlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmMFx4MDFceDBiXHgwMVxmXHgwMVxyXHgw
MVx4ZmZceGZmXHgwZlx4MDFceDEwXHgwMVx4ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAx
XHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFc
eDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4
MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4
MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgw
MVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAx
XHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4
MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmSFx4MDEiLAorICAvKiBlcnJvcl9mdW5jdGlvbiAqL3BhcnNl
X2Vycm9yLAorICAvKiBuYW1lc19jb25zdCAqLyJGVU5DUkVGXDBNVVRcMExQQVJcMFJQQVJcME5P
UFwwRFJPUFwwQkxPQ0tcMEVORFwwSUZcMFRIRU5cMEVMU0VcMFNFTEVDVFwwTE9PUFwwQlJcMEJS
X0lGXDBCUl9UQUJMRVwwQ0FMTFwwQ0FMTF9JTkRJUkVDVFwwUkVUVVJOXDBHRVRfTE9DQUxcMFNF
VF9MT0NBTFwwVEVFX0xPQ0FMXDBHRVRfR0xPQkFMXDBTRVRfR0xPQkFMXDBVTlJFQUNIQUJMRVww
Q1VSUkVOVF9NRU1PUllcMEdST1dfTUVNT1JZXDBGVU5DXDBTVEFSVFwwVFlQRVwwUEFSQU1cMFJF
U1VMVFwwTE9DQUxcMEdMT0JBTFwwTU9EVUxFXDBUQUJMRVwwRUxFTVwwTUVNT1JZXDBEQVRBXDBP
RkZTRVRcMElNUE9SVFwwRVhQT1JUXDBTQ1JJUFRcMFJFR0lTVEVSXDBJTlZPS0VcMEdFVFwwQVNT
RVJUX01BTEZPUk1FRFwwQVNTRVJUX0lOVkFMSURcMEFTU0VSVF9TT0ZUX0lOVkFMSURcMEFTU0VS
VF9VTkxJTktBQkxFXDBBU1NFUlRfUkVUVVJOXDBBU1NFUlRfUkVUVVJOX05BTlwwQVNTRVJUX1RS
QVBcMEFTU0VSVF9FWEhBVVNUSU9OXDBJTlBVVFwwT1VUUFVUXDBFT0ZcMCIsCisgIC8qIG5hbWVz
X2Jsb2NrICovIk5BVFwwSU5UXDBGTE9BVFwwVEVYVFwwVkFSXDBWQUxVRV9UWVBFXDBMT0FEXDBT
VE9SRVwwT0ZGU0VUX0VRX05BVFwwQUxJR05fRVFfTkFUXDBDT05TVFwwVU5BUllcMEJJTkFSWVww
Q09NUEFSRVwwQ09OVkVSVFwwVEVTVFwwIgorXTsKKworZnVuY3Rpb24gc2NyaXB0KGxleGZ1biwg
bGV4YnVmKSB7CisgIHJldHVybiBQYXJzaW5nLnl5cGFyc2UoeXl0YWJsZXMsIDEsIGxleGZ1biwg
bGV4YnVmKTsKK30KKworZnVuY3Rpb24gc2NyaXB0MShsZXhmdW4sIGxleGJ1ZikgeworICByZXR1
cm4gUGFyc2luZy55eXBhcnNlKHl5dGFibGVzLCAyLCBsZXhmdW4sIGxleGJ1Zik7Cit9CisKK2Z1
bmN0aW9uIG1vZHVsZTEobGV4ZnVuLCBsZXhidWYpIHsKKyAgcmV0dXJuIFBhcnNpbmcueXlwYXJz
ZSh5eXRhYmxlcywgMywgbGV4ZnVuLCBsZXhidWYpOworfQorCitleHBvcnRzLnNjcmlwdCAgPSBz
Y3JpcHQ7CitleHBvcnRzLnNjcmlwdDEgPSBzY3JpcHQxOworZXhwb3J0cy5tb2R1bGUxID0gbW9k
dWxlMTsKKy8qIFZhck1hcCBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIHBh
cnNlci5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3Jl
Z2lzdHJ5WydwYXJzaW5nJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307
CisvLy8vLy8vLyBzdGFydCBvZiBwYXJzaW5nLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisK
K3ZhciAkJEFycmF5ICAgICAgICAgPSByZXF1aXJlKCIuL2FycmF5Iik7Cit2YXIgQ3VycnkgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIExleGluZyAgICAgICAgICA9IHJlcXVp
cmUoIi4vbGV4aW5nIik7Cit2YXIgQ2FtbF9vYmogICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX29i
aiIpOwordmFyIENhbWxfYXJyYXkgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9hcnJheSIpOwordmFy
IENhbWxfcGFyc2VyICAgICA9IHJlcXVpcmUoIi4vY2FtbF9wYXJzZXIiKTsKK3ZhciBDYW1sX2V4
Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0aW9ucyIpOworCit2YXIgWVlleGl0ID0g
Q2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiUGFyc2luZy5ZWWV4aXQiKTsKKwordmFyIFBhcnNlX2Vy
cm9yID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiUGFyc2luZy5QYXJzZV9lcnJvciIpOworCit2
YXIgZW52ID0gLyogcmVjb3JkICovWworICAvKiBzX3N0YWNrICovQ2FtbF9hcnJheS5jYW1sX21h
a2VfdmVjdCgxMDAsIDApLAorICAvKiB2X3N0YWNrICovQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVj
dCgxMDAsIC8qICgpICovMCksCisgIC8qIHN5bWJfc3RhcnRfc3RhY2sgKi9DYW1sX2FycmF5LmNh
bWxfbWFrZV92ZWN0KDEwMCwgTGV4aW5nLmR1bW15X3BvcyksCisgIC8qIHN5bWJfZW5kX3N0YWNr
ICovQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdCgxMDAsIExleGluZy5kdW1teV9wb3MpLAorICAv
KiBzdGFja3NpemUgKi8xMDAsCisgIC8qIHN0YWNrYmFzZSAqLzAsCisgIC8qIGN1cnJfY2hhciAq
LzAsCisgIC8qIGx2YWwgOiAoKSAqLzAsCisgIC8qIHN5bWJfc3RhcnQgKi9MZXhpbmcuZHVtbXlf
cG9zLAorICAvKiBzeW1iX2VuZCAqL0xleGluZy5kdW1teV9wb3MsCisgIC8qIGFzcCAqLzAsCisg
IC8qIHJ1bGVfbGVuICovMCwKKyAgLyogcnVsZV9udW1iZXIgKi8wLAorICAvKiBzcCAqLzAsCisg
IC8qIHN0YXRlICovMCwKKyAgLyogZXJyZmxhZyAqLzAKK107CisKK2Z1bmN0aW9uIGdyb3dfc3Rh
Y2tzKCkgeworICB2YXIgb2xkc2l6ZSA9IGVudlsvKiBzdGFja3NpemUgKi80XTsKKyAgdmFyIG5l
d3NpemUgPSAob2xkc2l6ZSA8PCAxKTsKKyAgdmFyIG5ld19zID0gQ2FtbF9hcnJheS5jYW1sX21h
a2VfdmVjdChuZXdzaXplLCAwKTsKKyAgdmFyIG5ld192ID0gQ2FtbF9hcnJheS5jYW1sX21ha2Vf
dmVjdChuZXdzaXplLCAvKiAoKSAqLzApOworICB2YXIgbmV3X3N0YXJ0ID0gQ2FtbF9hcnJheS5j
YW1sX21ha2VfdmVjdChuZXdzaXplLCBMZXhpbmcuZHVtbXlfcG9zKTsKKyAgdmFyIG5ld19lbmQg
PSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KG5ld3NpemUsIExleGluZy5kdW1teV9wb3MpOwor
ICAkJEFycmF5LmJsaXQoZW52Wy8qIHNfc3RhY2sgKi8wXSwgMCwgbmV3X3MsIDAsIG9sZHNpemUp
OworICBlbnZbLyogc19zdGFjayAqLzBdID0gbmV3X3M7CisgICQkQXJyYXkuYmxpdChlbnZbLyog
dl9zdGFjayAqLzFdLCAwLCBuZXdfdiwgMCwgb2xkc2l6ZSk7CisgIGVudlsvKiB2X3N0YWNrICov
MV0gPSBuZXdfdjsKKyAgJCRBcnJheS5ibGl0KGVudlsvKiBzeW1iX3N0YXJ0X3N0YWNrICovMl0s
IDAsIG5ld19zdGFydCwgMCwgb2xkc2l6ZSk7CisgIGVudlsvKiBzeW1iX3N0YXJ0X3N0YWNrICov
Ml0gPSBuZXdfc3RhcnQ7CisgICQkQXJyYXkuYmxpdChlbnZbLyogc3ltYl9lbmRfc3RhY2sgKi8z
XSwgMCwgbmV3X2VuZCwgMCwgb2xkc2l6ZSk7CisgIGVudlsvKiBzeW1iX2VuZF9zdGFjayAqLzNd
ID0gbmV3X2VuZDsKKyAgZW52Wy8qIHN0YWNrc2l6ZSAqLzRdID0gbmV3c2l6ZTsKKyAgcmV0dXJu
IC8qICgpICovMDsKK30KKworZnVuY3Rpb24gY2xlYXJfcGFyc2VyKCkgeworICAkJEFycmF5LmZp
bGwoZW52Wy8qIHZfc3RhY2sgKi8xXSwgMCwgZW52Wy8qIHN0YWNrc2l6ZSAqLzRdLCAvKiAoKSAq
LzApOworICBlbnZbLyogbHZhbCAqLzddID0gLyogKCkgKi8wOworICByZXR1cm4gLyogKCkgKi8w
OworfQorCit2YXIgY3VycmVudF9sb29rYWhlYWRfZnVuID0gW2Z1bmN0aW9uICgpIHsKKyAgICBy
ZXR1cm4gLyogZmFsc2UgKi8wOworICB9XTsKKworZnVuY3Rpb24geXlwYXJzZSh0YWJsZXMsIHN0
YXJ0LCBsZXhlciwgbGV4YnVmKSB7CisgIHZhciBpbml0X2FzcCA9IGVudlsvKiBhc3AgKi8xMF07
CisgIHZhciBpbml0X3NwID0gZW52Wy8qIHNwICovMTNdOworICB2YXIgaW5pdF9zdGFja2Jhc2Ug
PSBlbnZbLyogc3RhY2tiYXNlICovNV07CisgIHZhciBpbml0X3N0YXRlID0gZW52Wy8qIHN0YXRl
ICovMTRdOworICB2YXIgaW5pdF9jdXJyX2NoYXIgPSBlbnZbLyogY3Vycl9jaGFyICovNl07Cisg
IHZhciBpbml0X2x2YWwgPSBlbnZbLyogbHZhbCAqLzddOworICB2YXIgaW5pdF9lcnJmbGFnID0g
ZW52Wy8qIGVycmZsYWcgKi8xNV07CisgIGVudlsvKiBzdGFja2Jhc2UgKi81XSA9IGVudlsvKiBz
cCAqLzEzXSArIDEgfCAwOworICBlbnZbLyogY3Vycl9jaGFyICovNl0gPSBzdGFydDsKKyAgZW52
Wy8qIHN5bWJfZW5kICovOV0gPSBsZXhidWZbLyogbGV4X2N1cnJfcCAqLzExXTsKKyAgdHJ5IHsK
KyAgICB2YXIgX2NtZCA9IC8qIFN0YXJ0ICovMDsKKyAgICB2YXIgX2FyZyA9IC8qICgpICovMDsK
KyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgYXJnID0gX2FyZzsKKyAgICAgIHZhciBjbWQg
PSBfY21kOworICAgICAgdmFyIG1hdGNoID0gQ2FtbF9wYXJzZXIuY2FtbF9wYXJzZV9lbmdpbmUo
dGFibGVzLCBlbnYsIGNtZCwgYXJnKTsKKyAgICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAgICAg
Y2FzZSAwIDogCisgICAgICAgICAgICB2YXIgdCA9IEN1cnJ5Ll8xKGxleGVyLCBsZXhidWYpOwor
ICAgICAgICAgICAgZW52Wy8qIHN5bWJfc3RhcnQgKi84XSA9IGxleGJ1ZlsvKiBsZXhfc3RhcnRf
cCAqLzEwXTsKKyAgICAgICAgICAgIGVudlsvKiBzeW1iX2VuZCAqLzldID0gbGV4YnVmWy8qIGxl
eF9jdXJyX3AgKi8xMV07CisgICAgICAgICAgICBfYXJnID0gdDsKKyAgICAgICAgICAgIF9jbWQg
PSAvKiBUb2tlbl9yZWFkICovMTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
IGNhc2UgMSA6IAorICAgICAgICAgICAgdGhyb3cgUGFyc2VfZXJyb3I7CisgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgZ3Jvd19zdGFja3MoLyogKCkgKi8wKTsKKyAgICAgICAgICAgIF9h
cmcgPSAvKiAoKSAqLzA7CisgICAgICAgICAgICBfY21kID0gLyogU3RhY2tzX2dyb3duXzEgKi8y
OworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgICBncm93X3N0YWNrcygvKiAoKSAqLzApOworICAgICAgICAgICAgX2FyZyA9IC8qICgpICov
MDsKKyAgICAgICAgICAgIF9jbWQgPSAvKiBTdGFja3NfZ3Jvd25fMiAqLzM7CisgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHZhciBtYXRj
aCQxOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAgIC8qIFNlbWFudGljX2FjdGlvbl9jb21wdXRlZCAqLzQsCisg
ICAgICAgICAgICAgICAgQ3VycnkuXzEodGFibGVzWy8qIGFjdGlvbnMgKi8wXVtlbnZbLyogcnVs
ZV9udW1iZXIgKi8xMl1dLCBlbnYpCisgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjYXRjaCAoZXhuKXsKKyAgICAgICAgICAgICAgaWYgKGV4biA9PT0gUGFyc2Vf
ZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgICAgICAvKiBFcnJvcl9kZXRlY3RlZCAqLzUsCisgICAgICAgICAgICAgICAgICAvKiAo
KSAqLzAKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IGV4bjsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgX2FyZyA9IG1hdGNoJDFbMV07CisgICAgICAgICAgICBf
Y21kID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNh
c2UgNSA6IAorICAgICAgICAgICAgQ3VycnkuXzEodGFibGVzWy8qIGVycm9yX2Z1bmN0aW9uICov
MTNdLCAic3ludGF4IGVycm9yIik7CisgICAgICAgICAgICBfYXJnID0gLyogKCkgKi8wOworICAg
ICAgICAgICAgX2NtZCA9IC8qIEVycm9yX2RldGVjdGVkICovNTsKKyAgICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAgIAorICAgICAgfQorICAgIH07CisgIH0KKyAgY2F0Y2ggKGV4biQx
KXsKKyAgICB2YXIgY3Vycl9jaGFyID0gZW52Wy8qIGN1cnJfY2hhciAqLzZdOworICAgIGVudlsv
KiBhc3AgKi8xMF0gPSBpbml0X2FzcDsKKyAgICBlbnZbLyogc3AgKi8xM10gPSBpbml0X3NwOwor
ICAgIGVudlsvKiBzdGFja2Jhc2UgKi81XSA9IGluaXRfc3RhY2tiYXNlOworICAgIGVudlsvKiBz
dGF0ZSAqLzE0XSA9IGluaXRfc3RhdGU7CisgICAgZW52Wy8qIGN1cnJfY2hhciAqLzZdID0gaW5p
dF9jdXJyX2NoYXI7CisgICAgZW52Wy8qIGx2YWwgKi83XSA9IGluaXRfbHZhbDsKKyAgICBlbnZb
LyogZXJyZmxhZyAqLzE1XSA9IGluaXRfZXJyZmxhZzsKKyAgICBpZiAoZXhuJDFbMF0gPT09IFlZ
ZXhpdCkgeworICAgICAgcmV0dXJuIGV4biQxWzFdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IGN1cnJlbnRfbG9va2FoZWFkX2Z1blswXSA9IGZ1bmN0aW9uICh0b2spIHsKKyAgICAgICAgaWYg
KHRvay5sZW5ndGggIT09IHVuZGVmaW5lZCkgeworICAgICAgICAgIHJldHVybiArKHRhYmxlc1sv
KiB0cmFuc2xfYmxvY2sgKi8yXVt0b2sudGFnIHwgMF0gPT09IGN1cnJfY2hhcik7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuICsodGFibGVzWy8qIHRyYW5zbF9j
b25zdCAqLzFdW3Rva10gPT09IGN1cnJfY2hhcik7CisgICAgICAgIH0KKyAgICAgIH07CisgICAg
ICB0aHJvdyBleG4kMTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gcGVla192YWwoZW52LCBu
KSB7CisgIHJldHVybiBlbnZbLyogdl9zdGFjayAqLzFdW2VudlsvKiBhc3AgKi8xMF0gLSBuIHwg
MF07Cit9CisKK2Z1bmN0aW9uIHN5bWJvbF9zdGFydF9wb3MoKSB7CisgIHZhciBfaSA9IGVudlsv
KiBydWxlX2xlbiAqLzExXTsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0gX2k7CisgICAg
aWYgKGkgPD0gMCkgeworICAgICAgcmV0dXJuIGVudlsvKiBzeW1iX2VuZF9zdGFjayAqLzNdW2Vu
dlsvKiBhc3AgKi8xMF1dOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBzdCA9IGVudlsv
KiBzeW1iX3N0YXJ0X3N0YWNrICovMl1bKGVudlsvKiBhc3AgKi8xMF0gLSBpIHwgMCkgKyAxIHwg
MF07CisgICAgICB2YXIgZW4gPSBlbnZbLyogc3ltYl9lbmRfc3RhY2sgKi8zXVsoZW52Wy8qIGFz
cCAqLzEwXSAtIGkgfCAwKSArIDEgfCAwXTsKKyAgICAgIGlmIChDYW1sX29iai5jYW1sX25vdGVx
dWFsKHN0LCBlbikpIHsKKyAgICAgICAgcmV0dXJuIHN0OworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIF9pID0gaSAtIDEgfCAwOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAor
ICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3ltYm9sX2VuZF9wb3MoKSB7Cisg
IHJldHVybiBlbnZbLyogc3ltYl9lbmRfc3RhY2sgKi8zXVtlbnZbLyogYXNwICovMTBdXTsKK30K
KworZnVuY3Rpb24gcmhzX3N0YXJ0X3BvcyhuKSB7CisgIHJldHVybiBlbnZbLyogc3ltYl9zdGFy
dF9zdGFjayAqLzJdW2VudlsvKiBhc3AgKi8xMF0gLSAoZW52Wy8qIHJ1bGVfbGVuICovMTFdIC0g
biB8IDApIHwgMF07Cit9CisKK2Z1bmN0aW9uIHJoc19lbmRfcG9zKG4pIHsKKyAgcmV0dXJuIGVu
dlsvKiBzeW1iX2VuZF9zdGFjayAqLzNdW2VudlsvKiBhc3AgKi8xMF0gLSAoZW52Wy8qIHJ1bGVf
bGVuICovMTFdIC0gbiB8IDApIHwgMF07Cit9CisKK2Z1bmN0aW9uIHN5bWJvbF9zdGFydCgpIHsK
KyAgcmV0dXJuIHN5bWJvbF9zdGFydF9wb3MoLyogKCkgKi8wKVsvKiBwb3NfY251bSAqLzNdOwor
fQorCitmdW5jdGlvbiBzeW1ib2xfZW5kKCkgeworICByZXR1cm4gc3ltYm9sX2VuZF9wb3MoLyog
KCkgKi8wKVsvKiBwb3NfY251bSAqLzNdOworfQorCitmdW5jdGlvbiByaHNfc3RhcnQobikgewor
ICByZXR1cm4gcmhzX3N0YXJ0X3BvcyhuKVsvKiBwb3NfY251bSAqLzNdOworfQorCitmdW5jdGlv
biByaHNfZW5kKG4pIHsKKyAgcmV0dXJuIHJoc19lbmRfcG9zKG4pWy8qIHBvc19jbnVtICovM107
Cit9CisKK2Z1bmN0aW9uIGlzX2N1cnJlbnRfbG9va2FoZWFkKHRvaykgeworICByZXR1cm4gQ3Vy
cnkuXzEoY3VycmVudF9sb29rYWhlYWRfZnVuWzBdLCB0b2spOworfQorCitmdW5jdGlvbiBwYXJz
ZV9lcnJvcigpIHsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKwordmFyIHNldF90cmFjZSA9IENh
bWxfcGFyc2VyLmNhbWxfc2V0X3BhcnNlcl90cmFjZTsKKworZXhwb3J0cy5zeW1ib2xfc3RhcnQg
ICAgICAgICA9IHN5bWJvbF9zdGFydDsKK2V4cG9ydHMuc3ltYm9sX2VuZCAgICAgICAgICAgPSBz
eW1ib2xfZW5kOworZXhwb3J0cy5yaHNfc3RhcnQgICAgICAgICAgICA9IHJoc19zdGFydDsKK2V4
cG9ydHMucmhzX2VuZCAgICAgICAgICAgICAgPSByaHNfZW5kOworZXhwb3J0cy5zeW1ib2xfc3Rh
cnRfcG9zICAgICA9IHN5bWJvbF9zdGFydF9wb3M7CitleHBvcnRzLnN5bWJvbF9lbmRfcG9zICAg
ICAgID0gc3ltYm9sX2VuZF9wb3M7CitleHBvcnRzLnJoc19zdGFydF9wb3MgICAgICAgID0gcmhz
X3N0YXJ0X3BvczsKK2V4cG9ydHMucmhzX2VuZF9wb3MgICAgICAgICAgPSByaHNfZW5kX3BvczsK
K2V4cG9ydHMuY2xlYXJfcGFyc2VyICAgICAgICAgPSBjbGVhcl9wYXJzZXI7CitleHBvcnRzLlBh
cnNlX2Vycm9yICAgICAgICAgID0gUGFyc2VfZXJyb3I7CitleHBvcnRzLnNldF90cmFjZSAgICAg
ICAgICAgID0gc2V0X3RyYWNlOworZXhwb3J0cy5ZWWV4aXQgICAgICAgICAgICAgICA9IFlZZXhp
dDsKK2V4cG9ydHMueXlwYXJzZSAgICAgICAgICAgICAgPSB5eXBhcnNlOworZXhwb3J0cy5wZWVr
X3ZhbCAgICAgICAgICAgICA9IHBlZWtfdmFsOworZXhwb3J0cy5pc19jdXJyZW50X2xvb2thaGVh
ZCA9IGlzX2N1cnJlbnRfbG9va2FoZWFkOworZXhwb3J0cy5wYXJzZV9lcnJvciAgICAgICAgICA9
IHBhcnNlX2Vycm9yOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBwYXJz
aW5nLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVn
aXN0cnlbJ3BlcnZhc2l2ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7
fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHBlcnZhc2l2ZXMuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0
JzsKKwordmFyIEN1cnJ5ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsK
K3ZhciBDYW1sX2lvICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfaW8iKTsKK3Zh
ciBDYW1sX29iaiAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfb2JqIik7Cit2YXIg
Q2FtbF9mb3JtYXQgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2Zvcm1hdCIpOwordmFy
IENhbWxfc3RyaW5nICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3Zh
ciBDYW1sX2V4Y2VwdGlvbnMgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0aW9ucyIp
OwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zICA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMiKTsKK3ZhciBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MgPSByZXF1aXJlKCIu
L2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcyIpOworCitmdW5jdGlvbiBmYWlsd2l0aChzKSB7Cisg
IHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAg
ICAgcworICAgICAgXTsKK30KKworZnVuY3Rpb24gaW52YWxpZF9hcmcocykgeworICB0aHJvdyBb
CisgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgIHMKKyAgICAgIF07Cit9CisKK3ZhciBFeGl0ID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgi
UGVydmFzaXZlcy5FeGl0Iik7CisKK2Z1bmN0aW9uIG1pbih4LCB5KSB7CisgIGlmIChDYW1sX29i
ai5jYW1sX2xlc3NlcXVhbCh4LCB5KSkgeworICAgIHJldHVybiB4OworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiB5OworICB9Cit9CisKK2Z1bmN0aW9uIG1heCh4LCB5KSB7CisgIGlmIChDYW1s
X29iai5jYW1sX2dyZWF0ZXJlcXVhbCh4LCB5KSkgeworICAgIHJldHVybiB4OworICB9CisgIGVs
c2UgeworICAgIHJldHVybiB5OworICB9Cit9CisKK2Z1bmN0aW9uIGFicyh4KSB7CisgIGlmICh4
ID49IDApIHsKKyAgICByZXR1cm4geDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLXggfCAw
OworICB9Cit9CisKK2Z1bmN0aW9uIGxub3QoeCkgeworICByZXR1cm4geCBeIC0xOworfQorCit2
YXIgbWluX2ludCA9IC0yMTQ3NDgzNjQ4OworCitmdW5jdGlvbiAkY2FyZXQoYSwgYikgeworICBy
ZXR1cm4gYSArIGI7Cit9CisKK2Z1bmN0aW9uIGNoYXJfb2ZfaW50KG4pIHsKKyAgaWYgKG4gPCAw
IHx8IG4gPiAyNTUpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiY2hhcl9vZl9pbnQiCisgICAgICAg
IF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG47CisgIH0KK30KKworZnVuY3Rpb24gc3Ry
aW5nX29mX2Jvb2woYikgeworICBpZiAoYikgeworICAgIHJldHVybiAidHJ1ZSI7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuICJmYWxzZSI7CisgIH0KK30KKworZnVuY3Rpb24gYm9vbF9vZl9z
dHJpbmcocGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgImZhbHNlIiA6IAor
ICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIGNhc2UgInRydWUiIDogCisgICAgICAg
IHJldHVybiAvKiB0cnVlICovMTsKKyAgICBkZWZhdWx0OgorICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAgICJib29sX29mX3N0cmluZyIKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIHN0
cmluZ19vZl9pbnQocGFyYW0pIHsKKyAgcmV0dXJuICIiICsgcGFyYW07Cit9CisKK2Z1bmN0aW9u
IHZhbGlkX2Zsb2F0X2xleGVtKHMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsKKyAgdmFyIF9pID0g
MDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0gX2k7CisgICAgaWYgKGkgPj0gbCkgewor
ICAgICAgcmV0dXJuICRjYXJldChzLCAiLiIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZh
ciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICAgIGlmIChtYXRjaCA+PSA0OCkg
eworICAgICAgICBpZiAobWF0Y2ggPj0gNTgpIHsKKyAgICAgICAgICByZXR1cm4gczsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKG1hdGNoICE9PSA0NSkgeworICAgICAgICByZXR1cm4gczsKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAg
ICAKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9mbG9hdChm
KSB7CisgIHJldHVybiB2YWxpZF9mbG9hdF9sZXhlbShDYW1sX2Zvcm1hdC5jYW1sX2Zvcm1hdF9m
bG9hdCgiJS4xMmciLCBmKSk7Cit9CisKK2Z1bmN0aW9uICRhdChsMSwgbDIpIHsKKyAgaWYgKGwx
KSB7CisgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgbDFbMF0sCisgICAgICAgICAg
ICAkYXQobDFbMV0sIGwyKQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IGwyOworICB9Cit9CisKK3ZhciBzdGRpbiA9IENhbWxfaW8uc3RkaW47CisKK3ZhciBzdGRvdXQg
PSBDYW1sX2lvLnN0ZG91dDsKKwordmFyIHN0ZGVyciA9IENhbWxfaW8uc3RkZXJyOworCitmdW5j
dGlvbiBvcGVuX291dF9nZW4oXywgXyQxLCBfJDIpIHsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9t
bF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0aHJv
dyAiY2FtbF9zeXNfb3BlbiBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsK
KyAgICAgICAgICAgICAgfSgpKTsKK30KKworZnVuY3Rpb24gb3Blbl9vdXQobmFtZSkgeworICBy
ZXR1cm4gb3Blbl9vdXRfZ2VuKC8qIDo6ICovWworICAgICAgICAgICAgICAvKiBPcGVuX3dyb25s
eSAqLzEsCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIC8qIE9wZW5f
Y3JlYXQgKi8zLAorICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
LyogT3Blbl90cnVuYyAqLzQsCisgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgLyogT3Blbl90ZXh0ICovNywKKyAgICAgICAgICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICBdLCA0MzgsIG5hbWUpOworfQorCitmdW5jdGlvbiBvcGVuX291dF9i
aW4obmFtZSkgeworICByZXR1cm4gb3Blbl9vdXRfZ2VuKC8qIDo6ICovWworICAgICAgICAgICAg
ICAvKiBPcGVuX3dyb25seSAqLzEsCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgIC8qIE9wZW5fY3JlYXQgKi8zLAorICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgLyogT3Blbl90cnVuYyAqLzQsCisgICAgICAgICAgICAgICAgICAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogT3Blbl9iaW5hcnkgKi82LAorICAgICAgICAg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0sIDQzOCwgbmFtZSk7Cit9CisKK2Z1
bmN0aW9uIGZsdXNoX2FsbCgpIHsKKyAgdmFyIF9wYXJhbSA9IENhbWxfaW8uY2FtbF9tbF9vdXRf
Y2hhbm5lbHNfbGlzdCgvKiAoKSAqLzApOworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFt
ID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgdHJ5IHsKKyAgICAgICAgQ2FtbF9p
by5jYW1sX21sX2ZsdXNoKHBhcmFtWzBdKTsKKyAgICAgIH0KKyAgICAgIGNhdGNoIChleG4pewor
ICAgICAgICAKKyAgICAgIH0KKyAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgY29udGlu
dWUgOworICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qICgpICovMDsK
KyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG91dHB1dF9ieXRlcyhvYywgcykgeworICByZXR1
cm4gQ2FtbF9pby5jYW1sX21sX291dHB1dChvYywgcywgMCwgcy5sZW5ndGgpOworfQorCitmdW5j
dGlvbiBvdXRwdXRfc3RyaW5nKG9jLCBzKSB7CisgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfb3V0
cHV0KG9jLCBzLCAwLCBzLmxlbmd0aCk7Cit9CisKK2Z1bmN0aW9uIG91dHB1dChvYywgcywgb2Zz
LCBsZW4pIHsKKyAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiAocy5sZW5ndGggLSBs
ZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJvdXRwdXQiCisgICAgICAgIF07CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXQob2MsIHMsIG9mcywg
bGVuKTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXRfc3Vic3RyaW5nKG9jLCBzLCBvZnMsIGxl
bikgeworICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8
IDApKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmlu
dmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIm91dHB1dF9zdWJzdHJpbmciCisgICAgICAgIF07
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXQob2MsIHMs
IG9mcywgbGVuKTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXRfdmFsdWUoXywgXyQxKSB7Cisg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9vdXRwdXRfdmFs
dWUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgp
OworfQorCitmdW5jdGlvbiBjbG9zZV9vdXQob2MpIHsKKyAgQ2FtbF9pby5jYW1sX21sX2ZsdXNo
KG9jKTsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21s
X2Nsb3NlX2NoYW5uZWwgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Cisg
ICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBjbG9zZV9vdXRfbm9lcnIob2MpIHsKKyAgdHJ5
IHsKKyAgICBDYW1sX2lvLmNhbWxfbWxfZmx1c2gob2MpOworICB9CisgIGNhdGNoIChleG4pewor
ICAgIAorICB9CisgIHRyeSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgdGhyb3cgImNhbWxfbWxfY2xvc2VfY2hhbm5lbCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xl
c2NyaXB0IHlldFxuIjsKKyAgICAgICAgICAgIH0oKTsKKyAgfQorICBjYXRjaCAoZXhuJDEpewor
ICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gb3Blbl9pbl9nZW4oXywg
XyQxLCBfJDIpIHsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX3N5c19vcGVuIG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgICB9KCkpOwor
fQorCitmdW5jdGlvbiBvcGVuX2luKG5hbWUpIHsKKyAgcmV0dXJuIG9wZW5faW5fZ2VuKC8qIDo6
ICovWworICAgICAgICAgICAgICAvKiBPcGVuX3Jkb25seSAqLzAsCisgICAgICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgICAgIC8qIE9wZW5fdGV4dCAqLzcsCisgICAgICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0sIDAsIG5hbWUpOwor
fQorCitmdW5jdGlvbiBvcGVuX2luX2JpbihuYW1lKSB7CisgIHJldHVybiBvcGVuX2luX2dlbigv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogT3Blbl9yZG9ubHkgKi8wLAorICAgICAgICAgICAg
ICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAvKiBPcGVuX2JpbmFyeSAqLzYsCisgICAgICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0sIDAsIG5h
bWUpOworfQorCitmdW5jdGlvbiBpbnB1dChfLCBzLCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwg
MCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cg
WworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisg
ICAgICAgICAgImlucHV0IgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0IG5vdCBpbXBs
ZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgfSgpOworICB9Cit9
CisKK2Z1bmN0aW9uIHVuc2FmZV9yZWFsbHlfaW5wdXQoXywgXyQxLCBfb2ZzLCBfbGVuKSB7Cisg
IHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbGVuID0gX2xlbjsKKyAgICB2YXIgb2ZzID0gX29mczsK
KyAgICBpZiAobGVuIDw9IDApIHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgdmFyIHIgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgdGhyb3cgImNh
bWxfbWxfaW5wdXQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAg
ICAgIH0oKTsKKyAgICAgIGlmIChyKSB7CisgICAgICAgIF9sZW4gPSBsZW4gLSByIHwgMDsKKyAg
ICAgICAgX29mcyA9IG9mcyArIHIgfCAwOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmVuZF9vZl9maWxlOworICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcmVh
bGx5X2lucHV0KGljLCBzLCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8
IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgInJlYWxs
eV9pbnB1dCIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gdW5zYWZlX3Jl
YWxseV9pbnB1dChpYywgcywgb2ZzLCBsZW4pOworICB9Cit9CisKK2Z1bmN0aW9uIHJlYWxseV9p
bnB1dF9zdHJpbmcoaWMsIGxlbikgeworICB2YXIgcyA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRl
X3N0cmluZyhsZW4pOworICByZWFsbHlfaW5wdXQoaWMsIHMsIDAsIGxlbik7CisgIHJldHVybiBD
YW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocyk7Cit9CisKK2Z1bmN0aW9uIGlucHV0X2xpbmUo
Y2hhbikgeworICB2YXIgYnVpbGRfcmVzdWx0ID0gZnVuY3Rpb24gKGJ1ZiwgX3BvcywgX3BhcmFt
KSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgICAg
dmFyIHBvcyA9IF9wb3M7CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGhkID0gcGFy
YW1bMF07CisgICAgICAgIHZhciBsZW4gPSBoZC5sZW5ndGg7CisgICAgICAgIENhbWxfc3RyaW5n
LmNhbWxfYmxpdF9ieXRlcyhoZCwgMCwgYnVmLCBwb3MgLSBsZW4gfCAwLCBsZW4pOworICAgICAg
ICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgX3BvcyA9IHBvcyAtIGxlbiB8IDA7CisgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIGJ1ZjsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgc2NhbiA9IGZ1bmN0aW9u
IChfYWNjdSwgX2xlbikgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBsZW4gPSBfbGVu
OworICAgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICAgIHZhciBuID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0X3NjYW5fbGluZSBub3QgaW1wbGVtZW50ZWQg
YnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgfSgpOworICAgICAgaWYgKG4pIHsKKyAg
ICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgICAgdmFyIHJlcyA9IENhbWxfc3RyaW5nLmNhbWxf
Y3JlYXRlX3N0cmluZyhuIC0gMSB8IDApOworICAgICAgICAgIChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfaW5wdXQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2ts
ZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgICAgIH0oKSk7CisgICAgICAgICAgQ2FtbF9pby5j
YW1sX21sX2lucHV0X2NoYXIoY2hhbik7CisgICAgICAgICAgaWYgKGFjY3UpIHsKKyAgICAgICAg
ICAgIHZhciBsZW4kMSA9IChsZW4gKyBuIHwgMCkgLSAxIHwgMDsKKyAgICAgICAgICAgIHJldHVy
biBidWlsZF9yZXN1bHQoQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKGxlbiQxKSwgbGVu
JDEsIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgcmVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBiZWcgPSBDYW1sX3N0cmlu
Zy5jYW1sX2NyZWF0ZV9zdHJpbmcoLW4gfCAwKTsKKyAgICAgICAgICAoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0IG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgICB9KCkpOworICAgICAgICAgIF9sZW4g
PSBsZW4gLSBuIHwgMDsKKyAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgICAg
YmVnLAorICAgICAgICAgICAgYWNjdQorICAgICAgICAgIF07CisgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChhY2N1KSB7
CisgICAgICAgIHJldHVybiBidWlsZF9yZXN1bHQoQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3Ry
aW5nKGxlbiksIGxlbiwgYWNjdSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhy
b3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZW5kX29mX2ZpbGU7CisgICAgICB9CisgICAgfTsK
KyAgfTsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzY2FuKC8qIFtdICov
MCwgMCkpOworfQorCitmdW5jdGlvbiBjbG9zZV9pbl9ub2VycigpIHsKKyAgdHJ5IHsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9jbG9zZV9j
aGFubmVsIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAg
ICAgfSgpOworICB9CisgIGNhdGNoIChleG4peworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0K
K30KKworZnVuY3Rpb24gcHJpbnRfY2hhcihjKSB7CisgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxf
b3V0cHV0X2NoYXIoc3Rkb3V0LCBjKTsKK30KKworZnVuY3Rpb24gcHJpbnRfc3RyaW5nKHMpIHsK
KyAgcmV0dXJuIG91dHB1dF9zdHJpbmcoc3Rkb3V0LCBzKTsKK30KKworZnVuY3Rpb24gcHJpbnRf
Ynl0ZXMocykgeworICByZXR1cm4gb3V0cHV0X2J5dGVzKHN0ZG91dCwgcyk7Cit9CisKK2Z1bmN0
aW9uIHByaW50X2ludChpKSB7CisgIHJldHVybiBvdXRwdXRfc3RyaW5nKHN0ZG91dCwgIiIgKyBp
KTsKK30KKworZnVuY3Rpb24gcHJpbnRfZmxvYXQoZikgeworICByZXR1cm4gb3V0cHV0X3N0cmlu
ZyhzdGRvdXQsIHZhbGlkX2Zsb2F0X2xleGVtKENhbWxfZm9ybWF0LmNhbWxfZm9ybWF0X2Zsb2F0
KCIlLjEyZyIsIGYpKSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X2VuZGxpbmUocGFyYW0pIHsKKyAg
Y29uc29sZS5sb2cocGFyYW0pOworICByZXR1cm4gMDsKK30KKworZnVuY3Rpb24gcHJpbnRfbmV3
bGluZSgpIHsKKyAgQ2FtbF9pby5jYW1sX21sX291dHB1dF9jaGFyKHN0ZG91dCwgLyogIlxuIiAq
LzEwKTsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9mbHVzaChzdGRvdXQpOworfQorCitmdW5j
dGlvbiBwcmVycl9jaGFyKGMpIHsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXRfY2hh
cihzdGRlcnIsIGMpOworfQorCitmdW5jdGlvbiBwcmVycl9zdHJpbmcocykgeworICByZXR1cm4g
b3V0cHV0X3N0cmluZyhzdGRlcnIsIHMpOworfQorCitmdW5jdGlvbiBwcmVycl9ieXRlcyhzKSB7
CisgIHJldHVybiBvdXRwdXRfYnl0ZXMoc3RkZXJyLCBzKTsKK30KKworZnVuY3Rpb24gcHJlcnJf
aW50KGkpIHsKKyAgcmV0dXJuIG91dHB1dF9zdHJpbmcoc3RkZXJyLCAiIiArIGkpOworfQorCitm
dW5jdGlvbiBwcmVycl9mbG9hdChmKSB7CisgIHJldHVybiBvdXRwdXRfc3RyaW5nKHN0ZGVyciwg
dmFsaWRfZmxvYXRfbGV4ZW0oQ2FtbF9mb3JtYXQuY2FtbF9mb3JtYXRfZmxvYXQoIiUuMTJnIiwg
ZikpKTsKK30KKworZnVuY3Rpb24gcHJlcnJfZW5kbGluZShwYXJhbSkgeworICBjb25zb2xlLmVy
cm9yKHBhcmFtKTsKKyAgcmV0dXJuIDA7Cit9CisKK2Z1bmN0aW9uIHByZXJyX25ld2xpbmUoKSB7
CisgIENhbWxfaW8uY2FtbF9tbF9vdXRwdXRfY2hhcihzdGRlcnIsIC8qICJcbiIgKi8xMCk7Cisg
IHJldHVybiBDYW1sX2lvLmNhbWxfbWxfZmx1c2goc3RkZXJyKTsKK30KKworZnVuY3Rpb24gcmVh
ZF9saW5lKCkgeworICBDYW1sX2lvLmNhbWxfbWxfZmx1c2goc3Rkb3V0KTsKKyAgcmV0dXJuIGlu
cHV0X2xpbmUoc3RkaW4pOworfQorCitmdW5jdGlvbiByZWFkX2ludCgpIHsKKyAgcmV0dXJuIENh
bWxfZm9ybWF0LmNhbWxfaW50X29mX3N0cmluZygoQ2FtbF9pby5jYW1sX21sX2ZsdXNoKHN0ZG91
dCksIGlucHV0X2xpbmUoc3RkaW4pKSk7Cit9CisKK2Z1bmN0aW9uIHJlYWRfZmxvYXQoKSB7Cisg
IHJldHVybiBDYW1sX2Zvcm1hdC5jYW1sX2Zsb2F0X29mX3N0cmluZygoQ2FtbF9pby5jYW1sX21s
X2ZsdXNoKHN0ZG91dCksIGlucHV0X2xpbmUoc3RkaW4pKSk7Cit9CisKK2Z1bmN0aW9uIHN0cmlu
Z19vZl9mb3JtYXQocGFyYW0pIHsKKyAgcmV0dXJuIHBhcmFtWzFdOworfQorCitmdW5jdGlvbiAk
Y2FyZXQkY2FyZXQocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIC8qIEZvcm1hdCAqL1sKKyAg
ICAgICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdChwYXJhbVswXSwgcGFy
YW0kMVswXSksCisgICAgICAgICAgJGNhcmV0KHBhcmFtWzFdLCAkY2FyZXQoIiUsIiwgcGFyYW0k
MVsxXSkpCisgICAgICAgIF07Cit9CisKK3ZhciBleGl0X2Z1bmN0aW9uID0gW2ZsdXNoX2FsbF07
CisKK2Z1bmN0aW9uIGF0X2V4aXQoZikgeworICB2YXIgZyA9IGV4aXRfZnVuY3Rpb25bMF07Cisg
IGV4aXRfZnVuY3Rpb25bMF0gPSBmdW5jdGlvbiAoKSB7CisgICAgQ3VycnkuXzEoZiwgLyogKCkg
Ki8wKTsKKyAgICByZXR1cm4gQ3VycnkuXzEoZywgLyogKCkgKi8wKTsKKyAgfTsKKyAgcmV0dXJu
IC8qICgpICovMDsKK30KKworZnVuY3Rpb24gZG9fYXRfZXhpdCgpIHsKKyAgcmV0dXJuIEN1cnJ5
Ll8xKGV4aXRfZnVuY3Rpb25bMF0sIC8qICgpICovMCk7Cit9CisKK2Z1bmN0aW9uIGV4aXQoKSB7
CisgIGRvX2F0X2V4aXQoLyogKCkgKi8wKTsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHRocm93ICJjYW1sX3N5c19leGl0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3Jp
cHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwordmFyIG1heF9pbnQgPSAyMTQ3NDgzNjQ3
OworCit2YXIgaW5maW5pdHkgPSBJbmZpbml0eTsKKwordmFyIG5lZ19pbmZpbml0eSA9IC1JbmZp
bml0eTsKKwordmFyIG5hbiA9IE5hTjsKKwordmFyIG1heF9mbG9hdCA9IE51bWJlci5NQVhfVkFM
VUU7CisKK3ZhciBtaW5fZmxvYXQgPSBOdW1iZXIuTUlOX1ZBTFVFOworCit2YXIgZXBzaWxvbl9m
bG9hdCA9IDIuMjIwNDQ2MDQ5MjUwMzEzZS0xNjsKKwordmFyIGZsdXNoID0gQ2FtbF9pby5jYW1s
X21sX2ZsdXNoOworCit2YXIgb3V0cHV0X2NoYXIgPSBDYW1sX2lvLmNhbWxfbWxfb3V0cHV0X2No
YXI7CisKK3ZhciBvdXRwdXRfYnl0ZSA9IENhbWxfaW8uY2FtbF9tbF9vdXRwdXRfY2hhcjsKKwor
ZnVuY3Rpb24gb3V0cHV0X2JpbmFyeV9pbnQoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9vdXRwdXRfaW50IG5vdCBpbXBsZW1lbnRl
ZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24g
c2Vla19vdXQoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0
aHJvdyAiY2FtbF9tbF9zZWVrX291dCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHll
dFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHBvc19vdXQoKSB7CisgIHJldHVy
biBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3Nfb3V0IG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwor
ZnVuY3Rpb24gb3V0X2NoYW5uZWxfbGVuZ3RoKCkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfY2hhbm5lbF9zaXplIG5vdCBpbXBsZW1lbnRlZCBi
eSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2V0
X2JpbmFyeV9tb2RlX291dChfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHRocm93ICJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSBub3QgaW1wbGVtZW50ZWQgYnkg
YnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK3ZhciBpbnB1dF9jaGFy
ID0gQ2FtbF9pby5jYW1sX21sX2lucHV0X2NoYXI7CisKK3ZhciBpbnB1dF9ieXRlID0gQ2FtbF9p
by5jYW1sX21sX2lucHV0X2NoYXI7CisKK2Z1bmN0aW9uIGlucHV0X2JpbmFyeV9pbnQoKSB7Cisg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9pbnB1dF9p
bnQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgp
OworfQorCitmdW5jdGlvbiBpbnB1dF92YWx1ZSgpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIHRocm93ICJjYW1sX2lucHV0X3ZhbHVlIG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2Vla19p
bihfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJj
YW1sX21sX3NlZWtfaW4gbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Cisg
ICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBwb3NfaW4oKSB7CisgIHJldHVybiBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3NfaW4gbm90IGltcGxlbWVudGVk
IGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBp
bl9jaGFubmVsX2xlbmd0aCgpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHRocm93ICJjYW1sX21sX2NoYW5uZWxfc2l6ZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIGNsb3NlX2luKCkgewor
ICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfY2xvc2Vf
Y2hhbm5lbCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAg
ICB9KCk7Cit9CisKK2Z1bmN0aW9uIHNldF9iaW5hcnlfbW9kZV9pbihfLCBfJDEpIHsKKyAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21sX3NldF9iaW5hcnlf
bW9kZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9
KCk7Cit9CisKK2Z1bmN0aW9uIExhcmdlRmlsZV8wMDAoXywgXyQxKSB7CisgIHJldHVybiBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9zZWVrX291dF82NCBub3QgaW1w
bGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1
bmN0aW9uIExhcmdlRmlsZV8wMDEoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB0aHJvdyAiY2FtbF9tbF9wb3Nfb3V0XzY0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVz
Y3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gTGFyZ2VGaWxlXzAw
MigpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21s
X2NoYW5uZWxfc2l6ZV82NCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsK
KyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIExhcmdlRmlsZV8wMDMoXywgXyQxKSB7Cisg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9zZWVrX2lu
XzY0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0o
KTsKK30KKworZnVuY3Rpb24gTGFyZ2VGaWxlXzAwNCgpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21sX3Bvc19pbl82NCBub3QgaW1wbGVtZW50ZWQg
YnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIExh
cmdlRmlsZV8wMDUoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJv
dyAiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlw
dCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCit2YXIgTGFyZ2VGaWxlID0gWworICBMYXJn
ZUZpbGVfMDAwLAorICBMYXJnZUZpbGVfMDAxLAorICBMYXJnZUZpbGVfMDAyLAorICBMYXJnZUZp
bGVfMDAzLAorICBMYXJnZUZpbGVfMDA0LAorICBMYXJnZUZpbGVfMDA1CitdOworCitleHBvcnRz
LmludmFsaWRfYXJnICAgICAgICAgPSBpbnZhbGlkX2FyZzsKK2V4cG9ydHMuZmFpbHdpdGggICAg
ICAgICAgICA9IGZhaWx3aXRoOworZXhwb3J0cy5FeGl0ICAgICAgICAgICAgICAgID0gRXhpdDsK
K2V4cG9ydHMubWluICAgICAgICAgICAgICAgICA9IG1pbjsKK2V4cG9ydHMubWF4ICAgICAgICAg
ICAgICAgICA9IG1heDsKK2V4cG9ydHMuYWJzICAgICAgICAgICAgICAgICA9IGFiczsKK2V4cG9y
dHMubWF4X2ludCAgICAgICAgICAgICA9IG1heF9pbnQ7CitleHBvcnRzLm1pbl9pbnQgICAgICAg
ICAgICAgPSBtaW5faW50OworZXhwb3J0cy5sbm90ICAgICAgICAgICAgICAgID0gbG5vdDsKK2V4
cG9ydHMuaW5maW5pdHkgICAgICAgICAgICA9IGluZmluaXR5OworZXhwb3J0cy5uZWdfaW5maW5p
dHkgICAgICAgID0gbmVnX2luZmluaXR5OworZXhwb3J0cy5uYW4gICAgICAgICAgICAgICAgID0g
bmFuOworZXhwb3J0cy5tYXhfZmxvYXQgICAgICAgICAgID0gbWF4X2Zsb2F0OworZXhwb3J0cy5t
aW5fZmxvYXQgICAgICAgICAgID0gbWluX2Zsb2F0OworZXhwb3J0cy5lcHNpbG9uX2Zsb2F0ICAg
ICAgID0gZXBzaWxvbl9mbG9hdDsKK2V4cG9ydHMuJGNhcmV0ICAgICAgICAgICAgICA9ICRjYXJl
dDsKK2V4cG9ydHMuY2hhcl9vZl9pbnQgICAgICAgICA9IGNoYXJfb2ZfaW50OworZXhwb3J0cy5z
dHJpbmdfb2ZfYm9vbCAgICAgID0gc3RyaW5nX29mX2Jvb2w7CitleHBvcnRzLmJvb2xfb2Zfc3Ry
aW5nICAgICAgPSBib29sX29mX3N0cmluZzsKK2V4cG9ydHMuc3RyaW5nX29mX2ludCAgICAgICA9
IHN0cmluZ19vZl9pbnQ7CitleHBvcnRzLnN0cmluZ19vZl9mbG9hdCAgICAgPSBzdHJpbmdfb2Zf
ZmxvYXQ7CitleHBvcnRzLiRhdCAgICAgICAgICAgICAgICAgPSAkYXQ7CitleHBvcnRzLnN0ZGlu
ICAgICAgICAgICAgICAgPSBzdGRpbjsKK2V4cG9ydHMuc3Rkb3V0ICAgICAgICAgICAgICA9IHN0
ZG91dDsKK2V4cG9ydHMuc3RkZXJyICAgICAgICAgICAgICA9IHN0ZGVycjsKK2V4cG9ydHMucHJp
bnRfY2hhciAgICAgICAgICA9IHByaW50X2NoYXI7CitleHBvcnRzLnByaW50X3N0cmluZyAgICAg
ICAgPSBwcmludF9zdHJpbmc7CitleHBvcnRzLnByaW50X2J5dGVzICAgICAgICAgPSBwcmludF9i
eXRlczsKK2V4cG9ydHMucHJpbnRfaW50ICAgICAgICAgICA9IHByaW50X2ludDsKK2V4cG9ydHMu
cHJpbnRfZmxvYXQgICAgICAgICA9IHByaW50X2Zsb2F0OworZXhwb3J0cy5wcmludF9lbmRsaW5l
ICAgICAgID0gcHJpbnRfZW5kbGluZTsKK2V4cG9ydHMucHJpbnRfbmV3bGluZSAgICAgICA9IHBy
aW50X25ld2xpbmU7CitleHBvcnRzLnByZXJyX2NoYXIgICAgICAgICAgPSBwcmVycl9jaGFyOwor
ZXhwb3J0cy5wcmVycl9zdHJpbmcgICAgICAgID0gcHJlcnJfc3RyaW5nOworZXhwb3J0cy5wcmVy
cl9ieXRlcyAgICAgICAgID0gcHJlcnJfYnl0ZXM7CitleHBvcnRzLnByZXJyX2ludCAgICAgICAg
ICAgPSBwcmVycl9pbnQ7CitleHBvcnRzLnByZXJyX2Zsb2F0ICAgICAgICAgPSBwcmVycl9mbG9h
dDsKK2V4cG9ydHMucHJlcnJfZW5kbGluZSAgICAgICA9IHByZXJyX2VuZGxpbmU7CitleHBvcnRz
LnByZXJyX25ld2xpbmUgICAgICAgPSBwcmVycl9uZXdsaW5lOworZXhwb3J0cy5yZWFkX2xpbmUg
ICAgICAgICAgID0gcmVhZF9saW5lOworZXhwb3J0cy5yZWFkX2ludCAgICAgICAgICAgID0gcmVh
ZF9pbnQ7CitleHBvcnRzLnJlYWRfZmxvYXQgICAgICAgICAgPSByZWFkX2Zsb2F0OworZXhwb3J0
cy5vcGVuX291dCAgICAgICAgICAgID0gb3Blbl9vdXQ7CitleHBvcnRzLm9wZW5fb3V0X2JpbiAg
ICAgICAgPSBvcGVuX291dF9iaW47CitleHBvcnRzLm9wZW5fb3V0X2dlbiAgICAgICAgPSBvcGVu
X291dF9nZW47CitleHBvcnRzLmZsdXNoICAgICAgICAgICAgICAgPSBmbHVzaDsKK2V4cG9ydHMu
Zmx1c2hfYWxsICAgICAgICAgICA9IGZsdXNoX2FsbDsKK2V4cG9ydHMub3V0cHV0X2NoYXIgICAg
ICAgICA9IG91dHB1dF9jaGFyOworZXhwb3J0cy5vdXRwdXRfc3RyaW5nICAgICAgID0gb3V0cHV0
X3N0cmluZzsKK2V4cG9ydHMub3V0cHV0X2J5dGVzICAgICAgICA9IG91dHB1dF9ieXRlczsKK2V4
cG9ydHMub3V0cHV0ICAgICAgICAgICAgICA9IG91dHB1dDsKK2V4cG9ydHMub3V0cHV0X3N1YnN0
cmluZyAgICA9IG91dHB1dF9zdWJzdHJpbmc7CitleHBvcnRzLm91dHB1dF9ieXRlICAgICAgICAg
PSBvdXRwdXRfYnl0ZTsKK2V4cG9ydHMub3V0cHV0X2JpbmFyeV9pbnQgICA9IG91dHB1dF9iaW5h
cnlfaW50OworZXhwb3J0cy5vdXRwdXRfdmFsdWUgICAgICAgID0gb3V0cHV0X3ZhbHVlOworZXhw
b3J0cy5zZWVrX291dCAgICAgICAgICAgID0gc2Vla19vdXQ7CitleHBvcnRzLnBvc19vdXQgICAg
ICAgICAgICAgPSBwb3Nfb3V0OworZXhwb3J0cy5vdXRfY2hhbm5lbF9sZW5ndGggID0gb3V0X2No
YW5uZWxfbGVuZ3RoOworZXhwb3J0cy5jbG9zZV9vdXQgICAgICAgICAgID0gY2xvc2Vfb3V0Owor
ZXhwb3J0cy5jbG9zZV9vdXRfbm9lcnIgICAgID0gY2xvc2Vfb3V0X25vZXJyOworZXhwb3J0cy5z
ZXRfYmluYXJ5X21vZGVfb3V0ID0gc2V0X2JpbmFyeV9tb2RlX291dDsKK2V4cG9ydHMub3Blbl9p
biAgICAgICAgICAgICA9IG9wZW5faW47CitleHBvcnRzLm9wZW5faW5fYmluICAgICAgICAgPSBv
cGVuX2luX2JpbjsKK2V4cG9ydHMub3Blbl9pbl9nZW4gICAgICAgICA9IG9wZW5faW5fZ2VuOwor
ZXhwb3J0cy5pbnB1dF9jaGFyICAgICAgICAgID0gaW5wdXRfY2hhcjsKK2V4cG9ydHMuaW5wdXRf
bGluZSAgICAgICAgICA9IGlucHV0X2xpbmU7CitleHBvcnRzLmlucHV0ICAgICAgICAgICAgICAg
PSBpbnB1dDsKK2V4cG9ydHMucmVhbGx5X2lucHV0ICAgICAgICA9IHJlYWxseV9pbnB1dDsKK2V4
cG9ydHMucmVhbGx5X2lucHV0X3N0cmluZyA9IHJlYWxseV9pbnB1dF9zdHJpbmc7CitleHBvcnRz
LmlucHV0X2J5dGUgICAgICAgICAgPSBpbnB1dF9ieXRlOworZXhwb3J0cy5pbnB1dF9iaW5hcnlf
aW50ICAgID0gaW5wdXRfYmluYXJ5X2ludDsKK2V4cG9ydHMuaW5wdXRfdmFsdWUgICAgICAgICA9
IGlucHV0X3ZhbHVlOworZXhwb3J0cy5zZWVrX2luICAgICAgICAgICAgID0gc2Vla19pbjsKK2V4
cG9ydHMucG9zX2luICAgICAgICAgICAgICA9IHBvc19pbjsKK2V4cG9ydHMuaW5fY2hhbm5lbF9s
ZW5ndGggICA9IGluX2NoYW5uZWxfbGVuZ3RoOworZXhwb3J0cy5jbG9zZV9pbiAgICAgICAgICAg
ID0gY2xvc2VfaW47CitleHBvcnRzLmNsb3NlX2luX25vZXJyICAgICAgPSBjbG9zZV9pbl9ub2Vy
cjsKK2V4cG9ydHMuc2V0X2JpbmFyeV9tb2RlX2luICA9IHNldF9iaW5hcnlfbW9kZV9pbjsKK2V4
cG9ydHMuTGFyZ2VGaWxlICAgICAgICAgICA9IExhcmdlRmlsZTsKK2V4cG9ydHMuc3RyaW5nX29m
X2Zvcm1hdCAgICA9IHN0cmluZ19vZl9mb3JtYXQ7CitleHBvcnRzLiRjYXJldCRjYXJldCAgICAg
ICAgPSAkY2FyZXQkY2FyZXQ7CitleHBvcnRzLmV4aXQgICAgICAgICAgICAgICAgPSBleGl0Owor
ZXhwb3J0cy5hdF9leGl0ICAgICAgICAgICAgID0gYXRfZXhpdDsKK2V4cG9ydHMudmFsaWRfZmxv
YXRfbGV4ZW0gICA9IHZhbGlkX2Zsb2F0X2xleGVtOworZXhwb3J0cy51bnNhZmVfcmVhbGx5X2lu
cHV0ID0gdW5zYWZlX3JlYWxseV9pbnB1dDsKK2V4cG9ydHMuZG9fYXRfZXhpdCAgICAgICAgICA9
IGRvX2F0X2V4aXQ7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIHBlcnZh
c2l2ZXMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9y
ZWdpc3RyeVsncHJpbnRmJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307
CisvLy8vLy8vLyBzdGFydCBvZiBwcmludGYuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIEN1cnJ5ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBCdWZmZXIg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL2J1ZmZlciIpOwordmFyIFBlcnZhc2l2ZXMgICAgICAg
ICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxpbnRlcm5hbEZvcm1hdCA9IHJl
cXVpcmUoIi4vY2FtbGludGVybmFsRm9ybWF0Iik7CisKK2Z1bmN0aW9uIGtmcHJpbnRmKGssIG8s
IHBhcmFtKSB7CisgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYoZnVuY3Rp
b24gKG8sIGFjYykgeworICAgICAgICAgICAgICBDYW1saW50ZXJuYWxGb3JtYXQub3V0cHV0X2Fj
YyhvLCBhY2MpOworICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoaywgbyk7CisgICAgICAg
ICAgICB9LCBvLCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5jdGlvbiBr
YnByaW50ZihrLCBiLCBwYXJhbSkgeworICByZXR1cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2Vf
cHJpbnRmKGZ1bmN0aW9uIChiLCBhY2MpIHsKKyAgICAgICAgICAgICAgQ2FtbGludGVybmFsRm9y
bWF0LmJ1ZnB1dF9hY2MoYiwgYWNjKTsKKyAgICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGss
IGIpOworICAgICAgICAgICAgfSwgYiwgLyogRW5kX29mX2FjYyAqLzAsIHBhcmFtWzBdKTsKK30K
KworZnVuY3Rpb24gaWtmcHJpbnRmKGssIG9jLCBwYXJhbSkgeworICByZXR1cm4gQ2FtbGludGVy
bmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGZ1bmN0aW9uIChvYywgXykgeworICAgICAgICAgICAgICBy
ZXR1cm4gQ3VycnkuXzEoaywgb2MpOworICAgICAgICAgICAgfSwgb2MsIC8qIEVuZF9vZl9hY2Mg
Ki8wLCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIGZwcmludGYob2MsIGZtdCkgeworICByZXR1
cm4ga2ZwcmludGYoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8w
OworICAgICAgICAgICAgfSwgb2MsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIGJwcmludGYoYiwgZm10
KSB7CisgIHJldHVybiBrYnByaW50ZihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHJldHVy
biAvKiAoKSAqLzA7CisgICAgICAgICAgICB9LCBiLCBmbXQpOworfQorCitmdW5jdGlvbiBpZnBy
aW50ZihvYywgZm10KSB7CisgIHJldHVybiBpa2ZwcmludGYoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgICAgfSwgb2MsIGZtdCk7Cit9CisK
K2Z1bmN0aW9uIHByaW50ZihmbXQpIHsKKyAgcmV0dXJuIGZwcmludGYoUGVydmFzaXZlcy5zdGRv
dXQsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIGVwcmludGYoZm10KSB7CisgIHJldHVybiBmcHJpbnRm
KFBlcnZhc2l2ZXMuc3RkZXJyLCBmbXQpOworfQorCitmdW5jdGlvbiBrc3ByaW50ZihrLCBwYXJh
bSkgeworICB2YXIgayRwcmltZSA9IGZ1bmN0aW9uIChfLCBhY2MpIHsKKyAgICB2YXIgYnVmID0g
QnVmZmVyLmNyZWF0ZSg2NCk7CisgICAgQ2FtbGludGVybmFsRm9ybWF0LnN0cnB1dF9hY2MoYnVm
LCBhY2MpOworICAgIHJldHVybiBDdXJyeS5fMShrLCBCdWZmZXIuY29udGVudHMoYnVmKSk7Cisg
IH07CisgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYoayRwcmltZSwgLyog
KCkgKi8wLCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5jdGlvbiBzcHJp
bnRmKGZtdCkgeworICByZXR1cm4ga3NwcmludGYoZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAg
ICAgcmV0dXJuIHM7CisgICAgICAgICAgICB9LCBmbXQpOworfQorCit2YXIga3ByaW50ZiA9IGtz
cHJpbnRmOworCitleHBvcnRzLmZwcmludGYgICA9IGZwcmludGY7CitleHBvcnRzLnByaW50ZiAg
ICA9IHByaW50ZjsKK2V4cG9ydHMuZXByaW50ZiAgID0gZXByaW50ZjsKK2V4cG9ydHMuc3ByaW50
ZiAgID0gc3ByaW50ZjsKK2V4cG9ydHMuYnByaW50ZiAgID0gYnByaW50ZjsKK2V4cG9ydHMuaWZw
cmludGYgID0gaWZwcmludGY7CitleHBvcnRzLmtmcHJpbnRmICA9IGtmcHJpbnRmOworZXhwb3J0
cy5pa2ZwcmludGYgPSBpa2ZwcmludGY7CitleHBvcnRzLmtzcHJpbnRmICA9IGtzcHJpbnRmOwor
ZXhwb3J0cy5rYnByaW50ZiAgPSBrYnByaW50ZjsKK2V4cG9ydHMua3ByaW50ZiAgID0ga3ByaW50
ZjsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgcHJpbnRmLmpzIC8vLy8v
Ly8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ3ByaW50
J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFy
dCBvZiBwcmludC5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJT
SU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBM
aXN0ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBTZXhwciAg
ID0gcmVxdWlyZSgiLi9zZXhwciIpOwordmFyIEFycmFuZ2UgPSByZXF1aXJlKCIuL2FycmFuZ2Ui
KTsKKworZnVuY3Rpb24gaW5zdHIob2MsIHdpZHRoLCBlKSB7CisgIHJldHVybiBTZXhwci5vdXRw
dXQob2MsIHdpZHRoLCBBcnJhbmdlLmluc3RyKGUpKTsKK30KKworZnVuY3Rpb24gZnVuYyhvYywg
d2lkdGgsIGYpIHsKKyAgcmV0dXJuIFNleHByLm91dHB1dChvYywgd2lkdGgsIEFycmFuZ2UuZnVu
YyhmKSk7Cit9CisKK2Z1bmN0aW9uIG1vZHVsZV8ob2MsIHdpZHRoLCBtKSB7CisgIHJldHVybiBT
ZXhwci5vdXRwdXQob2MsIHdpZHRoLCBBcnJhbmdlLm1vZHVsZV8obSkpOworfQorCitmdW5jdGlv
biBzY3JpcHQob2MsIHdpZHRoLCBtb2RlLCBzKSB7CisgIHJldHVybiBMaXN0Lml0ZXIoZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiBTZXhwci5vdXRwdXQob2MsIHdpZHRo
LCBwYXJhbSk7CisgICAgICAgICAgICB9LCBBcnJhbmdlLnNjcmlwdChtb2RlLCBzKSk7Cit9CisK
K2V4cG9ydHMuaW5zdHIgICA9IGluc3RyOworZXhwb3J0cy5mdW5jICAgID0gZnVuYzsKK2V4cG9y
dHMubW9kdWxlXyA9IG1vZHVsZV87CitleHBvcnRzLnNjcmlwdCAgPSBzY3JpcHQ7CisvKiBBcnJh
bmdlIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgcHJpbnQuanMgLy8vLy8v
Ly8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnc2NyaXB0
J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFy
dCBvZiBzY3JpcHQuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVS
U0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIg
Q2FtbF9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZXhjZXB0
aW9ucyIpOworCit2YXIgU3ludGF4ID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiU2NyaXB0LlN5
bnRheCIpOworCitleHBvcnRzLlN5bnRheCA9IFN5bnRheDsKKy8qIE5vIHNpZGUgZWZmZWN0ICov
CisvLy8vLy8vLyBlbmQgb2Ygc2NyaXB0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0
czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ3NleHByJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKg
IGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBzZXhwci5qcyAvLy8vLy8vLwor
Ly8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQg
V0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBMaXN0ICAgICAgID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBCbG9jayAgICAgID0gcmVxdWlyZSgiYnMtcGxh
dGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2YXIgQ3VycnkgICAgICA9IHJlcXVpcmUoImJzLXBsYXRm
b3JtL2xpYi9qcy9jdXJyeSIpOwordmFyICQkU3RyaW5nICAgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvc3RyaW5nIik7Cit2YXIgUGVydmFzaXZlcyA9IHJlcXVpcmUoImJzLXBsYXRmb3Jt
L2xpYi9qcy9wZXJ2YXNpdmVzIik7CisKK2Z1bmN0aW9uICRjYXJldCRwbHVzKHMsIHIpIHsKKyAg
cmV0dXJuIC8qIENvbmNhdCAqL0Jsb2NrLl9fKDEsIFsvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
LyogTGVhZiAqL0Jsb2NrLl9fKDAsIFtzXSksCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgIHIsCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gJHBsdXMkY2FyZXQociwgcykgewor
ICByZXR1cm4gLyogQ29uY2F0ICovQmxvY2suX18oMSwgWy8qIDo6ICovWworICAgICAgICAgICAg
ICByLAorICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAvKiBMZWFmICov
QmxvY2suX18oMCwgW3NdKSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpdGVyKGYsIHBhcmFtKSB7Cisg
IGlmIChwYXJhbS50YWcpIHsKKyAgICByZXR1cm4gTGlzdC5pdGVyKGZ1bmN0aW9uIChwYXJhbSkg
eworICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGYsIHBhcmFtKTsKKyAgICAgICAgICAgICAg
fSwgcGFyYW1bMF0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDdXJyeS5fMShmLCBwYXJh
bVswXSk7CisgIH0KK30KKworZnVuY3Rpb24gY29uY2F0KHBhcmFtKSB7CisgIGlmIChwYXJhbS50
YWcpIHsKKyAgICByZXR1cm4gJCRTdHJpbmcuY29uY2F0KCIiLCBMaXN0Lm1hcChjb25jYXQsIHBh
cmFtWzBdKSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9Cit9CisK
K2Z1bmN0aW9uIHBwKG9mZiwgd2lkdGgsIHBhcmFtKSB7CisgIGlmIChwYXJhbS50YWcpIHsKKyAg
ICB2YXIgcyA9IHBhcmFtWzBdOworICAgIHZhciBwYXJ0aWFsX2FyZyA9IG9mZiArIDIgfCAwOwor
ICAgIHZhciBtYXRjaCA9IExpc3Quc3BsaXQoTGlzdC5tYXAoZnVuY3Rpb24gKHBhcmFtKSB7Cisg
ICAgICAgICAgICAgIHJldHVybiBwcChwYXJ0aWFsX2FyZywgd2lkdGgsIHBhcmFtKTsKKyAgICAg
ICAgICAgIH0sIHBhcmFtWzFdKSk7CisgICAgdmFyIHJzID0gbWF0Y2hbMV07CisgICAgdmFyIGxl
biA9IChzLmxlbmd0aCArIExpc3QubGVuZ3RoKHJzKSB8IDApICsgTGlzdC5mb2xkX2xlZnQoZnVu
Y3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICAgIHJldHVybiBwcmltICsgcHJpbSQxIHwg
MDsKKyAgICAgICAgfSwgMiwgbWF0Y2hbMF0pIHwgMDsKKyAgICB2YXIgbWF0Y2gkMTsKKyAgICBp
ZiAoKG9mZiArIGxlbiB8IDApIDw9IHdpZHRoKSB7CisgICAgICBtYXRjaCQxID0gLyogdHVwbGUg
Ki9bCisgICAgICAgICIgIiwKKyAgICAgICAgIiIKKyAgICAgIF07CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdmFyIGluZGVudCA9ICQkU3RyaW5nLm1ha2Uob2ZmLCAvKiAiICIgKi8zMik7Cisg
ICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICJcbiAgIiArIGluZGVudCwKKyAg
ICAgICAgIlxuIiArIGluZGVudAorICAgICAgXTsKKyAgICB9CisgICAgdmFyIHNlcCA9IG1hdGNo
JDFbMF07CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgbGVuLAorICAgICAg
ICAgICAgJGNhcmV0JHBsdXMoIigiLCAkY2FyZXQkcGx1cyhzLCAkcGx1cyRjYXJldCgkcGx1cyRj
YXJldCgvKiBDb25jYXQgKi9CbG9jay5fXygxLCBbTGlzdC5tYXAoZnVuY3Rpb24gKHIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRjYXJldCRwbHVzKHNl
cCwgcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBycyldKSwgbWF0
Y2gkMVsxXSksICIpIikpKQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIHMk
MSA9IHBhcmFtWzBdOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIHMkMS5s
ZW5ndGgsCisgICAgICAgICAgICAvKiBMZWFmICovQmxvY2suX18oMCwgW3MkMV0pCisgICAgICAg
ICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXQob2MsIHdpZHRoLCB4KSB7CisgIGl0ZXIo
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLm91dHB1dF9zdHJp
bmcob2MsIHBhcmFtKTsKKyAgICAgIH0sIHBwKDAsIHdpZHRoLCB4KVsxXSk7CisgIFBlcnZhc2l2
ZXMub3V0cHV0X3N0cmluZyhvYywgIlxuIik7CisgIHJldHVybiBDdXJyeS5fMShQZXJ2YXNpdmVz
LmZsdXNoLCBvYyk7Cit9CisKK2Z1bmN0aW9uIHByaW50KHBhcmFtLCBwYXJhbSQxKSB7CisgIHJl
dHVybiBvdXRwdXQoUGVydmFzaXZlcy5zdGRvdXQsIHBhcmFtLCBwYXJhbSQxKTsKK30KKworZnVu
Y3Rpb24gdG9fc3RyaW5nKHdpZHRoLCB4KSB7CisgIHJldHVybiBjb25jYXQocHAoMCwgd2lkdGgs
IHgpWzFdKSArICJcbiI7Cit9CisKK2V4cG9ydHMub3V0cHV0ICAgID0gb3V0cHV0OworZXhwb3J0
cy5wcmludCAgICAgPSBwcmludDsKK2V4cG9ydHMudG9fc3RyaW5nID0gdG9fc3RyaW5nOworLyog
Tm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBzZXhwci5qcyAvLy8vLy8vLworwqAg
wqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wydzb3VyY2UnXSA9IGZ1
bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHNv
dXJjZS5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEu
NC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBCbG9jayAg
ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2YXIgQ3VycnkgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyIFByaW50ZiAgICAg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcHJpbnRmIik7Cit2YXIgQ2FtbF9vYmogICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOwordmFyIFBlcnZhc2l2ZXMg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVydmFzaXZlcyIpOworCitmdW5jdGlvbiAk
YXQkYXQoeCwgcmVnaW9uKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyog
YXQgKi9yZWdpb24sCisgICAgICAgICAgLyogaXQgKi94CisgICAgICAgIF07Cit9CisKK3ZhciBu
b19wb3MgPSAvKiByZWNvcmQgKi9bCisgIC8qIGZpbGUgKi8iIiwKKyAgLyogbGluZSAqLzAsCisg
IC8qIGNvbHVtbiAqLzAKK107CisKK3ZhciBub19yZWdpb24gPSAvKiByZWNvcmQgKi9bCisgIC8q
IGxlZnQgKi9ub19wb3MsCisgIC8qIHJpZ2h0ICovbm9fcG9zCitdOworCitmdW5jdGlvbiBzdHJp
bmdfb2ZfcG9zKHBvcykgeworICBpZiAocG9zWy8qIGxpbmUgKi8xXSA9PT0gLTEpIHsKKyAgICBy
ZXR1cm4gQ3VycnkuXzEoUHJpbnRmLnNwcmludGYoLyogRm9ybWF0ICovWworICAgICAgICAgICAg
ICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAiMHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2su
X18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
CisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICIweCV4Igor
ICAgICAgICAgICAgICAgICAgXSksIHBvc1svKiBjb2x1bW4gKi8yXSk7CisgIH0KKyAgZWxzZSB7
CisgICAgcmV0dXJuIFBlcnZhc2l2ZXMuc3RyaW5nX29mX2ludChwb3NbLyogbGluZSAqLzFdKSAr
ICgiLiIgKyBQZXJ2YXNpdmVzLnN0cmluZ19vZl9pbnQocG9zWy8qIGNvbHVtbiAqLzJdICsgMSB8
IDApKTsKKyAgfQorfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfcmVnaW9uKHIpIHsKKyAgcmV0dXJu
IHJbLyogbGVmdCAqLzBdWy8qIGZpbGUgKi8wXSArICgiOiIgKyAoc3RyaW5nX29mX3BvcyhyWy8q
IGxlZnQgKi8wXSkgKyAoCisgICAgICAgICAgICAgIENhbWxfb2JqLmNhbWxfZXF1YWwoclsvKiBy
aWdodCAqLzFdLCByWy8qIGxlZnQgKi8wXSkgPyAiIiA6ICItIiArIHN0cmluZ19vZl9wb3Moclsv
KiByaWdodCAqLzFdKQorICAgICAgICAgICAgKSkpOworfQorCitleHBvcnRzLm5vX3BvcyAgICAg
ICAgICAgPSBub19wb3M7CitleHBvcnRzLm5vX3JlZ2lvbiAgICAgICAgPSBub19yZWdpb247Citl
eHBvcnRzLnN0cmluZ19vZl9wb3MgICAgPSBzdHJpbmdfb2ZfcG9zOworZXhwb3J0cy5zdHJpbmdf
b2ZfcmVnaW9uID0gc3RyaW5nX29mX3JlZ2lvbjsKK2V4cG9ydHMuJGF0JGF0ICAgICAgICAgICA9
ICRhdCRhdDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2Ygc291cmNlLmpz
IC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlb
J3N0cmluZyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2Ygc3RyaW5nLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBMaXN0
ICAgICAgICA9IHJlcXVpcmUoIi4vbGlzdCIpOwordmFyIEJ5dGVzICAgICAgID0gcmVxdWlyZSgi
Li9ieXRlcyIpOwordmFyIENhbWxfaW50MzIgID0gcmVxdWlyZSgiLi9jYW1sX2ludDMyIik7Cit2
YXIgQ2FtbF9zdHJpbmcgPSByZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7CisKK2Z1bmN0aW9uIG1h
a2UobiwgYykgeworICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5dGVzLm1h
a2UobiwgYykpOworfQorCitmdW5jdGlvbiBpbml0KG4sIGYpIHsKKyAgcmV0dXJuIENhbWxfc3Ry
aW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5pbml0KG4sIGYpKTsKK30KKworZnVuY3Rpb24gY29w
eShzKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMuY29weShD
YW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykpKTsKK30KKworZnVuY3Rpb24gc3ViKHMsIG9m
cywgbGVuKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMuc3Vi
KENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgb2ZzLCBsZW4pKTsKK30KKworZnVuY3Rp
b24gY29uY2F0KHNlcCwgbCkgeworICBpZiAobCkgeworICAgIHZhciBoZCA9IGxbMF07CisgICAg
dmFyIG51bSA9IFswXTsKKyAgICB2YXIgbGVuID0gWzBdOworICAgIExpc3QuaXRlcihmdW5jdGlv
biAocykgeworICAgICAgICAgIG51bVswXSA9IG51bVswXSArIDEgfCAwOworICAgICAgICAgIGxl
blswXSA9IGxlblswXSArIHMubGVuZ3RoIHwgMDsKKyAgICAgICAgICByZXR1cm4gLyogKCkgKi8w
OworICAgICAgICB9LCBsKTsKKyAgICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0
cmluZyhsZW5bMF0gKyBDYW1sX2ludDMyLmltdWwoc2VwLmxlbmd0aCwgbnVtWzBdIC0gMSB8IDAp
IHwgMCk7CisgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0cmluZyhoZCwgMCwgciwgMCwgaGQu
bGVuZ3RoKTsKKyAgICB2YXIgcG9zID0gW2hkLmxlbmd0aF07CisgICAgTGlzdC5pdGVyKGZ1bmN0
aW9uIChzKSB7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0cmluZyhzZXAsIDAs
IHIsIHBvc1swXSwgc2VwLmxlbmd0aCk7CisgICAgICAgICAgcG9zWzBdID0gcG9zWzBdICsgc2Vw
Lmxlbmd0aCB8IDA7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0cmluZyhzLCAw
LCByLCBwb3NbMF0sIHMubGVuZ3RoKTsKKyAgICAgICAgICBwb3NbMF0gPSBwb3NbMF0gKyBzLmxl
bmd0aCB8IDA7CisgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgfSwgbFsxXSk7
CisgICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhyKTsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gIiI7CisgIH0KK30KKworZnVuY3Rpb24gaXRlcihmLCBzKSB7CisgIHJl
dHVybiBCeXRlcy5pdGVyKGYsIENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSk7Cit9CisK
K2Z1bmN0aW9uIGl0ZXJpKGYsIHMpIHsKKyAgcmV0dXJuIEJ5dGVzLml0ZXJpKGYsIENhbWxfc3Ry
aW5nLmJ5dGVzX29mX3N0cmluZyhzKSk7Cit9CisKK2Z1bmN0aW9uIG1hcChmLCBzKSB7CisgIHJl
dHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFwKGYsIENhbWxfc3RyaW5n
LmJ5dGVzX29mX3N0cmluZyhzKSkpOworfQorCitmdW5jdGlvbiBtYXBpKGYsIHMpIHsKKyAgcmV0
dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5tYXBpKGYsIENhbWxfc3RyaW5n
LmJ5dGVzX29mX3N0cmluZyhzKSkpOworfQorCitmdW5jdGlvbiBpc19zcGFjZShwYXJhbSkgewor
ICB2YXIgc3dpdGNoZXIgPSBwYXJhbSAtIDkgfCAwOworICBpZiAoc3dpdGNoZXIgPiA0IHx8IHN3
aXRjaGVyIDwgMCkgeworICAgIGlmIChzd2l0Y2hlciAhPT0gMjMpIHsKKyAgICAgIHJldHVybiAv
KiBmYWxzZSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIHRydWUgKi8x
OworICAgIH0KKyAgfQorICBlbHNlIGlmIChzd2l0Y2hlciAhPT0gMikgeworICAgIHJldHVybiAv
KiB0cnVlICovMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9
Cit9CisKK2Z1bmN0aW9uIHRyaW0ocykgeworICBpZiAocyA9PT0gIiIgfHwgIShpc19zcGFjZShz
LmNoYXJDb2RlQXQoMCkpIHx8IGlzX3NwYWNlKHMuY2hhckNvZGVBdChzLmxlbmd0aCAtIDEgfCAw
KSkpKSB7CisgICAgcmV0dXJuIHM7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfc3Ry
aW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy50cmltKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmlu
ZyhzKSkpOworICB9Cit9CisKK2Z1bmN0aW9uIGVzY2FwZWQocykgeworICB2YXIgbmVlZHNfZXNj
YXBlID0gZnVuY3Rpb24gKF9pKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIGkgPSBf
aTsKKyAgICAgIGlmIChpID49IHMubGVuZ3RoKSB7CisgICAgICAgIHJldHVybiAvKiBmYWxzZSAq
LzA7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNoID0gcy5jaGFyQ29k
ZUF0KGkpOworICAgICAgICBpZiAobWF0Y2ggPj0gMzIpIHsKKyAgICAgICAgICB2YXIgc3dpdGNo
ZXIgPSBtYXRjaCAtIDM0IHwgMDsKKyAgICAgICAgICBpZiAoc3dpdGNoZXIgPiA1OCB8fCBzd2l0
Y2hlciA8IDApIHsKKyAgICAgICAgICAgIGlmIChzd2l0Y2hlciA+PSA5MykgeworICAgICAgICAg
ICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgaWYgKHN3aXRjaGVyID4gNTcgfHwgc3dpdGNoZXIgPCAxKSB7CisgICAgICAgICAgICBy
ZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICAKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0
dXJuIC8qIHRydWUgKi8xOworICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgaWYg
KG5lZWRzX2VzY2FwZSgwKSkgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJp
bmcoQnl0ZXMuZXNjYXBlZChDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykpKTsKKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiBpbmRleChzLCBjKSB7
CisgIHJldHVybiBCeXRlcy5pbmRleChDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocyksIGMp
OworfQorCitmdW5jdGlvbiByaW5kZXgocywgYykgeworICByZXR1cm4gQnl0ZXMucmluZGV4KENh
bWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgYyk7Cit9CisKK2Z1bmN0aW9uIGluZGV4X2Zy
b20ocywgaSwgYykgeworICByZXR1cm4gQnl0ZXMuaW5kZXhfZnJvbShDYW1sX3N0cmluZy5ieXRl
c19vZl9zdHJpbmcocyksIGksIGMpOworfQorCitmdW5jdGlvbiByaW5kZXhfZnJvbShzLCBpLCBj
KSB7CisgIHJldHVybiBCeXRlcy5yaW5kZXhfZnJvbShDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJp
bmcocyksIGksIGMpOworfQorCitmdW5jdGlvbiBjb250YWlucyhzLCBjKSB7CisgIHJldHVybiBC
eXRlcy5jb250YWlucyhDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocyksIGMpOworfQorCitm
dW5jdGlvbiBjb250YWluc19mcm9tKHMsIGksIGMpIHsKKyAgcmV0dXJuIEJ5dGVzLmNvbnRhaW5z
X2Zyb20oQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBpLCBjKTsKK30KKworZnVuY3Rp
b24gcmNvbnRhaW5zX2Zyb20ocywgaSwgYykgeworICByZXR1cm4gQnl0ZXMucmNvbnRhaW5zX2Zy
b20oQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBpLCBjKTsKK30KKworZnVuY3Rpb24g
dXBwZXJjYXNlKHMpIHsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRl
cy51cHBlcmNhc2UoQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpKSk7Cit9CisKK2Z1bmN0
aW9uIGxvd2VyY2FzZShzKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmco
Qnl0ZXMubG93ZXJjYXNlKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkpOworfQorCitm
dW5jdGlvbiBjYXBpdGFsaXplKHMpIHsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0
cmluZyhCeXRlcy5jYXBpdGFsaXplKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkpOwor
fQorCitmdW5jdGlvbiB1bmNhcGl0YWxpemUocykgeworICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0
ZXNfdG9fc3RyaW5nKEJ5dGVzLnVuY2FwaXRhbGl6ZShDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJp
bmcocykpKTsKK30KKwordmFyIGNvbXBhcmUgPSBDYW1sX3N0cmluZy5jYW1sX3N0cmluZ19jb21w
YXJlOworCit2YXIgZmlsbCA9IEJ5dGVzLmZpbGw7CisKK3ZhciBibGl0ID0gQnl0ZXMuYmxpdF9z
dHJpbmc7CisKK2V4cG9ydHMubWFrZSAgICAgICAgICAgPSBtYWtlOworZXhwb3J0cy5pbml0ICAg
ICAgICAgICA9IGluaXQ7CitleHBvcnRzLmNvcHkgICAgICAgICAgID0gY29weTsKK2V4cG9ydHMu
c3ViICAgICAgICAgICAgPSBzdWI7CitleHBvcnRzLmZpbGwgICAgICAgICAgID0gZmlsbDsKK2V4
cG9ydHMuYmxpdCAgICAgICAgICAgPSBibGl0OworZXhwb3J0cy5jb25jYXQgICAgICAgICA9IGNv
bmNhdDsKK2V4cG9ydHMuaXRlciAgICAgICAgICAgPSBpdGVyOworZXhwb3J0cy5pdGVyaSAgICAg
ICAgICA9IGl0ZXJpOworZXhwb3J0cy5tYXAgICAgICAgICAgICA9IG1hcDsKK2V4cG9ydHMubWFw
aSAgICAgICAgICAgPSBtYXBpOworZXhwb3J0cy50cmltICAgICAgICAgICA9IHRyaW07CitleHBv
cnRzLmVzY2FwZWQgICAgICAgID0gZXNjYXBlZDsKK2V4cG9ydHMuaW5kZXggICAgICAgICAgPSBp
bmRleDsKK2V4cG9ydHMucmluZGV4ICAgICAgICAgPSByaW5kZXg7CitleHBvcnRzLmluZGV4X2Zy
b20gICAgID0gaW5kZXhfZnJvbTsKK2V4cG9ydHMucmluZGV4X2Zyb20gICAgPSByaW5kZXhfZnJv
bTsKK2V4cG9ydHMuY29udGFpbnMgICAgICAgPSBjb250YWluczsKK2V4cG9ydHMuY29udGFpbnNf
ZnJvbSAgPSBjb250YWluc19mcm9tOworZXhwb3J0cy5yY29udGFpbnNfZnJvbSA9IHJjb250YWlu
c19mcm9tOworZXhwb3J0cy51cHBlcmNhc2UgICAgICA9IHVwcGVyY2FzZTsKK2V4cG9ydHMubG93
ZXJjYXNlICAgICAgPSBsb3dlcmNhc2U7CitleHBvcnRzLmNhcGl0YWxpemUgICAgID0gY2FwaXRh
bGl6ZTsKK2V4cG9ydHMudW5jYXBpdGFsaXplICAgPSB1bmNhcGl0YWxpemU7CitleHBvcnRzLmNv
bXBhcmUgICAgICAgID0gY29tcGFyZTsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBl
bmQgb2Ygc3RyaW5nLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisK
KworICBfcmVnaXN0cnlbJ3N5cyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9
IHt9OworLy8vLy8vLy8gc3RhcnQgb2Ygc3lzLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisK
K3ZhciBDYW1sX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0aW9ucyIpOworCit2
YXIgaXNfanMgPSAvKiB0cnVlICovMTsKKwordmFyIG1hdGNoXzAwMSA9IC8qIGFycmF5ICovW107
CisKK3ZhciBiaWdfZW5kaWFuID0gLyogZmFsc2UgKi8wOworCit2YXIgdW5peCA9IC8qIHRydWUg
Ki8xOworCit2YXIgd2luMzIgPSAvKiBmYWxzZSAqLzA7CisKK3ZhciBjeWd3aW4gPSAvKiBmYWxz
ZSAqLzA7CisKK3ZhciBtYXhfYXJyYXlfbGVuZ3RoID0gMjE0NzQ4MzY0NzsKKwordmFyIG1heF9z
dHJpbmdfbGVuZ3RoID0gMjE0NzQ4MzY0NzsKKwordmFyIGludGVyYWN0aXZlID0gWy8qIGZhbHNl
ICovMF07CisKK2Z1bmN0aW9uIHNldF9zaWduYWwoXywgXyQxKSB7CisgIHJldHVybiAvKiAoKSAq
LzA7Cit9CisKK3ZhciBCcmVhayA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIlN5cy5CcmVhayIp
OworCitmdW5jdGlvbiBjYXRjaF9icmVhaygpIHsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKwor
dmFyIGFyZ3YgPSBtYXRjaF8wMDE7CisKK3ZhciBleGVjdXRhYmxlX25hbWUgPSAiY21kIjsKKwor
dmFyIG9zX3R5cGUgPSAiVW5peCI7CisKK3ZhciB3b3JkX3NpemUgPSAzMjsKKwordmFyIHNpZ2Fi
cnQgPSAtMTsKKwordmFyIHNpZ2Fscm0gPSAtMjsKKwordmFyIHNpZ2ZwZSA9IC0zOworCit2YXIg
c2lnaHVwID0gLTQ7CisKK3ZhciBzaWdpbGwgPSAtNTsKKwordmFyIHNpZ2ludCA9IC02OworCit2
YXIgc2lna2lsbCA9IC03OworCit2YXIgc2lncGlwZSA9IC04OworCit2YXIgc2lncXVpdCA9IC05
OworCit2YXIgc2lnc2VndiA9IC0xMDsKKwordmFyIHNpZ3Rlcm0gPSAtMTE7CisKK3ZhciBzaWd1
c3IxID0gLTEyOworCit2YXIgc2lndXNyMiA9IC0xMzsKKwordmFyIHNpZ2NobGQgPSAtMTQ7CisK
K3ZhciBzaWdjb250ID0gLTE1OworCit2YXIgc2lnc3RvcCA9IC0xNjsKKwordmFyIHNpZ3RzdHAg
PSAtMTc7CisKK3ZhciBzaWd0dGluID0gLTE4OworCit2YXIgc2lndHRvdSA9IC0xOTsKKwordmFy
IHNpZ3Z0YWxybSA9IC0yMDsKKwordmFyIHNpZ3Byb2YgPSAtMjE7CisKK3ZhciBvY2FtbF92ZXJz
aW9uID0gIjQuMDIuMytkZXYxLTIwMTUtMDctMTAiOworCitleHBvcnRzLmFyZ3YgICAgICAgICAg
ICAgID0gYXJndjsKK2V4cG9ydHMuZXhlY3V0YWJsZV9uYW1lICAgPSBleGVjdXRhYmxlX25hbWU7
CitleHBvcnRzLmludGVyYWN0aXZlICAgICAgID0gaW50ZXJhY3RpdmU7CitleHBvcnRzLm9zX3R5
cGUgICAgICAgICAgID0gb3NfdHlwZTsKK2V4cG9ydHMudW5peCAgICAgICAgICAgICAgPSB1bml4
OworZXhwb3J0cy53aW4zMiAgICAgICAgICAgICA9IHdpbjMyOworZXhwb3J0cy5jeWd3aW4gICAg
ICAgICAgICA9IGN5Z3dpbjsKK2V4cG9ydHMud29yZF9zaXplICAgICAgICAgPSB3b3JkX3NpemU7
CitleHBvcnRzLmJpZ19lbmRpYW4gICAgICAgID0gYmlnX2VuZGlhbjsKK2V4cG9ydHMuaXNfanMg
ICAgICAgICAgICAgPSBpc19qczsKK2V4cG9ydHMubWF4X3N0cmluZ19sZW5ndGggPSBtYXhfc3Ry
aW5nX2xlbmd0aDsKK2V4cG9ydHMubWF4X2FycmF5X2xlbmd0aCAgPSBtYXhfYXJyYXlfbGVuZ3Ro
OworZXhwb3J0cy5zZXRfc2lnbmFsICAgICAgICA9IHNldF9zaWduYWw7CitleHBvcnRzLnNpZ2Fi
cnQgICAgICAgICAgID0gc2lnYWJydDsKK2V4cG9ydHMuc2lnYWxybSAgICAgICAgICAgPSBzaWdh
bHJtOworZXhwb3J0cy5zaWdmcGUgICAgICAgICAgICA9IHNpZ2ZwZTsKK2V4cG9ydHMuc2lnaHVw
ICAgICAgICAgICAgPSBzaWdodXA7CitleHBvcnRzLnNpZ2lsbCAgICAgICAgICAgID0gc2lnaWxs
OworZXhwb3J0cy5zaWdpbnQgICAgICAgICAgICA9IHNpZ2ludDsKK2V4cG9ydHMuc2lna2lsbCAg
ICAgICAgICAgPSBzaWdraWxsOworZXhwb3J0cy5zaWdwaXBlICAgICAgICAgICA9IHNpZ3BpcGU7
CitleHBvcnRzLnNpZ3F1aXQgICAgICAgICAgID0gc2lncXVpdDsKK2V4cG9ydHMuc2lnc2VndiAg
ICAgICAgICAgPSBzaWdzZWd2OworZXhwb3J0cy5zaWd0ZXJtICAgICAgICAgICA9IHNpZ3Rlcm07
CitleHBvcnRzLnNpZ3VzcjEgICAgICAgICAgID0gc2lndXNyMTsKK2V4cG9ydHMuc2lndXNyMiAg
ICAgICAgICAgPSBzaWd1c3IyOworZXhwb3J0cy5zaWdjaGxkICAgICAgICAgICA9IHNpZ2NobGQ7
CitleHBvcnRzLnNpZ2NvbnQgICAgICAgICAgID0gc2lnY29udDsKK2V4cG9ydHMuc2lnc3RvcCAg
ICAgICAgICAgPSBzaWdzdG9wOworZXhwb3J0cy5zaWd0c3RwICAgICAgICAgICA9IHNpZ3RzdHA7
CitleHBvcnRzLnNpZ3R0aW4gICAgICAgICAgID0gc2lndHRpbjsKK2V4cG9ydHMuc2lndHRvdSAg
ICAgICAgICAgPSBzaWd0dG91OworZXhwb3J0cy5zaWd2dGFscm0gICAgICAgICA9IHNpZ3Z0YWxy
bTsKK2V4cG9ydHMuc2lncHJvZiAgICAgICAgICAgPSBzaWdwcm9mOworZXhwb3J0cy5CcmVhayAg
ICAgICAgICAgICA9IEJyZWFrOworZXhwb3J0cy5jYXRjaF9icmVhayAgICAgICA9IGNhdGNoX2Jy
ZWFrOworZXhwb3J0cy5vY2FtbF92ZXJzaW9uICAgICA9IG9jYW1sX3ZlcnNpb247CisvKiBObyBz
aWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIHN5cy5qcyAvLy8vLy8vLworwqAgwqAgcmV0
dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wyd0eXBlcyddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgdHlwZXMuanMg
Ly8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBM
RUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgSTMyICAgICAgPSByZXF1
aXJlKCIuL2kzMiIpOwordmFyIExpc3QgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2xpc3QiKTsKK3ZhciBDdXJyeSAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJy
eSIpOwordmFyICQkU3RyaW5nID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIp
OworCitmdW5jdGlvbiBzaXplKHBhcmFtKSB7CisgIGlmIChwYXJhbSAhPT0gMSAmJiBwYXJhbSA8
IDMpIHsKKyAgICByZXR1cm4gNDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gODsKKyAgfQor
fQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSkgeworICBzd2l0Y2ggKHBh
cmFtKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVybiAiaTMyIjsKKyAgICBjYXNlIDEg
OiAKKyAgICAgICAgcmV0dXJuICJpNjQiOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4g
ImYzMiI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAiZjY0IjsKKyAgICAKKyAgfQor
fQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfdmFsdWVfdHlwZXModHMpIHsKKyAgdmFyIGV4aXQgPSAw
OworICBpZiAodHMpIHsKKyAgICBpZiAodHNbMV0pIHsKKyAgICAgIGV4aXQgPSAxOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzdHJpbmdfb2ZfdmFsdWVfdHlwZSh0c1swXSk7Cisg
ICAgfQorICB9CisgIGVsc2UgeworICAgIGV4aXQgPSAxOworICB9CisgIGlmIChleGl0ID09PSAx
KSB7CisgICAgcmV0dXJuICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcChzdHJp
bmdfb2ZfdmFsdWVfdHlwZSwgdHMpKSArICJdIik7CisgIH0KKyAgCit9CisKK2Z1bmN0aW9uIHN0
cmluZ19vZl9lbGVtX3R5cGUoKSB7CisgIHJldHVybiAiZnVuY3JlZiI7Cit9CisKK2Z1bmN0aW9u
IHN0cmluZ19vZl9saW1pdHMocGFyYW0pIHsKKyAgdmFyIG1heCA9IHBhcmFtWy8qIG1heCAqLzFd
OworICByZXR1cm4gQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBwYXJhbVsvKiBtaW4gKi8wXSkg
KyAoCisgICAgICAgICAgbWF4ID8gIiAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXhb
MF0pIDogIiIKKyAgICAgICAgKTsKK30KKworZnVuY3Rpb24gc3RyaW5nX29mX21lbW9yeV90eXBl
KHBhcmFtKSB7CisgIHJldHVybiBzdHJpbmdfb2ZfbGltaXRzKHBhcmFtWzBdKTsKK30KKworZnVu
Y3Rpb24gc3RyaW5nX29mX3RhYmxlX3R5cGUocGFyYW0pIHsKKyAgcmV0dXJuIHN0cmluZ19vZl9s
aW1pdHMocGFyYW1bMF0pICsgIiBmdW5jcmVmIjsKK30KKworZnVuY3Rpb24gc3RyaW5nX29mX2ds
b2JhbF90eXBlKHBhcmFtKSB7CisgIHZhciB0ID0gcGFyYW1bMF07CisgIGlmIChwYXJhbVsxXSAh
PT0gMCkgeworICAgIHJldHVybiAiKG11dCAiICsgKHN0cmluZ19vZl92YWx1ZV90eXBlKHQpICsg
IikiKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gc3RyaW5nX29mX3ZhbHVlX3R5cGUodCk7
CisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX29mX3N0YWNrX3R5cGUodHMpIHsKKyAgcmV0dXJu
ICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcChzdHJpbmdfb2ZfdmFsdWVfdHlw
ZSwgdHMpKSArICJdIik7Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9mdW5jX3R5cGUocGFyYW0p
IHsKKyAgcmV0dXJuIHN0cmluZ19vZl9zdGFja190eXBlKHBhcmFtWzBdKSArICgiIC0+ICIgKyBz
dHJpbmdfb2Zfc3RhY2tfdHlwZShwYXJhbVsxXSkpOworfQorCitleHBvcnRzLnNpemUgICAgICAg
ICAgICAgICAgICA9IHNpemU7CitleHBvcnRzLnN0cmluZ19vZl92YWx1ZV90eXBlICA9IHN0cmlu
Z19vZl92YWx1ZV90eXBlOworZXhwb3J0cy5zdHJpbmdfb2ZfdmFsdWVfdHlwZXMgPSBzdHJpbmdf
b2ZfdmFsdWVfdHlwZXM7CitleHBvcnRzLnN0cmluZ19vZl9lbGVtX3R5cGUgICA9IHN0cmluZ19v
Zl9lbGVtX3R5cGU7CitleHBvcnRzLnN0cmluZ19vZl9saW1pdHMgICAgICA9IHN0cmluZ19vZl9s
aW1pdHM7CitleHBvcnRzLnN0cmluZ19vZl9tZW1vcnlfdHlwZSA9IHN0cmluZ19vZl9tZW1vcnlf
dHlwZTsKK2V4cG9ydHMuc3RyaW5nX29mX3RhYmxlX3R5cGUgID0gc3RyaW5nX29mX3RhYmxlX3R5
cGU7CitleHBvcnRzLnN0cmluZ19vZl9nbG9iYWxfdHlwZSA9IHN0cmluZ19vZl9nbG9iYWxfdHlw
ZTsKK2V4cG9ydHMuc3RyaW5nX29mX3N0YWNrX3R5cGUgID0gc3RyaW5nX29mX3N0YWNrX3R5cGU7
CitleHBvcnRzLnN0cmluZ19vZl9mdW5jX3R5cGUgICA9IHN0cmluZ19vZl9mdW5jX3R5cGU7Cisv
KiBJMzIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiB0eXBlcy5qcyAvLy8v
Ly8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wyd2YWx1
ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0
YXJ0IG9mIHZhbHVlcy5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBW
RVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3Zh
ciBGMzIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2YzMiIpOwordmFyIEY2NCAgICAgICAgICAg
ICA9IHJlcXVpcmUoIi4vZjY0Iik7Cit2YXIgSTMyICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9p
MzIiKTsKK3ZhciBJNjQgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2k2NCIpOwordmFyIExpc3Qg
ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQmxv
Y2sgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2YXIg
Q3VycnkgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2
YXIgJCRTdHJpbmcgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIp
OwordmFyIENhbWxfZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1s
X2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gdHlwZV9vZihwYXJhbSkgeworICBzd2l0Y2ggKHBh
cmFtLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIC8qIEkzMlR5cGUg
Ki8wOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gLyogSTY0VHlwZSAqLzE7CisgICAg
Y2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiBGMzJUeXBlICovMjsKKyAgICBjYXNlIDMgOiAK
KyAgICAgICAgcmV0dXJuIC8qIEY2NFR5cGUgKi8zOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9u
IGRlZmF1bHRfdmFsdWUocGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6
IAorICAgICAgICByZXR1cm4gLyogSTMyICovQmxvY2suX18oMCwgW0kzMi56ZXJvXSk7CisgICAg
Y2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiBJNjQgKi9CbG9jay5fXygxLCBbSTY0Lnplcm9d
KTsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuIC8qIEYzMiAqL0Jsb2NrLl9fKDIsIFtG
MzIuemVyb10pOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gLyogRjY0ICovQmxvY2su
X18oMywgW0Y2NC56ZXJvXSk7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gdmFsdWVfb2ZfYm9v
bChiKSB7CisgIHJldHVybiAvKiBJMzIgKi9CbG9jay5fXygwLCBbYiA/IDEgOiAwXSk7Cit9CisK
K2Z1bmN0aW9uIHN0cmluZ19vZl92YWx1ZShwYXJhbSkgeworICBzd2l0Y2ggKHBhcmFtLnRhZyB8
IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKEkzMi50b19zdHJp
bmdfcywgcGFyYW1bMF0pOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gQ3VycnkuXzEo
STY0LnRvX3N0cmluZ19zLCBwYXJhbVswXSk7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVy
biBDdXJyeS5fMShGMzIudG9fc3RyaW5nLCBwYXJhbVswXSk7CisgICAgY2FzZSAzIDogCisgICAg
ICAgIHJldHVybiBDdXJyeS5fMShGNjQudG9fc3RyaW5nLCBwYXJhbVswXSk7CisgICAgCisgIH0K
K30KKworZnVuY3Rpb24gc3RyaW5nX29mX3ZhbHVlcyh2cykgeworICB2YXIgZXhpdCA9IDA7Cisg
IGlmICh2cykgeworICAgIGlmICh2c1sxXSkgeworICAgICAgZXhpdCA9IDE7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgcmV0dXJuIHN0cmluZ19vZl92YWx1ZSh2c1swXSk7CisgICAgfQorICB9
CisgIGVsc2UgeworICAgIGV4aXQgPSAxOworICB9CisgIGlmIChleGl0ID09PSAxKSB7CisgICAg
cmV0dXJuICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcChzdHJpbmdfb2ZfdmFs
dWUsIHZzKSkgKyAiXSIpOworICB9CisgIAorfQorCit2YXIgVmFsdWUgPSBDYW1sX2V4Y2VwdGlv
bnMuY3JlYXRlKCJWYWx1ZXMuVmFsdWUiKTsKKworZnVuY3Rpb24gdG9fdmFsdWUoaSkgeworICBy
ZXR1cm4gLyogSTMyICovQmxvY2suX18oMCwgW2ldKTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUo
cGFyYW0pIHsKKyAgaWYgKHBhcmFtLnRhZykgeworICAgIHRocm93IFsKKyAgICAgICAgICBWYWx1
ZSwKKyAgICAgICAgICAvKiBJMzJUeXBlICovMAorICAgICAgICBdOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBwYXJhbVswXTsKKyAgfQorfQorCit2YXIgSTMyVmFsdWUgPSAvKiBtb2R1bGUg
Ki9bCisgIC8qIHRvX3ZhbHVlICovdG9fdmFsdWUsCisgIC8qIG9mX3ZhbHVlICovb2ZfdmFsdWUK
K107CisKK2Z1bmN0aW9uIHRvX3ZhbHVlJDEoaSkgeworICByZXR1cm4gLyogSTY0ICovQmxvY2su
X18oMSwgW2ldKTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUkMShwYXJhbSkgeworICBpZiAocGFy
YW0udGFnID09PSAxKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVsc2UgeworICAg
IHRocm93IFsKKyAgICAgICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBJNjRUeXBlICovMQorICAg
ICAgICBdOworICB9Cit9CisKK3ZhciBJNjRWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKKyAgLyogdG9f
dmFsdWUgKi90b192YWx1ZSQxLAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDEKK107CisKK2Z1
bmN0aW9uIHRvX3ZhbHVlJDIoaSkgeworICByZXR1cm4gLyogRjMyICovQmxvY2suX18oMiwgW2ld
KTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUkMihwYXJhbSkgeworICBpZiAocGFyYW0udGFnID09
PSAyKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVsc2UgeworICAgIHRocm93IFsK
KyAgICAgICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBGMzJUeXBlICovMgorICAgICAgICBdOwor
ICB9Cit9CisKK3ZhciBGMzJWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKKyAgLyogdG9fdmFsdWUgKi90
b192YWx1ZSQyLAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDIKK107CisKK2Z1bmN0aW9uIHRv
X3ZhbHVlJDMoaSkgeworICByZXR1cm4gLyogRjY0ICovQmxvY2suX18oMywgW2ldKTsKK30KKwor
ZnVuY3Rpb24gb2ZfdmFsdWUkMyhwYXJhbSkgeworICBpZiAocGFyYW0udGFnID09PSAzKSB7Cisg
ICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVsc2UgeworICAgIHRocm93IFsKKyAgICAgICAg
ICBWYWx1ZSwKKyAgICAgICAgICAvKiBGNjRUeXBlICovMworICAgICAgICBdOworICB9Cit9CisK
K3ZhciBGNjRWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKKyAgLyogdG9fdmFsdWUgKi90b192YWx1ZSQz
LAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDMKK107CisKK2V4cG9ydHMudHlwZV9vZiAgICAg
ICAgICA9IHR5cGVfb2Y7CitleHBvcnRzLmRlZmF1bHRfdmFsdWUgICAgPSBkZWZhdWx0X3ZhbHVl
OworZXhwb3J0cy52YWx1ZV9vZl9ib29sICAgID0gdmFsdWVfb2ZfYm9vbDsKK2V4cG9ydHMuc3Ry
aW5nX29mX3ZhbHVlICA9IHN0cmluZ19vZl92YWx1ZTsKK2V4cG9ydHMuc3RyaW5nX29mX3ZhbHVl
cyA9IHN0cmluZ19vZl92YWx1ZXM7CitleHBvcnRzLlZhbHVlICAgICAgICAgICAgPSBWYWx1ZTsK
K2V4cG9ydHMuSTMyVmFsdWUgICAgICAgICA9IEkzMlZhbHVlOworZXhwb3J0cy5JNjRWYWx1ZSAg
ICAgICAgID0gSTY0VmFsdWU7CitleHBvcnRzLkYzMlZhbHVlICAgICAgICAgPSBGMzJWYWx1ZTsK
K2V4cG9ydHMuRjY0VmFsdWUgICAgICAgICA9IEY2NFZhbHVlOworLyogRjMyIE5vdCBhIHB1cmUg
bW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgdmFsdWVzLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1
cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ3dhc20nXSA9IGZ1bmN0aW9uKCkg
eworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHdhc20uanMgLy8v
Ly8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFT
RSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgUGFyc2UgICAgICA9IHJlcXVp
cmUoIi4vcGFyc2UiKTsKK3ZhciBTZXhwciAgICAgID0gcmVxdWlyZSgiLi9zZXhwciIpOwordmFy
IERlY29kZSAgICAgPSByZXF1aXJlKCIuL2RlY29kZSIpOwordmFyIEVuY29kZSAgICAgPSByZXF1
aXJlKCIuL2VuY29kZSIpOwordmFyIEFycmFuZ2UgICAgPSByZXF1aXJlKCIuL2FycmFuZ2UiKTsK
K3ZhciBDYW1sX2ludDY0ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfaW50NjQi
KTsKK3ZhciBQZXJ2YXNpdmVzID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3BlcnZhc2l2
ZXMiKTsKKworZnVuY3Rpb24gZW5jb2RlKHMpIHsKKyAgdmFyIGRlZiA9IFBhcnNlLnN0cmluZ190
b19tb2R1bGUocyk7CisgIHZhciBtYXRjaCA9IGRlZlsvKiBpdCAqLzFdOworICBpZiAobWF0Y2gu
dGFnKSB7CisgICAgcmV0dXJuIG1hdGNoWzFdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBF
bmNvZGUuZW5jb2RlKG1hdGNoWzBdKTsKKyAgfQorfQorCitmdW5jdGlvbiBkZWNvZGUocywgd2lk
dGgpIHsKKyAgdmFyIG0gPSBEZWNvZGUuZGVjb2RlKCIoZGVjb2RlKSIsIHMpOworICByZXR1cm4g
U2V4cHIudG9fc3RyaW5nKHdpZHRoLCBBcnJhbmdlLm1vZHVsZV8obSkpOworfQorCitmdW5jdGlv
biBmKHgpIHsKKyAgUGVydmFzaXZlcy5wcmludF9zdHJpbmcoImYiKTsKKyAgcmV0dXJuIHg7Cit9
CisKK2Z1bmN0aW9uIGcoeCkgeworICByZXR1cm4gQ2FtbF9pbnQ2NC5vcl8oeCwgKFBlcnZhc2l2
ZXMucHJpbnRfc3RyaW5nKCJmIiksIHgpKTsKK30KKworZXhwb3J0cy5lbmNvZGUgPSBlbmNvZGU7
CitleHBvcnRzLmRlY29kZSA9IGRlY29kZTsKK2V4cG9ydHMuZiAgICAgID0gZjsKK2V4cG9ydHMu
ZyAgICAgID0gZzsKKy8qIFBhcnNlIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQg
b2Ygd2FzbS5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAg
ZnVuY3Rpb24gYmluYXJ5KGJ5dGVzKSB7CisgICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZl
cihieXRlcy5sZW5ndGgpOworICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgICB2aWV3
W2ldID0gYnl0ZXMuY2hhckNvZGVBdChpKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsKKyAg
fQorICBmdW5jdGlvbiBieXRlcyhidWZmZXIpIHsKKyAgICBsZXQgc3RyaW5nID0gJyc7CisgICAg
bGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgdmlldy5sZW5ndGg7ICsraSkgeworICAgICAgc3RyaW5nICs9IFN0cmluZy5mcm9tQ29kZVBv
aW50KHZpZXdbaV0pOworICAgIH0KKyAgICByZXR1cm4gc3RyaW5nOworICB9CivCoCBsZXQgV2Fz
bSA9IHJlcXVpcmUoJ3dhc20nKTsKKyAgcmV0dXJuIHsKKyAgICBlbmNvZGUocykgeyByZXR1cm4g
YmluYXJ5KFdhc20uZW5jb2RlKHMpKSB9LAorICAgIGRlY29kZShiLCB3ID0gODApIHsgcmV0dXJu
IFdhc20uZGVjb2RlKGJ5dGVzKGIpLCB3KSB9CisgIH07Cit9KSgpOworCisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVybl9jYWxsLndhc3QgYi9K
U1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbC53YXN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJmOTFmNGRlYWM2OTY0YjhlYWFhMzIyZmQ4MjRhYTAwZDc4MTY1MTQKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2Fs
bC53YXN0CkBAIC0wLDAgKzEsMjAyIEBACis7OyBUZXN0IGByZXR1cm5fY2FsbGAgb3BlcmF0b3IK
KworKG1vZHVsZQorICA7OyBBdXhpbGlhcnkgZGVmaW5pdGlvbnMKKyAgKGZ1bmMgJGNvbnN0LWkz
MiAocmVzdWx0IGkzMikgKGkzMi5jb25zdCAweDEzMikpCisgIChmdW5jICRjb25zdC1pNjQgKHJl
c3VsdCBpNjQpIChpNjQuY29uc3QgMHgxNjQpKQorICAoZnVuYyAkY29uc3QtZjMyIChyZXN1bHQg
ZjMyKSAoZjMyLmNvbnN0IDB4ZjMyKSkKKyAgKGZ1bmMgJGNvbnN0LWY2NCAocmVzdWx0IGY2NCkg
KGY2NC5jb25zdCAweGY2NCkpCisKKyAgKGZ1bmMgJGlkLWkzMiAocGFyYW0gaTMyKSAocmVzdWx0
IGkzMikgKGxvY2FsLmdldCAwKSkKKyAgKGZ1bmMgJGlkLWk2NCAocGFyYW0gaTY0KSAocmVzdWx0
IGk2NCkgKGxvY2FsLmdldCAwKSkKKyAgKGZ1bmMgJGlkLWYzMiAocGFyYW0gZjMyKSAocmVzdWx0
IGYzMikgKGxvY2FsLmdldCAwKSkKKyAgKGZ1bmMgJGlkLWY2NCAocGFyYW0gZjY0KSAocmVzdWx0
IGY2NCkgKGxvY2FsLmdldCAwKSkKKworICAoZnVuYyAkZjMyLWkzMiAocGFyYW0gZjMyIGkzMikg
KHJlc3VsdCBpMzIpIChsb2NhbC5nZXQgMSkpCisgIChmdW5jICRpMzItaTY0IChwYXJhbSBpMzIg
aTY0KSAocmVzdWx0IGk2NCkgKGxvY2FsLmdldCAxKSkKKyAgKGZ1bmMgJGY2NC1mMzIgKHBhcmFt
IGY2NCBmMzIpIChyZXN1bHQgZjMyKSAobG9jYWwuZ2V0IDEpKQorICAoZnVuYyAkaTY0LWY2NCAo
cGFyYW0gaTY0IGY2NCkgKHJlc3VsdCBmNjQpIChsb2NhbC5nZXQgMSkpCisKKyAgOzsgVHlwaW5n
CisKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1pMzIiKSAocmVzdWx0IGkzMikgKHJldHVybl9jYWxs
ICRjb25zdC1pMzIpKQorICAoZnVuYyAoZXhwb3J0ICJ0eXBlLWk2NCIpIChyZXN1bHQgaTY0KSAo
cmV0dXJuX2NhbGwgJGNvbnN0LWk2NCkpCisgIChmdW5jIChleHBvcnQgInR5cGUtZjMyIikgKHJl
c3VsdCBmMzIpIChyZXR1cm5fY2FsbCAkY29uc3QtZjMyKSkKKyAgKGZ1bmMgKGV4cG9ydCAidHlw
ZS1mNjQiKSAocmVzdWx0IGY2NCkgKHJldHVybl9jYWxsICRjb25zdC1mNjQpKQorCisgIChmdW5j
IChleHBvcnQgInR5cGUtZmlyc3QtaTMyIikgKHJlc3VsdCBpMzIpIChyZXR1cm5fY2FsbCAkaWQt
aTMyIChpMzIuY29uc3QgMzIpKSkKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1maXJzdC1pNjQiKSAo
cmVzdWx0IGk2NCkgKHJldHVybl9jYWxsICRpZC1pNjQgKGk2NC5jb25zdCA2NCkpKQorICAoZnVu
YyAoZXhwb3J0ICJ0eXBlLWZpcnN0LWYzMiIpIChyZXN1bHQgZjMyKSAocmV0dXJuX2NhbGwgJGlk
LWYzMiAoZjMyLmNvbnN0IDEuMzIpKSkKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1maXJzdC1mNjQi
KSAocmVzdWx0IGY2NCkgKHJldHVybl9jYWxsICRpZC1mNjQgKGY2NC5jb25zdCAxLjY0KSkpCisK
KyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1zZWNvbmQtaTMyIikgKHJlc3VsdCBpMzIpCisgICAgKHJl
dHVybl9jYWxsICRmMzItaTMyIChmMzIuY29uc3QgMzIuMSkgKGkzMi5jb25zdCAzMikpCisgICkK
KyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1zZWNvbmQtaTY0IikgKHJlc3VsdCBpNjQpCisgICAgKHJl
dHVybl9jYWxsICRpMzItaTY0IChpMzIuY29uc3QgMzIpIChpNjQuY29uc3QgNjQpKQorICApCisg
IChmdW5jIChleHBvcnQgInR5cGUtc2Vjb25kLWYzMiIpIChyZXN1bHQgZjMyKQorICAgIChyZXR1
cm5fY2FsbCAkZjY0LWYzMiAoZjY0LmNvbnN0IDY0KSAoZjMyLmNvbnN0IDMyKSkKKyAgKQorICAo
ZnVuYyAoZXhwb3J0ICJ0eXBlLXNlY29uZC1mNjQiKSAocmVzdWx0IGY2NCkKKyAgICAocmV0dXJu
X2NhbGwgJGk2NC1mNjQgKGk2NC5jb25zdCA2NCkgKGY2NC5jb25zdCA2NC4xKSkKKyAgKQorCisg
IDs7IFJlY3Vyc2lvbgorCisgIChmdW5jICRmYWMtYWNjIChleHBvcnQgImZhYy1hY2MiKSAocGFy
YW0gaTY0IGk2NCkgKHJlc3VsdCBpNjQpCisgICAgKGlmIChyZXN1bHQgaTY0KSAoaTY0LmVxeiAo
bG9jYWwuZ2V0IDApKQorICAgICAgKHRoZW4gKGxvY2FsLmdldCAxKSkKKyAgICAgIChlbHNlCisg
ICAgICAgIChyZXR1cm5fY2FsbCAkZmFjLWFjYworICAgICAgICAgIChpNjQuc3ViIChsb2NhbC5n
ZXQgMCkgKGk2NC5jb25zdCAxKSkKKyAgICAgICAgICAoaTY0Lm11bCAobG9jYWwuZ2V0IDApIChs
b2NhbC5nZXQgMSkpCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKworICAoZnVuYyAk
Y291bnQgKGV4cG9ydCAiY291bnQiKSAocGFyYW0gaTY0KSAocmVzdWx0IGk2NCkKKyAgICAoaWYg
KHJlc3VsdCBpNjQpIChpNjQuZXF6IChsb2NhbC5nZXQgMCkpCisgICAgICAodGhlbiAobG9jYWwu
Z2V0IDApKQorICAgICAgKGVsc2UgKHJldHVybl9jYWxsICRjb3VudCAoaTY0LnN1YiAobG9jYWwu
Z2V0IDApIChpNjQuY29uc3QgMSkpKSkKKyAgICApCisgICkKKworICAoZnVuYyAkZXZlbiAoZXhw
b3J0ICJldmVuIikgKHBhcmFtIGk2NCkgKHJlc3VsdCBpMzIpCisgICAgKGlmIChyZXN1bHQgaTMy
KSAoaTY0LmVxeiAobG9jYWwuZ2V0IDApKQorICAgICAgKHRoZW4gKGkzMi5jb25zdCA0NCkpCisg
ICAgICAoZWxzZSAocmV0dXJuX2NhbGwgJG9kZCAoaTY0LnN1YiAobG9jYWwuZ2V0IDApIChpNjQu
Y29uc3QgMSkpKSkKKyAgICApCisgICkKKyAgKGZ1bmMgJG9kZCAoZXhwb3J0ICJvZGQiKSAocGFy
YW0gaTY0KSAocmVzdWx0IGkzMikKKyAgICAoaWYgKHJlc3VsdCBpMzIpIChpNjQuZXF6IChsb2Nh
bC5nZXQgMCkpCisgICAgICAodGhlbiAoaTMyLmNvbnN0IDk5KSkKKyAgICAgIChlbHNlIChyZXR1
cm5fY2FsbCAkZXZlbiAoaTY0LnN1YiAobG9jYWwuZ2V0IDApIChpNjQuY29uc3QgMSkpKSkKKyAg
ICApCisgICkKKykKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1pMzIiKSAoaTMyLmNv
bnN0IDB4MTMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtaTY0IikgKGk2NC5jb25z
dCAweDE2NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWYzMiIpIChmMzIuY29uc3Qg
MHhmMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1mNjQiKSAoZjY0LmNvbnN0IDB4
ZjY0KSkKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1maXJzdC1pMzIiKSAoaTMyLmNv
bnN0IDMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZmlyc3QtaTY0IikgKGk2NC5j
b25zdCA2NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWZpcnN0LWYzMiIpIChmMzIu
Y29uc3QgMS4zMikpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWZpcnN0LWY2NCIpIChm
NjQuY29uc3QgMS42NCkpCisKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtc2Vjb25kLWkz
MiIpIChpMzIuY29uc3QgMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1zZWNvbmQt
aTY0IikgKGk2NC5jb25zdCA2NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLXNlY29u
ZC1mMzIiKSAoZjMyLmNvbnN0IDMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtc2Vj
b25kLWY2NCIpIChmNjQuY29uc3QgNjQuMSkpCisKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImZh
Yy1hY2MiIChpNjQuY29uc3QgMCkgKGk2NC5jb25zdCAxKSkgKGk2NC5jb25zdCAxKSkKKyhhc3Nl
cnRfcmV0dXJuIChpbnZva2UgImZhYy1hY2MiIChpNjQuY29uc3QgMSkgKGk2NC5jb25zdCAxKSkg
KGk2NC5jb25zdCAxKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImZhYy1hY2MiIChpNjQuY29u
c3QgNSkgKGk2NC5jb25zdCAxKSkgKGk2NC5jb25zdCAxMjApKQorKGFzc2VydF9yZXR1cm4KKyAg
KGludm9rZSAiZmFjLWFjYyIgKGk2NC5jb25zdCAyNSkgKGk2NC5jb25zdCAxKSkKKyAgKGk2NC5j
b25zdCA3MDM0NTM1Mjc3NTczOTYzNzc2KQorKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJj
b3VudCIgKGk2NC5jb25zdCAwKSkgKGk2NC5jb25zdCAwKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZv
a2UgImNvdW50IiAoaTY0LmNvbnN0IDEwMDApKSAoaTY0LmNvbnN0IDApKQorKGFzc2VydF9yZXR1
cm4gKGludm9rZSAiY291bnQiIChpNjQuY29uc3QgMV8wMDBfMDAwKSkgKGk2NC5jb25zdCAwKSkK
KworKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZXZlbiIgKGk2NC5jb25zdCAwKSkgKGkzMi5jb25z
dCA0NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJldmVuIiAoaTY0LmNvbnN0IDEpKSAoaTMy
LmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4iIChpNjQuY29uc3QgMTAw
KSkgKGkzMi5jb25zdCA0NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJldmVuIiAoaTY0LmNv
bnN0IDc3KSkgKGkzMi5jb25zdCA5OSkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJldmVuIiAo
aTY0LmNvbnN0IDFfMDAwXzAwMCkpIChpMzIuY29uc3QgNDQpKQorKGFzc2VydF9yZXR1cm4gKGlu
dm9rZSAiZXZlbiIgKGk2NC5jb25zdCAxXzAwMF8wMDEpKSAoaTMyLmNvbnN0IDk5KSkKKyhhc3Nl
cnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGk2NC5jb25zdCAwKSkgKGkzMi5jb25zdCA5OSkpCiso
YXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChpNjQuY29uc3QgMSkpIChpMzIuY29uc3QgNDQp
KQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAib2RkIiAoaTY0LmNvbnN0IDIwMCkpIChpMzIuY29u
c3QgOTkpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAib2RkIiAoaTY0LmNvbnN0IDc3KSkgKGkz
Mi5jb25zdCA0NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChpNjQuY29uc3QgMV8w
MDBfMDAwKSkgKGkzMi5jb25zdCA5OSkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChp
NjQuY29uc3QgOTk5Xzk5OSkpIChpMzIuY29uc3QgNDQpKQorCisKKzs7IEludmFsaWQgdHlwaW5n
CisKKyhhc3NlcnRfaW52YWxpZAorICAobW9kdWxlCisgICAgKGZ1bmMgJHR5cGUtdm9pZC12cy1u
dW0gKHJlc3VsdCBpMzIpIChyZXR1cm5fY2FsbCAxKSAoaTMyLmNvbnN0IDApKQorICAgIChmdW5j
KQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUK
KyAgICAoZnVuYyAkdHlwZS1udW0tdnMtbnVtIChyZXN1bHQgaTMyKSAocmV0dXJuX2NhbGwgMSkg
KGkzMi5jb25zdCAwKSkKKyAgICAoZnVuYyAocmVzdWx0IGk2NCkgKGk2NC5jb25zdCAxKSkKKyAg
KQorICAidHlwZSBtaXNtYXRjaCIKKykKKworKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAg
ICAoZnVuYyAkYXJpdHktMC12cy0xIChyZXR1cm5fY2FsbCAxKSkKKyAgICAoZnVuYyAocGFyYW0g
aTMyKSkKKyAgKQorICAidHlwZSBtaXNtYXRjaCIKKykKKyhhc3NlcnRfaW52YWxpZAorICAobW9k
dWxlCisgICAgKGZ1bmMgJGFyaXR5LTAtdnMtMiAocmV0dXJuX2NhbGwgMSkpCisgICAgKGZ1bmMg
KHBhcmFtIGY2NCBpMzIpKQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQorCisobW9kdWxlCisg
IChmdW5jICRhcml0eS0xLXZzLTAgKGkzMi5jb25zdCAxKSAocmV0dXJuX2NhbGwgMSkpCisgIChm
dW5jKQorKQorCisobW9kdWxlCisgIChmdW5jICRhcml0eS0yLXZzLTAgKGY2NC5jb25zdCAyKSAo
aTMyLmNvbnN0IDEpIChyZXR1cm5fY2FsbCAxKSkKKyAgKGZ1bmMpCispCisKKyhhc3NlcnRfaW52
YWxpZAorICAobW9kdWxlCisgICAgKGZ1bmMgJHR5cGUtZmlyc3Qtdm9pZC12cy1udW0gKHJldHVy
bl9jYWxsIDEgKG5vcCkgKGkzMi5jb25zdCAxKSkpCisgICAgKGZ1bmMgKHBhcmFtIGkzMiBpMzIp
KQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUK
KyAgICAoZnVuYyAkdHlwZS1zZWNvbmQtdm9pZC12cy1udW0gKHJldHVybl9jYWxsIDEgKGkzMi5j
b25zdCAxKSAobm9wKSkpCisgICAgKGZ1bmMgKHBhcmFtIGkzMiBpMzIpKQorICApCisgICJ0eXBl
IG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAoZnVuYyAkdHlw
ZS1maXJzdC1udW0tdnMtbnVtIChyZXR1cm5fY2FsbCAxIChmNjQuY29uc3QgMSkgKGkzMi5jb25z
dCAxKSkpCisgICAgKGZ1bmMgKHBhcmFtIGkzMiBmNjQpKQorICApCisgICJ0eXBlIG1pc21hdGNo
IgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAoZnVuYyAkdHlwZS1zZWNvbmQt
bnVtLXZzLW51bSAocmV0dXJuX2NhbGwgMSAoaTMyLmNvbnN0IDEpIChmNjQuY29uc3QgMSkpKQor
ICAgIChmdW5jIChwYXJhbSBmNjQgaTMyKSkKKyAgKQorICAidHlwZSBtaXNtYXRjaCIKKykKKwor
Cis7OyBVbmJvdW5kIGZ1bmN0aW9uCisKKyhhc3NlcnRfaW52YWxpZAorICAobW9kdWxlIChmdW5j
ICR1bmJvdW5kLWZ1bmMgKHJldHVybl9jYWxsIDEpKSkKKyAgInVua25vd24gZnVuY3Rpb24iCisp
CisoYXNzZXJ0X2ludmFsaWQKKyAgKG1vZHVsZSAoZnVuYyAkbGFyZ2UtZnVuYyAocmV0dXJuX2Nh
bGwgMTAxMjMyMTMwMCkpKQorICAidW5rbm93biBmdW5jdGlvbiIKKykKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVybl9jYWxsLndhc3QuanMgYi9K
U1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbC53YXN0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkzZmRiM2ZjMGY0NzAwYzQ3YzJlYmY2NmY2ZTViZTFkNWIwY2M4MTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5f
Y2FsbC53YXN0LmpzCkBAIC0wLDAgKzEsMTMyIEBACisKKy8vIHJldHVybl9jYWxsLndhc3Q6Mwor
bGV0ICQxID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
YzhceDgwXHg4MFx4ODBceDAwXHgwZVx4NjBceDAwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHg2
MFx4MDBceDAxXHg3ZFx4NjBceDAwXHgwMVx4N2NceDYwXHgwMVx4N2ZceDAxXHg3Zlx4NjBceDAx
XHg3ZVx4MDFceDdlXHg2MFx4MDFceDdkXHgwMVx4N2RceDYwXHgwMVx4N2NceDAxXHg3Y1x4NjBc
eDAyXHg3ZFx4N2ZceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4NjBceDAyXHg3Y1x4
N2RceDAxXHg3ZFx4NjBceDAyXHg3ZVx4N2NceDAxXHg3Y1x4NjBceDAyXHg3ZVx4N2VceDAxXHg3
ZVx4NjBceDAxXHg3ZVx4MDFceDdmXHgwM1x4OWRceDgwXHg4MFx4ODBceDAwXHgxY1x4MDBceDAx
XHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4MDlceDBhXHgwYlx4MDBceDAxXHgwMlx4MDNc
eDAwXHgwMVx4MDJceDAzXHgwMFx4MDFceDAyXHgwM1x4MGNceDA1XHgwZFx4MGRceDA3XHhkOFx4
ODFceDgwXHg4MFx4MDBceDEwXHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2OVx4MzNceDMyXHgw
MFx4MGNceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY5XHgzNlx4MzRceDAwXHgwZFx4MDhceDc0
XHg3OVx4NzBceDY1XHgyZFx4NjZceDMzXHgzMlx4MDBceDBlXHgwOFx4NzRceDc5XHg3MFx4NjVc
eDJkXHg2Nlx4MzZceDM0XHgwMFx4MGZceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4
NzJceDczXHg3NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxMFx4MGVceDc0XHg3OVx4NzBceDY1XHgy
ZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjlceDM2XHgzNFx4MDBceDExXHgwZVx4NzRceDc5
XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MTJc
eDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4MmRceDY2XHgzNlx4
MzRceDAwXHgxM1x4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2
NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxNFx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1
XHg2M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzNlx4MzRceDAwXHgxNVx4MGZceDc0XHg3OVx4NzBc
eDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzM1x4MzJceDAwXHgxNlx4
MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgz
Nlx4MzRceDAwXHgxN1x4MDdceDY2XHg2MVx4NjNceDJkXHg2MVx4NjNceDYzXHgwMFx4MThceDA1
XHg2M1x4NmZceDc1XHg2ZVx4NzRceDAwXHgxOVx4MDRceDY1XHg3Nlx4NjVceDZlXHgwMFx4MWFc
eDAzXHg2Zlx4NjRceDY0XHgwMFx4MWJceDBhXHg4MFx4ODNceDgwXHg4MFx4MDBceDFjXHg4NVx4
ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4YjJceDAyXHgwYlx4ODVceDgwXHg4MFx4ODBceDAwXHgw
MFx4NDJceGU0XHgwMlx4MGJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDQzXHgwMFx4MjBceDcz
XHg0NVx4MGJceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBc
eGM4XHhhZVx4NDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4
ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgy
MFx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4ODBceDgw
XHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFc
eDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4
MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDBceDBiXHg4
NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAw
XHgxMlx4MDJceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDNceDBiXHg4Nlx4ODBc
eDgwXHg4MFx4MDBceDAwXHg0MVx4MjBceDEyXHgwNFx4MGJceDg3XHg4MFx4ODBceDgwXHgwMFx4
MDBceDQyXHhjMFx4MDBceDEyXHgwNVx4MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDQzXHhj
M1x4ZjVceGE4XHgzZlx4MTJceDA2XHgwYlx4OGRceDgwXHg4MFx4ODBceDAwXHgwMFx4NDRceDNk
XHgwYVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4MTJceDA3XHgwYlx4OGJceDgwXHg4MFx4ODBc
eDAwXHgwMFx4NDNceDY2XHg2Nlx4MDBceDQyXHg0MVx4MjBceDEyXHgwOFx4MGJceDg5XHg4MFx4
ODBceDgwXHgwMFx4MDBceDQxXHgyMFx4NDJceGMwXHgwMFx4MTJceDA5XHgwYlx4OTJceDgwXHg4
MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDUwXHg0MFx4NDNceDAw
XHgwMFx4MDBceDQyXHgxMlx4MGFceDBiXHg5MFx4ODBceDgwXHg4MFx4MDBceDAwXHg0Mlx4YzBc
eDAwXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBceDQwXHgxMlx4MGJceDBiXHg5N1x4
ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDUwXHgwNFx4N2VceDIwXHgwMVx4MDVceDIwXHgw
MFx4NDJceDAxXHg3ZFx4MjBceDAwXHgyMFx4MDFceDdlXHgxMlx4MThceDBiXHgwYlx4OTJceDgw
XHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg1MFx4MDRceDdlXHgyMFx4MDBceDA1XHgyMFx4MDBc
eDQyXHgwMVx4N2RceDEyXHgxOVx4MGJceDBiXHg5Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4
MDBceDUwXHgwNFx4N2ZceDQxXHgyY1x4MDVceDIwXHgwMFx4NDJceDAxXHg3ZFx4MTJceDFiXHgw
Ylx4MGJceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NTBceDA0XHg3Zlx4NDFceGUz
XHgwMFx4MDVceDIwXHgwMFx4NDJceDAxXHg3ZFx4MTJceDFhXHgwYlx4MGIiKTsKKworLy8gcmV0
dXJuX2NhbGwud2FzdDo4MAorYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1pMzIi
LCBbXSksIDMwNik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODEKK3J1bigoKSA9PiBjYWxsKGlu
c3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBc
eDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4
MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgw
Mlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4ODRceDgxXHg4MFx4ODBceDAw
XHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRc
eDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4
MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJc
eDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4
ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OThceDgwXHg4
MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBceDAx
XHg0Mlx4ZTRceDAyXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0
cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0
eXBlLWk2NCIsIFtdKSwgaW50NjQoIjM1NiIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjgyCity
dW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4
NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2
Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZFx4MDJceDg0
XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NzRc
eDc5XHg3MFx4NjVceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgw
Nlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAy
XHg0MFx4MTBceDAwXHhiY1x4NDNceDAwXHgyMFx4NzNceDQ1XHhiY1x4NDZceDQ1XHgwZFx4MDBc
eDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRf
cmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWYzMiIsIFtdKSwgMzg5MC4pCisKKy8vIHJldHVy
bl9jYWxsLndhc3Q6ODMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZk
XHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBc
eDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4
N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgw
MFx4MDFceDdjXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1
XHg2Y1x4NjVceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4
NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4
MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4MDBceDAwXHgwMFx4MDBceDAw
XHhjOFx4YWVceDQwXHhiZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0
cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0
eXBlLWY2NCIsIFtdKSwgMzk0MC4pCisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODUKK2Fzc2VydF9y
ZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtZmlyc3QtaTMyIiwgW10pLCAzMik7CisKKy8vIHJl
dHVybl9jYWxsLndhc3Q6ODYKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4
MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgw
MVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYw
XHgwMFx4MDFceDdlXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4
MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgw
MFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4
N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OThceDgw
XHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBc
eDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhw
b3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEs
ICJ0eXBlLWZpcnN0LWk2NCIsIFtdKSwgaW50NjQoIjY0IikpCisKKy8vIHJldHVybl9jYWxsLndh
c3Q6ODcKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4
N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgw
Mlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdk
XHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4MmRceDY2XHgzM1x4
MzJceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4
MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFceDgwXHg4MFx4ODBceDAw
XHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBceGJjXHg0M1x4YzNc
eGY1XHhhOFx4M2ZceGJjXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5
cGUtZmlyc3QtZjMyIiwgW10pLCAxLjMyMDAwMDA1MjQ1KQorCisvLyByZXR1cm5fY2FsbC53YXN0
Ojg4CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdm
XHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJc
eDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3Y1x4
MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgw
ZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2Nlx4MzZceDM0
XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAw
XHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4ODBceDgwXHgwMFx4
MDFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiZFx4NDRceDNkXHgw
YVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4YmRceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAw
XHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAidHlwZS1maXJzdC1mNjQiLCBbXSksIDEuNjQpCisKKy8vIHJldHVybl9jYWxs
Lndhc3Q6OTAKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWkzMiIs
IFtdKSwgMzIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjkxCitydW4oKCkgPT4gY2FsbChpbnN0
YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4
MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAx
XHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJc
eDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZVx4MDJceDhiXHg4MVx4ODBceDgwXHgwMFx4
MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3
M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjlceDM2XHgzNFx4MDBceDA2XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4
NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1
XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3
MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgw
XHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVc
eDZlXHgwMFx4MDZceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5Mlx4ODBceDgwXHg4MFx4
MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4MDFceDQyXHhjMFx4MDBceDAxXHg1MVx4NDVceDBkXHgw
MFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2Vy
dF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWk2NCIsIFtdKSwgaW50NjQoIjY0
IikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTIKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4
MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2
MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcw
XHgwMVx4N2ZceDYwXHgwMFx4MDFceDdkXHgwMlx4OGJceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZc
eDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBmXHg3NFx4NzlceDcwXHg2NVx4MmRceDczXHg2NVx4
NjNceDZmXHg2ZVx4NjRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAw
XHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBc
eDAyXHg0MFx4MTBceDAwXHhiY1x4NDNceDAwXHgwMFx4MDBceDQyXHhiY1x4NDZceDQ1XHgwZFx4
MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3Nl
cnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1mMzIiLCBbXSksIDMyLikKKwor
Ly8gcmV0dXJuX2NhbGwud2FzdDo5MworcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBc
eDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4
NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3
Zlx4NjBceDAwXHgwMVx4N2NceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZm
XHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZc
eDZlXHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
MVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4
NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2
NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVc
eDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgw
YVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQw
XHgxMFx4MDBceGJkXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBceDQwXHhiZFx4NTFc
eDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1mNjQiLCBbXSks
IDY0LjEpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTUKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgw
MFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdm
XHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4
MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2
MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDAwXHg0Mlx4
MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgw
YiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBj
YWxsKCQxLCAiZmFjLWFjYyIsIFtpbnQ2NCgiMCIpLCBpbnQ2NCgiMSIpXSksIGludDY0KCIxIikp
CisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTYKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4MDdc
eDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4
MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgw
MVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2MVx4NjNc
eDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZc
eDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4ODBceDgwXHgw
MFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDAxXHg0Mlx4MDFceDEw
XHgwMFx4MDFceDQyXHgwMVx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4
cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAiZmFjLWFjYyIsIFtpbnQ2NCgiMSIpLCBpbnQ2NCgiMSIpXSksIGludDY0KCIxIikpCisKKy8v
IHJldHVybl9jYWxsLndhc3Q6OTcKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgw
MFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcw
XHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2Zc
eDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4
NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2MVx4NjNceDYzXHgw
MFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgw
NVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDljXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDA1XHg0Mlx4MDFceDEwXHgwMFx4
MDFceDQyXHhmOFx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBv
cnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwg
ImZhYy1hY2MiLCBbaW50NjQoIjUiKSwgaW50NjQoIjEiKV0pLCBpbnQ2NCgiMTIwIikpCisKKy8v
IHJldHVybl9jYWxsLndhc3Q6OTgKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgw
MFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcw
XHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2Zc
eDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4
NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2MVx4NjNceDYzXHgw
MFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgw
NVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDllXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDE5XHg0Mlx4MDFceDEwXHgwMFx4
MDFceDQyXHg4MFx4ODBceDgwXHhkZVx4ODdceDkyXHhlY1x4Y2ZceGUxXHgwMFx4MDFceDUxXHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZmFjLWFjYyIsIFtpbnQ2NCgiMjUiKSwg
aW50NjQoIjEiKV0pLCBpbnQ2NCgiN18wMzRfNTM1XzI3N181NzNfOTYzXzc3NiIpKQorCisvLyBy
ZXR1cm5fY2FsbC53YXN0OjEwMworcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAw
XHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBc
eDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4
NjBceDAxXHg3ZVx4MDFceDdlXHgwMlx4ODFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2
Zlx4NjRceDc1XHg2Y1x4NjVceDA1XHg2M1x4NmZceDc1XHg2ZVx4NzRceDAwXHgwNlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
Mlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJc
eDc1XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4
ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDBceDEwXHgwMFx4MDFceDQyXHgwMFx4MDFceDUxXHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiY291bnQiLCBbaW50NjQoIjAiKV0pLCBp
bnQ2NCgiMCIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwNAorcnVuKCgpID0+IGNhbGwoaW5z
dGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4
ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgw
MVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAy
XHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHgwMlx4ODFceDgxXHg4MFx4ODBc
eDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA1XHg2M1x4NmZceDc1XHg2ZVx4
NzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4
MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFceDgwXHg4MFx4ODBceDAw
XHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4ZThceDA3XHgxMFx4MDBc
eDAxXHg0Mlx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImNv
dW50IiwgW2ludDY0KCIxXzAwMCIpXSksIGludDY0KCIwIikpCisKKy8vIHJldHVybl9jYWxsLndh
c3Q6MTA1CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAw
XHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFc
eDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4
MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgw
MVx4N2VceDAyXHg4MVx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZj
XHg2NVx4MDVceDYzXHg2Zlx4NzVceDZlXHg3NFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4
MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
NFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBc
eDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4
MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgw
Mlx4NDBceDQyXHhjMFx4ODRceDNkXHgxMFx4MDBceDAxXHg0Mlx4MDBceDAxXHg1MVx4NDVceDBk
XHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFz
c2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImNvdW50IiwgW2ludDY0KCIxXzAwMF8wMDAiKV0p
LCBpbnQ2NCgiMCIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwNworcnVuKCgpID0+IGNhbGwo
aW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4
MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZm
XHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBc
eDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ODBceDgxXHg4MFx4
ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2NVx4NzZceDY1XHg2
ZVx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
YVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgw
MFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgw
XHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OVx4ODBceDgwXHg4MFx4MDBc
eDAxXHg5M1x4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwMFx4MTBceDAwXHgwMVx4
NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkp
LCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwg
W2ludDY0KCIwIildKSwgNDQpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTA4CitydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHg4MFx4ODFc
eDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDRceDY1XHg3Nlx4
NjVceDZlXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgw
XHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDAxXHgxMFx4MDBc
eDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhw
b3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEs
ICJldmVuIiwgW2ludDY0KCIxIildKSwgOTkpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTA5City
dW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4
NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2
Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAy
XHg4MFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDRc
eDY1XHg3Nlx4NjVceDZlXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4
ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4
MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceGU0
XHgwMFx4MTBceDAwXHgwMVx4NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBc
eDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+
IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxMDAiKV0pLCA0NCkKKworLy8gcmV0dXJuX2NhbGwu
d2FzdDoxMTAKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgw
MVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYw
XHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2Vc
eDAxXHg3Zlx4MDJceDgwXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4
NmNceDY1XHgwNFx4NjVceDc2XHg2NVx4NmVceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHg0Mlx4Y2RceDAwXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4
MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3Nl
cnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCI3NyIpXSksIDk5KQorCisv
LyByZXR1cm5fY2FsbC53YXN0OjExMQorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBc
eDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4
NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3
Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ODBceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZk
XHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBceDA2XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAy
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1
XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBc
eDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4
NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4
MFx4MDBceDAwXHgwMlx4NDBceDQyXHhjMFx4ODRceDNkXHgxMFx4MDBceDAxXHg0MVx4MmNceDAx
XHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwg
W10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV2ZW4iLCBbaW50NjQoIjFf
MDAwXzAwMCIpXSksIDQ0KQorCisvLyByZXR1cm5fY2FsbC53YXN0OjExMgorcnVuKCgpID0+IGNh
bGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgw
XHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFc
eDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4
NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ODBceDgxXHg4
MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2NVx4NzZceDY1
XHg2ZVx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2
XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Y1x4ODBceDgwXHg4MFx4
MDBceDAxXHg5Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhjMVx4ODRceDNkXHgx
MFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBi
IiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNh
bGwoJDEsICJldmVuIiwgW2ludDY0KCIxXzAwMF8wMDEiKV0pLCA5OSkKKworLy8gcmV0dXJuX2Nh
bGwud2FzdDoxMTMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYw
XHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2Zc
eDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4
N2VceDAxXHg3Zlx4MDJceGZmXHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3
NVx4NmNceDY1XHgwM1x4NmZceDY0XHg2NFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNc
eDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3
NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAx
XHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZc
eDBhXHg5YVx4ODBceDgwXHg4MFx4MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4
NDBceDQyXHgwMFx4MTBceDAwXHgwMVx4NDFceGUzXHgwMFx4MDFceDQ2XHg0NVx4MGRceDAwXHgw
Zlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2ludDY0KCIwIildKSwgOTkpCisKKy8vIHJldHVy
bl9jYWxsLndhc3Q6MTE0CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAw
XHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFc
eDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4
MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2
NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQxXHgyY1x4MDFceDQ2XHg0NVx4MGRceDAwXHgw
Zlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2ludDY0KCIxIildKSwgNDQpCisKKy8vIHJldHVy
bl9jYWxsLndhc3Q6MTE1CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAw
XHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFc
eDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4
MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2
NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHg0Mlx4YzhceDAxXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgw
ZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBh
c3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbaW50NjQoIjIwMCIpXSksIDk5KQor
CisvLyByZXR1cm5fY2FsbC53YXN0OjExNgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4
NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgw
MVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAx
XHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZc
eDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDAzXHg2Zlx4NjRceDY0XHgwMFx4MDZceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVc
eDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3
NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgw
XHgwMFx4MDBceDAyXHg0MFx4NDJceGNkXHgwMFx4MTBceDAwXHgwMVx4NDFceDJjXHgwMVx4NDZc
eDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbaW50NjQoIjc3IildKSwg
NDQpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTE3CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBc
eDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4
NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3
MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4
NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMVx4OTZceDgwXHg4
MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4YzBceDg0XHgzZFx4MTBceDAwXHgwMVx4NDFceGUz
XHgwMFx4MDFceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwg
ICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2lu
dDY0KCIxXzAwMF8wMDAiKV0pLCA5OSkKKworLy8gcmV0dXJuX2NhbGwud2FzdDoxMTgKK3J1bigo
KSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4
NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgw
MVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3Zlx4MDJceGZm
XHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NmZc
eDY0XHg2NFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4
MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhiZlx4ODRceDNk
XHgxMFx4MDBceDAxXHg0MVx4MmNceDAxXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIi
LCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2Fs
bCgkMSwgIm9kZCIsIFtpbnQ2NCgiOTk5Xzk5OSIpXSksIDQ0KQorCisvLyByZXR1cm5fY2FsbC53
YXN0OjEyMworYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgwMVx4N2ZceDYwXHgwMFx4MDBc
eDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5M1x4ODBceDgwXHg4MFx4
MDBceDAyXHg4Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDQxXHgwMFx4MGJceDgyXHg4
MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTMwCithc3Nl
cnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBc
eDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2VceDAzXHg4M1x4
ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5NVx4ODBceDgwXHg4MFx4MDBceDAyXHg4
Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDQxXHgwMFx4MGJceDg0XHg4MFx4ODBceDgw
XHgwMFx4MDBceDQyXHgwMVx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDoxMzgKK2Fzc2Vy
dF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg4XHg4MFx4
ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAwXHgwM1x4ODNceDgwXHg4
MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OTFceDgwXHg4MFx4ODBceDAwXHgwMlx4ODRceDgw
XHg4MFx4ODBceDAwXHgwMFx4MTJceDAxXHgwYlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIi
KTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDoxNDUKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgw
MFx4MDBceDYwXHgwMlx4N2NceDdmXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAw
XHgwMVx4MGFceDkxXHg4MFx4ODBceDgwXHgwMFx4MDJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBc
eDEyXHgwMVx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9j
YWxsLndhc3Q6MTUzCitsZXQgJDIgPSBpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAw
XHgwMFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAwXHgwM1x4ODNc
eDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAwXHgwYVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMlx4
ODZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4
MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE1OAorbGV0ICQzID0gaW5z
dGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4
ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgw
MFx4MGFceDljXHg4MFx4ODBceDgwXHgwMFx4MDJceDhmXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0
XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDBceDQxXHgwMVx4MTJceDAxXHgwYlx4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDoxNjMKK2Fz
c2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4
MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMlx4N2ZceDdmXHgwMFx4MDNceDgz
XHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgwMVx4MGFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDJc
eDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDAxXHg0MVx4MDFceDEyXHgwMVx4MGJceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTcwCithc3NlcnRf
aW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBceDgw
XHg4MFx4MDBceDAyXHg2MFx4MDBceDAwXHg2MFx4MDJceDdmXHg3Zlx4MDBceDAzXHg4M1x4ODBc
eDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5NFx4ODBceDgwXHg4MFx4MDBceDAyXHg4N1x4
ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDFceDAxXHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4
MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE3NworYXNzZXJ0X2ludmFs
aWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBc
eDAwXHgwMlx4NjBceDAwXHgwMFx4NjBceDAyXHg3Zlx4N2NceDAwXHgwM1x4ODNceDgwXHg4MFx4
ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMlx4OGZceDgwXHg4
MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceGYwXHgzZlx4NDFceDAx
XHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5f
Y2FsbC53YXN0OjE4NAorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4
MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgwMFx4NjBceDAyXHg3
Y1x4N2ZceDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OWNceDgw
XHg4MFx4ODBceDAwXHgwMlx4OGZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHg0NFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMFx4ZjBceDNmXHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4MFx4
MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE5NQorYXNzZXJ0X2ludmFsaWQo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAw
XHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4OGFc
eDgwXHg4MFx4ODBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDAxXHgwYiIp
OworCisvLyByZXR1cm5fY2FsbC53YXN0OjE5OQorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAw
XHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4OGVceDgwXHg4MFx4ODBc
eDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDk0XHg5OFx4ZGJceGUyXHgwM1x4
MGIiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3Jl
dHVybl9jYWxsX2luZGlyZWN0Lndhc3QgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10
ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjZjBhNzJlMDZhMGRm
N2Y2YWZiZTE0YTZkZTFhNGVjYzQ3Zjc2YWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dh
c20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0CkBAIC0w
LDAgKzEsNTM2IEBACis7OyBUZXN0IGByZXR1cm5fY2FsbF9pbmRpcmVjdGAgb3BlcmF0b3IKKwor
KG1vZHVsZQorICA7OyBBdXhpbGlhcnkgZGVmaW5pdGlvbnMKKyAgKHR5cGUgJHByb2MgKGZ1bmMp
KQorICAodHlwZSAkb3V0LWkzMiAoZnVuYyAocmVzdWx0IGkzMikpKQorICAodHlwZSAkb3V0LWk2
NCAoZnVuYyAocmVzdWx0IGk2NCkpKQorICAodHlwZSAkb3V0LWYzMiAoZnVuYyAocmVzdWx0IGYz
MikpKQorICAodHlwZSAkb3V0LWY2NCAoZnVuYyAocmVzdWx0IGY2NCkpKQorICAodHlwZSAkb3Zl
ci1pMzIgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgKHR5cGUgJG92ZXItaTY0
IChmdW5jIChwYXJhbSBpNjQpIChyZXN1bHQgaTY0KSkpCisgICh0eXBlICRvdmVyLWYzMiAoZnVu
YyAocGFyYW0gZjMyKSAocmVzdWx0IGYzMikpKQorICAodHlwZSAkb3Zlci1mNjQgKGZ1bmMgKHBh
cmFtIGY2NCkgKHJlc3VsdCBmNjQpKSkKKyAgKHR5cGUgJGYzMi1pMzIgKGZ1bmMgKHBhcmFtIGYz
MiBpMzIpIChyZXN1bHQgaTMyKSkpCisgICh0eXBlICRpMzItaTY0IChmdW5jIChwYXJhbSBpMzIg
aTY0KSAocmVzdWx0IGk2NCkpKQorICAodHlwZSAkZjY0LWYzMiAoZnVuYyAocGFyYW0gZjY0IGYz
MikgKHJlc3VsdCBmMzIpKSkKKyAgKHR5cGUgJGk2NC1mNjQgKGZ1bmMgKHBhcmFtIGk2NCBmNjQp
IChyZXN1bHQgZjY0KSkpCisgICh0eXBlICRvdmVyLWkzMi1kdXBsaWNhdGUgKGZ1bmMgKHBhcmFt
IGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgKHR5cGUgJG92ZXItaTY0LWR1cGxpY2F0ZSAoZnVuYyAo
cGFyYW0gaTY0KSAocmVzdWx0IGk2NCkpKQorICAodHlwZSAkb3Zlci1mMzItZHVwbGljYXRlIChm
dW5jIChwYXJhbSBmMzIpIChyZXN1bHQgZjMyKSkpCisgICh0eXBlICRvdmVyLWY2NC1kdXBsaWNh
dGUgKGZ1bmMgKHBhcmFtIGY2NCkgKHJlc3VsdCBmNjQpKSkKKworICAoZnVuYyAkY29uc3QtaTMy
ICh0eXBlICRvdXQtaTMyKSAoaTMyLmNvbnN0IDB4MTMyKSkKKyAgKGZ1bmMgJGNvbnN0LWk2NCAo
dHlwZSAkb3V0LWk2NCkgKGk2NC5jb25zdCAweDE2NCkpCisgIChmdW5jICRjb25zdC1mMzIgKHR5
cGUgJG91dC1mMzIpIChmMzIuY29uc3QgMHhmMzIpKQorICAoZnVuYyAkY29uc3QtZjY0ICh0eXBl
ICRvdXQtZjY0KSAoZjY0LmNvbnN0IDB4ZjY0KSkKKworICAoZnVuYyAkaWQtaTMyICh0eXBlICRv
dmVyLWkzMikgKGxvY2FsLmdldCAwKSkKKyAgKGZ1bmMgJGlkLWk2NCAodHlwZSAkb3Zlci1pNjQp
IChsb2NhbC5nZXQgMCkpCisgIChmdW5jICRpZC1mMzIgKHR5cGUgJG92ZXItZjMyKSAobG9jYWwu
Z2V0IDApKQorICAoZnVuYyAkaWQtZjY0ICh0eXBlICRvdmVyLWY2NCkgKGxvY2FsLmdldCAwKSkK
KworICAoZnVuYyAkaTMyLWk2NCAodHlwZSAkaTMyLWk2NCkgKGxvY2FsLmdldCAxKSkKKyAgKGZ1
bmMgJGk2NC1mNjQgKHR5cGUgJGk2NC1mNjQpIChsb2NhbC5nZXQgMSkpCisgIChmdW5jICRmMzIt
aTMyICh0eXBlICRmMzItaTMyKSAobG9jYWwuZ2V0IDEpKQorICAoZnVuYyAkZjY0LWYzMiAodHlw
ZSAkZjY0LWYzMikgKGxvY2FsLmdldCAxKSkKKworICAoZnVuYyAkb3Zlci1pMzItZHVwbGljYXRl
ICh0eXBlICRvdmVyLWkzMi1kdXBsaWNhdGUpIChsb2NhbC5nZXQgMCkpCisgIChmdW5jICRvdmVy
LWk2NC1kdXBsaWNhdGUgKHR5cGUgJG92ZXItaTY0LWR1cGxpY2F0ZSkgKGxvY2FsLmdldCAwKSkK
KyAgKGZ1bmMgJG92ZXItZjMyLWR1cGxpY2F0ZSAodHlwZSAkb3Zlci1mMzItZHVwbGljYXRlKSAo
bG9jYWwuZ2V0IDApKQorICAoZnVuYyAkb3Zlci1mNjQtZHVwbGljYXRlICh0eXBlICRvdmVyLWY2
NC1kdXBsaWNhdGUpIChsb2NhbC5nZXQgMCkpCisKKyAgKHRhYmxlIGZ1bmNyZWYKKyAgICAoZWxl
bQorICAgICAgJGNvbnN0LWkzMiAkY29uc3QtaTY0ICRjb25zdC1mMzIgJGNvbnN0LWY2NAorICAg
ICAgJGlkLWkzMiAkaWQtaTY0ICRpZC1mMzIgJGlkLWY2NAorICAgICAgJGYzMi1pMzIgJGkzMi1p
NjQgJGY2NC1mMzIgJGk2NC1mNjQKKyAgICAgICRmYWMgJGZhYy1hY2MgJGV2ZW4gJG9kZAorICAg
ICAgJG92ZXItaTMyLWR1cGxpY2F0ZSAkb3Zlci1pNjQtZHVwbGljYXRlCisgICAgICAkb3Zlci1m
MzItZHVwbGljYXRlICRvdmVyLWY2NC1kdXBsaWNhdGUKKyAgICApCisgICkKKworICA7OyBTeW50
YXgKKworICAoZnVuYworICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAoaTMyLmNvbnN0IDApKQor
ICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocGFyYW0gaTY0KSAoaTY0LmNvbnN0IDApIChpMzIu
Y29uc3QgMCkpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0IChwYXJhbSBpNjQpIChwYXJhbSkg
KHBhcmFtIGY2NCBpMzIgaTY0KQorICAgICAgKGk2NC5jb25zdCAwKSAoZjY0LmNvbnN0IDApIChp
MzIuY29uc3QgMCkgKGk2NC5jb25zdCAwKSAoaTMyLmNvbnN0IDApCisgICAgKQorICAgIChyZXR1
cm5fY2FsbF9pbmRpcmVjdCAocmVzdWx0KSAoaTMyLmNvbnN0IDApKQorICApCisKKyAgKGZ1bmMg
KHJlc3VsdCBpMzIpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0IChyZXN1bHQgaTMyKSAoaTMy
LmNvbnN0IDApKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocmVzdWx0IGkzMikgKHJlc3Vs
dCkgKGkzMi5jb25zdCAwKSkKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHBhcmFtIGk2NCkg
KHJlc3VsdCBpMzIpIChpNjQuY29uc3QgMCkgKGkzMi5jb25zdCAwKSkKKyAgICAocmV0dXJuX2Nh
bGxfaW5kaXJlY3QKKyAgICAgIChwYXJhbSkgKHBhcmFtIGk2NCkgKHBhcmFtKSAocGFyYW0gZjY0
IGkzMiBpNjQpIChwYXJhbSkgKHBhcmFtKQorICAgICAgKHJlc3VsdCkgKHJlc3VsdCBpMzIpIChy
ZXN1bHQpIChyZXN1bHQpCisgICAgICAoaTY0LmNvbnN0IDApIChmNjQuY29uc3QgMCkgKGkzMi5j
b25zdCAwKSAoaTY0LmNvbnN0IDApIChpMzIuY29uc3QgMCkKKyAgICApCisgICkKKworICAoZnVu
YyAocmVzdWx0IGk2NCkKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJG92ZXItaTY0
KSAocGFyYW0gaTY0KSAocmVzdWx0IGk2NCkKKyAgICAgIChpNjQuY29uc3QgMCkgKGkzMi5jb25z
dCAwKQorICAgICkKKyAgKQorCisgIDs7IFR5cGluZworCisgIChmdW5jIChleHBvcnQgInR5cGUt
aTMyIikgKHJlc3VsdCBpMzIpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdXQt
aTMyKSAoaTMyLmNvbnN0IDApKQorICApCisgIChmdW5jIChleHBvcnQgInR5cGUtaTY0IikgKHJl
c3VsdCBpNjQpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdXQtaTY0KSAoaTMy
LmNvbnN0IDEpKQorICApCisgIChmdW5jIChleHBvcnQgInR5cGUtZjMyIikgKHJlc3VsdCBmMzIp
CisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdXQtZjMyKSAoaTMyLmNvbnN0IDIp
KQorICApCisgIChmdW5jIChleHBvcnQgInR5cGUtZjY0IikgKHJlc3VsdCBmNjQpCisgICAgKHJl
dHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdXQtZjY0KSAoaTMyLmNvbnN0IDMpKQorICApCisK
KyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1pbmRleCIpIChyZXN1bHQgaTY0KQorICAgIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAodHlwZSAkb3Zlci1pNjQpIChpNjQuY29uc3QgMTAwKSAoaTMyLmNvbnN0
IDUpKQorICApCisKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1maXJzdC1pMzIiKSAocmVzdWx0IGkz
MikKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJG92ZXItaTMyKSAoaTMyLmNvbnN0
IDMyKSAoaTMyLmNvbnN0IDQpKQorICApCisgIChmdW5jIChleHBvcnQgInR5cGUtZmlyc3QtaTY0
IikgKHJlc3VsdCBpNjQpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdmVyLWk2
NCkgKGk2NC5jb25zdCA2NCkgKGkzMi5jb25zdCA1KSkKKyAgKQorICAoZnVuYyAoZXhwb3J0ICJ0
eXBlLWZpcnN0LWYzMiIpIChyZXN1bHQgZjMyKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAo
dHlwZSAkb3Zlci1mMzIpIChmMzIuY29uc3QgMS4zMikgKGkzMi5jb25zdCA2KSkKKyAgKQorICAo
ZnVuYyAoZXhwb3J0ICJ0eXBlLWZpcnN0LWY2NCIpIChyZXN1bHQgZjY0KQorICAgIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAodHlwZSAkb3Zlci1mNjQpIChmNjQuY29uc3QgMS42NCkgKGkzMi5jb25z
dCA3KSkKKyAgKQorCisgIChmdW5jIChleHBvcnQgInR5cGUtc2Vjb25kLWkzMiIpIChyZXN1bHQg
aTMyKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkZjMyLWkzMikKKyAgICAgIChm
MzIuY29uc3QgMzIuMSkgKGkzMi5jb25zdCAzMikgKGkzMi5jb25zdCA4KQorICAgICkKKyAgKQor
ICAoZnVuYyAoZXhwb3J0ICJ0eXBlLXNlY29uZC1pNjQiKSAocmVzdWx0IGk2NCkKKyAgICAocmV0
dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJGkzMi1pNjQpCisgICAgICAoaTMyLmNvbnN0IDMyKSAo
aTY0LmNvbnN0IDY0KSAoaTMyLmNvbnN0IDkpCisgICAgKQorICApCisgIChmdW5jIChleHBvcnQg
InR5cGUtc2Vjb25kLWYzMiIpIChyZXN1bHQgZjMyKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVj
dCAodHlwZSAkZjY0LWYzMikKKyAgICAgIChmNjQuY29uc3QgNjQpIChmMzIuY29uc3QgMzIpIChp
MzIuY29uc3QgMTApCisgICAgKQorICApCisgIChmdW5jIChleHBvcnQgInR5cGUtc2Vjb25kLWY2
NCIpIChyZXN1bHQgZjY0KQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkaTY0LWY2
NCkKKyAgICAgIChpNjQuY29uc3QgNjQpIChmNjQuY29uc3QgNjQuMSkgKGkzMi5jb25zdCAxMSkK
KyAgICApCisgICkKKworICA7OyBEaXNwYXRjaAorCisgIChmdW5jIChleHBvcnQgImRpc3BhdGNo
IikgKHBhcmFtIGkzMiBpNjQpIChyZXN1bHQgaTY0KQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVj
dCAodHlwZSAkb3Zlci1pNjQpIChsb2NhbC5nZXQgMSkgKGxvY2FsLmdldCAwKSkKKyAgKQorCisg
IChmdW5jIChleHBvcnQgImRpc3BhdGNoLXN0cnVjdHVyYWwiKSAocGFyYW0gaTMyKSAocmVzdWx0
IGk2NCkKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJG92ZXItaTY0LWR1cGxpY2F0
ZSkKKyAgICAgIChpNjQuY29uc3QgOSkgKGxvY2FsLmdldCAwKQorICAgICkKKyAgKQorCisgIDs7
IE11bHRpcGxlIHRhYmxlcworCisgICh0YWJsZSAkdGFiMiBmdW5jcmVmIChlbGVtICR0YWItZjEp
KQorICAodGFibGUgJHRhYjMgZnVuY3JlZiAoZWxlbSAkdGFiLWYyKSkKKworICAoZnVuYyAkdGFi
LWYxIChyZXN1bHQgaTMyKSAoaTMyLmNvbnN0IDB4MTMzKSkKKyAgKGZ1bmMgJHRhYi1mMiAocmVz
dWx0IGkzMikgKGkzMi5jb25zdCAweDEzNCkpCisKKyAgKGZ1bmMgKGV4cG9ydCAiY2FsbC10YWIi
KSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAoaWYgKGkzMi5lcSAobG9jYWwuZ2V0
ICRpKSAoaTMyLmNvbnN0IDApKQorICAgICAgKHRoZW4gKHJldHVybl9jYWxsX2luZGlyZWN0ICh0
eXBlICRvdXQtaTMyKSAoaTMyLmNvbnN0IDApKSkKKyAgICApCisgICAgKGlmIChpMzIuZXEgKGxv
Y2FsLmdldCAkaSkgKGkzMi5jb25zdCAxKSkKKyAgICAgICh0aGVuIChyZXR1cm5fY2FsbF9pbmRp
cmVjdCAxICh0eXBlICRvdXQtaTMyKSAoaTMyLmNvbnN0IDApKSkKKyAgICApCisgICAgKGlmIChp
MzIuZXEgKGxvY2FsLmdldCAkaSkgKGkzMi5jb25zdCAyKSkKKyAgICAgICh0aGVuIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAkdGFiMyAodHlwZSAkb3V0LWkzMikgKGkzMi5jb25zdCAwKSkpCisgICAg
KQorICAgIChpMzIuY29uc3QgMCkKKyAgKQorCisgIDs7IFJlY3Vyc2lvbgorCisgIChmdW5jICRm
YWMgKGV4cG9ydCAiZmFjIikgKHR5cGUgJG92ZXItaTY0KQorICAgIChyZXR1cm5fY2FsbF9pbmRp
cmVjdCAocGFyYW0gaTY0IGk2NCkgKHJlc3VsdCBpNjQpCisgICAgICAobG9jYWwuZ2V0IDApIChp
NjQuY29uc3QgMSkgKGkzMi5jb25zdCAxMykKKyAgICApCisgICkKKworICAoZnVuYyAkZmFjLWFj
YyAocGFyYW0gaTY0IGk2NCkgKHJlc3VsdCBpNjQpCisgICAgKGlmIChyZXN1bHQgaTY0KSAoaTY0
LmVxeiAobG9jYWwuZ2V0IDApKQorICAgICAgKHRoZW4gKGxvY2FsLmdldCAxKSkKKyAgICAgIChl
bHNlCisgICAgICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocGFyYW0gaTY0IGk2NCkgKHJlc3Vs
dCBpNjQpCisgICAgICAgICAgKGk2NC5zdWIgKGxvY2FsLmdldCAwKSAoaTY0LmNvbnN0IDEpKQor
ICAgICAgICAgIChpNjQubXVsIChsb2NhbC5nZXQgMCkgKGxvY2FsLmdldCAxKSkKKyAgICAgICAg
ICAoaTMyLmNvbnN0IDEzKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCisKKyAgKGZ1
bmMgJGV2ZW4gKGV4cG9ydCAiZXZlbiIpIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKQorICAgIChp
ZiAocmVzdWx0IGkzMikgKGkzMi5lcXogKGxvY2FsLmdldCAwKSkKKyAgICAgICh0aGVuIChpMzIu
Y29uc3QgNDQpKQorICAgICAgKGVsc2UKKyAgICAgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0
eXBlICRvdmVyLWkzMikKKyAgICAgICAgICAoaTMyLnN1YiAobG9jYWwuZ2V0IDApIChpMzIuY29u
c3QgMSkpCisgICAgICAgICAgKGkzMi5jb25zdCAxNSkKKyAgICAgICAgKQorICAgICAgKQorICAg
ICkKKyAgKQorICAoZnVuYyAkb2RkIChleHBvcnQgIm9kZCIpIChwYXJhbSBpMzIpIChyZXN1bHQg
aTMyKQorICAgIChpZiAocmVzdWx0IGkzMikgKGkzMi5lcXogKGxvY2FsLmdldCAwKSkKKyAgICAg
ICh0aGVuIChpMzIuY29uc3QgOTkpKQorICAgICAgKGVsc2UKKyAgICAgICAgKHJldHVybl9jYWxs
X2luZGlyZWN0ICh0eXBlICRvdmVyLWkzMikKKyAgICAgICAgICAoaTMyLnN1YiAobG9jYWwuZ2V0
IDApIChpMzIuY29uc3QgMSkpCisgICAgICAgICAgKGkzMi5jb25zdCAxNCkKKyAgICAgICAgKQor
ICAgICAgKQorICAgICkKKyAgKQorKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWkz
MiIpIChpMzIuY29uc3QgMHgxMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1pNjQi
KSAoaTY0LmNvbnN0IDB4MTY0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZjMyIikg
KGYzMi5jb25zdCAweGYzMikpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWY2NCIpIChm
NjQuY29uc3QgMHhmNjQpKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWluZGV4Iikg
KGk2NC5jb25zdCAxMDApKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWZpcnN0LWkz
MiIpIChpMzIuY29uc3QgMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1maXJzdC1p
NjQiKSAoaTY0LmNvbnN0IDY0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZmlyc3Qt
ZjMyIikgKGYzMi5jb25zdCAxLjMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZmly
c3QtZjY0IikgKGY2NC5jb25zdCAxLjY0KSkKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlw
ZS1zZWNvbmQtaTMyIikgKGkzMi5jb25zdCAzMikpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0
eXBlLXNlY29uZC1pNjQiKSAoaTY0LmNvbnN0IDY0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2Ug
InR5cGUtc2Vjb25kLWYzMiIpIChmMzIuY29uc3QgMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9r
ZSAidHlwZS1zZWNvbmQtZjY0IikgKGY2NC5jb25zdCA2NC4xKSkKKworKGFzc2VydF9yZXR1cm4g
KGludm9rZSAiZGlzcGF0Y2giIChpMzIuY29uc3QgNSkgKGk2NC5jb25zdCAyKSkgKGk2NC5jb25z
dCAyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImRpc3BhdGNoIiAoaTMyLmNvbnN0IDUpIChp
NjQuY29uc3QgNSkpIChpNjQuY29uc3QgNSkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJkaXNw
YXRjaCIgKGkzMi5jb25zdCAxMikgKGk2NC5jb25zdCA1KSkgKGk2NC5jb25zdCAxMjApKQorKGFz
c2VydF9yZXR1cm4gKGludm9rZSAiZGlzcGF0Y2giIChpMzIuY29uc3QgMTcpIChpNjQuY29uc3Qg
MikpIChpNjQuY29uc3QgMikpCisoYXNzZXJ0X3RyYXAgKGludm9rZSAiZGlzcGF0Y2giIChpMzIu
Y29uc3QgMCkgKGk2NC5jb25zdCAyKSkgImluZGlyZWN0IGNhbGwgdHlwZSBtaXNtYXRjaCIpCiso
YXNzZXJ0X3RyYXAgKGludm9rZSAiZGlzcGF0Y2giIChpMzIuY29uc3QgMTUpIChpNjQuY29uc3Qg
MikpICJpbmRpcmVjdCBjYWxsIHR5cGUgbWlzbWF0Y2giKQorKGFzc2VydF90cmFwIChpbnZva2Ug
ImRpc3BhdGNoIiAoaTMyLmNvbnN0IDIwKSAoaTY0LmNvbnN0IDIpKSAidW5kZWZpbmVkIGVsZW1l
bnQiKQorKGFzc2VydF90cmFwIChpbnZva2UgImRpc3BhdGNoIiAoaTMyLmNvbnN0IC0xKSAoaTY0
LmNvbnN0IDIpKSAidW5kZWZpbmVkIGVsZW1lbnQiKQorKGFzc2VydF90cmFwIChpbnZva2UgImRp
c3BhdGNoIiAoaTMyLmNvbnN0IDEyMTM0MzI0MjMpIChpNjQuY29uc3QgMikpICJ1bmRlZmluZWQg
ZWxlbWVudCIpCisKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImRpc3BhdGNoLXN0cnVjdHVyYWwi
IChpMzIuY29uc3QgNSkpIChpNjQuY29uc3QgOSkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJk
aXNwYXRjaC1zdHJ1Y3R1cmFsIiAoaTMyLmNvbnN0IDUpKSAoaTY0LmNvbnN0IDkpKQorKGFzc2Vy
dF9yZXR1cm4gKGludm9rZSAiZGlzcGF0Y2gtc3RydWN0dXJhbCIgKGkzMi5jb25zdCAxMikpIChp
NjQuY29uc3QgMzYyODgwKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImRpc3BhdGNoLXN0cnVj
dHVyYWwiIChpMzIuY29uc3QgMTcpKSAoaTY0LmNvbnN0IDkpKQorKGFzc2VydF90cmFwIChpbnZv
a2UgImRpc3BhdGNoLXN0cnVjdHVyYWwiIChpMzIuY29uc3QgMTEpKSAiaW5kaXJlY3QgY2FsbCB0
eXBlIG1pc21hdGNoIikKKyhhc3NlcnRfdHJhcCAoaW52b2tlICJkaXNwYXRjaC1zdHJ1Y3R1cmFs
IiAoaTMyLmNvbnN0IDE2KSkgImluZGlyZWN0IGNhbGwgdHlwZSBtaXNtYXRjaCIpCisKKyhhc3Nl
cnRfcmV0dXJuIChpbnZva2UgImNhbGwtdGFiIiAoaTMyLmNvbnN0IDApKSAoaTMyLmNvbnN0IDB4
MTMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImNhbGwtdGFiIiAoaTMyLmNvbnN0IDEpKSAo
aTMyLmNvbnN0IDB4MTMzKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImNhbGwtdGFiIiAoaTMy
LmNvbnN0IDIpKSAoaTMyLmNvbnN0IDB4MTM0KSkKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAi
ZmFjIiAoaTY0LmNvbnN0IDApKSAoaTY0LmNvbnN0IDEpKQorKGFzc2VydF9yZXR1cm4gKGludm9r
ZSAiZmFjIiAoaTY0LmNvbnN0IDEpKSAoaTY0LmNvbnN0IDEpKQorKGFzc2VydF9yZXR1cm4gKGlu
dm9rZSAiZmFjIiAoaTY0LmNvbnN0IDUpKSAoaTY0LmNvbnN0IDEyMCkpCisoYXNzZXJ0X3JldHVy
biAoaW52b2tlICJmYWMiIChpNjQuY29uc3QgMjUpKSAoaTY0LmNvbnN0IDcwMzQ1MzUyNzc1NzM5
NjM3NzYpKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJldmVuIiAoaTMyLmNvbnN0IDApKSAo
aTMyLmNvbnN0IDQ0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4iIChpMzIuY29uc3Qg
MSkpIChpMzIuY29uc3QgOTkpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZXZlbiIgKGkzMi5j
b25zdCAxMDApKSAoaTMyLmNvbnN0IDQ0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4i
IChpMzIuY29uc3QgNzcpKSAoaTMyLmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2Ug
ImV2ZW4iIChpMzIuY29uc3QgMTAwXzAwMCkpIChpMzIuY29uc3QgNDQpKQorKGFzc2VydF9yZXR1
cm4gKGludm9rZSAiZXZlbiIgKGkzMi5jb25zdCAxMTFfMTExKSkgKGkzMi5jb25zdCA5OSkpCiso
YXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChpMzIuY29uc3QgMCkpIChpMzIuY29uc3QgOTkp
KQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAib2RkIiAoaTMyLmNvbnN0IDEpKSAoaTMyLmNvbnN0
IDQ0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGkzMi5jb25zdCAyMDApKSAoaTMy
LmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGkzMi5jb25zdCA3Nykp
IChpMzIuY29uc3QgNDQpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAib2RkIiAoaTMyLmNvbnN0
IDIwMF8wMDIpKSAoaTMyLmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIg
KGkzMi5jb25zdCAzMDBfMDAzKSkgKGkzMi5jb25zdCA0NCkpCisKKworOzsgSW52YWxpZCBzeW50
YXgKKworKGFzc2VydF9tYWxmb3JtZWQKKyAgKG1vZHVsZSBxdW90ZQorICAgICIodHlwZSAkc2ln
IChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpIgorICAgICIodGFibGUgMCBmdW5jcmVm
KSIKKyAgICAiKGZ1bmMgKHJlc3VsdCBpMzIpIgorICAgICIgIChyZXR1cm5fY2FsbF9pbmRpcmVj
dCAodHlwZSAkc2lnKSAocmVzdWx0IGkzMikgKHBhcmFtIGkzMikiCisgICAgIiAgICAoaTMyLmNv
bnN0IDApIChpMzIuY29uc3QgMCkiCisgICAgIiAgKSIKKyAgICAiKSIKKyAgKQorICAidW5leHBl
Y3RlZCB0b2tlbiIKKykKKyhhc3NlcnRfbWFsZm9ybWVkCisgIChtb2R1bGUgcXVvdGUKKyAgICAi
KHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKSIKKyAgICAiKHRhYmxl
IDAgZnVuY3JlZikiCisgICAgIihmdW5jIChyZXN1bHQgaTMyKSIKKyAgICAiICAocmV0dXJuX2Nh
bGxfaW5kaXJlY3QgKHBhcmFtIGkzMikgKHR5cGUgJHNpZykgKHJlc3VsdCBpMzIpIgorICAgICIg
ICAgKGkzMi5jb25zdCAwKSAoaTMyLmNvbnN0IDApIgorICAgICIgICkiCisgICAgIikiCisgICkK
KyAgInVuZXhwZWN0ZWQgdG9rZW4iCispCisoYXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxlIHF1
b3RlCisgICAgIih0eXBlICRzaWcgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkiCisg
ICAgIih0YWJsZSAwIGZ1bmNyZWYpIgorICAgICIoZnVuYyAocmVzdWx0IGkzMikiCisgICAgIiAg
KHJldHVybl9jYWxsX2luZGlyZWN0IChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSAodHlwZSAkc2ln
KSIKKyAgICAiICAgIChpMzIuY29uc3QgMCkgKGkzMi5jb25zdCAwKSIKKyAgICAiICApIgorICAg
ICIpIgorICApCisgICJ1bmV4cGVjdGVkIHRva2VuIgorKQorKGFzc2VydF9tYWxmb3JtZWQKKyAg
KG1vZHVsZSBxdW90ZQorICAgICIodHlwZSAkc2lnIChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQg
aTMyKSkpIgorICAgICIodGFibGUgMCBmdW5jcmVmKSIKKyAgICAiKGZ1bmMgKHJlc3VsdCBpMzIp
IgorICAgICIgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocmVzdWx0IGkzMikgKHR5cGUgJHNpZykg
KHBhcmFtIGkzMikiCisgICAgIiAgICAoaTMyLmNvbnN0IDApIChpMzIuY29uc3QgMCkiCisgICAg
IiAgKSIKKyAgICAiKSIKKyAgKQorICAidW5leHBlY3RlZCB0b2tlbiIKKykKKyhhc3NlcnRfbWFs
Zm9ybWVkCisgIChtb2R1bGUgcXVvdGUKKyAgICAiKHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMy
KSAocmVzdWx0IGkzMikpKSIKKyAgICAiKHRhYmxlIDAgZnVuY3JlZikiCisgICAgIihmdW5jIChy
ZXN1bHQgaTMyKSIKKyAgICAiICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHJlc3VsdCBpMzIpIChw
YXJhbSBpMzIpICh0eXBlICRzaWcpIgorICAgICIgICAgKGkzMi5jb25zdCAwKSAoaTMyLmNvbnN0
IDApIgorICAgICIgICkiCisgICAgIikiCisgICkKKyAgInVuZXhwZWN0ZWQgdG9rZW4iCispCiso
YXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxlIHF1b3RlCisgICAgIih0YWJsZSAwIGZ1bmNyZWYp
IgorICAgICIoZnVuYyAocmVzdWx0IGkzMikiCisgICAgIiAgKHJldHVybl9jYWxsX2luZGlyZWN0
IChyZXN1bHQgaTMyKSAocGFyYW0gaTMyKSIKKyAgICAiICAgIChpMzIuY29uc3QgMCkgKGkzMi5j
b25zdCAwKSIKKyAgICAiICApIgorICAgICIpIgorICApCisgICJ1bmV4cGVjdGVkIHRva2VuIgor
KQorCisoYXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxlIHF1b3RlCisgICAgIih0YWJsZSAwIGZ1
bmNyZWYpIgorICAgICIoZnVuYyAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHBhcmFtICR4IGkzMikg
KGkzMi5jb25zdCAwKSAoaTMyLmNvbnN0IDApKSkiCisgICkKKyAgInVuZXhwZWN0ZWQgdG9rZW4i
CispCisoYXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxlIHF1b3RlCisgICAgIih0eXBlICRzaWcg
KGZ1bmMpKSIKKyAgICAiKHRhYmxlIDAgZnVuY3JlZikiCisgICAgIihmdW5jIChyZXN1bHQgaTMy
KSIKKyAgICAiICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJHNpZykgKHJlc3VsdCBpMzIp
IChpMzIuY29uc3QgMCkpIgorICAgICIpIgorICApCisgICJpbmxpbmUgZnVuY3Rpb24gdHlwZSIK
KykKKyhhc3NlcnRfbWFsZm9ybWVkCisgIChtb2R1bGUgcXVvdGUKKyAgICAiKHR5cGUgJHNpZyAo
ZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKSIKKyAgICAiKHRhYmxlIDAgZnVuY3JlZiki
CisgICAgIihmdW5jIChyZXN1bHQgaTMyKSIKKyAgICAiICAocmV0dXJuX2NhbGxfaW5kaXJlY3Qg
KHR5cGUgJHNpZykgKHJlc3VsdCBpMzIpIChpMzIuY29uc3QgMCkpIgorICAgICIpIgorICApCisg
ICJpbmxpbmUgZnVuY3Rpb24gdHlwZSIKKykKKyhhc3NlcnRfbWFsZm9ybWVkCisgIChtb2R1bGUg
cXVvdGUKKyAgICAiKHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKSIK
KyAgICAiKHRhYmxlIDAgZnVuY3JlZikiCisgICAgIihmdW5jIgorICAgICIgIChyZXR1cm5fY2Fs
bF9pbmRpcmVjdCAodHlwZSAkc2lnKSAocGFyYW0gaTMyKSIKKyAgICAiICAgIChpMzIuY29uc3Qg
MCkgKGkzMi5jb25zdCAwKSIKKyAgICAiICApIgorICAgICIpIgorICApCisgICJpbmxpbmUgZnVu
Y3Rpb24gdHlwZSIKKykKKyhhc3NlcnRfbWFsZm9ybWVkCisgIChtb2R1bGUgcXVvdGUKKyAgICAi
KHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMyIGkzMikgKHJlc3VsdCBpMzIpKSkiCisgICAgIih0
YWJsZSAwIGZ1bmNyZWYpIgorICAgICIoZnVuYyAocmVzdWx0IGkzMikiCisgICAgIiAgKHJldHVy
bl9jYWxsX2luZGlyZWN0ICh0eXBlICRzaWcpIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSIKKyAg
ICAiICAgIChpMzIuY29uc3QgMCkgKGkzMi5jb25zdCAwKSIKKyAgICAiICApIgorICAgICIpIgor
ICApCisgICJpbmxpbmUgZnVuY3Rpb24gdHlwZSIKKykKKworOzsgSW52YWxpZCB0eXBpbmcKKwor
KGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodHlwZSAoZnVuYykpCisgICAgKGZ1bmMg
JG5vLXRhYmxlIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDApKSkK
KyAgKQorICAidW5rbm93biB0YWJsZSIKKykKKworKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUK
KyAgICAodHlwZSAoZnVuYykpCisgICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkdHlw
ZS12b2lkLXZzLW51bSAoaTMyLmVxeiAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkz
Mi5jb25zdCAwKSkpKQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlk
CisgIChtb2R1bGUKKyAgICAodHlwZSAoZnVuYyAocmVzdWx0IGk2NCkpKQorICAgICh0YWJsZSAw
IGZ1bmNyZWYpCisgICAgKGZ1bmMgJHR5cGUtbnVtLXZzLW51bSAoaTMyLmVxeiAocmV0dXJuX2Nh
bGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkzMi5jb25zdCAwKSkpKQorICApCisgICJ0eXBlIG1pc21h
dGNoIgorKQorCisoYXNzZXJ0X2ludmFsaWQKKyAgKG1vZHVsZQorICAgICh0eXBlIChmdW5jIChw
YXJhbSBpMzIpKSkKKyAgICAodGFibGUgMCBmdW5jcmVmKQorICAgIChmdW5jICRhcml0eS0wLXZz
LTEgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlIDApIChpMzIuY29uc3QgMCkpKQorICApCisg
ICJ0eXBlIG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodHlw
ZSAoZnVuYyAocGFyYW0gZjY0IGkzMikpKQorICAgICh0YWJsZSAwIGZ1bmNyZWYpCisgICAgKGZ1
bmMgJGFyaXR5LTAtdnMtMiAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkzMi5jb25z
dCAwKSkpCisgICkKKyAgInR5cGUgbWlzbWF0Y2giCispCisKKyhtb2R1bGUKKyAgKHR5cGUgKGZ1
bmMpKQorICAodGFibGUgMCBmdW5jcmVmKQorICAoZnVuYyAkYXJpdHktMS12cy0wIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDEpIChpMzIuY29uc3QgMCkpKQorKQor
CisobW9kdWxlCisgICh0eXBlIChmdW5jKSkKKyAgKHRhYmxlIDAgZnVuY3JlZikKKyAgKGZ1bmMg
JGFyaXR5LTItdnMtMAorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoZjY0LmNv
bnN0IDIpIChpMzIuY29uc3QgMSkgKGkzMi5jb25zdCAwKSkKKyAgKQorKQorCisoYXNzZXJ0X2lu
dmFsaWQKKyAgKG1vZHVsZQorICAgICh0eXBlIChmdW5jIChwYXJhbSBpMzIpKSkKKyAgICAodGFi
bGUgMCBmdW5jcmVmKQorICAgIChmdW5jICR0eXBlLWZ1bmMtdm9pZC12cy1pMzIgKHJldHVybl9j
YWxsX2luZGlyZWN0ICh0eXBlIDApIChpMzIuY29uc3QgMSkgKG5vcCkpKQorICApCisgICJ0eXBl
IG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodHlwZSAoZnVu
YyAocGFyYW0gaTMyKSkpCisgICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkdHlwZS1m
dW5jLW51bS12cy1pMzIgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlIDApIChpMzIuY29uc3Qg
MCkgKGk2NC5jb25zdCAxKSkpCisgICkKKyAgInR5cGUgbWlzbWF0Y2giCispCisKKyhhc3NlcnRf
aW52YWxpZAorICAobW9kdWxlCisgICAgKHR5cGUgKGZ1bmMgKHBhcmFtIGkzMiBpMzIpKSkKKyAg
ICAodGFibGUgMCBmdW5jcmVmKQorICAgIChmdW5jICR0eXBlLWZpcnN0LXZvaWQtdnMtbnVtCisg
ICAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKG5vcCkgKGkzMi5jb25zdCAxKSAo
aTMyLmNvbnN0IDApKQorICAgICkKKyAgKQorICAidHlwZSBtaXNtYXRjaCIKKykKKyhhc3NlcnRf
aW52YWxpZAorICAobW9kdWxlCisgICAgKHR5cGUgKGZ1bmMgKHBhcmFtIGkzMiBpMzIpKSkKKyAg
ICAodGFibGUgMCBmdW5jcmVmKQorICAgIChmdW5jICR0eXBlLXNlY29uZC12b2lkLXZzLW51bQor
ICAgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlIDApIChpMzIuY29uc3QgMSkgKG5vcCkg
KGkzMi5jb25zdCAwKSkKKyAgICApCisgICkKKyAgInR5cGUgbWlzbWF0Y2giCispCisoYXNzZXJ0
X2ludmFsaWQKKyAgKG1vZHVsZQorICAgICh0eXBlIChmdW5jIChwYXJhbSBpMzIgZjY0KSkpCisg
ICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkdHlwZS1maXJzdC1udW0tdnMtbnVtCisg
ICAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGY2NC5jb25zdCAxKSAoaTMyLmNv
bnN0IDEpIChpMzIuY29uc3QgMCkpCisgICAgKQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQor
KGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodHlwZSAoZnVuYyAocGFyYW0gZjY0IGkz
MikpKQorICAgICh0YWJsZSAwIGZ1bmNyZWYpCisgICAgKGZ1bmMgJHR5cGUtc2Vjb25kLW51bS12
cy1udW0KKyAgICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDEp
IChmNjQuY29uc3QgMSkgKGkzMi5jb25zdCAwKSkKKyAgICApCisgICkKKyAgInR5cGUgbWlzbWF0
Y2giCispCisKKworOzsgVW5ib3VuZCB0eXBlCisKKyhhc3NlcnRfaW52YWxpZAorICAobW9kdWxl
CisgICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkdW5ib3VuZC10eXBlIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAodHlwZSAxKSAoaTMyLmNvbnN0IDApKSkKKyAgKQorICAidW5rbm93biB0
eXBlIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodGFibGUgMCBmdW5jcmVm
KQorICAgIChmdW5jICRsYXJnZS10eXBlIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAxMDEy
MzIxMzAwKSAoaTMyLmNvbnN0IDApKSkKKyAgKQorICAidW5rbm93biB0eXBlIgorKQorCisKKzs7
IFVuYm91bmQgZnVuY3Rpb24gaW4gdGFibGUKKworKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUg
KHRhYmxlIGZ1bmNyZWYgKGVsZW0gMCAwKSkpCisgICJ1bmtub3duIGZ1bmN0aW9uIDAiCispCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0LmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMv
cmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTgzMmM1M2YxNDA0YTM4
OWIwNmFlNTcyMjY3ZTg0YTUzMGVjY2MwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNt
L3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdC5qcwpAQCAt
MCwwICsxLDIzMiBAQAorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjMKK2xldCAkMSA9
IGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGY3XHg4MFx4
ODBceDgwXHgwMFx4MTdceDYwXHgwMFx4MDBceDYwXHgwMFx4MDFceDdmXHg2MFx4MDBceDAxXHg3
ZVx4NjBceDAwXHgwMVx4N2RceDYwXHgwMFx4MDFceDdjXHg2MFx4MDFceDdmXHgwMVx4N2ZceDYw
XHgwMVx4N2VceDAxXHg3ZVx4NjBceDAxXHg3ZFx4MDFceDdkXHg2MFx4MDFceDdjXHgwMVx4N2Nc
eDYwXHgwMlx4N2RceDdmXHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDYwXHgwMlx4
N2NceDdkXHgwMVx4N2RceDYwXHgwMlx4N2VceDdjXHgwMVx4N2NceDYwXHgwMVx4N2ZceDAxXHg3
Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHg2MFx4MDFceDdkXHgwMVx4N2RceDYwXHgwMVx4N2NceDAx
XHg3Y1x4NjBceDA0XHg3ZVx4N2NceDdmXHg3ZVx4MDBceDYwXHgwMVx4N2VceDAwXHg2MFx4MDRc
eDdlXHg3Y1x4N2ZceDdlXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3Zlx4NjBceDAxXHg3Zlx4
MDFceDdlXHg2MFx4MDJceDdlXHg3ZVx4MDFceDdlXHgwM1x4YWFceDgwXHg4MFx4ODBceDAwXHgy
OVx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdceDA4XHgwYVx4MGNceDA5XHgwYlx4MGRceDBl
XHgwZlx4MTBceDAwXHgwMVx4MDJceDAxXHgwMlx4MDNceDA0XHgwMlx4MDFceDAyXHgwM1x4MDRc
eDAxXHgwMlx4MDNceDA0XHgwYVx4MTVceDAxXHgwMVx4MDVceDA2XHgxNlx4MDVceDA1XHgwNFx4
OGRceDgwXHg4MFx4ODBceDAwXHgwM1x4NzBceDAxXHgxNFx4MTRceDcwXHgwMVx4MDFceDAxXHg3
MFx4MDFceDAxXHgwMVx4MDdceDg1XHg4Mlx4ODBceDgwXHgwMFx4MTNceDA4XHg3NFx4NzlceDcw
XHg2NVx4MmRceDY5XHgzM1x4MzJceDAwXHgxM1x4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4Njlc
eDM2XHgzNFx4MDBceDE0XHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4MzNceDMyXHgwMFx4
MTVceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHgzNlx4MzRceDAwXHgxNlx4MGFceDc0XHg3
OVx4NzBceDY1XHgyZFx4NjlceDZlXHg2NFx4NjVceDc4XHgwMFx4MTdceDBlXHg3NFx4NzlceDcw
XHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxOFx4MGVc
eDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjlceDM2XHgzNFx4
MDBceDE5XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2
Nlx4MzNceDMyXHgwMFx4MWFceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDcz
XHg3NFx4MmRceDY2XHgzNlx4MzRceDAwXHgxYlx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNc
eDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxY1x4MGZceDc0XHg3OVx4
NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzNlx4MzRceDAwXHgx
ZFx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2
XHgzM1x4MzJceDAwXHgxZVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZc
eDZlXHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgxZlx4MDhceDY0XHg2OVx4NzNceDcwXHg2MVx4
NzRceDYzXHg2OFx4MDBceDIwXHgxM1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgy
ZFx4NzNceDc0XHg3Mlx4NzVceDYzXHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgyMVx4MDhceDYz
XHg2MVx4NmNceDZjXHgyZFx4NzRceDYxXHg2Mlx4MDBceDI0XHgwM1x4NjZceDYxXHg2M1x4MDBc
eDI1XHgwNFx4NjVceDc2XHg2NVx4NmVceDAwXHgyN1x4MDNceDZmXHg2NFx4NjRceDAwXHgyOFx4
MDlceGFhXHg4MFx4ODBceDgwXHgwMFx4MDNceDAwXHg0MVx4MDBceDBiXHgxNFx4MDBceDAxXHgw
Mlx4MDNceDA0XHgwNVx4MDZceDA3XHgwYVx4MDhceDBiXHgwOVx4MjVceDI2XHgyN1x4MjhceDBj
XHgwZFx4MGVceDBmXHgwMlx4MDFceDQxXHgwMFx4MGJceDAwXHgwMVx4MjJceDAyXHgwMlx4NDFc
eDAwXHgwYlx4MDBceDAxXHgyM1x4MGFceDlmXHg4NVx4ODBceDgwXHgwMFx4MjlceDg1XHg4MFx4
ODBceDgwXHgwMFx4MDBceDQxXHhiMlx4MDJceDBiXHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHg0
Mlx4ZTRceDAyXHgwYlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDNceDAwXHgyMFx4NzNceDQ1
XHgwYlx4OGJceDgwXHg4MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4Yzhc
eGFlXHg0MFx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceDg0XHg4MFx4
ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgw
MFx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceDg0XHg4MFx4ODBceDgw
XHgwMFx4MDBceDIwXHgwMVx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMVx4MGJc
eDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMVx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4
MDBceDIwXHgwMVx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceDg0XHg4
MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIw
XHgwMFx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceGE3XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAwXHgwMFx4NDJceDAwXHg0MVx4MDBceDEzXHgxMlx4
MDBceDQyXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDFceDAwXHg0
Mlx4MDBceDQxXHgwMFx4MTNceDExXHgwMFx4NDFceDAwXHgxM1x4MDBceDAwXHgwYlx4YTdceDgw
XHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDFceDAwXHg0MVx4MDBceDEzXHgwMVx4MDBc
eDQyXHgwMFx4NDFceDAwXHgxM1x4MTRceDAwXHg0Mlx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMFx4MDBceDQxXHgwMFx4NDJceDAwXHg0MVx4MDBceDEzXHgxM1x4MDBceDBiXHg4
OVx4ODBceDgwXHg4MFx4MDBceDAwXHg0Mlx4MDBceDQxXHgwMFx4MTNceDA2XHgwMFx4MGJceDg3
XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAxXHgwMFx4MGJceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDQxXHgwMVx4MTNceDAyXHgwMFx4MGJceDg3XHg4MFx4ODBceDgwXHgwMFx4
MDBceDQxXHgwMlx4MTNceDAzXHgwMFx4MGJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgw
M1x4MTNceDA0XHgwMFx4MGJceDhhXHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHhlNFx4MDBceDQx
XHgwNVx4MTNceDA2XHgwMFx4MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgyMFx4NDFc
eDA0XHgxM1x4MDVceDAwXHgwYlx4OGFceDgwXHg4MFx4ODBceDAwXHgwMFx4NDJceGMwXHgwMFx4
NDFceDA1XHgxM1x4MDZceDAwXHgwYlx4OGNceDgwXHg4MFx4ODBceDAwXHgwMFx4NDNceGMzXHhm
NVx4YThceDNmXHg0MVx4MDZceDEzXHgwN1x4MDBceDBiXHg5MFx4ODBceDgwXHg4MFx4MDBceDAw
XHg0NFx4M2RceDBhXHhkN1x4YTNceDcwXHgzZFx4ZmFceDNmXHg0MVx4MDdceDEzXHgwOFx4MDBc
eDBiXHg4ZVx4ODBceDgwXHg4MFx4MDBceDAwXHg0M1x4NjZceDY2XHgwMFx4NDJceDQxXHgyMFx4
NDFceDA4XHgxM1x4MDlceDAwXHgwYlx4OGNceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDIwXHg0
Mlx4YzBceDAwXHg0MVx4MDlceDEzXHgwYVx4MDBceDBiXHg5NVx4ODBceDgwXHg4MFx4MDBceDAw
XHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NTBceDQwXHg0M1x4MDBceDAwXHgwMFx4NDJc
eDQxXHgwYVx4MTNceDBiXHgwMFx4MGJceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHhjMFx4
MDBceDQ0XHg2Nlx4NjZceDY2XHg2Nlx4NjZceDA2XHg1MFx4NDBceDQxXHgwYlx4MTNceDBjXHgw
MFx4MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMVx4MjBceDAwXHgxM1x4MDZceDAw
XHgwYlx4ODlceDgwXHg4MFx4ODBceDAwXHgwMFx4NDJceDA5XHgyMFx4MDBceDEzXHgwZVx4MDBc
eDBiXHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4YjNceDAyXHgwYlx4ODVceDgwXHg4MFx4
ODBceDAwXHgwMFx4NDFceGI0XHgwMlx4MGJceGFiXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgw
MFx4NDFceDAwXHg0Nlx4MDRceDQwXHg0MVx4MDBceDEzXHgwMVx4MDBceDBiXHgyMFx4MDBceDQx
XHgwMVx4NDZceDA0XHg0MFx4NDFceDAwXHgxM1x4MDFceDAxXHgwYlx4MjBceDAwXHg0MVx4MDJc
eDQ2XHgwNFx4NDBceDQxXHgwMFx4MTNceDAxXHgwMlx4MGJceDQxXHgwMFx4MGJceDhiXHg4MFx4
ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NDJceDAxXHg0MVx4MGRceDEzXHgxNlx4MDBceDBiXHg5
YVx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDUwXHgwNFx4N2VceDIwXHgwMVx4MDVceDIw
XHgwMFx4NDJceDAxXHg3ZFx4MjBceDAwXHgyMFx4MDFceDdlXHg0MVx4MGRceDEzXHgxNlx4MDBc
eDBiXHgwYlx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg0NVx4MDRceDdmXHg0MVx4
MmNceDA1XHgyMFx4MDBceDQxXHgwMVx4NmJceDQxXHgwZlx4MTNceDA1XHgwMFx4MGJceDBiXHg5
Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDQ1XHgwNFx4N2ZceDQxXHhlM1x4MDBceDA1
XHgyMFx4MDBceDQxXHgwMVx4NmJceDQxXHgwZVx4MTNceDA1XHgwMFx4MGJceDBiIik7CisKKy8v
IHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjEzCithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwo
JDEsICJ0eXBlLWkzMiIsIFtdKSwgMzA2KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2Fz
dDoyMTQKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4
N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgw
Mlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdl
XHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5
XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2
ZVx4MDBceDA2XHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAw
XHgwMFx4MDJceDQwXHgxMFx4MDBceDAxXHg0Mlx4ZTRceDAyXHgwMVx4NTFceDQ1XHgwZFx4MDBc
eDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRf
cmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWk2NCIsIFtdKSwgaW50NjQoIjM1NiIpKQorCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIxNQorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2RceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDMz
XHgzMlx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2
XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4
MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4YmNceDQzXHgw
MFx4MjBceDczXHg0NVx4YmNceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9y
dHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAi
dHlwZS1mMzIiLCBbXSksIDM4OTAuKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIx
NgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4
MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2
Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2NceDAy
XHg4NFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhc
eDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDM2XHgzNFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDcz
XHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4
NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4
MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgw
MFx4MDZceDBhXHg5ZVx4ODBceDgwXHg4MFx4MDBceDAxXHg5OFx4ODBceDgwXHg4MFx4MDBceDAw
XHgwMlx4NDBceDEwXHgwMFx4YmRceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceGM4XHhhZVx4NDBc
eGJkXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVu
IiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtZjY0IiwgW10p
LCAzOTQwLikKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMTgKK3J1bigoKSA9PiBj
YWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4
MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAx
XHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2Zc
eDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4ODZceDgxXHg4MFx4
ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBhXHg3NFx4NzlceDcwXHg2
NVx4MmRceDY5XHg2ZVx4NjRceDY1XHg3OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNc
eDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3
NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAx
XHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZc
eDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4
NDBceDEwXHgwMFx4MDFceDQyXHhlNFx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgw
MFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkg
PT4gY2FsbCgkMSwgInR5cGUtaW5kZXgiLCBbXSksIGludDY0KCIxMDAiKSkKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDoyMjAKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5
cGUtZmlyc3QtaTMyIiwgW10pLCAzMik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6
MjIxCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdm
XHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJc
eDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZVx4
MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgw
ZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2OVx4MzZceDM0
XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAw
XHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk4XHg4MFx4ODBceDgwXHgwMFx4
MDFceDkyXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHgwMVx4NDJceGMwXHgw
MFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJy
dW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1maXJzdC1p
NjQiLCBbXSksIGludDY0KCI2NCIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIy
MgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4
MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2
Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2RceDAy
XHg4YVx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGVc
eDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjZceDMzXHgzMlx4
MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4
NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4
MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgw
MFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4MDBceDAx
XHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4YmNceDQzXHhjM1x4ZjVc
eGE4XHgzZlx4YmNceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEp
KSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1m
aXJzdC1mMzIiLCBbXSksIDEuMzIwMDAwMDUyNDUpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6MjIzCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4
MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2
MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAx
XHg3Y1x4MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNc
eDY1XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2Nlx4
MzZceDM0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4ODBceDgw
XHgwMFx4MDFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiZFx4NDRc
eDNkXHgwYVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4YmRceDUxXHg0NVx4MGRceDAwXHgwZlx4
MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAidHlwZS1maXJzdC1mNjQiLCBbXSksIDEuNjQpCisKKy8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6MjI1Cithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0
eXBlLXNlY29uZC1pMzIiLCBbXSksIDMyKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2Fz
dDoyMjYKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4
N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgw
Mlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdl
XHgwMlx4OGJceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDBmXHg3NFx4NzlceDcwXHg2NVx4MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJkXHg2OVx4
MzZceDM0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk4XHg4MFx4ODBceDgw
XHgwMFx4MDFceDkyXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHgwMVx4NDJc
eGMwXHgwMFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEp
KSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1z
ZWNvbmQtaTY0IiwgW10pLCBpbnQ2NCgiNjQiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDoyMjcKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgw
MVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYw
XHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFc
eDdkXHgwMlx4OGJceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4
NjVceDBmXHg3NFx4NzlceDcwXHg2NVx4MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJkXHg2
Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiY1x4
NDNceDAwXHgwMFx4MDBceDQyXHhiY1x4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwg
ZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwo
JDEsICJ0eXBlLXNlY29uZC1mMzIiLCBbXSksIDMyLikKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJl
Y3Qud2FzdDoyMjgKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYw
XHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2Zc
eDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4
MDFceDdjXHgwMlx4OGJceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2
Y1x4NjVceDBmXHg3NFx4NzlceDcwXHg2NVx4MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJk
XHg2Nlx4MzZceDM0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhi
ZFx4NDRceDY2XHg2Nlx4NjZceDY2XHg2Nlx4MDZceDUwXHg0MFx4YmRceDUxXHg0NVx4MGRceDAw
XHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0
X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1zZWNvbmQtZjY0IiwgW10pLCA2NC4xKQorCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIzMAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgw
MFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYx
XHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDA1XHg0
Mlx4MDJceDEwXHgwMFx4MDFceDQyXHgwMlx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAw
XHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbNSwgaW50NjQoIjIiKV0pLCBpbnQ2NCgiMiIpKQorCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIzMQorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgw
MFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYx
XHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDA1XHg0
Mlx4MDVceDEwXHgwMFx4MDFceDQyXHgwNVx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAw
XHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbNSwgaW50NjQoIjUiKV0pLCBpbnQ2NCgiNSIpKQorCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIzMgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgw
MFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYx
XHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDljXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDBjXHg0
Mlx4MDVceDEwXHgwMFx4MDFceDQyXHhmOFx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBi
XHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4o
KCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoIiwgWzEyLCBpbnQ2NCgiNSIpXSksIGludDY0KCIxMjAi
KSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMzMKK3J1bigoKSA9PiBjYWxsKGlu
c3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBc
eDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4
MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgw
Mlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgw
XHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNc
eDcwXHg2MVx4NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3
MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4
MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5
Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQx
XHgxMVx4NDJceDAyXHgxMFx4MDBceDAxXHg0Mlx4MDJceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZc
eDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1
cm4oKCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoIiwgWzE3LCBpbnQ2NCgiMiIpXSksIGludDY0KCIy
IikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjM0Cithc3NlcnRfdHJhcCgoKSA9
PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1
XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBc
eDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4
N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4
NFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0
XHg2OVx4NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4
MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
NFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBc
eDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4
MDZceDBhXHg5M1x4ODBceDgwXHg4MFx4MDBceDAxXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAwXHgw
Mlx4NDBceDQxXHgwMFx4NDJceDAyXHgxMFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygk
MSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0
Y2giLCBbMCwgaW50NjQoIjIiKV0pKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIz
NQorYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4
MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2
MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdm
XHg3ZVx4MDFceDdlXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDA4XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3
Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDcz
XHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4
NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4
ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgw
M1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMVx4OGRceDgw
XHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0MVx4MGZceDQyXHgwMlx4MTBceDAwXHgwZlx4MGJc
eDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAoKCkg
PT4gY2FsbCgkMSwgImRpc3BhdGNoIiwgWzE1LCBpbnQ2NCgiMiIpXSkpCisKKy8vIHJldHVybl9j
YWxsX2luZGlyZWN0Lndhc3Q6MjM2Cithc3NlcnRfdHJhcCgoKSA9PiBjYWxsKGluc3RhbmNlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4
MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2
MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcw
XHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBc
eDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNceDcwXHg2MVx4
NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
OVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgw
M1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4
NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4
MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5M1x4ODBceDgw
XHg4MFx4MDBceDAxXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgxNFx4NDJc
eDAyXHgxMFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMjAsIGludDY0KCIy
IildKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMzcKK2Fzc2VydF90cmFwKCgp
ID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2
MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAx
XHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4MDJc
eDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4
NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAw
XHgwNlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDBc
eDAyXHg0MFx4NDFceDdmXHg0Mlx4MDJceDEwXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDEsICJkaXNw
YXRjaCIsIFstMSwgaW50NjQoIjIiKV0pKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0
OjIzOAorYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2
MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdm
XHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJc
eDdmXHg3ZVx4MDFceDdlXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4
NjRceDc1XHg2Y1x4NjVceDA4XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgw
Nlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3
M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgw
M1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAx
XHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTdceDgwXHg4MFx4ODBceDAwXHgwMVx4OTFc
eDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0MVx4ZTdceDg0XHhjZVx4YzJceDA0XHg0Mlx4
MDJceDEwXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsg
IC8vIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFsxXzIxM180MzJfNDIz
LCBpbnQ2NCgiMiIpXSkpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjQwCitydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4
Zlx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0
XHg2OVx4NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRc
eDc1XHg3Mlx4NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4
ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk5XHg4
MFx4ODBceDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDA1
XHgxMFx4MDBceDAxXHg0Mlx4MDlceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIi
LCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2Fs
bCgkMSwgImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBbNV0pLCBpbnQ2NCgiOSIpKQorCisvLyByZXR1
cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0MQorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4
NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgw
MVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAx
XHg3Zlx4NjBceDAxXHg3Zlx4MDFceDdlXHgwMlx4OGZceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZc
eDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDEzXHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4
NjhceDJkXHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYxXHg2Y1x4MDBceDA2XHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4
MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1
Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4
Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAz
XHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OVx4ODBceDgwXHg4MFx4MDBceDAxXHg5M1x4ODBc
eDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgwNVx4MTBceDAwXHgwMVx4NDJceDA5XHgwMVx4
NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtd
KSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaC1zdHJ1Y3R1cmFs
IiwgWzVdKSwgaW50NjQoIjkiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNDIK
K3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAx
XHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZc
eDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2ZceDAxXHg3ZVx4
MDJceDhmXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgx
M1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgyZFx4NzNceDc0XHg3Mlx4NzVceDYz
XHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4
NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZl
XHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBc
eDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4
OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0
MVx4MGNceDEwXHgwMFx4MDFceDQyXHg4MFx4OTNceDE2XHgwMVx4NTFceDQ1XHgwZFx4MDBceDBm
XHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0
dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaC1zdHJ1Y3R1cmFsIiwgWzEyXSksIGludDY0KCIz
NjJfODgwIikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjQzCitydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4ODFc
eDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2OVx4
NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1XHg3
Mlx4NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk5XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDExXHgxMFx4
MDBceDAxXHg0Mlx4MDlceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBv
cnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwg
ImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBbMTddKSwgaW50NjQoIjkiKSkKKworLy8gcmV0dXJuX2Nh
bGxfaW5kaXJlY3Qud2FzdDoyNDQKK2Fzc2VydF90cmFwKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgw
N1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYw
XHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBc
eDAxXHg3Zlx4NjBceDAxXHg3Zlx4MDFceDdlXHgwMlx4OGZceDgxXHg4MFx4ODBceDAwXHgwNlx4
MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDEzXHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2
M1x4NjhceDJkXHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYxXHg2Y1x4MDBceDA2
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDcz
XHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAz
XHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5MVx4ODBceDgwXHg4MFx4MDBceDAxXHg4Ylx4
ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgwYlx4MTBceDAwXHgwZlx4MGJceDAwXHgw
YiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAoKCkgPT4gY2Fs
bCgkMSwgImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBbMTFdKSkKKworLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDoyNDUKK2Fzc2VydF90cmFwKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBc
eDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4
NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3
Zlx4NjBceDAxXHg3Zlx4MDFceDdlXHgwMlx4OGZceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZk
XHg2Zlx4NjRceDc1XHg2Y1x4NjVceDEzXHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4Njhc
eDJkXHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYxXHg2Y1x4MDBceDA2XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFc
eDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3
Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5MVx4ODBceDgwXHg4MFx4MDBceDAxXHg4Ylx4ODBceDgw
XHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgxMFx4MTBceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4
cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbCgkMSwg
ImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBbMTZdKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDoyNDcKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImNhbGwtdGFiIiwgWzBdKSwg
MzA2KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNDgKK2Fzc2VydF9yZXR1cm4o
KCkgPT4gY2FsbCgkMSwgImNhbGwtdGFiIiwgWzFdKSwgMzA3KTsKKworLy8gcmV0dXJuX2NhbGxf
aW5kaXJlY3Qud2FzdDoyNDkKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImNhbGwtdGFi
IiwgWzJdKSwgMzA4KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNTEKK3J1bigo
KSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4
NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgw
MVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3ZVx4MDJceGZm
XHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NjZc
eDYxXHg2M1x4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OVx4ODBceDgwXHg4
MFx4MDBceDAxXHg5M1x4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwMFx4MTBceDAw
XHgwMVx4NDJceDAxXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0
cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJm
YWMiLCBbaW50NjQoIjAiKV0pLCBpbnQ2NCgiMSIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVj
dC53YXN0OjI1MgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBc
eDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4
NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3
ZVx4MDFceDdlXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1
XHg2Y1x4NjVceDAzXHg2Nlx4NjFceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJc
eDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4
NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1
XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4
MGFceDk5XHg4MFx4ODBceDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0
MFx4NDJceDAxXHgxMFx4MDBceDAxXHg0Mlx4MDFceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBi
XHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4o
KCkgPT4gY2FsbCgkMSwgImZhYyIsIFtpbnQ2NCgiMSIpXSksIGludDY0KCIxIikpCisKKy8vIHJl
dHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjUzCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgw
MFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3
XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBc
eDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4
MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2VceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDY2XHg2MVx4NjNceDAwXHgwNlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
Mlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJc
eDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFceDgwXHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4
ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDVceDEwXHgwMFx4MDFceDQyXHhmOFx4MDBceDAxXHg1
MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10p
KTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImZhYyIsIFtpbnQ2NCgiNSIpXSks
IGludDY0KCIxMjAiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNTQKK3J1bigo
KSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4
NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgw
MVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3ZVx4MDJceGZm
XHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NjZc
eDYxXHg2M1x4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHhhMlx4ODBceDgwXHg4
MFx4MDBceDAxXHg5Y1x4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgxOVx4MTBceDAw
XHgwMVx4NDJceDgwXHg4MFx4ODBceGRlXHg4N1x4OTJceGVjXHhjZlx4ZTFceDAwXHgwMVx4NTFc
eDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJmYWMiLCBbaW50NjQoIjI1IildKSwg
aW50NjQoIjdfMDM0XzUzNV8yNzdfNTczXzk2M183NzYiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDoyNTYKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV2ZW4iLCBbMF0p
LCA0NCk7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjU3Cithc3NlcnRfcmV0dXJu
KCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzFdKSwgOTkpOworCisvLyByZXR1cm5fY2FsbF9pbmRp
cmVjdC53YXN0OjI1OAorYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZXZlbiIsIFsxMDBd
KSwgNDQpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI1OQorYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAiZXZlbiIsIFs3N10pLCA5OSk7CisKKy8vIHJldHVybl9jYWxsX2lu
ZGlyZWN0Lndhc3Q6MjYwCithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzEw
MF8wMDBdKSwgNDQpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2MQorYXNzZXJ0
X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZXZlbiIsIFsxMTFfMTExXSksIDk5KTsKKworLy8gcmV0
dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNjIKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwg
Im9kZCIsIFswXSksIDk5KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNjMKK2Fz
c2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9kZCIsIFsxXSksIDQ0KTsKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDoyNjQKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9k
ZCIsIFsyMDBdKSwgOTkpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2NQorYXNz
ZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzc3XSksIDQ0KTsKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDoyNjYKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9k
ZCIsIFsyMDBfMDAyXSksIDk5KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNjcK
K2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9kZCIsIFszMDBfMDAzXSksIDQ0KTsKKwor
Ly8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNzIKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2Nc
eDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4
NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6Mjg0Cithc3NlcnRfbWFs
Zm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFc
eDc1XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI5
NgorYXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1
XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDozMDgKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2
Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJl
dHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MzIwCithc3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4
NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgz
ZSIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjMzMgorYXNzZXJ0X21hbGZvcm1l
ZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4
NmZceDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDozNDQKK2Fz
c2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRc
eDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6MzUxCithc3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcy
XHg2ZFx4NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5f
Y2FsbF9pbmRpcmVjdC53YXN0OjM2MQorYXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2
Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsK
KworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDozNzEKK2Fzc2VydF9tYWxmb3JtZWQoIlx4
M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3
NFx4NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MzgzCithc3NlcnRf
bWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4
NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0
OjM5OAorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
MVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgw
XHgwMFx4MDFceDAwXHgwYVx4OGRceDgwXHg4MFx4ODBceDAwXHgwMVx4ODdceDgwXHg4MFx4ODBc
eDAwXHgwMFx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbF9pbmRp
cmVjdC53YXN0OjQwNgorLy8gTk9URToKKy8vICAgKG1vZHVsZQorLy8gICAgKHR5cGUgKGZ1bmMp
KQorLy8gICAgKHRhYmxlIDAgZnVuY3JlZikKKy8vICAgIChmdW5jICR0eXBlLXZvaWQtdnMtbnVt
IChpMzIuZXF6IChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDApKSkp
CisvLyAgKQorLy8gVGhpcyB2YWxpZGF0ZXMgc2luY2UgdW5yZWFjaGFibGUgYmluYXJ5IG9wcyBh
cmUgaWdub3JlZCBpbiBXYXNtRnVuY3Rpb25QYXJzZXIuCisvL2Fzc2VydF9pbnZhbGlkKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4
ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg4ZVx4ODBceDgwXHg4MFx4MDBceDAxXHg4
OFx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMFx4MDBceDQ1XHgwYiIpOworCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjQxNAorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBc
eDAwXHgwMVx4N2VceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4
MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg4ZVx4ODBceDgwXHg4
MFx4MDBceDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMFx4MDBceDQ1
XHgwYiIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjQyMworYXNzZXJ0X2ludmFs
aWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBc
eDAwXHgwMlx4NjBceDAxXHg3Zlx4MDBceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4
MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg4
ZFx4ODBceDgwXHg4MFx4MDBceDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEz
XHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDMxCithc3Nl
cnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBc
eDgwXHg4MFx4MDBceDAyXHg2MFx4MDJceDdjXHg3Zlx4MDBceDYwXHgwMFx4MDBceDAzXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgw
MFx4MDBceDBhXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAw
XHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndh
c3Q6NDQwCitsZXQgJDIgPSBpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDBceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAw
XHgwYVx4OGZceDgwXHg4MFx4ODBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFc
eDAxXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6NDQ2CitsZXQgJDMgPSBpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAwXHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBc
eDAwXHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4
NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHg0MFx4NDFceDAxXHg0MVx4MDBceDEzXHgw
MFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDU0Cithc3NlcnRf
aW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4ODBceDgw
XHg4MFx4MDBceDAyXHg2MFx4MDFceDdmXHgwMFx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4
MGFceDhlXHg4MFx4ODBceDgwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgw
MVx4MDFceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6
NDYyCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHg4OFx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDFceDdmXHgwMFx4NjBceDAwXHgwMFx4MDNc
eDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4
NzBceDAwXHgwMFx4MGFceDhmXHg4MFx4ODBceDgwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgw
MFx4MDBceDQxXHgwMFx4NDJceDAxXHgxM1x4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0OjQ3MQorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAyXHg3Zlx4N2Zc
eDAwXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4
ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OTBceDgwXHg4MFx4ODBceDAwXHgw
MVx4OGFceDgwXHg4MFx4ODBceDAwXHgwMFx4MDFceDQxXHgwMVx4NDFceDAwXHgxM1x4MDBceDAw
XHgwYiIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjQ4MQorYXNzZXJ0X2ludmFs
aWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBc
eDAwXHgwMlx4NjBceDAyXHg3Zlx4N2ZceDAwXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgw
YVx4OTBceDgwXHg4MFx4ODBceDAwXHgwMVx4OGFceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAx
XHgwMVx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVj
dC53YXN0OjQ5MQorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAyXHg3Zlx4N2NceDAwXHg2MFx4
MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4ODBceDgwXHg4
MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgw
XHg4MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceGYwXHgzZlx4NDFc
eDAxXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6NTAxCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDJceDdjXHg3Zlx4MDBceDYwXHgw
MFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgw
XHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5Mlx4ODBc
eDgwXHg4MFx4MDBceDAwXHg0MVx4MDFceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHhmMFx4
M2ZceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDo1MTUKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgw
XHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBc
eDBhXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4
MDBceDEzXHgwMVx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NTIy
Cithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4
NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OTFc
eDgwXHg4MFx4ODBceDAwXHgwMVx4OGJceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4
OTRceDk4XHhkYlx4ZTJceDAzXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDo1MzMKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDRceDg1XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMVx4MDJceDAyXHgwOVx4ODhceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDQxXHgwMFx4MGJceDAyXHgwMFx4MDAiKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC9yZXR1cm4tY2FsbC5qcyBiL0pTVGVzdHMvd2Fz
bS9yZXR1cm4tY2FsbC9yZXR1cm4tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODBmNDMyZDNlNTk4M2I0
OTk2N2U0YjE2ODdmZmMxODJlYzIzNjRkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNt
L3JldHVybi1jYWxsL3JldHVybi1jYWxsLmpzCkBAIC0wLDAgKzEsNzEwIEBACitpbXBvcnQgKiBh
cyBhc3NlcnQgZnJvbSAiLi4vYXNzZXJ0LmpzIjsKK2ltcG9ydCBCdWlsZGVyIGZyb20gIi4uL0J1
aWxkZXIuanMiOworCitjb25zdCBkZWZhdWx0RXhwb3J0U2l6ZSA9IDU7Citjb25zdCBzaWduYXR1
cmVNYXhBcml0eSA9IDUwOworY29uc3QgdmVyYm9zZSA9IDA7CisKK2NsYXNzIFR5cGVHZW5lcmF0
b3IgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICBjb25zdCBmbG9hdDY0Rmxvb3IgPSAodmFsdWUp
ID0+IHsKKyAgICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlKTsKKyAgICB9OworICAgIGNvbnN0
IGZsb2F0NjRGbG9hdDMyID0gKHZhbHVlKSA9PiB7CisgICAgICByZXR1cm4gTWF0aC5mcm91bmQo
dmFsdWUpOworICAgIH07CisgICAgY29uc3QgZmxvYXQ2NCA9ICh2YWx1ZSkgPT4geworICAgICAg
cmV0dXJuIHZhbHVlOworICAgIH07CisgICAgdGhpcy5nZW5lcmF0b3JNYXAgPSBuZXcgTWFwKCk7
CisgICAgdGhpcy5nZW5lcmF0b3JNYXAuc2V0KCJpMzIiLCB7CisgICAgICB0b0pTOiBmbG9hdDY0
Rmxvb3IsCisgICAgICB0b0J1aWxkZXJUeXBlOiAodmFsdWUsIGJ1aWxkZXIpID0+IHsKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIuSTMyQ29uc3QodmFsdWUpOworICAgICAgfSwKKyAgICAgIHRvQnVp
bGRlckxvYWQ6IChpbW0xLCBpbW0yLCBidWlsZGVyKSA9PiB7CisgICAgICAgIHJldHVybiBidWls
ZGVyLkkzMkxvYWQoaW1tMSwgaW1tMik7CisgICAgICB9LAorICAgICAgdG9CdWlsZGVyU3RvcmU6
IChpbW0xLCBpbW0yLCBidWlsZGVyKSA9PiB7CisgICAgICAgIHJldHVybiBidWlsZGVyLkkzMlN0
b3JlKGltbTEsIGltbTIpOworICAgICAgfSwKKyAgICB9KTsKKyAgICB0aGlzLmdlbmVyYXRvck1h
cC5zZXQoImk2NCIsIHsKKyAgICAgIHRvSlM6ICh2YWx1ZSkgPT4geworICAgICAgICByZXR1cm4g
TWF0aC5mbG9vcih2YWx1ZSk7CisgICAgICB9LAorICAgICAgdG9CdWlsZGVyVHlwZTogKHZhbHVl
LCBidWlsZGVyKSA9PiB7CisgICAgICAgIHJldHVybiBidWlsZGVyLkk2NENvbnN0KHZhbHVlKTsK
KyAgICAgIH0sCisgICAgICB0b0J1aWxkZXJMb2FkOiAoaW1tMSwgaW1tMiwgYnVpbGRlcikgPT4g
eworICAgICAgICByZXR1cm4gYnVpbGRlci5JNjRMb2FkKGltbTEsIGltbTIpOworICAgICAgfSwK
KyAgICAgIHRvQnVpbGRlclN0b3JlOiAoaW1tMSwgaW1tMiwgYnVpbGRlcikgPT4geworICAgICAg
ICByZXR1cm4gYnVpbGRlci5JNjRTdG9yZShpbW0xLCBpbW0yKTsKKyAgICAgIH0sCisgICAgfSk7
CisgICAgdGhpcy5nZW5lcmF0b3JNYXAuc2V0KCJmMzIiLCB7CisgICAgICB0b0pTOiBmbG9hdDY0
RmxvYXQzMiwKKyAgICAgIHRvQnVpbGRlclR5cGU6ICh2YWx1ZSwgYnVpbGRlcikgPT4geworICAg
ICAgICByZXR1cm4gYnVpbGRlci5GMzJDb25zdCh2YWx1ZSk7CisgICAgICB9LAorICAgICAgdG9C
dWlsZGVyTG9hZDogKGltbTEsIGltbTIsIGJ1aWxkZXIpID0+IHsKKyAgICAgICAgcmV0dXJuIGJ1
aWxkZXIuRjMyTG9hZChpbW0xLCBpbW0yKTsKKyAgICAgIH0sCisgICAgICB0b0J1aWxkZXJTdG9y
ZTogKGltbTEsIGltbTIsIGJ1aWxkZXIpID0+IHsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuRjMy
U3RvcmUoaW1tMSwgaW1tMik7CisgICAgICB9LAorICAgIH0pOworICAgIHRoaXMuZ2VuZXJhdG9y
TWFwLnNldCgiZjY0IiwgeworICAgICAgdG9KUzogZmxvYXQ2NCwKKyAgICAgIHRvQnVpbGRlclR5
cGU6ICh2YWx1ZSwgYnVpbGRlcikgPT4geworICAgICAgICByZXR1cm4gYnVpbGRlci5GNjRDb25z
dCh2YWx1ZSk7CisgICAgICB9LAorICAgICAgdG9CdWlsZGVyTG9hZDogKGltbTEsIGltbTIsIGJ1
aWxkZXIpID0+IHsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuRjY0TG9hZChpbW0xLCBpbW0yKTsK
KyAgICAgIH0sCisgICAgICB0b0J1aWxkZXJTdG9yZTogKGltbTEsIGltbTIsIGJ1aWxkZXIpID0+
IHsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuRjY0U3RvcmUoaW1tMSwgaW1tMik7CisgICAgICB9
LAorICAgIH0pOworICAgIHRoaXMudHlwZXMgPSBBcnJheS5mcm9tKHRoaXMuZ2VuZXJhdG9yTWFw
LmtleXMoKSk7CisgIH0KKyAgZ2V0KGtleSkgeworICAgIHJldHVybiB0aGlzLmdlbmVyYXRvck1h
cC5nZXQoa2V5KTsKKyAgfQorICBnZXRSYW5kb21UeXBlKCkgeworICAgIGNvbnN0IGxlbmd0aCA9
IHRoaXMuZ2VuZXJhdG9yTWFwLnNpemU7CisgICAgY29uc3QgaW5kZXggPSBNYXRoLmZsb29yKE1h
dGgucmFuZG9tKCkgKiBsZW5ndGgpOworICAgIHJldHVybiB0aGlzLnR5cGVzW2luZGV4XTsKKyAg
fQorICBjcmVhdGVTaWduYXR1cmUocGFyYW1zTGVuLCByZXR1cm5MZW4sIHR5cGUpIHsKKyAgICBw
YXJhbXNMZW4gPSBwYXJhbXNMZW4gPT0gdW5kZWZpbmVkCisgICAgICA/IE1hdGguZmxvb3IoTWF0
aC5yYW5kb20oKSAqIHNpZ25hdHVyZU1heEFyaXR5KQorICAgICAgOiBwYXJhbXNMZW47CisgICAg
cmV0dXJuTGVuID0gcmV0dXJuTGVuID09IHVuZGVmaW5lZAorICAgICAgPyBNYXRoLmZsb29yKE1h
dGgucmFuZG9tKCkgKiBzaWduYXR1cmVNYXhBcml0eSkKKyAgICAgIDogcmV0dXJuTGVuOworICAg
IHJldHVybiB7CisgICAgICBwYXJhbXM6IEFycmF5LmZyb20oCisgICAgICAgIHsgbGVuZ3RoOiBw
YXJhbXNMZW4gfSwKKyAgICAgICAgKCkgPT4gdHlwZSA/IHR5cGUgOiB0eXBlR2VuZXJhdG9yLmdl
dFJhbmRvbVR5cGUoKSwKKyAgICAgICksCisgICAgICByZXQ6IEFycmF5LmZyb20oCisgICAgICAg
IHsgbGVuZ3RoOiByZXR1cm5MZW4gfSwKKyAgICAgICAgKCkgPT4gdHlwZSA/IHR5cGUgOiB0eXBl
R2VuZXJhdG9yLmdldFJhbmRvbVR5cGUoKSwKKyAgICAgICksCisgICAgfTsKKyAgfQorICBqc0Fy
Z0Zyb21XYXNtVHlwZSh2YWx1ZSwgdHlwZSkgeworICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5nZW5l
cmF0b3JNYXAuZ2V0KHR5cGUpOworICAgIGlmIChlbnRyeSA9PSB1bmRlZmluZWQpIHsKKyAgICAg
IHRocm93IG5ldyBFcnJvcihgZW50cnkgbm90IGZvdW5kOiAke3R5cGV9YCk7CisgICAgfQorICAg
IHJldHVybiBlbnRyeS50b0pTKHZhbHVlKTsKKyAgfQorICBidWlsZGVyTG9hZEZyb21XYXNtVHlw
ZShpbW0xLCBpbW0yLCB0eXBlLCBidWlsZGVyKSB7CisgICAgY29uc3QgZW50cnkgPSB0aGlzLmdl
bmVyYXRvck1hcC5nZXQodHlwZSk7CisgICAgaWYgKGVudHJ5ID09IHVuZGVmaW5lZCkgeworICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBlbnRyeSBub3QgZm91bmQ6ICR7dHlwZX1gKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGVudHJ5LnRvQnVpbGRlckxvYWQoaW1tMSwgaW1tMiwgYnVpbGRlcik7CisgIH0K
KyAganNBcmdGcm9tV2FzbVNpZ25hdHVyZSh2YWx1ZSwgdHlwZSkgeworICAgIHN3aXRjaCAodHlw
ZSkgeworICAgICAgY2FzZSAiaTMyIjoKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodmFsdWUp
OworICAgICAgY2FzZSAiaTY0IjoKKyAgICAgICAgcmV0dXJuIEJpZ0ludChNYXRoLmZsb29yKHZh
bHVlKSk7CisgICAgICBjYXNlICJmMzIiOgorICAgICAgICByZXR1cm4gTWF0aC5mcm91bmQodmFs
dWUpOworICAgICAgY2FzZSAiZjY0IjoKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAg
fQorICBqc0FyZ3NGcm9tV2FzbVBhcmFtcyhwYXJhbXMpIHsKKyAgICBjb25zdCB2YWx1ZXMgPSBB
cnJheS5mcm9tKHBhcmFtcywgKCkgPT4geworICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiAw
eDIwOworICAgIH0pOworICAgIHJldHVybiBBcnJheS5mcm9tKHZhbHVlcywgKHZhbCwgaW5kZXgp
ID0+IHsKKyAgICAgIHJldHVybiB0aGlzLmpzQXJnRnJvbVdhc21TaWduYXR1cmUodmFsLCBwYXJh
bXNbaW5kZXhdKTsKKyAgICB9KTsKKyAgfQorICBidWlsZGVyVHlwZUZyb21XYXNtVHlwZSh2YWx1
ZSwgdHlwZSwgYnVpbGRlcikgeworICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5nZW5lcmF0b3JNYXAu
Z2V0KHR5cGUpOworICAgIGlmIChlbnRyeSA9PSB1bmRlZmluZWQpIHsKKyAgICAgIHRocm93IG5l
dyBFcnJvcihgZW50cnkgbm90IGZvdW5kOiAke3R5cGV9YCk7CisgICAgfQorICAgIHJldHVybiBl
bnRyeS50b0J1aWxkZXJUeXBlKHZhbHVlLCBidWlsZGVyKTsKKyAgfQorfQorCitjb25zdCB0eXBl
R2VuZXJhdG9yID0gbmV3IFR5cGVHZW5lcmF0b3IoKTsKKworLy8gQnVpbGRlciBoZWxwZXJzCisK
K2NvbnN0IGNyZWF0ZUJ1aWxkZXIgPSAoYnVpbGRlckluZm8pID0+IHsKKyAgY29uc3QgZnVuYyA9
IGJ1aWxkZXJJbmZvWyJmdW5jIl07CisKKyAgY29uc3QgaW1wb3J0cyA9IGJ1aWxkZXJJbmZvWyJp
bXBvcnRzIl07CisgIGNvbnN0IHR5cGVzID0gYnVpbGRlckluZm9bInR5cGVzIl07CisgIGNvbnN0
IGV4cG9ydHMgPSBidWlsZGVySW5mb1siZXhwb3J0cyJdOworICBjb25zdCB1c2VSZXR1cm5DYWxs
ID0gYnVpbGRlckluZm9bInVzZVJldHVybkNhbGwiXTsKKworICBsZXQgYnVpbGRlciA9IG5ldyBC
dWlsZGVyKCk7CisgIGJ1aWxkZXIgPSBjcmVhdGVUeXBlcyhidWlsZGVyLCB0eXBlcyk7CisgIGJ1
aWxkZXIgPSBjcmVhdGVJbXBvcnRzKGJ1aWxkZXIsIGltcG9ydHMpLkZ1bmN0aW9uKCkuRW5kKCk7
CisgIGlmIChidWlsZGVySW5mb1sidGFibGUiXSkKKyAgICBidWlsZGVyID0gYnVpbGRlci5UYWJs
ZSgpLlRhYmxlKGJ1aWxkZXJJbmZvWyJ0YWJsZSJdKS5FbmQoKTsKKyAgYnVpbGRlciA9IGNyZWF0
ZUV4cG9ydHMoYnVpbGRlciwgZXhwb3J0cyk7CisgIGlmIChidWlsZGVySW5mb1siZWxlbWVudCJd
KQorICAgIGJ1aWxkZXIgPSBidWlsZGVyLkVsZW1lbnQoKS5FbGVtZW50KGJ1aWxkZXJJbmZvWyJl
bGVtZW50Il0pLkVuZCgpOworICByZXR1cm4gY3JlYXRlQ29kZShidWlsZGVyLCBmdW5jLCB1c2VS
ZXR1cm5DYWxsKTsKK307CisKK2NvbnN0IGNyZWF0ZUltcG9ydHMgPSAoYnVpbGRlciwgaW1wb3J0
cykgPT4geworICBpZiAoaW1wb3J0cyA9PSB1bmRlZmluZWQgfHwgaW1wb3J0c1siaW1wIl0gPT0g
dW5kZWZpbmVkKSB7CisgICAgcmV0dXJuIGJ1aWxkZXI7CisgIH0KKyAgYnVpbGRlciA9IGJ1aWxk
ZXIuSW1wb3J0KCk7CisgIGZvciAoY29uc3QgaW1wb3J0VHlwZSBvZiBPYmplY3Qua2V5cyhpbXBv
cnRzWyJpbXAiXSkpIHsKKyAgICBzd2l0Y2ggKGltcG9ydFR5cGUpIHsKKyAgICAgIGNhc2UgIm1l
bW9yeSI6CisgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLk1lbW9yeSgiaW1wIiwgIm1lbW9yeSIs
IGltcG9ydHNbImltcCJdW2ltcG9ydFR5cGVdKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
ICJ0YWJsZSI6CisgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLlRhYmxlKCJpbXAiLCAidGFibGUi
LCBpbXBvcnRzWyJpbXAiXVtpbXBvcnRUeXBlXSk7CisgICAgICAgIGJyZWFrOworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuRnVuY3Rpb24oCisgICAgICAgICAgImlt
cCIsCisgICAgICAgICAgaW1wb3J0VHlwZSwKKyAgICAgICAgICBpbXBvcnRzWyJpbXAiXVtpbXBv
cnRUeXBlXSwKKyAgICAgICAgKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGJ1aWxkZXIuRW5kKCk7
Cit9OworCitjb25zdCBjcmVhdGVFeHBvcnRzID0gKGJ1aWxkZXIsIGZ1bmN0aW9ucykgPT4gewor
ICBsZXQgbmV3QnVpbGRlciA9IGJ1aWxkZXIuRXhwb3J0KCk7CisgIGlmIChmdW5jdGlvbnMgPT0g
dW5kZWZpbmVkKSB7CisgICAgcmV0dXJuIG5ld0J1aWxkZXIuRW5kKCk7CisgIH0KKyAgZm9yIChj
b25zdCBmIG9mIGZ1bmN0aW9ucykgeworICAgIG5ld0J1aWxkZXIgPSBuZXdCdWlsZGVyLkZ1bmN0
aW9uKGZbIm5hbWUiXSk7CisgIH0KKyAgcmV0dXJuIG5ld0J1aWxkZXIuRW5kKCk7Cit9OworCitj
b25zdCBjcmVhdGVDb2RlID0gKGJ1aWxkZXIsIGZ1bmN0aW9ucywgdXNlUmV0dXJuQ2FsbCkgPT4g
eworICBsZXQgbmV3QnVpbGRlciA9IGJ1aWxkZXIuQ29kZSgpOworICBmb3IgKGNvbnN0IGYgb2Yg
ZnVuY3Rpb25zKSB7CisgICAgbmV3QnVpbGRlciA9IGZbImJvZHkiXShuZXdCdWlsZGVyLCB1c2VS
ZXR1cm5DYWxsKTsKKyAgfQorICByZXR1cm4gbmV3QnVpbGRlci5FbmQoKTsKK307CisKK2NvbnN0
IGNyZWF0ZVR5cGVzID0gKGJ1aWxkZXIsIHNpZ25hdHVyZXMpID0+IHsKKyAgYnVpbGRlciA9IGJ1
aWxkZXIuVHlwZSgpOworICBpZiAoc2lnbmF0dXJlcyA9PSB1bmRlZmluZWQpIHsKKyAgICByZXR1
cm4gYnVpbGRlci5FbmQoKTsKKyAgfQorICBmb3IgKGNvbnN0IHMgb2Ygc2lnbmF0dXJlcykgewor
ICAgIGJ1aWxkZXIgPSBidWlsZGVyLkZ1bmMoc1sicGFyYW1zIl0sIHNbInJldCJdKTsKKyAgfQor
ICByZXR1cm4gYnVpbGRlci5FbmQoKTsKK307CisKKy8vIENvZGUgaGVscGVycworCitjb25zdCBj
cmVhdGVDYWxsZXIgPSAobmFtZSwgY2FsbGVlLCBjYWxsZXJTaWduYXR1cmUsIGlzSW5kaXJlY3Qp
ID0+IHsKKyAgcmV0dXJuIHsKKyAgICBuYW1lOiBuYW1lLAorICAgIHNpZ25hdHVyZTogY2FsbGVy
U2lnbmF0dXJlLAorICAgIGJvZHk6IChidWlsZGVyLCB1c2VSZXR1cm5DYWxsKSA9PiB7CisgICAg
ICBidWlsZGVyID0gcG9wdWxhdGVTdGFjaygKKyAgICAgICAgYnVpbGRlci5GdW5jdGlvbihuYW1l
LCBjYWxsZXJTaWduYXR1cmUpLAorICAgICAgICBjYWxsZXJTaWduYXR1cmUucGFyYW1zLAorICAg
ICAgICBjYWxsZWUuc2lnbmF0dXJlLnBhcmFtcywKKyAgICAgICAgKGJ1aWxkZXIsIHZhbHVlLCB0
eXBlKSA9PiB7CisgICAgICAgICAgY29uc3QganNBcmcgPSB0eXBlR2VuZXJhdG9yLmpzQXJnRnJv
bVdhc21UeXBlKHZhbHVlLCB0eXBlKTsKKyAgICAgICAgICByZXR1cm4gdHlwZUdlbmVyYXRvci5i
dWlsZGVyVHlwZUZyb21XYXNtVHlwZShqc0FyZywgdHlwZSwgYnVpbGRlcik7CisgICAgICAgIH0s
CisgICAgICApOworICAgICAgcmV0dXJuIGlzSW5kaXJlY3QgPworICAgICAgICB0cnlSZXR1cm5D
YWxsSW5kaXJlY3QoYnVpbGRlciwgdXNlUmV0dXJuQ2FsbCwgY2FsbGVlLmluZGV4LCAvKnRhYmxl
SW5kZXgqLzApLkVuZCgpIDoKKyAgICAgICAgdHJ5UmV0dXJuQ2FsbChidWlsZGVyLCB1c2VSZXR1
cm5DYWxsLCBjYWxsZWUuaW5kZXgpLkVuZCgpCisgICAgfSwKKyAgfTsKK307CisKK2NvbnN0IGRl
ZmF1bHRUYWlsRnVuY3RvciA9IChidWlsZGVyLCB2YWx1ZSwgdHlwZSkgPT4geworICBjb25zdCBq
c0FyZyA9IHR5cGVHZW5lcmF0b3IuanNBcmdGcm9tV2FzbVR5cGUodmFsdWUsIHR5cGUpOworICBy
ZXR1cm4gdHlwZUdlbmVyYXRvci5idWlsZGVyVHlwZUZyb21XYXNtVHlwZShqc0FyZywgdHlwZSwg
YnVpbGRlcik7Cit9OworCitjb25zdCBjcmVhdGVUYWlsRnVuY3Rpb24gPSAobmFtZSwgc2lnbmF0
dXJlLCBmdW5jdG9yKSA9PiB7CisgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJ0YWlsXyIgKyBuYW1l
OworICByZXR1cm4geworICAgIG5hbWU6IGZ1bmN0aW9uTmFtZSwKKyAgICBzaWduYXR1cmU6IHNp
Z25hdHVyZSwKKyAgICBib2R5OiAoYnVpbGRlcikgPT4geworICAgICAgcmV0dXJuIHBvcHVsYXRl
U3RhY2soCisgICAgICAgIGJ1aWxkZXIuRnVuY3Rpb24oZnVuY3Rpb25OYW1lLCBzaWduYXR1cmUp
LAorICAgICAgICBzaWduYXR1cmUucGFyYW1zLAorICAgICAgICBzaWduYXR1cmUucmV0LAorICAg
ICAgICBmdW5jdG9yID8gZnVuY3RvciA6IGRlZmF1bHRUYWlsRnVuY3RvciwKKyAgICAgICkuRW5k
KCk7CisgICAgfSwKKyAgfTsKK307CisKK2NvbnN0IHBvcHVsYXRlU3RhY2sgPSAoIGJ1aWxkZXIs
IGNhbGxlclBhcmFtc1NpZ25hdHVyZSwgY2FsbGVlUGFyYW1zU2lnbmF0dXJlLCBmdW5jdG9yKSA9
PiB7CisgIGxldCBpID0gMDsKKyAgY29uc3QgbWFwID0gbmV3IE1hcCgpOworCisgIGZvciAoIDsg
aSA8IE1hdGgubWluKGNhbGxlclBhcmFtc1NpZ25hdHVyZS5sZW5ndGgsIGNhbGxlZVBhcmFtc1Np
Z25hdHVyZS5sZW5ndGgpOyArK2kpIHsKKyAgICAvLyBnZXQgcmVxdWVzdGVkIHR5cGUgZnJvbSBj
YWxsZXIncyBzaWduYXR1cmUKKyAgICBsZXQgc2F2ZWRUeXBlSW5kaWNlcyA9IG1hcC5nZXQoY2Fs
bGVlUGFyYW1zU2lnbmF0dXJlW2ldKTsKKyAgICBpZiAoc2F2ZWRUeXBlSW5kaWNlcyA9PSB1bmRl
ZmluZWQpIHsKKyAgICAgIGNvbnN0IG5vdEZvdW5kID0gLTE7CisgICAgICBjb25zdCBuZXdUeXBl
ID0gY2FsbGVlUGFyYW1zU2lnbmF0dXJlW2ldOworICAgICAgY29uc3QgaW5kaWNlcyA9IGNhbGxl
clBhcmFtc1NpZ25hdHVyZS5tYXAoKHZhbCwgaW5kZXgpID0+CisgICAgICAgIHZhbCA9PSBuZXdU
eXBlID8gaW5kZXggOiBub3RGb3VuZAorICAgICAgKS5maWx0ZXIoKHZhbCkgPT4gdmFsICE9IG5v
dEZvdW5kKTsKKyAgICAgIHNhdmVkVHlwZUluZGljZXMgPSBtYXAuc2V0KG5ld1R5cGUsIHsgaW5k
aWNlczogaW5kaWNlcywgY3VycmVudDogMCB9KS5nZXQoCisgICAgICAgIG5ld1R5cGUsCisgICAg
ICApOworICAgIH0KKyAgICBpZiAoIXNhdmVkVHlwZUluZGljZXMuaW5kaWNlcy5sZW5ndGgpIHsK
KyAgICAgIGJ1aWxkZXIgPSBmdW5jdG9yKGJ1aWxkZXIsIGksIGNhbGxlZVBhcmFtc1NpZ25hdHVy
ZVtpXSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLkdldExvY2FsKAor
ICAgICAgICBzYXZlZFR5cGVJbmRpY2VzLmluZGljZXNbc2F2ZWRUeXBlSW5kaWNlcy5jdXJyZW50
XSwKKyAgICAgICk7CisgICAgICBzYXZlZFR5cGVJbmRpY2VzLmN1cnJlbnQgPSAoc2F2ZWRUeXBl
SW5kaWNlcy5jdXJyZW50ICsgMSkgJQorICAgICAgICBzYXZlZFR5cGVJbmRpY2VzLmluZGljZXMu
bGVuZ3RoOworICAgIH0KKyAgfQorCisgIGZvciAoOyBpIDwgY2FsbGVlUGFyYW1zU2lnbmF0dXJl
Lmxlbmd0aDsgKytpKQorICAgIGJ1aWxkZXIgPSBmdW5jdG9yKGJ1aWxkZXIsIGksIGNhbGxlZVBh
cmFtc1NpZ25hdHVyZVtpXSk7CisgIHJldHVybiBidWlsZGVyOworfTsKKworY29uc3QgdHJ5UmV0
dXJuQ2FsbCA9IChidWlsZGVyLCB1c2VSZXR1cm5DYWxsLCBpbmRleCkgPT4geworICByZXR1cm4g
dXNlUmV0dXJuQ2FsbCA/IGJ1aWxkZXIuUmV0dXJuQ2FsbChpbmRleCkgOiBidWlsZGVyLkNhbGwo
aW5kZXgpOworfTsKKworY29uc3QgdHJ5UmV0dXJuQ2FsbEluZGlyZWN0ID0gKGJ1aWxkZXIsIHVz
ZVJldHVybkNhbGwsIGluZGV4LCB0YWJsZUluZGV4KSA9PiB7CisgIGNvbnN0IG5ld0J1aWxkZXIg
PSBidWlsZGVyLkkzMkNvbnN0KGluZGV4KTsKKyAgcmV0dXJuIHVzZVJldHVybkNhbGwKKyAgICA/
IG5ld0J1aWxkZXIuUmV0dXJuQ2FsbEluZGlyZWN0KGluZGV4LCB0YWJsZUluZGV4KQorICAgIDog
bmV3QnVpbGRlci5DYWxsSW5kaXJlY3QoaW5kZXgsIHRhYmxlSW5kZXgpOworfTsKKworY29uc3Qg
Y29tbWl0RnVuY3Rpb24gPSAoZnVuYywgZGVzdCkgPT4geworICBmdW5jWyJpbmRleCJdID0gZGVz
dC5sZW5ndGg7CisgIGRlc3QucHVzaChmdW5jKTsKKyAgcmV0dXJuIGZ1bmM7Cit9OworCitjb25z
dCByZWdpc3RlckNhbGxTaXRlID0gKGNhbGxlciwgY2FsbGVlcywgZGVzdCkgPT4geworICBjYWxs
ZXJbImNhbGxTaXRlSW5kZXgiXSA9IGRlc3QubGVuZ3RoOworICBkZXN0LnB1c2goeworICAgIGNh
bGxlcjogY2FsbGVyLAorICAgIGNhbGxlZXM6IEFycmF5LmlzQXJyYXkoY2FsbGVlcykgPyBjYWxs
ZWVzIDogW2NhbGxlZXNdLAorICB9KTsKKyAgcmV0dXJuIGNhbGxlcjsKK307CisKKy8vIERlYnVn
IGhlbHBlcnMKKworY29uc3QgZHVtcEZ1bmN0aW9uSGVhZGVyID0gKGZ1bmMsIGNhbGxEZXB0aCkg
PT4geworICBsZXQgaW5kZW50ID0gIiI7CisgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsbERlcHRo
OyArK2kpCisgICAgaW5kZW50ICs9ICJcdCI7CisgIHByaW50KGAke2luZGVudH0ke2Z1bmMubmFt
ZX1cblwKKyAgICAke2luZGVudH0oJHtmdW5jLnNpZ25hdHVyZS5wYXJhbXN9KS0+KCR7ZnVuYy5z
aWduYXR1cmUucmV0fSlcblwKKyAgICAke2luZGVudH1wYXJhbXMgbGVuZ3RoOiR7ZnVuYy5zaWdu
YXR1cmUucGFyYW1zLmxlbmd0aH0sIHJldCBsZW5ndGg6JHtmdW5jLnNpZ25hdHVyZS5yZXQubGVu
Z3RofWApOworfTsKKworY29uc3QgZHVtcEJhY2t0cmFjZSA9IChjYWxsU2l0ZSwgY2FsbFNpdGVz
LCBjYWxsRGVwdGgpID0+IHsKKyAgZHVtcEZ1bmN0aW9uSGVhZGVyKGNhbGxTaXRlWyJjYWxsZXIi
XSwgY2FsbERlcHRoKTsKKyAgY29uc3QgY2FsbGVlcyA9IGNhbGxTaXRlWyJjYWxsZWVzIl07Cisg
IGlmIChjYWxsZWVzKSB7CisgICAgZm9yIChjb25zdCBjYWxsZWUgb2YgY2FsbGVlcykgeworICAg
ICAgY29uc3QgY2FsbFNpdGVJbmRleCA9IGNhbGxlZS5jYWxsU2l0ZUluZGV4OworICAgICAgaWYg
KGNhbGxTaXRlSW5kZXgpCisgICAgICAgIGR1bXBCYWNrdHJhY2UoY2FsbFNpdGVzW2NhbGxTaXRl
SW5kZXhdLCBjYWxsU2l0ZXMsIGNhbGxEZXB0aCArIDEpOworICAgICAgZWxzZQorICAgICAgICBk
dW1wRnVuY3Rpb25IZWFkZXIoY2FsbGVlLCBjYWxsRGVwdGggKyAxKTsKKyAgICB9CisgIH0KK307
CisKKy8vIFRlc3QgaGVscGVycworCitjb25zdCBhZGRDYWxscyA9IChkZXN0LCBjYWxsU2l0ZXMs
IGV4cG9ydFNpemUsIGlzSW5kaXJlY3QpID0+IHsKKyAgaWYgKGV4cG9ydFNpemUgPT0gdW5kZWZp
bmVkKSB7CisgICAgZXhwb3J0U2l6ZSA9IGRlZmF1bHRFeHBvcnRTaXplOworICB9CisgIGZvciAo
bGV0IGkgPSAwOyBpIDwgZXhwb3J0U2l6ZTsgaSsrKSB7CisgICAgY29uc3QgbmV3VGFpbEZ1bmN0
aW9uID0gY3JlYXRlVGFpbEZ1bmN0aW9uKAorICAgICAgYCR7ZGVzdC5sZW5ndGh9YCwKKyAgICAg
IHR5cGVHZW5lcmF0b3IuY3JlYXRlU2lnbmF0dXJlKCksCisgICAgKTsKKyAgICBjb21taXRGdW5j
dGlvbihuZXdUYWlsRnVuY3Rpb24sIGRlc3QpOworICAgIGFkZERlcHRoKG5ld1RhaWxGdW5jdGlv
biwgLypjYWxsRGVwdGgqLyAzLCBkZXN0LCBjYWxsU2l0ZXMsIGlzSW5kaXJlY3QpOworICB9Cit9
OworCitjb25zdCBhZGREZXB0aCA9IChmdW5jLCBjYWxsRGVwdGgsIGRlc3QsIGNhbGxTaXRlcywg
aXNJbmRpcmVjdCkgPT4geworICBsZXQgcHJldmlvdXNDYWxsZWUgPSBmdW5jOworICBmb3IgKGxl
dCBkZXB0aCA9IDA7IGRlcHRoIDwgY2FsbERlcHRoOyBkZXB0aCsrKSB7CisgICAgY29uc3QgY2Fs
bGVyU2lnbmF0dXJlID0gdHlwZUdlbmVyYXRvci5jcmVhdGVTaWduYXR1cmUoCisgICAgICB1bmRl
ZmluZWQsCisgICAgICBwcmV2aW91c0NhbGxlZS5zaWduYXR1cmUucmV0Lmxlbmd0aCwKKyAgICAp
OworICAgIGNhbGxlclNpZ25hdHVyZS5yZXQgPSBwcmV2aW91c0NhbGxlZS5zaWduYXR1cmUucmV0
OworICAgIGNvbnN0IGNhbGxlck5hbWUgPSAiZGVwdGgiICsgZGVwdGgudG9TdHJpbmcoKSArICIt
PiIgKyBwcmV2aW91c0NhbGxlZS5uYW1lOworICAgIGNvbnN0IGNhbGxlciA9IGNyZWF0ZUNhbGxl
cihjYWxsZXJOYW1lLCBwcmV2aW91c0NhbGxlZSwgY2FsbGVyU2lnbmF0dXJlLCBpc0luZGlyZWN0
KTsKKyAgICBjb21taXRGdW5jdGlvbihjYWxsZXIsIGRlc3QpOworICAgIHJlZ2lzdGVyQ2FsbFNp
dGUoY2FsbGVyLCBwcmV2aW91c0NhbGxlZSwgY2FsbFNpdGVzKTsKKyAgICBwcmV2aW91c0NhbGxl
ZSA9IGNhbGxlcjsKKyAgfQorfTsKKworCitjb25zdCBjb21wYXJlID0gKGxocywgcmhzLCBleHBv
cnRzLCBjYWxsU2l0ZXMpID0+IHsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHBvcnRzLmxlbmd0
aDsgKytpKSB7CisgICAgY29uc3QgY2FsbGVyID0gZXhwb3J0c1tpXTsKKyAgICBjb25zdCBjYWxs
ZXJOYW1lID0gY2FsbGVyLm5hbWU7CisgICAgY29uc3QgbGhzRW50cnlwb2ludCA9IGxocy5leHBv
cnRzW2NhbGxlck5hbWVdOworICAgIGNvbnN0IHJoc0VudHJ5cG9pbnQgPSByaHMuZXhwb3J0c1tj
YWxsZXJOYW1lXTsKKyAgICBjb25zdCBwYXJhbXMgPSB0eXBlR2VuZXJhdG9yLmpzQXJnc0Zyb21X
YXNtUGFyYW1zKGNhbGxlci5zaWduYXR1cmUucGFyYW1zKTsKKyAgICBjb25zdCBsaHNSZXN1bHQg
PSBsaHNFbnRyeXBvaW50KC4uLnBhcmFtcyk7CisgICAgY29uc3QgcmhzUmVzdWx0ID0gcmhzRW50
cnlwb2ludCguLi5wYXJhbXMpOworICAgIGlmICh2ZXJib3NlKSB7CisgICAgICBpZiAoY2FsbGVy
LmNhbGxTaXRlSW5kZXggIT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGR1bXBCYWNrdHJhY2UoY2Fs
bFNpdGVzW2NhbGxlci5jYWxsU2l0ZUluZGV4XSwgY2FsbFNpdGVzLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHByaW50KGNhbGxlck5hbWUpOworICAgICAgfQorICAgICAgaWYgKHZlcmJv
c2UgPT0gMikgeworICAgICAgICBwcmludCgicGFyYW1zOiIgKyBwYXJhbXMpOworICAgICAgfQor
ICAgICAgcHJpbnQobGhzUmVzdWx0KTsKKyAgICAgIHByaW50KHJoc1Jlc3VsdCk7CisgICAgfQor
ICAgIGFzc2VydC5lcShsaHNSZXN1bHQsIHJoc1Jlc3VsdCk7CisgIH0KK307CisKK2NvbnN0IHJ1
blRlc3RXaXRoaW5Nb2R1bGUgPSAoKSA9PiB7CisgIGNvbnN0IGV4cG9ydHMgPSBbXTsKKyAgY29u
c3QgY2FsbFNpdGVzID0gW107CisgIGFkZENhbGxzKGV4cG9ydHMsIGNhbGxTaXRlcywgLypleHBv
cnRTaXplKi8gMyk7CisgIGFkZENhbGxzKGV4cG9ydHMsIGNhbGxTaXRlcywgLypleHBvcnRTaXpl
Ki8gMywgLyppc0luZGlyZWN0Ki90cnVlKTsKKworICBjb25zdCBsaHMgPSBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UoCisgICAgbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgKKyAgICAgIGNyZWF0ZUJ1
aWxkZXIoeworICAgICAgICB1c2VSZXR1cm5DYWxsOiB0cnVlLAorICAgICAgICBmdW5jOiBleHBv
cnRzLAorICAgICAgICBleHBvcnRzOiBleHBvcnRzLAorICAgICAgICB0YWJsZTogeyBpbml0aWFs
OiBleHBvcnRzLmxlbmd0aCwgZWxlbWVudDogImZ1bmNyZWYiIH0sCisgICAgICAgIGVsZW1lbnQ6
IHsKKyAgICAgICAgICB0YWJsZUluZGV4OiAwLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczog
QXJyYXkuZnJvbShleHBvcnRzLCAodmFsdWUpID0+IHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1
ZS5pbmRleDsKKyAgICAgICAgICB9KQorICAgICAgICB9CisgICAgICB9KS5XZWJBc3NlbWJseSgp
LmdldCgpLAorICAgICksCisgICk7CisgIGNvbnN0IHJocyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZSgKKyAgICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKAorICAgICAgY3JlYXRlQnVpbGRlcih7
CisgICAgICAgIHVzZVJldHVybkNhbGw6IGZhbHNlLAorICAgICAgICBmdW5jOiBleHBvcnRzLAor
ICAgICAgICBleHBvcnRzOiBleHBvcnRzLAorICAgICAgICB0YWJsZTogeyBpbml0aWFsOiBleHBv
cnRzLmxlbmd0aCwgZWxlbWVudDogImZ1bmNyZWYiIH0sCisgICAgICAgIGVsZW1lbnQ6IHsKKyAg
ICAgICAgICB0YWJsZUluZGV4OiAwLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogQXJyYXku
ZnJvbShleHBvcnRzLCAodmFsdWUpID0+IHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5pbmRl
eDsKKyAgICAgICAgICB9KQorICAgICAgICB9CisgICAgICB9KS5XZWJBc3NlbWJseSgpLmdldCgp
LAorICAgICksCisgICk7CisgIGNvbXBhcmUobGhzLCByaHMsIGV4cG9ydHMsIGNhbGxTaXRlcyk7
Cit9OworCitjb25zdCBydW5UZXN0QWNyb3NzTW9kdWxlcyA9ICgpID0+IHsKKyAgY29uc3QgY2Fs
bFNpdGVzID0gW107CisgIGxldCBlbnRyeXBvaW50cyA9IFtdOworCisgIGNvbnN0IGxvYWRGcm9t
TWVtb3J5ID0gKGJ1aWxkZXIsIF92YWx1ZSwgdHlwZSkgPT4geworICAgIHJldHVybiB0eXBlR2Vu
ZXJhdG9yLmJ1aWxkZXJMb2FkRnJvbVdhc21UeXBlKAorICAgICAgLyppbW0xKi8yLAorICAgICAg
LyppbW0yKi8wLAorICAgICAgdHlwZSwKKyAgICAgIGJ1aWxkZXIuSTMyQ29uc3QoMCksCisgICAg
KTsKKyAgfTsKKworICBjb25zdCBjcmVhdGVFbnRyeXBvaW50ID0gKG5hbWUsIGNhbGxlZSwgc2ln
bmF0dXJlLCB0YWJsZU9mZnNldCkgPT4geworICAgIHJldHVybiB7CisgICAgICBuYW1lOiBuYW1l
LAorICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsCisgICAgICBib2R5OiAoYnVpbGRlciwgdXNl
UmV0dXJuQ2FsbCkgPT4geworICAgICAgICByZXR1cm4gdHJ5UmV0dXJuQ2FsbCgKKyAgICAgICAg
ICBidWlsZGVyLkZ1bmN0aW9uKG5hbWUsIHNpZ25hdHVyZSksCisgICAgICAgICAgdXNlUmV0dXJu
Q2FsbCwKKyAgICAgICAgICBjYWxsZWUuaW5kZXgsCisgICAgICAgICkuRW5kKCk7CisgICAgICB9
LAorICAgICAgdGFibGVPZmZzZXQ6IHRhYmxlT2Zmc2V0LAorICAgIH07CisgIH07CisKKyAgY29u
c3QgY3JlYXRlTWFpbiA9IChuYW1lLCBjYWxsZWVzLCBzaWduYXR1cmUpID0+IHsKKyAgICByZXR1
cm4geworICAgICAgbmFtZTogbmFtZSwKKyAgICAgIHNpZ25hdHVyZTogc2lnbmF0dXJlLAorICAg
ICAgYm9keTogKGJ1aWxkZXIpID0+IHsKKyAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuRnVuY3Rp
b24obmFtZSwgc2lnbmF0dXJlKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsZWVz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuR2V0TG9jYWwoMCk7
CisgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuQ2FsbChjYWxsZWVzW2ldLmluZGV4KTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gYnVpbGRlci5FbmQoKTsKKyAgICAgIH0sCisgICAgfTsK
KyAgfTsKKworICBjb25zdCBjcmVhdGVFbnRyeXBvaW50SW5zdGFuY2UgPSAodXNlUmV0dXJuQ2Fs
bCkgPT4geworICAgIGNvbnN0IGluc3QwX2Z1bmN0aW9ucyA9IFtdLCBpbnN0MV9mdW5jdGlvbnMg
PSBbXSwgaW5zdDJfZnVuY3Rpb25zID0gW107CisKKyAgICBjb25zdCB0YWlsU2lnbmF0dXJlID0g
dHlwZUdlbmVyYXRvci5jcmVhdGVTaWduYXR1cmUoMCwgMTUsICJpMzIiKTsKKyAgICBjb25zdCBu
VGFpbHMgPSAyOworICAgIGNvbnN0IG1haW5TaWduYXR1cmUgPSB0eXBlR2VuZXJhdG9yLmNyZWF0
ZVNpZ25hdHVyZSgKKyAgICAgIDEsCisgICAgICBuVGFpbHMgKyBuVGFpbHMgKiB0YWlsU2lnbmF0
dXJlLnJldC5sZW5ndGgsCisgICAgICAiaTMyIiwKKyAgICApOworCisgICAgY29uc3QgaW5zdDFf
dGFpbCA9IGNvbW1pdEZ1bmN0aW9uKAorICAgICAgY3JlYXRlVGFpbEZ1bmN0aW9uKCJpbnN0MV90
YWlsIiwgdGFpbFNpZ25hdHVyZSwgbG9hZEZyb21NZW1vcnkpLAorICAgICAgaW5zdDFfZnVuY3Rp
b25zLAorICAgICk7CisgICAgY29uc3QgaW5zdDFfZW50cnlwb2ludCA9IGNvbW1pdEZ1bmN0aW9u
KAorICAgICAgY3JlYXRlRW50cnlwb2ludCgKKyAgICAgICAgImluc3QxX2VudHJ5cG9pbnQiLAor
ICAgICAgICBpbnN0MV90YWlsLAorICAgICAgICB0YWlsU2lnbmF0dXJlLAorICAgICAgICAvKnRh
YmxlT2Zmc2V0Ki8gMCwKKyAgICAgICksCisgICAgICBpbnN0MV9mdW5jdGlvbnMsCisgICAgKTsK
KworICAgIGNvbnN0IGluc3QyX3RhaWwgPSBjb21taXRGdW5jdGlvbigKKyAgICAgIGNyZWF0ZVRh
aWxGdW5jdGlvbigiaW5zdDJfdGFpbCIsIHRhaWxTaWduYXR1cmUsIGxvYWRGcm9tTWVtb3J5KSwK
KyAgICAgIGluc3QyX2Z1bmN0aW9ucywKKyAgICApOworICAgIGNvbnN0IGluc3QyX2VudHJ5cG9p
bnQgPSBjb21taXRGdW5jdGlvbigKKyAgICAgIGNyZWF0ZUVudHJ5cG9pbnQoCisgICAgICAgICJp
bnN0Ml9lbnRyeXBvaW50IiwKKyAgICAgICAgaW5zdDJfdGFpbCwKKyAgICAgICAgdGFpbFNpZ25h
dHVyZSwKKyAgICAgICAgLyp0YWJsZU9mZnNldCovIDEsCisgICAgICApLAorICAgICAgaW5zdDJf
ZnVuY3Rpb25zLAorICAgICk7CisKKyAgICBjb25zdCBpbnN0MF9pbnN0MV9pbXBvcnQgPSBjb21t
aXRGdW5jdGlvbigKKyAgICAgIE9iamVjdC5hc3NpZ24oaW5zdDFfZW50cnlwb2ludCksCisgICAg
ICBpbnN0MF9mdW5jdGlvbnMsCisgICAgKTsKKyAgICBjb25zdCBpbnN0MF9pbnN0Ml9pbXBvcnQg
PSBjb21taXRGdW5jdGlvbigKKyAgICAgIE9iamVjdC5hc3NpZ24oaW5zdDJfZW50cnlwb2ludCks
CisgICAgICBpbnN0MF9mdW5jdGlvbnMsCisgICAgKTsKKworICAgIGNvbnN0IHRyYW1wb2xpbmVf
aW5zdDFfdmlhX2ltcG9ydCA9IGNvbW1pdEZ1bmN0aW9uKAorICAgICAgY3JlYXRlQ2FsbGVyKAor
ICAgICAgICAiaW5zdDBfdHJhbXBvbGluZV9pbnN0MV92aWFfaW1wb3J0IiwKKyAgICAgICAgaW5z
dDBfaW5zdDFfaW1wb3J0LAorICAgICAgICB0YWlsU2lnbmF0dXJlLAorICAgICAgKSwKKyAgICAg
IGluc3QwX2Z1bmN0aW9ucywKKyAgICApOworICAgIGNvbnN0IHRyYW1wb2xpbmVfaW5zdDJfdmlh
X2ltcG9ydCA9IGNvbW1pdEZ1bmN0aW9uKAorICAgICAgY3JlYXRlQ2FsbGVyKAorICAgICAgICAi
aW5zdDBfdHJhbXBvbGluZV9pbnN0Ml92aWFfaW1wb3J0IiwKKyAgICAgICAgaW5zdDBfaW5zdDJf
aW1wb3J0LAorICAgICAgICB0YWlsU2lnbmF0dXJlLAorICAgICAgKSwKKyAgICAgIGluc3QwX2Z1
bmN0aW9ucywKKyAgICApOworCisgICAgY29uc3QgdHJhbXBvbGluZV9pbnN0MV92aWFfdGFibGUg
PSBjb21taXRGdW5jdGlvbigKKyAgICAgIGNyZWF0ZUNhbGxlcigKKyAgICAgICAgImluc3QwX3Ry
YW1wb2xpbmVfaW5zdDFfdmlhX3RhYmxlIiwKKyAgICAgICAgaW5zdDFfZW50cnlwb2ludCwKKyAg
ICAgICAgdGFpbFNpZ25hdHVyZSwKKyAgICAgICAgLyppc0luZGlyZWN0Ki90cnVlCisgICAgICAp
LAorICAgICAgaW5zdDBfZnVuY3Rpb25zLAorICAgICk7CisgICAgY29uc3QgdHJhbXBvbGluZV9p
bnN0Ml92aWFfdGFibGUgPSBjb21taXRGdW5jdGlvbigKKyAgICAgIGNyZWF0ZUNhbGxlcigKKyAg
ICAgICAgImluc3QwX3RyYW1wb2xpbmVfaW5zdDJfdmlhX3RhYmxlIiwKKyAgICAgICAgaW5zdDJf
ZW50cnlwb2ludCwKKyAgICAgICAgdGFpbFNpZ25hdHVyZSwKKyAgICAgICAgLyppc0luZGlyZWN0
Ki90cnVlCisgICAgICApLAorICAgICAgaW5zdDBfZnVuY3Rpb25zLAorICAgICk7CisKKyAgICBl
bnRyeXBvaW50cy5wdXNoKAorICAgICAgcmVnaXN0ZXJDYWxsU2l0ZSgKKyAgICAgICAgY29tbWl0
RnVuY3Rpb24oCisgICAgICAgICAgY3JlYXRlTWFpbigiaW5zdDBfbWFpbl92aWFfdGFibGUiLCBb
CisgICAgICAgICAgICB0cmFtcG9saW5lX2luc3QxX3ZpYV90YWJsZSwKKyAgICAgICAgICAgIHRy
YW1wb2xpbmVfaW5zdDJfdmlhX3RhYmxlLAorICAgICAgICAgIF0sIG1haW5TaWduYXR1cmUpLAor
ICAgICAgICAgIGluc3QwX2Z1bmN0aW9ucywKKyAgICAgICAgKSwKKyAgICAgICAgW3RyYW1wb2xp
bmVfaW5zdDFfdmlhX3RhYmxlLCB0cmFtcG9saW5lX2luc3QyX3ZpYV90YWJsZV0sCisgICAgICAg
IGNhbGxTaXRlcywKKyAgICAgICksCisgICAgKTsKKworICAgIGVudHJ5cG9pbnRzLnB1c2goCisg
ICAgICByZWdpc3RlckNhbGxTaXRlKAorICAgICAgICBjb21taXRGdW5jdGlvbigKKyAgICAgICAg
ICBjcmVhdGVNYWluKCJpbnN0MF9tYWluX3ZpYV9pbXBvcnQiLCBbCisgICAgICAgICAgICB0cmFt
cG9saW5lX2luc3QxX3ZpYV9pbXBvcnQsCisgICAgICAgICAgICB0cmFtcG9saW5lX2luc3QyX3Zp
YV9pbXBvcnQsCisgICAgICAgICAgXSwgbWFpblNpZ25hdHVyZSksCisgICAgICAgICAgaW5zdDBf
ZnVuY3Rpb25zLAorICAgICAgICApLAorICAgICAgICBbdHJhbXBvbGluZV9pbnN0MV92aWFfaW1w
b3J0LCB0cmFtcG9saW5lX2luc3QyX3ZpYV9pbXBvcnRdLAorICAgICAgICBjYWxsU2l0ZXMsCisg
ICAgICApLAorICAgICk7CisKKyAgICAvLyBpbnN0WzEtMl1fZW50cnlwb2ludCBoYXZlIGJlZW4g
cHVzaGVkIGZpcnN0LCB0byBleHBvc2UgdGhlaXIgaW5kaWNlcyBhcyBwYXJ0IG9mIHRoZSBpbmRl
eCBzcGFjZQorICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gYWRkIHRoZW0gdG8gdGhlIG1haW4gbW9k
dWxlLCBzbyB3ZSByZW1vdmUgdGhlbQorICAgIGNvbnN0IGluc3QwX2NvZGUgPSBpbnN0MF9mdW5j
dGlvbnMuc3BsaWNlKDIpOworCisgICAgY29uc3QgaW5zdDBNZW1EZXNjcmlwdGlvbiA9IHsgaW5p
dGlhbDogMSB9OworICAgIGNvbnN0IGluc3QxTWVtRGVzY3JpcHRpb24gPSB7IGluaXRpYWw6IDIg
fTsKKyAgICBjb25zdCBpbnN0MExoc01lbSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoaW5zdDBN
ZW1EZXNjcmlwdGlvbik7CisgICAgY29uc3QgaW5zdDFMaHNNZW0gPSBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KGluc3QxTWVtRGVzY3JpcHRpb24pOworCisgICAgbmV3IFVpbnQ4QXJyYXkoaW5zdDBM
aHNNZW0uYnVmZmVyKS5mb3JFYWNoKChfdmFsdWUsIGluZGV4LCBhcnJheSkgPT4geworICAgICAg
YXJyYXlbaW5kZXhdID0gMDsKKyAgICB9KTsKKyAgICBuZXcgVWludDhBcnJheShpbnN0MUxoc01l
bS5idWZmZXIpLmZvckVhY2goKF92YWx1ZSwgaW5kZXgsIGFycmF5KSA9PiB7CisgICAgICBhcnJh
eVtpbmRleF0gPSAweGZmOworICAgIH0pOworCisgICAgY29uc3QgdGFibGVJbmZvID0geyBpbml0
aWFsOiAyLCBlbGVtZW50OiAiZnVuY3JlZiIgfTsKKyAgICBjb25zdCB0YWJsZSA9IG5ldyBXZWJB
c3NlbWJseS5UYWJsZSh0YWJsZUluZm8pOworCisgICAgY29uc3QgaW5zdDEgPSBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UoCisgICAgICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKAorICAgICAgICBj
cmVhdGVCdWlsZGVyKHsKKyAgICAgICAgICAvKmJ1aWxkZXJJbmZvKi8KKyAgICAgICAgICB1c2VS
ZXR1cm5DYWxsOiB1c2VSZXR1cm5DYWxsLAorICAgICAgICAgIGZ1bmM6IGluc3QxX2Z1bmN0aW9u
cywKKyAgICAgICAgICB0eXBlczogW3RhaWxTaWduYXR1cmUsIHRhaWxTaWduYXR1cmVdLAorICAg
ICAgICAgIGltcG9ydHM6IHsKKyAgICAgICAgICAgIGltcDogeworICAgICAgICAgICAgICB0YWJs
ZTogdGFibGVJbmZvLAorICAgICAgICAgICAgICBtZW1vcnk6IGluc3QwTWVtRGVzY3JpcHRpb24s
CisgICAgICAgICAgICB9LAorICAgICAgICAgIH0sCisgICAgICAgICAgZXhwb3J0czogW2luc3Qx
X2VudHJ5cG9pbnRdLAorICAgICAgICAgIHRhYmxlOiB0YWJsZUluZm8sCisgICAgICAgICAgZWxl
bWVudDogeworICAgICAgICAgICAgb2Zmc2V0OiAwLAorICAgICAgICAgICAgZnVuY3Rpb25JbmRp
Y2VzOiBbMV0sCisgICAgICAgICAgfSwKKyAgICAgICAgfSkuV2ViQXNzZW1ibHkoKS5nZXQoKSwK
KyAgICAgICksCisgICAgICAvKmltcG9ydE9iamVjdCovIHsKKyAgICAgICAgaW1wOiB7CisgICAg
ICAgICAgdGFibGU6IHRhYmxlLAorICAgICAgICAgIG1lbW9yeTogaW5zdDBMaHNNZW0sCisgICAg
ICAgIH0sCisgICAgICB9LAorICAgICk7CisKKyAgICBjb25zdCBpbnN0MiA9IG5ldyBXZWJBc3Nl
bWJseS5JbnN0YW5jZSgKKyAgICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoCisgICAgICAgIGNy
ZWF0ZUJ1aWxkZXIoeworICAgICAgICAgIC8qYnVpbGRlckluZm8qLworICAgICAgICAgIHVzZVJl
dHVybkNhbGw6IHVzZVJldHVybkNhbGwsCisgICAgICAgICAgZnVuYzogaW5zdDJfZnVuY3Rpb25z
LAorICAgICAgICAgIHR5cGVzOiBbdGFpbFNpZ25hdHVyZSwgdGFpbFNpZ25hdHVyZV0sCisgICAg
ICAgICAgaW1wb3J0czogeworICAgICAgICAgICAgaW1wOiB7CisgICAgICAgICAgICAgIHRhYmxl
OiB0YWJsZUluZm8sCisgICAgICAgICAgICAgIG1lbW9yeTogaW5zdDFNZW1EZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgfSwKKyAgICAgICAgICBleHBvcnRzOiBbaW5zdDJf
ZW50cnlwb2ludF0sCisgICAgICAgICAgdGFibGU6IHRhYmxlSW5mbywKKyAgICAgICAgICBlbGVt
ZW50OiB7CisgICAgICAgICAgICBvZmZzZXQ6IDEsCisgICAgICAgICAgICBmdW5jdGlvbkluZGlj
ZXM6IFsxXSwKKyAgICAgICAgICB9LAorICAgICAgICB9KS5XZWJBc3NlbWJseSgpLmdldCgpLAor
ICAgICAgKSwKKyAgICAgIHsKKyAgICAgICAgLyppbXBvcnRPYmplY3QqLworICAgICAgICBpbXA6
IHsKKyAgICAgICAgICB0YWJsZTogdGFibGUsCisgICAgICAgICAgbWVtb3J5OiBpbnN0MUxoc01l
bSwKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAgKTsKKworICAgIGNvbnN0IGltcG9ydE9iamVj
dEluZm8gPSB7IGltcDogeyB0YWJsZTogdGFibGVJbmZvIH0gfTsKKyAgICBjb25zdCBpbXBvcnRP
YmplY3QgPSB7IGltcDogeyB0YWJsZTogdGFibGUgfSB9OworICAgIGltcG9ydE9iamVjdEluZm9b
ImltcCJdW2luc3QxX2VudHJ5cG9pbnQubmFtZV0gPSBpbnN0MV9lbnRyeXBvaW50LnNpZ25hdHVy
ZTsKKyAgICBpbXBvcnRPYmplY3RJbmZvWyJpbXAiXVtpbnN0Ml9lbnRyeXBvaW50Lm5hbWVdID0g
aW5zdDJfZW50cnlwb2ludC5zaWduYXR1cmU7CisgICAgaW1wb3J0T2JqZWN0WyJpbXAiXVtpbnN0
MV9lbnRyeXBvaW50Lm5hbWVdID0KKyAgICAgIGluc3QxLmV4cG9ydHNbaW5zdDFfZW50cnlwb2lu
dC5uYW1lXTsKKyAgICBpbXBvcnRPYmplY3RbImltcCJdW2luc3QyX2VudHJ5cG9pbnQubmFtZV0g
PQorICAgICAgaW5zdDIuZXhwb3J0c1tpbnN0Ml9lbnRyeXBvaW50Lm5hbWVdOworCisgICAgY29u
c3QgaW5zdDAgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoCisgICAgICBuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKAorICAgICAgICBjcmVhdGVCdWlsZGVyKHsKKyAgICAgICAgICAvKmJ1aWxkZXJJ
bmZvKi8KKyAgICAgICAgICB1c2VSZXR1cm5DYWxsOiB1c2VSZXR1cm5DYWxsLAorICAgICAgICAg
IGZ1bmM6IGluc3QwX2NvZGUsCisgICAgICAgICAgZXhwb3J0czogaW5zdDBfY29kZSwKKyAgICAg
ICAgICB0eXBlczogW3RhaWxTaWduYXR1cmUsIHRhaWxTaWduYXR1cmVdLAorICAgICAgICAgIGlt
cG9ydHM6IGltcG9ydE9iamVjdEluZm8sCisgICAgICAgICAgdGFibGU6IHRhYmxlSW5mbywKKyAg
ICAgICAgfSkuV2ViQXNzZW1ibHkoKS5nZXQoKSwKKyAgICAgICksCisgICAgICBpbXBvcnRPYmpl
Y3QsCisgICAgKTsKKworICAgIHJldHVybiBpbnN0MDsKKyAgfTsKKworICBjb25zdCBsaHMgPSBj
cmVhdGVFbnRyeXBvaW50SW5zdGFuY2UoLyp1c2VSZXR1cm5DYWxsKi8gdHJ1ZSk7CisgIGNvbnN0
IHJocyA9IGNyZWF0ZUVudHJ5cG9pbnRJbnN0YW5jZSgvKnVzZVJldHVybkNhbGwqLyBmYWxzZSk7
CisgIGVudHJ5cG9pbnRzID0gZW50cnlwb2ludHMuc3BsaWNlKDIpOworICByZXR1cm4gY29tcGFy
ZShsaHMsIHJocywgZW50cnlwb2ludHMsIGNhbGxTaXRlcyk7Cit9OworCitydW5UZXN0V2l0aGlu
TW9kdWxlKCk7CitydW5UZXN0QWNyb3NzTW9kdWxlcygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXggMDY2MTY3M2I0Nzdk
Y2IyYzFhODJlMjVlNGYzZGFiZjQ1NTU5YWEyNC4uOGNkM2JmZmRhYzIwNjVmMmYzM2E0ZjM2OWVk
NzYwYTA3ZDM4NGYxZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNvbgorKysgYi9K
U1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC05OCw2ICs5OCw4IEBACiAgICAgICAgICJkYXRhLmRy
b3AiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiZXh0dGFibGUiLCAgICJ2YWx1ZSI6ICAyNTIs
ICJyZXR1cm4iOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjog
W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJz
ZWdtZW50X2luZGV4IiwgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2hyaW5rcyB0aGUgc2l6
ZSBvZiB0aGUgc2VnbWVudCB0byB6ZXJvIiwgImV4dGVuZGVkT3AiOiA5IH0sCiAgICAgICAgICJj
YWxsIjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6
ICAxNiwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1l
dGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFt
ZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1
bmN0aW9uIGJ5IGl0cyBpbmRleCIgfSwKICAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7
ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxs
Il0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUiOiAidmFy
dWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBh
biBleHBlY3RlZCBzaWduYXR1cmUiIH0sCisgICAgICAgICJyZXR1cm5fY2FsbCI6ICAgICAgICAg
ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTgsICJyZXR1cm4i
OiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25f
aW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRhaWwgY2FsbCBhIGZ1bmN0aW9uIGJ5
IGl0cyBpbmRleCIgfSwKKyAgICAgICAgInJldHVybl9jYWxsX2luZGlyZWN0IjogICAgICAgeyAi
Y2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxOSwgInJldHVybiI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAidGFpbCBjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0
aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCiAgICAgICAgICJjYWxsX3JlZiI6ICAgICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAyMCwgInJldHVybiI6IFsi
Y2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIHJlZmVyZW5jZSIg
fSwKICAgICAgICAgImkzMi5sb2FkOF9zIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnki
LCAgICAgInZhbHVlIjogIDQ0LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9u
IjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDhfdSI6ICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsiaTMy
Il0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApp
bmRleCAyY2MwYTE0ODlmYTZmMjY2MjMwOTkyMjA2YTE4OGEzYmVhMmQyOGVmLi43NTg5YjJiMjQ1
YmVmY2EyMDA3N2I2YjllMjE1ZGU5NjkzMmExYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNDAxMyw2ICs0
MDEzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwo
KSwgQ2FsbDo6TGlua2FibGVOZWFyKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIENhbGwg
dGhyZWFkU2FmZVBhdGNoYWJsZU5lYXJUYWlsQ2FsbCgpCisgICAgeworICAgICAgICBBc3NlbWJs
ZXJMYWJlbCBsYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmIoKTsKKyAgICAgICAgcmV0dXJuIENhbGwobGFiZWwsIENhbGw6OkxpbmthYmxlTmVhclRhaWwp
OworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXQoKQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIucmV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDAwYjhlZDY4OTFlNGQyNGNjMDM1YTA0
MDQwYjE1OTliYjVkMGM0Y2EuLjViNTg3YWI1NDA2NGQ5MTkwNTAxOWZhN2QwYzdlZTY1NWFmMjRj
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCkBAIC0yMzEyLDYgKzIzMTIsMTIgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgoZGF0YVRlbXBSZWdpc3RlciksIENhbGw6Okxpbmth
YmxlTmVhcik7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSBDYWxsIHRocmVhZFNhZmVQYXRj
aGFibGVOZWFyVGFpbENhbGwoKQorICAgIHsKKyAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdp
c3RlcnMoKTsKKyAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYigpLCBDYWxsOjpMaW5r
YWJsZU5lYXJUYWlsKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChQdHJU
YWcpCiAgICAgewogICAgICAgICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMigw
KSwgZGF0YVRlbXBSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaAppbmRleCBmYzk4ZjliNTIyMTQ5NzY3
MjkxYzM2NTYxYjYwYWIwYTQ3NGY0N2YwLi40NWZhYTc2YTA2Yjk2YzgyNTZlMzJhYTJiYWY5ZDcx
ZDg2NDQ0NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyUklTQ1Y2NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0LmgKQEAgLTE4ODUsNiArMTg4NSwxNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBDYWxsKGxhYmVsLCBDYWxsOjpMaW5rYWJsZU5lYXIpOwogICAgIH0K
IAorICAgIENhbGwgdGhyZWFkU2FmZVBhdGNoYWJsZU5lYXJUYWlsQ2FsbCgpCisgICAgeworICAg
ICAgICBhdXRvIGxhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubmVhckNhbGxQbGFjZWhvbGRlcigKKyAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuamFsSW5zbihSSVNDVjY0UmVnaXN0ZXJzOjp6ZXJvLCBJbW06Oko8MD4o
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIENhbGwobGFiZWwsIENhbGw6Okxp
bmthYmxlTmVhclRhaWwpOworICAgIH0KKwogICAgIHZvaWQgcmV0KCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmphbHJJbnNuKFJJU0NWNjRSZWdpc3RlcnM6Onplcm8sIFJJU0NWNjRSZWdp
c3RlcnM6OngxLCBJbW06Okk8MD4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggYmVhYzczNmE2NTAzODdh
MDBiZTE5YzFmNDBiZDMyYTY3MDcyNmZkMC4uOGU3ODY2MTVjNjY3ZGU0OTg3MjU0ZjBlYjk5MWUx
Y2I3YWIzMDdmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMjgwLDYgKzI4MCwyMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgQ2FsbCB0aHJlYWRTYWZlUGF0Y2hh
YmxlTmVhclRhaWxDYWxsKCkKKyAgICB7CisgICAgICAgIGNvbnN0IHNpemVfdCBuZWFyQ2FsbE9w
Y29kZVNpemUgPSAxOworICAgICAgICBjb25zdCBzaXplX3QgbmVhckNhbGxSZWxhdGl2ZUxvY2F0
aW9uU2l6ZSA9IHNpemVvZihpbnQzMl90KTsKKyAgICAgICAgLy8gV2Ugd2FudCB0byBtYWtlIHN1
cmUgdGhlIDMyLWJpdCBuZWFyIGNhbGwgaW1tZWRpYXRlIGlzIDMyLWJpdCBhbGlnbmVkLgorICAg
ICAgICBzaXplX3QgY29kZVNpemUgPSBtX2Fzc2VtYmxlci5jb2RlU2l6ZSgpOworICAgICAgICBz
aXplX3QgYWxpZ25lZFNpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8bmVhckNhbGxSZWxh
dGl2ZUxvY2F0aW9uU2l6ZT4oY29kZVNpemUgKyBuZWFyQ2FsbE9wY29kZVNpemUpOworICAgICAg
ICBlbWl0Tm9wcyhhbGlnbmVkU2l6ZSAtIChjb2RlU2l6ZSArIG5lYXJDYWxsT3Bjb2RlU2l6ZSkp
OworICAgICAgICBEYXRhTGFiZWxQdHIgbGFiZWwgPSBEYXRhTGFiZWxQdHIodGhpcyk7CisgICAg
ICAgIENhbGwgcmVzdWx0ID0gbmVhclRhaWxDYWxsKCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
bGFiZWwsIGRpZmZlcmVuY2VCZXR3ZWVuKGxhYmVsLCByZXN1bHQpID09IChuZWFyQ2FsbE9wY29k
ZVNpemUgKyBuZWFyQ2FsbFJlbGF0aXZlTG9jYXRpb25TaXplKSk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgVHJ1c3RlZEltbTMyIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoZGVzdC5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDk2
Y2MxMzkzMzAyM2RmYzhjMGZlYmY2ZmI1MjFlMGUxMWEyNGE5OTguLjg2NzZiY2Y3NWYzNTlmN2Nm
MTllMGMzMmZiOTg0YzNhMTU3NTFhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTQ5MCw2ICsxNDkwLDEwIEBAIG9wIDp3YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0CiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2Fs
bF9pbmRpcmVjdF9ub190bHMKIG9wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZgogb3Ag
Ondhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3Rscworb3AgOndhc21fdHJhbXBvbGlu
ZV93YXNtX3JldHVybl9jYWxsCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxf
bm9fdGxzCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5kaXJlY3QKK29w
IDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdF9ub190bHMKIAogZW5k
X3NlY3Rpb24gOk5hdGl2ZUhlbHBlcnMKIApAQCAtMTY4Niw2ICsxNjkwLDIyIEBAIG9wIDpjYWxs
X25vX3RscywKICAgICAgICAgbnVtYmVyT2ZTdGFja0FyZ3M6IHVuc2lnbmVkLAogICAgIH0KIAor
b3AgOnJldHVybl9jYWxsLAorICAgIGFyZ3M6IHsKKyAgICAgICAgZnVuY3Rpb25JbmRleDogdW5z
aWduZWQsCisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZD
YWxsZWVTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJPZkNhbGxlclN0YWNrQXJn
czogdW5zaWduZWQsCisgICAgfQorCitvcCA6cmV0dXJuX2NhbGxfbm9fdGxzLAorICAgIGFyZ3M6
IHsKKyAgICAgICAgZnVuY3Rpb25JbmRleDogdW5zaWduZWQsCisgICAgICAgIHN0YWNrT2Zmc2V0
OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZWVTdGFja0FyZ3M6IHVuc2lnbmVkLAor
ICAgICAgICBudW1iZXJPZkNhbGxlclN0YWNrQXJnczogdW5zaWduZWQsCisgICAgfQorCiBvcCA6
Y2FsbF9pbmRpcmVjdCwKICAgICBhcmdzOiB7CiAgICAgICAgIGZ1bmN0aW9uSW5kZXg6IFZpcnR1
YWxSZWdpc3RlciwKQEAgLTE3MDQsNiArMTcyNCwyNiBAQCBvcCA6Y2FsbF9pbmRpcmVjdF9ub190
bHMsCiAgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIAorb3AgOnJldHVybl9j
YWxsX2luZGlyZWN0LAorICAgIGFyZ3M6IHsKKyAgICAgICAgZnVuY3Rpb25JbmRleDogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBzaWduYXR1cmVJbmRleDogdW5zaWduZWQsCisgICAgICAgIHN0
YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZWVTdGFja0FyZ3M6IHVu
c2lnbmVkLAorICAgICAgICBudW1iZXJPZkNhbGxlclN0YWNrQXJnczogdW5zaWduZWQsCisgICAg
ICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAorICAgIH0KKworb3AgOnJldHVybl9jYWxsX2luZGly
ZWN0X25vX3RscywKKyAgICBhcmdzOiB7CisgICAgICAgIGZ1bmN0aW9uSW5kZXg6IFZpcnR1YWxS
ZWdpc3RlciwKKyAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVuc2lnbmVkLAorICAgICAgICBzdGFj
a09mZnNldDogdW5zaWduZWQsCisgICAgICAgIG51bWJlck9mQ2FsbGVlU3RhY2tBcmdzOiB1bnNp
Z25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZXJTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgICAg
ICB0YWJsZUluZGV4OiB1bnNpZ25lZCwKKyAgICB9CisKIG9wIDpjYWxsX3JlZiwKICAgICBhcmdz
OiB7CiAgICAgICAgIGZ1bmN0aW9uUmVmZXJlbmNlOiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNWJkYzVlNDRi
ZDAwMzBmMjc3N2U4ZjhhMGZmZGExZGE0ZDMwZTBmOC4uMTBlYzhiNDUwMmZkNzE1NTYwMzMwMjUz
MzM0MTJmY2I3YmFlMzRjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMzc0LDYgKzM3NCwxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJp
bGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
SgogICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHM6CiAg
ICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZjoKICAgICBjYXNlIHdhc21fdHJh
bXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RsczoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93
YXNtX3JldHVybl9jYWxsOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2Nh
bGxfbm9fdGxzOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5k
aXJlY3Q6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVj
dF9ub190bHM6CiAgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwogICAgIH0KICAgICByZXR1
cm4gQ2Fubm90Q29tcGlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBkMzBmZmJhN2MwNDYzZGNjNDA1YjUwOTA2ODFl
Y2JlNTkyYjRlYjIxLi5iZmFlN2Y1YmY5OGU2ZThkZWFkOGZlMjY0MmRiMDlkNGU4NThhOWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0yNzU0LDYgKzI3NTQsMTggQEAgX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxf
aW5kaXJlY3Rfd2lkZTMyOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9f
dGxzX3dpZGUzMjoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZl93aWRlMzI6CiBfd2Fz
bV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzX3dpZGUzMjoKK193YXNtX3RyYW1wb2xp
bmVfd2FzbV9yZXR1cm5fY2FsbDoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9u
b190bHM6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5kaXJlY3Q6Citfd2Fz
bV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgorX3dhc21fdHJh
bXBvbGluZV93YXNtX3JldHVybl9jYWxsX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9y
ZXR1cm5fY2FsbF9ub190bHNfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9j
YWxsX2luZGlyZWN0X3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9p
bmRpcmVjdF9ub190bHNfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxs
X3dpZGUzMjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9ub190bHNfd2lkZTMy
OgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0X3dpZGUzMjoKK193
YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lkZTMyOgog
ICAgIGNyYXNoKCkKIAogZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2Vt
Ymx5LmFzbQppbmRleCBjY2NjNjNmMTNhY2Y2ZDM5ODM1YThkNjQ1M2I2ZWE5NTg1MmRhYWU4Li5j
NzlkYjA2YzljZmM5NGVjZTUyMWYxNmNhZjZkZGFmZDBhNTI4ZTQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTI3Myw2ICsyNzMsNTEgQEAgbWFj
cm8gcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgZW5kCiBlbmQKIAorbWFjcm8g
cHJlc2VydmVHUFJzVXNlZEJ5UmV0dXJuQ2FsbCgpCisgICAgaWYgQVJNNjQgb3IgQVJNNjRFIG9y
IEFSTXY3CisgICAgICAgIGVtaXQgInN0cCB4MCwgeDEsIFtzcCwgIzE2XSIKKyAgICBlbHNpZiBY
ODZfNjQgb3IgUklTQ1Y2NAorICAgICAgICBzdG9yZXAgd2EwLCBDb2RlQmxvY2tbc3BdCisgICAg
ICAgIHN0b3JlcCB3YTEsIENhbGxlZVtzcF0KKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAg
ZW5kCitlbmQKKworbWFjcm8gcmVzdG9yZUdQUnNVc2VkQnlSZXR1cm5DYWxsKCkKKyAgICBpZiBB
Uk02NCBvciBBUk02NEUgb3IgQVJNdjcKKyAgICAgICAgZW1pdCAibGRwIHgwLCB4MSwgW3NwLCAj
MTZdIgorICAgIGVsc2lmIFg4Nl82NCBvciBSSVNDVjY0CisgICAgICAgIGxvYWRwIENvZGVCbG9j
a1tzcF0sIHdhMAorICAgICAgICBsb2FkcCBDYWxsZWVbc3BdLCB3YTEKKyAgICBlbHNlCisgICAg
ICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzKHNj
cmF0Y2gpCisgICAgaWYgQVJNNjQgb3IgQVJNNjRFIG9yIEFSTXY3IG9yIFJJU0NWNjQKKyAgICAg
ICAgbG9hZHAgUHRyU2l6ZVtjZnJdLCBscgorICAgIGVsc2lmIFg4Nl82NAorICAgICAgICBsb2Fk
cCBQdHJTaXplW2Nmcl0sIHNjcmF0Y2gKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFB0clNpemVb
c3BdCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHVzZVBy
ZXZpb3VzRnJhbWUoKQorICAgIGlmIEFSTTY0IG9yIEFSTTY0RSBvciBBUk12NworICAgICAgICBl
bWl0ICJsZHAgeDI2LCB4MjksIFt4MjksICMtOF0iCisgICAgZWxzaWYgWDg2XzY0IG9yIFJJU0NW
NjQKKyAgICAgICAgbG9hZHAgLVB0clNpemVbY2ZyXSwgUEIKKyAgICAgICAgbG9hZHAgW2Nmcl0s
IGNmcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCisKIG1hY3JvIGxv
YWRXYXNtSW5zdGFuY2VGcm9tVExTVG8ocmVnKQogaWYgIEhBVkVfRkFTVF9UTFMKICAgICB0bHNf
bG9hZHAgV1RGX1dBU01fQ09OVEVYVF9LRVksIHJlZwpAQCAtMTAxOCw2ICsxMDYzLDE0MyBAQCBl
bmQKICAgICAgICAgZW5kKQogZW5kCiAKK21hY3JvIHNsb3dQYXRoRm9yV2FzbVJldHVybkNhbGwo
Y3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCisgICAgY2FsbFdhc21DYWxsU2xvd1Bh
dGgoCisgICAgICAgIHNsb3dQYXRoLAorICAgICAgICAjIGNhbGxlZSBpcyByMCBhbmQgdGFyZ2V0
V2FzbUluc3RhbmNlIGlzIHIxCisgICAgICAgIG1hY3JvIChjYWxsZWUsIHRhcmdldFdhc21JbnN0
YW5jZSkKKyAgICAgICAgICAgIG1vdmUgY2FsbGVlLCB3czAKKworICAgICAgICAgICAgbG9hZGkg
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKworICAgICAg
ICAgICAgIyB0aGUgY2FsbCBtaWdodCB0aHJvdyAoZS5nLiBpbmRpcmVjdCBjYWxsIHdpdGggYmFk
IHNpZ25hdHVyZSkKKyAgICAgICAgICAgIGJ0cHogdGFyZ2V0V2FzbUluc3RhbmNlLCAudGhyb3cK
KworICAgICAgICAgICAgd2dldHUoY3R4LCBtX3N0YWNrT2Zmc2V0LCB3czEpCisgICAgICAgICAg
ICBtdWxpIFNsb3RTaXplLCB3czEKKworaWYgQVJNdjcKKyAgICAgICAgICAgIHN1YnAgY2ZyLCB3
czEsIHdzMQorICAgICAgICAgICAgbW92ZSB3czEsIHNwCitlbHNlCisgICAgICAgICAgICBzdWJw
IGNmciwgd3MxLCBzcAorZW5kCisKKyAgICAgICAgICAgIHN0b3JlV2FzbUluc3RhbmNlKHRhcmdl
dFdhc21JbnN0YW5jZSkKKyAgICAgICAgICAgIHJlbG9hZE1lbW9yeVJlZ2lzdGVyc0Zyb21JbnN0
YW5jZSh0YXJnZXRXYXNtSW5zdGFuY2UsIHdhMCwgd2ExKQorCisgICAgICAgICAgICB3Z2V0dShj
dHgsIG1fbnVtYmVyT2ZDYWxsZWVTdGFja0FyZ3MsIHdzMSkKKworaWYgQVJNNjQgb3IgQVJNNjRF
CisgICAgICAgICAgICBsZWFwIFtzcCwgd3MxLCA4XSwgd3MxCisgICAgICAgICAgICBmb3JFYWNo
QXJndW1lbnRKU1IobWFjcm8gKG9mZnNldCwgZ3ByMSwgZ3ByMikKKyAgICAgICAgICAgICAgICBs
b2FkcGFpcnEgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbd3MxXSwgZ3ByMSwgZ3By
MgorICAgICAgICAgICAgZW5kKQorZWxzaWYgSlNWQUxVRTY0CisgICAgICAgICAgICBmb3JFYWNo
QXJndW1lbnRKU1IobWFjcm8gKG9mZnNldCwgZ3ByKQorICAgICAgICAgICAgICAgIGxvYWRxIENh
bGxGcmFtZUhlYWRlclNpemUgKyA4ICsgb2Zmc2V0W3NwLCB3czEsIDhdLCBncHIKKyAgICAgICAg
ICAgIGVuZCkKK2Vsc2UKKyAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEpTUihtYWNybyAob2Zm
c2V0LCBncHJNc3csIGdwTHN3KQorICAgICAgICAgICAgICAgIGxvYWQyaWEgQ2FsbEZyYW1lSGVh
ZGVyU2l6ZSArIDggKyBvZmZzZXRbc3AsIHdzMSwgOF0sIGdwTHN3LCBncHJNc3cKKyAgICAgICAg
ICAgIGVuZCkKK2VuZAoraWYgQVJNNjQgb3IgQVJNNjRFCisgICAgICAgICAgICBmb3JFYWNoQXJn
dW1lbnRGUFIobWFjcm8gKG9mZnNldCwgZnByMSwgZnByMikKKyAgICAgICAgICAgICAgICBsb2Fk
cGFpcmQgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbd3MxXSwgZnByMSwgZnByMgor
ICAgICAgICAgICAgZW5kKQorZWxzZQorICAgICAgICAgICAgZm9yRWFjaEFyZ3VtZW50RlBSKG1h
Y3JvIChvZmZzZXQsIGZwcikKKyAgICAgICAgICAgICAgICBsb2FkZCBDYWxsRnJhbWVIZWFkZXJT
aXplICsgOCArIG9mZnNldFtzcCwgd3MxLCA4XSwgZnByCisgICAgICAgICAgICBlbmQpCitlbmQK
KworICAgICAgICAgICAgIyBXZSBuZWVkIFBDIHRvIGxvYWQgaW5mb3JtYXRpb24gZnJvbSBjb250
ZXh0CisgICAgICAgICAgICAjIGFuZCB0d28gc2NyYXRjaCByZWdpc3RlcnMgdG8gcGVyZm9ybSB0
aGUgY29weQorICAgICAgICAgICAgcHJlc2VydmVHUFJzVXNlZEJ5UmV0dXJuQ2FsbCgpCisgICAg
ICAgICAgICBtb3ZlIFBDLCB3czEKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisKKyAgICAgICAgICAgICMgZ2V0IG9sZCBz
dGFjayBzaXplCisgICAgICAgICAgICB3Z2V0dShjdHgsIG1fbnVtYmVyT2ZDYWxsZXJTdGFja0Fy
Z3MsIHdhMCkKKyAgICAgICAgICAgIG11bGkgU2xvdFNpemUsIHdhMAorICAgICAgICAgICAgYWRk
aSBDYWxsRnJhbWVIZWFkZXJTaXplICsgU3RhY2tBbGlnbm1lbnQgLSAxLCB3YTAKKyAgICAgICAg
ICAgIGFuZGkgflN0YWNrQWxpZ25tZW50TWFzaywgd2EwCisKKyAgICAgICAgICAgICMgZ2V0IG5l
dyBzdGFjayBzaXplCisgICAgICAgICAgICB3Z2V0dShjdHgsIG1fbnVtYmVyT2ZDYWxsZWVTdGFj
a0FyZ3MsIHdhMSkKKyAgICAgICAgICAgIG11bGkgU2xvdFNpemUsIHdhMQorICAgICAgICAgICAg
YWRkaSBDYWxsRnJhbWVIZWFkZXJTaXplICsgU3RhY2tBbGlnbm1lbnQgLSAxLCB3YTEKKyAgICAg
ICAgICAgIGFuZGkgflN0YWNrQWxpZ25tZW50TWFzaywgd2ExCisKKyAgICAgICAgICAgICMgZ2V0
IG5ldyBzdGFjayBwb2ludGVyCisgICAgICAgICAgICBhZGRwIGNmciwgd2EwCisgICAgICAgICAg
ICBzdWJwIHdhMSAsIHdhMAorCisgICAgICAgICAgICBtb3ZlIHdzMSwgUEMKKyAgICAgICAgICAg
IHByZXNlcnZlUmV0dXJuQWRkcmVzcyh3czEpCisgICAgICAgICAgICB1c2VQcmV2aW91c0ZyYW1l
KCkKKworICAgICAgICAgICAgLmNvcHlMb29wOgorICAgICAgICAgICAgICAgIGlmIEFSTTY0IGFu
ZCBub3QgQUREUkVTUzY0CisgICAgICAgICAgICAgICAgICAgIHN1YmkgTWFjaGluZVJlZ2lzdGVy
U2l6ZSwgd2ExCisgICAgICAgICAgICAgICAgICAgIGxvYWRxIFtzcCwgd2ExLCAxXSwgd3MxCisg
ICAgICAgICAgICAgICAgICAgIHN0b3JlcSB3czEsIFt3YTAsIHdhMSwgMV0KKyAgICAgICAgICAg
ICAgICAgICAgYnRpbnogd2ExLCAuY29weUxvb3AKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHN1YnAgTWFjaGluZVJlZ2lzdGVyU2l6ZSwgd2ExCisgICAgICAgICAg
ICAgICAgICAgIGxvYWRwIFtzcCwgd2ExLCAxXSwgd3MxCisgICAgICAgICAgICAgICAgICAgIHN0
b3JlcCB3czEsIFt3YTAsIHdhMSwgMV0KKyAgICAgICAgICAgICAgICAgICAgYnRpbnogd2ExLCAu
Y29weUxvb3AKKyAgICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgbW92ZSB3YTAsIHdz
MQorICAgICAgICAgICAgcmVzdG9yZUdQUnNVc2VkQnlSZXR1cm5DYWxsKCkKKworICAgICAgICAg
ICAgaWYgQVJNNjQgb3IgQVJNNjRFIG9yIEFSTXY3IG9yIFJJU0NWNjQKKyAgICAgICAgICAgICAg
ICBhZGRwIENhbGxlckZyYW1lQW5kUENTaXplLCB3czEsIHNwCisgICAgICAgICAgICBlbHNpZiBY
ODZfNjQKKyAgICAgICAgICAgICAgICBhZGRwIFB0clNpemUsIHdzMSwgc3AKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBlcnJvcgorICAgICAgICAgICAgZW5kCisKKyAgICAgICAg
ICAgIGN0eChtYWNybyhvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHNpemUpCisgICAgICAgICAg
ICAgICAgbWFjcm8ganVtcE5hcnJvdygpCisgICAgICAgICAgICAgICAgICAgIGlmIEFSTTY0RQor
ICAgICAgICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpv
ZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJSkg
KiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1l
JToKKyAgICAgICAgICAgICAgICAgICAgam1wIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisg
ICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBtYWNybyBqdW1wV2lkZTE2KCkK
KyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAgICAgICBs
ZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCAr
IChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUxNikgKiBQdHJTaXplLCB3czEKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgICAg
ICAgICAgICAgICAgIGptcCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAg
ICAgIGVuZAorCisgICAgICAgICAgICAgICAgbWFjcm8ganVtcFdpZGUzMigpCisgICAgICAgICAg
ICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25m
aWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHBy
IEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMzIpICogUHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAg
ICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlTbG93
UGF0aFB0clRhZworICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAg
X3dhc21fdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTMyOgorICAgICAgICAgICAgICAgICAg
ICBqbXAgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICBlbmQKKwor
ICAgICAgICAgICAgICAgIHNpemUoanVtcE5hcnJvdywganVtcFdpZGUxNiwganVtcFdpZGUzMiwg
bWFjcm8gKGdlbikgZ2VuKCkgZW5kKQorICAgICAgICAgICAgZW5kKQorICAgIC50aHJvdzoKKyAg
ICByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKKyAgICBkaXNwYXRjaChjdHgpCisgICAgZW5kKQor
ZW5kCisKIHVucHJlZml4ZWRXYXNtT3Aod2FzbV9jYWxsLCBXYXNtQ2FsbCwgbWFjcm8oY3R4KQog
ICAgIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbCwgc3RvcmVX
YXNtSW5zdGFuY2VUb1RMUykKIGVuZCkKQEAgLTEwNDIsNiArMTIyNCwyMiBAQCB3YXNtT3AoY2Fs
bF9yZWZfbm9fdGxzLCBXYXNtQ2FsbFJlZk5vVGxzLCBtYWNybyhjdHgpCiAgICAgc2xvd1BhdGhG
b3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9jYWxsX3JlZl9ub190bHMsIG1hY3JvKHRh
cmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQogZW5k
KQogCit3YXNtT3AocmV0dXJuX2NhbGwsIFdhc21SZXR1cm5DYWxsLCBtYWNybyhjdHgpCisgICAg
c2xvd1BhdGhGb3JXYXNtUmV0dXJuQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9yZXR1cm5fY2Fs
bCwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKK2VuZCkKKword2FzbU9wKHJldHVybl9jYWxsX25v
X3RscywgV2FzbVJldHVybkNhbGxOb1RscywgbWFjcm8oY3R4KQorICAgIHNsb3dQYXRoRm9yV2Fz
bVJldHVybkNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fcmV0dXJuX2NhbGxfbm9fdGxzLCBtYWNy
byh0YXJnZXRJbnN0YW5jZSkgbW92ZSB0YXJnZXRJbnN0YW5jZSwgd2FzbUluc3RhbmNlIGVuZCkK
K2VuZCkKKword2FzbU9wKHJldHVybl9jYWxsX2luZGlyZWN0LCBXYXNtUmV0dXJuQ2FsbEluZGly
ZWN0LCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtUmV0dXJuQ2FsbChjdHgsIF9zbG93
X3BhdGhfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdCwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykK
K2VuZCkKKword2FzbU9wKHJldHVybl9jYWxsX2luZGlyZWN0X25vX3RscywgV2FzbVJldHVybkNh
bGxJbmRpcmVjdE5vVGxzLCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtUmV0dXJuQ2Fs
bChjdHgsIF9zbG93X3BhdGhfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdF9ub190bHMsIG1hY3Jv
KHRhcmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQor
ZW5kKQorCiB3YXNtT3AoY3VycmVudF9tZW1vcnksIFdhc21DdXJyZW50TWVtb3J5LCBtYWNybyhj
dHgpCiAgICAgbG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1fbWVtb3J5W3dhc21JbnN0YW5jZV0sIHQw
CiAgICAgbG9hZHAgV2FzbTo6TWVtb3J5OjptX2hhbmRsZVt0MF0sIHQwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCAwNTVjYzhiZWQ2MTFiMDc3YTQ0
NzIzNTc3OWUzNzMwYmFjMmM5MDM4Li5kNjFhOWVkMGYzNzAzMjI3ZmRiODAwZmJlNjI1NTU4YTZh
MGU0MzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgK
QEAgLTU1NCw2ICs1NTQsNyBAQCBib29sIGNhblVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwog
ICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlHQywgZmFsc2UsIE5vcm1hbCwgIkFsbG93IGdjIHR5
cGVzIGZyb20gdGhlIHdhc20gZ2MgcHJvcG9zYWwuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNz
ZW1ibHlFeGNlcHRpb25zLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0aGUgbmV3IHNlY3Rpb24gYW5k
IGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIGV4Y2VwdGlvbiBoYW5kbGluZyBzcGVjLiIpIFwK
ICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5QnJhbmNoSGludHMsIHRydWUsIE5vcm1hbCwgIkFs
bG93IHRoZSBuZXcgc2VjdGlvbiBmcm9tIHRoZSB3YXNtIGJyYW5jaCBoaW50aW5nIHNwZWMuIikg
XAorICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlUYWlsQ2FsbHMsIGZhbHNlLCBOb3JtYWwsICJB
bGxvdyB0aGUgbmV3IGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIHRhaWwgY2FsbHMgc3BlYy4i
KSBcCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAyOWM1OGVhODBlNjc0ZTVm
NDA3NTRmODU1NmNjYjczZDQyYjhhZmFlLi5lOTY0ODE3NTQwMTk5ZmQzNWVjZGQ5OGU5YjZlNzY0
MGU5YTcxYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKQEAgLTQxNyw4ICs0MTcsMTEgQEAgcHVibGljOgogICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNv
bnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0
TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
Q2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwg
VmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbFJlZihjb25zdCBUeXBlRGVm
aW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3Vs
dHMpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJldHVybkNhbGwo
dWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJl
c3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CisgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxl
SW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJn
cywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBlbWl0SW5kaXJlY3RDYWxsKFR5cGVkVG1wIGNhbGxlZUluc3RhbmNlLCBFeHByZXNzaW9u
VHlwZSBjYWxsZWVDb2RlLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIGNvbnN0IFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBlbWl0UmV0dXJuQ2FsbEluZGlyZWN0KFR5cGVkVG1wIGNhbGxlZUluc3Rh
bmNlLCBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIGNv
bnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmKTsKICAgICBzdGQ6
OnBhaXI8QjM6OlBhdGNocG9pbnRWYWx1ZSosIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBlbWl0Q2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jayosIGNvbnN0IFR5
cGVEZWZpbml0aW9uJiwgY29uc3QgUmVzdWx0TGlzdCYgcmVzdWx0cywgY29uc3QgVmVjdG9yPFR5
cGVkVG1wPiYgYXJncywgVmVjdG9yPENvbnN0cmFpbmVkVG1wPiBleHRyYUFyZ3MgPSB7IH0pOwog
CiAgICAgUGFydGlhbFJlc3VsdCBhZGRTaGlmdChUeXBlLCBCMzo6QWlyOjpPcGNvZGUsIEV4cHJl
c3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSBzaGlmdCwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCk7CkBAIC04MzQsNiArODM3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3RvcmVXYXNt
Q29udGV4dEluc3RhbmNlKEJhc2ljQmxvY2sqLCBUeXBlZFRtcCk7CiAgICAgZW51bSBjbGFzcyBS
ZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIHJlc3RvcmVXZWJB
c3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0LCBjb25zdCBNZW1vcnlJ
bmZvcm1hdGlvbiYsIFR5cGVkVG1wIGluc3RhbmNlLCBCYXNpY0Jsb2NrKik7CisgICAgdm9pZCBw
cmVwYXJlRm9yUmV0dXJuQ2FsbChDQ2FsbEhlbHBlcnMmLCBjb25zdCBDYWxsSW5mb3JtYXRpb24m
LCBjb25zdCBDYWxsSW5mb3JtYXRpb24mKTsKIAogICAgIEIzOjpPcmlnaW4gb3JpZ2luKCk7CiAK
QEAgLTM2NDUsMTQgKzM2NDksMTQgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50
MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmEKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5y
ZXR1cm5Db3VudCgpOyArK2kpCiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHRtcEZvclR5cGUoc2ln
bmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5yZXR1cm5UeXBlKGkpKSk7CiAKKyAgICBh
dXRvIGN1cnJlbnRJbnN0YW5jZSA9IGc2NCgpOworICAgIGFwcGVuZChNb3ZlLCBpbnN0YW5jZVZh
bHVlKCksIGN1cnJlbnRJbnN0YW5jZSk7CisKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNt
Q2FsbD4qIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzID0gJm1fdW5saW5rZWRXYXNtVG9XYXNtQ2Fs
bHM7CiAKICAgICBpZiAobV9pbmZvLmlzSW1wb3J0ZWRGdW5jdGlvbkZyb21GdW5jdGlvbkluZGV4
U3BhY2UoZnVuY3Rpb25JbmRleCkpIHsKICAgICAgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMg
PSBzdGQ6Om1heChtX21heE51bUpTQ2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGFyZ3Muc2l6ZSgpKSk7CiAKLSAgICAgICAgYXV0byBjdXJyZW50SW5zdGFuY2UgPSBnNjQoKTsK
LSAgICAgICAgYXBwZW5kKE1vdmUsIGluc3RhbmNlVmFsdWUoKSwgY3VycmVudEluc3RhbmNlKTsK
LQogICAgICAgICBhdXRvIHRhcmdldEluc3RhbmNlID0gZzY0KCk7CiAKICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBoYXZlIGJldHRlciBpc2VsIGhlcmUuCkBAIC0zNzE3LDggKzM3MjEsNiBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNv
bnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYQogICAgICAgICB9CiAKICAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBjb250aW51YXRpb247Ci0gICAgICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVl
biB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1v
ZGlmaWVkIG91ciBNZW1vcnkuCi0gICAgICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRl
KFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0OjpZZXMsIG1faW5mby5tZW1vcnksIGN1cnJlbnRJbnN0
YW5jZSwgY29udGludWF0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvIHBhaXIgPSBl
bWl0Q2FsbFBhdGNocG9pbnQobV9jdXJyZW50QmxvY2ssIHNpZ25hdHVyZSwgcmVzdWx0cywgYXJn
cyk7CiAgICAgICAgIGF1dG8qIHBhdGNocG9pbnQgPSBwYWlyLmZpcnN0OwpAQCAtMzczNSw2ICsz
NzM3LDggQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbklu
ZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmEKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9KTsKICAgICB9CisgICAgLy8gVGhlIGNhbGwgY291bGQgaGF2ZSBiZWVuIHRvIGFub3RoZXIg
V2ViQXNzZW1ibHkgaW5zdGFuY2UsIGFuZCAvIG9yIGNvdWxkIGhhdmUgbW9kaWZpZWQgb3VyIE1l
bW9yeS4KKyAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3Rh
Y2tMaW1pdDo6WWVzLCBtX2luZm8ubWVtb3J5LCBjdXJyZW50SW5zdGFuY2UsIG1fY3VycmVudEJs
b2NrKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0zODUwLDYgKzM4NTQsMjI1IEBAIGF1dG8g
QWlySVJHZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVy
ZSwgVmVjdG9yPEV4cHJlc3NpCiAgICAgcmV0dXJuIGVtaXRJbmRpcmVjdENhbGwoY2FsbGVlSW5z
dGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwgYXJncywgcmVzdWx0cyk7CiB9CiAKK2F1dG8g
QWlySVJHZW5lcmF0b3I6OmFkZFJldHVybkNhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29u
c3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJn
cywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAoreworICAgIEFTU0VSVChz
aWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFyZ3VtZW50Q291bnQoKSA9PSBhcmdz
LnNpemUoKSk7CisKKyAgICBjb25zdCBUeXBlSW5kZXggY2FsbGVyVHlwZUluZGV4ID0gbV9pbmZv
LmludGVybmFsRnVuY3Rpb25UeXBlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdOworICAgIGNvbnN0
IFR5cGVEZWZpbml0aW9uJiBjYWxsZXJUeXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6
Z2V0KGNhbGxlclR5cGVJbmRleCk7CisgICAgY29uc3QgYXV0byYgY2FsbGluZ0NvbnZlbnRpb24g
PSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKKyAgICBDYWxsSW5mb3JtYXRpb24gd2FzbUNhbGxl
ckluZm8gPSBjYWxsaW5nQ29udmVudGlvbi5jYWxsSW5mb3JtYXRpb25Gb3IoY2FsbGVyVHlwZURl
ZmluaXRpb24sIENhbGxSb2xlOjpDYWxsZWUpOworICAgIENhbGxJbmZvcm1hdGlvbiB3YXNtQ2Fs
bGVlSW5mbyA9IGNhbGxpbmdDb252ZW50aW9uLmNhbGxJbmZvcm1hdGlvbkZvcihzaWduYXR1cmUs
IENhbGxSb2xlOjpDYWxsZXIpOworCisgICAgbV9tYWtlc0NhbGxzID0gdHJ1ZTsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkt
PnJldHVybkNvdW50KCk7ICsraSkKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQodG1wRm9yVHlwZShz
aWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPnJldHVyblR5cGUoaSkpKTsKKworICAg
IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiogdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMg
PSAmbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsKKworICAgIGlmIChtX2luZm8uaXNJbXBvcnRl
ZEZ1bmN0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KSkgeworICAgICAg
ICBtX21heE51bUpTQ2FsbEFyZ3VtZW50cyA9IHN0ZDo6bWF4KG1fbWF4TnVtSlNDYWxsQXJndW1l
bnRzLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJncy5zaXplKCkpKTsKKworICAgICAgICBhdXRv
IGN1cnJlbnRJbnN0YW5jZSA9IGc2NCgpOworICAgICAgICBhcHBlbmQoTW92ZSwgaW5zdGFuY2VW
YWx1ZSgpLCBjdXJyZW50SW5zdGFuY2UpOworCisgICAgICAgIGF1dG8gdGFyZ2V0SW5zdGFuY2Ug
PSBnNjQoKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYmV0dGVyIGlzZWwg
aGVyZS4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5Mzk5OQorICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0oSW5zdGFuY2U6Om9mZnNl
dE9mVGFyZ2V0SW5zdGFuY2UoZnVuY3Rpb25JbmRleCkpLCB0YXJnZXRJbnN0YW5jZSk7CisgICAg
ICAgIGFwcGVuZChBZGQ2NCwgaW5zdGFuY2VWYWx1ZSgpLCB0YXJnZXRJbnN0YW5jZSk7CisgICAg
ICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIodGFyZ2V0SW5zdGFuY2UpLCB0YXJnZXRJbnN0YW5j
ZSk7CisKKyAgICAgICAgQmFzaWNCbG9jayogaXNXYXNtQmxvY2sgPSBtX2NvZGUuYWRkQmxvY2so
KTsKKyAgICAgICAgQmFzaWNCbG9jayogaXNFbWJlZGRlckJsb2NrID0gbV9jb2RlLmFkZEJsb2Nr
KCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IG1fY29kZS5hZGRCbG9jaygp
OworCisgICAgICAgIGFwcGVuZChCcmFuY2hUZXN0NjQsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybyksIHRhcmdldEluc3RhbmNlLCB0YXJnZXRJbnN0YW5jZSk7CisgICAgICAg
IG1fY3VycmVudEJsb2NrLT5zZXRTdWNjZXNzb3JzKGlzV2FzbUJsb2NrLCBpc0VtYmVkZGVyQmxv
Y2spOworCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gcGFpciA9IGVtaXRDYWxsUGF0Y2hw
b2ludChpc1dhc21CbG9jaywgc2lnbmF0dXJlLCByZXN1bHRzLCBhcmdzKTsKKyAgICAgICAgICAg
IGF1dG8qIHBhdGNocG9pbnQgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgYXV0byBleGNlcHRp
b25IYW5kbGUgPSBwYWlyLnNlY29uZDsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJl
ciBhbGwgcG90ZW50aWFsIHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmlu
ZyB0aGUgaW5zdGFuY2UuCisgICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1l
IHdlIGNvdWxkIGJlIGNhbGxpbmcgdG8gc29tZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5n
LgorICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGRvIHRoaXM6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEKKyAgICAgICAgICAg
IHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZl
KE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisKKyAgICAgICAgICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcihbPSwgdGhpc10oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgICAg
ICBwcmVwYXJlRm9yUmV0dXJuQ2FsbChqaXQsIHdhc21DYWxsZXJJbmZvLCB3YXNtQ2FsbGVlSW5m
byk7CisgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLmdlbmVyYXRlKGppdCwgcGFyYW1z
LCB0aGlzKTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50
aHJlYWRTYWZlUGF0Y2hhYmxlTmVhclRhaWxDYWxsKCk7CisgICAgICAgICAgICAgICAgaml0LmFk
ZExpbmtUYXNrKFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY2FsbCwgZnVuY3Rpb25JbmRleF0o
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZFdh
c21Ub1dhc21DYWxscy0+YXBwZW5kKHsgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8V2Fz
bUVudHJ5UHRyVGFnPihjYWxsKSwgZnVuY3Rpb25JbmRleCB9KTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhcHBlbmQoaXNXYXNtQmxvY2ssIEp1
bXApOworICAgICAgICAgICAgaXNXYXNtQmxvY2stPnNldFN1Y2Nlc3NvcnMoY29udGludWF0aW9u
KTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8ganVtcERlc3RpbmF0
aW9uID0gZzY0KCk7CisgICAgICAgICAgICBhcHBlbmQoaXNFbWJlZGRlckJsb2NrLCBNb3ZlLCBB
cmc6OmJpZ0ltbShJbnN0YW5jZTo6b2Zmc2V0T2ZXYXNtVG9FbWJlZGRlclN0dWIoZnVuY3Rpb25J
bmRleCkpLCBqdW1wRGVzdGluYXRpb24pOworICAgICAgICAgICAgYXBwZW5kKGlzRW1iZWRkZXJC
bG9jaywgQWRkNjQsIGluc3RhbmNlVmFsdWUoKSwganVtcERlc3RpbmF0aW9uKTsKKyAgICAgICAg
ICAgIGFwcGVuZChpc0VtYmVkZGVyQmxvY2ssIE1vdmUsIEFyZzo6YWRkcihqdW1wRGVzdGluYXRp
b24pLCBqdW1wRGVzdGluYXRpb24pOworCisgICAgICAgICAgICBWZWN0b3I8Q29uc3RyYWluZWRU
bXA+IGp1bXBBcmdzOworICAgICAgICAgICAganVtcEFyZ3MuYXBwZW5kKHsganVtcERlc3RpbmF0
aW9uLCBCMzo6VmFsdWVSZXA6OlNvbWVSZWdpc3RlciB9KTsKKyAgICAgICAgICAgIGF1dG8gcGFp
ciA9IGVtaXRDYWxsUGF0Y2hwb2ludChpc0VtYmVkZGVyQmxvY2ssIHNpZ25hdHVyZSwgcmVzdWx0
cywgYXJncywgV1RGTW92ZShqdW1wQXJncykpOworICAgICAgICAgICAgYXV0byogcGF0Y2hwb2lu
dCA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbkhhbmRsZSA9IHBhaXIu
c2Vjb25kOworCisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIgYWxsIHBvdGVudGlh
bCBwaW5uZWQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxlYXZpbmcgdGhlIGluc3RhbmNl
LgorICAgICAgICAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSBjb3VsZCBiZSBj
YWxsaW5nIHRvIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVja2luZy4KKyAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlzOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisgICAgICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpC
b3VuZHNDaGVja2luZykpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9
LCB0aGlzXShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRs
ZS5nZW5lcmF0ZShqaXQsIHBhcmFtcywgdGhpcyk7CisgICAgICAgICAgICAgICAgaml0LmNhbGwo
cGFyYW1zW3BhcmFtcy5wcm9jKCkucmVzdWx0Q291bnQocGFyYW1zLnZhbHVlKCktPnR5cGUoKSld
LmdwcigpLCBXYXNtRW50cnlQdHJUYWcpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IGFwcGVuZChpc0VtYmVkZGVyQmxvY2ssIEp1bXApOworICAgICAgICAgICAgaXNFbWJlZGRlckJs
b2NrLT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRv
IHBhaXIgPSBlbWl0Q2FsbFBhdGNocG9pbnQobV9jdXJyZW50QmxvY2ssIHNpZ25hdHVyZSwgcmVz
dWx0cywgYXJncyk7CisgICAgICAgIGF1dG8qIHBhdGNocG9pbnQgPSBwYWlyLmZpcnN0OworICAg
ICAgICBhdXRvIGV4Y2VwdGlvbkhhbmRsZSA9IHBhaXIuc2Vjb25kOworICAgICAgICAvLyBXZSBu
ZWVkIHRvIGNsb2JiZXIgdGhlIHNpemUgcmVnaXN0ZXIgc2luY2UgdGhlIExMSW50IGFsd2F5cyBi
b3VuZHMgY2hlY2tzCisgICAgICAgIGlmIChtX21vZGUgPT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5n
IHx8IG1faW5mby5tZW1vcnkuaXNTaGFyZWQoKSkKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXJMYXRlKFJlZ2lzdGVyU2V0IHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3RlciB9KTsKKworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoWz0sIHRoaXNdKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIHByZXBhcmVGb3JSZXR1cm5D
YWxsKGppdCwgd2FzbUNhbGxlckluZm8sIHdhc21DYWxsZWVJbmZvKTsKKyAgICAgICAgICAgIGV4
Y2VwdGlvbkhhbmRsZS5nZW5lcmF0ZShqaXQsIHBhcmFtcywgdGhpcyk7CisgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZlUGF0Y2hhYmxlTmVhclRhaWxD
YWxsKCk7CisgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soW3VubGlua2VkV2FzbVRvV2FzbUNh
bGxzLCBjYWxsLCBmdW5jdGlvbkluZGV4XShMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAg
ICAgICAgICAgICAgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMtPmFwcGVuZCh7IGxpbmtCdWZmZXIu
bG9jYXRpb25PZk5lYXJDYWxsPFdhc21FbnRyeVB0clRhZz4oY2FsbCksIGZ1bmN0aW9uSW5kZXgg
fSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIHJldHVybiB7IH07
Cit9CisKK3ZvaWQgQWlySVJHZW5lcmF0b3I6OnByZXBhcmVGb3JSZXR1cm5DYWxsKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBDYWxsSW5mb3JtYXRpb24mIGNhbGxlckluZm8sIGNvbnN0IENhbGxJ
bmZvcm1hdGlvbiYgY2FsbGVlSW5mbykKK3sKKyAgICB1aW50MzJfdCBjYWxsZXJTdGFja1NpemUg
PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBjYWxsZXJJ
bmZvLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcyk7CisgICAgdWludDMyX3QgY2Fs
bGVlU3RhY2tTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0
ZXMoKSwgY2FsbGVlSW5mby5oZWFkZXJBbmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMpOworICAg
IHVpbnQzMl90IG9mZnNldEZyb21TUCA9IG1fY29kZS5mcmFtZVNpemUoKSArIGNhbGxlclN0YWNr
U2l6ZSAtIGNhbGxlZVN0YWNrU2l6ZTsKKyAgICBHUFJSZWcgc2NyYXRjaCA9IHdhc21DYWxsaW5n
Q29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMV07CisKKyNpZiBDUFUoWDg2XzY0KQor
ICAgIGppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0
ZXIpKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lz
dGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKSwgc2NyYXRjaCk7CisjZWxpZiBD
UFUoQVJNNjQpIHx8IENQVShBUFBMRV9BUk1WN1MpIHx8IENQVShSSVNDVjY0KQorICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSksIGppdC5saW5rUmVnaXN0ZXIp
OworI2Vsc2UKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyNlbmRpZgorCisgICAg
aml0LmVtaXRSZXN0b3JlKG1fY29kZS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7
CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpm
cmFtZVBvaW50ZXJSZWdpc3RlciksIE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rl
cik7CisKKyAgICB1aW50MzJfdCBvZmZzZXQgPSBjYWxsZWVTdGFja1NpemUgKyBzaXplb2YoUmVn
aXN0ZXIpOworICAgIHdoaWxlIChvZmZzZXQpIHsKKyAgICAgICAgb2Zmc2V0IC09IHNpemVvZihS
ZWdpc3Rlcik7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6QWRkcmVzcyhNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIG9mZnNldCksIENDYWxsSGVscGVyczo6QWRk
cmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIG9mZnNldEZyb21TUCAr
IG9mZnNldCksIHNjcmF0Y2gpOworICAgIH0KKyAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIob2Zmc2V0RnJvbVNQKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKK30KKworYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbEluZGly
ZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUs
IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBh
cnRpYWxSZXN1bHQKK3sKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVJbmRleCA9IGFyZ3MudGFr
ZUxhc3QoKTsKKyAgICBBU1NFUlQoc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5h
cmd1bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOworICAgIEFTU0VSVChtX2luZm8udGFibGVD
b3VudCgpID4gdGFibGVJbmRleCk7CisgICAgQVNTRVJUKG1faW5mby50YWJsZXNbdGFibGVJbmRl
eF0udHlwZSgpID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOworCisgICAgbV9tYWtlc0Nh
bGxzID0gdHJ1ZTsKKyAgICAvLyBOb3RlOiBjYWxsIGluZGlyZWN0IGNhbiBjYWxsIGVpdGhlciBX
ZWJBc3NlbWJseUZ1bmN0aW9uIG9yIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLiBCZWNhdXNl
CisgICAgLy8gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24gaXMgbGlrZSBjYWxsaW5nIGludG8g
dGhlIGVtYmVkZGVyLCB3ZSBjb25zZXJ2YXRpdmVseSBhc3N1bWUgYWxsIGNhbGwgaW5kaXJlY3Rz
CisgICAgLy8gY2FuIGJlIHRvIHRoZSBlbWJlZGRlciBmb3Igb3VyIHN0YWNrIGNoZWNrIGNhbGN1
bGF0aW9uLgorICAgIG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzID0gc3RkOjptYXgobV9tYXhOdW1K
U0NhbGxBcmd1bWVudHMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihhcmdzLnNpemUoKSkpOworCisg
ICAgRXhwcmVzc2lvblR5cGUgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlciA9IGc2NCgpOworICAgIEV4
cHJlc3Npb25UeXBlIGluc3RhbmNlc0J1ZmZlciA9IGc2NCgpOworICAgIEV4cHJlc3Npb25UeXBl
IGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGggPSBnNjQoKTsKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZG
dW5jdGlvbnMoKSwgQjM6OldpZHRoNjQpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoQXJnOjpp
c1ZhbGlkQWRkckZvcm0oRnVuY1JlZlRhYmxlOjpvZmZzZXRPZkluc3RhbmNlcygpLCBCMzo6V2lk
dGg2NCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShGdW5j
UmVmVGFibGU6Om9mZnNldE9mTGVuZ3RoKCksIEIzOjpXaWR0aDY0KSk7CisKKyAgICAgICAgaWYg
KFVOTElLRUxZKCFBcmc6OmlzVmFsaWRBZGRyRm9ybShJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0
cihtX251bUltcG9ydEZ1bmN0aW9ucywgdGFibGVJbmRleCksIEIzOjpXaWR0aDY0KSkpIHsKKyAg
ICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbShJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJs
ZVB0cihtX251bUltcG9ydEZ1bmN0aW9ucywgdGFibGVJbmRleCkpLCBjYWxsYWJsZUZ1bmN0aW9u
QnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgICAgIGFwcGVuZChBZGQ2NCwgaW5zdGFuY2VWYWx1ZSgp
LCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgICAgIGFwcGVuZChNb3Zl
LCBBcmc6OmFkZHIoY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCksIGNhbGxhYmxlRnVuY3Rp
b25CdWZmZXJMZW5ndGgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZChNb3Zl
LCBBcmc6OmFkZHIoaW5zdGFuY2VWYWx1ZSgpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZVB0ciht
X251bUltcG9ydEZ1bmN0aW9ucywgdGFibGVJbmRleCkpLCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVy
TGVuZ3RoKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9u
QnVmZmVyTGVuZ3RoLCBGdW5jUmVmVGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCkpLCBjYWxsYWJs
ZUZ1bmN0aW9uQnVmZmVyKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsYWJs
ZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBGdW5jUmVmVGFibGU6Om9mZnNldE9mSW5zdGFuY2VzKCkp
LCBpbnN0YW5jZXNCdWZmZXIpOworICAgICAgICBhcHBlbmQoTW92ZTMyLCBBcmc6OmFkZHIoY2Fs
bGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCwgVGFibGU6Om9mZnNldE9mTGVuZ3RoKCkpLCBjYWxs
YWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKTsKKyAgICB9CisKKyAgICBhcHBlbmQoTW92ZTMyLCBj
YWxsZWVJbmRleCwgY2FsbGVlSW5kZXgpOworCisgICAgLy8gQ2hlY2sgdGhlIGluZGV4IHdlIGFy
ZSBsb29raW5nIGZvciBpcyB2YWxpZC4KKyAgICBlbWl0Q2hlY2soWyZdIHsKKyAgICAgICAgcmV0
dXJuIEluc3QoQnJhbmNoMzIsIG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsKSwgY2FsbGVlSW5kZXgsIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgp
OworICAgICAgICB9LCBbPSwgdGhpc10oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICB0aGlzLT5lbWl0VGhyb3dFeGNl
cHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc0NhbGxJbmRpcmVjdCk7CisgICAg
ICAgIH0pOworCisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSA9IGc2NCgpOworICAgIHsK
KyAgICAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlU2lnbmF0dXJlSW5kZXggPSBnNjQoKTsKKyAg
ICAgICAgLy8gQ29tcHV0ZSB0aGUgb2Zmc2V0IGluIHRoZSB0YWJsZSBpbmRleCBzcGFjZSB3ZSBh
cmUgbG9va2luZyBmb3IuCisgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmltbShzaXplb2YoV2Fz
bVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbikpLCBjYWxsZWVTaWduYXR1cmVJbmRleCk7CisgICAg
ICAgIGFwcGVuZChNdWw2NCwgY2FsbGVlSW5kZXgsIGNhbGxlZVNpZ25hdHVyZUluZGV4KTsKKyAg
ICAgICAgYXBwZW5kKEFkZDY0LCBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyLCBjYWxsZWVTaWduYXR1
cmVJbmRleCk7CisKKyAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsZWVTaWduYXR1
cmVJbmRleCwgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZFbnRyeXBvaW50
TG9hZExvY2F0aW9uKCkpLCBjYWxsZWVDb2RlKTsgLy8gUG9pbnRlciB0byBjYWxsZWUgY29kZS4K
KworICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9u
IGlzIGluaXRpYWxpemVkLiBXZSB0cmFwIGlmIGl0IGlzbid0LiBBbiAiaW52YWxpZCIgU2lnbmF0
dXJlSW5kZXggaW5kaWNhdGVzIGl0J3Mgbm90IGluaXRpYWxpemVkLgorICAgICAgICAvLyBGSVhN
RTogd2hlbiB3ZSBoYXZlIHRyYXAgaGFuZGxlcnMsIHdlIGNhbiBqdXN0IGxldCB0aGUgY2FsbCBm
YWlsIGJlY2F1c2UgU2lnbmF0dXJlOjppbnZhbGlkSW5kZXggaXMgMC4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzIxMAorICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjp0eXBlSW5kZXgpID09IHNpemVvZih1
aW50NjRfdCksICJMb2FkIGNvZGVnZW4gYXNzdW1lcyBpNjQiKTsKKworICAgICAgICAvLyBGSVhN
RTogVGhpcyBzZWVtcyB3YXN0ZWZ1bCB0byBkbyB0d28gY2hlY2tzIGp1c3QgZm9yIGEgbmljZXIg
ZXJyb3IgbWVzc2FnZS4KKyAgICAgICAgLy8gV2Ugc2hvdWxkIG1vdmUganVzdCB0byB1c2UgYSBz
aW5nbGUgYnJhbmNoIGFuZCB0aGVuIGZpZ3VyZSBvdXQgd2hhdAorICAgICAgICAvLyBlcnJvciB0
byB1c2UgaW4gdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLgorCisgICAgICAgIGFwcGVuZChNb3ZlLCBB
cmc6OmFkZHIoY2FsbGVlU2lnbmF0dXJlSW5kZXgsIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rp
b246Om9mZnNldE9mU2lnbmF0dXJlSW5kZXgoKSksIGNhbGxlZVNpZ25hdHVyZUluZGV4KTsKKwor
ICAgICAgICBlbWl0Q2hlY2soWyZdIHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoIVR5cGVE
ZWZpbml0aW9uOjppbnZhbGlkSW5kZXgsICIiKTsKKyAgICAgICAgICAgIHJldHVybiBJbnN0KEJy
YW5jaFRlc3Q2NCwgbnVsbHB0ciwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwg
Y2FsbGVlU2lnbmF0dXJlSW5kZXgsIGNhbGxlZVNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgfSwg
Wz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsKKyAgICAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2VwdGlvbihqaXQsIEV4
Y2VwdGlvblR5cGU6Ok51bGxUYWJsZUVudHJ5KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgRXhw
cmVzc2lvblR5cGUgZXhwZWN0ZWRTaWduYXR1cmVJbmRleCA9IGc2NCgpOworICAgICAgICBhcHBl
bmQoTW92ZSwgQXJnOjpiaWdJbW0oVHlwZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlKSksIGV4
cGVjdGVkU2lnbmF0dXJlSW5kZXgpOworICAgICAgICBlbWl0Q2hlY2soWyZdIHsKKyAgICAgICAg
ICAgIHJldHVybiBJbnN0KEJyYW5jaDY0LCBudWxscHRyLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsKSwgY2FsbGVlU2lnbmF0dXJlSW5kZXgsIGV4cGVjdGVkU2lnbmF0dXJl
SW5kZXgpOworICAgICAgICB9LCBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBC
Mzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgdGhpcy0+ZW1pdFRo
cm93RXhjZXB0aW9uKGppdCwgRXhjZXB0aW9uVHlwZTo6QmFkU2lnbmF0dXJlKTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgYXV0byBjYWxsZWVJbnN0YW5jZSA9IGc2NCgpOworICAgIGFwcGVu
ZChNb3ZlLCBBcmc6OmluZGV4KGluc3RhbmNlc0J1ZmZlciwgY2FsbGVlSW5kZXgsIDgsIDApLCBj
YWxsZWVJbnN0YW5jZSk7CisKKyAgICByZXR1cm4gZW1pdFJldHVybkNhbGxJbmRpcmVjdChjYWxs
ZWVJbnN0YW5jZSwgY2FsbGVlQ29kZSwgc2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKTsKK30KKwog
YXV0byBBaXJJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0Q2FsbChUeXBlZFRtcCBjYWxsZWVJbnN0
YW5jZSwgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSwgY29uc3QgVHlwZURlZmluaXRpb24mIHNp
Z25hdHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYg
cmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAogewogICAgIGF1dG8gY3VycmVudEluc3RhbmNlID0g
ZzY0KCk7CkBAIC0zOTMxLDYgKzQxNTQsOTMgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6ZW1pdElu
ZGlyZWN0Q2FsbChUeXBlZFRtcCBjYWxsZWVJbnN0YW5jZSwgRXhwcmVzc2lvblR5cGUgY2EKICAg
ICByZXR1cm4geyB9OwogfQogCithdXRvIEFpcklSR2VuZXJhdG9yOjplbWl0UmV0dXJuQ2FsbElu
ZGlyZWN0KFR5cGVkVG1wIGNhbGxlZUluc3RhbmNlLCBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2Rl
LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7Cisg
ICAgYXV0byBjdXJyZW50SW5zdGFuY2UgPSBnNjQoKTsKKyAgICBhcHBlbmQoTW92ZSwgaW5zdGFu
Y2VWYWx1ZSgpLCBjdXJyZW50SW5zdGFuY2UpOworCisgICAgY29uc3QgVHlwZUluZGV4IGNhbGxl
clR5cGVJbmRleCA9IG1faW5mby5pbnRlcm5hbEZ1bmN0aW9uVHlwZUluZGljZXNbbV9mdW5jdGlv
bkluZGV4XTsKKyAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgY2FsbGVyVHlwZURlZmluaXRpb24g
PSBUeXBlSW5mb3JtYXRpb246OmdldChjYWxsZXJUeXBlSW5kZXgpOworICAgIGNvbnN0IGF1dG8m
IGNhbGxpbmdDb252ZW50aW9uID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCk7CisgICAgQ2FsbElu
Zm9ybWF0aW9uIHdhc21DYWxsZXJJbmZvID0gY2FsbGluZ0NvbnZlbnRpb24uY2FsbEluZm9ybWF0
aW9uRm9yKGNhbGxlclR5cGVEZWZpbml0aW9uLCBDYWxsUm9sZTo6Q2FsbGVlKTsKKyAgICBDYWxs
SW5mb3JtYXRpb24gd2FzbUNhbGxlZUluZm8gPSBjYWxsaW5nQ29udmVudGlvbi5jYWxsSW5mb3Jt
YXRpb25Gb3Ioc2lnbmF0dXJlLCBDYWxsUm9sZTo6Q2FsbGVyKTsKKworICAgIC8vIERvIGEgY29u
dGV4dCBzd2l0Y2ggaWYgbmVlZGVkLgorICAgIHsKKyAgICAgICAgQmFzaWNCbG9jayogZG9Db250
ZXh0U3dpdGNoID0gbV9jb2RlLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRp
bnVhdGlvbiA9IG1fY29kZS5hZGRCbG9jaygpOworCisgICAgICAgIGFwcGVuZChCcmFuY2g2NCwg
QXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCksIGNhbGxlZUluc3RhbmNlLCBjdXJy
ZW50SW5zdGFuY2UpOworICAgICAgICBtX2N1cnJlbnRCbG9jay0+c2V0U3VjY2Vzc29ycyhjb250
aW51YXRpb24sIGRvQ29udGV4dFN3aXRjaCk7CisKKyAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9
IGFkZFBhdGNocG9pbnQoQjM6OlZvaWQpOworICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndy
aXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUg
d2UncmUgY2FsbGluZyBzb21ldGhpbmcgd2l0aCBCb3VuZHNDaGVja2luZyBtZW1vcnkuCisgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlzOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRz
Q2hlY2tpbmcpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hS
ZWdpc3RlcnMgPSAxOworCisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOworICAgICAgICAgICAgR1BSUmVnIGNhbGxlZUluc3RhbmNlID0gcGFyYW1zWzBd
LmdwcigpOworICAgICAgICAgICAgR1BSUmVnIG9sZENvbnRleHRJbnN0YW5jZSA9IHBhcmFtc1sx
XS5ncHIoKTsKKyAgICAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVn
cyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZU1l
bW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgICAgICAgICBBU1NFUlQo
Y2FsbGVlSW5zdGFuY2UgIT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Mob2xkQ29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRTdGFja0xpbWl0KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAgICAgICAgIGppdC5zdG9y
ZVB0cihiYXNlTWVtb3J5LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlSW5zdGFuY2UsIElu
c3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQoKSkpOworICAgICAgICAgICAgaml0LnN0
b3JlV2FzbUNvbnRleHRJbnN0YW5jZShjYWxsZWVJbnN0YW5jZSk7CisgICAgICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3Rl
cgorICAgICAgICAgICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjI5NTIKKyAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNr
aW5nU2l6ZVJlZ2lzdGVyICE9IGNhbGxlZUluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKworICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZD
YWNoZWRCb3VuZHNDaGVja2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXpl
UmVnaXN0ZXIpOyAvLyBCb3VuZCBjaGVja2luZyBzaXplLgorICAgICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOyAvLyBNZW1vcnk6OnZvaWQqLgorCisgICAg
ICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZl
LCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3Jh
dGNoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZW1pdFBhdGNocG9pbnQoZG9Db250ZXh0U3dp
dGNoLCBwYXRjaHBvaW50LCBUbXAoKSwgY2FsbGVlSW5zdGFuY2UsIGN1cnJlbnRJbnN0YW5jZSk7
CisgICAgICAgIGFwcGVuZChkb0NvbnRleHRTd2l0Y2gsIEp1bXApOworICAgICAgICBkb0NvbnRl
eHRTd2l0Y2gtPnNldFN1Y2Nlc3NvcnMoY29udGludWF0aW9uKTsKKworICAgICAgICBtX2N1cnJl
bnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKKyAgICB9CisKKyAgICBhcHBlbmQoTW92ZSwgQXJnOjph
ZGRyKGNhbGxlZUNvZGUpLCBjYWxsZWVDb2RlKTsKKworICAgIFZlY3RvcjxDb25zdHJhaW5lZFRt
cD4gZXh0cmFBcmdzOworICAgIGV4dHJhQXJncy5hcHBlbmQoY2FsbGVlQ29kZSk7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigp
LT5yZXR1cm5Db3VudCgpOyArK2kpCisgICAgICAgIHJlc3VsdHMuYXBwZW5kKHRtcEZvclR5cGUo
c2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5yZXR1cm5UeXBlKGkpKSk7CisKKyAg
ICBhdXRvIHBhaXIgPSBlbWl0Q2FsbFBhdGNocG9pbnQobV9jdXJyZW50QmxvY2ssIHNpZ25hdHVy
ZSwgcmVzdWx0cywgYXJncywgV1RGTW92ZShleHRyYUFyZ3MpKTsKKyAgICBhdXRvKiBwYXRjaHBv
aW50ID0gcGFpci5maXJzdDsKKyAgICBhdXRvIGV4Y2VwdGlvbkhhbmRsZSA9IHBhaXIuc2Vjb25k
OworCisgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlubmVkIHJlZ2lz
dGVycyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5jZS4KKyAgICAvLyBXZSBw
ZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGFsd2F5cyBjYWxsaW5nIHNvbWV0aGluZyB0aGF0
IGlzIGJvdW5kcyBjaGVja2luZyBzbworICAgIC8vIGJlY2F1c2UgdGhlIHdhc20tPndhc20gdGh1
bmsgdW5jb25kaXRpb25hbGx5IG92ZXJyaWRlcyB0aGUgc2l6ZSByZWdpc3RlcnMuCisgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBub3QgaGF2ZSB0byBkbyB0aGlzLCBidXQgdGhlIHdhc20tPndhc20g
c3R1YiBhc3N1bWVzIGl0IGNhbgorICAgIC8vIHVzZSBhbGwgdGhlIHBpbm5lZCByZWdpc3RlcnMg
YXMgc2NyYXRjaDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4
MQorCisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQo
KS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKworICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcihbPSwgdGhpc10oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgIEdQUlJlZyBjYWxsZWVH
UFIgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzBdOworICAg
ICAgICBqaXQubW92ZShwYXJhbXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChwYXJhbXMudmFs
dWUoKS0+dHlwZSgpKV0uZ3ByKCksIGNhbGxlZUdQUik7CisgICAgICAgIHByZXBhcmVGb3JSZXR1
cm5DYWxsKGppdCwgd2FzbUNhbGxlckluZm8sIHdhc21DYWxsZWVJbmZvKTsKKyAgICAgICAgZXhj
ZXB0aW9uSGFuZGxlLmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKKyAgICAgICAgaml0LmZh
ckp1bXAoY2FsbGVlR1BSLCBXYXNtRW50cnlQdHJUYWcpOworICAgIH0pOworCisgICAgcmV0dXJu
IHsgfTsKK30KKwogdm9pZCBBaXJJUkdlbmVyYXRvcjo6dW5pZnkoY29uc3QgRXhwcmVzc2lvblR5
cGUgZHN0LCBjb25zdCBFeHByZXNzaW9uVHlwZSBzb3VyY2UpCiB7CiAgICAgQVNTRVJUKGlzU3Vi
dHlwZShzb3VyY2UudHlwZSgpLCBkc3QudHlwZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggZjdlNzA4NGEzZjZmMDc3N2Fh
ZTA5ZTAwNmYyYTllYjJmYTk1YjMwMS4uYTc5MWJlNDY3YzExOGY1NTk0MWE3NjNjYjkzNmNhYmIy
ZDI4YTE5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcApAQCAtMzk1LDkgKzM5NSwxMyBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3Qg
VHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0
JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxs
SW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFR5cGVEZWZpbml0
aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7
CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuQ2FsbCh1aW50
MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5DYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRl
eCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBS
ZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRVbnJlYWNoYWJsZSgpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGVtaXRJbmRpcmVjdENhbGwoVmFsdWUqIGNhbGxlZUluc3RhbmNlLCBWYWx1ZSogY2FsbGVlQ29k
ZSwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBS
ZXN1bHRMaXN0Jik7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdFJl
dHVybkNhbGxJbmRpcmVjdChWYWx1ZSogY2FsbGVlSW5zdGFuY2UsIFZhbHVlKiBjYWxsZWVDb2Rl
LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJl
c3VsdExpc3QmKTsKICAgICBCMzo6VmFsdWUqIGNyZWF0ZUNhbGxQYXRjaHBvaW50KEJhc2ljQmxv
Y2sqLCBPcmlnaW4sIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBl
PiYgYXJncywgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94PFBh
dGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4mIHBhdGNocG9pbnRGdW5jdG9yKTsKKyAgICB2b2lk
IHByZXBhcmVGb3JSZXR1cm5DYWxsKENDYWxsSGVscGVycyYsIGNvbnN0IENhbGxJbmZvcm1hdGlv
biYsIGNvbnN0IENhbGxJbmZvcm1hdGlvbiYpOwogCiAgICAgdm9pZCBkdW1wKGNvbnN0IENvbnRy
b2xTdGFjayYsIGNvbnN0IFN0YWNrKiBleHByZXNzaW9uU3RhY2spOwogICAgIHZvaWQgc2V0UGFy
c2VyKEZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+KiBwYXJzZXIpIHsgbV9wYXJzZXIgPSBw
YXJzZXI7IH07CkBAIC0xMjEyLDYgKzEyMTYsMTAxIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6ZW1p
dEluZGlyZWN0Q2FsbChWYWx1ZSogY2FsbGVlSW5zdGFuY2UsIFZhbHVlKiBjYWxsZWVDb2RlLCBj
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBCM0lSR2VuZXJhdG9yOjplbWl0UmV0dXJuQ2Fs
bEluZGlyZWN0KFZhbHVlKiBjYWxsZWVJbnN0YW5jZSwgVmFsdWUqIGNhbGxlZUNvZGUsIGNvbnN0
IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBjb25zdCBUeXBl
SW5kZXggY2FsbGVyVHlwZUluZGV4ID0gbV9pbmZvLmludGVybmFsRnVuY3Rpb25UeXBlSW5kaWNl
c1ttX2Z1bmN0aW9uSW5kZXhdOworICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBjYWxsZXJUeXBl
RGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlclR5cGVJbmRleCk7CisgICAg
Y29uc3QgYXV0byYgY2FsbGluZ0NvbnZlbnRpb24gPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsK
KyAgICBDYWxsSW5mb3JtYXRpb24gd2FzbUNhbGxlckluZm8gPSBjYWxsaW5nQ29udmVudGlvbi5j
YWxsSW5mb3JtYXRpb25Gb3IoY2FsbGVyVHlwZURlZmluaXRpb24sIENhbGxSb2xlOjpDYWxsZWUp
OworICAgIENhbGxJbmZvcm1hdGlvbiB3YXNtQ2FsbGVlSW5mbyA9IGNhbGxpbmdDb252ZW50aW9u
LmNhbGxJbmZvcm1hdGlvbkZvcihzaWduYXR1cmUsIENhbGxSb2xlOjpDYWxsZXIpOworCisgICAg
Ly8gRG8gYSBjb250ZXh0IHN3aXRjaCBpZiBuZWVkZWQuCisgICAgeworICAgICAgICBCYXNpY0Js
b2NrKiBjb250aW51YXRpb24gPSBtX3Byb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9j
ayogZG9Db250ZXh0U3dpdGNoID0gbV9wcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUq
IGlzU2FtZUNvbnRleHRJbnN0YW5jZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLAorICAgICAgICAgICAgY2FsbGVlSW5zdGFuY2UsIGlu
c3RhbmNlVmFsdWUoKSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXdDb250cm9s
VmFsdWUobV9wcm9jLCBCMzo6QnJhbmNoLCBvcmlnaW4oKSwKKyAgICAgICAgICAgIGlzU2FtZUNv
bnRleHRJbnN0YW5jZSwgRnJlcXVlbnRlZEJsb2NrKGNvbnRpbnVhdGlvbiksIEZyZXF1ZW50ZWRC
bG9jayhkb0NvbnRleHRTd2l0Y2gpKTsKKworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSBkb0NvbnRleHRTd2l0Y2gtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJv
YywgQjM6OlZvaWQsIG9yaWdpbigpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0
ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdl
J3JlIGNhbGxpbmcgc29tZXRoaW5nIHdpdGggQm91bmRzQ2hlY2tpbmcgbWVtb3J5LgorICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAgICAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0No
ZWNraW5nKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNhbGxlZUlu
c3RhbmNlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKGluc3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgIHBh
dGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisKKyAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBHUFJSZWcgY2Fs
bGVlSW5zdGFuY2UgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgb2xkQ29u
dGV4dEluc3RhbmNlID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAgY29uc3QgUGlubmVk
UmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRl
cjsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsZWVJbnN0YW5jZSAhPSBiYXNlTWVtb3J5KTsKKyAg
ICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhvbGRDb250ZXh0SW5z
dGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQoKSksIGJhc2VNZW1vcnkp
OworICAgICAgICAgICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnksIENDYWxsSGVscGVyczo6QWRk
cmVzcyhjYWxsZWVJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgp
KSk7CisgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKGNhbGxlZUluc3Rh
bmNlKTsKKyAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJl
Z2lzdGVyICE9IGJhc2VNZW1vcnkpOworICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBz
dXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIKKyAgICAgICAgICAgIC8v
ICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCisg
ICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAh
PSBjYWxsZWVJbnN0YW5jZSk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5n
cFNjcmF0Y2goMCk7CisKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhjYWxsZWVJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tp
bmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsgLy8gTWVt
b3J5IHNpemUuCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Y2FsbGVlSW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1l
bW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCisKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9u
YWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5lZFJlZ3Mu
Ym91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIsIHNjcmF0Y2gpOworICAgICAgICB9KTsKKyAgICAg
ICAgZG9Db250ZXh0U3dpdGNoLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBv
cmlnaW4oKSwgY29udGludWF0aW9uKTsKKworICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRp
bnVhdGlvbjsKKyAgICB9CisKKyAgICBCMzo6VHlwZSByZXR1cm5UeXBlID0gdG9CM1Jlc3VsdFR5
cGUoJnNpZ25hdHVyZSk7CisgICAgVmFsdWUqIGNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hw
b2ludChtX2N1cnJlbnRCbG9jaywgb3JpZ2luKCksIHNpZ25hdHVyZSwgYXJncywKKyAgICAgICAg
c2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNl
cHRpb25IYW5kbGU+KT4oWz0sIHRoaXNdKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCwgQm94
PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGhhbmRsZSkgLT4gdm9pZCB7CisgICAgICAgICAg
ICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICBw
YXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIFdl
IG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2Ug
bWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCisgICAgICAgICAgICAvLyBXZSBwZXNzaW1p
c3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGFsd2F5cyBjYWxsaW5nIHNvbWV0aGluZyB0aGF0IGlzIGJv
dW5kcyBjaGVja2luZyBzbworICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgd2FzbS0+d2FzbSB0
aHVuayB1bmNvbmRpdGlvbmFsbHkgb3ZlcnJpZGVzIHRoZSBzaXplIHJlZ2lzdGVycy4KKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGhhdmUgdG8gZG8gdGhpcywgYnV0IHRoZSB3
YXNtLT53YXNtIHN0dWIgYXNzdW1lcyBpdCBjYW4KKyAgICAgICAgICAgIC8vIHVzZSBhbGwgdGhl
IHBpbm5lZCByZWdpc3RlcnMgYXMgc2NyYXRjaDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MjE4MQorICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUo
UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tp
bmcpKTsKKworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNhbGxlZUNvZGUsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9LCB0aGlzXShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgICAgIEdQUlJlZyBjYWxs
ZWVHUFIgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzBdOwor
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1twYXJhbXMucHJvYygpLnJlc3VsdENvdW50
KHJldHVyblR5cGUpXS5ncHIoKSwgY2FsbGVlR1BSKTsKKyAgICAgICAgICAgICAgICBwcmVwYXJl
Rm9yUmV0dXJuQ2FsbChqaXQsIHdhc21DYWxsZXJJbmZvLCB3YXNtQ2FsbGVlSW5mbyk7CisgICAg
ICAgICAgICAgICAgaGFuZGxlLT5nZW5lcmF0ZShqaXQsIHBhcmFtcywgdGhpcyk7CisgICAgICAg
ICAgICAgICAgaml0LmZhckp1bXAoY2FsbGVlR1BSLCBXYXNtRW50cnlQdHJUYWcpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pKTsKKworICAgIHN3aXRjaCAocmV0dXJuVHlwZS5raW5kKCkp
IHsKKyAgICBjYXNlIEIzOjpWb2lkOiB7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IEIzOjpUdXBsZTogeworICAgICAgICBjb25zdCBWZWN0b3I8QjM6OlR5cGU+JiB0dXBsZSA9IG1f
cHJvYy50dXBsZUZvclR5cGUocmV0dXJuVHlwZSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPnJldHVybkNvdW50KCk7
ICsraSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHB1c2gobV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxFeHRyYWN0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHR1cGxlW2ldLCBjYWxsUmVz
dWx0LCBpKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAg
ICByZXN1bHRzLmFwcGVuZChwdXNoKGNhbGxSZXN1bHQpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIH0KKyAgICByZXR1cm4geyB9OworfQorCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdy
b3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1bHQgPSBwdXNoKG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQzMiwgb3JpZ2luKCksCkBAIC0zMDAzLDggKzMx
MDIsNiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRl
eCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdAogICAgICAgICAgICAgZmlsbFJlc3VsdHMo
cGhpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0
byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlm
aWVkIG91ciBNZW1vcnkuCi0gICAgICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJl
c3RvcmVDYWNoZWRTdGFja0xpbWl0OjpZZXMsIG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUo
KSwgbV9wcm9jLCBjb250aW51YXRpb24pOwogICAgIH0gZWxzZSB7CiAKICAgICAgICAgVmFsdWUq
IHBhdGNoID0gY3JlYXRlQ2FsbFBhdGNocG9pbnQobV9jdXJyZW50QmxvY2ssIG9yaWdpbigpLCBz
aWduYXR1cmUsIGFyZ3MsCkBAIC0zMDI2LDYgKzMxMjMsOCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNp
Z25hdAogICAgICAgICAgICAgfSkpOwogICAgICAgICBmaWxsUmVzdWx0cyhwYXRjaCk7CiAgICAg
fQorICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5
IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCisgICAg
cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6Olll
cywgbV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1ZSgpLCBtX3Byb2MsIG1fY3VycmVudEJsb2Nr
KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0zMTQ3LDYgKzMyNDYsMjQ0IEBAIGF1dG8gQjNJ
UkdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBW
ZWN0b3I8RXhwcmVzc2lvCiAgICAgcmV0dXJuIGVtaXRJbmRpcmVjdENhbGwoY2FsbGVlSW5zdGFu
Y2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwgYXJncywgcmVzdWx0cyk7CiB9CiAKK2F1dG8gQjNJ
UkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBU
eXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBS
ZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgQVNTRVJUKHNpZ25h
dHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6
ZSgpKTsKKworICAgIGNvbnN0IFR5cGVJbmRleCBjYWxsZXJUeXBlSW5kZXggPSBtX2luZm8uaW50
ZXJuYWxGdW5jdGlvblR5cGVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07CisgICAgY29uc3QgVHlw
ZURlZmluaXRpb24mIGNhbGxlclR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQo
Y2FsbGVyVHlwZUluZGV4KTsKKyAgICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdh
c21DYWxsaW5nQ29udmVudGlvbigpOworICAgIENhbGxJbmZvcm1hdGlvbiB3YXNtQ2FsbGVySW5m
byA9IGNhbGxpbmdDb252ZW50aW9uLmNhbGxJbmZvcm1hdGlvbkZvcihjYWxsZXJUeXBlRGVmaW5p
dGlvbiwgQ2FsbFJvbGU6OkNhbGxlZSk7CisgICAgQ2FsbEluZm9ybWF0aW9uIHdhc21DYWxsZWVJ
bmZvID0gY2FsbGluZ0NvbnZlbnRpb24uY2FsbEluZm9ybWF0aW9uRm9yKHNpZ25hdHVyZSwgQ2Fs
bFJvbGU6OkNhbGxlcik7CisKKyAgICBtX21ha2VzQ2FsbHMgPSB0cnVlOworICAgIEIzOjpUeXBl
IHJldHVyblR5cGUgPSB0b0IzUmVzdWx0VHlwZSgmc2lnbmF0dXJlKTsKKworICAgIGF1dG8gZmls
bFJlc3VsdHMgPSBbJl0oVmFsdWUqIGNhbGxSZXN1bHQpIHsKKyAgICAgICAgQVNTRVJUKHJldHVy
blR5cGUgPT0gY2FsbFJlc3VsdC0+dHlwZSgpKTsKKworICAgICAgICBzd2l0Y2ggKHJldHVyblR5
cGUua2luZCgpKSB7CisgICAgICAgIGNhc2UgQjM6OlZvaWQ6IHsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgQjM6OlR1cGxlOiB7CisgICAgICAgICAgICBjb25z
dCBWZWN0b3I8QjM6OlR5cGU+JiB0dXBsZSA9IG1fcHJvYy50dXBsZUZvclR5cGUocmV0dXJuVHlw
ZSk7CisgICAgICAgICAgICBBU1NFUlQoc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigp
LT5yZXR1cm5Db3VudCgpID09IHR1cGxlLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5yZXR1cm5D
b3VudCgpOyArK2kpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocHVzaChtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PEV4dHJhY3RWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdHVwbGVb
aV0sIGNhbGxSZXN1bHQsIGkpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChwdXNoKGNhbGxSZXN1
bHQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+KiB1bmxpbmtlZFdhc21Ub1dhc21D
YWxscyA9ICZtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzOworCisgICAgaWYgKG1faW5mby5pc0lt
cG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpKSB7Cisg
ICAgICAgIG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzID0gc3RkOjptYXgobV9tYXhOdW1KU0NhbGxB
cmd1bWVudHMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihhcmdzLnNpemUoKSkpOworCisgICAgICAg
IC8vIEZJWE1FOiBpbXBvcnRzIGNhbiBiZSBsaW5rZWQgaGVyZSwgaW5zdGVhZCBvZiBnZW5lcmF0
aW5nIGEgcGF0Y2hwb2ludCwgYmVjYXVzZSBhbGwgaW1wb3J0IHN0dWJzIGFyZSBnZW5lcmF0ZWQg
YmVmb3JlIEIzIGNvbXBpbGF0aW9uIHN0YXJ0cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NjQ2MgorICAgICAgICBWYWx1ZSogdGFyZ2V0SW5zdGFuY2UgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJU
eXBlKCksIG9yaWdpbigpLCBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3Rh
bmNlOjpvZmZzZXRPZlRhcmdldEluc3RhbmNlKGZ1bmN0aW9uSW5kZXgpKSk7CisgICAgICAgIC8v
IFRoZSB0YXJnZXQgaW5zdGFuY2UgaXMgMCB1bmxlc3MgdGhlIGNhbGwgaXMgd2FzbS0+d2FzbS4K
KyAgICAgICAgVmFsdWUqIGlzV2FzbUNhbGwgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIE5vdEVxdWFsLCBvcmlnaW4oKSwgdGFyZ2V0SW5zdGFuY2UsIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCAwKSk7CisK
KyAgICAgICAgQmFzaWNCbG9jayogaXNXYXNtQmxvY2sgPSBtX3Byb2MuYWRkQmxvY2soKTsKKyAg
ICAgICAgQmFzaWNCbG9jayogaXNFbWJlZGRlckJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IG1fcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgQjM6OkJy
YW5jaCwgb3JpZ2luKCksIGlzV2FzbUNhbGwsIEZyZXF1ZW50ZWRCbG9jayhpc1dhc21CbG9jayks
IEZyZXF1ZW50ZWRCbG9jayhpc0VtYmVkZGVyQmxvY2spKTsKKworICAgICAgICBWYWx1ZSogd2Fz
bUNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChpc1dhc21CbG9jaywgb3JpZ2luKCks
IHNpZ25hdHVyZSwgYXJncywKKyAgICAgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNo
cG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KFs9LCB0aGlzXShQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQsIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
PiBoYW5kbGUpIC0+IHZvaWQgeworICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMu
d3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3Rz
LnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb2Ji
ZXIgYWxsIHBvdGVudGlhbCBwaW5uZWQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxlYXZp
bmcgdGhlIGluc3RhbmNlLgorICAgICAgICAgICAgICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBh
c3N1bWUgd2UgY291bGQgYmUgY2FsbGluZyB0byBzb21ldGhpbmcgdGhhdCBpcyBib3VuZHMgY2hl
Y2tpbmcuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGRv
IHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEKKyAg
ICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86
OmdldCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOworICAgICAgICAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdGhpcywgaGFuZGxlLCB1bmxpbmtlZFdhc21U
b1dhc21DYWxscywgZnVuY3Rpb25JbmRleCwgd2FzbUNhbGxlckluZm8sIHdhc21DYWxsZWVJbmZv
XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CisgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgICAgICAgICAgcHJlcGFyZUZvclJl
dHVybkNhbGwoaml0LCB3YXNtQ2FsbGVySW5mbywgd2FzbUNhbGxlZUluZm8pOworICAgICAgICAg
ICAgICAgICAgICBoYW5kbGUtPmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKKyAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQudGhyZWFkU2FmZVBhdGNo
YWJsZU5lYXJUYWlsQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2so
W3VubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjYWxsLCBmdW5jdGlvbkluZGV4XShMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZFdhc21Ub1dh
c21DYWxscy0+YXBwZW5kKHsgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8V2FzbUVudHJ5
UHRyVGFnPihjYWxsKSwgZnVuY3Rpb25JbmRleCB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgIFVwc2lsb25W
YWx1ZSogd2FzbUNhbGxSZXN1bHRVcHNpbG9uID0gcmV0dXJuVHlwZSA9PSBCMzo6Vm9pZCA/IG51
bGxwdHIgOiBpc1dhc21CbG9jay0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4obV9wcm9jLCBvcmln
aW4oKSwgd2FzbUNhbGxSZXN1bHQpOworICAgICAgICBpc1dhc21CbG9jay0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgLy8gRklYTUU6IExldCdzIHJlbW92ZSB0aGlzIGluZGlyZWN0aW9uIGJ5IGNyZWF0aW5nIGEg
UElDIGZyaWVuZGx5IElDCisgICAgICAgIC8vIGZvciBjYWxscyBvdXQgdG8gdGhlIGVtYmVkZGVy
LiBUaGlzIHNob3VsZG4ndCBiZSB0aGF0IGhhcmQgdG8gZG8uIFdlIGNvdWxkIHByb2JhYmx5Cisg
ICAgICAgIC8vIGltcGxlbWVudCB0aGUgSUMgdG8gYmUgb3ZlciBDb250ZXh0Ki4KKyAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDM3NQorICAgICAg
ICBWYWx1ZSoganVtcERlc3RpbmF0aW9uID0gaXNFbWJlZGRlckJsb2NrLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KG1fcHJvYywKKyAgICAgICAgICAgIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdp
bigpLCBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3RhbmNlOjpvZmZzZXRP
Zldhc21Ub0VtYmVkZGVyU3R1YihmdW5jdGlvbkluZGV4KSkpOworCisgICAgICAgIFZhbHVlKiBl
bWJlZGRlckNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChpc0VtYmVkZGVyQmxvY2ss
IG9yaWdpbigpLCBzaWduYXR1cmUsIGFyZ3MsCisgICAgICAgICAgICBzY29wZWRMYW1iZGFSZWY8
dm9pZChQYXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4pPihb
PSwgdGhpc10oUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZT4gaGFuZGxlKSAtPiB2b2lkIHsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50
LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKGp1bXBEZXN0aW5hdGlvbiwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAg
ICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlubmVkIHJl
Z2lzdGVycyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5jZS4KKyAgICAgICAg
ICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlIGNvdWxkIGJlIGNhbGxpbmcg
dG8gc29tZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5nLgorICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlzOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6
Qm91bmRzQ2hlY2tpbmcpKTsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoW3RoaXMsIGhhbmRsZSwgcmV0dXJuVHlwZV0oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAg
ICAgICAgICAgICAgICAgIGhhbmRsZS0+Z2VuZXJhdGUoaml0LCBwYXJhbXMsIHRoaXMpOworICAg
ICAgICAgICAgICAgICAgICBqaXQuY2FsbChwYXJhbXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3Vu
dChyZXR1cm5UeXBlKV0uZ3ByKCksIFdhc21FbnRyeVB0clRhZyk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgIFVwc2lsb25WYWx1ZSogZW1iZWRkZXJDYWxs
UmVzdWx0VXBzaWxvbiA9IHJldHVyblR5cGUgPT0gQjM6OlZvaWQgPyBudWxscHRyIDogaXNFbWJl
ZGRlckJsb2NrLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBlbWJl
ZGRlckNhbGxSZXN1bHQpOworICAgICAgICBpc0VtYmVkZGVyQmxvY2stPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShtX3Byb2MsIEp1bXAsIG9yaWdpbigpLCBjb250aW51YXRpb24pOworCisgICAgICAg
IG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworCisgICAgICAgIGlmIChyZXR1cm5UeXBl
ICE9IEIzOjpWb2lkKSB7CisgICAgICAgICAgICBWYWx1ZSogcGhpID0gY29udGludWF0aW9uLT5h
cHBlbmROZXc8VmFsdWU+KG1fcHJvYywgUGhpLCByZXR1cm5UeXBlLCBvcmlnaW4oKSk7CisgICAg
ICAgICAgICB3YXNtQ2FsbFJlc3VsdFVwc2lsb24tPnNldFBoaShwaGkpOworICAgICAgICAgICAg
ZW1iZWRkZXJDYWxsUmVzdWx0VXBzaWxvbi0+c2V0UGhpKHBoaSk7CisgICAgICAgICAgICBmaWxs
UmVzdWx0cyhwaGkpOworICAgICAgICB9CisKKyAgICB9IGVsc2UgeworCisgICAgICAgIFZhbHVl
KiBwYXRjaCA9IGNyZWF0ZUNhbGxQYXRjaHBvaW50KG1fY3VycmVudEJsb2NrLCBvcmlnaW4oKSwg
c2lnbmF0dXJlLCBhcmdzLAorICAgICAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0Y2hw
b2ludFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4oWz0sIHRoaXNdKFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+
IGhhbmRsZSkgLT4gdm9pZCB7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53
cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMu
cmVhZHNQaW5uZWQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9i
YmVyIHRoZSBzaXplIHJlZ2lzdGVyIHNpbmNlIHRoZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNr
cworICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gTWVtb3J5TW9kZTo6U2lnbmFsaW5nIHx8
IG1faW5mby5tZW1vcnkuaXNTaGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLmJv
dW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyIH0pOworICAgICAgICAgICAgICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcihbdGhpcywgaGFuZGxlLCB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgZnVu
Y3Rpb25JbmRleCwgd2FzbUNhbGxlckluZm8sIHdhc21DYWxsZWVJbmZvXShDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKKyAgICAgICAgICAgICAgICAgICAgcHJlcGFyZUZvclJldHVybkNhbGwoaml0LCB3
YXNtQ2FsbGVySW5mbywgd2FzbUNhbGxlZUluZm8pOworICAgICAgICAgICAgICAgICAgICBoYW5k
bGUtPmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQudGhyZWFkU2FmZVBhdGNoYWJsZU5lYXJUYWlsQ2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soW3VubGlua2VkV2FzbVRv
V2FzbUNhbGxzLCBjYWxsLCBmdW5jdGlvbkluZGV4XShMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZFdhc21Ub1dhc21DYWxscy0+YXBwZW5k
KHsgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8V2FzbUVudHJ5UHRyVGFnPihjYWxsKSwg
ZnVuY3Rpb25JbmRleCB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgIGZpbGxSZXN1bHRzKHBhdGNoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIEIzSVJHZW5lcmF0b3I6OnByZXBhcmVG
b3JSZXR1cm5DYWxsKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBDYWxsSW5mb3JtYXRpb24mIGNh
bGxlckluZm8sIGNvbnN0IENhbGxJbmZvcm1hdGlvbiYgY2FsbGVlSW5mbykKK3sKKyAgICB1aW50
MzJfdCBjYWxsZXJTdGFja1NpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGln
bm1lbnRCeXRlcygpLCBjYWxsZXJJbmZvLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRl
cyk7CisgICAgdWludDMyX3QgY2FsbGVlU3RhY2tTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgY2FsbGVlSW5mby5oZWFkZXJBbmRBcmd1bWVudFN0
YWNrU2l6ZUluQnl0ZXMpOworICAgIHVpbnQzMl90IG9mZnNldEZyb21TUCA9IG1fcHJvYy5mcmFt
ZVNpemUoKSArIGNhbGxlclN0YWNrU2l6ZSAtIGNhbGxlZVN0YWNrU2l6ZTsKKyAgICBHUFJSZWcg
c2NyYXRjaCA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMV07
CisjaWYgQ1BVKFg4Nl82NCkKKyAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVy
OjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciks
IHNjcmF0Y2gpOworI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVBQTEVfQVJNVjdTKSB8fCBDUFUo
UklTQ1Y2NCkKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3Nl
bWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkp
LCBqaXQubGlua1JlZ2lzdGVyKTsKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CisjZW5kaWYKKworICAgIGppdC5lbWl0UmVzdG9yZShtX3Byb2MuY2FsbGVlU2F2ZVJlZ2lz
dGVyQXRPZmZzZXRMaXN0KCkpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6
ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworCisgICAgdWludDMyX3Qgb2Zmc2V0ID0gY2FsbGVlU3Rh
Y2tTaXplICsgc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICB3aGlsZSAob2Zmc2V0KSB7CisgICAgICAg
IG9mZnNldCAtPSBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBvZmZzZXQp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBvZmZzZXRGcm9tU1AgKyBvZmZzZXQpLCBzY3JhdGNoKTsKKyAgICB9CisgICAgaml0LmFk
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG9mZnNldEZyb21TUCksIE1hY3JvQXNz
ZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cit9CisKK2F1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkUmV0dXJuQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZp
bml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExp
c3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBWYWx1ZSogY2FsbGVlSW5kZXgg
PSBnZXQoYXJncy50YWtlTGFzdCgpKTsKKyAgICBBU1NFUlQoc2lnbmF0dXJlLmFzPEZ1bmN0aW9u
U2lnbmF0dXJlPigpLT5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOworCisgICAgbV9t
YWtlc0NhbGxzID0gdHJ1ZTsKKyAgICAvLyBOb3RlOiBjYWxsIGluZGlyZWN0IGNhbiBjYWxsIGVp
dGhlciBXZWJBc3NlbWJseUZ1bmN0aW9uIG9yIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLiBC
ZWNhdXNlCisgICAgLy8gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24gaXMgbGlrZSBjYWxsaW5n
IGludG8gdGhlIGVtYmVkZGVyLCB3ZSBjb25zZXJ2YXRpdmVseSBhc3N1bWUgYWxsIGNhbGwgaW5k
aXJlY3RzCisgICAgLy8gY2FuIGJlIHRvIHRoZSBlbWJlZGRlciBmb3Igb3VyIHN0YWNrIGNoZWNr
IGNhbGN1bGF0aW9uLgorICAgIG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzID0gc3RkOjptYXgobV9t
YXhOdW1KU0NhbGxBcmd1bWVudHMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihhcmdzLnNpemUoKSkp
OworCisgICAgVmFsdWUqIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXI7CisgICAgVmFsdWUqIGluc3Rh
bmNlc0J1ZmZlcjsKKyAgICBWYWx1ZSogY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aDsKKyAg
ICB7CisgICAgICAgIFZhbHVlKiB0YWJsZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksCisgICAgICAg
ICAgICBpbnN0YW5jZVZhbHVlKCksIHNhZmVDYXN0PGludDMyX3Q+KEluc3RhbmNlOjpvZmZzZXRP
ZlRhYmxlUHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSkpOworICAgICAgICBj
YWxsYWJsZUZ1bmN0aW9uQnVmZmVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKKyAgICAgICAgICAg
IHRhYmxlLCBzYWZlQ2FzdDxpbnQzMl90PihGdW5jUmVmVGFibGU6Om9mZnNldE9mRnVuY3Rpb25z
KCkpKTsKKyAgICAgICAgaW5zdGFuY2VzQnVmZmVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKKyAg
ICAgICAgICAgIHRhYmxlLCBzYWZlQ2FzdDxpbnQzMl90PihGdW5jUmVmVGFibGU6Om9mZnNldE9m
SW5zdGFuY2VzKCkpKTsKKyAgICAgICAgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50MzIs
IG9yaWdpbigpLAorICAgICAgICAgICAgdGFibGUsIHNhZmVDYXN0PGludDMyX3Q+KFRhYmxlOjpv
ZmZzZXRPZkxlbmd0aCgpKSk7CisgICAgfQorCisgICAgLy8gQ2hlY2sgdGhlIGluZGV4IHdlIGFy
ZSBsb29raW5nIGZvciBpcyB2YWxpZC4KKyAgICB7CisgICAgICAgIENoZWNrVmFsdWUqIGNoZWNr
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBv
cmlnaW4oKSwKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1f
cHJvYywgQWJvdmVFcXVhbCwgb3JpZ2luKCksIGNhbGxlZUluZGV4LCBjYWxsYWJsZUZ1bmN0aW9u
QnVmZmVyTGVuZ3RoKSk7CisKKyAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPSwgdGhpc10o
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
CisgICAgICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBl
OjpPdXRPZkJvdW5kc0NhbGxJbmRpcmVjdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNh
bGxlZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBaRXh0
MzIsIG9yaWdpbigpLCBjYWxsZWVJbmRleCk7CisKKyAgICBWYWx1ZSogY2FsbGFibGVGdW5jdGlv
bjsKKyAgICB7CisgICAgICAgIC8vIENvbXB1dGUgdGhlIG9mZnNldCBpbiB0aGUgdGFibGUgaW5k
ZXggc3BhY2Ugd2UgYXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBWYWx1ZSogb2Zmc2V0ID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBNdWwsIG9yaWdpbigpLAorICAg
ICAgICAgICAgY2FsbGVlSW5kZXgsIGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIHNpemVvZihXYXNt
VG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uKSkpOworICAgICAgICBjYWxsYWJsZUZ1bmN0aW9uID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIG9yaWdpbigpLCBj
YWxsYWJsZUZ1bmN0aW9uQnVmZmVyLCBvZmZzZXQpOworCisgICAgICAgIC8vIENoZWNrIHRoYXQg
dGhlIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24gaXMgaW5pdGlhbGl6ZWQuIFdlIHRyYXAg
aWYgaXQgaXNuJ3QuIEFuICJpbnZhbGlkIiBTaWduYXR1cmVJbmRleCBpbmRpY2F0ZXMgaXQncyBu
b3QgaW5pdGlhbGl6ZWQuCisgICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGhhdmUgdHJhcCBoYW5k
bGVycywgd2UgY2FuIGp1c3QgbGV0IHRoZSBjYWxsIGZhaWwgYmVjYXVzZSBTaWduYXR1cmU6Omlu
dmFsaWRJbmRleCBpcyAwLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc3MjEwCisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21Ub1dhc21JbXBvcnRhYmxl
RnVuY3Rpb246OnR5cGVJbmRleCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIkxvYWQgY29kZWdlbiBh
c3N1bWVzIGk2NCIpOworICAgICAgICBWYWx1ZSogY2FsbGVlU2lnbmF0dXJlSW5kZXggPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDY0LCBv
cmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgc2FmZUNhc3Q8aW50MzJfdD4oV2FzbVRvV2FzbUlt
cG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZTaWduYXR1cmVJbmRleCgpKSk7CisgICAgICAgIHsK
KyAgICAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwK
KyAgICAgICAgICAgICAgICAgICAgY2FsbGVlU2lnbmF0dXJlSW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9y
aWdpbigpLCBUeXBlRGVmaW5pdGlvbjo6aW52YWxpZEluZGV4KSkpOworCisgICAgICAgICAgICBj
aGVjay0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6
OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgICAgICB0aGlzLT5lbWl0
RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpOdWxsVGFibGVFbnRyeSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENoZWNrIHRoZSBzaWduYXR1cmUg
bWF0Y2hlcyB0aGUgdmFsdWUgd2UgZXhwZWN0LgorICAgICAgICB7CisgICAgICAgICAgICBWYWx1
ZSogZXhwZWN0ZWRTaWduYXR1cmVJbmRleCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29u
c3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBUeXBlSW5mb3JtYXRpb246OmdldChzaWduYXR1
cmUpKTsKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIE5vdEVxdWFsLCBv
cmlnaW4oKSwgY2FsbGVlU2lnbmF0dXJlSW5kZXgsIGV4cGVjdGVkU2lnbmF0dXJlSW5kZXgpKTsK
KworICAgICAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPSwgdGhpc10oQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAg
ICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6QmFkU2ln
bmF0dXJlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCisgICAgVmFsdWUq
IG9mZnNldCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTXVsLCBv
cmlnaW4oKSwKKyAgICAgICAgY2FsbGVlSW5kZXgsIGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIHNp
emVvZihJbnN0YW5jZSopKSk7CisgICAgVmFsdWUqIGNhbGxlZUluc3RhbmNlID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgp
LCBvcmlnaW4oKSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBBZGQsIG9yaWdpbigpLCBpbnN0YW5jZXNCdWZmZXIsIG9mZnNldCkpOworICAgIFZhbHVl
KiBjYWxsZWVDb2RlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKKyAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBv
cmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwKKyAgICAgICAgICAgIHNhZmVDYXN0PGludDMyX3Q+
KFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246Om9mZnNldE9mRW50cnlwb2ludExvYWRMb2Nh
dGlvbigpKSkpOworCisgICAgcmV0dXJuIGVtaXRSZXR1cm5DYWxsSW5kaXJlY3QoY2FsbGVlSW5z
dGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwgYXJncywgcmVzdWx0cyk7Cit9CisKIHZvaWQg
QjNJUkdlbmVyYXRvcjo6dW5pZnkoVmFsdWUqIHBoaSwgY29uc3QgRXhwcmVzc2lvblR5cGUgc291
cmNlKQogewogICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3By
b2MsIG9yaWdpbigpLCBnZXQoc291cmNlKSwgcGhpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmgKaW5kZXggMzEwMjUwOGUwYWE3ZmNl
M2Y4ZTUwZDM3ZjMyZDA4Y2IwODNiMWZmYy4uYTc2ZTAwZWIyZDFkM2NjYTY0NTI5ZDZkOTMzY2I5
OWMxZmU5ZjExMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNh
bGxpbmdDb252ZW50aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNh
bGxpbmdDb252ZW50aW9uLmgKQEAgLTEyNyw2ICsxMjcsODAgQEAgcHJpdmF0ZToKICAgICB9CiAK
IHB1YmxpYzoKKyAgICB1aW50MzJfdCBudW1iZXJPZlN0YWNrUmVzdWx0cyhjb25zdCBGdW5jdGlv
blNpZ25hdHVyZSYgc2lnbmF0dXJlKSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3QgdWludDMy
X3QgZ3ByQ291bnQgPSBqc3JBcmdzLnNpemUoKTsKKyAgICAgICAgY29uc3QgdWludDMyX3QgZnBy
Q291bnQgPSBmcHJBcmdzLnNpemUoKTsKKyAgICAgICAgdWludDMyX3QgZ3BySW5kZXggPSAwOwor
ICAgICAgICB1aW50MzJfdCBmcHJJbmRleCA9IDA7CisgICAgICAgIHVpbnQzMl90IHN0YWNrQ291
bnQgPSAwOworICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVy
bkNvdW50KCk7IGkrKykgeworICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUucmV0dXJuVHlw
ZShpKS5raW5kKSB7CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CisgICAgICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpJNjQ6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5y
ZWY6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgorICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6UmVmTnVsbDoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKKyAg
ICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJ0dDoKKyAgICAgICAgICAgICAgICBpZiAoZ3BySW5k
ZXggPCBncHJDb3VudCkKKyAgICAgICAgICAgICAgICAgICAgKytncHJJbmRleDsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICsrc3RhY2tDb3VudDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKKyAgICAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKKyAgICAgICAgICAgICAgICBpZiAoZnBySW5kZXggPCBm
cHJDb3VudCkKKyAgICAgICAgICAgICAgICAgICAgKytmcHJJbmRleDsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICsrc3RhY2tDb3VudDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CisgICAgICAgICAgICBj
YXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0Ogor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YWNrQ291bnQ7CisgICAgfQorCisgICAg
dWludDMyX3QgbnVtYmVyT2ZTdGFja0FyZ3VtZW50cyhjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYg
c2lnbmF0dXJlKSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3QgdWludDMyX3QgZ3ByQ291bnQg
PSBqc3JBcmdzLnNpemUoKTsKKyAgICAgICAgY29uc3QgdWludDMyX3QgZnByQ291bnQgPSBmcHJB
cmdzLnNpemUoKTsKKyAgICAgICAgdWludDMyX3QgZ3BySW5kZXggPSAwOworICAgICAgICB1aW50
MzJfdCBmcHJJbmRleCA9IDA7CisgICAgICAgIHVpbnQzMl90IHN0YWNrQ291bnQgPSAwOworICAg
ICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKTsg
aSsrKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5hcmd1bWVudFR5cGUoaSkua2lu
ZCkgeworICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgorICAgICAgICAgICAgY2FzZSBU
eXBlS2luZDo6STY0OgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAg
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OlJlZk51bGw6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CisgICAgICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpSdHQ6CisgICAgICAgICAgICAgICAgaWYgKGdwckluZGV4IDwgZ3By
Q291bnQpCisgICAgICAgICAgICAgICAgICAgICsrZ3BySW5kZXg7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICArK3N0YWNrQ291bnQ7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CisgICAgICAgICAgICBjYXNl
IFR5cGVLaW5kOjpGNjQ6CisgICAgICAgICAgICAgICAgaWYgKGZwckluZGV4IDwgZnByQ291bnQp
CisgICAgICAgICAgICAgICAgICAgICsrZnBySW5kZXg7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICArK3N0YWNrQ291bnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgorICAgICAgICAgICAgY2FzZSBUeXBl
S2luZDo6RnVuYzoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKKyAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHJldHVybiBzdGFja0NvdW50OworICAgIH0KKwogICAgIENhbGxJbmZv
cm1hdGlvbiBjYWxsSW5mb3JtYXRpb25Gb3IoY29uc3QgVHlwZURlZmluaXRpb24mIHR5cGUsIENh
bGxSb2xlIHJvbGUgPSBDYWxsUm9sZTo6Q2FsbGVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29u
c3QgYXV0byYgc2lnbmF0dXJlID0gKnR5cGUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CkBAIC0x
MzQsMjEgKzIwOCwyMyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgcmVzdWx0c0luY2x1ZGVJNjQg
PSBmYWxzZTsKICAgICAgICAgc2l6ZV90IGdwQXJndW1lbnRDb3VudCA9IDA7CiAgICAgICAgIHNp
emVfdCBmcEFyZ3VtZW50Q291bnQgPSAwOwotICAgICAgICBzaXplX3QgYXJnU3RhY2tPZmZzZXQg
PSBoZWFkZXJTaXplSW5CeXRlcyArIHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgIHNpemVfdCBo
ZWFkZXJTaXplID0gaGVhZGVyU2l6ZUluQnl0ZXMgKyBzaXplb2YoUmVnaXN0ZXIpOwogICAgICAg
ICBpZiAocm9sZSA9PSBDYWxsUm9sZTo6Q2FsbGVyKQotICAgICAgICAgICAgYXJnU3RhY2tPZmZz
ZXQgLT0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpOworICAgICAgICAgICAgaGVhZGVyU2l6ZSAt
PSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyk7CiAKKyAgICAgICAgc2l6ZV90IGFyZ1N0YWNrT2Zm
c2V0ID0gaGVhZGVyU2l6ZTsKICAgICAgICAgVmVjdG9yPEFyZ3VtZW50TG9jYXRpb24+IHBhcmFt
cyhzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2kpIHsKICAgICAgICAgICAgIGFyZ3Vt
ZW50c0luY2x1ZGVJNjQgfD0gc2lnbmF0dXJlLmFyZ3VtZW50VHlwZShpKS5pc0k2NCgpOwogICAg
ICAgICAgICAgcGFyYW1zW2ldID0gbWFyc2hhbGxMb2NhdGlvbihyb2xlLCBzaWduYXR1cmUuYXJn
dW1lbnRUeXBlKGkpLCBncEFyZ3VtZW50Q291bnQsIGZwQXJndW1lbnRDb3VudCwgYXJnU3RhY2tP
ZmZzZXQpOwogICAgICAgICB9CisgICAgICAgIHVpbnQzMl90IHN0YWNrQXJncyA9IGFyZ1N0YWNr
T2Zmc2V0IC0gaGVhZGVyU2l6ZTsKICAgICAgICAgZ3BBcmd1bWVudENvdW50ID0gMDsKICAgICAg
ICAgZnBBcmd1bWVudENvdW50ID0gMDsKLSAgICAgICAgc2l6ZV90IHJlc3VsdFN0YWNrT2Zmc2V0
ID0gaGVhZGVyU2l6ZUluQnl0ZXMgKyBzaXplb2YoUmVnaXN0ZXIpOwotICAgICAgICBpZiAocm9s
ZSA9PSBDYWxsUm9sZTo6Q2FsbGVyKQotICAgICAgICAgICAgcmVzdWx0U3RhY2tPZmZzZXQgLT0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpOwogCisgICAgICAgIHVpbnQzMl90IHN0YWNrUmVzdWx0
cyA9IG51bWJlck9mU3RhY2tSZXN1bHRzKHNpZ25hdHVyZSkgKiBzaXplb2YoUmVnaXN0ZXIpOwor
ICAgICAgICB1aW50MzJfdCBzdGFja0NvdW50QWxpZ25lZCA9IFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHN0ZDo6bWF4KHN0YWNrQXJncywgc3RhY2tSZXN1
bHRzKSk7CisgICAgICAgIHNpemVfdCByZXN1bHRTdGFja09mZnNldCA9IGhlYWRlclNpemUgKyBz
dGFja0NvdW50QWxpZ25lZCAtIHN0YWNrUmVzdWx0czsKICAgICAgICAgVmVjdG9yPEFyZ3VtZW50
TG9jYXRpb24sIDE+IHJlc3VsdHMoc2lnbmF0dXJlLnJldHVybkNvdW50KCkpOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpIHsKICAg
ICAgICAgICAgIHJlc3VsdHNJbmNsdWRlSTY0IHw9IHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLmlz
STY0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rp
b25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNl
ci5oCmluZGV4IDZkODk5MjgzMTNlODhkYzNmY2I0ODVmMzk1OThiNzc4MGNhMjMzZTIuLjgxMmVj
YjQ4MDJlZjU4OTkzYWUwMDA0NmY5MTA4YjBlMjc5YjA0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCkBAIC0xMjMxLDYgKzEyMzEsOSBA
QCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAKKyAgICBjYXNlIFJldHVybkNhbGw6CisgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VGFpbENhbGxzKCksICJ3YXNtIHRh
aWwgY2FsbHMgYXJlIG5vdCBlbmFibGVkIik7CisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNh
c2UgQ2FsbDogewogICAgICAgICB1aW50MzJfdCBmdW5jdGlvbkluZGV4OwogICAgICAgICBXQVNN
X0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY3Rpb25JbmRleChmdW5jdGlvbkluZGV4KSk7
CkBAIC0xMjM4LDYgKzEyNDEsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVB
VEVfQ0FTRSkKICAgICAgICAgVHlwZUluZGV4IGNhbGxlZVR5cGVJbmRleCA9IG1faW5mby50eXBl
SW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOwogICAgICAgICBjb25z
dCBUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChj
YWxsZWVUeXBlSW5kZXgpOwogICAgICAgICBjb25zdCBhdXRvJiBjYWxsZWVTaWduYXR1cmUgPSAq
dHlwZURlZmluaXRpb24uYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CisgICAgICAgIGNvbnN0IGF1
dG8mIGNhbGxlclNpZ25hdHVyZSA9ICptX3NpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4o
KTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRD
b3VudCgpID4gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FsbCBmdW5jdGlvbiBpbmRleCAi
LCBmdW5jdGlvbkluZGV4LCAiIGhhcyAiLCBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgp
LCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBob2xkcyAi
LCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CiAKICAgICAgICAgc2l6ZV90
IGZpcnN0QXJndW1lbnRJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAtIGNhbGxlZVNp
Z25hdHVyZS5hcmd1bWVudENvdW50KCk7CkBAIC0xMjU0LDE2ICsxMjU4LDM4IEBAIEZPUl9FQUNI
X1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBSRUxFQVNFX0FTU0VS
VChjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKIAogICAg
ICAgICBSZXN1bHRMaXN0IHJlc3VsdHM7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhU
KGFkZENhbGwoZnVuY3Rpb25JbmRleCwgdHlwZURlZmluaXRpb24sIGFyZ3MsIHJlc3VsdHMpKTsK
IAotICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKSA9
PSByZXN1bHRzLnNpemUoKSk7CisgICAgICAgIGlmIChtX2N1cnJlbnRPcGNvZGUgPT0gUmV0dXJu
Q2FsbCkgeworICAgICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkUmV0dXJuQ2Fs
bChmdW5jdGlvbkluZGV4LCB0eXBlRGVmaW5pdGlvbiwgYXJncywgcmVzdWx0cykpOwogCi0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQo
KTsgKytpKQotICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5k
KGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpID09IHJlc3VsdHMu
c2l6ZSgpKTsKIAotICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKSAhPSBjYWxsZXJTaWduYXR1cmUu
cmV0dXJuQ291bnQoKSwgInRhaWwgY2FsbCBmdW5jdGlvbiBpbmRleCAiLCBmdW5jdGlvbkluZGV4
LCAiIHdpdGggcmV0dXJuIGNvdW50ICIsIGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpLCAi
LCBidXQgdGhlIGNhbGxlcidzIHNpZ25hdHVyZSBoYXMgIiwgY2FsbGVyU2lnbmF0dXJlLnJldHVy
bkNvdW50KCksICIgcmV0dXJuIHZhbHVlcyIpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCk7ICsraSkgeworICAgICAg
ICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShjYWxsZXJTaWduYXR1
cmUucmV0dXJuVHlwZShpKSwgY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSkpLCAicmV0dXJu
IHR5cGUgbWlzbWF0Y2ggaW4gdGFpbCBjYWxsLCBnb3QgIiwgY2FsbGVlU2lnbmF0dXJlLnJldHVy
blR5cGUoaSkua2luZCwgIiwgZXhwZWN0ZWQgIiwgY2FsbGVyU2lnbmF0dXJlLnJldHVyblR5cGUo
aSkua2luZCk7CisgICAgICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5k
QXBwZW5kKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhjaGVja0Jy
YW5jaFRhcmdldChtX2NvbnRyb2xTdGFja1swXS5jb250cm9sRGF0YSkpOworICAgICAgICAgICAg
V0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkUmV0dXJuKG1fY29udHJvbFN0YWNrWzBdLmNvbnRy
b2xEYXRhLCBtX2V4cHJlc3Npb25TdGFjaykpOworICAgICAgICAgICAgbV91bnJlYWNoYWJsZUJs
b2NrcyA9IDE7CisKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAg
ICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZENhbGwoZnVuY3Rpb25JbmRleCwgdHlwZURl
ZmluaXRpb24sIGFyZ3MsIHJlc3VsdHMpKTsKKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
Y2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCkgPT0gcmVzdWx0cy5zaXplKCkpOworCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbGVlU2lnbmF0dXJlLnJldHVybkNv
dW50KCk7ICsraSkKKyAgICAgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RB
bmRBcHBlbmQoY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOworCisg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAorICAgIGNhc2UgUmV0dXJuQ2FsbEluZGly
ZWN0OgorICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJs
eVRhaWxDYWxscygpLCAid2FzbSB0YWlsIGNhbGxzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAg
ICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENhbGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJf
dCBzaWduYXR1cmVJbmRleDsKICAgICAgICAgdWludDMyX3QgdGFibGVJbmRleDsKQEAgLTEyNzYs
NiArMTMwMiw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQog
CiAgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbiA9IG1faW5mby50
eXBlU2lnbmF0dXJlc1tzaWduYXR1cmVJbmRleF0uZ2V0KCk7CiAgICAgICAgIGNvbnN0IGF1dG8m
IGNhbGxlZVNpZ25hdHVyZSA9ICp0eXBlRGVmaW5pdGlvbi5hczxGdW5jdGlvblNpZ25hdHVyZT4o
KTsKKyAgICAgICAgY29uc3QgYXV0byYgY2FsbGVyU2lnbmF0dXJlID0gKm1fc2lnbmF0dXJlLmFz
PEZ1bmN0aW9uU2lnbmF0dXJlPigpOwogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGNh
bGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxlZSdzIGlu
ZGV4LgogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtX2V4cHJl
c3Npb25TdGFjay5zaXplKCksICJjYWxsX2luZGlyZWN0IGV4cGVjdHMgIiwgYXJndW1lbnRDb3Vu
dCwgIiBhcmd1bWVudHMsIGJ1dCB0aGUgZXhwcmVzc2lvbiBzdGFjayBjdXJyZW50bHkgaG9sZHMg
IiwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHZhbHVlcyIpOwogCkBAIC0xMjk0LDEyICsx
MzIxLDMxIEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAg
ICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsKIAogICAg
ICAgICBSZXN1bHRMaXN0IHJlc3VsdHM7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhU
KGFkZENhbGxJbmRpcmVjdCh0YWJsZUluZGV4LCB0eXBlRGVmaW5pdGlvbiwgYXJncywgcmVzdWx0
cykpOwogCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUu
cmV0dXJuQ291bnQoKTsgKytpKQotICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3Ry
dWN0QW5kQXBwZW5kKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsK
KyAgICAgICAgaWYgKG1fY3VycmVudE9wY29kZSA9PSBSZXR1cm5DYWxsSW5kaXJlY3QpIHsKKyAg
ICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFJldHVybkNhbGxJbmRpcmVjdCh0
YWJsZUluZGV4LCB0eXBlRGVmaW5pdGlvbiwgYXJncywgcmVzdWx0cykpOwogCi0gICAgICAgIHJl
dHVybiB7IH07CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsZWVTaWduYXR1cmUucmV0
dXJuQ291bnQoKSA9PSByZXN1bHRzLnNpemUoKSk7CisKKyAgICAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCkgIT0gY2FsbGVyU2lnbmF0dXJl
LnJldHVybkNvdW50KCksICJ0YWlsIGNhbGwgaW5kaXJlY3QgZnVuY3Rpb24gd2l0aCByZXR1cm4g
Y291bnQgIiwgY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCksICIsIGJ1dCB0aGUgY2FsbGVy
J3Mgc2lnbmF0dXJlIGhhcyAiLCBjYWxsZXJTaWduYXR1cmUucmV0dXJuQ291bnQoKSwgIiByZXR1
cm4gdmFsdWVzIik7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxs
ZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgV0FTTV9W
QUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGNhbGxlclNpZ25hdHVyZS5yZXR1cm5UeXBlKGkp
LCBjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSksICJyZXR1cm4gdHlwZSBtaXNtYXRjaCBp
biB0YWlsIGNhbGwgaW5kaXJlY3QsIGdvdCAiLCBjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShp
KS5raW5kLCAiLCBleHBlY3RlZCAiLCBjYWxsZXJTaWduYXR1cmUucmV0dXJuVHlwZShpKS5raW5k
KTsKKyAgICAgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQo
Y2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKGNoZWNrQnJhbmNoVGFy
Z2V0KG1fY29udHJvbFN0YWNrWzBdLmNvbnRyb2xEYXRhKSk7CisgICAgICAgICAgICBXQVNNX1RS
WV9BRERfVE9fQ09OVEVYVChhZGRSZXR1cm4obV9jb250cm9sU3RhY2tbMF0uY29udHJvbERhdGEs
IG1fZXhwcmVzc2lvblN0YWNrKSk7CisgICAgICAgICAgICBtX3VucmVhY2hhYmxlQmxvY2tzID0g
MTsKKworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICAgICAgV0FT
TV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2FsbEluZGlyZWN0KHRhYmxlSW5kZXgsIHR5cGVEZWZp
bml0aW9uLCBhcmdzLCByZXN1bHRzKSk7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICAgICAg
ICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChjYWxsZWVTaWduYXR1cmUu
cmV0dXJuVHlwZShpKSwgcmVzdWx0c1tpXSk7CisKKyAgICAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCiAgICAgY2FzZSBDYWxsUmVmOiB7CkBAIC0xODA2LDYgKzE4NTIsOSBAQCBhdXRvIEZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBh
cnRpYWxSZXN1bHQKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICBjYXNlIFJldHVy
bkNhbGxJbmRpcmVjdDoKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNl
V2ViQXNzZW1ibHlUYWlsQ2FsbHMoKSwgIndhc20gdGFpbCBjYWxscyBhcmUgbm90IGVuYWJsZWQi
KTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDYWxsSW5kaXJlY3Q6IHsKICAgICAg
ICAgdWludDMyX3QgdW51c2VkOwogICAgICAgICB1aW50MzJfdCB1bnVzZWQyOwpAQCAtMTg1MCw2
ICsxODk5LDkgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJs
ZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCisgICAgY2FzZSBSZXR1cm5DYWxsOgorICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFP
cHRpb25zOjp1c2VXZWJBc3NlbWJseVRhaWxDYWxscygpLCAid2FzbSB0YWlsIGNhbGxzIGFyZSBu
b3QgZW5hYmxlZCIpOworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENhbGw6IHsKICAg
ICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBF
Ul9GQUlMUyhwYXJzZUZ1bmN0aW9uSW5kZXgoZnVuY3Rpb25JbmRleCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKaW5kZXggZDBkMmI5
NzI1OTkxMWViZjJhMWM0NmE3N2UxMmMzMzM5OWZiYzY3ZC4uMjNhMjdmZDRjNWM3OWNlMWNmYzQ4
ZDg1OGVlMjY2NjU0YzNmODU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCkBAIC0zMjYsNiArMzI2LDggQEAgcHVibGljOgogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVl
SW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJn
cywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZp
bml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0
cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbFJlZihjb25z
dCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExp
c3QmIHJlc3VsdHMpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJl
dHVybkNhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVj
dG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuQ2FsbEluZGlyZWN0KHVuc2ln
bmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25U
eXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFy
c2luZ0xvY2FscygpOwpAQCAtNjA2LDcgKzYwOCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNh
bGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJl
CiAgICAgLy8gY2FsbCBmcmFtZSBoZWFkZXIKIAogICAgIC8vIFdlIG5lZWQgdG8gYWxsb2NhdGUg
YXQgbGVhc3Qgc3BhY2UgZm9yIGFsbCBHUFJzIGFuZCBGUFJzLgotICAgIC8vIFJldHVybiB2YWx1
ZXMgdXNlIHRoZSBzYW1lIGFsbG9jYXRpb24gbGF5b3V0LgorICAgIC8vIFJldHVybiB2YWx1ZSBz
dGFjazAgaXMgYXQgc3RhY2tOIC0gc3RhY2tSZXR1cm5WYWx1ZXMKIAogICAgIGNvbnN0IGF1dG8g
aW5pdGlhbFN0YWNrU2l6ZSA9IG1fc3RhY2tTaXplOwogCkBAIC02MTQsNTQgKzYxNiwxNyBAQCBh
dXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgRnVuY3Rp
b25TaWduYXR1cmUmIHNpZ25hdHVyZQogICAgIGNvbnN0IHVpbnQzMl90IGdwckNvdW50ID0gY2Fs
bGluZ0NvbnZlbnRpb24uanNyQXJncy5zaXplKCk7CiAgICAgY29uc3QgdWludDMyX3QgZnByQ291
bnQgPSBjYWxsaW5nQ29udmVudGlvbi5mcHJBcmdzLnNpemUoKTsKIAotICAgIHVpbnQzMl90IHN0
YWNrQ291bnQgPSAwOworICAgIHVpbnQzMl90IHN0YWNrUmVzdWx0cyA9IGNhbGxpbmdDb252ZW50
aW9uLm51bWJlck9mU3RhY2tSZXN1bHRzKHNpZ25hdHVyZSk7CisgICAgdWludDMyX3Qgc3RhY2tD
b3VudEFsaWduZWQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdp
c3RlcnMoKSwgc3RkOjptYXgoY2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZTdGFja0FyZ3VtZW50
cyhzaWduYXR1cmUpLCBzdGFja1Jlc3VsdHMpKTsKICAgICB1aW50MzJfdCBncHJJbmRleCA9IDA7
CiAgICAgdWludDMyX3QgZnBySW5kZXggPSAwOwogICAgIHVpbnQzMl90IHN0YWNrSW5kZXggPSAw
OwogCi0gICAgYXV0byBhbGxvY2F0ZVN0YWNrUmVnaXN0ZXIgPSBbJl0oVHlwZSB0eXBlKSB7Ci0g
ICAgICAgIHN3aXRjaCAodHlwZS5raW5kKSB7Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoK
LSAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0OgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRl
cm5yZWY6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6Ci0gICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OlJlZk51bGw6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKLSAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6UnR0OgotICAgICAgICAgICAgaWYgKGdwckluZGV4IDwgZ3ByQ291bnQpCi0g
ICAgICAgICAgICAgICAgKytncHJJbmRleDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0YWNrSW5k
ZXgrKyA+PSBzdGFja0NvdW50KQotICAgICAgICAgICAgICAgICsrc3RhY2tDb3VudDsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6Ci0gICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OkY2NDoKLSAgICAgICAgICAgIGlmIChmcHJJbmRleCA8IGZwckNvdW50KQotICAg
ICAgICAgICAgICAgICsrZnBySW5kZXg7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdGFja0luZGV4
KysgPj0gc3RhY2tDb3VudCkKLSAgICAgICAgICAgICAgICArK3N0YWNrQ291bnQ7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKLSAgICAgICAgY2FzZSBU
eXBlS2luZDo6RnVuYzoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH07Ci0KLQot
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyBp
KyspCi0gICAgICAgIGFsbG9jYXRlU3RhY2tSZWdpc3RlcihzaWduYXR1cmUuYXJndW1lbnRUeXBl
KGkpKTsKLQotICAgIGdwckluZGV4ID0gMDsKLSAgICBmcHJJbmRleCA9IDA7Ci0gICAgc3RhY2tJ
bmRleCA9IDA7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5D
b3VudCgpOyBpKyspCi0gICAgICAgIGFsbG9jYXRlU3RhY2tSZWdpc3RlcihzaWduYXR1cmUucmV0
dXJuVHlwZShpKSk7Ci0KKyAgICBtX3N0YWNrU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBtX3N0YWNrU2l6ZS52YWx1ZSgpKTsKICAgICAv
LyBGSVhNRTogd2UgYXJlIGFsbG9jYXRpbmcgdGhlIGV4dHJhIHNwYWNlIGZvciB0aGUgYXJndW1l
bnQvcmV0dXJuIGNvdW50IGluIG9yZGVyIHRvIGF2b2lkIGludGVyZmVyZW5jZSwgYnV0IHdlIGNv
dWxkIGRvIGJldHRlcgogICAgIC8vIE5PVEU6IFdlIGluY3JlYXNlIGFyZyBjb3VudCBieSAxIGZv
ciB0aGUgY2FzZSBvZiBpbmRpcmVjdCBjYWxscwotICAgIG1fc3RhY2tTaXplICs9IHN0ZDo6bWF4
KHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxLCBzaWduYXR1cmUucmV0dXJuQ291bnQoKSkg
KyBncHJDb3VudCArIGZwckNvdW50ICsgc3RhY2tDb3VudCArIENhbGxGcmFtZTo6aGVhZGVyU2l6
ZUluUmVnaXN0ZXJzICsgMTsKLSAgICBpZiAobV9zdGFja1NpemUudmFsdWUoKSAlIHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCkpCi0gICAgICAgICsrbV9zdGFja1NpemU7CisgICAgbV9zdGFja1Np
emUgKz0gc3RkOjptYXgoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDEsIHNpZ25hdHVyZS5y
ZXR1cm5Db3VudCgpKSArIGdwckNvdW50ICsgZnByQ291bnQgKyBzdGFja0NvdW50QWxpZ25lZCAr
IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICsgMTsKKyAgICBtX3N0YWNrU2l6ZSA9
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBtX3N0
YWNrU2l6ZS52YWx1ZSgpKTsKICAgICBpZiAobV9tYXhTdGFja1NpemUgPCBtX3N0YWNrU2l6ZSkK
ICAgICAgICAgbV9tYXhTdGFja1NpemUgPSBtX3N0YWNrU2l6ZTsKIApAQCAtNjcyLDExICs2Mzcs
MTEgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0
IEZ1bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUKICAgICBjb25zdCB1bnNpZ25lZCBzdGFja09m
ZnNldCA9IG1fc3RhY2tTaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGJhc2UgPSBzdGFja09mZnNl
dCAtIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0gMTsKIAotICAgIGNvbnN0IHVp
bnQzMl90IGdwckxpbWl0ID0gYmFzZSAtIHN0YWNrQ291bnQgLSBncHJDb3VudDsKKyAgICBjb25z
dCB1aW50MzJfdCBncHJMaW1pdCA9IGJhc2UgLSBzdGFja0NvdW50QWxpZ25lZCAtIGdwckNvdW50
OwogICAgIGNvbnN0IHVpbnQzMl90IGZwckxpbWl0ID0gZ3ByTGltaXQgLSBmcHJDb3VudDsKIAog
ICAgIHN0YWNrSW5kZXggPSBiYXNlOwotICAgIGdwckluZGV4ID0gYmFzZSAtIHN0YWNrQ291bnQ7
CisgICAgZ3BySW5kZXggPSBiYXNlIC0gc3RhY2tDb3VudEFsaWduZWQ7CiAgICAgZnBySW5kZXgg
PSBncHJJbmRleCAtIGdwckNvdW50OwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWdu
YXR1cmUuYXJndW1lbnRDb3VudCgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUu
YXJndW1lbnRUeXBlKGkpLmtpbmQpIHsKQEAgLTcwNiw4ICs2NzEsOCBAQCBhdXRvIExMSW50R2Vu
ZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUm
IHNpZ25hdHVyZQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RhY2tJbmRleCA9IGJhc2U7Ci0g
ICAgZ3BySW5kZXggPSBiYXNlIC0gc3RhY2tDb3VudDsKKyAgICBncHJJbmRleCA9IGJhc2UgLSBz
dGFja0NvdW50QWxpZ25lZDsKKyAgICBzdGFja0luZGV4ID0gZ3BySW5kZXggKyBzdGFja1Jlc3Vs
dHM7CiAgICAgZnBySW5kZXggPSBncHJJbmRleCAtIGdwckNvdW50OwogICAgIGZvciAodWludDMy
X3QgaSA9IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgaSsrKSB7CiAgICAgICAgIHN3
aXRjaCAoc2lnbmF0dXJlLnJldHVyblR5cGUoaSkua2luZCkgewpAQCAtNzQ4LDcgKzcxMyw3IEBA
IGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBGdW5j
dGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgcmV0dXJu
IExMSW50Q2FsbEluZm9ybWF0aW9uIHsgc3RhY2tPZmZzZXQsIHN0YWNrQ291bnQsIFdURk1vdmUo
YXJndW1lbnRzKSwgV1RGTW92ZShjb21taXRSZXN1bHRzKSB9OworICAgIHJldHVybiBMTEludENh
bGxJbmZvcm1hdGlvbiB7IHN0YWNrT2Zmc2V0LCBzdGFja0NvdW50QWxpZ25lZCwgV1RGTW92ZShh
cmd1bWVudHMpLCBXVEZNb3ZlKGNvbW1pdFJlc3VsdHMpIH07CiB9CiAKIGF1dG8gTExJbnRHZW5l
cmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYg
c2lnbmF0dXJlKSAtPiBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCAyPgpAQCAtNzY0LDEwICs3Mjks
MTIgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0
IEZ1bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUKIAogICAgIHVpbnQzMl90IGdwckluZGV4ID0g
MDsKICAgICB1aW50MzJfdCBmcHJJbmRleCA9IGdwckNvdW50OwotICAgIHVpbnQzMl90IHN0YWNr
SW5kZXggPSAxOwogICAgIGNvbnN0IHVpbnQzMl90IG1heEdQUkluZGV4ID0gZ3ByQ291bnQ7CiAg
ICAgY29uc3QgdWludDMyX3QgbWF4RlBSSW5kZXggPSBtYXhHUFJJbmRleCArIGZwckNvdW50Owor
ICAgIHVpbnQzMl90IHN0YWNrUmVzdWx0cyA9IGNhbGxpbmdDb252ZW50aW9uLm51bWJlck9mU3Rh
Y2tSZXN1bHRzKHNpZ25hdHVyZSk7CisgICAgdWludDMyX3Qgc3RhY2tDb3VudEFsaWduZWQgPSBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgc3RkOjpt
YXgoY2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cyhzaWduYXR1cmUpLCBz
dGFja1Jlc3VsdHMpKTsKIAorICAgIHVpbnQzMl90IHN0YWNrSW5kZXggPSAxICsgc3RhY2tDb3Vu
dEFsaWduZWQgLSBzdGFja1Jlc3VsdHM7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNp
Z25hdHVyZS5yZXR1cm5Db3VudCgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUu
cmV0dXJuVHlwZShpKS5raW5kKSB7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKQEAgLTEz
OTIsNiArMTM1OSw1NSBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0IFR5
cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaQogICAgIHJldHVybiB7IH07
CiB9CiAKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFJldHVybkNhbGwodWludDMyX3QgZnVuY3Rp
b25JbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAorewor
ICAgIEFTU0VSVChzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFyZ3VtZW50Q291
bnQoKSA9PSBhcmdzLnNpemUoKSk7CisgICAgY29uc3QgYXV0byYgY2FsbGluZ0NvbnZlbnRpb24g
PSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKKyAgICBMTEludENhbGxJbmZvcm1hdGlvbiBjYWxs
ZWVJbmZvID0gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKCpzaWduYXR1cmUuYXM8RnVuY3Rpb25T
aWduYXR1cmU+KCkpOworICAgIGNvbnN0IFR5cGVJbmRleCBjYWxsZXJUeXBlSW5kZXggPSBtX2lu
Zm8uaW50ZXJuYWxGdW5jdGlvblR5cGVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07CisgICAgY29u
c3QgVHlwZURlZmluaXRpb24mIGNhbGxlclR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9u
OjpnZXQoY2FsbGVyVHlwZUluZGV4KTsKKyAgICB1aW50MzJfdCBjYWxsZXJTdGFja0FyZ3MgPSBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKKyAgICAg
ICAgc3RkOjptYXgoY2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cygqY2Fs
bGVyVHlwZURlZmluaXRpb24uYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpLAorICAgICAgICAgICAg
Y2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZTdGFja1Jlc3VsdHMoKmNhbGxlclR5cGVEZWZpbml0
aW9uLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKSkpOworCisgICAgdW5pZnlWYWx1ZXNXaXRoQmxv
Y2soY2FsbGVlSW5mby5hcmd1bWVudHMsIGFyZ3MpOworCisgICAgaWYgKENvbnRleHQ6OnVzZUZh
c3RUTFMoKSkKKyAgICAgICAgV2FzbVJldHVybkNhbGw6OmVtaXQodGhpcywgZnVuY3Rpb25JbmRl
eCwgY2FsbGVlSW5mby5zdGFja09mZnNldCwgY2FsbGVlSW5mby5udW1iZXJPZlN0YWNrQXJndW1l
bnRzLCBjYWxsZXJTdGFja0FyZ3MpOworICAgIGVsc2UKKyAgICAgICAgV2FzbVJldHVybkNhbGxO
b1Rsczo6ZW1pdCh0aGlzLCBmdW5jdGlvbkluZGV4LCBjYWxsZWVJbmZvLnN0YWNrT2Zmc2V0LCBj
YWxsZWVJbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMsIGNhbGxlclN0YWNrQXJncyk7CisKKyAg
ICBjYWxsZWVJbmZvLmNvbW1pdFJlc3VsdHMocmVzdWx0cyk7CisKKyAgICByZXR1cm4geyB9Owor
fQorCithdXRvIExMSW50R2VuZXJhdG9yOjphZGRSZXR1cm5DYWxsSW5kaXJlY3QodW5zaWduZWQg
dGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJl
c3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAor
eworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJncy50YWtlTGFzdCgpOworCisg
ICAgQVNTRVJUKHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3Vu
dCgpID09IGFyZ3Muc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9pbmZvLnRhYmxlQ291bnQoKSA+IHRh
YmxlSW5kZXgpOworICAgIEFTU0VSVChtX2luZm8udGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSA9
PSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmKTsKKworICAgIExMSW50Q2FsbEluZm9ybWF0aW9u
IGNhbGxlZUluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoKnNpZ25hdHVyZS5hczxGdW5j
dGlvblNpZ25hdHVyZT4oKSk7CisgICAgY29uc3QgYXV0byYgY2FsbGluZ0NvbnZlbnRpb24gPSB3
YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKKyAgICBjb25zdCBUeXBlSW5kZXggY2FsbGVyVHlwZUlu
ZGV4ID0gbV9pbmZvLmludGVybmFsRnVuY3Rpb25UeXBlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhd
OworICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBjYWxsZXJUeXBlRGVmaW5pdGlvbiA9IFR5cGVJ
bmZvcm1hdGlvbjo6Z2V0KGNhbGxlclR5cGVJbmRleCk7CisgICAgdWludDMyX3QgY2FsbGVyU3Rh
Y2tBcmdzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCksIHN0ZDo6bWF4KGNhbGxpbmdDb252ZW50aW9uLm51bWJlck9mU3RhY2tBcmd1bWVudHMoKmNh
bGxlclR5cGVEZWZpbml0aW9uLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKSwgY2FsbGluZ0NvbnZl
bnRpb24ubnVtYmVyT2ZTdGFja1Jlc3VsdHMoKmNhbGxlclR5cGVEZWZpbml0aW9uLmFzPEZ1bmN0
aW9uU2lnbmF0dXJlPigpKSkpOworCisgICAgdW5pZnlWYWx1ZXNXaXRoQmxvY2soY2FsbGVlSW5m
by5hcmd1bWVudHMsIGFyZ3MpOworCisgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkKKyAg
ICAgICAgV2FzbVJldHVybkNhbGxJbmRpcmVjdDo6ZW1pdCh0aGlzLCBjYWxsZWVJbmRleCwgbV9j
b2RlQmxvY2stPmFkZFNpZ25hdHVyZSgqc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigp
KSwgY2FsbGVlSW5mby5zdGFja09mZnNldCwgY2FsbGVlSW5mby5udW1iZXJPZlN0YWNrQXJndW1l
bnRzLCBjYWxsZXJTdGFja0FyZ3MsIHRhYmxlSW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgV2Fz
bVJldHVybkNhbGxJbmRpcmVjdE5vVGxzOjplbWl0KHRoaXMsIGNhbGxlZUluZGV4LCBtX2NvZGVC
bG9jay0+YWRkU2lnbmF0dXJlKCpzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpLCBj
YWxsZWVJbmZvLnN0YWNrT2Zmc2V0LCBjYWxsZWVJbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMs
IGNhbGxlclN0YWNrQXJncywgdGFibGVJbmRleCk7CisKKyAgICBjYWxsZWVJbmZvLmNvbW1pdFJl
c3VsdHMocmVzdWx0cyk7CisKKyAgICByZXR1cm4geyB9OworfQorCiBhdXRvIExMSW50R2VuZXJh
dG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1bHQgPSBwdXNoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCmluZGV4IDQ0MDY1MDQyNWU4
ZmNkYzBhNGVkNDZlZjM2NDY2NTIyMWZmYjhlZWQuLjRjMWM4NDVmNWZiY2NkMWQyZDUzNjAxMmE2
ZTBjOTdmYmJlYjBkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93
UGF0aHMuY3BwCkBAIC01NjYsNiArNTY2LDM2IEBAIFdBU01fU0xPV19QQVRIX0RFQ0woY2FsbF9y
ZWZfbm9fdGxzKQogICAgIHJldHVybiBkb1dhc21DYWxsUmVmKGNhbGxGcmFtZSwgaW5zdGFuY2Us
IHJlZmVyZW5jZSwgaW5zdHJ1Y3Rpb24ubV90eXBlSW5kZXgpOwogfQogCitXQVNNX1NMT1dfUEFU
SF9ERUNMKHJldHVybl9jYWxsKQoreworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworCisg
ICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtUmV0dXJuQ2FsbD4oKTsKKyAgICByZXR1
cm4gZG9XYXNtQ2FsbChpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4KTsKK30K
KworV0FTTV9TTE9XX1BBVEhfREVDTChyZXR1cm5fY2FsbF9ub190bHMpCit7CisgICAgVU5VU0VE
X1BBUkFNKGNhbGxGcmFtZSk7CisKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21S
ZXR1cm5DYWxsTm9UbHM+KCk7CisgICAgcmV0dXJuIGRvV2FzbUNhbGwoaW5zdGFuY2UsIGluc3Ry
dWN0aW9uLm1fZnVuY3Rpb25JbmRleCk7Cit9CisKK1dBU01fU0xPV19QQVRIX0RFQ0wocmV0dXJu
X2NhbGxfaW5kaXJlY3QpCit7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtUmV0
dXJuQ2FsbEluZGlyZWN0PigpOworICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXggPSBSRUFEKGlu
c3RydWN0aW9uLm1fZnVuY3Rpb25JbmRleCkudW5ib3hlZEludDMyKCk7CisgICAgcmV0dXJuIGRv
V2FzbUNhbGxJbmRpcmVjdChjYWxsRnJhbWUsIGluc3RhbmNlLCBmdW5jdGlvbkluZGV4LCBpbnN0
cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOworfQor
CitXQVNNX1NMT1dfUEFUSF9ERUNMKHJldHVybl9jYWxsX2luZGlyZWN0X25vX3RscykKK3sKKyAg
ICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21SZXR1cm5DYWxsSW5kaXJlY3ROb1Rscz4o
KTsKKyAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0gUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0
aW9uSW5kZXgpLnVuYm94ZWRJbnQzMigpOworICAgIHJldHVybiBkb1dhc21DYWxsSW5kaXJlY3Qo
Y2FsbEZyYW1lLCBpbnN0YW5jZSwgZnVuY3Rpb25JbmRleCwgaW5zdHJ1Y3Rpb24ubV90YWJsZUlu
ZGV4LCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKK30KKwogV0FTTV9TTE9XX1BBVEhf
REVDTChzZXRfZ2xvYmFsX3JlZikKIHsKICAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdh
c21TZXRHbG9iYWxSZWY+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1Bh
dGhzLmgKaW5kZXggZTcwMGRhZDY5YWE3ZmE2MzYxM2VlNmEwM2RlZGI1OGYzMWQzMTYwOC4uNDM4
ZjE4YWE1N2U5OGQxNGVjNTQzODQzOThhOTdlMzAxZGMzM2FhZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaApAQCAtODEsNiArODEsMTAgQEAgV0FTTV9TTE9X
X1BBVEhfSElEREVOX0RFQ0woY2FsbF9pbmRpcmVjdCk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5f
REVDTChjYWxsX2luZGlyZWN0X25vX3Rscyk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChj
YWxsX3JlZik7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsX3JlZl9ub190bHMpOwor
V0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wocmV0dXJuX2NhbGwpOworV0FTTV9TTE9XX1BBVEhf
SElEREVOX0RFQ0wocmV0dXJuX2NhbGxfbm9fdGxzKTsKK1dBU01fU0xPV19QQVRIX0hJRERFTl9E
RUNMKHJldHVybl9jYWxsX2luZGlyZWN0KTsKK1dBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHJl
dHVybl9jYWxsX2luZGlyZWN0X25vX3Rscyk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChz
ZXRfZ2xvYmFsX3JlZik7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChzZXRfZ2xvYmFsX3Jl
Zl9wb3J0YWJsZV9iaW5kaW5nKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKG1lbW9yeV9h
dG9taWNfd2FpdDMyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNw
cAppbmRleCAwZjYyNGUwYjYxZGJiNzhmYjYzMjQxODFiMzYyNDc3ZDAyYTViMjJmLi5iNmZlZjMy
YTM5YWFmOGQ5MDhiYTkzMTFjNGI2MWNiMDNlYTA4YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC0zNjIsNiArMzYyLDEwIEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0CiAgICAgICAgIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLT5hcHBlbmQoeyBs
aW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxXYXNtRW50cnlQdHJUYWc+KGNhbGwpLCBmdW5j
dGlvbkluZGV4U3BhY2UgfSk7CiAgICAgfSk7CiAKKyAgICAvLyBSZXN0b3JlIHN0YWNrIHBvaW50
ZXIgYWZ0ZXIgY2FsbAorICAgIC8vIE5PVEU6IHdlIHVzZSBhZGRQdHIgdG8gZ2VuZXJhdGUgbGVh
CisgICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2Fz
dDxpbnQzMl90Pih0b3RhbEZyYW1lU2l6ZSkpLCBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKICAgICBt
YXJzaGFsbEpTUmVzdWx0KGppdCwgdHlwZURlZmluaXRpb24sIHdhc21GcmFtZUNvbnZlbnRpb24s
IHNhdmVkUmVzdWx0UmVnaXN0ZXJzKTsKIAogICAgIGZvciAoY29uc3QgUmVnaXN0ZXJBdE9mZnNl
dCYgcmVnQXRPZmZzZXQgOiByZWdpc3RlcnNUb1NwaWxsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDU1MjE1
Njc5ZDQ1ZjVkZmNkMTg3MDljMWIwODQ3ZTY5ZTc2MTM1OTEuLjE0YWU0MTk0NWU4OGI1NjYzODQx
NWVmY2E5Mzc1ZWM5MWJkNjYzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC00MTUsNiArNDE1LDEwIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpq
c0NhbGxFbnRyeXBvaW50U2xvdygpCiAgICAgaml0LmxvYWRQdHIoZW50cnlwb2ludExvYWRMb2Nh
dGlvbigpLCBzY3JhdGNoSlNSLnBheWxvYWRHUFIoKSk7CiAgICAgaml0LmNhbGwoc2NyYXRjaEpT
Ui5wYXlsb2FkR1BSKCksIFdhc21FbnRyeVB0clRhZyk7CiAKKyAgICAvLyBSZXN0b3JlIHN0YWNr
IHBvaW50ZXIgYWZ0ZXIgY2FsbAorICAgIC8vIE5PVEU6IHdlIHVzZSBhZGRQdHIgdG8gZ2VuZXJh
dGUgbGVhCisgICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC1zdGF0
aWNfY2FzdDxpbnQzMl90Pih0b3RhbEZyYW1lU2l6ZSkpLCBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisK
ICAgICBtYXJzaGFsbEpTUmVzdWx0KGppdCwgdHlwZURlZmluaXRpb24sIHdhc21DYWxsSW5mbywg
c2F2ZWRSZXN1bHRSZWdpc3RlcnMpOwogCiAgICAgQVNTRVJUKCFSZWdpc3RlclNldDo6cnVudGlt
ZVRhZ1JlZ2lzdGVycygpLmNvbnRhaW5zKEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQ
UikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDA2NjE2NzNiNDc3ZGNi
MmMxYTgyZTI1ZTRmM2RhYmY0NTU1OWFhMjQuLmNiYmNmYWI2ZmRmYThlNGMyMDRhOTU4YjQxNWM1
YTQ3YmM0YzBiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20u
anNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTk4LDYg
Kzk4LDggQEAKICAgICAgICAgImRhdGEuZHJvcCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJl
eHR0YWJsZSIsICAgInZhbHVlIjogIDI1MiwgInJldHVybiI6IFtdLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInNlZ21lbnRfaW5kZXgiLCAgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJzaHJpbmtzIHRoZSBzaXplIG9mIHRoZSBzZWdtZW50IHRvIHplcm8iLCAiZXh0
ZW5kZWRPcCI6IDkgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAgICAgICB7ICJjYXRlZ29y
eSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAg
ICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAi
dmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAogICAgICAg
ICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFs
dWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBh
cmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjog
InRhYmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2NyaXB0aW9uIjogImNhbGwg
YSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKKyAgICAg
ICAgInJldHVybl9jYWxsIjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAg
ICAgICJ2YWx1ZSI6ICAxOCwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAidGFpbCBjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAorICAgICAgICAicmV0dXJu
X2NhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVl
IjogIDE5LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0
YWJsZV9pbmRleCIsInR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJpbmRpcmVj
dCB0YWlsIGNhbGwgYSBmdW5jdGlvbiB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKICAg
ICAgICAgImNhbGxfcmVmIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAg
InZhbHVlIjogIDIwLCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJj
YWxsIGEgZnVuY3Rpb24gcmVmZXJlbmNlIiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3MiOiAgICAg
ICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDQsICJyZXR1cm4iOiBb
ImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAg
ICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAg
ICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAi
dmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAg
ICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZh
bHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6
ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQg
ZnJvbSBtZW1vcnkiIH0sCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNz
LXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCBkM2JmMTEy
MDg0ODk2ZjkyYWFkMWUwMmMwZWU0ODY3ODQyYmFiZTFhLi42ZmIxNTQ1MzE3MWJjZjE5MTEyN2E2
ZDQ3MmVlMDA4NmZjYzM5ZTJmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3Ry
ZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTE4
OTksNiArMTg5OSwxMCBAQCBkZWYgcnVuV2ViQXNzZW1ibHlGdW5jdGlvblJlZmVyZW5jZVNwZWNU
ZXN0KG1vZGUpCiAgICAgcnVuV2ViQXNzZW1ibHlTcGVjVGVzdEJhc2UobW9kZSwgInNwZWMtaGFy
bmVzcyIsICItLXVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXM9dHJ1ZSIpCiBl
bmQKIAorZGVmIHJ1bldlYkFzc2VtYmx5UmV0dXJuQ2FsbFNwZWNUZXN0KG1vZGUpCisgICAgcnVu
V2ViQXNzZW1ibHlTcGVjVGVzdEJhc2UobW9kZSwgInJldHVybi1jYWxsLXNwZWMtaGFybmVzcyIs
ICItLXVzZVdlYkFzc2VtYmx5VGFpbENhbGxzPXRydWUiKQorZW5kCisKIGRlZiBydW5XZWJBc3Nl
bWJseUxvd0V4ZWN1dGFibGVNZW1vcnkoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAg
ICByZXR1cm4gaWYgISRqaXRUZXN0cwogICAgIHJldHVybiBpZiAhJGlzV2FzbVBsYXRmb3JtCi0t
IAoyLjM3LjAKCg==
</data>
<flag name="commit-queue"
          id="489612"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>460626</attachid>
            <date>2022-07-01 15:22:06 -0700</date>
            <delta_ts>2022-07-06 12:45:42 -0700</delta_ts>
            <desc>Implement wasm tail calls</desc>
            <filename>0001-implement-wasm-tail-call.patch</filename>
            <type>text/plain</type>
            <size>1195983</size>
            <attacher name="Tom Tartarin">tom</attacher>
            
              <data encoding="base64">RnJvbSBmYzVjZWMwMGMwMDhkNTcyNTRkODc4ZGFhZGU5ODVjNWJjZWQwMGM5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gVGFydGFyaW4gPHRvbUBsZWFuaW5ndGVjaC5jb20+CkRh
dGU6IE1vbiwgMjcgSnVuIDIwMjIgMTE6Mzk6NTggKzAyMDAKU3ViamVjdDogW1BBVENIXSBpbXBs
ZW1lbnQgd2FzbSB0YWlsIGNhbGwKCi0tLQogSlNUZXN0cy93YXNtLnlhbWwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgIDcgKwogSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMt
aGFybmVzcy5qcyAgICAgIHwgICAgMzggKwogLi4uL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9h
c3luY19pbmRleC5qcyAgIHwgICA0MjYgKwogLi4uL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9z
eW5jX2luZGV4LmpzICAgIHwgICAzODcgKwogLi4uL3dhc20tY29uc3RhbnRzLmpzICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAzODQgKwogLi4uL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMgICAg
ICAgICAgICAgICAgICAgIHwgICA1ODMgKwogSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMt
aGFybmVzcy93YXN0LmpzIHwgMjk3NzcgKysrKysrKysrKysrKysrKwogLi4uL3JldHVybi1jYWxs
LXNwZWMtdGVzdHMvcmV0dXJuX2NhbGwud2FzdCAgIHwgICAyMDIgKwogLi4uL3JldHVybl9jYWxs
Lndhc3QuanMgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMzIgKwogLi4uL3JldHVybl9jYWxs
X2luZGlyZWN0Lndhc3QgICAgICAgICAgICAgICAgIHwgICA1MzYgKwogLi4uL3JldHVybl9jYWxs
X2luZGlyZWN0Lndhc3QuanMgICAgICAgICAgICAgIHwgICAyMzIgKwogSlNUZXN0cy93YXNtL3Jl
dHVybi1jYWxsL3JldHVybi1jYWxsLmpzICAgICAgIHwgICA3MTAgKwogSlNUZXN0cy93YXNtL3dh
c20uanNvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDIgKwogLi4uL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmggICAgICAgICAgIHwgICAgIDcgKwogLi4uL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmggICAgICAgICAgIHwgICAgIDYgKwogLi4uL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclJJU0NWNjQuaCAgICAgICAgIHwgICAgMTAgKwogLi4uL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oICAgICAgICAgIHwgICAgMTQgKwogLi4uL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiAgIHwgICAgNDAgKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIHwgICAgIDQgKwogLi4uL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtICAgICAgICAgICAgIHwgICAgMTIgKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbSAgIHwgICAxOTggKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCAgIHwgICAgIDEgKwogLi4uL3dhc20vV2FzbUFp
cklSR2VuZXJhdG9yLmNwcCAgICAgICAgICAgICAgIHwgICAzMjAgKy0KIC4uLi9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCB8ICAgMzQxICstCiAuLi4vd2FzbS9XYXNt
Q2FsbGluZ0NvbnZlbnRpb24uaCAgICAgICAgICAgICAgfCAgICA4NiArLQogLi4uL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggIHwgICAgNzAgKy0KIC4uLi93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAgICAgICAgICAgICAgICB8ICAgMTE0ICstCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCAgfCAgICAzMCArCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmggICAgfCAgICAgNCArCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgICAgfCAgICAgNCArCiAuLi4vd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCAgICAgICAgICAgfCAgICAgNCArCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24gICAgICAgICAgfCAgICAgMiArCiBUb29scy9TY3Jp
cHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzICAgICAgICAgICAgfCAgICAgNCArCiAzMyBmaWxlcyBj
aGFuZ2VkLCAzNDYxNyBpbnNlcnRpb25zKCspLCA3MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzLmpzCiBjcmVhdGUg
bW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9hc3luY19p
bmRleC5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVj
LWhhcm5lc3Mvc3luY19pbmRleC5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9y
ZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMuanMKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBKU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dhc20tbW9kdWxlLWJ1
aWxkZXIuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3Bl
Yy1oYXJuZXNzL3dhc3QuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0dXJu
LWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbC53YXN0CiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNU
ZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGwud2FzdC5qcwogY3Jl
YXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vcmV0
dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0LmpzCiBjcmVhdGUg
bW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL3JldHVybi1jYWxsL3JldHVybi1jYWxsLmpzCgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtLnlhbWwgYi9KU1Rlc3RzL3dhc20ueWFtbAppbmRleCA5Y2Q0
MGViZjk4YjkzOWYxYjBmN2I3NDAyZTZkMDE1MTMwYTQ5NDgyLi5iMThjMWFkYmFjN2Y1MjMyZGY2
M2Y4MzU2M2NjZTZjN2JkNmQzZjU3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20ueWFtbAorKysg
Yi9KU1Rlc3RzL3dhc20ueWFtbApAQCAtMjk1LDYgKzI5NSwxMyBAQAogLSBwYXRoOiB3YXNtL3Nw
ZWMtdGVzdHMvdXRmOC1pbnZhbGlkLWVuY29kaW5nLndhc3QuanMKICAgY21kOiBydW5XZWJBc3Nl
bWJseVNwZWNUZXN0IDpub3JtYWwKIAorLSBwYXRoOiB3YXNtL3JldHVybi1jYWxsCisgIGNtZDog
cnVuV2ViQXNzZW1ibHlTdWl0ZSgiLS11c2VXZWJBc3NlbWJseVRhaWxDYWxscz10cnVlIikKKy0g
cGF0aDogd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVybl9jYWxsLndhc3QuanMKKyAg
Y21kOiBydW5XZWJBc3NlbWJseVJldHVybkNhbGxTcGVjVGVzdCA6bm9ybWFsCistIHBhdGg6IHdh
c20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0LmpzCisg
IGNtZDogcnVuV2ViQXNzZW1ibHlSZXR1cm5DYWxsU3BlY1Rlc3QgOm5vcm1hbAorCiAtIHBhdGg6
IHdhc20vbW9kdWxlcy9ydW4tZnJvbS13YXNtLndhc20KICAgY21kOiBydW5XZWJBc3NlbWJseQog
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzLmpzIGIv
SlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWVl
YjU5MzE2ZTAyNGVlMjdmY2UzZTEwZjQyYTMzZTk4NDNjYzMyCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy5qcwpAQCAtMCwwICsxLDM4IEBA
CisidXNlIHN0cmljdCI7CisKKy8vIFRoaXMgaXMgb3VyIG5pZnR5IHdheSB0byBtYWtlIG1vZHVs
ZXMgc3luY2hyb25vdXMuCitsZXQgYXNzZXJ0OworaW1wb3J0KCcuL2Fzc2VydC5qcycpLnRoZW4o
KG1vZHVsZSkgPT4geworICAgIGFzc2VydCA9IG1vZHVsZTsKK30sICR2bS5jcmFzaCk7CitkcmFp
bk1pY3JvdGFza3MoKTsKKworZnVuY3Rpb24gdGVzdChmdW5jLCBkZXNjcmlwdGlvbikgeworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHByaW50
KCJVbmV4cGVjdGVkIGV4Y2VwdGlvbjoiLCBkZXNjcmlwdGlvbik7CisgICAgICAgIHRocm93IGU7
CisgICAgfQorfQorCitmdW5jdGlvbiBwcm9taXNlX3Rlc3QoZnVuYywgZGVzY3JpcHRpb24pIHsK
KyAgICBhc3NlcnQuYXN5bmNUZXN0KGZ1bmMoKSk7Cit9OworCitsZXQgYXNzZXJ0X2VxdWFscyA9
IGFzc2VydC5lcTsKK2xldCBhc3NlcnRfdHJ1ZSA9ICh4KSA9PiBhc3NlcnQuZXEoeCx0cnVlKTsK
K2xldCBhc3NlcnRfZmFsc2UgPSAoeCkgPT4gYXNzZXJ0LmVxKHgsZmFsc2UpOworbGV0IGFzc2Vy
dF91bnJlYWNoZWQgPSAoKSA9PiB7CisgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgaGF2ZSBi
ZWVuIHVucmVhY2hhYmxlIik7Cit9OworCitsZXQgY29uc29sZSA9IHsKKyAgICBsb2coLi4uYXJn
cykgeworICAgICAgICBwcmludCguLi5hcmdzKTsKKyAgICB9Cit9OworCitsb2FkKCIuL3JldHVy
bi1jYWxsLXNwZWMtaGFybmVzcy9zeW5jX2luZGV4LmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOwor
bG9hZCgiLi9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMuanMiLCAiY2Fs
bGVyIHJlbGF0aXZlIik7Citsb2FkKCIuL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy93YXNtLW1v
ZHVsZS1idWlsZGVyLmpzIiwgImNhbGxlciByZWxhdGl2ZSIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy9hc3luY19pbmRleC5qcyBiL0pTVGVzdHMv
d2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3MvYXN5bmNfaW5kZXguanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzIwMDAxOWFjNjk5OTA0NGVmOTUwNGZmMDgxMThjNzM0YzdlMGIxNgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3MvYXN5bmNfaW5kZXguanMK
QEAgLTAsMCArMSw0MjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxOCBXZWJBc3NlbWJseSBDb21t
dW5pdHkgR3JvdXAgcGFydGljaXBhbnRzCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
ICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworInVzZSBzdHJpY3QiOworCitsZXQgdGVz
dE51bSA9IChmdW5jdGlvbigpIHsKKyAgbGV0IGNvdW50ID0gMTsKKyAgcmV0dXJuIGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiBgIyR7Y291bnQrK30gYDsKKyAgfTsKK30pKCk7CisKK2Z1bmN0aW9u
IHVuaXF1ZVRlc3QoZnVuYywgZGVzYykgeworICB0ZXN0KGZ1bmMsIHRlc3ROdW0oKSArIGRlc2Mp
OworfQorCisvLyBXUFQncyBhc3NlcnRfdGhyb3cgdXNlcyBhIGxpc3Qgb2YgcHJlZGVmaW5lZCwg
aGFyZGNvZGVkIGtub3duIGVycm9ycy4gU2luY2UKKy8vIGl0IGlzIG5vdCBhd2FyZSBvZiB0aGUg
V2ViQXNzZW1ibHkgZXJyb3IgdHlwZXMgKHlldCksIGltcGxlbWVudCBvdXIgb3duCisvLyB2ZXJz
aW9uLgorZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGZ1bmMsIGVycikgeworICBsZXQgY2F1Z2h0ID0g
ZmFsc2U7CisgIHRyeSB7CisgICAgZnVuYygpOworICB9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0
X3RydWUoCisgICAgICBlIGluc3RhbmNlb2YgZXJyLAorICAgICAgYGV4cGVjdGVkICR7ZXJyLm5h
bWV9LCBvYnNlcnZlZCAke2UuY29uc3RydWN0b3IubmFtZX1gCisgICAgKTsKKyAgICBjYXVnaHQg
PSB0cnVlOworICB9CisgIGFzc2VydF90cnVlKGNhdWdodCwgdGVzdE51bSgpICsgImFzc2VydFRo
cm93cyBtdXN0IGNhdGNoIGFueSBlcnJvci4iKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFdBU1QgSEFSTkVTUyAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2Nv
bnN0IEVYUEVDVF9JTlZBTElEID0gZmFsc2U7CisKKy8qIERBVEEgKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwor
bGV0IGV4dGVybnJlZnMgPSB7fTsKK2xldCBleHRlcm5zeW0gPSBTeW1ib2woImV4dGVybnJlZiIp
OworZnVuY3Rpb24gZXh0ZXJucmVmKHMpIHsKKyAgaWYgKCEgKHMgaW4gZXh0ZXJucmVmcykpIGV4
dGVybnJlZnNbc10gPSB7W2V4dGVybnN5bV06IHN9OworICByZXR1cm4gZXh0ZXJucmVmc1tzXTsK
K30KK2Z1bmN0aW9uIGlzX2V4dGVybnJlZih4KSB7CisgIHJldHVybiAoeCAhPT0gbnVsbCAmJiBl
eHRlcm5zeW0gaW4geCkgPyAxIDogMDsKK30KK2Z1bmN0aW9uIGlzX2Z1bmNyZWYoeCkgeworICBy
ZXR1cm4gdHlwZW9mIHggPT09ICJmdW5jdGlvbiIgPyAxIDogMDsKK30KK2Z1bmN0aW9uIGVxX2V4
dGVybnJlZih4LCB5KSB7CisgIHJldHVybiB4ID09PSB5ID8gMSA6IDA7Cit9CitmdW5jdGlvbiBl
cV9mdW5jcmVmKHgsIHkpIHsKKyAgcmV0dXJuIHggPT09IHkgPyAxIDogMDsKK30KKworLy8gRGVm
YXVsdCBpbXBvcnRzLgordmFyIHJlZ2lzdHJ5ID0ge307CisKKy8vIEFsbCB0ZXN0cyBydW4gYXN5
bmNocm9ub3VzbHkgYW5kIHJldHVybiB0aGVpciByZXN1bHRzIGFzIHByb21pc2VzLiBUbyBlbnN1
cmUKKy8vIHRoYXQgYWxsIHRlc3RzIGV4ZWN1dGUgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHdlIGNo
YWluIHRoZSBwcm9taXNlcyB0b2dldGhlcgorLy8gc28gdGhhdCBhIHRlc3QgaXMgb25seSBleGVj
dXRlZCB3aGVuIGFsbCBwcmV2aW91cyB0ZXN0cyBoYXZlIGZpbmlzaGVkIHRoZWlyCisvLyBleGVj
dXRpb24uCitsZXQgY2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTsKKworLy8gUmVzZXRzIHRoZSBy
ZWdpc3RyeSBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgV1BUIHRlc3RzLgorZnVuY3Rpb24gcmVpbml0
aWFsaXplUmVnaXN0cnkoKSB7CisgIGlmICh0eXBlb2YgV2ViQXNzZW1ibHkgPT09ICJ1bmRlZmlu
ZWQiKSByZXR1cm47CisKKyAgY2hhaW4gPSBjaGFpbi50aGVuKF8gPT4geworICAgIGxldCBzcGVj
dGVzdCA9IHsKKyAgICAgIGV4dGVybnJlZjogZXh0ZXJucmVmLAorICAgICAgaXNfZXh0ZXJucmVm
OiBpc19leHRlcm5yZWYsCisgICAgICBpc19mdW5jcmVmOiBpc19mdW5jcmVmLAorICAgICAgZXFf
ZXh0ZXJucmVmOiBlcV9leHRlcm5yZWYsCisgICAgICBlcV9mdW5jcmVmOiBlcV9mdW5jcmVmLAor
ICAgICAgcHJpbnQ6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICBwcmludF9pMzI6
IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCisgICAgICBwcmludF9pMzJfZjMyOiBjb25zb2xl
LmxvZy5iaW5kKGNvbnNvbGUpLAorICAgICAgcHJpbnRfZjY0X2Y2NDogY29uc29sZS5sb2cuYmlu
ZChjb25zb2xlKSwKKyAgICAgIHByaW50X2YzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwK
KyAgICAgIHByaW50X2Y2NDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgIGdsb2Jh
bF9pMzI6IDY2NiwKKyAgICAgIGdsb2JhbF9mMzI6IDY2NiwKKyAgICAgIGdsb2JhbF9mNjQ6IDY2
NiwKKyAgICAgIHRhYmxlOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoeworICAgICAgICBpbml0aWFs
OiAxMCwKKyAgICAgICAgbWF4aW11bTogMjAsCisgICAgICAgIGVsZW1lbnQ6ICJhbnlmdW5jIgor
ICAgICAgfSksCisgICAgICBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFs
OiAxLCBtYXhpbXVtOiAyIH0pCisgICAgfTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgIGdl
dCh0YXJnZXQsIHByb3ApIHsKKyAgICAgICAgcmV0dXJuIHByb3AgaW4gdGFyZ2V0ID8gdGFyZ2V0
W3Byb3BdIDoge307CisgICAgICB9CisgICAgfTsKKyAgICByZWdpc3RyeSA9IG5ldyBQcm94eSh7
IHNwZWN0ZXN0IH0sIGhhbmRsZXIpOworICB9KTsKKworICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGdlbmVyYXRlZCBqcyB0ZXN0IGZpbGUuIEJ5CisgIC8v
IGFkZGluZyB0aGUgY2hhaW4gYXMgYSBwcm9taXNlX3Rlc3QgaGVyZSB3ZSBtYWtlIHN1cmUgdGhh
dCB0aGUgV1BUIGhhcm5lc3MKKyAgLy8gd2FpdHMgZm9yIGFsbCB0ZXN0cyBpbiB0aGUgY2hhaW4g
dG8gZmluaXNoLgorICBwcm9taXNlX3Rlc3QoXyA9PiBjaGFpbiwgdGVzdE51bSgpICsgIlJlaW5p
dGlhbGl6ZSB0aGUgZGVmYXVsdCBpbXBvcnRzIik7Cit9CisKK3JlaW5pdGlhbGl6ZVJlZ2lzdHJ5
KCk7CisKKy8qIFdBU1QgUE9MWUZJTEwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworZnVuY3Rpb24gYmluYXJ5KGJ5dGVzKSB7
CisgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKKyAgbGV0IHZp
ZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVz
Lmxlbmd0aDsgKytpKSB7CisgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7CisgIH0K
KyAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLyoqCisgKiBSZXR1cm5zIGEgY29tcGlsZWQgbW9kdWxl
LCBvciB0aHJvd3MgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGF0IGNvbXBpbGF0aW9uLgorICovCitm
dW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBjb25zdCB0ZXN0ID0gdmFs
aWQKKyAgICA/ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgY29tcGlsYXRpb24gc3VjY2VlZHMiCisg
ICAgOiAiVGVzdCB0aGF0IFdlYkFzc2VtYmx5IGNvbXBpbGF0aW9uIGZhaWxzIjsKKyAgY29uc3Qg
bG9jID0gbmV3IEVycm9yKCkuc3RhY2sudG9TdHJpbmcoKS5yZXBsYWNlKCJFcnJvciIsICIiKTsK
KyAgbGV0IGJ1ZmZlciA9IGJpbmFyeShieXRlcyk7CisgIGxldCB2YWxpZGF0ZWQgPSBXZWJBc3Nl
bWJseS52YWxpZGF0ZShidWZmZXIpOworCisgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgYXNzZXJ0
X2VxdWFscyh2YWxpZCwgdmFsaWRhdGVkKTsKKyAgfSwgdGVzdCk7CisKKyAgY2hhaW4gPSBjaGFp
bi50aGVuKF8gPT4gV2ViQXNzZW1ibHkuY29tcGlsZShidWZmZXIpKS50aGVuKAorICAgIG1vZHVs
ZSA9PiB7CisgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSh2YWxp
ZCwgbG9jKTsKKyAgICAgIH0sIHRlc3QpOworICAgICAgcmV0dXJuIG1vZHVsZTsKKyAgICB9LAor
ICAgIGVycm9yID0+IHsKKyAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgIGFzc2VydF90
cnVlKAorICAgICAgICAgICF2YWxpZCwKKyAgICAgICAgICBgV2ViQXNzZW1ibHkuY29tcGlsZSBm
YWlsZWQgdW5leHBlY3RlZGx5IHdpdGggJHtlcnJvcn0gYXQge2xvY31gCisgICAgICAgICk7Cisg
ICAgICB9LCB0ZXN0KTsKKyAgICB9CisgICk7CisgIHJldHVybiBjaGFpbjsKK30KKworZnVuY3Rp
b24gYXNzZXJ0X2ludmFsaWQoYnl0ZXMpIHsKKyAgbW9kdWxlKGJ5dGVzLCBFWFBFQ1RfSU5WQUxJ
RCk7Cit9CisKK2NvbnN0IGFzc2VydF9tYWxmb3JtZWQgPSBhc3NlcnRfaW52YWxpZDsKKworZnVu
Y3Rpb24gaW5zdGFuY2UoYnl0ZXMsIGltcG9ydHMsIHZhbGlkID0gdHJ1ZSkgeworICBjb25zdCB0
ZXN0ID0gdmFsaWQKKyAgICA/ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgaW5zdGFudGlhdGlvbiBz
dWNjZWVkcyIKKyAgICA6ICJUZXN0IHRoYXQgV2ViQXNzZW1ibHkgaW5zdGFudGlhdGlvbiBmYWls
cyI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgi
RXJyb3IiLCAiIik7CisgIGNoYWluID0gUHJvbWlzZS5hbGwoW2ltcG9ydHMsIGNoYWluXSkKKyAg
ICAudGhlbih2YWx1ZXMgPT4geworICAgICAgbGV0IGltcG9ydHMgPSB2YWx1ZXNbMF0gPyB2YWx1
ZXNbMF0gOiByZWdpc3RyeTsKKyAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShi
aW5hcnkoYnl0ZXMpLCBpbXBvcnRzKTsKKyAgICB9KQorICAgIC50aGVuKAorICAgICAgcGFpciA9
PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUodmFs
aWQsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgICByZXR1cm4gcGFpci5pbnN0YW5j
ZTsKKyAgICAgIH0sCisgICAgICBlcnJvciA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7
CisgICAgICAgICAgYXNzZXJ0X3RydWUoCisgICAgICAgICAgICAhdmFsaWQsCisgICAgICAgICAg
ICBgdW5leHBlY3RlZCBpbnN0YW50aWF0aW9uIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xv
Y31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICAgIHJldHVybiBlcnJv
cjsKKyAgICAgIH0KKyAgICApOworICByZXR1cm4gY2hhaW47Cit9CisKK2Z1bmN0aW9uIGV4cG9y
dHMoaW5zdGFuY2UpIHsKKyAgcmV0dXJuIGluc3RhbmNlLnRoZW4oaW5zdCA9PiB7CisgICAgcmV0
dXJuIHsgbW9kdWxlOiBpbnN0LmV4cG9ydHMsIHNwZWN0ZXN0OiByZWdpc3RyeS5zcGVjdGVzdCB9
OworICB9KTsKK30KKworZnVuY3Rpb24gY2FsbChpbnN0YW5jZSwgbmFtZSwgYXJncykgeworICBy
ZXR1cm4gUHJvbWlzZS5hbGwoW2luc3RhbmNlLCBjaGFpbl0pLnRoZW4odmFsdWVzID0+IHsKKyAg
ICByZXR1cm4gdmFsdWVzWzBdLmV4cG9ydHNbbmFtZV0oLi4uYXJncyk7CisgIH0pOworfQorCitm
dW5jdGlvbiBydW4oYWN0aW9uKSB7CisgIGNvbnN0IHRlc3QgPSAiUnVuIGEgV2ViQXNzZW1ibHkg
dGVzdCB3aXRob3V0IHNwZWNpYWwgYXNzZXJ0aW9ucyI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJv
cigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGNoYWluID0gUHJv
bWlzZS5hbGwoW2NoYWluLCBhY3Rpb24oKV0pCisgICAgLnRoZW4oCisgICAgICBfID0+IHsKKyAg
ICAgICAgdW5pcXVlVGVzdChfID0+IHt9LCB0ZXN0KTsKKyAgICAgIH0sCisgICAgICBlcnJvciA9
PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoCisg
ICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgIGB1bmV4cGVjdGVkIHJ1bnRpbWUgZXJyb3Is
IG9ic2VydmVkICR7ZXJyb3J9ICR7bG9jfWAKKyAgICAgICAgICApOworICAgICAgICB9LCAicnVu
Iik7CisgICAgICB9CisgICAgKQorICAgIC8vIENsZWFyIGFsbCBleGNlcHRpb25zLCBzbyB0aGF0
IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVkLgorICAgIC5jYXRjaChfID0+IHt9KTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X3RyYXAoYWN0aW9uKSB7CisgIGNvbnN0IHRlc3QgPSAiVGVzdCB0
aGF0IGEgV2ViQXNzZW1ibHkgY29kZSB0cmFwcyI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigp
LnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7CisgIGNoYWluID0gUHJvbWlz
ZS5hbGwoW2NoYWluLCBhY3Rpb24oKV0pCisgICAgLnRoZW4oCisgICAgICByZXN1bHQgPT4gewor
ICAgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICAgIGFzc2VydF90cnVlKGZhbHNlLCBs
b2MpOworICAgICAgICB9LCB0ZXN0KTsKKyAgICAgIH0sCisgICAgICBlcnJvciA9PiB7CisgICAg
ICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoCisgICAgICAgICAg
ICBlcnJvciBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAg
IGBleHBlY3RlZCBydW50aW1lIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xvY31gCisgICAg
ICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9CisgICAgKQorICAgIC8vIENsZWFy
IGFsbCBleGNlcHRpb25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVkLgor
ICAgIC5jYXRjaChfID0+IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3JldHVybihhY3Rpb24s
IC4uLmV4cGVjdGVkKSB7CisgIGNvbnN0IHRlc3QgPSAiVGVzdCB0aGF0IGEgV2ViQXNzZW1ibHkg
Y29kZSByZXR1cm5zIGEgc3BlY2lmaWMgcmVzdWx0IjsKKyAgY29uc3QgbG9jID0gbmV3IEVycm9y
KCkuc3RhY2sudG9TdHJpbmcoKS5yZXBsYWNlKCJFcnJvciIsICIiKTsKKyAgY2hhaW4gPSBQcm9t
aXNlLmFsbChbYWN0aW9uKCksIGNoYWluXSkKKyAgICAudGhlbigKKyAgICAgIHZhbHVlcyA9PiB7
CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgaWYgKGFjdHVhbCA9PT0gdW5k
ZWZpbmVkKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBbXTsKKyAgICAgICAgICB9IGVsc2UgaWYg
KCFBcnJheS5pc0FycmF5KGFjdHVhbCkpIHsKKyAgICAgICAgICAgIGFjdHVhbCA9IFthY3R1YWxd
OworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoYWN0dWFsLmxlbmd0aCAhPT0gZXhwZWN0ZWQu
bGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhwZWN0ZWQubGVuZ3RoICsg
IiB2YWx1ZShzKSBleHBlY3RlZCwgZ290ICIgKyBhY3R1YWwubGVuZ3RoKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3R1YWwubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRbaV0pIHsKKyAgICAgICAgICAgICAgY2FzZSAibmFu
OmNhbm9uaWNhbCI6CisgICAgICAgICAgICAgIGNhc2UgIm5hbjphcml0aG1ldGljIjoKKyAgICAg
ICAgICAgICAgY2FzZSAibmFuOmFueSI6CisgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IEpT
IGNhbid0IHJlbGlhYmx5IGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBOYU4gdmFsdWVzLAorICAgICAg
ICAgICAgICAgIC8vIHNvIHRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gdGVzdCB0aGF0IGl0J3MgYSBj
YW5vbmljYWwgTmFOLgorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKE51bWJlci5pc05hTihh
Y3R1YWxbaV0pLCBgZXhwZWN0ZWQgTmFOLCBvYnNlcnZlZCAke2FjdHVhbFtpXX0uYCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlICJyZWYuZnVuYyI6CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X3RydWUodHlwZW9mIGFjdHVhbFtpXSA9PT0gImZ1bmN0aW9uIiwg
YGV4cGVjdGVkIFdhc20gZnVuY3Rpb24sIGdvdCAke2FjdHVhbFtpXX1gKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgInJlZi5leHRlcm4iOgorICAgICAgICAg
ICAgICAgIGFzc2VydF90cnVlKGFjdHVhbFtpXSAhPT0gbnVsbCwgYGV4cGVjdGVkIFdhc20gcmVm
ZXJlbmNlLCBnb3QgJHthY3R1YWxbaV19YCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYWN0dWFs
W2ldLCBleHBlY3RlZFtpXSwgbG9jKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sIHRlc3QpOworICAgICAgfSwKKyAgICAgIGVycm9yID0+IHsKKyAgICAgICAgdW5pcXVl
VGVzdChfID0+IHsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZSgKKyAgICAgICAgICAgIGZhbHNlLAor
ICAgICAgICAgICAgYHVuZXhwZWN0ZWQgcnVudGltZSBlcnJvciwgb2JzZXJ2ZWQgJHtlcnJvcn0g
JHtsb2N9YAorICAgICAgICAgICk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfQorICAgICkK
KyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdl
dCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2xldCBTdGFja092ZXJmbG93
OwordHJ5IHsKKyAgKGZ1bmN0aW9uIGYoKSB7CisgICAgMSArIGYoKTsKKyAgfSkoKTsKK30gY2F0
Y2ggKGUpIHsKKyAgU3RhY2tPdmVyZmxvdyA9IGUuY29uc3RydWN0b3I7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF9leGhhdXN0aW9uKGFjdGlvbikgeworICBjb25zdCB0ZXN0ID0gIlRlc3QgdGhhdCBh
IFdlYkFzc2VtYmx5IGNvZGUgZXhoYXV0cyB0aGUgc3RhY2sgc3BhY2UiOworICBjb25zdCBsb2Mg
PSBuZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9yIiwgIiIpOworICBj
aGFpbiA9IFByb21pc2UuYWxsKFthY3Rpb24oKSwgY2hhaW5dKQorICAgIC50aGVuKAorICAgICAg
XyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUo
ZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfSwKKyAgICAgIGVycm9yID0+
IHsKKyAgICAgICAgdW5pcXVlVGVzdChfID0+IHsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZSgKKyAg
ICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgU3RhY2tPdmVyZmxvdywKKyAgICAgICAgICAgIGBl
eHBlY3RlZCBydW50aW1lIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xvY31gCisgICAgICAg
ICAgKTsKKyAgICAgICAgfSwgdGVzdCk7CisgICAgICB9CisgICAgKQorICAgIC8vIENsZWFyIGFs
bCBleGNlcHRpb25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVkLgorICAg
IC5jYXRjaChfID0+IHt9KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3VubGlua2FibGUoYnl0ZXMp
IHsKKyAgY29uc3QgdGVzdCA9ICJUZXN0IHRoYXQgYSBXZWJBc3NlbWJseSBtb2R1bGUgaXMgdW5s
aW5rYWJsZSI7CisgIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVw
bGFjZSgiRXJyb3IiLCAiIik7CisgIGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lO
VkFMSUQpCisgICAgLnRoZW4oCisgICAgICByZXN1bHQgPT4geworICAgICAgICB1bmlxdWVUZXN0
KF8gPT4geworICAgICAgICAgIGFzc2VydF90cnVlKAorICAgICAgICAgICAgcmVzdWx0IGluc3Rh
bmNlb2YgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAorICAgICAgICAgICAgYGV4cGVjdGVkIGxpbmsg
ZXJyb3IsIG9ic2VydmVkICR7cmVzdWx0fSAke2xvY31gCisgICAgICAgICAgKTsKKyAgICAgICAg
fSwgdGVzdCk7CisgICAgICB9LAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9
PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3Qp
OworICAgICAgfQorICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBz
dWJzZXF1ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydF91bmluc3RhbnRpYWJsZShieXRlcykgeworICBjb25zdCB0ZXN0ID0g
IlRlc3QgdGhhdCBhIFdlYkFzc2VtYmx5IG1vZHVsZSBpcyB1bmluc3RhbnRpYWJsZSI7CisgIGNv
bnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAi
Iik7CisgIGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lOVkFMSUQpCisgICAgLnRo
ZW4oCisgICAgICByZXN1bHQgPT4geworICAgICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAg
ICAgIGFzc2VydF90cnVlKAorICAgICAgICAgICAgcmVzdWx0IGluc3RhbmNlb2YgV2ViQXNzZW1i
bHkuUnVudGltZUVycm9yLAorICAgICAgICAgICAgYGV4cGVjdGVkIGxpbmsgZXJyb3IsIG9ic2Vy
dmVkICR7cmVzdWx0fSAke2xvY31gCisgICAgICAgICAgKTsKKyAgICAgICAgfSwgdGVzdCk7Cisg
ICAgICB9LAorICAgICAgXyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAg
ICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfQor
ICAgICkKKyAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRl
c3RzIGdldCBleGVjdXRlZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2Z1bmN0aW9uIHJl
Z2lzdGVyKG5hbWUsIGluc3RhbmNlKSB7CisgIGNvbnN0IHRlc3QgPQorICAgICJUZXN0IHRoYXQg
dGhlIGV4cG9ydHMgb2YgYSBXZWJBc3NlbWJseSBtb2R1bGUgY2FuIGJlIHJlZ2lzdGVyZWQiOwor
ICBjb25zdCBsb2MgPSBuZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9y
IiwgIiIpOworICBsZXQgc3RhY2sgPSBuZXcgRXJyb3IoKTsKKyAgY2hhaW4gPSBQcm9taXNlLmFs
bChbaW5zdGFuY2UsIGNoYWluXSkKKyAgICAudGhlbigKKyAgICAgIHZhbHVlcyA9PiB7CisgICAg
ICAgIHJlZ2lzdHJ5W25hbWVdID0gdmFsdWVzWzBdLmV4cG9ydHM7CisgICAgICB9LAorICAgICAg
XyA9PiB7CisgICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUo
ZmFsc2UsIGxvYyk7CisgICAgICAgIH0sIHRlc3QpOworICAgICAgfQorICAgICkKKyAgICAvLyBD
bGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdldCBleGVjdXRl
ZC4KKyAgICAuY2F0Y2goXyA9PiB7fSk7Cit9CisKK2Z1bmN0aW9uIGdldChpbnN0YW5jZSwgbmFt
ZSkgeworICBjb25zdCB0ZXN0ID0gIlRlc3QgdGhhdCBhbiBleHBvcnQgb2YgYSBXZWJBc3NlbWJs
eSBpbnN0YW5jZSBjYW4gYmUgYWNxdWlyZWQiOworICBjb25zdCBsb2MgPSBuZXcgRXJyb3IoKS5z
dGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9yIiwgIiIpOworICBjaGFpbiA9IFByb21pc2Uu
YWxsKFtpbnN0YW5jZSwgY2hhaW5dKS50aGVuKAorICAgIHZhbHVlcyA9PiB7CisgICAgICBsZXQg
diA9IHZhbHVlc1swXS5leHBvcnRzW25hbWVdOworICAgICAgcmV0dXJuICh2IGluc3RhbmNlb2Yg
V2ViQXNzZW1ibHkuR2xvYmFsKSA/IHYudmFsdWUgOiB2OworICAgIH0sCisgICAgXyA9PiB7Cisg
ICAgICB1bmlxdWVUZXN0KF8gPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShmYWxzZSwgbG9jKTsK
KyAgICAgIH0sIHRlc3QpOworICAgIH0KKyAgKTsKKyAgcmV0dXJuIGNoYWluOworfQorCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3N5bmNfaW5kZXgu
anMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3N5bmNfaW5kZXguanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2VkOWYyOTE1OTdjN2U0Y2ZiMzYwOTFmNGQ4ODEwYmFlYTZjNGRlZAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvc3lu
Y19pbmRleC5qcwpAQCAtMCwwICsxLDM4NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFdlYkFz
c2VtYmx5IENvbW11bml0eSBHcm91cCBwYXJ0aWNpcGFudHMKKyAqCisgKiBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAq
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisKKyd1c2Ugc3RyaWN0JzsK
KworbGV0IHRlc3ROdW0gPSAoZnVuY3Rpb24oKSB7CisgICAgbGV0IGNvdW50ID0gMTsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBgIyR7Y291bnQrK30gYDsKKyAgICB9
Cit9KSgpOworCisvLyBXUFQncyBhc3NlcnRfdGhyb3cgdXNlcyBhIGxpc3Qgb2YgcHJlZGVmaW5l
ZCwgaGFyZGNvZGVkIGtub3duIGVycm9ycy4gU2luY2UKKy8vIGl0IGlzIG5vdCBhd2FyZSBvZiB0
aGUgV2ViQXNzZW1ibHkgZXJyb3IgdHlwZXMgKHlldCksIGltcGxlbWVudCBvdXIgb3duCisvLyB2
ZXJzaW9uLgorZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGZ1bmMsIGVycikgeworICAgIGxldCBjYXVn
aHQgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaChlKSB7
CisgICAgICAgIGFzc2VydF90cnVlKGUgaW5zdGFuY2VvZiBlcnIsIGBleHBlY3RlZCAke2Vyci5u
YW1lfSwgb2JzZXJ2ZWQgJHtlLmNvbnN0cnVjdG9yLm5hbWV9YCk7CisgICAgICAgIGNhdWdodCA9
IHRydWU7CisgICAgfQorICAgIGFzc2VydF90cnVlKGNhdWdodCwgdGVzdE51bSgpICsgImFzc2Vy
dFRocm93cyBtdXN0IGNhdGNoIGFueSBlcnJvci4iKQorfQorCisvKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBXQVNUIEhBUk5FU1MgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8v
IEZvciBhc3NlcnRpb25zIGludGVybmFsIHRvIG91ciB0ZXN0IGhhcm5lc3MuCitmdW5jdGlvbiBf
YXNzZXJ0KHgpIHsKKyAgICBpZiAoIXgpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3Nl
cnRpb24gZmFpbHVyZTogJHt4fWApOworICAgIH0KK30KKworLy8gQSBzaW1wbGUgc3VtIHR5cGUg
dGhhdCBjYW4gZWl0aGVyIGJlIGEgdmFsaWQgVmFsdWUgb3IgYW4gRXJyb3IuCitmdW5jdGlvbiBS
ZXN1bHQodHlwZSwgbWF5YmVWYWx1ZSkgeworICAgIHRoaXMudmFsdWUgPSBtYXliZVZhbHVlOwor
ICAgIHRoaXMudHlwZSA9IHR5cGU7Cit9OworCitSZXN1bHQuVkFMVUUgPSAnVkFMVUUnOworUmVz
dWx0LkVSUk9SID0gJ0VSUk9SJzsKKworZnVuY3Rpb24gVmFsdWVSZXN1bHQodmFsKSB7IHJldHVy
biBuZXcgUmVzdWx0KFJlc3VsdC5WQUxVRSwgdmFsKTsgfQorZnVuY3Rpb24gRXJyb3JSZXN1bHQo
ZXJyKSB7IHJldHVybiBuZXcgUmVzdWx0KFJlc3VsdC5FUlJPUiwgZXJyKTsgfQorCitSZXN1bHQu
cHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMudHlwZSA9PT0gUmVz
dWx0LkVSUk9SOyB9CisKK2NvbnN0IEVYUEVDVF9JTlZBTElEID0gZmFsc2U7CisKKy8qIERBVEEg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKi8KKworbGV0IGV4dGVybnJlZnMgPSB7fTsKK2xldCBleHRlcm5zeW0gPSBT
eW1ib2woImV4dGVybnJlZiIpOworZnVuY3Rpb24gZXh0ZXJucmVmKHMpIHsKKyAgaWYgKCEgKHMg
aW4gZXh0ZXJucmVmcykpIGV4dGVybnJlZnNbc10gPSB7W2V4dGVybnN5bV06IHN9OworICByZXR1
cm4gZXh0ZXJucmVmc1tzXTsKK30KK2Z1bmN0aW9uIGlzX2V4dGVybnJlZih4KSB7CisgIHJldHVy
biAoeCAhPT0gbnVsbCAmJiBleHRlcm5zeW0gaW4geCkgPyAxIDogMDsKK30KK2Z1bmN0aW9uIGlz
X2Z1bmNyZWYoeCkgeworICByZXR1cm4gdHlwZW9mIHggPT09ICJmdW5jdGlvbiIgPyAxIDogMDsK
K30KK2Z1bmN0aW9uIGVxX2V4dGVybnJlZih4LCB5KSB7CisgIHJldHVybiB4ID09PSB5ID8gMSA6
IDA7Cit9CitmdW5jdGlvbiBlcV9mdW5jcmVmKHgsIHkpIHsKKyAgcmV0dXJuIHggPT09IHkgPyAx
IDogMDsKK30KKworbGV0ICQkOworCisvLyBEZWZhdWx0IGltcG9ydHMuCit2YXIgcmVnaXN0cnkg
PSB7fTsKKworLy8gUmVzZXRzIHRoZSByZWdpc3RyeSBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgV1BU
IHRlc3RzLgorZnVuY3Rpb24gcmVpbml0aWFsaXplUmVnaXN0cnkoKSB7CisgICAgaWYgKHR5cGVv
ZiBXZWJBc3NlbWJseSA9PT0gJ3VuZGVmaW5lZCcpCisgICAgICAgIHJldHVybjsKKworICAgIGxl
dCBzcGVjdGVzdCA9IHsKKyAgICAgICAgZXh0ZXJucmVmOiBleHRlcm5yZWYsCisgICAgICAgIGlz
X2V4dGVybnJlZjogaXNfZXh0ZXJucmVmLAorICAgICAgICBpc19mdW5jcmVmOiBpc19mdW5jcmVm
LAorICAgICAgICBlcV9leHRlcm5yZWY6IGVxX2V4dGVybnJlZiwKKyAgICAgICAgZXFfZnVuY3Jl
ZjogZXFfZnVuY3JlZiwKKyAgICAgICAgcHJpbnQ6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSks
CisgICAgICAgIHByaW50X2kzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgICAg
cHJpbnRfaTMyX2YzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgICAgcHJpbnRf
ZjY0X2Y2NDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKKyAgICAgICAgcHJpbnRfZjMyOiBj
b25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAorICAgICAgICBwcmludF9mNjQ6IGNvbnNvbGUubG9n
LmJpbmQoY29uc29sZSksCisgICAgICAgIGdsb2JhbF9pMzI6IDY2NiwKKyAgICAgICAgZ2xvYmFs
X2YzMjogNjY2LAorICAgICAgICBnbG9iYWxfZjY0OiA2NjYsCisgICAgICAgIHRhYmxlOiBuZXcg
V2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDEwLCBtYXhpbXVtOiAyMCwgZWxlbWVudDogJ2Fu
eWZ1bmMnfSksCisgICAgICAgIG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlh
bDogMSwgbWF4aW11bTogMn0pCisgICAgfTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAg
Z2V0KHRhcmdldCwgcHJvcCkgeworICAgICAgICByZXR1cm4gKHByb3AgaW4gdGFyZ2V0KSA/ICB0
YXJnZXRbcHJvcF0gOiB7fTsKKyAgICAgIH0KKyAgICB9OworICAgIHJlZ2lzdHJ5ID0gbmV3IFBy
b3h5KHtzcGVjdGVzdH0sIGhhbmRsZXIpOworfQorCityZWluaXRpYWxpemVSZWdpc3RyeSgpOwor
CisvKiBXQVNUIFBPTFlGSUxMICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKK2Z1bmN0aW9uIGJpbmFyeShieXRlcykgeworICAg
IGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKKyAgICBsZXQgdmll
dyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRl
cy5sZW5ndGg7ICsraSkgeworICAgICAgICB2aWV3W2ldID0gYnl0ZXMuY2hhckNvZGVBdChpKTsK
KyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworLyoqCisgKiBSZXR1cm5zIGEgY29tcGls
ZWQgbW9kdWxlLCBvciB0aHJvd3MgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGF0IGNvbXBpbGF0aW9u
LgorICovCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICAgIGxldCBi
dWZmZXIgPSBiaW5hcnkoYnl0ZXMpOworICAgIGxldCB2YWxpZGF0ZWQ7CisKKyAgICB0cnkgewor
ICAgICAgICB2YWxpZGF0ZWQgPSBXZWJBc3NlbWJseS52YWxpZGF0ZShidWZmZXIpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXZWJBc3NlbWJseS52YWxpZGF0
ZSB0aHJvd3MgJHt0eXBlb2YgZX06ICR7ZX0ke2Uuc3RhY2t9YCk7CisgICAgfQorCisgICAgaWYg
KHZhbGlkYXRlZCAhPT0gdmFsaWQpIHsKKyAgICAgICAgLy8gVHJ5IHRvIGdldCBhIG1vcmUgcHJl
Y2lzZSBlcnJvciBtZXNzYWdlIGZyb20gdGhlIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvci4KKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsK
KyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBXZWJB
c3NlbWJseS5Db21waWxlRXJyb3IpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdlYkFzc2Vt
Ymx5LkNvbXBpbGVFcnJvcihgV2ViQXNzZW1ibHkudmFsaWRhdGUgZXJyb3I6ICR7ZS50b1N0cmlu
ZygpfSR7ZS5zdGFja31cbmApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgV2ViQXNzZW1ibHkudmFsaWRhdGUgdGhyb3dzICR7dHlwZW9mIGV9OiAk
e2V9JHtlLnN0YWNrfWApOworICAgICAgICB9CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgV2Vi
QXNzZW1ibHkudmFsaWRhdGUgd2FzIGV4cGVjdGVkIHRvIGZhaWwsIGJ1dCBkaWRuJ3RgKTsKKyAg
ICB9CisKKyAgICBsZXQgbW9kdWxlOworICAgIHRyeSB7CisgICAgICAgIG1vZHVsZSA9IG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYg
KHZhbGlkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXZWJBc3NlbWJseS5Nb2R1bGUg
Y3RvciB1bmV4cGVjdGVkbHkgdGhyb3dzICR7dHlwZW9mIGV9OiAke2V9JHtlLnN0YWNrfScpOwor
ICAgICAgICB0aHJvdyBlOworICAgIH0KKworICAgIHJldHVybiBtb2R1bGU7Cit9CisKK2Z1bmN0
aW9uIHVuaXF1ZVRlc3QoZnVuYywgZGVzYykgeworICAgIHRlc3QoZnVuYywgdGVzdE51bSgpICsg
ZGVzYyk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9pbnZhbGlkKGJ5dGVzKSB7CisgICAgdW5pcXVl
VGVzdCgoKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtb2R1bGUoYnl0ZXMsIC8q
IHZhbGlkICovIGZhbHNlKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZGlkIG5vdCBm
YWlsJyk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBp
bnN0YW5jZW9mIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgImV4cGVjdGVkIGludmFsaWQgZmFp
bHVyZToiKTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQgc2hvdWxkIGJl
IGludmFsaWQgb3IgbWFsZm9ybWVkLiIpOworfQorCitjb25zdCBhc3NlcnRfbWFsZm9ybWVkID0g
YXNzZXJ0X2ludmFsaWQ7CisKK2Z1bmN0aW9uIGluc3RhbmNlKGJ5dGVzLCBpbXBvcnRzID0gcmVn
aXN0cnksIHZhbGlkID0gdHJ1ZSkgeworICAgIGlmIChpbXBvcnRzIGluc3RhbmNlb2YgUmVzdWx0
KSB7CisgICAgICAgIGlmIChpbXBvcnRzLmlzRXJyb3IoKSkKKyAgICAgICAgICAgIHJldHVybiBp
bXBvcnRzOworICAgICAgICBpbXBvcnRzID0gaW1wb3J0cy52YWx1ZTsKKyAgICB9CisKKyAgICBs
ZXQgZXJyID0gbnVsbDsKKworICAgIGxldCBtLCBpOworICAgIHRyeSB7CisgICAgICAgIGxldCBt
ID0gbW9kdWxlKGJ5dGVzKTsKKyAgICAgICAgaSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
LCBpbXBvcnRzKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXJyID0gZTsKKyAgICB9CisK
KyAgICBpZiAodmFsaWQpIHsKKyAgICAgICAgdW5pcXVlVGVzdCgoKSA9PiB7CisgICAgICAgICAg
ICBsZXQgaW5zdGFudGlhdGVkID0gZXJyID09PSBudWxsOworICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoaW5zdGFudGlhdGVkLCBlcnIpOworICAgICAgICB9LCAibW9kdWxlIHN1Y2Nlc3NmdWxseSBp
bnN0YW50aWF0ZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyICE9PSBudWxsID8gRXJyb3JS
ZXN1bHQoZXJyKSA6IFZhbHVlUmVzdWx0KGkpOworfQorCitmdW5jdGlvbiByZWdpc3RlcihuYW1l
LCBpbnN0YW5jZSkgeworICAgIF9hc3NlcnQoaW5zdGFuY2UgaW5zdGFuY2VvZiBSZXN1bHQpOwor
CisgICAgaWYgKGluc3RhbmNlLmlzRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVn
aXN0cnlbbmFtZV0gPSBpbnN0YW5jZS52YWx1ZS5leHBvcnRzOworfQorCitmdW5jdGlvbiBjYWxs
KGluc3RhbmNlLCBuYW1lLCBhcmdzKSB7CisgICAgX2Fzc2VydChpbnN0YW5jZSBpbnN0YW5jZW9m
IFJlc3VsdCk7CisKKyAgICBpZiAoaW5zdGFuY2UuaXNFcnJvcigpKQorICAgICAgICByZXR1cm4g
aW5zdGFuY2U7CisKKyAgICBsZXQgZXJyID0gbnVsbDsKKyAgICBsZXQgcmVzdWx0OworICAgIHRy
eSB7CisgICAgICAgIHJlc3VsdCA9IGluc3RhbmNlLnZhbHVlLmV4cG9ydHNbbmFtZV0oLi4uYXJn
cyk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGVyciA9IGU7CisgICAgfQorCisgICAgcmV0
dXJuIGVyciAhPT0gbnVsbCA/IEVycm9yUmVzdWx0KGVycikgOiBWYWx1ZVJlc3VsdChyZXN1bHQp
OworfTsKKworZnVuY3Rpb24gZ2V0KGluc3RhbmNlLCBuYW1lKSB7CisgICAgX2Fzc2VydChpbnN0
YW5jZSBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICBpZiAoaW5zdGFuY2UuaXNFcnJvcigpKQor
ICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisKKyAgICBsZXQgdiA9IGluc3RhbmNlLnZhbHVlLmV4
cG9ydHNbbmFtZV07CisgICAgcmV0dXJuIFZhbHVlUmVzdWx0KCh2IGluc3RhbmNlb2YgV2ViQXNz
ZW1ibHkuR2xvYmFsKSA/IHYudmFsdWUgOiB2KTsKK30KKworZnVuY3Rpb24gZXhwb3J0cyhpbnN0
YW5jZSkgeworICAgIF9hc3NlcnQoaW5zdGFuY2UgaW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAg
aWYgKGluc3RhbmNlLmlzRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworCisgICAg
cmV0dXJuIFZhbHVlUmVzdWx0KHsgbW9kdWxlOiBpbnN0YW5jZS52YWx1ZS5leHBvcnRzLCBzcGVj
dGVzdDogcmVnaXN0cnkuc3BlY3Rlc3QgfSk7Cit9CisKK2Z1bmN0aW9uIHJ1bihhY3Rpb24pIHsK
KyAgICBsZXQgcmVzdWx0ID0gYWN0aW9uKCk7CisKKyAgICBfYXNzZXJ0KHJlc3VsdCBpbnN0YW5j
ZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAgICAgICAgaWYgKHJlc3Vs
dC5pc0Vycm9yKCkpCisgICAgICAgICAgICB0aHJvdyByZXN1bHQudmFsdWU7CisgICAgfSwgIkEg
d2FzdCB0ZXN0IHRoYXQgcnVucyB3aXRob3V0IGFueSBzcGVjaWFsIGFzc2VydGlvbi4iKTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X3VubGlua2FibGUoYnl0ZXMpIHsKKyAgICBsZXQgcmVzdWx0ID0g
aW5zdGFuY2UoYnl0ZXMsIHJlZ2lzdHJ5LCBFWFBFQ1RfSU5WQUxJRCk7CisKKyAgICBfYXNzZXJ0
KHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAg
ICAgICAgYXNzZXJ0X3RydWUocmVzdWx0LmlzRXJyb3IoKSwgJ2V4cGVjdGVkIGVycm9yIHJlc3Vs
dCcpOworICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgeworICAgICAgICAgICAgbGV0IGUg
PSByZXN1bHQudmFsdWU7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShlIGluc3RhbmNlb2YgV2Vi
QXNzZW1ibHkuTGlua0Vycm9yLCBgZXhwZWN0ZWQgbGluayBlcnJvciwgb2JzZXJ2ZWQgJHtlfTpg
KTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQgaXMgdW5saW5rYWJsZS4i
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3VuaW5zdGFudGlhYmxlKGJ5dGVzKSB7CisgICAgbGV0
IHJlc3VsdCA9IGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lOVkFMSUQpOworCisg
ICAgX2Fzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAgdW5pcXVlVGVzdCgo
KSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKHJlc3VsdC5pc0Vycm9yKCksICdleHBlY3RlZCBl
cnJvciByZXN1bHQnKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKKyAgICAgICAg
ICAgIGxldCBlID0gcmVzdWx0LnZhbHVlOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZSBpbnN0
YW5jZW9mIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwgYGV4cGVjdGVkIHJ1bnRpbWUgZXJyb3Is
IG9ic2VydmVkICR7ZX06YCk7CisgICAgICAgIH0KKyAgICB9LCAiQSB3YXN0IG1vZHVsZSB0aGF0
IGlzIHVuaW5zdGFudGlhYmxlLiIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfdHJhcChhY3Rpb24p
IHsKKyAgICBsZXQgcmVzdWx0ID0gYWN0aW9uKCk7CisKKyAgICBfYXNzZXJ0KHJlc3VsdCBpbnN0
YW5jZW9mIFJlc3VsdCk7CisKKyAgICB1bmlxdWVUZXN0KCgpID0+IHsKKyAgICAgICAgYXNzZXJ0
X3RydWUocmVzdWx0LmlzRXJyb3IoKSwgJ2V4cGVjdGVkIGVycm9yIHJlc3VsdCcpOworICAgICAg
ICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgeworICAgICAgICAgICAgbGV0IGUgPSByZXN1bHQudmFs
dWU7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuUnVu
dGltZUVycm9yLCBgZXhwZWN0ZWQgcnVudGltZSBlcnJvciwgb2JzZXJ2ZWQgJHtlfTpgKTsKKyAg
ICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQgbXVzdCB0cmFwIGF0IHJ1bnRpbWUu
Iik7Cit9CisKK2xldCBTdGFja092ZXJmbG93OwordHJ5IHsgKGZ1bmN0aW9uIGYoKSB7IDEgKyBm
KCkgfSkoKSB9IGNhdGNoIChlKSB7IFN0YWNrT3ZlcmZsb3cgPSBlLmNvbnN0cnVjdG9yIH0KKwor
ZnVuY3Rpb24gYXNzZXJ0X2V4aGF1c3Rpb24oYWN0aW9uKSB7CisgICAgbGV0IHJlc3VsdCA9IGFj
dGlvbigpOworCisgICAgX2Fzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpOworCisgICAg
dW5pcXVlVGVzdCgoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKHJlc3VsdC5pc0Vycm9yKCks
ICdleHBlY3RlZCBlcnJvciByZXN1bHQnKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkp
IHsKKyAgICAgICAgICAgIGxldCBlID0gcmVzdWx0LnZhbHVlOworICAgICAgICAgICAgYXNzZXJ0
X3RydWUoZSBpbnN0YW5jZW9mIFN0YWNrT3ZlcmZsb3csIGBleHBlY3RlZCBzdGFjayBvdmVyZmxv
dyBlcnJvciwgb2JzZXJ2ZWQgJHtlfTpgKTsKKyAgICAgICAgfQorICAgIH0sICJBIHdhc3QgbW9k
dWxlIHRoYXQgbXVzdCBleGhhdXN0IHRoZSBzdGFjayBzcGFjZS4iKTsKK30KKworZnVuY3Rpb24g
YXNzZXJ0X3JldHVybihhY3Rpb24sIC4uLmV4cGVjdGVkKSB7CisgICAgbGV0IHJlc3VsdCA9IGFj
dGlvbigpOworICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KTsKKworICAgIHVu
aXF1ZVRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSghcmVzdWx0LmlzRXJyb3IoKSwg
YGV4cGVjdGVkIHN1Y2Nlc3MgcmVzdWx0LCBnb3Q6ICR7cmVzdWx0LnZhbHVlfS5gKTsKKyAgICAg
ICAgbGV0IGFjdHVhbCA9IHJlc3VsdC52YWx1ZTsKKyAgICAgICAgaWYgKGFjdHVhbCA9PT0gdW5k
ZWZpbmVkKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBbXTsKKyAgICAgICAgfSBlbHNlIGlmICgh
QXJyYXkuaXNBcnJheShhY3R1YWwpKSB7CisgICAgICAgICAgICBhY3R1YWwgPSBbYWN0dWFsXTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoYWN0dWFsLmxlbmd0aCAhPT0gZXhwZWN0ZWQubGVuZ3Ro
KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhwZWN0ZWQubGVuZ3RoICsgIiB2YWx1
ZShzKSBleHBlY3RlZCwgZ290ICIgKyBhY3R1YWwubGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdHVhbC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
aWYgKGV4cGVjdGVkW2ldIGluc3RhbmNlb2YgUmVzdWx0KSB7CisgICAgICAgICAgICAgICAgaWYg
KGV4cGVjdGVkW2ldLmlzRXJyb3IoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkW2ldID0gZXhwZWN0ZWRbaV0udmFsdWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdGVkW2ldKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSAibmFuOmNhbm9uaWNhbCI6CisgICAgICAgICAgICAgICAgY2FzZSAibmFuOmFyaXRobWV0
aWMiOgorICAgICAgICAgICAgICAgIGNhc2UgIm5hbjphbnkiOgorICAgICAgICAgICAgICAgICAg
ICAvLyBOb3RlIHRoYXQgSlMgY2FuJ3QgcmVsaWFibHkgZGlzdGluZ3Vpc2ggZGlmZmVyZW50IE5h
TiB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgIC8vIHNvIHRoZXJlJ3Mgbm8gZ29vZCB3YXkg
dG8gdGVzdCB0aGF0IGl0J3MgYSBjYW5vbmljYWwgTmFOLgorICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfdHJ1ZShOdW1iZXIuaXNOYU4oYWN0dWFsW2ldKSwgYGV4cGVjdGVkIE5hTiwgb2JzZXJ2
ZWQgJHthY3R1YWxbaV19LmApOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgY2FzZSAicmVmLmZ1bmMiOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1
ZSh0eXBlb2YgYWN0dWFsW2ldID09PSAiZnVuY3Rpb24iLCBgZXhwZWN0ZWQgV2FzbSBmdW5jdGlv
biwgZ290ICR7YWN0dWFsW2ldfWApOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgY2FzZSAicmVmLmV4dGVybiI6CisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGFjdHVhbFtpXSAhPT0gbnVsbCwgYGV4cGVjdGVkIFdhc20gcmVmZXJlbmNlLCBnb3Qg
JHthY3R1YWxbaV19YCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGFjdHVhbFtp
XSwgZXhwZWN0ZWRbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwgIkEgd2Fz
dCBtb2R1bGUgdGhhdCBtdXN0IHJldHVybiBhIHBhcnRpY3VsYXIgdmFsdWUuIik7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9yZXR1cm5fbmFuKGFjdGlvbikgeworICAgIGxldCByZXN1bHQgPSBhY3Rp
b24oKTsKKworICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KTsKKworICAgIHVu
aXF1ZVRlc3QoKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSghcmVzdWx0LmlzRXJyb3IoKSwg
J2V4cGVjdGVkIHN1Y2Nlc3MgcmVzdWx0Jyk7CisgICAgICAgIGlmICghcmVzdWx0LmlzRXJyb3Io
KSkgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUoTnVtYmVyLmlzTmFOKHJlc3VsdC52YWx1ZSks
IGBleHBlY3RlZCBOYU4sIG9ic2VydmVkICR7cmVzdWx0LnZhbHVlfS5gKTsKKyAgICAgICAgfTsK
KyAgICB9LCAiQSB3YXN0IG1vZHVsZSB0aGF0IG11c3QgcmV0dXJuIE5hTi4iKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFu
dHMuanMgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dhc20tY29uc3Rh
bnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ0MzlhMjVkN2RlYTQ5ODZlMzYzMzQ2ZTJjZWNjMzVhYWNjMTU2
NzYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJu
ZXNzL3dhc20tY29uc3RhbnRzLmpzCkBAIC0wLDAgKzEsMzg0IEBACisvLyBDb3B5cmlnaHQgMjAx
NSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gRmxhZ3M6IC0tZXhw
b3NlLXdhc20KKworbGV0IGhvc3RyZWZzID0ge307CitsZXQgaG9zdHN5bSA9IFN5bWJvbCgiaG9z
dHJlZiIpOworZnVuY3Rpb24gaG9zdHJlZihzKSB7CisgIGlmICghIChzIGluIGhvc3RyZWZzKSkg
aG9zdHJlZnNbc10gPSB7W2hvc3RzeW1dOiBzfTsKKyAgcmV0dXJuIGhvc3RyZWZzW3NdOworfQor
CitmdW5jdGlvbiBieXRlcygpIHsKKyAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihhcmd1
bWVudHMubGVuZ3RoKTsKKyAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBm
b3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgIHZhciB2YWwg
PSBhcmd1bWVudHNbaV07CisgICAgaWYgKCh0eXBlb2YgdmFsKSA9PSAic3RyaW5nIikgdmFsID0g
dmFsLmNoYXJDb2RlQXQoMCk7CisgICAgdmlld1tpXSA9IHZhbCB8IDA7CisgIH0KKyAgcmV0dXJu
IGJ1ZmZlcjsKK30KKworLy8gSGVhZGVyIGRlY2xhcmF0aW9uIGNvbnN0YW50cwordmFyIGtXYXNt
SDAgPSAwOwordmFyIGtXYXNtSDEgPSAweDYxOwordmFyIGtXYXNtSDIgPSAweDczOwordmFyIGtX
YXNtSDMgPSAweDZkOworCit2YXIga1dhc21WMCA9IDB4MTsKK3ZhciBrV2FzbVYxID0gMDsKK3Zh
ciBrV2FzbVYyID0gMDsKK3ZhciBrV2FzbVYzID0gMDsKKwordmFyIGtIZWFkZXJTaXplID0gODsK
K3ZhciBrUGFnZVNpemUgPSA2NTUzNjsKKworZnVuY3Rpb24gYnl0ZXNXaXRoSGVhZGVyKCkgewor
ICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGtIZWFkZXJTaXplICsgYXJndW1lbnRzLmxl
bmd0aCk7CisgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgdmlld1swXSA9
IGtXYXNtSDA7CisgIHZpZXdbMV0gPSBrV2FzbUgxOworICB2aWV3WzJdID0ga1dhc21IMjsKKyAg
dmlld1szXSA9IGtXYXNtSDM7CisgIHZpZXdbNF0gPSBrV2FzbVYwOworICB2aWV3WzVdID0ga1dh
c21WMTsKKyAgdmlld1s2XSA9IGtXYXNtVjI7CisgIHZpZXdbN10gPSBrV2FzbVYzOworICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgIHZhciB2YWwgPSBh
cmd1bWVudHNbaV07CisgICAgaWYgKCh0eXBlb2YgdmFsKSA9PSAic3RyaW5nIikgdmFsID0gdmFs
LmNoYXJDb2RlQXQoMCk7CisgICAgdmlld1trSGVhZGVyU2l6ZSArIGldID0gdmFsIHwgMDsKKyAg
fQorICByZXR1cm4gYnVmZmVyOworfQorCitsZXQga0RlY2xOb0xvY2FscyA9IDA7CisKKy8vIFNl
Y3Rpb24gZGVjbGFyYXRpb24gY29uc3RhbnRzCitsZXQga1Vua25vd25TZWN0aW9uQ29kZSA9IDA7
CitsZXQga1R5cGVTZWN0aW9uQ29kZSA9IDE7ICAgICAgLy8gRnVuY3Rpb24gc2lnbmF0dXJlIGRl
Y2xhcmF0aW9ucworbGV0IGtJbXBvcnRTZWN0aW9uQ29kZSA9IDI7ICAgIC8vIEltcG9ydCBkZWNs
YXJhdGlvbnMKK2xldCBrRnVuY3Rpb25TZWN0aW9uQ29kZSA9IDM7ICAvLyBGdW5jdGlvbiBkZWNs
YXJhdGlvbnMKK2xldCBrVGFibGVTZWN0aW9uQ29kZSA9IDQ7ICAgICAvLyBJbmRpcmVjdCBmdW5j
dGlvbiB0YWJsZSBhbmQgb3RoZXIgdGFibGVzCitsZXQga01lbW9yeVNlY3Rpb25Db2RlID0gNTsg
ICAgLy8gTWVtb3J5IGF0dHJpYnV0ZXMKK2xldCBrR2xvYmFsU2VjdGlvbkNvZGUgPSA2OyAgICAv
LyBHbG9iYWwgZGVjbGFyYXRpb25zCitsZXQga0V4cG9ydFNlY3Rpb25Db2RlID0gNzsgICAgLy8g
RXhwb3J0cworbGV0IGtTdGFydFNlY3Rpb25Db2RlID0gODsgICAgIC8vIFN0YXJ0IGZ1bmN0aW9u
IGRlY2xhcmF0aW9uCitsZXQga0VsZW1lbnRTZWN0aW9uQ29kZSA9IDk7ICAvLyBFbGVtZW50cyBz
ZWN0aW9uCitsZXQga0NvZGVTZWN0aW9uQ29kZSA9IDEwOyAgICAgIC8vIEZ1bmN0aW9uIGNvZGUK
K2xldCBrRGF0YVNlY3Rpb25Db2RlID0gMTE7ICAgICAvLyBEYXRhIHNlZ21lbnRzCitsZXQga05h
bWVTZWN0aW9uQ29kZSA9IDEyOyAgICAgLy8gTmFtZSBzZWN0aW9uIChlbmNvZGVkIGFzIHN0cmlu
ZykKKworLy8gTmFtZSBzZWN0aW9uIHR5cGVzCitsZXQga01vZHVsZU5hbWVDb2RlID0gMDsKK2xl
dCBrRnVuY3Rpb25OYW1lc0NvZGUgPSAxOworbGV0IGtMb2NhbE5hbWVzQ29kZSA9IDI7CisKK2xl
dCBrV2FzbUZ1bmN0aW9uVHlwZUZvcm0gPSAweDYwOworbGV0IGtXYXNtRnVuY1JlZnRpb25UeXBl
Rm9ybSA9IDB4NzA7CisKK2xldCBrUmVzaXphYmxlTWF4aW11bUZsYWcgPSAxOworCisvLyBGdW5j
dGlvbiBkZWNsYXJhdGlvbiBmbGFncworbGV0IGtEZWNsRnVuY3Rpb25OYW1lICAgPSAweDAxOwor
bGV0IGtEZWNsRnVuY3Rpb25JbXBvcnQgPSAweDAyOworbGV0IGtEZWNsRnVuY3Rpb25Mb2NhbHMg
PSAweDA0OworbGV0IGtEZWNsRnVuY3Rpb25FeHBvcnQgPSAweDA4OworCisvLyBMb2NhbCB0eXBl
cworbGV0IGtXYXNtU3RtdCA9IDB4NDA7CitsZXQga1dhc21JMzIgPSAweDdmOworbGV0IGtXYXNt
STY0ID0gMHg3ZTsKK2xldCBrV2FzbUYzMiA9IDB4N2Q7CitsZXQga1dhc21GNjQgPSAweDdjOwor
bGV0IGtXYXNtUzEyOCA9IDB4N2I7CisKK2xldCBrRXh0ZXJuYWxGdW5jdGlvbiA9IDA7CitsZXQg
a0V4dGVybmFsVGFibGUgPSAxOworbGV0IGtFeHRlcm5hbE1lbW9yeSA9IDI7CitsZXQga0V4dGVy
bmFsR2xvYmFsID0gMzsKKworbGV0IGtUYWJsZVplcm8gPSAwOworbGV0IGtNZW1vcnlaZXJvID0g
MDsKKworLy8gVXNlZnVsIHNpZ25hdHVyZXMKK2xldCBrU2lnX2lfaSA9IG1ha2VTaWcoW2tXYXNt
STMyXSwgW2tXYXNtSTMyXSk7CitsZXQga1NpZ19sX2wgPSBtYWtlU2lnKFtrV2FzbUk2NF0sIFtr
V2FzbUk2NF0pOworbGV0IGtTaWdfaV9sID0gbWFrZVNpZyhba1dhc21JNjRdLCBba1dhc21JMzJd
KTsKK2xldCBrU2lnX2lfaWkgPSBtYWtlU2lnKFtrV2FzbUkzMiwga1dhc21JMzJdLCBba1dhc21J
MzJdKTsKK2xldCBrU2lnX2lfaWlpID0gbWFrZVNpZyhba1dhc21JMzIsIGtXYXNtSTMyLCBrV2Fz
bUkzMl0sIFtrV2FzbUkzMl0pOworbGV0IGtTaWdfZF9kZCA9IG1ha2VTaWcoW2tXYXNtRjY0LCBr
V2FzbUY2NF0sIFtrV2FzbUY2NF0pOworbGV0IGtTaWdfbF9sbCA9IG1ha2VTaWcoW2tXYXNtSTY0
LCBrV2FzbUk2NF0sIFtrV2FzbUk2NF0pOworbGV0IGtTaWdfaV9kZCA9IG1ha2VTaWcoW2tXYXNt
RjY0LCBrV2FzbUY2NF0sIFtrV2FzbUkzMl0pOworbGV0IGtTaWdfdl92ID0gbWFrZVNpZyhbXSwg
W10pOworbGV0IGtTaWdfaV92ID0gbWFrZVNpZyhbXSwgW2tXYXNtSTMyXSk7CitsZXQga1NpZ19s
X3YgPSBtYWtlU2lnKFtdLCBba1dhc21JNjRdKTsKK2xldCBrU2lnX2ZfdiA9IG1ha2VTaWcoW10s
IFtrV2FzbUY2NF0pOworbGV0IGtTaWdfZF92ID0gbWFrZVNpZyhbXSwgW2tXYXNtRjY0XSk7Cits
ZXQga1NpZ192X2kgPSBtYWtlU2lnKFtrV2FzbUkzMl0sIFtdKTsKK2xldCBrU2lnX3ZfaWkgPSBt
YWtlU2lnKFtrV2FzbUkzMiwga1dhc21JMzJdLCBbXSk7CitsZXQga1NpZ192X2lpaSA9IG1ha2VT
aWcoW2tXYXNtSTMyLCBrV2FzbUkzMiwga1dhc21JMzJdLCBbXSk7CitsZXQga1NpZ192X2wgPSBt
YWtlU2lnKFtrV2FzbUk2NF0sIFtdKTsKK2xldCBrU2lnX3ZfZCA9IG1ha2VTaWcoW2tXYXNtRjY0
XSwgW10pOworbGV0IGtTaWdfdl9kZCA9IG1ha2VTaWcoW2tXYXNtRjY0LCBrV2FzbUY2NF0sIFtd
KTsKK2xldCBrU2lnX3ZfZGRpID0gbWFrZVNpZyhba1dhc21GNjQsIGtXYXNtRjY0LCBrV2FzbUkz
Ml0sIFtdKTsKK2xldCBrU2lnX3NfdiA9IG1ha2VTaWcoW10sIFtrV2FzbVMxMjhdKTsKKworZnVu
Y3Rpb24gbWFrZVNpZyhwYXJhbXMsIHJlc3VsdHMpIHsKKyAgcmV0dXJuIHtwYXJhbXM6IHBhcmFt
cywgcmVzdWx0czogcmVzdWx0c307Cit9CisKK2Z1bmN0aW9uIG1ha2VTaWdfdl94KHgpIHsKKyAg
cmV0dXJuIG1ha2VTaWcoW3hdLCBbXSk7Cit9CisKK2Z1bmN0aW9uIG1ha2VTaWdfdl94eCh4KSB7
CisgIHJldHVybiBtYWtlU2lnKFt4LCB4XSwgW10pOworfQorCitmdW5jdGlvbiBtYWtlU2lnX3Jf
dihyKSB7CisgIHJldHVybiBtYWtlU2lnKFtdLCBbcl0pOworfQorCitmdW5jdGlvbiBtYWtlU2ln
X3JfeChyLCB4KSB7CisgIHJldHVybiBtYWtlU2lnKFt4XSwgW3JdKTsKK30KKworZnVuY3Rpb24g
bWFrZVNpZ19yX3h4KHIsIHgpIHsKKyAgcmV0dXJuIG1ha2VTaWcoW3gsIHhdLCBbcl0pOworfQor
CisvLyBPcGNvZGVzCitsZXQga0V4cHJVbnJlYWNoYWJsZSA9IDB4MDA7CitsZXQga0V4cHJOb3Ag
PSAweDAxOworbGV0IGtFeHByQmxvY2sgPSAweDAyOworbGV0IGtFeHByTG9vcCA9IDB4MDM7Cits
ZXQga0V4cHJJZiA9IDB4MDQ7CitsZXQga0V4cHJFbHNlID0gMHgwNTsKK2xldCBrRXhwclRyeSA9
IDB4MDY7CitsZXQga0V4cHJDYXRjaCA9IDB4MDc7CitsZXQga0V4cHJUaHJvdyA9IDB4MDg7Cits
ZXQga0V4cHJFbmQgPSAweDBiOworbGV0IGtFeHByQnIgPSAweDBjOworbGV0IGtFeHByQnJJZiA9
IDB4MGQ7CitsZXQga0V4cHJCclRhYmxlID0gMHgwZTsKK2xldCBrRXhwclJldHVybiA9IDB4MGY7
CitsZXQga0V4cHJDYWxsRnVuY3Rpb24gPSAweDEwOworbGV0IGtFeHByQ2FsbEluZGlyZWN0ID0g
MHgxMTsKK2xldCBrRXhwckRyb3AgPSAweDFhOworbGV0IGtFeHByU2VsZWN0ID0gMHgxYjsKK2xl
dCBrRXhwckdldExvY2FsID0gMHgyMDsKK2xldCBrRXhwclNldExvY2FsID0gMHgyMTsKK2xldCBr
RXhwclRlZUxvY2FsID0gMHgyMjsKK2xldCBrRXhwckdldEdsb2JhbCA9IDB4MjM7CitsZXQga0V4
cHJTZXRHbG9iYWwgPSAweDI0OworbGV0IGtFeHBySTMyQ29uc3QgPSAweDQxOworbGV0IGtFeHBy
STY0Q29uc3QgPSAweDQyOworbGV0IGtFeHByRjMyQ29uc3QgPSAweDQzOworbGV0IGtFeHByRjY0
Q29uc3QgPSAweDQ0OworbGV0IGtFeHBySTMyTG9hZE1lbSA9IDB4Mjg7CitsZXQga0V4cHJJNjRM
b2FkTWVtID0gMHgyOTsKK2xldCBrRXhwckYzMkxvYWRNZW0gPSAweDJhOworbGV0IGtFeHByRjY0
TG9hZE1lbSA9IDB4MmI7CitsZXQga0V4cHJJMzJMb2FkTWVtOFMgPSAweDJjOworbGV0IGtFeHBy
STMyTG9hZE1lbThVID0gMHgyZDsKK2xldCBrRXhwckkzMkxvYWRNZW0xNlMgPSAweDJlOworbGV0
IGtFeHBySTMyTG9hZE1lbTE2VSA9IDB4MmY7CitsZXQga0V4cHJJNjRMb2FkTWVtOFMgPSAweDMw
OworbGV0IGtFeHBySTY0TG9hZE1lbThVID0gMHgzMTsKK2xldCBrRXhwckk2NExvYWRNZW0xNlMg
PSAweDMyOworbGV0IGtFeHBySTY0TG9hZE1lbTE2VSA9IDB4MzM7CitsZXQga0V4cHJJNjRMb2Fk
TWVtMzJTID0gMHgzNDsKK2xldCBrRXhwckk2NExvYWRNZW0zMlUgPSAweDM1OworbGV0IGtFeHBy
STMyU3RvcmVNZW0gPSAweDM2OworbGV0IGtFeHBySTY0U3RvcmVNZW0gPSAweDM3OworbGV0IGtF
eHByRjMyU3RvcmVNZW0gPSAweDM4OworbGV0IGtFeHByRjY0U3RvcmVNZW0gPSAweDM5OworbGV0
IGtFeHBySTMyU3RvcmVNZW04ID0gMHgzYTsKK2xldCBrRXhwckkzMlN0b3JlTWVtMTYgPSAweDNi
OworbGV0IGtFeHBySTY0U3RvcmVNZW04ID0gMHgzYzsKK2xldCBrRXhwckk2NFN0b3JlTWVtMTYg
PSAweDNkOworbGV0IGtFeHBySTY0U3RvcmVNZW0zMiA9IDB4M2U7CitsZXQga0V4cHJNZW1vcnlT
aXplID0gMHgzZjsKK2xldCBrRXhwckdyb3dNZW1vcnkgPSAweDQwOworbGV0IGtFeHBySTMyRXF6
ID0gMHg0NTsKK2xldCBrRXhwckkzMkVxID0gMHg0NjsKK2xldCBrRXhwckkzMk5lID0gMHg0NzsK
K2xldCBrRXhwckkzMkx0UyA9IDB4NDg7CitsZXQga0V4cHJJMzJMdFUgPSAweDQ5OworbGV0IGtF
eHBySTMyR3RTID0gMHg0YTsKK2xldCBrRXhwckkzMkd0VSA9IDB4NGI7CitsZXQga0V4cHJJMzJM
ZVMgPSAweDRjOworbGV0IGtFeHBySTMyTGVVID0gMHg0ZDsKK2xldCBrRXhwckkzMkdlUyA9IDB4
NGU7CitsZXQga0V4cHJJMzJHZVUgPSAweDRmOworbGV0IGtFeHBySTY0RXF6ID0gMHg1MDsKK2xl
dCBrRXhwckk2NEVxID0gMHg1MTsKK2xldCBrRXhwckk2NE5lID0gMHg1MjsKK2xldCBrRXhwckk2
NEx0UyA9IDB4NTM7CitsZXQga0V4cHJJNjRMdFUgPSAweDU0OworbGV0IGtFeHBySTY0R3RTID0g
MHg1NTsKK2xldCBrRXhwckk2NEd0VSA9IDB4NTY7CitsZXQga0V4cHJJNjRMZVMgPSAweDU3Owor
bGV0IGtFeHBySTY0TGVVID0gMHg1ODsKK2xldCBrRXhwckk2NEdlUyA9IDB4NTk7CitsZXQga0V4
cHJJNjRHZVUgPSAweDVhOworbGV0IGtFeHByRjMyRXEgPSAweDViOworbGV0IGtFeHByRjMyTmUg
PSAweDVjOworbGV0IGtFeHByRjMyTHQgPSAweDVkOworbGV0IGtFeHByRjMyR3QgPSAweDVlOwor
bGV0IGtFeHByRjMyTGUgPSAweDVmOworbGV0IGtFeHByRjMyR2UgPSAweDYwOworbGV0IGtFeHBy
RjY0RXEgPSAweDYxOworbGV0IGtFeHByRjY0TmUgPSAweDYyOworbGV0IGtFeHByRjY0THQgPSAw
eDYzOworbGV0IGtFeHByRjY0R3QgPSAweDY0OworbGV0IGtFeHByRjY0TGUgPSAweDY1OworbGV0
IGtFeHByRjY0R2UgPSAweDY2OworbGV0IGtFeHBySTMyQ2x6ID0gMHg2NzsKK2xldCBrRXhwckkz
MkN0eiA9IDB4Njg7CitsZXQga0V4cHJJMzJQb3BjbnQgPSAweDY5OworbGV0IGtFeHBySTMyQWRk
ID0gMHg2YTsKK2xldCBrRXhwckkzMlN1YiA9IDB4NmI7CitsZXQga0V4cHJJMzJNdWwgPSAweDZj
OworbGV0IGtFeHBySTMyRGl2UyA9IDB4NmQ7CitsZXQga0V4cHJJMzJEaXZVID0gMHg2ZTsKK2xl
dCBrRXhwckkzMlJlbVMgPSAweDZmOworbGV0IGtFeHBySTMyUmVtVSA9IDB4NzA7CitsZXQga0V4
cHJJMzJBbmQgPSAweDcxOworbGV0IGtFeHBySTMySW9yID0gMHg3MjsKK2xldCBrRXhwckkzMlhv
ciA9IDB4NzM7CitsZXQga0V4cHJJMzJTaGwgPSAweDc0OworbGV0IGtFeHBySTMyU2hyUyA9IDB4
NzU7CitsZXQga0V4cHJJMzJTaHJVID0gMHg3NjsKK2xldCBrRXhwckkzMlJvbCA9IDB4Nzc7Cits
ZXQga0V4cHJJMzJSb3IgPSAweDc4OworbGV0IGtFeHBySTY0Q2x6ID0gMHg3OTsKK2xldCBrRXhw
ckk2NEN0eiA9IDB4N2E7CitsZXQga0V4cHJJNjRQb3BjbnQgPSAweDdiOworbGV0IGtFeHBySTY0
QWRkID0gMHg3YzsKK2xldCBrRXhwckk2NFN1YiA9IDB4N2Q7CitsZXQga0V4cHJJNjRNdWwgPSAw
eDdlOworbGV0IGtFeHBySTY0RGl2UyA9IDB4N2Y7CitsZXQga0V4cHJJNjREaXZVID0gMHg4MDsK
K2xldCBrRXhwckk2NFJlbVMgPSAweDgxOworbGV0IGtFeHBySTY0UmVtVSA9IDB4ODI7CitsZXQg
a0V4cHJJNjRBbmQgPSAweDgzOworbGV0IGtFeHBySTY0SW9yID0gMHg4NDsKK2xldCBrRXhwckk2
NFhvciA9IDB4ODU7CitsZXQga0V4cHJJNjRTaGwgPSAweDg2OworbGV0IGtFeHBySTY0U2hyUyA9
IDB4ODc7CitsZXQga0V4cHJJNjRTaHJVID0gMHg4ODsKK2xldCBrRXhwckk2NFJvbCA9IDB4ODk7
CitsZXQga0V4cHJJNjRSb3IgPSAweDhhOworbGV0IGtFeHByRjMyQWJzID0gMHg4YjsKK2xldCBr
RXhwckYzMk5lZyA9IDB4OGM7CitsZXQga0V4cHJGMzJDZWlsID0gMHg4ZDsKK2xldCBrRXhwckYz
MkZsb29yID0gMHg4ZTsKK2xldCBrRXhwckYzMlRydW5jID0gMHg4ZjsKK2xldCBrRXhwckYzMk5l
YXJlc3RJbnQgPSAweDkwOworbGV0IGtFeHByRjMyU3FydCA9IDB4OTE7CitsZXQga0V4cHJGMzJB
ZGQgPSAweDkyOworbGV0IGtFeHByRjMyU3ViID0gMHg5MzsKK2xldCBrRXhwckYzMk11bCA9IDB4
OTQ7CitsZXQga0V4cHJGMzJEaXYgPSAweDk1OworbGV0IGtFeHByRjMyTWluID0gMHg5NjsKK2xl
dCBrRXhwckYzMk1heCA9IDB4OTc7CitsZXQga0V4cHJGMzJDb3B5U2lnbiA9IDB4OTg7CitsZXQg
a0V4cHJGNjRBYnMgPSAweDk5OworbGV0IGtFeHByRjY0TmVnID0gMHg5YTsKK2xldCBrRXhwckY2
NENlaWwgPSAweDliOworbGV0IGtFeHByRjY0Rmxvb3IgPSAweDljOworbGV0IGtFeHByRjY0VHJ1
bmMgPSAweDlkOworbGV0IGtFeHByRjY0TmVhcmVzdEludCA9IDB4OWU7CitsZXQga0V4cHJGNjRT
cXJ0ID0gMHg5ZjsKK2xldCBrRXhwckY2NEFkZCA9IDB4YTA7CitsZXQga0V4cHJGNjRTdWIgPSAw
eGExOworbGV0IGtFeHByRjY0TXVsID0gMHhhMjsKK2xldCBrRXhwckY2NERpdiA9IDB4YTM7Cits
ZXQga0V4cHJGNjRNaW4gPSAweGE0OworbGV0IGtFeHByRjY0TWF4ID0gMHhhNTsKK2xldCBrRXhw
ckY2NENvcHlTaWduID0gMHhhNjsKK2xldCBrRXhwckkzMkNvbnZlcnRJNjQgPSAweGE3OworbGV0
IGtFeHBySTMyU0NvbnZlcnRGMzIgPSAweGE4OworbGV0IGtFeHBySTMyVUNvbnZlcnRGMzIgPSAw
eGE5OworbGV0IGtFeHBySTMyU0NvbnZlcnRGNjQgPSAweGFhOworbGV0IGtFeHBySTMyVUNvbnZl
cnRGNjQgPSAweGFiOworbGV0IGtFeHBySTY0U0NvbnZlcnRJMzIgPSAweGFjOworbGV0IGtFeHBy
STY0VUNvbnZlcnRJMzIgPSAweGFkOworbGV0IGtFeHBySTY0U0NvbnZlcnRGMzIgPSAweGFlOwor
bGV0IGtFeHBySTY0VUNvbnZlcnRGMzIgPSAweGFmOworbGV0IGtFeHBySTY0U0NvbnZlcnRGNjQg
PSAweGIwOworbGV0IGtFeHBySTY0VUNvbnZlcnRGNjQgPSAweGIxOworbGV0IGtFeHByRjMyU0Nv
bnZlcnRJMzIgPSAweGIyOworbGV0IGtFeHByRjMyVUNvbnZlcnRJMzIgPSAweGIzOworbGV0IGtF
eHByRjMyU0NvbnZlcnRJNjQgPSAweGI0OworbGV0IGtFeHByRjMyVUNvbnZlcnRJNjQgPSAweGI1
OworbGV0IGtFeHByRjMyQ29udmVydEY2NCA9IDB4YjY7CitsZXQga0V4cHJGNjRTQ29udmVydEkz
MiA9IDB4Yjc7CitsZXQga0V4cHJGNjRVQ29udmVydEkzMiA9IDB4Yjg7CitsZXQga0V4cHJGNjRT
Q29udmVydEk2NCA9IDB4Yjk7CitsZXQga0V4cHJGNjRVQ29udmVydEk2NCA9IDB4YmE7CitsZXQg
a0V4cHJGNjRDb252ZXJ0RjMyID0gMHhiYjsKK2xldCBrRXhwckkzMlJlaW50ZXJwcmV0RjMyID0g
MHhiYzsKK2xldCBrRXhwckk2NFJlaW50ZXJwcmV0RjY0ID0gMHhiZDsKK2xldCBrRXhwckYzMlJl
aW50ZXJwcmV0STMyID0gMHhiZTsKK2xldCBrRXhwckY2NFJlaW50ZXJwcmV0STY0ID0gMHhiZjsK
KworbGV0IGtUcmFwVW5yZWFjaGFibGUgICAgICAgICAgPSAwOworbGV0IGtUcmFwTWVtT3V0T2ZC
b3VuZHMgICAgICAgPSAxOworbGV0IGtUcmFwRGl2QnlaZXJvICAgICAgICAgICAgPSAyOworbGV0
IGtUcmFwRGl2VW5yZXByZXNlbnRhYmxlICAgPSAzOworbGV0IGtUcmFwUmVtQnlaZXJvICAgICAg
ICAgICAgPSA0OworbGV0IGtUcmFwRmxvYXRVbnJlcHJlc2VudGFibGUgPSA1OworbGV0IGtUcmFw
RnVuY0ludmFsaWQgICAgICAgICAgPSA2OworbGV0IGtUcmFwRnVuY1NpZ01pc21hdGNoICAgICAg
PSA3OworbGV0IGtUcmFwSW52YWxpZEluZGV4ICAgICAgICAgPSA4OworCitsZXQga1RyYXBNc2dz
ID0gWworICAidW5yZWFjaGFibGUiLAorICAibWVtb3J5IGFjY2VzcyBvdXQgb2YgYm91bmRzIiwK
KyAgImRpdmlkZSBieSB6ZXJvIiwKKyAgImRpdmlkZSByZXN1bHQgdW5yZXByZXNlbnRhYmxlIiwK
KyAgInJlbWFpbmRlciBieSB6ZXJvIiwKKyAgImludGVnZXIgcmVzdWx0IHVucmVwcmVzZW50YWJs
ZSIsCisgICJpbnZhbGlkIGZ1bmN0aW9uIiwKKyAgImZ1bmN0aW9uIHNpZ25hdHVyZSBtaXNtYXRj
aCIsCisgICJpbnZhbGlkIGluZGV4IGludG8gZnVuY3Rpb24gdGFibGUiCitdOworCitmdW5jdGlv
biBhc3NlcnRUcmFwcyh0cmFwLCBjb2RlKSB7CisgIHRyeSB7CisgICAgaWYgKHR5cGVvZiBjb2Rl
ID09PSAnZnVuY3Rpb24nKSB7CisgICAgICBjb2RlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGV2
YWwoY29kZSk7CisgICAgfQorICB9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0RXF1YWxzKCdvYmpl
Y3QnLCB0eXBlb2YgZSk7CisgICAgYXNzZXJ0RXF1YWxzKGtUcmFwTXNnc1t0cmFwXSwgZS5tZXNz
YWdlKTsKKyAgICAvLyBTdWNjZXNzLgorICAgIHJldHVybjsKKyAgfQorICB0aHJvdyBuZXcgTWpz
VW5pdEFzc2VydGlvbkVycm9yKCdEaWQgbm90IHRyYXAsIGV4cGVjdGVkOiAnICsga1RyYXBNc2dz
W3RyYXBdKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0V2FzbVRocm93cyh2YWx1ZSwgY29kZSkgewor
ICBhc3NlcnRFcXVhbHMoJ251bWJlcicsIHR5cGVvZiB2YWx1ZSk7CisgIHRyeSB7CisgICAgaWYg
KHR5cGVvZiBjb2RlID09PSAnZnVuY3Rpb24nKSB7CisgICAgICBjb2RlKCk7CisgICAgfSBlbHNl
IHsKKyAgICAgIGV2YWwoY29kZSk7CisgICAgfQorICB9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0
RXF1YWxzKCdudW1iZXInLCB0eXBlb2YgZSk7CisgICAgYXNzZXJ0RXF1YWxzKHZhbHVlLCBlKTsK
KyAgICAvLyBTdWNjZXNzLgorICAgIHJldHVybjsKKyAgfQorICB0aHJvdyBuZXcgTWpzVW5pdEFz
c2VydGlvbkVycm9yKCdEaWQgbm90IHRocm93LCBleHBlY3RlZDogJyArIHZhbHVlKTsKK30KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1tb2R1
bGUtYnVpbGRlci5qcyBiL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLWhhcm5lc3Mvd2Fz
bS1tb2R1bGUtYnVpbGRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTgxYWY4OGZiOTc3YWVlOTA5NWQxNTI0
OGU4MzRmNTczNzE3Mjc0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3JldHVybi1j
YWxsLXNwZWMtaGFybmVzcy93YXNtLW1vZHVsZS1idWlsZGVyLmpzCkBAIC0wLDAgKzEsNTgzIEBA
CisvLyBDb3B5cmlnaHQgMjAxNiB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworLy8gVXNlZCBmb3IgZW5jb2RpbmcgZjMyIGFuZCBkb3VibGUgY29uc3RhbnRzIHRvIGJpdHMu
CitsZXQgX19idWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoOCk7CitsZXQgYnl0ZV92aWV3ID0gbmV3
IEludDhBcnJheShfX2J1ZmZlcik7CitsZXQgZjMyX3ZpZXcgPSBuZXcgRmxvYXQzMkFycmF5KF9f
YnVmZmVyKTsKK2xldCBmNjRfdmlldyA9IG5ldyBGbG9hdDY0QXJyYXkoX19idWZmZXIpOworCitj
bGFzcyBCaW5hcnkgZXh0ZW5kcyBBcnJheSB7CisgIGVtaXRfdTgodmFsKSB7CisgICAgdGhpcy5w
dXNoKHZhbCk7CisgIH0KKworICBlbWl0X3UxNih2YWwpIHsKKyAgICB0aGlzLnB1c2godmFsICYg
MHhmZik7CisgICAgdGhpcy5wdXNoKCh2YWwgPj4gOCkgJiAweGZmKTsKKyAgfQorCisgIGVtaXRf
dTMyKHZhbCkgeworICAgIHRoaXMucHVzaCh2YWwgJiAweGZmKTsKKyAgICB0aGlzLnB1c2goKHZh
bCA+PiA4KSAmIDB4ZmYpOworICAgIHRoaXMucHVzaCgodmFsID4+IDE2KSAmIDB4ZmYpOworICAg
IHRoaXMucHVzaCgodmFsID4+IDI0KSAmIDB4ZmYpOworICB9CisKKyAgZW1pdF91MzJ2KHZhbCkg
eworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBsZXQgdiA9IHZhbCAmIDB4ZmY7CisgICAgICB2
YWwgPSB2YWwgPj4+IDc7CisgICAgICBpZiAodmFsID09IDApIHsKKyAgICAgICAgdGhpcy5wdXNo
KHYpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHRoaXMucHVzaCh2IHwgMHg4MCk7
CisgICAgfQorICB9CisKKyAgZW1pdF9ieXRlcyhkYXRhKSB7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7CisgICAgICB0aGlzLnB1c2goZGF0YVtpXSAmIDB4ZmYp
OworICAgIH0KKyAgfQorCisgIGVtaXRfc3RyaW5nKHN0cmluZykgeworICAgIC8vIFdoZW4gdGVz
dGluZyBpbGxlZ2FsIG5hbWVzLCB3ZSBwYXNzIGEgYnl0ZSBhcnJheSBkaXJlY3RseS4KKyAgICBp
ZiAoc3RyaW5nIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgIHRoaXMuZW1pdF91MzJ2KHN0cmlu
Zy5sZW5ndGgpOworICAgICAgdGhpcy5lbWl0X2J5dGVzKHN0cmluZyk7CisgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gVGhpcyBpcyB0aGUgaGFja3kgd2F5IHRvIGNvbnZlcnQgYSBKYXZh
U2NyaXB0IHN0cmluZyB0byBhIFVURjggZW5jb2RlZAorICAgIC8vIHN0cmluZyBvbmx5IGNvbnRh
aW5pbmcgc2luZ2xlLWJ5dGUgY2hhcmFjdGVycy4KKyAgICBsZXQgc3RyaW5nX3V0ZjggPSB1bmVz
Y2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKSk7CisgICAgdGhpcy5lbWl0X3UzMnYoc3Ry
aW5nX3V0ZjgubGVuZ3RoKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ191dGY4Lmxl
bmd0aDsgaSsrKSB7CisgICAgICB0aGlzLmVtaXRfdTgoc3RyaW5nX3V0ZjguY2hhckNvZGVBdChp
KSk7CisgICAgfQorICB9CisKKyAgZW1pdF9oZWFkZXIoKSB7CisgICAgdGhpcy5wdXNoKGtXYXNt
SDAsIGtXYXNtSDEsIGtXYXNtSDIsIGtXYXNtSDMsCisgICAgICAgICAgICAgIGtXYXNtVjAsIGtX
YXNtVjEsIGtXYXNtVjIsIGtXYXNtVjMpOworICB9CisKKyAgZW1pdF9zZWN0aW9uKHNlY3Rpb25f
Y29kZSwgY29udGVudF9nZW5lcmF0b3IpIHsKKyAgICAvLyBFbWl0IHNlY3Rpb24gbmFtZS4KKyAg
ICB0aGlzLmVtaXRfdTgoc2VjdGlvbl9jb2RlKTsKKyAgICAvLyBFbWl0IHRoZSBzZWN0aW9uIHRv
IGEgdGVtcG9yYXJ5IGJ1ZmZlcjogaXRzIGZ1bGwgbGVuZ3RoIGlzbid0IGtub3cgeWV0LgorICAg
IGxldCBzZWN0aW9uID0gbmV3IEJpbmFyeTsKKyAgICBjb250ZW50X2dlbmVyYXRvcihzZWN0aW9u
KTsKKyAgICAvLyBFbWl0IHNlY3Rpb24gbGVuZ3RoLgorICAgIHRoaXMuZW1pdF91MzJ2KHNlY3Rp
b24ubGVuZ3RoKTsKKyAgICAvLyBDb3B5IHRoZSB0ZW1wb3JhcnkgYnVmZmVyLgorICAgIGZvciAo
Y29uc3Qgc2VjdGlvbkJ5dGUgb2Ygc2VjdGlvbikgeworICAgICAgdGhpcy5wdXNoKHNlY3Rpb25C
eXRlKTsKKyAgICB9CisgIH0KK30KKworY2xhc3MgV2FzbUZ1bmN0aW9uQnVpbGRlciB7CisgIGNv
bnN0cnVjdG9yKG1vZHVsZSwgbmFtZSwgdHlwZV9pbmRleCkgeworICAgIHRoaXMubW9kdWxlID0g
bW9kdWxlOworICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy50eXBlX2luZGV4ID0gdHlw
ZV9pbmRleDsKKyAgICB0aGlzLmJvZHkgPSBbXTsKKyAgfQorCisgIGV4cG9ydEFzKG5hbWUpIHsK
KyAgICB0aGlzLm1vZHVsZS5hZGRFeHBvcnQobmFtZSwgdGhpcy5pbmRleCk7CisgICAgcmV0dXJu
IHRoaXM7CisgIH0KKworICBleHBvcnRGdW5jKCkgeworICAgIHRoaXMuZXhwb3J0QXModGhpcy5u
YW1lKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZEJvZHkoYm9keSkgeworICAgIGZv
ciAobGV0IGIgb2YgYm9keSkgeworICAgICAgaWYgKHR5cGVvZiBiICE9ICdudW1iZXInKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgYm9keSAoZW50cmllcyBoYXZlIHRvIGJlIG51
bWJlcnMpOiAnICsgYm9keSk7CisgICAgfQorICAgIHRoaXMuYm9keSA9IGJvZHkuc2xpY2UoKTsK
KyAgICAvLyBBdXRvbWF0aWNhbGx5IGFkZCB0aGUgZW5kIGZvciB0aGUgZnVuY3Rpb24gYmxvY2sg
dG8gdGhlIGJvZHkuCisgICAgdGhpcy5ib2R5LnB1c2goa0V4cHJFbmQpOworICAgIHJldHVybiB0
aGlzOworICB9CisKKyAgYWRkTG9jYWxzKGxvY2FscykgeworICAgIHRoaXMubG9jYWxzID0gbG9j
YWxzOworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgZW5kKCkgeworICAgIHRoaXMuYm9keS5w
dXNoKGtFeHByRW5kKTsKKyAgICByZXR1cm4gdGhpcy5tb2R1bGU7CisgIH0KK30KKworY2xhc3Mg
V2FzbUdsb2JhbEJ1aWxkZXIgeworICBjb25zdHJ1Y3Rvcihtb2R1bGUsIHR5cGUsIG11dGFibGUp
IHsKKyAgICB0aGlzLm1vZHVsZSA9IG1vZHVsZTsKKyAgICB0aGlzLnR5cGUgPSB0eXBlOworICAg
IHRoaXMubXV0YWJsZSA9IG11dGFibGU7CisgICAgdGhpcy5pbml0ID0gMDsKKyAgfQorCisgIGV4
cG9ydEFzKG5hbWUpIHsKKyAgICB0aGlzLm1vZHVsZS5leHBvcnRzLnB1c2goe25hbWU6IG5hbWUs
IGtpbmQ6IGtFeHRlcm5hbEdsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4OiB0aGlzLmluZGV4fSk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KK30KKworY2xhc3MgV2Fz
bU1vZHVsZUJ1aWxkZXIgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnR5cGVzID0gW107
CisgICAgdGhpcy5pbXBvcnRzID0gW107CisgICAgdGhpcy5leHBvcnRzID0gW107CisgICAgdGhp
cy5nbG9iYWxzID0gW107CisgICAgdGhpcy5mdW5jdGlvbnMgPSBbXTsKKyAgICB0aGlzLmZ1bmN0
aW9uX3RhYmxlID0gW107CisgICAgdGhpcy5mdW5jdGlvbl90YWJsZV9sZW5ndGggPSAwOworICAg
IHRoaXMuZnVuY3Rpb25fdGFibGVfaW5pdHMgPSBbXTsKKyAgICB0aGlzLnNlZ21lbnRzID0gW107
CisgICAgdGhpcy5leHBsaWNpdCA9IFtdOworICAgIHRoaXMubnVtX2ltcG9ydGVkX2Z1bmNzID0g
MDsKKyAgICB0aGlzLm51bV9pbXBvcnRlZF9nbG9iYWxzID0gMDsKKyAgICByZXR1cm4gdGhpczsK
KyAgfQorCisgIGFkZFN0YXJ0KHN0YXJ0X2luZGV4KSB7CisgICAgdGhpcy5zdGFydF9pbmRleCA9
IHN0YXJ0X2luZGV4OworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgYWRkTWVtb3J5KG1pbiwg
bWF4LCBleHApIHsKKyAgICB0aGlzLm1lbW9yeSA9IHttaW46IG1pbiwgbWF4OiBtYXgsIGV4cDog
ZXhwfTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIGFkZEV4cGxpY2l0U2VjdGlvbihieXRl
cykgeworICAgIHRoaXMuZXhwbGljaXQucHVzaChieXRlcyk7CisgICAgcmV0dXJuIHRoaXM7Cisg
IH0KKworICBzdHJpbmdUb0J5dGVzKG5hbWUpIHsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IEJpbmFy
eSgpOworICAgIHJlc3VsdC5lbWl0X3UzMnYobmFtZS5sZW5ndGgpOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykgeworICAgICAgcmVzdWx0LmVtaXRfdTgobmFtZS5j
aGFyQ29kZUF0KGkpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIGFkZEN1
c3RvbVNlY3Rpb24obmFtZSwgYnl0ZXMpIHsKKyAgICBuYW1lID0gdGhpcy5zdHJpbmdUb0J5dGVz
KG5hbWUpOworICAgIHZhciBsZW5ndGggPSBuZXcgQmluYXJ5KCk7CisgICAgbGVuZ3RoLmVtaXRf
dTMydihuYW1lLmxlbmd0aCArIGJ5dGVzLmxlbmd0aCk7CisgICAgdGhpcy5leHBsaWNpdC5wdXNo
KFswLCAuLi5sZW5ndGgsIC4uLm5hbWUsIC4uLmJ5dGVzXSk7CisgIH0KKworICBhZGRUeXBlKHR5
cGUpIHsKKyAgICAvLyBUT0RPOiBjYW5vbmljYWxpemUgdHlwZXM/CisgICAgdGhpcy50eXBlcy5w
dXNoKHR5cGUpOworICAgIHJldHVybiB0aGlzLnR5cGVzLmxlbmd0aCAtIDE7CisgIH0KKworICBh
ZGRHbG9iYWwobG9jYWxfdHlwZSwgbXV0YWJsZSkgeworICAgIGxldCBnbG9iID0gbmV3IFdhc21H
bG9iYWxCdWlsZGVyKHRoaXMsIGxvY2FsX3R5cGUsIG11dGFibGUpOworICAgIGdsb2IuaW5kZXgg
PSB0aGlzLmdsb2JhbHMubGVuZ3RoICsgdGhpcy5udW1faW1wb3J0ZWRfZ2xvYmFsczsKKyAgICB0
aGlzLmdsb2JhbHMucHVzaChnbG9iKTsKKyAgICByZXR1cm4gZ2xvYjsKKyAgfQorCisgIGFkZEZ1
bmN0aW9uKG5hbWUsIHR5cGUpIHsKKyAgICBsZXQgdHlwZV9pbmRleCA9ICh0eXBlb2YgdHlwZSkg
PT0gIm51bWJlciIgPyB0eXBlIDogdGhpcy5hZGRUeXBlKHR5cGUpOworICAgIGxldCBmdW5jID0g
bmV3IFdhc21GdW5jdGlvbkJ1aWxkZXIodGhpcywgbmFtZSwgdHlwZV9pbmRleCk7CisgICAgZnVu
Yy5pbmRleCA9IHRoaXMuZnVuY3Rpb25zLmxlbmd0aCArIHRoaXMubnVtX2ltcG9ydGVkX2Z1bmNz
OworICAgIHRoaXMuZnVuY3Rpb25zLnB1c2goZnVuYyk7CisgICAgcmV0dXJuIGZ1bmM7CisgIH0K
KworICBhZGRJbXBvcnQobW9kdWxlID0gIiIsIG5hbWUsIHR5cGUpIHsKKyAgICBsZXQgdHlwZV9p
bmRleCA9ICh0eXBlb2YgdHlwZSkgPT0gIm51bWJlciIgPyB0eXBlIDogdGhpcy5hZGRUeXBlKHR5
cGUpOworICAgIHRoaXMuaW1wb3J0cy5wdXNoKHttb2R1bGU6IG1vZHVsZSwgbmFtZTogbmFtZSwg
a2luZDoga0V4dGVybmFsRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5
cGVfaW5kZXh9KTsKKyAgICByZXR1cm4gdGhpcy5udW1faW1wb3J0ZWRfZnVuY3MrKzsKKyAgfQor
CisgIGFkZEltcG9ydGVkR2xvYmFsKG1vZHVsZSA9ICIiLCBuYW1lLCB0eXBlKSB7CisgICAgbGV0
IG8gPSB7bW9kdWxlOiBtb2R1bGUsIG5hbWU6IG5hbWUsIGtpbmQ6IGtFeHRlcm5hbEdsb2JhbCwg
dHlwZTogdHlwZSwKKyAgICAgICAgICAgICBtdXRhYmxlOiBmYWxzZX0KKyAgICB0aGlzLmltcG9y
dHMucHVzaChvKTsKKyAgICByZXR1cm4gdGhpcy5udW1faW1wb3J0ZWRfZ2xvYmFscysrOworICB9
CisKKyAgYWRkSW1wb3J0ZWRNZW1vcnkobW9kdWxlID0gIiIsIG5hbWUsIGluaXRpYWwgPSAwLCBt
YXhpbXVtKSB7CisgICAgbGV0IG8gPSB7bW9kdWxlOiBtb2R1bGUsIG5hbWU6IG5hbWUsIGtpbmQ6
IGtFeHRlcm5hbE1lbW9yeSwKKyAgICAgICAgICAgICBpbml0aWFsOiBpbml0aWFsLCBtYXhpbXVt
OiBtYXhpbXVtfTsKKyAgICB0aGlzLmltcG9ydHMucHVzaChvKTsKKyAgICByZXR1cm4gdGhpczsK
KyAgfQorCisgIGFkZEltcG9ydGVkVGFibGUobW9kdWxlID0gIiIsIG5hbWUsIGluaXRpYWwsIG1h
eGltdW0pIHsKKyAgICBsZXQgbyA9IHttb2R1bGU6IG1vZHVsZSwgbmFtZTogbmFtZSwga2luZDog
a0V4dGVybmFsVGFibGUsIGluaXRpYWw6IGluaXRpYWwsCisgICAgICAgICAgICAgbWF4aW11bTog
bWF4aW11bX07CisgICAgdGhpcy5pbXBvcnRzLnB1c2gobyk7CisgIH0KKworICBhZGRFeHBvcnQo
bmFtZSwgaW5kZXgpIHsKKyAgICB0aGlzLmV4cG9ydHMucHVzaCh7bmFtZTogbmFtZSwga2luZDog
a0V4dGVybmFsRnVuY3Rpb24sIGluZGV4OiBpbmRleH0pOworICAgIHJldHVybiB0aGlzOworICB9
CisKKyAgYWRkRXhwb3J0T2ZLaW5kKG5hbWUsIGtpbmQsIGluZGV4KSB7CisgICAgdGhpcy5leHBv
cnRzLnB1c2goe25hbWU6IG5hbWUsIGtpbmQ6IGtpbmQsIGluZGV4OiBpbmRleH0pOworICAgIHJl
dHVybiB0aGlzOworICB9CisKKyAgYWRkRGF0YVNlZ21lbnQoYWRkciwgZGF0YSwgaXNfZ2xvYmFs
ID0gZmFsc2UpIHsKKyAgICB0aGlzLnNlZ21lbnRzLnB1c2goe2FkZHI6IGFkZHIsIGRhdGE6IGRh
dGEsIGlzX2dsb2JhbDogaXNfZ2xvYmFsfSk7CisgICAgcmV0dXJuIHRoaXMuc2VnbWVudHMubGVu
Z3RoIC0gMTsKKyAgfQorCisgIGV4cG9ydE1lbW9yeUFzKG5hbWUpIHsKKyAgICB0aGlzLmV4cG9y
dHMucHVzaCh7bmFtZTogbmFtZSwga2luZDoga0V4dGVybmFsTWVtb3J5LCBpbmRleDogMH0pOwor
ICB9CisKKyAgYWRkRnVuY3Rpb25UYWJsZUluaXQoYmFzZSwgaXNfZ2xvYmFsLCBhcnJheSwgaXNf
aW1wb3J0ID0gZmFsc2UpIHsKKyAgICB0aGlzLmZ1bmN0aW9uX3RhYmxlX2luaXRzLnB1c2goe2Jh
c2U6IGJhc2UsIGlzX2dsb2JhbDogaXNfZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJyYXk6IGFycmF5fSk7CisgICAgaWYgKCFpc19nbG9iYWwpIHsKKyAgICAg
IHZhciBsZW5ndGggPSBiYXNlICsgYXJyYXkubGVuZ3RoOworICAgICAgaWYgKGxlbmd0aCA+IHRo
aXMuZnVuY3Rpb25fdGFibGVfbGVuZ3RoICYmICFpc19pbXBvcnQpIHsKKyAgICAgICAgdGhpcy5m
dW5jdGlvbl90YWJsZV9sZW5ndGggPSBsZW5ndGg7CisgICAgICB9CisgICAgfQorICAgIHJldHVy
biB0aGlzOworICB9CisKKyAgYXBwZW5kVG9UYWJsZShhcnJheSkgeworICAgIGZvciAobGV0IG4g
b2YgYXJyYXkpIHsKKyAgICAgIGlmICh0eXBlb2YgbiAhPSAnbnVtYmVyJykKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdpbnZhbGlkIHRhYmxlIChlbnRyaWVzIGhhdmUgdG8gYmUgbnVtYmVycyk6
ICcgKyBhcnJheSk7CisgICAgfQorICAgIHJldHVybiB0aGlzLmFkZEZ1bmN0aW9uVGFibGVJbml0
KHRoaXMuZnVuY3Rpb25fdGFibGUubGVuZ3RoLCBmYWxzZSwgYXJyYXkpOworICB9CisKKyAgc2V0
RnVuY3Rpb25UYWJsZUxlbmd0aChsZW5ndGgpIHsKKyAgICB0aGlzLmZ1bmN0aW9uX3RhYmxlX2xl
bmd0aCA9IGxlbmd0aDsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIHRvQXJyYXkoZGVidWcg
PSBmYWxzZSkgeworICAgIGxldCBiaW5hcnkgPSBuZXcgQmluYXJ5OworICAgIGxldCB3YXNtID0g
dGhpczsKKworICAgIC8vIEFkZCBoZWFkZXIKKyAgICBiaW5hcnkuZW1pdF9oZWFkZXIoKTsKKwor
ICAgIC8vIEFkZCB0eXBlIHNlY3Rpb24KKyAgICBpZiAod2FzbS50eXBlcy5sZW5ndGggPiAwKSB7
CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyB0eXBlcyBAICIgKyBiaW5hcnkubGVu
Z3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa1R5cGVTZWN0aW9uQ29kZSwgc2VjdGlv
biA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20udHlwZXMubGVuZ3RoKTsKKyAg
ICAgICAgZm9yIChsZXQgdHlwZSBvZiB3YXNtLnR5cGVzKSB7CisgICAgICAgICAgc2VjdGlvbi5l
bWl0X3U4KGtXYXNtRnVuY3Rpb25UeXBlRm9ybSk7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3Uz
MnYodHlwZS5wYXJhbXMubGVuZ3RoKTsKKyAgICAgICAgICBmb3IgKGxldCBwYXJhbSBvZiB0eXBl
LnBhcmFtcykgeworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KHBhcmFtKTsKKyAgICAgICAg
ICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYodHlwZS5yZXN1bHRzLmxlbmd0aCk7Cisg
ICAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHR5cGUucmVzdWx0cykgeworICAgICAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KHJlc3VsdCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9
KTsKKyAgICB9CisKKyAgICAvLyBBZGQgaW1wb3J0cyBzZWN0aW9uCisgICAgaWYgKHdhc20uaW1w
b3J0cy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyBpbXBv
cnRzIEAgIiArIGJpbmFyeS5sZW5ndGgpOworICAgICAgYmluYXJ5LmVtaXRfc2VjdGlvbihrSW1w
b3J0U2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3
YXNtLmltcG9ydHMubGVuZ3RoKTsKKyAgICAgICAgZm9yIChsZXQgaW1wIG9mIHdhc20uaW1wb3J0
cykgeworICAgICAgICAgIHNlY3Rpb24uZW1pdF9zdHJpbmcoaW1wLm1vZHVsZSk7CisgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3N0cmluZyhpbXAubmFtZSB8fCAnJyk7CisgICAgICAgICAgc2VjdGlv
bi5lbWl0X3U4KGltcC5raW5kKTsKKyAgICAgICAgICBpZiAoaW1wLmtpbmQgPT0ga0V4dGVybmFs
RnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGltcC50eXBlKTsKKyAg
ICAgICAgICB9IGVsc2UgaWYgKGltcC5raW5kID09IGtFeHRlcm5hbEdsb2JhbCkgeworICAgICAg
ICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW1wLnR5cGUpOworICAgICAgICAgICAgc2VjdGlvbi5l
bWl0X3U4KGltcC5tdXRhYmxlKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGltcC5raW5kID09IGtF
eHRlcm5hbE1lbW9yeSkgeworICAgICAgICAgICAgdmFyIGhhc19tYXggPSAodHlwZW9mIGltcC5t
YXhpbXVtKSAhPSAidW5kZWZpbmVkIjsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChoYXNf
bWF4ID8gMSA6IDApOyAvLyBmbGFncworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW1w
LmluaXRpYWwpOyAvLyBpbml0aWFsCisgICAgICAgICAgICBpZiAoaGFzX21heCkgc2VjdGlvbi5l
bWl0X3UzMnYoaW1wLm1heGltdW0pOyAvLyBtYXhpbXVtCisgICAgICAgICAgfSBlbHNlIGlmIChp
bXAua2luZCA9PSBrRXh0ZXJuYWxUYWJsZSkgeworICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4
KGtXYXNtRnVuY1JlZnRpb25UeXBlRm9ybSk7CisgICAgICAgICAgICB2YXIgaGFzX21heCA9ICh0
eXBlb2YgaW1wLm1heGltdW0pICE9ICJ1bmRlZmluZWQiOworICAgICAgICAgICAgc2VjdGlvbi5l
bWl0X3U4KGhhc19tYXggPyAxIDogMCk7IC8vIGZsYWdzCisgICAgICAgICAgICBzZWN0aW9uLmVt
aXRfdTMydihpbXAuaW5pdGlhbCk7IC8vIGluaXRpYWwKKyAgICAgICAgICAgIGlmIChoYXNfbWF4
KSBzZWN0aW9uLmVtaXRfdTMydihpbXAubWF4aW11bSk7IC8vIG1heGltdW0KKyAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duL3Vuc3VwcG9ydGVk
IGltcG9ydCBraW5kICIgKyBpbXAua2luZCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZnVuY3Rpb25zIGRlY2xhcmF0aW9ucworICAgIGxl
dCBudW1fZnVuY3Rpb25fbmFtZXMgPSAwOworICAgIGxldCBuYW1lcyA9IGZhbHNlOworICAgIGlm
ICh3YXNtLmZ1bmN0aW9ucy5sZW5ndGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJl
bWl0dGluZyBmdW5jdGlvbiBkZWNscyBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFy
eS5lbWl0X3NlY3Rpb24oa0Z1bmN0aW9uU2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAg
ICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLmZ1bmN0aW9ucy5sZW5ndGgpOworICAgICAgICBmb3Ig
KGxldCBmdW5jIG9mIHdhc20uZnVuY3Rpb25zKSB7CisgICAgICAgICAgaWYgKGZ1bmMubmFtZSAh
PT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICArK251bV9mdW5jdGlvbl9uYW1lczsKKyAgICAg
ICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoZnVuYy50eXBlX2luZGV4KTsKKyAg
ICAgICAgfQorICAgICAgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGZ1bmN0aW9uX3RhYmxlLgor
ICAgIGlmICh3YXNtLmZ1bmN0aW9uX3RhYmxlX2xlbmd0aCA+IDApIHsKKyAgICAgIGlmIChkZWJ1
ZykgcHJpbnQoImVtaXR0aW5nIHRhYmxlIEAgIiArIGJpbmFyeS5sZW5ndGgpOworICAgICAgYmlu
YXJ5LmVtaXRfc2VjdGlvbihrVGFibGVTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAg
IHNlY3Rpb24uZW1pdF91OCgxKTsgIC8vIG9uZSB0YWJsZSBlbnRyeQorICAgICAgICBzZWN0aW9u
LmVtaXRfdTgoa1dhc21GdW5jUmVmdGlvblR5cGVGb3JtKTsKKyAgICAgICAgc2VjdGlvbi5lbWl0
X3U4KDEpOworICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLmZ1bmN0aW9uX3RhYmxlX2xl
bmd0aCk7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZnVuY3Rpb25fdGFibGVfbGVu
Z3RoKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIC8vIEFkZCBtZW1vcnkgc2VjdGlvbgorICAg
IGlmICh3YXNtLm1lbW9yeSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50
KCJlbWl0dGluZyBtZW1vcnkgQCAiICsgYmluYXJ5Lmxlbmd0aCk7CisgICAgICBiaW5hcnkuZW1p
dF9zZWN0aW9uKGtNZW1vcnlTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rp
b24uZW1pdF91OCgxKTsgIC8vIG9uZSBtZW1vcnkgZW50cnkKKyAgICAgICAgY29uc3QgaGFzX21h
eCA9IHdhc20ubWVtb3J5Lm1heCAhPT0gdW5kZWZpbmVkOworICAgICAgICBzZWN0aW9uLmVtaXRf
dTMydihoYXNfbWF4ID8ga1Jlc2l6YWJsZU1heGltdW1GbGFnIDogMCk7CisgICAgICAgIHNlY3Rp
b24uZW1pdF91MzJ2KHdhc20ubWVtb3J5Lm1pbik7CisgICAgICAgIGlmIChoYXNfbWF4KSBzZWN0
aW9uLmVtaXRfdTMydih3YXNtLm1lbW9yeS5tYXgpOworICAgICAgfSk7CisgICAgfQorCisgICAg
Ly8gQWRkIGdsb2JhbCBzZWN0aW9uLgorICAgIGlmICh3YXNtLmdsb2JhbHMubGVuZ3RoID4gMCkg
eworICAgICAgaWYgKGRlYnVnKSBwcmludCAoImVtaXR0aW5nIGdsb2JhbHMgQCAiICsgYmluYXJ5
Lmxlbmd0aCk7CisgICAgICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtHbG9iYWxTZWN0aW9uQ29kZSwg
c2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZ2xvYmFscy5sZW5n
dGgpOworICAgICAgICBmb3IgKGxldCBnbG9iYWwgb2Ygd2FzbS5nbG9iYWxzKSB7CisgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3U4KGdsb2JhbC50eXBlKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRf
dTgoZ2xvYmFsLm11dGFibGUpOworICAgICAgICAgIGlmICgodHlwZW9mIGdsb2JhbC5pbml0X2lu
ZGV4KSA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgLy8gRW1pdCBhIGNvbnN0YW50IGlu
aXRpYWxpemVyLgorICAgICAgICAgICAgc3dpdGNoIChnbG9iYWwudHlwZSkgeworICAgICAgICAg
ICAgY2FzZSBrV2FzbUkzMjoKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHBySTMy
Q29uc3QpOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihnbG9iYWwuaW5pdCk7Cisg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrV2FzbUk2NDoKKyAgICAgICAg
ICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHBySTY0Q29uc3QpOworICAgICAgICAgICAgICBzZWN0
aW9uLmVtaXRfdTMydihnbG9iYWwuaW5pdCk7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBrV2FzbUYzMjoKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHBy
RjMyQ29uc3QpOworICAgICAgICAgICAgICBmMzJfdmlld1swXSA9IGdsb2JhbC5pbml0OworICAg
ICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzBdKTsKKyAgICAgICAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1sxXSk7CisgICAgICAgICAgICAgIHNlY3Rpb24uZW1p
dF91OChieXRlX3ZpZXdbMl0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92
aWV3WzNdKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGtXYXNtRjY0
OgorICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJGNjRDb25zdCk7CisgICAgICAg
ICAgICAgIGY2NF92aWV3WzBdID0gZ2xvYmFsLmluaXQ7CisgICAgICAgICAgICAgIHNlY3Rpb24u
ZW1pdF91OChieXRlX3ZpZXdbMF0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0
ZV92aWV3WzFdKTsKKyAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1syXSk7
CisgICAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbM10pOworICAgICAgICAg
ICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzRdKTsKKyAgICAgICAgICAgICAgc2VjdGlv
bi5lbWl0X3U4KGJ5dGVfdmlld1s1XSk7CisgICAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChi
eXRlX3ZpZXdbNl0pOworICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3Wzdd
KTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIEVtaXQgYSBnbG9iYWwtaW5kZXggaW5pdGlhbGl6ZXIuCisgICAg
ICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJHZXRHbG9iYWwpOworICAgICAgICAgICAgc2Vj
dGlvbi5lbWl0X3UzMnYoZ2xvYmFsLmluaXRfaW5kZXgpOworICAgICAgICAgIH0KKyAgICAgICAg
ICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJFbmQpOyAgLy8gZW5kIG9mIGluaXQgZXhwcmVzc2lvbgor
ICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZXhwb3J0IHRhYmxlLgor
ICAgIHZhciBtZW1fZXhwb3J0ID0gKHdhc20ubWVtb3J5ICE9PSB1bmRlZmluZWQgJiYgd2FzbS5t
ZW1vcnkuZXhwKTsKKyAgICB2YXIgZXhwb3J0c19jb3VudCA9IHdhc20uZXhwb3J0cy5sZW5ndGgg
KyAobWVtX2V4cG9ydCA/IDEgOiAwKTsKKyAgICBpZiAoZXhwb3J0c19jb3VudCA+IDApIHsKKyAg
ICAgIGlmIChkZWJ1ZykgcHJpbnQoImVtaXR0aW5nIGV4cG9ydHMgQCAiICsgYmluYXJ5Lmxlbmd0
aCk7CisgICAgICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtFeHBvcnRTZWN0aW9uQ29kZSwgc2VjdGlv
biA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGV4cG9ydHNfY291bnQpOworICAgICAg
ICBmb3IgKGxldCBleHAgb2Ygd2FzbS5leHBvcnRzKSB7CisgICAgICAgICAgc2VjdGlvbi5lbWl0
X3N0cmluZyhleHAubmFtZSk7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGV4cC5raW5kKTsK
KyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihleHAuaW5kZXgpOworICAgICAgICB9CisgICAg
ICAgIGlmIChtZW1fZXhwb3J0KSB7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3N0cmluZygibWVt
b3J5Iik7CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHRlcm5hbE1lbW9yeSk7CisgICAg
ICAgICAgc2VjdGlvbi5lbWl0X3U4KDApOworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisK
KyAgICAvLyBBZGQgc3RhcnQgZnVuY3Rpb24gc2VjdGlvbi4KKyAgICBpZiAod2FzbS5zdGFydF9p
bmRleCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyBz
dGFydCBmdW5jdGlvbiBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3Nl
Y3Rpb24oa1N0YXJ0U2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4geworICAgICAgICBzZWN0aW9uLmVt
aXRfdTMydih3YXNtLnN0YXJ0X2luZGV4KTsKKyAgICAgIH0pOworICAgIH0KKworICAgIC8vIEFk
ZCB0YWJsZSBlbGVtZW50cy4KKyAgICBpZiAod2FzbS5mdW5jdGlvbl90YWJsZV9pbml0cy5sZW5n
dGggPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyB0YWJsZSBAICIgKyBi
aW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0VsZW1lbnRTZWN0aW9u
Q29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHZhciBpbml0cyA9IHdhc20uZnVuY3Rpb25fdGFi
bGVfaW5pdHM7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGluaXRzLmxlbmd0aCk7CisKKyAg
ICAgICAgZm9yIChsZXQgaW5pdCBvZiBpbml0cykgeworICAgICAgICAgIHNlY3Rpb24uZW1pdF91
OCgwKTsgLy8gdGFibGUgaW5kZXgKKyAgICAgICAgICBpZiAoaW5pdC5pc19nbG9iYWwpIHsKKyAg
ICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckdldEdsb2JhbCk7CisgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckkzMkNvbnN0KTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW5pdC5iYXNlKTsKKyAgICAgICAg
ICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJFbmQpOworICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2
KGluaXQuYXJyYXkubGVuZ3RoKTsKKyAgICAgICAgICBmb3IgKGxldCBpbmRleCBvZiBpbml0LmFy
cmF5KSB7CisgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihpbmRleCk7CisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZnVuY3Rpb24gYm9k
aWVzLgorICAgIGlmICh3YXNtLmZ1bmN0aW9ucy5sZW5ndGggPiAwKSB7CisgICAgICAvLyBlbWl0
IGZ1bmN0aW9uIGJvZGllcworICAgICAgaWYgKGRlYnVnKSBwcmludCgiZW1pdHRpbmcgY29kZSBA
ICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0NvZGVTZWN0
aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZnVu
Y3Rpb25zLmxlbmd0aCk7CisgICAgICAgIGZvciAobGV0IGZ1bmMgb2Ygd2FzbS5mdW5jdGlvbnMp
IHsKKyAgICAgICAgICAvLyBGdW5jdGlvbiBib2R5IGxlbmd0aCB3aWxsIGJlIHBhdGNoZWQgbGF0
ZXIuCisgICAgICAgICAgbGV0IGxvY2FsX2RlY2xzID0gW107CisgICAgICAgICAgbGV0IGwgPSBm
dW5jLmxvY2FsczsKKyAgICAgICAgICBpZiAobCAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAg
ICBsZXQgbG9jYWxfZGVjbHNfY291bnQgPSAwOworICAgICAgICAgICAgaWYgKGwuaTMyX2NvdW50
ID4gMCkgeworICAgICAgICAgICAgICBsb2NhbF9kZWNscy5wdXNoKHtjb3VudDogbC5pMzJfY291
bnQsIHR5cGU6IGtXYXNtSTMyfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobC5p
NjRfY291bnQgPiAwKSB7CisgICAgICAgICAgICAgIGxvY2FsX2RlY2xzLnB1c2goe2NvdW50OiBs
Lmk2NF9jb3VudCwgdHlwZToga1dhc21JNjR9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChsLmYzMl9jb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgbG9jYWxfZGVjbHMucHVzaCh7
Y291bnQ6IGwuZjMyX2NvdW50LCB0eXBlOiBrV2FzbUYzMn0pOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGwuZjY0X2NvdW50ID4gMCkgeworICAgICAgICAgICAgICBsb2NhbF9kZWNs
cy5wdXNoKHtjb3VudDogbC5mNjRfY291bnQsIHR5cGU6IGtXYXNtRjY0fSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgbGV0IGhlYWRlciA9IG5ldyBCaW5hcnk7Cisg
ICAgICAgICAgaGVhZGVyLmVtaXRfdTMydihsb2NhbF9kZWNscy5sZW5ndGgpOworICAgICAgICAg
IGZvciAobGV0IGRlY2wgb2YgbG9jYWxfZGVjbHMpIHsKKyAgICAgICAgICAgIGhlYWRlci5lbWl0
X3UzMnYoZGVjbC5jb3VudCk7CisgICAgICAgICAgICBoZWFkZXIuZW1pdF91OChkZWNsLnR5cGUp
OworICAgICAgICAgIH0KKworICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGhlYWRlci5sZW5n
dGggKyBmdW5jLmJvZHkubGVuZ3RoKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfYnl0ZXMoaGVh
ZGVyKTsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfYnl0ZXMoZnVuYy5ib2R5KTsKKyAgICAgICAg
fQorICAgICAgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGRhdGEgc2VnbWVudHMuCisgICAgaWYg
KHdhc20uc2VnbWVudHMubGVuZ3RoID4gMCkgeworICAgICAgaWYgKGRlYnVnKSBwcmludCgiZW1p
dHRpbmcgZGF0YSBzZWdtZW50cyBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5l
bWl0X3NlY3Rpb24oa0RhdGFTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rp
b24uZW1pdF91MzJ2KHdhc20uc2VnbWVudHMubGVuZ3RoKTsKKyAgICAgICAgZm9yIChsZXQgc2Vn
IG9mIHdhc20uc2VnbWVudHMpIHsKKyAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoMCk7ICAvLyBs
aW5lYXIgbWVtb3J5IGluZGV4IDAKKyAgICAgICAgICBpZiAoc2VnLmlzX2dsb2JhbCkgeworICAg
ICAgICAgICAgLy8gaW5pdGlhbGl6ZXIgaXMgYSBnbG9iYWwgdmFyaWFibGUKKyAgICAgICAgICAg
IHNlY3Rpb24uZW1pdF91OChrRXhwckdldEdsb2JhbCk7CisgICAgICAgICAgICBzZWN0aW9uLmVt
aXRfdTMydihzZWcuYWRkcik7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGlu
aXRpYWxpemVyIGlzIGEgY29uc3RhbnQKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhw
ckkzMkNvbnN0KTsKKyAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHNlZy5hZGRyKTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHByRW5kKTsKKyAgICAgICAg
ICBzZWN0aW9uLmVtaXRfdTMydihzZWcuZGF0YS5sZW5ndGgpOworICAgICAgICAgIHNlY3Rpb24u
ZW1pdF9ieXRlcyhzZWcuZGF0YSk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0KKworICAg
IC8vIEFkZCBhbnkgZXhwbGljaXRseSBhZGRlZCBzZWN0aW9ucworICAgIGZvciAobGV0IGV4cCBv
ZiB3YXNtLmV4cGxpY2l0KSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyBleHBs
aWNpdCBAICIgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X2J5dGVzKGV4cCk7
CisgICAgfQorCisgICAgLy8gQWRkIGZ1bmN0aW9uIG5hbWVzLgorICAgIGlmIChudW1fZnVuY3Rp
b25fbmFtZXMgPiAwKSB7CisgICAgICBpZiAoZGVidWcpIHByaW50KCdlbWl0dGluZyBuYW1lcyBA
ICcgKyBiaW5hcnkubGVuZ3RoKTsKKyAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa1Vua25vd25T
ZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7CisgICAgICAgIHNlY3Rpb24uZW1pdF9zdHJpbmcoJ25h
bWUnKTsKKyAgICAgICAgc2VjdGlvbi5lbWl0X3NlY3Rpb24oa0Z1bmN0aW9uTmFtZXNDb2RlLCBu
YW1lX3NlY3Rpb24gPT4geworICAgICAgICAgIG5hbWVfc2VjdGlvbi5lbWl0X3UzMnYobnVtX2Z1
bmN0aW9uX25hbWVzKTsKKyAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIHdhc20uZnVuY3Rpb25z
KSB7CisgICAgICAgICAgICBpZiAoZnVuYy5uYW1lID09PSB1bmRlZmluZWQpIGNvbnRpbnVlOwor
ICAgICAgICAgICAgbmFtZV9zZWN0aW9uLmVtaXRfdTMydihmdW5jLmluZGV4KTsKKyAgICAgICAg
ICAgIG5hbWVfc2VjdGlvbi5lbWl0X3N0cmluZyhmdW5jLm5hbWUpOworICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gYmluYXJ5OworICB9CisK
KyAgdG9CdWZmZXIoZGVidWcgPSBmYWxzZSkgeworICAgIGxldCBieXRlcyA9IHRoaXMudG9BcnJh
eShkZWJ1Zyk7CisgICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgp
OworICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICBsZXQgdmFsID0gYnl0ZXNbaV07
CisgICAgICBpZiAoKHR5cGVvZiB2YWwpID09ICJzdHJpbmciKSB2YWwgPSB2YWwuY2hhckNvZGVB
dCgwKTsKKyAgICAgIHZpZXdbaV0gPSB2YWwgfCAwOworICAgIH0KKyAgICByZXR1cm4gYnVmZmVy
OworICB9CisKKyAgaW5zdGFudGlhdGUoZmZpKSB7CisgICAgbGV0IG1vZHVsZSA9IG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUodGhpcy50b0J1ZmZlcigpKTsKKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCBmZmkpOworICAgIHJldHVybiBpbnN0YW5jZTsK
KyAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVz
cy93YXN0LmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtaGFybmVzcy93YXN0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNlYTcxYTMzMjhlNTMyYmJiMDcxMzhmMTA1NGM0ZDdmNWY3Njc5YTIKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzL3dh
c3QuanMKQEAgLTAsMCArMSwyOTc3NyBAQAorLy8gRE8gTk9UIEVESVQuIEdlbmVyYXRlZCBmcm9t
IFdlYkFzc2VtYmx5IHNwZWMgaW50ZXJwcmV0ZXIKKworbGV0IFdlYkFzc2VtYmx5VGV4dCA9IChm
dW5jdGlvbigpIHsKK8KgIGxldCBfcmVnaXN0cnkgPSB7X19wcm90b19fOiBudWxsfTsKKyAgZnVu
Y3Rpb24gbm9ybWFsaXplKGZpbGUpIHsKKyAgICByZXR1cm4gZmlsZS5zcGxpdCgnLycpLnJldmVy
c2UoKVswXS5zcGxpdCgnLicpWzBdOworICB9CivCoCBmdW5jdGlvbiByZXF1aXJlKGZpbGUpIHsK
K8KgIMKgIGxldCBuYW1lID0gbm9ybWFsaXplKGZpbGUpOworICAgIGlmICghKG5hbWUgaW4gX3Jl
Z2lzdHJ5KSkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIG1vZHVsZTogJyArIG5h
bWUpCivCoCDCoCB9IGVsc2UgaWYgKHR5cGVvZiBfcmVnaXN0cnlbbmFtZV0gPT09ICdmdW5jdGlv
bicpIHsKKworCivCoCDCoCDCoCBsZXQgZiA9IF9yZWdpc3RyeVtuYW1lXTsKK8KgIMKgIMKgIF9y
ZWdpc3RyeVtuYW1lXSA9IGZ1bmN0aW9uKCkgeyB0aHJvdyBuZXcgRXJyb3IoJ2N5Y2xpYyBtb2R1
bGU6ICcgKyBuYW1lKSB9OworwqAgwqAgwqAgX3JlZ2lzdHJ5W25hbWVdID0gZigpOworwqAgwqAg
fQorwqAgwqAgcmV0dXJuIF9yZWdpc3RyeVtuYW1lXTsKK8KgIH0KKworCisgIF9yZWdpc3RyeVsn
YXJyYW5nZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2YgYXJyYW5nZS5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVND
UklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7
CisKK3ZhciBGMzIgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjMyIik7Cit2YXIg
RjY0ICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Y2NCIpOwordmFyIEkzMiAgICAg
ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9pMzIiKTsKK3ZhciBJNjQgICAgICAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vaTY0Iik7Cit2YXIgTGliICAgICAgICAgICAgICAgICAgICAg
PSByZXF1aXJlKCIuL2xpYiIpOwordmFyIExpc3QgICAgICAgICAgICAgICAgICAgID0gcmVxdWly
ZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBCbG9jayAgICAgICAgICAgICAgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFyIEN1cnJ5ICAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2YXIg
VHlwZXMgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3R5cGVzIik7Cit2YXIgQnVmZmVy
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYnVmZmVyIik7
Cit2YXIgRGVjb2RlICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2RlY29kZSIpOwordmFy
IEVuY29kZSAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9lbmNvZGUiKTsKK3ZhciBQcmlu
dGYgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wcmludGYi
KTsKK3ZhciBTb3VyY2UgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc291cmNlIik7Cit2
YXIgJCRTdHJpbmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
c3RyaW5nIik7Cit2YXIgVmFsdWVzICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3ZhbHVl
cyIpOwordmFyIENhbWxfaW50MzIgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL2NhbWxfaW50MzIiKTsKK3ZhciBQZXJ2YXNpdmVzICAgICAgICAgICAgICA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMiKTsKKworZnVuY3Rpb24gYWRkX2hleF9jaGFyKGJ1ZiwgYykgeworICByZXR1cm4gQ3Vy
cnkuXzEoUHJpbnRmLmJwcmludGYoYnVmLCAvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAg
ICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAg
IC8qICJcXCIgKi85MiwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBaZXJvcyAqLzIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICJcXCUwMngiCisgICAgICAg
ICAgICAgICAgXSksIGMpOworfQorCitmdW5jdGlvbiBhZGRfY2hhcihidWYsIGMpIHsKKyAgaWYg
KGMgPCAvKiAiICIgKi8zMiB8fCBjID49IC8qICJcMTI3IiAqLzEyNykgeworICAgIHJldHVybiBh
ZGRfaGV4X2NoYXIoYnVmLCBjKTsKKyAgfQorICBlbHNlIHsKKyAgICBpZiAoYyA9PT0gLyogIlwi
IiAqLzM0IHx8IGMgPT09IC8qICJcXCIgKi85MikgeworICAgICAgQnVmZmVyLmFkZF9jaGFyKGJ1
ZiwgLyogIlxcIiAqLzkyKTsKKyAgICB9CisgICAgcmV0dXJuIEJ1ZmZlci5hZGRfY2hhcihidWYs
IGMpOworICB9Cit9CisKK2Z1bmN0aW9uIHN0cmluZ193aXRoKGFkZF9jaGFyLCBzKSB7CisgIHZh
ciBidWYgPSBCdWZmZXIuY3JlYXRlKENhbWxfaW50MzIuaW11bCgzLCBzLmxlbmd0aCkgKyAyIHwg
MCk7CisgIEJ1ZmZlci5hZGRfY2hhcihidWYsIC8qICJcIiIgKi8zNCk7CisgICQkU3RyaW5nLml0
ZXIoQ3VycnkuXzEoYWRkX2NoYXIsIGJ1ZiksIHMpOworICBCdWZmZXIuYWRkX2NoYXIoYnVmLCAv
KiAiXCIiICovMzQpOworICByZXR1cm4gQnVmZmVyLmNvbnRlbnRzKGJ1Zik7Cit9CisKK2Z1bmN0
aW9uIGxpc3Rfb2Zfb3B0KHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgIHBhcmFtWzBdLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisK
K2Z1bmN0aW9uIGJyZWFrX2J5dGVzKHMpIHsKKyAgdmFyIHNzID0gQ3VycnkuXzIoTGliLiQkU3Ry
aW5nWy8qIGJyZWFrdXAgKi8wXSwgcywgMTYpOworICB2YXIgZiA9IGZ1bmN0aW9uIChwYXJhbSkg
eworICAgIHJldHVybiAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFkZF9oZXhf
Y2hhciwgcGFyYW0pXSk7CisgIH07CisgIHJldHVybiBMaXN0Lm1hcChmLCBzcyk7Cit9CisKK2Z1
bmN0aW9uIGRlY2xzKGtpbmQsIHRzKSB7CisgIHZhciBoZWFkID0ga2luZDsKKyAgdmFyIGYgPSBm
dW5jdGlvbiAocGFyYW0pIHsKKyAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBl
cy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSldKTsKKyAgfTsKKyAgdmFyIHhzID0gdHM7Cisg
IGlmICh4cykgeworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIC8qIE5vZGUgKi9C
bG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgaGVhZCwKKyAgICAgICAgICAgICAgICBMaXN0
Lm1hcChmLCB4cykKKyAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KK30K
KworZnVuY3Rpb24gZnVuY190eXBlKHBhcmFtKSB7CisgIHJldHVybiAvKiBOb2RlICovQmxvY2su
X18oMSwgWworICAgICAgICAgICAgImZ1bmMiLAorICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQo
ZGVjbHMoInBhcmFtIiwgcGFyYW1bMF0pLCBkZWNscygicmVzdWx0IiwgcGFyYW1bMV0pKQorICAg
ICAgICAgIF0pOworfQorCitmdW5jdGlvbiBsaW1pdHMobmF0LCBwYXJhbSkgeworICB2YXIgeHMg
PSBsaXN0X29mX29wdChwYXJhbVsvKiBtYXggKi8xXSk7CisgIHJldHVybiAkJFN0cmluZy5jb25j
YXQoIiAiLCAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzEobmF0LCBwYXJhbVsvKiBt
aW4gKi8wXSksCisgICAgICAgICAgICAgIExpc3QubWFwKG5hdCwgeHMpCisgICAgICAgICAgICBd
KTsKK30KKworZnVuY3Rpb24gZ2xvYmFsX3R5cGUocGFyYW0pIHsKKyAgdmFyIHQgPSBwYXJhbVsw
XTsKKyAgaWYgKHBhcmFtWzFdICE9PSAwKSB7CisgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5f
XygxLCBbCisgICAgICAgICAgICAgICJtdXQiLAorICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW1R5cGVzLnN0cmluZ19vZl92YWx1
ZV90eXBlKHQpXSksCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgIF0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBBdG9tICovQmxv
Y2suX18oMCwgW1R5cGVzLnN0cmluZ19vZl92YWx1ZV90eXBlKHQpXSk7CisgIH0KK30KKworZnVu
Y3Rpb24gdGVzdG9wKF8sIF8kMSkgeworICByZXR1cm4gImVxeiI7Cit9CisKK2Z1bmN0aW9uIHJl
bG9wKF8sIHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAg
ICAgcmV0dXJuICJlcSI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAibmUiOworICAg
IGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gImx0X3MiOworICAgIGNhc2UgMyA6IAorICAgICAg
ICByZXR1cm4gImx0X3UiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gImd0X3MiOwor
ICAgIGNhc2UgNSA6IAorICAgICAgICByZXR1cm4gImd0X3UiOworICAgIGNhc2UgNiA6IAorICAg
ICAgICByZXR1cm4gImxlX3MiOworICAgIGNhc2UgNyA6IAorICAgICAgICByZXR1cm4gImxlX3Ui
OworICAgIGNhc2UgOCA6IAorICAgICAgICByZXR1cm4gImdlX3MiOworICAgIGNhc2UgOSA6IAor
ICAgICAgICByZXR1cm4gImdlX3UiOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIHVub3AoXywg
cGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1
cm4gImNseiI7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAiY3R6IjsKKyAgICBjYXNl
IDIgOiAKKyAgICAgICAgcmV0dXJuICJwb3BjbnQiOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9u
IGJpbm9wKF8sIHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAg
ICAgICAgcmV0dXJuICJhZGQiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gInN1YiI7
CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAibXVsIjsKKyAgICBjYXNlIDMgOiAKKyAg
ICAgICAgcmV0dXJuICJkaXZfcyI7CisgICAgY2FzZSA0IDogCisgICAgICAgIHJldHVybiAiZGl2
X3UiOworICAgIGNhc2UgNSA6IAorICAgICAgICByZXR1cm4gInJlbV9zIjsKKyAgICBjYXNlIDYg
OiAKKyAgICAgICAgcmV0dXJuICJyZW1fdSI7CisgICAgY2FzZSA3IDogCisgICAgICAgIHJldHVy
biAiYW5kIjsKKyAgICBjYXNlIDggOiAKKyAgICAgICAgcmV0dXJuICJvciI7CisgICAgY2FzZSA5
IDogCisgICAgICAgIHJldHVybiAieG9yIjsKKyAgICBjYXNlIDEwIDogCisgICAgICAgIHJldHVy
biAic2hsIjsKKyAgICBjYXNlIDExIDogCisgICAgICAgIHJldHVybiAic2hyX3MiOworICAgIGNh
c2UgMTIgOiAKKyAgICAgICAgcmV0dXJuICJzaHJfdSI7CisgICAgY2FzZSAxMyA6IAorICAgICAg
ICByZXR1cm4gInJvdGwiOworICAgIGNhc2UgMTQgOiAKKyAgICAgICAgcmV0dXJuICJyb3RyIjsK
KyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBjdnRvcCh4eCwgcGFyYW0pIHsKKyAgc3dpdGNoIChw
YXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gImV4dGVuZF9zL2kzMiI7Cisg
ICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAiZXh0ZW5kX3UvaTMyIjsKKyAgICBjYXNlIDIg
OiAKKyAgICAgICAgcmV0dXJuICJ3cmFwL2k2NCI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJl
dHVybiAidHJ1bmNfcy9mMzIiOworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gInRydW5j
X3UvZjMyIjsKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuICJ0cnVuY19zL2Y2NCI7Cisg
ICAgY2FzZSA2IDogCisgICAgICAgIHJldHVybiAidHJ1bmNfdS9mNjQiOworICAgIGNhc2UgNyA6
IAorICAgICAgICByZXR1cm4gInJlaW50ZXJwcmV0L2YiICsgeHg7CisgICAgCisgIH0KK30KKwor
ZnVuY3Rpb24gdGVzdG9wJDEoXywgXyQxKSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgIFsKKyAgICAgICAgICAiL3Vz
ci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxk
L2pzbGliL3NyYy9hcnJhbmdlLm1sIiwKKyAgICAgICAgICAxMjgsCisgICAgICAgICAgMjcKKyAg
ICAgICAgXQorICAgICAgXTsKK30KKworZnVuY3Rpb24gcmVsb3AkMShfLCBwYXJhbSkgeworICBz
d2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVybiAiZXEiOworICAg
IGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gIm5lIjsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAg
cmV0dXJuICJsdCI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAiZ3QiOworICAgIGNh
c2UgNCA6IAorICAgICAgICByZXR1cm4gImxlIjsKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0
dXJuICJnZSI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gdW5vcCQxKF8sIHBhcmFtKSB7Cisg
IHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuICJuZWciOwor
ICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gImFicyI7CisgICAgY2FzZSAyIDogCisgICAg
ICAgIHJldHVybiAiY2VpbCI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAiZmxvb3Ii
OworICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gInRydW5jIjsKKyAgICBjYXNlIDUgOiAK
KyAgICAgICAgcmV0dXJuICJuZWFyZXN0IjsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgcmV0dXJu
ICJzcXJ0IjsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBiaW5vcCQxKF8sIHBhcmFtKSB7Cisg
IHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuICJhZGQiOwor
ICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gInN1YiI7CisgICAgY2FzZSAyIDogCisgICAg
ICAgIHJldHVybiAibXVsIjsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAgcmV0dXJuICJkaXYiOwor
ICAgIGNhc2UgNCA6IAorICAgICAgICByZXR1cm4gIm1pbiI7CisgICAgY2FzZSA1IDogCisgICAg
ICAgIHJldHVybiAibWF4IjsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgcmV0dXJuICJjb3B5c2ln
biI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gY3Z0b3AkMSh4eCwgcGFyYW0pIHsKKyAgc3dp
dGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfcy9p
MzIiOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfdS9pMzIiOworICAg
IGNhc2UgMiA6IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfcy9pNjQiOworICAgIGNhc2UgMyA6
IAorICAgICAgICByZXR1cm4gImNvbnZlcnRfdS9pNjQiOworICAgIGNhc2UgNCA6IAorICAgICAg
ICByZXR1cm4gInByb21vdGUvZjMyIjsKKyAgICBjYXNlIDUgOiAKKyAgICAgICAgcmV0dXJuICJk
ZW1vdGUvZjY0IjsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgcmV0dXJuICJyZWludGVycHJldC9p
IiArIHh4OworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIG9wZXIocGFyYW0sIG9wKSB7CisgIHZh
ciBmbG9hdG9wID0gcGFyYW1bMV07CisgIHZhciBpbnRvcCA9IHBhcmFtWzBdOworICB2YXIgJGpz
OworICBzd2l0Y2ggKG9wLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgJGpzID0g
Q3VycnkuXzIoaW50b3AsICIzMiIsIG9wWzBdKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAx
IDogCisgICAgICAgICRqcyA9IEN1cnJ5Ll8yKGludG9wLCAiNjQiLCBvcFswXSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgMiA6IAorICAgICAgICAkanMgPSBDdXJyeS5fMihmbG9hdG9wLCAi
MzIiLCBvcFswXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMyA6IAorICAgICAgICAkanMg
PSBDdXJyeS5fMihmbG9hdG9wLCAiNjQiLCBvcFswXSk7CisgICAgICAgIGJyZWFrOworICAgIAor
ICB9CisgIHJldHVybiBUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShWYWx1ZXMudHlwZV9vZihv
cCkpICsgKCIuIiArICRqcyk7Cit9CisKK3ZhciBwYXJ0aWFsX2FyZyA9IC8qIHR1cGxlICovWwor
ICB1bm9wLAorICB1bm9wJDEKK107CisKK2Z1bmN0aW9uIHVub3AkMihwYXJhbSkgeworICByZXR1
cm4gb3BlcihwYXJ0aWFsX2FyZywgcGFyYW0pOworfQorCit2YXIgcGFydGlhbF9hcmckMSA9IC8q
IHR1cGxlICovWworICBiaW5vcCwKKyAgYmlub3AkMQorXTsKKworZnVuY3Rpb24gYmlub3AkMihw
YXJhbSkgeworICByZXR1cm4gb3BlcihwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7Cit9CisKK3ZhciBw
YXJ0aWFsX2FyZyQyID0gLyogdHVwbGUgKi9bCisgIHRlc3RvcCwKKyAgdGVzdG9wJDEKK107CisK
K2Z1bmN0aW9uIHRlc3RvcCQyKHBhcmFtKSB7CisgIHJldHVybiBvcGVyKHBhcnRpYWxfYXJnJDIs
IHBhcmFtKTsKK30KKwordmFyIHBhcnRpYWxfYXJnJDMgPSAvKiB0dXBsZSAqL1sKKyAgcmVsb3As
CisgIHJlbG9wJDEKK107CisKK2Z1bmN0aW9uIHJlbG9wJDIocGFyYW0pIHsKKyAgcmV0dXJuIG9w
ZXIocGFydGlhbF9hcmckMywgcGFyYW0pOworfQorCit2YXIgcGFydGlhbF9hcmckNCA9IC8qIHR1
cGxlICovWworICBjdnRvcCwKKyAgY3Z0b3AkMQorXTsKKworZnVuY3Rpb24gY3Z0b3AkMihwYXJh
bSkgeworICByZXR1cm4gb3BlcihwYXJ0aWFsX2FyZyQ0LCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9u
IG1lbV9zaXplKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAg
ICAgICAgcmV0dXJuICI4IjsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuICIxNiI7Cisg
ICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAiMzIiOworICAgIAorICB9Cit9CisKK2Z1bmN0
aW9uIGV4dGVuc2lvbihwYXJhbSkgeworICBpZiAocGFyYW0gIT09IDApIHsKKyAgICByZXR1cm4g
Il91IjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gIl9zIjsKKyAgfQorfQorCitmdW5jdGlv
biBtZW1vcChuYW1lLCBwYXJhbSkgeworICB2YXIgb2Zmc2V0ID0gcGFyYW1bLyogb2Zmc2V0ICov
Ml07CisgIHZhciBhbGlnbiA9IHBhcmFtWy8qIGFsaWduICovMV07CisgIHZhciB0eSA9IHBhcmFt
Wy8qIHR5ICovMF07CisgIHJldHVybiBUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZSh0eSkgKyAo
Ii4iICsgKG5hbWUgKyAoKAorICAgICAgICAgICAgICAgIG9mZnNldCA/ICIgb2Zmc2V0PSIgKyBD
dXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG9mZnNldCkgOiAiIgorICAgICAgICAgICAgICApICsg
KAorICAgICAgICAgICAgICAgICgxIDw8IGFsaWduKSA9PT0gVHlwZXMuc2l6ZSh0eSkgPyAiIiA6
ICIgYWxpZ249IiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgQ3VycnkuXzEoSTMyLm9mX2lu
dF91LCAoMSA8PCBhbGlnbikpKQorICAgICAgICAgICAgICApKSkpOworfQorCitmdW5jdGlvbiBs
b2Fkb3Aob3ApIHsKKyAgdmFyIG1hdGNoID0gb3BbLyogc3ogKi8zXTsKKyAgaWYgKG1hdGNoKSB7
CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICByZXR1cm4gbWVtb3AoImxvYWQiICsg
KG1lbV9zaXplKG1hdGNoJDFbMF0pICsgZXh0ZW5zaW9uKG1hdGNoJDFbMV0pKSwgb3ApOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBtZW1vcCgibG9hZCIsIG9wKTsKKyAgfQorfQorCitmdW5j
dGlvbiBzdG9yZW9wKG9wKSB7CisgIHZhciBtYXRjaCA9IG9wWy8qIHN6ICovM107CisgIGlmICht
YXRjaCkgeworICAgIHJldHVybiBtZW1vcCgic3RvcmUiICsgbWVtX3NpemUobWF0Y2hbMF0pLCBv
cCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG1lbW9wKCJzdG9yZSIsIG9wKTsKKyAgfQor
fQorCitmdW5jdGlvbiAkJHZhcih4KSB7CisgIHJldHVybiBDdXJyeS5fMShJMzIudG9fc3RyaW5n
X3UsIHhbLyogaXQgKi8xXSk7Cit9CisKK2Z1bmN0aW9uIGNvbnN0b3AodikgeworICByZXR1cm4g
VHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUoVmFsdWVzLnR5cGVfb2YodlsvKiBpdCAqLzFdKSkg
KyAiLmNvbnN0IjsKK30KKworZnVuY3Rpb24gaW5zdHIoZSkgeworICB2YXIgbWF0Y2ggPSBlWy8q
IGl0ICovMV07CisgIHZhciBtYXRjaCQxOworICBpZiAodHlwZW9mIG1hdGNoID09PSAibnVtYmVy
IikgeworICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIG1h
dGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJ1bnJlYWNoYWJsZSIsCisgICAgICAg
ICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSAxIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgIm5v
cCIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAg
ICAgICAgICAgInJldHVybiIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8q
IHR1cGxlICovWworICAgICAgICAgICAgImRyb3AiLAorICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAg
IG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJzZWxlY3QiLAorICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
NSA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJjdXJy
ZW50X21lbW9yeSIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxl
ICovWworICAgICAgICAgICAgImdyb3dfbWVtb3J5IiwKKyAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9CisgIH0KKyAgZWxz
ZSB7CisgICAgc3dpdGNoIChtYXRjaC50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICB2YXIgZiA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgcmV0dXJuIC8qIEF0
b20gKi9CbG9jay5fXygwLCBbVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUocGFyYW0pXSk7Cisg
ICAgICAgICAgfTsKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAg
ICAiYmxvY2siLAorICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoTGlzdC5tYXAoZiwgbWF0Y2hb
MF0pLCBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMV0pKQorICAgICAgICAgIF07CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB2YXIgZiQxID0gZnVuY3Rpb24gKHBh
cmFtKSB7CisgICAgICAgICAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBlcy5z
dHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSldKTsKKyAgICAgICAgICB9OworICAgICAgICAgIG1h
dGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJsb29wIiwKKyAgICAgICAgICAgIFBl
cnZhc2l2ZXMuJGF0KExpc3QubWFwKGYkMSwgbWF0Y2hbMF0pLCBMaXN0Lm1hcChpbnN0ciwgbWF0
Y2hbMV0pKQorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICB2YXIgZiQyID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICByZXR1
cm4gLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJh
bSldKTsKKyAgICAgICAgICB9OworICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICJpZiIsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChMaXN0Lm1hcChmJDIs
IG1hdGNoWzBdKSwgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAvKiBOb2RlICovQmxvY2su
X18oMSwgWworICAgICAgICAgICAgICAgICAgICAgICJ0aGVuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMV0pCisgICAgICAgICAgICAgICAgICAgIF0pLAor
ICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIE5vZGUg
Ki9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAiZWxzZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbMl0pCisgICAgICAgICAgICAg
ICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICJiciAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXRjaFswXVsvKiBp
dCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9b
CisgICAgICAgICAgICAiYnJfaWYgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hb
MF1bLyogaXQgKi8xXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIHhzID0gUGVydmFz
aXZlcy4kYXQobWF0Y2hbMF0sIC8qIDo6ICovWworICAgICAgICAgICAgICAgIG1hdGNoWzFdLAor
ICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICBt
YXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAiYnJfdGFibGUgIiArICQkU3RyaW5n
LmNvbmNhdCgiICIsIExpc3QubWFwKCQkdmFyLCB4cykpLAorICAgICAgICAgICAgLyogW10gKi8w
CisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6IAorICAgICAg
ICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJjYWxsICIgKyBDdXJyeS5f
MShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pLAorICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNyA6IAor
ICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJjYWxsX2luZGly
ZWN0ICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pLAor
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgOCA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICJnZXRfbG9jYWwgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyog
aXQgKi8xXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICov
WworICAgICAgICAgICAgInNldF9sb2NhbCAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBt
YXRjaFswXVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgbWF0Y2gkMSA9
IC8qIHR1cGxlICovWworICAgICAgICAgICAgInRlZV9sb2NhbCAiICsgQ3VycnkuXzEoSTMyLnRv
X3N0cmluZ191LCBtYXRjaFswXVsvKiBpdCAqLzFdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDExIDogCisgICAgICAg
ICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAgImdldF9nbG9iYWwgIiArIEN1
cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSksCisgICAgICAgICAg
ICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAx
MiA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICJzZXRf
Z2xvYmFsICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0p
LAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICBsb2Fkb3AobWF0Y2hbMF0pLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICBtYXRj
aCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBzdG9yZW9wKG1hdGNoWzBdKSwKKyAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDE1IDogCisgICAgICAgICAgdmFyIGxpdCA9IG1hdGNoWzBdOworICAgICAgICAgIG1hdGNo
JDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIGNvbnN0b3AobGl0KSArICgiICIgKyBWYWx1
ZXMuc3RyaW5nX29mX3ZhbHVlKGxpdFsvKiBpdCAqLzFdKSksCisgICAgICAgICAgICAvKiBbXSAq
LzAKKyAgICAgICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxNiA6IAorICAg
ICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKHRlc3Rv
cCQyLCBtYXRjaFswXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxNyA6IAorICAgICAgICAgIG1hdGNoJDEgPSAvKiB0
dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKHJlbG9wJDIsIG1hdGNoWzBdKSwKKyAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDE4IDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWworICAgICAgICAgICAg
Q3VycnkuXzEodW5vcCQyLCBtYXRjaFswXSksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICBdOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxOSA6IAorICAgICAgICAgIG1h
dGNoJDEgPSAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIEN1cnJ5Ll8xKGJpbm9wJDIsIG1hdGNo
WzBdKSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDIwIDogCisgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWwor
ICAgICAgICAgICAgQ3VycnkuXzEoY3Z0b3AkMiwgbWF0Y2hbMF0pLAorICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgXTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAg
fQorICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgIG1hdGNoJDFb
MF0sCisgICAgICAgICAgICBtYXRjaCQxWzFdCisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9u
IGZ1bmNfd2l0aF9uYW1lKG5hbWUsIGYpIHsKKyAgdmFyIG1hdGNoID0gZlsvKiBpdCAqLzFdOwor
ICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICJmdW5jIiArIG5h
bWUsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdCgvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgInR5cGUg
IiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbLyogZnR5cGUgKi8wXVsvKiBpdCAq
LzFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAg
ICAgXSksCisgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICBdLCBQ
ZXJ2YXNpdmVzLiRhdChkZWNscygibG9jYWwiLCBtYXRjaFsvKiBsb2NhbHMgKi8xXSksIExpc3Qu
bWFwKGluc3RyLCBtYXRjaFsvKiBib2R5ICovMl0pKSkKKyAgICAgICAgICBdKTsKK30KKworZnVu
Y3Rpb24gZnVuYyhmKSB7CisgIHJldHVybiBmdW5jX3dpdGhfbmFtZSgiIiwgZik7Cit9CisKK2Z1
bmN0aW9uIHN0YXJ0KHgpIHsKKyAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAg
ICAgICAgICAic3RhcnQgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgeFsvKiBpdCAqLzFd
KSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiB0
YWJsZShvZmYsIGksIHRhYikgeworICB2YXIgbWF0Y2ggPSB0YWJbLyogaXQgKi8xXTsKKyAgdmFy
IG1hdGNoJDEgPSBtYXRjaFsvKiB0dHlwZSAqLzBdOworICByZXR1cm4gLyogTm9kZSAqL0Jsb2Nr
Ll9fKDEsIFsKKyAgICAgICAgICAgICJ0YWJsZSAkIiArIChDdXJyeS5fMShJMzIudG9fc3RyaW5n
X3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgb2ZmICsgaSB8IDApKSArICgiICIgKyBsaW1pdHMo
STMyLnRvX3N0cmluZ191LCBtYXRjaCQxWzBdKSkpLAorICAgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbVHlwZXMuc3RyaW5nX29mX2VsZW1f
dHlwZShtYXRjaCQxWzFdKV0pLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
IF0KKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gbWVtb3J5KG9mZiwgaSwgbWVtKSB7Cisg
IHZhciBtYXRjaCA9IG1lbVsvKiBpdCAqLzFdOworICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9f
KDEsIFsKKyAgICAgICAgICAgICJtZW1vcnkgJCIgKyAoQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191
LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIG9mZiArIGkgfCAwKSkgKyAoIiAiICsgbGltaXRzKEkz
Mi50b19zdHJpbmdfdSwgbWF0Y2hbLyogbXR5cGUgKi8wXVswXSkpKSwKKyAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBzZWdtZW50KGhlYWQsIGRhdCwg
c2VnKSB7CisgIHZhciBtYXRjaCA9IHNlZ1svKiBpdCAqLzFdOworICByZXR1cm4gLyogTm9kZSAq
L0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgIGhlYWQsCisgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtDdXJyeS5fMShJMzIudG9fc3Ry
aW5nX3UsIG1hdGNoWy8qIGluZGV4ICovMF1bLyogaXQgKi8xXSldKSwKKyAgICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgICAgLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgIm9mZnNldCIsCisgICAgICAgICAgICAgICAgICAgIExpc3QubWFwKGlu
c3RyLCBtYXRjaFsvKiBvZmZzZXQgKi8xXVsvKiBpdCAqLzFdKQorICAgICAgICAgICAgICAgICAg
XSksCisgICAgICAgICAgICAgICAgQ3VycnkuXzEoZGF0LCBtYXRjaFsvKiBpbml0ICovMl0pCisg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0KKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rp
b24gZWxlbXMoc2VnKSB7CisgIHJldHVybiBzZWdtZW50KCJlbGVtIiwgZnVuY3Rpb24gKHBhcmFt
KSB7CisgICAgICAgICAgICAgIHJldHVybiBMaXN0Lm1hcChmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEF0b20gKi9CbG9jay5fXygwLCBbQ3Vy
cnkuXzEoSTMyLnRvX3N0cmluZ191LCBwYXJhbVsvKiBpdCAqLzFdKV0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgc2VnKTsKK30KKworZnVuY3Rp
b24gZGF0YShzZWcpIHsKKyAgcmV0dXJuIHNlZ21lbnQoImRhdGEiLCBicmVha19ieXRlcywgc2Vn
KTsKK30KKworZnVuY3Rpb24gdHlwZWRlZihpLCB0KSB7CisgIHJldHVybiAvKiBOb2RlICovQmxv
Y2suX18oMSwgWworICAgICAgICAgICAgInR5cGUgJCIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5n
X3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgaSkpLAorICAgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAgIGZ1bmNfdHlwZSh0KSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgICBdCisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGltcG9ydF9raW5kKGksIGsp
IHsKKyAgdmFyIG1hdGNoID0ga1svKiBpdCAqLzFdOworICBzd2l0Y2ggKG1hdGNoLnRhZyB8IDAp
IHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBb
CisgICAgICAgICAgICAgICAgICAiZnVuYyAkIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwg
Q3VycnkuXzEoSTMyLm9mX2ludF91LCBpKSksCisgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJ0eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW0N1cnJ5Ll8x
KEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSldKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF0pOworICAgIGNhc2UgMSA6IAorICAgICAg
ICByZXR1cm4gdGFibGUoMCwgaSwgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bLyogdHR5cGUg
Ki9tYXRjaFswXV0sIGtbLyogYXQgKi8wXSkpOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1
cm4gbWVtb3J5KDAsIGksIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWy8qIG10eXBlICovbWF0
Y2hbMF1dLCBrWy8qIGF0ICovMF0pKTsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAgcmV0dXJuIC8q
IE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAiZ2xvYmFsICQiICsgQ3Vy
cnkuXzEoSTMyLnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIGkpKSwKKyAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICBnbG9iYWxfdHlwZSht
YXRjaFswXSksCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgIF0pOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uICQkaW1w
b3J0KGksIGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV07CisgIHJldHVybiAvKiBO
b2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgImltcG9ydCIsCisgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0
aChhZGRfY2hhciwgbWF0Y2hbLyogbW9kdWxlX25hbWUgKi8wXSldKSwKKyAgICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdf
d2l0aChhZGRfY2hhciwgbWF0Y2hbLyogaXRlbV9uYW1lICovMV0pXSksCisgICAgICAgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBpbXBvcnRfa2luZChpLCBtYXRjaFsvKiBp
a2luZCAqLzJdKSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXQorICAgICAgICAgIF0pOworfQorCitm
dW5jdGlvbiBleHBvcnRfa2luZChrKSB7CisgIHZhciBtYXRjaCA9IGtbLyogaXQgKi8xXTsKKyAg
c3dpdGNoIChtYXRjaCkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gImZ1bmMiOwor
ICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gInRhYmxlIjsKKyAgICBjYXNlIDIgOiAKKyAg
ICAgICAgcmV0dXJuICJtZW1vcnkiOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gImds
b2JhbCI7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gJCRleHBvcnQoZXgpIHsKKyAgdmFyIG1h
dGNoID0gZXhbLyogaXQgKi8xXTsKKyAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisg
ICAgICAgICAgICAiZXhwb3J0IiwKKyAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFkZF9jaGFyLCBtYXRjaFsvKiBu
YW1lICovMF0pXSksCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIC8q
IE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgIGV4cG9ydF9raW5kKG1h
dGNoWy8qIGVraW5kICovMV0pLAorICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW0N1cnJ5Ll8xKEkzMi50b19z
dHJpbmdfdSwgbWF0Y2hbLyogaXRlbSAqLzJdWy8qIGl0ICovMV0pXSksCisgICAgICAgICAgICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICAgIF0pLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICBdCisgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIHZhcl9vcHQocGFyYW0pIHsK
KyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuICIgIiArIHBhcmFtWzBdWy8qIGl0ICovMV07Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuICIiOworICB9Cit9CisKK2Z1bmN0aW9uIGlzX2Z1bmNf
aW1wb3J0KGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV1bLyogaWtpbmQgKi8yXVsv
KiBpdCAqLzFdOworICBpZiAobWF0Y2gudGFnKSB7CisgICAgcmV0dXJuIC8qIGZhbHNlICovMDsK
KyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgIH0KK30KKworZnVuY3Rp
b24gaXNfdGFibGVfaW1wb3J0KGltKSB7CisgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV1bLyog
aWtpbmQgKi8yXVsvKiBpdCAqLzFdOworICBpZiAobWF0Y2gudGFnID09PSAxKSB7CisgICAgcmV0
dXJuIC8qIHRydWUgKi8xOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7
CisgIH0KK30KKworZnVuY3Rpb24gaXNfbWVtb3J5X2ltcG9ydChpbSkgeworICB2YXIgbWF0Y2gg
PSBpbVsvKiBpdCAqLzFdWy8qIGlraW5kICovMl1bLyogaXQgKi8xXTsKKyAgaWYgKG1hdGNoLnRh
ZyA9PT0gMikgeworICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgfQorICBlbHNlIHsKKyAgICBy
ZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGlzX2dsb2JhbF9pbXBvcnQo
aW0pIHsKKyAgdmFyIG1hdGNoID0gaW1bLyogaXQgKi8xXVsvKiBpa2luZCAqLzJdWy8qIGl0ICov
MV07CisgIGlmIChtYXRjaC50YWcgPT09IDMpIHsKKyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgfQorfQorCitmdW5jdGlv
biBtb2R1bGVfd2l0aF92YXJfb3B0KHhfb3B0LCBtKSB7CisgIHZhciBmdW5jX2ltcG9ydHMgPSBM
aXN0LmZpbHRlcihpc19mdW5jX2ltcG9ydCkobVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84XSk7
CisgIHZhciB0YWJsZV9pbXBvcnRzID0gTGlzdC5maWx0ZXIoaXNfdGFibGVfaW1wb3J0KShtWy8q
IGl0ICovMV1bLyogaW1wb3J0cyAqLzhdKTsKKyAgdmFyIG1lbW9yeV9pbXBvcnRzID0gTGlzdC5m
aWx0ZXIoaXNfbWVtb3J5X2ltcG9ydCkobVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84XSk7Cisg
IHZhciBnbG9iYWxfaW1wb3J0cyA9IExpc3QuZmlsdGVyKGlzX2dsb2JhbF9pbXBvcnQpKG1bLyog
aXQgKi8xXVsvKiBpbXBvcnRzICovOF0pOworICB2YXIgcGFydGlhbF9hcmcgPSBMaXN0Lmxlbmd0
aCh0YWJsZV9pbXBvcnRzKTsKKyAgdmFyIGYgPSBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEpIHsK
KyAgICByZXR1cm4gdGFibGUocGFydGlhbF9hcmcsIHBhcmFtLCBwYXJhbSQxKTsKKyAgfTsKKyAg
dmFyIHBhcnRpYWxfYXJnJDEgPSBMaXN0Lmxlbmd0aChtZW1vcnlfaW1wb3J0cyk7CisgIHZhciBm
JDEgPSBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEpIHsKKyAgICByZXR1cm4gbWVtb3J5KHBhcnRp
YWxfYXJnJDEsIHBhcmFtLCBwYXJhbSQxKTsKKyAgfTsKKyAgdmFyIHBhcnRpYWxfYXJnJDIgPSBM
aXN0Lmxlbmd0aChnbG9iYWxfaW1wb3J0cyk7CisgIHZhciBmJDIgPSBmdW5jdGlvbiAocGFyYW0s
IHBhcmFtJDEpIHsKKyAgICB2YXIgb2ZmID0gcGFydGlhbF9hcmckMjsKKyAgICB2YXIgaSA9IHBh
cmFtOworICAgIHZhciBnID0gcGFyYW0kMTsKKyAgICB2YXIgbWF0Y2ggPSBnWy8qIGl0ICovMV07
CisgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICJnbG9i
YWwgJCIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwg
b2ZmICsgaSB8IDApKSwKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
Z2xvYmFsX3R5cGUobWF0Y2hbLyogZ3R5cGUgKi8wXSksCisgICAgICAgICAgICAgICAgTGlzdC5t
YXAoaW5zdHIsIG1hdGNoWy8qIHZhbHVlICovMV1bLyogaXQgKi8xXSkKKyAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgXSk7CisgIH07CisgIHZhciBwYXJ0aWFsX2FyZyQzID0gTGlzdC5sZW5n
dGgoZnVuY19pbXBvcnRzKTsKKyAgdmFyIGYkMyA9IGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSkg
eworICAgIHZhciBvZmYgPSBwYXJ0aWFsX2FyZyQzOworICAgIHZhciBpID0gcGFyYW07CisgICAg
dmFyIGYkNCA9IHBhcmFtJDE7CisgICAgcmV0dXJuIGZ1bmNfd2l0aF9uYW1lKCIgJCIgKyBDdXJy
eS5fMShJMzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgb2ZmICsgaSB8IDAp
KSwgZiQ0KTsKKyAgfTsKKyAgdmFyIHhzID0gbGlzdF9vZl9vcHQobVsvKiBpdCAqLzFdWy8qIHN0
YXJ0ICovNV0pOworICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAg
ICJtb2R1bGUiICsgdmFyX29wdCh4X29wdCksCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChM
aXN0Lm1hcGkodHlwZWRlZiwgbVsvKiBpdCAqLzFdWy8qIHR5cGVzICovMF0pLCBQZXJ2YXNpdmVz
LiRhdChMaXN0Lm1hcGkoJCRpbXBvcnQsIHRhYmxlX2ltcG9ydHMpLCBQZXJ2YXNpdmVzLiRhdChM
aXN0Lm1hcGkoJCRpbXBvcnQsIG1lbW9yeV9pbXBvcnRzKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5t
YXBpKCQkaW1wb3J0LCBnbG9iYWxfaW1wb3J0cyksIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFwaSgk
JGltcG9ydCwgZnVuY19pbXBvcnRzKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5tYXBpKGYsIG1bLyog
aXQgKi8xXVsvKiB0YWJsZXMgKi8yXSksIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFwaShmJDEsIG1b
LyogaXQgKi8xXVsvKiBtZW1vcmllcyAqLzNdKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5tYXBpKGYk
MiwgbVsvKiBpdCAqLzFdWy8qIGdsb2JhbHMgKi8xXSksIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFw
aShmJDMsIG1bLyogaXQgKi8xXVsvKiBmdW5jcyAqLzRdKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5t
YXAoJCRleHBvcnQsIG1bLyogaXQgKi8xXVsvKiBleHBvcnRzICovOV0pLCBQZXJ2YXNpdmVzLiRh
dChMaXN0Lm1hcChzdGFydCwgeHMpLCBQZXJ2YXNpdmVzLiRhdChMaXN0Lm1hcChlbGVtcywgbVsv
KiBpdCAqLzFdWy8qIGVsZW1zICovNl0pLCBMaXN0Lm1hcChkYXRhLCBtWy8qIGl0ICovMV1bLyog
ZGF0YSAqLzddKSkpKSkpKSkpKSkpKQorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBtb2R1
bGVfKHBhcmFtKSB7CisgIHJldHVybiBtb2R1bGVfd2l0aF92YXJfb3B0KC8qIE5vbmUgKi8wLCBw
YXJhbSk7Cit9CisKK2Z1bmN0aW9uIGxpdGVyYWwobGl0KSB7CisgIHZhciBtYXRjaCA9IGxpdFsv
KiBpdCAqLzFdOworICBzd2l0Y2ggKG1hdGNoLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAg
ICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAi
aTMyLmNvbnN0ICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3MsIG1hdGNoWzBdKSwKKyAgICAg
ICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgIF0pOworICAgIGNhc2UgMSA6
IAorICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAg
ICAgICJpNjQuY29uc3QgIiArIEN1cnJ5Ll8xKEk2NC50b19zdHJpbmdfcywgbWF0Y2hbMF0pLAor
ICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSk7CisgICAgY2Fz
ZSAyIDogCisgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAg
ICAgICAgICAgImYzMi5jb25zdCAiICsgQ3VycnkuXzEoRjMyLnRvX3N0cmluZywgbWF0Y2hbMF0p
LAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSk7CisgICAg
Y2FzZSAzIDogCisgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAg
ICAgICAgICAgICAgImY2NC5jb25zdCAiICsgQ3VycnkuXzEoRjY0LnRvX3N0cmluZywgbWF0Y2hb
MF0pLAorICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSk7Cisg
ICAgCisgIH0KK30KKworZnVuY3Rpb24gZGVmaW5pdGlvbihtb2RlLCB4X29wdCwgZGVmKSB7Cisg
IHZhciBtYXRjaCA9IGRlZlsvKiBpdCAqLzFdOworICB2YXIgZXhpdCA9IDA7CisgIGV4aXQgPSBt
b2RlICE9PSA1NjQxNDYyMDkgJiYgIShtb2RlID49IDk4MzE2NzA4OSAmJiBtYXRjaC50YWcpID8g
MSA6IDI7CisgIHN3aXRjaCAoZXhpdCkgeworICAgIGNhc2UgMSA6IAorICAgICAgICB2YXIgbWF0
Y2gkMSA9IGRlZlsvKiBpdCAqLzFdOworICAgICAgICB2YXIgbTsKKyAgICAgICAgbSA9IG1hdGNo
JDEudGFnID8gRGVjb2RlLmRlY29kZSgiIiwgbWF0Y2gkMVsxXSkgOiBtYXRjaCQxWzBdOworICAg
ICAgICByZXR1cm4gbW9kdWxlX3dpdGhfdmFyX29wdCh4X29wdCwgbSk7CisgICAgY2FzZSAyIDog
CisgICAgICAgIHZhciBtYXRjaCQyID0gZGVmWy8qIGl0ICovMV07CisgICAgICAgIHZhciBiczsK
KyAgICAgICAgYnMgPSBtYXRjaCQyLnRhZyA/IG1hdGNoJDJbMV0gOiBFbmNvZGUuZW5jb2RlKG1h
dGNoJDJbMF0pOworICAgICAgICB2YXIgeF9vcHQkMSA9IHhfb3B0OworICAgICAgICB2YXIgYnMk
MSA9IGJzOworICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAg
ICAgICAgICAgICJtb2R1bGUiICsgdmFyX29wdCh4X29wdCQxKSwKKyAgICAgICAgICAgICAgICAg
IGJyZWFrX2J5dGVzKGJzJDEpCisgICAgICAgICAgICAgICAgXSk7CisgICAgCisgIH0KK30KKwor
ZnVuY3Rpb24gYWNjZXNzKHhfb3B0LCBuYW1lKSB7CisgIHJldHVybiAkJFN0cmluZy5jb25jYXQo
IiAiLCAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgdmFyX29wdCh4X29wdCksCisgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIHN0cmluZ193aXRoKGFkZF9jaGFyLCBuYW1l
KSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgXSk7Cit9CisKK2Z1bmN0aW9uIGFjdGlvbihhY3QpIHsKKyAgdmFyIG1hdGNoID0gYWN0Wy8q
IGl0ICovMV07CisgIGlmIChtYXRjaC50YWcpIHsKKyAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2Nr
Ll9fKDEsIFsKKyAgICAgICAgICAgICAgImdldCIgKyBhY2Nlc3MobWF0Y2hbMF0sIG1hdGNoWzFd
KSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdKTsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgImlu
dm9rZSIgKyBhY2Nlc3MobWF0Y2hbMF0sIG1hdGNoWzFdKSwKKyAgICAgICAgICAgICAgTGlzdC5t
YXAobGl0ZXJhbCwgbWF0Y2hbMl0pCisgICAgICAgICAgICBdKTsKKyAgfQorfQorCitmdW5jdGlv
biBzY3JpcHQobW9kZSwgc2NyKSB7CisgIHJldHVybiBMaXN0Lm1hcChmdW5jdGlvbiAocGFyYW0p
IHsKKyAgICAgICAgICAgICAgdmFyIG1vZGUkMSA9IG1vZGU7CisgICAgICAgICAgICAgIHZhciBj
bWQgPSBwYXJhbTsKKyAgICAgICAgICAgICAgdmFyIG1hdGNoID0gY21kWy8qIGl0ICovMV07Cisg
ICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gudGFnIHwgMCkgeworICAgICAgICAgICAgICAgIGNh
c2UgMCA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5pdGlvbihtb2RlJDEsIG1h
dGNoWzBdLCBtYXRjaFsxXSk7CisgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInJlZ2lzdGVyICIgKyAoc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNo
WzBdKSArIHZhcl9vcHQobWF0Y2hbMV0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0aW9uKG1hdGNoWzBd
KTsKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1v
ZGUkMiA9IG1vZGUkMTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGFzcyA9IG1hdGNoWzBdOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IGFzc1svKiBpdCAqLzFdOworICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDEudGFnIHwgMCkgeworICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9k
ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJh
c3NlcnRfbWFsZm9ybWVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9u
KC8qIE9yaWdpbmFsICovOTgzMTY3MDg5LCAvKiBOb25lICovMCwgbWF0Y2gkMVswXSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5n
X3dpdGgoYWRkX2NoYXIsIG1hdGNoJDFbMV0pXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5f
XygxLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X2ludmFs
aWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24obW9kZSQyLCAvKiBO
b25lICovMCwgbWF0Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoJDFbMV0pXSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsK
KyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiYXNzZXJ0X3NvZnRfaW52YWxpZCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmaW5pdGlvbihtb2RlJDIsIC8qIE5vbmUgKi8wLCBtYXRjaCQxWzBdKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJp
bmdfd2l0aChhZGRfY2hhciwgbWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2Nr
Ll9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdW5s
aW5rYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbihtb2RlJDIs
IC8qIE5vbmUgKi8wLCBtYXRjaCQxWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0aChhZGRfY2hhciwgbWF0Y2gkMVsx
XSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdHJhcCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmaW5pdGlvbihtb2RlJDIsIC8qIE5vbmUgKi8wLCBtYXRjaCQxWzBdKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdf
d2l0aChhZGRfY2hhciwgbWF0Y2gkMVsxXSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
NSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9f
KDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfcmV0dXJu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24obWF0Y2gkMVswXSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwKGxpdGVyYWwsIG1hdGNo
JDFbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2
IDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18o
MSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF9yZXR1cm5f
bmFuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24obWF0Y2gkMVswXSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdHJhcCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uKG1hdGNoJDFbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFkZF9jaGFyLCBtYXRj
aCQxWzFdKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtd
ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF9leGhhdXN0aW9uIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb24obWF0Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIs
IG1hdGNoJDFbMV0pXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVj
L2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvYXJyYW5nZS5tbCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIHNjcik7Cit9CisK
K2V4cG9ydHMuaW5zdHIgICA9IGluc3RyOworZXhwb3J0cy5mdW5jICAgID0gZnVuYzsKK2V4cG9y
dHMubW9kdWxlXyA9IG1vZHVsZV87CitleHBvcnRzLnNjcmlwdCAgPSBzY3JpcHQ7CisvKiBGMzIg
Tm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBhcnJhbmdlLmpzIC8vLy8vLy8v
CivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2FycmF5J10g
PSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBv
ZiBhcnJheS5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9hcnJheSAgICAgICAgICAg
ICAgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgICAgICAg
ICA9IHJlcXVpcmUoIi4vY2FtbF9leGNlcHRpb25zIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9u
IGluaXQobCwgZikgeworICBpZiAobCkgeworICAgIGlmIChsIDwgMCkgeworICAgICAgdGhyb3cg
WworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwK
KyAgICAgICAgICAgICJBcnJheS5pbml0IgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdmFyIHJlcyA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QobCwgQ3VycnkuXzEo
ZiwgMCkpOworICAgICAgZm9yKHZhciBpID0gMSAsaV9maW5pc2ggPSBsIC0gMSB8IDA7IGkgPD0g
aV9maW5pc2g7ICsraSl7CisgICAgICAgIHJlc1tpXSA9IEN1cnJ5Ll8xKGYsIGkpOworICAgICAg
fQorICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8q
IGFycmF5ICovW107CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9tYXRyaXgoc3gsIHN5LCBpbml0
KSB7CisgIHZhciByZXMgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KHN4LCAvKiBhcnJheSAq
L1tdKTsKKyAgZm9yKHZhciB4ID0gMCAseF9maW5pc2ggPSBzeCAtIDEgfCAwOyB4IDw9IHhfZmlu
aXNoOyArK3gpeworICAgIHJlc1t4XSA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3Qoc3ksIGlu
aXQpOworICB9CisgIHJldHVybiByZXM7Cit9CisKK2Z1bmN0aW9uIGNvcHkoYSkgeworICB2YXIg
bCA9IGEubGVuZ3RoOworICBpZiAobCkgeworICAgIHJldHVybiBDYW1sX2FycmF5LmNhbWxfYXJy
YXlfc3ViKGEsIDAsIGwpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBhcnJheSAqL1td
OworICB9Cit9CisKK2Z1bmN0aW9uIGFwcGVuZChhMSwgYTIpIHsKKyAgdmFyIGwxID0gYTEubGVu
Z3RoOworICBpZiAobDEpIHsKKyAgICBpZiAoYTIubGVuZ3RoKSB7CisgICAgICByZXR1cm4gYTEu
Y29uY2F0KGEyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gQ2FtbF9hcnJheS5j
YW1sX2FycmF5X3N1YihhMSwgMCwgbDEpOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gY29weShhMik7CisgIH0KK30KKworZnVuY3Rpb24gc3ViKGEsIG9mcywgbGVuKSB7CisgIGlm
IChsZW4gPCAwIHx8IG9mcyA+IChhLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWwor
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgIkFycmF5LnN1YiIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
Q2FtbF9hcnJheS5jYW1sX2FycmF5X3N1YihhLCBvZnMsIGxlbik7CisgIH0KK30KKworZnVuY3Rp
b24gZmlsbChhLCBvZnMsIGxlbiwgdikgeworICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9m
cyA+IChhLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkFycmF5LmZp
bGwiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgZm9yKHZhciBpID0gb2ZzICxpX2Zp
bmlzaCA9IChvZnMgKyBsZW4gfCAwKSAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAg
ICAgYVtpXSA9IHY7CisgICAgfQorICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKworZnVu
Y3Rpb24gYmxpdChhMSwgb2ZzMSwgYTIsIG9mczIsIGxlbikgeworICBpZiAobGVuIDwgMCB8fCBv
ZnMxIDwgMCB8fCBvZnMxID4gKGExLmxlbmd0aCAtIGxlbiB8IDApIHx8IG9mczIgPCAwIHx8IG9m
czIgPiAoYTIubGVuZ3RoIC0gbGVuIHwgMCkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQXJyYXku
YmxpdCIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2FtbF9hcnJheS5j
YW1sX2FycmF5X2JsaXQoYTEsIG9mczEsIGEyLCBvZnMyLCBsZW4pOworICB9Cit9CisKK2Z1bmN0
aW9uIGl0ZXIoZiwgYSkgeworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGEubGVuZ3RoIC0g
MSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgQ3VycnkuXzEoZiwgYVtpXSk7CisgIH0K
KyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gbWFwKGYsIGEpIHsKKyAgdmFyIGwg
PSBhLmxlbmd0aDsKKyAgaWYgKGwpIHsKKyAgICB2YXIgciA9IENhbWxfYXJyYXkuY2FtbF9tYWtl
X3ZlY3QobCwgQ3VycnkuXzEoZiwgYVswXSkpOworICAgIGZvcih2YXIgaSA9IDEgLGlfZmluaXNo
ID0gbCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgICAgcltpXSA9IEN1cnJ5Ll8x
KGYsIGFbaV0pOworICAgIH0KKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gLyogYXJyYXkgKi9bXTsKKyAgfQorfQorCitmdW5jdGlvbiBpdGVyaShmLCBhKSB7CisgIGZv
cih2YXIgaSA9IDAgLGlfZmluaXNoID0gYS5sZW5ndGggLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsg
KytpKXsKKyAgICBDdXJyeS5fMihmLCBpLCBhW2ldKTsKKyAgfQorICByZXR1cm4gLyogKCkgKi8w
OworfQorCitmdW5jdGlvbiBtYXBpKGYsIGEpIHsKKyAgdmFyIGwgPSBhLmxlbmd0aDsKKyAgaWYg
KGwpIHsKKyAgICB2YXIgciA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QobCwgQ3VycnkuXzIo
ZiwgMCwgYVswXSkpOworICAgIGZvcih2YXIgaSA9IDEgLGlfZmluaXNoID0gbCAtIDEgfCAwOyBp
IDw9IGlfZmluaXNoOyArK2kpeworICAgICAgcltpXSA9IEN1cnJ5Ll8yKGYsIGksIGFbaV0pOwor
ICAgIH0KKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogYXJyYXkg
Ki9bXTsKKyAgfQorfQorCitmdW5jdGlvbiB0b19saXN0KGEpIHsKKyAgdmFyIF9pID0gYS5sZW5n
dGggLSAxIHwgMDsKKyAgdmFyIF9yZXMgPSAvKiBbXSAqLzA7CisgIHdoaWxlKHRydWUpIHsKKyAg
ICB2YXIgcmVzID0gX3JlczsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChpIDwgMCkgeworICAg
ICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBfcmVzID0gLyogOjogKi9b
CisgICAgICAgIGFbaV0sCisgICAgICAgIHJlcworICAgICAgXTsKKyAgICAgIF9pID0gaSAtIDEg
fCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICB9OworfQorCitmdW5jdGlv
biBsaXN0X2xlbmd0aChfYWNjdSwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIg
cGFyYW0gPSBfcGFyYW07CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAocGFyYW0pIHsK
KyAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgX2FjY3UgPSBhY2N1ICsgMSB8IDA7Cisg
ICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
YWNjdTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG9mX2xpc3QobCkgeworICBpZiAobCkg
eworICAgIHZhciBhID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChsaXN0X2xlbmd0aCgwLCBs
KSwgbFswXSk7CisgICAgdmFyIF9pID0gMTsKKyAgICB2YXIgX3BhcmFtID0gbFsxXTsKKyAgICB3
aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICB2YXIgaSA9IF9p
OworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIGFbaV0gPSBwYXJhbVswXTsKKyAgICAgICAg
X3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICBjb250
aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBh
OworICAgICAgfQorICAgIH07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIGFycmF5ICov
W107CisgIH0KK30KKworZnVuY3Rpb24gZm9sZF9sZWZ0KGYsIHgsIGEpIHsKKyAgdmFyIHIgPSB4
OworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGEubGVuZ3RoIC0gMSB8IDA7IGkgPD0gaV9m
aW5pc2g7ICsraSl7CisgICAgciA9IEN1cnJ5Ll8yKGYsIHIsIGFbaV0pOworICB9CisgIHJldHVy
biByOworfQorCitmdW5jdGlvbiBmb2xkX3JpZ2h0KGYsIGEsIHgpIHsKKyAgdmFyIHIgPSB4Owor
ICBmb3IodmFyIGkgPSBhLmxlbmd0aCAtIDEgfCAwOyBpID49IDA7IC0taSl7CisgICAgciA9IEN1
cnJ5Ll8yKGYsIGFbaV0sIHIpOworICB9CisgIHJldHVybiByOworfQorCit2YXIgQm90dG9tID0g
Q2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiQXJyYXkuQm90dG9tIik7CisKK2Z1bmN0aW9uIHNvcnQo
Y21wLCBhKSB7CisgIHZhciBtYXhzb24gPSBmdW5jdGlvbiAobCwgaSkgeworICAgIHZhciBpMzEg
PSAoKGkgKyBpIHwgMCkgKyBpIHwgMCkgKyAxIHwgMDsKKyAgICB2YXIgeCA9IGkzMTsKKyAgICBp
ZiAoKGkzMSArIDIgfCAwKSA8IGwpIHsKKyAgICAgIGlmIChDdXJyeS5fMihjbXAsIGFbaTMxXSwg
YVtpMzEgKyAxIHwgMF0pIDwgMCkgeworICAgICAgICB4ID0gaTMxICsgMSB8IDA7CisgICAgICB9
CisgICAgICBpZiAoQ3VycnkuXzIoY21wLCBhW3hdLCBhW2kzMSArIDIgfCAwXSkgPCAwKSB7Cisg
ICAgICAgIHggPSBpMzEgKyAyIHwgMDsKKyAgICAgIH0KKyAgICAgIHJldHVybiB4OworICAgIH0K
KyAgICBlbHNlIGlmICgoaTMxICsgMSB8IDApIDwgbCAmJiBDdXJyeS5fMihjbXAsIGFbaTMxXSwg
YVtpMzEgKyAxIHwgMF0pIDwgMCkgeworICAgICAgcmV0dXJuIGkzMSArIDEgfCAwOworICAgIH0K
KyAgICBlbHNlIGlmIChpMzEgPCBsKSB7CisgICAgICByZXR1cm4gaTMxOworICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIEJvdHRvbSwKKyAgICAgICAgICAgIGkK
KyAgICAgICAgICBdOworICAgIH0KKyAgfTsKKyAgdmFyIHRyaWNrbGUgPSBmdW5jdGlvbiAobCwg
aSwgZSkgeworICAgIHRyeSB7CisgICAgICB2YXIgbCQxID0gbDsKKyAgICAgIHZhciBfaSA9IGk7
CisgICAgICB2YXIgZSQxID0gZTsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFyIGkk
MSA9IF9pOworICAgICAgICB2YXIgaiA9IG1heHNvbihsJDEsIGkkMSk7CisgICAgICAgIGlmIChD
dXJyeS5fMihjbXAsIGFbal0sIGUkMSkgPiAwKSB7CisgICAgICAgICAgYVtpJDFdID0gYVtqXTsK
KyAgICAgICAgICBfaSA9IGo7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGFbaSQxXSA9IGUkMTsKKyAgICAgICAg
ICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAgICBjYXRj
aCAoZXhuKXsKKyAgICAgIGlmIChleG5bMF0gPT09IEJvdHRvbSkgeworICAgICAgICBhW2V4blsx
XV0gPSBlOworICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07CisgIHZhciBidWJibGUg
PSBmdW5jdGlvbiAobCwgaSkgeworICAgIHRyeSB7CisgICAgICB2YXIgbCQxID0gbDsKKyAgICAg
IHZhciBfaSA9IGk7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHZhciBpJDEgPSBfaTsK
KyAgICAgICAgdmFyIGogPSBtYXhzb24obCQxLCBpJDEpOworICAgICAgICBhW2kkMV0gPSBhW2pd
OworICAgICAgICBfaSA9IGo7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9
OworICAgIH0KKyAgICBjYXRjaCAoZXhuKXsKKyAgICAgIGlmIChleG5bMF0gPT09IEJvdHRvbSkg
eworICAgICAgICByZXR1cm4gZXhuWzFdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07CisgIHZhciB0cmlja2xldXAgPSBmdW5j
dGlvbiAoX2ksIGUpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgaSA9IF9pOworICAg
ICAgdmFyIGZhdGhlciA9IChpIC0gMSB8IDApIC8gMyB8IDA7CisgICAgICBpZiAoaSA9PT0gZmF0
aGVyKSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAi
YXJyYXkubWwiLAorICAgICAgICAgICAgICAgIDE2OCwKKyAgICAgICAgICAgICAgICA0CisgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBpZiAoQ3VycnkuXzIo
Y21wLCBhW2ZhdGhlcl0sIGUpIDwgMCkgeworICAgICAgICBhW2ldID0gYVtmYXRoZXJdOworICAg
ICAgICBpZiAoZmF0aGVyID4gMCkgeworICAgICAgICAgIF9pID0gZmF0aGVyOworICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICBhWzBdID0gZTsKKyAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9Cisg
ICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgYVtpXSA9IGU7CisgICAgICAgIHJldHVybiAv
KiAoKSAqLzA7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIGwgPSBhLmxlbmd0aDsKKyAg
Zm9yKHZhciBpID0gKChsICsgMSB8IDApIC8gMyB8IDApIC0gMSB8IDA7IGkgPj0gMDsgLS1pKXsK
KyAgICB0cmlja2xlKGwsIGksIGFbaV0pOworICB9CisgIGZvcih2YXIgaSQxID0gbCAtIDEgfCAw
OyBpJDEgPj0gMjsgLS1pJDEpeworICAgIHZhciBlID0gYVtpJDFdOworICAgIGFbaSQxXSA9IGFb
MF07CisgICAgdHJpY2tsZXVwKGJ1YmJsZShpJDEsIDApLCBlKTsKKyAgfQorICBpZiAobCA+IDEp
IHsKKyAgICB2YXIgZSQxID0gYVsxXTsKKyAgICBhWzFdID0gYVswXTsKKyAgICBhWzBdID0gZSQx
OworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7Cisg
IH0KK30KKworZnVuY3Rpb24gc3RhYmxlX3NvcnQoY21wLCBhKSB7CisgIHZhciBtZXJnZSA9IGZ1
bmN0aW9uIChzcmMxb2ZzLCBzcmMxbGVuLCBzcmMyLCBzcmMyb2ZzLCBzcmMybGVuLCBkc3QsIGRz
dG9mcykgeworICAgIHZhciBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIHwgMDsKKyAgICB2YXIg
c3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiB8IDA7CisgICAgdmFyIF9pMSA9IHNyYzFvZnM7Cisg
ICAgdmFyIF9zMSA9IGFbc3JjMW9mc107CisgICAgdmFyIF9pMiA9IHNyYzJvZnM7CisgICAgdmFy
IF9zMiA9IHNyYzJbc3JjMm9mc107CisgICAgdmFyIF9kID0gZHN0b2ZzOworICAgIHdoaWxlKHRy
dWUpIHsKKyAgICAgIHZhciBkID0gX2Q7CisgICAgICB2YXIgczIgPSBfczI7CisgICAgICB2YXIg
aTIgPSBfaTI7CisgICAgICB2YXIgczEgPSBfczE7CisgICAgICB2YXIgaTEgPSBfaTE7CisgICAg
ICBpZiAoQ3VycnkuXzIoY21wLCBzMSwgczIpIDw9IDApIHsKKyAgICAgICAgZHN0W2RdID0gczE7
CisgICAgICAgIHZhciBpMSQxID0gaTEgKyAxIHwgMDsKKyAgICAgICAgaWYgKGkxJDEgPCBzcmMx
cikgeworICAgICAgICAgIF9kID0gZCArIDEgfCAwOworICAgICAgICAgIF9zMSA9IGFbaTEkMV07
CisgICAgICAgICAgX2kxID0gaTEkMTsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGJsaXQoc3JjMiwg
aTIsIGRzdCwgZCArIDEgfCAwLCBzcmMyciAtIGkyIHwgMCk7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIGVsc2UgeworICAgICAgICBkc3RbZF0gPSBzMjsKKyAgICAgICAgdmFyIGkyJDEgPSBp
MiArIDEgfCAwOworICAgICAgICBpZiAoaTIkMSA8IHNyYzJyKSB7CisgICAgICAgICAgX2QgPSBk
ICsgMSB8IDA7CisgICAgICAgICAgX3MyID0gc3JjMltpMiQxXTsKKyAgICAgICAgICBfaTIgPSBp
MiQxOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gYmxpdChhLCBpMSwgZHN0LCBkICsgMSB8IDAsIHNy
YzFyIC0gaTEgfCAwKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBp
c29ydHRvID0gZnVuY3Rpb24gKHNyY29mcywgZHN0LCBkc3RvZnMsIGxlbikgeworICAgIGZvcih2
YXIgaSA9IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7Cisg
ICAgICB2YXIgZSA9IGFbc3Jjb2ZzICsgaSB8IDBdOworICAgICAgdmFyIGogPSAoZHN0b2ZzICsg
aSB8IDApIC0gMSB8IDA7CisgICAgICB3aGlsZShqID49IGRzdG9mcyAmJiBDdXJyeS5fMihjbXAs
IGRzdFtqXSwgZSkgPiAwKSB7CisgICAgICAgIGRzdFtqICsgMSB8IDBdID0gZHN0W2pdOworICAg
ICAgICBqID0gaiAtIDEgfCAwOworICAgICAgfTsKKyAgICAgIGRzdFtqICsgMSB8IDBdID0gZTsK
KyAgICB9CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfTsKKyAgdmFyIHNvcnR0byA9IGZ1bmN0
aW9uIChzcmNvZnMsIGRzdCwgZHN0b2ZzLCBsZW4pIHsKKyAgICBpZiAobGVuIDw9IDUpIHsKKyAg
ICAgIHJldHVybiBpc29ydHRvKHNyY29mcywgZHN0LCBkc3RvZnMsIGxlbik7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgdmFyIGwxID0gbGVuIC8gMiB8IDA7CisgICAgICB2YXIgbDIgPSBsZW4g
LSBsMSB8IDA7CisgICAgICBzb3J0dG8oc3Jjb2ZzICsgbDEgfCAwLCBkc3QsIGRzdG9mcyArIGwx
IHwgMCwgbDIpOworICAgICAgc29ydHRvKHNyY29mcywgYSwgc3Jjb2ZzICsgbDIgfCAwLCBsMSk7
CisgICAgICByZXR1cm4gbWVyZ2Uoc3Jjb2ZzICsgbDIgfCAwLCBsMSwgZHN0LCBkc3RvZnMgKyBs
MSB8IDAsIGwyLCBkc3QsIGRzdG9mcyk7CisgICAgfQorICB9OworICB2YXIgbCA9IGEubGVuZ3Ro
OworICBpZiAobCA8PSA1KSB7CisgICAgcmV0dXJuIGlzb3J0dG8oMCwgYSwgMCwgbCk7CisgIH0K
KyAgZWxzZSB7CisgICAgdmFyIGwxID0gbCAvIDIgfCAwOworICAgIHZhciBsMiA9IGwgLSBsMSB8
IDA7CisgICAgdmFyIHQgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KGwyLCBhWzBdKTsKKyAg
ICBzb3J0dG8obDEsIHQsIDAsIGwyKTsKKyAgICBzb3J0dG8oMCwgYSwgbDIsIGwxKTsKKyAgICBy
ZXR1cm4gbWVyZ2UobDIsIGwxLCB0LCAwLCBsMiwgYSwgMCk7CisgIH0KK30KKwordmFyIGNyZWF0
ZV9tYXRyaXggPSBtYWtlX21hdHJpeDsKKwordmFyIGNvbmNhdCA9IENhbWxfYXJyYXkuY2FtbF9h
cnJheV9jb25jYXQ7CisKK3ZhciBmYXN0X3NvcnQgPSBzdGFibGVfc29ydDsKKworZXhwb3J0cy5p
bml0ICAgICAgICAgID0gaW5pdDsKK2V4cG9ydHMubWFrZV9tYXRyaXggICA9IG1ha2VfbWF0cml4
OworZXhwb3J0cy5jcmVhdGVfbWF0cml4ID0gY3JlYXRlX21hdHJpeDsKK2V4cG9ydHMuYXBwZW5k
ICAgICAgICA9IGFwcGVuZDsKK2V4cG9ydHMuY29uY2F0ICAgICAgICA9IGNvbmNhdDsKK2V4cG9y
dHMuc3ViICAgICAgICAgICA9IHN1YjsKK2V4cG9ydHMuY29weSAgICAgICAgICA9IGNvcHk7Citl
eHBvcnRzLmZpbGwgICAgICAgICAgPSBmaWxsOworZXhwb3J0cy5ibGl0ICAgICAgICAgID0gYmxp
dDsKK2V4cG9ydHMudG9fbGlzdCAgICAgICA9IHRvX2xpc3Q7CitleHBvcnRzLm9mX2xpc3QgICAg
ICAgPSBvZl9saXN0OworZXhwb3J0cy5pdGVyICAgICAgICAgID0gaXRlcjsKK2V4cG9ydHMubWFw
ICAgICAgICAgICA9IG1hcDsKK2V4cG9ydHMuaXRlcmkgICAgICAgICA9IGl0ZXJpOworZXhwb3J0
cy5tYXBpICAgICAgICAgID0gbWFwaTsKK2V4cG9ydHMuZm9sZF9sZWZ0ICAgICA9IGZvbGRfbGVm
dDsKK2V4cG9ydHMuZm9sZF9yaWdodCAgICA9IGZvbGRfcmlnaHQ7CitleHBvcnRzLnNvcnQgICAg
ICAgICAgPSBzb3J0OworZXhwb3J0cy5zdGFibGVfc29ydCAgID0gc3RhYmxlX3NvcnQ7CitleHBv
cnRzLmZhc3Rfc29ydCAgICAgPSBmYXN0X3NvcnQ7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8v
Ly8vLy8gZW5kIG9mIGFycmF5LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8Kg
IH07CisKKworICBfcmVnaXN0cnlbJ2FzdCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhw
b3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgYXN0LmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0
ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUK
Kyd1c2Ugc3RyaWN0JzsKKwordmFyIExpYiAgICAgID0gcmVxdWlyZSgiLi9saWIiKTsKK3ZhciBC
bG9jayAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFyIEN1cnJ5
ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2YXIgQ2FtbF9vYmog
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9vYmoiKTsKKwordmFyIEludE9wID0g
LyogbW9kdWxlICovW107CisKK3ZhciBGbG9hdE9wID0gLyogbW9kdWxlICovW107CisKK2Z1bmN0
aW9uIGV4cG9ydF9raW5kX29mX2ltcG9ydF9raW5kKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0u
dGFnIHwgMCkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gLyogRnVuY0V4cG9ydCAq
LzA7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiBUYWJsZUV4cG9ydCAqLzE7Cisg
ICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiBNZW1vcnlFeHBvcnQgKi8yOworICAgIGNh
c2UgMyA6IAorICAgICAgICByZXR1cm4gLyogR2xvYmFsRXhwb3J0ICovMzsKKyAgICAKKyAgfQor
fQorCitmdW5jdGlvbiBpbXBvcnRfdHlwZShtLCBpbSkgeworICB2YXIgbWF0Y2ggPSBpbVsvKiBp
dCAqLzFdOworICB2YXIgbWF0Y2gkMSA9IG1hdGNoWy8qIGlraW5kICovMl1bLyogaXQgKi8xXTsK
KyAgc3dpdGNoIChtYXRjaCQxLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0
dXJuIC8qIEV4dGVybmFsRnVuY1R5cGUgKi9CbG9jay5fXygwLCBbQ3VycnkuXzIoTGliLkxpc3Qz
MlsvKiBudGggKi8xXSwgbVsvKiBpdCAqLzFdWy8qIHR5cGVzICovMF0sIG1hdGNoJDFbMF1bLyog
aXQgKi8xXSldKTsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsVGFi
bGVUeXBlICovQmxvY2suX18oMSwgW21hdGNoJDFbMF1dKTsKKyAgICBjYXNlIDIgOiAKKyAgICAg
ICAgcmV0dXJuIC8qIEV4dGVybmFsTWVtb3J5VHlwZSAqL0Jsb2NrLl9fKDIsIFttYXRjaCQxWzBd
XSk7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAvKiBFeHRlcm5hbEdsb2JhbFR5cGUg
Ki9CbG9jay5fXygzLCBbbWF0Y2gkMVswXV0pOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIGV4
cG9ydF90eXBlKG0sIGV4KSB7CisgIHZhciBtYXRjaCA9IGV4Wy8qIGl0ICovMV07CisgIHZhciBl
a2luZCA9IG1hdGNoWy8qIGVraW5kICovMV07CisgIHZhciBfaSA9IG1hdGNoWy8qIGl0ZW0gKi8y
XVsvKiBpdCAqLzFdOworICB2YXIgX3BhcmFtID0gbVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84
XTsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICB2YXIgaSA9
IF9pOworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGltcyA9IHBhcmFtWzFdOworICAgICAg
dmFyIGltID0gcGFyYW1bMF07CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChleHBvcnRf
a2luZF9vZl9pbXBvcnRfa2luZChpbVsvKiBpdCAqLzFdWy8qIGlraW5kICovMl1bLyogaXQgKi8x
XSksIGVraW5kWy8qIGl0ICovMV0pKSB7CisgICAgICAgIGlmIChpKSB7CisgICAgICAgICAgX3Bh
cmFtID0gaW1zOworICAgICAgICAgIF9pID0gaSAtIDEgfCAwOworICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gaW1wb3J0X3R5cGUobSwgaW0pOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgX3BhcmFtID0gaW1zOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAg
ICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBtYXRjaCQxID0gZWtpbmRbLyogaXQg
Ki8xXTsKKyAgICAgIHN3aXRjaCAobWF0Y2gkMSkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBFeHRlcm5hbEZ1bmNUeXBlICovQmxvY2suX18oMCwgW0N1cnJ5Ll8y
KExpYi5MaXN0MzJbLyogbnRoICovMV0sIG1bLyogaXQgKi8xXVsvKiB0eXBlcyAqLzBdLCBDdXJy
eS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyogZnVuY3MgKi80XSwg
aSlbLyogaXQgKi8xXVsvKiBmdHlwZSAqLzBdWy8qIGl0ICovMV0pXSk7CisgICAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsVGFibGVUeXBlICovQmxvY2suX18o
MSwgW0N1cnJ5Ll8yKExpYi5MaXN0MzJbLyogbnRoICovMV0sIG1bLyogaXQgKi8xXVsvKiB0YWJs
ZXMgKi8yXSwgaSlbLyogaXQgKi8xXVsvKiB0dHlwZSAqLzBdXSk7CisgICAgICAgIGNhc2UgMiA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsTWVtb3J5VHlwZSAqL0Jsb2NrLl9fKDIs
IFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyogbWVtb3Jp
ZXMgKi8zXSwgaSlbLyogaXQgKi8xXVsvKiBtdHlwZSAqLzBdXSk7CisgICAgICAgIGNhc2UgMyA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsR2xvYmFsVHlwZSAqL0Jsb2NrLl9fKDMs
IFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyogZ2xvYmFs
cyAqLzFdLCBpKVsvKiBpdCAqLzFdWy8qIGd0eXBlICovMF1dKTsKKyAgICAgICAgCisgICAgICB9
CisgICAgfQorICB9OworfQorCit2YXIgSTMyT3AgPSAwOworCit2YXIgSTY0T3AgPSAwOworCit2
YXIgRjMyT3AgPSAwOworCit2YXIgRjY0T3AgPSAwOworCit2YXIgZW1wdHlfbW9kdWxlID0gLyog
cmVjb3JkICovWworICAvKiB0eXBlcyA6IFtdICovMCwKKyAgLyogZ2xvYmFscyA6IFtdICovMCwK
KyAgLyogdGFibGVzIDogW10gKi8wLAorICAvKiBtZW1vcmllcyA6IFtdICovMCwKKyAgLyogZnVu
Y3MgOiBbXSAqLzAsCisgIC8qIHN0YXJ0IDogTm9uZSAqLzAsCisgIC8qIGVsZW1zIDogW10gKi8w
LAorICAvKiBkYXRhIDogW10gKi8wLAorICAvKiBpbXBvcnRzIDogW10gKi8wLAorICAvKiBleHBv
cnRzIDogW10gKi8wCitdOworCitleHBvcnRzLkludE9wICAgICAgICAgICAgICAgICAgICAgID0g
SW50T3A7CitleHBvcnRzLkZsb2F0T3AgICAgICAgICAgICAgICAgICAgID0gRmxvYXRPcDsKK2V4
cG9ydHMuSTMyT3AgICAgICAgICAgICAgICAgICAgICAgPSBJMzJPcDsKK2V4cG9ydHMuSTY0T3Ag
ICAgICAgICAgICAgICAgICAgICAgPSBJNjRPcDsKK2V4cG9ydHMuRjMyT3AgICAgICAgICAgICAg
ICAgICAgICAgPSBGMzJPcDsKK2V4cG9ydHMuRjY0T3AgICAgICAgICAgICAgICAgICAgICAgPSBG
NjRPcDsKK2V4cG9ydHMuZW1wdHlfbW9kdWxlICAgICAgICAgICAgICAgPSBlbXB0eV9tb2R1bGU7
CitleHBvcnRzLmV4cG9ydF9raW5kX29mX2ltcG9ydF9raW5kID0gZXhwb3J0X2tpbmRfb2ZfaW1w
b3J0X2tpbmQ7CitleHBvcnRzLmltcG9ydF90eXBlICAgICAgICAgICAgICAgID0gaW1wb3J0X3R5
cGU7CitleHBvcnRzLmV4cG9ydF90eXBlICAgICAgICAgICAgICAgID0gZXhwb3J0X3R5cGU7Cisv
KiBMaWIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBhc3QuanMgLy8vLy8v
Ly8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnYmlnYXJy
YXknXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0
YXJ0IG9mIGJpZ2FycmF5LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX2Fy
cmF5ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9hcnJheSIpOwordmFyIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOwor
CitmdW5jdGlvbiBkaW1zKCkgeworICB2YXIgbiA9IGZ1bmN0aW9uICgpIHsKKyAgICAgIHRocm93
ICJjYW1sX2JhX251bV9kaW1zIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4i
OworICAgIH0oKTsKKyAgdmFyIGQgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KG4sIDApOwor
ICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IG4gLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytp
KXsKKyAgICBkW2ldID0gZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyAiY2FtbF9iYV9kaW0g
bm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICB9KCk7CisgIH0K
KyAgcmV0dXJuIGQ7Cit9CisKK2Z1bmN0aW9uIG1hcF9maWxlKF8sICRzdGFyb3B0JHN0YXIsIF8k
MSwgXyQyLCBfJDMsIF8kNCkgeworICAkc3Rhcm9wdCRzdGFyID8gJHN0YXJvcHQkc3RhclswXSA6
IC8qIGludDY0ICovWworICAgICAgLyogaGkgKi8wLAorICAgICAgLyogbG8gKi8wCisgICAgXTsK
KyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX21hcF9m
aWxlX2J5dGVjb2RlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAg
ICAgICAgIH0oKTsKK30KKwordmFyIEdlbmFycmF5ID0gLyogbW9kdWxlICovWworICAvKiBkaW1z
ICovZGltcywKKyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZQorXTsKKworZnVuY3Rpb24gY3JlYXRl
KF8sIF8kMSwgXyQyKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJv
dyAiY2FtbF9iYV9jcmVhdGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7
CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBvZl9hcnJheShraW5kLCBsYXlvdXQsIGRh
dGEpIHsKKyAgdmFyIGJhID0gY3JlYXRlKGtpbmQsIGxheW91dCwgZGF0YS5sZW5ndGgpOworICBs
YXlvdXQgIT09IDAgPyAxIDogMDsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBkYXRhLmxl
bmd0aCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgdGhyb3cgImNhbWxfYmFfc2V0XzEgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNj
cmlwdCB5ZXRcbiI7CisgICAgICAgIH0oKSk7CisgIH0KKyAgcmV0dXJuIGJhOworfQorCitmdW5j
dGlvbiBtYXBfZmlsZSQxKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW0pIHsKKyAg
cmV0dXJuIG1hcF9maWxlKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hhcmVkLCAvKiBpbnQgYXJy
YXkgKi9bZGltXSk7Cit9CisKK3ZhciBBcnJheTEgPSAvKiBtb2R1bGUgKi9bCisgIC8qIGNyZWF0
ZSAqL2NyZWF0ZSwKKyAgLyogb2ZfYXJyYXkgKi9vZl9hcnJheSwKKyAgLyogbWFwX2ZpbGUgKi9t
YXBfZmlsZSQxCitdOworCitmdW5jdGlvbiBjcmVhdGUkMShfLCBfJDEsIF8kMiwgXyQzKSB7Cisg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9jcmVhdGUg
bm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOwor
fQorCitmdW5jdGlvbiBzbGljZV9sZWZ0KF8sIF8kMSkgeworICByZXR1cm4gZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgdGhyb3cgImNhbWxfYmFfc2xpY2Ugbm90IGltcGxlbWVudGVkIGJ5IGJ1
Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBzbGljZV9y
aWdodChfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93
ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwor
ICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gb2ZfYXJyYXkkMShraW5kLCBsYXlvdXQsIGRh
dGEpIHsKKyAgdmFyIGRpbTEgPSBkYXRhLmxlbmd0aDsKKyAgdmFyIGRpbTIgPSBkaW0xID8gZGF0
YVswXS5sZW5ndGggOiAwOworICB2YXIgYmEgPSBjcmVhdGUkMShraW5kLCBsYXlvdXQsIGRpbTEs
IGRpbTIpOworICBsYXlvdXQgIT09IDAgPyAxIDogMDsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5p
c2ggPSBkaW0xIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgdmFyIHJvdyA9IGRh
dGFbaV07CisgICAgaWYgKHJvdy5sZW5ndGggIT09IGRpbTIpIHsKKyAgICAgIHRocm93IFsKKyAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgICAiQmlnYXJyYXkuQXJyYXkyLm9mX2FycmF5OiBub24tcmVjdGFuZ3VsYXIgZGF0YSIK
KyAgICAgICAgICBdOworICAgIH0KKyAgICBmb3IodmFyIGogPSAwICxqX2ZpbmlzaCA9IGRpbTIg
LSAxIHwgMDsgaiA8PSBqX2ZpbmlzaDsgKytqKXsKKyAgICAgIChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0aHJvdyAiY2FtbF9iYV9zZXRfMiBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKKyAgICAgICAgICB9KCkpOworICAgIH0KKyAgfQorICByZXR1cm4gYmE7Cit9
CisKK2Z1bmN0aW9uIG1hcF9maWxlJDIoZmQsIHBvcywga2luZCwgbGF5b3V0LCBzaGFyZWQsIGRp
bTEsIGRpbTIpIHsKKyAgcmV0dXJuIG1hcF9maWxlKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hh
cmVkLCAvKiBpbnQgYXJyYXkgKi9bCisgICAgICAgICAgICAgIGRpbTEsCisgICAgICAgICAgICAg
IGRpbTIKKyAgICAgICAgICAgIF0pOworfQorCit2YXIgQXJyYXkyID0gLyogbW9kdWxlICovWwor
ICAvKiBjcmVhdGUgKi9jcmVhdGUkMSwKKyAgLyogc2xpY2VfbGVmdCAqL3NsaWNlX2xlZnQsCisg
IC8qIHNsaWNlX3JpZ2h0ICovc2xpY2VfcmlnaHQsCisgIC8qIG9mX2FycmF5ICovb2ZfYXJyYXkk
MSwKKyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZSQyCitdOworCitmdW5jdGlvbiBjcmVhdGUkMihf
LCBfJDEsIF8kMiwgXyQzLCBfJDQpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHRocm93ICJjYW1sX2JhX2NyZWF0ZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0
IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHNsaWNlX2xlZnRfMShfLCBf
JDEsIF8kMikgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNh
bWxfYmFfc2xpY2Ugbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAg
ICAgICAgfSgpOworfQorCitmdW5jdGlvbiBzbGljZV9yaWdodF8xKF8sIF8kMSwgXyQyKSB7Cisg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9zbGljZSBu
b3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9
CisKK2Z1bmN0aW9uIHNsaWNlX2xlZnRfMihfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2xpY2Vf
cmlnaHRfMihfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRo
cm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4i
OworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gb2ZfYXJyYXkkMihraW5kLCBsYXlvdXQs
IGRhdGEpIHsKKyAgdmFyIGRpbTEgPSBkYXRhLmxlbmd0aDsKKyAgdmFyIGRpbTIgPSBkaW0xID8g
ZGF0YVswXS5sZW5ndGggOiAwOworICB2YXIgZGltMyA9IGRpbTIgPyBkYXRhWzBdWzBdLmxlbmd0
aCA6IDA7CisgIHZhciBiYSA9IGNyZWF0ZSQyKGtpbmQsIGxheW91dCwgZGltMSwgZGltMiwgZGlt
Myk7CisgIGxheW91dCAhPT0gMCA/IDEgOiAwOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9
IGRpbTEgLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICB2YXIgcm93ID0gZGF0YVtp
XTsKKyAgICBpZiAocm93Lmxlbmd0aCAhPT0gZGltMikgeworICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAgICJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhIgorICAgICAgICAg
IF07CisgICAgfQorICAgIGZvcih2YXIgaiA9IDAgLGpfZmluaXNoID0gZGltMiAtIDEgfCAwOyBq
IDw9IGpfZmluaXNoOyArK2opeworICAgICAgdmFyIGNvbCA9IHJvd1tqXTsKKyAgICAgIGlmIChj
b2wubGVuZ3RoICE9PSBkaW0zKSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAgIkJp
Z2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGEiCisgICAgICAgICAgICBdOwor
ICAgICAgfQorICAgICAgZm9yKHZhciBrID0gMCAsa19maW5pc2ggPSBkaW0zIC0gMSB8IDA7IGsg
PD0ga19maW5pc2g7ICsrayl7CisgICAgICAgIChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
IHRocm93ICJjYW1sX2JhX3NldF8zIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0
XG4iOworICAgICAgICAgICAgfSgpKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIGJh
OworfQorCitmdW5jdGlvbiBtYXBfZmlsZSQzKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hhcmVk
LCBkaW0xLCBkaW0yLCBkaW0zKSB7CisgIHJldHVybiBtYXBfZmlsZShmZCwgcG9zLCBraW5kLCBs
YXlvdXQsIHNoYXJlZCwgLyogaW50IGFycmF5ICovWworICAgICAgICAgICAgICBkaW0xLAorICAg
ICAgICAgICAgICBkaW0yLAorICAgICAgICAgICAgICBkaW0zCisgICAgICAgICAgICBdKTsKK30K
KwordmFyIEFycmF5MyA9IC8qIG1vZHVsZSAqL1sKKyAgLyogY3JlYXRlICovY3JlYXRlJDIsCisg
IC8qIHNsaWNlX2xlZnRfMSAqL3NsaWNlX2xlZnRfMSwKKyAgLyogc2xpY2VfcmlnaHRfMSAqL3Ns
aWNlX3JpZ2h0XzEsCisgIC8qIHNsaWNlX2xlZnRfMiAqL3NsaWNlX2xlZnRfMiwKKyAgLyogc2xp
Y2VfcmlnaHRfMiAqL3NsaWNlX3JpZ2h0XzIsCisgIC8qIG9mX2FycmF5ICovb2ZfYXJyYXkkMiwK
KyAgLyogbWFwX2ZpbGUgKi9tYXBfZmlsZSQzCitdOworCitmdW5jdGlvbiBhcnJheTFfb2ZfZ2Vu
YXJyYXkoYSkgeworICBpZiAoZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyAiY2FtbF9iYV9u
dW1fZGltcyBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgIH0o
KSA9PT0gMSkgeworICAgIHJldHVybiBhOworICB9CisgIGVsc2UgeworICAgIHRocm93IFsKKyAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAg
ICAgICJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXkiCisgICAgICAgIF07CisgIH0KK30KKwor
ZnVuY3Rpb24gYXJyYXkyX29mX2dlbmFycmF5KGEpIHsKKyAgaWYgKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgdGhyb3cgImNhbWxfYmFfbnVtX2RpbXMgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNj
cmlwdCB5ZXRcbiI7CisgICAgICB9KCkgPT09IDIpIHsKKyAgICByZXR1cm4gYTsKKyAgfQorICBl
bHNlIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52
YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5Igor
ICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGFycmF5M19vZl9nZW5hcnJheShhKSB7Cisg
IGlmIChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRocm93ICJjYW1sX2JhX251bV9kaW1zIG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgfSgpID09PSAzKSB7Cisg
ICAgcmV0dXJuIGE7CisgIH0KKyAgZWxzZSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkJpZ2FycmF5
LmFycmF5M19vZl9nZW5hcnJheSIKKyAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiByZXNo
YXBlXzEoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJv
dyAiY2FtbF9iYV9yZXNoYXBlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4i
OworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gcmVzaGFwZV8yKF8sIF8kMSwgXyQyKSB7
CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9yZXNo
YXBlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0o
KTsKK30KKworZnVuY3Rpb24gcmVzaGFwZV8zKF8sIF8kMSwgXyQyLCBfJDMpIHsKKyAgcmV0dXJu
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3Jlc2hhcGUgbm90IGlt
cGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCit2
YXIgZmxvYXQzMiA9IC8qIEZsb2F0MzIgKi8wOworCit2YXIgZmxvYXQ2NCA9IC8qIEZsb2F0NjQg
Ki8xOworCit2YXIgY29tcGxleDMyID0gLyogQ29tcGxleDMyICovMTA7CisKK3ZhciBjb21wbGV4
NjQgPSAvKiBDb21wbGV4NjQgKi8xMTsKKwordmFyIGludDhfc2lnbmVkID0gLyogSW50OF9zaWdu
ZWQgKi8yOworCit2YXIgaW50OF91bnNpZ25lZCA9IC8qIEludDhfdW5zaWduZWQgKi8zOworCit2
YXIgaW50MTZfc2lnbmVkID0gLyogSW50MTZfc2lnbmVkICovNDsKKwordmFyIGludDE2X3Vuc2ln
bmVkID0gLyogSW50MTZfdW5zaWduZWQgKi81OworCit2YXIgJCRpbnQgPSAvKiBJbnQgKi84Owor
Cit2YXIgaW50MzIgPSAvKiBJbnQzMiAqLzY7CisKK3ZhciBpbnQ2NCA9IC8qIEludDY0ICovNzsK
KwordmFyIG5hdGl2ZWludCA9IC8qIE5hdGl2ZWludCAqLzk7CisKK3ZhciAkJGNoYXIgPSAvKiBD
aGFyICovMTI7CisKK3ZhciBjX2xheW91dCA9IC8qIENfbGF5b3V0ICovMDsKKwordmFyIGZvcnRy
YW5fbGF5b3V0ID0gLyogRm9ydHJhbl9sYXlvdXQgKi8xOworCitmdW5jdGlvbiByZXNoYXBlKF8s
IF8kMSkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxf
YmFfcmVzaGFwZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAg
ICAgICB9KCk7Cit9CisKK2V4cG9ydHMuZmxvYXQzMiAgICAgICAgICAgID0gZmxvYXQzMjsKK2V4
cG9ydHMuZmxvYXQ2NCAgICAgICAgICAgID0gZmxvYXQ2NDsKK2V4cG9ydHMuY29tcGxleDMyICAg
ICAgICAgID0gY29tcGxleDMyOworZXhwb3J0cy5jb21wbGV4NjQgICAgICAgICAgPSBjb21wbGV4
NjQ7CitleHBvcnRzLmludDhfc2lnbmVkICAgICAgICA9IGludDhfc2lnbmVkOworZXhwb3J0cy5p
bnQ4X3Vuc2lnbmVkICAgICAgPSBpbnQ4X3Vuc2lnbmVkOworZXhwb3J0cy5pbnQxNl9zaWduZWQg
ICAgICAgPSBpbnQxNl9zaWduZWQ7CitleHBvcnRzLmludDE2X3Vuc2lnbmVkICAgICA9IGludDE2
X3Vuc2lnbmVkOworZXhwb3J0cy4kJGludCAgICAgICAgICAgICAgPSAkJGludDsKK2V4cG9ydHMu
aW50MzIgICAgICAgICAgICAgID0gaW50MzI7CitleHBvcnRzLmludDY0ICAgICAgICAgICAgICA9
IGludDY0OworZXhwb3J0cy5uYXRpdmVpbnQgICAgICAgICAgPSBuYXRpdmVpbnQ7CitleHBvcnRz
LiQkY2hhciAgICAgICAgICAgICA9ICQkY2hhcjsKK2V4cG9ydHMuY19sYXlvdXQgICAgICAgICAg
ID0gY19sYXlvdXQ7CitleHBvcnRzLmZvcnRyYW5fbGF5b3V0ICAgICA9IGZvcnRyYW5fbGF5b3V0
OworZXhwb3J0cy5HZW5hcnJheSAgICAgICAgICAgPSBHZW5hcnJheTsKK2V4cG9ydHMuQXJyYXkx
ICAgICAgICAgICAgID0gQXJyYXkxOworZXhwb3J0cy5BcnJheTIgICAgICAgICAgICAgPSBBcnJh
eTI7CitleHBvcnRzLkFycmF5MyAgICAgICAgICAgICA9IEFycmF5MzsKK2V4cG9ydHMuYXJyYXkx
X29mX2dlbmFycmF5ID0gYXJyYXkxX29mX2dlbmFycmF5OworZXhwb3J0cy5hcnJheTJfb2ZfZ2Vu
YXJyYXkgPSBhcnJheTJfb2ZfZ2VuYXJyYXk7CitleHBvcnRzLmFycmF5M19vZl9nZW5hcnJheSA9
IGFycmF5M19vZl9nZW5hcnJheTsKK2V4cG9ydHMucmVzaGFwZSAgICAgICAgICAgID0gcmVzaGFw
ZTsKK2V4cG9ydHMucmVzaGFwZV8xICAgICAgICAgID0gcmVzaGFwZV8xOworZXhwb3J0cy5yZXNo
YXBlXzIgICAgICAgICAgPSByZXNoYXBlXzI7CitleHBvcnRzLnJlc2hhcGVfMyAgICAgICAgICA9
IHJlc2hhcGVfMzsKKy8qICBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGJp
Z2FycmF5LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBf
cmVnaXN0cnlbJ2Jsb2NrJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307
CisvLy8vLy8vLyBzdGFydCBvZiBibG9jay5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisK
K2Z1bmN0aW9uIF9fKHRhZywgYmxvY2spIHsKKyAgYmxvY2sudGFnID0gdGFnOworICByZXR1cm4g
YmxvY2s7Cit9CisKK2V4cG9ydHMuX18gPSBfXzsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8v
Ly8vLyBlbmQgb2YgYmxvY2suanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAg
fTsKKworCisgIF9yZWdpc3RyeVsnYnVmZmVyJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBl
eHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBidWZmZXIuanMgLy8vLy8vLy8KKyd1c2Ug
c3RyaWN0JzsKKwordmFyIFN5cyAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zeXMi
KTsKK3ZhciBCeXRlcyAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnl0ZXMiKTsKK3Zh
ciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciAkJFN0
cmluZyAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc3RyaW5nIik7Cit2YXIgUGVydmFzaXZl
cyAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX3N0cmlu
ZyAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKwor
ZnVuY3Rpb24gY3JlYXRlKG4pIHsKKyAgdmFyIG4kMSA9IG4gPCAxID8gMSA6IG47CisgIHZhciBu
JDIgPSBuJDEgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggPyBTeXMubWF4X3N0cmluZ19sZW5ndGgg
OiBuJDE7CisgIHZhciBzID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKG4kMik7Cisg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogYnVmZmVyICovcywKKyAgICAgICAg
ICAvKiBwb3NpdGlvbiAqLzAsCisgICAgICAgICAgLyogbGVuZ3RoICovbiQyLAorICAgICAgICAg
IC8qIGluaXRpYWxfYnVmZmVyICovcworICAgICAgICBdOworfQorCitmdW5jdGlvbiBjb250ZW50
cyhiKSB7CisgIHJldHVybiBCeXRlcy5zdWJfc3RyaW5nKGJbLyogYnVmZmVyICovMF0sIDAsIGJb
LyogcG9zaXRpb24gKi8xXSk7Cit9CisKK2Z1bmN0aW9uIHRvX2J5dGVzKGIpIHsKKyAgcmV0dXJu
IEJ5dGVzLnN1YihiWy8qIGJ1ZmZlciAqLzBdLCAwLCBiWy8qIHBvc2l0aW9uICovMV0pOworfQor
CitmdW5jdGlvbiBzdWIoYiwgb2ZzLCBsZW4pIHsKKyAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8
fCBvZnMgPiAoYlsvKiBwb3NpdGlvbiAqLzFdIC0gbGVuIHwgMCkpIHsKKyAgICB0aHJvdyBbCisg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAg
ICAgICAiQnVmZmVyLnN1YiIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
Qnl0ZXMuc3ViX3N0cmluZyhiWy8qIGJ1ZmZlciAqLzBdLCBvZnMsIGxlbik7CisgIH0KK30KKwor
ZnVuY3Rpb24gYmxpdChzcmMsIHNyY29mZiwgZHN0LCBkc3RvZmYsIGxlbikgeworICBpZiAobGVu
IDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IChzcmNbLyogcG9zaXRpb24gKi8xXSAtIGxl
biB8IDApIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKGRzdC5sZW5ndGggLSBsZW4gfCAwKSkg
eworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlk
X2FyZ3VtZW50LAorICAgICAgICAgICJCdWZmZXIuYmxpdCIKKyAgICAgICAgXTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gQnl0ZXMuYmxpdChzcmNbLyogYnVmZmVyICovMF0sIHNyY29mZiwg
ZHN0LCBkc3RvZmYsIGxlbik7CisgIH0KK30KKworZnVuY3Rpb24gbnRoKGIsIG9mcykgeworICBp
ZiAob2ZzIDwgMCB8fCBvZnMgPj0gYlsvKiBwb3NpdGlvbiAqLzFdKSB7CisgICAgdGhyb3cgWwor
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgIkJ1ZmZlci5udGgiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IGJbLyogYnVmZmVyICovMF1bb2ZzXTsKKyAgfQorfQorCitmdW5jdGlvbiBsZW5ndGgoYikgewor
ICByZXR1cm4gYlsvKiBwb3NpdGlvbiAqLzFdOworfQorCitmdW5jdGlvbiBjbGVhcihiKSB7Cisg
IGJbLyogcG9zaXRpb24gKi8xXSA9IDA7CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0
aW9uIHJlc2V0KGIpIHsKKyAgYlsvKiBwb3NpdGlvbiAqLzFdID0gMDsKKyAgYlsvKiBidWZmZXIg
Ki8wXSA9IGJbLyogaW5pdGlhbF9idWZmZXIgKi8zXTsKKyAgYlsvKiBsZW5ndGggKi8yXSA9IGJb
LyogYnVmZmVyICovMF0ubGVuZ3RoOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlv
biByZXNpemUoYiwgbW9yZSkgeworICB2YXIgbGVuID0gYlsvKiBsZW5ndGggKi8yXTsKKyAgdmFy
IG5ld19sZW4gPSBsZW47CisgIHdoaWxlKChiWy8qIHBvc2l0aW9uICovMV0gKyBtb3JlIHwgMCkg
PiBuZXdfbGVuKSB7CisgICAgbmV3X2xlbiA9IChuZXdfbGVuIDw8IDEpOworICB9OworICBpZiAo
bmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgeworICAgIGlmICgoYlsvKiBwb3NpdGlv
biAqLzFdICsgbW9yZSB8IDApIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgeworICAgICAgbmV3
X2xlbiA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0
aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAg
ICAgICAgICAgIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlciIKKyAgICAgICAgICBdOwor
ICAgIH0KKyAgfQorICB2YXIgbmV3X2J1ZmZlciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0
cmluZyhuZXdfbGVuKTsKKyAgQnl0ZXMuYmxpdChiWy8qIGJ1ZmZlciAqLzBdLCAwLCBuZXdfYnVm
ZmVyLCAwLCBiWy8qIHBvc2l0aW9uICovMV0pOworICBiWy8qIGJ1ZmZlciAqLzBdID0gbmV3X2J1
ZmZlcjsKKyAgYlsvKiBsZW5ndGggKi8yXSA9IG5ld19sZW47CisgIHJldHVybiAvKiAoKSAqLzA7
Cit9CisKK2Z1bmN0aW9uIGFkZF9jaGFyKGIsIGMpIHsKKyAgdmFyIHBvcyA9IGJbLyogcG9zaXRp
b24gKi8xXTsKKyAgaWYgKHBvcyA+PSBiWy8qIGxlbmd0aCAqLzJdKSB7CisgICAgcmVzaXplKGIs
IDEpOworICB9CisgIGJbLyogYnVmZmVyICovMF1bcG9zXSA9IGM7CisgIGJbLyogcG9zaXRpb24g
Ki8xXSA9IHBvcyArIDEgfCAwOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBh
ZGRfc3Vic3RyaW5nKGIsIHMsIG9mZnNldCwgbGVuKSB7CisgIGlmIChvZmZzZXQgPCAwIHx8IGxl
biA8IDAgfHwgKG9mZnNldCArIGxlbiB8IDApID4gcy5sZW5ndGgpIHsKKyAgICB0aHJvdyBbCisg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAg
ICAgICAiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzIgorICAgICAgICBdOworICB9
CisgIHZhciBuZXdfcG9zaXRpb24gPSBiWy8qIHBvc2l0aW9uICovMV0gKyBsZW4gfCAwOworICBp
ZiAobmV3X3Bvc2l0aW9uID4gYlsvKiBsZW5ndGggKi8yXSkgeworICAgIHJlc2l6ZShiLCBsZW4p
OworICB9CisgIEJ5dGVzLmJsaXRfc3RyaW5nKHMsIG9mZnNldCwgYlsvKiBidWZmZXIgKi8wXSwg
YlsvKiBwb3NpdGlvbiAqLzFdLCBsZW4pOworICBiWy8qIHBvc2l0aW9uICovMV0gPSBuZXdfcG9z
aXRpb247CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGFkZF9zdWJieXRlcyhi
LCBzLCBvZmZzZXQsIGxlbikgeworICByZXR1cm4gYWRkX3N1YnN0cmluZyhiLCBDYW1sX3N0cmlu
Zy5ieXRlc190b19zdHJpbmcocyksIG9mZnNldCwgbGVuKTsKK30KKworZnVuY3Rpb24gYWRkX3N0
cmluZyhiLCBzKSB7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIG5ld19wb3NpdGlvbiA9
IGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDA7CisgIGlmIChuZXdfcG9zaXRpb24gPiBiWy8q
IGxlbmd0aCAqLzJdKSB7CisgICAgcmVzaXplKGIsIGxlbik7CisgIH0KKyAgQnl0ZXMuYmxpdF9z
dHJpbmcocywgMCwgYlsvKiBidWZmZXIgKi8wXSwgYlsvKiBwb3NpdGlvbiAqLzFdLCBsZW4pOwor
ICBiWy8qIHBvc2l0aW9uICovMV0gPSBuZXdfcG9zaXRpb247CisgIHJldHVybiAvKiAoKSAqLzA7
Cit9CisKK2Z1bmN0aW9uIGFkZF9ieXRlcyhiLCBzKSB7CisgIHJldHVybiBhZGRfc3RyaW5nKGIs
IENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzKSk7Cit9CisKK2Z1bmN0aW9uIGFkZF9idWZm
ZXIoYiwgYnMpIHsKKyAgcmV0dXJuIGFkZF9zdWJieXRlcyhiLCBic1svKiBidWZmZXIgKi8wXSwg
MCwgYnNbLyogcG9zaXRpb24gKi8xXSk7Cit9CisKK2Z1bmN0aW9uIGFkZF9jaGFubmVsKGIsIGlj
LCBsZW4pIHsKKyAgaWYgKGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoKSB7
CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRf
YXJndW1lbnQsCisgICAgICAgICAgIkJ1ZmZlci5hZGRfY2hhbm5lbCIKKyAgICAgICAgXTsKKyAg
fQorICBpZiAoKGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDApID4gYlsvKiBsZW5ndGggKi8y
XSkgeworICAgIHJlc2l6ZShiLCBsZW4pOworICB9CisgIFBlcnZhc2l2ZXMucmVhbGx5X2lucHV0
KGljLCBiWy8qIGJ1ZmZlciAqLzBdLCBiWy8qIHBvc2l0aW9uICovMV0sIGxlbik7CisgIGJbLyog
cG9zaXRpb24gKi8xXSA9IGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDA7CisgIHJldHVybiAv
KiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIG91dHB1dF9idWZmZXIob2MsIGIpIHsKKyAgcmV0dXJu
IFBlcnZhc2l2ZXMub3V0cHV0KG9jLCBiWy8qIGJ1ZmZlciAqLzBdLCAwLCBiWy8qIHBvc2l0aW9u
ICovMV0pOworfQorCitmdW5jdGlvbiBjbG9zaW5nKHBhcmFtKSB7CisgIGlmIChwYXJhbSAhPT0g
NDApIHsKKyAgICBpZiAocGFyYW0gIT09IDEyMykgeworICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICJidWZmZXIubWwiLAorICAgICAgICAgICAgICAxMTUsCisgICAgICAg
ICAgICAgIDkKKyAgICAgICAgICAgIF0KKyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHJldHVybiAvKiAifSIgKi8xMjU7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiAiKSIgKi80MTsKKyAgfQorfQorCitmdW5jdGlvbiBhZHZhbmNlX3RvX2Nsb3Npbmco
b3BlbmluZywgY2xvc2luZywgaywgcywgc3RhcnQpIHsKKyAgdmFyIF9rID0gazsKKyAgdmFyIF9p
ID0gc3RhcnQ7CisgIHZhciBsaW0gPSBzLmxlbmd0aDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZh
ciBpID0gX2k7CisgICAgdmFyIGskMSA9IF9rOworICAgIGlmIChpID49IGxpbSkgeworICAgICAg
dGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgIH0KKyAgICBlbHNl
IGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgPT09IG9wZW5pbmcpIHsKKyAgICAgIF9pID0gaSAr
IDEgfCAwOworICAgICAgX2sgPSBrJDEgKyAxIHwgMDsKKyAgICAgIGNvbnRpbnVlIDsKKyAgICAg
IAorICAgIH0KKyAgICBlbHNlIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgPT09IGNsb3Npbmcp
IHsKKyAgICAgIGlmIChrJDEpIHsKKyAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgIF9r
ID0gayQxIC0gMSB8IDA7CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgICB9CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9
CisgIH07Cit9CisKK2Z1bmN0aW9uIGFkdmFuY2VfdG9fbm9uX2FscGhhKHMsIHN0YXJ0KSB7Cisg
IHZhciBfaSA9IHN0YXJ0OworICB2YXIgbGltID0gcy5sZW5ndGg7CisgIHdoaWxlKHRydWUpIHsK
KyAgICB2YXIgaSA9IF9pOworICAgIGlmIChpID49IGxpbSkgeworICAgICAgcmV0dXJuIGxpbTsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQocywg
aSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICBpZiAobWF0Y2ggPj0gOTEpIHsKKyAgICAg
ICAgaWYgKG1hdGNoID49IDk3KSB7CisgICAgICAgICAgaWYgKG1hdGNoID49IDEyMykgeworICAg
ICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYg
KG1hdGNoICE9PSA5NSkgeworICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBl
bHNlIGlmIChtYXRjaCA+PSA1OCkgeworICAgICAgICBpZiAobWF0Y2ggPj0gNjUpIHsKKyAgICAg
ICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gaTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAobWF0Y2ggPj0gNDgpIHsK
KyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJu
IGk7CisgICAgICB9CisgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICBfaSA9IGkgKyAx
IHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIAorICAg
IH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmluZF9pZGVudChzLCBzdGFydCwgbGltKSB7CisgIGlm
IChzdGFydCA+PSBsaW0pIHsKKyAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3Rf
Zm91bmQ7CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGMgPSBDYW1sX3N0cmluZy5nZXQocywgc3Rh
cnQpOworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAoYyAhPT0gNDApIHsKKyAgICAgIGlmIChj
ICE9PSAxMjMpIHsKKyAgICAgICAgdmFyIHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYShzLCBz
dGFydCArIDEgfCAwKTsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAgICQkU3RyaW5nLnN1YihzLCBzdGFydCwgc3RvcCAtIHN0YXJ0IHwgMCksCisgICAgICAgICAg
ICAgICAgc3RvcAorICAgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGV4aXQgPSAx
OworICAgIH0KKyAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgdmFyIG5ld19zdGFydCA9IHN0
YXJ0ICsgMSB8IDA7CisgICAgICB2YXIgc3RvcCQxID0gYWR2YW5jZV90b19jbG9zaW5nKGMsIGNs
b3NpbmcoYyksIDAsIHMsIG5ld19zdGFydCk7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgICQkU3RyaW5nLnN1YihzLCBuZXdfc3RhcnQsIChzdG9wJDEgLSBzdGFydCB8
IDApIC0gMSB8IDApLAorICAgICAgICAgICAgICBzdG9wJDEgKyAxIHwgMAorICAgICAgICAgICAg
XTsKKyAgICB9CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gYWRkX3N1YnN0aXR1dGUoYiwgZiwg
cykgeworICB2YXIgbGltID0gcy5sZW5ndGg7CisgIHZhciBfcHJldmlvdXMgPSAvKiAiICIgKi8z
MjsKKyAgdmFyIF9pID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0gX2k7CisgICAg
dmFyIHByZXZpb3VzID0gX3ByZXZpb3VzOworICAgIGlmIChpIDwgbGltKSB7CisgICAgICB2YXIg
Y3VycmVudCA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICAgIGlmIChjdXJyZW50ICE9PSAz
NikgeworICAgICAgICBpZiAocHJldmlvdXMgPT09IC8qICJcXCIgKi85MikgeworICAgICAgICAg
IGFkZF9jaGFyKGIsIC8qICJcXCIgKi85Mik7CisgICAgICAgICAgYWRkX2NoYXIoYiwgY3VycmVu
dCk7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgX3ByZXZpb3VzID0gLyog
IiAiICovMzI7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKGN1cnJlbnQgIT09IDkyKSB7CisgICAgICAgICAgYWRkX2NoYXIoYiwg
Y3VycmVudCk7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgX3ByZXZpb3Vz
ID0gY3VycmVudDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgX3By
ZXZpb3VzID0gY3VycmVudDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHByZXZpb3VzID09PSAvKiAiXFwiICovOTIp
IHsKKyAgICAgICAgYWRkX2NoYXIoYiwgY3VycmVudCk7CisgICAgICAgIF9pID0gaSArIDEgfCAw
OworICAgICAgICBfcHJldmlvdXMgPSAvKiAiICIgKi8zMjsKKyAgICAgICAgY29udGludWUgOwor
ICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgaiA9IGkgKyAxIHwg
MDsKKyAgICAgICAgdmFyIG1hdGNoID0gZmluZF9pZGVudChzLCBqLCBsaW0pOworICAgICAgICBh
ZGRfc3RyaW5nKGIsIEN1cnJ5Ll8xKGYsIG1hdGNoWzBdKSk7CisgICAgICAgIF9pID0gbWF0Y2hb
MV07CisgICAgICAgIF9wcmV2aW91cyA9IC8qICIgIiAqLzMyOworICAgICAgICBjb250aW51ZSA7
CisgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChwcmV2aW91cyA9PT0gLyog
IlxcIiAqLzkyKSB7CisgICAgICByZXR1cm4gYWRkX2NoYXIoYiwgcHJldmlvdXMpOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgfTsKK30KKworZXhwb3J0cy5j
cmVhdGUgICAgICAgICA9IGNyZWF0ZTsKK2V4cG9ydHMuY29udGVudHMgICAgICAgPSBjb250ZW50
czsKK2V4cG9ydHMudG9fYnl0ZXMgICAgICAgPSB0b19ieXRlczsKK2V4cG9ydHMuc3ViICAgICAg
ICAgICAgPSBzdWI7CitleHBvcnRzLmJsaXQgICAgICAgICAgID0gYmxpdDsKK2V4cG9ydHMubnRo
ICAgICAgICAgICAgPSBudGg7CitleHBvcnRzLmxlbmd0aCAgICAgICAgID0gbGVuZ3RoOworZXhw
b3J0cy5jbGVhciAgICAgICAgICA9IGNsZWFyOworZXhwb3J0cy5yZXNldCAgICAgICAgICA9IHJl
c2V0OworZXhwb3J0cy5hZGRfY2hhciAgICAgICA9IGFkZF9jaGFyOworZXhwb3J0cy5hZGRfc3Ry
aW5nICAgICA9IGFkZF9zdHJpbmc7CitleHBvcnRzLmFkZF9ieXRlcyAgICAgID0gYWRkX2J5dGVz
OworZXhwb3J0cy5hZGRfc3Vic3RyaW5nICA9IGFkZF9zdWJzdHJpbmc7CitleHBvcnRzLmFkZF9z
dWJieXRlcyAgID0gYWRkX3N1YmJ5dGVzOworZXhwb3J0cy5hZGRfc3Vic3RpdHV0ZSA9IGFkZF9z
dWJzdGl0dXRlOworZXhwb3J0cy5hZGRfYnVmZmVyICAgICA9IGFkZF9idWZmZXI7CitleHBvcnRz
LmFkZF9jaGFubmVsICAgID0gYWRkX2NoYW5uZWw7CitleHBvcnRzLm91dHB1dF9idWZmZXIgID0g
b3V0cHV0X2J1ZmZlcjsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgYnVm
ZmVyLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVn
aXN0cnlbJ2J5dGVzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307Cisv
Ly8vLy8vLyBzdGFydCBvZiBieXRlcy5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIg
Q2hhciAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NoYXIiKTsKK3ZhciBMaXN0ICAg
ICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGlzdCIpOwordmFyIEN1cnJ5ICAgICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfb2JqICAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9jYW1sX29iaiIpOwordmFyIENhbWxfaW50MzIgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9jYW1sX2ludDMyIik7Cit2YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAg
PSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9
IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9
IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gbWFrZShu
LCBjKSB7CisgIHZhciBzID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKG4pOworICBD
YW1sX3N0cmluZy5jYW1sX2ZpbGxfc3RyaW5nKHMsIDAsIG4sIGMpOworICByZXR1cm4gczsKK30K
KworZnVuY3Rpb24gaW5pdChuLCBmKSB7CisgIHZhciBzID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVh
dGVfc3RyaW5nKG4pOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IG4gLSAxIHwgMDsgaSA8
PSBpX2ZpbmlzaDsgKytpKXsKKyAgICBzW2ldID0gQ3VycnkuXzEoZiwgaSk7CisgIH0KKyAgcmV0
dXJuIHM7Cit9CisKK3ZhciBlbXB0eSA9IFtdOworCitmdW5jdGlvbiBjb3B5KHMpIHsKKyAgdmFy
IGxlbiA9IHMubGVuZ3RoOworICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmlu
ZyhsZW4pOworICBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMocywgMCwgciwgMCwgbGVuKTsK
KyAgcmV0dXJuIHI7Cit9CisKK2Z1bmN0aW9uIHRvX3N0cmluZyhiKSB7CisgIHJldHVybiBDYW1s
X3N0cmluZy5ieXRlc190b19zdHJpbmcoY29weShiKSk7Cit9CisKK2Z1bmN0aW9uIG9mX3N0cmlu
ZyhzKSB7CisgIHJldHVybiBjb3B5KENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSk7Cit9
CisKK2Z1bmN0aW9uIHN1YihzLCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAw
IHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIlN0
cmluZy5zdWIgLyBCeXRlcy5zdWIiCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgdmFy
IHIgPSBDYW1sX3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcobGVuKTsKKyAgICBDYW1sX3N0cmlu
Zy5jYW1sX2JsaXRfYnl0ZXMocywgb2ZzLCByLCAwLCBsZW4pOworICAgIHJldHVybiByOworICB9
Cit9CisKK2Z1bmN0aW9uIHN1Yl9zdHJpbmcoYiwgb2ZzLCBsZW4pIHsKKyAgcmV0dXJuIENhbWxf
c3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzdWIoYiwgb2ZzLCBsZW4pKTsKK30KKworZnVuY3Rpb24g
ZXh0ZW5kKHMsIGxlZnQsIHJpZ2h0KSB7CisgIHZhciBsZW4gPSAocy5sZW5ndGggKyBsZWZ0IHwg
MCkgKyByaWdodCB8IDA7CisgIHZhciByID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5n
KGxlbik7CisgIHZhciBtYXRjaCA9IGxlZnQgPCAwID8gLyogdHVwbGUgKi9bCisgICAgICAtbGVm
dCB8IDAsCisgICAgICAwCisgICAgXSA6IC8qIHR1cGxlICovWworICAgICAgMCwKKyAgICAgIGxl
ZnQKKyAgICBdOworICB2YXIgZHN0b2ZmID0gbWF0Y2hbMV07CisgIHZhciBzcmNvZmYgPSBtYXRj
aFswXTsKKyAgdmFyIGNweWxlbiA9IFBlcnZhc2l2ZXMubWluKHMubGVuZ3RoIC0gc3Jjb2ZmIHwg
MCwgbGVuIC0gZHN0b2ZmIHwgMCk7CisgIGlmIChjcHlsZW4gPiAwKSB7CisgICAgQ2FtbF9zdHJp
bmcuY2FtbF9ibGl0X2J5dGVzKHMsIHNyY29mZiwgciwgZHN0b2ZmLCBjcHlsZW4pOworICB9Cisg
IHJldHVybiByOworfQorCitmdW5jdGlvbiBmaWxsKHMsIG9mcywgbGVuLCBjKSB7CisgIGlmIChv
ZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gKHMubGVuZ3RoIC0gbGVuIHwgMCkpIHsKKyAgICB0
aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVu
dCwKKyAgICAgICAgICAiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsIgorICAgICAgICBdOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5jYW1sX2ZpbGxfc3RyaW5nKHMsIG9m
cywgbGVuLCBjKTsKKyAgfQorfQorCitmdW5jdGlvbiBibGl0KHMxLCBvZnMxLCBzMiwgb2ZzMiwg
bGVuKSB7CisgIGlmIChsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiAoczEubGVuZ3RoIC0g
bGVuIHwgMCkgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IChzMi5sZW5ndGggLSBsZW4gfCAwKSkgewor
ICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2Fy
Z3VtZW50LAorICAgICAgICAgICJCeXRlcy5ibGl0IgorICAgICAgICBdOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMoczEsIG9mczEsIHMyLCBv
ZnMyLCBsZW4pOworICB9Cit9CisKK2Z1bmN0aW9uIGJsaXRfc3RyaW5nKHMxLCBvZnMxLCBzMiwg
b2ZzMiwgbGVuKSB7CisgIGlmIChsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiAoczEubGVu
Z3RoIC0gbGVuIHwgMCkgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IChzMi5sZW5ndGggLSBsZW4gfCAw
KSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZh
bGlkX2FyZ3VtZW50LAorICAgICAgICAgICJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5n
IgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5jYW1s
X2JsaXRfc3RyaW5nKHMxLCBvZnMxLCBzMiwgb2ZzMiwgbGVuKTsKKyAgfQorfQorCitmdW5jdGlv
biBpdGVyKGYsIGEpIHsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBhLmxlbmd0aCAtIDEg
fCAwOyBpIDw9IGlfZmluaXNoOyArK2kpeworICAgIEN1cnJ5Ll8xKGYsIGFbaV0pOworICB9Cisg
IHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGl0ZXJpKGYsIGEpIHsKKyAgZm9yKHZh
ciBpID0gMCAsaV9maW5pc2ggPSBhLmxlbmd0aCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kp
eworICAgIEN1cnJ5Ll8yKGYsIGksIGFbaV0pOworICB9CisgIHJldHVybiAvKiAoKSAqLzA7Cit9
CisKK2Z1bmN0aW9uIGNvbmNhdChzZXAsIGwpIHsKKyAgaWYgKGwpIHsKKyAgICB2YXIgaGQgPSBs
WzBdOworICAgIHZhciBudW0gPSBbMF07CisgICAgdmFyIGxlbiA9IFswXTsKKyAgICBMaXN0Lml0
ZXIoZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICBudW1bMF0gPSBudW1bMF0gKyAxIHwgMDsKKyAg
ICAgICAgICBsZW5bMF0gPSBsZW5bMF0gKyBzLmxlbmd0aCB8IDA7CisgICAgICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICAgICAgfSwgbCk7CisgICAgdmFyIHIgPSBDYW1sX3N0cmluZy5jYW1s
X2NyZWF0ZV9zdHJpbmcobGVuWzBdICsgQ2FtbF9pbnQzMi5pbXVsKHNlcC5sZW5ndGgsIG51bVsw
XSAtIDEgfCAwKSB8IDApOworICAgIENhbWxfc3RyaW5nLmNhbWxfYmxpdF9ieXRlcyhoZCwgMCwg
ciwgMCwgaGQubGVuZ3RoKTsKKyAgICB2YXIgcG9zID0gW2hkLmxlbmd0aF07CisgICAgTGlzdC5p
dGVyKGZ1bmN0aW9uIChzKSB7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X2J5dGVz
KHNlcCwgMCwgciwgcG9zWzBdLCBzZXAubGVuZ3RoKTsKKyAgICAgICAgICBwb3NbMF0gPSBwb3Nb
MF0gKyBzZXAubGVuZ3RoIHwgMDsKKyAgICAgICAgICBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0
ZXMocywgMCwgciwgcG9zWzBdLCBzLmxlbmd0aCk7CisgICAgICAgICAgcG9zWzBdID0gcG9zWzBd
ICsgcy5sZW5ndGggfCAwOworICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgIH0s
IGxbMV0pOworICAgIHJldHVybiByOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBlbXB0eTsK
KyAgfQorfQorCitmdW5jdGlvbiBjYXQoYSwgYikgeworICByZXR1cm4gYS5jb25jYXQoYik7Cit9
CisKK2Z1bmN0aW9uIGlzX3NwYWNlKHBhcmFtKSB7CisgIHZhciBzd2l0Y2hlciA9IHBhcmFtIC0g
OSB8IDA7CisgIGlmIChzd2l0Y2hlciA+IDQgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgaWYgKHN3
aXRjaGVyICE9PSAyMykgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgfQorICB9CisgIGVsc2UgaWYg
KHN3aXRjaGVyICE9PSAyKSB7CisgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gdHJpbShzKSB7
CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIGkgPSAwOworICB3aGlsZShpIDwgbGVuICYm
IGlzX3NwYWNlKHNbaV0pKSB7CisgICAgaSA9IGkgKyAxIHwgMDsKKyAgfTsKKyAgdmFyIGogPSBs
ZW4gLSAxIHwgMDsKKyAgd2hpbGUoaiA+PSBpICYmIGlzX3NwYWNlKHNbal0pKSB7CisgICAgaiA9
IGogLSAxIHwgMDsKKyAgfTsKKyAgaWYgKGogPj0gaSkgeworICAgIHJldHVybiBzdWIocywgaSwg
KGogLSBpIHwgMCkgKyAxIHwgMCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGVtcHR5Owor
ICB9Cit9CisKK2Z1bmN0aW9uIGVzY2FwZWQocykgeworICB2YXIgbiA9IDA7CisgIGZvcih2YXIg
aSA9IDAgLGlfZmluaXNoID0gcy5sZW5ndGggLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsK
KyAgICB2YXIgbWF0Y2ggPSBzW2ldOworICAgIHZhciAkanM7CisgICAgaWYgKG1hdGNoID49IDMy
KSB7CisgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDM0IHwgMDsKKyAgICAgICRqcyA9IHN3
aXRjaGVyID4gNTggfHwgc3dpdGNoZXIgPCAwID8gKAorICAgICAgICAgIHN3aXRjaGVyID49IDkz
ID8gNCA6IDEKKyAgICAgICAgKSA6ICgKKyAgICAgICAgICBzd2l0Y2hlciA+IDU3IHx8IHN3aXRj
aGVyIDwgMSA/IDIgOiAxCisgICAgICAgICk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgJGpz
ID0gbWF0Y2ggPj0gMTEgPyAoCisgICAgICAgICAgbWF0Y2ggIT09IDEzID8gNCA6IDIKKyAgICAg
ICAgKSA6ICgKKyAgICAgICAgICBtYXRjaCA+PSA4ID8gMiA6IDQKKyAgICAgICAgKTsKKyAgICB9
CisgICAgbiA9IG4gKyAkanMgfCAwOworICB9CisgIGlmIChuID09PSBzLmxlbmd0aCkgeworICAg
IHJldHVybiBjb3B5KHMpOworICB9CisgIGVsc2UgeworICAgIHZhciBzJHByaW1lID0gQ2FtbF9z
dHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKG4pOworICAgIG4gPSAwOworICAgIGZvcih2YXIgaSQx
ID0gMCAsaV9maW5pc2gkMSA9IHMubGVuZ3RoIC0gMSB8IDA7IGkkMSA8PSBpX2ZpbmlzaCQxOyAr
K2kkMSl7CisgICAgICB2YXIgYyA9IHNbaSQxXTsKKyAgICAgIHZhciBleGl0ID0gMDsKKyAgICAg
IGlmIChjID49IDM1KSB7CisgICAgICAgIGlmIChjICE9PSA5MikgeworICAgICAgICAgIGlmIChj
ID49IDEyNykgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgcyRwcmltZVtuXSA9IGM7CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICB9CisgICAg
ICB9CisgICAgICBlbHNlIGlmIChjID49IDMyKSB7CisgICAgICAgIGlmIChjID49IDM0KSB7Cisg
ICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
cyRwcmltZVtuXSA9IGM7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGMgPj0g
MTQpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
c3dpdGNoIChjKSB7CisgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgIHMkcHJpbWVb
bl0gPSAvKiAiXFwiICovOTI7CisgICAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7CisgICAgICAg
ICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiYiIgKi85ODsKKyAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiXFwiICov
OTI7CisgICAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7CisgICAgICAgICAgICAgIHMkcHJpbWVb
bl0gPSAvKiAidCIgKi8xMTY7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2Ug
MTAgOiAKKyAgICAgICAgICAgICAgcyRwcmltZVtuXSA9IC8qICJcXCIgKi85MjsKKyAgICAgICAg
ICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgICAgICAgcyRwcmltZVtuXSA9IC8qICJuIiAq
LzExMDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAwIDogCisgICAgICAg
ICAgY2FzZSAxIDogCisgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgY2FzZSAzIDogCisg
ICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgY2FzZSA2
IDogCisgICAgICAgICAgY2FzZSA3IDogCisgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAg
IGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgcyRwcmltZVtuXSA9IC8qICJc
XCIgKi85MjsKKyAgICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgICAgICAgcyRw
cmltZVtuXSA9IC8qICJyIiAqLzExNDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHN3aXRjaCAoZXhpdCkgeworICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiXFwiICovOTI7CisgICAgICAgICAg
ICBuID0gbiArIDEgfCAwOworICAgICAgICAgICAgcyRwcmltZVtuXSA9IDQ4ICsgKGMgLyAxMDAg
fCAwKSB8IDA7CisgICAgICAgICAgICBuID0gbiArIDEgfCAwOworICAgICAgICAgICAgcyRwcmlt
ZVtuXSA9IDQ4ICsgKGMgLyAxMCB8IDApICUgMTAgfCAwOworICAgICAgICAgICAgbiA9IG4gKyAx
IHwgMDsKKyAgICAgICAgICAgIHMkcHJpbWVbbl0gPSA0OCArIGMgJSAxMCB8IDA7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICBzJHByaW1lW25dID0g
LyogIlxcIiAqLzkyOworICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgICAgIHMk
cHJpbWVbbl0gPSBjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgfQorICAg
ICAgbiA9IG4gKyAxIHwgMDsKKyAgICB9CisgICAgcmV0dXJuIHMkcHJpbWU7CisgIH0KK30KKwor
ZnVuY3Rpb24gbWFwKGYsIHMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsKKyAgaWYgKGwpIHsKKyAg
ICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhsKTsKKyAgICBmb3IodmFy
IGkgPSAwICxpX2ZpbmlzaCA9IGwgLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICAg
IHJbaV0gPSBDdXJyeS5fMShmLCBzW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIHI7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIHM7CisgIH0KK30KKworZnVuY3Rpb24gbWFwaShmLCBzKSB7Cisg
IHZhciBsID0gcy5sZW5ndGg7CisgIGlmIChsKSB7CisgICAgdmFyIHIgPSBDYW1sX3N0cmluZy5j
YW1sX2NyZWF0ZV9zdHJpbmcobCk7CisgICAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsIC0g
MSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgICByW2ldID0gQ3VycnkuXzIoZiwgaSwg
c1tpXSk7CisgICAgfQorICAgIHJldHVybiByOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBz
OworICB9Cit9CisKK2Z1bmN0aW9uIHVwcGVyY2FzZShzKSB7CisgIHJldHVybiBtYXAoQ2hhci51
cHBlcmNhc2UsIHMpOworfQorCitmdW5jdGlvbiBsb3dlcmNhc2UocykgeworICByZXR1cm4gbWFw
KENoYXIubG93ZXJjYXNlLCBzKTsKK30KKworZnVuY3Rpb24gYXBwbHkxKGYsIHMpIHsKKyAgaWYg
KHMubGVuZ3RoKSB7CisgICAgdmFyIHIgPSBjb3B5KHMpOworICAgIHJbMF0gPSBDdXJyeS5fMShm
LCBzWzBdKTsKKyAgICByZXR1cm4gcjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gczsKKyAg
fQorfQorCitmdW5jdGlvbiBjYXBpdGFsaXplKHMpIHsKKyAgcmV0dXJuIGFwcGx5MShDaGFyLnVw
cGVyY2FzZSwgcyk7Cit9CisKK2Z1bmN0aW9uIHVuY2FwaXRhbGl6ZShzKSB7CisgIHJldHVybiBh
cHBseTEoQ2hhci5sb3dlcmNhc2UsIHMpOworfQorCitmdW5jdGlvbiBpbmRleF9yZWMocywgbGlt
LCBfaSwgYykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGkgPSBfaTsKKyAgICBpZiAoaSA+
PSBsaW0pIHsKKyAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsK
KyAgICB9CisgICAgZWxzZSBpZiAoc1tpXSA9PT0gYykgeworICAgICAgcmV0dXJuIGk7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICBjb250aW51ZSA7Cisg
ICAgICAKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGluZGV4KHMsIGMpIHsKKyAgcmV0dXJu
IGluZGV4X3JlYyhzLCBzLmxlbmd0aCwgMCwgYyk7Cit9CisKK2Z1bmN0aW9uIGluZGV4X2Zyb20o
cywgaSwgYykgeworICB2YXIgbCA9IHMubGVuZ3RoOworICBpZiAoaSA8IDAgfHwgaSA+IGwpIHsK
KyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9h
cmd1bWVudCwKKyAgICAgICAgICAiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9t
IgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBpbmRleF9yZWMocywgbCwg
aSwgYyk7CisgIH0KK30KKworZnVuY3Rpb24gcmluZGV4X3JlYyhzLCBfaSwgYykgeworICB3aGls
ZSh0cnVlKSB7CisgICAgdmFyIGkgPSBfaTsKKyAgICBpZiAoaSA8IDApIHsKKyAgICAgIHRocm93
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAgICB9CisgICAgZWxzZSBpZiAo
c1tpXSA9PT0gYykgeworICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
X2kgPSBpIC0gMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgIH07Cit9
CisKK2Z1bmN0aW9uIHJpbmRleChzLCBjKSB7CisgIHJldHVybiByaW5kZXhfcmVjKHMsIHMubGVu
Z3RoIC0gMSB8IDAsIGMpOworfQorCitmdW5jdGlvbiByaW5kZXhfZnJvbShzLCBpLCBjKSB7Cisg
IGlmIChpIDwgLTEgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJTdHJp
bmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbSIKKyAgICAgICAgXTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gcmluZGV4X3JlYyhzLCBpLCBjKTsKKyAgfQorfQorCitmdW5jdGlv
biBjb250YWluc19mcm9tKHMsIGksIGMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsKKyAgaWYgKGkg
PCAwIHx8IGkgPiBsKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIlN0cmluZy5jb250YWluc19mcm9t
IC8gQnl0ZXMuY29udGFpbnNfZnJvbSIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICB0
cnkgeworICAgICAgaW5kZXhfcmVjKHMsIGwsIGksIGMpOworICAgICAgcmV0dXJuIC8qIHRydWUg
Ki8xOworICAgIH0KKyAgICBjYXRjaCAoZXhuKXsKKyAgICAgIGlmIChleG4gPT09IENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkgeworICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8w
OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAg
ICB9CisgIH0KK30KKworZnVuY3Rpb24gY29udGFpbnMocywgYykgeworICByZXR1cm4gY29udGFp
bnNfZnJvbShzLCAwLCBjKTsKK30KKworZnVuY3Rpb24gcmNvbnRhaW5zX2Zyb20ocywgaSwgYykg
eworICBpZiAoaSA8IDAgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsKKyAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJT
dHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbSIKKyAgICAgICAgXTsK
KyAgfQorICBlbHNlIHsKKyAgICB0cnkgeworICAgICAgcmluZGV4X3JlYyhzLCBpLCBjKTsKKyAg
ICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICB9CisgICAgY2F0Y2ggKGV4bil7CisgICAgICBp
ZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgICAg
cmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJv
dyBleG47CisgICAgICB9CisgICAgfQorICB9Cit9CisKK3ZhciBjb21wYXJlID0gQ2FtbF9vYmou
Y2FtbF9jb21wYXJlOworCit2YXIgdW5zYWZlX3RvX3N0cmluZyA9IENhbWxfc3RyaW5nLmJ5dGVz
X3RvX3N0cmluZzsKKwordmFyIHVuc2FmZV9vZl9zdHJpbmcgPSBDYW1sX3N0cmluZy5ieXRlc19v
Zl9zdHJpbmc7CisKK2V4cG9ydHMubWFrZSAgICAgICAgICAgICA9IG1ha2U7CitleHBvcnRzLmlu
aXQgICAgICAgICAgICAgPSBpbml0OworZXhwb3J0cy5lbXB0eSAgICAgICAgICAgID0gZW1wdHk7
CitleHBvcnRzLmNvcHkgICAgICAgICAgICAgPSBjb3B5OworZXhwb3J0cy5vZl9zdHJpbmcgICAg
ICAgID0gb2Zfc3RyaW5nOworZXhwb3J0cy50b19zdHJpbmcgICAgICAgID0gdG9fc3RyaW5nOwor
ZXhwb3J0cy5zdWIgICAgICAgICAgICAgID0gc3ViOworZXhwb3J0cy5zdWJfc3RyaW5nICAgICAg
ID0gc3ViX3N0cmluZzsKK2V4cG9ydHMuZXh0ZW5kICAgICAgICAgICA9IGV4dGVuZDsKK2V4cG9y
dHMuZmlsbCAgICAgICAgICAgICA9IGZpbGw7CitleHBvcnRzLmJsaXQgICAgICAgICAgICAgPSBi
bGl0OworZXhwb3J0cy5ibGl0X3N0cmluZyAgICAgID0gYmxpdF9zdHJpbmc7CitleHBvcnRzLmNv
bmNhdCAgICAgICAgICAgPSBjb25jYXQ7CitleHBvcnRzLmNhdCAgICAgICAgICAgICAgPSBjYXQ7
CitleHBvcnRzLml0ZXIgICAgICAgICAgICAgPSBpdGVyOworZXhwb3J0cy5pdGVyaSAgICAgICAg
ICAgID0gaXRlcmk7CitleHBvcnRzLm1hcCAgICAgICAgICAgICAgPSBtYXA7CitleHBvcnRzLm1h
cGkgICAgICAgICAgICAgPSBtYXBpOworZXhwb3J0cy50cmltICAgICAgICAgICAgID0gdHJpbTsK
K2V4cG9ydHMuZXNjYXBlZCAgICAgICAgICA9IGVzY2FwZWQ7CitleHBvcnRzLmluZGV4ICAgICAg
ICAgICAgPSBpbmRleDsKK2V4cG9ydHMucmluZGV4ICAgICAgICAgICA9IHJpbmRleDsKK2V4cG9y
dHMuaW5kZXhfZnJvbSAgICAgICA9IGluZGV4X2Zyb207CitleHBvcnRzLnJpbmRleF9mcm9tICAg
ICAgPSByaW5kZXhfZnJvbTsKK2V4cG9ydHMuY29udGFpbnMgICAgICAgICA9IGNvbnRhaW5zOwor
ZXhwb3J0cy5jb250YWluc19mcm9tICAgID0gY29udGFpbnNfZnJvbTsKK2V4cG9ydHMucmNvbnRh
aW5zX2Zyb20gICA9IHJjb250YWluc19mcm9tOworZXhwb3J0cy51cHBlcmNhc2UgICAgICAgID0g
dXBwZXJjYXNlOworZXhwb3J0cy5sb3dlcmNhc2UgICAgICAgID0gbG93ZXJjYXNlOworZXhwb3J0
cy5jYXBpdGFsaXplICAgICAgID0gY2FwaXRhbGl6ZTsKK2V4cG9ydHMudW5jYXBpdGFsaXplICAg
ICA9IHVuY2FwaXRhbGl6ZTsKK2V4cG9ydHMuY29tcGFyZSAgICAgICAgICA9IGNvbXBhcmU7Citl
eHBvcnRzLnVuc2FmZV90b19zdHJpbmcgPSB1bnNhZmVfdG9fc3RyaW5nOworZXhwb3J0cy51bnNh
ZmVfb2Zfc3RyaW5nID0gdW5zYWZlX29mX3N0cmluZzsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisv
Ly8vLy8vLyBlbmQgb2YgYnl0ZXMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOwor
wqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9hcnJheSddID0gZnVuY3Rpb24oKSB7CivCoCDC
oCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9hcnJheS5qcyAvLy8v
Ly8vLworJ3VzZSBzdHJpY3QnOworCisKK2Z1bmN0aW9uIGNhbWxfYXJyYXlfc3ViKHgsIG9mZnNl
dCwgbGVuKSB7CisgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkobGVuKTsKKyAgdmFyIGogPSAwOwor
ICB2YXIgaSA9IG9mZnNldDsKKyAgd2hpbGUoaiA8IGxlbikgeworICAgIHJlc3VsdFtqXSA9IHhb
aV07CisgICAgaiA9IGogKyAxIHwgMDsKKyAgICBpID0gaSArIDEgfCAwOworICB9OworICByZXR1
cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBsZW4oX2FjYywgX2wpIHsKKyAgd2hpbGUodHJ1ZSkg
eworICAgIHZhciBsID0gX2w7CisgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgaWYgKGwpIHsKKyAg
ICAgIF9sID0gbFsxXTsKKyAgICAgIF9hY2MgPSBsWzBdLmxlbmd0aCArIGFjYyB8IDA7CisgICAg
ICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gYWNj
OworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmlsbChhcnIsIF9pLCBfbCkgeworICB3aGls
ZSh0cnVlKSB7CisgICAgdmFyIGwgPSBfbDsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChsKSB7
CisgICAgICB2YXIgeCA9IGxbMF07CisgICAgICB2YXIgbCQxID0geC5sZW5ndGg7CisgICAgICB2
YXIgayA9IGk7CisgICAgICB2YXIgaiA9IDA7CisgICAgICB3aGlsZShqIDwgbCQxKSB7CisgICAg
ICAgIGFycltrXSA9IHhbal07CisgICAgICAgIGsgPSBrICsgMSB8IDA7CisgICAgICAgIGogPSBq
ICsgMSB8IDA7CisgICAgICB9OworICAgICAgX2wgPSBsWzFdOworICAgICAgX2kgPSBrOworICAg
ICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwp
IHsKKyAgdmFyIHYgPSBsZW4oMCwgbCk7CisgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkodik7Cisg
IGZpbGwocmVzdWx0LCAwLCBsKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gY2Ft
bF9tYWtlX3ZlY3QobGVuLCBpbml0KSB7CisgIHZhciBiID0gbmV3IEFycmF5KGxlbik7CisgIGZv
cih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7
CisgICAgYltpXSA9IGluaXQ7CisgIH0KKyAgcmV0dXJuIGI7Cit9CisKK2Z1bmN0aW9uIGNhbWxf
YXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7CisgIGlmIChpMiA8PSBpMSkgeworICAg
IGZvcih2YXIgaiA9IDAgLGpfZmluaXNoID0gbGVuIC0gMSB8IDA7IGogPD0gal9maW5pc2g7ICsr
ail7CisgICAgICBhMltqICsgaTIgfCAwXSA9IGExW2ogKyBpMSB8IDBdOworICAgIH0KKyAgICBy
ZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIGZvcih2YXIgaiQxID0gbGVuIC0g
MSB8IDA7IGokMSA+PSAwOyAtLWokMSl7CisgICAgICBhMltqJDEgKyBpMiB8IDBdID0gYTFbaiQx
ICsgaTEgfCAwXTsKKyAgICB9CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQorfQorCitleHBv
cnRzLmNhbWxfYXJyYXlfc3ViICAgID0gY2FtbF9hcnJheV9zdWI7CitleHBvcnRzLmNhbWxfYXJy
YXlfY29uY2F0ID0gY2FtbF9hcnJheV9jb25jYXQ7CitleHBvcnRzLmNhbWxfbWFrZV92ZWN0ICAg
ID0gY2FtbF9tYWtlX3ZlY3Q7CitleHBvcnRzLmNhbWxfYXJyYXlfYmxpdCAgID0gY2FtbF9hcnJh
eV9ibGl0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX2FycmF5
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ2NhbWxfYnVpbHRpbl9leGNlcHRpb25zJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBl
eHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5q
cyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisKK3ZhciBvdXRfb2ZfbWVtb3J5ID0gLyogdHVw
bGUgKi9bCisgICJPdXRfb2ZfbWVtb3J5IiwKKyAgMAorXTsKKwordmFyIHN5c19lcnJvciA9IC8q
IHR1cGxlICovWworICAiU3lzX2Vycm9yIiwKKyAgLTEKK107CisKK3ZhciBmYWlsdXJlID0gLyog
dHVwbGUgKi9bCisgICJGYWlsdXJlIiwKKyAgLTIKK107CisKK3ZhciBpbnZhbGlkX2FyZ3VtZW50
ID0gLyogdHVwbGUgKi9bCisgICJJbnZhbGlkX2FyZ3VtZW50IiwKKyAgLTMKK107CisKK3ZhciBl
bmRfb2ZfZmlsZSA9IC8qIHR1cGxlICovWworICAiRW5kX29mX2ZpbGUiLAorICAtNAorXTsKKwor
dmFyIGRpdmlzaW9uX2J5X3plcm8gPSAvKiB0dXBsZSAqL1sKKyAgIkRpdmlzaW9uX2J5X3plcm8i
LAorICAtNQorXTsKKwordmFyIG5vdF9mb3VuZCA9IC8qIHR1cGxlICovWworICAiTm90X2ZvdW5k
IiwKKyAgLTYKK107CisKK3ZhciBtYXRjaF9mYWlsdXJlID0gLyogdHVwbGUgKi9bCisgICJNYXRj
aF9mYWlsdXJlIiwKKyAgLTcKK107CisKK3ZhciBzdGFja19vdmVyZmxvdyA9IC8qIHR1cGxlICov
WworICAiU3RhY2tfb3ZlcmZsb3ciLAorICAtOAorXTsKKwordmFyIHN5c19ibG9ja2VkX2lvID0g
LyogdHVwbGUgKi9bCisgICJTeXNfYmxvY2tlZF9pbyIsCisgIC05CitdOworCit2YXIgYXNzZXJ0
X2ZhaWx1cmUgPSAvKiB0dXBsZSAqL1sKKyAgIkFzc2VydF9mYWlsdXJlIiwKKyAgLTEwCitdOwor
Cit2YXIgdW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSAvKiB0dXBsZSAqL1sKKyAgIlVuZGVm
aW5lZF9yZWN1cnNpdmVfbW9kdWxlIiwKKyAgLTExCitdOworCitleHBvcnRzLm91dF9vZl9tZW1v
cnkgICAgICAgICAgICAgID0gb3V0X29mX21lbW9yeTsKK2V4cG9ydHMuc3lzX2Vycm9yICAgICAg
ICAgICAgICAgICAgPSBzeXNfZXJyb3I7CitleHBvcnRzLmZhaWx1cmUgICAgICAgICAgICAgICAg
ICAgID0gZmFpbHVyZTsKK2V4cG9ydHMuaW52YWxpZF9hcmd1bWVudCAgICAgICAgICAgPSBpbnZh
bGlkX2FyZ3VtZW50OworZXhwb3J0cy5lbmRfb2ZfZmlsZSAgICAgICAgICAgICAgICA9IGVuZF9v
Zl9maWxlOworZXhwb3J0cy5kaXZpc2lvbl9ieV96ZXJvICAgICAgICAgICA9IGRpdmlzaW9uX2J5
X3plcm87CitleHBvcnRzLm5vdF9mb3VuZCAgICAgICAgICAgICAgICAgID0gbm90X2ZvdW5kOwor
ZXhwb3J0cy5tYXRjaF9mYWlsdXJlICAgICAgICAgICAgICA9IG1hdGNoX2ZhaWx1cmU7CitleHBv
cnRzLnN0YWNrX292ZXJmbG93ICAgICAgICAgICAgID0gc3RhY2tfb3ZlcmZsb3c7CitleHBvcnRz
LnN5c19ibG9ja2VkX2lvICAgICAgICAgICAgID0gc3lzX2Jsb2NrZWRfaW87CitleHBvcnRzLmFz
c2VydF9mYWlsdXJlICAgICAgICAgICAgID0gYXNzZXJ0X2ZhaWx1cmU7CitleHBvcnRzLnVuZGVm
aW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gdW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGU7CisvKiBO
byBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ2NhbWxfYnl0ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsK
Ky8vLy8vLy8vIHN0YXJ0IG9mIGNhbWxfYnl0ZXMuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsK
KwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBnZXQocywgaSkgeworICBpZiAoaSA8IDAgfHwgaSA+
PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIgor
ICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBzW2ldOworICB9Cit9CisKK2V4
cG9ydHMuZ2V0ID0gZ2V0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBj
YW1sX2J5dGVzLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKwor
ICBfcmVnaXN0cnlbJ2NhbWxfZXhjZXB0aW9ucyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQg
ZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9leGNlcHRpb25zLmpzIC8vLy8v
Ly8vCisndXNlIHN0cmljdCc7CisKKwordmFyIGlkID0gWzBdOworCitmdW5jdGlvbiBjYW1sX3Nl
dF9vb19pZChiKSB7CisgIGJbMV0gPSBpZFswXTsKKyAgaWRbMF0gKz0gMTsKKyAgcmV0dXJuIGI7
Cit9CisKK2Z1bmN0aW9uIGdldF9pZCgpIHsKKyAgaWRbMF0gKz0gMTsKKyAgcmV0dXJuIGlkWzBd
OworfQorCitmdW5jdGlvbiBjcmVhdGUoc3RyKSB7CisgIHZhciB2XzAwMSA9IGdldF9pZCgvKiAo
KSAqLzApOworICB2YXIgdiA9IC8qIHR1cGxlICovWworICAgIHN0ciwKKyAgICB2XzAwMQorICBd
OworICB2LnRhZyA9IDI0ODsKKyAgcmV0dXJuIHY7Cit9CisKK2V4cG9ydHMuY2FtbF9zZXRfb29f
aWQgPSBjYW1sX3NldF9vb19pZDsKK2V4cG9ydHMuZ2V0X2lkICAgICAgICAgPSBnZXRfaWQ7Citl
eHBvcnRzLmNyZWF0ZSAgICAgICAgID0gY3JlYXRlOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8v
Ly8vLy8vIGVuZCBvZiBjYW1sX2V4Y2VwdGlvbnMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBl
eHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9mbG9hdCddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9mbG9h
dC5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCisKK2Z1bmN0aW9uIGNhbWxfaW50MzJfZmxv
YXRfb2ZfYml0cyh4KSB7CisgIHZhciBpbnQzMiA9IG5ldyBJbnQzMkFycmF5KC8qIGFycmF5ICov
W3hdKTsKKyAgdmFyIGZsb2F0MzIgPSBuZXcgRmxvYXQzMkFycmF5KGludDMyLmJ1ZmZlcik7Cisg
IHJldHVybiBmbG9hdDMyWzBdOworfQorCitmdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxv
YXQoeCkgeworICB2YXIgZmxvYXQzMiA9IG5ldyBGbG9hdDMyQXJyYXkoLyogZmxvYXQgYXJyYXkg
Ki9beF0pOworICByZXR1cm4gbmV3IEludDMyQXJyYXkoZmxvYXQzMi5idWZmZXIpWzBdOworfQor
CitmdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0KHgpIHsKKyAgaWYgKGlzRmluaXRlKHgpKSB7
CisgICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4KSB7CisgICAg
ICByZXR1cm4gLyogRlBfbm9ybWFsICovMDsKKyAgICB9CisgICAgZWxzZSBpZiAoeCAhPT0gMCkg
eworICAgICAgcmV0dXJuIC8qIEZQX3N1Ym5vcm1hbCAqLzE7CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgcmV0dXJuIC8qIEZQX3plcm8gKi8yOworICAgIH0KKyAgfQorICBlbHNlIGlmIChpc05h
Tih4KSkgeworICAgIHJldHVybiAvKiBGUF9uYW4gKi80OworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiBGUF9pbmZpbml0ZSAqLzM7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9tb2RmX2Zs
b2F0KHgpIHsKKyAgaWYgKGlzRmluaXRlKHgpKSB7CisgICAgdmFyIG5lZyA9ICsoMSAvIHggPCAw
KTsKKyAgICB2YXIgeCQxID0gTWF0aC5hYnMoeCk7CisgICAgdmFyIGkgPSBNYXRoLmZsb29yKHgk
MSk7CisgICAgdmFyIGYgPSB4JDEgLSBpOworICAgIGlmIChuZWcpIHsKKyAgICAgIHJldHVybiAv
KiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgLWYsCisgICAgICAgICAgICAgIC1pCisgICAgICAg
ICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICAgZiwKKyAgICAgICAgICAgICAgaQorICAgICAgICAgICAgXTsKKyAgICB9Cisg
IH0KKyAgZWxzZSBpZiAoaXNOYU4oeCkpIHsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICBOYU4sCisgICAgICAgICAgICBOYU4KKyAgICAgICAgICBdOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIDEgLyB4LAorICAgICAgICAg
ICAgeAorICAgICAgICAgIF07CisgIH0KK30KKwordmFyIGNhbWxfbGRleHBfZmxvYXQgPSAoIGZ1
bmN0aW9uICh4LGV4cCkgeworICAgIGV4cCB8PSAwOworICAgIGlmIChleHAgPiAxMDIzKSB7Cisg
ICAgICAgIGV4cCAtPSAxMDIzOworICAgICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpOworICAg
ICAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5vcm1hbAorICAgICAg
ICAgICAgZXhwIC09IDEwMjM7CisgICAgICAgICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpOwor
ICAgICAgICB9CisgICAgfQorICAgIGlmIChleHAgPCAtMTAyMykgeworICAgICAgICBleHAgKz0g
MTAyMzsKKyAgICAgICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7CisgICAgfQorICAgIHggKj0g
TWF0aC5wb3coMiwgZXhwKTsKKyAgICByZXR1cm4geDsKK30KKyk7CisKK3ZhciBjYW1sX2ZyZXhw
X2Zsb2F0ID0gKGZ1bmN0aW9uICh4KSB7CisgICAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4
KSkgcmV0dXJuIFsgeCwgMF07CisgICAgdmFyIG5lZyA9IHggPCAwOworICAgIGlmIChuZWcpIHgg
PSAtIHg7CisgICAgdmFyIGV4cCA9IE1hdGguZmxvb3IoTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSkg
KyAxOworICAgIHggKj0gTWF0aC5wb3coMiwtZXhwKTsKKyAgICBpZiAoeCA8IDAuNSkgeyB4ICo9
IDI7IGV4cCAtPSAxOyB9CisgICAgaWYgKG5lZykgeCA9IC0geDsKKyAgICByZXR1cm4gW3gsIGV4
cF07Cit9CispOworCitmdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUoeCwgeSkgeworICBpZiAo
eCA9PT0geSkgeworICAgIHJldHVybiAwOworICB9CisgIGVsc2UgaWYgKHggPCB5KSB7CisgICAg
cmV0dXJuIC0xOworICB9CisgIGVsc2UgaWYgKHggPiB5IHx8IHggPT09IHgpIHsKKyAgICByZXR1
cm4gMTsKKyAgfQorICBlbHNlIGlmICh5ID09PSB5KSB7CisgICAgcmV0dXJuIC0xOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfY29weXNpZ25f
ZmxvYXQoeCwgeSkgeworICB2YXIgeCQxID0gTWF0aC5hYnMoeCk7CisgIHZhciB5JDEgPSB5ID09
PSAwID8gMSAvIHkgOiB5OworICBpZiAoeSQxIDwgMCkgeworICAgIHJldHVybiAteCQxOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiB4JDE7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9leHBt
MV9mbG9hdCh4KSB7CisgIHZhciB5ID0gTWF0aC5leHAoeCk7CisgIHZhciB6ID0geSAtIDE7Cisg
IGlmIChNYXRoLmFicyh4KSA+IDEpIHsKKyAgICByZXR1cm4gejsKKyAgfQorICBlbHNlIGlmICh6
ID09PSAwKSB7CisgICAgcmV0dXJuIHg7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHggKiB6
IC8gTWF0aC5sb2coeSk7CisgIH0KK30KKwordmFyIGNhbWxfaHlwb3RfZmxvYXQgPSAoIGZ1bmN0
aW9uICh4LCB5KSB7CisgICAgdmFyIHgwID0gTWF0aC5hYnMoeCksIHkwID0gTWF0aC5hYnMoeSk7
CisgICAgdmFyIGEgPSBNYXRoLm1heCh4MCwgeTApLCBiID0gTWF0aC5taW4oeDAseTApIC8gKGE/
YToxKTsKKyAgICByZXR1cm4gYSAqIE1hdGguc3FydCgxICsgYipiKTsKK30KKyk7CisKK3ZhciBj
YW1sX2xvZzEwX2Zsb2F0ID0gKCBmdW5jdGlvbiAgKHgpIHsgCisgICByZXR1cm4gTWF0aC5MT0cx
MEUgKiBNYXRoLmxvZyh4KTsgfQorKTsKKworZXhwb3J0cy5jYW1sX2ludDMyX2Zsb2F0X29mX2Jp
dHMgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHM7CitleHBvcnRzLmNhbWxfaW50MzJfYml0c19v
Zl9mbG9hdCA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdDsKK2V4cG9ydHMuY2FtbF9jbGFzc2lm
eV9mbG9hdCAgICAgID0gY2FtbF9jbGFzc2lmeV9mbG9hdDsKK2V4cG9ydHMuY2FtbF9tb2RmX2Zs
b2F0ICAgICAgICAgID0gY2FtbF9tb2RmX2Zsb2F0OworZXhwb3J0cy5jYW1sX2xkZXhwX2Zsb2F0
ICAgICAgICAgPSBjYW1sX2xkZXhwX2Zsb2F0OworZXhwb3J0cy5jYW1sX2ZyZXhwX2Zsb2F0ICAg
ICAgICAgPSBjYW1sX2ZyZXhwX2Zsb2F0OworZXhwb3J0cy5jYW1sX2Zsb2F0X2NvbXBhcmUgICAg
ICAgPSBjYW1sX2Zsb2F0X2NvbXBhcmU7CitleHBvcnRzLmNhbWxfY29weXNpZ25fZmxvYXQgICAg
ICA9IGNhbWxfY29weXNpZ25fZmxvYXQ7CitleHBvcnRzLmNhbWxfZXhwbTFfZmxvYXQgICAgICAg
ICA9IGNhbWxfZXhwbTFfZmxvYXQ7CitleHBvcnRzLmNhbWxfaHlwb3RfZmxvYXQgICAgICAgICA9
IGNhbWxfaHlwb3RfZmxvYXQ7CitleHBvcnRzLmNhbWxfbG9nMTBfZmxvYXQgICAgICAgICA9IGNh
bWxfbG9nMTBfZmxvYXQ7CisvKiBjYW1sX2xkZXhwX2Zsb2F0IE5vdCBhIHB1cmUgbW9kdWxlICov
CisvLy8vLy8vLyBlbmQgb2YgY2FtbF9mbG9hdC5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4
cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX2Zvcm1hdCddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9mb3Jt
YXQuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5ICAgICAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfaW50MzIgICAgICAgICAgICAgID0g
cmVxdWlyZSgiLi9jYW1sX2ludDMyIik7Cit2YXIgQ2FtbF9pbnQ2NCAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL2NhbWxfaW50NjQiKTsKK3ZhciBDYW1sX3V0aWxzICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF91dGlscyIpOwordmFyIENhbWxfc3RyaW5nICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVx
dWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBjYW1sX2ZhaWx3
aXRoKHMpIHsKKyAgdGhyb3cgWworICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWls
dXJlLAorICAgICAgICBzCisgICAgICBdOworfQorCitmdW5jdGlvbiBwYXJzZV9kaWdpdChjKSB7
CisgIGlmIChjID49IDY1KSB7CisgICAgaWYgKGMgPj0gOTcpIHsKKyAgICAgIGlmIChjID49IDEy
MykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIGMgLSA4NyB8IDA7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGMgPj0gOTEp
IHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gYyAt
IDU1IHwgMDsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoYyA+IDU3IHx8IGMgPCA0OCkgeworICAg
IHJldHVybiAtMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYyAtIC8qICIwIiAqLzQ4IHwg
MDsKKyAgfQorfQorCitmdW5jdGlvbiBpbnRfb2Zfc3RyaW5nX2Jhc2UocGFyYW0pIHsKKyAgc3dp
dGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6IAorICAgICAgICByZXR1cm4gODsKKyAgICBjYXNl
IDEgOiAKKyAgICAgICAgcmV0dXJuIDE2OworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4g
MTA7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAyOworICAgIAorICB9Cit9CisKK2Z1
bmN0aW9uIHBhcnNlX3NpZ25fYW5kX2Jhc2UocykgeworICB2YXIgc2lnbiA9IDE7CisgIHZhciBi
YXNlID0gLyogRGVjICovMjsKKyAgdmFyIGkgPSAwOworICBpZiAoc1tpXSA9PT0gIi0iKSB7Cisg
ICAgc2lnbiA9IC0xOworICAgIGkgPSBpICsgMSB8IDA7CisgIH0KKyAgdmFyIG1hdGNoID0gcy5j
aGFyQ29kZUF0KGkpOworICB2YXIgbWF0Y2gkMSA9IHMuY2hhckNvZGVBdChpICsgMSB8IDApOwor
ICBpZiAobWF0Y2ggPT09IDQ4KSB7CisgICAgaWYgKG1hdGNoJDEgPj0gODkpIHsKKyAgICAgIGlm
IChtYXRjaCQxICE9PSA5OCkgeworICAgICAgICBpZiAobWF0Y2gkMSAhPT0gMTExKSB7CisgICAg
ICAgICAgaWYgKG1hdGNoJDEgPT09IDEyMCkgeworICAgICAgICAgICAgYmFzZSA9IC8qIEhleCAq
LzE7CisgICAgICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgICAgIH0KKyAgICAgICAgICAK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBiYXNlID0gLyogT2N0ICovMDsK
KyAgICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgYmFzZSA9IC8qIEJpbiAqLzM7CisgICAgICAgIGkgPSBpICsgMiB8IDA7Cisg
ICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKG1hdGNoJDEgIT09IDY2KSB7CisgICAgICBpZiAo
bWF0Y2gkMSAhPT0gNzkpIHsKKyAgICAgICAgaWYgKG1hdGNoJDEgPj0gODgpIHsKKyAgICAgICAg
ICBiYXNlID0gLyogSGV4ICovMTsKKyAgICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGJhc2UgPSAvKiBPY3Qg
Ki8wOworICAgICAgICBpID0gaSArIDIgfCAwOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIGJhc2UgPSAvKiBCaW4gKi8zOworICAgICAgaSA9IGkgKyAyIHwgMDsKKyAgICB9Cisg
IH0KKyAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgIGksCisgICAgICAgICAgc2lnbiwK
KyAgICAgICAgICBiYXNlCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGNhbWxfaW50X29mX3N0
cmluZyhzKSB7CisgIHZhciBtYXRjaCA9IHBhcnNlX3NpZ25fYW5kX2Jhc2Uocyk7CisgIHZhciBp
ID0gbWF0Y2hbMF07CisgIHZhciBiYXNlID0gaW50X29mX3N0cmluZ19iYXNlKG1hdGNoWzJdKTsK
KyAgdmFyIHRocmVzaG9sZCA9IDQyOTQ5NjcyOTU7CisgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAg
dmFyIGMgPSBpIDwgbGVuID8gcy5jaGFyQ29kZUF0KGkpIDogLyogIlwwMDAiICovMDsKKyAgdmFy
IGQgPSBwYXJzZV9kaWdpdChjKTsKKyAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgeworICAgIHRo
cm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAg
ICAgICJpbnRfb2Zfc3RyaW5nIgorICAgICAgICBdOworICB9CisgIHZhciBhdXggPSBmdW5jdGlv
biAoX2FjYywgX2spIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgayA9IF9rOworICAg
ICAgdmFyIGFjYyA9IF9hY2M7CisgICAgICBpZiAoayA9PT0gbGVuKSB7CisgICAgICAgIHJldHVy
biBhY2M7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIGEgPSBzLmNoYXJDb2Rl
QXQoayk7CisgICAgICAgIGlmIChhID09PSAvKiAiXyIgKi85NSkgeworICAgICAgICAgIF9rID0g
ayArIDEgfCAwOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgdiA9IHBhcnNlX2RpZ2l0KGEpOworICAgICAg
ICAgIGlmICh2IDwgMCB8fCB2ID49IGJhc2UpIHsKKyAgICAgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICAg
ICAgICAgICAiaW50X29mX3N0cmluZyIKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBhY2MkMSA9IGJhc2UgKiBhY2MgKyB2
OworICAgICAgICAgICAgaWYgKGFjYyQxID4gdGhyZXNob2xkKSB7CisgICAgICAgICAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVy
ZSwKKyAgICAgICAgICAgICAgICAgICAgImludF9vZl9zdHJpbmciCisgICAgICAgICAgICAgICAg
ICBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9r
ID0gayArIDEgfCAwOworICAgICAgICAgICAgICBfYWNjID0gYWNjJDE7CisgICAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHJlcyA9IG1hdGNoWzFdICog
YXV4KGQsIGkgKyAxIHwgMCk7CisgIHZhciBvcl9yZXMgPSByZXMgfCAwOworICBpZiAoYmFzZSA9
PT0gMTAgJiYgcmVzICE9PSBvcl9yZXMpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAgICAgICAiaW50X29mX3N0cmluZyIKKyAg
ICAgICAgXTsKKyAgfQorICByZXR1cm4gb3JfcmVzOworfQorCitmdW5jdGlvbiBjYW1sX2ludDY0
X29mX3N0cmluZyhzKSB7CisgIHZhciBtYXRjaCA9IHBhcnNlX3NpZ25fYW5kX2Jhc2Uocyk7Cisg
IHZhciBoYmFzZSA9IG1hdGNoWzJdOworICB2YXIgaSA9IG1hdGNoWzBdOworICB2YXIgYmFzZSA9
IENhbWxfaW50NjQub2ZfaW50MzIoaW50X29mX3N0cmluZ19iYXNlKGhiYXNlKSk7CisgIHZhciBz
aWduID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMihtYXRjaFsxXSk7CisgIHZhciB0aHJlc2hvbGQ7Cisg
IHN3aXRjaCAoaGJhc2UpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgdGhyZXNob2xkID0gLyog
aW50NjQgKi9bCisgICAgICAgICAgLyogaGkgKi81MzY4NzA5MTEsCisgICAgICAgICAgLyogbG8g
Ki80Mjk0OTY3Mjk1CisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMSA6IAor
ICAgICAgICB0aHJlc2hvbGQgPSAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAvKiBoaSAqLzI2ODQz
NTQ1NSwKKyAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyOTUKKyAgICAgICAgXTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSAyIDogCisgICAgICAgIHRocmVzaG9sZCA9IC8qIGludDY0ICovWwor
ICAgICAgICAgIC8qIGhpICovNDI5NDk2NzI5LAorICAgICAgICAgIC8qIGxvICovMjU3Njk4MDM3
NworICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDMgOiAKKyAgICAgICAgdGhy
ZXNob2xkID0gLyogaW50NjQgKi9bCisgICAgICAgICAgLyogaGkgKi8yMTQ3NDgzNjQ3LAorICAg
ICAgICAgIC8qIGxvICovNDI5NDk2NzI5NQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAg
ICAKKyAgfQorICB2YXIgbGVuID0gcy5sZW5ndGg7CisgIHZhciBjID0gaSA8IGxlbiA/IHMuY2hh
ckNvZGVBdChpKSA6IC8qICJcMDAwIiAqLzA7CisgIHZhciBkID0gQ2FtbF9pbnQ2NC5vZl9pbnQz
MihwYXJzZV9kaWdpdChjKSk7CisgIGlmIChDYW1sX2ludDY0Lmx0KGQsIC8qIGludDY0ICovWwor
ICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAgXSkgfHwg
Q2FtbF9pbnQ2NC5nZShkLCBiYXNlKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAgICJpbnQ2NF9vZl9zdHJpbmciCisg
ICAgICAgIF07CisgIH0KKyAgdmFyIGF1eCA9IGZ1bmN0aW9uIChfYWNjLCBfaykgeworICAgIHdo
aWxlKHRydWUpIHsKKyAgICAgIHZhciBrID0gX2s7CisgICAgICB2YXIgYWNjID0gX2FjYzsKKyAg
ICAgIGlmIChrID09PSBsZW4pIHsKKyAgICAgICAgcmV0dXJuIGFjYzsKKyAgICAgIH0KKyAgICAg
IGVsc2UgeworICAgICAgICB2YXIgYSA9IHMuY2hhckNvZGVBdChrKTsKKyAgICAgICAgaWYgKGEg
PT09IC8qICJfIiAqLzk1KSB7CisgICAgICAgICAgX2sgPSBrICsgMSB8IDA7CisgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgIHZhciB2ID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMihwYXJzZV9kaWdpdChhKSk7CisgICAgICAg
ICAgaWYgKENhbWxfaW50NjQubHQodiwgLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgICAv
KiBoaSAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAgICAgICAgICBd
KSB8fCBDYW1sX2ludDY0LmdlKHYsIGJhc2UpKSB7CisgICAgICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAg
ICAgICAgICAgImludDY0X29mX3N0cmluZyIKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBhY2MkMSA9IENhbWxfaW50NjQu
YWRkKENhbWxfaW50NjQubXVsKGJhc2UsIGFjYyksIHYpOworICAgICAgICAgICAgaWYgKENhbWxf
aW50NjQuZ3QoYWNjJDEsIHRocmVzaG9sZCkpIHsKKyAgICAgICAgICAgICAgdGhyb3cgWworICAg
ICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAg
ICAgICAgICAgICAgICAiaW50NjRfb2Zfc3RyaW5nIgorICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBfayA9IGsgKyAx
IHwgMDsKKyAgICAgICAgICAgICAgX2FjYyA9IGFjYyQxOworICAgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgfQorICAgIH07CisgIH07CisgIHZhciByZXMgPSBDYW1sX2ludDY0Lm11bChzaWdu
LCBhdXgoZCwgaSArIDEgfCAwKSk7CisgIHZhciBvcl9yZXNfMDAwID0gLyogaGkgKi9yZXNbMF0g
fCAvKiBoaSAqLzA7CisgIHZhciBvcl9yZXNfMDAxID0gLyogbG8gKi8ocmVzWzFdID4+PiAwKTsK
KyAgdmFyIG9yX3JlcyA9IC8qIGludDY0ICovWworICAgIG9yX3Jlc18wMDAsCisgICAgb3JfcmVz
XzAwMQorICBdOworICBpZiAoQ2FtbF9pbnQ2NC5lcShiYXNlLCAvKiBpbnQ2NCAqL1sKKyAgICAg
ICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgLyogbG8gKi8xMAorICAgICAgICBdKSAmJiBDYW1s
X2ludDY0Lm5lcShyZXMsIG9yX3JlcykpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAgICAgICAiaW50NjRfb2Zfc3RyaW5nIgor
ICAgICAgICBdOworICB9CisgIHJldHVybiBvcl9yZXM7Cit9CisKK2Z1bmN0aW9uIGludF9vZl9i
YXNlKHBhcmFtKSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAg
cmV0dXJuIDg7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAxNjsKKyAgICBjYXNlIDIg
OiAKKyAgICAgICAgcmV0dXJuIDEwOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIGxvd2VyY2Fz
ZShjKSB7CisgIGlmIChjID49IC8qICJBIiAqLzY1ICYmIGMgPD0gLyogIloiICovOTAgfHwgYyA+
PSAvKiAiXDE5MiIgKi8xOTIgJiYgYyA8PSAvKiAiXDIxNCIgKi8yMTQgfHwgYyA+PSAvKiAiXDIx
NiIgKi8yMTYgJiYgYyA8PSAvKiAiXDIyMiIgKi8yMjIpIHsKKyAgICByZXR1cm4gYyArIDMyIHwg
MDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYzsKKyAgfQorfQorCitmdW5jdGlvbiBwYXJz
ZV9mb3JtYXQoZm10KSB7CisgIHZhciBsZW4gPSBmbXQubGVuZ3RoOworICBpZiAobGVuID4gMzEp
IHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxp
ZF9hcmd1bWVudCwKKyAgICAgICAgICAiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nIgorICAg
ICAgICBdOworICB9CisgIHZhciBmID0gLyogcmVjb3JkICovWworICAgIC8qIGp1c3RpZnkgKi8i
KyIsCisgICAgLyogc2lnbnN0eWxlICovIi0iLAorICAgIC8qIGZpbHRlciAqLyIgIiwKKyAgICAv
KiBhbHRlcm5hdGUgOiBmYWxzZSAqLzAsCisgICAgLyogYmFzZSA6IERlYyAqLzIsCisgICAgLyog
c2lnbmVkY29udiA6IGZhbHNlICovMCwKKyAgICAvKiB3aWR0aCAqLzAsCisgICAgLyogdXBwZXJj
YXNlIDogZmFsc2UgKi8wLAorICAgIC8qIHNpZ24gKi8xLAorICAgIC8qIHByZWMgKi8tMSwKKyAg
ICAvKiBjb252ICovImYiCisgIF07CisgIHZhciBfaSA9IDA7CisgIHdoaWxlKHRydWUpIHsKKyAg
ICB2YXIgaSA9IF9pOworICAgIGlmIChpID49IGxlbikgeworICAgICAgcmV0dXJuIGY7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgdmFyIGMgPSBmbXQuY2hhckNvZGVBdChpKTsKKyAgICAgIHZh
ciBleGl0ID0gMDsKKyAgICAgIGlmIChjID49IDY5KSB7CisgICAgICAgIGlmIChjID49IDg4KSB7
CisgICAgICAgICAgaWYgKGMgPj0gMTIxKSB7CisgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKGMgLSA4OCB8IDAp
IHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICBmWy8qIGJhc2Ug
Ki80XSA9IC8qIEhleCAqLzE7CisgICAgICAgICAgICAgICAgICBmWy8qIHVwcGVyY2FzZSAqLzdd
ID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAg
ICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAg
ICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgICAg
ICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgMjMgOiAKKyAgICAgICAgICAgICAgICAgIGZbLyogYmFzZSAqLzRdID0gLyogT2N0ICovMDsK
KyAgICAgICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAgICAgY29u
dGludWUgOworICAgICAgICAgICAgICAgICAgY2FzZSAyOSA6IAorICAgICAgICAgICAgICAgICAg
ZlsvKiBiYXNlICovNF0gPSAvKiBEZWMgKi8yOworICAgICAgICAgICAgICAgICAgX2kgPSBpICsg
MSB8IDA7CisgICAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgIGNhc2UgMyA6
IAorICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAg
ICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAg
ICAgY2FzZSA4IDogCisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgICBjYXNl
IDEwIDogCisgICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgY2FzZSAxNiA6
IAorICAgICAgICAgICAgICBjYXNlIDE4IDogCisgICAgICAgICAgICAgIGNhc2UgMTkgOiAKKyAg
ICAgICAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgICBjYXNlIDIxIDogCisgICAgICAg
ICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgICAgY2FzZSAyNCA6IAorICAgICAgICAgICAg
ICBjYXNlIDI1IDogCisgICAgICAgICAgICAgIGNhc2UgMjYgOiAKKyAgICAgICAgICAgICAgY2Fz
ZSAyNyA6IAorICAgICAgICAgICAgICBjYXNlIDI4IDogCisgICAgICAgICAgICAgIGNhc2UgMzAg
OiAKKyAgICAgICAgICAgICAgY2FzZSAzMSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAzMiA6IAorICAg
ICAgICAgICAgICAgICAgZlsvKiBiYXNlICovNF0gPSAvKiBIZXggKi8xOworICAgICAgICAgICAg
ICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSBpZiAoYyA+PSA3MikgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGZbLyogc2lnbmVkY29udiAqLzVdID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgZlsvKiB1cHBlcmNhc2UgKi83XSA9IC8qIHRydWUgKi8xOworICAg
ICAgICAgIGZbLyogY29udiAqLzEwXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUobG93ZXJjYXNlKGMp
KTsKKyAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgc3dp
dGNoZXIgPSBjIC0gMzIgfCAwOworICAgICAgICBpZiAoc3dpdGNoZXIgPiAyNSB8fCBzd2l0Y2hl
ciA8IDApIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICBzd2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgICAgICBjYXNlIDMgOiAKKyAg
ICAgICAgICAgICAgICBmWy8qIGFsdGVybmF0ZSAqLzNdID0gLyogdHJ1ZSAqLzE7CisgICAgICAg
ICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAg
ICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAxMyA6IAorICAgICAgICAgICAgICAgIGZbLyoganVzdGlmeSAqLzBdID0gIi0iOworICAgICAg
ICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgZlsvKiBwcmVjICovOV0g
PSAwOworICAgICAgICAgICAgICAgIHZhciBqID0gaSArIDEgfCAwOworICAgICAgICAgICAgICAg
IHdoaWxlKChmdW5jdGlvbihqKXsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IGZtdC5jaGFyQ29kZUF0KGopIC0g
LyogIjAiICovNDggfCAwOworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiArKHcgPj0gMCAm
JiB3IDw9IDkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0o
aikpKCkpIHsKKyAgICAgICAgICAgICAgICAgIGZbLyogcHJlYyAqLzldID0gKENhbWxfaW50MzIu
aW11bChmWy8qIHByZWMgKi85XSwgMTApICsgZm10LmNoYXJDb2RlQXQoaikgfCAwKSAtIC8qICIw
IiAqLzQ4IHwgMDsKKyAgICAgICAgICAgICAgICAgIGogPSBqICsgMSB8IDA7CisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICBfaSA9IGo7CisgICAgICAgICAgICAgICAgY29udGlu
dWUgOworICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAg
Y2FzZSA2IDogCisgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIGNhc2UgOCA6IAor
ICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAg
ICBjYXNlIDEyIDogCisgICAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICAgICAgZXhp
dCA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE2IDogCisg
ICAgICAgICAgICAgICAgZlsvKiBmaWx0ZXIgKi8yXSA9ICIwIjsKKyAgICAgICAgICAgICAgICBf
aSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAg
ICAgY2FzZSAxNyA6IAorICAgICAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgICAgY2FzZSAx
OSA6IAorICAgICAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgY2FzZSAyMSA6IAorICAg
ICAgICAgICAgY2FzZSAyMiA6IAorICAgICAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgICAg
Y2FzZSAyNCA6IAorICAgICAgICAgICAgY2FzZSAyNSA6IAorICAgICAgICAgICAgICAgIGV4aXQg
PSAzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICB9CisgICAgICBzd2l0Y2ggKGV4aXQpIHsKKyAgICAgICAgY2FzZSAx
IDogCisgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgZlsvKiBzaWduc3R5bGUgKi8xXSA9
IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7CisgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAg
ZlsvKiB3aWR0aCAqLzZdID0gMDsKKyAgICAgICAgICAgIHZhciBqJDEgPSBpOworICAgICAgICAg
ICAgd2hpbGUoKGZ1bmN0aW9uKGokMSl7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgIHZhciB3ID0gZm10LmNoYXJDb2RlQXQoaiQxKSAtIC8q
ICIwIiAqLzQ4IHwgMDsKKyAgICAgICAgICAgICAgICAgIHJldHVybiArKHcgPj0gMCAmJiB3IDw9
IDkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KGokMSkpKCkpIHsKKyAg
ICAgICAgICAgICAgZlsvKiB3aWR0aCAqLzZdID0gKENhbWxfaW50MzIuaW11bChmWy8qIHdpZHRo
ICovNl0sIDEwKSArIGZtdC5jaGFyQ29kZUF0KGokMSkgfCAwKSAtIC8qICIwIiAqLzQ4IHwgMDsK
KyAgICAgICAgICAgICAgaiQxID0gaiQxICsgMSB8IDA7CisgICAgICAgICAgICB9OworICAgICAg
ICAgICAgX2kgPSBqJDE7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNl
IDQgOiAKKyAgICAgICAgICAgIGZbLyogc2lnbmVkY29udiAqLzVdID0gLyogdHJ1ZSAqLzE7Cisg
ICAgICAgICAgICBmWy8qIGJhc2UgKi80XSA9IC8qIERlYyAqLzI7CisgICAgICAgICAgICBfaSA9
IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgNSA6
IAorICAgICAgICAgICAgZlsvKiBzaWduZWRjb252ICovNV0gPSAvKiB0cnVlICovMTsKKyAgICAg
ICAgICAgIGZbLyogY29udiAqLzEwXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7CisgICAgICAg
ICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
IAorICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZmluaXNoX2Zvcm1hdHRpbmco
cGFyYW0sIHJhd2J1ZmZlcikgeworICB2YXIganVzdGlmeSA9IHBhcmFtWy8qIGp1c3RpZnkgKi8w
XTsKKyAgdmFyIHNpZ25zdHlsZSA9IHBhcmFtWy8qIHNpZ25zdHlsZSAqLzFdOworICB2YXIgZmls
dGVyID0gcGFyYW1bLyogZmlsdGVyICovMl07CisgIHZhciBhbHRlcm5hdGUgPSBwYXJhbVsvKiBh
bHRlcm5hdGUgKi8zXTsKKyAgdmFyIGJhc2UgPSBwYXJhbVsvKiBiYXNlICovNF07CisgIHZhciBz
aWduZWRjb252ID0gcGFyYW1bLyogc2lnbmVkY29udiAqLzVdOworICB2YXIgd2lkdGggPSBwYXJh
bVsvKiB3aWR0aCAqLzZdOworICB2YXIgdXBwZXJjYXNlID0gcGFyYW1bLyogdXBwZXJjYXNlICov
N107CisgIHZhciBzaWduID0gcGFyYW1bLyogc2lnbiAqLzhdOworICB2YXIgbGVuID0gcmF3YnVm
ZmVyLmxlbmd0aDsKKyAgaWYgKHNpZ25lZGNvbnYgJiYgKHNpZ24gPCAwIHx8IHNpZ25zdHlsZSAh
PT0gIi0iKSkgeworICAgIGxlbiA9IGxlbiArIDEgfCAwOworICB9CisgIGlmIChhbHRlcm5hdGUp
IHsKKyAgICBpZiAoYmFzZSkgeworICAgICAgaWYgKGJhc2UgPT09IC8qIEhleCAqLzEpIHsKKyAg
ICAgICAgbGVuID0gbGVuICsgMiB8IDA7CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICBsZW4gPSBsZW4gKyAxIHwgMDsKKyAgICB9CisgIH0KKyAgdmFyIGJ1ZmZlciA9
ICIiOworICBpZiAoanVzdGlmeSA9PT0gIisiICYmIGZpbHRlciA9PT0gIiAiKSB7CisgICAgZm9y
KHZhciBpID0gbGVuICxpX2ZpbmlzaCA9IHdpZHRoIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsr
aSl7CisgICAgICBidWZmZXIgPSBidWZmZXIgKyBmaWx0ZXI7CisgICAgfQorICB9CisgIGlmIChz
aWduZWRjb252KSB7CisgICAgaWYgKHNpZ24gPCAwKSB7CisgICAgICBidWZmZXIgPSBidWZmZXIg
KyAiLSI7CisgICAgfQorICAgIGVsc2UgaWYgKHNpZ25zdHlsZSAhPT0gIi0iKSB7CisgICAgICBi
dWZmZXIgPSBidWZmZXIgKyBzaWduc3R5bGU7CisgICAgfQorICAgIAorICB9CisgIGlmIChhbHRl
cm5hdGUgJiYgYmFzZSA9PT0gLyogT2N0ICovMCkgeworICAgIGJ1ZmZlciA9IGJ1ZmZlciArICIw
IjsKKyAgfQorICBpZiAoYWx0ZXJuYXRlICYmIGJhc2UgPT09IC8qIEhleCAqLzEpIHsKKyAgICBi
dWZmZXIgPSBidWZmZXIgKyAiMHgiOworICB9CisgIGlmIChqdXN0aWZ5ID09PSAiKyIgJiYgZmls
dGVyID09PSAiMCIpIHsKKyAgICBmb3IodmFyIGkkMSA9IGxlbiAsaV9maW5pc2gkMSA9IHdpZHRo
IC0gMSB8IDA7IGkkMSA8PSBpX2ZpbmlzaCQxOyArK2kkMSl7CisgICAgICBidWZmZXIgPSBidWZm
ZXIgKyBmaWx0ZXI7CisgICAgfQorICB9CisgIGJ1ZmZlciA9IHVwcGVyY2FzZSA/IGJ1ZmZlciAr
IHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpIDogYnVmZmVyICsgcmF3YnVmZmVyOworICBpZiAoanVz
dGlmeSA9PT0gIi0iKSB7CisgICAgZm9yKHZhciBpJDIgPSBsZW4gLGlfZmluaXNoJDIgPSB3aWR0
aCAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gkMjsgKytpJDIpeworICAgICAgYnVmZmVyID0gYnVm
ZmVyICsgIiAiOworICAgIH0KKyAgfQorICByZXR1cm4gYnVmZmVyOworfQorCitmdW5jdGlvbiBj
YW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7CisgIGlmIChmbXQgPT09ICIlZCIpIHsKKyAgICByZXR1
cm4gIiIgKyBpOworICB9CisgIGVsc2UgeworICAgIHZhciBmID0gcGFyc2VfZm9ybWF0KGZtdCk7
CisgICAgdmFyIGYkMSA9IGY7CisgICAgdmFyIGkkMSA9IGk7CisgICAgdmFyIGkkMiA9IGkkMSA8
IDAgPyAoCisgICAgICAgIGYkMVsvKiBzaWduZWRjb252ICovNV0gPyAoZiQxWy8qIHNpZ24gKi84
XSA9IC0xLCAtaSQxKSA6IChpJDEgPj4+IDApCisgICAgICApIDogaSQxOworICAgIHZhciBzID0g
aSQyLnRvU3RyaW5nKGludF9vZl9iYXNlKGYkMVsvKiBiYXNlICovNF0pKTsKKyAgICBpZiAoZiQx
Wy8qIHByZWMgKi85XSA+PSAwKSB7CisgICAgICBmJDFbLyogZmlsdGVyICovMl0gPSAiICI7Cisg
ICAgICB2YXIgbiA9IGYkMVsvKiBwcmVjICovOV0gLSBzLmxlbmd0aCB8IDA7CisgICAgICBpZiAo
biA+IDApIHsKKyAgICAgICAgcyA9IENhbWxfdXRpbHMucmVwZWF0KG4sICIwIikgKyBzOworICAg
ICAgfQorICAgICAgCisgICAgfQorICAgIHJldHVybiBmaW5pc2hfZm9ybWF0dGluZyhmJDEsIHMp
OworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0KGZtdCwgeCkgeworICB2YXIg
ZiA9IHBhcnNlX2Zvcm1hdChmbXQpOworICB2YXIgeCQxID0gZlsvKiBzaWduZWRjb252ICovNV0g
JiYgQ2FtbF9pbnQ2NC5sdCh4LCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgLyogaGkgKi8wLAorICAg
ICAgICAvKiBsbyAqLzAKKyAgICAgIF0pID8gKGZbLyogc2lnbiAqLzhdID0gLTEsIENhbWxfaW50
NjQubmVnKHgpKSA6IHg7CisgIHZhciBzID0gIiI7CisgIHZhciBtYXRjaCA9IGZbLyogYmFzZSAq
LzRdOworICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHZhciB3YmFz
ZSA9IC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAvKiBsbyAq
LzgKKyAgICAgICAgXTsKKyAgICAgICAgdmFyIGN2dGJsID0gIjAxMjM0NTY3IjsKKyAgICAgICAg
aWYgKENhbWxfaW50NjQubHQoeCQxLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBo
aSAqLzAsCisgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgIF0pKSB7Cisg
ICAgICAgICAgdmFyIHkgPSBDYW1sX2ludDY0LmRpc2NhcmRfc2lnbih4JDEpOworICAgICAgICAg
IHZhciBtYXRjaCQxID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHksIHdiYXNlKTsKKyAgICAgICAgICB2
YXIgcXVvdGllbnQgPSBDYW1sX2ludDY0LmFkZCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAg
ICAvKiBoaSAqLzI2ODQzNTQ1NiwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAg
ICAgICAgXSwgbWF0Y2gkMVswXSk7CisgICAgICAgICAgdmFyIG1vZHVsdXMgPSBtYXRjaCQxWzFd
OworICAgICAgICAgIHMgPSBDYW1sX3N0cmluZy5qc19zdHJpbmdfb2ZfY2hhcihjdnRibC5jaGFy
Q29kZUF0KG1vZHVsdXNbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxfaW50NjQu
bmVxKHF1b3RpZW50LCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIGhpICovMCwK
KyAgICAgICAgICAgICAgICAgIC8qIGxvICovMAorICAgICAgICAgICAgICAgIF0pKSB7CisgICAg
ICAgICAgICB2YXIgbWF0Y2gkMiA9IENhbWxfaW50NjQuZGl2X21vZChxdW90aWVudCwgd2Jhc2Up
OworICAgICAgICAgICAgcXVvdGllbnQgPSBtYXRjaCQyWzBdOworICAgICAgICAgICAgbW9kdWx1
cyA9IG1hdGNoJDJbMV07CisgICAgICAgICAgICBzID0gQ2FtbF9zdHJpbmcuanNfc3RyaW5nX29m
X2NoYXIoY3Z0YmwuY2hhckNvZGVBdChtb2R1bHVzWzFdIHwgMCkpICsgczsKKyAgICAgICAgICB9
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBtYXRjaCQzID0gQ2Ft
bF9pbnQ2NC5kaXZfbW9kKHgkMSwgd2Jhc2UpOworICAgICAgICAgIHZhciBxdW90aWVudCQxID0g
bWF0Y2gkM1swXTsKKyAgICAgICAgICB2YXIgbW9kdWx1cyQxID0gbWF0Y2gkM1sxXTsKKyAgICAg
ICAgICBzID0gQ2FtbF9zdHJpbmcuanNfc3RyaW5nX29mX2NoYXIoY3Z0YmwuY2hhckNvZGVBdCht
b2R1bHVzJDFbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxfaW50NjQubmVxKHF1
b3RpZW50JDEsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAg
ICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgICAgXSkpIHsKKyAgICAgICAg
ICAgIHZhciBtYXRjaCQ0ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1b3RpZW50JDEsIHdiYXNlKTsK
KyAgICAgICAgICAgIHF1b3RpZW50JDEgPSBtYXRjaCQ0WzBdOworICAgICAgICAgICAgbW9kdWx1
cyQxID0gbWF0Y2gkNFsxXTsKKyAgICAgICAgICAgIHMgPSBDYW1sX3N0cmluZy5qc19zdHJpbmdf
b2ZfY2hhcihjdnRibC5jaGFyQ29kZUF0KG1vZHVsdXMkMVsxXSB8IDApKSArIHM7CisgICAgICAg
ICAgfTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAg
cyA9IENhbWxfaW50NjQudG9faGV4KHgkMSkgKyBzOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IDIgOiAKKyAgICAgICAgdmFyIHdiYXNlJDEgPSAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAvKiBo
aSAqLzAsCisgICAgICAgICAgLyogbG8gKi8xMAorICAgICAgICBdOworICAgICAgICB2YXIgY3Z0
YmwkMSA9ICIwMTIzNDU2Nzg5IjsKKyAgICAgICAgaWYgKENhbWxfaW50NjQubHQoeCQxLCAvKiBp
bnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAgICAgLyog
bG8gKi8wCisgICAgICAgICAgICAgIF0pKSB7CisgICAgICAgICAgdmFyIHkkMSA9IENhbWxfaW50
NjQuZGlzY2FyZF9zaWduKHgkMSk7CisgICAgICAgICAgdmFyIG1hdGNoJDUgPSBDYW1sX2ludDY0
LmRpdl9tb2QoeSQxLCB3YmFzZSQxKTsKKyAgICAgICAgICB2YXIgbWF0Y2gkNiA9IENhbWxfaW50
NjQuZGl2X21vZChDYW1sX2ludDY0LmFkZCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAgICAgICAvKiBsbyAqLzgKKyAgICAgICAgICAg
ICAgICAgIF0sIG1hdGNoJDVbMV0pLCB3YmFzZSQxKTsKKyAgICAgICAgICB2YXIgcXVvdGllbnQk
MiA9IENhbWxfaW50NjQuYWRkKENhbWxfaW50NjQuYWRkKC8qIGludDY0ICovWworICAgICAgICAg
ICAgICAgICAgICAvKiBoaSAqLzIxNDc0ODM2NCwKKyAgICAgICAgICAgICAgICAgICAgLyogbG8g
Ki8zNDM1OTczODM2CisgICAgICAgICAgICAgICAgICBdLCBtYXRjaCQ1WzBdKSwgbWF0Y2gkNlsw
XSk7CisgICAgICAgICAgdmFyIG1vZHVsdXMkMiA9IG1hdGNoJDZbMV07CisgICAgICAgICAgcyA9
IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNvZGVBdChtb2R1bHVz
JDJbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxfaW50NjQubmVxKHF1b3RpZW50
JDIsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAg
ICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgICAgXSkpIHsKKyAgICAgICAgICAgIHZh
ciBtYXRjaCQ3ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1b3RpZW50JDIsIHdiYXNlJDEpOworICAg
ICAgICAgICAgcXVvdGllbnQkMiA9IG1hdGNoJDdbMF07CisgICAgICAgICAgICBtb2R1bHVzJDIg
PSBtYXRjaCQ3WzFdOworICAgICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9j
aGFyKGN2dGJsJDEuY2hhckNvZGVBdChtb2R1bHVzJDJbMV0gfCAwKSkgKyBzOworICAgICAgICAg
IH07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFyIG1hdGNoJDggPSBD
YW1sX2ludDY0LmRpdl9tb2QoeCQxLCB3YmFzZSQxKTsKKyAgICAgICAgICB2YXIgcXVvdGllbnQk
MyA9IG1hdGNoJDhbMF07CisgICAgICAgICAgdmFyIG1vZHVsdXMkMyA9IG1hdGNoJDhbMV07Cisg
ICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNv
ZGVBdChtb2R1bHVzJDNbMV0gfCAwKSkgKyBzOworICAgICAgICAgIHdoaWxlKENhbWxfaW50NjQu
bmVxKHF1b3RpZW50JDMsIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8w
LAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICAgICAgXSkpIHsKKyAg
ICAgICAgICAgIHZhciBtYXRjaCQ5ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHF1b3RpZW50JDMsIHdi
YXNlJDEpOworICAgICAgICAgICAgcXVvdGllbnQkMyA9IG1hdGNoJDlbMF07CisgICAgICAgICAg
ICBtb2R1bHVzJDMgPSBtYXRjaCQ5WzFdOworICAgICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpz
X3N0cmluZ19vZl9jaGFyKGN2dGJsJDEuY2hhckNvZGVBdChtb2R1bHVzJDNbMV0gfCAwKSkgKyBz
OworICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgCisgIH0KKyAg
aWYgKGZbLyogcHJlYyAqLzldID49IDApIHsKKyAgICBmWy8qIGZpbHRlciAqLzJdID0gIiAiOwor
ICAgIHZhciBuID0gZlsvKiBwcmVjICovOV0gLSBzLmxlbmd0aCB8IDA7CisgICAgaWYgKG4gPiAw
KSB7CisgICAgICBzID0gQ2FtbF91dGlscy5yZXBlYXQobiwgIjAiKSArIHM7CisgICAgfQorICAg
IAorICB9CisgIHJldHVybiBmaW5pc2hfZm9ybWF0dGluZyhmLCBzKTsKK30KKworZnVuY3Rpb24g
Y2FtbF9mb3JtYXRfZmxvYXQoZm10LCB4KSB7CisgIHZhciBmID0gcGFyc2VfZm9ybWF0KGZtdCk7
CisgIHZhciBwcmVjID0gZlsvKiBwcmVjICovOV0gPCAwID8gNiA6IGZbLyogcHJlYyAqLzldOwor
ICB2YXIgeCQxID0geCA8IDAgPyAoZlsvKiBzaWduICovOF0gPSAtMSwgLXgpIDogeDsKKyAgdmFy
IHMgPSAiIjsKKyAgaWYgKGlzTmFOKHgkMSkpIHsKKyAgICBzID0gIm5hbiI7CisgICAgZlsvKiBm
aWx0ZXIgKi8yXSA9ICIgIjsKKyAgfQorICBlbHNlIGlmIChpc0Zpbml0ZSh4JDEpKSB7CisgICAg
dmFyIG1hdGNoID0gZlsvKiBjb252ICovMTBdOworICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAg
IGNhc2UgImUiIDogCisgICAgICAgICAgcyA9IHgkMS50b0V4cG9uZW50aWFsKHByZWMpOworICAg
ICAgICAgIHZhciBpID0gcy5sZW5ndGg7CisgICAgICAgICAgaWYgKHNbaSAtIDMgfCAwXSA9PT0g
ImUiKSB7CisgICAgICAgICAgICBzID0gcy5zbGljZSgwLCBpIC0gMSB8IDApICsgKCIwIiArIHMu
c2xpY2UoaSAtIDEgfCAwKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSAiZiIgOiAKKyAgICAgICAgICBzID0geCQxLnRvRml4ZWQocHJlYyk7CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlICJnIiA6IAorICAgICAgICAgIHZhciBwcmVjJDEgPSBwcmVjICE9
PSAwID8gcHJlYyA6IDE7CisgICAgICAgICAgcyA9IHgkMS50b0V4cG9uZW50aWFsKHByZWMkMSAt
IDEgfCAwKTsKKyAgICAgICAgICB2YXIgaiA9IHMuaW5kZXhPZigiZSIpOworICAgICAgICAgIHZh
ciBleHAgPSArcy5zbGljZShqICsgMSB8IDApOworICAgICAgICAgIGlmIChleHAgPCAtNCB8fCB4
JDEgPj0gMWUyMSB8fCB4JDEudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjJDEpIHsKKyAgICAgICAg
ICAgIHZhciBpJDEgPSBqIC0gMSB8IDA7CisgICAgICAgICAgICB3aGlsZShzW2kkMV0gPT09ICIw
IikgeworICAgICAgICAgICAgICBpJDEgPSBpJDEgLSAxIHwgMDsKKyAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICBpZiAoc1tpJDFdID09PSAiLiIpIHsKKyAgICAgICAgICAgICAgaSQxID0gaSQx
IC0gMSB8IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzID0gcy5zbGljZSgwLCBpJDEg
KyAxIHwgMCkgKyBzLnNsaWNlKGopOworICAgICAgICAgICAgdmFyIGkkMiA9IHMubGVuZ3RoOwor
ICAgICAgICAgICAgaWYgKHNbaSQyIC0gMyB8IDBdID09PSAiZSIpIHsKKyAgICAgICAgICAgICAg
cyA9IHMuc2xpY2UoMCwgaSQyIC0gMSB8IDApICsgKCIwIiArIHMuc2xpY2UoaSQyIC0gMSB8IDAp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHZhciBwID0gcHJlYyQxOworICAgICAgICAgICAgaWYgKGV4cCA8
IDApIHsKKyAgICAgICAgICAgICAgcCA9IHAgLSAoZXhwICsgMSB8IDApIHwgMDsKKyAgICAgICAg
ICAgICAgcyA9IHgkMS50b0ZpeGVkKHApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgIHdoaWxlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcyA9IHgkMS50b0ZpeGVkKHApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKyhzLmxl
bmd0aCA+IChwcmVjJDEgKyAxIHwgMCkpOworICAgICAgICAgICAgICAgICAgfSgpKSB7CisgICAg
ICAgICAgICAgICAgcCA9IHAgLSAxIHwgMDsKKyAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChwICE9PSAwKSB7CisgICAgICAgICAgICAgIHZhciBrID0gcy5s
ZW5ndGggLSAxIHwgMDsKKyAgICAgICAgICAgICAgd2hpbGUoc1trXSA9PT0gIjAiKSB7CisgICAg
ICAgICAgICAgICAgayA9IGsgLSAxIHwgMDsKKyAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgaWYgKHNba10gPT09ICIuIikgeworICAgICAgICAgICAgICAgIGsgPSBrIC0gMSB8IDA7Cisg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwgayArIDEgfCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBicmVh
azsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIAorICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBz
ID0gImluZiI7CisgICAgZlsvKiBmaWx0ZXIgKi8yXSA9ICIgIjsKKyAgfQorICByZXR1cm4gZmlu
aXNoX2Zvcm1hdHRpbmcoZiwgcyk7Cit9CisKK3ZhciBmbG9hdF9vZl9zdHJpbmcgPSAoCisgIGZ1
bmN0aW9uIChzLCBjYW1sX2ZhaWx3aXRoKSB7CisgICAgdmFyIHJlcyA9ICtzOworICAgIGlmICgo
cy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKQorICAgICAgICByZXR1cm4gcmVzOworICAg
IHMgPSBzLnJlcGxhY2UoL18vZywgIiIpOworICAgIHJlcyA9ICtzOworICAgIGlmICgoKHMubGVu
Z3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSB7Cisg
ICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIDsKKyAgICBpZiAoL14gKjB4WzAtOWEtZl9d
K3BbKy1dP1swLTlfXSsvaS50ZXN0KHMpKSB7CisgICAgICAgIHZhciBwaWR4ID0gcy5pbmRleE9m
KCdwJyk7CisgICAgICAgIHBpZHggPSAocGlkeCA9PSAtMSkgPyBzLmluZGV4T2YoJ1AnKSA6IHBp
ZHg7CisgICAgICAgIHZhciBleHAgPSArcy5zdWJzdHJpbmcocGlkeCArIDEpOworICAgICAgICBy
ZXMgPSArcy5zdWJzdHJpbmcoMCwgcGlkeCk7CisgICAgICAgIHJldHVybiByZXMgKiBNYXRoLnBv
dygyLCBleHApOworICAgIH0KKyAgICBpZiAoL15cKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKQor
ICAgICAgICByZXR1cm4gSW5maW5pdHk7CisgICAgaWYgKC9eLWluZihpbml0eSk/JC9pLnRlc3Qo
cykpCisgICAgICAgIHJldHVybiAtSW5maW5pdHk7CisgICAgY2FtbF9mYWlsd2l0aCgiZmxvYXRf
b2Zfc3RyaW5nIik7Cit9CisKKyk7CisKK2Z1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMp
IHsKKyAgcmV0dXJuIEN1cnJ5Ll8yKGZsb2F0X29mX3N0cmluZywgcywgY2FtbF9mYWlsd2l0aCk7
Cit9CisKK3ZhciBjYW1sX25hdGl2ZWludF9mb3JtYXQgPSBjYW1sX2Zvcm1hdF9pbnQ7CisKK3Zh
ciBjYW1sX2ludDMyX2Zvcm1hdCA9IGNhbWxfZm9ybWF0X2ludDsKKwordmFyIGNhbWxfaW50MzJf
b2Zfc3RyaW5nID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworCit2YXIgY2FtbF9uYXRpdmVpbnRfb2Zf
c3RyaW5nID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworCitleHBvcnRzLmNhbWxfZm9ybWF0X2Zsb2F0
ICAgICAgICA9IGNhbWxfZm9ybWF0X2Zsb2F0OworZXhwb3J0cy5jYW1sX2Zvcm1hdF9pbnQgICAg
ICAgICAgPSBjYW1sX2Zvcm1hdF9pbnQ7CitleHBvcnRzLmNhbWxfbmF0aXZlaW50X2Zvcm1hdCAg
ICA9IGNhbWxfbmF0aXZlaW50X2Zvcm1hdDsKK2V4cG9ydHMuY2FtbF9pbnQzMl9mb3JtYXQgICAg
ICAgID0gY2FtbF9pbnQzMl9mb3JtYXQ7CitleHBvcnRzLmNhbWxfZmxvYXRfb2Zfc3RyaW5nICAg
ICA9IGNhbWxfZmxvYXRfb2Zfc3RyaW5nOworZXhwb3J0cy5jYW1sX2ludDY0X2Zvcm1hdCAgICAg
ICAgPSBjYW1sX2ludDY0X2Zvcm1hdDsKK2V4cG9ydHMuY2FtbF9pbnRfb2Zfc3RyaW5nICAgICAg
ID0gY2FtbF9pbnRfb2Zfc3RyaW5nOworZXhwb3J0cy5jYW1sX2ludDMyX29mX3N0cmluZyAgICAg
PSBjYW1sX2ludDMyX29mX3N0cmluZzsKK2V4cG9ydHMuY2FtbF9pbnQ2NF9vZl9zdHJpbmcgICAg
ID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmc7CitleHBvcnRzLmNhbWxfbmF0aXZlaW50X29mX3N0cmlu
ZyA9IGNhbWxfbmF0aXZlaW50X29mX3N0cmluZzsKKy8qIGZsb2F0X29mX3N0cmluZyBOb3QgYSBw
dXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfZm9ybWF0LmpzIC8vLy8vLy8vCivC
oCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2NhbWxfaW50MzIn
XSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0
IG9mIGNhbWxfaW50MzIuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOwor
CitmdW5jdGlvbiBkaXYoeCwgeSkgeworICBpZiAoeSA9PT0gMCkgeworICAgIHRocm93IENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmRpdmlzaW9uX2J5X3plcm87CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIHggLyB5IHwgMDsKKyAgfQorfQorCitmdW5jdGlvbiBtb2RfKHgsIHkpIHsKKyAgaWYg
KHkgPT09IDApIHsKKyAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5kaXZpc2lvbl9i
eV96ZXJvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiB4ICUgeTsKKyAgfQorfQorCitmdW5j
dGlvbiBjYW1sX2Jzd2FwMTYoeCkgeworICByZXR1cm4gKCh4ICYgMjU1KSA8PCA4KSB8ICgoeCAm
IDY1MjgwKSA+Pj4gOCk7Cit9CisKK2Z1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkgeworICBy
ZXR1cm4gKCh4ICYgMjU1KSA8PCAyNCkgfCAoKHggJiA2NTI4MCkgPDwgOCkgfCAoKHggJiAxNjcx
MTY4MCkgPj4+IDgpIHwgKCh4ICYgNDI3ODE5MDA4MCkgPj4+IDI0KTsKK30KKwordmFyIGltdWwg
PSAoIE1hdGguaW11bCB8fCBmdW5jdGlvbiAoeCx5KSB7CisgIHkgfD0gMDsgcmV0dXJuICgoKCh4
ID4+IDE2KSAqIHkpIDw8IDE2KSArICh4ICYgMHhmZmZmKSAqIHkpfDA7IAorfQorKTsKKwordmFy
IGNhbWxfbmF0aXZlaW50X2Jzd2FwID0gY2FtbF9pbnQzMl9ic3dhcDsKKworZXhwb3J0cy5kaXYg
ICAgICAgICAgICAgICAgICA9IGRpdjsKK2V4cG9ydHMubW9kXyAgICAgICAgICAgICAgICAgPSBt
b2RfOworZXhwb3J0cy5jYW1sX2Jzd2FwMTYgICAgICAgICA9IGNhbWxfYnN3YXAxNjsKK2V4cG9y
dHMuY2FtbF9pbnQzMl9ic3dhcCAgICAgPSBjYW1sX2ludDMyX2Jzd2FwOworZXhwb3J0cy5jYW1s
X25hdGl2ZWludF9ic3dhcCA9IGNhbWxfbmF0aXZlaW50X2Jzd2FwOworZXhwb3J0cy5pbXVsICAg
ICAgICAgICAgICAgICA9IGltdWw7CisvKiBpbXVsIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8v
Ly8vLyBlbmQgb2YgY2FtbF9pbnQzMi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7
CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX2ludDY0J10gPSBmdW5jdGlvbigpIHsKK8Kg
IMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX2ludDY0LmpzIC8v
Ly8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9vYmoiKTsKK3ZhciBDYW1sX2ludDMyICAgICAgICAgICAgICA9IHJlcXVp
cmUoIi4vY2FtbF9pbnQzMiIpOwordmFyIENhbWxfdXRpbHMgICAgICAgICAgICAgID0gcmVxdWly
ZSgiLi9jYW1sX3V0aWxzIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJl
KCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK3ZhciBtaW5faW50ID0gLyogcmVjb3Jk
ICovWworICAvKiBoaSAqLy0yMTQ3NDgzNjQ4LAorICAvKiBsbyAqLzAKK107CisKK3ZhciBtYXhf
aW50ID0gLyogcmVjb3JkICovWworICAvKiBoaSAqLzEzNDIxNzcyNywKKyAgLyogbG8gKi8xCitd
OworCit2YXIgb25lID0gLyogcmVjb3JkICovWworICAvKiBoaSAqLzAsCisgIC8qIGxvICovMQor
XTsKKwordmFyIHplcm8gPSAvKiByZWNvcmQgKi9bCisgIC8qIGhpICovMCwKKyAgLyogbG8gKi8w
CitdOworCit2YXIgbmVnX29uZSA9IC8qIHJlY29yZCAqL1sKKyAgLyogaGkgKi8tMSwKKyAgLyog
bG8gKi80Mjk0OTY3Mjk1CitdOworCitmdW5jdGlvbiBuZWdfc2lnbmVkKHgpIHsKKyAgcmV0dXJu
ICsoKHggJiAyMTQ3NDgzNjQ4KSAhPT0gMCk7Cit9CisKK2Z1bmN0aW9uIGFkZChwYXJhbSwgcGFy
YW0kMSkgeworICB2YXIgb3RoZXJfbG93XyA9IHBhcmFtJDFbLyogbG8gKi8xXTsKKyAgdmFyIHRo
aXNfbG93XyA9IHBhcmFtWy8qIGxvICovMV07CisgIHZhciBsbyA9IHRoaXNfbG93XyArIG90aGVy
X2xvd18gJiA0Mjk0OTY3Mjk1OworICB2YXIgb3ZlcmZsb3cgPSBuZWdfc2lnbmVkKHRoaXNfbG93
XykgJiYgKG5lZ19zaWduZWQob3RoZXJfbG93XykgfHwgIW5lZ19zaWduZWQobG8pKSB8fCBuZWdf
c2lnbmVkKG90aGVyX2xvd18pICYmICFuZWdfc2lnbmVkKGxvKSA/IDEgOiAwOworICB2YXIgaGkg
PSBwYXJhbVsvKiBoaSAqLzBdICsgcGFyYW0kMVsvKiBoaSAqLzBdICsgb3ZlcmZsb3cgJiA0Mjk0
OTY3Mjk1OworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGhpICovaGksCisg
ICAgICAgICAgLyogbG8gKi8obG8gPj4+IDApCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIG5v
dChwYXJhbSkgeworICB2YXIgaGkgPSBwYXJhbVsvKiBoaSAqLzBdIF4gLTE7CisgIHZhciBsbyA9
IHBhcmFtWy8qIGxvICovMV0gXiAtMTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAg
ICAvKiBoaSAqL2hpLAorICAgICAgICAgIC8qIGxvICovKGxvID4+PiAwKQorICAgICAgICBdOwor
fQorCitmdW5jdGlvbiBlcSh4LCB5KSB7CisgIGlmICh4Wy8qIGhpICovMF0gPT09IHlbLyogaGkg
Ki8wXSkgeworICAgIHJldHVybiArKHhbLyogbG8gKi8xXSA9PT0geVsvKiBsbyAqLzFdKTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK2Z1bmN0aW9u
IG5lZyh4KSB7CisgIGlmIChlcSh4LCBtaW5faW50KSkgeworICAgIHJldHVybiBtaW5faW50Owor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiBhZGQobm90KHgpLCBvbmUpOworICB9Cit9CisKK2Z1
bmN0aW9uIHN1Yih4LCB5KSB7CisgIHJldHVybiBhZGQoeCwgbmVnKHkpKTsKK30KKworZnVuY3Rp
b24gbHNsXyh4LCBudW1CaXRzKSB7CisgIHZhciBsbyA9IHhbLyogbG8gKi8xXTsKKyAgaWYgKG51
bUJpdHMpIHsKKyAgICBpZiAobnVtQml0cyA+PSAzMikgeworICAgICAgcmV0dXJuIC8qIHJlY29y
ZCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8obG8gPDwgKG51bUJpdHMgLSAzMiB8IDApKSwK
KyAgICAgICAgICAgICAgLyogbG8gKi8wCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHZhciBoaSA9IChsbyA+Pj4gKDMyIC0gbnVtQml0cyB8IDApKSB8ICh4Wy8qIGhp
ICovMF0gPDwgbnVtQml0cyk7CisgICAgICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAg
ICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgICAgICAvKiBsbyAqLygobG8gPDwgbnVtQml0cykg
Pj4+IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
eDsKKyAgfQorfQorCitmdW5jdGlvbiBsc3JfKHgsIG51bUJpdHMpIHsKKyAgdmFyIGhpID0geFsv
KiBoaSAqLzBdOworICBpZiAobnVtQml0cykgeworICAgIHZhciBvZmZzZXQgPSBudW1CaXRzIC0g
MzIgfCAwOworICAgIGlmIChvZmZzZXQpIHsKKyAgICAgIGlmIChvZmZzZXQgPiAwKSB7CisgICAg
ICAgIHZhciBsbyA9IChoaSA+Pj4gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIC8qIHJlY29yZCAq
L1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAgICAgLyogbG8gKi8o
bG8gPj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg
ICAgdmFyIGhpJDEgPSAoaGkgPj4+IG51bUJpdHMpOworICAgICAgICB2YXIgbG8kMSA9IChoaSA8
PCAoLW9mZnNldCB8IDApKSB8ICh4Wy8qIGxvICovMV0gPj4+IG51bUJpdHMpOworICAgICAgICBy
ZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgIC8qIGhpICovaGkkMSwKKyAgICAg
ICAgICAgICAgICAvKiBsbyAqLyhsbyQxID4+PiAwKQorICAgICAgICAgICAgICBdOworICAgICAg
fQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAg
ICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgLyogbG8gKi8oaGkgPj4+IDApCisgICAg
ICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4geDsKKyAgfQorfQor
CitmdW5jdGlvbiBhc3JfKHgsIG51bUJpdHMpIHsKKyAgdmFyIGhpID0geFsvKiBoaSAqLzBdOwor
ICBpZiAobnVtQml0cykgeworICAgIGlmIChudW1CaXRzIDwgMzIpIHsKKyAgICAgIHZhciBoaSQx
ID0gKGhpID4+IG51bUJpdHMpOworICAgICAgdmFyIGxvID0gKGhpIDw8ICgzMiAtIG51bUJpdHMg
fCAwKSkgfCAoeFsvKiBsbyAqLzFdID4+PiBudW1CaXRzKTsKKyAgICAgIHJldHVybiAvKiByZWNv
cmQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICovaGkkMSwKKyAgICAgICAgICAgICAgLyogbG8g
Ki8obG8gPj4+IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZh
ciBsbyQxID0gKGhpID4+IChudW1CaXRzIC0gMzIgfCAwKSk7CisgICAgICByZXR1cm4gLyogcmVj
b3JkICovWworICAgICAgICAgICAgICAvKiBoaSAqL2hpID49IDAgPyAwIDogLTEsCisgICAgICAg
ICAgICAgIC8qIGxvICovKGxvJDEgPj4+IDApCisgICAgICAgICAgICBdOworICAgIH0KKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4geDsKKyAgfQorfQorCitmdW5jdGlvbiBpc196ZXJvKHBhcmFt
KSB7CisgIGlmIChwYXJhbVsvKiBoaSAqLzBdICE9PSAwIHx8IHBhcmFtWy8qIGxvICovMV0gIT09
IDApIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biAvKiB0cnVlICovMTsKKyAgfQorfQorCitmdW5jdGlvbiBtdWwoX3RoaXMsIF9vdGhlcikgewor
ICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG90aGVyID0gX290aGVyOworICAgIHZhciAkJHRoaXMg
PSBfdGhpczsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgdmFyIGxvOworICAgIHZhciB0aGlzX2hp
ID0gJCR0aGlzWy8qIGhpICovMF07CisgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgdmFyIGV4aXQk
MiA9IDA7CisgICAgdmFyIGV4aXQkMyA9IDA7CisgICAgaWYgKHRoaXNfaGkgIT09IDApIHsKKyAg
ICAgIGV4aXQkMyA9IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKCQkdGhpc1svKiBsbyAqLzFdICE9
PSAwKSB7CisgICAgICBleGl0JDMgPSA0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biB6ZXJvOworICAgIH0KKyAgICBpZiAoZXhpdCQzID09PSA0KSB7CisgICAgICBpZiAob3RoZXJb
LyogaGkgKi8wXSAhPT0gMCkgeworICAgICAgICBleGl0JDIgPSAzOworICAgICAgfQorICAgICAg
ZWxzZSBpZiAob3RoZXJbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICBleGl0JDIgPSAzOwor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiB6ZXJvOworICAgICAgfQorICAg
IH0KKyAgICBpZiAoZXhpdCQyID09PSAzKSB7CisgICAgICBpZiAodGhpc19oaSAhPT0gLTIxNDc0
ODM2NDgpIHsKKyAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCQk
dGhpc1svKiBsbyAqLzFdICE9PSAwKSB7CisgICAgICAgIGV4aXQkMSA9IDI7CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgbG8gPSBvdGhlclsvKiBsbyAqLzFdOworICAgICAgICBleGl0
ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKGV4aXQkMSA9PT0gMikgeworICAgICAgdmFy
IG90aGVyX2hpID0gb3RoZXJbLyogaGkgKi8wXTsKKyAgICAgIHZhciBsbyQxID0gJCR0aGlzWy8q
IGxvICovMV07CisgICAgICB2YXIgZXhpdCQ0ID0gMDsKKyAgICAgIGlmIChvdGhlcl9oaSAhPT0g
LTIxNDc0ODM2NDgpIHsKKyAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKG90aGVyWy8qIGxvICovMV0gIT09IDApIHsKKyAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICBsbyA9IGxvJDE7CisgICAgICAgIGV4aXQgPSAxOwor
ICAgICAgfQorICAgICAgaWYgKGV4aXQkNCA9PT0gMykgeworICAgICAgICB2YXIgb3RoZXJfbG8g
PSBvdGhlclsvKiBsbyAqLzFdOworICAgICAgICBpZiAodGhpc19oaSA8IDApIHsKKyAgICAgICAg
ICBpZiAob3RoZXJfaGkgPCAwKSB7CisgICAgICAgICAgICBfb3RoZXIgPSBuZWcob3RoZXIpOwor
ICAgICAgICAgICAgX3RoaXMgPSBuZWcoJCR0aGlzKTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHJldHVybiBuZWcobXVsKG5lZygkJHRoaXMpLCBvdGhlcikpOworICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBlbHNlIGlmIChvdGhlcl9oaSA8IDApIHsKKyAgICAgICAgICByZXR1cm4g
bmVnKG11bCgkJHRoaXMsIG5lZyhvdGhlcikpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICB2YXIgYTQ4ID0gKHRoaXNfaGkgPj4+IDE2KTsKKyAgICAgICAgICB2YXIgYTMy
ID0gdGhpc19oaSAmIDY1NTM1OworICAgICAgICAgIHZhciBhMTYgPSAobG8kMSA+Pj4gMTYpOwor
ICAgICAgICAgIHZhciBhMDAgPSBsbyQxICYgNjU1MzU7CisgICAgICAgICAgdmFyIGI0OCA9IChv
dGhlcl9oaSA+Pj4gMTYpOworICAgICAgICAgIHZhciBiMzIgPSBvdGhlcl9oaSAmIDY1NTM1Owor
ICAgICAgICAgIHZhciBiMTYgPSAob3RoZXJfbG8gPj4+IDE2KTsKKyAgICAgICAgICB2YXIgYjAw
ID0gb3RoZXJfbG8gJiA2NTUzNTsKKyAgICAgICAgICB2YXIgYzQ4ID0gMDsKKyAgICAgICAgICB2
YXIgYzMyID0gMDsKKyAgICAgICAgICB2YXIgYzE2ID0gMDsKKyAgICAgICAgICB2YXIgYzAwID0g
YTAwICogYjAwOworICAgICAgICAgIGMxNiA9IChjMDAgPj4+IDE2KSArIGExNiAqIGIwMDsKKyAg
ICAgICAgICBjMzIgPSAoYzE2ID4+PiAxNik7CisgICAgICAgICAgYzE2ID0gKGMxNiAmIDY1NTM1
KSArIGEwMCAqIGIxNjsKKyAgICAgICAgICBjMzIgPSBjMzIgKyAoYzE2ID4+PiAxNikgKyBhMzIg
KiBiMDA7CisgICAgICAgICAgYzQ4ID0gKGMzMiA+Pj4gMTYpOworICAgICAgICAgIGMzMiA9IChj
MzIgJiA2NTUzNSkgKyBhMTYgKiBiMTY7CisgICAgICAgICAgYzQ4ICs9IChjMzIgPj4+IDE2KTsK
KyAgICAgICAgICBjMzIgPSAoYzMyICYgNjU1MzUpICsgYTAwICogYjMyOworICAgICAgICAgIGM0
OCArPSAoYzMyID4+PiAxNik7CisgICAgICAgICAgYzMyID0gYzMyICYgNjU1MzU7CisgICAgICAg
ICAgYzQ4ID0gYzQ4ICsgKGE0OCAqIGIwMCArIGEzMiAqIGIxNiArIGExNiAqIGIzMiArIGEwMCAq
IGI0OCkgJiA2NTUzNTsKKyAgICAgICAgICB2YXIgaGkgPSBjMzIgfCAoYzQ4IDw8IDE2KTsKKyAg
ICAgICAgICB2YXIgbG8kMiA9IGMwMCAmIDY1NTM1IHwgKChjMTYgJiA2NTUzNSkgPDwgMTYpOwor
ICAgICAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBoaSAq
L2hpLAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8obG8kMiA+Pj4gMCkKKyAgICAgICAgICAg
ICAgICBdOworICAgICAgICB9CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgaWYgKGV4aXQg
PT09IDEpIHsKKyAgICAgIGlmICgobG8gJiAxKSA9PT0gMCkgeworICAgICAgICByZXR1cm4gemVy
bzsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gbWluX2ludDsKKyAgICAg
IH0KKyAgICB9CisgICAgCisgIH07Cit9CisKK2Z1bmN0aW9uIHN3YXAocGFyYW0pIHsKKyAgdmFy
IGhpID0gQ2FtbF9pbnQzMi5jYW1sX2ludDMyX2Jzd2FwKHBhcmFtWy8qIGxvICovMV0pOworICB2
YXIgbG8gPSBDYW1sX2ludDMyLmNhbWxfaW50MzJfYnN3YXAocGFyYW1bLyogaGkgKi8wXSk7Cisg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogaGkgKi9oaSwKKyAgICAgICAgICAv
KiBsbyAqLyhsbyA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24geG9yKHBhcmFtLCBw
YXJhbSQxKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogaGkgKi9wYXJh
bVsvKiBoaSAqLzBdIF4gcGFyYW0kMVsvKiBoaSAqLzBdLAorICAgICAgICAgIC8qIGxvICovKChw
YXJhbVsvKiBsbyAqLzFdIF4gcGFyYW0kMVsvKiBsbyAqLzFdKSA+Pj4gMCkKKyAgICAgICAgXTsK
K30KKworZnVuY3Rpb24gb3JfKHBhcmFtLCBwYXJhbSQxKSB7CisgIHJldHVybiAvKiByZWNvcmQg
Ki9bCisgICAgICAgICAgLyogaGkgKi9wYXJhbVsvKiBoaSAqLzBdIHwgcGFyYW0kMVsvKiBoaSAq
LzBdLAorICAgICAgICAgIC8qIGxvICovKChwYXJhbVsvKiBsbyAqLzFdIHwgcGFyYW0kMVsvKiBs
byAqLzFdKSA+Pj4gMCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gYW5kXyhwYXJhbSwgcGFy
YW0kMSkgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGhpICovcGFyYW1b
LyogaGkgKi8wXSAmIHBhcmFtJDFbLyogaGkgKi8wXSwKKyAgICAgICAgICAvKiBsbyAqLygocGFy
YW1bLyogbG8gKi8xXSAmIHBhcmFtJDFbLyogbG8gKi8xXSkgPj4+IDApCisgICAgICAgIF07Cit9
CisKK2Z1bmN0aW9uIGdlKHBhcmFtLCBwYXJhbSQxKSB7CisgIHZhciBvdGhlcl9oaSA9IHBhcmFt
JDFbLyogaGkgKi8wXTsKKyAgdmFyIGhpID0gcGFyYW1bLyogaGkgKi8wXTsKKyAgaWYgKGhpID4g
b3RoZXJfaGkpIHsKKyAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgIH0KKyAgZWxzZSBpZiAoaGkg
PCBvdGhlcl9oaSkgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuICsocGFyYW1bLyogbG8gKi8xXSA+PSBwYXJhbSQxWy8qIGxvICovMV0pOworICB9
Cit9CisKK2Z1bmN0aW9uIG5lcSh4LCB5KSB7CisgIHJldHVybiAxIC0gZXEoeCwgeSk7Cit9CisK
K2Z1bmN0aW9uIGx0KHgsIHkpIHsKKyAgcmV0dXJuIDEgLSBnZSh4LCB5KTsKK30KKworZnVuY3Rp
b24gZ3QoeCwgeSkgeworICBpZiAoeFsvKiBoaSAqLzBdID4geVsvKiBoaSAqLzBdKSB7CisgICAg
cmV0dXJuIC8qIHRydWUgKi8xOworICB9CisgIGVsc2UgaWYgKHhbLyogaGkgKi8wXSA8IHlbLyog
aGkgKi8wXSkgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuICsoeFsvKiBsbyAqLzFdID4geVsvKiBsbyAqLzFdKTsKKyAgfQorfQorCitmdW5jdGlv
biBsZSh4LCB5KSB7CisgIHJldHVybiAxIC0gZ3QoeCwgeSk7Cit9CisKK2Z1bmN0aW9uIHRvX2Zs
b2F0KHBhcmFtKSB7CisgIHJldHVybiBwYXJhbVsvKiBoaSAqLzBdICogNDI5NDk2NzI5NiArIHBh
cmFtWy8qIGxvICovMV07Cit9CisKK3ZhciB0d29fcHRyXzMyX2RibCA9IE1hdGgucG93KDIsIDMy
KTsKKwordmFyIHR3b19wdHJfNjNfZGJsID0gTWF0aC5wb3coMiwgNjMpOworCit2YXIgbmVnX3R3
b19wdHJfNjMgPSAtTWF0aC5wb3coMiwgNjMpOworCitmdW5jdGlvbiBvZl9mbG9hdCh4KSB7Cisg
IGlmIChpc05hTih4KSB8fCAhaXNGaW5pdGUoeCkpIHsKKyAgICByZXR1cm4gemVybzsKKyAgfQor
ICBlbHNlIGlmICh4IDw9IG5lZ190d29fcHRyXzYzKSB7CisgICAgcmV0dXJuIG1pbl9pbnQ7Cisg
IH0KKyAgZWxzZSBpZiAoeCArIDEgPj0gdHdvX3B0cl82M19kYmwpIHsKKyAgICByZXR1cm4gbWF4
X2ludDsKKyAgfQorICBlbHNlIGlmICh4IDwgMCkgeworICAgIHJldHVybiBuZWcob2ZfZmxvYXQo
LXgpKTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgaGkgPSB4IC8gdHdvX3B0cl8zMl9kYmwgfCAw
OworICAgIHZhciBsbyA9IHggJSB0d29fcHRyXzMyX2RibCB8IDA7CisgICAgcmV0dXJuIC8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAgIC8qIGhpICovaGksCisgICAgICAgICAgICAvKiBsbyAqLyhs
byA+Pj4gMCkKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGRpdihfc2VsZiwgX290
aGVyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgb3RoZXIgPSBfb3RoZXI7CisgICAgdmFy
IHNlbGYgPSBfc2VsZjsKKyAgICB2YXIgc2VsZl9oaSA9IHNlbGZbLyogaGkgKi8wXTsKKyAgICB2
YXIgZXhpdCA9IDA7CisgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgaWYgKG90aGVyWy8qIGhpICov
MF0gIT09IDApIHsKKyAgICAgIGV4aXQkMSA9IDI7CisgICAgfQorICAgIGVsc2UgaWYgKG90aGVy
Wy8qIGxvICovMV0gIT09IDApIHsKKyAgICAgIGV4aXQkMSA9IDI7CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZGl2aXNpb25fYnlfemVybzsK
KyAgICB9CisgICAgaWYgKGV4aXQkMSA9PT0gMikgeworICAgICAgaWYgKHNlbGZfaGkgIT09IC0y
MTQ3NDgzNjQ4KSB7CisgICAgICAgIGlmIChzZWxmX2hpICE9PSAwKSB7CisgICAgICAgICAgZXhp
dCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc2VsZlsvKiBsbyAqLzFdICE9PSAw
KSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIHplcm87CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHNl
bGZbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAg
IGVsc2UgaWYgKGVxKG90aGVyLCBvbmUpIHx8IGVxKG90aGVyLCBuZWdfb25lKSkgeworICAgICAg
ICByZXR1cm4gc2VsZjsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGVxKG90aGVyLCBtaW5faW50
KSkgeworICAgICAgICByZXR1cm4gb25lOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IHZhciBvdGhlcl9oaSA9IG90aGVyWy8qIGhpICovMF07CisgICAgICAgIHZhciBoYWxmX3RoaXMg
PSBhc3JfKHNlbGYsIDEpOworICAgICAgICB2YXIgYXBwcm94ID0gbHNsXyhkaXYoaGFsZl90aGlz
LCBvdGhlciksIDEpOworICAgICAgICB2YXIgZXhpdCQyID0gMDsKKyAgICAgICAgaWYgKGFwcHJv
eFsvKiBoaSAqLzBdICE9PSAwKSB7CisgICAgICAgICAgZXhpdCQyID0gMzsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIGlmIChhcHByb3hbLyogbG8gKi8xXSAhPT0gMCkgeworICAgICAgICAgIGV4
aXQkMiA9IDM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAob3RoZXJfaGkgPCAwKSB7Cisg
ICAgICAgICAgcmV0dXJuIG9uZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICByZXR1cm4gbmVnKG9uZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMiA9PT0gMykg
eworICAgICAgICAgIHZhciB5ID0gbXVsKG90aGVyLCBhcHByb3gpOworICAgICAgICAgIHZhciBy
ZW0gPSBhZGQoc2VsZiwgbmVnKHkpKTsKKyAgICAgICAgICByZXR1cm4gYWRkKGFwcHJveCwgZGl2
KHJlbSwgb3RoZXIpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAg
aWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIHZhciBvdGhlcl9oaSQxID0gb3RoZXJbLyogaGkgKi8w
XTsKKyAgICAgIHZhciBleGl0JDMgPSAwOworICAgICAgaWYgKG90aGVyX2hpJDEgIT09IC0yMTQ3
NDgzNjQ4KSB7CisgICAgICAgIGV4aXQkMyA9IDI7CisgICAgICB9CisgICAgICBlbHNlIGlmIChv
dGhlclsvKiBsbyAqLzFdICE9PSAwKSB7CisgICAgICAgIGV4aXQkMyA9IDI7CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHplcm87CisgICAgICB9CisgICAgICBpZiAoZXhp
dCQzID09PSAyKSB7CisgICAgICAgIGlmIChzZWxmX2hpIDwgMCkgeworICAgICAgICAgIGlmIChv
dGhlcl9oaSQxIDwgMCkgeworICAgICAgICAgICAgX290aGVyID0gbmVnKG90aGVyKTsKKyAgICAg
ICAgICAgIF9zZWxmID0gbmVnKHNlbGYpOworICAgICAgICAgICAgY29udGludWUgOworICAgICAg
ICAgICAgCisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJu
IG5lZyhkaXYobmVnKHNlbGYpLCBvdGhlcikpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlIGlmIChvdGhlcl9oaSQxIDwgMCkgeworICAgICAgICAgIHJldHVybiBuZWcoZGl2
KHNlbGYsIG5lZyhvdGhlcikpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICB2YXIgcmVzID0gemVybzsKKyAgICAgICAgICB2YXIgcmVtJDEgPSBzZWxmOworICAgICAgICAg
IHdoaWxlKGdlKHJlbSQxLCBvdGhlcikpIHsKKyAgICAgICAgICAgIHZhciBhcHByb3gkMSA9IE1h
dGgubWF4KDEsIE1hdGguZmxvb3IodG9fZmxvYXQocmVtJDEpIC8gdG9fZmxvYXQob3RoZXIpKSk7
CisgICAgICAgICAgICB2YXIgbG9nMiA9IE1hdGguY2VpbChNYXRoLmxvZyhhcHByb3gkMSkgLyBN
YXRoLkxOMik7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBsb2cyIDw9IDQ4ID8gMSA6IE1hdGgu
cG93KDIsIGxvZzIgLSA0OCk7CisgICAgICAgICAgICB2YXIgYXBwcm94UmVzID0gb2ZfZmxvYXQo
YXBwcm94JDEpOworICAgICAgICAgICAgdmFyIGFwcHJveFJlbSA9IG11bChhcHByb3hSZXMsIG90
aGVyKTsKKyAgICAgICAgICAgIHdoaWxlKGFwcHJveFJlbVsvKiBoaSAqLzBdIDwgMCB8fCBndChh
cHByb3hSZW0sIHJlbSQxKSkgeworICAgICAgICAgICAgICBhcHByb3gkMSAtPSBkZWx0YTsKKyAg
ICAgICAgICAgICAgYXBwcm94UmVzID0gb2ZfZmxvYXQoYXBwcm94JDEpOworICAgICAgICAgICAg
ICBhcHByb3hSZW0gPSBtdWwoYXBwcm94UmVzLCBvdGhlcik7CisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgaWYgKGlzX3plcm8oYXBwcm94UmVzKSkgeworICAgICAgICAgICAgICBhcHByb3hS
ZXMgPSBvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBhZGQocmVzLCBhcHBy
b3hSZXMpOworICAgICAgICAgICAgcmVtJDEgPSBhZGQocmVtJDEsIG5lZyhhcHByb3hSZW0pKTsK
KyAgICAgICAgICB9OworICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICAgIAorICAgIH0KKyAgICAKKyAgfTsKK30KKworZnVuY3Rpb24gbW9kXyhzZWxmLCBvdGhl
cikgeworICB2YXIgeSA9IG11bChkaXYoc2VsZiwgb3RoZXIpLCBvdGhlcik7CisgIHJldHVybiBh
ZGQoc2VsZiwgbmVnKHkpKTsKK30KKworZnVuY3Rpb24gZGl2X21vZChzZWxmLCBvdGhlcikgewor
ICB2YXIgcXVvdGllbnQgPSBkaXYoc2VsZiwgb3RoZXIpOworICB2YXIgeSA9IG11bChxdW90aWVu
dCwgb3RoZXIpOworICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgcXVvdGllbnQsCisg
ICAgICAgICAgYWRkKHNlbGYsIG5lZyh5KSkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gY29t
cGFyZShzZWxmLCBvdGhlcikgeworICB2YXIgdiA9IENhbWxfb2JqLmNhbWxfbmF0aXZlaW50X2Nv
bXBhcmUoc2VsZlsvKiBoaSAqLzBdLCBvdGhlclsvKiBoaSAqLzBdKTsKKyAgaWYgKHYpIHsKKyAg
ICByZXR1cm4gdjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gQ2FtbF9vYmouY2FtbF9uYXRp
dmVpbnRfY29tcGFyZShzZWxmWy8qIGxvICovMV0sIG90aGVyWy8qIGxvICovMV0pOworICB9Cit9
CisKK2Z1bmN0aW9uIG9mX2ludDMyKGxvKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgLyogaGkgKi9sbyA8IDAgPyAtMSA6IDAsCisgICAgICAgICAgLyogbG8gKi8obG8gPj4+
IDApCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRvX2ludDMyKHgpIHsKKyAgcmV0dXJuIHhb
LyogbG8gKi8xXSB8IDA7Cit9CisKK2Z1bmN0aW9uIHRvX2hleCh4KSB7CisgIHZhciBhdXggPSBm
dW5jdGlvbiAodikgeworICAgIHJldHVybiAodiA+Pj4gMCkudG9TdHJpbmcoMTYpOworICB9Owor
ICB2YXIgbWF0Y2ggPSB4Wy8qIGhpICovMF07CisgIHZhciBtYXRjaCQxID0geFsvKiBsbyAqLzFd
OworICB2YXIgZXhpdCA9IDA7CisgIGlmIChtYXRjaCAhPT0gMCkgeworICAgIGV4aXQgPSAxOwor
ICB9CisgIGVsc2UgaWYgKG1hdGNoJDEgIT09IDApIHsKKyAgICBleGl0ID0gMTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gIjAiOworICB9CisgIGlmIChleGl0ID09PSAxKSB7CisgICAgaWYg
KG1hdGNoJDEgIT09IDApIHsKKyAgICAgIGlmIChtYXRjaCAhPT0gMCkgeworICAgICAgICB2YXIg
bG8gPSBhdXgoeFsvKiBsbyAqLzFdKTsKKyAgICAgICAgdmFyIHBhZCA9IDggLSBsby5sZW5ndGgg
fCAwOworICAgICAgICBpZiAocGFkIDw9IDApIHsKKyAgICAgICAgICByZXR1cm4gYXV4KHhbLyog
aGkgKi8wXSkgKyBsbzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gYXV4KHhbLyogaGkgKi8wXSkgKyAoQ2FtbF91dGlscy5yZXBlYXQocGFkLCAiMCIpICsgbG8p
OworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGF1eCh4
Wy8qIGxvICovMV0pOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBh
dXgoeFsvKiBoaSAqLzBdKSArICIwMDAwMDAwMCI7CisgICAgfQorICB9CisgIAorfQorCitmdW5j
dGlvbiBkaXNjYXJkX3NpZ24oeCkgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAg
IC8qIGhpICovMjE0NzQ4MzY0NyAmIHhbLyogaGkgKi8wXSwKKyAgICAgICAgICAvKiBsbyAqL3hb
LyogbG8gKi8xXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBmbG9hdF9vZl9iaXRzKHgpIHsK
KyAgdmFyIGludDMyID0gbmV3IEludDMyQXJyYXkoLyogYXJyYXkgKi9bCisgICAgICAgIHhbLyog
bG8gKi8xXSwKKyAgICAgICAgeFsvKiBoaSAqLzBdCisgICAgICBdKTsKKyAgcmV0dXJuIG5ldyBG
bG9hdDY0QXJyYXkoaW50MzIuYnVmZmVyKVswXTsKK30KKworZnVuY3Rpb24gYml0c19vZl9mbG9h
dCh4KSB7CisgIHZhciB0b19uYXQgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB4OworICB9
OworICB2YXIgdSA9IG5ldyBGbG9hdDY0QXJyYXkoLyogZmxvYXQgYXJyYXkgKi9beF0pOworICB2
YXIgaW50MzIgPSBuZXcgSW50MzJBcnJheSh1LmJ1ZmZlcik7CisgIHZhciBoaSA9IHRvX25hdChp
bnQzMlsxXSk7CisgIHZhciBsbyA9IHRvX25hdChpbnQzMlswXSk7CisgIHJldHVybiAvKiByZWNv
cmQgKi9bCisgICAgICAgICAgLyogaGkgKi9oaSwKKyAgICAgICAgICAvKiBsbyAqLyhsbyA+Pj4g
MCkKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZ2V0NjQocywgaSkgeworICB2YXIgaGkgPSAo
cy5jaGFyQ29kZUF0KGkgKyA0IHwgMCkgPDwgMzIpIHwgKHMuY2hhckNvZGVBdChpICsgNSB8IDAp
IDw8IDQwKSB8IChzLmNoYXJDb2RlQXQoaSArIDYgfCAwKSA8PCA0OCkgfCAocy5jaGFyQ29kZUF0
KGkgKyA3IHwgMCkgPDwgNTYpOworICB2YXIgbG8gPSBzLmNoYXJDb2RlQXQoaSkgfCAocy5jaGFy
Q29kZUF0KGkgKyAxIHwgMCkgPDwgOCkgfCAocy5jaGFyQ29kZUF0KGkgKyAyIHwgMCkgPDwgMTYp
IHwgKHMuY2hhckNvZGVBdChpICsgMyB8IDApIDw8IDI0KTsKKyAgcmV0dXJuIC8qIHJlY29yZCAq
L1sKKyAgICAgICAgICAvKiBoaSAqL2hpLAorICAgICAgICAgIC8qIGxvICovKGxvID4+PiAwKQor
ICAgICAgICBdOworfQorCitleHBvcnRzLm1pbl9pbnQgICAgICAgPSBtaW5faW50OworZXhwb3J0
cy5tYXhfaW50ICAgICAgID0gbWF4X2ludDsKK2V4cG9ydHMub25lICAgICAgICAgICA9IG9uZTsK
K2V4cG9ydHMuemVybyAgICAgICAgICA9IHplcm87CitleHBvcnRzLm5vdCAgICAgICAgICAgPSBu
b3Q7CitleHBvcnRzLm9mX2ludDMyICAgICAgPSBvZl9pbnQzMjsKK2V4cG9ydHMudG9faW50MzIg
ICAgICA9IHRvX2ludDMyOworZXhwb3J0cy5hZGQgICAgICAgICAgID0gYWRkOworZXhwb3J0cy5u
ZWcgICAgICAgICAgID0gbmVnOworZXhwb3J0cy5zdWIgICAgICAgICAgID0gc3ViOworZXhwb3J0
cy5sc2xfICAgICAgICAgID0gbHNsXzsKK2V4cG9ydHMubHNyXyAgICAgICAgICA9IGxzcl87Citl
eHBvcnRzLmFzcl8gICAgICAgICAgPSBhc3JfOworZXhwb3J0cy5pc196ZXJvICAgICAgID0gaXNf
emVybzsKK2V4cG9ydHMubXVsICAgICAgICAgICA9IG11bDsKK2V4cG9ydHMueG9yICAgICAgICAg
ICA9IHhvcjsKK2V4cG9ydHMub3JfICAgICAgICAgICA9IG9yXzsKK2V4cG9ydHMuYW5kXyAgICAg
ICAgICA9IGFuZF87CitleHBvcnRzLnN3YXAgICAgICAgICAgPSBzd2FwOworZXhwb3J0cy5nZSAg
ICAgICAgICAgID0gZ2U7CitleHBvcnRzLmVxICAgICAgICAgICAgPSBlcTsKK2V4cG9ydHMubmVx
ICAgICAgICAgICA9IG5lcTsKK2V4cG9ydHMubHQgICAgICAgICAgICA9IGx0OworZXhwb3J0cy5n
dCAgICAgICAgICAgID0gZ3Q7CitleHBvcnRzLmxlICAgICAgICAgICAgPSBsZTsKK2V4cG9ydHMu
dG9fZmxvYXQgICAgICA9IHRvX2Zsb2F0OworZXhwb3J0cy5vZl9mbG9hdCAgICAgID0gb2ZfZmxv
YXQ7CitleHBvcnRzLmRpdiAgICAgICAgICAgPSBkaXY7CitleHBvcnRzLm1vZF8gICAgICAgICAg
PSBtb2RfOworZXhwb3J0cy5kaXZfbW9kICAgICAgID0gZGl2X21vZDsKK2V4cG9ydHMuY29tcGFy
ZSAgICAgICA9IGNvbXBhcmU7CitleHBvcnRzLnRvX2hleCAgICAgICAgPSB0b19oZXg7CitleHBv
cnRzLmRpc2NhcmRfc2lnbiAgPSBkaXNjYXJkX3NpZ247CitleHBvcnRzLmZsb2F0X29mX2JpdHMg
PSBmbG9hdF9vZl9iaXRzOworZXhwb3J0cy5iaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdDsK
K2V4cG9ydHMuZ2V0NjQgICAgICAgICA9IGdldDY0OworLyogdHdvX3B0cl8zMl9kYmwgTm90IGEg
cHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX2ludDY0LmpzIC8vLy8vLy8vCivC
oCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2NhbWxpbnRlcm5h
bEZvcm1hdEJhc2ljcyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9Owor
Ly8vLy8vLy8gc3RhcnQgb2YgY2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmpzIC8vLy8vLy8vCisn
dXNlIHN0cmljdCc7CisKK3ZhciBCbG9jayA9IHJlcXVpcmUoIi4vYmxvY2siKTsKKworZnVuY3Rp
b24gZXJhc2VfcmVsKHBhcmFtKSB7CisgIGlmICh0eXBlb2YgcGFyYW0gPT09ICJudW1iZXIiKSB7
CisgICAgcmV0dXJuIC8qIEVuZF9vZl9mbXR0eSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgc3dp
dGNoIChwYXJhbS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4g
LyogQ2hhcl90eSAqL0Jsb2NrLl9fKDAsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogU3RyaW5nX3R5ICovQmxvY2suX18oMSwgW2Vy
YXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAv
KiBJbnRfdHkgKi9CbG9jay5fXygyLCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOworICAgICAgY2Fz
ZSAzIDogCisgICAgICAgICAgcmV0dXJuIC8qIEludDMyX3R5ICovQmxvY2suX18oMywgW2VyYXNl
X3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJldHVybiAvKiBO
YXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOworICAgICAg
Y2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW2Vy
YXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiAv
KiBGbG9hdF90eSAqL0Jsb2NrLl9fKDYsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBj
YXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcsIFtlcmFz
ZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICByZXR1cm4gLyog
Rm9ybWF0X2FyZ190eSAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1b
MF0sCisgICAgICAgICAgICAgICAgICAgIGVyYXNlX3JlbChwYXJhbVsxXSkKKyAgICAgICAgICAg
ICAgICAgIF0pOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgdmFyIHR5MSA9IHBhcmFtWzBd
OworICAgICAgICAgIHJldHVybiAvKiBGb3JtYXRfc3Vic3RfdHkgKi9CbG9jay5fXyg5LCBbCisg
ICAgICAgICAgICAgICAgICAgIHR5MSwKKyAgICAgICAgICAgICAgICAgICAgdHkxLAorICAgICAg
ICAgICAgICAgICAgICBlcmFzZV9yZWwocGFyYW1bMl0pCisgICAgICAgICAgICAgICAgICBdKTsK
KyAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICByZXR1cm4gLyogQWxwaGFfdHkgKi9CbG9jay5f
XygxMCwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAg
ICByZXR1cm4gLyogVGhldGFfdHkgKi9CbG9jay5fXygxMSwgW2VyYXNlX3JlbChwYXJhbVswXSld
KTsKKyAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICByZXR1cm4gLyogQW55X3R5ICovQmxvY2su
X18oMTIsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEzIDogCisgICAgICAg
ICAgcmV0dXJuIC8qIFJlYWRlcl90eSAqL0Jsb2NrLl9fKDEzLCBbZXJhc2VfcmVsKHBhcmFtWzBd
KV0pOworICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgIHJldHVybiAvKiBJZ25vcmVkX3JlYWRl
cl90eSAqL0Jsb2NrLl9fKDE0LCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOworICAgICAgCisgICAg
fQorICB9Cit9CisKK2Z1bmN0aW9uIGNvbmNhdF9mbXR0eShmbXR0eTEsIGZtdHR5MikgeworICBp
ZiAodHlwZW9mIGZtdHR5MSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gZm10dHkyOworICB9
CisgIGVsc2UgeworICAgIHN3aXRjaCAoZm10dHkxLnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6
IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxvY2suX18oMCwgW2NvbmNhdF9mbXR0
eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVy
biAvKiBTdHJpbmdfdHkgKi9CbG9jay5fXygxLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10
dHkyKV0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIC8qIEludF90eSAqL0Js
b2NrLl9fKDIsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7CisgICAgICBjYXNl
IDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50MzJfdHkgKi9CbG9jay5fXygzLCBbY29uY2F0
X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAg
cmV0dXJuIC8qIE5hdGl2ZWludF90eSAqL0Jsb2NrLl9fKDQsIFtjb25jYXRfZm10dHkoZm10dHkx
WzBdLCBmbXR0eTIpXSk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50
NjRfdHkgKi9CbG9jay5fXyg1LCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOwor
ICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3R5ICovQmxvY2suX18o
NiwgW2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgNyA6IAor
ICAgICAgICAgIHJldHVybiAvKiBCb29sX3R5ICovQmxvY2suX18oNywgW2NvbmNhdF9mbXR0eShm
bXR0eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIHJldHVybiAv
KiBGb3JtYXRfYXJnX3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICBmbXR0
eTFbMF0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXR0eShmbXR0eTFbMV0sIGZtdHR5
MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0
dXJuIC8qIEZvcm1hdF9zdWJzdF90eSAqL0Jsb2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAg
ICAgZm10dHkxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXR0eTFbMV0sCisgICAgICAgICAg
ICAgICAgICAgIGNvbmNhdF9mbXR0eShmbXR0eTFbMl0sIGZtdHR5MikKKyAgICAgICAgICAgICAg
ICAgIF0pOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIHJldHVybiAvKiBBbHBoYV90eSAq
L0Jsb2NrLl9fKDEwLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOworICAgICAg
Y2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiAvKiBUaGV0YV90eSAqL0Jsb2NrLl9fKDExLCBb
Y29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOworICAgICAgY2FzZSAxMiA6IAorICAg
ICAgICAgIHJldHVybiAvKiBBbnlfdHkgKi9CbG9jay5fXygxMiwgW2NvbmNhdF9mbXR0eShmbXR0
eTFbMF0sIGZtdHR5MildKTsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICByZXR1cm4gLyog
UmVhZGVyX3R5ICovQmxvY2suX18oMTMsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIp
XSk7CisgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgcmV0dXJuIC8qIElnbm9yZWRfcmVhZGVy
X3R5ICovQmxvY2suX18oMTQsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7Cisg
ICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gY29uY2F0X2ZtdChmbXQxLCBmbXQyKSB7
CisgIGlmICh0eXBlb2YgZm10MSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gZm10MjsKKyAg
fQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGZtdDEudGFnIHwgMCkgeworICAgICAgY2FzZSAwIDog
CisgICAgICAgICAgcmV0dXJuIC8qIENoYXIgKi9CbG9jay5fXygwLCBbY29uY2F0X2ZtdChmbXQx
WzBdLCBmbXQyKV0pOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIC8qIENhbWxf
Y2hhciAqL0Jsb2NrLl9fKDEsIFtjb25jYXRfZm10KGZtdDFbMF0sIGZtdDIpXSk7CisgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4gLyogU3RyaW5nICovQmxvY2suX18oMiwgWworICAg
ICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10
KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMyA6IAor
ICAgICAgICAgIHJldHVybiAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAg
ICAgICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQx
WzFdLCBmbXQyKQorICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAg
ICAgICByZXR1cm4gLyogSW50ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICBm
bXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAgICAgICAgICAgICAg
ICBmbXQxWzJdLAorICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbM10sIGZtdDIp
CisgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVy
biAvKiBJbnQzMiAqL0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwK
KyAgICAgICAgICAgICAgICAgICAgZm10MVsxXSwKKyAgICAgICAgICAgICAgICAgICAgZm10MVsy
XSwKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzNdLCBmbXQyKQorICAgICAg
ICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICByZXR1cm4gLyogTmF0
aXZlaW50ICovQmxvY2suX18oNiwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAg
ICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzJdLAor
ICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbM10sIGZtdDIpCisgICAgICAgICAg
ICAgICAgICBdKTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiAvKiBJbnQ2NCAq
L0Jsb2NrLl9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAg
ICAgICAgICAgZm10MVsxXSwKKyAgICAgICAgICAgICAgICAgICAgZm10MVsyXSwKKyAgICAgICAg
ICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzNdLCBmbXQyKQorICAgICAgICAgICAgICAgICAg
XSk7CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICByZXR1cm4gLyogRmxvYXQgKi9CbG9jay5f
Xyg4LCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAgICAgICAgICAg
IGZtdDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMl0sCisgICAgICAgICAgICAgICAg
ICAgIGNvbmNhdF9mbXQoZm10MVszXSwgZm10MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAg
ICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0dXJuIC8qIEJvb2wgKi9CbG9jay5fXyg5LCBbY29u
Y2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0pOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIHJl
dHVybiAvKiBGbHVzaCAqL0Jsb2NrLl9fKDEwLCBbY29uY2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0p
OworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiAvKiBTdHJpbmdfbGl0ZXJhbCAq
L0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAg
ICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsxXSwgZm10MikKKyAgICAgICAgICAgICAgICAgIF0p
OworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyX2xpdGVyYWwgKi9C
bG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAg
ICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsK
KyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0X2FyZyAqL0Jsb2Nr
Ll9fKDEzLCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAgICAgICAg
ICAgIGZtdDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsyXSwgZm10
MikKKyAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgIHJl
dHVybiAvKiBGb3JtYXRfc3Vic3QgKi9CbG9jay5fXygxNCwgWworICAgICAgICAgICAgICAgICAg
ICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAorICAgICAgICAgICAgICAg
ICAgICBjb25jYXRfZm10KGZtdDFbMl0sIGZtdDIpCisgICAgICAgICAgICAgICAgICBdKTsKKyAg
ICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICByZXR1cm4gLyogQWxwaGEgKi9CbG9jay5fXygxNSwg
W2NvbmNhdF9mbXQoZm10MVswXSwgZm10MildKTsKKyAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAg
ICByZXR1cm4gLyogVGhldGEgKi9CbG9jay5fXygxNiwgW2NvbmNhdF9mbXQoZm10MVswXSwgZm10
MildKTsKKyAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0dGluZ19s
aXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAg
ICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAgICAgICAg
ICBdKTsKKyAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0dGluZ19n
ZW4gKi9CbG9jay5fXygxOCwgWworICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAg
ICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCisgICAgICAgICAgICAgICAg
ICBdKTsKKyAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICByZXR1cm4gLyogUmVhZGVyICovQmxv
Y2suX18oMTksIFtjb25jYXRfZm10KGZtdDFbMF0sIGZtdDIpXSk7CisgICAgICBjYXNlIDIwIDog
CisgICAgICAgICAgcmV0dXJuIC8qIFNjYW5fY2hhcl9zZXQgKi9CbG9jay5fXygyMCwgWworICAg
ICAgICAgICAgICAgICAgICBmbXQxWzBdLAorICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAor
ICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMl0sIGZtdDIpCisgICAgICAgICAg
ICAgICAgICBdKTsKKyAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICByZXR1cm4gLyogU2Nhbl9n
ZXRfY291bnRlciAqL0Jsb2NrLl9fKDIxLCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0s
CisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsxXSwgZm10MikKKyAgICAgICAg
ICAgICAgICAgIF0pOworICAgICAgY2FzZSAyMiA6IAorICAgICAgICAgIHJldHVybiAvKiBTY2Fu
X25leHRfY2hhciAqL0Jsb2NrLl9fKDIyLCBbY29uY2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0pOwor
ICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgIHJldHVybiAvKiBJZ25vcmVkX3BhcmFtICovQmxv
Y2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKKyAgICAgICAgICAgICAg
ICAgICAgY29uY2F0X2ZtdChmbXQxWzFdLCBmbXQyKQorICAgICAgICAgICAgICAgICAgXSk7Cisg
ICAgICBjYXNlIDI0IDogCisgICAgICAgICAgcmV0dXJuIC8qIEN1c3RvbSAqL0Jsb2NrLl9fKDI0
LCBbCisgICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCisgICAgICAgICAgICAgICAgICAgIGZt
dDFbMV0sCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsyXSwgZm10MikKKyAg
ICAgICAgICAgICAgICAgIF0pOworICAgICAgCisgICAgfQorICB9Cit9CisKK2V4cG9ydHMuY29u
Y2F0X2ZtdHR5ID0gY29uY2F0X2ZtdHR5OworZXhwb3J0cy5lcmFzZV9yZWwgICAgPSBlcmFzZV9y
ZWw7CitleHBvcnRzLmNvbmNhdF9mbXQgICA9IGNvbmNhdF9mbXQ7CisvKiBObyBzaWRlIGVmZmVj
dCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5qcyAvLy8vLy8v
LworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1saW50
ZXJuYWxGb3JtYXQnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8v
Ly8vLy8vIHN0YXJ0IG9mIGNhbWxpbnRlcm5hbEZvcm1hdC5qcyAvLy8vLy8vLworJ3VzZSBzdHJp
Y3QnOworCit2YXIgU3lzICAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zeXMiKTsK
K3ZhciBDaGFyICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NoYXIiKTsKK3ZhciBC
bG9jayAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Jsb2NrIik7Cit2YXIgQnl0ZXMg
ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ieXRlcyIpOwordmFyIEN1cnJ5ICAgICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBCdWZmZXIgICAgICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2J1ZmZlciIpOwordmFyICQkU3RyaW5nICAgICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vc3RyaW5nIik7Cit2YXIgQ2FtbF9pbyAgICAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9jYW1sX2lvIik7Cit2YXIgQ2FtbF9vYmogICAgICAgICAgICAgICAgID0g
cmVxdWlyZSgiLi9jYW1sX29iaiIpOwordmFyIENhbWxfYnl0ZXMgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9ieXRlcyIpOwordmFyIENhbWxfZmxvYXQgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9mbG9hdCIpOwordmFyIENhbWxfaW50MzIgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9pbnQzMiIpOwordmFyIFBlcnZhc2l2ZXMgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxfZm9ybWF0ICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9mb3JtYXQiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7Cit2YXIgQ2FtbF9leGNlcHRpb25zICAgICAgICAgID0g
cmVxdWlyZSgiLi9jYW1sX2V4Y2VwdGlvbnMiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cyAgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7Cit2YXIgQ2FtbGludGVy
bmFsRm9ybWF0QmFzaWNzID0gcmVxdWlyZSgiLi9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MiKTsK
KworZnVuY3Rpb24gY3JlYXRlX2NoYXJfc2V0KCkgeworICByZXR1cm4gQnl0ZXMubWFrZSgzMiwg
LyogIlwwMDAiICovMCk7Cit9CisKK2Z1bmN0aW9uIGFkZF9pbl9jaGFyX3NldChjaGFyX3NldCwg
YykgeworICB2YXIgc3RyX2luZCA9IChjID4+PiAzKTsKKyAgdmFyIG1hc2sgPSAoMSA8PCAoYyAm
IDcpKTsKKyAgY2hhcl9zZXRbc3RyX2luZF0gPSBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KENhbWxf
Ynl0ZXMuZ2V0KGNoYXJfc2V0LCBzdHJfaW5kKSB8IG1hc2spOworICByZXR1cm4gLyogKCkgKi8w
OworfQorCit2YXIgZnJlZXplX2NoYXJfc2V0ID0gQnl0ZXMudG9fc3RyaW5nOworCitmdW5jdGlv
biByZXZfY2hhcl9zZXQoY2hhcl9zZXQpIHsKKyAgdmFyIGNoYXJfc2V0JHByaW1lID0gQnl0ZXMu
bWFrZSgzMiwgLyogIlwwMDAiICovMCk7CisgIGZvcih2YXIgaSA9IDA7IGkgPD0gMzE7ICsraSl7
CisgICAgY2hhcl9zZXQkcHJpbWVbaV0gPSBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KENhbWxfc3Ry
aW5nLmdldChjaGFyX3NldCwgaSkgXiAyNTUpOworICB9CisgIHJldHVybiBDYW1sX3N0cmluZy5i
eXRlc190b19zdHJpbmcoY2hhcl9zZXQkcHJpbWUpOworfQorCitmdW5jdGlvbiBpc19pbl9jaGFy
X3NldChjaGFyX3NldCwgYykgeworICB2YXIgc3RyX2luZCA9IChjID4+PiAzKTsKKyAgdmFyIG1h
c2sgPSAoMSA8PCAoYyAmIDcpKTsKKyAgcmV0dXJuICsoKENhbWxfc3RyaW5nLmdldChjaGFyX3Nl
dCwgc3RyX2luZCkgJiBtYXNrKSAhPT0gMCk7Cit9CisKK2Z1bmN0aW9uIHBhZF9vZl9wYWRfb3B0
KHBhZF9vcHQpIHsKKyAgaWYgKHBhZF9vcHQpIHsKKyAgICByZXR1cm4gLyogTGl0X3BhZGRpbmcg
Ki9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgIC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAg
ICAgcGFkX29wdFswXQorICAgICAgICAgICAgXSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IC8qIE5vX3BhZGRpbmcgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHByZWNfb2ZfcHJlY19vcHQo
cHJlY19vcHQpIHsKKyAgaWYgKHByZWNfb3B0KSB7CisgICAgcmV0dXJuIC8qIExpdF9wcmVjaXNp
b24gKi9bcHJlY19vcHRbMF1dOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBOb19wcmVj
aXNpb24gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zv
cm1hdChpZ24sIGZtdCkgeworICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJlciIpIHsKKyAgICBz
d2l0Y2ggKGlnbikgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFt
X2Zvcm1hdF9FQkIgKi9bLyogQ2hhciAqL0Jsb2NrLl9fKDAsIFtmbXRdKV07CisgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBDYW1sX2No
YXIgKi9CbG9jay5fXygxLCBbZm10XSldOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0
dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogQm9vbCAqL0Jsb2NrLl9fKDksIFtmbXRdKV07
CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAq
L1svKiBSZWFkZXIgKi9CbG9jay5fXygxOSwgW2ZtdF0pXTsKKyAgICAgIGNhc2UgNCA6IAorICAg
ICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIFNjYW5fbmV4dF9jaGFyICov
QmxvY2suX18oMjIsIFtmbXRdKV07CisgICAgICAKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAg
c3dpdGNoIChpZ24udGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0dXJu
IC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogU3RyaW5nICovQmxvY2suX18oMiwgWworICAgICAg
ICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblswXSksCisgICAgICAgICAgICAgICAg
ICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNhc2UgMSA6IAorICAg
ICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIENhbWxfc3RyaW5nICovQmxv
Y2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblswXSks
CisgICAgICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8q
IEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICBpZ25bMF0sCisgICAg
ICAgICAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQoaWduWzFdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIGZtdAor
ICAgICAgICAgICAgICAgICAgICBdKV07CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1
cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBJbnQzMiAqL0Jsb2NrLl9fKDUsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICBpZ25bMF0sCisgICAgICAgICAgICAgICAgICAgICAgcGFkX29mX3Bh
ZF9vcHQoaWduWzFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8w
LAorICAgICAgICAgICAgICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAgICBdKV07Cisg
ICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1sv
KiBOYXRpdmVpbnQgKi9CbG9jay5fXyg2LCBbCisgICAgICAgICAgICAgICAgICAgICAgaWduWzBd
LAorICAgICAgICAgICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0KGlnblsxXSksCisgICAgICAg
ICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAg
ICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgY2FzZSA1IDogCisgICAgICAg
ICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogSW50NjQgKi9CbG9jay5fXyg3LCBb
CisgICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgIHBh
ZF9vZl9wYWRfb3B0KGlnblsxXSksCisgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lz
aW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAg
XSldOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9F
QkIgKi9bLyogRmxvYXQgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgICAgLyog
RmxvYXRfZiAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQoaWduWzBd
KSwKKyAgICAgICAgICAgICAgICAgICAgICBwcmVjX29mX3ByZWNfb3B0KGlnblsxXSksCisgICAg
ICAgICAgICAgICAgICAgICAgZm10CisgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNh
c2UgNyA6IAorICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIEZvcm1h
dF9hcmcgKi9CbG9jay5fXygxMywgWworICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKKyAg
ICAgICAgICAgICAgICAgICAgICBpZ25bMV0sCisgICAgICAgICAgICAgICAgICAgICAgZm10Cisg
ICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIHJldHVy
biAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIEZvcm1hdF9zdWJzdCAqL0Jsb2NrLl9fKDE0LCBb
CisgICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgIGln
blsxXSwKKyAgICAgICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSld
OworICAgICAgY2FzZSA5IDogCisgICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIg
Ki9bLyogU2Nhbl9jaGFyX3NldCAqL0Jsb2NrLl9fKDIwLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgIGlnblsxXSwKKyAgICAgICAgICAgICAg
ICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgY2FzZSAxMCA6IAor
ICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIFNjYW5fZ2V0X2NvdW50
ZXIgKi9CbG9jay5fXygyMSwgWworICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKKyAgICAg
ICAgICAgICAgICAgICAgICBmbXQKKyAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgCisg
ICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGJ1ZmZlcl9jaGVja19zaXplKGJ1Ziwgb3ZlcmhlYWQp
IHsKKyAgdmFyIGxlbiA9IGJ1ZlsvKiBieXRlcyAqLzFdLmxlbmd0aDsKKyAgdmFyIG1pbl9sZW4g
PSBidWZbLyogaW5kICovMF0gKyBvdmVyaGVhZCB8IDA7CisgIGlmIChtaW5fbGVuID4gbGVuKSB7
CisgICAgdmFyIG5ld19sZW4gPSBQZXJ2YXNpdmVzLm1heCgobGVuIDw8IDEpLCBtaW5fbGVuKTsK
KyAgICB2YXIgbmV3X3N0ciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhuZXdfbGVu
KTsKKyAgICBCeXRlcy5ibGl0KGJ1ZlsvKiBieXRlcyAqLzFdLCAwLCBuZXdfc3RyLCAwLCBsZW4p
OworICAgIGJ1ZlsvKiBieXRlcyAqLzFdID0gbmV3X3N0cjsKKyAgICByZXR1cm4gLyogKCkgKi8w
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGJ1ZmZl
cl9hZGRfY2hhcihidWYsIGMpIHsKKyAgYnVmZmVyX2NoZWNrX3NpemUoYnVmLCAxKTsKKyAgYnVm
Wy8qIGJ5dGVzICovMV1bYnVmWy8qIGluZCAqLzBdXSA9IGM7CisgIGJ1ZlsvKiBpbmQgKi8wXSA9
IGJ1ZlsvKiBpbmQgKi8wXSArIDEgfCAwOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5j
dGlvbiBidWZmZXJfYWRkX3N0cmluZyhidWYsIHMpIHsKKyAgdmFyIHN0cl9sZW4gPSBzLmxlbmd0
aDsKKyAgYnVmZmVyX2NoZWNrX3NpemUoYnVmLCBzdHJfbGVuKTsKKyAgJCRTdHJpbmcuYmxpdChz
LCAwLCBidWZbLyogYnl0ZXMgKi8xXSwgYnVmWy8qIGluZCAqLzBdLCBzdHJfbGVuKTsKKyAgYnVm
Wy8qIGluZCAqLzBdID0gYnVmWy8qIGluZCAqLzBdICsgc3RyX2xlbiB8IDA7CisgIHJldHVybiAv
KiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGJ1ZmZlcl9jb250ZW50cyhidWYpIHsKKyAgcmV0dXJu
IEJ5dGVzLnN1Yl9zdHJpbmcoYnVmWy8qIGJ5dGVzICovMV0sIDAsIGJ1ZlsvKiBpbmQgKi8wXSk7
Cit9CisKK2Z1bmN0aW9uIGNoYXJfb2ZfaWNvbnYoaWNvbnYpIHsKKyAgc3dpdGNoIChpY29udikg
eworICAgIGNhc2UgMCA6IAorICAgIGNhc2UgMSA6IAorICAgIGNhc2UgMiA6IAorICAgICAgICBy
ZXR1cm4gLyogImQiICovMTAwOworICAgIGNhc2UgMyA6IAorICAgIGNhc2UgNCA6IAorICAgIGNh
c2UgNSA6IAorICAgICAgICByZXR1cm4gLyogImkiICovMTA1OworICAgIGNhc2UgNiA6IAorICAg
IGNhc2UgNyA6IAorICAgICAgICByZXR1cm4gLyogIngiICovMTIwOworICAgIGNhc2UgOCA6IAor
ICAgIGNhc2UgOSA6IAorICAgICAgICByZXR1cm4gLyogIlgiICovODg7CisgICAgY2FzZSAxMCA6
IAorICAgIGNhc2UgMTEgOiAKKyAgICAgICAgcmV0dXJuIC8qICJvIiAqLzExMTsKKyAgICBjYXNl
IDEyIDogCisgICAgICAgIHJldHVybiAvKiAidSIgKi8xMTc7CisgICAgCisgIH0KK30KKworZnVu
Y3Rpb24gY2hhcl9vZl9mY29udihmY29udikgeworICBzd2l0Y2ggKGZjb252KSB7CisgICAgY2Fz
ZSAwIDogCisgICAgY2FzZSAxIDogCisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiAi
ZiIgKi8xMDI7CisgICAgY2FzZSAzIDogCisgICAgY2FzZSA0IDogCisgICAgY2FzZSA1IDogCisg
ICAgICAgIHJldHVybiAvKiAiZSIgKi8xMDE7CisgICAgY2FzZSA2IDogCisgICAgY2FzZSA3IDog
CisgICAgY2FzZSA4IDogCisgICAgICAgIHJldHVybiAvKiAiRSIgKi82OTsKKyAgICBjYXNlIDkg
OiAKKyAgICBjYXNlIDEwIDogCisgICAgY2FzZSAxMSA6IAorICAgICAgICByZXR1cm4gLyogImci
ICovMTAzOworICAgIGNhc2UgMTIgOiAKKyAgICBjYXNlIDEzIDogCisgICAgY2FzZSAxNCA6IAor
ICAgICAgICByZXR1cm4gLyogIkciICovNzE7CisgICAgY2FzZSAxNSA6IAorICAgICAgICByZXR1
cm4gLyogIkYiICovNzA7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gY2hhcl9vZl9jb3VudGVy
KGNvdW50ZXIpIHsKKyAgc3dpdGNoIChjb3VudGVyKSB7CisgICAgY2FzZSAwIDogCisgICAgICAg
IHJldHVybiAvKiAibCIgKi8xMDg7CisgICAgY2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiAi
biIgKi8xMTA7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiAiTiIgKi83ODsKKyAg
ICAKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfY2hhcl9zZXQoYnVmLCBjaGFyX3NldCkgewor
ICB2YXIgcHJpbnRfY2hhciA9IGZ1bmN0aW9uIChidWYsIGkpIHsKKyAgICB2YXIgYyA9IFBlcnZh
c2l2ZXMuY2hhcl9vZl9pbnQoaSk7CisgICAgaWYgKGMgIT09IDM3KSB7CisgICAgICBpZiAoYyAh
PT0gNjQpIHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGMpOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3
KTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJAIiAqLzY0KTsKKyAg
ICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAi
JSIgKi8zNyk7CisgICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcp
OworICAgIH0KKyAgfTsKKyAgdmFyIHByaW50X291dCA9IGZ1bmN0aW9uIChzZXQsIF9pKSB7Cisg
ICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIGkgPSBfaTsKKyAgICAgIGlmIChpIDwgMjU2KSB7
CisgICAgICAgIGlmIChpc19pbl9jaGFyX3NldChzZXQsIFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQo
aSkpKSB7CisgICAgICAgICAgdmFyIHNldCQxID0gc2V0OworICAgICAgICAgIHZhciBpJDEgPSBp
OworICAgICAgICAgIHZhciBtYXRjaCA9IFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoaSQxKTsKKyAg
ICAgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQ1IHwgMDsKKyAgICAgICAgICBpZiAoc3dp
dGNoZXIgPiA0OCB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICAgIGlmIChzd2l0Y2hlciA+
PSAyMTApIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHByaW50X2NoYXIoYnVmLCAyNTUpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBwcmlu
dF9zZWNvbmQoc2V0JDEsIGkkMSArIDEgfCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSBpZiAoc3dpdGNoZXIgPiA0NyB8fCBzd2l0Y2hlciA8IDEpIHsKKyAg
ICAgICAgICAgIHJldHVybiBwcmludF9vdXQoc2V0JDEsIGkkMSArIDEgfCAwKTsKKyAgICAgICAg
ICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcHJpbnRfc2Vjb25kKHNl
dCQxLCBpJDEgKyAxIHwgMCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIF9pID0gaSArIDEgfCAwOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAw
OworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBwcmludF9zZWNvbmQgPSBmdW5jdGlvbiAo
c2V0LCBpKSB7CisgICAgaWYgKGlzX2luX2NoYXJfc2V0KHNldCwgUGVydmFzaXZlcy5jaGFyX29m
X2ludChpKSkpIHsKKyAgICAgIHZhciBtYXRjaCA9IFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoaSk7
CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQ1IHwg
MDsKKyAgICAgIGlmIChzd2l0Y2hlciA+IDQ4IHx8IHN3aXRjaGVyIDwgMCkgeworICAgICAgICBp
ZiAoc3dpdGNoZXIgPj0gMjEwKSB7CisgICAgICAgICAgcHJpbnRfY2hhcihidWYsIDI1NCk7Cisg
ICAgICAgICAgcmV0dXJuIHByaW50X2NoYXIoYnVmLCAyNTUpOworICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBl
bHNlIGlmIChzd2l0Y2hlciA+IDQ3IHx8IHN3aXRjaGVyIDwgMSkgeworICAgICAgICBpZiAoaXNf
aW5fY2hhcl9zZXQoc2V0LCBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KGkgKyAxIHwgMCkpKSB7Cisg
ICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
cHJpbnRfY2hhcihidWYsIGkgLSAxIHwgMCk7CisgICAgICAgICAgcmV0dXJuIHByaW50X291dChz
ZXQsIGkgKyAxIHwgMCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgIGlm
IChpc19pbl9jaGFyX3NldChzZXQsIFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoaSArIDEgfCAwKSkp
IHsKKyAgICAgICAgICB2YXIgc2V0JDEgPSBzZXQ7CisgICAgICAgICAgdmFyIGkkMSA9IGkgLSAx
IHwgMDsKKyAgICAgICAgICB2YXIgX2ogPSBpICsgMiB8IDA7CisgICAgICAgICAgd2hpbGUodHJ1
ZSkgeworICAgICAgICAgICAgdmFyIGogPSBfajsKKyAgICAgICAgICAgIGlmIChqID09PSAyNTYg
fHwgIWlzX2luX2NoYXJfc2V0KHNldCQxLCBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KGopKSkgewor
ICAgICAgICAgICAgICBwcmludF9jaGFyKGJ1ZiwgaSQxKTsKKyAgICAgICAgICAgICAgcHJpbnRf
Y2hhcihidWYsIC8qICItIiAqLzQ1KTsKKyAgICAgICAgICAgICAgcHJpbnRfY2hhcihidWYsIGog
LSAxIHwgMCk7CisgICAgICAgICAgICAgIGlmIChqIDwgMjU2KSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHByaW50X291dChzZXQkMSwgaiArIDEgfCAwKTsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9q
ID0gaiArIDEgfCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgfQorICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgcHJpbnRfY2hhcihidWYsIGkgLSAxIHwgMCk7CisgICAgICAgICAgcHJpbnRfY2hh
cihidWYsIGkpOworICAgICAgICAgIHJldHVybiBwcmludF9vdXQoc2V0LCBpICsgMiB8IDApOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBwcmlu
dF9jaGFyKGJ1ZiwgaSAtIDEgfCAwKTsKKyAgICAgIHJldHVybiBwcmludF9vdXQoc2V0LCBpICsg
MSB8IDApOworICAgIH0KKyAgfTsKKyAgdmFyIHByaW50X3N0YXJ0ID0gZnVuY3Rpb24gKHNldCkg
eworICAgIHZhciBpc19hbG9uZSA9IGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2hfMDAw
ID0gQ2hhci5jaHIoYyAtIDEgfCAwKTsKKyAgICAgIHZhciBtYXRjaF8wMDEgPSBDaGFyLmNocihj
ICsgMSB8IDApOworICAgICAgaWYgKGlzX2luX2NoYXJfc2V0KHNldCwgYykpIHsKKyAgICAgICAg
cmV0dXJuIDEgLSAoaXNfaW5fY2hhcl9zZXQoc2V0LCBtYXRjaF8wMDApICYmIGlzX2luX2NoYXJf
c2V0KHNldCwgbWF0Y2hfMDAxKSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0
dXJuIC8qIGZhbHNlICovMDsKKyAgICAgIH0KKyAgICB9OworICAgIGlmIChpc19hbG9uZSgvKiAi
XSIgKi85MykpIHsKKyAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJdIiAqLzkzKTsKKyAg
ICB9CisgICAgcHJpbnRfb3V0KHNldCwgMSk7CisgICAgaWYgKGlzX2Fsb25lKC8qICItIiAqLzQ1
KSkgeworICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICItIiAqLzQ1KTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH07CisgIGJ1ZmZlcl9h
ZGRfY2hhcihidWYsIC8qICJbIiAqLzkxKTsKKyAgcHJpbnRfc3RhcnQoaXNfaW5fY2hhcl9zZXQo
Y2hhcl9zZXQsIC8qICJcMDAwIiAqLzApID8gKGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJeIiAq
Lzk0KSwgcmV2X2NoYXJfc2V0KGNoYXJfc2V0KSkgOiBjaGFyX3NldCk7CisgIHJldHVybiBidWZm
ZXJfYWRkX2NoYXIoYnVmLCAvKiAiXSIgKi85Myk7Cit9CisKK2Z1bmN0aW9uIGJwcmludF9wYWR0
eShidWYsIHBhZHR5KSB7CisgIHN3aXRjaCAocGFkdHkpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAg
ICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICItIiAqLzQ1KTsKKyAgICBjYXNlIDEg
OiAKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0
dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIwIiAqLzQ4KTsKKyAgICAKKyAgfQorfQorCitm
dW5jdGlvbiBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpIHsKKyAgaWYgKGlnbl9m
bGFnKSB7CisgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJfIiAqLzk1KTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfcGFk
X29wdChidWYsIHBhZF9vcHQpIHsKKyAgaWYgKHBhZF9vcHQpIHsKKyAgICByZXR1cm4gYnVmZmVy
X2FkZF9zdHJpbmcoYnVmLCAiIiArIHBhZF9vcHRbMF0pOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gYnByaW50X3BhZGRpbmcoYnVmLCBw
YWQpIHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8qICgp
ICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBicHJpbnRfcGFkdHkoYnVmLCBwYWRbMF0pOworICAg
IGlmIChwYWQudGFnKSB7CisgICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIioi
ICovNDIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBidWZmZXJfYWRkX3N0cmlu
ZyhidWYsICIiICsgcGFkWzFdKTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gYnByaW50X3By
ZWNpc2lvbihidWYsIHByZWMpIHsKKyAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgewor
ICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICByZXR1cm4gYnVmZmVyX2FkZF9zdHJpbmcoYnVm
LCAiLioiKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAg
IH0KKyAgfQorICBlbHNlIHsKKyAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiLiIgKi80Nik7
CisgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiIgKyBwcmVjWzBdKTsKKyAgfQor
fQorCitmdW5jdGlvbiBicHJpbnRfaWNvbnZfZmxhZyhidWYsIGljb252KSB7CisgIHN3aXRjaCAo
aWNvbnYpIHsKKyAgICBjYXNlIDEgOiAKKyAgICBjYXNlIDQgOiAKKyAgICAgICAgcmV0dXJuIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICIrIiAqLzQzKTsKKyAgICBjYXNlIDIgOiAKKyAgICBjYXNl
IDUgOiAKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIgIiAqLzMyKTsK
KyAgICBjYXNlIDcgOiAKKyAgICBjYXNlIDkgOiAKKyAgICBjYXNlIDExIDogCisgICAgICAgIHJl
dHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiIyIgKi8zNSk7CisgICAgY2FzZSAwIDogCisg
ICAgY2FzZSAzIDogCisgICAgY2FzZSA2IDogCisgICAgY2FzZSA4IDogCisgICAgY2FzZSAxMCA6
IAorICAgIGNhc2UgMTIgOiAKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAKKyAgfQor
fQorCitmdW5jdGlvbiBicHJpbnRfaW50X2ZtdChidWYsIGlnbl9mbGFnLCBpY29udiwgcGFkLCBw
cmVjKSB7CisgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgYnByaW50X2ln
bm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgYnByaW50X2ljb252X2ZsYWcoYnVmLCBpY29u
dik7CisgIGJwcmludF9wYWRkaW5nKGJ1ZiwgcGFkKTsKKyAgYnByaW50X3ByZWNpc2lvbihidWYs
IHByZWMpOworICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgY2hhcl9vZl9pY29udihpY29u
dikpOworfQorCitmdW5jdGlvbiBicHJpbnRfYWx0aW50X2ZtdChidWYsIGlnbl9mbGFnLCBpY29u
diwgcGFkLCBwcmVjLCBjKSB7CisgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsK
KyAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgYnByaW50X2ljb252X2Zs
YWcoYnVmLCBpY29udik7CisgIGJwcmludF9wYWRkaW5nKGJ1ZiwgcGFkKTsKKyAgYnByaW50X3By
ZWNpc2lvbihidWYsIHByZWMpOworICBidWZmZXJfYWRkX2NoYXIoYnVmLCBjKTsKKyAgcmV0dXJu
IGJ1ZmZlcl9hZGRfY2hhcihidWYsIGNoYXJfb2ZfaWNvbnYoaWNvbnYpKTsKK30KKworZnVuY3Rp
b24gYnByaW50X2Zjb252X2ZsYWcoYnVmLCBmY29udikgeworICBzd2l0Y2ggKGZjb252KSB7Cisg
ICAgY2FzZSAxIDogCisgICAgY2FzZSA0IDogCisgICAgY2FzZSA3IDogCisgICAgY2FzZSAxMCA6
IAorICAgIGNhc2UgMTMgOiAKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8q
ICIrIiAqLzQzKTsKKyAgICBjYXNlIDIgOiAKKyAgICBjYXNlIDUgOiAKKyAgICBjYXNlIDggOiAK
KyAgICBjYXNlIDExIDogCisgICAgY2FzZSAxNCA6IAorICAgICAgICByZXR1cm4gYnVmZmVyX2Fk
ZF9jaGFyKGJ1ZiwgLyogIiAiICovMzIpOworICAgIGNhc2UgMCA6IAorICAgIGNhc2UgMyA6IAor
ICAgIGNhc2UgNiA6IAorICAgIGNhc2UgOSA6IAorICAgIGNhc2UgMTIgOiAKKyAgICBjYXNlIDE1
IDogCisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24g
YnByaW50X2Zsb2F0X2ZtdChidWYsIGlnbl9mbGFnLCBmY29udiwgcGFkLCBwcmVjKSB7CisgIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgYnByaW50X2lnbm9yZWRfZmxhZyhi
dWYsIGlnbl9mbGFnKTsKKyAgYnByaW50X2Zjb252X2ZsYWcoYnVmLCBmY29udik7CisgIGJwcmlu
dF9wYWRkaW5nKGJ1ZiwgcGFkKTsKKyAgYnByaW50X3ByZWNpc2lvbihidWYsIHByZWMpOworICBy
ZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgY2hhcl9vZl9mY29udihmY29udikpOworfQorCitm
dW5jdGlvbiBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoZm9ybWF0dGluZ19saXQpIHsKKyAgaWYg
KHR5cGVvZiBmb3JtYXR0aW5nX2xpdCA9PT0gIm51bWJlciIpIHsKKyAgICBzd2l0Y2ggKGZvcm1h
dHRpbmdfbGl0KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gIkBdIjsKKyAg
ICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAiQH0iOworICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgcmV0dXJuICJAPyI7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4g
IkBcbiI7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gIkAuIjsKKyAgICAgIGNh
c2UgNSA6IAorICAgICAgICAgIHJldHVybiAiQEAiOworICAgICAgY2FzZSA2IDogCisgICAgICAg
ICAgcmV0dXJuICJAJSI7CisgICAgICAKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNo
IChmb3JtYXR0aW5nX2xpdC50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgIHJldHVybiBmb3JtYXR0aW5nX2xpdFswXTsKKyAgICAgIGNhc2UgMiA6
IAorICAgICAgICAgIHJldHVybiAiQCIgKyBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0
ZXMubWFrZSgxLCBmb3JtYXR0aW5nX2xpdFswXSkpOworICAgICAgCisgICAgfQorICB9Cit9CisK
K2Z1bmN0aW9uIHN0cmluZ19vZl9mb3JtYXR0aW5nX2dlbihmb3JtYXR0aW5nX2dlbikgeworICBy
ZXR1cm4gZm9ybWF0dGluZ19nZW5bMF1bMV07Cit9CisKK2Z1bmN0aW9uIGJwcmludF9jaGFyX2xp
dGVyYWwoYnVmLCBjaHIpIHsKKyAgaWYgKGNociAhPT0gMzcpIHsKKyAgICByZXR1cm4gYnVmZmVy
X2FkZF9jaGFyKGJ1ZiwgY2hyKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gYnVmZmVyX2Fk
ZF9zdHJpbmcoYnVmLCAiJSUiKTsKKyAgfQorfQorCitmdW5jdGlvbiBicHJpbnRfc3RyaW5nX2xp
dGVyYWwoYnVmLCBzdHIpIHsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBzdHIubGVuZ3Ro
IC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgYnByaW50X2NoYXJfbGl0ZXJhbChi
dWYsIENhbWxfc3RyaW5nLmdldChzdHIsIGkpKTsKKyAgfQorICByZXR1cm4gLyogKCkgKi8wOwor
fQorCitmdW5jdGlvbiBicHJpbnRfZm10dHkoYnVmLCBfZm10dHkpIHsKKyAgd2hpbGUodHJ1ZSkg
eworICAgIHZhciBmbXR0eSA9IF9mbXR0eTsKKyAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVt
YmVyIikgeworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICBzd2l0Y2ggKGZtdHR5LnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAg
ICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlYyIpOworICAgICAgICAgICAgX2ZtdHR5ID0gZm10
dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEgOiAKKyAg
ICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVzIik7CisgICAgICAgICAgICBfZm10
dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJWkiKTsKKyAgICAgICAg
ICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgY2FzZSAzIDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlbGkiKTsK
KyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYs
ICIlbmkiKTsKKyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAgICAgICAgY29u
dGludWUgOworICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX3N0
cmluZyhidWYsICIlTGkiKTsKKyAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOworICAgICAg
ICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICBidWZm
ZXJfYWRkX3N0cmluZyhidWYsICIlZiIpOworICAgICAgICAgICAgX2ZtdHR5ID0gZm10dHlbMF07
CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAg
ICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVCIik7CisgICAgICAgICAgICBfZm10dHkgPSBm
bXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgOCA6IAor
ICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJXsiKTsKKyAgICAgICAgICAgIGJw
cmludF9mbXR0eShidWYsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5n
KGJ1ZiwgIiV9Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVsxXTsKKyAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgYnVmZmVyX2Fk
ZF9zdHJpbmcoYnVmLCAiJSgiKTsKKyAgICAgICAgICAgIGJwcmludF9mbXR0eShidWYsIGZtdHR5
WzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiUpIik7CisgICAgICAg
ICAgICBfZm10dHkgPSBmbXR0eVsyXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVhIik7
CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1
ZiwgIiV0Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRf
c3RyaW5nKGJ1ZiwgIiU/Iik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIGJ1
ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVyIik7CisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVsw
XTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAg
ICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVfciIpOworICAgICAgICAgICAgX2ZtdHR5
ID0gZm10dHlbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAg
IH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGludF9vZl9jdXN0b21fYXJpdHkocGFyYW0p
IHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuIDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5KHBh
cmFtWzBdKSB8IDA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVu
Y3Rpb24gYnByaW50X2ZtdChidWYsIGZtdCkgeworICB2YXIgX2ZtdCA9IGZtdDsKKyAgdmFyIF9p
Z25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpZ25fZmxh
ZyA9IF9pZ25fZmxhZzsKKyAgICB2YXIgZm10JDEgPSBfZm10OworICAgIGlmICh0eXBlb2YgZm10
JDEgPT09ICJudW1iZXIiKSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIHN3aXRjaCAoZm10JDEudGFnIHwgMCkgeworICAgICAgICBjYXNlIDAgOiAK
KyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAg
ICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBidWZm
ZXJfYWRkX2NoYXIoYnVmLCAvKiAiYyIgKi85OSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAv
KiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRf
Y2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWco
YnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiQyIg
Ki82Nyk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAg
ICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsK
KyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAg
ICAgICBicHJpbnRfcGFkZGluZyhidWYsIGZtdCQxWzBdKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9h
ZGRfY2hhcihidWYsIC8qICJzIiAqLzExNSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBm
YWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAgICAgICAgICBjb250
aW51ZSA7CisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hh
cihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVm
LCBpZ25fZmxhZyk7CisgICAgICAgICAgICBicHJpbnRfcGFkZGluZyhidWYsIGZtdCQxWzBdKTsK
KyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJTIiAqLzgzKTsKKyAgICAgICAg
ICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsx
XTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAg
ICAgICAgYnByaW50X2ludF9mbXQoYnVmLCBpZ25fZmxhZywgZm10JDFbMF0sIGZtdCQxWzFdLCBm
bXQkMVsyXSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAg
ICAgICBfZm10ID0gZm10JDFbM107CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGJwcmludF9hbHRpbnRfZm10KGJ1ZiwgaWduX2ZsYWcs
IGZtdCQxWzBdLCBmbXQkMVsxXSwgZm10JDFbMl0sIC8qICJsIiAqLzEwOCk7CisgICAgICAgICAg
ICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbM107
CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAg
ICAgIGJwcmludF9hbHRpbnRfZm10KGJ1ZiwgaWduX2ZsYWcsIGZtdCQxWzBdLCBmbXQkMVsxXSwg
Zm10JDFbMl0sIC8qICJuIiAqLzExMCk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxz
ZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbM107CisgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIGJwcmludF9hbHRpbnRfZm10
KGJ1ZiwgaWduX2ZsYWcsIGZtdCQxWzBdLCBmbXQkMVsxXSwgZm10JDFbMl0sIC8qICJMIiAqLzc2
KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9m
bXQgPSBmbXQkMVszXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2Ug
OCA6IAorICAgICAgICAgICAgYnByaW50X2Zsb2F0X2ZtdChidWYsIGlnbl9mbGFnLCBmbXQkMVsw
XSwgZm10JDFbMV0sIGZtdCQxWzJdKTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNl
ICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVszXTsKKyAgICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1
ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGln
bl9mbGFnKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJCIiAqLzY2KTsK
KyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQg
PSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTAg
OiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiUhIik7CisgICAgICAgICAg
ICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBj
YXNlIDExIDogCisgICAgICAgICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwoYnVmLCBmbXQkMVsw
XSk7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBicHJpbnRfY2hhcl9saXRlcmFs
KGJ1ZiwgZm10JDFbMF0pOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzFdOworICAgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgYnVmZmVy
X2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnByaW50X2lnbm9yZWRf
ZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAgIGJwcmludF9wYWRfb3B0KGJ1ZiwgZm10
JDFbMF0pOworICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogInsiICovMTIzKTsK
KyAgICAgICAgICAgIGJwcmludF9mbXR0eShidWYsIGZtdCQxWzFdKTsKKyAgICAgICAgICAgIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRf
Y2hhcihidWYsIC8qICJ9IiAqLzEyNSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxz
ZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMl07CisgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIo
YnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1Ziwg
aWduX2ZsYWcpOworICAgICAgICAgICAgYnByaW50X3BhZF9vcHQoYnVmLCBmbXQkMVswXSk7Cisg
ICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiKCIgKi80MCk7CisgICAgICAgICAg
ICBicHJpbnRfZm10dHkoYnVmLCBmbXQkMVsxXSk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2No
YXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAv
KiAiKSIgKi80MSk7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7CisgICAg
ICAgICAgICBfZm10ID0gZm10JDFbMl07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIg
Ki8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOwor
ICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogImEiICovOTcpOworICAgICAgICAg
ICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzBd
OworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxNiA6IAorICAgICAg
ICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOworICAgICAgICAgICAgYnBy
aW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRf
Y2hhcihidWYsIC8qICJ0IiAqLzExNik7CisgICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiBmYWxz
ZSAqLzA7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMF07CisgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBicHJpbnRfc3RyaW5nX2xp
dGVyYWwoYnVmLCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoZm10JDFbMF0pKTsKKyAgICAgICAg
ICAgIF9mbXQgPSBmbXQkMVsxXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
IGNhc2UgMTggOiAKKyAgICAgICAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbChidWYsICJAeyIp
OworICAgICAgICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsKGJ1Ziwgc3RyaW5nX29mX2Zvcm1h
dHRpbmdfZ2VuKGZtdCQxWzBdKSk7CisgICAgICAgICAgICBfZm10ID0gZm10JDFbMV07CisgICAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgICBi
dWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7CisgICAgICAgICAgICBicHJpbnRfaWdu
b3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOworICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1
ZiwgLyogInIiICovMTE0KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsK
KyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8q
ICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxh
Zyk7CisgICAgICAgICAgICBicHJpbnRfcGFkX29wdChidWYsIGZtdCQxWzBdKTsKKyAgICAgICAg
ICAgIGJwcmludF9jaGFyX3NldChidWYsIGZtdCQxWzFdKTsKKyAgICAgICAgICAgIF9pZ25fZmxh
ZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsyXTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICAgIGJ1ZmZl
cl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVk
X2ZsYWcoYnVmLCBpZ25fZmxhZyk7CisgICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCBj
aGFyX29mX2NvdW50ZXIoZm10JDFbMF0pKTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZh
bHNlICovMDsKKyAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsxXTsKKyAgICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hh
cihidWYsIC8qICIlIiAqLzM3KTsKKyAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVm
LCBpZ25fZmxhZyk7CisgICAgICAgICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwoYnVmLCAiMGMi
KTsKKyAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIF9m
bXQgPSBmbXQkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2Ug
MjMgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zv
cm1hdChmbXQkMVswXSwgZm10JDFbMV0pOworICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgICBfZm10ID0gbWF0Y2hbMF07CisgICAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgICBmb3IodmFyIF9pID0gMSAs
X2lfZmluaXNoID0gaW50X29mX2N1c3RvbV9hcml0eShmbXQkMVswXSk7IF9pIDw9IF9pX2Zpbmlz
aDsgKytfaSl7CisgICAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3
KTsKKyAgICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKKyAg
ICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIj8iICovNjMpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOworICAgICAgICAgICAg
X2ZtdCA9IGZtdCQxWzJdOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisg
ICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfZm10KGZtdCkgewor
ICB2YXIgYnVmID0gLyogcmVjb3JkICovWworICAgIC8qIGluZCAqLzAsCisgICAgLyogYnl0ZXMg
Ki9uZXcgQXJyYXkoMTYpCisgIF07CisgIGJwcmludF9mbXQoYnVmLCBmbXQpOworICByZXR1cm4g
YnVmZmVyX2NvbnRlbnRzKGJ1Zik7Cit9CisKK2Z1bmN0aW9uIHN5bW0ocGFyYW0pIHsKKyAgaWYg
KHR5cGVvZiBwYXJhbSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gLyogRW5kX29mX2ZtdHR5
ICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKHBhcmFtLnRhZyB8IDApIHsKKyAgICAg
IGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxvY2suX18oMCwgW3N5
bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogU3Ry
aW5nX3R5ICovQmxvY2suX18oMSwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICByZXR1cm4gLyogSW50X3R5ICovQmxvY2suX18oMiwgW3N5bW0ocGFyYW1bMF0p
XSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogSW50MzJfdHkgKi9CbG9j
ay5fXygzLCBbc3ltbShwYXJhbVswXSldKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJl
dHVybiAvKiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbc3ltbShwYXJhbVswXSldKTsKKyAg
ICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiAvKiBJbnQ2NF90eSAqL0Jsb2NrLl9fKDUs
IFtzeW1tKHBhcmFtWzBdKV0pOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgcmV0dXJuIC8q
IEZsb2F0X3R5ICovQmxvY2suX18oNiwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDcg
OiAKKyAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcsIFtzeW1tKHBhcmFt
WzBdKV0pOworICAgICAgY2FzZSA4IDogCisgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9hcmdf
dHkgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgIHBhcmFtWzBdLAorICAgICAg
ICAgICAgICAgICAgICBzeW1tKHBhcmFtWzFdKQorICAgICAgICAgICAgICAgICAgXSk7CisgICAg
ICBjYXNlIDkgOiAKKyAgICAgICAgICByZXR1cm4gLyogRm9ybWF0X3N1YnN0X3R5ICovQmxvY2su
X18oOSwgWworICAgICAgICAgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW1bMF0sCisgICAgICAgICAgICAgICAgICAgIHN5bW0ocGFyYW1bMl0pCisgICAgICAg
ICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICByZXR1cm4gLyogQWxw
aGFfdHkgKi9CbG9jay5fXygxMCwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDExIDog
CisgICAgICAgICAgcmV0dXJuIC8qIFRoZXRhX3R5ICovQmxvY2suX18oMTEsIFtzeW1tKHBhcmFt
WzBdKV0pOworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHJldHVybiAvKiBBbnlfdHkgKi9C
bG9jay5fXygxMiwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICBjYXNlIDEzIDogCisgICAgICAg
ICAgcmV0dXJuIC8qIFJlYWRlcl90eSAqL0Jsb2NrLl9fKDEzLCBbc3ltbShwYXJhbVswXSldKTsK
KyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICByZXR1cm4gLyogSWdub3JlZF9yZWFkZXJfdHkg
Ki9CbG9jay5fXygxNCwgW3N5bW0ocGFyYW1bMF0pXSk7CisgICAgICAKKyAgICB9CisgIH0KK30K
KworZnVuY3Rpb24gZm10dHlfcmVsX2RldChwYXJhbSkgeworICBpZiAodHlwZW9mIHBhcmFtID09
PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJl
ZmwgKi8wOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAg
ICAgICAgfQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChwYXJhbS50
YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICB2YXIgbWF0Y2ggPSBmbXR0eV9y
ZWxfZGV0KHBhcmFtWzBdKTsKKyAgICAgICAgICB2YXIgYWYgPSBtYXRjaFsxXTsKKyAgICAgICAg
ICB2YXIgZmEgPSBtYXRjaFswXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8x
KGZhLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICov
MDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmLCAvKiBSZWZsICovMCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICBtYXRjaFsyXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoWzNdCisg
ICAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHZhciBtYXRjaCQx
ID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDEgPSBtYXRjaCQx
WzFdOworICAgICAgICAgIHZhciBmYSQxID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIEN1cnJ5Ll8xKGZhJDEsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkMSwg
LyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Cisg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMVsyXSwKKyAgICAg
ICAgICAgICAgICAgIG1hdGNoJDFbM10KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgdmFyIG1hdGNoJDIgPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKKyAg
ICAgICAgICB2YXIgYWYkMiA9IG1hdGNoJDJbMV07CisgICAgICAgICAgdmFyIGZhJDIgPSBtYXRj
aCQyWzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkMiwgLyogUmVm
bCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICBDdXJyeS5fMShhZiQyLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICBtYXRjaCQyWzJdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMlszXQorICAgICAg
ICAgICAgICAgIF07CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMyA9IGZt
dHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAgICAgICAgIHZhciBhZiQzID0gbWF0Y2gkM1sxXTsK
KyAgICAgICAgICB2YXIgZmEkMyA9IG1hdGNoJDNbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICBDdXJyeS5fMShmYSQzLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDMsIC8qIFJl
ZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDNbMl0sCisgICAgICAgICAg
ICAgICAgICBtYXRjaCQzWzNdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgNCA6IAor
ICAgICAgICAgIHZhciBtYXRjaCQ0ID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAg
ICAgdmFyIGFmJDQgPSBtYXRjaCQ0WzFdOworICAgICAgICAgIHZhciBmYSQ0ID0gbWF0Y2gkNFsw
XTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGZhJDQsIC8qIFJlZmwgKi8w
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQ3VycnkuXzEoYWYkNCwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICAgbWF0Y2gkNFsyXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDRbM10KKyAgICAgICAgICAg
ICAgICBdOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIG1hdGNoJDUgPSBmbXR0eV9y
ZWxfZGV0KHBhcmFtWzBdKTsKKyAgICAgICAgICB2YXIgYWYkNSA9IG1hdGNoJDVbMV07CisgICAg
ICAgICAgdmFyIGZhJDUgPSBtYXRjaCQ1WzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
Q3VycnkuXzEoZmEkNSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQ1LCAvKiBSZWZsICov
MCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQ1WzJdLAorICAgICAgICAgICAgICAg
ICAgbWF0Y2gkNVszXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDYgOiAKKyAgICAg
ICAgICB2YXIgbWF0Y2gkNiA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAgICAgICAgIHZh
ciBhZiQ2ID0gbWF0Y2gkNlsxXTsKKyAgICAgICAgICB2YXIgZmEkNiA9IG1hdGNoJDZbMF07Cisg
ICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQ2LCAvKiBSZWZsICovMCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
IEN1cnJ5Ll8xKGFmJDYsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIG1h
dGNoJDZbMl0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQ2WzNdCisgICAgICAgICAgICAgICAg
XTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHZhciBtYXRjaCQ3ID0gZm10dHlfcmVsX2Rl
dChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDcgPSBtYXRjaCQ3WzFdOworICAgICAgICAg
IHZhciBmYSQ3ID0gbWF0Y2gkN1swXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5
Ll8xKGZhJDcsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJl
ZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkNywgLyogUmVmbCAqLzApOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkN1syXSwKKyAgICAgICAgICAgICAgICAgIG1h
dGNoJDdbM10KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSA4IDogCisgICAgICAgICAg
dmFyIG1hdGNoJDggPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzFdKTsKKyAgICAgICAgICB2YXIgYWYk
OCA9IG1hdGNoJDhbMV07CisgICAgICAgICAgdmFyIGZhJDggPSBtYXRjaCQ4WzBdOworICAgICAg
ICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkOCwgLyogUmVmbCAqLzApOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJy
eS5fMShhZiQ4LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBS
ZWZsICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQ4
WzJdLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkOFszXQorICAgICAgICAgICAgICAgIF07Cisg
ICAgICBjYXNlIDkgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkOSA9IGZtdHR5X3JlbF9kZXQocGFy
YW1bMl0pOworICAgICAgICAgIHZhciBkZSA9IG1hdGNoJDlbM107CisgICAgICAgICAgdmFyIGVk
ID0gbWF0Y2gkOVsyXTsKKyAgICAgICAgICB2YXIgYWYkOSA9IG1hdGNoJDlbMV07CisgICAgICAg
ICAgdmFyIGZhJDkgPSBtYXRjaCQ5WzBdOworICAgICAgICAgIHZhciB0eSA9IHRyYW5zKHN5bW0o
cGFyYW1bMF0pLCBwYXJhbVsxXSk7CisgICAgICAgICAgdmFyIG1hdGNoJDEwID0gZm10dHlfcmVs
X2RldCh0eSk7CisgICAgICAgICAgdmFyIGpkID0gbWF0Y2gkMTBbM107CisgICAgICAgICAgdmFy
IGRqID0gbWF0Y2gkMTBbMl07CisgICAgICAgICAgdmFyIGdhID0gbWF0Y2gkMTBbMV07CisgICAg
ICAgICAgdmFyIGFnID0gbWF0Y2gkMTBbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICov
WworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBD
dXJyeS5fMShmYSQ5LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8x
KGFnLCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICov
MDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGdhLCAvKiBSZWZsICovMCk7CisgICAgICAg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDksIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZWQs
IC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZGosIC8qIFJlZmwg
Ki8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQ3VycnkuXzEoamQsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAg
Q3VycnkuXzEoZGUsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF07CisgICAg
ICBjYXNlIDEwIDogCisgICAgICAgICAgdmFyIG1hdGNoJDExID0gZm10dHlfcmVsX2RldChwYXJh
bVswXSk7CisgICAgICAgICAgdmFyIGFmJDEwID0gbWF0Y2gkMTFbMV07CisgICAgICAgICAgdmFy
IGZhJDEwID0gbWF0Y2gkMTFbMF07CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5f
MShmYSQxMCwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVm
bCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQxMCwgLyogUmVmbCAqLzApOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMTFbMl0sCisgICAgICAgICAgICAgICAgICBt
YXRjaCQxMVszXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDExIDogCisgICAgICAg
ICAgdmFyIG1hdGNoJDEyID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFy
IGFmJDExID0gbWF0Y2gkMTJbMV07CisgICAgICAgICAgdmFyIGZhJDExID0gbWF0Y2gkMTJbMF07
CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQxMSwgLyogUmVmbCAqLzAp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICBDdXJyeS5fMShhZiQxMSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMTJbMl0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQxMlszXQorICAgICAgICAg
ICAgICAgIF07CisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgdmFyIG1hdGNoJDEzID0gZm10
dHlfcmVsX2RldChwYXJhbVswXSk7CisgICAgICAgICAgdmFyIGFmJDEyID0gbWF0Y2gkMTNbMV07
CisgICAgICAgICAgdmFyIGZhJDEyID0gbWF0Y2gkMTNbMF07CisgICAgICAgICAgcmV0dXJuIC8q
IHR1cGxlICovWworICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICBDdXJyeS5fMShmYSQxMiwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQxMiwg
LyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Cisg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMTNbMl0sCisgICAg
ICAgICAgICAgICAgICBtYXRjaCQxM1szXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNl
IDEzIDogCisgICAgICAgICAgdmFyIG1hdGNoJDE0ID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7
CisgICAgICAgICAgdmFyIGRlJDEgPSBtYXRjaCQxNFszXTsKKyAgICAgICAgICB2YXIgZWQkMSA9
IG1hdGNoJDE0WzJdOworICAgICAgICAgIHZhciBhZiQxMyA9IG1hdGNoJDE0WzFdOworICAgICAg
ICAgIHZhciBmYSQxMyA9IG1hdGNoJDE0WzBdOworICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
Q3VycnkuXzEoZmEkMTMsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkMTMsIC8qIFJlZmwg
Ki8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOworICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQ3VycnkuXzEoZWQkMSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShkZSQxLCAv
KiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdOworICAgICAgY2FzZSAxNCA6IAor
ICAgICAgICAgIHZhciBtYXRjaCQxNSA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOworICAgICAg
ICAgIHZhciBkZSQyID0gbWF0Y2gkMTVbM107CisgICAgICAgICAgdmFyIGVkJDIgPSBtYXRjaCQx
NVsyXTsKKyAgICAgICAgICB2YXIgYWYkMTQgPSBtYXRjaCQxNVsxXTsKKyAgICAgICAgICB2YXIg
ZmEkMTQgPSBtYXRjaCQxNVswXTsKKyAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8x
KGZhJDE0LCAvKiBSZWZsICovMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZs
ICovMDsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDE0LCAvKiBSZWZsICovMCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKKyAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
IEN1cnJ5Ll8xKGVkJDIsIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIFJlZmwgKi8wOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZGUkMiwgLyogUmVmbCAq
LzApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7CisgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgXTsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitm
dW5jdGlvbiB0cmFucyh0eTEsIHR5MikgeworICB2YXIgZXhpdCA9IDA7CisgIGlmICh0eXBlb2Yg
dHkxID09PSAibnVtYmVyIikgeworICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgewor
ICAgICAgaWYgKHR5MikgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgODE2LAor
ICAgICAgICAgICAgICAgIDIzCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIEVuZF9vZl9mbXR0eSAqLzA7Cisg
ICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgewor
ICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIGV4aXQgPSA2OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgZXhpdCA9IDc7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgZXhpdCA9IDE7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgZXhpdCA9IDI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgZXhp
dCA9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAg
ICAgZXhpdCA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxNCA6IAorICAg
ICAgICAgICAgZXhpdCA9IDU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICA4MTYsCisgICAgICAg
ICAgICAgICAgICAyMworICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgXTsKKyAgICAg
IH0KKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoICh0eTEudGFnIHwgMCkgeworICAg
ICAgY2FzZSAwIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICBleGl0ID0gODsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAor
ICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIENoYXJfdHkgKi9CbG9jay5fXygwLCBbdHJhbnMo
dHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAg
ICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBpZiAodHlwZW9m
IHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAg
ICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogU3RyaW5n
X3R5ICovQmxvY2suX18oMSwgW3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOworICAgICAgICAgICAg
ICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA2OworICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgICAgICAgZXhp
dCA9IDc7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6
IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7Cisg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAg
ICAgICAgICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7CisgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICAg
ICAgZXhpdCA9IDU7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICBleGl0ID0gODsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBz
d2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFt0cmFucyh0eTFbMF0sIHR5
MlswXSldKTsKKyAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gNjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDkgOiAK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSA3OworICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAg
ICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOworICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgICAgICAg
IGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
MTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1OworICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAi
bnVtYmVyIikgeworICAgICAgICAgICAgZXhpdCA9IDg7CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgeworICAgICAgICAgICAg
ICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBJbnQzMl90eSAqL0Jsb2Nr
Ll9fKDMsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAgY2FzZSA4IDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gNjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA3OworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAg
ICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAg
IGV4aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
MTMgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1
OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAg
fQorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6IAorICAgICAg
ICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgZXhpdCA9IDg7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIu
dGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbdHJhbnModHkxWzBdLCB0eTJbMF0p
XSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDY7
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSA5IDogCisgICAg
ICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2Fz
ZSA1IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50NjRfdHkgKi9CbG9jay5fXyg1
LCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAgIGNhc2UgOCA6IAorICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDY7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNzsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEzIDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNTsKKyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICBp
ZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQgPSA4OworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8
IDApIHsKKyAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogRmxvYXRfdHkgKi9CbG9jay5fXyg2LCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAg
ICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDY7CisgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSA5IDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gNzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDEwIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0
ID0gMjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDog
CisgICAgICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAg
ICAgICAgICAgICBleGl0ID0gNTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIDcgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAg
ICAgICAgICAgIGV4aXQgPSA4OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSA3IDogCisg
ICAgICAgICAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcsIFt0cmFucyh0
eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAg
ICAgICBleGl0ID0gNjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA3OworICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQg
PSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTEgOiAK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAg
ICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1OworICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIGlmICh0eXBlb2Yg
dHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAg
ICAgICAgICAgICAgICAgICA4MDIsCisgICAgICAgICAgICAgICAgICAgIDI2CisgICAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNh
c2UgOCA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9hcmdfdHkgKi9CbG9j
ay5fXyg4LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnModHkxWzBdLCB0eTJb
MF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zKHR5MVsxXSwgdHkyWzFdKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6IAor
ICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAg
ICAgICAgICAgZXhpdCA9IDM7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7CisgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICAgICAg
ZXhpdCA9IDU7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICA4MDIsCisgICAgICAgICAgICAgICAgICAgICAgICAyNgorICAg
ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDkgOiAKKyAgICAg
ICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFsK
KyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJl
LAorICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFs
Rm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgODEyLAorICAgICAgICAgICAgICAgICAg
ICAyOAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgewor
ICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA2OworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAg
ICAgICAgICAgdmFyIHR5ID0gdHJhbnMoc3ltbSh0eTFbMV0pLCB0eTJbMF0pOworICAgICAgICAg
ICAgICAgICAgdmFyIG1hdGNoID0gZm10dHlfcmVsX2RldCh0eSk7CisgICAgICAgICAgICAgICAg
ICBDdXJyeS5fMShtYXRjaFsxXSwgLyogUmVmbCAqLzApOworICAgICAgICAgICAgICAgICAgQ3Vy
cnkuXzEobWF0Y2hbM10sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAv
KiBGb3JtYXRfc3Vic3RfdHkgKi9CbG9jay5fXyg5LCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHkxWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5MlsxXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmFucyh0eTFbMl0sIHR5MlsyXSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgMTEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4
aXQgPSAzOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMg
OiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OworICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSA1Owor
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgODEyLAorICAgICAgICAgICAgICAgICAgICAgICAgMjgKKyAgICAgICAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIGlmICh0
eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwi
LAorICAgICAgICAgICAgICAgICAgICA3ODAsCisgICAgICAgICAgICAgICAgICAgIDIxCisgICAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAg
ICAgZWxzZSBpZiAodHkyLnRhZyA9PT0gMTApIHsKKyAgICAgICAgICAgIHJldHVybiAvKiBBbHBo
YV90eSAqL0Jsb2NrLl9fKDEwLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAg
ICAgICAgICAgICAgICAgICA3ODAsCisgICAgICAgICAgICAgICAgICAgIDIxCisgICAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDExIDogCisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1i
ZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAg
ICAgIDc4NCwKKyAgICAgICAgICAgICAgICAgICAgMjEKKyAgICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFRoZXRhX3R5
ICovQmxvY2suX18oMTEsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKKyAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIs
CisgICAgICAgICAgICAgICAgICAgICAgICA3ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAy
MQorICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEyIDog
CisgICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0
aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRf
ZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgImNhbWxp
bnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAgIDc4OCwKKyAgICAgICAgICAg
ICAgICAgICAgMTkKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8
IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgICAgICAgZXhpdCA9
IDE7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxMSA6IAor
ICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEFueV90
eSAqL0Jsb2NrLl9fKDEyLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7CisgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwi
LAorICAgICAgICAgICAgICAgICAgICAgICAgNzg4LAorICAgICAgICAgICAgICAgICAgICAgICAg
MTkKKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMyA6
IAorICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAg
dGhyb3cgWworICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0
X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICJjYW1s
aW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgICAgICA3OTIsCisgICAgICAgICAg
ICAgICAgICAgIDIyCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcg
fCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQg
PSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTEgOiAK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW3RyYW5zKHR5MVsw
XSwgdHkyWzBdKV0pOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3Nl
cnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDc5
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDIyCisgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9
PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAg
ICAgICAgICAgICAgNzk3LAorICAgICAgICAgICAgICAgICAgICAzMAorICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDEw
IDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gMjsK
KyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDEyIDogCisgICAg
ICAgICAgICAgICAgICBleGl0ID0gMzsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICBleGl0ID0gNDsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE0IDogCisgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogSWdub3JlZF9yZWFkZXJfdHkgKi9CbG9jay5fXygxNCwgW3RyYW5zKHR5
MVswXSwgdHkyWzBdKV0pOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5h
c3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDc5NywKKyAgICAgICAgICAgICAgICAgICAgICAgIDMwCisgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg
ICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAgfQorICBzd2l0Y2ggKGV4aXQpIHsKKyAg
ICBjYXNlIDEgOiAKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAgIDc4MSwKKyAgICAg
ICAgICAgICAgICAyMQorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgIGNhc2Ug
MiA6IAorICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNh
bWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgNzg1LAorICAgICAgICAgICAg
ICAgIDIxCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07CisgICAgY2FzZSAzIDogCisg
ICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNz
ZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY2FtbGludGVy
bmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICA3ODksCisgICAgICAgICAgICAgICAgMTkK
KyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgXTsKKyAgICBjYXNlIDQgOiAKKyAgICAgICAg
dGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFp
bHVyZSwKKyAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3Jt
YXQubWwiLAorICAgICAgICAgICAgICAgIDc5MywKKyAgICAgICAgICAgICAgICAyMgorICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICBdOworICAgIGNhc2UgNSA6IAorICAgICAgICB0aHJvdyBb
CisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAor
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIs
CisgICAgICAgICAgICAgICAgNzk4LAorICAgICAgICAgICAgICAgIDMwCisgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIF07CisgICAgY2FzZSA2IDogCisgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAg
ICAgICAgICAgICA4MDMsCisgICAgICAgICAgICAgICAgMjYKKyAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgXTsKKyAgICBjYXNlIDcgOiAKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAg
ICAgIDgxMywKKyAgICAgICAgICAgICAgICAyOAorICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICBdOworICAgIGNhc2UgOCA6IAorICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgODE3
LAorICAgICAgICAgICAgICAgIDIzCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF07Cisg
ICAgCisgIH0KK30KKworZnVuY3Rpb24gZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4oZm9ybWF0dGlu
Z19nZW4pIHsKKyAgcmV0dXJuIGZtdHR5X29mX2ZtdChmb3JtYXR0aW5nX2dlblswXVswXSk7Cit9
CisKK2Z1bmN0aW9uIGZtdHR5X29mX2ZtdChfZm10dHkpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAg
IHZhciBmbXR0eSA9IF9mbXR0eTsKKyAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikg
eworICAgICAgcmV0dXJuIC8qIEVuZF9vZl9mbXR0eSAqLzA7CisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgc3dpdGNoIChmbXR0eS50YWcgfCAwKSB7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAg
ICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5KGZt
dHR5WzBdLCAvKiBTdHJpbmdfdHkgKi9CbG9jay5fXygxLCBbZm10dHlfb2ZfZm10KGZtdHR5WzFd
KV0pKTsKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICB2YXIgdHlfcmVzdCA9IGZtdHR5
X29mX2ZtdChmbXR0eVszXSk7CisgICAgICAgICAgICB2YXIgcHJlY190eSA9IGZtdHR5X29mX3By
ZWNpc2lvbl9mbXR0eShmbXR0eVsyXSwgLyogSW50X3R5ICovQmxvY2suX18oMiwgW3R5X3Jlc3Rd
KSk7CisgICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfcGFkZGluZ19mbXR0eShmbXR0eVsxXSwg
cHJlY190eSk7CisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgdmFyIHR5X3Jlc3QkMSA9
IGZtdHR5X29mX2ZtdChmbXR0eVszXSk7CisgICAgICAgICAgICB2YXIgcHJlY190eSQxID0gZm10
dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5KGZtdHR5WzJdLCAvKiBJbnQzMl90eSAqL0Jsb2NrLl9fKDMs
IFt0eV9yZXN0JDFdKSk7CisgICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfcGFkZGluZ19mbXR0
eShmbXR0eVsxXSwgcHJlY190eSQxKTsKKyAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICB2
YXIgdHlfcmVzdCQyID0gZm10dHlfb2ZfZm10KGZtdHR5WzNdKTsKKyAgICAgICAgICAgIHZhciBw
cmVjX3R5JDIgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkoZm10dHlbMl0sIC8qIE5hdGl2ZWlu
dF90eSAqL0Jsb2NrLl9fKDQsIFt0eV9yZXN0JDJdKSk7CisgICAgICAgICAgICByZXR1cm4gZm10
dHlfb2ZfcGFkZGluZ19mbXR0eShmbXR0eVsxXSwgcHJlY190eSQyKTsKKyAgICAgICAgY2FzZSA3
IDogCisgICAgICAgICAgICB2YXIgdHlfcmVzdCQzID0gZm10dHlfb2ZfZm10KGZtdHR5WzNdKTsK
KyAgICAgICAgICAgIHZhciBwcmVjX3R5JDMgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkoZm10
dHlbMl0sIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW3R5X3Jlc3QkM10pKTsKKyAgICAgICAg
ICAgIHJldHVybiBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5KGZtdHR5WzFdLCBwcmVjX3R5JDMpOwor
ICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIHZhciB0eV9yZXN0JDQgPSBmbXR0eV9vZl9m
bXQoZm10dHlbM10pOworICAgICAgICAgICAgdmFyIHByZWNfdHkkNCA9IGZtdHR5X29mX3ByZWNp
c2lvbl9mbXR0eShmbXR0eVsyXSwgLyogRmxvYXRfdHkgKi9CbG9jay5fXyg2LCBbdHlfcmVzdCQ0
XSkpOworICAgICAgICAgICAgcmV0dXJuIGZtdHR5X29mX3BhZGRpbmdfZm10dHkoZm10dHlbMV0s
IHByZWNfdHkkNCk7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEJv
b2xfdHkgKi9CbG9jay5fXyg3LCBbZm10dHlfb2ZfZm10KGZtdHR5WzBdKV0pOworICAgICAgICBj
YXNlIDEwIDogCisgICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKKyAgICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBG
b3JtYXRfYXJnX3R5ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICAgIGZtdHR5
WzFdLAorICAgICAgICAgICAgICAgICAgICAgIGZtdHR5X29mX2ZtdChmbXR0eVsyXSkKKyAgICAg
ICAgICAgICAgICAgICAgXSk7CisgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgIHZhciB0
eSA9IGZtdHR5WzFdOworICAgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9zdWJzdF90eSAqL0Js
b2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAgICAgICB0eSwKKyAgICAgICAgICAgICAgICAg
ICAgICB0eSwKKyAgICAgICAgICAgICAgICAgICAgICBmbXR0eV9vZl9mbXQoZm10dHlbMl0pCisg
ICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogQWxwaGFfdHkgKi9CbG9jay5fXygxMCwgW2ZtdHR5X29mX2ZtdChmbXR0eVswXSld
KTsKKyAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFRoZXRhX3R5ICov
QmxvY2suX18oMTEsIFtmbXR0eV9vZl9mbXQoZm10dHlbMF0pXSk7CisgICAgICAgIGNhc2UgMTEg
OiAKKyAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBf
Zm10dHkgPSBmbXR0eVsxXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNh
c2UgMTggOiAKKyAgICAgICAgICAgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29u
Y2F0X2ZtdHR5KGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuKGZtdHR5WzBdKSwgZm10dHlfb2ZfZm10
KGZtdHR5WzFdKSk7CisgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBS
ZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW2ZtdHR5X29mX2ZtdChmbXR0eVswXSldKTsKKyAgICAg
ICAgY2FzZSAyMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIFN0cmluZ190eSAqL0Jsb2NrLl9f
KDEsIFtmbXR0eV9vZl9mbXQoZm10dHlbMl0pXSk7CisgICAgICAgIGNhc2UgMjEgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbZm10dHlfb2ZfZm10KGZtdHR5
WzFdKV0pOworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgIGNh
c2UgMjIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDaGFyX3R5ICovQmxvY2suX18oMCwgW2Zt
dHR5X29mX2ZtdChmbXR0eVswXSldKTsKKyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgICAg
dmFyIGlnbiA9IGZtdHR5WzBdOworICAgICAgICAgICAgdmFyIGZtdCA9IGZtdHR5WzFdOworICAg
ICAgICAgICAgaWYgKHR5cGVvZiBpZ24gPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIHN3
aXRjaCAoaWduKSB7CisgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBJZ25vcmVkX3JlYWRlcl90eSAqL0Jsb2NrLl9fKDE0LCBbZm10dHlfb2Zf
Zm10KGZtdCldKTsKKyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNl
IDQgOiAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZtdHR5X29mX2ZtdChmbXQpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgc3dpdGNoIChpZ24udGFnIHwgMCkgeworICAgICAgICAg
ICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ2FtbGludGVybmFs
Rm9ybWF0QmFzaWNzLmNvbmNhdF9mbXR0eShpZ25bMV0sIGZtdHR5X29mX2ZtdChmbXQpKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAg
ICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAg
ICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAg
ICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmbXR0eV9vZl9mbXQoZm10KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgICBy
ZXR1cm4gZm10dHlfb2ZfY3VzdG9tKGZtdHR5WzBdLCBmbXR0eV9vZl9mbXQoZm10dHlbMl0pKTsK
KyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBmbXR0eV9vZl9j
dXN0b20oYXJpdHksIGZtdHR5KSB7CisgIGlmIChhcml0eSkgeworICAgIHJldHVybiAvKiBBbnlf
dHkgKi9CbG9jay5fXygxMiwgW2ZtdHR5X29mX2N1c3RvbShhcml0eVswXSwgZm10dHkpXSk7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZtdHR5OworICB9Cit9CisKK2Z1bmN0aW9uIGZtdHR5
X29mX3BhZGRpbmdfZm10dHkocGFkLCBmbXR0eSkgeworICBpZiAodHlwZW9mIHBhZCA9PT0gIm51
bWJlciIgfHwgIXBhZC50YWcpIHsKKyAgICByZXR1cm4gZm10dHk7CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFtmbXR0eV0pOworICB9Cit9CisKK2Z1
bmN0aW9uIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eShwcmVjLCBmbXR0eSkgeworICBpZiAodHlw
ZW9mIHByZWMgPT09ICJudW1iZXIiICYmIHByZWMgIT09IDApIHsKKyAgICByZXR1cm4gLyogSW50
X3R5ICovQmxvY2suX18oMiwgW2ZtdHR5XSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZt
dHR5OworICB9Cit9CisKK3ZhciBUeXBlX21pc21hdGNoID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0
ZSgiQ2FtbGludGVybmFsRm9ybWF0LlR5cGVfbWlzbWF0Y2giKTsKKworZnVuY3Rpb24gdHlwZV9w
YWRkaW5nKHBhZCwgZm10dHkpIHsKKyAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7Cisg
ICAgcmV0dXJuIC8qIFBhZGRpbmdfZm10dHlfRUJCICovWworICAgICAgICAgICAgLyogTm9fcGFk
ZGluZyAqLzAsCisgICAgICAgICAgICBmbXR0eQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSBp
ZiAocGFkLnRhZykgeworICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgIH0KKyAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09
IDIpIHsKKyAgICAgIHJldHVybiAvKiBQYWRkaW5nX2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAg
ICAgLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbcGFkWzBdXSksCisgICAgICAgICAgICAg
IGZtdHR5WzBdCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93
IFR5cGVfbWlzbWF0Y2g7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBQYWRk
aW5nX2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExpdF9wYWRkaW5nICovQmxvY2suX18o
MCwgWworICAgICAgICAgICAgICAgIHBhZFswXSwKKyAgICAgICAgICAgICAgICBwYWRbMV0KKyAg
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICBmbXR0eQorICAgICAgICAgIF07CisgIH0KK30K
KworZnVuY3Rpb24gdHlwZV9wYWRwcmVjKHBhZCwgcHJlYywgZm10dHkpIHsKKyAgdmFyIG1hdGNo
ID0gdHlwZV9wYWRkaW5nKHBhZCwgZm10dHkpOworICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1i
ZXIiKSB7CisgICAgaWYgKHByZWMgIT09IDApIHsKKyAgICAgIHZhciBtYXRjaCQxID0gbWF0Y2hb
MV07CisgICAgICBpZiAodHlwZW9mIG1hdGNoJDEgPT09ICJudW1iZXIiKSB7CisgICAgICAgIHRo
cm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICB9CisgICAgICBlbHNlIGlmIChtYXRjaCQxLnRhZyA9
PT0gMikgeworICAgICAgICByZXR1cm4gLyogUGFkcHJlY19mbXR0eV9FQkIgKi9bCisgICAgICAg
ICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgICAgLyogQXJnX3ByZWNpc2lvbiAqLzEs
CisgICAgICAgICAgICAgICAgbWF0Y2gkMVswXQorICAgICAgICAgICAgICBdOworICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICB9CisgICAg
fQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIFBhZHByZWNfZm10dHlfRUJCICovWworICAg
ICAgICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwK
KyAgICAgICAgICAgICAgbWF0Y2hbMV0KKyAgICAgICAgICAgIF07CisgICAgfQorICB9CisgIGVs
c2UgeworICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgIG1h
dGNoWzBdLAorICAgICAgICAgICAgLyogTGl0X3ByZWNpc2lvbiAqL1twcmVjWzBdXSwKKyAgICAg
ICAgICAgIG1hdGNoWzFdCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiB0eXBlX2ln
bm9yZWRfcGFyYW1fb25lKGlnbiwgZm10LCBmbXR0eSkgeworICB2YXIgbWF0Y2ggPSB0eXBlX2Zv
cm1hdF9nZW4oZm10LCBmbXR0eSk7CisgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAg
ICAgICAgIC8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICBp
Z24sCisgICAgICAgICAgICAgIG1hdGNoWzBdCisgICAgICAgICAgICBdKSwKKyAgICAgICAgICBt
YXRjaFsxXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0eXBlX2Zvcm1hdF9nZW4oZm10LCBm
bXR0eSkgeworICBpZiAodHlwZW9mIGZtdCA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4gLyog
Rm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wLAorICAg
ICAgICAgICAgZm10dHkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAo
Zm10LnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10
dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcpIHsKKyAgICAgICAgICAgIHRo
cm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgdmFyIG1hdGNoID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10dHlbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIENoYXIgKi9CbG9jay5fXygwLCBbbWF0Y2hbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAg
bWF0Y2hbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51
bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZykgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9t
aXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIg
bWF0Y2gkMSA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5WzBdKTsKKyAgICAgICAgICAg
IHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBDYW1s
X2NoYXIgKi9CbG9jay5fXygxLCBbbWF0Y2gkMVswXV0pLAorICAgICAgICAgICAgICAgICAgICBt
YXRjaCQxWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHZhciBtYXRjaCQyID0gdHlwZV9wYWRk
aW5nKGZtdFswXSwgZm10dHkpOworICAgICAgICAgIHZhciBtYXRjaCQzID0gbWF0Y2gkMlsxXTsK
KyAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmICht
YXRjaCQzLnRhZyA9PT0gMSkgeworICAgICAgICAgICAgdmFyIG1hdGNoJDQgPSB0eXBlX2Zvcm1h
dF9nZW4oZm10WzFdLCBtYXRjaCQzWzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10
dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmcgKi9CbG9jay5fXygyLCBb
CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyWzBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkNFswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQ0WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAg
ICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgdmFyIG1h
dGNoJDUgPSB0eXBlX3BhZGRpbmcoZm10WzBdLCBmbXR0eSk7CisgICAgICAgICAgdmFyIG1hdGNo
JDYgPSBtYXRjaCQ1WzFdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkNiA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgaWYgKG1hdGNoJDYudGFnID09PSAxKSB7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkNyA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMV0sIG1hdGNoJDZbMF0pOworICAgICAgICAgICAg
cmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIENhbWxf
c3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNVsw
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDdbMF0KKyAgICAgICAgICAgICAgICAg
ICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkN1sxXQorICAgICAgICAgICAgICAg
ICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBU
eXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
NCA6IAorICAgICAgICAgIHZhciBtYXRjaCQ4ID0gdHlwZV9wYWRwcmVjKGZtdFsxXSwgZm10WzJd
LCBmbXR0eSk7CisgICAgICAgICAgdmFyIG1hdGNoJDkgPSBtYXRjaCQ4WzJdOworICAgICAgICAg
IGlmICh0eXBlb2YgbWF0Y2gkOSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5
cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDkudGFn
ID09PSAyKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSB0eXBlX2Zvcm1hdF9nZW4oZm10
WzNdLCBtYXRjaCQ5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICov
WworICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICBmbXRbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ4WzBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkOFsxXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoJDEwWzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAg
ICAgICAgICAgIG1hdGNoJDEwWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAg
ICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFy
IG1hdGNoJDExID0gdHlwZV9wYWRwcmVjKGZtdFsxXSwgZm10WzJdLCBmbXR0eSk7CisgICAgICAg
ICAgdmFyIG1hdGNoJDEyID0gbWF0Y2gkMTFbMl07CisgICAgICAgICAgaWYgKHR5cGVvZiBtYXRj
aCQxMiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDEyLnRhZyA9PT0gMykgeworICAg
ICAgICAgICAgdmFyIG1hdGNoJDEzID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFszXSwgbWF0Y2gkMTJb
MF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIEludDMyICovQmxvY2suX18oNSwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTFbMF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQxMVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoJDEzWzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDEzWzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2IDogCisgICAgICAgICAgdmFyIG1hdGNoJDE0
ID0gdHlwZV9wYWRwcmVjKGZtdFsxXSwgZm10WzJdLCBmbXR0eSk7CisgICAgICAgICAgdmFyIG1h
dGNoJDE1ID0gbWF0Y2gkMTRbMl07CisgICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQxNSA9PT0g
Im51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDE1LnRhZyA9PT0gNCkgeworICAgICAgICAgICAg
dmFyIG1hdGNoJDE2ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFszXSwgbWF0Y2gkMTVbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIE5hdGl2ZWludCAqL0Jsb2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZt
dFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE0WzBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMTRbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQx
NlswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRj
aCQxNlsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHZhciBtYXRjaCQxNyA9IHR5
cGVfcGFkcHJlYyhmbXRbMV0sIGZtdFsyXSwgZm10dHkpOworICAgICAgICAgIHZhciBtYXRjaCQx
OCA9IG1hdGNoJDE3WzJdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkMTggPT09ICJudW1i
ZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIGlmIChtYXRjaCQxOC50YWcgPT09IDUpIHsKKyAgICAgICAgICAgIHZhciBt
YXRjaCQxOSA9IHR5cGVfZm9ybWF0X2dlbihmbXRbM10sIG1hdGNoJDE4WzBdKTsKKyAgICAgICAg
ICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBJ
bnQ2NCAqL0Jsb2NrLl9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFswXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE3WzBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMTdbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxOVswXQorICAg
ICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQxOVsxXQor
ICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIHZhciBtYXRjaCQyMCA9IHR5cGVfcGFkcHJl
YyhmbXRbMV0sIGZtdFsyXSwgZm10dHkpOworICAgICAgICAgIHZhciBtYXRjaCQyMSA9IG1hdGNo
JDIwWzJdOworICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkMjEgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChtYXRjaCQyMS50YWcgPT09IDYpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyMiA9
IHR5cGVfZm9ybWF0X2dlbihmbXRbM10sIG1hdGNoJDIxWzBdKTsKKyAgICAgICAgICAgIHJldHVy
biAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBGbG9hdCAqL0Js
b2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFswXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDIwWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gk
MjBbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMlswXQorICAgICAgICAgICAg
ICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMlsxXQorICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0
aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgOSA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChmbXR0eS50YWcgPT09IDcpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyMyA9IHR5
cGVfZm9ybWF0X2dlbihmbXRbMF0sIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBG
bXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBCb29sICovQmxvY2suX18o
OSwgW21hdGNoJDIzWzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDIzWzFdCisgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgIHZhciBtYXRjaCQyNCA9IHR5cGVfZm9ybWF0X2dl
bihmbXRbMF0sIGZtdHR5KTsKKyAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sK
KyAgICAgICAgICAgICAgICAgIC8qIEZsdXNoICovQmxvY2suX18oMTAsIFttYXRjaCQyNFswXV0p
LAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMjRbMV0KKyAgICAgICAgICAgICAgICBdOworICAg
ICAgY2FzZSAxMSA6IAorICAgICAgICAgIHZhciBtYXRjaCQyNSA9IHR5cGVfZm9ybWF0X2dlbihm
bXRbMV0sIGZtdHR5KTsKKyAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKKyAg
ICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICBmbXRbMF0sCisgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjVb
MF0KKyAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICBtYXRjaCQyNVsx
XQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgdmFyIG1h
dGNoJDI2ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsxXSwgZm10dHkpOworICAgICAgICAgIHJldHVy
biAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAgLyogQ2hhcl9saXRlcmFs
ICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0sCisgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkMjZbMF0KKyAgICAgICAgICAgICAgICAgICAgXSksCisgICAg
ICAgICAgICAgICAgICBtYXRjaCQyNlsxXQorICAgICAgICAgICAgICAgIF07CisgICAgICBjYXNl
IDEzIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAg
ICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
aWYgKGZtdHR5LnRhZyA9PT0gOCkgeworICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eSRwcmltZSA9
IGZtdHR5WzBdOworICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyogRm10
dHlfRUJCICovW2ZtdFsxXV0sIC8qIEZtdHR5X0VCQiAqL1tzdWJfZm10dHkkcHJpbWVdKSkgewor
ICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdmFyIG1hdGNoJDI3ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsyXSwgZm10dHlbMV0pOwor
ICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAg
ICAgIC8qIEZvcm1hdF9hcmcgKi9CbG9jay5fXygxMywgWworICAgICAgICAgICAgICAgICAgICAg
ICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3ViX2ZtdHR5JHByaW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjdbMF0KKyAgICAgICAgICAgICAgICAgICAgICBd
KSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjdbMV0KKyAgICAgICAgICAgICAgICAgIF07
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9t
aXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE0IDog
CisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAg
IHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZt
dHR5LnRhZyA9PT0gOSkgeworICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eTEgPSBmbXR0eVswXTsK
KyAgICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX25vdGVxdWFsKC8qIEZtdHR5X0VCQiAqL1tD
YW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKGZtdFsxXSldLCAvKiBGbXR0eV9FQkIg
Ki9bQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChzdWJfZm10dHkxKV0pKSB7Cisg
ICAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB2YXIgbWF0Y2gkMjggPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzJdLCBDYW1saW50ZXJuYWxG
b3JtYXRCYXNpY3MuZXJhc2VfcmVsKGZtdHR5WzJdKSk7CisgICAgICAgICAgICByZXR1cm4gLyog
Rm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0X3N1YnN0ICov
QmxvY2suX18oMTQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdFswXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN1Yl9mbXR0eTEsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aCQyOFswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBt
YXRjaCQyOFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZt
dHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMCkgeworICAgICAg
ICAgICAgdmFyIG1hdGNoJDI5ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10dHlbMF0pOwor
ICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAg
ICAgIC8qIEFscGhhICovQmxvY2suX18oMTUsIFttYXRjaCQyOVswXV0pLAorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQyOVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICBpZiAo
dHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNt
YXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMSkg
eworICAgICAgICAgICAgdmFyIG1hdGNoJDMwID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10
dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAg
ICAgICAgICAgICAgIC8qIFRoZXRhICovQmxvY2suX18oMTYsIFttYXRjaCQzMFswXV0pLAorICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQzMFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTcgOiAKKyAgICAg
ICAgICB2YXIgbWF0Y2gkMzEgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzFdLCBmbXR0eSk7CisgICAg
ICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAvKiBG
b3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAgICAgICAgICAgZm10
WzBdLAorICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDMxWzBdCisgICAgICAgICAgICAgICAg
ICAgIF0pLAorICAgICAgICAgICAgICAgICAgbWF0Y2gkMzFbMV0KKyAgICAgICAgICAgICAgICBd
OworICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgIHZhciBmb3JtYXR0aW5nX2dlbiA9IGZtdFsw
XTsKKyAgICAgICAgICB2YXIgZm10MCA9IGZtdFsxXTsKKyAgICAgICAgICB2YXIgZm10dHkwID0g
Zm10dHk7CisgICAgICAgICAgaWYgKGZvcm1hdHRpbmdfZ2VuLnRhZykgeworICAgICAgICAgICAg
dmFyIG1hdGNoJDMyID0gZm9ybWF0dGluZ19nZW5bMF07CisgICAgICAgICAgICB2YXIgbWF0Y2gk
MzMgPSB0eXBlX2Zvcm1hdF9nZW4obWF0Y2gkMzJbMF0sIGZtdHR5MCk7CisgICAgICAgICAgICB2
YXIgbWF0Y2gkMzQgPSB0eXBlX2Zvcm1hdF9nZW4oZm10MCwgbWF0Y2gkMzNbMV0pOworICAgICAg
ICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8q
IEZvcm1hdHRpbmdfZ2VuICovQmxvY2suX18oMTgsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8qIE9wZW5fYm94ICovQmxvY2suX18oMSwgWy8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDMzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMzJbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXSksCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQzNFswXQorICAgICAgICAgICAgICAgICAgICAgIF0pLAor
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQzNFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMzUgPSBm
b3JtYXR0aW5nX2dlblswXTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQzNiA9IHR5cGVfZm9ybWF0
X2dlbihtYXRjaCQzNVswXSwgZm10dHkwKTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQzNyA9IHR5
cGVfZm9ybWF0X2dlbihmbXQwLCBtYXRjaCQzNlsxXSk7CisgICAgICAgICAgICByZXR1cm4gLyog
Rm10X2ZtdHR5X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0dGluZ19nZW4g
Ki9CbG9jay5fXygxOCwgWworICAgICAgICAgICAgICAgICAgICAgICAgLyogT3Blbl90YWcgKi9C
bG9jay5fXygwLCBbLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkMzZbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQzNVsxXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1dKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDM3WzBdCisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDM3WzFdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAg
IGNhc2UgMTkgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewor
ICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAg
ZWxzZSBpZiAoZm10dHkudGFnID09PSAxMykgeworICAgICAgICAgICAgdmFyIG1hdGNoJDM4ID0g
dHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8q
IEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIFJlYWRlciAqL0Jsb2Nr
Ll9fKDE5LCBbbWF0Y2gkMzhbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMzhbMV0K
KyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDIwIDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51
bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQor
ICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMSkgeworICAgICAgICAgICAgdmFyIG1h
dGNoJDM5ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsyXSwgZm10dHlbMF0pOworICAgICAgICAgICAg
cmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIFNjYW5f
Y2hhcl9zZXQgKi9CbG9jay5fXygyMCwgWworICAgICAgICAgICAgICAgICAgICAgICAgZm10WzBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgZm10WzFdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMzlbMF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkMzlbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAg
ICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIxIDogCisgICAgICAgICAgaWYgKHR5
cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0
Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMikgewor
ICAgICAgICAgICAgdmFyIG1hdGNoJDQwID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsxXSwgZm10dHlb
MF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIFNjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwgWworICAgICAgICAg
ICAgICAgICAgICAgICAgZm10WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNDBb
MF0KKyAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gk
NDBbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIDIzIDogCisgICAgICAgICAgdmFyIGlnbiA9IGZtdFswXTsK
KyAgICAgICAgICB2YXIgZm10JDEgPSBmbXRbMV07CisgICAgICAgICAgdmFyIGZtdHR5JDEgPSBm
bXR0eTsKKyAgICAgICAgICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoaWduKSB7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAg
ICAgICAgaWYgKHR5cGVvZiBmbXR0eSQxID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoZm10dHkkMS50YWcgPT09IDE0KSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBtYXRjaCQ0MSA9IHR5cGVfZm9ybWF0X2dlbihmbXQkMSwgZm10dHkkMVswXSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmVkX3JlYWRlciAqLzMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDQxWzBdCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0MVsx
XQorICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVfbWlz
bWF0Y2g7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZShpZ24sIGZtdCQxLCBmbXR0eSQxKTsKKyAg
ICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgc3dpdGNoIChpZ24udGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNl
IDcgOiAKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lKC8q
IElnbm9yZWRfZm9ybWF0X2FyZyAqL0Jsb2NrLl9fKDcsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWduWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25b
MV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQkMSwgZm10dHkkMSk7Cisg
ICAgICAgICAgICAgIGNhc2UgOCA6IAorICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDQyID0g
dHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oaWduWzFdLCBmbXQkMSwgZm10dHkkMSk7
CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNDMgPSBtYXRjaCQ0MlsxXTsKKyAgICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfZm9ybWF0X3N1YnN0ICovQmxvY2suX18oOCwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0MlswXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDQzWzBdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDQzWzFdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBj
YXNlIDAgOiAKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgIGNhc2UgMiA6
IAorICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAg
ICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAg
ICAgY2FzZSA5IDogCisgICAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgICAgICAg
IHJldHVybiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lKGlnbiwgZm10JDEsIGZtdHR5JDEpOworICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICBjYXNlIDIyIDog
CisgICAgICBjYXNlIDI0IDogCisgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAg
IAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1
dGlvbihzdWJfZm10dHksIGZtdCwgZm10dHkpIHsKKyAgaWYgKHR5cGVvZiBzdWJfZm10dHkgPT09
ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAg
ICAvKiBFbmRfb2ZfZm10dHkgKi8wLAorICAgICAgICAgICAgdHlwZV9mb3JtYXRfZ2VuKGZtdCwg
Zm10dHkpCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKHN1Yl9mbXR0
eS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5
ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnKSB7CisgICAgICAgICAgICB0aHJv
dyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHZhciBtYXRjaCA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKHN1Yl9mbXR0
eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICByZXR1cm4gLyogRm10dHlfZm10X0VC
QiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogQ2hhcl90eSAqL0Jsb2NrLl9fKDAsIFttYXRj
aFswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXQorICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cg
VHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFn
ID09PSAxKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHR5cGVfaWdub3JlZF9mb3JtYXRf
c3Vic3RpdHV0aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICBy
ZXR1cm4gLyogRm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5n
X3R5ICovQmxvY2suX18oMSwgW21hdGNoJDFbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0
Y2gkMVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkg
PT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDIpIHsKKyAgICAgICAgICAg
IHZhciBtYXRjaCQyID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5
WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJC
ICovWworICAgICAgICAgICAgICAgICAgICAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbbWF0Y2gk
MlswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQyWzFdCisgICAgICAgICAgICAgICAg
ICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5
cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAz
IDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICAgICAg
ICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYg
KGZtdHR5LnRhZyA9PT0gMykgeworICAgICAgICAgICAgdmFyIG1hdGNoJDMgPSB0eXBlX2lnbm9y
ZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIEludDMyX3R5ICovQmxvY2suX18oMywgW21hdGNoJDNbMF1dKSwKKyAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkM1sxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAg
IH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIGlmICh0eXBl
b2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDQpIHsKKyAg
ICAgICAgICAgIHZhciBtYXRjaCQ0ID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24o
c3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0
eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBOYXRpdmVpbnRfdHkgKi9CbG9j
ay5fXyg0LCBbbWF0Y2gkNFswXV0pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0WzFdCisg
ICAgICAgICAgICAgICAgICBdOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gNSkgeworICAgICAgICAgICAgdmFyIG1hdGNo
JDUgPSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwg
Zm10dHlbMF0pOworICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAg
ICAgICAgICAgICAgICAgIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW21hdGNoJDVbMF1dKSwK
KyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21h
dGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6IAorICAg
ICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICB0aHJv
dyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChmbXR0eS50
YWcgPT09IDYpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ2ID0gdHlwZV9pZ25vcmVkX2Zvcm1h
dF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAg
IHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBGbG9h
dF90eSAqL0Jsb2NrLl9fKDYsIFttYXRjaCQ2WzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1h
dGNoJDZbMV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5
ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSA3KSB7CisgICAgICAgICAg
ICB2YXIgbWF0Y2gkNyA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKHN1Yl9mbXR0
eVswXSwgZm10LCBmbXR0eVswXSk7CisgICAgICAgICAgICByZXR1cm4gLyogRm10dHlfZm10X0VC
QiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcsIFttYXRj
aCQ3WzBdXSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDdbMV0KKyAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cg
VHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDggOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAg
ICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBp
ZiAoZm10dHkudGFnID09PSA4KSB7CisgICAgICAgICAgICB2YXIgc3ViMl9mbXR0eSRwcmltZSA9
IGZtdHR5WzBdOworICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyogRm10
dHlfRUJCICovW3N1Yl9mbXR0eVswXV0sIC8qIEZtdHR5X0VCQiAqL1tzdWIyX2ZtdHR5JHByaW1l
XSkpIHsKKyAgICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHZhciBtYXRjaCQ4ID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRp
b24oc3ViX2ZtdHR5WzFdLCBmbXQsIGZtdHR5WzFdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBG
bXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBGb3JtYXRfYXJnX3R5ICov
QmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMl9mbXR0eSRwcmltZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDhbMF0KKyAgICAgICAgICAgICAgICAgICAg
ICBdKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkOFsxXQorICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBl
X21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOSA6
IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChm
bXR0eS50YWcgPT09IDkpIHsKKyAgICAgICAgICAgIHZhciBzdWIyX2ZtdHR5JHByaW1lJDEgPSBm
bXR0eVsxXTsKKyAgICAgICAgICAgIHZhciBzdWIxX2ZtdHR5JHByaW1lID0gZm10dHlbMF07Cisg
ICAgICAgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBGbXR0eV9FQkIgKi9bQ2Ft
bGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChzdWJfZm10dHlbMF0pXSwgLyogRm10dHlf
RUJCICovW0NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3ViMV9mbXR0eSRwcmlt
ZSldKSkgeworICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyogRm10dHlfRUJCICov
W0NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3ViX2ZtdHR5WzFdKV0sIC8qIEZt
dHR5X0VCQiAqL1tDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKHN1YjJfZm10dHkk
cHJpbWUkMSldKSkgeworICAgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eSRwcmltZSA9IHRyYW5zKHN5bW0oc3Vi
MV9mbXR0eSRwcmltZSksIHN1YjJfZm10dHkkcHJpbWUkMSk7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkOSA9IGZtdHR5X3JlbF9kZXQoc3ViX2ZtdHR5JHByaW1lKTsKKyAgICAgICAgICAgIEN1cnJ5
Ll8xKG1hdGNoJDlbMV0sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgIEN1cnJ5Ll8xKG1hdGNo
JDlbM10sIC8qIFJlZmwgKi8wKTsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxMCA9IHR5cGVfaWdu
b3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9y
ZWwoc3ViX2ZtdHR5WzJdKSwgZm10LCBmbXR0eVsyXSk7CisgICAgICAgICAgICByZXR1cm4gLyog
Rm10dHlfZm10X0VCQiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0X3N1YnN0X3R5
ICovQmxvY2suX18oOSwgWworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMV9mbXR0eSRwcmlt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YjJfZm10dHkkcHJpbWUkMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bW0obWF0Y2gkMTBbMF0pCisgICAgICAgICAgICAgICAgICAgICAg
XSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEwWzFdCisgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVf
bWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMCA6
IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChm
bXR0eS50YWcgPT09IDEwKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTEgPSB0eXBlX2lnbm9y
ZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIEFscGhhX3R5ICovQmxvY2suX18oMTAsIFttYXRjaCQxMVswXV0pLAorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQxMVsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAg
ICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICBpZiAo
dHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNt
YXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMSkg
eworICAgICAgICAgICAgdmFyIG1hdGNoJDEyID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0
dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAv
KiBGbXR0eV9mbXRfRUJCICovWworICAgICAgICAgICAgICAgICAgICAvKiBUaGV0YV90eSAqL0Js
b2NrLl9fKDExLCBbbWF0Y2gkMTJbMF1dKSwKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTJb
MV0KKyAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsK
KyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVy
IikgeworICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAxMykgeworICAgICAgICAgICAgdmFyIG1hdGNo
JDEzID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQs
IGZtdHR5WzBdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWworICAg
ICAgICAgICAgICAgICAgICAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW21hdGNoJDEzWzBd
XSksCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzWzFdCisgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IFR5cGVf
bWlzbWF0Y2g7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxNCA6
IAorICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChm
bXR0eS50YWcgPT09IDE0KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTQgPSB0eXBlX2lnbm9y
ZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlbMF0pOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAgICAgICAg
IC8qIElnbm9yZWRfcmVhZGVyX3R5ICovQmxvY2suX18oMTQsIFttYXRjaCQxNFswXV0pLAorICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQxNFsxXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAgfQorfQor
CitmdW5jdGlvbiB0eXBlX2Zvcm1hdChmbXQsIGZtdHR5KSB7CisgIHZhciBtYXRjaCA9IHR5cGVf
Zm9ybWF0X2dlbihmbXQsIGZtdHR5KTsKKyAgaWYgKHR5cGVvZiBtYXRjaFsxXSA9PT0gIm51bWJl
ciIpIHsKKyAgICByZXR1cm4gbWF0Y2hbMF07CisgIH0KKyAgZWxzZSB7CisgICAgdGhyb3cgVHlw
ZV9taXNtYXRjaDsKKyAgfQorfQorCitmdW5jdGlvbiByZWNhc3QoZm10LCBmbXR0eSkgeworICBy
ZXR1cm4gdHlwZV9mb3JtYXQoZm10LCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVs
KHN5bW0oZm10dHkpKSk7Cit9CisKK2Z1bmN0aW9uIGZpeF9wYWRkaW5nKHBhZHR5LCB3aWR0aCwg
c3RyKSB7CisgIHZhciBsZW4gPSBzdHIubGVuZ3RoOworICB2YXIgbWF0Y2hfMDAwID0gUGVydmFz
aXZlcy5hYnMod2lkdGgpOworICB2YXIgbWF0Y2hfMDAxID0gd2lkdGggPCAwID8gLyogTGVmdCAq
LzAgOiBwYWR0eTsKKyAgdmFyIHBhZHR5JDEgPSBtYXRjaF8wMDE7CisgIHZhciB3aWR0aCQxID0g
bWF0Y2hfMDAwOworICBpZiAod2lkdGgkMSA8PSBsZW4pIHsKKyAgICByZXR1cm4gc3RyOworICB9
CisgIGVsc2UgeworICAgIHZhciByZXMgPSBCeXRlcy5tYWtlKHdpZHRoJDEsIHBhZHR5JDEgPT09
IC8qIFplcm9zICovMiA/IC8qICIwIiAqLzQ4IDogLyogIiAiICovMzIpOworICAgIHN3aXRjaCAo
cGFkdHkkMSkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgJCRTdHJpbmcuYmxpdChzdHIs
IDAsIHJlcywgMCwgbGVuKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMSA6IAorICAg
ICAgICAgICQkU3RyaW5nLmJsaXQoc3RyLCAwLCByZXMsIHdpZHRoJDEgLSBsZW4gfCAwLCBsZW4p
OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgaWYgKGxlbiA+
IDAgJiYgKENhbWxfc3RyaW5nLmdldChzdHIsIDApID09PSAvKiAiKyIgKi80MyB8fCBDYW1sX3N0
cmluZy5nZXQoc3RyLCAwKSA9PT0gLyogIi0iICovNDUgfHwgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwg
MCkgPT09IC8qICIgIiAqLzMyKSkgeworICAgICAgICAgICAgcmVzWzBdID0gQ2FtbF9zdHJpbmcu
Z2V0KHN0ciwgMCk7CisgICAgICAgICAgICAkJFN0cmluZy5ibGl0KHN0ciwgMSwgcmVzLCAod2lk
dGgkMSAtIGxlbiB8IDApICsgMSB8IDAsIGxlbiAtIDEgfCAwKTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSBpZiAobGVuID4gMSAmJiBDYW1sX3N0cmluZy5nZXQoc3RyLCAwKSA9PT0gLyog
IjAiICovNDggJiYgKENhbWxfc3RyaW5nLmdldChzdHIsIDEpID09PSAvKiAieCIgKi8xMjAgfHwg
Q2FtbF9zdHJpbmcuZ2V0KHN0ciwgMSkgPT09IC8qICJYIiAqLzg4KSkgeworICAgICAgICAgICAg
cmVzWzFdID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgMSk7CisgICAgICAgICAgICAkJFN0cmluZy5i
bGl0KHN0ciwgMiwgcmVzLCAod2lkdGgkMSAtIGxlbiB8IDApICsgMiB8IDAsIGxlbiAtIDIgfCAw
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAkJFN0cmluZy5i
bGl0KHN0ciwgMCwgcmVzLCB3aWR0aCQxIC0gbGVuIHwgMCwgbGVuKTsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9CisgICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5
dGVzX3RvX3N0cmluZyhyZXMpOworICB9Cit9CisKK2Z1bmN0aW9uIGZpeF9pbnRfcHJlY2lzaW9u
KHByZWMsIHN0cikgeworICB2YXIgcHJlYyQxID0gUGVydmFzaXZlcy5hYnMocHJlYyk7CisgIHZh
ciBsZW4gPSBzdHIubGVuZ3RoOworICB2YXIgYyA9IENhbWxfc3RyaW5nLmdldChzdHIsIDApOwor
ICB2YXIgZXhpdCA9IDA7CisgIGlmIChjID49IDU4KSB7CisgICAgaWYgKGMgPj0gNzEpIHsKKyAg
ICAgIGlmIChjID4gMTAyIHx8IGMgPCA5NykgeworICAgICAgICByZXR1cm4gc3RyOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAyOworICAgICAgfQorICAgIH0KKyAgICBl
bHNlIGlmIChjID49IDY1KSB7CisgICAgICBleGl0ID0gMjsKKyAgICB9CisgICAgZWxzZSB7Cisg
ICAgICByZXR1cm4gc3RyOworICAgIH0KKyAgfQorICBlbHNlIGlmIChjICE9PSAzMikgeworICAg
IGlmIChjID49IDQzKSB7CisgICAgICBzd2l0Y2ggKGMgLSA0MyB8IDApIHsKKyAgICAgICAgY2Fz
ZSAwIDogCisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgIGNhc2UgMyA6IAorICAgICAg
ICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAgIGNhc2UgNSA6IAor
ICAgICAgICAgICAgaWYgKChwcmVjJDEgKyAyIHwgMCkgPiBsZW4gJiYgbGVuID4gMSAmJiAoQ2Ft
bF9zdHJpbmcuZ2V0KHN0ciwgMSkgPT09IC8qICJ4IiAqLzEyMCB8fCBDYW1sX3N0cmluZy5nZXQo
c3RyLCAxKSA9PT0gLyogIlgiICovODgpKSB7CisgICAgICAgICAgICAgIHZhciByZXMgPSBCeXRl
cy5tYWtlKHByZWMkMSArIDIgfCAwLCAvKiAiMCIgKi80OCk7CisgICAgICAgICAgICAgIHJlc1sx
XSA9IENhbWxfc3RyaW5nLmdldChzdHIsIDEpOworICAgICAgICAgICAgICAkJFN0cmluZy5ibGl0
KHN0ciwgMiwgcmVzLCAocHJlYyQxIC0gbGVuIHwgMCkgKyA0IHwgMCwgbGVuIC0gMiB8IDApOwor
ICAgICAgICAgICAgICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHJlcyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCA9IDI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2IDogCisg
ICAgICAgIGNhc2UgNyA6IAorICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgY2FzZSA5IDogCisg
ICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICBjYXNlIDEyIDog
CisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgZXhp
dCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAg
IGVsc2UgeworICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgZXhp
dCA9IDE7CisgIH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAgY2FzZSAxIDogCisgICAgICAgIGlm
ICgocHJlYyQxICsgMSB8IDApID4gbGVuKSB7CisgICAgICAgICAgdmFyIHJlcyQxID0gQnl0ZXMu
bWFrZShwcmVjJDEgKyAxIHwgMCwgLyogIjAiICovNDgpOworICAgICAgICAgIHJlcyQxWzBdID0g
YzsKKyAgICAgICAgICAkJFN0cmluZy5ibGl0KHN0ciwgMSwgcmVzJDEsIChwcmVjJDEgLSBsZW4g
fCAwKSArIDIgfCAwLCBsZW4gLSAxIHwgMCk7CisgICAgICAgICAgcmV0dXJuIENhbWxfc3RyaW5n
LmJ5dGVzX3RvX3N0cmluZyhyZXMkMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIHN0cjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIDIg
OiAKKyAgICAgICAgaWYgKHByZWMkMSA+IGxlbikgeworICAgICAgICAgIHZhciByZXMkMiA9IEJ5
dGVzLm1ha2UocHJlYyQxLCAvKiAiMCIgKi80OCk7CisgICAgICAgICAgJCRTdHJpbmcuYmxpdChz
dHIsIDAsIHJlcyQyLCBwcmVjJDEgLSBsZW4gfCAwLCBsZW4pOworICAgICAgICAgIHJldHVybiBD
YW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocmVzJDIpOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgCisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX3RvX2NhbWxfc3RyaW5nKHN0cikgeworICBy
ZXR1cm4gJCRTdHJpbmcuY29uY2F0KCQkU3RyaW5nLmVzY2FwZWQoc3RyKSwgLyogOjogKi9bCisg
ICAgICAgICAgICAgICciJywKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgJyInLAorICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gZm9ybWF0X29mX2ljb252KGljb252KSB7CisgIHN3
aXRjaCAoaWNvbnYpIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuICIlZCI7CisgICAg
Y2FzZSAxIDogCisgICAgICAgIHJldHVybiAiJStkIjsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAg
cmV0dXJuICIlIGQiOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gIiVpIjsKKyAgICBj
YXNlIDQgOiAKKyAgICAgICAgcmV0dXJuICIlK2kiOworICAgIGNhc2UgNSA6IAorICAgICAgICBy
ZXR1cm4gIiUgaSI7CisgICAgY2FzZSA2IDogCisgICAgICAgIHJldHVybiAiJXgiOworICAgIGNh
c2UgNyA6IAorICAgICAgICByZXR1cm4gIiUjeCI7CisgICAgY2FzZSA4IDogCisgICAgICAgIHJl
dHVybiAiJVgiOworICAgIGNhc2UgOSA6IAorICAgICAgICByZXR1cm4gIiUjWCI7CisgICAgY2Fz
ZSAxMCA6IAorICAgICAgICByZXR1cm4gIiVvIjsKKyAgICBjYXNlIDExIDogCisgICAgICAgIHJl
dHVybiAiJSNvIjsKKyAgICBjYXNlIDEyIDogCisgICAgICAgIHJldHVybiAiJXUiOworICAgIAor
ICB9Cit9CisKK2Z1bmN0aW9uIGZvcm1hdF9vZl9hY29udihpY29udiwgYykgeworICB2YXIgc2Vw
czsKKyAgc3dpdGNoIChpY29udikgeworICAgIGNhc2UgMCA6IAorICAgICAgICBzZXBzID0gLyog
OjogKi9bCisgICAgICAgICAgIiUiLAorICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAg
ImQiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIDEgOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICovWworICAg
ICAgICAgICIlKyIsCisgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAiZCIsCisgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgMiA6IAorICAgICAgICBzZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUg
IiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJkIiwKKyAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSAzIDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSIsCisgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAiaSIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICBdCisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNCA6IAorICAg
ICAgICBzZXBzID0gLyogOjogKi9bCisgICAgICAgICAgIiUrIiwKKyAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICJpIiwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0K
KyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA1IDogCisgICAgICAgIHNlcHMg
PSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSAiLAorICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgImkiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAgICBd
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDYgOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICov
WworICAgICAgICAgICIlIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJ4IiwK
KyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSA3IDogCisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAg
ICAiJSMiLAorICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgIngiLAorICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIDggOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICovWworICAgICAgICAgICIlIiwKKyAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJYIiwKKyAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA5IDog
CisgICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSMiLAorICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgIlgiLAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgXQorICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDEwIDogCisgICAgICAg
IHNlcHMgPSAvKiA6OiAqL1sKKyAgICAgICAgICAiJSIsCisgICAgICAgICAgLyogOjogKi9bCisg
ICAgICAgICAgICAibyIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAg
ICAgIF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTEgOiAKKyAgICAgICAgc2VwcyA9IC8q
IDo6ICovWworICAgICAgICAgICIlIyIsCisgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAibyIsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdCisgICAgICAgIF07Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgMTIgOiAKKyAgICAgICAgc2VwcyA9IC8qIDo6ICovWwor
ICAgICAgICAgICIlIiwKKyAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICJ1IiwKKyAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF0KKyAgICAgICAgXTsKKyAgICAgICAgYnJl
YWs7CisgICAgCisgIH0KKyAgcmV0dXJuICQkU3RyaW5nLmNvbmNhdChDYW1sX3N0cmluZy5ieXRl
c190b19zdHJpbmcoQnl0ZXMubWFrZSgxLCBjKSksIHNlcHMpOworfQorCitmdW5jdGlvbiBmb3Jt
YXRfb2ZfZmNvbnYoZmNvbnYsIHByZWMpIHsKKyAgaWYgKGZjb252ID09PSAvKiBGbG9hdF9GICov
MTUpIHsKKyAgICByZXR1cm4gIiUuMTJnIjsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgcHJlYyQx
ID0gUGVydmFzaXZlcy5hYnMocHJlYyk7CisgICAgdmFyIHN5bWIgPSBjaGFyX29mX2Zjb252KGZj
b252KTsKKyAgICB2YXIgYnVmID0gLyogcmVjb3JkICovWworICAgICAgLyogaW5kICovMCwKKyAg
ICAgIC8qIGJ5dGVzICovbmV3IEFycmF5KDE2KQorICAgIF07CisgICAgYnVmZmVyX2FkZF9jaGFy
KGJ1ZiwgLyogIiUiICovMzcpOworICAgIGJwcmludF9mY29udl9mbGFnKGJ1ZiwgZmNvbnYpOwor
ICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIuIiAqLzQ2KTsKKyAgICBidWZmZXJfYWRkX3N0
cmluZyhidWYsICIiICsgcHJlYyQxKTsKKyAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCBzeW1iKTsK
KyAgICByZXR1cm4gYnVmZmVyX2NvbnRlbnRzKGJ1Zik7CisgIH0KK30KKworZnVuY3Rpb24gY29u
dmVydF9pbnQoaWNvbnYsIG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfZm9ybWF0X2lu
dChmb3JtYXRfb2ZfaWNvbnYoaWNvbnYpLCBuKTsKK30KKworZnVuY3Rpb24gY29udmVydF9pbnQz
MihpY29udiwgbikgeworICByZXR1cm4gQ2FtbF9mb3JtYXQuY2FtbF9pbnQzMl9mb3JtYXQoZm9y
bWF0X29mX2Fjb252KGljb252LCAvKiAibCIgKi8xMDgpLCBuKTsKK30KKworZnVuY3Rpb24gY29u
dmVydF9uYXRpdmVpbnQoaWNvbnYsIG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfbmF0
aXZlaW50X2Zvcm1hdChmb3JtYXRfb2ZfYWNvbnYoaWNvbnYsIC8qICJuIiAqLzExMCksIG4pOwor
fQorCitmdW5jdGlvbiBjb252ZXJ0X2ludDY0KGljb252LCBuKSB7CisgIHJldHVybiBDYW1sX2Zv
cm1hdC5jYW1sX2ludDY0X2Zvcm1hdChmb3JtYXRfb2ZfYWNvbnYoaWNvbnYsIC8qICJMIiAqLzc2
KSwgbik7Cit9CisKK2Z1bmN0aW9uIGNvbnZlcnRfZmxvYXQoZmNvbnYsIHByZWMsIHgpIHsKKyAg
dmFyIHByZWMkMSA9IFBlcnZhc2l2ZXMuYWJzKHByZWMpOworICB2YXIgc3RyID0gQ2FtbF9mb3Jt
YXQuY2FtbF9mb3JtYXRfZmxvYXQoZm9ybWF0X29mX2Zjb252KGZjb252LCBwcmVjJDEpLCB4KTsK
KyAgaWYgKGZjb252ICE9PSAvKiBGbG9hdF9GICovMTUpIHsKKyAgICByZXR1cm4gc3RyOworICB9
CisgIGVsc2UgeworICAgIHZhciBsZW4gPSBzdHIubGVuZ3RoOworICAgIHZhciBpc192YWxpZCA9
IGZ1bmN0aW9uIChfaSkgeworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIgaSA9IF9p
OworICAgICAgICBpZiAoaSA9PT0gbGVuKSB7CisgICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICov
MDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2ggPSBDYW1s
X3N0cmluZy5nZXQoc3RyLCBpKTsKKyAgICAgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQ2
IHwgMDsKKyAgICAgICAgICBpZiAoc3dpdGNoZXIgPiAyMyB8fCBzd2l0Y2hlciA8IDApIHsKKyAg
ICAgICAgICAgIGlmIChzd2l0Y2hlciAhPT0gNTUpIHsKKyAgICAgICAgICAgICAgX2kgPSBpICsg
MSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIHRydWUg
Ki8xOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChzd2l0
Y2hlciA+IDIyIHx8IHN3aXRjaGVyIDwgMSkgeworICAgICAgICAgICAgcmV0dXJuIC8qIHRydWUg
Ki8xOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9pID0gaSAr
IDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICB9OworICAgIH07CisgICAgdmFyIG1hdGNoID0gQ2FtbF9mbG9h
dC5jYW1sX2NsYXNzaWZ5X2Zsb2F0KHgpOworICAgIGlmIChtYXRjaCAhPT0gMykgeworICAgICAg
aWYgKG1hdGNoID49IDQpIHsKKyAgICAgICAgcmV0dXJuICJuYW4iOworICAgICAgfQorICAgICAg
ZWxzZSBpZiAoaXNfdmFsaWQoMCkpIHsKKyAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICByZXR1cm4gc3RyICsgIi4iOworICAgICAgfQorICAgIH0KKyAg
ICBlbHNlIGlmICh4IDwgMC4wKSB7CisgICAgICByZXR1cm4gIm5lZ19pbmZpbml0eSI7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgcmV0dXJuICJpbmZpbml0eSI7CisgICAgfQorICB9Cit9CisK
K2Z1bmN0aW9uIGZvcm1hdF9jYW1sX2NoYXIoYykgeworICByZXR1cm4gJCRTdHJpbmcuY29uY2F0
KENoYXIuZXNjYXBlZChjKSwgLyogOjogKi9bCisgICAgICAgICAgICAgICInIiwKKyAgICAgICAg
ICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgIiciLAorICAgICAgICAgICAgICAgIC8q
IFtdICovMAorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24g
c3RyaW5nX29mX2ZtdHR5KGZtdHR5KSB7CisgIHZhciBidWYgPSAvKiByZWNvcmQgKi9bCisgICAg
LyogaW5kICovMCwKKyAgICAvKiBieXRlcyAqL25ldyBBcnJheSgxNikKKyAgXTsKKyAgYnByaW50
X2ZtdHR5KGJ1ZiwgZm10dHkpOworICByZXR1cm4gYnVmZmVyX2NvbnRlbnRzKGJ1Zik7Cit9CisK
K2Z1bmN0aW9uIG1ha2VfcHJpbnRmKF9rLCBvLCBfYWNjLCBfZm10KSB7CisgIHdoaWxlKHRydWUp
IHsKKyAgICB2YXIgZm10ID0gX2ZtdDsKKyAgICB2YXIgYWNjID0gX2FjYzsKKyAgICB2YXIgayA9
IF9rOworICAgIGlmICh0eXBlb2YgZm10ID09PSAibnVtYmVyIikgeworICAgICAgcmV0dXJuIEN1
cnJ5Ll8yKGssIG8sIGFjYyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoIChmbXQu
dGFnIHwgMCkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHZhciByZXN0ID0gZm10
WzBdOworICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrLGFjYyxyZXN0KXsKKyAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICB2YXIgbmV3X2FjYyA9IC8q
IEFjY19kYXRhX2NoYXIgKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICAgICAgICBhY2MsCisg
ICAgICAgICAgICAgICAgICBjCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIHJl
dHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCByZXN0KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0oayxhY2MscmVzdCkpOworICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAg
IHZhciByZXN0JDEgPSBmbXRbMF07CisgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGssYWNj
LHJlc3QkMSl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgICAgICAg
ICAgdmFyIG5ld19hY2NfMDAxID0gZm9ybWF0X2NhbWxfY2hhcihjKTsKKyAgICAgICAgICAgICAg
dmFyIG5ld19hY2MgPSAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAg
ICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICBuZXdfYWNjXzAwMQorICAgICAgICAg
ICAgICAgIF0pOworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2Fj
YywgcmVzdCQxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0oayxhY2MscmVzdCQxKSk7
CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgcmV0dXJuIG1ha2Vfc3RyaW5nX3BhZGRp
bmcoaywgbywgYWNjLCBmbXRbMV0sIGZtdFswXSwgZnVuY3Rpb24gKHN0cikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICByZXR1cm4gbWFrZV9zdHJpbmdfcGFkZGluZyhr
LCBvLCBhY2MsIGZtdFsxXSwgZm10WzBdLCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcpOworICAgICAg
ICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lv
bihrLCBvLCBhY2MsIGZtdFszXSwgZm10WzFdLCBmbXRbMl0sIGNvbnZlcnRfaW50LCBmbXRbMF0p
OworICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2ludF9wYWRkaW5n
X3ByZWNpc2lvbihrLCBvLCBhY2MsIGZtdFszXSwgZm10WzFdLCBmbXRbMl0sIGNvbnZlcnRfaW50
MzIsIGZtdFswXSk7CisgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgcmV0dXJuIG1ha2Vf
aW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFjYywgZm10WzNdLCBmbXRbMV0sIGZtdFsyXSwg
Y29udmVydF9uYXRpdmVpbnQsIGZtdFswXSk7CisgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAg
ICAgcmV0dXJuIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFjYywgZm10WzNdLCBm
bXRbMV0sIGZtdFsyXSwgY29udmVydF9pbnQ2NCwgZm10WzBdKTsKKyAgICAgICAgY2FzZSA4IDog
CisgICAgICAgICAgICB2YXIgayQxID0gazsKKyAgICAgICAgICAgIHZhciBvJDEgPSBvOworICAg
ICAgICAgICAgdmFyIGFjYyQxID0gYWNjOworICAgICAgICAgICAgdmFyIGZtdCQxID0gZm10WzNd
OworICAgICAgICAgICAgdmFyIHBhZCA9IGZtdFsxXTsKKyAgICAgICAgICAgIHZhciBwcmVjID0g
Zm10WzJdOworICAgICAgICAgICAgdmFyIGZjb252ID0gZm10WzBdOworICAgICAgICAgICAgaWYg
KHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJl
YyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAg
ICAgICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252
KXsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocCwgeCkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgc3RyID0gY29udmVydF9mbG9hdChmY29udiwgcCwgeCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3Ry
aW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFj
YyQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252KSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgcmV0dXJu
IChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252KXsKKyAgICAgICAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gY29u
dmVydF9mbG9hdChmY29udiwgNiwgeCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
X3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwg
Zm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfShrJDEsbyQx
LGFjYyQxLGZtdCQxLGZjb252KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBwID0gcHJlY1swXTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEsZm10JDEsZmNv
bnYscCl7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAg
ICAgICAgICB2YXIgc3RyID0gY29udmVydF9mbG9hdChmY29udiwgcCwgeCk7CisgICAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAq
L0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHApKTsKKyAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocGFkLnRhZykgeworICAgICAgICAgICAgICB2
YXIgcGFkdHkgPSBwYWRbMF07CisgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51
bWJlciIpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgICAgICAg
ICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5KXsK
KyAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAodywgcCwgeCkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHksIHcsIGNvbnZlcnRfZmxvYXQo
ZmNvbnYsIHAsIHgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGsk
MSwgbyQxLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQkMSk7Cisg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9KGskMSxvJDEsYWNjJDEsZm10
JDEsZmNvbnYscGFkdHkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEsZm10
JDEsZmNvbnYscGFkdHkpeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh3LCB4
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBjb252ZXJ0X2Zsb2F0KGZjb252LCA2
LCB4KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciRwcmltZSA9IGZpeF9wYWRkaW5nKHBh
ZHR5LCB3LCBzdHIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQx
LCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY2MkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHIkcHJpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCQx
KTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0oayQxLG8kMSxhY2Mk
MSxmbXQkMSxmY29udixwYWR0eSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgcCQxID0gcHJlY1sw
XTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEsZm10JDEs
ZmNvbnYscGFkdHkscCQxKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHcsIHgp
IHsKKyAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0eSwgdywgY29u
dmVydF9mbG9hdChmY29udiwgcCQxLCB4KSk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCQx
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZt
dCQxLGZjb252LHBhZHR5LHAkMSkpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIHcgPSBwYWRbMV07CisgICAgICAg
ICAgICAgIHZhciBwYWR0eSQxID0gcGFkWzBdOworICAgICAgICAgICAgICBpZiAodHlwZW9mIHBy
ZWMgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgIT09IDApIHsKKyAg
ICAgICAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29u
dixwYWR0eSQxLHcpeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwLCB4KSB7
CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0eSQxLCB3LCBj
b252ZXJ0X2Zsb2F0KGZjb252LCBwLCB4KSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
KSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfShrJDEs
byQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdykpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24o
ayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0eSQxLHcpeworICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBjb252
ZXJ0X2Zsb2F0KGZjb252LCA2LCB4KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciRwcmlt
ZSA9IGZpeF9wYWRkaW5nKHBhZHR5JDEsIHcsIHN0cik7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18o
NCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyQxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciRwcmltZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKSwgZm10JDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdykpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICB2YXIgcCQyID0gcHJlY1swXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0
aW9uKGskMSxvJDEsYWNjJDEsZm10JDEsZmNvbnYscGFkdHkkMSx3LHAkMil7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICAgICAgICB2YXIgc3RyID0g
Zml4X3BhZGRpbmcocGFkdHkkMSwgdywgY29udmVydF9mbG9hdChmY29udiwgcCQyLCB4KSk7Cisg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFjY19kYXRh
X3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWNjJDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSksIGZtdCQxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdyxwJDIpKTsKKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAg
ICAgIHZhciByZXN0JDIgPSBmbXRbMF07CisgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGss
YWNjLHJlc3QkMil7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGIpIHsKKyAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2Nr
Ll9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYiA/ICJ0cnVlIiA6ICJmYWxzZSIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSksIHJlc3QkMik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJl
c3QkMikpOworICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICBfZm10ID0gZm10WzBdOwor
ICAgICAgICAgICAgX2FjYyA9IC8qIEFjY19mbHVzaCAqL0Jsb2NrLl9fKDcsIFthY2NdKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAg
IF9mbXQgPSBmbXRbMV07CisgICAgICAgICAgICBfYWNjID0gLyogQWNjX3N0cmluZ19saXRlcmFs
ICovQmxvY2suX18oMiwgWworICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICBm
bXRbMF0KKyAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICBfZm10ID0gZm10WzFdOworICAgICAgICAgICAg
X2FjYyA9IC8qIEFjY19jaGFyX2xpdGVyYWwgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAg
ICAgYWNjLAorICAgICAgICAgICAgICAgIGZtdFswXQorICAgICAgICAgICAgICBdKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIHZh
ciByZXN0JDMgPSBmbXRbMl07CisgICAgICAgICAgICB2YXIgdHkgPSBzdHJpbmdfb2ZfZm10dHko
Zm10WzFdKTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2MscmVzdCQzLHR5KXsK
KyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHJldHVybiBt
YWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5CisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCByZXN0JDMpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgfShrLGFjYyxyZXN0JDMsdHkpKTsKKyAgICAgICAgY2FzZSAxNCA6IAor
ICAgICAgICAgICAgdmFyIHJlc3QkNCA9IGZtdFsyXTsKKyAgICAgICAgICAgIHZhciBmbXR0eSA9
IGZtdFsxXTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2MsZm10dHkscmVzdCQ0
KXsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIGFjYywgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNv
bmNhdF9mbXQocmVjYXN0KHBhcmFtWzBdLCBmbXR0eSksIHJlc3QkNCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgfShrLGFjYyxmbXR0eSxyZXN0JDQpKTsKKyAgICAgICAgY2FzZSAxNSA6
IAorICAgICAgICAgICAgdmFyIHJlc3QkNSA9IGZtdFswXTsKKyAgICAgICAgICAgIHJldHVybiAo
ZnVuY3Rpb24oayxhY2MscmVzdCQ1KXsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZiwg
eCkgeworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2RlbGF5
ICovQmxvY2suX18oNiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAobykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8yKGYsIG8sIHgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIHJlc3QkNSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJlc3QkNSkpOworICAgICAgICBjYXNlIDE2
IDogCisgICAgICAgICAgICB2YXIgcmVzdCQ2ID0gZm10WzBdOworICAgICAgICAgICAgcmV0dXJu
IChmdW5jdGlvbihrLGFjYyxyZXN0JDYpeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChm
KSB7CisgICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGVsYXkg
Ki9CbG9jay5fXyg2LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIHJl
c3QkNik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJlc3QkNikpOworICAg
ICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICBfZm10ID0gZm10WzFdOworICAgICAgICAgICAg
X2FjYyA9IC8qIEFjY19mb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAg
ICAgICBhY2MsCisgICAgICAgICAgICAgICAgZm10WzBdCisgICAgICAgICAgICAgIF0pOworICAg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgICAg
dmFyIG1hdGNoID0gZm10WzBdOworICAgICAgICAgICAgaWYgKG1hdGNoLnRhZykgeworICAgICAg
ICAgICAgICB2YXIgcmVzdCQ3ID0gZm10WzFdOworICAgICAgICAgICAgICB2YXIgayRwcmltZSA9
IChmdW5jdGlvbihrLGFjYyxyZXN0JDcpeworICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
ayRwcmltZShrb2MsIGthY2MpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYo
aywga29jLCAvKiBBY2NfZm9ybWF0dGluZ19nZW4gKi9CbG9jay5fXygxLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBBY2Nfb3Blbl9ib3ggKi9CbG9jay5fXygxLCBba2FjY10pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSksIHJlc3QkNyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfShr
LGFjYyxyZXN0JDcpKTsKKyAgICAgICAgICAgICAgX2ZtdCA9IG1hdGNoWzBdWzBdOworICAgICAg
ICAgICAgICBfYWNjID0gLyogRW5kX29mX2FjYyAqLzA7CisgICAgICAgICAgICAgIF9rID0gayRw
cmltZTsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICB2YXIgcmVzdCQ4ID0gZm10
WzFdOworICAgICAgICAgICAgICB2YXIgayRwcmltZSQxID0gKGZ1bmN0aW9uKGssYWNjLHJlc3Qk
OCl7CisgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBrJHByaW1lJDEoa29jLCBrYWNjKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIGtvYywgLyogQWNjX2Zvcm1h
dHRpbmdfZ2VuICovQmxvY2suX18oMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWNjX29wZW5fdGFnICovQmxv
Y2suX18oMCwgW2thY2NdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCByZXN0JDgp
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0oayxhY2MscmVzdCQ4KSk7CisgICAg
ICAgICAgICAgIF9mbXQgPSBtYXRjaFswXVswXTsKKyAgICAgICAgICAgICAgX2FjYyA9IC8qIEVu
ZF9vZl9hY2MgKi8wOworICAgICAgICAgICAgICBfayA9IGskcHJpbWUkMTsKKyAgICAgICAgICAg
ICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDE5IDogCisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5t
bCIsCisgICAgICAgICAgICAgICAgICAgIDE0NDksCisgICAgICAgICAgICAgICAgICAgIDQKKyAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICBjYXNlIDIwIDog
CisgICAgICAgICAgICB2YXIgcmVzdCQ5ID0gZm10WzJdOworICAgICAgICAgICAgdmFyIG5ld19h
Y2MgPSAvKiBBY2NfaW52YWxpZF9hcmcgKi9CbG9jay5fXyg4LCBbCisgICAgICAgICAgICAgICAg
YWNjLAorICAgICAgICAgICAgICAgICJQcmludGY6IGJhZCBjb252ZXJzaW9uICVbIgorICAgICAg
ICAgICAgICBdKTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxyZXN0JDksbmV3X2Fj
Yyl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1
cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgcmVzdCQ5KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0oayxyZXN0JDksbmV3X2FjYykpOworICAgICAgICBjYXNlIDIxIDogCisgICAg
ICAgICAgICB2YXIgcmVzdCQxMCA9IGZtdFsxXTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rp
b24oayxhY2MscmVzdCQxMCl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG4pIHsKKyAg
ICAgICAgICAgICAgdmFyIG5ld19hY2NfMDAxID0gQ2FtbF9mb3JtYXQuY2FtbF9mb3JtYXRfaW50
KCIldSIsIG4pOworICAgICAgICAgICAgICB2YXIgbmV3X2FjYyA9IC8qIEFjY19kYXRhX3N0cmlu
ZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAg
ICAgIG5ld19hY2NfMDAxCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIHJldHVy
biBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCByZXN0JDEwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0oayxhY2MscmVzdCQxMCkpOworICAgICAgICBjYXNlIDIyIDogCisgICAgICAg
ICAgICB2YXIgcmVzdCQxMSA9IGZtdFswXTsKKyAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24o
ayxhY2MscmVzdCQxMSl7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAg
ICAgICAgICAgdmFyIG5ld19hY2MgPSAvKiBBY2NfZGF0YV9jaGFyICovQmxvY2suX18oNSwgWwor
ICAgICAgICAgICAgICAgICAgYWNjLAorICAgICAgICAgICAgICAgICAgYworICAgICAgICAgICAg
ICAgIF0pOworICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywg
cmVzdCQxMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9KGssYWNjLHJlc3QkMTEpKTsK
KyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgICAgdmFyIGskMiA9IGs7CisgICAgICAgICAg
ICB2YXIgbyQyID0gbzsKKyAgICAgICAgICAgIHZhciBhY2MkMiA9IGFjYzsKKyAgICAgICAgICAg
IHZhciBpZ24gPSBmbXRbMF07CisgICAgICAgICAgICB2YXIgZm10JDIgPSBmbXRbMV07CisgICAg
ICAgICAgICBpZiAodHlwZW9mIGlnbiA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgc3dp
dGNoIChpZ24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE1MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAg
ICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfaW52YWxpZF9hcmcoayQyLCBvJDIsIGFjYyQyLCBm
bXQkMik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBzd2l0Y2ggKGlnbi50YWcgfCAwKSB7
CisgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlX2Zyb21fZm10dHkoayQyLCBvJDIsIGFjYyQyLCBpZ25bMV0sIGZtdCQyKTsKKyAgICAgICAg
ICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAg
ICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICBj
YXNlIDYgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAgICBjYXNl
IDkgOiAKKyAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlX2ludmFsaWRfYXJnKGskMiwgbyQyLCBhY2MkMiwgZm10JDIpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgMjQg
OiAKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2N1c3RvbShrLCBvLCBhY2MsIGZtdFsyXSwgZm10
WzBdLCBDdXJyeS5fMShmbXRbMV0sIC8qICgpICovMCkpOworICAgICAgICAKKyAgICAgIH0KKyAg
ICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIGZtdHR5
LCBmbXQpIHsKKyAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKKyAgICByZXR1cm4g
bWFrZV9pbnZhbGlkX2FyZyhrLCBvLCBhY2MsIGZtdCk7CisgIH0KKyAgZWxzZSB7CisgICAgc3dp
dGNoIChmbXR0eS50YWcgfCAwKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICB2YXIgcmVz
dCA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCwgZm10KTsKKyAgICAgICAg
ICB9OworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgdmFyIHJlc3QkMSA9IGZtdHR5WzBdOwor
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9m
cm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQxLCBmbXQpOworICAgICAgICAgIH07CisgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICB2YXIgcmVzdCQyID0gZm10dHlbMF07CisgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywg
bywgYWNjLCByZXN0JDIsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgMyA6IAorICAg
ICAgICAgIHZhciByZXN0JDMgPSBmbXR0eVswXTsKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJlc3Qk
MywgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgdmFyIHJl
c3QkNCA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQ0LCBmbXQpOworICAg
ICAgICAgIH07CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICB2YXIgcmVzdCQ1ID0gZm10dHlb
MF07CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlX2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0JDUsIGZtdCk7CisgICAgICAgICAgfTsKKyAg
ICAgIGNhc2UgNiA6IAorICAgICAgICAgIHZhciByZXN0JDYgPSBmbXR0eVswXTsKKyAgICAgICAg
ICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0
eShrLCBvLCBhY2MsIHJlc3QkNiwgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA3IDog
CisgICAgICAgICAgdmFyIHJlc3QkNyA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywg
cmVzdCQ3LCBmbXQpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICB2
YXIgcmVzdCQ4ID0gZm10dHlbMV07CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0JDgsIGZtdCk7
CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgOSA6IAorICAgICAgICAgIHZhciByZXN0JDkgPSBm
bXR0eVsyXTsKKyAgICAgICAgICB2YXIgdHkgPSB0cmFucyhzeW1tKGZtdHR5WzBdKSwgZm10dHlb
MV0pOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4g
bWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNh
dF9mbXR0eSh0eSwgcmVzdCQ5KSwgZm10KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSAxMCA6
IAorICAgICAgICAgIHZhciByZXN0JDEwID0gZm10dHlbMF07CisgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uIChfLCBfJDEpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywg
bywgYWNjLCByZXN0JDEwLCBmbXQpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDExIDogCisg
ICAgICAgICAgdmFyIHJlc3QkMTEgPSBmbXR0eVswXTsKKyAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJl
c3QkMTEsIGZtdCk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICB2
YXIgcmVzdCQxMiA9IGZtdHR5WzBdOworICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQxMiwgZm10
KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgIHRocm93IFsKKyAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1s
IiwKKyAgICAgICAgICAgICAgICAgIDE1NDAsCisgICAgICAgICAgICAgICAgICAzMQorICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgXTsKKyAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0
X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgImNhbWxpbnRl
cm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAgICAxNTQxLAorICAgICAgICAgICAgICAg
ICAgMzEKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgIF07CisgICAgICAKKyAgICB9
CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9pbnZhbGlkX2FyZyhrLCBvLCBhY2MsIGZtdCkgewor
ICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2ludmFsaWRfYXJnICovQmxvY2suX18o
OCwgWworICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAiUHJpbnRmOiBiYWQg
Y29udmVyc2lvbiAlXyIKKyAgICAgICAgICAgICAgXSksIGZtdCk7Cit9CisKK2Z1bmN0aW9uIG1h
a2Vfc3RyaW5nX3BhZGRpbmcoaywgbywgYWNjLCBmbXQsIHBhZCwgdHJhbnMpIHsKKyAgaWYgKHR5
cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAg
ICB2YXIgbmV3X2FjY18wMDEgPSBDdXJyeS5fMSh0cmFucywgeCk7CisgICAgICB2YXIgbmV3X2Fj
YyA9IC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICBhY2MsCisg
ICAgICAgICAgbmV3X2FjY18wMDEKKyAgICAgICAgXSk7CisgICAgICByZXR1cm4gbWFrZV9wcmlu
dGYoaywgbywgbmV3X2FjYywgZm10KTsKKyAgICB9OworICB9CisgIGVsc2UgaWYgKHBhZC50YWcp
IHsKKyAgICB2YXIgcGFkdHkgPSBwYWRbMF07CisgICAgcmV0dXJuIGZ1bmN0aW9uICh3LCB4KSB7
CisgICAgICB2YXIgbmV3X2FjY18wMDEgPSBmaXhfcGFkZGluZyhwYWR0eSwgdywgQ3VycnkuXzEo
dHJhbnMsIHgpKTsKKyAgICAgIHZhciBuZXdfYWNjID0gLyogQWNjX2RhdGFfc3RyaW5nICovQmxv
Y2suX18oNCwgWworICAgICAgICAgIGFjYywKKyAgICAgICAgICBuZXdfYWNjXzAwMQorICAgICAg
ICBdKTsKKyAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCBmbXQpOworICAg
IH07CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIHdpZHRoID0gcGFkWzFdOworICAgIHZhciBwYWR0
eSQxID0gcGFkWzBdOworICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgdmFyIG5ld19h
Y2NfMDAxID0gZml4X3BhZGRpbmcocGFkdHkkMSwgd2lkdGgsIEN1cnJ5Ll8xKHRyYW5zLCB4KSk7
CisgICAgICB2YXIgbmV3X2FjYyA9IC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsK
KyAgICAgICAgICBhY2MsCisgICAgICAgICAgbmV3X2FjY18wMDEKKyAgICAgICAgXSk7CisgICAg
ICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgbmV3X2FjYywgZm10KTsKKyAgICB9OworICB9Cit9
CisKK2Z1bmN0aW9uIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFjYywgZm10LCBw
YWQsIHByZWMsIHRyYW5zLCBpY29udikgeworICBpZiAodHlwZW9mIHBhZCA9PT0gIm51bWJlciIp
IHsKKyAgICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7CisgICAgICBpZiAocHJlYyAh
PT0gMCkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHAsIHgpIHsKKyAgICAgICAgICB2YXIg
c3RyID0gZml4X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSk7Cisg
ICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Js
b2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQpOworICAgICAgICB9
OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkgewor
ICAgICAgICAgIHZhciBzdHIgPSBDdXJyeS5fMih0cmFucywgaWNvbnYsIHgpOworICAgICAgICAg
IHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAgICAgfTsKKyAgICAg
IH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgcCA9IHByZWNbMF07CisgICAgICByZXR1
cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAgICAgdmFyIHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uKHAs
IEN1cnJ5Ll8yKHRyYW5zLCBpY29udiwgeCkpOworICAgICAgICByZXR1cm4gbWFrZV9wcmludGYo
aywgbywgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAg
ICAgICAgIGFjYywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAg
ICAgXSksIGZtdCk7CisgICAgICB9OworICAgIH0KKyAgfQorICBlbHNlIGlmIChwYWQudGFnKSB7
CisgICAgdmFyIHBhZHR5ID0gcGFkWzBdOworICAgIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51bWJl
ciIpIHsKKyAgICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAo
dywgcCwgeCkgeworICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0eSwgdywgZml4
X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSkpOworICAgICAgICAg
IHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAgICAgfTsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHcsIHgpIHsKKyAgICAg
ICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHksIHcsIEN1cnJ5Ll8yKHRyYW5zLCBpY29u
diwgeCkpOworICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9z
dHJpbmcgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsK
KyAgICAgICAgfTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgcCQxID0g
cHJlY1swXTsKKyAgICAgIHJldHVybiBmdW5jdGlvbiAodywgeCkgeworICAgICAgICB2YXIgc3Ry
ID0gZml4X3BhZGRpbmcocGFkdHksIHcsIGZpeF9pbnRfcHJlY2lzaW9uKHAkMSwgQ3VycnkuXzIo
dHJhbnMsIGljb252LCB4KSkpOworICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyog
QWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgIGFj
YywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgXSksIGZt
dCk7CisgICAgICB9OworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICB2YXIgdyA9IHBhZFsxXTsK
KyAgICB2YXIgcGFkdHkkMSA9IHBhZFswXTsKKyAgICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1i
ZXIiKSB7CisgICAgICBpZiAocHJlYyAhPT0gMCkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KHAsIHgpIHsKKyAgICAgICAgICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHkkMSwgdywgZml4
X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSkpOworICAgICAgICAg
IHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKKyAgICAgICAgfTsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAgICAg
ICB2YXIgc3RyID0gZml4X3BhZGRpbmcocGFkdHkkMSwgdywgQ3VycnkuXzIodHJhbnMsIGljb252
LCB4KSk7CisgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0
cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQpOwor
ICAgICAgICB9OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBwJDIgPSBw
cmVjWzBdOworICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7CisgICAgICAgIHZhciBzdHIgPSBm
aXhfcGFkZGluZyhwYWR0eSQxLCB3LCBmaXhfaW50X3ByZWNpc2lvbihwJDIsIEN1cnJ5Ll8yKHRy
YW5zLCBpY29udiwgeCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFj
Y19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICBhY2Ms
CisgICAgICAgICAgICAgICAgICAgICAgc3RyCisgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQp
OworICAgICAgfTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9jdXN0b20oaywgbywg
YWNjLCByZXN0LCBhcml0eSwgZikgeworICBpZiAoYXJpdHkpIHsKKyAgICB2YXIgYXJpdHkkMSA9
IGFyaXR5WzBdOworICAgIHJldHVybiBmdW5jdGlvbiAoeCkgeworICAgICAgcmV0dXJuIG1ha2Vf
Y3VzdG9tKGssIG8sIGFjYywgcmVzdCwgYXJpdHkkMSwgQ3VycnkuXzEoZiwgeCkpOworICAgIH07
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRh
X3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGFjYywKKyAgICAgICAg
ICAgICAgICAgIGYKKyAgICAgICAgICAgICAgICBdKSwgcmVzdCk7CisgIH0KK30KKworZnVuY3Rp
b24gb3V0cHV0X2FjYyhvLCBfYWNjKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgYWNjID0g
X2FjYzsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHR5cGVvZiBhY2MgPT09ICJudW1iZXIi
KSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3
aXRjaCAoYWNjLnRhZyB8IDApIHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICB2YXIg
cyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdChhY2NbMV0pOworICAgICAgICAgICAgb3V0cHV0
X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMub3V0cHV0X3N0
cmluZyhvLCBzKTsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBh
Y2NbMV07CisgICAgICAgICAgICB2YXIgcCA9IGFjY1swXTsKKyAgICAgICAgICAgIG91dHB1dF9h
Y2MobywgcCk7CisgICAgICAgICAgICBpZiAobWF0Y2gudGFnKSB7CisgICAgICAgICAgICAgIFBl
cnZhc2l2ZXMub3V0cHV0X3N0cmluZyhvLCAiQFsiKTsKKyAgICAgICAgICAgICAgX2FjYyA9IG1h
dGNoWzBdOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIFBlcnZhc2l2ZXMub3V0
cHV0X3N0cmluZyhvLCAiQHsiKTsKKyAgICAgICAgICAgICAgX2FjYyA9IG1hdGNoWzBdOworICAg
ICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICBjYXNlIDQgOiAKKyAg
ICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMyA6
IAorICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2Nb
MF0pOworICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGFjY1sxXSwgbyk7CisgICAgICAgIGNh
c2UgNyA6IAorICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgICAg
cmV0dXJuIENhbWxfaW8uY2FtbF9tbF9mbHVzaChvKTsKKyAgICAgICAgY2FzZSA4IDogCisgICAg
ICAgICAgICBvdXRwdXRfYWNjKG8sIGFjY1swXSk7CisgICAgICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAor
ICAgICAgICAgICAgICAgICAgYWNjWzFdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgCisg
ICAgICB9CisgICAgfQorICAgIHN3aXRjaCAoZXhpdCkgeworICAgICAgY2FzZSAxIDogCisgICAg
ICAgICAgb3V0cHV0X2FjYyhvLCBhY2NbMF0pOworICAgICAgICAgIHJldHVybiBQZXJ2YXNpdmVz
Lm91dHB1dF9zdHJpbmcobywgYWNjWzFdKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIG91
dHB1dF9hY2MobywgYWNjWzBdKTsKKyAgICAgICAgICByZXR1cm4gQ2FtbF9pby5jYW1sX21sX291
dHB1dF9jaGFyKG8sIGFjY1sxXSk7CisgICAgICAKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9u
IGJ1ZnB1dF9hY2MoYiwgX2FjYykgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGFjYyA9IF9h
Y2M7CisgICAgdmFyIGV4aXQgPSAwOworICAgIGlmICh0eXBlb2YgYWNjID09PSAibnVtYmVyIikg
eworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzd2l0
Y2ggKGFjYy50YWcgfCAwKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgdmFyIHMg
PSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQoYWNjWzFdKTsKKyAgICAgICAgICAgIGJ1ZnB1dF9h
Y2MoYiwgYWNjWzBdKTsKKyAgICAgICAgICAgIHJldHVybiBCdWZmZXIuYWRkX3N0cmluZyhiLCBz
KTsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBhY2NbMV07Cisg
ICAgICAgICAgICB2YXIgcCA9IGFjY1swXTsKKyAgICAgICAgICAgIGJ1ZnB1dF9hY2MoYiwgcCk7
CisgICAgICAgICAgICBpZiAobWF0Y2gudGFnKSB7CisgICAgICAgICAgICAgIEJ1ZmZlci5hZGRf
c3RyaW5nKGIsICJAWyIpOworICAgICAgICAgICAgICBfYWNjID0gbWF0Y2hbMF07CisgICAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcoYiwgIkB7Iik7Cisg
ICAgICAgICAgICAgIF9hY2MgPSBtYXRjaFswXTsKKyAgICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIDIgOiAKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICBleGl0ID0gMTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgY2FzZSA1IDogCisg
ICAgICAgICAgICBleGl0ID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDYg
OiAKKyAgICAgICAgICAgIGJ1ZnB1dF9hY2MoYiwgYWNjWzBdKTsKKyAgICAgICAgICAgIHJldHVy
biBDdXJyeS5fMShhY2NbMV0sIGIpOworICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIF9h
Y2MgPSBhY2NbMF07CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDgg
OiAKKyAgICAgICAgICAgIGJ1ZnB1dF9hY2MoYiwgYWNjWzBdKTsKKyAgICAgICAgICAgIHRocm93
IFsKKyAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJn
dW1lbnQsCisgICAgICAgICAgICAgICAgICBhY2NbMV0KKyAgICAgICAgICAgICAgICBdOworICAg
ICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgc3dpdGNoIChleGl0KSB7CisgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICBidWZwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIEJ1
ZmZlci5hZGRfc3RyaW5nKGIsIGFjY1sxXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICBi
dWZwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5hZGRfY2hhcihi
LCBhY2NbMV0pOworICAgICAgCisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBzdHJwdXRfYWNj
KGIsIF9hY2MpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBhY2MgPSBfYWNjOworICAgIHZh
ciBleGl0ID0gMDsKKyAgICBpZiAodHlwZW9mIGFjYyA9PT0gIm51bWJlciIpIHsKKyAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoIChhY2MudGFn
IHwgMCkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHZhciBzID0gc3RyaW5nX29m
X2Zvcm1hdHRpbmdfbGl0KGFjY1sxXSk7CisgICAgICAgICAgICBzdHJwdXRfYWNjKGIsIGFjY1sw
XSk7CisgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmFkZF9zdHJpbmcoYiwgcyk7CisgICAgICAg
IGNhc2UgMSA6IAorICAgICAgICAgICAgdmFyIG1hdGNoID0gYWNjWzFdOworICAgICAgICAgICAg
dmFyIHAgPSBhY2NbMF07CisgICAgICAgICAgICBzdHJwdXRfYWNjKGIsIHApOworICAgICAgICAg
ICAgaWYgKG1hdGNoLnRhZykgeworICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyhiLCAi
QFsiKTsKKyAgICAgICAgICAgICAgX2FjYyA9IG1hdGNoWzBdOworICAgICAgICAgICAgICBjb250
aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nKGIsICJAeyIpOworICAgICAgICAgICAg
ICBfYWNjID0gbWF0Y2hbMF07CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
ICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyIDog
CisgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAg
ZXhpdCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2IDogCisgICAgICAg
ICAgICBzdHJwdXRfYWNjKGIsIGFjY1swXSk7CisgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmFk
ZF9zdHJpbmcoYiwgQ3VycnkuXzEoYWNjWzFdLCAvKiAoKSAqLzApKTsKKyAgICAgICAgY2FzZSA3
IDogCisgICAgICAgICAgICBfYWNjID0gYWNjWzBdOworICAgICAgICAgICAgY29udGludWUgOwor
ICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICBzdHJwdXRfYWNjKGIsIGFjY1swXSk7
CisgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAgICAgYWNjWzFdCisgICAg
ICAgICAgICAgICAgXTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIHN3aXRjaCAoZXhp
dCkgeworICAgICAgY2FzZSAxIDogCisgICAgICAgICAgc3RycHV0X2FjYyhiLCBhY2NbMF0pOwor
ICAgICAgICAgIHJldHVybiBCdWZmZXIuYWRkX3N0cmluZyhiLCBhY2NbMV0pOworICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgc3RycHV0X2FjYyhiLCBhY2NbMF0pOworICAgICAgICAgIHJldHVy
biBCdWZmZXIuYWRkX2NoYXIoYiwgYWNjWzFdKTsKKyAgICAgIAorICAgIH0KKyAgfTsKK30KKwor
ZnVuY3Rpb24gZmFpbHdpdGhfbWVzc2FnZShwYXJhbSkgeworICB2YXIgYnVmID0gQnVmZmVyLmNy
ZWF0ZSgyNTYpOworICB2YXIgayA9IGZ1bmN0aW9uIChfLCBhY2MpIHsKKyAgICBzdHJwdXRfYWNj
KGJ1ZiwgYWNjKTsKKyAgICB2YXIgcyA9IEJ1ZmZlci5jb250ZW50cyhidWYpOworICAgIHRocm93
IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAg
IHMKKyAgICAgICAgXTsKKyAgfTsKKyAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIC8qICgpICovMCwg
LyogRW5kX29mX2FjYyAqLzAsIHBhcmFtWzBdKTsKK30KKworZnVuY3Rpb24gb3Blbl9ib3hfb2Zf
c3RyaW5nKHN0cikgeworICBpZiAoc3RyID09PSAiIikgeworICAgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAvKiBQcF9ib3ggKi80CisgICAgICAgICAg
XTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgbGVuID0gc3RyLmxlbmd0aDsKKyAgICB2YXIgaW52
YWxpZF9ib3ggPSBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gQ3VycnkuXzEoZmFpbHdpdGhf
bWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xp
dGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxp
ZCBib3ggZGVzY3JpcHRpb24gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9z
dHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBO
b19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9m
b3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGJveCBkZXNjcmlw
dGlvbiAlUyIKKyAgICAgICAgICAgICAgICAgICAgXSksIHN0cik7CisgICAgfTsKKyAgICB2YXIg
cGFyc2Vfc3BhY2VzID0gZnVuY3Rpb24gKF9pKSB7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAg
ICAgIHZhciBpID0gX2k7CisgICAgICAgIGlmIChpID09PSBsZW4pIHsKKyAgICAgICAgICByZXR1
cm4gaTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2ggPSBD
YW1sX3N0cmluZy5nZXQoc3RyLCBpKTsKKyAgICAgICAgICBpZiAobWF0Y2ggIT09IDkpIHsKKyAg
ICAgICAgICAgIGlmIChtYXRjaCAhPT0gMzIpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgX2kgPSBpICsg
MSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX2kgPSBp
ICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgIH07CisgICAgfTsKKyAgICB2YXIgcGFyc2VfbHdvcmQgPSBm
dW5jdGlvbiAoXywgX2opIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFyIGogPSBf
ajsKKyAgICAgICAgaWYgKGogPT09IGxlbikgeworICAgICAgICAgIHJldHVybiBqOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdl
dChzdHIsIGopOworICAgICAgICAgIGlmIChtYXRjaCA+IDEyMiB8fCBtYXRjaCA8IDk3KSB7Cisg
ICAgICAgICAgICByZXR1cm4gajsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBfaiA9IGogKyAxIHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHZhciBw
YXJzZV9pbnQgPSBmdW5jdGlvbiAoXywgX2opIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAg
ICAgdmFyIGogPSBfajsKKyAgICAgICAgaWYgKGogPT09IGxlbikgeworICAgICAgICAgIHJldHVy
biBqOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBtYXRjaCA9IENh
bWxfc3RyaW5nLmdldChzdHIsIGopOworICAgICAgICAgIGlmIChtYXRjaCA+PSA0OCkgeworICAg
ICAgICAgICAgaWYgKG1hdGNoID49IDU4KSB7CisgICAgICAgICAgICAgIHJldHVybiBqOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9qID0gaiArIDEg
fCAwOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChtYXRjaCAhPT0gNDUpIHsKKyAg
ICAgICAgICAgIHJldHVybiBqOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIF9qID0gaiArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9OworICAgIH07CisgICAgdmFyIHdz
dGFydCA9IHBhcnNlX3NwYWNlcygwKTsKKyAgICB2YXIgd2VuZCA9IHBhcnNlX2x3b3JkKHdzdGFy
dCwgd3N0YXJ0KTsKKyAgICB2YXIgYm94X25hbWUgPSAkJFN0cmluZy5zdWIoc3RyLCB3c3RhcnQs
IHdlbmQgLSB3c3RhcnQgfCAwKTsKKyAgICB2YXIgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzKHdlbmQp
OworICAgIHZhciBuZW5kID0gcGFyc2VfaW50KG5zdGFydCwgbnN0YXJ0KTsKKyAgICB2YXIgaW5k
ZW50OworICAgIGlmIChuc3RhcnQgPT09IG5lbmQpIHsKKyAgICAgIGluZGVudCA9IDA7CisgICAg
fQorICAgIGVsc2UgeworICAgICAgdHJ5IHsKKyAgICAgICAgaW5kZW50ID0gQ2FtbF9mb3JtYXQu
Y2FtbF9pbnRfb2Zfc3RyaW5nKCQkU3RyaW5nLnN1YihzdHIsIG5zdGFydCwgbmVuZCAtIG5zdGFy
dCB8IDApKTsKKyAgICAgIH0KKyAgICAgIGNhdGNoIChleG4peworICAgICAgICBpZiAoZXhuWzBd
ID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7CisgICAgICAgICAgaW5kZW50
ID0gaW52YWxpZF9ib3goLyogKCkgKi8wKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICB0aHJvdyBleG47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgdmFyIGV4
cF9lbmQgPSBwYXJzZV9zcGFjZXMobmVuZCk7CisgICAgaWYgKGV4cF9lbmQgIT09IGxlbikgewor
ICAgICAgaW52YWxpZF9ib3goLyogKCkgKi8wKTsKKyAgICB9CisgICAgdmFyIGJveF90eXBlOwor
ICAgIHN3aXRjaCAoYm94X25hbWUpIHsKKyAgICAgIGNhc2UgIiIgOiAKKyAgICAgIGNhc2UgImIi
IDogCisgICAgICAgICAgYm94X3R5cGUgPSAvKiBQcF9ib3ggKi80OworICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAiaCIgOiAKKyAgICAgICAgICBib3hfdHlwZSA9IC8qIFBwX2hib3ggKi8w
OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAiaG92IiA6IAorICAgICAgICAgIGJveF90
eXBlID0gLyogUHBfaG92Ym94ICovMzsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgImh2
IiA6IAorICAgICAgICAgIGJveF90eXBlID0gLyogUHBfaHZib3ggKi8yOworICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAidiIgOiAKKyAgICAgICAgICBib3hfdHlwZSA9IC8qIFBwX3Zib3gg
Ki8xOworICAgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgYm94X3R5cGUg
PSBpbnZhbGlkX2JveCgvKiAoKSAqLzApOworICAgIH0KKyAgICByZXR1cm4gLyogdHVwbGUgKi9b
CisgICAgICAgICAgICBpbmRlbnQsCisgICAgICAgICAgICBib3hfdHlwZQorICAgICAgICAgIF07
CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9wYWRkaW5nX2ZtdF9lYmIocGFkLCBmbXQpIHsKKyAg
aWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8qIFBhZGRpbmdfZm10
X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgZm10
CisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIGlmIChwYWQudGFnKSB7CisgICAgcmV0dXJuIC8q
IFBhZGRpbmdfZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIEFyZ19wYWRkaW5nICovQmxvY2su
X18oMSwgW3BhZFswXV0pLAorICAgICAgICAgICAgZm10CisgICAgICAgICAgXTsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gLyogUGFkZGluZ19mbXRfRUJCICovWworICAgICAgICAgICAgLyog
TGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgcGFkWzBdLAorICAg
ICAgICAgICAgICAgIHBhZFsxXQorICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgIGZtdAor
ICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbWFrZV9wcmVjaXNpb25fZm10X2ViYihw
cmVjLCBmbXQpIHsKKyAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgIGlmIChw
cmVjICE9PSAwKSB7CisgICAgICByZXR1cm4gLyogUHJlY2lzaW9uX2ZtdF9FQkIgKi9bCisgICAg
ICAgICAgICAgIC8qIEFyZ19wcmVjaXNpb24gKi8xLAorICAgICAgICAgICAgICBmbXQKKyAgICAg
ICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIFByZWNpc2lvbl9m
bXRfRUJCICovWworICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAg
ICAgICBmbXQKKyAgICAgICAgICAgIF07CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVy
biAvKiBQcmVjaXNpb25fZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExpdF9wcmVjaXNpb24g
Ki9bcHJlY1swXV0sCisgICAgICAgICAgICBmbXQKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1
bmN0aW9uIG1ha2VfcGFkcHJlY19mbXRfZWJiKHBhZCwgcHJlYywgZm10KSB7CisgIHZhciBtYXRj
aCA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIocHJlYywgZm10KTsKKyAgdmFyIGZtdCRwcmltZSA9
IG1hdGNoWzFdOworICB2YXIgcHJlYyQxID0gbWF0Y2hbMF07CisgIGlmICh0eXBlb2YgcGFkID09
PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdF9FQkIgKi9bCisgICAgICAg
ICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgIHByZWMkMSwKKyAgICAgICAgICAg
IGZtdCRwcmltZQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSBpZiAocGFkLnRhZykgeworICAg
IHJldHVybiAvKiBQYWRwcmVjX2ZtdF9FQkIgKi9bCisgICAgICAgICAgICAvKiBBcmdfcGFkZGlu
ZyAqL0Jsb2NrLl9fKDEsIFtwYWRbMF1dKSwKKyAgICAgICAgICAgIHByZWMkMSwKKyAgICAgICAg
ICAgIGZtdCRwcmltZQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8q
IFBhZHByZWNfZm10X0VCQiAqL1sKKyAgICAgICAgICAgIC8qIExpdF9wYWRkaW5nICovQmxvY2su
X18oMCwgWworICAgICAgICAgICAgICAgIHBhZFswXSwKKyAgICAgICAgICAgICAgICBwYWRbMV0K
KyAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICBwcmVjJDEsCisgICAgICAgICAgICBmbXQk
cHJpbWUKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGZtdF9lYmJfb2Zfc3RyaW5n
KGxlZ2FjeV9iZWhhdmlvciwgc3RyKSB7CisgIHZhciBsZWdhY3lfYmVoYXZpb3IkMSA9IGxlZ2Fj
eV9iZWhhdmlvciA/IGxlZ2FjeV9iZWhhdmlvclswXSA6IC8qIHRydWUgKi8xOworICB2YXIgaW52
YWxpZF9mb3JtYXRfbWVzc2FnZSA9IGZ1bmN0aW9uIChzdHJfaW5kLCBtc2cpIHsKKyAgICByZXR1
cm4gQ3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAg
ICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgLyog
Q2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5n
X2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEludF9kICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFN0cmluZyAqL0Jsb2NrLl9fKDIsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAg
ICAgICAiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIgorICAg
ICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2luZCwgbXNnKTsKKyAgfTsKKyAgdmFyIGludmFs
aWRfZm9ybWF0X3dpdGhvdXQgPSBmdW5jdGlvbiAoc3RyX2luZCwgYywgcykgeworICAgIHJldHVy
biBDdXJyeS5fNChmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAg
ICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBD
YW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICI6IGF0IGNoYXJhY3RlciBudW1iZXIgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogSW50ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIsICciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIENoYXIgKi9CbG9jay5fXygwLCBbLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9j
ay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIicgd2l0aG91dCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogU3RyaW5nICovQmxvY2suX18oMiwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9m
b3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSld
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
KQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgIF0p
LAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBu
dW1iZXIgJWQsICclYycgd2l0aG91dCAlcyIKKyAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHN0
cl9pbmQsIGMsIHMpOworICB9OworICB2YXIgZXhwZWN0ZWRfY2hhcmFjdGVyID0gZnVuY3Rpb24g
KHN0cl9pbmQsIGV4cGVjdGVkLCByZWFkKSB7CisgICAgcmV0dXJuIEN1cnJ5Ll80KGZhaWx3aXRo
X21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0
ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBm
b3JtYXQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2su
X18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18o
MTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXQgY2hhcmFjdGVyIG51
bWJlciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5f
Xyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAq
L0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiwgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmcg
Ki9CbG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGV4cGVjdGVkLCByZWFkICIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1s
X2NoYXIgKi9CbG9jay5fXygxLCBbLyogRW5kX29mX2Zvcm1hdCAqLzBdKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKQor
ICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBm
b3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVkLCByZWFkICVDIgor
ICAgICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2luZCwgZXhwZWN0ZWQsIHJlYWQpOworICB9
OworICB2YXIgY29tcHV0ZV9pbnRfY29udiA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBf
cGx1cywgX3NoYXJwLCBfc3BhY2UsIHN5bWIpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2
YXIgc3BhY2UgPSBfc3BhY2U7CisgICAgICB2YXIgc2hhcnAgPSBfc2hhcnA7CisgICAgICB2YXIg
cGx1cyA9IF9wbHVzOworICAgICAgdmFyIGV4aXQgPSAwOworICAgICAgdmFyIGV4aXQkMSA9IDA7
CisgICAgICBpZiAocGx1cyAhPT0gMCkgeworICAgICAgICBpZiAoc2hhcnAgIT09IDApIHsKKyAg
ICAgICAgICBleGl0JDEgPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNwYWNlICE9
PSAwKSB7CisgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo
c3ltYiAhPT0gMTAwKSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDEwNSkgeworICAgICAgICAg
ICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
cmV0dXJuIC8qIEludF9waSAqLzQ7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiAvKiBJbnRfcGQgKi8xOworICAgICAgICB9CisgICAgICB9
CisgICAgICBlbHNlIGlmIChzaGFycCAhPT0gMCkgeworICAgICAgICBpZiAoc3BhY2UgIT09IDAp
IHsKKyAgICAgICAgICBleGl0JDEgPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN5
bWIgIT09IDg4KSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDExMSkgeworICAgICAgICAgICAg
aWYgKHN5bWIgIT09IDEyMCkgeworICAgICAgICAgICAgICBleGl0JDEgPSAyOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiBJbnRfQ3gg
Ki83OworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHJldHVybiAvKiBJbnRfQ28gKi8xMTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIEludF9DWCAqLzk7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHNwYWNlICE9PSAwKSB7CisgICAgICAgIGlmIChzeW1i
ICE9PSAxMDApIHsKKyAgICAgICAgICBpZiAoc3ltYiAhPT0gMTA1KSB7CisgICAgICAgICAgICBl
eGl0ID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1
cm4gLyogSW50X3NpICovNTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgcmV0dXJuIC8qIEludF9zZCAqLzI7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICAgIGVsc2UgeworICAgICAgICB2YXIgc3dpdGNoZXIgPSBzeW1iIC0gODggfCAwOworICAgICAg
ICBpZiAoc3dpdGNoZXIgPiAzMiB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICBleGl0ID0g
MTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzd2l0Y2ggKHN3aXRjaGVy
KSB7CisgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50
X1ggKi84OworICAgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgICAgICAgIHJldHVybiAv
KiBJbnRfZCAqLzA7CisgICAgICAgICAgICBjYXNlIDE3IDogCisgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEludF9pICovMzsKKyAgICAgICAgICAgIGNhc2UgMjMgOiAKKyAgICAgICAgICAgICAg
ICByZXR1cm4gLyogSW50X28gKi8xMDsKKyAgICAgICAgICAgIGNhc2UgMjkgOiAKKyAgICAgICAg
ICAgICAgICByZXR1cm4gLyogSW50X3UgKi8xMjsKKyAgICAgICAgICAgIGNhc2UgMSA6IAorICAg
ICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIGNh
c2UgNCA6IAorICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICBjYXNlIDYgOiAKKyAg
ICAgICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICBj
YXNlIDkgOiAKKyAgICAgICAgICAgIGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGNhc2UgMTEgOiAK
KyAgICAgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAg
ICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICAgIGNhc2Ug
MTggOiAKKyAgICAgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgICAgIGNhc2UgMjAgOiAKKyAg
ICAgICAgICAgIGNhc2UgMjEgOiAKKyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAg
IGNhc2UgMjQgOiAKKyAgICAgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAgICAgIGNhc2UgMjYg
OiAKKyAgICAgICAgICAgIGNhc2UgMjcgOiAKKyAgICAgICAgICAgIGNhc2UgMjggOiAKKyAgICAg
ICAgICAgIGNhc2UgMzAgOiAKKyAgICAgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgICAgICAg
ICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzIg
OiAKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50X3ggKi82OworICAgICAgICAgICAgCisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoZXhpdCQxID09PSAyKSB7
CisgICAgICAgIHZhciBleGl0JDIgPSAwOworICAgICAgICB2YXIgc3dpdGNoZXIkMSA9IHN5bWIg
LSA4OCB8IDA7CisgICAgICAgIGlmIChzd2l0Y2hlciQxID4gMzIgfHwgc3dpdGNoZXIkMSA8IDAp
IHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICBzd2l0Y2ggKHN3aXRjaGVyJDEpIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEludF9DWCAqLzk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICAgICAg
ICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IEludF9DbyAqLzExOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgIGNhc2Ug
MTcgOiAKKyAgICAgICAgICAgIGNhc2UgMjkgOiAKKyAgICAgICAgICAgICAgICBleGl0JDIgPSAz
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgY2FzZSA0
IDogCisgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAg
ICAgICAgY2FzZSA3IDogCisgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgIGNhc2Ug
OSA6IAorICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgY2FzZSAxMSA6IAorICAg
ICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAg
Y2FzZSAxNSA6IAorICAgICAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgY2FzZSAxOCA6
IAorICAgICAgICAgICAgY2FzZSAxOSA6IAorICAgICAgICAgICAgY2FzZSAyMCA6IAorICAgICAg
ICAgICAgY2FzZSAyMSA6IAorICAgICAgICAgICAgY2FzZSAyMiA6IAorICAgICAgICAgICAgY2Fz
ZSAyNCA6IAorICAgICAgICAgICAgY2FzZSAyNSA6IAorICAgICAgICAgICAgY2FzZSAyNiA6IAor
ICAgICAgICAgICAgY2FzZSAyNyA6IAorICAgICAgICAgICAgY2FzZSAyOCA6IAorICAgICAgICAg
ICAgY2FzZSAzMCA6IAorICAgICAgICAgICAgY2FzZSAzMSA6IAorICAgICAgICAgICAgICAgIGV4
aXQgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzMiA6IAor
ICAgICAgICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIEludF9DeCAqLzc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGlmIChleGl0JDIgPT09IDMpIHsKKyAgICAgICAgICBpZiAobGVnYWN5
X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIF9zaGFycCA9IC8qIGZhbHNlICovMDsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJf
aW5kLCBzeW1iLCAiJyMnIik7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAg
ICAgfQorICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKHBsdXMgIT09IDApIHsK
KyAgICAgICAgICBpZiAoc3BhY2UgIT09IDApIHsKKyAgICAgICAgICAgIGlmIChsZWdhY3lfYmVo
YXZpb3IkMSkgeworICAgICAgICAgICAgICBfc3BhY2UgPSAvKiBmYWxzZSAqLzA7CisgICAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9p
bmQsIHN0cl9pbmQsIC8qICIgIiAqLzMyLCAiJysnIik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAg
ICBfcGx1cyA9IC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
ICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBp
bmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJysnIik7CisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNwYWNlICE9PSAwKSB7CisgICAgICAg
ICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICBfc3BhY2UgPSAvKiBmYWxz
ZSAqLzA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWco
cGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIicgJyIpOworICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAgICAgICAg
ICAyNzE2LAorICAgICAgICAgICAgICAgICAgMjgKKyAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAgIH07CisgIH07CisgIHZh
ciBpbmNvbXBhdGlibGVfZmxhZyA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCBv
cHRpb24pIHsKKyAgICB2YXIgc3ViZm10ID0gJCRTdHJpbmcuc3ViKHN0ciwgcGN0X2luZCwgc3Ry
X2luZCAtIHBjdF9pbmQgfCAwKTsKKyAgICByZXR1cm4gQ3VycnkuXzUoZmFpbHdpdGhfbWVzc2Fn
ZSgvKiBGb3JtYXQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICov
QmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAi
LAorICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF9kICovMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2su
X18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZyAqL0Jsb2Nr
Ll9fKDIsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Tm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaXMgaW5jb21wYXRpYmxlIHdpdGggJyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGFy
ICovQmxvY2suX18oMCwgWy8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIicgaW4g
c3ViLWZvcm1hdCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3Bh
ZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKQor
ICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBm
b3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGlzIGluY29tcGF0aWJsZSB3aXRo
ICclYycgaW4gc3ViLWZvcm1hdCAlUyIKKyAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHBjdF9p
bmQsIG9wdGlvbiwgc3ltYiwgc3ViZm10KTsKKyAgfTsKKyAgdmFyIHBhcnNlX3Bvc2l0aXZlID0g
ZnVuY3Rpb24gKF9zdHJfaW5kLCBlbmRfaW5kLCBfYWNjKSB7CisgICAgd2hpbGUodHJ1ZSkgewor
ICAgICAgdmFyIGFjYyA9IF9hY2M7CisgICAgICB2YXIgc3RyX2luZCA9IF9zdHJfaW5kOworICAg
ICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVz
c2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgICB9CisgICAg
ICB2YXIgYyA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAgaWYgKGMgPiA1
NyB8fCBjIDwgNDgpIHsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAgIHN0cl9pbmQsCisgICAgICAgICAgICAgICAgYWNjCisgICAgICAgICAgICAgIF07CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG5ld19hY2MgPSBDYW1sX2ludDMyLmltdWwo
YWNjLCAxMCkgKyAoYyAtIC8qICIwIiAqLzQ4IHwgMCkgfCAwOworICAgICAgICBpZiAobmV3X2Fj
YyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgeworICAgICAgICAgIHJldHVybiBDdXJyeS5fMyhm
YWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICI6IGludGVnZXIgIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2suX18oNCwgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVy
YWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2Qg
Ki8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1h
dCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkIgorICAgICAgICAg
ICAgICAgICAgICAgICAgXSksIHN0ciwgbmV3X2FjYywgU3lzLm1heF9zdHJpbmdfbGVuZ3RoKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBfYWNjID0gbmV3X2FjYzsKKyAg
ICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgcGFy
c2VfYWZ0ZXJfcHJlY2lzaW9uID0gZnVuY3Rpb24gKHBjdF9pbmQsIHN0cl9pbmQsIGVuZF9pbmQs
IG1pbnVzLCBwbHVzLCBzaGFycCwgc3BhY2UsIGlnbiwgcGFkLCBwcmVjKSB7CisgICAgaWYgKHN0
cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2lu
ZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgIH0KKyAgICB2YXIgcGFyc2VfY29u
diA9IGZ1bmN0aW9uIChwYWRwcmVjKSB7CisgICAgICByZXR1cm4gcGFyc2VfY29udmVyc2lvbihw
Y3RfaW5kLCBzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQsIHBsdXMsIHNoYXJwLCBzcGFjZSwgaWdu
LCBwYWQsIHByZWMsIHBhZHByZWMsIENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpKTsKKyAg
ICB9OworICAgIGlmICh0eXBlb2YgcGFkID09PSAibnVtYmVyIikgeworICAgICAgdmFyIGV4aXQg
PSAwOworICAgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgICAgICBpZiAo
cHJlYyAhPT0gMCkgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiBwYXJzZV9jb252KC8qIE5vX3BhZGRpbmcgKi8wKTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAg
fQorICAgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKG1pbnVzICE9PSAwKSB7Cisg
ICAgICAgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgcmV0
dXJuIHBhcnNlX2NvbnYoLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbLyogTGVmdCAqLzBd
KSk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHBh
cnNlX2NvbnYoLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIExlZnQgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjWzBd
CisgICAgICAgICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgeworICAgICAgICAgIHJl
dHVybiBwYXJzZV9jb252KC8qIEFyZ19wYWRkaW5nICovQmxvY2suX18oMSwgWy8qIFJpZ2h0ICov
MV0pKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gcGFyc2Vf
Y29udigvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWNbMF0KKyAgICAg
ICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBwYXJzZV9jb252KHBhZCk7CisgICAgfQorICB9Owor
ICB2YXIgcGFyc2VfYWZ0ZXJfcGFkZGluZyA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBl
bmRfaW5kLCBtaW51cywgcGx1cywgc2hhcnAsIHNwYWNlLCBpZ24sIHBhZCkgeworICAgIGlmIChz
dHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9p
bmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICB9CisgICAgdmFyIHN5bWIgPSBD
YW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICBpZiAoc3ltYiAhPT0gNDYpIHsKKyAg
ICAgIHJldHVybiBwYXJzZV9jb252ZXJzaW9uKHBjdF9pbmQsIHN0cl9pbmQgKyAxIHwgMCwgZW5k
X2luZCwgcGx1cywgc2hhcnAsIHNwYWNlLCBpZ24sIHBhZCwgLyogTm9fcHJlY2lzaW9uICovMCwg
cGFkLCBzeW1iKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgcGN0X2luZCQxID0gcGN0
X2luZDsKKyAgICAgIHZhciBzdHJfaW5kJDEgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICB2YXIg
ZW5kX2luZCQxID0gZW5kX2luZDsKKyAgICAgIHZhciBtaW51cyQxID0gbWludXM7CisgICAgICB2
YXIgcGx1cyQxID0gcGx1czsKKyAgICAgIHZhciBzaGFycCQxID0gc2hhcnA7CisgICAgICB2YXIg
c3BhY2UkMSA9IHNwYWNlOworICAgICAgdmFyIGlnbiQxID0gaWduOworICAgICAgdmFyIHBhZCQx
ID0gcGFkOworICAgICAgaWYgKHN0cl9pbmQkMSA9PT0gZW5kX2luZCQxKSB7CisgICAgICAgIGlu
dmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCQxLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0
Iik7CisgICAgICB9CisgICAgICB2YXIgcGFyc2VfbGl0ZXJhbCA9IGZ1bmN0aW9uIChtaW51cywg
c3RyX2luZCkgeworICAgICAgICB2YXIgbWF0Y2ggPSBwYXJzZV9wb3NpdGl2ZShzdHJfaW5kLCBl
bmRfaW5kJDEsIDApOworICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uKHBjdF9p
bmQkMSwgbWF0Y2hbMF0sIGVuZF9pbmQkMSwgbWludXMsIHBsdXMkMSwgc2hhcnAkMSwgc3BhY2Uk
MSwgaWduJDEsIHBhZCQxLCAvKiBMaXRfcHJlY2lzaW9uICovW21hdGNoWzFdXSk7CisgICAgICB9
OworICAgICAgdmFyIHN5bWIkMSA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQkMSk7Cisg
ICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgIGlmIChzeW1i
JDEgPj0gNDgpIHsKKyAgICAgICAgaWYgKHN5bWIkMSA+PSA1OCkgeworICAgICAgICAgIGV4aXQg
PSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiBwYXJzZV9s
aXRlcmFsKG1pbnVzJDEsIHN0cl9pbmQkMSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVs
c2UgaWYgKHN5bWIkMSA+PSA0MikgeworICAgICAgICBzd2l0Y2ggKHN5bWIkMSAtIDQyIHwgMCkg
eworICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJf
cHJlY2lzaW9uKHBjdF9pbmQkMSwgc3RyX2luZCQxICsgMSB8IDAsIGVuZF9pbmQkMSwgbWludXMk
MSwgcGx1cyQxLCBzaGFycCQxLCBzcGFjZSQxLCBpZ24kMSwgcGFkJDEsIC8qIEFyZ19wcmVjaXNp
b24gKi8xKTsKKyAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICAgICAgZXhpdCQxID0gMjsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2Fz
ZSAyIDogCisgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgY2FzZSA1IDogCisgICAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAKKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQor
ICAgICAgaWYgKGV4aXQkMSA9PT0gMikgeworICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEp
IHsKKyAgICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbChtaW51cyQxIHx8ICsoc3ltYiQxID09
PSAvKiAiLSIgKi80NSksIHN0cl9pbmQkMSArIDEgfCAwKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgaWYg
KGV4aXQgPT09IDEpIHsKKyAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAg
ICAgcmV0dXJuIHBhcnNlX2FmdGVyX3ByZWNpc2lvbihwY3RfaW5kJDEsIHN0cl9pbmQkMSwgZW5k
X2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGlnbiQxLCBwYWQkMSwg
LyogTGl0X3ByZWNpc2lvbiAqL1swXSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIGludmFsaWRfZm9ybWF0X3dpdGhvdXQoc3RyX2luZCQxIC0gMSB8IDAsIC8q
ICIuIiAqLzQ2LCAicHJlY2lzaW9uIik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAg
IH0KKyAgfTsKKyAgdmFyIHBhcnNlX2xpdGVyYWwgPSBmdW5jdGlvbiAobGl0X3N0YXJ0LCBfc3Ry
X2luZCwgZW5kX2luZCkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBzdHJfaW5kID0g
X3N0cl9pbmQ7CisgICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgICByZXR1
cm4gYWRkX2xpdGVyYWwobGl0X3N0YXJ0LCBzdHJfaW5kLCAvKiBFbmRfb2ZfZm9ybWF0ICovMCk7
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJpbmcu
Z2V0KHN0ciwgc3RyX2luZCk7CisgICAgICAgIGlmIChtYXRjaCAhPT0gMzcpIHsKKyAgICAgICAg
ICBpZiAobWF0Y2ggIT09IDY0KSB7CisgICAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAx
IHwgMDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxID0gcGFyc2VfYWZ0ZXJf
YXQoc3RyX2luZCArIDEgfCAwLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHJldHVybiBhZGRfbGl0
ZXJhbChsaXRfc3RhcnQsIHN0cl9pbmQsIG1hdGNoJDFbMF0pOworICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMiA9IHBhcnNlX2Zvcm1h
dChzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICByZXR1cm4gYWRkX2xpdGVyYWwobGl0X3N0
YXJ0LCBzdHJfaW5kLCBtYXRjaCQyWzBdKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH07Cisg
IH07CisgIHZhciBwYXJzZV9mb3JtYXQgPSBmdW5jdGlvbiAocGN0X2luZCwgZW5kX2luZCkgewor
ICAgIHZhciBwY3RfaW5kJDEgPSBwY3RfaW5kOworICAgIHZhciBzdHJfaW5kID0gcGN0X2luZCAr
IDEgfCAwOworICAgIHZhciBlbmRfaW5kJDEgPSBlbmRfaW5kOworICAgIGlmIChzdHJfaW5kID09
PSBlbmRfaW5kJDEpIHsKKyAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCQxLCAi
dW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgfQorICAgIHZhciBtYXRjaCA9IENhbWxf
c3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgIGlmIChtYXRjaCAhPT0gOTUpIHsKKyAgICAg
IHJldHVybiBwYXJzZV9mbGFncyhwY3RfaW5kJDEsIHN0cl9pbmQsIGVuZF9pbmQkMSwgLyogZmFs
c2UgKi8wKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gcGFyc2VfZmxhZ3MocGN0
X2luZCQxLCBzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQkMSwgLyogdHJ1ZSAqLzEpOworICAgIH0K
KyAgfTsKKyAgdmFyIHBhcnNlX2FmdGVyX2F0ID0gZnVuY3Rpb24gKHN0cl9pbmQsIGVuZF9pbmQp
IHsKKyAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgcmV0dXJuIC8qIEZtdF9F
QkIgKi9bLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAg
IC8qICJAIiAqLzY0LAorICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAg
ICAgICAgICAgICAgICBdKV07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIGMgPSBDYW1s
X3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgIHZhciBleGl0ID0gMDsKKyAgICAgIGlm
IChjID49IDY1KSB7CisgICAgICAgIGlmIChjID49IDk0KSB7CisgICAgICAgICAgdmFyIHN3aXRj
aGVyID0gYyAtIDEyMyB8IDA7CisgICAgICAgICAgaWYgKHN3aXRjaGVyID4gMiB8fCBzd2l0Y2hl
ciA8IDApIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3dpdGNoZXIpIHsKKyAgICAgICAgICAgICAgY2Fz
ZSAwIDogCisgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfdGFnKC8qIHRydWUgKi8xLCBz
dHJfaW5kICsgMSB8IDAsIGVuZF9pbmQpOworICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQgPSBzdHJfaW5k
ICsgMSB8IDA7CisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSBwYXJzZV9saXRlcmFsKGJl
Z19pbmQsIGJlZ19pbmQsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZt
dF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogQ2xvc2VfdGFnICovMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOworICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAoYyA+PSA5MSkgeworICAgICAgICAgIHN3aXRjaCAoYyAtIDkxIHwgMCkgewor
ICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX3RhZygv
KiBmYWxzZSAqLzAsIHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCk7CisgICAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgIHZhciBiZWdfaW5kJDEgPSBz
dHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDEgPSBwYXJzZV9saXRl
cmFsKGJlZ19pbmQkMSwgYmVnX2luZCQxLCBlbmRfaW5kKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2xvc2VfYm94ICovMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQxWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsK
KyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAoYyAh
PT0gMTApIHsKKyAgICAgICAgaWYgKGMgPj0gMzIpIHsKKyAgICAgICAgICBzd2l0Y2ggKGMgLSAz
MiB8IDApIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgIHZhciBiZWdf
aW5kJDIgPSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBw
YXJzZV9saXRlcmFsKGJlZ19pbmQkMiwgYmVnX2luZCQyLCBlbmRfaW5kKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQnJlYWsgKi9CbG9jay5fXygwLCBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAICIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDJbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAg
ICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgaWYgKChzdHJfaW5kICsgMSB8IDApIDwgZW5k
X2luZCAmJiBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kICsgMSB8IDApID09PSAvKiAiJSIg
Ki8zNykgeworICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkMyA9IHN0cl9pbmQgKyAyIHwg
MDsKKyAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQzID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5k
JDMsIGJlZ19pbmQkMywgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10
X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBFc2NhcGVkX3BlcmNlbnQgKi82LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkM1swXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
XTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICB2YXIgbWF0Y2gkNCA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5k
X2luZCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBDaGFyX2xp
dGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
IkAiICovNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0WzBdCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICB2
YXIgYmVnX2luZCQ0ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRj
aCQ1ID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDQsIGJlZ19pbmQkNCwgZW5kX2luZCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9j
ay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJyZWFrICovQmxvY2su
X18oMCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQCwiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQ1WzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAg
ICAgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQ1ID0gc3Ry
X2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQ2ID0gcGFyc2VfbGl0ZXJh
bChiZWdfaW5kJDUsIGJlZ19pbmQkNSwgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIEZsdXNoX25ld2xpbmUgKi80LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDZbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXSld
OworICAgICAgICAgICAgY2FzZSAyNyA6IAorICAgICAgICAgICAgICAgIHZhciBzdHJfaW5kJDEg
PSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICAgICAgdmFyIGVuZF9pbmQkMSA9IGVuZF9p
bmQ7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDc7CisgICAgICAgICAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgICAgICAgIGlmIChzdHJfaW5kJDEgPT09IGVuZF9pbmQkMSB8fCBDYW1sX3N0
cmluZy5nZXQoc3RyLCBzdHJfaW5kJDEpICE9PSAvKiAiPCIgKi82MCkgeworICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB2YXIgc3RyX2luZF8xID0gcGFyc2Vfc3Bh
Y2VzKHN0cl9pbmQkMSArIDEgfCAwLCBlbmRfaW5kJDEpOworICAgICAgICAgICAgICAgICAgdmFy
IG1hdGNoJDggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kXzEpOworICAgICAgICAgICAg
ICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkOCA+PSA0
OCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkOCA+PSA1OCkgeworICAgICAgICAg
ICAgICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICBleGl0JDEgPSAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQ4ICE9PSA0NSkg
eworICAgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3Rf
Zm91bmQ7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgZXhpdCQxID0gMTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgIGlmIChleGl0JDEgPT09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IG1hdGNoJDkgPSBwYXJzZV9pbnRlZ2VyKHN0cl9pbmRfMSwgZW5kX2luZCQxKTsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHdpZHRoID0gbWF0Y2gkOVsxXTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyhtYXRjaCQ5WzBdLCBlbmRfaW5kJDEpOworICAg
ICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJf
aW5kXzMpOworICAgICAgICAgICAgICAgICAgICB2YXIgc3dpdGNoZXIkMSA9IG1hdGNoJDEwIC0g
NDUgfCAwOworICAgICAgICAgICAgICAgICAgICBpZiAoc3dpdGNoZXIkMSA+IDEyIHx8IHN3aXRj
aGVyJDEgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYgKHN3aXRjaGVyJDEgIT09IDE3
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5ub3RfZm91bmQ7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAkJFN0cmluZy5zdWIo
c3RyLCBzdHJfaW5kJDEgLSAyIHwgMCwgKHN0cl9pbmRfMyAtIHN0cl9pbmQkMSB8IDApICsgMyB8
IDApOworICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNyA9IC8qIHR1cGxlICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxIHwgMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogQnJlYWsgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN3aXRj
aGVyJDEgPT09IDIgfHwgc3dpdGNoZXIkMSA9PT0gMSkgeworICAgICAgICAgICAgICAgICAgICAg
IHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICB2YXIgbWF0Y2gkMTEgPSBwYXJzZV9pbnRlZ2VyKHN0cl9pbmRfMywgZW5kX2luZCQxKTsKKyAg
ICAgICAgICAgICAgICAgICAgICB2YXIgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzKG1hdGNoJDEx
WzBdLCBlbmRfaW5kJDEpOworICAgICAgICAgICAgICAgICAgICAgIGlmIChDYW1sX3N0cmluZy5n
ZXQoc3RyLCBzdHJfaW5kXzUpICE9PSAvKiAiPiIgKi82MikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICB2YXIgcyQxID0gJCRTdHJpbmcu
c3ViKHN0ciwgc3RyX2luZCQxIC0gMiB8IDAsIChzdHJfaW5kXzUgLSBzdHJfaW5kJDEgfCAwKSAr
IDMgfCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ3ID0gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxIHwgMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIEJyZWFrICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMVsxXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICBdKQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjYXRjaCAoZXhuKXsKKyAgICAgICAgICAgICAgICAgIGlmIChleG4g
PT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkgeworICAgICAgICAgICAgICAg
ICAgICBtYXRjaCQ3ID0gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgc3RyX2lu
ZCQxLAorICAgICAgICAgICAgICAgICAgICAgIC8qIEJyZWFrICovQmxvY2suX18oMCwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAiQDsiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAwCisgICAgICAgICAgICAgICAgICAgICAgICBd
KQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoZXhuWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWls
dXJlKSB7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDcgPSAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICBzdHJfaW5kJDEsCisgICAgICAgICAgICAgICAgICAgICAgLyogQnJl
YWsgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICJAOyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgZXhuOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB2YXIgbmV4dF9pbmQgPSBtYXRjaCQ3WzBdOworICAgICAgICAgICAgICAg
IHZhciBtYXRjaCQxMiA9IHBhcnNlX2xpdGVyYWwobmV4dF9pbmQsIG5leHRfaW5kLCBlbmRfaW5k
JDEpOworICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdf
bGl0ICovQmxvY2suX18oMTcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ3
WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDEyWzBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgIGNhc2UgMjggOiAKKyAgICAgICAgICAg
ICAgICB2YXIgc3RyX2luZCQyID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgICAgIHZh
ciBlbmRfaW5kJDIgPSBlbmRfaW5kOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQxMzsKKyAg
ICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgdmFyIHN0cl9pbmRfMSQxID0g
cGFyc2Vfc3BhY2VzKHN0cl9pbmQkMiwgZW5kX2luZCQyKTsKKyAgICAgICAgICAgICAgICAgIHZh
ciBtYXRjaCQxNCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmRfMSQxKTsKKyAgICAgICAg
ICAgICAgICAgIHZhciBleGl0JDIgPSAwOworICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDE0
ID49IDQ4KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQxNCA+PSA1OCkgeworICAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgZXhpdCQyID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMTQgIT09IDQ1KSB7CisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7CisgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCQyID0g
MTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGlmIChleGl0JDIgPT09
IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE1ID0gcGFyc2VfaW50ZWdlcihz
dHJfaW5kXzEkMSwgZW5kX2luZCQyKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0cl9pbmRf
MyQxID0gcGFyc2Vfc3BhY2VzKG1hdGNoJDE1WzBdLCBlbmRfaW5kJDIpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZF8zJDEpICE9PSAvKiAiPiIg
Ki82MikgeworICAgICAgICAgICAgICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLm5vdF9mb3VuZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB2YXIgcyQyID0gJCRTdHJpbmcuc3ViKHN0ciwgc3RyX2luZCQyIC0gMiB8IDAsIChzdHJfaW5k
XzMkMSAtIHN0cl9pbmQkMiB8IDApICsgMyB8IDApOworICAgICAgICAgICAgICAgICAgICBtYXRj
aCQxMyA9IC8qIFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICBz
dHJfaW5kXzMkMSArIDEgfCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogTWFnaWNfc2l6
ZSAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzJDIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTVbMV0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICBdXTsKKyAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
YXRjaCAoZXhuJDEpeworICAgICAgICAgICAgICAgICAgaWYgKGV4biQxID09PSBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTMg
PSAvKiBOb25lICovMDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGV4biQxWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogTm9uZSAqLzA7CisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3cgZXhuJDE7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGlmIChtYXRjaCQxMykgeworICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE2
ID0gbWF0Y2gkMTNbMF07CisgICAgICAgICAgICAgICAgICB2YXIgbmV4dF9pbmQkMSA9IG1hdGNo
JDE2WzBdOworICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE3ID0gcGFyc2VfbGl0ZXJhbChu
ZXh0X2luZCQxLCBuZXh0X2luZCQxLCBlbmRfaW5kJDIpOworICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTZbMV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQxN1swXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
XTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICB2YXIgbWF0Y2gkMTggPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQkMiwgc3RyX2luZCQy
LCBlbmRfaW5kJDIpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyog
Rm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogU2Nhbl9pbmRpYyAqL0Jsb2NrLl9fKDIsIFsvKiAiPCIgKi82MF0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMThbMF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAxIDogCisg
ICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAg
Y2FzZSA0IDogCisgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgIGNhc2UgNyA6IAor
ICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAg
IGNhc2UgMTAgOiAKKyAgICAgICAgICAgIGNhc2UgMTEgOiAKKyAgICAgICAgICAgIGNhc2UgMTMg
OiAKKyAgICAgICAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICAgIGNhc2UgMTYgOiAKKyAgICAg
ICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIGNh
c2UgMTkgOiAKKyAgICAgICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgICAgIGNhc2UgMjEgOiAK
KyAgICAgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgICAgIGNhc2UgMjMgOiAKKyAgICAgICAg
ICAgIGNhc2UgMjQgOiAKKyAgICAgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAgICAgIGNhc2Ug
MjYgOiAKKyAgICAgICAgICAgIGNhc2UgMjkgOiAKKyAgICAgICAgICAgIGNhc2UgMzAgOiAKKyAg
ICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMzEgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQ2ID0gc3RyX2luZCAr
IDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQxOSA9IHBhcnNlX2xpdGVyYWwoYmVn
X2luZCQ2LCBiZWdfaW5kJDYsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgIHJldHVybiAvKiBG
bXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBGRmx1c2ggKi8yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDE5WzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAg
ICAgIGNhc2UgMzIgOiAKKyAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQ3ID0gc3RyX2luZCAr
IDEgfCAwOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCQyMCA9IHBhcnNlX2xpdGVyYWwoYmVn
X2luZCQ3LCBiZWdfaW5kJDcsIGVuZF9pbmQpOworICAgICAgICAgICAgICAgIHJldHVybiAvKiBG
bXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBFc2NhcGVkX2F0ICovNSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQyMFswXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07CisgICAg
ICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgZXhpdCA9IDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2
YXIgYmVnX2luZCQ4ID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICB2YXIgbWF0Y2gkMjEgPSBw
YXJzZV9saXRlcmFsKGJlZ19pbmQkOCwgYmVnX2luZCQ4LCBlbmRfaW5kKTsKKyAgICAgICAgcmV0
dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWworICAg
ICAgICAgICAgICAgICAgICAvKiBGb3JjZV9uZXdsaW5lICovMywKKyAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMjFbMF0KKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgIH0KKyAgICAgIGlm
IChleGl0ID09PSAxKSB7CisgICAgICAgIHZhciBiZWdfaW5kJDkgPSBzdHJfaW5kICsgMSB8IDA7
CisgICAgICAgIHZhciBtYXRjaCQyMiA9IHBhcnNlX2xpdGVyYWwoYmVnX2luZCQ5LCBiZWdfaW5k
JDksIGVuZF9pbmQpOworICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5n
X2xpdCAqL0Jsb2NrLl9fKDE3LCBbCisgICAgICAgICAgICAgICAgICAgIC8qIFNjYW5faW5kaWMg
Ki9CbG9jay5fXygyLCBbY10pLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMlswXQorICAg
ICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAgICAgCisgICAgfQorICB9OworICB2YXIg
YWRkX2xpdGVyYWwgPSBmdW5jdGlvbiAobGl0X3N0YXJ0LCBzdHJfaW5kLCBmbXQpIHsKKyAgICB2
YXIgc2l6ZSA9IHN0cl9pbmQgLSBsaXRfc3RhcnQgfCAwOworICAgIGlmIChzaXplICE9PSAwKSB7
CisgICAgICBpZiAoc2l6ZSAhPT0gMSkgeworICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1sv
KiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICQk
U3RyaW5nLnN1YihzdHIsIGxpdF9zdGFydCwgc2l6ZSksCisgICAgICAgICAgICAgICAgICAgIGZt
dAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAg
IHJldHVybiAvKiBGbXRfRUJCICovWy8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisg
ICAgICAgICAgICAgICAgICAgIENhbWxfc3RyaW5nLmdldChzdHIsIGxpdF9zdGFydCksCisgICAg
ICAgICAgICAgICAgICAgIGZtdAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBGbXRfRUJCICovW2ZtdF07CisgICAgfQor
ICB9OworICB2YXIgcGFyc2Vfc3BhY2VzID0gZnVuY3Rpb24gKF9zdHJfaW5kLCBlbmRfaW5kKSB7
CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHN0cl9pbmQgPSBfc3RyX2luZDsKKyAgICAg
IGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7CisgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3Nh
Z2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgfQorICAgICAg
aWYgKENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpID09PSAvKiAiICIgKi8zMikgeworICAg
ICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gc3RyX2luZDsKKyAg
ICAgIH0KKyAgICB9OworICB9OworICB2YXIgcGFyc2VfaW50ZWdlciA9IGZ1bmN0aW9uIChzdHJf
aW5kLCBlbmRfaW5kKSB7CisgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKKyAgICAgIGlu
dmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIp
OworICAgIH0KKyAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsK
KyAgICBpZiAobWF0Y2ggPj0gNDgpIHsKKyAgICAgIGlmIChtYXRjaCA+PSA1OCkgeworICAgICAg
ICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9m
YWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZv
cm1hdC5tbCIsCisgICAgICAgICAgICAgICAgMjYyMSwKKyAgICAgICAgICAgICAgICAxMQorICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHJldHVybiBwYXJzZV9wb3NpdGl2ZShzdHJfaW5kLCBlbmRfaW5kLCAwKTsKKyAgICAgIH0K
KyAgICB9CisgICAgZWxzZSBpZiAobWF0Y2ggIT09IDQ1KSB7CisgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCisgICAgICAgICAg
ICAgIDI2MjEsCisgICAgICAgICAgICAgIDExCisgICAgICAgICAgICBdCisgICAgICAgICAgXTsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICBpZiAoKHN0cl9pbmQgKyAxIHwgMCkgPT09IGVuZF9p
bmQpIHsKKyAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3Rl
ZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgICB9CisgICAgICB2YXIgYyA9IENhbWxfc3RyaW5nLmdl
dChzdHIsIHN0cl9pbmQgKyAxIHwgMCk7CisgICAgICBpZiAoYyA+IDU3IHx8IGMgPCA0OCkgewor
ICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hhcmFjdGVyKHN0cl9pbmQgKyAxIHwgMCwgImRpZ2l0
IiwgYyk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNoJDEgPSBwYXJz
ZV9wb3NpdGl2ZShzdHJfaW5kICsgMSB8IDAsIGVuZF9pbmQsIDApOworICAgICAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgbWF0Y2gkMVswXSwKKyAgICAgICAgICAgICAg
ICAtbWF0Y2gkMVsxXSB8IDAKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgIH07
CisgIHZhciBjb21wdXRlX2Zsb2F0X2NvbnYgPSBmdW5jdGlvbiAocGN0X2luZCwgc3RyX2luZCwg
X3BsdXMsIF9zcGFjZSwgc3ltYikgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBzcGFj
ZSA9IF9zcGFjZTsKKyAgICAgIHZhciBwbHVzID0gX3BsdXM7CisgICAgICBpZiAocGx1cyAhPT0g
MCkgeworICAgICAgICBpZiAoc3BhY2UgIT09IDApIHsKKyAgICAgICAgICBpZiAobGVnYWN5X2Jl
aGF2aW9yJDEpIHsKKyAgICAgICAgICAgIF9zcGFjZSA9IC8qIGZhbHNlICovMDsKKyAgICAgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5k
LCAvKiAiICIgKi8zMiwgIicrJyIpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICAgICAgaWYgKHN5bWIgPj0gNzIp
IHsKKyAgICAgICAgICAgIHZhciBzd2l0Y2hlciA9IHN5bWIgLSAxMDEgfCAwOworICAgICAgICAg
ICAgaWYgKHN3aXRjaGVyID4gMiB8fCBzd2l0Y2hlciA8IDApIHsKKyAgICAgICAgICAgICAgZXhp
dCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
c3dpdGNoIChzd2l0Y2hlcikgeworICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcGUgKi80OworICAgICAgICAgICAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcGYgKi8xOworICAgICAg
ICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRf
cGcgKi8xMDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChzeW1iID49IDY5KSB7CisgICAgICAg
ICAgICBzd2l0Y2ggKHN5bWIgLSA2OSB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisg
ICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcEUgKi83OworICAgICAgICAgICAgICBj
YXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIEZsb2F0X3BHICovMTM7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAg
ICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAg
IH0KKyAgICAgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICAgICAgaWYgKGxlZ2FjeV9i
ZWhhdmlvciQxKSB7CisgICAgICAgICAgICAgIF9wbHVzID0gLyogZmFsc2UgKi8wOworICAgICAg
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3Rf
aW5kLCBzdHJfaW5kLCBzeW1iLCAiJysnIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChzcGFjZSAhPT0g
MCkgeworICAgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgICAgaWYgKHN5bWIgPj0gNzIpIHsK
KyAgICAgICAgICB2YXIgc3dpdGNoZXIkMSA9IHN5bWIgLSAxMDEgfCAwOworICAgICAgICAgIGlm
IChzd2l0Y2hlciQxID4gMiB8fCBzd2l0Y2hlciQxIDwgMCkgeworICAgICAgICAgICAgZXhpdCQx
ID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2gg
KHN3aXRjaGVyJDEpIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogRmxvYXRfc2UgKi81OworICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9zZiAqLzI7CisgICAgICAgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X3NnICovMTE7CisgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl
bHNlIGlmIChzeW1iID49IDY5KSB7CisgICAgICAgICAgc3dpdGNoIChzeW1iIC0gNjkgfCAwKSB7
CisgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRf
c0UgKi84OworICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgZXhpdCQxID0g
MTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9zRyAqLzE0OworICAgICAgICAgICAgCisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQkMSA9IDE7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMSA9PT0gMSkgeworICAgICAgICAgIGlmIChsZWdh
Y3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgX3NwYWNlID0gLyogZmFsc2UgKi8wOworICAg
ICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgCisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0
cl9pbmQsIHN5bWIsICInICciKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICB9CisgICAgICBlbHNlIGlmIChzeW1iID49IDcyKSB7CisgICAgICAgIHZhciBzd2l0Y2hl
ciQyID0gc3ltYiAtIDEwMSB8IDA7CisgICAgICAgIGlmIChzd2l0Y2hlciQyID4gMiB8fCBzd2l0
Y2hlciQyIDwgMCkgeworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKKyAgICAgICAgICAgICAgICAg
IDI3NDQsCisgICAgICAgICAgICAgICAgICAyNQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzd2l0Y2ggKHN3
aXRjaGVyJDIpIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgIHJldHVy
biAvKiBGbG9hdF9lICovMzsKKyAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAg
IHJldHVybiAvKiBGbG9hdF9mICovMDsKKyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBGbG9hdF9nICovOTsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAoc3ltYiA+PSA2OSkgeworICAgICAg
ICBzd2l0Y2ggKHN5bWIgLSA2OSB8IDApIHsKKyAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICAgICAgcmV0dXJuIC8qIEZsb2F0X0UgKi82OworICAgICAgICAgIGNhc2UgMSA6IAorICAgICAg
ICAgICAgICByZXR1cm4gLyogRmxvYXRfRiAqLzE1OworICAgICAgICAgIGNhc2UgMiA6IAorICAg
ICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfRyAqLzEyOworICAgICAgICAgIAorICAgICAgICB9
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAorICAgICAgICAgICAgICAg
IDI3NDQsCisgICAgICAgICAgICAgICAgMjUKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
XTsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgc2VhcmNoX3N1YmZvcm1hdF9lbmQgPSBm
dW5jdGlvbiAoX3N0cl9pbmQsIGVuZF9pbmQsIGMpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAg
ICB2YXIgc3RyX2luZCA9IF9zdHJfaW5kOworICAgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQp
IHsKKyAgICAgICAgQ3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCisgICAg
ICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAg
ICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAgICAg
LyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
OiB1bmNsb3NlZCBzdWItZm9ybWF0LCBleHBlY3RlZCAiJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogIiUiICovMzcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogQ2hhciAqL0Jsb2NrLl9fKDAsIFsvKiBTdHJpbmdfbGl0ZXJhbCAqL0Js
b2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
IiBhdCBjaGFyYWN0ZXIgbnVtYmVyICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29m
X2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKV0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgIF0pLAor
ICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3NlZCBzdWItZm9ybWF0
LCBleHBlY3RlZCAiJSUlYyIgYXQgY2hhcmFjdGVyIG51bWJlciAlZCcKKyAgICAgICAgICAgICAg
ICBdKSwgc3RyLCBjLCBlbmRfaW5kKTsKKyAgICAgIH0KKyAgICAgIHZhciBtYXRjaCA9IENhbWxf
c3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAgaWYgKG1hdGNoICE9PSAzNykgeworICAg
ICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBpZiAoKHN0cl9pbmQgKyAxIHwg
MCkgPT09IGVuZF9pbmQpIHsKKyAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9p
bmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
Q2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCArIDEgfCAwKSA9PT0gYykgeworICAgICAgICAg
IHJldHVybiBzdHJfaW5kOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZh
ciBtYXRjaCQxID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCArIDEgfCAwKTsKKyAgICAg
ICAgICB2YXIgZXhpdCA9IDA7CisgICAgICAgICAgaWYgKG1hdGNoJDEgPj0gOTUpIHsKKyAgICAg
ICAgICAgIGlmIChtYXRjaCQxID49IDEyMykgeworICAgICAgICAgICAgICBpZiAobWF0Y2gkMSA+
PSAxMjYpIHsKKyAgICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDEgLSAxMjMg
fCAwKSB7CisgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kKHN0cl9pbmQgKyAyIHwgMCwgZW5k
X2luZCwgLyogIn0iICovMTI1KTsKKyAgICAgICAgICAgICAgICAgICAgICBfc3RyX2luZCA9IHN1
Yl9lbmQgKyAyIHwgMDsKKyAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7
CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIDIg
OiAKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hhcmFjdGVyKHN0cl9p
bmQgKyAxIHwgMCwgImNoYXJhY3RlciAnKSciLCAvKiAifSIgKi8xMjUpOworICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQxID49IDk2KSB7CisgICAgICAgICAgICAgIGV4
aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IGlmICgoc3RyX2luZCArIDIgfCAwKSA9PT0gZW5kX2luZCkgeworICAgICAgICAgICAgICAgIGlu
dmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIp
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHZhciBtYXRjaCQyID0gQ2FtbF9zdHJp
bmcuZ2V0KHN0ciwgc3RyX2luZCArIDIgfCAwKTsKKyAgICAgICAgICAgICAgaWYgKG1hdGNoJDIg
IT09IDQwKSB7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDIgIT09IDEyMykgeworICAgICAg
ICAgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kICsgMyB8IDA7CisgICAgICAgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICB2YXIgc3ViX2VuZCQxID0gc2Vh
cmNoX3N1YmZvcm1hdF9lbmQoc3RyX2luZCArIDMgfCAwLCBlbmRfaW5kLCAvKiAifSIgKi8xMjUp
OworICAgICAgICAgICAgICAgICAgX3N0cl9pbmQgPSBzdWJfZW5kJDEgKyAyIHwgMDsKKyAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB2YXIgc3ViX2VuZCQyID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQoc3RyX2luZCArIDMgfCAw
LCBlbmRfaW5kLCAvKiAiKSIgKi80MSk7CisgICAgICAgICAgICAgICAgX3N0cl9pbmQgPSBzdWJf
ZW5kJDIgKyAyIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAg
ICAgZWxzZSBpZiAobWF0Y2gkMSAhPT0gNDApIHsKKyAgICAgICAgICAgIGlmIChtYXRjaCQxICE9
PSA0MSkgeworICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRfY2hhcmFjdGVyKHN0cl9p
bmQgKyAxIHwgMCwgImNoYXJhY3RlciAnfSciLCAvKiAiKSIgKi80MSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIHN1Yl9lbmQk
MyA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kKHN0cl9pbmQgKyAyIHwgMCwgZW5kX2luZCwgLyogIiki
ICovNDEpOworICAgICAgICAgICAgX3N0cl9pbmQgPSBzdWJfZW5kJDMgKyAyIHwgMDsKKyAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgICBp
ZiAoZXhpdCA9PT0gMSkgeworICAgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kICsgMiB8IDA7
CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAg
ICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgcGFyc2VfY29u
dmVyc2lvbiA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBlbmRfaW5kLCBwbHVzLCBzaGFy
cCwgc3BhY2UsIGlnbiwgcGFkLCBwcmVjLCBwYWRwcmVjLCBzeW1iKSB7CisgICAgdmFyIHBsdXNf
dXNlZCA9IC8qIGZhbHNlICovMDsKKyAgICB2YXIgc2hhcnBfdXNlZCA9IC8qIGZhbHNlICovMDsK
KyAgICB2YXIgc3BhY2VfdXNlZCA9IC8qIGZhbHNlICovMDsKKyAgICB2YXIgaWduX3VzZWQgPSBb
LyogZmFsc2UgKi8wXTsKKyAgICB2YXIgcGFkX3VzZWQgPSAvKiBmYWxzZSAqLzA7CisgICAgdmFy
IHByZWNfdXNlZCA9IFsvKiBmYWxzZSAqLzBdOworICAgIHZhciBjaGVja19ub18wID0gZnVuY3Rp
b24gKHN5bWIsIHBhZCkgeworICAgICAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7Cisg
ICAgICAgIHJldHVybiBwYWQ7CisgICAgICB9CisgICAgICBlbHNlIGlmIChwYWQudGFnKSB7Cisg
ICAgICAgIGlmIChwYWRbMF0gPj0gMikgeworICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3Ik
MSkgeworICAgICAgICAgICAgcmV0dXJuIC8qIEFyZ19wYWRkaW5nICovQmxvY2suX18oMSwgWy8q
IFJpZ2h0ICovMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiMCIpOwor
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4g
cGFkOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChwYWRbMF0gPj0gMikgewor
ICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICByZXR1cm4gLyogTGl0
X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgIC8qIFJpZ2h0ICov
MSwKKyAgICAgICAgICAgICAgICAgICAgcGFkWzFdCisgICAgICAgICAgICAgICAgICBdKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2Zs
YWcocGN0X2luZCwgc3RyX2luZCwgc3ltYiwgIjAiKTsKKyAgICAgICAgfQorICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIHJldHVybiBwYWQ7CisgICAgICB9CisgICAgfTsKKyAgICB2YXIg
b3B0X29mX3BhZCA9IGZ1bmN0aW9uIChjLCBwYWQpIHsKKyAgICAgIGlmICh0eXBlb2YgcGFkID09
PSAibnVtYmVyIikgeworICAgICAgICByZXR1cm4gLyogTm9uZSAqLzA7CisgICAgICB9CisgICAg
ICBlbHNlIGlmIChwYWQudGFnKSB7CisgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhw
Y3RfaW5kLCBzdHJfaW5kLCBjLCAiJyonIik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg
ICAgc3dpdGNoIChwYWRbMF0pIHsKKyAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAg
aWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFNvbWUg
Ki9bcGFkWzFdXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgYywg
IictJyIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAg
ICAgIHJldHVybiAvKiBTb21lICovW3BhZFsxXV07CisgICAgICAgICAgY2FzZSAyIDogCisgICAg
ICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICAgICAgICAgIHJldHVy
biAvKiBTb21lICovW3BhZFsxXV07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0
cl9pbmQsIGMsICInMCciKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICB9
CisgICAgICB9CisgICAgfTsKKyAgICB2YXIgZ2V0X3ByZWNfb3B0ID0gZnVuY3Rpb24gKCkgewor
ICAgICAgcHJlY191c2VkWzBdID0gLyogdHJ1ZSAqLzE7CisgICAgICBpZiAodHlwZW9mIHByZWMg
PT09ICJudW1iZXIiKSB7CisgICAgICAgIGlmIChwcmVjICE9PSAwKSB7CisgICAgICAgICAgcmV0
dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICJfIiAqLzk1LCAiJyon
Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIE5vbmUg
Ki8wOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8q
IFNvbWUgKi9bcHJlY1swXV07CisgICAgICB9CisgICAgfTsKKyAgICB2YXIgZm10X3Jlc3VsdDsK
KyAgICB2YXIgZXhpdCA9IDA7CisgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgdmFyIGV4aXQkMiA9
IDA7CisgICAgaWYgKHN5bWIgPj0gMTI0KSB7CisgICAgICBleGl0JDEgPSA2OworICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoc3ltYikgeworICAgICAgICBjYXNlIDMzIDogCisgICAg
ICAgICAgICB2YXIgbWF0Y2ggPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9p
bmQpOworICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogRmx1c2ggKi9C
bG9jay5fXygxMCwgW21hdGNoWzBdXSldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgNDAgOiAKKyAgICAgICAgICAgIHZhciBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQo
c3RyX2luZCwgZW5kX2luZCwgLyogIikiICovNDEpOworICAgICAgICAgICAgdmFyIGJlZ19pbmQg
PSBzdWJfZW5kICsgMiB8IDA7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHBhcnNlX2xpdGVy
YWwoYmVnX2luZCwgYmVnX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIgZm10X3Jlc3Qg
PSBtYXRjaCQxWzBdOworICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBwYXJzZV9saXRlcmFsKHN0
cl9pbmQsIHN0cl9pbmQsIHN1Yl9lbmQpOworICAgICAgICAgICAgdmFyIHN1Yl9mbXR0eSA9IGZt
dHR5X29mX2ZtdChtYXRjaCQyWzBdKTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8q
IHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsK
KyAgICAgICAgICAgICAgdmFyIGlnbm9yZWRfMDAwID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwg
cGFkKTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQgPSAvKiBJZ25vcmVkX2Zvcm1hdF9zdWJz
dCAqL0Jsb2NrLl9fKDgsIFsKKyAgICAgICAgICAgICAgICAgIGlnbm9yZWRfMDAwLAorICAgICAg
ICAgICAgICAgICAgc3ViX2ZtdHR5CisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAg
IGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygy
MywgWworICAgICAgICAgICAgICAgICAgICBpZ25vcmVkLAorICAgICAgICAgICAgICAgICAgICBm
bXRfcmVzdAorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAg
ICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIEZvcm1hdF9zdWJzdCAqL0Jsb2Nr
Ll9fKDE0LCBbCisgICAgICAgICAgICAgICAgICAgIG9wdF9vZl9wYWQoLyogIigiICovNDAsIHBh
ZCksCisgICAgICAgICAgICAgICAgICAgIHN1Yl9mbXR0eSwKKyAgICAgICAgICAgICAgICAgICAg
Zm10X3Jlc3QKKyAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ0IDogCisgICAgICAgICAgICBmbXRfcmVzdWx0ID0g
cGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIDM3IDogCisgICAgICAgIGNhc2UgNjQgOiAKKyAgICAgICAgICAg
IGV4aXQkMSA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA2NyA6IAorICAg
ICAgICAgICAgdmFyIG1hdGNoJDMgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVu
ZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDEgPSBtYXRjaCQzWzBdOworICAgICAg
ICAgICAgZm10X3Jlc3VsdCA9IChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pID8gLyog
Rm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAg
ICAgICAgICAgLyogSWdub3JlZF9jYW1sX2NoYXIgKi8xLAorICAgICAgICAgICAgICAgICAgICBm
bXRfcmVzdCQxCisgICAgICAgICAgICAgICAgICBdKV0gOiAvKiBGbXRfRUJCICovWy8qIENhbWxf
Y2hhciAqL0Jsb2NrLl9fKDEsIFtmbXRfcmVzdCQxXSldOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgNzggOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gcGFyc2VfbGl0ZXJh
bChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBmbXRfcmVzdCQy
ID0gbWF0Y2gkNFswXTsKKyAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8x
LCBpZ24pIHsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQkMSA9IC8qIElnbm9yZWRfc2Nhbl9n
ZXRfY291bnRlciAqL0Jsb2NrLl9fKDEwLCBbLyogVG9rZW5fY291bnRlciAqLzJdKTsKKyAgICAg
ICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Js
b2NrLl9fKDIzLCBbCisgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQkMSwKKyAgICAgICAgICAg
ICAgICAgICAgZm10X3Jlc3QkMgorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRf
RUJCICovWy8qIFNjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5fXygyMSwgWworICAgICAgICAgICAg
ICAgICAgICAvKiBUb2tlbl9jb3VudGVyICovMiwKKyAgICAgICAgICAgICAgICAgICAgZm10X3Jl
c3QkMgorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgODMgOiAKKyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgICB2YXIgcGFkJDEgPSBjaGVja19ub18wKHN5bWIsIHBhZHByZWMp
OworICAgICAgICAgICAgdmFyIG1hdGNoJDUgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9p
bmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDMgPSBtYXRjaCQ1WzBdOwor
ICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAg
ICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICB2YXIgaWdub3Jl
ZCQyID0gLyogSWdub3JlZF9jYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDEsIFtvcHRfb2ZfcGFkKC8q
ICJfIiAqLzk1LCBwYWRwcmVjKV0pOworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10
X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAg
ICAgICAgaWdub3JlZCQyLAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQzCisgICAgICAg
ICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgdmFyIG1hdGNoJDYgPSBtYWtlX3BhZGRpbmdfZm10X2ViYihwYWQkMSwgZm10X3Jl
c3QkMyk7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIENhbWxf
c3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICBtYXRjaCQ2WzBdLAor
ICAgICAgICAgICAgICAgICAgICBtYXRjaCQ2WzFdCisgICAgICAgICAgICAgICAgICBdKV07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA5MSA6IAorICAg
ICAgICAgICAgdmFyIG1hdGNoJDcgPSBwYXJzZV9jaGFyX3NldChzdHJfaW5kLCBlbmRfaW5kKTsK
KyAgICAgICAgICAgIHZhciBjaGFyX3NldCA9IG1hdGNoJDdbMV07CisgICAgICAgICAgICB2YXIg
bmV4dF9pbmQgPSBtYXRjaCQ3WzBdOworICAgICAgICAgICAgdmFyIG1hdGNoJDggPSBwYXJzZV9s
aXRlcmFsKG5leHRfaW5kLCBuZXh0X2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIgZm10
X3Jlc3QkNCA9IG1hdGNoJDhbMF07CisgICAgICAgICAgICBpZiAoaWduX3VzZWRbMF0gPSAvKiB0
cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7Cisg
ICAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMCQxID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwg
cGFkKTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWQkMyA9IC8qIElnbm9yZWRfc2Nhbl9jaGFy
X3NldCAqL0Jsb2NrLl9fKDksIFsKKyAgICAgICAgICAgICAgICAgIGlnbm9yZWRfMDAwJDEsCisg
ICAgICAgICAgICAgICAgICBjaGFyX3NldAorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAg
ICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2su
X18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlZCQzLAorICAgICAgICAgICAgICAg
ICAgICBmbXRfcmVzdCQ0CisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsK
KyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogU2Nhbl9jaGFyX3Nl
dCAqL0Jsb2NrLl9fKDIwLCBbCisgICAgICAgICAgICAgICAgICAgIG9wdF9vZl9wYWQoLyogIlsi
ICovOTEsIHBhZCksCisgICAgICAgICAgICAgICAgICAgIGNoYXJfc2V0LAorICAgICAgICAgICAg
ICAgICAgICBmbXRfcmVzdCQ0CisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzMiA6IAorICAgICAgICBjYXNlIDM1
IDogCisgICAgICAgIGNhc2UgNDMgOiAKKyAgICAgICAgY2FzZSA0NSA6IAorICAgICAgICBjYXNl
IDk1IDogCisgICAgICAgICAgICBleGl0JDEgPSA1OworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgOTcgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gcGFyc2VfbGl0ZXJhbChz
dHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBG
bXRfRUJCICovWy8qIEFscGhhICovQmxvY2suX18oMTUsIFttYXRjaCQ5WzBdXSldOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNjYgOiAKKyAgICAgICAgY2FzZSA5OCA6IAorICAg
ICAgICAgICAgZXhpdCQxID0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDk5
IDogCisgICAgICAgICAgICB2YXIgY2hhcl9mb3JtYXQgPSBmdW5jdGlvbiAoZm10X3Jlc3QpIHsK
KyAgICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9j
ay5fXygyMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfY2hhciAq
LzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3QKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSldOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIENoYXIgKi9CbG9jay5fXygw
LCBbZm10X3Jlc3RdKV07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAg
ICAgICB2YXIgc2Nhbl9mb3JtYXQgPSBmdW5jdGlvbiAoZm10X3Jlc3QpIHsKKyAgICAgICAgICAg
ICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgICAg
IHJldHVybiAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgKi80
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBTY2FuX25leHRfY2hhciAqL0Js
b2NrLl9fKDIyLCBbZm10X3Jlc3RdKV07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07
CisgICAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9p
bmQsIGVuZF9pbmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDUgPSBtYXRjaCQxMFswXTsK
KyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkMTEgPSBvcHRfb2ZfcGFkKC8qICJjIiAqLzk5LCBwYWQpOworICAgICAgICAgICAgZm10X3Jl
c3VsdCA9IG1hdGNoJDExID8gKAorICAgICAgICAgICAgICAgIG1hdGNoJDExWzBdICE9PSAwID8g
KAorICAgICAgICAgICAgICAgICAgICBsZWdhY3lfYmVoYXZpb3IkMSA/IGNoYXJfZm9ybWF0KGZt
dF9yZXN0JDUpIDogaW52YWxpZF9mb3JtYXRfbWVzc2FnZShzdHJfaW5kLCAibm9uLXplcm8gd2lk
dGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnMiKQorICAgICAgICAgICAgICAg
ICAgKSA6IHNjYW5fZm9ybWF0KGZtdF9yZXN0JDUpCisgICAgICAgICAgICAgICkgOiBjaGFyX2Zv
cm1hdChmbXRfcmVzdCQ1KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDY5IDog
CisgICAgICAgIGNhc2UgNzAgOiAKKyAgICAgICAgY2FzZSA3MSA6IAorICAgICAgICBjYXNlIDEw
MSA6IAorICAgICAgICBjYXNlIDEwMiA6IAorICAgICAgICBjYXNlIDEwMyA6IAorICAgICAgICAg
ICAgZXhpdCQxID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDc2IDogCisg
ICAgICAgIGNhc2UgMTA4IDogCisgICAgICAgIGNhc2UgMTEwIDogCisgICAgICAgICAgICBleGl0
JDIgPSA4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTE0IDogCisgICAgICAg
ICAgICB2YXIgbWF0Y2gkMTIgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9p
bmQpOworICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDYgPSBtYXRjaCQxMlswXTsKKyAgICAgICAg
ICAgIGZtdF9yZXN1bHQgPSAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSA/IC8qIEZt
dF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCisgICAgICAgICAgICAg
ICAgICAgIC8qIElnbm9yZWRfcmVhZGVyICovMywKKyAgICAgICAgICAgICAgICAgICAgZm10X3Jl
c3QkNgorICAgICAgICAgICAgICAgICAgXSldIDogLyogRm10X0VCQiAqL1svKiBSZWFkZXIgKi9C
bG9jay5fXygxOSwgW2ZtdF9yZXN0JDZdKV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAxMTUgOiAKKyAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAg
ICAgICB2YXIgcGFkJDIgPSBjaGVja19ub18wKHN5bWIsIHBhZHByZWMpOworICAgICAgICAgICAg
dmFyIG1hdGNoJDEzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsK
KyAgICAgICAgICAgIHZhciBmbXRfcmVzdCQ3ID0gbWF0Y2gkMTNbMF07CisgICAgICAgICAgICBp
ZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgIHBhZF91
c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkJDQgPSAvKiBJZ25v
cmVkX3N0cmluZyAqL0Jsb2NrLl9fKDAsIFtvcHRfb2ZfcGFkKC8qICJfIiAqLzk1LCBwYWRwcmVj
KV0pOworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVk
X3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlZCQ0LAor
ICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ3CisgICAgICAgICAgICAgICAgICBdKV07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIG1hdGNo
JDE0ID0gbWFrZV9wYWRkaW5nX2ZtdF9lYmIocGFkJDIsIGZtdF9yZXN0JDcpOworICAgICAgICAg
ICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBTdHJpbmcgKi9CbG9jay5fXygyLCBb
CisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE0WzBdLAorICAgICAgICAgICAgICAgICAgICBt
YXRjaCQxNFsxXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTE2IDogCisgICAgICAgICAgICB2YXIgbWF0Y2gk
MTUgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAg
ICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogVGhldGEgKi9CbG9jay5fXygxNiwgW21h
dGNoJDE1WzBdXSldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgODggOiAKKyAg
ICAgICAgY2FzZSAxMDAgOiAKKyAgICAgICAgY2FzZSAxMDUgOiAKKyAgICAgICAgY2FzZSAxMTEg
OiAKKyAgICAgICAgY2FzZSAxMTcgOiAKKyAgICAgICAgY2FzZSAxMjAgOiAKKyAgICAgICAgICAg
IGV4aXQkMiA9IDc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAwIDogCisgICAg
ICAgIGNhc2UgMSA6IAorICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgY2FzZSAzIDogCisgICAg
ICAgIGNhc2UgNCA6IAorICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgY2FzZSA2IDogCisgICAg
ICAgIGNhc2UgNyA6IAorICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgY2FzZSA5IDogCisgICAg
ICAgIGNhc2UgMTAgOiAKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICBjYXNlIDEyIDogCisg
ICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICBjYXNlIDE1IDog
CisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgY2FzZSAxNyA6IAorICAgICAgICBjYXNlIDE4
IDogCisgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICBjYXNl
IDIxIDogCisgICAgICAgIGNhc2UgMjIgOiAKKyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICBj
YXNlIDI0IDogCisgICAgICAgIGNhc2UgMjUgOiAKKyAgICAgICAgY2FzZSAyNiA6IAorICAgICAg
ICBjYXNlIDI3IDogCisgICAgICAgIGNhc2UgMjggOiAKKyAgICAgICAgY2FzZSAyOSA6IAorICAg
ICAgICBjYXNlIDMwIDogCisgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgY2FzZSAzNCA6IAor
ICAgICAgICBjYXNlIDM2IDogCisgICAgICAgIGNhc2UgMzggOiAKKyAgICAgICAgY2FzZSAzOSA6
IAorICAgICAgICBjYXNlIDQxIDogCisgICAgICAgIGNhc2UgNDIgOiAKKyAgICAgICAgY2FzZSA0
NiA6IAorICAgICAgICBjYXNlIDQ3IDogCisgICAgICAgIGNhc2UgNDggOiAKKyAgICAgICAgY2Fz
ZSA0OSA6IAorICAgICAgICBjYXNlIDUwIDogCisgICAgICAgIGNhc2UgNTEgOiAKKyAgICAgICAg
Y2FzZSA1MiA6IAorICAgICAgICBjYXNlIDUzIDogCisgICAgICAgIGNhc2UgNTQgOiAKKyAgICAg
ICAgY2FzZSA1NSA6IAorICAgICAgICBjYXNlIDU2IDogCisgICAgICAgIGNhc2UgNTcgOiAKKyAg
ICAgICAgY2FzZSA1OCA6IAorICAgICAgICBjYXNlIDU5IDogCisgICAgICAgIGNhc2UgNjAgOiAK
KyAgICAgICAgY2FzZSA2MSA6IAorICAgICAgICBjYXNlIDYyIDogCisgICAgICAgIGNhc2UgNjMg
OiAKKyAgICAgICAgY2FzZSA2NSA6IAorICAgICAgICBjYXNlIDY4IDogCisgICAgICAgIGNhc2Ug
NzIgOiAKKyAgICAgICAgY2FzZSA3MyA6IAorICAgICAgICBjYXNlIDc0IDogCisgICAgICAgIGNh
c2UgNzUgOiAKKyAgICAgICAgY2FzZSA3NyA6IAorICAgICAgICBjYXNlIDc5IDogCisgICAgICAg
IGNhc2UgODAgOiAKKyAgICAgICAgY2FzZSA4MSA6IAorICAgICAgICBjYXNlIDgyIDogCisgICAg
ICAgIGNhc2UgODQgOiAKKyAgICAgICAgY2FzZSA4NSA6IAorICAgICAgICBjYXNlIDg2IDogCisg
ICAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgY2FzZSA4OSA6IAorICAgICAgICBjYXNlIDkwIDog
CisgICAgICAgIGNhc2UgOTIgOiAKKyAgICAgICAgY2FzZSA5MyA6IAorICAgICAgICBjYXNlIDk0
IDogCisgICAgICAgIGNhc2UgOTYgOiAKKyAgICAgICAgY2FzZSAxMDQgOiAKKyAgICAgICAgY2Fz
ZSAxMDYgOiAKKyAgICAgICAgY2FzZSAxMDcgOiAKKyAgICAgICAgY2FzZSAxMDkgOiAKKyAgICAg
ICAgY2FzZSAxMTIgOiAKKyAgICAgICAgY2FzZSAxMTMgOiAKKyAgICAgICAgY2FzZSAxMTggOiAK
KyAgICAgICAgY2FzZSAxMTkgOiAKKyAgICAgICAgY2FzZSAxMjEgOiAKKyAgICAgICAgY2FzZSAx
MjIgOiAKKyAgICAgICAgICAgIGV4aXQkMSA9IDY7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSAxMjMgOiAKKyAgICAgICAgICAgIHZhciBzdWJfZW5kJDEgPSBzZWFyY2hfc3ViZm9y
bWF0X2VuZChzdHJfaW5kLCBlbmRfaW5kLCAvKiAifSIgKi8xMjUpOworICAgICAgICAgICAgdmFy
IG1hdGNoJDE2ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBzdWJfZW5kJDEpOwor
ICAgICAgICAgICAgdmFyIGJlZ19pbmQkMSA9IHN1Yl9lbmQkMSArIDIgfCAwOworICAgICAgICAg
ICAgdmFyIG1hdGNoJDE3ID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDEsIGJlZ19pbmQkMSwgZW5k
X2luZCk7CisgICAgICAgICAgICB2YXIgZm10X3Jlc3QkOCA9IG1hdGNoJDE3WzBdOworICAgICAg
ICAgICAgdmFyIHN1Yl9mbXR0eSQxID0gZm10dHlfb2ZfZm10KG1hdGNoJDE2WzBdKTsKKyAgICAg
ICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAg
ICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAgICAgdmFyIGlnbm9yZWRfMDAw
JDIgPSBvcHRfb2ZfcGFkKC8qICJfIiAqLzk1LCBwYWQpOworICAgICAgICAgICAgICB2YXIgaWdu
b3JlZCQ1ID0gLyogSWdub3JlZF9mb3JtYXRfYXJnICovQmxvY2suX18oNywgWworICAgICAgICAg
ICAgICAgICAgaWdub3JlZF8wMDAkMiwKKyAgICAgICAgICAgICAgICAgIHN1Yl9mbXR0eSQxCisg
ICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJC
ICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAg
ICBpZ25vcmVkJDUsCisgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDgKKyAgICAgICAgICAg
ICAgICAgIF0pXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICBmbXRfcmVzdWx0ID0g
LyogRm10X0VCQiAqL1svKiBGb3JtYXRfYXJnICovQmxvY2suX18oMTMsIFsKKyAgICAgICAgICAg
ICAgICAgICAgb3B0X29mX3BhZCgvKiAieyIgKi8xMjMsIHBhZCksCisgICAgICAgICAgICAgICAg
ICAgIHN1Yl9mbXR0eSQxLAorICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ4CisgICAgICAg
ICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgCisgICAgICB9CisgICAgfQorICAgIHN3aXRjaCAoZXhpdCQyKSB7CisgICAgICBjYXNlIDcg
OiAKKyAgICAgICAgICBwbHVzX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICBzaGFycF91
c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgc3BhY2VfdXNlZCA9IC8qIHRydWUgKi8xOwor
ICAgICAgICAgIHZhciBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYocGN0X2luZCwgc3RyX2luZCwg
cGx1cywgc2hhcnAsIHNwYWNlLCBzeW1iKTsKKyAgICAgICAgICB2YXIgbWF0Y2gkMTggPSBwYXJz
ZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOworICAgICAgICAgIHZhciBmbXRf
cmVzdCQ5ID0gbWF0Y2gkMThbMF07CisgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1
ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAg
ICAgICAgIHZhciBpZ25vcmVkXzAwMSA9IG9wdF9vZl9wYWQoLyogIl8iICovOTUsIHBhZCk7Cisg
ICAgICAgICAgICB2YXIgaWdub3JlZCQ2ID0gLyogSWdub3JlZF9pbnQgKi9CbG9jay5fXygyLCBb
CisgICAgICAgICAgICAgICAgaWNvbnYsCisgICAgICAgICAgICAgICAgaWdub3JlZF8wMDEKKyAg
ICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1sv
KiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgIGlnbm9y
ZWQkNiwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDkKKyAgICAgICAgICAgICAgICBdKV07
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFkX3VzZWQgPSAv
KiB0cnVlICovMTsKKyAgICAgICAgICAgIHByZWNfdXNlZFswXSA9IC8qIHRydWUgKi8xOworICAg
ICAgICAgICAgdmFyIHBhZCQzOworICAgICAgICAgICAgdmFyIGV4aXQkMyA9IDA7CisgICAgICAg
ICAgICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiICYmIHByZWMgPT09IDApIHsKKyAgICAg
ICAgICAgICAgcGFkJDMgPSBwYWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgZXhpdCQzID0gOTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChleGl0JDMgPT09IDkpIHsKKyAgICAgICAgICAgICAgcGFkJDMgPSB0eXBlb2YgcGFkID09PSAi
bnVtYmVyIiA/IC8qIE5vX3BhZGRpbmcgKi8wIDogKAorICAgICAgICAgICAgICAgICAgcGFkLnRh
ZyA/ICgKKyAgICAgICAgICAgICAgICAgICAgICBwYWRbMF0gPj0gMiA/ICgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGVnYWN5X2JlaGF2aW9yJDEgPyAvKiBBcmdfcGFkZGluZyAqL0Jsb2Nr
Ll9fKDEsIFsvKiBSaWdodCAqLzFdKSA6IGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9p
bmQsIC8qICIwIiAqLzQ4LCAicHJlY2lzaW9uIikKKyAgICAgICAgICAgICAgICAgICAgICAgICkg
OiBwYWQKKyAgICAgICAgICAgICAgICAgICAgKSA6ICgKKyAgICAgICAgICAgICAgICAgICAgICBw
YWRbMF0gPj0gMiA/ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5X2JlaGF2aW9y
JDEgPyAvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogUmlnaHQgKi8xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYWRbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pIDogaW5jb21wYXRpYmxl
X2ZsYWcocGN0X2luZCwgc3RyX2luZCwgLyogIjAiICovNDgsICJwcmVjaXNpb24iKQorICAgICAg
ICAgICAgICAgICAgICAgICAgKSA6IHBhZAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBtYXRjaCQxOSA9IG1h
a2VfcGFkcHJlY19mbXRfZWJiKHBhZCQzLCAocHJlY191c2VkWzBdID0gLyogdHJ1ZSAqLzEsIHBy
ZWMpLCBmbXRfcmVzdCQ5KTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICov
Wy8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgIGljb252LAorICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMTlbMF0sCisgICAgICAgICAgICAgICAgICBtYXRjaCQxOVsxXSwK
KyAgICAgICAgICAgICAgICAgIG1hdGNoJDE5WzJdCisgICAgICAgICAgICAgICAgXSldOworICAg
ICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIGlm
IChzdHJfaW5kID09PSBlbmRfaW5kIHx8ICFpc19pbnRfYmFzZShDYW1sX3N0cmluZy5nZXQoc3Ry
LCBzdHJfaW5kKSkpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyMCA9IHBhcnNlX2xpdGVyYWwo
c3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgICB2YXIgZm10X3Jlc3QkMTAg
PSBtYXRjaCQyMFswXTsKKyAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcl9vZl9jaGFy
KHN5bWIpOworICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikg
eworICAgICAgICAgICAgICB2YXIgaWdub3JlZCQ3ID0gLyogSWdub3JlZF9zY2FuX2dldF9jb3Vu
dGVyICovQmxvY2suX18oMTAsIFtjb3VudGVyXSk7CisgICAgICAgICAgICAgIGZtdF9yZXN1bHQg
PSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAg
ICAgICAgICAgICAgICBpZ25vcmVkJDcsCisgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEw
CisgICAgICAgICAgICAgICAgICBdKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogU2Nhbl9nZXRf
Y291bnRlciAqL0Jsb2NrLl9fKDIxLCBbCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIsCisg
ICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEwCisgICAgICAgICAgICAgICAgICBdKV07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ZXhpdCQxID0gNjsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAKKyAgICB9
CisgICAgc3dpdGNoIChleGl0JDEpIHsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHBsdXNf
dXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgIHNwYWNlX3VzZWQgPSAvKiB0cnVlICovMTsK
KyAgICAgICAgICB2YXIgZmNvbnYgPSBjb21wdXRlX2Zsb2F0X2NvbnYocGN0X2luZCwgc3RyX2lu
ZCwgcGx1cywgc3BhY2UsIHN5bWIpOworICAgICAgICAgIHZhciBtYXRjaCQyMSA9IHBhcnNlX2xp
dGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7CisgICAgICAgICAgdmFyIGZtdF9yZXN0
JDExID0gbWF0Y2gkMjFbMF07CisgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAq
LzEsIGlnbikgeworICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAg
ICAgIHZhciBpZ25vcmVkXzAwMCQzID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwgcGFkKTsKKyAg
ICAgICAgICAgIHZhciBpZ25vcmVkXzAwMSQxID0gZ2V0X3ByZWNfb3B0KC8qICgpICovMCk7Cisg
ICAgICAgICAgICB2YXIgaWdub3JlZCQ4ID0gLyogSWdub3JlZF9mbG9hdCAqL0Jsb2NrLl9fKDYs
IFsKKyAgICAgICAgICAgICAgICBpZ25vcmVkXzAwMCQzLAorICAgICAgICAgICAgICAgIGlnbm9y
ZWRfMDAxJDEKKyAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyog
Rm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKKyAgICAgICAgICAg
ICAgICAgIGlnbm9yZWQkOCwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDExCisgICAgICAg
ICAgICAgICAgXSldOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMjIgPSBtYWtl
X3BhZHByZWNfZm10X2ViYihwYWQsIChwcmVjX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgcHJlYyks
IGZtdF9yZXN0JDExKTsKKyAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8q
IEZsb2F0ICovQmxvY2suX18oOCwgWworICAgICAgICAgICAgICAgICAgZmNvbnYsCisgICAgICAg
ICAgICAgICAgICBtYXRjaCQyMlswXSwKKyAgICAgICAgICAgICAgICAgIG1hdGNoJDIyWzFdLAor
ICAgICAgICAgICAgICAgICAgbWF0Y2gkMjJbMl0KKyAgICAgICAgICAgICAgICBdKV07CisgICAg
ICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgdmFy
IG1hdGNoJDIzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAg
ICAgICAgICB2YXIgZm10X3Jlc3QkMTIgPSBtYXRjaCQyM1swXTsKKyAgICAgICAgICBmbXRfcmVz
dWx0ID0gKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgPyAvKiBGbXRfRUJCICovWy8q
IElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWworICAgICAgICAgICAgICAgICAgLyogSWdu
b3JlZF9ib29sICovMiwKKyAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEyCisgICAgICAgICAg
ICAgICAgXSldIDogLyogRm10X0VCQiAqL1svKiBCb29sICovQmxvY2suX18oOSwgW2ZtdF9yZXN0
JDEyXSldOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgdmFy
IG1hdGNoJDI0ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAg
ICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBDaGFyX2xpdGVyYWwgKi9CbG9j
ay5fXygxMiwgWworICAgICAgICAgICAgICAgIHN5bWIsCisgICAgICAgICAgICAgICAgbWF0Y2gk
MjRbMF0KKyAgICAgICAgICAgICAgXSldOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1
IDogCisgICAgICAgICAgZm10X3Jlc3VsdCA9IEN1cnJ5Ll8zKGZhaWx3aXRoX21lc3NhZ2UoLyog
Rm9ybWF0ICovWworICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2Nr
Ll9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXQgY2hhcmFjdGVyIG51bWJlciAiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEx
LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgZmxhZyAiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfY2hhciAqL0Js
b2NrLl9fKDEsIFsvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGlzIG9ubHkgYWxsb3dlZCBh
ZnRlciB0aGUgJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICIlIiAqLzM3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRl
cmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIicsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb24iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAg
ICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzogYXQg
Y2hhcmFjdGVyIG51bWJlciAlZCwgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICcl
JScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb24iCisgICAgICAgICAgICAgICAgICBdKSwg
c3RyLCBwY3RfaW5kLCBzeW1iKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6IAor
ICAgICAgICAgIGlmIChzeW1iID49IDEwOCkgeworICAgICAgICAgICAgaWYgKHN5bWIgPj0gMTEx
KSB7CisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgIHN3aXRjaCAoc3ltYiAtIDEwOCB8IDApIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgcGx1c191c2VkID0gLyogdHJ1
ZSAqLzE7CisgICAgICAgICAgICAgICAgICAgIHNoYXJwX3VzZWQgPSAvKiB0cnVlICovMTsKKyAg
ICAgICAgICAgICAgICAgICAgc3BhY2VfdXNlZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAg
ICAgICAgICB2YXIgaWNvbnYkMSA9IGNvbXB1dGVfaW50X2NvbnYocGN0X2luZCwgc3RyX2luZCAr
IDEgfCAwLCBwbHVzLCBzaGFycCwgc3BhY2UsIENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQp
KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkMiA9IHN0cl9pbmQgKyAxIHwgMDsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDI1ID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5k
JDIsIGJlZ19pbmQkMiwgZW5kX2luZCk7CisgICAgICAgICAgICAgICAgICAgIHZhciBmbXRfcmVz
dCQxMyA9IG1hdGNoJDI1WzBdOworICAgICAgICAgICAgICAgICAgICBpZiAoaWduX3VzZWRbMF0g
PSAvKiB0cnVlICovMSwgaWduKSB7CisgICAgICAgICAgICAgICAgICAgICAgcGFkX3VzZWQgPSAv
KiB0cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgaWdub3JlZF8wMDEkMiA9IG9w
dF9vZl9wYWQoLyogIl8iICovOTUsIHBhZCk7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIGln
bm9yZWQkOSA9IC8qIElnbm9yZWRfaW50MzIgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGljb252JDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRf
MDAxJDIKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAgICAg
IGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygy
MywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQkOSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbXRfcmVzdCQxMworICAgICAgICAgICAgICAgICAgICAgICAgICBd
KV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAg
ICAgICAgICAgICB2YXIgbWF0Y2gkMjYgPSBtYWtlX3BhZHByZWNfZm10X2ViYihwYWQsIChwcmVj
X3VzZWRbMF0gPSAvKiB0cnVlICovMSwgcHJlYyksIGZtdF9yZXN0JDEzKTsKKyAgICAgICAgICAg
ICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJbnQzMiAqL0Jsb2NrLl9f
KDUsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29udiQxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDI2WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDI2WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI2WzJdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICBwbHVzX3VzZWQgPSAv
KiB0cnVlICovMTsKKyAgICAgICAgICAgICAgICAgICAgc2hhcnBfdXNlZCA9IC8qIHRydWUgKi8x
OworICAgICAgICAgICAgICAgICAgICBzcGFjZV91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBpY29udiQyID0gY29tcHV0ZV9pbnRfY29udihwY3RfaW5kLCBzdHJf
aW5kICsgMSB8IDAsIHBsdXMsIHNoYXJwLCBzcGFjZSwgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3Ry
X2luZCkpOworICAgICAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCQzID0gc3RyX2luZCArIDEg
fCAwOworICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMjcgPSBwYXJzZV9saXRlcmFsKGJl
Z19pbmQkMywgYmVnX2luZCQzLCBlbmRfaW5kKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGZt
dF9yZXN0JDE0ID0gbWF0Y2gkMjdbMF07CisgICAgICAgICAgICAgICAgICAgIGlmIChpZ25fdXNl
ZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKKyAgICAgICAgICAgICAgICAgICAgICBwYWRfdXNl
ZCA9IC8qIHRydWUgKi8xOworICAgICAgICAgICAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMSQz
ID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwgcGFkKTsKKyAgICAgICAgICAgICAgICAgICAgICB2
YXIgaWdub3JlZCQxMCA9IC8qIElnbm9yZWRfbmF0aXZlaW50ICovQmxvY2suX18oNCwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICBpY29udiQyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZ25vcmVkXzAwMSQzCisgICAgICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAg
ICAgICAgICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICov
QmxvY2suX18oMjMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkJDEwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDE0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOwor
ICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQyOCA9IG1ha2VfcGFkcHJlY19mbXRfZWJi
KHBhZCwgKHByZWNfdXNlZFswXSA9IC8qIHRydWUgKi8xLCBwcmVjKSwgZm10X3Jlc3QkMTQpOwor
ICAgICAgICAgICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIE5hdGl2
ZWludCAqL0Jsb2NrLl9fKDYsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29udiQy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI4WzBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDI4WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDI4WzJdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIGlmIChzeW1iICE9PSA3NikgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGx1c191c2VkID0gLyogdHJ1ZSAqLzE7
CisgICAgICAgICAgICBzaGFycF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICBzcGFj
ZV91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB2YXIgaWNvbnYkMyA9IGNvbXB1dGVf
aW50X2NvbnYocGN0X2luZCwgc3RyX2luZCArIDEgfCAwLCBwbHVzLCBzaGFycCwgc3BhY2UsIENh
bWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpKTsKKyAgICAgICAgICAgIHZhciBiZWdfaW5kJDQg
PSBzdHJfaW5kICsgMSB8IDA7CisgICAgICAgICAgICB2YXIgbWF0Y2gkMjkgPSBwYXJzZV9saXRl
cmFsKGJlZ19pbmQkNCwgYmVnX2luZCQ0LCBlbmRfaW5kKTsKKyAgICAgICAgICAgIHZhciBmbXRf
cmVzdCQxNSA9IG1hdGNoJDI5WzBdOworICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyog
dHJ1ZSAqLzEsIGlnbikgeworICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOwor
ICAgICAgICAgICAgICB2YXIgaWdub3JlZF8wMDEkNCA9IG9wdF9vZl9wYWQoLyogIl8iICovOTUs
IHBhZCk7CisgICAgICAgICAgICAgIHZhciBpZ25vcmVkJDExID0gLyogSWdub3JlZF9pbnQ2NCAq
L0Jsb2NrLl9fKDUsIFsKKyAgICAgICAgICAgICAgICAgIGljb252JDMsCisgICAgICAgICAgICAg
ICAgICBpZ25vcmVkXzAwMSQ0CisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgIGZt
dF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywg
WworICAgICAgICAgICAgICAgICAgICBpZ25vcmVkJDExLAorICAgICAgICAgICAgICAgICAgICBm
bXRfcmVzdCQxNQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7CisgICAg
ICAgICAgICAgIHZhciBtYXRjaCQzMCA9IG1ha2VfcGFkcHJlY19mbXRfZWJiKHBhZCwgKHByZWNf
dXNlZFswXSA9IC8qIHRydWUgKi8xLCBwcmVjKSwgZm10X3Jlc3QkMTUpOworICAgICAgICAgICAg
ICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJbnQ2NCAqL0Jsb2NrLl9fKDcsIFsKKyAg
ICAgICAgICAgICAgICAgICAgaWNvbnYkMywKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMzBb
MF0sCisgICAgICAgICAgICAgICAgICAgIG1hdGNoJDMwWzFdLAorICAgICAgICAgICAgICAgICAg
ICBtYXRjaCQzMFsyXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIAorICAgIH0KKyAgICBpZiAoZXhpdCA9
PT0gMSkgeworICAgICAgZm10X3Jlc3VsdCA9IEN1cnJ5Ll8zKGZhaWx3aXRoX21lc3NhZ2UoLyog
Rm9ybWF0ICovWworICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18o
MTEsIFsKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAg
ICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAg
ICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBT
dHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIjogYXQgY2hhcmFjdGVyIG51bWJlciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogSW50X2QgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRk
aW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9u
ICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwg
Ki9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywg
aW52YWxpZCBjb252ZXJzaW9uICInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiAiJSIgKi8zNywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBDaGFyICovQmxvY2suX18oMCwgWy8qIENoYXJfbGl0ZXJhbCAq
L0Jsb2NrLl9fKDEyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiAiXCIiICovMzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
XSkKKyAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgXSksCisgICAg
ICAgICAgICAgICAgJ2ludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBp
bnZhbGlkIGNvbnZlcnNpb24gIiUlJWMiJworICAgICAgICAgICAgICBdKSwgc3RyLCBzdHJfaW5k
IC0gMSB8IDAsIHN5bWIpOworICAgIH0KKyAgICBpZiAoIWxlZ2FjeV9iZWhhdmlvciQxKSB7Cisg
ICAgICBpZiAoIXBsdXNfdXNlZCAmJiBwbHVzKSB7CisgICAgICAgIGluY29tcGF0aWJsZV9mbGFn
KHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIsICInKyciKTsKKyAgICAgIH0KKyAgICAgIGlmICghc2hh
cnBfdXNlZCAmJiBzaGFycCkgeworICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBz
dHJfaW5kLCBzeW1iLCAiJyMnIik7CisgICAgICB9CisgICAgICBpZiAoIXNwYWNlX3VzZWQgJiYg
c3BhY2UpIHsKKyAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgc3lt
YiwgIicgJyIpOworICAgICAgfQorICAgICAgaWYgKCFwYWRfdXNlZCAmJiBDYW1sX29iai5jYW1s
X25vdGVxdWFsKC8qIFBhZGRpbmdfRUJCICovW3BhZF0sIC8qIFBhZGRpbmdfRUJCICovWy8qIE5v
X3BhZGRpbmcgKi8wXSkpIHsKKyAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3Ry
X2luZCwgc3ltYiwgImBwYWRkaW5nJyIpOworICAgICAgfQorICAgICAgaWYgKCFwcmVjX3VzZWRb
MF0gJiYgQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBQcmVjaXNpb25fRUJCICovW3ByZWNdLCAv
KiBQcmVjaXNpb25fRUJCICovWy8qIE5vX3ByZWNpc2lvbiAqLzBdKSkgeworICAgICAgICBpbmNv
bXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBpZ24gPyAvKiAiXyIgKi85NSA6IHN5bWIs
ICJgcHJlY2lzaW9uJyIpOworICAgICAgfQorICAgICAgaWYgKGlnbiAmJiBwbHVzKSB7CisgICAg
ICAgIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICJfIiAqLzk1LCAiJysn
Iik7CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAgaWYgKCFpZ25fdXNlZFswXSAmJiBpZ24p
IHsKKyAgICAgIHZhciBleGl0JDQgPSAwOworICAgICAgaWYgKHN5bWIgPj0gMzgpIHsKKyAgICAg
ICAgaWYgKHN5bWIgIT09IDQ0KSB7CisgICAgICAgICAgaWYgKHN5bWIgIT09IDY0KSB7CisgICAg
ICAgICAgICBleGl0JDQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmICghbGVn
YWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9IDE7CisgICAgICAgICAgfQor
ICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFsZWdhY3lfYmVoYXZpb3Ik
MSkgeworICAgICAgICAgIGV4aXQkNCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICB9
CisgICAgICBlbHNlIGlmIChzeW1iICE9PSAzMykgeworICAgICAgICBpZiAoc3ltYiA+PSAzNykg
eworICAgICAgICAgIGlmICghbGVnYWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgIGV4aXQk
NCA9IDE7CisgICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIGV4aXQkNCA9IDE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKCFsZWdhY3lfYmVoYXZpb3IkMSkgeworICAgICAgICBleGl0JDQgPSAxOworICAgICAgfQor
ICAgICAgaWYgKGV4aXQkNCA9PT0gMSkgeworICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyhwY3Rf
aW5kLCBzdHJfaW5kLCBzeW1iLCAiJ18nIik7CisgICAgICB9CisgICAgICAKKyAgICB9CisgICAg
cmV0dXJuIGZtdF9yZXN1bHQ7CisgIH07CisgIHZhciBwYXJzZV9mbGFncyA9IGZ1bmN0aW9uIChw
Y3RfaW5kLCBzdHJfaW5kLCBlbmRfaW5kLCBpZ24pIHsKKyAgICB2YXIgemVybyA9IFsvKiBmYWxz
ZSAqLzBdOworICAgIHZhciBtaW51cyA9IFsvKiBmYWxzZSAqLzBdOworICAgIHZhciBwbHVzID0g
Wy8qIGZhbHNlICovMF07CisgICAgdmFyIHNwYWNlID0gWy8qIGZhbHNlICovMF07CisgICAgdmFy
IHNoYXJwID0gWy8qIGZhbHNlICovMF07CisgICAgdmFyIHNldF9mbGFnID0gZnVuY3Rpb24gKHN0
cl9pbmQsIGZsYWcpIHsKKyAgICAgIGlmIChmbGFnWzBdICYmICFsZWdhY3lfYmVoYXZpb3IkMSkg
eworICAgICAgICBDdXJyeS5fMyhmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKKyAgICAg
ICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgIiwKKyAgICAgICAgICAgICAgICAgICAgICAv
KiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19s
aXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6
IGF0IGNoYXJhY3RlciBudW1iZXIgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBJbnRfZCAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFk
ZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lz
aW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0
ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIsIGR1cGxpY2F0ZSBmbGFnICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIENhbWxfY2hhciAqL0Jsb2NrLl9fKDEsIFsvKiBFbmRfb2ZfZm9ybWF0ICovMF0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAg
ICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAg
ICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZHVw
bGljYXRlIGZsYWcgJUMiCisgICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2luZCwgQ2FtbF9z
dHJpbmcuZ2V0KHN0ciwgc3RyX2luZCkpOworICAgICAgfQorICAgICAgZmxhZ1swXSA9IC8qIHRy
dWUgKi8xOworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9OworICAgIHZhciBfc3RyX2lu
ZCA9IHN0cl9pbmQ7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHN0cl9pbmQkMSA9IF9z
dHJfaW5kOworICAgICAgaWYgKHN0cl9pbmQkMSA9PT0gZW5kX2luZCkgeworICAgICAgICBpbnZh
bGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsK
KyAgICAgIH0KKyAgICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQk
MSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDMy
IHwgMDsKKyAgICAgIGlmIChzd2l0Y2hlciA+IDE2IHx8IHN3aXRjaGVyIDwgMCkgeworICAgICAg
ICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzd2l0Y2ggKHN3aXRj
aGVyKSB7CisgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgIHNldF9mbGFnKHN0cl9p
bmQkMSwgc3BhY2UpOworICAgICAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQkMSArIDEgfCAw
OworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAg
ICAgICAgICAgICBzZXRfZmxhZyhzdHJfaW5kJDEsIHNoYXJwKTsKKyAgICAgICAgICAgICAgX3N0
cl9pbmQgPSBzdHJfaW5kJDEgKyAxIHwgMDsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAg
ICAgICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICAgIHNldF9mbGFnKHN0cl9pbmQkMSwg
cGx1cyk7CisgICAgICAgICAgICAgIF9zdHJfaW5kID0gc3RyX2luZCQxICsgMSB8IDA7CisgICAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAg
ICAgICBzZXRfZmxhZyhzdHJfaW5kJDEsIG1pbnVzKTsKKyAgICAgICAgICAgICAgX3N0cl9pbmQg
PSBzdHJfaW5kJDEgKyAxIHwgMDsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICBjYXNlIDQgOiAK
KyAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICBjYXNl
IDcgOiAKKyAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAg
ICBjYXNlIDEwIDogCisgICAgICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIGNhc2UgMTQgOiAK
KyAgICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDE2IDogCisgICAgICAgICAgICAgIHNldF9mbGFn
KHN0cl9pbmQkMSwgemVybyk7CisgICAgICAgICAgICAgIF9zdHJfaW5kID0gc3RyX2luZCQxICsg
MSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAg
IH0KKyAgICAgIH0KKyAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgIHZhciBwY3RfaW5k
JDEgPSBwY3RfaW5kOworICAgICAgICB2YXIgc3RyX2luZCQyID0gc3RyX2luZCQxOworICAgICAg
ICB2YXIgZW5kX2luZCQxID0gZW5kX2luZDsKKyAgICAgICAgdmFyIHplcm8kMSA9IHplcm9bMF07
CisgICAgICAgIHZhciBtaW51cyQxID0gbWludXNbMF07CisgICAgICAgIHZhciBwbHVzJDEgPSBw
bHVzWzBdOworICAgICAgICB2YXIgc2hhcnAkMSA9IHNoYXJwWzBdOworICAgICAgICB2YXIgc3Bh
Y2UkMSA9IHNwYWNlWzBdOworICAgICAgICB2YXIgaWduJDEgPSBpZ247CisgICAgICAgIGlmIChz
dHJfaW5kJDIgPT09IGVuZF9pbmQkMSkgeworICAgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3Nh
Z2UoZW5kX2luZCQxLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7CisgICAgICAgIH0KKyAg
ICAgICAgdmFyIHBhZHR5ID0gemVybyQxICE9PSAwID8gKAorICAgICAgICAgICAgbWludXMkMSAh
PT0gMCA/ICgKKyAgICAgICAgICAgICAgICBsZWdhY3lfYmVoYXZpb3IkMSA/IC8qIExlZnQgKi8w
IDogaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCQxLCBzdHJfaW5kJDIsIC8qICItIiAqLzQ1LCAi
MCIpCisgICAgICAgICAgICAgICkgOiAvKiBaZXJvcyAqLzIKKyAgICAgICAgICApIDogKAorICAg
ICAgICAgICAgbWludXMkMSAhPT0gMCA/IC8qIExlZnQgKi8wIDogLyogUmlnaHQgKi8xCisgICAg
ICAgICAgKTsKKyAgICAgICAgdmFyIG1hdGNoJDEgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJf
aW5kJDIpOworICAgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgICAgaWYgKG1hdGNoJDEgPj0g
NDgpIHsKKyAgICAgICAgICBpZiAobWF0Y2gkMSA+PSA1OCkgeworICAgICAgICAgICAgZXhpdCQx
ID0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkMiA9IHBhcnNlX3Bvc2l0aXZlKHN0cl9pbmQkMiwgZW5kX2luZCQxLCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZV9hZnRlcl9wYWRkaW5nKHBjdF9pbmQkMSwgbWF0Y2gkMlswXSwgZW5k
X2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGlnbiQxLCAvKiBMaXRf
cGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkdHks
CisgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDJbMV0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIF0pKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobWF0
Y2gkMSAhPT0gNDIpIHsKKyAgICAgICAgICBleGl0JDEgPSAxOworICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgIHJldHVybiBwYXJzZV9hZnRlcl9wYWRkaW5nKHBjdF9pbmQkMSwg
c3RyX2luZCQyICsgMSB8IDAsIGVuZF9pbmQkMSwgbWludXMkMSwgcGx1cyQxLCBzaGFycCQxLCBz
cGFjZSQxLCBpZ24kMSwgLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbcGFkdHldKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMSA9PT0gMSkgeworICAgICAgICAgIHN3aXRjaCAo
cGFkdHkpIHsKKyAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgIGlmICghbGVn
YWN5X2JlaGF2aW9yJDEpIHsKKyAgICAgICAgICAgICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhv
dXQoc3RyX2luZCQyIC0gMSB8IDAsIC8qICItIiAqLzQ1LCAicGFkZGluZyIpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhwY3Rf
aW5kJDEsIHN0cl9pbmQkMiwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNw
YWNlJDEsIGlnbiQxLCAvKiBOb19wYWRkaW5nICovMCk7CisgICAgICAgICAgICBjYXNlIDEgOiAK
KyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhwY3RfaW5kJDEsIHN0
cl9pbmQkMiwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGln
biQxLCAvKiBOb19wYWRkaW5nICovMCk7CisgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VfYWZ0ZXJfcGFkZGluZyhwY3RfaW5kJDEsIHN0cl9pbmQkMiwg
ZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGlnbiQxLCAvKiBM
aXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFJpZ2h0ICovMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICB9CisgICAgICAKKyAgICB9OworICB9OworICB2YXIgaXNf
aW50X2Jhc2UgPSBmdW5jdGlvbiAoc3ltYikgeworICAgIHZhciBzd2l0Y2hlciA9IHN5bWIgLSA4
OCB8IDA7CisgICAgaWYgKHN3aXRjaGVyID4gMzIgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgICBy
ZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoc3dp
dGNoZXIpIHsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgY2FzZSA0IDogCisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICBj
YXNlIDYgOiAKKyAgICAgICAgY2FzZSA3IDogCisgICAgICAgIGNhc2UgOCA6IAorICAgICAgICBj
YXNlIDkgOiAKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICBjYXNlIDExIDogCisgICAgICAg
IGNhc2UgMTMgOiAKKyAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICBjYXNlIDE1IDogCisgICAg
ICAgIGNhc2UgMTYgOiAKKyAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICBjYXNlIDE5IDogCisg
ICAgICAgIGNhc2UgMjAgOiAKKyAgICAgICAgY2FzZSAyMSA6IAorICAgICAgICBjYXNlIDIyIDog
CisgICAgICAgIGNhc2UgMjQgOiAKKyAgICAgICAgY2FzZSAyNSA6IAorICAgICAgICBjYXNlIDI2
IDogCisgICAgICAgIGNhc2UgMjcgOiAKKyAgICAgICAgY2FzZSAyOCA6IAorICAgICAgICBjYXNl
IDMwIDogCisgICAgICAgIGNhc2UgMzEgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBmYWxzZSAq
LzA7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICBjYXNlIDEyIDogCisgICAgICAgIGNhc2Ug
MTcgOiAKKyAgICAgICAgY2FzZSAyMyA6IAorICAgICAgICBjYXNlIDI5IDogCisgICAgICAgIGNh
c2UgMzIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICAgICAgCisgICAg
ICB9CisgICAgfQorICB9OworICB2YXIgY291bnRlcl9vZl9jaGFyID0gZnVuY3Rpb24gKHN5bWIp
IHsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHN5bWIgPj0gMTA4KSB7CisgICAgICBpZiAo
c3ltYiA+PSAxMTEpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgc3dpdGNoIChzeW1iIC0gMTA4IHwgMCkgeworICAgICAgICAgIGNhc2UgMCA6IAor
ICAgICAgICAgICAgICByZXR1cm4gLyogTGluZV9jb3VudGVyICovMDsKKyAgICAgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICByZXR1cm4gLyogQ2hhcl9jb3VudGVyICov
MTsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChz
eW1iICE9PSA3NikgeworICAgICAgZXhpdCA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
cmV0dXJuIC8qIFRva2VuX2NvdW50ZXIgKi8yOworICAgIH0KKyAgICBpZiAoZXhpdCA9PT0gMSkg
eworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNz
ZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxG
b3JtYXQubWwiLAorICAgICAgICAgICAgICAyNjgzLAorICAgICAgICAgICAgICAzNAorICAgICAg
ICAgICAgXQorICAgICAgICAgIF07CisgICAgfQorICAgIAorICB9OworICB2YXIgcGFyc2VfY2hh
cl9zZXQgPSBmdW5jdGlvbiAoc3RyX2luZCwgZW5kX2luZCkgeworICAgIGlmIChzdHJfaW5kID09
PSBlbmRfaW5kKSB7CisgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4
cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICB9CisgICAgdmFyIGNoYXJfc2V0ID0gQnl0ZXMu
bWFrZSgzMiwgLyogIlwwMDAiICovMCk7CisgICAgdmFyIGFkZF9yYW5nZSA9IGZ1bmN0aW9uIChj
LCBjJHByaW1lKSB7CisgICAgICBmb3IodmFyIGkgPSBjOyBpIDw9IGMkcHJpbWU7ICsraSl7Cisg
ICAgICAgIGFkZF9pbl9jaGFyX3NldChjaGFyX3NldCwgUGVydmFzaXZlcy5jaGFyX29mX2ludChp
KSk7CisgICAgICB9CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH07CisgICAgdmFyIGZh
aWxfc2luZ2xlX3BlcmNlbnQgPSBmdW5jdGlvbiAoc3RyX2luZCkgeworICAgICAgcmV0dXJuIEN1
cnJ5Ll8yKGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWworICAgICAgICAgICAgICAgICAg
ICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogTm9fcGFkZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBT
dHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIjogJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hh
cl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogIiUiICovMzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICInIGFsb25lIGlzIG5vdCBhY2NlcHRlZCBpbiBjaGFy
YWN0ZXIgc2V0cywgdXNlICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICIlIiAqLzM3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9f
KDEyLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qICIlIiAqLzM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGluc3RlYWQgYXQgcG9z
aXRpb24gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFk
ZGluZyAqLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9j
ay5fXygxMiwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiAiLiIgKi80NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IF0pLAorICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9u
ZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIHVzZSAlJSUlIGluc3RlYWQgYXQg
cG9zaXRpb24gJWQuIgorICAgICAgICAgICAgICAgICAgICBdKSwgc3RyLCBzdHJfaW5kKTsKKyAg
ICB9OworICAgIHZhciBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyID0gZnVuY3Rpb24gKF9zdHJf
aW5kLCBlbmRfaW5kLCBfYykgeworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIgYyA9
IF9jOworICAgICAgICB2YXIgc3RyX2luZCA9IF9zdHJfaW5kOworICAgICAgICBpZiAoc3RyX2lu
ZCA9PT0gZW5kX2luZCkgeworICAgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2lu
ZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgICB9CisgICAgICAgIHZhciBj
JHByaW1lID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCk7CisgICAgICAgIHZhciBleGl0
ID0gMDsKKyAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgIGlmIChjJHByaW1lID49IDQ2
KSB7CisgICAgICAgICAgaWYgKGMkcHJpbWUgIT09IDY0KSB7CisgICAgICAgICAgICBpZiAoYyRw
cmltZSAhPT0gOTMpIHsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgYWRkX2luX2NoYXJfc2V0KGNoYXJfc2V0
LCBjKTsKKyAgICAgICAgICAgICAgcmV0dXJuIHN0cl9pbmQgKyAxIHwgMDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBleGl0JDEgPSAy
OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjJHByaW1lICE9PSAz
NykgeworICAgICAgICAgIGlmIChjJHByaW1lID49IDQ1KSB7CisgICAgICAgICAgICB2YXIgc3Ry
X2luZCQxID0gc3RyX2luZCArIDEgfCAwOworICAgICAgICAgICAgdmFyIGVuZF9pbmQkMSA9IGVu
ZF9pbmQ7CisgICAgICAgICAgICB2YXIgYyQxID0gYzsKKyAgICAgICAgICAgIGlmIChzdHJfaW5k
JDEgPT09IGVuZF9pbmQkMSkgeworICAgICAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdl
KGVuZF9pbmQkMSwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgdmFyIGMkcHJpbWUkMSA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQk
MSk7CisgICAgICAgICAgICBpZiAoYyRwcmltZSQxICE9PSAzNykgeworICAgICAgICAgICAgICBp
ZiAoYyRwcmltZSQxICE9PSA5MykgeworICAgICAgICAgICAgICAgIGFkZF9yYW5nZShjJDEsIGMk
cHJpbWUkMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQo
c3RyX2luZCQxICsgMSB8IDAsIGVuZF9pbmQkMSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYWRkX2luX2NoYXJfc2V0KGNoYXJfc2V0LCBj
JDEpOworICAgICAgICAgICAgICAgIGFkZF9pbl9jaGFyX3NldChjaGFyX3NldCwgLyogIi0iICov
NDUpOworICAgICAgICAgICAgICAgIHJldHVybiBzdHJfaW5kJDEgKyAxIHwgMDsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IGlmICgoc3RyX2luZCQxICsgMSB8IDApID09PSBlbmRfaW5kJDEpIHsKKyAgICAgICAgICAgICAg
ICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQkMSwgInVuZXhwZWN0ZWQgZW5kIG9mIGZv
cm1hdCIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHZhciBjJHByaW1lJDIgPSBD
YW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kJDEgKyAxIHwgMCk7CisgICAgICAgICAgICAgIHZh
ciBleGl0JDIgPSAwOworICAgICAgICAgICAgICBpZiAoYyRwcmltZSQyICE9PSAzNykgeworICAg
ICAgICAgICAgICAgIGlmIChjJHByaW1lJDIgIT09IDY0KSB7CisgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFpbF9zaW5nbGVfcGVyY2VudChzdHJfaW5kJDEpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIGV4aXQkMiA9IDE7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIGV4aXQkMiA9IDE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgaWYgKGV4aXQkMiA9PT0gMSkgeworICAgICAgICAgICAgICAgIGFkZF9yYW5nZShjJDEsIGMk
cHJpbWUkMik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQo
c3RyX2luZCQxICsgMiB8IDAsIGVuZF9pbmQkMSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIGV4aXQkMSA9IDI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXQkMSA9
PT0gMikgeworICAgICAgICAgIGlmIChjID09PSAvKiAiJSIgKi8zNykgeworICAgICAgICAgICAg
YWRkX2luX2NoYXJfc2V0KGNoYXJfc2V0LCBjJHByaW1lKTsKKyAgICAgICAgICAgIHJldHVybiBw
YXJzZV9jaGFyX3NldF9jb250ZW50KHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCk7CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICAgICAgaWYgKGMg
PT09IC8qICIlIiAqLzM3KSB7CisgICAgICAgICAgICBmYWlsX3NpbmdsZV9wZXJjZW50KHN0cl9p
bmQpOworICAgICAgICAgIH0KKyAgICAgICAgICBhZGRfaW5fY2hhcl9zZXQoY2hhcl9zZXQsIGMp
OworICAgICAgICAgIF9jID0gYyRwcmltZTsKKyAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQg
KyAxIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICB9OworICAgIH07CisgICAgdmFyIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQg
PSBmdW5jdGlvbiAoX3N0cl9pbmQsIGVuZF9pbmQpIHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAg
ICAgICAgdmFyIHN0cl9pbmQgPSBfc3RyX2luZDsKKyAgICAgICAgaWYgKHN0cl9pbmQgPT09IGVu
ZF9pbmQpIHsKKyAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4
cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgYyA9IENhbWxf
c3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOworICAgICAgICBpZiAoYyAhPT0gNDUpIHsKKyAgICAg
ICAgICBpZiAoYyAhPT0gOTMpIHsKKyAgICAgICAgICAgIHJldHVybiBwYXJzZV9jaGFyX3NldF9h
ZnRlcl9jaGFyKHN0cl9pbmQgKyAxIHwgMCwgZW5kX2luZCwgYyk7CisgICAgICAgICAgfQorICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN0cl9pbmQgKyAxIHwgMDsKKyAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgYWRkX2luX2NoYXJf
c2V0KGNoYXJfc2V0LCAvKiAiLSIgKi80NSk7CisgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5k
ICsgMSB8IDA7CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9Cisg
ICAgICB9OworICAgIH07CisgICAgdmFyIHBhcnNlX2NoYXJfc2V0X3N0YXJ0ID0gZnVuY3Rpb24g
KHN0cl9pbmQsIGVuZF9pbmQpIHsKKyAgICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7Cisg
ICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9m
IGZvcm1hdCIpOworICAgICAgfQorICAgICAgdmFyIGMgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBz
dHJfaW5kKTsKKyAgICAgIHJldHVybiBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyKHN0cl9pbmQg
KyAxIHwgMCwgZW5kX2luZCwgYyk7CisgICAgfTsKKyAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2lu
ZCkgeworICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBl
bmQgb2YgZm9ybWF0Iik7CisgICAgfQorICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChz
dHIsIHN0cl9pbmQpOworICAgIHZhciBtYXRjaCQxID0gbWF0Y2ggIT09IDk0ID8gLyogdHVwbGUg
Ki9bCisgICAgICAgIHN0cl9pbmQsCisgICAgICAgIC8qIGZhbHNlICovMAorICAgICAgXSA6IC8q
IHR1cGxlICovWworICAgICAgICBzdHJfaW5kICsgMSB8IDAsCisgICAgICAgIC8qIHRydWUgKi8x
CisgICAgICBdOworICAgIHZhciBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0KG1hdGNo
JDFbMF0sIGVuZF9pbmQpOworICAgIHZhciBjaGFyX3NldCQxID0gQnl0ZXMudG9fc3RyaW5nKGNo
YXJfc2V0KTsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICBuZXh0X2luZCwK
KyAgICAgICAgICAgIG1hdGNoJDFbMV0gPyByZXZfY2hhcl9zZXQoY2hhcl9zZXQkMSkgOiBjaGFy
X3NldCQxCisgICAgICAgICAgXTsKKyAgfTsKKyAgdmFyIGNoZWNrX29wZW5fYm94ID0gZnVuY3Rp
b24gKGZtdCkgeworICAgIGlmICh0eXBlb2YgZm10ID09PSAibnVtYmVyIikgeworICAgICAgcmV0
dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSBpZiAoZm10LnRhZyA9PT0gMTEpIHsKKyAg
ICAgIGlmICh0eXBlb2YgZm10WzFdID09PSAibnVtYmVyIikgeworICAgICAgICB0cnkgeworICAg
ICAgICAgIG9wZW5fYm94X29mX3N0cmluZyhmbXRbMF0pOworICAgICAgICAgIHJldHVybiAvKiAo
KSAqLzA7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKGV4bil7CisgICAgICAgICAgaWYgKGV4
blswXSA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSkgeworICAgICAgICAgICAg
cmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICB0aHJvdyBleG47CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0KKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgfTsKKyAgdmFyIHBhcnNlX3Rh
ZyA9IGZ1bmN0aW9uIChpc19vcGVuX3RhZywgc3RyX2luZCwgZW5kX2luZCkgeworICAgIHRyeSB7
CisgICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgeworICAgICAgICB0aHJvdyBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICB9CisgICAgICB2YXIgbWF0Y2ggPSBD
YW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKKyAgICAgIGlmIChtYXRjaCAhPT0gNjApIHsK
KyAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHZhciBpbmQgPSAkJFN0cmluZy5pbmRleF9mcm9tKHN0
ciwgc3RyX2luZCArIDEgfCAwLCAvKiAiPiIgKi82Mik7CisgICAgICAgIGlmIChpbmQgPj0gZW5k
X2luZCkgeworICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3Vu
ZDsKKyAgICAgICAgfQorICAgICAgICB2YXIgc3ViX3N0ciA9ICQkU3RyaW5nLnN1YihzdHIsIHN0
cl9pbmQsIChpbmQgLSBzdHJfaW5kIHwgMCkgKyAxIHwgMCk7CisgICAgICAgIHZhciBiZWdfaW5k
ID0gaW5kICsgMSB8IDA7CisgICAgICAgIHZhciBtYXRjaCQxID0gcGFyc2VfbGl0ZXJhbChiZWdf
aW5kLCBiZWdfaW5kLCBlbmRfaW5kKTsKKyAgICAgICAgdmFyIG1hdGNoJDIgPSBwYXJzZV9saXRl
cmFsKHN0cl9pbmQsIHN0cl9pbmQsIGluZCArIDEgfCAwKTsKKyAgICAgICAgdmFyIHN1Yl9mbXQg
PSBtYXRjaCQyWzBdOworICAgICAgICB2YXIgc3ViX2Zvcm1hdCA9IC8qIEZvcm1hdCAqL1sKKyAg
ICAgICAgICBzdWJfZm10LAorICAgICAgICAgIHN1Yl9zdHIKKyAgICAgICAgXTsKKyAgICAgICAg
dmFyIGZvcm1hdHRpbmcgPSBpc19vcGVuX3RhZyA/IC8qIE9wZW5fdGFnICovQmxvY2suX18oMCwg
W3N1Yl9mb3JtYXRdKSA6IChjaGVja19vcGVuX2JveChzdWJfZm10KSwgLyogT3Blbl9ib3ggKi9C
bG9jay5fXygxLCBbc3ViX2Zvcm1hdF0pKTsKKyAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9b
LyogRm9ybWF0dGluZ19nZW4gKi9CbG9jay5fXygxOCwgWworICAgICAgICAgICAgICAgICAgICBm
b3JtYXR0aW5nLAorICAgICAgICAgICAgICAgICAgICBtYXRjaCQxWzBdCisgICAgICAgICAgICAg
ICAgICBdKV07CisgICAgICB9CisgICAgfQorICAgIGNhdGNoIChleG4peworICAgICAgaWYgKGV4
biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7CisgICAgICAgIHZhciBt
YXRjaCQzID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKKyAgICAg
ICAgdmFyIHN1Yl9mb3JtYXQkMSA9IC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAvKiBFbmRfb2Zf
Zm9ybWF0ICovMCwKKyAgICAgICAgICAiIgorICAgICAgICBdOworICAgICAgICB2YXIgZm9ybWF0
dGluZyQxID0gaXNfb3Blbl90YWcgPyAvKiBPcGVuX3RhZyAqL0Jsb2NrLl9fKDAsIFtzdWJfZm9y
bWF0JDFdKSA6IC8qIE9wZW5fYm94ICovQmxvY2suX18oMSwgW3N1Yl9mb3JtYXQkMV0pOworICAg
ICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2dlbiAqL0Jsb2NrLl9fKDE4
LCBbCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmckMSwKKyAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkM1swXQorICAgICAgICAgICAgICAgICAgXSldOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHRocm93IGV4bjsKKyAgICAgIH0KKyAgICB9CisgIH07CisgIHJldHVybiBw
YXJzZV9saXRlcmFsKDAsIDAsIHN0ci5sZW5ndGgpOworfQorCitmdW5jdGlvbiBmb3JtYXRfb2Zf
c3RyaW5nX2ZtdHR5KHN0ciwgZm10dHkpIHsKKyAgdmFyIG1hdGNoID0gZm10X2ViYl9vZl9zdHJp
bmcoLyogTm9uZSAqLzAsIHN0cik7CisgIHRyeSB7CisgICAgcmV0dXJuIC8qIEZvcm1hdCAqL1sK
KyAgICAgICAgICAgIHR5cGVfZm9ybWF0KG1hdGNoWzBdLCBmbXR0eSksCisgICAgICAgICAgICBz
dHIKKyAgICAgICAgICBdOworICB9CisgIGNhdGNoIChleG4peworICAgIGlmIChleG4gPT09IFR5
cGVfbWlzbWF0Y2gpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihmYWlsd2l0aF9tZXNzYWdlKC8q
IEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Js
b2NrLl9fKDExLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgaW5wdXQ6IGZvcm1h
dCB0eXBlIG1pc21hdGNoIGJldHdlZW4gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Q2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0
cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIGFuZCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENh
bWxfc3RyaW5nICovQmxvY2suX18oMywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pLAorICAg
ICAgICAgICAgICAgICAgICAgICJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdl
ZW4gJVMgYW5kICVTIgorICAgICAgICAgICAgICAgICAgICBdKSwgc3RyLCBzdHJpbmdfb2ZfZm10
dHkoZm10dHkpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQor
ICB9Cit9CisKK2Z1bmN0aW9uIGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0KHN0ciwgcGFyYW0pIHsK
KyAgdmFyIG1hdGNoID0gZm10X2ViYl9vZl9zdHJpbmcoLyogTm9uZSAqLzAsIHN0cik7CisgIHRy
eSB7CisgICAgcmV0dXJuIC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgIHR5cGVfZm9ybWF0KG1h
dGNoWzBdLCBmbXR0eV9vZl9mbXQocGFyYW1bMF0pKSwKKyAgICAgICAgICAgIHN0cgorICAgICAg
ICAgIF07CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0gVHlwZV9taXNtYXRj
aCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8yKGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICov
WworICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEs
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlz
bWF0Y2ggYmV0d2VlbiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmlu
ZyAqL0Jsb2NrLl9fKDMsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3Bh
ZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVy
YWwgKi9CbG9jay5fXygxMSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
YW5kICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcg
Ki9CbG9jay5fXygzLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IE5vX3BhZGRpbmcgKi8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAg
ICAgICAgICAgImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQg
JVMiCisgICAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHBhcmFtWzFdKTsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9CisKK2V4cG9ydHMuaXNfaW5f
Y2hhcl9zZXQgICAgICAgICAgICAgICAgID0gaXNfaW5fY2hhcl9zZXQ7CitleHBvcnRzLnJldl9j
aGFyX3NldCAgICAgICAgICAgICAgICAgICA9IHJldl9jaGFyX3NldDsKK2V4cG9ydHMuY3JlYXRl
X2NoYXJfc2V0ICAgICAgICAgICAgICAgID0gY3JlYXRlX2NoYXJfc2V0OworZXhwb3J0cy5hZGRf
aW5fY2hhcl9zZXQgICAgICAgICAgICAgICAgPSBhZGRfaW5fY2hhcl9zZXQ7CitleHBvcnRzLmZy
ZWV6ZV9jaGFyX3NldCAgICAgICAgICAgICAgICA9IGZyZWV6ZV9jaGFyX3NldDsKK2V4cG9ydHMu
cGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0ID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRf
Zm9ybWF0OworZXhwb3J0cy5tYWtlX3ByaW50ZiAgICAgICAgICAgICAgICAgICAgPSBtYWtlX3By
aW50ZjsKK2V4cG9ydHMub3V0cHV0X2FjYyAgICAgICAgICAgICAgICAgICAgID0gb3V0cHV0X2Fj
YzsKK2V4cG9ydHMuYnVmcHV0X2FjYyAgICAgICAgICAgICAgICAgICAgID0gYnVmcHV0X2FjYzsK
K2V4cG9ydHMuc3RycHV0X2FjYyAgICAgICAgICAgICAgICAgICAgID0gc3RycHV0X2FjYzsKK2V4
cG9ydHMudHlwZV9mb3JtYXQgICAgICAgICAgICAgICAgICAgID0gdHlwZV9mb3JtYXQ7CitleHBv
cnRzLmZtdF9lYmJfb2Zfc3RyaW5nICAgICAgICAgICAgICA9IGZtdF9lYmJfb2Zfc3RyaW5nOwor
ZXhwb3J0cy5mb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5ICAgICAgICAgPSBmb3JtYXRfb2Zfc3RyaW5n
X2ZtdHR5OworZXhwb3J0cy5mb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCAgICAgICAgPSBmb3JtYXRf
b2Zfc3RyaW5nX2Zvcm1hdDsKK2V4cG9ydHMuY2hhcl9vZl9pY29udiAgICAgICAgICAgICAgICAg
ID0gY2hhcl9vZl9pY29udjsKK2V4cG9ydHMuc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0ICAgICAg
ID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0OworZXhwb3J0cy5zdHJpbmdfb2ZfZm9ybWF0dGlu
Z19nZW4gICAgICAgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19nZW47CitleHBvcnRzLnN0cmluZ19v
Zl9mbXR0eSAgICAgICAgICAgICAgICA9IHN0cmluZ19vZl9mbXR0eTsKK2V4cG9ydHMuc3RyaW5n
X29mX2ZtdCAgICAgICAgICAgICAgICAgID0gc3RyaW5nX29mX2ZtdDsKK2V4cG9ydHMub3Blbl9i
b3hfb2Zfc3RyaW5nICAgICAgICAgICAgID0gb3Blbl9ib3hfb2Zfc3RyaW5nOworZXhwb3J0cy5z
eW1tICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBzeW1tOworZXhwb3J0cy50cmFucyAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSB0cmFuczsKK2V4cG9ydHMucmVjYXN0ICAgICAgICAgICAg
ICAgICAgICAgICAgID0gcmVjYXN0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVu
ZCBvZiBjYW1saW50ZXJuYWxGb3JtYXQuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRz
OworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9pbyddID0gZnVuY3Rpb24oKSB7CivCoCDC
oCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9pby5qcyAvLy8vLy8v
LworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJl
KCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2Nh
bWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uICRjYXJldChwcmltLCBwcmltJDEp
IHsKKyAgcmV0dXJuIHByaW0gKyBwcmltJDE7Cit9CisKK3ZhciBzdGRpbiA9IHVuZGVmaW5lZDsK
KwordmFyIHN0ZG91dCA9IC8qIHJlY29yZCAqL1sKKyAgLyogYnVmZmVyICovIiIsCisgIC8qIG91
dHB1dCAqL2Z1bmN0aW9uIChfLCBzKSB7CisgICAgdmFyIHYgPSBzLmxlbmd0aCAtIDEgfCAwOwor
ICAgIGlmICgoICh0eXBlb2YgcHJvY2VzcyAhPT0gInVuZGVmaW5lZCIpICYmIHByb2Nlc3Muc3Rk
b3V0ICYmIHByb2Nlc3Muc3Rkb3V0LndyaXRlKSkgeworICAgICAgcmV0dXJuICggcHJvY2Vzcy5z
dGRvdXQud3JpdGUgKShzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc1t2XSA9PT0gIlxuIikgewor
ICAgICAgY29uc29sZS5sb2cocy5zbGljZSgwLCB2KSk7CisgICAgICByZXR1cm4gLyogKCkgKi8w
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGNvbnNvbGUubG9nKHMpOworICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICB9CisgIH0KK107CisKK3ZhciBzdGRlcnIgPSAvKiByZWNvcmQgKi9b
CisgIC8qIGJ1ZmZlciAqLyIiLAorICAvKiBvdXRwdXQgKi9mdW5jdGlvbiAoXywgcykgeworICAg
IHZhciB2ID0gcy5sZW5ndGggLSAxIHwgMDsKKyAgICBpZiAoc1t2XSA9PT0gIlxuIikgeworICAg
ICAgY29uc29sZS5sb2cocy5zbGljZSgwLCB2KSk7CisgICAgICByZXR1cm4gLyogKCkgKi8wOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGNvbnNvbGUubG9nKHMpOworICAgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgICB9CisgIH0KK107CisKK2Z1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlw
dG9yX2luKCkgeworICB0aHJvdyBbCisgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZh
aWx1cmUsCisgICAgICAgICJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiBub3QgaW1wbGVtZW50
ZWQiCisgICAgICBdOworfQorCitmdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQo
KSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwK
KyAgICAgICAgImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCBub3QgaW1wbGVtZW50ZWQiCisg
ICAgICBdOworfQorCitmdW5jdGlvbiBjYW1sX21sX2ZsdXNoKG9jKSB7CisgIGlmIChvY1svKiBi
dWZmZXIgKi8wXSAhPT0gIiIpIHsKKyAgICBDdXJyeS5fMihvY1svKiBvdXRwdXQgKi8xXSwgb2Ms
IG9jWy8qIGJ1ZmZlciAqLzBdKTsKKyAgICBvY1svKiBidWZmZXIgKi8wXSA9ICIiOworICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKwor
dmFyIG5vZGVfc3RkX291dHB1dCA9IChmdW5jdGlvbiAocyl7CisgICByZXR1cm4gKHR5cGVvZiBw
cm9jZXNzICE9PSAidW5kZWZpbmVkIikgJiYgcHJvY2Vzcy5zdGRvdXQgJiYgKHByb2Nlc3Muc3Rk
b3V0LndyaXRlKHMpLCB0cnVlKTsKKyAgIH0KKyk7CisKK2Z1bmN0aW9uIGNhbWxfbWxfb3V0cHV0
KG9jLCBzdHIsIG9mZnNldCwgbGVuKSB7CisgIHZhciBzdHIkMSA9IG9mZnNldCA9PT0gMCAmJiBs
ZW4gPT09IHN0ci5sZW5ndGggPyBzdHIgOiBzdHIuc2xpY2Uob2Zmc2V0LCBsZW4pOworICBpZiAo
KCAodHlwZW9mIHByb2Nlc3MgIT09ICJ1bmRlZmluZWQiKSAmJiBwcm9jZXNzLnN0ZG91dCAmJiBw
cm9jZXNzLnN0ZG91dC53cml0ZSApICYmIG9jID09PSBzdGRvdXQpIHsKKyAgICByZXR1cm4gKCBw
cm9jZXNzLnN0ZG91dC53cml0ZSApKHN0ciQxKTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgaWQg
PSBzdHIkMS5sYXN0SW5kZXhPZigiXG4iKTsKKyAgICBpZiAoaWQgPCAwKSB7CisgICAgICBvY1sv
KiBidWZmZXIgKi8wXSA9IG9jWy8qIGJ1ZmZlciAqLzBdICsgc3RyJDE7CisgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIG9jWy8qIGJ1ZmZlciAqLzBdID0g
b2NbLyogYnVmZmVyICovMF0gKyBzdHIkMS5zbGljZSgwLCBpZCArIDEgfCAwKTsKKyAgICAgIGNh
bWxfbWxfZmx1c2gob2MpOworICAgICAgb2NbLyogYnVmZmVyICovMF0gPSBvY1svKiBidWZmZXIg
Ki8wXSArIHN0ciQxLnNsaWNlKGlkICsgMSB8IDApOworICAgICAgcmV0dXJuIC8qICgpICovMDsK
KyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhcihvYywgJCRjaGFy
KSB7CisgIHJldHVybiBjYW1sX21sX291dHB1dChvYywgU3RyaW5nLmZyb21DaGFyQ29kZSgkJGNo
YXIpLCAwLCAxKTsKK30KKworZnVuY3Rpb24gY2FtbF9tbF9pbnB1dChfLCBfJDEsIF8kMiwgXyQz
KSB7CisgIHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwK
KyAgICAgICAgImNhbWxfbWxfaW5wdXQgaWMgbm90IGltcGxlbWVudGVkIgorICAgICAgXTsKK30K
KworZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyKCkgeworICB0aHJvdyBbCisgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICJjYW1sX21sX2lucHV0X2No
YXIgbm90IGltcGxlbW50ZWQiCisgICAgICBdOworfQorCitmdW5jdGlvbiBjYW1sX21sX291dF9j
aGFubmVsc19saXN0KCkgeworICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgc3Rkb3V0LAor
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgc3RkZXJyLAorICAgICAgICAgICAgLyog
W10gKi8wCisgICAgICAgICAgXQorICAgICAgICBdOworfQorCitleHBvcnRzLiRjYXJldCAgICAg
ICAgICAgICAgICAgICAgICA9ICRjYXJldDsKK2V4cG9ydHMuc3RkaW4gICAgICAgICAgICAgICAg
ICAgICAgID0gc3RkaW47CitleHBvcnRzLnN0ZG91dCAgICAgICAgICAgICAgICAgICAgICA9IHN0
ZG91dDsKK2V4cG9ydHMuc3RkZXJyICAgICAgICAgICAgICAgICAgICAgID0gc3RkZXJyOworZXhw
b3J0cy5jYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAgPSBjYW1sX21sX29wZW5fZGVzY3JpcHRv
cl9pbjsKK2V4cG9ydHMuY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0ID0gY2FtbF9tbF9vcGVu
X2Rlc2NyaXB0b3Jfb3V0OworZXhwb3J0cy5jYW1sX21sX2ZsdXNoICAgICAgICAgICAgICAgPSBj
YW1sX21sX2ZsdXNoOworZXhwb3J0cy5ub2RlX3N0ZF9vdXRwdXQgICAgICAgICAgICAgPSBub2Rl
X3N0ZF9vdXRwdXQ7CitleHBvcnRzLmNhbWxfbWxfb3V0cHV0ICAgICAgICAgICAgICA9IGNhbWxf
bWxfb3V0cHV0OworZXhwb3J0cy5jYW1sX21sX291dHB1dF9jaGFyICAgICAgICAgPSBjYW1sX21s
X291dHB1dF9jaGFyOworZXhwb3J0cy5jYW1sX21sX2lucHV0ICAgICAgICAgICAgICAgPSBjYW1s
X21sX2lucHV0OworZXhwb3J0cy5jYW1sX21sX2lucHV0X2NoYXIgICAgICAgICAgPSBjYW1sX21s
X2lucHV0X2NoYXI7CitleHBvcnRzLmNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgICA9IGNhbWxf
bWxfb3V0X2NoYW5uZWxzX2xpc3Q7CisvKiBzdGRpbiBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8v
Ly8vLy8gZW5kIG9mIGNhbWxfaW8uanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOwor
wqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9sZXhlciddID0gZnVuY3Rpb24oKSB7CivCoCDC
oCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9sZXhlci5qcyAvLy8v
Ly8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1
aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIGZhaWwoKSB7Cisg
IHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAg
ICAgImxleGluZzogZW1wdHkgdG9rZW4iCisgICAgICBdOworfQorCisgCisKKy8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Jq
ZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KKy8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9j
cXVlbmNvdXJ0ICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5
NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi8K
Ky8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMg
ZGlzdHJpYnV0ZWQgICAgKi8KKy8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKi8KKy8qICB0aGUgc3BlY2lhbCBleGNl
cHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi8KKy8q
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogJElkOiBsZXhpbmcuYyA2MDQ1
IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqLworCisvKiBUaGUgdGFibGUtZHJpdmVu
IGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqLworCitmdW5jdGlv
biBjYW1sX2xleF9hcnJheShzKSB7CisgICAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7CisgICAgdmFy
IGEgPSBuZXcgQXJyYXkobCk7CisgICAgLy8gd2hlbiBzLmNoYXJDb2RlQXQoMiAqIGkgKyAxICkg
PiAxMjggKDB4ODApCisgICAgLy8gYVtpXSA8IDAgIAorICAgIC8vIGZvcih2YXIgaSA9IDAgOyBp
IDw9IDB4ZmZmZjsgKytpKSB7IGlmIChpIDw8IDE2ID4+IDE2ICE9PWkpe2NvbnNvbGUubG9nKGk8
PDE2Pj4xNiwgJ3ZzJyxpKX19CisgICAgLy8gCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBp
KyspCisgICAgICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2RlQXQo
MiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7CisgICAgcmV0dXJuIGE7Cit9CisvKioKKyAq
IGV4dGVybmFsIGNfZW5naW5lICA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQK
KyAqIGxleGluZy5tbAorICogdHlwZSBsZXhfdGFibGVzID0geworICogICBsZXhfYmFzZSA6IHN0
cmluZzsKKyAqICAgbGV4X2JhY2t0cmsgOiBzdHJpbmc7CisgKiAgIGxleF9kZWZhdWx0IDogc3Ry
aW5nOworICogICBsZXhfdHJhbnMgOiBzdHJpbmc7CisgKiAgIGxleF9jaGVjayA6IHN0cmluZzsK
KyAqICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZzsKKyAqICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0
cmluZzsKKyAqICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZzsKKyAqICAgbGV4X3RyYW5zX2Nv
ZGUgOiBzdHJpbmc7CisgKiAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nOworICogICBsZXhfY29k
ZSA6IHN0cmluZzsKKyAqIH0KKyAqCisgKiB0eXBlIGxleGJ1ZiA9IHsKKyAqICAgcmVmaWxsX2J1
ZmYgOiBsZXhidWYgLT4gdW5pdCA7CisgKiAgIG11dGFibGUgbGV4X2J1ZmZlciA6IGJ5dGVzOwor
ICogICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50OworICogICBtdXRhYmxlIGxleF9hYnNf
cG9zIDogaW50OworICogICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7CisgKiAgIG11dGFi
bGUgbGV4X2N1cnJfcG9zIDogaW50OworICogICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDsK
KyAqICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7CisgKiAgIG11dGFibGUgbGV4X2Vv
Zl9yZWFjaGVkIDogYm9vbDsKKyAqICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5OworICog
ICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247CisgKiAgIG11dGFibGUgbGV4X2N1cnJf
cDsKKyAqIH0KKyAqIEBwYXJhbSB0YmwKKyAqIEBwYXJhbSBzdGFydF9zdGF0ZQorICogQHBhcmFt
IGxleGJ1ZgorICogQHJldHVybnMge2FueX0KKyAqLworZnVuY3Rpb24gJCRjYW1sX2xleF9lbmdp
bmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7CisgICAgLy8gTGV4aW5nLmxleGJ1ZgorICAg
IHZhciBsZXhfYnVmZmVyID0gMTsKKyAgICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAyOworICAgIHZh
ciBsZXhfc3RhcnRfcG9zID0gNDsKKyAgICB2YXIgbGV4X2N1cnJfcG9zID0gNTsKKyAgICB2YXIg
bGV4X2xhc3RfcG9zID0gNjsKKyAgICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gNzsKKyAgICB2YXIg
bGV4X2VvZl9yZWFjaGVkID0gODsKKyAgICAvLyBMZXhpbmcubGV4X3RhYmxlcworICAgIHZhciBs
ZXhfYmFzZSA9IDA7CisgICAgdmFyIGxleF9iYWNrdHJrID0gMTsKKyAgICB2YXIgbGV4X2RlZmF1
bHQgPSAyOworICAgIHZhciBsZXhfdHJhbnMgPSAzOworICAgIHZhciBsZXhfY2hlY2sgPSA0Owor
ICAgIGlmICghdGJsLmxleF9kZWZhdWx0KSB7CisgICAgICAgIHRibC5sZXhfYmFzZSA9IGNhbWxf
bGV4X2FycmF5KHRibFtsZXhfYmFzZV0pOworICAgICAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1s
X2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTsKKyAgICAgICAgdGJsLmxleF9jaGVjayA9IGNh
bWxfbGV4X2FycmF5KHRibFtsZXhfY2hlY2tdKTsKKyAgICAgICAgdGJsLmxleF90cmFucyA9IGNh
bWxfbGV4X2FycmF5KHRibFtsZXhfdHJhbnNdKTsKKyAgICAgICAgdGJsLmxleF9kZWZhdWx0ID0g
Y2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7CisgICAgfQorICAgIHZhciBjOworICAg
IHZhciBzdGF0ZSA9IHN0YXJ0X3N0YXRlOworICAgIC8vdmFyIGJ1ZmZlciA9IGJ5dGVzX29mX3N0
cmluZyhsZXhidWZbbGV4X2J1ZmZlcl0pOworICAgIHZhciBidWZmZXIgPSBsZXhidWZbbGV4X2J1
ZmZlcl07CisgICAgaWYgKHN0YXRlID49IDApIHsKKyAgICAgICAgLyogRmlyc3QgZW50cnkgKi8K
KyAgICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBs
ZXhidWZbbGV4X2N1cnJfcG9zXTsKKyAgICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAt
MTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICov
CisgICAgICAgIHN0YXRlID0gLXN0YXRlIC0gMTsKKyAgICB9CisgICAgZm9yICg7OykgeworICAg
ICAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQg
c3RhdGUgKi8KKyAgICAgICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdOworICAgICAg
ICBpZiAoYmFzZSA8IDApCisgICAgICAgICAgICByZXR1cm4gLWJhc2UgLSAxOworICAgICAgICAv
KiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqLworICAgICAgICB2YXIgYmFja3RyayA9
IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07CisgICAgICAgIGlmIChiYWNrdHJrID49IDApIHsKKyAg
ICAgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107Cisg
ICAgICAgICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7CisgICAgICAgIH0K
KyAgICAgICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi8KKyAgICAgICAgaWYgKGxleGJ1
ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pIHsKKyAgICAgICAgICAg
IGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PT0gMCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gLXN0YXRlIC0gMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjID0gMjU2
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogUmVhZCBuZXh0IGlu
cHV0IGNoYXIgKi8KKyAgICAgICAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11d
OworICAgICAgICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10rKzsKKyAgICAgICAgfQorICAgICAg
ICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqLworICAgICAgICBpZiAodGJsLmxleF9jaGVja1ti
YXNlICsgY10gPT09IHN0YXRlKSB7CisgICAgICAgICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNb
YmFzZSArIGNdOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3RhdGUg
PSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdOworICAgICAgICB9CisgICAgICAgIC8qIElmIG5vIHRy
YW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi8K
KyAgICAgICAgaWYgKHN0YXRlIDwgMCkgeworICAgICAgICAgICAgbGV4YnVmW2xleF9jdXJyX3Bv
c10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTsKKyAgICAgICAgICAgIGlmIChsZXhidWZbbGV4X2xh
c3RfYWN0aW9uXSA9PSAtMSkKKyAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25k
aXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzCisgICAgICAgICAgICAg
Y29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFi
b3ZlKQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoYyA9PSAyNTYpCisgICAgICAg
ICAgICAgICAgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwOworICAgICAgICB9CisgICAgfQor
fQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisv
KiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovCisvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKgorICogcyAt
PiBMZXhpbmcubGV4X3RhYmxlcy5sZXhfY29kZQorICogbWVtIC0+IExleGluZy5sZXhidWYubGV4
X21lbSAoKiBpbnQgYXJyYXkgKikKKyAqLyAgICAgICAgICAKKyAgICAgICAgICAKK2Z1bmN0aW9u
IGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3BvcykgeworICAgIGZvciAoOzspIHsK
KyAgICAgICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsKKyAgICAgICAgaSsrOworICAgICAg
ICBpZiAoZHN0ID09IDB4ZmYpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBzcmMg
PSBzLmNoYXJDb2RlQXQoaSk7CisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKHNyYyA9PSAweGZm
KQorICAgICAgICAgICAgbWVtW2RzdF0gPSBjdXJyX3BvczsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbWVtW2RzdF0gPSBtZW1bc3JjXTsKKyAgICB9Cit9CisKKworLyoqCisgKiBzIC0+IExl
eGluZy5sZXhfdGFibGVzLmxleF9jb2RlCisgKiBtZW0gLT4gTGV4aW5nLmxleGJ1Zi5sZXhfbWVt
ICgqIGludCBhcnJheSAqKQorICovCisgIAorZnVuY3Rpb24gY2FtbF9sZXhfcnVuX3RhZyhzLCBp
LCBtZW0pIHsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQo
aSk7CisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKGRzdCA9PSAweGZmKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOworICAgICAgICBpKys7
CisgICAgICAgIGlmIChzcmMgPT0gMHhmZikKKyAgICAgICAgICAgIG1lbVtkc3RdID0gLTE7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbVtkc3RdID0gbWVtW3NyY107CisgICAgfQorfQor
LyoqCisgKiBleHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhi
dWYgLT4gaW50ID0gImNhbWxfbmV3X2xleF9lbmdpbmUiCisgKiBAcGFyYW0gdGJsCisgKiBAcGFy
YW0gc3RhcnRfc3RhdGUKKyAqIEBwYXJhbSBsZXhidWYKKyAqIEByZXR1cm5zIHthbnl9CisgKi8K
K2Z1bmN0aW9uICQkY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYp
IHsKKyAgICAvLyBMZXhpbmcubGV4YnVmCisgICAgdmFyIGxleF9idWZmZXIgPSAxOworICAgIHZh
ciBsZXhfYnVmZmVyX2xlbiA9IDI7CisgICAgdmFyIGxleF9zdGFydF9wb3MgPSA0OworICAgIHZh
ciBsZXhfY3Vycl9wb3MgPSA1OworICAgIHZhciBsZXhfbGFzdF9wb3MgPSA2OworICAgIHZhciBs
ZXhfbGFzdF9hY3Rpb24gPSA3OworICAgIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA4OworICAgIHZh
ciBsZXhfbWVtID0gOTsKKyAgICAvLyBMZXhpbmcubGV4X3RhYmxlcworICAgIHZhciBsZXhfYmFz
ZSA9IDA7CisgICAgdmFyIGxleF9iYWNrdHJrID0gMTsKKyAgICB2YXIgbGV4X2RlZmF1bHQgPSAy
OworICAgIHZhciBsZXhfdHJhbnMgPSAzOworICAgIHZhciBsZXhfY2hlY2sgPSA0OworICAgIHZh
ciBsZXhfYmFzZV9jb2RlID0gNTsKKyAgICB2YXIgbGV4X2JhY2t0cmtfY29kZSA9IDY7CisgICAg
dmFyIGxleF9kZWZhdWx0X2NvZGUgPSA3OworICAgIHZhciBsZXhfdHJhbnNfY29kZSA9IDg7Cisg
ICAgdmFyIGxleF9jaGVja19jb2RlID0gOTsKKyAgICB2YXIgbGV4X2NvZGUgPSAxMDsKKyAgICBp
ZiAoIXRibC5sZXhfZGVmYXVsdCkgeworICAgICAgICB0YmwubGV4X2Jhc2UgPSBjYW1sX2xleF9h
cnJheSh0YmxbbGV4X2Jhc2VdKTsKKyAgICAgICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhf
YXJyYXkodGJsW2xleF9iYWNrdHJrXSk7CisgICAgICAgIHRibC5sZXhfY2hlY2sgPSBjYW1sX2xl
eF9hcnJheSh0YmxbbGV4X2NoZWNrXSk7CisgICAgICAgIHRibC5sZXhfdHJhbnMgPSBjYW1sX2xl
eF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7CisgICAgICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxf
bGV4X2FycmF5KHRibFtsZXhfZGVmYXVsdF0pOworICAgIH0KKyAgICBpZiAoIXRibC5sZXhfZGVm
YXVsdF9jb2RlKSB7CisgICAgICAgIHRibC5sZXhfYmFzZV9jb2RlID0gY2FtbF9sZXhfYXJyYXko
dGJsW2xleF9iYXNlX2NvZGVdKTsKKyAgICAgICAgdGJsLmxleF9iYWNrdHJrX2NvZGUgPSBjYW1s
X2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtfY29kZV0pOworICAgICAgICB0YmwubGV4X2NoZWNr
X2NvZGUgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2NoZWNrX2NvZGVdKTsKKyAgICAgICAgdGJs
LmxleF90cmFuc19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF90cmFuc19jb2RlXSk7Cisg
ICAgICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZh
dWx0X2NvZGVdKTsKKyAgICB9CisgICAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB7CisgICAg
ICAgIC8vdGJsLmxleF9jb2RlID0gY2FtbF9ieXRlc19vZl9zdHJpbmcodGJsW2xleF9jb2RlXSk7
CisgICAgICAgIHRibC5sZXhfY29kZSA9ICh0YmxbbGV4X2NvZGVdKTsKKyAgICB9CisgICAgdmFy
IGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7CisgICAgLy92YXIgYnVmZmVyID0gY2FtbF9ieXRlc19v
Zl9zdHJpbmcobGV4YnVmW2xleF9idWZmZXJdKTsKKyAgICB2YXIgYnVmZmVyID0gbGV4YnVmW2xl
eF9idWZmZXJdOworICAgIGlmIChzdGF0ZSA+PSAwKSB7CisgICAgICAgIC8qIEZpcnN0IGVudHJ5
ICovCisgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3Nd
ID0gbGV4YnVmW2xleF9jdXJyX3Bvc107CisgICAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25d
ID0gLTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmls
bCAqLworICAgICAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7CisgICAgfQorICAgIGZvciAoOzspIHsK
KyAgICAgICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJy
ZW50IHN0YXRlICovCisgICAgICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTsKKyAg
ICAgICAgaWYgKGJhc2UgPCAwKSB7CisgICAgICAgICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9i
YXNlX2NvZGVbc3RhdGVdOworICAgICAgICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2Nv
ZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTsKKyAgICAgICAgICAgIHJldHVybiAtYmFzZSAt
IDE7CisgICAgICAgIH0KKyAgICAgICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQg
Ki8KKyAgICAgICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdOworICAgICAg
ICBpZiAoYmFja3RyayA+PSAwKSB7CisgICAgICAgICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9i
YWNrdHJrX2NvZGVbc3RhdGVdOworICAgICAgICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4
X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTsKKyAgICAgICAgICAgIGxleGJ1ZltsZXhf
bGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107CisgICAgICAgICAgICBsZXhidWZbbGV4
X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7CisgICAgICAgIH0KKyAgICAgICAgLyogU2VlIGlmIHdl
IG5lZWQgYSByZWZpbGwgKi8KKyAgICAgICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxl
eGJ1ZltsZXhfYnVmZmVyX2xlbl0pIHsKKyAgICAgICAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9y
ZWFjaGVkXSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtc3RhdGUgLSAxOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGMgPSAyNTY7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqLworICAgICAgICAg
ICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07CisgICAgICAgICAgICBsZXhidWZb
bGV4X2N1cnJfcG9zXSsrOworICAgICAgICB9CisgICAgICAgIC8qIERldGVybWluZSBuZXh0IHN0
YXRlICovCisgICAgICAgIHZhciBwc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgaWYgKHRibC5sZXhf
Y2hlY2tbYmFzZSArIGNdID09IHN0YXRlKQorICAgICAgICAgICAgc3RhdGUgPSB0YmwubGV4X3Ry
YW5zW2Jhc2UgKyBjXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RhdGUgPSB0YmwubGV4
X2RlZmF1bHRbc3RhdGVdOworICAgICAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hh
ciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovCisgICAgICAgIGlmIChzdGF0ZSA8
IDApIHsKKyAgICAgICAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0
X3Bvc107CisgICAgICAgICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpCisg
ICAgICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1l
bW9yeSBtb3ZlcyAqLworICAgICAgICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9j
b2RlW3BzdGF0ZV0sIHBjX29mZjsKKyAgICAgICAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVb
YmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKQorICAgICAgICAgICAgICAgIHBjX29mZiA9IHRibC5s
ZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdOworICAgICAgICAg
ICAgaWYgKHBjX29mZiA+IDApCisgICAgICAgICAgICAgICAgY2FtbF9sZXhfcnVuX21lbSh0Ymwu
bGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7
CisgICAgICAgICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0Yg
cHNldWRvLWNoYXJhY3RlciB3YXMKKyAgICAgICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21h
dG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpCisgICAgICAgICAgICAgKi8K
KyAgICAgICAgICAgIGlmIChjID09IDI1NikKKyAgICAgICAgICAgICAgICBsZXhidWZbbGV4X2Vv
Zl9yZWFjaGVkXSA9IDA7CisgICAgICAgIH0KKyAgICB9Cit9CisKKzsKKworZnVuY3Rpb24gY2Ft
bF9sZXhfZW5naW5lKHByaW0sIHByaW0kMSwgcHJpbSQyKSB7CisgIHJldHVybiAkJGNhbWxfbGV4
X2VuZ2luZShwcmltLCBwcmltJDEsIHByaW0kMik7Cit9CisKK2Z1bmN0aW9uIGNhbWxfbmV3X2xl
eF9lbmdpbmUocHJpbSwgcHJpbSQxLCBwcmltJDIpIHsKKyAgcmV0dXJuICQkY2FtbF9uZXdfbGV4
X2VuZ2luZShwcmltLCBwcmltJDEsIHByaW0kMik7Cit9CisKK2V4cG9ydHMuZmFpbCAgICAgICAg
ICAgICAgICA9IGZhaWw7CitleHBvcnRzLmNhbWxfbGV4X2VuZ2luZSAgICAgPSBjYW1sX2xleF9l
bmdpbmU7CitleHBvcnRzLmNhbWxfbmV3X2xleF9lbmdpbmUgPSBjYW1sX25ld19sZXhfZW5naW5l
OworLyogIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9sZXhlci5q
cyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5
WydjYW1sX29iaiddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8v
Ly8vLy8gc3RhcnQgb2YgY2FtbF9vYmouanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFy
IEJsb2NrICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ibG9jayIpOwordmFyIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIp
OworCitmdW5jdGlvbiBjYW1sX29ial9kdXAoeCkgeworICB2YXIgbGVuID0geC5sZW5ndGg7Cisg
IHZhciB2ID0gbmV3IEFycmF5KGxlbik7CisgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVu
IC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7CisgICAgdltpXSA9IHhbaV07CisgIH0KKyAg
di50YWcgPSB4LnRhZyB8IDA7CisgIHJldHVybiB2OworfQorCitmdW5jdGlvbiBjYW1sX29ial90
cnVuY2F0ZSh4LCBuZXdfc2l6ZSkgeworICB2YXIgbGVuID0geC5sZW5ndGg7CisgIGlmIChuZXdf
c2l6ZSA8PSAwIHx8IG5ld19zaXplID4gbGVuKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIk9iai50
cnVuY2F0ZSIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIGlmIChsZW4gIT09IG5ld19zaXplKSB7
CisgICAgZm9yKHZhciBpID0gbmV3X3NpemUgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0g
aV9maW5pc2g7ICsraSl7CisgICAgICB4W2ldID0gMDsKKyAgICB9CisgICAgeC5sZW5ndGggPSBu
ZXdfc2l6ZTsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHJldHVy
biAwOworICB9Cit9CisKK2Z1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQoeCkgeworICBy
ZXR1cm4gQmxvY2suX18oMjUwLCBbeF0pOworfQorCitmdW5jdGlvbiBjYW1sX3VwZGF0ZV9kdW1t
eSh4LCB5KSB7CisgIHZhciBsZW4gPSB5Lmxlbmd0aDsKKyAgZm9yKHZhciBpID0gMCAsaV9maW5p
c2ggPSBsZW4gLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKKyAgICB4W2ldID0geVtpXTsK
KyAgfQorICB2YXIgeV90YWcgPSB5LnRhZyB8IDA7CisgIGlmICh5X3RhZyAhPT0gMCkgeworICAg
IHgudGFnID0geV90YWc7CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX2ludF9jb21wYXJlKHgsIHkpIHsK
KyAgaWYgKHggPCB5KSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2UgaWYgKHggPT09IHkp
IHsKKyAgICByZXR1cm4gMDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMTsKKyAgfQorfQor
CitmdW5jdGlvbiBjYW1sX2NvbXBhcmUoX2EsIF9iKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2
YXIgYiA9IF9iOworICAgIHZhciBhID0gX2E7CisgICAgaWYgKHR5cGVvZiBhID09PSAic3RyaW5n
IikgeworICAgICAgdmFyIHggPSBhOworICAgICAgdmFyIHkgPSBiOworICAgICAgaWYgKHggPCB5
KSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHggPT09IHkp
IHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGVvZiBhID09PSAibnVtYmVy
IikgeworICAgICAgcmV0dXJuIGNhbWxfaW50X2NvbXBhcmUoYSwgYik7CisgICAgfQorICAgIGVs
c2UgaWYgKHR5cGVvZiBhID09PSAiYm9vbGVhbiIgfHwgdHlwZW9mIGEgPT09ICJudWxsIiB8fCB0
eXBlb2YgYSA9PT0gInVuZGVmaW5lZCIpIHsKKyAgICAgIHZhciB4JDEgPSBhOworICAgICAgdmFy
IHkkMSA9IGI7CisgICAgICBpZiAoeCQxID09PSB5JDEpIHsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICB9CisgICAgICBlbHNlIGlmICh4JDEgPCB5JDEpIHsKKyAgICAgICAgcmV0dXJuIC0xOwor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAxOworICAgICAgfQorICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHZhciB0YWdfYSA9IGEudGFnIHwgMDsKKyAgICAgIHZhciB0YWdf
YiA9IGIudGFnIHwgMDsKKyAgICAgIGlmICh0YWdfYSA9PT0gMjUwKSB7CisgICAgICAgIF9hID0g
YVswXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKHRhZ19iID09PSAyNTApIHsKKyAgICAgICAgX2IgPSBiWzBdOworICAgICAgICBjb250aW51
ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSBpZiAodGFnX2EgPT09IDI0OCkgewor
ICAgICAgICByZXR1cm4gY2FtbF9pbnRfY29tcGFyZShhWzFdLCBiWzFdKTsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKHRhZ19hID09PSAyNTEpIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAg
ICAgICAiZXF1YWw6IGFic3RyYWN0IHZhbHVlIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKHRhZ19hICE9PSB0YWdfYikgeworICAgICAgICBpZiAodGFnX2EgPCB0YWdf
YikgeworICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHZhciBsZW5fYSA9IGEubGVuZ3RoOworICAgICAgICB2YXIgbGVuX2IgPSBiLmxlbmd0aDsK
KyAgICAgICAgaWYgKGxlbl9hID09PSBsZW5fYikgeworICAgICAgICAgIHZhciBhJDEgPSBhOwor
ICAgICAgICAgIHZhciBiJDEgPSBiOworICAgICAgICAgIHZhciBfaSA9IDA7CisgICAgICAgICAg
dmFyIHNhbWVfbGVuZ3RoID0gbGVuX2E7CisgICAgICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAg
ICAgICAgdmFyIGkgPSBfaTsKKyAgICAgICAgICAgIGlmIChpID09PSBzYW1lX2xlbmd0aCkgewor
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICB2YXIgcmVzID0gY2FtbF9jb21wYXJlKGEkMVtpXSwgYiQxW2ldKTsK
KyAgICAgICAgICAgICAgaWYgKHJlcyAhPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBy
ZXM7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmIChsZW5fYSA8IGxlbl9iKSB7CisgICAgICAgICAgdmFy
IGEkMiA9IGE7CisgICAgICAgICAgdmFyIGIkMiA9IGI7CisgICAgICAgICAgdmFyIF9pJDEgPSAw
OworICAgICAgICAgIHZhciBzaG9ydF9sZW5ndGggPSBsZW5fYTsKKyAgICAgICAgICB3aGlsZSh0
cnVlKSB7CisgICAgICAgICAgICB2YXIgaSQxID0gX2kkMTsKKyAgICAgICAgICAgIGlmIChpJDEg
PT09IHNob3J0X2xlbmd0aCkgeworICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIHJlcyQxID0gY2FtbF9j
b21wYXJlKGEkMltpJDFdLCBiJDJbaSQxXSk7CisgICAgICAgICAgICAgIGlmIChyZXMkMSAhPT0g
MCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXMkMTsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfaSQxID0gaSQxICsgMSB8IDA7Cisg
ICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICB2YXIgYSQzID0gYTsKKyAgICAgICAgICB2YXIgYiQzID0gYjsKKyAgICAg
ICAgICB2YXIgX2kkMiA9IDA7CisgICAgICAgICAgdmFyIHNob3J0X2xlbmd0aCQxID0gbGVuX2I7
CisgICAgICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICAgICAgdmFyIGkkMiA9IF9pJDI7Cisg
ICAgICAgICAgICBpZiAoaSQyID09PSBzaG9ydF9sZW5ndGgkMSkgeworICAgICAgICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICB2YXIgcmVzJDIgPSBjYW1sX2NvbXBhcmUoYSQzW2kkMl0sIGIkM1tpJDJdKTsKKyAgICAgICAg
ICAgICAgaWYgKHJlcyQyICE9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlcyQyOwor
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9p
JDIgPSBpJDIgKyAxIHwgMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9OworICAg
ICAgICB9CisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBjYW1sX2VxdWFsKF9h
LCBfYikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIGIgPSBfYjsKKyAgICB2YXIgYSA9IF9h
OworICAgIGlmIChhID09PSBiKSB7CisgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgfQor
ICAgIGVsc2UgaWYgKHR5cGVvZiBhID09PSAic3RyaW5nIiB8fCB0eXBlb2YgYSA9PT0gIm51bWJl
ciIgfHwgdHlwZW9mIGEgPT09ICJib29sZWFuIiB8fCB0eXBlb2YgYSA9PT0gInVuZGVmaW5lZCIg
fHwgdHlwZW9mIGEgPT09ICJudWxsIikgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgdGFnX2EgPSBhLnRhZyB8IDA7CisgICAgICB2YXIg
dGFnX2IgPSBiLnRhZyB8IDA7CisgICAgICBpZiAodGFnX2EgPT09IDI1MCkgeworICAgICAgICBf
YSA9IGFbMF07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBl
bHNlIGlmICh0YWdfYiA9PT0gMjUwKSB7CisgICAgICAgIF9iID0gYlswXTsKKyAgICAgICAgY29u
dGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHRhZ19hID09PSAyNDgp
IHsKKyAgICAgICAgcmV0dXJuICsoYVsxXSA9PT0gYlsxXSk7CisgICAgICB9CisgICAgICBlbHNl
IGlmICh0YWdfYSA9PT0gMjUxKSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAgImVx
dWFsOiBhYnN0cmFjdCB2YWx1ZSIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNl
IGlmICh0YWdfYSAhPT0gdGFnX2IpIHsKKyAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgbGVuX2EgPSBhLmxlbmd0aDsKKyAgICAg
ICAgdmFyIGxlbl9iID0gYi5sZW5ndGg7CisgICAgICAgIGlmIChsZW5fYSA9PT0gbGVuX2IpIHsK
KyAgICAgICAgICB2YXIgYSQxID0gYTsKKyAgICAgICAgICB2YXIgYiQxID0gYjsKKyAgICAgICAg
ICB2YXIgX2kgPSAwOworICAgICAgICAgIHZhciBzYW1lX2xlbmd0aCA9IGxlbl9hOworICAgICAg
ICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgICAgIHZhciBpID0gX2k7CisgICAgICAgICAgICBp
ZiAoaSA9PT0gc2FtZV9sZW5ndGgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8x
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2FtbF9lcXVhbChhJDFbaV0s
IGIkMVtpXSkpIHsKKyAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVy
biAvKiBmYWxzZSAqLzA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1
bmN0aW9uIGNhbWxfbm90ZXF1YWwoYSwgYikgeworICByZXR1cm4gMSAtIGNhbWxfZXF1YWwoYSwg
Yik7Cit9CisKK2Z1bmN0aW9uIGNhbWxfZ3JlYXRlcmVxdWFsKGEsIGIpIHsKKyAgcmV0dXJuICso
Y2FtbF9jb21wYXJlKGEsIGIpID49IDApOworfQorCitmdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFu
KGEsIGIpIHsKKyAgcmV0dXJuICsoY2FtbF9jb21wYXJlKGEsIGIpID4gMCk7Cit9CisKK2Z1bmN0
aW9uIGNhbWxfbGVzc2VxdWFsKGEsIGIpIHsKKyAgcmV0dXJuICsoY2FtbF9jb21wYXJlKGEsIGIp
IDw9IDApOworfQorCitmdW5jdGlvbiBjYW1sX2xlc3N0aGFuKGEsIGIpIHsKKyAgcmV0dXJuICso
Y2FtbF9jb21wYXJlKGEsIGIpIDwgMCk7Cit9CisKK3ZhciBjYW1sX2ludDMyX2NvbXBhcmUgPSBj
YW1sX2ludF9jb21wYXJlOworCit2YXIgY2FtbF9uYXRpdmVpbnRfY29tcGFyZSA9IGNhbWxfaW50
X2NvbXBhcmU7CisKK2V4cG9ydHMuY2FtbF9vYmpfZHVwICAgICAgICAgICA9IGNhbWxfb2JqX2R1
cDsKK2V4cG9ydHMuY2FtbF9vYmpfdHJ1bmNhdGUgICAgICA9IGNhbWxfb2JqX3RydW5jYXRlOwor
ZXhwb3J0cy5jYW1sX2xhenlfbWFrZV9mb3J3YXJkID0gY2FtbF9sYXp5X21ha2VfZm9yd2FyZDsK
K2V4cG9ydHMuY2FtbF91cGRhdGVfZHVtbXkgICAgICA9IGNhbWxfdXBkYXRlX2R1bW15OworZXhw
b3J0cy5jYW1sX2ludF9jb21wYXJlICAgICAgID0gY2FtbF9pbnRfY29tcGFyZTsKK2V4cG9ydHMu
Y2FtbF9pbnQzMl9jb21wYXJlICAgICA9IGNhbWxfaW50MzJfY29tcGFyZTsKK2V4cG9ydHMuY2Ft
bF9uYXRpdmVpbnRfY29tcGFyZSA9IGNhbWxfbmF0aXZlaW50X2NvbXBhcmU7CitleHBvcnRzLmNh
bWxfY29tcGFyZSAgICAgICAgICAgPSBjYW1sX2NvbXBhcmU7CitleHBvcnRzLmNhbWxfZXF1YWwg
ICAgICAgICAgICAgPSBjYW1sX2VxdWFsOworZXhwb3J0cy5jYW1sX25vdGVxdWFsICAgICAgICAg
ID0gY2FtbF9ub3RlcXVhbDsKK2V4cG9ydHMuY2FtbF9ncmVhdGVyZXF1YWwgICAgICA9IGNhbWxf
Z3JlYXRlcmVxdWFsOworZXhwb3J0cy5jYW1sX2dyZWF0ZXJ0aGFuICAgICAgID0gY2FtbF9ncmVh
dGVydGhhbjsKK2V4cG9ydHMuY2FtbF9sZXNzdGhhbiAgICAgICAgICA9IGNhbWxfbGVzc3RoYW47
CitleHBvcnRzLmNhbWxfbGVzc2VxdWFsICAgICAgICAgPSBjYW1sX2xlc3NlcXVhbDsKKy8qIE5v
IHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF9vYmouanMgLy8vLy8vLy8KK8Kg
IMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2FtbF9vbyddID0g
ZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Yg
Y2FtbF9vby5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9hcnJheSAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKwordmFyIGNh
bWxfbWV0aG9kc19jYWNoZSA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QoMTAwMCwgMCk7CisK
K2Z1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2Qob2JqLCB0YWcsIGNhY2hlaWQpIHsKKyAg
dmFyIG1ldGhzID0gb2JqWzBdOworICB2YXIgb2ZmcyA9IGNhbWxfbWV0aG9kc19jYWNoZVtjYWNo
ZWlkXTsKKyAgaWYgKG1ldGhzW29mZnNdID09PSB0YWcpIHsKKyAgICByZXR1cm4gbWV0aHNbb2Zm
cyAtIDEgfCAwXTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgYXV4ID0gZnVuY3Rpb24gKF9pKSB7
CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHZhciBpID0gX2k7CisgICAgICAgIGlmIChp
IDwgMykgeworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAiY2FtbF9vby5tbCIsCisgICAgICAgICAgICAgICAgICA1NCwKKyAgICAgICAgICAg
ICAgICAgIDIwCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICBdOworICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYgKG1ldGhzW2ldID09PSB0YWcpIHsKKyAgICAgICAgICBjYW1sX21l
dGhvZHNfY2FjaGVbY2FjaGVpZF0gPSBpOworICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIF9pID0gaSAtIDIgfCAwOworICAgICAgICAgIGNv
bnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHJl
dHVybiBtZXRoc1thdXgoKG1ldGhzWzBdIDw8IDEpICsgMSB8IDApIC0gMSB8IDBdOworICB9Cit9
CisKK2V4cG9ydHMuY2FtbF9nZXRfcHVibGljX21ldGhvZCA9IGNhbWxfZ2V0X3B1YmxpY19tZXRo
b2Q7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNhbWxfb28uanMgLy8v
Ly8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY2Ft
bF9wYXJzZXInXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8v
Ly8vIHN0YXJ0IG9mIGNhbWxfcGFyc2VyLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKKwor
CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAg
ICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K
Ky8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jp
c3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8q
ICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3Jt
YXRpcXVlIGV0ICAgKi8KKy8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
ICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi8KKy8qICB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKi8KKy8qICB0
aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNF
TlNFLiAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogJElk
OiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kgJCAqLworCisvKiBU
aGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2FtbHlhY2MgKi8KKwor
LyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovCisKKy8qKgorICogY2FtbF9sZXhfYXJyYXkoImFi
Y2QiKQorICogWzI1MTg1LCAyNTY5OV0KKyAqIEBwYXJhbSBzCisgKiBAcmV0dXJucyB7YW55W119
CisgKiBUT0RPOiBkdXBsaWNhdGVkIHdpdGggbW9kdWxlIHshQ2FtbF9sZXh9CisgKi8KK2Z1bmN0
aW9uIGNhbWxfbGV4X2FycmF5KHMpIHsKKyAgICB2YXIgbCA9IHMubGVuZ3RoIC8gMjsKKyAgICB2
YXIgYSA9IG5ldyBBcnJheShsKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykKKyAg
ICAgICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSAr
IDEpIDw8IDgpKSA8PCAxNiA+PiAxNjsKKyAgICByZXR1cm4gYTsKK30KKy8qKgorICogTm90ZSB0
aGF0IFRTIGVudW0gaXMgbm90IGZyaWVuZGx5IHRvIENsb3N1cmUgY29tcGlsZXIKKyAqIEBlbnVt
e251bWJlcn0KKyAqLwordmFyIEF1dG9tYXRhID0geworICAgIFNUQVJUOiAwLAorICAgIExPT1A6
IDYsCisgICAgVE9LRU5fUkVBRDogMSwKKyAgICBURVNUX1NISUZUOiA3LAorICAgIEVSUk9SX0RF
VEVDVEVEOiA1LAorICAgIFNISUZUOiA4LAorICAgIFNISUZUX1JFQ09WRVI6IDksCisgICAgU1RB
Q0tfR1JPV05fMTogMiwKKyAgICBSRURVQ0U6IDEwLAorICAgIFNUQUNLX0dST1dOXzI6IDMsCisg
ICAgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOiA0Cit9OworLyoqCisgKiBAZW51bXtudW1iZXJ9
CisgKi8KK3ZhciBSZXN1bHQgPSB7CisgICAgUkVBRF9UT0tFTjogMCwKKyAgICBSQUlTRV9QQVJT
RV9FUlJPUjogMSwKKyAgICBHUk9XX1NUQUNLU18xOiAyLAorICAgIEdST1dfU1RBQ0tTXzI6IDMs
CisgICAgQ09NUFVURV9TRU1BTlRJQ19BQ1RJT046IDQsCisgICAgQ0FMTF9FUlJPUl9GVU5DVElP
TjogNQorfTsKK3ZhciBQQVJTRVJfVFJBQ0UgPSBmYWxzZTsKKy8qKgorICogZXh0ZXJuYWwgcGFy
c2VfZW5naW5lIDogcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2VyX2lucHV0IC0+
IE9iai50IC0+IHBhcnNlcl9vdXRwdXQKKyAqIHBhcnNpbmcubWwKKyAqCisgKiB0eXBlIHBhcnNl
X3RhYmxlcyA9IHsKKyAqICAgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50KSBhcnJheQor
ICogICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7CisgKiAgIHRyYW5zbF9ibG9jayA6IGludCBh
cnJheTsKKyAqICAgbGhzIDogc3RyaW5nOworICogICBsZW4gOiBzdHJpbmc7CisgKiAgIGRlZnJl
ZCA6IHN0cmluZzsKKyAqICAgZGdvdG8gOiBzdHJpbmc7CisgKiAgIHNpbmRleCA6IHN0cmluZzsK
KyAqICAgcmluZGV4IDogc3RyaW5nOworICogICBnaW5kZXggOiBzdHJpbmc7CisgKiAgIHRhYmxl
c2l6ZSA6IGludDsKKyAqICAgdGFibGUgOiBzdHJpbmc7CisgKiAgIGNoZWNrIDogc3RyaW5nOwor
ICogICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0OworICogICBuYW1lc19jb25zdCA6
IHN0cmluZzsKKyAqICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcKKyAqIH0KKyAqCisgKiB0eXBlIHBh
cnNlcl9lbnYgPQorICogeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBT
dGF0ZXMgKikKKyAqICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1h
bnRpYyBhdHRyaWJ1dGVzICopCisgKiAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRp
b24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKQorICogIG11dGFibGUgc3ltYl9lbmRfc3Rh
Y2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopCisgKiAgbXV0YWJsZSBz
dGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopCisgKiAg
bXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVu
dCBwYXJzZSAqKQorICogIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExh
c3QgdG9rZW4gcmVhZCAqKQorICogIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAg
ICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKikKKyAqICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBw
b3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopCisgKiAg
bXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1
cnJlbnQgc3ltYm9sICopCisgKiAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAg
KCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKikKKyAqICBtdXRhYmxlIHJ1bGVf
bGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxl
ICopCisgKiAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1i
ZXIgdG8gcmVkdWNlIGJ5ICopCisgKiAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAg
ICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKQorICogIG11dGFibGUgc3RhdGUgOiBp
bnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKikKKyAq
ICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFn
IGZvciBwYXJzZV9lbmdpbmUgKikKKyAqCisgKiAgdHlwZSBwYXJzZXJfaW5wdXQgPQorICogICB8
IFN0YXJ0CisgKiAgIHwgVG9rZW5fcmVhZAorICogICB8IFN0YWNrc19ncm93bl8xCisgKiAgIHwg
U3RhY2tzX2dyb3duXzIKKyAqICAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQKKyAqICAgfCBF
cnJvcl9kZXRlY3RlZAorCisgKiBAcGFyYW0gdGFibGVzCisgKiBAcGFyYW0gZW52CisgKiBAcGFy
YW0gY21kCisgKiBAcGFyYW0gYXJnCisgKiBAcmV0dXJucyB7bnVtYmVyfQorICovCitmdW5jdGlv
biAkJGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcyAvKiBwYXJzZXJfdGFibGUgKi8sIGVudiAvKiBw
YXJzZXJfZW52ICovLCBjbWQgLyogcGFyc2VyX2lucHV0Ki8sIGFyZyAvKiBPYmoudCovKSB7Cisg
ICAgdmFyIEVSUkNPREUgPSAyNTY7CisgICAgLy92YXIgU1RBUlQgPSAwOworICAgIC8vdmFyIFRP
S0VOX1JFQUQgPSAxOworICAgIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjsKKyAgICAvL3ZhciBT
VEFDS1NfR1JPV05fMiA9IDM7CisgICAgLy92YXIgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEID0g
NDsKKyAgICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7CisgICAgLy92YXIgbG9vcCA9IDY7Cisg
ICAgLy92YXIgdGVzdHNoaWZ0ID0gNzsKKyAgICAvL3ZhciBzaGlmdCA9IDg7CisgICAgLy92YXIg
c2hpZnRfcmVjb3ZlciA9IDk7CisgICAgLy92YXIgcmVkdWNlID0gMTA7CisgICAgLy8gUGFyc2lu
Zy5wYXJzZXJfZW52CisgICAgdmFyIGVudl9zX3N0YWNrID0gMDsgLy8gYXJyYXkKKyAgICB2YXIg
ZW52X3Zfc3RhY2sgPSAxOyAvLyBhcnJheQorICAgIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9
IDI7IC8vIGFycmF5CisgICAgdmFyIGVudl9zeW1iX2VuZF9zdGFjayA9IDM7IC8vIGFycmF5Cisg
ICAgdmFyIGVudl9zdGFja3NpemUgPSA0OworICAgIHZhciBlbnZfc3RhY2tiYXNlID0gNTsKKyAg
ICB2YXIgZW52X2N1cnJfY2hhciA9IDY7CisgICAgdmFyIGVudl9sdmFsID0gNzsgLy8gT2JqLnQK
KyAgICB2YXIgZW52X3N5bWJfc3RhcnQgPSA4OyAvLyBwb3NpdGlvbgorICAgIHZhciBlbnZfc3lt
Yl9lbmQgPSA5OyAvLyBwb3NpdGlvbgorICAgIHZhciBlbnZfYXNwID0gMTA7CisgICAgdmFyIGVu
dl9ydWxlX2xlbiA9IDExOworICAgIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMjsKKyAgICB2YXIg
ZW52X3NwID0gMTM7CisgICAgdmFyIGVudl9zdGF0ZSA9IDE0OworICAgIHZhciBlbnZfZXJyZmxh
ZyA9IDE1OworICAgIC8vIFBhcnNpbmcucGFyc2VfdGFibGVzCisgICAgLy8gdmFyIF90YmxfYWN0
aW9ucyA9IDE7CisgICAgdmFyIHRibF90cmFuc2xfY29uc3QgPSAxOyAvLyBhcnJheQorICAgIHZh
ciB0YmxfdHJhbnNsX2Jsb2NrID0gMjsgLy8gYXJyYXkKKyAgICB2YXIgdGJsX2xocyA9IDM7Cisg
ICAgdmFyIHRibF9sZW4gPSA0OworICAgIHZhciB0YmxfZGVmcmVkID0gNTsKKyAgICB2YXIgdGJs
X2Rnb3RvID0gNjsKKyAgICB2YXIgdGJsX3NpbmRleCA9IDc7CisgICAgdmFyIHRibF9yaW5kZXgg
PSA4OworICAgIHZhciB0YmxfZ2luZGV4ID0gOTsKKyAgICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDEw
OworICAgIHZhciB0YmxfdGFibGUgPSAxMTsKKyAgICB2YXIgdGJsX2NoZWNrID0gMTI7CisgICAg
Ly8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDsKKyAgICAvLyB2YXIgX3RibF9uYW1lc19j
b25zdCA9IDE1OworICAgIC8vIHZhciBfdGJsX25hbWVzX2Jsb2NrID0gMTY7CisgICAgaWYgKCF0
YWJsZXMuZGdvdG8pIHsKKyAgICAgICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5KHRh
Ymxlc1t0YmxfZGVmcmVkXSk7CisgICAgICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJh
eSh0YWJsZXNbdGJsX3NpbmRleF0pOworICAgICAgICB0YWJsZXMuY2hlY2sgPSBjYW1sX2xleF9h
cnJheSh0YWJsZXNbdGJsX2NoZWNrXSk7CisgICAgICAgIHRhYmxlcy5yaW5kZXggPSBjYW1sX2xl
eF9hcnJheSh0YWJsZXNbdGJsX3JpbmRleF0pOworICAgICAgICB0YWJsZXMudGFibGUgPSBjYW1s
X2xleF9hcnJheSh0YWJsZXNbdGJsX3RhYmxlXSk7CisgICAgICAgIHRhYmxlcy5sZW4gPSBjYW1s
X2xleF9hcnJheSh0YWJsZXNbdGJsX2xlbl0pOworICAgICAgICB0YWJsZXMubGhzID0gY2FtbF9s
ZXhfYXJyYXkodGFibGVzW3RibF9saHNdKTsKKyAgICAgICAgdGFibGVzLmdpbmRleCA9IGNhbWxf
bGV4X2FycmF5KHRhYmxlc1t0YmxfZ2luZGV4XSk7CisgICAgICAgIHRhYmxlcy5kZ290byA9IGNh
bWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfZGdvdG9dKTsKKyAgICB9CisgICAgdmFyIHJlczsKKyAg
ICB2YXIgbiwgbjEsIG4yLCBzdGF0ZTE7CisgICAgLy8gUkVTVE9SRQorICAgIHZhciBzcCA9IGVu
dltlbnZfc3BdOworICAgIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdOworICAgIHZhciBlcnJm
bGFnID0gZW52W2Vudl9lcnJmbGFnXTsKKyAgICBleGl0OiBmb3IgKDs7KSB7CisgICAgICAgIC8v
Y29uc29sZS5lcnJvcigiU3RhdGUiLCBBdXRvbWF0YVtjbWRdKTsKKyAgICAgICAgc3dpdGNoIChj
bWQpIHsKKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuU1RBUlQ6CisgICAgICAgICAgICAgICAg
c3RhdGUgPSAwOworICAgICAgICAgICAgICAgIGVycmZsYWcgPSAwOworICAgICAgICAgICAgLy8g
RmFsbCB0aHJvdWdoCisgICAgICAgICAgICBjYXNlIEF1dG9tYXRhLkxPT1A6CisgICAgICAgICAg
ICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdOworICAgICAgICAgICAgICAgIGlmIChuICE9
IDApIHsKKyAgICAgICAgICAgICAgICAgICAgY21kID0gQXV0b21hdGEuUkVEVUNFOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGNtZCA9
IEF1dG9tYXRhLlRFU1RfU0hJRlQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXMgPSBSZXN1bHQuUkVBRF9UT0tFTjsKKyAg
ICAgICAgICAgICAgICBicmVhayBleGl0OworICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgY2Fs
bHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovCisgICAgICAgICAgICAvKiBzeW1iX3N0YXJ0IGFu
ZCBzeW1iX2VuZCAqLworICAgICAgICAgICAgY2FzZSBBdXRvbWF0YS5UT0tFTl9SRUFEOgorICAg
ICAgICAgICAgICAgIGlmICh0eXBlb2YgYXJnICE9PSAnbnVtYmVyJykgeworICAgICAgICAgICAg
ICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJn
LnRhZyB8IDAgLyogKyAxICovXTsKKyAgICAgICAgICAgICAgICAgICAgZW52W2Vudl9sdmFsXSA9
IGFyZ1swXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Nv
bnN0XVthcmcgLyogKyAxICovXTsKKyAgICAgICAgICAgICAgICAgICAgZW52W2Vudl9sdmFsXSA9
IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChQQVJTRVJfVFJBQ0Up
IHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiU3RhdGUgJWQsIHJlYWQgdG9r
ZW4iLCBzdGF0ZSwgYXJnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBGYWxs
IHRocm91Z2gKKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuVEVTVF9TSElGVDoKKyAgICAgICAg
ICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdOworICAgICAgICAgICAgICAgIG4yID0g
bjEgKyBlbnZbZW52X2N1cnJfY2hhcl07CisgICAgICAgICAgICAgICAgaWYgKG4xICE9IDAgJiYg
bjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAgICAgICAgICAg
ICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHsKKyAgICAgICAg
ICAgICAgICAgICAgY21kID0gQXV0b21hdGEuU0hJRlQ7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuMSA9IHRhYmxlcy5yaW5k
ZXhbc3RhdGVdOworICAgICAgICAgICAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07
CisgICAgICAgICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNb
dGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAgICAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9
PSBlbnZbZW52X2N1cnJfY2hhcl0pIHsKKyAgICAgICAgICAgICAgICAgICAgbiA9IHRhYmxlcy50
YWJsZVtuMl07CisgICAgICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLlJFRFVDRTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIChlcnJmbGFnIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0
LkNBTExfRVJST1JfRlVOQ1RJT047CisgICAgICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAg
ICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi8KKyAgICAgICAgICAg
IGNhc2UgQXV0b21hdGEuRVJST1JfREVURUNURUQ6CisgICAgICAgICAgICAgICAgaWYgKGVycmZs
YWcgPCAzKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmZsYWcgPSAzOworICAgICAgICAgICAg
ICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTEgPSBlbnZb
ZW52X3Nfc3RhY2tdW3NwIC8qICsgMSovXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG4xID0g
dGFibGVzLnNpbmRleFtzdGF0ZTFdOworICAgICAgICAgICAgICAgICAgICAgICAgbjIgPSBuMSAr
IEVSUkNPREU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAw
ICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLlNISUZUX1JFQ09WRVI7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Ag
PD0gZW52W2Vudl9zdGFja2Jhc2VdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUmVzdWx0LlJBSVNFX1BBUlNFX0VSUk9SOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNwLS07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuUkFJU0VfUEFSU0VfRVJST1I7CisgICAgICAg
ICAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqLworICAgICAg
ICAgICAgICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTsKKyAgICAgICAgICAgICAgICAg
ICAgY21kID0gQXV0b21hdGEuTE9PUDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICBj
YXNlIEF1dG9tYXRhLlNISUZUOgorICAgICAgICAgICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9
IC0xOworICAgICAgICAgICAgICAgIGlmIChlcnJmbGFnID4gMCkKKyAgICAgICAgICAgICAgICAg
ICAgZXJyZmxhZy0tOworICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICBj
YXNlIEF1dG9tYXRhLlNISUZUX1JFQ09WRVI6CisgICAgICAgICAgICAgICAgaWYgKFBBUlNFUl9U
UkFDRSkgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJTdGF0ZSAlZDogc2hp
ZnQgdG8gc3RhdGUgJWQiLCBzdGF0ZSwgdGFibGVzLnRhYmxlW24yXSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTsKKyAgICAgICAg
ICAgICAgICBzcCsrOworICAgICAgICAgICAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6
ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0LkdST1dfU1RBQ0tTXzE7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVz
IHRoZSBzdGFja3MgKi8KKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuU1RBQ0tfR1JPV05fMToK
KyAgICAgICAgICAgICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwIC8qICsgMSAqL10gPSBzdGF0ZTsK
KyAgICAgICAgICAgICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwIC8qICsgMSAqL10gPSBlbnZbZW52
X2x2YWxdOworICAgICAgICAgICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgLyog
KyAxICovXSA9IGVudltlbnZfc3ltYl9zdGFydF07CisgICAgICAgICAgICAgICAgZW52W2Vudl9z
eW1iX2VuZF9zdGFja11bc3AgLyogKyAxICovXSA9IGVudltlbnZfc3ltYl9lbmRdOworICAgICAg
ICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLkxPT1A7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlJFRFVDRToKKyAgICAgICAgICAgICAgICBpZiAoUEFS
U0VSX1RSQUNFKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlN0YXRlICVk
IDogcmVkdWNlIGJ5IHJ1bGUgJWQiLCBzdGF0ZSwgbik7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTsKKyAgICAgICAgICAgICAgICBlbnZb
ZW52X2FzcF0gPSBzcDsKKyAgICAgICAgICAgICAgICBlbnZbZW52X3J1bGVfbnVtYmVyXSA9IG47
CisgICAgICAgICAgICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtOworICAgICAgICAgICAgICAg
IHNwID0gc3AgLSBtICsgMTsKKyAgICAgICAgICAgICAgICBtID0gdGFibGVzLmxoc1tuXTsKKyAg
ICAgICAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwIC0gMV07IC8vCisgICAg
ICAgICAgICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dOworICAgICAgICAgICAgICAgIG4yID0g
bjEgKyBzdGF0ZTE7CisgICAgICAgICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBu
MiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKKyAgICAgICAgICAgICAgICAgICAgdGFibGVz
LmNoZWNrW24yXSA9PSBzdGF0ZTEpCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gdGFibGVz
LnRhYmxlW24yXTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gdGFibGVzLmRnb3RvW21dOworICAgICAgICAgICAgICAgIGlmIChzcCA+PSBlbnZbZW52
X3N0YWNrc2l6ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0LkdST1dfU1RB
Q0tTXzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICAvKiBUaGUgTUwgY29k
ZSByZXNpemVzIHRoZSBzdGFja3MgKi8KKyAgICAgICAgICAgIGNhc2UgQXV0b21hdGEuU1RBQ0tf
R1JPV05fMjoKKyAgICAgICAgICAgICAgICByZXMgPSBSZXN1bHQuQ09NUFVURV9TRU1BTlRJQ19B
Q1RJT047CisgICAgICAgICAgICAgICAgYnJlYWsgZXhpdDsKKyAgICAgICAgICAgIC8qIFRoZSBN
TCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi8KKyAgICAgICAgICAgIGNhc2UgQXV0
b21hdGEuU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOgorICAgICAgICAgICAgICAgIGVudltlbnZf
c19zdGFja11bc3AgLyogKyAxICovXSA9IHN0YXRlOworICAgICAgICAgICAgICAgIGVudltlbnZf
dl9zdGFja11bc3AgLyogKyAxKi9dID0gYXJnOworICAgICAgICAgICAgICAgIHZhciBhc3AgPSBl
bnZbZW52X2FzcF07CisgICAgICAgICAgICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3Ag
LyogKyAxKi9dID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwIC8qICsgMSovXTsKKyAgICAg
ICAgICAgICAgICBpZiAoc3AgPiBhc3ApIHsKKyAgICAgICAgICAgICAgICAgICAgLyogVGhpcyBp
cyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2Vu
ZC4gKi8KKyAgICAgICAgICAgICAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCAv
KiArIDEqL10gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgLyorIDEqL107CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLkxPT1A7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqLworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0LlJBSVNFX1BB
UlNFX0VSUk9SOworICAgICAgICB9CisgICAgfQorICAgIC8vIFNBVkUKKyAgICBlbnZbZW52X3Nw
XSA9IHNwOworICAgIGVudltlbnZfc3RhdGVdID0gc3RhdGU7CisgICAgZW52W2Vudl9lcnJmbGFn
XSA9IGVycmZsYWc7CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqCisgKiBleHRlcm5hbCBzZXRf
dHJhY2U6IGJvb2wgLT4gYm9vbCA9ICJjYW1sX3NldF9wYXJzZXJfdHJhY2UiCisgKiBwYXJzaW5n
Lm1sCisgKiBAcGFyYW0ge2Jvb2xlYW59CisgKiBAcmV0dXJucyB7Ym9vbGVhbn0KKyAqLworZnVu
Y3Rpb24gJCRjYW1sX3NldF9wYXJzZXJfdHJhY2UodikgeworICAgIHZhciBvbGQgPSBQQVJTRVJf
VFJBQ0U7CisgICAgUEFSU0VSX1RSQUNFID0gdjsKKyAgICByZXR1cm4gb2xkOworfQorCisKKzsK
KworZnVuY3Rpb24gY2FtbF9wYXJzZV9lbmdpbmUocHJpbSwgcHJpbSQxLCBwcmltJDIsIHByaW0k
MykgeworICByZXR1cm4gJCRjYW1sX3BhcnNlX2VuZ2luZShwcmltLCBwcmltJDEsIHByaW0kMiwg
cHJpbSQzKTsKK30KKworZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNlKHByaW0pIHsKKyAg
cmV0dXJuICQkY2FtbF9zZXRfcGFyc2VyX3RyYWNlKHByaW0pOworfQorCitleHBvcnRzLmNhbWxf
cGFyc2VfZW5naW5lICAgICA9IGNhbWxfcGFyc2VfZW5naW5lOworZXhwb3J0cy5jYW1sX3NldF9w
YXJzZXJfdHJhY2UgPSBjYW1sX3NldF9wYXJzZXJfdHJhY2U7CisvKiAgTm90IGEgcHVyZSBtb2R1
bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX3BhcnNlci5qcyAvLy8vLy8vLworwqAgwqAgcmV0
dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjYW1sX3N0cmluZyddID0gZnVu
Y3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgY2Ft
bF9zdHJpbmcuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwordmFyIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5j
dGlvbiBqc19zdHJpbmdfb2ZfY2hhcihwcmltKSB7CisgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJD
b2RlKHByaW0pOworfQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQocywgaSkgeworICBpZiAo
aSA+PSBzLmxlbmd0aCB8fCBpIDwgMCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJpbmRleCBvdXQg
b2YgYm91bmRzIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBzLmNoYXJD
b2RlQXQoaSk7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikgewor
ICBpZiAobGVuIDwgMCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJTdHJpbmcuY3JlYXRlIgorICAg
ICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBuZXcgQXJyYXkobGVuKTsKKyAgfQor
fQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikgeworICBpZiAoczEgPT09
IHMyKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgZWxzZSBpZiAoczEgPCBzMikgeworICAgIHJl
dHVybiAtMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMTsKKyAgfQorfQorCitmdW5jdGlv
biBjYW1sX2ZpbGxfc3RyaW5nKHMsIGksIGwsIGMpIHsKKyAgaWYgKGwgPiAwKSB7CisgICAgZm9y
KHZhciBrID0gaSAsa19maW5pc2ggPSAobCArIGkgfCAwKSAtIDEgfCAwOyBrIDw9IGtfZmluaXNo
OyArK2speworICAgICAgc1trXSA9IGM7CisgICAgfQorICAgIHJldHVybiAvKiAoKSAqLzA7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9ibGl0
X3N0cmluZyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7CisgIGlmIChsZW4gPiAwKSB7CisgICAgdmFy
IG9mZjEgPSBzMS5sZW5ndGggLSBpMSB8IDA7CisgICAgaWYgKGxlbiA8PSBvZmYxKSB7CisgICAg
ICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyAr
K2kpeworICAgICAgICBzMltpMiArIGkgfCAwXSA9IHMxLmNoYXJDb2RlQXQoaTEgKyBpIHwgMCk7
CisgICAgICB9CisgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIGZvcih2YXIgaSQxID0gMCAsaV9maW5pc2gkMSA9IG9mZjEgLSAxIHwgMDsgaSQxIDw9IGlf
ZmluaXNoJDE7ICsraSQxKXsKKyAgICAgICAgczJbaTIgKyBpJDEgfCAwXSA9IHMxLmNoYXJDb2Rl
QXQoaTEgKyBpJDEgfCAwKTsKKyAgICAgIH0KKyAgICAgIGZvcih2YXIgaSQyID0gb2ZmMSAsaV9m
aW5pc2gkMiA9IGxlbiAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gkMjsgKytpJDIpeworICAgICAg
ICBzMltpMiArIGkkMiB8IDBdID0gLyogIlwwMDAiICovMDsKKyAgICAgIH0KKyAgICAgIHJldHVy
biAvKiAoKSAqLzA7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9
CisKK2Z1bmN0aW9uIGNhbWxfYmxpdF9ieXRlcyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7CisgIGlm
IChsZW4gPiAwKSB7CisgICAgaWYgKHMxID09PSBzMikgeworICAgICAgdmFyIHMxJDEgPSBzMTsK
KyAgICAgIHZhciBpMSQxID0gaTE7CisgICAgICB2YXIgaTIkMSA9IGkyOworICAgICAgdmFyIGxl
biQxID0gbGVuOworICAgICAgaWYgKGkxJDEgPCBpMiQxKSB7CisgICAgICAgIHZhciByYW5nZV9h
ID0gKHMxJDEubGVuZ3RoIC0gaTIkMSB8IDApIC0gMSB8IDA7CisgICAgICAgIHZhciByYW5nZV9i
ID0gbGVuJDEgLSAxIHwgMDsKKyAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2VfYSA+IHJhbmdlX2Ig
PyByYW5nZV9iIDogcmFuZ2VfYTsKKyAgICAgICAgZm9yKHZhciBqID0gcmFuZ2U7IGogPj0gMDsg
LS1qKXsKKyAgICAgICAgICBzMSQxW2kyJDEgKyBqIHwgMF0gPSBzMSQxW2kxJDEgKyBqIHwgMF07
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0KKyAgICAgIGVs
c2UgaWYgKGkxJDEgPiBpMiQxKSB7CisgICAgICAgIHZhciByYW5nZV9hJDEgPSAoczEkMS5sZW5n
dGggLSBpMSQxIHwgMCkgLSAxIHwgMDsKKyAgICAgICAgdmFyIHJhbmdlX2IkMSA9IGxlbiQxIC0g
MSB8IDA7CisgICAgICAgIHZhciByYW5nZSQxID0gcmFuZ2VfYSQxID4gcmFuZ2VfYiQxID8gcmFu
Z2VfYiQxIDogcmFuZ2VfYSQxOworICAgICAgICBmb3IodmFyIGsgPSAwOyBrIDw9IHJhbmdlJDE7
ICsrayl7CisgICAgICAgICAgczEkMVtpMiQxICsgayB8IDBdID0gczEkMVtpMSQxICsgayB8IDBd
OworICAgICAgICB9CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgdmFyIG9mZjEgPSBzMS5sZW5ndGggLSBpMSB8IDA7CisgICAgICBpZiAobGVuIDw9IG9mZjEp
IHsKKyAgICAgICAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsZW4gLSAxIHwgMDsgaSA8PSBp
X2ZpbmlzaDsgKytpKXsKKyAgICAgICAgICBzMltpMiArIGkgfCAwXSA9IHMxW2kxICsgaSB8IDBd
OworICAgICAgICB9CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgZm9yKHZhciBpJDEgPSAwICxpX2ZpbmlzaCQxID0gb2ZmMSAtIDEgfCAw
OyBpJDEgPD0gaV9maW5pc2gkMTsgKytpJDEpeworICAgICAgICAgIHMyW2kyICsgaSQxIHwgMF0g
PSBzMVtpMSArIGkkMSB8IDBdOworICAgICAgICB9CisgICAgICAgIGZvcih2YXIgaSQyID0gb2Zm
MSAsaV9maW5pc2gkMiA9IGxlbiAtIDEgfCAwOyBpJDIgPD0gaV9maW5pc2gkMjsgKytpJDIpewor
ICAgICAgICAgIHMyW2kyICsgaSQyIHwgMF0gPSAvKiAiXDAwMCIgKi8wOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgfQorICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIGJ5dGVzX29mX3N0cmluZyhzKSB7Cisg
IHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4pOworICBmb3Io
dmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpewor
ICAgIHJlc1tpXSA9IHMuY2hhckNvZGVBdChpKTsKKyAgfQorICByZXR1cm4gcmVzOworfQorCitm
dW5jdGlvbiBieXRlc190b19zdHJpbmcoYSkgeworICB2YXIgYnl0ZXMgPSBhOworICB2YXIgaSA9
IDA7CisgIHZhciBsZW4gPSBhLmxlbmd0aDsKKyAgdmFyIHMgPSAiIjsKKyAgdmFyIHNfbGVuID0g
bGVuOworICBpZiAoaSA9PT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT09IGJ5dGVzLmxlbmd0
aCkgeworICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsYnl0ZXMpOwor
ICB9CisgIGVsc2UgeworICAgIHZhciBvZmZzZXQgPSAwOworICAgIHdoaWxlKHNfbGVuID4gMCkg
eworICAgICAgdmFyIG5leHQgPSBzX2xlbiA8IDEwMjQgPyBzX2xlbiA6IDEwMjQ7CisgICAgICB2
YXIgdG1wX2J5dGVzID0gbmV3IEFycmF5KG5leHQpOworICAgICAgY2FtbF9ibGl0X2J5dGVzKGJ5
dGVzLCBvZmZzZXQsIHRtcF9ieXRlcywgMCwgbmV4dCk7CisgICAgICBzID0gcyArIFN0cmluZy5m
cm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0bXBfYnl0ZXMpOworICAgICAgc19sZW4gPSBzX2xlbiAt
IG5leHQgfCAwOworICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICsgbmV4dCB8IDA7CisgICAgfTsKKyAg
ICByZXR1cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9jaGFyX2FycmF5
KGNoYXJzKSB7CisgIHZhciBsZW4gPSBjaGFycy5sZW5ndGg7CisgIHZhciBieXRlcyA9IG5ldyBB
cnJheShsZW4pOworICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9
IGlfZmluaXNoOyArK2kpeworICAgIGJ5dGVzW2ldID0gY2hhcnNbaV07CisgIH0KKyAgcmV0dXJu
IGJ5dGVzX3RvX3N0cmluZyhieXRlcyk7Cit9CisKK2Z1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxl
KGMpIHsKKyAgaWYgKGMgPiAzMSkgeworICAgIHJldHVybiArKGMgPCAxMjcpOworICB9CisgIGVs
c2UgeworICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gY2FtbF9z
dHJpbmdfZ2V0MTYocywgaSkgeworICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpICsgKHMuY2hhckNv
ZGVBdChpICsgMSB8IDApIDw8IDgpIHwgMDsKK30KKworZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0
MzIocywgaSkgeworICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgKyAocy5jaGFyQ29kZUF0KGkg
KyAxIHwgMCkgPDwgOCkgfCAwKSArIChzLmNoYXJDb2RlQXQoaSArIDIgfCAwKSA8PCAxNikgfCAw
KSArIChzLmNoYXJDb2RlQXQoaSArIDMgfCAwKSA8PCAyNCkgfCAwOworfQorCitmdW5jdGlvbiBn
ZXQocywgaSkgeworICBpZiAoaSA8IDAgfHwgaSA+PSBzLmxlbmd0aCkgeworICAgIHRocm93IFsK
KyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAg
ICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIgorICAgICAgICBdOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7CisgIH0KK30KKworZXhwb3J0cy5ieXRlc19vZl9z
dHJpbmcgICAgICAgICAgID0gYnl0ZXNfb2Zfc3RyaW5nOworZXhwb3J0cy5ieXRlc190b19zdHJp
bmcgICAgICAgICAgID0gYnl0ZXNfdG9fc3RyaW5nOworZXhwb3J0cy5jYW1sX2lzX3ByaW50YWJs
ZSAgICAgICAgID0gY2FtbF9pc19wcmludGFibGU7CitleHBvcnRzLmNhbWxfc3RyaW5nX29mX2No
YXJfYXJyYXkgPSBjYW1sX3N0cmluZ19vZl9jaGFyX2FycmF5OworZXhwb3J0cy5jYW1sX3N0cmlu
Z19nZXQgICAgICAgICAgID0gY2FtbF9zdHJpbmdfZ2V0OworZXhwb3J0cy5jYW1sX3N0cmluZ19j
b21wYXJlICAgICAgID0gY2FtbF9zdHJpbmdfY29tcGFyZTsKK2V4cG9ydHMuY2FtbF9jcmVhdGVf
c3RyaW5nICAgICAgICA9IGNhbWxfY3JlYXRlX3N0cmluZzsKK2V4cG9ydHMuY2FtbF9maWxsX3N0
cmluZyAgICAgICAgICA9IGNhbWxfZmlsbF9zdHJpbmc7CitleHBvcnRzLmNhbWxfYmxpdF9zdHJp
bmcgICAgICAgICAgPSBjYW1sX2JsaXRfc3RyaW5nOworZXhwb3J0cy5jYW1sX2JsaXRfYnl0ZXMg
ICAgICAgICAgID0gY2FtbF9ibGl0X2J5dGVzOworZXhwb3J0cy5jYW1sX3N0cmluZ19nZXQxNiAg
ICAgICAgID0gY2FtbF9zdHJpbmdfZ2V0MTY7CitleHBvcnRzLmNhbWxfc3RyaW5nX2dldDMyICAg
ICAgICAgPSBjYW1sX3N0cmluZ19nZXQzMjsKK2V4cG9ydHMuanNfc3RyaW5nX29mX2NoYXIgICAg
ICAgICA9IGpzX3N0cmluZ19vZl9jaGFyOworZXhwb3J0cy5nZXQgICAgICAgICAgICAgICAgICAg
ICAgID0gZ2V0OworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBjYW1sX3N0
cmluZy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3Jl
Z2lzdHJ5WydjYW1sX3V0aWxzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0g
e307CisvLy8vLy8vLyBzdGFydCBvZiBjYW1sX3V0aWxzLmpzIC8vLy8vLy8vCisndXNlIHN0cmlj
dCc7CisKKwordmFyIHJlcGVhdCA9ICggKFN0cmluZy5wcm90b3R5cGUucmVwZWF0ICYmIGZ1bmN0
aW9uIChjb3VudCxzZWxmKXtyZXR1cm4gc2VsZi5yZXBlYXQoY291bnQpfSkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oY291bnQg
LCBzZWxmKSB7CisgICAgICAgIGlmIChzZWxmLmxlbmd0aCA9PSAwIHx8IGNvdW50ID09IDApIHsK
KyAgICAgICAgICAgIHJldHVybiAnJzsKKyAgICAgICAgfQorICAgICAgICAvLyBFbnN1cmluZyBj
b3VudCBpcyBhIDMxLWJpdCBpbnRlZ2VyIGFsbG93cyB1cyB0byBoZWF2aWx5IG9wdGltaXplIHRo
ZQorICAgICAgICAvLyBtYWluIHBhcnQuIEJ1dCBhbnl3YXksIG1vc3QgY3VycmVudCAoQXVndXN0
IDIwMTQpIGJyb3dzZXJzIGNhbid0IGhhbmRsZQorICAgICAgICAvLyBzdHJpbmdzIDEgPDwgMjgg
Y2hhcnMgb3IgbG9uZ2VyLCBzbzoKKyAgICAgICAgaWYgKHNlbGYubGVuZ3RoICogY291bnQgPj0g
MSA8PCAyOCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3JlcGVhdCBjb3Vu
dCBtdXN0IG5vdCBvdmVyZmxvdyBtYXhpbXVtIHN0cmluZyBzaXplJyk7CisgICAgICAgIH0KKyAg
ICAgICAgdmFyIHJwdCA9ICcnOworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBpZiAo
KGNvdW50ICYgMSkgPT0gMSkgeworICAgICAgICAgICAgICAgIHJwdCArPSBzZWxmOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY291bnQgPj4+PSAxOworICAgICAgICAgICAgaWYgKGNvdW50
ID09IDApIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHNlbGYgKz0gc2VsZjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcnB0OworICAgIH0K
Kyk7CisKK2V4cG9ydHMucmVwZWF0ID0gcmVwZWF0OworLyogcmVwZWF0IE5vdCBhIHB1cmUgbW9k
dWxlICovCisvLy8vLy8vLyBlbmQgb2YgY2FtbF91dGlscy5qcyAvLy8vLy8vLworwqAgwqAgcmV0
dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydjaGFyJ10gPSBmdW5jdGlvbigp
IHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBjaGFyLmpzIC8v
Ly8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJl
cXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gY2hyKG4pIHsK
KyAgaWYgKG4gPCAwIHx8IG4gPiAyNTUpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQ2hhci5jaHIi
CisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG47CisgIH0KK30KKworZnVu
Y3Rpb24gZXNjYXBlZChjKSB7CisgIHZhciBleGl0ID0gMDsKKyAgaWYgKGMgPj0gNDApIHsKKyAg
ICBpZiAoYyAhPT0gOTIpIHsKKyAgICAgIGV4aXQgPSBjID49IDEyNyA/IDEgOiAyOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAiXFxcXCI7CisgICAgfQorICB9CisgIGVsc2UgaWYg
KGMgPj0gMzIpIHsKKyAgICBpZiAoYyA+PSAzOSkgeworICAgICAgcmV0dXJuICJcXCciOworICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgIGV4aXQgPSAyOworICAgIH0KKyAgfQorICBlbHNlIGlmIChj
ID49IDE0KSB7CisgICAgZXhpdCA9IDE7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChjKSB7
CisgICAgICBjYXNlIDggOiAKKyAgICAgICAgICByZXR1cm4gIlxcYiI7CisgICAgICBjYXNlIDkg
OiAKKyAgICAgICAgICByZXR1cm4gIlxcdCI7CisgICAgICBjYXNlIDEwIDogCisgICAgICAgICAg
cmV0dXJuICJcXG4iOworICAgICAgY2FzZSAwIDogCisgICAgICBjYXNlIDEgOiAKKyAgICAgIGNh
c2UgMiA6IAorICAgICAgY2FzZSAzIDogCisgICAgICBjYXNlIDQgOiAKKyAgICAgIGNhc2UgNSA6
IAorICAgICAgY2FzZSA2IDogCisgICAgICBjYXNlIDcgOiAKKyAgICAgIGNhc2UgMTEgOiAKKyAg
ICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICByZXR1cm4gIlxcciI7CisgICAgICAKKyAgICB9Cisg
IH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAgY2FzZSAxIDogCisgICAgICAgIHZhciBzID0gbmV3
IEFycmF5KDQpOworICAgICAgICBzWzBdID0gLyogIlxcIiAqLzkyOworICAgICAgICBzWzFdID0g
NDggKyAoYyAvIDEwMCB8IDApIHwgMDsKKyAgICAgICAgc1syXSA9IDQ4ICsgKGMgLyAxMCB8IDAp
ICUgMTAgfCAwOworICAgICAgICBzWzNdID0gNDggKyBjICUgMTAgfCAwOworICAgICAgICByZXR1
cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHMpOworICAgIGNhc2UgMiA6IAorICAgICAg
ICB2YXIgcyQxID0gbmV3IEFycmF5KDEpOworICAgICAgICBzJDFbMF0gPSBjOworICAgICAgICBy
ZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKHMkMSk7CisgICAgCisgIH0KK30KKwor
ZnVuY3Rpb24gbG93ZXJjYXNlKGMpIHsKKyAgaWYgKGMgPj0gLyogIkEiICovNjUgJiYgYyA8PSAv
KiAiWiIgKi85MCB8fCBjID49IC8qICJcMTkyIiAqLzE5MiAmJiBjIDw9IC8qICJcMjE0IiAqLzIx
NCB8fCBjID49IC8qICJcMjE2IiAqLzIxNiAmJiBjIDw9IC8qICJcMjIyIiAqLzIyMikgeworICAg
IHJldHVybiBjICsgMzIgfCAwOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBjOworICB9Cit9
CisKK2Z1bmN0aW9uIHVwcGVyY2FzZShjKSB7CisgIGlmIChjID49IC8qICJhIiAqLzk3ICYmIGMg
PD0gLyogInoiICovMTIyIHx8IGMgPj0gLyogIlwyMjQiICovMjI0ICYmIGMgPD0gLyogIlwyNDYi
ICovMjQ2IHx8IGMgPj0gLyogIlwyNDgiICovMjQ4ICYmIGMgPD0gLyogIlwyNTQiICovMjU0KSB7
CisgICAgcmV0dXJuIGMgLSAzMiB8IDA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGM7Cisg
IH0KK30KKworZnVuY3Rpb24gY29tcGFyZShjMSwgYzIpIHsKKyAgcmV0dXJuIGMxIC0gYzIgfCAw
OworfQorCitleHBvcnRzLmNociAgICAgICA9IGNocjsKK2V4cG9ydHMuZXNjYXBlZCAgID0gZXNj
YXBlZDsKK2V4cG9ydHMubG93ZXJjYXNlID0gbG93ZXJjYXNlOworZXhwb3J0cy51cHBlcmNhc2Ug
PSB1cHBlcmNhc2U7CitleHBvcnRzLmNvbXBhcmUgICA9IGNvbXBhcmU7CisvKiBObyBzaWRlIGVm
ZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGNoYXIuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBl
eHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnY3VycnknXSA9IGZ1bmN0aW9uKCkgewor
wqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGN1cnJ5LmpzIC8vLy8v
Ly8vCisndXNlIHN0cmljdCc7CisKK3ZhciBDYW1sX29vICAgID0gcmVxdWlyZSgiLi9jYW1sX29v
Iik7Cit2YXIgQ2FtbF9hcnJheSA9IHJlcXVpcmUoIi4vY2FtbF9hcnJheSIpOworCitmdW5jdGlv
biBhcHAoX2YsIF9hcmdzKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgYXJncyA9IF9hcmdz
OworICAgIHZhciBmID0gX2Y7CisgICAgdmFyIGFyaXR5ID0gZi5sZW5ndGg7CisgICAgdmFyIGFy
aXR5JDEgPSBhcml0eSA/IGFyaXR5IDogMTsKKyAgICB2YXIgbGVuID0gYXJncy5sZW5ndGg7Cisg
ICAgdmFyIGQgPSBhcml0eSQxIC0gbGVuIHwgMDsKKyAgICBpZiAoZCkgeworICAgICAgaWYgKGQg
PCAwKSB7CisgICAgICAgIF9hcmdzID0gQ2FtbF9hcnJheS5jYW1sX2FycmF5X3N1YihhcmdzLCBh
cml0eSQxLCAtZCB8IDApOworICAgICAgICBfZiA9IGYuYXBwbHkobnVsbCwgQ2FtbF9hcnJheS5j
YW1sX2FycmF5X3N1YihhcmdzLCAwLCBhcml0eSQxKSk7CisgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIChmdW5jdGlvbihm
LGFyZ3MpeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKKyAgICAgICAgICByZXR1cm4g
YXBwKGYsIGFyZ3MuY29uY2F0KC8qIGFycmF5ICovW3hdKSk7CisgICAgICAgIH0KKyAgICAgICAg
fShmLGFyZ3MpKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gZi5h
cHBseShudWxsLCBhcmdzKTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGpzKGxhYmVsLCBj
YWNoZWlkLCBvYmosIGFyZ3MpIHsKKyAgdmFyIG1ldGggPSBDYW1sX29vLmNhbWxfZ2V0X3B1Ymxp
Y19tZXRob2Qob2JqLCBsYWJlbCwgY2FjaGVpZCk7CisgIHJldHVybiBhcHAobWV0aCwgYXJncyk7
Cit9CisKK2Z1bmN0aW9uIGN1cnJ5XzEobywgYTAsIGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcg
fHwgYXJpdHkgPCAwKSB7CisgICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1thMF0pOworICB9
CisgIGVsc2UgeworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAg
Y2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIG8oYTApOworICAgICAgY2FzZSAyIDogCisgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAs
IHBhcmFtKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSAzIDogCisgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBh
cmFtLCBwYXJhbSQxKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA0IDogCisgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgeworICAgICAgICAgICAg
cmV0dXJuIG8oYTAsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsKKyAgICAgICAgICB9OworICAg
ICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwg
cGFyYW0kMiwgcGFyYW0kMykgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBhcmFtLCBwYXJh
bSQxLCBwYXJhbSQyLCBwYXJhbSQzKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA2IDogCisg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0k
MywgcGFyYW0kNCkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBhcmFtLCBwYXJhbSQxLCBw
YXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0KTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA3IDog
CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFy
YW0kMywgcGFyYW0kNCwgcGFyYW0kNSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIHBhcmFt
LCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0LCBwYXJhbSQ1KTsKKyAgICAgICAg
ICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF8xKG8sIGEwKSB7CisgIHZh
ciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDEpIHsKKyAgICByZXR1cm4gbyhh
MCk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGN1cnJ5XzEobywgYTAsIGFyaXR5KTsKKyAg
fQorfQorCitmdW5jdGlvbiBqczEobGFiZWwsIGNhY2hlaWQsIGEwKSB7CisgIHJldHVybiBfMShD
YW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAsIGxhYmVsLCBjYWNoZWlkKSwgYTApOwor
fQorCitmdW5jdGlvbiBfXzEobykgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFy
aXR5ID09PSAxKSB7CisgICAgcmV0dXJuIG87CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChhMCkgeworICAgICAgcmV0dXJuIF8xKG8sIGEwKTsKKyAgICB9OworICB9Cit9CisK
K2Z1bmN0aW9uIGN1cnJ5XzIobywgYTAsIGExLCBhcml0eSkgeworICBpZiAoYXJpdHkgPiA3IHx8
IGFyaXR5IDwgMCkgeworICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9bCisgICAgICAgICAg
ICAgICAgYTAsCisgICAgICAgICAgICAgICAgYTEKKyAgICAgICAgICAgICAgXSk7CisgIH0KKyAg
ZWxzZSB7CisgICAgc3dpdGNoIChhcml0eSkgeworICAgICAgY2FzZSAwIDogCisgICAgICBjYXNl
IDEgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAqL1thMV0pOworICAg
ICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIG8oYTAsIGExKTsKKyAgICAgIGNhc2UgMyA6
IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgIHJldHVy
biBvKGEwLCBhMSwgcGFyYW0pOworICAgICAgICAgIH07CisgICAgICBjYXNlIDQgOiAKKyAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxKSB7CisgICAgICAgICAgICByZXR1
cm4gbyhhMCwgYTEsIHBhcmFtLCBwYXJhbSQxKTsKKyAgICAgICAgICB9OworICAgICAgY2FzZSA1
IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikg
eworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMik7
CisgICAgICAgICAgfTsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlv
biAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpIHsKKyAgICAgICAgICAgIHJldHVy
biBvKGEwLCBhMSwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpOworICAgICAgICAg
IH07CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBw
YXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0KSB7CisgICAgICAgICAgICByZXR1cm4g
byhhMCwgYTEsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzLCBwYXJhbSQ0KTsKKyAg
ICAgICAgICB9OworICAgICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF8yKG8sIGEwLCBh
MSkgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSAyKSB7CisgICAg
cmV0dXJuIG8oYTAsIGExKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gY3VycnlfMihvLCBh
MCwgYTEsIGFyaXR5KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczIobGFiZWwsIGNhY2hlaWQsIGEw
LCBhMSkgeworICByZXR1cm4gXzIoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0aG9kKGEwLCBs
YWJlbCwgY2FjaGVpZCksIGEwLCBhMSk7Cit9CisKK2Z1bmN0aW9uIF9fMihvKSB7CisgIHZhciBh
cml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09IDIpIHsKKyAgICByZXR1cm4gbzsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGEwLCBhMSkgeworICAgICAgcmV0dXJu
IF8yKG8sIGEwLCBhMSk7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV8zKG8sIGEw
LCBhMSwgYTIsIGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcgfHwgYXJpdHkgPCAwKSB7CisgICAg
cmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICBhMCwKKyAgICAgICAg
ICAgICAgICBhMSwKKyAgICAgICAgICAgICAgICBhMgorICAgICAgICAgICAgICBdKTsKKyAgfQor
ICBlbHNlIHsKKyAgICBzd2l0Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5ICovWworICAgICAg
ICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgICAgICAgIGEyCisgICAgICAgICAg
ICAgICAgICAgIF0pOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEw
LCBhMSksIC8qIGFycmF5ICovW2EyXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1
cm4gbyhhMCwgYTEsIGEyKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJldHVybiBmdW5j
dGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIHBhcmFtKTsK
KyAgICAgICAgICB9OworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
IChwYXJhbSwgcGFyYW0kMSkgeworICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgcGFy
YW0sIHBhcmFtJDEpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKSB7CisgICAgICAgICAgICBy
ZXR1cm4gbyhhMCwgYTEsIGEyLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMik7CisgICAgICAgICAg
fTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBh
cmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpIHsKKyAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwg
YTIsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQzKTsKKyAgICAgICAgICB9OworICAg
ICAgCisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIF8zKG8sIGEwLCBhMSwgYTIpIHsKKyAgdmFy
IGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gMykgeworICAgIHJldHVybiBvKGEw
LCBhMSwgYTIpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBjdXJyeV8zKG8sIGEwLCBhMSwg
YTIsIGFyaXR5KTsKKyAgfQorfQorCitmdW5jdGlvbiBqczMobGFiZWwsIGNhY2hlaWQsIGEwLCBh
MSwgYTIpIHsKKyAgcmV0dXJuIF8zKENhbWxfb28uY2FtbF9nZXRfcHVibGljX21ldGhvZChhMCwg
bGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEsIGEyKTsKK30KKworZnVuY3Rpb24gX18zKG8pIHsKKyAg
dmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gMykgeworICAgIHJldHVybiBv
OworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBhMikgeworICAg
ICAgcmV0dXJuIF8zKG8sIGEwLCBhMSwgYTIpOworICAgIH07CisgIH0KK30KKworZnVuY3Rpb24g
Y3VycnlfNChvLCBhMCwgYTEsIGEyLCBhMywgYXJpdHkpIHsKKyAgaWYgKGFyaXR5ID4gNyB8fCBh
cml0eSA8IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovWworICAgICAgICAgICAg
ICAgIGEwLAorICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgIGEyLAorICAgICAg
ICAgICAgICAgIGEzCisgICAgICAgICAgICAgIF0pOworICB9CisgIGVsc2UgeworICAgIHN3aXRj
aCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgY2FzZSAxIDogCisgICAgICAgICAg
cmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTEs
CisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMKKyAg
ICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1cm4g
YXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisg
ICAgICAgICAgICAgICAgICAgICAgYTMKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiksIC8qIGFycmF5ICov
W2EzXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBh
Myk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7
CisgICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgcGFyYW0pOworICAgICAgICAg
IH07CisgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBw
YXJhbSQxKSB7CisgICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgcGFyYW0sIHBh
cmFtJDEpOworICAgICAgICAgIH07CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKSB7CisgICAgICAgICAgICByZXR1cm4g
byhhMCwgYTEsIGEyLCBhMywgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOworICAgICAgICAgIH07
CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzQobywgYTAsIGExLCBhMiwgYTMp
IHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNCkgeworICAgIHJl
dHVybiBvKGEwLCBhMSwgYTIsIGEzKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gY3Vycnlf
NChvLCBhMCwgYTEsIGEyLCBhMywgYXJpdHkpOworICB9Cit9CisKK2Z1bmN0aW9uIGpzNChsYWJl
bCwgY2FjaGVpZCwgYTAsIGExLCBhMiwgYTMpIHsKKyAgcmV0dXJuIF80KENhbWxfb28uY2FtbF9n
ZXRfcHVibGljX21ldGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEsIGEyLCBhMyk7Cit9
CisKK2Z1bmN0aW9uIF9fNChvKSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJp
dHkgPT09IDQpIHsKKyAgICByZXR1cm4gbzsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKGEwLCBhMSwgYTIsIGEzKSB7CisgICAgICByZXR1cm4gXzQobywgYTAsIGExLCBhMiwg
YTMpOworICAgIH07CisgIH0KK30KKworZnVuY3Rpb24gY3VycnlfNShvLCBhMCwgYTEsIGEyLCBh
MywgYTQsIGFyaXR5KSB7CisgIGlmIChhcml0eSA+IDcgfHwgYXJpdHkgPCAwKSB7CisgICAgcmV0
dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICBhMCwKKyAgICAgICAgICAg
ICAgICBhMSwKKyAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICBhMywKKyAgICAg
ICAgICAgICAgICBhNAorICAgICAgICAgICAgICBdKTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0
Y2ggKGFyaXR5KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
IHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGEx
LAorICAgICAgICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgICAgICAgIGEzLAor
ICAgICAgICAgICAgICAgICAgICAgIGE0CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAg
Y2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSksIC8qIGFycmF5ICovWwor
ICAgICAgICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAg
ICAgICAgICAgICAgICAgICAgIGE0CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2Fz
ZSAzIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIpLCAvKiBhcnJheSAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICBhMywKKyAgICAgICAgICAgICAgICAgICAgICBhNAorICAg
ICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJldHVybiBh
cHAobyhhMCwgYTEsIGEyLCBhMyksIC8qIGFycmF5ICovW2E0XSk7CisgICAgICBjYXNlIDUgOiAK
KyAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQpOworICAgICAgY2FzZSA2IDog
CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgcmV0dXJu
IG8oYTAsIGExLCBhMiwgYTMsIGE0LCBwYXJhbSk7CisgICAgICAgICAgfTsKKyAgICAgIGNhc2Ug
NyA6IAorICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEpIHsKKyAgICAg
ICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgcGFyYW0sIHBhcmFtJDEpOworICAg
ICAgICAgIH07CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzUobywgYTAsIGEx
LCBhMiwgYTMsIGE0KSB7CisgIHZhciBhcml0eSA9IG8ubGVuZ3RoOworICBpZiAoYXJpdHkgPT09
IDUpIHsKKyAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQpOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBjdXJyeV81KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYXJpdHkpOworICB9Cit9
CisKK2Z1bmN0aW9uIGpzNShsYWJlbCwgY2FjaGVpZCwgYTAsIGExLCBhMiwgYTMsIGE0KSB7Cisg
IHJldHVybiBfNShDYW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAsIGxhYmVsLCBjYWNo
ZWlkKSwgYTAsIGExLCBhMiwgYTMsIGE0KTsKK30KKworZnVuY3Rpb24gX181KG8pIHsKKyAgdmFy
IGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNSkgeworICAgIHJldHVybiBvOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBhMiwgYTMsIGE0KSB7
CisgICAgICByZXR1cm4gXzUobywgYTAsIGExLCBhMiwgYTMsIGE0KTsKKyAgICB9OworICB9Cit9
CisKK2Z1bmN0aW9uIGN1cnJ5XzYobywgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYXJpdHkpIHsK
KyAgaWYgKGFyaXR5ID4gNyB8fCBhcml0eSA8IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFy
cmF5ICovWworICAgICAgICAgICAgICAgIGEwLAorICAgICAgICAgICAgICAgIGExLAorICAgICAg
ICAgICAgICAgIGEyLAorICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgIGE0LAor
ICAgICAgICAgICAgICAgIGE1CisgICAgICAgICAgICAgIF0pOworICB9CisgIGVsc2UgeworICAg
IHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgY2FzZSAxIDogCisgICAg
ICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgYTEsCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAg
YTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAgYTUK
KyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICByZXR1
cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTIs
CisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisg
ICAgICAgICAgICAgICAgICAgICAgYTUKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiksIC8qIGFycmF5ICov
WworICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgICAgICAgIGE0LAor
ICAgICAgICAgICAgICAgICAgICAgIGE1CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAg
Y2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzKSwgLyogYXJy
YXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAg
YTUKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICBy
ZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0KSwgLyogYXJyYXkgKi9bYTVdKTsKKyAgICAg
IGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOwor
ICAgICAgY2FzZSA3IDogCisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgeworICAg
ICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgcGFyYW0pOworICAgICAg
ICAgIH07CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gXzYobywgYTAsIGExLCBh
MiwgYTMsIGE0LCBhNSkgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09
PSA2KSB7CisgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSk7CisgIH0KKyAgZWxz
ZSB7CisgICAgcmV0dXJuIGN1cnJ5XzYobywgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYXJpdHkp
OworICB9Cit9CisKK2Z1bmN0aW9uIGpzNihsYWJlbCwgY2FjaGVpZCwgYTAsIGExLCBhMiwgYTMs
IGE0LCBhNSkgeworICByZXR1cm4gXzYoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0aG9kKGEw
LCBsYWJlbCwgY2FjaGVpZCksIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOworfQorCitmdW5jdGlv
biBfXzYobykgeworICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSA2KSB7
CisgICAgcmV0dXJuIG87CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwg
YTEsIGEyLCBhMywgYTQsIGE1KSB7CisgICAgICByZXR1cm4gXzYobywgYTAsIGExLCBhMiwgYTMs
IGE0LCBhNSk7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV83KG8sIGEwLCBhMSwg
YTIsIGEzLCBhNCwgYTUsIGE2LCBhcml0eSkgeworICBpZiAoYXJpdHkgPiA3IHx8IGFyaXR5IDwg
MCkgeworICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgYTAs
CisgICAgICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgYTIsCisgICAgICAgICAgICAg
ICAgYTMsCisgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAgYTUsCisgICAgICAg
ICAgICAgICAgYTYKKyAgICAgICAgICAgICAgXSk7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNo
IChhcml0eSkgeworICAgICAgY2FzZSAwIDogCisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICBy
ZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBhMSwK
KyAgICAgICAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICAgICAgICBhMywKKyAg
ICAgICAgICAgICAgICAgICAgICBhNCwKKyAgICAgICAgICAgICAgICAgICAgICBhNSwKKyAgICAg
ICAgICAgICAgICAgICAgICBhNgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEpLCAvKiBhcnJheSAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICBhMiwKKyAgICAgICAgICAgICAgICAgICAgICBhMywKKyAgICAgICAg
ICAgICAgICAgICAgICBhNCwKKyAgICAgICAgICAgICAgICAgICAgICBhNSwKKyAgICAgICAgICAg
ICAgICAgICAgICBhNgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgMyA6IAor
ICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyKSwgLyogYXJyYXkgKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAg
ICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYKKyAgICAgICAgICAgICAg
ICAgICAgXSk7CisgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGEx
LCBhMiwgYTMpLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBhNCwKKyAgICAg
ICAgICAgICAgICAgICAgICBhNSwKKyAgICAgICAgICAgICAgICAgICAgICBhNgorICAgICAgICAg
ICAgICAgICAgICBdKTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhh
MCwgYTEsIGEyLCBhMywgYTQpLCAvKiBhcnJheSAqL1sKKyAgICAgICAgICAgICAgICAgICAgICBh
NSwKKyAgICAgICAgICAgICAgICAgICAgICBhNgorICAgICAgICAgICAgICAgICAgICBdKTsKKyAg
ICAgIGNhc2UgNiA6IAorICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyLCBhMywgYTQs
IGE1KSwgLyogYXJyYXkgKi9bYTZdKTsKKyAgICAgIGNhc2UgNyA6IAorICAgICAgICAgIHJldHVy
biBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKKyAgICAgIAorICAgIH0KKyAgfQorfQor
CitmdW5jdGlvbiBfNyhvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgeworICB2YXIgYXJp
dHkgPSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSA3KSB7CisgICAgcmV0dXJuIG8oYTAsIGEx
LCBhMiwgYTMsIGE0LCBhNSwgYTYpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBjdXJyeV83
KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhcml0eSk7CisgIH0KK30KKworZnVuY3Rp
b24ganM3KGxhYmVsLCBjYWNoZWlkLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgeworICBy
ZXR1cm4gXzcoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0aG9kKGEwLCBsYWJlbCwgY2FjaGVp
ZCksIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKK30KKworZnVuY3Rpb24gX183KG8pIHsK
KyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9PT0gNykgeworICAgIHJldHVy
biBvOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExLCBhMiwgYTMs
IGE0LCBhNSwgYTYpIHsKKyAgICAgIHJldHVybiBfNyhvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1
LCBhNik7CisgICAgfTsKKyAgfQorfQorCitmdW5jdGlvbiBjdXJyeV84KG8sIGEwLCBhMSwgYTIs
IGEzLCBhNCwgYTUsIGE2LCBhNywgYXJpdHkpIHsKKyAgaWYgKGFyaXR5ID4gNyB8fCBhcml0eSA8
IDApIHsKKyAgICByZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovWworICAgICAgICAgICAgICAgIGEw
LAorICAgICAgICAgICAgICAgIGExLAorICAgICAgICAgICAgICAgIGEyLAorICAgICAgICAgICAg
ICAgIGEzLAorICAgICAgICAgICAgICAgIGE0LAorICAgICAgICAgICAgICAgIGE1LAorICAgICAg
ICAgICAgICAgIGE2LAorICAgICAgICAgICAgICAgIGE3CisgICAgICAgICAgICAgIF0pOworICB9
CisgIGVsc2UgeworICAgIHN3aXRjaCAoYXJpdHkpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAg
Y2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgYTEsCisgICAgICAgICAgICAgICAgICAgICAgYTIsCisgICAgICAg
ICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAg
ICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYsCisgICAgICAgICAgICAg
ICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDIgOiAKKyAg
ICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgYTIsCisgICAgICAgICAgICAgICAgICAgICAgYTMsCisgICAgICAgICAgICAgICAg
ICAgICAgYTQsCisgICAgICAgICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAg
ICAgYTYsCisgICAgICAgICAgICAgICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7
CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiksIC8q
IGFycmF5ICovWworICAgICAgICAgICAgICAgICAgICAgIGEzLAorICAgICAgICAgICAgICAgICAg
ICAgIGE0LAorICAgICAgICAgICAgICAgICAgICAgIGE1LAorICAgICAgICAgICAgICAgICAgICAg
IGE2LAorICAgICAgICAgICAgICAgICAgICAgIGE3CisgICAgICAgICAgICAgICAgICAgIF0pOwor
ICAgICAgY2FzZSA0IDogCisgICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzKSwg
LyogYXJyYXkgKi9bCisgICAgICAgICAgICAgICAgICAgICAgYTQsCisgICAgICAgICAgICAgICAg
ICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYsCisgICAgICAgICAgICAgICAgICAg
ICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAg
ICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0KSwgLyogYXJyYXkgKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgYTUsCisgICAgICAgICAgICAgICAgICAgICAgYTYsCisgICAgICAgICAg
ICAgICAgICAgICAgYTcKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDYgOiAK
KyAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSksIC8qIGFycmF5
ICovWworICAgICAgICAgICAgICAgICAgICAgIGE2LAorICAgICAgICAgICAgICAgICAgICAgIGE3
CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgY2FzZSA3IDogCisgICAgICAgICAgcmV0
dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSwgLyogYXJyYXkgKi9bYTddKTsK
KyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBfOChvLCBhMCwgYTEsIGEyLCBhMywg
YTQsIGE1LCBhNiwgYTcpIHsKKyAgdmFyIGFyaXR5ID0gby5sZW5ndGg7CisgIGlmIChhcml0eSA9
PT0gOCkgeworICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIGN1cnJ5XzgobywgYTAsIGExLCBhMiwgYTMsIGE0LCBh
NSwgYTYsIGE3LCBhcml0eSk7CisgIH0KK30KKworZnVuY3Rpb24ganM4KGxhYmVsLCBjYWNoZWlk
LCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIHsKKyAgcmV0dXJuIF84KENhbWxfb28u
Y2FtbF9nZXRfcHVibGljX21ldGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCwgYTEsIGEyLCBh
MywgYTQsIGE1LCBhNiwgYTcpOworfQorCitmdW5jdGlvbiBfXzgobykgeworICB2YXIgYXJpdHkg
PSBvLmxlbmd0aDsKKyAgaWYgKGFyaXR5ID09PSA4KSB7CisgICAgcmV0dXJuIG87CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwg
YTcpIHsKKyAgICAgIHJldHVybiBfOChvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcp
OworICAgIH07CisgIH0KK30KKworZXhwb3J0cy5hcHAgICAgID0gYXBwOworZXhwb3J0cy5qcyAg
ICAgID0ganM7CitleHBvcnRzLmN1cnJ5XzEgPSBjdXJyeV8xOworZXhwb3J0cy5fMSAgICAgID0g
XzE7CitleHBvcnRzLmpzMSAgICAgPSBqczE7CitleHBvcnRzLl9fMSAgICAgPSBfXzE7CitleHBv
cnRzLmN1cnJ5XzIgPSBjdXJyeV8yOworZXhwb3J0cy5fMiAgICAgID0gXzI7CitleHBvcnRzLmpz
MiAgICAgPSBqczI7CitleHBvcnRzLl9fMiAgICAgPSBfXzI7CitleHBvcnRzLmN1cnJ5XzMgPSBj
dXJyeV8zOworZXhwb3J0cy5fMyAgICAgID0gXzM7CitleHBvcnRzLmpzMyAgICAgPSBqczM7Citl
eHBvcnRzLl9fMyAgICAgPSBfXzM7CitleHBvcnRzLmN1cnJ5XzQgPSBjdXJyeV80OworZXhwb3J0
cy5fNCAgICAgID0gXzQ7CitleHBvcnRzLmpzNCAgICAgPSBqczQ7CitleHBvcnRzLl9fNCAgICAg
PSBfXzQ7CitleHBvcnRzLmN1cnJ5XzUgPSBjdXJyeV81OworZXhwb3J0cy5fNSAgICAgID0gXzU7
CitleHBvcnRzLmpzNSAgICAgPSBqczU7CitleHBvcnRzLl9fNSAgICAgPSBfXzU7CitleHBvcnRz
LmN1cnJ5XzYgPSBjdXJyeV82OworZXhwb3J0cy5fNiAgICAgID0gXzY7CitleHBvcnRzLmpzNiAg
ICAgPSBqczY7CitleHBvcnRzLl9fNiAgICAgPSBfXzY7CitleHBvcnRzLmN1cnJ5XzcgPSBjdXJy
eV83OworZXhwb3J0cy5fNyAgICAgID0gXzc7CitleHBvcnRzLmpzNyAgICAgPSBqczc7CitleHBv
cnRzLl9fNyAgICAgPSBfXzc7CitleHBvcnRzLmN1cnJ5XzggPSBjdXJyeV84OworZXhwb3J0cy5f
OCAgICAgID0gXzg7CitleHBvcnRzLmpzOCAgICAgPSBqczg7CitleHBvcnRzLl9fOCAgICAgPSBf
Xzg7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGN1cnJ5LmpzIC8vLy8v
Ly8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2RlY29k
ZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3Rh
cnQgb2YgZGVjb2RlLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZF
UlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFy
IEYzMiAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjMyIik7Cit2YXIgRjY0ICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9mNjQiKTsKK3ZhciBJMzIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2kz
MiIpOwordmFyIExpYiAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGliIik7Cit2YXIgTGlzdCAg
ICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBCbG9j
ayAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2siKTsKK3ZhciBD
dXJyeSAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3Zh
ciAkJEVycm9yICAgICAgICAgPSByZXF1aXJlKCIuL2Vycm9yIik7Cit2YXIgRW5jb2RlICAgICAg
ICAgID0gcmVxdWlyZSgiLi9lbmNvZGUiKTsKK3ZhciBQcmludGYgICAgICAgICAgPSByZXF1aXJl
KCJicy1wbGF0Zm9ybS9saWIvanMvcHJpbnRmIik7Cit2YXIgU291cmNlICAgICAgICAgID0gcmVx
dWlyZSgiLi9zb3VyY2UiKTsKK3ZhciAkJFN0cmluZyAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0
Zm9ybS9saWIvanMvc3RyaW5nIik7Cit2YXIgQ2FtbF9vYmogICAgICAgID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIgT3BlcmF0b3JzICAgICAgID0gcmVxdWly
ZSgiLi9vcGVyYXRvcnMiKTsKK3ZhciBDYW1sX2ludDY0ICAgICAgPSByZXF1aXJlKCJicy1wbGF0
Zm9ybS9saWIvanMvY2FtbF9pbnQ2NCIpOwordmFyIENhbWxfc3RyaW5nICAgICA9IHJlcXVpcmUo
ImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfZXhjZXB0aW9ucyA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2V4Y2VwdGlvbnMiKTsKKwordmFyIEVP
UyA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIkRlY29kZS5FT1MiKTsKKworZnVuY3Rpb24gc3Ry
ZWFtKG5hbWUsIGJzKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogbmFt
ZSAqL25hbWUsCisgICAgICAgICAgLyogYnl0ZXMgKi9icywKKyAgICAgICAgICAvKiBwb3MgKi9b
MF0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZW9zKHMpIHsKKyAgcmV0dXJuICsoc1svKiBw
b3MgKi8yXVswXSA9PT0gc1svKiBieXRlcyAqLzFdLmxlbmd0aCk7Cit9CisKK2Z1bmN0aW9uIGNo
ZWNrKG4sIHMpIHsKKyAgaWYgKChzWy8qIHBvcyAqLzJdWzBdICsgbiB8IDApID4gc1svKiBieXRl
cyAqLzFdLmxlbmd0aCkgeworICAgIHRocm93IEVPUzsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1
cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBza2lwKG4sIHMpIHsKKyAgY2hlY2sobiwgcyk7Cisg
IHNbLyogcG9zICovMl1bMF0gPSBzWy8qIHBvcyAqLzJdWzBdICsgbiB8IDA7CisgIHJldHVybiAv
KiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHJlYWQocykgeworICByZXR1cm4gQ2FtbF9zdHJpbmcu
Z2V0KHNbLyogYnl0ZXMgKi8xXSwgc1svKiBwb3MgKi8yXVswXSk7Cit9CisKK2Z1bmN0aW9uIHBl
ZWsocykgeworICBpZiAoZW9zKHMpKSB7CisgICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAvKiBTb21lICovW3JlYWQocyldOworICB9Cit9CisKK2Z1bmN0
aW9uIGdldChzKSB7CisgIGNoZWNrKDEsIHMpOworICB2YXIgYiA9IHJlYWQocyk7CisgIHNraXAo
MSwgcyk7CisgIHJldHVybiBiOworfQorCit2YXIgQ29kZSA9ICQkRXJyb3IuTWFrZSgvKiBtb2R1
bGUgKi9bXSk7CisKK3ZhciBDb2RlJDEgPSBDb2RlWy8qIEVycm9yICovMF07CisKK2Z1bmN0aW9u
IHN0cmluZ19vZl9ieXRlKGIpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50Zi5zcHJpbnRmKC8q
IEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAvKiBJbnRfeCAqLzYsCisgICAgICAgICAgICAgICAgICAgICAg
LyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFplcm9zICovMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMgorICAgICAgICAgICAg
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICov
MCwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAorICAgICAgICAg
ICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICAgICIlMDJ4IgorICAgICAgICAgICAgICAg
IF0pLCBiKTsKK30KKworZnVuY3Rpb24gcG9zaXRpb24ocywgcG9zKSB7CisgIHJldHVybiAvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgLyogZmlsZSAqL3NbLyogbmFtZSAqLzBdLAorICAgICAgICAg
IC8qIGxpbmUgKi8tMSwKKyAgICAgICAgICAvKiBjb2x1bW4gKi9wb3MKKyAgICAgICAgXTsKK30K
KworZnVuY3Rpb24gcmVnaW9uKHMsIGxlZnQsIHJpZ2h0KSB7CisgIHJldHVybiAvKiByZWNvcmQg
Ki9bCisgICAgICAgICAgLyogbGVmdCAqL3Bvc2l0aW9uKHMsIGxlZnQpLAorICAgICAgICAgIC8q
IHJpZ2h0ICovcG9zaXRpb24ocywgcmlnaHQpCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGVy
cm9yKHMsIHBvcywgbXNnKSB7CisgIHRocm93IFsKKyAgICAgICAgQ29kZSQxLAorICAgICAgICBy
ZWdpb24ocywgcG9zLCBwb3MpLAorICAgICAgICBtc2cKKyAgICAgIF07Cit9CisKK2Z1bmN0aW9u
ICQkcmVxdWlyZShiLCBzLCBwb3MsIG1zZykgeworICBpZiAoYikgeworICAgIHJldHVybiAwOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiBlcnJvcihzLCBwb3MsIG1zZyk7CisgIH0KK30KKwor
ZnVuY3Rpb24gZ3VhcmQoZiwgcykgeworICB0cnkgeworICAgIHJldHVybiBDdXJyeS5fMShmLCBz
KTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBFT1MpIHsKKyAgICAgIHJl
dHVybiBlcnJvcihzLCBzWy8qIGJ5dGVzICovMV0ubGVuZ3RoLCAidW5leHBlY3RlZCBlbmQgb2Yg
YmluYXJ5IG9yIGZ1bmN0aW9uIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhu
OworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBnZXQkMShwYXJhbSkgeworICByZXR1cm4gZ3Vh
cmQoZ2V0LCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGV4cGVjdChiLCBzLCBtc2cpIHsKKyAgcmV0
dXJuICQkcmVxdWlyZSgrKGd1YXJkKGdldCQxLCBzKSA9PT0gYiksIHMsIHNbLyogcG9zICovMl1b
MF0gLSAxIHwgMCwgbXNnKTsKK30KKworZnVuY3Rpb24gaWxsZWdhbChzLCBwb3MsIGIpIHsKKyAg
cmV0dXJuIGVycm9yKHMsIHBvcywgImlsbGVnYWwgb3Bjb2RlICIgKyBzdHJpbmdfb2ZfYnl0ZShi
KSk7Cit9CisKK2Z1bmN0aW9uIGF0KGYsIHMpIHsKKyAgdmFyIGxlZnQgPSBzWy8qIHBvcyAqLzJd
WzBdOworICB2YXIgeCA9IEN1cnJ5Ll8xKGYsIHMpOworICB2YXIgcmlnaHQgPSBzWy8qIHBvcyAq
LzJdWzBdOworICByZXR1cm4gU291cmNlLiRhdCRhdCh4LCByZWdpb24ocywgbGVmdCwgcmlnaHQp
KTsKK30KKworZnVuY3Rpb24gdTE2KHMpIHsKKyAgdmFyIGxvID0gZ3VhcmQoZ2V0LCBzKTsKKyAg
dmFyIGhpID0gZ3VhcmQoZ2V0LCBzKTsKKyAgcmV0dXJuIChoaSA8PCA4KSArIGxvIHwgMDsKK30K
KworZnVuY3Rpb24gdTMyKHMpIHsKKyAgdmFyIGxvID0gdTE2KHMpOworICB2YXIgaGkgPSB1MTYo
cyk7CisgIHJldHVybiBsbyArIChoaSA8PCAxNikgfCAwOworfQorCitmdW5jdGlvbiB1NjQocykg
eworICB2YXIgbG8gPSBDYW1sX2ludDY0Lm9mX2ludDMyKHUzMihzKSk7CisgIHZhciBoaSA9IENh
bWxfaW50NjQub2ZfaW50MzIodTMyKHMpKTsKKyAgcmV0dXJuIENhbWxfaW50NjQuYWRkKGxvLCBD
YW1sX2ludDY0LmxzbF8oaGksIDMyKSk7Cit9CisKK2Z1bmN0aW9uIHZ1TihuLCBzKSB7CisgICQk
cmVxdWlyZSgrKG4gPiAwKSwgcywgc1svKiBwb3MgKi8yXVswXSwgImludGVnZXIgcmVwcmVzZW50
YXRpb24gdG9vIGxvbmciKTsKKyAgdmFyIGIgPSBndWFyZChnZXQsIHMpOworICAkJHJlcXVpcmUo
KyhuID49IDcgfHwgKGIgJiAxMjcpIDwgKDEgPDwgbikpLCBzLCBzWy8qIHBvcyAqLzJdWzBdIC0g
MSB8IDAsICJpbnRlZ2VyIHRvbyBsYXJnZSIpOworICB2YXIgeCA9IENhbWxfaW50NjQub2ZfaW50
MzIoYiAmIDEyNyk7CisgIGlmIChiICYgMTI4KSB7CisgICAgcmV0dXJuIENhbWxfaW50NjQub3Jf
KHgsIENhbWxfaW50NjQubHNsXyh2dU4obiAtIDcgfCAwLCBzKSwgNykpOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiB4OworICB9Cit9CisKK2Z1bmN0aW9uIHZzTihuLCBzKSB7CisgICQkcmVx
dWlyZSgrKG4gPiAwKSwgcywgc1svKiBwb3MgKi8yXVswXSwgImludGVnZXIgcmVwcmVzZW50YXRp
b24gdG9vIGxvbmciKTsKKyAgdmFyIGIgPSBndWFyZChnZXQsIHMpOworICB2YXIgbWFzayA9ICgt
MSA8PCBuKSAmIDEyNzsKKyAgJCRyZXF1aXJlKCsobiA+PSA3IHx8IChiICYgbWFzaykgPT09IDAg
fHwgKGIgJiBtYXNrKSA9PT0gbWFzayksIHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwgImlu
dGVnZXIgdG9vIGxhcmdlIik7CisgIHZhciB4ID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMihiICYgMTI3
KTsKKyAgaWYgKGIgJiAxMjgpIHsKKyAgICByZXR1cm4gQ2FtbF9pbnQ2NC5vcl8oeCwgQ2FtbF9p
bnQ2NC5sc2xfKHZzTihuIC0gNyB8IDAsIHMpLCA3KSk7CisgIH0KKyAgZWxzZSBpZiAoYiAmIDY0
KSB7CisgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgLyogaGkgKi94WzBdIHwg
LyogaGkgKi8tMSwKKyAgICAgICAgICAgIC8qIGxvICovKCh4WzFdIHwgLyogbG8gKi80Mjk0OTY3
MTY4KSA+Pj4gMCkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiB4Owor
ICB9Cit9CisKK2Z1bmN0aW9uIHZ1MzIocykgeworICByZXR1cm4gdnVOKDMyLCBzKVsxXSB8IDA7
Cit9CisKK2Z1bmN0aW9uIHZzMzIocykgeworICByZXR1cm4gdnNOKDMyLCBzKVsxXSB8IDA7Cit9
CisKK2Z1bmN0aW9uIHZzNjQocykgeworICByZXR1cm4gdnNOKDY0LCBzKTsKK30KKworZnVuY3Rp
b24gZjMyKHMpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKEYzMi5vZl9iaXRzLCB1MzIocykpOworfQor
CitmdW5jdGlvbiBmNjQocykgeworICByZXR1cm4gQ3VycnkuXzEoRjY0Lm9mX2JpdHMsIHU2NChz
KSk7Cit9CisKK2Z1bmN0aW9uIGxlbjMyKHMpIHsKKyAgdmFyIHBvcyA9IHNbLyogcG9zICovMl1b
MF07CisgIHZhciBuID0gdnVOKDMyLCBzKVsxXSB8IDA7CisgIGlmIChuIDw9IHNbLyogYnl0ZXMg
Ki8xXS5sZW5ndGgpIHsKKyAgICByZXR1cm4gbjsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
ZXJyb3IocywgcG9zLCAibGVuZ3RoIG91dCBvZiBib3VuZHMiKTsKKyAgfQorfQorCitmdW5jdGlv
biBzdHJpbmcocykgeworICB2YXIgbiA9IGxlbjMyKHMpOworICByZXR1cm4gZ3VhcmQoZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHZhciBuJDEgPSBuOworICAgICAgICAgICAgICB2
YXIgcyA9IHBhcmFtOworICAgICAgICAgICAgICB2YXIgaSA9IHNbLyogcG9zICovMl1bMF07Cisg
ICAgICAgICAgICAgIHNraXAobiQxLCBzKTsKKyAgICAgICAgICAgICAgcmV0dXJuICQkU3RyaW5n
LnN1YihzWy8qIGJ5dGVzICovMV0sIGksIG4kMSk7CisgICAgICAgICAgICB9LCBzKTsKK30KKwor
ZnVuY3Rpb24gbGlzdChmLCBuLCBzKSB7CisgIGlmIChuKSB7CisgICAgdmFyIHggPSBDdXJyeS5f
MShmLCBzKTsKKyAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICB4LAorICAgICAgICAg
ICAgbGlzdChmLCBuIC0gMSB8IDAsIHMpCisgICAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIG9wdChmLCBiLCBzKSB7Cisg
IGlmIChiKSB7CisgICAgcmV0dXJuIC8qIFNvbWUgKi9bQ3VycnkuXzEoZiwgcyldOworICB9Cisg
IGVsc2UgeworICAgIHJldHVybiAvKiBOb25lICovMDsKKyAgfQorfQorCitmdW5jdGlvbiB2ZWMo
ZiwgcykgeworICB2YXIgbiA9IGxlbjMyKHMpOworICByZXR1cm4gbGlzdChmLCBuLCBzKTsKK30K
KworZnVuY3Rpb24gc2l6ZWQoZiwgcykgeworICB2YXIgc2l6ZSA9IGxlbjMyKHMpOworICB2YXIg
c3RhcnQgPSBzWy8qIHBvcyAqLzJdWzBdOworICB2YXIgeCA9IEN1cnJ5Ll8yKGYsIHNpemUsIHMp
OworICAkJHJlcXVpcmUoKyhzWy8qIHBvcyAqLzJdWzBdID09PSAoc3RhcnQgKyBzaXplIHwgMCkp
LCBzLCBzdGFydCwgInNlY3Rpb24gc2l6ZSBtaXNtYXRjaCIpOworICByZXR1cm4geDsKK30KKwor
ZnVuY3Rpb24gdmFsdWVfdHlwZShzKSB7CisgIHZhciBtYXRjaCA9IHZzTig3LCBzKVsxXSB8IDA7
CisgIHZhciBzd2l0Y2hlciA9IG1hdGNoICsgNCB8IDA7CisgIGlmIChzd2l0Y2hlciA+IDMgfHwg
c3dpdGNoZXIgPCAwKSB7CisgICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0gLSAx
IHwgMCwgImludmFsaWQgdmFsdWUgdHlwZSIpOworICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAo
c3dpdGNoZXIpIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiAvKiBGNjRUeXBl
ICovMzsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAvKiBGMzJUeXBlICovMjsK
KyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiAvKiBJNjRUeXBlICovMTsKKyAgICAg
IGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiAvKiBJMzJUeXBlICovMDsKKyAgICAgIAorICAg
IH0KKyAgfQorfQorCitmdW5jdGlvbiBlbGVtX3R5cGUocykgeworICB2YXIgbWF0Y2ggPSB2c04o
NywgcylbMV0gfCAwOworICBpZiAobWF0Y2ggIT09IC0xNikgeworICAgIHJldHVybiBlcnJvcihz
LCBzWy8qIHBvcyAqLzJdWzBdIC0gMSB8IDAsICJpbnZhbGlkIGVsZW1lbnQgdHlwZSIpOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiAvKiBGdW5jUmVmVHlwZSAqLzA7CisgIH0KK30KKworZnVu
Y3Rpb24gc3RhY2tfdHlwZShzKSB7CisgIHZhciBtYXRjaCA9IHBlZWsocyk7CisgIGlmIChtYXRj
aCkgeworICAgIGlmIChtYXRjaFswXSAhPT0gNjQpIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgdmFsdWVfdHlwZShzKSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGd1YXJkKGZ1bmN0aW9uIChw
YXJhbSkgeworICAgICAgICAgICAgcmV0dXJuIHNraXAoMSwgcGFyYW0pOworICAgICAgICAgIH0s
IHMpOworICAgICAgcmV0dXJuIC8qIFtdICovMDsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAg
cmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgdmFsdWVfdHlwZShzKSwKKyAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gZnVuY190eXBlKHMp
IHsKKyAgdmFyIG1hdGNoID0gdnNOKDcsIHMpWzFdIHwgMDsKKyAgaWYgKG1hdGNoICE9PSAtMzIp
IHsKKyAgICByZXR1cm4gZXJyb3Iocywgc1svKiBwb3MgKi8yXVswXSAtIDEgfCAwLCAiaW52YWxp
ZCBmdW5jdGlvbiB0eXBlIik7CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIGlucyA9IHZlYyh2YWx1
ZV90eXBlLCBzKTsKKyAgICB2YXIgb3V0ID0gdmVjKHZhbHVlX3R5cGUsIHMpOworICAgIHJldHVy
biAvKiBGdW5jVHlwZSAqL1sKKyAgICAgICAgICAgIGlucywKKyAgICAgICAgICAgIG91dAorICAg
ICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gbGltaXRzKHZ1LCBzKSB7CisgIHZhciBoYXNf
bWF4ID0gKygodnVOKDEsIHMpWzFdIHwgMCkgPT09IDEpOworICB2YXIgbWluID0gQ3VycnkuXzEo
dnUsIHMpOworICB2YXIgbWF4ID0gb3B0KHZ1LCBoYXNfbWF4LCBzKTsKKyAgcmV0dXJuIC8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAvKiBtaW4gKi9taW4sCisgICAgICAgICAgLyogbWF4ICovbWF4
CisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRhYmxlX3R5cGUocykgeworICB2YXIgdCA9IGVs
ZW1fdHlwZShzKTsKKyAgdmFyIGxpbSA9IGxpbWl0cyh2dTMyLCBzKTsKKyAgcmV0dXJuIC8qIFRh
YmxlVHlwZSAqL1sKKyAgICAgICAgICBsaW0sCisgICAgICAgICAgdAorICAgICAgICBdOworfQor
CitmdW5jdGlvbiBtZW1vcnlfdHlwZShzKSB7CisgIHZhciBsaW0gPSBsaW1pdHModnUzMiwgcyk7
CisgIHJldHVybiAvKiBNZW1vcnlUeXBlICovW2xpbV07Cit9CisKK2Z1bmN0aW9uIG11dGFiaWxp
dHkocykgeworICB2YXIgbWF0Y2ggPSBndWFyZChnZXQsIHMpOworICBpZiAobWF0Y2ggIT09IDAp
IHsKKyAgICBpZiAobWF0Y2ggIT09IDEpIHsKKyAgICAgIHJldHVybiBlcnJvcihzLCBzWy8qIHBv
cyAqLzJdWzBdIC0gMSB8IDAsICJpbnZhbGlkIG11dGFiaWxpdHkiKTsKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gLyogTXV0YWJsZSAqLzE7CisgICAgfQorICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiAvKiBJbW11dGFibGUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGdsb2JhbF90
eXBlKHMpIHsKKyAgdmFyIHQgPSB2YWx1ZV90eXBlKHMpOworICB2YXIgbXV0ID0gbXV0YWJpbGl0
eShzKTsKKyAgcmV0dXJuIC8qIEdsb2JhbFR5cGUgKi9bCisgICAgICAgICAgdCwKKyAgICAgICAg
ICBtdXQKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gJCR2YXIocykgeworICByZXR1cm4gdnVO
KDMyLCBzKVsxXSB8IDA7Cit9CisKK2Z1bmN0aW9uIG1lbW9wKHMpIHsKKyAgdmFyIGFsaWduID0g
dnVOKDMyLCBzKVsxXSB8IDA7CisgICQkcmVxdWlyZShDdXJyeS5fMihJMzIubGVfdSwgYWxpZ24s
IDMyKSwgcywgc1svKiBwb3MgKi8yXVswXSAtIDEgfCAwLCAiaW52YWxpZCBtZW1vcCBmbGFncyIp
OworICB2YXIgb2Zmc2V0ID0gdnVOKDMyLCBzKVsxXSB8IDA7CisgIHJldHVybiAvKiB0dXBsZSAq
L1sKKyAgICAgICAgICBhbGlnbiwKKyAgICAgICAgICBvZmZzZXQKKyAgICAgICAgXTsKK30KKwor
ZnVuY3Rpb24gaW5zdHIocykgeworICB2YXIgcG9zID0gc1svKiBwb3MgKi8yXVswXTsKKyAgdmFy
IGIgPSBndWFyZChnZXQsIHMpOworICBpZiAoYiA+IDE5MSB8fCBiIDwgMCkgeworICAgIHJldHVy
biBpbGxlZ2FsKHMsIHBvcywgYik7CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChiKSB7Cisg
ICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLnVucmVhY2hhYmxlOwor
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5ub3A7CisgICAgICBj
YXNlIDIgOiAKKyAgICAgICAgICB2YXIgdHMgPSBzdGFja190eXBlKHMpOworICAgICAgICAgIHZh
ciBlcyRwcmltZSA9IExpc3QucmV2KGluc3RyX2Jsb2NrJHByaW1lKHMsIC8qIFtdICovMCkpOwor
ICAgICAgICAgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0ZWQiKTsKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmJsb2NrKHRzLCBlcyRwcmltZSk7CisgICAgICBjYXNlIDMgOiAK
KyAgICAgICAgICB2YXIgdHMkMSA9IHN0YWNrX3R5cGUocyk7CisgICAgICAgICAgdmFyIGVzJHBy
aW1lJDEgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsKKyAgICAg
ICAgICBleHBlY3QoMTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7CisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5sb29wKHRzJDEsIGVzJHByaW1lJDEpOworICAgICAgY2FzZSA0IDogCisg
ICAgICAgICAgdmFyIHRzJDIgPSBzdGFja190eXBlKHMpOworICAgICAgICAgIHZhciBlczEgPSBM
aXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsKKyAgICAgICAgICBpZiAo
Q2FtbF9vYmouY2FtbF9lcXVhbChwZWVrKHMpLCAvKiBTb21lICovWzVdKSkgeworICAgICAgICAg
ICAgZXhwZWN0KDUsIHMsICJFTFNFIG9yIEVORCBvcGNvZGUgZXhwZWN0ZWQiKTsKKyAgICAgICAg
ICAgIHZhciBlczIgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsK
KyAgICAgICAgICAgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0ZWQiKTsKKyAgICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaWZfKHRzJDIsIGVzMSwgZXMyKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBleHBlY3QoMTEsIHMsICJFTkQgb3Bjb2Rl
IGV4cGVjdGVkIik7CisgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmlmXyh0cyQyLCBlczEs
IC8qIFtdICovMCk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA1
IDogCisgICAgICAgICAgcmV0dXJuIGVycm9yKHMsIHBvcywgIm1pc3BsYWNlZCBFTFNFIG9wY29k
ZSIpOworICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgIHJldHVybiBlcnJvcihzLCBwb3MsICJt
aXNwbGFjZWQgRU5EIG9wY29kZSIpOworICAgICAgY2FzZSAxMiA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuYnIoYXQoJCR2YXIsIHMpKTsKKyAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmJyX2lmKGF0KCQkdmFyLCBzKSk7CisgICAgICBjYXNlIDE0IDog
CisgICAgICAgICAgdmFyIHhzID0gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBhdCgkJHZhciwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBzKTsKKyAgICAg
ICAgICB2YXIgeCA9IGF0KCQkdmFyLCBzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmJy
X3RhYmxlKHhzLCB4KTsKKyAgICAgIGNhc2UgMTUgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLiQkcmV0dXJuOworICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuY2FsbChhdCgkJHZhciwgcykpOworICAgICAgY2FzZSAxNyA6IAorICAgICAgICAgIHZhciB4
JDEgPSBhdCgkJHZhciwgcyk7CisgICAgICAgICAgZXhwZWN0KDAsIHMsICJ6ZXJvIGZsYWcgZXhw
ZWN0ZWQiKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmNhbGxfaW5kaXJlY3QoeCQxKTsK
KyAgICAgIGNhc2UgMjYgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmRyb3A7CisgICAg
ICBjYXNlIDI3IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5zZWxlY3Q7CisgICAgICBj
YXNlIDMyIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfbG9jYWwoYXQoJCR2YXIs
IHMpKTsKKyAgICAgIGNhc2UgMzMgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLnNldF9s
b2NhbChhdCgkJHZhciwgcykpOworICAgICAgY2FzZSAzNCA6IAorICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMudGVlX2xvY2FsKGF0KCQkdmFyLCBzKSk7CisgICAgICBjYXNlIDM1IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfZ2xvYmFsKGF0KCQkdmFyLCBzKSk7CisgICAgICBj
YXNlIDM2IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5zZXRfZ2xvYmFsKGF0KCQkdmFy
LCBzKSk7CisgICAgICBjYXNlIDYgOiAKKyAgICAgIGNhc2UgNyA6IAorICAgICAgY2FzZSA4IDog
CisgICAgICBjYXNlIDkgOiAKKyAgICAgIGNhc2UgMTAgOiAKKyAgICAgIGNhc2UgMTggOiAKKyAg
ICAgIGNhc2UgMTkgOiAKKyAgICAgIGNhc2UgMjAgOiAKKyAgICAgIGNhc2UgMjEgOiAKKyAgICAg
IGNhc2UgMjIgOiAKKyAgICAgIGNhc2UgMjMgOiAKKyAgICAgIGNhc2UgMjQgOiAKKyAgICAgIGNh
c2UgMjUgOiAKKyAgICAgIGNhc2UgMjggOiAKKyAgICAgIGNhc2UgMjkgOiAKKyAgICAgIGNhc2Ug
MzAgOiAKKyAgICAgIGNhc2UgMzEgOiAKKyAgICAgIGNhc2UgMzcgOiAKKyAgICAgIGNhc2UgMzgg
OiAKKyAgICAgIGNhc2UgMzkgOiAKKyAgICAgICAgICByZXR1cm4gaWxsZWdhbChzLCBwb3MsIGIp
OworICAgICAgY2FzZSA0MCA6IAorICAgICAgICAgIHZhciBtYXRjaCA9IG1lbW9wKHMpOworICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2xvYWQobWF0Y2hbMF0sIG1hdGNoWzFdKTsKKyAg
ICAgIGNhc2UgNDEgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IG1lbW9wKHMpOworICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQobWF0Y2gkMVswXSwgbWF0Y2gkMVsxXSk7Cisg
ICAgICBjYXNlIDQyIDogCisgICAgICAgICAgdmFyIG1hdGNoJDIgPSBtZW1vcChzKTsKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmYzMl9sb2FkKG1hdGNoJDJbMF0sIG1hdGNoJDJbMV0pOwor
ICAgICAgY2FzZSA0MyA6IAorICAgICAgICAgIHZhciBtYXRjaCQzID0gbWVtb3Aocyk7CisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbG9hZChtYXRjaCQzWzBdLCBtYXRjaCQzWzFdKTsK
KyAgICAgIGNhc2UgNDQgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkNCA9IG1lbW9wKHMpOworICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2xvYWQ4X3MobWF0Y2gkNFswXSwgbWF0Y2gkNFsx
XSk7CisgICAgICBjYXNlIDQ1IDogCisgICAgICAgICAgdmFyIG1hdGNoJDUgPSBtZW1vcChzKTsK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2FkOF91KG1hdGNoJDVbMF0sIG1hdGNo
JDVbMV0pOworICAgICAgY2FzZSA0NiA6IAorICAgICAgICAgIHZhciBtYXRjaCQ2ID0gbWVtb3Ao
cyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbG9hZDE2X3MobWF0Y2gkNlswXSwg
bWF0Y2gkNlsxXSk7CisgICAgICBjYXNlIDQ3IDogCisgICAgICAgICAgdmFyIG1hdGNoJDcgPSBt
ZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2FkMTZfdShtYXRjaCQ3
WzBdLCBtYXRjaCQ3WzFdKTsKKyAgICAgIGNhc2UgNDggOiAKKyAgICAgICAgICB2YXIgbWF0Y2gk
OCA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQ4X3MobWF0
Y2gkOFswXSwgbWF0Y2gkOFsxXSk7CisgICAgICBjYXNlIDQ5IDogCisgICAgICAgICAgdmFyIG1h
dGNoJDkgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkOF91
KG1hdGNoJDlbMF0sIG1hdGNoJDlbMV0pOworICAgICAgY2FzZSA1MCA6IAorICAgICAgICAgIHZh
ciBtYXRjaCQxMCA9IG1lbW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xv
YWQxNl9zKG1hdGNoJDEwWzBdLCBtYXRjaCQxMFsxXSk7CisgICAgICBjYXNlIDUxIDogCisgICAg
ICAgICAgdmFyIG1hdGNoJDExID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5pNjRfbG9hZDE2X3UobWF0Y2gkMTFbMF0sIG1hdGNoJDExWzFdKTsKKyAgICAgIGNhc2UgNTIg
OiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMTIgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmk2NF9sb2FkMzJfcyhtYXRjaCQxMlswXSwgbWF0Y2gkMTJbMV0pOworICAgICAg
Y2FzZSA1MyA6IAorICAgICAgICAgIHZhciBtYXRjaCQxMyA9IG1lbW9wKHMpOworICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQzMl91KG1hdGNoJDEzWzBdLCBtYXRjaCQxM1sxXSk7
CisgICAgICBjYXNlIDU0IDogCisgICAgICAgICAgdmFyIG1hdGNoJDE0ID0gbWVtb3Aocyk7Cisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmUobWF0Y2gkMTRbMF0sIG1hdGNoJDE0
WzFdKTsKKyAgICAgIGNhc2UgNTUgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMTUgPSBtZW1vcChz
KTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdG9yZShtYXRjaCQxNVswXSwgbWF0
Y2gkMTVbMV0pOworICAgICAgY2FzZSA1NiA6IAorICAgICAgICAgIHZhciBtYXRjaCQxNiA9IG1l
bW9wKHMpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3N0b3JlKG1hdGNoJDE2WzBd
LCBtYXRjaCQxNlsxXSk7CisgICAgICBjYXNlIDU3IDogCisgICAgICAgICAgdmFyIG1hdGNoJDE3
ID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfc3RvcmUobWF0Y2gk
MTdbMF0sIG1hdGNoJDE3WzFdKTsKKyAgICAgIGNhc2UgNTggOiAKKyAgICAgICAgICB2YXIgbWF0
Y2gkMTggPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zdG9yZTgo
bWF0Y2gkMThbMF0sIG1hdGNoJDE4WzFdKTsKKyAgICAgIGNhc2UgNTkgOiAKKyAgICAgICAgICB2
YXIgbWF0Y2gkMTkgPSBtZW1vcChzKTsKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9z
dG9yZTE2KG1hdGNoJDE5WzBdLCBtYXRjaCQxOVsxXSk7CisgICAgICBjYXNlIDYwIDogCisgICAg
ICAgICAgdmFyIG1hdGNoJDIwID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5pNjRfc3RvcmU4KG1hdGNoJDIwWzBdLCBtYXRjaCQyMFsxXSk7CisgICAgICBjYXNlIDYxIDog
CisgICAgICAgICAgdmFyIG1hdGNoJDIxID0gbWVtb3Aocyk7CisgICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pNjRfc3RvcmUxNihtYXRjaCQyMVswXSwgbWF0Y2gkMjFbMV0pOworICAgICAgY2Fz
ZSA2MiA6IAorICAgICAgICAgIHZhciBtYXRjaCQyMiA9IG1lbW9wKHMpOworICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMzIobWF0Y2gkMjJbMF0sIG1hdGNoJDIyWzFdKTsKKyAg
ICAgIGNhc2UgNjMgOiAKKyAgICAgICAgICBleHBlY3QoMCwgcywgInplcm8gZmxhZyBleHBlY3Rl
ZCIpOworICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuY3VycmVudF9tZW1vcnk7CisgICAgICBj
YXNlIDY0IDogCisgICAgICAgICAgZXhwZWN0KDAsIHMsICJ6ZXJvIGZsYWcgZXhwZWN0ZWQiKTsK
KyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmdyb3dfbWVtb3J5OworICAgICAgY2FzZSA2NSA6
IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2NvbnN0KGF0KHZzMzIsIHMpKTsKKyAg
ICAgIGNhc2UgNjYgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9jb25zdChhdCh2
czY0LCBzKSk7CisgICAgICBjYXNlIDY3IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5m
MzJfY29uc3QoYXQoZjMyLCBzKSk7CisgICAgICBjYXNlIDY4IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mNjRfY29uc3QoYXQoZjY0LCBzKSk7CisgICAgICBjYXNlIDY5IDogCisgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfZXF6OworICAgICAgY2FzZSA3MCA6IAorICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2VxOworICAgICAgY2FzZSA3MSA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaTMyX25lOworICAgICAgY2FzZSA3MiA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTMyX2x0X3M7CisgICAgICBjYXNlIDczIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfbHRfdTsKKyAgICAgIGNhc2UgNzQgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmkzMl9ndF9zOworICAgICAgY2FzZSA3NSA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTMyX2d0X3U7CisgICAgICBjYXNlIDc2IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pMzJfbGVfczsKKyAgICAgIGNhc2UgNzcgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmkzMl9sZV91OworICAgICAgY2FzZSA3OCA6IAorICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTMyX2dlX3M7CisgICAgICBjYXNlIDc5IDogCisgICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pMzJfZ2VfdTsKKyAgICAgIGNhc2UgODAgOiAKKyAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmk2NF9lcXo7CisgICAgICBjYXNlIDgxIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pNjRfZXE7CisgICAgICBjYXNlIDgyIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5pNjRfbmU7CisgICAgICBjYXNlIDgzIDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5p
NjRfbHRfczsKKyAgICAgIGNhc2UgODQgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2
NF9sdF91OworICAgICAgY2FzZSA4NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0
X2d0X3M7CisgICAgICBjYXNlIDg2IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRf
Z3RfdTsKKyAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9s
ZV9zOworICAgICAgY2FzZSA4OCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xl
X3U7CisgICAgICBjYXNlIDg5IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfZ2Vf
czsKKyAgICAgIGNhc2UgOTAgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9nZV91
OworICAgICAgY2FzZSA5MSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2VxOwor
ICAgICAgY2FzZSA5MiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX25lOworICAg
ICAgY2FzZSA5MyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2x0OworICAgICAg
Y2FzZSA5NCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2d0OworICAgICAgY2Fz
ZSA5NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2xlOworICAgICAgY2FzZSA5
NiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2dlOworICAgICAgY2FzZSA5NyA6
IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2VxOworICAgICAgY2FzZSA5OCA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X25lOworICAgICAgY2FzZSA5OSA6IAorICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2x0OworICAgICAgY2FzZSAxMDAgOiAKKyAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9ndDsKKyAgICAgIGNhc2UgMTAxIDogCisgICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfbGU7CisgICAgICBjYXNlIDEwMiA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuZjY0X2dlOworICAgICAgY2FzZSAxMDMgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmkzMl9jbHo7CisgICAgICBjYXNlIDEwNCA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTMyX2N0ejsKKyAgICAgIGNhc2UgMTA1IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfcG9wY250OworICAgICAgY2FzZSAxMDYgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmkzMl9hZGQ7CisgICAgICBjYXNlIDEwNyA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTMyX3N1YjsKKyAgICAgIGNhc2UgMTA4IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfbXVsOworICAgICAgY2FzZSAxMDkgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmkzMl9kaXZfczsKKyAgICAgIGNhc2UgMTEwIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfZGl2X3U7CisgICAgICBjYXNlIDExMSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTMyX3JlbV9zOworICAgICAgY2FzZSAxMTIgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmkzMl9yZW1fdTsKKyAgICAgIGNhc2UgMTEzIDogCisgICAgICAgICAg
cmV0dXJuIE9wZXJhdG9ycy5pMzJfYW5kOworICAgICAgY2FzZSAxMTQgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmkzMl9vcjsKKyAgICAgIGNhc2UgMTE1IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfeG9yOworICAgICAgY2FzZSAxMTYgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmkzMl9zaGw7CisgICAgICBjYXNlIDExNyA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTMyX3Nocl9zOworICAgICAgY2FzZSAxMTggOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmkzMl9zaHJfdTsKKyAgICAgIGNhc2UgMTE5IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfcm90bDsKKyAgICAgIGNhc2UgMTIwIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfcm90cjsKKyAgICAgIGNhc2UgMTIxIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfY2x6OworICAgICAgY2FzZSAxMjIgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmk2NF9jdHo7CisgICAgICBjYXNlIDEyMyA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X3BvcGNudDsKKyAgICAgIGNhc2UgMTI0IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfYWRkOworICAgICAgY2FzZSAxMjUgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmk2NF9zdWI7CisgICAgICBjYXNlIDEyNiA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X211bDsKKyAgICAgIGNhc2UgMTI3IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pNjRfZGl2X3M7CisgICAgICBjYXNlIDEyOCA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X2Rpdl91OworICAgICAgY2FzZSAxMjkgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmk2NF9yZW1fczsKKyAgICAgIGNhc2UgMTMwIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfcmVtX3U7CisgICAgICBjYXNlIDEzMSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTY0X2FuZDsKKyAgICAgIGNhc2UgMTMyIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pNjRfb3I7CisgICAgICBjYXNlIDEzMyA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X3hvcjsKKyAgICAgIGNhc2UgMTM0IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pNjRfc2hsOworICAgICAgY2FzZSAxMzUgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmk2NF9zaHJfczsKKyAgICAgIGNhc2UgMTM2IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pNjRfc2hyX3U7CisgICAgICBjYXNlIDEzNyA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X3JvdGw7CisgICAgICBjYXNlIDEzOCA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X3JvdHI7CisgICAgICBjYXNlIDEzOSA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjMyX2FiczsKKyAgICAgIGNhc2UgMTQwIDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mMzJfbmVnOworICAgICAgY2FzZSAxNDEgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmYzMl9jZWlsOworICAgICAgY2FzZSAxNDIgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmYzMl9mbG9vcjsKKyAgICAgIGNhc2UgMTQzIDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mMzJfdHJ1bmM7CisgICAgICBjYXNlIDE0NCA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjMyX25lYXJlc3Q7CisgICAgICBjYXNlIDE0NSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuZjMyX3NxcnQ7CisgICAgICBjYXNlIDE0NiA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuZjMyX2FkZDsKKyAgICAgIGNhc2UgMTQ3IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5mMzJfc3ViOworICAgICAgY2FzZSAxNDggOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmYzMl9tdWw7CisgICAgICBjYXNlIDE0OSA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjMyX2RpdjsKKyAgICAgIGNhc2UgMTUwIDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mMzJfbWluOworICAgICAgY2FzZSAxNTEgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmYzMl9tYXg7CisgICAgICBjYXNlIDE1MiA6IAorICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuZjMyX2NvcHlzaWduOworICAgICAgY2FzZSAxNTMgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmY2NF9hYnM7CisgICAgICBjYXNlIDE1NCA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjY0X25lZzsKKyAgICAgIGNhc2UgMTU1IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mNjRfY2VpbDsKKyAgICAgIGNhc2UgMTU2IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mNjRfZmxvb3I7CisgICAgICBjYXNlIDE1NyA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjY0X3RydW5jOworICAgICAgY2FzZSAxNTggOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmY2NF9uZWFyZXN0OworICAgICAgY2FzZSAxNTkgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmY2NF9zcXJ0OworICAgICAgY2FzZSAxNjAgOiAKKyAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmY2NF9hZGQ7CisgICAgICBjYXNlIDE2MSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuZjY0X3N1YjsKKyAgICAgIGNhc2UgMTYyIDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5mNjRfbXVsOworICAgICAgY2FzZSAxNjMgOiAKKyAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmY2NF9kaXY7CisgICAgICBjYXNlIDE2NCA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjY0X21pbjsKKyAgICAgIGNhc2UgMTY1IDogCisgICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5mNjRfbWF4OworICAgICAgY2FzZSAxNjYgOiAKKyAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmY2NF9jb3B5c2lnbjsKKyAgICAgIGNhc2UgMTY3IDogCisgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfd3JhcF9pNjQ7CisgICAgICBjYXNlIDE2OCA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaTMyX3RydW5jX3NfZjMyOworICAgICAgY2FzZSAxNjkgOiAKKyAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl90cnVuY191X2YzMjsKKyAgICAgIGNhc2UgMTcw
IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfdHJ1bmNfc19mNjQ7CisgICAgICBj
YXNlIDE3MSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3RydW5jX3VfZjY0Owor
ICAgICAgY2FzZSAxNzIgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9leHRlbmRf
c19pMzI7CisgICAgICBjYXNlIDE3MyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0
X2V4dGVuZF91X2kzMjsKKyAgICAgIGNhc2UgMTc0IDogCisgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pNjRfdHJ1bmNfc19mMzI7CisgICAgICBjYXNlIDE3NSA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X3RydW5jX3VfZjMyOworICAgICAgY2FzZSAxNzYgOiAKKyAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmk2NF90cnVuY19zX2Y2NDsKKyAgICAgIGNhc2UgMTc3IDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfdHJ1bmNfdV9mNjQ7CisgICAgICBjYXNlIDE3
OCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfc19pMzI7CisgICAg
ICBjYXNlIDE3OSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfdV9p
MzI7CisgICAgICBjYXNlIDE4MCA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2Nv
bnZlcnRfc19pNjQ7CisgICAgICBjYXNlIDE4MSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuZjMyX2NvbnZlcnRfdV9pNjQ7CisgICAgICBjYXNlIDE4MiA6IAorICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjMyX2RlbW90ZV9mNjQ7CisgICAgICBjYXNlIDE4MyA6IAorICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pMzI7CisgICAgICBjYXNlIDE4NCA6IAor
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfdV9pMzI7CisgICAgICBjYXNl
IDE4NSA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pNjQ7Cisg
ICAgICBjYXNlIDE4NiA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRf
dV9pNjQ7CisgICAgICBjYXNlIDE4NyA6IAorICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0
X3Byb21vdGVfZjMyOworICAgICAgY2FzZSAxODggOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmkzMl9yZWludGVycHJldF9mMzI7CisgICAgICBjYXNlIDE4OSA6IAorICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTY0X3JlaW50ZXJwcmV0X2Y2NDsKKyAgICAgIGNhc2UgMTkwIDogCisg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfcmVpbnRlcnByZXRfaTMyOworICAgICAgY2Fz
ZSAxOTEgOiAKKyAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9yZWludGVycHJldF9pNjQ7
CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gaW5zdHJfYmxvY2skcHJpbWUocywg
X2VzKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgZXMgPSBfZXM7CisgICAgdmFyIG1hdGNo
ID0gcGVlayhzKTsKKyAgICBpZiAobWF0Y2gpIHsKKyAgICAgIHZhciBtYXRjaCQxID0gbWF0Y2hb
MF07CisgICAgICBpZiAobWF0Y2gkMSAhPT0gNSkgeworICAgICAgICBpZiAobWF0Y2gkMSAhPT0g
MTEpIHsKKyAgICAgICAgICB2YXIgcG9zID0gc1svKiBwb3MgKi8yXVswXTsKKyAgICAgICAgICB2
YXIgZSRwcmltZSA9IGluc3RyKHMpOworICAgICAgICAgIF9lcyA9IC8qIDo6ICovWworICAgICAg
ICAgICAgU291cmNlLiRhdCRhdChlJHByaW1lLCByZWdpb24ocywgcG9zLCBwb3MpKSwKKyAgICAg
ICAgICAgIGVzCisgICAgICAgICAgXTsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGVzOworICAgICAg
ICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGVzOworICAgICAgfQor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBlczsKKyAgICB9CisgIH07Cit9CisKK2Z1
bmN0aW9uIGluc3RyX2Jsb2NrKHMpIHsKKyAgcmV0dXJuIExpc3QucmV2KGluc3RyX2Jsb2NrJHBy
aW1lKHMsIC8qIFtdICovMCkpOworfQorCitmdW5jdGlvbiAkJGNvbnN0KHMpIHsKKyAgdmFyIGMg
PSBhdChpbnN0cl9ibG9jaywgcyk7CisgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0
ZWQiKTsKKyAgcmV0dXJuIGM7Cit9CisKK2Z1bmN0aW9uIGlkKHMpIHsKKyAgdmFyIGJvID0gcGVl
ayhzKTsKKyAgcmV0dXJuIEN1cnJ5Ll8yKExpYi5PcHRpb25bLyogbWFwICovMV0sIGZ1bmN0aW9u
IChwYXJhbSkgeworICAgICAgICAgICAgICBpZiAocGFyYW0gPiAxMSB8fCBwYXJhbSA8IDApIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Iocywgc1svKiBwb3MgKi8yXVswXSwgImludmFs
aWQgc2VjdGlvbiBpZCIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHN3aXRjaCAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgIGNhc2Ug
MCA6IAorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBDdXN0b21TZWN0aW9uICovLTgw
ODAxMDIyMDsKKyAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBUeXBlU2VjdGlvbiAqLzgzNjUwMTAzNTsKKyAgICAgICAgICAgICAgICAg
IGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBJbXBvcnRTZWN0aW9u
ICovNjk2NTE3MzQ0OworICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIEZ1bmNTZWN0aW9uICovMjA1NTU2NDQ5OworICAgICAgICAgICAg
ICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFRhYmxlU2Vj
dGlvbiAqLzEwMzE4NjQyMTU7CisgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogTWVtb3J5U2VjdGlvbiAqLy04NDAyMDMwNjg7CisgICAg
ICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyog
R2xvYmFsU2VjdGlvbiAqLy04NzIzMTMxODI7CisgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAK
KyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogRXhwb3J0U2VjdGlvbiAqLy00NDA2Nzk3
NTk7CisgICAgICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogU3RhcnRTZWN0aW9uICovMzk1NzIwMTMxOworICAgICAgICAgICAgICAgICAgY2Fz
ZSA5IDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEVsZW1TZWN0aW9uICovNDQw
MzgwNjYyOworICAgICAgICAgICAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBDb2RlU2VjdGlvbiAqLzEwMjExMzM4NDg7CisgICAgICAgICAgICAgICAg
ICBjYXNlIDExIDogCisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIERhdGFTZWN0aW9u
ICovNjY0NDc1NDc7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIGJvKTsKK30KKworZnVuY3Rpb24gc2VjdGlvbl93
aXRoX3NpemUodGFnLCBmLCAkJGRlZmF1bHQsIHMpIHsKKyAgdmFyIG1hdGNoID0gaWQocyk7Cisg
IGlmIChtYXRjaCAmJiBDYW1sX29iai5jYW1sX2VxdWFsKG1hdGNoWzBdLCB0YWcpKSB7CisgICAg
Z3VhcmQoZ2V0LCBzKTsKKyAgICByZXR1cm4gc2l6ZWQoZiwgcyk7CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuICQkZGVmYXVsdDsKKyAgfQorfQorCitmdW5jdGlvbiBzZWN0aW9uKHRhZywgZiwg
JCRkZWZhdWx0LCBzKSB7CisgIHJldHVybiBzZWN0aW9uX3dpdGhfc2l6ZSh0YWcsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGY7CisgICAgICAgICAgICB9LCAkJGRlZmF1bHQs
IHMpOworfQorCitmdW5jdGlvbiB0eXBlX3NlY3Rpb24ocykgeworICByZXR1cm4gc2VjdGlvbigv
KiBUeXBlU2VjdGlvbiAqLzgzNjUwMTAzNSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAg
ICAgIHJldHVybiB2ZWMoZnVuY190eXBlLCBwYXJhbSk7CisgICAgICAgICAgICB9LCAvKiBbXSAq
LzAsIHMpOworfQorCitmdW5jdGlvbiBpbXBvcnRfa2luZChzKSB7CisgIHZhciBtYXRjaCA9IGd1
YXJkKGdldCwgcyk7CisgIGlmIChtYXRjaCA+IDMgfHwgbWF0Y2ggPCAwKSB7CisgICAgcmV0dXJu
IGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwgImludmFsaWQgaW1wb3J0IGtpbmQi
KTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgICBjYXNlIDAgOiAK
KyAgICAgICAgICByZXR1cm4gLyogRnVuY0ltcG9ydCAqL0Jsb2NrLl9fKDAsIFthdCgkJHZhciwg
cyldKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiAvKiBUYWJsZUltcG9ydCAq
L0Jsb2NrLl9fKDEsIFt0YWJsZV90eXBlKHMpXSk7CisgICAgICBjYXNlIDIgOiAKKyAgICAgICAg
ICByZXR1cm4gLyogTWVtb3J5SW1wb3J0ICovQmxvY2suX18oMiwgW21lbW9yeV90eXBlKHMpXSk7
CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogR2xvYmFsSW1wb3J0ICovQmxv
Y2suX18oMywgW2dsb2JhbF90eXBlKHMpXSk7CisgICAgICAKKyAgICB9CisgIH0KK30KKworZnVu
Y3Rpb24gJCRpbXBvcnQocykgeworICB2YXIgbW9kdWxlX25hbWUgPSBzdHJpbmcocyk7CisgIHZh
ciBpdGVtX25hbWUgPSBzdHJpbmcocyk7CisgIHZhciBpa2luZCA9IGF0KGltcG9ydF9raW5kLCBz
KTsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAvKiBtb2R1bGVfbmFtZSAqL21v
ZHVsZV9uYW1lLAorICAgICAgICAgIC8qIGl0ZW1fbmFtZSAqL2l0ZW1fbmFtZSwKKyAgICAgICAg
ICAvKiBpa2luZCAqL2lraW5kCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGltcG9ydF9zZWN0
aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb24oLyogSW1wb3J0U2VjdGlvbiAqLzY5NjUxNzM0NCwg
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY3Rpb24gKHBh
cmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdCgkJGltcG9ydCwgcGFy
YW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwg
LyogW10gKi8wLCBzKTsKK30KKworZnVuY3Rpb24gZnVuY19zZWN0aW9uKHMpIHsKKyAgcmV0dXJu
IHNlY3Rpb24oLyogRnVuY1NlY3Rpb24gKi8yMDU1NTY0NDksIGZ1bmN0aW9uIChwYXJhbSkgewor
ICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYXQoJCR2YXIsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAgICAgIH0sIC8qIFtdICovMCwgcyk7Cit9CisKK2Z1
bmN0aW9uIHRhYmxlKHMpIHsKKyAgdmFyIHR0eXBlID0gdGFibGVfdHlwZShzKTsKKyAgcmV0dXJu
IC8qIHJlY29yZCAqL1svKiB0dHlwZSAqL3R0eXBlXTsKK30KKworZnVuY3Rpb24gdGFibGVfc2Vj
dGlvbihzKSB7CisgIHJldHVybiBzZWN0aW9uKC8qIFRhYmxlU2VjdGlvbiAqLzEwMzE4NjQyMTUs
IGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChw
YXJhbSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXQodGFibGUsIHBhcmFt
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKKyAgICAgICAgICAgIH0sIC8q
IFtdICovMCwgcyk7Cit9CisKK2Z1bmN0aW9uIG1lbW9yeShzKSB7CisgIHZhciBtdHlwZSA9IG1l
bW9yeV90eXBlKHMpOworICByZXR1cm4gLyogcmVjb3JkICovWy8qIG10eXBlICovbXR5cGVdOwor
fQorCitmdW5jdGlvbiBtZW1vcnlfc2VjdGlvbihzKSB7CisgIHJldHVybiBzZWN0aW9uKC8qIE1l
bW9yeVNlY3Rpb24gKi8tODQwMjAzMDY4LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAg
ICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGF0KG1lbW9yeSwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSwg
cGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKworZnVuY3Rpb24gZ2xv
YmFsKHMpIHsKKyAgdmFyIGd0eXBlID0gZ2xvYmFsX3R5cGUocyk7CisgIHZhciB2YWx1ZSA9ICQk
Y29uc3Qocyk7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogZ3R5cGUgKi9n
dHlwZSwKKyAgICAgICAgICAvKiB2YWx1ZSAqL3ZhbHVlCisgICAgICAgIF07Cit9CisKK2Z1bmN0
aW9uIGdsb2JhbF9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb24oLyogR2xvYmFsU2VjdGlv
biAqLy04NzIzMTMxODIsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICByZXR1cm4g
dmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
YXQoZ2xvYmFsLCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbSk7Cisg
ICAgICAgICAgICB9LCAvKiBbXSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBleHBvcnRfa2luZChz
KSB7CisgIHZhciBtYXRjaCA9IGd1YXJkKGdldCwgcyk7CisgIGlmIChtYXRjaCA+IDMgfHwgbWF0
Y2ggPCAwKSB7CisgICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwg
ImludmFsaWQgZXhwb3J0IGtpbmQiKTsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKG1hdGNo
KSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1cm4gLyogRnVuY0V4cG9ydCAqLzA7
CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICByZXR1cm4gLyogVGFibGVFeHBvcnQgKi8xOwor
ICAgICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIC8qIE1lbW9yeUV4cG9ydCAqLzI7Cisg
ICAgICBjYXNlIDMgOiAKKyAgICAgICAgICByZXR1cm4gLyogR2xvYmFsRXhwb3J0ICovMzsKKyAg
ICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiAkJGV4cG9ydChzKSB7CisgIHZhciBuYW1l
ID0gc3RyaW5nKHMpOworICB2YXIgZWtpbmQgPSBhdChleHBvcnRfa2luZCwgcyk7CisgIHZhciBp
dGVtID0gYXQoJCR2YXIsIHMpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8q
IG5hbWUgKi9uYW1lLAorICAgICAgICAgIC8qIGVraW5kICovZWtpbmQsCisgICAgICAgICAgLyog
aXRlbSAqL2l0ZW0KKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gZXhwb3J0X3NlY3Rpb24ocykg
eworICByZXR1cm4gc2VjdGlvbigvKiBFeHBvcnRTZWN0aW9uICovLTQ0MDY3OTc1OSwgZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY3Rpb24gKHBhcmFtKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdCgkJGV4cG9ydCwgcGFyYW0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10g
Ki8wLCBzKTsKK30KKworZnVuY3Rpb24gc3RhcnRfc2VjdGlvbihzKSB7CisgIHJldHVybiBzZWN0
aW9uKC8qIFN0YXJ0U2VjdGlvbiAqLzM5NTcyMDEzMSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAg
ICAgICAgICAgIHJldHVybiAvKiBTb21lICovW2F0KCQkdmFyLCBwYXJhbSldOworICAgICAgICAg
ICAgfSwgLyogTm9uZSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBsb2NhbChzKSB7CisgIHZhciBu
ID0gbGVuMzIocyk7CisgIHZhciB0ID0gdmFsdWVfdHlwZShzKTsKKyAgcmV0dXJuIEN1cnJ5Ll8y
KExpYi5MaXN0Wy8qIG1ha2UgKi8wXSwgbiwgdCk7Cit9CisKK2Z1bmN0aW9uIGNvZGUoXywgcykg
eworICB2YXIgbG9jYWxzID0gTGlzdC5mbGF0dGVuKHZlYyhsb2NhbCwgcykpOworICB2YXIgYm9k
eSA9IExpc3QucmV2KGluc3RyX2Jsb2NrJHByaW1lKHMsIC8qIFtdICovMCkpOworICBleHBlY3Qo
MTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisg
ICAgICAgICAgLyogZnR5cGUgKi9Tb3VyY2UuJGF0JGF0KC0xLCBTb3VyY2Uubm9fcmVnaW9uKSwK
KyAgICAgICAgICAvKiBsb2NhbHMgKi9sb2NhbHMsCisgICAgICAgICAgLyogYm9keSAqL2JvZHkK
KyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gY29kZV9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNl
Y3Rpb24oLyogQ29kZVNlY3Rpb24gKi8xMDIxMTMzODQ4LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAg
ICAgICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGF0KGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZWQoY29kZSwgcGFyYW0pOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKwor
ZnVuY3Rpb24gc2VnbWVudChkYXQsIHMpIHsKKyAgdmFyIGluZGV4ID0gYXQoJCR2YXIsIHMpOwor
ICB2YXIgb2Zmc2V0ID0gJCRjb25zdChzKTsKKyAgdmFyIGluaXQgPSBDdXJyeS5fMShkYXQsIHMp
OworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGluZGV4ICovaW5kZXgsCisg
ICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgIC8qIGluaXQgKi9pbml0Cisg
ICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHRhYmxlX3NlZ21lbnQocykgeworICByZXR1cm4gc2Vn
bWVudChmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlv
biAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0KCQkdmFyLCBw
YXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbSk7CisgICAgICAgICAgICB9
LCBzKTsKK30KKworZnVuY3Rpb24gZWxlbV9zZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb24o
LyogRWxlbVNlY3Rpb24gKi80NDAzODA2NjIsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAg
ICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYXQodGFibGVfc2VnbWVudCwgcGFyYW0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSwgcGFyYW0pOworICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKK30KKworZnVu
Y3Rpb24gbWVtb3J5X3NlZ21lbnQocykgeworICByZXR1cm4gc2VnbWVudChzdHJpbmcsIHMpOwor
fQorCitmdW5jdGlvbiBkYXRhX3NlY3Rpb24ocykgeworICByZXR1cm4gc2VjdGlvbigvKiBEYXRh
U2VjdGlvbiAqLzY2NDQ3NTQ3LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgcmV0
dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGF0KG1lbW9yeV9zZWdtZW50LCBwYXJhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
LCBwYXJhbSk7CisgICAgICAgICAgICB9LCAvKiBbXSAqLzAsIHMpOworfQorCitmdW5jdGlvbiBj
dXN0b20oc2l6ZSwgcykgeworICB2YXIgc3RhcnQgPSBzWy8qIHBvcyAqLzJdWzBdOworICBzdHJp
bmcocyk7CisgIHZhciBwYXJ0aWFsX2FyZyA9IHNpemUgLSAoc1svKiBwb3MgKi8yXVswXSAtIHN0
YXJ0IHwgMCkgfCAwOworICB2YXIgcGFydGlhbF9hcmckMSA9IGZ1bmN0aW9uIChwYXJhbSkgewor
ICAgIHJldHVybiBza2lwKHBhcnRpYWxfYXJnLCBwYXJhbSk7CisgIH07CisgIChmdW5jdGlvbiAo
cGFyYW0pIHsKKyAgICAgICAgcmV0dXJuIGd1YXJkKHBhcnRpYWxfYXJnJDEsIHBhcmFtKTsKKyAg
ICAgIH0ocykpOworICByZXR1cm4gLyogdHJ1ZSAqLzE7Cit9CisKK2Z1bmN0aW9uIGN1c3RvbV9z
ZWN0aW9uKHMpIHsKKyAgcmV0dXJuIHNlY3Rpb25fd2l0aF9zaXplKC8qIEN1c3RvbVNlY3Rpb24g
Ki8tODA4MDEwMjIwLCBjdXN0b20sIC8qIGZhbHNlICovMCwgcyk7Cit9CisKK2Z1bmN0aW9uIGl0
ZXJhdGUoZiwgcykgeworICB3aGlsZSh0cnVlKSB7CisgICAgaWYgKEN1cnJ5Ll8xKGYsIHMpKSB7
CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1vZHVsZV8ocykgeworICB2YXIgbWFn
aWMgPSB1MzIocyk7CisgICQkcmVxdWlyZSgrKG1hZ2ljID09PSAxODM2Mjc4MDE2KSwgcywgMCwg
Im1hZ2ljIGhlYWRlciBub3QgZGV0ZWN0ZWQiKTsKKyAgdmFyIHZlcnNpb24gPSB1MzIocyk7Cisg
ICQkcmVxdWlyZSgrKHZlcnNpb24gPT09IEVuY29kZS52ZXJzaW9uKSwgcywgNCwgInVua25vd24g
YmluYXJ5IHZlcnNpb24iKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciB0
eXBlcyA9IHR5cGVfc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7Cisg
IHZhciBpbXBvcnRzID0gaW1wb3J0X3NlY3Rpb24ocyk7CisgIGl0ZXJhdGUoY3VzdG9tX3NlY3Rp
b24sIHMpOworICB2YXIgZnVuY190eXBlcyA9IGZ1bmNfc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShj
dXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciB0YWJsZXMgPSB0YWJsZV9zZWN0aW9uKHMpOworICBp
dGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKKyAgdmFyIG1lbW9yaWVzID0gbWVtb3J5X3NlY3Rp
b24ocyk7CisgIGl0ZXJhdGUoY3VzdG9tX3NlY3Rpb24sIHMpOworICB2YXIgZ2xvYmFscyA9IGds
b2JhbF9zZWN0aW9uKHMpOworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKKyAgdmFyICQk
ZXhwb3J0cyA9IGV4cG9ydF9zZWN0aW9uKHMpOworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBz
KTsKKyAgdmFyIHN0YXJ0ID0gc3RhcnRfc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0b21fc2Vj
dGlvbiwgcyk7CisgIHZhciBlbGVtcyA9IGVsZW1fc2VjdGlvbihzKTsKKyAgaXRlcmF0ZShjdXN0
b21fc2VjdGlvbiwgcyk7CisgIHZhciBmdW5jX2JvZGllcyA9IGNvZGVfc2VjdGlvbihzKTsKKyAg
aXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7CisgIHZhciBkYXRhID0gZGF0YV9zZWN0aW9uKHMp
OworICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKKyAgJCRyZXF1aXJlKCsoc1svKiBwb3Mg
Ki8yXVswXSA9PT0gc1svKiBieXRlcyAqLzFdLmxlbmd0aCksIHMsIHNbLyogYnl0ZXMgKi8xXS5s
ZW5ndGgsICJqdW5rIGFmdGVyIGxhc3Qgc2VjdGlvbiIpOworICAkJHJlcXVpcmUoKyhMaXN0Lmxl
bmd0aChmdW5jX3R5cGVzKSA9PT0gTGlzdC5sZW5ndGgoZnVuY19ib2RpZXMpKSwgcywgc1svKiBi
eXRlcyAqLzFdLmxlbmd0aCwgImZ1bmN0aW9uIGFuZCBjb2RlIHNlY3Rpb24gaGF2ZSBpbmNvbnNp
c3RlbnQgbGVuZ3RocyIpOworICB2YXIgZnVuY3MgPSBMaXN0Lm1hcDIoZnVuY3Rpb24gKHQsIGYp
IHsKKyAgICAgICAgdmFyIGluaXQgPSBmWy8qIGl0ICovMV07CisgICAgICAgIHJldHVybiBTb3Vy
Y2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogZnR5cGUgKi90
LAorICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2FscyAqLzFdLAor
ICAgICAgICAgICAgICAgICAgICAvKiBib2R5ICovaW5pdFsvKiBib2R5ICovMl0KKyAgICAgICAg
ICAgICAgICAgIF0sIGZbLyogYXQgKi8wXSk7CisgICAgICB9LCBmdW5jX3R5cGVzLCBmdW5jX2Jv
ZGllcyk7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogdHlwZXMgKi90eXBl
cywKKyAgICAgICAgICAvKiBnbG9iYWxzICovZ2xvYmFscywKKyAgICAgICAgICAvKiB0YWJsZXMg
Ki90YWJsZXMsCisgICAgICAgICAgLyogbWVtb3JpZXMgKi9tZW1vcmllcywKKyAgICAgICAgICAv
KiBmdW5jcyAqL2Z1bmNzLAorICAgICAgICAgIC8qIHN0YXJ0ICovc3RhcnQsCisgICAgICAgICAg
LyogZWxlbXMgKi9lbGVtcywKKyAgICAgICAgICAvKiBkYXRhICovZGF0YSwKKyAgICAgICAgICAv
KiBpbXBvcnRzICovaW1wb3J0cywKKyAgICAgICAgICAvKiBleHBvcnRzICovJCRleHBvcnRzCisg
ICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGRlY29kZShuYW1lLCBicykgeworICByZXR1cm4gYXQo
bW9kdWxlXywgc3RyZWFtKG5hbWUsIGJzKSk7Cit9CisKK2V4cG9ydHMuQ29kZSAgID0gQ29kZSQx
OworZXhwb3J0cy5kZWNvZGUgPSBkZWNvZGU7CisvKiBDb2RlIE5vdCBhIHB1cmUgbW9kdWxlICov
CisvLy8vLy8vLyBlbmQgb2YgZGVjb2RlLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0
czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2VuY29kZSddID0gZnVuY3Rpb24oKSB7CivCoCDC
oCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgZW5jb2RlLmpzIC8vLy8vLy8v
CisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJ
VCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEYzMiAgICAgICAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9mMzIiKTsKK3ZhciBGNjQgICAgICAgICAgICAgICAgICAgICA9IHJlcXVp
cmUoIi4vZjY0Iik7Cit2YXIgTGliICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2xp
YiIpOwordmFyIENoYXIgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL2NoYXIiKTsKK3ZhciBMaXN0ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQnl0ZXMgICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYnl0ZXMiKTsKK3ZhciBDdXJyeSAgICAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyICQkRXJy
b3IgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9lcnJvciIpOwordmFyIEJ1ZmZlciAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2J1ZmZlciIpOwordmFy
IFNvdXJjZSAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciBDYW1s
X29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29i
aiIpOwordmFyIENhbWxfaW50NjQgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL2NhbWxfaW50NjQiKTsKK3ZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCit2YXIg
Q29kZSA9ICQkRXJyb3IuTWFrZSgvKiBtb2R1bGUgKi9bXSk7CisKK3ZhciBDb2RlJDEgPSBDb2Rl
Wy8qIEVycm9yICovMF07CisKK2Z1bmN0aW9uIHN0cmVhbSgpIHsKKyAgcmV0dXJuIC8qIHJlY29y
ZCAqL1sKKyAgICAgICAgICAvKiBidWYgKi9CdWZmZXIuY3JlYXRlKDgxOTIpLAorICAgICAgICAg
IC8qIHBhdGNoZXMgKi9bLyogW10gKi8wXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBwYXRj
aChzLCBwb3MsIGIpIHsKKyAgc1svKiBwYXRjaGVzICovMV1bMF0gPSAvKiA6OiAqL1sKKyAgICAv
KiB0dXBsZSAqL1sKKyAgICAgIHBvcywKKyAgICAgIGIKKyAgICBdLAorICAgIHNbLyogcGF0Y2hl
cyAqLzFdWzBdCisgIF07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGVuY29k
ZShtKSB7CisgIHZhciBzID0gc3RyZWFtKC8qICgpICovMCk7CisgIHZhciB1OCA9IGZ1bmN0aW9u
IChpKSB7CisgICAgdmFyIGIgPSBDaGFyLmNocihpICYgMjU1KTsKKyAgICByZXR1cm4gQnVmZmVy
LmFkZF9jaGFyKHNbLyogYnVmICovMF0sIGIpOworICB9OworICB2YXIgdTE2ID0gZnVuY3Rpb24g
KGkpIHsKKyAgICB1OChpICYgMjU1KTsKKyAgICByZXR1cm4gdTgoKGkgPj4+IDgpKTsKKyAgfTsK
KyAgdmFyIHUzMiA9IGZ1bmN0aW9uIChpKSB7CisgICAgdTE2KGkgJiA2NTUzNSk7CisgICAgcmV0
dXJuIHUxNigoaSA+PiAxNikpOworICB9OworICB2YXIgdnU2NCA9IGZ1bmN0aW9uIChfaSkgewor
ICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBpID0gX2k7CisgICAgICB2YXIgYiA9IGlbMV0g
JiAvKiBsbyAqLzEyNyB8IDA7CisgICAgICBpZiAoQ2FtbF9pbnQ2NC5sZSgvKiBpbnQ2NCAqL1sK
KyAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAvKiBsbyAqLzAKKyAgICAg
ICAgICAgIF0sIGkpICYmIENhbWxfaW50NjQubHQoaSwgLyogaW50NjQgKi9bCisgICAgICAgICAg
ICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgLyogbG8gKi8xMjgKKyAgICAgICAgICAgIF0p
KSB7CisgICAgICAgIHJldHVybiB1OChiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICB1OChiIHwgMTI4KTsKKyAgICAgICAgX2kgPSBDYW1sX2ludDY0Lmxzcl8oaSwgNyk7CisgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHZz
NjQgPSBmdW5jdGlvbiAoX2kpIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgaSA9IF9p
OworICAgICAgdmFyIGIgPSBpWzFdICYgLyogbG8gKi8xMjcgfCAwOworICAgICAgaWYgKENhbWxf
aW50NjQubGUoLyogaW50NjQgKi9bCisgICAgICAgICAgICAgIC8qIGhpICovLTEsCisgICAgICAg
ICAgICAgIC8qIGxvICovNDI5NDk2NzIzMgorICAgICAgICAgICAgXSwgaSkgJiYgQ2FtbF9pbnQ2
NC5sdChpLCAvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAg
ICAgICAvKiBsbyAqLzY0CisgICAgICAgICAgICBdKSkgeworICAgICAgICByZXR1cm4gdTgoYik7
CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdTgoYiB8IDEyOCk7CisgICAgICAgIF9p
ID0gQ2FtbF9pbnQ2NC5hc3JfKGksIDcpOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAor
ICAgICAgfQorICAgIH07CisgIH07CisgIHZhciB2dTMyID0gZnVuY3Rpb24gKGkpIHsKKyAgICBy
ZXR1cm4gdnU2NChDYW1sX2ludDY0LmFuZF8oQ2FtbF9pbnQ2NC5vZl9pbnQzMihpKSwgLyogaW50
NjQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAgICAgICAg
ICAgLyogbG8gKi80Mjk0OTY3Mjk1CisgICAgICAgICAgICAgICAgICBdKSk7CisgIH07CisgIHZh
ciBsZW4gPSBmdW5jdGlvbiAoaSkgeworICAgIGlmIChpICE9PSBpKSB7CisgICAgICBDdXJyeS5f
MihDb2RlWy8qIGVycm9yICovMl0sIFNvdXJjZS5ub19yZWdpb24sICJjYW5ub3QgZW5jb2RlIGxl
bmd0aCB3aXRoIG1vcmUgdGhhbiAzMiBiaXQiKTsKKyAgICB9CisgICAgcmV0dXJuIHZ1MzIoaSk7
CisgIH07CisgIHZhciBib29sID0gZnVuY3Rpb24gKGIpIHsKKyAgICB2YXIgaSA9IGIgPyAxIDog
MDsKKyAgICByZXR1cm4gdnU2NChDYW1sX2ludDY0LmFuZF8oQ2FtbF9pbnQ2NC5vZl9pbnQzMihp
KSwgLyogaW50NjQgKi9bCisgICAgICAgICAgICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAg
ICAgICAgICAgICAgLyogbG8gKi8xCisgICAgICAgICAgICAgICAgICBdKSk7CisgIH07CisgIHZh
ciBzdHJpbmcgPSBmdW5jdGlvbiAoYnMpIHsKKyAgICBsZW4oYnMubGVuZ3RoKTsKKyAgICByZXR1
cm4gQnVmZmVyLmFkZF9zdHJpbmcoc1svKiBidWYgKi8wXSwgYnMpOworICB9OworICB2YXIgdmVj
ID0gZnVuY3Rpb24gKGYsIHhzKSB7CisgICAgbGVuKExpc3QubGVuZ3RoKHhzKSk7CisgICAgcmV0
dXJuIExpc3QuaXRlcihmLCB4cyk7CisgIH07CisgIHZhciBnYXAzMiA9IGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgcCA9IEJ1ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSk7CisgICAgdTMyKDApOwor
ICAgIHU4KDApOworICAgIHJldHVybiBwOworICB9OworICB2YXIgcGF0Y2hfZ2FwMzIgPSBmdW5j
dGlvbiAocCwgbikgeworICAgIGlmIChuID4gMjY4NDM1NDU1KSB7CisgICAgICB0aHJvdyBbCisg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcv
d2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAg
ICAgICAgICAgODAsCisgICAgICAgICAgICAgIDYKKyAgICAgICAgICAgIF0KKyAgICAgICAgICBd
OworICAgIH0KKyAgICBwYXRjaChzLCBwLCBDaGFyLmNocigobiB8IDEyOCkgJiAyNTUpKTsKKyAg
ICBwYXRjaChzLCBwICsgMSB8IDAsIENoYXIuY2hyKCgobiA+Pj4gNykgfCAxMjgpICYgMjU1KSk7
CisgICAgcGF0Y2gocywgcCArIDIgfCAwLCBDaGFyLmNocigoKG4gPj4+IDE0KSB8IDEyOCkgJiAy
NTUpKTsKKyAgICBwYXRjaChzLCBwICsgMyB8IDAsIENoYXIuY2hyKCgobiA+Pj4gMjEpIHwgMTI4
KSAmIDI1NSkpOworICAgIHJldHVybiBwYXRjaChzLCBwICsgNCB8IDAsIENoYXIuY2hyKChuID4+
PiAyOCkgJiAyNTUpKTsKKyAgfTsKKyAgdmFyIHZhbHVlX3R5cGUgPSBmdW5jdGlvbiAocGFyYW0p
IHsKKyAgICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICByZXR1
cm4gdnM2NCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBoaSAqLy0xLAor
ICAgICAgICAgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI5NQorICAgICAgICAgICAgICAg
ICAgICBdKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiB2czY0KC8qIGludDY0
ICovWworICAgICAgICAgICAgICAgICAgICAgIC8qIGhpICovLTEsCisgICAgICAgICAgICAgICAg
ICAgICAgLyogbG8gKi80Mjk0OTY3Mjk0CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAg
Y2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIHZzNjQoLyogaW50NjQgKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgLyogaGkgKi8tMSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBsbyAqLzQy
OTQ5NjcyOTMKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICBjYXNlIDMgOiAKKyAgICAg
ICAgICByZXR1cm4gdnM2NCgvKiBpbnQ2NCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAvKiBo
aSAqLy0xLAorICAgICAgICAgICAgICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI5MgorICAgICAg
ICAgICAgICAgICAgICBdKTsKKyAgICAgIAorICAgIH0KKyAgfTsKKyAgdmFyIHN0YWNrX3R5cGUg
PSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIGlmIChwYXJhbVsx
XSkgeworICAgICAgICByZXR1cm4gQ3VycnkuXzIoQ29kZVsvKiBlcnJvciAqLzJdLCBTb3VyY2Uu
bm9fcmVnaW9uLCAiY2Fubm90IGVuY29kZSBzdGFjayB0eXBlIHdpdGggYXJpdHkgPiAxICh5ZXQp
Iik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX3R5cGUocGFy
YW1bMF0pOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiB2czY0KC8q
IGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkgKi8tMSwKKyAgICAgICAgICAgICAg
ICAgIC8qIGxvICovNDI5NDk2NzIzMgorICAgICAgICAgICAgICAgIF0pOworICAgIH0KKyAgfTsK
KyAgdmFyIGZ1bmNfdHlwZSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHZzNjQoLyogaW50NjQg
Ki9bCisgICAgICAgICAgLyogaGkgKi8tMSwKKyAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyNjQK
KyAgICAgICAgXSk7CisgICAgdmVjKHZhbHVlX3R5cGUsIHBhcmFtWzBdKTsKKyAgICByZXR1cm4g
dmVjKHZhbHVlX3R5cGUsIHBhcmFtWzFdKTsKKyAgfTsKKyAgdmFyIGxpbWl0cyA9IGZ1bmN0aW9u
ICh2dSwgcGFyYW0pIHsKKyAgICB2YXIgbWF4ID0gcGFyYW1bLyogbWF4ICovMV07CisgICAgYm9v
bCgrKG1heCAhPT0gLyogTm9uZSAqLzApKTsKKyAgICBDdXJyeS5fMSh2dSwgcGFyYW1bLyogbWlu
ICovMF0pOworICAgIHJldHVybiBDdXJyeS5fMihMaWIuT3B0aW9uWy8qIGFwcCAqLzJdLCB2dSwg
bWF4KTsKKyAgfTsKKyAgdmFyIHRhYmxlX3R5cGUgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICB2
czY0KC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovLTEsCisgICAgICAgICAgLyogbG8g
Ki80Mjk0OTY3MjgwCisgICAgICAgIF0pOworICAgIHJldHVybiBsaW1pdHModnUzMiwgcGFyYW1b
MF0pOworICB9OworICB2YXIgbWVtb3J5X3R5cGUgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBy
ZXR1cm4gbGltaXRzKHZ1MzIsIHBhcmFtWzBdKTsKKyAgfTsKKyAgdmFyIGdsb2JhbF90eXBlID0g
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgdmFsdWVfdHlwZShwYXJhbVswXSk7CisgICAgdmFyIHBh
cmFtJDEgPSBwYXJhbVsxXTsKKyAgICBpZiAocGFyYW0kMSAhPT0gMCkgeworICAgICAgcmV0dXJu
IHU4KDEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiB1OCgwKTsKKyAgICB9Cisg
IH07CisgIHZhciBtZW1vcCA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHZ1MzIocGFyYW1bLyog
YWxpZ24gKi8xXSk7CisgICAgcmV0dXJuIHZ1MzIocGFyYW1bLyogb2Zmc2V0ICovMl0pOworICB9
OworICB2YXIgJCR2YXIgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB2dTMyKHhbLyogaXQg
Ki8xXSk7CisgIH07CisgIHZhciBpbnN0ciA9IGZ1bmN0aW9uIChlKSB7CisgICAgdmFyIG1hdGNo
ID0gZVsvKiBpdCAqLzFdOworICAgIGlmICh0eXBlb2YgbWF0Y2ggPT09ICJudW1iZXIiKSB7Cisg
ICAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgcmV0
dXJuIHU4KDApOworICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgIHJldHVybiB1OCgxKTsK
KyAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICByZXR1cm4gdTgoMTUpOworICAgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICAgIHJldHVybiB1OCgyNik7CisgICAgICAgIGNhc2UgNCA6IAor
ICAgICAgICAgICAgcmV0dXJuIHU4KDI3KTsKKyAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAg
ICB1OCg2Myk7CisgICAgICAgICAgICByZXR1cm4gdTgoMCk7CisgICAgICAgIGNhc2UgNiA6IAor
ICAgICAgICAgICAgdTgoNjQpOworICAgICAgICAgICAgcmV0dXJuIHU4KDApOworICAgICAgICAK
KyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzd2l0Y2ggKG1hdGNoLnRhZyB8IDAp
IHsKKyAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICB1OCgyKTsKKyAgICAgICAgICAgIHN0
YWNrX3R5cGUobWF0Y2hbMF0pOworICAgICAgICAgICAgTGlzdC5pdGVyKGluc3RyLCBtYXRjaFsx
XSk7CisgICAgICAgICAgICByZXR1cm4gdTgoMTEpOworICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgIHU4KDMpOworICAgICAgICAgICAgc3RhY2tfdHlwZShtYXRjaFswXSk7CisgICAgICAg
ICAgICBMaXN0Lml0ZXIoaW5zdHIsIG1hdGNoWzFdKTsKKyAgICAgICAgICAgIHJldHVybiB1OCgx
MSk7CisgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgdmFyIGVzMiA9IG1hdGNoWzJdOwor
ICAgICAgICAgICAgdTgoNCk7CisgICAgICAgICAgICBzdGFja190eXBlKG1hdGNoWzBdKTsKKyAg
ICAgICAgICAgIExpc3QuaXRlcihpbnN0ciwgbWF0Y2hbMV0pOworICAgICAgICAgICAgaWYgKGVz
MiAhPT0gLyogW10gKi8wKSB7CisgICAgICAgICAgICAgIHU4KDUpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgTGlzdC5pdGVyKGluc3RyLCBlczIpOworICAgICAgICAgICAgcmV0dXJuIHU4
KDExKTsKKyAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICB1OCgxMik7CisgICAgICAgICAg
ICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBpdCAqLzFdKTsKKyAgICAgICAgY2FzZSA0IDogCisg
ICAgICAgICAgICB1OCgxMyk7CisgICAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBp
dCAqLzFdKTsKKyAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICB1OCgxNCk7CisgICAgICAg
ICAgICB2ZWMoJCR2YXIsIG1hdGNoWzBdKTsKKyAgICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNo
WzFdWy8qIGl0ICovMV0pOworICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgIHU4KDE2KTsK
KyAgICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNoWzBdWy8qIGl0ICovMV0pOworICAgICAgICBj
YXNlIDcgOiAKKyAgICAgICAgICAgIHU4KDE3KTsKKyAgICAgICAgICAgIHZ1MzIobWF0Y2hbMF1b
LyogaXQgKi8xXSk7CisgICAgICAgICAgICByZXR1cm4gdTgoMCk7CisgICAgICAgIGNhc2UgOCA6
IAorICAgICAgICAgICAgdTgoMzIpOworICAgICAgICAgICAgcmV0dXJuIHZ1MzIobWF0Y2hbMF1b
LyogaXQgKi8xXSk7CisgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgdTgoMzMpOworICAg
ICAgICAgICAgcmV0dXJuIHZ1MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgIGNhc2Ug
MTAgOiAKKyAgICAgICAgICAgIHU4KDM0KTsKKyAgICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNo
WzBdWy8qIGl0ICovMV0pOworICAgICAgICBjYXNlIDExIDogCisgICAgICAgICAgICB1OCgzNSk7
CisgICAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBpdCAqLzFdKTsKKyAgICAgICAg
Y2FzZSAxMiA6IAorICAgICAgICAgICAgdTgoMzYpOworICAgICAgICAgICAgcmV0dXJuIHZ1MzIo
bWF0Y2hbMF1bLyogaXQgKi8xXSk7CisgICAgICAgIGNhc2UgMTMgOiAKKyAgICAgICAgICAgIHZh
ciBtbyA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dpdGNoIChtb1svKiB0eSAqLzBdKSB7Cisg
ICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDEgPSBt
b1svKiBzeiAqLzNdOworICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDEpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBtYXRjaCQxWzBdOworICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG1hdGNoJDJbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDJbMV0gIT09IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1OCg0NSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
OCg0NCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6
IAorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkMlsxXSAhPT0gMCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHU4KDQ3KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHU4KDQ2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50
ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICB1OCg0MCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcCht
byk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMyA9IG1vWy8q
IHN6ICovM107CisgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkMykgeworICAgICAgICAgICAg
ICAgICAgICB2YXIgbWF0Y2gkNCA9IG1hdGNoJDNbMF07CisgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAobWF0Y2gkNFswXSkgeworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkNFsxXSAhPT0gMCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHU4KDQ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4KDQ4
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOworICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQ0WzFdICE9PSAwKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdTgoNTEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBtZW1vcChtbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTgo
NTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDRbMV0gIT09IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1OCg1Myk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
OCg1Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdTgoNDEpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWVtb3AobW8pOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgaWYgKG1v
Wy8qIHN6ICovM10pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIv
dXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVp
bGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTk2
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1OCg0Mik7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7CisgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgICAgICAgICBpZiAobW9bLyogc3ogKi8zXSkgeworICAgICAgICAgICAgICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVj
L2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxOTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIHU4KDQzKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKKyAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE0IDogCisg
ICAgICAgICAgICB2YXIgbW8kMSA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dpdGNoIChtbyQx
Wy8qIHR5ICovMF0pIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAg
ICB2YXIgbWF0Y2gkNSA9IG1vJDFbLyogc3ogKi8zXTsKKyAgICAgICAgICAgICAgICAgIGlmICht
YXRjaCQ1KSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkNVswXSkgeworICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICB1
OCg1OCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyQxKTsKKyAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
dTgoNTkpOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUv
aG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNv
ZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwNCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1MgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdTgoNTQpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7CisgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgICAgICAgICB2YXIgbWF0Y2gkNiA9IG1vJDFbLyogc3ogKi8zXTsKKyAgICAgICAgICAgICAg
ICAgIGlmIChtYXRjaCQ2KSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkNlsw
XSkgeworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAg
ICAgICAgICB1OCg2MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcCht
byQxKTsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgdTgoNjEpOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3Ao
bW8kMSk7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHU4KDYyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9w
KG1vJDEpOworICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgdTgoNTUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7
CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICBpZiAobW8kMVsvKiBzeiAqLzNdKSB7
CisgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29n
bGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9l
bmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwOCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1OAorICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHU4KDU2KTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1lbW9wKG1vJDEpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAg
aWYgKG1vJDFbLyogc3ogKi8zXSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWls
dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJl
dGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyMDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1OCg1
Nyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyQxKTsKKyAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE1IDogCisgICAgICAg
ICAgICB2YXIgbWF0Y2gkNyA9IG1hdGNoWzBdWy8qIGl0ICovMV07CisgICAgICAgICAgICBzd2l0
Y2ggKG1hdGNoJDcudGFnIHwgMCkgeworICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAg
ICAgICAgICAgIHU4KDY1KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB2czY0KENhbWxfaW50
NjQub2ZfaW50MzIobWF0Y2gkN1swXSkpOworICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAg
ICAgICAgICAgICAgIHU4KDY2KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB2czY0KG1hdGNo
JDdbMF0pOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgIHU4KDY3
KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB1MzIoQ3VycnkuXzEoRjMyLnRvX2JpdHMsIG1h
dGNoJDdbMF0pKTsKKyAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICB1
OCg2OCk7CisgICAgICAgICAgICAgICAgICB2YXIgaSA9IEN1cnJ5Ll8xKEY2NC50b19iaXRzLCBt
YXRjaCQ3WzBdKTsKKyAgICAgICAgICAgICAgICAgIHUzMihpWzFdICYgLyogbG8gKi80Mjk0OTY3
Mjk1IHwgMCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdTMyKENhbWxfaW50NjQuYXNyXyhp
LCAzMilbMV0gfCAwKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAxNiA6IAorICAgICAgICAgICAgc3dpdGNoIChtYXRjaFsw
XS50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDY5KTsKKyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoODApOworICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAg
ICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3Nw
ZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAyMjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDI0CisgICAgICAg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAg
ICAgY2FzZSAzIDogCisgICAgICAgICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAg
ICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwv
Z29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9z
cmMvZW5jb2RlLm1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjIxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAyNAorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIHZhciBtYXRjaCQ4ID0g
bWF0Y2hbMF07CisgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDgudGFnIHwgMCkgeworICAgICAg
ICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkOFswXSkg
eworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCg3MCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDcxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAy
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoNzIpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg3Myk7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDc0KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoNzUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDYg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg3Nik7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDc3KTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoNzgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCg3OSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ4WzBdKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDgxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdTgoODIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg4Myk7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDg0KTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
ODUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCg4Nik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDg3KTsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA3IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoODgpOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg4
OSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgOSA6IAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDkwKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDhbMF0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTEpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCg5Mik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDkzKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTQpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg5NSk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHU4KDk2KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKG1hdGNoJDhbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAw
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTcpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg5OCk7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDk5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoMTAwKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTAxKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTAy
KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAxOCA6IAorICAgICAgICAgICAgdmFyIG1hdGNoJDkgPSBt
YXRjaFswXTsKKyAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkOS50YWcgfCAwKSB7CisgICAgICAg
ICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ5WzBdKSB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDEwMyk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwNCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwNSk7CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRj
aCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDEyMSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEyMik7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEyMyk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgc3dp
dGNoIChtYXRjaCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0MCk7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEzOSk7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDE0MSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHU4KDE0Mik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0Myk7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE0NCk7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHU4KDE0NSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChtYXRjaCQ5WzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1NCk7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1
Myk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDE1NSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1Nik7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE1Nyk7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDE1OCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHU4KDE1OSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTkgOiAKKyAgICAgICAg
ICAgIHZhciBtYXRjaCQxMCA9IG1hdGNoWzBdOworICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQx
MC50YWcgfCAwKSB7CisgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAgICAg
c3dpdGNoIChtYXRjaCQxMFswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMDYpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMDcpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxMDgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxMDkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTApOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTEpOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCgxMTIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxMTMpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDgg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTQpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTUp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDEwIDogCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoMTE2KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMSA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDExNyk7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMTgpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dTgoMTE5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxNCA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDEyMCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQxMFswXSkgeworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgx
MjQpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCgxMjUpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjYpOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjcpOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1
OCgxMjgpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxMjkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzApOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzEpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDggOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxMzIpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDkgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxMzMpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEwIDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTM0KTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEzNSk7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCgxMzYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEzIDogCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTM3KTsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAxNCA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEzOCk7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoICht
YXRjaCQxMFswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxNDYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDcpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDgp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCgxNDkpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTApOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTEpOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgx
NTIpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAobWF0Y2gkMTBbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTYwKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTYxKTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTYyKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoMTYzKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY0KTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY1
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoMTY2KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyMCA6IAorICAgICAgICAgICAg
dmFyIG1hdGNoJDExID0gbWF0Y2hbMF07CisgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDExLnRh
ZyB8IDApIHsKKyAgICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKG1hdGNoJDExWzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvdXNyL2xv
Y2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVpbGQvanNs
aWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9m
YWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3Nw
ZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTY3KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDog
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY4KTsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTY5KTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTcwKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoMTcxKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA3
IDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTg4KTsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNo
JDExWzBdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDE3Mik7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE3Myk7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9p
bnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDM0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdOworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxNzQpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNzUpOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNzYpOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxNzcpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxODkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IDIgOiAKKyAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTFbMF0pIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAwIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
MTc4KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdTgoMTc5KTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTgwKTsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSAzIDogCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTgxKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSA0IDogCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5h
c3NlcnRfZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcv
d2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE4Mik7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgNiA6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE5MCk7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgc3dpdGNoICht
YXRjaCQxMVswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxODMpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODQpOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODUp
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1OCgxODYpOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1OCgxODcpOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDUgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0
ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzNjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTkxKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworICB2
YXIgJCRjb25zdCA9IGZ1bmN0aW9uIChjKSB7CisgICAgTGlzdC5pdGVyKGluc3RyLCBjWy8qIGl0
ICovMV0pOworICAgIHJldHVybiB1OCgxMSk7CisgIH07CisgIHZhciBzZWN0aW9uID0gZnVuY3Rp
b24gKGlkLCBmLCB4LCBuZWVkZWQpIHsKKyAgICBpZiAobmVlZGVkKSB7CisgICAgICB1OChpZCk7
CisgICAgICB2YXIgZyA9IGdhcDMyKC8qICgpICovMCk7CisgICAgICB2YXIgcCA9IEJ1ZmZlci5s
ZW5ndGgoc1svKiBidWYgKi8wXSk7CisgICAgICBDdXJyeS5fMShmLCB4KTsKKyAgICAgIHJldHVy
biBwYXRjaF9nYXAzMihnLCBCdWZmZXIubGVuZ3RoKHNbLyogYnVmICovMF0pIC0gcCB8IDApOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgfTsKKyAgdmFyIHR5
cGVfc2VjdGlvbiA9IGZ1bmN0aW9uICh0cykgeworICAgIHJldHVybiBzZWN0aW9uKDEsIGZ1bmN0
aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY190eXBlLCBwYXJh
bSk7CisgICAgICAgICAgICAgIH0sIHRzLCArKHRzICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAg
dmFyICQkaW1wb3J0ID0gZnVuY3Rpb24gKGltKSB7CisgICAgdmFyIG1hdGNoID0gaW1bLyogaXQg
Ki8xXTsKKyAgICBzdHJpbmcobWF0Y2hbLyogbW9kdWxlX25hbWUgKi8wXSk7CisgICAgc3RyaW5n
KG1hdGNoWy8qIGl0ZW1fbmFtZSAqLzFdKTsKKyAgICB2YXIgayA9IG1hdGNoWy8qIGlraW5kICov
Ml07CisgICAgdmFyIG1hdGNoJDEgPSBrWy8qIGl0ICovMV07CisgICAgc3dpdGNoIChtYXRjaCQx
LnRhZyB8IDApIHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHU4KDApOworICAgICAgICAg
IHJldHVybiB2dTMyKG1hdGNoJDFbMF1bLyogaXQgKi8xXSk7CisgICAgICBjYXNlIDEgOiAKKyAg
ICAgICAgICB1OCgxKTsKKyAgICAgICAgICByZXR1cm4gdGFibGVfdHlwZShtYXRjaCQxWzBdKTsK
KyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHU4KDIpOworICAgICAgICAgIHJldHVybiBtZW1v
cnlfdHlwZShtYXRjaCQxWzBdKTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHU4KDMpOwor
ICAgICAgICAgIHJldHVybiBnbG9iYWxfdHlwZShtYXRjaCQxWzBdKTsKKyAgICAgIAorICAgIH0K
KyAgfTsKKyAgdmFyIGltcG9ydF9zZWN0aW9uID0gZnVuY3Rpb24gKGltcykgeworICAgIHJldHVy
biBzZWN0aW9uKDIsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2
ZWMoJCRpbXBvcnQsIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgaW1zLCArKGltcyAhPT0gLyog
W10gKi8wKSk7CisgIH07CisgIHZhciBmdW5jID0gZnVuY3Rpb24gKGYpIHsKKyAgICByZXR1cm4g
dnUzMihmWy8qIGl0ICovMV1bLyogZnR5cGUgKi8wXVsvKiBpdCAqLzFdKTsKKyAgfTsKKyAgdmFy
IGZ1bmNfc2VjdGlvbiA9IGZ1bmN0aW9uIChmcykgeworICAgIHJldHVybiBzZWN0aW9uKDMsIGZ1
bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuYywgcGFyYW0p
OworICAgICAgICAgICAgICB9LCBmcywgKyhmcyAhPT0gLyogW10gKi8wKSk7CisgIH07CisgIHZh
ciB0YWJsZSA9IGZ1bmN0aW9uICh0YWIpIHsKKyAgICB2YXIgbWF0Y2ggPSB0YWJbLyogaXQgKi8x
XTsKKyAgICByZXR1cm4gdGFibGVfdHlwZShtYXRjaFsvKiB0dHlwZSAqLzBdKTsKKyAgfTsKKyAg
dmFyIHRhYmxlX3NlY3Rpb24gPSBmdW5jdGlvbiAodGFicykgeworICAgIHJldHVybiBzZWN0aW9u
KDQsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWModGFibGUs
IHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgdGFicywgKyh0YWJzICE9PSAvKiBbXSAqLzApKTsK
KyAgfTsKKyAgdmFyIG1lbW9yeSA9IGZ1bmN0aW9uIChtZW0pIHsKKyAgICB2YXIgbWF0Y2ggPSBt
ZW1bLyogaXQgKi8xXTsKKyAgICByZXR1cm4gbWVtb3J5X3R5cGUobWF0Y2hbLyogbXR5cGUgKi8w
XSk7CisgIH07CisgIHZhciBtZW1vcnlfc2VjdGlvbiA9IGZ1bmN0aW9uIChtZW1zKSB7CisgICAg
cmV0dXJuIHNlY3Rpb24oNSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHZlYyhtZW1vcnksIHBhcmFtKTsKKyAgICAgICAgICAgICAgfSwgbWVtcywgKyhtZW1zICE9
PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIGdsb2JhbCA9IGZ1bmN0aW9uIChnKSB7CisgICAg
dmFyIG1hdGNoID0gZ1svKiBpdCAqLzFdOworICAgIGdsb2JhbF90eXBlKG1hdGNoWy8qIGd0eXBl
ICovMF0pOworICAgIHJldHVybiAkJGNvbnN0KG1hdGNoWy8qIHZhbHVlICovMV0pOworICB9Owor
ICB2YXIgZ2xvYmFsX3NlY3Rpb24gPSBmdW5jdGlvbiAoZ3MpIHsKKyAgICByZXR1cm4gc2VjdGlv
big2LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmVjKGdsb2Jh
bCwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBncywgKyhncyAhPT0gLyogW10gKi8wKSk7Cisg
IH07CisgIHZhciBleHBvcnRfa2luZCA9IGZ1bmN0aW9uIChrKSB7CisgICAgdmFyIG1hdGNoID0g
a1svKiBpdCAqLzFdOworICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAgIGNhc2UgMCA6IAorICAg
ICAgICAgIHJldHVybiB1OCgwKTsKKyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHJldHVybiB1
OCgxKTsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiB1OCgyKTsKKyAgICAgIGNh
c2UgMyA6IAorICAgICAgICAgIHJldHVybiB1OCgzKTsKKyAgICAgIAorICAgIH0KKyAgfTsKKyAg
dmFyICQkZXhwb3J0ID0gZnVuY3Rpb24gKGV4KSB7CisgICAgdmFyIG1hdGNoID0gZXhbLyogaXQg
Ki8xXTsKKyAgICBzdHJpbmcobWF0Y2hbLyogbmFtZSAqLzBdKTsKKyAgICBleHBvcnRfa2luZCht
YXRjaFsvKiBla2luZCAqLzFdKTsKKyAgICByZXR1cm4gdnUzMihtYXRjaFsvKiBpdGVtICovMl1b
LyogaXQgKi8xXSk7CisgIH07CisgIHZhciBleHBvcnRfc2VjdGlvbiA9IGZ1bmN0aW9uIChleHMp
IHsKKyAgICByZXR1cm4gc2VjdGlvbig3LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdmVjKCQkZXhwb3J0LCBwYXJhbSk7CisgICAgICAgICAgICAgIH0sIGV4cywg
KyhleHMgIT09IC8qIFtdICovMCkpOworICB9OworICB2YXIgc3RhcnRfc2VjdGlvbiA9IGZ1bmN0
aW9uICh4bykgeworICAgIHJldHVybiBzZWN0aW9uKDgsIGZ1bmN0aW9uIChwYXJhbSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMihMaWIuT3B0aW9uWy8qIGFwcCAqLzJdLCAkJHZh
ciwgcGFyYW0pOworICAgICAgICAgICAgICB9LCB4bywgKyh4byAhPT0gLyogTm9uZSAqLzApKTsK
KyAgfTsKKyAgdmFyIGNvbXByZXNzID0gZnVuY3Rpb24gKHRzKSB7CisgICAgdmFyIGNvbWJpbmUg
PSBmdW5jdGlvbiAodCwgdHMpIHsKKyAgICAgIGlmICh0cykgeworICAgICAgICB2YXIgbWF0Y2gg
PSB0c1swXTsKKyAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwodCwgbWF0Y2hbMF0pKSB7
CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgICAgICAgIHQsCisgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFd
ICsgMSB8IDAKKyAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICB0c1sxXQor
ICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
cmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgICAgICAgIHQsCisgICAgICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgICB0cworICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAg
ICAgICAgICAgLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICB0LAorICAgICAgICAgICAg
ICAgICAgMQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgdHMKKyAgICAgICAg
ICAgICAgXTsKKyAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBMaXN0LmZvbGRfcmlnaHQoY29t
YmluZSwgdHMsIC8qIFtdICovMCk7CisgIH07CisgIHZhciBsb2NhbCA9IGZ1bmN0aW9uIChwYXJh
bSkgeworICAgIGxlbihwYXJhbVsxXSk7CisgICAgcmV0dXJuIHZhbHVlX3R5cGUocGFyYW1bMF0p
OworICB9OworICB2YXIgY29kZSA9IGZ1bmN0aW9uIChmKSB7CisgICAgdmFyIG1hdGNoID0gZlsv
KiBpdCAqLzFdOworICAgIHZhciBnID0gZ2FwMzIoLyogKCkgKi8wKTsKKyAgICB2YXIgcCA9IEJ1
ZmZlci5sZW5ndGgoc1svKiBidWYgKi8wXSk7CisgICAgdmVjKGxvY2FsLCBjb21wcmVzcyhtYXRj
aFsvKiBsb2NhbHMgKi8xXSkpOworICAgIExpc3QuaXRlcihpbnN0ciwgbWF0Y2hbLyogYm9keSAq
LzJdKTsKKyAgICB1OCgxMSk7CisgICAgcmV0dXJuIHBhdGNoX2dhcDMyKGcsIEJ1ZmZlci5sZW5n
dGgoc1svKiBidWYgKi8wXSkgLSBwIHwgMCk7CisgIH07CisgIHZhciBjb2RlX3NlY3Rpb24gPSBm
dW5jdGlvbiAoZnMpIHsKKyAgICByZXR1cm4gc2VjdGlvbigxMCwgZnVuY3Rpb24gKHBhcmFtKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYyhjb2RlLCBwYXJhbSk7CisgICAgICAgICAgICAg
IH0sIGZzLCArKGZzICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgdmFyIHNlZ21lbnQgPSBmdW5j
dGlvbiAoZGF0LCBzZWcpIHsKKyAgICB2YXIgbWF0Y2ggPSBzZWdbLyogaXQgKi8xXTsKKyAgICB2
dTMyKG1hdGNoWy8qIGluZGV4ICovMF1bLyogaXQgKi8xXSk7CisgICAgJCRjb25zdChtYXRjaFsv
KiBvZmZzZXQgKi8xXSk7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKGRhdCwgbWF0Y2hbLyogaW5pdCAq
LzJdKTsKKyAgfTsKKyAgdmFyIHRhYmxlX3NlZ21lbnQgPSBmdW5jdGlvbiAoc2VnKSB7CisgICAg
cmV0dXJuIHNlZ21lbnQoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHZlYygkJHZhciwgcGFyYW0pOworICAgICAgICAgICAgICB9LCBzZWcpOworICB9OworICB2YXIg
ZWxlbV9zZWN0aW9uID0gZnVuY3Rpb24gKGVsZW1zKSB7CisgICAgcmV0dXJuIHNlY3Rpb24oOSwg
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYyh0YWJsZV9zZWdt
ZW50LCBwYXJhbSk7CisgICAgICAgICAgICAgIH0sIGVsZW1zLCArKGVsZW1zICE9PSAvKiBbXSAq
LzApKTsKKyAgfTsKKyAgdmFyIG1lbW9yeV9zZWdtZW50ID0gZnVuY3Rpb24gKHNlZykgeworICAg
IHJldHVybiBzZWdtZW50KHN0cmluZywgc2VnKTsKKyAgfTsKKyAgdmFyIG1vZHVsZV8gPSBmdW5j
dGlvbiAobSkgeworICAgIHUzMigxODM2Mjc4MDE2KTsKKyAgICB1MzIoMTMpOworICAgIHR5cGVf
c2VjdGlvbihtWy8qIGl0ICovMV1bLyogdHlwZXMgKi8wXSk7CisgICAgaW1wb3J0X3NlY3Rpb24o
bVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84XSk7CisgICAgZnVuY19zZWN0aW9uKG1bLyogaXQg
Ki8xXVsvKiBmdW5jcyAqLzRdKTsKKyAgICB0YWJsZV9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiB0
YWJsZXMgKi8yXSk7CisgICAgbWVtb3J5X3NlY3Rpb24obVsvKiBpdCAqLzFdWy8qIG1lbW9yaWVz
ICovM10pOworICAgIGdsb2JhbF9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBnbG9iYWxzICovMV0p
OworICAgIGV4cG9ydF9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBleHBvcnRzICovOV0pOworICAg
IHN0YXJ0X3NlY3Rpb24obVsvKiBpdCAqLzFdWy8qIHN0YXJ0ICovNV0pOworICAgIGVsZW1fc2Vj
dGlvbihtWy8qIGl0ICovMV1bLyogZWxlbXMgKi82XSk7CisgICAgY29kZV9zZWN0aW9uKG1bLyog
aXQgKi8xXVsvKiBmdW5jcyAqLzRdKTsKKyAgICB2YXIgZGF0YSA9IG1bLyogaXQgKi8xXVsvKiBk
YXRhICovN107CisgICAgcmV0dXJuIHNlY3Rpb24oMTEsIGZ1bmN0aW9uIChwYXJhbSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiB2ZWMobWVtb3J5X3NlZ21lbnQsIHBhcmFtKTsKKyAgICAgICAg
ICAgICAgfSwgZGF0YSwgKyhkYXRhICE9PSAvKiBbXSAqLzApKTsKKyAgfTsKKyAgbW9kdWxlXyht
KTsKKyAgdmFyIHMkMSA9IHM7CisgIHZhciBicyA9IEJ1ZmZlci50b19ieXRlcyhzJDFbLyogYnVm
ICovMF0pOworICBMaXN0Lml0ZXIoZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgIGJzW3BhcmFt
WzBdXSA9IHBhcmFtWzFdOworICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgfSwgcyQx
Wy8qIHBhdGNoZXMgKi8xXVswXSk7CisgIHJldHVybiBCeXRlcy50b19zdHJpbmcoYnMpOworfQor
Cit2YXIgdmVyc2lvbiA9IDEzOworCitleHBvcnRzLkNvZGUgICAgPSBDb2RlJDE7CitleHBvcnRz
LnZlcnNpb24gPSB2ZXJzaW9uOworZXhwb3J0cy5lbmNvZGUgID0gZW5jb2RlOworLyogQ29kZSBO
b3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGVuY29kZS5qcyAvLy8vLy8vLwor
wqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydlcnJvciddID0g
ZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2Yg
ZXJyb3IuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAx
LjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgU291cmNl
ICAgICAgICAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgPSBy
ZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9u
IE1ha2UoKSB7CisgIHZhciAkJEVycm9yID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiRXJyb3Iu
TWFrZSgqKS5FcnJvciIpOworICB2YXIgd2FybiA9IGZ1bmN0aW9uIChhdCwgbSkgeworICAgIGNv
bnNvbGUuZXJyb3IoU291cmNlLnN0cmluZ19vZl9yZWdpb24oYXQpICsgKCI6IHdhcm5pbmc6ICIg
KyBtKSk7CisgICAgcmV0dXJuIC8qICgpICovMDsKKyAgfTsKKyAgdmFyIGVycm9yID0gZnVuY3Rp
b24gKGF0LCBtKSB7CisgICAgdGhyb3cgWworICAgICAgICAgICQkRXJyb3IsCisgICAgICAgICAg
YXQsCisgICAgICAgICAgbQorICAgICAgICBdOworICB9OworICByZXR1cm4gLyogbW9kdWxlICov
WworICAgICAgICAgIC8qIEVycm9yICovJCRFcnJvciwKKyAgICAgICAgICAvKiB3YXJuICovd2Fy
biwKKyAgICAgICAgICAvKiBlcnJvciAqL2Vycm9yCisgICAgICAgIF07Cit9CisKK2V4cG9ydHMu
TWFrZSA9IE1ha2U7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGVycm9y
LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0
cnlbJ2YzMiddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2YgZjMyLmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBU
IFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIEJsb2NrICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2
YXIgQ3VycnkgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3Zh
ciBGbG9hdCAgICAgICA9IHJlcXVpcmUoIi4vZmxvYXQiKTsKK3ZhciBJbnQzMiAgICAgICA9IHJl
cXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9pbnQzMiIpOwordmFyIFByaW50ZiAgICAgID0gcmVx
dWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3ByaW50ZiIpOwordmFyIENhbWxfZmxvYXQgID0gcmVx
dWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZmxvYXQiKTsKK3ZhciBDYW1sX2Zvcm1hdCA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zvcm1hdCIpOworCitmdW5jdGlvbiBw
cmludF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzKGEpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50
Zi5zcHJpbnRmKC8qIEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEludDMyICovQmxv
Y2suX18oNSwgWworICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwKKyAgICAgICAg
ICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3Jt
YXQgKi8wCisgICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgIiVseCIK
KyAgICAgICAgICAgICAgICBdKSwgSW50MzIuYWJzKDIxMzkwOTUwNDAgXiBhKSk7Cit9CisKK3Zh
ciBpbmNsdWRlID0gRmxvYXQuTWFrZSgvKiBtb2R1bGUgKi9bCisgICAgICAvKiBwb3NfbmFuICov
MjE0MzI4OTM0NCwKKyAgICAgIC8qIG5lZ19uYW4gKi8tNDE5NDMwNCwKKyAgICAgIC8qIGNhbWxf
aW50MzJfYml0c19vZl9mbG9hdCAqL0NhbWxfZmxvYXQuY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0
LAorICAgICAgLyogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICovQ2FtbF9mbG9hdC5jYW1sX2lu
dDMyX2Zsb2F0X29mX2JpdHMsCisgICAgICAvKiBjYW1sX2ludDMyX29mX3N0cmluZyAqL0NhbWxf
Zm9ybWF0LmNhbWxfaW50MzJfb2Zfc3RyaW5nLAorICAgICAgLyogdG9fc3RyaW5nICovSW50MzIu
dG9fc3RyaW5nLAorICAgICAgLyogJWludDMyX2FuZCAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEp
IHsKKyAgICAgICAgcmV0dXJuIHByaW0gJiBwcmltJDE7CisgICAgICB9LAorICAgICAgLyogJWlu
dDMyX29yICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSB8
IHByaW0kMTsKKyAgICAgIH0sCisgICAgICAvKiAlaW50MzJfeG9yICovZnVuY3Rpb24gKHByaW0s
IHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSBeIHByaW0kMTsKKyAgICAgIH0sCisgICAg
ICAvKiBtaW5faW50ICovSW50MzIubWluX2ludCwKKyAgICAgIC8qIG1heF9pbnQgKi9JbnQzMi5t
YXhfaW50LAorICAgICAgLyogemVybyAqL0ludDMyLnplcm8sCisgICAgICAvKiBiYXJlX25hbiAq
LzIxMzkwOTUwNDAsCisgICAgICAvKiBwcmludF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzICovcHJp
bnRfbmFuX3NpZ25pZmljYW5kX2RpZ2l0cworICAgIF0pOworCit2YXIgcG9zX25hbiA9IGluY2x1
ZGVbMF07CisKK3ZhciBuZWdfbmFuID0gaW5jbHVkZVsxXTsKKwordmFyIG9mX2Zsb2F0ID0gaW5j
bHVkZVsyXTsKKwordmFyIHRvX2Zsb2F0ID0gaW5jbHVkZVszXTsKKwordmFyIG9mX3N0cmluZyA9
IGluY2x1ZGVbNF07CisKK3ZhciB0b19zdHJpbmcgPSBpbmNsdWRlWzVdOworCit2YXIgb2ZfYml0
cyA9IGluY2x1ZGVbNl07CisKK3ZhciB0b19iaXRzID0gaW5jbHVkZVs3XTsKKwordmFyIGFkZCA9
IGluY2x1ZGVbOF07CisKK3ZhciBzdWIgPSBpbmNsdWRlWzldOworCit2YXIgbXVsID0gaW5jbHVk
ZVsxMF07CisKK3ZhciBkaXYgPSBpbmNsdWRlWzExXTsKKwordmFyIHNxcnQgPSBpbmNsdWRlWzEy
XTsKKwordmFyIG1pbiA9IGluY2x1ZGVbMTNdOworCit2YXIgbWF4ID0gaW5jbHVkZVsxNF07CisK
K3ZhciBjZWlsID0gaW5jbHVkZVsxNV07CisKK3ZhciBmbG9vciA9IGluY2x1ZGVbMTZdOworCit2
YXIgdHJ1bmMgPSBpbmNsdWRlWzE3XTsKKwordmFyIG5lYXJlc3QgPSBpbmNsdWRlWzE4XTsKKwor
dmFyIGFicyA9IGluY2x1ZGVbMTldOworCit2YXIgbmVnID0gaW5jbHVkZVsyMF07CisKK3ZhciBj
b3B5c2lnbiA9IGluY2x1ZGVbMjFdOworCit2YXIgZXEgPSBpbmNsdWRlWzIyXTsKKwordmFyIG5l
ID0gaW5jbHVkZVsyM107CisKK3ZhciBsdCA9IGluY2x1ZGVbMjRdOworCit2YXIgbGUgPSBpbmNs
dWRlWzI1XTsKKwordmFyIGd0ID0gaW5jbHVkZVsyNl07CisKK3ZhciBnZSA9IGluY2x1ZGVbMjdd
OworCit2YXIgemVybyA9IGluY2x1ZGVbMjhdOworCitleHBvcnRzLnBvc19uYW4gICA9IHBvc19u
YW47CitleHBvcnRzLm5lZ19uYW4gICA9IG5lZ19uYW47CitleHBvcnRzLm9mX2Zsb2F0ICA9IG9m
X2Zsb2F0OworZXhwb3J0cy50b19mbG9hdCAgPSB0b19mbG9hdDsKK2V4cG9ydHMub2Zfc3RyaW5n
ID0gb2Zfc3RyaW5nOworZXhwb3J0cy50b19zdHJpbmcgPSB0b19zdHJpbmc7CitleHBvcnRzLm9m
X2JpdHMgICA9IG9mX2JpdHM7CitleHBvcnRzLnRvX2JpdHMgICA9IHRvX2JpdHM7CitleHBvcnRz
LmFkZCAgICAgICA9IGFkZDsKK2V4cG9ydHMuc3ViICAgICAgID0gc3ViOworZXhwb3J0cy5tdWwg
ICAgICAgPSBtdWw7CitleHBvcnRzLmRpdiAgICAgICA9IGRpdjsKK2V4cG9ydHMuc3FydCAgICAg
ID0gc3FydDsKK2V4cG9ydHMubWluICAgICAgID0gbWluOworZXhwb3J0cy5tYXggICAgICAgPSBt
YXg7CitleHBvcnRzLmNlaWwgICAgICA9IGNlaWw7CitleHBvcnRzLmZsb29yICAgICA9IGZsb29y
OworZXhwb3J0cy50cnVuYyAgICAgPSB0cnVuYzsKK2V4cG9ydHMubmVhcmVzdCAgID0gbmVhcmVz
dDsKK2V4cG9ydHMuYWJzICAgICAgID0gYWJzOworZXhwb3J0cy5uZWcgICAgICAgPSBuZWc7Citl
eHBvcnRzLmNvcHlzaWduICA9IGNvcHlzaWduOworZXhwb3J0cy5lcSAgICAgICAgPSBlcTsKK2V4
cG9ydHMubmUgICAgICAgID0gbmU7CitleHBvcnRzLmx0ICAgICAgICA9IGx0OworZXhwb3J0cy5s
ZSAgICAgICAgPSBsZTsKK2V4cG9ydHMuZ3QgICAgICAgID0gZ3Q7CitleHBvcnRzLmdlICAgICAg
ICA9IGdlOworZXhwb3J0cy56ZXJvICAgICAgPSB6ZXJvOworLyogaW5jbHVkZSBOb3QgYSBwdXJl
IG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIGYzMi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJu
IGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydmNjQnXSA9IGZ1bmN0aW9uKCkgewor
wqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGY2NC5qcyAvLy8vLy8v
LworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVE
SVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBCbG9jayAgICAgICA9IHJlcXVpcmUo
ImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwordmFyIEN1cnJ5ICAgICAgID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2YXIgRmxvYXQgICAgICAgPSByZXF1aXJlKCIu
L2Zsb2F0Iik7Cit2YXIgSW50NjQgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
aW50NjQiKTsKK3ZhciBQcmludGYgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9w
cmludGYiKTsKK3ZhciBDYW1sX2ludDY0ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9j
YW1sX2ludDY0Iik7Cit2YXIgQ2FtbF9mb3JtYXQgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvY2FtbF9mb3JtYXQiKTsKKwordmFyIGJhcmVfbmFuID0gLyogaW50NjQgKi9bCisgIC8qIGhp
ICovMjE0NjQzNTA3MiwKKyAgLyogbG8gKi8wCitdOworCitmdW5jdGlvbiBwcmludF9uYW5fc2ln
bmlmaWNhbmRfZGlnaXRzKGEpIHsKKyAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50Zi5zcHJpbnRmKC8q
IEZvcm1hdCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIEludDY0ICovQmxvY2suX18oNywgWwor
ICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwKKyAgICAgICAgICAgICAgICAgICAg
ICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNp
b24gKi8wLAorICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAg
ICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgIiVMeCIKKyAgICAgICAgICAg
ICAgICBdKSwgSW50NjQuYWJzKC8qIGludDY0ICovWworICAgICAgICAgICAgICAgICAgLyogaGkg
Ki8vKiBoaSAqLzIxNDY0MzUwNzIgXiBhWzBdLAorICAgICAgICAgICAgICAgICAgLyogbG8gKi8o
KC8qIGxvICovMCBeIGFbMV0pID4+PiAwKQorICAgICAgICAgICAgICAgIF0pKTsKK30KKwordmFy
IGluY2x1ZGUgPSBGbG9hdC5NYWtlKC8qIG1vZHVsZSAqL1sKKyAgICAgIC8qIHBvc19uYW4gOiBp
bnQ2NCAqL1sKKyAgICAgICAgLyogaGkgKi8yMTQ2OTU5MzYwLAorICAgICAgICAvKiBsbyAqLzAK
KyAgICAgIF0sCisgICAgICAvKiBuZWdfbmFuIDogaW50NjQgKi9bCisgICAgICAgIC8qIGhpICov
LTUyNDI4OCwKKyAgICAgICAgLyogbG8gKi8wCisgICAgICBdLAorICAgICAgLyogY2FtbF9pbnQ2
NF9iaXRzX29mX2Zsb2F0ICovQ2FtbF9pbnQ2NC5iaXRzX29mX2Zsb2F0LAorICAgICAgLyogY2Ft
bF9pbnQ2NF9mbG9hdF9vZl9iaXRzICovQ2FtbF9pbnQ2NC5mbG9hdF9vZl9iaXRzLAorICAgICAg
LyogY2FtbF9pbnQ2NF9vZl9zdHJpbmcgKi9DYW1sX2Zvcm1hdC5jYW1sX2ludDY0X29mX3N0cmlu
ZywKKyAgICAgIC8qIHRvX3N0cmluZyAqL0ludDY0LnRvX3N0cmluZywKKyAgICAgIC8qICVpbnQ2
NF9hbmQgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAvKiBpbnQ2
NCAqL1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gJiBwcmltJDFbMF0sCisgICAg
ICAgICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gJiBwcmltJDFbMV0pID4+PiAwKQorICAgICAg
ICAgICAgICBdOworICAgICAgfSwKKyAgICAgIC8qICVpbnQ2NF9vciAqL2Z1bmN0aW9uIChwcmlt
LCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgICAg
IC8qIGhpICovcHJpbVswXSB8IHByaW0kMVswXSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLygo
cHJpbVsxXSB8IHByaW0kMVsxXSkgPj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9LAor
ICAgICAgLyogJWludDY0X3hvciAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAg
cmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgICAgICAgIC8qIGhpICovcHJpbVswXSBeIHBy
aW0kMVswXSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLygocHJpbVsxXSBeIHByaW0kMVsxXSkg
Pj4+IDApCisgICAgICAgICAgICAgIF07CisgICAgICB9LAorICAgICAgLyogbWluX2ludCAqL0lu
dDY0Lm1pbl9pbnQsCisgICAgICAvKiBtYXhfaW50ICovSW50NjQubWF4X2ludCwKKyAgICAgIC8q
IHplcm8gKi9JbnQ2NC56ZXJvLAorICAgICAgLyogYmFyZV9uYW4gKi9iYXJlX25hbiwKKyAgICAg
IC8qIHByaW50X25hbl9zaWduaWZpY2FuZF9kaWdpdHMgKi9wcmludF9uYW5fc2lnbmlmaWNhbmRf
ZGlnaXRzCisgICAgXSk7CisKK3ZhciBwb3NfbmFuID0gaW5jbHVkZVswXTsKKwordmFyIG5lZ19u
YW4gPSBpbmNsdWRlWzFdOworCit2YXIgb2ZfZmxvYXQgPSBpbmNsdWRlWzJdOworCit2YXIgdG9f
ZmxvYXQgPSBpbmNsdWRlWzNdOworCit2YXIgb2Zfc3RyaW5nID0gaW5jbHVkZVs0XTsKKwordmFy
IHRvX3N0cmluZyA9IGluY2x1ZGVbNV07CisKK3ZhciBvZl9iaXRzID0gaW5jbHVkZVs2XTsKKwor
dmFyIHRvX2JpdHMgPSBpbmNsdWRlWzddOworCit2YXIgYWRkID0gaW5jbHVkZVs4XTsKKwordmFy
IHN1YiA9IGluY2x1ZGVbOV07CisKK3ZhciBtdWwgPSBpbmNsdWRlWzEwXTsKKwordmFyIGRpdiA9
IGluY2x1ZGVbMTFdOworCit2YXIgc3FydCA9IGluY2x1ZGVbMTJdOworCit2YXIgbWluID0gaW5j
bHVkZVsxM107CisKK3ZhciBtYXggPSBpbmNsdWRlWzE0XTsKKwordmFyIGNlaWwgPSBpbmNsdWRl
WzE1XTsKKwordmFyIGZsb29yID0gaW5jbHVkZVsxNl07CisKK3ZhciB0cnVuYyA9IGluY2x1ZGVb
MTddOworCit2YXIgbmVhcmVzdCA9IGluY2x1ZGVbMThdOworCit2YXIgYWJzID0gaW5jbHVkZVsx
OV07CisKK3ZhciBuZWcgPSBpbmNsdWRlWzIwXTsKKwordmFyIGNvcHlzaWduID0gaW5jbHVkZVsy
MV07CisKK3ZhciBlcSA9IGluY2x1ZGVbMjJdOworCit2YXIgbmUgPSBpbmNsdWRlWzIzXTsKKwor
dmFyIGx0ID0gaW5jbHVkZVsyNF07CisKK3ZhciBsZSA9IGluY2x1ZGVbMjVdOworCit2YXIgZ3Qg
PSBpbmNsdWRlWzI2XTsKKwordmFyIGdlID0gaW5jbHVkZVsyN107CisKK3ZhciB6ZXJvID0gaW5j
bHVkZVsyOF07CisKK2V4cG9ydHMucG9zX25hbiAgID0gcG9zX25hbjsKK2V4cG9ydHMubmVnX25h
biAgID0gbmVnX25hbjsKK2V4cG9ydHMub2ZfZmxvYXQgID0gb2ZfZmxvYXQ7CitleHBvcnRzLnRv
X2Zsb2F0ICA9IHRvX2Zsb2F0OworZXhwb3J0cy5vZl9zdHJpbmcgPSBvZl9zdHJpbmc7CitleHBv
cnRzLnRvX3N0cmluZyA9IHRvX3N0cmluZzsKK2V4cG9ydHMub2ZfYml0cyAgID0gb2ZfYml0czsK
K2V4cG9ydHMudG9fYml0cyAgID0gdG9fYml0czsKK2V4cG9ydHMuYWRkICAgICAgID0gYWRkOwor
ZXhwb3J0cy5zdWIgICAgICAgPSBzdWI7CitleHBvcnRzLm11bCAgICAgICA9IG11bDsKK2V4cG9y
dHMuZGl2ICAgICAgID0gZGl2OworZXhwb3J0cy5zcXJ0ICAgICAgPSBzcXJ0OworZXhwb3J0cy5t
aW4gICAgICAgPSBtaW47CitleHBvcnRzLm1heCAgICAgICA9IG1heDsKK2V4cG9ydHMuY2VpbCAg
ICAgID0gY2VpbDsKK2V4cG9ydHMuZmxvb3IgICAgID0gZmxvb3I7CitleHBvcnRzLnRydW5jICAg
ICA9IHRydW5jOworZXhwb3J0cy5uZWFyZXN0ICAgPSBuZWFyZXN0OworZXhwb3J0cy5hYnMgICAg
ICAgPSBhYnM7CitleHBvcnRzLm5lZyAgICAgICA9IG5lZzsKK2V4cG9ydHMuY29weXNpZ24gID0g
Y29weXNpZ247CitleHBvcnRzLmVxICAgICAgICA9IGVxOworZXhwb3J0cy5uZSAgICAgICAgPSBu
ZTsKK2V4cG9ydHMubHQgICAgICAgID0gbHQ7CitleHBvcnRzLmxlICAgICAgICA9IGxlOworZXhw
b3J0cy5ndCAgICAgICAgPSBndDsKK2V4cG9ydHMuZ2UgICAgICAgID0gZ2U7CitleHBvcnRzLnpl
cm8gICAgICA9IHplcm87CisvKiBpbmNsdWRlIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8v
LyBlbmQgb2YgZjY0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisK
KworICBfcmVnaXN0cnlbJ2Zsb2F0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRz
ID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBmbG9hdC5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVk
IGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisn
dXNlIHN0cmljdCc7CisKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyICQkU3RyaW5nICAgICAgICAgICAgICAgID0g
cmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwordmFyIENhbWxfb2JqICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIg
UGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVy
dmFzaXZlcyIpOwordmFyIENhbWxfZm9ybWF0ICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxh
dGZvcm0vbGliL2pzL2NhbWxfZm9ybWF0Iik7Cit2YXIgQ2FtbF9zdHJpbmcgICAgICAgICAgICAg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9zdHJpbmciKTsKK3ZhciBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBNYWtlKFJlcCkgeworICB2YXIgcG9zX25hbiA9
IFJlcFsvKiBwb3NfbmFuICovMF07CisgIHZhciBuZWdfbmFuID0gUmVwWy8qIG5lZ19uYW4gKi8x
XTsKKyAgdmFyIGJhcmVfbmFuID0gUmVwWy8qIGJhcmVfbmFuICovMTJdOworICB2YXIgb2ZfZmxv
YXQgPSBSZXBbLyogYml0c19vZl9mbG9hdCAqLzJdOworICB2YXIgdG9fZmxvYXQgPSBSZXBbLyog
ZmxvYXRfb2ZfYml0cyAqLzNdOworICB2YXIgb2ZfYml0cyA9IGZ1bmN0aW9uICh4KSB7CisgICAg
cmV0dXJuIHg7CisgIH07CisgIHZhciB0b19iaXRzID0gZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1
cm4geDsKKyAgfTsKKyAgdmFyIGlzX25hbiA9IGZ1bmN0aW9uICh4KSB7CisgICAgdmFyIHhmID0g
Q3VycnkuXzEoUmVwWy8qIGZsb2F0X29mX2JpdHMgKi8zXSwgeCk7CisgICAgcmV0dXJuICsoeGYg
IT09IHhmKTsKKyAgfTsKKyAgdmFyIGNhbm9uaWNhbGl6ZV9uYW4gPSBmdW5jdGlvbiAoeCkgewor
ICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9nb3IgKi83XSwgeCwgUmVwWy8qIHBvc19uYW4g
Ki8wXSk7CisgIH07CisgIHZhciBkZXRlcm1pbmVfYmluYXJ5X25hbiA9IGZ1bmN0aW9uICh4LCB5
KSB7CisgICAgcmV0dXJuIGNhbm9uaWNhbGl6ZV9uYW4oaXNfbmFuKHgpID8geCA6ICgKKyAgICAg
ICAgICAgICAgICAgIGlzX25hbih5KSA/IHkgOiBSZXBbLyogcG9zX25hbiAqLzBdCisgICAgICAg
ICAgICAgICAgKSk7CisgIH07CisgIHZhciBkZXRlcm1pbmVfdW5hcnlfbmFuID0gZnVuY3Rpb24g
KHgpIHsKKyAgICByZXR1cm4gY2Fub25pY2FsaXplX25hbihpc19uYW4oeCkgPyB4IDogUmVwWy8q
IHBvc19uYW4gKi8wXSk7CisgIH07CisgIHZhciBiaW5hcnkgPSBmdW5jdGlvbiAoeCwgb3AsIHkp
IHsKKyAgICB2YXIgeGYgPSBDdXJyeS5fMSh0b19mbG9hdCwgeCk7CisgICAgdmFyIHlmID0gQ3Vy
cnkuXzEodG9fZmxvYXQsIHkpOworICAgIHZhciB0ID0gQ3VycnkuXzIob3AsIHhmLCB5Zik7Cisg
ICAgaWYgKHQgPT09IHQpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShvZl9mbG9hdCwgdCk7Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGRldGVybWluZV9iaW5hcnlfbmFuKHgsIHkp
OworICAgIH0KKyAgfTsKKyAgdmFyIHVuYXJ5ID0gZnVuY3Rpb24gKG9wLCB4KSB7CisgICAgdmFy
IHQgPSBDdXJyeS5fMShvcCwgQ3VycnkuXzEodG9fZmxvYXQsIHgpKTsKKyAgICBpZiAodCA9PT0g
dCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8xKG9mX2Zsb2F0LCB0KTsKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICByZXR1cm4gZGV0ZXJtaW5lX3VuYXJ5X25hbih4KTsKKyAgICB9CisgIH07Cisg
IHZhciB6ZXJvID0gQ3VycnkuXzEob2ZfZmxvYXQsIDAuMCk7CisgIHZhciBhZGQgPSBmdW5jdGlv
biAoeCwgeSkgeworICAgIHJldHVybiBiaW5hcnkoeCwgZnVuY3Rpb24gKHByaW0sIHByaW0kMSkg
eworICAgICAgICAgICAgICAgIHJldHVybiBwcmltICsgcHJpbSQxOworICAgICAgICAgICAgICB9
LCB5KTsKKyAgfTsKKyAgdmFyIHN1YiA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGJp
bmFyeSh4LCBmdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHByaW0gLSBwcmltJDE7CisgICAgICAgICAgICAgIH0sIHkpOworICB9OworICB2YXIgbXVsID0g
ZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gYmluYXJ5KHgsIGZ1bmN0aW9uIChwcmltLCBw
cmltJDEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJpbSAqIHByaW0kMTsKKyAgICAgICAg
ICAgICAgfSwgeSk7CisgIH07CisgIHZhciBkaXYgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJl
dHVybiBiaW5hcnkoeCwgZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICAgICAgICAg
IHJldHVybiBwcmltIC8gcHJpbSQxOworICAgICAgICAgICAgICB9LCB5KTsKKyAgfTsKKyAgdmFy
IHNxcnQgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB1bmFyeShmdW5jdGlvbiAocHJpbSkg
eworICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQocHJpbSk7CisgICAgICAgICAgICAg
IH0sIHgpOworICB9OworICB2YXIgY2VpbCA9IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0dXJuIHVu
YXJ5KGZ1bmN0aW9uIChwcmltKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbChw
cmltKTsKKyAgICAgICAgICAgICAgfSwgeCk7CisgIH07CisgIHZhciBmbG9vciA9IGZ1bmN0aW9u
ICh4KSB7CisgICAgcmV0dXJuIHVuYXJ5KGZ1bmN0aW9uIChwcmltKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE1hdGguZmxvb3IocHJpbSk7CisgICAgICAgICAgICAgIH0sIHgpOworICB9Owor
ICB2YXIgdHJ1bmMgPSBmdW5jdGlvbiAoeCkgeworICAgIHZhciB4ZiA9IEN1cnJ5Ll8xKHRvX2Zs
b2F0LCB4KTsKKyAgICBpZiAoeGYgPT09IDAuMCkgeworICAgICAgcmV0dXJuIHg7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgdmFyIGYgPSB4ZiA8IDAuMCA/IE1hdGguY2VpbCh4ZikgOiBNYXRo
LmZsb29yKHhmKTsKKyAgICAgIHZhciByZXN1bHQgPSBDdXJyeS5fMShvZl9mbG9hdCwgZik7Cisg
ICAgICBpZiAoaXNfbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgcmV0dXJuIGRldGVybWluZV91bmFy
eV9uYW4ocmVzdWx0KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgfQorICAgIH0KKyAgfTsKKyAgdmFyIG5lYXJlc3QgPSBmdW5jdGlvbiAoeCkg
eworICAgIHZhciB4ZiA9IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KTsKKyAgICBpZiAoeGYgPT09IDAu
MCkgeworICAgICAgcmV0dXJuIHg7CisgICAgfQorICAgIGVsc2UgeworICAgICAgdmFyIHUgPSBN
YXRoLmNlaWwoeGYpOworICAgICAgdmFyIGQgPSBNYXRoLmZsb29yKHhmKTsKKyAgICAgIHZhciB1
bSA9IE1hdGguYWJzKHhmIC0gdSk7CisgICAgICB2YXIgZG0gPSBNYXRoLmFicyh4ZiAtIGQpOwor
ICAgICAgdmFyIGggPSB1IC8gMjsKKyAgICAgIHZhciB1X29yX2QgPSArKHVtIDwgZG0gfHwgdW0g
PT09IGRtICYmIE1hdGguZmxvb3IoaCkgPT09IGgpOworICAgICAgdmFyIGYgPSB1X29yX2QgPyB1
IDogZDsKKyAgICAgIHZhciByZXN1bHQgPSBDdXJyeS5fMShvZl9mbG9hdCwgZik7CisgICAgICBp
ZiAoaXNfbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgcmV0dXJuIGRldGVybWluZV91bmFyeV9uYW4o
cmVzdWx0KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgfQorICAgIH0KKyAgfTsKKyAgdmFyIG1pbiA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAg
dmFyIHhmID0gQ3VycnkuXzEodG9fZmxvYXQsIHgpOworICAgIHZhciB5ZiA9IEN1cnJ5Ll8xKHRv
X2Zsb2F0LCB5KTsKKyAgICBpZiAoeGYgPT09IHlmKSB7CisgICAgICByZXR1cm4gQ3VycnkuXzIo
UmVwWy8qIGxvZ29yICovN10sIHgsIHkpOworICAgIH0KKyAgICBlbHNlIGlmICh4ZiA8IHlmKSB7
CisgICAgICByZXR1cm4geDsKKyAgICB9CisgICAgZWxzZSBpZiAoeGYgPiB5ZikgeworICAgICAg
cmV0dXJuIHk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGRldGVybWluZV9iaW5h
cnlfbmFuKHgsIHkpOworICAgIH0KKyAgfTsKKyAgdmFyIG1heCA9IGZ1bmN0aW9uICh4LCB5KSB7
CisgICAgdmFyIHhmID0gQ3VycnkuXzEodG9fZmxvYXQsIHgpOworICAgIHZhciB5ZiA9IEN1cnJ5
Ll8xKHRvX2Zsb2F0LCB5KTsKKyAgICBpZiAoeGYgPT09IHlmKSB7CisgICAgICByZXR1cm4gQ3Vy
cnkuXzIoUmVwWy8qIGxvZ2FuZCAqLzZdLCB4LCB5KTsKKyAgICB9CisgICAgZWxzZSBpZiAoeGYg
PiB5ZikgeworICAgICAgcmV0dXJuIHg7CisgICAgfQorICAgIGVsc2UgaWYgKHhmIDwgeWYpIHsK
KyAgICAgIHJldHVybiB5OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBkZXRlcm1p
bmVfYmluYXJ5X25hbih4LCB5KTsKKyAgICB9CisgIH07CisgIHZhciBhYnMgPSBmdW5jdGlvbiAo
eCkgeworICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9nYW5kICovNl0sIHgsIFJlcFsvKiBt
YXhfaW50ICovMTBdKTsKKyAgfTsKKyAgdmFyIG5lZyA9IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0
dXJuIEN1cnJ5Ll8yKFJlcFsvKiBsb2d4b3IgKi84XSwgeCwgUmVwWy8qIG1pbl9pbnQgKi85XSk7
CisgIH07CisgIHZhciBjb3B5c2lnbiA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIEN1
cnJ5Ll8yKFJlcFsvKiBsb2dvciAqLzddLCBhYnMoeCksIEN1cnJ5Ll8yKFJlcFsvKiBsb2dhbmQg
Ki82XSwgeSwgUmVwWy8qIG1pbl9pbnQgKi85XSkpOworICB9OworICB2YXIgZXEgPSBmdW5jdGlv
biAoeCwgeSkgeworICAgIHJldHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA9PT0gQ3Vycnku
XzEodG9fZmxvYXQsIHkpKTsKKyAgfTsKKyAgdmFyIG5lID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAg
ICByZXR1cm4gKyhDdXJyeS5fMSh0b19mbG9hdCwgeCkgIT09IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB5
KSk7CisgIH07CisgIHZhciBsdCA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuICsoQ3Vy
cnkuXzEodG9fZmxvYXQsIHgpIDwgQ3VycnkuXzEodG9fZmxvYXQsIHkpKTsKKyAgfTsKKyAgdmFy
IGd0ID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICByZXR1cm4gKyhDdXJyeS5fMSh0b19mbG9hdCwg
eCkgPiBDdXJyeS5fMSh0b19mbG9hdCwgeSkpOworICB9OworICB2YXIgbGUgPSBmdW5jdGlvbiAo
eCwgeSkgeworICAgIHJldHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA8PSBDdXJyeS5fMSh0
b19mbG9hdCwgeSkpOworICB9OworICB2YXIgZ2UgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJl
dHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA+PSBDdXJyeS5fMSh0b19mbG9hdCwgeSkpOwor
ICB9OworICB2YXIgb2Zfc2lnbmxlc3Nfc3RyaW5nID0gZnVuY3Rpb24gKHgsIGxlbikgeworICAg
IGlmICh4ICE9PSAibmFuIiAmJiBsZW4gPiA2ICYmICQkU3RyaW5nLnN1Yih4LCAwLCA2KSA9PT0g
Im5hbjoweCIpIHsKKyAgICAgIHZhciBzID0gQ3VycnkuXzEoUmVwWy8qIG9mX3N0cmluZyAqLzRd
LCAkJFN0cmluZy5zdWIoeCwgNCwgbGVuIC0gNCB8IDApKTsKKyAgICAgIGlmIChDYW1sX29iai5j
YW1sX2VxdWFsKHMsIFJlcFsvKiB6ZXJvICovMTFdKSkgeworICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICAgICAg
ICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBiZSB6ZXJvIgorICAgICAgICAgICAgXTsKKyAgICAgIH0K
KyAgICAgIGVsc2UgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoQ3VycnkuXzIoUmVwWy8qIGxv
Z2FuZCAqLzZdLCBzLCBiYXJlX25hbiksIFJlcFsvKiB6ZXJvICovMTFdKSkgeworICAgICAgICB0
aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisg
ICAgICAgICAgICAgICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBvdmVybGFwIHdpdGggZXhwb25lbnQg
Yml0cyIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNlIGlmIChDYW1sX29iai5j
YW1sX2xlc3N0aGFuKHMsIFJlcFsvKiB6ZXJvICovMTFdKSkgeworICAgICAgICB0aHJvdyBbCisg
ICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCisgICAgICAgICAg
ICAgICJuYW4gcGF5bG9hZCBtdXN0IG5vdCBvdmVybGFwIHdpdGggc2lnbiBiaXQiCisgICAgICAg
ICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBDdXJyeS5fMihS
ZXBbLyogbG9nb3IgKi83XSwgcywgYmFyZV9uYW4pOworICAgICAgfQorICAgIH0KKyAgICBlbHNl
IHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShvZl9mbG9hdCwgQ2FtbF9mb3JtYXQuY2FtbF9mbG9h
dF9vZl9zdHJpbmcoeCkpOworICAgIH0KKyAgfTsKKyAgdmFyIG9mX3N0cmluZyA9IGZ1bmN0aW9u
ICh4KSB7CisgICAgdmFyIGxlbiA9IHgubGVuZ3RoOworICAgIGlmIChsZW4gPiAwICYmIENhbWxf
c3RyaW5nLmdldCh4LCAwKSA9PT0gLyogIi0iICovNDUpIHsKKyAgICAgIHJldHVybiBuZWcob2Zf
c2lnbmxlc3Nfc3RyaW5nKCQkU3RyaW5nLnN1Yih4LCAxLCBsZW4gLSAxIHwgMCksIGxlbiAtIDEg
fCAwKSk7CisgICAgfQorICAgIGVsc2UgaWYgKGxlbiA+IDAgJiYgQ2FtbF9zdHJpbmcuZ2V0KHgs
IDApID09PSAvKiAiKyIgKi80MykgeworICAgICAgcmV0dXJuIG9mX3NpZ25sZXNzX3N0cmluZygk
JFN0cmluZy5zdWIoeCwgMSwgbGVuIC0gMSB8IDApLCBsZW4gLSAxIHwgMCk7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgcmV0dXJuIG9mX3NpZ25sZXNzX3N0cmluZyh4LCBsZW4pOworICAgIH0K
KyAgfTsKKyAgdmFyIHRvX3N0cmluZyA9IGZ1bmN0aW9uICh4KSB7CisgICAgdmFyIGEgPSBhYnMo
eCk7CisgICAgcmV0dXJuICgKKyAgICAgICAgICAgIENhbWxfb2JqLmNhbWxfbGVzc3RoYW4oeCwg
UmVwWy8qIHplcm8gKi8xMV0pID8gIi0iIDogIiIKKyAgICAgICAgICApICsgKAorICAgICAgICAg
ICAgaXNfbmFuKGEpID8gIm5hbjoweCIgKyBDdXJyeS5fMShSZXBbLyogcHJpbnRfbmFuX3NpZ25p
ZmljYW5kX2RpZ2l0cyAqLzEzXSwgYSkgOiBQZXJ2YXNpdmVzLnN0cmluZ19vZl9mbG9hdChDdXJy
eS5fMSh0b19mbG9hdCwgYSkpCisgICAgICAgICAgKTsKKyAgfTsKKyAgcmV0dXJuIC8qIG1vZHVs
ZSAqL1sKKyAgICAgICAgICAvKiBwb3NfbmFuICovcG9zX25hbiwKKyAgICAgICAgICAvKiBuZWdf
bmFuICovbmVnX25hbiwKKyAgICAgICAgICAvKiBvZl9mbG9hdCAqL29mX2Zsb2F0LAorICAgICAg
ICAgIC8qIHRvX2Zsb2F0ICovdG9fZmxvYXQsCisgICAgICAgICAgLyogb2Zfc3RyaW5nICovb2Zf
c3RyaW5nLAorICAgICAgICAgIC8qIHRvX3N0cmluZyAqL3RvX3N0cmluZywKKyAgICAgICAgICAv
KiBvZl9iaXRzICovb2ZfYml0cywKKyAgICAgICAgICAvKiB0b19iaXRzICovdG9fYml0cywKKyAg
ICAgICAgICAvKiBhZGQgKi9hZGQsCisgICAgICAgICAgLyogc3ViICovc3ViLAorICAgICAgICAg
IC8qIG11bCAqL211bCwKKyAgICAgICAgICAvKiBkaXYgKi9kaXYsCisgICAgICAgICAgLyogc3Fy
dCAqL3NxcnQsCisgICAgICAgICAgLyogbWluICovbWluLAorICAgICAgICAgIC8qIG1heCAqL21h
eCwKKyAgICAgICAgICAvKiBjZWlsICovY2VpbCwKKyAgICAgICAgICAvKiBmbG9vciAqL2Zsb29y
LAorICAgICAgICAgIC8qIHRydW5jICovdHJ1bmMsCisgICAgICAgICAgLyogbmVhcmVzdCAqL25l
YXJlc3QsCisgICAgICAgICAgLyogYWJzICovYWJzLAorICAgICAgICAgIC8qIG5lZyAqL25lZywK
KyAgICAgICAgICAvKiBjb3B5c2lnbiAqL2NvcHlzaWduLAorICAgICAgICAgIC8qIGVxICovZXEs
CisgICAgICAgICAgLyogbmUgKi9uZSwKKyAgICAgICAgICAvKiBsdCAqL2x0LAorICAgICAgICAg
IC8qIGxlICovbGUsCisgICAgICAgICAgLyogZ3QgKi9ndCwKKyAgICAgICAgICAvKiBnZSAqL2dl
LAorICAgICAgICAgIC8qIHplcm8gKi96ZXJvCisgICAgICAgIF07Cit9CisKK2V4cG9ydHMuTWFr
ZSA9IE1ha2U7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGZsb2F0Lmpz
IC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlb
J2Zvcm1hdCddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2YgZm9ybWF0LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBCbG9j
ayAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYmxvY2siKTsKK3ZhciBCeXRlcyAgICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnl0ZXMiKTsKK3ZhciBDdXJyeSAgICAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBCdWZmZXIgICAgICAgICAgICAgICAg
ICA9IHJlcXVpcmUoIi4vYnVmZmVyIik7Cit2YXIgJCRTdHJpbmcgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL3N0cmluZyIpOwordmFyIENhbWxfaW8gICAgICAgICAgICAgICAgID0gcmVxdWly
ZSgiLi9jYW1sX2lvIik7Cit2YXIgQ2FtbF9vYmogICAgICAgICAgICAgICAgPSByZXF1aXJlKCIu
L2NhbWxfb2JqIik7Cit2YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3Bl
cnZhc2l2ZXMiKTsKK3ZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2Ft
bF9zdHJpbmciKTsKK3ZhciBDYW1sX2V4Y2VwdGlvbnMgICAgICAgICA9IHJlcXVpcmUoIi4vY2Ft
bF9leGNlcHRpb25zIik7Cit2YXIgQ2FtbGludGVybmFsRm9ybWF0ICAgICAgPSByZXF1aXJlKCIu
L2NhbWxpbnRlcm5hbEZvcm1hdCIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVx
dWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBhZGRfcXVldWUo
eCwgcSkgeworICB2YXIgYyA9IC8qIENvbnMgKi9bLyogcmVjb3JkICovWworICAgICAgLyogaGVh
ZCAqL3gsCisgICAgICAvKiB0YWlsIDogTmlsICovMAorICAgIF1dOworICB2YXIgbWF0Y2ggPSBx
Wy8qIGluc2VydCAqLzBdOworICBpZiAobWF0Y2gpIHsKKyAgICBxWy8qIGluc2VydCAqLzBdID0g
YzsKKyAgICBtYXRjaFswXVsvKiB0YWlsICovMV0gPSBjOworICAgIHJldHVybiAvKiAoKSAqLzA7
CisgIH0KKyAgZWxzZSB7CisgICAgcVsvKiBpbnNlcnQgKi8wXSA9IGM7CisgICAgcVsvKiBib2R5
ICovMV0gPSBjOworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKwordmFyIEVtcHR5X3F1
ZXVlID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiRm9ybWF0LkVtcHR5X3F1ZXVlIik7CisKK2Z1
bmN0aW9uIHBlZWtfcXVldWUocGFyYW0pIHsKKyAgdmFyIG1hdGNoID0gcGFyYW1bLyogYm9keSAq
LzFdOworICBpZiAobWF0Y2gpIHsKKyAgICByZXR1cm4gbWF0Y2hbMF1bLyogaGVhZCAqLzBdOwor
ICB9CisgIGVsc2UgeworICAgIHRocm93IEVtcHR5X3F1ZXVlOworICB9Cit9CisKK2Z1bmN0aW9u
IHRha2VfcXVldWUocSkgeworICB2YXIgbWF0Y2ggPSBxWy8qIGJvZHkgKi8xXTsKKyAgaWYgKG1h
dGNoKSB7CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICB2YXIgeCA9IG1hdGNoJDFb
LyogaGVhZCAqLzBdOworICAgIHZhciB0bCA9IG1hdGNoJDFbLyogdGFpbCAqLzFdOworICAgIHFb
LyogYm9keSAqLzFdID0gdGw7CisgICAgaWYgKCF0bCkgeworICAgICAgcVsvKiBpbnNlcnQgKi8w
XSA9IC8qIE5pbCAqLzA7CisgICAgfQorICAgIHJldHVybiB4OworICB9CisgIGVsc2UgeworICAg
IHRocm93IEVtcHR5X3F1ZXVlOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2VucXVldWUoc3RhdGUs
IHRva2VuKSB7CisgIHN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdID0gc3RhdGVbLyogcHBf
cmlnaHRfdG90YWwgKi8xMl0gKyB0b2tlblsvKiBsZW5ndGggKi8yXSB8IDA7CisgIHJldHVybiBh
ZGRfcXVldWUodG9rZW4sIHN0YXRlWy8qIHBwX3F1ZXVlICovMjZdKTsKK30KKworZnVuY3Rpb24g
cHBfY2xlYXJfcXVldWUoc3RhdGUpIHsKKyAgc3RhdGVbLyogcHBfbGVmdF90b3RhbCAqLzExXSA9
IDE7CisgIHN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdID0gMTsKKyAgdmFyIHEgPSBzdGF0
ZVsvKiBwcF9xdWV1ZSAqLzI2XTsKKyAgcVsvKiBpbnNlcnQgKi8wXSA9IC8qIE5pbCAqLzA7Cisg
IHFbLyogYm9keSAqLzFdID0gLyogTmlsICovMDsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKwor
ZnVuY3Rpb24gcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgcykgeworICByZXR1cm4gQ3VycnkuXzMo
c3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSwgcywgMCwgcy5sZW5ndGgpOworfQorCitmdW5j
dGlvbiBicmVha19uZXdfbGluZShzdGF0ZSwgb2Zmc2V0LCB3aWR0aCkgeworICBDdXJyeS5fMShz
dGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkgKi8wKTsKKyAgc3RhdGVbLyogcHBf
aXNfbmV3X2xpbmUgKi8xMF0gPSAvKiB0cnVlICovMTsKKyAgdmFyIGluZGVudCA9IChzdGF0ZVsv
KiBwcF9tYXJnaW4gKi81XSAtIHdpZHRoIHwgMCkgKyBvZmZzZXQgfCAwOworICB2YXIgcmVhbF9p
bmRlbnQgPSBQZXJ2YXNpdmVzLm1pbihzdGF0ZVsvKiBwcF9tYXhfaW5kZW50ICovN10sIGluZGVu
dCk7CisgIHN0YXRlWy8qIHBwX2N1cnJlbnRfaW5kZW50ICovOV0gPSByZWFsX2luZGVudDsKKyAg
c3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdID0gc3RhdGVbLyogcHBfbWFyZ2luICovNV0gLSBz
dGF0ZVsvKiBwcF9jdXJyZW50X2luZGVudCAqLzldIHwgMDsKKyAgcmV0dXJuIEN1cnJ5Ll8xKHN0
YXRlWy8qIHBwX291dF9zcGFjZXMgKi8xOV0sIHN0YXRlWy8qIHBwX2N1cnJlbnRfaW5kZW50ICov
OV0pOworfQorCitmdW5jdGlvbiBicmVha19zYW1lX2xpbmUoc3RhdGUsIHdpZHRoKSB7CisgIHN0
YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSA9IHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSAt
IHdpZHRoIHwgMDsKKyAgcmV0dXJuIEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX291dF9zcGFjZXMgKi8x
OV0sIHdpZHRoKTsKK30KKworZnVuY3Rpb24gcHBfZm9yY2VfYnJlYWtfbGluZShzdGF0ZSkgewor
ICB2YXIgbWF0Y2ggPSBzdGF0ZVsvKiBwcF9mb3JtYXRfc3RhY2sgKi8xXTsKKyAgaWYgKG1hdGNo
KSB7CisgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKKyAgICB2YXIgd2lkdGggPSBtYXRjaCQx
WzFdOworICAgIHZhciBibF90eSA9IG1hdGNoJDFbMF07CisgICAgaWYgKHdpZHRoID4gc3RhdGVb
LyogcHBfc3BhY2VfbGVmdCAqLzhdICYmIGJsX3R5ICE9PSAwICYmIGJsX3R5IDwgNSkgeworICAg
ICAgcmV0dXJuIGJyZWFrX25ld19saW5lKHN0YXRlLCAwLCB3aWR0aCk7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiBD
dXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkgKi8wKTsKKyAgfQor
fQorCitmdW5jdGlvbiBmb3JtYXRfcHBfdG9rZW4oc3RhdGUsIHNpemUsIHBhcmFtKSB7CisgIGlm
ICh0eXBlb2YgcGFyYW0gPT09ICJudW1iZXIiKSB7CisgICAgc3dpdGNoIChwYXJhbSkgeworICAg
ICAgY2FzZSAwIDogCisgICAgICAgICAgdmFyIG1hdGNoID0gc3RhdGVbLyogcHBfdGJveF9zdGFj
ayAqLzJdOworICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAgdmFyIHRhYnMgPSBt
YXRjaFswXVswXTsKKyAgICAgICAgICAgIHZhciBhZGRfdGFiID0gZnVuY3Rpb24gKG4sIGxzKSB7
CisgICAgICAgICAgICAgIGlmIChscykgeworICAgICAgICAgICAgICAgIHZhciB4ID0gbHNbMF07
CisgICAgICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbGVzc3RoYW4obiwgeCkpIHsKKyAg
ICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbHMKKyAgICAgICAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfdGFiKG4sIGxzWzFdKQorICAgICAgICAg
ICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICB0YWJzWzBdID0gYWRkX3RhYihzdGF0ZVsvKiBwcF9tYXJnaW4gKi81
XSAtIHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSB8IDAsIHRhYnNbMF0pOworICAgICAgICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgMSA6IAorICAgICAgICAgIHZhciBtYXRjaCQxID0gc3RhdGVbLyogcHBfZm9y
bWF0X3N0YWNrICovMV07CisgICAgICAgICAgaWYgKG1hdGNoJDEpIHsKKyAgICAgICAgICAgIHN0
YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdID0gbWF0Y2gkMVsxXTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICB2YXIgbWF0Y2gkMiA9IHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXTsKKyAgICAgICAg
ICBpZiAobWF0Y2gkMikgeworICAgICAgICAgICAgc3RhdGVbLyogcHBfdGJveF9zdGFjayAqLzJd
ID0gbWF0Y2gkMlsxXTsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAg
ICAgICB9CisgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICB2YXIgbWF0Y2gkMyA9IHN0YXRlWy8q
IHBwX2Zvcm1hdF9zdGFjayAqLzFdOworICAgICAgICAgIGlmIChtYXRjaCQzKSB7CisgICAgICAg
ICAgICByZXR1cm4gYnJlYWtfbmV3X2xpbmUoc3RhdGUsIDAsIG1hdGNoJDNbMF1bMV0pOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShz
dGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkgKi8wKTsKKyAgICAgICAgICB9Cisg
ICAgICBjYXNlIDQgOiAKKyAgICAgICAgICBpZiAoc3RhdGVbLyogcHBfY3VycmVudF9pbmRlbnQg
Ki85XSAhPT0gKHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdIC0gc3RhdGVbLyogcHBfc3BhY2VfbGVm
dCAqLzhdIHwgMCkpIHsKKyAgICAgICAgICAgIHZhciBzdGF0ZSQxID0gc3RhdGU7CisgICAgICAg
ICAgICB2YXIgbWF0Y2gkNCA9IHRha2VfcXVldWUoc3RhdGUkMVsvKiBwcF9xdWV1ZSAqLzI2XSk7
CisgICAgICAgICAgICB2YXIgc2l6ZSQxID0gbWF0Y2gkNFsvKiBlbGVtX3NpemUgKi8wXTsKKyAg
ICAgICAgICAgIHN0YXRlJDFbLyogcHBfbGVmdF90b3RhbCAqLzExXSA9IHN0YXRlJDFbLyogcHBf
bGVmdF90b3RhbCAqLzExXSAtIG1hdGNoJDRbLyogbGVuZ3RoICovMl0gfCAwOworICAgICAgICAg
ICAgc3RhdGUkMVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gPSBzdGF0ZSQxWy8qIHBwX3NwYWNlX2xl
ZnQgKi84XSArIHNpemUkMSB8IDA7CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAgIH0KKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHZhciBtYXRjaCQ1ID0gc3RhdGVbLyog
cHBfbWFya19zdGFjayAqLzRdOworICAgICAgICAgIGlmIChtYXRjaCQ1KSB7CisgICAgICAgICAg
ICB2YXIgbWFya2VyID0gQ3VycnkuXzEoc3RhdGVbLyogcHBfbWFya19jbG9zZV90YWcgKi8yM10s
IG1hdGNoJDVbMF0pOworICAgICAgICAgICAgcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgbWFya2Vy
KTsKKyAgICAgICAgICAgIHN0YXRlWy8qIHBwX21hcmtfc3RhY2sgKi80XSA9IG1hdGNoJDVbMV07
CisgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfQorICAgICAg
ICAgIGJyZWFrOworICAgICAgCisgICAgfQorICB9CisgIGVsc2UgeworICAgIHN3aXRjaCAocGFy
YW0udGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgc3RhdGVbLyogcHBfc3Bh
Y2VfbGVmdCAqLzhdID0gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIC0gc2l6ZSB8IDA7Cisg
ICAgICAgICAgcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgcGFyYW1bMF0pOworICAgICAgICAgIHN0
YXRlWy8qIHBwX2lzX25ld19saW5lICovMTBdID0gLyogZmFsc2UgKi8wOworICAgICAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB2YXIgb2ZmID0gcGFy
YW1bMV07CisgICAgICAgICAgdmFyIG4gPSBwYXJhbVswXTsKKyAgICAgICAgICB2YXIgbWF0Y2gk
NiA9IHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdOworICAgICAgICAgIGlmIChtYXRjaCQ2
KSB7CisgICAgICAgICAgICB2YXIgbWF0Y2gkNyA9IG1hdGNoJDZbMF07CisgICAgICAgICAgICB2
YXIgd2lkdGggPSBtYXRjaCQ3WzFdOworICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ3WzBdKSB7
CisgICAgICAgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgICBjYXNlIDIgOiAKKyAgICAg
ICAgICAgICAgICAgIHJldHVybiBicmVha19uZXdfbGluZShzdGF0ZSwgb2ZmLCB3aWR0aCk7Cisg
ICAgICAgICAgICAgIGNhc2UgMyA6IAorICAgICAgICAgICAgICAgICAgaWYgKHNpemUgPiBzdGF0
ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJy
ZWFrX25ld19saW5lKHN0YXRlLCBvZmYsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWtf
c2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
Y2FzZSA0IDogCisgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVbLyogcHBfaXNfbmV3X2xpbmUg
Ki8xMF0gfHwgIShzaXplID4gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIHx8IHN0YXRlWy8q
IHBwX2N1cnJlbnRfaW5kZW50ICovOV0gPiAoKHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdIC0gd2lk
dGggfCAwKSArIG9mZiB8IDApKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWtf
c2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWtfbmV3X2xpbmUoc3Rh
dGUsIG9mZiwgd2lkdGgpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBjYXNl
IDAgOiAKKyAgICAgICAgICAgICAgY2FzZSA1IDogCisgICAgICAgICAgICAgICAgICByZXR1cm4g
YnJlYWtfc2FtZV9saW5lKHN0YXRlLCBuKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIC8qICgp
ICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIgOiAKKyAg
ICAgICAgICB2YXIgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGVbLyogcHBfbWFyZ2luICovNV0gLSBz
dGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gfCAwOworICAgICAgICAgIHZhciBtYXRjaCQ4ID0g
c3RhdGVbLyogcHBfdGJveF9zdGFjayAqLzJdOworICAgICAgICAgIGlmIChtYXRjaCQ4KSB7Cisg
ICAgICAgICAgICB2YXIgdGFicyQxID0gbWF0Y2gkOFswXVswXTsKKyAgICAgICAgICAgIHZhciBm
aW5kID0gZnVuY3Rpb24gKG4sIF9wYXJhbSkgeworICAgICAgICAgICAgICB3aGlsZSh0cnVlKSB7
CisgICAgICAgICAgICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgICAgICAgICAgICAgIGlm
IChwYXJhbSkgeworICAgICAgICAgICAgICAgICAgdmFyIHggPSBwYXJhbVswXTsKKyAgICAgICAg
ICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbCh4LCBuKSkgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91
bmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gdGFicyQxWzBdOworICAgICAgICAgICAgdmFyIHRh
YjsKKyAgICAgICAgICAgIGlmIChtYXRjaCQ5KSB7CisgICAgICAgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICAgICAgdGFiID0gZmluZChpbnNlcnRpb25fcG9pbnQsIHRhYnMkMVswXSk7CisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgY2F0Y2ggKGV4bil7CisgICAgICAgICAgICAgICAg
aWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7CisgICAgICAg
ICAgICAgICAgICB0YWIgPSBtYXRjaCQ5WzBdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHRocm93IGV4bjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICB0YWIgPSBpbnNlcnRpb25fcG9pbnQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IHwgMDsKKyAgICAg
ICAgICAgIGlmIChvZmZzZXQgPj0gMCkgeworICAgICAgICAgICAgICByZXR1cm4gYnJlYWtfc2Ft
ZV9saW5lKHN0YXRlLCBvZmZzZXQgKyBwYXJhbVswXSB8IDApOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBicmVha19uZXdfbGluZShzdGF0
ZSwgdGFiICsgcGFyYW1bMV0gfCAwLCBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDMg
OiAKKyAgICAgICAgICB2YXIgdHkgPSBwYXJhbVsxXTsKKyAgICAgICAgICB2YXIgaW5zZXJ0aW9u
X3BvaW50JDEgPSBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSAtIHN0YXRlWy8qIHBwX3NwYWNlX2xl
ZnQgKi84XSB8IDA7CisgICAgICAgICAgaWYgKGluc2VydGlvbl9wb2ludCQxID4gc3RhdGVbLyog
cHBfbWF4X2luZGVudCAqLzddKSB7CisgICAgICAgICAgICBwcF9mb3JjZV9icmVha19saW5lKHN0
YXRlKTsKKyAgICAgICAgICB9CisgICAgICAgICAgdmFyIG9mZnNldCQxID0gc3RhdGVbLyogcHBf
c3BhY2VfbGVmdCAqLzhdIC0gcGFyYW1bMF0gfCAwOworICAgICAgICAgIHZhciBibF90eXBlID0g
dHkgIT09IDEgPyAoCisgICAgICAgICAgICAgIHNpemUgPiBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0
ICovOF0gPyB0eSA6IC8qIFBwX2ZpdHMgKi81CisgICAgICAgICAgICApIDogLyogUHBfdmJveCAq
LzE7CisgICAgICAgICAgc3RhdGVbLyogcHBfZm9ybWF0X3N0YWNrICovMV0gPSAvKiA6OiAqL1sK
KyAgICAgICAgICAgIC8qIEZvcm1hdF9lbGVtICovWworICAgICAgICAgICAgICBibF90eXBlLAor
ICAgICAgICAgICAgICBvZmZzZXQkMQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHN0YXRl
Wy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdCisgICAgICAgICAgXTsKKyAgICAgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgc3RhdGVbLyogcHBfdGJveF9z
dGFjayAqLzJdID0gLyogOjogKi9bCisgICAgICAgICAgICBwYXJhbVswXSwKKyAgICAgICAgICAg
IHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXQorICAgICAgICAgIF07CisgICAgICAgICAgcmV0
dXJuIC8qICgpICovMDsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAgIHZhciB0YWdfbmFtZSA9
IHBhcmFtWzBdOworICAgICAgICAgIHZhciBtYXJrZXIkMSA9IEN1cnJ5Ll8xKHN0YXRlWy8qIHBw
X21hcmtfb3Blbl90YWcgKi8yMl0sIHRhZ19uYW1lKTsKKyAgICAgICAgICBwcF9vdXRwdXRfc3Ry
aW5nKHN0YXRlLCBtYXJrZXIkMSk7CisgICAgICAgICAgc3RhdGVbLyogcHBfbWFya19zdGFjayAq
LzRdID0gLyogOjogKi9bCisgICAgICAgICAgICB0YWdfbmFtZSwKKyAgICAgICAgICAgIHN0YXRl
Wy8qIHBwX21hcmtfc3RhY2sgKi80XQorICAgICAgICAgIF07CisgICAgICAgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBhZHZhbmNlX2xlZnQo
c3RhdGUpIHsKKyAgdHJ5IHsKKyAgICB2YXIgc3RhdGUkMSA9IHN0YXRlOworICAgIHdoaWxlKHRy
dWUpIHsKKyAgICAgIHZhciBtYXRjaCA9IHBlZWtfcXVldWUoc3RhdGUkMVsvKiBwcF9xdWV1ZSAq
LzI2XSk7CisgICAgICB2YXIgc2l6ZSA9IG1hdGNoWy8qIGVsZW1fc2l6ZSAqLzBdOworICAgICAg
aWYgKHNpemUgPCAwICYmIChzdGF0ZSQxWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdIC0gc3RhdGUk
MVsvKiBwcF9sZWZ0X3RvdGFsICovMTFdIHwgMCkgPCBzdGF0ZSQxWy8qIHBwX3NwYWNlX2xlZnQg
Ki84XSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICB0YWtlX3F1ZXVlKHN0YXRlJDFbLyogcHBfcXVldWUgKi8yNl0pOworICAgICAgICBmb3JtYXRf
cHBfdG9rZW4oc3RhdGUkMSwgc2l6ZSA8IDAgPyAxMDAwMDAwMDEwIDogc2l6ZSwgbWF0Y2hbLyog
dG9rZW4gKi8xXSk7CisgICAgICAgIHN0YXRlJDFbLyogcHBfbGVmdF90b3RhbCAqLzExXSA9IG1h
dGNoWy8qIGxlbmd0aCAqLzJdICsgc3RhdGUkMVsvKiBwcF9sZWZ0X3RvdGFsICovMTFdIHwgMDsK
KyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9OworICB9CisgIGNh
dGNoIChleG4peworICAgIGlmIChleG4gPT09IEVtcHR5X3F1ZXVlKSB7CisgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IGV4bjsKKyAgICB9Cisg
IH0KK30KKworZnVuY3Rpb24gZW5xdWV1ZV9hZHZhbmNlKHN0YXRlLCB0b2spIHsKKyAgcHBfZW5x
dWV1ZShzdGF0ZSwgdG9rKTsKKyAgcmV0dXJuIGFkdmFuY2VfbGVmdChzdGF0ZSk7Cit9CisKK2Z1
bmN0aW9uIGVucXVldWVfc3RyaW5nX2FzKHN0YXRlLCBzaXplLCBzKSB7CisgIHJldHVybiBlbnF1
ZXVlX2FkdmFuY2Uoc3RhdGUsIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgLyogZWxlbV9z
aXplICovc2l6ZSwKKyAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF90ZXh0ICovQmxvY2suX18o
MCwgW3NdKSwKKyAgICAgICAgICAgICAgLyogbGVuZ3RoICovc2l6ZQorICAgICAgICAgICAgXSk7
Cit9CisKK3ZhciBxX2VsZW0gPSAvKiByZWNvcmQgKi9bCisgIC8qIGVsZW1fc2l6ZSAqLy0xLAor
ICAvKiB0b2tlbiA6IFBwX3RleHQgKi9CbG9jay5fXygwLCBbIiJdKSwKKyAgLyogbGVuZ3RoICov
MAorXTsKKwordmFyIHNjYW5fc3RhY2tfYm90dG9tXzAwMCA9IC8qIFNjYW5fZWxlbSAqL1sKKyAg
LTEsCisgIHFfZWxlbQorXTsKKwordmFyIHNjYW5fc3RhY2tfYm90dG9tID0gLyogOjogKi9bCisg
IHNjYW5fc3RhY2tfYm90dG9tXzAwMCwKKyAgLyogW10gKi8wCitdOworCitmdW5jdGlvbiBzZXRf
c2l6ZShzdGF0ZSwgdHkpIHsKKyAgdmFyIG1hdGNoID0gc3RhdGVbLyogcHBfc2Nhbl9zdGFjayAq
LzBdOworICBpZiAobWF0Y2gpIHsKKyAgICB2YXIgbWF0Y2gkMSA9IG1hdGNoWzBdOworICAgIHZh
ciBxdWV1ZV9lbGVtID0gbWF0Y2gkMVsxXTsKKyAgICB2YXIgc2l6ZSA9IHF1ZXVlX2VsZW1bLyog
ZWxlbV9zaXplICovMF07CisgICAgdmFyIHQgPSBtYXRjaFsxXTsKKyAgICBpZiAobWF0Y2gkMVsw
XSA8IHN0YXRlWy8qIHBwX2xlZnRfdG90YWwgKi8xMV0pIHsKKyAgICAgIHN0YXRlWy8qIHBwX3Nj
YW5fc3RhY2sgKi8wXSA9IHNjYW5fc3RhY2tfYm90dG9tOworICAgICAgcmV0dXJuIC8qICgpICov
MDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICB2YXIgJGpz
ID0gcXVldWVfZWxlbVsvKiB0b2tlbiAqLzFdOworICAgICAgaWYgKHR5cGVvZiAkanMgPT09ICJu
dW1iZXIiKSB7CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICB9CisgICAgICBlbHNl
IHsKKyAgICAgICAgc3dpdGNoICgkanMudGFnIHwgMCkgeworICAgICAgICAgIGNhc2UgMSA6IAor
ICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAzIDogCisgICAgICAgICAgICAgIGlmICh0eSkgewor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIHF1ZXVlX2VsZW1bLyogZWxlbV9zaXplICovMF0gPSBz
dGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSArIHNpemUgfCAwOworICAgICAgICAgICAgICAg
IHN0YXRlWy8qIHBwX3NjYW5fc3RhY2sgKi8wXSA9IHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IC8qICgpICovMDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoZXhp
dCA9PT0gMSkgeworICAgICAgICBpZiAodHkpIHsKKyAgICAgICAgICBxdWV1ZV9lbGVtWy8qIGVs
ZW1fc2l6ZSAqLzBdID0gc3RhdGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0gKyBzaXplIHwgMDsK
KyAgICAgICAgICBzdGF0ZVsvKiBwcF9zY2FuX3N0YWNrICovMF0gPSB0OworICAgICAgICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIAorICAgIH0KKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gLyogKCkgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIHNjYW5fcHVzaChzdGF0
ZSwgYiwgdG9rKSB7CisgIHBwX2VucXVldWUoc3RhdGUsIHRvayk7CisgIGlmIChiKSB7CisgICAg
c2V0X3NpemUoc3RhdGUsIC8qIHRydWUgKi8xKTsKKyAgfQorICBzdGF0ZVsvKiBwcF9zY2FuX3N0
YWNrICovMF0gPSAvKiA6OiAqL1sKKyAgICAvKiBTY2FuX2VsZW0gKi9bCisgICAgICBzdGF0ZVsv
KiBwcF9yaWdodF90b3RhbCAqLzEyXSwKKyAgICAgIHRvaworICAgIF0sCisgICAgc3RhdGVbLyog
cHBfc2Nhbl9zdGFjayAqLzBdCisgIF07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0
aW9uIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCBicl90eSkgeworICBzdGF0ZVsvKiBw
cF9jdXJyX2RlcHRoICovMTNdID0gc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSArIDEgfCAw
OworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9i
b3hlcyAqLzE0XSkgeworICAgIHZhciBlbGVtID0gLyogcmVjb3JkICovWworICAgICAgLyogZWxl
bV9zaXplICovLXN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdIHwgMCwKKyAgICAgIC8qIHRv
a2VuIDogUHBfYmVnaW4gKi9CbG9jay5fXygzLCBbCisgICAgICAgICAgaW5kZW50LAorICAgICAg
ICAgIGJyX3R5CisgICAgICAgIF0pLAorICAgICAgLyogbGVuZ3RoICovMAorICAgIF07CisgICAg
cmV0dXJuIHNjYW5fcHVzaChzdGF0ZSwgLyogZmFsc2UgKi8wLCBlbGVtKTsKKyAgfQorICBlbHNl
IGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdID09PSBzdGF0ZVsvKiBwcF9tYXhfYm94
ZXMgKi8xNF0pIHsKKyAgICB2YXIgc3RhdGUkMSA9IHN0YXRlOworICAgIHZhciBzID0gc3RhdGVb
LyogcHBfZWxsaXBzaXMgKi8xNV07CisgICAgdmFyIGxlbiA9IHMubGVuZ3RoOworICAgIHJldHVy
biBlbnF1ZXVlX3N0cmluZ19hcyhzdGF0ZSQxLCBsZW4sIHMpOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX2Nsb3NlX2JveChzdGF0ZSwgXykgewor
ICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA+IDEpIHsKKyAgICBpZiAoc3RhdGVb
LyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgewor
ICAgICAgcHBfZW5xdWV1ZShzdGF0ZSwgLyogcmVjb3JkICovWworICAgICAgICAgICAgLyogZWxl
bV9zaXplICovMCwKKyAgICAgICAgICAgIC8qIHRva2VuIDogUHBfZW5kICovMSwKKyAgICAgICAg
ICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgICAgICBdKTsKKyAgICAgIHNldF9zaXplKHN0YXRlLCAv
KiB0cnVlICovMSk7CisgICAgICBzZXRfc2l6ZShzdGF0ZSwgLyogZmFsc2UgKi8wKTsKKyAgICB9
CisgICAgc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9IHN0YXRlWy8qIHBwX2N1cnJfZGVw
dGggKi8xM10gLSAxIHwgMDsKKyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5fdGFnKHN0YXRlLCB0YWdf
bmFtZSkgeworICBpZiAoc3RhdGVbLyogcHBfcHJpbnRfdGFncyAqLzIwXSkgeworICAgIHN0YXRl
Wy8qIHBwX3RhZ19zdGFjayAqLzNdID0gLyogOjogKi9bCisgICAgICB0YWdfbmFtZSwKKyAgICAg
IHN0YXRlWy8qIHBwX3RhZ19zdGFjayAqLzNdCisgICAgXTsKKyAgICBDdXJyeS5fMShzdGF0ZVsv
KiBwcF9wcmludF9vcGVuX3RhZyAqLzI0XSwgdGFnX25hbWUpOworICB9CisgIGlmIChzdGF0ZVsv
KiBwcF9tYXJrX3RhZ3MgKi8yMV0pIHsKKyAgICByZXR1cm4gcHBfZW5xdWV1ZShzdGF0ZSwgLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisgICAgICAgICAg
ICAgICAgLyogdG9rZW4gOiBQcF9vcGVuX3RhZyAqL0Jsb2NrLl9fKDUsIFt0YWdfbmFtZV0pLAor
ICAgICAgICAgICAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgICAgICAgICAgXSk7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVuY3Rpb24gcHBfY2xvc2VfdGFnKHN0
YXRlLCBfKSB7CisgIGlmIChzdGF0ZVsvKiBwcF9tYXJrX3RhZ3MgKi8yMV0pIHsKKyAgICBwcF9l
bnF1ZXVlKHN0YXRlLCAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogZWxlbV9zaXplICovMCwK
KyAgICAgICAgICAvKiB0b2tlbiA6IFBwX2Nsb3NlX3RhZyAqLzUsCisgICAgICAgICAgLyogbGVu
Z3RoICovMAorICAgICAgICBdKTsKKyAgfQorICBpZiAoc3RhdGVbLyogcHBfcHJpbnRfdGFncyAq
LzIwXSkgeworICAgIHZhciBtYXRjaCA9IHN0YXRlWy8qIHBwX3RhZ19zdGFjayAqLzNdOworICAg
IGlmIChtYXRjaCkgeworICAgICAgQ3VycnkuXzEoc3RhdGVbLyogcHBfcHJpbnRfY2xvc2VfdGFn
ICovMjVdLCBtYXRjaFswXSk7CisgICAgICBzdGF0ZVsvKiBwcF90YWdfc3RhY2sgKi8zXSA9IG1h
dGNoWzFdOworICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gLyogKCkgKi8wOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsK
KyAgfQorfQorCitmdW5jdGlvbiBwcF9zZXRfcHJpbnRfdGFncyhzdGF0ZSwgYikgeworICBzdGF0
ZVsvKiBwcF9wcmludF90YWdzICovMjBdID0gYjsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKwor
ZnVuY3Rpb24gcHBfc2V0X21hcmtfdGFncyhzdGF0ZSwgYikgeworICBzdGF0ZVsvKiBwcF9tYXJr
X3RhZ3MgKi8yMV0gPSBiOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9n
ZXRfcHJpbnRfdGFncyhzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBfcHJpbnRfdGFn
cyAqLzIwXTsKK30KKworZnVuY3Rpb24gcHBfZ2V0X21hcmtfdGFncyhzdGF0ZSwgXykgeworICBy
ZXR1cm4gc3RhdGVbLyogcHBfbWFya190YWdzICovMjFdOworfQorCitmdW5jdGlvbiBwcF9zZXRf
dGFncyhzdGF0ZSwgYikgeworICBzdGF0ZVsvKiBwcF9wcmludF90YWdzICovMjBdID0gYjsKKyAg
c3RhdGVbLyogcHBfbWFya190YWdzICovMjFdID0gYjsKKyAgcmV0dXJuIC8qICgpICovMDsKK30K
KworZnVuY3Rpb24gcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zKHN0YXRlLCBfKSB7Cisg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyogbWFya19vcGVuX3RhZyAqL3N0YXRl
Wy8qIHBwX21hcmtfb3Blbl90YWcgKi8yMl0sCisgICAgICAgICAgLyogbWFya19jbG9zZV90YWcg
Ki9zdGF0ZVsvKiBwcF9tYXJrX2Nsb3NlX3RhZyAqLzIzXSwKKyAgICAgICAgICAvKiBwcmludF9v
cGVuX3RhZyAqL3N0YXRlWy8qIHBwX3ByaW50X29wZW5fdGFnICovMjRdLAorICAgICAgICAgIC8q
IHByaW50X2Nsb3NlX3RhZyAqL3N0YXRlWy8qIHBwX3ByaW50X2Nsb3NlX3RhZyAqLzI1XQorICAg
ICAgICBdOworfQorCitmdW5jdGlvbiBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMoc3Rh
dGUsIHBhcmFtKSB7CisgIHN0YXRlWy8qIHBwX21hcmtfb3Blbl90YWcgKi8yMl0gPSBwYXJhbVsv
KiBtYXJrX29wZW5fdGFnICovMF07CisgIHN0YXRlWy8qIHBwX21hcmtfY2xvc2VfdGFnICovMjNd
ID0gcGFyYW1bLyogbWFya19jbG9zZV90YWcgKi8xXTsKKyAgc3RhdGVbLyogcHBfcHJpbnRfb3Bl
bl90YWcgKi8yNF0gPSBwYXJhbVsvKiBwcmludF9vcGVuX3RhZyAqLzJdOworICBzdGF0ZVsvKiBw
cF9wcmludF9jbG9zZV90YWcgKi8yNV0gPSBwYXJhbVsvKiBwcmludF9jbG9zZV90YWcgKi8zXTsK
KyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gcHBfcmluaXQoc3RhdGUpIHsKKyAg
cHBfY2xlYXJfcXVldWUoc3RhdGUpOworICBzdGF0ZVsvKiBwcF9zY2FuX3N0YWNrICovMF0gPSBz
Y2FuX3N0YWNrX2JvdHRvbTsKKyAgc3RhdGVbLyogcHBfZm9ybWF0X3N0YWNrICovMV0gPSAvKiBb
XSAqLzA7CisgIHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXSA9IC8qIFtdICovMDsKKyAgc3Rh
dGVbLyogcHBfdGFnX3N0YWNrICovM10gPSAvKiBbXSAqLzA7CisgIHN0YXRlWy8qIHBwX21hcmtf
c3RhY2sgKi80XSA9IC8qIFtdICovMDsKKyAgc3RhdGVbLyogcHBfY3VycmVudF9pbmRlbnQgKi85
XSA9IDA7CisgIHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPSAwOworICBzdGF0ZVsvKiBw
cF9zcGFjZV9sZWZ0ICovOF0gPSBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XTsKKyAgcmV0dXJuIHBw
X29wZW5fYm94X2dlbihzdGF0ZSwgMCwgLyogUHBfaG92Ym94ICovMyk7Cit9CisKK2Z1bmN0aW9u
IHBwX2ZsdXNoX3F1ZXVlKHN0YXRlLCBiKSB7CisgIHdoaWxlKHN0YXRlWy8qIHBwX2N1cnJfZGVw
dGggKi8xM10gPiAxKSB7CisgICAgcHBfY2xvc2VfYm94KHN0YXRlLCAvKiAoKSAqLzApOworICB9
OworICBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSA9IDEwMDAwMDAwMTA7CisgIGFkdmFu
Y2VfbGVmdChzdGF0ZSk7CisgIGlmIChiKSB7CisgICAgQ3VycnkuXzEoc3RhdGVbLyogcHBfb3V0
X25ld2xpbmUgKi8xOF0sIC8qICgpICovMCk7CisgIH0KKyAgcmV0dXJuIHBwX3Jpbml0KHN0YXRl
KTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfYXNfc2l6ZShzdGF0ZSwgc2l6ZSwgcykgeworICBp
ZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAq
LzE0XSkgeworICAgIHJldHVybiBlbnF1ZXVlX3N0cmluZ19hcyhzdGF0ZSwgc2l6ZSwgcyk7Cisg
IH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKwordmFyIHBwX3ByaW50X2FzID0g
cHBfcHJpbnRfYXNfc2l6ZTsKKworZnVuY3Rpb24gcHBfcHJpbnRfc3RyaW5nKHN0YXRlLCBzKSB7
CisgIHJldHVybiBwcF9wcmludF9hcyhzdGF0ZSwgcy5sZW5ndGgsIHMpOworfQorCitmdW5jdGlv
biBwcF9wcmludF9pbnQoc3RhdGUsIGkpIHsKKyAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGF0
ZSwgIiIgKyBpKTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfZmxvYXQoc3RhdGUsIGYpIHsKKyAg
cmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGF0ZSwgUGVydmFzaXZlcy5zdHJpbmdfb2ZfZmxvYXQo
ZikpOworfQorCitmdW5jdGlvbiBwcF9wcmludF9ib29sKHN0YXRlLCBiKSB7CisgIHJldHVybiBw
cF9wcmludF9zdHJpbmcoc3RhdGUsIGIgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30KKworZnVuY3Rp
b24gcHBfcHJpbnRfY2hhcihzdGF0ZSwgYykgeworICByZXR1cm4gcHBfcHJpbnRfYXMoc3RhdGUs
IDEsIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5tYWtlKDEsIGMpKSk7Cit9CisK
K2Z1bmN0aW9uIHBwX29wZW5faGJveChzdGF0ZSwgXykgeworICByZXR1cm4gcHBfb3Blbl9ib3hf
Z2VuKHN0YXRlLCAwLCAvKiBQcF9oYm94ICovMCk7Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5fdmJv
eChzdGF0ZSwgaW5kZW50KSB7CisgIHJldHVybiBwcF9vcGVuX2JveF9nZW4oc3RhdGUsIGluZGVu
dCwgLyogUHBfdmJveCAqLzEpOworfQorCitmdW5jdGlvbiBwcF9vcGVuX2h2Ym94KHN0YXRlLCBp
bmRlbnQpIHsKKyAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCAvKiBQcF9o
dmJveCAqLzIpOworfQorCitmdW5jdGlvbiBwcF9vcGVuX2hvdmJveChzdGF0ZSwgaW5kZW50KSB7
CisgIHJldHVybiBwcF9vcGVuX2JveF9nZW4oc3RhdGUsIGluZGVudCwgLyogUHBfaG92Ym94ICov
Myk7Cit9CisKK2Z1bmN0aW9uIHBwX29wZW5fYm94KHN0YXRlLCBpbmRlbnQpIHsKKyAgcmV0dXJu
IHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCAvKiBQcF9ib3ggKi80KTsKK30KKworZnVu
Y3Rpb24gcHBfcHJpbnRfbmV3bGluZShzdGF0ZSwgXykgeworICBwcF9mbHVzaF9xdWV1ZShzdGF0
ZSwgLyogdHJ1ZSAqLzEpOworICByZXR1cm4gQ3VycnkuXzEoc3RhdGVbLyogcHBfb3V0X2ZsdXNo
ICovMTddLCAvKiAoKSAqLzApOworfQorCitmdW5jdGlvbiBwcF9wcmludF9mbHVzaChzdGF0ZSwg
XykgeworICBwcF9mbHVzaF9xdWV1ZShzdGF0ZSwgLyogZmFsc2UgKi8wKTsKKyAgcmV0dXJuIEN1
cnJ5Ll8xKHN0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XSwgLyogKCkgKi8wKTsKK30KKworZnVu
Y3Rpb24gcHBfZm9yY2VfbmV3bGluZShzdGF0ZSwgXykgeworICBpZiAoc3RhdGVbLyogcHBfY3Vy
cl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgIHJldHVy
biBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAv
KiBlbGVtX3NpemUgKi8wLAorICAgICAgICAgICAgICAgIC8qIHRva2VuIDogUHBfbmV3bGluZSAq
LzMsCisgICAgICAgICAgICAgICAgLyogbGVuZ3RoICovMAorICAgICAgICAgICAgICBdKTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9wcmludF9p
Zl9uZXdsaW5lKHN0YXRlLCBfKSB7CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNd
IDwgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7CisgICAgcmV0dXJuIGVucXVldWVfYWR2
YW5jZShzdGF0ZSwgLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgIC8qIGVsZW1fc2l6ZSAq
LzAsCisgICAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF9pZl9uZXdsaW5lICovNCwKKyAgICAg
ICAgICAgICAgICAvKiBsZW5ndGggKi8wCisgICAgICAgICAgICAgIF0pOworICB9CisgIGVsc2Ug
eworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X2JyZWFrKHN0YXRl
LCB3aWR0aCwgb2Zmc2V0KSB7CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdIDwg
c3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7CisgICAgdmFyIGVsZW0gPSAvKiByZWNvcmQg
Ki9bCisgICAgICAvKiBlbGVtX3NpemUgKi8tc3RhdGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0g
fCAwLAorICAgICAgLyogdG9rZW4gOiBQcF9icmVhayAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAg
ICB3aWR0aCwKKyAgICAgICAgICBvZmZzZXQKKyAgICAgICAgXSksCisgICAgICAvKiBsZW5ndGgg
Ki93aWR0aAorICAgIF07CisgICAgcmV0dXJuIHNjYW5fcHVzaChzdGF0ZSwgLyogdHJ1ZSAqLzEs
IGVsZW0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9u
IHBwX3ByaW50X3NwYWNlKHN0YXRlLCBfKSB7CisgIHJldHVybiBwcF9wcmludF9icmVhayhzdGF0
ZSwgMSwgMCk7Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X2N1dChzdGF0ZSwgXykgeworICByZXR1
cm4gcHBfcHJpbnRfYnJlYWsoc3RhdGUsIDAsIDApOworfQorCitmdW5jdGlvbiBwcF9vcGVuX3Ri
b3goc3RhdGUsIF8pIHsKKyAgc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9IHN0YXRlWy8q
IHBwX2N1cnJfZGVwdGggKi8xM10gKyAxIHwgMDsKKyAgaWYgKHN0YXRlWy8qIHBwX2N1cnJfZGVw
dGggKi8xM10gPCBzdGF0ZVsvKiBwcF9tYXhfYm94ZXMgKi8xNF0pIHsKKyAgICB2YXIgZWxlbSA9
IC8qIHJlY29yZCAqL1sKKyAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisgICAgICAvKiB0b2tlbiA6
IFBwX3RiZWdpbiAqL0Jsb2NrLl9fKDQsIFsvKiBQcF90Ym94ICovW1svKiBbXSAqLzBdXV0pLAor
ICAgICAgLyogbGVuZ3RoICovMAorICAgIF07CisgICAgcmV0dXJuIGVucXVldWVfYWR2YW5jZShz
dGF0ZSwgZWxlbSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KKworZnVu
Y3Rpb24gcHBfY2xvc2VfdGJveChzdGF0ZSwgXykgeworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9k
ZXB0aCAqLzEzXSA+IDEpIHsKKyAgICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8
IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgICAgdmFyIGVsZW0gPSAvKiByZWNv
cmQgKi9bCisgICAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCisgICAgICAgIC8qIHRva2VuIDogUHBf
dGVuZCAqLzIsCisgICAgICAgIC8qIGxlbmd0aCAqLzAKKyAgICAgIF07CisgICAgICBlbnF1ZXVl
X2FkdmFuY2Uoc3RhdGUsIGVsZW0pOworICAgICAgc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEz
XSA9IHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gLSAxIHwgMDsKKyAgICAgIHJldHVybiAv
KiAoKSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9
CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50X3Ri
cmVhayhzdGF0ZSwgd2lkdGgsIG9mZnNldCkgeworICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0
aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgeworICAgIHZhciBlbGVtID0g
LyogcmVjb3JkICovWworICAgICAgLyogZWxlbV9zaXplICovLXN0YXRlWy8qIHBwX3JpZ2h0X3Rv
dGFsICovMTJdIHwgMCwKKyAgICAgIC8qIHRva2VuIDogUHBfdGJyZWFrICovQmxvY2suX18oMiwg
WworICAgICAgICAgIHdpZHRoLAorICAgICAgICAgIG9mZnNldAorICAgICAgICBdKSwKKyAgICAg
IC8qIGxlbmd0aCAqL3dpZHRoCisgICAgXTsKKyAgICByZXR1cm4gc2Nhbl9wdXNoKHN0YXRlLCAv
KiB0cnVlICovMSwgZWxlbSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30K
KworZnVuY3Rpb24gcHBfcHJpbnRfdGFiKHN0YXRlLCBfKSB7CisgIHJldHVybiBwcF9wcmludF90
YnJlYWsoc3RhdGUsIDAsIDApOworfQorCitmdW5jdGlvbiBwcF9zZXRfdGFiKHN0YXRlLCBfKSB7
CisgIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdIDwgc3RhdGVbLyogcHBfbWF4X2Jv
eGVzICovMTRdKSB7CisgICAgdmFyIGVsZW0gPSAvKiByZWNvcmQgKi9bCisgICAgICAvKiBlbGVt
X3NpemUgKi8wLAorICAgICAgLyogdG9rZW4gOiBQcF9zdGFiICovMCwKKyAgICAgIC8qIGxlbmd0
aCAqLzAKKyAgICBdOworICAgIHJldHVybiBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIGVsZW0pOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3ByaW50
X2xpc3QoXyRzdGFyb3B0JHN0YXIsIHBwX3YsIHBwZiwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUp
IHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgdmFyICRzdGFyb3B0JHN0YXIgPSBfJHN0
YXJvcHQkc3RhcjsKKyAgICB2YXIgcHBfc2VwID0gJHN0YXJvcHQkc3RhciA/ICRzdGFyb3B0JHN0
YXJbMF0gOiBwcF9wcmludF9jdXQ7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICB2YXIgdnMgPSBw
YXJhbVsxXTsKKyAgICAgIHZhciB2ID0gcGFyYW1bMF07CisgICAgICBpZiAodnMpIHsKKyAgICAg
ICAgQ3VycnkuXzIocHBfdiwgcHBmLCB2KTsKKyAgICAgICAgQ3VycnkuXzIocHBfc2VwLCBwcGYs
IC8qICgpICovMCk7CisgICAgICAgIF9wYXJhbSA9IHZzOworICAgICAgICBfJHN0YXJvcHQkc3Rh
ciA9IC8qIFNvbWUgKi9bcHBfc2VwXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gQ3VycnkuXzIocHBfdiwgcHBmLCB2
KTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogKCkgKi8wOwor
ICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcHBfcHJpbnRfdGV4dChwcGYsIHMpIHsKKyAgdmFy
IGxlbiA9IHMubGVuZ3RoOworICB2YXIgbGVmdCA9IFswXTsKKyAgdmFyIHJpZ2h0ID0gWzBdOwor
ICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7CisgICAgcHBfcHJpbnRfc3RyaW5nKHBwZiwgJCRT
dHJpbmcuc3ViKHMsIGxlZnRbMF0sIHJpZ2h0WzBdIC0gbGVmdFswXSB8IDApKTsKKyAgICByaWdo
dFswXSA9IHJpZ2h0WzBdICsgMSB8IDA7CisgICAgbGVmdFswXSA9IHJpZ2h0WzBdOworICAgIHJl
dHVybiAvKiAoKSAqLzA7CisgIH07CisgIHdoaWxlKHJpZ2h0WzBdICE9PSBsZW4pIHsKKyAgICB2
YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQocywgcmlnaHRbMF0pOworICAgIGlmIChtYXRjaCAh
PT0gMTApIHsKKyAgICAgIGlmIChtYXRjaCAhPT0gMzIpIHsKKyAgICAgICAgcmlnaHRbMF0gPSBy
aWdodFswXSArIDEgfCAwOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGZsdXNoKC8q
ICgpICovMCk7CisgICAgICAgIHBwX3ByaW50X2JyZWFrKHBwZiwgMSwgMCk7CisgICAgICB9Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgZmx1c2goLyogKCkgKi8wKTsKKyAgICAgIHBwX2ZvcmNl
X25ld2xpbmUocHBmLCAvKiAoKSAqLzApOworICAgIH0KKyAgfTsKKyAgaWYgKGxlZnRbMF0gIT09
IGxlbikgeworICAgIHJldHVybiBmbHVzaCgvKiAoKSAqLzApOworICB9CisgIGVsc2UgeworICAg
IHJldHVybiAwOworICB9Cit9CisKK2Z1bmN0aW9uIHBwX3NldF9tYXhfYm94ZXMoc3RhdGUsIG4p
IHsKKyAgaWYgKG4gPiAxKSB7CisgICAgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdID0gbjsK
KyAgICByZXR1cm4gLyogKCkgKi8wOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9
Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9tYXhfYm94ZXMoc3RhdGUsIF8pIHsKKyAgcmV0dXJuIHN0
YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XTsKK30KKworZnVuY3Rpb24gcHBfb3Zlcl9tYXhfYm94
ZXMoc3RhdGUsIF8pIHsKKyAgcmV0dXJuICsoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9
PT0gc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKTsKK30KKworZnVuY3Rpb24gcHBfc2V0X2Vs
bGlwc2lzX3RleHQoc3RhdGUsIHMpIHsKKyAgc3RhdGVbLyogcHBfZWxsaXBzaXMgKi8xNV0gPSBz
OworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9nZXRfZWxsaXBzaXNfdGV4
dChzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBfZWxsaXBzaXMgKi8xNV07Cit9CisK
K2Z1bmN0aW9uIHBwX2xpbWl0KG4pIHsKKyAgaWYgKG4gPCAxMDAwMDAwMDEwKSB7CisgICAgcmV0
dXJuIG47CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIDEwMDAwMDAwMDk7CisgIH0KK30KKwor
ZnVuY3Rpb24gcHBfc2V0X21heF9pbmRlbnQoc3RhdGUsIG4pIHsKKyAgdmFyIHN0YXRlJDEgPSBz
dGF0ZTsKKyAgdmFyIG4kMSA9IHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdIC0gbiB8IDA7CisgIGlm
IChuJDEgPj0gMSkgeworICAgIHZhciBuJDIgPSBwcF9saW1pdChuJDEpOworICAgIHN0YXRlJDFb
LyogcHBfbWluX3NwYWNlX2xlZnQgKi82XSA9IG4kMjsKKyAgICBzdGF0ZSQxWy8qIHBwX21heF9p
bmRlbnQgKi83XSA9IHN0YXRlJDFbLyogcHBfbWFyZ2luICovNV0gLSBzdGF0ZSQxWy8qIHBwX21p
bl9zcGFjZV9sZWZ0ICovNl0gfCAwOworICAgIHJldHVybiBwcF9yaW5pdChzdGF0ZSQxKTsKKyAg
fQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitmdW5jdGlvbiBwcF9nZXRfbWF4
X2luZGVudChzdGF0ZSwgXykgeworICByZXR1cm4gc3RhdGVbLyogcHBfbWF4X2luZGVudCAqLzdd
OworfQorCitmdW5jdGlvbiBwcF9zZXRfbWFyZ2luKHN0YXRlLCBuKSB7CisgIGlmIChuID49IDEp
IHsKKyAgICB2YXIgbiQxID0gcHBfbGltaXQobik7CisgICAgc3RhdGVbLyogcHBfbWFyZ2luICov
NV0gPSBuJDE7CisgICAgdmFyIG5ld19tYXhfaW5kZW50ID0gc3RhdGVbLyogcHBfbWF4X2luZGVu
dCAqLzddIDw9IHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdID8gc3RhdGVbLyogcHBfbWF4X2luZGVu
dCAqLzddIDogUGVydmFzaXZlcy5tYXgoUGVydmFzaXZlcy5tYXgoc3RhdGVbLyogcHBfbWFyZ2lu
ICovNV0gLSBzdGF0ZVsvKiBwcF9taW5fc3BhY2VfbGVmdCAqLzZdIHwgMCwgc3RhdGVbLyogcHBf
bWFyZ2luICovNV0gLyAyIHwgMCksIDEpOworICAgIHJldHVybiBwcF9zZXRfbWF4X2luZGVudChz
dGF0ZSwgbmV3X21heF9pbmRlbnQpOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAwOworICB9
Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9tYXJnaW4oc3RhdGUsIF8pIHsKKyAgcmV0dXJuIHN0YXRl
Wy8qIHBwX21hcmdpbiAqLzVdOworfQorCitmdW5jdGlvbiBwcF9zZXRfZm9ybWF0dGVyX291dF9m
dW5jdGlvbnMoc3RhdGUsIHBhcmFtKSB7CisgIHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0g
PSBwYXJhbVsvKiBvdXRfc3RyaW5nICovMF07CisgIHN0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3
XSA9IHBhcmFtWy8qIG91dF9mbHVzaCAqLzFdOworICBzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAq
LzE4XSA9IHBhcmFtWy8qIG91dF9uZXdsaW5lICovMl07CisgIHN0YXRlWy8qIHBwX291dF9zcGFj
ZXMgKi8xOV0gPSBwYXJhbVsvKiBvdXRfc3BhY2VzICovM107CisgIHJldHVybiAvKiAoKSAqLzA7
Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyhzdGF0ZSwgXykg
eworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIG91dF9zdHJpbmcgKi9zdGF0
ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLAorICAgICAgICAgIC8qIG91dF9mbHVzaCAqL3N0YXRl
Wy8qIHBwX291dF9mbHVzaCAqLzE3XSwKKyAgICAgICAgICAvKiBvdXRfbmV3bGluZSAqL3N0YXRl
Wy8qIHBwX291dF9uZXdsaW5lICovMThdLAorICAgICAgICAgIC8qIG91dF9zcGFjZXMgKi9zdGF0
ZVsvKiBwcF9vdXRfc3BhY2VzICovMTldCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIHBwX3Nl
dF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwgZiwgZykgeworICBzdGF0ZVsvKiBw
cF9vdXRfc3RyaW5nICovMTZdID0gZjsKKyAgc3RhdGVbLyogcHBfb3V0X2ZsdXNoICovMTddID0g
ZzsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gcHBfZ2V0X2Zvcm1hdHRlcl9v
dXRwdXRfZnVuY3Rpb25zKHN0YXRlLCBfKSB7CisgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICBzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLAorICAgICAgICAgIHN0YXRlWy8qIHBw
X291dF9mbHVzaCAqLzE3XQorICAgICAgICBdOworfQorCitmdW5jdGlvbiBwcF9zZXRfYWxsX2Zv
cm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0YXRlLCBmLCBnLCBoLCBpKSB7CisgIHBwX3NldF9m
b3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwgZiwgZyk7CisgIHN0YXRlWy8qIHBwX291
dF9uZXdsaW5lICovMThdID0gaDsKKyAgc3RhdGVbLyogcHBfb3V0X3NwYWNlcyAqLzE5XSA9IGk7
CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIHBwX2dldF9hbGxfZm9ybWF0dGVy
X291dHB1dF9mdW5jdGlvbnMoc3RhdGUsIF8pIHsKKyAgcmV0dXJuIC8qIHR1cGxlICovWworICAg
ICAgICAgIHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0sCisgICAgICAgICAgc3RhdGVbLyog
cHBfb3V0X2ZsdXNoICovMTddLAorICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9uZXdsaW5lICov
MThdLAorICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9zcGFjZXMgKi8xOV0KKyAgICAgICAgXTsK
K30KKworZnVuY3Rpb24gZGlzcGxheV9uZXdsaW5lKHN0YXRlLCBfKSB7CisgIHJldHVybiBDdXJy
eS5fMyhzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLCAiXG4iLCAwLCAxKTsKK30KKwordmFy
IGJsYW5rX2xpbmUgPSBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFrZSg4MCwg
LyogIiAiICovMzIpKTsKKworZnVuY3Rpb24gZGlzcGxheV9ibGFua3Moc3RhdGUsIF9uKSB7Cisg
IHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbiA9IF9uOworICAgIGlmIChuID4gMCkgeworICAgICAg
aWYgKG4gPD0gODApIHsKKyAgICAgICAgcmV0dXJuIEN1cnJ5Ll8zKHN0YXRlWy8qIHBwX291dF9z
dHJpbmcgKi8xNl0sIGJsYW5rX2xpbmUsIDAsIG4pOworICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIEN1cnJ5Ll8zKHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0sIGJsYW5rX2xpbmUs
IDAsIDgwKTsKKyAgICAgICAgX24gPSBuIC0gODAgfCAwOworICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgIAorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAwOworICAg
IH0KKyAgfTsKK30KKworZnVuY3Rpb24gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbChzdGF0
ZSwgb3MpIHsKKyAgc3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSA9IGZ1bmN0aW9uIChwYXJh
bSwgcGFyYW0kMSwgcGFyYW0kMikgeworICAgIHJldHVybiBQZXJ2YXNpdmVzLm91dHB1dF9zdWJz
dHJpbmcob3MsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsKKyAgfTsKKyAgc3RhdGVbLyogcHBf
b3V0X2ZsdXNoICovMTddID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBDYW1sX2lvLmNhbWxf
bWxfZmx1c2gob3MpOworICB9OworICBzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSA9IGZ1
bmN0aW9uIChwYXJhbSkgeworICAgIHJldHVybiBkaXNwbGF5X25ld2xpbmUoc3RhdGUsIHBhcmFt
KTsKKyAgfTsKKyAgc3RhdGVbLyogcHBfb3V0X3NwYWNlcyAqLzE5XSA9IGZ1bmN0aW9uIChwYXJh
bSkgeworICAgIHJldHVybiBkaXNwbGF5X2JsYW5rcyhzdGF0ZSwgcGFyYW0pOworICB9OworICBy
ZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWco
cykgeworICByZXR1cm4gIjwiICsgKHMgKyAiPiIpOworfQorCitmdW5jdGlvbiBkZWZhdWx0X3Bw
X21hcmtfY2xvc2VfdGFnKHMpIHsKKyAgcmV0dXJuICI8LyIgKyAocyArICI+Iik7Cit9CisKK2Z1
bmN0aW9uIGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcoKSB7CisgIHJldHVybiAvKiAoKSAqLzA7
Cit9CisKK2Z1bmN0aW9uIGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnKCkgeworICByZXR1cm4g
LyogKCkgKi8wOworfQorCitmdW5jdGlvbiBwcF9tYWtlX2Zvcm1hdHRlcihmLCBnLCBoLCBpKSB7
CisgIHZhciBwcF9xID0gLyogcmVjb3JkICovWworICAgIC8qIGluc2VydCA6IE5pbCAqLzAsCisg
ICAgLyogYm9keSA6IE5pbCAqLzAKKyAgXTsKKyAgdmFyIHN5c190b2sgPSAvKiByZWNvcmQgKi9b
CisgICAgLyogZWxlbV9zaXplICovLTEsCisgICAgLyogdG9rZW4gOiBQcF9iZWdpbiAqL0Jsb2Nr
Ll9fKDMsIFsKKyAgICAgICAgMCwKKyAgICAgICAgLyogUHBfaG92Ym94ICovMworICAgICAgXSks
CisgICAgLyogbGVuZ3RoICovMAorICBdOworICBhZGRfcXVldWUoc3lzX3RvaywgcHBfcSk7Cisg
IHZhciBzeXNfc2Nhbl9zdGFja18wMDAgPSAvKiBTY2FuX2VsZW0gKi9bCisgICAgMSwKKyAgICBz
eXNfdG9rCisgIF07CisgIHZhciBzeXNfc2Nhbl9zdGFjayA9IC8qIDo6ICovWworICAgIHN5c19z
Y2FuX3N0YWNrXzAwMCwKKyAgICBzY2FuX3N0YWNrX2JvdHRvbQorICBdOworICByZXR1cm4gLyog
cmVjb3JkICovWworICAgICAgICAgIC8qIHBwX3NjYW5fc3RhY2sgKi9zeXNfc2Nhbl9zdGFjaywK
KyAgICAgICAgICAvKiBwcF9mb3JtYXRfc3RhY2sgOiBbXSAqLzAsCisgICAgICAgICAgLyogcHBf
dGJveF9zdGFjayA6IFtdICovMCwKKyAgICAgICAgICAvKiBwcF90YWdfc3RhY2sgOiBbXSAqLzAs
CisgICAgICAgICAgLyogcHBfbWFya19zdGFjayA6IFtdICovMCwKKyAgICAgICAgICAvKiBwcF9t
YXJnaW4gKi83OCwKKyAgICAgICAgICAvKiBwcF9taW5fc3BhY2VfbGVmdCAqLzEwLAorICAgICAg
ICAgIC8qIHBwX21heF9pbmRlbnQgKi82OCwKKyAgICAgICAgICAvKiBwcF9zcGFjZV9sZWZ0ICov
NzgsCisgICAgICAgICAgLyogcHBfY3VycmVudF9pbmRlbnQgKi8wLAorICAgICAgICAgIC8qIHBw
X2lzX25ld19saW5lIDogdHJ1ZSAqLzEsCisgICAgICAgICAgLyogcHBfbGVmdF90b3RhbCAqLzEs
CisgICAgICAgICAgLyogcHBfcmlnaHRfdG90YWwgKi8xLAorICAgICAgICAgIC8qIHBwX2N1cnJf
ZGVwdGggKi8xLAorICAgICAgICAgIC8qIHBwX21heF9ib3hlcyAqL1BlcnZhc2l2ZXMubWF4X2lu
dCwKKyAgICAgICAgICAvKiBwcF9lbGxpcHNpcyAqLyIuIiwKKyAgICAgICAgICAvKiBwcF9vdXRf
c3RyaW5nICovZiwKKyAgICAgICAgICAvKiBwcF9vdXRfZmx1c2ggKi9nLAorICAgICAgICAgIC8q
IHBwX291dF9uZXdsaW5lICovaCwKKyAgICAgICAgICAvKiBwcF9vdXRfc3BhY2VzICovaSwKKyAg
ICAgICAgICAvKiBwcF9wcmludF90YWdzIDogZmFsc2UgKi8wLAorICAgICAgICAgIC8qIHBwX21h
cmtfdGFncyA6IGZhbHNlICovMCwKKyAgICAgICAgICAvKiBwcF9tYXJrX29wZW5fdGFnICovZGVm
YXVsdF9wcF9tYXJrX29wZW5fdGFnLAorICAgICAgICAgIC8qIHBwX21hcmtfY2xvc2VfdGFnICov
ZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZywKKyAgICAgICAgICAvKiBwcF9wcmludF9vcGVuX3Rh
ZyAqL2RlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcsCisgICAgICAgICAgLyogcHBfcHJpbnRfY2xv
c2VfdGFnICovZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcsCisgICAgICAgICAgLyogcHBfcXVl
dWUgKi9wcF9xCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIG1ha2VfZm9ybWF0dGVyKG91dHB1
dCwgZmx1c2gpIHsKKyAgdmFyIHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyKG91dHB1dCwgZmx1c2gs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0sIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIH0pOworICBwcGZbLyog
cHBfb3V0X25ld2xpbmUgKi8xOF0gPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICByZXR1cm4gZGlz
cGxheV9uZXdsaW5lKHBwZiwgcGFyYW0pOworICB9OworICBwcGZbLyogcHBfb3V0X3NwYWNlcyAq
LzE5XSA9IGZ1bmN0aW9uIChwYXJhbSkgeworICAgIHJldHVybiBkaXNwbGF5X2JsYW5rcyhwcGYs
IHBhcmFtKTsKKyAgfTsKKyAgcmV0dXJuIHBwZjsKK30KKworZnVuY3Rpb24gZm9ybWF0dGVyX29m
X291dF9jaGFubmVsKG9jKSB7CisgIHJldHVybiBtYWtlX2Zvcm1hdHRlcihmdW5jdGlvbiAocGFy
YW0sIHBhcmFtJDEsIHBhcmFtJDIpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMu
b3V0cHV0X3N1YnN0cmluZyhvYywgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOworICAgICAgICAg
ICAgfSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1cm4gQ2FtbF9pby5jYW1sX21s
X2ZsdXNoKG9jKTsKKyAgICAgICAgICAgIH0pOworfQorCitmdW5jdGlvbiBmb3JtYXR0ZXJfb2Zf
YnVmZmVyKGIpIHsKKyAgcmV0dXJuIG1ha2VfZm9ybWF0dGVyKGZ1bmN0aW9uIChwYXJhbSwgcGFy
YW0kMSwgcGFyYW0kMikgeworICAgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmFkZF9zdWJzdHJp
bmcoYiwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOworICAgICAgICAgICAgfSwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgICAgfSk7Cit9
CisKK3ZhciBzdGRidWYgPSBCdWZmZXIuY3JlYXRlKDUxMik7CisKK3ZhciBzdGRfZm9ybWF0dGVy
ID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsKFBlcnZhc2l2ZXMuc3Rkb3V0KTsKKwordmFyIGVy
cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwoUGVydmFzaXZlcy5zdGRlcnIp
OworCit2YXIgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIoc3RkYnVmKTsKKwor
ZnVuY3Rpb24gZmx1c2hfc3RyX2Zvcm1hdHRlcigpIHsKKyAgcHBfZmx1c2hfcXVldWUoc3RyX2Zv
cm1hdHRlciwgLyogZmFsc2UgKi8wKTsKKyAgdmFyIHMgPSBCdWZmZXIuY29udGVudHMoc3RkYnVm
KTsKKyAgQnVmZmVyLnJlc2V0KHN0ZGJ1Zik7CisgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBm
bHVzaF9idWZfZm9ybWF0dGVyKGJ1ZiwgcHBmKSB7CisgIHBwX2ZsdXNoX3F1ZXVlKHBwZiwgLyog
ZmFsc2UgKi8wKTsKKyAgdmFyIHMgPSBCdWZmZXIuY29udGVudHMoYnVmKTsKKyAgQnVmZmVyLnJl
c2V0KGJ1Zik7CisgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBvcGVuX2hib3gocGFyYW0pIHsK
KyAgcmV0dXJuIHBwX29wZW5faGJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0
aW9uIG9wZW5fdmJveChwYXJhbSkgeworICByZXR1cm4gcHBfb3Blbl92Ym94KHN0ZF9mb3JtYXR0
ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gb3Blbl9odmJveChwYXJhbSkgeworICByZXR1cm4g
cHBfb3Blbl9odmJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5f
aG92Ym94KHBhcmFtKSB7CisgIHJldHVybiBwcF9vcGVuX2hvdmJveChzdGRfZm9ybWF0dGVyLCBw
YXJhbSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5fYm94KHBhcmFtKSB7CisgIHJldHVybiBwcF9vcGVu
X2JveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGNsb3NlX2JveChwYXJh
bSkgeworICByZXR1cm4gcHBfY2xvc2VfYm94KHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKwor
ZnVuY3Rpb24gb3Blbl90YWcocGFyYW0pIHsKKyAgcmV0dXJuIHBwX29wZW5fdGFnKHN0ZF9mb3Jt
YXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gY2xvc2VfdGFnKHBhcmFtKSB7CisgIHJldHVy
biBwcF9jbG9zZV90YWcoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmlu
dF9hcyhwYXJhbSwgcGFyYW0kMSkgeworICByZXR1cm4gcHBfcHJpbnRfYXMoc3RkX2Zvcm1hdHRl
ciwgcGFyYW0sIHBhcmFtJDEpOworfQorCitmdW5jdGlvbiBwcmludF9zdHJpbmcocGFyYW0pIHsK
KyAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1
bmN0aW9uIHByaW50X2ludChwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHN0ZF9m
b3JtYXR0ZXIsICIiICsgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmludF9mbG9hdChwYXJhbSkg
eworICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHN0ZF9mb3JtYXR0ZXIsIFBlcnZhc2l2ZXMuc3Ry
aW5nX29mX2Zsb2F0KHBhcmFtKSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X2NoYXIocGFyYW0pIHsK
KyAgcmV0dXJuIHBwX3ByaW50X2NoYXIoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5j
dGlvbiBwcmludF9ib29sKHBhcmFtKSB7CisgIHJldHVybiBwcF9wcmludF9zdHJpbmcoc3RkX2Zv
cm1hdHRlciwgcGFyYW0gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKK30KKworZnVuY3Rpb24gcHJpbnRf
YnJlYWsocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIHBwX3ByaW50X2JyZWFrKHN0ZF9mb3Jt
YXR0ZXIsIHBhcmFtLCBwYXJhbSQxKTsKK30KKworZnVuY3Rpb24gcHJpbnRfY3V0KCkgeworICBy
ZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3RkX2Zvcm1hdHRlciwgMCwgMCk7Cit9CisKK2Z1bmN0aW9u
IHByaW50X3NwYWNlKCkgeworICByZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3RkX2Zvcm1hdHRlciwg
MSwgMCk7Cit9CisKK2Z1bmN0aW9uIGZvcmNlX25ld2xpbmUocGFyYW0pIHsKKyAgcmV0dXJuIHBw
X2ZvcmNlX25ld2xpbmUoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBwcmlu
dF9mbHVzaChwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfZmx1c2goc3RkX2Zvcm1hdHRlciwg
cGFyYW0pOworfQorCitmdW5jdGlvbiBwcmludF9uZXdsaW5lKHBhcmFtKSB7CisgIHJldHVybiBw
cF9wcmludF9uZXdsaW5lKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gcHJp
bnRfaWZfbmV3bGluZShwYXJhbSkgeworICByZXR1cm4gcHBfcHJpbnRfaWZfbmV3bGluZShzdGRf
Zm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIG9wZW5fdGJveChwYXJhbSkgeworICBy
ZXR1cm4gcHBfb3Blbl90Ym94KHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24g
Y2xvc2VfdGJveChwYXJhbSkgeworICByZXR1cm4gcHBfY2xvc2VfdGJveChzdGRfZm9ybWF0dGVy
LCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X3RicmVhayhwYXJhbSwgcGFyYW0kMSkgewor
ICByZXR1cm4gcHBfcHJpbnRfdGJyZWFrKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtLCBwYXJhbSQxKTsK
K30KKworZnVuY3Rpb24gc2V0X3RhYihwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X3RhYihzdGRf
Zm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X3RhYigpIHsKKyAgcmV0dXJu
IHBwX3ByaW50X3RicmVhayhzdGRfZm9ybWF0dGVyLCAwLCAwKTsKK30KKworZnVuY3Rpb24gc2V0
X21hcmdpbihwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X21hcmdpbihzdGRfZm9ybWF0dGVyLCBw
YXJhbSk7Cit9CisKK2Z1bmN0aW9uIGdldF9tYXJnaW4oKSB7CisgIHJldHVybiBzdGRfZm9ybWF0
dGVyWy8qIHBwX21hcmdpbiAqLzVdOworfQorCitmdW5jdGlvbiBzZXRfbWF4X2luZGVudChwYXJh
bSkgeworICByZXR1cm4gcHBfc2V0X21heF9pbmRlbnQoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOwor
fQorCitmdW5jdGlvbiBnZXRfbWF4X2luZGVudCgpIHsKKyAgcmV0dXJuIHN0ZF9mb3JtYXR0ZXJb
LyogcHBfbWF4X2luZGVudCAqLzddOworfQorCitmdW5jdGlvbiBzZXRfbWF4X2JveGVzKHBhcmFt
KSB7CisgIHJldHVybiBwcF9zZXRfbWF4X2JveGVzKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30K
KworZnVuY3Rpb24gZ2V0X21heF9ib3hlcygpIHsKKyAgcmV0dXJuIHN0ZF9mb3JtYXR0ZXJbLyog
cHBfbWF4X2JveGVzICovMTRdOworfQorCitmdW5jdGlvbiBvdmVyX21heF9ib3hlcyhwYXJhbSkg
eworICByZXR1cm4gcHBfb3Zlcl9tYXhfYm94ZXMoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQor
CitmdW5jdGlvbiBzZXRfZWxsaXBzaXNfdGV4dChwYXJhbSkgeworICBzdGRfZm9ybWF0dGVyWy8q
IHBwX2VsbGlwc2lzICovMTVdID0gcGFyYW07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1
bmN0aW9uIGdldF9lbGxpcHNpc190ZXh0KCkgeworICByZXR1cm4gc3RkX2Zvcm1hdHRlclsvKiBw
cF9lbGxpcHNpcyAqLzE1XTsKK30KKworZnVuY3Rpb24gc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5l
bChwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbChzdGRfZm9y
bWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9u
cyhwYXJhbSkgeworICByZXR1cm4gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zKHN0ZF9m
b3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rp
b25zKHBhcmFtKSB7CisgIHJldHVybiBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMoc3Rk
X2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBzZXRfZm9ybWF0dGVyX291dHB1dF9m
dW5jdGlvbnMocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIHBwX3NldF9mb3JtYXR0ZXJfb3V0
cHV0X2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSwgcGFyYW0kMSk7Cit9CisKK2Z1bmN0
aW9uIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhwYXJhbSkgeworICByZXR1cm4gcHBf
Z2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30K
KworZnVuY3Rpb24gc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhwYXJhbSwgcGFy
YW0kMSwgcGFyYW0kMiwgcGFyYW0kMykgeworICByZXR1cm4gcHBfc2V0X2FsbF9mb3JtYXR0ZXJf
b3V0cHV0X2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwg
cGFyYW0kMyk7Cit9CisKK2Z1bmN0aW9uIGdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlv
bnMocGFyYW0pIHsKKyAgcmV0dXJuIHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlv
bnMoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOworfQorCitmdW5jdGlvbiBzZXRfZm9ybWF0dGVyX3Rh
Z19mdW5jdGlvbnMocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0
aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Cit9CisKK2Z1bmN0aW9uIGdldF9mb3JtYXR0ZXJf
dGFnX2Z1bmN0aW9ucyhwYXJhbSkgeworICByZXR1cm4gcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVu
Y3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gc2V0X3ByaW50X3Rh
Z3MocGFyYW0pIHsKKyAgc3RkX2Zvcm1hdHRlclsvKiBwcF9wcmludF90YWdzICovMjBdID0gcGFy
YW07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIGdldF9wcmludF90YWdzKCkg
eworICByZXR1cm4gc3RkX2Zvcm1hdHRlclsvKiBwcF9wcmludF90YWdzICovMjBdOworfQorCitm
dW5jdGlvbiBzZXRfbWFya190YWdzKHBhcmFtKSB7CisgIHN0ZF9mb3JtYXR0ZXJbLyogcHBfbWFy
a190YWdzICovMjFdID0gcGFyYW07CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9u
IGdldF9tYXJrX3RhZ3MoKSB7CisgIHJldHVybiBzdGRfZm9ybWF0dGVyWy8qIHBwX21hcmtfdGFn
cyAqLzIxXTsKK30KKworZnVuY3Rpb24gc2V0X3RhZ3MocGFyYW0pIHsKKyAgcmV0dXJuIHBwX3Nl
dF90YWdzKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKK30KKworZnVuY3Rpb24gY29tcHV0ZV90YWco
b3V0cHV0LCB0YWdfYWNjKSB7CisgIHZhciBidWYgPSBCdWZmZXIuY3JlYXRlKDE2KTsKKyAgdmFy
IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIoYnVmKTsKKyAgQ3VycnkuXzIob3V0cHV0LCBwcGYs
IHRhZ19hY2MpOworICBwcF9wcmludF9mbHVzaChwcGYsIC8qICgpICovMCk7CisgIHZhciBsZW4g
PSBidWZbLyogcG9zaXRpb24gKi8xXTsKKyAgaWYgKGxlbiA8IDIpIHsKKyAgICByZXR1cm4gQnVm
ZmVyLmNvbnRlbnRzKGJ1Zik7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIEJ1ZmZlci5zdWIo
YnVmLCAxLCBsZW4gLSAyIHwgMCk7CisgIH0KK30KKworZnVuY3Rpb24gb3V0cHV0X2Zvcm1hdHRp
bmdfbGl0KHBwZiwgZm10aW5nX2xpdCkgeworICBpZiAodHlwZW9mIGZtdGluZ19saXQgPT09ICJu
dW1iZXIiKSB7CisgICAgc3dpdGNoIChmbXRpbmdfbGl0KSB7CisgICAgICBjYXNlIDAgOiAKKyAg
ICAgICAgICByZXR1cm4gcHBfY2xvc2VfYm94KHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgIHJldHVybiBwcF9jbG9zZV90YWcocHBmLCAvKiAoKSAqLzApOworICAg
ICAgY2FzZSAyIDogCisgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2ZsdXNoKHBwZiwgLyogKCkg
Ki8wKTsKKyAgICAgIGNhc2UgMyA6IAorICAgICAgICAgIHJldHVybiBwcF9mb3JjZV9uZXdsaW5l
KHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgNCA6IAorICAgICAgICAgIHJldHVybiBwcF9w
cmludF9uZXdsaW5lKHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgNSA6IAorICAgICAgICAg
IHJldHVybiBwcF9wcmludF9jaGFyKHBwZiwgLyogIkAiICovNjQpOworICAgICAgY2FzZSA2IDog
CisgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIocHBmLCAvKiAiJSIgKi8zNyk7CisgICAg
ICAKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgc3dpdGNoIChmbXRpbmdfbGl0LnRhZyB8IDAp
IHsKKyAgICAgIGNhc2UgMCA6IAorICAgICAgICAgIHJldHVybiBwcF9wcmludF9icmVhayhwcGYs
IGZtdGluZ19saXRbMV0sIGZtdGluZ19saXRbMl0pOworICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHBwX3ByaW50
X2NoYXIocHBmLCAvKiAiQCIgKi82NCk7CisgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIo
cHBmLCBmbXRpbmdfbGl0WzBdKTsKKyAgICAgIAorICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBv
dXRwdXRfYWNjKHBwZiwgYWNjKSB7CisgIHZhciBleGl0ID0gMDsKKyAgdmFyIHA7CisgIHZhciBz
aXplOworICB2YXIgczsKKyAgdmFyIHAkMTsKKyAgdmFyIHNpemUkMTsKKyAgdmFyIGM7CisgIGlm
ICh0eXBlb2YgYWNjID09PSAibnVtYmVyIikgeworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0K
KyAgZWxzZSB7CisgICAgc3dpdGNoIChhY2MudGFnIHwgMCkgeworICAgICAgY2FzZSAwIDogCisg
ICAgICAgICAgb3V0cHV0X2FjYyhwcGYsIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIG91dHB1
dF9mb3JtYXR0aW5nX2xpdChwcGYsIGFjY1sxXSk7CisgICAgICBjYXNlIDEgOiAKKyAgICAgICAg
ICB2YXIgbWF0Y2ggPSBhY2NbMV07CisgICAgICAgICAgdmFyIHAkMiA9IGFjY1swXTsKKyAgICAg
ICAgICBvdXRwdXRfYWNjKHBwZiwgcCQyKTsKKyAgICAgICAgICBpZiAobWF0Y2gudGFnKSB7Cisg
ICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IENhbWxpbnRlcm5hbEZvcm1hdC5vcGVuX2JveF9vZl9z
dHJpbmcoY29tcHV0ZV90YWcob3V0cHV0X2FjYywgbWF0Y2hbMF0pKTsKKyAgICAgICAgICAgIHJl
dHVybiBwcF9vcGVuX2JveF9nZW4ocHBmLCBtYXRjaCQxWzBdLCBtYXRjaCQxWzFdKTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcHBfb3Blbl90YWco
cHBmLCBjb21wdXRlX3RhZyhvdXRwdXRfYWNjLCBtYXRjaFswXSkpOworICAgICAgICAgIH0KKyAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHZhciBwJDMgPSBhY2Nb
MF07CisgICAgICAgICAgdmFyIGV4aXQkMSA9IDA7CisgICAgICAgICAgaWYgKHR5cGVvZiBwJDMg
PT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICBleGl0JDEgPSAzOworICAgICAgICAgIH0KKyAg
ICAgICAgICBlbHNlIGlmIChwJDMudGFnKSB7CisgICAgICAgICAgICBleGl0JDEgPSAzOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQyID0gcCQz
WzFdOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQyID09PSAibnVtYmVyIikgeworICAg
ICAgICAgICAgICBleGl0JDEgPSAzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBp
ZiAobWF0Y2gkMi50YWcgPT09IDEpIHsKKyAgICAgICAgICAgICAgcCA9IHAkM1swXTsKKyAgICAg
ICAgICAgICAgc2l6ZSA9IG1hdGNoJDJbMV07CisgICAgICAgICAgICAgIHMgPSBhY2NbMV07Cisg
ICAgICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgIGV4aXQkMSA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICAgIGlmIChleGl0JDEgPT09IDMpIHsKKyAgICAgICAgICAgIG91dHB1dF9hY2MocHBm
LCBwJDMpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIGFjY1sxXSk7
CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgdmFyIHAkNCA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQyID0gMDsKKyAgICAgICAg
ICBpZiAodHlwZW9mIHAkNCA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkMiA9IDM7
CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkNC50YWcpIHsKKyAgICAgICAgICAg
IGV4aXQkMiA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
dmFyIG1hdGNoJDMgPSBwJDRbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDMgPT09
ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkMiA9IDM7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQzLnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBw
JDEgPSBwJDRbMF07CisgICAgICAgICAgICAgIHNpemUkMSA9IG1hdGNoJDNbMV07CisgICAgICAg
ICAgICAgIGMgPSBhY2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQkMiA9IDM7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDIgPT09IDMpIHsKKyAgICAg
ICAgICAgIG91dHB1dF9hY2MocHBmLCBwJDQpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50
X2NoYXIocHBmLCBhY2NbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgNCA6IAorICAgICAgICAgIHZhciBwJDUgPSBhY2NbMF07CisgICAgICAgICAgdmFyIGV4
aXQkMyA9IDA7CisgICAgICAgICAgaWYgKHR5cGVvZiBwJDUgPT09ICJudW1iZXIiKSB7CisgICAg
ICAgICAgICBleGl0JDMgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChwJDUu
dGFnKSB7CisgICAgICAgICAgICBleGl0JDMgPSAzOworICAgICAgICAgIH0KKyAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gcCQ1WzFdOworICAgICAgICAgICAgaWYg
KHR5cGVvZiBtYXRjaCQ0ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgICBleGl0JDMgPSAz
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkNC50YWcgPT09IDEp
IHsKKyAgICAgICAgICAgICAgcCA9IHAkNVswXTsKKyAgICAgICAgICAgICAgc2l6ZSA9IG1hdGNo
JDRbMV07CisgICAgICAgICAgICAgIHMgPSBhY2NbMV07CisgICAgICAgICAgICAgIGV4aXQgPSAx
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGV4aXQk
MyA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChleGl0JDMg
PT09IDMpIHsKKyAgICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBwJDUpOworICAgICAgICAgICAg
cmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIGFjY1sxXSk7CisgICAgICAgICAgfQorICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSA1IDogCisgICAgICAgICAgdmFyIHAkNiA9IGFjY1swXTsK
KyAgICAgICAgICB2YXIgZXhpdCQ0ID0gMDsKKyAgICAgICAgICBpZiAodHlwZW9mIHAkNiA9PT0g
Im51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgfQorICAgICAg
ICAgIGVsc2UgaWYgKHAkNi50YWcpIHsKKyAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAg
ICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIG1hdGNoJDUgPSBwJDZbMV07
CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDUgPT09ICJudW1iZXIiKSB7CisgICAgICAg
ICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICht
YXRjaCQ1LnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBwJDEgPSBwJDZbMF07CisgICAgICAg
ICAgICAgIHNpemUkMSA9IG1hdGNoJDVbMV07CisgICAgICAgICAgICAgIGMgPSBhY2NbMV07Cisg
ICAgICAgICAgICAgIGV4aXQgPSAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgIGV4aXQkNCA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICAgIGlmIChleGl0JDQgPT09IDMpIHsKKyAgICAgICAgICAgIG91dHB1dF9hY2MocHBm
LCBwJDYpOworICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIocHBmLCBhY2NbMV0pOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNiA6IAorICAgICAgICAg
IG91dHB1dF9hY2MocHBmLCBhY2NbMF0pOworICAgICAgICAgIHJldHVybiBDdXJyeS5fMShhY2Nb
MV0sIHBwZik7CisgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICBvdXRwdXRfYWNjKHBwZiwgYWNj
WzBdKTsKKyAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfZmx1c2gocHBmLCAvKiAoKSAqLzApOwor
ICAgICAgY2FzZSA4IDogCisgICAgICAgICAgb3V0cHV0X2FjYyhwcGYsIGFjY1swXSk7CisgICAg
ICAgICAgdGhyb3cgWworICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmlu
dmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAgICAgYWNjWzFdCisgICAgICAgICAgICAgIF07
CisgICAgICAKKyAgICB9CisgIH0KKyAgc3dpdGNoIChleGl0KSB7CisgICAgY2FzZSAxIDogCisg
ICAgICAgIG91dHB1dF9hY2MocHBmLCBwKTsKKyAgICAgICAgcmV0dXJuIHBwX3ByaW50X2FzX3Np
emUocHBmLCBzaXplLCBzKTsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgb3V0cHV0X2FjYyhwcGYs
IHAkMSk7CisgICAgICAgIHJldHVybiBwcF9wcmludF9hc19zaXplKHBwZiwgc2l6ZSQxLCBDYW1s
X3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFrZSgxLCBjKSkpOworICAgIAorICB9Cit9
CisKK2Z1bmN0aW9uIHN0cnB1dF9hY2MocHBmLCBhY2MpIHsKKyAgdmFyIGV4aXQgPSAwOworICB2
YXIgcDsKKyAgdmFyIHNpemU7CisgIHZhciBzOworICB2YXIgcCQxOworICB2YXIgc2l6ZSQxOwor
ICB2YXIgYzsKKyAgaWYgKHR5cGVvZiBhY2MgPT09ICJudW1iZXIiKSB7CisgICAgcmV0dXJuIC8q
ICgpICovMDsKKyAgfQorICBlbHNlIHsKKyAgICBzd2l0Y2ggKGFjYy50YWcgfCAwKSB7CisgICAg
ICBjYXNlIDAgOiAKKyAgICAgICAgICBzdHJwdXRfYWNjKHBwZiwgYWNjWzBdKTsKKyAgICAgICAg
ICByZXR1cm4gb3V0cHV0X2Zvcm1hdHRpbmdfbGl0KHBwZiwgYWNjWzFdKTsKKyAgICAgIGNhc2Ug
MSA6IAorICAgICAgICAgIHZhciBtYXRjaCA9IGFjY1sxXTsKKyAgICAgICAgICB2YXIgcCQyID0g
YWNjWzBdOworICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDIpOworICAgICAgICAgIGlmICht
YXRjaC50YWcpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCQxID0gQ2FtbGludGVybmFsRm9ybWF0
Lm9wZW5fYm94X29mX3N0cmluZyhjb21wdXRlX3RhZyhzdHJwdXRfYWNjLCBtYXRjaFswXSkpOwor
ICAgICAgICAgICAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihwcGYsIG1hdGNoJDFbMF0sIG1hdGNo
JDFbMV0pOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVy
biBwcF9vcGVuX3RhZyhwcGYsIGNvbXB1dGVfdGFnKHN0cnB1dF9hY2MsIG1hdGNoWzBdKSk7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyIDogCisgICAgICAgICAg
dmFyIHAkMyA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQxID0gMDsKKyAgICAgICAgICBp
ZiAodHlwZW9mIHAkMyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkMSA9IDM7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkMy50YWcpIHsKKyAgICAgICAgICAgIGV4
aXQkMSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFy
IG1hdGNoJDIgPSBwJDNbMV07CisgICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDIgPT09ICJu
dW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkMSA9IDM7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIGlmIChtYXRjaCQyLnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBwID0g
cCQzWzBdOworICAgICAgICAgICAgICBzaXplID0gbWF0Y2gkMlsxXTsKKyAgICAgICAgICAgICAg
cyA9IGFjY1sxXTsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQxID0gMzsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGV4aXQkMSA9PT0gMykgeworICAgICAgICAgICAg
c3RycHV0X2FjYyhwcGYsIHAkMyk7CisgICAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfc3RyaW5n
KHBwZiwgYWNjWzFdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDMgOiAKKyAgICAgICAgICB2YXIgcCQ0ID0gYWNjWzBdOworICAgICAgICAgIHZhciBleGl0JDIg
PSAwOworICAgICAgICAgIGlmICh0eXBlb2YgcCQ0ID09PSAibnVtYmVyIikgeworICAgICAgICAg
ICAgZXhpdCQyID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAocCQ0LnRhZykg
eworICAgICAgICAgICAgZXhpdCQyID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICB2YXIgbWF0Y2gkMyA9IHAkNFsxXTsKKyAgICAgICAgICAgIGlmICh0eXBl
b2YgbWF0Y2gkMyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgZXhpdCQyID0gMzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDMudGFnID09PSAxKSB7Cisg
ICAgICAgICAgICAgIHAkMSA9IHAkNFswXTsKKyAgICAgICAgICAgICAgc2l6ZSQxID0gbWF0Y2gk
M1sxXTsKKyAgICAgICAgICAgICAgYyA9IGFjY1sxXTsKKyAgICAgICAgICAgICAgZXhpdCA9IDI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQy
ID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGV4aXQkMiA9
PT0gMykgeworICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkNCk7CisgICAgICAgICAgICBy
ZXR1cm4gcHBfcHJpbnRfY2hhcihwcGYsIGFjY1sxXSk7CisgICAgICAgICAgfQorICAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSA0IDogCisgICAgICAgICAgdmFyIHAkNSA9IGFjY1swXTsKKyAg
ICAgICAgICB2YXIgZXhpdCQzID0gMDsKKyAgICAgICAgICBpZiAodHlwZW9mIHAkNSA9PT0gIm51
bWJlciIpIHsKKyAgICAgICAgICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgaWYgKHAkNS50YWcpIHsKKyAgICAgICAgICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAg
fQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFyIG1hdGNoJDQgPSBwJDVbMV07Cisg
ICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDQgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAg
ICAgIGV4aXQkMyA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRj
aCQ0LnRhZyA9PT0gMSkgeworICAgICAgICAgICAgICBwID0gcCQ1WzBdOworICAgICAgICAgICAg
ICBzaXplID0gbWF0Y2gkNFsxXTsKKyAgICAgICAgICAgICAgcyA9IGFjY1sxXTsKKyAgICAgICAg
ICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgZXhpdCQzID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAg
ICAgaWYgKGV4aXQkMyA9PT0gMykgeworICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkNSk7
CisgICAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHBwZiwgYWNjWzFdKTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDUgOiAKKyAgICAgICAgICB2YXIg
cCQ2ID0gYWNjWzBdOworICAgICAgICAgIHZhciBleGl0JDQgPSAwOworICAgICAgICAgIGlmICh0
eXBlb2YgcCQ2ID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAg
ICAgICB9CisgICAgICAgICAgZWxzZSBpZiAocCQ2LnRhZykgeworICAgICAgICAgICAgZXhpdCQ0
ID0gMzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgbWF0
Y2gkNSA9IHAkNlsxXTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkNSA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgaWYgKG1hdGNoJDUudGFnID09PSAxKSB7CisgICAgICAgICAgICAgIHAkMSA9IHAk
NlswXTsKKyAgICAgICAgICAgICAgc2l6ZSQxID0gbWF0Y2gkNVsxXTsKKyAgICAgICAgICAgICAg
YyA9IGFjY1sxXTsKKyAgICAgICAgICAgICAgZXhpdCA9IDI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZXhpdCQ0ID0gMzsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9CisgICAgICAgICAgaWYgKGV4aXQkNCA9PT0gMykgeworICAgICAgICAgICAg
c3RycHV0X2FjYyhwcGYsIHAkNik7CisgICAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfY2hhcihw
cGYsIGFjY1sxXSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2
IDogCisgICAgICAgICAgdmFyIHAkNyA9IGFjY1swXTsKKyAgICAgICAgICB2YXIgZXhpdCQ1ID0g
MDsKKyAgICAgICAgICBpZiAodHlwZW9mIHAkNyA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAg
IGV4aXQkNSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKHAkNy50YWcpIHsK
KyAgICAgICAgICAgIGV4aXQkNSA9IDM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgdmFyIG1hdGNoJDYgPSBwJDdbMV07CisgICAgICAgICAgICBpZiAodHlwZW9m
IG1hdGNoJDYgPT09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgIGV4aXQkNSA9IDM7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQ2LnRhZyA9PT0gMSkgeworICAg
ICAgICAgICAgICBzdHJwdXRfYWNjKHBwZiwgcCQ3WzBdKTsKKyAgICAgICAgICAgICAgcmV0dXJu
IHBwX3ByaW50X2FzX3NpemUocHBmLCBtYXRjaCQ2WzFdLCBDdXJyeS5fMShhY2NbMV0sIC8qICgp
ICovMCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
IGV4aXQkNSA9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChl
eGl0JDUgPT09IDMpIHsKKyAgICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDcpOworICAgICAg
ICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIEN1cnJ5Ll8xKGFjY1sxXSwgLyogKCkg
Ki8wKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA3IDogCisg
ICAgICAgICAgc3RycHV0X2FjYyhwcGYsIGFjY1swXSk7CisgICAgICAgICAgcmV0dXJuIHBwX3By
aW50X2ZsdXNoKHBwZiwgLyogKCkgKi8wKTsKKyAgICAgIGNhc2UgOCA6IAorICAgICAgICAgIHN0
cnB1dF9hY2MocHBmLCBhY2NbMF0pOworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAg
ICAgIGFjY1sxXQorICAgICAgICAgICAgICBdOworICAgICAgCisgICAgfQorICB9CisgIHN3aXRj
aCAoZXhpdCkgeworICAgIGNhc2UgMSA6IAorICAgICAgICBzdHJwdXRfYWNjKHBwZiwgcCk7Cisg
ICAgICAgIHJldHVybiBwcF9wcmludF9hc19zaXplKHBwZiwgc2l6ZSwgcyk7CisgICAgY2FzZSAy
IDogCisgICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDEpOworICAgICAgICByZXR1cm4gcHBfcHJp
bnRfYXNfc2l6ZShwcGYsIHNpemUkMSwgQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5dGVz
Lm1ha2UoMSwgYykpKTsKKyAgICAKKyAgfQorfQorCitmdW5jdGlvbiBrZnByaW50ZihrLCBvLCBw
YXJhbSkgeworICByZXR1cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGZ1bmN0aW9u
IChvLCBhY2MpIHsKKyAgICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBhY2MpOworICAgICAgICAg
ICAgICByZXR1cm4gQ3VycnkuXzEoaywgbyk7CisgICAgICAgICAgICB9LCBvLCAvKiBFbmRfb2Zf
YWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5jdGlvbiBpa2ZwcmludGYoaywgeCwgcGFyYW0p
IHsKKyAgcmV0dXJuIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihmdW5jdGlvbiAoXywg
XyQxKSB7CisgICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShrLCB4KTsKKyAgICAgICAgICAg
IH0sIHgsIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIGZwcmlu
dGYocHBmLCBmbXQpIHsKKyAgcmV0dXJuIGtmcHJpbnRmKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgICAgIH0sIHBwZiwgZm10KTsKK30KKwor
ZnVuY3Rpb24gaWZwcmludGYocHBmLCBmbXQpIHsKKyAgcmV0dXJuIGlrZnByaW50ZihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgICB9LCBw
cGYsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIHByaW50ZihmbXQpIHsKKyAgcmV0dXJuIGZwcmludGYo
c3RkX2Zvcm1hdHRlciwgZm10KTsKK30KKworZnVuY3Rpb24gZXByaW50ZihmbXQpIHsKKyAgcmV0
dXJuIGZwcmludGYoZXJyX2Zvcm1hdHRlciwgZm10KTsKK30KKworZnVuY3Rpb24ga3NwcmludGYo
aywgcGFyYW0pIHsKKyAgdmFyIGIgPSBCdWZmZXIuY3JlYXRlKDUxMik7CisgIHZhciBwcGYgPSBm
b3JtYXR0ZXJfb2ZfYnVmZmVyKGIpOworICB2YXIgayRwcmltZSA9IGZ1bmN0aW9uIChfLCBhY2Mp
IHsKKyAgICBzdHJwdXRfYWNjKHBwZiwgYWNjKTsKKyAgICByZXR1cm4gQ3VycnkuXzEoaywgZmx1
c2hfYnVmX2Zvcm1hdHRlcihiLCBwcGYpKTsKKyAgfTsKKyAgcmV0dXJuIENhbWxpbnRlcm5hbEZv
cm1hdC5tYWtlX3ByaW50ZihrJHByaW1lLCAvKiAoKSAqLzAsIC8qIEVuZF9vZl9hY2MgKi8wLCBw
YXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIHNwcmludGYoZm10KSB7CisgIHJldHVybiBrc3ByaW50
ZihmdW5jdGlvbiAocykgeworICAgICAgICAgICAgICByZXR1cm4gczsKKyAgICAgICAgICAgIH0s
IGZtdCk7Cit9CisKK2Z1bmN0aW9uIGFzcHJpbnRmKHBhcmFtKSB7CisgIHZhciBiID0gQnVmZmVy
LmNyZWF0ZSg1MTIpOworICB2YXIgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlcihiKTsKKyAgdmFy
IGskcHJpbWUgPSBmdW5jdGlvbiAocHBmLCBhY2MpIHsKKyAgICBvdXRwdXRfYWNjKHBwZiwgYWNj
KTsKKyAgICBwcF9mbHVzaF9xdWV1ZShwcGYsIC8qIGZhbHNlICovMCk7CisgICAgcmV0dXJuIGZs
dXNoX2J1Zl9mb3JtYXR0ZXIoYiwgcHBmKTsKKyAgfTsKKyAgcmV0dXJuIENhbWxpbnRlcm5hbEZv
cm1hdC5tYWtlX3ByaW50ZihrJHByaW1lLCBwcGYsIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVsw
XSk7Cit9CisKK2Z1bmN0aW9uIGJwcmludGYoYiwgcGFyYW0pIHsKKyAgdmFyIGsgPSBmdW5jdGlv
biAocHBmLCBhY2MpIHsKKyAgICBvdXRwdXRfYWNjKHBwZiwgYWNjKTsKKyAgICByZXR1cm4gcHBf
Zmx1c2hfcXVldWUocHBmLCAvKiBmYWxzZSAqLzApOworICB9OworICByZXR1cm4gQ2FtbGludGVy
bmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGssIGZvcm1hdHRlcl9vZl9idWZmZXIoYiksIC8qIEVuZF9v
Zl9hY2MgKi8wLCBwYXJhbVswXSk7Cit9CisKK1BlcnZhc2l2ZXMuYXRfZXhpdChwcmludF9mbHVz
aCk7CisKK3ZhciBrcHJpbnRmID0ga3NwcmludGY7CisKK2V4cG9ydHMub3Blbl9ib3ggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fYm94OworZXhwb3J0cy5jbG9zZV9ib3ggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gY2xvc2VfYm94OworZXhwb3J0cy5wcmludF9zdHJp
bmcgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfc3RyaW5nOworZXhwb3J0cy5wcmlu
dF9hcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfYXM7CitleHBvcnRzLnBy
aW50X2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9pbnQ7CitleHBvcnRz
LnByaW50X2Zsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9mbG9hdDsKK2V4
cG9ydHMucHJpbnRfY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHByaW50X2NoYXI7
CitleHBvcnRzLnByaW50X2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9i
b29sOworZXhwb3J0cy5wcmludF9zcGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJp
bnRfc3BhY2U7CitleHBvcnRzLnByaW50X2N1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBwcmludF9jdXQ7CitleHBvcnRzLnByaW50X2JyZWFrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBwcmludF9icmVhazsKK2V4cG9ydHMucHJpbnRfZmx1c2ggICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IHByaW50X2ZsdXNoOworZXhwb3J0cy5wcmludF9uZXdsaW5lICAgICAgICAgICAg
ICAgICAgICAgICAgID0gcHJpbnRfbmV3bGluZTsKK2V4cG9ydHMuZm9yY2VfbmV3bGluZSAgICAg
ICAgICAgICAgICAgICAgICAgICA9IGZvcmNlX25ld2xpbmU7CitleHBvcnRzLnByaW50X2lmX25l
d2xpbmUgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9pZl9uZXdsaW5lOworZXhwb3J0cy5z
ZXRfbWFyZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc2V0X21hcmdpbjsKK2V4cG9y
dHMuZ2V0X21hcmdpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdldF9tYXJnaW47Citl
eHBvcnRzLnNldF9tYXhfaW5kZW50ICAgICAgICAgICAgICAgICAgICAgICAgPSBzZXRfbWF4X2lu
ZGVudDsKK2V4cG9ydHMuZ2V0X21heF9pbmRlbnQgICAgICAgICAgICAgICAgICAgICAgICA9IGdl
dF9tYXhfaW5kZW50OworZXhwb3J0cy5zZXRfbWF4X2JveGVzICAgICAgICAgICAgICAgICAgICAg
ICAgID0gc2V0X21heF9ib3hlczsKK2V4cG9ydHMuZ2V0X21heF9ib3hlcyAgICAgICAgICAgICAg
ICAgICAgICAgICA9IGdldF9tYXhfYm94ZXM7CitleHBvcnRzLm92ZXJfbWF4X2JveGVzICAgICAg
ICAgICAgICAgICAgICAgICAgPSBvdmVyX21heF9ib3hlczsKK2V4cG9ydHMub3Blbl9oYm94ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5faGJveDsKK2V4cG9ydHMub3Blbl92Ym94
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fdmJveDsKK2V4cG9ydHMub3Blbl9o
dmJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5faHZib3g7CitleHBvcnRzLm9w
ZW5faG92Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBvcGVuX2hvdmJveDsKK2V4cG9y
dHMub3Blbl90Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fdGJveDsKK2V4
cG9ydHMuY2xvc2VfdGJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGNsb3NlX3Rib3g7
CitleHBvcnRzLnByaW50X3RicmVhayAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF90
YnJlYWs7CitleHBvcnRzLnNldF90YWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBz
ZXRfdGFiOworZXhwb3J0cy5wcmludF90YWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
cHJpbnRfdGFiOworZXhwb3J0cy5zZXRfZWxsaXBzaXNfdGV4dCAgICAgICAgICAgICAgICAgICAg
ID0gc2V0X2VsbGlwc2lzX3RleHQ7CitleHBvcnRzLmdldF9lbGxpcHNpc190ZXh0ICAgICAgICAg
ICAgICAgICAgICAgPSBnZXRfZWxsaXBzaXNfdGV4dDsKK2V4cG9ydHMub3Blbl90YWcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fdGFnOworZXhwb3J0cy5jbG9zZV90YWcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gY2xvc2VfdGFnOworZXhwb3J0cy5zZXRfdGFncyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc2V0X3RhZ3M7CitleHBvcnRzLnNldF9wcmlu
dF90YWdzICAgICAgICAgICAgICAgICAgICAgICAgPSBzZXRfcHJpbnRfdGFnczsKK2V4cG9ydHMu
c2V0X21hcmtfdGFncyAgICAgICAgICAgICAgICAgICAgICAgICA9IHNldF9tYXJrX3RhZ3M7Citl
eHBvcnRzLmdldF9wcmludF90YWdzICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXRfcHJpbnRf
dGFnczsKK2V4cG9ydHMuZ2V0X21hcmtfdGFncyAgICAgICAgICAgICAgICAgICAgICAgICA9IGdl
dF9tYXJrX3RhZ3M7CitleHBvcnRzLnNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgICAgICAgICAg
ICAgPSBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsOworZXhwb3J0cy5zZXRfZm9ybWF0dGVyX291
dHB1dF9mdW5jdGlvbnMgICAgICAgID0gc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOwor
ZXhwb3J0cy5nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgICAgID0gZ2V0X2Zvcm1h
dHRlcl9vdXRwdXRfZnVuY3Rpb25zOworZXhwb3J0cy5zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlv
bnMgICAgICAgICAgID0gc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOworZXhwb3J0cy5nZXRf
Zm9ybWF0dGVyX291dF9mdW5jdGlvbnMgICAgICAgICAgID0gZ2V0X2Zvcm1hdHRlcl9vdXRfZnVu
Y3Rpb25zOworZXhwb3J0cy5zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgICAgICAgICAgID0g
c2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOworZXhwb3J0cy5nZXRfZm9ybWF0dGVyX3RhZ19m
dW5jdGlvbnMgICAgICAgICAgID0gZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOworZXhwb3J0
cy5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgICAgICAgICAgICAgID0gZm9ybWF0dGVyX29mX291
dF9jaGFubmVsOworZXhwb3J0cy5zdGRfZm9ybWF0dGVyICAgICAgICAgICAgICAgICAgICAgICAg
ID0gc3RkX2Zvcm1hdHRlcjsKK2V4cG9ydHMuZXJyX2Zvcm1hdHRlciAgICAgICAgICAgICAgICAg
ICAgICAgICA9IGVycl9mb3JtYXR0ZXI7CitleHBvcnRzLmZvcm1hdHRlcl9vZl9idWZmZXIgICAg
ICAgICAgICAgICAgICAgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyOworZXhwb3J0cy5zdGRidWYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RkYnVmOworZXhwb3J0cy5zdHJfZm9ybWF0
dGVyICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RyX2Zvcm1hdHRlcjsKK2V4cG9ydHMuZmx1
c2hfc3RyX2Zvcm1hdHRlciAgICAgICAgICAgICAgICAgICA9IGZsdXNoX3N0cl9mb3JtYXR0ZXI7
CitleHBvcnRzLm1ha2VfZm9ybWF0dGVyICAgICAgICAgICAgICAgICAgICAgICAgPSBtYWtlX2Zv
cm1hdHRlcjsKK2V4cG9ydHMucHBfb3Blbl9oYm94ICAgICAgICAgICAgICAgICAgICAgICAgICA9
IHBwX29wZW5faGJveDsKK2V4cG9ydHMucHBfb3Blbl92Ym94ICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IHBwX29wZW5fdmJveDsKK2V4cG9ydHMucHBfb3Blbl9odmJveCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IHBwX29wZW5faHZib3g7CitleHBvcnRzLnBwX29wZW5faG92Ym94ICAgICAg
ICAgICAgICAgICAgICAgICAgPSBwcF9vcGVuX2hvdmJveDsKK2V4cG9ydHMucHBfb3Blbl9ib3gg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX29wZW5fYm94OworZXhwb3J0cy5wcF9jbG9z
ZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfY2xvc2VfYm94OworZXhwb3J0cy5w
cF9vcGVuX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfb3Blbl90YWc7CitleHBv
cnRzLnBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9jbG9zZV90YWc7
CitleHBvcnRzLnBwX3ByaW50X3N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9wcmlu
dF9zdHJpbmc7CitleHBvcnRzLnBwX3ByaW50X2FzICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBwcF9wcmludF9hczsKK2V4cG9ydHMucHBfcHJpbnRfaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IHBwX3ByaW50X2ludDsKK2V4cG9ydHMucHBfcHJpbnRfZmxvYXQgICAgICAgICAgICAg
ICAgICAgICAgICA9IHBwX3ByaW50X2Zsb2F0OworZXhwb3J0cy5wcF9wcmludF9jaGFyICAgICAg
ICAgICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfY2hhcjsKK2V4cG9ydHMucHBfcHJpbnRfYm9v
bCAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2Jvb2w7CitleHBvcnRzLnBwX3By
aW50X2JyZWFrICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9wcmludF9icmVhazsKK2V4cG9y
dHMucHBfcHJpbnRfY3V0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2N1dDsK
K2V4cG9ydHMucHBfcHJpbnRfc3BhY2UgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50
X3NwYWNlOworZXhwb3J0cy5wcF9mb3JjZV9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgID0g
cHBfZm9yY2VfbmV3bGluZTsKK2V4cG9ydHMucHBfcHJpbnRfZmx1c2ggICAgICAgICAgICAgICAg
ICAgICAgICA9IHBwX3ByaW50X2ZsdXNoOworZXhwb3J0cy5wcF9wcmludF9uZXdsaW5lICAgICAg
ICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfbmV3bGluZTsKK2V4cG9ydHMucHBfcHJpbnRfaWZf
bmV3bGluZSAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2lmX25ld2xpbmU7CitleHBvcnRz
LnBwX29wZW5fdGJveCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9vcGVuX3Rib3g7Citl
eHBvcnRzLnBwX2Nsb3NlX3Rib3ggICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9jbG9zZV90
Ym94OworZXhwb3J0cy5wcF9wcmludF90YnJlYWsgICAgICAgICAgICAgICAgICAgICAgID0gcHBf
cHJpbnRfdGJyZWFrOworZXhwb3J0cy5wcF9zZXRfdGFiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gcHBfc2V0X3RhYjsKK2V4cG9ydHMucHBfcHJpbnRfdGFiICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IHBwX3ByaW50X3RhYjsKK2V4cG9ydHMucHBfc2V0X3RhZ3MgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHBwX3NldF90YWdzOworZXhwb3J0cy5wcF9zZXRfcHJpbnRfdGFncyAg
ICAgICAgICAgICAgICAgICAgID0gcHBfc2V0X3ByaW50X3RhZ3M7CitleHBvcnRzLnBwX3NldF9t
YXJrX3RhZ3MgICAgICAgICAgICAgICAgICAgICAgPSBwcF9zZXRfbWFya190YWdzOworZXhwb3J0
cy5wcF9nZXRfcHJpbnRfdGFncyAgICAgICAgICAgICAgICAgICAgID0gcHBfZ2V0X3ByaW50X3Rh
Z3M7CitleHBvcnRzLnBwX2dldF9tYXJrX3RhZ3MgICAgICAgICAgICAgICAgICAgICAgPSBwcF9n
ZXRfbWFya190YWdzOworZXhwb3J0cy5wcF9zZXRfbWFyZ2luICAgICAgICAgICAgICAgICAgICAg
ICAgID0gcHBfc2V0X21hcmdpbjsKK2V4cG9ydHMucHBfZ2V0X21hcmdpbiAgICAgICAgICAgICAg
ICAgICAgICAgICA9IHBwX2dldF9tYXJnaW47CitleHBvcnRzLnBwX3NldF9tYXhfaW5kZW50ICAg
ICAgICAgICAgICAgICAgICAgPSBwcF9zZXRfbWF4X2luZGVudDsKK2V4cG9ydHMucHBfZ2V0X21h
eF9pbmRlbnQgICAgICAgICAgICAgICAgICAgICA9IHBwX2dldF9tYXhfaW5kZW50OworZXhwb3J0
cy5wcF9zZXRfbWF4X2JveGVzICAgICAgICAgICAgICAgICAgICAgID0gcHBfc2V0X21heF9ib3hl
czsKK2V4cG9ydHMucHBfZ2V0X21heF9ib3hlcyAgICAgICAgICAgICAgICAgICAgICA9IHBwX2dl
dF9tYXhfYm94ZXM7CitleHBvcnRzLnBwX292ZXJfbWF4X2JveGVzICAgICAgICAgICAgICAgICAg
ICAgPSBwcF9vdmVyX21heF9ib3hlczsKK2V4cG9ydHMucHBfc2V0X2VsbGlwc2lzX3RleHQgICAg
ICAgICAgICAgICAgICA9IHBwX3NldF9lbGxpcHNpc190ZXh0OworZXhwb3J0cy5wcF9nZXRfZWxs
aXBzaXNfdGV4dCAgICAgICAgICAgICAgICAgID0gcHBfZ2V0X2VsbGlwc2lzX3RleHQ7CitleHBv
cnRzLnBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgICAgICAgICAgPSBwcF9zZXRfZm9ybWF0
dGVyX291dF9jaGFubmVsOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlv
bnMgICAgID0gcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9n
ZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRw
dXRfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgICAg
ICAgID0gcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9nZXRfZm9y
bWF0dGVyX3RhZ19mdW5jdGlvbnMgICAgICAgID0gcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rp
b25zOworZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgICAgICAgID0gcHBf
c2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOworZXhwb3J0cy5wcF9nZXRfZm9ybWF0dGVyX291
dF9mdW5jdGlvbnMgICAgICAgID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOworZXhw
b3J0cy5wcF9wcmludF9saXN0ICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfbGlz
dDsKK2V4cG9ydHMucHBfcHJpbnRfdGV4dCAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3By
aW50X3RleHQ7CitleHBvcnRzLmZwcmludGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBmcHJpbnRmOworZXhwb3J0cy5wcmludGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gcHJpbnRmOworZXhwb3J0cy5lcHJpbnRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gZXByaW50ZjsKK2V4cG9ydHMuc3ByaW50ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IHNwcmludGY7CitleHBvcnRzLmFzcHJpbnRmICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBhc3ByaW50ZjsKK2V4cG9ydHMuaWZwcmludGYgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IGlmcHJpbnRmOworZXhwb3J0cy5rZnByaW50ZiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0ga2ZwcmludGY7CitleHBvcnRzLmlrZnByaW50ZiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBpa2ZwcmludGY7CitleHBvcnRzLmtzcHJpbnRmICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBrc3ByaW50ZjsKK2V4cG9ydHMuYnByaW50ZiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IGJwcmludGY7CitleHBvcnRzLmtwcmludGYgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBrcHJpbnRmOworZXhwb3J0cy5zZXRfYWxsX2Zvcm1hdHRlcl9vdXRw
dXRfZnVuY3Rpb25zICAgID0gc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uczsKK2V4
cG9ydHMuZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAgICA9IGdldF9hbGxfZm9y
bWF0dGVyX291dHB1dF9mdW5jdGlvbnM7CitleHBvcnRzLnBwX3NldF9hbGxfZm9ybWF0dGVyX291
dHB1dF9mdW5jdGlvbnMgPSBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOwor
ZXhwb3J0cy5wcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID0gcHBfZ2V0X2Fs
bF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uczsKKy8qIGJsYW5rX2xpbmUgTm90IGEgcHVyZSBt
b2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBmb3JtYXQuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVy
biBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnaTMyJ10gPSBmdW5jdGlvbigpIHsK
K8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpMzIuanMgLy8vLy8v
Ly8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBF
RElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgSW50ICAgICAgICA9IHJlcXVpcmUo
Ii4vaW50Iik7Cit2YXIgSW50MzIgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9p
bnQzMiIpOwordmFyIENhbWxfaW50MzIgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2Ft
bF9pbnQzMiIpOworCit2YXIgaW5jbHVkZSA9IEludC5NYWtlKC8qIG1vZHVsZSAqL1sKKyAgICAg
IC8qIHplcm8gKi9JbnQzMi56ZXJvLAorICAgICAgLyogb25lICovSW50MzIub25lLAorICAgICAg
LyogbWludXNfb25lICovSW50MzIubWludXNfb25lLAorICAgICAgLyogbWF4X2ludCAqL0ludDMy
Lm1heF9pbnQsCisgICAgICAvKiBtaW5faW50ICovSW50MzIubWluX2ludCwKKyAgICAgIC8qICVp
bnQzMl9uZWcgKi9mdW5jdGlvbiAocHJpbSkgeworICAgICAgICByZXR1cm4gLXByaW0gfCAwOwor
ICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl9hZGQgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7
CisgICAgICAgIHJldHVybiBwcmltICsgcHJpbSQxIHwgMDsKKyAgICAgIH0sCisgICAgICAvKiAl
aW50MzJfc3ViICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJp
bSAtIHByaW0kMSB8IDA7CisgICAgICB9LAorICAgICAgLyogJWludDMyX211bCAqL0NhbWxfaW50
MzIuaW11bCwKKyAgICAgIC8qICVpbnQzMl9kaXYgKi9DYW1sX2ludDMyLmRpdiwKKyAgICAgIC8q
ICVpbnQzMl9tb2QgKi9DYW1sX2ludDMyLm1vZF8sCisgICAgICAvKiAlaW50MzJfYW5kICovZnVu
Y3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICByZXR1cm4gcHJpbSAmIHByaW0kMTsKKyAg
ICAgIH0sCisgICAgICAvKiBsb2dub3QgKi9JbnQzMi5sb2dub3QsCisgICAgICAvKiAlaW50MzJf
b3IgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiBwcmltIHwgcHJp
bSQxOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl94b3IgKi9mdW5jdGlvbiAocHJpbSwgcHJp
bSQxKSB7CisgICAgICAgIHJldHVybiBwcmltIF4gcHJpbSQxOworICAgICAgfSwKKyAgICAgIC8q
ICVpbnQzMl9sc2wgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAo
cHJpbSA8PCBwcmltJDEpOworICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl9hc3IgKi9mdW5jdGlv
biAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAocHJpbSA+PiBwcmltJDEpOworICAg
ICAgfSwKKyAgICAgIC8qICVpbnQzMl9sc3IgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7Cisg
ICAgICAgIHJldHVybiAocHJpbSA+Pj4gcHJpbSQxKSB8IDA7CisgICAgICB9LAorICAgICAgLyog
JWludDMyX29mX2ludCAqL2Z1bmN0aW9uIChwcmltKSB7CisgICAgICAgIHJldHVybiBwcmltOwor
ICAgICAgfSwKKyAgICAgIC8qICVpbnQzMl90b19pbnQgKi9mdW5jdGlvbiAocHJpbSkgeworICAg
ICAgICByZXR1cm4gcHJpbTsKKyAgICAgIH0sCisgICAgICAvKiB0b19zdHJpbmcgKi9JbnQzMi50
b19zdHJpbmcsCisgICAgICAvKiBiaXR3aWR0aCAqLzMyCisgICAgXSk7CisKK3ZhciBvZl9iaXRz
ID0gaW5jbHVkZVswXTsKKwordmFyIHRvX2JpdHMgPSBpbmNsdWRlWzFdOworCit2YXIgemVybyA9
IGluY2x1ZGVbMl07CisKK3ZhciBhZGQgPSBpbmNsdWRlWzNdOworCit2YXIgc3ViID0gaW5jbHVk
ZVs0XTsKKwordmFyIG11bCA9IGluY2x1ZGVbNV07CisKK3ZhciBkaXZfcyA9IGluY2x1ZGVbNl07
CisKK3ZhciBkaXZfdSA9IGluY2x1ZGVbN107CisKK3ZhciByZW1fcyA9IGluY2x1ZGVbOF07CisK
K3ZhciByZW1fdSA9IGluY2x1ZGVbOV07CisKK3ZhciBhbmRfID0gaW5jbHVkZVsxMF07CisKK3Zh
ciBvcl8gPSBpbmNsdWRlWzExXTsKKwordmFyIHhvciA9IGluY2x1ZGVbMTJdOworCit2YXIgc2hs
ID0gaW5jbHVkZVsxM107CisKK3ZhciBzaHJfcyA9IGluY2x1ZGVbMTRdOworCit2YXIgc2hyX3Ug
PSBpbmNsdWRlWzE1XTsKKwordmFyIHJvdGwgPSBpbmNsdWRlWzE2XTsKKwordmFyIHJvdHIgPSBp
bmNsdWRlWzE3XTsKKwordmFyIGNseiA9IGluY2x1ZGVbMThdOworCit2YXIgY3R6ID0gaW5jbHVk
ZVsxOV07CisKK3ZhciBwb3BjbnQgPSBpbmNsdWRlWzIwXTsKKwordmFyIGVxeiA9IGluY2x1ZGVb
MjFdOworCit2YXIgZXEgPSBpbmNsdWRlWzIyXTsKKwordmFyIG5lID0gaW5jbHVkZVsyM107CisK
K3ZhciBsdF9zID0gaW5jbHVkZVsyNF07CisKK3ZhciBsdF91ID0gaW5jbHVkZVsyNV07CisKK3Zh
ciBsZV9zID0gaW5jbHVkZVsyNl07CisKK3ZhciBsZV91ID0gaW5jbHVkZVsyN107CisKK3ZhciBn
dF9zID0gaW5jbHVkZVsyOF07CisKK3ZhciBndF91ID0gaW5jbHVkZVsyOV07CisKK3ZhciBnZV9z
ID0gaW5jbHVkZVszMF07CisKK3ZhciBnZV91ID0gaW5jbHVkZVszMV07CisKK3ZhciBvZl9pbnRf
cyA9IGluY2x1ZGVbMzJdOworCit2YXIgb2ZfaW50X3UgPSBpbmNsdWRlWzMzXTsKKwordmFyIG9m
X3N0cmluZ19zID0gaW5jbHVkZVszNF07CisKK3ZhciBvZl9zdHJpbmdfdSA9IGluY2x1ZGVbMzVd
OworCit2YXIgb2Zfc3RyaW5nID0gaW5jbHVkZVszNl07CisKK3ZhciB0b19zdHJpbmdfcyA9IGlu
Y2x1ZGVbMzddOworCit2YXIgdG9fc3RyaW5nX3UgPSBpbmNsdWRlWzM4XTsKKworZXhwb3J0cy5v
Zl9iaXRzICAgICA9IG9mX2JpdHM7CitleHBvcnRzLnRvX2JpdHMgICAgID0gdG9fYml0czsKK2V4
cG9ydHMuemVybyAgICAgICAgPSB6ZXJvOworZXhwb3J0cy5hZGQgICAgICAgICA9IGFkZDsKK2V4
cG9ydHMuc3ViICAgICAgICAgPSBzdWI7CitleHBvcnRzLm11bCAgICAgICAgID0gbXVsOworZXhw
b3J0cy5kaXZfcyAgICAgICA9IGRpdl9zOworZXhwb3J0cy5kaXZfdSAgICAgICA9IGRpdl91Owor
ZXhwb3J0cy5yZW1fcyAgICAgICA9IHJlbV9zOworZXhwb3J0cy5yZW1fdSAgICAgICA9IHJlbV91
OworZXhwb3J0cy5hbmRfICAgICAgICA9IGFuZF87CitleHBvcnRzLm9yXyAgICAgICAgID0gb3Jf
OworZXhwb3J0cy54b3IgICAgICAgICA9IHhvcjsKK2V4cG9ydHMuc2hsICAgICAgICAgPSBzaGw7
CitleHBvcnRzLnNocl9zICAgICAgID0gc2hyX3M7CitleHBvcnRzLnNocl91ICAgICAgID0gc2hy
X3U7CitleHBvcnRzLnJvdGwgICAgICAgID0gcm90bDsKK2V4cG9ydHMucm90ciAgICAgICAgPSBy
b3RyOworZXhwb3J0cy5jbHogICAgICAgICA9IGNsejsKK2V4cG9ydHMuY3R6ICAgICAgICAgPSBj
dHo7CitleHBvcnRzLnBvcGNudCAgICAgID0gcG9wY250OworZXhwb3J0cy5lcXogICAgICAgICA9
IGVxejsKK2V4cG9ydHMuZXEgICAgICAgICAgPSBlcTsKK2V4cG9ydHMubmUgICAgICAgICAgPSBu
ZTsKK2V4cG9ydHMubHRfcyAgICAgICAgPSBsdF9zOworZXhwb3J0cy5sdF91ICAgICAgICA9IGx0
X3U7CitleHBvcnRzLmxlX3MgICAgICAgID0gbGVfczsKK2V4cG9ydHMubGVfdSAgICAgICAgPSBs
ZV91OworZXhwb3J0cy5ndF9zICAgICAgICA9IGd0X3M7CitleHBvcnRzLmd0X3UgICAgICAgID0g
Z3RfdTsKK2V4cG9ydHMuZ2VfcyAgICAgICAgPSBnZV9zOworZXhwb3J0cy5nZV91ICAgICAgICA9
IGdlX3U7CitleHBvcnRzLm9mX2ludF9zICAgID0gb2ZfaW50X3M7CitleHBvcnRzLm9mX2ludF91
ICAgID0gb2ZfaW50X3U7CitleHBvcnRzLm9mX3N0cmluZ19zID0gb2Zfc3RyaW5nX3M7CitleHBv
cnRzLm9mX3N0cmluZ191ID0gb2Zfc3RyaW5nX3U7CitleHBvcnRzLm9mX3N0cmluZyAgID0gb2Zf
c3RyaW5nOworZXhwb3J0cy50b19zdHJpbmdfcyA9IHRvX3N0cmluZ19zOworZXhwb3J0cy50b19z
dHJpbmdfdSA9IHRvX3N0cmluZ191OworLyogaW5jbHVkZSBOb3QgYSBwdXJlIG1vZHVsZSAqLwor
Ly8vLy8vLy8gZW5kIG9mIGkzMi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivC
oCB9OworCisKKyAgX3JlZ2lzdHJ5WydpNjQnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4
cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGk2NC5qcyAvLy8vLy8vLworLy8gR2VuZXJh
dGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJF
CisndXNlIHN0cmljdCc7CisKK3ZhciBJbnQgICAgICAgID0gcmVxdWlyZSgiLi9pbnQiKTsKK3Zh
ciBJbnQ2NCAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2ludDY0Iik7Cit2YXIg
Q2FtbF9pbnQ2NCA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2ludDY0Iik7CisK
K3ZhciBpbmNsdWRlID0gSW50Lk1ha2UoLyogbW9kdWxlICovWworICAgICAgLyogemVybyAqL0lu
dDY0Lnplcm8sCisgICAgICAvKiBvbmUgKi9JbnQ2NC5vbmUsCisgICAgICAvKiBtaW51c19vbmUg
Ki9JbnQ2NC5taW51c19vbmUsCisgICAgICAvKiBtYXhfaW50ICovSW50NjQubWF4X2ludCwKKyAg
ICAgIC8qIG1pbl9pbnQgKi9JbnQ2NC5taW5faW50LAorICAgICAgLyogJWludDY0X25lZyAqL0Nh
bWxfaW50NjQubmVnLAorICAgICAgLyogJWludDY0X2FkZCAqL0NhbWxfaW50NjQuYWRkLAorICAg
ICAgLyogJWludDY0X3N1YiAqL0NhbWxfaW50NjQuc3ViLAorICAgICAgLyogJWludDY0X211bCAq
L0NhbWxfaW50NjQubXVsLAorICAgICAgLyogJWludDY0X2RpdiAqL0NhbWxfaW50NjQuZGl2LAor
ICAgICAgLyogJWludDY0X21vZCAqL0NhbWxfaW50NjQubW9kXywKKyAgICAgIC8qICVpbnQ2NF9h
bmQgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7CisgICAgICAgIHJldHVybiAvKiBpbnQ2NCAq
L1sKKyAgICAgICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gJiBwcmltJDFbMF0sCisgICAgICAg
ICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gJiBwcmltJDFbMV0pID4+PiAwKQorICAgICAgICAg
ICAgICBdOworICAgICAgfSwKKyAgICAgIC8qIGxvZ25vdCAqL0ludDY0LmxvZ25vdCwKKyAgICAg
IC8qICVpbnQ2NF9vciAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJu
IC8qIGludDY0ICovWworICAgICAgICAgICAgICAgIC8qIGhpICovcHJpbVswXSB8IHByaW0kMVsw
XSwKKyAgICAgICAgICAgICAgICAvKiBsbyAqLygocHJpbVsxXSB8IHByaW0kMVsxXSkgPj4+IDAp
CisgICAgICAgICAgICAgIF07CisgICAgICB9LAorICAgICAgLyogJWludDY0X3hvciAqL2Z1bmN0
aW9uIChwcmltLCBwcmltJDEpIHsKKyAgICAgICAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAg
ICAgICAgICAgIC8qIGhpICovcHJpbVswXSBeIHByaW0kMVswXSwKKyAgICAgICAgICAgICAgICAv
KiBsbyAqLygocHJpbVsxXSBeIHByaW0kMVsxXSkgPj4+IDApCisgICAgICAgICAgICAgIF07Cisg
ICAgICB9LAorICAgICAgLyogJWludDY0X2xzbCAqL0NhbWxfaW50NjQubHNsXywKKyAgICAgIC8q
ICVpbnQ2NF9hc3IgKi9DYW1sX2ludDY0LmFzcl8sCisgICAgICAvKiAlaW50NjRfbHNyICovQ2Ft
bF9pbnQ2NC5sc3JfLAorICAgICAgLyogJWludDY0X29mX2ludCAqL0NhbWxfaW50NjQub2ZfaW50
MzIsCisgICAgICAvKiAlaW50NjRfdG9faW50ICovZnVuY3Rpb24gKHByaW0pIHsKKyAgICAgICAg
cmV0dXJuIHByaW1bMV0gfCAwOworICAgICAgfSwKKyAgICAgIC8qIHRvX3N0cmluZyAqL0ludDY0
LnRvX3N0cmluZywKKyAgICAgIC8qIGJpdHdpZHRoICovNjQKKyAgICBdKTsKKwordmFyIG9mX2Jp
dHMgPSBpbmNsdWRlWzBdOworCit2YXIgdG9fYml0cyA9IGluY2x1ZGVbMV07CisKK3ZhciB6ZXJv
ID0gaW5jbHVkZVsyXTsKKwordmFyIGFkZCA9IGluY2x1ZGVbM107CisKK3ZhciBzdWIgPSBpbmNs
dWRlWzRdOworCit2YXIgbXVsID0gaW5jbHVkZVs1XTsKKwordmFyIGRpdl9zID0gaW5jbHVkZVs2
XTsKKwordmFyIGRpdl91ID0gaW5jbHVkZVs3XTsKKwordmFyIHJlbV9zID0gaW5jbHVkZVs4XTsK
KwordmFyIHJlbV91ID0gaW5jbHVkZVs5XTsKKwordmFyIGFuZF8gPSBpbmNsdWRlWzEwXTsKKwor
dmFyIG9yXyA9IGluY2x1ZGVbMTFdOworCit2YXIgeG9yID0gaW5jbHVkZVsxMl07CisKK3ZhciBz
aGwgPSBpbmNsdWRlWzEzXTsKKwordmFyIHNocl9zID0gaW5jbHVkZVsxNF07CisKK3ZhciBzaHJf
dSA9IGluY2x1ZGVbMTVdOworCit2YXIgcm90bCA9IGluY2x1ZGVbMTZdOworCit2YXIgcm90ciA9
IGluY2x1ZGVbMTddOworCit2YXIgY2x6ID0gaW5jbHVkZVsxOF07CisKK3ZhciBjdHogPSBpbmNs
dWRlWzE5XTsKKwordmFyIHBvcGNudCA9IGluY2x1ZGVbMjBdOworCit2YXIgZXF6ID0gaW5jbHVk
ZVsyMV07CisKK3ZhciBlcSA9IGluY2x1ZGVbMjJdOworCit2YXIgbmUgPSBpbmNsdWRlWzIzXTsK
KwordmFyIGx0X3MgPSBpbmNsdWRlWzI0XTsKKwordmFyIGx0X3UgPSBpbmNsdWRlWzI1XTsKKwor
dmFyIGxlX3MgPSBpbmNsdWRlWzI2XTsKKwordmFyIGxlX3UgPSBpbmNsdWRlWzI3XTsKKwordmFy
IGd0X3MgPSBpbmNsdWRlWzI4XTsKKwordmFyIGd0X3UgPSBpbmNsdWRlWzI5XTsKKwordmFyIGdl
X3MgPSBpbmNsdWRlWzMwXTsKKwordmFyIGdlX3UgPSBpbmNsdWRlWzMxXTsKKwordmFyIG9mX2lu
dF9zID0gaW5jbHVkZVszMl07CisKK3ZhciBvZl9pbnRfdSA9IGluY2x1ZGVbMzNdOworCit2YXIg
b2Zfc3RyaW5nX3MgPSBpbmNsdWRlWzM0XTsKKwordmFyIG9mX3N0cmluZ191ID0gaW5jbHVkZVsz
NV07CisKK3ZhciBvZl9zdHJpbmcgPSBpbmNsdWRlWzM2XTsKKwordmFyIHRvX3N0cmluZ19zID0g
aW5jbHVkZVszN107CisKK3ZhciB0b19zdHJpbmdfdSA9IGluY2x1ZGVbMzhdOworCitleHBvcnRz
Lm9mX2JpdHMgICAgID0gb2ZfYml0czsKK2V4cG9ydHMudG9fYml0cyAgICAgPSB0b19iaXRzOwor
ZXhwb3J0cy56ZXJvICAgICAgICA9IHplcm87CitleHBvcnRzLmFkZCAgICAgICAgID0gYWRkOwor
ZXhwb3J0cy5zdWIgICAgICAgICA9IHN1YjsKK2V4cG9ydHMubXVsICAgICAgICAgPSBtdWw7Citl
eHBvcnRzLmRpdl9zICAgICAgID0gZGl2X3M7CitleHBvcnRzLmRpdl91ICAgICAgID0gZGl2X3U7
CitleHBvcnRzLnJlbV9zICAgICAgID0gcmVtX3M7CitleHBvcnRzLnJlbV91ICAgICAgID0gcmVt
X3U7CitleHBvcnRzLmFuZF8gICAgICAgID0gYW5kXzsKK2V4cG9ydHMub3JfICAgICAgICAgPSBv
cl87CitleHBvcnRzLnhvciAgICAgICAgID0geG9yOworZXhwb3J0cy5zaGwgICAgICAgICA9IHNo
bDsKK2V4cG9ydHMuc2hyX3MgICAgICAgPSBzaHJfczsKK2V4cG9ydHMuc2hyX3UgICAgICAgPSBz
aHJfdTsKK2V4cG9ydHMucm90bCAgICAgICAgPSByb3RsOworZXhwb3J0cy5yb3RyICAgICAgICA9
IHJvdHI7CitleHBvcnRzLmNseiAgICAgICAgID0gY2x6OworZXhwb3J0cy5jdHogICAgICAgICA9
IGN0ejsKK2V4cG9ydHMucG9wY250ICAgICAgPSBwb3BjbnQ7CitleHBvcnRzLmVxeiAgICAgICAg
ID0gZXF6OworZXhwb3J0cy5lcSAgICAgICAgICA9IGVxOworZXhwb3J0cy5uZSAgICAgICAgICA9
IG5lOworZXhwb3J0cy5sdF9zICAgICAgICA9IGx0X3M7CitleHBvcnRzLmx0X3UgICAgICAgID0g
bHRfdTsKK2V4cG9ydHMubGVfcyAgICAgICAgPSBsZV9zOworZXhwb3J0cy5sZV91ICAgICAgICA9
IGxlX3U7CitleHBvcnRzLmd0X3MgICAgICAgID0gZ3RfczsKK2V4cG9ydHMuZ3RfdSAgICAgICAg
PSBndF91OworZXhwb3J0cy5nZV9zICAgICAgICA9IGdlX3M7CitleHBvcnRzLmdlX3UgICAgICAg
ID0gZ2VfdTsKK2V4cG9ydHMub2ZfaW50X3MgICAgPSBvZl9pbnRfczsKK2V4cG9ydHMub2ZfaW50
X3UgICAgPSBvZl9pbnRfdTsKK2V4cG9ydHMub2Zfc3RyaW5nX3MgPSBvZl9zdHJpbmdfczsKK2V4
cG9ydHMub2Zfc3RyaW5nX3UgPSBvZl9zdHJpbmdfdTsKK2V4cG9ydHMub2Zfc3RyaW5nICAgPSBv
Zl9zdHJpbmc7CitleHBvcnRzLnRvX3N0cmluZ19zID0gdG9fc3RyaW5nX3M7CitleHBvcnRzLnRv
X3N0cmluZ191ID0gdG9fc3RyaW5nX3U7CisvKiBpbmNsdWRlIE5vdCBhIHB1cmUgbW9kdWxlICov
CisvLy8vLy8vLyBlbmQgb2YgaTY0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsK
K8KgIH07CisKKworICBfcmVnaXN0cnlbJ2ludDMyJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxl
dCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpbnQzMi5qcyAvLy8vLy8vLworJ3Vz
ZSBzdHJpY3QnOworCit2YXIgQ2FtbF9vYmogICAgPSByZXF1aXJlKCIuL2NhbWxfb2JqIik7Cit2
YXIgQ2FtbF9mb3JtYXQgPSByZXF1aXJlKCIuL2NhbWxfZm9ybWF0Iik7CisKK2Z1bmN0aW9uIHN1
Y2MobikgeworICByZXR1cm4gbiArIDEgfCAwOworfQorCitmdW5jdGlvbiBwcmVkKG4pIHsKKyAg
cmV0dXJuIG4gLSAxIHwgMDsKK30KKworZnVuY3Rpb24gYWJzKG4pIHsKKyAgaWYgKG4gPj0gMCkg
eworICAgIHJldHVybiBuOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAtbiB8IDA7CisgIH0K
K30KKworZnVuY3Rpb24gbG9nbm90KG4pIHsKKyAgcmV0dXJuIG4gXiAtMTsKK30KKworZnVuY3Rp
b24gdG9fc3RyaW5nKG4pIHsKKyAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfaW50MzJfZm9ybWF0
KCIlZCIsIG4pOworfQorCit2YXIgY29tcGFyZSA9IENhbWxfb2JqLmNhbWxfaW50MzJfY29tcGFy
ZTsKKwordmFyIHplcm8gPSAwOworCit2YXIgb25lID0gMTsKKwordmFyIG1pbnVzX29uZSA9IC0x
OworCit2YXIgbWF4X2ludCA9IDIxNDc0ODM2NDc7CisKK3ZhciBtaW5faW50ID0gLTIxNDc0ODM2
NDg7CisKK2V4cG9ydHMuemVybyAgICAgID0gemVybzsKK2V4cG9ydHMub25lICAgICAgID0gb25l
OworZXhwb3J0cy5taW51c19vbmUgPSBtaW51c19vbmU7CitleHBvcnRzLnN1Y2MgICAgICA9IHN1
Y2M7CitleHBvcnRzLnByZWQgICAgICA9IHByZWQ7CitleHBvcnRzLmFicyAgICAgICA9IGFiczsK
K2V4cG9ydHMubWF4X2ludCAgID0gbWF4X2ludDsKK2V4cG9ydHMubWluX2ludCAgID0gbWluX2lu
dDsKK2V4cG9ydHMubG9nbm90ICAgID0gbG9nbm90OworZXhwb3J0cy50b19zdHJpbmcgPSB0b19z
dHJpbmc7CitleHBvcnRzLmNvbXBhcmUgICA9IGNvbXBhcmU7CisvKiBObyBzaWRlIGVmZmVjdCAq
LworLy8vLy8vLy8gZW5kIG9mIGludDMyLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0
czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2ludDY0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKg
IGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBpbnQ2NC5qcyAvLy8vLy8vLwor
J3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9pbnQ2NCAgPSByZXF1aXJlKCIuL2NhbWxfaW50NjQi
KTsKK3ZhciBDYW1sX2Zvcm1hdCA9IHJlcXVpcmUoIi4vY2FtbF9mb3JtYXQiKTsKKworZnVuY3Rp
b24gc3VjYyhuKSB7CisgIHJldHVybiBDYW1sX2ludDY0LmFkZChuLCAvKiBpbnQ2NCAqL1sKKyAg
ICAgICAgICAgICAgLyogaGkgKi8wLAorICAgICAgICAgICAgICAvKiBsbyAqLzEKKyAgICAgICAg
ICAgIF0pOworfQorCitmdW5jdGlvbiBwcmVkKG4pIHsKKyAgcmV0dXJuIENhbWxfaW50NjQuc3Vi
KG4sIC8qIGludDY0ICovWworICAgICAgICAgICAgICAvKiBoaSAqLzAsCisgICAgICAgICAgICAg
IC8qIGxvICovMQorICAgICAgICAgICAgXSk7Cit9CisKK2Z1bmN0aW9uIGFicyhuKSB7CisgIGlm
IChDYW1sX2ludDY0LmdlKG4sIC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAg
ICAgICAgICAvKiBsbyAqLzAKKyAgICAgICAgXSkpIHsKKyAgICByZXR1cm4gbjsKKyAgfQorICBl
bHNlIHsKKyAgICByZXR1cm4gQ2FtbF9pbnQ2NC5uZWcobik7CisgIH0KK30KKworZnVuY3Rpb24g
bG9nbm90KG4pIHsKKyAgcmV0dXJuIC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovblsw
XSBeIC8qIGhpICovLTEsCisgICAgICAgICAgLyogbG8gKi8oKG5bMV0gXiAvKiBsbyAqLzQyOTQ5
NjcyOTUpID4+PiAwKQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0b19zdHJpbmcobikgewor
ICByZXR1cm4gQ2FtbF9mb3JtYXQuY2FtbF9pbnQ2NF9mb3JtYXQoIiVkIiwgbik7Cit9CisKK3Zh
ciBjb21wYXJlID0gQ2FtbF9pbnQ2NC5jb21wYXJlOworCit2YXIgemVybyA9IC8qIGludDY0ICov
WworICAvKiBoaSAqLzAsCisgIC8qIGxvICovMAorXTsKKwordmFyIG9uZSA9IC8qIGludDY0ICov
WworICAvKiBoaSAqLzAsCisgIC8qIGxvICovMQorXTsKKwordmFyIG1pbnVzX29uZSA9IC8qIGlu
dDY0ICovWworICAvKiBoaSAqLy0xLAorICAvKiBsbyAqLzQyOTQ5NjcyOTUKK107CisKK3ZhciBt
YXhfaW50ID0gLyogaW50NjQgKi9bCisgIC8qIGhpICovMjE0NzQ4MzY0NywKKyAgLyogbG8gKi80
Mjk0OTY3Mjk1CitdOworCit2YXIgbWluX2ludCA9IC8qIGludDY0ICovWworICAvKiBoaSAqLy0y
MTQ3NDgzNjQ4LAorICAvKiBsbyAqLzAKK107CisKK2V4cG9ydHMuemVybyAgICAgID0gemVybzsK
K2V4cG9ydHMub25lICAgICAgID0gb25lOworZXhwb3J0cy5taW51c19vbmUgPSBtaW51c19vbmU7
CitleHBvcnRzLnN1Y2MgICAgICA9IHN1Y2M7CitleHBvcnRzLnByZWQgICAgICA9IHByZWQ7Citl
eHBvcnRzLmFicyAgICAgICA9IGFiczsKK2V4cG9ydHMubWF4X2ludCAgID0gbWF4X2ludDsKK2V4
cG9ydHMubWluX2ludCAgID0gbWluX2ludDsKK2V4cG9ydHMubG9nbm90ICAgID0gbG9nbm90Owor
ZXhwb3J0cy50b19zdHJpbmcgPSB0b19zdHJpbmc7CitleHBvcnRzLmNvbXBhcmUgICA9IGNvbXBh
cmU7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIGludDY0LmpzIC8vLy8v
Ly8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ2ludCdd
ID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQg
b2YgaW50LmpzIC8vLy8vLy8vCisvLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04g
MS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEN1cnJ5
ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKK3ZhciBDYW1s
X29iaiAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIg
UGVydmFzaXZlcyAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7
Cit2YXIgQ2FtbF9zdHJpbmcgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX3N0
cmluZyIpOwordmFyIE51bWVyaWNfZXJyb3IgPSByZXF1aXJlKCIuL251bWVyaWNfZXJyb3IiKTsK
KworZnVuY3Rpb24gTWFrZShSZXApIHsKKyAgdmFyIGNtcF91ID0gZnVuY3Rpb24gKHgsIG9wLCB5
KSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8yKG9wLCBDdXJyeS5fMihSZXBbLyogYWRkICovNl0sIHgs
IFJlcFsvKiBtaW5faW50ICovNF0pLCBDdXJyeS5fMihSZXBbLyogYWRkICovNl0sIHksIFJlcFsv
KiBtaW5faW50ICovNF0pKTsKKyAgfTsKKyAgdmFyIGRpdnJlbV91ID0gZnVuY3Rpb24gKG4sIGQp
IHsKKyAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChkLCBSZXBbLyogemVybyAqLzBdKSkgewor
ICAgICAgdGhyb3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvOworICAgIH0KKyAg
ICBlbHNlIHsKKyAgICAgIHZhciB0ID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X3JpZ2h0ICovMTZd
LCBkLCBSZXBbLyogYml0d2lkdGggKi8yMV0gLSAxIHwgMCk7CisgICAgICB2YXIgbiRwcmltZSA9
IEN1cnJ5Ll8yKFJlcFsvKiBsb2dhbmQgKi8xMV0sIG4sIEN1cnJ5Ll8xKFJlcFsvKiBsb2dub3Qg
Ki8xMl0sIHQpKTsKKyAgICAgIHZhciBxID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X2xlZnQgKi8x
NV0sIEN1cnJ5Ll8yKFJlcFsvKiBkaXYgKi85XSwgQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X3JpZ2h0
X2xvZ2ljYWwgKi8xN10sIG4kcHJpbWUsIDEpLCBkKSwgMSk7CisgICAgICB2YXIgciA9IEN1cnJ5
Ll8yKFJlcFsvKiBzdWIgKi83XSwgbiwgQ3VycnkuXzIoUmVwWy8qIG11bCAqLzhdLCBxLCBkKSk7
CisgICAgICBpZiAoY21wX3UociwgQ2FtbF9vYmouY2FtbF9sZXNzdGhhbiwgZCkpIHsKKyAgICAg
ICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIHEsCisgICAgICAgICAgICAg
ICAgcgorICAgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJl
dHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICBDdXJyeS5fMihSZXBbLyogYWRkICov
Nl0sIHEsIFJlcFsvKiBvbmUgKi8xXSksCisgICAgICAgICAgICAgICAgQ3VycnkuXzIoUmVwWy8q
IHN1YiAqLzddLCByLCBkKQorICAgICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgfTsK
KyAgdmFyIG9mX2JpdHMgPSBmdW5jdGlvbiAoeCkgeworICAgIHJldHVybiB4OworICB9OworICB2
YXIgdG9fYml0cyA9IGZ1bmN0aW9uICh4KSB7CisgICAgcmV0dXJuIHg7CisgIH07CisgIHZhciB6
ZXJvID0gUmVwWy8qIHplcm8gKi8wXTsKKyAgdmFyIG9uZSA9IFJlcFsvKiBvbmUgKi8xXTsKKyAg
dmFyIHRlbiA9IEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0sIDEwKTsKKyAgdmFyIGFkZCA9
IFJlcFsvKiBhZGQgKi82XTsKKyAgdmFyIHN1YiA9IFJlcFsvKiBzdWIgKi83XTsKKyAgdmFyIG11
bCA9IFJlcFsvKiBtdWwgKi84XTsKKyAgdmFyIGRpdl9zID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAg
ICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbCh5LCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAg
dGhyb3cgTnVtZXJpY19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvOworICAgIH0KKyAgICBlbHNl
IGlmIChDYW1sX29iai5jYW1sX2VxdWFsKHgsIFJlcFsvKiBtaW5faW50ICovNF0pICYmIENhbWxf
b2JqLmNhbWxfZXF1YWwoeSwgUmVwWy8qIG1pbnVzX29uZSAqLzJdKSkgeworICAgICAgdGhyb3cg
TnVtZXJpY19lcnJvci5JbnRlZ2VyT3ZlcmZsb3c7CisgICAgfQorICAgIGVsc2UgeworICAgICAg
cmV0dXJuIEN1cnJ5Ll8yKFJlcFsvKiBkaXYgKi85XSwgeCwgeSk7CisgICAgfQorICB9OworICB2
YXIgZGl2X3UgPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiBkaXZyZW1fdSh4LCB5KVsw
XTsKKyAgfTsKKyAgdmFyIHJlbV9zID0gZnVuY3Rpb24gKHgsIHkpIHsKKyAgICBpZiAoQ2FtbF9v
YmouY2FtbF9lcXVhbCh5LCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgdGhyb3cgTnVtZXJp
Y19lcnJvci5JbnRlZ2VyRGl2aWRlQnlaZXJvOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJl
dHVybiBDdXJyeS5fMihSZXBbLyogcmVtICovMTBdLCB4LCB5KTsKKyAgICB9CisgIH07CisgIHZh
ciByZW1fdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGRpdnJlbV91KHgsIHkpWzFd
OworICB9OworICB2YXIgYW5kXyA9IFJlcFsvKiBsb2dhbmQgKi8xMV07CisgIHZhciBvcl8gPSBS
ZXBbLyogbG9nb3IgKi8xM107CisgIHZhciB4b3IgPSBSZXBbLyogbG9neG9yICovMTRdOworICB2
YXIgc2hpZnQgPSBmdW5jdGlvbiAoZiwgeCwgeSkgeworICAgIHJldHVybiBDdXJyeS5fMihmLCB4
LCBDdXJyeS5fMShSZXBbLyogdG9faW50ICovMTldLCBDdXJyeS5fMihSZXBbLyogbG9nYW5kICov
MTFdLCB5LCBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCBSZXBbLyogYml0d2lkdGggKi8y
MV0gLSAxIHwgMCkpKSk7CisgIH07CisgIHZhciBzaGwgPSBmdW5jdGlvbiAoeCwgeSkgeworICAg
IHJldHVybiBzaGlmdChSZXBbLyogc2hpZnRfbGVmdCAqLzE1XSwgeCwgeSk7CisgIH07CisgIHZh
ciBzaHJfcyA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIHNoaWZ0KFJlcFsvKiBzaGlm
dF9yaWdodCAqLzE2XSwgeCwgeSk7CisgIH07CisgIHZhciBzaHJfdSA9IGZ1bmN0aW9uICh4LCB5
KSB7CisgICAgcmV0dXJuIHNoaWZ0KFJlcFsvKiBzaGlmdF9yaWdodF9sb2dpY2FsICovMTddLCB4
LCB5KTsKKyAgfTsKKyAgdmFyIGNsYW1wX3JvdGF0ZV9jb3VudCA9IGZ1bmN0aW9uIChuKSB7Cisg
ICAgcmV0dXJuIEN1cnJ5Ll8xKFJlcFsvKiB0b19pbnQgKi8xOV0sIEN1cnJ5Ll8yKFJlcFsvKiBs
b2dhbmQgKi8xMV0sIG4sIEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0sIFJlcFsvKiBiaXR3
aWR0aCAqLzIxXSAtIDEgfCAwKSkpOworICB9OworICB2YXIgcm90bCA9IGZ1bmN0aW9uICh4LCB5
KSB7CisgICAgdmFyIG4gPSBjbGFtcF9yb3RhdGVfY291bnQoeSk7CisgICAgcmV0dXJuIEN1cnJ5
Ll8yKG9yXywgQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X2xlZnQgKi8xNV0sIHgsIG4pLCBDdXJyeS5f
MihSZXBbLyogc2hpZnRfcmlnaHRfbG9naWNhbCAqLzE3XSwgeCwgUmVwWy8qIGJpdHdpZHRoICov
MjFdIC0gbiB8IDApKTsKKyAgfTsKKyAgdmFyIHJvdHIgPSBmdW5jdGlvbiAoeCwgeSkgeworICAg
IHZhciBuID0gY2xhbXBfcm90YXRlX2NvdW50KHkpOworICAgIHJldHVybiBDdXJyeS5fMihvcl8s
IEN1cnJ5Ll8yKFJlcFsvKiBzaGlmdF9yaWdodF9sb2dpY2FsICovMTddLCB4LCBuKSwgQ3Vycnku
XzIoUmVwWy8qIHNoaWZ0X2xlZnQgKi8xNV0sIHgsIFJlcFsvKiBiaXR3aWR0aCAqLzIxXSAtIG4g
fCAwKSk7CisgIH07CisgIHZhciBjbHogPSBmdW5jdGlvbiAoeCkgeworICAgIHZhciBsb29wID0g
ZnVuY3Rpb24gKF9hY2MsIF9uKSB7CisgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHZhciBu
ID0gX247CisgICAgICAgIHZhciBhY2MgPSBfYWNjOworICAgICAgICBpZiAoQ2FtbF9vYmouY2Ft
bF9lcXVhbChuLCBSZXBbLyogemVybyAqLzBdKSkgeworICAgICAgICAgIHJldHVybiBSZXBbLyog
Yml0d2lkdGggKi8yMV07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoQ2FtbF9vYmouY2Ft
bF9lcXVhbChDdXJyeS5fMihhbmRfLCBuLCBDdXJyeS5fMihSZXBbLyogc2hpZnRfbGVmdCAqLzE1
XSwgUmVwWy8qIG9uZSAqLzFdLCBSZXBbLyogYml0d2lkdGggKi8yMV0gLSAxIHwgMCkpLCBSZXBb
LyogemVybyAqLzBdKSkgeworICAgICAgICAgIF9uID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X2xl
ZnQgKi8xNV0sIG4sIDEpOworICAgICAgICAgIF9hY2MgPSAxICsgYWNjIHwgMDsKKyAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgcmV0dXJuIGFjYzsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHJldHVy
biBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThdLCBsb29wKDAsIHgpKTsKKyAgfTsKKyAgdmFy
IGN0eiA9IGZ1bmN0aW9uICh4KSB7CisgICAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoX2FjYywgX24p
IHsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFyIG4gPSBfbjsKKyAgICAgICAgdmFy
IGFjYyA9IF9hY2M7CisgICAgICAgIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKG4sIFJlcFsvKiB6
ZXJvICovMF0pKSB7CisgICAgICAgICAgcmV0dXJuIFJlcFsvKiBiaXR3aWR0aCAqLzIxXTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKEN1cnJ5Ll8yKGFu
ZF8sIG4sIFJlcFsvKiBvbmUgKi8xXSksIFJlcFsvKiBvbmUgKi8xXSkpIHsKKyAgICAgICAgICBy
ZXR1cm4gYWNjOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIF9uID0gQ3Vy
cnkuXzIoUmVwWy8qIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKi8xN10sIG4sIDEpOworICAgICAgICAg
IF9hY2MgPSAxICsgYWNjIHwgMDsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisg
ICAgICAgIH0KKyAgICAgIH07CisgICAgfTsKKyAgICByZXR1cm4gQ3VycnkuXzEoUmVwWy8qIG9m
X2ludCAqLzE4XSwgbG9vcCgwLCB4KSk7CisgIH07CisgIHZhciBwb3BjbnQgPSBmdW5jdGlvbiAo
eCkgeworICAgIHZhciBsb29wID0gZnVuY3Rpb24gKF9hY2MsIF9pLCBfbikgeworICAgICAgd2hp
bGUodHJ1ZSkgeworICAgICAgICB2YXIgbiA9IF9uOworICAgICAgICB2YXIgaSA9IF9pOworICAg
ICAgICB2YXIgYWNjID0gX2FjYzsKKyAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwobiwg
UmVwWy8qIHplcm8gKi8wXSkpIHsKKyAgICAgICAgICByZXR1cm4gYWNjOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBhY2MkcHJpbWUgPSBDYW1sX29iai5jYW1sX2Vx
dWFsKEN1cnJ5Ll8yKGFuZF8sIG4sIFJlcFsvKiBvbmUgKi8xXSksIFJlcFsvKiBvbmUgKi8xXSkg
PyBhY2MgKyAxIHwgMCA6IGFjYzsKKyAgICAgICAgICBfbiA9IEN1cnJ5Ll8yKFJlcFsvKiBzaGlm
dF9yaWdodF9sb2dpY2FsICovMTddLCBuLCAxKTsKKyAgICAgICAgICBfaSA9IGkgLSAxIHwgMDsK
KyAgICAgICAgICBfYWNjID0gYWNjJHByaW1lOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAg
ICAgICAKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9OworICAgIHJldHVybiBDdXJyeS5fMShS
ZXBbLyogb2ZfaW50ICovMThdLCBsb29wKDAsIFJlcFsvKiBiaXR3aWR0aCAqLzIxXSwgeCkpOwor
ICB9OworICB2YXIgZXF6ID0gZnVuY3Rpb24gKHgpIHsKKyAgICByZXR1cm4gQ2FtbF9vYmouY2Ft
bF9lcXVhbCh4LCBSZXBbLyogemVybyAqLzBdKTsKKyAgfTsKKyAgdmFyIGVxID0gQ2FtbF9vYmou
Y2FtbF9lcXVhbDsKKyAgdmFyIG5lID0gQ2FtbF9vYmouY2FtbF9ub3RlcXVhbDsKKyAgdmFyIGx0
X3MgPSBDYW1sX29iai5jYW1sX2xlc3N0aGFuOworICB2YXIgbHRfdSA9IGZ1bmN0aW9uICh4LCB5
KSB7CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxfb2JqLmNhbWxfbGVzc3RoYW4sIHkpOworICB9
OworICB2YXIgbGVfcyA9IENhbWxfb2JqLmNhbWxfbGVzc2VxdWFsOworICB2YXIgbGVfdSA9IGZ1
bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxfb2JqLmNhbWxfbGVzc2Vx
dWFsLCB5KTsKKyAgfTsKKyAgdmFyIGd0X3MgPSBDYW1sX29iai5jYW1sX2dyZWF0ZXJ0aGFuOwor
ICB2YXIgZ3RfdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0dXJuIGNtcF91KHgsIENhbWxf
b2JqLmNhbWxfZ3JlYXRlcnRoYW4sIHkpOworICB9OworICB2YXIgZ2VfcyA9IENhbWxfb2JqLmNh
bWxfZ3JlYXRlcmVxdWFsOworICB2YXIgZ2VfdSA9IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgcmV0
dXJuIGNtcF91KHgsIENhbWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsLCB5KTsKKyAgfTsKKyAgdmFy
IG9mX2ludF9zID0gUmVwWy8qIG9mX2ludCAqLzE4XTsKKyAgdmFyIG9mX2ludF91ID0gZnVuY3Rp
b24gKGkpIHsKKyAgICByZXR1cm4gQ3VycnkuXzIoYW5kXywgQ3VycnkuXzEoUmVwWy8qIG9mX2lu
dCAqLzE4XSwgaSksIEN1cnJ5Ll8yKG9yXywgc2hsKEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8x
OF0sIFBlcnZhc2l2ZXMubWF4X2ludCksIG9uZSksIG9uZSkpOworICB9OworICB2YXIgdG9fc3Ry
aW5nX3MgPSBSZXBbLyogdG9fc3RyaW5nICovMjBdOworICB2YXIgdG9fc3RyaW5nX3UgPSBmdW5j
dGlvbiAoaSkgeworICAgIGlmIChDYW1sX29iai5jYW1sX2dyZWF0ZXJlcXVhbChpLCBSZXBbLyog
emVybyAqLzBdKSkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8xKHRvX3N0cmluZ19zLCBpKTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gQ3VycnkuXzEodG9fc3RyaW5nX3MsIGRpdl91
KGksIHRlbikpICsgQ3VycnkuXzEodG9fc3RyaW5nX3MsIHJlbV91KGksIHRlbikpOworICAgIH0K
KyAgfTsKKyAgdmFyICQkcmVxdWlyZSA9IGZ1bmN0aW9uIChiKSB7CisgICAgaWYgKGIpIHsKKyAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBQZXJ2YXNpdmVz
LmZhaWx3aXRoKCJvZl9zdHJpbmciKTsKKyAgICB9CisgIH07CisgIHZhciBkZWNfZGlnaXQgPSBm
dW5jdGlvbiAoYykgeworICAgIGlmIChjID4gNTcgfHwgYyA8IDQ4KSB7CisgICAgICByZXR1cm4g
UGVydmFzaXZlcy5mYWlsd2l0aCgib2Zfc3RyaW5nIik7CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgcmV0dXJuIGMgLSAvKiAiMCIgKi80OCB8IDA7CisgICAgfQorICB9OworICB2YXIgaGV4X2Rp
Z2l0ID0gZnVuY3Rpb24gKGMpIHsKKyAgICBpZiAoYyA+PSA2NSkgeworICAgICAgaWYgKGMgPj0g
OTcpIHsKKyAgICAgICAgaWYgKGMgPj0gMTAzKSB7CisgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2
ZXMuZmFpbHdpdGgoIm9mX3N0cmluZyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIHJldHVybiAoMTAgKyBjIHwgMCkgLSAvKiAiYSIgKi85NyB8IDA7CisgICAgICAgIH0K
KyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGMgPj0gNzEpIHsKKyAgICAgICAgcmV0dXJuIFBlcnZh
c2l2ZXMuZmFpbHdpdGgoIm9mX3N0cmluZyIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHJldHVybiAoMTAgKyBjIHwgMCkgLSAvKiAiQSIgKi82NSB8IDA7CisgICAgICB9CisgICAg
fQorICAgIGVsc2UgaWYgKGMgPiA1NyB8fCBjIDwgNDgpIHsKKyAgICAgIHJldHVybiBQZXJ2YXNp
dmVzLmZhaWx3aXRoKCJvZl9zdHJpbmciKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gYyAtIC8qICIwIiAqLzQ4IHwgMDsKKyAgICB9CisgIH07CisgIHZhciBtYXRjaCA9IGRpdnJl
bV91KFJlcFsvKiBtaW51c19vbmUgKi8yXSwgdGVuKTsKKyAgdmFyIG1heF9sb3dlciA9IG1hdGNo
WzFdOworICB2YXIgbWF4X3VwcGVyID0gbWF0Y2hbMF07CisgIHZhciBvZl9zdHJpbmcgPSBmdW5j
dGlvbiAocykgeworICAgIHZhciBsZW4gPSBzLmxlbmd0aDsKKyAgICB2YXIgcGFyc2VfaW50ID0g
ZnVuY3Rpb24gKGkpIHsKKyAgICAgICQkcmVxdWlyZSgrKChsZW4gLSBpIHwgMCkgPiAwKSk7Cisg
ICAgICBpZiAoKGkgKyAyIHwgMCkgPD0gbGVuICYmIENhbWxfc3RyaW5nLmdldChzLCBpKSA9PT0g
LyogIjAiICovNDggJiYgQ2FtbF9zdHJpbmcuZ2V0KHMsIGkgKyAxIHwgMCkgPT09IC8qICJ4IiAq
LzEyMCkgeworICAgICAgICB2YXIgX2kgPSBpICsgMiB8IDA7CisgICAgICAgIHZhciBfbnVtID0g
UmVwWy8qIHplcm8gKi8wXTsKKyAgICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICAgIHZhciBu
dW0gPSBfbnVtOworICAgICAgICAgIHZhciBpJDEgPSBfaTsKKyAgICAgICAgICBpZiAoaSQxID09
PSBsZW4pIHsKKyAgICAgICAgICAgIHJldHVybiBudW07CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgdmFyIGRpZ2l0ID0gQ3VycnkuXzEoUmVwWy8qIG9mX2ludCAq
LzE4XSwgaGV4X2RpZ2l0KENhbWxfc3RyaW5nLmdldChzLCBpJDEpKSk7CisgICAgICAgICAgICAk
JHJlcXVpcmUobGVfdShudW0sIHNocl91KFJlcFsvKiBtaW51c19vbmUgKi8yXSwgQ3VycnkuXzEo
UmVwWy8qIG9mX2ludCAqLzE4XSwgNCkpKSk7CisgICAgICAgICAgICBfbnVtID0gQ3VycnkuXzIo
UmVwWy8qIGxvZ29yICovMTNdLCBDdXJyeS5fMihSZXBbLyogc2hpZnRfbGVmdCAqLzE1XSwgbnVt
LCA0KSwgZGlnaXQpOworICAgICAgICAgICAgX2kgPSBpJDEgKyAxIHwgMDsKKyAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgIAorICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICB2YXIgX2kkMSA9IGk7CisgICAgICAgIHZhciBfbnVt
JDEgPSBSZXBbLyogemVybyAqLzBdOworICAgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgICAg
dmFyIG51bSQxID0gX251bSQxOworICAgICAgICAgIHZhciBpJDIgPSBfaSQxOworICAgICAgICAg
IGlmIChpJDIgPT09IGxlbikgeworICAgICAgICAgICAgcmV0dXJuIG51bSQxOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBkaWdpdCQxID0gQ3VycnkuXzEo
UmVwWy8qIG9mX2ludCAqLzE4XSwgZGVjX2RpZ2l0KENhbWxfc3RyaW5nLmdldChzLCBpJDIpKSk7
CisgICAgICAgICAgICAkJHJlcXVpcmUobHRfdShudW0kMSwgbWF4X3VwcGVyKSB8fCBDYW1sX29i
ai5jYW1sX2VxdWFsKG51bSQxLCBtYXhfdXBwZXIpICYmIGxlX3UoZGlnaXQkMSwgbWF4X2xvd2Vy
KSk7CisgICAgICAgICAgICBfbnVtJDEgPSBDdXJyeS5fMihSZXBbLyogYWRkICovNl0sIEN1cnJ5
Ll8yKFJlcFsvKiBtdWwgKi84XSwgbnVtJDEsIHRlbiksIGRpZ2l0JDEpOworICAgICAgICAgICAg
X2kkMSA9IGkkMiArIDEgfCAwOworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAg
CisgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgfQorICAgIH07CisgICAgJCRyZXF1aXJl
KCsobGVuID4gMCkpOworICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChzLCAwKTsKKyAg
ICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDQzIHwgMDsKKyAgICBpZiAoc3dpdGNoZXIgPiAyIHx8
IHN3aXRjaGVyIDwgMCkgeworICAgICAgcmV0dXJuIHBhcnNlX2ludCgwKTsKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICBzd2l0Y2ggKHN3aXRjaGVyKSB7CisgICAgICAgIGNhc2UgMCA6IAorICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlX2ludCgxKTsKKyAgICAgICAgY2FzZSAxIDogCisgICAgICAg
ICAgICByZXR1cm4gcGFyc2VfaW50KDApOworICAgICAgICBjYXNlIDIgOiAKKyAgICAgICAgICAg
IHZhciBuID0gcGFyc2VfaW50KDEpOworICAgICAgICAgICAgJCRyZXF1aXJlKENhbWxfb2JqLmNh
bWxfZ3JlYXRlcmVxdWFsKEN1cnJ5Ll8yKFJlcFsvKiBzdWIgKi83XSwgbiwgUmVwWy8qIG9uZSAq
LzFdKSwgUmVwWy8qIG1pbnVzX29uZSAqLzJdKSk7CisgICAgICAgICAgICByZXR1cm4gQ3Vycnku
XzEoUmVwWy8qIG5lZyAqLzVdLCBuKTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9Owor
ICB2YXIgb2Zfc3RyaW5nX3MgPSBmdW5jdGlvbiAocykgeworICAgIHZhciBuID0gb2Zfc3RyaW5n
KHMpOworICAgICQkcmVxdWlyZSgrKENhbWxfc3RyaW5nLmdldChzLCAwKSA9PT0gLyogIi0iICov
NDUpIHx8IENhbWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsKG4sIFJlcFsvKiB6ZXJvICovMF0pKTsK
KyAgICByZXR1cm4gbjsKKyAgfTsKKyAgdmFyIG9mX3N0cmluZ191ID0gZnVuY3Rpb24gKHMpIHsK
KyAgICB2YXIgbiA9IG9mX3N0cmluZyhzKTsKKyAgICAkJHJlcXVpcmUoKyhDYW1sX3N0cmluZy5n
ZXQocywgMCkgIT09IC8qICIrIiAqLzQzICYmIENhbWxfc3RyaW5nLmdldChzLCAwKSAhPT0gLyog
Ii0iICovNDUpKTsKKyAgICByZXR1cm4gbjsKKyAgfTsKKyAgcmV0dXJuIC8qIG1vZHVsZSAqL1sK
KyAgICAgICAgICAvKiBvZl9iaXRzICovb2ZfYml0cywKKyAgICAgICAgICAvKiB0b19iaXRzICov
dG9fYml0cywKKyAgICAgICAgICAvKiB6ZXJvICovemVybywKKyAgICAgICAgICAvKiBhZGQgKi9h
ZGQsCisgICAgICAgICAgLyogc3ViICovc3ViLAorICAgICAgICAgIC8qIG11bCAqL211bCwKKyAg
ICAgICAgICAvKiBkaXZfcyAqL2Rpdl9zLAorICAgICAgICAgIC8qIGRpdl91ICovZGl2X3UsCisg
ICAgICAgICAgLyogcmVtX3MgKi9yZW1fcywKKyAgICAgICAgICAvKiByZW1fdSAqL3JlbV91LAor
ICAgICAgICAgIC8qIGFuZF8gKi9hbmRfLAorICAgICAgICAgIC8qIG9yXyAqL29yXywKKyAgICAg
ICAgICAvKiB4b3IgKi94b3IsCisgICAgICAgICAgLyogc2hsICovc2hsLAorICAgICAgICAgIC8q
IHNocl9zICovc2hyX3MsCisgICAgICAgICAgLyogc2hyX3UgKi9zaHJfdSwKKyAgICAgICAgICAv
KiByb3RsICovcm90bCwKKyAgICAgICAgICAvKiByb3RyICovcm90ciwKKyAgICAgICAgICAvKiBj
bHogKi9jbHosCisgICAgICAgICAgLyogY3R6ICovY3R6LAorICAgICAgICAgIC8qIHBvcGNudCAq
L3BvcGNudCwKKyAgICAgICAgICAvKiBlcXogKi9lcXosCisgICAgICAgICAgLyogZXEgKi9lcSwK
KyAgICAgICAgICAvKiBuZSAqL25lLAorICAgICAgICAgIC8qIGx0X3MgKi9sdF9zLAorICAgICAg
ICAgIC8qIGx0X3UgKi9sdF91LAorICAgICAgICAgIC8qIGxlX3MgKi9sZV9zLAorICAgICAgICAg
IC8qIGxlX3UgKi9sZV91LAorICAgICAgICAgIC8qIGd0X3MgKi9ndF9zLAorICAgICAgICAgIC8q
IGd0X3UgKi9ndF91LAorICAgICAgICAgIC8qIGdlX3MgKi9nZV9zLAorICAgICAgICAgIC8qIGdl
X3UgKi9nZV91LAorICAgICAgICAgIC8qIG9mX2ludF9zICovb2ZfaW50X3MsCisgICAgICAgICAg
Lyogb2ZfaW50X3UgKi9vZl9pbnRfdSwKKyAgICAgICAgICAvKiBvZl9zdHJpbmdfcyAqL29mX3N0
cmluZ19zLAorICAgICAgICAgIC8qIG9mX3N0cmluZ191ICovb2Zfc3RyaW5nX3UsCisgICAgICAg
ICAgLyogb2Zfc3RyaW5nICovb2Zfc3RyaW5nLAorICAgICAgICAgIC8qIHRvX3N0cmluZ19zICov
dG9fc3RyaW5nX3MsCisgICAgICAgICAgLyogdG9fc3RyaW5nX3UgKi90b19zdHJpbmdfdQorICAg
ICAgICBdOworfQorCitleHBvcnRzLk1ha2UgPSBNYWtlOworLyogTm8gc2lkZSBlZmZlY3QgKi8K
Ky8vLy8vLy8vIGVuZCBvZiBpbnQuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOwor
wqAgfTsKKworCisgIF9yZWdpc3RyeVsnbGV4ZXInXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0
IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIGxleGVyLmpzIC8vLy8vLy8vCisvLyBH
ZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRI
IENBUkUKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEYzMiAgICAgICAgICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9mMzIiKTsKK3ZhciBGNjQgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4v
ZjY0Iik7Cit2YXIgSTMyICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2kzMiIpOwor
dmFyIEk2NCAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9pNjQiKTsKK3ZhciBMaWIg
ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGliIik7Cit2YXIgQ2hhciAgICAgICAg
ICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2hhciIpOwordmFyIEJs
b2NrICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2Nr
Iik7Cit2YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvY3VycnkiKTsKK3ZhciBCdWZmZXIgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9idWZmZXIiKTsKK3ZhciBMZXhpbmcgICAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9sZXhpbmciKTsKK3ZhciBTY3JpcHQgICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vc2NyaXB0Iik7Cit2YXIgU291cmNlICAgICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL3NvdXJjZSIpOwordmFyICQkU3RyaW5nICAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwordmFyIE9wZXJhdG9ycyAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9vcGVyYXRvcnMiKTsKK3ZhciBDYW1sX2Zvcm1hdCAg
ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zvcm1hdCIpOwor
dmFyIENhbWxfc3RyaW5nICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2NhbWxfc3RyaW5nIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCJi
cy1wbGF0Zm9ybS9saWIvanMvY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24g
Y29udmVydF9wb3MocG9zKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyog
ZmlsZSAqL3Bvc1svKiBwb3NfZm5hbWUgKi8wXSwKKyAgICAgICAgICAvKiBsaW5lICovcG9zWy8q
IHBvc19sbnVtICovMV0sCisgICAgICAgICAgLyogY29sdW1uICovcG9zWy8qIHBvc19jbnVtICov
M10gLSBwb3NbLyogcG9zX2JvbCAqLzJdIHwgMAorICAgICAgICBdOworfQorCitmdW5jdGlvbiBy
ZWdpb24obGV4YnVmKSB7CisgIHZhciBsZWZ0ID0gY29udmVydF9wb3MoTGV4aW5nLmxleGVtZV9z
dGFydF9wKGxleGJ1ZikpOworICB2YXIgcmlnaHQgPSBjb252ZXJ0X3BvcyhMZXhpbmcubGV4ZW1l
X2VuZF9wKGxleGJ1ZikpOworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIGxl
ZnQgKi9sZWZ0LAorICAgICAgICAgIC8qIHJpZ2h0ICovcmlnaHQKKyAgICAgICAgXTsKK30KKwor
ZnVuY3Rpb24gZXJyb3IobGV4YnVmLCBtc2cpIHsKKyAgdGhyb3cgWworICAgICAgICBTY3JpcHQu
U3ludGF4LAorICAgICAgICByZWdpb24obGV4YnVmKSwKKyAgICAgICAgbXNnCisgICAgICBdOwor
fQorCitmdW5jdGlvbiBlcnJvcl9uZXN0KHN0YXJ0LCBsZXhidWYsIG1zZykgeworICBsZXhidWZb
LyogbGV4X3N0YXJ0X3AgKi8xMF0gPSBzdGFydDsKKyAgcmV0dXJuIGVycm9yKGxleGJ1ZiwgbXNn
KTsKK30KKworZnVuY3Rpb24gdGV4dChzKSB7CisgIHZhciBiID0gQnVmZmVyLmNyZWF0ZShzLmxl
bmd0aCk7CisgIHZhciBpID0gMTsKKyAgd2hpbGUoaSA8IChzLmxlbmd0aCAtIDEgfCAwKSkgewor
ICAgIHZhciBjOworICAgIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgIT09IC8qICJcXCIgKi85
MikgeworICAgICAgYyA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICB9CisgICAgZWxzZSB7
CisgICAgICBpID0gaSArIDEgfCAwOworICAgICAgdmFyIGQgPSBDYW1sX3N0cmluZy5nZXQocywg
aSk7CisgICAgICB2YXIgZXhpdCA9IDA7CisgICAgICBpZiAoZCA+PSA5MikgeworICAgICAgICBp
ZiAoZCAhPT0gMTEwKSB7CisgICAgICAgICAgaWYgKGQgIT09IDExNikgeworICAgICAgICAgICAg
aWYgKGQgPj0gOTMpIHsKKyAgICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgYyA9IC8qICJcXCIgKi85MjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjID0g
LyogIlx0IiAqLzk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIGMgPSAvKiAiXG4iICovMTA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKGQgIT09IDM0KSB7CisgICAgICAgIGlmIChkICE9PSAzOSkgeworICAgICAgICAgIGV4aXQg
PSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGMgPSAvKiAiJyIgKi8z
OTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGMgPSAvKiAiXCIi
ICovMzQ7CisgICAgICB9CisgICAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgICBpID0gaSAr
IDEgfCAwOworICAgICAgICBjID0gQ2hhci5jaHIoQ2FtbF9mb3JtYXQuY2FtbF9pbnRfb2Zfc3Ry
aW5nKCIweCIgKyAoJCRTdHJpbmcubWFrZSgxLCBkKSArICQkU3RyaW5nLm1ha2UoMSwgQ2FtbF9z
dHJpbmcuZ2V0KHMsIGkpKSkpKTsKKyAgICAgIH0KKyAgICAgIAorICAgIH0KKyAgICBCdWZmZXIu
YWRkX2NoYXIoYiwgYyk7CisgICAgaSA9IGkgKyAxIHwgMDsKKyAgfTsKKyAgcmV0dXJuIEJ1ZmZl
ci5jb250ZW50cyhiKTsKK30KKworZnVuY3Rpb24gdmFsdWVfdHlwZShwYXJhbSkgeworICBzd2l0
Y2ggKHBhcmFtKSB7CisgICAgY2FzZSAiZjMyIiA6IAorICAgICAgICByZXR1cm4gLyogRjMyVHlw
ZSAqLzI7CisgICAgY2FzZSAiZjY0IiA6IAorICAgICAgICByZXR1cm4gLyogRjY0VHlwZSAqLzM7
CisgICAgY2FzZSAiaTMyIiA6IAorICAgICAgICByZXR1cm4gLyogSTMyVHlwZSAqLzA7CisgICAg
Y2FzZSAiaTY0IiA6IAorICAgICAgICByZXR1cm4gLyogSTY0VHlwZSAqLzE7CisgICAgZGVmYXVs
dDoKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAidGV4dC9sZXhlci5t
bGwiLAorICAgICAgICAgICAgICA0NSwKKyAgICAgICAgICAgICAgOQorICAgICAgICAgICAgXQor
ICAgICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gaW50b3AodCwgaTMyLCBpNjQpIHsKKyAg
c3dpdGNoICh0KSB7CisgICAgY2FzZSAiaTMyIiA6IAorICAgICAgICByZXR1cm4gaTMyOworICAg
IGNhc2UgImk2NCIgOiAKKyAgICAgICAgcmV0dXJuIGk2NDsKKyAgICBkZWZhdWx0OgorICAgICAg
dGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1
cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICJ0ZXh0L2xleGVyLm1sbCIsCisgICAg
ICAgICAgICAgIDUxLAorICAgICAgICAgICAgICA5CisgICAgICAgICAgICBdCisgICAgICAgICAg
XTsKKyAgfQorfQorCitmdW5jdGlvbiBmbG9hdG9wKHQsIGYzMiwgZjY0KSB7CisgIHN3aXRjaCAo
dCkgeworICAgIGNhc2UgImYzMiIgOiAKKyAgICAgICAgcmV0dXJuIGYzMjsKKyAgICBjYXNlICJm
NjQiIDogCisgICAgICAgIHJldHVybiBmNjQ7CisgICAgZGVmYXVsdDoKKyAgICAgIHRocm93IFsK
KyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAorICAgICAgICAgICAg
ICA1NywKKyAgICAgICAgICAgICAgOQorICAgICAgICAgICAgXQorICAgICAgICAgIF07CisgIH0K
K30KKworZnVuY3Rpb24gbnVtb3AodCwgaTMyLCBpNjQsIGYzMiwgZjY0KSB7CisgIHN3aXRjaCAo
dCkgeworICAgIGNhc2UgImYzMiIgOiAKKyAgICAgICAgcmV0dXJuIGYzMjsKKyAgICBjYXNlICJm
NjQiIDogCisgICAgICAgIHJldHVybiBmNjQ7CisgICAgY2FzZSAiaTMyIiA6IAorICAgICAgICBy
ZXR1cm4gaTMyOworICAgIGNhc2UgImk2NCIgOiAKKyAgICAgICAgcmV0dXJuIGk2NDsKKyAgICBk
ZWZhdWx0OgorICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICJ0ZXh0L2xl
eGVyLm1sbCIsCisgICAgICAgICAgICAgIDY1LAorICAgICAgICAgICAgICA5CisgICAgICAgICAg
ICBdCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBtZW1zeihzeiwgbTgsIG0xNiwg
bTMyKSB7CisgIHN3aXRjaCAoc3opIHsKKyAgICBjYXNlICIxNiIgOiAKKyAgICAgICAgcmV0dXJu
IG0xNjsKKyAgICBjYXNlICIzMiIgOiAKKyAgICAgICAgcmV0dXJuIG0zMjsKKyAgICBjYXNlICI4
IiA6IAorICAgICAgICByZXR1cm4gbTg7CisgICAgZGVmYXVsdDoKKyAgICAgIHRocm93IFsKKyAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAorICAgICAgICAgICAgICA3
MiwKKyAgICAgICAgICAgICAgOQorICAgICAgICAgICAgXQorICAgICAgICAgIF07CisgIH0KK30K
KworZnVuY3Rpb24gZXh0KGUsIHMsIHUpIHsKKyAgdmFyIHN3aXRjaGVyID0gZSAtIDExNSB8IDA7
CisgIGlmIChzd2l0Y2hlciA+IDIgfHwgc3dpdGNoZXIgPCAwKSB7CisgICAgdGhyb3cgWworICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAorICAgICAgICAg
IFsKKyAgICAgICAgICAgICJ0ZXh0L2xleGVyLm1sbCIsCisgICAgICAgICAgICA3OCwKKyAgICAg
ICAgICAgIDkKKyAgICAgICAgICBdCisgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgc3dp
dGNoIChzd2l0Y2hlcikgeworICAgICAgY2FzZSAwIDogCisgICAgICAgICAgcmV0dXJuIHM7Cisg
ICAgICBjYXNlIDEgOiAKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgInRleHQvbGV4ZXIubWxsIiwKKyAgICAgICAgICAgICAgICAgIDc4LAor
ICAgICAgICAgICAgICAgICAgOQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgXTsK
KyAgICAgIGNhc2UgMiA6IAorICAgICAgICAgIHJldHVybiB1OworICAgICAgCisgICAgfQorICB9
Cit9CisKK3ZhciBvcHQgPSBMaWIuT3B0aW9uWy8qIGdldCAqLzBdOworCit2YXIgX19vY2FtbF9s
ZXhfdGFibGVzID0gLyogcmVjb3JkICovWworICAvKiBsZXhfYmFzZSAqLyJcMFwwb1x4ZmZwXHhm
ZnFceGZmclx4ZmZceDAxXDBVXDBceDA3XDBceDFiXDBceDA1XDBvXDBvXDB0XDBceDA2XDBqXDBc
eDBlXDBrXDB5XDBceDEwXDB5XDBzXDBceGI0XDBceDAxXHgwMXpcMFx4YmVcMFx4YzVcMFx4MDRc
eDAxXHgxYVx4MDFceGZlXHhmZlx4MDJcMHNceGZmXHgxM1wwPFx4MDFSXHgwMXhceDAxXCJcMFx4
OGZceDAxXHhkNVx4MDFceDBlXHgwMVx4ZWVceDAxL1x4MDI+XHgwMlVceDAyXHg5Nlx4MDJceGEw
XHgwMk9cMERcMFx4YWNceDAyXHhjMlx4MDJceGU3XHgwMlwwXHgwMyZceDAzTFx4MDN6XDB8XDB+
XDBceDg2XDB8XDB5XDBceGZiXHhmZlx4ODVcMFwwXDBceDBmXDBceDg3XDByXHgwM1x4OThceDAz
XHhiMVwwXHhlOFx4ZmZcclwwXHgxMFwwXHhlZVwwXHhhZFwwXHhiNlwwXHhiYlwwXHhjMlwwXHg4
Mlx4ZmZceGI0XDB4XHhmZlwwXDBceDljXHgwMlx4YjhcMFx4YmJcMFx4ZjFcMFx4Y2FcMFx4YmZc
MFx4YzJcMFx4ZTNcMFx4ZjJcMFx4ZWZcMFx4ZTRcMFx4ZjhcMFx4ZWJcMFx4ZjNcMCpceDAxXG5c
eDAxXHhlNlwwXHhlOFwwXHhmNVwwXHhmN1wwXHhmN1wwXHhmNVx4ZmZceGQ3XHhmZlx4ZDZceGZm
XDBcMFx4MDFcMFx4MTZceDAxXHgxNFx4MDFqXHgwMVx4MWNcMFx4MWFcMFx4MWJceDAxXGJceDAx
XHhkYlx4ZmZceDE5XHgwMVx4YjNceGZmXHhiNFx4ZmYnXHgwMVx4YjFceGZmXHhiMlx4ZmYzXHgw
MVx4MWFceDAxXHgxZVx4MDFceDFlXHgwMSxceDAxXHhhZVx4MDFceDFmXDAmXDBceGRhXHhmZlx4
Y2NceGZmQVx4MDFceGMzXHhmZlZceDAxXHhjMVx4ZmZceGMyXHhmZjNceDAxQVx4MDE5XHgwMT5c
eDAxXHhkNVx4ZmZmXHgwMWhceDAxXHhjZFx4ZmZceGM2XHhmZmFceDAxXHhjYlx4ZmZYXHgwMXBc
eDAxY1x4MDFceGM5XHhmZlx4Y2FceGZmY1x4MDF3XHgwMXRceDAxXHg4NFx4MDFyXHgwMVx4Yzdc
eGZmXHhjOFx4ZmZ1XHgwMVx4ODVceDAxeVx4MDF8XHgwMXtceDAxXHg4OVx4MDF7XHgwMVwwXDBc
eDkwXHgwMSpcMCxcMFx4OTdceGZmXHg4Ylx4MDFceGJmXHhmZlx4YzBceGZmXHhjNVx4ZmZceDg2
XHgwMVx4YzRceGZmXHg3Zlx4MDFceGI3XHhmZlx4YjVceGZmXHg5Ylx4MDFceDljXHgwMVx4ODlc
eDAxXHhhZlx4ZmZceGIwXHhmZlx4OWNceDAxXHhhZFx4ZmZceGFlXHhmZlx4YTNceDAxXHhhMFx4
MDFceGUzXHgwMVx4YWFceDAxXHhkZVx4MDFceGUxXHgwMVx4YTZceGZmXHhhOFx4MDFceGJhXHgw
MVx4YzZceDAxXHhjYlx4MDFceGI4XHgwMVx4ZmRceDAxXHhmZlx4MDFceGNmXHgwMVx0XHgwMlx0
XHgwMlxmXHgwMlx4YTFceGZmXHg5Zlx4ZmZceGRhXHgwMVx4MGVceDAyXHgwZVx4MDJceDExXHgw
Mlx4YTBceGZmXHg5ZVx4ZmZceDE4XHgwMn5ceDAzXHhkNlx4MDFceGU2XHgwMVx4ZGZceDAxXHhk
Ylx4MDFceGQ2XHgwMVx4ZThceDAxXHhlNFx4MDFceGU3XHgwMVx4ZTZceDAxXHhmNFx4MDFceGU2
XHgwMSxceDAyXHhmNlx4MDEnXHgwMjZceDAyXHg5Nlx4ZmZceGY4XHgwMVxiXHgwMlxuXHgwMlx4
MTVceDAyXHgxYlx4MDJcYlx4MDJNXHgwMk9ceDAyJlx4MDJdXHgwMl9ceDAyXHhhNVx4ZmYpXHgw
MmBceDAyYlx4MDJceGE0XHhmZiZceDAyKlx4MDIpXHgwMlx4ODZceGZmLlx4MDJceGYyXHhmZlx4
ZjhceGZmXHhmOVx4ZmZceGZhXHhmZlx4ZDFceDAzRlx4MDRceGY3XHhmZjlceDA0XHhhNFx4MDQ3
XHgwMnJceDAydVx4MDJ6XHgwMlx4YjdceDAzRFx4MDJIXHgwMjlceDAyRlx4MDJLXHgwMj5ceDAy
RVx4MDJRXHgwMk1ceDAyTVx4MDJceGJkXHgwM1x4OTdceDAyVFx4MDJ4XHgwMkZceDAydFx4MDJe
XHgwMlJceDAyZ1x4MDJceDhhXHgwMnhceDAyXHhiZFx4MDJceGJmXHgwMlx4ODZceDAyXHhjZlx4
MDJceGNhXHgwMlx4ZDJceDAyXHg5ZFx4ZmZceDliXHhmZlx4YTRceDAyXHhkZlx4MDJceGUyXHgw
Mlx4ZWZceDAyXHg5Y1x4ZmZceDlhXHhmZlx4YWZceDAyXHhiYVx4MDJceGJkXHgwMlx4YjdceDAy
XHhiOFx4ZmZceGJhXHgwMlx4ZDFceGZmXHhhOVx4ZmZceGFhXHhmZlx4Y2VceDAyXHhkN1x4MDJc
eGRkXHhmZlx4ZGFceDAyXHhjYlx4MDJceGNmXHgwMlx4Y2RceDAyXHhkYlx4MDJceGRjXHhmZlx4
ZDNceDAyXHhkMlx4ZmZceGJkXHhmZlx4ZWVceDAyXHhkY1x4MDJceGQ0XHhmZlx4ZWJceDAyXHhk
Zlx4MDJceGVjXHgwMlx4Y2VceGZmXHRceDAzXHhmYlx4MDJceGQzXHhmZlx4YmVceGZmXDBceDAz
XHgwMlx4MDNcMFx4MDNceGQwXHhmZlx4ZmVceDAyXHgwNlx4MDNceDEyXHgwM1x4Y2ZceGZmXHhm
ZVx4MDJcdFx4MDNcZlx4MDNceGJjXHhmZlx4YmFceGZmXHhiOVx4ZmZcZlx4MDNceDA1XHgwM1x4
YmJceGZmXHgxN1x4MDNceDFmXHgwMy9ceDAzZlx4MDMxXHgwM2JceDAzZVx4MDNceGEzXHhmZlx4
YWNceGZmXHhhN1x4ZmZceGE4XHhmZjFceDAzLVx4MDMoXHgwMzhceDAzLFx4MDMvXHgwMy5ceDAz
PFx4MDM4XHgwM1x4OGFceDAzUVx4MDNceDg4XHgwM1x4OGJceDAzXHg5OVx4ZmZceDkwXHgwM1x4
MWZceDA0Wlx4MDNOXHgwM1hceDAzU1x4MDNWXHgwM1VceDAzUVx4MDNhXHgwM1x4OThceDAzbFx4
MDNceGFkXHgwM1x4YjJceDAzXHhhMlx4ZmZ9XHgwM3lceDAzdFx4MDNceDg0XHgwM31ceDAzXHg4
NFx4MDNceDgzXHgwM1x4OTJceDAzXHg4Ylx4MDNceGQxXHgwM1x4YTJceDAzXHhkNlx4MDNceGQ5
XHgwM1x4OThceGZmXHhhYlx4MDNceDkyXHhmZlx4OWNceDAzXHhhN1x4MDNceDk4XHgwM1x4YjNc
eDAzXHhhYVx4MDNceGIyXHgwM1x4YmVceDAzXHhmNFx4ZmZceGJmXHgwM1x4YjlceDAzXHhlYlx4
MDNceDk3XHgwNFx4YTJceDA0XHhhY1x4MDRceGI2XHgwNFx4ZGNceDA0XHhjOVx4MDNceGJkXHgw
M1x4YmNceDAzXHhkOVx4MDNceGMwXHgwNFx4YzFceDAzXHhjOFx4MDNceGQ2XHgwM1x4Y2VceDAz
XHhjZVx4MDNceGQwXHgwM1x4ZGZceDAzXHhkNVx4MDNceGRjXHgwM1x4ZDRceDAzXHhkMlx4MDNc
eGY5XHgwM1x4MDJceDA0XHgwZlx4MDRceDgwXHhmZlx4ZmVceDAzXHgxNFx4MDRcblx4MDRceDBl
XHgwNFx4MTRceDA0XHg3Zlx4ZmZceDEzXHgwNFxyXHgwNChceDA0XHgxZlx4MDRceDFiXHgwNFx4
MTRceDA0LVx4MDQkXHgwNCtceDA0MVx4MDR+XHhmZipceDA0Llx4MDQqXHgwNC5ceDA0P1x4MDQ/
XHgwNDdceDA0X1x4MDR9XHhmZnxceDA0fFx4MDRceDgwXHgwNFx4ODVceDA0XHg5NVx4MDRceDg3
XHgwNFx4OTVceDA0XHg4Zlx4MDR7XHhmZlx4OWRceDA0XHg4Zlx4MDR6XHhmZlx4OTlceDA0XHhh
MVx4MDRceDhlXHgwNFx4OTFceDA0XHg5MVx4MDRceDlkXHgwNFx4OThceDA0XHg5YVx4MDR5XHhm
Zlx4OWNceDA0XHhhNlx4MDRceDk3XHgwNFx4ZjNceGZmXHhhMVx4MDRceGJhXHgwNFx4YzJceDA0
XHg4Y1x4ZmZceGI5XHgwNFx4YjhceDA0XHhiMlx4MDRceDhhXHhmZlx4YmFceDA0XHhjOVx4MDRc
eGNlXHgwNFx4Y2RceDA0XHhjOVx4MDRceGQ1XHgwNFx4ZDVceDA0XHhjY1x4MDRceGQ0XHgwNFx4
ZjFceGZmXHhjNlx4MDRceGNjXHgwNFx4Y2NceDA0XHhmMFx4ZmZceGUyXHgwNFx4ODhceGZmXHhl
NVx4MDRceGQ2XHgwNFx4ZTRceDA0XHhkZFx4MDRceGVmXHhmZlx4ZTBceDA0XHhlOVx4MDRceGU1
XHgwNFx4ZWJceGZmXHhlYVx4MDRceGUxXHgwNFx4ZTlceDA0XHhlYVx4ZmZceGVjXHgwNFx4ZWZc
eDA0XHhlMVx4MDRceGVlXHhmZlx4ZTZceDA0XHg4ZVx4ZmZceGUzXHgwNFx4ZjBceDA0XHhmMlx4
MDRceGVkXHhmZlx4ZWFceDA0XHhmM1x4MDRceGU2XHhmZlx4ODlceGZmXHhlYVx4MDRceGU4XHgw
NFx4ZThceDA0XHg4NVx4ZmZceGY2XHgwNFx4ZjVceDA0XHhlYVx4MDRceGViXHgwNFx4ZWZceDA0
XHhmNFx4MDRceGU5XHhmZlx4ZjhceDA0XHhmMVx4MDRceDhmXHhmZlx4ZjNceDA0XHhmM1x4MDRc
eDAzXHgwNVx4ZjlceDA0XHg4M1x4ZmZcblx4MDVceGZkXHgwNFx0XHgwNVxuXHgwNVx4MDJceDA1
XHhlN1x4ZmZceDEyXHgwNVx4MDZceDA1XHgwNFx4MDVceDExXHgwNVx4MTRceDA1XG5ceDA1XHhl
MFx4ZmZceDEyXHgwNVx4OTNceGZmXGZceDA1XHgxNFx4MDVceDhiXHhmZlxiXHgwNVx4MWFceDA1
XHgxMFx4MDVceDFlXHgwNVx4MTlceDA1XHgxY1x4MDVcZlx4MDVceGU1XHhmZlx4MWFceDA1XHgx
Nlx4MDVceDE0XHgwNVwiXHgwNSZceDA1XHgxY1x4MDVceGUxXHhmZlx4MWFceDA1KFx4MDUqXHgw
NSBceDA1XHhkZVx4ZmZceDFiXHgwNVx4MWFceDA1XHg5MVx4ZmYmXHgwNSBceDA1XHgxZFx4MDVc
eDg0XHhmZiBceDA1J1x4MDUoXHgwNTZceDA1LVx4MDUpXHgwNTRceDA1MFx4MDUoXHgwNTZceDA1
OVx4MDUpXHgwNVx4ZTNceGZmLFx4MDU6XHgwNTJceDA1LVx4MDVDXHgwNTZceDA1QFx4MDU5XHgw
NThceDA1Nlx4MDUwXHgwNVx4OTVceGZmO1x4MDU8XHgwNThceDA1Tlx4MDVHXHgwNUNceDA1QVx4
MDVOXHgwNVFceDA1SFx4MDVceGUyXHhmZkZceDA1VFx4MDVWXHgwNUxceDA1XHhkZlx4ZmZCXHgw
NVtceDA1Tlx4MDVXXHgwNVBceDA1T1x4MDVNXHgwNUdceDA1XHg5NFx4ZmZfXHgwNWFceDA1V1x4
MDVceDhkXHhmZlBceDA1X1x4MDVTXHgwNWJceDA1VFx4MDVceDhjXHgwNVx4OWFceDA1XHhhNFx4
MDVceGFlXHgwNVx4YjhceDA1XHhjZlx4MDVceDgyXHgwNX5ceDA1XHg4MFx4MDV3XHhmZlx4ODNc
eDA1XHg5NVx4MDVceDhhXHgwNVx4OTBceGZmXHgxNVx4MDZceGVlXHgwNXRceGZmdVx4ZmZceDAy
XHgwNlx4ZmJceGZmXHhmY1x4ZmZceGZkXHhmZlx4Y2VceDA1XHgwMVwwXHhmZlx4ZmZceGZlXHhm
ZiIsCisgIC8qIGxleF9iYWNrdHJrICovIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBc
eDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkw
XDBceDkwXDBceDkwXDBceDkwXDBceDAyXDBceDAyXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZc
eGZmXHgwNFwwXHhmZlx4ZmZceDAyXDBceGZmXHhmZlx4ZmZceGZmXHgwMlwwXHhmZlx4ZmZceDAy
XDBceDA0XDBceGZmXHhmZlx4MDRcMFx4MDRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MDNc
MFx4MDNcMFx4ZmZceGZmXHgwM1wwXHgwM1wwXHgwM1wwXHhmZlx4ZmZceDA0XDBceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDA0XDBceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceDA0XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
dFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
IlwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmYjXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmSVwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlxiXDBcYlww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZidcMCdcMFx4ZmZc
eGZmJ1wwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ODNcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDEzXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDFiXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZ+XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZ4XDBceGZmXHhmZiZcMCZcMFx4ZmZceGZmJlwwXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ODlc
MFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHgwNFwwXHgwNFwwXHhmZlx4ZmZceGZmXHhmZiIsCisgIC8qIGxleF9kZWZhdWx0ICovIlx4MDFc
MFwwXDBcMFwwXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBceDAxXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhm
ZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFww
XHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFww
XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXDBc
MFwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXDBcMFwwXDBceGZmXHhmZlwwXDBceGZmXHhm
ZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlwwXDBcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXDBcMFwwXDBceDAxXHgwMVwwXHgw
MVwwXDBceGZmXHhmZlwwXHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBc
MFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4
ZmZceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFwwXDBceGZm
XHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4
ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlww
XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGE5XHgwMlwwXDBcMFwwXHhhZFx4MDJcMFwwXDBcMFwwXDBceGZm
XHhmZlx4ZmZceGZmXDBcMFwwXDAiLAorICAvKiBsZXhfdHJhbnMgKi8nXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwNFwwXHgwM1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXHgwNFwwXDBcMFx4MTZcMFwwXDBceDA2XDBcMFwwXDBcMFwwXDBceDFkXDBceDFjXDBceGIy
XHgwMlx4MTlcMFwwXDBceDE5XDBPXDBceGE1XDBceDFiXDBceDFhXDBceDFhXDBceDFhXDBceDFh
XDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDA+XDBceDA1XDBceGE5XHgwMlx4MWVcMCxc
MD9cMCxcMFx4ZDRcME5cMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCZcMG5cMCZcMG5c
MFx4N2ZcMChcMChcMChcMChcMChcMChcMChcMChcMChcMChcMFx4N2ZcMFx4YTdcMFx4YThcMHRc
MHFcMFx4MTRcMFx4MTBcMFxuXDBceDExXDBceDBlXDBceDE1XDBcdFwwXHhhNFx4MDJceDE4XDB6
XHgwMiNceDAyXHgwZlwwXHgxM1wwXHgxN1wwXGJcMFx4MDdcMHhceDAyXHJcMFx4MGJcMFxmXDBc
eDEyXDBceGE4XHgwMnlceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4MTFceDAyXHhmNFx4MDFceGE4XHgwMlx4YThceDAyXHg5Nlx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHg5NVx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMjxcMFx4YThceDAyNVwwXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMmBceDAyXHhhOFx4MDJEXHgwMlx4YThceDAyRlx4
MDIyXHgwMlx4MThceDAyXHgwNVx4MDJceDE5XHgwMjRceDAyXHhmZVx4MDE8XHgwMDVceDAyXHgw
NFx4MDJceGU4XHgwMVx4OTZceDAxNlwwXHg5N1x4MDFceDE3XHgwMkVceDAyX1x4MDI3XDBceDk1
XHgwMVx4MDZceDAxXHhlOVx4MDFceGZhXDBceDA1XHgwMVx4ZmZceDAxOFx4MDAzXHgwMlx4ZWFc
eDAxOVwwOlwwRVwwO1wwPVwwRFx4MDAwXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDBAXDBc
eDAyXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZj
XDBceGZjXDBceGZkXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBc
eGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZj
XDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGY2XDBMXDBceGZlXDBDXDBJXDBKXDBLXDBNXDBc
eDA0XHgwMVx4YzFcMEJcMEZcMFx4YmFcMC5cMFx4YjFcMFx4YWZcMFx4YWRcMCBcMC1cMFx4MWFc
MFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMChc
MChcMChcMChcMChcMChcMChcMChcMChcMChcMCBcMFx4MWZcMFx4MWFcMFx4MWFcMFx4MWFcMFx4
MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFceDAwNlwwXHhhY1wwXHhiMlww
XHg5N1wwXHg5MVwwXHg4ZlwwXHg4Nlwwd1wwXHg4Y1wwXHhmZlwwR1wwXHgxZlwwZlwwXHg5Nlww
ZVwwYlwwSFwwXHhiM1wwXHg4YlwweVwweFwwXHgxZlwwY1wwZFwwIFwwIFwwIFwwIFwwIFwwIFww
IFwwIFwwIFwwIFwwYFwwalwwa1wwYVwwb1wwcFwwXHg4MFwwcFwwX1wwXHgxZlwwXHhmY1wwXHgx
ZlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwc1wwelwwclwwZ1wwe1wwfFwwIVwwIlww
IlwwIlwwIlwwIlwwIlwwaVwwdlwwbVwwdVwwbFwwaFwwXHg4MlwwXHg4M1wwXHgxZlwwblwwXHg4
N1wwXHg4OFwwXHg4MVwwJFwwXHg4OVwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwXHg4
YVwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwJVwwIlwwJFwwJFwwJFwwJFwwJFwwJFww
JFwwJFwwJFwwJFwwXHg4NVwwXHg4ZVwwXHg4NFwwXHg4ZFwwXHg5MFwwXHg5MlwwXHg5M1wwJFww
JFwwJFwwJFwwKVwwJFwwXHg5NVwwXHhhOVwwXHg5NFwwIlwwIlwwIlwwIlwwJVwwIlwwflwwXHg5
OFwwfVwwXHg5ZFwwXHg5YVwwXHg5OVwwXHg5Y1wwXHg3ZlwwXHg5YlwwI1wwXHg5ZVwwXHg5Zlww
XHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwJFwwJFwwJFwwJFwwKVwwJFwwXHhhNlwwXHhh
YlwwXHhhZVwwXHhiMFwwXHhiN1wwXHhiNFwwXHhiNlwwXHhhYVwwXHhiNVwwI1wwJlwwXHhmZFww
JlwwJFwwXHhiYlwwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFx4Yjlc
MFx4YmNcMFx4YjhcMFx4YmRcMFx4YmVcMFx4YmZcMFx4YzBcMCJcMCJcMCJcMCJcMCVcMCJcMCRc
MFx4YzJcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBceGMzXDBceGM0
XDBceGM1XDBceGM3XDBceGNlXDBceGM2XDBceGM4XDAiXDAiXDAiXDAiXDAlXDAiXDBceGM5XDAi
XDAiXDAiXDAiXDAlXDAiXDBceGNiXDBceGNkXDBceGNjXDBceGNhXDBceGNmXDBceGQxXDBceGQz
XDBceGQyXDBceGQwXDAjXDBceGQ1XDBceGFmXDBceGQ5XDBceGRhXDBceGRiXDBceGQ4XDBceDk5
XDBceGRjXDBceGU2XDAiXDAiXDAiXDAiXDAlXDAiXDBceDk2XDBceGRkXDBceGRlXDBceGRmXDBc
eGUwXDBceGUxXDBceGUyXDBceGUzXDBceGU0XDAjXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAo
XDAoXDAmXDBceGU1XDAmXDBceGU3XDBceGU4XDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAq
XDBceGU5XDBceGVhXDBceGViXDBceGVkXDBceGYyXDBceGVjXDBceGVlXDAkXDAkXDAkXDAkXDAp
XDAkXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDBceGVmXDBceGYwXDBceGYxXDBceGYz
XDBceGY0XDBceGY1XDBceGY3XDAkXDAkXDAkXDAkXDApXDAkXDBceGY4XDBceGY5XDBceGZiXDAk
XDAkXDAkXDAkXDApXDAkXDBceDkzXHgwMXZceDAxXHgwN1x4MDFcYlx4MDFoXHgwMWVceDAxWlx4
MDFUXHgwMWZceDAxI1wwW1x4MDFQXHgwMUxceDAxQVx4MDFJXHgwMVVceDAxSFx4MDEkXDAkXDAk
XDAkXDApXDAkXDBnXHgwMTFceDAxOVx4MDEsXHgwMVZceDAxOlx4MDE4XHgwMVx4MWFceDAxXHgx
Ylx4MDEjXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDAr
XDArXDArXDArXDAgXDBceDFjXHgwMS9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMFx4MThc
eDAxY1wwXHgxN1x4MDFceDFkXHgwMVx4MTlceDAxXHgxZlx4MDEmXHgwMVx4MWVceDAxIFx4MDEh
XHgwMSBcMFx4MWZcMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMFx4MTVceDAxWlwwJVx4
MDFeXDBYXDBUXDAjXHgwMVJcMCRceDAxIlx4MDFceDE2XHgwMVx4MWZcMF1cMFlcMFNcMFZcMFtc
MFwnXHgwMVdcMFxcXDBQXDBceDFmXDApXHgwMVFcMFVcMChceDAxK1x4MDEyXHgwMDJceDAwMlx4
MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDAqXHgwMS1ceDAxLlx4MDEvXHgwMTBc
eDAxMlx4MDFceDFmXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDAkXHgwMDZceDAxMlx4
MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAxXHgwMDdceDAx
QFx4MDE+XHgwMTtceDAxPFx4MDE9XHgwMTJceDAwMlx4MDAyXHgwMDJceDAwM1x4MDAyXDA/XHgw
MTJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDBEXHgwMUJceDAxRVx4MDEmXDBGXHgwMSZcMCRc
MENceDAxNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFwwR1x4
MDEyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAw
MlwwS1x4MDFKXHgwMU1ceDAxI1wwTlx4MDFPXHgwMVFceDAxUlx4MDFTXHgwMVlceDAxWFx4MDFX
XHgwMV1ceDAxJFwwXFxceDAxNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgw
MDRceDAwNFwwXlx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAwMlx4MDAyXHgwMDJceDAwMlx4
MDAyXHgwMDNceDAwMlwwX1x4MDFgXHgwMWFceDAxI1wwYlx4MDFjXHgwMWRceDAxaVx4MDFqXHgw
MWtceDAxbFx4MDFtXHgwMW5ceDAxb1x4MDFwXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFc
MEFcMHFceDAxMlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDJcMEFcMEFcMEFcMEFcMEFcMEFcMHJc
eDAxc1x4MDF0XHgwMSNcMHVceDAxd1x4MDFceDg1XHgwMXtceDAxW1x4MDF8XHgwMX1ceDAxflx4
MDFceDdmXHgwMVx4ODBceDAxXHg4MVx4MDFBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBc
eDgyXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMFpcMFx4ODNceDAxXlww
WFwwXHhkNlwwXHg4NFx4MDFSXDBceDg2XHgwMVx4ODdceDAxXHg4OFx4MDFceDg5XHgwMV1cMFlc
MFNcMFZcMFtcMFx4OGFceDAxXHhkN1wwXFxcMFBcMFx4MDNceDAxXHg4Ylx4MDFceDhjXHgwMVVc
MFx4OGRceDAxXHgwM1x4MDFBXDBBXDBBXDBBXDBBXDBBXDBceDhlXHgwMVx4OGZceDAxXHgwMlx4
MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgw
MVx4MDJceDAxXHgwMlx4MDFceDkwXHgwMVx4OTFceDAxXHg5Mlx4MDFceDk0XHgwMVx4YTVceDAx
XHg5ZFx4MDFceDk4XHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFc
eDAyXHgwMVx4MTBceDAxXHg5OVx4MDFceDE0XHgwMVxmXHgwMVx4MGJceDAxXHgwZlx4MDFcblx4
MDFceDlhXHgwMVx4OWJceDAxXHg5Y1x4MDEzXHgwMVx4MTNceDAxXHJceDAxXHgxMVx4MDFceDll
XHgwMVx4OWZceDAxXHhhMFx4MDFcdFx4MDFceDEyXHgwMVx4MGVceDAxNVx4MDFceDAzXHgwMVx4
YTZceDAxXHhhN1x4MDFceGE4XHgwMTRceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4
MDFceDAyXHgwMVx4MDJceDAxXHhhOVx4MDFceGRmXHgwMVx4ZGNceDAxXHhkM1x4MDFceGNhXHgw
MVx4YmZceDAxXHhiOVx4MDFceDAzXHgwMVx4YjFceDAxXHhiMlx4MDFceGIzXHgwMVx4YjRceDAx
XHhiNVx4MDFceDAzXHgwMVx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmRcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4YjZceDAxXHhiN1x4MDFceGZl
XDBcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFc
MFx4MDFceGI4XHgwMVx4YmFceDAxXHhiYlx4MDFceGJjXHgwMVx4YmRceDAxXHhiZVx4MDFceGMw
XHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVx4MTBceDAxXHhjMVx4MDFc
eDE0XHgwMXpceDAxXHgwYlx4MDFceDBmXHgwMVxuXHgwMVx4YzJceDAxXHhjM1x4MDFceGM0XHgw
MVx4YzVceDAxXHgxM1x4MDFcclx4MDFceDExXHgwMVx4YzZceDAxeVx4MDFceGM3XHgwMXhceDAx
XHgxMlx4MDFceDBlXHgwMVx4YzhceDAxXHhjOVx4MDFceGNiXHgwMVx4Y2NceDAxXHhjZFx4MDFc
eGNlXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVx4Y2ZceDAxXHhkMFx4
MDFceGZmXDBceGQxXHgwMVx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmRcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZDJceDAxXHhmY1wwXHhmZVww
XHhhMlx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFc
eGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGZmXHhmZlx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4
YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhh
MVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGEx
XHgwMVx4YTFceDAxXHhhMVx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRc
eDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4ZDRceDAxXHhkNVx4
MDFceGQ2XHgwMVx4ZDdceDAxXHhkOFx4MDFceGQ5XHgwMVx4ZGFceDAxXHhhNFx4MDFceGE0XHgw
MVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhkYlx4MDFceGRkXHgwMVx4ZGVceDAx
XHhmZlwwXHhlMFx4MDFceGUxXHgwMVx4ZTJceDAxXHhlM1x4MDFceGU0XHgwMVx4ZTVceDAxXHhl
Nlx4MDFceGU3XHgwMVx4ZjBceDAxXHhlY1x4MDFceGViXHgwMVx4YTRceDAxXHhhNFx4MDFceGE0
XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRc
eDAxXHhlZFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4
MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGZjXDBc
eGEzXHgwMVx4YWFceDAxXHhlZVx4MDFceGVmXHgwMVx4ZjFceDAxXHhhZlx4MDFceGYyXHgwMVx4
ZjNceDAxXHhmNVx4MDFceGIwXHgwMVx4ZjZceDAxXHhmN1x4MDFceGY4XHgwMVx4ZjlceDAxXHhh
Y1x4MDFceGFlXHgwMVx4YWJceDAxXHhhZFx4MDFceGZhXHgwMVx4ZmJceDAxXHhmY1x4MDFceGZk
XHgwMVx4MDJceDAyXDBceDAyXHgwMVx4MDJceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgw
MVx4YTRceDAxXHhhNFx4MDFceDAzXHgwMlx0XHgwMlx4MDZceDAyXHhmZFwwXHgwN1x4MDJcYlx4
MDJceDBiXHgwMlxyXHgwMlxmXHgwMlx4MGVceDAyXHgwZlx4MDJceDEwXHgwMlx4MTJceDAyXHgx
NVx4MDJceDE0XHgwMlx4MTZceDAyXHgxZlx4MDJcblx4MDJceDFiXHgwMlx4MWFceDAyXHgxZVx4
MDJceDFkXHgwMiBceDAyIVx4MDJceDEzXHgwMiJceDAyJFx4MDItXHgwMipceDAyXCdceDAyKFx4
MDIpXHgwMlx4MWNceDAyK1x4MDIsXHgwMi5ceDAyL1x4MDIwXHgwMiVceDAyJlx4MDIxXHgwMkFc
eDAyP1x4MDI4XHgwMjZceDAyN1x4MDI5XHgwMjpceDAyO1x4MDI8XHgwMj1ceDAyPlx4MDJAXHgw
MkJceDAyQ1x4MDJbXHgwMlhceDAySFx4MDJMXHgwMklceDAySlx4MDJLXHgwMk1ceDAyU1x4MDJP
XHgwMkdceDAyUFx4MDJOXHgwMlFceDAyUlx4MDJUXHgwMlVceDAyVlx4MDJXXHgwMllceDAyWlx4
MDJcXFx4MDJdXHgwMl5ceDAybFx4MDJhXHgwMmJceDAyY1x4MDJkXHgwMmVceDAyZlx4MDJnXHgw
MmhceDAyaVx4MDJqXHgwMmtceDAybVx4MDJuXHgwMm9ceDAycFx4MDJxXHgwMnJceDAyXHhmZFww
c1x4MDJ0XHgwMnVceDAydlx4MDJ3XHgwMlx4OTFceDAyXHg4OFx4MDJ7XHgwMnxceDAyfVx4MDJc
eDgzXHgwMlx4N2ZceDAyXHg4MFx4MDJceDgxXHgwMn5ceDAyXHg4Mlx4MDJceDg0XHgwMlx4ODVc
eDAyXHg4Nlx4MDJceDg3XHgwMlx4ODlceDAyXHg4YVx4MDJceDhiXHgwMlx4OGNceDAyXHg4ZFx4
MDJceDhlXHgwMlx4OGZceDAyXHg5MFx4MDJceDkyXHgwMlx4OTNceDAyXHg5NFx4MDJceGEwXHgw
Mlx4OTdceDAyXHg5OFx4MDJceDk5XHgwMlx4OWFceDAyXHg5Ylx4MDJceDlkXHgwMlx4OWNceDAy
XHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJc
eDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4
OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5
Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDlm
XHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZc
eDAyXHg5Zlx4MDJceDlmXHgwMlx4YTFceDAyXHhhMlx4MDJceGEzXHgwMlx4YTVceDAyXHhhNlx4
MDJceGE3XHgwMlx4YWFceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgw
Mlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAy
XHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceGIzXHgwMlwwXDBcMFwwXHhhZlx4MDJc
MFwwXDBcMFwwXDBceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4
MDJcMFwwXDBcMFwwXDBceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5
Zlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5ZVx4MDJcMFwwXDBcMFwwXDBceGIw
XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJc
eDlmXHgwMlx4OWZceDAyXHhhOFx4MDJcMFwwXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YjFceDAyXDBcMFx4YThceDAyXHhhOFx4MDJcMFwwXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlwwXDBceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlwwXDBceGE4XHgwMlwwXDBceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXDBcMFx4YThceDAyXDBcMFx4YThceDAyXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXHhhYlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhZVx4MDJcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwJywKKyAgLyogbGV4X2NoZWNrICovIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4
ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhi
MVx4MDJcMFwwXHhmZlx4ZmZcMFwwTlwwXHhhNFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMD1cMFwwXDBceDA1XDBceDFkXDBceDFmXDA+XDBceDFmXDBEXDBFXDBceDFm
XDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDAj
XDBsXDAjXDBtXDB9XDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDB+XDBceGE2XDBceGE3
XDBnXDBoXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwN1wwXDBcMFx0XDBcclwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcdFwwXDBcMFwwXDBcMFwwXDBcMFx4MDZcMFx0XDBceDA2XDBceDA2
XDBceDA2XDBceDA2XDBceDA2XDBceDBmXDBceDEyXDBceDA2XDBceDA2XDBcYlwwXHgwNlwwXHgw
NlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlww
XHgwNlwwXHgwNlwwXHgwNlwwXGJcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMC1cMFx4MDZcMC5cMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFxuXDBc
eDA2XDBceDBiXDBceDA2XDBceDBiXDBcZlwwXHgwZVwwXHgxMFwwXHgwZVwwXGZcMFx4MTFcMFx4
MTdcMFxmXDBceDEwXDBceDEzXDBceDE0XHgwMDVcMFx4MTRcMFx4MGVcMFx4MGJcMFxuXHgwMDZc
MFx4MTRcMFx4MTVcMFx4MTNcMFx4MTdcMFx4MTVcMFx4MTFceDAwN1wwXGZcMFx4MTNceDAwOFx4
MDA5XDBceDE4XDA6XDA8XDBceDE4XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5
XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDA/XDBcMFwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlww
XHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgx
NlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlww
XHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwQlww
R1wwXHgxNlwwXHgxOFwwSFwwSVwwSlwwTFwwXHgxNVwwUFwwXHgxOFwwXHgxOFwwUVwwXHgxOVww
U1wwVFwwVVwwXHgxYVwwXHgxOVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVww
XHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwXHgx
YlwwXHgxYVwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlww
XHgxYlwwXHgxYlwwRlwwVlwwUlwwV1wwWFwwWVwwW1wwXFxcMFpcMFx4MTZcMEZcMFx4MWJcMF9c
MFdcMGBcMGFcMEZcMFJcMFpcMFxcXDBcXFwwXHgxYVwwYlwwY1wwIFwwIFwwIFwwIFwwIFwwIFww
IFwwIFwwIFwwIFwwXlwwaVwwalwwXlwwblwwb1wweFwwb1wwXlwwXHgxYlwwXHgxNlwwIFwwIVww
IVwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwIVwwcVwweVwwcVwwXVwwelwwe1wwXHgxYlwwIVwwIVww
IVwwIVwwIVwwIVwwXVwwdFwwa1wwdFwwa1wwXVwwd1wwXHg4MVwwIFwwa1wwXHg4NlwwXHg4N1ww
d1wwXCJcMFx4ODhcMFwiXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDBceDg5
XDAhXDAhXDAhXDAhXDAhXDAhXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDAkXDAkXDAkXDAkXDAk
XDAkXDAkXDAkXDAkXDAkXDBceDgzXDBceDhiXDBceDgzXDBceDhjXDBceDhmXDBceDkxXDBceDky
XDAkXDAkXDAkXDAkXDAkXDAkXDBceDkzXDBceDk2XDBceDkzXDBcIlwwXCJcMFwiXDBcIlwwXCJc
MFwiXDB8XDBceDk3XDB8XDBceDk4XDBceDk5XDBceDk3XDBceDlhXDB8XDBceDlhXDBcIlwwXHg5
ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwJFwwJFwwJFwwJFwwJFwwJFww
XHhhNVwwXHhhOVwwXHhhZFwwXHhhZlwwXHhiMlwwXHhiM1wwXHhiNFwwXHhhOVwwXHhiNFwwJFww
JVwwXHgxNlwwJVwwJVwwXHhiYVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwXHhiN1ww
XHhiYlwwXHhiN1wwXHhiY1wwXHhiZFwwXHhiZVwwXHhiZlwwJVwwJVwwJVwwJVwwJVwwJVwwJ1ww
XHhjMVwwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhjMlwwXHhjM1wwXHhjNFwwXHhj
NVwwXHhjNlwwXHhjNVwwXHhjN1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhjOFwwJVwwJVwwJVwwJVww
JVwwJVwwXHhjOVwwXHhjYVwwXHhjYlwwXHhjOVwwXHhjZVwwXHhjZlwwXHhkMFwwXHhkMVwwXHhj
ZlwwJVwwXHhkNFwwXHhkNlwwXHhkOFwwXHhkOVwwXHhkYVwwXHhkN1wwXHhkOFwwXHhkYlwwXHhk
NlwwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhkN1wwXHhkY1wwXHhkZFwwXHhkZVwwXHhkZlwwXHhlMFww
XHhlMVwwXHhlMlwwXHhlM1wwJ1wwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKVwwXHhl
NFwwKVwwXHhlNlwwXHhlN1wwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwXHhlOFwwXHhl
OVwwXHhlYVwwXHhlYlwwXHhlY1wwXHhlYlwwXHhlZFwwKVwwKVwwKVwwKVwwKVwwKVwwKlwwKlww
KlwwKlwwKlwwKlwwKlwwKlwwKlwwKlwwXHhlZVwwXHhlZlwwXHhmMFwwXHhmMlwwXHhmM1wwXHhm
NFwwXHhmNlwwKlwwKlwwKlwwKlwwKlwwKlwwXHhmN1wwXHhmOFwwXHhmYVwwKVwwKVwwKVwwKVww
KVwwKVwwXHgwNFx4MDFceDA1XHgwMVx4MDZceDAxXHgwN1x4MDFcdFx4MDFceDBiXHgwMVxmXHgw
MVxyXHgwMVxuXHgwMSlcMFxmXHgwMVx4MGVceDAxXHgwZlx4MDFceDExXHgwMVx4MTBceDAxXHJc
eDAxXHgxMFx4MDEqXDAqXDAqXDAqXDAqXDAqXDBcblx4MDFceDE1XHgwMVx4MTJceDAxXHgxN1x4
MDFcclx4MDFceDEyXHgwMVx4MTJceDAxXHgxOVx4MDFceDFhXHgwMSpcMCtcMCtcMCtcMCtcMCtc
MCtcMCtcMCtcMCtcMCtcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMC9cMFx4MWJceDAx
L1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwL1wwXHgxNlx4MDFceDE4XHgwMVx4MTZceDAxXHgx
Y1x4MDFceDE4XHgwMVx4MWRceDAxXHgxZVx4MDFceDFkXHgwMVx4MWZceDAxIFx4MDEwXDAvXHgw
MDBceDAwMFx4MDAwXHgwMDBceDAwMFx4MDAwXHgwMDBceDAwMFx4MDAwXHgwMDBcMFx4MTRceDAx
T1wwXCJceDAxT1wwT1wwT1wwIVx4MDFPXDAjXHgwMSFceDAxXHgxNFx4MDEwXDBPXDBPXDBPXDBP
XDBPXDAmXHgwMU9cME9cME9cMC9cMCdceDAxT1wwT1wwJ1x4MDEoXHgwMTFceDAwMVx4MDAxXHgw
MDFceDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFcMClceDAxLFx4MDEtXHgwMS5ceDAxL1x4
MDExXHgwMTBceDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMlx4MDA1XHgwMTJceDAw
Mlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMFx4MDA2XHgwMThc
eDAxOVx4MDE6XHgwMTtceDAxPFx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlwwPlx4MDEx
XHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMVwwQlx4MDFBXHgwMURceDAxM1wwRVx4MDEzXHgwMDNc
MEFceDAxM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1wwRlx4
MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAw
M1wwSFx4MDFJXHgwMUxceDAxMlwwTVx4MDFOXHgwMVBceDAxUVx4MDFSXHgwMVRceDAxVVx4MDFW
XHgwMVpceDAxNFwwW1x4MDE0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAw
NFx4MDA0XDBdXHgwMTNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDRceDAwNFx4MDA0XHgw
MDRceDAwNFx4MDA0XDBeXHgwMV9ceDAxYFx4MDEzXDBhXHgwMWJceDAxY1x4MDFoXHgwMWlceDAx
alx4MDFrXHgwMWxceDAxbVx4MDFuXHgwMW9ceDAxQFwwQFwwQFwwQFwwQFwwQFwwQFwwQFwwQFww
QFwwcFx4MDE0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFwwQFwwQFwwQFwwQFwwQFwwQFwwcVx4
MDFyXHgwMXNceDAxNFwwdFx4MDF2XHgwMXhceDAxeVx4MDF6XHgwMXtceDAxfFx4MDF9XHgwMX5c
eDAxXHg3Zlx4MDFceDgwXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMFx4ODFceDAx
QFwwQFwwQFwwQFwwQFwwQFwwQVwwQVwwQVwwQVwwQVwwQVwwXHhkNVwwXHg4Mlx4MDFceGQ1XDBc
eGQ1XDBceGQ1XDBceDgzXHgwMVx4ZDVcMFx4ODVceDAxXHg4Nlx4MDFceDg3XHgwMVx4ODhceDAx
XHhkNVwwXHhkNVwwXHhkNVwwXHhkNVwwXHhkNVwwXHg4OVx4MDFceGQ1XDBceGQ1XDBceGQ1XDBc
eGZmXDBceDhhXHgwMVx4OGJceDAxXHhkNVwwXHg4Y1x4MDFceGZmXDBBXDBBXDBBXDBBXDBBXDBB
XDBceDhkXHgwMVx4OGVceDAxXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhm
ZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHg4Zlx4MDFceDkwXHgwMVx4OTFceDAxXHg5M1x4MDFceDk1
XHgwMVx4OTZceDAxXHg5N1x4MDFceGZmXDBceGZmXDBceGZmXDBceGZmXDBceGZmXDBceGZmXDBc
Ylx4MDFceDk4XHgwMVxiXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVx4OTlceDAxXHg5YVx4
MDFceDliXHgwMVx4MTNceDAxXGJceDAxXGJceDAxXGJceDAxXHg5ZFx4MDFceDllXHgwMVx4OWZc
eDAxXGJceDAxXGJceDAxXGJceDAxXHgxM1x4MDFceGZmXDBceGE1XHgwMVx4YTZceDAxXHhhN1x4
MDFceDEzXHgwMVx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4YThceDAxXHhh
YVx4MDFceGFiXHgwMVx4YWNceDAxXHhhZFx4MDFceGFlXHgwMVx4YWZceDAxXHhmZlwwXHhiMFx4
MDFceGIxXHgwMVx4YjJceDAxXHhiM1x4MDFceGI0XHgwMVx4ZmZcMFwwXHgwMVwwXHgwMVwwXHgw
MVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVww
XHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgw
MVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVww
XHgwMVx4YjVceDAxXHhiNlx4MDFcMFx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgw
MVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4YjdceDAx
XHhiOVx4MDFceGJhXHgwMVx4YmJceDAxXHhiY1x4MDFceGJkXHgwMVx4YmZceDAxXHgwMlx4MDFc
eDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxd1x4MDFceGMwXHgwMXdceDAx
d1x4MDF3XHgwMXdceDAxd1x4MDFceGMxXHgwMVx4YzJceDAxXHhjM1x4MDFceGM0XHgwMXdceDAx
d1x4MDF3XHgwMVx4YzVceDAxd1x4MDFceGM2XHgwMXdceDAxd1x4MDF3XHgwMVx4YzdceDAxXHhj
OFx4MDFceGNhXHgwMVx4Y2JceDAxXHhjY1x4MDFceGNkXHgwMVx4MDJceDAxXHgwMlx4MDFceDAy
XHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4Y2VceDAxXHhjZlx4MDFcMFx4MDFceGQwXHgw
MVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAx
XHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFc
eDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4
MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgw
M1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceGQxXHgwMVwwXHgwMVx4MDNceDAxXHhhMFx4
MDFceGEwXHgwMVx4YTBceDAxXHhhMFx4MDFceGEwXHgwMVx4YTBceDAxXHhhMFx4MDFceGEwXHgw
MVx4YTBceDAxXHhhMFx4MDFceGZmXDBceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4
YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTJceDAxXHhh
Mlx4MDFceGEyXHgwMVx4YTJceDAxXHhhMlx4MDFceGEyXHgwMVx4YTJceDAxXHhhMlx4MDFceGEy
XHgwMVx4YTJceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNc
eDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGQzXHgwMVx4ZDRceDAxXHhkNVx4
MDFceGQ2XHgwMVx4ZDdceDAxXHhkOFx4MDFceGQ5XHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgw
MVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4ZGFceDAxXHhkY1x4MDFceGRkXHgwMVx4MDNceDAx
XHhkZlx4MDFceGUwXHgwMVx4ZTFceDAxXHhlMlx4MDFceGUzXHgwMVx4ZTRceDAxXHhlNVx4MDFc
eGU2XHgwMVx4ZThceDAxXHhlOVx4MDFceGVhXHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4
YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhl
Y1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGE0
XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceDAzXHgwMVx4YTJc
eDAxXHhhOVx4MDFceGVkXHgwMVx4ZWVceDAxXHhmMFx4MDFceGE5XHgwMVx4ZjFceDAxXHhmMlx4
MDFceGY0XHgwMVx4YTlceDAxXHhmNVx4MDFceGY2XHgwMVx4ZjdceDAxXHhmOFx4MDFceGE5XHgw
MVx4YTlceDAxXHhhOVx4MDFceGE5XHgwMVx4ZjlceDAxXHhmYVx4MDFceGZiXHgwMVx4ZmNceDAx
XHhmZVx4MDFceGZmXHgwMVwwXHgwMlx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhh
NFx4MDFceGE0XHgwMVx4MDJceDAyXHgwNFx4MDJceDA1XHgwMlwwXHgwMVx4MDZceDAyXHgwN1x4
MDJcdFx4MDJcblx4MDJceDBiXHgwMlxyXHgwMlx4MGVceDAyXHgwZlx4MDJceDExXHgwMlx4MTJc
eDAyXHgxM1x4MDJceDE1XHgwMlx4MTdceDAyXHRceDAyXHgxOFx4MDJceDE5XHgwMlx4MWJceDAy
XHgxY1x4MDJceDFmXHgwMiBceDAyXHgxMVx4MDIhXHgwMiNceDAyJFx4MDIlXHgwMiZceDAyJ1x4
MDIoXHgwMlx4MThceDAyKlx4MDIrXHgwMi1ceDAyLlx4MDIvXHgwMiNceDAyI1x4MDIwXHgwMjJc
eDAyM1x4MDI0XHgwMjVceDAyNlx4MDI4XHgwMjlceDAyOlx4MDI7XHgwMjxceDAyPVx4MDI/XHgw
MkFceDAyQlx4MDJEXHgwMkVceDAyRlx4MDJHXHgwMkhceDAySVx4MDJKXHgwMkxceDAyTVx4MDJO
XHgwMkZceDAyT1x4MDJMXHgwMlBceDAyUVx4MDJTXHgwMlRceDAyVVx4MDJWXHgwMlhceDAyWVx4
MDJbXHgwMlxcXHgwMl1ceDAyX1x4MDJgXHgwMmFceDAyYlx4MDJjXHgwMmRceDAyZVx4MDJmXHgw
MmdceDAyaFx4MDJpXHgwMmpceDAybFx4MDJtXHgwMm5ceDAyb1x4MDJwXHgwMnFceDAyXHgwM1x4
MDFyXHgwMnNceDAydFx4MDJ1XHgwMnZceDAyeFx4MDJ5XHgwMnpceDAye1x4MDJ8XHgwMn1ceDAy
flx4MDJceDdmXHgwMlx4ODBceDAyfFx4MDJceDgxXHgwMlx4ODNceDAyXHg4NFx4MDJceDg1XHgw
Mlx4ODZceDAyXHg4OFx4MDJceDg5XHgwMlx4OGFceDAyXHg4Ylx4MDJceDhjXHgwMlx4OGRceDAy
XHg4ZVx4MDJceDhmXHgwMlx4OTFceDAyXHg5Mlx4MDJceDkzXHgwMlx4OTVceDAyXHg5Nlx4MDJc
eDk3XHgwMlx4OThceDAyXHg5OVx4MDJceDlhXHgwMlx4OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4
OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4OWJceDAyXHg5
Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDlj
XHgwMlx4OWNceDAyXHg5Y1x4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDlkXHgwMlx4OWRc
eDAyXHg5ZFx4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDlkXHgwMlx4OWVceDAyXHg5ZVx4
MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgw
Mlx4OWVceDAyXHhhMFx4MDJceGExXHgwMlx4YTJceDAyXHhhNFx4MDJceGE1XHgwMlx4YTZceDAy
XHhhOVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJc
eDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4
OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YjBceDAyXHhmZlx4ZmZceGZmXHhmZlx4YWNceDAyXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlm
XHgwMlx4OWZceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHg5ZVx4MDJceDllXHgwMlx4OWVc
eDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDlkXHgwMlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4YWNceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4OWZceDAy
XHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YThceDAyXHhmZlx4ZmZc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhY1x4MDJceGZmXHhmZlx4
YThceDAyXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhmZlx4ZmZc
eGE4XHgwMlx4ZmZceGZmXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4ZmZceGZmXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhhOVx4MDJceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4YWNceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmYiLAorICAvKiBsZXhfYmFzZV9jb2RlICovIiIsCisgIC8qIGxleF9iYWNrdHJrX2Nv
ZGUgKi8iIiwKKyAgLyogbGV4X2RlZmF1bHRfY29kZSAqLyIiLAorICAvKiBsZXhfdHJhbnNfY29k
ZSAqLyIiLAorICAvKiBsZXhfY2hlY2tfY29kZSAqLyIiLAorICAvKiBsZXhfY29kZSAqLyIiCitd
OworCitmdW5jdGlvbiB0b2tlbihsZXhidWYpIHsKKyAgdmFyIGxleGJ1ZiQxID0gbGV4YnVmOwor
ICB2YXIgX19fb2NhbWxfbGV4X3N0YXRlID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBf
X29jYW1sX2xleF9zdGF0ZSA9IF9fX29jYW1sX2xleF9zdGF0ZTsKKyAgICB2YXIgX19vY2FtbF9s
ZXhfc3RhdGUkMSA9IExleGluZy5lbmdpbmUoX19vY2FtbF9sZXhfdGFibGVzLCBfX29jYW1sX2xl
eF9zdGF0ZSwgbGV4YnVmJDEpOworICAgIGlmIChfX29jYW1sX2xleF9zdGF0ZSQxID4gMTQ0IHx8
IF9fb2NhbWxfbGV4X3N0YXRlJDEgPCAwKSB7CisgICAgICBDdXJyeS5fMShsZXhidWYkMVsvKiBy
ZWZpbGxfYnVmZiAqLzBdLCBsZXhidWYkMSk7CisgICAgICBfX19vY2FtbF9sZXhfc3RhdGUgPSBf
X29jYW1sX2xleF9zdGF0ZSQxOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAg
IGVsc2UgeworICAgICAgc3dpdGNoIChfX29jYW1sX2xleF9zdGF0ZSQxKSB7CisgICAgICAgIGNh
c2UgMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIExQQVIgKi8yOworICAgICAgICBjYXNlIDEg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBSUEFSICovMzsKKyAgICAgICAgY2FzZSAyIDogCisg
ICAgICAgICAgICB2YXIgcyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKKyAg
ICAgICAgICAgIHJldHVybiAvKiBOQVQgKi9CbG9jay5fXygwLCBbc10pOworICAgICAgICBjYXNl
IDMgOiAKKyAgICAgICAgICAgIHZhciBzJDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfY3Vycl9wb3Mg
Ki81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogSU5UICovQmxvY2suX18oMSwgW3MkMV0pOwor
ICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHZhciBzJDIgPSBMZXhpbmcuc3ViX2xleGVt
ZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBs
ZXhfY3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogRkxPQVQgKi9CbG9jay5f
XygyLCBbcyQyXSk7CisgICAgICAgIGNhc2UgNSA6IAorICAgICAgICAgICAgdmFyIHMkMyA9IExl
eGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0s
IGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBU
RVhUICovQmxvY2suX18oMywgW3RleHQocyQzKV0pOworICAgICAgICBjYXNlIDYgOiAKKyAgICAg
ICAgICAgIHJldHVybiBlcnJvcihsZXhidWYkMSwgInVuY2xvc2VkIHRleHQgbGl0ZXJhbCIpOwor
ICAgICAgICBjYXNlIDcgOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihsZXhidWYkMSwgImls
bGVnYWwgY29udHJvbCBjaGFyYWN0ZXIgaW4gdGV4dCBsaXRlcmFsIik7CisgICAgICAgIGNhc2Ug
OCA6IAorICAgICAgICAgICAgcmV0dXJuIGVycm9yX25lc3QoTGV4aW5nLmxleGVtZV9lbmRfcChs
ZXhidWYkMSksIGxleGJ1ZiQxLCAiaWxsZWdhbCBlc2NhcGUiKTsKKyAgICAgICAgY2FzZSA5IDog
CisgICAgICAgICAgICB2YXIgdCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSAr
IDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBWQUxVRV9UWVBFICovQmxvY2suX18oNSwg
W3ZhbHVlX3R5cGUodCldKTsKKyAgICAgICAgY2FzZSAxMCA6IAorICAgICAgICAgICAgdmFyIHQk
MSA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiAvKiBDT05TVCAqL0Jsb2NrLl9fKDEwLCBbbnVtb3AodCQxLCBmdW5jdGlvbiAo
cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gQ3VycnkuXzEoSTMyLm9m
X3N0cmluZywgc1svKiBpdCAqLzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVy
YXRvcnMuaTMyX2NvbnN0KFNvdXJjZS4kYXQkYXQobiwgc1svKiBhdCAqLzBdKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJMzIgKi9CbG9jay5fXygwLCBbbl0pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwgZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
biA9IEN1cnJ5Ll8xKEk2NC5vZl9zdHJpbmcsIHNbLyogaXQgKi8xXSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgT3BlcmF0b3JzLmk2NF9jb25zdChTb3VyY2UuJGF0JGF0KG4sIHNbLyog
YXQgKi8wXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSTY0ICov
QmxvY2suX18oMSwgW25dKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChzKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIG4gPSBDdXJyeS5fMShGMzIub2Zfc3RyaW5nLCBzWy8qIGl0ICov
MV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9ycy5mMzJfY29uc3QoU291
cmNlLiRhdCRhdChuLCBzWy8qIGF0ICovMF0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIEYzMiAqL0Jsb2NrLl9fKDIsIFtuXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAo
cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gQ3VycnkuXzEoRjY0Lm9m
X3N0cmluZywgc1svKiBpdCAqLzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVy
YXRvcnMuZjY0X2NvbnN0KFNvdXJjZS4kYXQkYXQobiwgc1svKiBhdCAqLzBdKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGNjQgKi9CbG9jay5fXygzLCBbbl0pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSldKTsKKyAgICAgICAgY2FzZSAxMSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEZV
TkNSRUYgKi8wOworICAgICAgICBjYXNlIDEyIDogCisgICAgICAgICAgICByZXR1cm4gLyogTVVU
ICovMTsKKyAgICAgICAgY2FzZSAxMyA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIE5PUCAqLzQ7
CisgICAgICAgIGNhc2UgMTQgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBVTlJFQUNIQUJMRSAq
LzI0OworICAgICAgICBjYXNlIDE1IDogCisgICAgICAgICAgICByZXR1cm4gLyogRFJPUCAqLzU7
CisgICAgICAgIGNhc2UgMTYgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBCTE9DSyAqLzY7Cisg
ICAgICAgIGNhc2UgMTcgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBMT09QICovMTI7CisgICAg
ICAgIGNhc2UgMTggOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFTkQgKi83OworICAgICAgICBj
YXNlIDE5IDogCisgICAgICAgICAgICByZXR1cm4gLyogQlIgKi8xMzsKKyAgICAgICAgY2FzZSAy
MCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEJSX0lGICovMTQ7CisgICAgICAgIGNhc2UgMjEg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBCUl9UQUJMRSAqLzE1OworICAgICAgICBjYXNlIDIy
IDogCisgICAgICAgICAgICByZXR1cm4gLyogUkVUVVJOICovMTg7CisgICAgICAgIGNhc2UgMjMg
OiAKKyAgICAgICAgICAgIHJldHVybiAvKiBJRiAqLzg7CisgICAgICAgIGNhc2UgMjQgOiAKKyAg
ICAgICAgICAgIHJldHVybiAvKiBUSEVOICovOTsKKyAgICAgICAgY2FzZSAyNSA6IAorICAgICAg
ICAgICAgcmV0dXJuIC8qIEVMU0UgKi8xMDsKKyAgICAgICAgY2FzZSAyNiA6IAorICAgICAgICAg
ICAgcmV0dXJuIC8qIFNFTEVDVCAqLzExOworICAgICAgICBjYXNlIDI3IDogCisgICAgICAgICAg
ICByZXR1cm4gLyogQ0FMTCAqLzE2OworICAgICAgICBjYXNlIDI4IDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogQ0FMTF9JTkRJUkVDVCAqLzE3OworICAgICAgICBjYXNlIDI5IDogCisgICAgICAg
ICAgICByZXR1cm4gLyogR0VUX0xPQ0FMICovMTk7CisgICAgICAgIGNhc2UgMzAgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBTRVRfTE9DQUwgKi8yMDsKKyAgICAgICAgY2FzZSAzMSA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIFRFRV9MT0NBTCAqLzIxOworICAgICAgICBjYXNlIDMyIDogCisg
ICAgICAgICAgICByZXR1cm4gLyogR0VUX0dMT0JBTCAqLzIyOworICAgICAgICBjYXNlIDMzIDog
CisgICAgICAgICAgICByZXR1cm4gLyogU0VUX0dMT0JBTCAqLzIzOworICAgICAgICBjYXNlIDM0
IDogCisgICAgICAgICAgICB2YXIgdCQyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIExPQUQgKi9CbG9jay5fXyg2LCBb
KGZ1bmN0aW9uKHQkMil7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChh
LCBvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmcgPSBDdXJyeS5f
MihvcHQsIGEsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRpYWxfYXJnJDEg
PSBDdXJyeS5fMihvcHQsIGEsIDMpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRp
YWxfYXJnJDIgPSBDdXJyeS5fMihvcHQsIGEsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHBhcnRpYWxfYXJnJDMgPSBDdXJyeS5fMihvcHQsIGEsIDMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKG51bW9wKHQkMiwgZnVuY3Rpb24gKHBhcmFtKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5p
MzJfbG9hZChwYXJ0aWFsX2FyZywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkKHBhcnRpYWxfYXJnJDEs
IHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5mMzJfbG9hZChwYXJ0aWFsX2FyZyQyLCBwYXJhbSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2xv
YWQocGFydGlhbF9hcmckMywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9KSwgbyk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgIH0odCQyKSldKTsKKyAgICAgICAgY2FzZSAzNSA6IAorICAgICAgICAgICAgdmFyIHQk
MyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiAvKiBTVE9SRSAqL0Jsb2NrLl9fKDcsIFsoZnVuY3Rpb24odCQzKXsKKyAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIG8pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBwYXJ0aWFsX2FyZyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMik7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMSA9IEN1cnJ5Ll8yKG9wdCwgYSwgMyk7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMiA9IEN1cnJ5Ll8yKG9w
dCwgYSwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMyA9IEN1
cnJ5Ll8yKG9wdCwgYSwgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ3Vycnku
XzEobnVtb3AodCQzLCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zdG9yZShwYXJ0aWFsX2FyZywg
cGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlv
biAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmk2NF9zdG9yZShwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3N0
b3JlKHBhcnRpYWxfYXJnJDIsIHBhcmFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfc3RvcmUocGFydGlhbF9hcmckMywg
cGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIH0odCQzKSldKTsK
KyAgICAgICAgY2FzZSAzNiA6IAorICAgICAgICAgICAgdmFyIHQkNCA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHZhciBzeiA9IExleGlu
Zy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyA4
IHwgMCwgbGV4YnVmJDFbLyogbGV4X2N1cnJfcG9zICovNV0gLSAyIHwgMCk7CisgICAgICAgICAg
ICB2YXIgcyQ0ID0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhcihsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X2N1cnJfcG9zICovNV0gLSAxIHwgMCk7CisgICAgICAgICAgICBpZiAodCQ0ID09PSAiaTMy
IiAmJiBzeiA9PT0gIjMyIikgeworICAgICAgICAgICAgICBlcnJvcihsZXhidWYkMSwgInVua25v
d24gb3BlcmF0b3IiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAvKiBMT0FE
ICovQmxvY2suX18oNiwgWyhmdW5jdGlvbih0JDQsc3oscyQ0KXsKKyAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBpbnRvcCh0JDQsIEN1cnJ5Ll8xKG1lbXN6KHN6LCBDdXJyeS5fMShleHQocyQ0LCBPcGVy
YXRvcnMuaTMyX2xvYWQ4X3MsIE9wZXJhdG9ycy5pMzJfbG9hZDhfdSksIEN1cnJ5Ll8yKG9wdCwg
YSwgMCkpLCBDdXJyeS5fMShleHQocyQ0LCBPcGVyYXRvcnMuaTMyX2xvYWQxNl9zLCBPcGVyYXRv
cnMuaTMyX2xvYWQxNl91KSwgQ3VycnkuXzIob3B0LCBhLCAxKSksIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy51bnJlYWNoYWJsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0pLCBvKSwgQ3VycnkuXzEobWVtc3ooc3osIEN1cnJ5Ll8xKGV4dChzJDQsIE9wZXJhdG9ycy5p
NjRfbG9hZDhfcywgT3BlcmF0b3JzLmk2NF9sb2FkOF91KSwgQ3VycnkuXzIob3B0LCBhLCAwKSks
IEN1cnJ5Ll8xKGV4dChzJDQsIE9wZXJhdG9ycy5pNjRfbG9hZDE2X3MsIE9wZXJhdG9ycy5pNjRf
bG9hZDE2X3UpLCBDdXJyeS5fMihvcHQsIGEsIDEpKSwgQ3VycnkuXzEoZXh0KHMkNCwgT3BlcmF0
b3JzLmk2NF9sb2FkMzJfcywgT3BlcmF0b3JzLmk2NF9sb2FkMzJfdSksIEN1cnJ5Ll8yKG9wdCwg
YSwgMikpKSwgbykpOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICB9KHQkNCxzeixzJDQpKV0pOworICAgICAgICBjYXNlIDM3IDogCisgICAgICAgICAgICB2
YXIgdCQ1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAg
ICAgICAgICAgdmFyIHN6JDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgOSB8IDAsIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAq
LzVdKTsKKyAgICAgICAgICAgIGlmICh0JDUgPT09ICJpMzIiICYmIHN6JDEgPT09ICIzMiIpIHsK
KyAgICAgICAgICAgICAgZXJyb3IobGV4YnVmJDEsICJ1bmtub3duIG9wZXJhdG9yIik7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLyogU1RPUkUgKi9CbG9jay5fXyg3LCBbKGZ1
bmN0aW9uKHQkNSxzeiQxKXsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KGEsIG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJ0aWFsX2FyZyA9IEN1cnJ5
Ll8yKG9wdCwgYSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmck
MSA9IEN1cnJ5Ll8yKG9wdCwgYSwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFy
dGlhbF9hcmckMiA9IEN1cnJ5Ll8yKG9wdCwgYSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgcGFydGlhbF9hcmckMyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckNCA9IEN1cnJ5Ll8yKG9wdCwgYSwgMik7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50b3AodCQ1LCBDdXJyeS5fMShtZW1zeihzeiQx
LCBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmU4KHBhcnRpYWxfYXJnLCBwYXJhbSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAo
cGFyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmUxNihwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMu
dW5yZWFjaGFibGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KSwgbyksIEN1cnJ5Ll8xKG1lbXN6KHN6JDEsIGZ1bmN0aW9uIChwYXJhbSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9z
dG9yZTgocGFydGlhbF9hcmckMiwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMTYocGFy
dGlhbF9hcmckMywgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMzIocGFydGlhbF9hcmck
NCwgcGFyYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSks
IG8pKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgfSh0
JDUsc3okMSkpXSk7CisgICAgICAgIGNhc2UgMzggOiAKKyAgICAgICAgICAgIHZhciBzJDUgPSBM
ZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgNyB8IDAsIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKKyAgICAgICAgICAgIHJl
dHVybiAvKiBPRkZTRVRfRVFfTkFUICovQmxvY2suX18oOCwgW3MkNV0pOworICAgICAgICBjYXNl
IDM5IDogCisgICAgICAgICAgICB2YXIgcyQ2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEs
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDYgfCAwLCBsZXhidWYkMVsvKiBsZXhf
Y3Vycl9wb3MgKi81XSk7CisgICAgICAgICAgICByZXR1cm4gLyogQUxJR05fRVFfTkFUICovQmxv
Y2suX18oOSwgW3MkNl0pOworICAgICAgICBjYXNlIDQwIDogCisgICAgICAgICAgICB2YXIgdCQ2
ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAg
ICAgcmV0dXJuIC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtpbnRvcCh0JDYsIE9wZXJhdG9ycy5p
MzJfY2x6LCBPcGVyYXRvcnMuaTY0X2NseildKTsKKyAgICAgICAgY2FzZSA0MSA6IAorICAgICAg
ICAgICAgdmFyIHQkNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAw
KTsKKyAgICAgICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbaW50b3AodCQ3
LCBPcGVyYXRvcnMuaTMyX2N0eiwgT3BlcmF0b3JzLmk2NF9jdHopXSk7CisgICAgICAgIGNhc2Ug
NDIgOiAKKyAgICAgICAgICAgIHZhciB0JDggPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygx
MSwgW2ludG9wKHQkOCwgT3BlcmF0b3JzLmkzMl9wb3BjbnQsIE9wZXJhdG9ycy5pNjRfcG9wY250
KV0pOworICAgICAgICBjYXNlIDQzIDogCisgICAgICAgICAgICB2YXIgdCQ5ID0gTGV4aW5nLnN1
Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVm
JDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8q
IFVOQVJZICovQmxvY2suX18oMTEsIFtmbG9hdG9wKHQkOSwgT3BlcmF0b3JzLmYzMl9uZWcsIE9w
ZXJhdG9ycy5mNjRfbmVnKV0pOworICAgICAgICBjYXNlIDQ0IDogCisgICAgICAgICAgICB2YXIg
dCQxMCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbZmxvYXRvcCh0JDEwLCBPcGVy
YXRvcnMuZjMyX2FicywgT3BlcmF0b3JzLmY2NF9hYnMpXSk7CisgICAgICAgIGNhc2UgNDUgOiAK
KyAgICAgICAgICAgIHZhciB0JDExID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtm
bG9hdG9wKHQkMTEsIE9wZXJhdG9ycy5mMzJfc3FydCwgT3BlcmF0b3JzLmY2NF9zcXJ0KV0pOwor
ICAgICAgICBjYXNlIDQ2IDogCisgICAgICAgICAgICB2YXIgdCQxMiA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBVTkFS
WSAqL0Jsb2NrLl9fKDExLCBbZmxvYXRvcCh0JDEyLCBPcGVyYXRvcnMuZjMyX2NlaWwsIE9wZXJh
dG9ycy5mNjRfY2VpbCldKTsKKyAgICAgICAgY2FzZSA0NyA6IAorICAgICAgICAgICAgdmFyIHQk
MTMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3AodCQxMywgT3BlcmF0
b3JzLmYzMl9mbG9vciwgT3BlcmF0b3JzLmY2NF9mbG9vcildKTsKKyAgICAgICAgY2FzZSA0OCA6
IAorICAgICAgICAgICAgdmFyIHQkMTQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwg
W2Zsb2F0b3AodCQxNCwgT3BlcmF0b3JzLmYzMl90cnVuYywgT3BlcmF0b3JzLmY2NF90cnVuYyld
KTsKKyAgICAgICAgY2FzZSA0OSA6IAorICAgICAgICAgICAgdmFyIHQkMTUgPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyog
VU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3AodCQxNSwgT3BlcmF0b3JzLmYzMl9uZWFyZXN0
LCBPcGVyYXRvcnMuZjY0X25lYXJlc3QpXSk7CisgICAgICAgIGNhc2UgNTAgOiAKKyAgICAgICAg
ICAgIHZhciB0JDE2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQx
NiwgT3BlcmF0b3JzLmkzMl9hZGQsIE9wZXJhdG9ycy5pNjRfYWRkKV0pOworICAgICAgICBjYXNl
IDUxIDogCisgICAgICAgICAgICB2YXIgdCQxNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQx
LCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9CbG9jay5f
XygxMiwgW2ludG9wKHQkMTcsIE9wZXJhdG9ycy5pMzJfc3ViLCBPcGVyYXRvcnMuaTY0X3N1Yild
KTsKKyAgICAgICAgY2FzZSA1MiA6IAorICAgICAgICAgICAgdmFyIHQkMTggPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyog
QklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDE4LCBPcGVyYXRvcnMuaTMyX211bCwgT3Bl
cmF0b3JzLmk2NF9tdWwpXSk7CisgICAgICAgIGNhc2UgNTMgOiAKKyAgICAgICAgICAgIHZhciB0
JDE5ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAg
ICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQxOSwgT3BlcmF0
b3JzLmkzMl9kaXZfcywgT3BlcmF0b3JzLmk2NF9kaXZfcyldKTsKKyAgICAgICAgY2FzZSA1NCA6
IAorICAgICAgICAgICAgdmFyIHQkMjAgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIs
IFtpbnRvcCh0JDIwLCBPcGVyYXRvcnMuaTMyX2Rpdl91LCBPcGVyYXRvcnMuaTY0X2Rpdl91KV0p
OworICAgICAgICBjYXNlIDU1IDogCisgICAgICAgICAgICB2YXIgdCQyMSA9IExleGluZy5zdWJf
bGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQx
Wy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBC
SU5BUlkgKi9CbG9jay5fXygxMiwgW2ludG9wKHQkMjEsIE9wZXJhdG9ycy5pMzJfcmVtX3MsIE9w
ZXJhdG9ycy5pNjRfcmVtX3MpXSk7CisgICAgICAgIGNhc2UgNTYgOiAKKyAgICAgICAgICAgIHZh
ciB0JDIyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAg
ICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyMiwgT3Bl
cmF0b3JzLmkzMl9yZW1fdSwgT3BlcmF0b3JzLmk2NF9yZW1fdSldKTsKKyAgICAgICAgY2FzZSA1
NyA6IAorICAgICAgICAgICAgdmFyIHQkMjMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18o
MTIsIFtpbnRvcCh0JDIzLCBPcGVyYXRvcnMuaTMyX2FuZCwgT3BlcmF0b3JzLmk2NF9hbmQpXSk7
CisgICAgICAgIGNhc2UgNTggOiAKKyAgICAgICAgICAgIHZhciB0JDI0ID0gTGV4aW5nLnN1Yl9s
ZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJ
TkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyNCwgT3BlcmF0b3JzLmkzMl9vciwgT3BlcmF0
b3JzLmk2NF9vcildKTsKKyAgICAgICAgY2FzZSA1OSA6IAorICAgICAgICAgICAgdmFyIHQkMjUg
PSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDI1LCBPcGVyYXRvcnMu
aTMyX3hvciwgT3BlcmF0b3JzLmk2NF94b3IpXSk7CisgICAgICAgIGNhc2UgNjAgOiAKKyAgICAg
ICAgICAgIHZhciB0JDI2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8
IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3Ao
dCQyNiwgT3BlcmF0b3JzLmkzMl9zaGwsIE9wZXJhdG9ycy5pNjRfc2hsKV0pOworICAgICAgICBj
YXNlIDYxIDogCisgICAgICAgICAgICB2YXIgdCQyNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9CbG9j
ay5fXygxMiwgW2ludG9wKHQkMjcsIE9wZXJhdG9ycy5pMzJfc2hyX3MsIE9wZXJhdG9ycy5pNjRf
c2hyX3MpXSk7CisgICAgICAgIGNhc2UgNjIgOiAKKyAgICAgICAgICAgIHZhciB0JDI4ID0gTGV4
aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0
dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyOCwgT3BlcmF0b3JzLmkzMl9z
aHJfdSwgT3BlcmF0b3JzLmk2NF9zaHJfdSldKTsKKyAgICAgICAgY2FzZSA2MyA6IAorICAgICAg
ICAgICAgdmFyIHQkMjkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwg
MCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0
JDI5LCBPcGVyYXRvcnMuaTMyX3JvdGwsIE9wZXJhdG9ycy5pNjRfcm90bCldKTsKKyAgICAgICAg
Y2FzZSA2NCA6IAorICAgICAgICAgICAgdmFyIHQkMzAgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhi
dWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3Rh
cnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxv
Y2suX18oMTIsIFtpbnRvcCh0JDMwLCBPcGVyYXRvcnMuaTMyX3JvdHIsIE9wZXJhdG9ycy5pNjRf
cm90cildKTsKKyAgICAgICAgY2FzZSA2NSA6IAorICAgICAgICAgICAgdmFyIHQkMzEgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1
cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzEsIE9wZXJhdG9ycy5mMzJf
YWRkLCBPcGVyYXRvcnMuZjY0X2FkZCldKTsKKyAgICAgICAgY2FzZSA2NiA6IAorICAgICAgICAg
ICAgdmFyIHQkMzIgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQk
MzIsIE9wZXJhdG9ycy5mMzJfc3ViLCBPcGVyYXRvcnMuZjY0X3N1YildKTsKKyAgICAgICAgY2Fz
ZSA2NyA6IAorICAgICAgICAgICAgdmFyIHQkMzMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYk
MSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2su
X18oMTIsIFtmbG9hdG9wKHQkMzMsIE9wZXJhdG9ycy5mMzJfbXVsLCBPcGVyYXRvcnMuZjY0X211
bCldKTsKKyAgICAgICAgY2FzZSA2OCA6IAorICAgICAgICAgICAgdmFyIHQkMzQgPSBMZXhpbmcu
c3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhi
dWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4g
LyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzQsIE9wZXJhdG9ycy5mMzJfZGl2
LCBPcGVyYXRvcnMuZjY0X2RpdildKTsKKyAgICAgICAgY2FzZSA2OSA6IAorICAgICAgICAgICAg
dmFyIHQkMzUgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzUs
IE9wZXJhdG9ycy5mMzJfbWluLCBPcGVyYXRvcnMuZjY0X21pbildKTsKKyAgICAgICAgY2FzZSA3
MCA6IAorICAgICAgICAgICAgdmFyIHQkMzYgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18o
MTIsIFtmbG9hdG9wKHQkMzYsIE9wZXJhdG9ycy5mMzJfbWF4LCBPcGVyYXRvcnMuZjY0X21heCld
KTsKKyAgICAgICAgY2FzZSA3MSA6IAorICAgICAgICAgICAgdmFyIHQkMzcgPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyog
QklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzcsIE9wZXJhdG9ycy5mMzJfY29weXNp
Z24sIE9wZXJhdG9ycy5mNjRfY29weXNpZ24pXSk7CisgICAgICAgIGNhc2UgNzIgOiAKKyAgICAg
ICAgICAgIHZhciB0JDM4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8
IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIFRFU1QgKi9CbG9jay5fXygxNSwgW2ludG9wKHQk
MzgsIE9wZXJhdG9ycy5pMzJfZXF6LCBPcGVyYXRvcnMuaTY0X2VxeildKTsKKyAgICAgICAgY2Fz
ZSA3MyA6IAorICAgICAgICAgICAgdmFyIHQkMzkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYk
MSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2Nr
Ll9fKDEzLCBbaW50b3AodCQzOSwgT3BlcmF0b3JzLmkzMl9lcSwgT3BlcmF0b3JzLmk2NF9lcSld
KTsKKyAgICAgICAgY2FzZSA3NCA6IAorICAgICAgICAgICAgdmFyIHQkNDAgPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyog
Q09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0MCwgT3BlcmF0b3JzLmkzMl9uZSwgT3Bl
cmF0b3JzLmk2NF9uZSldKTsKKyAgICAgICAgY2FzZSA3NSA6IAorICAgICAgICAgICAgdmFyIHQk
NDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0MSwgT3BlcmF0
b3JzLmkzMl9sdF9zLCBPcGVyYXRvcnMuaTY0X2x0X3MpXSk7CisgICAgICAgIGNhc2UgNzYgOiAK
KyAgICAgICAgICAgIHZhciB0JDQyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywg
W2ludG9wKHQkNDIsIE9wZXJhdG9ycy5pMzJfbHRfdSwgT3BlcmF0b3JzLmk2NF9sdF91KV0pOwor
ICAgICAgICBjYXNlIDc3IDogCisgICAgICAgICAgICB2YXIgdCQ0MyA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT01Q
QVJFICovQmxvY2suX18oMTMsIFtpbnRvcCh0JDQzLCBPcGVyYXRvcnMuaTMyX2xlX3MsIE9wZXJh
dG9ycy5pNjRfbGVfcyldKTsKKyAgICAgICAgY2FzZSA3OCA6IAorICAgICAgICAgICAgdmFyIHQk
NDQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0NCwgT3BlcmF0
b3JzLmkzMl9sZV91LCBPcGVyYXRvcnMuaTY0X2xlX3UpXSk7CisgICAgICAgIGNhc2UgNzkgOiAK
KyAgICAgICAgICAgIHZhciB0JDQ1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywg
W2ludG9wKHQkNDUsIE9wZXJhdG9ycy5pMzJfZ3RfcywgT3BlcmF0b3JzLmk2NF9ndF9zKV0pOwor
ICAgICAgICBjYXNlIDgwIDogCisgICAgICAgICAgICB2YXIgdCQ0NiA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT01Q
QVJFICovQmxvY2suX18oMTMsIFtpbnRvcCh0JDQ2LCBPcGVyYXRvcnMuaTMyX2d0X3UsIE9wZXJh
dG9ycy5pNjRfZ3RfdSldKTsKKyAgICAgICAgY2FzZSA4MSA6IAorICAgICAgICAgICAgdmFyIHQk
NDcgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0NywgT3BlcmF0
b3JzLmkzMl9nZV9zLCBPcGVyYXRvcnMuaTY0X2dlX3MpXSk7CisgICAgICAgIGNhc2UgODIgOiAK
KyAgICAgICAgICAgIHZhciB0JDQ4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRd
ICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywg
W2ludG9wKHQkNDgsIE9wZXJhdG9ycy5pMzJfZ2VfdSwgT3BlcmF0b3JzLmk2NF9nZV91KV0pOwor
ICAgICAgICBjYXNlIDgzIDogCisgICAgICAgICAgICB2YXIgdCQ0OSA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT01Q
QVJFICovQmxvY2suX18oMTMsIFtmbG9hdG9wKHQkNDksIE9wZXJhdG9ycy5mMzJfZXEsIE9wZXJh
dG9ycy5mNjRfZXEpXSk7CisgICAgICAgIGNhc2UgODQgOiAKKyAgICAgICAgICAgIHZhciB0JDUw
ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAg
ICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2Zsb2F0b3AodCQ1MCwgT3BlcmF0
b3JzLmYzMl9uZSwgT3BlcmF0b3JzLmY2NF9uZSldKTsKKyAgICAgICAgY2FzZSA4NSA6IAorICAg
ICAgICAgICAgdmFyIHQkNTEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAz
IHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbZmxv
YXRvcCh0JDUxLCBPcGVyYXRvcnMuZjMyX2x0LCBPcGVyYXRvcnMuZjY0X2x0KV0pOworICAgICAg
ICBjYXNlIDg2IDogCisgICAgICAgICAgICB2YXIgdCQ1MiA9IExleGluZy5zdWJfbGV4ZW1lKGxl
eGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9z
dGFydF9wb3MgKi80XSArIDMgfCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT01QQVJFICov
QmxvY2suX18oMTMsIFtmbG9hdG9wKHQkNTIsIE9wZXJhdG9ycy5mMzJfbGUsIE9wZXJhdG9ycy5m
NjRfbGUpXSk7CisgICAgICAgIGNhc2UgODcgOiAKKyAgICAgICAgICAgIHZhciB0JDUzID0gTGV4
aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0
dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2Zsb2F0b3AodCQ1MywgT3BlcmF0b3JzLmYz
Ml9ndCwgT3BlcmF0b3JzLmY2NF9ndCldKTsKKyAgICAgICAgY2FzZSA4OCA6IAorICAgICAgICAg
ICAgdmFyIHQkNTQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbZmxvYXRvcCh0
JDU0LCBPcGVyYXRvcnMuZjMyX2dlLCBPcGVyYXRvcnMuZjY0X2dlKV0pOworICAgICAgICBjYXNl
IDg5IDogCisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbT3Bl
cmF0b3JzLmkzMl93cmFwX2k2NF0pOworICAgICAgICBjYXNlIDkwIDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbT3BlcmF0b3JzLmk2NF9leHRlbmRfc19p
MzJdKTsKKyAgICAgICAgY2FzZSA5MSA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQg
Ki9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5pNjRfZXh0ZW5kX3VfaTMyXSk7CisgICAgICAgIGNh
c2UgOTIgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtP
cGVyYXRvcnMuZjMyX2RlbW90ZV9mNjRdKTsKKyAgICAgICAgY2FzZSA5MyA6IAorICAgICAgICAg
ICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5mNjRfcHJvbW90
ZV9mMzJdKTsKKyAgICAgICAgY2FzZSA5NCA6IAorICAgICAgICAgICAgdmFyIHQkNTUgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1
cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1NSwgT3BlcmF0b3JzLmkzMl90
cnVuY19zX2YzMiwgT3BlcmF0b3JzLmk2NF90cnVuY19zX2YzMildKTsKKyAgICAgICAgY2FzZSA5
NSA6IAorICAgICAgICAgICAgdmFyIHQkNTYgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9f
KDE0LCBbaW50b3AodCQ1NiwgT3BlcmF0b3JzLmkzMl90cnVuY191X2YzMiwgT3BlcmF0b3JzLmk2
NF90cnVuY191X2YzMildKTsKKyAgICAgICAgY2FzZSA5NiA6IAorICAgICAgICAgICAgdmFyIHQk
NTcgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1NywgT3BlcmF0
b3JzLmkzMl90cnVuY19zX2Y2NCwgT3BlcmF0b3JzLmk2NF90cnVuY19zX2Y2NCldKTsKKyAgICAg
ICAgY2FzZSA5NyA6IAorICAgICAgICAgICAgdmFyIHQkNTggPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAq
L0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1OCwgT3BlcmF0b3JzLmkzMl90cnVuY191X2Y2NCwgT3Bl
cmF0b3JzLmk2NF90cnVuY191X2Y2NCldKTsKKyAgICAgICAgY2FzZSA5OCA6IAorICAgICAgICAg
ICAgdmFyIHQkNTkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7
CisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbZmxvYXRvcCh0
JDU5LCBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfc19pMzIsIE9wZXJhdG9ycy5mNjRfY29udmVydF9z
X2kzMildKTsKKyAgICAgICAgY2FzZSA5OSA6IAorICAgICAgICAgICAgdmFyIHQkNjAgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7CisgICAgICAgICAgICByZXR1
cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbZmxvYXRvcCh0JDYwLCBPcGVyYXRvcnMuZjMy
X2NvbnZlcnRfdV9pMzIsIE9wZXJhdG9ycy5mNjRfY29udmVydF91X2kzMildKTsKKyAgICAgICAg
Y2FzZSAxMDAgOiAKKyAgICAgICAgICAgIHZhciB0JDYxID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4
YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgMyB8IDApOworICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9C
bG9jay5fXygxNCwgW2Zsb2F0b3AodCQ2MSwgT3BlcmF0b3JzLmYzMl9jb252ZXJ0X3NfaTY0LCBP
cGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pNjQpXSk7CisgICAgICAgIGNhc2UgMTAxIDogCisgICAg
ICAgICAgICB2YXIgdCQ2MiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMg
fCAwKTsKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtmbG9h
dG9wKHQkNjIsIE9wZXJhdG9ycy5mMzJfY29udmVydF91X2k2NCwgT3BlcmF0b3JzLmY2NF9jb252
ZXJ0X3VfaTY0KV0pOworICAgICAgICBjYXNlIDEwMiA6IAorICAgICAgICAgICAgcmV0dXJuIC8q
IENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5mMzJfcmVpbnRlcnByZXRfaTMyXSk7
CisgICAgICAgIGNhc2UgMTAzIDogCisgICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Js
b2NrLl9fKDE0LCBbT3BlcmF0b3JzLmY2NF9yZWludGVycHJldF9pNjRdKTsKKyAgICAgICAgY2Fz
ZSAxMDQgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtP
cGVyYXRvcnMuaTMyX3JlaW50ZXJwcmV0X2YzMl0pOworICAgICAgICBjYXNlIDEwNSA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5pNjRf
cmVpbnRlcnByZXRfZjY0XSk7CisgICAgICAgIGNhc2UgMTA2IDogCisgICAgICAgICAgICByZXR1
cm4gLyogQ1VSUkVOVF9NRU1PUlkgKi8yNTsKKyAgICAgICAgY2FzZSAxMDcgOiAKKyAgICAgICAg
ICAgIHJldHVybiAvKiBHUk9XX01FTU9SWSAqLzI2OworICAgICAgICBjYXNlIDEwOCA6IAorICAg
ICAgICAgICAgcmV0dXJuIC8qIFRZUEUgKi8yOTsKKyAgICAgICAgY2FzZSAxMDkgOiAKKyAgICAg
ICAgICAgIHJldHVybiAvKiBGVU5DICovMjc7CisgICAgICAgIGNhc2UgMTEwIDogCisgICAgICAg
ICAgICByZXR1cm4gLyogU1RBUlQgKi8yODsKKyAgICAgICAgY2FzZSAxMTEgOiAKKyAgICAgICAg
ICAgIHJldHVybiAvKiBQQVJBTSAqLzMwOworICAgICAgICBjYXNlIDExMiA6IAorICAgICAgICAg
ICAgcmV0dXJuIC8qIFJFU1VMVCAqLzMxOworICAgICAgICBjYXNlIDExMyA6IAorICAgICAgICAg
ICAgcmV0dXJuIC8qIExPQ0FMICovMzI7CisgICAgICAgIGNhc2UgMTE0IDogCisgICAgICAgICAg
ICByZXR1cm4gLyogR0xPQkFMICovMzM7CisgICAgICAgIGNhc2UgMTE1IDogCisgICAgICAgICAg
ICByZXR1cm4gLyogTU9EVUxFICovMzQ7CisgICAgICAgIGNhc2UgMTE2IDogCisgICAgICAgICAg
ICByZXR1cm4gLyogVEFCTEUgKi8zNTsKKyAgICAgICAgY2FzZSAxMTcgOiAKKyAgICAgICAgICAg
IHJldHVybiAvKiBNRU1PUlkgKi8zNzsKKyAgICAgICAgY2FzZSAxMTggOiAKKyAgICAgICAgICAg
IHJldHVybiAvKiBFTEVNICovMzY7CisgICAgICAgIGNhc2UgMTE5IDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogREFUQSAqLzM4OworICAgICAgICBjYXNlIDEyMCA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIE9GRlNFVCAqLzM5OworICAgICAgICBjYXNlIDEyMSA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIElNUE9SVCAqLzQwOworICAgICAgICBjYXNlIDEyMiA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIEVYUE9SVCAqLzQxOworICAgICAgICBjYXNlIDEyMyA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIFNDUklQVCAqLzQyOworICAgICAgICBjYXNlIDEyNCA6IAorICAgICAgICAgICAgcmV0
dXJuIC8qIFJFR0lTVEVSICovNDM7CisgICAgICAgIGNhc2UgMTI1IDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogSU5WT0tFICovNDQ7CisgICAgICAgIGNhc2UgMTI2IDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogR0VUICovNDU7CisgICAgICAgIGNhc2UgMTI3IDogCisgICAgICAgICAgICByZXR1
cm4gLyogQVNTRVJUX01BTEZPUk1FRCAqLzQ2OworICAgICAgICBjYXNlIDEyOCA6IAorICAgICAg
ICAgICAgcmV0dXJuIC8qIEFTU0VSVF9JTlZBTElEICovNDc7CisgICAgICAgIGNhc2UgMTI5IDog
CisgICAgICAgICAgICByZXR1cm4gLyogQVNTRVJUX1NPRlRfSU5WQUxJRCAqLzQ4OworICAgICAg
ICBjYXNlIDEzMCA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEFTU0VSVF9VTkxJTktBQkxFICov
NDk7CisgICAgICAgIGNhc2UgMTMxIDogCisgICAgICAgICAgICByZXR1cm4gLyogQVNTRVJUX1JF
VFVSTiAqLzUwOworICAgICAgICBjYXNlIDEzMiA6IAorICAgICAgICAgICAgcmV0dXJuIC8qIEFT
U0VSVF9SRVRVUk5fTkFOICovNTE7CisgICAgICAgIGNhc2UgMTMzIDogCisgICAgICAgICAgICBy
ZXR1cm4gLyogQVNTRVJUX1RSQVAgKi81MjsKKyAgICAgICAgY2FzZSAxMzQgOiAKKyAgICAgICAg
ICAgIHJldHVybiAvKiBBU1NFUlRfRVhIQVVTVElPTiAqLzUzOworICAgICAgICBjYXNlIDEzNSA6
IAorICAgICAgICAgICAgcmV0dXJuIC8qIElOUFVUICovNTQ7CisgICAgICAgIGNhc2UgMTM2IDog
CisgICAgICAgICAgICByZXR1cm4gLyogT1VUUFVUICovNTU7CisgICAgICAgIGNhc2UgMTM3IDog
CisgICAgICAgICAgICB2YXIgcyQ3ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1
ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X2N1cnJfcG9zICovNV0p
OworICAgICAgICAgICAgcmV0dXJuIC8qIFZBUiAqL0Jsb2NrLl9fKDQsIFtzJDddKTsKKyAgICAg
ICAgY2FzZSAxNDAgOiAKKyAgICAgICAgICAgIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjKExleGlu
Zy5sZXhlbWVfc3RhcnRfcChsZXhidWYkMSksIGxleGJ1ZiQxLCA2ODQpOworICAgICAgICAgICAg
cmV0dXJuIHRva2VuKGxleGJ1ZiQxKTsKKyAgICAgICAgY2FzZSAxNDEgOiAKKyAgICAgICAgICAg
IHJldHVybiB0b2tlbihsZXhidWYkMSk7CisgICAgICAgIGNhc2UgMTM5IDogCisgICAgICAgIGNh
c2UgMTQyIDogCisgICAgICAgICAgICBMZXhpbmcubmV3X2xpbmUobGV4YnVmJDEpOworICAgICAg
ICAgICAgcmV0dXJuIHRva2VuKGxleGJ1ZiQxKTsKKyAgICAgICAgY2FzZSAxMzggOiAKKyAgICAg
ICAgY2FzZSAxNDMgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiBFT0YgKi81NjsKKyAgICAgICAg
Y2FzZSAxNDQgOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihsZXhidWYkMSwgInVua25vd24g
b3BlcmF0b3IiKTsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitmdW5jdGlv
biBfX29jYW1sX2xleF9jb21tZW50X3JlYyhzdGFydCwgbGV4YnVmLCBfX19vY2FtbF9sZXhfc3Rh
dGUpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBfX29jYW1sX2xleF9zdGF0ZSA9IF9fX29j
YW1sX2xleF9zdGF0ZTsKKyAgICB2YXIgX19vY2FtbF9sZXhfc3RhdGUkMSA9IExleGluZy5lbmdp
bmUoX19vY2FtbF9sZXhfdGFibGVzLCBfX29jYW1sX2xleF9zdGF0ZSwgbGV4YnVmKTsKKyAgICBp
ZiAoX19vY2FtbF9sZXhfc3RhdGUkMSA+IDQgfHwgX19vY2FtbF9sZXhfc3RhdGUkMSA8IDApIHsK
KyAgICAgIEN1cnJ5Ll8xKGxleGJ1ZlsvKiByZWZpbGxfYnVmZiAqLzBdLCBsZXhidWYpOworICAg
ICAgX19fb2NhbWxfbGV4X3N0YXRlID0gX19vY2FtbF9sZXhfc3RhdGUkMTsKKyAgICAgIGNvbnRp
bnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN3aXRjaCAoX19vY2FtbF9s
ZXhfc3RhdGUkMSkgeworICAgICAgICBjYXNlIDAgOiAKKyAgICAgICAgICAgIHJldHVybiAvKiAo
KSAqLzA7CisgICAgICAgIGNhc2UgMSA6IAorICAgICAgICAgICAgX19vY2FtbF9sZXhfY29tbWVu
dF9yZWMoTGV4aW5nLmxleGVtZV9zdGFydF9wKGxleGJ1ZiksIGxleGJ1ZiwgNjg0KTsKKyAgICAg
ICAgICAgIF9fX29jYW1sX2xleF9zdGF0ZSA9IDY4NDsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsK
KyAgICAgICAgICAgIGNhc2UgMiA6IAorICAgICAgICAgICAgTGV4aW5nLm5ld19saW5lKGxleGJ1
Zik7CisgICAgICAgICAgICBfX19vY2FtbF9sZXhfc3RhdGUgPSA2ODQ7CisgICAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDMgOiAKKyAgICAgICAgICAgIHJldHVybiBlcnJv
cl9uZXN0KHN0YXJ0LCBsZXhidWYsICJ1bmNsb3NlZCBjb21tZW50Iik7CisgICAgICAgIGNhc2Ug
NCA6IAorICAgICAgICAgICAgX19fb2NhbWxfbGV4X3N0YXRlID0gNjg0OworICAgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgICAgCisgICAgICB9CisgICAgfQorICB9OworfQorCitleHBv
cnRzLmNvbnZlcnRfcG9zID0gY29udmVydF9wb3M7CitleHBvcnRzLnRva2VuICAgICAgID0gdG9r
ZW47CisvKiBGMzIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBsZXhlci5q
cyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5
WydsZXhpbmcnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8v
Ly8vIHN0YXJ0IG9mIGxleGluZy5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgU3lz
ICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3N5cyIpOwordmFyIEJ5dGVzICAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9ieXRlcyIpOwordmFyIEN1cnJ5ICAgICAgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIENhbWxfYnl0ZXMgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9jYW1sX2J5dGVzIik7Cit2YXIgQ2FtbF9sZXhlciAgICAgICAgICAgICAg
PSByZXF1aXJlKCIuL2NhbWxfbGV4ZXIiKTsKK3ZhciBQZXJ2YXNpdmVzICAgICAgICAgICAgICA9
IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxfc3RyaW5nICAgICAgICAgICAgID0g
cmVxdWlyZSgiLi9jYW1sX3N0cmluZyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0g
cmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitmdW5jdGlvbiBlbmdpbmUo
dGJsLCBzdGF0ZSwgYnVmKSB7CisgIHZhciByZXN1bHQgPSBDYW1sX2xleGVyLmNhbWxfbGV4X2Vu
Z2luZSh0YmwsIHN0YXRlLCBidWYpOworICBpZiAocmVzdWx0ID49IDApIHsKKyAgICBidWZbLyog
bGV4X3N0YXJ0X3AgKi8xMF0gPSBidWZbLyogbGV4X2N1cnJfcCAqLzExXTsKKyAgICB2YXIgaW5p
dCA9IGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdOworICAgIGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFd
ID0gLyogcmVjb3JkICovWworICAgICAgLyogcG9zX2ZuYW1lICovaW5pdFsvKiBwb3NfZm5hbWUg
Ki8wXSwKKyAgICAgIC8qIHBvc19sbnVtICovaW5pdFsvKiBwb3NfbG51bSAqLzFdLAorICAgICAg
LyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJdLAorICAgICAgLyogcG9zX2NudW0gKi9i
dWZbLyogbGV4X2Fic19wb3MgKi8zXSArIGJ1ZlsvKiBsZXhfY3Vycl9wb3MgKi81XSB8IDAKKyAg
ICBdOworICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIG5ld19lbmdpbmUodGJs
LCBzdGF0ZSwgYnVmKSB7CisgIHZhciByZXN1bHQgPSBDYW1sX2xleGVyLmNhbWxfbmV3X2xleF9l
bmdpbmUodGJsLCBzdGF0ZSwgYnVmKTsKKyAgaWYgKHJlc3VsdCA+PSAwKSB7CisgICAgYnVmWy8q
IGxleF9zdGFydF9wICovMTBdID0gYnVmWy8qIGxleF9jdXJyX3AgKi8xMV07CisgICAgdmFyIGlu
aXQgPSBidWZbLyogbGV4X2N1cnJfcCAqLzExXTsKKyAgICBidWZbLyogbGV4X2N1cnJfcCAqLzEx
XSA9IC8qIHJlY29yZCAqL1sKKyAgICAgIC8qIHBvc19mbmFtZSAqL2luaXRbLyogcG9zX2ZuYW1l
ICovMF0sCisgICAgICAvKiBwb3NfbG51bSAqL2luaXRbLyogcG9zX2xudW0gKi8xXSwKKyAgICAg
IC8qIHBvc19ib2wgKi9pbml0Wy8qIHBvc19ib2wgKi8yXSwKKyAgICAgIC8qIHBvc19jbnVtICov
YnVmWy8qIGxleF9hYnNfcG9zICovM10gKyBidWZbLyogbGV4X2N1cnJfcG9zICovNV0gfCAwCisg
ICAgXTsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCit2YXIgemVyb19wb3MgPSAvKiByZWNv
cmQgKi9bCisgIC8qIHBvc19mbmFtZSAqLyIiLAorICAvKiBwb3NfbG51bSAqLzEsCisgIC8qIHBv
c19ib2wgKi8wLAorICAvKiBwb3NfY251bSAqLzAKK107CisKK2Z1bmN0aW9uIGZyb21fZnVuY3Rp
b24oZikgeworICB2YXIgcGFydGlhbF9hcmcgPSBuZXcgQXJyYXkoNTEyKTsKKyAgcmV0dXJuIC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAvKiByZWZpbGxfYnVmZiAqL2Z1bmN0aW9uIChwYXJhbSkg
eworICAgICAgICAgICAgdmFyIHJlYWRfZnVuID0gZjsKKyAgICAgICAgICAgIHZhciBhdXhfYnVm
ZmVyID0gcGFydGlhbF9hcmc7CisgICAgICAgICAgICB2YXIgbGV4YnVmID0gcGFyYW07CisgICAg
ICAgICAgICB2YXIgcmVhZCA9IEN1cnJ5Ll8yKHJlYWRfZnVuLCBhdXhfYnVmZmVyLCBhdXhfYnVm
ZmVyLmxlbmd0aCk7CisgICAgICAgICAgICB2YXIgbiA9IHJlYWQgPiAwID8gcmVhZCA6IChsZXhi
dWZbLyogbGV4X2VvZl9yZWFjaGVkICovOF0gPSAvKiB0cnVlICovMSwgMCk7CisgICAgICAgICAg
ICBpZiAoKGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdICsgbiB8IDApID4gbGV4YnVmWy8q
IGxleF9idWZmZXIgKi8xXS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgaWYgKCgobGV4YnVmWy8q
IGxleF9idWZmZXJfbGVuICovMl0gLSBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdIHwgMCkg
KyBuIHwgMCkgPD0gbGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXS5sZW5ndGgpIHsKKyAgICAgICAg
ICAgICAgICBCeXRlcy5ibGl0KGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGxleGJ1ZlsvKiBs
ZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIDAsIGxleGJ1Zlsv
KiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSB8IDAp
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IHZhciBuZXdsZW4gPSBQZXJ2YXNpdmVzLm1pbigobGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXS5s
ZW5ndGggPDwgMSksIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCk7CisgICAgICAgICAgICAgICAgaWYg
KCgobGV4YnVmWy8qIGxleF9idWZmZXJfbGVuICovMl0gLSBsZXhidWZbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdIHwgMCkgKyBuIHwgMCkgPiBuZXdsZW4pIHsKKyAgICAgICAgICAgICAgICAgIHRocm93
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAiTGV4aW5nLmxleF9yZWZpbGw6IGNhbm5vdCBn
cm93IGJ1ZmZlciIKKyAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB2YXIgbmV3YnVmID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3Ry
aW5nKG5ld2xlbik7CisgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdChsZXhidWZbLyogbGV4X2J1
ZmZlciAqLzFdLCBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBuZXdidWYsIDAsIGxleGJ1
ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSB8
IDApOworICAgICAgICAgICAgICAgIGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0gPSBuZXdidWY7
CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgdmFyIHMgPSBsZXhidWZbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdOworICAgICAgICAgICAgICBsZXhidWZbLyogbGV4X2Fic19wb3MgKi8zXSA9
IGxleGJ1ZlsvKiBsZXhfYWJzX3BvcyAqLzNdICsgcyB8IDA7CisgICAgICAgICAgICAgIGxleGJ1
ZlsvKiBsZXhfY3Vycl9wb3MgKi81XSA9IGxleGJ1ZlsvKiBsZXhfY3Vycl9wb3MgKi81XSAtIHMg
fCAwOworICAgICAgICAgICAgICBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdID0gMDsKKyAg
ICAgICAgICAgICAgbGV4YnVmWy8qIGxleF9sYXN0X3BvcyAqLzZdID0gbGV4YnVmWy8qIGxleF9s
YXN0X3BvcyAqLzZdIC0gcyB8IDA7CisgICAgICAgICAgICAgIGxleGJ1ZlsvKiBsZXhfYnVmZmVy
X2xlbiAqLzJdID0gbGV4YnVmWy8qIGxleF9idWZmZXJfbGVuICovMl0gLSBzIHwgMDsKKyAgICAg
ICAgICAgICAgdmFyIHQgPSBsZXhidWZbLyogbGV4X21lbSAqLzldOworICAgICAgICAgICAgICBm
b3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IHQubGVuZ3RoIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7
ICsraSl7CisgICAgICAgICAgICAgICAgdmFyIHYgPSB0W2ldOworICAgICAgICAgICAgICAgIGlm
ICh2ID49IDApIHsKKyAgICAgICAgICAgICAgICAgIHRbaV0gPSB2IC0gcyB8IDA7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBCeXRlcy5ibGl0KGF1eF9idWZmZXIsIDAsIGxleGJ1ZlsvKiBsZXhf
YnVmZmVyICovMV0sIGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdLCBuKTsKKyAgICAgICAg
ICAgIGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdID0gbGV4YnVmWy8qIGxleF9idWZmZXJf
bGVuICovMl0gKyBuIHwgMDsKKyAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgICAg
ICAgfSwKKyAgICAgICAgICAvKiBsZXhfYnVmZmVyICovbmV3IEFycmF5KDEwMjQpLAorICAgICAg
ICAgIC8qIGxleF9idWZmZXJfbGVuICovMCwKKyAgICAgICAgICAvKiBsZXhfYWJzX3BvcyAqLzAs
CisgICAgICAgICAgLyogbGV4X3N0YXJ0X3BvcyAqLzAsCisgICAgICAgICAgLyogbGV4X2N1cnJf
cG9zICovMCwKKyAgICAgICAgICAvKiBsZXhfbGFzdF9wb3MgKi8wLAorICAgICAgICAgIC8qIGxl
eF9sYXN0X2FjdGlvbiAqLzAsCisgICAgICAgICAgLyogbGV4X2VvZl9yZWFjaGVkIDogZmFsc2Ug
Ki8wLAorICAgICAgICAgIC8qIGxleF9tZW0gOiBpbnQgYXJyYXkgKi9bXSwKKyAgICAgICAgICAv
KiBsZXhfc3RhcnRfcCAqL3plcm9fcG9zLAorICAgICAgICAgIC8qIGxleF9jdXJyX3AgKi96ZXJv
X3BvcworICAgICAgICBdOworfQorCitmdW5jdGlvbiBmcm9tX2NoYW5uZWwoaWMpIHsKKyAgcmV0
dXJuIGZyb21fZnVuY3Rpb24oZnVuY3Rpb24gKGJ1ZiwgbikgeworICAgICAgICAgICAgICByZXR1
cm4gUGVydmFzaXZlcy5pbnB1dChpYywgYnVmLCAwLCBuKTsKKyAgICAgICAgICAgIH0pOworfQor
CitmdW5jdGlvbiBmcm9tX3N0cmluZyhzKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgLyogcmVmaWxsX2J1ZmYgKi9mdW5jdGlvbiAobGV4YnVmKSB7CisgICAgICAgICAgICBs
ZXhidWZbLyogbGV4X2VvZl9yZWFjaGVkICovOF0gPSAvKiB0cnVlICovMTsKKyAgICAgICAgICAg
IHJldHVybiAvKiAoKSAqLzA7CisgICAgICAgICAgfSwKKyAgICAgICAgICAvKiBsZXhfYnVmZmVy
ICovQnl0ZXMub2Zfc3RyaW5nKHMpLAorICAgICAgICAgIC8qIGxleF9idWZmZXJfbGVuICovcy5s
ZW5ndGgsCisgICAgICAgICAgLyogbGV4X2Fic19wb3MgKi8wLAorICAgICAgICAgIC8qIGxleF9z
dGFydF9wb3MgKi8wLAorICAgICAgICAgIC8qIGxleF9jdXJyX3BvcyAqLzAsCisgICAgICAgICAg
LyogbGV4X2xhc3RfcG9zICovMCwKKyAgICAgICAgICAvKiBsZXhfbGFzdF9hY3Rpb24gKi8wLAor
ICAgICAgICAgIC8qIGxleF9lb2ZfcmVhY2hlZCA6IHRydWUgKi8xLAorICAgICAgICAgIC8qIGxl
eF9tZW0gOiBpbnQgYXJyYXkgKi9bXSwKKyAgICAgICAgICAvKiBsZXhfc3RhcnRfcCAqL3plcm9f
cG9zLAorICAgICAgICAgIC8qIGxleF9jdXJyX3AgKi96ZXJvX3BvcworICAgICAgICBdOworfQor
CitmdW5jdGlvbiBsZXhlbWUobGV4YnVmKSB7CisgIHZhciBsZW4gPSBsZXhidWZbLyogbGV4X2N1
cnJfcG9zICovNV0gLSBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAqLzRdIHwgMDsKKyAgcmV0dXJu
IEJ5dGVzLnN1Yl9zdHJpbmcobGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXSwgbGV4YnVmWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGVuKTsKK30KKworZnVuY3Rpb24gc3ViX2xleGVtZShsZXhidWYs
IGkxLCBpMikgeworICB2YXIgbGVuID0gaTIgLSBpMSB8IDA7CisgIHJldHVybiBCeXRlcy5zdWJf
c3RyaW5nKGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGkxLCBsZW4pOworfQorCitmdW5jdGlv
biBzdWJfbGV4ZW1lX29wdChsZXhidWYsIGkxLCBpMikgeworICBpZiAoaTEgPj0gMCkgeworICAg
IHZhciBsZW4gPSBpMiAtIGkxIHwgMDsKKyAgICByZXR1cm4gLyogU29tZSAqL1tCeXRlcy5zdWJf
c3RyaW5nKGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGkxLCBsZW4pXTsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogTm9uZSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gc3ViX2xleGVt
ZV9jaGFyKGxleGJ1ZiwgaSkgeworICByZXR1cm4gQ2FtbF9ieXRlcy5nZXQobGV4YnVmWy8qIGxl
eF9idWZmZXIgKi8xXSwgaSk7Cit9CisKK2Z1bmN0aW9uIHN1Yl9sZXhlbWVfY2hhcl9vcHQobGV4
YnVmLCBpKSB7CisgIGlmIChpID49IDApIHsKKyAgICByZXR1cm4gLyogU29tZSAqL1tDYW1sX2J5
dGVzLmdldChsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdLCBpKV07CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGxleGVtZV9jaGFyKGxl
eGJ1ZiwgaSkgeworICByZXR1cm4gQ2FtbF9ieXRlcy5nZXQobGV4YnVmWy8qIGxleF9idWZmZXIg
Ki8xXSwgbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSArIGkgfCAwKTsKK30KKworZnVuY3Rp
b24gbGV4ZW1lX3N0YXJ0KGxleGJ1ZikgeworICByZXR1cm4gbGV4YnVmWy8qIGxleF9zdGFydF9w
ICovMTBdWy8qIHBvc19jbnVtICovM107Cit9CisKK2Z1bmN0aW9uIGxleGVtZV9lbmQobGV4YnVm
KSB7CisgIHJldHVybiBsZXhidWZbLyogbGV4X2N1cnJfcCAqLzExXVsvKiBwb3NfY251bSAqLzNd
OworfQorCitmdW5jdGlvbiBsZXhlbWVfc3RhcnRfcChsZXhidWYpIHsKKyAgcmV0dXJuIGxleGJ1
ZlsvKiBsZXhfc3RhcnRfcCAqLzEwXTsKK30KKworZnVuY3Rpb24gbGV4ZW1lX2VuZF9wKGxleGJ1
ZikgeworICByZXR1cm4gbGV4YnVmWy8qIGxleF9jdXJyX3AgKi8xMV07Cit9CisKK2Z1bmN0aW9u
IG5ld19saW5lKGxleGJ1ZikgeworICB2YXIgbGNwID0gbGV4YnVmWy8qIGxleF9jdXJyX3AgKi8x
MV07CisgIGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdID0gLyogcmVjb3JkICovWworICAgIC8q
IHBvc19mbmFtZSAqL2xjcFsvKiBwb3NfZm5hbWUgKi8wXSwKKyAgICAvKiBwb3NfbG51bSAqL2xj
cFsvKiBwb3NfbG51bSAqLzFdICsgMSB8IDAsCisgICAgLyogcG9zX2JvbCAqL2xjcFsvKiBwb3Nf
Y251bSAqLzNdLAorICAgIC8qIHBvc19jbnVtICovbGNwWy8qIHBvc19jbnVtICovM10KKyAgXTsK
KyAgcmV0dXJuIC8qICgpICovMDsKK30KKworZnVuY3Rpb24gZmx1c2hfaW5wdXQobGIpIHsKKyAg
bGJbLyogbGV4X2N1cnJfcG9zICovNV0gPSAwOworICBsYlsvKiBsZXhfYWJzX3BvcyAqLzNdID0g
MDsKKyAgdmFyIGluaXQgPSBsYlsvKiBsZXhfY3Vycl9wICovMTFdOworICBsYlsvKiBsZXhfY3Vy
cl9wICovMTFdID0gLyogcmVjb3JkICovWworICAgIC8qIHBvc19mbmFtZSAqL2luaXRbLyogcG9z
X2ZuYW1lICovMF0sCisgICAgLyogcG9zX2xudW0gKi9pbml0Wy8qIHBvc19sbnVtICovMV0sCisg
ICAgLyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJdLAorICAgIC8qIHBvc19jbnVtICov
MAorICBdOworICBsYlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdID0gMDsKKyAgcmV0dXJuIC8qICgp
ICovMDsKK30KKwordmFyIGR1bW15X3BvcyA9IC8qIHJlY29yZCAqL1sKKyAgLyogcG9zX2ZuYW1l
ICovIiIsCisgIC8qIHBvc19sbnVtICovMCwKKyAgLyogcG9zX2JvbCAqLzAsCisgIC8qIHBvc19j
bnVtICovLTEKK107CisKK2V4cG9ydHMuZHVtbXlfcG9zICAgICAgICAgICA9IGR1bW15X3BvczsK
K2V4cG9ydHMuZnJvbV9jaGFubmVsICAgICAgICA9IGZyb21fY2hhbm5lbDsKK2V4cG9ydHMuZnJv
bV9zdHJpbmcgICAgICAgICA9IGZyb21fc3RyaW5nOworZXhwb3J0cy5mcm9tX2Z1bmN0aW9uICAg
ICAgID0gZnJvbV9mdW5jdGlvbjsKK2V4cG9ydHMubGV4ZW1lICAgICAgICAgICAgICA9IGxleGVt
ZTsKK2V4cG9ydHMubGV4ZW1lX2NoYXIgICAgICAgICA9IGxleGVtZV9jaGFyOworZXhwb3J0cy5s
ZXhlbWVfc3RhcnQgICAgICAgID0gbGV4ZW1lX3N0YXJ0OworZXhwb3J0cy5sZXhlbWVfZW5kICAg
ICAgICAgID0gbGV4ZW1lX2VuZDsKK2V4cG9ydHMubGV4ZW1lX3N0YXJ0X3AgICAgICA9IGxleGVt
ZV9zdGFydF9wOworZXhwb3J0cy5sZXhlbWVfZW5kX3AgICAgICAgID0gbGV4ZW1lX2VuZF9wOwor
ZXhwb3J0cy5uZXdfbGluZSAgICAgICAgICAgID0gbmV3X2xpbmU7CitleHBvcnRzLmZsdXNoX2lu
cHV0ICAgICAgICAgPSBmbHVzaF9pbnB1dDsKK2V4cG9ydHMuc3ViX2xleGVtZSAgICAgICAgICA9
IHN1Yl9sZXhlbWU7CitleHBvcnRzLnN1Yl9sZXhlbWVfb3B0ICAgICAgPSBzdWJfbGV4ZW1lX29w
dDsKK2V4cG9ydHMuc3ViX2xleGVtZV9jaGFyICAgICA9IHN1Yl9sZXhlbWVfY2hhcjsKK2V4cG9y
dHMuc3ViX2xleGVtZV9jaGFyX29wdCA9IHN1Yl9sZXhlbWVfY2hhcl9vcHQ7CitleHBvcnRzLmVu
Z2luZSAgICAgICAgICAgICAgPSBlbmdpbmU7CitleHBvcnRzLm5ld19lbmdpbmUgICAgICAgICAg
PSBuZXdfZW5naW5lOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBsZXhp
bmcuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdp
c3RyeVsnbGliJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8v
Ly8vLyBzdGFydCBvZiBsaWIuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJ
UFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOwor
Cit2YXIgJCRBcnJheSAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvYXJyYXkiKTsKK3ZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBs
YXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyIEludDMyICAgICAgICAgICAgICAgICAgID0gcmVx
dWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2ludDMyIik7Cit2YXIgJCRTdHJpbmcgICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvc3RyaW5nIik7Cit2YXIgQmlnYXJy
YXkgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmlnYXJyYXki
KTsKK3ZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xp
Yi9qcy9jYW1sX29iaiIpOwordmFyIENhbWxfYXJyYXkgICAgICAgICAgICAgID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfYXJyYXkiKTsKK3ZhciBDYW1sX2ludDY0ICAgICAgICAg
ICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2ludDY0Iik7Cit2YXIgUGVy
dmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVydmFz
aXZlcyIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZv
cm0vbGliL2pzL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIHJlcGVhdChf
biwgZiwgeCkgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG4gPSBfbjsKKyAgICBpZiAobikg
eworICAgICAgQ3VycnkuXzEoZiwgeCk7CisgICAgICBfbiA9IG4gLSAxIHwgMDsKKyAgICAgIGNv
bnRpbnVlIDsKKyAgICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiAoKSAq
LzA7CisgICAgfQorICB9OworfQorCit2YXIgRnVuID0gLyogbW9kdWxlICovWy8qIHJlcGVhdCAq
L3JlcGVhdF07CisKK2Z1bmN0aW9uIG1ha2UobiwgeCkgeworICBpZiAobikgeworICAgIHJldHVy
biAvKiA6OiAqL1sKKyAgICAgICAgICAgIHgsCisgICAgICAgICAgICBtYWtlKG4gLSAxIHwgMCwg
eCkKKyAgICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7Cisg
IH0KK30KKworZnVuY3Rpb24gdGFibGUkcHJpbWUoaSwgbiwgZikgeworICBpZiAoaSA9PT0gbikg
eworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIDo6
ICovWworICAgICAgICAgICAgQ3VycnkuXzEoZiwgaSksCisgICAgICAgICAgICB0YWJsZSRwcmlt
ZShpICsgMSB8IDAsIG4sIGYpCisgICAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiB0YWJs
ZShuLCBmKSB7CisgIHJldHVybiB0YWJsZSRwcmltZSgwLCBuLCBmKTsKK30KKworZnVuY3Rpb24g
dGFrZShuLCB4cykgeworICBpZiAobiAhPT0gMCkgeworICAgIGlmICh4cykgeworICAgICAgaWYg
KG4gPiAwKSB7CisgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICB4c1sw
XSwKKyAgICAgICAgICAgICAgICB0YWtlKG4gLSAxIHwgMCwgeHNbMV0pCisgICAgICAgICAgICAg
IF07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFp
bHdpdGgoInRha2UiKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
UGVydmFzaXZlcy5mYWlsd2l0aCgidGFrZSIpOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBy
ZXR1cm4gLyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGRyb3AoX24sIF94cykgeworICB3
aGlsZSh0cnVlKSB7CisgICAgdmFyIHhzID0gX3hzOworICAgIHZhciBuID0gX247CisgICAgaWYg
KG4gIT09IDApIHsKKyAgICAgIGlmICh4cykgeworICAgICAgICBpZiAobiA+IDApIHsKKyAgICAg
ICAgICBfeHMgPSB4c1sxXTsKKyAgICAgICAgICBfbiA9IG4gLSAxIHwgMDsKKyAgICAgICAgICBj
b250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImRyb3AiKTsKKyAgICAgICAgfQorICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJkcm9w
Iik7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIHhzOworICAgIH0K
KyAgfTsKK30KKworZnVuY3Rpb24gbGFzdChfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAg
IHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciB4cyA9IHBh
cmFtWzFdOworICAgICAgaWYgKHhzKSB7CisgICAgICAgIF9wYXJhbSA9IHhzOworICAgICAgICBj
b250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVy
biBwYXJhbVswXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gUGVy
dmFzaXZlcy5mYWlsd2l0aCgibGFzdCIpOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3Bs
aXRfbGFzdChwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICB2YXIgeHMgPSBwYXJhbVsxXTsK
KyAgICB2YXIgeCA9IHBhcmFtWzBdOworICAgIGlmICh4cykgeworICAgICAgdmFyIG1hdGNoID0g
c3BsaXRfbGFzdCh4cyk7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAg
IC8qIDo6ICovWworICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgbWF0Y2hbMF0K
KyAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgbWF0Y2hbMV0KKyAgICAgICAgICAgIF07
CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAg
ICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAgIHgKKyAgICAgICAgICAgIF07CisgICAgfQor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJzcGxpdF9sYXN0
Iik7CisgIH0KK30KKworZnVuY3Rpb24gaW5kZXhfb2YoeCwgeHMpIHsKKyAgdmFyIHgkMSA9IHg7
CisgIHZhciBfeHMgPSB4czsKKyAgdmFyIF9pID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZh
ciBpID0gX2k7CisgICAgdmFyIHhzJDEgPSBfeHM7CisgICAgaWYgKHhzJDEpIHsKKyAgICAgIGlm
IChDYW1sX29iai5jYW1sX2VxdWFsKHgkMSwgeHMkMVswXSkpIHsKKyAgICAgICAgcmV0dXJuIC8q
IFNvbWUgKi9baV07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgX2kgPSBpICsgMSB8
IDA7CisgICAgICAgIF94cyA9IHhzJDFbMV07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAg
CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIE5vbmUgKi8wOwor
ICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gbGVuZ3RoKHhzKSB7CisgIHZhciBfeHMgPSB4czsK
KyAgdmFyIF9uID0gMDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBuID0gX247CisgICAgdmFy
IHhzJDEgPSBfeHM7CisgICAgaWYgKHhzJDEpIHsKKyAgICAgIGlmIChuIDwgSW50MzIubWF4X2lu
dCkgeworICAgICAgICBfbiA9IG4gKyAxIHwgMDsKKyAgICAgICAgX3hzID0geHMkMVsxXTsKKyAg
ICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgibGVuZ3RoIik7CisgICAgICB9CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgcmV0dXJuIG47CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBu
dGgoX3hzLCBfbikgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG4gPSBfbjsKKyAgICB2YXIg
eHMgPSBfeHM7CisgICAgaWYgKG4gIT09IDApIHsKKyAgICAgIGlmICh4cykgeworICAgICAgICBp
ZiAobiA+IDApIHsKKyAgICAgICAgICBfbiA9IG4gLSAxIHwgMDsKKyAgICAgICAgICBfeHMgPSB4
c1sxXTsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoIm50aCIpOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFBlcnZhc2l2
ZXMuZmFpbHdpdGgoIm50aCIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh4cykgewor
ICAgICAgcmV0dXJuIHhzWzBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBQZXJ2
YXNpdmVzLmZhaWx3aXRoKCJudGgiKTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHRha2Uk
MShuLCB4cykgeworICBpZiAobiAhPT0gMCkgeworICAgIGlmICh4cykgeworICAgICAgaWYgKG4g
PiAwKSB7CisgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICB4c1swXSwK
KyAgICAgICAgICAgICAgICB0YWtlJDEobiAtIDEgfCAwLCB4c1sxXSkKKyAgICAgICAgICAgICAg
XTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWls
d2l0aCgidGFrZSIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBQ
ZXJ2YXNpdmVzLmZhaWx3aXRoKCJ0YWtlIik7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gZHJvcCQxKF9uLCBfeHMpIHsKKyAg
d2hpbGUodHJ1ZSkgeworICAgIHZhciB4cyA9IF94czsKKyAgICB2YXIgbiA9IF9uOworICAgIGlm
IChuICE9PSAwKSB7CisgICAgICBpZiAoeHMpIHsKKyAgICAgICAgaWYgKG4gPiAwKSB7CisgICAg
ICAgICAgX3hzID0geHNbMV07CisgICAgICAgICAgX24gPSBuIC0gMSB8IDA7CisgICAgICAgICAg
Y29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJkcm9wIik7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgiZHJv
cCIpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiB4czsKKyAgICB9
CisgIH07Cit9CisKK2Z1bmN0aW9uIG1ha2UkMShuLCB4KSB7CisgIGlmIChuIDwgMCB8fCBDYW1s
X2ludDY0Lmd0KENhbWxfaW50NjQub2ZfaW50MzIobiksIENhbWxfaW50NjQub2ZfaW50MzIoUGVy
dmFzaXZlcy5tYXhfaW50KSkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiQXJyYXkzMi5tYWtlIgor
ICAgICAgICBdOworICB9CisgIHJldHVybiBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KG4sIHgp
OworfQorCitmdW5jdGlvbiBsZW5ndGgkMShhKSB7CisgIHJldHVybiBhLmxlbmd0aDsKK30KKwor
ZnVuY3Rpb24gaW5kZXhfb2ZfaW50MzIoaSkgeworICBpZiAoaSA8IDAgfHwgQ2FtbF9pbnQ2NC5n
dChDYW1sX2ludDY0Lm9mX2ludDMyKGkpLCBDYW1sX2ludDY0Lm9mX2ludDMyKFBlcnZhc2l2ZXMu
bWF4X2ludCkpKSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBp
OworICB9Cit9CisKK2Z1bmN0aW9uIGdldChhLCBpKSB7CisgIHJldHVybiBhW2luZGV4X29mX2lu
dDMyKGkpXTsKK30KKworZnVuY3Rpb24gc2V0KGEsIGksIHgpIHsKKyAgYVtpbmRleF9vZl9pbnQz
MihpKV0gPSB4OworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBibGl0KGExLCBp
MSwgYTIsIGkyLCBuKSB7CisgIHJldHVybiAkJEFycmF5LmJsaXQoYTEsIGluZGV4X29mX2ludDMy
KGkxKSwgYTIsIGluZGV4X29mX2ludDMyKGkyKSwgaW5kZXhfb2ZfaW50MzIobikpOworfQorCitm
dW5jdGlvbiBjcmVhdGUoa2luZCwgbGF5b3V0LCBuKSB7CisgIGlmIChDYW1sX2ludDY0Lmx0KG4s
IC8qIGludDY0ICovWworICAgICAgICAgIC8qIGhpICovMCwKKyAgICAgICAgICAvKiBsbyAqLzAK
KyAgICAgICAgXSkgfHwgQ2FtbF9pbnQ2NC5ndChuLCBDYW1sX2ludDY0Lm9mX2ludDMyKFBlcnZh
c2l2ZXMubWF4X2ludCkpKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIkJpZ2FycmF5LkFycmF5MV82
NC5jcmVhdGUiCisgICAgICAgIF07CisgIH0KKyAgcmV0dXJuIEN1cnJ5Ll8zKEJpZ2FycmF5LkFy
cmF5MVsvKiBjcmVhdGUgKi8wXSwga2luZCwgbGF5b3V0LCBuWzFdIHwgMCk7Cit9CisKK2Z1bmN0
aW9uIGRpbSgpIHsKKyAgcmV0dXJuIENhbWxfaW50NjQub2ZfaW50MzIoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX2RpbV8xIG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgICB9KCkpOworfQorCitmdW5jdGlvbiBn
ZXQkMShfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93
ICJjYW1sX2JhX2dldF8xIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwor
ICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2V0JDEoXywgXyQxLCBfJDIpIHsKKyAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NldF8xIG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwor
ZnVuY3Rpb24gc3ViKF8sIF8kMSwgXyQyKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0aHJvdyAiY2FtbF9iYV9zdWIgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlw
dCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBnZXQkMihvLCB4KSB7Cisg
IGlmIChvKSB7CisgICAgcmV0dXJuIG9bMF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHg7
CisgIH0KK30KKworZnVuY3Rpb24gbWFwKGYsIHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAg
IHJldHVybiAvKiBTb21lICovW0N1cnJ5Ll8xKGYsIHBhcmFtWzBdKV07CisgIH0KKyAgZWxzZSB7
CisgICAgcmV0dXJuIC8qIE5vbmUgKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIGFwcChmLCBwYXJh
bSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gQ3VycnkuXzEoZiwgcGFyYW1bMF0pOwor
ICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKwordmFyIE9wdGlv
biA9IC8qIG1vZHVsZSAqL1sKKyAgLyogZ2V0ICovZ2V0JDIsCisgIC8qIG1hcCAqL21hcCwKKyAg
LyogYXBwICovYXBwCitdOworCitmdW5jdGlvbiBsb2cyKG4pIHsKKyAgaWYgKG4gPD0gMCkgewor
ICAgIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImxvZzIiKTsKKyAgfQorICB2YXIgX2FjYyA9IDA7Cisg
IHZhciBfbiA9IG47CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbiQxID0gX247CisgICAgdmFy
IGFjYyA9IF9hY2M7CisgICAgaWYgKG4kMSA9PT0gMSkgeworICAgICAgcmV0dXJuIGFjYzsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICBfbiA9IChuJDEgPj4+IDEpOworICAgICAgX2FjYyA9IGFj
YyArIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICB9OworfQorCitm
dW5jdGlvbiBpc19wb3dlcl9vZl90d28obikgeworICBpZiAobiA8IDApIHsKKyAgICBQZXJ2YXNp
dmVzLmZhaWx3aXRoKCJpc19wb3dlcl9vZl90d28iKTsKKyAgfQorICBpZiAobiAhPT0gMCkgewor
ICAgIHJldHVybiArKChuICYgKG4gLSAxIHwgMCkpID09PSAwKTsKKyAgfQorICBlbHNlIHsKKyAg
ICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9Cit9CisKK3ZhciBJbnQgPSAvKiBtb2R1bGUgKi9b
CisgIC8qIGxvZzIgKi9sb2cyLAorICAvKiBpc19wb3dlcl9vZl90d28gKi9pc19wb3dlcl9vZl90
d28KK107CisKK2Z1bmN0aW9uIGJyZWFrdXAocywgbikgeworICB2YXIgbG9vcCA9IGZ1bmN0aW9u
IChpKSB7CisgICAgdmFyIGxlbiA9IFBlcnZhc2l2ZXMubWluKG4sIHMubGVuZ3RoIC0gaSB8IDAp
OworICAgIGlmIChsZW4pIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
JCRTdHJpbmcuc3ViKHMsIGksIGxlbiksCisgICAgICAgICAgICAgIGxvb3AoaSArIGxlbiB8IDAp
CisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBbXSAq
LzA7CisgICAgfQorICB9OworICByZXR1cm4gbG9vcCgwKTsKK30KKwordmFyICQkU3RyaW5nJDEg
PSAvKiBtb2R1bGUgKi9bLyogYnJlYWt1cCAqL2JyZWFrdXBdOworCit2YXIgTGlzdCA9IFsKKyAg
bWFrZSwKKyAgdGFibGUsCisgIHRha2UsCisgIGRyb3AsCisgIGxhc3QsCisgIHNwbGl0X2xhc3Qs
CisgIGluZGV4X29mCitdOworCit2YXIgTGlzdDMyID0gWworICBsZW5ndGgsCisgIG50aCwKKyAg
dGFrZSQxLAorICBkcm9wJDEKK107CisKK3ZhciBBcnJheTMyID0gWworICBtYWtlJDEsCisgIGxl
bmd0aCQxLAorICBnZXQsCisgIHNldCwKKyAgYmxpdAorXTsKKwordmFyIEJpZ2FycmF5JDEgPSBb
WworICAgIGNyZWF0ZSwKKyAgICBkaW0sCisgICAgZ2V0JDEsCisgICAgc2V0JDEsCisgICAgc3Vi
CisgIF1dOworCitleHBvcnRzLkZ1biAgICAgID0gRnVuOworZXhwb3J0cy5MaXN0ICAgICA9IExp
c3Q7CitleHBvcnRzLkxpc3QzMiAgID0gTGlzdDMyOworZXhwb3J0cy5BcnJheTMyICA9IEFycmF5
MzI7CitleHBvcnRzLkJpZ2FycmF5ID0gQmlnYXJyYXkkMTsKK2V4cG9ydHMuT3B0aW9uICAgPSBP
cHRpb247CitleHBvcnRzLkludCAgICAgID0gSW50OworZXhwb3J0cy4kJFN0cmluZyA9ICQkU3Ry
aW5nJDE7CisvKiBCaWdhcnJheSBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9m
IGxpYi5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3Jl
Z2lzdHJ5WydsaXN0J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307Cisv
Ly8vLy8vLyBzdGFydCBvZiBsaXN0LmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBD
dXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBDYW1sX29i
aiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9vYmoiKTsKK3ZhciBQZXJ2YXNpdmVz
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOworCitm
dW5jdGlvbiBsZW5ndGgobCkgeworICB2YXIgX2xlbiA9IDA7CisgIHZhciBfcGFyYW0gPSBsOwor
ICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIHZhciBsZW4gPSBf
bGVuOworICAgIGlmIChwYXJhbSkgeworICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICBf
bGVuID0gbGVuICsgMSB8IDA7CisgICAgICBjb250aW51ZSA7CisgICAgICAKKyAgICB9CisgICAg
ZWxzZSB7CisgICAgICByZXR1cm4gbGVuOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gaGQo
cGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVs
c2UgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWls
dXJlLAorICAgICAgICAgICJoZCIKKyAgICAgICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiB0bChw
YXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gcGFyYW1bMV07CisgIH0KKyAgZWxz
ZSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1
cmUsCisgICAgICAgICAgInRsIgorICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIG50aChs
LCBuKSB7CisgIGlmIChuIDwgMCkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJMaXN0Lm50aCIKKyAg
ICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICB2YXIgX2wgPSBsOworICAgIHZhciBfbiA9IG47
CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIG4kMSA9IF9uOworICAgICAgdmFyIGwkMSA9
IF9sOworICAgICAgaWYgKGwkMSkgeworICAgICAgICBpZiAobiQxKSB7CisgICAgICAgICAgX24g
PSBuJDEgLSAxIHwgMDsKKyAgICAgICAgICBfbCA9IGwkMVsxXTsKKyAgICAgICAgICBjb250aW51
ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0
dXJuIGwkMVswXTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRo
cm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAg
ICAgICAgICAgICAgIm50aCIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfTsKKyAgfQor
fQorCitmdW5jdGlvbiByZXZfYXBwZW5kKF9sMSwgX2wyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAg
ICB2YXIgbDIgPSBfbDI7CisgICAgdmFyIGwxID0gX2wxOworICAgIGlmIChsMSkgeworICAgICAg
X2wyID0gLyogOjogKi9bCisgICAgICAgIGwxWzBdLAorICAgICAgICBsMgorICAgICAgXTsKKyAg
ICAgIF9sMSA9IGwxWzFdOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIGwyOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcmV2KGwp
IHsKKyAgcmV0dXJuIHJldl9hcHBlbmQobCwgLyogW10gKi8wKTsKK30KKworZnVuY3Rpb24gZmxh
dHRlbihwYXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICByZXR1cm4gUGVydmFzaXZlcy4kYXQo
cGFyYW1bMF0sIGZsYXR0ZW4ocGFyYW1bMV0pKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4g
LyogW10gKi8wOworICB9Cit9CisKK2Z1bmN0aW9uIG1hcChmLCBwYXJhbSkgeworICBpZiAocGFy
YW0pIHsKKyAgICB2YXIgciA9IEN1cnJ5Ll8xKGYsIHBhcmFtWzBdKTsKKyAgICByZXR1cm4gLyog
OjogKi9bCisgICAgICAgICAgICByLAorICAgICAgICAgICAgbWFwKGYsIHBhcmFtWzFdKQorICAg
ICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIC8qIFtdICovMDsKKyAgfQorfQor
CitmdW5jdGlvbiBtYXBpKGksIGYsIHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHZhciBy
ID0gQ3VycnkuXzIoZiwgaSwgcGFyYW1bMF0pOworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgIHIsCisgICAgICAgICAgICBtYXBpKGkgKyAxIHwgMCwgZiwgcGFyYW1bMV0pCisgICAg
ICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9Cit9CisK
K2Z1bmN0aW9uIG1hcGkkMShmLCBsKSB7CisgIHJldHVybiBtYXBpKDAsIGYsIGwpOworfQorCitm
dW5jdGlvbiByZXZfbWFwKGYsIGwpIHsKKyAgdmFyIF9hY2N1ID0gLyogW10gKi8wOworICB2YXIg
X3BhcmFtID0gbDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAg
ICB2YXIgYWNjdSA9IF9hY2N1OworICAgIGlmIChwYXJhbSkgeworICAgICAgX3BhcmFtID0gcGFy
YW1bMV07CisgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICBDdXJyeS5fMShmLCBwYXJh
bVswXSksCisgICAgICAgIGFjY3UKKyAgICAgIF07CisgICAgICBjb250aW51ZSA7CisgICAgICAK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gYWNjdTsKKyAgICB9CisgIH07Cit9CisK
K2Z1bmN0aW9uIGl0ZXIoZiwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFy
YW0gPSBfcGFyYW07CisgICAgaWYgKHBhcmFtKSB7CisgICAgICBDdXJyeS5fMShmLCBwYXJhbVsw
XSk7CisgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgIGNvbnRpbnVlIDsKKyAgICAgIAor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICB9Owor
fQorCitmdW5jdGlvbiBpdGVyaShmLCBsKSB7CisgIHZhciBfaSA9IDA7CisgIHZhciBmJDEgPSBm
OworICB2YXIgX3BhcmFtID0gbDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9w
YXJhbTsKKyAgICB2YXIgaSA9IF9pOworICAgIGlmIChwYXJhbSkgeworICAgICAgQ3VycnkuXzIo
ZiQxLCBpLCBwYXJhbVswXSk7CisgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgIF9pID0g
aSArIDEgfCAwOworICAgICAgY29udGludWUgOworICAgICAgCisgICAgfQorICAgIGVsc2Ugewor
ICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZvbGRf
bGVmdChmLCBfYWNjdSwgX2wpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsID0gX2w7Cisg
ICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAobCkgeworICAgICAgX2wgPSBsWzFdOworICAg
ICAgX2FjY3UgPSBDdXJyeS5fMihmLCBhY2N1LCBsWzBdKTsKKyAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgIAorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBhY2N1OworICAgIH0KKyAgfTsK
K30KKworZnVuY3Rpb24gZm9sZF9yaWdodChmLCBsLCBhY2N1KSB7CisgIGlmIChsKSB7CisgICAg
cmV0dXJuIEN1cnJ5Ll8yKGYsIGxbMF0sIGZvbGRfcmlnaHQoZiwgbFsxXSwgYWNjdSkpOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBhY2N1OworICB9Cit9CisKK2Z1bmN0aW9uIG1hcDIoZiwg
bDEsIGwyKSB7CisgIGlmIChsMSkgeworICAgIGlmIChsMikgeworICAgICAgdmFyIHIgPSBDdXJy
eS5fMihmLCBsMVswXSwgbDJbMF0pOworICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAg
ICAgICByLAorICAgICAgICAgICAgICBtYXAyKGYsIGwxWzFdLCBsMlsxXSkKKyAgICAgICAgICAg
IF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJMaXN0Lm1h
cDIiCisgICAgICAgICAgXTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAobDIpIHsKKyAgICB0aHJv
dyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwK
KyAgICAgICAgICAiTGlzdC5tYXAyIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJl
dHVybiAvKiBbXSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gcmV2X21hcDIoZiwgbDEsIGwyKSB7
CisgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgdmFyIF9sMSA9IGwxOworICB2YXIgX2wyID0g
bDI7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbDIkMSA9IF9sMjsKKyAgICB2YXIgbDEkMSA9
IF9sMTsKKyAgICB2YXIgYWNjdSA9IF9hY2N1OworICAgIGlmIChsMSQxKSB7CisgICAgICBpZiAo
bDIkMSkgeworICAgICAgICBfbDIgPSBsMiQxWzFdOworICAgICAgICBfbDEgPSBsMSQxWzFdOwor
ICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgIEN1cnJ5Ll8yKGYsIGwxJDFbMF0s
IGwyJDFbMF0pLAorICAgICAgICAgIGFjY3UKKyAgICAgICAgXTsKKyAgICAgICAgY29udGludWUg
OworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBbCisgICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgICAgICAgICJMaXN0LnJldl9tYXAyIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9
CisgICAgZWxzZSBpZiAobDIkMSkgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJMaXN0LnJl
dl9tYXAyIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGFj
Y3U7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBpdGVyMihmLCBfbDEsIF9sMikgeworICB3
aGlsZSh0cnVlKSB7CisgICAgdmFyIGwyID0gX2wyOworICAgIHZhciBsMSA9IF9sMTsKKyAgICBp
ZiAobDEpIHsKKyAgICAgIGlmIChsMikgeworICAgICAgICBDdXJyeS5fMihmLCBsMVswXSwgbDJb
MF0pOworICAgICAgICBfbDIgPSBsMlsxXTsKKyAgICAgICAgX2wxID0gbDFbMV07CisgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhy
b3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3Vt
ZW50LAorICAgICAgICAgICAgICAiTGlzdC5pdGVyMiIKKyAgICAgICAgICAgIF07CisgICAgICB9
CisgICAgfQorICAgIGVsc2UgaWYgKGwyKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgIkxp
c3QuaXRlcjIiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
LyogKCkgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gZm9sZF9sZWZ0MihmLCBfYWNj
dSwgX2wxLCBfbDIpIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBsMiA9IF9sMjsKKyAgICB2
YXIgbDEgPSBfbDE7CisgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICBpZiAobDEpIHsKKyAgICAg
IGlmIChsMikgeworICAgICAgICBfbDIgPSBsMlsxXTsKKyAgICAgICAgX2wxID0gbDFbMV07Cisg
ICAgICAgIF9hY2N1ID0gQ3VycnkuXzMoZiwgYWNjdSwgbDFbMF0sIGwyWzBdKTsKKyAgICAgICAg
Y29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJv
dyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCisgICAgICAgICAgICAgICJMaXN0LmZvbGRfbGVmdDIiCisgICAgICAgICAgICBdOworICAg
ICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChsMikgeworICAgICAgdGhyb3cgWworICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAg
ICJMaXN0LmZvbGRfbGVmdDIiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gYWNjdTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZvbGRfcmlnaHQyKGYs
IGwxLCBsMiwgYWNjdSkgeworICBpZiAobDEpIHsKKyAgICBpZiAobDIpIHsKKyAgICAgIHJldHVy
biBDdXJyeS5fMyhmLCBsMVswXSwgbDJbMF0sIGZvbGRfcmlnaHQyKGYsIGwxWzFdLCBsMlsxXSwg
YWNjdSkpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTGlz
dC5mb2xkX3JpZ2h0MiIKKyAgICAgICAgICBdOworICAgIH0KKyAgfQorICBlbHNlIGlmIChsMikg
eworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlk
X2FyZ3VtZW50LAorICAgICAgICAgICJMaXN0LmZvbGRfcmlnaHQyIgorICAgICAgICBdOworICB9
CisgIGVsc2UgeworICAgIHJldHVybiBhY2N1OworICB9Cit9CisKK2Z1bmN0aW9uIGZvcl9hbGwo
cCwgX3BhcmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07Cisg
ICAgaWYgKHBhcmFtKSB7CisgICAgICBpZiAoQ3VycnkuXzEocCwgcGFyYW1bMF0pKSB7CisgICAg
ICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAg
ICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAgICB9
CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgIH0KKyAg
fTsKK30KKworZnVuY3Rpb24gZXhpc3RzKHAsIF9wYXJhbSkgeworICB3aGlsZSh0cnVlKSB7Cisg
ICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgaWYgKEN1cnJ5
Ll8xKHAsIHBhcmFtWzBdKSkgeworICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICB9
CisgICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJu
IC8qIGZhbHNlICovMDsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGZvcl9hbGwyKHAsIF9s
MSwgX2wyKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbDIgPSBfbDI7CisgICAgdmFyIGwx
ID0gX2wxOworICAgIGlmIChsMSkgeworICAgICAgaWYgKGwyKSB7CisgICAgICAgIGlmIChDdXJy
eS5fMihwLCBsMVswXSwgbDJbMF0pKSB7CisgICAgICAgICAgX2wyID0gbDJbMV07CisgICAgICAg
ICAgX2wxID0gbDFbMV07CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aHJvdyBbCisgICAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAg
ICAgICJMaXN0LmZvcl9hbGwyIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAg
ZWxzZSBpZiAobDIpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTGlzdC5mb3JfYWxsMiIK
KyAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0cnVlICov
MTsKKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIGV4aXN0czIocCwgX2wxLCBfbDIpIHsKKyAg
d2hpbGUodHJ1ZSkgeworICAgIHZhciBsMiA9IF9sMjsKKyAgICB2YXIgbDEgPSBfbDE7CisgICAg
aWYgKGwxKSB7CisgICAgICBpZiAobDIpIHsKKyAgICAgICAgaWYgKEN1cnJ5Ll8yKHAsIGwxWzBd
LCBsMlswXSkpIHsKKyAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgX2wyID0gbDJbMV07CisgICAgICAgICAgX2wxID0gbDFb
MV07CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9
CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAiTGlzdC5leGlz
dHMyIgorICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobDIpIHsK
KyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFs
aWRfYXJndW1lbnQsCisgICAgICAgICAgICAiTGlzdC5leGlzdHMyIgorICAgICAgICAgIF07Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgIH07
Cit9CisKK2Z1bmN0aW9uIG1lbSh4LCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZh
ciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIGlmIChDYW1sX29iai5j
YW1sX2NvbXBhcmUocGFyYW1bMF0sIHgpKSB7CisgICAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOwor
ICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gbWVtcSh4
LCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAg
ICBpZiAocGFyYW0pIHsKKyAgICAgIGlmIChwYXJhbVswXSA9PT0geCkgeworICAgICAgICByZXR1
cm4gLyogdHJ1ZSAqLzE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0g
cGFyYW1bMV07CisgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKKyAgICB9CisgIH07Cit9CisK
K2Z1bmN0aW9uIGFzc29jKHgsIF9wYXJhbSkgeworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBh
cmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIG1hdGNoID0gcGFyYW1b
MF07CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9jb21wYXJlKG1hdGNoWzBdLCB4KSkgeworICAg
ICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gbWF0Y2hbMV07CisgICAgICB9Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90
X2ZvdW5kOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gYXNzcSh4LCBfcGFyYW0pIHsKKyAg
d2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsK
KyAgICAgIHZhciBtYXRjaCA9IHBhcmFtWzBdOworICAgICAgaWYgKG1hdGNoWzBdID09PSB4KSB7
CisgICAgICAgIHJldHVybiBtYXRjaFsxXTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAg
IH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5ub3RfZm91bmQ7CisgICAgfQorICB9OworfQorCitmdW5jdGlvbiBtZW1fYXNzb2MoeCwgX3Bh
cmFtKSB7CisgIHdoaWxlKHRydWUpIHsKKyAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgaWYg
KHBhcmFtKSB7CisgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9jb21wYXJlKHBhcmFtWzBdWzBdLCB4
KSkgeworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7
CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsK
KyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG1lbV9hc3NxKHgsIF9wYXJhbSkgeworICB3aGls
ZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAg
ICAgaWYgKHBhcmFtWzBdWzBdID09PSB4KSB7CisgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsK
KyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAg
ICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcmVtb3Zl
X2Fzc29jKHgsIHBhcmFtKSB7CisgIGlmIChwYXJhbSkgeworICAgIHZhciBsID0gcGFyYW1bMV07
CisgICAgdmFyIHBhaXIgPSBwYXJhbVswXTsKKyAgICBpZiAoQ2FtbF9vYmouY2FtbF9jb21wYXJl
KHBhaXJbMF0sIHgpKSB7CisgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgIHBh
aXIsCisgICAgICAgICAgICAgIHJlbW92ZV9hc3NvYyh4LCBsKQorICAgICAgICAgICAgXTsKKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gbDsKKyAgICB9CisgIH0KKyAgZWxzZSB7Cisg
ICAgcmV0dXJuIC8qIFtdICovMDsKKyAgfQorfQorCitmdW5jdGlvbiByZW1vdmVfYXNzcSh4LCBw
YXJhbSkgeworICBpZiAocGFyYW0pIHsKKyAgICB2YXIgbCA9IHBhcmFtWzFdOworICAgIHZhciBw
YWlyID0gcGFyYW1bMF07CisgICAgaWYgKHBhaXJbMF0gPT09IHgpIHsKKyAgICAgIHJldHVybiBs
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAg
ICAgcGFpciwKKyAgICAgICAgICAgICAgcmVtb3ZlX2Fzc3EoeCwgbCkKKyAgICAgICAgICAgIF07
CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0KK30KKwor
ZnVuY3Rpb24gZmluZChwLCBfcGFyYW0pIHsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBwYXJh
bSA9IF9wYXJhbTsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciB4ID0gcGFyYW1bMF07Cisg
ICAgICBpZiAoQ3VycnkuXzEocCwgeCkpIHsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07CisgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rp
b24gZmluZF9hbGwocCkgeworICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgdmFyIF9h
Y2N1ID0gLyogW10gKi8wOworICAgIHZhciBfcGFyYW0gPSBwYXJhbTsKKyAgICB3aGlsZSh0cnVl
KSB7CisgICAgICB2YXIgcGFyYW0kMSA9IF9wYXJhbTsKKyAgICAgIHZhciBhY2N1ID0gX2FjY3U7
CisgICAgICBpZiAocGFyYW0kMSkgeworICAgICAgICB2YXIgbCA9IHBhcmFtJDFbMV07CisgICAg
ICAgIHZhciB4ID0gcGFyYW0kMVswXTsKKyAgICAgICAgaWYgKEN1cnJ5Ll8xKHAsIHgpKSB7Cisg
ICAgICAgICAgX3BhcmFtID0gbDsKKyAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAg
ICAgICAgeCwKKyAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICBdOworICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBf
cGFyYW0gPSBsOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiByZXZfYXBwZW5kKGFjY3UsIC8q
IFtdICovMCk7CisgICAgICB9CisgICAgfTsKKyAgfTsKK30KKworZnVuY3Rpb24gcGFydGl0aW9u
KHAsIGwpIHsKKyAgdmFyIF95ZXMgPSAvKiBbXSAqLzA7CisgIHZhciBfbm8gPSAvKiBbXSAqLzA7
CisgIHZhciBfcGFyYW0gPSBsOworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFtID0gX3Bh
cmFtOworICAgIHZhciBubyA9IF9ubzsKKyAgICB2YXIgeWVzID0gX3llczsKKyAgICBpZiAocGFy
YW0pIHsKKyAgICAgIHZhciBsJDEgPSBwYXJhbVsxXTsKKyAgICAgIHZhciB4ID0gcGFyYW1bMF07
CisgICAgICBpZiAoQ3VycnkuXzEocCwgeCkpIHsKKyAgICAgICAgX3BhcmFtID0gbCQxOworICAg
ICAgICBfeWVzID0gLyogOjogKi9bCisgICAgICAgICAgeCwKKyAgICAgICAgICB5ZXMKKyAgICAg
ICAgXTsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICBfcGFyYW0gPSBsJDE7CisgICAgICAgIF9ubyA9IC8qIDo6ICovWworICAgICAg
ICAgIHgsCisgICAgICAgICAgbm8KKyAgICAgICAgXTsKKyAgICAgICAgY29udGludWUgOworICAg
ICAgICAKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgIHJldl9hcHBlbmQoeWVzLCAvKiBbXSAqLzApLAorICAgICAgICAg
ICAgICByZXZfYXBwZW5kKG5vLCAvKiBbXSAqLzApCisgICAgICAgICAgICBdOworICAgIH0KKyAg
fTsKK30KKworZnVuY3Rpb24gc3BsaXQocGFyYW0pIHsKKyAgaWYgKHBhcmFtKSB7CisgICAgdmFy
IG1hdGNoID0gcGFyYW1bMF07CisgICAgdmFyIG1hdGNoJDEgPSBzcGxpdChwYXJhbVsxXSk7Cisg
ICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgIG1hdGNoWzBdLAorICAgICAgICAgICAgICBtYXRjaCQxWzBdCisgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgIG1hdGNoWzFdLAorICAgICAgICAg
ICAgICBtYXRjaCQxWzFdCisgICAgICAgICAgICBdCisgICAgICAgICAgXTsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIGNvbWJp
bmUobDEsIGwyKSB7CisgIGlmIChsMSkgeworICAgIGlmIChsMikgeworICAgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgICAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICBsMVsw
XSwKKyAgICAgICAgICAgICAgICBsMlswXQorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICBjb21iaW5lKGwxWzFdLCBsMlsxXSkKKyAgICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdGhyb3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52
YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICJMaXN0LmNvbWJpbmUiCisgICAgICAgICAgXTsK
KyAgICB9CisgIH0KKyAgZWxzZSBpZiAobDIpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiTGlzdC5j
b21iaW5lIgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiAvKiBbXSAqLzA7
CisgIH0KK30KKworZnVuY3Rpb24gbWVyZ2UoY21wLCBsMSwgbDIpIHsKKyAgaWYgKGwxKSB7Cisg
ICAgaWYgKGwyKSB7CisgICAgICB2YXIgaDIgPSBsMlswXTsKKyAgICAgIHZhciBoMSA9IGwxWzBd
OworICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgaDEsIGgyKSA8PSAwKSB7CisgICAgICAgIHJldHVy
biAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBoMSwKKyAgICAgICAgICAgICAgICBtZXJnZShj
bXAsIGwxWzFdLCBsMikKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDIsCisgICAgICAgICAg
ICAgICAgbWVyZ2UoY21wLCBsMSwgbDJbMV0pCisgICAgICAgICAgICAgIF07CisgICAgICB9Cisg
ICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIGwxOworICAgIH0KKyAgfQorICBlbHNlIHsK
KyAgICByZXR1cm4gbDI7CisgIH0KK30KKworZnVuY3Rpb24gY2hvcChfaywgX2wpIHsKKyAgd2hp
bGUodHJ1ZSkgeworICAgIHZhciBsID0gX2w7CisgICAgdmFyIGsgPSBfazsKKyAgICBpZiAoaykg
eworICAgICAgaWYgKGwpIHsKKyAgICAgICAgX2wgPSBsWzFdOworICAgICAgICBfayA9IGsgLSAx
IHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmFzc2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgImxpc3Qu
bWwiLAorICAgICAgICAgICAgICAgIDIyMywKKyAgICAgICAgICAgICAgICAxMQorICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IHJldHVybiBsOworICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3RhYmxlX3NvcnQoY21wLCBs
KSB7CisgIHZhciBzb3J0ID0gZnVuY3Rpb24gKG4sIGwpIHsKKyAgICB2YXIgZXhpdCA9IDA7Cisg
ICAgaWYgKG4gIT09IDIpIHsKKyAgICAgIGlmIChuICE9PSAzKSB7CisgICAgICAgIGV4aXQgPSAx
OworICAgICAgfQorICAgICAgZWxzZSBpZiAobCkgeworICAgICAgICB2YXIgbWF0Y2ggPSBsWzFd
OworICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IG1hdGNoWzFd
OworICAgICAgICAgIGlmIChtYXRjaCQxKSB7CisgICAgICAgICAgICB2YXIgeDMgPSBtYXRjaCQx
WzBdOworICAgICAgICAgICAgdmFyIHgyID0gbWF0Y2hbMF07CisgICAgICAgICAgICB2YXIgeDEg
PSBsWzBdOworICAgICAgICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEsIHgyKSA8PSAwKSB7Cisg
ICAgICAgICAgICAgIGlmIChDdXJyeS5fMihjbXAsIHgyLCB4MykgPD0gMCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDMpIDw9IDApIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
IHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEsIHgzKSA8PSAw
KSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChD
dXJyeS5fMihjbXAsIHgyLCB4MykgPD0gMCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAg
ICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9
CisgICAgfQorICAgIGVsc2UgaWYgKGwpIHsKKyAgICAgIHZhciBtYXRjaCQyID0gbFsxXTsKKyAg
ICAgIGlmIChtYXRjaCQyKSB7CisgICAgICAgIHZhciB4MiQxID0gbWF0Y2gkMlswXTsKKyAgICAg
ICAgdmFyIHgxJDEgPSBsWzBdOworICAgICAgICBpZiAoQ3VycnkuXzIoY21wLCB4MSQxLCB4MiQx
KSA8PSAwKSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
eDEkMSwKKyAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICB4
MiQxLAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
IHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAgICAgICAgICAg
ICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAg
ICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAg
ICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGV4aXQgPSAxOworICAgIH0KKyAgICBpZiAo
ZXhpdCA9PT0gMSkgeworICAgICAgdmFyIG4xID0gKG4gPj4gMSk7CisgICAgICB2YXIgbjIgPSBu
IC0gbjEgfCAwOworICAgICAgdmFyIGwyID0gY2hvcChuMSwgbCk7CisgICAgICB2YXIgczEgPSBy
ZXZfc29ydChuMSwgbCk7CisgICAgICB2YXIgczIgPSByZXZfc29ydChuMiwgbDIpOworICAgICAg
dmFyIF9sMSA9IHMxOworICAgICAgdmFyIF9sMiA9IHMyOworICAgICAgdmFyIF9hY2N1ID0gLyog
W10gKi8wOworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIgYWNjdSA9IF9hY2N1Owor
ICAgICAgICB2YXIgbDIkMSA9IF9sMjsKKyAgICAgICAgdmFyIGwxID0gX2wxOworICAgICAgICBp
ZiAobDEpIHsKKyAgICAgICAgICBpZiAobDIkMSkgeworICAgICAgICAgICAgdmFyIGgyID0gbDIk
MVswXTsKKyAgICAgICAgICAgIHZhciBoMSA9IGwxWzBdOworICAgICAgICAgICAgaWYgKEN1cnJ5
Ll8yKGNtcCwgaDEsIGgyKSA+IDApIHsKKyAgICAgICAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICBoMSwKKyAgICAgICAgICAgICAgICBhY2N1CisgICAgICAgICAgICAg
IF07CisgICAgICAgICAgICAgIF9sMSA9IGwxWzFdOworICAgICAgICAgICAgICBjb250aW51ZSA7
CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDIsCisgICAgICAg
ICAgICAgICAgYWNjdQorICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBfbDIgPSBsMiQx
WzFdOworICAgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBy
ZXZfYXBwZW5kKGwxLCBhY2N1KTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgcmV0dXJuIHJldl9hcHBlbmQobDIkMSwgYWNjdSk7CisgICAgICAgIH0K
KyAgICAgIH07CisgICAgfQorICAgIAorICB9OworICB2YXIgcmV2X3NvcnQgPSBmdW5jdGlvbiAo
biwgbCkgeworICAgIHZhciBleGl0ID0gMDsKKyAgICBpZiAobiAhPT0gMikgeworICAgICAgaWYg
KG4gIT09IDMpIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIGlmIChs
KSB7CisgICAgICAgIHZhciBtYXRjaCA9IGxbMV07CisgICAgICAgIGlmIChtYXRjaCkgeworICAg
ICAgICAgIHZhciBtYXRjaCQxID0gbWF0Y2hbMV07CisgICAgICAgICAgaWYgKG1hdGNoJDEpIHsK
KyAgICAgICAgICAgIHZhciB4MyA9IG1hdGNoJDFbMF07CisgICAgICAgICAgICB2YXIgeDIgPSBt
YXRjaFswXTsKKyAgICAgICAgICAgIHZhciB4MSA9IGxbMF07CisgICAgICAgICAgICBpZiAoQ3Vy
cnkuXzIoY21wLCB4MSwgeDIpID4gMCkgeworICAgICAgICAgICAgICBpZiAoQ3VycnkuXzIoY21w
LCB4MiwgeDMpID4gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDMp
ID4gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICov
WworICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAo
Q3VycnkuXzIoY21wLCB4MSwgeDMpID4gMCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MiwgeDMpID4gMCkgeworICAg
ICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgeDIsCisg
ICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICB4
MywKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGwpIHsKKyAgICAg
IHZhciBtYXRjaCQyID0gbFsxXTsKKyAgICAgIGlmIChtYXRjaCQyKSB7CisgICAgICAgIHZhciB4
MiQxID0gbWF0Y2gkMlswXTsKKyAgICAgICAgdmFyIHgxJDEgPSBsWzBdOworICAgICAgICBpZiAo
Q3VycnkuXzIoY21wLCB4MSQxLCB4MiQxKSA+IDApIHsKKyAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAgLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAgICAgICAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgeDIkMSwKKyAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
ICB4MSQxLAorICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgZXhp
dCA9IDE7CisgICAgfQorICAgIGlmIChleGl0ID09PSAxKSB7CisgICAgICB2YXIgbjEgPSAobiA+
PiAxKTsKKyAgICAgIHZhciBuMiA9IG4gLSBuMSB8IDA7CisgICAgICB2YXIgbDIgPSBjaG9wKG4x
LCBsKTsKKyAgICAgIHZhciBzMSA9IHNvcnQobjEsIGwpOworICAgICAgdmFyIHMyID0gc29ydChu
MiwgbDIpOworICAgICAgdmFyIF9sMSA9IHMxOworICAgICAgdmFyIF9sMiA9IHMyOworICAgICAg
dmFyIF9hY2N1ID0gLyogW10gKi8wOworICAgICAgd2hpbGUodHJ1ZSkgeworICAgICAgICB2YXIg
YWNjdSA9IF9hY2N1OworICAgICAgICB2YXIgbDIkMSA9IF9sMjsKKyAgICAgICAgdmFyIGwxID0g
X2wxOworICAgICAgICBpZiAobDEpIHsKKyAgICAgICAgICBpZiAobDIkMSkgeworICAgICAgICAg
ICAgdmFyIGgyID0gbDIkMVswXTsKKyAgICAgICAgICAgIHZhciBoMSA9IGwxWzBdOworICAgICAg
ICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgaDEsIGgyKSA8PSAwKSB7CisgICAgICAgICAgICAgIF9h
Y2N1ID0gLyogOjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAgICAgYWNj
dQorICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICBfbDEgPSBsMVsxXTsKKyAgICAgICAg
ICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgICAg
ICAgIGgyLAorICAgICAgICAgICAgICAgIGFjY3UKKyAgICAgICAgICAgICAgXTsKKyAgICAgICAg
ICAgICAgX2wyID0gbDIkMVsxXTsKKyAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMSwgYWNjdSk7CisgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiByZXZfYXBwZW5kKGwyJDEsIGFj
Y3UpOworICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAgICAKKyAgfTsKKyAgdmFyIGxlbiA9
IGxlbmd0aChsKTsKKyAgaWYgKGxlbiA8IDIpIHsKKyAgICByZXR1cm4gbDsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gc29ydChsZW4sIGwpOworICB9Cit9CisKK2Z1bmN0aW9uIHNvcnRfdW5p
cShjbXAsIGwpIHsKKyAgdmFyIHNvcnQgPSBmdW5jdGlvbiAobiwgbCkgeworICAgIHZhciBleGl0
ID0gMDsKKyAgICBpZiAobiAhPT0gMikgeworICAgICAgaWYgKG4gIT09IDMpIHsKKyAgICAgICAg
ZXhpdCA9IDE7CisgICAgICB9CisgICAgICBlbHNlIGlmIChsKSB7CisgICAgICAgIHZhciBtYXRj
aCA9IGxbMV07CisgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgIHZhciBtYXRjaCQxID0g
bWF0Y2hbMV07CisgICAgICAgICAgaWYgKG1hdGNoJDEpIHsKKyAgICAgICAgICAgIHZhciB4MyA9
IG1hdGNoJDFbMF07CisgICAgICAgICAgICB2YXIgeDIgPSBtYXRjaFswXTsKKyAgICAgICAgICAg
IHZhciB4MSA9IGxbMF07CisgICAgICAgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGNtcCwgeDEsIHgy
KTsKKyAgICAgICAgICAgIGlmIChjKSB7CisgICAgICAgICAgICAgIGlmIChjIDwgMCkgeworICAg
ICAgICAgICAgICAgIHZhciBjJDEgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7CisgICAgICAgICAg
ICAgICAgaWYgKGMkMSkgeworICAgICAgICAgICAgICAgICAgaWYgKGMkMSA8IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICB2YXIgYyQyID0gQ3VycnkuXzIoY21wLCB4MSwgeDMpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoYyQyKSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYg
KGMkMiA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgdmFyIGMkMyA9IEN1cnJ5Ll8yKGNtcCwgeDEsIHgzKTsKKyAgICAgICAgICAgICAgICBpZiAo
YyQzKSB7CisgICAgICAgICAgICAgICAgICBpZiAoYyQzIDwgMCkgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBjJDQgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjJDQpIHsKKyAgICAgICAgICAgICAgICAgICAgICBpZiAoYyQ0IDwgMCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgIHZhciBjJDUgPSBDdXJyeS5fMihjbXAsIHgyLCB4Myk7CisgICAgICAgICAgICAgIGlmIChj
JDUpIHsKKyAgICAgICAgICAgICAgICBpZiAoYyQ1IDwgMCkgeworICAgICAgICAgICAgICAgICAg
cmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVy
biAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGV4aXQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICBleGl0ID0gMTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7Cisg
ICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChsKSB7CisgICAg
ICB2YXIgbWF0Y2gkMiA9IGxbMV07CisgICAgICBpZiAobWF0Y2gkMikgeworICAgICAgICB2YXIg
eDIkMSA9IG1hdGNoJDJbMF07CisgICAgICAgIHZhciB4MSQxID0gbFswXTsKKyAgICAgICAgdmFy
IGMkNiA9IEN1cnJ5Ll8yKGNtcCwgeDEkMSwgeDIkMSk7CisgICAgICAgIGlmIChjJDYpIHsKKyAg
ICAgICAgICBpZiAoYyQ2IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAg
ICAgICAgICAgICAgICAgICAgICB4MiQxLAorICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICov
MAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICBdOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgeDIkMSwKKyAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwor
ICAgICAgICAgICAgICAgICAgeDEkMSwKKyAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAg
ICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBleGl0ID0gMTsK
KyAgICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIHZhciBuMSA9IChuID4+IDEpOwor
ICAgICAgdmFyIG4yID0gbiAtIG4xIHwgMDsKKyAgICAgIHZhciBsMiA9IGNob3AobjEsIGwpOwor
ICAgICAgdmFyIHMxID0gcmV2X3NvcnQobjEsIGwpOworICAgICAgdmFyIHMyID0gcmV2X3NvcnQo
bjIsIGwyKTsKKyAgICAgIHZhciBfbDEgPSBzMTsKKyAgICAgIHZhciBfbDIgPSBzMjsKKyAgICAg
IHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgdmFy
IGFjY3UgPSBfYWNjdTsKKyAgICAgICAgdmFyIGwyJDEgPSBfbDI7CisgICAgICAgIHZhciBsMSA9
IF9sMTsKKyAgICAgICAgaWYgKGwxKSB7CisgICAgICAgICAgaWYgKGwyJDEpIHsKKyAgICAgICAg
ICAgIHZhciB0MiA9IGwyJDFbMV07CisgICAgICAgICAgICB2YXIgaDIgPSBsMiQxWzBdOworICAg
ICAgICAgICAgdmFyIHQxID0gbDFbMV07CisgICAgICAgICAgICB2YXIgaDEgPSBsMVswXTsKKyAg
ICAgICAgICAgIHZhciBjJDcgPSBDdXJyeS5fMihjbXAsIGgxLCBoMik7CisgICAgICAgICAgICBp
ZiAoYyQ3KSB7CisgICAgICAgICAgICAgIGlmIChjJDcgPiAwKSB7CisgICAgICAgICAgICAgICAg
X2FjY3UgPSAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIGgxLAorICAgICAgICAgICAgICAg
ICAgYWNjdQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgX2wxID0gdDE7Cisg
ICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9hY2N1ID0gLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICBoMiwKKyAgICAgICAgICAgICAgICAgIGFjY3UKKyAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIF9sMiA9IHQyOworICAgICAgICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9b
CisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAg
ICBdOworICAgICAgICAgICAgICBfbDIgPSB0MjsKKyAgICAgICAgICAgICAgX2wxID0gdDE7Cisg
ICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHJldl9hcHBl
bmQobDEsIGFjY3UpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMiQxLCBhY2N1KTsKKyAgICAgICAgfQorICAgICAg
fTsKKyAgICB9CisgICAgCisgIH07CisgIHZhciByZXZfc29ydCA9IGZ1bmN0aW9uIChuLCBsKSB7
CisgICAgdmFyIGV4aXQgPSAwOworICAgIGlmIChuICE9PSAyKSB7CisgICAgICBpZiAobiAhPT0g
MykgeworICAgICAgICBleGl0ID0gMTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGwpIHsKKyAg
ICAgICAgdmFyIG1hdGNoID0gbFsxXTsKKyAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAg
dmFyIG1hdGNoJDEgPSBtYXRjaFsxXTsKKyAgICAgICAgICBpZiAobWF0Y2gkMSkgeworICAgICAg
ICAgICAgdmFyIHgzID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICAgIHZhciB4MiA9IG1hdGNoWzBd
OworICAgICAgICAgICAgdmFyIHgxID0gbFswXTsKKyAgICAgICAgICAgIHZhciBjID0gQ3Vycnku
XzIoY21wLCB4MSwgeDIpOworICAgICAgICAgICAgaWYgKGMpIHsKKyAgICAgICAgICAgICAgaWYg
KGMgPiAwKSB7CisgICAgICAgICAgICAgICAgdmFyIGMkMSA9IEN1cnJ5Ll8yKGNtcCwgeDIsIHgz
KTsKKyAgICAgICAgICAgICAgICBpZiAoYyQxKSB7CisgICAgICAgICAgICAgICAgICBpZiAoYyQx
ID4gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjJDIgPSBDdXJyeS5fMihj
bXAsIHgxLCB4Myk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjJDIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYyQyID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
eDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICB2YXIgYyQzID0gQ3VycnkuXzIoY21wLCB4MSwgeDMpOworICAgICAg
ICAgICAgICAgIGlmIChjJDMpIHsKKyAgICAgICAgICAgICAgICAgIGlmIChjJDMgPiAwKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGMkNCA9IEN1cnJ5Ll8yKGNtcCwgeDIsIHgz
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMkNCkgeworICAgICAgICAgICAgICAgICAgICAg
IGlmIChjJDQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAq
LzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIF07CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgdmFyIGMkNSA9IEN1cnJ5Ll8yKGNtcCwgeDIsIHgzKTsKKyAgICAg
ICAgICAgICAgaWYgKGMkNSkgeworICAgICAgICAgICAgICAgIGlmIChjJDUgPiAwKSB7CisgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgeDIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgZXhpdCA9IDE7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgIGV4aXQgPSAxOworICAgICAgICB9CisgICAgICB9Cisg
ICAgICBlbHNlIHsKKyAgICAgICAgZXhpdCA9IDE7CisgICAgICB9CisgICAgfQorICAgIGVsc2Ug
aWYgKGwpIHsKKyAgICAgIHZhciBtYXRjaCQyID0gbFsxXTsKKyAgICAgIGlmIChtYXRjaCQyKSB7
CisgICAgICAgIHZhciB4MiQxID0gbWF0Y2gkMlswXTsKKyAgICAgICAgdmFyIHgxJDEgPSBsWzBd
OworICAgICAgICB2YXIgYyQ2ID0gQ3VycnkuXzIoY21wLCB4MSQxLCB4MiQxKTsKKyAgICAgICAg
aWYgKGMkNikgeworICAgICAgICAgIGlmIChjJDYgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4g
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgIHgxJDEsCisgICAgICAgICAgICAgICAgICAg
IC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgIHgyJDEsCisgICAgICAgICAgICAgICAg
ICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIC8q
IDo6ICovWworICAgICAgICAgICAgICAgICAgICB4MiQxLAorICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAg
ICAgIC8qIFtdICovMAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICBd
OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1
cm4gLyogOjogKi9bCisgICAgICAgICAgICAgICAgICB4MSQxLAorICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgIGV4aXQgPSAxOworICAgIH0KKyAgICBpZiAoZXhpdCA9PT0gMSkgeworICAgICAgdmFyIG4x
ID0gKG4gPj4gMSk7CisgICAgICB2YXIgbjIgPSBuIC0gbjEgfCAwOworICAgICAgdmFyIGwyID0g
Y2hvcChuMSwgbCk7CisgICAgICB2YXIgczEgPSBzb3J0KG4xLCBsKTsKKyAgICAgIHZhciBzMiA9
IHNvcnQobjIsIGwyKTsKKyAgICAgIHZhciBfbDEgPSBzMTsKKyAgICAgIHZhciBfbDIgPSBzMjsK
KyAgICAgIHZhciBfYWNjdSA9IC8qIFtdICovMDsKKyAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAg
ICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICAgICAgdmFyIGwyJDEgPSBfbDI7CisgICAgICAgIHZh
ciBsMSA9IF9sMTsKKyAgICAgICAgaWYgKGwxKSB7CisgICAgICAgICAgaWYgKGwyJDEpIHsKKyAg
ICAgICAgICAgIHZhciB0MiA9IGwyJDFbMV07CisgICAgICAgICAgICB2YXIgaDIgPSBsMiQxWzBd
OworICAgICAgICAgICAgdmFyIHQxID0gbDFbMV07CisgICAgICAgICAgICB2YXIgaDEgPSBsMVsw
XTsKKyAgICAgICAgICAgIHZhciBjJDcgPSBDdXJyeS5fMihjbXAsIGgxLCBoMik7CisgICAgICAg
ICAgICBpZiAoYyQ3KSB7CisgICAgICAgICAgICAgIGlmIChjJDcgPCAwKSB7CisgICAgICAgICAg
ICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAgIGgxLAorICAgICAgICAg
ICAgICAgICAgYWNjdQorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgICAgICAgX2wxID0g
dDE7CisgICAgICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9hY2N1ID0g
LyogOjogKi9bCisgICAgICAgICAgICAgICAgICBoMiwKKyAgICAgICAgICAgICAgICAgIGFjY3UK
KyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICAgIF9sMiA9IHQyOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIF9hY2N1ID0gLyog
OjogKi9bCisgICAgICAgICAgICAgICAgaDEsCisgICAgICAgICAgICAgICAgYWNjdQorICAgICAg
ICAgICAgICBdOworICAgICAgICAgICAgICBfbDIgPSB0MjsKKyAgICAgICAgICAgICAgX2wxID0g
dDE7CisgICAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHJl
dl9hcHBlbmQobDEsIGFjY3UpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICByZXR1cm4gcmV2X2FwcGVuZChsMiQxLCBhY2N1KTsKKyAgICAgICAgfQor
ICAgICAgfTsKKyAgICB9CisgICAgCisgIH07CisgIHZhciBsZW4gPSBsZW5ndGgobCk7CisgIGlm
IChsZW4gPCAyKSB7CisgICAgcmV0dXJuIGw7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHNv
cnQobGVuLCBsKTsKKyAgfQorfQorCit2YXIgYXBwZW5kID0gUGVydmFzaXZlcy4kYXQ7CisKK3Zh
ciBjb25jYXQgPSBmbGF0dGVuOworCit2YXIgZmlsdGVyID0gZmluZF9hbGw7CisKK3ZhciBzb3J0
ID0gc3RhYmxlX3NvcnQ7CisKK3ZhciBmYXN0X3NvcnQgPSBzdGFibGVfc29ydDsKKworZXhwb3J0
cy5sZW5ndGggICAgICAgPSBsZW5ndGg7CitleHBvcnRzLmhkICAgICAgICAgICA9IGhkOworZXhw
b3J0cy50bCAgICAgICAgICAgPSB0bDsKK2V4cG9ydHMubnRoICAgICAgICAgID0gbnRoOworZXhw
b3J0cy5yZXYgICAgICAgICAgPSByZXY7CitleHBvcnRzLmFwcGVuZCAgICAgICA9IGFwcGVuZDsK
K2V4cG9ydHMucmV2X2FwcGVuZCAgID0gcmV2X2FwcGVuZDsKK2V4cG9ydHMuY29uY2F0ICAgICAg
ID0gY29uY2F0OworZXhwb3J0cy5mbGF0dGVuICAgICAgPSBmbGF0dGVuOworZXhwb3J0cy5pdGVy
ICAgICAgICAgPSBpdGVyOworZXhwb3J0cy5pdGVyaSAgICAgICAgPSBpdGVyaTsKK2V4cG9ydHMu
bWFwICAgICAgICAgID0gbWFwOworZXhwb3J0cy5tYXBpICAgICAgICAgPSBtYXBpJDE7CitleHBv
cnRzLnJldl9tYXAgICAgICA9IHJldl9tYXA7CitleHBvcnRzLmZvbGRfbGVmdCAgICA9IGZvbGRf
bGVmdDsKK2V4cG9ydHMuZm9sZF9yaWdodCAgID0gZm9sZF9yaWdodDsKK2V4cG9ydHMuaXRlcjIg
ICAgICAgID0gaXRlcjI7CitleHBvcnRzLm1hcDIgICAgICAgICA9IG1hcDI7CitleHBvcnRzLnJl
dl9tYXAyICAgICA9IHJldl9tYXAyOworZXhwb3J0cy5mb2xkX2xlZnQyICAgPSBmb2xkX2xlZnQy
OworZXhwb3J0cy5mb2xkX3JpZ2h0MiAgPSBmb2xkX3JpZ2h0MjsKK2V4cG9ydHMuZm9yX2FsbCAg
ICAgID0gZm9yX2FsbDsKK2V4cG9ydHMuZXhpc3RzICAgICAgID0gZXhpc3RzOworZXhwb3J0cy5m
b3JfYWxsMiAgICAgPSBmb3JfYWxsMjsKK2V4cG9ydHMuZXhpc3RzMiAgICAgID0gZXhpc3RzMjsK
K2V4cG9ydHMubWVtICAgICAgICAgID0gbWVtOworZXhwb3J0cy5tZW1xICAgICAgICAgPSBtZW1x
OworZXhwb3J0cy5maW5kICAgICAgICAgPSBmaW5kOworZXhwb3J0cy5maWx0ZXIgICAgICAgPSBm
aWx0ZXI7CitleHBvcnRzLmZpbmRfYWxsICAgICA9IGZpbmRfYWxsOworZXhwb3J0cy5wYXJ0aXRp
b24gICAgPSBwYXJ0aXRpb247CitleHBvcnRzLmFzc29jICAgICAgICA9IGFzc29jOworZXhwb3J0
cy5hc3NxICAgICAgICAgPSBhc3NxOworZXhwb3J0cy5tZW1fYXNzb2MgICAgPSBtZW1fYXNzb2M7
CitleHBvcnRzLm1lbV9hc3NxICAgICA9IG1lbV9hc3NxOworZXhwb3J0cy5yZW1vdmVfYXNzb2Mg
PSByZW1vdmVfYXNzb2M7CitleHBvcnRzLnJlbW92ZV9hc3NxICA9IHJlbW92ZV9hc3NxOworZXhw
b3J0cy5zcGxpdCAgICAgICAgPSBzcGxpdDsKK2V4cG9ydHMuY29tYmluZSAgICAgID0gY29tYmlu
ZTsKK2V4cG9ydHMuc29ydCAgICAgICAgID0gc29ydDsKK2V4cG9ydHMuc3RhYmxlX3NvcnQgID0g
c3RhYmxlX3NvcnQ7CitleHBvcnRzLmZhc3Rfc29ydCAgICA9IGZhc3Rfc29ydDsKK2V4cG9ydHMu
c29ydF91bmlxICAgID0gc29ydF91bmlxOworZXhwb3J0cy5tZXJnZSAgICAgICAgPSBtZXJnZTsK
Ky8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgbGlzdC5qcyAvLy8vLy8vLwor
wqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydtYXAnXSA9IGZ1
bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIG1h
cC5qcyAvLy8vLy8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ3VycnkgICAgICAgICAgICAgICAg
ICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSBy
ZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIE1ha2UoZnVu
YXJnKSB7CisgIHZhciBoZWlnaHQgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBpZiAocGFyYW0p
IHsKKyAgICAgIHJldHVybiBwYXJhbVs0XTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1
cm4gMDsKKyAgICB9CisgIH07CisgIHZhciBjcmVhdGUgPSBmdW5jdGlvbiAobCwgeCwgZCwgcikg
eworICAgIHZhciBobCA9IGhlaWdodChsKTsKKyAgICB2YXIgaHIgPSBoZWlnaHQocik7CisgICAg
cmV0dXJuIC8qIE5vZGUgKi9bCisgICAgICAgICAgICBsLAorICAgICAgICAgICAgeCwKKyAgICAg
ICAgICAgIGQsCisgICAgICAgICAgICByLAorICAgICAgICAgICAgaGwgPj0gaHIgPyBobCArIDEg
fCAwIDogaHIgKyAxIHwgMAorICAgICAgICAgIF07CisgIH07CisgIHZhciBzaW5nbGV0b24gPSBm
dW5jdGlvbiAoeCwgZCkgeworICAgIHJldHVybiAvKiBOb2RlICovWworICAgICAgICAgICAgLyog
RW1wdHkgKi8wLAorICAgICAgICAgICAgeCwKKyAgICAgICAgICAgIGQsCisgICAgICAgICAgICAv
KiBFbXB0eSAqLzAsCisgICAgICAgICAgICAxCisgICAgICAgICAgXTsKKyAgfTsKKyAgdmFyIGJh
bCA9IGZ1bmN0aW9uIChsLCB4LCBkLCByKSB7CisgICAgdmFyIGhsID0gbCA/IGxbNF0gOiAwOwor
ICAgIHZhciBociA9IHIgPyByWzRdIDogMDsKKyAgICBpZiAoaGwgPiAoaHIgKyAyIHwgMCkpIHsK
KyAgICAgIGlmIChsKSB7CisgICAgICAgIHZhciBsciA9IGxbM107CisgICAgICAgIHZhciBsZCA9
IGxbMl07CisgICAgICAgIHZhciBsdiA9IGxbMV07CisgICAgICAgIHZhciBsbCA9IGxbMF07Cisg
ICAgICAgIGlmIChoZWlnaHQobGwpID49IGhlaWdodChscikpIHsKKyAgICAgICAgICByZXR1cm4g
Y3JlYXRlKGxsLCBsdiwgbGQsIGNyZWF0ZShsciwgeCwgZCwgcikpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKGxyKSB7CisgICAgICAgICAgcmV0dXJuIGNyZWF0ZShjcmVhdGUobGwsIGx2
LCBsZCwgbHJbMF0pLCBsclsxXSwgbHJbMl0sIGNyZWF0ZShsclszXSwgeCwgZCwgcikpOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAg
ICAgICJNYXAuYmFsIgorICAgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBlbHNlIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgICAiTWFwLmJhbCIKKyAgICAg
ICAgICAgIF07CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGhyID4gKGhsICsgMiB8IDAp
KSB7CisgICAgICBpZiAocikgeworICAgICAgICB2YXIgcnIgPSByWzNdOworICAgICAgICB2YXIg
cmQgPSByWzJdOworICAgICAgICB2YXIgcnYgPSByWzFdOworICAgICAgICB2YXIgcmwgPSByWzBd
OworICAgICAgICBpZiAoaGVpZ2h0KHJyKSA+PSBoZWlnaHQocmwpKSB7CisgICAgICAgICAgcmV0
dXJuIGNyZWF0ZShjcmVhdGUobCwgeCwgZCwgcmwpLCBydiwgcmQsIHJyKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIGlmIChybCkgeworICAgICAgICAgIHJldHVybiBjcmVhdGUoY3JlYXRlKGws
IHgsIGQsIHJsWzBdKSwgcmxbMV0sIHJsWzJdLCBjcmVhdGUocmxbM10sIHJ2LCByZCwgcnIpKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAgICAgICAiTWFwLmJhbCIKKyAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAgICAgIk1hcC5iYWwiCisg
ICAgICAgICAgICBdOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAv
KiBOb2RlICovWworICAgICAgICAgICAgICBsLAorICAgICAgICAgICAgICB4LAorICAgICAgICAg
ICAgICBkLAorICAgICAgICAgICAgICByLAorICAgICAgICAgICAgICBobCA+PSBociA/IGhsICsg
MSB8IDAgOiBociArIDEgfCAwCisgICAgICAgICAgICBdOworICAgIH0KKyAgfTsKKyAgdmFyIGlz
X2VtcHR5ID0gZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICByZXR1
cm4gLyogZmFsc2UgKi8wOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0cnVl
ICovMTsKKyAgICB9CisgIH07CisgIHZhciBhZGQgPSBmdW5jdGlvbiAoeCwgZGF0YSwgcGFyYW0p
IHsKKyAgICBpZiAocGFyYW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICB2YXIg
ZCA9IHBhcmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsID0gcGFy
YW1bMF07CisgICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJlICovMF0sIHgs
IHYpOworICAgICAgaWYgKGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgcmV0
dXJuIGJhbChhZGQoeCwgZGF0YSwgbCksIHYsIGQsIHIpOworICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgIHJldHVybiBiYWwobCwgdiwgZCwgYWRkKHgsIGRhdGEsIHIpKTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiBOb2RlICov
WworICAgICAgICAgICAgICAgIGwsCisgICAgICAgICAgICAgICAgeCwKKyAgICAgICAgICAgICAg
ICBkYXRhLAorICAgICAgICAgICAgICAgIHIsCisgICAgICAgICAgICAgICAgcGFyYW1bNF0KKyAg
ICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4g
LyogTm9kZSAqL1sKKyAgICAgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAgICAgICAgICB4
LAorICAgICAgICAgICAgICBkYXRhLAorICAgICAgICAgICAgICAvKiBFbXB0eSAqLzAsCisgICAg
ICAgICAgICAgIDEKKyAgICAgICAgICAgIF07CisgICAgfQorICB9OworICB2YXIgZmluZCA9IGZ1
bmN0aW9uICh4LCBfcGFyYW0pIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0g
PSBfcGFyYW07CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGMgPSBDdXJyeS5fMihm
dW5hcmdbLyogY29tcGFyZSAqLzBdLCB4LCBwYXJhbVsxXSk7CisgICAgICAgIGlmIChjKSB7Cisg
ICAgICAgICAgX3BhcmFtID0gYyA8IDAgPyBwYXJhbVswXSA6IHBhcmFtWzNdOworICAgICAgICAg
IGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICByZXR1cm4gcGFyYW1bMl07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAgICB9
CisgICAgfTsKKyAgfTsKKyAgdmFyIG1lbSA9IGZ1bmN0aW9uICh4LCBfcGFyYW0pIHsKKyAgICB3
aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICBpZiAocGFyYW0p
IHsKKyAgICAgICAgdmFyIGMgPSBDdXJyeS5fMihmdW5hcmdbLyogY29tcGFyZSAqLzBdLCB4LCBw
YXJhbVsxXSk7CisgICAgICAgIGlmIChjKSB7CisgICAgICAgICAgX3BhcmFtID0gYyA8IDAgPyBw
YXJhbVswXSA6IHBhcmFtWzNdOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogZmFsc2Ug
Ki8wOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBtaW5fYmluZGluZyA9IGZ1bmN0aW9u
IChfcGFyYW0pIHsKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07
CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGwgPSBwYXJhbVswXTsKKyAgICAgICAg
aWYgKGwpIHsKKyAgICAgICAgICBfcGFyYW0gPSBsOworICAgICAgICAgIGNvbnRpbnVlIDsKKyAg
ICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAgICAgICAgICAgICAg
IHBhcmFtWzJdCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsK
KyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgbWF4X2JpbmRpbmcgPSBmdW5jdGlvbiAoX3Bh
cmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAg
ICAgaWYgKHBhcmFtKSB7CisgICAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICAgIGlmIChy
KSB7CisgICAgICAgICAgX3BhcmFtID0gcjsKKyAgICAgICAgICBjb250aW51ZSA7CisgICAgICAg
ICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAgICAgcGFyYW1bMV0sCisgICAgICAgICAgICAgICAgICBwYXJh
bVsyXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7CisgICAg
ICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uIChw
YXJhbSkgeworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGwgPSBwYXJhbVswXTsKKyAgICAg
IGlmIChsKSB7CisgICAgICAgIHJldHVybiBiYWwocmVtb3ZlX21pbl9iaW5kaW5nKGwpLCBwYXJh
bVsxXSwgcGFyYW1bMl0sIHBhcmFtWzNdKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICByZXR1cm4gcGFyYW1bM107CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhy
b3cgWworICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVu
dCwKKyAgICAgICAgICAgICJNYXAucmVtb3ZlX21pbl9lbHQiCisgICAgICAgICAgXTsKKyAgICB9
CisgIH07CisgIHZhciByZW1vdmUgPSBmdW5jdGlvbiAoeCwgcGFyYW0pIHsKKyAgICBpZiAocGFy
YW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICB2YXIgZCA9IHBhcmFtWzJdOwor
ICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsID0gcGFyYW1bMF07CisgICAgICB2
YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJlICovMF0sIHgsIHYpOworICAgICAgaWYg
KGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgcmV0dXJuIGJhbChyZW1vdmUo
eCwgbCksIHYsIGQsIHIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJl
dHVybiBiYWwobCwgdiwgZCwgcmVtb3ZlKHgsIHIpKTsKKyAgICAgICAgfQorICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIHZhciB0MSA9IGw7CisgICAgICAgIHZhciB0MiA9IHI7CisgICAg
ICAgIGlmICh0MSkgeworICAgICAgICAgIGlmICh0MikgeworICAgICAgICAgICAgdmFyIG1hdGNo
ID0gbWluX2JpbmRpbmcodDIpOworICAgICAgICAgICAgcmV0dXJuIGJhbCh0MSwgbWF0Y2hbMF0s
IG1hdGNoWzFdLCByZW1vdmVfbWluX2JpbmRpbmcodDIpKTsKKyAgICAgICAgICB9CisgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdDE7CisgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiB0MjsKKyAgICAgICAgfQorICAgICAg
fQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBFbXB0eSAqLzA7CisgICAgfQor
ICB9OworICB2YXIgaXRlciA9IGZ1bmN0aW9uIChmLCBfcGFyYW0pIHsKKyAgICB3aGlsZSh0cnVl
KSB7CisgICAgICB2YXIgcGFyYW0gPSBfcGFyYW07CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAg
ICAgaXRlcihmLCBwYXJhbVswXSk7CisgICAgICAgIEN1cnJ5Ll8yKGYsIHBhcmFtWzFdLCBwYXJh
bVsyXSk7CisgICAgICAgIF9wYXJhbSA9IHBhcmFtWzNdOworICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiAoKSAqLzA7
CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIG1hcCA9IGZ1bmN0aW9uIChmLCBwYXJhbSkg
eworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGwkcHJpbWUgPSBtYXAoZiwgcGFyYW1bMF0p
OworICAgICAgdmFyIGQkcHJpbWUgPSBDdXJyeS5fMShmLCBwYXJhbVsyXSk7CisgICAgICB2YXIg
ciRwcmltZSA9IG1hcChmLCBwYXJhbVszXSk7CisgICAgICByZXR1cm4gLyogTm9kZSAqL1sKKyAg
ICAgICAgICAgICAgbCRwcmltZSwKKyAgICAgICAgICAgICAgcGFyYW1bMV0sCisgICAgICAgICAg
ICAgIGQkcHJpbWUsCisgICAgICAgICAgICAgIHIkcHJpbWUsCisgICAgICAgICAgICAgIHBhcmFt
WzRdCisgICAgICAgICAgICBdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiBF
bXB0eSAqLzA7CisgICAgfQorICB9OworICB2YXIgbWFwaSA9IGZ1bmN0aW9uIChmLCBwYXJhbSkg
eworICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBs
JHByaW1lID0gbWFwaShmLCBwYXJhbVswXSk7CisgICAgICB2YXIgZCRwcmltZSA9IEN1cnJ5Ll8y
KGYsIHYsIHBhcmFtWzJdKTsKKyAgICAgIHZhciByJHByaW1lID0gbWFwaShmLCBwYXJhbVszXSk7
CisgICAgICByZXR1cm4gLyogTm9kZSAqL1sKKyAgICAgICAgICAgICAgbCRwcmltZSwKKyAgICAg
ICAgICAgICAgdiwKKyAgICAgICAgICAgICAgZCRwcmltZSwKKyAgICAgICAgICAgICAgciRwcmlt
ZSwKKyAgICAgICAgICAgICAgcGFyYW1bNF0KKyAgICAgICAgICAgIF07CisgICAgfQorICAgIGVs
c2UgeworICAgICAgcmV0dXJuIC8qIEVtcHR5ICovMDsKKyAgICB9CisgIH07CisgIHZhciBmb2xk
ID0gZnVuY3Rpb24gKGYsIF9tLCBfYWNjdSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZh
ciBhY2N1ID0gX2FjY3U7CisgICAgICB2YXIgbSA9IF9tOworICAgICAgaWYgKG0pIHsKKyAgICAg
ICAgX2FjY3UgPSBDdXJyeS5fMyhmLCBtWzFdLCBtWzJdLCBmb2xkKGYsIG1bMF0sIGFjY3UpKTsK
KyAgICAgICAgX20gPSBtWzNdOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAorICAgICAg
fQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBhY2N1OworICAgICAgfQorICAgIH07Cisg
IH07CisgIHZhciBmb3JfYWxsID0gZnVuY3Rpb24gKHAsIF9wYXJhbSkgeworICAgIHdoaWxlKHRy
dWUpIHsKKyAgICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICAgIGlmIChwYXJhbSkgeworICAg
ICAgICBpZiAoQ3VycnkuXzIocCwgcGFyYW1bMV0sIHBhcmFtWzJdKSkgeworICAgICAgICAgIGlm
IChmb3JfYWxsKHAsIHBhcmFtWzBdKSkgeworICAgICAgICAgICAgX3BhcmFtID0gcGFyYW1bM107
CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAgICAKKyAgICAgICAgICB9CisgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gLyogZmFsc2Ug
Ki8wOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8q
IHRydWUgKi8xOworICAgICAgfQorICAgIH07CisgIH07CisgIHZhciBleGlzdHMgPSBmdW5jdGlv
biAocCwgX3BhcmFtKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3Bh
cmFtOworICAgICAgaWYgKHBhcmFtKSB7CisgICAgICAgIGlmIChDdXJyeS5fMihwLCBwYXJhbVsx
XSwgcGFyYW1bMl0pKSB7CisgICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOworICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYgKGV4aXN0cyhwLCBwYXJhbVswXSkpIHsKKyAgICAgICAgICByZXR1
cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgX3Bh
cmFtID0gcGFyYW1bM107CisgICAgICAgICAgY29udGludWUgOworICAgICAgICAgIAorICAgICAg
ICB9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsK
KyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgYWRkX21pbl9iaW5kaW5nID0gZnVuY3Rpb24g
KGssIHYsIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICByZXR1cm4gYmFsKGFkZF9t
aW5fYmluZGluZyhrLCB2LCBwYXJhbVswXSksIHBhcmFtWzFdLCBwYXJhbVsyXSwgcGFyYW1bM10p
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzaW5nbGV0b24oaywgdik7CisgICAg
fQorICB9OworICB2YXIgYWRkX21heF9iaW5kaW5nID0gZnVuY3Rpb24gKGssIHYsIHBhcmFtKSB7
CisgICAgaWYgKHBhcmFtKSB7CisgICAgICByZXR1cm4gYmFsKHBhcmFtWzBdLCBwYXJhbVsxXSwg
cGFyYW1bMl0sIGFkZF9tYXhfYmluZGluZyhrLCB2LCBwYXJhbVszXSkpOworICAgIH0KKyAgICBl
bHNlIHsKKyAgICAgIHJldHVybiBzaW5nbGV0b24oaywgdik7CisgICAgfQorICB9OworICB2YXIg
am9pbiA9IGZ1bmN0aW9uIChsLCB2LCBkLCByKSB7CisgICAgaWYgKGwpIHsKKyAgICAgIGlmIChy
KSB7CisgICAgICAgIHZhciByaCA9IHJbNF07CisgICAgICAgIHZhciBsaCA9IGxbNF07CisgICAg
ICAgIGlmIChsaCA+IChyaCArIDIgfCAwKSkgeworICAgICAgICAgIHJldHVybiBiYWwobFswXSwg
bFsxXSwgbFsyXSwgam9pbihsWzNdLCB2LCBkLCByKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSBpZiAocmggPiAobGggKyAyIHwgMCkpIHsKKyAgICAgICAgICByZXR1cm4gYmFsKGpvaW4obCwg
diwgZCwgclswXSksIHJbMV0sIHJbMl0sIHJbM10pOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIHJldHVybiBjcmVhdGUobCwgdiwgZCwgcik7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gYWRkX21heF9iaW5kaW5nKHYsIGQsIGwp
OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBhZGRfbWluX2JpbmRp
bmcodiwgZCwgcik7CisgICAgfQorICB9OworICB2YXIgY29uY2F0ID0gZnVuY3Rpb24gKHQxLCB0
MikgeworICAgIGlmICh0MSkgeworICAgICAgaWYgKHQyKSB7CisgICAgICAgIHZhciBtYXRjaCA9
IG1pbl9iaW5kaW5nKHQyKTsKKyAgICAgICAgcmV0dXJuIGpvaW4odDEsIG1hdGNoWzBdLCBtYXRj
aFsxXSwgcmVtb3ZlX21pbl9iaW5kaW5nKHQyKSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAg
ICAgICAgcmV0dXJuIHQxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVy
biB0MjsKKyAgICB9CisgIH07CisgIHZhciBjb25jYXRfb3Jfam9pbiA9IGZ1bmN0aW9uICh0MSwg
diwgZCwgdDIpIHsKKyAgICBpZiAoZCkgeworICAgICAgcmV0dXJuIGpvaW4odDEsIHYsIGRbMF0s
IHQyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gY29uY2F0KHQxLCB0Mik7Cisg
ICAgfQorICB9OworICB2YXIgc3BsaXQgPSBmdW5jdGlvbiAoeCwgcGFyYW0pIHsKKyAgICBpZiAo
cGFyYW0pIHsKKyAgICAgIHZhciByID0gcGFyYW1bM107CisgICAgICB2YXIgZCA9IHBhcmFtWzJd
OworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsID0gcGFyYW1bMF07CisgICAg
ICB2YXIgYyA9IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJlICovMF0sIHgsIHYpOworICAgICAg
aWYgKGMpIHsKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgdmFyIG1hdGNoID0gc3Bs
aXQoeCwgbCk7CisgICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAg
ICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKKyAgICAgICAgICAgICAg
ICAgIGpvaW4obWF0Y2hbMl0sIHYsIGQsIHIpCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHNwbGl0KHgsIHIpOwor
ICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIGpvaW4obCwg
diwgZCwgbWF0Y2gkMVswXSksCisgICAgICAgICAgICAgICAgICBtYXRjaCQxWzFdLAorICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMVsyXQorICAgICAgICAgICAgICAgIF07CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgICAgbCwKKyAgICAgICAgICAgICAgICAvKiBTb21lICovW2RdLAorICAgICAgICAgICAg
ICAgIHIKKyAgICAgICAgICAgICAgXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIEVtcHR5ICovMCwKKyAgICAg
ICAgICAgICAgLyogTm9uZSAqLzAsCisgICAgICAgICAgICAgIC8qIEVtcHR5ICovMAorICAgICAg
ICAgICAgXTsKKyAgICB9CisgIH07CisgIHZhciBtZXJnZSA9IGZ1bmN0aW9uIChmLCBzMSwgczIp
IHsKKyAgICB2YXIgZXhpdCA9IDA7CisgICAgaWYgKHMxKSB7CisgICAgICB2YXIgdjEgPSBzMVsx
XTsKKyAgICAgIGlmIChzMVs0XSA+PSBoZWlnaHQoczIpKSB7CisgICAgICAgIHZhciBtYXRjaCA9
IHNwbGl0KHYxLCBzMik7CisgICAgICAgIHJldHVybiBjb25jYXRfb3Jfam9pbihtZXJnZShmLCBz
MVswXSwgbWF0Y2hbMF0pLCB2MSwgQ3VycnkuXzMoZiwgdjEsIC8qIFNvbWUgKi9bczFbMl1dLCBt
YXRjaFsxXSksIG1lcmdlKGYsIHMxWzNdLCBtYXRjaFsyXSkpOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIGV4aXQgPSAxOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChzMikg
eworICAgICAgZXhpdCA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIEVt
cHR5ICovMDsKKyAgICB9CisgICAgaWYgKGV4aXQgPT09IDEpIHsKKyAgICAgIGlmIChzMikgewor
ICAgICAgICB2YXIgdjIgPSBzMlsxXTsKKyAgICAgICAgdmFyIG1hdGNoJDEgPSBzcGxpdCh2Miwg
czEpOworICAgICAgICByZXR1cm4gY29uY2F0X29yX2pvaW4obWVyZ2UoZiwgbWF0Y2gkMVswXSwg
czJbMF0pLCB2MiwgQ3VycnkuXzMoZiwgdjIsIG1hdGNoJDFbMV0sIC8qIFNvbWUgKi9bczJbMl1d
KSwgbWVyZ2UoZiwgbWF0Y2gkMVsyXSwgczJbM10pKTsKKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAorICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIm1hcC5tbCIs
CisgICAgICAgICAgICAgICAgMjcwLAorICAgICAgICAgICAgICAgIDEwCisgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgfQorICAgIAorICB9OworICB2YXIgZmls
dGVyID0gZnVuY3Rpb24gKHAsIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtKSB7CisgICAgICB2YXIg
ZCA9IHBhcmFtWzJdOworICAgICAgdmFyIHYgPSBwYXJhbVsxXTsKKyAgICAgIHZhciBsJHByaW1l
ID0gZmlsdGVyKHAsIHBhcmFtWzBdKTsKKyAgICAgIHZhciBwdmQgPSBDdXJyeS5fMihwLCB2LCBk
KTsKKyAgICAgIHZhciByJHByaW1lID0gZmlsdGVyKHAsIHBhcmFtWzNdKTsKKyAgICAgIGlmIChw
dmQpIHsKKyAgICAgICAgcmV0dXJuIGpvaW4obCRwcmltZSwgdiwgZCwgciRwcmltZSk7CisgICAg
ICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGNvbmNhdChsJHByaW1lLCByJHByaW1l
KTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gLyogRW1wdHkgKi8w
OworICAgIH0KKyAgfTsKKyAgdmFyIHBhcnRpdGlvbiA9IGZ1bmN0aW9uIChwLCBwYXJhbSkgewor
ICAgIGlmIChwYXJhbSkgeworICAgICAgdmFyIGQgPSBwYXJhbVsyXTsKKyAgICAgIHZhciB2ID0g
cGFyYW1bMV07CisgICAgICB2YXIgbWF0Y2ggPSBwYXJ0aXRpb24ocCwgcGFyYW1bMF0pOworICAg
ICAgdmFyIGxmID0gbWF0Y2hbMV07CisgICAgICB2YXIgbHQgPSBtYXRjaFswXTsKKyAgICAgIHZh
ciBwdmQgPSBDdXJyeS5fMihwLCB2LCBkKTsKKyAgICAgIHZhciBtYXRjaCQxID0gcGFydGl0aW9u
KHAsIHBhcmFtWzNdKTsKKyAgICAgIHZhciByZiA9IG1hdGNoJDFbMV07CisgICAgICB2YXIgcnQg
PSBtYXRjaCQxWzBdOworICAgICAgaWYgKHB2ZCkgeworICAgICAgICByZXR1cm4gLyogdHVwbGUg
Ki9bCisgICAgICAgICAgICAgICAgam9pbihsdCwgdiwgZCwgcnQpLAorICAgICAgICAgICAgICAg
IGNvbmNhdChsZiwgcmYpCisgICAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBlbHNlIHsK
KyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAgIGNvbmNhdChsdCwg
cnQpLAorICAgICAgICAgICAgICAgIGpvaW4obGYsIHYsIGQsIHJmKQorICAgICAgICAgICAgICBd
OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
KyAgICAgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAgICAgICAgICAvKiBFbXB0eSAqLzAK
KyAgICAgICAgICAgIF07CisgICAgfQorICB9OworICB2YXIgY29uc19lbnVtID0gZnVuY3Rpb24g
KF9tLCBfZSkgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBlID0gX2U7CisgICAgICB2
YXIgbSA9IF9tOworICAgICAgaWYgKG0pIHsKKyAgICAgICAgX2UgPSAvKiBNb3JlICovWworICAg
ICAgICAgIG1bMV0sCisgICAgICAgICAgbVsyXSwKKyAgICAgICAgICBtWzNdLAorICAgICAgICAg
IGUKKyAgICAgICAgXTsKKyAgICAgICAgX20gPSBtWzBdOworICAgICAgICBjb250aW51ZSA7Cisg
ICAgICAgIAorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBlOworICAgICAg
fQorICAgIH07CisgIH07CisgIHZhciBjb21wYXJlID0gZnVuY3Rpb24gKGNtcCwgbTEsIG0yKSB7
CisgICAgdmFyIF9lMSA9IGNvbnNfZW51bShtMSwgLyogRW5kICovMCk7CisgICAgdmFyIF9lMiA9
IGNvbnNfZW51bShtMiwgLyogRW5kICovMCk7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFy
IGUyID0gX2UyOworICAgICAgdmFyIGUxID0gX2UxOworICAgICAgaWYgKGUxKSB7CisgICAgICAg
IGlmIChlMikgeworICAgICAgICAgIHZhciBjID0gQ3VycnkuXzIoZnVuYXJnWy8qIGNvbXBhcmUg
Ki8wXSwgZTFbMF0sIGUyWzBdKTsKKyAgICAgICAgICBpZiAoYyAhPT0gMCkgeworICAgICAgICAg
ICAgcmV0dXJuIGM7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
dmFyIGMkMSA9IEN1cnJ5Ll8yKGNtcCwgZTFbMV0sIGUyWzFdKTsKKyAgICAgICAgICAgIGlmIChj
JDEgIT09IDApIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGMkMTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBfZTIgPSBjb25zX2VudW0oZTJbMl0sIGUy
WzNdKTsKKyAgICAgICAgICAgICAgX2UxID0gY29uc19lbnVtKGUxWzJdLCBlMVszXSk7CisgICAg
ICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJldHVybiAxOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChlMikgeworICAgICAgICByZXR1cm4g
LTE7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9Cisg
ICAgfTsKKyAgfTsKKyAgdmFyIGVxdWFsID0gZnVuY3Rpb24gKGNtcCwgbTEsIG0yKSB7CisgICAg
dmFyIF9lMSA9IGNvbnNfZW51bShtMSwgLyogRW5kICovMCk7CisgICAgdmFyIF9lMiA9IGNvbnNf
ZW51bShtMiwgLyogRW5kICovMCk7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIGUyID0g
X2UyOworICAgICAgdmFyIGUxID0gX2UxOworICAgICAgaWYgKGUxKSB7CisgICAgICAgIGlmIChl
MikgeworICAgICAgICAgIGlmIChDdXJyeS5fMihmdW5hcmdbLyogY29tcGFyZSAqLzBdLCBlMVsw
XSwgZTJbMF0pKSB7CisgICAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIGlmIChDdXJyeS5fMihjbXAsIGUxWzFdLCBlMlsxXSkpIHsKKyAg
ICAgICAgICAgIF9lMiA9IGNvbnNfZW51bShlMlsyXSwgZTJbM10pOworICAgICAgICAgICAgX2Ux
ID0gY29uc19lbnVtKGUxWzJdLCBlMVszXSk7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAg
ICAgICAgICAKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1
cm4gLyogZmFsc2UgKi8wOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBlbHNlIGlmIChlMikgeworICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKKyAgICAgIH0KKyAgICB9
OworICB9OworICB2YXIgY2FyZGluYWwgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgICBpZiAocGFy
YW0pIHsKKyAgICAgIHJldHVybiAoY2FyZGluYWwocGFyYW1bMF0pICsgMSB8IDApICsgY2FyZGlu
YWwocGFyYW1bM10pIHwgMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgIH07CisgIHZhciBiaW5kaW5nc19hdXggPSBmdW5jdGlvbiAoX2FjY3UsIF9wYXJhbSkg
eworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKKyAgICAgIHZh
ciBhY2N1ID0gX2FjY3U7CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgX3BhcmFtID0gcGFy
YW1bMF07CisgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCisgICAgICAgICAgLyogdHVwbGUgKi9b
CisgICAgICAgICAgICBwYXJhbVsxXSwKKyAgICAgICAgICAgIHBhcmFtWzJdCisgICAgICAgICAg
XSwKKyAgICAgICAgICBiaW5kaW5nc19hdXgoYWNjdSwgcGFyYW1bM10pCisgICAgICAgIF07Cisg
ICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAg
ICAgcmV0dXJuIGFjY3U7CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgdmFyIGJpbmRpbmdzID0g
ZnVuY3Rpb24gKHMpIHsKKyAgICByZXR1cm4gYmluZGluZ3NfYXV4KC8qIFtdICovMCwgcyk7Cisg
IH07CisgIHJldHVybiBbCisgICAgICAgICAgLyogRW1wdHkgKi8wLAorICAgICAgICAgIGlzX2Vt
cHR5LAorICAgICAgICAgIG1lbSwKKyAgICAgICAgICBhZGQsCisgICAgICAgICAgc2luZ2xldG9u
LAorICAgICAgICAgIHJlbW92ZSwKKyAgICAgICAgICBtZXJnZSwKKyAgICAgICAgICBjb21wYXJl
LAorICAgICAgICAgIGVxdWFsLAorICAgICAgICAgIGl0ZXIsCisgICAgICAgICAgZm9sZCwKKyAg
ICAgICAgICBmb3JfYWxsLAorICAgICAgICAgIGV4aXN0cywKKyAgICAgICAgICBmaWx0ZXIsCisg
ICAgICAgICAgcGFydGl0aW9uLAorICAgICAgICAgIGNhcmRpbmFsLAorICAgICAgICAgIGJpbmRp
bmdzLAorICAgICAgICAgIG1pbl9iaW5kaW5nLAorICAgICAgICAgIG1heF9iaW5kaW5nLAorICAg
ICAgICAgIG1pbl9iaW5kaW5nLAorICAgICAgICAgIHNwbGl0LAorICAgICAgICAgIGZpbmQsCisg
ICAgICAgICAgbWFwLAorICAgICAgICAgIG1hcGkKKyAgICAgICAgXTsKK30KKworZXhwb3J0cy5N
YWtlID0gTWFrZTsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgbWFwLmpz
IC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlb
J251bWVyaWNfZXJyb3InXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsK
Ky8vLy8vLy8vIHN0YXJ0IG9mIG51bWVyaWNfZXJyb3IuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRl
ZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQor
J3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbF9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZv
cm0vbGliL2pzL2NhbWxfZXhjZXB0aW9ucyIpOworCit2YXIgSW50ZWdlck92ZXJmbG93ID0gQ2Ft
bF9leGNlcHRpb25zLmNyZWF0ZSgiTnVtZXJpY19lcnJvci5JbnRlZ2VyT3ZlcmZsb3ciKTsKKwor
dmFyIEludGVnZXJEaXZpZGVCeVplcm8gPSBDYW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJOdW1lcmlj
X2Vycm9yLkludGVnZXJEaXZpZGVCeVplcm8iKTsKKwordmFyIEludmFsaWRDb252ZXJzaW9uVG9J
bnRlZ2VyID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiTnVtZXJpY19lcnJvci5JbnZhbGlkQ29u
dmVyc2lvblRvSW50ZWdlciIpOworCitleHBvcnRzLkludGVnZXJPdmVyZmxvdyAgICAgICAgICAg
ID0gSW50ZWdlck92ZXJmbG93OworZXhwb3J0cy5JbnRlZ2VyRGl2aWRlQnlaZXJvICAgICAgICA9
IEludGVnZXJEaXZpZGVCeVplcm87CitleHBvcnRzLkludmFsaWRDb252ZXJzaW9uVG9JbnRlZ2Vy
ID0gSW52YWxpZENvbnZlcnNpb25Ub0ludGVnZXI7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8v
Ly8vLy8gZW5kIG9mIG51bWVyaWNfZXJyb3IuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBv
cnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnb2JqJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKg
IGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBvYmouanMgLy8vLy8vLy8KKyd1
c2Ugc3RyaWN0JzsKKwordmFyIE1hcnNoYWwgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9t
YXJzaGFsIik7Cit2YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxf
YnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIGRvdWJsZV9maWVsZCh4LCBpKSB7Cisg
IHJldHVybiB4W2ldOworfQorCitmdW5jdGlvbiBzZXRfZG91YmxlX2ZpZWxkKHgsIGksIHYpIHsK
KyAgeFtpXSA9IHY7CisgIHJldHVybiAvKiAoKSAqLzA7Cit9CisKK2Z1bmN0aW9uIG1hcnNoYWwo
KSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9vdXRw
dXRfdmFsdWVfdG9fc3RyaW5nIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4i
OworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gdW5tYXJzaGFsKHN0ciwgcG9zKSB7Cisg
IHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICBNYXJzaGFsLmZyb21fYnl0ZXMoc3RyLCBw
b3MpLAorICAgICAgICAgIHBvcyArIE1hcnNoYWwudG90YWxfc2l6ZShzdHIsIHBvcykgfCAwCisg
ICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl9zbG90KHgpIHsKKyAgdmFyIHNsb3Qg
PSB4Lmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmICh4LnRhZyB8IDApICE9PSAyNDggJiYgeC5sZW5n
dGggPj0gMSA/IHhbMF0gOiB4OworICB2YXIgbmFtZTsKKyAgaWYgKHNsb3QubGVuZ3RoICE9PSB1
bmRlZmluZWQgJiYgc2xvdC50YWcgPT09IDI0OCkgeworICAgIG5hbWUgPSBzbG90WzBdOworICB9
CisgIGVsc2UgeworICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsK
KyAgfQorICBpZiAobmFtZS50YWcgPT09IDI1MikgeworICAgIHJldHVybiBzbG90OworICB9Cisg
IGVsc2UgeworICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKKyAg
fQorfQorCitmdW5jdGlvbiBleHRlbnNpb25fbmFtZSh4KSB7CisgIHRyeSB7CisgICAgdmFyIHNs
b3QgPSBleHRlbnNpb25fc2xvdCh4KTsKKyAgICByZXR1cm4gc2xvdFswXTsKKyAgfQorICBjYXRj
aCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91
bmQpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgICAiT2JqLmV4dGVuc2lvbl9uYW1lIgorICAg
ICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAg
fQorfQorCitmdW5jdGlvbiBleHRlbnNpb25faWQoeCkgeworICB0cnkgeworICAgIHZhciBzbG90
ID0gZXh0ZW5zaW9uX3Nsb3QoeCk7CisgICAgcmV0dXJuIHNsb3RbMV07CisgIH0KKyAgY2F0Y2gg
KGV4bil7CisgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5k
KSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5p
bnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICAgIk9iai5leHRlbnNpb25faWQiCisgICAgICAg
ICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9
CisKK2Z1bmN0aW9uIGV4dGVuc2lvbl9zbG90JDEoeCkgeworICB0cnkgeworICAgIHJldHVybiBl
eHRlbnNpb25fc2xvdCh4KTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAg
ICAgICAiT2JqLmV4dGVuc2lvbl9zbG90IgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQorfQorCit2YXIgZmlyc3Rfbm9uX2NvbnN0
YW50X2NvbnN0cnVjdG9yX3RhZyA9IDA7CisKK3ZhciBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1
Y3Rvcl90YWcgPSAyNDU7CisKK3ZhciBsYXp5X3RhZyA9IDI0NjsKKwordmFyIGNsb3N1cmVfdGFn
ID0gMjQ3OworCit2YXIgb2JqZWN0X3RhZyA9IDI0ODsKKwordmFyIGluZml4X3RhZyA9IDI0OTsK
KwordmFyIGZvcndhcmRfdGFnID0gMjUwOworCit2YXIgbm9fc2Nhbl90YWcgPSAyNTE7CisKK3Zh
ciBhYnN0cmFjdF90YWcgPSAyNTE7CisKK3ZhciBzdHJpbmdfdGFnID0gMjUyOworCit2YXIgZG91
YmxlX3RhZyA9IDI1MzsKKwordmFyIGRvdWJsZV9hcnJheV90YWcgPSAyNTQ7CisKK3ZhciBjdXN0
b21fdGFnID0gMjU1OworCit2YXIgZmluYWxfdGFnID0gMjU1OworCit2YXIgaW50X3RhZyA9IDEw
MDA7CisKK3ZhciBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxOworCit2YXIgdW5hbGlnbmVkX3RhZyA9
IDEwMDI7CisKK2V4cG9ydHMuZG91YmxlX2ZpZWxkICAgICAgICAgICAgICAgICAgICAgICA9IGRv
dWJsZV9maWVsZDsKK2V4cG9ydHMuc2V0X2RvdWJsZV9maWVsZCAgICAgICAgICAgICAgICAgICA9
IHNldF9kb3VibGVfZmllbGQ7CitleHBvcnRzLmZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rv
cl90YWcgPSBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnOworZXhwb3J0cy5sYXN0
X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgID0gbGFzdF9ub25fY29uc3RhbnRfY29uc3Ry
dWN0b3JfdGFnOworZXhwb3J0cy5sYXp5X3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
bGF6eV90YWc7CitleHBvcnRzLmNsb3N1cmVfdGFnICAgICAgICAgICAgICAgICAgICAgICAgPSBj
bG9zdXJlX3RhZzsKK2V4cG9ydHMub2JqZWN0X3RhZyAgICAgICAgICAgICAgICAgICAgICAgICA9
IG9iamVjdF90YWc7CitleHBvcnRzLmluZml4X3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBpbmZpeF90YWc7CitleHBvcnRzLmZvcndhcmRfdGFnICAgICAgICAgICAgICAgICAgICAgICAg
PSBmb3J3YXJkX3RhZzsKK2V4cG9ydHMubm9fc2Nhbl90YWcgICAgICAgICAgICAgICAgICAgICAg
ICA9IG5vX3NjYW5fdGFnOworZXhwb3J0cy5hYnN0cmFjdF90YWcgICAgICAgICAgICAgICAgICAg
ICAgID0gYWJzdHJhY3RfdGFnOworZXhwb3J0cy5zdHJpbmdfdGFnICAgICAgICAgICAgICAgICAg
ICAgICAgID0gc3RyaW5nX3RhZzsKK2V4cG9ydHMuZG91YmxlX3RhZyAgICAgICAgICAgICAgICAg
ICAgICAgICA9IGRvdWJsZV90YWc7CitleHBvcnRzLmRvdWJsZV9hcnJheV90YWcgICAgICAgICAg
ICAgICAgICAgPSBkb3VibGVfYXJyYXlfdGFnOworZXhwb3J0cy5jdXN0b21fdGFnICAgICAgICAg
ICAgICAgICAgICAgICAgID0gY3VzdG9tX3RhZzsKK2V4cG9ydHMuZmluYWxfdGFnICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IGZpbmFsX3RhZzsKK2V4cG9ydHMuaW50X3RhZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IGludF90YWc7CitleHBvcnRzLm91dF9vZl9oZWFwX3RhZyAgICAg
ICAgICAgICAgICAgICAgPSBvdXRfb2ZfaGVhcF90YWc7CitleHBvcnRzLnVuYWxpZ25lZF90YWcg
ICAgICAgICAgICAgICAgICAgICAgPSB1bmFsaWduZWRfdGFnOworZXhwb3J0cy5leHRlbnNpb25f
bmFtZSAgICAgICAgICAgICAgICAgICAgID0gZXh0ZW5zaW9uX25hbWU7CitleHBvcnRzLmV4dGVu
c2lvbl9pZCAgICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25faWQ7CitleHBvcnRzLmV4
dGVuc2lvbl9zbG90ICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25fc2xvdCQxOworZXhw
b3J0cy5tYXJzaGFsICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbWFyc2hhbDsKK2V4cG9y
dHMudW5tYXJzaGFsICAgICAgICAgICAgICAgICAgICAgICAgICA9IHVubWFyc2hhbDsKKy8qIE5v
IHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2Ygb2JqLmpzIC8vLy8vLy8vCivCoCDCoCBy
ZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ29vJ10gPSBmdW5jdGlvbigp
IHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBvby5qcyAvLy8v
Ly8vLworJ3VzZSBzdHJpY3QnOworCit2YXIgQ2FtbGludGVybmFsT08gPSByZXF1aXJlKCIuL2Nh
bWxpbnRlcm5hbE9PIik7CisKK3ZhciBjb3B5ID0gQ2FtbGludGVybmFsT08uY29weTsKKwordmFy
IG5ld19tZXRob2QgPSBDYW1saW50ZXJuYWxPTy5wdWJsaWNfbWV0aG9kX2xhYmVsOworCit2YXIg
cHVibGljX21ldGhvZF9sYWJlbCA9IENhbWxpbnRlcm5hbE9PLnB1YmxpY19tZXRob2RfbGFiZWw7
CisKK2V4cG9ydHMuY29weSAgICAgICAgICAgICAgICA9IGNvcHk7CitleHBvcnRzLm5ld19tZXRo
b2QgICAgICAgICAgPSBuZXdfbWV0aG9kOworZXhwb3J0cy5wdWJsaWNfbWV0aG9kX2xhYmVsID0g
cHVibGljX21ldGhvZF9sYWJlbDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQg
b2Ygb28uanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9y
ZWdpc3RyeVsnb3BlcmF0b3JzJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0g
e307CisvLy8vLy8vLyBzdGFydCBvZiBvcGVyYXRvcnMuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRl
ZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQor
J3VzZSBzdHJpY3QnOworCit2YXIgQmxvY2sgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2Jsb2NrIik7Cit2YXIgU291cmNlID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKKworZnVuY3Rpb24g
aTMyX2NvbnN0KG4pIHsKKyAgcmV0dXJuIC8qIENvbnN0ICovQmxvY2suX18oMTUsIFtTb3VyY2Uu
JGF0JGF0KC8qIEkzMiAqL0Jsb2NrLl9fKDAsIFtuWy8qIGl0ICovMV1dKSwgblsvKiBhdCAqLzBd
KV0pOworfQorCitmdW5jdGlvbiBpNjRfY29uc3QobikgeworICByZXR1cm4gLyogQ29uc3QgKi9C
bG9jay5fXygxNSwgW1NvdXJjZS4kYXQkYXQoLyogSTY0ICovQmxvY2suX18oMSwgW25bLyogaXQg
Ki8xXV0pLCBuWy8qIGF0ICovMF0pXSk7Cit9CisKK2Z1bmN0aW9uIGYzMl9jb25zdChuKSB7Cisg
IHJldHVybiAvKiBDb25zdCAqL0Jsb2NrLl9fKDE1LCBbU291cmNlLiRhdCRhdCgvKiBGMzIgKi9C
bG9jay5fXygyLCBbblsvKiBpdCAqLzFdXSksIG5bLyogYXQgKi8wXSldKTsKK30KKworZnVuY3Rp
b24gZjY0X2NvbnN0KG4pIHsKKyAgcmV0dXJuIC8qIENvbnN0ICovQmxvY2suX18oMTUsIFtTb3Vy
Y2UuJGF0JGF0KC8qIEY2NCAqL0Jsb2NrLl9fKDMsIFtuWy8qIGl0ICovMV1dKSwgblsvKiBhdCAq
LzBdKV0pOworfQorCitmdW5jdGlvbiBibG9jayh0cywgZXMpIHsKKyAgcmV0dXJuIC8qIEJsb2Nr
ICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgdHMsCisgICAgICAgICAgICBlcworICAgICAg
ICAgIF0pOworfQorCitmdW5jdGlvbiBsb29wKHRzLCBlcykgeworICByZXR1cm4gLyogTG9vcCAq
L0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgIHRzLAorICAgICAgICAgICAgZXMKKyAgICAgICAg
ICBdKTsKK30KKworZnVuY3Rpb24gYnIoeCkgeworICByZXR1cm4gLyogQnIgKi9CbG9jay5fXygz
LCBbeF0pOworfQorCitmdW5jdGlvbiBicl9pZih4KSB7CisgIHJldHVybiAvKiBCcklmICovQmxv
Y2suX18oNCwgW3hdKTsKK30KKworZnVuY3Rpb24gYnJfdGFibGUoeHMsIHgpIHsKKyAgcmV0dXJu
IC8qIEJyVGFibGUgKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICB4cywKKyAgICAgICAgICAg
IHgKKyAgICAgICAgICBdKTsKK30KKworZnVuY3Rpb24gaWZfKHRzLCBlczEsIGVzMikgeworICBy
ZXR1cm4gLyogSWYgKi9CbG9jay5fXygyLCBbCisgICAgICAgICAgICB0cywKKyAgICAgICAgICAg
IGVzMSwKKyAgICAgICAgICAgIGVzMgorICAgICAgICAgIF0pOworfQorCitmdW5jdGlvbiBjYWxs
KHgpIHsKKyAgcmV0dXJuIC8qIENhbGwgKi9CbG9jay5fXyg2LCBbeF0pOworfQorCitmdW5jdGlv
biBjYWxsX2luZGlyZWN0KHgpIHsKKyAgcmV0dXJuIC8qIENhbGxJbmRpcmVjdCAqL0Jsb2NrLl9f
KDcsIFt4XSk7Cit9CisKK2Z1bmN0aW9uIGdldF9sb2NhbCh4KSB7CisgIHJldHVybiAvKiBHZXRM
b2NhbCAqL0Jsb2NrLl9fKDgsIFt4XSk7Cit9CisKK2Z1bmN0aW9uIHNldF9sb2NhbCh4KSB7Cisg
IHJldHVybiAvKiBTZXRMb2NhbCAqL0Jsb2NrLl9fKDksIFt4XSk7Cit9CisKK2Z1bmN0aW9uIHRl
ZV9sb2NhbCh4KSB7CisgIHJldHVybiAvKiBUZWVMb2NhbCAqL0Jsb2NrLl9fKDEwLCBbeF0pOwor
fQorCitmdW5jdGlvbiBnZXRfZ2xvYmFsKHgpIHsKKyAgcmV0dXJuIC8qIEdldEdsb2JhbCAqL0Js
b2NrLl9fKDExLCBbeF0pOworfQorCitmdW5jdGlvbiBzZXRfZ2xvYmFsKHgpIHsKKyAgcmV0dXJu
IC8qIFNldEdsb2JhbCAqL0Jsb2NrLl9fKDEyLCBbeF0pOworfQorCitmdW5jdGlvbiBpMzJfbG9h
ZChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisgICAgICAgICAg
ICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwK
KyAgICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAgICAgXV0pOworfQorCitm
dW5jdGlvbiBpNjRfbG9hZChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxv
Y2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAq
LzEsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9m
ZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAg
ICAgXV0pOworfQorCitmdW5jdGlvbiBmMzJfbG9hZChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVy
biAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8q
IHR5IDogRjMyVHlwZSAqLzIsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAg
ICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBOb25l
ICovMAorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBmNjRfbG9hZChhbGlnbiwgb2Zm
c2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiByZWNvcmQgKi9bCisg
ICAgICAgICAgICAgIC8qIHR5IDogRjY0VHlwZSAqLzMsCisgICAgICAgICAgICAgIC8qIGFsaWdu
ICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAg
ICAgLyogc3ogOiBOb25lICovMAorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpMzJf
bG9hZDhfcyhhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMs
IFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisgICAg
ICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29m
ZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAg
ICAgICAgICAgICAgLyogTWVtOCAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBTWCAqLzAKKyAg
ICAgICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpMzJfbG9h
ZDhfdShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsv
KiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisgICAgICAg
ICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNl
dCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAgICAg
ICAgICAgICAgLyogTWVtOCAqLzAsCisgICAgICAgICAgICAgICAgICAvKiBaWCAqLzEKKyAgICAg
ICAgICAgICAgICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpMzJfbG9hZDE2
X3MoYWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEkzMlR5cGUgKi8wLAorICAgICAgICAg
ICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQs
CisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
ICAgICAgIC8qIE1lbTE2ICovMSwKKyAgICAgICAgICAgICAgICAgIC8qIFNYICovMAorICAgICAg
ICAgICAgICAgIF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGkzMl9sb2FkMTZf
dShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCisgICAgICAgICAg
ICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwK
KyAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAgICAgICAg
ICAgICAgLyogTWVtMTYgKi8xLAorICAgICAgICAgICAgICAgICAgLyogWlggKi8xCisgICAgICAg
ICAgICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQ4X3Mo
YWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyogcmVj
b3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAgICAgICAg
ICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCisg
ICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAg
ICAgIC8qIE1lbTggKi8wLAorICAgICAgICAgICAgICAgICAgLyogU1ggKi8wCisgICAgICAgICAg
ICAgICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQ4X3UoYWxp
Z24sIG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyogcmVjb3Jk
ICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAgICAgICAgICAv
KiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCisgICAg
ICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAg
IC8qIE1lbTggKi8wLAorICAgICAgICAgICAgICAgICAgLyogWlggKi8xCisgICAgICAgICAgICAg
ICAgXV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQxNl9zKGFsaWdu
LCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywgWy8qIHJlY29yZCAq
L1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAgICAgICAgLyog
YWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAg
ICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAv
KiBNZW0xNiAqLzEsCisgICAgICAgICAgICAgICAgICAvKiBTWCAqLzAKKyAgICAgICAgICAgICAg
ICBdXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpNjRfbG9hZDE2X3UoYWxpZ24s
IG9mZnNldCkgeworICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyogcmVjb3JkICov
WworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAgICAgICAgICAvKiBh
bGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCisgICAgICAg
ICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICAgIC8q
IE1lbTE2ICovMSwKKyAgICAgICAgICAgICAgICAgIC8qIFpYICovMQorICAgICAgICAgICAgICAg
IF1dCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGk2NF9sb2FkMzJfcyhhbGlnbiwg
b2Zmc2V0KSB7CisgIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiByZWNvcmQgKi9b
CisgICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEsCisgICAgICAgICAgICAgIC8qIGFs
aWduICovYWxpZ24sCisgICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAg
ICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWworICAgICAgICAgICAgICAgICAgLyog
TWVtMzIgKi8yLAorICAgICAgICAgICAgICAgICAgLyogU1ggKi8wCisgICAgICAgICAgICAgICAg
XV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X2xvYWQzMl91KGFsaWduLCBv
ZmZzZXQpIHsKKyAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywgWy8qIHJlY29yZCAqL1sK
KyAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAgICAgICAgLyogYWxp
Z24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAg
ICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgICAgICAvKiBN
ZW0zMiAqLzIsCisgICAgICAgICAgICAgICAgICAvKiBaWCAqLzEKKyAgICAgICAgICAgICAgICBd
XQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpMzJfc3RvcmUoYWxpZ24sIG9mZnNl
dCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sKKyAg
ICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwKKyAgICAgICAgICAgICAgLyogYWxpZ24g
Ki9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgICAg
ICAvKiBzeiA6IE5vbmUgKi8wCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGk2NF9z
dG9yZShhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9yZSAqL0Jsb2NrLl9fKDE0LCBb
LyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAg
ICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZz
ZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogTm9uZSAqLzAKKyAgICAgICAgICAgIF1dKTsKK30K
KworZnVuY3Rpb24gZjMyX3N0b3JlKGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJuIC8qIFN0b3Jl
ICovQmxvY2suX18oMTQsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8qIHR5IDogRjMy
VHlwZSAqLzIsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAgICAgICAgICAg
IC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAorICAg
ICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBmNjRfc3RvcmUoYWxpZ24sIG9mZnNldCkgewor
ICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sKKyAgICAgICAg
ICAgICAgLyogdHkgOiBGNjRUeXBlICovMywKKyAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGln
biwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgICAgICAvKiBz
eiA6IE5vbmUgKi8wCisgICAgICAgICAgICBdXSk7Cit9CisKK2Z1bmN0aW9uIGkzMl9zdG9yZTgo
YWxpZ24sIG9mZnNldCkgeworICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwKKyAgICAgICAgICAg
ICAgLyogYWxpZ24gKi9hbGlnbiwKKyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAor
ICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogTWVtOCAqLzBdCisgICAgICAgICAgICBd
XSk7Cit9CisKK2Z1bmN0aW9uIGkzMl9zdG9yZTE2KGFsaWduLCBvZmZzZXQpIHsKKyAgcmV0dXJu
IC8qIFN0b3JlICovQmxvY2suX18oMTQsIFsvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgIC8q
IHR5IDogSTMyVHlwZSAqLzAsCisgICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCisgICAg
ICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwKKyAgICAgICAgICAgICAgLyogc3ogOiBTb21l
ICovWy8qIE1lbTE2ICovMV0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X3N0
b3JlOChhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9yZSAqL0Jsb2NrLl9fKDE0LCBb
LyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAorICAgICAg
ICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZz
ZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiBNZW04ICovMF0KKyAgICAgICAg
ICAgIF1dKTsKK30KKworZnVuY3Rpb24gaTY0X3N0b3JlMTYoYWxpZ24sIG9mZnNldCkgeworICBy
ZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sKKyAgICAgICAgICAg
ICAgLyogdHkgOiBJNjRUeXBlICovMSwKKyAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwK
KyAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAorICAgICAgICAgICAgICAvKiBzeiA6
IFNvbWUgKi9bLyogTWVtMTYgKi8xXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBp
NjRfc3RvcmUzMihhbGlnbiwgb2Zmc2V0KSB7CisgIHJldHVybiAvKiBTdG9yZSAqL0Jsb2NrLl9f
KDE0LCBbLyogcmVjb3JkICovWworICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAor
ICAgICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAorICAgICAgICAgICAgICAvKiBvZmZzZXQg
Ki9vZmZzZXQsCisgICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiBNZW0zMiAqLzJdCisg
ICAgICAgICAgICBdXSk7Cit9CisKK3ZhciB1bnJlYWNoYWJsZSA9IC8qIFVucmVhY2hhYmxlICov
MDsKKwordmFyIG5vcCA9IC8qIE5vcCAqLzE7CisKK3ZhciBkcm9wID0gLyogRHJvcCAqLzM7CisK
K3ZhciAkJHJldHVybiA9IC8qIFJldHVybiAqLzI7CisKK3ZhciBzZWxlY3QgPSAvKiBTZWxlY3Qg
Ki80OworCit2YXIgaTMyX2NseiA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBJMzIgKi9C
bG9jay5fXygwLCBbLyogQ2x6ICovMF0pXSk7CisKK3ZhciBpMzJfY3R6ID0gLyogVW5hcnkgKi9C
bG9jay5fXygxOCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBDdHogKi8xXSldKTsKKwordmFy
IGkzMl9wb3BjbnQgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogSTMyICovQmxvY2suX18o
MCwgWy8qIFBvcGNudCAqLzJdKV0pOworCit2YXIgaTY0X2NseiA9IC8qIFVuYXJ5ICovQmxvY2su
X18oMTgsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogQ2x6ICovMF0pXSk7CisKK3ZhciBpNjRf
Y3R6ID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBD
dHogKi8xXSldKTsKKwordmFyIGk2NF9wb3BjbnQgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBb
LyogSTY0ICovQmxvY2suX18oMSwgWy8qIFBvcGNudCAqLzJdKV0pOworCit2YXIgZjMyX25lZyA9
IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogTmVnICov
MF0pXSk7CisKK3ZhciBmMzJfYWJzID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAq
L0Jsb2NrLl9fKDIsIFsvKiBBYnMgKi8xXSldKTsKKwordmFyIGYzMl9zcXJ0ID0gLyogVW5hcnkg
Ki9CbG9jay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBTcXJ0ICovNl0pXSk7CisK
K3ZhciBmMzJfY2VpbCA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGMzIgKi9CbG9jay5f
XygyLCBbLyogQ2VpbCAqLzJdKV0pOworCit2YXIgZjMyX2Zsb29yID0gLyogVW5hcnkgKi9CbG9j
ay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBGbG9vciAqLzNdKV0pOworCit2YXIg
ZjMyX3RydW5jID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIs
IFsvKiBUcnVuYyAqLzRdKV0pOworCit2YXIgZjMyX25lYXJlc3QgPSAvKiBVbmFyeSAqL0Jsb2Nr
Ll9fKDE4LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIE5lYXJlc3QgKi81XSldKTsKKwordmFy
IGY2NF9uZWcgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjY0ICovQmxvY2suX18oMywg
Wy8qIE5lZyAqLzBdKV0pOworCit2YXIgZjY0X2FicyA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgs
IFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQWJzICovMV0pXSk7CisKK3ZhciBmNjRfc3FydCA9
IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogU3FydCAq
LzZdKV0pOworCit2YXIgZjY0X2NlaWwgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjY0
ICovQmxvY2suX18oMywgWy8qIENlaWwgKi8yXSldKTsKKwordmFyIGY2NF9mbG9vciA9IC8qIFVu
YXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogRmxvb3IgKi8zXSld
KTsKKwordmFyIGY2NF90cnVuYyA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9C
bG9jay5fXygzLCBbLyogVHJ1bmMgKi80XSldKTsKKwordmFyIGY2NF9uZWFyZXN0ID0gLyogVW5h
cnkgKi9CbG9jay5fXygxOCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBOZWFyZXN0ICovNV0p
XSk7CisKK3ZhciBpMzJfYWRkID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9C
bG9jay5fXygwLCBbLyogQWRkICovMF0pXSk7CisKK3ZhciBpMzJfc3ViID0gLyogQmluYXJ5ICov
QmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogU3ViICovMV0pXSk7CisKK3Zh
ciBpMzJfbXVsID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygw
LCBbLyogTXVsICovMl0pXSk7CisKK3ZhciBpMzJfZGl2X3MgPSAvKiBCaW5hcnkgKi9CbG9jay5f
XygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBEaXZTICovM10pXSk7CisKK3ZhciBpMzJf
ZGl2X3UgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsv
KiBEaXZVICovNF0pXSk7CisKK3ZhciBpMzJfcmVtX3MgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygx
OSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBSZW1TICovNV0pXSk7CisKK3ZhciBpMzJfcmVt
X3UgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBS
ZW1VICovNl0pXSk7CisKK3ZhciBpMzJfYW5kID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsv
KiBJMzIgKi9CbG9jay5fXygwLCBbLyogQW5kICovN10pXSk7CisKK3ZhciBpMzJfb3IgPSAvKiBC
aW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBPciAqLzhdKV0p
OworCit2YXIgaTMyX3hvciA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxv
Y2suX18oMCwgWy8qIFhvciAqLzldKV0pOworCit2YXIgaTMyX3NobCA9IC8qIEJpbmFyeSAqL0Js
b2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFNobCAqLzEwXSldKTsKKwordmFy
IGkzMl9zaHJfcyA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18o
MCwgWy8qIFNoclMgKi8xMV0pXSk7CisKK3ZhciBpMzJfc2hyX3UgPSAvKiBCaW5hcnkgKi9CbG9j
ay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBTaHJVICovMTJdKV0pOworCit2YXIg
aTMyX3JvdGwgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAs
IFsvKiBSb3RsICovMTNdKV0pOworCit2YXIgaTMyX3JvdHIgPSAvKiBCaW5hcnkgKi9CbG9jay5f
XygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBSb3RyICovMTRdKV0pOworCit2YXIgaTY0
X2FkZCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8q
IEFkZCAqLzBdKV0pOworCit2YXIgaTY0X3N1YiA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBb
LyogSTY0ICovQmxvY2suX18oMSwgWy8qIFN1YiAqLzFdKV0pOworCit2YXIgaTY0X211bCA9IC8q
IEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIE11bCAqLzJd
KV0pOworCit2YXIgaTY0X2Rpdl9zID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQg
Ki9CbG9jay5fXygxLCBbLyogRGl2UyAqLzNdKV0pOworCit2YXIgaTY0X2Rpdl91ID0gLyogQmlu
YXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogRGl2VSAqLzRdKV0p
OworCit2YXIgaTY0X3JlbV9zID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9C
bG9jay5fXygxLCBbLyogUmVtUyAqLzVdKV0pOworCit2YXIgaTY0X3JlbV91ID0gLyogQmluYXJ5
ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogUmVtVSAqLzZdKV0pOwor
Cit2YXIgaTY0X2FuZCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2su
X18oMSwgWy8qIEFuZCAqLzddKV0pOworCit2YXIgaTY0X29yID0gLyogQmluYXJ5ICovQmxvY2su
X18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogT3IgKi84XSldKTsKKwordmFyIGk2NF94
b3IgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBY
b3IgKi85XSldKTsKKwordmFyIGk2NF9zaGwgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8q
IEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBTaGwgKi8xMF0pXSk7CisKK3ZhciBpNjRfc2hyX3MgPSAv
KiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBTaHJTICov
MTFdKV0pOworCit2YXIgaTY0X3Nocl91ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJ
NjQgKi9CbG9jay5fXygxLCBbLyogU2hyVSAqLzEyXSldKTsKKwordmFyIGk2NF9yb3RsID0gLyog
QmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogUm90bCAqLzEz
XSldKTsKKwordmFyIGk2NF9yb3RyID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQg
Ki9CbG9jay5fXygxLCBbLyogUm90ciAqLzE0XSldKTsKKwordmFyIGYzMl9hZGQgPSAvKiBCaW5h
cnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBBZGQgKi8wXSldKTsK
KwordmFyIGYzMl9zdWIgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2Nr
Ll9fKDIsIFsvKiBTdWIgKi8xXSldKTsKKwordmFyIGYzMl9tdWwgPSAvKiBCaW5hcnkgKi9CbG9j
ay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBNdWwgKi8yXSldKTsKKwordmFyIGYz
Ml9kaXYgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsv
KiBEaXYgKi8zXSldKTsKKwordmFyIGYzMl9taW4gPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwg
Wy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBNaW4gKi80XSldKTsKKwordmFyIGYzMl9tYXggPSAv
KiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBNYXggKi81
XSldKTsKKwordmFyIGYzMl9jb3B5c2lnbiA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyog
RjMyICovQmxvY2suX18oMiwgWy8qIENvcHlTaWduICovNl0pXSk7CisKK3ZhciBmNjRfYWRkID0g
LyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQWRkICov
MF0pXSk7CisKK3ZhciBmNjRfc3ViID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQg
Ki9CbG9jay5fXygzLCBbLyogU3ViICovMV0pXSk7CisKK3ZhciBmNjRfbXVsID0gLyogQmluYXJ5
ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTXVsICovMl0pXSk7CisK
K3ZhciBmNjRfZGl2ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5f
XygzLCBbLyogRGl2ICovM10pXSk7CisKK3ZhciBmNjRfbWluID0gLyogQmluYXJ5ICovQmxvY2su
X18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTWluICovNF0pXSk7CisKK3ZhciBmNjRf
bWF4ID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyog
TWF4ICovNV0pXSk7CisKK3ZhciBmNjRfY29weXNpZ24gPSAvKiBCaW5hcnkgKi9CbG9jay5fXygx
OSwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBDb3B5U2lnbiAqLzZdKV0pOworCit2YXIgaTMy
X2VxeiA9IC8qIFRlc3QgKi9CbG9jay5fXygxNiwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBF
cXogKi8wXSldKTsKKwordmFyIGk2NF9lcXogPSAvKiBUZXN0ICovQmxvY2suX18oMTYsIFsvKiBJ
NjQgKi9CbG9jay5fXygxLCBbLyogRXF6ICovMF0pXSk7CisKK3ZhciBpMzJfZXEgPSAvKiBDb21w
YXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogRXEgKi8wXSldKTsK
KwordmFyIGkzMl9uZSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2Nr
Ll9fKDAsIFsvKiBOZSAqLzFdKV0pOworCit2YXIgaTMyX2x0X3MgPSAvKiBDb21wYXJlICovQmxv
Y2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogTHRTICovMl0pXSk7CisKK3ZhciBp
MzJfbHRfdSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAs
IFsvKiBMdFUgKi8zXSldKTsKKwordmFyIGkzMl9sZV9zID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9f
KDE3LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIExlUyAqLzZdKV0pOworCit2YXIgaTMyX2xl
X3UgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyog
TGVVICovN10pXSk7CisKK3ZhciBpMzJfZ3RfcyA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywg
Wy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBHdFMgKi80XSldKTsKKwordmFyIGkzMl9ndF91ID0g
LyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIEd0VSAq
LzVdKV0pOworCit2YXIgaTMyX2dlX3MgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJ
MzIgKi9CbG9jay5fXygwLCBbLyogR2VTICovOF0pXSk7CisKK3ZhciBpMzJfZ2VfdSA9IC8qIENv
bXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBHZVUgKi85XSld
KTsKKwordmFyIGk2NF9lcSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Js
b2NrLl9fKDEsIFsvKiBFcSAqLzBdKV0pOworCit2YXIgaTY0X25lID0gLyogQ29tcGFyZSAqL0Js
b2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIE5lICovMV0pXSk7CisKK3ZhciBp
NjRfbHRfcyA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEs
IFsvKiBMdFMgKi8yXSldKTsKKwordmFyIGk2NF9sdF91ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9f
KDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIEx0VSAqLzNdKV0pOworCit2YXIgaTY0X2xl
X3MgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyog
TGVTICovNl0pXSk7CisKK3ZhciBpNjRfbGVfdSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywg
Wy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBMZVUgKi83XSldKTsKKwordmFyIGk2NF9ndF9zID0g
LyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIEd0UyAq
LzRdKV0pOworCit2YXIgaTY0X2d0X3UgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJ
NjQgKi9CbG9jay5fXygxLCBbLyogR3RVICovNV0pXSk7CisKK3ZhciBpNjRfZ2VfcyA9IC8qIENv
bXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBHZVMgKi84XSld
KTsKKwordmFyIGk2NF9nZV91ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICov
QmxvY2suX18oMSwgWy8qIEdlVSAqLzldKV0pOworCit2YXIgZjMyX2VxID0gLyogQ29tcGFyZSAq
L0Jsb2NrLl9fKDE3LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIEVxICovMF0pXSk7CisKK3Zh
ciBmMzJfbmUgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGMzIgKi9CbG9jay5fXygy
LCBbLyogTmUgKi8xXSldKTsKKwordmFyIGYzMl9sdCA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygx
NywgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBMdCAqLzJdKV0pOworCit2YXIgZjMyX2xlID0g
LyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIExlICov
NF0pXSk7CisKK3ZhciBmMzJfZ3QgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGMzIg
Ki9CbG9jay5fXygyLCBbLyogR3QgKi8zXSldKTsKKwordmFyIGYzMl9nZSA9IC8qIENvbXBhcmUg
Ki9CbG9jay5fXygxNywgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBHZSAqLzVdKV0pOworCit2
YXIgZjY0X2VxID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjY0ICovQmxvY2suX18o
MywgWy8qIEVxICovMF0pXSk7CisKK3ZhciBmNjRfbmUgPSAvKiBDb21wYXJlICovQmxvY2suX18o
MTcsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTmUgKi8xXSldKTsKKwordmFyIGY2NF9sdCA9
IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBMdCAq
LzJdKV0pOworCit2YXIgZjY0X2xlID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjY0
ICovQmxvY2suX18oMywgWy8qIExlICovNF0pXSk7CisKK3ZhciBmNjRfZ3QgPSAvKiBDb21wYXJl
ICovQmxvY2suX18oMTcsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogR3QgKi8zXSldKTsKKwor
dmFyIGY2NF9nZSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEY2NCAqL0Jsb2NrLl9f
KDMsIFsvKiBHZSAqLzVdKV0pOworCit2YXIgaTMyX3dyYXBfaTY0ID0gLyogQ29udmVydCAqL0Js
b2NrLl9fKDIwLCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFdyYXBJNjQgKi8yXSldKTsKKwor
dmFyIGkzMl90cnVuY19zX2YzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkzMiAq
L0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1NGMzIgKi8zXSldKTsKKwordmFyIGkzMl90cnVuY191X2Yz
MiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBU
cnVuY1VGMzIgKi80XSldKTsKKwordmFyIGkzMl90cnVuY19zX2Y2NCA9IC8qIENvbnZlcnQgKi9C
bG9jay5fXygyMCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1NGNjQgKi81XSldKTsK
KwordmFyIGkzMl90cnVuY191X2Y2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkz
MiAqL0Jsb2NrLl9fKDAsIFsvKiBUcnVuY1VGNjQgKi82XSldKTsKKwordmFyIGk2NF9leHRlbmRf
c19pMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBb
LyogRXh0ZW5kU0kzMiAqLzBdKV0pOworCit2YXIgaTY0X2V4dGVuZF91X2kzMiA9IC8qIENvbnZl
cnQgKi9CbG9jay5fXygyMCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBFeHRlbmRVSTMyICov
MV0pXSk7CisKK3ZhciBpNjRfdHJ1bmNfc19mMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAs
IFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogVHJ1bmNTRjMyICovM10pXSk7CisKK3ZhciBpNjRf
dHJ1bmNfdV9mMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5f
XygxLCBbLyogVHJ1bmNVRjMyICovNF0pXSk7CisKK3ZhciBpNjRfdHJ1bmNfc19mNjQgPSAvKiBD
b252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogVHJ1bmNTRjY0
ICovNV0pXSk7CisKK3ZhciBpNjRfdHJ1bmNfdV9mNjQgPSAvKiBDb252ZXJ0ICovQmxvY2suX18o
MjAsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogVHJ1bmNVRjY0ICovNl0pXSk7CisKK3ZhciBm
MzJfY29udmVydF9zX2kzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEYzMiAqL0Js
b2NrLl9fKDIsIFsvKiBDb252ZXJ0U0kzMiAqLzBdKV0pOworCit2YXIgZjMyX2NvbnZlcnRfdV9p
MzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyog
Q29udmVydFVJMzIgKi8xXSldKTsKKwordmFyIGYzMl9jb252ZXJ0X3NfaTY0ID0gLyogQ29udmVy
dCAqL0Jsb2NrLl9fKDIwLCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIENvbnZlcnRTSTY0ICov
Ml0pXSk7CisKK3ZhciBmMzJfY29udmVydF91X2k2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygy
MCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBDb252ZXJ0VUk2NCAqLzNdKV0pOworCit2YXIg
ZjMyX2RlbW90ZV9mNjQgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBGMzIgKi9CbG9j
ay5fXygyLCBbLyogRGVtb3RlRjY0ICovNV0pXSk7CisKK3ZhciBmNjRfY29udmVydF9zX2kzMiA9
IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBDb252
ZXJ0U0kzMiAqLzBdKV0pOworCit2YXIgZjY0X2NvbnZlcnRfdV9pMzIgPSAvKiBDb252ZXJ0ICov
QmxvY2suX18oMjAsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQ29udmVydFVJMzIgKi8xXSld
KTsKKwordmFyIGY2NF9jb252ZXJ0X3NfaTY0ID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBb
LyogRjY0ICovQmxvY2suX18oMywgWy8qIENvbnZlcnRTSTY0ICovMl0pXSk7CisKK3ZhciBmNjRf
Y29udmVydF91X2k2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEY2NCAqL0Jsb2Nr
Ll9fKDMsIFsvKiBDb252ZXJ0VUk2NCAqLzNdKV0pOworCit2YXIgZjY0X3Byb21vdGVfZjMyID0g
LyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIFByb21v
dGVGMzIgKi80XSldKTsKKwordmFyIGkzMl9yZWludGVycHJldF9mMzIgPSAvKiBDb252ZXJ0ICov
QmxvY2suX18oMjAsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogUmVpbnRlcnByZXRGbG9hdCAq
LzddKV0pOworCit2YXIgaTY0X3JlaW50ZXJwcmV0X2Y2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5f
XygyMCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBSZWludGVycHJldEZsb2F0ICovN10pXSk7
CisKK3ZhciBmMzJfcmVpbnRlcnByZXRfaTMyID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBb
LyogRjMyICovQmxvY2suX18oMiwgWy8qIFJlaW50ZXJwcmV0SW50ICovNl0pXSk7CisKK3ZhciBm
NjRfcmVpbnRlcnByZXRfaTY0ID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjY0ICov
QmxvY2suX18oMywgWy8qIFJlaW50ZXJwcmV0SW50ICovNl0pXSk7CisKK3ZhciBjdXJyZW50X21l
bW9yeSA9IC8qIEN1cnJlbnRNZW1vcnkgKi81OworCit2YXIgZ3Jvd19tZW1vcnkgPSAvKiBHcm93
TWVtb3J5ICovNjsKKworZXhwb3J0cy5pMzJfY29uc3QgICAgICAgICAgID0gaTMyX2NvbnN0Owor
ZXhwb3J0cy5pNjRfY29uc3QgICAgICAgICAgID0gaTY0X2NvbnN0OworZXhwb3J0cy5mMzJfY29u
c3QgICAgICAgICAgID0gZjMyX2NvbnN0OworZXhwb3J0cy5mNjRfY29uc3QgICAgICAgICAgID0g
ZjY0X2NvbnN0OworZXhwb3J0cy51bnJlYWNoYWJsZSAgICAgICAgID0gdW5yZWFjaGFibGU7Citl
eHBvcnRzLm5vcCAgICAgICAgICAgICAgICAgPSBub3A7CitleHBvcnRzLmRyb3AgICAgICAgICAg
ICAgICAgPSBkcm9wOworZXhwb3J0cy5ibG9jayAgICAgICAgICAgICAgID0gYmxvY2s7CitleHBv
cnRzLmxvb3AgICAgICAgICAgICAgICAgPSBsb29wOworZXhwb3J0cy5iciAgICAgICAgICAgICAg
ICAgID0gYnI7CitleHBvcnRzLmJyX2lmICAgICAgICAgICAgICAgPSBicl9pZjsKK2V4cG9ydHMu
YnJfdGFibGUgICAgICAgICAgICA9IGJyX3RhYmxlOworZXhwb3J0cy4kJHJldHVybiAgICAgICAg
ICAgID0gJCRyZXR1cm47CitleHBvcnRzLmlmXyAgICAgICAgICAgICAgICAgPSBpZl87CitleHBv
cnRzLnNlbGVjdCAgICAgICAgICAgICAgPSBzZWxlY3Q7CitleHBvcnRzLmNhbGwgICAgICAgICAg
ICAgICAgPSBjYWxsOworZXhwb3J0cy5jYWxsX2luZGlyZWN0ICAgICAgID0gY2FsbF9pbmRpcmVj
dDsKK2V4cG9ydHMuZ2V0X2xvY2FsICAgICAgICAgICA9IGdldF9sb2NhbDsKK2V4cG9ydHMuc2V0
X2xvY2FsICAgICAgICAgICA9IHNldF9sb2NhbDsKK2V4cG9ydHMudGVlX2xvY2FsICAgICAgICAg
ICA9IHRlZV9sb2NhbDsKK2V4cG9ydHMuZ2V0X2dsb2JhbCAgICAgICAgICA9IGdldF9nbG9iYWw7
CitleHBvcnRzLnNldF9nbG9iYWwgICAgICAgICAgPSBzZXRfZ2xvYmFsOworZXhwb3J0cy5pMzJf
bG9hZCAgICAgICAgICAgID0gaTMyX2xvYWQ7CitleHBvcnRzLmk2NF9sb2FkICAgICAgICAgICAg
PSBpNjRfbG9hZDsKK2V4cG9ydHMuZjMyX2xvYWQgICAgICAgICAgICA9IGYzMl9sb2FkOworZXhw
b3J0cy5mNjRfbG9hZCAgICAgICAgICAgID0gZjY0X2xvYWQ7CitleHBvcnRzLmkzMl9sb2FkOF9z
ICAgICAgICAgPSBpMzJfbG9hZDhfczsKK2V4cG9ydHMuaTMyX2xvYWQ4X3UgICAgICAgICA9IGkz
Ml9sb2FkOF91OworZXhwb3J0cy5pMzJfbG9hZDE2X3MgICAgICAgID0gaTMyX2xvYWQxNl9zOwor
ZXhwb3J0cy5pMzJfbG9hZDE2X3UgICAgICAgID0gaTMyX2xvYWQxNl91OworZXhwb3J0cy5pNjRf
bG9hZDhfcyAgICAgICAgID0gaTY0X2xvYWQ4X3M7CitleHBvcnRzLmk2NF9sb2FkOF91ICAgICAg
ICAgPSBpNjRfbG9hZDhfdTsKK2V4cG9ydHMuaTY0X2xvYWQxNl9zICAgICAgICA9IGk2NF9sb2Fk
MTZfczsKK2V4cG9ydHMuaTY0X2xvYWQxNl91ICAgICAgICA9IGk2NF9sb2FkMTZfdTsKK2V4cG9y
dHMuaTY0X2xvYWQzMl9zICAgICAgICA9IGk2NF9sb2FkMzJfczsKK2V4cG9ydHMuaTY0X2xvYWQz
Ml91ICAgICAgICA9IGk2NF9sb2FkMzJfdTsKK2V4cG9ydHMuaTMyX3N0b3JlICAgICAgICAgICA9
IGkzMl9zdG9yZTsKK2V4cG9ydHMuaTY0X3N0b3JlICAgICAgICAgICA9IGk2NF9zdG9yZTsKK2V4
cG9ydHMuZjMyX3N0b3JlICAgICAgICAgICA9IGYzMl9zdG9yZTsKK2V4cG9ydHMuZjY0X3N0b3Jl
ICAgICAgICAgICA9IGY2NF9zdG9yZTsKK2V4cG9ydHMuaTMyX3N0b3JlOCAgICAgICAgICA9IGkz
Ml9zdG9yZTg7CitleHBvcnRzLmkzMl9zdG9yZTE2ICAgICAgICAgPSBpMzJfc3RvcmUxNjsKK2V4
cG9ydHMuaTY0X3N0b3JlOCAgICAgICAgICA9IGk2NF9zdG9yZTg7CitleHBvcnRzLmk2NF9zdG9y
ZTE2ICAgICAgICAgPSBpNjRfc3RvcmUxNjsKK2V4cG9ydHMuaTY0X3N0b3JlMzIgICAgICAgICA9
IGk2NF9zdG9yZTMyOworZXhwb3J0cy5pMzJfY2x6ICAgICAgICAgICAgID0gaTMyX2NsejsKK2V4
cG9ydHMuaTMyX2N0eiAgICAgICAgICAgICA9IGkzMl9jdHo7CitleHBvcnRzLmkzMl9wb3BjbnQg
ICAgICAgICAgPSBpMzJfcG9wY250OworZXhwb3J0cy5pNjRfY2x6ICAgICAgICAgICAgID0gaTY0
X2NsejsKK2V4cG9ydHMuaTY0X2N0eiAgICAgICAgICAgICA9IGk2NF9jdHo7CitleHBvcnRzLmk2
NF9wb3BjbnQgICAgICAgICAgPSBpNjRfcG9wY250OworZXhwb3J0cy5mMzJfbmVnICAgICAgICAg
ICAgID0gZjMyX25lZzsKK2V4cG9ydHMuZjMyX2FicyAgICAgICAgICAgICA9IGYzMl9hYnM7Citl
eHBvcnRzLmYzMl9zcXJ0ICAgICAgICAgICAgPSBmMzJfc3FydDsKK2V4cG9ydHMuZjMyX2NlaWwg
ICAgICAgICAgICA9IGYzMl9jZWlsOworZXhwb3J0cy5mMzJfZmxvb3IgICAgICAgICAgID0gZjMy
X2Zsb29yOworZXhwb3J0cy5mMzJfdHJ1bmMgICAgICAgICAgID0gZjMyX3RydW5jOworZXhwb3J0
cy5mMzJfbmVhcmVzdCAgICAgICAgID0gZjMyX25lYXJlc3Q7CitleHBvcnRzLmY2NF9uZWcgICAg
ICAgICAgICAgPSBmNjRfbmVnOworZXhwb3J0cy5mNjRfYWJzICAgICAgICAgICAgID0gZjY0X2Fi
czsKK2V4cG9ydHMuZjY0X3NxcnQgICAgICAgICAgICA9IGY2NF9zcXJ0OworZXhwb3J0cy5mNjRf
Y2VpbCAgICAgICAgICAgID0gZjY0X2NlaWw7CitleHBvcnRzLmY2NF9mbG9vciAgICAgICAgICAg
PSBmNjRfZmxvb3I7CitleHBvcnRzLmY2NF90cnVuYyAgICAgICAgICAgPSBmNjRfdHJ1bmM7Citl
eHBvcnRzLmY2NF9uZWFyZXN0ICAgICAgICAgPSBmNjRfbmVhcmVzdDsKK2V4cG9ydHMuaTMyX2Fk
ZCAgICAgICAgICAgICA9IGkzMl9hZGQ7CitleHBvcnRzLmkzMl9zdWIgICAgICAgICAgICAgPSBp
MzJfc3ViOworZXhwb3J0cy5pMzJfbXVsICAgICAgICAgICAgID0gaTMyX211bDsKK2V4cG9ydHMu
aTMyX2Rpdl9zICAgICAgICAgICA9IGkzMl9kaXZfczsKK2V4cG9ydHMuaTMyX2Rpdl91ICAgICAg
ICAgICA9IGkzMl9kaXZfdTsKK2V4cG9ydHMuaTMyX3JlbV9zICAgICAgICAgICA9IGkzMl9yZW1f
czsKK2V4cG9ydHMuaTMyX3JlbV91ICAgICAgICAgICA9IGkzMl9yZW1fdTsKK2V4cG9ydHMuaTMy
X2FuZCAgICAgICAgICAgICA9IGkzMl9hbmQ7CitleHBvcnRzLmkzMl9vciAgICAgICAgICAgICAg
PSBpMzJfb3I7CitleHBvcnRzLmkzMl94b3IgICAgICAgICAgICAgPSBpMzJfeG9yOworZXhwb3J0
cy5pMzJfc2hsICAgICAgICAgICAgID0gaTMyX3NobDsKK2V4cG9ydHMuaTMyX3Nocl9zICAgICAg
ICAgICA9IGkzMl9zaHJfczsKK2V4cG9ydHMuaTMyX3Nocl91ICAgICAgICAgICA9IGkzMl9zaHJf
dTsKK2V4cG9ydHMuaTMyX3JvdGwgICAgICAgICAgICA9IGkzMl9yb3RsOworZXhwb3J0cy5pMzJf
cm90ciAgICAgICAgICAgID0gaTMyX3JvdHI7CitleHBvcnRzLmk2NF9hZGQgICAgICAgICAgICAg
PSBpNjRfYWRkOworZXhwb3J0cy5pNjRfc3ViICAgICAgICAgICAgID0gaTY0X3N1YjsKK2V4cG9y
dHMuaTY0X211bCAgICAgICAgICAgICA9IGk2NF9tdWw7CitleHBvcnRzLmk2NF9kaXZfcyAgICAg
ICAgICAgPSBpNjRfZGl2X3M7CitleHBvcnRzLmk2NF9kaXZfdSAgICAgICAgICAgPSBpNjRfZGl2
X3U7CitleHBvcnRzLmk2NF9yZW1fcyAgICAgICAgICAgPSBpNjRfcmVtX3M7CitleHBvcnRzLmk2
NF9yZW1fdSAgICAgICAgICAgPSBpNjRfcmVtX3U7CitleHBvcnRzLmk2NF9hbmQgICAgICAgICAg
ICAgPSBpNjRfYW5kOworZXhwb3J0cy5pNjRfb3IgICAgICAgICAgICAgID0gaTY0X29yOworZXhw
b3J0cy5pNjRfeG9yICAgICAgICAgICAgID0gaTY0X3hvcjsKK2V4cG9ydHMuaTY0X3NobCAgICAg
ICAgICAgICA9IGk2NF9zaGw7CitleHBvcnRzLmk2NF9zaHJfcyAgICAgICAgICAgPSBpNjRfc2hy
X3M7CitleHBvcnRzLmk2NF9zaHJfdSAgICAgICAgICAgPSBpNjRfc2hyX3U7CitleHBvcnRzLmk2
NF9yb3RsICAgICAgICAgICAgPSBpNjRfcm90bDsKK2V4cG9ydHMuaTY0X3JvdHIgICAgICAgICAg
ICA9IGk2NF9yb3RyOworZXhwb3J0cy5mMzJfYWRkICAgICAgICAgICAgID0gZjMyX2FkZDsKK2V4
cG9ydHMuZjMyX3N1YiAgICAgICAgICAgICA9IGYzMl9zdWI7CitleHBvcnRzLmYzMl9tdWwgICAg
ICAgICAgICAgPSBmMzJfbXVsOworZXhwb3J0cy5mMzJfZGl2ICAgICAgICAgICAgID0gZjMyX2Rp
djsKK2V4cG9ydHMuZjMyX21pbiAgICAgICAgICAgICA9IGYzMl9taW47CitleHBvcnRzLmYzMl9t
YXggICAgICAgICAgICAgPSBmMzJfbWF4OworZXhwb3J0cy5mMzJfY29weXNpZ24gICAgICAgID0g
ZjMyX2NvcHlzaWduOworZXhwb3J0cy5mNjRfYWRkICAgICAgICAgICAgID0gZjY0X2FkZDsKK2V4
cG9ydHMuZjY0X3N1YiAgICAgICAgICAgICA9IGY2NF9zdWI7CitleHBvcnRzLmY2NF9tdWwgICAg
ICAgICAgICAgPSBmNjRfbXVsOworZXhwb3J0cy5mNjRfZGl2ICAgICAgICAgICAgID0gZjY0X2Rp
djsKK2V4cG9ydHMuZjY0X21pbiAgICAgICAgICAgICA9IGY2NF9taW47CitleHBvcnRzLmY2NF9t
YXggICAgICAgICAgICAgPSBmNjRfbWF4OworZXhwb3J0cy5mNjRfY29weXNpZ24gICAgICAgID0g
ZjY0X2NvcHlzaWduOworZXhwb3J0cy5pMzJfZXF6ICAgICAgICAgICAgID0gaTMyX2VxejsKK2V4
cG9ydHMuaTY0X2VxeiAgICAgICAgICAgICA9IGk2NF9lcXo7CitleHBvcnRzLmkzMl9lcSAgICAg
ICAgICAgICAgPSBpMzJfZXE7CitleHBvcnRzLmkzMl9uZSAgICAgICAgICAgICAgPSBpMzJfbmU7
CitleHBvcnRzLmkzMl9sdF9zICAgICAgICAgICAgPSBpMzJfbHRfczsKK2V4cG9ydHMuaTMyX2x0
X3UgICAgICAgICAgICA9IGkzMl9sdF91OworZXhwb3J0cy5pMzJfbGVfcyAgICAgICAgICAgID0g
aTMyX2xlX3M7CitleHBvcnRzLmkzMl9sZV91ICAgICAgICAgICAgPSBpMzJfbGVfdTsKK2V4cG9y
dHMuaTMyX2d0X3MgICAgICAgICAgICA9IGkzMl9ndF9zOworZXhwb3J0cy5pMzJfZ3RfdSAgICAg
ICAgICAgID0gaTMyX2d0X3U7CitleHBvcnRzLmkzMl9nZV9zICAgICAgICAgICAgPSBpMzJfZ2Vf
czsKK2V4cG9ydHMuaTMyX2dlX3UgICAgICAgICAgICA9IGkzMl9nZV91OworZXhwb3J0cy5pNjRf
ZXEgICAgICAgICAgICAgID0gaTY0X2VxOworZXhwb3J0cy5pNjRfbmUgICAgICAgICAgICAgID0g
aTY0X25lOworZXhwb3J0cy5pNjRfbHRfcyAgICAgICAgICAgID0gaTY0X2x0X3M7CitleHBvcnRz
Lmk2NF9sdF91ICAgICAgICAgICAgPSBpNjRfbHRfdTsKK2V4cG9ydHMuaTY0X2xlX3MgICAgICAg
ICAgICA9IGk2NF9sZV9zOworZXhwb3J0cy5pNjRfbGVfdSAgICAgICAgICAgID0gaTY0X2xlX3U7
CitleHBvcnRzLmk2NF9ndF9zICAgICAgICAgICAgPSBpNjRfZ3RfczsKK2V4cG9ydHMuaTY0X2d0
X3UgICAgICAgICAgICA9IGk2NF9ndF91OworZXhwb3J0cy5pNjRfZ2VfcyAgICAgICAgICAgID0g
aTY0X2dlX3M7CitleHBvcnRzLmk2NF9nZV91ICAgICAgICAgICAgPSBpNjRfZ2VfdTsKK2V4cG9y
dHMuZjMyX2VxICAgICAgICAgICAgICA9IGYzMl9lcTsKK2V4cG9ydHMuZjMyX25lICAgICAgICAg
ICAgICA9IGYzMl9uZTsKK2V4cG9ydHMuZjMyX2x0ICAgICAgICAgICAgICA9IGYzMl9sdDsKK2V4
cG9ydHMuZjMyX2xlICAgICAgICAgICAgICA9IGYzMl9sZTsKK2V4cG9ydHMuZjMyX2d0ICAgICAg
ICAgICAgICA9IGYzMl9ndDsKK2V4cG9ydHMuZjMyX2dlICAgICAgICAgICAgICA9IGYzMl9nZTsK
K2V4cG9ydHMuZjY0X2VxICAgICAgICAgICAgICA9IGY2NF9lcTsKK2V4cG9ydHMuZjY0X25lICAg
ICAgICAgICAgICA9IGY2NF9uZTsKK2V4cG9ydHMuZjY0X2x0ICAgICAgICAgICAgICA9IGY2NF9s
dDsKK2V4cG9ydHMuZjY0X2xlICAgICAgICAgICAgICA9IGY2NF9sZTsKK2V4cG9ydHMuZjY0X2d0
ICAgICAgICAgICAgICA9IGY2NF9ndDsKK2V4cG9ydHMuZjY0X2dlICAgICAgICAgICAgICA9IGY2
NF9nZTsKK2V4cG9ydHMuaTMyX3dyYXBfaTY0ICAgICAgICA9IGkzMl93cmFwX2k2NDsKK2V4cG9y
dHMuaTMyX3RydW5jX3NfZjMyICAgICA9IGkzMl90cnVuY19zX2YzMjsKK2V4cG9ydHMuaTMyX3Ry
dW5jX3VfZjMyICAgICA9IGkzMl90cnVuY191X2YzMjsKK2V4cG9ydHMuaTMyX3RydW5jX3NfZjY0
ICAgICA9IGkzMl90cnVuY19zX2Y2NDsKK2V4cG9ydHMuaTMyX3RydW5jX3VfZjY0ICAgICA9IGkz
Ml90cnVuY191X2Y2NDsKK2V4cG9ydHMuaTY0X2V4dGVuZF9zX2kzMiAgICA9IGk2NF9leHRlbmRf
c19pMzI7CitleHBvcnRzLmk2NF9leHRlbmRfdV9pMzIgICAgPSBpNjRfZXh0ZW5kX3VfaTMyOwor
ZXhwb3J0cy5pNjRfdHJ1bmNfc19mMzIgICAgID0gaTY0X3RydW5jX3NfZjMyOworZXhwb3J0cy5p
NjRfdHJ1bmNfdV9mMzIgICAgID0gaTY0X3RydW5jX3VfZjMyOworZXhwb3J0cy5pNjRfdHJ1bmNf
c19mNjQgICAgID0gaTY0X3RydW5jX3NfZjY0OworZXhwb3J0cy5pNjRfdHJ1bmNfdV9mNjQgICAg
ID0gaTY0X3RydW5jX3VfZjY0OworZXhwb3J0cy5mMzJfY29udmVydF9zX2kzMiAgID0gZjMyX2Nv
bnZlcnRfc19pMzI7CitleHBvcnRzLmYzMl9jb252ZXJ0X3VfaTMyICAgPSBmMzJfY29udmVydF91
X2kzMjsKK2V4cG9ydHMuZjMyX2NvbnZlcnRfc19pNjQgICA9IGYzMl9jb252ZXJ0X3NfaTY0Owor
ZXhwb3J0cy5mMzJfY29udmVydF91X2k2NCAgID0gZjMyX2NvbnZlcnRfdV9pNjQ7CitleHBvcnRz
LmYzMl9kZW1vdGVfZjY0ICAgICAgPSBmMzJfZGVtb3RlX2Y2NDsKK2V4cG9ydHMuZjY0X2NvbnZl
cnRfc19pMzIgICA9IGY2NF9jb252ZXJ0X3NfaTMyOworZXhwb3J0cy5mNjRfY29udmVydF91X2kz
MiAgID0gZjY0X2NvbnZlcnRfdV9pMzI7CitleHBvcnRzLmY2NF9jb252ZXJ0X3NfaTY0ICAgPSBm
NjRfY29udmVydF9zX2k2NDsKK2V4cG9ydHMuZjY0X2NvbnZlcnRfdV9pNjQgICA9IGY2NF9jb252
ZXJ0X3VfaTY0OworZXhwb3J0cy5mNjRfcHJvbW90ZV9mMzIgICAgID0gZjY0X3Byb21vdGVfZjMy
OworZXhwb3J0cy5pMzJfcmVpbnRlcnByZXRfZjMyID0gaTMyX3JlaW50ZXJwcmV0X2YzMjsKK2V4
cG9ydHMuaTY0X3JlaW50ZXJwcmV0X2Y2NCA9IGk2NF9yZWludGVycHJldF9mNjQ7CitleHBvcnRz
LmYzMl9yZWludGVycHJldF9pMzIgPSBmMzJfcmVpbnRlcnByZXRfaTMyOworZXhwb3J0cy5mNjRf
cmVpbnRlcnByZXRfaTY0ID0gZjY0X3JlaW50ZXJwcmV0X2k2NDsKK2V4cG9ydHMuY3VycmVudF9t
ZW1vcnkgICAgICA9IGN1cnJlbnRfbWVtb3J5OworZXhwb3J0cy5ncm93X21lbW9yeSAgICAgICAg
ID0gZ3Jvd19tZW1vcnk7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIG9w
ZXJhdG9ycy5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAg
X3JlZ2lzdHJ5WydwYXJzZSddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9
OworLy8vLy8vLy8gc3RhcnQgb2YgcGFyc2UuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBC
VUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBz
dHJpY3QnOworCit2YXIgQ3VycnkgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3Vy
cnkiKTsKK3ZhciBMZXhlciAgICA9IHJlcXVpcmUoIi4vbGV4ZXIiKTsKK3ZhciBMZXhpbmcgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9sZXhpbmciKTsKK3ZhciBQYXJzZXIgICA9IHJl
cXVpcmUoIi4vcGFyc2VyIik7Cit2YXIgU2NyaXB0ICAgPSByZXF1aXJlKCIuL3NjcmlwdCIpOwor
dmFyIFNvdXJjZSAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKK3ZhciBDYW1sX29iaiA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOworCitmdW5jdGlvbiBwYXJzZSRwcmlt
ZShuYW1lLCBsZXhidWYsIHN0YXJ0KSB7CisgIHZhciBpbml0ID0gbGV4YnVmWy8qIGxleF9jdXJy
X3AgKi8xMV07CisgIGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdID0gLyogcmVjb3JkICovWwor
ICAgIC8qIHBvc19mbmFtZSAqL25hbWUsCisgICAgLyogcG9zX2xudW0gKi9pbml0Wy8qIHBvc19s
bnVtICovMV0sCisgICAgLyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJdLAorICAgIC8q
IHBvc19jbnVtICovaW5pdFsvKiBwb3NfY251bSAqLzNdCisgIF07CisgIHRyeSB7CisgICAgcmV0
dXJuIEN1cnJ5Ll8yKHN0YXJ0LCBMZXhlci50b2tlbiwgbGV4YnVmKTsKKyAgfQorICBjYXRjaCAo
ZXhuKXsKKyAgICBpZiAoZXhuWzBdID09PSBTY3JpcHQuU3ludGF4KSB7CisgICAgICB2YXIgcmVn
aW9uID0gZXhuWzFdOworICAgICAgdmFyIHJlZ2lvbiRwcmltZSA9IENhbWxfb2JqLmNhbWxfbm90
ZXF1YWwocmVnaW9uLCBTb3VyY2Uubm9fcmVnaW9uKSA/IHJlZ2lvbiA6IC8qIHJlY29yZCAqL1sK
KyAgICAgICAgICAvKiBsZWZ0ICovTGV4ZXIuY29udmVydF9wb3MobGV4YnVmWy8qIGxleF9zdGFy
dF9wICovMTBdKSwKKyAgICAgICAgICAvKiByaWdodCAqL0xleGVyLmNvbnZlcnRfcG9zKGxleGJ1
ZlsvKiBsZXhfY3Vycl9wICovMTFdKQorICAgICAgICBdOworICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgIHJlZ2lvbiRwcmltZSwKKyAgICAgICAg
ICAgIGV4blsyXQorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cg
ZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBwYXJzZShuYW1lLCBsZXhidWYsIHBhcmFt
KSB7CisgIHN3aXRjaCAocGFyYW0pIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIHBh
cnNlJHByaW1lKG5hbWUsIGxleGJ1ZiwgUGFyc2VyLm1vZHVsZTEpOworICAgIGNhc2UgMSA6IAor
ICAgICAgICByZXR1cm4gcGFyc2UkcHJpbWUobmFtZSwgbGV4YnVmLCBQYXJzZXIuc2NyaXB0KTsK
KyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuIHBhcnNlJHByaW1lKG5hbWUsIGxleGJ1Ziwg
UGFyc2VyLnNjcmlwdDEpOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9uIHN0cmluZ190byhzdGFy
dCwgcykgeworICB2YXIgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nKHMpOworICByZXR1cm4g
cGFyc2UoInN0cmluZyIsIGxleGJ1Ziwgc3RhcnQpOworfQorCitmdW5jdGlvbiBzdHJpbmdfdG9f
c2NyaXB0KHMpIHsKKyAgcmV0dXJuIHN0cmluZ190bygvKiBTY3JpcHQgKi8xLCBzKTsKK30KKwor
ZnVuY3Rpb24gc3RyaW5nX3RvX21vZHVsZShzKSB7CisgIHJldHVybiBzdHJpbmdfdG8oLyogTW9k
dWxlICovMCwgcyk7Cit9CisKK3ZhciBTeW50YXggPSBTY3JpcHQuU3ludGF4OworCitleHBvcnRz
LlN5bnRheCAgICAgICAgICAgPSBTeW50YXg7CitleHBvcnRzLnBhcnNlICAgICAgICAgICAgPSBw
YXJzZTsKK2V4cG9ydHMuc3RyaW5nX3RvX3NjcmlwdCA9IHN0cmluZ190b19zY3JpcHQ7CitleHBv
cnRzLnN0cmluZ190b19tb2R1bGUgPSBzdHJpbmdfdG9fbW9kdWxlOworLyogTGV4ZXIgTm90IGEg
cHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiBwYXJzZS5qcyAvLy8vLy8vLworwqAgwqAg
cmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5WydwYXJzZXInXSA9IGZ1bmN0
aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHBhcnNl
ci5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4z
ICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBBc3QgICAgICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYXN0Iik7Cit2YXIgSTMyICAgICAgICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2kzMiIpOwordmFyIExpYiAgICAgICAgICAgICAgICAgICAgID0g
cmVxdWlyZSgiLi9saWIiKTsKK3ZhciAkJE1hcCAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUo
ImJzLXBsYXRmb3JtL2xpYi9qcy9tYXAiKTsKK3ZhciBMaXN0ICAgICAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQmxvY2sgICAgICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2siKTsKK3ZhciBDdXJy
eSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIp
OwordmFyIFNjcmlwdCAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zY3JpcHQiKTsKK3Zh
ciBTb3VyY2UgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc291cmNlIik7Cit2YXIgJCRT
dHJpbmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvc3RyaW5n
Iik7Cit2YXIgUGFyc2luZyAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvcGFyc2luZyIpOwordmFyIENhbWxfb2JqICAgICAgICAgICAgICAgID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Cit2YXIgT3BlcmF0b3JzICAgICAgICAgICAg
ICAgPSByZXF1aXJlKCIuL29wZXJhdG9ycyIpOwordmFyIFBlcnZhc2l2ZXMgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3BlcnZhc2l2ZXMiKTsKK3ZhciBDYW1sX2Zv
cm1hdCAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zvcm1h
dCIpOwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0v
bGliL2pzL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIHBhcnNlX2Vycm9y
KG1zZykgeworICB2YXIgbXNnJDEgPSBtc2cgPT09ICJzeW50YXggZXJyb3IiID8gInVuZXhwZWN0
ZWQgdG9rZW4iIDogbXNnOworICB0aHJvdyBbCisgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAg
ICAgIFNvdXJjZS5ub19yZWdpb24sCisgICAgICAgIG1zZyQxCisgICAgICBdOworfQorCitmdW5j
dGlvbiBwb3NpdGlvbl90b19wb3MocG9zaXRpb24pIHsKKyAgcmV0dXJuIC8qIHJlY29yZCAqL1sK
KyAgICAgICAgICAvKiBmaWxlICovcG9zaXRpb25bLyogcG9zX2ZuYW1lICovMF0sCisgICAgICAg
ICAgLyogbGluZSAqL3Bvc2l0aW9uWy8qIHBvc19sbnVtICovMV0sCisgICAgICAgICAgLyogY29s
dW1uICovcG9zaXRpb25bLyogcG9zX2NudW0gKi8zXSAtIHBvc2l0aW9uWy8qIHBvc19ib2wgKi8y
XSB8IDAKKyAgICAgICAgXTsKK30KKworZnVuY3Rpb24gcG9zaXRpb25zX3RvX3JlZ2lvbihwb3Np
dGlvbjEsIHBvc2l0aW9uMikgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8q
IGxlZnQgKi9wb3NpdGlvbl90b19wb3MocG9zaXRpb24xKSwKKyAgICAgICAgICAvKiByaWdodCAq
L3Bvc2l0aW9uX3RvX3Bvcyhwb3NpdGlvbjIpCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGF0
KCkgeworICByZXR1cm4gcG9zaXRpb25zX3RvX3JlZ2lvbihQYXJzaW5nLnN5bWJvbF9zdGFydF9w
b3MoLyogKCkgKi8wKSwgUGFyc2luZy5zeW1ib2xfZW5kX3BvcygvKiAoKSAqLzApKTsKK30KKwor
ZnVuY3Rpb24gYXRpKGkpIHsKKyAgcmV0dXJuIHBvc2l0aW9uc190b19yZWdpb24oUGFyc2luZy5y
aHNfc3RhcnRfcG9zKGkpLCBQYXJzaW5nLnJoc19lbmRfcG9zKGkpKTsKK30KKworZnVuY3Rpb24g
bGl0ZXJhbChmLCBzKSB7CisgIHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKGYsIHMpOworICB9
CisgIGNhdGNoIChleG4peworICAgIGlmIChleG5bMF0gPT09IENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmZhaWx1cmUpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAgICAgIFNjcmlwdC5TeW50YXgs
CisgICAgICAgICAgICBzWy8qIGF0ICovMF0sCisgICAgICAgICAgICAiY29uc3RhbnQgb3V0IG9m
IHJhbmdlIgorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhu
OworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBuYXQocywgYXQpIHsKKyAgdHJ5IHsKKyAgICB2
YXIgbiA9IENhbWxfZm9ybWF0LmNhbWxfaW50X29mX3N0cmluZyhzKTsKKyAgICBpZiAobiA+PSAw
KSB7CisgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBbCisg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAorICAgICAgICAgICAg
IiIKKyAgICAgICAgICBdOworICAgIH0KKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhu
WzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7CisgICAgICB0aHJvdyBb
CisgICAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgICAgYXQsCisgICAgICAgICAg
ICAiaW50ZWdlciBjb25zdGFudCBvdXQgb2YgcmFuZ2UiCisgICAgICAgICAgXTsKKyAgICB9Cisg
ICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIG5h
dDMyKHMsIGF0KSB7CisgIHRyeSB7CisgICAgcmV0dXJuIEN1cnJ5Ll8xKEkzMi5vZl9zdHJpbmdf
dSwgcyk7CisgIH0KKyAgY2F0Y2ggKGV4bil7CisgICAgaWYgKGV4blswXSA9PT0gQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuZmFpbHVyZSkgeworICAgICAgdGhyb3cgWworICAgICAgICAgICAgU2Ny
aXB0LlN5bnRheCwKKyAgICAgICAgICAgIGF0LAorICAgICAgICAgICAgImkzMiBjb25zdGFudCBv
dXQgb2YgcmFuZ2UiCisgICAgICAgICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJv
dyBleG47CisgICAgfQorICB9Cit9CisKK3ZhciBWYXJNYXAgPSAkJE1hcC5NYWtlKFskJFN0cmlu
Zy5jb21wYXJlXSk7CisKK2Z1bmN0aW9uIGVtcHR5X2NvbnRleHQoKSB7CisgIHJldHVybiAvKiBy
ZWNvcmQgKi9bCisgICAgICAgICAgLyogdHlwZXMgOiByZWNvcmQgKi9bCisgICAgICAgICAgICAv
KiB0bWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAgICAgICAgICAvKiB0bGlzdCA6IFtd
ICovMAorICAgICAgICAgIF0sCisgICAgICAgICAgLyogdGFibGVzIDogcmVjb3JkICovWworICAg
ICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAgICAgICAgICAvKiBj
b3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIG1lbW9yaWVzIDogcmVjb3JkICov
WworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAgICAgICAg
ICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIGZ1bmNzIDogcmVjb3Jk
ICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAgICAg
ICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIGxvY2FscyA6IHJl
Y29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdLAorICAg
ICAgICAgICAgLyogY291bnQgKi8wCisgICAgICAgICAgXSwKKyAgICAgICAgICAvKiBnbG9iYWxz
IDogcmVjb3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0s
CisgICAgICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIGxh
YmVscyAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdCisgICAgICAgIF07Cit9CisKK2Z1bmN0aW9uIGVu
dGVyX2Z1bmMoYykgeworICByZXR1cm4gLyogcmVjb3JkICovWworICAgICAgICAgIC8qIHR5cGVz
ICovY1svKiB0eXBlcyAqLzBdLAorICAgICAgICAgIC8qIHRhYmxlcyAqL2NbLyogdGFibGVzICov
MV0sCisgICAgICAgICAgLyogbWVtb3JpZXMgKi9jWy8qIG1lbW9yaWVzICovMl0sCisgICAgICAg
ICAgLyogZnVuY3MgKi9jWy8qIGZ1bmNzICovM10sCisgICAgICAgICAgLyogbG9jYWxzIDogcmVj
b3JkICovWworICAgICAgICAgICAgLyogbWFwICovVmFyTWFwWy8qIGVtcHR5ICovMF0sCisgICAg
ICAgICAgICAvKiBjb3VudCAqLzAKKyAgICAgICAgICBdLAorICAgICAgICAgIC8qIGdsb2JhbHMg
Ki9jWy8qIGdsb2JhbHMgKi81XSwKKyAgICAgICAgICAvKiBsYWJlbHMgKi9WYXJNYXBbLyogZW1w
dHkgKi8wXQorICAgICAgICBdOworfQorCitmdW5jdGlvbiB0eXBlXyhjLCB4KSB7CisgIHRyeSB7
CisgICAgcmV0dXJuIEN1cnJ5Ll8yKFZhck1hcFsvKiBmaW5kICovMjFdLCB4Wy8qIGl0ICovMV0s
IGNbLyogdHlwZXMgKi8wXVsvKiB0bWFwICovMF0pOworICB9CisgIGNhdGNoIChleG4peworICAg
IGlmIChleG4gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZCkgeworICAgICAg
dGhyb3cgWworICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwKKyAgICAgICAgICAgIHhbLyogYXQg
Ki8wXSwKKyAgICAgICAgICAgICJ1bmtub3duIHR5cGUgIiArIHhbLyogaXQgKi8xXQorICAgICAg
ICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cgZXhuOworICAgIH0KKyAgfQor
fQorCitmdW5jdGlvbiBsb29rdXAoY2F0ZWdvcnksIHNwYWNlLCB4KSB7CisgIHRyeSB7CisgICAg
cmV0dXJuIEN1cnJ5Ll8yKFZhck1hcFsvKiBmaW5kICovMjFdLCB4Wy8qIGl0ICovMV0sIHNwYWNl
Wy8qIG1hcCAqLzBdKTsKKyAgfQorICBjYXRjaCAoZXhuKXsKKyAgICBpZiAoZXhuID09PSBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKKyAgICAgIHRocm93IFsKKyAgICAgICAg
ICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICB4Wy8qIGF0ICovMF0sCisgICAgICAgICAg
ICAidW5rbm93biAiICsgKGNhdGVnb3J5ICsgKCIgIiArIHhbLyogaXQgKi8xXSkpCisgICAgICAg
ICAgXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aHJvdyBleG47CisgICAgfQorICB9Cit9
CisKK2Z1bmN0aW9uIGZ1bmMoYywgeCkgeworICByZXR1cm4gbG9va3VwKCJmdW5jdGlvbiIsIGNb
LyogZnVuY3MgKi8zXSwgeCk7Cit9CisKK2Z1bmN0aW9uIGxvY2FsKGMsIHgpIHsKKyAgcmV0dXJu
IGxvb2t1cCgibG9jYWwiLCBjWy8qIGxvY2FscyAqLzRdLCB4KTsKK30KKworZnVuY3Rpb24gZ2xv
YmFsKGMsIHgpIHsKKyAgcmV0dXJuIGxvb2t1cCgiZ2xvYmFsIiwgY1svKiBnbG9iYWxzICovNV0s
IHgpOworfQorCitmdW5jdGlvbiB0YWJsZShjLCB4KSB7CisgIHJldHVybiBsb29rdXAoInRhYmxl
IiwgY1svKiB0YWJsZXMgKi8xXSwgeCk7Cit9CisKK2Z1bmN0aW9uIG1lbW9yeShjLCB4KSB7Cisg
IHJldHVybiBsb29rdXAoIm1lbW9yeSIsIGNbLyogbWVtb3JpZXMgKi8yXSwgeCk7Cit9CisKK2Z1
bmN0aW9uIGxhYmVsKGMsIHgpIHsKKyAgdHJ5IHsKKyAgICByZXR1cm4gQ3VycnkuXzIoVmFyTWFw
Wy8qIGZpbmQgKi8yMV0sIHhbLyogaXQgKi8xXSwgY1svKiBsYWJlbHMgKi82XSk7CisgIH0KKyAg
Y2F0Y2ggKGV4bil7CisgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90
X2ZvdW5kKSB7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAg
ICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAgICAgICAgICAgInVua25vd24gbGFiZWwgIiArIHhb
LyogaXQgKi8xXQorICAgICAgICAgIF07CisgICAgfQorICAgIGVsc2UgeworICAgICAgdGhyb3cg
ZXhuOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBhbm9uX3R5cGUoYywgdHkpIHsKKyAgY1sv
KiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0gPSBQZXJ2YXNpdmVzLiRhdChjWy8qIHR5cGVzICov
MF1bLyogdGxpc3QgKi8xXSwgLyogOjogKi9bCisgICAgICAgIHR5LAorICAgICAgICAvKiBbXSAq
LzAKKyAgICAgIF0pOworICByZXR1cm4gLyogKCkgKi8wOworfQorCitmdW5jdGlvbiBiaW5kKGNh
dGVnb3J5LCBzcGFjZSwgeCkgeworICBpZiAoQ3VycnkuXzIoVmFyTWFwWy8qIG1lbSAqLzJdLCB4
Wy8qIGl0ICovMV0sIHNwYWNlWy8qIG1hcCAqLzBdKSkgeworICAgIHRocm93IFsKKyAgICAgICAg
ICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgIHhbLyogYXQgKi8wXSwKKyAgICAgICAgICAiZHVw
bGljYXRlICIgKyAoY2F0ZWdvcnkgKyAoIiAiICsgeFsvKiBpdCAqLzFdKSkKKyAgICAgICAgXTsK
KyAgfQorICBzcGFjZVsvKiBtYXAgKi8wXSA9IEN1cnJ5Ll8zKFZhck1hcFsvKiBhZGQgKi8zXSwg
eFsvKiBpdCAqLzFdLCBzcGFjZVsvKiBjb3VudCAqLzFdLCBzcGFjZVsvKiBtYXAgKi8wXSk7Cisg
IHNwYWNlWy8qIGNvdW50ICovMV0gPSBzcGFjZVsvKiBjb3VudCAqLzFdICsgMSB8IDA7CisgIGlm
IChzcGFjZVsvKiBjb3VudCAqLzFdKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgZWxzZSB7Cisg
ICAgdGhyb3cgWworICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgeFsvKiBhdCAq
LzBdLAorICAgICAgICAgICJ0b28gbWFueSAiICsgKGNhdGVnb3J5ICsgIiBiaW5kaW5ncyIpCisg
ICAgICAgIF07CisgIH0KK30KKworZnVuY3Rpb24gYmluZF9mdW5jKGMsIHgpIHsKKyAgcmV0dXJu
IGJpbmQoImZ1bmN0aW9uIiwgY1svKiBmdW5jcyAqLzNdLCB4KTsKK30KKworZnVuY3Rpb24gYmlu
ZF9sb2NhbChjLCB4KSB7CisgIHJldHVybiBiaW5kKCJsb2NhbCIsIGNbLyogbG9jYWxzICovNF0s
IHgpOworfQorCitmdW5jdGlvbiBiaW5kX2dsb2JhbChjLCB4KSB7CisgIHJldHVybiBiaW5kKCJn
bG9iYWwiLCBjWy8qIGdsb2JhbHMgKi81XSwgeCk7Cit9CisKK2Z1bmN0aW9uIGJpbmRfdGFibGUo
YywgeCkgeworICByZXR1cm4gYmluZCgidGFibGUiLCBjWy8qIHRhYmxlcyAqLzFdLCB4KTsKK30K
KworZnVuY3Rpb24gYmluZF9tZW1vcnkoYywgeCkgeworICByZXR1cm4gYmluZCgibWVtb3J5Iiwg
Y1svKiBtZW1vcmllcyAqLzJdLCB4KTsKK30KKworZnVuY3Rpb24gYW5vbihjYXRlZ29yeSwgc3Bh
Y2UsIG4pIHsKKyAgc3BhY2VbLyogY291bnQgKi8xXSA9IHNwYWNlWy8qIGNvdW50ICovMV0gKyBu
IHwgMDsKKyAgaWYgKEN1cnJ5Ll8yKEkzMi5sdF91LCBzcGFjZVsvKiBjb3VudCAqLzFdLCBuKSkg
eworICAgIHRocm93IFsKKyAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAgICAgICAgIFNvdXJj
ZS5ub19yZWdpb24sCisgICAgICAgICAgInRvbyBtYW55ICIgKyAoY2F0ZWdvcnkgKyAiIGJpbmRp
bmdzIikKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQor
CitmdW5jdGlvbiBhbm9uX2Z1bmMoYykgeworICByZXR1cm4gYW5vbigiZnVuY3Rpb24iLCBjWy8q
IGZ1bmNzICovM10sIDEpOworfQorCitmdW5jdGlvbiBhbm9uX2xvY2FscyhjLCB0cykgeworICBy
ZXR1cm4gYW5vbigibG9jYWwiLCBjWy8qIGxvY2FscyAqLzRdLCBDdXJyeS5fMShMaWIuTGlzdDMy
Wy8qIGxlbmd0aCAqLzBdLCB0cykpOworfQorCitmdW5jdGlvbiBhbm9uX2dsb2JhbChjKSB7Cisg
IHJldHVybiBhbm9uKCJnbG9iYWwiLCBjWy8qIGdsb2JhbHMgKi81XSwgMSk7Cit9CisKK2Z1bmN0
aW9uIGFub25fdGFibGUoYykgeworICByZXR1cm4gYW5vbigidGFibGUiLCBjWy8qIHRhYmxlcyAq
LzFdLCAxKTsKK30KKworZnVuY3Rpb24gYW5vbl9tZW1vcnkoYykgeworICByZXR1cm4gYW5vbigi
bWVtb3J5IiwgY1svKiBtZW1vcmllcyAqLzJdLCAxKTsKK30KKworZnVuY3Rpb24gYW5vbl9sYWJl
bChjKSB7CisgIHZhciBuZXdyZWNvcmQgPSBjLnNsaWNlKCk7CisgIG5ld3JlY29yZFsvKiBsYWJl
bHMgKi82XSA9IEN1cnJ5Ll8yKFZhck1hcFsvKiBtYXAgKi8yMl0sIGZ1bmN0aW9uIChwYXJhbSkg
eworICAgICAgICByZXR1cm4gMSArIHBhcmFtIHwgMDsKKyAgICAgIH0sIGNbLyogbGFiZWxzICov
Nl0pOworICByZXR1cm4gbmV3cmVjb3JkOworfQorCit2YXIgZW1wdHlfdHlwZSA9IC8qIEZ1bmNU
eXBlICovWworICAvKiBbXSAqLzAsCisgIC8qIFtdICovMAorXTsKKworZnVuY3Rpb24gZXhwbGlj
aXRfc2lnKGMsIHZhcl9zZW0sIHR5LCBhdCkgeworICB2YXIgeCA9IEN1cnJ5Ll8yKHZhcl9zZW0s
IGMsIHR5cGVfKTsKKyAgaWYgKHhbLyogaXQgKi8xXSA8IEN1cnJ5Ll8xKExpYi5MaXN0MzJbLyog
bGVuZ3RoICovMF0sIGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKSAmJiBDYW1sX29iai5j
YW1sX25vdGVxdWFsKHR5LCBlbXB0eV90eXBlKSAmJiBDYW1sX29iai5jYW1sX25vdGVxdWFsKHR5
LCBDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBjWy8qIHR5cGVzICovMF1bLyogdGxp
c3QgKi8xXSwgeFsvKiBpdCAqLzFdKSkpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgU2NyaXB0
LlN5bnRheCwKKyAgICAgICAgICBhdCwKKyAgICAgICAgICAic2lnbmF0dXJlIG1pc21hdGNoIgor
ICAgICAgICBdOworICB9CisgIHJldHVybiB4OworfQorCitmdW5jdGlvbiBpbmxpbmVfdHlwZShj
LCB0eSwgYXQpIHsKKyAgdmFyIG1hdGNoID0gQ3VycnkuXzIoTGliLkxpc3RbLyogaW5kZXhfb2Yg
Ki82XSwgdHksIGNbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKTsKKyAgaWYgKG1hdGNoKSB7
CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQobWF0Y2hbMF0sIGF0KTsKKyAgfQorICBlbHNlIHsK
KyAgICB2YXIgaSA9IEN1cnJ5Ll8xKExpYi5MaXN0MzJbLyogbGVuZ3RoICovMF0sIGNbLyogdHlw
ZXMgKi8wXVsvKiB0bGlzdCAqLzFdKTsKKyAgICBhbm9uX3R5cGUoYywgdHkpOworICAgIHJldHVy
biBTb3VyY2UuJGF0JGF0KGksIGF0KTsKKyAgfQorfQorCit2YXIgeXl0cmFuc2xfY29uc3QgPSAv
KiBhcnJheSAqL1sKKyAgMjYzLAorICAyNjQsCisgIDI2NSwKKyAgMjY2LAorICAyNjcsCisgIDI2
OCwKKyAgMjY5LAorICAyNzAsCisgIDI3MSwKKyAgMjcyLAorICAyNzMsCisgIDI3NCwKKyAgMjc1
LAorICAyNzYsCisgIDI3NywKKyAgMjc4LAorICAyNzksCisgIDI4MCwKKyAgMjgxLAorICAyODIs
CisgIDI4MywKKyAgMjg0LAorICAyODUsCisgIDI4NiwKKyAgMjk2LAorICAyOTcsCisgIDI5OCwK
KyAgMjk5LAorICAzMDAsCisgIDMwMSwKKyAgMzAyLAorICAzMDMsCisgIDMwNCwKKyAgMzA1LAor
ICAzMDYsCisgIDMwNywKKyAgMzA4LAorICAzMDksCisgIDMxMCwKKyAgMzExLAorICAzMTIsCisg
IDMxMywKKyAgMzE0LAorICAzMTUsCisgIDMxNiwKKyAgMzE3LAorICAzMTgsCisgIDMxOSwKKyAg
MzIwLAorICAzMjEsCisgIDMyMiwKKyAgMzIzLAorICAzMjQsCisgIDMyNSwKKyAgMzI2LAorICAz
MjcsCisgIDAsCisgIDAKK107CisKK3ZhciB5eXRyYW5zbF9ibG9jayA9IC8qIGFycmF5ICovWwor
ICAyNTcsCisgIDI1OCwKKyAgMjU5LAorICAyNjAsCisgIDI2MSwKKyAgMjYyLAorICAyODcsCisg
IDI4OCwKKyAgMjg5LAorICAyOTAsCisgIDI5MSwKKyAgMjkyLAorICAyOTMsCisgIDI5NCwKKyAg
Mjk1LAorICAzMjgsCisgIDAKK107CisKK3ZhciB5eWFjdCA9IC8qIGFycmF5ICovWworICBmdW5j
dGlvbiAoKSB7CisgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoInBhcnNlciIpOworICB9
LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuICIiOworICB9LAorICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAwKTsKKyAgICByZXR1cm4gXzEgKyBfMjsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgewor
ICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEp
OworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwor
ICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIF8xLAorICAgICAgICAgICAgXzIKKyAg
ICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIC8qIEZ1bmNSZWZU
eXBlICovMDsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJu
IC8qIEdsb2JhbFR5cGUgKi9bCisgICAgICAgICAgICBfMSwKKyAgICAgICAgICAgIC8qIEltbXV0
YWJsZSAqLzAKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICByZXR1cm4gLyogR2xvYmFsVHlwZSAqL1sKKyAgICAgICAgICAgIF8zLAorICAgICAg
ICAgICAgLyogTXV0YWJsZSAqLzEKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gLyogRnVuY1R5
cGUgKi9bCisgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAg
ICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIg
XzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICB2YXIgaW5z
ID0gXzVbMF07CisgICAgaWYgKGlucyAhPT0gLyogW10gKi8wKSB7CisgICAgICB2YXIgYXQkMSA9
IGF0KC8qICgpICovMCk7CisgICAgICB0aHJvdyBbCisgICAgICAgICAgICBTY3JpcHQuU3ludGF4
LAorICAgICAgICAgICAgYXQkMSwKKyAgICAgICAgICAgICJyZXN1bHQgYmVmb3JlIHBhcmFtZXRl
ciIKKyAgICAgICAgICBdOworICAgIH0KKyAgICByZXR1cm4gLyogRnVuY1R5cGUgKi9bCisgICAg
ICAgICAgICBpbnMsCisgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChfMywgXzVbMV0pCisgICAg
ICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIC8q
IEZ1bmNUeXBlICovWworICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoXzMsIF81WzBdKSwKKyAg
ICAgICAgICAgIF81WzFdCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7
CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Cisg
ICAgdmFyIF82ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
cmV0dXJuIC8qIEZ1bmNUeXBlICovWworICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAg
ICAgIF80LAorICAgICAgICAgICAgICBfNlswXQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
IF82WzFdCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgcmV0dXJuIC8qIFRhYmxlVHlwZSAqL1sKKyAgICAgICAgICAgIF8xLAorICAgICAgICAgICAg
XzIKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsK
KyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAg
ICByZXR1cm4gLyogTWVtb3J5VHlwZSAqL1tfMV07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDApOworICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAvKiBtaW4g
Ki9uYXQzMihfMSwgYXRpKDEpKSwKKyAgICAgICAgICAgIC8qIG1heCA6IE5vbmUgKi8wCisgICAg
ICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8y
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAgIC8qIG1pbiAqL25hdDMyKF8xLCBhdGkoMSkpLAorICAg
ICAgICAgICAgLyogbWF4IDogU29tZSAqL1tuYXQzMihfMiwgYXRpKDIpKV0KKyAgICAgICAgICBd
OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgIH0sCisgIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KF8xLCBhdCgvKiAoKSAq
LzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8x
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIFNv
dXJjZS4kYXQkYXQoXzEsIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAwKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdChfMSwgYXQoLyogKCkgKi8wKSk7
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBhdCQxID0gYXQo
LyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKF8sIF8kMSkgeworICAgICAgcmV0dXJu
IFNvdXJjZS4kYXQkYXQobmF0MzIoXzEsIGF0JDEpLCBhdCQxKTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBsb29rdXApIHsKKyAgICAgIHJldHVybiBTb3VyY2Uu
JGF0JGF0KEN1cnJ5Ll8yKGxvb2t1cCwgYywgU291cmNlLiRhdCRhdChfMSwgYXQkMSkpLCBhdCQx
KTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChf
LCBfJDEpIHsKKyAgICAgIHJldHVybiAvKiBbXSAqLzA7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBsb29rdXApIHsKKyAg
ICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzIoXzEsIGMsIGxvb2t1
cCksCisgICAgICAgICAgICAgIEN1cnJ5Ll8yKF8yLCBjLCBsb29rdXApCisgICAgICAgICAgICBd
OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMs
IGFub24sIF8pIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMShhbm9uLCBjKTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMs
IF8sIGJpbmQpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihiaW5kLCBjLCBfMSk7CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIFNvdXJjZS4k
YXQkYXQoXzEsIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0
dXJuIGZ1bmN0aW9uIChjLCB4cykgeworICAgICAgTGlzdC5pdGVyKGZ1bmN0aW9uICh4KSB7Cisg
ICAgICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgICAgICBTY3JpcHQuU3ludGF4LAorICAg
ICAgICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAgICAgICAgICAgICAgICAgIm1pc21hdGNo
aW5nIGxhYmVsIgorICAgICAgICAgICAgICAgIF07CisgICAgICAgICAgfSwgeHMpOworICAgICAg
cmV0dXJuIGFub25fbGFiZWwoYyk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjLCB4cykgeworICAgICAgTGlzdC5pdGVy
KGZ1bmN0aW9uICh4KSB7CisgICAgICAgICAgICBpZiAoeFsvKiBpdCAqLzFdICE9PSBfMVsvKiBp
dCAqLzFdKSB7CisgICAgICAgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgICAgICAgU2Ny
aXB0LlN5bnRheCwKKyAgICAgICAgICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAorICAgICAgICAg
ICAgICAgICAgICAibWlzbWF0Y2hpbmcgbGFiZWwiCisgICAgICAgICAgICAgICAgICBdOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHhzKTsKKyAgICAgIHZhciBjJDEgPSBjOworICAg
ICAgdmFyIHggPSBfMTsKKyAgICAgIHZhciBuZXdyZWNvcmQgPSBjJDEuc2xpY2UoKTsKKyAgICAg
IG5ld3JlY29yZFsvKiBsYWJlbHMgKi82XSA9IEN1cnJ5Ll8zKFZhck1hcFsvKiBhZGQgKi8zXSwg
eFsvKiBpdCAqLzFdLCAwLCBDdXJyeS5fMihWYXJNYXBbLyogbWFwICovMjJdLCBmdW5jdGlvbiAo
cGFyYW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMSArIHBhcmFtIHwgMDsKKyAgICAgICAg
ICAgICAgfSwgYyQxWy8qIGxhYmVscyAqLzZdKSk7CisgICAgICByZXR1cm4gbmV3cmVjb3JkOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gLyogW10gKi8wOworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gLyogOjogKi9bCisg
ICAgICAgICAgICBfMSwKKyAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgIF07CisgIH0s
CisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gMDsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMCk7CisgICAgcmV0dXJuIG5hdDMyKF8xLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwK
KyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAvKiBOb25lICovMDsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIG4gPSBuYXQoXzEsIGF0KC8qICgpICovMCkp
OworICAgIGlmICghQ3VycnkuXzEoTGliLkludFsvKiBpc19wb3dlcl9vZl90d28gKi8xXSwgbikp
IHsKKyAgICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICAgIHRocm93IFsKKyAgICAg
ICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAgICAgICAgICBhdCQxLAorICAgICAgICAgICAgImFs
aWdubWVudCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIgorICAgICAgICAgIF07CisgICAgfQorICAg
IHJldHVybiAvKiBTb21lICovW0N1cnJ5Ll8xKExpYi5JbnRbLyogbG9nMiAqLzBdLCBuKV07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBhdCQxID0gYXQoLyog
KCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgU291cmNlLiRhdCRhdChDdXJyeS5fMShfMSwgYyksIGF0JDEpLAor
ICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzAp
OworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIC8qIDo6ICovWworICAg
ICAgICAgICAgICBTb3VyY2UuJGF0JGF0KEN1cnJ5Ll8xKF8xLCBjKSwgYXQkMSksCisgICAgICAg
ICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMCk7CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZnVu
Y3Rpb24gKCkgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy51bnJlYWNoYWJsZTsKKyAgICB9Owor
ICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJl
dHVybiBPcGVyYXRvcnMubm9wOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5icihDdXJyeS5fMihfMiwgYywgbGFiZWwpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVy
biBPcGVyYXRvcnMuYnJfaWYoQ3VycnkuXzIoXzIsIGMsIGxhYmVsKSk7CisgICAgfTsKKyAgfSwK
KyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Cisg
ICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShMaWIuTGlzdFsvKiBzcGxpdF9sYXN0ICovNV0sIC8q
IDo6ICovWworICAgICAgICAgICAgQ3VycnkuXzIoXzIsIGMsIGxhYmVsKSwKKyAgICAgICAgICAg
IEN1cnJ5Ll8yKF8zLCBjLCBsYWJlbCkKKyAgICAgICAgICBdKTsKKyAgICAgIHJldHVybiBPcGVy
YXRvcnMuYnJfdGFibGUobWF0Y2hbMF0sIG1hdGNoWzFdKTsKKyAgICB9OworICB9LAorICBmdW5j
dGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBPcGVyYXRv
cnMuJCRyZXR1cm47CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gT3BlcmF0b3JzLmNhbGwo
Q3VycnkuXzIoXzIsIGMsIGZ1bmMpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBPcGVy
YXRvcnMuY2FsbF9pbmRpcmVjdChDdXJyeS5fMihfMiwgYywgdHlwZV8pKTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVy
biBPcGVyYXRvcnMuZHJvcDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7CisgICAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuc2VsZWN0OworICAgIH07
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfbG9jYWwoQ3VycnkuXzIoXzIsIGMs
IGxvY2FsKSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gT3BlcmF0b3JzLnNldF9sb2Nh
bChDdXJyeS5fMihfMiwgYywgbG9jYWwpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBP
cGVyYXRvcnMudGVlX2xvY2FsKEN1cnJ5Ll8yKF8yLCBjLCBsb2NhbCkpOworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykg
eworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfZ2xvYmFsKEN1cnJ5Ll8yKF8yLCBjLCBnbG9i
YWwpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAg
ICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuc2V0X2dsb2JhbChD
dXJyeS5fMihfMiwgYywgZ2xvYmFsKSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMik7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMSk7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBDdXJyeS5fMihf
MSwgXzMsIF8yKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsK
KyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAg
ICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIEN1cnJ5Ll8yKF8xLCBfMywgXzIpOwor
ICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgewor
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5jdXJyZW50X21lbW9yeTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBPcGVy
YXRvcnMuZ3Jvd19tZW1vcnk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMSk7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBsaXRlcmFsKF8xLCBf
MilbMF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
cmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiBfMTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAg
ICAgcmV0dXJuIF8xOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDAp
OworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gXzE7CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgp
IHsKKyAgICAgIHJldHVybiBfMTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgcmV0dXJuIF8xOworICAg
IH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfMyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAo
YykgeworICAgICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgXzUpOworICAgICAgdmFy
IG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJpbWUpOworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5i
bG9jayhtYXRjaFswXSwgbWF0Y2hbMV0pOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDMpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGMkcHJpbWUgPSBD
dXJyeS5fMihfMiwgYywgXzUpOworICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJp
bWUpOworICAgICAgcmV0dXJuIE9wZXJhdG9ycy5sb29wKG1hdGNoWzBdLCBtYXRjaFsxXSk7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8y
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF8zID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9u
IChjKSB7CisgICAgICB2YXIgYyRwcmltZSA9IEN1cnJ5Ll8yKF8yLCBjLCBfNSk7CisgICAgICB2
YXIgbWF0Y2ggPSBDdXJyeS5fMShfMywgYyRwcmltZSk7CisgICAgICByZXR1cm4gT3BlcmF0b3Jz
LmlmXyhtYXRjaFswXSwgbWF0Y2hbMV0sIC8qIFtdICovMCk7CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgNik7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF82ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMik7CisgICAgdmFyIF84ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgYyRwcmlt
ZSA9IEN1cnJ5Ll8yKF8yLCBjLCBQZXJ2YXNpdmVzLiRhdChfNSwgXzgpKTsKKyAgICAgIHZhciBt
YXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiBPcGVyYXRvcnMuaWZf
KG1hdGNoWzBdLCBtYXRjaFsxXSwgQ3VycnkuXzEoXzYsIGMkcHJpbWUpKTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
KyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgXzEsCisgICAgICAgICAg
ICAgIEN1cnJ5Ll8xKF8yLCBjKQorICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBmdW5j
dGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMiwg
Yyk7CisgICAgICByZXR1cm4gUGVydmFzaXZlcy4kYXQobWF0Y2hbMF0sIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgU291cmNlLiRhdCRhdChtYXRjaFsxXSwgYXQkMSksCisgICAgICAgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICBdKTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAg
IHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzIsIGMpWzFdLAor
ICAgICAgICAgICAgICBDdXJyeS5fMShfMSwgYykKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8yID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8zID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7
CisgICAgICB2YXIgYyRwcmltZSA9IEN1cnJ5Ll8yKF8yLCBjLCAvKiBbXSAqLzApOworICAgICAg
dmFyIG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJpbWUpOworICAgICAgcmV0dXJuIC8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAvKiBbXSAqLzAsCisgICAgICAgICAgICAgIE9wZXJhdG9ycy5i
bG9jayhtYXRjaFswXSwgbWF0Y2hbMV0pCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisg
IGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAg
ICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgLyogW10gKi8wKTsKKyAgICAgIHZhciBt
YXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
KyAgICAgICAgICAgICAgLyogW10gKi8wLAorICAgICAgICAgICAgICBPcGVyYXRvcnMubG9vcCht
YXRjaFswXSwgbWF0Y2hbMV0pCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGMk
cHJpbWUgPSBDdXJyeS5fMihfMiwgYywgLyogW10gKi8wKTsKKyAgICAgIHZhciBtYXRjaCA9IEN1
cnJ5Ll8yKF80LCBjLCBjJHByaW1lKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgbWF0Y2hbMF0sCisgICAgICAgICAgICAgIE9wZXJhdG9ycy5pZl8oXzMsIG1hdGNo
WzFdLCBtYXRjaFsyXSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF83ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBjJHByaW1lKSB7CisgICAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIFtdICovMCwKKyAgICAgICAg
ICAgICAgQ3VycnkuXzEoXzMsIGMkcHJpbWUpLAorICAgICAgICAgICAgICBDdXJyeS5fMShfNywg
YyRwcmltZSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBjJHByaW1lKSB7CisgICAgICBy
ZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIFtdICovMCwKKyAgICAgICAgICAg
ICAgQ3VycnkuXzEoXzMsIGMkcHJpbWUpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgOCk7Cisg
ICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAg
dmFyIF84ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0
dXJuIGZ1bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzQs
IGMkcHJpbWUpLAorICAgICAgICAgICAgICBDdXJyeS5fMShfOCwgYyRwcmltZSkKKyAgICAgICAg
ICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNCk7CisgICAg
dmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0
dXJuIGZ1bmN0aW9uIChjLCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzQs
IGMkcHJpbWUpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAg
fTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF8yID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8zID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChj
LCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIEN1
cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzIsIGMkcHJpbWUpLAorICAg
ICAgICAgICAgICBDdXJyeS5fMShfMywgYyRwcmltZSkKKyAgICAgICAgICAgIF07CisgICAgfTsK
KyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChj
LCBjJHByaW1lKSB7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIEN1
cnJ5Ll8xKF8xLCBjKSwKKyAgICAgICAgICAgICAgQ3VycnkuXzEoXzIsIGMkcHJpbWUpLAorICAg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKCkgeworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICByZXR1cm4gLyogW10g
Ki8wOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZh
ciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVy
biBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuJGF0KEN1cnJ5Ll8xKF8x
LCBjKSwgQ3VycnkuXzEoXzIsIGMpKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoKSB7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAg
ICAgICAgICAgMCwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAg
IH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgdmFyIGVzMSA9IEN1cnJ5Ll8xKF8xLCBjKTsKKyAgICAgIHZhciBtYXRj
aCA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAg
ICAgICAgbWF0Y2hbMF0gKyAxIHwgMCwKKyAgICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoZXMx
LCBtYXRjaFsxXSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9f
Y2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMCk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVy
biBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzEs
IGMpLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBtYXRjaCA9IF81WzBdOwor
ICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIC8qIEZ1bmNUeXBlICovWworICAg
ICAgICAgICAgICBtYXRjaFswXSwKKyAgICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoXzMsIG1h
dGNoWzFdKQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIChjKSB7CisgICAg
ICAgICAgICAgIHJldHVybiBDdXJyeS5fMShfNVsxXSwgYyk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgdmFyIG1hdGNo
ID0gXzVbMF07CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgLyogRnVuY1R5
cGUgKi9bCisgICAgICAgICAgICAgIFBlcnZhc2l2ZXMuJGF0KF8zLCBtYXRjaFswXSksCisgICAg
ICAgICAgICAgIG1hdGNoWzFdCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgZnVuY3Rpb24g
KGMpIHsKKyAgICAgICAgICAgICAgYW5vbl9sb2NhbHMoYywgXzMpOworICAgICAgICAgICAgICBy
ZXR1cm4gQ3VycnkuXzEoXzVbMV0sIGMpOworICAgICAgICAgICAgfQorICAgICAgICAgIF07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHZhciBtYXRjaCA9IF82WzBdOworICAg
IHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIC8qIEZ1bmNUeXBlICovWworICAgICAg
ICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICBfNCwKKyAgICAgICAgICAgICAgICBt
YXRjaFswXQorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICBtYXRjaFsxXQorICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIChjKSB7CisgICAgICAgICAgICAgIGJpbmRf
bG9jYWwoYywgXzMpOworICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoXzZbMV0sIGMpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIGVtcHR5X3R5cGUs
CisgICAgICAgICAgICBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICB2YXIgYyRwcmltZSA9
IGFub25fbGFiZWwoYyk7CisgICAgICAgICAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAg
ICAgICAgICAgICAgICAgICAgLyogZnR5cGUgKi9Tb3VyY2UuJGF0JGF0KC0xLCBhdCgvKiAoKSAq
LzApKSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgOiBbXSAqLzAsCisgICAgICAg
ICAgICAgICAgICAgICAgLyogYm9keSAqL0N1cnJ5Ll8xKF8xLCBjJHByaW1lKQorICAgICAgICAg
ICAgICAgICAgICBdOworICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAg
IF81WzBdLAorICAgICAgICAgICAgZnVuY3Rpb24gKGMpIHsKKyAgICAgICAgICAgICAgYW5vbl9s
b2NhbHMoYywgXzMpOworICAgICAgICAgICAgICB2YXIgZiA9IEN1cnJ5Ll8xKF81WzFdLCBjKTsK
KyAgICAgICAgICAgICAgcmV0dXJuIC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAg
ICAvKiBmdHlwZSAqL2ZbLyogZnR5cGUgKi8wXSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBs
b2NhbHMgKi9QZXJ2YXNpdmVzLiRhdChfMywgZlsvKiBsb2NhbHMgKi8xXSksCisgICAgICAgICAg
ICAgICAgICAgICAgLyogYm9keSAqL2ZbLyogYm9keSAqLzJdCisgICAgICAgICAgICAgICAgICAg
IF07CisgICAgICAgICAgICB9CisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMik7CisgICAgdmFyIF82ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgXzZbMF0sCisgICAg
ICAgICAgICBmdW5jdGlvbiAoYykgeworICAgICAgICAgICAgICBiaW5kX2xvY2FsKGMsIF8zKTsK
KyAgICAgICAgICAgICAgdmFyIGYgPSBDdXJyeS5fMShfNlsxXSwgYyk7CisgICAgICAgICAgICAg
IHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgLyogZnR5cGUgKi9m
Wy8qIGZ0eXBlICovMF0sCisgICAgICAgICAgICAgICAgICAgICAgLyogbG9jYWxzIDogOjogKi9b
CisgICAgICAgICAgICAgICAgICAgICAgICBfNCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZb
LyogbG9jYWxzICovMV0KKyAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAgIC8qIGJvZHkgKi9mWy8qIGJvZHkgKi8yXQorICAgICAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgICAgfQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDQpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDMpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIp
OworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwor
ICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
KyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX2Z1bmMsIGJpbmRfZnVuYyk7CisgICAgICB2YXIg
dCA9IGV4cGxpY2l0X3NpZyhjLCBfNSwgXzZbMF0sIGF0JDEpOworICAgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFy
IGluaXQgPSBDdXJyeS5fMShfNlsxXSwgZW50ZXJfZnVuYyhjKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIGZ0eXBlICovdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2Nh
bHMgKi9pbml0Wy8qIGxvY2FscyAqLzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IGJvZHkgKi9pbml0Wy8qIGJvZHkgKi8yXQorICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBh
dCQxKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgQ3VycnkuXzMoXzQsIC8qIEZ1
bmNFeHBvcnQgKi8wLCBjWy8qIGZ1bmNzICovM11bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAg
ICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAg
dmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFy
IF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0
JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3Vy
cnkuXzMoXzMsIGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHZhciB0ID0gZXhwbGlj
aXRfc2lnKGMsIF80LCBfNVswXSwgYXQkMSk7CisgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCisg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgaW5pdCA9IEN1
cnJ5Ll8xKF81WzFdLCBlbnRlcl9mdW5jKGMpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU291
cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
ZnR5cGUgKi90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxvY2FscyAqL2luaXRb
LyogbG9jYWxzICovMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYm9keSAqL2lu
aXRbLyogYm9keSAqLzJdCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8z
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgv
KiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMs
IGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKKyAgICAgIHZhciB0ID0gaW5saW5lX3R5cGUoYywg
XzVbMF0sIGF0JDEpOworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGluaXQgPSBDdXJyeS5fMShfNVsxXSwg
ZW50ZXJfZnVuYyhjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZ0eXBlICovdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2FscyAqLzFd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9pbml0Wy8qIGJvZHkgKi8y
XQorICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgQ3VycnkuXzMoXzQsIC8qIEZ1bmNFeHBvcnQgKi8wLCBjWy8qIGZ1bmNz
ICovM11bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOwor
ICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZnVu
YywgYmluZF9mdW5jKTsKKyAgICAgIHZhciB0ID0gaW5saW5lX3R5cGUoYywgXzRbMF0sIGF0JDEp
OworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgdmFyIGluaXQgPSBDdXJyeS5fMShfNFsxXSwgZW50ZXJfZnVuYyhj
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZ0eXBlICovdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2FscyAqLzFdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9pbml0Wy8qIGJvZHkgKi8yXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICBdLCBhdCQxKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgeworICAgIHJldHVybiBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Cisg
ICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAg
dmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAg
ICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzEsIGMpLCBhdCQxKTsKKyAgICB9Owor
ICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICov
MCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gU291cmNlLiRhdCRh
dCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBpbmRleCAqL0N1cnJ5Ll8yKF8z
LCBjLCB0YWJsZSksCisgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9DdXJyeS5fMShfNCwg
YyksCisgICAgICAgICAgICAgICAgICAvKiBpbml0ICovQ3VycnkuXzIoXzUsIGMsIGZ1bmMpCisg
ICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5j
dGlvbiAoYykgeworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAg
ICAgICAgICAgICAgICAgLyogaW5kZXggKi9Tb3VyY2UuJGF0JGF0KDAsIGF0JDEpLAorICAgICAg
ICAgICAgICAgICAgLyogb2Zmc2V0ICovQ3VycnkuXzEoXzMsIGMpLAorICAgICAgICAgICAgICAg
ICAgLyogaW5pdCAqL0N1cnJ5Ll8yKF80LCBjLCBmdW5jKQorICAgICAgICAgICAgICAgIF0sIGF0
JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZh
ciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBf
NSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQx
ID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5
Ll8zKF8zLCBjLCBhbm9uX3RhYmxlLCBiaW5kX3RhYmxlKTsKKyAgICAgIHJldHVybiBmdW5jdGlv
biAoKSB7CisgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgICBTb3Vy
Y2UuJGF0JGF0KC8qIHJlY29yZCAqL1svKiB0dHlwZSAqL181XSwgYXQkMSksCisgICAgICAgICAg
ICAgICAgLyogW10gKi8wLAorICAgICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBUYWJsZUV4
cG9ydCAqLzEsIGNbLyogdGFibGVzICovMV1bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAgICAg
ICAgXTsKKyAgICAgIH07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJf
ZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
Nyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNik7
CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7Cisg
ICAgdmFyIF84ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAg
dmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAg
ICAgdmFyIGkgPSBjWy8qIHRhYmxlcyAqLzFdWy8qIGNvdW50ICovMV07CisgICAgICBDdXJyeS5f
MyhfMywgYywgYW5vbl90YWJsZSwgYmluZF90YWJsZSk7CisgICAgICByZXR1cm4gZnVuY3Rpb24g
KCkgeworICAgICAgICB2YXIgaW5pdCA9IEN1cnJ5Ll8yKF84LCBjLCBmdW5jKTsKKyAgICAgICAg
dmFyIHNpemUgPSBMaXN0Lmxlbmd0aChpbml0KTsKKyAgICAgICAgcmV0dXJuIC8qIHR1cGxlICov
WworICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWy8qIHR0eXBlIDog
VGFibGVUeXBlICovWworICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVjb3JkICovWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBtaW4gKi9zaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBtYXggOiBTb21lICovW3NpemVdCisgICAgICAgICAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgXzUKKyAgICAgICAgICAgICAgICAgICAgICBdXSwg
YXQkMSksCisgICAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAgICBTb3Vy
Y2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4
ICovU291cmNlLiRhdCRhdChpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9m
ZnNldCAqL1NvdXJjZS4kYXQkYXQoLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTb3VyY2UuJGF0JGF0KE9wZXJhdG9ycy5pMzJfY29uc3QoU291cmNlLiRhdCRhdCgwLCBh
dCQxKSksIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBpbml0ICovaW5pdAorICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpLAorICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICBDdXJyeS5fMyhfNCwgLyogVGFibGVFeHBvcnQgKi8xLCBjWy8qIHRhYmxlcyAqLzFdWy8q
IGNvdW50ICovMV0sIGMpCisgICAgICAgICAgICAgIF07CisgICAgICB9OworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsK
KyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIGluZGV4ICovQ3VycnkuXzIoXzMsIGMs
IG1lbW9yeSksCisgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9DdXJyeS5fMShfNCwgYyks
CisgICAgICAgICAgICAgICAgICAvKiBpbml0ICovXzUKKyAgICAgICAgICAgICAgICBdLCBhdCQx
KTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIg
XzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQk
MSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1
cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBpbmRl
eCAqL1NvdXJjZS4kYXQkYXQoMCwgYXQkMSksCisgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQg
Ki9DdXJyeS5fMShfMywgYyksCisgICAgICAgICAgICAgICAgICAvKiBpbml0ICovXzQKKyAgICAg
ICAgICAgICAgICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChj
KSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9tZW1vcnksIGJpbmRfbWVtb3J5KTsKKyAg
ICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgU291cmNlLiRhdCRhdCgvKiBy
ZWNvcmQgKi9bLyogbXR5cGUgKi9fNV0sIGF0JDEpLAorICAgICAgICAgICAgICAvKiBbXSAqLzAs
CisgICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBNZW1vcnlFeHBvcnQgKi8yLCBjWy8qIG1l
bW9yaWVzICovMl1bLyogY291bnQgKi8xXSwgYykKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAg
fSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNik7CisgICAgdmFyIF80ID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgNSk7CisgICAgdmFyIF83ID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzAp
OworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGkgPSBjWy8qIG1lbW9yaWVz
ICovMl1bLyogY291bnQgKi8xXTsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX21lbW9yeSwg
YmluZF9tZW1vcnkpOworICAgICAgdmFyIHNpemUgPSAoXzcubGVuZ3RoICsgNjU1MzUgfCAwKSAv
IDY1NTM2IHwgMDsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAgU291
cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bLyogbXR5cGUgOiBNZW1vcnlUeXBlICovWy8qIHJlY29y
ZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbiAqL3NpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBtYXggOiBTb21lICovW3NpemVdCisgICAgICAgICAgICAgICAgICAg
ICAgXV1dLCBhdCQxKSwKKyAgICAgICAgICAgICAgLyogOjogKi9bCisgICAgICAgICAgICAgICAg
U291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAgICAgLyogaW5k
ZXggKi9Tb3VyY2UuJGF0JGF0KGksIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAgIC8qIG9m
ZnNldCAqL1NvdXJjZS4kYXQkYXQoLyogOjogKi9bCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU291cmNlLiRhdCRhdChPcGVyYXRvcnMuaTMyX2NvbnN0KFNvdXJjZS4kYXQkYXQoMCwgYXQk
MSkpLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSksCisgICAgICAgICAgICAgICAgICAgICAgLyog
aW5pdCAqL183CisgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpLAorICAgICAgICAgICAgICAg
IC8qIFtdICovMAorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICBDdXJyeS5fMyhfNCwg
LyogTWVtb3J5RXhwb3J0ICovMiwgY1svKiBtZW1vcmllcyAqLzJdWy8qIGNvdW50ICovMV0sIGMp
CisgICAgICAgICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDUpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIp
OworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMp
IHsKKyAgICAgIHZhciBpID0gY1svKiBtZW1vcmllcyAqLzJdWy8qIGNvdW50ICovMV07CisgICAg
ICBDdXJyeS5fMyhfMywgYywgYW5vbl9tZW1vcnksIGJpbmRfbWVtb3J5KTsKKyAgICAgIHZhciBz
aXplID0gKF82Lmxlbmd0aCArIDY1NTM1IHwgMCkgLyA2NTUzNiB8IDA7CisgICAgICByZXR1cm4g
LyogdHVwbGUgKi9bCisgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWy8q
IG10eXBlIDogTWVtb3J5VHlwZSAqL1svKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBtaW4gKi9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogbWF4IDogU29t
ZSAqL1tzaXplXQorICAgICAgICAgICAgICAgICAgICAgIF1dXSwgYXQkMSksCisgICAgICAgICAg
ICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICov
WworICAgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4ICovU291cmNlLiRhdCRhdChpLCBhdCQx
KSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9Tb3VyY2UuJGF0JGF0KC8qIDo6
ICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoT3BlcmF0b3Jz
LmkzMl9jb25zdChTb3VyY2UuJGF0JGF0KDAsIGF0JDEpKSwgYXQkMSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGF0
JDEpLAorICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXQgKi9fNgorICAgICAgICAgICAgICAg
ICAgICBdLCBhdCQxKSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICBdOworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDQpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOworICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX2dsb2Jh
bCwgYmluZF9nbG9iYWwpOworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyog
cmVjb3JkICovWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGd0eXBlICovXzUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmFsdWUgKi9DdXJyeS5fMShfNiwgYykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBHbG9iYWxFeHBvcnQgKi8zLCBjWy8qIGdsb2JhbHMg
Ki81XVsvKiBjb3VudCAqLzFdLCBjKQorICAgICAgICAgICAgXTsKKyAgICB9OworICB9LAorICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAg
cmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9nbG9iYWws
IGJpbmRfZ2xvYmFsKTsKKyAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJl
Y29yZCAqL1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBndHlwZSAqL180LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZhbHVlICovQ3VycnkuXzEoXzUsIGMpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpOworICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJy
eS5fMyhfMywgYywgYW5vbl9mdW5jLCBiaW5kX2Z1bmMpOworICAgICAgcmV0dXJuIC8qIEZ1bmNJ
bXBvcnQgKi9CbG9jay5fXygwLCBbQ3VycnkuXzIoXzQsIGMsIHR5cGVfKV0pOworICAgIH07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBhdDQgPSBhdGkoNCk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9mdW5j
LCBiaW5kX2Z1bmMpOworICAgICAgcmV0dXJuIC8qIEZ1bmNJbXBvcnQgKi9CbG9jay5fXygwLCBb
aW5saW5lX3R5cGUoYywgXzQsIGF0NCldKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAxKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIEN1cnJ5Ll8zKF8z
LCBjLCBhbm9uX3RhYmxlLCBiaW5kX3RhYmxlKTsKKyAgICAgIHJldHVybiAvKiBUYWJsZUltcG9y
dCAqL0Jsb2NrLl9fKDEsIFtfNF0pOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMs
IGFub25fbWVtb3J5LCBiaW5kX21lbW9yeSk7CisgICAgICByZXR1cm4gLyogTWVtb3J5SW1wb3J0
ICovQmxvY2suX18oMiwgW180XSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICBDdXJyeS5fMyhfMywgYywg
YW5vbl9nbG9iYWwsIGJpbmRfZ2xvYmFsKTsKKyAgICAgIHJldHVybiAvKiBHbG9iYWxJbXBvcnQg
Ki9CbG9jay5fXygzLCBbXzRdKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAzKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAyKTsKKyAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgdmFyIGF0NSA9IGF0aSg1KTsK
KyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8q
IHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8qIG1vZHVsZV9uYW1lICovXzMsCisgICAg
ICAgICAgICAgICAgICAvKiBpdGVtX25hbWUgKi9fNCwKKyAgICAgICAgICAgICAgICAgIC8qIGlr
aW5kICovU291cmNlLiRhdCRhdChDdXJyeS5fMShfNSwgYyksIGF0NSkKKyAgICAgICAgICAgICAg
ICBdLCBhdCQxKTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsK
KyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAg
ICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2
YXIgYXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAg
ICBDdXJyeS5fMyhfMywgYywgYW5vbl9mdW5jLCBiaW5kX2Z1bmMpOworICAgICAgcmV0dXJuIFNv
dXJjZS4kYXQkYXQoLyogcmVjb3JkICovWworICAgICAgICAgICAgICAgICAgLyogbW9kdWxlX25h
bWUgKi9fNFswXSwKKyAgICAgICAgICAgICAgICAgIC8qIGl0ZW1fbmFtZSAqL180WzFdLAorICAg
ICAgICAgICAgICAgICAgLyogaWtpbmQgKi9Tb3VyY2UuJGF0JGF0KC8qIEZ1bmNJbXBvcnQgKi9C
bG9jay5fXygwLCBbQ3VycnkuXzIoXzUsIGMsIHR5cGVfKV0pLCBhdCQxKQorICAgICAgICAgICAg
ICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMp
OworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwor
ICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAg
IHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKKyAgICB2YXIgYXQ1ID0gYXRpKDUpOworICAgIHJl
dHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZnVuYywgYmlu
ZF9mdW5jKTsKKyAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAg
ICAgICAgICAgICAgIC8qIG1vZHVsZV9uYW1lICovXzRbMF0sCisgICAgICAgICAgICAgICAgICAv
KiBpdGVtX25hbWUgKi9fNFsxXSwKKyAgICAgICAgICAgICAgICAgIC8qIGlraW5kICovU291cmNl
LiRhdCRhdCgvKiBGdW5jSW1wb3J0ICovQmxvY2suX18oMCwgW2lubGluZV90eXBlKGMsIF81LCBh
dDUpXSksIGF0JDEpCisgICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAg
IHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fdGFibGUs
IGJpbmRfdGFibGUpOworICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWwor
ICAgICAgICAgICAgICAgICAgLyogbW9kdWxlX25hbWUgKi9fNFswXSwKKyAgICAgICAgICAgICAg
ICAgIC8qIGl0ZW1fbmFtZSAqL180WzFdLAorICAgICAgICAgICAgICAgICAgLyogaWtpbmQgKi9T
b3VyY2UuJGF0JGF0KC8qIFRhYmxlSW1wb3J0ICovQmxvY2suX18oMSwgW181XSksIGF0JDEpCisg
ICAgICAgICAgICAgICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fbWVtb3J5LCBiaW5kX21lbW9yeSk7
CisgICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAg
ICAgICAvKiBtb2R1bGVfbmFtZSAqL180WzBdLAorICAgICAgICAgICAgICAgICAgLyogaXRlbV9u
YW1lICovXzRbMV0sCisgICAgICAgICAgICAgICAgICAvKiBpa2luZCAqL1NvdXJjZS4kYXQkYXQo
LyogTWVtb3J5SW1wb3J0ICovQmxvY2suX18oMiwgW181XSksIGF0JDEpCisgICAgICAgICAgICAg
ICAgXSwgYXQkMSk7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7
CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Cisg
ICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAg
dmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAg
ICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZ2xvYmFsLCBiaW5kX2dsb2JhbCk7CisgICAgICByZXR1
cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAgICAgICAgICAvKiBtb2R1
bGVfbmFtZSAqL180WzBdLAorICAgICAgICAgICAgICAgICAgLyogaXRlbV9uYW1lICovXzRbMV0s
CisgICAgICAgICAgICAgICAgICAvKiBpa2luZCAqL1NvdXJjZS4kYXQkYXQoLyogR2xvYmFsSW1w
b3J0ICovQmxvY2suX18oMywgW181XSksIGF0JDEpCisgICAgICAgICAgICAgICAgXSwgYXQkMSk7
CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIC8q
IHR1cGxlICovWworICAgICAgICAgICAgXzMsCisgICAgICAgICAgICBfNAorICAgICAgICAgIF07
CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlv
biAoYykgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAvKiBGdW5j
RXhwb3J0ICovMCwKKyAgICAgICAgICAgICAgQ3VycnkuXzIoXzMsIGMsIGZ1bmMpCisgICAgICAg
ICAgICBdOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAg
IHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAg
ICAgICAgICAvKiBUYWJsZUV4cG9ydCAqLzEsCisgICAgICAgICAgICAgIEN1cnJ5Ll8yKF8zLCBj
LCB0YWJsZSkKKyAgICAgICAgICAgIF07CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gLyog
dHVwbGUgKi9bCisgICAgICAgICAgICAgIC8qIE1lbW9yeUV4cG9ydCAqLzIsCisgICAgICAgICAg
ICAgIEN1cnJ5Ll8yKF8zLCBjLCBtZW1vcnkpCisgICAgICAgICAgICBdOworICAgIH07CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykg
eworICAgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgICAvKiBHbG9iYWxFeHBv
cnQgKi8zLAorICAgICAgICAgICAgICBDdXJyeS5fMihfMywgYywgZ2xvYmFsKQorICAgICAgICAg
ICAgXTsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAg
ICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2
YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIg
YXQkMSA9IGF0KC8qICgpICovMCk7CisgICAgdmFyIGF0NCA9IGF0aSg0KTsKKyAgICByZXR1cm4g
ZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF80LCBjKTsKKyAgICAg
IHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKKyAgICAgICAgICAgICAgICAgIC8q
IG5hbWUgKi9fMywKKyAgICAgICAgICAgICAgICAgIC8qIGVraW5kICovU291cmNlLiRhdCRhdCht
YXRjaFswXSwgYXQ0KSwKKyAgICAgICAgICAgICAgICAgIC8qIGl0ZW0gKi9tYXRjaFsxXQorICAg
ICAgICAgICAgICAgIF0sIGF0JDEpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKF8sIF8kMSwgXyQyKSB7CisgICAgICByZXR1cm4gLyogW10gKi8w
OworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHJl
dHVybiBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgfSwKKyAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOwor
ICAgIHJldHVybiBmdW5jdGlvbiAoaywgY291bnQsIF8pIHsKKyAgICAgIHJldHVybiAvKiA6OiAq
L1sKKyAgICAgICAgICAgICAgU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCisgICAgICAgICAg
ICAgICAgICAgIC8qIG5hbWUgKi9fMywKKyAgICAgICAgICAgICAgICAgICAgLyogZWtpbmQgKi9T
b3VyY2UuJGF0JGF0KGssIGF0JDEpLAorICAgICAgICAgICAgICAgICAgICAvKiBpdGVtICovU291
cmNlLiRhdCRhdChjb3VudCAtIDEgfCAwLCBhdCQxKQorICAgICAgICAgICAgICAgICAgXSwgYXQk
MSksCisgICAgICAgICAgICAgIC8qIFtdICovMAorICAgICAgICAgICAgXTsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMp
IHsKKyAgICAgIHJldHVybiBhbm9uX3R5cGUoYywgXzMpOworICAgIH07CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFy
IGMkMSA9IGM7CisgICAgICB2YXIgeCA9IF8zOworICAgICAgdmFyIHR5ID0gXzQ7CisgICAgICBp
ZiAoQ3VycnkuXzIoVmFyTWFwWy8qIG1lbSAqLzJdLCB4Wy8qIGl0ICovMV0sIGMkMVsvKiB0eXBl
cyAqLzBdWy8qIHRtYXAgKi8wXSkpIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBT
Y3JpcHQuU3ludGF4LAorICAgICAgICAgICAgICB4Wy8qIGF0ICovMF0sCisgICAgICAgICAgICAg
ICJkdXBsaWNhdGUgdHlwZSAiICsgeFsvKiBpdCAqLzFdCisgICAgICAgICAgICBdOworICAgICAg
fQorICAgICAgYyQxWy8qIHR5cGVzICovMF1bLyogdG1hcCAqLzBdID0gQ3VycnkuXzMoVmFyTWFw
Wy8qIGFkZCAqLzNdLCB4Wy8qIGl0ICovMV0sIEN1cnJ5Ll8xKExpYi5MaXN0MzJbLyogbGVuZ3Ro
ICovMF0sIGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0pLCBjJDFbLyogdHlwZXMgKi8w
XVsvKiB0bWFwICovMF0pOworICAgICAgYyQxWy8qIHR5cGVzICovMF1bLyogdGxpc3QgKi8xXSA9
IFBlcnZhc2l2ZXMuJGF0KGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0sIC8qIDo6ICov
WworICAgICAgICAgICAgdHksCisgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICBdKTsK
KyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7CisgICAgICByZXR1cm4gQ3Vy
cnkuXzIoXzMsIGMsIGZ1bmMpOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBuZXdyZWNvcmQgPSBBc3QuZW1wdHlfbW9k
dWxlLnNsaWNlKCk7CisgICAgICBuZXdyZWNvcmRbLyogdHlwZXMgKi8wXSA9IGNbLyogdHlwZXMg
Ki8wXVsvKiB0bGlzdCAqLzFdOworICAgICAgcmV0dXJuIG5ld3JlY29yZDsKKyAgICB9OworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
KyAgICAgIEN1cnJ5Ll8xKF8xLCBjKTsKKyAgICAgIHJldHVybiBDdXJyeS5fMShfMiwgYyk7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8x
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8yID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMSwgYyk7CisgICAgICB2YXIg
bSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIGlmIChtWy8qIGltcG9ydHMgKi84XSAhPT0gLyog
W10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsvKiBpbXBvcnRzICovOF0pWy8q
IGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwK
KyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBvcnQgYWZ0ZXIgZ2xvYmFsIGRl
ZmluaXRpb24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgdmFyIG5ld3JlY29yZCA9
IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBnbG9iYWxzICovMV0gPSAvKiA6OiAqL1sK
KyAgICAgICAgQ3VycnkuXzEobWF0Y2hbMF0sIC8qICgpICovMCksCisgICAgICAgIG1bLyogZ2xv
YmFscyAqLzFdCisgICAgICBdOworICAgICAgbmV3cmVjb3JkWy8qIGV4cG9ydHMgKi85XSA9IFBl
cnZhc2l2ZXMuJGF0KG1hdGNoWzFdLCBtWy8qIGV4cG9ydHMgKi85XSk7CisgICAgICByZXR1cm4g
bmV3cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwor
ICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAg
IHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIHQgPSBDdXJyeS5fMShfMSwgYyk7Cisg
ICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8x
KHQsIC8qICgpICovMCk7CisgICAgICBpZiAobVsvKiBpbXBvcnRzICovOF0gIT09IC8qIFtdICov
MCkgeworICAgICAgICB2YXIgYXQgPSBMaXN0LmhkKG1bLyogaW1wb3J0cyAqLzhdKVsvKiBhdCAq
LzBdOworICAgICAgICB0aHJvdyBbCisgICAgICAgICAgICAgIFNjcmlwdC5TeW50YXgsCisgICAg
ICAgICAgICAgIGF0LAorICAgICAgICAgICAgICAiaW1wb3J0IGFmdGVyIHRhYmxlIGRlZmluaXRp
b24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xp
Y2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiB0YWJsZXMgKi8yXSA9IC8qIDo6ICovWworICAgICAg
ICBtYXRjaFswXSwKKyAgICAgICAgbVsvKiB0YWJsZXMgKi8yXQorICAgICAgXTsKKyAgICAgIG5l
d3JlY29yZFsvKiBlbGVtcyAqLzZdID0gUGVydmFzaXZlcy4kYXQobWF0Y2hbMV0sIG1bLyogZWxl
bXMgKi82XSk7CisgICAgICBuZXdyZWNvcmRbLyogZXhwb3J0cyAqLzldID0gUGVydmFzaXZlcy4k
YXQobWF0Y2hbMl0sIG1bLyogZXhwb3J0cyAqLzldKTsKKyAgICAgIHJldHVybiBuZXdyZWNvcmQ7
CisgICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFy
IF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgdmFyIF8y
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0dXJuIGZ1
bmN0aW9uIChjKSB7CisgICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMSwgYyk7CisgICAgICB2
YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIGlmIChtWy8qIGltcG9ydHMgKi84XSAhPT0g
LyogW10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsvKiBpbXBvcnRzICovOF0p
Wy8qIGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgU2NyaXB0LlN5bnRh
eCwKKyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBvcnQgYWZ0ZXIgbWVtb3J5
IGRlZmluaXRpb24iCisgICAgICAgICAgICBdOworICAgICAgfQorICAgICAgdmFyIG5ld3JlY29y
ZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBtZW1vcmllcyAqLzNdID0gLyogOjog
Ki9bCisgICAgICAgIG1hdGNoWzBdLAorICAgICAgICBtWy8qIG1lbW9yaWVzICovM10KKyAgICAg
IF07CisgICAgICBuZXdyZWNvcmRbLyogZGF0YSAqLzddID0gUGVydmFzaXZlcy4kYXQobWF0Y2hb
MV0sIG1bLyogZGF0YSAqLzddKTsKKyAgICAgIG5ld3JlY29yZFsvKiBleHBvcnRzICovOV0gPSBQ
ZXJ2YXNpdmVzLiRhdChtYXRjaFsyXSwgbVsvKiBleHBvcnRzICovOV0pOworICAgICAgcmV0dXJu
IG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsK
KyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAg
ICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF8xLCBj
KTsKKyAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMpOworICAgICAgdmFyIGZ1bmMgPSBDdXJy
eS5fMShtYXRjaFswXSwgLyogKCkgKi8wKTsKKyAgICAgIGlmIChtWy8qIGltcG9ydHMgKi84XSAh
PT0gLyogW10gKi8wKSB7CisgICAgICAgIHZhciBhdCA9IExpc3QuaGQobVsvKiBpbXBvcnRzICov
OF0pWy8qIGF0ICovMF07CisgICAgICAgIHRocm93IFsKKyAgICAgICAgICAgICAgU2NyaXB0LlN5
bnRheCwKKyAgICAgICAgICAgICAgYXQsCisgICAgICAgICAgICAgICJpbXBvcnQgYWZ0ZXIgZnVu
Y3Rpb24gZGVmaW5pdGlvbiIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICB2YXIgbmV3
cmVjb3JkID0gbS5zbGljZSgpOworICAgICAgbmV3cmVjb3JkWy8qIGZ1bmNzICovNF0gPSAvKiA6
OiAqL1sKKyAgICAgICAgZnVuYywKKyAgICAgICAgbVsvKiBmdW5jcyAqLzRdCisgICAgICBdOwor
ICAgICAgbmV3cmVjb3JkWy8qIGV4cG9ydHMgKi85XSA9IFBlcnZhc2l2ZXMuJGF0KG1hdGNoWzFd
LCBtWy8qIGV4cG9ydHMgKi85XSk7CisgICAgICByZXR1cm4gbmV3cmVjb3JkOworICAgIH07Cisg
IH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykg
eworICAgICAgdmFyIG0gPSBDdXJyeS5fMShfMiwgYyk7CisgICAgICB2YXIgbmV3cmVjb3JkID0g
bS5zbGljZSgpOworICAgICAgbmV3cmVjb3JkWy8qIGVsZW1zICovNl0gPSAvKiA6OiAqL1sKKyAg
ICAgICAgQ3VycnkuXzEoXzEsIGMpLAorICAgICAgICBtWy8qIGVsZW1zICovNl0KKyAgICAgIF07
CisgICAgICByZXR1cm4gbmV3cmVjb3JkOworICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDApOworICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIG0gPSBDdXJy
eS5fMShfMiwgYyk7CisgICAgICB2YXIgbmV3cmVjb3JkID0gbS5zbGljZSgpOworICAgICAgbmV3
cmVjb3JkWy8qIGRhdGEgKi83XSA9IC8qIDo6ICovWworICAgICAgICBDdXJyeS5fMShfMSwgYyks
CisgICAgICAgIG1bLyogZGF0YSAqLzddCisgICAgICBdOworICAgICAgcmV0dXJuIG5ld3JlY29y
ZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICB2YXIg
XzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4g
ZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMpOworICAgICAgdmFy
IHggPSBDdXJyeS5fMShfMSwgYyk7CisgICAgICB2YXIgbWF0Y2ggPSBtWy8qIHN0YXJ0ICovNV07
CisgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgdGhyb3cgWworICAgICAgICAgICAgICBTY3Jp
cHQuU3ludGF4LAorICAgICAgICAgICAgICB4Wy8qIGF0ICovMF0sCisgICAgICAgICAgICAgICJt
dWx0aXBsZSBzdGFydCBzZWN0aW9ucyIKKyAgICAgICAgICAgIF07CisgICAgICB9CisgICAgICBl
bHNlIHsKKyAgICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgICAgbmV3cmVj
b3JkWy8qIHN0YXJ0ICovNV0gPSAvKiBTb21lICovW3hdOworICAgICAgICByZXR1cm4gbmV3cmVj
b3JkOworICAgICAgfQorICAgIH07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEp
OworICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwor
ICAgIHJldHVybiBmdW5jdGlvbiAoYykgeworICAgICAgdmFyIGkgPSBDdXJyeS5fMShfMSwgYyk7
CisgICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKKyAgICAgIHZhciBuZXdyZWNvcmQgPSBt
LnNsaWNlKCk7CisgICAgICBuZXdyZWNvcmRbLyogaW1wb3J0cyAqLzhdID0gLyogOjogKi9bCisg
ICAgICAgIGksCisgICAgICAgIG1bLyogaW1wb3J0cyAqLzhdCisgICAgICBdOworICAgICAgcmV0
dXJuIG5ld3JlY29yZDsKKyAgICB9OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKKyAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAx
KTsKKyAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsK
KyAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKKyAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMp
OworICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKKyAgICAgIG5ld3JlY29yZFsvKiBl
eHBvcnRzICovOV0gPSAvKiA6OiAqL1sKKyAgICAgICAgQ3VycnkuXzEoXzEsIGMpLAorICAgICAg
ICBtWy8qIGV4cG9ydHMgKi85XQorICAgICAgXTsKKyAgICAgIHJldHVybiBuZXdyZWNvcmQ7Cisg
ICAgfTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8z
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIC8qIHR1
cGxlICovWworICAgICAgICAgICAgXzMsCisgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KC8qIFRl
eHR1YWwgKi9CbG9jay5fXygwLCBbU291cmNlLiRhdCRhdChDdXJyeS5fMShfNCwgZW1wdHlfY29u
dGV4dCgvKiAoKSAqLzApKSwgYXQoLyogKCkgKi8wKSldKSwgYXQoLyogKCkgKi8wKSkKKyAgICAg
ICAgICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKKyAgICB2YXIgXzQg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzUgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gLyogdHVw
bGUgKi9bCisgICAgICAgICAgICBfMywKKyAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogRW5j
b2RlZCAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgICAgImJpbmFyeSIsCisgICAg
ICAgICAgICAgICAgICAgIF80ICsgXzUKKyAgICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAq
LzApKQorICAgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gLyog
Tm9uZSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZh
ciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVy
biAvKiBTb21lICovW1NvdXJjZS4kYXQkYXQoXzEsIGF0KC8qICgpICovMCkpXTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogSW52b2tl
ICovQmxvY2suX18oMCwgWworICAgICAgICAgICAgICAgICAgXzMsCisgICAgICAgICAgICAgICAg
ICBfNCwKKyAgICAgICAgICAgICAgICAgIF81CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgp
ICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291
cmNlLiRhdCRhdCgvKiBHZXQgKi9CbG9jay5fXygxLCBbCisgICAgICAgICAgICAgICAgICBfMywK
KyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkp
OworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRh
dCRhdCgvKiBBc3NlcnRNYWxmb3JtZWQgKi9CbG9jay5fXygwLCBbCisgICAgICAgICAgICAgICAg
ICBfM1sxXSwKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8q
ICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIg
XzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4g
U291cmNlLiRhdCRhdCgvKiBBc3NlcnRJbnZhbGlkICovQmxvY2suX18oMSwgWworICAgICAgICAg
ICAgICAgICAgXzNbMV0sCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0p
LCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Cisg
ICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgICAg
cmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0U29mdEludmFsaWQgKi9CbG9jay5fXygyLCBb
CisgICAgICAgICAgICAgICAgICBfM1sxXSwKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAg
ICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBBc3NlcnRVbmxpbmthYmxlICovQmxv
Y2suX18oMywgWworICAgICAgICAgICAgICAgICAgXzNbMV0sCisgICAgICAgICAgICAgICAgICBf
NAorICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMik7CisgICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMSk7CisgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0VW5pbnN0
YW50aWFibGUgKi9CbG9jay5fXyg0LCBbCisgICAgICAgICAgICAgICAgICBfM1sxXSwKKyAgICAg
ICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9
LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgv
KiBBc3NlcnRSZXR1cm4gKi9CbG9jay5fXyg1LCBbCisgICAgICAgICAgICAgICAgICBfMywKKyAg
ICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOwor
ICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRh
dCRhdCgvKiBBc3NlcnRSZXR1cm5OYU4gKi9CbG9jay5fXyg2LCBbXzNdKSwgYXQoLyogKCkgKi8w
KSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2Uu
JGF0JGF0KC8qIEFzc2VydFRyYXAgKi9CbG9jay5fXyg3LCBbCisgICAgICAgICAgICAgICAgICBf
MywKKyAgICAgICAgICAgICAgICAgIF80CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICov
MCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNl
LiRhdCRhdCgvKiBBc3NlcnRFeGhhdXN0aW9uICovQmxvY2suX18oOCwgWworICAgICAgICAgICAg
ICAgICAgXzMsCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0pLCBhdCgv
KiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAg
dmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0
dXJuIFNvdXJjZS4kYXQkYXQoLyogQWN0aW9uICovQmxvY2suX18oMiwgW18xXSksIGF0KC8qICgp
ICovMCkpOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIg
XzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKKyAgICByZXR1cm4g
U291cmNlLiRhdCRhdCgvKiBBc3NlcnRpb24gKi9CbG9jay5fXygzLCBbXzFdKSwgYXQoLyogKCkg
Ki8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBf
MSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiBT
b3VyY2UuJGF0JGF0KC8qIE1vZHVsZSAqL0Jsb2NrLl9fKDAsIFsKKyAgICAgICAgICAgICAgICAg
IF8xWzBdLAorICAgICAgICAgICAgICAgICAgXzFbMV0KKyAgICAgICAgICAgICAgICBdKSwgYXQo
LyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAg
IHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZh
ciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVy
biBTb3VyY2UuJGF0JGF0KC8qIFJlZ2lzdGVyICovQmxvY2suX18oMSwgWworICAgICAgICAgICAg
ICAgICAgXzMsCisgICAgICAgICAgICAgICAgICBfNAorICAgICAgICAgICAgICAgIF0pLCBhdCgv
KiAoKSAqLzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAg
dmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7CisgICAgcmV0
dXJuIFNvdXJjZS4kYXQkYXQoLyogTWV0YSAqL0Jsb2NrLl9fKDQsIFtfMV0pLCBhdCgvKiAoKSAq
LzApKTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAvKiBbXSAqLzA7CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHZhciBfMiA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAg
ICAgICAgIF8xLAorICAgICAgICAgICAgXzIKKyAgICAgICAgICBdOworICB9LAorICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBTY3JpcHQgKi9C
bG9jay5fXygyLCBbCisgICAgICAgICAgICAgICAgICBfMywKKyAgICAgICAgICAgICAgICAgIF80
CisgICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOworICB9LAorICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAyKTsKKyAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKTsKKyAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBJbnB1dCAqL0Jsb2Nr
Ll9fKDAsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgICAgICAgXzQKKyAg
ICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDIpOworICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIE91dHB1dCAqL0Jsb2NrLl9f
KDEsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgICAgICAgLyogU29tZSAq
L1tfNF0KKyAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0sCisgIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIE91dHB1
dCAqL0Jsb2NrLl9fKDEsIFsKKyAgICAgICAgICAgICAgICAgIF8zLAorICAgICAgICAgICAgICAg
ICAgLyogTm9uZSAqLzAKKyAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7CisgIH0s
CisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMiA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOworICAgIHZhciBfMyA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KGxp
dGVyYWwoXzIsIF8zKVsxXSwgYXRpKDMpKTsKKyAgfSwKKyAgZnVuY3Rpb24gKCkgeworICAgIHJl
dHVybiAvKiBbXSAqLzA7CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewor
ICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOworICAg
IHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJl
dHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIF8xLAorICAgICAgICAgICAgXzIKKyAgICAgICAg
ICBdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKKyAgICByZXR1cm4g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7CisgIH0sCisgIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgeworICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApOworICAgIHJldHVybiAvKiA6OiAqL1sKKyAgICAgICAgICAgIF8x
LAorICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgXTsKKyAgfSwKKyAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgcmV0dXJuIFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDEpWzFdOworICB9LAorICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgUGFyc2luZy5ZWWV4aXQsCisgICAgICAgICAgUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCkKKyAgICAgICAgXTsKKyAgfSwKKyAg
ZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7CisgICAgdGhyb3cgWworICAgICAgICAgIFBh
cnNpbmcuWVlleGl0LAorICAgICAgICAgIFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApCisgICAgICAgIF07CisgIH0sCisgIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
eworICAgIHRocm93IFsKKyAgICAgICAgICBQYXJzaW5nLllZZXhpdCwKKyAgICAgICAgICBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKQorICAgICAgICBdOworICB9CitdOwor
Cit2YXIgeXl0YWJsZXMgPSAvKiByZWNvcmQgKi9bCisgIC8qIGFjdGlvbnMgKi95eWFjdCwKKyAg
LyogdHJhbnNsX2NvbnN0ICoveXl0cmFuc2xfY29uc3QsCisgIC8qIHRyYW5zbF9ibG9jayAqL3l5
dHJhbnNsX2Jsb2NrLAorICAvKiBsaHMgKi8nXHhmZlx4ZmZceDA0XDBceDA0XDBceDA1XDBceDA1
XDBceDA2XDBceDA3XDBceDA3XDBcYlwwXHRcMFx0XDBcdFwwXHRcMFx4MGJcMFxyXDBcZlwwXGZc
MFx4MGVcMFx4MTBcMFx4MTBcMFx4MTBcMFx4MGZcMFx4MGZcMFx4MTFcMFx4MTFcMFx4MTJcMFx4
MTJcMFxuXDBceDEzXDBceDEzXDBceDE0XDBceDE0XDBceDE1XDBceDE1XDBceDE2XDBceDE2XDBc
eDE3XDBceDE3XDBceDE3XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4
XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBc
eDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE4XDBceDE5
XDBceDE5XDBceDE5XDBceDE5XDBceDFiXDBceDFhXDBceDFkXDBceDFkXDBceDFkXDBceDFkXDBc
eDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFjXDBceDFjXDBceDFlXDBceDFl
XDAgXDAhXDAhXDAhXDAhXDAiXDAiXDAiXDAjXDAjXDAjXDAjXDAlXDAlXDAmXDAmXDBcJ1wwXCdc
MClcMClcMCpcMCpcMCpcMCtcMCtcMCxcMCxcMCxcMCxcMCxcMC1cMC1cMC1cMC1cMC1cMC1cMC5c
MC9cMC9cMC9cMC9ceDAwMFwwKFwwKFwwJFx4MDAxXHgwMDFceDAwMlx4MDAzXHgwMDNceDAwM1x4
MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwNFx4MDA0XHgwMDVceDAw
NVx4MDA2XHgwMDZceDAwOFx4MDA4XHgwMDhceDAwOFx4MDA4XHgwMDhceDAwOFx4MDA4XHgwMDhc
eDAwOVx4MDA5XHgwMDlceDAwOVx4MDA5XDA7XDA7XDA6XDA6XDA6XDA6XDA8XHgwMDdceDAwN1ww
XHgwMVwwXHgwMlwwXHgwM1wwXDBcMFwwXDBcMFwwJywKKyAgLyogbGVuICovIlx4MDJcMFwwXDBc
eDAyXDBcMFwwXHgwMlwwXHgwMVwwXHgwMVwwXHgwNFwwXHgwNFwwXDBcMFx4MDVcMFx4MDVcMFx4
MDZcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDRcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFc
MFx4MDFcMFwwXDBceDAyXDBcMFwwXHgwMVwwXHgwMVwwXDBcMFx4MDFcMFwwXDBceDAxXDBcMFww
XHgwMVwwXDBcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDJc
MFx4MDNcMFx4MDFcMFx4MDJcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDJcMFx4MDJcMFx4
MDJcMFx4MDJcMFx4MDNcMFx4MDNcMFx4MDFcMFx4MDFcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDFc
MFx4MDFcMFx4MDFcMFx4MDVcMFx4MDVcMFx4MDVcMFxiXDBceDAyXDBceDAzXDBceDAyXDBceDAz
XDBceDAzXDBceDA0XDBcYlwwXHgwNFwwXHRcMFx4MDVcMFx4MDNcMFx4MDJcMFwwXDBceDAyXDBc
MFwwXHgwMlwwXHgwMVwwXHgwMVwwXHgwNVwwXHgwNVwwXHgwNlwwXHgwMVwwXHgwNVwwXHgwNlww
XHgwN1wwXHgwNlwwXHgwNlwwXHgwNVwwXHgwNFwwXHgwMVwwXHgwNlwwXHgwNVwwXHgwNlwwXG5c
MFx4MDZcMFx4MDVcMFx4MDZcMFx0XDBcYlwwXHgwN1wwXHgwNlwwXHgwNVwwXHgwNVwwXHgwNVww
XHgwNVwwXHgwNVwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNVwwXHgw
NFwwXHgwNFwwXHgwNFwwXHgwNFwwXHgwNVwwXDBcMFx4MDFcMFx4MDRcMFx4MDRcMFx4MDVcMFx4
MDRcMFwwXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDBc
eDAyXDBceDAyXDBceDA1XDBceDA2XDBcMFwwXHgwMVwwXHgwNlwwXHgwNVwwXHgwNVwwXHgwNVww
XHgwNVwwXHgwNVwwXHgwNVwwXHgwNVwwXHgwNFwwXHgwNVwwXHgwNVwwXHgwMVwwXHgwMVwwXHgw
MVwwXHgwNVwwXHgwMVwwXDBcMFx4MDJcMFx4MDVcMFx4MDVcMFx4MDVcMFx4MDRcMFx4MDRcMFww
XDBceDAyXDBceDAyXDBceDAxXDBceDAyXDBceDAyXDBceDAyXDBceDAyXDAiLAorICAvKiBkZWZy
ZWQgKi8iXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhZlwwXHhhMFwwXHg5ZVwwXHg5ZlwwXDBc
MFx4YTJcMFwwXDBceGIwXDBceGFkXDBcMFwwXHhiMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YTRcMFx4YWNcMFx4YWVc
MFx4OTJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXHg5YlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGE4XDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODlcMFx4OGFcMFx4ODdcMFx4OGJcMFx4ODhcMFx4
ODZcMFx4OGRcMFx4OGVcMFx4ODVcMFx4OGNcMFx4OGZcMFx4YTVcMFx4YTFcMFwwXDBceDk0XDBc
eDk1XDBceDk2XDBceDk3XDBceDk4XDBcMFwwXHg5YVwwXHhhYlwwXHg5OVwwXHg5Y1wwXHg5ZFww
XHhhNlwwXHhhN1wwXHgwMlwwXHg5MFwwXHgxYlwwXHgxYVwwXDBcMFx4MTVcMFx4MTZcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwYVwwXDBcMFwwXDBcMFwwXHgwMVwwXDBcMFwwXDBc
eDkzXDBceDEyXDBceDEzXDBceDE0XDBcMFwwXDBcMChcMC9cMFwwXDBcMFx4MDAwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDAsXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMD1cMD5c
MDxcMD9cMCdceDAwOFx4MDA5XDA7XDBcMFwwXDBcMCRcMCVcMCZcMFlcMFwwXDBVXDBcMFwwXDBc
MFx4ODNcMFwwXDBceDgxXDBcMFwwXHgwNlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDdmXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
eDAxXDBcMFwwXDBcMFwwXDBcMFwwXHhhOVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgxZFww
XDBcMFwwXDBcMFwwKVwwKlwwXDBcMC1cMC5ceDAwMVx4MDAyXHgwMDNceDAwNFx4MDA1XDAhXDBc
MFwwXDBcMDpcMFwwXDBcMFwwXDBcMFFcMF9cMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXHg4MlwwXDBcMFRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwNVwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwRlwwRVwwXDBcMFx4MThcMGNcMFx4MDFcMFwwXDBceDBlXDBc
MFwwXDBcMFwwXDBnXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDB9XDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwK1wwI1x4MDA2XHgwMDdcMF1cMFww
XDBeXDBcMFwwXDBcMHRcMHNcMFxiXDBcMFwwbFwwXDBcMHdcMFx4MTBcMFwwXDBkXDBcclwwdVww
R1wwXDBcMEhcMGBcMFNcMGJcMFwwXDBceDAxXDBoXDB2XDBmXDBcMFwwXDBcMFwwXDBcMFwwclww
XDBcMFwwXDBcMFwwXDBcMFx4MTFcMFx4MDRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODBc
MERcMFwwXDBcMFwwXDBcMFwwXDBcXFwwXDBcMFwwXDBcMFwwXHgwN1wwa1wwXDBcMFwwXDBcMFww
SVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwweVwwfFwwelwwe1wwV1wwXDBcMFwwXDBWXDBaXDBc
MFwweFwwXHgxZlwwQFwwQlwwXDBcMEFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBqXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBYXDBbXDBcMFwwXHgwYlwwXDBcMFxuXDBcMFwwXDBcMFww
XDBOXDBpXDBuXDBtXDBxXDBvXDBwXDBcMFwwXGZcMGVcMFwwXDBcMFwwQ1wwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwSlwwXDBcMExcMCIsCisgIC8qIGRnb3RvICovJ1x4MDRcMFx4MDZcMFxyXDBc
eDEwXDBWXHgwMDFceDAxXGZceDAxXHhjNFwwXHg4NVwwXHhmZlwwXHg3ZlwwXHJceDAxXHgwZVx4
MDFceDFkXHgwMVx4YjRcMFx4ZDJcMFx4OTZcMFx4ZDNcMFx4ODBcMFx4ZTVcMFx4ODhceDAxXHhm
M1x4MDA3XHgwMVx4YjVcMFx4YjZcMFx4YjdcMFx4YjhceDAwMlx4MDFceGI5XDBceGQwXDBceDE1
XHgwMXVceDAxXHgwNlx4MDFceGJhXDBceGJiXHgwMDlcMFx4YmNcMFx4OGNcMDpcMDtcMFx4Yzlc
MDxcMD1cMD5cMCJceDAxP1wwXHhiZFwwXHhkY1wwQFwwQVwwQlwwQ1wwXHgwN1wwJVwwXGJcME1c
MFx0XDBcblwwXHgwYlwwXGZcME5cMCcsCisgIC8qIHNpbmRleCAqLydceGQ0XDBceDE3XHhmZlx4
MTdceGZmLlx4ZmZcMFwwYVx4ZmZcMFwwXDBcMFwwXDBcMFwwXHgxN1x4ZmZcMFwwQFwwXDBcMFww
XDAiXHhmZlwwXDBsXDBpXHhmZmlceGZmd1x4ZmZpXHhmZmlceGZmLlx4ZmYuXHhmZi5ceGZmLlx4
ZmZwXHhmZnBceGZmflx4ZmZwXHhmZmlceGZmaVx4ZmZcMFwwXDBcMFwwXDBcMFwwXHhhYlx4ZmZc
eDE3XHhmZmlceGZmXHg5Mlx4ZmZceGFjXHhmZlx4YzlceGZmXHhkOVx4ZmZceGY2XHhmZlx4Zjlc
eGZmXGZceGZmXHhhMVx4ZmZceGFmXHhmZlx4ZmNceGZlXHhmYlx4ZmZceGZlXHhmZlx4MTVcMFx4
MWNceDAwMVx4ZmZcMFwwXHgxN1wwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFww
XHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHhiMVx4ZmZceGI2XHhmZlx4MTFcMFx4YTFceGZmLVx4
MDA3XDA9XDA/XDBEXDAvXDBKXDBceGExXHhmZlwwXDBLXDBTXDBkXDBlXDBuXDBcMFwwW1x4ZmZS
XDBceGI3XHhmZlx4YzZceGZmUlwwUlwwXHg4Zlx4ZmZSXDBceDhmXHhmZnZcMHdcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDB5XDBcMFwwXDBcMFww
XDBcMFwwXDBcMFx4MGJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXHgxNlx4MDJcMFwwXDBcMHpcMFZcMFx4OGFcMFx4OTVcMFx4ZTlceGZmXHg5N1wwV1x4MDNc
eDk4XDBcMFwwXHhiN1x4ZmZceDk5XDBceDk4XDBcMFwwXHg5YlwwXHhhMVwwXDBcMFwwXDBcMFww
XDBcMFx4YmJcMFx4ZDRceDAyXDBcMFwwXDBSXDBSXDBcMFwwUlwwXHhiN1x4ZmZceGI3XHhmZlx4
YjdceGZmXHhiN1x4ZmZceGI3XHhmZlwwXDBceGI3XHhmZlx4YjdceGZmXHhiN1x4ZmZceGI3XHhm
Zlx4YjdceGZmXHhhNVwwXHhhNVwwXHgwYlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDA8XHgwMmJceDAyXDBcMFwwXDBcMFwwXDBcMFx4YmRcMFwwXDBceDg4XHgwMlx4YmZcMFwwXDBc
eGM3XDBcMFwwXHhkN1wwXDBcMFxyXHhmZmJceDAyXHhlZFx4ZmZceGVkXHhmZlx4Y2RceGZmXDBc
MHVceGZmXHhlYVwwUlwwUlwwUlwwYlx4MDJceGUzXDBceGU0XDBceGI3XHhmZlx4YjdceGZmXHhl
Y1wwXHg5OFx4ZmZceGZlXDBceGVhXDBceGVhXDBcMFwwXHg3Zlx4ZmZcYlx4MDFceGZlXHhmZVx0
XHgwMVwwXDBceGI3XHhmZlx4MTJcMFx4ZTdcMFx4MTJcMFx4MGVceDAxXHgxMFx4MDFcMFwwXHhl
N1wwXHhlN1wwXHhlN1wwXDBcMFwwXDBceGI3XHhmZlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXHhmYVwwXHhmYVwwXDBceDAwMVx4MDMjXHgwMVx4ZWZceDAzXDBcMFwwXDBceDBiXHgw
MzxceDAyLVx4MDFceGU3XHhmZi5ceDAxL1x4MDFceDk5XHhmZjBceDAxXDBcMDxceDAxXDBcMElc
eDAxVVx4MDFiXHgwMlRceDAxXlx4MDFcMFwwV1x4MDFvXHgwMVtceDAxeVx4MDFceGU3XDBceGU3
XDBceGU3XDB6XHgwMVx4ZTNcMFwwXDBcMFwwe1x4MDFcMFwwXDBcMFwwXDBQXHgwMVwwXDBceDgy
XHgwMVx4ODRceDAxXHhhOVx4ZmZcMFwwZFx4ZmZceDg1XHgwMVx4YjdceGZmXHhiN1x4ZmZceGI3
XHhmZlx4YjdceGZmXDBcMFx4OTVceDAxXHhlN1wwXHg5Zlx4MDFiXHgwMVx4YTBceDAxXHhhMVx4
MDFceGE2XHgwMVx4YWFceDAxXHhhYlx4MDFiXHgwMlx4YjdceDAxXHhlNlx4ZmZceGMxXHgwMVww
XDBcMFwwXDBcMFwwXDBcMFwwXHhjNlx4MDFcMFwwXHgxMlwwXHhlN1wwXDBcMFwwXDBcMFwwXHhj
N1x4MDFcMFwwXHhjOFx4MDFcMFwwXDBcMFx4ODBceDAxXDBcMFwwXDBcMFwwXDBcMFx4Y2ZceDAx
XDBcMFwwXDBcMFwwXDBcMFx4YWRceGZmXDBcMFwwXDBcMFwwXDBcMFJcMFJcMFJcMFJcMFwwXDBc
eGQwXHgwMVx4ZDFceDAxXHhlMVx4MDFceGViXHgwMVwwXDBcMFwwPFx4MDJceGVjXHgwMVx4YWVc
eDAyXHhhZVx4MDJceGVkXHgwMVx4ZWVceDAxXDBcMFwwXDBSXDBSXDBSXDBSXDBcMFwwXHhmNlx4
MDFceGY0XHgwMVx4ZjdceDAxXDBcMFwwXDBceGI3XHhmZn1ceDAzXGJceDAyXDBcMFx4MTFceDAy
XHhiYlx4ZmZceGJmXDBceGVkXHhmZlx4ZWFcMFx4ZWFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwPFx4
MDJceGEzXHgwM1wwXDBcMFwwXHhhZVx4MDJcMFwwXDBcMFwwXDBcMFwwYlx4MDJcMFwwXHhjN1ww
XHgxMlx4MDJceGM3XDBceDEzXHgwMmJceDAyXHhjOVx4MDNceGUzXDBcMFwwXHgxNFx4MDJceDFh
XHgwMlx4MWNceDAyXHgxZFx4MDItXHgwMjdceDAyXDBcMFwwXHgwMDRceDAyXDBcMFx4YzdcMFww
XHgwMDlceDAyOlx4MDJiXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBSXDBcMFwwXDBc
MFx4MTdceDAyQFx4MDJcMFx4MDA1XHgwMkNceDAyYlx4MDJMXHgwMl1ceDAyYlx4MDJcMFwwXlx4
MDJcMFwwJywKKyAgLyogcmluZGV4ICovIlwwXDBNXHgwM1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXHgwMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcME9ceGZmXHgxNFwwXDBc
MHdcMHdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwd1wwXHhjMlx4ZmZcMFwwXDBc
MFwwXDBcMFwwX1x4MDJgXHgwMmZceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGhceDAy
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwX1x4MDJfXHgwMl9ceDAyX1x4MDJf
XHgwMl9ceDAyX1x4MDJfXHgwMl9ceDAyX1x4MDJcMFwwXDBcMFwwXDBoXHgwMlwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBoXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwflx4
MDFcMFwwXDBcMFx4ZjJceGZmaFx4ZmZcMFwwKVx4ZmZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4
MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg4M1x4ZmZcMFwwXDBcMFwwXDB5XHgwMmtc
eDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwTVwwXHgx
NlwwXDBcME1cMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5
YVwwXHg5YVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4MDJ0XHhmZlww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMGlceDAyXHg4M1x4MDJcMFwwXHg4M1x4MDJcMFwwXDBcMFww
XDBcMFwwaVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBzXDBceGYzXHhmZnNcMGlceDAyXHg4
NFx4MDJcMFwweVx4MDJceGMwXDBcMFwwXDBcMFx4OGVceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXHg4Nlx4MDJceDg2XHgwMlx4ODZceDAyXDBcMFwwXDBcMFwwXHhhNFx4
MDFYXHgwMVx4YTRceDAxXDBcMFwwXDBceGMwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFx4ZTZcMFx4ZTZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBpXHgwMlwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4MDJcMFwwXHhmN1x4ZmZcMFww
XDBcMFwwXDBcMFwwXDBcMFx4Y2FceDAxXHg4OVx4MDJceGNhXHgwMVwwXDBceDg0XHgwMlwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXGZceDAxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMHRceGZm
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODZceDAyXHg4Nlx4MDJc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMDxcMFx4ZjJceGZmXHg5NVx4MDJceDk1
XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBpXHgwMlwwXDBpXHgwMmlceDAyXDBcMFww
XDBcMFwwXDBceDAwMlx4MDEyXHgwMVx4ZjBceDAxMlx4MDFcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDB5XHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXHg4M1x4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMGlceDAyXDBcMFwwXDBcMFwwaVx4MDJcMFwwXDBcMFwwXDBcMFwwXHg4YVx4MDJc
MFwwXHg4M1x4MDJcMFwwXHg4M1x4MDJcMFwwaVx4MDJcMFwwXHhhZlx4ZmZcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODNceDAyXDBcMFwwXDBcMFwwaVx4MDJc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDAyXHgwMVwwXDBcMFwwXHg4Zlx4MDJcMFwwXDBc
MFwwXDBceDlmXHgwMmlceDAyXDBcMFwwXDBpXHgwMlwwXDBcMFwwXDBcMCIsCisgIC8qIGdpbmRl
eCAqLyJcMFwwXDBcMFwwXDBcMFwweFx4ZmZEXHhmZlx4YTVceDAyUVx4ZmYuXHgwM0ZceGZmXHhh
N1x4ZmZHXHhmZkhceGZmM1x4ZmZMXHhmZlx4YmNceGZmXG5ceDAzUFx4ZmZceGIyXHhmZlx4ODBc
eGZmXHhiZFx4ZmVcZlx4MDNceGM0XHgwMlwwXDBceDgyXHhmZlwwXDBceGE2XHhmZlZceGZmTlx4
ZmZcMFwwXHhhOFx4MDJcMFwwQlx4ZmZSXHhmZlx4Y2FceGZlXDBcMFx4Y2FceGZmXHhiNVx4ZmZc
MFwwXDBceDAwMlx4MDNcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ZTNceGZmXDBcMFwwXDBcMFwwXDBc
MFx4YWNcMHRcMFx4OTZcMFx4YmVcMFx4ZjBceGZmXDBcMFx4YmNceDAzXDBcMCFcMFwwXDAiLAor
ICAvKiB0YWJsZXNpemUgKi8xMzM1LAorICAvKiB0YWJsZSAqLydceDg2XDBceGEzXDBceDhiXDBc
eGY5XDBceDhiXDBceDAyXHgwMVx4ZjdcMFx4ZDlcMFx4ZmNcMFwwXHgwMVx4MWVceDAxXHhjZlww
XHg4N1wwXHg4OFwwXHhmZFwwXHg4ZFwwXHgxM1x4MDFceDBmXHgwMVx4MDVceDAxXHg4ZlwwXHg4
M1wwXHgwNFx4MDFcYlx4MDFcdFx4MDFceDhhXDBceGNmXDBceDhlXDBceGU2XDBceDA1XHgwMVx4
ZTdcMFx4MWNceDAxXHgxY1x4MDFceDA1XDBceDE3XHgwMVx4MThceDAxKlx4MDEsXHgwMS1ceDAx
XHg4OVx4MDFceDhhXHgwMVx4OGJceDAxI1x4MDFceDE5XDAhXDBceDgzXHgwMVx4ODRceDAxXHgx
MlwwJFx4MDFceDhiXDAlXHgwMVx4MTlcMCZceDAxXHg4YlwwVFwwblwwXHgwZlwwXHgxNVwwXHgx
Nlx4MDA1XHgwMVVceDAwM1x4MDE0XHgwMXZcMFx4ZDFcMCJcMFx4ZTRcMFx4ZTRcMFx4ZDhcMFx4
ZTRcMFx4ZTJcMFx4ZTNcMERcMFx4MTVcMFx4MTZcMENceDAxXHgxMFx4MDFceDExXHgwMVx4MTJc
eDAxOlx4MDFceDliXHgwMVx4MWZceDAxXHhjNVwwXHhjOFwwXHg5MVwwXHgxMlwwS1x4MDFceDA1
XHgwMVx4ZDVcMFx4OTFcMFx4OTFcMFx4ZThcMFx4ZTlcMFx4ZWFcMFx4ZWJcMFx4ZWNcMHxcMFx4
ZWRcMFx4ZWVcMFx4ZWZcMFx4ZjBcMFx4ZjFcMH1cMEpceDAxXHhhZlx4MDFMXHgwMVx4MTlcMFx4
YzZcMFx4Y2FcMCNcMF9ceDAxJFwwXHgxOVwwXHhkN1wwXHgxOVwwXHhlNFwwXHhlNFwwXHhlNFww
XHgxNFx4MDFcblx4MDFceDExXDBceGNmXDAuXDBceGNmXDBcJ1wwXHgwYlx4MDFceGNmXDBQXDBn
XHgwMW1ceDAxb1x4MDFQXDB8XDB+XDBQXDArXHgwMTFcMC5ceDAxIFx4MDF+XDAqXDArXDAsXDAt
XDBVXHgwMVx4ODFceDAwMlwwUFx4MDFceDEyXDBceDgyXDBWXHgwMUZcMFdceDAxXHg4OVwwWFx4
MDEoXHgwMVx4MTNcMFx4MTRcMFx4MTVcMFx4MTZcMFx4MTdcMFx4MThcMFx4MTlcMFx4MWFcMFx4
MWJcMFx4MWNcMFx4MWRcMFx4MWVcMFx4MWZcMCBcMCZcMExcMChcMClcMHxcMFx4OTlceDAxN1ww
R1wwfFwwXHg4MFx4MDFUXHgwMThceDAwNVx4MDA2XDB2XHgwMVx4ODFcME9cMFx4MTRceDAxa1ww
XHg4MlwwRVwwXHg5NVx4MDF8XDBsXDBceDk4XHgwMVx4OGZceDAxXHgxY1x4MDFceDk2XHgwMVx4
OTRceDAxXHg5MVwwPFx4MDE9XHgwMXdceDAxXHg5N1x4MDF+XDBceDkxXDBIXDBceDFhXHgwMVx4
ODRcMFx4ZTJcMFx4ZTNcMFx4OWRceDAxXHg5YVx4MDFceDlmXHgwMVx4MDFcMFx4MDJcMFx4MDNc
MFx4OWNceDAxL1x4MDAwXHgwMDNceDAwNFwwSVwwXHhhMVx4MDFaXHgwMVtceDAxXFxceDAxXVx4
MDFuXHgwMVx4YWJceDAxYVwwYlwwY1wwZFwwZVwwZlwwZ1wwaFwwaVwwalwwXHhjMlwwXHhhZVx4
MDF0XHgwMVx4YzNcMFx4YzJcMGlceDAxXHhjZlwwXHgwN1x4MDFqXHgwMVx4MTlcMFx4MWNcMEpc
MFx4MTlcMFx4MWNcMEtcMFx4MGZcMFBcMFx4YjRceDAxXHgwZlwwUVwwXHhiN1x4MDFceGNmXDBc
eGUyXDBceGUzXDB4XHgwMXlceDAxelx4MDF7XHgwMVx4YTNcMFx4OTNcMFx4OTRcMFx4OTVcMFx4
ODdceDAxXHg4N1x4MDFceDg3XHgwMVx4ODdceDAxXHhjZlwwXHhkZVwwPFx4MDE9XHgwMX5cMClc
eDAxUlwwXHg5Mlx4MDFtXDBceDFjXDBceDkxXDBceDkxXDBceDFjXDBTXDBceDFjXDBceDFjXDBc
eDFjXDBceDFjXDBceDFjXHgwMDhcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNc
MFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4
MWNcMG9cMFx4YTNceDAxXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1ww
XHgxY1wwcFwwV1wwWFwwWVwwXHgxOVwwXHgxOVwwcVwwWlwwclwwW1wwXFxcMF1cMF5cMHNcMF9c
MGBcMFx4ODdceDAxdFwwXHgxY1wwdVwwd1wwXHgxY1wwflwwXHgxY1wwXHgxY1wwXHgxY1wwXHgx
Y1wwXHgxY1wweFwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgx
Y1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wweVwwelww
XHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwe1wwXHgxY1ww
XHg5MFwwXHg5MVwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHhiZlwwXHgxY1wwXHg5
MlwwXHhiZVwwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1ww
XHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHhjMFwwXHgxY1wwXHgx
Y1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHgxY1wwXHg4NFwwXHhkYVww
XHhjN1wwXHg4OVwwXHhkNFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwXHhkYlwwIFwwIFwwIFwwIFww
IFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwXHgxY1wwIFwwIFwwIFwwIFwwIFww
IFwwIFwwIFwwIFwwXHhkZFwwXHhmMlwwXHhmYVwwXHhmZVwwXHgxN1wwXHgxN1wwXHgxN1wwXHgx
N1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgwMVx4MDFceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3
XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBc
eDE3XDBceDE3XDBceDAzXHgwMSBcMFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdc
MFx4MTdcMFx4MTdcMFxuXHgwMVx4ZjhcMClceDAxXHgxNlx4MDEiXDAiXDAiXDAiXDAiXDAiXDAi
XDBceDE5XHgwMSJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJc
MFx4MWJceDAxXHgxN1wwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIVx4MDEvXHgwMVwnXHgwMTBc
eDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1x4MDA2XHgwMVx4MDNc
MFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNceDAwOVx4MDEiXDBceDAzXDBceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDA7XHgwMT5ceDAxP1x4MDFAXHgwMVx4
MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMEFceDAxXHgxZVwwXHgxZVww
XHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgx
ZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwQlx4MDFceDAzXDBceDFlXDBceDFlXDBceDFlXDBc
eDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDA0XHgwMURceDAxRVx4MDFGXHgwMVx4MDNc
MFx4MGJceDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwYVx4MDFceDAzXDBceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBHXHgwMVx4MWVcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMElceDAxTVx4MDFPXHgwMVFceDAxXHgxOVwwXHgx
OVwwXHgxOVwwXHgxOVwwXHgxOVwwUlx4MDFceDE5XDBTXHgwMVlceDAxXHgxOVwwXHgxOVwwXHgx
OVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVww
XHgxOVwwXHgxOVwwXHgxOVwwXlx4MDFceDAzXDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5
XDBceDE5XDBceDE5XDBceDE5XDBgXHgwMWJceDAxY1x4MDFkXHgwMVx4MDNcMGVceDAxXHgwM1ww
XHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwclx4MDFmXHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNc
MFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMGhceDAxXHgxOVwwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1ww
XHgwM1wwXHgwM1wwa1x4MDFsXHgwMXBceDAxcVx4MDFceDAzXDBceDAzXDBceDAzXDBceDAzXDBc
eDAzXDBzXHgwMVx4MDNcMHxceDAxfVx4MDFceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDB+XHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4N2ZceDAxXHg4MVx4MDFceDg1XHgwMVx4ODZceDAxXHgxZVwwXHg4ZFx4MDFceDFlXDBc
eDFlXDBceDFlXDBceDFlXDBceDFlXDBceDhjXHgwMVx4OGVceDAxXHgxZVwwXHgxZVwwXHgxZVww
XHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgx
ZVwwXHgxZVwwXHgxZVwwXHg5MVx4MDFceDAzXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFl
XDBceDFlXDBceDFlXDBceDFlXDBceDkzXHgwMVx4OWVceDAxXHhhMFx4MDFceGE0XHgwMVx4OTdc
MFx4YjBceDAxXHg5OFwwXHg5OVwwXHg5YVwwXHhhNVx4MDFceDliXDBceGE2XHgwMVx4YTdceDAx
XHg5Y1wwXHg5ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhh
NVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhhYVwwXHhhOFx4MDFceDFlXDBceGFiXDBceGFj
XDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBceGE5XHgwMVx4YWFceDAxXHhh
Y1x4MDFceGFkXHgwMVx4ZjZcMFx4YjJceDAxXHg5OFwwXHg5OVwwXHg5YVwwXHhiMVx4MDFceDli
XDBceGIzXHgwMVx4YTNcMFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJc
MFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFx4YjVceDAx
XHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXHhi
Nlx4MDFceGI4XHgwMVx4ODRcMFx4YTNcMFx4ZjhcMH5cMFx4OThcMFx4OTlcMFx4OWFcMFx4OTFc
MFx4OWJcMFx4YWFcMFBcMFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJc
MFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFx4MTdcMFx4
YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4YjJcMFx0XDBS
XDBceDdmXDBceDAzXDBceGZiXDBceDAzXDBceDk4XDBceDk5XDBceDlhXDBceDE5XDBceDliXDBQ
XDBLXDBceDljXDBceDlkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0
XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBNXDBceGIzXDBceGFiXDBceGFj
XDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBIXHgwMVx4YzFcMFx4ZjVcMFx4
ZjRcMFx4ODJceDAxOFx4MDFceDk4XDBceDk5XDBceDlhXDBOXHgwMVx4OWJcMFx4MGVcMFx4ZDZc
MFx4OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4
YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBceGFiXDBceGFjXDBc
eGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBceGNkXDBceDllXDBc
eDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4
XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhi
MFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBceGRlXDBceGRmXDBceGUwXDBceGUxXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXHhlMlwwXHhlM1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFx4YjNcMFx4OWNcMFx4Y2RcMFx4
OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdc
MFx4YThcMFx4YTlcMFx4YWFcMFwwXDBcMFwwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlww
XHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBceGRlXDBceGRmXDBceGUwXDBceGUxXDBceDk4XDBc
eDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBceGNkXDBceDllXDBceDlmXDBceGEw
XDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBc
eGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVww
XHhiMlwwXDBcMFwwXDBcMFwwXHhkZlwwXHhlMFwwXHhlMVwwXHg5OFwwXHg5OVwwXHhjYlwwXDBc
MFx4Y2NcMFwwXDBcMFwwXHg5Y1wwXHhjZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlww
XHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhhYVwwXDBcMFx4YjNc
MFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4YjJcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFx4OThcMFx4OTlcMFx4Y2JcMFwwXDBceGNjXDBceDkwXHgwMVx4Y2Vc
MFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4
YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBceGFiXDBceGFjXDBc
eGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFwwXDBceDljXDBceGNkXDBceDllXDBc
eDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4
XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhhZFwwXHhhZVwwXHhhZlwwXHhi
MFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGUxXDBceDk4XDBceDk5XDBceGNi
XDBcMFwwXHhjY1wwXHhhMlx4MDFcMFwwXHg5Y1wwXHhjZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhh
MVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhhYVww
XDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4YjJc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4OThcMFx4OTlcMFx4Y2JcMFwwXDBceGNjXDBcMFww
XDBcMFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRc
MFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBceGFiXDBceGFj
XDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YjNcMCcsCisgIC8qIGNo
ZWNrICovIllcMFwwXDBcXFwwXHhiNVwwXlwwXHhiZlwwXHhiNFwwXHg4ZlwwXHhiY1wwXHhiZFww
XHhkN1wwXHg4OVwwWlwwW1wwXHhiY1wwXVwwXHhjZVwwXHhjYVwwXHhjNFwwXlwwWFwwXGJceDAx
XHhjNVwwXHhjNlwwXFxcMFx4OTdcMF5cMFx4OWJcMFx4Y2VcMFx4OWRcMFx4ZDZcMFx4ZDdcMFx0
XHgwMVx4ZDFcMFx4ZDJcMFx4ZGZcMFx4ZTBcMFx4ZTFcMGlceDAxalx4MDFrXHgwMStceDAxXHgw
MVx4MDFcblwwYlx4MDFjXHgwMTJceDAxMVx4MDFceDhhXHgwMDNceDAxXHRceDAxNVx4MDFceDhl
XDBceDA0XHgwMUZcMFx0XHgwMTxceDAxPVx4MDFceGVhXDBcblx4MDFceGU2XDBceGU3XDBOXDBc
eDhhXDBcMFwwXHg5YVwwXHg5YlwwXHg4ZVwwXHg5ZFx4MDA4XHgwMTlceDAxJlwwPFx4MDE9XHgw
MVxiXHgwMVx4Y2JcMFx4Y2NcMFx4Y2RcMFx4ZmNcMFx4ODVceDAxXHhkOFwwXHg4N1wwXHg4OFww
XHgwNFx4MDEyXHgwMVx4MTFceDAxXGJceDAxXHg4ZFwwXHRceDAxXG5ceDAxXHg5ZVwwXHg5Zlww
XHhhMFwwXHhhMVwwXHhhMlwwXHgwNFx4MDFceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBc
blx4MDFceDEwXHgwMVx4YWFceDAxXHgxMlx4MDFceDAxXHgwMVx4ODdcMFx4ODhcMFwwXDApXHgw
MVx4MDVceDAxXHgwN1x4MDFceDhkXDBcdFx4MDFceGNiXDBceGNjXDBceGNkXDBceGNmXDBceDAx
XHgwMVx4MDNcMFx4ZjZcMFx0XHgwMVx4ZjhcMFx4MDRceDAxXHgwN1x4MDFceGZiXDBcblx4MDEx
XHgwMTxceDAxPVx4MDFceDBlXHgwMVx4MDRceDAxXHgwMVx4MDFceDExXHgwMVx4ZGZcMFx0XHgw
MVx4ZTFcMFxuXHgwMVx4MDdceDAxXHgxN1wwXHgxOFwwXHgxOVwwXHgxYVwwK1x4MDFceDAxXHgw
MVx4MWRcMFx4MWFceDAxMlx4MDFceDA1XHgwMTFceDAxXHgwNFx4MDEzXHgwMVx0XHgwMTVceDAx
XHhkZVwwOlx4MDE7XHgwMTxceDAxPVx4MDE+XHgwMT9ceDAxQFx4MDFBXHgwMUJceDAxQ1x4MDFE
XHgwMUVceDAxRlx4MDFHXHgwMVx4MTNcMFx0XHgwMVx4MTVcMFx4MTZcMFx4MDRceDAxe1x4MDFc
eDA0XHgwMVx4MDRceDAxXHgwNFx4MDFgXHgwMVxuXHgwMVx0XHgwMVx4MWZcMCBcMFxuXHgwMVx4
MDFceDAxXG5ceDAxXHgxNFx4MDFcblx4MDFceDA1XHgwMSdcMHhceDAxXHgwNFx4MDFcblx4MDF6
XHgwMXJceDAxe1x4MDF4XHgwMVxuXHgwMVx4MDRceDAxLlx4MDEvXHgwMVFceDAxeVx4MDFceDA1
XHgwMVxuXHgwMVx4MDRceDAxNlx4MDFcdFx4MDE4XHgwMTlceDAxXHg4Y1x4MDFceDgxXHgwMVx4
OGVceDAxXHgwMVwwXHgwMlwwXHgwM1wwXHg4YVx4MDFceDFiXDBceDFjXDBceDFkXDBceDFlXDBc
eDA0XHgwMVx4OTBceDAxI1x4MDEkXHgwMSVceDAxJlx4MDE8XHgwMVx4OWVceDAxOVwwOlwwO1ww
PFwwPVwwPlwwP1wwQFwwQVwwQlwwXHgwNlx4MDFceGEyXHgwMUtceDAxXHRceDAxXHgwNlx4MDFc
eDBlXHgwMXNceDAxXHRceDAxXHgxMVx4MDFceDA2XHgwMVx4MDZceDAxXHgwNFx4MDFcdFx4MDFc
dFx4MDFceDA0XHgwMVx4MDdceDAxXHgwNFx4MDFceGIyXHgwMVxuXHgwMVx4MDRceDAxXHhiNVx4
MDFceDgyXHgwMThceDAxOVx4MDFVXHgwMVZceDAxV1x4MDFYXHgwMVxuXHgwMVx4MDFceDAxXHgw
Mlx4MDFceDAzXHgwMWhceDAxaVx4MDFqXHgwMWtceDAxXHg5MVx4MDEtXHgwMS5ceDAxL1x4MDFc
eDA1XHgwMVx4MDZceDAxXHgwNFx4MDF0XHgwMVxuXHgwMVx4MDZceDAxXHRceDAxXG5ceDAxXHRc
eDAxXHgwNFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcdFx4MDFceDEx
XHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThc
eDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4
MDEgXHgwMVxuXHgwMVx4OTJceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEq
XHgwMVxuXHgwMStceDAxLFx4MDEtXHgwMVx0XHgwMVxuXHgwMVxuXHgwMTFceDAxXG5ceDAxM1x4
MDE0XHgwMTVceDAxNlx4MDFcblx4MDE4XHgwMTlceDAxXHhhYVx4MDEjXHgwMVx4MDZceDAxXG5c
eDAxXG5ceDAxXHRceDAxXHgwNVx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4
MDFcblx4MDFIXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3
XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVc
eDAxXHgxZlx4MDEgXHgwMVxuXHgwMVxuXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgw
MSlceDAxKlx4MDFcblx4MDFceDA2XHgwMVx4MDRceDAxXHgwNFx4MDFcdFx4MDFcblx4MDFceDBi
XHgwMVxmXHgwMVxyXHgwMStceDAxXHgwZlx4MDFcblx4MDFcblx4MDFceDEyXHgwMVx4MTNceDAx
XHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFc
eDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4MDFIXHgwMSNc
eDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcdFx4MDFceDA0XHgwMVx0XHgw
MVx0XHgwMVx0XHgwMVx0XHgwMVxuXHgwMVx4MGJceDAxXGZceDAxXHJceDAxXHgwZVx4MDFceDBm
XHgwMVx0XHgwMVx4MTFceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgw
MVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAx
XHgxZVx4MDFceDFmXHgwMSBceDAxSFx4MDFcIlx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAx
KFx4MDEpXHgwMSpceDAxXG5ceDAxIVx4MDFcblx4MDFcdFx4MDFcdFx4MDFcblx4MDFceDBiXHgw
MVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcdFx4MDFceDExXHgwMVx4MTJceDAxXHgxM1x4
MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgw
MVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMUhceDAx
I1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4MDFceDAxXHRceDAxXHgw
Nlx4MDFcblx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4
MDFcblx4MDFceDExXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFc
eDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4
MWVceDAxXHgxZlx4MDEgXHgwMVx0XHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShc
eDAxKVx4MDEqXHgwMVx0XHgwMVx4MDRceDAxXG5ceDAxXHgwNFx4MDFcdFx4MDFcblx4MDFceDBi
XHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcIlx4MDFceDExXHgwMVx4MTJceDAxXHgx
M1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFh
XHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMUhc
eDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVxuXHgwMVxuXHgwMVxu
XHgwMVxuXHgwMVx0XHgwMVxuXHgwMVx4MGJceDAxXGZceDAxXHJceDAxXHgwZVx4MDFceDBmXHgw
MVx4MDZceDAxXHgxMVx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAx
XHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFc
eDFlXHgwMVx4MWZceDAxIFx4MDFcblx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEo
XHgwMSlceDAxKlx4MDFcYlx4MDFcblx4MDFceDAxXHgwMVx0XHgwMVx0XHgwMVx4MDdceDAxXHgw
Ylx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxXHgwNlx4MDFceDExXHgwMVx4MTJceDAx
XHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFc
eDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgw
MUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVxuXHgwMVxuXHgw
MVxuXHgwMTZceDAxXHRceDAxXG5ceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFcblx4MDFceDBmXHgw
MVxuXHgwMVxuXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3
XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVc
eDAxXHgxZlx4MDEgXHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAx
KVx4MDEqXHgwMVxuXHgwMVxuXHgwMVxuXHgwMVx4MDZceDAxXHRceDAxXHgwNFx4MDFceDBiXHgw
MVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDE0XHgwMVxuXHgwMVx4MTJceDAxXHgxM1x4MDFc
eDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4
MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4MGVceDAxSFx4MDEj
XHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHgwZVx4MDFcblx4MDFcblx4
MDFcblx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx0XHgwMVx4MGZceDAxXG5c
eDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAx
XHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFc
eDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgw
MSpceDAxXG5ceDAxXG5ceDAxXG5ceDAxXG5ceDAxXHRceDAxXHgwNlx4MDFceDBiXHgwMVxmXHgw
MVxyXHgwMVx4MGVceDAxXHgwZlx4MDFcblx4MDFcblx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4
MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgw
MVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcdFx4MDFIXHgwMSNceDAxJFx4
MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4MDFcblx4MDFcblx4MDFc
dFx4MDFcdFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVxuXHgwMVx4MGZceDAxXG5ceDAxXG5ceDAx
XHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFc
eDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBc
eDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXG5c
eDAxXHgwZVx4MDFcblx4MDFcblx4MDFcdFx4MDFceDExXHgwMVx4MGJceDAxXGZceDAxXHJceDAx
XG5ceDAxXHgwZlx4MDFcdFx4MDFcMFwwXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFc
eDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4
MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHgxMVx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZc
eDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4MDFcblx4MDFcblx4MDFcdFx4MDFceDAx
XHgwMVx4MGJceDAxXGZceDAxXHJceDAxXG5ceDAxXHgwZlx4MDFcblx4MDFcblx4MDFceDEyXHgw
MVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAx
XHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4
MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4
MDFceDAxXHgwMVxuXHgwMVx0XHgwMVx0XHgwMVx4MGJceDAxXGZceDAxXHJceDAxXHgwMVx4MDFc
eDBmXHgwMVx4MGVceDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2
XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRc
eDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdc
eDAxKFx4MDEpXHgwMSpceDAxXHgwZVx4MDFceDg2XDBceGFiXDBceGFhXDBcdFx4MDFceGY0XDBc
eDBiXHgwMVxmXHgwMVxyXHgwMVx4MTRceDAxXHgwZlx4MDFceDAyXDBceDhkXDBceDEyXHgwMVx4
MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgx
YVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFceGZmXHhm
ZkhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MGJceDAxXGZceDAxXHJceDAx
XHhmZlx4ZmZceDBmXHgwMVx4ZmZceGZmXHhmZlx4ZmZceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFc
eDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4
MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFceGZmXHhmZkhceDAxI1x4MDEkXHgw
MSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4ZmZceGZmXHhmZlx4ZmYtXHgwMS5ceDAx
L1x4MDEwXHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmOFx4MDE5XHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgw
Zlx4MDFceGZmXHhmZkhceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgw
MVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAx
XHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZceGZmXHhmZiNceDAxJFx4MDElXHgwMSZceDAx
J1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmLVx4MDEuXHgwMS9ceDAxMFx4MDFc
eDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4
MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgw
MVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhm
Zlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmYuXHgwMS9ceDAxMFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZc
eGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4
MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgw
MVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgw
MSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceDEw
XHgwMTdceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAx
XHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFc
eDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlc
eDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4
MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgw
MVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhm
Zlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmMFx4MDFceDBiXHgwMVxmXHgwMVxyXHgw
MVx4ZmZceGZmXHgwZlx4MDFceDEwXHgwMVx4ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAx
XHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFc
eDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4
MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4ZmZceGZmXHgwZlx4
MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgw
MVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAx
XHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4
MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmSFx4MDEiLAorICAvKiBlcnJvcl9mdW5jdGlvbiAqL3BhcnNl
X2Vycm9yLAorICAvKiBuYW1lc19jb25zdCAqLyJGVU5DUkVGXDBNVVRcMExQQVJcMFJQQVJcME5P
UFwwRFJPUFwwQkxPQ0tcMEVORFwwSUZcMFRIRU5cMEVMU0VcMFNFTEVDVFwwTE9PUFwwQlJcMEJS
X0lGXDBCUl9UQUJMRVwwQ0FMTFwwQ0FMTF9JTkRJUkVDVFwwUkVUVVJOXDBHRVRfTE9DQUxcMFNF
VF9MT0NBTFwwVEVFX0xPQ0FMXDBHRVRfR0xPQkFMXDBTRVRfR0xPQkFMXDBVTlJFQUNIQUJMRVww
Q1VSUkVOVF9NRU1PUllcMEdST1dfTUVNT1JZXDBGVU5DXDBTVEFSVFwwVFlQRVwwUEFSQU1cMFJF
U1VMVFwwTE9DQUxcMEdMT0JBTFwwTU9EVUxFXDBUQUJMRVwwRUxFTVwwTUVNT1JZXDBEQVRBXDBP
RkZTRVRcMElNUE9SVFwwRVhQT1JUXDBTQ1JJUFRcMFJFR0lTVEVSXDBJTlZPS0VcMEdFVFwwQVNT
RVJUX01BTEZPUk1FRFwwQVNTRVJUX0lOVkFMSURcMEFTU0VSVF9TT0ZUX0lOVkFMSURcMEFTU0VS
VF9VTkxJTktBQkxFXDBBU1NFUlRfUkVUVVJOXDBBU1NFUlRfUkVUVVJOX05BTlwwQVNTRVJUX1RS
QVBcMEFTU0VSVF9FWEhBVVNUSU9OXDBJTlBVVFwwT1VUUFVUXDBFT0ZcMCIsCisgIC8qIG5hbWVz
X2Jsb2NrICovIk5BVFwwSU5UXDBGTE9BVFwwVEVYVFwwVkFSXDBWQUxVRV9UWVBFXDBMT0FEXDBT
VE9SRVwwT0ZGU0VUX0VRX05BVFwwQUxJR05fRVFfTkFUXDBDT05TVFwwVU5BUllcMEJJTkFSWVww
Q09NUEFSRVwwQ09OVkVSVFwwVEVTVFwwIgorXTsKKworZnVuY3Rpb24gc2NyaXB0KGxleGZ1biwg
bGV4YnVmKSB7CisgIHJldHVybiBQYXJzaW5nLnl5cGFyc2UoeXl0YWJsZXMsIDEsIGxleGZ1biwg
bGV4YnVmKTsKK30KKworZnVuY3Rpb24gc2NyaXB0MShsZXhmdW4sIGxleGJ1ZikgeworICByZXR1
cm4gUGFyc2luZy55eXBhcnNlKHl5dGFibGVzLCAyLCBsZXhmdW4sIGxleGJ1Zik7Cit9CisKK2Z1
bmN0aW9uIG1vZHVsZTEobGV4ZnVuLCBsZXhidWYpIHsKKyAgcmV0dXJuIFBhcnNpbmcueXlwYXJz
ZSh5eXRhYmxlcywgMywgbGV4ZnVuLCBsZXhidWYpOworfQorCitleHBvcnRzLnNjcmlwdCAgPSBz
Y3JpcHQ7CitleHBvcnRzLnNjcmlwdDEgPSBzY3JpcHQxOworZXhwb3J0cy5tb2R1bGUxID0gbW9k
dWxlMTsKKy8qIFZhck1hcCBOb3QgYSBwdXJlIG1vZHVsZSAqLworLy8vLy8vLy8gZW5kIG9mIHBh
cnNlci5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3Jl
Z2lzdHJ5WydwYXJzaW5nJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307
CisvLy8vLy8vLyBzdGFydCBvZiBwYXJzaW5nLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisK
K3ZhciAkJEFycmF5ICAgICAgICAgPSByZXF1aXJlKCIuL2FycmF5Iik7Cit2YXIgQ3VycnkgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwordmFyIExleGluZyAgICAgICAgICA9IHJlcXVp
cmUoIi4vbGV4aW5nIik7Cit2YXIgQ2FtbF9vYmogICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX29i
aiIpOwordmFyIENhbWxfYXJyYXkgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9hcnJheSIpOwordmFy
IENhbWxfcGFyc2VyICAgICA9IHJlcXVpcmUoIi4vY2FtbF9wYXJzZXIiKTsKK3ZhciBDYW1sX2V4
Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0aW9ucyIpOworCit2YXIgWVlleGl0ID0g
Q2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiUGFyc2luZy5ZWWV4aXQiKTsKKwordmFyIFBhcnNlX2Vy
cm9yID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiUGFyc2luZy5QYXJzZV9lcnJvciIpOworCit2
YXIgZW52ID0gLyogcmVjb3JkICovWworICAvKiBzX3N0YWNrICovQ2FtbF9hcnJheS5jYW1sX21h
a2VfdmVjdCgxMDAsIDApLAorICAvKiB2X3N0YWNrICovQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVj
dCgxMDAsIC8qICgpICovMCksCisgIC8qIHN5bWJfc3RhcnRfc3RhY2sgKi9DYW1sX2FycmF5LmNh
bWxfbWFrZV92ZWN0KDEwMCwgTGV4aW5nLmR1bW15X3BvcyksCisgIC8qIHN5bWJfZW5kX3N0YWNr
ICovQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdCgxMDAsIExleGluZy5kdW1teV9wb3MpLAorICAv
KiBzdGFja3NpemUgKi8xMDAsCisgIC8qIHN0YWNrYmFzZSAqLzAsCisgIC8qIGN1cnJfY2hhciAq
LzAsCisgIC8qIGx2YWwgOiAoKSAqLzAsCisgIC8qIHN5bWJfc3RhcnQgKi9MZXhpbmcuZHVtbXlf
cG9zLAorICAvKiBzeW1iX2VuZCAqL0xleGluZy5kdW1teV9wb3MsCisgIC8qIGFzcCAqLzAsCisg
IC8qIHJ1bGVfbGVuICovMCwKKyAgLyogcnVsZV9udW1iZXIgKi8wLAorICAvKiBzcCAqLzAsCisg
IC8qIHN0YXRlICovMCwKKyAgLyogZXJyZmxhZyAqLzAKK107CisKK2Z1bmN0aW9uIGdyb3dfc3Rh
Y2tzKCkgeworICB2YXIgb2xkc2l6ZSA9IGVudlsvKiBzdGFja3NpemUgKi80XTsKKyAgdmFyIG5l
d3NpemUgPSAob2xkc2l6ZSA8PCAxKTsKKyAgdmFyIG5ld19zID0gQ2FtbF9hcnJheS5jYW1sX21h
a2VfdmVjdChuZXdzaXplLCAwKTsKKyAgdmFyIG5ld192ID0gQ2FtbF9hcnJheS5jYW1sX21ha2Vf
dmVjdChuZXdzaXplLCAvKiAoKSAqLzApOworICB2YXIgbmV3X3N0YXJ0ID0gQ2FtbF9hcnJheS5j
YW1sX21ha2VfdmVjdChuZXdzaXplLCBMZXhpbmcuZHVtbXlfcG9zKTsKKyAgdmFyIG5ld19lbmQg
PSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KG5ld3NpemUsIExleGluZy5kdW1teV9wb3MpOwor
ICAkJEFycmF5LmJsaXQoZW52Wy8qIHNfc3RhY2sgKi8wXSwgMCwgbmV3X3MsIDAsIG9sZHNpemUp
OworICBlbnZbLyogc19zdGFjayAqLzBdID0gbmV3X3M7CisgICQkQXJyYXkuYmxpdChlbnZbLyog
dl9zdGFjayAqLzFdLCAwLCBuZXdfdiwgMCwgb2xkc2l6ZSk7CisgIGVudlsvKiB2X3N0YWNrICov
MV0gPSBuZXdfdjsKKyAgJCRBcnJheS5ibGl0KGVudlsvKiBzeW1iX3N0YXJ0X3N0YWNrICovMl0s
IDAsIG5ld19zdGFydCwgMCwgb2xkc2l6ZSk7CisgIGVudlsvKiBzeW1iX3N0YXJ0X3N0YWNrICov
Ml0gPSBuZXdfc3RhcnQ7CisgICQkQXJyYXkuYmxpdChlbnZbLyogc3ltYl9lbmRfc3RhY2sgKi8z
XSwgMCwgbmV3X2VuZCwgMCwgb2xkc2l6ZSk7CisgIGVudlsvKiBzeW1iX2VuZF9zdGFjayAqLzNd
ID0gbmV3X2VuZDsKKyAgZW52Wy8qIHN0YWNrc2l6ZSAqLzRdID0gbmV3c2l6ZTsKKyAgcmV0dXJu
IC8qICgpICovMDsKK30KKworZnVuY3Rpb24gY2xlYXJfcGFyc2VyKCkgeworICAkJEFycmF5LmZp
bGwoZW52Wy8qIHZfc3RhY2sgKi8xXSwgMCwgZW52Wy8qIHN0YWNrc2l6ZSAqLzRdLCAvKiAoKSAq
LzApOworICBlbnZbLyogbHZhbCAqLzddID0gLyogKCkgKi8wOworICByZXR1cm4gLyogKCkgKi8w
OworfQorCit2YXIgY3VycmVudF9sb29rYWhlYWRfZnVuID0gW2Z1bmN0aW9uICgpIHsKKyAgICBy
ZXR1cm4gLyogZmFsc2UgKi8wOworICB9XTsKKworZnVuY3Rpb24geXlwYXJzZSh0YWJsZXMsIHN0
YXJ0LCBsZXhlciwgbGV4YnVmKSB7CisgIHZhciBpbml0X2FzcCA9IGVudlsvKiBhc3AgKi8xMF07
CisgIHZhciBpbml0X3NwID0gZW52Wy8qIHNwICovMTNdOworICB2YXIgaW5pdF9zdGFja2Jhc2Ug
PSBlbnZbLyogc3RhY2tiYXNlICovNV07CisgIHZhciBpbml0X3N0YXRlID0gZW52Wy8qIHN0YXRl
ICovMTRdOworICB2YXIgaW5pdF9jdXJyX2NoYXIgPSBlbnZbLyogY3Vycl9jaGFyICovNl07Cisg
IHZhciBpbml0X2x2YWwgPSBlbnZbLyogbHZhbCAqLzddOworICB2YXIgaW5pdF9lcnJmbGFnID0g
ZW52Wy8qIGVycmZsYWcgKi8xNV07CisgIGVudlsvKiBzdGFja2Jhc2UgKi81XSA9IGVudlsvKiBz
cCAqLzEzXSArIDEgfCAwOworICBlbnZbLyogY3Vycl9jaGFyICovNl0gPSBzdGFydDsKKyAgZW52
Wy8qIHN5bWJfZW5kICovOV0gPSBsZXhidWZbLyogbGV4X2N1cnJfcCAqLzExXTsKKyAgdHJ5IHsK
KyAgICB2YXIgX2NtZCA9IC8qIFN0YXJ0ICovMDsKKyAgICB2YXIgX2FyZyA9IC8qICgpICovMDsK
KyAgICB3aGlsZSh0cnVlKSB7CisgICAgICB2YXIgYXJnID0gX2FyZzsKKyAgICAgIHZhciBjbWQg
PSBfY21kOworICAgICAgdmFyIG1hdGNoID0gQ2FtbF9wYXJzZXIuY2FtbF9wYXJzZV9lbmdpbmUo
dGFibGVzLCBlbnYsIGNtZCwgYXJnKTsKKyAgICAgIHN3aXRjaCAobWF0Y2gpIHsKKyAgICAgICAg
Y2FzZSAwIDogCisgICAgICAgICAgICB2YXIgdCA9IEN1cnJ5Ll8xKGxleGVyLCBsZXhidWYpOwor
ICAgICAgICAgICAgZW52Wy8qIHN5bWJfc3RhcnQgKi84XSA9IGxleGJ1ZlsvKiBsZXhfc3RhcnRf
cCAqLzEwXTsKKyAgICAgICAgICAgIGVudlsvKiBzeW1iX2VuZCAqLzldID0gbGV4YnVmWy8qIGxl
eF9jdXJyX3AgKi8xMV07CisgICAgICAgICAgICBfYXJnID0gdDsKKyAgICAgICAgICAgIF9jbWQg
PSAvKiBUb2tlbl9yZWFkICovMTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAg
IGNhc2UgMSA6IAorICAgICAgICAgICAgdGhyb3cgUGFyc2VfZXJyb3I7CisgICAgICAgIGNhc2Ug
MiA6IAorICAgICAgICAgICAgZ3Jvd19zdGFja3MoLyogKCkgKi8wKTsKKyAgICAgICAgICAgIF9h
cmcgPSAvKiAoKSAqLzA7CisgICAgICAgICAgICBfY21kID0gLyogU3RhY2tzX2dyb3duXzEgKi8y
OworICAgICAgICAgICAgY29udGludWUgOworICAgICAgICAgICAgY2FzZSAzIDogCisgICAgICAg
ICAgICBncm93X3N0YWNrcygvKiAoKSAqLzApOworICAgICAgICAgICAgX2FyZyA9IC8qICgpICov
MDsKKyAgICAgICAgICAgIF9jbWQgPSAvKiBTdGFja3NfZ3Jvd25fMiAqLzM7CisgICAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgICBjYXNlIDQgOiAKKyAgICAgICAgICAgIHZhciBtYXRj
aCQxOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxl
ICovWworICAgICAgICAgICAgICAgIC8qIFNlbWFudGljX2FjdGlvbl9jb21wdXRlZCAqLzQsCisg
ICAgICAgICAgICAgICAgQ3VycnkuXzEodGFibGVzWy8qIGFjdGlvbnMgKi8wXVtlbnZbLyogcnVs
ZV9udW1iZXIgKi8xMl1dLCBlbnYpCisgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjYXRjaCAoZXhuKXsKKyAgICAgICAgICAgICAgaWYgKGV4biA9PT0gUGFyc2Vf
ZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAg
ICAgICAgICAgICAvKiBFcnJvcl9kZXRlY3RlZCAqLzUsCisgICAgICAgICAgICAgICAgICAvKiAo
KSAqLzAKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IGV4bjsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgX2FyZyA9IG1hdGNoJDFbMV07CisgICAgICAgICAgICBf
Y21kID0gbWF0Y2gkMVswXTsKKyAgICAgICAgICAgIGNvbnRpbnVlIDsKKyAgICAgICAgICAgIGNh
c2UgNSA6IAorICAgICAgICAgICAgQ3VycnkuXzEodGFibGVzWy8qIGVycm9yX2Z1bmN0aW9uICov
MTNdLCAic3ludGF4IGVycm9yIik7CisgICAgICAgICAgICBfYXJnID0gLyogKCkgKi8wOworICAg
ICAgICAgICAgX2NtZCA9IC8qIEVycm9yX2RldGVjdGVkICovNTsKKyAgICAgICAgICAgIGNvbnRp
bnVlIDsKKyAgICAgICAgICAgIAorICAgICAgfQorICAgIH07CisgIH0KKyAgY2F0Y2ggKGV4biQx
KXsKKyAgICB2YXIgY3Vycl9jaGFyID0gZW52Wy8qIGN1cnJfY2hhciAqLzZdOworICAgIGVudlsv
KiBhc3AgKi8xMF0gPSBpbml0X2FzcDsKKyAgICBlbnZbLyogc3AgKi8xM10gPSBpbml0X3NwOwor
ICAgIGVudlsvKiBzdGFja2Jhc2UgKi81XSA9IGluaXRfc3RhY2tiYXNlOworICAgIGVudlsvKiBz
dGF0ZSAqLzE0XSA9IGluaXRfc3RhdGU7CisgICAgZW52Wy8qIGN1cnJfY2hhciAqLzZdID0gaW5p
dF9jdXJyX2NoYXI7CisgICAgZW52Wy8qIGx2YWwgKi83XSA9IGluaXRfbHZhbDsKKyAgICBlbnZb
LyogZXJyZmxhZyAqLzE1XSA9IGluaXRfZXJyZmxhZzsKKyAgICBpZiAoZXhuJDFbMF0gPT09IFlZ
ZXhpdCkgeworICAgICAgcmV0dXJuIGV4biQxWzFdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAg
IGN1cnJlbnRfbG9va2FoZWFkX2Z1blswXSA9IGZ1bmN0aW9uICh0b2spIHsKKyAgICAgICAgaWYg
KHRvay5sZW5ndGggIT09IHVuZGVmaW5lZCkgeworICAgICAgICAgIHJldHVybiArKHRhYmxlc1sv
KiB0cmFuc2xfYmxvY2sgKi8yXVt0b2sudGFnIHwgMF0gPT09IGN1cnJfY2hhcik7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0dXJuICsodGFibGVzWy8qIHRyYW5zbF9j
b25zdCAqLzFdW3Rva10gPT09IGN1cnJfY2hhcik7CisgICAgICAgIH0KKyAgICAgIH07CisgICAg
ICB0aHJvdyBleG4kMTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gcGVla192YWwoZW52LCBu
KSB7CisgIHJldHVybiBlbnZbLyogdl9zdGFjayAqLzFdW2VudlsvKiBhc3AgKi8xMF0gLSBuIHwg
MF07Cit9CisKK2Z1bmN0aW9uIHN5bWJvbF9zdGFydF9wb3MoKSB7CisgIHZhciBfaSA9IGVudlsv
KiBydWxlX2xlbiAqLzExXTsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0gX2k7CisgICAg
aWYgKGkgPD0gMCkgeworICAgICAgcmV0dXJuIGVudlsvKiBzeW1iX2VuZF9zdGFjayAqLzNdW2Vu
dlsvKiBhc3AgKi8xMF1dOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZhciBzdCA9IGVudlsv
KiBzeW1iX3N0YXJ0X3N0YWNrICovMl1bKGVudlsvKiBhc3AgKi8xMF0gLSBpIHwgMCkgKyAxIHwg
MF07CisgICAgICB2YXIgZW4gPSBlbnZbLyogc3ltYl9lbmRfc3RhY2sgKi8zXVsoZW52Wy8qIGFz
cCAqLzEwXSAtIGkgfCAwKSArIDEgfCAwXTsKKyAgICAgIGlmIChDYW1sX29iai5jYW1sX25vdGVx
dWFsKHN0LCBlbikpIHsKKyAgICAgICAgcmV0dXJuIHN0OworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIF9pID0gaSAtIDEgfCAwOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAor
ICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gc3ltYm9sX2VuZF9wb3MoKSB7Cisg
IHJldHVybiBlbnZbLyogc3ltYl9lbmRfc3RhY2sgKi8zXVtlbnZbLyogYXNwICovMTBdXTsKK30K
KworZnVuY3Rpb24gcmhzX3N0YXJ0X3BvcyhuKSB7CisgIHJldHVybiBlbnZbLyogc3ltYl9zdGFy
dF9zdGFjayAqLzJdW2VudlsvKiBhc3AgKi8xMF0gLSAoZW52Wy8qIHJ1bGVfbGVuICovMTFdIC0g
biB8IDApIHwgMF07Cit9CisKK2Z1bmN0aW9uIHJoc19lbmRfcG9zKG4pIHsKKyAgcmV0dXJuIGVu
dlsvKiBzeW1iX2VuZF9zdGFjayAqLzNdW2VudlsvKiBhc3AgKi8xMF0gLSAoZW52Wy8qIHJ1bGVf
bGVuICovMTFdIC0gbiB8IDApIHwgMF07Cit9CisKK2Z1bmN0aW9uIHN5bWJvbF9zdGFydCgpIHsK
KyAgcmV0dXJuIHN5bWJvbF9zdGFydF9wb3MoLyogKCkgKi8wKVsvKiBwb3NfY251bSAqLzNdOwor
fQorCitmdW5jdGlvbiBzeW1ib2xfZW5kKCkgeworICByZXR1cm4gc3ltYm9sX2VuZF9wb3MoLyog
KCkgKi8wKVsvKiBwb3NfY251bSAqLzNdOworfQorCitmdW5jdGlvbiByaHNfc3RhcnQobikgewor
ICByZXR1cm4gcmhzX3N0YXJ0X3BvcyhuKVsvKiBwb3NfY251bSAqLzNdOworfQorCitmdW5jdGlv
biByaHNfZW5kKG4pIHsKKyAgcmV0dXJuIHJoc19lbmRfcG9zKG4pWy8qIHBvc19jbnVtICovM107
Cit9CisKK2Z1bmN0aW9uIGlzX2N1cnJlbnRfbG9va2FoZWFkKHRvaykgeworICByZXR1cm4gQ3Vy
cnkuXzEoY3VycmVudF9sb29rYWhlYWRfZnVuWzBdLCB0b2spOworfQorCitmdW5jdGlvbiBwYXJz
ZV9lcnJvcigpIHsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKwordmFyIHNldF90cmFjZSA9IENh
bWxfcGFyc2VyLmNhbWxfc2V0X3BhcnNlcl90cmFjZTsKKworZXhwb3J0cy5zeW1ib2xfc3RhcnQg
ICAgICAgICA9IHN5bWJvbF9zdGFydDsKK2V4cG9ydHMuc3ltYm9sX2VuZCAgICAgICAgICAgPSBz
eW1ib2xfZW5kOworZXhwb3J0cy5yaHNfc3RhcnQgICAgICAgICAgICA9IHJoc19zdGFydDsKK2V4
cG9ydHMucmhzX2VuZCAgICAgICAgICAgICAgPSByaHNfZW5kOworZXhwb3J0cy5zeW1ib2xfc3Rh
cnRfcG9zICAgICA9IHN5bWJvbF9zdGFydF9wb3M7CitleHBvcnRzLnN5bWJvbF9lbmRfcG9zICAg
ICAgID0gc3ltYm9sX2VuZF9wb3M7CitleHBvcnRzLnJoc19zdGFydF9wb3MgICAgICAgID0gcmhz
X3N0YXJ0X3BvczsKK2V4cG9ydHMucmhzX2VuZF9wb3MgICAgICAgICAgPSByaHNfZW5kX3BvczsK
K2V4cG9ydHMuY2xlYXJfcGFyc2VyICAgICAgICAgPSBjbGVhcl9wYXJzZXI7CitleHBvcnRzLlBh
cnNlX2Vycm9yICAgICAgICAgID0gUGFyc2VfZXJyb3I7CitleHBvcnRzLnNldF90cmFjZSAgICAg
ICAgICAgID0gc2V0X3RyYWNlOworZXhwb3J0cy5ZWWV4aXQgICAgICAgICAgICAgICA9IFlZZXhp
dDsKK2V4cG9ydHMueXlwYXJzZSAgICAgICAgICAgICAgPSB5eXBhcnNlOworZXhwb3J0cy5wZWVr
X3ZhbCAgICAgICAgICAgICA9IHBlZWtfdmFsOworZXhwb3J0cy5pc19jdXJyZW50X2xvb2thaGVh
ZCA9IGlzX2N1cnJlbnRfbG9va2FoZWFkOworZXhwb3J0cy5wYXJzZV9lcnJvciAgICAgICAgICA9
IHBhcnNlX2Vycm9yOworLyogTm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBwYXJz
aW5nLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVn
aXN0cnlbJ3BlcnZhc2l2ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7
fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHBlcnZhc2l2ZXMuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0
JzsKKwordmFyIEN1cnJ5ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsK
K3ZhciBDYW1sX2lvICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfaW8iKTsKK3Zh
ciBDYW1sX29iaiAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfb2JqIik7Cit2YXIg
Q2FtbF9mb3JtYXQgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2Zvcm1hdCIpOwordmFy
IENhbWxfc3RyaW5nICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKK3Zh
ciBDYW1sX2V4Y2VwdGlvbnMgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0aW9ucyIp
OwordmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zICA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMiKTsKK3ZhciBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MgPSByZXF1aXJlKCIu
L2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcyIpOworCitmdW5jdGlvbiBmYWlsd2l0aChzKSB7Cisg
IHRocm93IFsKKyAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKKyAgICAg
ICAgcworICAgICAgXTsKK30KKworZnVuY3Rpb24gaW52YWxpZF9hcmcocykgeworICB0aHJvdyBb
CisgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAg
ICAgIHMKKyAgICAgIF07Cit9CisKK3ZhciBFeGl0ID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgi
UGVydmFzaXZlcy5FeGl0Iik7CisKK2Z1bmN0aW9uIG1pbih4LCB5KSB7CisgIGlmIChDYW1sX29i
ai5jYW1sX2xlc3NlcXVhbCh4LCB5KSkgeworICAgIHJldHVybiB4OworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiB5OworICB9Cit9CisKK2Z1bmN0aW9uIG1heCh4LCB5KSB7CisgIGlmIChDYW1s
X29iai5jYW1sX2dyZWF0ZXJlcXVhbCh4LCB5KSkgeworICAgIHJldHVybiB4OworICB9CisgIGVs
c2UgeworICAgIHJldHVybiB5OworICB9Cit9CisKK2Z1bmN0aW9uIGFicyh4KSB7CisgIGlmICh4
ID49IDApIHsKKyAgICByZXR1cm4geDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLXggfCAw
OworICB9Cit9CisKK2Z1bmN0aW9uIGxub3QoeCkgeworICByZXR1cm4geCBeIC0xOworfQorCit2
YXIgbWluX2ludCA9IC0yMTQ3NDgzNjQ4OworCitmdW5jdGlvbiAkY2FyZXQoYSwgYikgeworICBy
ZXR1cm4gYSArIGI7Cit9CisKK2Z1bmN0aW9uIGNoYXJfb2ZfaW50KG4pIHsKKyAgaWYgKG4gPCAw
IHx8IG4gPiAyNTUpIHsKKyAgICB0aHJvdyBbCisgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAgICAiY2hhcl9vZl9pbnQiCisgICAgICAg
IF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIG47CisgIH0KK30KKworZnVuY3Rpb24gc3Ry
aW5nX29mX2Jvb2woYikgeworICBpZiAoYikgeworICAgIHJldHVybiAidHJ1ZSI7CisgIH0KKyAg
ZWxzZSB7CisgICAgcmV0dXJuICJmYWxzZSI7CisgIH0KK30KKworZnVuY3Rpb24gYm9vbF9vZl9z
dHJpbmcocGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgImZhbHNlIiA6IAor
ICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICAgIGNhc2UgInRydWUiIDogCisgICAgICAg
IHJldHVybiAvKiB0cnVlICovMTsKKyAgICBkZWZhdWx0OgorICAgICAgdGhyb3cgWworICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKKyAgICAgICAg
ICAgICJib29sX29mX3N0cmluZyIKKyAgICAgICAgICBdOworICB9Cit9CisKK2Z1bmN0aW9uIHN0
cmluZ19vZl9pbnQocGFyYW0pIHsKKyAgcmV0dXJuICIiICsgcGFyYW07Cit9CisKK2Z1bmN0aW9u
IHZhbGlkX2Zsb2F0X2xleGVtKHMpIHsKKyAgdmFyIGwgPSBzLmxlbmd0aDsKKyAgdmFyIF9pID0g
MDsKKyAgd2hpbGUodHJ1ZSkgeworICAgIHZhciBpID0gX2k7CisgICAgaWYgKGkgPj0gbCkgewor
ICAgICAgcmV0dXJuICRjYXJldChzLCAiLiIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHZh
ciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKKyAgICAgIGlmIChtYXRjaCA+PSA0OCkg
eworICAgICAgICBpZiAobWF0Y2ggPj0gNTgpIHsKKyAgICAgICAgICByZXR1cm4gczsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAg
ICBjb250aW51ZSA7CisgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ug
aWYgKG1hdGNoICE9PSA0NSkgeworICAgICAgICByZXR1cm4gczsKKyAgICAgIH0KKyAgICAgIGVs
c2UgeworICAgICAgICBfaSA9IGkgKyAxIHwgMDsKKyAgICAgICAgY29udGludWUgOworICAgICAg
ICAKKyAgICAgIH0KKyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9mbG9hdChm
KSB7CisgIHJldHVybiB2YWxpZF9mbG9hdF9sZXhlbShDYW1sX2Zvcm1hdC5jYW1sX2Zvcm1hdF9m
bG9hdCgiJS4xMmciLCBmKSk7Cit9CisKK2Z1bmN0aW9uICRhdChsMSwgbDIpIHsKKyAgaWYgKGwx
KSB7CisgICAgcmV0dXJuIC8qIDo6ICovWworICAgICAgICAgICAgbDFbMF0sCisgICAgICAgICAg
ICAkYXQobDFbMV0sIGwyKQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJu
IGwyOworICB9Cit9CisKK3ZhciBzdGRpbiA9IENhbWxfaW8uc3RkaW47CisKK3ZhciBzdGRvdXQg
PSBDYW1sX2lvLnN0ZG91dDsKKwordmFyIHN0ZGVyciA9IENhbWxfaW8uc3RkZXJyOworCitmdW5j
dGlvbiBvcGVuX291dF9nZW4oXywgXyQxLCBfJDIpIHsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9t
bF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0aHJv
dyAiY2FtbF9zeXNfb3BlbiBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsK
KyAgICAgICAgICAgICAgfSgpKTsKK30KKworZnVuY3Rpb24gb3Blbl9vdXQobmFtZSkgeworICBy
ZXR1cm4gb3Blbl9vdXRfZ2VuKC8qIDo6ICovWworICAgICAgICAgICAgICAvKiBPcGVuX3dyb25s
eSAqLzEsCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgIC8qIE9wZW5f
Y3JlYXQgKi8zLAorICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAg
LyogT3Blbl90cnVuYyAqLzQsCisgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAg
ICAgICAgICAgICAgLyogT3Blbl90ZXh0ICovNywKKyAgICAgICAgICAgICAgICAgICAgLyogW10g
Ki8wCisgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICBdLCA0MzgsIG5hbWUpOworfQorCitmdW5jdGlvbiBvcGVuX291dF9i
aW4obmFtZSkgeworICByZXR1cm4gb3Blbl9vdXRfZ2VuKC8qIDo6ICovWworICAgICAgICAgICAg
ICAvKiBPcGVuX3dyb25seSAqLzEsCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAgICAgICAg
ICAgICAgIC8qIE9wZW5fY3JlYXQgKi8zLAorICAgICAgICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgICAgLyogT3Blbl90cnVuYyAqLzQsCisgICAgICAgICAgICAgICAgICAvKiA6
OiAqL1sKKyAgICAgICAgICAgICAgICAgICAgLyogT3Blbl9iaW5hcnkgKi82LAorICAgICAgICAg
ICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0sIDQzOCwgbmFtZSk7Cit9CisKK2Z1
bmN0aW9uIGZsdXNoX2FsbCgpIHsKKyAgdmFyIF9wYXJhbSA9IENhbWxfaW8uY2FtbF9tbF9vdXRf
Y2hhbm5lbHNfbGlzdCgvKiAoKSAqLzApOworICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIHBhcmFt
ID0gX3BhcmFtOworICAgIGlmIChwYXJhbSkgeworICAgICAgdHJ5IHsKKyAgICAgICAgQ2FtbF9p
by5jYW1sX21sX2ZsdXNoKHBhcmFtWzBdKTsKKyAgICAgIH0KKyAgICAgIGNhdGNoIChleG4pewor
ICAgICAgICAKKyAgICAgIH0KKyAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOworICAgICAgY29udGlu
dWUgOworICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qICgpICovMDsK
KyAgICB9CisgIH07Cit9CisKK2Z1bmN0aW9uIG91dHB1dF9ieXRlcyhvYywgcykgeworICByZXR1
cm4gQ2FtbF9pby5jYW1sX21sX291dHB1dChvYywgcywgMCwgcy5sZW5ndGgpOworfQorCitmdW5j
dGlvbiBvdXRwdXRfc3RyaW5nKG9jLCBzKSB7CisgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfb3V0
cHV0KG9jLCBzLCAwLCBzLmxlbmd0aCk7Cit9CisKK2Z1bmN0aW9uIG91dHB1dChvYywgcywgb2Zz
LCBsZW4pIHsKKyAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiAocy5sZW5ndGggLSBs
ZW4gfCAwKSkgeworICAgIHRocm93IFsKKyAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5pbnZhbGlkX2FyZ3VtZW50LAorICAgICAgICAgICJvdXRwdXQiCisgICAgICAgIF07CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXQob2MsIHMsIG9mcywg
bGVuKTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXRfc3Vic3RyaW5nKG9jLCBzLCBvZnMsIGxl
bikgeworICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8
IDApKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmlu
dmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgIm91dHB1dF9zdWJzdHJpbmciCisgICAgICAgIF07
CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXQob2MsIHMs
IG9mcywgbGVuKTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXRfdmFsdWUoXywgXyQxKSB7Cisg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9vdXRwdXRfdmFs
dWUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgp
OworfQorCitmdW5jdGlvbiBjbG9zZV9vdXQob2MpIHsKKyAgQ2FtbF9pby5jYW1sX21sX2ZsdXNo
KG9jKTsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21s
X2Nsb3NlX2NoYW5uZWwgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Cisg
ICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBjbG9zZV9vdXRfbm9lcnIob2MpIHsKKyAgdHJ5
IHsKKyAgICBDYW1sX2lvLmNhbWxfbWxfZmx1c2gob2MpOworICB9CisgIGNhdGNoIChleG4pewor
ICAgIAorICB9CisgIHRyeSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgdGhyb3cgImNhbWxfbWxfY2xvc2VfY2hhbm5lbCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xl
c2NyaXB0IHlldFxuIjsKKyAgICAgICAgICAgIH0oKTsKKyAgfQorICBjYXRjaCAoZXhuJDEpewor
ICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0KK30KKworZnVuY3Rpb24gb3Blbl9pbl9nZW4oXywg
XyQxLCBfJDIpIHsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX3N5c19vcGVuIG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgICB9KCkpOwor
fQorCitmdW5jdGlvbiBvcGVuX2luKG5hbWUpIHsKKyAgcmV0dXJuIG9wZW5faW5fZ2VuKC8qIDo6
ICovWworICAgICAgICAgICAgICAvKiBPcGVuX3Jkb25seSAqLzAsCisgICAgICAgICAgICAgIC8q
IDo6ICovWworICAgICAgICAgICAgICAgIC8qIE9wZW5fdGV4dCAqLzcsCisgICAgICAgICAgICAg
ICAgLyogW10gKi8wCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0sIDAsIG5hbWUpOwor
fQorCitmdW5jdGlvbiBvcGVuX2luX2JpbihuYW1lKSB7CisgIHJldHVybiBvcGVuX2luX2dlbigv
KiA6OiAqL1sKKyAgICAgICAgICAgICAgLyogT3Blbl9yZG9ubHkgKi8wLAorICAgICAgICAgICAg
ICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAvKiBPcGVuX2JpbmFyeSAqLzYsCisgICAgICAg
ICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0sIDAsIG5h
bWUpOworfQorCitmdW5jdGlvbiBpbnB1dChfLCBzLCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwg
MCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cg
WworICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisg
ICAgICAgICAgImlucHV0IgorICAgICAgICBdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0IG5vdCBpbXBs
ZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgfSgpOworICB9Cit9
CisKK2Z1bmN0aW9uIHVuc2FmZV9yZWFsbHlfaW5wdXQoXywgXyQxLCBfb2ZzLCBfbGVuKSB7Cisg
IHdoaWxlKHRydWUpIHsKKyAgICB2YXIgbGVuID0gX2xlbjsKKyAgICB2YXIgb2ZzID0gX29mczsK
KyAgICBpZiAobGVuIDw9IDApIHsKKyAgICAgIHJldHVybiAvKiAoKSAqLzA7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgdmFyIHIgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgdGhyb3cgImNh
bWxfbWxfaW5wdXQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAg
ICAgIH0oKTsKKyAgICAgIGlmIChyKSB7CisgICAgICAgIF9sZW4gPSBsZW4gLSByIHwgMDsKKyAg
ICAgICAgX29mcyA9IG9mcyArIHIgfCAwOworICAgICAgICBjb250aW51ZSA7CisgICAgICAgIAor
ICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmVuZF9vZl9maWxlOworICAgICAgfQorICAgIH0KKyAgfTsKK30KKworZnVuY3Rpb24gcmVh
bGx5X2lucHV0KGljLCBzLCBvZnMsIGxlbikgeworICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8
IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7CisgICAgdGhyb3cgWworICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCisgICAgICAgICAgInJlYWxs
eV9pbnB1dCIKKyAgICAgICAgXTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gdW5zYWZlX3Jl
YWxseV9pbnB1dChpYywgcywgb2ZzLCBsZW4pOworICB9Cit9CisKK2Z1bmN0aW9uIHJlYWxseV9p
bnB1dF9zdHJpbmcoaWMsIGxlbikgeworICB2YXIgcyA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRl
X3N0cmluZyhsZW4pOworICByZWFsbHlfaW5wdXQoaWMsIHMsIDAsIGxlbik7CisgIHJldHVybiBD
YW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocyk7Cit9CisKK2Z1bmN0aW9uIGlucHV0X2xpbmUo
Y2hhbikgeworICB2YXIgYnVpbGRfcmVzdWx0ID0gZnVuY3Rpb24gKGJ1ZiwgX3BvcywgX3BhcmFt
KSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOworICAgICAg
dmFyIHBvcyA9IF9wb3M7CisgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgdmFyIGhkID0gcGFy
YW1bMF07CisgICAgICAgIHZhciBsZW4gPSBoZC5sZW5ndGg7CisgICAgICAgIENhbWxfc3RyaW5n
LmNhbWxfYmxpdF9ieXRlcyhoZCwgMCwgYnVmLCBwb3MgLSBsZW4gfCAwLCBsZW4pOworICAgICAg
ICBfcGFyYW0gPSBwYXJhbVsxXTsKKyAgICAgICAgX3BvcyA9IHBvcyAtIGxlbiB8IDA7CisgICAg
ICAgIGNvbnRpbnVlIDsKKyAgICAgICAgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIGJ1ZjsKKyAgICAgIH0KKyAgICB9OworICB9OworICB2YXIgc2NhbiA9IGZ1bmN0aW9u
IChfYWNjdSwgX2xlbikgeworICAgIHdoaWxlKHRydWUpIHsKKyAgICAgIHZhciBsZW4gPSBfbGVu
OworICAgICAgdmFyIGFjY3UgPSBfYWNjdTsKKyAgICAgIHZhciBuID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0X3NjYW5fbGluZSBub3QgaW1wbGVtZW50ZWQg
YnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgfSgpOworICAgICAgaWYgKG4pIHsKKyAg
ICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgICAgdmFyIHJlcyA9IENhbWxfc3RyaW5nLmNhbWxf
Y3JlYXRlX3N0cmluZyhuIC0gMSB8IDApOworICAgICAgICAgIChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfaW5wdXQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2ts
ZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgICAgIH0oKSk7CisgICAgICAgICAgQ2FtbF9pby5j
YW1sX21sX2lucHV0X2NoYXIoY2hhbik7CisgICAgICAgICAgaWYgKGFjY3UpIHsKKyAgICAgICAg
ICAgIHZhciBsZW4kMSA9IChsZW4gKyBuIHwgMCkgLSAxIHwgMDsKKyAgICAgICAgICAgIHJldHVy
biBidWlsZF9yZXN1bHQoQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKGxlbiQxKSwgbGVu
JDEsIC8qIDo6ICovWworICAgICAgICAgICAgICAgICAgICAgICAgcmVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgYWNjdQorICAgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgIH0K
KyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBiZWcgPSBDYW1sX3N0cmlu
Zy5jYW1sX2NyZWF0ZV9zdHJpbmcoLW4gfCAwKTsKKyAgICAgICAgICAoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0IG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgICAgICB9KCkpOworICAgICAgICAgIF9sZW4g
PSBsZW4gLSBuIHwgMDsKKyAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWworICAgICAgICAgICAg
YmVnLAorICAgICAgICAgICAgYWNjdQorICAgICAgICAgIF07CisgICAgICAgICAgY29udGludWUg
OworICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmIChhY2N1KSB7
CisgICAgICAgIHJldHVybiBidWlsZF9yZXN1bHQoQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3Ry
aW5nKGxlbiksIGxlbiwgYWNjdSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhy
b3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZW5kX29mX2ZpbGU7CisgICAgICB9CisgICAgfTsK
KyAgfTsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzY2FuKC8qIFtdICov
MCwgMCkpOworfQorCitmdW5jdGlvbiBjbG9zZV9pbl9ub2VycigpIHsKKyAgdHJ5IHsKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9jbG9zZV9j
aGFubmVsIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAg
ICAgfSgpOworICB9CisgIGNhdGNoIChleG4peworICAgIHJldHVybiAvKiAoKSAqLzA7CisgIH0K
K30KKworZnVuY3Rpb24gcHJpbnRfY2hhcihjKSB7CisgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxf
b3V0cHV0X2NoYXIoc3Rkb3V0LCBjKTsKK30KKworZnVuY3Rpb24gcHJpbnRfc3RyaW5nKHMpIHsK
KyAgcmV0dXJuIG91dHB1dF9zdHJpbmcoc3Rkb3V0LCBzKTsKK30KKworZnVuY3Rpb24gcHJpbnRf
Ynl0ZXMocykgeworICByZXR1cm4gb3V0cHV0X2J5dGVzKHN0ZG91dCwgcyk7Cit9CisKK2Z1bmN0
aW9uIHByaW50X2ludChpKSB7CisgIHJldHVybiBvdXRwdXRfc3RyaW5nKHN0ZG91dCwgIiIgKyBp
KTsKK30KKworZnVuY3Rpb24gcHJpbnRfZmxvYXQoZikgeworICByZXR1cm4gb3V0cHV0X3N0cmlu
ZyhzdGRvdXQsIHZhbGlkX2Zsb2F0X2xleGVtKENhbWxfZm9ybWF0LmNhbWxfZm9ybWF0X2Zsb2F0
KCIlLjEyZyIsIGYpKSk7Cit9CisKK2Z1bmN0aW9uIHByaW50X2VuZGxpbmUocGFyYW0pIHsKKyAg
Y29uc29sZS5sb2cocGFyYW0pOworICByZXR1cm4gMDsKK30KKworZnVuY3Rpb24gcHJpbnRfbmV3
bGluZSgpIHsKKyAgQ2FtbF9pby5jYW1sX21sX291dHB1dF9jaGFyKHN0ZG91dCwgLyogIlxuIiAq
LzEwKTsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9mbHVzaChzdGRvdXQpOworfQorCitmdW5j
dGlvbiBwcmVycl9jaGFyKGMpIHsKKyAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXRfY2hh
cihzdGRlcnIsIGMpOworfQorCitmdW5jdGlvbiBwcmVycl9zdHJpbmcocykgeworICByZXR1cm4g
b3V0cHV0X3N0cmluZyhzdGRlcnIsIHMpOworfQorCitmdW5jdGlvbiBwcmVycl9ieXRlcyhzKSB7
CisgIHJldHVybiBvdXRwdXRfYnl0ZXMoc3RkZXJyLCBzKTsKK30KKworZnVuY3Rpb24gcHJlcnJf
aW50KGkpIHsKKyAgcmV0dXJuIG91dHB1dF9zdHJpbmcoc3RkZXJyLCAiIiArIGkpOworfQorCitm
dW5jdGlvbiBwcmVycl9mbG9hdChmKSB7CisgIHJldHVybiBvdXRwdXRfc3RyaW5nKHN0ZGVyciwg
dmFsaWRfZmxvYXRfbGV4ZW0oQ2FtbF9mb3JtYXQuY2FtbF9mb3JtYXRfZmxvYXQoIiUuMTJnIiwg
ZikpKTsKK30KKworZnVuY3Rpb24gcHJlcnJfZW5kbGluZShwYXJhbSkgeworICBjb25zb2xlLmVy
cm9yKHBhcmFtKTsKKyAgcmV0dXJuIDA7Cit9CisKK2Z1bmN0aW9uIHByZXJyX25ld2xpbmUoKSB7
CisgIENhbWxfaW8uY2FtbF9tbF9vdXRwdXRfY2hhcihzdGRlcnIsIC8qICJcbiIgKi8xMCk7Cisg
IHJldHVybiBDYW1sX2lvLmNhbWxfbWxfZmx1c2goc3RkZXJyKTsKK30KKworZnVuY3Rpb24gcmVh
ZF9saW5lKCkgeworICBDYW1sX2lvLmNhbWxfbWxfZmx1c2goc3Rkb3V0KTsKKyAgcmV0dXJuIGlu
cHV0X2xpbmUoc3RkaW4pOworfQorCitmdW5jdGlvbiByZWFkX2ludCgpIHsKKyAgcmV0dXJuIENh
bWxfZm9ybWF0LmNhbWxfaW50X29mX3N0cmluZygoQ2FtbF9pby5jYW1sX21sX2ZsdXNoKHN0ZG91
dCksIGlucHV0X2xpbmUoc3RkaW4pKSk7Cit9CisKK2Z1bmN0aW9uIHJlYWRfZmxvYXQoKSB7Cisg
IHJldHVybiBDYW1sX2Zvcm1hdC5jYW1sX2Zsb2F0X29mX3N0cmluZygoQ2FtbF9pby5jYW1sX21s
X2ZsdXNoKHN0ZG91dCksIGlucHV0X2xpbmUoc3RkaW4pKSk7Cit9CisKK2Z1bmN0aW9uIHN0cmlu
Z19vZl9mb3JtYXQocGFyYW0pIHsKKyAgcmV0dXJuIHBhcmFtWzFdOworfQorCitmdW5jdGlvbiAk
Y2FyZXQkY2FyZXQocGFyYW0sIHBhcmFtJDEpIHsKKyAgcmV0dXJuIC8qIEZvcm1hdCAqL1sKKyAg
ICAgICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdChwYXJhbVswXSwgcGFy
YW0kMVswXSksCisgICAgICAgICAgJGNhcmV0KHBhcmFtWzFdLCAkY2FyZXQoIiUsIiwgcGFyYW0k
MVsxXSkpCisgICAgICAgIF07Cit9CisKK3ZhciBleGl0X2Z1bmN0aW9uID0gW2ZsdXNoX2FsbF07
CisKK2Z1bmN0aW9uIGF0X2V4aXQoZikgeworICB2YXIgZyA9IGV4aXRfZnVuY3Rpb25bMF07Cisg
IGV4aXRfZnVuY3Rpb25bMF0gPSBmdW5jdGlvbiAoKSB7CisgICAgQ3VycnkuXzEoZiwgLyogKCkg
Ki8wKTsKKyAgICByZXR1cm4gQ3VycnkuXzEoZywgLyogKCkgKi8wKTsKKyAgfTsKKyAgcmV0dXJu
IC8qICgpICovMDsKK30KKworZnVuY3Rpb24gZG9fYXRfZXhpdCgpIHsKKyAgcmV0dXJuIEN1cnJ5
Ll8xKGV4aXRfZnVuY3Rpb25bMF0sIC8qICgpICovMCk7Cit9CisKK2Z1bmN0aW9uIGV4aXQoKSB7
CisgIGRvX2F0X2V4aXQoLyogKCkgKi8wKTsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHRocm93ICJjYW1sX3N5c19leGl0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3Jp
cHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwordmFyIG1heF9pbnQgPSAyMTQ3NDgzNjQ3
OworCit2YXIgaW5maW5pdHkgPSBJbmZpbml0eTsKKwordmFyIG5lZ19pbmZpbml0eSA9IC1JbmZp
bml0eTsKKwordmFyIG5hbiA9IE5hTjsKKwordmFyIG1heF9mbG9hdCA9IE51bWJlci5NQVhfVkFM
VUU7CisKK3ZhciBtaW5fZmxvYXQgPSBOdW1iZXIuTUlOX1ZBTFVFOworCit2YXIgZXBzaWxvbl9m
bG9hdCA9IDIuMjIwNDQ2MDQ5MjUwMzEzZS0xNjsKKwordmFyIGZsdXNoID0gQ2FtbF9pby5jYW1s
X21sX2ZsdXNoOworCit2YXIgb3V0cHV0X2NoYXIgPSBDYW1sX2lvLmNhbWxfbWxfb3V0cHV0X2No
YXI7CisKK3ZhciBvdXRwdXRfYnl0ZSA9IENhbWxfaW8uY2FtbF9tbF9vdXRwdXRfY2hhcjsKKwor
ZnVuY3Rpb24gb3V0cHV0X2JpbmFyeV9pbnQoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9vdXRwdXRfaW50IG5vdCBpbXBsZW1lbnRl
ZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24g
c2Vla19vdXQoXywgXyQxKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0
aHJvdyAiY2FtbF9tbF9zZWVrX291dCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHll
dFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIHBvc19vdXQoKSB7CisgIHJldHVy
biBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3Nfb3V0IG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKwor
ZnVuY3Rpb24gb3V0X2NoYW5uZWxfbGVuZ3RoKCkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfY2hhbm5lbF9zaXplIG5vdCBpbXBsZW1lbnRlZCBi
eSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2V0
X2JpbmFyeV9tb2RlX291dChfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHRocm93ICJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSBub3QgaW1wbGVtZW50ZWQgYnkg
YnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK3ZhciBpbnB1dF9jaGFy
ID0gQ2FtbF9pby5jYW1sX21sX2lucHV0X2NoYXI7CisKK3ZhciBpbnB1dF9ieXRlID0gQ2FtbF9p
by5jYW1sX21sX2lucHV0X2NoYXI7CisKK2Z1bmN0aW9uIGlucHV0X2JpbmFyeV9pbnQoKSB7Cisg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9pbnB1dF9p
bnQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgp
OworfQorCitmdW5jdGlvbiBpbnB1dF92YWx1ZSgpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIHRocm93ICJjYW1sX2lucHV0X3ZhbHVlIG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gc2Vla19p
bihfLCBfJDEpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJj
YW1sX21sX3NlZWtfaW4gbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Cisg
ICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBwb3NfaW4oKSB7CisgIHJldHVybiBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3NfaW4gbm90IGltcGxlbWVudGVk
IGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCitmdW5jdGlvbiBp
bl9jaGFubmVsX2xlbmd0aCgpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHRocm93ICJjYW1sX21sX2NoYW5uZWxfc2l6ZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIGNsb3NlX2luKCkgewor
ICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfY2xvc2Vf
Y2hhbm5lbCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAg
ICB9KCk7Cit9CisKK2Z1bmN0aW9uIHNldF9iaW5hcnlfbW9kZV9pbihfLCBfJDEpIHsKKyAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21sX3NldF9iaW5hcnlf
bW9kZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9
KCk7Cit9CisKK2Z1bmN0aW9uIExhcmdlRmlsZV8wMDAoXywgXyQxKSB7CisgIHJldHVybiBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9zZWVrX291dF82NCBub3QgaW1w
bGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1
bmN0aW9uIExhcmdlRmlsZV8wMDEoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB0aHJvdyAiY2FtbF9tbF9wb3Nfb3V0XzY0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVz
Y3JpcHQgeWV0XG4iOworICAgICAgICAgIH0oKTsKK30KKworZnVuY3Rpb24gTGFyZ2VGaWxlXzAw
MigpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21s
X2NoYW5uZWxfc2l6ZV82NCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsK
KyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIExhcmdlRmlsZV8wMDMoXywgXyQxKSB7Cisg
IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9zZWVrX2lu
XzY0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOworICAgICAgICAgIH0o
KTsKK30KKworZnVuY3Rpb24gTGFyZ2VGaWxlXzAwNCgpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHRocm93ICJjYW1sX21sX3Bvc19pbl82NCBub3QgaW1wbGVtZW50ZWQg
YnkgYnVja2xlc2NyaXB0IHlldFxuIjsKKyAgICAgICAgICB9KCk7Cit9CisKK2Z1bmN0aW9uIExh
cmdlRmlsZV8wMDUoKSB7CisgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJv
dyAiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlw
dCB5ZXRcbiI7CisgICAgICAgICAgfSgpOworfQorCit2YXIgTGFyZ2VGaWxlID0gWworICBMYXJn
ZUZpbGVfMDAwLAorICBMYXJnZUZpbGVfMDAxLAorICBMYXJnZUZpbGVfMDAyLAorICBMYXJnZUZp
bGVfMDAzLAorICBMYXJnZUZpbGVfMDA0LAorICBMYXJnZUZpbGVfMDA1CitdOworCitleHBvcnRz
LmludmFsaWRfYXJnICAgICAgICAgPSBpbnZhbGlkX2FyZzsKK2V4cG9ydHMuZmFpbHdpdGggICAg
ICAgICAgICA9IGZhaWx3aXRoOworZXhwb3J0cy5FeGl0ICAgICAgICAgICAgICAgID0gRXhpdDsK
K2V4cG9ydHMubWluICAgICAgICAgICAgICAgICA9IG1pbjsKK2V4cG9ydHMubWF4ICAgICAgICAg
ICAgICAgICA9IG1heDsKK2V4cG9ydHMuYWJzICAgICAgICAgICAgICAgICA9IGFiczsKK2V4cG9y
dHMubWF4X2ludCAgICAgICAgICAgICA9IG1heF9pbnQ7CitleHBvcnRzLm1pbl9pbnQgICAgICAg
ICAgICAgPSBtaW5faW50OworZXhwb3J0cy5sbm90ICAgICAgICAgICAgICAgID0gbG5vdDsKK2V4
cG9ydHMuaW5maW5pdHkgICAgICAgICAgICA9IGluZmluaXR5OworZXhwb3J0cy5uZWdfaW5maW5p
dHkgICAgICAgID0gbmVnX2luZmluaXR5OworZXhwb3J0cy5uYW4gICAgICAgICAgICAgICAgID0g
bmFuOworZXhwb3J0cy5tYXhfZmxvYXQgICAgICAgICAgID0gbWF4X2Zsb2F0OworZXhwb3J0cy5t
aW5fZmxvYXQgICAgICAgICAgID0gbWluX2Zsb2F0OworZXhwb3J0cy5lcHNpbG9uX2Zsb2F0ICAg
ICAgID0gZXBzaWxvbl9mbG9hdDsKK2V4cG9ydHMuJGNhcmV0ICAgICAgICAgICAgICA9ICRjYXJl
dDsKK2V4cG9ydHMuY2hhcl9vZl9pbnQgICAgICAgICA9IGNoYXJfb2ZfaW50OworZXhwb3J0cy5z
dHJpbmdfb2ZfYm9vbCAgICAgID0gc3RyaW5nX29mX2Jvb2w7CitleHBvcnRzLmJvb2xfb2Zfc3Ry
aW5nICAgICAgPSBib29sX29mX3N0cmluZzsKK2V4cG9ydHMuc3RyaW5nX29mX2ludCAgICAgICA9
IHN0cmluZ19vZl9pbnQ7CitleHBvcnRzLnN0cmluZ19vZl9mbG9hdCAgICAgPSBzdHJpbmdfb2Zf
ZmxvYXQ7CitleHBvcnRzLiRhdCAgICAgICAgICAgICAgICAgPSAkYXQ7CitleHBvcnRzLnN0ZGlu
ICAgICAgICAgICAgICAgPSBzdGRpbjsKK2V4cG9ydHMuc3Rkb3V0ICAgICAgICAgICAgICA9IHN0
ZG91dDsKK2V4cG9ydHMuc3RkZXJyICAgICAgICAgICAgICA9IHN0ZGVycjsKK2V4cG9ydHMucHJp
bnRfY2hhciAgICAgICAgICA9IHByaW50X2NoYXI7CitleHBvcnRzLnByaW50X3N0cmluZyAgICAg
ICAgPSBwcmludF9zdHJpbmc7CitleHBvcnRzLnByaW50X2J5dGVzICAgICAgICAgPSBwcmludF9i
eXRlczsKK2V4cG9ydHMucHJpbnRfaW50ICAgICAgICAgICA9IHByaW50X2ludDsKK2V4cG9ydHMu
cHJpbnRfZmxvYXQgICAgICAgICA9IHByaW50X2Zsb2F0OworZXhwb3J0cy5wcmludF9lbmRsaW5l
ICAgICAgID0gcHJpbnRfZW5kbGluZTsKK2V4cG9ydHMucHJpbnRfbmV3bGluZSAgICAgICA9IHBy
aW50X25ld2xpbmU7CitleHBvcnRzLnByZXJyX2NoYXIgICAgICAgICAgPSBwcmVycl9jaGFyOwor
ZXhwb3J0cy5wcmVycl9zdHJpbmcgICAgICAgID0gcHJlcnJfc3RyaW5nOworZXhwb3J0cy5wcmVy
cl9ieXRlcyAgICAgICAgID0gcHJlcnJfYnl0ZXM7CitleHBvcnRzLnByZXJyX2ludCAgICAgICAg
ICAgPSBwcmVycl9pbnQ7CitleHBvcnRzLnByZXJyX2Zsb2F0ICAgICAgICAgPSBwcmVycl9mbG9h
dDsKK2V4cG9ydHMucHJlcnJfZW5kbGluZSAgICAgICA9IHByZXJyX2VuZGxpbmU7CitleHBvcnRz
LnByZXJyX25ld2xpbmUgICAgICAgPSBwcmVycl9uZXdsaW5lOworZXhwb3J0cy5yZWFkX2xpbmUg
ICAgICAgICAgID0gcmVhZF9saW5lOworZXhwb3J0cy5yZWFkX2ludCAgICAgICAgICAgID0gcmVh
ZF9pbnQ7CitleHBvcnRzLnJlYWRfZmxvYXQgICAgICAgICAgPSByZWFkX2Zsb2F0OworZXhwb3J0
cy5vcGVuX291dCAgICAgICAgICAgID0gb3Blbl9vdXQ7CitleHBvcnRzLm9wZW5fb3V0X2JpbiAg
ICAgICAgPSBvcGVuX291dF9iaW47CitleHBvcnRzLm9wZW5fb3V0X2dlbiAgICAgICAgPSBvcGVu
X291dF9nZW47CitleHBvcnRzLmZsdXNoICAgICAgICAgICAgICAgPSBmbHVzaDsKK2V4cG9ydHMu
Zmx1c2hfYWxsICAgICAgICAgICA9IGZsdXNoX2FsbDsKK2V4cG9ydHMub3V0cHV0X2NoYXIgICAg
ICAgICA9IG91dHB1dF9jaGFyOworZXhwb3J0cy5vdXRwdXRfc3RyaW5nICAgICAgID0gb3V0cHV0
X3N0cmluZzsKK2V4cG9ydHMub3V0cHV0X2J5dGVzICAgICAgICA9IG91dHB1dF9ieXRlczsKK2V4
cG9ydHMub3V0cHV0ICAgICAgICAgICAgICA9IG91dHB1dDsKK2V4cG9ydHMub3V0cHV0X3N1YnN0
cmluZyAgICA9IG91dHB1dF9zdWJzdHJpbmc7CitleHBvcnRzLm91dHB1dF9ieXRlICAgICAgICAg
PSBvdXRwdXRfYnl0ZTsKK2V4cG9ydHMub3V0cHV0X2JpbmFyeV9pbnQgICA9IG91dHB1dF9iaW5h
cnlfaW50OworZXhwb3J0cy5vdXRwdXRfdmFsdWUgICAgICAgID0gb3V0cHV0X3ZhbHVlOworZXhw
b3J0cy5zZWVrX291dCAgICAgICAgICAgID0gc2Vla19vdXQ7CitleHBvcnRzLnBvc19vdXQgICAg
ICAgICAgICAgPSBwb3Nfb3V0OworZXhwb3J0cy5vdXRfY2hhbm5lbF9sZW5ndGggID0gb3V0X2No
YW5uZWxfbGVuZ3RoOworZXhwb3J0cy5jbG9zZV9vdXQgICAgICAgICAgID0gY2xvc2Vfb3V0Owor
ZXhwb3J0cy5jbG9zZV9vdXRfbm9lcnIgICAgID0gY2xvc2Vfb3V0X25vZXJyOworZXhwb3J0cy5z
ZXRfYmluYXJ5X21vZGVfb3V0ID0gc2V0X2JpbmFyeV9tb2RlX291dDsKK2V4cG9ydHMub3Blbl9p
biAgICAgICAgICAgICA9IG9wZW5faW47CitleHBvcnRzLm9wZW5faW5fYmluICAgICAgICAgPSBv
cGVuX2luX2JpbjsKK2V4cG9ydHMub3Blbl9pbl9nZW4gICAgICAgICA9IG9wZW5faW5fZ2VuOwor
ZXhwb3J0cy5pbnB1dF9jaGFyICAgICAgICAgID0gaW5wdXRfY2hhcjsKK2V4cG9ydHMuaW5wdXRf
bGluZSAgICAgICAgICA9IGlucHV0X2xpbmU7CitleHBvcnRzLmlucHV0ICAgICAgICAgICAgICAg
PSBpbnB1dDsKK2V4cG9ydHMucmVhbGx5X2lucHV0ICAgICAgICA9IHJlYWxseV9pbnB1dDsKK2V4
cG9ydHMucmVhbGx5X2lucHV0X3N0cmluZyA9IHJlYWxseV9pbnB1dF9zdHJpbmc7CitleHBvcnRz
LmlucHV0X2J5dGUgICAgICAgICAgPSBpbnB1dF9ieXRlOworZXhwb3J0cy5pbnB1dF9iaW5hcnlf
aW50ICAgID0gaW5wdXRfYmluYXJ5X2ludDsKK2V4cG9ydHMuaW5wdXRfdmFsdWUgICAgICAgICA9
IGlucHV0X3ZhbHVlOworZXhwb3J0cy5zZWVrX2luICAgICAgICAgICAgID0gc2Vla19pbjsKK2V4
cG9ydHMucG9zX2luICAgICAgICAgICAgICA9IHBvc19pbjsKK2V4cG9ydHMuaW5fY2hhbm5lbF9s
ZW5ndGggICA9IGluX2NoYW5uZWxfbGVuZ3RoOworZXhwb3J0cy5jbG9zZV9pbiAgICAgICAgICAg
ID0gY2xvc2VfaW47CitleHBvcnRzLmNsb3NlX2luX25vZXJyICAgICAgPSBjbG9zZV9pbl9ub2Vy
cjsKK2V4cG9ydHMuc2V0X2JpbmFyeV9tb2RlX2luICA9IHNldF9iaW5hcnlfbW9kZV9pbjsKK2V4
cG9ydHMuTGFyZ2VGaWxlICAgICAgICAgICA9IExhcmdlRmlsZTsKK2V4cG9ydHMuc3RyaW5nX29m
X2Zvcm1hdCAgICA9IHN0cmluZ19vZl9mb3JtYXQ7CitleHBvcnRzLiRjYXJldCRjYXJldCAgICAg
ICAgPSAkY2FyZXQkY2FyZXQ7CitleHBvcnRzLmV4aXQgICAgICAgICAgICAgICAgPSBleGl0Owor
ZXhwb3J0cy5hdF9leGl0ICAgICAgICAgICAgID0gYXRfZXhpdDsKK2V4cG9ydHMudmFsaWRfZmxv
YXRfbGV4ZW0gICA9IHZhbGlkX2Zsb2F0X2xleGVtOworZXhwb3J0cy51bnNhZmVfcmVhbGx5X2lu
cHV0ID0gdW5zYWZlX3JlYWxseV9pbnB1dDsKK2V4cG9ydHMuZG9fYXRfZXhpdCAgICAgICAgICA9
IGRvX2F0X2V4aXQ7CisvKiBObyBzaWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIHBlcnZh
c2l2ZXMuanMgLy8vLy8vLy8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9y
ZWdpc3RyeVsncHJpbnRmJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307
CisvLy8vLy8vLyBzdGFydCBvZiBwcmludGYuanMgLy8vLy8vLy8KKyd1c2Ugc3RyaWN0JzsKKwor
dmFyIEN1cnJ5ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKK3ZhciBCdWZmZXIg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL2J1ZmZlciIpOwordmFyIFBlcnZhc2l2ZXMgICAgICAg
ICA9IHJlcXVpcmUoIi4vcGVydmFzaXZlcyIpOwordmFyIENhbWxpbnRlcm5hbEZvcm1hdCA9IHJl
cXVpcmUoIi4vY2FtbGludGVybmFsRm9ybWF0Iik7CisKK2Z1bmN0aW9uIGtmcHJpbnRmKGssIG8s
IHBhcmFtKSB7CisgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYoZnVuY3Rp
b24gKG8sIGFjYykgeworICAgICAgICAgICAgICBDYW1saW50ZXJuYWxGb3JtYXQub3V0cHV0X2Fj
YyhvLCBhY2MpOworICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoaywgbyk7CisgICAgICAg
ICAgICB9LCBvLCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5jdGlvbiBr
YnByaW50ZihrLCBiLCBwYXJhbSkgeworICByZXR1cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2Vf
cHJpbnRmKGZ1bmN0aW9uIChiLCBhY2MpIHsKKyAgICAgICAgICAgICAgQ2FtbGludGVybmFsRm9y
bWF0LmJ1ZnB1dF9hY2MoYiwgYWNjKTsKKyAgICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGss
IGIpOworICAgICAgICAgICAgfSwgYiwgLyogRW5kX29mX2FjYyAqLzAsIHBhcmFtWzBdKTsKK30K
KworZnVuY3Rpb24gaWtmcHJpbnRmKGssIG9jLCBwYXJhbSkgeworICByZXR1cm4gQ2FtbGludGVy
bmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGZ1bmN0aW9uIChvYywgXykgeworICAgICAgICAgICAgICBy
ZXR1cm4gQ3VycnkuXzEoaywgb2MpOworICAgICAgICAgICAgfSwgb2MsIC8qIEVuZF9vZl9hY2Mg
Ki8wLCBwYXJhbVswXSk7Cit9CisKK2Z1bmN0aW9uIGZwcmludGYob2MsIGZtdCkgeworICByZXR1
cm4ga2ZwcmludGYoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8w
OworICAgICAgICAgICAgfSwgb2MsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIGJwcmludGYoYiwgZm10
KSB7CisgIHJldHVybiBrYnByaW50ZihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgIHJldHVy
biAvKiAoKSAqLzA7CisgICAgICAgICAgICB9LCBiLCBmbXQpOworfQorCitmdW5jdGlvbiBpZnBy
aW50ZihvYywgZm10KSB7CisgIHJldHVybiBpa2ZwcmludGYoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICByZXR1cm4gLyogKCkgKi8wOworICAgICAgICAgICAgfSwgb2MsIGZtdCk7Cit9CisK
K2Z1bmN0aW9uIHByaW50ZihmbXQpIHsKKyAgcmV0dXJuIGZwcmludGYoUGVydmFzaXZlcy5zdGRv
dXQsIGZtdCk7Cit9CisKK2Z1bmN0aW9uIGVwcmludGYoZm10KSB7CisgIHJldHVybiBmcHJpbnRm
KFBlcnZhc2l2ZXMuc3RkZXJyLCBmbXQpOworfQorCitmdW5jdGlvbiBrc3ByaW50ZihrLCBwYXJh
bSkgeworICB2YXIgayRwcmltZSA9IGZ1bmN0aW9uIChfLCBhY2MpIHsKKyAgICB2YXIgYnVmID0g
QnVmZmVyLmNyZWF0ZSg2NCk7CisgICAgQ2FtbGludGVybmFsRm9ybWF0LnN0cnB1dF9hY2MoYnVm
LCBhY2MpOworICAgIHJldHVybiBDdXJyeS5fMShrLCBCdWZmZXIuY29udGVudHMoYnVmKSk7Cisg
IH07CisgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYoayRwcmltZSwgLyog
KCkgKi8wLCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOworfQorCitmdW5jdGlvbiBzcHJp
bnRmKGZtdCkgeworICByZXR1cm4ga3NwcmludGYoZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAg
ICAgcmV0dXJuIHM7CisgICAgICAgICAgICB9LCBmbXQpOworfQorCit2YXIga3ByaW50ZiA9IGtz
cHJpbnRmOworCitleHBvcnRzLmZwcmludGYgICA9IGZwcmludGY7CitleHBvcnRzLnByaW50ZiAg
ICA9IHByaW50ZjsKK2V4cG9ydHMuZXByaW50ZiAgID0gZXByaW50ZjsKK2V4cG9ydHMuc3ByaW50
ZiAgID0gc3ByaW50ZjsKK2V4cG9ydHMuYnByaW50ZiAgID0gYnByaW50ZjsKK2V4cG9ydHMuaWZw
cmludGYgID0gaWZwcmludGY7CitleHBvcnRzLmtmcHJpbnRmICA9IGtmcHJpbnRmOworZXhwb3J0
cy5pa2ZwcmludGYgPSBpa2ZwcmludGY7CitleHBvcnRzLmtzcHJpbnRmICA9IGtzcHJpbnRmOwor
ZXhwb3J0cy5rYnByaW50ZiAgPSBrYnByaW50ZjsKK2V4cG9ydHMua3ByaW50ZiAgID0ga3ByaW50
ZjsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2YgcHJpbnRmLmpzIC8vLy8v
Ly8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ3ByaW50
J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFy
dCBvZiBwcmludC5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJT
SU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBM
aXN0ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBTZXhwciAg
ID0gcmVxdWlyZSgiLi9zZXhwciIpOwordmFyIEFycmFuZ2UgPSByZXF1aXJlKCIuL2FycmFuZ2Ui
KTsKKworZnVuY3Rpb24gaW5zdHIob2MsIHdpZHRoLCBlKSB7CisgIHJldHVybiBTZXhwci5vdXRw
dXQob2MsIHdpZHRoLCBBcnJhbmdlLmluc3RyKGUpKTsKK30KKworZnVuY3Rpb24gZnVuYyhvYywg
d2lkdGgsIGYpIHsKKyAgcmV0dXJuIFNleHByLm91dHB1dChvYywgd2lkdGgsIEFycmFuZ2UuZnVu
YyhmKSk7Cit9CisKK2Z1bmN0aW9uIG1vZHVsZV8ob2MsIHdpZHRoLCBtKSB7CisgIHJldHVybiBT
ZXhwci5vdXRwdXQob2MsIHdpZHRoLCBBcnJhbmdlLm1vZHVsZV8obSkpOworfQorCitmdW5jdGlv
biBzY3JpcHQob2MsIHdpZHRoLCBtb2RlLCBzKSB7CisgIHJldHVybiBMaXN0Lml0ZXIoZnVuY3Rp
b24gKHBhcmFtKSB7CisgICAgICAgICAgICAgIHJldHVybiBTZXhwci5vdXRwdXQob2MsIHdpZHRo
LCBwYXJhbSk7CisgICAgICAgICAgICB9LCBBcnJhbmdlLnNjcmlwdChtb2RlLCBzKSk7Cit9CisK
K2V4cG9ydHMuaW5zdHIgICA9IGluc3RyOworZXhwb3J0cy5mdW5jICAgID0gZnVuYzsKK2V4cG9y
dHMubW9kdWxlXyA9IG1vZHVsZV87CitleHBvcnRzLnNjcmlwdCAgPSBzY3JpcHQ7CisvKiBBcnJh
bmdlIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgcHJpbnQuanMgLy8vLy8v
Ly8KK8KgIMKgIHJldHVybiBleHBvcnRzOworwqAgfTsKKworCisgIF9yZWdpc3RyeVsnc2NyaXB0
J10gPSBmdW5jdGlvbigpIHsKK8KgIMKgIGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFy
dCBvZiBzY3JpcHQuanMgLy8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVS
U0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIg
Q2FtbF9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZXhjZXB0
aW9ucyIpOworCit2YXIgU3ludGF4ID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiU2NyaXB0LlN5
bnRheCIpOworCitleHBvcnRzLlN5bnRheCA9IFN5bnRheDsKKy8qIE5vIHNpZGUgZWZmZWN0ICov
CisvLy8vLy8vLyBlbmQgb2Ygc2NyaXB0LmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0
czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ3NleHByJ10gPSBmdW5jdGlvbigpIHsKK8KgIMKg
IGxldCBleHBvcnRzID0ge307CisvLy8vLy8vLyBzdGFydCBvZiBzZXhwci5qcyAvLy8vLy8vLwor
Ly8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQg
V0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBMaXN0ICAgICAgID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKK3ZhciBCbG9jayAgICAgID0gcmVxdWlyZSgiYnMtcGxh
dGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2YXIgQ3VycnkgICAgICA9IHJlcXVpcmUoImJzLXBsYXRm
b3JtL2xpYi9qcy9jdXJyeSIpOwordmFyICQkU3RyaW5nICAgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvc3RyaW5nIik7Cit2YXIgUGVydmFzaXZlcyA9IHJlcXVpcmUoImJzLXBsYXRmb3Jt
L2xpYi9qcy9wZXJ2YXNpdmVzIik7CisKK2Z1bmN0aW9uICRjYXJldCRwbHVzKHMsIHIpIHsKKyAg
cmV0dXJuIC8qIENvbmNhdCAqL0Jsb2NrLl9fKDEsIFsvKiA6OiAqL1sKKyAgICAgICAgICAgICAg
LyogTGVhZiAqL0Jsb2NrLl9fKDAsIFtzXSksCisgICAgICAgICAgICAgIC8qIDo6ICovWworICAg
ICAgICAgICAgICAgIHIsCisgICAgICAgICAgICAgICAgLyogW10gKi8wCisgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIF1dKTsKK30KKworZnVuY3Rpb24gJHBsdXMkY2FyZXQociwgcykgewor
ICByZXR1cm4gLyogQ29uY2F0ICovQmxvY2suX18oMSwgWy8qIDo6ICovWworICAgICAgICAgICAg
ICByLAorICAgICAgICAgICAgICAvKiA6OiAqL1sKKyAgICAgICAgICAgICAgICAvKiBMZWFmICov
QmxvY2suX18oMCwgW3NdKSwKKyAgICAgICAgICAgICAgICAvKiBbXSAqLzAKKyAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgXV0pOworfQorCitmdW5jdGlvbiBpdGVyKGYsIHBhcmFtKSB7Cisg
IGlmIChwYXJhbS50YWcpIHsKKyAgICByZXR1cm4gTGlzdC5pdGVyKGZ1bmN0aW9uIChwYXJhbSkg
eworICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGYsIHBhcmFtKTsKKyAgICAgICAgICAgICAg
fSwgcGFyYW1bMF0pOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBDdXJyeS5fMShmLCBwYXJh
bVswXSk7CisgIH0KK30KKworZnVuY3Rpb24gY29uY2F0KHBhcmFtKSB7CisgIGlmIChwYXJhbS50
YWcpIHsKKyAgICByZXR1cm4gJCRTdHJpbmcuY29uY2F0KCIiLCBMaXN0Lm1hcChjb25jYXQsIHBh
cmFtWzBdKSk7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9Cit9CisK
K2Z1bmN0aW9uIHBwKG9mZiwgd2lkdGgsIHBhcmFtKSB7CisgIGlmIChwYXJhbS50YWcpIHsKKyAg
ICB2YXIgcyA9IHBhcmFtWzBdOworICAgIHZhciBwYXJ0aWFsX2FyZyA9IG9mZiArIDIgfCAwOwor
ICAgIHZhciBtYXRjaCA9IExpc3Quc3BsaXQoTGlzdC5tYXAoZnVuY3Rpb24gKHBhcmFtKSB7Cisg
ICAgICAgICAgICAgIHJldHVybiBwcChwYXJ0aWFsX2FyZywgd2lkdGgsIHBhcmFtKTsKKyAgICAg
ICAgICAgIH0sIHBhcmFtWzFdKSk7CisgICAgdmFyIHJzID0gbWF0Y2hbMV07CisgICAgdmFyIGxl
biA9IChzLmxlbmd0aCArIExpc3QubGVuZ3RoKHJzKSB8IDApICsgTGlzdC5mb2xkX2xlZnQoZnVu
Y3Rpb24gKHByaW0sIHByaW0kMSkgeworICAgICAgICAgIHJldHVybiBwcmltICsgcHJpbSQxIHwg
MDsKKyAgICAgICAgfSwgMiwgbWF0Y2hbMF0pIHwgMDsKKyAgICB2YXIgbWF0Y2gkMTsKKyAgICBp
ZiAoKG9mZiArIGxlbiB8IDApIDw9IHdpZHRoKSB7CisgICAgICBtYXRjaCQxID0gLyogdHVwbGUg
Ki9bCisgICAgICAgICIgIiwKKyAgICAgICAgIiIKKyAgICAgIF07CisgICAgfQorICAgIGVsc2Ug
eworICAgICAgdmFyIGluZGVudCA9ICQkU3RyaW5nLm1ha2Uob2ZmLCAvKiAiICIgKi8zMik7Cisg
ICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCisgICAgICAgICJcbiAgIiArIGluZGVudCwKKyAg
ICAgICAgIlxuIiArIGluZGVudAorICAgICAgXTsKKyAgICB9CisgICAgdmFyIHNlcCA9IG1hdGNo
JDFbMF07CisgICAgcmV0dXJuIC8qIHR1cGxlICovWworICAgICAgICAgICAgbGVuLAorICAgICAg
ICAgICAgJGNhcmV0JHBsdXMoIigiLCAkY2FyZXQkcGx1cyhzLCAkcGx1cyRjYXJldCgkcGx1cyRj
YXJldCgvKiBDb25jYXQgKi9CbG9jay5fXygxLCBbTGlzdC5tYXAoZnVuY3Rpb24gKHIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRjYXJldCRwbHVzKHNl
cCwgcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBycyldKSwgbWF0
Y2gkMVsxXSksICIpIikpKQorICAgICAgICAgIF07CisgIH0KKyAgZWxzZSB7CisgICAgdmFyIHMk
MSA9IHBhcmFtWzBdOworICAgIHJldHVybiAvKiB0dXBsZSAqL1sKKyAgICAgICAgICAgIHMkMS5s
ZW5ndGgsCisgICAgICAgICAgICAvKiBMZWFmICovQmxvY2suX18oMCwgW3MkMV0pCisgICAgICAg
ICAgXTsKKyAgfQorfQorCitmdW5jdGlvbiBvdXRwdXQob2MsIHdpZHRoLCB4KSB7CisgIGl0ZXIo
ZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLm91dHB1dF9zdHJp
bmcob2MsIHBhcmFtKTsKKyAgICAgIH0sIHBwKDAsIHdpZHRoLCB4KVsxXSk7CisgIFBlcnZhc2l2
ZXMub3V0cHV0X3N0cmluZyhvYywgIlxuIik7CisgIHJldHVybiBDdXJyeS5fMShQZXJ2YXNpdmVz
LmZsdXNoLCBvYyk7Cit9CisKK2Z1bmN0aW9uIHByaW50KHBhcmFtLCBwYXJhbSQxKSB7CisgIHJl
dHVybiBvdXRwdXQoUGVydmFzaXZlcy5zdGRvdXQsIHBhcmFtLCBwYXJhbSQxKTsKK30KKworZnVu
Y3Rpb24gdG9fc3RyaW5nKHdpZHRoLCB4KSB7CisgIHJldHVybiBjb25jYXQocHAoMCwgd2lkdGgs
IHgpWzFdKSArICJcbiI7Cit9CisKK2V4cG9ydHMub3V0cHV0ICAgID0gb3V0cHV0OworZXhwb3J0
cy5wcmludCAgICAgPSBwcmludDsKK2V4cG9ydHMudG9fc3RyaW5nID0gdG9fc3RyaW5nOworLyog
Tm8gc2lkZSBlZmZlY3QgKi8KKy8vLy8vLy8vIGVuZCBvZiBzZXhwci5qcyAvLy8vLy8vLworwqAg
wqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wydzb3VyY2UnXSA9IGZ1
bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHNv
dXJjZS5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEu
NC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3ZhciBCbG9jayAg
ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2YXIgQ3VycnkgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwordmFyIFByaW50ZiAgICAg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcHJpbnRmIik7Cit2YXIgQ2FtbF9vYmogICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOwordmFyIFBlcnZhc2l2ZXMg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVydmFzaXZlcyIpOworCitmdW5jdGlvbiAk
YXQkYXQoeCwgcmVnaW9uKSB7CisgIHJldHVybiAvKiByZWNvcmQgKi9bCisgICAgICAgICAgLyog
YXQgKi9yZWdpb24sCisgICAgICAgICAgLyogaXQgKi94CisgICAgICAgIF07Cit9CisKK3ZhciBu
b19wb3MgPSAvKiByZWNvcmQgKi9bCisgIC8qIGZpbGUgKi8iIiwKKyAgLyogbGluZSAqLzAsCisg
IC8qIGNvbHVtbiAqLzAKK107CisKK3ZhciBub19yZWdpb24gPSAvKiByZWNvcmQgKi9bCisgIC8q
IGxlZnQgKi9ub19wb3MsCisgIC8qIHJpZ2h0ICovbm9fcG9zCitdOworCitmdW5jdGlvbiBzdHJp
bmdfb2ZfcG9zKHBvcykgeworICBpZiAocG9zWy8qIGxpbmUgKi8xXSA9PT0gLTEpIHsKKyAgICBy
ZXR1cm4gQ3VycnkuXzEoUHJpbnRmLnNwcmludGYoLyogRm9ybWF0ICovWworICAgICAgICAgICAg
ICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAiMHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2su
X18oNCwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF94ICovNiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCisgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
CisgICAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgICAgICIweCV4Igor
ICAgICAgICAgICAgICAgICAgXSksIHBvc1svKiBjb2x1bW4gKi8yXSk7CisgIH0KKyAgZWxzZSB7
CisgICAgcmV0dXJuIFBlcnZhc2l2ZXMuc3RyaW5nX29mX2ludChwb3NbLyogbGluZSAqLzFdKSAr
ICgiLiIgKyBQZXJ2YXNpdmVzLnN0cmluZ19vZl9pbnQocG9zWy8qIGNvbHVtbiAqLzJdICsgMSB8
IDApKTsKKyAgfQorfQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfcmVnaW9uKHIpIHsKKyAgcmV0dXJu
IHJbLyogbGVmdCAqLzBdWy8qIGZpbGUgKi8wXSArICgiOiIgKyAoc3RyaW5nX29mX3BvcyhyWy8q
IGxlZnQgKi8wXSkgKyAoCisgICAgICAgICAgICAgIENhbWxfb2JqLmNhbWxfZXF1YWwoclsvKiBy
aWdodCAqLzFdLCByWy8qIGxlZnQgKi8wXSkgPyAiIiA6ICItIiArIHN0cmluZ19vZl9wb3Moclsv
KiByaWdodCAqLzFdKQorICAgICAgICAgICAgKSkpOworfQorCitleHBvcnRzLm5vX3BvcyAgICAg
ICAgICAgPSBub19wb3M7CitleHBvcnRzLm5vX3JlZ2lvbiAgICAgICAgPSBub19yZWdpb247Citl
eHBvcnRzLnN0cmluZ19vZl9wb3MgICAgPSBzdHJpbmdfb2ZfcG9zOworZXhwb3J0cy5zdHJpbmdf
b2ZfcmVnaW9uID0gc3RyaW5nX29mX3JlZ2lvbjsKK2V4cG9ydHMuJGF0JGF0ICAgICAgICAgICA9
ICRhdCRhdDsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBlbmQgb2Ygc291cmNlLmpz
IC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlb
J3N0cmluZyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8v
Ly8gc3RhcnQgb2Ygc3RyaW5nLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisKK3ZhciBMaXN0
ICAgICAgICA9IHJlcXVpcmUoIi4vbGlzdCIpOwordmFyIEJ5dGVzICAgICAgID0gcmVxdWlyZSgi
Li9ieXRlcyIpOwordmFyIENhbWxfaW50MzIgID0gcmVxdWlyZSgiLi9jYW1sX2ludDMyIik7Cit2
YXIgQ2FtbF9zdHJpbmcgPSByZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7CisKK2Z1bmN0aW9uIG1h
a2UobiwgYykgeworICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5dGVzLm1h
a2UobiwgYykpOworfQorCitmdW5jdGlvbiBpbml0KG4sIGYpIHsKKyAgcmV0dXJuIENhbWxfc3Ry
aW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5pbml0KG4sIGYpKTsKK30KKworZnVuY3Rpb24gY29w
eShzKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMuY29weShD
YW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykpKTsKK30KKworZnVuY3Rpb24gc3ViKHMsIG9m
cywgbGVuKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMuc3Vi
KENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgb2ZzLCBsZW4pKTsKK30KKworZnVuY3Rp
b24gY29uY2F0KHNlcCwgbCkgeworICBpZiAobCkgeworICAgIHZhciBoZCA9IGxbMF07CisgICAg
dmFyIG51bSA9IFswXTsKKyAgICB2YXIgbGVuID0gWzBdOworICAgIExpc3QuaXRlcihmdW5jdGlv
biAocykgeworICAgICAgICAgIG51bVswXSA9IG51bVswXSArIDEgfCAwOworICAgICAgICAgIGxl
blswXSA9IGxlblswXSArIHMubGVuZ3RoIHwgMDsKKyAgICAgICAgICByZXR1cm4gLyogKCkgKi8w
OworICAgICAgICB9LCBsKTsKKyAgICB2YXIgciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0
cmluZyhsZW5bMF0gKyBDYW1sX2ludDMyLmltdWwoc2VwLmxlbmd0aCwgbnVtWzBdIC0gMSB8IDAp
IHwgMCk7CisgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0cmluZyhoZCwgMCwgciwgMCwgaGQu
bGVuZ3RoKTsKKyAgICB2YXIgcG9zID0gW2hkLmxlbmd0aF07CisgICAgTGlzdC5pdGVyKGZ1bmN0
aW9uIChzKSB7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0cmluZyhzZXAsIDAs
IHIsIHBvc1swXSwgc2VwLmxlbmd0aCk7CisgICAgICAgICAgcG9zWzBdID0gcG9zWzBdICsgc2Vw
Lmxlbmd0aCB8IDA7CisgICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0cmluZyhzLCAw
LCByLCBwb3NbMF0sIHMubGVuZ3RoKTsKKyAgICAgICAgICBwb3NbMF0gPSBwb3NbMF0gKyBzLmxl
bmd0aCB8IDA7CisgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKKyAgICAgICAgfSwgbFsxXSk7
CisgICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhyKTsKKyAgfQorICBlbHNl
IHsKKyAgICByZXR1cm4gIiI7CisgIH0KK30KKworZnVuY3Rpb24gaXRlcihmLCBzKSB7CisgIHJl
dHVybiBCeXRlcy5pdGVyKGYsIENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSk7Cit9CisK
K2Z1bmN0aW9uIGl0ZXJpKGYsIHMpIHsKKyAgcmV0dXJuIEJ5dGVzLml0ZXJpKGYsIENhbWxfc3Ry
aW5nLmJ5dGVzX29mX3N0cmluZyhzKSk7Cit9CisKK2Z1bmN0aW9uIG1hcChmLCBzKSB7CisgIHJl
dHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFwKGYsIENhbWxfc3RyaW5n
LmJ5dGVzX29mX3N0cmluZyhzKSkpOworfQorCitmdW5jdGlvbiBtYXBpKGYsIHMpIHsKKyAgcmV0
dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5tYXBpKGYsIENhbWxfc3RyaW5n
LmJ5dGVzX29mX3N0cmluZyhzKSkpOworfQorCitmdW5jdGlvbiBpc19zcGFjZShwYXJhbSkgewor
ICB2YXIgc3dpdGNoZXIgPSBwYXJhbSAtIDkgfCAwOworICBpZiAoc3dpdGNoZXIgPiA0IHx8IHN3
aXRjaGVyIDwgMCkgeworICAgIGlmIChzd2l0Y2hlciAhPT0gMjMpIHsKKyAgICAgIHJldHVybiAv
KiBmYWxzZSAqLzA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIC8qIHRydWUgKi8x
OworICAgIH0KKyAgfQorICBlbHNlIGlmIChzd2l0Y2hlciAhPT0gMikgeworICAgIHJldHVybiAv
KiB0cnVlICovMTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gLyogZmFsc2UgKi8wOworICB9
Cit9CisKK2Z1bmN0aW9uIHRyaW0ocykgeworICBpZiAocyA9PT0gIiIgfHwgIShpc19zcGFjZShz
LmNoYXJDb2RlQXQoMCkpIHx8IGlzX3NwYWNlKHMuY2hhckNvZGVBdChzLmxlbmd0aCAtIDEgfCAw
KSkpKSB7CisgICAgcmV0dXJuIHM7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIENhbWxfc3Ry
aW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy50cmltKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmlu
ZyhzKSkpOworICB9Cit9CisKK2Z1bmN0aW9uIGVzY2FwZWQocykgeworICB2YXIgbmVlZHNfZXNj
YXBlID0gZnVuY3Rpb24gKF9pKSB7CisgICAgd2hpbGUodHJ1ZSkgeworICAgICAgdmFyIGkgPSBf
aTsKKyAgICAgIGlmIChpID49IHMubGVuZ3RoKSB7CisgICAgICAgIHJldHVybiAvKiBmYWxzZSAq
LzA7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdmFyIG1hdGNoID0gcy5jaGFyQ29k
ZUF0KGkpOworICAgICAgICBpZiAobWF0Y2ggPj0gMzIpIHsKKyAgICAgICAgICB2YXIgc3dpdGNo
ZXIgPSBtYXRjaCAtIDM0IHwgMDsKKyAgICAgICAgICBpZiAoc3dpdGNoZXIgPiA1OCB8fCBzd2l0
Y2hlciA8IDApIHsKKyAgICAgICAgICAgIGlmIChzd2l0Y2hlciA+PSA5MykgeworICAgICAgICAg
ICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVl
IDsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAg
IGVsc2UgaWYgKHN3aXRjaGVyID4gNTcgfHwgc3dpdGNoZXIgPCAxKSB7CisgICAgICAgICAgICBy
ZXR1cm4gLyogdHJ1ZSAqLzE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgX2kgPSBpICsgMSB8IDA7CisgICAgICAgICAgICBjb250aW51ZSA7CisgICAgICAgICAg
ICAKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmV0
dXJuIC8qIHRydWUgKi8xOworICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfTsKKyAgaWYg
KG5lZWRzX2VzY2FwZSgwKSkgeworICAgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJp
bmcoQnl0ZXMuZXNjYXBlZChDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykpKTsKKyAgfQor
ICBlbHNlIHsKKyAgICByZXR1cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiBpbmRleChzLCBjKSB7
CisgIHJldHVybiBCeXRlcy5pbmRleChDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocyksIGMp
OworfQorCitmdW5jdGlvbiByaW5kZXgocywgYykgeworICByZXR1cm4gQnl0ZXMucmluZGV4KENh
bWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgYyk7Cit9CisKK2Z1bmN0aW9uIGluZGV4X2Zy
b20ocywgaSwgYykgeworICByZXR1cm4gQnl0ZXMuaW5kZXhfZnJvbShDYW1sX3N0cmluZy5ieXRl
c19vZl9zdHJpbmcocyksIGksIGMpOworfQorCitmdW5jdGlvbiByaW5kZXhfZnJvbShzLCBpLCBj
KSB7CisgIHJldHVybiBCeXRlcy5yaW5kZXhfZnJvbShDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJp
bmcocyksIGksIGMpOworfQorCitmdW5jdGlvbiBjb250YWlucyhzLCBjKSB7CisgIHJldHVybiBC
eXRlcy5jb250YWlucyhDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocyksIGMpOworfQorCitm
dW5jdGlvbiBjb250YWluc19mcm9tKHMsIGksIGMpIHsKKyAgcmV0dXJuIEJ5dGVzLmNvbnRhaW5z
X2Zyb20oQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBpLCBjKTsKK30KKworZnVuY3Rp
b24gcmNvbnRhaW5zX2Zyb20ocywgaSwgYykgeworICByZXR1cm4gQnl0ZXMucmNvbnRhaW5zX2Zy
b20oQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBpLCBjKTsKK30KKworZnVuY3Rpb24g
dXBwZXJjYXNlKHMpIHsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRl
cy51cHBlcmNhc2UoQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpKSk7Cit9CisKK2Z1bmN0
aW9uIGxvd2VyY2FzZShzKSB7CisgIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmco
Qnl0ZXMubG93ZXJjYXNlKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkpOworfQorCitm
dW5jdGlvbiBjYXBpdGFsaXplKHMpIHsKKyAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0
cmluZyhCeXRlcy5jYXBpdGFsaXplKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkpOwor
fQorCitmdW5jdGlvbiB1bmNhcGl0YWxpemUocykgeworICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0
ZXNfdG9fc3RyaW5nKEJ5dGVzLnVuY2FwaXRhbGl6ZShDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJp
bmcocykpKTsKK30KKwordmFyIGNvbXBhcmUgPSBDYW1sX3N0cmluZy5jYW1sX3N0cmluZ19jb21w
YXJlOworCit2YXIgZmlsbCA9IEJ5dGVzLmZpbGw7CisKK3ZhciBibGl0ID0gQnl0ZXMuYmxpdF9z
dHJpbmc7CisKK2V4cG9ydHMubWFrZSAgICAgICAgICAgPSBtYWtlOworZXhwb3J0cy5pbml0ICAg
ICAgICAgICA9IGluaXQ7CitleHBvcnRzLmNvcHkgICAgICAgICAgID0gY29weTsKK2V4cG9ydHMu
c3ViICAgICAgICAgICAgPSBzdWI7CitleHBvcnRzLmZpbGwgICAgICAgICAgID0gZmlsbDsKK2V4
cG9ydHMuYmxpdCAgICAgICAgICAgPSBibGl0OworZXhwb3J0cy5jb25jYXQgICAgICAgICA9IGNv
bmNhdDsKK2V4cG9ydHMuaXRlciAgICAgICAgICAgPSBpdGVyOworZXhwb3J0cy5pdGVyaSAgICAg
ICAgICA9IGl0ZXJpOworZXhwb3J0cy5tYXAgICAgICAgICAgICA9IG1hcDsKK2V4cG9ydHMubWFw
aSAgICAgICAgICAgPSBtYXBpOworZXhwb3J0cy50cmltICAgICAgICAgICA9IHRyaW07CitleHBv
cnRzLmVzY2FwZWQgICAgICAgID0gZXNjYXBlZDsKK2V4cG9ydHMuaW5kZXggICAgICAgICAgPSBp
bmRleDsKK2V4cG9ydHMucmluZGV4ICAgICAgICAgPSByaW5kZXg7CitleHBvcnRzLmluZGV4X2Zy
b20gICAgID0gaW5kZXhfZnJvbTsKK2V4cG9ydHMucmluZGV4X2Zyb20gICAgPSByaW5kZXhfZnJv
bTsKK2V4cG9ydHMuY29udGFpbnMgICAgICAgPSBjb250YWluczsKK2V4cG9ydHMuY29udGFpbnNf
ZnJvbSAgPSBjb250YWluc19mcm9tOworZXhwb3J0cy5yY29udGFpbnNfZnJvbSA9IHJjb250YWlu
c19mcm9tOworZXhwb3J0cy51cHBlcmNhc2UgICAgICA9IHVwcGVyY2FzZTsKK2V4cG9ydHMubG93
ZXJjYXNlICAgICAgPSBsb3dlcmNhc2U7CitleHBvcnRzLmNhcGl0YWxpemUgICAgID0gY2FwaXRh
bGl6ZTsKK2V4cG9ydHMudW5jYXBpdGFsaXplICAgPSB1bmNhcGl0YWxpemU7CitleHBvcnRzLmNv
bXBhcmUgICAgICAgID0gY29tcGFyZTsKKy8qIE5vIHNpZGUgZWZmZWN0ICovCisvLy8vLy8vLyBl
bmQgb2Ygc3RyaW5nLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1cm4gZXhwb3J0czsKK8KgIH07CisK
KworICBfcmVnaXN0cnlbJ3N5cyddID0gZnVuY3Rpb24oKSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9
IHt9OworLy8vLy8vLy8gc3RhcnQgb2Ygc3lzLmpzIC8vLy8vLy8vCisndXNlIHN0cmljdCc7CisK
K3ZhciBDYW1sX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0aW9ucyIpOworCit2
YXIgaXNfanMgPSAvKiB0cnVlICovMTsKKwordmFyIG1hdGNoXzAwMSA9IC8qIGFycmF5ICovW107
CisKK3ZhciBiaWdfZW5kaWFuID0gLyogZmFsc2UgKi8wOworCit2YXIgdW5peCA9IC8qIHRydWUg
Ki8xOworCit2YXIgd2luMzIgPSAvKiBmYWxzZSAqLzA7CisKK3ZhciBjeWd3aW4gPSAvKiBmYWxz
ZSAqLzA7CisKK3ZhciBtYXhfYXJyYXlfbGVuZ3RoID0gMjE0NzQ4MzY0NzsKKwordmFyIG1heF9z
dHJpbmdfbGVuZ3RoID0gMjE0NzQ4MzY0NzsKKwordmFyIGludGVyYWN0aXZlID0gWy8qIGZhbHNl
ICovMF07CisKK2Z1bmN0aW9uIHNldF9zaWduYWwoXywgXyQxKSB7CisgIHJldHVybiAvKiAoKSAq
LzA7Cit9CisKK3ZhciBCcmVhayA9IENhbWxfZXhjZXB0aW9ucy5jcmVhdGUoIlN5cy5CcmVhayIp
OworCitmdW5jdGlvbiBjYXRjaF9icmVhaygpIHsKKyAgcmV0dXJuIC8qICgpICovMDsKK30KKwor
dmFyIGFyZ3YgPSBtYXRjaF8wMDE7CisKK3ZhciBleGVjdXRhYmxlX25hbWUgPSAiY21kIjsKKwor
dmFyIG9zX3R5cGUgPSAiVW5peCI7CisKK3ZhciB3b3JkX3NpemUgPSAzMjsKKwordmFyIHNpZ2Fi
cnQgPSAtMTsKKwordmFyIHNpZ2Fscm0gPSAtMjsKKwordmFyIHNpZ2ZwZSA9IC0zOworCit2YXIg
c2lnaHVwID0gLTQ7CisKK3ZhciBzaWdpbGwgPSAtNTsKKwordmFyIHNpZ2ludCA9IC02OworCit2
YXIgc2lna2lsbCA9IC03OworCit2YXIgc2lncGlwZSA9IC04OworCit2YXIgc2lncXVpdCA9IC05
OworCit2YXIgc2lnc2VndiA9IC0xMDsKKwordmFyIHNpZ3Rlcm0gPSAtMTE7CisKK3ZhciBzaWd1
c3IxID0gLTEyOworCit2YXIgc2lndXNyMiA9IC0xMzsKKwordmFyIHNpZ2NobGQgPSAtMTQ7CisK
K3ZhciBzaWdjb250ID0gLTE1OworCit2YXIgc2lnc3RvcCA9IC0xNjsKKwordmFyIHNpZ3RzdHAg
PSAtMTc7CisKK3ZhciBzaWd0dGluID0gLTE4OworCit2YXIgc2lndHRvdSA9IC0xOTsKKwordmFy
IHNpZ3Z0YWxybSA9IC0yMDsKKwordmFyIHNpZ3Byb2YgPSAtMjE7CisKK3ZhciBvY2FtbF92ZXJz
aW9uID0gIjQuMDIuMytkZXYxLTIwMTUtMDctMTAiOworCitleHBvcnRzLmFyZ3YgICAgICAgICAg
ICAgID0gYXJndjsKK2V4cG9ydHMuZXhlY3V0YWJsZV9uYW1lICAgPSBleGVjdXRhYmxlX25hbWU7
CitleHBvcnRzLmludGVyYWN0aXZlICAgICAgID0gaW50ZXJhY3RpdmU7CitleHBvcnRzLm9zX3R5
cGUgICAgICAgICAgID0gb3NfdHlwZTsKK2V4cG9ydHMudW5peCAgICAgICAgICAgICAgPSB1bml4
OworZXhwb3J0cy53aW4zMiAgICAgICAgICAgICA9IHdpbjMyOworZXhwb3J0cy5jeWd3aW4gICAg
ICAgICAgICA9IGN5Z3dpbjsKK2V4cG9ydHMud29yZF9zaXplICAgICAgICAgPSB3b3JkX3NpemU7
CitleHBvcnRzLmJpZ19lbmRpYW4gICAgICAgID0gYmlnX2VuZGlhbjsKK2V4cG9ydHMuaXNfanMg
ICAgICAgICAgICAgPSBpc19qczsKK2V4cG9ydHMubWF4X3N0cmluZ19sZW5ndGggPSBtYXhfc3Ry
aW5nX2xlbmd0aDsKK2V4cG9ydHMubWF4X2FycmF5X2xlbmd0aCAgPSBtYXhfYXJyYXlfbGVuZ3Ro
OworZXhwb3J0cy5zZXRfc2lnbmFsICAgICAgICA9IHNldF9zaWduYWw7CitleHBvcnRzLnNpZ2Fi
cnQgICAgICAgICAgID0gc2lnYWJydDsKK2V4cG9ydHMuc2lnYWxybSAgICAgICAgICAgPSBzaWdh
bHJtOworZXhwb3J0cy5zaWdmcGUgICAgICAgICAgICA9IHNpZ2ZwZTsKK2V4cG9ydHMuc2lnaHVw
ICAgICAgICAgICAgPSBzaWdodXA7CitleHBvcnRzLnNpZ2lsbCAgICAgICAgICAgID0gc2lnaWxs
OworZXhwb3J0cy5zaWdpbnQgICAgICAgICAgICA9IHNpZ2ludDsKK2V4cG9ydHMuc2lna2lsbCAg
ICAgICAgICAgPSBzaWdraWxsOworZXhwb3J0cy5zaWdwaXBlICAgICAgICAgICA9IHNpZ3BpcGU7
CitleHBvcnRzLnNpZ3F1aXQgICAgICAgICAgID0gc2lncXVpdDsKK2V4cG9ydHMuc2lnc2VndiAg
ICAgICAgICAgPSBzaWdzZWd2OworZXhwb3J0cy5zaWd0ZXJtICAgICAgICAgICA9IHNpZ3Rlcm07
CitleHBvcnRzLnNpZ3VzcjEgICAgICAgICAgID0gc2lndXNyMTsKK2V4cG9ydHMuc2lndXNyMiAg
ICAgICAgICAgPSBzaWd1c3IyOworZXhwb3J0cy5zaWdjaGxkICAgICAgICAgICA9IHNpZ2NobGQ7
CitleHBvcnRzLnNpZ2NvbnQgICAgICAgICAgID0gc2lnY29udDsKK2V4cG9ydHMuc2lnc3RvcCAg
ICAgICAgICAgPSBzaWdzdG9wOworZXhwb3J0cy5zaWd0c3RwICAgICAgICAgICA9IHNpZ3RzdHA7
CitleHBvcnRzLnNpZ3R0aW4gICAgICAgICAgID0gc2lndHRpbjsKK2V4cG9ydHMuc2lndHRvdSAg
ICAgICAgICAgPSBzaWd0dG91OworZXhwb3J0cy5zaWd2dGFscm0gICAgICAgICA9IHNpZ3Z0YWxy
bTsKK2V4cG9ydHMuc2lncHJvZiAgICAgICAgICAgPSBzaWdwcm9mOworZXhwb3J0cy5CcmVhayAg
ICAgICAgICAgICA9IEJyZWFrOworZXhwb3J0cy5jYXRjaF9icmVhayAgICAgICA9IGNhdGNoX2Jy
ZWFrOworZXhwb3J0cy5vY2FtbF92ZXJzaW9uICAgICA9IG9jYW1sX3ZlcnNpb247CisvKiBObyBz
aWRlIGVmZmVjdCAqLworLy8vLy8vLy8gZW5kIG9mIHN5cy5qcyAvLy8vLy8vLworwqAgwqAgcmV0
dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wyd0eXBlcyddID0gZnVuY3Rpb24o
KSB7CivCoCDCoCBsZXQgZXhwb3J0cyA9IHt9OworLy8vLy8vLy8gc3RhcnQgb2YgdHlwZXMuanMg
Ly8vLy8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBM
RUFTRSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgSTMyICAgICAgPSByZXF1
aXJlKCIuL2kzMiIpOwordmFyIExpc3QgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2xpc3QiKTsKK3ZhciBDdXJyeSAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJy
eSIpOwordmFyICQkU3RyaW5nID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIp
OworCitmdW5jdGlvbiBzaXplKHBhcmFtKSB7CisgIGlmIChwYXJhbSAhPT0gMSAmJiBwYXJhbSA8
IDMpIHsKKyAgICByZXR1cm4gNDsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gODsKKyAgfQor
fQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfdmFsdWVfdHlwZShwYXJhbSkgeworICBzd2l0Y2ggKHBh
cmFtKSB7CisgICAgY2FzZSAwIDogCisgICAgICAgIHJldHVybiAiaTMyIjsKKyAgICBjYXNlIDEg
OiAKKyAgICAgICAgcmV0dXJuICJpNjQiOworICAgIGNhc2UgMiA6IAorICAgICAgICByZXR1cm4g
ImYzMiI7CisgICAgY2FzZSAzIDogCisgICAgICAgIHJldHVybiAiZjY0IjsKKyAgICAKKyAgfQor
fQorCitmdW5jdGlvbiBzdHJpbmdfb2ZfdmFsdWVfdHlwZXModHMpIHsKKyAgdmFyIGV4aXQgPSAw
OworICBpZiAodHMpIHsKKyAgICBpZiAodHNbMV0pIHsKKyAgICAgIGV4aXQgPSAxOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgIHJldHVybiBzdHJpbmdfb2ZfdmFsdWVfdHlwZSh0c1swXSk7Cisg
ICAgfQorICB9CisgIGVsc2UgeworICAgIGV4aXQgPSAxOworICB9CisgIGlmIChleGl0ID09PSAx
KSB7CisgICAgcmV0dXJuICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcChzdHJp
bmdfb2ZfdmFsdWVfdHlwZSwgdHMpKSArICJdIik7CisgIH0KKyAgCit9CisKK2Z1bmN0aW9uIHN0
cmluZ19vZl9lbGVtX3R5cGUoKSB7CisgIHJldHVybiAiZnVuY3JlZiI7Cit9CisKK2Z1bmN0aW9u
IHN0cmluZ19vZl9saW1pdHMocGFyYW0pIHsKKyAgdmFyIG1heCA9IHBhcmFtWy8qIG1heCAqLzFd
OworICByZXR1cm4gQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBwYXJhbVsvKiBtaW4gKi8wXSkg
KyAoCisgICAgICAgICAgbWF4ID8gIiAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXhb
MF0pIDogIiIKKyAgICAgICAgKTsKK30KKworZnVuY3Rpb24gc3RyaW5nX29mX21lbW9yeV90eXBl
KHBhcmFtKSB7CisgIHJldHVybiBzdHJpbmdfb2ZfbGltaXRzKHBhcmFtWzBdKTsKK30KKworZnVu
Y3Rpb24gc3RyaW5nX29mX3RhYmxlX3R5cGUocGFyYW0pIHsKKyAgcmV0dXJuIHN0cmluZ19vZl9s
aW1pdHMocGFyYW1bMF0pICsgIiBmdW5jcmVmIjsKK30KKworZnVuY3Rpb24gc3RyaW5nX29mX2ds
b2JhbF90eXBlKHBhcmFtKSB7CisgIHZhciB0ID0gcGFyYW1bMF07CisgIGlmIChwYXJhbVsxXSAh
PT0gMCkgeworICAgIHJldHVybiAiKG11dCAiICsgKHN0cmluZ19vZl92YWx1ZV90eXBlKHQpICsg
IikiKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gc3RyaW5nX29mX3ZhbHVlX3R5cGUodCk7
CisgIH0KK30KKworZnVuY3Rpb24gc3RyaW5nX29mX3N0YWNrX3R5cGUodHMpIHsKKyAgcmV0dXJu
ICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcChzdHJpbmdfb2ZfdmFsdWVfdHlw
ZSwgdHMpKSArICJdIik7Cit9CisKK2Z1bmN0aW9uIHN0cmluZ19vZl9mdW5jX3R5cGUocGFyYW0p
IHsKKyAgcmV0dXJuIHN0cmluZ19vZl9zdGFja190eXBlKHBhcmFtWzBdKSArICgiIC0+ICIgKyBz
dHJpbmdfb2Zfc3RhY2tfdHlwZShwYXJhbVsxXSkpOworfQorCitleHBvcnRzLnNpemUgICAgICAg
ICAgICAgICAgICA9IHNpemU7CitleHBvcnRzLnN0cmluZ19vZl92YWx1ZV90eXBlICA9IHN0cmlu
Z19vZl92YWx1ZV90eXBlOworZXhwb3J0cy5zdHJpbmdfb2ZfdmFsdWVfdHlwZXMgPSBzdHJpbmdf
b2ZfdmFsdWVfdHlwZXM7CitleHBvcnRzLnN0cmluZ19vZl9lbGVtX3R5cGUgICA9IHN0cmluZ19v
Zl9lbGVtX3R5cGU7CitleHBvcnRzLnN0cmluZ19vZl9saW1pdHMgICAgICA9IHN0cmluZ19vZl9s
aW1pdHM7CitleHBvcnRzLnN0cmluZ19vZl9tZW1vcnlfdHlwZSA9IHN0cmluZ19vZl9tZW1vcnlf
dHlwZTsKK2V4cG9ydHMuc3RyaW5nX29mX3RhYmxlX3R5cGUgID0gc3RyaW5nX29mX3RhYmxlX3R5
cGU7CitleHBvcnRzLnN0cmluZ19vZl9nbG9iYWxfdHlwZSA9IHN0cmluZ19vZl9nbG9iYWxfdHlw
ZTsKK2V4cG9ydHMuc3RyaW5nX29mX3N0YWNrX3R5cGUgID0gc3RyaW5nX29mX3N0YWNrX3R5cGU7
CitleHBvcnRzLnN0cmluZ19vZl9mdW5jX3R5cGUgICA9IHN0cmluZ19vZl9mdW5jX3R5cGU7Cisv
KiBJMzIgTm90IGEgcHVyZSBtb2R1bGUgKi8KKy8vLy8vLy8vIGVuZCBvZiB0eXBlcy5qcyAvLy8v
Ly8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAgX3JlZ2lzdHJ5Wyd2YWx1
ZXMnXSA9IGZ1bmN0aW9uKCkgeworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0
YXJ0IG9mIHZhbHVlcy5qcyAvLy8vLy8vLworLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBW
RVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCisndXNlIHN0cmljdCc7CisKK3Zh
ciBGMzIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2YzMiIpOwordmFyIEY2NCAgICAgICAgICAg
ICA9IHJlcXVpcmUoIi4vZjY0Iik7Cit2YXIgSTMyICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9p
MzIiKTsKK3ZhciBJNjQgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2k2NCIpOwordmFyIExpc3Qg
ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Cit2YXIgQmxv
Y2sgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Cit2YXIg
Q3VycnkgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Cit2
YXIgJCRTdHJpbmcgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIp
OwordmFyIENhbWxfZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1s
X2V4Y2VwdGlvbnMiKTsKKworZnVuY3Rpb24gdHlwZV9vZihwYXJhbSkgeworICBzd2l0Y2ggKHBh
cmFtLnRhZyB8IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIC8qIEkzMlR5cGUg
Ki8wOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gLyogSTY0VHlwZSAqLzE7CisgICAg
Y2FzZSAyIDogCisgICAgICAgIHJldHVybiAvKiBGMzJUeXBlICovMjsKKyAgICBjYXNlIDMgOiAK
KyAgICAgICAgcmV0dXJuIC8qIEY2NFR5cGUgKi8zOworICAgIAorICB9Cit9CisKK2Z1bmN0aW9u
IGRlZmF1bHRfdmFsdWUocGFyYW0pIHsKKyAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgMCA6
IAorICAgICAgICByZXR1cm4gLyogSTMyICovQmxvY2suX18oMCwgW0kzMi56ZXJvXSk7CisgICAg
Y2FzZSAxIDogCisgICAgICAgIHJldHVybiAvKiBJNjQgKi9CbG9jay5fXygxLCBbSTY0Lnplcm9d
KTsKKyAgICBjYXNlIDIgOiAKKyAgICAgICAgcmV0dXJuIC8qIEYzMiAqL0Jsb2NrLl9fKDIsIFtG
MzIuemVyb10pOworICAgIGNhc2UgMyA6IAorICAgICAgICByZXR1cm4gLyogRjY0ICovQmxvY2su
X18oMywgW0Y2NC56ZXJvXSk7CisgICAgCisgIH0KK30KKworZnVuY3Rpb24gdmFsdWVfb2ZfYm9v
bChiKSB7CisgIHJldHVybiAvKiBJMzIgKi9CbG9jay5fXygwLCBbYiA/IDEgOiAwXSk7Cit9CisK
K2Z1bmN0aW9uIHN0cmluZ19vZl92YWx1ZShwYXJhbSkgeworICBzd2l0Y2ggKHBhcmFtLnRhZyB8
IDApIHsKKyAgICBjYXNlIDAgOiAKKyAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKEkzMi50b19zdHJp
bmdfcywgcGFyYW1bMF0pOworICAgIGNhc2UgMSA6IAorICAgICAgICByZXR1cm4gQ3VycnkuXzEo
STY0LnRvX3N0cmluZ19zLCBwYXJhbVswXSk7CisgICAgY2FzZSAyIDogCisgICAgICAgIHJldHVy
biBDdXJyeS5fMShGMzIudG9fc3RyaW5nLCBwYXJhbVswXSk7CisgICAgY2FzZSAzIDogCisgICAg
ICAgIHJldHVybiBDdXJyeS5fMShGNjQudG9fc3RyaW5nLCBwYXJhbVswXSk7CisgICAgCisgIH0K
K30KKworZnVuY3Rpb24gc3RyaW5nX29mX3ZhbHVlcyh2cykgeworICB2YXIgZXhpdCA9IDA7Cisg
IGlmICh2cykgeworICAgIGlmICh2c1sxXSkgeworICAgICAgZXhpdCA9IDE7CisgICAgfQorICAg
IGVsc2UgeworICAgICAgcmV0dXJuIHN0cmluZ19vZl92YWx1ZSh2c1swXSk7CisgICAgfQorICB9
CisgIGVsc2UgeworICAgIGV4aXQgPSAxOworICB9CisgIGlmIChleGl0ID09PSAxKSB7CisgICAg
cmV0dXJuICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcChzdHJpbmdfb2ZfdmFs
dWUsIHZzKSkgKyAiXSIpOworICB9CisgIAorfQorCit2YXIgVmFsdWUgPSBDYW1sX2V4Y2VwdGlv
bnMuY3JlYXRlKCJWYWx1ZXMuVmFsdWUiKTsKKworZnVuY3Rpb24gdG9fdmFsdWUoaSkgeworICBy
ZXR1cm4gLyogSTMyICovQmxvY2suX18oMCwgW2ldKTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUo
cGFyYW0pIHsKKyAgaWYgKHBhcmFtLnRhZykgeworICAgIHRocm93IFsKKyAgICAgICAgICBWYWx1
ZSwKKyAgICAgICAgICAvKiBJMzJUeXBlICovMAorICAgICAgICBdOworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBwYXJhbVswXTsKKyAgfQorfQorCit2YXIgSTMyVmFsdWUgPSAvKiBtb2R1bGUg
Ki9bCisgIC8qIHRvX3ZhbHVlICovdG9fdmFsdWUsCisgIC8qIG9mX3ZhbHVlICovb2ZfdmFsdWUK
K107CisKK2Z1bmN0aW9uIHRvX3ZhbHVlJDEoaSkgeworICByZXR1cm4gLyogSTY0ICovQmxvY2su
X18oMSwgW2ldKTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUkMShwYXJhbSkgeworICBpZiAocGFy
YW0udGFnID09PSAxKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVsc2UgeworICAg
IHRocm93IFsKKyAgICAgICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBJNjRUeXBlICovMQorICAg
ICAgICBdOworICB9Cit9CisKK3ZhciBJNjRWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKKyAgLyogdG9f
dmFsdWUgKi90b192YWx1ZSQxLAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDEKK107CisKK2Z1
bmN0aW9uIHRvX3ZhbHVlJDIoaSkgeworICByZXR1cm4gLyogRjMyICovQmxvY2suX18oMiwgW2ld
KTsKK30KKworZnVuY3Rpb24gb2ZfdmFsdWUkMihwYXJhbSkgeworICBpZiAocGFyYW0udGFnID09
PSAyKSB7CisgICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVsc2UgeworICAgIHRocm93IFsK
KyAgICAgICAgICBWYWx1ZSwKKyAgICAgICAgICAvKiBGMzJUeXBlICovMgorICAgICAgICBdOwor
ICB9Cit9CisKK3ZhciBGMzJWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKKyAgLyogdG9fdmFsdWUgKi90
b192YWx1ZSQyLAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDIKK107CisKK2Z1bmN0aW9uIHRv
X3ZhbHVlJDMoaSkgeworICByZXR1cm4gLyogRjY0ICovQmxvY2suX18oMywgW2ldKTsKK30KKwor
ZnVuY3Rpb24gb2ZfdmFsdWUkMyhwYXJhbSkgeworICBpZiAocGFyYW0udGFnID09PSAzKSB7Cisg
ICAgcmV0dXJuIHBhcmFtWzBdOworICB9CisgIGVsc2UgeworICAgIHRocm93IFsKKyAgICAgICAg
ICBWYWx1ZSwKKyAgICAgICAgICAvKiBGNjRUeXBlICovMworICAgICAgICBdOworICB9Cit9CisK
K3ZhciBGNjRWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKKyAgLyogdG9fdmFsdWUgKi90b192YWx1ZSQz
LAorICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDMKK107CisKK2V4cG9ydHMudHlwZV9vZiAgICAg
ICAgICA9IHR5cGVfb2Y7CitleHBvcnRzLmRlZmF1bHRfdmFsdWUgICAgPSBkZWZhdWx0X3ZhbHVl
OworZXhwb3J0cy52YWx1ZV9vZl9ib29sICAgID0gdmFsdWVfb2ZfYm9vbDsKK2V4cG9ydHMuc3Ry
aW5nX29mX3ZhbHVlICA9IHN0cmluZ19vZl92YWx1ZTsKK2V4cG9ydHMuc3RyaW5nX29mX3ZhbHVl
cyA9IHN0cmluZ19vZl92YWx1ZXM7CitleHBvcnRzLlZhbHVlICAgICAgICAgICAgPSBWYWx1ZTsK
K2V4cG9ydHMuSTMyVmFsdWUgICAgICAgICA9IEkzMlZhbHVlOworZXhwb3J0cy5JNjRWYWx1ZSAg
ICAgICAgID0gSTY0VmFsdWU7CitleHBvcnRzLkYzMlZhbHVlICAgICAgICAgPSBGMzJWYWx1ZTsK
K2V4cG9ydHMuRjY0VmFsdWUgICAgICAgICA9IEY2NFZhbHVlOworLyogRjMyIE5vdCBhIHB1cmUg
bW9kdWxlICovCisvLy8vLy8vLyBlbmQgb2YgdmFsdWVzLmpzIC8vLy8vLy8vCivCoCDCoCByZXR1
cm4gZXhwb3J0czsKK8KgIH07CisKKworICBfcmVnaXN0cnlbJ3dhc20nXSA9IGZ1bmN0aW9uKCkg
eworwqAgwqAgbGV0IGV4cG9ydHMgPSB7fTsKKy8vLy8vLy8vIHN0YXJ0IG9mIHdhc20uanMgLy8v
Ly8vLy8KKy8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFT
RSBFRElUIFdJVEggQ0FSRQorJ3VzZSBzdHJpY3QnOworCit2YXIgUGFyc2UgICAgICA9IHJlcXVp
cmUoIi4vcGFyc2UiKTsKK3ZhciBTZXhwciAgICAgID0gcmVxdWlyZSgiLi9zZXhwciIpOwordmFy
IERlY29kZSAgICAgPSByZXF1aXJlKCIuL2RlY29kZSIpOwordmFyIEVuY29kZSAgICAgPSByZXF1
aXJlKCIuL2VuY29kZSIpOwordmFyIEFycmFuZ2UgICAgPSByZXF1aXJlKCIuL2FycmFuZ2UiKTsK
K3ZhciBDYW1sX2ludDY0ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfaW50NjQi
KTsKK3ZhciBQZXJ2YXNpdmVzID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3BlcnZhc2l2
ZXMiKTsKKworZnVuY3Rpb24gZW5jb2RlKHMpIHsKKyAgdmFyIGRlZiA9IFBhcnNlLnN0cmluZ190
b19tb2R1bGUocyk7CisgIHZhciBtYXRjaCA9IGRlZlsvKiBpdCAqLzFdOworICBpZiAobWF0Y2gu
dGFnKSB7CisgICAgcmV0dXJuIG1hdGNoWzFdOworICB9CisgIGVsc2UgeworICAgIHJldHVybiBF
bmNvZGUuZW5jb2RlKG1hdGNoWzBdKTsKKyAgfQorfQorCitmdW5jdGlvbiBkZWNvZGUocywgd2lk
dGgpIHsKKyAgdmFyIG0gPSBEZWNvZGUuZGVjb2RlKCIoZGVjb2RlKSIsIHMpOworICByZXR1cm4g
U2V4cHIudG9fc3RyaW5nKHdpZHRoLCBBcnJhbmdlLm1vZHVsZV8obSkpOworfQorCitmdW5jdGlv
biBmKHgpIHsKKyAgUGVydmFzaXZlcy5wcmludF9zdHJpbmcoImYiKTsKKyAgcmV0dXJuIHg7Cit9
CisKK2Z1bmN0aW9uIGcoeCkgeworICByZXR1cm4gQ2FtbF9pbnQ2NC5vcl8oeCwgKFBlcnZhc2l2
ZXMucHJpbnRfc3RyaW5nKCJmIiksIHgpKTsKK30KKworZXhwb3J0cy5lbmNvZGUgPSBlbmNvZGU7
CitleHBvcnRzLmRlY29kZSA9IGRlY29kZTsKK2V4cG9ydHMuZiAgICAgID0gZjsKK2V4cG9ydHMu
ZyAgICAgID0gZzsKKy8qIFBhcnNlIE5vdCBhIHB1cmUgbW9kdWxlICovCisvLy8vLy8vLyBlbmQg
b2Ygd2FzbS5qcyAvLy8vLy8vLworwqAgwqAgcmV0dXJuIGV4cG9ydHM7CivCoCB9OworCisKKyAg
ZnVuY3Rpb24gYmluYXJ5KGJ5dGVzKSB7CisgICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZl
cihieXRlcy5sZW5ndGgpOworICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgICB2aWV3
W2ldID0gYnl0ZXMuY2hhckNvZGVBdChpKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlcjsKKyAg
fQorICBmdW5jdGlvbiBieXRlcyhidWZmZXIpIHsKKyAgICBsZXQgc3RyaW5nID0gJyc7CisgICAg
bGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgdmlldy5sZW5ndGg7ICsraSkgeworICAgICAgc3RyaW5nICs9IFN0cmluZy5mcm9tQ29kZVBv
aW50KHZpZXdbaV0pOworICAgIH0KKyAgICByZXR1cm4gc3RyaW5nOworICB9CivCoCBsZXQgV2Fz
bSA9IHJlcXVpcmUoJ3dhc20nKTsKKyAgcmV0dXJuIHsKKyAgICBlbmNvZGUocykgeyByZXR1cm4g
YmluYXJ5KFdhc20uZW5jb2RlKHMpKSB9LAorICAgIGRlY29kZShiLCB3ID0gODApIHsgcmV0dXJu
IFdhc20uZGVjb2RlKGJ5dGVzKGIpLCB3KSB9CisgIH07Cit9KSgpOworCisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVybl9jYWxsLndhc3QgYi9K
U1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbC53YXN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJmOTFmNGRlYWM2OTY0YjhlYWFhMzIyZmQ4MjRhYTAwZDc4MTY1MTQKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2Fs
bC53YXN0CkBAIC0wLDAgKzEsMjAyIEBACis7OyBUZXN0IGByZXR1cm5fY2FsbGAgb3BlcmF0b3IK
KworKG1vZHVsZQorICA7OyBBdXhpbGlhcnkgZGVmaW5pdGlvbnMKKyAgKGZ1bmMgJGNvbnN0LWkz
MiAocmVzdWx0IGkzMikgKGkzMi5jb25zdCAweDEzMikpCisgIChmdW5jICRjb25zdC1pNjQgKHJl
c3VsdCBpNjQpIChpNjQuY29uc3QgMHgxNjQpKQorICAoZnVuYyAkY29uc3QtZjMyIChyZXN1bHQg
ZjMyKSAoZjMyLmNvbnN0IDB4ZjMyKSkKKyAgKGZ1bmMgJGNvbnN0LWY2NCAocmVzdWx0IGY2NCkg
KGY2NC5jb25zdCAweGY2NCkpCisKKyAgKGZ1bmMgJGlkLWkzMiAocGFyYW0gaTMyKSAocmVzdWx0
IGkzMikgKGxvY2FsLmdldCAwKSkKKyAgKGZ1bmMgJGlkLWk2NCAocGFyYW0gaTY0KSAocmVzdWx0
IGk2NCkgKGxvY2FsLmdldCAwKSkKKyAgKGZ1bmMgJGlkLWYzMiAocGFyYW0gZjMyKSAocmVzdWx0
IGYzMikgKGxvY2FsLmdldCAwKSkKKyAgKGZ1bmMgJGlkLWY2NCAocGFyYW0gZjY0KSAocmVzdWx0
IGY2NCkgKGxvY2FsLmdldCAwKSkKKworICAoZnVuYyAkZjMyLWkzMiAocGFyYW0gZjMyIGkzMikg
KHJlc3VsdCBpMzIpIChsb2NhbC5nZXQgMSkpCisgIChmdW5jICRpMzItaTY0IChwYXJhbSBpMzIg
aTY0KSAocmVzdWx0IGk2NCkgKGxvY2FsLmdldCAxKSkKKyAgKGZ1bmMgJGY2NC1mMzIgKHBhcmFt
IGY2NCBmMzIpIChyZXN1bHQgZjMyKSAobG9jYWwuZ2V0IDEpKQorICAoZnVuYyAkaTY0LWY2NCAo
cGFyYW0gaTY0IGY2NCkgKHJlc3VsdCBmNjQpIChsb2NhbC5nZXQgMSkpCisKKyAgOzsgVHlwaW5n
CisKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1pMzIiKSAocmVzdWx0IGkzMikgKHJldHVybl9jYWxs
ICRjb25zdC1pMzIpKQorICAoZnVuYyAoZXhwb3J0ICJ0eXBlLWk2NCIpIChyZXN1bHQgaTY0KSAo
cmV0dXJuX2NhbGwgJGNvbnN0LWk2NCkpCisgIChmdW5jIChleHBvcnQgInR5cGUtZjMyIikgKHJl
c3VsdCBmMzIpIChyZXR1cm5fY2FsbCAkY29uc3QtZjMyKSkKKyAgKGZ1bmMgKGV4cG9ydCAidHlw
ZS1mNjQiKSAocmVzdWx0IGY2NCkgKHJldHVybl9jYWxsICRjb25zdC1mNjQpKQorCisgIChmdW5j
IChleHBvcnQgInR5cGUtZmlyc3QtaTMyIikgKHJlc3VsdCBpMzIpIChyZXR1cm5fY2FsbCAkaWQt
aTMyIChpMzIuY29uc3QgMzIpKSkKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1maXJzdC1pNjQiKSAo
cmVzdWx0IGk2NCkgKHJldHVybl9jYWxsICRpZC1pNjQgKGk2NC5jb25zdCA2NCkpKQorICAoZnVu
YyAoZXhwb3J0ICJ0eXBlLWZpcnN0LWYzMiIpIChyZXN1bHQgZjMyKSAocmV0dXJuX2NhbGwgJGlk
LWYzMiAoZjMyLmNvbnN0IDEuMzIpKSkKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1maXJzdC1mNjQi
KSAocmVzdWx0IGY2NCkgKHJldHVybl9jYWxsICRpZC1mNjQgKGY2NC5jb25zdCAxLjY0KSkpCisK
KyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1zZWNvbmQtaTMyIikgKHJlc3VsdCBpMzIpCisgICAgKHJl
dHVybl9jYWxsICRmMzItaTMyIChmMzIuY29uc3QgMzIuMSkgKGkzMi5jb25zdCAzMikpCisgICkK
KyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1zZWNvbmQtaTY0IikgKHJlc3VsdCBpNjQpCisgICAgKHJl
dHVybl9jYWxsICRpMzItaTY0IChpMzIuY29uc3QgMzIpIChpNjQuY29uc3QgNjQpKQorICApCisg
IChmdW5jIChleHBvcnQgInR5cGUtc2Vjb25kLWYzMiIpIChyZXN1bHQgZjMyKQorICAgIChyZXR1
cm5fY2FsbCAkZjY0LWYzMiAoZjY0LmNvbnN0IDY0KSAoZjMyLmNvbnN0IDMyKSkKKyAgKQorICAo
ZnVuYyAoZXhwb3J0ICJ0eXBlLXNlY29uZC1mNjQiKSAocmVzdWx0IGY2NCkKKyAgICAocmV0dXJu
X2NhbGwgJGk2NC1mNjQgKGk2NC5jb25zdCA2NCkgKGY2NC5jb25zdCA2NC4xKSkKKyAgKQorCisg
IDs7IFJlY3Vyc2lvbgorCisgIChmdW5jICRmYWMtYWNjIChleHBvcnQgImZhYy1hY2MiKSAocGFy
YW0gaTY0IGk2NCkgKHJlc3VsdCBpNjQpCisgICAgKGlmIChyZXN1bHQgaTY0KSAoaTY0LmVxeiAo
bG9jYWwuZ2V0IDApKQorICAgICAgKHRoZW4gKGxvY2FsLmdldCAxKSkKKyAgICAgIChlbHNlCisg
ICAgICAgIChyZXR1cm5fY2FsbCAkZmFjLWFjYworICAgICAgICAgIChpNjQuc3ViIChsb2NhbC5n
ZXQgMCkgKGk2NC5jb25zdCAxKSkKKyAgICAgICAgICAoaTY0Lm11bCAobG9jYWwuZ2V0IDApIChs
b2NhbC5nZXQgMSkpCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKworICAoZnVuYyAk
Y291bnQgKGV4cG9ydCAiY291bnQiKSAocGFyYW0gaTY0KSAocmVzdWx0IGk2NCkKKyAgICAoaWYg
KHJlc3VsdCBpNjQpIChpNjQuZXF6IChsb2NhbC5nZXQgMCkpCisgICAgICAodGhlbiAobG9jYWwu
Z2V0IDApKQorICAgICAgKGVsc2UgKHJldHVybl9jYWxsICRjb3VudCAoaTY0LnN1YiAobG9jYWwu
Z2V0IDApIChpNjQuY29uc3QgMSkpKSkKKyAgICApCisgICkKKworICAoZnVuYyAkZXZlbiAoZXhw
b3J0ICJldmVuIikgKHBhcmFtIGk2NCkgKHJlc3VsdCBpMzIpCisgICAgKGlmIChyZXN1bHQgaTMy
KSAoaTY0LmVxeiAobG9jYWwuZ2V0IDApKQorICAgICAgKHRoZW4gKGkzMi5jb25zdCA0NCkpCisg
ICAgICAoZWxzZSAocmV0dXJuX2NhbGwgJG9kZCAoaTY0LnN1YiAobG9jYWwuZ2V0IDApIChpNjQu
Y29uc3QgMSkpKSkKKyAgICApCisgICkKKyAgKGZ1bmMgJG9kZCAoZXhwb3J0ICJvZGQiKSAocGFy
YW0gaTY0KSAocmVzdWx0IGkzMikKKyAgICAoaWYgKHJlc3VsdCBpMzIpIChpNjQuZXF6IChsb2Nh
bC5nZXQgMCkpCisgICAgICAodGhlbiAoaTMyLmNvbnN0IDk5KSkKKyAgICAgIChlbHNlIChyZXR1
cm5fY2FsbCAkZXZlbiAoaTY0LnN1YiAobG9jYWwuZ2V0IDApIChpNjQuY29uc3QgMSkpKSkKKyAg
ICApCisgICkKKykKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1pMzIiKSAoaTMyLmNv
bnN0IDB4MTMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtaTY0IikgKGk2NC5jb25z
dCAweDE2NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWYzMiIpIChmMzIuY29uc3Qg
MHhmMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1mNjQiKSAoZjY0LmNvbnN0IDB4
ZjY0KSkKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1maXJzdC1pMzIiKSAoaTMyLmNv
bnN0IDMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZmlyc3QtaTY0IikgKGk2NC5j
b25zdCA2NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWZpcnN0LWYzMiIpIChmMzIu
Y29uc3QgMS4zMikpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWZpcnN0LWY2NCIpIChm
NjQuY29uc3QgMS42NCkpCisKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtc2Vjb25kLWkz
MiIpIChpMzIuY29uc3QgMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1zZWNvbmQt
aTY0IikgKGk2NC5jb25zdCA2NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLXNlY29u
ZC1mMzIiKSAoZjMyLmNvbnN0IDMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtc2Vj
b25kLWY2NCIpIChmNjQuY29uc3QgNjQuMSkpCisKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImZh
Yy1hY2MiIChpNjQuY29uc3QgMCkgKGk2NC5jb25zdCAxKSkgKGk2NC5jb25zdCAxKSkKKyhhc3Nl
cnRfcmV0dXJuIChpbnZva2UgImZhYy1hY2MiIChpNjQuY29uc3QgMSkgKGk2NC5jb25zdCAxKSkg
KGk2NC5jb25zdCAxKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImZhYy1hY2MiIChpNjQuY29u
c3QgNSkgKGk2NC5jb25zdCAxKSkgKGk2NC5jb25zdCAxMjApKQorKGFzc2VydF9yZXR1cm4KKyAg
KGludm9rZSAiZmFjLWFjYyIgKGk2NC5jb25zdCAyNSkgKGk2NC5jb25zdCAxKSkKKyAgKGk2NC5j
b25zdCA3MDM0NTM1Mjc3NTczOTYzNzc2KQorKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJj
b3VudCIgKGk2NC5jb25zdCAwKSkgKGk2NC5jb25zdCAwKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZv
a2UgImNvdW50IiAoaTY0LmNvbnN0IDEwMDApKSAoaTY0LmNvbnN0IDApKQorKGFzc2VydF9yZXR1
cm4gKGludm9rZSAiY291bnQiIChpNjQuY29uc3QgMV8wMDBfMDAwKSkgKGk2NC5jb25zdCAwKSkK
KworKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZXZlbiIgKGk2NC5jb25zdCAwKSkgKGkzMi5jb25z
dCA0NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJldmVuIiAoaTY0LmNvbnN0IDEpKSAoaTMy
LmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4iIChpNjQuY29uc3QgMTAw
KSkgKGkzMi5jb25zdCA0NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJldmVuIiAoaTY0LmNv
bnN0IDc3KSkgKGkzMi5jb25zdCA5OSkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJldmVuIiAo
aTY0LmNvbnN0IDFfMDAwXzAwMCkpIChpMzIuY29uc3QgNDQpKQorKGFzc2VydF9yZXR1cm4gKGlu
dm9rZSAiZXZlbiIgKGk2NC5jb25zdCAxXzAwMF8wMDEpKSAoaTMyLmNvbnN0IDk5KSkKKyhhc3Nl
cnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGk2NC5jb25zdCAwKSkgKGkzMi5jb25zdCA5OSkpCiso
YXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChpNjQuY29uc3QgMSkpIChpMzIuY29uc3QgNDQp
KQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAib2RkIiAoaTY0LmNvbnN0IDIwMCkpIChpMzIuY29u
c3QgOTkpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAib2RkIiAoaTY0LmNvbnN0IDc3KSkgKGkz
Mi5jb25zdCA0NCkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChpNjQuY29uc3QgMV8w
MDBfMDAwKSkgKGkzMi5jb25zdCA5OSkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChp
NjQuY29uc3QgOTk5Xzk5OSkpIChpMzIuY29uc3QgNDQpKQorCisKKzs7IEludmFsaWQgdHlwaW5n
CisKKyhhc3NlcnRfaW52YWxpZAorICAobW9kdWxlCisgICAgKGZ1bmMgJHR5cGUtdm9pZC12cy1u
dW0gKHJlc3VsdCBpMzIpIChyZXR1cm5fY2FsbCAxKSAoaTMyLmNvbnN0IDApKQorICAgIChmdW5j
KQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUK
KyAgICAoZnVuYyAkdHlwZS1udW0tdnMtbnVtIChyZXN1bHQgaTMyKSAocmV0dXJuX2NhbGwgMSkg
KGkzMi5jb25zdCAwKSkKKyAgICAoZnVuYyAocmVzdWx0IGk2NCkgKGk2NC5jb25zdCAxKSkKKyAg
KQorICAidHlwZSBtaXNtYXRjaCIKKykKKworKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAg
ICAoZnVuYyAkYXJpdHktMC12cy0xIChyZXR1cm5fY2FsbCAxKSkKKyAgICAoZnVuYyAocGFyYW0g
aTMyKSkKKyAgKQorICAidHlwZSBtaXNtYXRjaCIKKykKKyhhc3NlcnRfaW52YWxpZAorICAobW9k
dWxlCisgICAgKGZ1bmMgJGFyaXR5LTAtdnMtMiAocmV0dXJuX2NhbGwgMSkpCisgICAgKGZ1bmMg
KHBhcmFtIGY2NCBpMzIpKQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQorCisobW9kdWxlCisg
IChmdW5jICRhcml0eS0xLXZzLTAgKGkzMi5jb25zdCAxKSAocmV0dXJuX2NhbGwgMSkpCisgIChm
dW5jKQorKQorCisobW9kdWxlCisgIChmdW5jICRhcml0eS0yLXZzLTAgKGY2NC5jb25zdCAyKSAo
aTMyLmNvbnN0IDEpIChyZXR1cm5fY2FsbCAxKSkKKyAgKGZ1bmMpCispCisKKyhhc3NlcnRfaW52
YWxpZAorICAobW9kdWxlCisgICAgKGZ1bmMgJHR5cGUtZmlyc3Qtdm9pZC12cy1udW0gKHJldHVy
bl9jYWxsIDEgKG5vcCkgKGkzMi5jb25zdCAxKSkpCisgICAgKGZ1bmMgKHBhcmFtIGkzMiBpMzIp
KQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUK
KyAgICAoZnVuYyAkdHlwZS1zZWNvbmQtdm9pZC12cy1udW0gKHJldHVybl9jYWxsIDEgKGkzMi5j
b25zdCAxKSAobm9wKSkpCisgICAgKGZ1bmMgKHBhcmFtIGkzMiBpMzIpKQorICApCisgICJ0eXBl
IG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAoZnVuYyAkdHlw
ZS1maXJzdC1udW0tdnMtbnVtIChyZXR1cm5fY2FsbCAxIChmNjQuY29uc3QgMSkgKGkzMi5jb25z
dCAxKSkpCisgICAgKGZ1bmMgKHBhcmFtIGkzMiBmNjQpKQorICApCisgICJ0eXBlIG1pc21hdGNo
IgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAoZnVuYyAkdHlwZS1zZWNvbmQt
bnVtLXZzLW51bSAocmV0dXJuX2NhbGwgMSAoaTMyLmNvbnN0IDEpIChmNjQuY29uc3QgMSkpKQor
ICAgIChmdW5jIChwYXJhbSBmNjQgaTMyKSkKKyAgKQorICAidHlwZSBtaXNtYXRjaCIKKykKKwor
Cis7OyBVbmJvdW5kIGZ1bmN0aW9uCisKKyhhc3NlcnRfaW52YWxpZAorICAobW9kdWxlIChmdW5j
ICR1bmJvdW5kLWZ1bmMgKHJldHVybl9jYWxsIDEpKSkKKyAgInVua25vd24gZnVuY3Rpb24iCisp
CisoYXNzZXJ0X2ludmFsaWQKKyAgKG1vZHVsZSAoZnVuYyAkbGFyZ2UtZnVuYyAocmV0dXJuX2Nh
bGwgMTAxMjMyMTMwMCkpKQorICAidW5rbm93biBmdW5jdGlvbiIKKykKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3JldHVybl9jYWxsLndhc3QuanMgYi9K
U1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbC53YXN0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkzZmRiM2ZjMGY0NzAwYzQ3YzJlYmY2NmY2ZTViZTFkNWIwY2M4MTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5f
Y2FsbC53YXN0LmpzCkBAIC0wLDAgKzEsMTMyIEBACisKKy8vIHJldHVybl9jYWxsLndhc3Q6Mwor
bGV0ICQxID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
YzhceDgwXHg4MFx4ODBceDAwXHgwZVx4NjBceDAwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHg2
MFx4MDBceDAxXHg3ZFx4NjBceDAwXHgwMVx4N2NceDYwXHgwMVx4N2ZceDAxXHg3Zlx4NjBceDAx
XHg3ZVx4MDFceDdlXHg2MFx4MDFceDdkXHgwMVx4N2RceDYwXHgwMVx4N2NceDAxXHg3Y1x4NjBc
eDAyXHg3ZFx4N2ZceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4NjBceDAyXHg3Y1x4
N2RceDAxXHg3ZFx4NjBceDAyXHg3ZVx4N2NceDAxXHg3Y1x4NjBceDAyXHg3ZVx4N2VceDAxXHg3
ZVx4NjBceDAxXHg3ZVx4MDFceDdmXHgwM1x4OWRceDgwXHg4MFx4ODBceDAwXHgxY1x4MDBceDAx
XHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4MDlceDBhXHgwYlx4MDBceDAxXHgwMlx4MDNc
eDAwXHgwMVx4MDJceDAzXHgwMFx4MDFceDAyXHgwM1x4MGNceDA1XHgwZFx4MGRceDA3XHhkOFx4
ODFceDgwXHg4MFx4MDBceDEwXHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2OVx4MzNceDMyXHgw
MFx4MGNceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY5XHgzNlx4MzRceDAwXHgwZFx4MDhceDc0
XHg3OVx4NzBceDY1XHgyZFx4NjZceDMzXHgzMlx4MDBceDBlXHgwOFx4NzRceDc5XHg3MFx4NjVc
eDJkXHg2Nlx4MzZceDM0XHgwMFx4MGZceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4
NzJceDczXHg3NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxMFx4MGVceDc0XHg3OVx4NzBceDY1XHgy
ZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjlceDM2XHgzNFx4MDBceDExXHgwZVx4NzRceDc5
XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MTJc
eDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4MmRceDY2XHgzNlx4
MzRceDAwXHgxM1x4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2
NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxNFx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1
XHg2M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzNlx4MzRceDAwXHgxNVx4MGZceDc0XHg3OVx4NzBc
eDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzM1x4MzJceDAwXHgxNlx4
MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgz
Nlx4MzRceDAwXHgxN1x4MDdceDY2XHg2MVx4NjNceDJkXHg2MVx4NjNceDYzXHgwMFx4MThceDA1
XHg2M1x4NmZceDc1XHg2ZVx4NzRceDAwXHgxOVx4MDRceDY1XHg3Nlx4NjVceDZlXHgwMFx4MWFc
eDAzXHg2Zlx4NjRceDY0XHgwMFx4MWJceDBhXHg4MFx4ODNceDgwXHg4MFx4MDBceDFjXHg4NVx4
ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4YjJceDAyXHgwYlx4ODVceDgwXHg4MFx4ODBceDAwXHgw
MFx4NDJceGU0XHgwMlx4MGJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDQzXHgwMFx4MjBceDcz
XHg0NVx4MGJceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBc
eGM4XHhhZVx4NDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4
ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgy
MFx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDBiXHg4NFx4ODBceDgw
XHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFc
eDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4
MDBceDAwXHgyMFx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDBceDBiXHg4
NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAw
XHgxMlx4MDJceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDNceDBiXHg4Nlx4ODBc
eDgwXHg4MFx4MDBceDAwXHg0MVx4MjBceDEyXHgwNFx4MGJceDg3XHg4MFx4ODBceDgwXHgwMFx4
MDBceDQyXHhjMFx4MDBceDEyXHgwNVx4MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDQzXHhj
M1x4ZjVceGE4XHgzZlx4MTJceDA2XHgwYlx4OGRceDgwXHg4MFx4ODBceDAwXHgwMFx4NDRceDNk
XHgwYVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4MTJceDA3XHgwYlx4OGJceDgwXHg4MFx4ODBc
eDAwXHgwMFx4NDNceDY2XHg2Nlx4MDBceDQyXHg0MVx4MjBceDEyXHgwOFx4MGJceDg5XHg4MFx4
ODBceDgwXHgwMFx4MDBceDQxXHgyMFx4NDJceGMwXHgwMFx4MTJceDA5XHgwYlx4OTJceDgwXHg4
MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDUwXHg0MFx4NDNceDAw
XHgwMFx4MDBceDQyXHgxMlx4MGFceDBiXHg5MFx4ODBceDgwXHg4MFx4MDBceDAwXHg0Mlx4YzBc
eDAwXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBceDQwXHgxMlx4MGJceDBiXHg5N1x4
ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDUwXHgwNFx4N2VceDIwXHgwMVx4MDVceDIwXHgw
MFx4NDJceDAxXHg3ZFx4MjBceDAwXHgyMFx4MDFceDdlXHgxMlx4MThceDBiXHgwYlx4OTJceDgw
XHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg1MFx4MDRceDdlXHgyMFx4MDBceDA1XHgyMFx4MDBc
eDQyXHgwMVx4N2RceDEyXHgxOVx4MGJceDBiXHg5Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4
MDBceDUwXHgwNFx4N2ZceDQxXHgyY1x4MDVceDIwXHgwMFx4NDJceDAxXHg3ZFx4MTJceDFiXHgw
Ylx4MGJceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NTBceDA0XHg3Zlx4NDFceGUz
XHgwMFx4MDVceDIwXHgwMFx4NDJceDAxXHg3ZFx4MTJceDFhXHgwYlx4MGIiKTsKKworLy8gcmV0
dXJuX2NhbGwud2FzdDo4MAorYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1pMzIi
LCBbXSksIDMwNik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODEKK3J1bigoKSA9PiBjYWxsKGlu
c3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBc
eDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4
MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgw
Mlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4ODRceDgxXHg4MFx4ODBceDAw
XHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRc
eDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4
MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJc
eDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4
ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OThceDgwXHg4
MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBceDAx
XHg0Mlx4ZTRceDAyXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0
cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0
eXBlLWk2NCIsIFtdKSwgaW50NjQoIjM1NiIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjgyCity
dW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4
NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2
Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZFx4MDJceDg0
XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NzRc
eDc5XHg3MFx4NjVceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgw
Nlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAy
XHg0MFx4MTBceDAwXHhiY1x4NDNceDAwXHgyMFx4NzNceDQ1XHhiY1x4NDZceDQ1XHgwZFx4MDBc
eDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRf
cmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWYzMiIsIFtdKSwgMzg5MC4pCisKKy8vIHJldHVy
bl9jYWxsLndhc3Q6ODMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZk
XHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBc
eDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4
N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgw
MFx4MDFceDdjXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1
XHg2Y1x4NjVceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4
NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4
MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4MDBceDAwXHgwMFx4MDBceDAw
XHhjOFx4YWVceDQwXHhiZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0
cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0
eXBlLWY2NCIsIFtdKSwgMzk0MC4pCisKKy8vIHJldHVybl9jYWxsLndhc3Q6ODUKK2Fzc2VydF9y
ZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtZmlyc3QtaTMyIiwgW10pLCAzMik7CisKKy8vIHJl
dHVybl9jYWxsLndhc3Q6ODYKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4
MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgw
MVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYw
XHgwMFx4MDFceDdlXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4
MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgw
MFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4
N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OThceDgw
XHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBc
eDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhw
b3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEs
ICJ0eXBlLWZpcnN0LWk2NCIsIFtdKSwgaW50NjQoIjY0IikpCisKKy8vIHJldHVybl9jYWxsLndh
c3Q6ODcKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4
N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgw
Mlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdk
XHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4MmRceDY2XHgzM1x4
MzJceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4
MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFceDgwXHg4MFx4ODBceDAw
XHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBceGJjXHg0M1x4YzNc
eGY1XHhhOFx4M2ZceGJjXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5
cGUtZmlyc3QtZjMyIiwgW10pLCAxLjMyMDAwMDA1MjQ1KQorCisvLyByZXR1cm5fY2FsbC53YXN0
Ojg4CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdm
XHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJc
eDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3Y1x4
MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgw
ZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2Nlx4MzZceDM0
XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAw
XHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4ODBceDgwXHgwMFx4
MDFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiZFx4NDRceDNkXHgw
YVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4YmRceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAw
XHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAidHlwZS1maXJzdC1mNjQiLCBbXSksIDEuNjQpCisKKy8vIHJldHVybl9jYWxs
Lndhc3Q6OTAKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWkzMiIs
IFtdKSwgMzIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjkxCitydW4oKCkgPT4gY2FsbChpbnN0
YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4
MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAx
XHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJc
eDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZVx4MDJceDhiXHg4MVx4ODBceDgwXHgwMFx4
MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3
M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjlceDM2XHgzNFx4MDBceDA2XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4
NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1
XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3
MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgw
XHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVc
eDZlXHgwMFx4MDZceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5Mlx4ODBceDgwXHg4MFx4
MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4MDFceDQyXHhjMFx4MDBceDAxXHg1MVx4NDVceDBkXHgw
MFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2Vy
dF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWk2NCIsIFtdKSwgaW50NjQoIjY0
IikpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTIKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4
MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2
MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcw
XHgwMVx4N2ZceDYwXHgwMFx4MDFceDdkXHgwMlx4OGJceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZc
eDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBmXHg3NFx4NzlceDcwXHg2NVx4MmRceDczXHg2NVx4
NjNceDZmXHg2ZVx4NjRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAw
XHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBc
eDAyXHg0MFx4MTBceDAwXHhiY1x4NDNceDAwXHgwMFx4MDBceDQyXHhiY1x4NDZceDQ1XHgwZFx4
MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3Nl
cnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1mMzIiLCBbXSksIDMyLikKKwor
Ly8gcmV0dXJuX2NhbGwud2FzdDo5MworcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBc
eDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4
NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3
Zlx4NjBceDAwXHgwMVx4N2NceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZm
XHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZc
eDZlXHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
MVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4
NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2
NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVc
eDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgw
YVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQw
XHgxMFx4MDBceGJkXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBceDQwXHhiZFx4NTFc
eDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1mNjQiLCBbXSks
IDY0LjEpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTUKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgw
MFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdm
XHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4
MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2
MVx4NjNceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDAwXHg0Mlx4
MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgw
YiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBj
YWxsKCQxLCAiZmFjLWFjYyIsIFtpbnQ2NCgiMCIpLCBpbnQ2NCgiMSIpXSksIGludDY0KCIxIikp
CisKKy8vIHJldHVybl9jYWxsLndhc3Q6OTYKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4MDdc
eDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4
MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgw
MVx4N2ZceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2MVx4NjNc
eDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZc
eDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4ODBceDgwXHgw
MFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDAxXHg0Mlx4MDFceDEw
XHgwMFx4MDFceDQyXHgwMVx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4
cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAiZmFjLWFjYyIsIFtpbnQ2NCgiMSIpLCBpbnQ2NCgiMSIpXSksIGludDY0KCIxIikpCisKKy8v
IHJldHVybl9jYWxsLndhc3Q6OTcKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgw
MFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcw
XHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2Zc
eDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4
NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2MVx4NjNceDYzXHgw
MFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgw
NVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDljXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDA1XHg0Mlx4MDFceDEwXHgwMFx4
MDFceDQyXHhmOFx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBv
cnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwg
ImZhYy1hY2MiLCBbaW50NjQoIjUiKSwgaW50NjQoIjEiKV0pLCBpbnQ2NCgiMTIwIikpCisKKy8v
IHJldHVybl9jYWxsLndhc3Q6OTgKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgw
MFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcw
XHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2Zc
eDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAyXHg4M1x4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4
NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDdceDY2XHg2MVx4NjNceDJkXHg2MVx4NjNceDYzXHgw
MFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgw
NVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDllXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDE5XHg0Mlx4MDFceDEwXHgwMFx4
MDFceDQyXHg4MFx4ODBceDgwXHhkZVx4ODdceDkyXHhlY1x4Y2ZceGUxXHgwMFx4MDFceDUxXHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZmFjLWFjYyIsIFtpbnQ2NCgiMjUiKSwg
aW50NjQoIjEiKV0pLCBpbnQ2NCgiN18wMzRfNTM1XzI3N181NzNfOTYzXzc3NiIpKQorCisvLyBy
ZXR1cm5fY2FsbC53YXN0OjEwMworcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAw
XHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBc
eDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4
NjBceDAxXHg3ZVx4MDFceDdlXHgwMlx4ODFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2
Zlx4NjRceDc1XHg2Y1x4NjVceDA1XHg2M1x4NmZceDc1XHg2ZVx4NzRceDAwXHgwNlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
Mlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJc
eDc1XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4
ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDBceDEwXHgwMFx4MDFceDQyXHgwMFx4MDFceDUxXHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiY291bnQiLCBbaW50NjQoIjAiKV0pLCBp
bnQ2NCgiMCIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwNAorcnVuKCgpID0+IGNhbGwoaW5z
dGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4
ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgw
MVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAy
XHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHgwMlx4ODFceDgxXHg4MFx4ODBc
eDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA1XHg2M1x4NmZceDc1XHg2ZVx4
NzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4
MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFceDgwXHg4MFx4ODBceDAw
XHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4ZThceDA3XHgxMFx4MDBc
eDAxXHg0Mlx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImNv
dW50IiwgW2ludDY0KCIxXzAwMCIpXSksIGludDY0KCIwIikpCisKKy8vIHJldHVybl9jYWxsLndh
c3Q6MTA1CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAw
XHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFc
eDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4
MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgw
MVx4N2VceDAyXHg4MVx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZj
XHg2NVx4MDVceDYzXHg2Zlx4NzVceDZlXHg3NFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4
MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
NFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBc
eDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4
MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgw
Mlx4NDBceDQyXHhjMFx4ODRceDNkXHgxMFx4MDBceDAxXHg0Mlx4MDBceDAxXHg1MVx4NDVceDBk
XHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFz
c2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImNvdW50IiwgW2ludDY0KCIxXzAwMF8wMDAiKV0p
LCBpbnQ2NCgiMCIpKQorCisvLyByZXR1cm5fY2FsbC53YXN0OjEwNworcnVuKCgpID0+IGNhbGwo
aW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4
MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZm
XHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBc
eDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ODBceDgxXHg4MFx4
ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2NVx4NzZceDY1XHg2
ZVx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
YVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgw
MFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgw
XHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OVx4ODBceDgwXHg4MFx4MDBc
eDAxXHg5M1x4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwMFx4MTBceDAwXHgwMVx4
NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkp
LCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwg
W2ludDY0KCIwIildKSwgNDQpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTA4CitydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHg4MFx4ODFc
eDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDRceDY1XHg3Nlx4
NjVceDZlXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgw
XHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDAxXHgxMFx4MDBc
eDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhw
b3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEs
ICJldmVuIiwgW2ludDY0KCIxIildKSwgOTkpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTA5City
dW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4
NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2
Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAy
XHg4MFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDRc
eDY1XHg3Nlx4NjVceDZlXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4
ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4
MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceGU0
XHgwMFx4MTBceDAwXHgwMVx4NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBc
eDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+
IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxMDAiKV0pLCA0NCkKKworLy8gcmV0dXJuX2NhbGwu
d2FzdDoxMTAKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgw
MVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYw
XHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2Vc
eDAxXHg3Zlx4MDJceDgwXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4
NmNceDY1XHgwNFx4NjVceDc2XHg2NVx4NmVceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHg0Mlx4Y2RceDAwXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4
MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3Nl
cnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCI3NyIpXSksIDk5KQorCisv
LyByZXR1cm5fY2FsbC53YXN0OjExMQorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBc
eDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4
NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3
Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ODBceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZk
XHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBceDA2XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAy
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1
XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBc
eDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4
NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4
MFx4MDBceDAwXHgwMlx4NDBceDQyXHhjMFx4ODRceDNkXHgxMFx4MDBceDAxXHg0MVx4MmNceDAx
XHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwg
W10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV2ZW4iLCBbaW50NjQoIjFf
MDAwXzAwMCIpXSksIDQ0KQorCisvLyByZXR1cm5fY2FsbC53YXN0OjExMgorcnVuKCgpID0+IGNh
bGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgw
XHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFc
eDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4
NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ODBceDgxXHg4
MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2NVx4NzZceDY1
XHg2ZVx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2
XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Y1x4ODBceDgwXHg4MFx4
MDBceDAxXHg5Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhjMVx4ODRceDNkXHgx
MFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBi
IiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNh
bGwoJDEsICJldmVuIiwgW2ludDY0KCIxXzAwMF8wMDEiKV0pLCA5OSkKKworLy8gcmV0dXJuX2Nh
bGwud2FzdDoxMTMKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYw
XHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2Zc
eDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4
N2VceDAxXHg3Zlx4MDJceGZmXHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3
NVx4NmNceDY1XHgwM1x4NmZceDY0XHg2NFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNc
eDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3
NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAx
XHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZc
eDBhXHg5YVx4ODBceDgwXHg4MFx4MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4
NDBceDQyXHgwMFx4MTBceDAwXHgwMVx4NDFceGUzXHgwMFx4MDFceDQ2XHg0NVx4MGRceDAwXHgw
Zlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2ludDY0KCIwIildKSwgOTkpCisKKy8vIHJldHVy
bl9jYWxsLndhc3Q6MTE0CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAw
XHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFc
eDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4
MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2
NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQxXHgyY1x4MDFceDQ2XHg0NVx4MGRceDAwXHgw
Zlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2ludDY0KCIxIildKSwgNDQpCisKKy8vIHJldHVy
bl9jYWxsLndhc3Q6MTE1CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAw
XHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFc
eDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4
MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2
NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHg0Mlx4YzhceDAxXHgxMFx4MDBceDAxXHg0MVx4ZTNceDAwXHgwMVx4NDZceDQ1XHgw
ZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBh
c3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbaW50NjQoIjIwMCIpXSksIDk5KQor
CisvLyByZXR1cm5fY2FsbC53YXN0OjExNgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4
NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgw
MVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAx
XHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZc
eDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDAzXHg2Zlx4NjRceDY0XHgwMFx4MDZceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVc
eDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3
NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgw
XHgwMFx4MDBceDAyXHg0MFx4NDJceGNkXHgwMFx4MTBceDAwXHgwMVx4NDFceDJjXHgwMVx4NDZc
eDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbaW50NjQoIjc3IildKSwg
NDQpCisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTE3CitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBc
eDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4
NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3
MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4
NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMVx4OTZceDgwXHg4
MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4YzBceDg0XHgzZFx4MTBceDAwXHgwMVx4NDFceGUz
XHgwMFx4MDFceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwg
ICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgW2lu
dDY0KCIxXzAwMF8wMDAiKV0pLCA5OSkKKworLy8gcmV0dXJuX2NhbGwud2FzdDoxMTgKK3J1bigo
KSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4
NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgw
MVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3Zlx4MDJceGZm
XHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NmZc
eDY0XHg2NFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4
MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhiZlx4ODRceDNk
XHgxMFx4MDBceDAxXHg0MVx4MmNceDAxXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIi
LCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2Fs
bCgkMSwgIm9kZCIsIFtpbnQ2NCgiOTk5Xzk5OSIpXSksIDQ0KQorCisvLyByZXR1cm5fY2FsbC53
YXN0OjEyMworYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgwMVx4N2ZceDYwXHgwMFx4MDBc
eDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5M1x4ODBceDgwXHg4MFx4
MDBceDAyXHg4Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDQxXHgwMFx4MGJceDgyXHg4
MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTMwCithc3Nl
cnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBc
eDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2VceDAzXHg4M1x4
ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5NVx4ODBceDgwXHg4MFx4MDBceDAyXHg4
Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDQxXHgwMFx4MGJceDg0XHg4MFx4ODBceDgw
XHgwMFx4MDBceDQyXHgwMVx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDoxMzgKK2Fzc2Vy
dF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg4XHg4MFx4
ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAwXHgwM1x4ODNceDgwXHg4
MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OTFceDgwXHg4MFx4ODBceDAwXHgwMlx4ODRceDgw
XHg4MFx4ODBceDAwXHgwMFx4MTJceDAxXHgwYlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIi
KTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDoxNDUKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgw
MFx4MDBceDYwXHgwMlx4N2NceDdmXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAw
XHgwMVx4MGFceDkxXHg4MFx4ODBceDgwXHgwMFx4MDJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBc
eDEyXHgwMVx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9j
YWxsLndhc3Q6MTUzCitsZXQgJDIgPSBpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAw
XHgwMFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAwXHgwM1x4ODNc
eDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAwXHgwYVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMlx4
ODZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4
MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE1OAorbGV0ICQzID0gaW5z
dGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4
ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgw
MFx4MGFceDljXHg4MFx4ODBceDgwXHgwMFx4MDJceDhmXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0
XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDBceDQxXHgwMVx4MTJceDAxXHgwYlx4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGwud2FzdDoxNjMKK2Fz
c2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4
MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMlx4N2ZceDdmXHgwMFx4MDNceDgz
XHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgwMVx4MGFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDJc
eDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDAxXHg0MVx4MDFceDEyXHgwMVx4MGJceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsLndhc3Q6MTcwCithc3NlcnRf
aW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBceDgw
XHg4MFx4MDBceDAyXHg2MFx4MDBceDAwXHg2MFx4MDJceDdmXHg3Zlx4MDBceDAzXHg4M1x4ODBc
eDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5NFx4ODBceDgwXHg4MFx4MDBceDAyXHg4N1x4
ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDFceDAxXHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4
MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE3NworYXNzZXJ0X2ludmFs
aWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBc
eDAwXHgwMlx4NjBceDAwXHgwMFx4NjBceDAyXHg3Zlx4N2NceDAwXHgwM1x4ODNceDgwXHg4MFx4
ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMlx4OGZceDgwXHg4
MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceGYwXHgzZlx4NDFceDAx
XHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5f
Y2FsbC53YXN0OjE4NAorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4
MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgwMFx4NjBceDAyXHg3
Y1x4N2ZceDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwYVx4OWNceDgw
XHg4MFx4ODBceDAwXHgwMlx4OGZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHg0NFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMFx4ZjBceDNmXHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4MFx4
MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbC53YXN0OjE5NQorYXNzZXJ0X2ludmFsaWQo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAw
XHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4OGFc
eDgwXHg4MFx4ODBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDAxXHgwYiIp
OworCisvLyByZXR1cm5fY2FsbC53YXN0OjE5OQorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAw
XHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4OGVceDgwXHg4MFx4ODBc
eDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDk0XHg5OFx4ZGJceGUyXHgwM1x4
MGIiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC1zcGVjLXRlc3RzL3Jl
dHVybl9jYWxsX2luZGlyZWN0Lndhc3QgYi9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10
ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjZjBhNzJlMDZhMGRm
N2Y2YWZiZTE0YTZkZTFhNGVjYzQ3Zjc2YWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dh
c20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0CkBAIC0w
LDAgKzEsNTM2IEBACis7OyBUZXN0IGByZXR1cm5fY2FsbF9pbmRpcmVjdGAgb3BlcmF0b3IKKwor
KG1vZHVsZQorICA7OyBBdXhpbGlhcnkgZGVmaW5pdGlvbnMKKyAgKHR5cGUgJHByb2MgKGZ1bmMp
KQorICAodHlwZSAkb3V0LWkzMiAoZnVuYyAocmVzdWx0IGkzMikpKQorICAodHlwZSAkb3V0LWk2
NCAoZnVuYyAocmVzdWx0IGk2NCkpKQorICAodHlwZSAkb3V0LWYzMiAoZnVuYyAocmVzdWx0IGYz
MikpKQorICAodHlwZSAkb3V0LWY2NCAoZnVuYyAocmVzdWx0IGY2NCkpKQorICAodHlwZSAkb3Zl
ci1pMzIgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgKHR5cGUgJG92ZXItaTY0
IChmdW5jIChwYXJhbSBpNjQpIChyZXN1bHQgaTY0KSkpCisgICh0eXBlICRvdmVyLWYzMiAoZnVu
YyAocGFyYW0gZjMyKSAocmVzdWx0IGYzMikpKQorICAodHlwZSAkb3Zlci1mNjQgKGZ1bmMgKHBh
cmFtIGY2NCkgKHJlc3VsdCBmNjQpKSkKKyAgKHR5cGUgJGYzMi1pMzIgKGZ1bmMgKHBhcmFtIGYz
MiBpMzIpIChyZXN1bHQgaTMyKSkpCisgICh0eXBlICRpMzItaTY0IChmdW5jIChwYXJhbSBpMzIg
aTY0KSAocmVzdWx0IGk2NCkpKQorICAodHlwZSAkZjY0LWYzMiAoZnVuYyAocGFyYW0gZjY0IGYz
MikgKHJlc3VsdCBmMzIpKSkKKyAgKHR5cGUgJGk2NC1mNjQgKGZ1bmMgKHBhcmFtIGk2NCBmNjQp
IChyZXN1bHQgZjY0KSkpCisgICh0eXBlICRvdmVyLWkzMi1kdXBsaWNhdGUgKGZ1bmMgKHBhcmFt
IGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgKHR5cGUgJG92ZXItaTY0LWR1cGxpY2F0ZSAoZnVuYyAo
cGFyYW0gaTY0KSAocmVzdWx0IGk2NCkpKQorICAodHlwZSAkb3Zlci1mMzItZHVwbGljYXRlIChm
dW5jIChwYXJhbSBmMzIpIChyZXN1bHQgZjMyKSkpCisgICh0eXBlICRvdmVyLWY2NC1kdXBsaWNh
dGUgKGZ1bmMgKHBhcmFtIGY2NCkgKHJlc3VsdCBmNjQpKSkKKworICAoZnVuYyAkY29uc3QtaTMy
ICh0eXBlICRvdXQtaTMyKSAoaTMyLmNvbnN0IDB4MTMyKSkKKyAgKGZ1bmMgJGNvbnN0LWk2NCAo
dHlwZSAkb3V0LWk2NCkgKGk2NC5jb25zdCAweDE2NCkpCisgIChmdW5jICRjb25zdC1mMzIgKHR5
cGUgJG91dC1mMzIpIChmMzIuY29uc3QgMHhmMzIpKQorICAoZnVuYyAkY29uc3QtZjY0ICh0eXBl
ICRvdXQtZjY0KSAoZjY0LmNvbnN0IDB4ZjY0KSkKKworICAoZnVuYyAkaWQtaTMyICh0eXBlICRv
dmVyLWkzMikgKGxvY2FsLmdldCAwKSkKKyAgKGZ1bmMgJGlkLWk2NCAodHlwZSAkb3Zlci1pNjQp
IChsb2NhbC5nZXQgMCkpCisgIChmdW5jICRpZC1mMzIgKHR5cGUgJG92ZXItZjMyKSAobG9jYWwu
Z2V0IDApKQorICAoZnVuYyAkaWQtZjY0ICh0eXBlICRvdmVyLWY2NCkgKGxvY2FsLmdldCAwKSkK
KworICAoZnVuYyAkaTMyLWk2NCAodHlwZSAkaTMyLWk2NCkgKGxvY2FsLmdldCAxKSkKKyAgKGZ1
bmMgJGk2NC1mNjQgKHR5cGUgJGk2NC1mNjQpIChsb2NhbC5nZXQgMSkpCisgIChmdW5jICRmMzIt
aTMyICh0eXBlICRmMzItaTMyKSAobG9jYWwuZ2V0IDEpKQorICAoZnVuYyAkZjY0LWYzMiAodHlw
ZSAkZjY0LWYzMikgKGxvY2FsLmdldCAxKSkKKworICAoZnVuYyAkb3Zlci1pMzItZHVwbGljYXRl
ICh0eXBlICRvdmVyLWkzMi1kdXBsaWNhdGUpIChsb2NhbC5nZXQgMCkpCisgIChmdW5jICRvdmVy
LWk2NC1kdXBsaWNhdGUgKHR5cGUgJG92ZXItaTY0LWR1cGxpY2F0ZSkgKGxvY2FsLmdldCAwKSkK
KyAgKGZ1bmMgJG92ZXItZjMyLWR1cGxpY2F0ZSAodHlwZSAkb3Zlci1mMzItZHVwbGljYXRlKSAo
bG9jYWwuZ2V0IDApKQorICAoZnVuYyAkb3Zlci1mNjQtZHVwbGljYXRlICh0eXBlICRvdmVyLWY2
NC1kdXBsaWNhdGUpIChsb2NhbC5nZXQgMCkpCisKKyAgKHRhYmxlIGZ1bmNyZWYKKyAgICAoZWxl
bQorICAgICAgJGNvbnN0LWkzMiAkY29uc3QtaTY0ICRjb25zdC1mMzIgJGNvbnN0LWY2NAorICAg
ICAgJGlkLWkzMiAkaWQtaTY0ICRpZC1mMzIgJGlkLWY2NAorICAgICAgJGYzMi1pMzIgJGkzMi1p
NjQgJGY2NC1mMzIgJGk2NC1mNjQKKyAgICAgICRmYWMgJGZhYy1hY2MgJGV2ZW4gJG9kZAorICAg
ICAgJG92ZXItaTMyLWR1cGxpY2F0ZSAkb3Zlci1pNjQtZHVwbGljYXRlCisgICAgICAkb3Zlci1m
MzItZHVwbGljYXRlICRvdmVyLWY2NC1kdXBsaWNhdGUKKyAgICApCisgICkKKworICA7OyBTeW50
YXgKKworICAoZnVuYworICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAoaTMyLmNvbnN0IDApKQor
ICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocGFyYW0gaTY0KSAoaTY0LmNvbnN0IDApIChpMzIu
Y29uc3QgMCkpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0IChwYXJhbSBpNjQpIChwYXJhbSkg
KHBhcmFtIGY2NCBpMzIgaTY0KQorICAgICAgKGk2NC5jb25zdCAwKSAoZjY0LmNvbnN0IDApIChp
MzIuY29uc3QgMCkgKGk2NC5jb25zdCAwKSAoaTMyLmNvbnN0IDApCisgICAgKQorICAgIChyZXR1
cm5fY2FsbF9pbmRpcmVjdCAocmVzdWx0KSAoaTMyLmNvbnN0IDApKQorICApCisKKyAgKGZ1bmMg
KHJlc3VsdCBpMzIpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0IChyZXN1bHQgaTMyKSAoaTMy
LmNvbnN0IDApKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocmVzdWx0IGkzMikgKHJlc3Vs
dCkgKGkzMi5jb25zdCAwKSkKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHBhcmFtIGk2NCkg
KHJlc3VsdCBpMzIpIChpNjQuY29uc3QgMCkgKGkzMi5jb25zdCAwKSkKKyAgICAocmV0dXJuX2Nh
bGxfaW5kaXJlY3QKKyAgICAgIChwYXJhbSkgKHBhcmFtIGk2NCkgKHBhcmFtKSAocGFyYW0gZjY0
IGkzMiBpNjQpIChwYXJhbSkgKHBhcmFtKQorICAgICAgKHJlc3VsdCkgKHJlc3VsdCBpMzIpIChy
ZXN1bHQpIChyZXN1bHQpCisgICAgICAoaTY0LmNvbnN0IDApIChmNjQuY29uc3QgMCkgKGkzMi5j
b25zdCAwKSAoaTY0LmNvbnN0IDApIChpMzIuY29uc3QgMCkKKyAgICApCisgICkKKworICAoZnVu
YyAocmVzdWx0IGk2NCkKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJG92ZXItaTY0
KSAocGFyYW0gaTY0KSAocmVzdWx0IGk2NCkKKyAgICAgIChpNjQuY29uc3QgMCkgKGkzMi5jb25z
dCAwKQorICAgICkKKyAgKQorCisgIDs7IFR5cGluZworCisgIChmdW5jIChleHBvcnQgInR5cGUt
aTMyIikgKHJlc3VsdCBpMzIpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdXQt
aTMyKSAoaTMyLmNvbnN0IDApKQorICApCisgIChmdW5jIChleHBvcnQgInR5cGUtaTY0IikgKHJl
c3VsdCBpNjQpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdXQtaTY0KSAoaTMy
LmNvbnN0IDEpKQorICApCisgIChmdW5jIChleHBvcnQgInR5cGUtZjMyIikgKHJlc3VsdCBmMzIp
CisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdXQtZjMyKSAoaTMyLmNvbnN0IDIp
KQorICApCisgIChmdW5jIChleHBvcnQgInR5cGUtZjY0IikgKHJlc3VsdCBmNjQpCisgICAgKHJl
dHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdXQtZjY0KSAoaTMyLmNvbnN0IDMpKQorICApCisK
KyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1pbmRleCIpIChyZXN1bHQgaTY0KQorICAgIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAodHlwZSAkb3Zlci1pNjQpIChpNjQuY29uc3QgMTAwKSAoaTMyLmNvbnN0
IDUpKQorICApCisKKyAgKGZ1bmMgKGV4cG9ydCAidHlwZS1maXJzdC1pMzIiKSAocmVzdWx0IGkz
MikKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJG92ZXItaTMyKSAoaTMyLmNvbnN0
IDMyKSAoaTMyLmNvbnN0IDQpKQorICApCisgIChmdW5jIChleHBvcnQgInR5cGUtZmlyc3QtaTY0
IikgKHJlc3VsdCBpNjQpCisgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdmVyLWk2
NCkgKGk2NC5jb25zdCA2NCkgKGkzMi5jb25zdCA1KSkKKyAgKQorICAoZnVuYyAoZXhwb3J0ICJ0
eXBlLWZpcnN0LWYzMiIpIChyZXN1bHQgZjMyKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAo
dHlwZSAkb3Zlci1mMzIpIChmMzIuY29uc3QgMS4zMikgKGkzMi5jb25zdCA2KSkKKyAgKQorICAo
ZnVuYyAoZXhwb3J0ICJ0eXBlLWZpcnN0LWY2NCIpIChyZXN1bHQgZjY0KQorICAgIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAodHlwZSAkb3Zlci1mNjQpIChmNjQuY29uc3QgMS42NCkgKGkzMi5jb25z
dCA3KSkKKyAgKQorCisgIChmdW5jIChleHBvcnQgInR5cGUtc2Vjb25kLWkzMiIpIChyZXN1bHQg
aTMyKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkZjMyLWkzMikKKyAgICAgIChm
MzIuY29uc3QgMzIuMSkgKGkzMi5jb25zdCAzMikgKGkzMi5jb25zdCA4KQorICAgICkKKyAgKQor
ICAoZnVuYyAoZXhwb3J0ICJ0eXBlLXNlY29uZC1pNjQiKSAocmVzdWx0IGk2NCkKKyAgICAocmV0
dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJGkzMi1pNjQpCisgICAgICAoaTMyLmNvbnN0IDMyKSAo
aTY0LmNvbnN0IDY0KSAoaTMyLmNvbnN0IDkpCisgICAgKQorICApCisgIChmdW5jIChleHBvcnQg
InR5cGUtc2Vjb25kLWYzMiIpIChyZXN1bHQgZjMyKQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVj
dCAodHlwZSAkZjY0LWYzMikKKyAgICAgIChmNjQuY29uc3QgNjQpIChmMzIuY29uc3QgMzIpIChp
MzIuY29uc3QgMTApCisgICAgKQorICApCisgIChmdW5jIChleHBvcnQgInR5cGUtc2Vjb25kLWY2
NCIpIChyZXN1bHQgZjY0KQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkaTY0LWY2
NCkKKyAgICAgIChpNjQuY29uc3QgNjQpIChmNjQuY29uc3QgNjQuMSkgKGkzMi5jb25zdCAxMSkK
KyAgICApCisgICkKKworICA7OyBEaXNwYXRjaAorCisgIChmdW5jIChleHBvcnQgImRpc3BhdGNo
IikgKHBhcmFtIGkzMiBpNjQpIChyZXN1bHQgaTY0KQorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVj
dCAodHlwZSAkb3Zlci1pNjQpIChsb2NhbC5nZXQgMSkgKGxvY2FsLmdldCAwKSkKKyAgKQorCisg
IChmdW5jIChleHBvcnQgImRpc3BhdGNoLXN0cnVjdHVyYWwiKSAocGFyYW0gaTMyKSAocmVzdWx0
IGk2NCkKKyAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJG92ZXItaTY0LWR1cGxpY2F0
ZSkKKyAgICAgIChpNjQuY29uc3QgOSkgKGxvY2FsLmdldCAwKQorICAgICkKKyAgKQorCisgIDs7
IE11bHRpcGxlIHRhYmxlcworCisgICh0YWJsZSAkdGFiMiBmdW5jcmVmIChlbGVtICR0YWItZjEp
KQorICAodGFibGUgJHRhYjMgZnVuY3JlZiAoZWxlbSAkdGFiLWYyKSkKKworICAoZnVuYyAkdGFi
LWYxIChyZXN1bHQgaTMyKSAoaTMyLmNvbnN0IDB4MTMzKSkKKyAgKGZ1bmMgJHRhYi1mMiAocmVz
dWx0IGkzMikgKGkzMi5jb25zdCAweDEzNCkpCisKKyAgKGZ1bmMgKGV4cG9ydCAiY2FsbC10YWIi
KSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAoaWYgKGkzMi5lcSAobG9jYWwuZ2V0
ICRpKSAoaTMyLmNvbnN0IDApKQorICAgICAgKHRoZW4gKHJldHVybl9jYWxsX2luZGlyZWN0ICh0
eXBlICRvdXQtaTMyKSAoaTMyLmNvbnN0IDApKSkKKyAgICApCisgICAgKGlmIChpMzIuZXEgKGxv
Y2FsLmdldCAkaSkgKGkzMi5jb25zdCAxKSkKKyAgICAgICh0aGVuIChyZXR1cm5fY2FsbF9pbmRp
cmVjdCAxICh0eXBlICRvdXQtaTMyKSAoaTMyLmNvbnN0IDApKSkKKyAgICApCisgICAgKGlmIChp
MzIuZXEgKGxvY2FsLmdldCAkaSkgKGkzMi5jb25zdCAyKSkKKyAgICAgICh0aGVuIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAkdGFiMyAodHlwZSAkb3V0LWkzMikgKGkzMi5jb25zdCAwKSkpCisgICAg
KQorICAgIChpMzIuY29uc3QgMCkKKyAgKQorCisgIDs7IFJlY3Vyc2lvbgorCisgIChmdW5jICRm
YWMgKGV4cG9ydCAiZmFjIikgKHR5cGUgJG92ZXItaTY0KQorICAgIChyZXR1cm5fY2FsbF9pbmRp
cmVjdCAocGFyYW0gaTY0IGk2NCkgKHJlc3VsdCBpNjQpCisgICAgICAobG9jYWwuZ2V0IDApIChp
NjQuY29uc3QgMSkgKGkzMi5jb25zdCAxMykKKyAgICApCisgICkKKworICAoZnVuYyAkZmFjLWFj
YyAocGFyYW0gaTY0IGk2NCkgKHJlc3VsdCBpNjQpCisgICAgKGlmIChyZXN1bHQgaTY0KSAoaTY0
LmVxeiAobG9jYWwuZ2V0IDApKQorICAgICAgKHRoZW4gKGxvY2FsLmdldCAxKSkKKyAgICAgIChl
bHNlCisgICAgICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocGFyYW0gaTY0IGk2NCkgKHJlc3Vs
dCBpNjQpCisgICAgICAgICAgKGk2NC5zdWIgKGxvY2FsLmdldCAwKSAoaTY0LmNvbnN0IDEpKQor
ICAgICAgICAgIChpNjQubXVsIChsb2NhbC5nZXQgMCkgKGxvY2FsLmdldCAxKSkKKyAgICAgICAg
ICAoaTMyLmNvbnN0IDEzKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCisKKyAgKGZ1
bmMgJGV2ZW4gKGV4cG9ydCAiZXZlbiIpIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKQorICAgIChp
ZiAocmVzdWx0IGkzMikgKGkzMi5lcXogKGxvY2FsLmdldCAwKSkKKyAgICAgICh0aGVuIChpMzIu
Y29uc3QgNDQpKQorICAgICAgKGVsc2UKKyAgICAgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0
eXBlICRvdmVyLWkzMikKKyAgICAgICAgICAoaTMyLnN1YiAobG9jYWwuZ2V0IDApIChpMzIuY29u
c3QgMSkpCisgICAgICAgICAgKGkzMi5jb25zdCAxNSkKKyAgICAgICAgKQorICAgICAgKQorICAg
ICkKKyAgKQorICAoZnVuYyAkb2RkIChleHBvcnQgIm9kZCIpIChwYXJhbSBpMzIpIChyZXN1bHQg
aTMyKQorICAgIChpZiAocmVzdWx0IGkzMikgKGkzMi5lcXogKGxvY2FsLmdldCAwKSkKKyAgICAg
ICh0aGVuIChpMzIuY29uc3QgOTkpKQorICAgICAgKGVsc2UKKyAgICAgICAgKHJldHVybl9jYWxs
X2luZGlyZWN0ICh0eXBlICRvdmVyLWkzMikKKyAgICAgICAgICAoaTMyLnN1YiAobG9jYWwuZ2V0
IDApIChpMzIuY29uc3QgMSkpCisgICAgICAgICAgKGkzMi5jb25zdCAxNCkKKyAgICAgICAgKQor
ICAgICAgKQorICAgICkKKyAgKQorKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWkz
MiIpIChpMzIuY29uc3QgMHgxMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1pNjQi
KSAoaTY0LmNvbnN0IDB4MTY0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZjMyIikg
KGYzMi5jb25zdCAweGYzMikpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWY2NCIpIChm
NjQuY29uc3QgMHhmNjQpKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWluZGV4Iikg
KGk2NC5jb25zdCAxMDApKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWZpcnN0LWkz
MiIpIChpMzIuY29uc3QgMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1maXJzdC1p
NjQiKSAoaTY0LmNvbnN0IDY0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZmlyc3Qt
ZjMyIikgKGYzMi5jb25zdCAxLjMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZmly
c3QtZjY0IikgKGY2NC5jb25zdCAxLjY0KSkKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlw
ZS1zZWNvbmQtaTMyIikgKGkzMi5jb25zdCAzMikpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0
eXBlLXNlY29uZC1pNjQiKSAoaTY0LmNvbnN0IDY0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2Ug
InR5cGUtc2Vjb25kLWYzMiIpIChmMzIuY29uc3QgMzIpKQorKGFzc2VydF9yZXR1cm4gKGludm9r
ZSAidHlwZS1zZWNvbmQtZjY0IikgKGY2NC5jb25zdCA2NC4xKSkKKworKGFzc2VydF9yZXR1cm4g
KGludm9rZSAiZGlzcGF0Y2giIChpMzIuY29uc3QgNSkgKGk2NC5jb25zdCAyKSkgKGk2NC5jb25z
dCAyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImRpc3BhdGNoIiAoaTMyLmNvbnN0IDUpIChp
NjQuY29uc3QgNSkpIChpNjQuY29uc3QgNSkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJkaXNw
YXRjaCIgKGkzMi5jb25zdCAxMikgKGk2NC5jb25zdCA1KSkgKGk2NC5jb25zdCAxMjApKQorKGFz
c2VydF9yZXR1cm4gKGludm9rZSAiZGlzcGF0Y2giIChpMzIuY29uc3QgMTcpIChpNjQuY29uc3Qg
MikpIChpNjQuY29uc3QgMikpCisoYXNzZXJ0X3RyYXAgKGludm9rZSAiZGlzcGF0Y2giIChpMzIu
Y29uc3QgMCkgKGk2NC5jb25zdCAyKSkgImluZGlyZWN0IGNhbGwgdHlwZSBtaXNtYXRjaCIpCiso
YXNzZXJ0X3RyYXAgKGludm9rZSAiZGlzcGF0Y2giIChpMzIuY29uc3QgMTUpIChpNjQuY29uc3Qg
MikpICJpbmRpcmVjdCBjYWxsIHR5cGUgbWlzbWF0Y2giKQorKGFzc2VydF90cmFwIChpbnZva2Ug
ImRpc3BhdGNoIiAoaTMyLmNvbnN0IDIwKSAoaTY0LmNvbnN0IDIpKSAidW5kZWZpbmVkIGVsZW1l
bnQiKQorKGFzc2VydF90cmFwIChpbnZva2UgImRpc3BhdGNoIiAoaTMyLmNvbnN0IC0xKSAoaTY0
LmNvbnN0IDIpKSAidW5kZWZpbmVkIGVsZW1lbnQiKQorKGFzc2VydF90cmFwIChpbnZva2UgImRp
c3BhdGNoIiAoaTMyLmNvbnN0IDEyMTM0MzI0MjMpIChpNjQuY29uc3QgMikpICJ1bmRlZmluZWQg
ZWxlbWVudCIpCisKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImRpc3BhdGNoLXN0cnVjdHVyYWwi
IChpMzIuY29uc3QgNSkpIChpNjQuY29uc3QgOSkpCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJk
aXNwYXRjaC1zdHJ1Y3R1cmFsIiAoaTMyLmNvbnN0IDUpKSAoaTY0LmNvbnN0IDkpKQorKGFzc2Vy
dF9yZXR1cm4gKGludm9rZSAiZGlzcGF0Y2gtc3RydWN0dXJhbCIgKGkzMi5jb25zdCAxMikpIChp
NjQuY29uc3QgMzYyODgwKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImRpc3BhdGNoLXN0cnVj
dHVyYWwiIChpMzIuY29uc3QgMTcpKSAoaTY0LmNvbnN0IDkpKQorKGFzc2VydF90cmFwIChpbnZv
a2UgImRpc3BhdGNoLXN0cnVjdHVyYWwiIChpMzIuY29uc3QgMTEpKSAiaW5kaXJlY3QgY2FsbCB0
eXBlIG1pc21hdGNoIikKKyhhc3NlcnRfdHJhcCAoaW52b2tlICJkaXNwYXRjaC1zdHJ1Y3R1cmFs
IiAoaTMyLmNvbnN0IDE2KSkgImluZGlyZWN0IGNhbGwgdHlwZSBtaXNtYXRjaCIpCisKKyhhc3Nl
cnRfcmV0dXJuIChpbnZva2UgImNhbGwtdGFiIiAoaTMyLmNvbnN0IDApKSAoaTMyLmNvbnN0IDB4
MTMyKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImNhbGwtdGFiIiAoaTMyLmNvbnN0IDEpKSAo
aTMyLmNvbnN0IDB4MTMzKSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImNhbGwtdGFiIiAoaTMy
LmNvbnN0IDIpKSAoaTMyLmNvbnN0IDB4MTM0KSkKKworKGFzc2VydF9yZXR1cm4gKGludm9rZSAi
ZmFjIiAoaTY0LmNvbnN0IDApKSAoaTY0LmNvbnN0IDEpKQorKGFzc2VydF9yZXR1cm4gKGludm9r
ZSAiZmFjIiAoaTY0LmNvbnN0IDEpKSAoaTY0LmNvbnN0IDEpKQorKGFzc2VydF9yZXR1cm4gKGlu
dm9rZSAiZmFjIiAoaTY0LmNvbnN0IDUpKSAoaTY0LmNvbnN0IDEyMCkpCisoYXNzZXJ0X3JldHVy
biAoaW52b2tlICJmYWMiIChpNjQuY29uc3QgMjUpKSAoaTY0LmNvbnN0IDcwMzQ1MzUyNzc1NzM5
NjM3NzYpKQorCisoYXNzZXJ0X3JldHVybiAoaW52b2tlICJldmVuIiAoaTMyLmNvbnN0IDApKSAo
aTMyLmNvbnN0IDQ0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4iIChpMzIuY29uc3Qg
MSkpIChpMzIuY29uc3QgOTkpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZXZlbiIgKGkzMi5j
b25zdCAxMDApKSAoaTMyLmNvbnN0IDQ0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4i
IChpMzIuY29uc3QgNzcpKSAoaTMyLmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2Ug
ImV2ZW4iIChpMzIuY29uc3QgMTAwXzAwMCkpIChpMzIuY29uc3QgNDQpKQorKGFzc2VydF9yZXR1
cm4gKGludm9rZSAiZXZlbiIgKGkzMi5jb25zdCAxMTFfMTExKSkgKGkzMi5jb25zdCA5OSkpCiso
YXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChpMzIuY29uc3QgMCkpIChpMzIuY29uc3QgOTkp
KQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAib2RkIiAoaTMyLmNvbnN0IDEpKSAoaTMyLmNvbnN0
IDQ0KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGkzMi5jb25zdCAyMDApKSAoaTMy
LmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGkzMi5jb25zdCA3Nykp
IChpMzIuY29uc3QgNDQpKQorKGFzc2VydF9yZXR1cm4gKGludm9rZSAib2RkIiAoaTMyLmNvbnN0
IDIwMF8wMDIpKSAoaTMyLmNvbnN0IDk5KSkKKyhhc3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIg
KGkzMi5jb25zdCAzMDBfMDAzKSkgKGkzMi5jb25zdCA0NCkpCisKKworOzsgSW52YWxpZCBzeW50
YXgKKworKGFzc2VydF9tYWxmb3JtZWQKKyAgKG1vZHVsZSBxdW90ZQorICAgICIodHlwZSAkc2ln
IChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpIgorICAgICIodGFibGUgMCBmdW5jcmVm
KSIKKyAgICAiKGZ1bmMgKHJlc3VsdCBpMzIpIgorICAgICIgIChyZXR1cm5fY2FsbF9pbmRpcmVj
dCAodHlwZSAkc2lnKSAocmVzdWx0IGkzMikgKHBhcmFtIGkzMikiCisgICAgIiAgICAoaTMyLmNv
bnN0IDApIChpMzIuY29uc3QgMCkiCisgICAgIiAgKSIKKyAgICAiKSIKKyAgKQorICAidW5leHBl
Y3RlZCB0b2tlbiIKKykKKyhhc3NlcnRfbWFsZm9ybWVkCisgIChtb2R1bGUgcXVvdGUKKyAgICAi
KHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKSIKKyAgICAiKHRhYmxl
IDAgZnVuY3JlZikiCisgICAgIihmdW5jIChyZXN1bHQgaTMyKSIKKyAgICAiICAocmV0dXJuX2Nh
bGxfaW5kaXJlY3QgKHBhcmFtIGkzMikgKHR5cGUgJHNpZykgKHJlc3VsdCBpMzIpIgorICAgICIg
ICAgKGkzMi5jb25zdCAwKSAoaTMyLmNvbnN0IDApIgorICAgICIgICkiCisgICAgIikiCisgICkK
KyAgInVuZXhwZWN0ZWQgdG9rZW4iCispCisoYXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxlIHF1
b3RlCisgICAgIih0eXBlICRzaWcgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkiCisg
ICAgIih0YWJsZSAwIGZ1bmNyZWYpIgorICAgICIoZnVuYyAocmVzdWx0IGkzMikiCisgICAgIiAg
KHJldHVybl9jYWxsX2luZGlyZWN0IChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSAodHlwZSAkc2ln
KSIKKyAgICAiICAgIChpMzIuY29uc3QgMCkgKGkzMi5jb25zdCAwKSIKKyAgICAiICApIgorICAg
ICIpIgorICApCisgICJ1bmV4cGVjdGVkIHRva2VuIgorKQorKGFzc2VydF9tYWxmb3JtZWQKKyAg
KG1vZHVsZSBxdW90ZQorICAgICIodHlwZSAkc2lnIChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQg
aTMyKSkpIgorICAgICIodGFibGUgMCBmdW5jcmVmKSIKKyAgICAiKGZ1bmMgKHJlc3VsdCBpMzIp
IgorICAgICIgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocmVzdWx0IGkzMikgKHR5cGUgJHNpZykg
KHBhcmFtIGkzMikiCisgICAgIiAgICAoaTMyLmNvbnN0IDApIChpMzIuY29uc3QgMCkiCisgICAg
IiAgKSIKKyAgICAiKSIKKyAgKQorICAidW5leHBlY3RlZCB0b2tlbiIKKykKKyhhc3NlcnRfbWFs
Zm9ybWVkCisgIChtb2R1bGUgcXVvdGUKKyAgICAiKHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMy
KSAocmVzdWx0IGkzMikpKSIKKyAgICAiKHRhYmxlIDAgZnVuY3JlZikiCisgICAgIihmdW5jIChy
ZXN1bHQgaTMyKSIKKyAgICAiICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHJlc3VsdCBpMzIpIChw
YXJhbSBpMzIpICh0eXBlICRzaWcpIgorICAgICIgICAgKGkzMi5jb25zdCAwKSAoaTMyLmNvbnN0
IDApIgorICAgICIgICkiCisgICAgIikiCisgICkKKyAgInVuZXhwZWN0ZWQgdG9rZW4iCispCiso
YXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxlIHF1b3RlCisgICAgIih0YWJsZSAwIGZ1bmNyZWYp
IgorICAgICIoZnVuYyAocmVzdWx0IGkzMikiCisgICAgIiAgKHJldHVybl9jYWxsX2luZGlyZWN0
IChyZXN1bHQgaTMyKSAocGFyYW0gaTMyKSIKKyAgICAiICAgIChpMzIuY29uc3QgMCkgKGkzMi5j
b25zdCAwKSIKKyAgICAiICApIgorICAgICIpIgorICApCisgICJ1bmV4cGVjdGVkIHRva2VuIgor
KQorCisoYXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxlIHF1b3RlCisgICAgIih0YWJsZSAwIGZ1
bmNyZWYpIgorICAgICIoZnVuYyAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHBhcmFtICR4IGkzMikg
KGkzMi5jb25zdCAwKSAoaTMyLmNvbnN0IDApKSkiCisgICkKKyAgInVuZXhwZWN0ZWQgdG9rZW4i
CispCisoYXNzZXJ0X21hbGZvcm1lZAorICAobW9kdWxlIHF1b3RlCisgICAgIih0eXBlICRzaWcg
KGZ1bmMpKSIKKyAgICAiKHRhYmxlIDAgZnVuY3JlZikiCisgICAgIihmdW5jIChyZXN1bHQgaTMy
KSIKKyAgICAiICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJHNpZykgKHJlc3VsdCBpMzIp
IChpMzIuY29uc3QgMCkpIgorICAgICIpIgorICApCisgICJpbmxpbmUgZnVuY3Rpb24gdHlwZSIK
KykKKyhhc3NlcnRfbWFsZm9ybWVkCisgIChtb2R1bGUgcXVvdGUKKyAgICAiKHR5cGUgJHNpZyAo
ZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKSIKKyAgICAiKHRhYmxlIDAgZnVuY3JlZiki
CisgICAgIihmdW5jIChyZXN1bHQgaTMyKSIKKyAgICAiICAocmV0dXJuX2NhbGxfaW5kaXJlY3Qg
KHR5cGUgJHNpZykgKHJlc3VsdCBpMzIpIChpMzIuY29uc3QgMCkpIgorICAgICIpIgorICApCisg
ICJpbmxpbmUgZnVuY3Rpb24gdHlwZSIKKykKKyhhc3NlcnRfbWFsZm9ybWVkCisgIChtb2R1bGUg
cXVvdGUKKyAgICAiKHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKSIK
KyAgICAiKHRhYmxlIDAgZnVuY3JlZikiCisgICAgIihmdW5jIgorICAgICIgIChyZXR1cm5fY2Fs
bF9pbmRpcmVjdCAodHlwZSAkc2lnKSAocGFyYW0gaTMyKSIKKyAgICAiICAgIChpMzIuY29uc3Qg
MCkgKGkzMi5jb25zdCAwKSIKKyAgICAiICApIgorICAgICIpIgorICApCisgICJpbmxpbmUgZnVu
Y3Rpb24gdHlwZSIKKykKKyhhc3NlcnRfbWFsZm9ybWVkCisgIChtb2R1bGUgcXVvdGUKKyAgICAi
KHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMyIGkzMikgKHJlc3VsdCBpMzIpKSkiCisgICAgIih0
YWJsZSAwIGZ1bmNyZWYpIgorICAgICIoZnVuYyAocmVzdWx0IGkzMikiCisgICAgIiAgKHJldHVy
bl9jYWxsX2luZGlyZWN0ICh0eXBlICRzaWcpIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSIKKyAg
ICAiICAgIChpMzIuY29uc3QgMCkgKGkzMi5jb25zdCAwKSIKKyAgICAiICApIgorICAgICIpIgor
ICApCisgICJpbmxpbmUgZnVuY3Rpb24gdHlwZSIKKykKKworOzsgSW52YWxpZCB0eXBpbmcKKwor
KGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodHlwZSAoZnVuYykpCisgICAgKGZ1bmMg
JG5vLXRhYmxlIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDApKSkK
KyAgKQorICAidW5rbm93biB0YWJsZSIKKykKKworKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUK
KyAgICAodHlwZSAoZnVuYykpCisgICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkdHlw
ZS12b2lkLXZzLW51bSAoaTMyLmVxeiAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkz
Mi5jb25zdCAwKSkpKQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlk
CisgIChtb2R1bGUKKyAgICAodHlwZSAoZnVuYyAocmVzdWx0IGk2NCkpKQorICAgICh0YWJsZSAw
IGZ1bmNyZWYpCisgICAgKGZ1bmMgJHR5cGUtbnVtLXZzLW51bSAoaTMyLmVxeiAocmV0dXJuX2Nh
bGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkzMi5jb25zdCAwKSkpKQorICApCisgICJ0eXBlIG1pc21h
dGNoIgorKQorCisoYXNzZXJ0X2ludmFsaWQKKyAgKG1vZHVsZQorICAgICh0eXBlIChmdW5jIChw
YXJhbSBpMzIpKSkKKyAgICAodGFibGUgMCBmdW5jcmVmKQorICAgIChmdW5jICRhcml0eS0wLXZz
LTEgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlIDApIChpMzIuY29uc3QgMCkpKQorICApCisg
ICJ0eXBlIG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodHlw
ZSAoZnVuYyAocGFyYW0gZjY0IGkzMikpKQorICAgICh0YWJsZSAwIGZ1bmNyZWYpCisgICAgKGZ1
bmMgJGFyaXR5LTAtdnMtMiAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkzMi5jb25z
dCAwKSkpCisgICkKKyAgInR5cGUgbWlzbWF0Y2giCispCisKKyhtb2R1bGUKKyAgKHR5cGUgKGZ1
bmMpKQorICAodGFibGUgMCBmdW5jcmVmKQorICAoZnVuYyAkYXJpdHktMS12cy0wIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDEpIChpMzIuY29uc3QgMCkpKQorKQor
CisobW9kdWxlCisgICh0eXBlIChmdW5jKSkKKyAgKHRhYmxlIDAgZnVuY3JlZikKKyAgKGZ1bmMg
JGFyaXR5LTItdnMtMAorICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoZjY0LmNv
bnN0IDIpIChpMzIuY29uc3QgMSkgKGkzMi5jb25zdCAwKSkKKyAgKQorKQorCisoYXNzZXJ0X2lu
dmFsaWQKKyAgKG1vZHVsZQorICAgICh0eXBlIChmdW5jIChwYXJhbSBpMzIpKSkKKyAgICAodGFi
bGUgMCBmdW5jcmVmKQorICAgIChmdW5jICR0eXBlLWZ1bmMtdm9pZC12cy1pMzIgKHJldHVybl9j
YWxsX2luZGlyZWN0ICh0eXBlIDApIChpMzIuY29uc3QgMSkgKG5vcCkpKQorICApCisgICJ0eXBl
IG1pc21hdGNoIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodHlwZSAoZnVu
YyAocGFyYW0gaTMyKSkpCisgICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkdHlwZS1m
dW5jLW51bS12cy1pMzIgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlIDApIChpMzIuY29uc3Qg
MCkgKGk2NC5jb25zdCAxKSkpCisgICkKKyAgInR5cGUgbWlzbWF0Y2giCispCisKKyhhc3NlcnRf
aW52YWxpZAorICAobW9kdWxlCisgICAgKHR5cGUgKGZ1bmMgKHBhcmFtIGkzMiBpMzIpKSkKKyAg
ICAodGFibGUgMCBmdW5jcmVmKQorICAgIChmdW5jICR0eXBlLWZpcnN0LXZvaWQtdnMtbnVtCisg
ICAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKG5vcCkgKGkzMi5jb25zdCAxKSAo
aTMyLmNvbnN0IDApKQorICAgICkKKyAgKQorICAidHlwZSBtaXNtYXRjaCIKKykKKyhhc3NlcnRf
aW52YWxpZAorICAobW9kdWxlCisgICAgKHR5cGUgKGZ1bmMgKHBhcmFtIGkzMiBpMzIpKSkKKyAg
ICAodGFibGUgMCBmdW5jcmVmKQorICAgIChmdW5jICR0eXBlLXNlY29uZC12b2lkLXZzLW51bQor
ICAgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlIDApIChpMzIuY29uc3QgMSkgKG5vcCkg
KGkzMi5jb25zdCAwKSkKKyAgICApCisgICkKKyAgInR5cGUgbWlzbWF0Y2giCispCisoYXNzZXJ0
X2ludmFsaWQKKyAgKG1vZHVsZQorICAgICh0eXBlIChmdW5jIChwYXJhbSBpMzIgZjY0KSkpCisg
ICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkdHlwZS1maXJzdC1udW0tdnMtbnVtCisg
ICAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGY2NC5jb25zdCAxKSAoaTMyLmNv
bnN0IDEpIChpMzIuY29uc3QgMCkpCisgICAgKQorICApCisgICJ0eXBlIG1pc21hdGNoIgorKQor
KGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodHlwZSAoZnVuYyAocGFyYW0gZjY0IGkz
MikpKQorICAgICh0YWJsZSAwIGZ1bmNyZWYpCisgICAgKGZ1bmMgJHR5cGUtc2Vjb25kLW51bS12
cy1udW0KKyAgICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDEp
IChmNjQuY29uc3QgMSkgKGkzMi5jb25zdCAwKSkKKyAgICApCisgICkKKyAgInR5cGUgbWlzbWF0
Y2giCispCisKKworOzsgVW5ib3VuZCB0eXBlCisKKyhhc3NlcnRfaW52YWxpZAorICAobW9kdWxl
CisgICAgKHRhYmxlIDAgZnVuY3JlZikKKyAgICAoZnVuYyAkdW5ib3VuZC10eXBlIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAodHlwZSAxKSAoaTMyLmNvbnN0IDApKSkKKyAgKQorICAidW5rbm93biB0
eXBlIgorKQorKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUKKyAgICAodGFibGUgMCBmdW5jcmVm
KQorICAgIChmdW5jICRsYXJnZS10eXBlIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAxMDEy
MzIxMzAwKSAoaTMyLmNvbnN0IDApKSkKKyAgKQorICAidW5rbm93biB0eXBlIgorKQorCisKKzs7
IFVuYm91bmQgZnVuY3Rpb24gaW4gdGFibGUKKworKGFzc2VydF9pbnZhbGlkCisgIChtb2R1bGUg
KHRhYmxlIGZ1bmNyZWYgKGVsZW0gMCAwKSkpCisgICJ1bmtub3duIGZ1bmN0aW9uIDAiCispCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmV0dXJuLWNhbGwtc3BlYy10ZXN0cy9yZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0LmpzIGIvSlNUZXN0cy93YXNtL3JldHVybi1jYWxsLXNwZWMtdGVzdHMv
cmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTgzMmM1M2YxNDA0YTM4
OWIwNmFlNTcyMjY3ZTg0YTUzMGVjY2MwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNt
L3JldHVybi1jYWxsLXNwZWMtdGVzdHMvcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdC5qcwpAQCAt
MCwwICsxLDIzMiBAQAorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjMKK2xldCAkMSA9
IGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGY3XHg4MFx4
ODBceDgwXHgwMFx4MTdceDYwXHgwMFx4MDBceDYwXHgwMFx4MDFceDdmXHg2MFx4MDBceDAxXHg3
ZVx4NjBceDAwXHgwMVx4N2RceDYwXHgwMFx4MDFceDdjXHg2MFx4MDFceDdmXHgwMVx4N2ZceDYw
XHgwMVx4N2VceDAxXHg3ZVx4NjBceDAxXHg3ZFx4MDFceDdkXHg2MFx4MDFceDdjXHgwMVx4N2Nc
eDYwXHgwMlx4N2RceDdmXHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDYwXHgwMlx4
N2NceDdkXHgwMVx4N2RceDYwXHgwMlx4N2VceDdjXHgwMVx4N2NceDYwXHgwMVx4N2ZceDAxXHg3
Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHg2MFx4MDFceDdkXHgwMVx4N2RceDYwXHgwMVx4N2NceDAx
XHg3Y1x4NjBceDA0XHg3ZVx4N2NceDdmXHg3ZVx4MDBceDYwXHgwMVx4N2VceDAwXHg2MFx4MDRc
eDdlXHg3Y1x4N2ZceDdlXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3Zlx4NjBceDAxXHg3Zlx4
MDFceDdlXHg2MFx4MDJceDdlXHg3ZVx4MDFceDdlXHgwM1x4YWFceDgwXHg4MFx4ODBceDAwXHgy
OVx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdceDA4XHgwYVx4MGNceDA5XHgwYlx4MGRceDBl
XHgwZlx4MTBceDAwXHgwMVx4MDJceDAxXHgwMlx4MDNceDA0XHgwMlx4MDFceDAyXHgwM1x4MDRc
eDAxXHgwMlx4MDNceDA0XHgwYVx4MTVceDAxXHgwMVx4MDVceDA2XHgxNlx4MDVceDA1XHgwNFx4
OGRceDgwXHg4MFx4ODBceDAwXHgwM1x4NzBceDAxXHgxNFx4MTRceDcwXHgwMVx4MDFceDAxXHg3
MFx4MDFceDAxXHgwMVx4MDdceDg1XHg4Mlx4ODBceDgwXHgwMFx4MTNceDA4XHg3NFx4NzlceDcw
XHg2NVx4MmRceDY5XHgzM1x4MzJceDAwXHgxM1x4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4Njlc
eDM2XHgzNFx4MDBceDE0XHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4MzNceDMyXHgwMFx4
MTVceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHgzNlx4MzRceDAwXHgxNlx4MGFceDc0XHg3
OVx4NzBceDY1XHgyZFx4NjlceDZlXHg2NFx4NjVceDc4XHgwMFx4MTdceDBlXHg3NFx4NzlceDcw
XHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxOFx4MGVc
eDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjlceDM2XHgzNFx4
MDBceDE5XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2
Nlx4MzNceDMyXHgwMFx4MWFceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDcz
XHg3NFx4MmRceDY2XHgzNlx4MzRceDAwXHgxYlx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNc
eDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzM1x4MzJceDAwXHgxY1x4MGZceDc0XHg3OVx4
NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY5XHgzNlx4MzRceDAwXHgx
ZFx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2
XHgzM1x4MzJceDAwXHgxZVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZc
eDZlXHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgxZlx4MDhceDY0XHg2OVx4NzNceDcwXHg2MVx4
NzRceDYzXHg2OFx4MDBceDIwXHgxM1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgy
ZFx4NzNceDc0XHg3Mlx4NzVceDYzXHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgyMVx4MDhceDYz
XHg2MVx4NmNceDZjXHgyZFx4NzRceDYxXHg2Mlx4MDBceDI0XHgwM1x4NjZceDYxXHg2M1x4MDBc
eDI1XHgwNFx4NjVceDc2XHg2NVx4NmVceDAwXHgyN1x4MDNceDZmXHg2NFx4NjRceDAwXHgyOFx4
MDlceGFhXHg4MFx4ODBceDgwXHgwMFx4MDNceDAwXHg0MVx4MDBceDBiXHgxNFx4MDBceDAxXHgw
Mlx4MDNceDA0XHgwNVx4MDZceDA3XHgwYVx4MDhceDBiXHgwOVx4MjVceDI2XHgyN1x4MjhceDBj
XHgwZFx4MGVceDBmXHgwMlx4MDFceDQxXHgwMFx4MGJceDAwXHgwMVx4MjJceDAyXHgwMlx4NDFc
eDAwXHgwYlx4MDBceDAxXHgyM1x4MGFceDlmXHg4NVx4ODBceDgwXHgwMFx4MjlceDg1XHg4MFx4
ODBceDgwXHgwMFx4MDBceDQxXHhiMlx4MDJceDBiXHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHg0
Mlx4ZTRceDAyXHgwYlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDNceDAwXHgyMFx4NzNceDQ1
XHgwYlx4OGJceDgwXHg4MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4Yzhc
eGFlXHg0MFx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceDg0XHg4MFx4
ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgw
MFx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceDg0XHg4MFx4ODBceDgw
XHgwMFx4MDBceDIwXHgwMVx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMVx4MGJc
eDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMVx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4
MDBceDIwXHgwMVx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceDg0XHg4
MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIw
XHgwMFx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MGJceGE3XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAwXHgwMFx4NDJceDAwXHg0MVx4MDBceDEzXHgxMlx4
MDBceDQyXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDFceDAwXHg0
Mlx4MDBceDQxXHgwMFx4MTNceDExXHgwMFx4NDFceDAwXHgxM1x4MDBceDAwXHgwYlx4YTdceDgw
XHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDFceDAwXHg0MVx4MDBceDEzXHgwMVx4MDBc
eDQyXHgwMFx4NDFceDAwXHgxM1x4MTRceDAwXHg0Mlx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMFx4MDBceDQxXHgwMFx4NDJceDAwXHg0MVx4MDBceDEzXHgxM1x4MDBceDBiXHg4
OVx4ODBceDgwXHg4MFx4MDBceDAwXHg0Mlx4MDBceDQxXHgwMFx4MTNceDA2XHgwMFx4MGJceDg3
XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4MTNceDAxXHgwMFx4MGJceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDQxXHgwMVx4MTNceDAyXHgwMFx4MGJceDg3XHg4MFx4ODBceDgwXHgwMFx4
MDBceDQxXHgwMlx4MTNceDAzXHgwMFx4MGJceDg3XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgw
M1x4MTNceDA0XHgwMFx4MGJceDhhXHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHhlNFx4MDBceDQx
XHgwNVx4MTNceDA2XHgwMFx4MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgyMFx4NDFc
eDA0XHgxM1x4MDVceDAwXHgwYlx4OGFceDgwXHg4MFx4ODBceDAwXHgwMFx4NDJceGMwXHgwMFx4
NDFceDA1XHgxM1x4MDZceDAwXHgwYlx4OGNceDgwXHg4MFx4ODBceDAwXHgwMFx4NDNceGMzXHhm
NVx4YThceDNmXHg0MVx4MDZceDEzXHgwN1x4MDBceDBiXHg5MFx4ODBceDgwXHg4MFx4MDBceDAw
XHg0NFx4M2RceDBhXHhkN1x4YTNceDcwXHgzZFx4ZmFceDNmXHg0MVx4MDdceDEzXHgwOFx4MDBc
eDBiXHg4ZVx4ODBceDgwXHg4MFx4MDBceDAwXHg0M1x4NjZceDY2XHgwMFx4NDJceDQxXHgyMFx4
NDFceDA4XHgxM1x4MDlceDAwXHgwYlx4OGNceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDIwXHg0
Mlx4YzBceDAwXHg0MVx4MDlceDEzXHgwYVx4MDBceDBiXHg5NVx4ODBceDgwXHg4MFx4MDBceDAw
XHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NTBceDQwXHg0M1x4MDBceDAwXHgwMFx4NDJc
eDQxXHgwYVx4MTNceDBiXHgwMFx4MGJceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHhjMFx4
MDBceDQ0XHg2Nlx4NjZceDY2XHg2Nlx4NjZceDA2XHg1MFx4NDBceDQxXHgwYlx4MTNceDBjXHgw
MFx4MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMVx4MjBceDAwXHgxM1x4MDZceDAw
XHgwYlx4ODlceDgwXHg4MFx4ODBceDAwXHgwMFx4NDJceDA5XHgyMFx4MDBceDEzXHgwZVx4MDBc
eDBiXHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4YjNceDAyXHgwYlx4ODVceDgwXHg4MFx4
ODBceDAwXHgwMFx4NDFceGI0XHgwMlx4MGJceGFiXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgw
MFx4NDFceDAwXHg0Nlx4MDRceDQwXHg0MVx4MDBceDEzXHgwMVx4MDBceDBiXHgyMFx4MDBceDQx
XHgwMVx4NDZceDA0XHg0MFx4NDFceDAwXHgxM1x4MDFceDAxXHgwYlx4MjBceDAwXHg0MVx4MDJc
eDQ2XHgwNFx4NDBceDQxXHgwMFx4MTNceDAxXHgwMlx4MGJceDQxXHgwMFx4MGJceDhiXHg4MFx4
ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NDJceDAxXHg0MVx4MGRceDEzXHgxNlx4MDBceDBiXHg5
YVx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDUwXHgwNFx4N2VceDIwXHgwMVx4MDVceDIw
XHgwMFx4NDJceDAxXHg3ZFx4MjBceDAwXHgyMFx4MDFceDdlXHg0MVx4MGRceDEzXHgxNlx4MDBc
eDBiXHgwYlx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg0NVx4MDRceDdmXHg0MVx4
MmNceDA1XHgyMFx4MDBceDQxXHgwMVx4NmJceDQxXHgwZlx4MTNceDA1XHgwMFx4MGJceDBiXHg5
Nlx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDQ1XHgwNFx4N2ZceDQxXHhlM1x4MDBceDA1
XHgyMFx4MDBceDQxXHgwMVx4NmJceDQxXHgwZVx4MTNceDA1XHgwMFx4MGJceDBiIik7CisKKy8v
IHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjEzCithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwo
JDEsICJ0eXBlLWkzMiIsIFtdKSwgMzA2KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2Fz
dDoyMTQKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4
N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgw
Mlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdl
XHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5
XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2
ZVx4MDBceDA2XHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAw
XHgwMFx4MDJceDQwXHgxMFx4MDBceDAxXHg0Mlx4ZTRceDAyXHgwMVx4NTFceDQ1XHgwZFx4MDBc
eDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRf
cmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWk2NCIsIFtdKSwgaW50NjQoIjM1NiIpKQorCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIxNQorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2RceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDMz
XHgzMlx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2
XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4
MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4YmNceDQzXHgw
MFx4MjBceDczXHg0NVx4YmNceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9y
dHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAi
dHlwZS1mMzIiLCBbXSksIDM4OTAuKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIx
NgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4
MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2
Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2NceDAy
XHg4NFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhc
eDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDM2XHgzNFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDcz
XHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4
NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4
MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgw
MFx4MDZceDBhXHg5ZVx4ODBceDgwXHg4MFx4MDBceDAxXHg5OFx4ODBceDgwXHg4MFx4MDBceDAw
XHgwMlx4NDBceDEwXHgwMFx4YmRceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceGM4XHhhZVx4NDBc
eGJkXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVu
IiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtZjY0IiwgW10p
LCAzOTQwLikKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMTgKK3J1bigoKSA9PiBj
YWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4
MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAx
XHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2Zc
eDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4ODZceDgxXHg4MFx4
ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBhXHg3NFx4NzlceDcwXHg2
NVx4MmRceDY5XHg2ZVx4NjRceDY1XHg3OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNc
eDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3
NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAx
XHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZc
eDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4
NDBceDEwXHgwMFx4MDFceDQyXHhlNFx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgw
MFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkg
PT4gY2FsbCgkMSwgInR5cGUtaW5kZXgiLCBbXSksIGludDY0KCIxMDAiKSkKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDoyMjAKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5
cGUtZmlyc3QtaTMyIiwgW10pLCAzMik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6
MjIxCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdm
XHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJc
eDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZVx4
MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgw
ZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2OVx4MzZceDM0
XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAw
XHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk4XHg4MFx4ODBceDgwXHgwMFx4
MDFceDkyXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHgwMVx4NDJceGMwXHgw
MFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJy
dW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1maXJzdC1p
NjQiLCBbXSksIGludDY0KCI2NCIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIy
MgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4
MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2
Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2RceDAy
XHg4YVx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGVc
eDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjZceDMzXHgzMlx4
MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4
NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4
MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgw
MFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4MDBceDAx
XHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4YmNceDQzXHhjM1x4ZjVc
eGE4XHgzZlx4YmNceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEp
KSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1m
aXJzdC1mMzIiLCBbXSksIDEuMzIwMDAwMDUyNDUpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6MjIzCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4
MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2
MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAx
XHg3Y1x4MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNc
eDY1XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2Nlx4
MzZceDM0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4ODBceDgw
XHgwMFx4MDFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiZFx4NDRc
eDNkXHgwYVx4ZDdceGEzXHg3MFx4M2RceGZhXHgzZlx4YmRceDUxXHg0NVx4MGRceDAwXHgwZlx4
MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAidHlwZS1maXJzdC1mNjQiLCBbXSksIDEuNjQpCisKKy8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6MjI1Cithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0
eXBlLXNlY29uZC1pMzIiLCBbXSksIDMyKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2Fz
dDoyMjYKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4
N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgw
Mlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdl
XHgwMlx4OGJceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDBmXHg3NFx4NzlceDcwXHg2NVx4MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJkXHg2OVx4
MzZceDM0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk4XHg4MFx4ODBceDgw
XHgwMFx4MDFceDkyXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHgwMVx4NDJc
eGMwXHgwMFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEp
KSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1z
ZWNvbmQtaTY0IiwgW10pLCBpbnQ2NCgiNjQiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDoyMjcKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgw
MVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYw
XHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFc
eDdkXHgwMlx4OGJceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4
NjVceDBmXHg3NFx4NzlceDcwXHg2NVx4MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJkXHg2
Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiY1x4
NDNceDAwXHgwMFx4MDBceDQyXHhiY1x4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwg
ZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwo
JDEsICJ0eXBlLXNlY29uZC1mMzIiLCBbXSksIDMyLikKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJl
Y3Qud2FzdDoyMjgKK3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYw
XHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2Zc
eDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4
MDFceDdjXHgwMlx4OGJceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2
Y1x4NjVceDBmXHg3NFx4NzlceDcwXHg2NVx4MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJk
XHg2Nlx4MzZceDM0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhi
ZFx4NDRceDY2XHg2Nlx4NjZceDY2XHg2Nlx4MDZceDUwXHg0MFx4YmRceDUxXHg0NVx4MGRceDAw
XHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0
X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1zZWNvbmQtZjY0IiwgW10pLCA2NC4xKQorCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIzMAorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgw
MFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYx
XHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDA1XHg0
Mlx4MDJceDEwXHgwMFx4MDFceDQyXHgwMlx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAw
XHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbNSwgaW50NjQoIjIiKV0pLCBpbnQ2NCgiMiIpKQorCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIzMQorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgw
MFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYx
XHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDA1XHg0
Mlx4MDVceDEwXHgwMFx4MDFceDQyXHgwNVx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAw
XHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbNSwgaW50NjQoIjUiKV0pLCBpbnQ2NCgiNSIpKQorCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIzMgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgw
MFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYx
XHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDljXHg4MFx4
ODBceDgwXHgwMFx4MDFceDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDBjXHg0
Mlx4MDVceDEwXHgwMFx4MDFceDQyXHhmOFx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBi
XHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4o
KCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoIiwgWzEyLCBpbnQ2NCgiNSIpXSksIGludDY0KCIxMjAi
KSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMzMKK3J1bigoKSA9PiBjYWxsKGlu
c3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBc
eDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4
MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgw
Mlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgw
XHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNc
eDcwXHg2MVx4NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3
MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4
MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5
Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQx
XHgxMVx4NDJceDAyXHgxMFx4MDBceDAxXHg0Mlx4MDJceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZc
eDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1
cm4oKCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoIiwgWzE3LCBpbnQ2NCgiMiIpXSksIGludDY0KCIy
IikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjM0Cithc3NlcnRfdHJhcCgoKSA9
PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1
XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBc
eDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4
N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4
NFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0
XHg2OVx4NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4
MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
NFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBc
eDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4
MDZceDBhXHg5M1x4ODBceDgwXHg4MFx4MDBceDAxXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAwXHgw
Mlx4NDBceDQxXHgwMFx4NDJceDAyXHgxMFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygk
MSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0
Y2giLCBbMCwgaW50NjQoIjIiKV0pKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIz
NQorYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4
MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2
MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdm
XHg3ZVx4MDFceDdlXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDA4XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3
Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDcz
XHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4
NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4
ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgw
M1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMVx4OGRceDgw
XHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0MVx4MGZceDQyXHgwMlx4MTBceDAwXHgwZlx4MGJc
eDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAoKCkg
PT4gY2FsbCgkMSwgImRpc3BhdGNoIiwgWzE1LCBpbnQ2NCgiMiIpXSkpCisKKy8vIHJldHVybl9j
YWxsX2luZGlyZWN0Lndhc3Q6MjM2Cithc3NlcnRfdHJhcCgoKSA9PiBjYWxsKGluc3RhbmNlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4
MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2
MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcw
XHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBc
eDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNceDcwXHg2MVx4
NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
OVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgw
M1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4
NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4
MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5M1x4ODBceDgw
XHg4MFx4MDBceDAxXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgxNFx4NDJc
eDAyXHgxMFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMjAsIGludDY0KCIy
IildKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMzcKK2Fzc2VydF90cmFwKCgp
ID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2
MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAx
XHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4MDJc
eDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4
NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAw
XHgwNlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDBc
eDAyXHg0MFx4NDFceDdmXHg0Mlx4MDJceDEwXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDEsICJkaXNw
YXRjaCIsIFstMSwgaW50NjQoIjIiKV0pKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0
OjIzOAorYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2
MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdm
XHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJc
eDdmXHg3ZVx4MDFceDdlXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4
NjRceDc1XHg2Y1x4NjVceDA4XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgw
Nlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3
M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgw
M1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAx
XHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTdceDgwXHg4MFx4ODBceDAwXHgwMVx4OTFc
eDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0MVx4ZTdceDg0XHhjZVx4YzJceDA0XHg0Mlx4
MDJceDEwXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsg
IC8vIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFsxXzIxM180MzJfNDIz
LCBpbnQ2NCgiMiIpXSkpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjQwCitydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhNFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4
Zlx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0
XHg2OVx4NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRc
eDc1XHg3Mlx4NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1
Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNc
eDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4
ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk5XHg4
MFx4ODBceDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDA1
XHgxMFx4MDBceDAxXHg0Mlx4MDlceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIi
LCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2Fs
bCgkMSwgImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBbNV0pLCBpbnQ2NCgiOSIpKQorCisvLyByZXR1
cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0MQorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4
NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgw
MVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAx
XHg3Zlx4NjBceDAxXHg3Zlx4MDFceDdlXHgwMlx4OGZceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZc
eDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDEzXHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4
NjhceDJkXHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYxXHg2Y1x4MDBceDA2XHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4
MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1
Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4
Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAz
XHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OVx4ODBceDgwXHg4MFx4MDBceDAxXHg5M1x4ODBc
eDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgwNVx4MTBceDAwXHgwMVx4NDJceDA5XHgwMVx4
NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtd
KSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaC1zdHJ1Y3R1cmFs
IiwgWzVdKSwgaW50NjQoIjkiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNDIK
K3J1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAx
XHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZc
eDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2ZceDAxXHg3ZVx4
MDJceDhmXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgx
M1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgyZFx4NzNceDc0XHg3Mlx4NzVceDYz
XHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4
NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZl
XHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBc
eDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4
OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0
MVx4MGNceDEwXHgwMFx4MDFceDQyXHg4MFx4OTNceDE2XHgwMVx4NTFceDQ1XHgwZFx4MDBceDBm
XHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0
dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaC1zdHJ1Y3R1cmFsIiwgWzEyXSksIGludDY0KCIz
NjJfODgwIikpCisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjQzCitydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4ODFc
eDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2OVx4
NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1XHg3
Mlx4NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk5XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDExXHgxMFx4
MDBceDAxXHg0Mlx4MDlceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBv
cnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwg
ImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBbMTddKSwgaW50NjQoIjkiKSkKKworLy8gcmV0dXJuX2Nh
bGxfaW5kaXJlY3Qud2FzdDoyNDQKK2Fzc2VydF90cmFwKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgw
N1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYw
XHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBc
eDAxXHg3Zlx4NjBceDAxXHg3Zlx4MDFceDdlXHgwMlx4OGZceDgxXHg4MFx4ODBceDAwXHgwNlx4
MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDEzXHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2
M1x4NjhceDJkXHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYxXHg2Y1x4MDBceDA2
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDcz
XHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAz
XHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5MVx4ODBceDgwXHg4MFx4MDBceDAxXHg4Ylx4
ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgwYlx4MTBceDAwXHgwZlx4MGJceDAwXHgw
YiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAoKCkgPT4gY2Fs
bCgkMSwgImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBbMTFdKSkKKworLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDoyNDUKK2Fzc2VydF90cmFwKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBc
eDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4
NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3
Zlx4NjBceDAxXHg3Zlx4MDFceDdlXHgwMlx4OGZceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZk
XHg2Zlx4NjRceDc1XHg2Y1x4NjVceDEzXHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4Njhc
eDJkXHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYxXHg2Y1x4MDBceDA2XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFc
eDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3
Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5MVx4ODBceDgwXHg4MFx4MDBceDAxXHg4Ylx4ODBceDgw
XHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgxMFx4MTBceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4
cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbCgkMSwg
ImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBbMTZdKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDoyNDcKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImNhbGwtdGFiIiwgWzBdKSwg
MzA2KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNDgKK2Fzc2VydF9yZXR1cm4o
KCkgPT4gY2FsbCgkMSwgImNhbGwtdGFiIiwgWzFdKSwgMzA3KTsKKworLy8gcmV0dXJuX2NhbGxf
aW5kaXJlY3Qud2FzdDoyNDkKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImNhbGwtdGFi
IiwgWzJdKSwgMzA4KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNTEKK3J1bigo
KSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4
NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgw
MVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3ZVx4MDJceGZm
XHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NjZc
eDYxXHg2M1x4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OVx4ODBceDgwXHg4
MFx4MDBceDAxXHg5M1x4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwMFx4MTBceDAw
XHgwMVx4NDJceDAxXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0
cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJm
YWMiLCBbaW50NjQoIjAiKV0pLCBpbnQ2NCgiMSIpKQorCisvLyByZXR1cm5fY2FsbF9pbmRpcmVj
dC53YXN0OjI1MgorcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBc
eDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4
NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3
ZVx4MDFceDdlXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1
XHg2Y1x4NjVceDAzXHg2Nlx4NjFceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJc
eDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4
NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1
XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4
MGFceDk5XHg4MFx4ODBceDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0
MFx4NDJceDAxXHgxMFx4MDBceDAxXHg0Mlx4MDFceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBi
XHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4o
KCkgPT4gY2FsbCgkMSwgImZhYyIsIFtpbnQ2NCgiMSIpXSksIGludDY0KCIxIikpCisKKy8vIHJl
dHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjUzCitydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgw
MFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3
XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBc
eDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4
MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2VceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDY2XHg2MVx4NjNceDAwXHgwNlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
Mlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJc
eDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFceDgwXHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4
ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDVceDEwXHgwMFx4MDFceDQyXHhmOFx4MDBceDAxXHg1
MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10p
KTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImZhYyIsIFtpbnQ2NCgiNSIpXSks
IGludDY0KCIxMjAiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNTQKK3J1bigo
KSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4
NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgw
MVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3ZVx4MDJceGZm
XHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NjZc
eDYxXHg2M1x4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHhhMlx4ODBceDgwXHg4
MFx4MDBceDAxXHg5Y1x4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgxOVx4MTBceDAw
XHgwMVx4NDJceDgwXHg4MFx4ODBceGRlXHg4N1x4OTJceGVjXHhjZlx4ZTFceDAwXHgwMVx4NTFc
eDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJmYWMiLCBbaW50NjQoIjI1IildKSwg
aW50NjQoIjdfMDM0XzUzNV8yNzdfNTczXzk2M183NzYiKSkKKworLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDoyNTYKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV2ZW4iLCBbMF0p
LCA0NCk7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjU3Cithc3NlcnRfcmV0dXJu
KCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzFdKSwgOTkpOworCisvLyByZXR1cm5fY2FsbF9pbmRp
cmVjdC53YXN0OjI1OAorYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZXZlbiIsIFsxMDBd
KSwgNDQpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI1OQorYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAiZXZlbiIsIFs3N10pLCA5OSk7CisKKy8vIHJldHVybl9jYWxsX2lu
ZGlyZWN0Lndhc3Q6MjYwCithc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzEw
MF8wMDBdKSwgNDQpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2MQorYXNzZXJ0
X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZXZlbiIsIFsxMTFfMTExXSksIDk5KTsKKworLy8gcmV0
dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNjIKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwg
Im9kZCIsIFswXSksIDk5KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNjMKK2Fz
c2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9kZCIsIFsxXSksIDQ0KTsKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDoyNjQKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9k
ZCIsIFsyMDBdKSwgOTkpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2NQorYXNz
ZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzc3XSksIDQ0KTsKKworLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDoyNjYKK2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9k
ZCIsIFsyMDBfMDAyXSksIDk5KTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNjcK
K2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9kZCIsIFszMDBfMDAzXSksIDQ0KTsKKwor
Ly8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNzIKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2Nc
eDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4
NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6Mjg0Cithc3NlcnRfbWFs
Zm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFc
eDc1XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI5
NgorYXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1
XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDozMDgKK2Fzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2
Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJl
dHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MzIwCithc3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4
NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgz
ZSIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjMzMgorYXNzZXJ0X21hbGZvcm1l
ZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4
NmZceDc0XHg2NVx4M2UiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDozNDQKK2Fz
c2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRc
eDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6MzUxCithc3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcy
XHg2ZFx4NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5f
Y2FsbF9pbmRpcmVjdC53YXN0OjM2MQorYXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2
Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsK
KworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDozNzEKK2Fzc2VydF9tYWxmb3JtZWQoIlx4
M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3
NFx4NjVceDNlIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MzgzCithc3NlcnRf
bWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4
NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0
OjM5OAorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
MVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgw
XHgwMFx4MDFceDAwXHgwYVx4OGRceDgwXHg4MFx4ODBceDAwXHgwMVx4ODdceDgwXHg4MFx4ODBc
eDAwXHgwMFx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbF9pbmRp
cmVjdC53YXN0OjQwNgorLy8gTk9URToKKy8vICAgKG1vZHVsZQorLy8gICAgKHR5cGUgKGZ1bmMp
KQorLy8gICAgKHRhYmxlIDAgZnVuY3JlZikKKy8vICAgIChmdW5jICR0eXBlLXZvaWQtdnMtbnVt
IChpMzIuZXF6IChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDApKSkp
CisvLyAgKQorLy8gVGhpcyB2YWxpZGF0ZXMgc2luY2UgdW5yZWFjaGFibGUgYmluYXJ5IG9wcyBh
cmUgaWdub3JlZCBpbiBXYXNtRnVuY3Rpb25QYXJzZXIuCisvL2Fzc2VydF9pbnZhbGlkKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4
ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg4ZVx4ODBceDgwXHg4MFx4MDBceDAxXHg4
OFx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMFx4MDBceDQ1XHgwYiIpOworCisv
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjQxNAorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBc
eDAwXHgwMVx4N2VceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4
MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg4ZVx4ODBceDgwXHg4
MFx4MDBceDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMFx4MDBceDQ1
XHgwYiIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjQyMworYXNzZXJ0X2ludmFs
aWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBc
eDAwXHgwMlx4NjBceDAxXHg3Zlx4MDBceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4
MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg4
ZFx4ODBceDgwXHg4MFx4MDBceDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEz
XHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDMxCithc3Nl
cnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBc
eDgwXHg4MFx4MDBceDAyXHg2MFx4MDJceDdjXHg3Zlx4MDBceDYwXHgwMFx4MDBceDAzXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgw
MFx4MDBceDBhXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAw
XHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndh
c3Q6NDQwCitsZXQgJDIgPSBpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDBceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAw
XHgwYVx4OGZceDgwXHg4MFx4ODBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFc
eDAxXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6NDQ2CitsZXQgJDMgPSBpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAwXHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBc
eDAwXHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4
NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHg0MFx4NDFceDAxXHg0MVx4MDBceDEzXHgw
MFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDU0Cithc3NlcnRf
aW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4ODBceDgw
XHg4MFx4MDBceDAyXHg2MFx4MDFceDdmXHgwMFx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4
MGFceDhlXHg4MFx4ODBceDgwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgw
MVx4MDFceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6
NDYyCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHg4OFx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDFceDdmXHgwMFx4NjBceDAwXHgwMFx4MDNc
eDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4
NzBceDAwXHgwMFx4MGFceDhmXHg4MFx4ODBceDgwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgw
MFx4MDBceDQxXHgwMFx4NDJceDAxXHgxM1x4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0OjQ3MQorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAyXHg3Zlx4N2Zc
eDAwXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4
ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OTBceDgwXHg4MFx4ODBceDAwXHgw
MVx4OGFceDgwXHg4MFx4ODBceDAwXHgwMFx4MDFceDQxXHgwMVx4NDFceDAwXHgxM1x4MDBceDAw
XHgwYiIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjQ4MQorYXNzZXJ0X2ludmFs
aWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBc
eDAwXHgwMlx4NjBceDAyXHg3Zlx4N2ZceDAwXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgw
YVx4OTBceDgwXHg4MFx4ODBceDAwXHgwMVx4OGFceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAx
XHgwMVx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOworCisvLyByZXR1cm5fY2FsbF9pbmRpcmVj
dC53YXN0OjQ5MQorYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAyXHg3Zlx4N2NceDAwXHg2MFx4
MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4ODBceDgwXHg4
MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgw
XHg4MFx4ODBceDAwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceGYwXHgzZlx4NDFc
eDAxXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0
Lndhc3Q6NTAxCithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDJceDdjXHg3Zlx4MDBceDYwXHgw
MFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgw
XHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAxXHg5Mlx4ODBc
eDgwXHg4MFx4MDBceDAwXHg0MVx4MDFceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHhmMFx4
M2ZceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDo1MTUKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgw
XHg4MFx4MDBceDAxXHgwMFx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBc
eDBhXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4
MDBceDEzXHgwMVx4MDBceDBiIik7CisKKy8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NTIy
Cithc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4
NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OTFc
eDgwXHg4MFx4ODBceDAwXHgwMVx4OGJceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4
OTRceDk4XHhkYlx4ZTJceDAzXHgwMFx4MGIiKTsKKworLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDo1MzMKK2Fzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDRceDg1XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMVx4MDJceDAyXHgwOVx4ODhceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDQxXHgwMFx4MGJceDAyXHgwMFx4MDAiKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9yZXR1cm4tY2FsbC9yZXR1cm4tY2FsbC5qcyBiL0pTVGVzdHMvd2Fz
bS9yZXR1cm4tY2FsbC9yZXR1cm4tY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODBmNDMyZDNlNTk4M2I0
OTk2N2U0YjE2ODdmZmMxODJlYzIzNjRkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNt
L3JldHVybi1jYWxsL3JldHVybi1jYWxsLmpzCkBAIC0wLDAgKzEsNzEwIEBACitpbXBvcnQgKiBh
cyBhc3NlcnQgZnJvbSAiLi4vYXNzZXJ0LmpzIjsKK2ltcG9ydCBCdWlsZGVyIGZyb20gIi4uL0J1
aWxkZXIuanMiOworCitjb25zdCBkZWZhdWx0RXhwb3J0U2l6ZSA9IDU7Citjb25zdCBzaWduYXR1
cmVNYXhBcml0eSA9IDUwOworY29uc3QgdmVyYm9zZSA9IDA7CisKK2NsYXNzIFR5cGVHZW5lcmF0
b3IgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICBjb25zdCBmbG9hdDY0Rmxvb3IgPSAodmFsdWUp
ID0+IHsKKyAgICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlKTsKKyAgICB9OworICAgIGNvbnN0
IGZsb2F0NjRGbG9hdDMyID0gKHZhbHVlKSA9PiB7CisgICAgICByZXR1cm4gTWF0aC5mcm91bmQo
dmFsdWUpOworICAgIH07CisgICAgY29uc3QgZmxvYXQ2NCA9ICh2YWx1ZSkgPT4geworICAgICAg
cmV0dXJuIHZhbHVlOworICAgIH07CisgICAgdGhpcy5nZW5lcmF0b3JNYXAgPSBuZXcgTWFwKCk7
CisgICAgdGhpcy5nZW5lcmF0b3JNYXAuc2V0KCJpMzIiLCB7CisgICAgICB0b0pTOiBmbG9hdDY0
Rmxvb3IsCisgICAgICB0b0J1aWxkZXJUeXBlOiAodmFsdWUsIGJ1aWxkZXIpID0+IHsKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIuSTMyQ29uc3QodmFsdWUpOworICAgICAgfSwKKyAgICAgIHRvQnVp
bGRlckxvYWQ6IChpbW0xLCBpbW0yLCBidWlsZGVyKSA9PiB7CisgICAgICAgIHJldHVybiBidWls
ZGVyLkkzMkxvYWQoaW1tMSwgaW1tMik7CisgICAgICB9LAorICAgICAgdG9CdWlsZGVyU3RvcmU6
IChpbW0xLCBpbW0yLCBidWlsZGVyKSA9PiB7CisgICAgICAgIHJldHVybiBidWlsZGVyLkkzMlN0
b3JlKGltbTEsIGltbTIpOworICAgICAgfSwKKyAgICB9KTsKKyAgICB0aGlzLmdlbmVyYXRvck1h
cC5zZXQoImk2NCIsIHsKKyAgICAgIHRvSlM6ICh2YWx1ZSkgPT4geworICAgICAgICByZXR1cm4g
TWF0aC5mbG9vcih2YWx1ZSk7CisgICAgICB9LAorICAgICAgdG9CdWlsZGVyVHlwZTogKHZhbHVl
LCBidWlsZGVyKSA9PiB7CisgICAgICAgIHJldHVybiBidWlsZGVyLkk2NENvbnN0KHZhbHVlKTsK
KyAgICAgIH0sCisgICAgICB0b0J1aWxkZXJMb2FkOiAoaW1tMSwgaW1tMiwgYnVpbGRlcikgPT4g
eworICAgICAgICByZXR1cm4gYnVpbGRlci5JNjRMb2FkKGltbTEsIGltbTIpOworICAgICAgfSwK
KyAgICAgIHRvQnVpbGRlclN0b3JlOiAoaW1tMSwgaW1tMiwgYnVpbGRlcikgPT4geworICAgICAg
ICByZXR1cm4gYnVpbGRlci5JNjRTdG9yZShpbW0xLCBpbW0yKTsKKyAgICAgIH0sCisgICAgfSk7
CisgICAgdGhpcy5nZW5lcmF0b3JNYXAuc2V0KCJmMzIiLCB7CisgICAgICB0b0pTOiBmbG9hdDY0
RmxvYXQzMiwKKyAgICAgIHRvQnVpbGRlclR5cGU6ICh2YWx1ZSwgYnVpbGRlcikgPT4geworICAg
ICAgICByZXR1cm4gYnVpbGRlci5GMzJDb25zdCh2YWx1ZSk7CisgICAgICB9LAorICAgICAgdG9C
dWlsZGVyTG9hZDogKGltbTEsIGltbTIsIGJ1aWxkZXIpID0+IHsKKyAgICAgICAgcmV0dXJuIGJ1
aWxkZXIuRjMyTG9hZChpbW0xLCBpbW0yKTsKKyAgICAgIH0sCisgICAgICB0b0J1aWxkZXJTdG9y
ZTogKGltbTEsIGltbTIsIGJ1aWxkZXIpID0+IHsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuRjMy
U3RvcmUoaW1tMSwgaW1tMik7CisgICAgICB9LAorICAgIH0pOworICAgIHRoaXMuZ2VuZXJhdG9y
TWFwLnNldCgiZjY0IiwgeworICAgICAgdG9KUzogZmxvYXQ2NCwKKyAgICAgIHRvQnVpbGRlclR5
cGU6ICh2YWx1ZSwgYnVpbGRlcikgPT4geworICAgICAgICByZXR1cm4gYnVpbGRlci5GNjRDb25z
dCh2YWx1ZSk7CisgICAgICB9LAorICAgICAgdG9CdWlsZGVyTG9hZDogKGltbTEsIGltbTIsIGJ1
aWxkZXIpID0+IHsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuRjY0TG9hZChpbW0xLCBpbW0yKTsK
KyAgICAgIH0sCisgICAgICB0b0J1aWxkZXJTdG9yZTogKGltbTEsIGltbTIsIGJ1aWxkZXIpID0+
IHsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuRjY0U3RvcmUoaW1tMSwgaW1tMik7CisgICAgICB9
LAorICAgIH0pOworICAgIHRoaXMudHlwZXMgPSBBcnJheS5mcm9tKHRoaXMuZ2VuZXJhdG9yTWFw
LmtleXMoKSk7CisgIH0KKyAgZ2V0KGtleSkgeworICAgIHJldHVybiB0aGlzLmdlbmVyYXRvck1h
cC5nZXQoa2V5KTsKKyAgfQorICBnZXRSYW5kb21UeXBlKCkgeworICAgIGNvbnN0IGxlbmd0aCA9
IHRoaXMuZ2VuZXJhdG9yTWFwLnNpemU7CisgICAgY29uc3QgaW5kZXggPSBNYXRoLmZsb29yKE1h
dGgucmFuZG9tKCkgKiBsZW5ndGgpOworICAgIHJldHVybiB0aGlzLnR5cGVzW2luZGV4XTsKKyAg
fQorICBjcmVhdGVTaWduYXR1cmUocGFyYW1zTGVuLCByZXR1cm5MZW4sIHR5cGUpIHsKKyAgICBw
YXJhbXNMZW4gPSBwYXJhbXNMZW4gPT0gdW5kZWZpbmVkCisgICAgICA/IE1hdGguZmxvb3IoTWF0
aC5yYW5kb20oKSAqIHNpZ25hdHVyZU1heEFyaXR5KQorICAgICAgOiBwYXJhbXNMZW47CisgICAg
cmV0dXJuTGVuID0gcmV0dXJuTGVuID09IHVuZGVmaW5lZAorICAgICAgPyBNYXRoLmZsb29yKE1h
dGgucmFuZG9tKCkgKiBzaWduYXR1cmVNYXhBcml0eSkKKyAgICAgIDogcmV0dXJuTGVuOworICAg
IHJldHVybiB7CisgICAgICBwYXJhbXM6IEFycmF5LmZyb20oCisgICAgICAgIHsgbGVuZ3RoOiBw
YXJhbXNMZW4gfSwKKyAgICAgICAgKCkgPT4gdHlwZSA/IHR5cGUgOiB0eXBlR2VuZXJhdG9yLmdl
dFJhbmRvbVR5cGUoKSwKKyAgICAgICksCisgICAgICByZXQ6IEFycmF5LmZyb20oCisgICAgICAg
IHsgbGVuZ3RoOiByZXR1cm5MZW4gfSwKKyAgICAgICAgKCkgPT4gdHlwZSA/IHR5cGUgOiB0eXBl
R2VuZXJhdG9yLmdldFJhbmRvbVR5cGUoKSwKKyAgICAgICksCisgICAgfTsKKyAgfQorICBqc0Fy
Z0Zyb21XYXNtVHlwZSh2YWx1ZSwgdHlwZSkgeworICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5nZW5l
cmF0b3JNYXAuZ2V0KHR5cGUpOworICAgIGlmIChlbnRyeSA9PSB1bmRlZmluZWQpIHsKKyAgICAg
IHRocm93IG5ldyBFcnJvcihgZW50cnkgbm90IGZvdW5kOiAke3R5cGV9YCk7CisgICAgfQorICAg
IHJldHVybiBlbnRyeS50b0pTKHZhbHVlKTsKKyAgfQorICBidWlsZGVyTG9hZEZyb21XYXNtVHlw
ZShpbW0xLCBpbW0yLCB0eXBlLCBidWlsZGVyKSB7CisgICAgY29uc3QgZW50cnkgPSB0aGlzLmdl
bmVyYXRvck1hcC5nZXQodHlwZSk7CisgICAgaWYgKGVudHJ5ID09IHVuZGVmaW5lZCkgeworICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBlbnRyeSBub3QgZm91bmQ6ICR7dHlwZX1gKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGVudHJ5LnRvQnVpbGRlckxvYWQoaW1tMSwgaW1tMiwgYnVpbGRlcik7CisgIH0K
KyAganNBcmdGcm9tV2FzbVNpZ25hdHVyZSh2YWx1ZSwgdHlwZSkgeworICAgIHN3aXRjaCAodHlw
ZSkgeworICAgICAgY2FzZSAiaTMyIjoKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodmFsdWUp
OworICAgICAgY2FzZSAiaTY0IjoKKyAgICAgICAgcmV0dXJuIEJpZ0ludChNYXRoLmZsb29yKHZh
bHVlKSk7CisgICAgICBjYXNlICJmMzIiOgorICAgICAgICByZXR1cm4gTWF0aC5mcm91bmQodmFs
dWUpOworICAgICAgY2FzZSAiZjY0IjoKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAg
fQorICBqc0FyZ3NGcm9tV2FzbVBhcmFtcyhwYXJhbXMpIHsKKyAgICBjb25zdCB2YWx1ZXMgPSBB
cnJheS5mcm9tKHBhcmFtcywgKCkgPT4geworICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiAw
eDIwOworICAgIH0pOworICAgIHJldHVybiBBcnJheS5mcm9tKHZhbHVlcywgKHZhbCwgaW5kZXgp
ID0+IHsKKyAgICAgIHJldHVybiB0aGlzLmpzQXJnRnJvbVdhc21TaWduYXR1cmUodmFsLCBwYXJh
bXNbaW5kZXhdKTsKKyAgICB9KTsKKyAgfQorICBidWlsZGVyVHlwZUZyb21XYXNtVHlwZSh2YWx1
ZSwgdHlwZSwgYnVpbGRlcikgeworICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5nZW5lcmF0b3JNYXAu
Z2V0KHR5cGUpOworICAgIGlmIChlbnRyeSA9PSB1bmRlZmluZWQpIHsKKyAgICAgIHRocm93IG5l
dyBFcnJvcihgZW50cnkgbm90IGZvdW5kOiAke3R5cGV9YCk7CisgICAgfQorICAgIHJldHVybiBl
bnRyeS50b0J1aWxkZXJUeXBlKHZhbHVlLCBidWlsZGVyKTsKKyAgfQorfQorCitjb25zdCB0eXBl
R2VuZXJhdG9yID0gbmV3IFR5cGVHZW5lcmF0b3IoKTsKKworLy8gQnVpbGRlciBoZWxwZXJzCisK
K2NvbnN0IGNyZWF0ZUJ1aWxkZXIgPSAoYnVpbGRlckluZm8pID0+IHsKKyAgY29uc3QgZnVuYyA9
IGJ1aWxkZXJJbmZvWyJmdW5jIl07CisKKyAgY29uc3QgaW1wb3J0cyA9IGJ1aWxkZXJJbmZvWyJp
bXBvcnRzIl07CisgIGNvbnN0IHR5cGVzID0gYnVpbGRlckluZm9bInR5cGVzIl07CisgIGNvbnN0
IGV4cG9ydHMgPSBidWlsZGVySW5mb1siZXhwb3J0cyJdOworICBjb25zdCB1c2VSZXR1cm5DYWxs
ID0gYnVpbGRlckluZm9bInVzZVJldHVybkNhbGwiXTsKKworICBsZXQgYnVpbGRlciA9IG5ldyBC
dWlsZGVyKCk7CisgIGJ1aWxkZXIgPSBjcmVhdGVUeXBlcyhidWlsZGVyLCB0eXBlcyk7CisgIGJ1
aWxkZXIgPSBjcmVhdGVJbXBvcnRzKGJ1aWxkZXIsIGltcG9ydHMpLkZ1bmN0aW9uKCkuRW5kKCk7
CisgIGlmIChidWlsZGVySW5mb1sidGFibGUiXSkKKyAgICBidWlsZGVyID0gYnVpbGRlci5UYWJs
ZSgpLlRhYmxlKGJ1aWxkZXJJbmZvWyJ0YWJsZSJdKS5FbmQoKTsKKyAgYnVpbGRlciA9IGNyZWF0
ZUV4cG9ydHMoYnVpbGRlciwgZXhwb3J0cyk7CisgIGlmIChidWlsZGVySW5mb1siZWxlbWVudCJd
KQorICAgIGJ1aWxkZXIgPSBidWlsZGVyLkVsZW1lbnQoKS5FbGVtZW50KGJ1aWxkZXJJbmZvWyJl
bGVtZW50Il0pLkVuZCgpOworICByZXR1cm4gY3JlYXRlQ29kZShidWlsZGVyLCBmdW5jLCB1c2VS
ZXR1cm5DYWxsKTsKK307CisKK2NvbnN0IGNyZWF0ZUltcG9ydHMgPSAoYnVpbGRlciwgaW1wb3J0
cykgPT4geworICBpZiAoaW1wb3J0cyA9PSB1bmRlZmluZWQgfHwgaW1wb3J0c1siaW1wIl0gPT0g
dW5kZWZpbmVkKSB7CisgICAgcmV0dXJuIGJ1aWxkZXI7CisgIH0KKyAgYnVpbGRlciA9IGJ1aWxk
ZXIuSW1wb3J0KCk7CisgIGZvciAoY29uc3QgaW1wb3J0VHlwZSBvZiBPYmplY3Qua2V5cyhpbXBv
cnRzWyJpbXAiXSkpIHsKKyAgICBzd2l0Y2ggKGltcG9ydFR5cGUpIHsKKyAgICAgIGNhc2UgIm1l
bW9yeSI6CisgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLk1lbW9yeSgiaW1wIiwgIm1lbW9yeSIs
IGltcG9ydHNbImltcCJdW2ltcG9ydFR5cGVdKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
ICJ0YWJsZSI6CisgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLlRhYmxlKCJpbXAiLCAidGFibGUi
LCBpbXBvcnRzWyJpbXAiXVtpbXBvcnRUeXBlXSk7CisgICAgICAgIGJyZWFrOworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuRnVuY3Rpb24oCisgICAgICAgICAgImlt
cCIsCisgICAgICAgICAgaW1wb3J0VHlwZSwKKyAgICAgICAgICBpbXBvcnRzWyJpbXAiXVtpbXBv
cnRUeXBlXSwKKyAgICAgICAgKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGJ1aWxkZXIuRW5kKCk7
Cit9OworCitjb25zdCBjcmVhdGVFeHBvcnRzID0gKGJ1aWxkZXIsIGZ1bmN0aW9ucykgPT4gewor
ICBsZXQgbmV3QnVpbGRlciA9IGJ1aWxkZXIuRXhwb3J0KCk7CisgIGlmIChmdW5jdGlvbnMgPT0g
dW5kZWZpbmVkKSB7CisgICAgcmV0dXJuIG5ld0J1aWxkZXIuRW5kKCk7CisgIH0KKyAgZm9yIChj
b25zdCBmIG9mIGZ1bmN0aW9ucykgeworICAgIG5ld0J1aWxkZXIgPSBuZXdCdWlsZGVyLkZ1bmN0
aW9uKGZbIm5hbWUiXSk7CisgIH0KKyAgcmV0dXJuIG5ld0J1aWxkZXIuRW5kKCk7Cit9OworCitj
b25zdCBjcmVhdGVDb2RlID0gKGJ1aWxkZXIsIGZ1bmN0aW9ucywgdXNlUmV0dXJuQ2FsbCkgPT4g
eworICBsZXQgbmV3QnVpbGRlciA9IGJ1aWxkZXIuQ29kZSgpOworICBmb3IgKGNvbnN0IGYgb2Yg
ZnVuY3Rpb25zKSB7CisgICAgbmV3QnVpbGRlciA9IGZbImJvZHkiXShuZXdCdWlsZGVyLCB1c2VS
ZXR1cm5DYWxsKTsKKyAgfQorICByZXR1cm4gbmV3QnVpbGRlci5FbmQoKTsKK307CisKK2NvbnN0
IGNyZWF0ZVR5cGVzID0gKGJ1aWxkZXIsIHNpZ25hdHVyZXMpID0+IHsKKyAgYnVpbGRlciA9IGJ1
aWxkZXIuVHlwZSgpOworICBpZiAoc2lnbmF0dXJlcyA9PSB1bmRlZmluZWQpIHsKKyAgICByZXR1
cm4gYnVpbGRlci5FbmQoKTsKKyAgfQorICBmb3IgKGNvbnN0IHMgb2Ygc2lnbmF0dXJlcykgewor
ICAgIGJ1aWxkZXIgPSBidWlsZGVyLkZ1bmMoc1sicGFyYW1zIl0sIHNbInJldCJdKTsKKyAgfQor
ICByZXR1cm4gYnVpbGRlci5FbmQoKTsKK307CisKKy8vIENvZGUgaGVscGVycworCitjb25zdCBj
cmVhdGVDYWxsZXIgPSAobmFtZSwgY2FsbGVlLCBjYWxsZXJTaWduYXR1cmUsIGlzSW5kaXJlY3Qp
ID0+IHsKKyAgcmV0dXJuIHsKKyAgICBuYW1lOiBuYW1lLAorICAgIHNpZ25hdHVyZTogY2FsbGVy
U2lnbmF0dXJlLAorICAgIGJvZHk6IChidWlsZGVyLCB1c2VSZXR1cm5DYWxsKSA9PiB7CisgICAg
ICBidWlsZGVyID0gcG9wdWxhdGVTdGFjaygKKyAgICAgICAgYnVpbGRlci5GdW5jdGlvbihuYW1l
LCBjYWxsZXJTaWduYXR1cmUpLAorICAgICAgICBjYWxsZXJTaWduYXR1cmUucGFyYW1zLAorICAg
ICAgICBjYWxsZWUuc2lnbmF0dXJlLnBhcmFtcywKKyAgICAgICAgKGJ1aWxkZXIsIHZhbHVlLCB0
eXBlKSA9PiB7CisgICAgICAgICAgY29uc3QganNBcmcgPSB0eXBlR2VuZXJhdG9yLmpzQXJnRnJv
bVdhc21UeXBlKHZhbHVlLCB0eXBlKTsKKyAgICAgICAgICByZXR1cm4gdHlwZUdlbmVyYXRvci5i
dWlsZGVyVHlwZUZyb21XYXNtVHlwZShqc0FyZywgdHlwZSwgYnVpbGRlcik7CisgICAgICAgIH0s
CisgICAgICApOworICAgICAgcmV0dXJuIGlzSW5kaXJlY3QgPworICAgICAgICB0cnlSZXR1cm5D
YWxsSW5kaXJlY3QoYnVpbGRlciwgdXNlUmV0dXJuQ2FsbCwgY2FsbGVlLmluZGV4LCAvKnRhYmxl
SW5kZXgqLzApLkVuZCgpIDoKKyAgICAgICAgdHJ5UmV0dXJuQ2FsbChidWlsZGVyLCB1c2VSZXR1
cm5DYWxsLCBjYWxsZWUuaW5kZXgpLkVuZCgpCisgICAgfSwKKyAgfTsKK307CisKK2NvbnN0IGRl
ZmF1bHRUYWlsRnVuY3RvciA9IChidWlsZGVyLCB2YWx1ZSwgdHlwZSkgPT4geworICBjb25zdCBq
c0FyZyA9IHR5cGVHZW5lcmF0b3IuanNBcmdGcm9tV2FzbVR5cGUodmFsdWUsIHR5cGUpOworICBy
ZXR1cm4gdHlwZUdlbmVyYXRvci5idWlsZGVyVHlwZUZyb21XYXNtVHlwZShqc0FyZywgdHlwZSwg
YnVpbGRlcik7Cit9OworCitjb25zdCBjcmVhdGVUYWlsRnVuY3Rpb24gPSAobmFtZSwgc2lnbmF0
dXJlLCBmdW5jdG9yKSA9PiB7CisgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJ0YWlsXyIgKyBuYW1l
OworICByZXR1cm4geworICAgIG5hbWU6IGZ1bmN0aW9uTmFtZSwKKyAgICBzaWduYXR1cmU6IHNp
Z25hdHVyZSwKKyAgICBib2R5OiAoYnVpbGRlcikgPT4geworICAgICAgcmV0dXJuIHBvcHVsYXRl
U3RhY2soCisgICAgICAgIGJ1aWxkZXIuRnVuY3Rpb24oZnVuY3Rpb25OYW1lLCBzaWduYXR1cmUp
LAorICAgICAgICBzaWduYXR1cmUucGFyYW1zLAorICAgICAgICBzaWduYXR1cmUucmV0LAorICAg
ICAgICBmdW5jdG9yID8gZnVuY3RvciA6IGRlZmF1bHRUYWlsRnVuY3RvciwKKyAgICAgICkuRW5k
KCk7CisgICAgfSwKKyAgfTsKK307CisKK2NvbnN0IHBvcHVsYXRlU3RhY2sgPSAoIGJ1aWxkZXIs
IGNhbGxlclBhcmFtc1NpZ25hdHVyZSwgY2FsbGVlUGFyYW1zU2lnbmF0dXJlLCBmdW5jdG9yKSA9
PiB7CisgIGxldCBpID0gMDsKKyAgY29uc3QgbWFwID0gbmV3IE1hcCgpOworCisgIGZvciAoIDsg
aSA8IE1hdGgubWluKGNhbGxlclBhcmFtc1NpZ25hdHVyZS5sZW5ndGgsIGNhbGxlZVBhcmFtc1Np
Z25hdHVyZS5sZW5ndGgpOyArK2kpIHsKKyAgICAvLyBnZXQgcmVxdWVzdGVkIHR5cGUgZnJvbSBj
YWxsZXIncyBzaWduYXR1cmUKKyAgICBsZXQgc2F2ZWRUeXBlSW5kaWNlcyA9IG1hcC5nZXQoY2Fs
bGVlUGFyYW1zU2lnbmF0dXJlW2ldKTsKKyAgICBpZiAoc2F2ZWRUeXBlSW5kaWNlcyA9PSB1bmRl
ZmluZWQpIHsKKyAgICAgIGNvbnN0IG5vdEZvdW5kID0gLTE7CisgICAgICBjb25zdCBuZXdUeXBl
ID0gY2FsbGVlUGFyYW1zU2lnbmF0dXJlW2ldOworICAgICAgY29uc3QgaW5kaWNlcyA9IGNhbGxl
clBhcmFtc1NpZ25hdHVyZS5tYXAoKHZhbCwgaW5kZXgpID0+CisgICAgICAgIHZhbCA9PSBuZXdU
eXBlID8gaW5kZXggOiBub3RGb3VuZAorICAgICAgKS5maWx0ZXIoKHZhbCkgPT4gdmFsICE9IG5v
dEZvdW5kKTsKKyAgICAgIHNhdmVkVHlwZUluZGljZXMgPSBtYXAuc2V0KG5ld1R5cGUsIHsgaW5k
aWNlczogaW5kaWNlcywgY3VycmVudDogMCB9KS5nZXQoCisgICAgICAgIG5ld1R5cGUsCisgICAg
ICApOworICAgIH0KKyAgICBpZiAoIXNhdmVkVHlwZUluZGljZXMuaW5kaWNlcy5sZW5ndGgpIHsK
KyAgICAgIGJ1aWxkZXIgPSBmdW5jdG9yKGJ1aWxkZXIsIGksIGNhbGxlZVBhcmFtc1NpZ25hdHVy
ZVtpXSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLkdldExvY2FsKAor
ICAgICAgICBzYXZlZFR5cGVJbmRpY2VzLmluZGljZXNbc2F2ZWRUeXBlSW5kaWNlcy5jdXJyZW50
XSwKKyAgICAgICk7CisgICAgICBzYXZlZFR5cGVJbmRpY2VzLmN1cnJlbnQgPSAoc2F2ZWRUeXBl
SW5kaWNlcy5jdXJyZW50ICsgMSkgJQorICAgICAgICBzYXZlZFR5cGVJbmRpY2VzLmluZGljZXMu
bGVuZ3RoOworICAgIH0KKyAgfQorCisgIGZvciAoOyBpIDwgY2FsbGVlUGFyYW1zU2lnbmF0dXJl
Lmxlbmd0aDsgKytpKQorICAgIGJ1aWxkZXIgPSBmdW5jdG9yKGJ1aWxkZXIsIGksIGNhbGxlZVBh
cmFtc1NpZ25hdHVyZVtpXSk7CisgIHJldHVybiBidWlsZGVyOworfTsKKworY29uc3QgdHJ5UmV0
dXJuQ2FsbCA9IChidWlsZGVyLCB1c2VSZXR1cm5DYWxsLCBpbmRleCkgPT4geworICByZXR1cm4g
dXNlUmV0dXJuQ2FsbCA/IGJ1aWxkZXIuUmV0dXJuQ2FsbChpbmRleCkgOiBidWlsZGVyLkNhbGwo
aW5kZXgpOworfTsKKworY29uc3QgdHJ5UmV0dXJuQ2FsbEluZGlyZWN0ID0gKGJ1aWxkZXIsIHVz
ZVJldHVybkNhbGwsIGluZGV4LCB0YWJsZUluZGV4KSA9PiB7CisgIGNvbnN0IG5ld0J1aWxkZXIg
PSBidWlsZGVyLkkzMkNvbnN0KGluZGV4KTsKKyAgcmV0dXJuIHVzZVJldHVybkNhbGwKKyAgICA/
IG5ld0J1aWxkZXIuUmV0dXJuQ2FsbEluZGlyZWN0KGluZGV4LCB0YWJsZUluZGV4KQorICAgIDog
bmV3QnVpbGRlci5DYWxsSW5kaXJlY3QoaW5kZXgsIHRhYmxlSW5kZXgpOworfTsKKworY29uc3Qg
Y29tbWl0RnVuY3Rpb24gPSAoZnVuYywgZGVzdCkgPT4geworICBmdW5jWyJpbmRleCJdID0gZGVz
dC5sZW5ndGg7CisgIGRlc3QucHVzaChmdW5jKTsKKyAgcmV0dXJuIGZ1bmM7Cit9OworCitjb25z
dCByZWdpc3RlckNhbGxTaXRlID0gKGNhbGxlciwgY2FsbGVlcywgZGVzdCkgPT4geworICBjYWxs
ZXJbImNhbGxTaXRlSW5kZXgiXSA9IGRlc3QubGVuZ3RoOworICBkZXN0LnB1c2goeworICAgIGNh
bGxlcjogY2FsbGVyLAorICAgIGNhbGxlZXM6IEFycmF5LmlzQXJyYXkoY2FsbGVlcykgPyBjYWxs
ZWVzIDogW2NhbGxlZXNdLAorICB9KTsKKyAgcmV0dXJuIGNhbGxlcjsKK307CisKKy8vIERlYnVn
IGhlbHBlcnMKKworY29uc3QgZHVtcEZ1bmN0aW9uSGVhZGVyID0gKGZ1bmMsIGNhbGxEZXB0aCkg
PT4geworICBsZXQgaW5kZW50ID0gIiI7CisgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsbERlcHRo
OyArK2kpCisgICAgaW5kZW50ICs9ICJcdCI7CisgIHByaW50KGAke2luZGVudH0ke2Z1bmMubmFt
ZX1cblwKKyAgICAke2luZGVudH0oJHtmdW5jLnNpZ25hdHVyZS5wYXJhbXN9KS0+KCR7ZnVuYy5z
aWduYXR1cmUucmV0fSlcblwKKyAgICAke2luZGVudH1wYXJhbXMgbGVuZ3RoOiR7ZnVuYy5zaWdu
YXR1cmUucGFyYW1zLmxlbmd0aH0sIHJldCBsZW5ndGg6JHtmdW5jLnNpZ25hdHVyZS5yZXQubGVu
Z3RofWApOworfTsKKworY29uc3QgZHVtcEJhY2t0cmFjZSA9IChjYWxsU2l0ZSwgY2FsbFNpdGVz
LCBjYWxsRGVwdGgpID0+IHsKKyAgZHVtcEZ1bmN0aW9uSGVhZGVyKGNhbGxTaXRlWyJjYWxsZXIi
XSwgY2FsbERlcHRoKTsKKyAgY29uc3QgY2FsbGVlcyA9IGNhbGxTaXRlWyJjYWxsZWVzIl07Cisg
IGlmIChjYWxsZWVzKSB7CisgICAgZm9yIChjb25zdCBjYWxsZWUgb2YgY2FsbGVlcykgeworICAg
ICAgY29uc3QgY2FsbFNpdGVJbmRleCA9IGNhbGxlZS5jYWxsU2l0ZUluZGV4OworICAgICAgaWYg
KGNhbGxTaXRlSW5kZXgpCisgICAgICAgIGR1bXBCYWNrdHJhY2UoY2FsbFNpdGVzW2NhbGxTaXRl
SW5kZXhdLCBjYWxsU2l0ZXMsIGNhbGxEZXB0aCArIDEpOworICAgICAgZWxzZQorICAgICAgICBk
dW1wRnVuY3Rpb25IZWFkZXIoY2FsbGVlLCBjYWxsRGVwdGggKyAxKTsKKyAgICB9CisgIH0KK307
CisKKy8vIFRlc3QgaGVscGVycworCitjb25zdCBhZGRDYWxscyA9IChkZXN0LCBjYWxsU2l0ZXMs
IGV4cG9ydFNpemUsIGlzSW5kaXJlY3QpID0+IHsKKyAgaWYgKGV4cG9ydFNpemUgPT0gdW5kZWZp
bmVkKSB7CisgICAgZXhwb3J0U2l6ZSA9IGRlZmF1bHRFeHBvcnRTaXplOworICB9CisgIGZvciAo
bGV0IGkgPSAwOyBpIDwgZXhwb3J0U2l6ZTsgaSsrKSB7CisgICAgY29uc3QgbmV3VGFpbEZ1bmN0
aW9uID0gY3JlYXRlVGFpbEZ1bmN0aW9uKAorICAgICAgYCR7ZGVzdC5sZW5ndGh9YCwKKyAgICAg
IHR5cGVHZW5lcmF0b3IuY3JlYXRlU2lnbmF0dXJlKCksCisgICAgKTsKKyAgICBjb21taXRGdW5j
dGlvbihuZXdUYWlsRnVuY3Rpb24sIGRlc3QpOworICAgIGFkZERlcHRoKG5ld1RhaWxGdW5jdGlv
biwgLypjYWxsRGVwdGgqLyAzLCBkZXN0LCBjYWxsU2l0ZXMsIGlzSW5kaXJlY3QpOworICB9Cit9
OworCitjb25zdCBhZGREZXB0aCA9IChmdW5jLCBjYWxsRGVwdGgsIGRlc3QsIGNhbGxTaXRlcywg
aXNJbmRpcmVjdCkgPT4geworICBsZXQgcHJldmlvdXNDYWxsZWUgPSBmdW5jOworICBmb3IgKGxl
dCBkZXB0aCA9IDA7IGRlcHRoIDwgY2FsbERlcHRoOyBkZXB0aCsrKSB7CisgICAgY29uc3QgY2Fs
bGVyU2lnbmF0dXJlID0gdHlwZUdlbmVyYXRvci5jcmVhdGVTaWduYXR1cmUoCisgICAgICB1bmRl
ZmluZWQsCisgICAgICBwcmV2aW91c0NhbGxlZS5zaWduYXR1cmUucmV0Lmxlbmd0aCwKKyAgICAp
OworICAgIGNhbGxlclNpZ25hdHVyZS5yZXQgPSBwcmV2aW91c0NhbGxlZS5zaWduYXR1cmUucmV0
OworICAgIGNvbnN0IGNhbGxlck5hbWUgPSAiZGVwdGgiICsgZGVwdGgudG9TdHJpbmcoKSArICIt
PiIgKyBwcmV2aW91c0NhbGxlZS5uYW1lOworICAgIGNvbnN0IGNhbGxlciA9IGNyZWF0ZUNhbGxl
cihjYWxsZXJOYW1lLCBwcmV2aW91c0NhbGxlZSwgY2FsbGVyU2lnbmF0dXJlLCBpc0luZGlyZWN0
KTsKKyAgICBjb21taXRGdW5jdGlvbihjYWxsZXIsIGRlc3QpOworICAgIHJlZ2lzdGVyQ2FsbFNp
dGUoY2FsbGVyLCBwcmV2aW91c0NhbGxlZSwgY2FsbFNpdGVzKTsKKyAgICBwcmV2aW91c0NhbGxl
ZSA9IGNhbGxlcjsKKyAgfQorfTsKKworCitjb25zdCBjb21wYXJlID0gKGxocywgcmhzLCBleHBv
cnRzLCBjYWxsU2l0ZXMpID0+IHsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHBvcnRzLmxlbmd0
aDsgKytpKSB7CisgICAgY29uc3QgY2FsbGVyID0gZXhwb3J0c1tpXTsKKyAgICBjb25zdCBjYWxs
ZXJOYW1lID0gY2FsbGVyLm5hbWU7CisgICAgY29uc3QgbGhzRW50cnlwb2ludCA9IGxocy5leHBv
cnRzW2NhbGxlck5hbWVdOworICAgIGNvbnN0IHJoc0VudHJ5cG9pbnQgPSByaHMuZXhwb3J0c1tj
YWxsZXJOYW1lXTsKKyAgICBjb25zdCBwYXJhbXMgPSB0eXBlR2VuZXJhdG9yLmpzQXJnc0Zyb21X
YXNtUGFyYW1zKGNhbGxlci5zaWduYXR1cmUucGFyYW1zKTsKKyAgICBjb25zdCBsaHNSZXN1bHQg
PSBsaHNFbnRyeXBvaW50KC4uLnBhcmFtcyk7CisgICAgY29uc3QgcmhzUmVzdWx0ID0gcmhzRW50
cnlwb2ludCguLi5wYXJhbXMpOworICAgIGlmICh2ZXJib3NlKSB7CisgICAgICBpZiAoY2FsbGVy
LmNhbGxTaXRlSW5kZXggIT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGR1bXBCYWNrdHJhY2UoY2Fs
bFNpdGVzW2NhbGxlci5jYWxsU2l0ZUluZGV4XSwgY2FsbFNpdGVzLCAwKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHByaW50KGNhbGxlck5hbWUpOworICAgICAgfQorICAgICAgaWYgKHZlcmJv
c2UgPT0gMikgeworICAgICAgICBwcmludCgicGFyYW1zOiIgKyBwYXJhbXMpOworICAgICAgfQor
ICAgICAgcHJpbnQobGhzUmVzdWx0KTsKKyAgICAgIHByaW50KHJoc1Jlc3VsdCk7CisgICAgfQor
ICAgIGFzc2VydC5lcShsaHNSZXN1bHQsIHJoc1Jlc3VsdCk7CisgIH0KK307CisKK2NvbnN0IHJ1
blRlc3RXaXRoaW5Nb2R1bGUgPSAoKSA9PiB7CisgIGNvbnN0IGV4cG9ydHMgPSBbXTsKKyAgY29u
c3QgY2FsbFNpdGVzID0gW107CisgIGFkZENhbGxzKGV4cG9ydHMsIGNhbGxTaXRlcywgLypleHBv
cnRTaXplKi8gMyk7CisgIGFkZENhbGxzKGV4cG9ydHMsIGNhbGxTaXRlcywgLypleHBvcnRTaXpl
Ki8gMywgLyppc0luZGlyZWN0Ki90cnVlKTsKKworICBjb25zdCBsaHMgPSBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UoCisgICAgbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgKKyAgICAgIGNyZWF0ZUJ1
aWxkZXIoeworICAgICAgICB1c2VSZXR1cm5DYWxsOiB0cnVlLAorICAgICAgICBmdW5jOiBleHBv
cnRzLAorICAgICAgICBleHBvcnRzOiBleHBvcnRzLAorICAgICAgICB0YWJsZTogeyBpbml0aWFs
OiBleHBvcnRzLmxlbmd0aCwgZWxlbWVudDogImZ1bmNyZWYiIH0sCisgICAgICAgIGVsZW1lbnQ6
IHsKKyAgICAgICAgICB0YWJsZUluZGV4OiAwLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczog
QXJyYXkuZnJvbShleHBvcnRzLCAodmFsdWUpID0+IHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1
ZS5pbmRleDsKKyAgICAgICAgICB9KQorICAgICAgICB9CisgICAgICB9KS5XZWJBc3NlbWJseSgp
LmdldCgpLAorICAgICksCisgICk7CisgIGNvbnN0IHJocyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZSgKKyAgICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKAorICAgICAgY3JlYXRlQnVpbGRlcih7
CisgICAgICAgIHVzZVJldHVybkNhbGw6IGZhbHNlLAorICAgICAgICBmdW5jOiBleHBvcnRzLAor
ICAgICAgICBleHBvcnRzOiBleHBvcnRzLAorICAgICAgICB0YWJsZTogeyBpbml0aWFsOiBleHBv
cnRzLmxlbmd0aCwgZWxlbWVudDogImZ1bmNyZWYiIH0sCisgICAgICAgIGVsZW1lbnQ6IHsKKyAg
ICAgICAgICB0YWJsZUluZGV4OiAwLCBvZmZzZXQ6IDAsIGZ1bmN0aW9uSW5kaWNlczogQXJyYXku
ZnJvbShleHBvcnRzLCAodmFsdWUpID0+IHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5pbmRl
eDsKKyAgICAgICAgICB9KQorICAgICAgICB9CisgICAgICB9KS5XZWJBc3NlbWJseSgpLmdldCgp
LAorICAgICksCisgICk7CisgIGNvbXBhcmUobGhzLCByaHMsIGV4cG9ydHMsIGNhbGxTaXRlcyk7
Cit9OworCitjb25zdCBydW5UZXN0QWNyb3NzTW9kdWxlcyA9ICgpID0+IHsKKyAgY29uc3QgY2Fs
bFNpdGVzID0gW107CisgIGxldCBlbnRyeXBvaW50cyA9IFtdOworCisgIGNvbnN0IGxvYWRGcm9t
TWVtb3J5ID0gKGJ1aWxkZXIsIF92YWx1ZSwgdHlwZSkgPT4geworICAgIHJldHVybiB0eXBlR2Vu
ZXJhdG9yLmJ1aWxkZXJMb2FkRnJvbVdhc21UeXBlKAorICAgICAgLyppbW0xKi8yLAorICAgICAg
LyppbW0yKi8wLAorICAgICAgdHlwZSwKKyAgICAgIGJ1aWxkZXIuSTMyQ29uc3QoMCksCisgICAg
KTsKKyAgfTsKKworICBjb25zdCBjcmVhdGVFbnRyeXBvaW50ID0gKG5hbWUsIGNhbGxlZSwgc2ln
bmF0dXJlLCB0YWJsZU9mZnNldCkgPT4geworICAgIHJldHVybiB7CisgICAgICBuYW1lOiBuYW1l
LAorICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsCisgICAgICBib2R5OiAoYnVpbGRlciwgdXNl
UmV0dXJuQ2FsbCkgPT4geworICAgICAgICByZXR1cm4gdHJ5UmV0dXJuQ2FsbCgKKyAgICAgICAg
ICBidWlsZGVyLkZ1bmN0aW9uKG5hbWUsIHNpZ25hdHVyZSksCisgICAgICAgICAgdXNlUmV0dXJu
Q2FsbCwKKyAgICAgICAgICBjYWxsZWUuaW5kZXgsCisgICAgICAgICkuRW5kKCk7CisgICAgICB9
LAorICAgICAgdGFibGVPZmZzZXQ6IHRhYmxlT2Zmc2V0LAorICAgIH07CisgIH07CisKKyAgY29u
c3QgY3JlYXRlTWFpbiA9IChuYW1lLCBjYWxsZWVzLCBzaWduYXR1cmUpID0+IHsKKyAgICByZXR1
cm4geworICAgICAgbmFtZTogbmFtZSwKKyAgICAgIHNpZ25hdHVyZTogc2lnbmF0dXJlLAorICAg
ICAgYm9keTogKGJ1aWxkZXIpID0+IHsKKyAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuRnVuY3Rp
b24obmFtZSwgc2lnbmF0dXJlKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxsZWVz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuR2V0TG9jYWwoMCk7
CisgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuQ2FsbChjYWxsZWVzW2ldLmluZGV4KTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gYnVpbGRlci5FbmQoKTsKKyAgICAgIH0sCisgICAgfTsK
KyAgfTsKKworICBjb25zdCBjcmVhdGVFbnRyeXBvaW50SW5zdGFuY2UgPSAodXNlUmV0dXJuQ2Fs
bCkgPT4geworICAgIGNvbnN0IGluc3QwX2Z1bmN0aW9ucyA9IFtdLCBpbnN0MV9mdW5jdGlvbnMg
PSBbXSwgaW5zdDJfZnVuY3Rpb25zID0gW107CisKKyAgICBjb25zdCB0YWlsU2lnbmF0dXJlID0g
dHlwZUdlbmVyYXRvci5jcmVhdGVTaWduYXR1cmUoMCwgMTUsICJpMzIiKTsKKyAgICBjb25zdCBu
VGFpbHMgPSAyOworICAgIGNvbnN0IG1haW5TaWduYXR1cmUgPSB0eXBlR2VuZXJhdG9yLmNyZWF0
ZVNpZ25hdHVyZSgKKyAgICAgIDEsCisgICAgICBuVGFpbHMgKyBuVGFpbHMgKiB0YWlsU2lnbmF0
dXJlLnJldC5sZW5ndGgsCisgICAgICAiaTMyIiwKKyAgICApOworCisgICAgY29uc3QgaW5zdDFf
dGFpbCA9IGNvbW1pdEZ1bmN0aW9uKAorICAgICAgY3JlYXRlVGFpbEZ1bmN0aW9uKCJpbnN0MV90
YWlsIiwgdGFpbFNpZ25hdHVyZSwgbG9hZEZyb21NZW1vcnkpLAorICAgICAgaW5zdDFfZnVuY3Rp
b25zLAorICAgICk7CisgICAgY29uc3QgaW5zdDFfZW50cnlwb2ludCA9IGNvbW1pdEZ1bmN0aW9u
KAorICAgICAgY3JlYXRlRW50cnlwb2ludCgKKyAgICAgICAgImluc3QxX2VudHJ5cG9pbnQiLAor
ICAgICAgICBpbnN0MV90YWlsLAorICAgICAgICB0YWlsU2lnbmF0dXJlLAorICAgICAgICAvKnRh
YmxlT2Zmc2V0Ki8gMCwKKyAgICAgICksCisgICAgICBpbnN0MV9mdW5jdGlvbnMsCisgICAgKTsK
KworICAgIGNvbnN0IGluc3QyX3RhaWwgPSBjb21taXRGdW5jdGlvbigKKyAgICAgIGNyZWF0ZVRh
aWxGdW5jdGlvbigiaW5zdDJfdGFpbCIsIHRhaWxTaWduYXR1cmUsIGxvYWRGcm9tTWVtb3J5KSwK
KyAgICAgIGluc3QyX2Z1bmN0aW9ucywKKyAgICApOworICAgIGNvbnN0IGluc3QyX2VudHJ5cG9p
bnQgPSBjb21taXRGdW5jdGlvbigKKyAgICAgIGNyZWF0ZUVudHJ5cG9pbnQoCisgICAgICAgICJp
bnN0Ml9lbnRyeXBvaW50IiwKKyAgICAgICAgaW5zdDJfdGFpbCwKKyAgICAgICAgdGFpbFNpZ25h
dHVyZSwKKyAgICAgICAgLyp0YWJsZU9mZnNldCovIDEsCisgICAgICApLAorICAgICAgaW5zdDJf
ZnVuY3Rpb25zLAorICAgICk7CisKKyAgICBjb25zdCBpbnN0MF9pbnN0MV9pbXBvcnQgPSBjb21t
aXRGdW5jdGlvbigKKyAgICAgIE9iamVjdC5hc3NpZ24oaW5zdDFfZW50cnlwb2ludCksCisgICAg
ICBpbnN0MF9mdW5jdGlvbnMsCisgICAgKTsKKyAgICBjb25zdCBpbnN0MF9pbnN0Ml9pbXBvcnQg
PSBjb21taXRGdW5jdGlvbigKKyAgICAgIE9iamVjdC5hc3NpZ24oaW5zdDJfZW50cnlwb2ludCks
CisgICAgICBpbnN0MF9mdW5jdGlvbnMsCisgICAgKTsKKworICAgIGNvbnN0IHRyYW1wb2xpbmVf
aW5zdDFfdmlhX2ltcG9ydCA9IGNvbW1pdEZ1bmN0aW9uKAorICAgICAgY3JlYXRlQ2FsbGVyKAor
ICAgICAgICAiaW5zdDBfdHJhbXBvbGluZV9pbnN0MV92aWFfaW1wb3J0IiwKKyAgICAgICAgaW5z
dDBfaW5zdDFfaW1wb3J0LAorICAgICAgICB0YWlsU2lnbmF0dXJlLAorICAgICAgKSwKKyAgICAg
IGluc3QwX2Z1bmN0aW9ucywKKyAgICApOworICAgIGNvbnN0IHRyYW1wb2xpbmVfaW5zdDJfdmlh
X2ltcG9ydCA9IGNvbW1pdEZ1bmN0aW9uKAorICAgICAgY3JlYXRlQ2FsbGVyKAorICAgICAgICAi
aW5zdDBfdHJhbXBvbGluZV9pbnN0Ml92aWFfaW1wb3J0IiwKKyAgICAgICAgaW5zdDBfaW5zdDJf
aW1wb3J0LAorICAgICAgICB0YWlsU2lnbmF0dXJlLAorICAgICAgKSwKKyAgICAgIGluc3QwX2Z1
bmN0aW9ucywKKyAgICApOworCisgICAgY29uc3QgdHJhbXBvbGluZV9pbnN0MV92aWFfdGFibGUg
PSBjb21taXRGdW5jdGlvbigKKyAgICAgIGNyZWF0ZUNhbGxlcigKKyAgICAgICAgImluc3QwX3Ry
YW1wb2xpbmVfaW5zdDFfdmlhX3RhYmxlIiwKKyAgICAgICAgaW5zdDFfZW50cnlwb2ludCwKKyAg
ICAgICAgdGFpbFNpZ25hdHVyZSwKKyAgICAgICAgLyppc0luZGlyZWN0Ki90cnVlCisgICAgICAp
LAorICAgICAgaW5zdDBfZnVuY3Rpb25zLAorICAgICk7CisgICAgY29uc3QgdHJhbXBvbGluZV9p
bnN0Ml92aWFfdGFibGUgPSBjb21taXRGdW5jdGlvbigKKyAgICAgIGNyZWF0ZUNhbGxlcigKKyAg
ICAgICAgImluc3QwX3RyYW1wb2xpbmVfaW5zdDJfdmlhX3RhYmxlIiwKKyAgICAgICAgaW5zdDJf
ZW50cnlwb2ludCwKKyAgICAgICAgdGFpbFNpZ25hdHVyZSwKKyAgICAgICAgLyppc0luZGlyZWN0
Ki90cnVlCisgICAgICApLAorICAgICAgaW5zdDBfZnVuY3Rpb25zLAorICAgICk7CisKKyAgICBl
bnRyeXBvaW50cy5wdXNoKAorICAgICAgcmVnaXN0ZXJDYWxsU2l0ZSgKKyAgICAgICAgY29tbWl0
RnVuY3Rpb24oCisgICAgICAgICAgY3JlYXRlTWFpbigiaW5zdDBfbWFpbl92aWFfdGFibGUiLCBb
CisgICAgICAgICAgICB0cmFtcG9saW5lX2luc3QxX3ZpYV90YWJsZSwKKyAgICAgICAgICAgIHRy
YW1wb2xpbmVfaW5zdDJfdmlhX3RhYmxlLAorICAgICAgICAgIF0sIG1haW5TaWduYXR1cmUpLAor
ICAgICAgICAgIGluc3QwX2Z1bmN0aW9ucywKKyAgICAgICAgKSwKKyAgICAgICAgW3RyYW1wb2xp
bmVfaW5zdDFfdmlhX3RhYmxlLCB0cmFtcG9saW5lX2luc3QyX3ZpYV90YWJsZV0sCisgICAgICAg
IGNhbGxTaXRlcywKKyAgICAgICksCisgICAgKTsKKworICAgIGVudHJ5cG9pbnRzLnB1c2goCisg
ICAgICByZWdpc3RlckNhbGxTaXRlKAorICAgICAgICBjb21taXRGdW5jdGlvbigKKyAgICAgICAg
ICBjcmVhdGVNYWluKCJpbnN0MF9tYWluX3ZpYV9pbXBvcnQiLCBbCisgICAgICAgICAgICB0cmFt
cG9saW5lX2luc3QxX3ZpYV9pbXBvcnQsCisgICAgICAgICAgICB0cmFtcG9saW5lX2luc3QyX3Zp
YV9pbXBvcnQsCisgICAgICAgICAgXSwgbWFpblNpZ25hdHVyZSksCisgICAgICAgICAgaW5zdDBf
ZnVuY3Rpb25zLAorICAgICAgICApLAorICAgICAgICBbdHJhbXBvbGluZV9pbnN0MV92aWFfaW1w
b3J0LCB0cmFtcG9saW5lX2luc3QyX3ZpYV9pbXBvcnRdLAorICAgICAgICBjYWxsU2l0ZXMsCisg
ICAgICApLAorICAgICk7CisKKyAgICAvLyBpbnN0WzEtMl1fZW50cnlwb2ludCBoYXZlIGJlZW4g
cHVzaGVkIGZpcnN0LCB0byBleHBvc2UgdGhlaXIgaW5kaWNlcyBhcyBwYXJ0IG9mIHRoZSBpbmRl
eCBzcGFjZQorICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gYWRkIHRoZW0gdG8gdGhlIG1haW4gbW9k
dWxlLCBzbyB3ZSByZW1vdmUgdGhlbQorICAgIGNvbnN0IGluc3QwX2NvZGUgPSBpbnN0MF9mdW5j
dGlvbnMuc3BsaWNlKDIpOworCisgICAgY29uc3QgaW5zdDBNZW1EZXNjcmlwdGlvbiA9IHsgaW5p
dGlhbDogMSB9OworICAgIGNvbnN0IGluc3QxTWVtRGVzY3JpcHRpb24gPSB7IGluaXRpYWw6IDIg
fTsKKyAgICBjb25zdCBpbnN0MExoc01lbSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoaW5zdDBN
ZW1EZXNjcmlwdGlvbik7CisgICAgY29uc3QgaW5zdDFMaHNNZW0gPSBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KGluc3QxTWVtRGVzY3JpcHRpb24pOworCisgICAgbmV3IFVpbnQ4QXJyYXkoaW5zdDBM
aHNNZW0uYnVmZmVyKS5mb3JFYWNoKChfdmFsdWUsIGluZGV4LCBhcnJheSkgPT4geworICAgICAg
YXJyYXlbaW5kZXhdID0gMDsKKyAgICB9KTsKKyAgICBuZXcgVWludDhBcnJheShpbnN0MUxoc01l
bS5idWZmZXIpLmZvckVhY2goKF92YWx1ZSwgaW5kZXgsIGFycmF5KSA9PiB7CisgICAgICBhcnJh
eVtpbmRleF0gPSAweGZmOworICAgIH0pOworCisgICAgY29uc3QgdGFibGVJbmZvID0geyBpbml0
aWFsOiAyLCBlbGVtZW50OiAiZnVuY3JlZiIgfTsKKyAgICBjb25zdCB0YWJsZSA9IG5ldyBXZWJB
c3NlbWJseS5UYWJsZSh0YWJsZUluZm8pOworCisgICAgY29uc3QgaW5zdDEgPSBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UoCisgICAgICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKAorICAgICAgICBj
cmVhdGVCdWlsZGVyKHsKKyAgICAgICAgICAvKmJ1aWxkZXJJbmZvKi8KKyAgICAgICAgICB1c2VS
ZXR1cm5DYWxsOiB1c2VSZXR1cm5DYWxsLAorICAgICAgICAgIGZ1bmM6IGluc3QxX2Z1bmN0aW9u
cywKKyAgICAgICAgICB0eXBlczogW3RhaWxTaWduYXR1cmUsIHRhaWxTaWduYXR1cmVdLAorICAg
ICAgICAgIGltcG9ydHM6IHsKKyAgICAgICAgICAgIGltcDogeworICAgICAgICAgICAgICB0YWJs
ZTogdGFibGVJbmZvLAorICAgICAgICAgICAgICBtZW1vcnk6IGluc3QwTWVtRGVzY3JpcHRpb24s
CisgICAgICAgICAgICB9LAorICAgICAgICAgIH0sCisgICAgICAgICAgZXhwb3J0czogW2luc3Qx
X2VudHJ5cG9pbnRdLAorICAgICAgICAgIHRhYmxlOiB0YWJsZUluZm8sCisgICAgICAgICAgZWxl
bWVudDogeworICAgICAgICAgICAgb2Zmc2V0OiAwLAorICAgICAgICAgICAgZnVuY3Rpb25JbmRp
Y2VzOiBbMV0sCisgICAgICAgICAgfSwKKyAgICAgICAgfSkuV2ViQXNzZW1ibHkoKS5nZXQoKSwK
KyAgICAgICksCisgICAgICAvKmltcG9ydE9iamVjdCovIHsKKyAgICAgICAgaW1wOiB7CisgICAg
ICAgICAgdGFibGU6IHRhYmxlLAorICAgICAgICAgIG1lbW9yeTogaW5zdDBMaHNNZW0sCisgICAg
ICAgIH0sCisgICAgICB9LAorICAgICk7CisKKyAgICBjb25zdCBpbnN0MiA9IG5ldyBXZWJBc3Nl
bWJseS5JbnN0YW5jZSgKKyAgICAgIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoCisgICAgICAgIGNy
ZWF0ZUJ1aWxkZXIoeworICAgICAgICAgIC8qYnVpbGRlckluZm8qLworICAgICAgICAgIHVzZVJl
dHVybkNhbGw6IHVzZVJldHVybkNhbGwsCisgICAgICAgICAgZnVuYzogaW5zdDJfZnVuY3Rpb25z
LAorICAgICAgICAgIHR5cGVzOiBbdGFpbFNpZ25hdHVyZSwgdGFpbFNpZ25hdHVyZV0sCisgICAg
ICAgICAgaW1wb3J0czogeworICAgICAgICAgICAgaW1wOiB7CisgICAgICAgICAgICAgIHRhYmxl
OiB0YWJsZUluZm8sCisgICAgICAgICAgICAgIG1lbW9yeTogaW5zdDFNZW1EZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgfSwKKyAgICAgICAgICBleHBvcnRzOiBbaW5zdDJf
ZW50cnlwb2ludF0sCisgICAgICAgICAgdGFibGU6IHRhYmxlSW5mbywKKyAgICAgICAgICBlbGVt
ZW50OiB7CisgICAgICAgICAgICBvZmZzZXQ6IDEsCisgICAgICAgICAgICBmdW5jdGlvbkluZGlj
ZXM6IFsxXSwKKyAgICAgICAgICB9LAorICAgICAgICB9KS5XZWJBc3NlbWJseSgpLmdldCgpLAor
ICAgICAgKSwKKyAgICAgIHsKKyAgICAgICAgLyppbXBvcnRPYmplY3QqLworICAgICAgICBpbXA6
IHsKKyAgICAgICAgICB0YWJsZTogdGFibGUsCisgICAgICAgICAgbWVtb3J5OiBpbnN0MUxoc01l
bSwKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAgKTsKKworICAgIGNvbnN0IGltcG9ydE9iamVj
dEluZm8gPSB7IGltcDogeyB0YWJsZTogdGFibGVJbmZvIH0gfTsKKyAgICBjb25zdCBpbXBvcnRP
YmplY3QgPSB7IGltcDogeyB0YWJsZTogdGFibGUgfSB9OworICAgIGltcG9ydE9iamVjdEluZm9b
ImltcCJdW2luc3QxX2VudHJ5cG9pbnQubmFtZV0gPSBpbnN0MV9lbnRyeXBvaW50LnNpZ25hdHVy
ZTsKKyAgICBpbXBvcnRPYmplY3RJbmZvWyJpbXAiXVtpbnN0Ml9lbnRyeXBvaW50Lm5hbWVdID0g
aW5zdDJfZW50cnlwb2ludC5zaWduYXR1cmU7CisgICAgaW1wb3J0T2JqZWN0WyJpbXAiXVtpbnN0
MV9lbnRyeXBvaW50Lm5hbWVdID0KKyAgICAgIGluc3QxLmV4cG9ydHNbaW5zdDFfZW50cnlwb2lu
dC5uYW1lXTsKKyAgICBpbXBvcnRPYmplY3RbImltcCJdW2luc3QyX2VudHJ5cG9pbnQubmFtZV0g
PQorICAgICAgaW5zdDIuZXhwb3J0c1tpbnN0Ml9lbnRyeXBvaW50Lm5hbWVdOworCisgICAgY29u
c3QgaW5zdDAgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoCisgICAgICBuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKAorICAgICAgICBjcmVhdGVCdWlsZGVyKHsKKyAgICAgICAgICAvKmJ1aWxkZXJJ
bmZvKi8KKyAgICAgICAgICB1c2VSZXR1cm5DYWxsOiB1c2VSZXR1cm5DYWxsLAorICAgICAgICAg
IGZ1bmM6IGluc3QwX2NvZGUsCisgICAgICAgICAgZXhwb3J0czogaW5zdDBfY29kZSwKKyAgICAg
ICAgICB0eXBlczogW3RhaWxTaWduYXR1cmUsIHRhaWxTaWduYXR1cmVdLAorICAgICAgICAgIGlt
cG9ydHM6IGltcG9ydE9iamVjdEluZm8sCisgICAgICAgICAgdGFibGU6IHRhYmxlSW5mbywKKyAg
ICAgICAgfSkuV2ViQXNzZW1ibHkoKS5nZXQoKSwKKyAgICAgICksCisgICAgICBpbXBvcnRPYmpl
Y3QsCisgICAgKTsKKworICAgIHJldHVybiBpbnN0MDsKKyAgfTsKKworICBjb25zdCBsaHMgPSBj
cmVhdGVFbnRyeXBvaW50SW5zdGFuY2UoLyp1c2VSZXR1cm5DYWxsKi8gdHJ1ZSk7CisgIGNvbnN0
IHJocyA9IGNyZWF0ZUVudHJ5cG9pbnRJbnN0YW5jZSgvKnVzZVJldHVybkNhbGwqLyBmYWxzZSk7
CisgIGVudHJ5cG9pbnRzID0gZW50cnlwb2ludHMuc3BsaWNlKDIpOworICByZXR1cm4gY29tcGFy
ZShsaHMsIHJocywgZW50cnlwb2ludHMsIGNhbGxTaXRlcyk7Cit9OworCitydW5UZXN0V2l0aGlu
TW9kdWxlKCk7CitydW5UZXN0QWNyb3NzTW9kdWxlcygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXggMDY2MTY3M2I0Nzdk
Y2IyYzFhODJlMjVlNGYzZGFiZjQ1NTU5YWEyNC4uOGNkM2JmZmRhYzIwNjVmMmYzM2E0ZjM2OWVk
NzYwYTA3ZDM4NGYxZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNvbgorKysgYi9K
U1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC05OCw2ICs5OCw4IEBACiAgICAgICAgICJkYXRhLmRy
b3AiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiZXh0dGFibGUiLCAgICJ2YWx1ZSI6ICAyNTIs
ICJyZXR1cm4iOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjog
W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJz
ZWdtZW50X2luZGV4IiwgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2hyaW5rcyB0aGUgc2l6
ZSBvZiB0aGUgc2VnbWVudCB0byB6ZXJvIiwgImV4dGVuZGVkT3AiOiA5IH0sCiAgICAgICAgICJj
YWxsIjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6
ICAxNiwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1l
dGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFt
ZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1
bmN0aW9uIGJ5IGl0cyBpbmRleCIgfSwKICAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7
ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxs
Il0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUiOiAidmFy
dWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBh
biBleHBlY3RlZCBzaWduYXR1cmUiIH0sCisgICAgICAgICJyZXR1cm5fY2FsbCI6ICAgICAgICAg
ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTgsICJyZXR1cm4i
OiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25f
aW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRhaWwgY2FsbCBhIGZ1bmN0aW9uIGJ5
IGl0cyBpbmRleCIgfSwKKyAgICAgICAgInJldHVybl9jYWxsX2luZGlyZWN0IjogICAgICAgeyAi
Y2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxOSwgInJldHVybiI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAidGFpbCBjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0
aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCiAgICAgICAgICJjYWxsX3JlZiI6ICAgICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAyMCwgInJldHVybiI6IFsi
Y2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIHJlZmVyZW5jZSIg
fSwKICAgICAgICAgImkzMi5sb2FkOF9zIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnki
LCAgICAgInZhbHVlIjogIDQ0LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9u
IjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDhfdSI6ICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsiaTMy
Il0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApp
bmRleCAyY2MwYTE0ODlmYTZmMjY2MjMwOTkyMjA2YTE4OGEzYmVhMmQyOGVmLi43NTg5YjJiMjQ1
YmVmY2EyMDA3N2I2YjllMjE1ZGU5NjkzMmExYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNDAxMyw2ICs0
MDEzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwo
KSwgQ2FsbDo6TGlua2FibGVOZWFyKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIENhbGwg
dGhyZWFkU2FmZVBhdGNoYWJsZU5lYXJUYWlsQ2FsbCgpCisgICAgeworICAgICAgICBBc3NlbWJs
ZXJMYWJlbCBsYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmIoKTsKKyAgICAgICAgcmV0dXJuIENhbGwobGFiZWwsIENhbGw6OkxpbmthYmxlTmVhclRhaWwp
OworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXQoKQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIucmV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDAwYjhlZDY4OTFlNGQyNGNjMDM1YTA0
MDQwYjE1OTliYjVkMGM0Y2EuLjViNTg3YWI1NDA2NGQ5MTkwNTAxOWZhN2QwYzdlZTY1NWFmMjRj
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCkBAIC0yMzEyLDYgKzIzMTIsMTIgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgoZGF0YVRlbXBSZWdpc3RlciksIENhbGw6Okxpbmth
YmxlTmVhcik7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSBDYWxsIHRocmVhZFNhZmVQYXRj
aGFibGVOZWFyVGFpbENhbGwoKQorICAgIHsKKyAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdp
c3RlcnMoKTsKKyAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYigpLCBDYWxsOjpMaW5r
YWJsZU5lYXJUYWlsKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChQdHJU
YWcpCiAgICAgewogICAgICAgICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMigw
KSwgZGF0YVRlbXBSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaAppbmRleCBmYzk4ZjliNTIyMTQ5NzY3
MjkxYzM2NTYxYjYwYWIwYTQ3NGY0N2YwLi40NWZhYTc2YTA2Yjk2YzgyNTZlMzJhYTJiYWY5ZDcx
ZDg2NDQ0NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyUklTQ1Y2NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0LmgKQEAgLTE4ODUsNiArMTg4NSwxNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBDYWxsKGxhYmVsLCBDYWxsOjpMaW5rYWJsZU5lYXIpOwogICAgIH0K
IAorICAgIENhbGwgdGhyZWFkU2FmZVBhdGNoYWJsZU5lYXJUYWlsQ2FsbCgpCisgICAgeworICAg
ICAgICBhdXRvIGxhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubmVhckNhbGxQbGFjZWhvbGRlcigKKyAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuamFsSW5zbihSSVNDVjY0UmVnaXN0ZXJzOjp6ZXJvLCBJbW06Oko8MD4o
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIENhbGwobGFiZWwsIENhbGw6Okxp
bmthYmxlTmVhclRhaWwpOworICAgIH0KKwogICAgIHZvaWQgcmV0KCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmphbHJJbnNuKFJJU0NWNjRSZWdpc3RlcnM6Onplcm8sIFJJU0NWNjRSZWdp
c3RlcnM6OngxLCBJbW06Okk8MD4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggYmVhYzczNmE2NTAzODdh
MDBiZTE5YzFmNDBiZDMyYTY3MDcyNmZkMC4uOGU3ODY2MTVjNjY3ZGU0OTg3MjU0ZjBlYjk5MWUx
Y2I3YWIzMDdmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMjgwLDYgKzI4MCwyMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgQ2FsbCB0aHJlYWRTYWZlUGF0Y2hh
YmxlTmVhclRhaWxDYWxsKCkKKyAgICB7CisgICAgICAgIGNvbnN0IHNpemVfdCBuZWFyQ2FsbE9w
Y29kZVNpemUgPSAxOworICAgICAgICBjb25zdCBzaXplX3QgbmVhckNhbGxSZWxhdGl2ZUxvY2F0
aW9uU2l6ZSA9IHNpemVvZihpbnQzMl90KTsKKyAgICAgICAgLy8gV2Ugd2FudCB0byBtYWtlIHN1
cmUgdGhlIDMyLWJpdCBuZWFyIGNhbGwgaW1tZWRpYXRlIGlzIDMyLWJpdCBhbGlnbmVkLgorICAg
ICAgICBzaXplX3QgY29kZVNpemUgPSBtX2Fzc2VtYmxlci5jb2RlU2l6ZSgpOworICAgICAgICBz
aXplX3QgYWxpZ25lZFNpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8bmVhckNhbGxSZWxh
dGl2ZUxvY2F0aW9uU2l6ZT4oY29kZVNpemUgKyBuZWFyQ2FsbE9wY29kZVNpemUpOworICAgICAg
ICBlbWl0Tm9wcyhhbGlnbmVkU2l6ZSAtIChjb2RlU2l6ZSArIG5lYXJDYWxsT3Bjb2RlU2l6ZSkp
OworICAgICAgICBEYXRhTGFiZWxQdHIgbGFiZWwgPSBEYXRhTGFiZWxQdHIodGhpcyk7CisgICAg
ICAgIENhbGwgcmVzdWx0ID0gbmVhclRhaWxDYWxsKCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
bGFiZWwsIGRpZmZlcmVuY2VCZXR3ZWVuKGxhYmVsLCByZXN1bHQpID09IChuZWFyQ2FsbE9wY29k
ZVNpemUgKyBuZWFyQ2FsbFJlbGF0aXZlTG9jYXRpb25TaXplKSk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgVHJ1c3RlZEltbTMyIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoZGVzdC5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDk2
Y2MxMzkzMzAyM2RmYzhjMGZlYmY2ZmI1MjFlMGUxMWEyNGE5OTguLjg2NzZiY2Y3NWYzNTlmN2Nm
MTllMGMzMmZiOTg0YzNhMTU3NTFhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTQ5MCw2ICsxNDkwLDEwIEBAIG9wIDp3YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0CiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2Fs
bF9pbmRpcmVjdF9ub190bHMKIG9wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZgogb3Ag
Ondhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3Rscworb3AgOndhc21fdHJhbXBvbGlu
ZV93YXNtX3JldHVybl9jYWxsCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxf
bm9fdGxzCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5kaXJlY3QKK29w
IDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdF9ub190bHMKIAogZW5k
X3NlY3Rpb24gOk5hdGl2ZUhlbHBlcnMKIApAQCAtMTY4Niw2ICsxNjkwLDIyIEBAIG9wIDpjYWxs
X25vX3RscywKICAgICAgICAgbnVtYmVyT2ZTdGFja0FyZ3M6IHVuc2lnbmVkLAogICAgIH0KIAor
b3AgOnJldHVybl9jYWxsLAorICAgIGFyZ3M6IHsKKyAgICAgICAgZnVuY3Rpb25JbmRleDogdW5z
aWduZWQsCisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZD
YWxsZWVTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJPZkNhbGxlclN0YWNrQXJn
czogdW5zaWduZWQsCisgICAgfQorCitvcCA6cmV0dXJuX2NhbGxfbm9fdGxzLAorICAgIGFyZ3M6
IHsKKyAgICAgICAgZnVuY3Rpb25JbmRleDogdW5zaWduZWQsCisgICAgICAgIHN0YWNrT2Zmc2V0
OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZWVTdGFja0FyZ3M6IHVuc2lnbmVkLAor
ICAgICAgICBudW1iZXJPZkNhbGxlclN0YWNrQXJnczogdW5zaWduZWQsCisgICAgfQorCiBvcCA6
Y2FsbF9pbmRpcmVjdCwKICAgICBhcmdzOiB7CiAgICAgICAgIGZ1bmN0aW9uSW5kZXg6IFZpcnR1
YWxSZWdpc3RlciwKQEAgLTE3MDQsNiArMTcyNCwyNiBAQCBvcCA6Y2FsbF9pbmRpcmVjdF9ub190
bHMsCiAgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIAorb3AgOnJldHVybl9j
YWxsX2luZGlyZWN0LAorICAgIGFyZ3M6IHsKKyAgICAgICAgZnVuY3Rpb25JbmRleDogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBzaWduYXR1cmVJbmRleDogdW5zaWduZWQsCisgICAgICAgIHN0
YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZWVTdGFja0FyZ3M6IHVu
c2lnbmVkLAorICAgICAgICBudW1iZXJPZkNhbGxlclN0YWNrQXJnczogdW5zaWduZWQsCisgICAg
ICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAorICAgIH0KKworb3AgOnJldHVybl9jYWxsX2luZGly
ZWN0X25vX3RscywKKyAgICBhcmdzOiB7CisgICAgICAgIGZ1bmN0aW9uSW5kZXg6IFZpcnR1YWxS
ZWdpc3RlciwKKyAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVuc2lnbmVkLAorICAgICAgICBzdGFj
a09mZnNldDogdW5zaWduZWQsCisgICAgICAgIG51bWJlck9mQ2FsbGVlU3RhY2tBcmdzOiB1bnNp
Z25lZCwKKyAgICAgICAgbnVtYmVyT2ZDYWxsZXJTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgICAg
ICB0YWJsZUluZGV4OiB1bnNpZ25lZCwKKyAgICB9CisKIG9wIDpjYWxsX3JlZiwKICAgICBhcmdz
OiB7CiAgICAgICAgIGZ1bmN0aW9uUmVmZXJlbmNlOiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNWJkYzVlNDRi
ZDAwMzBmMjc3N2U4ZjhhMGZmZGExZGE0ZDMwZTBmOC4uMTBlYzhiNDUwMmZkNzE1NTYwMzMwMjUz
MzM0MTJmY2I3YmFlMzRjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMzc0LDYgKzM3NCwxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJp
bGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
SgogICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHM6CiAg
ICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZjoKICAgICBjYXNlIHdhc21fdHJh
bXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RsczoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93
YXNtX3JldHVybl9jYWxsOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2Nh
bGxfbm9fdGxzOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5k
aXJlY3Q6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVj
dF9ub190bHM6CiAgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwogICAgIH0KICAgICByZXR1
cm4gQ2Fubm90Q29tcGlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBkMzBmZmJhN2MwNDYzZGNjNDA1YjUwOTA2ODFl
Y2JlNTkyYjRlYjIxLi5iZmFlN2Y1YmY5OGU2ZThkZWFkOGZlMjY0MmRiMDlkNGU4NThhOWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0yNzU0LDYgKzI3NTQsMTggQEAgX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxf
aW5kaXJlY3Rfd2lkZTMyOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9f
dGxzX3dpZGUzMjoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZl93aWRlMzI6CiBfd2Fz
bV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzX3dpZGUzMjoKK193YXNtX3RyYW1wb2xp
bmVfd2FzbV9yZXR1cm5fY2FsbDoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9u
b190bHM6Citfd2FzbV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5kaXJlY3Q6Citfd2Fz
bV90cmFtcG9saW5lX3dhc21fcmV0dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgorX3dhc21fdHJh
bXBvbGluZV93YXNtX3JldHVybl9jYWxsX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9y
ZXR1cm5fY2FsbF9ub190bHNfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9j
YWxsX2luZGlyZWN0X3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9p
bmRpcmVjdF9ub190bHNfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxs
X3dpZGUzMjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9ub190bHNfd2lkZTMy
OgorX3dhc21fdHJhbXBvbGluZV93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0X3dpZGUzMjoKK193
YXNtX3RyYW1wb2xpbmVfd2FzbV9yZXR1cm5fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lkZTMyOgog
ICAgIGNyYXNoKCkKIAogZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2Vt
Ymx5LmFzbQppbmRleCBjY2NjNjNmMTNhY2Y2ZDM5ODM1YThkNjQ1M2I2ZWE5NTg1MmRhYWU4Li40
YTgxZmU4OGUwODU0OTUzNDgyMmE5YzliNTE2NGJjYWIxMTk1OGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTI3Myw2ICsyNzMsNTEgQEAgbWFj
cm8gcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgZW5kCiBlbmQKIAorbWFjcm8g
cHJlc2VydmVHUFJzVXNlZEJ5UmV0dXJuQ2FsbChncHIwLCBncHIxKQorICAgIGlmIEFSTTY0IG9y
IEFSTTY0RQorICAgICAgICBzdG9yZXBhaXJxIGdwcjAsIGdwcjEsIENvZGVCbG9ja1tzcF0KKyAg
ICBlbHNpZiBBUk12NyBvciBYODZfNjQgb3IgUklTQ1Y2NAorICAgICAgICBzdG9yZXAgZ3ByMCwg
Q29kZUJsb2NrW3NwXQorICAgICAgICBzdG9yZXAgZ3ByMSwgQ2FsbGVlW3NwXQorICAgIGVsc2UK
KyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlR1BSc1VzZWRCeVJl
dHVybkNhbGwoZ3ByMCwgZ3ByMSkKKyAgICBpZiBBUk02NCBvciBBUk02NEUKKyAgICAgICAgbG9h
ZHBhaXJxIENvZGVCbG9ja1tzcF0sIGdwcjAsIGdwcjEKKyAgICBlbHNpZiBBUk12NyBvciBYODZf
NjQgb3IgUklTQ1Y2NAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbc3BdLCBncHIwCisgICAgICAg
IGxvYWRwIENhbGxlZVtzcF0sIGdwcjEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5k
CitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzKHNjcmF0Y2gpCisgICAgaWYgQVJN
NjQgb3IgQVJNNjRFIG9yIEFSTXY3IG9yIFJJU0NWNjQKKyAgICAgICAgbG9hZHAgUHRyU2l6ZVtj
ZnJdLCBscgorICAgIGVsc2lmIFg4Nl82NAorICAgICAgICBsb2FkcCBQdHJTaXplW2Nmcl0sIHNj
cmF0Y2gKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gsIFB0clNpemVbc3BdCisgICAgZWxzZQorICAg
ICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHVzZVByZXZpb3VzRnJhbWUoKQorICAg
IGlmIEFSTTY0IG9yIEFSTTY0RQorICAgICAgICBsb2FkcGFpcnEgLVB0clNpemVbY2ZyXSwgUEIs
IGNmcgorICAgIGVsc2lmIEFSTXY3IG9yIFg4Nl82NCBvciBSSVNDVjY0CisgICAgICAgIGxvYWRw
IC1QdHJTaXplW2Nmcl0sIFBCCisgICAgICAgIGxvYWRwIFtjZnJdLCBjZnIKKyAgICBlbHNlCisg
ICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworCiBtYWNybyBsb2FkV2FzbUluc3RhbmNlRnJv
bVRMU1RvKHJlZykKIGlmICBIQVZFX0ZBU1RfVExTCiAgICAgdGxzX2xvYWRwIFdURl9XQVNNX0NP
TlRFWFRfS0VZLCByZWcKQEAgLTEwMTgsNiArMTA2MywxNDMgQEAgZW5kCiAgICAgICAgIGVuZCkK
IGVuZAogCittYWNybyBzbG93UGF0aEZvcldhc21SZXR1cm5DYWxsKGN0eCwgc2xvd1BhdGgsIHN0
b3JlV2FzbUluc3RhbmNlKQorICAgIGNhbGxXYXNtQ2FsbFNsb3dQYXRoKAorICAgICAgICBzbG93
UGF0aCwKKyAgICAgICAgIyBjYWxsZWUgaXMgcjAgYW5kIHRhcmdldFdhc21JbnN0YW5jZSBpcyBy
MQorICAgICAgICBtYWNybyAoY2FsbGVlLCB0YXJnZXRXYXNtSW5zdGFuY2UpCisgICAgICAgICAg
ICBtb3ZlIGNhbGxlZSwgd3MwCisKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisKKyAgICAgICAgICAgICMgdGhlIGNhbGwg
bWlnaHQgdGhyb3cgKGUuZy4gaW5kaXJlY3QgY2FsbCB3aXRoIGJhZCBzaWduYXR1cmUpCisgICAg
ICAgICAgICBidHB6IHRhcmdldFdhc21JbnN0YW5jZSwgLnRocm93CisKKyAgICAgICAgICAgIHdn
ZXR1KGN0eCwgbV9zdGFja09mZnNldCwgd3MxKQorICAgICAgICAgICAgbXVsaSBTbG90U2l6ZSwg
d3MxCisKK2lmIEFSTXY3CisgICAgICAgICAgICBzdWJwIGNmciwgd3MxLCB3czEKKyAgICAgICAg
ICAgIG1vdmUgd3MxLCBzcAorZWxzZQorICAgICAgICAgICAgc3VicCBjZnIsIHdzMSwgc3AKK2Vu
ZAorCisgICAgICAgICAgICBzdG9yZVdhc21JbnN0YW5jZSh0YXJnZXRXYXNtSW5zdGFuY2UpCisg
ICAgICAgICAgICByZWxvYWRNZW1vcnlSZWdpc3RlcnNGcm9tSW5zdGFuY2UodGFyZ2V0V2FzbUlu
c3RhbmNlLCB3YTAsIHdhMSkKKworICAgICAgICAgICAgd2dldHUoY3R4LCBtX251bWJlck9mQ2Fs
bGVlU3RhY2tBcmdzLCB3czEpCisKK2lmIEFSTTY0IG9yIEFSTTY0RQorICAgICAgICAgICAgbGVh
cCBbc3AsIHdzMSwgOF0sIHdzMQorICAgICAgICAgICAgZm9yRWFjaEFyZ3VtZW50SlNSKG1hY3Jv
IChvZmZzZXQsIGdwcjEsIGdwcjIpCisgICAgICAgICAgICAgICAgbG9hZHBhaXJxIENhbGxGcmFt
ZUhlYWRlclNpemUgKyA4ICsgb2Zmc2V0W3dzMV0sIGdwcjEsIGdwcjIKKyAgICAgICAgICAgIGVu
ZCkKK2Vsc2lmIEpTVkFMVUU2NAorICAgICAgICAgICAgZm9yRWFjaEFyZ3VtZW50SlNSKG1hY3Jv
IChvZmZzZXQsIGdwcikKKyAgICAgICAgICAgICAgICBsb2FkcSBDYWxsRnJhbWVIZWFkZXJTaXpl
ICsgOCArIG9mZnNldFtzcCwgd3MxLCA4XSwgZ3ByCisgICAgICAgICAgICBlbmQpCitlbHNlCisg
ICAgICAgICAgICBmb3JFYWNoQXJndW1lbnRKU1IobWFjcm8gKG9mZnNldCwgZ3ByTXN3LCBncExz
dykKKyAgICAgICAgICAgICAgICBsb2FkMmlhIENhbGxGcmFtZUhlYWRlclNpemUgKyA4ICsgb2Zm
c2V0W3NwLCB3czEsIDhdLCBncExzdywgZ3ByTXN3CisgICAgICAgICAgICBlbmQpCitlbmQKK2lm
IEFSTTY0IG9yIEFSTTY0RQorICAgICAgICAgICAgZm9yRWFjaEFyZ3VtZW50RlBSKG1hY3JvIChv
ZmZzZXQsIGZwcjEsIGZwcjIpCisgICAgICAgICAgICAgICAgbG9hZHBhaXJkIENhbGxGcmFtZUhl
YWRlclNpemUgKyA4ICsgb2Zmc2V0W3dzMV0sIGZwcjEsIGZwcjIKKyAgICAgICAgICAgIGVuZCkK
K2Vsc2UKKyAgICAgICAgICAgIGZvckVhY2hBcmd1bWVudEZQUihtYWNybyAob2Zmc2V0LCBmcHIp
CisgICAgICAgICAgICAgICAgbG9hZGQgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRb
c3AsIHdzMSwgOF0sIGZwcgorICAgICAgICAgICAgZW5kKQorZW5kCisKKyAgICAgICAgICAgICMg
V2UgbmVlZCBQQyB0byBsb2FkIGluZm9ybWF0aW9uIGZyb20gY29udGV4dAorICAgICAgICAgICAg
IyBhbmQgdHdvIHNjcmF0Y2ggcmVnaXN0ZXJzIHRvIHBlcmZvcm0gdGhlIGNvcHkKKyAgICAgICAg
ICAgIHByZXNlcnZlR1BSc1VzZWRCeVJldHVybkNhbGwod2EwLCB3YTEpCisgICAgICAgICAgICBt
b3ZlIFBDLCB3czEKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisKKyAgICAgICAgICAgICMgZ2V0IG9sZCBzdGFjayBzaXpl
CisgICAgICAgICAgICB3Z2V0dShjdHgsIG1fbnVtYmVyT2ZDYWxsZXJTdGFja0FyZ3MsIHdhMCkK
KyAgICAgICAgICAgIG11bGkgU2xvdFNpemUsIHdhMAorICAgICAgICAgICAgYWRkaSBDYWxsRnJh
bWVIZWFkZXJTaXplICsgU3RhY2tBbGlnbm1lbnQgLSAxLCB3YTAKKyAgICAgICAgICAgIGFuZGkg
flN0YWNrQWxpZ25tZW50TWFzaywgd2EwCisKKyAgICAgICAgICAgICMgZ2V0IG5ldyBzdGFjayBz
aXplCisgICAgICAgICAgICB3Z2V0dShjdHgsIG1fbnVtYmVyT2ZDYWxsZWVTdGFja0FyZ3MsIHdh
MSkKKyAgICAgICAgICAgIG11bGkgU2xvdFNpemUsIHdhMQorICAgICAgICAgICAgYWRkaSBDYWxs
RnJhbWVIZWFkZXJTaXplICsgU3RhY2tBbGlnbm1lbnQgLSAxLCB3YTEKKyAgICAgICAgICAgIGFu
ZGkgflN0YWNrQWxpZ25tZW50TWFzaywgd2ExCisKKyAgICAgICAgICAgICMgZ2V0IG5ldyBzdGFj
ayBwb2ludGVyCisgICAgICAgICAgICBhZGRwIGNmciwgd2EwCisgICAgICAgICAgICBzdWJwIHdh
MSAsIHdhMAorCisgICAgICAgICAgICBtb3ZlIHdzMSwgUEMKKyAgICAgICAgICAgIHByZXNlcnZl
UmV0dXJuQWRkcmVzcyh3czEpCisgICAgICAgICAgICB1c2VQcmV2aW91c0ZyYW1lKCkKKworICAg
ICAgICAgICAgLmNvcHlMb29wOgorICAgICAgICAgICAgICAgIGlmIEFSTTY0IGFuZCBub3QgQURE
UkVTUzY0CisgICAgICAgICAgICAgICAgICAgIHN1YmkgTWFjaGluZVJlZ2lzdGVyU2l6ZSwgd2Ex
CisgICAgICAgICAgICAgICAgICAgIGxvYWRxIFtzcCwgd2ExLCAxXSwgd3MxCisgICAgICAgICAg
ICAgICAgICAgIHN0b3JlcSB3czEsIFt3YTAsIHdhMSwgMV0KKyAgICAgICAgICAgICAgICAgICAg
YnRpbnogd2ExLCAuY29weUxvb3AKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHN1YnAgTWFjaGluZVJlZ2lzdGVyU2l6ZSwgd2ExCisgICAgICAgICAgICAgICAgICAg
IGxvYWRwIFtzcCwgd2ExLCAxXSwgd3MxCisgICAgICAgICAgICAgICAgICAgIHN0b3JlcCB3czEs
IFt3YTAsIHdhMSwgMV0KKyAgICAgICAgICAgICAgICAgICAgYnRpbnogd2ExLCAuY29weUxvb3AK
KyAgICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgbW92ZSB3YTAsIHdzMQorICAgICAg
ICAgICAgcmVzdG9yZUdQUnNVc2VkQnlSZXR1cm5DYWxsKHdhMCwgd2ExKQorCisgICAgICAgICAg
ICBpZiBBUk02NCBvciBBUk02NEUgb3IgQVJNdjcgb3IgUklTQ1Y2NAorICAgICAgICAgICAgICAg
IGFkZHAgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHdzMSwgc3AKKyAgICAgICAgICAgIGVsc2lmIFg4
Nl82NAorICAgICAgICAgICAgICAgIGFkZHAgUHRyU2l6ZSwgd3MxLCBzcAorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGVycm9yCisgICAgICAgICAgICBlbmQKKworICAgICAgICAg
ICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6ZSkKKyAgICAgICAgICAg
ICAgICBtYWNybyBqdW1wTmFycm93KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisg
ICAgICAgICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9m
ZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlKSAq
IFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUl
OgorICAgICAgICAgICAgICAgICAgICBqbXAgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAg
ICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICAgIG1hY3JvIGp1bXBXaWRlMTYoKQor
ICAgICAgICAgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxl
YXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsg
KGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTE2KSAqIFB0clNpemUsIHdzMQorICAg
ICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBK
U0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAg
ICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUxNjoKKyAgICAgICAg
ICAgICAgICAgICAgam1wIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAg
ICAgZW5kCisKKyAgICAgICAgICAgICAgICBtYWNybyBqdW1wV2lkZTMyKCkKKyAgICAgICAgICAg
ICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZp
ZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIg
R2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUzMikgKiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQ
YXRoUHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBf
d2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMzI6CisgICAgICAgICAgICAgICAgICAg
IGptcCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVuZAorCisg
ICAgICAgICAgICAgICAgc2l6ZShqdW1wTmFycm93LCBqdW1wV2lkZTE2LCBqdW1wV2lkZTMyLCBt
YWNybyAoZ2VuKSBnZW4oKSBlbmQpCisgICAgICAgICAgICBlbmQpCisgICAgLnRocm93OgorICAg
IHJlc3RvcmVTdGF0ZUFmdGVyQ0NhbGwoKQorICAgIGRpc3BhdGNoKGN0eCkKKyAgICBlbmQpCitl
bmQKKwogdW5wcmVmaXhlZFdhc21PcCh3YXNtX2NhbGwsIFdhc21DYWxsLCBtYWNybyhjdHgpCiAg
ICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9jYWxsLCBzdG9yZVdh
c21JbnN0YW5jZVRvVExTKQogZW5kKQpAQCAtMTA0Miw2ICsxMjI0LDIyIEBAIHdhc21PcChjYWxs
X3JlZl9ub190bHMsIFdhc21DYWxsUmVmTm9UbHMsIG1hY3JvKGN0eCkKICAgICBzbG93UGF0aEZv
cldhc21DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX2NhbGxfcmVmX25vX3RscywgbWFjcm8odGFy
Z2V0SW5zdGFuY2UpIG1vdmUgdGFyZ2V0SW5zdGFuY2UsIHdhc21JbnN0YW5jZSBlbmQpCiBlbmQp
CiAKK3dhc21PcChyZXR1cm5fY2FsbCwgV2FzbVJldHVybkNhbGwsIG1hY3JvKGN0eCkKKyAgICBz
bG93UGF0aEZvcldhc21SZXR1cm5DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX3JldHVybl9jYWxs
LCBzdG9yZVdhc21JbnN0YW5jZVRvVExTKQorZW5kKQorCit3YXNtT3AocmV0dXJuX2NhbGxfbm9f
dGxzLCBXYXNtUmV0dXJuQ2FsbE5vVGxzLCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNt
UmV0dXJuQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9yZXR1cm5fY2FsbF9ub190bHMsIG1hY3Jv
KHRhcmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQor
ZW5kKQorCit3YXNtT3AocmV0dXJuX2NhbGxfaW5kaXJlY3QsIFdhc21SZXR1cm5DYWxsSW5kaXJl
Y3QsIG1hY3JvKGN0eCkKKyAgICBzbG93UGF0aEZvcldhc21SZXR1cm5DYWxsKGN0eCwgX3Nsb3df
cGF0aF93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0LCBzdG9yZVdhc21JbnN0YW5jZVRvVExTKQor
ZW5kKQorCit3YXNtT3AocmV0dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzLCBXYXNtUmV0dXJuQ2Fs
bEluZGlyZWN0Tm9UbHMsIG1hY3JvKGN0eCkKKyAgICBzbG93UGF0aEZvcldhc21SZXR1cm5DYWxs
KGN0eCwgX3Nsb3dfcGF0aF93YXNtX3JldHVybl9jYWxsX2luZGlyZWN0X25vX3RscywgbWFjcm8o
dGFyZ2V0SW5zdGFuY2UpIG1vdmUgdGFyZ2V0SW5zdGFuY2UsIHdhc21JbnN0YW5jZSBlbmQpCitl
bmQpCisKIHdhc21PcChjdXJyZW50X21lbW9yeSwgV2FzbUN1cnJlbnRNZW1vcnksIG1hY3JvKGN0
eCkKICAgICBsb2FkcCBXYXNtOjpJbnN0YW5jZTo6bV9tZW1vcnlbd2FzbUluc3RhbmNlXSwgdDAK
ICAgICBsb2FkcCBXYXNtOjpNZW1vcnk6Om1faGFuZGxlW3QwXSwgdDAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDA1NWNjOGJlZDYxMWIwNzdhNDQ3
MjM1Nzc5ZTM3MzBiYWMyYzkwMzguLmQ2MWE5ZWQwZjM3MDMyMjdmZGI4MDBmYmU2MjU1NThhNmEw
ZTQzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApA
QCAtNTU0LDYgKzU1NCw3IEBAIGJvb2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCk7CiAg
ICAgdihCb29sLCB1c2VXZWJBc3NlbWJseUdDLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgZ2MgdHlw
ZXMgZnJvbSB0aGUgd2FzbSBnYyBwcm9wb3NhbC4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3Nl
bWJseUV4Y2VwdGlvbnMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRoZSBuZXcgc2VjdGlvbiBhbmQg
aW5zdHJ1Y3Rpb25zIGZyb20gdGhlIHdhc20gZXhjZXB0aW9uIGhhbmRsaW5nIHNwZWMuIikgXAog
ICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlCcmFuY2hIaW50cywgdHJ1ZSwgTm9ybWFsLCAiQWxs
b3cgdGhlIG5ldyBzZWN0aW9uIGZyb20gdGhlIHdhc20gYnJhbmNoIGhpbnRpbmcgc3BlYy4iKSBc
CisgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVRhaWxDYWxscywgZmFsc2UsIE5vcm1hbCwgIkFs
bG93IHRoZSBuZXcgaW5zdHJ1Y3Rpb25zIGZyb20gdGhlIHdhc20gdGFpbCBjYWxscyBzcGVjLiIp
IFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDI5YzU4ZWE4MGU2NzRlNWY0
MDc1NGY4NTU2Y2NiNzNkNDJiOGFmYWUuLmU5NjQ4MTc1NDAxOTlmZDM1ZWNkZDk4ZTliNmU3NjQw
ZTlhNzFhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcApAQCAtNDE3LDggKzQxNywxMSBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29u
c3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRM
aXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRD
YWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFR5cGVEZWZp
bml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0
cyk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuQ2FsbCh1
aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5DYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJ
bmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGVtaXRJbmRpcmVjdENhbGwoVHlwZWRUbXAgY2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25U
eXBlIGNhbGxlZUNvZGUsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgY29uc3QgVmVjdG9yPEV4cHJl
c3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGVtaXRSZXR1cm5DYWxsSW5kaXJlY3QoVHlwZWRUbXAgY2FsbGVlSW5zdGFu
Y2UsIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgY29u
c3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYpOwogICAgIHN0ZDo6
cGFpcjxCMzo6UGF0Y2hwb2ludFZhbHVlKiwgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gV0FS
Tl9VTlVTRURfUkVUVVJOIGVtaXRDYWxsUGF0Y2hwb2ludChCYXNpY0Jsb2NrKiwgY29uc3QgVHlw
ZURlZmluaXRpb24mLCBjb25zdCBSZXN1bHRMaXN0JiByZXN1bHRzLCBjb25zdCBWZWN0b3I8VHlw
ZWRUbXA+JiBhcmdzLCBWZWN0b3I8Q29uc3RyYWluZWRUbXA+IGV4dHJhQXJncyA9IHsgfSk7CiAK
ICAgICBQYXJ0aWFsUmVzdWx0IGFkZFNoaWZ0KFR5cGUsIEIzOjpBaXI6Ok9wY29kZSwgRXhwcmVz
c2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlIHNoaWZ0LCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKQEAgLTgzNCw2ICs4MzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzdG9yZVdhc21D
b250ZXh0SW5zdGFuY2UoQmFzaWNCbG9jayosIFR5cGVkVG1wKTsKICAgICBlbnVtIGNsYXNzIFJl
c3RvcmVDYWNoZWRTdGFja0xpbWl0IHsgTm8sIFllcyB9OwogICAgIHZvaWQgcmVzdG9yZVdlYkFz
c2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQsIGNvbnN0IE1lbW9yeUlu
Zm9ybWF0aW9uJiwgVHlwZWRUbXAgaW5zdGFuY2UsIEJhc2ljQmxvY2sqKTsKKyAgICB2b2lkIHBy
ZXBhcmVGb3JSZXR1cm5DYWxsKENDYWxsSGVscGVycyYsIGNvbnN0IENhbGxJbmZvcm1hdGlvbiYs
IGNvbnN0IENhbGxJbmZvcm1hdGlvbiYpOwogCiAgICAgQjM6Ok9yaWdpbiBvcmlnaW4oKTsKIApA
QCAtMzY0NSwxNCArMzY0OSwxNCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQz
Ml90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYQogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPnJl
dHVybkNvdW50KCk7ICsraSkKICAgICAgICAgcmVzdWx0cy5hcHBlbmQodG1wRm9yVHlwZShzaWdu
YXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPnJldHVyblR5cGUoaSkpKTsKIAorICAgIGF1
dG8gY3VycmVudEluc3RhbmNlID0gZzY0KCk7CisgICAgYXBwZW5kKE1vdmUsIGluc3RhbmNlVmFs
dWUoKSwgY3VycmVudEluc3RhbmNlKTsKKwogICAgIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21D
YWxsPiogdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMgPSAmbV91bmxpbmtlZFdhc21Ub1dhc21DYWxs
czsKIAogICAgIGlmIChtX2luZm8uaXNJbXBvcnRlZEZ1bmN0aW9uRnJvbUZ1bmN0aW9uSW5kZXhT
cGFjZShmdW5jdGlvbkluZGV4KSkgewogICAgICAgICBtX21heE51bUpTQ2FsbEFyZ3VtZW50cyA9
IHN0ZDo6bWF4KG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
YXJncy5zaXplKCkpKTsKIAotICAgICAgICBhdXRvIGN1cnJlbnRJbnN0YW5jZSA9IGc2NCgpOwot
ICAgICAgICBhcHBlbmQoTW92ZSwgaW5zdGFuY2VWYWx1ZSgpLCBjdXJyZW50SW5zdGFuY2UpOwot
CiAgICAgICAgIGF1dG8gdGFyZ2V0SW5zdGFuY2UgPSBnNjQoKTsKIAogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGhhdmUgYmV0dGVyIGlzZWwgaGVyZS4KQEAgLTM3MTcsOCArMzcyMSw2IEBA
IGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29u
c3QgVHlwZURlZmluaXRpb24mIHNpZ25hCiAgICAgICAgIH0KIAogICAgICAgICBtX2N1cnJlbnRC
bG9jayA9IGNvbnRpbnVhdGlvbjsKLSAgICAgICAgLy8gVGhlIGNhbGwgY291bGQgaGF2ZSBiZWVu
IHRvIGFub3RoZXIgV2ViQXNzZW1ibHkgaW5zdGFuY2UsIGFuZCAvIG9yIGNvdWxkIGhhdmUgbW9k
aWZpZWQgb3VyIE1lbW9yeS4KLSAgICAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUo
UmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6OlllcywgbV9pbmZvLm1lbW9yeSwgY3VycmVudEluc3Rh
bmNlLCBjb250aW51YXRpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGF1dG8gcGFpciA9IGVt
aXRDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgc2lnbmF0dXJlLCByZXN1bHRzLCBhcmdz
KTsKICAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9IHBhaXIuZmlyc3Q7CkBAIC0zNzM1LDYgKzM3
MzcsOCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5k
ZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYQogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwogICAgIH0KKyAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBX
ZWJBc3NlbWJseSBpbnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVt
b3J5LgorICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFj
a0xpbWl0OjpZZXMsIG1faW5mby5tZW1vcnksIGN1cnJlbnRJbnN0YW5jZSwgbV9jdXJyZW50Qmxv
Y2spOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTM4NTAsNiArMzg1NCwyMjUgQEAgYXV0byBB
aXJJUkdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJl
LCBWZWN0b3I8RXhwcmVzc2kKICAgICByZXR1cm4gZW1pdEluZGlyZWN0Q2FsbChjYWxsZWVJbnN0
YW5jZSwgY2FsbGVlQ29kZSwgc2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKTsKIH0KIAorYXV0byBB
aXJJUkdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25z
dCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgQVNTRVJUKHNp
Z25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3VudCgpID09IGFyZ3Mu
c2l6ZSgpKTsKKworICAgIGNvbnN0IFR5cGVJbmRleCBjYWxsZXJUeXBlSW5kZXggPSBtX2luZm8u
aW50ZXJuYWxGdW5jdGlvblR5cGVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07CisgICAgY29uc3Qg
VHlwZURlZmluaXRpb24mIGNhbGxlclR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpn
ZXQoY2FsbGVyVHlwZUluZGV4KTsKKyAgICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9
IHdhc21DYWxsaW5nQ29udmVudGlvbigpOworICAgIENhbGxJbmZvcm1hdGlvbiB3YXNtQ2FsbGVy
SW5mbyA9IGNhbGxpbmdDb252ZW50aW9uLmNhbGxJbmZvcm1hdGlvbkZvcihjYWxsZXJUeXBlRGVm
aW5pdGlvbiwgQ2FsbFJvbGU6OkNhbGxlZSk7CisgICAgQ2FsbEluZm9ybWF0aW9uIHdhc21DYWxs
ZWVJbmZvID0gY2FsbGluZ0NvbnZlbnRpb24uY2FsbEluZm9ybWF0aW9uRm9yKHNpZ25hdHVyZSwg
Q2FsbFJvbGU6OkNhbGxlcik7CisKKyAgICBtX21ha2VzQ2FsbHMgPSB0cnVlOworCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+
cmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICByZXN1bHRzLmFwcGVuZCh0bXBGb3JUeXBlKHNp
Z25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+cmV0dXJuVHlwZShpKSkpOworCisgICAg
VmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+KiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscyA9
ICZtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzOworCisgICAgaWYgKG1faW5mby5pc0ltcG9ydGVk
RnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpKSB7CisgICAgICAg
IG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzID0gc3RkOjptYXgobV9tYXhOdW1KU0NhbGxBcmd1bWVu
dHMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihhcmdzLnNpemUoKSkpOworCisgICAgICAgIGF1dG8g
Y3VycmVudEluc3RhbmNlID0gZzY0KCk7CisgICAgICAgIGFwcGVuZChNb3ZlLCBpbnN0YW5jZVZh
bHVlKCksIGN1cnJlbnRJbnN0YW5jZSk7CisKKyAgICAgICAgYXV0byB0YXJnZXRJbnN0YW5jZSA9
IGc2NCgpOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBiZXR0ZXIgaXNlbCBo
ZXJlLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzOTk5CisgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbShJbnN0YW5jZTo6b2Zmc2V0
T2ZUYXJnZXRJbnN0YW5jZShmdW5jdGlvbkluZGV4KSksIHRhcmdldEluc3RhbmNlKTsKKyAgICAg
ICAgYXBwZW5kKEFkZDY0LCBpbnN0YW5jZVZhbHVlKCksIHRhcmdldEluc3RhbmNlKTsKKyAgICAg
ICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0YXJnZXRJbnN0YW5jZSksIHRhcmdldEluc3RhbmNl
KTsKKworICAgICAgICBCYXNpY0Jsb2NrKiBpc1dhc21CbG9jayA9IG1fY29kZS5hZGRCbG9jaygp
OworICAgICAgICBCYXNpY0Jsb2NrKiBpc0VtYmVkZGVyQmxvY2sgPSBtX2NvZGUuYWRkQmxvY2so
KTsKKyAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gbV9jb2RlLmFkZEJsb2NrKCk7
CisKKyAgICAgICAgYXBwZW5kKEJyYW5jaFRlc3Q2NCwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvKSwgdGFyZ2V0SW5zdGFuY2UsIHRhcmdldEluc3RhbmNlKTsKKyAgICAgICAg
bV9jdXJyZW50QmxvY2stPnNldFN1Y2Nlc3NvcnMoaXNXYXNtQmxvY2ssIGlzRW1iZWRkZXJCbG9j
ayk7CisKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBwYWlyID0gZW1pdENhbGxQYXRjaHBv
aW50KGlzV2FzbUJsb2NrLCBzaWduYXR1cmUsIHJlc3VsdHMsIGFyZ3MpOworICAgICAgICAgICAg
YXV0byogcGF0Y2hwb2ludCA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICBhdXRvIGV4Y2VwdGlv
bkhhbmRsZSA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVy
IGFsbCBwb3RlbnRpYWwgcGlubmVkIHJlZ2lzdGVycyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2aW5n
IHRoZSBpbnN0YW5jZS4KKyAgICAgICAgICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUg
d2UgY291bGQgYmUgY2FsbGluZyB0byBzb21ldGhpbmcgdGhhdCBpcyBib3VuZHMgY2hlY2tpbmcu
CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8gdGhpczogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAgICAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUo
TWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKworICAgICAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFs9LCB0aGlzXShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgICAg
IHByZXBhcmVGb3JSZXR1cm5DYWxsKGppdCwgd2FzbUNhbGxlckluZm8sIHdhc21DYWxsZWVJbmZv
KTsKKyAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUuZ2VuZXJhdGUoaml0LCBwYXJhbXMs
IHRoaXMpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRo
cmVhZFNhZmVQYXRjaGFibGVOZWFyVGFpbENhbGwoKTsKKyAgICAgICAgICAgICAgICBqaXQuYWRk
TGlua1Rhc2soW3VubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjYWxsLCBmdW5jdGlvbkluZGV4XShM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIHVubGlua2VkV2Fz
bVRvV2FzbUNhbGxzLT5hcHBlbmQoeyBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxXYXNt
RW50cnlQdHJUYWc+KGNhbGwpLCBmdW5jdGlvbkluZGV4IH0pOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGFwcGVuZChpc1dhc21CbG9jaywgSnVt
cCk7CisgICAgICAgICAgICBpc1dhc21CbG9jay0+c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24p
OworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBqdW1wRGVzdGluYXRp
b24gPSBnNjQoKTsKKyAgICAgICAgICAgIGFwcGVuZChpc0VtYmVkZGVyQmxvY2ssIE1vdmUsIEFy
Zzo6YmlnSW1tKEluc3RhbmNlOjpvZmZzZXRPZldhc21Ub0VtYmVkZGVyU3R1YihmdW5jdGlvbklu
ZGV4KSksIGp1bXBEZXN0aW5hdGlvbik7CisgICAgICAgICAgICBhcHBlbmQoaXNFbWJlZGRlckJs
b2NrLCBBZGQ2NCwgaW5zdGFuY2VWYWx1ZSgpLCBqdW1wRGVzdGluYXRpb24pOworICAgICAgICAg
ICAgYXBwZW5kKGlzRW1iZWRkZXJCbG9jaywgTW92ZSwgQXJnOjphZGRyKGp1bXBEZXN0aW5hdGlv
biksIGp1bXBEZXN0aW5hdGlvbik7CisKKyAgICAgICAgICAgIFZlY3RvcjxDb25zdHJhaW5lZFRt
cD4ganVtcEFyZ3M7CisgICAgICAgICAgICBqdW1wQXJncy5hcHBlbmQoeyBqdW1wRGVzdGluYXRp
b24sIEIzOjpWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyIH0pOworICAgICAgICAgICAgYXV0byBwYWly
ID0gZW1pdENhbGxQYXRjaHBvaW50KGlzRW1iZWRkZXJCbG9jaywgc2lnbmF0dXJlLCByZXN1bHRz
LCBhcmdzLCBXVEZNb3ZlKGp1bXBBcmdzKSk7CisgICAgICAgICAgICBhdXRvKiBwYXRjaHBvaW50
ID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgIGF1dG8gZXhjZXB0aW9uSGFuZGxlID0gcGFpci5z
ZWNvbmQ7CisKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFs
IHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2Uu
CisgICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlIGNvdWxkIGJlIGNh
bGxpbmcgdG8gc29tZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5nLgorICAgICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJv
dW5kc0NoZWNraW5nKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz0s
IHRoaXNdKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxl
LmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBqaXQuY2FsbChw
YXJhbXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChwYXJhbXMudmFsdWUoKS0+dHlwZSgpKV0u
Z3ByKCksIFdhc21FbnRyeVB0clRhZyk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
YXBwZW5kKGlzRW1iZWRkZXJCbG9jaywgSnVtcCk7CisgICAgICAgICAgICBpc0VtYmVkZGVyQmxv
Y2stPnNldFN1Y2Nlc3NvcnMoY29udGludWF0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIG1f
Y3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8g
cGFpciA9IGVtaXRDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgc2lnbmF0dXJlLCByZXN1
bHRzLCBhcmdzKTsKKyAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9IHBhaXIuZmlyc3Q7CisgICAg
ICAgIGF1dG8gZXhjZXB0aW9uSGFuZGxlID0gcGFpci5zZWNvbmQ7CisgICAgICAgIC8vIFdlIG5l
ZWQgdG8gY2xvYmJlciB0aGUgc2l6ZSByZWdpc3RlciBzaW5jZSB0aGUgTExJbnQgYWx3YXlzIGJv
dW5kcyBjaGVja3MKKyAgICAgICAgaWYgKG1fbW9kZSA9PSBNZW1vcnlNb2RlOjpTaWduYWxpbmcg
fHwgbV9pbmZvLm1lbW9yeS5pc1NoYXJlZCgpKQorICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlckxhdGUoUmVnaXN0ZXJTZXQgeyBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLmJvdW5kc0No
ZWNraW5nU2l6ZVJlZ2lzdGVyIH0pOworCisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbPSwgdGhpc10oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgcHJlcGFyZUZvclJldHVybkNh
bGwoaml0LCB3YXNtQ2FsbGVySW5mbywgd2FzbUNhbGxlZUluZm8pOworICAgICAgICAgICAgZXhj
ZXB0aW9uSGFuZGxlLmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyVGFpbENh
bGwoKTsKKyAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbdW5saW5rZWRXYXNtVG9XYXNtQ2Fs
bHMsIGNhbGwsIGZ1bmN0aW9uSW5kZXhdKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAg
ICAgICAgICAgICB1bmxpbmtlZFdhc21Ub1dhc21DYWxscy0+YXBwZW5kKHsgbGlua0J1ZmZlci5s
b2NhdGlvbk9mTmVhckNhbGw8V2FzbUVudHJ5UHRyVGFnPihjYWxsKSwgZnVuY3Rpb25JbmRleCB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsK
K30KKwordm9pZCBBaXJJUkdlbmVyYXRvcjo6cHJlcGFyZUZvclJldHVybkNhbGwoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IENhbGxJbmZvcm1hdGlvbiYgY2FsbGVySW5mbywgY29uc3QgQ2FsbElu
Zm9ybWF0aW9uJiBjYWxsZWVJbmZvKQoreworICAgIHVpbnQzMl90IGNhbGxlclN0YWNrU2l6ZSA9
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIGNhbGxlcklu
Zm8uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKTsKKyAgICB1aW50MzJfdCBjYWxs
ZWVTdGFja1NpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRl
cygpLCBjYWxsZWVJbmZvLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcyk7CisgICAg
dWludDMyX3Qgb2Zmc2V0RnJvbVNQID0gbV9jb2RlLmZyYW1lU2l6ZSgpICsgY2FsbGVyU3RhY2tT
aXplIC0gY2FsbGVlU3RhY2tTaXplOworICAgIEdQUlJlZyBzY3JhdGNoID0gd2FzbUNhbGxpbmdD
b252ZW50aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1sxXTsKKworI2lmIENQVShYODZfNjQpCisg
ICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3Rl
cikpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhN
YWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpLCBzY3JhdGNoKTsKKyNlbGlmIENQ
VShBUk02NCkgfHwgQ1BVKEFQUExFX0FSTVY3UykgfHwgQ1BVKFJJU0NWNjQpCisgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSwgaml0LmxpbmtSZWdpc3Rlcik7
CisjZWxzZQorICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworI2VuZGlmCisKKyAgICBq
aXQuZW1pdFJlc3RvcmUobV9jb2RlLmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKTsK
KyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZy
YW1lUG9pbnRlclJlZ2lzdGVyKSwgTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVy
KTsKKworICAgIHVpbnQzMl90IG9mZnNldCA9IGNhbGxlZVN0YWNrU2l6ZSArIHNpemVvZihSZWdp
c3Rlcik7CisgICAgd2hpbGUgKG9mZnNldCkgeworICAgICAgICBvZmZzZXQgLT0gc2l6ZW9mKFJl
Z2lzdGVyKTsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNz
ZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgb2Zmc2V0KSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgb2Zmc2V0RnJvbVNQICsg
b2Zmc2V0KSwgc2NyYXRjaCk7CisgICAgfQorICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihvZmZzZXRGcm9tU1ApLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIpOworfQorCithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZXR1cm5DYWxsSW5kaXJl
Y3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwg
VmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFy
dGlhbFJlc3VsdAoreworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJncy50YWtl
TGFzdCgpOworICAgIEFTU0VSVChzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFy
Z3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7CisgICAgQVNTRVJUKG1faW5mby50YWJsZUNv
dW50KCkgPiB0YWJsZUluZGV4KTsKKyAgICBBU1NFUlQobV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4
XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CisKKyAgICBtX21ha2VzQ2Fs
bHMgPSB0cnVlOworICAgIC8vIE5vdGU6IGNhbGwgaW5kaXJlY3QgY2FuIGNhbGwgZWl0aGVyIFdl
YkFzc2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uIEJlY2F1c2UK
KyAgICAvLyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiBpcyBsaWtlIGNhbGxpbmcgaW50byB0
aGUgZW1iZWRkZXIsIHdlIGNvbnNlcnZhdGl2ZWx5IGFzc3VtZSBhbGwgY2FsbCBpbmRpcmVjdHMK
KyAgICAvLyBjYW4gYmUgdG8gdGhlIGVtYmVkZGVyIGZvciBvdXIgc3RhY2sgY2hlY2sgY2FsY3Vs
YXRpb24uCisgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgPSBzdGQ6Om1heChtX21heE51bUpT
Q2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7CisKKyAg
ICBFeHByZXNzaW9uVHlwZSBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyID0gZzY0KCk7CisgICAgRXhw
cmVzc2lvblR5cGUgaW5zdGFuY2VzQnVmZmVyID0gZzY0KCk7CisgICAgRXhwcmVzc2lvblR5cGUg
Y2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCA9IGc2NCgpOworICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0oRnVuY1JlZlRhYmxlOjpvZmZzZXRPZkZ1
bmN0aW9ucygpLCBCMzo6V2lkdGg2NCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChBcmc6Omlz
VmFsaWRBZGRyRm9ybShGdW5jUmVmVGFibGU6Om9mZnNldE9mSW5zdGFuY2VzKCksIEIzOjpXaWR0
aDY0KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKEZ1bmNS
ZWZUYWJsZTo6b2Zmc2V0T2ZMZW5ndGgoKSwgQjM6OldpZHRoNjQpKTsKKworICAgICAgICBpZiAo
VU5MSUtFTFkoIUFyZzo6aXNWYWxpZEFkZHJGb3JtKEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRy
KG1fbnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSwgQjM6OldpZHRoNjQpKSkgeworICAg
ICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YmlnSW1tKEluc3RhbmNlOjpvZmZzZXRPZlRhYmxl
UHRyKG1fbnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSksIGNhbGxhYmxlRnVuY3Rpb25C
dWZmZXJMZW5ndGgpOworICAgICAgICAgICAgYXBwZW5kKEFkZDY0LCBpbnN0YW5jZVZhbHVlKCks
IGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgpOworICAgICAgICAgICAgYXBwZW5kKE1vdmUs
IEFyZzo6YWRkcihjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoKSwgY2FsbGFibGVGdW5jdGlv
bkJ1ZmZlckxlbmd0aCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXBwZW5kKE1vdmUs
IEFyZzo6YWRkcihpbnN0YW5jZVZhbHVlKCksIEluc3RhbmNlOjpvZmZzZXRPZlRhYmxlUHRyKG1f
bnVtSW1wb3J0RnVuY3Rpb25zLCB0YWJsZUluZGV4KSksIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJM
ZW5ndGgpOworICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGNhbGxhYmxlRnVuY3Rpb25C
dWZmZXJMZW5ndGgsIEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlvbnMoKSksIGNhbGxhYmxl
RnVuY3Rpb25CdWZmZXIpOworICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGNhbGxhYmxl
RnVuY3Rpb25CdWZmZXJMZW5ndGgsIEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZJbnN0YW5jZXMoKSks
IGluc3RhbmNlc0J1ZmZlcik7CisgICAgICAgIGFwcGVuZChNb3ZlMzIsIEFyZzo6YWRkcihjYWxs
YWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoLCBUYWJsZTo6b2Zmc2V0T2ZMZW5ndGgoKSksIGNhbGxh
YmxlRnVuY3Rpb25CdWZmZXJMZW5ndGgpOworICAgIH0KKworICAgIGFwcGVuZChNb3ZlMzIsIGNh
bGxlZUluZGV4LCBjYWxsZWVJbmRleCk7CisKKyAgICAvLyBDaGVjayB0aGUgaW5kZXggd2UgYXJl
IGxvb2tpbmcgZm9yIGlzIHZhbGlkLgorICAgIGVtaXRDaGVjayhbJl0geworICAgICAgICByZXR1
cm4gSW5zdChCcmFuY2gzMiwgbnVsbHB0ciwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwpLCBjYWxsZWVJbmRleCwgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlckxlbmd0aCk7
CisgICAgICAgIH0sIFs9LCB0aGlzXShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIHRoaXMtPmVtaXRUaHJvd0V4Y2Vw
dGlvbihqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzQ2FsbEluZGlyZWN0KTsKKyAgICAg
ICAgfSk7CisKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlID0gZzY0KCk7CisgICAgewor
ICAgICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVTaWduYXR1cmVJbmRleCA9IGc2NCgpOworICAg
ICAgICAvLyBDb21wdXRlIHRoZSBvZmZzZXQgaW4gdGhlIHRhYmxlIGluZGV4IHNwYWNlIHdlIGFy
ZSBsb29raW5nIGZvci4KKyAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6aW1tKHNpemVvZihXYXNt
VG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uKSksIGNhbGxlZVNpZ25hdHVyZUluZGV4KTsKKyAgICAg
ICAgYXBwZW5kKE11bDY0LCBjYWxsZWVJbmRleCwgY2FsbGVlU2lnbmF0dXJlSW5kZXgpOworICAg
ICAgICBhcHBlbmQoQWRkNjQsIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXIsIGNhbGxlZVNpZ25hdHVy
ZUluZGV4KTsKKworICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGNhbGxlZVNpZ25hdHVy
ZUluZGV4LCBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpvZmZzZXRPZkVudHJ5cG9pbnRM
b2FkTG9jYXRpb24oKSksIGNhbGxlZUNvZGUpOyAvLyBQb2ludGVyIHRvIGNhbGxlZSBjb2RlLgor
CisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24g
aXMgaW5pdGlhbGl6ZWQuIFdlIHRyYXAgaWYgaXQgaXNuJ3QuIEFuICJpbnZhbGlkIiBTaWduYXR1
cmVJbmRleCBpbmRpY2F0ZXMgaXQncyBub3QgaW5pdGlhbGl6ZWQuCisgICAgICAgIC8vIEZJWE1F
OiB3aGVuIHdlIGhhdmUgdHJhcCBoYW5kbGVycywgd2UgY2FuIGp1c3QgbGV0IHRoZSBjYWxsIGZh
aWwgYmVjYXVzZSBTaWduYXR1cmU6OmludmFsaWRJbmRleCBpcyAwLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjEwCisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OnR5cGVJbmRleCkgPT0gc2l6ZW9mKHVp
bnQ2NF90KSwgIkxvYWQgY29kZWdlbiBhc3N1bWVzIGk2NCIpOworCisgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHNlZW1zIHdhc3RlZnVsIHRvIGRvIHR3byBjaGVja3MganVzdCBmb3IgYSBuaWNlciBl
cnJvciBtZXNzYWdlLgorICAgICAgICAvLyBXZSBzaG91bGQgbW92ZSBqdXN0IHRvIHVzZSBhIHNp
bmdsZSBicmFuY2ggYW5kIHRoZW4gZmlndXJlIG91dCB3aGF0CisgICAgICAgIC8vIGVycm9yIHRv
IHVzZSBpbiB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCisKKyAgICAgICAgYXBwZW5kKE1vdmUsIEFy
Zzo6YWRkcihjYWxsZWVTaWduYXR1cmVJbmRleCwgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlv
bjo6b2Zmc2V0T2ZTaWduYXR1cmVJbmRleCgpKSwgY2FsbGVlU2lnbmF0dXJlSW5kZXgpOworCisg
ICAgICAgIGVtaXRDaGVjayhbJl0geworICAgICAgICAgICAgc3RhdGljX2Fzc2VydCghVHlwZURl
ZmluaXRpb246OmludmFsaWRJbmRleCwgIiIpOworICAgICAgICAgICAgcmV0dXJuIEluc3QoQnJh
bmNoVGVzdDY0LCBudWxscHRyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBj
YWxsZWVTaWduYXR1cmVJbmRleCwgY2FsbGVlU2lnbmF0dXJlSW5kZXgpOworICAgICAgICB9LCBb
PSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJikgeworICAgICAgICAgICAgdGhpcy0+ZW1pdFRocm93RXhjZXB0aW9uKGppdCwgRXhj
ZXB0aW9uVHlwZTo6TnVsbFRhYmxlRW50cnkpOworICAgICAgICB9KTsKKworICAgICAgICBFeHBy
ZXNzaW9uVHlwZSBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0gZzY0KCk7CisgICAgICAgIGFwcGVu
ZChNb3ZlLCBBcmc6OmJpZ0ltbShUeXBlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmUpKSwgZXhw
ZWN0ZWRTaWduYXR1cmVJbmRleCk7CisgICAgICAgIGVtaXRDaGVjayhbJl0geworICAgICAgICAg
ICAgcmV0dXJuIEluc3QoQnJhbmNoNjQsIG51bGxwdHIsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwpLCBjYWxsZWVTaWduYXR1cmVJbmRleCwgZXhwZWN0ZWRTaWduYXR1cmVJ
bmRleCk7CisgICAgICAgIH0sIFs9LCB0aGlzXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICB0aGlzLT5lbWl0VGhy
b3dFeGNlcHRpb24oaml0LCBFeGNlcHRpb25UeXBlOjpCYWRTaWduYXR1cmUpOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxlZUluc3RhbmNlID0gZzY0KCk7CisgICAgYXBwZW5k
KE1vdmUsIEFyZzo6aW5kZXgoaW5zdGFuY2VzQnVmZmVyLCBjYWxsZWVJbmRleCwgOCwgMCksIGNh
bGxlZUluc3RhbmNlKTsKKworICAgIHJldHVybiBlbWl0UmV0dXJuQ2FsbEluZGlyZWN0KGNhbGxl
ZUluc3RhbmNlLCBjYWxsZWVDb2RlLCBzaWduYXR1cmUsIGFyZ3MsIHJlc3VsdHMpOworfQorCiBh
dXRvIEFpcklSR2VuZXJhdG9yOjplbWl0SW5kaXJlY3RDYWxsKFR5cGVkVG1wIGNhbGxlZUluc3Rh
bmNlLCBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2ln
bmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiBy
ZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgYXV0byBjdXJyZW50SW5zdGFuY2UgPSBn
NjQoKTsKQEAgLTM5MzEsNiArNDE1NCw5MyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjplbWl0SW5k
aXJlY3RDYWxsKFR5cGVkVG1wIGNhbGxlZUluc3RhbmNlLCBFeHByZXNzaW9uVHlwZSBjYQogICAg
IHJldHVybiB7IH07CiB9CiAKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmVtaXRSZXR1cm5DYWxsSW5k
aXJlY3QoVHlwZWRUbXAgY2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUs
IGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAg
ICBhdXRvIGN1cnJlbnRJbnN0YW5jZSA9IGc2NCgpOworICAgIGFwcGVuZChNb3ZlLCBpbnN0YW5j
ZVZhbHVlKCksIGN1cnJlbnRJbnN0YW5jZSk7CisKKyAgICBjb25zdCBUeXBlSW5kZXggY2FsbGVy
VHlwZUluZGV4ID0gbV9pbmZvLmludGVybmFsRnVuY3Rpb25UeXBlSW5kaWNlc1ttX2Z1bmN0aW9u
SW5kZXhdOworICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBjYWxsZXJUeXBlRGVmaW5pdGlvbiA9
IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlclR5cGVJbmRleCk7CisgICAgY29uc3QgYXV0byYg
Y2FsbGluZ0NvbnZlbnRpb24gPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKKyAgICBDYWxsSW5m
b3JtYXRpb24gd2FzbUNhbGxlckluZm8gPSBjYWxsaW5nQ29udmVudGlvbi5jYWxsSW5mb3JtYXRp
b25Gb3IoY2FsbGVyVHlwZURlZmluaXRpb24sIENhbGxSb2xlOjpDYWxsZWUpOworICAgIENhbGxJ
bmZvcm1hdGlvbiB3YXNtQ2FsbGVlSW5mbyA9IGNhbGxpbmdDb252ZW50aW9uLmNhbGxJbmZvcm1h
dGlvbkZvcihzaWduYXR1cmUsIENhbGxSb2xlOjpDYWxsZXIpOworCisgICAgLy8gRG8gYSBjb250
ZXh0IHN3aXRjaCBpZiBuZWVkZWQuCisgICAgeworICAgICAgICBCYXNpY0Jsb2NrKiBkb0NvbnRl
eHRTd2l0Y2ggPSBtX2NvZGUuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uID0gbV9jb2RlLmFkZEJsb2NrKCk7CisKKyAgICAgICAgYXBwZW5kKEJyYW5jaDY0LCBB
cmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKSwgY2FsbGVlSW5zdGFuY2UsIGN1cnJl
bnRJbnN0YW5jZSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5zZXRTdWNjZXNzb3JzKGNvbnRp
bnVhdGlvbiwgZG9Db250ZXh0U3dpdGNoKTsKKworICAgICAgICBhdXRvKiBwYXRjaHBvaW50ID0g
YWRkUGF0Y2hwb2ludChCMzo6Vm9pZCk7CisgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3Jp
dGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3
ZSdyZSBjYWxsaW5nIHNvbWV0aGluZyB3aXRoIEJvdW5kc0NoZWNraW5nIG1lbW9yeS4KKyAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlcihQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHND
aGVja2luZykpOworICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJl
Z2lzdGVycyA9IDE7CisKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CisgICAgICAgICAgICBHUFJSZWcgY2FsbGVlSW5zdGFuY2UgPSBwYXJhbXNbMF0u
Z3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgb2xkQ29udGV4dEluc3RhbmNlID0gcGFyYW1zWzFd
LmdwcigpOworICAgICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdz
ID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKKyAgICAgICAgICAgIEdQUlJlZyBiYXNlTWVt
b3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKKyAgICAgICAgICAgIEFTU0VSVChj
YWxsZWVJbnN0YW5jZSAhPSBiYXNlTWVtb3J5KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhvbGRDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRP
ZkNhY2hlZFN0YWNrTGltaXQoKSksIGJhc2VNZW1vcnkpOworICAgICAgICAgICAgaml0LnN0b3Jl
UHRyKGJhc2VNZW1vcnksIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVJbnN0YW5jZSwgSW5z
dGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSk7CisgICAgICAgICAgICBqaXQuc3Rv
cmVXYXNtQ29udGV4dEluc3RhbmNlKGNhbGxlZUluc3RhbmNlKTsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIG1lbW9yeSBzaXplIHJlZ2lzdGVy
CisgICAgICAgICAgICAvLyAgIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2Mjk1MgorICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tp
bmdTaXplUmVnaXN0ZXIgIT0gY2FsbGVlSW5zdGFuY2UpOworICAgICAgICAgICAgR1BSUmVnIHNj
cmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworCisgICAgICAgICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlSW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVS
ZWdpc3Rlcik7IC8vIEJvdW5kIGNoZWNraW5nIHNpemUuCisgICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlSW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRP
ZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCisKKyAgICAg
ICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUs
IGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIsIHNjcmF0
Y2gpOworICAgICAgICB9KTsKKworICAgICAgICBlbWl0UGF0Y2hwb2ludChkb0NvbnRleHRTd2l0
Y2gsIHBhdGNocG9pbnQsIFRtcCgpLCBjYWxsZWVJbnN0YW5jZSwgY3VycmVudEluc3RhbmNlKTsK
KyAgICAgICAgYXBwZW5kKGRvQ29udGV4dFN3aXRjaCwgSnVtcCk7CisgICAgICAgIGRvQ29udGV4
dFN3aXRjaC0+c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24pOworCisgICAgICAgIG1fY3VycmVu
dEJsb2NrID0gY29udGludWF0aW9uOworICAgIH0KKworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFk
ZHIoY2FsbGVlQ29kZSksIGNhbGxlZUNvZGUpOworCisgICAgVmVjdG9yPENvbnN0cmFpbmVkVG1w
PiBleHRyYUFyZ3M7CisgICAgZXh0cmFBcmdzLmFwcGVuZChjYWxsZWVDb2RlKTsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkt
PnJldHVybkNvdW50KCk7ICsraSkKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQodG1wRm9yVHlwZShz
aWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPnJldHVyblR5cGUoaSkpKTsKKworICAg
IGF1dG8gcGFpciA9IGVtaXRDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgc2lnbmF0dXJl
LCByZXN1bHRzLCBhcmdzLCBXVEZNb3ZlKGV4dHJhQXJncykpOworICAgIGF1dG8qIHBhdGNocG9p
bnQgPSBwYWlyLmZpcnN0OworICAgIGF1dG8gZXhjZXB0aW9uSGFuZGxlID0gcGFpci5zZWNvbmQ7
CisKKyAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIgYWxsIHBvdGVudGlhbCBwaW5uZWQgcmVnaXN0
ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxlYXZpbmcgdGhlIGluc3RhbmNlLgorICAgIC8vIFdlIHBl
c3NpbWlzdGljYWxseSBhc3N1bWUgd2UncmUgYWx3YXlzIGNhbGxpbmcgc29tZXRoaW5nIHRoYXQg
aXMgYm91bmRzIGNoZWNraW5nIHNvCisgICAgLy8gYmVjYXVzZSB0aGUgd2FzbS0+d2FzbSB0aHVu
ayB1bmNvbmRpdGlvbmFsbHkgb3ZlcnJpZGVzIHRoZSBzaXplIHJlZ2lzdGVycy4KKyAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIG5vdCBoYXZlIHRvIGRvIHRoaXMsIGJ1dCB0aGUgd2FzbS0+d2FzbSBz
dHViIGFzc3VtZXMgaXQgY2FuCisgICAgLy8gdXNlIGFsbCB0aGUgcGlubmVkIHJlZ2lzdGVycyBh
cyBzY3JhdGNoOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgx
CisKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgp
LnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOworCisgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFs9LCB0aGlzXShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgR1BSUmVnIGNhbGxlZUdQ
UiA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CisgICAg
ICAgIGppdC5tb3ZlKHBhcmFtc1twYXJhbXMucHJvYygpLnJlc3VsdENvdW50KHBhcmFtcy52YWx1
ZSgpLT50eXBlKCkpXS5ncHIoKSwgY2FsbGVlR1BSKTsKKyAgICAgICAgcHJlcGFyZUZvclJldHVy
bkNhbGwoaml0LCB3YXNtQ2FsbGVySW5mbywgd2FzbUNhbGxlZUluZm8pOworICAgICAgICBleGNl
cHRpb25IYW5kbGUuZ2VuZXJhdGUoaml0LCBwYXJhbXMsIHRoaXMpOworICAgICAgICBqaXQuZmFy
SnVtcChjYWxsZWVHUFIsIFdhc21FbnRyeVB0clRhZyk7CisgICAgfSk7CisKKyAgICByZXR1cm4g
eyB9OworfQorCiB2b2lkIEFpcklSR2VuZXJhdG9yOjp1bmlmeShjb25zdCBFeHByZXNzaW9uVHlw
ZSBkc3QsIGNvbnN0IEV4cHJlc3Npb25UeXBlIHNvdXJjZSkKIHsKICAgICBBU1NFUlQoaXNTdWJ0
eXBlKHNvdXJjZS50eXBlKCksIGRzdC50eXBlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCBmN2U3MDg0YTNmNmYwNzc3YWFl
MDllMDA2ZjJhOWViMmZhOTViMzAxLi5hNzkxYmU0NjdjMTE4ZjU1OTQxYTc2M2NiOTM2Y2FiYjJk
MjhhMTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCkBAIC0zOTUsOSArMzk1LDEzIEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBU
eXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3Qm
IHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJ
bmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3Rv
cjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxSZWYoY29uc3QgVHlwZURlZmluaXRp
b24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsK
KyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5DYWxsKHVpbnQz
Ml90IGNhbGxlZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOworICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZFJldHVybkNhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4
LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJl
c3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZFVucmVhY2hhYmxlKCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
ZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSogY2FsbGVlSW5zdGFuY2UsIFZhbHVlKiBjYWxsZWVDb2Rl
LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJl
c3VsdExpc3QmKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBlbWl0UmV0
dXJuQ2FsbEluZGlyZWN0KFZhbHVlKiBjYWxsZWVJbnN0YW5jZSwgVmFsdWUqIGNhbGxlZUNvZGUs
IGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVz
dWx0TGlzdCYpOwogICAgIEIzOjpWYWx1ZSogY3JlYXRlQ2FsbFBhdGNocG9pbnQoQmFzaWNCbG9j
ayosIE9yaWdpbiwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+
JiBhcmdzLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChQYXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0
Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4pPiYgcGF0Y2hwb2ludEZ1bmN0b3IpOworICAgIHZvaWQg
cHJlcGFyZUZvclJldHVybkNhbGwoQ0NhbGxIZWxwZXJzJiwgY29uc3QgQ2FsbEluZm9ybWF0aW9u
JiwgY29uc3QgQ2FsbEluZm9ybWF0aW9uJik7CiAKICAgICB2b2lkIGR1bXAoY29uc3QgQ29udHJv
bFN0YWNrJiwgY29uc3QgU3RhY2sqIGV4cHJlc3Npb25TdGFjayk7CiAgICAgdm9pZCBzZXRQYXJz
ZXIoRnVuY3Rpb25QYXJzZXI8QjNJUkdlbmVyYXRvcj4qIHBhcnNlcikgeyBtX3BhcnNlciA9IHBh
cnNlcjsgfTsKQEAgLTEyMTIsNiArMTIxNiwxMDEgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjplbWl0
SW5kaXJlY3RDYWxsKFZhbHVlKiBjYWxsZWVJbnN0YW5jZSwgVmFsdWUqIGNhbGxlZUNvZGUsIGMK
ICAgICByZXR1cm4geyB9OwogfQogCithdXRvIEIzSVJHZW5lcmF0b3I6OmVtaXRSZXR1cm5DYWxs
SW5kaXJlY3QoVmFsdWUqIGNhbGxlZUluc3RhbmNlLCBWYWx1ZSogY2FsbGVlQ29kZSwgY29uc3Qg
VHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywg
UmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAoreworICAgIGNvbnN0IFR5cGVJ
bmRleCBjYWxsZXJUeXBlSW5kZXggPSBtX2luZm8uaW50ZXJuYWxGdW5jdGlvblR5cGVJbmRpY2Vz
W21fZnVuY3Rpb25JbmRleF07CisgICAgY29uc3QgVHlwZURlZmluaXRpb24mIGNhbGxlclR5cGVE
ZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoY2FsbGVyVHlwZUluZGV4KTsKKyAgICBj
b25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpOwor
ICAgIENhbGxJbmZvcm1hdGlvbiB3YXNtQ2FsbGVySW5mbyA9IGNhbGxpbmdDb252ZW50aW9uLmNh
bGxJbmZvcm1hdGlvbkZvcihjYWxsZXJUeXBlRGVmaW5pdGlvbiwgQ2FsbFJvbGU6OkNhbGxlZSk7
CisgICAgQ2FsbEluZm9ybWF0aW9uIHdhc21DYWxsZWVJbmZvID0gY2FsbGluZ0NvbnZlbnRpb24u
Y2FsbEluZm9ybWF0aW9uRm9yKHNpZ25hdHVyZSwgQ2FsbFJvbGU6OkNhbGxlcik7CisKKyAgICAv
LyBEbyBhIGNvbnRleHQgc3dpdGNoIGlmIG5lZWRlZC4KKyAgICB7CisgICAgICAgIEJhc2ljQmxv
Y2sqIGNvbnRpbnVhdGlvbiA9IG1fcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2Nr
KiBkb0NvbnRleHRTd2l0Y2ggPSBtX3Byb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSog
aXNTYW1lQ29udGV4dEluc3RhbmNlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksCisgICAgICAgICAgICBjYWxsZWVJbnN0YW5jZSwgaW5z
dGFuY2VWYWx1ZSgpKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShtX3Byb2MsIEIzOjpCcmFuY2gsIG9yaWdpbigpLAorICAgICAgICAgICAgaXNTYW1lQ29u
dGV4dEluc3RhbmNlLCBGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9uKSwgRnJlcXVlbnRlZEJs
b2NrKGRvQ29udGV4dFN3aXRjaCkpOworCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IGRvQ29udGV4dFN3aXRjaC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4obV9wcm9j
LCBCMzo6Vm9pZCwgb3JpZ2luKCkpOworICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRl
c1Bpbm5lZCA9IHRydWU7CisgICAgICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2Un
cmUgY2FsbGluZyBzb21ldGhpbmcgd2l0aCBCb3VuZHNDaGVja2luZyBtZW1vcnkuCisgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlzOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hl
Y2tpbmcpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoY2FsbGVlSW5z
dGFuY2UsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQoaW5zdGFuY2VWYWx1ZSgpLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKworICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIEdQUlJlZyBjYWxs
ZWVJbnN0YW5jZSA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBvbGRDb250
ZXh0SW5zdGFuY2UgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBjb25zdCBQaW5uZWRS
ZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOworICAg
ICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVy
OworICAgICAgICAgICAgQVNTRVJUKGNhbGxlZUluc3RhbmNlICE9IGJhc2VNZW1vcnkpOworICAg
ICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9sZENvbnRleHRJbnN0
YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSwgYmFzZU1lbW9yeSk7
CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGNhbGxlZUluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCkp
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZVdhc21Db250ZXh0SW5zdGFuY2UoY2FsbGVlSW5zdGFu
Y2UpOworICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVn
aXN0ZXIgIT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1
cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlcgorICAgICAgICAgICAgLy8g
ICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKKyAg
ICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9
IGNhbGxlZUluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdw
U2NyYXRjaCgwKTsKKworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGNhbGxlZUluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2lu
Z1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOyAvLyBNZW1v
cnkgc2l6ZS4KKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhj
YWxsZWVJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVt
b3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KKworICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25h
bGx5QW5kVW50YWcoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy5i
b3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaCk7CisgICAgICAgIH0pOworICAgICAg
ICBkb0NvbnRleHRTd2l0Y2gtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG9y
aWdpbigpLCBjb250aW51YXRpb24pOworCisgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGlu
dWF0aW9uOworICAgIH0KKworICAgIEIzOjpUeXBlIHJldHVyblR5cGUgPSB0b0IzUmVzdWx0VHlw
ZSgmc2lnbmF0dXJlKTsKKyAgICBWYWx1ZSogY2FsbFJlc3VsdCA9IGNyZWF0ZUNhbGxQYXRjaHBv
aW50KG1fY3VycmVudEJsb2NrLCBvcmlnaW4oKSwgc2lnbmF0dXJlLCBhcmdzLAorICAgICAgICBz
Y29wZWRMYW1iZGFSZWY8dm9pZChQYXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZT4pPihbPSwgdGhpc10oUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gaGFuZGxlKSAtPiB2b2lkIHsKKyAgICAgICAgICAg
IHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHBh
dGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOworICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlubmVkIHJlZ2lzdGVycyBzaW5jZSB3ZSBt
aWdodCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5jZS4KKyAgICAgICAgICAgIC8vIFdlIHBlc3NpbWlz
dGljYWxseSBhc3N1bWUgd2UncmUgYWx3YXlzIGNhbGxpbmcgc29tZXRoaW5nIHRoYXQgaXMgYm91
bmRzIGNoZWNraW5nIHNvCisgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZSB3YXNtLT53YXNtIHRo
dW5rIHVuY29uZGl0aW9uYWxseSBvdmVycmlkZXMgdGhlIHNpemUgcmVnaXN0ZXJzLgorICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgaGF2ZSB0byBkbyB0aGlzLCBidXQgdGhlIHdh
c20tPndhc20gc3R1YiBhc3N1bWVzIGl0IGNhbgorICAgICAgICAgICAgLy8gdXNlIGFsbCB0aGUg
cGlubmVkIHJlZ2lzdGVycyBhcyBzY3JhdGNoOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcyMTgxCisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShQ
aW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2lu
ZykpOworCisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoY2FsbGVlQ29kZSwgVmFsdWVS
ZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
Wz0sIHRoaXNdKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIGNhbGxl
ZUdQUiA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07Cisg
ICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zW3BhcmFtcy5wcm9jKCkucmVzdWx0Q291bnQo
cmV0dXJuVHlwZSldLmdwcigpLCBjYWxsZWVHUFIpOworICAgICAgICAgICAgICAgIHByZXBhcmVG
b3JSZXR1cm5DYWxsKGppdCwgd2FzbUNhbGxlckluZm8sIHdhc21DYWxsZWVJbmZvKTsKKyAgICAg
ICAgICAgICAgICBoYW5kbGUtPmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKKyAgICAgICAg
ICAgICAgICBqaXQuZmFySnVtcChjYWxsZWVHUFIsIFdhc21FbnRyeVB0clRhZyk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSkpOworCisgICAgc3dpdGNoIChyZXR1cm5UeXBlLmtpbmQoKSkg
eworICAgIGNhc2UgQjM6OlZvaWQ6IHsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
QjM6OlR1cGxlOiB7CisgICAgICAgIGNvbnN0IFZlY3RvcjxCMzo6VHlwZT4mIHR1cGxlID0gbV9w
cm9jLnR1cGxlRm9yVHlwZShyZXR1cm5UeXBlKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+cmV0dXJuQ291bnQoKTsg
KytpKQorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocHVzaChtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PEV4dHJhY3RWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdHVwbGVbaV0sIGNhbGxSZXN1
bHQsIGkpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAg
IHJlc3VsdHMuYXBwZW5kKHB1c2goY2FsbFJlc3VsdCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jv
d01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IHB1c2gobV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEludDMyLCBvcmlnaW4oKSwKQEAgLTMwMDMsOCArMzEw
Miw2IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4
LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0CiAgICAgICAgICAgICBmaWxsUmVzdWx0cyhw
aGkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gVGhlIGNhbGwgY291bGQgaGF2ZSBiZWVuIHRv
IGFub3RoZXIgV2ViQXNzZW1ibHkgaW5zdGFuY2UsIGFuZCAvIG9yIGNvdWxkIGhhdmUgbW9kaWZp
ZWQgb3VyIE1lbW9yeS4KLSAgICAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVz
dG9yZUNhY2hlZFN0YWNrTGltaXQ6OlllcywgbV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1ZSgp
LCBtX3Byb2MsIGNvbnRpbnVhdGlvbik7CiAgICAgfSBlbHNlIHsKIAogICAgICAgICBWYWx1ZSog
cGF0Y2ggPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgb3JpZ2luKCksIHNp
Z25hdHVyZSwgYXJncywKQEAgLTMwMjYsNiArMzEyMyw4IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2ln
bmF0CiAgICAgICAgICAgICB9KSk7CiAgICAgICAgIGZpbGxSZXN1bHRzKHBhdGNoKTsKICAgICB9
CisgICAgLy8gVGhlIGNhbGwgY291bGQgaGF2ZSBiZWVuIHRvIGFub3RoZXIgV2ViQXNzZW1ibHkg
aW5zdGFuY2UsIGFuZCAvIG9yIGNvdWxkIGhhdmUgbW9kaWZpZWQgb3VyIE1lbW9yeS4KKyAgICBy
ZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdDo6WWVz
LCBtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1fcHJvYywgbV9jdXJyZW50QmxvY2sp
OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTMxNDcsNiArMzI0NiwyNDQgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZl
Y3RvcjxFeHByZXNzaW8KICAgICByZXR1cm4gZW1pdEluZGlyZWN0Q2FsbChjYWxsZWVJbnN0YW5j
ZSwgY2FsbGVlQ29kZSwgc2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKTsKIH0KIAorYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRSZXR1cm5DYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFR5
cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJl
c3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBBU1NFUlQoc2lnbmF0
dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXpl
KCkpOworCisgICAgY29uc3QgVHlwZUluZGV4IGNhbGxlclR5cGVJbmRleCA9IG1faW5mby5pbnRl
cm5hbEZ1bmN0aW9uVHlwZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XTsKKyAgICBjb25zdCBUeXBl
RGVmaW5pdGlvbiYgY2FsbGVyVHlwZURlZmluaXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChj
YWxsZXJUeXBlSW5kZXgpOworICAgIGNvbnN0IGF1dG8mIGNhbGxpbmdDb252ZW50aW9uID0gd2Fz
bUNhbGxpbmdDb252ZW50aW9uKCk7CisgICAgQ2FsbEluZm9ybWF0aW9uIHdhc21DYWxsZXJJbmZv
ID0gY2FsbGluZ0NvbnZlbnRpb24uY2FsbEluZm9ybWF0aW9uRm9yKGNhbGxlclR5cGVEZWZpbml0
aW9uLCBDYWxsUm9sZTo6Q2FsbGVlKTsKKyAgICBDYWxsSW5mb3JtYXRpb24gd2FzbUNhbGxlZUlu
Zm8gPSBjYWxsaW5nQ29udmVudGlvbi5jYWxsSW5mb3JtYXRpb25Gb3Ioc2lnbmF0dXJlLCBDYWxs
Um9sZTo6Q2FsbGVyKTsKKworICAgIG1fbWFrZXNDYWxscyA9IHRydWU7CisgICAgQjM6OlR5cGUg
cmV0dXJuVHlwZSA9IHRvQjNSZXN1bHRUeXBlKCZzaWduYXR1cmUpOworCisgICAgYXV0byBmaWxs
UmVzdWx0cyA9IFsmXShWYWx1ZSogY2FsbFJlc3VsdCkgeworICAgICAgICBBU1NFUlQocmV0dXJu
VHlwZSA9PSBjYWxsUmVzdWx0LT50eXBlKCkpOworCisgICAgICAgIHN3aXRjaCAocmV0dXJuVHlw
ZS5raW5kKCkpIHsKKyAgICAgICAgY2FzZSBCMzo6Vm9pZDogeworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBCMzo6VHVwbGU6IHsKKyAgICAgICAgICAgIGNvbnN0
IFZlY3RvcjxCMzo6VHlwZT4mIHR1cGxlID0gbV9wcm9jLnR1cGxlRm9yVHlwZShyZXR1cm5UeXBl
KTsKKyAgICAgICAgICAgIEFTU0VSVChzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkt
PnJldHVybkNvdW50KCkgPT0gdHVwbGUuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPnJldHVybkNv
dW50KCk7ICsraSkKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChwdXNoKG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8RXh0cmFjdFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0dXBsZVtp
XSwgY2FsbFJlc3VsdCwgaSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHB1c2goY2FsbFJlc3Vs
dCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisK
KyAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4qIHVubGlua2VkV2FzbVRvV2FzbUNh
bGxzID0gJm1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHM7CisKKyAgICBpZiAobV9pbmZvLmlzSW1w
b3J0ZWRGdW5jdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCkpIHsKKyAg
ICAgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgPSBzdGQ6Om1heChtX21heE51bUpTQ2FsbEFy
Z3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7CisKKyAgICAgICAg
Ly8gRklYTUU6IGltcG9ydHMgY2FuIGJlIGxpbmtlZCBoZXJlLCBpbnN0ZWFkIG9mIGdlbmVyYXRp
bmcgYSBwYXRjaHBvaW50LCBiZWNhdXNlIGFsbCBpbXBvcnQgc3R1YnMgYXJlIGdlbmVyYXRlZCBi
ZWZvcmUgQjMgY29tcGlsYXRpb24gc3RhcnRzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY2NDYyCisgICAgICAgIFZhbHVlKiB0YXJnZXRJbnN0YW5jZSA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5
cGUoKSwgb3JpZ2luKCksIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFu
Y2U6Om9mZnNldE9mVGFyZ2V0SW5zdGFuY2UoZnVuY3Rpb25JbmRleCkpKTsKKyAgICAgICAgLy8g
VGhlIHRhcmdldCBpbnN0YW5jZSBpcyAwIHVubGVzcyB0aGUgY2FsbCBpcyB3YXNtLT53YXNtLgor
ICAgICAgICBWYWx1ZSogaXNXYXNtQ2FsbCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgTm90RXF1YWwsIG9yaWdpbigpLCB0YXJnZXRJbnN0YW5jZSwgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIDApKTsKKwor
ICAgICAgICBCYXNpY0Jsb2NrKiBpc1dhc21CbG9jayA9IG1fcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBCYXNpY0Jsb2NrKiBpc0VtYmVkZGVyQmxvY2sgPSBtX3Byb2MuYWRkQmxvY2soKTsKKyAg
ICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gbV9wcm9jLmFkZEJsb2NrKCk7CisgICAg
ICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBCMzo6QnJh
bmNoLCBvcmlnaW4oKSwgaXNXYXNtQ2FsbCwgRnJlcXVlbnRlZEJsb2NrKGlzV2FzbUJsb2NrKSwg
RnJlcXVlbnRlZEJsb2NrKGlzRW1iZWRkZXJCbG9jaykpOworCisgICAgICAgIFZhbHVlKiB3YXNt
Q2FsbFJlc3VsdCA9IGNyZWF0ZUNhbGxQYXRjaHBvaW50KGlzV2FzbUJsb2NrLCBvcmlnaW4oKSwg
c2lnbmF0dXJlLCBhcmdzLAorICAgICAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0Y2hw
b2ludFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4oWz0sIHRoaXNdKFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+
IGhhbmRsZSkgLT4gdm9pZCB7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53
cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMu
cmVhZHNQaW5uZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJl
ciBhbGwgcG90ZW50aWFsIHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmlu
ZyB0aGUgaW5zdGFuY2UuCisgICAgICAgICAgICAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFz
c3VtZSB3ZSBjb3VsZCBiZSBjYWxsaW5nIHRvIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVj
a2luZy4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8g
dGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAg
ICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6
Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFt0aGlzLCBoYW5kbGUsIHVubGlua2VkV2FzbVRv
V2FzbUNhbGxzLCBmdW5jdGlvbkluZGV4LCB3YXNtQ2FsbGVySW5mbywgd2FzbUNhbGxlZUluZm9d
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKKyAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgICAgICAgICBwcmVwYXJlRm9yUmV0
dXJuQ2FsbChqaXQsIHdhc21DYWxsZXJJbmZvLCB3YXNtQ2FsbGVlSW5mbyk7CisgICAgICAgICAg
ICAgICAgICAgIGhhbmRsZS0+Z2VuZXJhdGUoaml0LCBwYXJhbXMsIHRoaXMpOworICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZlUGF0Y2hh
YmxlTmVhclRhaWxDYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhb
dW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNhbGwsIGZ1bmN0aW9uSW5kZXhdKExpbmtCdWZmZXIm
IGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVubGlua2VkV2FzbVRvV2Fz
bUNhbGxzLT5hcHBlbmQoeyBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxXYXNtRW50cnlQ
dHJUYWc+KGNhbGwpLCBmdW5jdGlvbkluZGV4IH0pOworICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgVXBzaWxvblZh
bHVlKiB3YXNtQ2FsbFJlc3VsdFVwc2lsb24gPSByZXR1cm5UeXBlID09IEIzOjpWb2lkID8gbnVs
bHB0ciA6IGlzV2FzbUJsb2NrLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCB3YXNtQ2FsbFJlc3VsdCk7CisgICAgICAgIGlzV2FzbUJsb2NrLT5hcHBlbmROZXdDb250
cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgY29udGludWF0aW9uKTsKKworICAgICAg
ICAvLyBGSVhNRTogTGV0J3MgcmVtb3ZlIHRoaXMgaW5kaXJlY3Rpb24gYnkgY3JlYXRpbmcgYSBQ
SUMgZnJpZW5kbHkgSUMKKyAgICAgICAgLy8gZm9yIGNhbGxzIG91dCB0byB0aGUgZW1iZWRkZXIu
IFRoaXMgc2hvdWxkbid0IGJlIHRoYXQgaGFyZCB0byBkby4gV2UgY291bGQgcHJvYmFibHkKKyAg
ICAgICAgLy8gaW1wbGVtZW50IHRoZSBJQyB0byBiZSBvdmVyIENvbnRleHQqLgorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMzc1CisgICAgICAg
IFZhbHVlKiBqdW1wRGVzdGluYXRpb24gPSBpc0VtYmVkZGVyQmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLAorICAgICAgICAgICAgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2lu
KCksIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9m
V2FzbVRvRW1iZWRkZXJTdHViKGZ1bmN0aW9uSW5kZXgpKSk7CisKKyAgICAgICAgVmFsdWUqIGVt
YmVkZGVyQ2FsbFJlc3VsdCA9IGNyZWF0ZUNhbGxQYXRjaHBvaW50KGlzRW1iZWRkZXJCbG9jaywg
b3JpZ2luKCksIHNpZ25hdHVyZSwgYXJncywKKyAgICAgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2
b2lkKFBhdGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KFs9
LCB0aGlzXShQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQsIEJveDxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPiBoYW5kbGUpIC0+IHZvaWQgeworICAgICAgICAgICAgICAgIHBhdGNocG9pbnQt
PmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50
LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQoanVtcERlc3RpbmF0aW9uLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIgYWxsIHBvdGVudGlhbCBwaW5uZWQgcmVn
aXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxlYXZpbmcgdGhlIGluc3RhbmNlLgorICAgICAgICAg
ICAgICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UgY291bGQgYmUgY2FsbGluZyB0
byBzb21ldGhpbmcgdGhhdCBpcyBib3VuZHMgY2hlY2tpbmcuCisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpC
b3VuZHNDaGVja2luZykpOworICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbdGhpcywgaGFuZGxlLCByZXR1cm5UeXBlXShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6
OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlLT5nZW5lcmF0ZShqaXQsIHBhcmFtcywgdGhpcyk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5jYWxsKHBhcmFtc1twYXJhbXMucHJvYygpLnJlc3VsdENvdW50
KHJldHVyblR5cGUpXS5ncHIoKSwgV2FzbUVudHJ5UHRyVGFnKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgVXBzaWxvblZhbHVlKiBlbWJlZGRlckNhbGxS
ZXN1bHRVcHNpbG9uID0gcmV0dXJuVHlwZSA9PSBCMzo6Vm9pZCA/IG51bGxwdHIgOiBpc0VtYmVk
ZGVyQmxvY2stPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIGVtYmVk
ZGVyQ2FsbFJlc3VsdCk7CisgICAgICAgIGlzRW1iZWRkZXJCbG9jay0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAg
bV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisKKyAgICAgICAgaWYgKHJldHVyblR5cGUg
IT0gQjM6OlZvaWQpIHsKKyAgICAgICAgICAgIFZhbHVlKiBwaGkgPSBjb250aW51YXRpb24tPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBQaGksIHJldHVyblR5cGUsIG9yaWdpbigpKTsKKyAgICAg
ICAgICAgIHdhc21DYWxsUmVzdWx0VXBzaWxvbi0+c2V0UGhpKHBoaSk7CisgICAgICAgICAgICBl
bWJlZGRlckNhbGxSZXN1bHRVcHNpbG9uLT5zZXRQaGkocGhpKTsKKyAgICAgICAgICAgIGZpbGxS
ZXN1bHRzKHBoaSk7CisgICAgICAgIH0KKworICAgIH0gZWxzZSB7CisKKyAgICAgICAgVmFsdWUq
IHBhdGNoID0gY3JlYXRlQ2FsbFBhdGNocG9pbnQobV9jdXJyZW50QmxvY2ssIG9yaWdpbigpLCBz
aWduYXR1cmUsIGFyZ3MsCisgICAgICAgICAgICBzY29wZWRMYW1iZGFSZWY8dm9pZChQYXRjaHBv
aW50VmFsdWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4pPihbPSwgdGhpc10oUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
aGFuZGxlKSAtPiB2b2lkIHsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndy
aXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5y
ZWFkc1Bpbm5lZCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb2Ji
ZXIgdGhlIHNpemUgcmVnaXN0ZXIgc2luY2UgdGhlIExMSW50IGFsd2F5cyBib3VuZHMgY2hlY2tz
CisgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBNZW1vcnlNb2RlOjpTaWduYWxpbmcgfHwg
bV9pbmZvLm1lbW9yeS5pc1NoYXJlZCgpKQorICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldCB7IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkuYm91
bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgfSk7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFt0aGlzLCBoYW5kbGUsIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBmdW5j
dGlvbkluZGV4LCB3YXNtQ2FsbGVySW5mbywgd2FzbUNhbGxlZUluZm9dKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOworICAgICAgICAgICAgICAgICAgICBwcmVwYXJlRm9yUmV0dXJuQ2FsbChqaXQsIHdh
c21DYWxsZXJJbmZvLCB3YXNtQ2FsbGVlSW5mbyk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRs
ZS0+Z2VuZXJhdGUoaml0LCBwYXJhbXMsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZlUGF0Y2hhYmxlTmVhclRhaWxDYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbdW5saW5rZWRXYXNtVG9X
YXNtQ2FsbHMsIGNhbGwsIGZ1bmN0aW9uSW5kZXhdKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLT5hcHBlbmQo
eyBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxXYXNtRW50cnlQdHJUYWc+KGNhbGwpLCBm
dW5jdGlvbkluZGV4IH0pOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgZmlsbFJlc3VsdHMocGF0Y2gpOworICAg
IH0KKworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgQjNJUkdlbmVyYXRvcjo6cHJlcGFyZUZv
clJldHVybkNhbGwoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IENhbGxJbmZvcm1hdGlvbiYgY2Fs
bGVySW5mbywgY29uc3QgQ2FsbEluZm9ybWF0aW9uJiBjYWxsZWVJbmZvKQoreworICAgIHVpbnQz
Ml90IGNhbGxlclN0YWNrU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdu
bWVudEJ5dGVzKCksIGNhbGxlckluZm8uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVz
KTsKKyAgICB1aW50MzJfdCBjYWxsZWVTdGFja1NpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBjYWxsZWVJbmZvLmhlYWRlckFuZEFyZ3VtZW50U3Rh
Y2tTaXplSW5CeXRlcyk7CisgICAgdWludDMyX3Qgb2Zmc2V0RnJvbVNQID0gbV9wcm9jLmZyYW1l
U2l6ZSgpICsgY2FsbGVyU3RhY2tTaXplIC0gY2FsbGVlU3RhY2tTaXplOworICAgIEdQUlJlZyBz
Y3JhdGNoID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1sxXTsK
KyNpZiBDUFUoWDg2XzY0KQorICAgIGppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6
OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKSwg
c2NyYXRjaCk7CisjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUFBMRV9BUk1WN1MpIHx8IENQVShS
SVNDVjY0KQorICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2Vt
Ymxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSks
IGppdC5saW5rUmVnaXN0ZXIpOworI2Vsc2UKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKKyNlbmRpZgorCisgICAgaml0LmVtaXRSZXN0b3JlKG1fcHJvYy5jYWxsZWVTYXZlUmVnaXN0
ZXJBdE9mZnNldExpc3QoKSk7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlciksIE1hY3JvQXNzZW1ibGVyOjpm
cmFtZVBvaW50ZXJSZWdpc3Rlcik7CisKKyAgICB1aW50MzJfdCBvZmZzZXQgPSBjYWxsZWVTdGFj
a1NpemUgKyBzaXplb2YoUmVnaXN0ZXIpOworICAgIHdoaWxlIChvZmZzZXQpIHsKKyAgICAgICAg
b2Zmc2V0IC09IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIG9mZnNldCks
IENDYWxsSGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIG9mZnNldEZyb21TUCArIG9mZnNldCksIHNjcmF0Y2gpOworICAgIH0KKyAgICBqaXQuYWRk
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIob2Zmc2V0RnJvbVNQKSwgTWFjcm9Bc3Nl
bWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKK30KKworYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRSZXR1cm5DYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmlu
aXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlz
dCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAoreworICAgIFZhbHVlKiBjYWxsZWVJbmRleCA9
IGdldChhcmdzLnRha2VMYXN0KCkpOworICAgIEFTU0VSVChzaWduYXR1cmUuYXM8RnVuY3Rpb25T
aWduYXR1cmU+KCktPmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7CisKKyAgICBtX21h
a2VzQ2FsbHMgPSB0cnVlOworICAgIC8vIE5vdGU6IGNhbGwgaW5kaXJlY3QgY2FuIGNhbGwgZWl0
aGVyIFdlYkFzc2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uIEJl
Y2F1c2UKKyAgICAvLyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiBpcyBsaWtlIGNhbGxpbmcg
aW50byB0aGUgZW1iZWRkZXIsIHdlIGNvbnNlcnZhdGl2ZWx5IGFzc3VtZSBhbGwgY2FsbCBpbmRp
cmVjdHMKKyAgICAvLyBjYW4gYmUgdG8gdGhlIGVtYmVkZGVyIGZvciBvdXIgc3RhY2sgY2hlY2sg
Y2FsY3VsYXRpb24uCisgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgPSBzdGQ6Om1heChtX21h
eE51bUpTQ2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7
CisKKyAgICBWYWx1ZSogY2FsbGFibGVGdW5jdGlvbkJ1ZmZlcjsKKyAgICBWYWx1ZSogaW5zdGFu
Y2VzQnVmZmVyOworICAgIFZhbHVlKiBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoOworICAg
IHsKKyAgICAgICAgVmFsdWUqIHRhYmxlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKKyAgICAgICAg
ICAgIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4oSW5zdGFuY2U6Om9mZnNldE9m
VGFibGVQdHIobV9udW1JbXBvcnRGdW5jdGlvbnMsIHRhYmxlSW5kZXgpKSk7CisgICAgICAgIGNh
bGxhYmxlRnVuY3Rpb25CdWZmZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAorICAgICAgICAgICAg
dGFibGUsIHNhZmVDYXN0PGludDMyX3Q+KEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlvbnMo
KSkpOworICAgICAgICBpbnN0YW5jZXNCdWZmZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAorICAg
ICAgICAgICAgdGFibGUsIHNhZmVDYXN0PGludDMyX3Q+KEZ1bmNSZWZUYWJsZTo6b2Zmc2V0T2ZJ
bnN0YW5jZXMoKSkpOworICAgICAgICBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwg
b3JpZ2luKCksCisgICAgICAgICAgICB0YWJsZSwgc2FmZUNhc3Q8aW50MzJfdD4oVGFibGU6Om9m
ZnNldE9mTGVuZ3RoKCkpKTsKKyAgICB9CisKKyAgICAvLyBDaGVjayB0aGUgaW5kZXggd2UgYXJl
IGxvb2tpbmcgZm9yIGlzIHZhbGlkLgorICAgIHsKKyAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9y
aWdpbigpLAorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBBYm92ZUVxdWFsLCBvcmlnaW4oKSwgY2FsbGVlSW5kZXgsIGNhbGxhYmxlRnVuY3Rpb25C
dWZmZXJMZW5ndGgpKTsKKworICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXShD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsK
KyAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6
Ok91dE9mQm91bmRzQ2FsbEluZGlyZWN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY2Fs
bGVlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIFpFeHQz
Miwgb3JpZ2luKCksIGNhbGxlZUluZGV4KTsKKworICAgIFZhbHVlKiBjYWxsYWJsZUZ1bmN0aW9u
OworICAgIHsKKyAgICAgICAgLy8gQ29tcHV0ZSB0aGUgb2Zmc2V0IGluIHRoZSB0YWJsZSBpbmRl
eCBzcGFjZSB3ZSBhcmUgbG9va2luZyBmb3IuCisgICAgICAgIFZhbHVlKiBvZmZzZXQgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIE11bCwgb3JpZ2luKCksCisgICAg
ICAgICAgICBjYWxsZWVJbmRleCwgY29uc3RhbnQocG9pbnRlclR5cGUoKSwgc2l6ZW9mKFdhc21U
b1dhc21JbXBvcnRhYmxlRnVuY3Rpb24pKSk7CisgICAgICAgIGNhbGxhYmxlRnVuY3Rpb24gPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgb3JpZ2luKCksIGNh
bGxhYmxlRnVuY3Rpb25CdWZmZXIsIG9mZnNldCk7CisKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB0
aGUgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiBpcyBpbml0aWFsaXplZC4gV2UgdHJhcCBp
ZiBpdCBpc24ndC4gQW4gImludmFsaWQiIFNpZ25hdHVyZUluZGV4IGluZGljYXRlcyBpdCdzIG5v
dCBpbml0aWFsaXplZC4KKyAgICAgICAgLy8gRklYTUU6IHdoZW4gd2UgaGF2ZSB0cmFwIGhhbmRs
ZXJzLCB3ZSBjYW4ganVzdCBsZXQgdGhlIGNhbGwgZmFpbCBiZWNhdXNlIFNpZ25hdHVyZTo6aW52
YWxpZEluZGV4IGlzIDAuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzcyMTAKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV2FzbVRvV2FzbUltcG9ydGFibGVG
dW5jdGlvbjo6dHlwZUluZGV4KSA9PSBzaXplb2YodWludDY0X3QpLCAiTG9hZCBjb2RlZ2VuIGFz
c3VtZXMgaTY0Iik7CisgICAgICAgIFZhbHVlKiBjYWxsZWVTaWduYXR1cmVJbmRleCA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9y
aWdpbigpLCBjYWxsYWJsZUZ1bmN0aW9uLCBzYWZlQ2FzdDxpbnQzMl90PihXYXNtVG9XYXNtSW1w
b3J0YWJsZUZ1bmN0aW9uOjpvZmZzZXRPZlNpZ25hdHVyZUluZGV4KCkpKTsKKyAgICAgICAgewor
ICAgICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAorICAgICAgICAgICAgICAgIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLAor
ICAgICAgICAgICAgICAgICAgICBjYWxsZWVTaWduYXR1cmVJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3Jp
Z2luKCksIFR5cGVEZWZpbml0aW9uOjppbnZhbGlkSW5kZXgpKSk7CisKKyAgICAgICAgICAgIGNo
ZWNrLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgICAgIHRoaXMtPmVtaXRF
eGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok51bGxUYWJsZUVudHJ5KTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hlY2sgdGhlIHNpZ25hdHVyZSBt
YXRjaGVzIHRoZSB2YWx1ZSB3ZSBleHBlY3QuCisgICAgICAgIHsKKyAgICAgICAgICAgIFZhbHVl
KiBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVy
ZSkpOworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTm90RXF1YWwsIG9y
aWdpbigpLCBjYWxsZWVTaWduYXR1cmVJbmRleCwgZXhwZWN0ZWRTaWduYXR1cmVJbmRleCkpOwor
CisgICAgICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXShDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAg
ICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpCYWRTaWdu
YXR1cmUpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBWYWx1ZSog
b2Zmc2V0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBNdWwsIG9y
aWdpbigpLAorICAgICAgICBjYWxsZWVJbmRleCwgY29uc3RhbnQocG9pbnRlclR5cGUoKSwgc2l6
ZW9mKEluc3RhbmNlKikpKTsKKyAgICBWYWx1ZSogY2FsbGVlSW5zdGFuY2UgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCks
IG9yaWdpbigpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIEFkZCwgb3JpZ2luKCksIGluc3RhbmNlc0J1ZmZlciwgb2Zmc2V0KSk7CisgICAgVmFsdWUq
IGNhbGxlZUNvZGUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAorICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9y
aWdpbigpLCBjYWxsYWJsZUZ1bmN0aW9uLAorICAgICAgICAgICAgc2FmZUNhc3Q8aW50MzJfdD4o
V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZFbnRyeXBvaW50TG9hZExvY2F0
aW9uKCkpKSk7CisKKyAgICByZXR1cm4gZW1pdFJldHVybkNhbGxJbmRpcmVjdChjYWxsZWVJbnN0
YW5jZSwgY2FsbGVlQ29kZSwgc2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKTsKK30KKwogdm9pZCBC
M0lSR2VuZXJhdG9yOjp1bmlmeShWYWx1ZSogcGhpLCBjb25zdCBFeHByZXNzaW9uVHlwZSBzb3Vy
Y2UpCiB7CiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KG1fcHJv
Yywgb3JpZ2luKCksIGdldChzb3VyY2UpLCBwaGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCAzMTAyNTA4ZTBhYTdmY2Uz
ZjhlNTBkMzdmMzJkMDhjYjA4M2IxZmZjLi5hNzZlMDBlYjJkMWQzY2NhNjQ1MjlkNmQ5MzNjYjk5
YzFmZTlmMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uaApAQCAtMTI3LDYgKzEyNyw4MCBAQCBwcml2YXRlOgogICAgIH0KIAog
cHVibGljOgorICAgIHVpbnQzMl90IG51bWJlck9mU3RhY2tSZXN1bHRzKGNvbnN0IEZ1bmN0aW9u
U2lnbmF0dXJlJiBzaWduYXR1cmUpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCB1aW50MzJf
dCBncHJDb3VudCA9IGpzckFyZ3Muc2l6ZSgpOworICAgICAgICBjb25zdCB1aW50MzJfdCBmcHJD
b3VudCA9IGZwckFyZ3Muc2l6ZSgpOworICAgICAgICB1aW50MzJfdCBncHJJbmRleCA9IDA7Cisg
ICAgICAgIHVpbnQzMl90IGZwckluZGV4ID0gMDsKKyAgICAgICAgdWludDMyX3Qgc3RhY2tDb3Vu
dCA9IDA7CisgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUucmV0dXJu
Q291bnQoKTsgaSsrKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBl
KGkpLmtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAgICAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6Okk2NDoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJl
ZjoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CisgICAgICAgICAgICBjYXNl
IFR5cGVLaW5kOjpSZWZOdWxsOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgorICAg
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6UnR0OgorICAgICAgICAgICAgICAgIGlmIChncHJJbmRl
eCA8IGdwckNvdW50KQorICAgICAgICAgICAgICAgICAgICArK2dwckluZGV4OworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKytzdGFja0NvdW50OworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgorICAgICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6RjY0OgorICAgICAgICAgICAgICAgIGlmIChmcHJJbmRleCA8IGZw
ckNvdW50KQorICAgICAgICAgICAgICAgICAgICArK2ZwckluZGV4OworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKytzdGFja0NvdW50OworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKKyAgICAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RhY2tDb3VudDsKKyAgICB9CisKKyAgICB1
aW50MzJfdCBudW1iZXJPZlN0YWNrQXJndW1lbnRzKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBz
aWduYXR1cmUpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCB1aW50MzJfdCBncHJDb3VudCA9
IGpzckFyZ3Muc2l6ZSgpOworICAgICAgICBjb25zdCB1aW50MzJfdCBmcHJDb3VudCA9IGZwckFy
Z3Muc2l6ZSgpOworICAgICAgICB1aW50MzJfdCBncHJJbmRleCA9IDA7CisgICAgICAgIHVpbnQz
Ml90IGZwckluZGV4ID0gMDsKKyAgICAgICAgdWludDMyX3Qgc3RhY2tDb3VudCA9IDA7CisgICAg
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyBp
KyspIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50VHlwZShpKS5raW5k
KSB7CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CisgICAgICAgICAgICBjYXNlIFR5
cGVLaW5kOjpJNjQ6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAg
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgorICAgICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6UmVmTnVsbDoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKKyAgICAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OlJ0dDoKKyAgICAgICAgICAgICAgICBpZiAoZ3BySW5kZXggPCBncHJD
b3VudCkKKyAgICAgICAgICAgICAgICAgICAgKytncHJJbmRleDsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICsrc3RhY2tDb3VudDsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKKyAgICAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OkY2NDoKKyAgICAgICAgICAgICAgICBpZiAoZnBySW5kZXggPCBmcHJDb3VudCkK
KyAgICAgICAgICAgICAgICAgICAgKytmcHJJbmRleDsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICsrc3RhY2tDb3VudDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CisgICAgICAgICAgICBjYXNlIFR5cGVL
aW5kOjpGdW5jOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgorICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YWNrQ291bnQ7CisgICAgfQorCiAgICAgQ2FsbEluZm9y
bWF0aW9uIGNhbGxJbmZvcm1hdGlvbkZvcihjb25zdCBUeXBlRGVmaW5pdGlvbiYgdHlwZSwgQ2Fs
bFJvbGUgcm9sZSA9IENhbGxSb2xlOjpDYWxsZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25z
dCBhdXRvJiBzaWduYXR1cmUgPSAqdHlwZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKQEAgLTEz
NCwyMSArMjA4LDIzIEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCByZXN1bHRzSW5jbHVkZUk2NCA9
IGZhbHNlOwogICAgICAgICBzaXplX3QgZ3BBcmd1bWVudENvdW50ID0gMDsKICAgICAgICAgc2l6
ZV90IGZwQXJndW1lbnRDb3VudCA9IDA7Ci0gICAgICAgIHNpemVfdCBhcmdTdGFja09mZnNldCA9
IGhlYWRlclNpemVJbkJ5dGVzICsgc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgc2l6ZV90IGhl
YWRlclNpemUgPSBoZWFkZXJTaXplSW5CeXRlcyArIHNpemVvZihSZWdpc3Rlcik7CiAgICAgICAg
IGlmIChyb2xlID09IENhbGxSb2xlOjpDYWxsZXIpCi0gICAgICAgICAgICBhcmdTdGFja09mZnNl
dCAtPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyk7CisgICAgICAgICAgICBoZWFkZXJTaXplIC09
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKTsKIAorICAgICAgICBzaXplX3QgYXJnU3RhY2tPZmZz
ZXQgPSBoZWFkZXJTaXplOwogICAgICAgICBWZWN0b3I8QXJndW1lbnRMb2NhdGlvbj4gcGFyYW1z
KHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7ICsraSkgewogICAgICAgICAgICAgYXJndW1l
bnRzSW5jbHVkZUk2NCB8PSBzaWduYXR1cmUuYXJndW1lbnRUeXBlKGkpLmlzSTY0KCk7CiAgICAg
ICAgICAgICBwYXJhbXNbaV0gPSBtYXJzaGFsbExvY2F0aW9uKHJvbGUsIHNpZ25hdHVyZS5hcmd1
bWVudFR5cGUoaSksIGdwQXJndW1lbnRDb3VudCwgZnBBcmd1bWVudENvdW50LCBhcmdTdGFja09m
ZnNldCk7CiAgICAgICAgIH0KKyAgICAgICAgdWludDMyX3Qgc3RhY2tBcmdzID0gYXJnU3RhY2tP
ZmZzZXQgLSBoZWFkZXJTaXplOwogICAgICAgICBncEFyZ3VtZW50Q291bnQgPSAwOwogICAgICAg
ICBmcEFyZ3VtZW50Q291bnQgPSAwOwotICAgICAgICBzaXplX3QgcmVzdWx0U3RhY2tPZmZzZXQg
PSBoZWFkZXJTaXplSW5CeXRlcyArIHNpemVvZihSZWdpc3Rlcik7Ci0gICAgICAgIGlmIChyb2xl
ID09IENhbGxSb2xlOjpDYWxsZXIpCi0gICAgICAgICAgICByZXN1bHRTdGFja09mZnNldCAtPSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQyk7CiAKKyAgICAgICAgdWludDMyX3Qgc3RhY2tSZXN1bHRz
ID0gbnVtYmVyT2ZTdGFja1Jlc3VsdHMoc2lnbmF0dXJlKSAqIHNpemVvZihSZWdpc3Rlcik7Cisg
ICAgICAgIHVpbnQzMl90IHN0YWNrQ291bnRBbGlnbmVkID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgc3RkOjptYXgoc3RhY2tBcmdzLCBzdGFja1Jlc3Vs
dHMpKTsKKyAgICAgICAgc2l6ZV90IHJlc3VsdFN0YWNrT2Zmc2V0ID0gaGVhZGVyU2l6ZSArIHN0
YWNrQ291bnRBbGlnbmVkIC0gc3RhY2tSZXN1bHRzOwogICAgICAgICBWZWN0b3I8QXJndW1lbnRM
b2NhdGlvbiwgMT4gcmVzdWx0cyhzaWduYXR1cmUucmV0dXJuQ291bnQoKSk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50KCk7ICsraSkgewogICAg
ICAgICAgICAgcmVzdWx0c0luY2x1ZGVJNjQgfD0gc2lnbmF0dXJlLnJldHVyblR5cGUoaSkuaXNJ
NjQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlv
blBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2Vy
LmgKaW5kZXggNmQ4OTkyODMxM2U4OGRjM2ZjYjQ4NWYzOTU5OGI3NzgwY2EyMzNlMi4uODEyZWNi
NDgwMmVmNTg5OTNhZTAwMDQ2ZjkxMDhiMGUyNzliMDQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTEyMzEsNiArMTIzMSw5IEBA
IEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAorICAgIGNhc2UgUmV0dXJuQ2FsbDoKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUYWlsQ2FsbHMoKSwgIndhc20gdGFp
bCBjYWxscyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2Fz
ZSBDYWxsOiB7CiAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXg7CiAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jdGlvbkluZGV4KGZ1bmN0aW9uSW5kZXgpKTsK
QEAgLTEyMzgsNiArMTI0MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFU
RV9DQVNFKQogICAgICAgICBUeXBlSW5kZXggY2FsbGVlVHlwZUluZGV4ID0gbV9pbmZvLnR5cGVJ
bmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCk7CiAgICAgICAgIGNvbnN0
IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNh
bGxlZVR5cGVJbmRleCk7CiAgICAgICAgIGNvbnN0IGF1dG8mIGNhbGxlZVNpZ25hdHVyZSA9ICp0
eXBlRGVmaW5pdGlvbi5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKKyAgICAgICAgY29uc3QgYXV0
byYgY2FsbGVyU2lnbmF0dXJlID0gKm1fc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigp
OwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENv
dW50KCkgPiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICJjYWxsIGZ1bmN0aW9uIGluZGV4ICIs
IGZ1bmN0aW9uSW5kZXgsICIgaGFzICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCks
ICIgYXJndW1lbnRzLCBidXQgdGhlIGV4cHJlc3Npb24gc3RhY2sgY3VycmVudGx5IGhvbGRzICIs
IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1ZXMiKTsKIAogICAgICAgICBzaXplX3Qg
Zmlyc3RBcmd1bWVudEluZGV4ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gY2FsbGVlU2ln
bmF0dXJlLmFyZ3VtZW50Q291bnQoKTsKQEAgLTEyNTQsMTYgKzEyNTgsMzggQEAgRk9SX0VBQ0hf
V0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOwogCiAgICAg
ICAgIFJlc3VsdExpc3QgcmVzdWx0czsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQo
YWRkQ2FsbChmdW5jdGlvbkluZGV4LCB0eXBlRGVmaW5pdGlvbiwgYXJncywgcmVzdWx0cykpOwog
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpID09
IHJlc3VsdHMuc2l6ZSgpKTsKKyAgICAgICAgaWYgKG1fY3VycmVudE9wY29kZSA9PSBSZXR1cm5D
YWxsKSB7CisgICAgICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRSZXR1cm5DYWxs
KGZ1bmN0aW9uSW5kZXgsIHR5cGVEZWZpbml0aW9uLCBhcmdzLCByZXN1bHRzKSk7CiAKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgp
OyArK2kpCi0gICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQo
Y2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCkgPT0gcmVzdWx0cy5z
aXplKCkpOwogCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpICE9IGNhbGxlclNpZ25hdHVyZS5y
ZXR1cm5Db3VudCgpLCAidGFpbCBjYWxsIGZ1bmN0aW9uIGluZGV4ICIsIGZ1bmN0aW9uSW5kZXgs
ICIgd2l0aCByZXR1cm4gY291bnQgIiwgY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCksICIs
IGJ1dCB0aGUgY2FsbGVyJ3Mgc2lnbmF0dXJlIGhhcyAiLCBjYWxsZXJTaWduYXR1cmUucmV0dXJu
Q291bnQoKSwgIiByZXR1cm4gdmFsdWVzIik7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKSB7CisgICAgICAg
ICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGNhbGxlclNpZ25hdHVy
ZS5yZXR1cm5UeXBlKGkpLCBjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSksICJyZXR1cm4g
dHlwZSBtaXNtYXRjaCBpbiB0YWlsIGNhbGwsIGdvdCAiLCBjYWxsZWVTaWduYXR1cmUucmV0dXJu
VHlwZShpKS5raW5kLCAiLCBleHBlY3RlZCAiLCBjYWxsZXJTaWduYXR1cmUucmV0dXJuVHlwZShp
KS5raW5kKTsKKyAgICAgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRB
cHBlbmQoY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKGNoZWNrQnJh
bmNoVGFyZ2V0KG1fY29udHJvbFN0YWNrWzBdLmNvbnRyb2xEYXRhKSk7CisgICAgICAgICAgICBX
QVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRSZXR1cm4obV9jb250cm9sU3RhY2tbMF0uY29udHJv
bERhdGEsIG1fZXhwcmVzc2lvblN0YWNrKSk7CisgICAgICAgICAgICBtX3VucmVhY2hhYmxlQmxv
Y2tzID0gMTsKKworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICAg
ICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2FsbChmdW5jdGlvbkluZGV4LCB0eXBlRGVm
aW5pdGlvbiwgYXJncywgcmVzdWx0cykpOworCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChj
YWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKSA9PSByZXN1bHRzLnNpemUoKSk7CisKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291
bnQoKTsgKytpKQorICAgICAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFu
ZEFwcGVuZChjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSwgcmVzdWx0c1tpXSk7CisKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCisgICAgY2FzZSBSZXR1cm5DYWxsSW5kaXJl
Y3Q6CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
VGFpbENhbGxzKCksICJ3YXNtIHRhaWwgY2FsbHMgYXJlIG5vdCBlbmFibGVkIik7CisgICAgICAg
IEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2FsbEluZGlyZWN0OiB7CiAgICAgICAgIHVpbnQzMl90
IHNpZ25hdHVyZUluZGV4OwogICAgICAgICB1aW50MzJfdCB0YWJsZUluZGV4OwpAQCAtMTI3Niw2
ICsxMzAyLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAK
ICAgICAgICAgY29uc3QgVHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uID0gbV9pbmZvLnR5
cGVTaWduYXR1cmVzW3NpZ25hdHVyZUluZGV4XS5nZXQoKTsKICAgICAgICAgY29uc3QgYXV0byYg
Y2FsbGVlU2lnbmF0dXJlID0gKnR5cGVEZWZpbml0aW9uLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigp
OworICAgICAgICBjb25zdCBhdXRvJiBjYWxsZXJTaWduYXR1cmUgPSAqbV9zaWduYXR1cmUuYXM8
RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2Fs
bGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDE7IC8vIEFkZCB0aGUgY2FsbGVlJ3MgaW5k
ZXguCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJndW1lbnRDb3VudCA+IG1fZXhwcmVz
c2lvblN0YWNrLnNpemUoKSwgImNhbGxfaW5kaXJlY3QgZXhwZWN0cyAiLCBhcmd1bWVudENvdW50
LCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBob2xkcyAi
LCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CiAKQEAgLTEyOTQsMTIgKzEz
MjEsMzEgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAg
ICAgIG1fZXhwcmVzc2lvblN0YWNrLnNocmluayhmaXJzdEFyZ3VtZW50SW5kZXgpOwogCiAgICAg
ICAgIFJlc3VsdExpc3QgcmVzdWx0czsKLSAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQo
YWRkQ2FsbEluZGlyZWN0KHRhYmxlSW5kZXgsIHR5cGVEZWZpbml0aW9uLCBhcmdzLCByZXN1bHRz
KSk7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNpZ25hdHVyZS5y
ZXR1cm5Db3VudCgpOyArK2kpCi0gICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1
Y3RBbmRBcHBlbmQoY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOwor
ICAgICAgICBpZiAobV9jdXJyZW50T3Bjb2RlID09IFJldHVybkNhbGxJbmRpcmVjdCkgeworICAg
ICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkUmV0dXJuQ2FsbEluZGlyZWN0KHRh
YmxlSW5kZXgsIHR5cGVEZWZpbml0aW9uLCBhcmdzLCByZXN1bHRzKSk7CiAKLSAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxlZVNpZ25hdHVyZS5yZXR1
cm5Db3VudCgpID09IHJlc3VsdHMuc2l6ZSgpKTsKKworICAgICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKSAhPSBjYWxsZXJTaWduYXR1cmUu
cmV0dXJuQ291bnQoKSwgInRhaWwgY2FsbCBpbmRpcmVjdCBmdW5jdGlvbiB3aXRoIHJldHVybiBj
b3VudCAiLCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKSwgIiwgYnV0IHRoZSBjYWxsZXIn
cyBzaWduYXR1cmUgaGFzICIsIGNhbGxlclNpZ25hdHVyZS5yZXR1cm5Db3VudCgpLCAiIHJldHVy
biB2YWx1ZXMiKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxl
ZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBXQVNNX1ZB
TElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUoY2FsbGVyU2lnbmF0dXJlLnJldHVyblR5cGUoaSks
IGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpKSwgInJldHVybiB0eXBlIG1pc21hdGNoIGlu
IHRhaWwgY2FsbCBpbmRpcmVjdCwgZ290ICIsIGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkp
LmtpbmQsICIsIGV4cGVjdGVkICIsIGNhbGxlclNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLmtpbmQp
OworICAgICAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChj
YWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSwgcmVzdWx0c1tpXSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMoY2hlY2tCcmFuY2hUYXJn
ZXQobV9jb250cm9sU3RhY2tbMF0uY29udHJvbERhdGEpKTsKKyAgICAgICAgICAgIFdBU01fVFJZ
X0FERF9UT19DT05URVhUKGFkZFJldHVybihtX2NvbnRyb2xTdGFja1swXS5jb250cm9sRGF0YSwg
bV9leHByZXNzaW9uU3RhY2spKTsKKyAgICAgICAgICAgIG1fdW5yZWFjaGFibGVCbG9ja3MgPSAx
OworCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgICAgICBXQVNN
X1RSWV9BRERfVE9fQ09OVEVYVChhZGRDYWxsSW5kaXJlY3QodGFibGVJbmRleCwgdHlwZURlZmlu
aXRpb24sIGFyZ3MsIHJlc3VsdHMpKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpCisgICAgICAgICAgICAg
ICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKGNhbGxlZVNpZ25hdHVyZS5y
ZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKworICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKICAgICBjYXNlIENhbGxSZWY6IHsKQEAgLTE4MDYsNiArMTg1Miw5IEBAIGF1dG8gRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFy
dGlhbFJlc3VsdAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAorICAgIGNhc2UgUmV0dXJu
Q2FsbEluZGlyZWN0OgorICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseVRhaWxDYWxscygpLCAid2FzbSB0YWlsIGNhbGxzIGFyZSBub3QgZW5hYmxlZCIp
OworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENhbGxJbmRpcmVjdDogewogICAgICAg
ICB1aW50MzJfdCB1bnVzZWQ7CiAgICAgICAgIHVpbnQzMl90IHVudXNlZDI7CkBAIC0xODUwLDYg
KzE4OTksOSBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVhY2hhYmxl
RXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKKyAgICBjYXNlIFJldHVybkNhbGw6CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9w
dGlvbnM6OnVzZVdlYkFzc2VtYmx5VGFpbENhbGxzKCksICJ3YXNtIHRhaWwgY2FsbHMgYXJlIG5v
dCBlbmFibGVkIik7CisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2FsbDogewogICAg
ICAgICB1aW50MzJfdCBmdW5jdGlvbkluZGV4OwogICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVS
X0ZBSUxTKHBhcnNlRnVuY3Rpb25JbmRleChmdW5jdGlvbkluZGV4KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCBkMGQyYjk3
MjU5OTExZWJmMmExYzQ2YTc3ZTEyYzMzMzk5ZmJjNjdkLi4yM2EyN2ZkNGM1Yzc5Y2UxY2ZjNDhk
ODU4ZWUyNjY2NTRjM2Y4NTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21MTEludEdlbmVyYXRvci5jcHAKQEAgLTMyNiw2ICszMjYsOCBAQCBwdWJsaWM6CiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJ
bmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmlu
aXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRz
KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0
IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlz
dCYgcmVzdWx0cyk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0
dXJuQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm5DYWxsSW5kaXJlY3QodW5zaWdu
ZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJz
aW5nTG9jYWxzKCk7CkBAIC02MDYsNyArNjA4LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2Fs
bEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUK
ICAgICAvLyBjYWxsIGZyYW1lIGhlYWRlcgogCiAgICAgLy8gV2UgbmVlZCB0byBhbGxvY2F0ZSBh
dCBsZWFzdCBzcGFjZSBmb3IgYWxsIEdQUnMgYW5kIEZQUnMuCi0gICAgLy8gUmV0dXJuIHZhbHVl
cyB1c2UgdGhlIHNhbWUgYWxsb2NhdGlvbiBsYXlvdXQuCisgICAgLy8gUmV0dXJuIHZhbHVlIHN0
YWNrMCBpcyBhdCBzdGFja04gLSBzdGFja1JldHVyblZhbHVlcwogCiAgICAgY29uc3QgYXV0byBp
bml0aWFsU3RhY2tTaXplID0gbV9zdGFja1NpemU7CiAKQEAgLTYxNCw1NCArNjE2LDE3IEBAIGF1
dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBGdW5jdGlv
blNpZ25hdHVyZSYgc2lnbmF0dXJlCiAgICAgY29uc3QgdWludDMyX3QgZ3ByQ291bnQgPSBjYWxs
aW5nQ29udmVudGlvbi5qc3JBcmdzLnNpemUoKTsKICAgICBjb25zdCB1aW50MzJfdCBmcHJDb3Vu
dCA9IGNhbGxpbmdDb252ZW50aW9uLmZwckFyZ3Muc2l6ZSgpOwogCi0gICAgdWludDMyX3Qgc3Rh
Y2tDb3VudCA9IDA7CisgICAgdWludDMyX3Qgc3RhY2tSZXN1bHRzID0gY2FsbGluZ0NvbnZlbnRp
b24ubnVtYmVyT2ZTdGFja1Jlc3VsdHMoc2lnbmF0dXJlKTsKKyAgICB1aW50MzJfdCBzdGFja0Nv
dW50QWxpZ25lZCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpLCBzdGQ6Om1heChjYWxsaW5nQ29udmVudGlvbi5udW1iZXJPZlN0YWNrQXJndW1lbnRz
KHNpZ25hdHVyZSksIHN0YWNrUmVzdWx0cykpOwogICAgIHVpbnQzMl90IGdwckluZGV4ID0gMDsK
ICAgICB1aW50MzJfdCBmcHJJbmRleCA9IDA7CiAgICAgdWludDMyX3Qgc3RhY2tJbmRleCA9IDA7
CiAKLSAgICBhdXRvIGFsbG9jYXRlU3RhY2tSZWdpc3RlciA9IFsmXShUeXBlIHR5cGUpIHsKLSAg
ICAgICAgc3dpdGNoICh0eXBlLmtpbmQpIHsKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgot
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVy
bnJlZjoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKLSAgICAgICAgY2FzZSBUeXBl
S2luZDo6UmVmTnVsbDoKLSAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgotICAgICAgICBjYXNl
IFR5cGVLaW5kOjpSdHQ6Ci0gICAgICAgICAgICBpZiAoZ3BySW5kZXggPCBncHJDb3VudCkKLSAg
ICAgICAgICAgICAgICArK2dwckluZGV4OwotICAgICAgICAgICAgZWxzZSBpZiAoc3RhY2tJbmRl
eCsrID49IHN0YWNrQ291bnQpCi0gICAgICAgICAgICAgICAgKytzdGFja0NvdW50OwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKLSAgICAgICAgY2FzZSBU
eXBlS2luZDo6RjY0OgotICAgICAgICAgICAgaWYgKGZwckluZGV4IDwgZnByQ291bnQpCi0gICAg
ICAgICAgICAgICAgKytmcHJJbmRleDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0YWNrSW5kZXgr
KyA+PSBzdGFja0NvdW50KQotICAgICAgICAgICAgICAgICsrc3RhY2tDb3VudDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgotICAgICAgICBjYXNlIFR5
cGVLaW5kOjpGdW5jOgotICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgfTsKLQotCi0g
ICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7IGkr
KykKLSAgICAgICAgYWxsb2NhdGVTdGFja1JlZ2lzdGVyKHNpZ25hdHVyZS5hcmd1bWVudFR5cGUo
aSkpOwotCi0gICAgZ3BySW5kZXggPSAwOwotICAgIGZwckluZGV4ID0gMDsKLSAgICBzdGFja0lu
ZGV4ID0gMDsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNv
dW50KCk7IGkrKykKLSAgICAgICAgYWxsb2NhdGVTdGFja1JlZ2lzdGVyKHNpZ25hdHVyZS5yZXR1
cm5UeXBlKGkpKTsKLQorICAgIG1fc3RhY2tTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fc3RhY2tTaXplLnZhbHVlKCkpOwogICAgIC8v
IEZJWE1FOiB3ZSBhcmUgYWxsb2NhdGluZyB0aGUgZXh0cmEgc3BhY2UgZm9yIHRoZSBhcmd1bWVu
dC9yZXR1cm4gY291bnQgaW4gb3JkZXIgdG8gYXZvaWQgaW50ZXJmZXJlbmNlLCBidXQgd2UgY291
bGQgZG8gYmV0dGVyCiAgICAgLy8gTk9URTogV2UgaW5jcmVhc2UgYXJnIGNvdW50IGJ5IDEgZm9y
IHRoZSBjYXNlIG9mIGluZGlyZWN0IGNhbGxzCi0gICAgbV9zdGFja1NpemUgKz0gc3RkOjptYXgo
c2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDEsIHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpKSAr
IGdwckNvdW50ICsgZnByQ291bnQgKyBzdGFja0NvdW50ICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXpl
SW5SZWdpc3RlcnMgKyAxOwotICAgIGlmIChtX3N0YWNrU2l6ZS52YWx1ZSgpICUgc3RhY2tBbGln
bm1lbnRSZWdpc3RlcnMoKSkKLSAgICAgICAgKyttX3N0YWNrU2l6ZTsKKyAgICBtX3N0YWNrU2l6
ZSArPSBzdGQ6Om1heChzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMSwgc2lnbmF0dXJlLnJl
dHVybkNvdW50KCkpICsgZ3ByQ291bnQgKyBmcHJDb3VudCArIHN0YWNrQ291bnRBbGlnbmVkICsg
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgKyAxOworICAgIG1fc3RhY2tTaXplID0g
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fc3Rh
Y2tTaXplLnZhbHVlKCkpOwogICAgIGlmIChtX21heFN0YWNrU2l6ZSA8IG1fc3RhY2tTaXplKQog
ICAgICAgICBtX21heFN0YWNrU2l6ZSA9IG1fc3RhY2tTaXplOwogCkBAIC02NzIsMTEgKzYzNywx
MSBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3Qg
RnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZQogICAgIGNvbnN0IHVuc2lnbmVkIHN0YWNrT2Zm
c2V0ID0gbV9zdGFja1NpemU7CiAgICAgY29uc3QgdW5zaWduZWQgYmFzZSA9IHN0YWNrT2Zmc2V0
IC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSAxOwogCi0gICAgY29uc3QgdWlu
dDMyX3QgZ3ByTGltaXQgPSBiYXNlIC0gc3RhY2tDb3VudCAtIGdwckNvdW50OworICAgIGNvbnN0
IHVpbnQzMl90IGdwckxpbWl0ID0gYmFzZSAtIHN0YWNrQ291bnRBbGlnbmVkIC0gZ3ByQ291bnQ7
CiAgICAgY29uc3QgdWludDMyX3QgZnByTGltaXQgPSBncHJMaW1pdCAtIGZwckNvdW50OwogCiAg
ICAgc3RhY2tJbmRleCA9IGJhc2U7Ci0gICAgZ3BySW5kZXggPSBiYXNlIC0gc3RhY2tDb3VudDsK
KyAgICBncHJJbmRleCA9IGJhc2UgLSBzdGFja0NvdW50QWxpZ25lZDsKICAgICBmcHJJbmRleCA9
IGdwckluZGV4IC0gZ3ByQ291bnQ7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNpZ25h
dHVyZS5hcmd1bWVudENvdW50KCk7IGkrKykgewogICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5h
cmd1bWVudFR5cGUoaSkua2luZCkgewpAQCAtNzA2LDggKzY3MSw4IEBAIGF1dG8gTExJbnRHZW5l
cmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYg
c2lnbmF0dXJlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGFja0luZGV4ID0gYmFzZTsKLSAg
ICBncHJJbmRleCA9IGJhc2UgLSBzdGFja0NvdW50OworICAgIGdwckluZGV4ID0gYmFzZSAtIHN0
YWNrQ291bnRBbGlnbmVkOworICAgIHN0YWNrSW5kZXggPSBncHJJbmRleCArIHN0YWNrUmVzdWx0
czsKICAgICBmcHJJbmRleCA9IGdwckluZGV4IC0gZ3ByQ291bnQ7CiAgICAgZm9yICh1aW50MzJf
dCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyBpKyspIHsKICAgICAgICAgc3dp
dGNoIChzaWduYXR1cmUucmV0dXJuVHlwZShpKS5raW5kKSB7CkBAIC03NDgsNyArNzEzLDcgQEAg
YXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IEZ1bmN0
aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUKICAgICAgICAgfQogICAgIH07CiAKLSAgICByZXR1cm4g
TExJbnRDYWxsSW5mb3JtYXRpb24geyBzdGFja09mZnNldCwgc3RhY2tDb3VudCwgV1RGTW92ZShh
cmd1bWVudHMpLCBXVEZNb3ZlKGNvbW1pdFJlc3VsdHMpIH07CisgICAgcmV0dXJuIExMSW50Q2Fs
bEluZm9ybWF0aW9uIHsgc3RhY2tPZmZzZXQsIHN0YWNrQ291bnRBbGlnbmVkLCBXVEZNb3ZlKGFy
Z3VtZW50cyksIFdURk1vdmUoY29tbWl0UmVzdWx0cykgfTsKIH0KIAogYXV0byBMTEludEdlbmVy
YXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBz
aWduYXR1cmUpIC0+IFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIsIDI+CkBAIC03NjQsMTAgKzcyOSwx
MiBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3Qg
RnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZQogCiAgICAgdWludDMyX3QgZ3BySW5kZXggPSAw
OwogICAgIHVpbnQzMl90IGZwckluZGV4ID0gZ3ByQ291bnQ7Ci0gICAgdWludDMyX3Qgc3RhY2tJ
bmRleCA9IDE7CiAgICAgY29uc3QgdWludDMyX3QgbWF4R1BSSW5kZXggPSBncHJDb3VudDsKICAg
ICBjb25zdCB1aW50MzJfdCBtYXhGUFJJbmRleCA9IG1heEdQUkluZGV4ICsgZnByQ291bnQ7Cisg
ICAgdWludDMyX3Qgc3RhY2tSZXN1bHRzID0gY2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZTdGFj
a1Jlc3VsdHMoc2lnbmF0dXJlKTsKKyAgICB1aW50MzJfdCBzdGFja0NvdW50QWxpZ25lZCA9IFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGQ6Om1h
eChjYWxsaW5nQ29udmVudGlvbi5udW1iZXJPZlN0YWNrQXJndW1lbnRzKHNpZ25hdHVyZSksIHN0
YWNrUmVzdWx0cykpOwogCisgICAgdWludDMyX3Qgc3RhY2tJbmRleCA9IDEgKyBzdGFja0NvdW50
QWxpZ25lZCAtIHN0YWNrUmVzdWx0czsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2ln
bmF0dXJlLnJldHVybkNvdW50KCk7IGkrKykgewogICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5y
ZXR1cm5UeXBlKGkpLmtpbmQpIHsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgpAQCAtMTM5
Miw2ICsxMzU5LDU1IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgVHlw
ZURlZmluaXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpCiAgICAgcmV0dXJuIHsgfTsK
IH0KIAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmV0dXJuQ2FsbCh1aW50MzJfdCBmdW5jdGlv
bkluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7Cisg
ICAgQVNTRVJUKHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3Vu
dCgpID09IGFyZ3Muc2l6ZSgpKTsKKyAgICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9
IHdhc21DYWxsaW5nQ29udmVudGlvbigpOworICAgIExMSW50Q2FsbEluZm9ybWF0aW9uIGNhbGxl
ZUluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoKnNpZ25hdHVyZS5hczxGdW5jdGlvblNp
Z25hdHVyZT4oKSk7CisgICAgY29uc3QgVHlwZUluZGV4IGNhbGxlclR5cGVJbmRleCA9IG1faW5m
by5pbnRlcm5hbEZ1bmN0aW9uVHlwZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XTsKKyAgICBjb25z
dCBUeXBlRGVmaW5pdGlvbiYgY2FsbGVyVHlwZURlZmluaXRpb24gPSBUeXBlSW5mb3JtYXRpb246
OmdldChjYWxsZXJUeXBlSW5kZXgpOworICAgIHVpbnQzMl90IGNhbGxlclN0YWNrQXJncyA9IFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAorICAgICAg
ICBzdGQ6Om1heChjYWxsaW5nQ29udmVudGlvbi5udW1iZXJPZlN0YWNrQXJndW1lbnRzKCpjYWxs
ZXJUeXBlRGVmaW5pdGlvbi5hczxGdW5jdGlvblNpZ25hdHVyZT4oKSksCisgICAgICAgICAgICBj
YWxsaW5nQ29udmVudGlvbi5udW1iZXJPZlN0YWNrUmVzdWx0cygqY2FsbGVyVHlwZURlZmluaXRp
b24uYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpKSk7CisKKyAgICB1bmlmeVZhbHVlc1dpdGhCbG9j
ayhjYWxsZWVJbmZvLmFyZ3VtZW50cywgYXJncyk7CisKKyAgICBpZiAoQ29udGV4dDo6dXNlRmFz
dFRMUygpKQorICAgICAgICBXYXNtUmV0dXJuQ2FsbDo6ZW1pdCh0aGlzLCBmdW5jdGlvbkluZGV4
LCBjYWxsZWVJbmZvLnN0YWNrT2Zmc2V0LCBjYWxsZWVJbmZvLm51bWJlck9mU3RhY2tBcmd1bWVu
dHMsIGNhbGxlclN0YWNrQXJncyk7CisgICAgZWxzZQorICAgICAgICBXYXNtUmV0dXJuQ2FsbE5v
VGxzOjplbWl0KHRoaXMsIGZ1bmN0aW9uSW5kZXgsIGNhbGxlZUluZm8uc3RhY2tPZmZzZXQsIGNh
bGxlZUluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywgY2FsbGVyU3RhY2tBcmdzKTsKKworICAg
IGNhbGxlZUluZm8uY29tbWl0UmVzdWx0cyhyZXN1bHRzKTsKKworICAgIHJldHVybiB7IH07Cit9
CisKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFJldHVybkNhbGxJbmRpcmVjdCh1bnNpZ25lZCB0
YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7
CisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlSW5kZXggPSBhcmdzLnRha2VMYXN0KCk7CisKKyAg
ICBBU1NFUlQoc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5hcmd1bWVudENvdW50
KCkgPT0gYXJncy5zaXplKCkpOworICAgIEFTU0VSVChtX2luZm8udGFibGVDb3VudCgpID4gdGFi
bGVJbmRleCk7CisgICAgQVNTRVJUKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpID09
IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOworCisgICAgTExJbnRDYWxsSW5mb3JtYXRpb24g
Y2FsbGVlSW5mbyA9IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcigqc2lnbmF0dXJlLmFzPEZ1bmN0
aW9uU2lnbmF0dXJlPigpKTsKKyAgICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdh
c21DYWxsaW5nQ29udmVudGlvbigpOworICAgIGNvbnN0IFR5cGVJbmRleCBjYWxsZXJUeXBlSW5k
ZXggPSBtX2luZm8uaW50ZXJuYWxGdW5jdGlvblR5cGVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07
CisgICAgY29uc3QgVHlwZURlZmluaXRpb24mIGNhbGxlclR5cGVEZWZpbml0aW9uID0gVHlwZUlu
Zm9ybWF0aW9uOjpnZXQoY2FsbGVyVHlwZUluZGV4KTsKKyAgICB1aW50MzJfdCBjYWxsZXJTdGFj
a0FyZ3MgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSwgc3RkOjptYXgoY2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cygqY2Fs
bGVyVHlwZURlZmluaXRpb24uYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpLCBjYWxsaW5nQ29udmVu
dGlvbi5udW1iZXJPZlN0YWNrUmVzdWx0cygqY2FsbGVyVHlwZURlZmluaXRpb24uYXM8RnVuY3Rp
b25TaWduYXR1cmU+KCkpKSk7CisKKyAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhjYWxsZWVJbmZv
LmFyZ3VtZW50cywgYXJncyk7CisKKyAgICBpZiAoQ29udGV4dDo6dXNlRmFzdFRMUygpKQorICAg
ICAgICBXYXNtUmV0dXJuQ2FsbEluZGlyZWN0OjplbWl0KHRoaXMsIGNhbGxlZUluZGV4LCBtX2Nv
ZGVCbG9jay0+YWRkU2lnbmF0dXJlKCpzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkp
LCBjYWxsZWVJbmZvLnN0YWNrT2Zmc2V0LCBjYWxsZWVJbmZvLm51bWJlck9mU3RhY2tBcmd1bWVu
dHMsIGNhbGxlclN0YWNrQXJncywgdGFibGVJbmRleCk7CisgICAgZWxzZQorICAgICAgICBXYXNt
UmV0dXJuQ2FsbEluZGlyZWN0Tm9UbHM6OmVtaXQodGhpcywgY2FsbGVlSW5kZXgsIG1fY29kZUJs
b2NrLT5hZGRTaWduYXR1cmUoKnNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKSksIGNh
bGxlZUluZm8uc3RhY2tPZmZzZXQsIGNhbGxlZUluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywg
Y2FsbGVyU3RhY2tBcmdzLCB0YWJsZUluZGV4KTsKKworICAgIGNhbGxlZUluZm8uY29tbWl0UmVz
dWx0cyhyZXN1bHRzKTsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmFkZFJlZklzTnVsbChFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IHB1c2goKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5kZXggNDQwNjUwNDI1ZThm
Y2RjMGE0ZWQ0NmVmMzY0NjY1MjIxZmZiOGVlZC4uNGMxYzg0NWY1ZmJjY2QxZDJkNTM2MDEyYTZl
MGM5N2ZiYmViMGQzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQ
YXRocy5jcHAKQEAgLTU2Niw2ICs1NjYsMzYgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX3Jl
Zl9ub190bHMpCiAgICAgcmV0dXJuIGRvV2FzbUNhbGxSZWYoY2FsbEZyYW1lLCBpbnN0YW5jZSwg
cmVmZXJlbmNlLCBpbnN0cnVjdGlvbi5tX3R5cGVJbmRleCk7CiB9CiAKK1dBU01fU0xPV19QQVRI
X0RFQ0wocmV0dXJuX2NhbGwpCit7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisKKyAg
ICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21SZXR1cm5DYWxsPigpOworICAgIHJldHVy
biBkb1dhc21DYWxsKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpOworfQor
CitXQVNNX1NMT1dfUEFUSF9ERUNMKHJldHVybl9jYWxsX25vX3RscykKK3sKKyAgICBVTlVTRURf
UEFSQU0oY2FsbEZyYW1lKTsKKworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVJl
dHVybkNhbGxOb1Rscz4oKTsKKyAgICByZXR1cm4gZG9XYXNtQ2FsbChpbnN0YW5jZSwgaW5zdHJ1
Y3Rpb24ubV9mdW5jdGlvbkluZGV4KTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCkKK3sKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21SZXR1
cm5DYWxsSW5kaXJlY3Q+KCk7CisgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleCA9IFJFQUQoaW5z
dHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4KS51bmJveGVkSW50MzIoKTsKKyAgICByZXR1cm4gZG9X
YXNtQ2FsbEluZGlyZWN0KGNhbGxGcmFtZSwgaW5zdGFuY2UsIGZ1bmN0aW9uSW5kZXgsIGluc3Ry
dWN0aW9uLm1fdGFibGVJbmRleCwgaW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7Cit9CisK
K1dBU01fU0xPV19QQVRIX0RFQ0wocmV0dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzKQoreworICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVJldHVybkNhbGxJbmRpcmVjdE5vVGxzPigp
OworICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXggPSBSRUFEKGluc3RydWN0aW9uLm1fZnVuY3Rp
b25JbmRleCkudW5ib3hlZEludDMyKCk7CisgICAgcmV0dXJuIGRvV2FzbUNhbGxJbmRpcmVjdChj
YWxsRnJhbWUsIGluc3RhbmNlLCBmdW5jdGlvbkluZGV4LCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5k
ZXgsIGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOworfQorCiBXQVNNX1NMT1dfUEFUSF9E
RUNMKHNldF9nbG9iYWxfcmVmKQogewogICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2Fz
bVNldEdsb2JhbFJlZj4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0
aHMuaAppbmRleCBlNzAwZGFkNjlhYTdmYTYzNjEzZWU2YTAzZGVkYjU4ZjMxZDMxNjA4Li40Mzhm
MThhYTU3ZTk4ZDE0ZWM1NDM4NDM5OGE5N2UzMDFkYzMzYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCkBAIC04MSw2ICs4MSwxMCBAQCBXQVNNX1NMT1df
UEFUSF9ISURERU5fREVDTChjYWxsX2luZGlyZWN0KTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9E
RUNMKGNhbGxfaW5kaXJlY3Rfbm9fdGxzKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNh
bGxfcmVmKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNhbGxfcmVmX25vX3Rscyk7CitX
QVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChyZXR1cm5fY2FsbCk7CitXQVNNX1NMT1dfUEFUSF9I
SURERU5fREVDTChyZXR1cm5fY2FsbF9ub190bHMpOworV0FTTV9TTE9XX1BBVEhfSElEREVOX0RF
Q0wocmV0dXJuX2NhbGxfaW5kaXJlY3QpOworV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wocmV0
dXJuX2NhbGxfaW5kaXJlY3Rfbm9fdGxzKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHNl
dF9nbG9iYWxfcmVmKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHNldF9nbG9iYWxfcmVm
X3BvcnRhYmxlX2JpbmRpbmcpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wobWVtb3J5X2F0
b21pY193YWl0MzIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3Bw
CmluZGV4IDBmNjI0ZTBiNjFkYmI3OGZiNjMyNDE4MWIzNjI0NzdkMDJhNWIyMmYuLmI2ZmVmMzJh
MzlhYWY4ZDkwOGJhOTMxMWM0YjYxY2IwM2VhMDhhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTM2Miw2ICszNjIsMTAgQEAgc3RkOjp1bmlxdWVf
cHRyPEludGVybmFsRnVuY3Rpb24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QKICAgICAgICAgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMtPmFwcGVuZCh7IGxp
bmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPFdhc21FbnRyeVB0clRhZz4oY2FsbCksIGZ1bmN0
aW9uSW5kZXhTcGFjZSB9KTsKICAgICB9KTsKIAorICAgIC8vIFJlc3RvcmUgc3RhY2sgcG9pbnRl
ciBhZnRlciBjYWxsCisgICAgLy8gTk9URTogd2UgdXNlIGFkZFB0ciB0byBnZW5lcmF0ZSBsZWEK
KyAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0
PGludDMyX3Q+KHRvdGFsRnJhbWVTaXplKSksIE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogICAgIG1h
cnNoYWxsSlNSZXN1bHQoaml0LCB0eXBlRGVmaW5pdGlvbiwgd2FzbUZyYW1lQ29udmVudGlvbiwg
c2F2ZWRSZXN1bHRSZWdpc3RlcnMpOwogCiAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zmc2V0
JiByZWdBdE9mZnNldCA6IHJlZ2lzdGVyc1RvU3BpbGwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggNTUyMTU2
NzlkNDVmNWRmY2QxODcwOWMxYjA4NDdlNjllNzYxMzU5MS4uMTRhZTQxOTQ1ZTg4YjU2NjM4NDE1
ZWZjYTkzNzVlYzkxYmQ2NjM3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTQxNSw2ICs0MTUsMTAgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246Ompz
Q2FsbEVudHJ5cG9pbnRTbG93KCkKICAgICBqaXQubG9hZFB0cihlbnRyeXBvaW50TG9hZExvY2F0
aW9uKCksIHNjcmF0Y2hKU1IucGF5bG9hZEdQUigpKTsKICAgICBqaXQuY2FsbChzY3JhdGNoSlNS
LnBheWxvYWRHUFIoKSwgV2FzbUVudHJ5UHRyVGFnKTsKIAorICAgIC8vIFJlc3RvcmUgc3RhY2sg
cG9pbnRlciBhZnRlciBjYWxsCisgICAgLy8gTk9URTogd2UgdXNlIGFkZFB0ciB0byBnZW5lcmF0
ZSBsZWEKKyAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLXN0YXRp
Y19jYXN0PGludDMyX3Q+KHRvdGFsRnJhbWVTaXplKSksIE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBv
aW50ZXJSZWdpc3RlciwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwog
ICAgIG1hcnNoYWxsSlNSZXN1bHQoaml0LCB0eXBlRGVmaW5pdGlvbiwgd2FzbUNhbGxJbmZvLCBz
YXZlZFJlc3VsdFJlZ2lzdGVycyk7CiAKICAgICBBU1NFUlQoIVJlZ2lzdGVyU2V0OjpydW50aW1l
VGFnUmVnaXN0ZXJzKCkuY29udGFpbnMoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BS
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KaW5kZXggMDY2MTY3M2I0NzdkY2Iy
YzFhODJlMjVlNGYzZGFiZjQ1NTU5YWEyNC4uY2JiY2ZhYjZmZGZhOGU0YzIwNGE5NThiNDE1YzVh
NDdiYzRjMGIwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgpAQCAtOTgsNiAr
OTgsOCBAQAogICAgICAgICAiZGF0YS5kcm9wIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImV4
dHRhYmxlIiwgICAidmFsdWUiOiAgMjUyLCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAic2VnbWVudF9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogInNocmlua3MgdGhlIHNpemUgb2YgdGhlIHNlZ21lbnQgdG8gemVybyIsICJleHRl
bmRlZE9wIjogOSB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5
IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2
YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCiAgICAgICAg
ICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1
ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFy
YW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3si
bmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAi
dGFibGVfaW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBh
IGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAgICAg
ICAicmV0dXJuX2NhbGwiOiAgICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAg
ICAgInZhbHVlIjogIDE4LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJ0YWlsIGNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCisgICAgICAgICJyZXR1cm5f
Y2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUi
OiAgMTksICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFt
ZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInRh
YmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2NyaXB0aW9uIjogImluZGlyZWN0
IHRhaWwgY2FsbCBhIGZ1bmN0aW9uIHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAg
ICAgICAiY2FsbF9yZWYiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAi
dmFsdWUiOiAgMjAsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAg
InBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6
IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNh
bGwgYSBmdW5jdGlvbiByZWZlcmVuY2UiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsi
aTMyIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAg
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2
YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAg
ICAiaTMyLmxvYWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFs
dWUiOiAgNDUsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBh
cmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjog
Im9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBm
cm9tIG1lbW9yeSIgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGQzYmYxMTIw
ODQ4OTZmOTJhYWQxZTAyYzBlZTQ4Njc4NDJiYWJlMWEuLjZmYjE1NDUzMTcxYmNmMTkxMTI3YTZk
NDcyZWUwMDg2ZmNjMzllMmYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJl
c3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtMTg5
OSw2ICsxODk5LDEwIEBAIGRlZiBydW5XZWJBc3NlbWJseUZ1bmN0aW9uUmVmZXJlbmNlU3BlY1Rl
c3QobW9kZSkKICAgICBydW5XZWJBc3NlbWJseVNwZWNUZXN0QmFzZShtb2RlLCAic3BlYy1oYXJu
ZXNzIiwgIi0tdXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcz10cnVlIikKIGVu
ZAogCitkZWYgcnVuV2ViQXNzZW1ibHlSZXR1cm5DYWxsU3BlY1Rlc3QobW9kZSkKKyAgICBydW5X
ZWJBc3NlbWJseVNwZWNUZXN0QmFzZShtb2RlLCAicmV0dXJuLWNhbGwtc3BlYy1oYXJuZXNzIiwg
Ii0tdXNlV2ViQXNzZW1ibHlUYWlsQ2FsbHM9dHJ1ZSIpCitlbmQKKwogZGVmIHJ1bldlYkFzc2Vt
Ymx5TG93RXhlY3V0YWJsZU1lbW9yeSgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAg
IHJldHVybiBpZiAhJGppdFRlc3RzCiAgICAgcmV0dXJuIGlmICEkaXNXYXNtUGxhdGZvcm0KLS0g
CjIuMzcuMAoK
</data>
<flag name="commit-queue"
          id="489727"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>