<?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>188573</bug_id>
          
          <creation_ts>2018-08-14 12:19:25 -0700</creation_ts>
          <short_desc>Inline DataView accesses into DFG/FTL</short_desc>
          <delta_ts>2018-08-22 11:54:03 -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>WebKit Nightly Build</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>
          
          <blocked>188768</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>realdawei</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1450064</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-14 12:19:25 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450065</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-14 12:19:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/43286746&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450251</commentid>
    <comment_count>2</comment_count>
      <attachid>347152</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-14 23:57:47 -0700</bug_when>
    <thetext>Created attachment 347152
WIP

it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450763</commentid>
    <comment_count>3</comment_count>
      <attachid>347278</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-16 11:35:03 -0700</bug_when>
    <thetext>Created attachment 347278
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450809</commentid>
    <comment_count>4</comment_count>
      <attachid>347290</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-16 12:40:05 -0700</bug_when>
    <thetext>Created attachment 347290
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450885</commentid>
    <comment_count>5</comment_count>
      <attachid>347309</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-16 14:43:57 -0700</bug_when>
    <thetext>Created attachment 347309
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450990</commentid>
    <comment_count>6</comment_count>
      <attachid>347334</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-16 19:10:28 -0700</bug_when>
    <thetext>Created attachment 347334
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451009</commentid>
    <comment_count>7</comment_count>
      <attachid>347342</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-16 20:00:18 -0700</bug_when>
    <thetext>Created attachment 347342
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451042</commentid>
    <comment_count>8</comment_count>
      <attachid>347354</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-17 01:19:13 -0700</bug_when>
    <thetext>Created attachment 347354
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451280</commentid>
    <comment_count>9</comment_count>
      <attachid>347415</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-17 16:53:20 -0700</bug_when>
    <thetext>Created attachment 347415
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451473</commentid>
    <comment_count>10</comment_count>
      <attachid>347465</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-19 14:03:23 -0700</bug_when>
    <thetext>Created attachment 347465
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451518</commentid>
    <comment_count>11</comment_count>
      <attachid>347476</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-19 18:32:42 -0700</bug_when>
    <thetext>Created attachment 347476
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451523</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-19 20:36:58 -0700</bug_when>
    <thetext>Attachment 347476 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGNodeType.h:486:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451546</commentid>
    <comment_count>13</comment_count>
      <attachid>347484</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-20 00:41:37 -0700</bug_when>
    <thetext>Created attachment 347484
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451856</commentid>
    <comment_count>14</comment_count>
      <attachid>347579</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-20 17:27:34 -0700</bug_when>
    <thetext>Created attachment 347579
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451898</commentid>
    <comment_count>15</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-20 18:31:57 -0700</bug_when>
    <thetext>Attachment 347579 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGNodeType.h:486:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451903</commentid>
    <comment_count>16</comment_count>
      <attachid>347579</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-08-20 18:37:36 -0700</bug_when>
    <thetext>Comment on attachment 347579
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451975</commentid>
    <comment_count>17</comment_count>
      <attachid>347579</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-20 22:37:40 -0700</bug_when>
    <thetext>Comment on attachment 347579
patch

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451978</commentid>
    <comment_count>18</comment_count>
      <attachid>347579</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-20 23:05:28 -0700</bug_when>
    <thetext>Comment on attachment 347579
patch

Clearing flags on attachment: 347579

Committed r235106: &lt;https://trac.webkit.org/changeset/235106&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451979</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-20 23:05:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452684</commentid>
    <comment_count>20</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-08-22 09:53:28 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #18)
&gt; Comment on attachment 347579 [details]
&gt; patch
&gt; 
&gt; Clearing flags on attachment: 347579
&gt; 
&gt; Committed r235106: &lt;https://trac.webkit.org/changeset/235106&gt;


Looks like test &quot;microbenchmarks/data-view-accesses.js&quot; added in this revision has been failing on 32-bit JSC ever since it was added:

https://build.webkit.org/builders/Apple%20High%20Sierra%2032-bit%20JSC%20%28BuildAndTest%29/builds/2469/steps/webkit-32bit-jsc-test/logs/stdio

microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: Timed out after 339.000000 sec seconds!
microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 1   0x2a94bb WTFCrash
microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 2   0x4c08e startTimeoutThreadIfNeeded()::$_7::operator()() const
microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 3   0x4bf6a WTF::Function&lt;void ()&gt;::CallableWrapper&lt;startTimeoutThreadIfNeeded()::$_7&gt;::call()
microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 4   0x2d5649 WTF::Function&lt;void ()&gt;::operator()() const
microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 5   0x3711f1 WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 6   0x377c87 WTF::wtfThreadEntryPoint(void*)
microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 7   0xa77044d5 _pthread_body
microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 8   0xa770437a _pthread_body
microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 9   0xa7703a56 thread_start
microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: test_script_12852: line 2: 24446 Segmentation fault: 11  ( &quot;$@&quot; ../../.vm/JavaScriptCore.framework/Resources/jsc --useFTLJIT\=false --useFunctionDotArguments\=true --validateExceptionChecks\=true --useDollarVM\=true --maxPerThreadStackUsage\=1572864 --forceCodeBlockToJettisonDueToOldAge\=true --validateGraph\=true --useMaximalFlushInsertionPhase\=true --useConcurrentJIT\=false --thresholdForJITAfterWarmUp\=100 --scribbleFreeCells\=true data-view-accesses.js )
microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: ERROR: Unexpected exit code: 139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452725</commentid>
    <comment_count>21</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-22 11:37:01 -0700</bug_when>
    <thetext>(In reply to David Fenton (:realdawei) from comment #20)
&gt; (In reply to WebKit Commit Bot from comment #18)
&gt; &gt; Comment on attachment 347579 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 347579
&gt; &gt; 
&gt; &gt; Committed r235106: &lt;https://trac.webkit.org/changeset/235106&gt;
&gt; 
&gt; 
&gt; Looks like test &quot;microbenchmarks/data-view-accesses.js&quot; added in this
&gt; revision has been failing on 32-bit JSC ever since it was added:
&gt; 
&gt; https://build.webkit.org/builders/Apple%20High%20Sierra%2032-
&gt; bit%20JSC%20%28BuildAndTest%29/builds/2469/steps/webkit-32bit-jsc-test/logs/
&gt; stdio
&gt; 
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit:
&gt; Timed out after 339.000000 sec seconds!
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 1 
&gt; 0x2a94bb WTFCrash
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 2 
&gt; 0x4c08e startTimeoutThreadIfNeeded()::$_7::operator()() const
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 3 
&gt; 0x4bf6a WTF::Function&lt;void
&gt; ()&gt;::CallableWrapper&lt;startTimeoutThreadIfNeeded()::$_7&gt;::call()
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 4 
&gt; 0x2d5649 WTF::Function&lt;void ()&gt;::operator()() const
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 5 
&gt; 0x3711f1 WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 6 
&gt; 0x377c87 WTF::wtfThreadEntryPoint(void*)
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 7 
&gt; 0xa77044d5 _pthread_body
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 8 
&gt; 0xa770437a _pthread_body
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit: 9 
&gt; 0xa7703a56 thread_start
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit:
&gt; test_script_12852: line 2: 24446 Segmentation fault: 11  ( &quot;$@&quot;
&gt; ../../.vm/JavaScriptCore.framework/Resources/jsc --useFTLJIT\=false
&gt; --useFunctionDotArguments\=true --validateExceptionChecks\=true
&gt; --useDollarVM\=true --maxPerThreadStackUsage\=1572864
&gt; --forceCodeBlockToJettisonDueToOldAge\=true --validateGraph\=true
&gt; --useMaximalFlushInsertionPhase\=true --useConcurrentJIT\=false
&gt; --thresholdForJITAfterWarmUp\=100 --scribbleFreeCells\=true
&gt; data-view-accesses.js )
&gt; microbenchmarks/data-view-accesses.js.dfg-maximal-flush-validate-no-cjit:
&gt; ERROR: Unexpected exit code: 139

Ok we can make it run less.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452730</commentid>
    <comment_count>22</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-22 11:54:03 -0700</bug_when>
    <thetext>Made the test run for less time in:
https://trac.webkit.org/changeset/235189/webkit

let me know if the issue still persists.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347152</attachid>
            <date>2018-08-14 23:57:47 -0700</date>
            <delta_ts>2018-08-16 11:35:03 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>22015</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIwMywxMSBA
QCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyCiAgICAgICAgICAgICAg
ICAgc3RyT3V0LnByaW50KCJEZXJpdmVkQXJyYXkiKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAodmFsdWUgJiBTcGVj
RGF0YVZpZXdPYmplY3QpCisgICAgICAgICAgICAgICAgc3RyT3V0LnByaW50KCJEYXRhVmlldyIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoKHZhbHVlICYgU3BlY1N0cmluZykgPT0gU3BlY1N0cmluZykK
QEAgLTQzMiw2ICs0MzcsOSBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0lu
Zm8oCiAKICAgICBpZiAoY2xhc3NJbmZvID09IFByb3h5T2JqZWN0OjppbmZvKCkpCiAgICAgICAg
IHJldHVybiBTcGVjUHJveHlPYmplY3Q7CisKKyAgICBpZiAoY2xhc3NJbmZvID09IEpTRGF0YVZp
ZXc6OmluZm8oKSkKKyAgICAgICAgcmV0dXJuIFNwZWNNYXBPYmplY3Q7CiAgICAgCiAgICAgaWYg
KGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAg
aWYgKGNsYXNzSW5mbyA9PSBKU0JvdW5kRnVuY3Rpb246OmluZm8oKSkKQEAgLTU1OSw2ICs1Njcs
OCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUCiAgICAgICAgIHJl
dHVybiBTcGVjV2Vha01hcE9iamVjdDsKICAgICBjYXNlIEpTV2Vha1NldFR5cGU6CiAgICAgICAg
IHJldHVybiBTcGVjV2Vha1NldE9iamVjdDsKKyAgICBjYXNlIERhdGFWaWV3VHlwZToKKyAgICAg
ICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC03NTAsNiArNzYwLDggQEAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tU3RyaW5nKGNvbgogICAgICAgICByZXR1cm4gU3BlY1Byb3h5T2Jq
ZWN0OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEZXJpdmVkQXJyYXkiLCBz
dHJsZW4oIlNwZWNEZXJpdmVkQXJyYXkiKSkpCiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFy
cmF5OworICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEYXRhVmlld09iamVjdCIs
IHN0cmxlbigiU3BlY0RhdGFWaWV3T2JqZWN0IikpKQorICAgICAgICByZXR1cm4gU3BlY0RhdGFW
aWV3T2JqZWN0OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNPYmplY3RPdGhl
ciIsIHN0cmxlbigiU3BlY09iamVjdE90aGVyIikpKQogICAgICAgICByZXR1cm4gU3BlY09iamVj
dE90aGVyOwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNPYmplY3QiLCBzdHJs
ZW4oIlNwZWNPYmplY3QiKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDcgKzY1LDYgQEAgc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNXZWFrU2V0Twogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNQcm94eU9iamVjdCAgICAgICAgICAgICAgICAg
ICAgICAgPSAxdWxsIDw8IDIxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBQcm94eSBvYmplY3Qgb3Ig
b25lIG9mIGl0cyBzdWJjbGFzc2VzLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNE
ZXJpdmVkQXJyYXkgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIyOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBEZXJpdmVkQXJyYXkgb2JqZWN0Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNPYmplY3RPdGhlciAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIzOyAv
LyBJdCdzIGRlZmluaXRlbHkgYW4gb2JqZWN0IGJ1dCBub3QgSlNGaW5hbE9iamVjdCwgSlNBcnJh
eSwgb3IgSlNGdW5jdGlvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5
IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50
cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9i
amVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3Qg
fCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkg
fCBTcGVjT2JqZWN0T3RoZXI7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtp
bmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y1N0cmluZ0lkZW50ICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjQ7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBhbiBpZGVudGlmaWVyLgogc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxdWxsIDw8IDI1OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90
IGFuIGlkZW50aWZpZXIuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmdJZGVudCB8IFNwZWNTdHJpbmdW
YXI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLgpAQCAtOTMsNyArOTIsOSBAQCBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgCiBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb29s
ZWFuIHwgU3BlY090aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVs
bCwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM3OyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM4OyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBCaWdJbnQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Rh
dGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzk7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY1ByaW1pdGl2ZSAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmcgfCBTcGVj
U3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVjQmlnSW50OyAvLyBJ
dCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8
IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJl
Y3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNw
ZWNSZWdFeHBPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFr
TWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVy
aXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBCaXRt
YXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgog
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2Vs
bE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgogc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBTcGVjQ2VsbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4g
YmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91
YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRv
cCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQg
Y2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3Bl
Y0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBh
IGJ5dGVjb2RlIGxvY2FsLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDc5
LDYgKzMwNzksODUgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50ODoK
KyAgICBjYXNlIERhdGFWaWV3R2V0VWludDg6CisgICAgY2FzZSBEYXRhVmlld0dldEludDE2Ogor
ICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgY2FzZSBEYXRhVmlld0dldEludDMyOgor
ICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MzI6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0MzI6
CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0NjQ6IHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIDwgMikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIERh
dGFWaWV3RGF0YSBkYXRhIHsgfTsKKyAgICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRpYW47CisK
KyAgICAgICAgTm9kZSogbGl0dGxlRW5kaWFuQ2hpbGQgPSBudWxscHRyOworICAgICAgICBpZiAo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCAzKQorICAgICAgICAgICAgaXNMaXR0bGVFbmRp
YW4gPSBGYWxzZVRyaVN0YXRlOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxpdHRsZUVu
ZGlhbkNoaWxkID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDIsIHJlZ2lzdGVyT2Zm
c2V0KSk7CisgICAgICAgICAgICBpZiAobGl0dGxlRW5kaWFuQ2hpbGQtPmhhc0NvbnN0YW50KCkp
IHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbGl0dGxlRW5kaWFuQ2hpbGQt
PmNvbnN0YW50KCktPnZhbHVlKCk7CisgICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBj
b25zdGFudC5wdXJlVG9Cb29sZWFuKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzTGl0dGxlRW5k
aWFuICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlhbkNo
aWxkID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkYXRhLmlz
TGl0dGxlRW5kaWFuID0gaXNMaXR0bGVFbmRpYW47CisKKyAgICAgICAgdWludDhfdCBieXRlU2l6
ZTsKKyAgICAgICAgYm9vbCBpc0ludGVnZXJPcCA9IHRydWU7CisgICAgICAgIE5vZGVUeXBlIG9w
ID0gRGF0YVZpZXdHZXRJbnQ7CisgICAgICAgIGJvb2wgaXNTaWduZWQgPSBmYWxzZTsKKyAgICAg
ICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDg6Cisg
ICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAg
ICAgICAgY2FzZSBEYXRhVmlld0dldFVpbnQ4OgorICAgICAgICAgICAgYnl0ZVNpemUgPSAxOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDE2OgorICAg
ICAgICAgICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAg
ICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDI7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50MzI6CisgICAg
ICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAg
ICAgY2FzZSBEYXRhVmlld0dldFVpbnQzMjoKKyAgICAgICAgICAgIGJ5dGVTaXplID0gNDsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDMyOgorICAg
ICAgICAgICAgYnl0ZVNpemUgPSA0OworICAgICAgICAgICAgb3AgPSBEYXRhVmlld0dldEZsb2F0
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDY0Ogor
ICAgICAgICAgICAgYnl0ZVNpemUgPSA4OworICAgICAgICAgICAgb3AgPSBEYXRhVmlld0dldEZs
b2F0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIC8vIE9PUFM6
CisgICAgfQorCisgICAgY2FzZSBEYXRhVmlld1NldEludDg6CisgICAgY2FzZSBEYXRhVmlld1Nl
dFVpbnQ4OgorICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQxNjoKKyAgICBjYXNlIERhdGFWaWV3U2V0
VWludDE2OgorICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQzMjoKKyAgICBjYXNlIERhdGFWaWV3U2V0
VWludDMyOgorICAgIGNhc2UgRGF0YVZpZXdTZXRGbG9hdDMyOgorICAgIGNhc2UgRGF0YVZpZXdT
ZXRGbG9hdDY0OgorCiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eUludHJpbnNpYzogewogICAgICAg
ICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAy
MzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE3LDYgKzExNywxOCBAQCBzdHJ1Y3QgTmV3QXJyYXlCdWZmZXJEYXRhIHsKIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKEluZGV4aW5nVHlwZSkgPD0gc2l6ZW9mKHVuc2lnbmVkKSwgIiIp
Owogc3RhdGljX2Fzc2VydChzaXplb2YoTmV3QXJyYXlCdWZmZXJEYXRhKSA9PSBzaXplb2YodWlu
dDY0X3QpLCAiIik7CiAKK3N0cnVjdCBEYXRhVmlld0RhdGEgeworICAgIHVuaW9uIHsKKyAgICAg
ICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQ4X3QgYnl0ZVNpemU7CisgICAgICAgICAgICBi
b29sIGlzU2lnbmVkOworICAgICAgICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRpYW47CisgICAg
ICAgIH07CisgICAgICAgIHVpbnQ2NF90IGFzUXVhZFdvcmQ7CisgICAgfTsKK307CitzdGF0aXNf
YXNzZXJ0KHNpemVvZihEYXRhVmlld0RhdGEpID09IHNpemVvZih1aW50NjRfdCksICIiKTsKKwog
c3RydWN0IEJyYW5jaFRhcmdldCB7CiAgICAgQnJhbmNoVGFyZ2V0KCkKICAgICAgICAgOiBibG9j
aygwKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNp
b24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00ODMsNiArNDgzLDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICBtYWNybyhGaWx0ZXJHZXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oRmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oRmlsdGVyUHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIC8q
IERhdGEgdmlldyBhY2Nlc3MgKi8gXAorICAgIG1hY3JvKERhdGFWaWV3R2V0SW50LCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9hdCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwKKyAgICBtYWNybyhEYXRhVmll
d1NldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKIAogCiAvLyBUaGlz
IGVudW0gZ2VuZXJhdGVzIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9k
ZSB0eXBlcywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAgICAgICBjYXNlIFdlYWtNYXBPYmplY3RV
c2U6CiAgICAgICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKKyAgICAgICAgY2FzZSBEYXRhVmll
d09iamVjdFVzZToKICAgICAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBjYXNl
IFN0cmluZ0lkZW50VXNlOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAy
MzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTkwMyw2ICs5OTAzLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZVdlYWtTZXRPYmoKICAgICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KGVkZ2Us
IG9wZXJhbmQuZ3ByKCkpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVEYXRh
Vmlld09iamVjdChFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQoreworICAgIHNwZWN1bGF0ZUNlbGxU
eXBlKGVkZ2UsIGNlbGwsIFNwZWNEYXRhVmlld09iamVjdCwgRGF0YVZpZXdUeXBlKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSBlZGdlKQor
eworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0RhdGFWaWV3T2JqZWN0KSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBl
ZGdlKTsKKyAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlLCBvcGVyYW5kLmdwcigpKTsK
K30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0T3JPdGhlcihFZGdlIGVk
Z2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjT2JqZWN0IHwgU3BlY090
aGVyKSkKQEAgLTEwMjcxLDYgKzEwMjg1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlKE5vZGUqLCBFZAogICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKICAgICAgICAgc3BlY3Vs
YXRlV2Vha1NldE9iamVjdChlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEYXRhVmll
d09iamVjdFVzZToKKyAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRnZSk7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgc3BlY3VsYXRl
T2JqZWN0T3JPdGhlcihlZGdlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyMzQ4NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MTAsNiArMTYxMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNwZWN1bGF0ZVdl
YWtNYXBPYmplY3QoRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlV2Vha1Nl
dE9iamVjdChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoRWRnZSwgR1BS
UmVnIGNlbGwpOworICAgIHZvaWQgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSk7CisgICAg
dm9pZCBzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9p
ZCBzcGVjdWxhdGVPYmplY3RPck90aGVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5n
KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nSWRlbnRB
bmRMb2FkU3RvcmFnZShFZGdlIGVkZ2UsIEdQUlJlZyBzdHJpbmcsIEdQUlJlZyBzdG9yYWdlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAkocmV2aXNpb24g
MjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA0LDE2ICsxMDQsMTkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIFVzZQogICAgICAgICBvdXQucHJpbnQoIkRlcml2ZWRBcnJheSIpOwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBNYXBPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmludCgi
TWFwT2JqZWN0VXNlIik7CisgICAgICAgIG91dC5wcmludCgiTWFwT2JqZWN0Iik7CiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIFNldE9iamVjdFVzZToKLSAgICAgICAgb3V0LnByaW50KCJTZXRP
YmplY3RVc2UiKTsKKyAgICAgICAgb3V0LnByaW50KCJTZXRPYmplY3QiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgV2Vha01hcE9iamVjdFVzZToKLSAgICAgICAgb3V0LnByaW50KCJXZWFr
TWFwT2JqZWN0VXNlIik7CisgICAgICAgIG91dC5wcmludCgiV2Vha01hcE9iamVjdCIpOwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgotICAgICAgICBvdXQucHJp
bnQoIldlYWtTZXRPYmplY3RVc2UiKTsKKyAgICAgICAgb3V0LnByaW50KCJXZWFrU2V0T2JqZWN0
Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgorICAgICAg
ICBvdXQucHJpbnQoIkRhdGFWaWV3T2JqZWN0Iik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IE9iamVjdE9yT3RoZXJVc2U6CiAgICAgICAgIG91dC5wcmludCgiT2JqZWN0T3JPdGhlciIpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHJldmlzaW9uIDIzNDg3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw2ICs3MCw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgU2V0T2JqZWN0VXNlLAog
ICAgIFdlYWtNYXBPYmplY3RVc2UsCiAgICAgV2Vha1NldE9iamVjdFVzZSwKKyAgICBEYXRhVmll
d09iamVjdFVzZSwKICAgICBTdHJpbmdPYmplY3RVc2UsCiAgICAgU3RyaW5nT3JTdHJpbmdPYmpl
Y3RVc2UsCiAgICAgTm90U3RyaW5nVmFyVXNlLApAQCAtMTYwLDYgKzE2MSw4IEBAIGlubGluZSBT
cGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRm9yKFVzZUsKICAgICAgICAgcmV0dXJuIFNwZWNXZWFr
TWFwT2JqZWN0OwogICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKICAgICAgICAgcmV0dXJuIFNw
ZWNXZWFrU2V0T2JqZWN0OworICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CisgICAgICAgIHJl
dHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAg
ICAgIHJldHVybiBTcGVjU3RyaW5nT2JqZWN0OwogICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmpl
Y3RVc2U6CkBAIC0yNTksNiArMjYyLDcgQEAgaW5saW5lIGJvb2wgaXNDZWxsKFVzZUtpbmQga2lu
ZCkKICAgICBjYXNlIFNldE9iamVjdFVzZToKICAgICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6CiAg
ICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgorICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJ
KHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSw3IEBAIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFNldE9i
amVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6CiAgICAgICAg
ICAgICAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgRGF0
YVZpZXdPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBGaW5hbE9iamVjdFVzZToKICAg
ICAgICAgICAgICAgICBjYXNlIFJlZ0V4cE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNl
IFByb3h5T2JqZWN0VXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ2OCw2ICsx
NDQ2OCwxMyBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KGVkZ2Us
IHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCisgICAgTFZhbHVlIGxv
d0RhdGFWaWV3T2JqZWN0KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQg
PSBsb3dDZWxsKGVkZ2UpOworICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICAKICAgICBMVmFsdWUg
bG93U3RyaW5nKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21h
dGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKQEAgLTE0OTQzLDYgKzE0OTUwLDkgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgogICAgICAgICAgICAgc3BlY3Vs
YXRlV2Vha1NldE9iamVjdChlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IERhdGFWaWV3T2JqZWN0VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3Qo
ZWRnZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAg
ICAgICAgICBzcGVjdWxhdGVTdHJpbmcoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1
NDM3LDYgKzE1NDQ3LDE3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzcGVjdWxhdGVXZWFr
U2V0T2JqZWN0KGVkZ2UsIGxvd0NlbGwoZWRnZSkpOwogICAgIH0KKworICAgIHZvaWQgc3BlY3Vs
YXRlRGF0YVZpZXdPYmplY3QoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB7CisgICAgICAg
IEZUTF9UWVBFX0NIRUNLKAorICAgICAgICAgICAganNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBT
cGVjRGF0YVZpZXdPYmplY3QsIGlzTm90VHlwZShjZWxsLCBEYXRhVmlld1R5cGUpKTsKKyAgICB9
CisKKyAgICB2b2lkIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UgZWRnZSkKKyAgICB7Cisg
ICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIGxvd0NlbGwoZWRnZSkpOworICAg
IH0KICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZyhFZGdlIGVkZ2UsIExWYWx1ZSBjZWxs
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2lj
LmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDYgKzIzOSwzOCBAQCBjb25zdCBj
aGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyCiAgICAgICAgIHJldHVybiAiQ1BVQ3B1
aWRJbnRyaW5zaWMiOwogICAgIGNhc2UgQ1BVUGF1c2VJbnRyaW5zaWM6CiAgICAgICAgIHJldHVy
biAiQ1BVUGF1c2VJbnRyaW5zaWMiOworICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ4OgorICAgICAg
ICByZXR1cm4gIkRhdGFWaWV3R2V0SW50OCI7CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQ4Ogor
ICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0VWludDgiOworICAgIGNhc2UgRGF0YVZpZXdHZXRJ
bnQxNjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldEludDE2IjsKKyAgICBjYXNlIERhdGFW
aWV3R2V0VWludDE2OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0VWludDE2IjsKKyAgICBj
YXNlIERhdGFWaWV3R2V0SW50MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRJbnQzMiI7
CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dl
dFVpbnQzMiI7CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0MzI6CisgICAgICAgIHJldHVybiAi
RGF0YVZpZXdHZXRGbG9hdDMyIjsKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ2NDoKKyAgICAg
ICAgcmV0dXJuICJEYXRhVmlld0dldEZsb2F0NjQiOworICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQ4
OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0SW50OCI7CisgICAgY2FzZSBEYXRhVmlld1Nl
dFVpbnQ4OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0VWludDgiOworICAgIGNhc2UgRGF0
YVZpZXdTZXRJbnQxNjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEludDE2IjsKKyAgICBj
YXNlIERhdGFWaWV3U2V0VWludDE2OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0VWludDE2
IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdT
ZXRJbnQzMiI7CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQzMjoKKyAgICAgICAgcmV0dXJuICJE
YXRhVmlld1NldFVpbnQzMiI7CisgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0MzI6CisgICAgICAg
IHJldHVybiAiRGF0YVZpZXdTZXRGbG9hdDMyIjsKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQ2
NDoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEZsb2F0NjQiOwogICAgIH0KICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHJldmlzaW9uIDIzNDg3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzksNiArMTM5LDIzIEBAIGVudW0gSW50cmluc2ljIHsKICAgICBDUFVSZHRzY0lu
dHJpbnNpYywKICAgICBDUFVDcHVpZEludHJpbnNpYywKICAgICBDUFVQYXVzZUludHJpbnNpYywK
KworICAgIERhdGFWaWV3R2V0SW50OCwKKyAgICBEYXRhVmlld0dldFVpbnQ4LAorICAgIERhdGFW
aWV3R2V0SW50MTYsCisgICAgRGF0YVZpZXdHZXRVaW50MTYsCisgICAgRGF0YVZpZXdHZXRJbnQz
MiwKKyAgICBEYXRhVmlld0dldFVpbnQzMiwKKyAgICBEYXRhVmlld0dldEZsb2F0MzIsCisgICAg
RGF0YVZpZXdHZXRGbG9hdDY0LAorICAgIERhdGFWaWV3U2V0SW50OCwKKyAgICBEYXRhVmlld1Nl
dFVpbnQ4LAorICAgIERhdGFWaWV3U2V0SW50MTYsCisgICAgRGF0YVZpZXdTZXRVaW50MTYsCisg
ICAgRGF0YVZpZXdTZXRJbnQzMiwKKyAgICBEYXRhVmlld1NldFVpbnQzMiwKKyAgICBEYXRhVmll
d1NldEZsb2F0MzIsCisgICAgRGF0YVZpZXdTZXRGbG9hdDY0LAogfTsKIAogY29uc3QgY2hhciog
aW50cmluc2ljTmFtZShJbnRyaW5zaWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIzNDg3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
IC8qIFNvdXJjZSBmb3IgSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaAogQGJlZ2luIGRhdGFWaWV3
VGFibGUKLSAgZ2V0SW50OCAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50OCAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldFVpbnQ4ICAgICAgICAg
ICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gICAgICAgMQotICBnZXRJbnQxNiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJ
bnQxNiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0VWludDE2ICAg
ICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDE2ICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAgICAgICAxCi0gIGdldEludDMyICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVu
Y0dldEludDMyICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRVaW50
MzIgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0RmxvYXQzMiAgICAgICAgICAgIGRhdGFWaWV3UHJv
dG9GdW5jR2V0RmxvYXQzMiAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdl
dEZsb2F0NjQgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0NjQgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBzZXRJbnQ4ICAgICAgICAgICAgICAgZGF0YVZp
ZXdQcm90b0Z1bmNTZXRJbnQ4ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIK
LSAgc2V0VWludDggICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDggICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldEludDE2ICAgICAgICAgICAgICBk
YXRhVmlld1Byb3RvRnVuY1NldEludDE2ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAg
ICAgMgotICBzZXRVaW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MTYg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0SW50MzIgICAgICAgICAg
ICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MzIgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAgICAgICAyCi0gIHNldFVpbnQzMiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVp
bnQzMiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRGbG9hdDMyICAg
ICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMyICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uICAgICAgIDIKLSAgc2V0RmxvYXQ2NCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5j
U2V0RmxvYXQ2NCAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCisgIGdldEludDgg
ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDggICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRJbnQ4CisgIGdldFVpbnQ4ICAgICAgICAg
ICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gICAgICAgMSAgRGF0YVZpZXdHZXRVaW50OAorICBnZXRJbnQxNiAgICAgICAgICAgICAgZGF0
YVZpZXdQcm90b0Z1bmNHZXRJbnQxNiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAg
IDEgIERhdGFWaWV3R2V0SW50MTYKKyAgZ2V0VWludDE2ICAgICAgICAgICAgIGRhdGFWaWV3UHJv
dG9GdW5jR2V0VWludDE2ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRh
Vmlld0dldFVpbnQxNgorICBnZXRJbnQzMiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNH
ZXRJbnQzMiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0
SW50MzIKKyAgZ2V0VWludDMyICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDMy
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldFVpbnQzMgor
ICBnZXRGbG9hdDMyICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDMyICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0RmxvYXQzMgorICBnZXRG
bG9hdDY0ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDY0ICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0RmxvYXQ2NAorICBzZXRJbnQ4ICAg
ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQ4ICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0SW50OAorICBzZXRVaW50OCAgICAgICAgICAg
ICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50OCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
ICAgICAgIDIgIERhdGFWaWV3U2V0VWludDgKKyAgc2V0SW50MTYgICAgICAgICAgICAgIGRhdGFW
aWV3UHJvdG9GdW5jU2V0SW50MTYgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAy
ICBEYXRhVmlld1NldEludDE2CisgIHNldFVpbnQxNiAgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
RnVuY1NldFVpbnQxNiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZp
ZXdTZXRVaW50MTYKKyAgc2V0SW50MzIgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0
SW50MzIgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldElu
dDMyCisgIHNldFVpbnQzMiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQzMiAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRVaW50MzIKKyAg
c2V0RmxvYXQzMiAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQzMiAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldEZsb2F0MzIKKyAgc2V0Rmxv
YXQ2NCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NCAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldEZsb2F0NjQKICAgYnVmZmVyICAgICAg
ICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIgICAgICAgICAgICBEb250RW51bXxB
Y2Nlc3NvciAgICAgICAwCiAgIGJ5dGVMZW5ndGggICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0
dGVyQnl0ZUxlbmd0aCAgICAgICAgRG9udEVudW18QWNjZXNzb3IgICAgICAgMAogICBieXRlT2Zm
c2V0ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQgICAgICAgIERvbnRF
bnVtfEFjY2Vzc29yICAgICAgIDAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVHJpU3RhdGUuaAkocmV2aXNpb24gMjM0ODczKQor
KysgU291cmNlL1dURi93dGYvVHJpU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBUcmlTdGF0ZSB7CitlbnVtIFRyaVN0YXRl
IDogaW50OF90IHsKICAgICBGYWxzZVRyaVN0YXRlLAogICAgIFRydWVUcmlTdGF0ZSwKICAgICBN
aXhlZFRyaVN0YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347278</attachid>
            <date>2018-08-16 11:35:03 -0700</date>
            <delta_ts>2018-08-16 12:40:05 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>30179</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIwMywxMSBA
QCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyCiAgICAgICAgICAgICAg
ICAgc3RyT3V0LnByaW50KCJEZXJpdmVkQXJyYXkiKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAodmFsdWUgJiBTcGVj
RGF0YVZpZXdPYmplY3QpCisgICAgICAgICAgICAgICAgc3RyT3V0LnByaW50KCJEYXRhVmlldyIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoKHZhbHVlICYgU3BlY1N0cmluZykgPT0gU3BlY1N0cmluZykK
QEAgLTQzMiw2ICs0MzcsOSBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0lu
Zm8oCiAKICAgICBpZiAoY2xhc3NJbmZvID09IFByb3h5T2JqZWN0OjppbmZvKCkpCiAgICAgICAg
IHJldHVybiBTcGVjUHJveHlPYmplY3Q7CisKKyAgICBpZiAoY2xhc3NJbmZvID09IEpTRGF0YVZp
ZXc6OmluZm8oKSkKKyAgICAgICAgcmV0dXJuIFNwZWNNYXBPYmplY3Q7CiAgICAgCiAgICAgaWYg
KGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAg
aWYgKGNsYXNzSW5mbyA9PSBKU0JvdW5kRnVuY3Rpb246OmluZm8oKSkKQEAgLTU1OSw2ICs1Njcs
OCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUCiAgICAgICAgIHJl
dHVybiBTcGVjV2Vha01hcE9iamVjdDsKICAgICBjYXNlIEpTV2Vha1NldFR5cGU6CiAgICAgICAg
IHJldHVybiBTcGVjV2Vha1NldE9iamVjdDsKKyAgICBjYXNlIERhdGFWaWV3VHlwZToKKyAgICAg
ICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC03NTAsNiArNzYwLDggQEAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tU3RyaW5nKGNvbgogICAgICAgICByZXR1cm4gU3BlY1Byb3h5T2Jq
ZWN0OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEZXJpdmVkQXJyYXkiLCBz
dHJsZW4oIlNwZWNEZXJpdmVkQXJyYXkiKSkpCiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFy
cmF5OworICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEYXRhVmlld09iamVjdCIs
IHN0cmxlbigiU3BlY0RhdGFWaWV3T2JqZWN0IikpKQorICAgICAgICByZXR1cm4gU3BlY0RhdGFW
aWV3T2JqZWN0OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNPYmplY3RPdGhl
ciIsIHN0cmxlbigiU3BlY09iamVjdE90aGVyIikpKQogICAgICAgICByZXR1cm4gU3BlY09iamVj
dE90aGVyOwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNPYmplY3QiLCBzdHJs
ZW4oIlNwZWNPYmplY3QiKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDcgKzY1LDYgQEAgc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNXZWFrU2V0Twogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNQcm94eU9iamVjdCAgICAgICAgICAgICAgICAg
ICAgICAgPSAxdWxsIDw8IDIxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBQcm94eSBvYmplY3Qgb3Ig
b25lIG9mIGl0cyBzdWJjbGFzc2VzLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNE
ZXJpdmVkQXJyYXkgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIyOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBEZXJpdmVkQXJyYXkgb2JqZWN0Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNPYmplY3RPdGhlciAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIzOyAv
LyBJdCdzIGRlZmluaXRlbHkgYW4gb2JqZWN0IGJ1dCBub3QgSlNGaW5hbE9iamVjdCwgSlNBcnJh
eSwgb3IgSlNGdW5jdGlvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5
IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50
cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9i
amVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3Qg
fCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkg
fCBTcGVjT2JqZWN0T3RoZXI7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtp
bmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y1N0cmluZ0lkZW50ICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjQ7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBhbiBpZGVudGlmaWVyLgogc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxdWxsIDw8IDI1OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90
IGFuIGlkZW50aWZpZXIuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmdJZGVudCB8IFNwZWNTdHJpbmdW
YXI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLgpAQCAtOTMsNyArOTIsOSBAQCBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgCiBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb29s
ZWFuIHwgU3BlY090aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVs
bCwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM3OyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM4OyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBCaWdJbnQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Rh
dGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzk7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY1ByaW1pdGl2ZSAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmcgfCBTcGVj
U3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVjQmlnSW50OyAvLyBJ
dCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8
IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJl
Y3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNw
ZWNSZWdFeHBPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFr
TWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVy
aXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBCaXRt
YXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgog
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2Vs
bE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgogc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBTcGVjQ2VsbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4g
YmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91
YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRv
cCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQg
Y2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3Bl
Y0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBh
IGJ5dGVjb2RlIGxvY2FsLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjM0ODcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcwLDkgKzM3NzAsMjQgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQx
KCksIFNwZWNDZWxsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKLSAgICAgICAg
YnJlYWs7CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50OiB7CisgICAgICAgIERhdGFWaWV3RGF0
YSBkYXRhID0gbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CisgICAgICAgIGlmIChkYXRhLmJ5dGVTaXpl
IDwgNCkKKyAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJP
bmx5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIShub2RlLT5wcmVkaWN0aW9u
KCkgJiB+U3BlY0ludDMyT25seSkpCisgICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVEb3VibGUpOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6
IHsKKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNGdWxsRG91YmxlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIFVucmVhY2hhYmxlOgog
ICAgICAgICAvLyBJdCBtYXkgYmUgdGhhdCBkdXJpbmcgYSBwcmV2aW91cyBydW4gb2YgQUkgd2Ug
cHJvdmVkIHRoYXQgc29tZXRoaW5nIHdhcyB1bnJlYWNoYWJsZSwgYnV0CiAgICAgICAgIC8vIGR1
cmluZyB0aGlzIHJ1biBvZiBBSSB3ZSBmb3JnZXQgdGhhdCBpdCdzIHVucmVhY2hhYmxlLiBBSSdz
IHByb29mcyBkb24ndCBoYXZlIHRvIGdldApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDc5LDYgKzMwNzksOTMgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljQ2FsbAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFWaWV3
R2V0SW50ODoKKyAgICBjYXNlIERhdGFWaWV3R2V0VWludDg6CisgICAgY2FzZSBEYXRhVmlld0dl
dEludDE2OgorICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgY2FzZSBEYXRhVmlld0dl
dEludDMyOgorICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MzI6CisgICAgY2FzZSBEYXRhVmlld0dl
dEZsb2F0MzI6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0NjQ6IHsKKyAgICAgICAgaWYgKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgMikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIFRyaVN0YXRlIGlzTGl0dGxlRW5kaWFuOworCisgICAgICAgIE5vZGUqIGxpdHRsZUVu
ZGlhbkNoaWxkID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzIDwgMykKKyAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gRmFsc2VUcmlTdGF0ZTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudCgyLCByZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgaWYg
KGxpdHRsZUVuZGlhbkNoaWxkLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICAgICAgSlNW
YWx1ZSBjb25zdGFudCA9IGxpdHRsZUVuZGlhbkNoaWxkLT5jb25zdGFudCgpLT52YWx1ZSgpOwor
ICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gY29uc3RhbnQucHVyZVRvQm9vbGVhbigp
OworICAgICAgICAgICAgICAgIGlmIChpc0xpdHRsZUVuZGlhbiAhPSBNaXhlZFRyaVN0YXRlKQor
ICAgICAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IG51bGxwdHI7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICB1aW50OF90IGJ5dGVTaXplOworICAgICAgICBO
b2RlVHlwZSBvcCA9IERhdGFWaWV3R2V0SW50OworICAgICAgICBib29sIGlzU2lnbmVkID0gZmFs
c2U7CisgICAgICAgIHN3aXRjaCAoaW50cmluc2ljKSB7CisgICAgICAgIGNhc2UgRGF0YVZpZXdH
ZXRJbnQ4OgorICAgICAgICAgICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50ODoKKyAgICAgICAgICAgIGJ5dGVT
aXplID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJ
bnQxNjoKKyAgICAgICAgICAgIGlzU2lnbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIEZBTExUSFJP
VUdIOworICAgICAgICBjYXNlIERhdGFWaWV3R2V0VWludDE2OgorICAgICAgICAgICAgYnl0ZVNp
emUgPSAyOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldElu
dDMyOgorICAgICAgICAgICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9V
R0g7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MzI6CisgICAgICAgICAgICBieXRlU2l6
ZSA9IDQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERhdGFWaWV3R2V0Rmxv
YXQzMjoKKyAgICAgICAgICAgIGJ5dGVTaXplID0gNDsKKyAgICAgICAgICAgIG9wID0gRGF0YVZp
ZXdHZXRGbG9hdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERhdGFWaWV3R2V0
RmxvYXQ2NDoKKyAgICAgICAgICAgIGJ5dGVTaXplID0gODsKKyAgICAgICAgICAgIG9wID0gRGF0
YVZpZXdHZXRGbG9hdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIERhdGFWaWV3RGF0YSBkYXRhIHsgfTsKKyAgICAgICAgZGF0YS5pc0xpdHRsZUVuZGlhbiA9
IGlzTGl0dGxlRW5kaWFuOworICAgICAgICBkYXRhLmlzU2lnbmVkID0gaXNTaWduZWQ7CisgICAg
ICAgIGRhdGEuYnl0ZVNpemUgPSBieXRlU2l6ZTsKKworICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKHJlc3VsdE9wZXJhbmQpLAorICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJheUJ1ZmZl
ciwgT3BJbmZvKGRhdGEuYXNRdWFkV29yZCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpLCBsaXR0bGVFbmRpYW5DaGlsZCkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50
ODoKKyAgICBjYXNlIERhdGFWaWV3U2V0VWludDg6CisgICAgY2FzZSBEYXRhVmlld1NldEludDE2
OgorICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MTY6CisgICAgY2FzZSBEYXRhVmlld1NldEludDMy
OgorICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MzI6CisgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0
MzI6CisgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0NjQ6IHsKKyAgICAgICAgQ1JBU0goKTsKKyAg
ICAgICAgLy8gT09QUworICAgIH0KKwogICAgIGNhc2UgSGFzT3duUHJvcGVydHlJbnRyaW5zaWM6
IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NTgsNyArMTc1OCwxNCBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBOdW1iZXJU
b1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6CiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9k
ZSwgbm9kZS0+dmFsaWRSYWRpeENvbnN0YW50KCkpKTsKICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKKworICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50
OiB7CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIHJlYWQoVHlwZWRBcnJheVBy
b3BlcnRpZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBMYXN0Tm9kZVR5
cGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9u
IDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzE4LDYgKzMxOCw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2Ug
RGF0YVZpZXdHZXRJbnQ6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBjYXNlIFB1c2hXaXRoU2NvcGU6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxMDQsNiArMjEwNCwxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNl
IERhdGFWaWV3R2V0SW50OgorICAgICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8RGF0YVZpZXdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDMoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG5v
ZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBl
bnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVz
LgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDE4IEBAIHN0cnVjdCBOZXdB
cnJheUJ1ZmZlckRhdGEgewogc3RhdGljX2Fzc2VydChzaXplb2YoSW5kZXhpbmdUeXBlKSA8PSBz
aXplb2YodW5zaWduZWQpLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihOZXdBcnJheUJ1ZmZl
ckRhdGEpID09IHNpemVvZih1aW50NjRfdCksICIiKTsKIAorc3RydWN0IERhdGFWaWV3RGF0YSB7
CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDhfdCBieXRl
U2l6ZTsKKyAgICAgICAgICAgIGJvb2wgaXNTaWduZWQ7CisgICAgICAgICAgICBUcmlTdGF0ZSBp
c0xpdHRsZUVuZGlhbjsKKyAgICAgICAgfTsKKyAgICAgICAgdWludDY0X3QgYXNRdWFkV29yZDsK
KyAgICB9OworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKERhdGFWaWV3RGF0YSkgPT0gc2l6ZW9m
KHVpbnQ2NF90KSwgIiIpOworCiBzdHJ1Y3QgQnJhbmNoVGFyZ2V0IHsKICAgICBCcmFuY2hUYXJn
ZXQoKQogICAgICAgICA6IGJsb2NrKDApCkBAIC0xNjU5LDYgKzE2NzEsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICAgICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9t
V2Vha01hcEdldDoKICAgICAgICAgY2FzZSBUb1RoaXM6CisgICAgICAgIGNhc2UgRGF0YVZpZXdH
ZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjE0Myw2ICsyMTU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVu
c2lnbmVkPigpOwogICAgIH0KIAorICAgIERhdGFWaWV3RGF0YSBkYXRhVmlld0RhdGEoKQorICAg
IHsKKyAgICAgICAgLy9BU1NFUlQob3AoKSA9PSBEYXRhVmlld0dldEludCB8fCBvcCgpID09IERh
dGFWaWV3R2V0RmxvYXQgfHwgb3AoKSA9PSBEYXRhVmlld1NldCk7CisgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8RGF0YVZpZXdEYXRhPihtX29wSW5mby5hczx1aW50NjRfdD4oKSk7CisgICAg
fQorCiAgICAgYm9vbCBzaG91bGRHZW5lcmF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gbV9y
ZWZDb3VudDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJl
dmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDYgKzQ4MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oRmlsdGVyR2V0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlckluQnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAg
ICAvKiBEYXRhIHZpZXcgYWNjZXNzICovIFwKKyAgICBtYWNybyhEYXRhVmlld0dldEludCwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKERhdGFWaWV3R2V0Rmxv
YXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0RG91YmxlKSBcCisKKyAgICAvL21hY3Jv
KERhdGFWaWV3U2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogCiAK
IC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9y
IGFsbCBOb2RlIHR5cGVzLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIz
NDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTAsNyArNzUwLDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBjYXNlIEdldER5bmFtaWNWYXI6
CiAgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6Ci0gICAgICAgIGNhc2UgRXh0cmFjdFZhbHVl
RnJvbVdlYWtNYXBHZXQ6IHsKKyAgICAgICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdl
dDogCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdH
ZXRGbG9hdDogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRI
ZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24g
MjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFNl
dE9iamVjdFVzZToKICAgICAgICAgY2FzZSBXZWFrTWFwT2JqZWN0VXNlOgogICAgICAgICBjYXNl
IFdlYWtTZXRPYmplY3RVc2U6CisgICAgICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CiAgICAg
ICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgY2FzZSBTdHJpbmdJZGVudFVzZToK
ICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CkBAIC02MDIsNiArNjAzLDEwIEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCisgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gT09QUzogY2FuIHdlIGFsd2F5cyBkbyB0aGlzIG9y
IGp1c3Qgc29tZXRpbWVzPworCiAgICAgY2FzZSBTZXRBZGQ6CiAgICAgY2FzZSBNYXBTZXQ6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDU1Myw2ICs0NTUzLDY4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNsZWFyQ2F0Y2hMb2NhbHMobm9kZSk7CiAgICAgICAg
IGJyZWFrOwogCisgICAgY2FzZSBEYXRhVmlld0dldEludDogeworICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBkYXRhVmlldyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJl
ZyBkYXRhVmlld0dQUiA9IGRhdGFWaWV3LmdwcigpOworICAgICAgICBzcGVjdWxhdGVEYXRhVmll
d09iamVjdChub2RlLT5jaGlsZDEoKSwgZGF0YVZpZXdHUFIpOworCisgICAgICAgIFNwZWN1bGF0
ZUludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJl
ZyBpbmRleEdQUiA9IGluZGV4LmdwcigpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFub2Rl
LT5jaGlsZDMoKSk7IC8vIE9PUFMKKworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7
CisgICAgICAgIEdQUlJlZyB0MiA9IHRlbXAyLmdwcigpOworCisgICAgICAgIERhdGFWaWV3RGF0
YSBkYXRhID0gbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CisKKyAgICAgICAgbV9qaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHQyKTsKKyAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKSB7Cisg
ICAgICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0
Mik7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVn
cygpLCBub2RlLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpMZXNzVGhhbiwgdDIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAg
ICAgfQorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygp
LCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkdyZWF0
ZXJUaGFuT3JFcXVhbCwgaW5kZXhHUFIsIHQyKSk7CisKKyAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mVmVjdG9yKCkpLCB0Mik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUs
IEpTVmFsdWVTb3VyY2UoKSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxl
cjo6WmVybywgdDIpKTsgLy8gT09QUzogYWRkIHRlc3QuIENhbiB3ZSBuZXV0ZXIgYSBKU0RhdGFW
aWV3PworCisgICAgICAgIGF1dG8gYmFzZUluZGV4ID0gSklUQ29tcGlsZXI6OkJhc2VJbmRleCh0
MiwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGRhdGEuaXNMaXR0bGVFbmRpYW4gPSBUcnVlVHJpU3RhdGUpOyAvLyBPT1BTCisgICAg
ICAgIHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAg
ICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkOFNpZ25lZEV4
dGVuZFRvMzIoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZDgoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICBpbnQzMlJlc3VsdCh0
Miwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAg
ICAgaWYgKGRhdGEuaXNTaWduZWQpCisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDE2U2lnbmVk
RXh0ZW5kVG8zMihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkMTYoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICBpbnQzMlJlc3Vs
dCh0Miwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0OgorICAgICAg
ICAgICAgaWYgKGRhdGEuaXNTaWduZWQpIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
YmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAgICAgaW50MzJSZXN1bHQodDIsIG5vZGUpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBPT1BTOiBpbXBsZW1lbnQg
dGhpcyEKKyAgICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBE
YXRhVmlld0dldEZsb2F0OiB7CisgICAgICAgIENSQVNIKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcElu
TG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjYWxsVGllclVwID0gbV9qaXQu
YnJhbmNoQWRkMzIoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5MDMsNiAr
OTkwMywyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVXZWFrU2V0T2JqCiAgICAg
c3BlY3VsYXRlV2Vha1NldE9iamVjdChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSBlZGdlLCBHUFJSZWcg
Y2VsbCkKK3sKKyAgICBzcGVjdWxhdGVDZWxsVHlwZShlZGdlLCBjZWxsLCBTcGVjRGF0YVZpZXdP
YmplY3QsIERhdGFWaWV3VHlwZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZURhdGFWaWV3T2JqZWN0KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVk
Z2UsIFNwZWNEYXRhVmlld09iamVjdCkpCisgICAgICAgIHJldHVybjsKKworICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgc3BlY3VsYXRlRGF0YVZpZXdP
YmplY3QoZWRnZSwgb3BlcmFuZC5ncHIoKSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU9iamVjdE9yT3RoZXIoRWRnZSBlZGdlKQogewogICAgIGlmICghbmVlZHNUeXBlQ2hl
Y2soZWRnZSwgU3BlY09iamVjdCB8IFNwZWNPdGhlcikpCkBAIC0xMDI3MSw2ICsxMDI4NSw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWQKICAgICBjYXNlIFdlYWtT
ZXRPYmplY3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSk7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CisgICAgICAgIHNwZWN1bGF0
ZURhdGFWaWV3T2JqZWN0KGVkZ2UpOworICAgICAgICBicmVhazsKICAgICBjYXNlIE9iamVjdE9y
T3RoZXJVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU9iamVjdE9yT3RoZXIoZWRnZSk7CiAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEwLDYgKzE2MTAsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVXZWFrTWFwT2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxs
KTsKICAgICB2b2lkIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoRWRnZSk7CiAgICAgdm9pZCBzcGVj
dWxhdGVXZWFrU2V0T2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKKyAgICB2b2lkIHNwZWN1bGF0
ZURhdGFWaWV3T2JqZWN0KEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3Qo
RWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0T3JPdGhlcihFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZyhFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKTsKICAg
ICB2b2lkIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJS
ZWcgc3RyaW5nLCBHUFJSZWcgc3RvcmFnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCwxNiArMTA0LDE5
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICAgICAgb3V0
LnByaW50KCJEZXJpdmVkQXJyYXkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTWFwT2Jq
ZWN0VXNlOgotICAgICAgICBvdXQucHJpbnQoIk1hcE9iamVjdFVzZSIpOworICAgICAgICBvdXQu
cHJpbnQoIk1hcE9iamVjdCIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTZXRPYmplY3RV
c2U6Ci0gICAgICAgIG91dC5wcmludCgiU2V0T2JqZWN0VXNlIik7CisgICAgICAgIG91dC5wcmlu
dCgiU2V0T2JqZWN0Iik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFdlYWtNYXBPYmplY3RV
c2U6Ci0gICAgICAgIG91dC5wcmludCgiV2Vha01hcE9iamVjdFVzZSIpOworICAgICAgICBvdXQu
cHJpbnQoIldlYWtNYXBPYmplY3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgV2Vha1Nl
dE9iamVjdFVzZToKLSAgICAgICAgb3V0LnByaW50KCJXZWFrU2V0T2JqZWN0VXNlIik7CisgICAg
ICAgIG91dC5wcmludCgiV2Vha1NldE9iamVjdCIpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBEYXRhVmlld09iamVjdFVzZToKKyAgICAgICAgb3V0LnByaW50KCJEYXRhVmlld09iamVjdCIp
OwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBv
dXQucHJpbnQoIk9iamVjdE9yT3RoZXIiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVXNlS2luZC5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBlbnVtIFVz
ZUtpbmQgewogICAgIFNldE9iamVjdFVzZSwKICAgICBXZWFrTWFwT2JqZWN0VXNlLAogICAgIFdl
YWtTZXRPYmplY3RVc2UsCisgICAgRGF0YVZpZXdPYmplY3RVc2UsCiAgICAgU3RyaW5nT2JqZWN0
VXNlLAogICAgIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlLAogICAgIE5vdFN0cmluZ1ZhclVzZSwK
QEAgLTE2MCw2ICsxNjEsOCBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihV
c2VLCiAgICAgICAgIHJldHVybiBTcGVjV2Vha01hcE9iamVjdDsKICAgICBjYXNlIFdlYWtTZXRP
YmplY3RVc2U6CiAgICAgICAgIHJldHVybiBTcGVjV2Vha1NldE9iamVjdDsKKyAgICBjYXNlIERh
dGFWaWV3T2JqZWN0VXNlOgorICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAg
IGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gU3BlY1N0cmluZ09iamVjdDsK
ICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgpAQCAtMjU5LDYgKzI2Miw3IEBAIGlu
bGluZSBib29sIGlzQ2VsbChVc2VLaW5kIGtpbmQpCiAgICAgY2FzZSBTZXRPYmplY3RVc2U6CiAg
ICAgY2FzZSBXZWFrTWFwT2JqZWN0VXNlOgogICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKKyAg
ICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2OSw2ICszNjksMTAgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IAogICAgICAgICAvLyBwaXBlbGluZSBmYWlsZWQgdG8gb3B0aW1pemUgb3V0IGFuIElkZW50aXR5
LgogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CisgICAgY2FzZSBE
YXRhVmlld0dldEZsb2F0OgorICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsgLy8gT09QUyEK
KwogICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZToKICAgICBjYXNlIENoZWNrVGllclVwSW5M
b29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKQEAgLTQ0NSw2ICs0NDksNyBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAg
ICAgY2FzZSBTZXRPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBXZWFrTWFwT2JqZWN0
VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKKyAgICAgICAgICAg
ICAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgRmluYWxP
YmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBSZWdFeHBPYmplY3RVc2U6CiAgICAgICAg
ICAgICAgICAgY2FzZSBQcm94eU9iamVjdFVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0NjgsNiArMTQ0NjgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgc3BlY3VsYXRlV2Vha1Nl
dE9iamVjdChlZGdlLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKwor
ICAgIExWYWx1ZSBsb3dEYXRhVmlld09iamVjdChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gbG93Q2VsbChlZGdlKTsKKyAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdP
YmplY3QoZWRnZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAg
CiAgICAgTFZhbHVlIGxvd1N0cmluZyhFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUg
bW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKICAgICB7CkBAIC0xNDk0Myw2ICsx
NDk1MCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKICAgICAg
ICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZURh
dGFWaWV3T2JqZWN0KGVkZ2UpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3Ry
aW5nVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKGVkZ2UpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0xNTQzNyw2ICsxNTQ0NywxNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
c3BlY3VsYXRlV2Vha1NldE9iamVjdChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CisKKyAg
ICB2b2lkIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCisg
ICAgeworICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShj
ZWxsKSwgZWRnZSwgU3BlY0RhdGFWaWV3T2JqZWN0LCBpc05vdFR5cGUoY2VsbCwgRGF0YVZpZXdU
eXBlKSk7CisgICAgfQorCisgICAgdm9pZCBzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlIGVk
Z2UpCisgICAgeworICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlLCBsb3dDZWxs
KGVkZ2UpKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdl
LCBMVmFsdWUgY2VsbCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRyaW5zaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw2ICsyMzks
MzggQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cgogICAgICAgICBy
ZXR1cm4gIkNQVUNwdWlkSW50cmluc2ljIjsKICAgICBjYXNlIENQVVBhdXNlSW50cmluc2ljOgog
ICAgICAgICByZXR1cm4gIkNQVVBhdXNlSW50cmluc2ljIjsKKyAgICBjYXNlIERhdGFWaWV3R2V0
SW50ODoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldEludDgiOworICAgIGNhc2UgRGF0YVZp
ZXdHZXRVaW50ODoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldFVpbnQ4IjsKKyAgICBjYXNl
IERhdGFWaWV3R2V0SW50MTY6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRJbnQxNiI7Cisg
ICAgY2FzZSBEYXRhVmlld0dldFVpbnQxNjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldFVp
bnQxNiI7CisgICAgY2FzZSBEYXRhVmlld0dldEludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFW
aWV3R2V0SW50MzIiOworICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MzI6CisgICAgICAgIHJldHVy
biAiRGF0YVZpZXdHZXRVaW50MzIiOworICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDMyOgorICAg
ICAgICByZXR1cm4gIkRhdGFWaWV3R2V0RmxvYXQzMiI7CisgICAgY2FzZSBEYXRhVmlld0dldEZs
b2F0NjQ6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRGbG9hdDY0IjsKKyAgICBjYXNlIERh
dGFWaWV3U2V0SW50ODoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEludDgiOworICAgIGNh
c2UgRGF0YVZpZXdTZXRVaW50ODoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldFVpbnQ4IjsK
KyAgICBjYXNlIERhdGFWaWV3U2V0SW50MTY6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRJ
bnQxNiI7CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQxNjoKKyAgICAgICAgcmV0dXJuICJEYXRh
Vmlld1NldFVpbnQxNiI7CisgICAgY2FzZSBEYXRhVmlld1NldEludDMyOgorICAgICAgICByZXR1
cm4gIkRhdGFWaWV3U2V0SW50MzIiOworICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MzI6CisgICAg
ICAgIHJldHVybiAiRGF0YVZpZXdTZXRVaW50MzIiOworICAgIGNhc2UgRGF0YVZpZXdTZXRGbG9h
dDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0RmxvYXQzMiI7CisgICAgY2FzZSBEYXRh
Vmlld1NldEZsb2F0NjQ6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRGbG9hdDY0IjsKICAg
ICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCShyZXZp
c2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSwyMyBAQCBlbnVtIEludHJpbnNpYyB7CiAg
ICAgQ1BVUmR0c2NJbnRyaW5zaWMsCiAgICAgQ1BVQ3B1aWRJbnRyaW5zaWMsCiAgICAgQ1BVUGF1
c2VJbnRyaW5zaWMsCisKKyAgICBEYXRhVmlld0dldEludDgsCisgICAgRGF0YVZpZXdHZXRVaW50
OCwKKyAgICBEYXRhVmlld0dldEludDE2LAorICAgIERhdGFWaWV3R2V0VWludDE2LAorICAgIERh
dGFWaWV3R2V0SW50MzIsCisgICAgRGF0YVZpZXdHZXRVaW50MzIsCisgICAgRGF0YVZpZXdHZXRG
bG9hdDMyLAorICAgIERhdGFWaWV3R2V0RmxvYXQ2NCwKKyAgICBEYXRhVmlld1NldEludDgsCisg
ICAgRGF0YVZpZXdTZXRVaW50OCwKKyAgICBEYXRhVmlld1NldEludDE2LAorICAgIERhdGFWaWV3
U2V0VWludDE2LAorICAgIERhdGFWaWV3U2V0SW50MzIsCisgICAgRGF0YVZpZXdTZXRVaW50MzIs
CisgICAgRGF0YVZpZXdTZXRGbG9hdDMyLAorICAgIERhdGFWaWV3U2V0RmxvYXQ2NCwKIH07CiAK
IGNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMjIgKzM5LDIyIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAvKiBTb3VyY2UgZm9yIEpTRGF0YVZpZXdQcm90b3R5cGUubHV0LmgKIEBi
ZWdpbiBkYXRhVmlld1RhYmxlCi0gIGdldEludDggICAgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
RnVuY0dldEludDggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRV
aW50OCAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50OCAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0SW50MTYgICAgICAgICAgICAgIGRhdGFWaWV3
UHJvdG9GdW5jR2V0SW50MTYgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0g
IGdldFVpbnQxNiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQxNiAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRJbnQzMiAgICAgICAgICAgICAgZGF0
YVZpZXdQcm90b0Z1bmNHZXRJbnQzMiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAg
IDEKLSAgZ2V0VWludDMyICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDMyICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldEZsb2F0MzIgICAgICAgICAg
ICBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
ICAgICAgMQotICBnZXRGbG9hdDY0ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9h
dDY0ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgc2V0SW50OCAgICAgICAg
ICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50OCAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAgICAgICAyCi0gIHNldFVpbnQ4ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1Nl
dFVpbnQ4ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRJbnQxNiAg
ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQxNiAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0VWludDE2ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9G
dW5jU2V0VWludDE2ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldElu
dDMyICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEludDMyICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRVaW50MzIgICAgICAgICAgICAgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRVaW50MzIgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAg
c2V0RmxvYXQzMiAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQzMiAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldEZsb2F0NjQgICAgICAgICAgICBkYXRh
Vmlld1Byb3RvRnVuY1NldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAg
MgorICBnZXRJbnQ4ICAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4ICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0SW50OAorICBnZXRV
aW50OCAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50OCAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0VWludDgKKyAgZ2V0SW50MTYgICAg
ICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldEludDE2CisgIGdldFVpbnQxNiAgICAgICAgICAg
ICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQxNiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
ICAgICAgMSAgRGF0YVZpZXdHZXRVaW50MTYKKyAgZ2V0SW50MzIgICAgICAgICAgICAgIGRhdGFW
aWV3UHJvdG9GdW5jR2V0SW50MzIgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAx
ICBEYXRhVmlld0dldEludDMyCisgIGdldFVpbnQzMiAgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
RnVuY0dldFVpbnQzMiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZp
ZXdHZXRVaW50MzIKKyAgZ2V0RmxvYXQzMiAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0
RmxvYXQzMiAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldEZs
b2F0MzIKKyAgZ2V0RmxvYXQ2NCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2
NCAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldEZsb2F0NjQK
KyAgc2V0SW50OCAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50OCAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldEludDgKKyAgc2V0VWlu
dDggICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDggICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldFVpbnQ4CisgIHNldEludDE2ICAgICAg
ICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEludDE2ICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRJbnQxNgorICBzZXRVaW50MTYgICAgICAgICAgICAg
ZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MTYgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAg
ICAgIDIgIERhdGFWaWV3U2V0VWludDE2CisgIHNldEludDMyICAgICAgICAgICAgICBkYXRhVmll
d1Byb3RvRnVuY1NldEludDMyICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAg
RGF0YVZpZXdTZXRJbnQzMgorICBzZXRVaW50MzIgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1
bmNTZXRVaW50MzIgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3
U2V0VWludDMyCisgIHNldEZsb2F0MzIgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEZs
b2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRGbG9h
dDMyCisgIHNldEZsb2F0NjQgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRGbG9hdDY0CiAg
IGJ1ZmZlciAgICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyICAgICAgICAg
ICAgRG9udEVudW18QWNjZXNzb3IgICAgICAgMAogICBieXRlTGVuZ3RoICAgICAgICAgICAgZGF0
YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGggICAgICAgIERvbnRFbnVtfEFjY2Vzc29yICAgICAg
IDAKICAgYnl0ZU9mZnNldCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0
ICAgICAgICBEb250RW51bXxBY2Nlc3NvciAgICAgICAwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9U
cmlTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmgJKHJldmlz
aW9uIDIzNDg3MykKKysrIFNvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLWVudW0gVHJpU3RhdGUgewor
ZW51bSBUcmlTdGF0ZSA6IGludDhfdCB7CiAgICAgRmFsc2VUcmlTdGF0ZSwKICAgICBUcnVlVHJp
U3RhdGUsCiAgICAgTWl4ZWRUcmlTdGF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347290</attachid>
            <date>2018-08-16 12:40:05 -0700</date>
            <delta_ts>2018-08-16 14:43:57 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>30371</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIwMywxMSBA
QCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyCiAgICAgICAgICAgICAg
ICAgc3RyT3V0LnByaW50KCJEZXJpdmVkQXJyYXkiKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAodmFsdWUgJiBTcGVj
RGF0YVZpZXdPYmplY3QpCisgICAgICAgICAgICAgICAgc3RyT3V0LnByaW50KCJEYXRhVmlldyIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoKHZhbHVlICYgU3BlY1N0cmluZykgPT0gU3BlY1N0cmluZykK
QEAgLTQzMiw2ICs0MzcsOSBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0lu
Zm8oCiAKICAgICBpZiAoY2xhc3NJbmZvID09IFByb3h5T2JqZWN0OjppbmZvKCkpCiAgICAgICAg
IHJldHVybiBTcGVjUHJveHlPYmplY3Q7CisKKyAgICBpZiAoY2xhc3NJbmZvID09IEpTRGF0YVZp
ZXc6OmluZm8oKSkKKyAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKICAgICAKICAg
ICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoSlNGdW5jdGlvbjo6aW5mbygpKSkgewogICAg
ICAgICBpZiAoY2xhc3NJbmZvID09IEpTQm91bmRGdW5jdGlvbjo6aW5mbygpKQpAQCAtNTU5LDYg
KzU2Nyw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1QKICAgICAg
ICAgcmV0dXJuIFNwZWNXZWFrTWFwT2JqZWN0OwogICAgIGNhc2UgSlNXZWFrU2V0VHlwZToKICAg
ICAgICAgcmV0dXJuIFNwZWNXZWFrU2V0T2JqZWN0OworICAgIGNhc2UgRGF0YVZpZXdUeXBlOgor
ICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTc1MCw2ICs3NjAsOCBAQCBTcGVjdWxh
dGVkVHlwZSBzcGVjdWxhdGlvbkZyb21TdHJpbmcoY29uCiAgICAgICAgIHJldHVybiBTcGVjUHJv
eHlPYmplY3Q7CiAgICAgaWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAiU3BlY0Rlcml2ZWRBcnJh
eSIsIHN0cmxlbigiU3BlY0Rlcml2ZWRBcnJheSIpKSkKICAgICAgICAgcmV0dXJuIFNwZWNEZXJp
dmVkQXJyYXk7CisgICAgaWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAiU3BlY0RhdGFWaWV3T2Jq
ZWN0Iiwgc3RybGVuKCJTcGVjRGF0YVZpZXdPYmplY3QiKSkpCisgICAgICAgIHJldHVybiBTcGVj
RGF0YVZpZXdPYmplY3Q7CiAgICAgaWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAiU3BlY09iamVj
dE90aGVyIiwgc3RybGVuKCJTcGVjT2JqZWN0T3RoZXIiKSkpCiAgICAgICAgIHJldHVybiBTcGVj
T2JqZWN0T3RoZXI7CiAgICAgaWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAiU3BlY09iamVjdCIs
IHN0cmxlbigiU3BlY09iamVjdCIpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNiBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1dlYWtTZXRP
CiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1Byb3h5T2JqZWN0ICAgICAgICAgICAg
ICAgICAgICAgICA9IDF1bGwgPDwgMjE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIFByb3h5IG9iamVj
dCBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0Rlcml2ZWRBcnJheSAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjI7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIERlcml2ZWRBcnJheSBvYmplY3QuCiBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwg
MjM7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFsT2JqZWN0LCBK
U0FycmF5LCBvciBKU0Z1bmN0aW9uLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNP
YmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVj
QXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJn
dW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVn
RXhwT2JqZWN0IHwgU3BlY01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVjV2Vha01hcE9i
amVjdCB8IFNwZWNXZWFrU2V0T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwgU3BlY0Rlcml2ZWRB
cnJheSB8IFNwZWNPYmplY3RPdGhlcjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBh
bnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAyNDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcsIGFuZCBpdCdzIGFuIGlkZW50aWZpZXIuCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ1ZhciAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDF1bGwgPDwgMjU7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQn
cyBub3QgYW4gaWRlbnRpZmllci4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3Ry
aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0cmluZ0lkZW50IHwgU3BlY1N0
cmluZ1ZhcjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCkBAIC05Myw3ICs5Miw5IEBA
IHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAKIHN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjTWlzYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3Bl
Y0Jvb2xlYW4gfCBTcGVjT3RoZXI7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBib29sZWFu
LCBOdWxsLCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Vt
cHR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzc7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzg7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEJpZ0ludC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBT
cGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzOTsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjUHJpbWl0aXZlICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0cmluZyB8
IFNwZWNTeW1ib2wgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYyB8IFNwZWNCaWdJbnQ7
IC8vIEl0J3MgYW55IG5vbi1PYmplY3QgSlNWYWx1ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2Jq
ZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3Bl
Y0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0
IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3Bl
Y1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNw
ZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3Q7IC8v
IEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rp
b24uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNw
ZWNDZWxsT3RoZXIgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCiBz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0
IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNw
ZWNEb3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVj
b2RlVG9wICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNIZWFwVG9wIHwgU3BlY0VtcHR5OyAv
LyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFu
ZCBTcGVjRG91YmxlSW1wdXJlTmFOLiBDb3JyZXNwb25kcyB0byB3aGF0IGNvdWxkIGJlIGZvdW5k
IGluIGEgYnl0ZWNvZGUgbG9jYWwuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAy
MzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3NzAsOSArMzc3MCwyNCBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZpbHRlcihub2RlLT5j
aGlsZDEoKSwgU3BlY0NlbGwpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBicmVhazsKIAorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6IHsKKyAgICAgICAgRGF0YVZp
ZXdEYXRhIGRhdGEgPSBub2RlLT5kYXRhVmlld0RhdGEoKTsKKyAgICAgICAgaWYgKGRhdGEuYnl0
ZVNpemUgPCA0KQorICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJ
bnQzMk9ubHkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghKG5vZGUtPnByZWRp
Y3Rpb24oKSAmIH5TcGVjSW50MzJPbmx5KSkKKyAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlw
ZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCeXRlY29kZURvdWJsZSk7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRGF0YVZpZXdHZXRG
bG9hdDogeworICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Z1bGxEb3Vi
bGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgVW5yZWFjaGFi
bGU6CiAgICAgICAgIC8vIEl0IG1heSBiZSB0aGF0IGR1cmluZyBhIHByZXZpb3VzIHJ1biBvZiBB
SSB3ZSBwcm92ZWQgdGhhdCBzb21ldGhpbmcgd2FzIHVucmVhY2hhYmxlLCBidXQKICAgICAgICAg
Ly8gZHVyaW5nIHRoaXMgcnVuIG9mIEFJIHdlIGZvcmdldCB0aGF0IGl0J3MgdW5yZWFjaGFibGUu
IEFJJ3MgcHJvb2ZzIGRvbid0IGhhdmUgdG8gZ2V0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwNzksNiArMzA3OSw5NCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bnRyaW5zaWNDYWxsCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgRGF0
YVZpZXdHZXRJbnQ4OgorICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50ODoKKyAgICBjYXNlIERhdGFW
aWV3R2V0SW50MTY6CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQxNjoKKyAgICBjYXNlIERhdGFW
aWV3R2V0SW50MzI6CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQzMjoKKyAgICBjYXNlIERhdGFW
aWV3R2V0RmxvYXQzMjoKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ2NDogeworICAgICAgICBp
ZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCAyKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisgICAgICAgIFRyaVN0YXRlIGlzTGl0dGxlRW5k
aWFuOworCisgICAgICAgIE5vZGUqIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKKyAgICAg
ICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgMykKKyAgICAgICAgICAgIGlzTGl0
dGxlRW5kaWFuID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBs
aXR0bGVFbmRpYW5DaGlsZCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgyLCByZWdp
c3Rlck9mZnNldCkpOworICAgICAgICAgICAgaWYgKGxpdHRsZUVuZGlhbkNoaWxkLT5oYXNDb25z
dGFudCgpKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBjb25zdGFudCA9IGxpdHRsZUVuZGlh
bkNoaWxkLT5jb25zdGFudCgpLT52YWx1ZSgpOworICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5k
aWFuID0gY29uc3RhbnQucHVyZVRvQm9vbGVhbigpOworICAgICAgICAgICAgICAgIGlmIChpc0xp
dHRsZUVuZGlhbiAhPSBNaXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBsaXR0bGVF
bmRpYW5DaGlsZCA9IG51bGxwdHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICB1aW50OF90IGJ5dGVTaXplOworICAgICAgICBOb2RlVHlwZSBvcCA9IERhdGFWaWV3R2V0SW50
OworICAgICAgICBib29sIGlzU2lnbmVkID0gZmFsc2U7CisgICAgICAgIHN3aXRjaCAoaW50cmlu
c2ljKSB7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ4OgorICAgICAgICAgICAgaXNTaWdu
ZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNhc2UgRGF0YVZp
ZXdHZXRVaW50ODoKKyAgICAgICAgICAgIGJ5dGVTaXplID0gMTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQxNjoKKyAgICAgICAgICAgIGlzU2lnbmVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIERhdGFWaWV3
R2V0VWludDE2OgorICAgICAgICAgICAgYnl0ZVNpemUgPSAyOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDMyOgorICAgICAgICAgICAgaXNTaWduZWQg
PSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNhc2UgRGF0YVZpZXdH
ZXRVaW50MzI6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDQ7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQzMjoKKyAgICAgICAgICAgIGJ5dGVTaXpl
ID0gNDsKKyAgICAgICAgICAgIG9wID0gRGF0YVZpZXdHZXRGbG9hdDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ2NDoKKyAgICAgICAgICAgIGJ5dGVT
aXplID0gODsKKyAgICAgICAgICAgIG9wID0gRGF0YVZpZXdHZXRGbG9hdDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhIHsgfTsK
KyAgICAgICAgZGF0YS5pc0xpdHRsZUVuZGlhbiA9IGlzTGl0dGxlRW5kaWFuOworICAgICAgICBk
YXRhLmlzU2lnbmVkID0gaXNTaWduZWQ7CisgICAgICAgIGRhdGEuYnl0ZVNpemUgPSBieXRlU2l6
ZTsKKworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLAorICAgICAg
ICAgICAgYWRkVG9HcmFwaChvcCwgT3BJbmZvKGRhdGEuYXNRdWFkV29yZCksIE9wSW5mbyhwcmVk
aWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0
KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpLCBs
aXR0bGVFbmRpYW5DaGlsZCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBj
YXNlIERhdGFWaWV3U2V0SW50ODoKKyAgICBjYXNlIERhdGFWaWV3U2V0VWludDg6CisgICAgY2Fz
ZSBEYXRhVmlld1NldEludDE2OgorICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MTY6CisgICAgY2Fz
ZSBEYXRhVmlld1NldEludDMyOgorICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MzI6CisgICAgY2Fz
ZSBEYXRhVmlld1NldEZsb2F0MzI6CisgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0NjQ6IHsKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICAgICAgLy8gT09QUworICAgIH0KKwogICAgIGNhc2UgSGFzT3du
UHJvcGVydHlJbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICE9IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3
NTgsNyArMTc1OCwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
CiAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6CiAgICAgICAg
IGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+dmFsaWRSYWRpeENvbnN0YW50KCkpKTsKICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKKworICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICBj
YXNlIERhdGFWaWV3R2V0SW50OiB7CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAg
IHJlYWQoVHlwZWRBcnJheVByb3BlcnRpZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDYgKzMxOCw4IEBAIGJvb2wgZG9l
c0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlk
U3RhdHVzOgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CisgICAgY2FzZSBEYXRhVmlld0dldEZs
b2F0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIFB1c2hXaXRoU2NvcGU6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlz
aW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMDQsNiArMjEwNCwxNSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVh
azsKIAorICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgorICAgICAgICBjYXNlIERhdGFWaWV3
R2V0RmxvYXQ6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8RGF0YVZpZXdPYmplY3RVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8t
b3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxl
cnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3
LDE4IEBAIHN0cnVjdCBOZXdBcnJheUJ1ZmZlckRhdGEgewogc3RhdGljX2Fzc2VydChzaXplb2Yo
SW5kZXhpbmdUeXBlKSA8PSBzaXplb2YodW5zaWduZWQpLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNp
emVvZihOZXdBcnJheUJ1ZmZlckRhdGEpID09IHNpemVvZih1aW50NjRfdCksICIiKTsKIAorc3Ry
dWN0IERhdGFWaWV3RGF0YSB7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAg
ICAgICAgdWludDhfdCBieXRlU2l6ZTsKKyAgICAgICAgICAgIGJvb2wgaXNTaWduZWQ7CisgICAg
ICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVuZGlhbjsKKyAgICAgICAgfTsKKyAgICAgICAgdWlu
dDY0X3QgYXNRdWFkV29yZDsKKyAgICB9OworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKERhdGFW
aWV3RGF0YSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOworCiBzdHJ1Y3QgQnJhbmNoVGFyZ2V0
IHsKICAgICBCcmFuY2hUYXJnZXQoKQogICAgICAgICA6IGJsb2NrKDApCkBAIC0xNjU5LDYgKzE2
NzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICAgICAgY2Fz
ZSBFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdldDoKICAgICAgICAgY2FzZSBUb1RoaXM6CisgICAg
ICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjE0Myw2ICsyMTU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPHVuc2lnbmVkPigpOwogICAgIH0KIAorICAgIERhdGFWaWV3RGF0YSBk
YXRhVmlld0RhdGEoKQorICAgIHsKKyAgICAgICAgLy9BU1NFUlQob3AoKSA9PSBEYXRhVmlld0dl
dEludCB8fCBvcCgpID09IERhdGFWaWV3R2V0RmxvYXQgfHwgb3AoKSA9PSBEYXRhVmlld1NldCk7
CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RGF0YVZpZXdEYXRhPihtX29wSW5mby5hczx1
aW50NjRfdD4oKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRHZW5lcmF0ZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gbV9yZWZDb3VudDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDYgKzQ4MywxMSBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oRmlsdGVyR2V0QnlJZFN0
YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlckluQnlJZFN0YXR1cywg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICAvKiBEYXRhIHZpZXcgYWNjZXNzICovIFwKKyAgICBtYWNybyhE
YXRhVmlld0dldEludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1h
Y3JvKERhdGFWaWV3R2V0RmxvYXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0RG91Ymxl
KSBcCisKKyAgICAvL21hY3JvKERhdGFWaWV3U2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogCiAKIC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5
IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVzLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTAsNyAr
NzUwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBj
YXNlIEdldER5bmFtaWNWYXI6CiAgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6Ci0gICAgICAg
IGNhc2UgRXh0cmFjdFZhbHVlRnJvbVdlYWtNYXBHZXQ6IHsKKyAgICAgICAgY2FzZSBFeHRyYWN0
VmFsdWVGcm9tV2Vha01hcEdldDogCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CisgICAg
ICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbiht
X2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIFNldE9iamVjdFVzZToKICAgICAgICAgY2FzZSBXZWFrTWFwT2JqZWN0
VXNlOgogICAgICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CisgICAgICAgIGNhc2UgRGF0YVZp
ZXdPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgY2Fz
ZSBTdHJpbmdJZGVudFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CkBAIC02MDIsNiArNjAz
LDEwIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICBjYXNl
IERhdGFWaWV3R2V0RmxvYXQ6CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gT09QUzogY2FuIHdl
IGFsd2F5cyBkbyB0aGlzIG9yIGp1c3Qgc29tZXRpbWVzPworCiAgICAgY2FzZSBTZXRBZGQ6CiAg
ICAgY2FzZSBNYXBTZXQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24g
MjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1Myw2ICs0NTUzLDc0IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNsZWFyQ2F0Y2hMb2Nh
bHMobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBEYXRhVmlld0dldEludDogewor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBkYXRhVmlldyh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIEdQUlJlZyBkYXRhVmlld0dQUiA9IGRhdGFWaWV3LmdwcigpOworICAgICAg
ICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChub2RlLT5jaGlsZDEoKSwgZGF0YVZpZXdHUFIpOwor
CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgIEdQUlJlZyBpbmRleEdQUiA9IGluZGV4LmdwcigpOworCisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFub2RlLT5jaGlsZDMoKSk7IC8vIE9PUFMKKworICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcDEodGhpcyk7CisgICAgICAgIEdQUlJlZyB0MSA9IHRlbXAxLmdwcigpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisgICAgICAgIEdQUlJlZyB0MiA9IHRlbXAy
LmdwcigpOworCisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbm9kZS0+ZGF0YVZpZXdEYXRh
KCk7CisKKyAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFW
aWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQyKTsKKyAgICAg
ICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKSB7CisgICAgICAgICAgICBtX2ppdC5zdWIzMihUcnVz
dGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAorICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgdDIsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgfQorICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgaW5kZXhHUFIsIHQy
KSk7CisKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhkYXRhVmll
d0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB0Mik7CisgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVTb3VyY2UoKSwgbm9kZSwgbV9q
aXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgdDIpKTsgLy8gT09QUzogYWRk
IHRlc3QuIENhbiB3ZSBuZXV0ZXIgYSBKU0RhdGFWaWV3PworCisgICAgICAgIG1faml0Lnplcm9F
eHRlbmQzMlRvUHRyKGluZGV4R1BSLCB0MSk7CisgICAgICAgIGF1dG8gYmFzZUluZGV4ID0gSklU
Q29tcGlsZXI6OkJhc2VJbmRleCh0MiwgdDEsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEuaXNMaXR0bGVFbmRpYW4gPSBUcnVlVHJpU3RhdGUp
OyAvLyBPT1BTCisgICAgICAgIHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICBjYXNl
IDE6CisgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkOFNpZ25lZEV4dGVuZFRvMzIoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAg
ICBpbnQzMlJlc3VsdCh0Miwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAyOgorICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisgICAgICAgICAgICAgICAgbV9q
aXQubG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMTYoYmFzZUluZGV4LCB0Mik7CisgICAgICAg
ICAgICBpbnQzMlJlc3VsdCh0Miwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSA0OgorICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpIHsKKyAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkMzIoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAgICAgaW50MzJSZXN1
bHQodDIsIG5vZGUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBP
T1BTOiBpbXBsZW1lbnQgdGhpcyEKKyAgICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OiB7CisgICAgICAgIENSQVNIKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAg
ICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBjYWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRkMzIoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjM0ODczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk5MDMsNiArOTkwMywyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVXZWFrU2V0T2JqCiAgICAgc3BlY3VsYXRlV2Vha1NldE9iamVjdChlZGdlLCBvcGVyYW5k
LmdwcigpKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRGF0YVZpZXdPYmpl
Y3QoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3sKKyAgICBzcGVjdWxhdGVDZWxsVHlwZShlZGdl
LCBjZWxsLCBTcGVjRGF0YVZpZXdPYmplY3QsIERhdGFWaWV3VHlwZSk7Cit9CisKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UgZWRnZSkKK3sKKyAgICBp
ZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNEYXRhVmlld09iamVjdCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7Cisg
ICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRnZSwgb3BlcmFuZC5ncHIoKSk7Cit9CisKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3RoZXIoRWRnZSBlZGdlKQogewog
ICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY09iamVjdCB8IFNwZWNPdGhlcikpCkBA
IC0xMDI3MSw2ICsxMDI4NSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2Rl
KiwgRWQKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtT
ZXRPYmplY3QoZWRnZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGF0YVZpZXdPYmplY3RV
c2U6CisgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UpOworICAgICAgICBicmVh
azsKICAgICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU9iamVjdE9y
T3RoZXIoZWRnZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjEwLDYgKzE2MTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVXZWFrTWFwT2Jq
ZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3Qo
RWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxs
KTsKKyAgICB2b2lkIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UpOworICAgIHZvaWQgc3Bl
Y3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3Vs
YXRlT2JqZWN0T3JPdGhlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZyhFZGdlIGVk
Z2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0
b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBHUFJSZWcgc3RvcmFnZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDIzNDg3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCwxNiArMTA0LDE5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBVc2UKICAgICAgICAgb3V0LnByaW50KCJEZXJpdmVkQXJyYXkiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgTWFwT2JqZWN0VXNlOgotICAgICAgICBvdXQucHJpbnQoIk1hcE9iamVj
dFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIk1hcE9iamVjdCIpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBTZXRPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmludCgiU2V0T2JqZWN0VXNl
Iik7CisgICAgICAgIG91dC5wcmludCgiU2V0T2JqZWN0Iik7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmludCgiV2Vha01hcE9iamVj
dFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIldlYWtNYXBPYmplY3QiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKLSAgICAgICAgb3V0LnByaW50KCJXZWFr
U2V0T2JqZWN0VXNlIik7CisgICAgICAgIG91dC5wcmludCgiV2Vha1NldE9iamVjdCIpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKKyAgICAgICAgb3V0LnBy
aW50KCJEYXRhVmlld09iamVjdCIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBPYmplY3RP
ck90aGVyVXNlOgogICAgICAgICBvdXQucHJpbnQoIk9iamVjdE9yT3RoZXIiKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNiArNzAsNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIFNldE9iamVjdFVzZSwKICAgICBXZWFr
TWFwT2JqZWN0VXNlLAogICAgIFdlYWtTZXRPYmplY3RVc2UsCisgICAgRGF0YVZpZXdPYmplY3RV
c2UsCiAgICAgU3RyaW5nT2JqZWN0VXNlLAogICAgIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlLAog
ICAgIE5vdFN0cmluZ1ZhclVzZSwKQEAgLTE2MCw2ICsxNjEsOCBAQCBpbmxpbmUgU3BlY3VsYXRl
ZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLCiAgICAgICAgIHJldHVybiBTcGVjV2Vha01hcE9iamVj
dDsKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CiAgICAgICAgIHJldHVybiBTcGVjV2Vha1Nl
dE9iamVjdDsKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgorICAgICAgICByZXR1cm4gU3Bl
Y0RhdGFWaWV3T2JqZWN0OwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICByZXR1
cm4gU3BlY1N0cmluZ09iamVjdDsKICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgpA
QCAtMjU5LDYgKzI2Miw3IEBAIGlubGluZSBib29sIGlzQ2VsbChVc2VLaW5kIGtpbmQpCiAgICAg
Y2FzZSBTZXRPYmplY3RVc2U6CiAgICAgY2FzZSBXZWFrTWFwT2JqZWN0VXNlOgogICAgIGNhc2Ug
V2Vha1NldE9iamVjdFVzZToKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lv
biAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw2ICszNjksMTAgQEAgaW5saW5lIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgICAgICAvLyBwaXBlbGluZSBmYWlsZWQgdG8gb3B0
aW1pemUgb3V0IGFuIElkZW50aXR5LgogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgRGF0YVZp
ZXdHZXRJbnQ6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgorICAgICAgICByZXR1cm4gQ2Fu
bm90Q29tcGlsZTsgLy8gT09QUyEKKwogICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZToKICAg
ICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRl
cjoKQEAgLTQ0NSw2ICs0NDksNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYg
Z3JhcGgpCiAgICAgICAgICAgICAgICAgY2FzZSBTZXRPYmplY3RVc2U6CiAgICAgICAgICAgICAg
ICAgY2FzZSBXZWFrTWFwT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgV2Vha1NldE9i
amVjdFVzZToKKyAgICAgICAgICAgICAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgogICAgICAg
ICAgICAgICAgIGNhc2UgRmluYWxPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBSZWdF
eHBPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBQcm94eU9iamVjdFVzZToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlz
aW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0NjgsNiArMTQ0NjgsMTMgQEAgcHJpdmF0ZToKICAg
ICAgICAgc3BlY3VsYXRlV2Vha1NldE9iamVjdChlZGdlLCByZXN1bHQpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KKworICAgIExWYWx1ZSBsb3dEYXRhVmlld09iamVjdChFZGdlIGVk
Z2UpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbG93Q2VsbChlZGdlKTsKKyAgICAg
ICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRnZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CiAgICAgCiAgICAgTFZhbHVlIGxvd1N0cmluZyhFZGdlIGVkZ2UsIE9w
ZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikK
ICAgICB7CkBAIC0xNDk0Myw2ICsxNDk1MCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgV2Vh
a1NldE9iamVjdFVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKKyAg
ICAgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5n
KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTQzNyw2ICsxNTQ0NywxNyBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgc3BlY3VsYXRlV2Vha1NldE9iamVjdChlZGdlLCBsb3dDZWxs
KGVkZ2UpKTsKICAgICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2Ug
ZWRnZSwgTFZhbHVlIGNlbGwpCisgICAgeworICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAg
ICAgICAgIGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY0RhdGFWaWV3T2JqZWN0LCBpc05v
dFR5cGUoY2VsbCwgRGF0YVZpZXdUeXBlKSk7CisgICAgfQorCisgICAgdm9pZCBzcGVjdWxhdGVE
YXRhVmlld09iamVjdChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBzcGVjdWxhdGVEYXRhVmll
d09iamVjdChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBzcGVj
dWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAJKHJldmlzaW9uIDIzNDg3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzOSw2ICsyMzksMzggQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRy
aW5zaWMgaW50cgogICAgICAgICByZXR1cm4gIkNQVUNwdWlkSW50cmluc2ljIjsKICAgICBjYXNl
IENQVVBhdXNlSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIkNQVVBhdXNlSW50cmluc2ljIjsK
KyAgICBjYXNlIERhdGFWaWV3R2V0SW50ODoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldElu
dDgiOworICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50ODoKKyAgICAgICAgcmV0dXJuICJEYXRhVmll
d0dldFVpbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50MTY6CisgICAgICAgIHJldHVybiAi
RGF0YVZpZXdHZXRJbnQxNiI7CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQxNjoKKyAgICAgICAg
cmV0dXJuICJEYXRhVmlld0dldFVpbnQxNiI7CisgICAgY2FzZSBEYXRhVmlld0dldEludDMyOgor
ICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0SW50MzIiOworICAgIGNhc2UgRGF0YVZpZXdHZXRV
aW50MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRVaW50MzIiOworICAgIGNhc2UgRGF0
YVZpZXdHZXRGbG9hdDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0RmxvYXQzMiI7Cisg
ICAgY2FzZSBEYXRhVmlld0dldEZsb2F0NjQ6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRG
bG9hdDY0IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50ODoKKyAgICAgICAgcmV0dXJuICJEYXRh
Vmlld1NldEludDgiOworICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50ODoKKyAgICAgICAgcmV0dXJu
ICJEYXRhVmlld1NldFVpbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50MTY6CisgICAgICAg
IHJldHVybiAiRGF0YVZpZXdTZXRJbnQxNiI7CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQxNjoK
KyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldFVpbnQxNiI7CisgICAgY2FzZSBEYXRhVmlld1Nl
dEludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0SW50MzIiOworICAgIGNhc2UgRGF0
YVZpZXdTZXRVaW50MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRVaW50MzIiOworICAg
IGNhc2UgRGF0YVZpZXdTZXRGbG9hdDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0Rmxv
YXQzMiI7CisgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0NjQ6CisgICAgICAgIHJldHVybiAiRGF0
YVZpZXdTZXRGbG9hdDY0IjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRyaW5zaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSwyMyBA
QCBlbnVtIEludHJpbnNpYyB7CiAgICAgQ1BVUmR0c2NJbnRyaW5zaWMsCiAgICAgQ1BVQ3B1aWRJ
bnRyaW5zaWMsCiAgICAgQ1BVUGF1c2VJbnRyaW5zaWMsCisKKyAgICBEYXRhVmlld0dldEludDgs
CisgICAgRGF0YVZpZXdHZXRVaW50OCwKKyAgICBEYXRhVmlld0dldEludDE2LAorICAgIERhdGFW
aWV3R2V0VWludDE2LAorICAgIERhdGFWaWV3R2V0SW50MzIsCisgICAgRGF0YVZpZXdHZXRVaW50
MzIsCisgICAgRGF0YVZpZXdHZXRGbG9hdDMyLAorICAgIERhdGFWaWV3R2V0RmxvYXQ2NCwKKyAg
ICBEYXRhVmlld1NldEludDgsCisgICAgRGF0YVZpZXdTZXRVaW50OCwKKyAgICBEYXRhVmlld1Nl
dEludDE2LAorICAgIERhdGFWaWV3U2V0VWludDE2LAorICAgIERhdGFWaWV3U2V0SW50MzIsCisg
ICAgRGF0YVZpZXdTZXRVaW50MzIsCisgICAgRGF0YVZpZXdTZXRGbG9hdDMyLAorICAgIERhdGFW
aWV3U2V0RmxvYXQ2NCwKIH07CiAKIGNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2lj
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksMjIgKzM5LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAvKiBTb3VyY2UgZm9yIEpTRGF0YVZp
ZXdQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBkYXRhVmlld1RhYmxlCi0gIGdldEludDggICAgICAg
ICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDggICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gICAgICAgMQotICBnZXRVaW50OCAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNH
ZXRVaW50OCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0SW50MTYg
ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldFVpbnQxNiAgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
RnVuY0dldFVpbnQxNiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRJ
bnQzMiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQzMiAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0VWludDMyICAgICAgICAgICAgIGRhdGFWaWV3
UHJvdG9GdW5jR2V0VWludDMyICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0g
IGdldEZsb2F0MzIgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRGbG9hdDY0ICAgICAgICAgICAgZGF0
YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAg
IDEKLSAgc2V0SW50OCAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50OCAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldFVpbnQ4ICAgICAgICAgICAg
ICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
ICAgICAgMgotICBzZXRJbnQxNiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQx
NiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0VWludDE2ICAgICAg
ICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2ICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAgICAgICAyCi0gIHNldEludDMyICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1Nl
dEludDMyICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRVaW50MzIg
ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0RmxvYXQzMiAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9G
dW5jU2V0RmxvYXQzMiAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldEZs
b2F0NjQgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gICAgICAgMgorICBnZXRJbnQ4ICAgICAgICAgICAgICAgZGF0YVZpZXdQ
cm90b0Z1bmNHZXRJbnQ4ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERh
dGFWaWV3R2V0SW50OAorICBnZXRVaW50OCAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNH
ZXRVaW50OCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0
VWludDgKKyAgZ2V0SW50MTYgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldEludDE2Cisg
IGdldFVpbnQxNiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQxNiAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRVaW50MTYKKyAgZ2V0SW50
MzIgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MzIgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldEludDMyCisgIGdldFVpbnQzMiAgICAg
ICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQzMiAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRVaW50MzIKKyAgZ2V0RmxvYXQzMiAgICAgICAgICAg
IGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQzMiAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAg
ICAgICAxICBEYXRhVmlld0dldEZsb2F0MzIKKyAgZ2V0RmxvYXQ2NCAgICAgICAgICAgIGRhdGFW
aWV3UHJvdG9GdW5jR2V0RmxvYXQ2NCAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAx
ICBEYXRhVmlld0dldEZsb2F0NjQKKyAgc2V0SW50OCAgICAgICAgICAgICAgIGRhdGFWaWV3UHJv
dG9GdW5jU2V0SW50OCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRh
Vmlld1NldEludDgKKyAgc2V0VWludDggICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0
VWludDggICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldFVp
bnQ4CisgIHNldEludDE2ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEludDE2ICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRJbnQxNgorICBz
ZXRVaW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MTYgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0VWludDE2CisgIHNldEludDMy
ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEludDMyICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRJbnQzMgorICBzZXRVaW50MzIgICAgICAg
ICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uICAgICAgIDIgIERhdGFWaWV3U2V0VWludDMyCisgIHNldEZsb2F0MzIgICAgICAgICAgICBk
YXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAg
ICAgMiAgRGF0YVZpZXdTZXRGbG9hdDMyCisgIHNldEZsb2F0NjQgICAgICAgICAgICBkYXRhVmll
d1Byb3RvRnVuY1NldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAg
RGF0YVZpZXdTZXRGbG9hdDY0CiAgIGJ1ZmZlciAgICAgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
R2V0dGVyQnVmZmVyICAgICAgICAgICAgRG9udEVudW18QWNjZXNzb3IgICAgICAgMAogICBieXRl
TGVuZ3RoICAgICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGggICAgICAgIERv
bnRFbnVtfEFjY2Vzc29yICAgICAgIDAKICAgYnl0ZU9mZnNldCAgICAgICAgICAgIGRhdGFWaWV3
UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0ICAgICAgICBEb250RW51bXxBY2Nlc3NvciAgICAgICAwCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1RyaVN0YXRlLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9XVEYvd3RmL1RyaVN0
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7
CiAKLWVudW0gVHJpU3RhdGUgeworZW51bSBUcmlTdGF0ZSA6IGludDhfdCB7CiAgICAgRmFsc2VU
cmlTdGF0ZSwKICAgICBUcnVlVHJpU3RhdGUsCiAgICAgTWl4ZWRUcmlTdGF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347309</attachid>
            <date>2018-08-16 14:43:57 -0700</date>
            <delta_ts>2018-08-16 19:10:28 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>32586</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNDA4LDYgKzQwOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnBv
cGNudF9ycihzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCBieXRlU3dhcChSZWdpc3RlcklE
IGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJzd2FwX3IoZHN0KTsKKyAgICB9CisK
ICAgICAvLyBPbmx5IHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgdm9pZCBpbGxlZ2Fs
SW5zdHJ1Y3Rpb24oKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3
LDYgKzMzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAweEMw
LAogICAgICAgICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1AyX1BFWFRS
V19HZFVkSWIgICA9IDB4QzUsCisgICAgICAgIE9QMl9CU1dBUCAgICAgICAgICAgPSAweEM4LAog
ICAgICAgICBPUDJfUFNMTFFfVWRxSWIgICAgID0gMHg3MywKICAgICAgICAgT1AyX1BTUkxRX1Vk
cUliICAgICA9IDB4NzMsCiAgICAgICAgIE9QMl9QT1JfVmRxV2RxICAgICAgPSAwWEVCLApAQCAt
MTYzOCw2ICsxNjM5LDExIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAgIHZvaWQgYnN3
YXBfcihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVP
cChPUDJfQlNXQVAsIGRzdCk7CisgICAgfQorCiAgICAgdm9pZCB0emNudF9ycihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgo
UFJFX1NTRV9GMyk7CkBAIC00MzMzLDYgKzQzMzksMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CiAgICAgICAgIH0KIAorICAgICAgICB2
b2lkIHR3b0J5dGVPcChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnKQorICAgICAgICB7
CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZm
ZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRlZCgwLCAwLCByZWcpOworICAg
ICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAg
ICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSArIChyZWcgJiA3KSk7CisgICAg
ICAgIH0KKwogICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBp
bnQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7CiAgICAgICAgICAgICBTaW5nbGVJbnN0
cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lvbiAy
MzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDExIEBAIHZvaWQgZHVtcFNwZWN1bGF0
aW9uKFByaW50U3RyZWFtJiBvdXRTdHIKICAgICAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkRl
cml2ZWRBcnJheSIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGlzVG9wID0g
ZmFsc2U7CisKKyAgICAgICAgICAgIGlmICh2YWx1ZSAmIFNwZWNEYXRhVmlld09iamVjdCkKKyAg
ICAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkRhdGFWaWV3Iik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICgodmFsdWUgJiBTcGVjU3RyaW5nKSA9PSBTcGVjU3RyaW5nKQpAQCAtNDMyLDYgKzQzNyw5IEBA
IFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbygKIAogICAgIGlmIChjbGFz
c0luZm8gPT0gUHJveHlPYmplY3Q6OmluZm8oKSkKICAgICAgICAgcmV0dXJuIFNwZWNQcm94eU9i
amVjdDsKKworICAgIGlmIChjbGFzc0luZm8gPT0gSlNEYXRhVmlldzo6aW5mbygpKQorICAgICAg
ICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAgIAogICAgIGlmIChjbGFzc0luZm8tPmlz
U3ViQ2xhc3NPZihKU0Z1bmN0aW9uOjppbmZvKCkpKSB7CiAgICAgICAgIGlmIChjbGFzc0luZm8g
PT0gSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpCkBAIC01NTksNiArNTY3LDggQEAgU3BlY3VsYXRl
ZFR5cGUgc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVAogICAgICAgICByZXR1cm4gU3BlY1dlYWtN
YXBPYmplY3Q7CiAgICAgY2FzZSBKU1dlYWtTZXRUeXBlOgogICAgICAgICByZXR1cm4gU3BlY1dl
YWtTZXRPYmplY3Q7CisgICAgY2FzZSBEYXRhVmlld1R5cGU6CisgICAgICAgIHJldHVybiBTcGVj
RGF0YVZpZXdPYmplY3Q7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQpAQCAtNzUwLDYgKzc2MCw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9u
RnJvbVN0cmluZyhjb24KICAgICAgICAgcmV0dXJuIFNwZWNQcm94eU9iamVjdDsKICAgICBpZiAo
IXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjRGVyaXZlZEFycmF5Iiwgc3RybGVuKCJTcGVjRGVy
aXZlZEFycmF5IikpKQogICAgICAgICByZXR1cm4gU3BlY0Rlcml2ZWRBcnJheTsKKyAgICBpZiAo
IXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjRGF0YVZpZXdPYmplY3QiLCBzdHJsZW4oIlNwZWNE
YXRhVmlld09iamVjdCIpKSkKKyAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKICAg
ICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjT2JqZWN0T3RoZXIiLCBzdHJsZW4oIlNw
ZWNPYmplY3RPdGhlciIpKSkKICAgICAgICAgcmV0dXJuIFNwZWNPYmplY3RPdGhlcjsKICAgICBp
ZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjT2JqZWN0Iiwgc3RybGVuKCJTcGVjT2JqZWN0
IikpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw2IEBAIHN0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjV2Vha1NldE8KIHN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjUHJveHlPYmplY3QgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8
PCAyMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgUHJveHkgb2JqZWN0IG9yIG9uZSBvZiBpdHMgc3Vi
Y2xhc3Nlcy4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRGVyaXZlZEFycmF5ICAg
ICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAyMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgRGVy
aXZlZEFycmF5IG9iamVjdC4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0
T3RoZXIgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAyMzsgLy8gSXQncyBkZWZpbml0
ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmplY3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rp
b24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlv
biB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJlY3RBcmd1bWVudHMgfCBTcGVjU2NvcGVk
QXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNwZWNSZWdFeHBPYmplY3QgfCBTcGVjTWFw
T2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRP
YmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90
aGVyOyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBw
cmVkaWN0aW9uLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdJZGVudCAg
ICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDI0OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBK
U1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAyNTsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcsIGFuZCBpdCdzIG5vdCBhbiBpZGVudGlmaWVy
Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBTcGVjU3RyaW5nSWRlbnQgfCBTcGVjU3RyaW5nVmFyOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU1N0cmluZy4KQEAgLTkzLDcgKzkyLDkgQEAgc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNPdGhlciAgIAogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNN
aXNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQm9vbGVhbiB8IFNwZWNPdGhl
cjsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhlciBhIGJvb2xlYW4sIE51bGwsIG9yIFVuZGVmaW5l
ZC4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMXVsbCA8PCAzNzsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIGVtcHR5IHZh
bHVlIG1hcmtlci4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzODsgLy8gSXQncyBkZWZpbml0ZWx5IGEg
QmlnSW50Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09iamVjdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM5OyAvLyBJdCdzIGRlZmluaXRlbHkg
YSBKU0RhdGFWaWV3Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNC
eXRlY29kZU51bWJlciB8IFNwZWNNaXNjIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBhbnkgbm9uLU9i
amVjdCBKU1ZhbHVlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkgfCBT
cGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRzIHwg
U3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0
IHwgU3BlY01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVjV2Vha01hcE9iamVjdCB8IFNw
ZWNXZWFrU2V0T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwgU3BlY0Rlcml2ZWRBcnJheSB8IFNw
ZWNPYmplY3RPdGhlciB8IFNwZWNEYXRhVmlld09iamVjdDsgLy8gQml0bWFzayB1c2VkIGZvciB0
ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KIHN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3Bl
Y09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0NlbGxPdGhlciB8IFNwZWNC
aWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KIHN0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0NlbGwg
fCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYzsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUg
YWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4K
IHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgICAgICAg
ICAgICAgICAgID0gU3BlY0hlYXBUb3AgfCBTcGVjRW1wdHk7IC8vIEl0IGNhbiBiZSBhbnkgb2Yg
dGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVO
YU4uIENvcnJlc3BvbmRzIHRvIHdoYXQgY291bGQgYmUgZm91bmQgaW4gYSBieXRlY29kZSBsb2Nh
bC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzc3MCw5ICszNzcwLDI0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgZmlsdGVyKG5vZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJyZWFrOwogCisgICAg
Y2FzZSBEYXRhVmlld0dldEludDogeworICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG5vZGUt
PmRhdGFWaWV3RGF0YSgpOworICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA8IDQpCisgICAgICAg
ICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgaWYgKCEobm9kZS0+cHJlZGljdGlvbigpICYgflNwZWNJbnQz
Mk9ubHkpKQorICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVj
SW50MzJPbmx5KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXROb25DZWxs
VHlwZUZvck5vZGUobm9kZSwgU3BlY0J5dGVjb2RlRG91YmxlKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OiB7CisgICAgICAgIHNl
dE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjRnVsbERvdWJsZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgLy8gSXQg
bWF5IGJlIHRoYXQgZHVyaW5nIGEgcHJldmlvdXMgcnVuIG9mIEFJIHdlIHByb3ZlZCB0aGF0IHNv
bWV0aGluZyB3YXMgdW5yZWFjaGFibGUsIGJ1dAogICAgICAgICAvLyBkdXJpbmcgdGhpcyBydW4g
b2YgQUkgd2UgZm9yZ2V0IHRoYXQgaXQncyB1bnJlYWNoYWJsZS4gQUkncyBwcm9vZnMgZG9uJ3Qg
aGF2ZSB0byBnZXQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA3OSw2ICsz
MDc5LDk0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgY2FzZSBEYXRhVmlld0dldEludDg6CisgICAg
Y2FzZSBEYXRhVmlld0dldFVpbnQ4OgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQxNjoKKyAgICBj
YXNlIERhdGFWaWV3R2V0VWludDE2OgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQzMjoKKyAgICBj
YXNlIERhdGFWaWV3R2V0VWludDMyOgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDMyOgorICAg
IGNhc2UgRGF0YVZpZXdHZXRGbG9hdDY0OiB7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyA8IDIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICht
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpbnNlcnRD
aGVja3MoKTsKKyAgICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRpYW47CisKKyAgICAgICAgTm9k
ZSogbGl0dGxlRW5kaWFuQ2hpbGQgPSBudWxscHRyOworICAgICAgICBpZiAoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPCAzKQorICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBGYWxzZVRy
aVN0YXRlOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0g
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDIsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICBpZiAobGl0dGxlRW5kaWFuQ2hpbGQtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAg
ICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbGl0dGxlRW5kaWFuQ2hpbGQtPmNvbnN0YW50KCkt
PnZhbHVlKCk7CisgICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBjb25zdGFudC5wdXJl
VG9Cb29sZWFuKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzTGl0dGxlRW5kaWFuICE9IE1peGVk
VHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHVpbnQ4X3QgYnl0ZVNpemU7
CisgICAgICAgIE5vZGVUeXBlIG9wID0gRGF0YVZpZXdHZXRJbnQ7CisgICAgICAgIGJvb2wgaXNT
aWduZWQgPSBmYWxzZTsKKyAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICAgICAgY2Fz
ZSBEYXRhVmlld0dldEludDg6CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAg
ICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldFVpbnQ4OgorICAgICAg
ICAgICAgYnl0ZVNpemUgPSAxOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBE
YXRhVmlld0dldEludDE2OgorICAgICAgICAgICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAg
ICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgICAg
ICAgICBieXRlU2l6ZSA9IDI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERh
dGFWaWV3R2V0SW50MzI6CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAg
ICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldFVpbnQzMjoKKyAgICAgICAg
ICAgIGJ5dGVTaXplID0gNDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0
YVZpZXdHZXRGbG9hdDMyOgorICAgICAgICAgICAgYnl0ZVNpemUgPSA0OworICAgICAgICAgICAg
b3AgPSBEYXRhVmlld0dldEZsb2F0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RGF0YVZpZXdHZXRGbG9hdDY0OgorICAgICAgICAgICAgYnl0ZVNpemUgPSA4OworICAgICAgICAg
ICAgb3AgPSBEYXRhVmlld0dldEZsb2F0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisKKyAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgeyB9OworICAgICAgICBkYXRhLmlzTGl0
dGxlRW5kaWFuID0gaXNMaXR0bGVFbmRpYW47CisgICAgICAgIGRhdGEuaXNTaWduZWQgPSBpc1Np
Z25lZDsKKyAgICAgICAgZGF0YS5ieXRlU2l6ZSA9IGJ5dGVTaXplOworCisgICAgICAgIHNldChW
aXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksCisgICAgICAgICAgICBhZGRUb0dyYXBoKG9w
LCBPcEluZm8oZGF0YS5hc1F1YWRXb3JkKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSksIGxpdHRsZUVuZGlhbkNoaWxkKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQ4
OgorICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50ODoKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50MTY6
CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQxNjoKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50MzI6
CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQzMjoKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQz
MjoKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQ2NDogeworICAgICAgICBDUkFTSCgpOworICAg
ICAgICAvLyBPT1BTCisgICAgfQorCiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eUludHJpbnNpYzog
ewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1OCw3ICsxNzU4LDE0IEBAIHZv
aWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIE51bWJlclRv
U3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2Rl
LCBub2RlLT52YWxpZFJhZGl4Q29uc3RhbnQoKSkpOwogICAgICAgICByZXR1cm47Ci0gICAgICAg
IAorCisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6
IHsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgcmVhZChUeXBlZEFycmF5UHJv
cGVydGllcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIExhc3ROb2RlVHlw
ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24g
MjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTgsNiArMzE4LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRl
clB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBE
YXRhVmlld0dldEludDoKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGNhc2UgUHVzaFdpdGhTY29wZToKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjEwNCw2ICsyMTA0LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2Ug
RGF0YVZpZXdHZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDogeworICAgICAg
ICAgICAgZml4RWRnZTxEYXRhVmlld09iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9k
ZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVu
c3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMu
CiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsMTggQEAgc3RydWN0IE5ld0Fy
cmF5QnVmZmVyRGF0YSB7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihJbmRleGluZ1R5cGUpIDw9IHNp
emVvZih1bnNpZ25lZCksICIiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE5ld0FycmF5QnVmZmVy
RGF0YSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOwogCitzdHJ1Y3QgRGF0YVZpZXdEYXRhIHsK
KyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IGJ5dGVT
aXplOworICAgICAgICAgICAgYm9vbCBpc1NpZ25lZDsKKyAgICAgICAgICAgIFRyaVN0YXRlIGlz
TGl0dGxlRW5kaWFuOworICAgICAgICB9OworICAgICAgICB1aW50NjRfdCBhc1F1YWRXb3JkOwor
ICAgIH07Cit9Oworc3RhdGljX2Fzc2VydChzaXplb2YoRGF0YVZpZXdEYXRhKSA9PSBzaXplb2Yo
dWludDY0X3QpLCAiIik7CisKIHN0cnVjdCBCcmFuY2hUYXJnZXQgewogICAgIEJyYW5jaFRhcmdl
dCgpCiAgICAgICAgIDogYmxvY2soMCkKQEAgLTE2NTksNiArMTY3MSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21X
ZWFrTWFwR2V0OgogICAgICAgICBjYXNlIFRvVGhpczoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dl
dEludDoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
MTQzLDYgKzIxNTcsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dW5z
aWduZWQ+KCk7CiAgICAgfQogCisgICAgRGF0YVZpZXdEYXRhIGRhdGFWaWV3RGF0YSgpCisgICAg
eworICAgICAgICAvL0FTU0VSVChvcCgpID09IERhdGFWaWV3R2V0SW50IHx8IG9wKCkgPT0gRGF0
YVZpZXdHZXRGbG9hdCB8fCBvcCgpID09IERhdGFWaWV3U2V0KTsKKyAgICAgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxEYXRhVmlld0RhdGE+KG1fb3BJbmZvLmFzPHVpbnQ2NF90PigpKTsKKyAgICB9
CisKICAgICBib29sIHNob3VsZEdlbmVyYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Jl
ZkNvdW50OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2
aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00ODMsNiArNDgzLDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKICAgICBtYWNybyhGaWx0ZXJHZXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oRmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oRmlsdGVyUHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IC8qIERhdGEgdmlldyBhY2Nlc3MgKi8gXAorICAgIG1hY3JvKERhdGFWaWV3R2V0SW50LCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9h
dCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwKKworICAgIC8vbWFjcm8o
RGF0YVZpZXdTZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIAog
Ly8gVGhpcyBlbnVtIGdlbmVyYXRlcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBpZCBmb3Ig
YWxsIE5vZGUgdHlwZXMsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjM0
ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1MCw3ICs3NTAsOSBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoK
ICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKLSAgICAgICAgY2FzZSBFeHRyYWN0VmFsdWVG
cm9tV2Vha01hcEdldDogeworICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0
OiAKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dl
dEZsb2F0OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhl
YXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAy
MzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgU2V0
T2JqZWN0VXNlOgogICAgICAgICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6CiAgICAgICAgIGNhc2Ug
V2Vha1NldE9iamVjdFVzZToKKyAgICAgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKICAgICAg
ICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOgog
ICAgICAgICBjYXNlIFN0cmluZ1VzZToKQEAgLTYwMiw2ICs2MDMsMTAgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50OgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBPT1BTOiBjYW4gd2UgYWx3YXlzIGRvIHRoaXMgb3Ig
anVzdCBzb21ldGltZXM/CisKICAgICBjYXNlIFNldEFkZDoKICAgICBjYXNlIE1hcFNldDoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NTUzLDYgKzQ1NTMsODMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBjb21waWxlQ2xlYXJDYXRjaExvY2Fscyhub2RlKTsKICAgICAgICAg
YnJlYWs7CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50OiB7CisgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGRhdGFWaWV3KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVn
IGRhdGFWaWV3R1BSID0gZGF0YVZpZXcuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3
T2JqZWN0KG5vZGUtPmNoaWxkMSgpLCBkYXRhVmlld0dQUik7CisKKyAgICAgICAgU3BlY3VsYXRl
SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVn
IGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW5vZGUt
PmNoaWxkMygpKTsgLy8gT09QUworCisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMSh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHQxID0gdGVtcDEuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wMih0aGlzKTsKKyAgICAgICAgR1BSUmVnIHQyID0gdGVtcDIuZ3ByKCk7CisKKyAgICAgICAg
RGF0YVZpZXdEYXRhIGRhdGEgPSBub2RlLT5kYXRhVmlld0RhdGEoKTsKKworICAgICAgICBtX2pp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDIpOworICAgICAgICBpZiAoZGF0YS5ieXRlU2l6
ZSA+IDEpIHsKKyAgICAgICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVT
aXplIC0gMSksIHQyKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMs
IEpTVmFsdWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCB0MiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigw
KSkpOworICAgICAgICB9CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpT
VmFsdWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBpbmRleEdQUiwgdDIpKTsKKworICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHQyKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVNvdXJjZSgpLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCB0MikpOyAvLyBPT1BTOiBhZGQgdGVzdC4gQ2FuIHdlIG5ldXRl
ciBhIEpTRGF0YVZpZXc/CisKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoaW5kZXhH
UFIsIHQxKTsKKyAgICAgICAgYXV0byBiYXNlSW5kZXggPSBKSVRDb21waWxlcjo6QmFzZUluZGV4
KHQyLCB0MSwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzT25lKTsKKyAgICAgICAgc3dpdGNoIChkYXRh
LmJ5dGVTaXplKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGlmIChkYXRhLmlzU2ln
bmVkKQorICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihiYXNlSW5k
ZXgsIHQyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkOChi
YXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgIGludDMyUmVzdWx0KHQyLCBub2RlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKSB7CisgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZDE2KGJhc2VJbmRleCwgdDIpOworICAgICAgICAgICAgICAgIG1faml0LmJ5dGVTd2FwKHQyKTsK
KyAgICAgICAgICAgICAgICBtX2ppdC51cnNoaWZ0MzIoVHJ1c3RlZEltbTMyKDE2KSwgdDIpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkK
KyAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihiYXNlSW5k
ZXgsIHQyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1faml0
LmxvYWQxNihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludDMy
UmVzdWx0KHQyLCBub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ6Cisg
ICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkgeworICAgICAgICAgICAgICAgIG1faml0Lmxv
YWQzMihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVu
ZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5ieXRlU3dh
cCh0Mik7CisgICAgICAgICAgICAgICAgaW50MzJSZXN1bHQodDIsIG5vZGUpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBPT1BTOiBpbXBsZW1lbnQgdGhpcyEKKyAg
ICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisKKyAgICAgICAgLy9SRUxFQVNFX0FTU0VSVChkYXRhLmlzTGl0dGxl
RW5kaWFuID0gVHJ1ZVRyaVN0YXRlKTsgLy8gT09QUworCisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDogeworICAgICAgICBDUkFTSCgpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKICNpZiBFTkFCTEUoRlRMX0pJVCkgICAgICAgIAogICAgIGNhc2Ug
Q2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2FsbFRp
ZXJVcCA9IG1faml0LmJyYW5jaEFkZDMyKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OTAzLDYgKzk5MDMsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlV2Vh
a1NldE9iagogICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSwgb3BlcmFuZC5ncHIoKSk7
CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2Ug
ZWRnZSwgR1BSUmVnIGNlbGwpCit7CisgICAgc3BlY3VsYXRlQ2VsbFR5cGUoZWRnZSwgY2VsbCwg
U3BlY0RhdGFWaWV3T2JqZWN0LCBEYXRhVmlld1R5cGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjRGF0YVZpZXdPYmplY3QpKQorICAgICAgICByZXR1cm47CisK
KyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAgIHNwZWN1
bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOworfQorCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90aGVyKEVkZ2UgZWRnZSkKIHsKICAgICBpZiAo
IW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNPYmplY3QgfCBTcGVjT3RoZXIpKQpAQCAtMTAyNzEs
NiArMTAyODUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAg
ICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgogICAgICAgICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0
KGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgorICAg
ICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBzcGVjdWxhdGVPYmplY3RPck90aGVyKGVk
Z2UpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTYxMCw2
ICsxNjEwLDggQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlV2Vha01hcE9iamVjdChFZGdl
LCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KEVkZ2UpOwog
ICAgIHZvaWQgc3BlY3VsYXRlV2Vha1NldE9iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7CisgICAg
dm9pZCBzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZURh
dGFWaWV3T2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZU9iamVj
dE9yT3RoZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBHUFJS
ZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKEVk
Z2UgZWRnZSwgR1BSUmVnIHN0cmluZywgR1BSUmVnIHN0b3JhZ2UpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQsMTYgKzEwNCwxOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNl
CiAgICAgICAgIG91dC5wcmludCgiRGVyaXZlZEFycmF5Iik7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIE1hcE9iamVjdFVzZToKLSAgICAgICAgb3V0LnByaW50KCJNYXBPYmplY3RVc2UiKTsK
KyAgICAgICAgb3V0LnByaW50KCJNYXBPYmplY3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgU2V0T2JqZWN0VXNlOgotICAgICAgICBvdXQucHJpbnQoIlNldE9iamVjdFVzZSIpOworICAg
ICAgICBvdXQucHJpbnQoIlNldE9iamVjdCIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBX
ZWFrTWFwT2JqZWN0VXNlOgotICAgICAgICBvdXQucHJpbnQoIldlYWtNYXBPYmplY3RVc2UiKTsK
KyAgICAgICAgb3V0LnByaW50KCJXZWFrTWFwT2JqZWN0Iik7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmludCgiV2Vha1NldE9iamVj
dFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIldlYWtTZXRPYmplY3QiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CisgICAgICAgIG91dC5wcmludCgiRGF0
YVZpZXdPYmplY3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgT2JqZWN0T3JPdGhlclVz
ZToKICAgICAgICAgb3V0LnByaW50KCJPYmplY3RPck90aGVyIik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcw
LDcgQEAgZW51bSBVc2VLaW5kIHsKICAgICBTZXRPYmplY3RVc2UsCiAgICAgV2Vha01hcE9iamVj
dFVzZSwKICAgICBXZWFrU2V0T2JqZWN0VXNlLAorICAgIERhdGFWaWV3T2JqZWN0VXNlLAogICAg
IFN0cmluZ09iamVjdFVzZSwKICAgICBTdHJpbmdPclN0cmluZ09iamVjdFVzZSwKICAgICBOb3RT
dHJpbmdWYXJVc2UsCkBAIC0xNjAsNiArMTYxLDggQEAgaW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5
cGVGaWx0ZXJGb3IoVXNlSwogICAgICAgICByZXR1cm4gU3BlY1dlYWtNYXBPYmplY3Q7CiAgICAg
Y2FzZSBXZWFrU2V0T2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gU3BlY1dlYWtTZXRPYmplY3Q7
CisgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmll
d09iamVjdDsKICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNT
dHJpbmdPYmplY3Q7CiAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKQEAgLTI1OSw2
ICsyNjIsNyBAQCBpbmxpbmUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogICAgIGNhc2UgU2V0
T2JqZWN0VXNlOgogICAgIGNhc2UgV2Vha01hcE9iamVjdFVzZToKICAgICBjYXNlIFdlYWtTZXRP
YmplY3RVc2U6CisgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjM0ODcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjksNiArMzY5LDEwIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiAKICAgICAgICAgLy8gcGlwZWxpbmUgZmFpbGVkIHRvIG9wdGltaXplIG91
dCBhbiBJZGVudGl0eS4KICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50
OgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICAgICAgcmV0dXJuIENhbm5vdENvbXBp
bGU7IC8vIE9PUFMhCisKICAgICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6CiAgICAgY2FzZSBD
aGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CkBAIC00
NDUsNiArNDQ5LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoR3JhcGgmIGdyYXBoKQog
ICAgICAgICAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2Ug
V2Vha01hcE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6
CisgICAgICAgICAgICAgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKICAgICAgICAgICAgICAg
ICBjYXNlIEZpbmFsT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgUmVnRXhwT2JqZWN0
VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgUHJveHlPYmplY3RVc2U6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMzQ4
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0NDY4LDYgKzE0NDY4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHNw
ZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CisKKyAgICBMVmFsdWUgbG93RGF0YVZpZXdPYmplY3QoRWRnZSBlZGdlKQorICAg
IHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSk7CisgICAgICAgIHNwZWN1
bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQogICAgIAogICAgIExWYWx1ZSBsb3dTdHJpbmcoRWRnZSBlZGdlLCBPcGVyYW5kU3Bl
Y3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewpA
QCAtMTQ5NDMsNiArMTQ5NTAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFdlYWtTZXRPYmpl
Y3RVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KGVkZ2UpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CisgICAgICAgICAg
ICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdlKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU0MzcsNiArMTU0NDcsMTcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSwgbG93Q2VsbChlZGdlKSk7
CiAgICAgfQorCisgICAgdm9pZCBzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlIGVkZ2UsIExW
YWx1ZSBjZWxsKQorICAgIHsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCisgICAgICAgICAgICBq
c1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNEYXRhVmlld09iamVjdCwgaXNOb3RUeXBlKGNl
bGwsIERhdGFWaWV3VHlwZSkpOworICAgIH0KKworICAgIHZvaWQgc3BlY3VsYXRlRGF0YVZpZXdP
YmplY3QoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3Qo
ZWRnZSwgbG93Q2VsbChlZGdlKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlU3Ry
aW5nKEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzksNiArMjM5LDM4IEBAIGNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljIGlu
dHIKICAgICAgICAgcmV0dXJuICJDUFVDcHVpZEludHJpbnNpYyI7CiAgICAgY2FzZSBDUFVQYXVz
ZUludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJDUFVQYXVzZUludHJpbnNpYyI7CisgICAgY2Fz
ZSBEYXRhVmlld0dldEludDg6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRJbnQ4IjsKKyAg
ICBjYXNlIERhdGFWaWV3R2V0VWludDg6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRVaW50
OCI7CisgICAgY2FzZSBEYXRhVmlld0dldEludDE2OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3
R2V0SW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgICAgIHJldHVybiAi
RGF0YVZpZXdHZXRVaW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQzMjoKKyAgICAgICAg
cmV0dXJuICJEYXRhVmlld0dldEludDMyIjsKKyAgICBjYXNlIERhdGFWaWV3R2V0VWludDMyOgor
ICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0VWludDMyIjsKKyAgICBjYXNlIERhdGFWaWV3R2V0
RmxvYXQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldEZsb2F0MzIiOworICAgIGNhc2Ug
RGF0YVZpZXdHZXRGbG9hdDY0OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0RmxvYXQ2NCI7
CisgICAgY2FzZSBEYXRhVmlld1NldEludDg6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRJ
bnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0VWludDg6CisgICAgICAgIHJldHVybiAiRGF0YVZp
ZXdTZXRVaW50OCI7CisgICAgY2FzZSBEYXRhVmlld1NldEludDE2OgorICAgICAgICByZXR1cm4g
IkRhdGFWaWV3U2V0SW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MTY6CisgICAgICAg
IHJldHVybiAiRGF0YVZpZXdTZXRVaW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQzMjoK
KyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEludDMyIjsKKyAgICBjYXNlIERhdGFWaWV3U2V0
VWludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0VWludDMyIjsKKyAgICBjYXNlIERh
dGFWaWV3U2V0RmxvYXQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEZsb2F0MzIiOwor
ICAgIGNhc2UgRGF0YVZpZXdTZXRGbG9hdDY0OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0
RmxvYXQ2NCI7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50cmluc2ljLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksMjMgQEAgZW51bSBJ
bnRyaW5zaWMgewogICAgIENQVVJkdHNjSW50cmluc2ljLAogICAgIENQVUNwdWlkSW50cmluc2lj
LAogICAgIENQVVBhdXNlSW50cmluc2ljLAorCisgICAgRGF0YVZpZXdHZXRJbnQ4LAorICAgIERh
dGFWaWV3R2V0VWludDgsCisgICAgRGF0YVZpZXdHZXRJbnQxNiwKKyAgICBEYXRhVmlld0dldFVp
bnQxNiwKKyAgICBEYXRhVmlld0dldEludDMyLAorICAgIERhdGFWaWV3R2V0VWludDMyLAorICAg
IERhdGFWaWV3R2V0RmxvYXQzMiwKKyAgICBEYXRhVmlld0dldEZsb2F0NjQsCisgICAgRGF0YVZp
ZXdTZXRJbnQ4LAorICAgIERhdGFWaWV3U2V0VWludDgsCisgICAgRGF0YVZpZXdTZXRJbnQxNiwK
KyAgICBEYXRhVmlld1NldFVpbnQxNiwKKyAgICBEYXRhVmlld1NldEludDMyLAorICAgIERhdGFW
aWV3U2V0VWludDMyLAorICAgIERhdGFWaWV3U2V0RmxvYXQzMiwKKyAgICBEYXRhVmlld1NldEZs
b2F0NjQsCiB9OwogCiBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICsz
OSwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogLyogU291cmNlIGZvciBKU0RhdGFWaWV3UHJvdG90
eXBlLmx1dC5oCiBAYmVnaW4gZGF0YVZpZXdUYWJsZQotICBnZXRJbnQ4ICAgICAgICAgICAgICAg
ZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAg
ICAgIDEKLSAgZ2V0VWludDggICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDgg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldEludDE2ICAgICAgICAg
ICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDE2ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gICAgICAgMQotICBnZXRVaW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRV
aW50MTYgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0SW50MzIgICAg
ICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MzIgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAgICAgICAxCi0gIGdldFVpbnQzMiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVu
Y0dldFVpbnQzMiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRGbG9h
dDMyICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDMyICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0RmxvYXQ2NCAgICAgICAgICAgIGRhdGFWaWV3UHJv
dG9GdW5jR2V0RmxvYXQ2NCAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIHNl
dEludDggICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEludDggICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRVaW50OCAgICAgICAgICAgICAgZGF0YVZp
ZXdQcm90b0Z1bmNTZXRVaW50OCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIK
LSAgc2V0SW50MTYgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldFVpbnQxNiAgICAgICAgICAgICBk
YXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAg
ICAgMgotICBzZXRJbnQzMiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMiAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0VWludDMyICAgICAgICAg
ICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAgICAgICAyCi0gIHNldEZsb2F0MzIgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEZs
b2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRGbG9hdDY0ICAg
ICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uICAgICAgIDIKKyAgZ2V0SW50OCAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5j
R2V0SW50OCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dl
dEludDgKKyAgZ2V0VWludDggICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDgg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldFVpbnQ4Cisg
IGdldEludDE2ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDE2ICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRJbnQxNgorICBnZXRVaW50
MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0VWludDE2CisgIGdldEludDMyICAgICAg
ICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDMyICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRJbnQzMgorICBnZXRVaW50MzIgICAgICAgICAgICAg
ZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAg
ICAgIDEgIERhdGFWaWV3R2V0VWludDMyCisgIGdldEZsb2F0MzIgICAgICAgICAgICBkYXRhVmll
d1Byb3RvRnVuY0dldEZsb2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAg
RGF0YVZpZXdHZXRGbG9hdDMyCisgIGdldEZsb2F0NjQgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
RnVuY0dldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZp
ZXdHZXRGbG9hdDY0CisgIHNldEludDggICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1Nl
dEludDggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRJ
bnQ4CisgIHNldFVpbnQ4ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4ICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRVaW50OAorICBz
ZXRJbnQxNiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQxNiAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0SW50MTYKKyAgc2V0VWludDE2
ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2ICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldFVpbnQxNgorICBzZXRJbnQzMiAgICAgICAg
ICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uICAgICAgIDIgIERhdGFWaWV3U2V0SW50MzIKKyAgc2V0VWludDMyICAgICAgICAgICAgIGRh
dGFWaWV3UHJvdG9GdW5jU2V0VWludDMyICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAg
ICAyICBEYXRhVmlld1NldFVpbnQzMgorICBzZXRGbG9hdDMyICAgICAgICAgICAgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRGbG9hdDMyICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERh
dGFWaWV3U2V0RmxvYXQzMgorICBzZXRGbG9hdDY0ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1
bmNTZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3
U2V0RmxvYXQ2NAogICBidWZmZXIgICAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ1
ZmZlciAgICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yICAgICAgIDAKICAgYnl0ZUxlbmd0aCAg
ICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoICAgICAgICBEb250RW51bXxB
Y2Nlc3NvciAgICAgICAwCiAgIGJ5dGVPZmZzZXQgICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0
dGVyQnl0ZU9mZnNldCAgICAgICAgRG9udEVudW18QWNjZXNzb3IgICAgICAgMApJbmRleDogU291
cmNlL1dURi93dGYvVHJpU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9UcmlT
dGF0ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1lbnVt
IFRyaVN0YXRlIHsKK2VudW0gVHJpU3RhdGUgOiBpbnQ4X3QgewogICAgIEZhbHNlVHJpU3RhdGUs
CiAgICAgVHJ1ZVRyaVN0YXRlLAogICAgIE1peGVkVHJpU3RhdGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347334</attachid>
            <date>2018-08-16 19:10:28 -0700</date>
            <delta_ts>2018-08-16 20:00:18 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>39046</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3LWppdC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL3N0cmVzcy9kYXRhdmlldy1qaXQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJl
c3MvZGF0YXZpZXctaml0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE5IEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJC
YWQhIik7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIC8vIE9PUFM6IGFkZCB1bnNpZ25l
ZCB0ZXN0CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8u
Z2V0SW50MzIoaSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShiaWdFbmRpYW4pOworICAg
IGZ1bmN0aW9uIGxpdHRsZUVuZGlhbihvLCBpKSB7CisgICAgICAgIHJldHVybiBvLmdldEludDMy
KGksIHRydWUpOworICAgIH0KKyAgICBub0lubGluZShsaXR0bGVFbmRpYW4pOworICAgIGZ1bmN0
aW9uIGJpRW5kaWFuKG8sIGksIGIpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0SW50MzIoaSwgYik7
CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAgIGxldCBhYiA9IG5ldyBBcnJh
eUJ1ZmZlcig0KTsKKyAgICBsZXQgdGEgPSBuZXcgSW50MzJBcnJheShhYik7CisgICAgdGFbMF0g
PSAweDAxMDIwMzA0OworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihk
diwgMCkgPT09IDB4MDQwMzAyMDEpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAw
KSA9PT0gMHgwMTAyMDMwNCk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFzc2Vy
dChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwNDAzMDIwMSk7
CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAweDA0MDMwMjAxKTsKKyAgICAgICAgYXNzZXJ0
KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAxMDIwMzA0
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxz
ZSkgPT09IDB4MDQwMzAyMDEpOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgdGhl
IHJpZ2h0IHNpZ24uCisgICAgdGFbMF0gPSAtMzIzNjEzODY7IC8vIDB4ZmUxMjM0NTYKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlh
bihkdiwgMCkgPT09IDB4NTYzNDEyZmUpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2
LCAwKSA9PT0gLTMyMzYxMzg2KTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNz
ZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVlKSA9PT0gLTMyMzYxMzg2KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IDB4NTYzNDEyZmUp
OworICAgIH0KKworICAgIC8vIC0yMTQ2MjkwNjAyID09IChpbnQpMHg4MDEyMzQ1NgorICAgIHRh
WzBdID0gMHg1NjM0MTI4MDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsK
KyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT09IC0yMTQ2MjkwNjAyKTsKKyAgICAg
ICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4NTYzNDEyODApOworICAgICAgICBp
ZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAw
eDU2MzQxMjgwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2
LCAwLCBmYWxzZSkgPT09IC0yMTQ2MjkwNjAyKTsKKyAgICB9Cit9Cit0ZXN0MSgpOworCitmdW5j
dGlvbiB0ZXN0MigpIHsKKyAgICAvLyBPT1BTOiBhZGQgdW5zaWduZWQgdGVzdAorICAgIGZ1bmN0
aW9uIGJpZ0VuZGlhbihvLCBpKSB7CisgICAgICAgIHJldHVybiBvLmdldEludDE2KGksIGZhbHNl
KTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlnRW5kaWFuKTsKKyAgICBmdW5jdGlvbiBsaXR0bGVF
bmRpYW4obywgaSkgeworICAgICAgICByZXR1cm4gby5nZXRJbnQxNihpLCB0cnVlKTsKKyAgICB9
CisgICAgbm9JbmxpbmUobGl0dGxlRW5kaWFuKTsKKyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBp
LCBiKSB7CisgICAgICAgIHJldHVybiBvLmdldEludDE2KGksIGIpOworICAgIH0KKyAgICBub0lu
bGluZShiaUVuZGlhbik7CisKKyAgICBsZXQgYWIgPSBuZXcgQXJyYXlCdWZmZXIoMik7CisgICAg
bGV0IHRhID0gbmV3IEludDE2QXJyYXkoYWIpOworICAgIHRhWzBdID0gMHgwMTAyOworICAgIGxl
dCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
OyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT09IDB4MDIwMSk7Cisg
ICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYsIDApID09PSAweDAxMDIpOworICAgICAgICBp
ZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAw
eDAxMDIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAs
IGZhbHNlKSA9PT0gMHgwMjAxKTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBzaWduLgorICAgIHRh
WzBdID0gLTUxMjsgLy8gMHhmZTAwCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAweDAwZmUpOworICAgICAg
ICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9PT0gLTUxMik7CisgICAgICAgIGlmIChpICUg
MikKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IC01MTIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9
PT0gMHgwMGZlKTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBzaWduIGV4dGVuc2lvbi4KKyAgICB0
YVswXSA9IDB4MDBmZTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAg
ICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT09IC01MTIpOworICAgICAgICBhc3NlcnQo
bGl0dGxlRW5kaWFuKGR2LCAwKSA9PT0gMHgwMGZlKTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAg
ICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVlKSA9PT0gMHgwMGZlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IC01
MTIpOworICAgIH0KK30KK3Rlc3QyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lv
biAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw2ICs0MDgsMTYgQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5wb3BjbnRfcnIoc3JjLCBkc3QpOwogICAgIH0KIAorICAg
IHZvaWQgYnl0ZVN3YXAzMihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmJzd2FwbF9yKGRzdCk7CisgICAgfQorCisgICAgdm9pZCBieXRlU3dhcDE2KFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm9sd19pOHIoOCwgZHN0KTsKKyAg
ICB9CisKICAgICAvLyBPbmx5IHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgdm9pZCBp
bGxlZ2FsSW5zdHJ1Y3Rpb24oKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzM3LDYgKzMzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAg
PSAweEMwLAogICAgICAgICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1Ay
X1BFWFRSV19HZFVkSWIgICA9IDB4QzUsCisgICAgICAgIE9QMl9CU1dBUCAgICAgICAgICAgPSAw
eEM4LAogICAgICAgICBPUDJfUFNMTFFfVWRxSWIgICAgID0gMHg3MywKICAgICAgICAgT1AyX1BT
UkxRX1VkcUliICAgICA9IDB4NzMsCiAgICAgICAgIE9QMl9QT1JfVmRxV2RxICAgICAgPSAwWEVC
LApAQCAtMTYzOCw2ICsxNjM5LDExIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAgIHZv
aWQgYnN3YXBsX3IoUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3AoT1AyX0JTV0FQLCBkc3QpOworICAgIH0KKwogICAgIHZvaWQgdHpjbnRfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9TU0VfRjMpOwpAQCAtMTcwMSw2ICsxNzA3LDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgICAgIH0KICAgICB9CisK
KyAgICB0ZW1wbGF0ZTxHcm91cE9wY29kZUlEIG9wPgorICAgIHZvaWQgc2hpZnRJbnN0cnVjdGlv
bjE2KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoaW1tID09IDEpCisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2MSwgb3AsIGRzdCk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9F
dkliLCBvcCwgZHN0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KIHB1YmxpYzoKIAogICAgIHZvaWQgc2FybF9pOHIoaW50IGltbSwg
UmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzUzLDYgKzE3NzEsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2Q0wsIEdST1VQMl9PUF9ST0wsIGRzdCk7
CiAgICAgfQogCisgICAgdm9pZCByb2x3X2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb24xNjxHUk9VUDJfT1BfUk9MPihpbW0sIGRzdCk7
CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8R3JvdXBP
cGNvZGVJRCBvcD4KQEAgLTQzMzMsNiArNDM1NiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
d3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcpCisgICAgICAgIHsK
KyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZl
cik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKDAsIDAsIHJlZyk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAg
ICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlICsgKHJlZyAmIDcpKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGlu
dCByZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAgIHsKICAgICAgICAgICAgIFNpbmdsZUluc3Ry
dWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHJldmlzaW9uIDIz
NDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsMTEgQEAgdm9pZCBkdW1wU3BlY3VsYXRp
b24oUHJpbnRTdHJlYW0mIG91dFN0cgogICAgICAgICAgICAgICAgIHN0ck91dC5wcmludCgiRGVy
aXZlZEFycmF5Iik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXNUb3AgPSBm
YWxzZTsKKworICAgICAgICAgICAgaWYgKHZhbHVlICYgU3BlY0RhdGFWaWV3T2JqZWN0KQorICAg
ICAgICAgICAgICAgIHN0ck91dC5wcmludCgiRGF0YVZpZXciKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCh2YWx1ZSAmIFNwZWNTdHJpbmcpID09IFNwZWNTdHJpbmcpCkBAIC00MzIsNiArNDM3LDkgQEAg
U3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKAogCiAgICAgaWYgKGNsYXNz
SW5mbyA9PSBQcm94eU9iamVjdDo6aW5mbygpKQogICAgICAgICByZXR1cm4gU3BlY1Byb3h5T2Jq
ZWN0OworCisgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0RhdGFWaWV3OjppbmZvKCkpCisgICAgICAg
IHJldHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNT
dWJDbGFzc09mKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9
PSBKU0JvdW5kRnVuY3Rpb246OmluZm8oKSkKQEAgLTU1OSw2ICs1NjcsOCBAQCBTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUCiAgICAgICAgIHJldHVybiBTcGVjV2Vha01h
cE9iamVjdDsKICAgICBjYXNlIEpTV2Vha1NldFR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjV2Vh
a1NldE9iamVjdDsKKyAgICBjYXNlIERhdGFWaWV3VHlwZToKKyAgICAgICAgcmV0dXJuIFNwZWNE
YXRhVmlld09iamVjdDsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CkBAIC03NTAsNiArNzYwLDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25G
cm9tU3RyaW5nKGNvbgogICAgICAgICByZXR1cm4gU3BlY1Byb3h5T2JqZWN0OwogICAgIGlmICgh
c3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEZXJpdmVkQXJyYXkiLCBzdHJsZW4oIlNwZWNEZXJp
dmVkQXJyYXkiKSkpCiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFycmF5OworICAgIGlmICgh
c3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEYXRhVmlld09iamVjdCIsIHN0cmxlbigiU3BlY0Rh
dGFWaWV3T2JqZWN0IikpKQorICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAg
IGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNPYmplY3RPdGhlciIsIHN0cmxlbigiU3Bl
Y09iamVjdE90aGVyIikpKQogICAgICAgICByZXR1cm4gU3BlY09iamVjdE90aGVyOwogICAgIGlm
ICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNPYmplY3QiLCBzdHJsZW4oIlNwZWNPYmplY3Qi
KSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDYgQEAgc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNXZWFrU2V0Twogc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNQcm94eU9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8
IDIxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBQcm94eSBvYmplY3Qgb3Igb25lIG9mIGl0cyBzdWJj
bGFzc2VzLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEZXJpdmVkQXJyYXkgICAg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBEZXJp
dmVkQXJyYXkgb2JqZWN0Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3RP
dGhlciAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIzOyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gb2JqZWN0IGJ1dCBub3QgSlNGaW5hbE9iamVjdCwgSlNBcnJheSwgb3IgSlNGdW5jdGlv
bi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9u
IHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRB
cmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNNYXBP
YmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9i
amVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3Ro
ZXI7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHBy
ZWRpY3Rpb24uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAg
ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpT
U3RyaW5nLCBhbmQgaXQncyBhbiBpZGVudGlmaWVyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNTdHJpbmdWYXIgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDI1OyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIu
CiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IFNwZWNTdHJpbmdJZGVudCB8IFNwZWNTdHJpbmdWYXI7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEpTU3RyaW5nLgpAQCAtOTMsNyArOTIsOSBAQCBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY090aGVyICAgCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01p
c2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb29sZWFuIHwgU3BlY090aGVy
OyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwgb3IgVW5kZWZpbmVk
Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAxdWxsIDw8IDM3OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFs
dWUgbWFya2VyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM4OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBC
aWdJbnQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzk7IC8vIEl0J3MgZGVmaW5pdGVseSBh
IEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAg
ICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5
dGVjb2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGFueSBub24tT2Jq
ZWN0IEpTVmFsdWUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8IFNwZWNBcnJheSB8IFNw
ZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJlY3RBcmd1bWVudHMgfCBT
cGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNwZWNSZWdFeHBPYmplY3Qg
fCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3Bl
Y1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3Bl
Y09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRl
c3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgogc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVj
T2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0Jp
Z0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8
IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBh
Ym92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgog
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgICAgICAg
ICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFueSBvZiB0
aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5h
Ti4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2RlIGxvY2Fs
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNzcwLDkgKzM3NzAsMjQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKLSAgICAgICAgYnJlYWs7CiAKKyAgICBj
YXNlIERhdGFWaWV3R2V0SW50OiB7CisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbm9kZS0+
ZGF0YVZpZXdEYXRhKCk7CisgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplIDwgNCkKKyAgICAgICAg
ICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBpZiAoIShub2RlLT5wcmVkaWN0aW9uKCkgJiB+U3BlY0ludDMy
T25seSkpCisgICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJ
bnQzMk9ubHkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldE5vbkNlbGxU
eXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVEb3VibGUpOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKKyAgICAgICAgc2V0
Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNGdWxsRG91YmxlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgICAgICAKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICAvLyBJdCBt
YXkgYmUgdGhhdCBkdXJpbmcgYSBwcmV2aW91cyBydW4gb2YgQUkgd2UgcHJvdmVkIHRoYXQgc29t
ZXRoaW5nIHdhcyB1bnJlYWNoYWJsZSwgYnV0CiAgICAgICAgIC8vIGR1cmluZyB0aGlzIHJ1biBv
ZiBBSSB3ZSBmb3JnZXQgdGhhdCBpdCdzIHVucmVhY2hhYmxlLiBBSSdzIHByb29mcyBkb24ndCBo
YXZlIHRvIGdldApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDc5LDYgKzMw
NzksOTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50ODoKKyAgICBj
YXNlIERhdGFWaWV3R2V0VWludDg6CisgICAgY2FzZSBEYXRhVmlld0dldEludDE2OgorICAgIGNh
c2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgY2FzZSBEYXRhVmlld0dldEludDMyOgorICAgIGNh
c2UgRGF0YVZpZXdHZXRVaW50MzI6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0MzI6CisgICAg
Y2FzZSBEYXRhVmlld0dldEZsb2F0NjQ6IHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIDwgMikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGluc2VydENo
ZWNrcygpOworCisgICAgICAgIHVpbnQ4X3QgYnl0ZVNpemU7CisgICAgICAgIE5vZGVUeXBlIG9w
ID0gRGF0YVZpZXdHZXRJbnQ7CisgICAgICAgIGJvb2wgaXNTaWduZWQgPSBmYWxzZTsKKyAgICAg
ICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDg6Cisg
ICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAg
ICAgICAgY2FzZSBEYXRhVmlld0dldFVpbnQ4OgorICAgICAgICAgICAgYnl0ZVNpemUgPSAxOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDE2OgorICAg
ICAgICAgICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAg
ICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDI7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50MzI6CisgICAg
ICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAg
ICAgY2FzZSBEYXRhVmlld0dldFVpbnQzMjoKKyAgICAgICAgICAgIGJ5dGVTaXplID0gNDsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDMyOgorICAg
ICAgICAgICAgYnl0ZVNpemUgPSA0OworICAgICAgICAgICAgb3AgPSBEYXRhVmlld0dldEZsb2F0
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDY0Ogor
ICAgICAgICAgICAgYnl0ZVNpemUgPSA4OworICAgICAgICAgICAgb3AgPSBEYXRhVmlld0dldEZs
b2F0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgVHJpU3Rh
dGUgaXNMaXR0bGVFbmRpYW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICBOb2RlKiBsaXR0bGVF
bmRpYW5DaGlsZCA9IG51bGxwdHI7CisgICAgICAgIGlmIChieXRlU2l6ZSA+IDEpIHsKKyAgICAg
ICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IDMpCisgICAgICAgICAgICAg
ICAgaXNMaXR0bGVFbmRpYW4gPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgbGl0dGxlRW5kaWFuQ2hpbGQgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoMiwgcmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBpZiAobGl0dGxl
RW5kaWFuQ2hpbGQtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZSBjb25zdGFudCA9IGxpdHRsZUVuZGlhbkNoaWxkLT5jb25zdGFudCgpLT52YWx1ZSgpOworICAg
ICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IGNvbnN0YW50LnB1cmVUb0Jvb2xlYW4o
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGl0dGxlRW5kaWFuICE9IE1peGVkVHJpU3Rh
dGUpCisgICAgICAgICAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IG51bGxwdHI7
CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5k
aWFuID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisKKyAgICAg
ICAgRGF0YVZpZXdEYXRhIGRhdGEgeyB9OworICAgICAgICBkYXRhLmlzTGl0dGxlRW5kaWFuID0g
aXNMaXR0bGVFbmRpYW47CisgICAgICAgIGRhdGEuaXNTaWduZWQgPSBpc1NpZ25lZDsKKyAgICAg
ICAgZGF0YS5ieXRlU2l6ZSA9IGJ5dGVTaXplOworCisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0
ZXIocmVzdWx0T3BlcmFuZCksCisgICAgICAgICAgICBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZGF0
YS5hc1F1YWRXb3JkKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSksIGxpdHRsZUVuZGlhbkNoaWxkKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQ4OgorICAgIGNhc2Ug
RGF0YVZpZXdTZXRVaW50ODoKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50MTY6CisgICAgY2FzZSBE
YXRhVmlld1NldFVpbnQxNjoKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50MzI6CisgICAgY2FzZSBE
YXRhVmlld1NldFVpbnQzMjoKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQzMjoKKyAgICBjYXNl
IERhdGFWaWV3U2V0RmxvYXQ2NDogeworICAgICAgICBDUkFTSCgpOworICAgICAgICAvLyBPT1BT
CisgICAgfQorCiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eUludHJpbnNpYzogewogICAgICAgICBp
ZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1OCw3ICsxNzU4LDE0IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZh
bGlkUmFkaXhDb25zdGFudDoKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT52YWxp
ZFJhZGl4Q29uc3RhbnQoKSkpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCisgICAgY2Fz
ZSBEYXRhVmlld0dldEZsb2F0OgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6IHsKKyAgICAgICAg
cmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgcmVhZChUeXBlZEFycmF5UHJvcGVydGllcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTgsNiArMzE4LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBEYXRhVmlld0dldElu
dDoKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGNhc2UgUHVzaFdpdGhTY29wZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwNCw2ICsy
MTA0LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJ
bnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDogeworICAgICAgICAgICAgZml4RWRn
ZTxEYXRhVmlld09iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MygpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQzKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5v
Ym9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNh
c2UgU2V0QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2
aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsMTggQEAgc3RydWN0IE5ld0FycmF5QnVmZmVyRGF0
YSB7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihJbmRleGluZ1R5cGUpIDw9IHNpemVvZih1bnNpZ25l
ZCksICIiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE5ld0FycmF5QnVmZmVyRGF0YSkgPT0gc2l6
ZW9mKHVpbnQ2NF90KSwgIiIpOwogCitzdHJ1Y3QgRGF0YVZpZXdEYXRhIHsKKyAgICB1bmlvbiB7
CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IGJ5dGVTaXplOworICAgICAg
ICAgICAgYm9vbCBpc1NpZ25lZDsKKyAgICAgICAgICAgIFRyaVN0YXRlIGlzTGl0dGxlRW5kaWFu
OworICAgICAgICB9OworICAgICAgICB1aW50NjRfdCBhc1F1YWRXb3JkOworICAgIH07Cit9Owor
c3RhdGljX2Fzc2VydChzaXplb2YoRGF0YVZpZXdEYXRhKSA9PSBzaXplb2YodWludDY0X3QpLCAi
Iik7CisKIHN0cnVjdCBCcmFuY2hUYXJnZXQgewogICAgIEJyYW5jaFRhcmdldCgpCiAgICAgICAg
IDogYmxvY2soMCkKQEAgLTE2NTksNiArMTY3MSw4IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBH
ZXREeW5hbWljVmFyOgogICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0Ogog
ICAgICAgICBjYXNlIFRvVGhpczoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICAg
ICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTQzLDYgKzIxNTcs
MTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dW5zaWduZWQ+KCk7CiAg
ICAgfQogCisgICAgRGF0YVZpZXdEYXRhIGRhdGFWaWV3RGF0YSgpCisgICAgeworICAgICAgICAv
L0FTU0VSVChvcCgpID09IERhdGFWaWV3R2V0SW50IHx8IG9wKCkgPT0gRGF0YVZpZXdHZXRGbG9h
dCB8fCBvcCgpID09IERhdGFWaWV3U2V0KTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxE
YXRhVmlld0RhdGE+KG1fb3BJbmZvLmFzPHVpbnQ2NF90PigpKTsKKyAgICB9CisKICAgICBib29s
IHNob3VsZEdlbmVyYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjM0ODcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00ODMsNiArNDgzLDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhGaWx0ZXJHZXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oRmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
RmlsdGVyUHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIC8qIERhdGEgdmll
dyBhY2Nlc3MgKi8gXAorICAgIG1hY3JvKERhdGFWaWV3R2V0SW50LCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9hdCwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwKKworICAgIC8vbWFjcm8oRGF0YVZpZXdTZXQs
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIAogLy8gVGhpcyBlbnVt
IGdlbmVyYXRlcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBpZCBmb3IgYWxsIE5vZGUgdHlw
ZXMsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc1MCw3ICs3NTAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICAgICAgY2Fz
ZSBHZXRQcm90b3R5cGVPZjoKLSAgICAgICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdl
dDogeworICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OiAKKyAgICAgICAg
Y2FzZSBEYXRhVmlld0dldEludDoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OiB7CiAg
ICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9u
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgog
ICAgICAgICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgV2Vha1NldE9iamVj
dFVzZToKKyAgICAgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKICAgICAgICAgY2FzZSBPYmpl
Y3RPck90aGVyVXNlOgogICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOgogICAgICAgICBjYXNl
IFN0cmluZ1VzZToKQEAgLTYwMiw2ICs2MDMsMTAgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBjYXNl
IERhdGFWaWV3R2V0SW50OgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOyAvLyBPT1BTOiBjYW4gd2UgYWx3YXlzIGRvIHRoaXMgb3IganVzdCBzb21ldGlt
ZXM/CisKICAgICBjYXNlIFNldEFkZDoKICAgICBjYXNlIE1hcFNldDoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTUzLDYg
KzQ1NTMsMTI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZUNsZWFyQ2F0Y2hMb2NhbHMobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBEYXRhVmlld0dldEludDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBk
YXRhVmlldyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBkYXRhVmlld0dQ
UiA9IGRhdGFWaWV3LmdwcigpOworICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChub2Rl
LT5jaGlsZDEoKSwgZGF0YVZpZXdHUFIpOworCisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCBpbmRleCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBpbmRleEdQUiA9
IGluZGV4LmdwcigpOworCisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMSh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIHQxID0gdGVtcDEuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0
aGlzKTsKKyAgICAgICAgR1BSUmVnIHQyID0gdGVtcDIuZ3ByKCk7CisKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxTcGVjdWxhdGVCb29sZWFuT3BlcmFuZD4gaXNMaXR0bGVFbmRpYW5PcGVyYW5kOwor
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCisgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbk9w
ZXJhbmQuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAgICAgIEdQUlJlZyBpc0xp
dHRsZUVuZGlhbkdQUiA9IGlzTGl0dGxlRW5kaWFuT3BlcmFuZCA/IGlzTGl0dGxlRW5kaWFuT3Bl
cmFuZC0+Z3ByKCkgOiBJbnZhbGlkR1BSUmVnOworCisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRh
ID0gbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CisKKyAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIHQyKTsKKyAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKSB7CisgICAgICAg
ICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBu
b2RlLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNz
VGhhbiwgdDIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgfQor
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBub2Rl
LAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFu
T3JFcXVhbCwgaW5kZXhHUFIsIHQyKSk7CisKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVj
dG9yKCkpLCB0Mik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVTb3VyY2UoKSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgdDIpKTsgLy8gT09QUzogYWRkIHRlc3QuIENhbiB3ZSBuZXV0ZXIgYSBKU0RhdGFWaWV3Pwor
CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGluZGV4R1BSLCB0MSk7CisgICAgICAg
IGF1dG8gYmFzZUluZGV4ID0gSklUQ29tcGlsZXI6OkJhc2VJbmRleCh0MiwgdDEsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc09uZSk7CisgICAgICAgIHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAg
ICAgICBjYXNlIDE6CisgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkOFNpZ25lZEV4dGVuZFRvMzIoYmFzZUluZGV4LCB0Mik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoYmFzZUluZGV4LCB0Mik7Cisg
ICAgICAgICAgICBpbnQzMlJlc3VsdCh0Miwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAyOiB7CisgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Mb2FkID0g
WyZdIHsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihiYXNlSW5kZXgsIHQyKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQxNihiYXNlSW5k
ZXgsIHQyKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5M
b2FkID0gWyZdIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMTYoYmFzZUluZGV4LCB0Mik7
CisgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAxNih0Mik7CisgICAgICAgICAgICAgICAg
aWYgKGRhdGEuaXNTaWduZWQpCisgICAgICAgICAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQx
NlRvMzIodDIsIHQyKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmIChkYXRhLmlz
TGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZW1pdEJpZ0Vu
ZGlhbkxvYWQoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0g
VHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Mb2FkKCk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGlzQmlnRW5kaWFuID0gbV9q
aXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwg
VHJ1c3RlZEltbTMyKDEpKTsKKyAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuTG9hZCgp
OworICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAg
ICAgICBpc0JpZ0VuZGlhbi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgZW1pdEJpZ0Vu
ZGlhbkxvYWQoKTsKKyAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGludDMyUmVzdWx0KHQyLCBub2RlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgNDogeworICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKGJhc2VJbmRleCwgdDIpOworCisgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlh
biA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIG1faml0LmJ5dGVTd2FwMzIodDIp
OworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBNaXhlZFRyaVN0
YXRlKSB7CisgICAgICAgICAgICAgICAgbV9qaXQubm9wKCk7CisgICAgICAgICAgICAgICAgYXV0
byBpc0xpdHRsZUVuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgaXNMaXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAg
ICAgbV9qaXQuYnl0ZVN3YXAzMih0Mik7CisgICAgICAgICAgICAgICAgbV9qaXQubm9wKCk7Cisg
ICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4ubGluaygmbV9qaXQpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICBpbnQz
MlJlc3VsdCh0Miwgbm9kZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBi
b29sIHJlc3VsdElzSW50MzIgPSAhKG5vZGUtPnByZWRpY3Rpb24oKSAmIH5TcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0SXNJbnQzMikgeworICAgICAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCksIG5vZGUs
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgdDIsIFRydXN0ZWRJbW0z
MigwKSkpOworICAgICAgICAgICAgICAgICAgICBpbnQzMlJlc3VsdCh0Miwgbm9kZSk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gT09QUzogRG8gSSBu
ZWVkIHRoaXMgZ2l2ZW4gYWJvdmU/CisgICAgICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRl
bmQzMlRvUHRyKHQyLCB0Mik7CisKKyAgICAgICAgICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IGZw
VGVtcCh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3Vi
bGUodDIsIGZwVGVtcC5mcHIoKSk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmJveERvdWJs
ZShmcFRlbXAuZnByKCksIHQyKTsKKyAgICAgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh0
Miwgbm9kZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vUkVMRUFTRV9B
U1NFUlQoZGF0YS5pc0xpdHRsZUVuZGlhbiA9IFRydWVUcmlTdGF0ZSk7IC8vIE9PUFMKKworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKKyAgICAg
ICAgQ1JBU0goKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAjaWYgRU5BQkxFKEZUTF9KSVQp
ICAgICAgICAKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOiB7CiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGNhbGxUaWVyVXAgPSBtX2ppdC5icmFuY2hBZGQzMigKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lv
biAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTkwMyw2ICs5OTAzLDIwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZVdlYWtTZXRPYmoKICAgICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KGVk
Z2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVE
YXRhVmlld09iamVjdChFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQoreworICAgIHNwZWN1bGF0ZUNl
bGxUeXBlKGVkZ2UsIGNlbGwsIFNwZWNEYXRhVmlld09iamVjdCwgRGF0YVZpZXdUeXBlKTsKK30K
Kwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSBlZGdl
KQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0RhdGFWaWV3T2JqZWN0KSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlz
LCBlZGdlKTsKKyAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlLCBvcGVyYW5kLmdwcigp
KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0T3JPdGhlcihFZGdl
IGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjT2JqZWN0IHwgU3Bl
Y090aGVyKSkKQEAgLTEwMjcxLDYgKzEwMjg1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlKE5vZGUqLCBFZAogICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKICAgICAgICAgc3Bl
Y3VsYXRlV2Vha1NldE9iamVjdChlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEYXRh
Vmlld09iamVjdFVzZToKKyAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRnZSk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgc3BlY3Vs
YXRlT2JqZWN0T3JPdGhlcihlZGdlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyMzQ4NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTE2MTAsNiArMTYxMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNwZWN1bGF0
ZVdlYWtNYXBPYmplY3QoRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlV2Vh
a1NldE9iamVjdChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoRWRnZSwg
R1BSUmVnIGNlbGwpOworICAgIHZvaWQgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSk7Cisg
ICAgdm9pZCBzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAg
dm9pZCBzcGVjdWxhdGVPYmplY3RPck90aGVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlU3Ry
aW5nKEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nSWRl
bnRBbmRMb2FkU3RvcmFnZShFZGdlIGVkZ2UsIEdQUlJlZyBzdHJpbmcsIEdQUlJlZyBzdG9yYWdl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAkocmV2aXNp
b24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA0LDE2ICsxMDQsMTkgQEAgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIFVzZQogICAgICAgICBvdXQucHJpbnQoIkRlcml2ZWRBcnJheSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBNYXBPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmlu
dCgiTWFwT2JqZWN0VXNlIik7CisgICAgICAgIG91dC5wcmludCgiTWFwT2JqZWN0Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIFNldE9iamVjdFVzZToKLSAgICAgICAgb3V0LnByaW50KCJT
ZXRPYmplY3RVc2UiKTsKKyAgICAgICAgb3V0LnByaW50KCJTZXRPYmplY3QiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgV2Vha01hcE9iamVjdFVzZToKLSAgICAgICAgb3V0LnByaW50KCJX
ZWFrTWFwT2JqZWN0VXNlIik7CisgICAgICAgIG91dC5wcmludCgiV2Vha01hcE9iamVjdCIpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgotICAgICAgICBvdXQu
cHJpbnQoIldlYWtTZXRPYmplY3RVc2UiKTsKKyAgICAgICAgb3V0LnByaW50KCJXZWFrU2V0T2Jq
ZWN0Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgorICAg
ICAgICBvdXQucHJpbnQoIkRhdGFWaWV3T2JqZWN0Iik7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIE9iamVjdE9yT3RoZXJVc2U6CiAgICAgICAgIG91dC5wcmludCgiT2JqZWN0T3JPdGhlciIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHJldmlzaW9uIDIz
NDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MCw2ICs3MCw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgU2V0T2JqZWN0VXNl
LAogICAgIFdlYWtNYXBPYmplY3RVc2UsCiAgICAgV2Vha1NldE9iamVjdFVzZSwKKyAgICBEYXRh
Vmlld09iamVjdFVzZSwKICAgICBTdHJpbmdPYmplY3RVc2UsCiAgICAgU3RyaW5nT3JTdHJpbmdP
YmplY3RVc2UsCiAgICAgTm90U3RyaW5nVmFyVXNlLApAQCAtMTYwLDYgKzE2MSw4IEBAIGlubGlu
ZSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRm9yKFVzZUsKICAgICAgICAgcmV0dXJuIFNwZWNX
ZWFrTWFwT2JqZWN0OwogICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKICAgICAgICAgcmV0dXJu
IFNwZWNXZWFrU2V0T2JqZWN0OworICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CisgICAgICAg
IHJldHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAg
ICAgICAgIHJldHVybiBTcGVjU3RyaW5nT2JqZWN0OwogICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdP
YmplY3RVc2U6CkBAIC0yNTksNiArMjYyLDcgQEAgaW5saW5lIGJvb2wgaXNDZWxsKFVzZUtpbmQg
a2luZCkKICAgICBjYXNlIFNldE9iamVjdFVzZToKICAgICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6
CiAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgorICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDYgKzM2OSwxMCBAQCBpbmxpbmUg
Q2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgICAgIC8vIHBpcGVsaW5lIGZh
aWxlZCB0byBvcHRpbWl6ZSBvdXQgYW4gSWRlbnRpdHkuCiAgICAgICAgIGJyZWFrOwogCisgICAg
Y2FzZSBEYXRhVmlld0dldEludDoKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CisgICAgICAg
IHJldHVybiBDYW5ub3RDb21waWxlOyAvLyBPT1BTIQorCiAgICAgY2FzZSBJZGVudGl0eVdpdGhQ
cm9maWxlOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEFuZE9TUkVudGVyOgpAQCAtNDQ1LDYgKzQ0OSw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVjdFVzZToKICAg
ICAgICAgICAgICAgICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBXZWFrU2V0T2JqZWN0VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgRGF0YVZpZXdPYmplY3RV
c2U6CiAgICAgICAgICAgICAgICAgY2FzZSBGaW5hbE9iamVjdFVzZToKICAgICAgICAgICAgICAg
ICBjYXNlIFJlZ0V4cE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFByb3h5T2JqZWN0
VXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ2OCw2ICsxNDQ2OCwxMyBAQCBw
cml2YXRlOgogICAgICAgICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KGVkZ2UsIHJlc3VsdCk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCisgICAgTFZhbHVlIGxvd0RhdGFWaWV3T2Jq
ZWN0KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBsb3dDZWxsKGVk
Z2UpOworICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlLCByZXN1bHQpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICAKICAgICBMVmFsdWUgbG93U3RyaW5nKEVk
Z2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNw
ZWN1bGF0aW9uKQogICAgIHsKQEAgLTE0OTQzLDYgKzE0OTUwLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlV2Vha1NldE9i
amVjdChlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERhdGFWaWV3T2Jq
ZWN0VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRnZSk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgICAgICBzcGVj
dWxhdGVTdHJpbmcoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1NDM3LDYgKzE1NDQ3
LDE3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KGVk
Z2UsIGxvd0NlbGwoZWRnZSkpOwogICAgIH0KKworICAgIHZvaWQgc3BlY3VsYXRlRGF0YVZpZXdP
YmplY3QoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB7CisgICAgICAgIEZUTF9UWVBFX0NI
RUNLKAorICAgICAgICAgICAganNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVjRGF0YVZpZXdP
YmplY3QsIGlzTm90VHlwZShjZWxsLCBEYXRhVmlld1R5cGUpKTsKKyAgICB9CisKKyAgICB2b2lk
IHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHNwZWN1
bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIGxvd0NlbGwoZWRnZSkpOworICAgIH0KICAgICAKICAg
ICB2b2lkIHNwZWN1bGF0ZVN0cmluZyhFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQogICAgIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAkocmV2aXNp
b24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDYgKzIzOSwzOCBAQCBjb25zdCBjaGFyKiBpbnRyaW5z
aWNOYW1lKEludHJpbnNpYyBpbnRyCiAgICAgICAgIHJldHVybiAiQ1BVQ3B1aWRJbnRyaW5zaWMi
OwogICAgIGNhc2UgQ1BVUGF1c2VJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiQ1BVUGF1c2VJ
bnRyaW5zaWMiOworICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ4OgorICAgICAgICByZXR1cm4gIkRh
dGFWaWV3R2V0SW50OCI7CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQ4OgorICAgICAgICByZXR1
cm4gIkRhdGFWaWV3R2V0VWludDgiOworICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQxNjoKKyAgICAg
ICAgcmV0dXJuICJEYXRhVmlld0dldEludDE2IjsKKyAgICBjYXNlIERhdGFWaWV3R2V0VWludDE2
OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0VWludDE2IjsKKyAgICBjYXNlIERhdGFWaWV3
R2V0SW50MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRJbnQzMiI7CisgICAgY2FzZSBE
YXRhVmlld0dldFVpbnQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldFVpbnQzMiI7Cisg
ICAgY2FzZSBEYXRhVmlld0dldEZsb2F0MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRG
bG9hdDMyIjsKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ2NDoKKyAgICAgICAgcmV0dXJuICJE
YXRhVmlld0dldEZsb2F0NjQiOworICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQ4OgorICAgICAgICBy
ZXR1cm4gIkRhdGFWaWV3U2V0SW50OCI7CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQ4OgorICAg
ICAgICByZXR1cm4gIkRhdGFWaWV3U2V0VWludDgiOworICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQx
NjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEludDE2IjsKKyAgICBjYXNlIERhdGFWaWV3
U2V0VWludDE2OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0VWludDE2IjsKKyAgICBjYXNl
IERhdGFWaWV3U2V0SW50MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRJbnQzMiI7Cisg
ICAgY2FzZSBEYXRhVmlld1NldFVpbnQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldFVp
bnQzMiI7CisgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0MzI6CisgICAgICAgIHJldHVybiAiRGF0
YVZpZXdTZXRGbG9hdDMyIjsKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQ2NDoKKyAgICAgICAg
cmV0dXJuICJEYXRhVmlld1NldEZsb2F0NjQiOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzks
NiArMTM5LDIzIEBAIGVudW0gSW50cmluc2ljIHsKICAgICBDUFVSZHRzY0ludHJpbnNpYywKICAg
ICBDUFVDcHVpZEludHJpbnNpYywKICAgICBDUFVQYXVzZUludHJpbnNpYywKKworICAgIERhdGFW
aWV3R2V0SW50OCwKKyAgICBEYXRhVmlld0dldFVpbnQ4LAorICAgIERhdGFWaWV3R2V0SW50MTYs
CisgICAgRGF0YVZpZXdHZXRVaW50MTYsCisgICAgRGF0YVZpZXdHZXRJbnQzMiwKKyAgICBEYXRh
Vmlld0dldFVpbnQzMiwKKyAgICBEYXRhVmlld0dldEZsb2F0MzIsCisgICAgRGF0YVZpZXdHZXRG
bG9hdDY0LAorICAgIERhdGFWaWV3U2V0SW50OCwKKyAgICBEYXRhVmlld1NldFVpbnQ4LAorICAg
IERhdGFWaWV3U2V0SW50MTYsCisgICAgRGF0YVZpZXdTZXRVaW50MTYsCisgICAgRGF0YVZpZXdT
ZXRJbnQzMiwKKyAgICBEYXRhVmlld1NldFVpbnQzMiwKKyAgICBEYXRhVmlld1NldEZsb2F0MzIs
CisgICAgRGF0YVZpZXdTZXRGbG9hdDY0LAogfTsKIAogY29uc3QgY2hhciogaW50cmluc2ljTmFt
ZShJbnRyaW5zaWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSwyMiArMzksMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIC8qIFNvdXJjZSBm
b3IgSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaAogQGJlZ2luIGRhdGFWaWV3VGFibGUKLSAgZ2V0
SW50OCAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50OCAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldFVpbnQ4ICAgICAgICAgICAgICBkYXRhVmll
d1Byb3RvRnVuY0dldFVpbnQ4ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQot
ICBnZXRJbnQxNiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQxNiAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0VWludDE2ICAgICAgICAgICAgIGRh
dGFWaWV3UHJvdG9GdW5jR2V0VWludDE2ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAg
ICAxCi0gIGdldEludDMyICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDMyICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRVaW50MzIgICAgICAgICAg
ICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
ICAgICAgIDEKLSAgZ2V0RmxvYXQzMiAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0Rmxv
YXQzMiAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldEZsb2F0NjQgICAg
ICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gICAgICAgMQotICBzZXRJbnQ4ICAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNT
ZXRJbnQ4ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0VWludDgg
ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDggICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldEludDE2ICAgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
RnVuY1NldEludDE2ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRV
aW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MTYgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0SW50MzIgICAgICAgICAgICAgIGRhdGFWaWV3
UHJvdG9GdW5jU2V0SW50MzIgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0g
IHNldFVpbnQzMiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQzMiAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRGbG9hdDMyICAgICAgICAgICAgZGF0
YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMyICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAg
IDIKLSAgc2V0RmxvYXQ2NCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NCAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCisgIGdldEludDggICAgICAgICAgICAg
ICBkYXRhVmlld1Byb3RvRnVuY0dldEludDggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
ICAgICAgMSAgRGF0YVZpZXdHZXRJbnQ4CisgIGdldFVpbnQ4ICAgICAgICAgICAgICBkYXRhVmll
d1Byb3RvRnVuY0dldFVpbnQ4ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAg
RGF0YVZpZXdHZXRVaW50OAorICBnZXRJbnQxNiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1
bmNHZXRJbnQxNiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3
R2V0SW50MTYKKyAgZ2V0VWludDE2ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWlu
dDE2ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldFVpbnQx
NgorICBnZXRJbnQzMiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQzMiAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0SW50MzIKKyAgZ2V0
VWludDMyICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDMyICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldFVpbnQzMgorICBnZXRGbG9hdDMy
ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDMyICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0RmxvYXQzMgorICBnZXRGbG9hdDY0ICAgICAg
ICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uICAgICAgIDEgIERhdGFWaWV3R2V0RmxvYXQ2NAorICBzZXRJbnQ4ICAgICAgICAgICAgICAg
ZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQ4ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAg
ICAgIDIgIERhdGFWaWV3U2V0SW50OAorICBzZXRVaW50OCAgICAgICAgICAgICAgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRVaW50OCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERh
dGFWaWV3U2V0VWludDgKKyAgc2V0SW50MTYgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5j
U2V0SW50MTYgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1Nl
dEludDE2CisgIHNldFVpbnQxNiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQx
NiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRVaW50MTYK
KyAgc2V0SW50MzIgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MzIgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldEludDMyCisgIHNldFVp
bnQzMiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQzMiAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRVaW50MzIKKyAgc2V0RmxvYXQzMiAg
ICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQzMiAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldEZsb2F0MzIKKyAgc2V0RmxvYXQ2NCAgICAgICAg
ICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NCAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAgICAgICAyICBEYXRhVmlld1NldEZsb2F0NjQKICAgYnVmZmVyICAgICAgICAgICAgICAgIGRh
dGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIgICAgICAgICAgICBEb250RW51bXxBY2Nlc3NvciAgICAg
ICAwCiAgIGJ5dGVMZW5ndGggICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0
aCAgICAgICAgRG9udEVudW18QWNjZXNzb3IgICAgICAgMAogICBieXRlT2Zmc2V0ICAgICAgICAg
ICAgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQgICAgICAgIERvbnRFbnVtfEFjY2Vzc29y
ICAgICAgIDAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvVHJpU3RhdGUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL1dU
Ri93dGYvVHJpU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAotZW51bSBUcmlTdGF0ZSB7CitlbnVtIFRyaVN0YXRlIDogaW50OF90IHsK
ICAgICBGYWxzZVRyaVN0YXRlLAogICAgIFRydWVUcmlTdGF0ZSwKICAgICBNaXhlZFRyaVN0YXRl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347342</attachid>
            <date>2018-08-16 20:00:18 -0700</date>
            <delta_ts>2018-08-17 01:19:13 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>43611</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3LWppdC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL3N0cmVzcy9kYXRhdmlldy1qaXQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJl
c3MvZGF0YXZpZXctaml0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUzIEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJC
YWQhIik7Cit9CisKKy8vIE9PUFM6IGFkZCB1bnNpZ25lZCB0ZXN0cyEKKworZnVuY3Rpb24gdGVz
dDEoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8u
Z2V0SW50MzIoaSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShiaWdFbmRpYW4pOworICAg
IGZ1bmN0aW9uIGxpdHRsZUVuZGlhbihvLCBpKSB7CisgICAgICAgIHJldHVybiBvLmdldEludDMy
KGksIHRydWUpOworICAgIH0KKyAgICBub0lubGluZShsaXR0bGVFbmRpYW4pOworICAgIGZ1bmN0
aW9uIGJpRW5kaWFuKG8sIGksIGIpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0SW50MzIoaSwgYik7
CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAgIGxldCBhYiA9IG5ldyBBcnJh
eUJ1ZmZlcig0KTsKKyAgICBsZXQgdGEgPSBuZXcgSW50MzJBcnJheShhYik7CisgICAgdGFbMF0g
PSAweDAxMDIwMzA0OworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihk
diwgMCkgPT09IDB4MDQwMzAyMDEpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAw
KSA9PT0gMHgwMTAyMDMwNCk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFzc2Vy
dChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwNDAzMDIwMSk7
CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAweDA0MDMwMjAxKTsKKyAgICAgICAgYXNzZXJ0
KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAxMDIwMzA0
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxz
ZSkgPT09IDB4MDQwMzAyMDEpOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgdGhl
IHJpZ2h0IHNpZ24uCisgICAgdGFbMF0gPSAtMzIzNjEzODY7IC8vIDB4ZmUxMjM0NTYKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlh
bihkdiwgMCkgPT09IDB4NTYzNDEyZmUpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2
LCAwKSA9PT0gLTMyMzYxMzg2KTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNz
ZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVlKSA9PT0gLTMyMzYxMzg2KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IDB4NTYzNDEyZmUp
OworICAgIH0KKworICAgIC8vIC0yMTQ2MjkwNjAyID09IChpbnQpMHg4MDEyMzQ1NgorICAgIHRh
WzBdID0gMHg1NjM0MTI4MDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsK
KyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT09IC0yMTQ2MjkwNjAyKTsKKyAgICAg
ICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4NTYzNDEyODApOworICAgICAgICBp
ZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAw
eDU2MzQxMjgwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2
LCAwLCBmYWxzZSkgPT09IC0yMTQ2MjkwNjAyKTsKKyAgICB9Cit9CisvL3Rlc3QxKCk7CisKK2Z1
bmN0aW9uIHRlc3QyKCkgeworICAgIGZ1bmN0aW9uIGJpZ0VuZGlhbihvLCBpKSB7CisgICAgICAg
IHJldHVybiBvLmdldEludDE2KGksIGZhbHNlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlnRW5k
aWFuKTsKKyAgICBmdW5jdGlvbiBsaXR0bGVFbmRpYW4obywgaSkgeworICAgICAgICByZXR1cm4g
by5nZXRJbnQxNihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUobGl0dGxlRW5kaWFuKTsK
KyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAgICAgIHJldHVybiBvLmdldElu
dDE2KGksIGIpOworICAgIH0KKyAgICBub0lubGluZShiaUVuZGlhbik7CisKKyAgICBsZXQgYWIg
PSBuZXcgQXJyYXlCdWZmZXIoMik7CisgICAgbGV0IHRhID0gbmV3IEludDE2QXJyYXkoYWIpOwor
ICAgIHRhWzBdID0gMHgwMTAyOworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0Vu
ZGlhbihkdiwgMCkgPT09IDB4MDIwMSk7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYs
IDApID09PSAweDAxMDIpOworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQo
YmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAxMDIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwMjAxKTsKKyAgICB9CisK
KyAgICAvLyBDaGVjayBzaWduLgorICAgIHRhWzBdID0gLTUxMjsgLy8gMHhmZTAwCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4o
ZHYsIDApID09PSAweDAwZmUpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9
PT0gLTUxMik7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlh
bihkdiwgMCwgdHJ1ZSkgPT09IC01MTIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3Nl
cnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwMGZlKTsKKyAgICB9CisKKyAgICAvLyBD
aGVjayBzaWduIGV4dGVuc2lvbi4KKyAgICB0YVswXSA9IDB4MDBmZTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkg
PT09IC01MTIpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9PT0gMHgwMGZl
KTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAw
LCB0cnVlKSA9PT0gMHgwMGZlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJp
RW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IC01MTIpOworICAgIH0KK30KKy8vdGVzdDIoKTsKKwor
ZnVuY3Rpb24gdGVzdDMoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAg
ICAgcmV0dXJuIG8uZ2V0RmxvYXQzMihpLCBmYWxzZSk7CisgICAgfQorICAgIG5vSW5saW5lKGJp
Z0VuZGlhbik7CisgICAgZnVuY3Rpb24gbGl0dGxlRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0
dXJuIG8uZ2V0RmxvYXQzMihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUobGl0dGxlRW5k
aWFuKTsKKyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAgICAgIHJldHVybiBv
LmdldEZsb2F0MzIoaSwgYik7CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAg
IGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICBsZXQgdGEgPSBuZXcgRmxvYXQzMkFy
cmF5KGFiKTsKKyAgICBjb25zdCBub3JtYWwgPSAxMjkxMi40MDM7IC8vIDB4NDY0OWMxOWQKKyAg
ICBjb25zdCBub3JtYWxBc0RvdWJsZSA9IDEyOTEyLjQwMzMyMDMxMjUwMDsKKyAgICAvLzlkYzE0
OTQ2IAorICAgIGNvbnN0IGZsaXBwZWQgPSAtNS4xMTYyNDM3NTg5OTE4ODg0ZS0yMTsKKyAgICB0
YVswXSA9IG5vcm1hbDsKKworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4o
ZHYsIDApID09PSBmbGlwcGVkKTsKKyAgICAgICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkg
PT09IDEyOTEyLjQwMzMyMDMxMjUwMCk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAg
IGFzc2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IG5vcm1hbEFzRG91YmxlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IGZs
aXBwZWQpOworICAgIH0KK30KK3Rlc3QzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZp
c2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw2ICs0MDgsMjMgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5wb3BjbnRfcnIoc3JjLCBkc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgYnl0ZVN3YXAzMihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmJzd2FwbF9yKGRzdCk7CisgICAgfQorCisgICAgdm9pZCBieXRlU3dhcDE2KFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm9sd19pOHIoOCwgZHN0KTsK
KyAgICB9CisKKyNpZiBDUFUoWDg2XzY0KQorICAgIHZvaWQgYnl0ZVN3YXA2NChSZWdpc3RlcklE
IGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJzd2FwcV9yKGRzdCk7CisgICAgfQor
I2VuZGlmCisKICAgICAvLyBPbmx5IHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgdm9p
ZCBpbGxlZ2FsSW5zdHJ1Y3Rpb24oKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzM3LDYgKzMzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9YQUREYiAgICAgICAg
ICAgPSAweEMwLAogICAgICAgICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAg
T1AyX1BFWFRSV19HZFVkSWIgICA9IDB4QzUsCisgICAgICAgIE9QMl9CU1dBUCAgICAgICAgICAg
PSAweEM4LAogICAgICAgICBPUDJfUFNMTFFfVWRxSWIgICAgID0gMHg3MywKICAgICAgICAgT1Ay
X1BTUkxRX1VkcUliICAgICA9IDB4NzMsCiAgICAgICAgIE9QMl9QT1JfVmRxV2RxICAgICAgPSAw
WEVCLApAQCAtMTYzOCw2ICsxNjM5LDE4IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAg
IHZvaWQgYnN3YXBsX3IoUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci50d29CeXRlT3AoT1AyX0JTV0FQLCBkc3QpOworICAgIH0KKworI2lmIENQVShYODZfNjQpCisg
ICAgdm9pZCBic3dhcHFfcihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnR3b0J5dGVPcDY0KE9QMl9CU1dBUCwgZHN0KTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZv
aWQgdHpjbnRfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOwpAQCAtMTcwMSw2ICsxNzE0LDE4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICB0ZW1wbGF0ZTxHcm91cE9wY29kZUlEIG9wPgorICAgIHZvaWQg
c2hpZnRJbnN0cnVjdGlvbjE2KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoaW1t
ID09IDEpCisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2MSwg
b3AsIGRzdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMl9FdkliLCBvcCwgZHN0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfQorICAgIH0KIHB1YmxpYzoKIAogICAgIHZvaWQgc2Fy
bF9pOHIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzUzLDYgKzE3NzgsMTEgQEAgcHVi
bGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2Q0wsIEdST1VQ
Ml9PUF9ST0wsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCByb2x3X2k4cihpbnQgaW1tLCBSZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb24xNjxHUk9VUDJfT1Bf
Uk9MPihpbW0sIGRzdCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKIHByaXZhdGU6CiAgICAg
dGVtcGxhdGU8R3JvdXBPcGNvZGVJRCBvcD4KQEAgLTQzMzMsNiArNDM2MywxNCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKICAgICAgICAg
fQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCBy
ZWcpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVy
IHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKDAs
IDAsIHJlZyk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9F
U0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlICsgKHJl
ZyAmIDcpKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNv
ZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAgIHsKICAgICAgICAg
ICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CkBAIC00
NTA2LDYgKzQ1NDQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RS
TUFkZHIocmVnLCBhZGRyZXNzKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9w
NjQoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZykKKyAgICAgICAgeworICAgICAgICAg
ICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAg
ICAgICAgIHdyaXRlci5lbWl0UmV4VygwLCAwLCByZWcpOworICAgICAgICAgICAgd3JpdGVyLnB1
dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRC
eXRlVW5jaGVja2VkKG9wY29kZSArIChyZWcgJiA3KSk7CisgICAgICAgIH0KKwogICAgICAgICB2
b2lkIHR3b0J5dGVPcDY0KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVy
SUQgcm0pCiAgICAgICAgIHsKICAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3Jp
dGVyIHdyaXRlcihtX2J1ZmZlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwMyw2ICsyMDMsMTEgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0m
IG91dFN0cgogICAgICAgICAgICAgICAgIHN0ck91dC5wcmludCgiRGVyaXZlZEFycmF5Iik7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKworICAgICAg
ICAgICAgaWYgKHZhbHVlICYgU3BlY0RhdGFWaWV3T2JqZWN0KQorICAgICAgICAgICAgICAgIHN0
ck91dC5wcmludCgiRGF0YVZpZXciKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBpc1RvcCA9IGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCh2YWx1ZSAmIFNwZWNT
dHJpbmcpID09IFNwZWNTdHJpbmcpCkBAIC00MzIsNiArNDM3LDkgQEAgU3BlY3VsYXRlZFR5cGUg
c3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKAogCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBQcm94eU9i
amVjdDo6aW5mbygpKQogICAgICAgICByZXR1cm4gU3BlY1Byb3h5T2JqZWN0OworCisgICAgaWYg
KGNsYXNzSW5mbyA9PSBKU0RhdGFWaWV3OjppbmZvKCkpCisgICAgICAgIHJldHVybiBTcGVjRGF0
YVZpZXdPYmplY3Q7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTRnVu
Y3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0JvdW5kRnVuY3Rp
b246OmluZm8oKSkKQEAgLTU1OSw2ICs1NjcsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlv
bkZyb21KU1R5cGUoSlNUCiAgICAgICAgIHJldHVybiBTcGVjV2Vha01hcE9iamVjdDsKICAgICBj
YXNlIEpTV2Vha1NldFR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjV2Vha1NldE9iamVjdDsKKyAg
ICBjYXNlIERhdGFWaWV3VHlwZToKKyAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC03
NTAsNiArNzYwLDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RyaW5nKGNvbgog
ICAgICAgICByZXR1cm4gU3BlY1Byb3h5T2JqZWN0OwogICAgIGlmICghc3RybmNtcChzcGVjdWxh
dGlvbiwgIlNwZWNEZXJpdmVkQXJyYXkiLCBzdHJsZW4oIlNwZWNEZXJpdmVkQXJyYXkiKSkpCiAg
ICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFycmF5OworICAgIGlmICghc3RybmNtcChzcGVjdWxh
dGlvbiwgIlNwZWNEYXRhVmlld09iamVjdCIsIHN0cmxlbigiU3BlY0RhdGFWaWV3T2JqZWN0Iikp
KQorICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAgIGlmICghc3RybmNtcChz
cGVjdWxhdGlvbiwgIlNwZWNPYmplY3RPdGhlciIsIHN0cmxlbigiU3BlY09iamVjdE90aGVyIikp
KQogICAgICAgICByZXR1cm4gU3BlY09iamVjdE90aGVyOwogICAgIGlmICghc3RybmNtcChzcGVj
dWxhdGlvbiwgIlNwZWNPYmplY3QiLCBzdHJsZW4oIlNwZWNPYmplY3QiKSkpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNp
b24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDYgQEAgc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNXZWFrU2V0Twogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNQ
cm94eU9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIxOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBQcm94eSBvYmplY3Qgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgogc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEZXJpdmVkQXJyYXkgICAgICAgICAgICAgICAgICAg
ICAgPSAxdWxsIDw8IDIyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBEZXJpdmVkQXJyYXkgb2JqZWN0
Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3RPdGhlciAgICAgICAgICAg
ICAgICAgICAgICAgPSAxdWxsIDw8IDIzOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gb2JqZWN0IGJ1
dCBub3QgSlNGaW5hbE9iamVjdCwgSlNBcnJheSwgb3IgSlNGdW5jdGlvbi4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
U3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJy
YXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVj
U3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0
T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94
eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXI7IC8vIEJpdG1hc2sg
dXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAgICAgICAgICAgICAg
ICAgICA9IDF1bGwgPDwgMjQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQn
cyBhbiBpZGVudGlmaWVyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdW
YXIgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDI1OyAvLyBJdCdzIGRlZmluaXRl
bHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCiBzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNw
ZWNTdHJpbmdJZGVudCB8IFNwZWNTdHJpbmdWYXI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3Ry
aW5nLgpAQCAtOTMsNyArOTIsOSBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090
aGVyICAgCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IFNwZWNCb29sZWFuIHwgU3BlY090aGVyOyAvLyBJdCdzIGRlZmlu
aXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAx
dWxsIDw8IDM3OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxdWxsIDw8IDM4OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDF1bGwgPDwgMzk7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCiBz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICAgICAgICAg
ICAgICAgICA9IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwg
U3BlY01pc2MgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCitz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNw
ZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJlY3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1l
bnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNwZWNSZWdFeHBPYmplY3QgfCBTcGVjTWFwT2JqZWN0
IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3Qg
fCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwg
U3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBr
aW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0
cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNDZWxsLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFw
VG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCeXRlY29kZU51
bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZv
ciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVj
SGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2Vw
dCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMg
dG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2RlIGxvY2FsLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcw
LDkgKzM3NzAsMjQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQotICAgICAgICAKLSAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0
SW50OiB7CisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbm9kZS0+ZGF0YVZpZXdEYXRhKCk7
CisgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplIDwgNCkKKyAgICAgICAgICAgIHNldE5vbkNlbGxU
eXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBpZiAoIShub2RlLT5wcmVkaWN0aW9uKCkgJiB+U3BlY0ludDMyT25seSkpCisgICAgICAg
ICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2Rl
LCBTcGVjQnl0ZWNvZGVEb3VibGUpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNGdWxsRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAg
ICAKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICAvLyBJdCBtYXkgYmUgdGhhdCBkdXJp
bmcgYSBwcmV2aW91cyBydW4gb2YgQUkgd2UgcHJvdmVkIHRoYXQgc29tZXRoaW5nIHdhcyB1bnJl
YWNoYWJsZSwgYnV0CiAgICAgICAgIC8vIGR1cmluZyB0aGlzIHJ1biBvZiBBSSB3ZSBmb3JnZXQg
dGhhdCBpdCdzIHVucmVhY2hhYmxlLiBBSSdzIHByb29mcyBkb24ndCBoYXZlIHRvIGdldApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDc5LDYgKzMwNzksOTggQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50ODoKKyAgICBjYXNlIERhdGFWaWV3R2V0
VWludDg6CisgICAgY2FzZSBEYXRhVmlld0dldEludDE2OgorICAgIGNhc2UgRGF0YVZpZXdHZXRV
aW50MTY6CisgICAgY2FzZSBEYXRhVmlld0dldEludDMyOgorICAgIGNhc2UgRGF0YVZpZXdHZXRV
aW50MzI6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0MzI6CisgICAgY2FzZSBEYXRhVmlld0dl
dEZsb2F0NjQ6IHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgMikK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGluc2VydENoZWNrcygpOworCisgICAg
ICAgIHVpbnQ4X3QgYnl0ZVNpemU7CisgICAgICAgIE5vZGVUeXBlIG9wID0gRGF0YVZpZXdHZXRJ
bnQ7CisgICAgICAgIGJvb2wgaXNTaWduZWQgPSBmYWxzZTsKKyAgICAgICAgc3dpdGNoIChpbnRy
aW5zaWMpIHsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDg6CisgICAgICAgICAgICBpc1Np
Z25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRh
Vmlld0dldFVpbnQ4OgorICAgICAgICAgICAgYnl0ZVNpemUgPSAxOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDE2OgorICAgICAgICAgICAgaXNTaWdu
ZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNhc2UgRGF0YVZp
ZXdHZXRVaW50MTY6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDI7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50MzI6CisgICAgICAgICAgICBpc1NpZ25l
ZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRhVmll
d0dldFVpbnQzMjoKKyAgICAgICAgICAgIGJ5dGVTaXplID0gNDsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDMyOgorICAgICAgICAgICAgYnl0ZVNp
emUgPSA0OworICAgICAgICAgICAgb3AgPSBEYXRhVmlld0dldEZsb2F0OworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDY0OgorICAgICAgICAgICAgYnl0
ZVNpemUgPSA4OworICAgICAgICAgICAgb3AgPSBEYXRhVmlld0dldEZsb2F0OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRp
YW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICBOb2RlKiBsaXR0bGVFbmRpYW5DaGlsZCA9IG51
bGxwdHI7CisgICAgICAgIGlmIChieXRlU2l6ZSA+IDEpIHsKKyAgICAgICAgICAgIGlmIChhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IDMpCisgICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRp
YW4gPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
bGl0dGxlRW5kaWFuQ2hpbGQgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMiwgcmVn
aXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBpZiAobGl0dGxlRW5kaWFuQ2hpbGQtPmhh
c0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBjb25zdGFudCA9IGxp
dHRsZUVuZGlhbkNoaWxkLT5jb25zdGFudCgpLT52YWx1ZSgpOworICAgICAgICAgICAgICAgICAg
ICBpc0xpdHRsZUVuZGlhbiA9IGNvbnN0YW50LnB1cmVUb0Jvb2xlYW4oKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzTGl0dGxlRW5kaWFuICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgICAg
ICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IG51bGxwdHI7CisgICAgICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gTWl4ZWRUcmlT
dGF0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisKKyAgICAgICAgRGF0YVZpZXdEYXRh
IGRhdGEgeyB9OworICAgICAgICBkYXRhLmlzTGl0dGxlRW5kaWFuID0gaXNMaXR0bGVFbmRpYW47
CisgICAgICAgIGRhdGEuaXNTaWduZWQgPSBpc1NpZ25lZDsKKyAgICAgICAgZGF0YS5ieXRlU2l6
ZSA9IGJ5dGVTaXplOworCisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksCisgICAgICAgICAgICBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZGF0YS5hc1F1YWRXb3JkKSwg
T3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVn
aXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVy
T2Zmc2V0KSksIGxpdHRsZUVuZGlhbkNoaWxkKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQ4OgorICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50
ODoKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50MTY6CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQx
NjoKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50MzI6CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQz
MjoKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQzMjoKKyAgICBjYXNlIERhdGFWaWV3U2V0Rmxv
YXQ2NDogeworICAgICAgICBDUkFTSCgpOworICAgICAgICAvLyBPT1BTCisgICAgfQorCiAgICAg
Y2FzZSBIYXNPd25Qcm9wZXJ0eUludHJpbnNpYzogewogICAgICAgICBpZiAoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMzQ4NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTc1OCw3ICsxNzU4LDE0IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFu
dDoKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT52YWxpZFJhZGl4Q29uc3RhbnQo
KSkpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCisgICAgY2FzZSBEYXRhVmlld0dldEZs
b2F0OgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6IHsKKyAgICAgICAgcmVhZChNaXNjRmllbGRz
KTsKKyAgICAgICAgcmVhZChUeXBlZEFycmF5UHJvcGVydGllcyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgsNiArMzE4LDgg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVy
R2V0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBG
aWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICBjYXNlIERh
dGFWaWV3R2V0RmxvYXQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgUHVzaFdp
dGhTY29wZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwNCw2ICsyMTA0LDE1IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CisgICAgICAgIGNh
c2UgRGF0YVZpZXdHZXRGbG9hdDogeworICAgICAgICAgICAgZml4RWRnZTxEYXRhVmlld09iamVj
dFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2
ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRv
IGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjM0ODczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExNyw2ICsxMTcsMTggQEAgc3RydWN0IE5ld0FycmF5QnVmZmVyRGF0YSB7CiBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihJbmRleGluZ1R5cGUpIDw9IHNpemVvZih1bnNpZ25lZCksICIiKTsKIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKE5ld0FycmF5QnVmZmVyRGF0YSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwg
IiIpOwogCitzdHJ1Y3QgRGF0YVZpZXdEYXRhIHsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVj
dCB7CisgICAgICAgICAgICB1aW50OF90IGJ5dGVTaXplOworICAgICAgICAgICAgYm9vbCBpc1Np
Z25lZDsKKyAgICAgICAgICAgIFRyaVN0YXRlIGlzTGl0dGxlRW5kaWFuOworICAgICAgICB9Owor
ICAgICAgICB1aW50NjRfdCBhc1F1YWRXb3JkOworICAgIH07Cit9Oworc3RhdGljX2Fzc2VydChz
aXplb2YoRGF0YVZpZXdEYXRhKSA9PSBzaXplb2YodWludDY0X3QpLCAiIik7CisKIHN0cnVjdCBC
cmFuY2hUYXJnZXQgewogICAgIEJyYW5jaFRhcmdldCgpCiAgICAgICAgIDogYmxvY2soMCkKQEAg
LTE2NTksNiArMTY3MSw4IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgog
ICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OgogICAgICAgICBjYXNlIFRv
VGhpczoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICAgICAgY2FzZSBEYXRhVmll
d0dldEZsb2F0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTQzLDYgKzIxNTcsMTIgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dW5zaWduZWQ+KCk7CiAgICAgfQogCisgICAgRGF0
YVZpZXdEYXRhIGRhdGFWaWV3RGF0YSgpCisgICAgeworICAgICAgICAvL0FTU0VSVChvcCgpID09
IERhdGFWaWV3R2V0SW50IHx8IG9wKCkgPT0gRGF0YVZpZXdHZXRGbG9hdCB8fCBvcCgpID09IERh
dGFWaWV3U2V0KTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxEYXRhVmlld0RhdGE+KG1f
b3BJbmZvLmFzPHVpbnQ2NF90PigpKTsKKyAgICB9CisKICAgICBib29sIHNob3VsZEdlbmVyYXRl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODMsNiAr
NDgzLDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhGaWx0
ZXJHZXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVySW5C
eUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVyUHV0QnlJZFN0
YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIC8qIERhdGEgdmlldyBhY2Nlc3MgKi8gXAor
ICAgIG1hY3JvKERhdGFWaWV3R2V0SW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpT
KSBcCisgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9hdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVS
ZXN1bHREb3VibGUpIFwKKworICAgIC8vbWFjcm8oRGF0YVZpZXdTZXQsIE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIAogLy8gVGhpcyBlbnVtIGdlbmVyYXRlcyBhIG1v
bm90b25pY2FsbHkgaW5jcmVhc2luZyBpZCBmb3IgYWxsIE5vZGUgdHlwZXMsCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc1MCw3ICs3NTAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6
CiAgICAgICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVP
ZjoKLSAgICAgICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdldDogeworICAgICAgICBj
YXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OiAKKyAgICAgICAgY2FzZSBEYXRhVmlld0dl
dEludDoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OiB7CiAgICAgICAgICAgICBzZXRQ
cmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAgICAgICBjYXNlIFdl
YWtNYXBPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKKyAgICAgICAg
Y2FzZSBEYXRhVmlld09iamVjdFVzZToKICAgICAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgog
ICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKQEAg
LTYwMiw2ICs2MDMsMTAgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50
OgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBP
T1BTOiBjYW4gd2UgYWx3YXlzIGRvIHRoaXMgb3IganVzdCBzb21ldGltZXM/CisKICAgICBjYXNl
IFNldEFkZDoKICAgICBjYXNlIE1hcFNldDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTUzLDYgKzQ1NTMsMTg3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNs
ZWFyQ2F0Y2hMb2NhbHMobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBEYXRhVmll
d0dldEZsb2F0OgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6IHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgZGF0YVZpZXcodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJS
ZWcgZGF0YVZpZXdHUFIgPSBkYXRhVmlldy5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlRGF0YVZp
ZXdPYmplY3Qobm9kZS0+Y2hpbGQxKCksIGRhdGFWaWV3R1BSKTsKKworICAgICAgICBTcGVjdWxh
dGVJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJS
ZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKKworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDEo
dGhpcyk7CisgICAgICAgIEdQUlJlZyB0MSA9IHRlbXAxLmdwcigpOworICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcDIodGhpcyk7CisgICAgICAgIEdQUlJlZyB0MiA9IHRlbXAyLmdwcigpOworCisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ+IGlzTGl0dGxlRW5k
aWFuT3BlcmFuZDsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgaXNM
aXR0bGVFbmRpYW5PcGVyYW5kLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworICAgICAg
ICBHUFJSZWcgaXNMaXR0bGVFbmRpYW5HUFIgPSBpc0xpdHRsZUVuZGlhbk9wZXJhbmQgPyBpc0xp
dHRsZUVuZGlhbk9wZXJhbmQtPmdwcigpIDogSW52YWxpZEdQUlJlZzsKKworICAgICAgICBEYXRh
Vmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFWaWV3RGF0YSgpOworCisgICAgICAgIG1faml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0Mik7CisgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4g
MSkgeworICAgICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUg
LSAxKSwgdDIpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6TGVzc1RoYW4sIHQyLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApKSk7
CisgICAgICAgIH0KKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1
ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpHcmVhdGVyVGhhbk9yRXF1YWwsIGluZGV4R1BSLCB0MikpOworCisgICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZlZlY3RvcigpKSwgdDIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlU291cmNlKCksIG5vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9B
c3NlbWJsZXI6Olplcm8sIHQyKSk7IC8vIE9PUFM6IGFkZCB0ZXN0LiBDYW4gd2UgbmV1dGVyIGEg
SlNEYXRhVmlldz8KKworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwg
dDEpOworICAgICAgICBhdXRvIGJhc2VJbmRleCA9IEpJVENvbXBpbGVyOjpCYXNlSW5kZXgodDIs
IHQxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNPbmUpOworCisgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IERhdGFWaWV3R2V0SW50KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEuYnl0ZVNpemUp
IHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25l
ZCkKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDhTaWduZWRFeHRlbmRUbzMyKGJhc2VJ
bmRleCwgdDIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9q
aXQubG9hZDgoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAgICAgaW50MzJSZXN1bHQodDIs
IG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiB7Cisg
ICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuTG9hZCA9IFsmXSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAgICAgICAgICAgICAg
bV9qaXQubG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDE2KGJhc2VJ
bmRleCwgdDIpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgYXV0byBlbWl0
QmlnRW5kaWFuTG9hZCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQxNihi
YXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAxNih0Mik7
CisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDE2VG8zMih0MiwgdDIpOworICAgICAgICAgICAgICAg
IH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRy
aVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuTG9hZCgpOworICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQor
ICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuTG9hZCgpOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVu
ZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpc0Jp
Z0VuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgaXNMaXR0
bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRM
aXR0bGVFbmRpYW5Mb2FkKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0
Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdFbmRpYW4ubGluaygmbV9qaXQpOwor
ICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuTG9hZCgpOworICAgICAgICAgICAgICAg
ICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaW50MzJSZXN1bHQodDIsIG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKGJhc2VJbmRleCwgdDIpOworCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVF
bmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3
YXAzMih0Mik7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9
PSBNaXhlZFRyaVN0YXRlKSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlz
TGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAgICBh
dXRvIGlzTGl0dGxlRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZEltbTMyKDEpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuYnl0ZVN3YXAzMih0Mik7CisgICAgICAgICAgICAgICAgICAgIGlzTGl0
dGxlRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgaW50MzJSZXN1bHQo
dDIsIG5vZGUpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBi
b29sIHJlc3VsdElzSW50MzIgPSAhKG5vZGUtPnByZWRpY3Rpb24oKSAmIH5TcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdElzSW50MzIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVTb3VyY2Uo
KSwgbm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCB0MiwgVHJ1
c3RlZEltbTMyKDApKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMlJlc3VsdCh0Miwg
bm9kZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBPT1BTOiBEbyBJIG5lZWQgdGhpcyBnaXZlbiBhYm92ZT8KKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHQyLCB0Mik7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBmcFRlbXAodGhpcyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZSh0MiwgZnBUZW1wLmZwcigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShmcFRlbXAuZnByKCksIHQyKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodDIsIG5vZGUpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAg
ICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKKworICAgICAgICAgICAgc3dpdGNo
IChkYXRhLmJ5dGVTaXplKSB7CisgICAgICAgICAgICBjYXNlIDQ6IHsKKyAgICAgICAgICAgICAg
ICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAg
bV9qaXQubG9hZEZsb2F0KGJhc2VJbmRleCwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuY29udmVydEZsb2F0VG9Eb3VibGUocmVzdWx0RlBSLCByZXN1bHRGUFIpOworICAg
ICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2Rl
ID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKGJhc2VJbmRleCwgdDIp
OworICAgICAgICAgICAgICAgICAgICBtX2ppdC5ieXRlU3dhcDMyKHQyKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQubW92ZTMyVG9GbG9hdCh0MiwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuY29udmVydEZsb2F0VG9Eb3VibGUocmVzdWx0RlBSLCByZXN1bHRGUFIp
OworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVF
bmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlh
biA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29k
ZSgpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBpc0JpZ0VuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgaXNMaXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAg
ICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdFbmRp
YW4ubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgp
OworICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGNhc2UgODogeworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBb
Jl0geworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKGJhc2VJbmRleCwgcmVz
dWx0RlBSKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgYXV0byBlbWl0
QmlnRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChi
YXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXA2NCh0Mik7
CisgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKHQyLCByZXN1bHRGUFIp
OworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVF
bmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlh
biA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29k
ZSgpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBpc0JpZ0VuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgaXNMaXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAg
ICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdFbmRp
YW4ubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgp
OworICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9k
ZSk7CisgICAgICAgIH0KKworICAgICAgICBicmVhazsKKyAgICB9CisKICNpZiBFTkFCTEUoRlRM
X0pJVCkgICAgICAgIAogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgY2FsbFRpZXJVcCA9IG1faml0LmJyYW5jaEFkZDMyKApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJl
dmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTAzLDYgKzk5MDMsMjAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlV2Vha1NldE9iagogICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmpl
Y3QoZWRnZSwgb3BlcmFuZC5ncHIoKSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit7CisgICAgc3BlY3Vs
YXRlQ2VsbFR5cGUoZWRnZSwgY2VsbCwgU3BlY0RhdGFWaWV3T2JqZWN0LCBEYXRhVmlld1R5cGUp
OworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdl
IGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRGF0YVZpZXdPYmpl
Y3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5k
KHRoaXMsIGVkZ2UpOworICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIG9wZXJhbmQu
Z3ByKCkpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90aGVy
KEVkZ2UgZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNPYmplY3Qg
fCBTcGVjT3RoZXIpKQpAQCAtMTAyNzEsNiArMTAyODUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgogICAgICAg
ICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IERhdGFWaWV3T2JqZWN0VXNlOgorICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdl
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBz
cGVjdWxhdGVPYmplY3RPck90aGVyKGVkZ2UpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDIz
NDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTYxMCw2ICsxNjEwLDggQEAgcHVibGljOgogICAgIHZvaWQgc3Bl
Y3VsYXRlV2Vha01hcE9iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxh
dGVXZWFrU2V0T2JqZWN0KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlV2Vha1NldE9iamVjdChF
ZGdlLCBHUFJSZWcgY2VsbCk7CisgICAgdm9pZCBzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdl
KTsKKyAgICB2b2lkIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsK
ICAgICB2b2lkIHNwZWN1bGF0ZU9iamVjdE9yT3RoZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxh
dGVTdHJpbmcoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJp
bmdJZGVudEFuZExvYWRTdG9yYWdlKEVkZ2UgZWRnZSwgR1BSUmVnIHN0cmluZywgR1BSUmVnIHN0
b3JhZ2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCShy
ZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTYgKzEwNCwxOSBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlCiAgICAgICAgIG91dC5wcmludCgiRGVyaXZlZEFycmF5
Iik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIE1hcE9iamVjdFVzZToKLSAgICAgICAgb3V0
LnByaW50KCJNYXBPYmplY3RVc2UiKTsKKyAgICAgICAgb3V0LnByaW50KCJNYXBPYmplY3QiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU2V0T2JqZWN0VXNlOgotICAgICAgICBvdXQucHJp
bnQoIlNldE9iamVjdFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIlNldE9iamVjdCIpOwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBXZWFrTWFwT2JqZWN0VXNlOgotICAgICAgICBvdXQucHJp
bnQoIldlYWtNYXBPYmplY3RVc2UiKTsKKyAgICAgICAgb3V0LnByaW50KCJXZWFrTWFwT2JqZWN0
Iik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6Ci0gICAgICAg
IG91dC5wcmludCgiV2Vha1NldE9iamVjdFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIldlYWtT
ZXRPYmplY3QiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6
CisgICAgICAgIG91dC5wcmludCgiRGF0YVZpZXdPYmplY3QiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgb3V0LnByaW50KCJPYmplY3RPck90
aGVyIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNp
b24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAgZW51bSBVc2VLaW5kIHsKICAgICBTZXRPYmpl
Y3RVc2UsCiAgICAgV2Vha01hcE9iamVjdFVzZSwKICAgICBXZWFrU2V0T2JqZWN0VXNlLAorICAg
IERhdGFWaWV3T2JqZWN0VXNlLAogICAgIFN0cmluZ09iamVjdFVzZSwKICAgICBTdHJpbmdPclN0
cmluZ09iamVjdFVzZSwKICAgICBOb3RTdHJpbmdWYXJVc2UsCkBAIC0xNjAsNiArMTYxLDggQEAg
aW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNlSwogICAgICAgICByZXR1cm4g
U3BlY1dlYWtNYXBPYmplY3Q7CiAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgogICAgICAgICBy
ZXR1cm4gU3BlY1dlYWtTZXRPYmplY3Q7CisgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKKyAg
ICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKICAgICBjYXNlIFN0cmluZ09iamVjdFVz
ZToKICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmdPYmplY3Q7CiAgICAgY2FzZSBTdHJpbmdPclN0
cmluZ09iamVjdFVzZToKQEAgLTI1OSw2ICsyNjIsNyBAQCBpbmxpbmUgYm9vbCBpc0NlbGwoVXNl
S2luZCBraW5kKQogICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAgIGNhc2UgV2Vha01hcE9iamVj
dFVzZToKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CisgICAgY2FzZSBEYXRhVmlld09iamVj
dFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksNiArMzY5LDEwIEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgLy8gcGlwZWxp
bmUgZmFpbGVkIHRvIG9wdGltaXplIG91dCBhbiBJZGVudGl0eS4KICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIERhdGFWaWV3R2V0SW50OgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAg
ICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7IC8vIE9PUFMhCisKICAgICBjYXNlIElkZW50aXR5
V2l0aFByb2ZpbGU6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNr
VGllclVwQW5kT1NSRW50ZXI6CkBAIC00NDUsNiArNDQ5LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNl
OgogICAgICAgICAgICAgICAgIGNhc2UgV2Vha01hcE9iamVjdFVzZToKICAgICAgICAgICAgICAg
ICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBEYXRhVmlld09i
amVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgogICAgICAgICAg
ICAgICAgIGNhc2UgUmVnRXhwT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgUHJveHlP
YmplY3RVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDY4LDYgKzE0NDY4LDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSwgcmVzdWx0
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICBMVmFsdWUgbG93RGF0YVZp
ZXdPYmplY3QoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0Nl
bGwoZWRnZSk7CisgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBsb3dTdHJp
bmcoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVy
YW5kU3BlY3VsYXRpb24pCiAgICAgewpAQCAtMTQ5NDMsNiArMTQ5NTAsOSBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVXZWFr
U2V0T2JqZWN0KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZp
ZXdPYmplY3RVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgICAg
IHNwZWN1bGF0ZVN0cmluZyhlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU0MzcsNiAr
MTU0NDcsMTcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmpl
Y3QoZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQorCisgICAgdm9pZCBzcGVjdWxhdGVEYXRh
Vmlld09iamVjdChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQorICAgIHsKKyAgICAgICAgRlRMX1RZ
UEVfQ0hFQ0soCisgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNEYXRh
Vmlld09iamVjdCwgaXNOb3RUeXBlKGNlbGwsIERhdGFWaWV3VHlwZSkpOworICAgIH0KKworICAg
IHZvaWQgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAg
c3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRnZSwgbG93Q2VsbChlZGdlKSk7CisgICAgfQogICAg
IAogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nKEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCShy
ZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNiArMjM5LDM4IEBAIGNvbnN0IGNoYXIqIGlu
dHJpbnNpY05hbWUoSW50cmluc2ljIGludHIKICAgICAgICAgcmV0dXJuICJDUFVDcHVpZEludHJp
bnNpYyI7CiAgICAgY2FzZSBDUFVQYXVzZUludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJDUFVQ
YXVzZUludHJpbnNpYyI7CisgICAgY2FzZSBEYXRhVmlld0dldEludDg6CisgICAgICAgIHJldHVy
biAiRGF0YVZpZXdHZXRJbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3R2V0VWludDg6CisgICAgICAg
IHJldHVybiAiRGF0YVZpZXdHZXRVaW50OCI7CisgICAgY2FzZSBEYXRhVmlld0dldEludDE2Ogor
ICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0SW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdHZXRV
aW50MTY6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRVaW50MTYiOworICAgIGNhc2UgRGF0
YVZpZXdHZXRJbnQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldEludDMyIjsKKyAgICBj
YXNlIERhdGFWaWV3R2V0VWludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0VWludDMy
IjsKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmll
d0dldEZsb2F0MzIiOworICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDY0OgorICAgICAgICByZXR1
cm4gIkRhdGFWaWV3R2V0RmxvYXQ2NCI7CisgICAgY2FzZSBEYXRhVmlld1NldEludDg6CisgICAg
ICAgIHJldHVybiAiRGF0YVZpZXdTZXRJbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0VWludDg6
CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRVaW50OCI7CisgICAgY2FzZSBEYXRhVmlld1Nl
dEludDE2OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0SW50MTYiOworICAgIGNhc2UgRGF0
YVZpZXdTZXRVaW50MTY6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRVaW50MTYiOworICAg
IGNhc2UgRGF0YVZpZXdTZXRJbnQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEludDMy
IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0VWludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3
U2V0VWludDMyIjsKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQzMjoKKyAgICAgICAgcmV0dXJu
ICJEYXRhVmlld1NldEZsb2F0MzIiOworICAgIGNhc2UgRGF0YVZpZXdTZXRGbG9hdDY0OgorICAg
ICAgICByZXR1cm4gIkRhdGFWaWV3U2V0RmxvYXQ2NCI7CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzOSw2ICsxMzksMjMgQEAgZW51bSBJbnRyaW5zaWMgewogICAgIENQVVJkdHNjSW50cmluc2lj
LAogICAgIENQVUNwdWlkSW50cmluc2ljLAogICAgIENQVVBhdXNlSW50cmluc2ljLAorCisgICAg
RGF0YVZpZXdHZXRJbnQ4LAorICAgIERhdGFWaWV3R2V0VWludDgsCisgICAgRGF0YVZpZXdHZXRJ
bnQxNiwKKyAgICBEYXRhVmlld0dldFVpbnQxNiwKKyAgICBEYXRhVmlld0dldEludDMyLAorICAg
IERhdGFWaWV3R2V0VWludDMyLAorICAgIERhdGFWaWV3R2V0RmxvYXQzMiwKKyAgICBEYXRhVmll
d0dldEZsb2F0NjQsCisgICAgRGF0YVZpZXdTZXRJbnQ4LAorICAgIERhdGFWaWV3U2V0VWludDgs
CisgICAgRGF0YVZpZXdTZXRJbnQxNiwKKyAgICBEYXRhVmlld1NldFVpbnQxNiwKKyAgICBEYXRh
Vmlld1NldEludDMyLAorICAgIERhdGFWaWV3U2V0VWludDMyLAorICAgIERhdGFWaWV3U2V0Rmxv
YXQzMiwKKyAgICBEYXRhVmlld1NldEZsb2F0NjQsCiB9OwogCiBjb25zdCBjaGFyKiBpbnRyaW5z
aWNOYW1lKEludHJpbnNpYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogLyogU291
cmNlIGZvciBKU0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gZGF0YVZpZXdUYWJsZQot
ICBnZXRJbnQ4ICAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4ICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0VWludDggICAgICAgICAgICAgIGRh
dGFWaWV3UHJvdG9GdW5jR2V0VWludDggICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAg
ICAxCi0gIGdldEludDE2ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDE2ICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRVaW50MTYgICAgICAgICAg
ICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
ICAgICAgIDEKLSAgZ2V0SW50MzIgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50
MzIgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldFVpbnQzMiAgICAg
ICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQzMiAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gICAgICAgMQotICBnZXRGbG9hdDMyICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNH
ZXRGbG9hdDMyICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0RmxvYXQ2
NCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NCAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAgICAgICAxCi0gIHNldEludDggICAgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
RnVuY1NldEludDggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRV
aW50OCAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50OCAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0SW50MTYgICAgICAgICAgICAgIGRhdGFWaWV3
UHJvdG9GdW5jU2V0SW50MTYgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0g
IHNldFVpbnQxNiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNiAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRJbnQzMiAgICAgICAgICAgICAgZGF0
YVZpZXdQcm90b0Z1bmNTZXRJbnQzMiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAg
IDIKLSAgc2V0VWludDMyICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldEZsb2F0MzIgICAgICAgICAg
ICBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
ICAgICAgMgotICBzZXRGbG9hdDY0ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9h
dDY0ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKKyAgZ2V0SW50OCAgICAgICAg
ICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50OCAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAgICAgICAxICBEYXRhVmlld0dldEludDgKKyAgZ2V0VWludDggICAgICAgICAgICAgIGRh
dGFWaWV3UHJvdG9GdW5jR2V0VWludDggICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAg
ICAxICBEYXRhVmlld0dldFVpbnQ4CisgIGdldEludDE2ICAgICAgICAgICAgICBkYXRhVmlld1By
b3RvRnVuY0dldEludDE2ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0
YVZpZXdHZXRJbnQxNgorICBnZXRVaW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNH
ZXRVaW50MTYgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0
VWludDE2CisgIGdldEludDMyICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDMy
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRJbnQzMgor
ICBnZXRVaW50MzIgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0VWludDMyCisgIGdldEZs
b2F0MzIgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRGbG9hdDMyCisgIGdldEZsb2F0NjQg
ICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRGbG9hdDY0CisgIHNldEludDggICAgICAgICAg
ICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEludDggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gICAgICAgMiAgRGF0YVZpZXdTZXRJbnQ4CisgIHNldFVpbnQ4ICAgICAgICAgICAgICBkYXRh
Vmlld1Byb3RvRnVuY1NldFVpbnQ4ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAg
MiAgRGF0YVZpZXdTZXRVaW50OAorICBzZXRJbnQxNiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90
b0Z1bmNTZXRJbnQxNiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFW
aWV3U2V0SW50MTYKKyAgc2V0VWludDE2ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0
VWludDE2ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldFVp
bnQxNgorICBzZXRJbnQzMiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMiAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0SW50MzIKKyAg
c2V0VWludDMyICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldFVpbnQzMgorICBzZXRGbG9h
dDMyICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMyICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0RmxvYXQzMgorICBzZXRGbG9hdDY0ICAg
ICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0RmxvYXQ2NAogICBidWZmZXIgICAgICAgICAgICAg
ICAgZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlciAgICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29y
ICAgICAgIDAKICAgYnl0ZUxlbmd0aCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRl
TGVuZ3RoICAgICAgICBEb250RW51bXxBY2Nlc3NvciAgICAgICAwCiAgIGJ5dGVPZmZzZXQgICAg
ICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCAgICAgICAgRG9udEVudW18QWNj
ZXNzb3IgICAgICAgMApJbmRleDogU291cmNlL1dURi93dGYvVHJpU3RhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9UcmlTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAK
IG5hbWVzcGFjZSBXVEYgewogCi1lbnVtIFRyaVN0YXRlIHsKK2VudW0gVHJpU3RhdGUgOiBpbnQ4
X3QgewogICAgIEZhbHNlVHJpU3RhdGUsCiAgICAgVHJ1ZVRyaVN0YXRlLAogICAgIE1peGVkVHJp
U3RhdGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347354</attachid>
            <date>2018-08-17 01:19:13 -0700</date>
            <delta_ts>2018-08-17 16:53:20 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>55926</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3LWppdC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL3N0cmVzcy9kYXRhdmlldy1qaXQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJl
c3MvZGF0YXZpZXctaml0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgzIEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJC
YWQhIik7Cit9CisKKy8vIE9PUFM6IGFkZCB1bnNpZ25lZCB0ZXN0cyEKKworZnVuY3Rpb24gdGVz
dDEoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8u
Z2V0SW50MzIoaSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShiaWdFbmRpYW4pOworICAg
IGZ1bmN0aW9uIGxpdHRsZUVuZGlhbihvLCBpKSB7CisgICAgICAgIHJldHVybiBvLmdldEludDMy
KGksIHRydWUpOworICAgIH0KKyAgICBub0lubGluZShsaXR0bGVFbmRpYW4pOworICAgIGZ1bmN0
aW9uIGJpRW5kaWFuKG8sIGksIGIpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0SW50MzIoaSwgYik7
CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAgIGxldCBhYiA9IG5ldyBBcnJh
eUJ1ZmZlcig0KTsKKyAgICBsZXQgdGEgPSBuZXcgSW50MzJBcnJheShhYik7CisgICAgdGFbMF0g
PSAweDAxMDIwMzA0OworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihk
diwgMCkgPT09IDB4MDQwMzAyMDEpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAw
KSA9PT0gMHgwMTAyMDMwNCk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFzc2Vy
dChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwNDAzMDIwMSk7
CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAweDA0MDMwMjAxKTsKKyAgICAgICAgYXNzZXJ0
KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAxMDIwMzA0
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxz
ZSkgPT09IDB4MDQwMzAyMDEpOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgdGhl
IHJpZ2h0IHNpZ24uCisgICAgdGFbMF0gPSAtMzIzNjEzODY7IC8vIDB4ZmUxMjM0NTYKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlh
bihkdiwgMCkgPT09IDB4NTYzNDEyZmUpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2
LCAwKSA9PT0gLTMyMzYxMzg2KTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNz
ZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVlKSA9PT0gLTMyMzYxMzg2KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IDB4NTYzNDEyZmUp
OworICAgIH0KKworICAgIC8vIC0yMTQ2MjkwNjAyID09IChpbnQpMHg4MDEyMzQ1NgorICAgIHRh
WzBdID0gMHg1NjM0MTI4MDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsK
KyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT09IC0yMTQ2MjkwNjAyKTsKKyAgICAg
ICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4NTYzNDEyODApOworICAgICAgICBp
ZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAw
eDU2MzQxMjgwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2
LCAwLCBmYWxzZSkgPT09IC0yMTQ2MjkwNjAyKTsKKyAgICB9Cit9CisvL3Rlc3QxKCk7CisKK2Z1
bmN0aW9uIHRlc3QyKCkgeworICAgIGZ1bmN0aW9uIGJpZ0VuZGlhbihvLCBpKSB7CisgICAgICAg
IHJldHVybiBvLmdldEludDE2KGksIGZhbHNlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlnRW5k
aWFuKTsKKyAgICBmdW5jdGlvbiBsaXR0bGVFbmRpYW4obywgaSkgeworICAgICAgICByZXR1cm4g
by5nZXRJbnQxNihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUobGl0dGxlRW5kaWFuKTsK
KyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAgICAgIHJldHVybiBvLmdldElu
dDE2KGksIGIpOworICAgIH0KKyAgICBub0lubGluZShiaUVuZGlhbik7CisKKyAgICBsZXQgYWIg
PSBuZXcgQXJyYXlCdWZmZXIoMik7CisgICAgbGV0IHRhID0gbmV3IEludDE2QXJyYXkoYWIpOwor
ICAgIHRhWzBdID0gMHgwMTAyOworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0Vu
ZGlhbihkdiwgMCkgPT09IDB4MDIwMSk7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYs
IDApID09PSAweDAxMDIpOworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQo
YmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAxMDIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwMjAxKTsKKyAgICB9CisK
KyAgICAvLyBDaGVjayBzaWduLgorICAgIHRhWzBdID0gLTUxMjsgLy8gMHhmZTAwCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4o
ZHYsIDApID09PSAweDAwZmUpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9
PT0gLTUxMik7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlh
bihkdiwgMCwgdHJ1ZSkgPT09IC01MTIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3Nl
cnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwMGZlKTsKKyAgICB9CisKKyAgICAvLyBD
aGVjayBzaWduIGV4dGVuc2lvbi4KKyAgICB0YVswXSA9IDB4MDBmZTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkg
PT09IC01MTIpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9PT0gMHgwMGZl
KTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAw
LCB0cnVlKSA9PT0gMHgwMGZlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJp
RW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IC01MTIpOworICAgIH0KK30KKy8vdGVzdDIoKTsKKwor
ZnVuY3Rpb24gdGVzdDMoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAg
ICAgcmV0dXJuIG8uZ2V0RmxvYXQzMihpLCBmYWxzZSk7CisgICAgfQorICAgIG5vSW5saW5lKGJp
Z0VuZGlhbik7CisgICAgZnVuY3Rpb24gbGl0dGxlRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0
dXJuIG8uZ2V0RmxvYXQzMihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUobGl0dGxlRW5k
aWFuKTsKKyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAgICAgIHJldHVybiBv
LmdldEZsb2F0MzIoaSwgYik7CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAg
IGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICBsZXQgdGEgPSBuZXcgRmxvYXQzMkFy
cmF5KGFiKTsKKyAgICBjb25zdCBub3JtYWwgPSAxMjkxMi40MDM7IC8vIDB4NDY0OWMxOWQKKyAg
ICBjb25zdCBub3JtYWxBc0RvdWJsZSA9IDEyOTEyLjQwMzMyMDMxMjUwMDsKKyAgICAvLzlkYzE0
OTQ2IAorICAgIGNvbnN0IGZsaXBwZWQgPSAtNS4xMTYyNDM3NTg5OTE4ODg0ZS0yMTsKKyAgICB0
YVswXSA9IG5vcm1hbDsKKworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4o
ZHYsIDApID09PSBmbGlwcGVkKTsKKyAgICAgICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkg
PT09IDEyOTEyLjQwMzMyMDMxMjUwMCk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAg
IGFzc2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IG5vcm1hbEFzRG91YmxlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IGZs
aXBwZWQpOworICAgIH0KK30KKy8vdGVzdDMoKTsKKworZnVuY3Rpb24gdGVzdDQoKSB7CisgICAg
ZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0VWludDMyKGks
IGZhbHNlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlnRW5kaWFuKTsKKyAgICBmdW5jdGlvbiBs
aXR0bGVFbmRpYW4obywgaSkgeworICAgICAgICByZXR1cm4gby5nZXRVaW50MzIoaSwgdHJ1ZSk7
CisgICAgfQorICAgIG5vSW5saW5lKGxpdHRsZUVuZGlhbik7CisgICAgZnVuY3Rpb24gYmlFbmRp
YW4obywgaSwgYikgeworICAgICAgICByZXR1cm4gby5nZXRVaW50MzIoaSwgYik7CisgICAgfQor
ICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAgIGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcig0
KTsKKyAgICBsZXQgdGEgPSBuZXcgVWludDMyQXJyYXkoYWIpOworICAgIHRhWzBdID0gMHhhMGIw
ZDBmMDsKKworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09
PSAweGYwZDBiMGEwKTsKKyAgICAgICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4
YTBiMGQwZjApOworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRp
YW4oZHYsIDAsIHRydWUpID09PSAweGEwYjBkMGYwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IDB4ZjBkMGIwYTApOworICAgIH0K
K30KK3Rlc3Q0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAyMzQ4NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw2ICs0MDgsMjMgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5wb3BjbnRfcnIoc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgYnl0ZVN3
YXAzMihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJzd2FwbF9y
KGRzdCk7CisgICAgfQorCisgICAgdm9pZCBieXRlU3dhcDE2KFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm9sd19pOHIoOCwgZHN0KTsKKyAgICB9CisKKyNpZiBD
UFUoWDg2XzY0KQorICAgIHZvaWQgYnl0ZVN3YXA2NChSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmJzd2FwcV9yKGRzdCk7CisgICAgfQorI2VuZGlmCisKICAgICAv
LyBPbmx5IHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgdm9pZCBpbGxlZ2FsSW5zdHJ1
Y3Rpb24oKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDYgKzMz
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAweEMwLAogICAg
ICAgICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1AyX1BFWFRSV19HZFVk
SWIgICA9IDB4QzUsCisgICAgICAgIE9QMl9CU1dBUCAgICAgICAgICAgPSAweEM4LAogICAgICAg
ICBPUDJfUFNMTFFfVWRxSWIgICAgID0gMHg3MywKICAgICAgICAgT1AyX1BTUkxRX1VkcUliICAg
ICA9IDB4NzMsCiAgICAgICAgIE9QMl9QT1JfVmRxV2RxICAgICAgPSAwWEVCLApAQCAtMTYzOCw2
ICsxNjM5LDE4IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAgIHZvaWQgYnN3YXBsX3Io
UmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1Ay
X0JTV0FQLCBkc3QpOworICAgIH0KKworI2lmIENQVShYODZfNjQpCisgICAgdm9pZCBic3dhcHFf
cihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9CU1dBUCwgZHN0KTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQgdHpjbnRfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9TU0VfRjMpOwpAQCAtMTcwMSw2ICsxNzE0LDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgICAgIH0KICAgICB9CisK
KyAgICB0ZW1wbGF0ZTxHcm91cE9wY29kZUlEIG9wPgorICAgIHZvaWQgc2hpZnRJbnN0cnVjdGlv
bjE2KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoaW1tID09IDEpCisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2MSwgb3AsIGRzdCk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9F
dkliLCBvcCwgZHN0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KIHB1YmxpYzoKIAogICAgIHZvaWQgc2FybF9pOHIoaW50IGltbSwg
UmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzUzLDYgKzE3NzgsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2Q0wsIEdST1VQMl9PUF9ST0wsIGRzdCk7
CiAgICAgfQogCisgICAgdm9pZCByb2x3X2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb24xNjxHUk9VUDJfT1BfUk9MPihpbW0sIGRzdCk7
CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8R3JvdXBP
cGNvZGVJRCBvcD4KQEAgLTQzMzMsNiArNDM2MywxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
d3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcpCisgICAgICAgIHsK
KyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZl
cik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKDAsIDAsIHJlZyk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAg
ICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlICsgKHJlZyAmIDcpKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGlu
dCByZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAgIHsKICAgICAgICAgICAgIFNpbmdsZUluc3Ry
dWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CkBAIC00NTA2LDYgKzQ1NDQsMTQg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTUFkZHIocmVnLCBhZGRy
ZXNzKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wNjQoVHdvQnl0ZU9wY29k
ZUlEIG9wY29kZSwgaW50IHJlZykKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1
Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5l
bWl0UmV4VygwLCAwLCByZWcpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQo
T1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9w
Y29kZSArIChyZWcgJiA3KSk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHR3b0J5dGVPcDY0
KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAg
IHsKICAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1
ZmZlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsy
MDMsMTEgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cgogICAgICAg
ICAgICAgICAgIHN0ck91dC5wcmludCgiRGVyaXZlZEFycmF5Iik7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHZhbHVl
ICYgU3BlY0RhdGFWaWV3T2JqZWN0KQorICAgICAgICAgICAgICAgIHN0ck91dC5wcmludCgiRGF0
YVZpZXciKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpc1RvcCA9IGZhbHNl
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCh2YWx1ZSAmIFNwZWNTdHJpbmcpID09IFNwZWNT
dHJpbmcpCkBAIC00MzIsNiArNDM3LDkgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9t
Q2xhc3NJbmZvKAogCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBQcm94eU9iamVjdDo6aW5mbygpKQog
ICAgICAgICByZXR1cm4gU3BlY1Byb3h5T2JqZWN0OworCisgICAgaWYgKGNsYXNzSW5mbyA9PSBK
U0RhdGFWaWV3OjppbmZvKCkpCisgICAgICAgIHJldHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7CiAg
ICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTRnVuY3Rpb246OmluZm8oKSkp
IHsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0JvdW5kRnVuY3Rpb246OmluZm8oKSkKQEAg
LTU1OSw2ICs1NjcsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNU
CiAgICAgICAgIHJldHVybiBTcGVjV2Vha01hcE9iamVjdDsKICAgICBjYXNlIEpTV2Vha1NldFR5
cGU6CiAgICAgICAgIHJldHVybiBTcGVjV2Vha1NldE9iamVjdDsKKyAgICBjYXNlIERhdGFWaWV3
VHlwZToKKyAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC03NTAsNiArNzYwLDggQEAg
U3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RyaW5nKGNvbgogICAgICAgICByZXR1cm4g
U3BlY1Byb3h5T2JqZWN0OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEZXJp
dmVkQXJyYXkiLCBzdHJsZW4oIlNwZWNEZXJpdmVkQXJyYXkiKSkpCiAgICAgICAgIHJldHVybiBT
cGVjRGVyaXZlZEFycmF5OworICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEYXRh
Vmlld09iamVjdCIsIHN0cmxlbigiU3BlY0RhdGFWaWV3T2JqZWN0IikpKQorICAgICAgICByZXR1
cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNw
ZWNPYmplY3RPdGhlciIsIHN0cmxlbigiU3BlY09iamVjdE90aGVyIikpKQogICAgICAgICByZXR1
cm4gU3BlY09iamVjdE90aGVyOwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNP
YmplY3QiLCBzdHJsZW4oIlNwZWNPYmplY3QiKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMjM0ODczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDcgKzY1LDYgQEAgc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNX
ZWFrU2V0Twogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNQcm94eU9iamVjdCAgICAg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBQcm94
eSBvYmplY3Qgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNEZXJpdmVkQXJyYXkgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIy
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBEZXJpdmVkQXJyYXkgb2JqZWN0Lgogc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3RPdGhlciAgICAgICAgICAgICAgICAgICAgICAgPSAx
dWxsIDw8IDIzOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gb2JqZWN0IGJ1dCBub3QgSlNGaW5hbE9i
amVjdCwgSlNBcnJheSwgb3IgSlNGdW5jdGlvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0
IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0Rp
cmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwg
U3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dl
YWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNE
ZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXI7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGlu
ZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwg
MjQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBhbiBpZGVudGlmaWVy
Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAxdWxsIDw8IDI1OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywg
YW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY1N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmdJZGVudCB8
IFNwZWNTdHJpbmdWYXI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLgpAQCAtOTMsNyAr
OTIsOSBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgCiBzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IFNwZWNCb29sZWFuIHwgU3BlY090aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEg
Ym9vbGVhbiwgTnVsbCwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNFbXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM3OyAvLyBJ
dCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgogc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8
IDM4OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgMzk7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNT
dHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVj
QmlnSW50OyAvLyBJdCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNG
aW5hbE9iamVjdCB8IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5Vmll
dyB8IFNwZWNEaXJlY3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmlu
Z09iamVjdCB8IFNwZWNSZWdFeHBPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVj
dCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmpl
Y3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2Jq
ZWN0OyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBw
cmVkaWN0aW9uLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1i
b2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlND
ZWxsLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNj
OyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5
IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNCeXRlY29kZVRvcCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNF
bXB0eTsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUy
T25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBi
ZSBmb3VuZCBpbiBhIGJ5dGVjb2RlIGxvY2FsLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2
aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcwLDkgKzM3NzAsMjQgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBmaWx0ZXIo
bm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAg
ICAKLSAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50OiB7CisgICAgICAg
IERhdGFWaWV3RGF0YSBkYXRhID0gbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CisgICAgICAgIGlmIChk
YXRhLmJ5dGVTaXplIDwgNCkKKyAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2Rl
LCBTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIShub2Rl
LT5wcmVkaWN0aW9uKCkgJiB+U3BlY0ludDMyT25seSkpCisgICAgICAgICAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVE
b3VibGUpOyAvLyBPT1BTOiBkbyBpbnQ1MiBoZXJlLgorICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKKyAgICAgICAgc2V0Tm9uQ2Vs
bFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNGdWxsRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgICAgICAKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICAvLyBJdCBtYXkgYmUg
dGhhdCBkdXJpbmcgYSBwcmV2aW91cyBydW4gb2YgQUkgd2UgcHJvdmVkIHRoYXQgc29tZXRoaW5n
IHdhcyB1bnJlYWNoYWJsZSwgYnV0CiAgICAgICAgIC8vIGR1cmluZyB0aGlzIHJ1biBvZiBBSSB3
ZSBmb3JnZXQgdGhhdCBpdCdzIHVucmVhY2hhYmxlLiBBSSdzIHByb29mcyBkb24ndCBoYXZlIHRv
IGdldApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDc5LDYgKzMwNzksOTgg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbAogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50ODoKKyAgICBjYXNlIERh
dGFWaWV3R2V0VWludDg6CisgICAgY2FzZSBEYXRhVmlld0dldEludDE2OgorICAgIGNhc2UgRGF0
YVZpZXdHZXRVaW50MTY6CisgICAgY2FzZSBEYXRhVmlld0dldEludDMyOgorICAgIGNhc2UgRGF0
YVZpZXdHZXRVaW50MzI6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0MzI6CisgICAgY2FzZSBE
YXRhVmlld0dldEZsb2F0NjQ6IHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzIDwgMikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5
cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGluc2VydENoZWNrcygp
OworCisgICAgICAgIHVpbnQ4X3QgYnl0ZVNpemU7CisgICAgICAgIE5vZGVUeXBlIG9wID0gRGF0
YVZpZXdHZXRJbnQ7CisgICAgICAgIGJvb2wgaXNTaWduZWQgPSBmYWxzZTsKKyAgICAgICAgc3dp
dGNoIChpbnRyaW5zaWMpIHsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDg6CisgICAgICAg
ICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAg
Y2FzZSBEYXRhVmlld0dldFVpbnQ4OgorICAgICAgICAgICAgYnl0ZVNpemUgPSAxOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDE2OgorICAgICAgICAg
ICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNh
c2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDI7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50MzI6CisgICAgICAgICAg
ICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2Fz
ZSBEYXRhVmlld0dldFVpbnQzMjoKKyAgICAgICAgICAgIGJ5dGVTaXplID0gNDsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDMyOgorICAgICAgICAg
ICAgYnl0ZVNpemUgPSA0OworICAgICAgICAgICAgb3AgPSBEYXRhVmlld0dldEZsb2F0OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDY0OgorICAgICAg
ICAgICAgYnl0ZVNpemUgPSA4OworICAgICAgICAgICAgb3AgPSBEYXRhVmlld0dldEZsb2F0Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgVHJpU3RhdGUgaXNM
aXR0bGVFbmRpYW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICBOb2RlKiBsaXR0bGVFbmRpYW5D
aGlsZCA9IG51bGxwdHI7CisgICAgICAgIGlmIChieXRlU2l6ZSA+IDEpIHsKKyAgICAgICAgICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IDMpCisgICAgICAgICAgICAgICAgaXNM
aXR0bGVFbmRpYW4gPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgbGl0dGxlRW5kaWFuQ2hpbGQgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMiwgcmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBpZiAobGl0dGxlRW5kaWFu
Q2hpbGQtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBjb25z
dGFudCA9IGxpdHRsZUVuZGlhbkNoaWxkLT5jb25zdGFudCgpLT52YWx1ZSgpOworICAgICAgICAg
ICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IGNvbnN0YW50LnB1cmVUb0Jvb2xlYW4oKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzTGl0dGxlRW5kaWFuICE9IE1peGVkVHJpU3RhdGUpCisg
ICAgICAgICAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IG51bGxwdHI7CisgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0g
TWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisKKyAgICAgICAgRGF0
YVZpZXdEYXRhIGRhdGEgeyB9OworICAgICAgICBkYXRhLmlzTGl0dGxlRW5kaWFuID0gaXNMaXR0
bGVFbmRpYW47CisgICAgICAgIGRhdGEuaXNTaWduZWQgPSBpc1NpZ25lZDsKKyAgICAgICAgZGF0
YS5ieXRlU2l6ZSA9IGJ5dGVTaXplOworCisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0T3BlcmFuZCksCisgICAgICAgICAgICBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZGF0YS5hc1F1
YWRXb3JkKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEs
IHJlZ2lzdGVyT2Zmc2V0KSksIGxpdHRsZUVuZGlhbkNoaWxkKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQ4OgorICAgIGNhc2UgRGF0YVZp
ZXdTZXRVaW50ODoKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50MTY6CisgICAgY2FzZSBEYXRhVmll
d1NldFVpbnQxNjoKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50MzI6CisgICAgY2FzZSBEYXRhVmll
d1NldFVpbnQzMjoKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQzMjoKKyAgICBjYXNlIERhdGFW
aWV3U2V0RmxvYXQ2NDogeworICAgICAgICBDUkFTSCgpOworICAgICAgICAvLyBPT1BTCisgICAg
fQorCiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eUludHJpbnNpYzogewogICAgICAgICBpZiAoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lv
biAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc1OCw3ICsxNzU4LDE0IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFk
aXhDb25zdGFudDoKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT52YWxpZFJhZGl4
Q29uc3RhbnQoKSkpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCisgICAgY2FzZSBEYXRh
Vmlld0dldEZsb2F0OgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6IHsKKyAgICAgICAgcmVhZChN
aXNjRmllbGRzKTsKKyAgICAgICAgcmVhZChUeXBlZEFycmF5UHJvcGVydGllcyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgs
NiArMzE4LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAg
ICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNh
c2UgUHVzaFdpdGhTY29wZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwNCw2ICsyMTA0LDE1
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6Cisg
ICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDogeworICAgICAgICAgICAgZml4RWRnZTxEYXRh
Vmlld09iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQzKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAg
ICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBm
b3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0
QXJndW1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24g
MjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExNyw2ICsxMTcsMTggQEAgc3RydWN0IE5ld0FycmF5QnVmZmVyRGF0YSB7CiBz
dGF0aWNfYXNzZXJ0KHNpemVvZihJbmRleGluZ1R5cGUpIDw9IHNpemVvZih1bnNpZ25lZCksICIi
KTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE5ld0FycmF5QnVmZmVyRGF0YSkgPT0gc2l6ZW9mKHVp
bnQ2NF90KSwgIiIpOwogCitzdHJ1Y3QgRGF0YVZpZXdEYXRhIHsKKyAgICB1bmlvbiB7CisgICAg
ICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IGJ5dGVTaXplOworICAgICAgICAgICAg
Ym9vbCBpc1NpZ25lZDsKKyAgICAgICAgICAgIFRyaVN0YXRlIGlzTGl0dGxlRW5kaWFuOworICAg
ICAgICB9OworICAgICAgICB1aW50NjRfdCBhc1F1YWRXb3JkOworICAgIH07Cit9Oworc3RhdGlj
X2Fzc2VydChzaXplb2YoRGF0YVZpZXdEYXRhKSA9PSBzaXplb2YodWludDY0X3QpLCAiIik7CisK
IHN0cnVjdCBCcmFuY2hUYXJnZXQgewogICAgIEJyYW5jaFRhcmdldCgpCiAgICAgICAgIDogYmxv
Y2soMCkKQEAgLTE2NTksNiArMTY3MSw4IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBHZXREeW5h
bWljVmFyOgogICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OgogICAgICAg
ICBjYXNlIFRvVGhpczoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICAgICAgY2Fz
ZSBEYXRhVmlld0dldEZsb2F0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTQzLDYgKzIxNTcsMTIgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dW5zaWduZWQ+KCk7CiAgICAgfQog
CisgICAgRGF0YVZpZXdEYXRhIGRhdGFWaWV3RGF0YSgpCisgICAgeworICAgICAgICAvL0FTU0VS
VChvcCgpID09IERhdGFWaWV3R2V0SW50IHx8IG9wKCkgPT0gRGF0YVZpZXdHZXRGbG9hdCB8fCBv
cCgpID09IERhdGFWaWV3U2V0KTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxEYXRhVmll
d0RhdGE+KG1fb3BJbmZvLmFzPHVpbnQ2NF90PigpKTsKKyAgICB9CisKICAgICBib29sIHNob3Vs
ZEdlbmVyYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjM0ODczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00ODMsNiArNDgzLDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhGaWx0ZXJHZXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
RmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVy
UHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIC8qIERhdGEgdmlldyBhY2Nl
c3MgKi8gXAorICAgIG1hY3JvKERhdGFWaWV3R2V0SW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9hdCwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwKKworICAgIC8vbWFjcm8oRGF0YVZpZXdTZXQsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIAogLy8gVGhpcyBlbnVtIGdlbmVy
YXRlcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBpZCBmb3IgYWxsIE5vZGUgdHlwZXMsCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc1MCw3ICs3NTAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENhbGxE
T01HZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICAgICAgY2FzZSBHZXRQ
cm90b3R5cGVPZjoKLSAgICAgICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdldDogewor
ICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OiAKKyAgICAgICAgY2FzZSBE
YXRhVmlld0dldEludDoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OiB7CiAgICAgICAg
ICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAgICAg
ICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToK
KyAgICAgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKICAgICAgICAgY2FzZSBPYmplY3RPck90
aGVyVXNlOgogICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOgogICAgICAgICBjYXNlIFN0cmlu
Z1VzZToKQEAgLTYwMiw2ICs2MDMsMTAgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3Rh
dGVUeXBlJiBzdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFW
aWV3R2V0SW50OgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBPT1BTOiBjYW4gd2UgYWx3YXlzIGRvIHRoaXMgb3IganVzdCBzb21ldGltZXM/CisK
ICAgICBjYXNlIFNldEFkZDoKICAgICBjYXNlIE1hcFNldDoKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTUzLDYgKzQ1NTMs
MTg4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
Y29tcGlsZUNsZWFyQ2F0Y2hMb2NhbHMobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2Fz
ZSBEYXRhVmlld0dldEZsb2F0OgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6IHsKKyAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgZGF0YVZpZXcodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBHUFJSZWcgZGF0YVZpZXdHUFIgPSBkYXRhVmlldy5ncHIoKTsKKyAgICAgICAgc3BlY3Vs
YXRlRGF0YVZpZXdPYmplY3Qobm9kZS0+Y2hpbGQxKCksIGRhdGFWaWV3R1BSKTsKKworICAgICAg
ICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKKworICAgICAgICBHUFJUZW1wb3Jh
cnkgdGVtcDEodGhpcyk7CisgICAgICAgIEdQUlJlZyB0MSA9IHRlbXAxLmdwcigpOworICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisgICAgICAgIEdQUlJlZyB0MiA9IHRlbXAyLmdw
cigpOworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ+IGlz
TGl0dGxlRW5kaWFuT3BlcmFuZDsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAg
ICAgICAgaXNMaXR0bGVFbmRpYW5PcGVyYW5kLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQzKCkp
OworICAgICAgICBHUFJSZWcgaXNMaXR0bGVFbmRpYW5HUFIgPSBpc0xpdHRsZUVuZGlhbk9wZXJh
bmQgPyBpc0xpdHRsZUVuZGlhbk9wZXJhbmQtPmdwcigpIDogSW52YWxpZEdQUlJlZzsKKworICAg
ICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFWaWV3RGF0YSgpOworCisgICAgICAg
IG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0Mik7CisgICAgICAgIGlmIChkYXRhLmJ5
dGVTaXplID4gMSkgeworICAgICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKGRhdGEu
Ynl0ZVNpemUgLSAxKSwgdDIpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJv
dW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIHQyLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKDApKSk7CisgICAgICAgIH0KKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5k
cywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCB0MikpOyAvLyBUaGlzIHdpbGwgY2F0
Y2ggYW55IG5lZ2F0aXZlIGluZGljZXMuIE9PUFM6IGFkZCBhIHRlc3QuIFRoaXMgaXMgc2FmZSBi
ZWNhdXNlIHdlIGtub3cgdDIgaXMgbm90IG5lZ2F0aXZlLgorCisgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZlZlY3RvcigpKSwgdDIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlU291cmNlKCksIG5vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIHQyKSk7IC8vIE9PUFM6IGFkZCB0ZXN0LiBDYW4gd2UgbmV1dGVyIGEgSlNE
YXRhVmlldz8KKworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgdDEp
OworICAgICAgICBhdXRvIGJhc2VJbmRleCA9IEpJVENvbXBpbGVyOjpCYXNlSW5kZXgodDIsIHQx
LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNPbmUpOworCisgICAgICAgIC8vIE9PUFM6IGRvIHBvaW50
ZXIgY2FnaW5nCisgICAgICAgIGlmIChub2RlLT5vcCgpID09IERhdGFWaWV3R2V0SW50KSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGRhdGEuYnl0ZVNpemUpIHsKKyAgICAgICAgICAgIGNhc2UgMToK
KyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAg
bV9qaXQubG9hZDhTaWduZWRFeHRlbmRUbzMyKGJhc2VJbmRleCwgdDIpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoYmFzZUluZGV4LCB0Mik7
CisgICAgICAgICAgICAgICAgaW50MzJSZXN1bHQodDIsIG5vZGUpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiB7CisgICAgICAgICAgICAgICAgYXV0byBlbWl0
TGl0dGxlRW5kaWFuTG9hZCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlz
U2lnbmVkKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDE2U2lnbmVkRXh0ZW5k
VG8zMihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDE2KGJhc2VJbmRleCwgdDIpOworICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgYXV0byBlbWl0QmlnRW5kaWFuTG9hZCA9IFsmXSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQxNihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAxNih0Mik7CisgICAgICAgICAgICAgICAgICAgIGlm
IChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVu
ZDE2VG8zMih0MiwgdDIpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAg
ICAgICBlbWl0QmlnRW5kaWFuTG9hZCgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEu
aXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0
TGl0dGxlRW5kaWFuTG9hZCgpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVn
KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpc0JpZ0VuZGlhbiA9IG1faml0LmJyYW5jaFRl
c3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgaXNMaXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0z
MigxKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Mb2FkKCk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAg
ICAgICAgaXNCaWdFbmRpYW4ubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgICAgICBlbWl0
QmlnRW5kaWFuTG9hZCgpOworICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW50MzJSZXN1bHQodDIsIG5vZGUp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSA0OiB7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKGJhc2VJbmRleCwgdDIpOworCisg
ICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkK
KyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAzMih0Mik7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBNaXhlZFRyaVN0YXRlKSB7CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFs
aWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGlzTGl0dGxlRW5kaWFuID0gbV9q
aXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBpc0xpdHRsZUVuZGlhbkdQ
UiwgVHJ1c3RlZEltbTMyKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAz
Mih0Mik7CisgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuLmxpbmsoJm1faml0KTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkK
KyAgICAgICAgICAgICAgICAgICAgaW50MzJSZXN1bHQodDIsIG5vZGUpOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdElzSW50MzIgPSAhKG5v
ZGUtPnByZWRpY3Rpb24oKSAmIH5TcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdElzSW50MzIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVTb3VyY2UoKSwgbm9kZSwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCB0MiwgVHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQzMlJlc3VsdCh0Miwgbm9kZSk7CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBPT1BTOiBEbyBJIG5lZWQg
dGhpcyBnaXZlbiBhYm92ZT8KKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRl
bmQzMlRvUHRyKHQyLCB0Mik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFy
eSBmcFRlbXAodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5jb252ZXJ0SW50
NjRUb0RvdWJsZSh0MiwgZnBUZW1wLmZwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aml0LmJveERvdWJsZShmcFRlbXAuZnByKCksIHQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGpzVmFsdWVSZXN1bHQodDIsIG5vZGUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBGUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJl
c3VsdC5mcHIoKTsKKworICAgICAgICAgICAgc3dpdGNoIChkYXRhLmJ5dGVTaXplKSB7CisgICAg
ICAgICAgICBjYXNlIDQ6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5D
b2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZEZsb2F0KGJhc2VJbmRl
eCwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuY29udmVydEZsb2F0VG9E
b3VibGUocmVzdWx0RlBSLCByZXN1bHRGUFIpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKGJhc2VJbmRleCwgdDIpOworICAgICAgICAgICAgICAgICAgICBt
X2ppdC5ieXRlU3dhcDMyKHQyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZTMyVG9G
bG9hdCh0MiwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuY29udmVydEZs
b2F0VG9Eb3VibGUocmVzdWx0RlBSLCByZXN1bHRGUFIpOworICAgICAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUp
CisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAg
ICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQ
UiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpc0JpZ0VuZGlh
biA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgaXNMaXR0bGVFbmRp
YW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVF
bmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAo
KTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdFbmRpYW4ubGluaygmbV9qaXQpOworICAgICAg
ICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgICAgICBk
b25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgODogeworICAgICAgICAgICAg
ICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkRG91YmxlKGJhc2VJbmRleCwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgYXV0byBlbWl0QmlnRW5kaWFuQ29kZSA9IFsmXSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXA2NCh0Mik7CisgICAgICAgICAgICAgICAgICAgIG1f
aml0Lm1vdmU2NFRvRG91YmxlKHQyLCByZXN1bHRGUFIpOworICAgICAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUp
CisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAg
ICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQ
UiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpc0JpZ0VuZGlh
biA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgaXNMaXR0bGVFbmRp
YW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVF
bmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAo
KTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdFbmRpYW4ubGluaygmbV9qaXQpOworICAgICAg
ICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgICAgICBk
b25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbm9kZSk7CisgICAgICAgIH0KKworICAgICAg
ICBicmVhazsKKyAgICB9CisKICNpZiBFTkFCTEUoRlRMX0pJVCkgICAgICAgIAogICAgIGNhc2Ug
Q2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2FsbFRp
ZXJVcCA9IG1faml0LmJyYW5jaEFkZDMyKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OTAzLDYgKzk5MDMsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlV2Vh
a1NldE9iagogICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSwgb3BlcmFuZC5ncHIoKSk7
CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2Ug
ZWRnZSwgR1BSUmVnIGNlbGwpCit7CisgICAgc3BlY3VsYXRlQ2VsbFR5cGUoZWRnZSwgY2VsbCwg
U3BlY0RhdGFWaWV3T2JqZWN0LCBEYXRhVmlld1R5cGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjRGF0YVZpZXdPYmplY3QpKQorICAgICAgICByZXR1cm47CisK
KyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAgIHNwZWN1
bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOworfQorCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90aGVyKEVkZ2UgZWRnZSkKIHsKICAgICBpZiAo
IW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNPYmplY3QgfCBTcGVjT3RoZXIpKQpAQCAtMTAyNzEs
NiArMTAyODUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAg
ICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgogICAgICAgICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0
KGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgorICAg
ICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBzcGVjdWxhdGVPYmplY3RPck90aGVyKGVk
Z2UpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTYxMCw2
ICsxNjEwLDggQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlV2Vha01hcE9iamVjdChFZGdl
LCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KEVkZ2UpOwog
ICAgIHZvaWQgc3BlY3VsYXRlV2Vha1NldE9iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7CisgICAg
dm9pZCBzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZURh
dGFWaWV3T2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZU9iamVj
dE9yT3RoZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBHUFJS
ZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKEVk
Z2UgZWRnZSwgR1BSUmVnIHN0cmluZywgR1BSUmVnIHN0b3JhZ2UpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQsMTYgKzEwNCwxOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNl
CiAgICAgICAgIG91dC5wcmludCgiRGVyaXZlZEFycmF5Iik7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIE1hcE9iamVjdFVzZToKLSAgICAgICAgb3V0LnByaW50KCJNYXBPYmplY3RVc2UiKTsK
KyAgICAgICAgb3V0LnByaW50KCJNYXBPYmplY3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgU2V0T2JqZWN0VXNlOgotICAgICAgICBvdXQucHJpbnQoIlNldE9iamVjdFVzZSIpOworICAg
ICAgICBvdXQucHJpbnQoIlNldE9iamVjdCIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBX
ZWFrTWFwT2JqZWN0VXNlOgotICAgICAgICBvdXQucHJpbnQoIldlYWtNYXBPYmplY3RVc2UiKTsK
KyAgICAgICAgb3V0LnByaW50KCJXZWFrTWFwT2JqZWN0Iik7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmludCgiV2Vha1NldE9iamVj
dFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIldlYWtTZXRPYmplY3QiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CisgICAgICAgIG91dC5wcmludCgiRGF0
YVZpZXdPYmplY3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgT2JqZWN0T3JPdGhlclVz
ZToKICAgICAgICAgb3V0LnByaW50KCJPYmplY3RPck90aGVyIik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcw
LDcgQEAgZW51bSBVc2VLaW5kIHsKICAgICBTZXRPYmplY3RVc2UsCiAgICAgV2Vha01hcE9iamVj
dFVzZSwKICAgICBXZWFrU2V0T2JqZWN0VXNlLAorICAgIERhdGFWaWV3T2JqZWN0VXNlLAogICAg
IFN0cmluZ09iamVjdFVzZSwKICAgICBTdHJpbmdPclN0cmluZ09iamVjdFVzZSwKICAgICBOb3RT
dHJpbmdWYXJVc2UsCkBAIC0xNjAsNiArMTYxLDggQEAgaW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5
cGVGaWx0ZXJGb3IoVXNlSwogICAgICAgICByZXR1cm4gU3BlY1dlYWtNYXBPYmplY3Q7CiAgICAg
Y2FzZSBXZWFrU2V0T2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gU3BlY1dlYWtTZXRPYmplY3Q7
CisgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmll
d09iamVjdDsKICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNT
dHJpbmdPYmplY3Q7CiAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKQEAgLTI1OSw2
ICsyNjIsNyBAQCBpbmxpbmUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogICAgIGNhc2UgU2V0
T2JqZWN0VXNlOgogICAgIGNhc2UgV2Vha01hcE9iamVjdFVzZToKICAgICBjYXNlIFdlYWtTZXRP
YmplY3RVc2U6CisgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjM0ODcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTksNiArMzU5LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIAogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZp
bHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIENyZWF0ZVRoaXM6CisgICAgY2FzZSBEYXRhVmll
d0dldEludDoKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CiAgICAgICAgIC8vIFRoZXNlIGFy
ZSBPSy4KICAgICAgICAgYnJlYWs7CiAKQEAgLTQ0NSw2ICs0NDcsNyBAQCBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAgICAgY2FzZSBTZXRPYmpl
Y3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBXZWFrTWFwT2JqZWN0VXNlOgogICAgICAgICAg
ICAgICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKKyAgICAgICAgICAgICAgICBjYXNlIERhdGFW
aWV3T2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgRmluYWxPYmplY3RVc2U6CiAgICAg
ICAgICAgICAgICAgY2FzZSBSZWdFeHBPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
cm94eU9iamVjdFVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwNyw2ICsxMzA3
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgICAg
ICAgICAgY29tcGlsZUZpbHRlcklDU3RhdHVzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0Ogor
ICAgICAgICAgICAgY29tcGlsZURhdGFWaWV3R2V0KCk7CisgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTEy
MjM4LDYgKzEyMjQyLDI0NyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9pbnRlcnByZXRl
ci5maWx0ZXJJQ1N0YXR1cyhtX25vZGUpOwogICAgIH0KKworICAgIExWYWx1ZSBieXRlU3dhcDMy
KExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLT50eXBl
KCkgPT0gSW50MzIpOworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291
dC5wYXRjaHBvaW50KEludDMyKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lz
dGVyKHZhbHVlKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Cisg
ICAgICAgICAgICBqaXQuYnl0ZVN3YXAzMihwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAg
cmV0dXJuIHBhdGNocG9pbnQ7CisgICAgfQorCisgICAgTFZhbHVlIGJ5dGVTd2FwNjQoTFZhbHVl
IHZhbHVlKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBJ
bnQ2NCk7CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNo
cG9pbnQoSW50NjQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFs
dWUpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAg
ICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAg
ICAgIGppdC5ieXRlU3dhcDY0KHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOworICAgICAg
ICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICByZXR1cm4g
cGF0Y2hwb2ludDsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVEYXRhVmlld0dldCgpCisgICAg
eworICAgICAgICBMVmFsdWUgZGF0YVZpZXcgPSBsb3dEYXRhVmlld09iamVjdChtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgIExWYWx1ZSBpc0xpdHRsZUVuZGlhbiA9IG51bGxwdHI7CisgICAgICAgIGlm
IChtX25vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBsb3dCb29s
ZWFuKG1fbm9kZS0+Y2hpbGQzKCkpOworCisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9u
b2RlLT5kYXRhVmlld0RhdGEoKTsKKworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpOworICAgICAgICBMVmFsdWUgbGVuZ3RoVG9DaGVjayA9IGxlbmd0
aDsKKyAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKSB7CisgICAgICAgICAgICBsZW5ndGhU
b0NoZWNrID0gbV9vdXQuc3ViKGxlbmd0aFRvQ2hlY2ssIG1fb3V0LmludDMyT25lKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0ZShVbmNvdW50YWJsZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5s
ZXNzVGhhbihsZW5ndGhUb0NoZWNrLCBtX291dC5pbnQzMlplcm8pKTsKKyAgICAgICAgfQorICAg
ICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJv
dmVPckVxdWFsKGluZGV4LCBsZW5ndGhUb0NoZWNrKSk7IC8vIFRoaXMgd2lsbCBjYXRjaCBuZWdh
dGl2ZSBpbmRpY2VzLgorCisgICAgICAgIExWYWx1ZSB2ZWN0b3IgPSBtX291dC5sb2FkUHRyKGRh
dGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7CisgICAgICAgIC8vIE9P
UFM6IGRvIHBvaW50ZXIgY2FnaW5nCisgICAgICAgIHNwZWN1bGF0ZShVbmNvdW50YWJsZSwganNW
YWx1ZVZhbHVlKHZlY3RvciksIG1fbm9kZSwgbV9vdXQuaXNaZXJvNjQodmVjdG9yKSk7IC8vIE9P
UFM6IENhbiB3ZSBuZXV0ZXIgYSBKU0RhdGFWaWV3PworCisgICAgICAgIFR5cGVkUG9pbnRlciBw
b2ludGVyKG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMsIG1fb3V0LmFkZCh2ZWN0b3IsIG1f
b3V0Lnplcm9FeHRQdHIoaW5kZXgpKSk7CisKKworICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09
IERhdGFWaWV3R2V0SW50KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEuYnl0ZVNpemUpIHsK
KyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkK
KyAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQubG9hZDhTaWduRXh0MzIocG9pbnRl
cikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIo
bV9vdXQubG9hZDhaZXJvRXh0MzIocG9pbnRlcikpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAyOiB7CisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5k
aWFuTG9hZCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmxvYWQxNlNpZ25FeHQzMihwb2lu
dGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmxvYWQxNlplcm9FeHQzMihw
b2ludGVyKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgYXV0byBlbWl0
QmlnRW5kaWFuTG9hZCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIExWYWx1ZSB2YWwgPSBt
X291dC5sb2FkMTZaZXJvRXh0MzIocG9pbnRlcik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
T09QUzogdGVhY2ggYjMgYnl0ZSBzd2FwIQorICAgICAgICAgICAgICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDMyKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHZhbCk7CisgICAgICAgICAg
ICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmJ5dGVTd2FwMTYocGFyYW1zWzBdLmdwcigpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5zaWduRXh0ZW5kMTZUbzMyKHBhcmFtc1swXS5ncHIoKSwgcGFy
YW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
ICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAg
ICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAg
ICAgICAgICAgICAgICAgIHNldEludDMyKGVtaXRCaWdFbmRpYW5Mb2FkKCkpOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAg
ICAgICAgICAgICAgICAgICBzZXRJbnQzMihlbWl0TGl0dGxlRW5kaWFuTG9hZCgpKTsKKyAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgYmlnRW5k
aWFuQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGxpdHRsZUVuZGlhbkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC50ZXN0SXNaZXJvMzIoaXNMaXR0bGVF
bmRpYW4sIG1fb3V0LmNvbnN0SW50MzIoMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5z
dXJlKGJpZ0VuZGlhbkNhc2UpLCB1bnN1cmUobGl0dGxlRW5kaWFuQ2FzZSkpOworCisgICAgICAg
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oYmlnRW5k
aWFuQ2FzZSwgbGl0dGxlRW5kaWFuQ2FzZSk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGJpZ0VuZGlhblJlc3VsdCA9IG1fb3V0LmFuY2hvcihlbWl0QmlnRW5kaWFuTG9hZCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxpdHRsZUVuZGlhbkNhc2UsIGNvbnRpbnVh
dGlvbik7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlzTGl0dGxlRW5kaWFu
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGVtaXRMaXR0bGVFbmRpYW5Mb2FkKCkpOworICAgICAgICAg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAg
ICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQzMiwgYmlnRW5kaWFuUmVzdWx0LCBpc0xpdHRs
ZUVuZGlhblJlc3VsdCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAgICAg
ICAgTFZhbHVlIGxvYWRlZFZhbHVlID0gbV9vdXQubG9hZDMyKHBvaW50ZXIpOworCisgICAgICAg
ICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAg
ICAgICAgICAgICAgICAgbG9hZGVkVmFsdWUgPSBieXRlU3dhcDMyKGxvYWRlZFZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IE1peGVkVHJpU3Rh
dGUpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbGl0dGxlRW5kaWFuUmVz
dWx0ID0gbV9vdXQuYW5jaG9yKGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgTEJh
c2ljQmxvY2sgYmlnRW5kaWFuQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LnRlc3RJc1plcm8zMihpc0xpdHRs
ZUVuZGlhbiwgbV9vdXQuY29uc3RJbnQzMigxKSksCisgICAgICAgICAgICAgICAgICAgICAgICB1
bnN1cmUoYmlnRW5kaWFuQ2FzZSksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGJpZ0VuZGlh
bkNhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGJpZ0VuZGlhblJlc3VsdCA9IG1fb3V0LmFuY2hvcihieXRlU3dhcDMyKGxvYWRlZFZhbHVlKSk7
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAg
ICAgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWUgPSBtX291dC5waGkoSW50MzIsIGxpdHRsZUVu
ZGlhblJlc3VsdCwgYmlnRW5kaWFuUmVzdWx0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgc2V0SW50
MzIobG9hZGVkVmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBib29sIHJlc3VsdElzSW50MzIgPSAhKG1fbm9kZS0+cHJlZGljdGlvbigpICYgflNwZWNJ
bnQzMk9ubHkpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0SXNJbnQzMikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCksIG51
bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGxvYWRlZFZhbHVlLCBtX291dC5pbnQzMlplcm8pKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNldEludDMyKGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBkb3VibGVW
YWwgPSBtX291dC5pbnRUb0RvdWJsZShtX291dC56ZXJvRXh0KGxvYWRlZFZhbHVlLCBJbnQ2NCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsID0gYm94RG91YmxlKGRvdWJsZVZh
bCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKGRvdWJsZVZhbCk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAg
ICAgY2FzZSA0OiB7CisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29kZSA9
IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5mbG9hdFRvRG91YmxlKG1f
b3V0LmxvYWRGbG9hdChwb2ludGVyKSk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAg
ICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAg
ICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBtX291dC5sb2FkMzIocG9pbnRlcik7CisgICAgICAgICAg
ICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQo
RG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lz
dGVyKGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BT
Y3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJh
bXNbMV0uZ3ByKCksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmJ5dGVTd2FwMzIocGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZTMyVG9GbG9hdChwYXJhbXMuZ3BTY3JhdGNoKDApLCBwYXJhbXNbMF0u
ZnByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvbnZlcnRGbG9hdFRvRG91Ymxl
KHBhcmFtc1swXS5mcHIoKSwgcGFyYW1zWzBdLmZwcigpKTsKKyAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpu
b25lKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAgICAg
ICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBU
cnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0TGl0dGxlRW5k
aWFuQ29kZSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFu
ID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0Qmln
RW5kaWFuQ29kZSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgYmlnRW5kaWFuQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxpdHRsZUVuZGlhbkNhc2UgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC50
ZXN0SXNaZXJvMzIoaXNMaXR0bGVFbmRpYW4sIG1fb3V0LmNvbnN0SW50MzIoMSkpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0VuZGlhbkNhc2UpLCB1bnN1cmUobGl0dGxlRW5k
aWFuQ2FzZSkpOworCisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oYmlnRW5kaWFuQ2FzZSwgbGl0dGxlRW5kaWFuQ2FzZSk7CisgICAgICAg
ICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGJpZ0VuZGlhblJlc3VsdCA9IG1fb3V0LmFuY2hv
cihlbWl0QmlnRW5kaWFuQ29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxpdHRs
ZUVuZGlhbkNhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGlzTGl0dGxlRW5kaWFuUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGVtaXRMaXR0bGVFbmRp
YW5Db2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CisgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5waGkoRG91YmxlLCBi
aWdFbmRpYW5SZXN1bHQsIGlzTGl0dGxlRW5kaWFuUmVzdWx0KSk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBj
YXNlIDg6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZd
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmxvYWREb3VibGUocG9pbnRlcik7
CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlh
bkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBt
X291dC5sb2FkNjQocG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlID0g
Ynl0ZVN3YXA2NChsb2FkZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX291
dC5iaXRDYXN0KGxvYWRlZFZhbHVlLCBEb3VibGUpOworICAgICAgICAgICAgICAgIH07CisKKyAg
ICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisg
ICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0TGl0dGxlRW5kaWFuQ29kZSgpKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3Rh
dGUpCisgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0QmlnRW5kaWFuQ29kZSgpKTsK
KyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sg
YmlnRW5kaWFuQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGxpdHRsZUVuZGlhbkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwor
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC50ZXN0SXNaZXJvMzIoaXNM
aXR0bGVFbmRpYW4sIG1fb3V0LmNvbnN0SW50MzIoMSkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zdXJlKGJpZ0VuZGlhbkNhc2UpLCB1bnN1cmUobGl0dGxlRW5kaWFuQ2FzZSkpOworCisg
ICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
YmlnRW5kaWFuQ2FzZSwgbGl0dGxlRW5kaWFuQ2FzZSk7CisgICAgICAgICAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGJpZ0VuZGlhblJlc3VsdCA9IG1fb3V0LmFuY2hvcihlbWl0QmlnRW5kaWFu
Q29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwor
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxpdHRsZUVuZGlhbkNhc2UsIGNv
bnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlzTGl0dGxl
RW5kaWFuUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGVtaXRMaXR0bGVFbmRpYW5Db2RlKCkpOworICAg
ICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAg
ICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5waGkoRG91YmxlLCBiaWdFbmRpYW5SZXN1bHQs
IGlzTGl0dGxlRW5kaWFuUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgIH0KICAgICAKICAgICB2b2lkIGVtaXRTd2l0Y2hGb3JNdWx0aUJ5T2Zm
c2V0KExWYWx1ZSBiYXNlLCBib29sIHN0cnVjdHVyZXNDaGVja2VkLCBWZWN0b3I8U3dpdGNoQ2Fz
ZSwgMj4mIGNhc2VzLCBMQmFzaWNCbG9jayBleGl0KQogICAgIHsKQEAgLTE0NDY4LDYgKzE0NzEz
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSwgcmVz
dWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICBMVmFsdWUgbG93RGF0
YVZpZXdPYmplY3QoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxv
d0NlbGwoZWRnZSk7CisgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBsb3dT
dHJpbmcoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNP
cGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewpAQCAtMTQ5NDMsNiArMTUxOTUsOSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVX
ZWFrU2V0T2JqZWN0KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0
YVZpZXdPYmplY3RVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdl
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAg
ICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU0Mzcs
NiArMTU2OTIsMTcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRP
YmplY3QoZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQorCisgICAgdm9pZCBzcGVjdWxhdGVE
YXRhVmlld09iamVjdChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQorICAgIHsKKyAgICAgICAgRlRM
X1RZUEVfQ0hFQ0soCisgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNE
YXRhVmlld09iamVjdCwgaXNOb3RUeXBlKGNlbGwsIERhdGFWaWV3VHlwZSkpOworICAgIH0KKwor
ICAgIHZvaWQgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSBlZGdlKQorICAgIHsKKyAgICAg
ICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRnZSwgbG93Q2VsbChlZGdlKSk7CisgICAgfQog
ICAgIAogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nKEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3Bw
CShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNiArMjM5LDM4IEBAIGNvbnN0IGNoYXIq
IGludHJpbnNpY05hbWUoSW50cmluc2ljIGludHIKICAgICAgICAgcmV0dXJuICJDUFVDcHVpZElu
dHJpbnNpYyI7CiAgICAgY2FzZSBDUFVQYXVzZUludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJD
UFVQYXVzZUludHJpbnNpYyI7CisgICAgY2FzZSBEYXRhVmlld0dldEludDg6CisgICAgICAgIHJl
dHVybiAiRGF0YVZpZXdHZXRJbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3R2V0VWludDg6CisgICAg
ICAgIHJldHVybiAiRGF0YVZpZXdHZXRVaW50OCI7CisgICAgY2FzZSBEYXRhVmlld0dldEludDE2
OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0SW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdH
ZXRVaW50MTY6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRVaW50MTYiOworICAgIGNhc2Ug
RGF0YVZpZXdHZXRJbnQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldEludDMyIjsKKyAg
ICBjYXNlIERhdGFWaWV3R2V0VWludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0VWlu
dDMyIjsKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRh
Vmlld0dldEZsb2F0MzIiOworICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDY0OgorICAgICAgICBy
ZXR1cm4gIkRhdGFWaWV3R2V0RmxvYXQ2NCI7CisgICAgY2FzZSBEYXRhVmlld1NldEludDg6Cisg
ICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRJbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0VWlu
dDg6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRVaW50OCI7CisgICAgY2FzZSBEYXRhVmll
d1NldEludDE2OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0SW50MTYiOworICAgIGNhc2Ug
RGF0YVZpZXdTZXRVaW50MTY6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRVaW50MTYiOwor
ICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldElu
dDMyIjsKKyAgICBjYXNlIERhdGFWaWV3U2V0VWludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFW
aWV3U2V0VWludDMyIjsKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQzMjoKKyAgICAgICAgcmV0
dXJuICJEYXRhVmlld1NldEZsb2F0MzIiOworICAgIGNhc2UgRGF0YVZpZXdTZXRGbG9hdDY0Ogor
ICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0RmxvYXQ2NCI7CiAgICAgfQogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAkocmV2aXNpb24gMjM0ODczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzOSw2ICsxMzksMjMgQEAgZW51bSBJbnRyaW5zaWMgewogICAgIENQVVJkdHNjSW50cmlu
c2ljLAogICAgIENQVUNwdWlkSW50cmluc2ljLAogICAgIENQVVBhdXNlSW50cmluc2ljLAorCisg
ICAgRGF0YVZpZXdHZXRJbnQ4LAorICAgIERhdGFWaWV3R2V0VWludDgsCisgICAgRGF0YVZpZXdH
ZXRJbnQxNiwKKyAgICBEYXRhVmlld0dldFVpbnQxNiwKKyAgICBEYXRhVmlld0dldEludDMyLAor
ICAgIERhdGFWaWV3R2V0VWludDMyLAorICAgIERhdGFWaWV3R2V0RmxvYXQzMiwKKyAgICBEYXRh
Vmlld0dldEZsb2F0NjQsCisgICAgRGF0YVZpZXdTZXRJbnQ4LAorICAgIERhdGFWaWV3U2V0VWlu
dDgsCisgICAgRGF0YVZpZXdTZXRJbnQxNiwKKyAgICBEYXRhVmlld1NldFVpbnQxNiwKKyAgICBE
YXRhVmlld1NldEludDMyLAorICAgIERhdGFWaWV3U2V0VWludDMyLAorICAgIERhdGFWaWV3U2V0
RmxvYXQzMiwKKyAgICBEYXRhVmlld1NldEZsb2F0NjQsCiB9OwogCiBjb25zdCBjaGFyKiBpbnRy
aW5zaWNOYW1lKEludHJpbnNpYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjM0ODczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogLyog
U291cmNlIGZvciBKU0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gZGF0YVZpZXdUYWJs
ZQotICBnZXRJbnQ4ICAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4ICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0VWludDggICAgICAgICAgICAg
IGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDggICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAg
ICAgICAxCi0gIGdldEludDE2ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDE2
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRVaW50MTYgICAgICAg
ICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uICAgICAgIDEKLSAgZ2V0SW50MzIgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0
SW50MzIgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldFVpbnQzMiAg
ICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQzMiAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gICAgICAgMQotICBnZXRGbG9hdDMyICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1
bmNHZXRGbG9hdDMyICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0Rmxv
YXQ2NCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NCAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIHNldEludDggICAgICAgICAgICAgICBkYXRhVmlld1By
b3RvRnVuY1NldEludDggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBz
ZXRVaW50OCAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50OCAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0SW50MTYgICAgICAgICAgICAgIGRhdGFW
aWV3UHJvdG9GdW5jU2V0SW50MTYgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAy
Ci0gIHNldFVpbnQxNiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNiAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRJbnQzMiAgICAgICAgICAgICAg
ZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAg
ICAgIDIKLSAgc2V0VWludDMyICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMy
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldEZsb2F0MzIgICAgICAg
ICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gICAgICAgMgotICBzZXRGbG9hdDY0ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRG
bG9hdDY0ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKKyAgZ2V0SW50OCAgICAg
ICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50OCAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldEludDgKKyAgZ2V0VWludDggICAgICAgICAgICAg
IGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDggICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAg
ICAgICAxICBEYXRhVmlld0dldFVpbnQ4CisgIGdldEludDE2ICAgICAgICAgICAgICBkYXRhVmll
d1Byb3RvRnVuY0dldEludDE2ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAg
RGF0YVZpZXdHZXRJbnQxNgorICBnZXRVaW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1
bmNHZXRVaW50MTYgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3
R2V0VWludDE2CisgIGdldEludDMyICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldElu
dDMyICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRJbnQz
MgorICBnZXRVaW50MzIgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0VWludDMyCisgIGdl
dEZsb2F0MzIgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRGbG9hdDMyCisgIGdldEZsb2F0
NjQgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0NjQgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRGbG9hdDY0CisgIHNldEludDggICAgICAg
ICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEludDggICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRJbnQ4CisgIHNldFVpbnQ4ICAgICAgICAgICAgICBk
YXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAg
ICAgMiAgRGF0YVZpZXdTZXRVaW50OAorICBzZXRJbnQxNiAgICAgICAgICAgICAgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRJbnQxNiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERh
dGFWaWV3U2V0SW50MTYKKyAgc2V0VWludDE2ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5j
U2V0VWludDE2ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1Nl
dFVpbnQxNgorICBzZXRJbnQzMiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQz
MiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0SW50MzIK
KyAgc2V0VWludDMyICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldFVpbnQzMgorICBzZXRG
bG9hdDMyICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMyICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0RmxvYXQzMgorICBzZXRGbG9hdDY0
ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0RmxvYXQ2NAogICBidWZmZXIgICAgICAgICAg
ICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZlciAgICAgICAgICAgIERvbnRFbnVtfEFjY2Vz
c29yICAgICAgIDAKICAgYnl0ZUxlbmd0aCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJC
eXRlTGVuZ3RoICAgICAgICBEb250RW51bXxBY2Nlc3NvciAgICAgICAwCiAgIGJ5dGVPZmZzZXQg
ICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCAgICAgICAgRG9udEVudW18
QWNjZXNzb3IgICAgICAgMApJbmRleDogU291cmNlL1dURi93dGYvVHJpU3RhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBT
b3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAKIG5hbWVzcGFjZSBXVEYgewogCi1lbnVtIFRyaVN0YXRlIHsKK2VudW0gVHJpU3RhdGUgOiBp
bnQ4X3QgewogICAgIEZhbHNlVHJpU3RhdGUsCiAgICAgVHJ1ZVRyaVN0YXRlLAogICAgIE1peGVk
VHJpU3RhdGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347415</attachid>
            <date>2018-08-17 16:53:20 -0700</date>
            <delta_ts>2018-08-19 14:03:23 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>58410</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3LWppdC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL3N0cmVzcy9kYXRhdmlldy1qaXQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJl
c3MvZGF0YXZpZXctaml0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgzIEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJC
YWQhIik7Cit9CisKKy8vIE9PUFM6IGFkZCB1bnNpZ25lZCB0ZXN0cyEKKworZnVuY3Rpb24gdGVz
dDEoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8u
Z2V0SW50MzIoaSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShiaWdFbmRpYW4pOworICAg
IGZ1bmN0aW9uIGxpdHRsZUVuZGlhbihvLCBpKSB7CisgICAgICAgIHJldHVybiBvLmdldEludDMy
KGksIHRydWUpOworICAgIH0KKyAgICBub0lubGluZShsaXR0bGVFbmRpYW4pOworICAgIGZ1bmN0
aW9uIGJpRW5kaWFuKG8sIGksIGIpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0SW50MzIoaSwgYik7
CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAgIGxldCBhYiA9IG5ldyBBcnJh
eUJ1ZmZlcig0KTsKKyAgICBsZXQgdGEgPSBuZXcgSW50MzJBcnJheShhYik7CisgICAgdGFbMF0g
PSAweDAxMDIwMzA0OworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihk
diwgMCkgPT09IDB4MDQwMzAyMDEpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAw
KSA9PT0gMHgwMTAyMDMwNCk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFzc2Vy
dChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwNDAzMDIwMSk7
CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAweDA0MDMwMjAxKTsKKyAgICAgICAgYXNzZXJ0
KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAxMDIwMzA0
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxz
ZSkgPT09IDB4MDQwMzAyMDEpOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgdGhl
IHJpZ2h0IHNpZ24uCisgICAgdGFbMF0gPSAtMzIzNjEzODY7IC8vIDB4ZmUxMjM0NTYKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlh
bihkdiwgMCkgPT09IDB4NTYzNDEyZmUpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2
LCAwKSA9PT0gLTMyMzYxMzg2KTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNz
ZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVlKSA9PT0gLTMyMzYxMzg2KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IDB4NTYzNDEyZmUp
OworICAgIH0KKworICAgIC8vIC0yMTQ2MjkwNjAyID09IChpbnQpMHg4MDEyMzQ1NgorICAgIHRh
WzBdID0gMHg1NjM0MTI4MDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsK
KyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT09IC0yMTQ2MjkwNjAyKTsKKyAgICAg
ICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4NTYzNDEyODApOworICAgICAgICBp
ZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAw
eDU2MzQxMjgwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2
LCAwLCBmYWxzZSkgPT09IC0yMTQ2MjkwNjAyKTsKKyAgICB9Cit9CisvL3Rlc3QxKCk7CisKK2Z1
bmN0aW9uIHRlc3QyKCkgeworICAgIGZ1bmN0aW9uIGJpZ0VuZGlhbihvLCBpKSB7CisgICAgICAg
IHJldHVybiBvLmdldEludDE2KGksIGZhbHNlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlnRW5k
aWFuKTsKKyAgICBmdW5jdGlvbiBsaXR0bGVFbmRpYW4obywgaSkgeworICAgICAgICByZXR1cm4g
by5nZXRJbnQxNihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUobGl0dGxlRW5kaWFuKTsK
KyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAgICAgIHJldHVybiBvLmdldElu
dDE2KGksIGIpOworICAgIH0KKyAgICBub0lubGluZShiaUVuZGlhbik7CisKKyAgICBsZXQgYWIg
PSBuZXcgQXJyYXlCdWZmZXIoMik7CisgICAgbGV0IHRhID0gbmV3IEludDE2QXJyYXkoYWIpOwor
ICAgIHRhWzBdID0gMHgwMTAyOworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0Vu
ZGlhbihkdiwgMCkgPT09IDB4MDIwMSk7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYs
IDApID09PSAweDAxMDIpOworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQo
YmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAxMDIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwMjAxKTsKKyAgICB9CisK
KyAgICAvLyBDaGVjayBzaWduLgorICAgIHRhWzBdID0gLTUxMjsgLy8gMHhmZTAwCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4o
ZHYsIDApID09PSAweDAwZmUpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9
PT0gLTUxMik7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlh
bihkdiwgMCwgdHJ1ZSkgPT09IC01MTIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3Nl
cnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwMGZlKTsKKyAgICB9CisKKyAgICAvLyBD
aGVjayBzaWduIGV4dGVuc2lvbi4KKyAgICB0YVswXSA9IDB4MDBmZTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkg
PT09IC01MTIpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9PT0gMHgwMGZl
KTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAw
LCB0cnVlKSA9PT0gMHgwMGZlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJp
RW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IC01MTIpOworICAgIH0KK30KKy8vdGVzdDIoKTsKKwor
ZnVuY3Rpb24gdGVzdDMoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAg
ICAgcmV0dXJuIG8uZ2V0RmxvYXQzMihpLCBmYWxzZSk7CisgICAgfQorICAgIG5vSW5saW5lKGJp
Z0VuZGlhbik7CisgICAgZnVuY3Rpb24gbGl0dGxlRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0
dXJuIG8uZ2V0RmxvYXQzMihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUobGl0dGxlRW5k
aWFuKTsKKyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAgICAgIHJldHVybiBv
LmdldEZsb2F0MzIoaSwgYik7CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAg
IGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICBsZXQgdGEgPSBuZXcgRmxvYXQzMkFy
cmF5KGFiKTsKKyAgICBjb25zdCBub3JtYWwgPSAxMjkxMi40MDM7IC8vIDB4NDY0OWMxOWQKKyAg
ICBjb25zdCBub3JtYWxBc0RvdWJsZSA9IDEyOTEyLjQwMzMyMDMxMjUwMDsKKyAgICAvLzlkYzE0
OTQ2IAorICAgIGNvbnN0IGZsaXBwZWQgPSAtNS4xMTYyNDM3NTg5OTE4ODg0ZS0yMTsKKyAgICB0
YVswXSA9IG5vcm1hbDsKKworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4o
ZHYsIDApID09PSBmbGlwcGVkKTsKKyAgICAgICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkg
PT09IDEyOTEyLjQwMzMyMDMxMjUwMCk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAg
IGFzc2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IG5vcm1hbEFzRG91YmxlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IGZs
aXBwZWQpOworICAgIH0KK30KKy8vdGVzdDMoKTsKKworZnVuY3Rpb24gdGVzdDQoKSB7CisgICAg
ZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0VWludDMyKGks
IGZhbHNlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlnRW5kaWFuKTsKKyAgICBmdW5jdGlvbiBs
aXR0bGVFbmRpYW4obywgaSkgeworICAgICAgICByZXR1cm4gby5nZXRVaW50MzIoaSwgdHJ1ZSk7
CisgICAgfQorICAgIG5vSW5saW5lKGxpdHRsZUVuZGlhbik7CisgICAgZnVuY3Rpb24gYmlFbmRp
YW4obywgaSwgYikgeworICAgICAgICByZXR1cm4gby5nZXRVaW50MzIoaSwgYik7CisgICAgfQor
ICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAgIGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcig0
KTsKKyAgICBsZXQgdGEgPSBuZXcgVWludDMyQXJyYXkoYWIpOworICAgIHRhWzBdID0gMHhhMGIw
ZDBmMDsKKworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09
PSAweGYwZDBiMGEwKTsKKyAgICAgICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4
YTBiMGQwZjApOworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRp
YW4oZHYsIDAsIHRydWUpID09PSAweGEwYjBkMGYwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IDB4ZjBkMGIwYTApOworICAgIH0K
K30KK3Rlc3Q0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAyMzQ4NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw2ICs0MDgsMjMgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5wb3BjbnRfcnIoc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgYnl0ZVN3
YXAzMihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJzd2FwbF9y
KGRzdCk7CisgICAgfQorCisgICAgdm9pZCBieXRlU3dhcDE2KFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm9sd19pOHIoOCwgZHN0KTsKKyAgICB9CisKKyNpZiBD
UFUoWDg2XzY0KQorICAgIHZvaWQgYnl0ZVN3YXA2NChSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmJzd2FwcV9yKGRzdCk7CisgICAgfQorI2VuZGlmCisKICAgICAv
LyBPbmx5IHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgdm9pZCBpbGxlZ2FsSW5zdHJ1
Y3Rpb24oKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDYgKzMz
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAweEMwLAogICAg
ICAgICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1AyX1BFWFRSV19HZFVk
SWIgICA9IDB4QzUsCisgICAgICAgIE9QMl9CU1dBUCAgICAgICAgICAgPSAweEM4LAogICAgICAg
ICBPUDJfUFNMTFFfVWRxSWIgICAgID0gMHg3MywKICAgICAgICAgT1AyX1BTUkxRX1VkcUliICAg
ICA9IDB4NzMsCiAgICAgICAgIE9QMl9QT1JfVmRxV2RxICAgICAgPSAwWEVCLApAQCAtMTYzOCw2
ICsxNjM5LDE4IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAgIHZvaWQgYnN3YXBsX3Io
UmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1Ay
X0JTV0FQLCBkc3QpOworICAgIH0KKworI2lmIENQVShYODZfNjQpCisgICAgdm9pZCBic3dhcHFf
cihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9CU1dBUCwgZHN0KTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQgdHpjbnRfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9TU0VfRjMpOwpAQCAtMTcwMSw2ICsxNzE0LDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgICAgIH0KICAgICB9CisK
KyAgICB0ZW1wbGF0ZTxHcm91cE9wY29kZUlEIG9wPgorICAgIHZvaWQgc2hpZnRJbnN0cnVjdGlv
bjE2KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoaW1tID09IDEpCisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2MSwgb3AsIGRzdCk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9F
dkliLCBvcCwgZHN0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KIHB1YmxpYzoKIAogICAgIHZvaWQgc2FybF9pOHIoaW50IGltbSwg
UmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzUzLDYgKzE3NzgsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2Q0wsIEdST1VQMl9PUF9ST0wsIGRzdCk7
CiAgICAgfQogCisgICAgdm9pZCByb2x3X2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb24xNjxHUk9VUDJfT1BfUk9MPihpbW0sIGRzdCk7
CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8R3JvdXBP
cGNvZGVJRCBvcD4KQEAgLTQzMzMsNiArNDM2MywxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
d3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcpCisgICAgICAgIHsK
KyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZl
cik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKDAsIDAsIHJlZyk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAg
ICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlICsgKHJlZyAmIDcpKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGlu
dCByZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAgIHsKICAgICAgICAgICAgIFNpbmdsZUluc3Ry
dWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CkBAIC00NTA2LDYgKzQ1NDQsMTQg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTUFkZHIocmVnLCBhZGRy
ZXNzKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wNjQoVHdvQnl0ZU9wY29k
ZUlEIG9wY29kZSwgaW50IHJlZykKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1
Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5l
bWl0UmV4VygwLCAwLCByZWcpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQo
T1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9w
Y29kZSArIChyZWcgJiA3KSk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHR3b0J5dGVPcDY0
KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAg
IHsKICAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1
ZmZlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsy
MDMsMTEgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cgogICAgICAg
ICAgICAgICAgIHN0ck91dC5wcmludCgiRGVyaXZlZEFycmF5Iik7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHZhbHVl
ICYgU3BlY0RhdGFWaWV3T2JqZWN0KQorICAgICAgICAgICAgICAgIHN0ck91dC5wcmludCgiRGF0
YVZpZXciKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpc1RvcCA9IGZhbHNl
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCh2YWx1ZSAmIFNwZWNTdHJpbmcpID09IFNwZWNT
dHJpbmcpCkBAIC00MzIsNiArNDM3LDkgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9t
Q2xhc3NJbmZvKAogCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBQcm94eU9iamVjdDo6aW5mbygpKQog
ICAgICAgICByZXR1cm4gU3BlY1Byb3h5T2JqZWN0OworCisgICAgaWYgKGNsYXNzSW5mbyA9PSBK
U0RhdGFWaWV3OjppbmZvKCkpCisgICAgICAgIHJldHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7CiAg
ICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTRnVuY3Rpb246OmluZm8oKSkp
IHsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0JvdW5kRnVuY3Rpb246OmluZm8oKSkKQEAg
LTU1OSw2ICs1NjcsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNU
CiAgICAgICAgIHJldHVybiBTcGVjV2Vha01hcE9iamVjdDsKICAgICBjYXNlIEpTV2Vha1NldFR5
cGU6CiAgICAgICAgIHJldHVybiBTcGVjV2Vha1NldE9iamVjdDsKKyAgICBjYXNlIERhdGFWaWV3
VHlwZToKKyAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC03NTAsNiArNzYwLDggQEAg
U3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RyaW5nKGNvbgogICAgICAgICByZXR1cm4g
U3BlY1Byb3h5T2JqZWN0OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEZXJp
dmVkQXJyYXkiLCBzdHJsZW4oIlNwZWNEZXJpdmVkQXJyYXkiKSkpCiAgICAgICAgIHJldHVybiBT
cGVjRGVyaXZlZEFycmF5OworICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEYXRh
Vmlld09iamVjdCIsIHN0cmxlbigiU3BlY0RhdGFWaWV3T2JqZWN0IikpKQorICAgICAgICByZXR1
cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNw
ZWNPYmplY3RPdGhlciIsIHN0cmxlbigiU3BlY09iamVjdE90aGVyIikpKQogICAgICAgICByZXR1
cm4gU3BlY09iamVjdE90aGVyOwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNP
YmplY3QiLCBzdHJsZW4oIlNwZWNPYmplY3QiKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMjM0ODczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDcgKzY1LDYgQEAgc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNX
ZWFrU2V0Twogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNQcm94eU9iamVjdCAgICAg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBQcm94
eSBvYmplY3Qgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNEZXJpdmVkQXJyYXkgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIy
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBEZXJpdmVkQXJyYXkgb2JqZWN0Lgogc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3RPdGhlciAgICAgICAgICAgICAgICAgICAgICAgPSAx
dWxsIDw8IDIzOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gb2JqZWN0IGJ1dCBub3QgSlNGaW5hbE9i
amVjdCwgSlNBcnJheSwgb3IgSlNGdW5jdGlvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0
IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0Rp
cmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwg
U3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dl
YWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNE
ZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXI7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGlu
ZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwg
MjQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBhbiBpZGVudGlmaWVy
Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAxdWxsIDw8IDI1OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywg
YW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY1N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmdJZGVudCB8
IFNwZWNTdHJpbmdWYXI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLgpAQCAtOTMsNyAr
OTIsOSBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgCiBzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IFNwZWNCb29sZWFuIHwgU3BlY090aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEg
Ym9vbGVhbiwgTnVsbCwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNFbXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM3OyAvLyBJ
dCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgogc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8
IDM4OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgMzk7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNT
dHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVj
QmlnSW50OyAvLyBJdCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNG
aW5hbE9iamVjdCB8IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5Vmll
dyB8IFNwZWNEaXJlY3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmlu
Z09iamVjdCB8IFNwZWNSZWdFeHBPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVj
dCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmpl
Y3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2Jq
ZWN0OyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBw
cmVkaWN0aW9uLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1i
b2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlND
ZWxsLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNj
OyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5
IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNCeXRlY29kZVRvcCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNF
bXB0eTsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUy
T25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBi
ZSBmb3VuZCBpbiBhIGJ5dGVjb2RlIGxvY2FsLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2
aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcwLDkgKzM3NzAsMjQgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBmaWx0ZXIo
bm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAg
ICAKLSAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50OiB7CisgICAgICAg
IERhdGFWaWV3RGF0YSBkYXRhID0gbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CisgICAgICAgIGlmIChk
YXRhLmJ5dGVTaXplIDwgNCkKKyAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2Rl
LCBTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIShub2Rl
LT5wcmVkaWN0aW9uKCkgJiB+U3BlY0ludDMyT25seSkpCisgICAgICAgICAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVE
b3VibGUpOyAvLyBPT1BTOiBkbyBpbnQ1MiBoZXJlLgorICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKKyAgICAgICAgc2V0Tm9uQ2Vs
bFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNGdWxsRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgICAgICAKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICAvLyBJdCBtYXkgYmUg
dGhhdCBkdXJpbmcgYSBwcmV2aW91cyBydW4gb2YgQUkgd2UgcHJvdmVkIHRoYXQgc29tZXRoaW5n
IHdhcyB1bnJlYWNoYWJsZSwgYnV0CiAgICAgICAgIC8vIGR1cmluZyB0aGlzIHJ1biBvZiBBSSB3
ZSBmb3JnZXQgdGhhdCBpdCdzIHVucmVhY2hhYmxlLiBBSSdzIHByb29mcyBkb24ndCBoYXZlIHRv
IGdldApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDc5LDYgKzMwNzksMTY2
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCisgICAgY2FzZSBEYXRhVmlld0dldEludDg6CisgICAgY2FzZSBE
YXRhVmlld0dldFVpbnQ4OgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQxNjoKKyAgICBjYXNlIERh
dGFWaWV3R2V0VWludDE2OgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQzMjoKKyAgICBjYXNlIERh
dGFWaWV3R2V0VWludDMyOgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDMyOgorICAgIGNhc2Ug
RGF0YVZpZXdHZXRGbG9hdDY0OiB7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyA8IDIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRU
eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpbnNlcnRDaGVja3Mo
KTsKKworICAgICAgICB1aW50OF90IGJ5dGVTaXplOworICAgICAgICBOb2RlVHlwZSBvcCA9IERh
dGFWaWV3R2V0SW50OworICAgICAgICBib29sIGlzU2lnbmVkID0gZmFsc2U7CisgICAgICAgIHN3
aXRjaCAoaW50cmluc2ljKSB7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ4OgorICAgICAg
ICAgICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAg
IGNhc2UgRGF0YVZpZXdHZXRVaW50ODoKKyAgICAgICAgICAgIGJ5dGVTaXplID0gMTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQxNjoKKyAgICAgICAg
ICAgIGlzU2lnbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBj
YXNlIERhdGFWaWV3R2V0VWludDE2OgorICAgICAgICAgICAgYnl0ZVNpemUgPSAyOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDMyOgorICAgICAgICAg
ICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNh
c2UgRGF0YVZpZXdHZXRVaW50MzI6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDQ7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQzMjoKKyAgICAgICAg
ICAgIGJ5dGVTaXplID0gNDsKKyAgICAgICAgICAgIG9wID0gRGF0YVZpZXdHZXRGbG9hdDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ2NDoKKyAgICAg
ICAgICAgIGJ5dGVTaXplID0gODsKKyAgICAgICAgICAgIG9wID0gRGF0YVZpZXdHZXRGbG9hdDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIFRyaVN0YXRlIGlz
TGl0dGxlRW5kaWFuID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgTm9kZSogbGl0dGxlRW5kaWFu
Q2hpbGQgPSBudWxscHRyOworICAgICAgICBpZiAoYnl0ZVNpemUgPiAxKSB7CisgICAgICAgICAg
ICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCAzKQorICAgICAgICAgICAgICAgIGlz
TGl0dGxlRW5kaWFuID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDIsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgaWYgKGxpdHRsZUVuZGlh
bkNoaWxkLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgY29u
c3RhbnQgPSBsaXR0bGVFbmRpYW5DaGlsZC0+Y29uc3RhbnQoKS0+dmFsdWUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBjb25zdGFudC5wdXJlVG9Cb29sZWFuKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0xpdHRsZUVuZGlhbiAhPSBNaXhlZFRyaVN0YXRlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgbGl0dGxlRW5kaWFuQ2hpbGQgPSBudWxscHRyOworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9
IE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworCisgICAgICAgIERh
dGFWaWV3RGF0YSBkYXRhIHsgfTsKKyAgICAgICAgZGF0YS5pc0xpdHRsZUVuZGlhbiA9IGlzTGl0
dGxlRW5kaWFuOworICAgICAgICBkYXRhLmlzU2lnbmVkID0gaXNTaWduZWQ7CisgICAgICAgIGRh
dGEuYnl0ZVNpemUgPSBieXRlU2l6ZTsKKworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJl
c3VsdE9wZXJhbmQpLAorICAgICAgICAgICAgYWRkVG9HcmFwaChvcCwgT3BJbmZvKGRhdGEuYXNR
dWFkV29yZCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgx
LCByZWdpc3Rlck9mZnNldCkpLCBsaXR0bGVFbmRpYW5DaGlsZCkpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50ODoKKyAgICBjYXNlIERhdGFW
aWV3U2V0VWludDg6CisgICAgY2FzZSBEYXRhVmlld1NldEludDE2OgorICAgIGNhc2UgRGF0YVZp
ZXdTZXRVaW50MTY6CisgICAgY2FzZSBEYXRhVmlld1NldEludDMyOgorICAgIGNhc2UgRGF0YVZp
ZXdTZXRVaW50MzI6CisgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0MzI6CisgICAgY2FzZSBEYXRh
Vmlld1NldEZsb2F0NjQ6IHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
IDwgMykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGluc2VydENoZWNrcygpOwor
CisgICAgICAgIHVpbnQ4X3QgYnl0ZVNpemU7CisgICAgICAgIGJvb2wgaXNGbG9hdGluZ1BvaW50
ID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNTaWduZWQgPSBmYWxzZTsKKyAgICAgICAgc3dpdGNo
IChpbnRyaW5zaWMpIHsKKyAgICAgICAgY2FzZSBEYXRhVmlld1NldEludDg6CisgICAgICAgICAg
ICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2Fz
ZSBEYXRhVmlld1NldFVpbnQ4OgorICAgICAgICAgICAgYnl0ZVNpemUgPSAxOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmlld1NldEludDE2OgorICAgICAgICAgICAg
aXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNhc2Ug
RGF0YVZpZXdTZXRVaW50MTY6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDI7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIERhdGFWaWV3U2V0SW50MzI6CisgICAgICAgICAgICBp
c1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBE
YXRhVmlld1NldFVpbnQzMjoKKyAgICAgICAgICAgIGJ5dGVTaXplID0gNDsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0YVZpZXdTZXRGbG9hdDMyOgorICAgICAgICAgICAg
aXNGbG9hdGluZ1BvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJ5dGVTaXplID0gNDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQ2NDoKKyAgICAgICAg
ICAgIGlzRmxvYXRpbmdQb2ludCA9IHRydWU7CisgICAgICAgICAgICBieXRlU2l6ZSA9IDg7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBUcmlTdGF0ZSBpc0xp
dHRsZUVuZGlhbiA9IE1peGVkVHJpU3RhdGU7CisgICAgICAgIE5vZGUqIGxpdHRsZUVuZGlhbkNo
aWxkID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGJ5dGVTaXplID4gMSkgeworICAgICAgICAgICAg
aWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgNCkKKyAgICAgICAgICAgICAgICBpc0xp
dHRsZUVuZGlhbiA9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dCgzLCByZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGlmIChsaXR0bGVFbmRpYW5D
aGlsZC0+aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIGNvbnN0
YW50ID0gbGl0dGxlRW5kaWFuQ2hpbGQtPmNvbnN0YW50KCktPnZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gY29uc3RhbnQucHVyZVRvQm9vbGVhbigpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNMaXR0bGVFbmRpYW4gIT0gTWl4ZWRUcmlTdGF0ZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBN
aXhlZFRyaVN0YXRlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgRGF0YVZp
ZXdEYXRhIGRhdGEgeyB9OworICAgICAgICBkYXRhLmlzTGl0dGxlRW5kaWFuID0gaXNMaXR0bGVF
bmRpYW47CisgICAgICAgIGRhdGEuaXNTaWduZWQgPSBpc1NpZ25lZDsKKyAgICAgICAgZGF0YS5i
eXRlU2l6ZSA9IGJ5dGVTaXplOworICAgICAgICBkYXRhLmlzRmxvYXRpbmdQb2ludCA9IGlzRmxv
YXRpbmdQb2ludDsKKworICAgICAgICBhZGRUb0dyYXBoKERhdGFWaWV3U2V0LCBPcEluZm8oZGF0
YS5hc1F1YWRXb3JkKSwgT3BJbmZvKCksCisgICAgICAgICAgICBnZXQodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dCgyLCByZWdpc3Rlck9mZnNldCkpLCBsaXR0bGVFbmRpYW5DaGlsZCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKwogICAgIGNhc2UgSGFzT3duUHJvcGVydHlJbnRyaW5zaWM6IHsKICAg
ICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NTgsNyArMTc1OCwxNCBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBOdW1iZXJUb1N0cmlu
Z1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6CiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9k
ZS0+dmFsaWRSYWRpeENvbnN0YW50KCkpKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwor
ICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50OiB7Cisg
ICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIHJlYWQoVHlwZWRBcnJheVByb3BlcnRp
ZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIzNDg3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzE4LDYgKzMxOCw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRGF0YVZp
ZXdHZXRJbnQ6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBjYXNlIFB1c2hXaXRoU2NvcGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
MDQsNiArMjEwNCwxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIERhdGFW
aWV3R2V0SW50OgorICAgICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKKyAgICAgICAgICAg
IGZpeEVkZ2U8RGF0YVZpZXdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDMoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG5vZGUtPmNo
aWxkMygpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUg
dGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAg
ICAgICBjYXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDE5IEBAIHN0cnVjdCBOZXdBcnJheUJ1
ZmZlckRhdGEgewogc3RhdGljX2Fzc2VydChzaXplb2YoSW5kZXhpbmdUeXBlKSA8PSBzaXplb2Yo
dW5zaWduZWQpLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihOZXdBcnJheUJ1ZmZlckRhdGEp
ID09IHNpemVvZih1aW50NjRfdCksICIiKTsKIAorc3RydWN0IERhdGFWaWV3RGF0YSB7CisgICAg
dW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDhfdCBieXRlU2l6ZTsK
KyAgICAgICAgICAgIGJvb2wgaXNTaWduZWQ7CisgICAgICAgICAgICBib29sIGlzRmxvYXRpbmdQ
b2ludDsgLy8gVXNlZCBmb3IgdGhlIERhdGFWaWV3U2V0IG5vZGUuCisgICAgICAgICAgICBUcmlT
dGF0ZSBpc0xpdHRsZUVuZGlhbjsKKyAgICAgICAgfTsKKyAgICAgICAgdWludDY0X3QgYXNRdWFk
V29yZDsKKyAgICB9OworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKERhdGFWaWV3RGF0YSkgPT0g
c2l6ZW9mKHVpbnQ2NF90KSwgIiIpOworCiBzdHJ1Y3QgQnJhbmNoVGFyZ2V0IHsKICAgICBCcmFu
Y2hUYXJnZXQoKQogICAgICAgICA6IGJsb2NrKDApCkBAIC0xNjU5LDYgKzE2NzIsOCBAQCBwdWJs
aWM6CiAgICAgICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICAgICAgY2FzZSBFeHRyYWN0VmFs
dWVGcm9tV2Vha01hcEdldDoKICAgICAgICAgY2FzZSBUb1RoaXM6CisgICAgICAgIGNhc2UgRGF0
YVZpZXdHZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjE0Myw2ICsyMTU4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZv
LmFzPHVuc2lnbmVkPigpOwogICAgIH0KIAorICAgIERhdGFWaWV3RGF0YSBkYXRhVmlld0RhdGEo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRGF0YVZpZXdHZXRJbnQgfHwgb3AoKSA9
PSBEYXRhVmlld0dldEZsb2F0IHx8IG9wKCkgPT0gRGF0YVZpZXdTZXQpOworICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PERhdGFWaWV3RGF0YT4obV9vcEluZm8uYXM8dWludDY0X3Q+KCkpOwor
ICAgIH0KKwogICAgIGJvb2wgc2hvdWxkR2VuZXJhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fcmVmQ291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2ICs0ODMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEZpbHRlckdldEJ5SWRTdGF0dXMsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJJbkJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhGaWx0ZXJQdXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgLyogRGF0YSB2aWV3IGFjY2VzcyAqLyBcCisgICAgbWFjcm8oRGF0YVZpZXdHZXRJbnQs
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIC8qIFRoZSBnZXRzIGFyZSBtdXN0IGdl
bmVyYXRlIGZvciBub3cgYmVjYXVzZSB0aGV5IGRvIGJvdW5kcyBjaGVja3MgKi8gXAorICAgIG1h
Y3JvKERhdGFWaWV3R2V0RmxvYXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0RG91Ymxl
KSBcCisgICAgbWFjcm8oRGF0YVZpZXdTZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAKIAogLy8gVGhpcyBlbnVtIGdlbmVyYXRlcyBhIG1vbm90b25pY2FsbHkgaW5j
cmVhc2luZyBpZCBmb3IgYWxsIE5vZGUgdHlwZXMsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1MCw3ICs3NTAs
OSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNhc2Ug
R2V0RHluYW1pY1ZhcjoKICAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKLSAgICAgICAgY2Fz
ZSBFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdldDogeworICAgICAgICBjYXNlIEV4dHJhY3RWYWx1
ZUZyb21XZWFrTWFwR2V0OiAKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICAgICAg
Y2FzZSBEYXRhVmlld0dldEZsb2F0OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3Vy
cmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAgICAgICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6
CiAgICAgICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKKyAgICAgICAgY2FzZSBEYXRhVmlld09i
amVjdFVzZToKICAgICAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBjYXNlIFN0
cmluZ0lkZW50VXNlOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKQEAgLTYwMiw2ICs2MDMsMTAg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50OgorICAgIGNhc2UgRGF0
YVZpZXdHZXRGbG9hdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBPT1BTOiBjYW4gd2UgYWx3
YXlzIGRvIHRoaXMgb3IganVzdCBzb21ldGltZXM/CisKICAgICBjYXNlIFNldEFkZDoKICAgICBj
YXNlIE1hcFNldDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMzQ4
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NTUzLDYgKzQ1NTMsMTg4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNsZWFyQ2F0Y2hMb2NhbHMo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgorICAg
IGNhc2UgRGF0YVZpZXdHZXRJbnQ6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZGF0
YVZpZXcodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgZGF0YVZpZXdHUFIg
PSBkYXRhVmlldy5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3Qobm9kZS0+
Y2hpbGQxKCksIGRhdGFWaWV3R1BSKTsKKworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQg
aW5kZXgodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgaW5kZXhHUFIgPSBp
bmRleC5ncHIoKTsKKworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDEodGhpcyk7CisgICAgICAg
IEdQUlJlZyB0MSA9IHRlbXAxLmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhp
cyk7CisgICAgICAgIEdQUlJlZyB0MiA9IHRlbXAyLmdwcigpOworCisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ+IGlzTGl0dGxlRW5kaWFuT3BlcmFuZDsKKyAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW5PcGVy
YW5kLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBHUFJSZWcgaXNMaXR0
bGVFbmRpYW5HUFIgPSBpc0xpdHRsZUVuZGlhbk9wZXJhbmQgPyBpc0xpdHRsZUVuZGlhbk9wZXJh
bmQtPmdwcigpIDogSW52YWxpZEdQUlJlZzsKKworICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9
IG5vZGUtPmRhdGFWaWV3RGF0YSgpOworCisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCB0Mik7CisgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkgeworICAgICAgICAg
ICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9k
ZSwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1Ro
YW4sIHQyLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAgIH0KKyAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwK
KyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IGluZGV4R1BSLCB0MikpOyAvLyBUaGlzIHdpbGwgY2F0Y2ggYW55IG5lZ2F0aXZlIGluZGljZXMu
IE9PUFM6IGFkZCBhIHRlc3QuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHdlIGtub3cgdDIgaXMgbm90
IG5lZ2F0aXZlLgorCisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
ZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdDIpOwor
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCksIG5v
ZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHQyKSk7IC8vIE9P
UFM6IGFkZCB0ZXN0LiBDYW4gd2UgbmV1dGVyIGEgSlNEYXRhVmlldz8KKworICAgICAgICBtX2pp
dC56ZXJvRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgdDEpOworICAgICAgICBhdXRvIGJhc2VJbmRl
eCA9IEpJVENvbXBpbGVyOjpCYXNlSW5kZXgodDIsIHQxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNP
bmUpOworCisgICAgICAgIC8vIE9PUFM6IGRvIHBvaW50ZXIgY2FnaW5nCisgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IERhdGFWaWV3R2V0SW50KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEu
Ynl0ZVNpemUpIHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBpZiAoZGF0
YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDhTaWduZWRFeHRlbmRU
bzMyKGJhc2VJbmRleCwgdDIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDgoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAgICAgaW50MzJS
ZXN1bHQodDIsIG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAyOiB7CisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuTG9hZCA9IFsmXSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihiYXNlSW5kZXgsIHQyKTsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZDE2KGJhc2VJbmRleCwgdDIpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
YXV0byBlbWl0QmlnRW5kaWFuTG9hZCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0
LmxvYWQxNihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3
YXAxNih0Mik7CisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDE2VG8zMih0MiwgdDIpOworICAgICAg
ICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9
PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuTG9hZCgp
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRy
aVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuTG9hZCgpOworICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChp
c0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBpc0JpZ0VuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgaXNMaXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRMaXR0bGVFbmRpYW5Mb2FkKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9u
ZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdFbmRpYW4ubGluaygm
bV9qaXQpOworICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuTG9hZCgpOworICAgICAg
ICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaW50MzJSZXN1bHQodDIsIG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAgICAgICAg
bV9qaXQubG9hZDMyKGJhc2VJbmRleCwgdDIpOworCisgICAgICAgICAgICAgICAgaWYgKGRhdGEu
aXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgbV9q
aXQuYnl0ZVN3YXAzMih0Mik7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBNaXhlZFRyaVN0YXRlKSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAg
ICAgICAgICBhdXRvIGlzTGl0dGxlRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZEltbTMyKDEpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAzMih0Mik7CisgICAgICAgICAgICAgICAg
ICAgIGlzTGl0dGxlRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgaW50
MzJSZXN1bHQodDIsIG5vZGUpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBib29sIHJlc3VsdElzSW50MzIgPSAhKG5vZGUtPnByZWRpY3Rpb24oKSAmIH5TcGVj
SW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdElzSW50MzIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVTb3VyY2UoKSwgbm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFu
LCB0MiwgVHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMlJl
c3VsdCh0Miwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBPT1BTOiBEbyBJIG5lZWQgdGhpcyBnaXZlbiBhYm92ZT8KKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHQyLCB0Mik7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBmcFRlbXAodGhpcyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZSh0MiwgZnBUZW1wLmZw
cigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShmcFRlbXAuZnBy
KCksIHQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodDIsIG5vZGUp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
ICAgICAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKKworICAgICAgICAg
ICAgc3dpdGNoIChkYXRhLmJ5dGVTaXplKSB7CisgICAgICAgICAgICBjYXNlIDQ6IHsKKyAgICAg
ICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZEZsb2F0KGJhc2VJbmRleCwgcmVzdWx0RlBSKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuY29udmVydEZsb2F0VG9Eb3VibGUocmVzdWx0RlBSLCByZXN1bHRG
UFIpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdF
bmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKGJhc2VJ
bmRleCwgdDIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5ieXRlU3dhcDMyKHQyKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZTMyVG9GbG9hdCh0MiwgcmVzdWx0RlBSKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuY29udmVydEZsb2F0VG9Eb3VibGUocmVzdWx0RlBSLCBy
ZXN1bHRGUFIpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0
YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVt
aXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0Qmln
RW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBpc0JpZ0VuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgaXNMaXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7
CisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAg
aXNCaWdFbmRpYW4ubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5k
aWFuQ29kZSgpOworICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNhc2UgODogeworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlh
bkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKGJhc2VJ
bmRleCwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAg
YXV0byBlbWl0QmlnRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0
LmxvYWQ2NChiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3
YXA2NCh0Mik7CisgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKHQyLCBy
ZXN1bHRGUFIpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0
YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVt
aXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0Qmln
RW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBpc0JpZ0VuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgaXNMaXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7
CisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAg
aXNCaWdFbmRpYW4ubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5k
aWFuQ29kZSgpOworICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3Vs
dEZQUiwgbm9kZSk7CisgICAgICAgIH0KKworICAgICAgICBicmVhazsKKyAgICB9CisKICNpZiBF
TkFCTEUoRlRMX0pJVCkgICAgICAgIAogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2FsbFRpZXJVcCA9IG1faml0LmJyYW5jaEFkZDMy
KApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTAzLDYgKzk5MDMsMjAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlV2Vha1NldE9iagogICAgIHNwZWN1bGF0ZVdl
YWtTZXRPYmplY3QoZWRnZSwgb3BlcmFuZC5ncHIoKSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit7Cisg
ICAgc3BlY3VsYXRlQ2VsbFR5cGUoZWRnZSwgY2VsbCwgU3BlY0RhdGFWaWV3T2JqZWN0LCBEYXRh
Vmlld1R5cGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVEYXRhVmlld09i
amVjdChFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRGF0
YVZpZXdPYmplY3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2Us
IG9wZXJhbmQuZ3ByKCkpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmpl
Y3RPck90aGVyKEVkZ2UgZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNw
ZWNPYmplY3QgfCBTcGVjT3RoZXIpKQpAQCAtMTAyNzEsNiArMTAyODUsOSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNl
OgogICAgICAgICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KGVkZ2UpOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgorICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09i
amVjdChlZGdlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgog
ICAgICAgICBzcGVjdWxhdGVPYmplY3RPck90aGVyKGVkZ2UpOwogICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJl
dmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTYxMCw2ICsxNjEwLDggQEAgcHVibGljOgogICAg
IHZvaWQgc3BlY3VsYXRlV2Vha01hcE9iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9p
ZCBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlV2Vha1Nl
dE9iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7CisgICAgdm9pZCBzcGVjdWxhdGVEYXRhVmlld09i
amVjdChFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UsIEdQUlJl
ZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZU9iamVjdE9yT3RoZXIoRWRnZSk7CiAgICAgdm9p
ZCBzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVj
dWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKEVkZ2UgZWRnZSwgR1BSUmVnIHN0cmluZywg
R1BSUmVnIHN0b3JhZ2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTYgKzEwNCwxOSBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlCiAgICAgICAgIG91dC5wcmludCgiRGVy
aXZlZEFycmF5Iik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIE1hcE9iamVjdFVzZToKLSAg
ICAgICAgb3V0LnByaW50KCJNYXBPYmplY3RVc2UiKTsKKyAgICAgICAgb3V0LnByaW50KCJNYXBP
YmplY3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU2V0T2JqZWN0VXNlOgotICAgICAg
ICBvdXQucHJpbnQoIlNldE9iamVjdFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIlNldE9iamVj
dCIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBXZWFrTWFwT2JqZWN0VXNlOgotICAgICAg
ICBvdXQucHJpbnQoIldlYWtNYXBPYmplY3RVc2UiKTsKKyAgICAgICAgb3V0LnByaW50KCJXZWFr
TWFwT2JqZWN0Iik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6
Ci0gICAgICAgIG91dC5wcmludCgiV2Vha1NldE9iamVjdFVzZSIpOworICAgICAgICBvdXQucHJp
bnQoIldlYWtTZXRPYmplY3QiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRGF0YVZpZXdP
YmplY3RVc2U6CisgICAgICAgIG91dC5wcmludCgiRGF0YVZpZXdPYmplY3QiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgb3V0LnByaW50KCJP
YmplY3RPck90aGVyIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQu
aAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAgZW51bSBVc2VLaW5kIHsKICAg
ICBTZXRPYmplY3RVc2UsCiAgICAgV2Vha01hcE9iamVjdFVzZSwKICAgICBXZWFrU2V0T2JqZWN0
VXNlLAorICAgIERhdGFWaWV3T2JqZWN0VXNlLAogICAgIFN0cmluZ09iamVjdFVzZSwKICAgICBT
dHJpbmdPclN0cmluZ09iamVjdFVzZSwKICAgICBOb3RTdHJpbmdWYXJVc2UsCkBAIC0xNjAsNiAr
MTYxLDggQEAgaW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNlSwogICAgICAg
ICByZXR1cm4gU3BlY1dlYWtNYXBPYmplY3Q7CiAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgog
ICAgICAgICByZXR1cm4gU3BlY1dlYWtTZXRPYmplY3Q7CisgICAgY2FzZSBEYXRhVmlld09iamVj
dFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKICAgICBjYXNlIFN0cmlu
Z09iamVjdFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmdPYmplY3Q7CiAgICAgY2FzZSBT
dHJpbmdPclN0cmluZ09iamVjdFVzZToKQEAgLTI1OSw2ICsyNjIsNyBAQCBpbmxpbmUgYm9vbCBp
c0NlbGwoVXNlS2luZCBraW5kKQogICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAgIGNhc2UgV2Vh
a01hcE9iamVjdFVzZToKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CisgICAgY2FzZSBEYXRh
Vmlld09iamVjdFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksNiArMzU5
LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2Ug
RmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBj
YXNlIENyZWF0ZVRoaXM6CisgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICBjYXNlIERhdGFW
aWV3R2V0RmxvYXQ6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAK
QEAgLTQ0NSw2ICs0NDcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3Jh
cGgpCiAgICAgICAgICAgICAgICAgY2FzZSBTZXRPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAg
Y2FzZSBXZWFrTWFwT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgV2Vha1NldE9iamVj
dFVzZToKKyAgICAgICAgICAgICAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgogICAgICAgICAg
ICAgICAgIGNhc2UgRmluYWxPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBSZWdFeHBP
YmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBQcm94eU9iamVjdFVzZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9u
IDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMwNyw2ICsxMzA3LDEwIEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgICAgICAgICAgY29tcGlsZUZpbHRlcklDU3Rh
dHVzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDoK
KyAgICAgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgorICAgICAgICAgICAgY29tcGlsZURhdGFW
aWV3R2V0KCk7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2Nh
bDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTEyMjM4LDYgKzEyMjQyLDI0NyBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXJJQ1N0YXR1cyhtX25vZGUp
OwogICAgIH0KKworICAgIExWYWx1ZSBieXRlU3dhcDMyKExWYWx1ZSB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLT50eXBlKCkgPT0gSW50MzIpOworICAgICAgICBQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDMyKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHZhbHVlKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBqaXQubW92ZShwYXJh
bXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICBqaXQuYnl0ZVN3YXAz
MihwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CisgICAg
fQorCisgICAgTFZhbHVlIGJ5dGVTd2FwNjQoTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBJbnQ2NCk7CisgICAgICAgIFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsdWUpOworICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5n
cHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIGppdC5ieXRlU3dhcDY0KHBhcmFt
c1swXS5ncHIoKSk7CisgICAgICAgIH0pOworICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0g
RWZmZWN0czo6bm9uZSgpOworICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICB9CisKKyAg
ICB2b2lkIGNvbXBpbGVEYXRhVmlld0dldCgpCisgICAgeworICAgICAgICBMVmFsdWUgZGF0YVZp
ZXcgPSBsb3dEYXRhVmlld09iamVjdChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVl
IGluZGV4ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSBpc0xp
dHRsZUVuZGlhbiA9IG51bGxwdHI7CisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMygpKQorICAg
ICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBsb3dCb29sZWFuKG1fbm9kZS0+Y2hpbGQzKCkpOwor
CisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKKwor
ICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpOworICAg
ICAgICBMVmFsdWUgbGVuZ3RoVG9DaGVjayA9IGxlbmd0aDsKKyAgICAgICAgaWYgKGRhdGEuYnl0
ZVNpemUgPiAxKSB7CisgICAgICAgICAgICBsZW5ndGhUb0NoZWNrID0gbV9vdXQuc3ViKGxlbmd0
aFRvQ2hlY2ssIG1fb3V0LmludDMyT25lKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShVbmNvdW50
YWJsZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5sZXNzVGhhbihsZW5ndGhUb0NoZWNrLCBt
X291dC5pbnQzMlplcm8pKTsKKyAgICAgICAgfQorICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3Vu
ZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVxdWFsKGluZGV4LCBsZW5ndGhU
b0NoZWNrKSk7IC8vIFRoaXMgd2lsbCBjYXRjaCBuZWdhdGl2ZSBpbmRpY2VzLgorCisgICAgICAg
IExWYWx1ZSB2ZWN0b3IgPSBtX291dC5sb2FkUHRyKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlC
dWZmZXJWaWV3X3ZlY3Rvcik7CisgICAgICAgIC8vIE9PUFM6IGRvIHBvaW50ZXIgY2FnaW5nCisg
ICAgICAgIHNwZWN1bGF0ZShVbmNvdW50YWJsZSwganNWYWx1ZVZhbHVlKHZlY3RvciksIG1fbm9k
ZSwgbV9vdXQuaXNaZXJvNjQodmVjdG9yKSk7IC8vIE9PUFM6IENhbiB3ZSBuZXV0ZXIgYSBKU0Rh
dGFWaWV3PworCisgICAgICAgIFR5cGVkUG9pbnRlciBwb2ludGVyKG1faGVhcHMudHlwZWRBcnJh
eVByb3BlcnRpZXMsIG1fb3V0LmFkZCh2ZWN0b3IsIG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpKSk7
CisKKworICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IERhdGFWaWV3R2V0SW50KSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKGRhdGEuYnl0ZVNpemUpIHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAg
ICAgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgc2V0
SW50MzIobV9vdXQubG9hZDhTaWduRXh0MzIocG9pbnRlcikpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIobV9vdXQubG9hZDhaZXJvRXh0MzIocG9p
bnRlcikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiB7Cisg
ICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuTG9hZCA9IFsmXSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1fb3V0LmxvYWQxNlNpZ25FeHQzMihwb2ludGVyKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1fb3V0LmxvYWQxNlplcm9FeHQzMihwb2ludGVyKTsKKyAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgYXV0byBlbWl0QmlnRW5kaWFuTG9hZCA9IFsmXSB7Cisg
ICAgICAgICAgICAgICAgICAgIExWYWx1ZSB2YWwgPSBtX291dC5sb2FkMTZaZXJvRXh0MzIocG9p
bnRlcik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gT09QUzogdGVhY2ggYjMgYnl0ZSBzd2Fw
IQorICAgICAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291
dC5wYXRjaHBvaW50KEludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kU29tZVJlZ2lzdGVyKHZhbCk7CisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFy
YW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmJ5dGVTd2FwMTYocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zaWdu
RXh0ZW5kMTZUbzMyKHBhcmFtc1swXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMg
PSBFZmZlY3RzOjpub25lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGNocG9p
bnQ7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIHNldEludDMy
KGVtaXRCaWdFbmRpYW5Mb2FkKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNM
aXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBzZXRJbnQz
MihlbWl0TGl0dGxlRW5kaWFuTG9hZCgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgYmlnRW5kaWFuQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxpdHRsZUVuZGlhbkNhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51
YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChtX291dC50ZXN0SXNaZXJvMzIoaXNMaXR0bGVFbmRpYW4sIG1fb3V0LmNvbnN0SW50MzIo
MSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0VuZGlhbkNhc2UpLCB1bnN1
cmUobGl0dGxlRW5kaWFuQ2FzZSkpOworCisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oYmlnRW5kaWFuQ2FzZSwgbGl0dGxlRW5kaWFuQ2Fz
ZSk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGJpZ0VuZGlhblJlc3VsdCA9
IG1fb3V0LmFuY2hvcihlbWl0QmlnRW5kaWFuTG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGxpdHRsZUVuZGlhbkNhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGlzTGl0dGxlRW5kaWFuUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGVt
aXRMaXR0bGVFbmRpYW5Mb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAgICAgICAgIHNldEludDMyKG1fb3V0LnBo
aShJbnQzMiwgYmlnRW5kaWFuUmVzdWx0LCBpc0xpdHRsZUVuZGlhblJlc3VsdCkpOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAgICAgICAgTFZhbHVlIGxvYWRlZFZhbHVlID0g
bV9vdXQubG9hZDMyKHBvaW50ZXIpOworCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0
bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgbG9hZGVkVmFs
dWUgPSBieXRlU3dhcDMyKGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChk
YXRhLmlzTGl0dGxlRW5kaWFuID09IE1peGVkVHJpU3RhdGUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgbGl0dGxlRW5kaWFuUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGxvYWRl
ZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgYmlnRW5kaWFuQ2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQu
YnJhbmNoKG1fb3V0LnRlc3RJc1plcm8zMihpc0xpdHRsZUVuZGlhbiwgbV9vdXQuY29uc3RJbnQz
MigxKSksCisgICAgICAgICAgICAgICAgICAgICAgICB1bnN1cmUoYmlnRW5kaWFuQ2FzZSksIHVu
c3VyZShjb250aW51YXRpb24pKTsKKworICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGJpZ0VuZGlhbkNhc2UsIGNvbnRpbnVhdGlvbik7Cisg
ICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGJpZ0VuZGlhblJlc3VsdCA9IG1fb3V0
LmFuY2hvcihieXRlU3dhcDMyKGxvYWRlZFZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgbG9hZGVk
VmFsdWUgPSBtX291dC5waGkoSW50MzIsIGxpdHRsZUVuZGlhblJlc3VsdCwgYmlnRW5kaWFuUmVz
dWx0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1Np
Z25lZCkKKyAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIobG9hZGVkVmFsdWUpOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdElzSW50MzIg
PSAhKG1fbm9kZS0+cHJlZGljdGlvbigpICYgflNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0SXNJbnQzMikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGxv
YWRlZFZhbHVlLCBtX291dC5pbnQzMlplcm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEludDMyKGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIExWYWx1ZSBkb3VibGVWYWwgPSBtX291dC5pbnRUb0RvdWJsZSht
X291dC56ZXJvRXh0KGxvYWRlZFZhbHVlLCBJbnQ2NCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlVmFsID0gYm94RG91YmxlKGRvdWJsZVZhbCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRKU1ZhbHVlKGRvdWJsZVZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAg
ICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtX291dC5mbG9hdFRvRG91YmxlKG1fb3V0LmxvYWRGbG9hdChwb2ludGVyKSk7
CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlh
bkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBt
X291dC5sb2FkMzIocG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoRG91YmxlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGxvYWRlZFZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAg
ICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtcy5ncFNj
cmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmJ5dGVTd2FwMzIocGFyYW1z
LmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZTMyVG9GbG9h
dChwYXJhbXMuZ3BTY3JhdGNoKDApLCBwYXJhbXNbMF0uZnByKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvbnZlcnRGbG9hdFRvRG91YmxlKHBhcmFtc1swXS5mcHIoKSwgcGFyYW1z
WzBdLmZwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAg
IHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAg
ICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAg
ICAgICAgICAgIHNldERvdWJsZShlbWl0TGl0dGxlRW5kaWFuQ29kZSgpKTsKKyAgICAgICAgICAg
ICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAg
ICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0QmlnRW5kaWFuQ29kZSgpKTsKKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgYmlnRW5kaWFu
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGxpdHRsZUVuZGlhbkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC50ZXN0SXNaZXJvMzIoaXNMaXR0bGVFbmRp
YW4sIG1fb3V0LmNvbnN0SW50MzIoMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJl
KGJpZ0VuZGlhbkNhc2UpLCB1bnN1cmUobGl0dGxlRW5kaWFuQ2FzZSkpOworCisgICAgICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oYmlnRW5kaWFu
Q2FzZSwgbGl0dGxlRW5kaWFuQ2FzZSk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGJpZ0VuZGlhblJlc3VsdCA9IG1fb3V0LmFuY2hvcihlbWl0QmlnRW5kaWFuQ29kZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxpdHRsZUVuZGlhbkNhc2UsIGNvbnRpbnVhdGlv
bik7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlzTGl0dGxlRW5kaWFuUmVz
dWx0ID0gbV9vdXQuYW5jaG9yKGVtaXRMaXR0bGVFbmRpYW5Db2RlKCkpOworICAgICAgICAgICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAgICAg
ICAgIHNldERvdWJsZShtX291dC5waGkoRG91YmxlLCBiaWdFbmRpYW5SZXN1bHQsIGlzTGl0dGxl
RW5kaWFuUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIDg6IHsKKyAgICAgICAgICAgICAg
ICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1fb3V0LmxvYWREb3VibGUocG9pbnRlcik7CisgICAgICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAg
ICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBtX291dC5sb2FkNjQocG9pbnRlcik7Cisg
ICAgICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlID0gYnl0ZVN3YXA2NChsb2FkZWRWYWx1ZSk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5iaXRDYXN0KGxvYWRlZFZhbHVlLCBE
b3VibGUpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5p
c0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIHNldERv
dWJsZShlbWl0TGl0dGxlRW5kaWFuQ29kZSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChk
YXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAg
IHNldERvdWJsZShlbWl0QmlnRW5kaWFuQ29kZSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgYmlnRW5kaWFuQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxpdHRsZUVuZGlhbkNh
c2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBj
b250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmJyYW5jaChtX291dC50ZXN0SXNaZXJvMzIoaXNMaXR0bGVFbmRpYW4sIG1fb3V0LmNvbnN0
SW50MzIoMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0VuZGlhbkNhc2Up
LCB1bnN1cmUobGl0dGxlRW5kaWFuQ2FzZSkpOworCisgICAgICAgICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oYmlnRW5kaWFuQ2FzZSwgbGl0dGxlRW5k
aWFuQ2FzZSk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGJpZ0VuZGlhblJl
c3VsdCA9IG1fb3V0LmFuY2hvcihlbWl0QmlnRW5kaWFuQ29kZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGxpdHRsZUVuZGlhbkNhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAg
ICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlzTGl0dGxlRW5kaWFuUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKGVtaXRMaXR0bGVFbmRpYW5Db2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZSht
X291dC5waGkoRG91YmxlLCBiaWdFbmRpYW5SZXN1bHQsIGlzTGl0dGxlRW5kaWFuUmVzdWx0KSk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0KICAgICAK
ICAgICB2b2lkIGVtaXRTd2l0Y2hGb3JNdWx0aUJ5T2Zmc2V0KExWYWx1ZSBiYXNlLCBib29sIHN0
cnVjdHVyZXNDaGVja2VkLCBWZWN0b3I8U3dpdGNoQ2FzZSwgMj4mIGNhc2VzLCBMQmFzaWNCbG9j
ayBleGl0KQogICAgIHsKQEAgLTE0NDY4LDYgKzE0NzEzLDEzIEBAIHByaXZhdGU6CiAgICAgICAg
IHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CisKKyAgICBMVmFsdWUgbG93RGF0YVZpZXdPYmplY3QoRWRnZSBlZGdlKQor
ICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSk7CisgICAgICAgIHNw
ZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBsb3dTdHJpbmcoRWRnZSBlZGdlLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAg
ewpAQCAtMTQ5NDMsNiArMTUxOTUsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFdlYWtTZXRP
YmplY3RVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KGVkZ2UpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CisgICAgICAg
ICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdl
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU0MzcsNiArMTU2OTIsMTcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSwgbG93Q2VsbChlZGdl
KSk7CiAgICAgfQorCisgICAgdm9pZCBzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlIGVkZ2Us
IExWYWx1ZSBjZWxsKQorICAgIHsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCisgICAgICAgICAg
ICBqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNEYXRhVmlld09iamVjdCwgaXNOb3RUeXBl
KGNlbGwsIERhdGFWaWV3VHlwZSkpOworICAgIH0KKworICAgIHZvaWQgc3BlY3VsYXRlRGF0YVZp
ZXdPYmplY3QoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmpl
Y3QoZWRnZSwgbG93Q2VsbChlZGdlKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgc3BlY3VsYXRl
U3RyaW5nKEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAgICAgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzksNiArMjM5LDM4IEBAIGNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2lj
IGludHIKICAgICAgICAgcmV0dXJuICJDUFVDcHVpZEludHJpbnNpYyI7CiAgICAgY2FzZSBDUFVQ
YXVzZUludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJDUFVQYXVzZUludHJpbnNpYyI7CisgICAg
Y2FzZSBEYXRhVmlld0dldEludDg6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRJbnQ4IjsK
KyAgICBjYXNlIERhdGFWaWV3R2V0VWludDg6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRV
aW50OCI7CisgICAgY2FzZSBEYXRhVmlld0dldEludDE2OgorICAgICAgICByZXR1cm4gIkRhdGFW
aWV3R2V0SW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgICAgIHJldHVy
biAiRGF0YVZpZXdHZXRVaW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQzMjoKKyAgICAg
ICAgcmV0dXJuICJEYXRhVmlld0dldEludDMyIjsKKyAgICBjYXNlIERhdGFWaWV3R2V0VWludDMy
OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0VWludDMyIjsKKyAgICBjYXNlIERhdGFWaWV3
R2V0RmxvYXQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldEZsb2F0MzIiOworICAgIGNh
c2UgRGF0YVZpZXdHZXRGbG9hdDY0OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0RmxvYXQ2
NCI7CisgICAgY2FzZSBEYXRhVmlld1NldEludDg6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdT
ZXRJbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0VWludDg6CisgICAgICAgIHJldHVybiAiRGF0
YVZpZXdTZXRVaW50OCI7CisgICAgY2FzZSBEYXRhVmlld1NldEludDE2OgorICAgICAgICByZXR1
cm4gIkRhdGFWaWV3U2V0SW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MTY6CisgICAg
ICAgIHJldHVybiAiRGF0YVZpZXdTZXRVaW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQz
MjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEludDMyIjsKKyAgICBjYXNlIERhdGFWaWV3
U2V0VWludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0VWludDMyIjsKKyAgICBjYXNl
IERhdGFWaWV3U2V0RmxvYXQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEZsb2F0MzIi
OworICAgIGNhc2UgRGF0YVZpZXdTZXRGbG9hdDY0OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3
U2V0RmxvYXQ2NCI7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksMjMgQEAgZW51
bSBJbnRyaW5zaWMgewogICAgIENQVVJkdHNjSW50cmluc2ljLAogICAgIENQVUNwdWlkSW50cmlu
c2ljLAogICAgIENQVVBhdXNlSW50cmluc2ljLAorCisgICAgRGF0YVZpZXdHZXRJbnQ4LAorICAg
IERhdGFWaWV3R2V0VWludDgsCisgICAgRGF0YVZpZXdHZXRJbnQxNiwKKyAgICBEYXRhVmlld0dl
dFVpbnQxNiwKKyAgICBEYXRhVmlld0dldEludDMyLAorICAgIERhdGFWaWV3R2V0VWludDMyLAor
ICAgIERhdGFWaWV3R2V0RmxvYXQzMiwKKyAgICBEYXRhVmlld0dldEZsb2F0NjQsCisgICAgRGF0
YVZpZXdTZXRJbnQ4LAorICAgIERhdGFWaWV3U2V0VWludDgsCisgICAgRGF0YVZpZXdTZXRJbnQx
NiwKKyAgICBEYXRhVmlld1NldFVpbnQxNiwKKyAgICBEYXRhVmlld1NldEludDMyLAorICAgIERh
dGFWaWV3U2V0VWludDMyLAorICAgIERhdGFWaWV3U2V0RmxvYXQzMiwKKyAgICBEYXRhVmlld1Nl
dEZsb2F0NjQsCiB9OwogCiBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIy
ICszOSwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogLyogU291cmNlIGZvciBKU0RhdGFWaWV3UHJv
dG90eXBlLmx1dC5oCiBAYmVnaW4gZGF0YVZpZXdUYWJsZQotICBnZXRJbnQ4ICAgICAgICAgICAg
ICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
ICAgICAgIDEKLSAgZ2V0VWludDggICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWlu
dDggICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldEludDE2ICAgICAg
ICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDE2ICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gICAgICAgMQotICBnZXRVaW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNH
ZXRVaW50MTYgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0SW50MzIg
ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MzIgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldFVpbnQzMiAgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
RnVuY0dldFVpbnQzMiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRG
bG9hdDMyICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDMyICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0RmxvYXQ2NCAgICAgICAgICAgIGRhdGFWaWV3
UHJvdG9GdW5jR2V0RmxvYXQ2NCAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0g
IHNldEludDggICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEludDggICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRVaW50OCAgICAgICAgICAgICAgZGF0
YVZpZXdQcm90b0Z1bmNTZXRVaW50OCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAg
IDIKLSAgc2V0SW50MTYgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldFVpbnQxNiAgICAgICAgICAg
ICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
ICAgICAgMgotICBzZXRJbnQzMiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQz
MiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0VWludDMyICAgICAg
ICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAgICAgICAyCi0gIHNldEZsb2F0MzIgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1Nl
dEZsb2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRGbG9hdDY0
ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uICAgICAgIDIKKyAgZ2V0SW50OCAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9G
dW5jR2V0SW50OCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmll
d0dldEludDgKKyAgZ2V0VWludDggICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWlu
dDggICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldFVpbnQ4
CisgIGdldEludDE2ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDE2ICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRJbnQxNgorICBnZXRV
aW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0VWludDE2CisgIGdldEludDMyICAg
ICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDMyICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRJbnQzMgorICBnZXRVaW50MzIgICAgICAgICAg
ICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
ICAgICAgIDEgIERhdGFWaWV3R2V0VWludDMyCisgIGdldEZsb2F0MzIgICAgICAgICAgICBkYXRh
Vmlld1Byb3RvRnVuY0dldEZsb2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAg
MSAgRGF0YVZpZXdHZXRGbG9hdDMyCisgIGdldEZsb2F0NjQgICAgICAgICAgICBkYXRhVmlld1By
b3RvRnVuY0dldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0
YVZpZXdHZXRGbG9hdDY0CisgIHNldEludDggICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVu
Y1NldEludDggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdT
ZXRJbnQ4CisgIHNldFVpbnQ4ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRVaW50OAor
ICBzZXRJbnQxNiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQxNiAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0SW50MTYKKyAgc2V0VWlu
dDE2ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2ICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldFVpbnQxNgorICBzZXRJbnQzMiAgICAg
ICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMiAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0SW50MzIKKyAgc2V0VWludDMyICAgICAgICAgICAg
IGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAg
ICAgICAyICBEYXRhVmlld1NldFVpbnQzMgorICBzZXRGbG9hdDMyICAgICAgICAgICAgZGF0YVZp
ZXdQcm90b0Z1bmNTZXRGbG9hdDMyICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIg
IERhdGFWaWV3U2V0RmxvYXQzMgorICBzZXRGbG9hdDY0ICAgICAgICAgICAgZGF0YVZpZXdQcm90
b0Z1bmNTZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFW
aWV3U2V0RmxvYXQ2NAogICBidWZmZXIgICAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRl
ckJ1ZmZlciAgICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yICAgICAgIDAKICAgYnl0ZUxlbmd0
aCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoICAgICAgICBEb250RW51
bXxBY2Nlc3NvciAgICAgICAwCiAgIGJ5dGVPZmZzZXQgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
R2V0dGVyQnl0ZU9mZnNldCAgICAgICAgRG9udEVudW18QWNjZXNzb3IgICAgICAgMApJbmRleDog
U291cmNlL1dURi93dGYvVHJpU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9U
cmlTdGF0ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1l
bnVtIFRyaVN0YXRlIHsKK2VudW0gVHJpU3RhdGUgOiBpbnQ4X3QgewogICAgIEZhbHNlVHJpU3Rh
dGUsCiAgICAgVHJ1ZVRyaVN0YXRlLAogICAgIE1peGVkVHJpU3RhdGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347465</attachid>
            <date>2018-08-19 14:03:23 -0700</date>
            <delta_ts>2018-08-19 18:32:42 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>74182</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3LWppdC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL3N0cmVzcy9kYXRhdmlldy1qaXQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJl
c3MvZGF0YXZpZXctaml0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgzIEBACitmdW5j
dGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJC
YWQhIik7Cit9CisKKy8vIE9PUFM6IGFkZCB1bnNpZ25lZCB0ZXN0cyEKKworZnVuY3Rpb24gdGVz
dDEoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8u
Z2V0SW50MzIoaSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShiaWdFbmRpYW4pOworICAg
IGZ1bmN0aW9uIGxpdHRsZUVuZGlhbihvLCBpKSB7CisgICAgICAgIHJldHVybiBvLmdldEludDMy
KGksIHRydWUpOworICAgIH0KKyAgICBub0lubGluZShsaXR0bGVFbmRpYW4pOworICAgIGZ1bmN0
aW9uIGJpRW5kaWFuKG8sIGksIGIpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0SW50MzIoaSwgYik7
CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAgIGxldCBhYiA9IG5ldyBBcnJh
eUJ1ZmZlcig0KTsKKyAgICBsZXQgdGEgPSBuZXcgSW50MzJBcnJheShhYik7CisgICAgdGFbMF0g
PSAweDAxMDIwMzA0OworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihk
diwgMCkgPT09IDB4MDQwMzAyMDEpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAw
KSA9PT0gMHgwMTAyMDMwNCk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFzc2Vy
dChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwNDAzMDIwMSk7
CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAweDA0MDMwMjAxKTsKKyAgICAgICAgYXNzZXJ0
KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAxMDIwMzA0
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxz
ZSkgPT09IDB4MDQwMzAyMDEpOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgdGhl
IHJpZ2h0IHNpZ24uCisgICAgdGFbMF0gPSAtMzIzNjEzODY7IC8vIDB4ZmUxMjM0NTYKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlh
bihkdiwgMCkgPT09IDB4NTYzNDEyZmUpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2
LCAwKSA9PT0gLTMyMzYxMzg2KTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNz
ZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVlKSA9PT0gLTMyMzYxMzg2KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IDB4NTYzNDEyZmUp
OworICAgIH0KKworICAgIC8vIC0yMTQ2MjkwNjAyID09IChpbnQpMHg4MDEyMzQ1NgorICAgIHRh
WzBdID0gMHg1NjM0MTI4MDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsK
KyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT09IC0yMTQ2MjkwNjAyKTsKKyAgICAg
ICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4NTYzNDEyODApOworICAgICAgICBp
ZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAw
eDU2MzQxMjgwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2
LCAwLCBmYWxzZSkgPT09IC0yMTQ2MjkwNjAyKTsKKyAgICB9Cit9CisvL3Rlc3QxKCk7CisKK2Z1
bmN0aW9uIHRlc3QyKCkgeworICAgIGZ1bmN0aW9uIGJpZ0VuZGlhbihvLCBpKSB7CisgICAgICAg
IHJldHVybiBvLmdldEludDE2KGksIGZhbHNlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlnRW5k
aWFuKTsKKyAgICBmdW5jdGlvbiBsaXR0bGVFbmRpYW4obywgaSkgeworICAgICAgICByZXR1cm4g
by5nZXRJbnQxNihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUobGl0dGxlRW5kaWFuKTsK
KyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAgICAgIHJldHVybiBvLmdldElu
dDE2KGksIGIpOworICAgIH0KKyAgICBub0lubGluZShiaUVuZGlhbik7CisKKyAgICBsZXQgYWIg
PSBuZXcgQXJyYXlCdWZmZXIoMik7CisgICAgbGV0IHRhID0gbmV3IEludDE2QXJyYXkoYWIpOwor
ICAgIHRhWzBdID0gMHgwMTAyOworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0Vu
ZGlhbihkdiwgMCkgPT09IDB4MDIwMSk7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYs
IDApID09PSAweDAxMDIpOworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQo
YmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAxMDIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwMjAxKTsKKyAgICB9CisK
KyAgICAvLyBDaGVjayBzaWduLgorICAgIHRhWzBdID0gLTUxMjsgLy8gMHhmZTAwCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4o
ZHYsIDApID09PSAweDAwZmUpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9
PT0gLTUxMik7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlh
bihkdiwgMCwgdHJ1ZSkgPT09IC01MTIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3Nl
cnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHgwMGZlKTsKKyAgICB9CisKKyAgICAvLyBD
aGVjayBzaWduIGV4dGVuc2lvbi4KKyAgICB0YVswXSA9IDB4MDBmZTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkg
PT09IC01MTIpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9PT0gMHgwMGZl
KTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAw
LCB0cnVlKSA9PT0gMHgwMGZlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJp
RW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IC01MTIpOworICAgIH0KK30KKy8vdGVzdDIoKTsKKwor
ZnVuY3Rpb24gdGVzdDMoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAg
ICAgcmV0dXJuIG8uZ2V0RmxvYXQzMihpLCBmYWxzZSk7CisgICAgfQorICAgIG5vSW5saW5lKGJp
Z0VuZGlhbik7CisgICAgZnVuY3Rpb24gbGl0dGxlRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0
dXJuIG8uZ2V0RmxvYXQzMihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUobGl0dGxlRW5k
aWFuKTsKKyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAgICAgIHJldHVybiBv
LmdldEZsb2F0MzIoaSwgYik7CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAg
IGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICBsZXQgdGEgPSBuZXcgRmxvYXQzMkFy
cmF5KGFiKTsKKyAgICBjb25zdCBub3JtYWwgPSAxMjkxMi40MDM7IC8vIDB4NDY0OWMxOWQKKyAg
ICBjb25zdCBub3JtYWxBc0RvdWJsZSA9IDEyOTEyLjQwMzMyMDMxMjUwMDsKKyAgICAvLzlkYzE0
OTQ2IAorICAgIGNvbnN0IGZsaXBwZWQgPSAtNS4xMTYyNDM3NTg5OTE4ODg0ZS0yMTsKKyAgICB0
YVswXSA9IG5vcm1hbDsKKworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4o
ZHYsIDApID09PSBmbGlwcGVkKTsKKyAgICAgICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkg
PT09IDEyOTEyLjQwMzMyMDMxMjUwMCk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAg
IGFzc2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IG5vcm1hbEFzRG91YmxlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IGZs
aXBwZWQpOworICAgIH0KK30KKy8vdGVzdDMoKTsKKworZnVuY3Rpb24gdGVzdDQoKSB7CisgICAg
ZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0VWludDMyKGks
IGZhbHNlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlnRW5kaWFuKTsKKyAgICBmdW5jdGlvbiBs
aXR0bGVFbmRpYW4obywgaSkgeworICAgICAgICByZXR1cm4gby5nZXRVaW50MzIoaSwgdHJ1ZSk7
CisgICAgfQorICAgIG5vSW5saW5lKGxpdHRsZUVuZGlhbik7CisgICAgZnVuY3Rpb24gYmlFbmRp
YW4obywgaSwgYikgeworICAgICAgICByZXR1cm4gby5nZXRVaW50MzIoaSwgYik7CisgICAgfQor
ICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAgIGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcig0
KTsKKyAgICBsZXQgdGEgPSBuZXcgVWludDMyQXJyYXkoYWIpOworICAgIHRhWzBdID0gMHhhMGIw
ZDBmMDsKKworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09
PSAweGYwZDBiMGEwKTsKKyAgICAgICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4
YTBiMGQwZjApOworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRp
YW4oZHYsIDAsIHRydWUpID09PSAweGEwYjBkMGYwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IDB4ZjBkMGIwYTApOworICAgIH0K
K30KK3Rlc3Q0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAyMzQ4NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw2ICs0MDgsMjMgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5wb3BjbnRfcnIoc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgYnl0ZVN3
YXAzMihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJzd2FwbF9y
KGRzdCk7CisgICAgfQorCisgICAgdm9pZCBieXRlU3dhcDE2KFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm9sd19pOHIoOCwgZHN0KTsKKyAgICB9CisKKyNpZiBD
UFUoWDg2XzY0KQorICAgIHZvaWQgYnl0ZVN3YXA2NChSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmJzd2FwcV9yKGRzdCk7CisgICAgfQorI2VuZGlmCisKICAgICAv
LyBPbmx5IHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgdm9pZCBpbGxlZ2FsSW5zdHJ1
Y3Rpb24oKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDYgKzMz
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAweEMwLAogICAg
ICAgICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1AyX1BFWFRSV19HZFVk
SWIgICA9IDB4QzUsCisgICAgICAgIE9QMl9CU1dBUCAgICAgICAgICAgPSAweEM4LAogICAgICAg
ICBPUDJfUFNMTFFfVWRxSWIgICAgID0gMHg3MywKICAgICAgICAgT1AyX1BTUkxRX1VkcUliICAg
ICA9IDB4NzMsCiAgICAgICAgIE9QMl9QT1JfVmRxV2RxICAgICAgPSAwWEVCLApAQCAtMTYzOCw2
ICsxNjM5LDE4IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAgIHZvaWQgYnN3YXBsX3Io
UmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1Ay
X0JTV0FQLCBkc3QpOworICAgIH0KKworI2lmIENQVShYODZfNjQpCisgICAgdm9pZCBic3dhcHFf
cihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9CU1dBUCwgZHN0KTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQgdHpjbnRfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9TU0VfRjMpOwpAQCAtMTcwMSw2ICsxNzE0LDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgICAgIH0KICAgICB9CisK
KyAgICB0ZW1wbGF0ZTxHcm91cE9wY29kZUlEIG9wPgorICAgIHZvaWQgc2hpZnRJbnN0cnVjdGlv
bjE2KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoaW1tID09IDEpCisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2MSwgb3AsIGRzdCk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9F
dkliLCBvcCwgZHN0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KIHB1YmxpYzoKIAogICAgIHZvaWQgc2FybF9pOHIoaW50IGltbSwg
UmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzUzLDYgKzE3NzgsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2Q0wsIEdST1VQMl9PUF9ST0wsIGRzdCk7
CiAgICAgfQogCisgICAgdm9pZCByb2x3X2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb24xNjxHUk9VUDJfT1BfUk9MPihpbW0sIGRzdCk7
CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8R3JvdXBP
cGNvZGVJRCBvcD4KQEAgLTQzMzMsNiArNDM2MywxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
d3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcpCisgICAgICAgIHsK
KyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZl
cik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKDAsIDAsIHJlZyk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAg
ICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlICsgKHJlZyAmIDcpKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGlu
dCByZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAgIHsKICAgICAgICAgICAgIFNpbmdsZUluc3Ry
dWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CkBAIC00NTA2LDYgKzQ1NDQsMTQg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTUFkZHIocmVnLCBhZGRy
ZXNzKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wNjQoVHdvQnl0ZU9wY29k
ZUlEIG9wY29kZSwgaW50IHJlZykKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1
Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5l
bWl0UmV4VygwLCAwLCByZWcpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQo
T1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9w
Y29kZSArIChyZWcgJiA3KSk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHR3b0J5dGVPcDY0
KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAg
IHsKICAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1
ZmZlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0
LmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
YXRhRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXROb25lID0gMCwKICAgICBEYXRh
Rm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFGb3JtYXRJbnQ1MiA9IDIsIC8vIEludDUyJ3MgYXJl
IGxlZnQtc2hpZnRlZCBieSAxNiBieSBkZWZhdWx0LgorICAgIERhdGFGb3JtYXRJbnQ1MiA9IDIs
IC8vIEludDUyJ3MgYXJlIGxlZnQtc2hpZnRlZCBieSAxMiBieSBkZWZhdWx0LgogICAgIERhdGFG
b3JtYXRTdHJpY3RJbnQ1MiA9IDMsIC8vICJTdHJpY3QiIEludDUyIG1lYW5zIGl0J3Mgbm90IHNo
aWZ0ZWQuCiAgICAgRGF0YUZvcm1hdERvdWJsZSA9IDQsCiAgICAgRGF0YUZvcm1hdEJvb2xlYW4g
PSA1LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAz
LDExIEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXRTdHIKICAgICAgICAg
ICAgICAgICBzdHJPdXQucHJpbnQoIkRlcml2ZWRBcnJheSIpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmICh2YWx1ZSAm
IFNwZWNEYXRhVmlld09iamVjdCkKKyAgICAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkRhdGFW
aWV3Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmICgodmFsdWUgJiBTcGVjU3RyaW5nKSA9PSBTcGVjU3Ry
aW5nKQpAQCAtNDMyLDYgKzQzNyw5IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNs
YXNzSW5mbygKIAogICAgIGlmIChjbGFzc0luZm8gPT0gUHJveHlPYmplY3Q6OmluZm8oKSkKICAg
ICAgICAgcmV0dXJuIFNwZWNQcm94eU9iamVjdDsKKworICAgIGlmIChjbGFzc0luZm8gPT0gSlNE
YXRhVmlldzo6aW5mbygpKQorICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAg
IAogICAgIGlmIChjbGFzc0luZm8tPmlzU3ViQ2xhc3NPZihKU0Z1bmN0aW9uOjppbmZvKCkpKSB7
CiAgICAgICAgIGlmIChjbGFzc0luZm8gPT0gSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpCkBAIC01
NTksNiArNTY3LDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVAog
ICAgICAgICByZXR1cm4gU3BlY1dlYWtNYXBPYmplY3Q7CiAgICAgY2FzZSBKU1dlYWtTZXRUeXBl
OgogICAgICAgICByZXR1cm4gU3BlY1dlYWtTZXRPYmplY3Q7CisgICAgY2FzZSBEYXRhVmlld1R5
cGU6CisgICAgICAgIHJldHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtNzUwLDYgKzc2MCw4IEBAIFNw
ZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cmluZyhjb24KICAgICAgICAgcmV0dXJuIFNw
ZWNQcm94eU9iamVjdDsKICAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjRGVyaXZl
ZEFycmF5Iiwgc3RybGVuKCJTcGVjRGVyaXZlZEFycmF5IikpKQogICAgICAgICByZXR1cm4gU3Bl
Y0Rlcml2ZWRBcnJheTsKKyAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjRGF0YVZp
ZXdPYmplY3QiLCBzdHJsZW4oIlNwZWNEYXRhVmlld09iamVjdCIpKSkKKyAgICAgICAgcmV0dXJu
IFNwZWNEYXRhVmlld09iamVjdDsKICAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVj
T2JqZWN0T3RoZXIiLCBzdHJsZW4oIlNwZWNPYmplY3RPdGhlciIpKSkKICAgICAgICAgcmV0dXJu
IFNwZWNPYmplY3RPdGhlcjsKICAgICBpZiAoIXN0cm5jbXAoc3BlY3VsYXRpb24sICJTcGVjT2Jq
ZWN0Iiwgc3RybGVuKCJTcGVjT2JqZWN0IikpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw3ICs2NSw2IEBAIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjV2Vh
a1NldE8KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjUHJveHlPYmplY3QgICAgICAg
ICAgICAgICAgICAgICAgID0gMXVsbCA8PCAyMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgUHJveHkg
b2JqZWN0IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjRGVyaXZlZEFycmF5ICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAyMjsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgRGVyaXZlZEFycmF5IG9iamVjdC4KIHN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0T3RoZXIgICAgICAgICAgICAgICAgICAgICAgID0gMXVs
bCA8PCAyMzsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmpl
Y3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8
IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJl
Y3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNw
ZWNSZWdFeHBPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFr
TWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVy
aXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyOyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3Rpbmcg
Zm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNTdHJpbmdJZGVudCAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDI0
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4K
IHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMXVsbCA8PCAyNTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcsIGFu
ZCBpdCdzIG5vdCBhbiBpZGVudGlmaWVyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjU3RyaW5nSWRlbnQgfCBT
cGVjU3RyaW5nVmFyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZy4KQEAgLTkzLDcgKzky
LDkgQEAgc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPdGhlciAgIAogc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNNaXNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBTcGVjQm9vbGVhbiB8IFNwZWNPdGhlcjsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhlciBhIGJv
b2xlYW4sIE51bGwsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBT
cGVjRW1wdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzNzsgLy8gSXQn
cyBkZWZpbml0ZWx5IGFuIGVtcHR5IHZhbHVlIG1hcmtlci4KIHN0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAz
ODsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNEYXRhVmlld09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8
IDM5OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0RhdGFWaWV3Lgogc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjU3Ry
aW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjIHwgU3BlY0Jp
Z0ludDsgLy8gSXQncyBhbnkgbm9uLU9iamVjdCBKU1ZhbHVlLgorc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmlu
YWxPYmplY3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcg
fCBTcGVjRGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdP
YmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3Qg
fCBTcGVjV2Vha01hcE9iamVjdCB8IFNwZWNXZWFrU2V0T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0
IHwgU3BlY0Rlcml2ZWRBcnJheSB8IFNwZWNPYmplY3RPdGhlciB8IFNwZWNEYXRhVmlld09iamVj
dDsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJl
ZGljdGlvbi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9s
IHwgU3BlY0NlbGxPdGhlciB8IFNwZWNCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2Vs
bC4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYzsg
Ly8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBh
bmQgU3BlY0RvdWJsZUltcHVyZU5hTi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
Qnl0ZWNvZGVUb3AgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0hlYXBUb3AgfCBTcGVjRW1w
dHk7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9u
bHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uIENvcnJlc3BvbmRzIHRvIHdoYXQgY291bGQgYmUg
Zm91bmQgaW4gYSBieXRlY29kZSBsb2NhbC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlz
aW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzc3MCw5ICszNzcwLDI5IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgZmlsdGVyKG5v
ZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAg
CisKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50OiB7CisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRh
ID0gbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CisgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplIDwgNCkK
KyAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIShub2RlLT5wcmVkaWN0aW9uKCkgJiB+
U3BlY0ludDMyT25seSkpCisgICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5v
ZGUsIFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNl
dE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVEb3VibGUpOyAvLyBPT1BTOiBk
byBpbnQ1MiBoZXJlLgorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNh
c2UgRGF0YVZpZXdHZXRGbG9hdDogeworICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0Z1bGxEb3VibGUpOwogICAgICAgICBicmVhazsKKyAgICB9CiAKKyAgICBjYXNlIERh
dGFWaWV3U2V0OiB7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBV
bnJlYWNoYWJsZToKICAgICAgICAgLy8gSXQgbWF5IGJlIHRoYXQgZHVyaW5nIGEgcHJldmlvdXMg
cnVuIG9mIEFJIHdlIHByb3ZlZCB0aGF0IHNvbWV0aGluZyB3YXMgdW5yZWFjaGFibGUsIGJ1dAog
ICAgICAgICAvLyBkdXJpbmcgdGhpcyBydW4gb2YgQUkgd2UgZm9yZ2V0IHRoYXQgaXQncyB1bnJl
YWNoYWJsZS4gQUkncyBwcm9vZnMgZG9uJ3QgaGF2ZSB0byBnZXQKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzQ4
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzA3OSw2ICszMDc5LDE3NiBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNDYWxsCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAg
IGNhc2UgRGF0YVZpZXdHZXRJbnQ4OgorICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50ODoKKyAgICBj
YXNlIERhdGFWaWV3R2V0SW50MTY6CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQxNjoKKyAgICBj
YXNlIERhdGFWaWV3R2V0SW50MzI6CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQzMjoKKyAgICBj
YXNlIERhdGFWaWV3R2V0RmxvYXQzMjoKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ2NDogewor
I2lmIENQVShCSUdfRU5ESUFOKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAg
ICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCAyKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisKKyAgICAgICAgdWludDhfdCBieXRl
U2l6ZTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSBEYXRhVmlld0dldEludDsKKyAgICAgICAgYm9v
bCBpc1NpZ25lZCA9IGZhbHNlOworICAgICAgICBzd2l0Y2ggKGludHJpbnNpYykgeworICAgICAg
ICBjYXNlIERhdGFWaWV3R2V0SW50ODoKKyAgICAgICAgICAgIGlzU2lnbmVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIERhdGFWaWV3R2V0VWludDg6Cisg
ICAgICAgICAgICBieXRlU2l6ZSA9IDE7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIERhdGFWaWV3R2V0SW50MTY6CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldFVpbnQxNjoKKyAg
ICAgICAgICAgIGJ5dGVTaXplID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgRGF0YVZpZXdHZXRJbnQzMjoKKyAgICAgICAgICAgIGlzU2lnbmVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIERhdGFWaWV3R2V0VWludDMyOgorICAg
ICAgICAgICAgYnl0ZVNpemUgPSA0OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBEYXRhVmlld0dldEZsb2F0MzI6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDQ7CisgICAgICAg
ICAgICBvcCA9IERhdGFWaWV3R2V0RmxvYXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBEYXRhVmlld0dldEZsb2F0NjQ6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDg7CisgICAg
ICAgICAgICBvcCA9IERhdGFWaWV3R2V0RmxvYXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3Rh
dGU7CisgICAgICAgIE5vZGUqIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKKyAgICAgICAg
aWYgKGJ5dGVTaXplID4gMSkgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzIDwgMykKKyAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IEZhbHNlVHJpU3Rh
dGU7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGls
ZCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgyLCByZWdpc3Rlck9mZnNldCkpOwor
ICAgICAgICAgICAgICAgIGlmIChsaXR0bGVFbmRpYW5DaGlsZC0+aGFzQ29uc3RhbnQoKSkgewor
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbGl0dGxlRW5kaWFuQ2hpbGQt
PmNvbnN0YW50KCktPnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFu
ID0gY29uc3RhbnQucHVyZVRvQm9vbGVhbigpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNM
aXR0bGVFbmRpYW4gIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxp
dHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgeyB9OworICAgICAg
ICBkYXRhLmlzTGl0dGxlRW5kaWFuID0gaXNMaXR0bGVFbmRpYW47CisgICAgICAgIGRhdGEuaXNT
aWduZWQgPSBpc1NpZ25lZDsKKyAgICAgICAgZGF0YS5ieXRlU2l6ZSA9IGJ5dGVTaXplOworCisg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksCisgICAgICAgICAgICBh
ZGRUb0dyYXBoKG9wLCBPcEluZm8oZGF0YS5hc1F1YWRXb3JkKSwgT3BJbmZvKHByZWRpY3Rpb24p
LCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0
KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSksIGxpdHRsZUVu
ZGlhbkNoaWxkKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNhc2UgRGF0
YVZpZXdTZXRJbnQ4OgorICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50ODoKKyAgICBjYXNlIERhdGFW
aWV3U2V0SW50MTY6CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQxNjoKKyAgICBjYXNlIERhdGFW
aWV3U2V0SW50MzI6CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQzMjoKKyAgICBjYXNlIERhdGFW
aWV3U2V0RmxvYXQzMjoKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQ2NDogeworI2lmIENQVShC
SUdfRU5ESUFOKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICAgICAgaWYgKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgMykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIGluc2VydENoZWNrcygpOworCisgICAgICAgIHVpbnQ4X3QgYnl0ZVNpemU7CisgICAg
ICAgIGJvb2wgaXNGbG9hdGluZ1BvaW50ID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNTaWduZWQg
PSBmYWxzZTsKKyAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICAgICAgY2FzZSBEYXRh
Vmlld1NldEludDg6CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBG
QUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRhVmlld1NldFVpbnQ4OgorICAgICAgICAgICAg
Ynl0ZVNpemUgPSAxOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmll
d1NldEludDE2OgorICAgICAgICAgICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFM
TFRIUk9VR0g7CisgICAgICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MTY6CisgICAgICAgICAgICBi
eXRlU2l6ZSA9IDI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERhdGFWaWV3
U2V0SW50MzI6CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxM
VEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRhVmlld1NldFVpbnQzMjoKKyAgICAgICAgICAgIGJ5
dGVTaXplID0gNDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0YVZpZXdT
ZXRGbG9hdDMyOgorICAgICAgICAgICAgaXNGbG9hdGluZ1BvaW50ID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGJ5dGVTaXplID0gNDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERhdGFW
aWV3U2V0RmxvYXQ2NDoKKyAgICAgICAgICAgIGlzRmxvYXRpbmdQb2ludCA9IHRydWU7CisgICAg
ICAgICAgICBieXRlU2l6ZSA9IDg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0K
KworICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3RhdGU7CisgICAg
ICAgIE5vZGUqIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGJ5dGVT
aXplID4gMSkgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwg
NCkKKyAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IEZhbHNlVHJpU3RhdGU7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IGdldCh2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgzLCByZWdpc3Rlck9mZnNldCkpOworICAgICAgICAg
ICAgICAgIGlmIChsaXR0bGVFbmRpYW5DaGlsZC0+aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbGl0dGxlRW5kaWFuQ2hpbGQtPmNvbnN0YW50
KCktPnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gY29uc3Rh
bnQucHVyZVRvQm9vbGVhbigpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNMaXR0bGVFbmRp
YW4gIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlh
bkNoaWxkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgaXNMaXR0bGVFbmRpYW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgeyB9OworICAgICAgICBkYXRhLmlz
TGl0dGxlRW5kaWFuID0gaXNMaXR0bGVFbmRpYW47CisgICAgICAgIGRhdGEuaXNTaWduZWQgPSBp
c1NpZ25lZDsKKyAgICAgICAgZGF0YS5ieXRlU2l6ZSA9IGJ5dGVTaXplOworICAgICAgICBkYXRh
LmlzRmxvYXRpbmdQb2ludCA9IGlzRmxvYXRpbmdQb2ludDsKKworICAgICAgICBhZGRWYXJBcmdD
aGlsZChnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSk7
CisgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgx
LCByZWdpc3Rlck9mZnNldCkpKTsKKyAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KDIsIHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICBhZGRWYXJB
cmdDaGlsZChsaXR0bGVFbmRpYW5DaGlsZCk7CisKKyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpW
YXJBcmcsIERhdGFWaWV3U2V0LCBPcEluZm8oZGF0YS5hc1F1YWRXb3JkKSwgT3BJbmZvKCkpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBjYXNlIEhhc093blByb3BlcnR5SW50
cmluc2ljOiB7CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzU4LDcgKzE3NTgs
MjEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2Ug
TnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OgogICAgICAgICBkZWYoUHVyZVZh
bHVlKG5vZGUsIG5vZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKSk7CiAgICAgICAgIHJldHVybjsK
LSAgICAgICAgCisKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CisgICAgY2FzZSBEYXRhVmll
d0dldEludDogeworICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICByZWFkKFR5cGVk
QXJyYXlQcm9wZXJ0aWVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgRGF0
YVZpZXdTZXQ6IHsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgcmVhZChUeXBl
ZEFycmF5UHJvcGVydGllcyk7CisgICAgICAgIHdyaXRlKFR5cGVkQXJyYXlQcm9wZXJ0aWVzKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxOCw2ICszMTgsOSBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIERhdGFWaWV3R2V0
SW50OgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICBjYXNlIERhdGFWaWV3U2V0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIFB1c2hXaXRoU2NvcGU6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIz
NDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMDQsNiArMjEwNCw0MiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Zml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKIAor
ICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgorICAgICAgICBjYXNlIERhdGFWaWV3R2V0Rmxv
YXQ6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8RGF0YVZpZXdPYmplY3RVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJv
b2xlYW5Vc2U+KG5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBEYXRhVmlld1NldDogeworICAgICAgICAgICAgRGF0YVZpZXdEYXRh
IGRhdGEgPSBub2RlLT5kYXRhVmlld0RhdGEoKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RGF0YVZp
ZXdPYmplY3RVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAg
ICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEJvb2xlYW5Vc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBFZGdlJiB2YWx1ZVRvU3RvcmUgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDIpOworICAgICAgICAgICAgaWYgKGRhdGEuaXNGbG9hdGluZ1BvaW50KQorICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPih2YWx1ZVRvU3RvcmUpOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLmJ5dGVTaXplKSB7Cisg
ICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4odmFsdWVUb1N0b3JlKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAg
ICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KHZhbHVlVG9TdG9yZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KHZhbHVlVG9TdG9yZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBu
b2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBj
YXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJl
dmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDE5IEBAIHN0cnVjdCBOZXdBcnJheUJ1ZmZlckRh
dGEgewogc3RhdGljX2Fzc2VydChzaXplb2YoSW5kZXhpbmdUeXBlKSA8PSBzaXplb2YodW5zaWdu
ZWQpLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihOZXdBcnJheUJ1ZmZlckRhdGEpID09IHNp
emVvZih1aW50NjRfdCksICIiKTsKIAorc3RydWN0IERhdGFWaWV3RGF0YSB7CisgICAgdW5pb24g
eworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDhfdCBieXRlU2l6ZTsKKyAgICAg
ICAgICAgIGJvb2wgaXNTaWduZWQ7CisgICAgICAgICAgICBib29sIGlzRmxvYXRpbmdQb2ludDsg
Ly8gVXNlZCBmb3IgdGhlIERhdGFWaWV3U2V0IG5vZGUuCisgICAgICAgICAgICBUcmlTdGF0ZSBp
c0xpdHRsZUVuZGlhbjsKKyAgICAgICAgfTsKKyAgICAgICAgdWludDY0X3QgYXNRdWFkV29yZDsK
KyAgICB9OworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKERhdGFWaWV3RGF0YSkgPT0gc2l6ZW9m
KHVpbnQ2NF90KSwgIiIpOworCiBzdHJ1Y3QgQnJhbmNoVGFyZ2V0IHsKICAgICBCcmFuY2hUYXJn
ZXQoKQogICAgICAgICA6IGJsb2NrKDApCkBAIC0xNjU5LDYgKzE2NzIsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICAgICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9t
V2Vha01hcEdldDoKICAgICAgICAgY2FzZSBUb1RoaXM6CisgICAgICAgIGNhc2UgRGF0YVZpZXdH
ZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjE0Myw2ICsyMTU4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVu
c2lnbmVkPigpOwogICAgIH0KIAorICAgIERhdGFWaWV3RGF0YSBkYXRhVmlld0RhdGEoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRGF0YVZpZXdHZXRJbnQgfHwgb3AoKSA9PSBEYXRh
Vmlld0dldEZsb2F0IHx8IG9wKCkgPT0gRGF0YVZpZXdTZXQpOworICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PERhdGFWaWV3RGF0YT4obV9vcEluZm8uYXM8dWludDY0X3Q+KCkpOworICAgIH0K
KwogICAgIGJvb2wgc2hvdWxkR2VuZXJhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fcmVm
Q291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZp
c2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2ICs0ODMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKEZpbHRlckdldEJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhGaWx0ZXJJbkJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhGaWx0ZXJQdXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAg
LyogRGF0YSB2aWV3IGFjY2VzcyAqLyBcCisgICAgbWFjcm8oRGF0YVZpZXdHZXRJbnQsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIC8qIFRoZSBnZXRzIGFyZSBtdXN0IGdlbmVyYXRl
IGZvciBub3cgYmVjYXVzZSB0aGV5IGRvIGJvdW5kcyBjaGVja3MgKi8gXAorICAgIG1hY3JvKERh
dGFWaWV3R2V0RmxvYXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0RG91YmxlKSBcCisg
ICAgbWFjcm8oRGF0YVZpZXdTZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUhhc1ZhckFyZ3MpIFwKIAogCiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEgbW9ub3Rv
bmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBlcywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjIxLDcgKzYyMSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRh
Vmlld1NldDogeworICAgICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBub2RlLT5kYXRhVmll
d0RhdGEoKTsKKyAgICAgICAgICAgIGlmIChkYXRhLmlzRmxvYXRpbmdQb2ludCkKKyAgICAgICAg
ICAgICAgICBtX2dyYXBoLnZvdGVOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMiksIFZv
dGVWYWx1ZSwgd2VpZ2h0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAg
ICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAgICAgLy8gSWdub3JlIHRoZXNlIHNpbmNlIHRoZXkg
aGF2ZSBubyBlZmZlY3Qgb24gaW4tREZHIGV4ZWN1dGlvbi4KICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNzUwLDcgKzc1Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoK
ICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgICAgICBjYXNlIEdldFByb3RvdHlwZU9m
OgotICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OiB7CisgICAgICAgIGNh
c2UgRXh0cmFjdFZhbHVlRnJvbVdlYWtNYXBHZXQ6IAorICAgICAgICBjYXNlIERhdGFWaWV3R2V0
SW50OgorICAgICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKICAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtMTIyMCw2ICsxMjI5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0
YXR1czoKICAgICAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgorICAgICAgICBjYXNlIERhdGFW
aWV3U2V0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhp
cyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1
ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAgICAgICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6CiAg
ICAgICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKKyAgICAgICAgY2FzZSBEYXRhVmlld09iamVj
dFVzZToKICAgICAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBjYXNlIFN0cmlu
Z0lkZW50VXNlOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKQEAgLTYwMiw2ICs2MDMsMTMgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50OgorICAgIGNhc2UgRGF0YVZp
ZXdHZXRGbG9hdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBPT1BTOiBjYW4gd2UgYWx3YXlz
IGRvIHRoaXMgb3IganVzdCBzb21ldGltZXM/CisKKyAgICBjYXNlIERhdGFWaWV3U2V0OgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBjYXNlIFNldEFkZDoKICAgICBjYXNlIE1hcFNldDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NTUzLDYgKzQ1NTMsMzg2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNsZWFyQ2F0Y2hMb2NhbHMobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogCisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgorICAgIGNhc2UgRGF0YVZp
ZXdHZXRJbnQ6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZGF0YVZpZXcodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgZGF0YVZpZXdHUFIgPSBkYXRhVmlldy5n
cHIoKTsKKyAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3Qobm9kZS0+Y2hpbGQxKCksIGRh
dGFWaWV3R1BSKTsKKworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsK
KworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDEodGhpcyk7CisgICAgICAgIEdQUlJlZyB0MSA9
IHRlbXAxLmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisgICAgICAg
IEdQUlJlZyB0MiA9IHRlbXAyLmdwcigpOworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3Vs
YXRlQm9vbGVhbk9wZXJhbmQ+IGlzTGl0dGxlRW5kaWFuT3BlcmFuZDsKKyAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW5PcGVyYW5kLmVtcGxhY2Uo
dGhpcywgbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBHUFJSZWcgaXNMaXR0bGVFbmRpYW5HUFIg
PSBpc0xpdHRsZUVuZGlhbk9wZXJhbmQgPyBpc0xpdHRsZUVuZGlhbk9wZXJhbmQtPmdwcigpIDog
SW52YWxpZEdQUlJlZzsKKworICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFW
aWV3RGF0YSgpOworCisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGluZGV4R1BSLCB0
Mik7CisgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKKyAgICAgICAgICAgIG1faml0LmFk
ZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKKyAgICAgICAgbV9qaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgLy8gT09QUzogZG9lcyBsb2Fk
MzIgYWxyZWFkeSB6ZXJvIGV4dGVuZD8KKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIo
dDEsIHQxKTsKKyAgICAgICAgLy8gT09QUzogQ29tbWVudCBvbiB3aHkgdGhpcyB3b3JrcyBmb3Ig
bmVnYXRpdmVzLCBldGMuCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpT
VmFsdWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKKworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZWZWN0b3IoKSksIHQyKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVNvdXJjZSgpLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCB0MikpOyAvLyBPT1BTOiBhZGQgdGVzdC4gQ2FuIHdlIG5ldXRlciBhIEpTRGF0YVZp
ZXc/CisKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHQxKTsKKyAg
ICAgICAgYXV0byBiYXNlSW5kZXggPSBKSVRDb21waWxlcjo6QmFzZUluZGV4KHQyLCB0MSwgTWFj
cm9Bc3NlbWJsZXI6OlRpbWVzT25lKTsKKworICAgICAgICAvLyBPT1BTOiBkbyBwb2ludGVyIGNh
Z2luZworICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBEYXRhVmlld0dldEludCkgeworICAgICAg
ICAgICAgc3dpdGNoIChkYXRhLmJ5dGVTaXplKSB7CisgICAgICAgICAgICBjYXNlIDE6CisgICAg
ICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisgICAgICAgICAgICAgICAgICAgIG1faml0
LmxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4KGJhc2VJbmRleCwgdDIpOworICAg
ICAgICAgICAgICAgIGludDMyUmVzdWx0KHQyLCBub2RlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMjogeworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRs
ZUVuZGlhbkxvYWQgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25l
ZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQxNlNpZ25lZEV4dGVuZFRvMzIo
YmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1faml0LmxvYWQxNihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlhbkxvYWQgPSBbJl0geworICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkMTYoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAg
ICAgICAgIG1faml0LmJ5dGVTd2FwMTYodDIpOworICAgICAgICAgICAgICAgICAgICBpZiAoZGF0
YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQxNlRv
MzIodDIsIHQyKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgaWYgKGRh
dGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEJpZ0VuZGlhbkxvYWQoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRs
ZUVuZGlhbkxvYWQoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gaXNCaWdFbmRpYW4gPSBtX2ppdC5icmFuY2hUZXN0MzIo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIGlzTGl0dGxlRW5kaWFuR1BSLCBUcnVzdGVkSW1tMzIoMSkp
OworICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuTG9hZCgpOworICAgICAgICAg
ICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgICAg
IGlzQmlnRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0Vu
ZGlhbkxvYWQoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludDMyUmVzdWx0KHQyLCBub2RlKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgNDog
eworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihiYXNlSW5kZXgsIHQyKTsKKworICAgICAg
ICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAg
ICAgICAgICAgICAgICAgIG1faml0LmJ5dGVTd2FwMzIodDIpOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gTWl4ZWRUcmlTdGF0ZSkgeworICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BS
UmVnKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpc0xpdHRsZUVuZGlhbiA9IG1faml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgaXNMaXR0bGVFbmRpYW5HUFIsIFRy
dXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmJ5dGVTd2FwMzIodDIp
OworICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbi5saW5rKCZtX2ppdCk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisgICAg
ICAgICAgICAgICAgICAgIGludDMyUmVzdWx0KHQyLCBub2RlKTsKKyAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHRJc0ludDMyID0gIShub2RlLT5w
cmVkaWN0aW9uKCkgJiB+U3BlY0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHRJc0ludDMyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCksIG5vZGUsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpMZXNzVGhhbiwgdDIsIFRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJSZXN1bHQodDIsIG5vZGUpOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gT09QUzogRG8gSSBuZWVkIHRoaXMg
Z2l2ZW4gYWJvdmU/CisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJU
b1B0cih0MiwgdDIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgZnBU
ZW1wKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9E
b3VibGUodDIsIGZwVGVtcC5mcHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5i
b3hEb3VibGUoZnBUZW1wLmZwcigpLCB0Mik7CisgICAgICAgICAgICAgICAgICAgICAgICBqc1Zh
bHVlUmVzdWx0KHQyLCBub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgRlBSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQu
ZnByKCk7CisKKyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAg
ICAgY2FzZSA0OiB7CisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29kZSA9
IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWRGbG9hdChiYXNlSW5kZXgsIHJl
c3VsdEZQUik7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmNvbnZlcnRGbG9hdFRvRG91Ymxl
KHJlc3VsdEZQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICAgICAgYXV0byBlbWl0QmlnRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAg
IG1faml0LmxvYWQzMihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQu
Ynl0ZVN3YXAzMih0Mik7CisgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUzMlRvRmxvYXQo
dDIsIHJlc3VsdEZQUik7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmNvbnZlcnRGbG9hdFRv
RG91YmxlKHJlc3VsdEZQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAg
ICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAg
ICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0g
SW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNCaWdFbmRpYW4gPSBt
X2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGlzTGl0dGxlRW5kaWFuR1BS
LCBUcnVzdGVkSW1tMzIoMSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFu
Q29kZSgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlzQmlnRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIDg6IHsKKyAgICAgICAgICAgICAgICBh
dXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9q
aXQubG9hZERvdWJsZShiYXNlSW5kZXgsIHJlc3VsdEZQUik7CisgICAgICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUgPSBbJl0geworICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAg
ICAgICAgIG1faml0LmJ5dGVTd2FwNjQodDIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5t
b3ZlNjRUb0RvdWJsZSh0MiwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAg
ICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAg
ICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0g
SW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNCaWdFbmRpYW4gPSBt
X2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGlzTGl0dGxlRW5kaWFuR1BS
LCBUcnVzdGVkSW1tMzIoMSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFu
Q29kZSgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlzQmlnRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGRvdWJsZVJlc3VsdChyZXN1bHRGUFIsIG5vZGUpOworICAgICAgICB9CisKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBEYXRhVmlld1NldDogeworICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBkYXRhVmlldyh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsK
KyAgICAgICAgR1BSUmVnIGRhdGFWaWV3R1BSID0gZGF0YVZpZXcuZ3ByKCk7CisgICAgICAgIHNw
ZWN1bGF0ZURhdGFWaWV3T2JqZWN0KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIGRhdGFW
aWV3R1BSKTsKKworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAgIEdQUlJlZyBpbmRleEdQUiA9IGlu
ZGV4LmdwcigpOworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlU3RyaWN0SW50NTJP
cGVyYW5kPiBpbnQ1MlZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQ+IGRvdWJsZVZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUlu
dDMyT3BlcmFuZD4gaW50MzJWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGUFJUZW1wb3Jh
cnk+IGZwclRlbXBvcmFyeTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gSW52YWxpZEdQUlJl
ZzsKKyAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gSW52YWxpZEZQUlJlZzsKKyAgICAgICAgRlBS
UmVnIHRlbXBGUFIgPSBJbnZhbGlkRlBSUmVnOworCisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRh
ID0gbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CisKKyAgICAgICAgRWRnZSYgdmFsdWVFZGdlID0gbV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAyKTsKKyAgICAgICAgc3dpdGNoICh2YWx1ZUVkZ2UudXNl
S2luZCgpKSB7CisgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgICAgICBpbnQzMlZhbHVl
LmVtcGxhY2UodGhpcywgdmFsdWVFZGdlKTsKKyAgICAgICAgICAgIHZhbHVlR1BSID0gaW50MzJW
YWx1ZS0+Z3ByKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBV
c2U6CisgICAgICAgICAgICBkb3VibGVWYWx1ZS5lbXBsYWNlKHRoaXMsIHZhbHVlRWRnZSk7Cisg
ICAgICAgICAgICB2YWx1ZUZQUiA9IGRvdWJsZVZhbHVlLT5mcHIoKTsKKyAgICAgICAgICAgIGlm
IChkYXRhLmJ5dGVTaXplID09IDQpIHsKKyAgICAgICAgICAgICAgICBmcHJUZW1wb3JhcnkuZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICB0ZW1wRlBSID0gZnByVGVtcG9yYXJ5LT5mcHIo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDUy
UmVwVXNlOgorICAgICAgICAgICAgaW50NTJWYWx1ZS5lbXBsYWNlKHRoaXMsIHZhbHVlRWRnZSk7
CisgICAgICAgICAgICB2YWx1ZUdQUiA9IGludDUyVmFsdWUtPmdwcigpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAxKHRoaXMp
OworICAgICAgICBHUFJSZWcgdDEgPSB0ZW1wMS5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHRlbXAyKHRoaXMpOworICAgICAgICBHUFJSZWcgdDIgPSB0ZW1wMi5ncHIoKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAzKHRoaXMpOworICAgICAgICBHUFJSZWcgdDMgPSB0ZW1wMy5ncHIo
KTsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPiBpc0xp
dHRsZUVuZGlhbk9wZXJhbmQ7CisgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKKyAgICAgICAg
ICAgIGlzTGl0dGxlRW5kaWFuT3BlcmFuZC5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsK
KyAgICAgICAgR1BSUmVnIGlzTGl0dGxlRW5kaWFuR1BSID0gaXNMaXR0bGVFbmRpYW5PcGVyYW5k
ID8gaXNMaXR0bGVFbmRpYW5PcGVyYW5kLT5ncHIoKSA6IEludmFsaWRHUFJSZWc7CisKKyAgICAg
ICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHQyKTsKKyAgICAgICAgaWYgKGRh
dGEuYnl0ZVNpemUgPiAxKQorICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRh
dGEuYnl0ZVNpemUgLSAxKSwgdDIpOworICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgdDEpOworICAgICAgICAvLyBPT1BTOiBkb2VzIGxvYWQzMiBhbHJlYWR5IHplcm8gZXh0
ZW5kPworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0MSwgdDEpOworICAgICAgICAv
LyBPT1BTOiBDb21tZW50IG9uIHdoeSB0aGlzIHdvcmtzIGZvciBuZWdhdGl2ZXMsIGV0Yy4KKyAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwK
KyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IHQyLCB0MSkpOworCisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
ZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdDIpOwor
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCksIG5v
ZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHQyKSk7IC8vIE9P
UFM6IGFkZCB0ZXN0LiBDYW4gd2UgbmV1dGVyIGEgSlNEYXRhVmlldz8KKworICAgICAgICBtX2pp
dC56ZXJvRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgdDEpOworICAgICAgICBhdXRvIGJhc2VJbmRl
eCA9IEpJVENvbXBpbGVyOjpCYXNlSW5kZXgodDIsIHQxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNP
bmUpOworCisgICAgICAgIC8vIE9PUFM6IGRvIHBvaW50ZXIgY2FnaW5nCisgICAgICAgIGlmIChk
YXRhLmlzRmxvYXRpbmdQb2ludCkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVG
UFIgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh0ZW1wRlBS
ICE9IEludmFsaWRGUFJSZWcpOworICAgICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPT0gNCkg
eworICAgICAgICAgICAgICAgIG1faml0LmNvbnZlcnREb3VibGVUb0Zsb2F0KHZhbHVlRlBSLCB0
ZW1wRlBSKTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBb
Jl0geworICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZUZsb2F0KHRlbXBGUFIsIGJhc2VJ
bmRleCk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1pdEJp
Z0VuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlRmxvYXRU
bzMyKHRlbXBGUFIsIHQzKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAzMih0
Myk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIodDMsIGJhc2VJbmRleCk7Cisg
ICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5k
aWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5D
b2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBU
cnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAgICAg
ICAgICBhdXRvIGlzQmlnRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZEltbTMyKDEpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAgICAgICAgICBpc0JpZ0VuZGlhbi5s
aW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGF0
YS5ieXRlU2l6ZSA9PSA4KTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZUZQ
UiAhPSBJbnZhbGlkRlBSUmVnKTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVu
ZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZSh2
YWx1ZUZQUiwgYmFzZUluZGV4KTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
IGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBtX2pp
dC5tb3ZlRG91YmxlVG82NCh2YWx1ZUZQUiwgdDMpOworICAgICAgICAgICAgICAgICAgICBtX2pp
dC5ieXRlU3dhcDMyKHQzKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmU2NCh0Mywg
YmFzZUluZGV4KTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgaWYgKGRh
dGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRs
ZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gaXNCaWdFbmRpYW4gPSBtX2ppdC5icmFuY2hUZXN0MzIo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIGlzTGl0dGxlRW5kaWFuR1BSLCBUcnVzdGVkSW1tMzIoMSkp
OworICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAgICAg
ICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgICAg
IGlzQmlnRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0Vu
ZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgc3dpdGNoIChkYXRhLmJ5dGVTaXplKSB7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVFZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSk7
CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVHUFIgIT0gSW52YWxpZEdQUlJl
Zyk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmU4KHZhbHVlR1BSLCBiYXNlSW5kZXgpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiB7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVFZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSk7Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVHUFIgIT0gSW52YWxpZEdQUlJlZyk7
CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUxNih2YWx1ZUdQUiwgYmFzZUluZGV4KTsKKyAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUg
PSBbJl0geworICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlR1BSLCB0Myk7Cisg
ICAgICAgICAgICAgICAgICAgIG1faml0LmJ5dGVTd2FwMTYodDMpOworICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5zdG9yZTE2KHQzLCBiYXNlSW5kZXgpOworICAgICAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRl
KQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAg
ICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQ
UiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpc0JpZ0VuZGlh
biA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgaXNMaXR0bGVFbmRp
YW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVF
bmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAo
KTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdFbmRpYW4ubGluaygmbV9qaXQpOworICAgICAg
ICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgICAgICBk
b25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIDQ6IHsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh2YWx1ZUVkZ2UudXNlS2luZCgpID09IEludDMyVXNlIHx8IHZhbHVl
RWRnZS51c2VLaW5kKCkgPT0gSW50NTJSZXBVc2UpOworCisgICAgICAgICAgICAgICAgYXV0byBl
bWl0TGl0dGxlRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0
b3JlMzIodmFsdWVHUFIsIGJhc2VJbmRleCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIodmFsdWVHUFIsIHQzKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuYnl0ZVN3YXAzMih0Myk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0
b3JlMzIodmFsdWVHUFIsIGJhc2VJbmRleCk7CisKKyAgICAgICAgICAgICAgICB9OworCisgICAg
ICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBl
bHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0g
SW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNCaWdFbmRpYW4gPSBt
X2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGlzTGl0dGxlRW5kaWFuR1BS
LCBUcnVzdGVkSW1tMzIoMSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFu
Q29kZSgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlzQmlnRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICNpZiBFTkFCTEUoRlRMX0pJVCkgICAgICAgIAogICAg
IGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
Y2FsbFRpZXJVcCA9IG1faml0LmJyYW5jaEFkZDMyKApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05OTAzLDYgKzk5MDMsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlV2Vha1NldE9iagogICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSwgb3BlcmFuZC5n
cHIoKSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0
KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit7CisgICAgc3BlY3VsYXRlQ2VsbFR5cGUoZWRnZSwg
Y2VsbCwgU3BlY0RhdGFWaWV3T2JqZWN0LCBEYXRhVmlld1R5cGUpOworfQorCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlIGVkZ2UpCit7CisgICAgaWYg
KCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRGF0YVZpZXdPYmplY3QpKQorICAgICAgICByZXR1
cm47CisKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAg
IHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOworfQorCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90aGVyKEVkZ2UgZWRnZSkKIHsKICAg
ICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNPYmplY3QgfCBTcGVjT3RoZXIpKQpAQCAt
MTAyNzEsNiArMTAyODUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSos
IEVkCiAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgogICAgICAgICBzcGVjdWxhdGVXZWFrU2V0
T2JqZWN0KGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNl
OgorICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBzcGVjdWxhdGVPYmplY3RPck90
aGVyKGVkZ2UpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTYxMCw2ICsxNjEwLDggQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlV2Vha01hcE9iamVj
dChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KEVk
Z2UpOwogICAgIHZvaWQgc3BlY3VsYXRlV2Vha1NldE9iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7
CisgICAgdm9pZCBzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlKTsKKyAgICB2b2lkIHNwZWN1
bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0
ZU9iamVjdE9yT3RoZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdl
LCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9y
YWdlKEVkZ2UgZWRnZSwgR1BSUmVnIHN0cmluZywgR1BSUmVnIHN0b3JhZ2UpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDQsMTYgKzEwNCwxOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgVXNlCiAgICAgICAgIG91dC5wcmludCgiRGVyaXZlZEFycmF5Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIE1hcE9iamVjdFVzZToKLSAgICAgICAgb3V0LnByaW50KCJNYXBPYmplY3RV
c2UiKTsKKyAgICAgICAgb3V0LnByaW50KCJNYXBPYmplY3QiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgU2V0T2JqZWN0VXNlOgotICAgICAgICBvdXQucHJpbnQoIlNldE9iamVjdFVzZSIp
OworICAgICAgICBvdXQucHJpbnQoIlNldE9iamVjdCIpOwogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBXZWFrTWFwT2JqZWN0VXNlOgotICAgICAgICBvdXQucHJpbnQoIldlYWtNYXBPYmplY3RV
c2UiKTsKKyAgICAgICAgb3V0LnByaW50KCJXZWFrTWFwT2JqZWN0Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmludCgiV2Vha1Nl
dE9iamVjdFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIldlYWtTZXRPYmplY3QiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CisgICAgICAgIG91dC5wcmlu
dCgiRGF0YVZpZXdPYmplY3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgT2JqZWN0T3JP
dGhlclVzZToKICAgICAgICAgb3V0LnByaW50KCJPYmplY3RPck90aGVyIik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDYgKzcwLDcgQEAgZW51bSBVc2VLaW5kIHsKICAgICBTZXRPYmplY3RVc2UsCiAgICAgV2Vha01h
cE9iamVjdFVzZSwKICAgICBXZWFrU2V0T2JqZWN0VXNlLAorICAgIERhdGFWaWV3T2JqZWN0VXNl
LAogICAgIFN0cmluZ09iamVjdFVzZSwKICAgICBTdHJpbmdPclN0cmluZ09iamVjdFVzZSwKICAg
ICBOb3RTdHJpbmdWYXJVc2UsCkBAIC0xNjAsNiArMTYxLDggQEAgaW5saW5lIFNwZWN1bGF0ZWRU
eXBlIHR5cGVGaWx0ZXJGb3IoVXNlSwogICAgICAgICByZXR1cm4gU3BlY1dlYWtNYXBPYmplY3Q7
CiAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gU3BlY1dlYWtTZXRP
YmplY3Q7CisgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNE
YXRhVmlld09iamVjdDsKICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgcmV0dXJu
IFNwZWNTdHJpbmdPYmplY3Q7CiAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKQEAg
LTI1OSw2ICsyNjIsNyBAQCBpbmxpbmUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogICAgIGNh
c2UgU2V0T2JqZWN0VXNlOgogICAgIGNhc2UgV2Vha01hcE9iamVjdFVzZToKICAgICBjYXNlIFdl
YWtTZXRPYmplY3RVc2U6CisgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24g
MjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTksNiArMzU5LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBj
YXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIENyZWF0ZVRoaXM6CisgICAgY2FzZSBE
YXRhVmlld0dldEludDoKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CisgICAgY2FzZSBEYXRh
Vmlld1NldDoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApAQCAt
NDQ1LDYgKzQ0OCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFwaCkK
ICAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNl
IFdlYWtNYXBPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNl
OgorICAgICAgICAgICAgICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CiAgICAgICAgICAgICAg
ICAgY2FzZSBGaW5hbE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFJlZ0V4cE9iamVj
dFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFByb3h5T2JqZWN0VXNlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjM0
ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzA3LDYgKzEzMDcsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBjb21waWxlRmlsdGVySUNTdGF0dXMo
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgorICAg
ICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CisgICAgICAgICAgICBjb21waWxlRGF0YVZpZXdH
ZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERhdGFWaWV3U2V0OgorICAg
ICAgICAgICAgY29tcGlsZURhdGFWaWV3U2V0KCk7CisgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTEyMjM4
LDYgKzEyMjQ1LDM2NCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9pbnRlcnByZXRlci5m
aWx0ZXJJQ1N0YXR1cyhtX25vZGUpOwogICAgIH0KKworICAgIExWYWx1ZSBieXRlU3dhcDMyKExW
YWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLT50eXBlKCkg
PT0gSW50MzIpOworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5w
YXRjaHBvaW50KEludDMyKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVy
KHZhbHVlKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAg
ICAgICAgICBqaXQuYnl0ZVN3YXAzMihwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAgcmV0
dXJuIHBhdGNocG9pbnQ7CisgICAgfQorCisgICAgTFZhbHVlIGJ5dGVTd2FwNjQoTFZhbHVlIHZh
bHVlKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBJbnQ2
NCk7CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9p
bnQoSW50NjQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsdWUp
OworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAg
IGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAg
IGppdC5ieXRlU3dhcDY0KHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOworICAgICAgICBw
YXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICByZXR1cm4gcGF0
Y2hwb2ludDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRjEsIHR5cGVuYW1lIEYy
PgorICAgIExWYWx1ZSBlbWl0QnJhbmNoT25FbmRpYW5uZXNzQ29kZShMVmFsdWUgaXNMaXR0bGVF
bmRpYW4sIGNvbnN0IEYxJiBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgY29uc3QgRjImIGVtaXRCaWdF
bmRpYW5Db2RlKQorICAgIHsKKyAgICAgICAgTFR5cGUgdHlwZTsKKworICAgICAgICBMQmFzaWNC
bG9jayBiaWdFbmRpYW5DYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxv
Y2sgbGl0dGxlRW5kaWFuQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgbV9vdXQuYnJh
bmNoKG1fb3V0LnRlc3RJc1plcm8zMihpc0xpdHRsZUVuZGlhbiwgbV9vdXQuY29uc3RJbnQzMigx
KSksCisgICAgICAgICAgICB1bnN1cmUoYmlnRW5kaWFuQ2FzZSksIHVuc3VyZShsaXR0bGVFbmRp
YW5DYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhiaWdFbmRpYW5DYXNlLCBsaXR0bGVFbmRpYW5DYXNlKTsKKyAgICAgICAgTFZhbHVlIGJpZ0Vu
ZGlhblZhbHVlID0gZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgdHlwZSA9IGJpZ0VuZGlh
blZhbHVlID8gYmlnRW5kaWFuVmFsdWUtPnR5cGUoKSA6IFZvaWQ7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGJpZ0VuZGlhblJlc3VsdCA9IGJpZ0VuZGlhblZhbHVlID8gbV9vdXQuYW5jaG9yKGJp
Z0VuZGlhblZhbHVlKSA6IFZhbHVlRnJvbUJsb2NrKCk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhsaXR0bGVFbmRpYW5DYXNlLCBj
b250aW51YXRpb24pOworICAgICAgICBMVmFsdWUgbGl0dGxlRW5kaWFuVmFsdWUgPSBlbWl0TGl0
dGxlRW5kaWFuQ29kZSgpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBsaXR0bGVFbmRpYW5SZXN1
bHQgPSBsaXR0bGVFbmRpYW5WYWx1ZSA/IG1fb3V0LmFuY2hvcihsaXR0bGVFbmRpYW5WYWx1ZSkg
OiBWYWx1ZUZyb21CbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCgoIWxpdHRsZUVuZGlh
blZhbHVlICYmICFiaWdFbmRpYW5WYWx1ZSkgfHwgdHlwZSA9PSBsaXR0bGVFbmRpYW5WYWx1ZS0+
dHlwZSgpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVCghIWJpZ0VuZGlhblJlc3VsdCA9PSAhIWxpdHRsZUVuZGlhblJlc3VsdCk7CisgICAgICAg
IGlmIChiaWdFbmRpYW5SZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gbV9vdXQucGhpKHR5cGUs
IGJpZ0VuZGlhblJlc3VsdCwgbGl0dGxlRW5kaWFuUmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlRGF0YVZpZXdHZXQoKQorICAgIHsKKyAg
ICAgICAgTFZhbHVlIGRhdGFWaWV3ID0gbG93RGF0YVZpZXdPYmplY3QobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIExWYWx1ZSBpbmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICBMVmFsdWUgaXNMaXR0bGVFbmRpYW4gPSBudWxscHRyOworICAgICAgICBpZiAobV9u
b2RlLT5jaGlsZDMoKSkKKyAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gbG93Qm9vbGVhbiht
X25vZGUtPmNoaWxkMygpKTsKKworICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+
ZGF0YVZpZXdEYXRhKCk7CisKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQ
dHIobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVlIGluZGV4VG9D
aGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOworICAgICAgICBpZiAoZGF0YS5ieXRlU2l6
ZSA+IDEpCisgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNr
LCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CisgICAgICAgIHNwZWN1bGF0
ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwoaW5k
ZXhUb0NoZWNrLCBsZW5ndGgpKTsKKworICAgICAgICBMVmFsdWUgdmVjdG9yID0gbV9vdXQubG9h
ZFB0cihkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworCisgICAg
ICAgIC8vIE9PUFM6IGFkZCBuZXV0ZXJpbmcgdGVzdHMgZm9yIEpTRGF0YVZpZXcuIFdlIGRvbid0
IGV4cGxpY2l0bHkgbmVlZCB0byBjaGVjayBmb3IgbnVsbHB0ciBzaW5jZSBvdXIgYm91bmRzIGNo
ZWNrIHdpbGwgZmFpbC4KKworICAgICAgICBUeXBlZFBvaW50ZXIgcG9pbnRlcihtX2hlYXBzLnR5
cGVkQXJyYXlQcm9wZXJ0aWVzLCBtX291dC5hZGQodmVjdG9yLCBtX291dC56ZXJvRXh0UHRyKGlu
ZGV4KSkpOworCisgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gRGF0YVZpZXdHZXRJbnQpIHsK
KyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAgICAgY2FzZSAx
OgorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAgICAgICAg
ICBzZXRJbnQzMihtX291dC5sb2FkOFNpZ25FeHQzMihwb2ludGVyKSk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkOFplcm9FeHQz
Mihwb2ludGVyKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Mb2FkID0gWyZdIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbV9vdXQubG9hZDE2U2lnbkV4dDMyKHBvaW50ZXIpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbV9vdXQubG9hZDE2WmVyb0V4dDMyKHBvaW50ZXIpOworICAgICAgICAg
ICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Mb2FkID0gWyZd
IHsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVlIHZhbCA9IG1fb3V0LmxvYWQxNlplcm9FeHQz
Mihwb2ludGVyKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBPT1BTOiB0ZWFjaCBiMyBieXRl
IHN3YXAhCisgICAgICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9
IG1fb3V0LnBhdGNocG9pbnQoSW50MzIpOworICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92
ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuYnl0ZVN3YXAxNihwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LnNpZ25FeHRlbmQxNlRvMzIocGFyYW1zWzBdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0
Y2hwb2ludDsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgaWYgKGRhdGEu
aXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2V0
SW50MzIoZW1pdEJpZ0VuZGlhbkxvYWQoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0
YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIHNl
dEludDMyKGVtaXRMaXR0bGVFbmRpYW5Mb2FkKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgc2V0SW50MzIoZW1pdEJyYW5jaE9uRW5kaWFubmVzc0NvZGUoaXNM
aXR0bGVFbmRpYW4sIGVtaXRMaXR0bGVFbmRpYW5Mb2FkLCBlbWl0QmlnRW5kaWFuTG9hZCkpOwor
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNl
IDQ6IHsKKyAgICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBtX291dC5sb2FkMzIo
cG9pbnRlcik7CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBG
YWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBsb2FkZWRWYWx1ZSA9IGJ5dGVTd2Fw
MzIobG9hZGVkVmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVF
bmRpYW4gPT0gTWl4ZWRUcmlTdGF0ZSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGVtaXRM
aXR0bGVFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBlbWl0QmlnRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gYnl0ZVN3YXAzMihsb2FkZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWUgPSBlbWl0QnJhbmNoT25FbmRpYW5uZXNz
Q29kZShpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5D
b2RlKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1Np
Z25lZCkKKyAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIobG9hZGVkVmFsdWUpOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdElzSW50MzIg
PSAhKG1fbm9kZS0+cHJlZGljdGlvbigpICYgflNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0SXNJbnQzMikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGxv
YWRlZFZhbHVlLCBtX291dC5pbnQzMlplcm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEludDMyKGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIExWYWx1ZSBkb3VibGVWYWwgPSBtX291dC5pbnRUb0RvdWJsZSht
X291dC56ZXJvRXh0KGxvYWRlZFZhbHVlLCBJbnQ2NCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlVmFsID0gYm94RG91YmxlKGRvdWJsZVZhbCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRKU1ZhbHVlKGRvdWJsZVZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAg
ICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtX291dC5mbG9hdFRvRG91YmxlKG1fb3V0LmxvYWRGbG9hdChwb2ludGVyKSk7
CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlh
bkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBt
X291dC5sb2FkMzIocG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoRG91YmxlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGxvYWRlZFZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAg
ICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtcy5ncFNj
cmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmJ5dGVTd2FwMzIocGFyYW1z
LmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZTMyVG9GbG9h
dChwYXJhbXMuZ3BTY3JhdGNoKDApLCBwYXJhbXNbMF0uZnByKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvbnZlcnRGbG9hdFRvRG91YmxlKHBhcmFtc1swXS5mcHIoKSwgcGFyYW1z
WzBdLmZwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAg
IHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAg
ICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAg
ICAgICAgICAgIHNldERvdWJsZShlbWl0TGl0dGxlRW5kaWFuQ29kZSgpKTsKKyAgICAgICAgICAg
ICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAg
ICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0QmlnRW5kaWFuQ29kZSgpKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0QnJhbmNoT25F
bmRpYW5uZXNzQ29kZShpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRC
aWdFbmRpYW5Db2RlKSk7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNhc2UgODogeworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVu
ZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQubG9hZERv
dWJsZShwb2ludGVyKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgYXV0
byBlbWl0QmlnRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBs
b2FkZWRWYWx1ZSA9IG1fb3V0LmxvYWQ2NChwb2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAg
bG9hZGVkVmFsdWUgPSBieXRlU3dhcDY0KGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1fb3V0LmJpdENhc3QobG9hZGVkVmFsdWUsIERvdWJsZSk7CisgICAgICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRy
dWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2V0RG91YmxlKGVtaXRMaXR0bGVFbmRp
YW5Db2RlKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4g
PT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2V0RG91YmxlKGVtaXRCaWdF
bmRpYW5Db2RlKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
c2V0RG91YmxlKGVtaXRCcmFuY2hPbkVuZGlhbm5lc3NDb2RlKGlzTGl0dGxlRW5kaWFuLCBlbWl0
TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpKTsKKworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBjb21waWxlRGF0YVZpZXdTZXQoKQorICAgIHsKKyAgICAg
ICAgTFZhbHVlIGRhdGFWaWV3ID0gbG93RGF0YVZpZXdPYmplY3QobV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ncmFwaC52
YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKKyAgICAgICAgTFZhbHVlIGlzTGl0dGxlRW5kaWFuID0g
bnVsbHB0cjsKKyAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSkKKyAg
ICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gbG93Qm9vbGVhbihtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMykpOworCisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRh
Vmlld0RhdGEoKTsKKworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0ciht
X291dC5sb2FkMzJOb25OZWdhdGl2ZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBz
LkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNr
ID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CisgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4g
MSkKKyAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1f
b3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKKyAgICAgICAgLy8gT09QUzogYWRk
IG5ldXRlcmluZyB0ZXN0cyBmb3IgSlNEYXRhVmlldy4gV2UgZG9uJ3QgZXhwbGljaXRseSBuZWVk
IHRvIGNoZWNrIGZvciBudWxscHRyIHNpbmNlIG91ciBib3VuZHMgY2hlY2sgd2lsbCBmYWlsLgor
ICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQu
YWJvdmVPckVxdWFsKGluZGV4VG9DaGVjaywgbGVuZ3RoKSk7CisKKyAgICAgICAgRWRnZSYgdmFs
dWVFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpOworICAgICAgICBMVmFsdWUg
dmFsdWVUb1N0b3JlOworICAgICAgICBzd2l0Y2ggKHZhbHVlRWRnZS51c2VLaW5kKCkpIHsKKyAg
ICAgICAgY2FzZSBJbnQzMlVzZToKKyAgICAgICAgICAgIHZhbHVlVG9TdG9yZSA9IGxvd0ludDMy
KHZhbHVlRWRnZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBV
c2U6CisgICAgICAgICAgICB2YWx1ZVRvU3RvcmUgPSBsb3dEb3VibGUodmFsdWVFZGdlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICAgICAg
dmFsdWVUb1N0b3JlID0gbG93U3RyaWN0SW50NTIodmFsdWVFZGdlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIExWYWx1ZSB2ZWN0b3IgPSBtX291dC5sb2Fk
UHRyKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvcik7CisgICAgICAg
IFR5cGVkUG9pbnRlciBwb2ludGVyKG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMsIG1fb3V0
LmFkZCh2ZWN0b3IsIG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpKSk7CisKKyAgICAgICAgaWYgKGRh
dGEuaXNGbG9hdGluZ1BvaW50KSB7CisgICAgICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA9PSA0
KSB7CisgICAgICAgICAgICAgICAgdmFsdWVUb1N0b3JlID0gbV9vdXQuZG91YmxlVG9GbG9hdCh2
YWx1ZVRvU3RvcmUpOworCisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29k
ZSA9IFsmXSAoKSAtPiBMVmFsdWUgeworICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZUZs
b2F0KHZhbHVlVG9TdG9yZSwgcG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRC
aWdFbmRpYW5Db2RlID0gWyZdICgpIC0+IExWYWx1ZSB7CisgICAgICAgICAgICAgICAgICAgIFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50MzIpOworICAg
ICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsdWVUb1N0
b3JlKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZUZsb2F0VG8zMihwYXJhbXNbMV0u
ZnByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuYnl0
ZVN3YXAzMihwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihwYXRjaHBvaW50LCBwb2ludGVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUp
CisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAg
ICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBlbWl0QnJhbmNoT25FbmRpYW5uZXNzQ29kZShpc0xpdHRs
ZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKTsKKworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChkYXRhLmJ5
dGVTaXplID09IDgpOworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUg
PSBbJl0gKCkgLT4gTFZhbHVlIHsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmVEb3Vi
bGUodmFsdWVUb1N0b3JlLCBwb2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdF
bmRpYW5Db2RlID0gWyZdICgpIC0+IExWYWx1ZSB7CisgICAgICAgICAgICAgICAgICAgIG1fb3V0
LnN0b3JlNjQoYnl0ZVN3YXA2NChtX291dC5iaXRDYXN0KHZhbHVlVG9TdG9yZSwgSW50NjQpKSwg
cG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAg
ICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBG
YWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0
YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZW1pdEJyYW5jaE9uRW5kaWFubmVz
c0NvZGUoaXNMaXR0bGVFbmRpYW4sIGVtaXRMaXR0bGVFbmRpYW5Db2RlLCBlbWl0QmlnRW5kaWFu
Q29kZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzd2l0
Y2ggKGRhdGEuYnl0ZVNpemUpIHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh2YWx1ZUVkZ2UudXNlS2luZCgpID09IEludDMyVXNlKTsKKyAgICAg
ICAgICAgICAgICBtX291dC5zdG9yZTMyQXM4KHZhbHVlVG9TdG9yZSwgcG9pbnRlcik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IHsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh2YWx1ZUVkZ2UudXNlS2luZCgpID09IEludDMyVXNlKTsKKworICAg
ICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0gKCkgLT4gTFZhbHVl
IHsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMkFzMTYodmFsdWVUb1N0b3JlLCBw
b2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdICgp
IC0+IExWYWx1ZSB7CisgICAgICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50MzIpOworICAgICAgICAgICAgICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsdWVUb1N0b3JlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuYnl0ZVN3YXAxNihwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKworICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9y
ZTMyQXMxNihwYXRjaHBvaW50LCBwb2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRh
LmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVt
aXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVF
bmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBl
bWl0QnJhbmNoT25FbmRpYW5uZXNzQ29kZShpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlh
bkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgNDogeworICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHZhbHVlRWRnZS51c2VLaW5kKCkgPT0gSW50MzJVc2UgfHwgdmFsdWVFZGdlLnVzZUtp
bmQoKSA9PSBJbnQ1MlJlcFVzZSk7CisKKyAgICAgICAgICAgICAgICBpZiAodmFsdWVFZGdlLnVz
ZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVUb1N0b3Jl
ID0gbV9vdXQuY2FzdFRvSW50MzIodmFsdWVUb1N0b3JlKTsKKworICAgICAgICAgICAgICAgIGF1
dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0gKCkgLT4gTFZhbHVlIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuc3RvcmUzMih2YWx1ZVRvU3RvcmUsIHBvaW50ZXIpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUgPSBbJl0gKCkgLT4gTFZhbHVlIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihieXRlU3dhcDMyKHZhbHVlVG9TdG9yZSksIHBv
aW50ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFs
c2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0
ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVtaXRCcmFuY2hPbkVuZGlhbm5lc3ND
b2RlKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNv
ZGUpOworCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgdm9pZCBlbWl0U3dp
dGNoRm9yTXVsdGlCeU9mZnNldChMVmFsdWUgYmFzZSwgYm9vbCBzdHJ1Y3R1cmVzQ2hlY2tlZCwg
VmVjdG9yPFN3aXRjaENhc2UsIDI+JiBjYXNlcywgTEJhc2ljQmxvY2sgZXhpdCkKICAgICB7CkBA
IC0xNDQ2OCw2ICsxNDgzMywxMyBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGVXZWFrU2V0
T2JqZWN0KGVkZ2UsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCisg
ICAgTFZhbHVlIGxvd0RhdGFWaWV3T2JqZWN0KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIExW
YWx1ZSByZXN1bHQgPSBsb3dDZWxsKGVkZ2UpOworICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09i
amVjdChlZGdlLCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICAK
ICAgICBMVmFsdWUgbG93U3RyaW5nKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBt
b2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKQEAgLTE0OTQzLDYgKzE1
MzE1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBXZWFrU2V0T2JqZWN0VXNlOgogICAgICAg
ICAgICAgc3BlY3VsYXRlV2Vha1NldE9iamVjdChlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlRGF0
YVZpZXdPYmplY3QoZWRnZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJp
bmdVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmcoZWRnZSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTE1NDM3LDYgKzE1ODEyLDE3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBz
cGVjdWxhdGVXZWFrU2V0T2JqZWN0KGVkZ2UsIGxvd0NlbGwoZWRnZSkpOwogICAgIH0KKworICAg
IHZvaWQgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAg
ICB7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKAorICAgICAgICAgICAganNWYWx1ZVZhbHVlKGNl
bGwpLCBlZGdlLCBTcGVjRGF0YVZpZXdPYmplY3QsIGlzTm90VHlwZShjZWxsLCBEYXRhVmlld1R5
cGUpKTsKKyAgICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UgZWRn
ZSkKKyAgICB7CisgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIGxvd0NlbGwo
ZWRnZSkpOworICAgIH0KICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZyhFZGdlIGVkZ2Us
IExWYWx1ZSBjZWxsKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50cmluc2ljLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDYgKzIzOSwz
OCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyCiAgICAgICAgIHJl
dHVybiAiQ1BVQ3B1aWRJbnRyaW5zaWMiOwogICAgIGNhc2UgQ1BVUGF1c2VJbnRyaW5zaWM6CiAg
ICAgICAgIHJldHVybiAiQ1BVUGF1c2VJbnRyaW5zaWMiOworICAgIGNhc2UgRGF0YVZpZXdHZXRJ
bnQ4OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0SW50OCI7CisgICAgY2FzZSBEYXRhVmll
d0dldFVpbnQ4OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0VWludDgiOworICAgIGNhc2Ug
RGF0YVZpZXdHZXRJbnQxNjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldEludDE2IjsKKyAg
ICBjYXNlIERhdGFWaWV3R2V0VWludDE2OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0VWlu
dDE2IjsKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZp
ZXdHZXRJbnQzMiI7CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQzMjoKKyAgICAgICAgcmV0dXJu
ICJEYXRhVmlld0dldFVpbnQzMiI7CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0MzI6CisgICAg
ICAgIHJldHVybiAiRGF0YVZpZXdHZXRGbG9hdDMyIjsKKyAgICBjYXNlIERhdGFWaWV3R2V0Rmxv
YXQ2NDoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldEZsb2F0NjQiOworICAgIGNhc2UgRGF0
YVZpZXdTZXRJbnQ4OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0SW50OCI7CisgICAgY2Fz
ZSBEYXRhVmlld1NldFVpbnQ4OgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0VWludDgiOwor
ICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQxNjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldElu
dDE2IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0VWludDE2OgorICAgICAgICByZXR1cm4gIkRhdGFW
aWV3U2V0VWludDE2IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50MzI6CisgICAgICAgIHJldHVy
biAiRGF0YVZpZXdTZXRJbnQzMiI7CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQzMjoKKyAgICAg
ICAgcmV0dXJuICJEYXRhVmlld1NldFVpbnQzMiI7CisgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0
MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRGbG9hdDMyIjsKKyAgICBjYXNlIERhdGFW
aWV3U2V0RmxvYXQ2NDoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEZsb2F0NjQiOwogICAg
IH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHJldmlz
aW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDIzIEBAIGVudW0gSW50cmluc2ljIHsKICAg
ICBDUFVSZHRzY0ludHJpbnNpYywKICAgICBDUFVDcHVpZEludHJpbnNpYywKICAgICBDUFVQYXVz
ZUludHJpbnNpYywKKworICAgIERhdGFWaWV3R2V0SW50OCwKKyAgICBEYXRhVmlld0dldFVpbnQ4
LAorICAgIERhdGFWaWV3R2V0SW50MTYsCisgICAgRGF0YVZpZXdHZXRVaW50MTYsCisgICAgRGF0
YVZpZXdHZXRJbnQzMiwKKyAgICBEYXRhVmlld0dldFVpbnQzMiwKKyAgICBEYXRhVmlld0dldEZs
b2F0MzIsCisgICAgRGF0YVZpZXdHZXRGbG9hdDY0LAorICAgIERhdGFWaWV3U2V0SW50OCwKKyAg
ICBEYXRhVmlld1NldFVpbnQ4LAorICAgIERhdGFWaWV3U2V0SW50MTYsCisgICAgRGF0YVZpZXdT
ZXRVaW50MTYsCisgICAgRGF0YVZpZXdTZXRJbnQzMiwKKyAgICBEYXRhVmlld1NldFVpbnQzMiwK
KyAgICBEYXRhVmlld1NldEZsb2F0MzIsCisgICAgRGF0YVZpZXdTZXRGbG9hdDY0LAogfTsKIAog
Y29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIC8qIFNvdXJjZSBmb3IgSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaAogQGJl
Z2luIGRhdGFWaWV3VGFibGUKLSAgZ2V0SW50OCAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9G
dW5jR2V0SW50OCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldFVp
bnQ4ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4ICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRJbnQxNiAgICAgICAgICAgICAgZGF0YVZpZXdQ
cm90b0Z1bmNHZXRJbnQxNiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAg
Z2V0VWludDE2ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDE2ICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldEludDMyICAgICAgICAgICAgICBkYXRh
Vmlld1Byb3RvRnVuY0dldEludDMyICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAg
MQotICBnZXRVaW50MzIgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0RmxvYXQzMiAgICAgICAgICAg
IGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQzMiAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAg
ICAgICAxCi0gIGdldEZsb2F0NjQgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0
NjQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBzZXRJbnQ4ICAgICAgICAg
ICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQ4ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uICAgICAgIDIKLSAgc2V0VWludDggICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0
VWludDggICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldEludDE2ICAg
ICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEludDE2ICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gICAgICAgMgotICBzZXRVaW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1
bmNTZXRVaW50MTYgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0SW50
MzIgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MzIgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldFVpbnQzMiAgICAgICAgICAgICBkYXRhVmlld1By
b3RvRnVuY1NldFVpbnQzMiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBz
ZXRGbG9hdDMyICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMyICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0RmxvYXQ2NCAgICAgICAgICAgIGRhdGFW
aWV3UHJvdG9GdW5jU2V0RmxvYXQ2NCAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAy
CisgIGdldEludDggICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDggICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRJbnQ4CisgIGdldFVp
bnQ4ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQ4ICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRVaW50OAorICBnZXRJbnQxNiAgICAg
ICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQxNiAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0SW50MTYKKyAgZ2V0VWludDE2ICAgICAgICAgICAg
IGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDE2ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAg
ICAgICAxICBEYXRhVmlld0dldFVpbnQxNgorICBnZXRJbnQzMiAgICAgICAgICAgICAgZGF0YVZp
ZXdQcm90b0Z1bmNHZXRJbnQzMiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEg
IERhdGFWaWV3R2V0SW50MzIKKyAgZ2V0VWludDMyICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9G
dW5jR2V0VWludDMyICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmll
d0dldFVpbnQzMgorICBnZXRGbG9hdDMyICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRG
bG9hdDMyICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0Rmxv
YXQzMgorICBnZXRGbG9hdDY0ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDY0
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0RmxvYXQ2NAor
ICBzZXRJbnQ4ICAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQ4ICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0SW50OAorICBzZXRVaW50
OCAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50OCAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0VWludDgKKyAgc2V0SW50MTYgICAgICAg
ICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50MTYgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAgICAgICAyICBEYXRhVmlld1NldEludDE2CisgIHNldFVpbnQxNiAgICAgICAgICAgICBk
YXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAg
ICAgMiAgRGF0YVZpZXdTZXRVaW50MTYKKyAgc2V0SW50MzIgICAgICAgICAgICAgIGRhdGFWaWV3
UHJvdG9GdW5jU2V0SW50MzIgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBE
YXRhVmlld1NldEludDMyCisgIHNldFVpbnQzMiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVu
Y1NldFVpbnQzMiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdT
ZXRVaW50MzIKKyAgc2V0RmxvYXQzMiAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0Rmxv
YXQzMiAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldEZsb2F0
MzIKKyAgc2V0RmxvYXQ2NCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQ2NCAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldEZsb2F0NjQKICAg
YnVmZmVyICAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIgICAgICAgICAg
ICBEb250RW51bXxBY2Nlc3NvciAgICAgICAwCiAgIGJ5dGVMZW5ndGggICAgICAgICAgICBkYXRh
Vmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCAgICAgICAgRG9udEVudW18QWNjZXNzb3IgICAgICAg
MAogICBieXRlT2Zmc2V0ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQg
ICAgICAgIERvbnRFbnVtfEFjY2Vzc29yICAgICAgIDAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Ry
aVN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVHJpU3RhdGUuaAkocmV2aXNp
b24gMjM0ODczKQorKysgU291cmNlL1dURi93dGYvVHJpU3RhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBUcmlTdGF0ZSB7Citl
bnVtIFRyaVN0YXRlIDogaW50OF90IHsKICAgICBGYWxzZVRyaVN0YXRlLAogICAgIFRydWVUcmlT
dGF0ZSwKICAgICBNaXhlZFRyaVN0YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347476</attachid>
            <date>2018-08-19 18:32:42 -0700</date>
            <delta_ts>2018-08-20 00:41:37 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>83066</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3LWppdC1zZXQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SlNUZXN0cy9zdHJlc3MvZGF0YXZpZXctaml0LXNldC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rl
c3RzL3N0cmVzcy9kYXRhdmlldy1qaXQtc2V0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzA5IEBACisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFi
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2Z1bmN0aW9uIHJlYWRIZXgoZHYsIGJ5
dGVzKSB7CisgICAgZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKSB7IAorICAgICAgICBsZXQgYiA9
IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICAgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGIpOwor
ICAgICAgICBkdi5zZXRJbnQzMigwLCAweDAwMTEyMjMzLCB0cnVlKTsKKyAgICAgICAgcmV0dXJu
IGR2LmdldFVpbnQ4KDApID09PSAweDMzOworICAgIH0KKyAgICBsZXQgc3RyID0gIiI7CisgICAg
ZnVuY3Rpb24gcmVhZEJ5dGUoaSkgeworICAgICAgICBsZXQgYiA9IGR2LmdldFVpbnQ4KGkpLnRv
U3RyaW5nKDE2KTsKKyAgICAgICAgaWYgKGIubGVuZ3RoID09PSAxKQorICAgICAgICAgICAgYiA9
ICIwIiArIGI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChiLmxlbmd0aCA9PT0g
MikKKyAgICAgICAgcmV0dXJuIGI7CisgICAgfQorICAgIGlmIChpc0xpdHRsZUVuZGlhbigpKSB7
CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZXM7ICsraSkKKyAgICAgICAgICAgIHN0
ciA9IHN0ciArIHJlYWRCeXRlKGkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAobGV0IGkg
PSBieXRlczsgaS0tOykKKyAgICAgICAgICAgIHN0ciA9IHN0ciArIHJlYWRCeXRlKGkpOworICAg
IH0KKworICAgIHJldHVybiAiMHgiICsgc3RyOworfQorCit7CisgICAgbGV0IGIgPSBuZXcgQXJy
YXlCdWZmZXIoNCk7CisgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGIpOworICAgIGR2LnNldElu
dDMyKDAsIDB4MDAxMTIyMzMpOworICAgIGFzc2VydChyZWFkSGV4KGR2LCA0KSA9PT0gIjB4MDAx
MTIyMzMiKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBmdW5jdGlvbiBzdG9yZUxpdHRs
ZUVuZGlhbihkdiwgaW5kZXgsIHZhbHVlKSB7CisgICAgICAgIGR2LnNldEludDE2KGluZGV4LCB2
YWx1ZSwgdHJ1ZSk7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3JlTGl0dGxlRW5kaWFuKTsKKwor
ICAgIGZ1bmN0aW9uIHN0b3JlQmlnRW5kaWFuKGR2LCBpbmRleCwgdmFsdWUpIHsKKyAgICAgICAg
ZHYuc2V0SW50MTYoaW5kZXgsIHZhbHVlLCBmYWxzZSk7CisgICAgfQorICAgIG5vSW5saW5lKHN0
b3JlQmlnRW5kaWFuKTsKKworICAgIGZ1bmN0aW9uIHN0b3JlKGR2LCBpbmRleCwgdmFsdWUsIGxp
dHRsZUVuZGlhbikgeworICAgICAgICBkdi5zZXRJbnQxNihpbmRleCwgdmFsdWUsIGxpdHRsZUVu
ZGlhbik7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3JlKTsKKworICAgIGxldCBidWZmZXIgPSBu
ZXcgQXJyYXlCdWZmZXIoMik7CisgICAgbGV0IGFyciA9IG5ldyBVaW50MTZBcnJheShidWZmZXIp
OworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhidWZmZXIpOworCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCAw
eGZhYmEpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZhYmEpOworCisgICAgICAgIHN0
b3JlKGR2LCAwLCAweGFiY2QsIHRydWUpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGFi
Y2QpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAweGJhZGJlZWYsIHRydWUpOworICAgICAgICBh
c3NlcnQoYXJyWzBdID09PSAweGJlZWYpOworCisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2
LCAwLCAweGJiNGRiMzNmLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhiMzNm
KTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgMHhmYWRhKTsKKyAgICAgICAgYXNz
ZXJ0KGFyclswXSA9PT0gMHhkYWZhKTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwg
MHgxMmFiKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhhYjEyKTsKKworICAgICAgICBz
dG9yZShkdiwgMCwgMHgxMjM0LCBmYWxzZSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4
MzQxMik7CisKKyAgICAgICAgc3RvcmUoZHYsIDAsIDB4MDEwMiwgZmFsc2UpOworICAgICAgICBh
c3NlcnQoYXJyWzBdID09PSAweDAyMDEpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAtMSwgZmFs
c2UpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZmZmYpOworCisgICAgICAgIHN0b3Jl
KGR2LCAwLCAtMiwgZmFsc2UpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZlZmYpOwor
CisgICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAtMSk7CisgICAgICAgIGFzc2VydChhcnJb
MF0gPT09IDB4ZmZmZik7CisKKyAgICAgICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIC0yKTsKKyAg
ICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhmZWZmKTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlh
bihkdiwgMCwgLTIxNDc0ODM2NDgpOyAKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHgwMDAw
KTsKKworICAgICAgICBzdG9yZUxpdHRsZUVuZGlhbihkdiwgMCwgLTIxNDc0ODM2NDgpOyAKKyAg
ICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHgwMDAwKTsKKworICAgICAgICBzdG9yZUxpdHRsZUVu
ZGlhbihkdiwgMCwgLTIxNDc0Nzg5ODgpOyAKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHgx
MjM0KTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgLTIxNDc0Nzg5ODgpOyAKKyAg
ICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHgzNDEyKTsKKyAgICB9Cit9CisvL3Rlc3QoKTsKKwor
ZnVuY3Rpb24gdGVzdDIoKSB7CisgICAgZnVuY3Rpb24gc3RvcmVMaXR0bGVFbmRpYW4oZHYsIGlu
ZGV4LCB2YWx1ZSkgeworICAgICAgICBkdi5zZXRVaW50MTYoaW5kZXgsIHZhbHVlLCB0cnVlKTsK
KyAgICB9CisgICAgbm9JbmxpbmUoc3RvcmVMaXR0bGVFbmRpYW4pOworCisgICAgZnVuY3Rpb24g
c3RvcmVCaWdFbmRpYW4oZHYsIGluZGV4LCB2YWx1ZSkgeworICAgICAgICBkdi5zZXRVaW50MTYo
aW5kZXgsIHZhbHVlLCBmYWxzZSk7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3JlQmlnRW5kaWFu
KTsKKworICAgIGZ1bmN0aW9uIHN0b3JlKGR2LCBpbmRleCwgdmFsdWUsIGxpdHRsZUVuZGlhbikg
eworICAgICAgICBkdi5zZXRVaW50MTYoaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRpYW4pOworICAg
IH0KKyAgICBub0lubGluZShzdG9yZSk7CisKKyAgICBsZXQgYnVmZmVyID0gbmV3IEFycmF5QnVm
ZmVyKDIpOworICAgIGxldCBhcnIgPSBuZXcgVWludDE2QXJyYXkoYnVmZmVyKTsKKyAgICBsZXQg
ZHYgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDA7ICsraSkgeworICAgICAgICBzdG9yZUxpdHRsZUVuZGlhbihkdiwgMCwgMHhmYWJhKTsKKyAg
ICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhmYWJhKTsKKworICAgICAgICBzdG9yZShkdiwgMCwg
MHhhYmNkLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhhYmNkKTsKKworICAg
ICAgICBzdG9yZShkdiwgMCwgMHhiYWRiZWVmLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0KGFyclsw
XSA9PT0gMHhiZWVmKTsKKworICAgICAgICBzdG9yZUxpdHRsZUVuZGlhbihkdiwgMCwgMHhiYjRk
YjMzZiwgdHJ1ZSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4YjMzZik7CisKKyAgICAg
ICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIDB4ZmFkYSk7CisgICAgICAgIGFzc2VydChhcnJbMF0g
PT09IDB4ZGFmYSk7CisKKyAgICAgICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIDB4MTJhYik7Cisg
ICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4YWIxMik7CisKKyAgICAgICAgc3RvcmUoZHYsIDAs
IDB4MTIzNCwgZmFsc2UpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweDM0MTIpOworCisg
ICAgICAgIHN0b3JlKGR2LCAwLCAweDAxMDIsIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KGFyclsw
XSA9PT0gMHgwMjAxKTsKKworICAgICAgICBzdG9yZShkdiwgMCwgLTEsIGZhbHNlKTsKKyAgICAg
ICAgYXNzZXJ0KGFyclswXSA9PT0gMHhmZmZmKTsKKworICAgICAgICBzdG9yZShkdiwgMCwgLTIs
IGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhmZWZmKTsKKworICAgICAgICBz
dG9yZUJpZ0VuZGlhbihkdiwgMCwgLTEpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZm
ZmYpOworCisgICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAtMik7CisgICAgICAgIGFzc2Vy
dChhcnJbMF0gPT09IDB4ZmVmZik7CisKKyAgICAgICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIC0y
MTQ3NDgzNjQ4KTsgCisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4MDAwMCk7CisKKyAgICAg
ICAgc3RvcmVMaXR0bGVFbmRpYW4oZHYsIDAsIC0yMTQ3NDgzNjQ4KTsgCisgICAgICAgIGFzc2Vy
dChhcnJbMF0gPT09IDB4MDAwMCk7CisKKyAgICAgICAgc3RvcmVMaXR0bGVFbmRpYW4oZHYsIDAs
IC0yMTQ3NDc4OTg4KTsgCisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4MTIzNCk7CisKKyAg
ICAgICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIC0yMTQ3NDc4OTg4KTsgCisgICAgICAgIGFzc2Vy
dChhcnJbMF0gPT09IDB4MzQxMik7CisgICAgfQorfQorLy90ZXN0MigpOworCitmdW5jdGlvbiB0
ZXN0MygpIHsKKyAgICBmdW5jdGlvbiBzdG9yZUxpdHRsZUVuZGlhbihkdiwgaW5kZXgsIHZhbHVl
KSB7CisgICAgICAgIGR2LnNldFVpbnQzMihpbmRleCwgdmFsdWUsIHRydWUpOworICAgIH0KKyAg
ICBub0lubGluZShzdG9yZUxpdHRsZUVuZGlhbik7CisKKyAgICBmdW5jdGlvbiBzdG9yZUJpZ0Vu
ZGlhbihkdiwgaW5kZXgsIHZhbHVlKSB7CisgICAgICAgIGR2LnNldFVpbnQzMihpbmRleCwgdmFs
dWUsIGZhbHNlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoc3RvcmVCaWdFbmRpYW4pOworCisgICAg
ZnVuY3Rpb24gc3RvcmUoZHYsIGluZGV4LCB2YWx1ZSwgbGl0dGxlRW5kaWFuKSB7CisgICAgICAg
IGR2LnNldFVpbnQzMihpbmRleCwgdmFsdWUsIGxpdHRsZUVuZGlhbik7CisgICAgfQorICAgIG5v
SW5saW5lKHN0b3JlKTsKKworICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7Cisg
ICAgbGV0IGFyciA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpOworICAgIGxldCBhcnIyID0gbmV3
IEludDMyQXJyYXkoYnVmZmVyKTsKKyAgICBsZXQgZHYgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsK
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBzdG9yZUxp
dHRsZUVuZGlhbihkdiwgMCwgMHhmZmZmZmZmZik7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09
IDB4ZmZmZmZmZmYpOworICAgICAgICBhc3NlcnQoYXJyMlswXSA9PT0gLTEpOworCisgICAgICAg
IHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCAweGZmYWFiYmNjKTsKKyAgICAgICAgYXNzZXJ0KGFy
clswXSA9PT0gMHhmZmFhYmJjYyk7CisKKyAgICAgICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIDB4
MTIzNDU2NzgpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweDc4NTYzNDEyKTsKKworICAg
ICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgMHhmZmFhYmJjYyk7CisgICAgICAgIGFzc2VydChh
cnJbMF0gPT09IDB4Y2NiYmFhZmYpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAweGZhZWFkYWNh
LCBmYWxzZSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4Y2FkYWVhZmEpOworCisgICAg
ICAgIHN0b3JlKGR2LCAwLCAweGNhZGFlYWZhLCBmYWxzZSk7CisgICAgICAgIGFzc2VydChhcnIy
WzBdID09PSAtODUyNzE4NjIpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAweDEyMzQ1Njc4LCBm
YWxzZSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4Nzg1NjM0MTIpOworCisgICAgICAg
IHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAweGJlZWZmZWViKTsKKyAgICAgICAgYXNzZXJ0KGFyclsw
XSA9PT0gLTMzNTYxNDAxOCk7CisgICAgfQorfQorLy90ZXN0MygpOworCitmdW5jdGlvbiB0ZXN0
NCgpIHsKKyAgICBmdW5jdGlvbiBzdG9yZUxpdHRsZUVuZGlhbihkdiwgaW5kZXgsIHZhbHVlKSB7
CisgICAgICAgIGR2LnNldEZsb2F0MzIoaW5kZXgsIHZhbHVlLCB0cnVlKTsKKyAgICB9CisgICAg
bm9JbmxpbmUoc3RvcmVMaXR0bGVFbmRpYW4pOworCisgICAgZnVuY3Rpb24gc3RvcmVCaWdFbmRp
YW4oZHYsIGluZGV4LCB2YWx1ZSkgeworICAgICAgICBkdi5zZXRGbG9hdDMyKGluZGV4LCB2YWx1
ZSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShzdG9yZUJpZ0VuZGlhbik7CisKKyAgICBm
dW5jdGlvbiBzdG9yZShkdiwgaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRpYW4pIHsKKyAgICAgICAg
ZHYuc2V0RmxvYXQzMihpbmRleCwgdmFsdWUsIGxpdHRsZUVuZGlhbik7CisgICAgfQorICAgIG5v
SW5saW5lKHN0b3JlKTsKKworICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7Cisg
ICAgbGV0IGFyciA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTsKKyAgICBsZXQgYml0cyA9IG5l
dyBVaW50MzJBcnJheShidWZmZXIpOworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhidWZmZXIp
OworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIHN0b3Jl
TGl0dGxlRW5kaWFuKGR2LCAwLCAxLjUpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAxLjUp
OworCisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCAxMjkxMi4xMjQxMjMyMTUxMjIp
OworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAxMjkxMi4xMjQwMjM0Mzc1KTsKKyAgICAgICAg
YXNzZXJ0KGJpdHNbMF0gPT09IDB4NDY0OWMwN2YpOworCisgICAgICAgIHN0b3JlTGl0dGxlRW5k
aWFuKGR2LCAwLCBOYU4pOworICAgICAgICBhc3NlcnQoaXNOYU4oYXJyWzBdKSk7CisgICAgICAg
IGFzc2VydChiaXRzWzBdID09PSAweDdGQzAwMDAwKTsKKworICAgICAgICBzdG9yZUxpdHRsZUVu
ZGlhbihkdiwgMCwgMi4zODc5MzkzZS0zOCk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDIu
Mzg3OTM5MjYwNTkwNjYzZS0zOCk7CisgICAgICAgIGFzc2VydChiaXRzWzBdID09PSAweDAxMDIw
MzA0KTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgMi4zODc5MzkzZS0zOCk7Cisg
ICAgICAgIGFzc2VydChhcnJbMF0gPT09IDEuNTM5OTg5NjE0NDM5NTU4ZS0zNik7CisgICAgICAg
IGFzc2VydChiaXRzWzBdID09PSAweDA0MDMwMjAxKTsKKyAgICB9Cit9Cit0ZXN0NCgpOworCitm
dW5jdGlvbiB0ZXN0NSgpIHsKKyAgICBmdW5jdGlvbiBzdG9yZUxpdHRsZUVuZGlhbihkdiwgaW5k
ZXgsIHZhbHVlKSB7CisgICAgICAgIGR2LnNldEZsb2F0NjQoaW5kZXgsIHZhbHVlLCB0cnVlKTsK
KyAgICB9CisgICAgbm9JbmxpbmUoc3RvcmVMaXR0bGVFbmRpYW4pOworCisgICAgZnVuY3Rpb24g
c3RvcmVCaWdFbmRpYW4oZHYsIGluZGV4LCB2YWx1ZSkgeworICAgICAgICBkdi5zZXRGbG9hdDY0
KGluZGV4LCB2YWx1ZSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShzdG9yZUJpZ0VuZGlh
bik7CisKKyAgICBmdW5jdGlvbiBzdG9yZShkdiwgaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRpYW4p
IHsKKyAgICAgICAgZHYuc2V0RmxvYXQ2NChpbmRleCwgdmFsdWUsIGxpdHRsZUVuZGlhbik7Cisg
ICAgfQorICAgIG5vSW5saW5lKHN0b3JlKTsKKworICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlC
dWZmZXIoOCk7CisgICAgbGV0IGFyciA9IG5ldyBGbG9hdDY0QXJyYXkoYnVmZmVyKTsKKyAgICBs
ZXQgZHYgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDA7ICsraSkgeworICAgICAgICBzdG9yZUxpdHRsZUVuZGlhbihkdiwgMCwgTmFOKTsKKyAg
ICAgICAgYXNzZXJ0KGlzTmFOKGFyclswXSkpOworCisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFu
KGR2LCAwLCAtMi41MDc1MTg3MDg0MTM1MTYyZSsyODQpOworICAgICAgICBhc3NlcnQoYXJyWzBd
ID09PSAtMi41MDc1MTg3MDg0MTM1MTYyZSsyODQpOworICAgICAgICBhc3NlcnQocmVhZEhleChk
diwgOCkgPT09ICIweGZhZmFmYWZhZmFmYWZhZmEiKTsKKyAgICB9Cit9Cit0ZXN0NSgpOwpJbmRl
eDogSlNUZXN0cy9zdHJlc3MvZGF0YXZpZXctaml0LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMv
c3RyZXNzL2RhdGF2aWV3LWppdC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9k
YXRhdmlldy1qaXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODMgQEAKK2Z1bmN0aW9u
IGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCEi
KTsKK30KKworLy8gT09QUzogYWRkIHVuc2lnbmVkIHRlc3RzIQorCitmdW5jdGlvbiB0ZXN0MSgp
IHsKKyAgICBmdW5jdGlvbiBiaWdFbmRpYW4obywgaSkgeworICAgICAgICByZXR1cm4gby5nZXRJ
bnQzMihpLCBmYWxzZSk7CisgICAgfQorICAgIG5vSW5saW5lKGJpZ0VuZGlhbik7CisgICAgZnVu
Y3Rpb24gbGl0dGxlRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0SW50MzIoaSwg
dHJ1ZSk7CisgICAgfQorICAgIG5vSW5saW5lKGxpdHRsZUVuZGlhbik7CisgICAgZnVuY3Rpb24g
YmlFbmRpYW4obywgaSwgYikgeworICAgICAgICByZXR1cm4gby5nZXRJbnQzMihpLCBiKTsKKyAg
ICB9CisgICAgbm9JbmxpbmUoYmlFbmRpYW4pOworCisgICAgbGV0IGFiID0gbmV3IEFycmF5QnVm
ZmVyKDQpOworICAgIGxldCB0YSA9IG5ldyBJbnQzMkFycmF5KGFiKTsKKyAgICB0YVswXSA9IDB4
MDEwMjAzMDQ7CisgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGFiKTsKKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoYmlnRW5kaWFuKGR2LCAw
KSA9PT0gMHgwNDAzMDIwMSk7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYsIDApID09
PSAweDAxMDIwMzA0KTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KGJp
RW5kaWFuKGR2LCAwLCB0cnVlKSA9PT0gMHgwMTAyMDMwNCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgZmFsc2UpID09PSAweDA0MDMwMjAxKTsKKyAg
ICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNz
ZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT09IDB4MDQwMzAyMDEpOworICAgICAgICBhc3NlcnQobGl0
dGxlRW5kaWFuKGR2LCAwKSA9PT0gMHgwMTAyMDMwNCk7CisgICAgICAgIGlmIChpICUgMikKKyAg
ICAgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IDB4MDEwMjAzMDQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9
PT0gMHgwNDAzMDIwMSk7CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIHdlIGdldCB0aGUgcmln
aHQgc2lnbi4KKyAgICB0YVswXSA9IC0zMjM2MTM4NjsgLy8gMHhmZTEyMzQ1NgorICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoYmlnRW5kaWFuKGR2
LCAwKSA9PT0gMHg1NjM0MTJmZSk7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYsIDAp
ID09PSAtMzIzNjEzODYpOworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQo
YmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAtMzIzNjEzODYpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHg1NjM0MTJmZSk7Cisg
ICAgfQorCisgICAgLy8gLTIxNDYyOTA2MDIgPT0gKGludCkweDgwMTIzNDU2CisgICAgdGFbMF0g
PSAweDU2MzQxMjgwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAg
ICAgICBhc3NlcnQoYmlnRW5kaWFuKGR2LCAwKSA9PT0gLTIxNDYyOTA2MDIpOworICAgICAgICBh
c3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9PT0gMHg1NjM0MTI4MCk7CisgICAgICAgIGlmIChp
ICUgMikKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IDB4NTYz
NDEyODApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAs
IGZhbHNlKSA9PT0gLTIxNDYyOTA2MDIpOworICAgIH0KK30KKy8vdGVzdDEoKTsKKworZnVuY3Rp
b24gdGVzdDIoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0
dXJuIG8uZ2V0SW50MTYoaSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShiaWdFbmRpYW4p
OworICAgIGZ1bmN0aW9uIGxpdHRsZUVuZGlhbihvLCBpKSB7CisgICAgICAgIHJldHVybiBvLmdl
dEludDE2KGksIHRydWUpOworICAgIH0KKyAgICBub0lubGluZShsaXR0bGVFbmRpYW4pOworICAg
IGZ1bmN0aW9uIGJpRW5kaWFuKG8sIGksIGIpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0SW50MTYo
aSwgYik7CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAgIGxldCBhYiA9IG5l
dyBBcnJheUJ1ZmZlcigyKTsKKyAgICBsZXQgdGEgPSBuZXcgSW50MTZBcnJheShhYik7CisgICAg
dGFbMF0gPSAweDAxMDI7CisgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGFiKTsKKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoYmlnRW5kaWFu
KGR2LCAwKSA9PT0gMHgwMjAxKTsKKyAgICAgICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkg
PT09IDB4MDEwMik7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFzc2VydChiaUVu
ZGlhbihkdiwgMCwgdHJ1ZSkgPT09IDB4MDEwMik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGFzc2VydChiaUVuZGlhbihkdiwgMCwgZmFsc2UpID09PSAweDAyMDEpOworICAgIH0KKworICAg
IC8vIENoZWNrIHNpZ24uCisgICAgdGFbMF0gPSAtNTEyOyAvLyAweGZlMDAKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwg
MCkgPT09IDB4MDBmZSk7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYsIDApID09PSAt
NTEyKTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2
LCAwLCB0cnVlKSA9PT0gLTUxMik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChi
aUVuZGlhbihkdiwgMCwgZmFsc2UpID09PSAweDAwZmUpOworICAgIH0KKworICAgIC8vIENoZWNr
IHNpZ24gZXh0ZW5zaW9uLgorICAgIHRhWzBdID0gMHgwMGZlOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoYmlnRW5kaWFuKGR2LCAwKSA9PT0g
LTUxMik7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYsIDApID09PSAweDAwZmUpOwor
ICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRy
dWUpID09PSAweDAwZmUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRp
YW4oZHYsIDAsIGZhbHNlKSA9PT0gLTUxMik7CisgICAgfQorfQorLy90ZXN0MigpOworCitmdW5j
dGlvbiB0ZXN0MygpIHsKKyAgICBmdW5jdGlvbiBiaWdFbmRpYW4obywgaSkgeworICAgICAgICBy
ZXR1cm4gby5nZXRGbG9hdDMyKGksIGZhbHNlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlnRW5k
aWFuKTsKKyAgICBmdW5jdGlvbiBsaXR0bGVFbmRpYW4obywgaSkgeworICAgICAgICByZXR1cm4g
by5nZXRGbG9hdDMyKGksIHRydWUpOworICAgIH0KKyAgICBub0lubGluZShsaXR0bGVFbmRpYW4p
OworICAgIGZ1bmN0aW9uIGJpRW5kaWFuKG8sIGksIGIpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0
RmxvYXQzMihpLCBiKTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlFbmRpYW4pOworCisgICAgbGV0
IGFiID0gbmV3IEFycmF5QnVmZmVyKDQpOworICAgIGxldCB0YSA9IG5ldyBGbG9hdDMyQXJyYXko
YWIpOworICAgIGNvbnN0IG5vcm1hbCA9IDEyOTEyLjQwMzsgLy8gMHg0NjQ5YzE5ZAorICAgIGNv
bnN0IG5vcm1hbEFzRG91YmxlID0gMTI5MTIuNDAzMzIwMzEyNTAwOworICAgIC8vOWRjMTQ5NDYg
CisgICAgY29uc3QgZmxpcHBlZCA9IC01LjExNjI0Mzc1ODk5MTg4ODRlLTIxOworICAgIHRhWzBd
ID0gbm9ybWFsOworCisgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGFiKTsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwg
MCkgPT09IGZsaXBwZWQpOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9PT0g
MTI5MTIuNDAzMzIwMzEyNTAwKTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNz
ZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVlKSA9PT0gbm9ybWFsQXNEb3VibGUpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gZmxpcHBl
ZCk7CisgICAgfQorfQorLy90ZXN0MygpOworCitmdW5jdGlvbiB0ZXN0NCgpIHsKKyAgICBmdW5j
dGlvbiBiaWdFbmRpYW4obywgaSkgeworICAgICAgICByZXR1cm4gby5nZXRVaW50MzIoaSwgZmFs
c2UpOworICAgIH0KKyAgICBub0lubGluZShiaWdFbmRpYW4pOworICAgIGZ1bmN0aW9uIGxpdHRs
ZUVuZGlhbihvLCBpKSB7CisgICAgICAgIHJldHVybiBvLmdldFVpbnQzMihpLCB0cnVlKTsKKyAg
ICB9CisgICAgbm9JbmxpbmUobGl0dGxlRW5kaWFuKTsKKyAgICBmdW5jdGlvbiBiaUVuZGlhbihv
LCBpLCBiKSB7CisgICAgICAgIHJldHVybiBvLmdldFVpbnQzMihpLCBiKTsKKyAgICB9CisgICAg
bm9JbmxpbmUoYmlFbmRpYW4pOworCisgICAgbGV0IGFiID0gbmV3IEFycmF5QnVmZmVyKDQpOwor
ICAgIGxldCB0YSA9IG5ldyBVaW50MzJBcnJheShhYik7CisgICAgdGFbMF0gPSAweGEwYjBkMGYw
OworCisgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGFiKTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT09IDB4
ZjBkMGIwYTApOworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9PT0gMHhhMGIw
ZDBmMCk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlhbihk
diwgMCwgdHJ1ZSkgPT09IDB4YTBiMGQwZjApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBh
c3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gMHhmMGQwYjBhMCk7CisgICAgfQorfQor
dGVzdDQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNDA4LDYgKzQwOCwyMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnBvcGNudF9ycihzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCBieXRlU3dhcDMy
KFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYnN3YXBsX3IoZHN0
KTsKKyAgICB9CisKKyAgICB2b2lkIGJ5dGVTd2FwMTYoUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5yb2x3X2k4cig4LCBkc3QpOworICAgIH0KKworI2lmIENQVShY
ODZfNjQpCisgICAgdm9pZCBieXRlU3dhcDY0KFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYnN3YXBxX3IoZHN0KTsKKyAgICB9CisjZW5kaWYKKwogICAgIC8vIE9u
bHkgdXNlZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KICAgICB2b2lkIGlsbGVnYWxJbnN0cnVjdGlv
bigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNiArMzM3LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgT1AyX1hBRERiICAgICAgICAgICA9IDB4QzAsCiAgICAgICAg
IE9QMl9YQUREICAgICAgICAgICAgPSAweEMxLAogICAgICAgICBPUDJfUEVYVFJXX0dkVWRJYiAg
ID0gMHhDNSwKKyAgICAgICAgT1AyX0JTV0FQICAgICAgICAgICA9IDB4QzgsCiAgICAgICAgIE9Q
Ml9QU0xMUV9VZHFJYiAgICAgPSAweDczLAogICAgICAgICBPUDJfUFNSTFFfVWRxSWIgICAgID0g
MHg3MywKICAgICAgICAgT1AyX1BPUl9WZHFXZHEgICAgICA9IDBYRUIsCkBAIC0xNjM4LDYgKzE2
MzksMTggQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCisgICAgdm9pZCBic3dhcGxfcihSZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQlNX
QVAsIGRzdCk7CisgICAgfQorCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGJzd2FwcV9yKFJl
Z2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1Ay
X0JTV0FQLCBkc3QpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCB0emNudF9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX1NTRV9GMyk7CkBAIC0xNzAxLDYgKzE3MTQsMTggQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAg
IHRlbXBsYXRlPEdyb3VwT3Bjb2RlSUQgb3A+CisgICAgdm9pZCBzaGlmdEluc3RydWN0aW9uMTYo
aW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlmIChpbW0gPT0gMSkKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDJfRXYxLCBvcCwgZHN0KTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2SWIs
IG9wLCBkc3QpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAg
ICAgICB9CisgICAgfQogcHVibGljOgogCiAgICAgdm9pZCBzYXJsX2k4cihpbnQgaW1tLCBSZWdp
c3RlcklEIGRzdCkKQEAgLTE3NTMsNiArMTc3OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDJfRXZDTCwgR1JPVVAyX09QX1JPTCwgZHN0KTsKICAg
ICB9CiAKKyAgICB2b2lkIHJvbHdfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgc2hpZnRJbnN0cnVjdGlvbjE2PEdST1VQMl9PUF9ST0w+KGltbSwgZHN0KTsKKyAg
ICB9CisKICNpZiBDUFUoWDg2XzY0KQogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxHcm91cE9wY29k
ZUlEIG9wPgpAQCAtNDMzMyw2ICs0MzYzLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0
ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB0
d29CeXRlT3AoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZykKKyAgICAgICAgeworICAg
ICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsK
KyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQoMCwgMCwgcmVnKTsKKyAgICAgICAg
ICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAg
ICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUgKyAocmVnICYgNykpOworICAgICAgICB9
CisKICAgICAgICAgdm9pZCB0d29CeXRlT3AoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJl
ZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewogICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rp
b25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKQEAgLTQ1MDYsNiArNDU0NCwxNCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNQWRkcihyZWcsIGFkZHJlc3Mp
OwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB0d29CeXRlT3A2NChUd29CeXRlT3Bjb2RlSUQg
b3Bjb2RlLCBpbnQgcmVnKQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlv
bkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRS
ZXhXKDAsIDAsIHJlZyk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8y
QllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2Rl
ICsgKHJlZyAmIDcpKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wNjQoVHdv
Qnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewog
ICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVy
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAko
cmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFG
b3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IGVudW0gRGF0YUZvcm1hdCB7CiAgICAgRGF0YUZvcm1hdE5vbmUgPSAwLAogICAgIERhdGFGb3Jt
YXRJbnQzMiA9IDEsCi0gICAgRGF0YUZvcm1hdEludDUyID0gMiwgLy8gSW50NTIncyBhcmUgbGVm
dC1zaGlmdGVkIGJ5IDE2IGJ5IGRlZmF1bHQuCisgICAgRGF0YUZvcm1hdEludDUyID0gMiwgLy8g
SW50NTIncyBhcmUgbGVmdC1zaGlmdGVkIGJ5IDEyIGJ5IGRlZmF1bHQuCiAgICAgRGF0YUZvcm1h
dFN0cmljdEludDUyID0gMywgLy8gIlN0cmljdCIgSW50NTIgbWVhbnMgaXQncyBub3Qgc2hpZnRl
ZC4KICAgICBEYXRhRm9ybWF0RG91YmxlID0gNCwKICAgICBEYXRhRm9ybWF0Qm9vbGVhbiA9IDUs
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsMTEg
QEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cgogICAgICAgICAgICAg
ICAgIHN0ck91dC5wcmludCgiRGVyaXZlZEFycmF5Iik7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHZhbHVlICYgU3Bl
Y0RhdGFWaWV3T2JqZWN0KQorICAgICAgICAgICAgICAgIHN0ck91dC5wcmludCgiRGF0YVZpZXci
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKCh2YWx1ZSAmIFNwZWNTdHJpbmcpID09IFNwZWNTdHJpbmcp
CkBAIC00MzIsNiArNDM3LDkgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJ
bmZvKAogCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBQcm94eU9iamVjdDo6aW5mbygpKQogICAgICAg
ICByZXR1cm4gU3BlY1Byb3h5T2JqZWN0OworCisgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0RhdGFW
aWV3OjppbmZvKCkpCisgICAgICAgIHJldHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7CiAgICAgCiAg
ICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAg
ICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0JvdW5kRnVuY3Rpb246OmluZm8oKSkKQEAgLTU1OSw2
ICs1NjcsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUCiAgICAg
ICAgIHJldHVybiBTcGVjV2Vha01hcE9iamVjdDsKICAgICBjYXNlIEpTV2Vha1NldFR5cGU6CiAg
ICAgICAgIHJldHVybiBTcGVjV2Vha1NldE9iamVjdDsKKyAgICBjYXNlIERhdGFWaWV3VHlwZToK
KyAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKICAgICBkZWZhdWx0OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC03NTAsNiArNzYwLDggQEAgU3BlY3Vs
YXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RyaW5nKGNvbgogICAgICAgICByZXR1cm4gU3BlY1By
b3h5T2JqZWN0OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEZXJpdmVkQXJy
YXkiLCBzdHJsZW4oIlNwZWNEZXJpdmVkQXJyYXkiKSkpCiAgICAgICAgIHJldHVybiBTcGVjRGVy
aXZlZEFycmF5OworICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNEYXRhVmlld09i
amVjdCIsIHN0cmxlbigiU3BlY0RhdGFWaWV3T2JqZWN0IikpKQorICAgICAgICByZXR1cm4gU3Bl
Y0RhdGFWaWV3T2JqZWN0OwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNPYmpl
Y3RPdGhlciIsIHN0cmxlbigiU3BlY09iamVjdE90aGVyIikpKQogICAgICAgICByZXR1cm4gU3Bl
Y09iamVjdE90aGVyOwogICAgIGlmICghc3RybmNtcChzcGVjdWxhdGlvbiwgIlNwZWNPYmplY3Qi
LCBzdHJsZW4oIlNwZWNPYmplY3QiKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDcgKzY1LDYgQEAgc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNXZWFrU2V0
Twogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNQcm94eU9iamVjdCAgICAgICAgICAg
ICAgICAgICAgICAgPSAxdWxsIDw8IDIxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBQcm94eSBvYmpl
Y3Qgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNEZXJpdmVkQXJyYXkgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIyOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBEZXJpdmVkQXJyYXkgb2JqZWN0Lgogc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNPYmplY3RPdGhlciAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8
IDIzOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gb2JqZWN0IGJ1dCBub3QgSlNGaW5hbE9iamVjdCwg
SlNBcnJheSwgb3IgSlNGdW5jdGlvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
T2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3Bl
Y0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFy
Z3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1Jl
Z0V4cE9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBP
YmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVk
QXJyYXkgfCBTcGVjT2JqZWN0T3RoZXI7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3Ig
YW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY1N0cmluZ0lkZW50ICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjQ7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBhbiBpZGVudGlmaWVyLgogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxdWxsIDw8IDI1OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0
J3Mgbm90IGFuIGlkZW50aWZpZXIuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0
cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmdJZGVudCB8IFNwZWNT
dHJpbmdWYXI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLgpAQCAtOTMsNyArOTIsOSBA
QCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgCiBzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNw
ZWNCb29sZWFuIHwgU3BlY090aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVh
biwgTnVsbCwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNF
bXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM3OyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM4OyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzk7
IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmcg
fCBTcGVjU3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVjQmlnSW50
OyAvLyBJdCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9i
amVjdCB8IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNw
ZWNEaXJlY3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVj
dCB8IFNwZWNSZWdFeHBPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNw
ZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBT
cGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAv
LyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0
aW9uLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBT
cGVjQ2VsbE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgog
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJ
dCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBT
cGVjRG91YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRl
Y29kZVRvcCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsg
Ly8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBh
bmQgU3BlY0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3Vu
ZCBpbiBhIGJ5dGVjb2RlIGxvY2FsLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24g
MjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcwLDkgKzM3NzAsMzAgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBmaWx0ZXIobm9kZS0+
Y2hpbGQxKCksIFNwZWNDZWxsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKwor
ICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6IHsKKyAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBu
b2RlLT5kYXRhVmlld0RhdGEoKTsKKyAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPCA0KQorICAg
ICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChkYXRhLmJ5dGVTaXplID09IDQpOworICAg
ICAgICAgICAgaWYgKCEobm9kZS0+cHJlZGljdGlvbigpICYgflNwZWNJbnQzMk9ubHkpKQorICAg
ICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0J5dGVjb2RlRG91YmxlKTsgLy8gT09QUzogZG8gaW50NTIgaGVyZS4KKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6
IHsKKyAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNGdWxsRG91YmxlKTsK
ICAgICAgICAgYnJlYWs7CisgICAgfQogCisgICAgY2FzZSBEYXRhVmlld1NldDogeworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAg
IC8vIEl0IG1heSBiZSB0aGF0IGR1cmluZyBhIHByZXZpb3VzIHJ1biBvZiBBSSB3ZSBwcm92ZWQg
dGhhdCBzb21ldGhpbmcgd2FzIHVucmVhY2hhYmxlLCBidXQKICAgICAgICAgLy8gZHVyaW5nIHRo
aXMgcnVuIG9mIEFJIHdlIGZvcmdldCB0aGF0IGl0J3MgdW5yZWFjaGFibGUuIEFJJ3MgcHJvb2Zz
IGRvbid0IGhhdmUgdG8gZ2V0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
NzksNiArMzA3OSwxNzYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50
ODoKKyAgICBjYXNlIERhdGFWaWV3R2V0VWludDg6CisgICAgY2FzZSBEYXRhVmlld0dldEludDE2
OgorICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgY2FzZSBEYXRhVmlld0dldEludDMy
OgorICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MzI6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0
MzI6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0NjQ6IHsKKyNpZiBDUFUoQklHX0VORElBTikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIDwgMikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlu
c2VydENoZWNrcygpOworCisgICAgICAgIHVpbnQ4X3QgYnl0ZVNpemU7CisgICAgICAgIE5vZGVU
eXBlIG9wID0gRGF0YVZpZXdHZXRJbnQ7CisgICAgICAgIGJvb2wgaXNTaWduZWQgPSBmYWxzZTsK
KyAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldElu
dDg6CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VH
SDsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldFVpbnQ4OgorICAgICAgICAgICAgYnl0ZVNpemUg
PSAxOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDE2
OgorICAgICAgICAgICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7
CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgICAgICAgICBieXRlU2l6ZSA9
IDI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERhdGFWaWV3R2V0SW50MzI6
CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsK
KyAgICAgICAgY2FzZSBEYXRhVmlld0dldFVpbnQzMjoKKyAgICAgICAgICAgIGJ5dGVTaXplID0g
NDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDMy
OgorICAgICAgICAgICAgYnl0ZVNpemUgPSA0OworICAgICAgICAgICAgb3AgPSBEYXRhVmlld0dl
dEZsb2F0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9h
dDY0OgorICAgICAgICAgICAgYnl0ZVNpemUgPSA4OworICAgICAgICAgICAgb3AgPSBEYXRhVmll
d0dldEZsb2F0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAg
VHJpU3RhdGUgaXNMaXR0bGVFbmRpYW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICBOb2RlKiBs
aXR0bGVFbmRpYW5DaGlsZCA9IG51bGxwdHI7CisgICAgICAgIGlmIChieXRlU2l6ZSA+IDEpIHsK
KyAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IDMpCisgICAgICAg
ICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgbGl0dGxlRW5kaWFuQ2hpbGQgPSBnZXQodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoMiwgcmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBpZiAo
bGl0dGxlRW5kaWFuQ2hpbGQtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
SlNWYWx1ZSBjb25zdGFudCA9IGxpdHRsZUVuZGlhbkNoaWxkLT5jb25zdGFudCgpLT52YWx1ZSgp
OworICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IGNvbnN0YW50LnB1cmVUb0Jv
b2xlYW4oKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGl0dGxlRW5kaWFuICE9IE1peGVk
VHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IG51
bGxwdHI7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGlzTGl0
dGxlRW5kaWFuID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIERhdGFWaWV3RGF0YSBkYXRhIHsgfTsKKyAgICAgICAgZGF0YS5pc0xpdHRsZUVuZGlh
biA9IGlzTGl0dGxlRW5kaWFuOworICAgICAgICBkYXRhLmlzU2lnbmVkID0gaXNTaWduZWQ7Cisg
ICAgICAgIGRhdGEuYnl0ZVNpemUgPSBieXRlU2l6ZTsKKworICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKHJlc3VsdE9wZXJhbmQpLAorICAgICAgICAgICAgYWRkVG9HcmFwaChvcCwgT3BJbmZv
KGRhdGEuYXNRdWFkV29yZCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpLCBsaXR0bGVFbmRpYW5DaGlsZCkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50ODoKKyAgICBj
YXNlIERhdGFWaWV3U2V0VWludDg6CisgICAgY2FzZSBEYXRhVmlld1NldEludDE2OgorICAgIGNh
c2UgRGF0YVZpZXdTZXRVaW50MTY6CisgICAgY2FzZSBEYXRhVmlld1NldEludDMyOgorICAgIGNh
c2UgRGF0YVZpZXdTZXRVaW50MzI6CisgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0MzI6CisgICAg
Y2FzZSBEYXRhVmlld1NldEZsb2F0NjQ6IHsKKyNpZiBDUFUoQklHX0VORElBTikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyA8IDMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRU
eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpbnNlcnRDaGVja3Mo
KTsKKworICAgICAgICB1aW50OF90IGJ5dGVTaXplOworICAgICAgICBib29sIGlzRmxvYXRpbmdQ
b2ludCA9IGZhbHNlOworICAgICAgICBib29sIGlzU2lnbmVkID0gZmFsc2U7CisgICAgICAgIHN3
aXRjaCAoaW50cmluc2ljKSB7CisgICAgICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQ4OgorICAgICAg
ICAgICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAg
IGNhc2UgRGF0YVZpZXdTZXRVaW50ODoKKyAgICAgICAgICAgIGJ5dGVTaXplID0gMTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0YVZpZXdTZXRJbnQxNjoKKyAgICAgICAg
ICAgIGlzU2lnbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBj
YXNlIERhdGFWaWV3U2V0VWludDE2OgorICAgICAgICAgICAgYnl0ZVNpemUgPSAyOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmlld1NldEludDMyOgorICAgICAgICAg
ICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNh
c2UgRGF0YVZpZXdTZXRVaW50MzI6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDQ7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQzMjoKKyAgICAgICAg
ICAgIGlzRmxvYXRpbmdQb2ludCA9IHRydWU7CisgICAgICAgICAgICBieXRlU2l6ZSA9IDQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0NjQ6CisgICAg
ICAgICAgICBpc0Zsb2F0aW5nUG9pbnQgPSB0cnVlOworICAgICAgICAgICAgYnl0ZVNpemUgPSA4
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgVHJpU3RhdGUg
aXNMaXR0bGVFbmRpYW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICBOb2RlKiBsaXR0bGVFbmRp
YW5DaGlsZCA9IG51bGxwdHI7CisgICAgICAgIGlmIChieXRlU2l6ZSA+IDEpIHsKKyAgICAgICAg
ICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IDQpCisgICAgICAgICAgICAgICAg
aXNMaXR0bGVFbmRpYW4gPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgbGl0dGxlRW5kaWFuQ2hpbGQgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoMywgcmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBpZiAobGl0dGxlRW5k
aWFuQ2hpbGQtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBj
b25zdGFudCA9IGxpdHRsZUVuZGlhbkNoaWxkLT5jb25zdGFudCgpLT52YWx1ZSgpOworICAgICAg
ICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IGNvbnN0YW50LnB1cmVUb0Jvb2xlYW4oKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGl0dGxlRW5kaWFuICE9IE1peGVkVHJpU3RhdGUp
CisgICAgICAgICAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IG51bGxwdHI7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFu
ID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIERh
dGFWaWV3RGF0YSBkYXRhIHsgfTsKKyAgICAgICAgZGF0YS5pc0xpdHRsZUVuZGlhbiA9IGlzTGl0
dGxlRW5kaWFuOworICAgICAgICBkYXRhLmlzU2lnbmVkID0gaXNTaWduZWQ7CisgICAgICAgIGRh
dGEuYnl0ZVNpemUgPSBieXRlU2l6ZTsKKyAgICAgICAgZGF0YS5pc0Zsb2F0aW5nUG9pbnQgPSBp
c0Zsb2F0aW5nUG9pbnQ7CisKKyAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICBhZGRWYXJBcmdD
aGlsZChnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7
CisgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgy
LCByZWdpc3Rlck9mZnNldCkpKTsKKyAgICAgICAgYWRkVmFyQXJnQ2hpbGQobGl0dGxlRW5kaWFu
Q2hpbGQpOworCisgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBEYXRhVmlld1NldCwg
T3BJbmZvKGRhdGEuYXNRdWFkV29yZCksIE9wSW5mbygpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eUludHJpbnNpYzogewogICAgICAgICBp
ZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1OCw3ICsxNzU4LDIxIEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZh
bGlkUmFkaXhDb25zdGFudDoKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT52YWxp
ZFJhZGl4Q29uc3RhbnQoKSkpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCisgICAgY2Fz
ZSBEYXRhVmlld0dldEZsb2F0OgorICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6IHsKKyAgICAgICAg
cmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgcmVhZChUeXBlZEFycmF5UHJvcGVydGllcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFWaWV3U2V0OiB7CisgICAgICAg
IHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIHJlYWQoVHlwZWRBcnJheVByb3BlcnRpZXMpOwor
ICAgICAgICB3cml0ZShUeXBlZEFycmF5UHJvcGVydGllcyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgsNiArMzE4LDkgQEAg
Ym9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0
QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICBjYXNlIERhdGFW
aWV3R2V0RmxvYXQ6CisgICAgY2FzZSBEYXRhVmlld1NldDoKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgY2FzZSBQdXNoV2l0aFNjb3BlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTA0
LDYgKzIxMDQsNTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBEYXRhVmll
d0dldEludDoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OiB7CisgICAgICAgICAgICBm
aXhFZGdlPERhdGFWaWV3T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQzKCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGls
ZDMoKSk7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBEYXRhVmlld0dldEludCkgewor
ICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+ZGF0YVZpZXdEYXRhKCkuYnl0ZVNpemUpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDMyKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAg
ICAgICAgICBpZiAoIShub2RlLT5wcmVkaWN0aW9uKCkgJiB+U3BlY0ludDMyT25seSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDMyKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIERhdGFWaWV3
U2V0OiB7CisgICAgICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFWaWV3RGF0
YSgpOworICAgICAgICAgICAgZml4RWRnZTxEYXRhVmlld09iamVjdFVzZT4obV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDMpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEVkZ2Um
IHZhbHVlVG9TdG9yZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMik7CisgICAgICAgICAg
ICBpZiAoZGF0YS5pc0Zsb2F0aW5nUG9pbnQpCisgICAgICAgICAgICAgICAgZml4RWRnZTxEb3Vi
bGVSZXBVc2U+KHZhbHVlVG9TdG9yZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGRhdGEuYnl0ZVNpemUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDE6Cisg
ICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPih2YWx1ZVRvU3RvcmUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQor
ICAgICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4odmFsdWVUb1N0b3JlKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ1MlJlcFVzZT4odmFsdWVUb1N0b3JlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVzZSBu
by1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBoYW5k
bGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsx
MTcsMTkgQEAgc3RydWN0IE5ld0FycmF5QnVmZmVyRGF0YSB7CiBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihJbmRleGluZ1R5cGUpIDw9IHNpemVvZih1bnNpZ25lZCksICIiKTsKIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKE5ld0FycmF5QnVmZmVyRGF0YSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOwogCitz
dHJ1Y3QgRGF0YVZpZXdEYXRhIHsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAg
ICAgICAgICB1aW50OF90IGJ5dGVTaXplOworICAgICAgICAgICAgYm9vbCBpc1NpZ25lZDsKKyAg
ICAgICAgICAgIGJvb2wgaXNGbG9hdGluZ1BvaW50OyAvLyBVc2VkIGZvciB0aGUgRGF0YVZpZXdT
ZXQgbm9kZS4KKyAgICAgICAgICAgIFRyaVN0YXRlIGlzTGl0dGxlRW5kaWFuOworICAgICAgICB9
OworICAgICAgICB1aW50NjRfdCBhc1F1YWRXb3JkOworICAgIH07Cit9Oworc3RhdGljX2Fzc2Vy
dChzaXplb2YoRGF0YVZpZXdEYXRhKSA9PSBzaXplb2YodWludDY0X3QpLCAiIik7CisKIHN0cnVj
dCBCcmFuY2hUYXJnZXQgewogICAgIEJyYW5jaFRhcmdldCgpCiAgICAgICAgIDogYmxvY2soMCkK
QEAgLTE2NTksNiArMTY3Miw4IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFy
OgogICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OgogICAgICAgICBjYXNl
IFRvVGhpczoKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICAgICAgY2FzZSBEYXRh
Vmlld0dldEZsb2F0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTQzLDYgKzIxNTgsMTIgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dW5zaWduZWQ+KCk7CiAgICAgfQogCisgICAg
RGF0YVZpZXdEYXRhIGRhdGFWaWV3RGF0YSgpCisgICAgeworICAgICAgICBBU1NFUlQob3AoKSA9
PSBEYXRhVmlld0dldEludCB8fCBvcCgpID09IERhdGFWaWV3R2V0RmxvYXQgfHwgb3AoKSA9PSBE
YXRhVmlld1NldCk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RGF0YVZpZXdEYXRhPiht
X29wSW5mby5hczx1aW50NjRfdD4oKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRHZW5lcmF0
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gbV9yZWZDb3VudDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDYg
KzQ4MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oRmls
dGVyR2V0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlcklu
QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRT
dGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICAvKiBEYXRhIHZpZXcgYWNjZXNzICovIFwK
KyAgICBtYWNybyhEYXRhVmlld0dldEludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRK
UykgLyogVGhlIGdldHMgYXJlIG11c3QgZ2VuZXJhdGUgZm9yIG5vdyBiZWNhdXNlIHRoZXkgZG8g
Ym91bmRzIGNoZWNrcyAqLyBcCisgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9hdCwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwKKyAgICBtYWNybyhEYXRhVmlld1NldCwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogCiAK
IC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9y
IGFsbCBOb2RlIHR5cGVzLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIz
NDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjEsNyArNjIxLDE0IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAg
ICAgCisgICAgICAgIAorICAgICAgICBjYXNlIERhdGFWaWV3U2V0OiB7CisgICAgICAgICAgICBE
YXRhVmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFWaWV3RGF0YSgpOworICAgICAgICAgICAgaWYg
KGRhdGEuaXNGbG9hdGluZ1BvaW50KQorICAgICAgICAgICAgICAgIG1fZ3JhcGgudm90ZU5vZGUo
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSwgVm90ZVZhbHVlLCB3ZWlnaHQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAg
ICAgICAvLyBJZ25vcmUgdGhlc2Ugc2luY2UgdGhleSBoYXZlIG5vIGVmZmVjdCBvbiBpbi1ERkcg
ZXhlY3V0aW9uLgogICAgICAgICAgICAgYnJlYWs7CkBAIC03NTAsNyArNzU3LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBjYXNlIEdldER5bmFtaWNW
YXI6CiAgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6Ci0gICAgICAgIGNhc2UgRXh0cmFjdFZh
bHVlRnJvbVdlYWtNYXBHZXQ6IHsKKyAgICAgICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9tV2Vha01h
cEdldDogCisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZp
ZXdHZXRGbG9hdDogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5n
ZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0x
MjIwLDYgKzEyMjksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0
dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgICAgICBjYXNlIENsZWFy
Q2F0Y2hMb2NhbHM6CisgICAgICAgIGNhc2UgRGF0YVZpZXdTZXQ6CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdldHMgaWdub3JlZCBiZWNhdXNlIGl0
IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBTZXRPYmplY3RVc2U6CiAg
ICAgICAgIGNhc2UgV2Vha01hcE9iamVjdFVzZToKICAgICAgICAgY2FzZSBXZWFrU2V0T2JqZWN0
VXNlOgorICAgICAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgogICAgICAgICBjYXNlIE9iamVj
dE9yT3RoZXJVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6CiAgICAgICAgIGNhc2Ug
U3RyaW5nVXNlOgpAQCAtNjAyLDYgKzYwMywxMyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGNhc2Ug
RGF0YVZpZXdHZXRJbnQ6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgorICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIE9PUFM6IGNhbiB3ZSBhbHdheXMgZG8gdGhpcyBvciBqdXN0IHNvbWV0aW1l
cz8KKworICAgIGNhc2UgRGF0YVZpZXdTZXQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
IGNhc2UgU2V0QWRkOgogICAgIGNhc2UgTWFwU2V0OgogICAgICAgICByZXR1cm4gZmFsc2U7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NTMsNiArNDU1MywzODcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21w
aWxlQ2xlYXJDYXRjaExvY2Fscyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIERh
dGFWaWV3R2V0RmxvYXQ6CisgICAgY2FzZSBEYXRhVmlld0dldEludDogeworICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBkYXRhVmlldyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IEdQUlJlZyBkYXRhVmlld0dQUiA9IGRhdGFWaWV3LmdwcigpOworICAgICAgICBzcGVjdWxhdGVE
YXRhVmlld09iamVjdChub2RlLT5jaGlsZDEoKSwgZGF0YVZpZXdHUFIpOworCisgICAgICAgIFNw
ZWN1bGF0ZUludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
IEdQUlJlZyBpbmRleEdQUiA9IGluZGV4LmdwcigpOworCisgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wMSh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHQxID0gdGVtcDEuZ3ByKCk7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKyAgICAgICAgR1BSUmVnIHQyID0gdGVtcDIuZ3ByKCk7
CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVCb29sZWFuT3BlcmFuZD4gaXNMaXR0
bGVFbmRpYW5PcGVyYW5kOworICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCisgICAgICAgICAg
ICBpc0xpdHRsZUVuZGlhbk9wZXJhbmQuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7Cisg
ICAgICAgIEdQUlJlZyBpc0xpdHRsZUVuZGlhbkdQUiA9IGlzTGl0dGxlRW5kaWFuT3BlcmFuZCA/
IGlzTGl0dGxlRW5kaWFuT3BlcmFuZC0+Z3ByKCkgOiBJbnZhbGlkR1BSUmVnOworCisgICAgICAg
IERhdGFWaWV3RGF0YSBkYXRhID0gbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CisKKyAgICAgICAgbV9q
aXQuemVyb0V4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHQyKTsKKyAgICAgICAgaWYgKGRhdGEuYnl0
ZVNpemUgPiAxKQorICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0
ZVNpemUgLSAxKSwgdDIpOworICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwg
dDEpOworICAgICAgICAvLyBPT1BTOiBkb2VzIGxvYWQzMiBhbHJlYWR5IHplcm8gZXh0ZW5kPwor
ICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0MSwgdDEpOworICAgICAgICAvLyBPT1BT
OiBDb21tZW50IG9uIHdoeSB0aGlzIHdvcmtzIGZvciBuZWdhdGl2ZXMsIGV0Yy4KKyAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0
MSkpOworCisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZGF0YVZp
ZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdDIpOworICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCksIG5vZGUsIG1f
aml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHQyKSk7IC8vIE9PUFM6IGFk
ZCB0ZXN0LiBDYW4gd2UgbmV1dGVyIGEgSlNEYXRhVmlldz8KKworICAgICAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgdDEpOworICAgICAgICBhdXRvIGJhc2VJbmRleCA9IEpJ
VENvbXBpbGVyOjpCYXNlSW5kZXgodDIsIHQxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNPbmUpOwor
CisgICAgICAgIC8vIE9PUFM6IGRvIHBvaW50ZXIgY2FnaW5nCisgICAgICAgIGlmIChub2RlLT5v
cCgpID09IERhdGFWaWV3R2V0SW50KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEuYnl0ZVNp
emUpIHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1Np
Z25lZCkKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDhTaWduZWRFeHRlbmRUbzMyKGJh
c2VJbmRleCwgdDIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
bV9qaXQubG9hZDgoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAgICAgaW50MzJSZXN1bHQo
dDIsIG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiB7
CisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuTG9hZCA9IFsmXSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDE2KGJh
c2VJbmRleCwgdDIpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgYXV0byBl
bWl0QmlnRW5kaWFuTG9hZCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQx
NihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAxNih0
Mik7CisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDE2VG8zMih0MiwgdDIpOworICAgICAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxz
ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuTG9hZCgpOworICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRl
KQorICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuTG9hZCgpOworICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRs
ZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBp
c0JpZ0VuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgaXNM
aXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRMaXR0bGVFbmRpYW5Mb2FkKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1f
aml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdFbmRpYW4ubGluaygmbV9qaXQp
OworICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuTG9hZCgpOworICAgICAgICAgICAg
ICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgaW50MzJSZXN1bHQodDIsIG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKGJhc2VJbmRleCwgdDIpOworCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0
bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0
ZVN3YXAzMih0Mik7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlh
biA9PSBNaXhlZFRyaVN0YXRlKSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAg
ICBhdXRvIGlzTGl0dGxlRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZEltbTMyKDEpKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAzMih0Mik7CisgICAgICAgICAgICAgICAgICAgIGlz
TGl0dGxlRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgaW50MzJSZXN1
bHQodDIsIG5vZGUpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBib29sIHJlc3VsdElzSW50MzIgPSAhKG5vZGUtPnByZWRpY3Rpb24oKSAmIH5TcGVjSW50MzJP
bmx5KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdElzSW50MzIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVTb3Vy
Y2UoKSwgbm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCB0Miwg
VHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMlJlc3VsdCh0
Miwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBPT1BTOiBEbyBJIG5lZWQgdGhpcyBnaXZlbiBhYm92ZT8KKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHQyLCB0Mik7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBmcFRlbXAodGhpcyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZSh0MiwgZnBUZW1wLmZwcigpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShmcFRlbXAuZnByKCksIHQy
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodDIsIG5vZGUpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAg
ICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKKworICAgICAgICAgICAgc3dp
dGNoIChkYXRhLmJ5dGVTaXplKSB7CisgICAgICAgICAgICBjYXNlIDQ6IHsKKyAgICAgICAgICAg
ICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZEZsb2F0KGJhc2VJbmRleCwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuY29udmVydEZsb2F0VG9Eb3VibGUocmVzdWx0RlBSLCByZXN1bHRGUFIpOwor
ICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5D
b2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKGJhc2VJbmRleCwg
dDIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5ieXRlU3dhcDMyKHQyKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQubW92ZTMyVG9GbG9hdCh0MiwgcmVzdWx0RlBSKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuY29udmVydEZsb2F0VG9Eb3VibGUocmVzdWx0RlBSLCByZXN1bHRG
UFIpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0
bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVu
ZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFu
Q29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBpc0JpZ0VuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgaXNMaXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdF
bmRpYW4ubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29k
ZSgpOworICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGNhc2UgODogeworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUg
PSBbJl0geworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKGJhc2VJbmRleCwg
cmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgYXV0byBl
bWl0QmlnRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2
NChiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXA2NCh0
Mik7CisgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKHQyLCByZXN1bHRG
UFIpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0
bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVu
ZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFu
Q29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBpc0JpZ0VuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgaXNMaXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdF
bmRpYW4ubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29k
ZSgpOworICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwg
bm9kZSk7CisgICAgICAgIH0KKworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIERh
dGFWaWV3U2V0OiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGRhdGFWaWV3KHRoaXMs
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICBHUFJSZWcgZGF0YVZpZXdH
UFIgPSBkYXRhVmlldy5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QobV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSwgZGF0YVZpZXdHUFIpOworCisgICAgICAgIFNwZWN1
bGF0ZUludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEp
KTsKKyAgICAgICAgR1BSUmVnIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CisKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQ+IGludDUyVmFsdWU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlRG91YmxlT3BlcmFuZD4gZG91YmxlVmFsdWU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlSW50MzJPcGVyYW5kPiBpbnQzMlZhbHVlOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByVGVtcG9yYXJ5OworICAgICAg
ICBHUFJSZWcgdmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBGUFJSZWcgdmFsdWVG
UFIgPSBJbnZhbGlkRlBSUmVnOworICAgICAgICBGUFJSZWcgdGVtcEZQUiA9IEludmFsaWRGUFJS
ZWc7CisKKyAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBub2RlLT5kYXRhVmlld0RhdGEoKTsK
KworICAgICAgICBFZGdlJiB2YWx1ZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIp
OworICAgICAgICBzd2l0Y2ggKHZhbHVlRWRnZS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBJ
bnQzMlVzZToKKyAgICAgICAgICAgIGludDMyVmFsdWUuZW1wbGFjZSh0aGlzLCB2YWx1ZUVkZ2Up
OworICAgICAgICAgICAgdmFsdWVHUFIgPSBpbnQzMlZhbHVlLT5ncHIoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgICAgIGRvdWJsZVZh
bHVlLmVtcGxhY2UodGhpcywgdmFsdWVFZGdlKTsKKyAgICAgICAgICAgIHZhbHVlRlBSID0gZG91
YmxlVmFsdWUtPmZwcigpOworICAgICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPT0gNCkgewor
ICAgICAgICAgICAgICAgIGZwclRlbXBvcmFyeS5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAg
ICAgIHRlbXBGUFIgPSBmcHJUZW1wb3JhcnktPmZwcigpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgICAgICBpbnQ1
MlZhbHVlLmVtcGxhY2UodGhpcywgdmFsdWVFZGdlKTsKKyAgICAgICAgICAgIHZhbHVlR1BSID0g
aW50NTJWYWx1ZS0+Z3ByKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDEodGhpcyk7CisgICAgICAgIEdQUlJlZyB0MSA9IHRl
bXAxLmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisgICAgICAgIEdQ
UlJlZyB0MiA9IHRlbXAyLmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDModGhpcyk7
CisgICAgICAgIEdQUlJlZyB0MyA9IHRlbXAzLmdwcigpOworCisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ+IGlzTGl0dGxlRW5kaWFuT3BlcmFuZDsKKyAgICAg
ICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpCisgICAgICAgICAgICBpc0xpdHRs
ZUVuZGlhbk9wZXJhbmQuZW1wbGFjZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMp
KTsKKyAgICAgICAgR1BSUmVnIGlzTGl0dGxlRW5kaWFuR1BSID0gaXNMaXR0bGVFbmRpYW5PcGVy
YW5kID8gaXNMaXR0bGVFbmRpYW5PcGVyYW5kLT5ncHIoKSA6IEludmFsaWRHUFJSZWc7CisKKyAg
ICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHQyKTsKKyAgICAgICAgaWYg
KGRhdGEuYnl0ZVNpemUgPiAxKQorICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMy
KGRhdGEuYnl0ZVNpemUgLSAxKSwgdDIpOworICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgdDEpOworICAgICAgICAvLyBPT1BTOiBkb2VzIGxvYWQzMiBhbHJlYWR5IHplcm8g
ZXh0ZW5kPworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0MSwgdDEpOworICAgICAg
ICAvLyBPT1BTOiBDb21tZW50IG9uIHdoeSB0aGlzIHdvcmtzIGZvciBuZWdhdGl2ZXMsIGV0Yy4K
KyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9k
ZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1
YWwsIHQyLCB0MSkpOworCisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdDIp
OworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlU291cmNlKCks
IG5vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHQyKSk7IC8v
IE9PUFM6IGFkZCB0ZXN0LiBDYW4gd2UgbmV1dGVyIGEgSlNEYXRhVmlldz8KKworICAgICAgICBt
X2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihpbmRleEdQUiwgdDEpOworICAgICAgICBhdXRvIGJhc2VJ
bmRleCA9IEpJVENvbXBpbGVyOjpCYXNlSW5kZXgodDIsIHQxLCBNYWNyb0Fzc2VtYmxlcjo6VGlt
ZXNPbmUpOworCisgICAgICAgIC8vIE9PUFM6IGRvIHBvaW50ZXIgY2FnaW5nCisgICAgICAgIGlm
IChkYXRhLmlzRmxvYXRpbmdQb2ludCkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFs
dWVGUFIgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA9
PSA0KSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGVtcEZQUiAhPSBJbnZhbGlk
RlBSUmVnKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jb252ZXJ0RG91YmxlVG9GbG9hdCh2YWx1
ZUZQUiwgdGVtcEZQUik7CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5D
b2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVGbG9hdCh0ZW1wRlBS
LCBiYXNlSW5kZXgpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRv
IGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92
ZUZsb2F0VG8zMih0ZW1wRlBSLCB0Myk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmJ5dGVT
d2FwMzIodDMpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHQzLCBiYXNlSW5k
ZXgpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0Qmln
RW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRp
YW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFu
Q29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBpc0JpZ0VuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgaXNMaXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAg
ICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdF
bmRpYW4ubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29k
ZSgpOworICAgICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGRhdGEuYnl0ZVNpemUgPT0gOCk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
dmFsdWVGUFIgIT0gSW52YWxpZEZQUlJlZyk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRM
aXR0bGVFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVE
b3VibGUodmFsdWVGUFIsIGJhc2VJbmRleCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAg
ICAgbV9qaXQubW92ZURvdWJsZVRvNjQodmFsdWVGUFIsIHQzKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuYnl0ZVN3YXAzMih0Myk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3Jl
NjQodDMsIGJhc2VJbmRleCk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAg
IGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAg
ICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0
YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVt
aXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJS
ZWcpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGlzQmlnRW5kaWFuID0gbV9qaXQuYnJhbmNo
VGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZElt
bTMyKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAg
ICAgICAgICBpc0JpZ0VuZGlhbi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAgICAgY2FzZSAxOgor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlRWRnZS51c2VLaW5kKCkgPT0gSW50
MzJVc2UpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlR1BSICE9IEludmFs
aWRHUFJSZWcpOworICAgICAgICAgICAgICAgIG1faml0LnN0b3JlOCh2YWx1ZUdQUiwgYmFzZUlu
ZGV4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjogeworICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlRWRnZS51c2VLaW5kKCkgPT0gSW50MzJV
c2UpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlR1BSICE9IEludmFsaWRH
UFJSZWcpOworCisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29kZSA9IFsm
XSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMTYodmFsdWVHUFIsIGJhc2VJbmRl
eCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRp
YW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZSh2YWx1ZUdQUiwg
dDMpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5ieXRlU3dhcDE2KHQzKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuc3RvcmUxNih0MywgYmFzZUluZGV4KTsKKyAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VU
cmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkK
KyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVF
bmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNC
aWdFbmRpYW4gPSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGlzTGl0
dGxlRW5kaWFuR1BSLCBUcnVzdGVkSW1tMzIoMSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0
TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2pp
dC5qdW1wKCk7CisgICAgICAgICAgICAgICAgICAgIGlzQmlnRW5kaWFuLmxpbmsoJm1faml0KTsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSA0OiB7CisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVFZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSB8
fCB2YWx1ZUVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKKworICAgICAgICAgICAgICAg
IGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBt
X2ppdC5zdG9yZTMyKHZhbHVlR1BSLCBiYXNlSW5kZXgpOworICAgICAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIodmFsdWVHUFIsIHQzKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAzMih0Myk7CisgICAgICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlMzIodDMsIGJhc2VJbmRleCk7CisgICAgICAgICAgICAgICAgfTsKKworICAg
ICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisg
ICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAg
ICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9
IEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGlzQmlnRW5kaWFuID0g
bV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBpc0xpdHRsZUVuZGlhbkdQ
UiwgVHJ1c3RlZEltbTMyKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlh
bkNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOwor
ICAgICAgICAgICAgICAgICAgICBpc0JpZ0VuZGlhbi5saW5rKCZtX2ppdCk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUu
bGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogI2lmIEVO
QUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjYWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRkMzIo
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5MDMsNiArOTkwMywyMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVXZWFrU2V0T2JqCiAgICAgc3BlY3VsYXRlV2Vh
a1NldE9iamVjdChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3sKKyAg
ICBzcGVjdWxhdGVDZWxsVHlwZShlZGdlLCBjZWxsLCBTcGVjRGF0YVZpZXdPYmplY3QsIERhdGFW
aWV3VHlwZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURhdGFWaWV3T2Jq
ZWN0KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNEYXRh
Vmlld09iamVjdCkpCisgICAgICAgIHJldHVybjsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRnZSwg
b3BlcmFuZC5ncHIoKSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVj
dE9yT3RoZXIoRWRnZSBlZGdlKQogewogICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3Bl
Y09iamVjdCB8IFNwZWNPdGhlcikpCkBAIC0xMDI3MSw2ICsxMDI4NSw5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWQKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6
CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRGF0YVZpZXdPYmplY3RVc2U6CisgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2Jq
ZWN0KGVkZ2UpOworICAgICAgICBicmVhazsKICAgICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6CiAg
ICAgICAgIHNwZWN1bGF0ZU9iamVjdE9yT3RoZXIoZWRnZSk7CiAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2
aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEwLDYgKzE2MTAsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzcGVjdWxhdGVXZWFrTWFwT2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lk
IHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVXZWFrU2V0
T2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKKyAgICB2b2lkIHNwZWN1bGF0ZURhdGFWaWV3T2Jq
ZWN0KEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSwgR1BSUmVn
IGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0T3JPdGhlcihFZGdlKTsKICAgICB2b2lk
IHNwZWN1bGF0ZVN0cmluZyhFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1
bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBH
UFJSZWcgc3RvcmFnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCwxNiArMTA0LDE5IEBAIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICAgICAgb3V0LnByaW50KCJEZXJp
dmVkQXJyYXkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTWFwT2JqZWN0VXNlOgotICAg
ICAgICBvdXQucHJpbnQoIk1hcE9iamVjdFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIk1hcE9i
amVjdCIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTZXRPYmplY3RVc2U6Ci0gICAgICAg
IG91dC5wcmludCgiU2V0T2JqZWN0VXNlIik7CisgICAgICAgIG91dC5wcmludCgiU2V0T2JqZWN0
Iik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6Ci0gICAgICAg
IG91dC5wcmludCgiV2Vha01hcE9iamVjdFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIldlYWtN
YXBPYmplY3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToK
LSAgICAgICAgb3V0LnByaW50KCJXZWFrU2V0T2JqZWN0VXNlIik7CisgICAgICAgIG91dC5wcmlu
dCgiV2Vha1NldE9iamVjdCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEYXRhVmlld09i
amVjdFVzZToKKyAgICAgICAgb3V0LnByaW50KCJEYXRhVmlld09iamVjdCIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBvdXQucHJpbnQoIk9i
amVjdE9yT3RoZXIiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5o
CShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBlbnVtIFVzZUtpbmQgewogICAg
IFNldE9iamVjdFVzZSwKICAgICBXZWFrTWFwT2JqZWN0VXNlLAogICAgIFdlYWtTZXRPYmplY3RV
c2UsCisgICAgRGF0YVZpZXdPYmplY3RVc2UsCiAgICAgU3RyaW5nT2JqZWN0VXNlLAogICAgIFN0
cmluZ09yU3RyaW5nT2JqZWN0VXNlLAogICAgIE5vdFN0cmluZ1ZhclVzZSwKQEAgLTE2MCw2ICsx
NjEsOCBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLCiAgICAgICAg
IHJldHVybiBTcGVjV2Vha01hcE9iamVjdDsKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CiAg
ICAgICAgIHJldHVybiBTcGVjV2Vha1NldE9iamVjdDsKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0
VXNlOgorICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAgIGNhc2UgU3RyaW5n
T2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gU3BlY1N0cmluZ09iamVjdDsKICAgICBjYXNlIFN0
cmluZ09yU3RyaW5nT2JqZWN0VXNlOgpAQCAtMjU5LDYgKzI2Miw3IEBAIGlubGluZSBib29sIGlz
Q2VsbChVc2VLaW5kIGtpbmQpCiAgICAgY2FzZSBTZXRPYmplY3RVc2U6CiAgICAgY2FzZSBXZWFr
TWFwT2JqZWN0VXNlOgogICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKKyAgICBjYXNlIERhdGFW
aWV3T2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAg
ICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw2ICszNTks
OSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNh
c2UgQ3JlYXRlVGhpczoKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50OgorICAgIGNhc2UgRGF0YVZp
ZXdHZXRGbG9hdDoKKyAgICBjYXNlIERhdGFWaWV3U2V0OgogICAgICAgICAvLyBUaGVzZSBhcmUg
T0suCiAgICAgICAgIGJyZWFrOwogCkBAIC00NDUsNiArNDQ4LDcgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhbkNvbXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgU2V0T2JqZWN0
VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgV2Vha01hcE9iamVjdFVzZToKICAgICAgICAgICAg
ICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBEYXRhVmll
d09iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgogICAgICAg
ICAgICAgICAgIGNhc2UgUmVnRXhwT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgUHJv
eHlPYmplY3RVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDcsNiArMTMwNywx
MyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAg
ICAgIGNvbXBpbGVGaWx0ZXJJQ1N0YXR1cygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRGF0YVZpZXdHZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAg
ICAgICAgICAgIGNvbXBpbGVEYXRhVmlld0dldCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRGF0YVZpZXdTZXQ6CisgICAgICAgICAgICBjb21waWxlRGF0YVZpZXdTZXQoKTsK
KyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAg
ICBjYXNlIExvb3BIaW50OgpAQCAtMTIyMzgsNiArMTIyNDUsMzY0IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG1fbm9kZSk7CiAgICAgfQor
CisgICAgTFZhbHVlIGJ5dGVTd2FwMzIoTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBJbnQzMik7CisgICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50MzIpOworICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsdWUpOworICAgICAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIo
KSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIGppdC5ieXRlU3dhcDMyKHBhcmFtc1sw
XS5ncHIoKSk7CisgICAgICAgIH0pOworICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZm
ZWN0czo6bm9uZSgpOworICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICB9CisKKyAgICBM
VmFsdWUgYnl0ZVN3YXA2NChMVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVCh2YWx1ZS0+dHlwZSgpID09IEludDY0KTsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CisgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZFNvbWVSZWdpc3Rlcih2YWx1ZSk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgeworICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJh
bXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgaml0LmJ5dGVTd2FwNjQocGFyYW1zWzBdLmdwcigp
KTsKKyAgICAgICAgfSk7CisgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpu
b25lKCk7CisgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBGMSwgdHlwZW5hbWUgRjI+CisgICAgTFZhbHVlIGVtaXRCcmFuY2hPbkVuZGlh
bm5lc3NDb2RlKExWYWx1ZSBpc0xpdHRsZUVuZGlhbiwgY29uc3QgRjEmIGVtaXRMaXR0bGVFbmRp
YW5Db2RlLCBjb25zdCBGMiYgZW1pdEJpZ0VuZGlhbkNvZGUpCisgICAgeworICAgICAgICBMVHlw
ZSB0eXBlOworCisgICAgICAgIExCYXNpY0Jsb2NrIGJpZ0VuZGlhbkNhc2UgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBsaXR0bGVFbmRpYW5DYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKKworICAgICAgICBtX291dC5icmFuY2gobV9vdXQudGVzdElzWmVybzMyKGlzTGl0dGxl
RW5kaWFuLCBtX291dC5jb25zdEludDMyKDEpKSwKKyAgICAgICAgICAgIHVuc3VyZShiaWdFbmRp
YW5DYXNlKSwgdW5zdXJlKGxpdHRsZUVuZGlhbkNhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGJpZ0VuZGlhbkNhc2UsIGxpdHRsZUVuZGlhbkNh
c2UpOworICAgICAgICBMVmFsdWUgYmlnRW5kaWFuVmFsdWUgPSBlbWl0QmlnRW5kaWFuQ29kZSgp
OworICAgICAgICB0eXBlID0gYmlnRW5kaWFuVmFsdWUgPyBiaWdFbmRpYW5WYWx1ZS0+dHlwZSgp
IDogVm9pZDsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgYmlnRW5kaWFuUmVzdWx0ID0gYmlnRW5k
aWFuVmFsdWUgPyBtX291dC5hbmNob3IoYmlnRW5kaWFuVmFsdWUpIDogVmFsdWVGcm9tQmxvY2so
KTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGxpdHRsZUVuZGlhbkNhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSBs
aXR0bGVFbmRpYW5WYWx1ZSA9IGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGxpdHRsZUVuZGlhblJlc3VsdCA9IGxpdHRsZUVuZGlhblZhbHVlID8gbV9vdXQu
YW5jaG9yKGxpdHRsZUVuZGlhblZhbHVlKSA6IFZhbHVlRnJvbUJsb2NrKCk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCghbGl0dGxlRW5kaWFuVmFsdWUgJiYgIWJpZ0VuZGlhblZhbHVlKSB8fCB0
eXBlID09IGxpdHRsZUVuZGlhblZhbHVlLT50eXBlKCkpOworICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEhYmlnRW5kaWFuUmVzdWx0ID09ICEhbGl0
dGxlRW5kaWFuUmVzdWx0KTsKKyAgICAgICAgaWYgKGJpZ0VuZGlhblJlc3VsdCkKKyAgICAgICAg
ICAgIHJldHVybiBtX291dC5waGkodHlwZSwgYmlnRW5kaWFuUmVzdWx0LCBsaXR0bGVFbmRpYW5S
ZXN1bHQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBp
bGVEYXRhVmlld0dldCgpCisgICAgeworICAgICAgICBMVmFsdWUgZGF0YVZpZXcgPSBsb3dEYXRh
Vmlld09iamVjdChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93
SW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSBpc0xpdHRsZUVuZGlhbiA9
IG51bGxwdHI7CisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgaXNM
aXR0bGVFbmRpYW4gPSBsb3dCb29sZWFuKG1fbm9kZS0+Y2hpbGQzKCkpOworCisgICAgICAgIERh
dGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0RhdGEoKTsKKworICAgICAgICBMVmFs
dWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRh
VmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVl
IGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpOworICAgICAgICBpZiAoZGF0
YS5ieXRlU2l6ZSA+IDEpCisgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5k
ZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CisgICAgICAg
IHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZU9y
RXF1YWwoaW5kZXhUb0NoZWNrLCBsZW5ndGgpKTsKKworICAgICAgICBMVmFsdWUgdmVjdG9yID0g
bV9vdXQubG9hZFB0cihkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3Ip
OworCisgICAgICAgIC8vIE9PUFM6IGFkZCBuZXV0ZXJpbmcgdGVzdHMgZm9yIEpTRGF0YVZpZXcu
IFdlIGRvbid0IGV4cGxpY2l0bHkgbmVlZCB0byBjaGVjayBmb3IgbnVsbHB0ciBzaW5jZSBvdXIg
Ym91bmRzIGNoZWNrIHdpbGwgZmFpbC4KKworICAgICAgICBUeXBlZFBvaW50ZXIgcG9pbnRlciht
X2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzLCBtX291dC5hZGQodmVjdG9yLCBtX291dC56ZXJv
RXh0UHRyKGluZGV4KSkpOworCisgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gRGF0YVZpZXdH
ZXRJbnQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAg
ICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAg
ICAgICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkOFNpZ25FeHQzMihwb2ludGVyKSk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5sb2Fk
OFplcm9FeHQzMihwb2ludGVyKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDI6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Mb2FkID0g
WyZdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbV9vdXQubG9hZDE2U2lnbkV4dDMyKHBvaW50ZXIpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQubG9hZDE2WmVyb0V4dDMyKHBvaW50ZXIpOwor
ICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5M
b2FkID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVlIHZhbCA9IG1fb3V0LmxvYWQx
Nlplcm9FeHQzMihwb2ludGVyKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBPT1BTOiB0ZWFj
aCBiMyBieXRlIHN3YXAhCisgICAgICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0
Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50MzIpOworICAgICAgICAgICAgICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsKTsKKyAgICAgICAgICAgICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuYnl0ZVN3YXAxNihwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LnNpZ25FeHRlbmQxNlRvMzIocGFyYW1zWzBdLmdwcigpLCBwYXJhbXNbMF0uZ3By
KCkpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hw
b2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcGF0Y2hwb2ludDsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAg
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAg
ICAgICAgc2V0SW50MzIoZW1pdEJpZ0VuZGlhbkxvYWQoKSk7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAg
ICAgICAgIHNldEludDMyKGVtaXRMaXR0bGVFbmRpYW5Mb2FkKCkpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIoZW1pdEJyYW5jaE9uRW5kaWFubmVz
c0NvZGUoaXNMaXR0bGVFbmRpYW4sIGVtaXRMaXR0bGVFbmRpYW5Mb2FkLCBlbWl0QmlnRW5kaWFu
TG9hZCkpOworCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlIDQ6IHsKKyAgICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBtX291
dC5sb2FkMzIocG9pbnRlcik7CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVu
ZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBsb2FkZWRWYWx1ZSA9
IGJ5dGVTd2FwMzIobG9hZGVkVmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEu
aXNMaXR0bGVFbmRpYW4gPT0gTWl4ZWRUcmlTdGF0ZSkgeworICAgICAgICAgICAgICAgICAgICBh
dXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBsb2FkZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBlbWl0QmlnRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYnl0ZVN3YXAzMihsb2FkZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWUgPSBlbWl0QnJhbmNoT25F
bmRpYW5uZXNzQ29kZShpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRC
aWdFbmRpYW5Db2RlKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAo
ZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIobG9hZGVkVmFsdWUp
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBib29sIHJlc3Vs
dElzSW50MzIgPSAhKG1fbm9kZS0+cHJlZGljdGlvbigpICYgflNwZWNJbnQzMk9ubHkpOworICAg
ICAgICAgICAgICAgICAgICBpZiAocmVzdWx0SXNJbnQzMikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxl
c3NUaGFuKGxvYWRlZFZhbHVlLCBtX291dC5pbnQzMlplcm8pKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEludDMyKGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBkb3VibGVWYWwgPSBtX291dC5pbnRU
b0RvdWJsZShtX291dC56ZXJvRXh0KGxvYWRlZFZhbHVlLCBJbnQ2NCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlVmFsID0gYm94RG91YmxlKGRvdWJsZVZhbCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRKU1ZhbHVlKGRvdWJsZVZhbCk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAgICAgY2FzZSA0OiB7Cisg
ICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtX291dC5mbG9hdFRvRG91YmxlKG1fb3V0LmxvYWRGbG9hdChw
b2ludGVyKSk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1p
dEJpZ0VuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVk
VmFsdWUgPSBtX291dC5sb2FkMzIocG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoRG91YmxlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGxvYWRlZFZhbHVl
KTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBh
cmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmJ5dGVTd2Fw
MzIocGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92
ZTMyVG9GbG9hdChwYXJhbXMuZ3BTY3JhdGNoKDApLCBwYXJhbXNbMF0uZnByKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvbnZlcnRGbG9hdFRvRG91YmxlKHBhcmFtc1swXS5mcHIo
KSwgcGFyYW1zWzBdLmZwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAgICAgICAgICAgIH07CisKKyAg
ICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisg
ICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0TGl0dGxlRW5kaWFuQ29kZSgpKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3Rh
dGUpCisgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0QmlnRW5kaWFuQ29kZSgpKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0
QnJhbmNoT25FbmRpYW5uZXNzQ29kZShpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNv
ZGUsIGVtaXRCaWdFbmRpYW5Db2RlKSk7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgODogeworICAgICAgICAgICAgICAgIGF1dG8gZW1p
dExpdHRsZUVuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9v
dXQubG9hZERvdWJsZShwb2ludGVyKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICAgICAgYXV0byBlbWl0QmlnRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAg
IExWYWx1ZSBsb2FkZWRWYWx1ZSA9IG1fb3V0LmxvYWQ2NChwb2ludGVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgbG9hZGVkVmFsdWUgPSBieXRlU3dhcDY0KGxvYWRlZFZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmJpdENhc3QobG9hZGVkVmFsdWUsIERvdWJsZSk7Cisg
ICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5k
aWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2V0RG91YmxlKGVtaXRM
aXR0bGVFbmRpYW5Db2RlKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0
bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2V0RG91Ymxl
KGVtaXRCaWdFbmRpYW5Db2RlKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgc2V0RG91YmxlKGVtaXRCcmFuY2hPbkVuZGlhbm5lc3NDb2RlKGlzTGl0dGxlRW5k
aWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpKTsKKworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBjb21waWxlRGF0YVZpZXdTZXQoKQorICAg
IHsKKyAgICAgICAgTFZhbHVlIGRhdGFWaWV3ID0gbG93RGF0YVZpZXdPYmplY3QobV9ncmFwaC52
YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIo
bV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKKyAgICAgICAgTFZhbHVlIGlzTGl0dGxl
RW5kaWFuID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2Rl
LCAzKSkKKyAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gbG93Qm9vbGVhbihtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMykpOworCisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9u
b2RlLT5kYXRhVmlld0RhdGEoKTsKKworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVy
b0V4dFB0cihtX291dC5sb2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5
QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0
Lnplcm9FeHRQdHIoaW5kZXgpOworICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCisgICAg
ICAgICAgICBpbmRleFRvQ2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25z
dEludDY0KGRhdGEuYnl0ZVNpemUgLSAxKSk7CisgICAgICAgIC8vIE9PUFM6IGFkZCBuZXV0ZXJp
bmcgdGVzdHMgZm9yIEpTRGF0YVZpZXcuIFdlIGRvbid0IGV4cGxpY2l0bHkgbmVlZCB0byBjaGVj
ayBmb3IgbnVsbHB0ciBzaW5jZSBvdXIgYm91bmRzIGNoZWNrIHdpbGwgZmFpbC4KKyAgICAgICAg
c3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JF
cXVhbChpbmRleFRvQ2hlY2ssIGxlbmd0aCkpOworCisgICAgICAgIEVkZ2UmIHZhbHVlRWRnZSA9
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAyKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlVG9T
dG9yZTsKKyAgICAgICAgc3dpdGNoICh2YWx1ZUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNh
c2UgSW50MzJVc2U6CisgICAgICAgICAgICB2YWx1ZVRvU3RvcmUgPSBsb3dJbnQzMih2YWx1ZUVk
Z2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAg
ICAgICAgICAgdmFsdWVUb1N0b3JlID0gbG93RG91YmxlKHZhbHVlRWRnZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgICAgIHZhbHVlVG9T
dG9yZSA9IGxvd1N0cmljdEludDUyKHZhbHVlRWRnZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKworICAgICAgICBMVmFsdWUgdmVjdG9yID0gbV9vdXQubG9hZFB0cihkYXRh
VmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworICAgICAgICBUeXBlZFBv
aW50ZXIgcG9pbnRlcihtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzLCBtX291dC5hZGQodmVj
dG9yLCBtX291dC56ZXJvRXh0UHRyKGluZGV4KSkpOworCisgICAgICAgIGlmIChkYXRhLmlzRmxv
YXRpbmdQb2ludCkgeworICAgICAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPT0gNCkgeworICAg
ICAgICAgICAgICAgIHZhbHVlVG9TdG9yZSA9IG1fb3V0LmRvdWJsZVRvRmxvYXQodmFsdWVUb1N0
b3JlKTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0g
KCkgLT4gTFZhbHVlIHsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmVGbG9hdCh2YWx1
ZVRvU3RvcmUsIHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgYXV0byBlbWl0QmlnRW5kaWFu
Q29kZSA9IFsmXSAoKSAtPiBMVmFsdWUgeworICAgICAgICAgICAgICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDMyKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHZhbHVlVG9TdG9yZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmVGbG9hdFRvMzIocGFyYW1zWzFdLmZwcigpLCBw
YXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmJ5dGVTd2FwMzIo
cGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fb3V0LnN0b3JlMzIocGF0Y2hwb2ludCwgcG9pbnRlcik7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAg
ICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAg
ICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgZW1pdEJyYW5jaE9uRW5kaWFubmVzc0NvZGUoaXNMaXR0bGVFbmRpYW4s
IGVtaXRMaXR0bGVFbmRpYW5Db2RlLCBlbWl0QmlnRW5kaWFuQ29kZSk7CisKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGF0YS5ieXRlU2l6ZSA9
PSA4KTsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdICgp
IC0+IExWYWx1ZSB7CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlRG91YmxlKHZhbHVl
VG9TdG9yZSwgcG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgYXV0byBlbWl0QmlnRW5kaWFuQ29k
ZSA9IFsmXSAoKSAtPiBMVmFsdWUgeworICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0
KGJ5dGVTd2FwNjQobV9vdXQuYml0Q2FzdCh2YWx1ZVRvU3RvcmUsIEludDY0KSksIHBvaW50ZXIp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9
OworCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlT
dGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVtaXRCcmFuY2hPbkVuZGlhbm5lc3NDb2RlKGlz
TGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChkYXRh
LmJ5dGVTaXplKSB7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQodmFsdWVFZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSk7CisgICAgICAgICAgICAg
ICAgbV9vdXQuc3RvcmUzMkFzOCh2YWx1ZVRvU3RvcmUsIHBvaW50ZXIpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiB7CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQodmFsdWVFZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSk7CisKKyAgICAgICAgICAg
ICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdICgpIC0+IExWYWx1ZSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzJBczE2KHZhbHVlVG9TdG9yZSwgcG9pbnRlcik7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgYXV0byBlbWl0QmlnRW5kaWFuQ29kZSA9IFsmXSAoKSAtPiBMVmFs
dWUgeworICAgICAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBt
X291dC5wYXRjaHBvaW50KEludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kU29tZVJlZ2lzdGVyKHZhbHVlVG9TdG9yZSk7CisgICAgICAgICAgICAgICAgICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmJ5dGVTd2FwMTYocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBF
ZmZlY3RzOjpub25lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMkFzMTYo
cGF0Y2hwb2ludCwgcG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5k
aWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4g
PT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29k
ZSgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZW1pdEJyYW5j
aE9uRW5kaWFubmVzc0NvZGUoaXNMaXR0bGVFbmRpYW4sIGVtaXRMaXR0bGVFbmRpYW5Db2RlLCBl
bWl0QmlnRW5kaWFuQ29kZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBjYXNlIDQ6IHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh2
YWx1ZUVkZ2UudXNlS2luZCgpID09IEludDMyVXNlIHx8IHZhbHVlRWRnZS51c2VLaW5kKCkgPT0g
SW50NTJSZXBVc2UpOworCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlRWRnZS51c2VLaW5kKCkg
PT0gSW50NTJSZXBVc2UpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlVG9TdG9yZSA9IG1fb3V0
LmNhc3RUb0ludDMyKHZhbHVlVG9TdG9yZSk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRM
aXR0bGVFbmRpYW5Db2RlID0gWyZdICgpIC0+IExWYWx1ZSB7CisgICAgICAgICAgICAgICAgICAg
IG1fb3V0LnN0b3JlMzIodmFsdWVUb1N0b3JlLCBwb2ludGVyKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBh
dXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdICgpIC0+IExWYWx1ZSB7CisgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LnN0b3JlMzIoYnl0ZVN3YXAzMih2YWx1ZVRvU3RvcmUpLCBwb2ludGVyKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3Rh
dGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAg
ICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBlbWl0QnJhbmNoT25FbmRpYW5uZXNzQ29kZShpc0xp
dHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKTsKKwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQogICAgIAogICAgIHZvaWQgZW1pdFN3aXRjaEZvck11
bHRpQnlPZmZzZXQoTFZhbHVlIGJhc2UsIGJvb2wgc3RydWN0dXJlc0NoZWNrZWQsIFZlY3RvcjxT
d2l0Y2hDYXNlLCAyPiYgY2FzZXMsIExCYXNpY0Jsb2NrIGV4aXQpCiAgICAgewpAQCAtMTQ0Njgs
NiArMTQ4MzMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgc3BlY3VsYXRlV2Vha1NldE9iamVjdChl
ZGdlLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKworICAgIExWYWx1
ZSBsb3dEYXRhVmlld09iamVjdChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gbG93Q2VsbChlZGdlKTsKKyAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRn
ZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgCiAgICAgTFZh
bHVlIGxvd1N0cmluZyhFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKICAgICB7CkBAIC0xNDk0Myw2ICsxNTMxNSw5IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKICAgICAgICAgICAgIHNw
ZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBEYXRhVmlld09iamVjdFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2Jq
ZWN0KGVkZ2UpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgog
ICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xNTQzNyw2ICsxNTgxMiwxNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc3BlY3VsYXRl
V2Vha1NldE9iamVjdChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CisKKyAgICB2b2lkIHNw
ZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCisgICAgeworICAg
ICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRn
ZSwgU3BlY0RhdGFWaWV3T2JqZWN0LCBpc05vdFR5cGUoY2VsbCwgRGF0YVZpZXdUeXBlKSk7Cisg
ICAgfQorCisgICAgdm9pZCBzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlIGVkZ2UpCisgICAg
eworICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsK
KyAgICB9CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBMVmFsdWUg
Y2VsbCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJp
bnNpYy5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw2ICsyMzksMzggQEAgY29u
c3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cgogICAgICAgICByZXR1cm4gIkNQ
VUNwdWlkSW50cmluc2ljIjsKICAgICBjYXNlIENQVVBhdXNlSW50cmluc2ljOgogICAgICAgICBy
ZXR1cm4gIkNQVVBhdXNlSW50cmluc2ljIjsKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50ODoKKyAg
ICAgICAgcmV0dXJuICJEYXRhVmlld0dldEludDgiOworICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50
ODoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldFVpbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3
R2V0SW50MTY6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRJbnQxNiI7CisgICAgY2FzZSBE
YXRhVmlld0dldFVpbnQxNjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldFVpbnQxNiI7Cisg
ICAgY2FzZSBEYXRhVmlld0dldEludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0SW50
MzIiOworICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZp
ZXdHZXRVaW50MzIiOworICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDMyOgorICAgICAgICByZXR1
cm4gIkRhdGFWaWV3R2V0RmxvYXQzMiI7CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0NjQ6Cisg
ICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRGbG9hdDY0IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0
SW50ODoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEludDgiOworICAgIGNhc2UgRGF0YVZp
ZXdTZXRVaW50ODoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldFVpbnQ4IjsKKyAgICBjYXNl
IERhdGFWaWV3U2V0SW50MTY6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRJbnQxNiI7Cisg
ICAgY2FzZSBEYXRhVmlld1NldFVpbnQxNjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldFVp
bnQxNiI7CisgICAgY2FzZSBEYXRhVmlld1NldEludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFW
aWV3U2V0SW50MzIiOworICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MzI6CisgICAgICAgIHJldHVy
biAiRGF0YVZpZXdTZXRVaW50MzIiOworICAgIGNhc2UgRGF0YVZpZXdTZXRGbG9hdDMyOgorICAg
ICAgICByZXR1cm4gIkRhdGFWaWV3U2V0RmxvYXQzMiI7CisgICAgY2FzZSBEYXRhVmlld1NldEZs
b2F0NjQ6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRGbG9hdDY0IjsKICAgICB9CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCShyZXZpc2lvbiAyMzQ4
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSwyMyBAQCBlbnVtIEludHJpbnNpYyB7CiAgICAgQ1BVUmR0
c2NJbnRyaW5zaWMsCiAgICAgQ1BVQ3B1aWRJbnRyaW5zaWMsCiAgICAgQ1BVUGF1c2VJbnRyaW5z
aWMsCisKKyAgICBEYXRhVmlld0dldEludDgsCisgICAgRGF0YVZpZXdHZXRVaW50OCwKKyAgICBE
YXRhVmlld0dldEludDE2LAorICAgIERhdGFWaWV3R2V0VWludDE2LAorICAgIERhdGFWaWV3R2V0
SW50MzIsCisgICAgRGF0YVZpZXdHZXRVaW50MzIsCisgICAgRGF0YVZpZXdHZXRGbG9hdDMyLAor
ICAgIERhdGFWaWV3R2V0RmxvYXQ2NCwKKyAgICBEYXRhVmlld1NldEludDgsCisgICAgRGF0YVZp
ZXdTZXRVaW50OCwKKyAgICBEYXRhVmlld1NldEludDE2LAorICAgIERhdGFWaWV3U2V0VWludDE2
LAorICAgIERhdGFWaWV3U2V0SW50MzIsCisgICAgRGF0YVZpZXdTZXRVaW50MzIsCisgICAgRGF0
YVZpZXdTZXRGbG9hdDMyLAorICAgIERhdGFWaWV3U2V0RmxvYXQ2NCwKIH07CiAKIGNvbnN0IGNo
YXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAy
MzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMjIgKzM5LDIyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAvKiBTb3VyY2UgZm9yIEpTRGF0YVZpZXdQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBkYXRh
Vmlld1RhYmxlCi0gIGdldEludDggICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldElu
dDggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRVaW50OCAgICAg
ICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50OCAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uICAgICAgIDEKLSAgZ2V0SW50MTYgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5j
R2V0SW50MTYgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldFVpbnQx
NiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQxNiAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gICAgICAgMQotICBnZXRJbnQzMiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90
b0Z1bmNHZXRJbnQzMiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0
VWludDMyICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDMyICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldEZsb2F0MzIgICAgICAgICAgICBkYXRhVmll
d1Byb3RvRnVuY0dldEZsb2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQot
ICBnZXRGbG9hdDY0ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDY0ICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgc2V0SW50OCAgICAgICAgICAgICAgIGRh
dGFWaWV3UHJvdG9GdW5jU2V0SW50OCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAg
ICAyCi0gIHNldFVpbnQ4ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4ICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRJbnQxNiAgICAgICAgICAg
ICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQxNiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
ICAgICAgIDIKLSAgc2V0VWludDE2ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWlu
dDE2ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldEludDMyICAgICAg
ICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEludDMyICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gICAgICAgMgotICBzZXRVaW50MzIgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNT
ZXRVaW50MzIgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0RmxvYXQz
MiAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQzMiAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldEZsb2F0NjQgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
RnVuY1NldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgorICBnZXRJ
bnQ4ICAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4ICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0SW50OAorICBnZXRVaW50OCAgICAg
ICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50OCAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0VWludDgKKyAgZ2V0SW50MTYgICAgICAgICAgICAg
IGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAg
ICAgICAxICBEYXRhVmlld0dldEludDE2CisgIGdldFVpbnQxNiAgICAgICAgICAgICBkYXRhVmll
d1Byb3RvRnVuY0dldFVpbnQxNiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAg
RGF0YVZpZXdHZXRVaW50MTYKKyAgZ2V0SW50MzIgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9G
dW5jR2V0SW50MzIgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmll
d0dldEludDMyCisgIGdldFVpbnQzMiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVp
bnQzMiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRVaW50
MzIKKyAgZ2V0RmxvYXQzMiAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQzMiAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldEZsb2F0MzIKKyAg
Z2V0RmxvYXQ2NCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NCAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldEZsb2F0NjQKKyAgc2V0SW50
OCAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50OCAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldEludDgKKyAgc2V0VWludDggICAgICAg
ICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDggICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAgICAgICAyICBEYXRhVmlld1NldFVpbnQ4CisgIHNldEludDE2ICAgICAgICAgICAgICBk
YXRhVmlld1Byb3RvRnVuY1NldEludDE2ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAg
ICAgMiAgRGF0YVZpZXdTZXRJbnQxNgorICBzZXRVaW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQ
cm90b0Z1bmNTZXRVaW50MTYgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERh
dGFWaWV3U2V0VWludDE2CisgIHNldEludDMyICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVu
Y1NldEludDMyICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdT
ZXRJbnQzMgorICBzZXRVaW50MzIgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50
MzIgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0VWludDMy
CisgIHNldEZsb2F0MzIgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRGbG9hdDMyCisgIHNl
dEZsb2F0NjQgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRGbG9hdDY0CiAgIGJ1ZmZlciAg
ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyICAgICAgICAgICAgRG9udEVu
dW18QWNjZXNzb3IgICAgICAgMAogICBieXRlTGVuZ3RoICAgICAgICAgICAgZGF0YVZpZXdQcm90
b0dldHRlckJ5dGVMZW5ndGggICAgICAgIERvbnRFbnVtfEFjY2Vzc29yICAgICAgIDAKICAgYnl0
ZU9mZnNldCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0ICAgICAgICBE
b250RW51bXxBY2Nlc3NvciAgICAgICAwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmgJKHJldmlzaW9uIDIzNDg3
MykKKysrIFNvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcg
KzI4LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLWVudW0gVHJpU3RhdGUgeworZW51bSBUcmlT
dGF0ZSA6IGludDhfdCB7CiAgICAgRmFsc2VUcmlTdGF0ZSwKICAgICBUcnVlVHJpU3RhdGUsCiAg
ICAgTWl4ZWRUcmlTdGF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347484</attachid>
            <date>2018-08-20 00:41:37 -0700</date>
            <delta_ts>2018-08-20 17:27:34 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>86352</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3LWppdC1zZXQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SlNUZXN0cy9zdHJlc3MvZGF0YXZpZXctaml0LXNldC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rl
c3RzL3N0cmVzcy9kYXRhdmlldy1qaXQtc2V0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDQwIEBACisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFi
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2Z1bmN0aW9uIHJlYWRIZXgoZHYsIGJ5
dGVzKSB7CisgICAgZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKSB7IAorICAgICAgICBsZXQgYiA9
IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICAgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGIpOwor
ICAgICAgICBkdi5zZXRJbnQzMigwLCAweDAwMTEyMjMzLCB0cnVlKTsKKyAgICAgICAgcmV0dXJu
IGR2LmdldFVpbnQ4KDApID09PSAweDMzOworICAgIH0KKyAgICBsZXQgc3RyID0gIiI7CisgICAg
ZnVuY3Rpb24gcmVhZEJ5dGUoaSkgeworICAgICAgICBsZXQgYiA9IGR2LmdldFVpbnQ4KGkpLnRv
U3RyaW5nKDE2KTsKKyAgICAgICAgaWYgKGIubGVuZ3RoID09PSAxKQorICAgICAgICAgICAgYiA9
ICIwIiArIGI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChiLmxlbmd0aCA9PT0g
MikKKyAgICAgICAgcmV0dXJuIGI7CisgICAgfQorICAgIGlmIChpc0xpdHRsZUVuZGlhbigpKSB7
CisgICAgICAgIGZvciAobGV0IGkgPSBieXRlczsgaS0tOykKKyAgICAgICAgICAgIHN0ciA9IHN0
ciArIHJlYWRCeXRlKGkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgYnl0ZXM7ICsraSkKKyAgICAgICAgICAgIHN0ciA9IHN0ciArIHJlYWRCeXRlKGkpOworICAg
IH0KKworICAgIHJldHVybiAiMHgiICsgc3RyOworfQorCit7CisgICAgbGV0IGIgPSBuZXcgQXJy
YXlCdWZmZXIoNCk7CisgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGIpOworICAgIGR2LnNldElu
dDMyKDAsIDB4MDAxMTIyMzMsIHRydWUpOworICAgIGFzc2VydChyZWFkSGV4KGR2LCA0KSA9PT0g
IjB4MDAxMTIyMzMiKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBmdW5jdGlvbiBzdG9y
ZUxpdHRsZUVuZGlhbihkdiwgaW5kZXgsIHZhbHVlKSB7CisgICAgICAgIGR2LnNldEludDE2KGlu
ZGV4LCB2YWx1ZSwgdHJ1ZSk7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3JlTGl0dGxlRW5kaWFu
KTsKKworICAgIGZ1bmN0aW9uIHN0b3JlQmlnRW5kaWFuKGR2LCBpbmRleCwgdmFsdWUpIHsKKyAg
ICAgICAgZHYuc2V0SW50MTYoaW5kZXgsIHZhbHVlLCBmYWxzZSk7CisgICAgfQorICAgIG5vSW5s
aW5lKHN0b3JlQmlnRW5kaWFuKTsKKworICAgIGZ1bmN0aW9uIHN0b3JlKGR2LCBpbmRleCwgdmFs
dWUsIGxpdHRsZUVuZGlhbikgeworICAgICAgICBkdi5zZXRJbnQxNihpbmRleCwgdmFsdWUsIGxp
dHRsZUVuZGlhbik7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3JlKTsKKworICAgIGxldCBidWZm
ZXIgPSBuZXcgQXJyYXlCdWZmZXIoMik7CisgICAgbGV0IGFyciA9IG5ldyBVaW50MTZBcnJheShi
dWZmZXIpOworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhidWZmZXIpOworCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2
LCAwLCAweGZhYmEpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZhYmEpOworCisgICAg
ICAgIHN0b3JlKGR2LCAwLCAweGFiY2QsIHRydWUpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09
PSAweGFiY2QpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAweGJhZGJlZWYsIHRydWUpOworICAg
ICAgICBhc3NlcnQoYXJyWzBdID09PSAweGJlZWYpOworCisgICAgICAgIHN0b3JlTGl0dGxlRW5k
aWFuKGR2LCAwLCAweGJiNGRiMzNmLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0g
MHhiMzNmKTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgMHhmYWRhKTsKKyAgICAg
ICAgYXNzZXJ0KGFyclswXSA9PT0gMHhkYWZhKTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihk
diwgMCwgMHgxMmFiKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhhYjEyKTsKKworICAg
ICAgICBzdG9yZShkdiwgMCwgMHgxMjM0LCBmYWxzZSk7CisgICAgICAgIGFzc2VydChhcnJbMF0g
PT09IDB4MzQxMik7CisKKyAgICAgICAgc3RvcmUoZHYsIDAsIDB4MDEwMiwgZmFsc2UpOworICAg
ICAgICBhc3NlcnQoYXJyWzBdID09PSAweDAyMDEpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAt
MSwgZmFsc2UpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZmZmYpOworCisgICAgICAg
IHN0b3JlKGR2LCAwLCAtMiwgZmFsc2UpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZl
ZmYpOworCisgICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAtMSk7CisgICAgICAgIGFzc2Vy
dChhcnJbMF0gPT09IDB4ZmZmZik7CisKKyAgICAgICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIC0y
KTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhmZWZmKTsKKworICAgICAgICBzdG9yZUJp
Z0VuZGlhbihkdiwgMCwgLTIxNDc0ODM2NDgpOyAKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0g
MHgwMDAwKTsKKworICAgICAgICBzdG9yZUxpdHRsZUVuZGlhbihkdiwgMCwgLTIxNDc0ODM2NDgp
OyAKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHgwMDAwKTsKKworICAgICAgICBzdG9yZUxp
dHRsZUVuZGlhbihkdiwgMCwgLTIxNDc0Nzg5ODgpOyAKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9
PT0gMHgxMjM0KTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgLTIxNDc0Nzg5ODgp
OyAKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHgzNDEyKTsKKyAgICB9Cit9Cit0ZXN0KCk7
CisKK2Z1bmN0aW9uIHRlc3QyKCkgeworICAgIGZ1bmN0aW9uIHN0b3JlTGl0dGxlRW5kaWFuKGR2
LCBpbmRleCwgdmFsdWUpIHsKKyAgICAgICAgZHYuc2V0VWludDE2KGluZGV4LCB2YWx1ZSwgdHJ1
ZSk7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3JlTGl0dGxlRW5kaWFuKTsKKworICAgIGZ1bmN0
aW9uIHN0b3JlQmlnRW5kaWFuKGR2LCBpbmRleCwgdmFsdWUpIHsKKyAgICAgICAgZHYuc2V0VWlu
dDE2KGluZGV4LCB2YWx1ZSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShzdG9yZUJpZ0Vu
ZGlhbik7CisKKyAgICBmdW5jdGlvbiBzdG9yZShkdiwgaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRp
YW4pIHsKKyAgICAgICAgZHYuc2V0VWludDE2KGluZGV4LCB2YWx1ZSwgbGl0dGxlRW5kaWFuKTsK
KyAgICB9CisgICAgbm9JbmxpbmUoc3RvcmUpOworCisgICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJh
eUJ1ZmZlcigyKTsKKyAgICBsZXQgYXJyID0gbmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7CisgICAg
bGV0IGR2ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwOyArK2kpIHsKKyAgICAgICAgc3RvcmVMaXR0bGVFbmRpYW4oZHYsIDAsIDB4ZmFiYSk7
CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4ZmFiYSk7CisKKyAgICAgICAgc3RvcmUoZHYs
IDAsIDB4YWJjZCwgdHJ1ZSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4YWJjZCk7CisK
KyAgICAgICAgc3RvcmUoZHYsIDAsIDB4YmFkYmVlZiwgdHJ1ZSk7CisgICAgICAgIGFzc2VydChh
cnJbMF0gPT09IDB4YmVlZik7CisKKyAgICAgICAgc3RvcmVMaXR0bGVFbmRpYW4oZHYsIDAsIDB4
YmI0ZGIzM2YsIHRydWUpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGIzM2YpOworCisg
ICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAweGZhZGEpOworICAgICAgICBhc3NlcnQoYXJy
WzBdID09PSAweGRhZmEpOworCisgICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAweDEyYWIp
OworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGFiMTIpOworCisgICAgICAgIHN0b3JlKGR2
LCAwLCAweDEyMzQsIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHgzNDEyKTsK
KworICAgICAgICBzdG9yZShkdiwgMCwgMHgwMTAyLCBmYWxzZSk7CisgICAgICAgIGFzc2VydChh
cnJbMF0gPT09IDB4MDIwMSk7CisKKyAgICAgICAgc3RvcmUoZHYsIDAsIC0xLCBmYWxzZSk7Cisg
ICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4ZmZmZik7CisKKyAgICAgICAgc3RvcmUoZHYsIDAs
IC0yLCBmYWxzZSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4ZmVmZik7CisKKyAgICAg
ICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIC0xKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0g
MHhmZmZmKTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgLTIpOworICAgICAgICBh
c3NlcnQoYXJyWzBdID09PSAweGZlZmYpOworCisgICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAw
LCAtMjE0NzQ4MzY0OCk7IAorICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweDAwMDApOworCisg
ICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCAtMjE0NzQ4MzY0OCk7IAorICAgICAgICBh
c3NlcnQoYXJyWzBdID09PSAweDAwMDApOworCisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2
LCAwLCAtMjE0NzQ3ODk4OCk7IAorICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweDEyMzQpOwor
CisgICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAtMjE0NzQ3ODk4OCk7IAorICAgICAgICBh
c3NlcnQoYXJyWzBdID09PSAweDM0MTIpOworICAgIH0KK30KK3Rlc3QyKCk7CisKK2Z1bmN0aW9u
IHRlc3QzKCkgeworICAgIGZ1bmN0aW9uIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCBpbmRleCwgdmFs
dWUpIHsKKyAgICAgICAgZHYuc2V0VWludDMyKGluZGV4LCB2YWx1ZSwgdHJ1ZSk7CisgICAgfQor
ICAgIG5vSW5saW5lKHN0b3JlTGl0dGxlRW5kaWFuKTsKKworICAgIGZ1bmN0aW9uIHN0b3JlQmln
RW5kaWFuKGR2LCBpbmRleCwgdmFsdWUpIHsKKyAgICAgICAgZHYuc2V0VWludDMyKGluZGV4LCB2
YWx1ZSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShzdG9yZUJpZ0VuZGlhbik7CisKKyAg
ICBmdW5jdGlvbiBzdG9yZShkdiwgaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRpYW4pIHsKKyAgICAg
ICAgZHYuc2V0VWludDMyKGluZGV4LCB2YWx1ZSwgbGl0dGxlRW5kaWFuKTsKKyAgICB9CisgICAg
bm9JbmxpbmUoc3RvcmUpOworCisgICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig0KTsK
KyAgICBsZXQgYXJyID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7CisgICAgbGV0IGFycjIgPSBu
ZXcgSW50MzJBcnJheShidWZmZXIpOworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhidWZmZXIp
OworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIHN0b3Jl
TGl0dGxlRW5kaWFuKGR2LCAwLCAweGZmZmZmZmZmKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9
PT0gMHhmZmZmZmZmZik7CisgICAgICAgIGFzc2VydChhcnIyWzBdID09PSAtMSk7CisKKyAgICAg
ICAgc3RvcmVMaXR0bGVFbmRpYW4oZHYsIDAsIDB4ZmZhYWJiY2MpOworICAgICAgICBhc3NlcnQo
YXJyWzBdID09PSAweGZmYWFiYmNjKTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwg
MHgxMjM0NTY3OCk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4Nzg1NjM0MTIpOworCisg
ICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAweGZmYWFiYmNjKTsKKyAgICAgICAgYXNzZXJ0
KGFyclswXSA9PT0gMHhjY2JiYWFmZik7CisKKyAgICAgICAgc3RvcmUoZHYsIDAsIDB4ZmFlYWRh
Y2EsIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhjYWRhZWFmYSk7CisKKyAg
ICAgICAgc3RvcmUoZHYsIDAsIDB4Y2FkYWVhZmEsIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KGFy
cjJbMF0gPT09IC04NTI3MTg2Mik7CisKKyAgICAgICAgc3RvcmUoZHYsIDAsIDB4MTIzNDU2Nzgs
IGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHg3ODU2MzQxMik7CisKKyAgICAg
ICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIDB4YmVlZmZlZWIpOworICAgICAgICBhc3NlcnQoYXJy
MlswXSA9PT0gLTMzNTYxNDAxOCk7CisgICAgfQorfQordGVzdDMoKTsKKworZnVuY3Rpb24gdGVz
dDQoKSB7CisgICAgZnVuY3Rpb24gc3RvcmVMaXR0bGVFbmRpYW4oZHYsIGluZGV4LCB2YWx1ZSkg
eworICAgICAgICBkdi5zZXRJbnQzMihpbmRleCwgdmFsdWUsIHRydWUpOworICAgIH0KKyAgICBu
b0lubGluZShzdG9yZUxpdHRsZUVuZGlhbik7CisKKyAgICBmdW5jdGlvbiBzdG9yZUJpZ0VuZGlh
bihkdiwgaW5kZXgsIHZhbHVlKSB7CisgICAgICAgIGR2LnNldEludDMyKGluZGV4LCB2YWx1ZSwg
ZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShzdG9yZUJpZ0VuZGlhbik7CisKKyAgICBmdW5j
dGlvbiBzdG9yZShkdiwgaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRpYW4pIHsKKyAgICAgICAgZHYu
c2V0SW50MzIoaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRpYW4pOworICAgIH0KKyAgICBub0lubGlu
ZShzdG9yZSk7CisKKyAgICBsZXQgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDQpOworICAgIGxl
dCBhcnIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTsKKyAgICBsZXQgYXJyMiA9IG5ldyBJbnQz
MkFycmF5KGJ1ZmZlcik7CisgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgc3RvcmVMaXR0bGVF
bmRpYW4oZHYsIDAsIDB4ZmZmZmZmZmYpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZm
ZmZmZmZmKTsKKyAgICAgICAgYXNzZXJ0KGFycjJbMF0gPT09IC0xKTsKKworICAgICAgICBzdG9y
ZUxpdHRsZUVuZGlhbihkdiwgMCwgMHhmZmFhYmJjYyk7CisgICAgICAgIGFzc2VydChhcnJbMF0g
PT09IDB4ZmZhYWJiY2MpOworCisgICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAweDEyMzQ1
Njc4KTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHg3ODU2MzQxMik7CisKKyAgICAgICAg
c3RvcmVCaWdFbmRpYW4oZHYsIDAsIDB4ZmZhYWJiY2MpOworICAgICAgICBhc3NlcnQoYXJyWzBd
ID09PSAweGNjYmJhYWZmKTsKKworICAgICAgICBzdG9yZShkdiwgMCwgMHhmYWVhZGFjYSwgZmFs
c2UpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGNhZGFlYWZhKTsKKworICAgICAgICBz
dG9yZShkdiwgMCwgMHhjYWRhZWFmYSwgZmFsc2UpOworICAgICAgICBhc3NlcnQoYXJyMlswXSA9
PT0gLTg1MjcxODYyKTsKKworICAgICAgICBzdG9yZShkdiwgMCwgMHgxMjM0NTY3OCwgZmFsc2Up
OworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweDc4NTYzNDEyKTsKKworICAgICAgICBzdG9y
ZUJpZ0VuZGlhbihkdiwgMCwgMHhiZWVmZmVlYik7CisgICAgICAgIGFzc2VydChhcnIyWzBdID09
PSAtMzM1NjE0MDE4KTsKKyAgICB9Cit9Cit0ZXN0NCgpOworCitmdW5jdGlvbiB0ZXN0NSgpIHsK
KyAgICBmdW5jdGlvbiBzdG9yZUxpdHRsZUVuZGlhbihkdiwgaW5kZXgsIHZhbHVlKSB7CisgICAg
ICAgIGR2LnNldEZsb2F0MzIoaW5kZXgsIHZhbHVlLCB0cnVlKTsKKyAgICB9CisgICAgbm9Jbmxp
bmUoc3RvcmVMaXR0bGVFbmRpYW4pOworCisgICAgZnVuY3Rpb24gc3RvcmVCaWdFbmRpYW4oZHYs
IGluZGV4LCB2YWx1ZSkgeworICAgICAgICBkdi5zZXRGbG9hdDMyKGluZGV4LCB2YWx1ZSwgZmFs
c2UpOworICAgIH0KKyAgICBub0lubGluZShzdG9yZUJpZ0VuZGlhbik7CisKKyAgICBmdW5jdGlv
biBzdG9yZShkdiwgaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRpYW4pIHsKKyAgICAgICAgZHYuc2V0
RmxvYXQzMihpbmRleCwgdmFsdWUsIGxpdHRsZUVuZGlhbik7CisgICAgfQorICAgIG5vSW5saW5l
KHN0b3JlKTsKKworICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7CisgICAgbGV0
IGFyciA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTsKKyAgICBsZXQgYml0cyA9IG5ldyBVaW50
MzJBcnJheShidWZmZXIpOworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhidWZmZXIpOworCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIHN0b3JlTGl0dGxl
RW5kaWFuKGR2LCAwLCAxLjUpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAxLjUpOworCisg
ICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCAxMjkxMi4xMjQxMjMyMTUxMjIpOworICAg
ICAgICBhc3NlcnQoYXJyWzBdID09PSAxMjkxMi4xMjQwMjM0Mzc1KTsKKyAgICAgICAgYXNzZXJ0
KGJpdHNbMF0gPT09IDB4NDY0OWMwN2YpOworCisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2
LCAwLCBOYU4pOworICAgICAgICBhc3NlcnQoaXNOYU4oYXJyWzBdKSk7CisgICAgICAgIGFzc2Vy
dChiaXRzWzBdID09PSAweDdGQzAwMDAwKTsKKworICAgICAgICBzdG9yZUxpdHRsZUVuZGlhbihk
diwgMCwgMi4zODc5MzkzZS0zOCk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDIuMzg3OTM5
MjYwNTkwNjYzZS0zOCk7CisgICAgICAgIGFzc2VydChiaXRzWzBdID09PSAweDAxMDIwMzA0KTsK
KworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgMi4zODc5MzkzZS0zOCk7CisgICAgICAg
IGFzc2VydChhcnJbMF0gPT09IDEuNTM5OTg5NjE0NDM5NTU4ZS0zNik7CisgICAgICAgIGFzc2Vy
dChiaXRzWzBdID09PSAweDA0MDMwMjAxKTsKKyAgICB9Cit9Cit0ZXN0NSgpOworCitmdW5jdGlv
biB0ZXN0NigpIHsKKyAgICBmdW5jdGlvbiBzdG9yZUxpdHRsZUVuZGlhbihkdiwgaW5kZXgsIHZh
bHVlKSB7CisgICAgICAgIGR2LnNldEZsb2F0NjQoaW5kZXgsIHZhbHVlLCB0cnVlKTsKKyAgICB9
CisgICAgbm9JbmxpbmUoc3RvcmVMaXR0bGVFbmRpYW4pOworCisgICAgZnVuY3Rpb24gc3RvcmVC
aWdFbmRpYW4oZHYsIGluZGV4LCB2YWx1ZSkgeworICAgICAgICBkdi5zZXRGbG9hdDY0KGluZGV4
LCB2YWx1ZSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShzdG9yZUJpZ0VuZGlhbik7CisK
KyAgICBmdW5jdGlvbiBzdG9yZShkdiwgaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRpYW4pIHsKKyAg
ICAgICAgZHYuc2V0RmxvYXQ2NChpbmRleCwgdmFsdWUsIGxpdHRsZUVuZGlhbik7CisgICAgfQor
ICAgIG5vSW5saW5lKHN0b3JlKTsKKworICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIo
OCk7CisgICAgbGV0IGFyciA9IG5ldyBGbG9hdDY0QXJyYXkoYnVmZmVyKTsKKyAgICBsZXQgZHYg
PSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkgeworICAgICAgICBzdG9yZUxpdHRsZUVuZGlhbihkdiwgMCwgTmFOKTsKKyAgICAgICAg
YXNzZXJ0KGlzTmFOKGFyclswXSkpOworCisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAw
LCAtMi41MDc1MTg3MDg0MTM1MTYyZSsyODQpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAt
Mi41MDc1MTg3MDg0MTM1MTYyZSsyODQpOworICAgICAgICBhc3NlcnQocmVhZEhleChkdiwgOCkg
PT09ICIweGZhZmFmYWZhZmFmYWZhZmEiKTsKKworICAgICAgICBzdG9yZShkdiwgMCwgMTI0LjU1
MywgdHJ1ZSk7CisgICAgICAgIGFzc2VydChyZWFkSGV4KGR2LCA4KSA9PT0gIjB4NDA1ZjIzNjQ1
YTFjYWMwOCIpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCBJbmZpbml0eSwgdHJ1ZSk7CisgICAg
ICAgIGFzc2VydChyZWFkSGV4KGR2LCA4KSA9PT0gIjB4N2ZmMDAwMDAwMDAwMDAwMCIpOworCisg
ICAgICAgIHN0b3JlKGR2LCAwLCBJbmZpbml0eSwgZmFsc2UpOworICAgICAgICBhc3NlcnQocmVh
ZEhleChkdiwgOCkgPT09ICIweDAwMDAwMDAwMDAwMGYwN2YiKTsKKworICAgICAgICBzdG9yZShk
diwgMCwgLUluZmluaXR5LCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0KHJlYWRIZXgoZHYsIDgpID09
PSAiMHhmZmYwMDAwMDAwMDAwMDAwIik7CisKKyAgICAgICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAs
IC0yLjUwNzUxODcwODQxMzUxNjJlKzI4NCk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IC0y
LjUwNzUxODcwODQxMzUxNjJlKzI4NCk7CisgICAgICAgIGFzc2VydChyZWFkSGV4KGR2LCA4KSA9
PT0gIjB4ZmFmYWZhZmFmYWZhZmFmYSIpOworCisgICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAw
LCAxMjQuNTUzKTsKKyAgICAgICAgYXNzZXJ0KHJlYWRIZXgoZHYsIDgpID09PSAiMHgwOGFjMWM1
YTY0MjM1ZjQwIik7CisgICAgfQorfQordGVzdDYoKTsKKworZnVuY3Rpb24gdGVzdDcoKSB7Cisg
ICAgZnVuY3Rpb24gc3RvcmUoZHYsIGluZGV4LCB2YWx1ZSkgeworICAgICAgICBkdi5zZXRJbnQ4
KGluZGV4LCB2YWx1ZSk7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3JlKTsKKworICAgIGxldCBi
dWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoMSk7CisgICAgbGV0IGFyciA9IG5ldyBVaW50OEFycmF5
KGJ1ZmZlcik7CisgICAgbGV0IGFycjIgPSBuZXcgSW50OEFycmF5KGJ1ZmZlcik7CisgICAgbGV0
IGR2ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwOyArK2kpIHsKKyAgICAgICAgc3RvcmUoZHYsIDAsIDB4ZmYpOworICAgICAgICBhc3NlcnQo
YXJyWzBdID09PSAweGZmKTsKKyAgICAgICAgYXNzZXJ0KGFycjJbMF0gPT09IC0xKTsKKworICAg
ICAgICBzdG9yZShkdiwgMCwgMHhmZjAwKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMCk7
CisgICAgICAgIGFzc2VydChhcnIyWzBdID09PSAwKTsKKworICAgICAgICBzdG9yZShkdiwgMCwg
LTEpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZmKTsKKyAgICAgICAgYXNzZXJ0KGFy
cjJbMF0gPT09IC0xKTsKKworICAgICAgICBzdG9yZShkdiwgMCwgMHgwYmFkYmVlZik7CisgICAg
ICAgIGFzc2VydChhcnJbMF0gPT09IDB4ZWYpOworICAgICAgICBhc3NlcnQoYXJyMlswXSA9PT0g
LTE3KTsKKyAgICB9Cit9Cit0ZXN0NygpOworCitmdW5jdGlvbiB0ZXN0OCgpIHsKKyAgICBmdW5j
dGlvbiBzdG9yZShkdiwgaW5kZXgsIHZhbHVlKSB7CisgICAgICAgIGR2LnNldEludDgoaW5kZXgs
IHZhbHVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoc3RvcmUpOworCisgICAgbGV0IGJ1ZmZlciA9
IG5ldyBBcnJheUJ1ZmZlcigxKTsKKyAgICBsZXQgYXJyID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVy
KTsKKyAgICBsZXQgYXJyMiA9IG5ldyBJbnQ4QXJyYXkoYnVmZmVyKTsKKyAgICBsZXQgZHYgPSBu
ZXcgRGF0YVZpZXcoYnVmZmVyKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsr
aSkgeworICAgICAgICBzdG9yZShkdiwgMCwgMHhmZik7CisgICAgICAgIGFzc2VydChhcnJbMF0g
PT09IDB4ZmYpOworICAgICAgICBhc3NlcnQoYXJyMlswXSA9PT0gLTEpOworCisgICAgICAgIHN0
b3JlKGR2LCAwLCAweGZmMDApOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAwKTsKKyAgICAg
ICAgYXNzZXJ0KGFycjJbMF0gPT09IDApOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAtMSk7Cisg
ICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4ZmYpOworICAgICAgICBhc3NlcnQoYXJyMlswXSA9
PT0gLTEpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAweDBiYWRiZWVmKTsKKyAgICAgICAgYXNz
ZXJ0KGFyclswXSA9PT0gMHhlZik7CisgICAgICAgIGFzc2VydChhcnIyWzBdID09PSAtMTcpOwor
ICAgIH0KK30KK3Rlc3Q4KCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9kYXRhdmlldy1qaXQuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZGF0YXZpZXctaml0LmpzCShub25leGlzdGVu
dCkKKysrIEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3LWppdC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE4MyBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkISIpOworfQorCisvLyBPT1BTOiBhZGQgdW5zaWduZWQgdGVz
dHMhCisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGZ1bmN0aW9uIGJpZ0VuZGlhbihvLCBpKSB7
CisgICAgICAgIHJldHVybiBvLmdldEludDMyKGksIGZhbHNlKTsKKyAgICB9CisgICAgbm9Jbmxp
bmUoYmlnRW5kaWFuKTsKKyAgICBmdW5jdGlvbiBsaXR0bGVFbmRpYW4obywgaSkgeworICAgICAg
ICByZXR1cm4gby5nZXRJbnQzMihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUobGl0dGxl
RW5kaWFuKTsKKyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAgICAgIHJldHVy
biBvLmdldEludDMyKGksIGIpOworICAgIH0KKyAgICBub0lubGluZShiaUVuZGlhbik7CisKKyAg
ICBsZXQgYWIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7CisgICAgbGV0IHRhID0gbmV3IEludDMyQXJy
YXkoYWIpOworICAgIHRhWzBdID0gMHgwMTAyMDMwNDsKKyAgICBsZXQgZHYgPSBuZXcgRGF0YVZp
ZXcoYWIpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAweDA0MDMwMjAxKTsKKyAgICAgICAgYXNzZXJ0
KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAxMDIwMzA0
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxz
ZSkgPT09IDB4MDQwMzAyMDEpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDA7ICsraSkgeworICAgICAgICBhc3NlcnQoYmlnRW5kaWFuKGR2LCAwKSA9PT0gMHgwNDAzMDIw
MSk7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYsIDApID09PSAweDAxMDIwMzA0KTsK
KyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCB0
cnVlKSA9PT0gMHgwMTAyMDMwNCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChi
aUVuZGlhbihkdiwgMCwgZmFsc2UpID09PSAweDA0MDMwMjAxKTsKKyAgICB9CisKKyAgICAvLyBN
YWtlIHN1cmUgd2UgZ2V0IHRoZSByaWdodCBzaWduLgorICAgIHRhWzBdID0gLTMyMzYxMzg2OyAv
LyAweGZlMTIzNDU2CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAg
ICAgIGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAweDU2MzQxMmZlKTsKKyAgICAgICAgYXNz
ZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IC0zMjM2MTM4Nik7CisgICAgICAgIGlmIChpICUg
MikKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IC0zMjM2MTM4
Nik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgZmFs
c2UpID09PSAweDU2MzQxMmZlKTsKKyAgICB9CisKKyAgICAvLyAtMjE0NjI5MDYwMiA9PSAoaW50
KTB4ODAxMjM0NTYKKyAgICB0YVswXSA9IDB4NTYzNDEyODA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAt
MjE0NjI5MDYwMik7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYsIDApID09PSAweDU2
MzQxMjgwKTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFu
KGR2LCAwLCB0cnVlKSA9PT0gMHg1NjM0MTI4MCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGFzc2VydChiaUVuZGlhbihkdiwgMCwgZmFsc2UpID09PSAtMjE0NjI5MDYwMik7CisgICAgfQor
fQorLy90ZXN0MSgpOworCitmdW5jdGlvbiB0ZXN0MigpIHsKKyAgICBmdW5jdGlvbiBiaWdFbmRp
YW4obywgaSkgeworICAgICAgICByZXR1cm4gby5nZXRJbnQxNihpLCBmYWxzZSk7CisgICAgfQor
ICAgIG5vSW5saW5lKGJpZ0VuZGlhbik7CisgICAgZnVuY3Rpb24gbGl0dGxlRW5kaWFuKG8sIGkp
IHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0SW50MTYoaSwgdHJ1ZSk7CisgICAgfQorICAgIG5vSW5s
aW5lKGxpdHRsZUVuZGlhbik7CisgICAgZnVuY3Rpb24gYmlFbmRpYW4obywgaSwgYikgeworICAg
ICAgICByZXR1cm4gby5nZXRJbnQxNihpLCBiKTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlFbmRp
YW4pOworCisgICAgbGV0IGFiID0gbmV3IEFycmF5QnVmZmVyKDIpOworICAgIGxldCB0YSA9IG5l
dyBJbnQxNkFycmF5KGFiKTsKKyAgICB0YVswXSA9IDB4MDEwMjsKKyAgICBsZXQgZHYgPSBuZXcg
RGF0YVZpZXcoYWIpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Cisg
ICAgICAgIGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAweDAyMDEpOworICAgICAgICBhc3Nl
cnQobGl0dGxlRW5kaWFuKGR2LCAwKSA9PT0gMHgwMTAyKTsKKyAgICAgICAgaWYgKGkgJSAyKQor
ICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVlKSA9PT0gMHgwMTAyKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09
IDB4MDIwMSk7CisgICAgfQorCisgICAgLy8gQ2hlY2sgc2lnbi4KKyAgICB0YVswXSA9IC01MTI7
IC8vIDB4ZmUwMAorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAg
ICBhc3NlcnQoYmlnRW5kaWFuKGR2LCAwKSA9PT0gMHgwMGZlKTsKKyAgICAgICAgYXNzZXJ0KGxp
dHRsZUVuZGlhbihkdiwgMCkgPT09IC01MTIpOworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAg
ICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAtNTEyKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IDB4MDBmZSk7
CisgICAgfQorCisgICAgLy8gQ2hlY2sgc2lnbiBleHRlbnNpb24uCisgICAgdGFbMF0gPSAweDAw
ZmU7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2Vy
dChiaWdFbmRpYW4oZHYsIDApID09PSAtNTEyKTsKKyAgICAgICAgYXNzZXJ0KGxpdHRsZUVuZGlh
bihkdiwgMCkgPT09IDB4MDBmZSk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFz
c2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IDB4MDBmZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgZmFsc2UpID09PSAtNTEyKTsKKyAgICB9
Cit9CisvL3Rlc3QyKCk7CisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIGZ1bmN0aW9uIGJpZ0Vu
ZGlhbihvLCBpKSB7CisgICAgICAgIHJldHVybiBvLmdldEZsb2F0MzIoaSwgZmFsc2UpOworICAg
IH0KKyAgICBub0lubGluZShiaWdFbmRpYW4pOworICAgIGZ1bmN0aW9uIGxpdHRsZUVuZGlhbihv
LCBpKSB7CisgICAgICAgIHJldHVybiBvLmdldEZsb2F0MzIoaSwgdHJ1ZSk7CisgICAgfQorICAg
IG5vSW5saW5lKGxpdHRsZUVuZGlhbik7CisgICAgZnVuY3Rpb24gYmlFbmRpYW4obywgaSwgYikg
eworICAgICAgICByZXR1cm4gby5nZXRGbG9hdDMyKGksIGIpOworICAgIH0KKyAgICBub0lubGlu
ZShiaUVuZGlhbik7CisKKyAgICBsZXQgYWIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7CisgICAgbGV0
IHRhID0gbmV3IEZsb2F0MzJBcnJheShhYik7CisgICAgY29uc3Qgbm9ybWFsID0gMTI5MTIuNDAz
OyAvLyAweDQ2NDljMTlkCisgICAgY29uc3Qgbm9ybWFsQXNEb3VibGUgPSAxMjkxMi40MDMzMjAz
MTI1MDA7CisgICAgLy85ZGMxNDk0NiAKKyAgICBjb25zdCBmbGlwcGVkID0gLTUuMTE2MjQzNzU4
OTkxODg4NGUtMjE7CisgICAgdGFbMF0gPSBub3JtYWw7CisKKyAgICBsZXQgZHYgPSBuZXcgRGF0
YVZpZXcoYWIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAg
ICBhc3NlcnQoYmlnRW5kaWFuKGR2LCAwKSA9PT0gZmxpcHBlZCk7CisgICAgICAgIGFzc2VydChs
aXR0bGVFbmRpYW4oZHYsIDApID09PSAxMjkxMi40MDMzMjAzMTI1MDApOworICAgICAgICBpZiAo
aSAlIDIpCisgICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSBub3Jt
YWxBc0RvdWJsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlhbihk
diwgMCwgZmFsc2UpID09PSBmbGlwcGVkKTsKKyAgICB9Cit9CisvL3Rlc3QzKCk7CisKK2Z1bmN0
aW9uIHRlc3Q0KCkgeworICAgIGZ1bmN0aW9uIGJpZ0VuZGlhbihvLCBpKSB7CisgICAgICAgIHJl
dHVybiBvLmdldFVpbnQzMihpLCBmYWxzZSk7CisgICAgfQorICAgIG5vSW5saW5lKGJpZ0VuZGlh
bik7CisgICAgZnVuY3Rpb24gbGl0dGxlRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8u
Z2V0VWludDMyKGksIHRydWUpOworICAgIH0KKyAgICBub0lubGluZShsaXR0bGVFbmRpYW4pOwor
ICAgIGZ1bmN0aW9uIGJpRW5kaWFuKG8sIGksIGIpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0VWlu
dDMyKGksIGIpOworICAgIH0KKyAgICBub0lubGluZShiaUVuZGlhbik7CisKKyAgICBsZXQgYWIg
PSBuZXcgQXJyYXlCdWZmZXIoNCk7CisgICAgbGV0IHRhID0gbmV3IFVpbnQzMkFycmF5KGFiKTsK
KyAgICB0YVswXSA9IDB4YTBiMGQwZjA7CisKKyAgICBsZXQgZHYgPSBuZXcgRGF0YVZpZXcoYWIp
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQo
YmlnRW5kaWFuKGR2LCAwKSA9PT0gMHhmMGQwYjBhMCk7CisgICAgICAgIGFzc2VydChsaXR0bGVF
bmRpYW4oZHYsIDApID09PSAweGEwYjBkMGYwKTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAg
ICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVlKSA9PT0gMHhhMGIwZDBmMCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgZmFsc2UpID09PSAw
eGYwZDBiMGEwKTsKKyAgICB9Cit9Cit0ZXN0NCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAko
cmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDgsNiArNDA4LDIzIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIucG9wY250X3JyKHNyYywgZHN0KTsKICAgICB9
CiAKKyAgICB2b2lkIGJ5dGVTd2FwMzIoUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5ic3dhcGxfcihkc3QpOworICAgIH0KKworICAgIHZvaWQgYnl0ZVN3YXAxNihS
ZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJvbHdfaThyKDgsIGRz
dCk7CisgICAgfQorCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGJ5dGVTd2FwNjQoUmVnaXN0
ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ic3dhcHFfcihkc3QpOworICAg
IH0KKyNlbmRpZgorCiAgICAgLy8gT25seSB1c2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgogICAg
IHZvaWQgaWxsZWdhbEluc3RydWN0aW9uKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIzNDg3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzNyw2ICszMzcsNyBAQCBwcml2YXRlOgogICAgICAgICBPUDJfWEFERGIgICAg
ICAgICAgID0gMHhDMCwKICAgICAgICAgT1AyX1hBREQgICAgICAgICAgICA9IDB4QzEsCiAgICAg
ICAgIE9QMl9QRVhUUldfR2RVZEliICAgPSAweEM1LAorICAgICAgICBPUDJfQlNXQVAgICAgICAg
ICAgID0gMHhDOCwKICAgICAgICAgT1AyX1BTTExRX1VkcUliICAgICA9IDB4NzMsCiAgICAgICAg
IE9QMl9QU1JMUV9VZHFJYiAgICAgPSAweDczLAogICAgICAgICBPUDJfUE9SX1ZkcVdkcSAgICAg
ID0gMFhFQiwKQEAgLTE2MzgsNiArMTYzOSwxOCBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAK
KyAgICB2b2lkIGJzd2FwbF9yKFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvQnl0ZU9wKE9QMl9CU1dBUCwgZHN0KTsKKyAgICB9CisKKyNpZiBDUFUoWDg2XzY0
KQorICAgIHZvaWQgYnN3YXBxX3IoUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3A2NChPUDJfQlNXQVAsIGRzdCk7CisgICAgfQorI2VuZGlmCisKICAg
ICB2b2lkIHR6Y250X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKQEAgLTE3MDEsNiArMTcxNCwx
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwog
ICAgICAgICB9CiAgICAgfQorCisgICAgdGVtcGxhdGU8R3JvdXBPcGNvZGVJRCBvcD4KKyAgICB2
b2lkIHNoaWZ0SW5zdHJ1Y3Rpb24xNihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYg
KGltbSA9PSAxKQorICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9F
djEsIG9wLCBkc3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDJfRXZJYiwgb3AsIGRzdCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0KKyAgICB9CiBwdWJsaWM6CiAKICAgICB2b2lk
IHNhcmxfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTc1Myw2ICsxNzc4LDExIEBA
IHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9FdkNMLCBH
Uk9VUDJfT1BfUk9MLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgcm9sd19pOHIoaW50IGltbSwg
UmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBzaGlmdEluc3RydWN0aW9uMTY8R1JPVVAy
X09QX1JPTD4oaW1tLCBkc3QpOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiBwcml2YXRlOgog
ICAgIHRlbXBsYXRlPEdyb3VwT3Bjb2RlSUQgb3A+CkBAIC00MzMzLDYgKzQzNjMsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CiAgICAg
ICAgIH0KIAorICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBp
bnQgcmVnKQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldy
aXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRl
ZCgwLCAwLCByZWcpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZ
VEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSAr
IChyZWcgJiA3KSk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29CeXRl
T3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7CiAgICAg
ICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOwpA
QCAtNDUwNiw2ICs0NTQ0LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0ZXIubWVtb3J5
TW9kUk1BZGRyKHJlZywgYWRkcmVzcyk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIHR3b0J5
dGVPcDY0KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7Cisg
ICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcoMCwgMCwgcmVnKTsKKyAgICAgICAgICAgIHdyaXRl
ci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIu
cHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUgKyAocmVnICYgNykpOworICAgICAgICB9CisKICAgICAg
ICAgdm9pZCB0d29CeXRlT3A2NChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdp
c3RlcklEIHJtKQogICAgICAgICB7CiAgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZl
cldyaXRlciB3cml0ZXIobV9idWZmZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0RhdGFGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRGF0YUZvcm1hdC5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0
Tm9uZSA9IDAsCiAgICAgRGF0YUZvcm1hdEludDMyID0gMSwKLSAgICBEYXRhRm9ybWF0SW50NTIg
PSAyLCAvLyBJbnQ1MidzIGFyZSBsZWZ0LXNoaWZ0ZWQgYnkgMTYgYnkgZGVmYXVsdC4KKyAgICBE
YXRhRm9ybWF0SW50NTIgPSAyLCAvLyBJbnQ1MidzIGFyZSBsZWZ0LXNoaWZ0ZWQgYnkgMTIgYnkg
ZGVmYXVsdC4KICAgICBEYXRhRm9ybWF0U3RyaWN0SW50NTIgPSAzLCAvLyAiU3RyaWN0IiBJbnQ1
MiBtZWFucyBpdCdzIG5vdCBzaGlmdGVkLgogICAgIERhdGFGb3JtYXREb3VibGUgPSA0LAogICAg
IERhdGFGb3JtYXRCb29sZWFuID0gNSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAzLDYgKzIwMywxMSBAQCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVh
bSYgb3V0U3RyCiAgICAgICAgICAgICAgICAgc3RyT3V0LnByaW50KCJEZXJpdmVkQXJyYXkiKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAg
ICAgICAgICBpZiAodmFsdWUgJiBTcGVjRGF0YVZpZXdPYmplY3QpCisgICAgICAgICAgICAgICAg
c3RyT3V0LnByaW50KCJEYXRhVmlldyIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGlzVG9wID0gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKHZhbHVlICYgU3Bl
Y1N0cmluZykgPT0gU3BlY1N0cmluZykKQEAgLTQzMiw2ICs0MzcsOSBAQCBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oCiAKICAgICBpZiAoY2xhc3NJbmZvID09IFByb3h5
T2JqZWN0OjppbmZvKCkpCiAgICAgICAgIHJldHVybiBTcGVjUHJveHlPYmplY3Q7CisKKyAgICBp
ZiAoY2xhc3NJbmZvID09IEpTRGF0YVZpZXc6OmluZm8oKSkKKyAgICAgICAgcmV0dXJuIFNwZWNE
YXRhVmlld09iamVjdDsKICAgICAKICAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoSlNG
dW5jdGlvbjo6aW5mbygpKSkgewogICAgICAgICBpZiAoY2xhc3NJbmZvID09IEpTQm91bmRGdW5j
dGlvbjo6aW5mbygpKQpAQCAtNTU5LDYgKzU2Nyw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0
aW9uRnJvbUpTVHlwZShKU1QKICAgICAgICAgcmV0dXJuIFNwZWNXZWFrTWFwT2JqZWN0OwogICAg
IGNhc2UgSlNXZWFrU2V0VHlwZToKICAgICAgICAgcmV0dXJuIFNwZWNXZWFrU2V0T2JqZWN0Owor
ICAgIGNhc2UgRGF0YVZpZXdUeXBlOgorICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAg
LTc1MCw2ICs3NjAsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21TdHJpbmcoY29u
CiAgICAgICAgIHJldHVybiBTcGVjUHJveHlPYmplY3Q7CiAgICAgaWYgKCFzdHJuY21wKHNwZWN1
bGF0aW9uLCAiU3BlY0Rlcml2ZWRBcnJheSIsIHN0cmxlbigiU3BlY0Rlcml2ZWRBcnJheSIpKSkK
ICAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVkQXJyYXk7CisgICAgaWYgKCFzdHJuY21wKHNwZWN1
bGF0aW9uLCAiU3BlY0RhdGFWaWV3T2JqZWN0Iiwgc3RybGVuKCJTcGVjRGF0YVZpZXdPYmplY3Qi
KSkpCisgICAgICAgIHJldHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7CiAgICAgaWYgKCFzdHJuY21w
KHNwZWN1bGF0aW9uLCAiU3BlY09iamVjdE90aGVyIiwgc3RybGVuKCJTcGVjT2JqZWN0T3RoZXIi
KSkpCiAgICAgICAgIHJldHVybiBTcGVjT2JqZWN0T3RoZXI7CiAgICAgaWYgKCFzdHJuY21wKHNw
ZWN1bGF0aW9uLCAiU3BlY09iamVjdCIsIHN0cmxlbigiU3BlY09iamVjdCIpKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCShyZXZp
c2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNiBAQCBzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY1dlYWtTZXRPCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y1Byb3h5T2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjE7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIFByb3h5IG9iamVjdCBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Rlcml2ZWRBcnJheSAgICAgICAgICAgICAgICAg
ICAgICA9IDF1bGwgPDwgMjI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIERlcml2ZWRBcnJheSBvYmpl
Y3QuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgICAg
ICAgICAgICAgICAgICA9IDF1bGwgPDwgMjM7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3Qg
YnV0IG5vdCBKU0ZpbmFsT2JqZWN0LCBKU0FycmF5LCBvciBKU0Z1bmN0aW9uLgotc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRB
cnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNw
ZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY01hcE9iamVjdCB8IFNwZWNT
ZXRPYmplY3QgfCBTcGVjV2Vha01hcE9iamVjdCB8IFNwZWNXZWFrU2V0T2JqZWN0IHwgU3BlY1By
b3h5T2JqZWN0IHwgU3BlY0Rlcml2ZWRBcnJheSB8IFNwZWNPYmplY3RPdGhlcjsgLy8gQml0bWFz
ayB1c2VkIGZvciB0ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KIHN0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgICAgICAgICAg
ICAgICAgID0gMXVsbCA8PCAyNDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcsIGFuZCBp
dCdzIGFuIGlkZW50aWZpZXIuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmlu
Z1ZhciAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjU7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBub3QgYW4gaWRlbnRpZmllci4KIHN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
U3BlY1N0cmluZ0lkZW50IHwgU3BlY1N0cmluZ1ZhcjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNT
dHJpbmcuCkBAIC05Myw3ICs5Miw5IEBAIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
T3RoZXIgICAKIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTWlzYyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gU3BlY0Jvb2xlYW4gfCBTcGVjT3RoZXI7IC8vIEl0J3MgZGVm
aW5pdGVseSBlaXRoZXIgYSBib29sZWFuLCBOdWxsLCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0VtcHR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDF1bGwgPDwgMzc7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCiBz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDF1bGwgPDwgMzg7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJpZ0ludC4KK3N0YXRp
YyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMXVsbCA8PCAzOTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4K
IHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjUHJpbWl0aXZlICAgICAgICAgICAgICAg
ICAgICAgICAgID0gU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQnl0ZWNvZGVOdW1iZXIg
fCBTcGVjTWlzYyB8IFNwZWNCaWdJbnQ7IC8vIEl0J3MgYW55IG5vbi1PYmplY3QgSlNWYWx1ZS4K
K3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwg
U3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1
bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNNYXBPYmpl
Y3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVj
dCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIg
fCBTcGVjRGF0YVZpZXdPYmplY3Q7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55
IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBTcGVj
U3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjQmlnSW50OyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBKU0NlbGwuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hl
YXBUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0J5dGVjb2Rl
TnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQg
Zm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgICAgICAgICAgICAgICAgICA9IFNw
ZWNIZWFwVG9wIHwgU3BlY0VtcHR5OyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhj
ZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLiBDb3JyZXNwb25k
cyB0byB3aGF0IGNvdWxkIGJlIGZvdW5kIGluIGEgYnl0ZWNvZGUgbG9jYWwuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
NzAsOSArMzc3MCwzMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgIGZpbHRlcihub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGwpOwogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgICAgIAorCisgICAgY2FzZSBEYXRhVmlld0dldEludDogeworICAgICAg
ICBEYXRhVmlld0RhdGEgZGF0YSA9IG5vZGUtPmRhdGFWaWV3RGF0YSgpOworICAgICAgICBpZiAo
ZGF0YS5ieXRlU2l6ZSA8IDQpCisgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgU3BlY0ludDMyT25seSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGRh
dGEuYnl0ZVNpemUgPT0gNCk7CisgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAg
ICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5v
ZGUsIFNwZWNBbnlJbnQpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGNhc2UgRGF0YVZpZXdHZXRGbG9hdDogeworICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0Z1bGxEb3VibGUpOwogICAgICAgICBicmVhazsKKyAgICB9CiAKKyAgICBjYXNl
IERhdGFWaWV3U2V0OiB7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2Fz
ZSBVbnJlYWNoYWJsZToKICAgICAgICAgLy8gSXQgbWF5IGJlIHRoYXQgZHVyaW5nIGEgcHJldmlv
dXMgcnVuIG9mIEFJIHdlIHByb3ZlZCB0aGF0IHNvbWV0aGluZyB3YXMgdW5yZWFjaGFibGUsIGJ1
dAogICAgICAgICAvLyBkdXJpbmcgdGhpcyBydW4gb2YgQUkgd2UgZm9yZ2V0IHRoYXQgaXQncyB1
bnJlYWNoYWJsZS4gQUkncyBwcm9vZnMgZG9uJ3QgaGF2ZSB0byBnZXQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzA3OSw2ICszMDc5LDE4MyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAor
ICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ4OgorICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50ODoKKyAg
ICBjYXNlIERhdGFWaWV3R2V0SW50MTY6CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQxNjoKKyAg
ICBjYXNlIERhdGFWaWV3R2V0SW50MzI6CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQzMjoKKyAg
ICBjYXNlIERhdGFWaWV3R2V0RmxvYXQzMjoKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ2NDog
eworI2lmIENQVShCSUdfRU5ESUFOKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwor
ICAgICAgICBpZiAoIWlzNjRCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCAyKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisKKyAgICAgICAgdWludDhfdCBieXRl
U2l6ZTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSBEYXRhVmlld0dldEludDsKKyAgICAgICAgYm9v
bCBpc1NpZ25lZCA9IGZhbHNlOworICAgICAgICBzd2l0Y2ggKGludHJpbnNpYykgeworICAgICAg
ICBjYXNlIERhdGFWaWV3R2V0SW50ODoKKyAgICAgICAgICAgIGlzU2lnbmVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIERhdGFWaWV3R2V0VWludDg6Cisg
ICAgICAgICAgICBieXRlU2l6ZSA9IDE7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIERhdGFWaWV3R2V0SW50MTY6CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldFVpbnQxNjoKKyAg
ICAgICAgICAgIGJ5dGVTaXplID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgRGF0YVZpZXdHZXRJbnQzMjoKKyAgICAgICAgICAgIGlzU2lnbmVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIERhdGFWaWV3R2V0VWludDMyOgorICAg
ICAgICAgICAgYnl0ZVNpemUgPSA0OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBEYXRhVmlld0dldEZsb2F0MzI6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDQ7CisgICAgICAg
ICAgICBvcCA9IERhdGFWaWV3R2V0RmxvYXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBEYXRhVmlld0dldEZsb2F0NjQ6CisgICAgICAgICAgICBieXRlU2l6ZSA9IDg7CisgICAg
ICAgICAgICBvcCA9IERhdGFWaWV3R2V0RmxvYXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3Rh
dGU7CisgICAgICAgIE5vZGUqIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKKyAgICAgICAg
aWYgKGJ5dGVTaXplID4gMSkgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzIDwgMykKKyAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IEZhbHNlVHJpU3Rh
dGU7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGls
ZCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgyLCByZWdpc3Rlck9mZnNldCkpOwor
ICAgICAgICAgICAgICAgIGlmIChsaXR0bGVFbmRpYW5DaGlsZC0+aGFzQ29uc3RhbnQoKSkgewor
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbGl0dGxlRW5kaWFuQ2hpbGQt
PmNvbnN0YW50KCktPnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFu
ID0gY29uc3RhbnQucHVyZVRvQm9vbGVhbigpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNM
aXR0bGVFbmRpYW4gIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxp
dHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgeyB9OworICAgICAg
ICBkYXRhLmlzTGl0dGxlRW5kaWFuID0gaXNMaXR0bGVFbmRpYW47CisgICAgICAgIGRhdGEuaXNT
aWduZWQgPSBpc1NpZ25lZDsKKyAgICAgICAgZGF0YS5ieXRlU2l6ZSA9IGJ5dGVTaXplOworCisg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksCisgICAgICAgICAgICBh
ZGRUb0dyYXBoKG9wLCBPcEluZm8oZGF0YS5hc1F1YWRXb3JkKSwgT3BJbmZvKHByZWRpY3Rpb24p
LCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0
KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSksIGxpdHRsZUVu
ZGlhbkNoaWxkKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNhc2UgRGF0
YVZpZXdTZXRJbnQ4OgorICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50ODoKKyAgICBjYXNlIERhdGFW
aWV3U2V0SW50MTY6CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQxNjoKKyAgICBjYXNlIERhdGFW
aWV3U2V0SW50MzI6CisgICAgY2FzZSBEYXRhVmlld1NldFVpbnQzMjoKKyAgICBjYXNlIERhdGFW
aWV3U2V0RmxvYXQzMjoKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQ2NDogeworI2lmIENQVShC
SUdfRU5ESUFOKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAgICAgICBpZiAo
IWlzNjRCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCAzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisKKyAgICAgICAgdWludDhfdCBieXRlU2l6ZTsKKyAgICAg
ICAgYm9vbCBpc0Zsb2F0aW5nUG9pbnQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBpc1NpZ25lZCA9
IGZhbHNlOworICAgICAgICBzd2l0Y2ggKGludHJpbnNpYykgeworICAgICAgICBjYXNlIERhdGFW
aWV3U2V0SW50ODoKKyAgICAgICAgICAgIGlzU2lnbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIEZB
TExUSFJPVUdIOworICAgICAgICBjYXNlIERhdGFWaWV3U2V0VWludDg6CisgICAgICAgICAgICBi
eXRlU2l6ZSA9IDE7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERhdGFWaWV3
U2V0SW50MTY6CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxM
VEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRhVmlld1NldFVpbnQxNjoKKyAgICAgICAgICAgIGJ5
dGVTaXplID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0YVZpZXdT
ZXRJbnQzMjoKKyAgICAgICAgICAgIGlzU2lnbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIEZBTExU
SFJPVUdIOworICAgICAgICBjYXNlIERhdGFWaWV3U2V0VWludDMyOgorICAgICAgICAgICAgYnl0
ZVNpemUgPSA0OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmlld1Nl
dEZsb2F0MzI6CisgICAgICAgICAgICBpc0Zsb2F0aW5nUG9pbnQgPSB0cnVlOworICAgICAgICAg
ICAgYnl0ZVNpemUgPSA0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZp
ZXdTZXRGbG9hdDY0OgorICAgICAgICAgICAgaXNGbG9hdGluZ1BvaW50ID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJ5dGVTaXplID0gODsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQor
CisgICAgICAgIFRyaVN0YXRlIGlzTGl0dGxlRW5kaWFuID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICAg
ICAgTm9kZSogbGl0dGxlRW5kaWFuQ2hpbGQgPSBudWxscHRyOworICAgICAgICBpZiAoYnl0ZVNp
emUgPiAxKSB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCA0
KQorICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gZ2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDMsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAg
ICAgICAgaWYgKGxpdHRsZUVuZGlhbkNoaWxkLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBsaXR0bGVFbmRpYW5DaGlsZC0+Y29uc3RhbnQo
KS0+dmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBjb25zdGFu
dC5wdXJlVG9Cb29sZWFuKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0xpdHRsZUVuZGlh
biAhPSBNaXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgbGl0dGxlRW5kaWFu
Q2hpbGQgPSBudWxscHRyOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICBpc0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSB7IH07CisgICAgICAgIGRhdGEuaXNM
aXR0bGVFbmRpYW4gPSBpc0xpdHRsZUVuZGlhbjsKKyAgICAgICAgZGF0YS5pc1NpZ25lZCA9IGlz
U2lnbmVkOworICAgICAgICBkYXRhLmJ5dGVTaXplID0gYnl0ZVNpemU7CisgICAgICAgIGRhdGEu
aXNGbG9hdGluZ1BvaW50ID0gaXNGbG9hdGluZ1BvaW50OworCisgICAgICAgIGFkZFZhckFyZ0No
aWxkKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkpKTsK
KyAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEs
IHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoMiwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgIGFkZFZhckFy
Z0NoaWxkKGxpdHRsZUVuZGlhbkNoaWxkKTsKKworICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZh
ckFyZywgRGF0YVZpZXdTZXQsIE9wSW5mbyhkYXRhLmFzUXVhZFdvcmQpLCBPcEluZm8oKSk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGNhc2UgSGFzT3duUHJvcGVydHlJbnRy
aW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NTgsNyArMTc1OCwy
MSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBO
dW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6CiAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSwgbm9kZS0+dmFsaWRSYWRpeENvbnN0YW50KCkpKTsKICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKKworICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICBjYXNlIERhdGFWaWV3
R2V0SW50OiB7CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIHJlYWQoVHlwZWRB
cnJheVByb3BlcnRpZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEYXRh
Vmlld1NldDogeworICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICByZWFkKFR5cGVk
QXJyYXlQcm9wZXJ0aWVzKTsKKyAgICAgICAgd3JpdGUoVHlwZWRBcnJheVByb3BlcnRpZXMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzE4LDYgKzMxOCw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRGF0YVZpZXdHZXRJ
bnQ6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgorICAgIGNhc2UgRGF0YVZpZXdTZXQ6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgUHVzaFdpdGhTY29wZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjM0
ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjEwNCw2ICsyMTA0LDU5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBm
aXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisg
ICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9h
dDogeworICAgICAgICAgICAgZml4RWRnZTxEYXRhVmlld09iamVjdFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9v
bGVhblVzZT4obm9kZS0+Y2hpbGQzKCkpOworCisgICAgICAgICAgICBEYXRhVmlld0RhdGEgZGF0
YSA9IG5vZGUtPmRhdGFWaWV3RGF0YSgpOworCisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBEYXRhVmlld0dldEludCkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+ZGF0YVZp
ZXdEYXRhKCkuYnl0ZVNpemUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAg
ICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJl
c3VsdEludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSA0OgorICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkgCisgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDMyKTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVz
dWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBEYXRhVmlld1NldDogeworICAgICAgICAgICAgRGF0YVZpZXdEYXRh
IGRhdGEgPSBub2RlLT5kYXRhVmlld0RhdGEoKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8RGF0YVZp
ZXdPYmplY3RVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAg
ICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEJvb2xlYW5Vc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBFZGdlJiB2YWx1ZVRvU3RvcmUgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDIpOworICAgICAgICAgICAgaWYgKGRhdGEuaXNGbG9hdGluZ1BvaW50KQorICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPih2YWx1ZVRvU3RvcmUpOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLmJ5dGVTaXplKSB7Cisg
ICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4odmFsdWVUb1N0b3JlKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAg
ICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KHZhbHVlVG9TdG9yZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KHZhbHVlVG9TdG9yZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBu
b2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBj
YXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJl
dmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDE5IEBAIHN0cnVjdCBOZXdBcnJheUJ1ZmZlckRh
dGEgewogc3RhdGljX2Fzc2VydChzaXplb2YoSW5kZXhpbmdUeXBlKSA8PSBzaXplb2YodW5zaWdu
ZWQpLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihOZXdBcnJheUJ1ZmZlckRhdGEpID09IHNp
emVvZih1aW50NjRfdCksICIiKTsKIAorc3RydWN0IERhdGFWaWV3RGF0YSB7CisgICAgdW5pb24g
eworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDhfdCBieXRlU2l6ZTsKKyAgICAg
ICAgICAgIGJvb2wgaXNTaWduZWQ7CisgICAgICAgICAgICBib29sIGlzRmxvYXRpbmdQb2ludDsg
Ly8gVXNlZCBmb3IgdGhlIERhdGFWaWV3U2V0IG5vZGUuCisgICAgICAgICAgICBUcmlTdGF0ZSBp
c0xpdHRsZUVuZGlhbjsKKyAgICAgICAgfTsKKyAgICAgICAgdWludDY0X3QgYXNRdWFkV29yZDsK
KyAgICB9OworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKERhdGFWaWV3RGF0YSkgPT0gc2l6ZW9m
KHVpbnQ2NF90KSwgIiIpOworCiBzdHJ1Y3QgQnJhbmNoVGFyZ2V0IHsKICAgICBCcmFuY2hUYXJn
ZXQoKQogICAgICAgICA6IGJsb2NrKDApCkBAIC0xNjU5LDYgKzE2NzIsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICAgICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9t
V2Vha01hcEdldDoKICAgICAgICAgY2FzZSBUb1RoaXM6CisgICAgICAgIGNhc2UgRGF0YVZpZXdH
ZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjE0Myw2ICsyMTU4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVu
c2lnbmVkPigpOwogICAgIH0KIAorICAgIERhdGFWaWV3RGF0YSBkYXRhVmlld0RhdGEoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRGF0YVZpZXdHZXRJbnQgfHwgb3AoKSA9PSBEYXRh
Vmlld0dldEZsb2F0IHx8IG9wKCkgPT0gRGF0YVZpZXdTZXQpOworICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PERhdGFWaWV3RGF0YT4obV9vcEluZm8uYXM8dWludDY0X3Q+KCkpOworICAgIH0K
KwogICAgIGJvb2wgc2hvdWxkR2VuZXJhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fcmVm
Q291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZp
c2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2ICs0ODMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKEZpbHRlckdldEJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhGaWx0ZXJJbkJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhGaWx0ZXJQdXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAg
LyogRGF0YSB2aWV3IGFjY2VzcyAqLyBcCisgICAgbWFjcm8oRGF0YVZpZXdHZXRJbnQsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIC8qIFRoZSBnZXRzIGFyZSBtdXN0IGdlbmVyYXRl
IGZvciBub3cgYmVjYXVzZSB0aGV5IGRvIGJvdW5kcyBjaGVja3MgKi8gXAorICAgIG1hY3JvKERh
dGFWaWV3R2V0RmxvYXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0RG91YmxlKSBcCisg
ICAgbWFjcm8oRGF0YVZpZXdTZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUhhc1ZhckFyZ3MpIFwKIAogCiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEgbW9ub3Rv
bmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBlcywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjIxLDcgKzYyMSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRh
Vmlld1NldDogeworICAgICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBub2RlLT5kYXRhVmll
d0RhdGEoKTsKKyAgICAgICAgICAgIGlmIChkYXRhLmlzRmxvYXRpbmdQb2ludCkKKyAgICAgICAg
ICAgICAgICBtX2dyYXBoLnZvdGVOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMiksIFZv
dGVWYWx1ZSwgd2VpZ2h0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAg
ICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAgICAgLy8gSWdub3JlIHRoZXNlIHNpbmNlIHRoZXkg
aGF2ZSBubyBlZmZlY3Qgb24gaW4tREZHIGV4ZWN1dGlvbi4KICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNzUwLDcgKzc1Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoK
ICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgICAgICBjYXNlIEdldFByb3RvdHlwZU9m
OgotICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OiB7CisgICAgICAgIGNh
c2UgRXh0cmFjdFZhbHVlRnJvbVdlYWtNYXBHZXQ6IAorICAgICAgICBjYXNlIERhdGFWaWV3R2V0
SW50OgorICAgICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKICAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtMTIyMCw2ICsxMjI5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0
YXR1czoKICAgICAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgorICAgICAgICBjYXNlIERhdGFW
aWV3U2V0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhp
cyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1
ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAgICAgICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6CiAg
ICAgICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKKyAgICAgICAgY2FzZSBEYXRhVmlld09iamVj
dFVzZToKICAgICAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBjYXNlIFN0cmlu
Z0lkZW50VXNlOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKQEAgLTQ2Miw2ICs0NjMsOCBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBBdG9taWNz
SXNMb2NrRnJlZToKICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgogICAg
IGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CisgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAgICBjYXNl
IERhdGFWaWV3R2V0RmxvYXQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBBcnJh
eVNsaWNlOgpAQCAtNjAyLDYgKzYwNSw5IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgY2FzZSBEYXRh
Vmlld1NldDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgY2FzZSBTZXRBZGQ6CiAgICAg
Y2FzZSBNYXBTZXQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNp
b24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEwNyw2ICs0MTA3LDkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAg
ICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBBc3NlcnROb3RFbXB0eToKKyAgICBjYXNl
IERhdGFWaWV3R2V0SW50OgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICBjYXNlIERh
dGFWaWV3U2V0OgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgInVuZXhw
ZWN0ZWQgbm9kZSBpbiBERkcgYmFja2VuZCIpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NTMsNiArNDU1MywzNzcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxl
Q2xlYXJDYXRjaExvY2Fscyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIERhdGFW
aWV3R2V0RmxvYXQ6CisgICAgY2FzZSBEYXRhVmlld0dldEludDogeworICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBkYXRhVmlldyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQ
UlJlZyBkYXRhVmlld0dQUiA9IGRhdGFWaWV3LmdwcigpOworICAgICAgICBzcGVjdWxhdGVEYXRh
Vmlld09iamVjdChub2RlLT5jaGlsZDEoKSwgZGF0YVZpZXdHUFIpOworCisgICAgICAgIFNwZWN1
bGF0ZUludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQ
UlJlZyBpbmRleEdQUiA9IGluZGV4LmdwcigpOworCisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
MSh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHQxID0gdGVtcDEuZ3ByKCk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wMih0aGlzKTsKKyAgICAgICAgR1BSUmVnIHQyID0gdGVtcDIuZ3ByKCk7CisK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVCb29sZWFuT3BlcmFuZD4gaXNMaXR0bGVF
bmRpYW5PcGVyYW5kOworICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCisgICAgICAgICAgICBp
c0xpdHRsZUVuZGlhbk9wZXJhbmQuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAg
ICAgIEdQUlJlZyBpc0xpdHRsZUVuZGlhbkdQUiA9IGlzTGl0dGxlRW5kaWFuT3BlcmFuZCA/IGlz
TGl0dGxlRW5kaWFuT3BlcmFuZC0+Z3ByKCkgOiBJbnZhbGlkR1BSUmVnOworCisgICAgICAgIERh
dGFWaWV3RGF0YSBkYXRhID0gbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CisKKyAgICAgICAgbV9qaXQu
emVyb0V4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHQyKTsKKyAgICAgICAgaWYgKGRhdGEuYnl0ZVNp
emUgPiAxKQorICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEuYnl0ZVNp
emUgLSAxKSwgdDIpOworICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgdDEp
OworICAgICAgICAvLyBPT1BTOiBkb2VzIGxvYWQzMiBhbHJlYWR5IHplcm8gZXh0ZW5kPworICAg
ICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0MSwgdDEpOworICAgICAgICAvLyBPT1BTOiBD
b21tZW50IG9uIHdoeSB0aGlzIHdvcmtzIGZvciBuZWdhdGl2ZXMsIGV0Yy4KKyAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbm9kZSwKKyAgICAgICAg
ICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHQyLCB0MSkp
OworCisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZGF0YVZpZXdH
UFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdDIpOyAvLyBPT1BTOiBh
ZGQgbmV1dGVyaW5nIHRlc3RzIQorICAgICAgICBjYWdlVHlwZWRBcnJheVN0b3JhZ2UodDIpOwor
CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGluZGV4R1BSLCB0MSk7CisgICAgICAg
IGF1dG8gYmFzZUluZGV4ID0gSklUQ29tcGlsZXI6OkJhc2VJbmRleCh0MiwgdDEsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc09uZSk7CisKKyAgICAgICAgLy8gT09QUzogZG8gcG9pbnRlciBjYWdpbmcK
KyAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gRGF0YVZpZXdHZXRJbnQpIHsKKyAgICAgICAgICAg
IHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAg
ICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
OFNpZ25lZEV4dGVuZFRvMzIoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkOChiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAg
ICAgICAgICBpbnQzMlJlc3VsdCh0Miwgbm9kZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDI6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRp
YW5Mb2FkID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMTZTaWduZWRFeHRlbmRUbzMyKGJhc2VJ
bmRleCwgdDIpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkMTYoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Mb2FkID0gWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZDE2KGJhc2VJbmRleCwgdDIpOworICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5ieXRlU3dhcDE2KHQyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNT
aWduZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMTZUbzMyKHQy
LCB0Mik7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlz
TGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRC
aWdFbmRpYW5Mb2FkKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVu
ZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRp
YW5Mb2FkKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGlzQmlnRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZEltbTMyKDEpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkxvYWQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAgICAgICAgICBpc0Jp
Z0VuZGlhbi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5M
b2FkKCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbnQzMlJlc3VsdCh0Miwgbm9kZSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIDQ6IHsKKyAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoYmFzZUluZGV4LCB0Mik7CisKKyAgICAgICAgICAg
ICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5ieXRlU3dhcDMyKHQyKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlm
IChkYXRhLmlzTGl0dGxlRW5kaWFuID09IE1peGVkVHJpU3RhdGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNMaXR0bGVFbmRpYW4gPSBtX2ppdC5icmFuY2hU
ZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGlzTGl0dGxlRW5kaWFuR1BSLCBUcnVzdGVk
SW1tMzIoMSkpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5ieXRlU3dhcDMyKHQyKTsKKyAg
ICAgICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4ubGluaygmbV9qaXQpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQorICAgICAgICAg
ICAgICAgICAgICBpbnQzMlJlc3VsdCh0Miwgbm9kZSk7CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHQyLCB0Mik7IC8v
IE9PUFM6IERvIEkgbmVlZCB0aGlzIGdpdmVuIHRoZSBhYm92ZSBsb2FkPworICAgICAgICAgICAg
ICAgICAgICBzdHJpY3RJbnQ1MlJlc3VsdCh0Miwgbm9kZSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKyAgICAgICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CisK
KyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAgICAgY2FzZSA0
OiB7CisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29kZSA9IFsmXSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWRGbG9hdChiYXNlSW5kZXgsIHJlc3VsdEZQUik7
CisgICAgICAgICAgICAgICAgICAgIG1faml0LmNvbnZlcnRGbG9hdFRvRG91YmxlKHJlc3VsdEZQ
UiwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgYXV0
byBlbWl0QmlnRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0Lmxv
YWQzMihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAz
Mih0Mik7CisgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUzMlRvRmxvYXQodDIsIHJlc3Vs
dEZQUik7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmNvbnZlcnRGbG9hdFRvRG91YmxlKHJl
c3VsdEZQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAg
ICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAg
ICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQ
UlJlZyk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNCaWdFbmRpYW4gPSBtX2ppdC5icmFu
Y2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGlzTGl0dGxlRW5kaWFuR1BSLCBUcnVzdGVk
SW1tMzIoMSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwor
ICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAg
ICAgICAgICAgIGlzQmlnRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjYXNlIDg6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRM
aXR0bGVFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZERv
dWJsZShiYXNlSW5kZXgsIHJlc3VsdEZQUik7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAg
ICAgICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkNjQoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAgICAgICAgIG1f
aml0LmJ5dGVTd2FwNjQodDIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlNjRUb0Rv
dWJsZSh0MiwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAg
ICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAg
ICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQ
UlJlZyk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNCaWdFbmRpYW4gPSBtX2ppdC5icmFu
Y2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGlzTGl0dGxlRW5kaWFuR1BSLCBUcnVzdGVk
SW1tMzIoMSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwor
ICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAg
ICAgICAgICAgIGlzQmlnRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRvdWJsZVJl
c3VsdChyZXN1bHRGUFIsIG5vZGUpOworICAgICAgICB9CisKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgY2FzZSBEYXRhVmlld1NldDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBkYXRhVmlldyh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAg
R1BSUmVnIGRhdGFWaWV3R1BSID0gZGF0YVZpZXcuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZURh
dGFWaWV3T2JqZWN0KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIGRhdGFWaWV3R1BSKTsK
KworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAxKSk7CisgICAgICAgIEdQUlJlZyBpbmRleEdQUiA9IGluZGV4Lmdwcigp
OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kPiBp
bnQ1MlZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQ+
IGRvdWJsZVZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUludDMyT3BlcmFu
ZD4gaW50MzJWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGUFJUZW1wb3Jhcnk+IGZwclRl
bXBvcmFyeTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAg
ICAgRlBSUmVnIHZhbHVlRlBSID0gSW52YWxpZEZQUlJlZzsKKyAgICAgICAgRlBSUmVnIHRlbXBG
UFIgPSBJbnZhbGlkRlBSUmVnOworCisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbm9kZS0+
ZGF0YVZpZXdEYXRhKCk7CisKKyAgICAgICAgRWRnZSYgdmFsdWVFZGdlID0gbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAyKTsKKyAgICAgICAgc3dpdGNoICh2YWx1ZUVkZ2UudXNlS2luZCgpKSB7
CisgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgICAgICBpbnQzMlZhbHVlLmVtcGxhY2Uo
dGhpcywgdmFsdWVFZGdlKTsKKyAgICAgICAgICAgIHZhbHVlR1BSID0gaW50MzJWYWx1ZS0+Z3By
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAg
ICAgICAgICBkb3VibGVWYWx1ZS5lbXBsYWNlKHRoaXMsIHZhbHVlRWRnZSk7CisgICAgICAgICAg
ICB2YWx1ZUZQUiA9IGRvdWJsZVZhbHVlLT5mcHIoKTsKKyAgICAgICAgICAgIGlmIChkYXRhLmJ5
dGVTaXplID09IDQpIHsKKyAgICAgICAgICAgICAgICBmcHJUZW1wb3JhcnkuZW1wbGFjZSh0aGlz
KTsKKyAgICAgICAgICAgICAgICB0ZW1wRlBSID0gZnByVGVtcG9yYXJ5LT5mcHIoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDUyUmVwVXNlOgor
ICAgICAgICAgICAgaW50NTJWYWx1ZS5lbXBsYWNlKHRoaXMsIHZhbHVlRWRnZSk7CisgICAgICAg
ICAgICB2YWx1ZUdQUiA9IGludDUyVmFsdWUtPmdwcigpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAxKHRoaXMpOworICAgICAg
ICBHUFJSZWcgdDEgPSB0ZW1wMS5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRo
aXMpOworICAgICAgICBHUFJSZWcgdDIgPSB0ZW1wMi5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHRlbXAzKHRoaXMpOworICAgICAgICBHUFJSZWcgdDMgPSB0ZW1wMy5ncHIoKTsKKworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPiBpc0xpdHRsZUVuZGlh
bk9wZXJhbmQ7CisgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKQorICAg
ICAgICAgICAgaXNMaXR0bGVFbmRpYW5PcGVyYW5kLmVtcGxhY2UodGhpcywgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgIEdQUlJlZyBpc0xpdHRsZUVuZGlhbkdQUiA9IGlz
TGl0dGxlRW5kaWFuT3BlcmFuZCA/IGlzTGl0dGxlRW5kaWFuT3BlcmFuZC0+Z3ByKCkgOiBJbnZh
bGlkR1BSUmVnOworCisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGluZGV4R1BSLCB0
Mik7CisgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKKyAgICAgICAgICAgIG1faml0LmFk
ZDY0KFRydXN0ZWRJbW0zMihkYXRhLmJ5dGVTaXplIC0gMSksIHQyKTsKKyAgICAgICAgbV9qaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHQxKTsKKyAgICAgICAgLy8gT09QUzogZG9lcyBsb2Fk
MzIgYWxyZWFkeSB6ZXJvIGV4dGVuZD8KKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIo
dDEsIHQxKTsKKyAgICAgICAgLy8gT09QUzogQ29tbWVudCBvbiB3aHkgdGhpcyB3b3JrcyBmb3Ig
bmVnYXRpdmVzLCBldGMuCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpT
VmFsdWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKKworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZWZWN0b3IoKSksIHQyKTsKKyAgICAgICAgY2FnZVR5cGVkQXJyYXlTdG9yYWdlKHQyKTsKKwor
ICAgICAgICAvLyBPT1BTOiBhZGQgdGVzdHMgZm9yIG5ldXRlcmluZyBzaW5jZSBpdCdsbCBiZSBj
b3ZlcmVkIGJ5IE9PQiBjaGVjay4KKworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihp
bmRleEdQUiwgdDEpOworICAgICAgICBhdXRvIGJhc2VJbmRleCA9IEpJVENvbXBpbGVyOjpCYXNl
SW5kZXgodDIsIHQxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNPbmUpOworCisgICAgICAgIC8vIE9P
UFM6IGRvIHBvaW50ZXIgY2FnaW5nCisgICAgICAgIGlmIChkYXRhLmlzRmxvYXRpbmdQb2ludCkg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVGUFIgIT0gSW52YWxpZEZQUlJlZyk7
CisgICAgICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA9PSA0KSB7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQodGVtcEZQUiAhPSBJbnZhbGlkRlBSUmVnKTsKKyAgICAgICAgICAgICAg
ICBtX2ppdC5jb252ZXJ0RG91YmxlVG9GbG9hdCh2YWx1ZUZQUiwgdGVtcEZQUik7CisKKyAgICAg
ICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuc3RvcmVGbG9hdCh0ZW1wRlBSLCBiYXNlSW5kZXgpOworICAgICAgICAg
ICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZd
IHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZUZsb2F0VG8zMih0ZW1wRlBSLCB0Myk7
CisgICAgICAgICAgICAgICAgICAgIG1faml0LmJ5dGVTd2FwMzIodDMpOworICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5zdG9yZTMyKHQzLCBiYXNlSW5kZXgpOworICAgICAgICAgICAgICAgIH07
CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0
YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAg
ICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlh
bkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpc0JpZ0Vu
ZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgaXNMaXR0bGVF
bmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0
bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1
bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdFbmRpYW4ubGluaygmbV9qaXQpOworICAg
ICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgICAg
ICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEuYnl0ZVNpemUgPT0gOCk7
CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVGUFIgIT0gSW52YWxpZEZQUlJl
Zyk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFsdWVGUFIsIGJhc2VJbmRl
eCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRp
YW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZURvdWJsZVRvNjQo
dmFsdWVGUFIsIHQzKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXA2NCh0Myk7
CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlNjQodDMsIGJhc2VJbmRleCk7CisgICAg
ICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFu
ID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2Rl
KCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVl
VHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7Cisg
ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAg
ICBhdXRvIGlzQmlnRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZEltbTMyKDEpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBk
b25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAgICAgICAgICBpc0JpZ0VuZGlhbi5saW5r
KCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAg
ICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5i
eXRlU2l6ZSkgeworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHZhbHVlRWRnZS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHZhbHVlR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICAgICAg
ICAgIG1faml0LnN0b3JlOCh2YWx1ZUdQUiwgYmFzZUluZGV4KTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgMjogeworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHZhbHVlRWRnZS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHZhbHVlR1BSICE9IEludmFsaWRHUFJSZWcpOworCisgICAgICAgICAgICAg
ICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlMTYodmFsdWVHUFIsIGJhc2VJbmRleCk7CisgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQubW92ZSh2YWx1ZUdQUiwgdDMpOworICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5ieXRlU3dhcDE2KHQzKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUx
Nih0MywgYmFzZUluZGV4KTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAg
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRh
LmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1p
dExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJl
Zyk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNCaWdFbmRpYW4gPSBtX2ppdC5icmFuY2hU
ZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGlzTGl0dGxlRW5kaWFuR1BSLCBUcnVzdGVkSW1t
MzIoMSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICAg
ICAgICAgIGlzQmlnRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
dmFsdWVFZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSB8fCB2YWx1ZUVkZ2UudXNlS2luZCgpID09
IEludDUyUmVwVXNlKTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNv
ZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlR1BSLCBi
YXNlSW5kZXgpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGVt
aXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuemVyb0V4
dGVuZDMyVG9QdHIodmFsdWVHUFIsIHQzKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0
ZVN3YXAzMih0Myk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIodDMsIGJhc2VJ
bmRleCk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlz
TGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRC
aWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVu
ZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRp
YW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGlzQmlnRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZEltbTMyKDEpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAgICAgICAgICBpc0Jp
Z0VuZGlhbi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5D
b2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAg
ICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBjYWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRkMzIoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjM0ODczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk5MDMsNiArOTkwMywyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVXZWFrU2V0T2JqCiAgICAgc3BlY3VsYXRlV2Vha1NldE9iamVjdChlZGdlLCBvcGVyYW5k
LmdwcigpKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRGF0YVZpZXdPYmpl
Y3QoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3sKKyAgICBzcGVjdWxhdGVDZWxsVHlwZShlZGdl
LCBjZWxsLCBTcGVjRGF0YVZpZXdPYmplY3QsIERhdGFWaWV3VHlwZSk7Cit9CisKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UgZWRnZSkKK3sKKyAgICBp
ZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNEYXRhVmlld09iamVjdCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7Cisg
ICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRnZSwgb3BlcmFuZC5ncHIoKSk7Cit9CisKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3RoZXIoRWRnZSBlZGdlKQogewog
ICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY09iamVjdCB8IFNwZWNPdGhlcikpCkBA
IC0xMDI3MSw2ICsxMDI4NSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2Rl
KiwgRWQKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtT
ZXRPYmplY3QoZWRnZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGF0YVZpZXdPYmplY3RV
c2U6CisgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UpOworICAgICAgICBicmVh
azsKICAgICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU9iamVjdE9y
T3RoZXIoZWRnZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjEwLDYgKzE2MTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVXZWFrTWFwT2Jq
ZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3Qo
RWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxs
KTsKKyAgICB2b2lkIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2UpOworICAgIHZvaWQgc3Bl
Y3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3Vs
YXRlT2JqZWN0T3JPdGhlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZyhFZGdlIGVk
Z2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0
b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBHUFJSZWcgc3RvcmFnZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDIzNDg3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCwxNiArMTA0LDE5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBVc2UKICAgICAgICAgb3V0LnByaW50KCJEZXJpdmVkQXJyYXkiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgTWFwT2JqZWN0VXNlOgotICAgICAgICBvdXQucHJpbnQoIk1hcE9iamVj
dFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIk1hcE9iamVjdCIpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBTZXRPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmludCgiU2V0T2JqZWN0VXNl
Iik7CisgICAgICAgIG91dC5wcmludCgiU2V0T2JqZWN0Iik7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmludCgiV2Vha01hcE9iamVj
dFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIldlYWtNYXBPYmplY3QiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKLSAgICAgICAgb3V0LnByaW50KCJXZWFr
U2V0T2JqZWN0VXNlIik7CisgICAgICAgIG91dC5wcmludCgiV2Vha1NldE9iamVjdCIpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKKyAgICAgICAgb3V0LnBy
aW50KCJEYXRhVmlld09iamVjdCIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBPYmplY3RP
ck90aGVyVXNlOgogICAgICAgICBvdXQucHJpbnQoIk9iamVjdE9yT3RoZXIiKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNiArNzAsNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIFNldE9iamVjdFVzZSwKICAgICBXZWFr
TWFwT2JqZWN0VXNlLAogICAgIFdlYWtTZXRPYmplY3RVc2UsCisgICAgRGF0YVZpZXdPYmplY3RV
c2UsCiAgICAgU3RyaW5nT2JqZWN0VXNlLAogICAgIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlLAog
ICAgIE5vdFN0cmluZ1ZhclVzZSwKQEAgLTE2MCw2ICsxNjEsOCBAQCBpbmxpbmUgU3BlY3VsYXRl
ZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLCiAgICAgICAgIHJldHVybiBTcGVjV2Vha01hcE9iamVj
dDsKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CiAgICAgICAgIHJldHVybiBTcGVjV2Vha1Nl
dE9iamVjdDsKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgorICAgICAgICByZXR1cm4gU3Bl
Y0RhdGFWaWV3T2JqZWN0OwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICByZXR1
cm4gU3BlY1N0cmluZ09iamVjdDsKICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgpA
QCAtMjU5LDYgKzI2Miw3IEBAIGlubGluZSBib29sIGlzQ2VsbChVc2VLaW5kIGtpbmQpCiAgICAg
Y2FzZSBTZXRPYmplY3RVc2U6CiAgICAgY2FzZSBXZWFrTWFwT2JqZWN0VXNlOgogICAgIGNhc2Ug
V2Vha1NldE9iamVjdFVzZToKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lv
biAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw2ICszNTksOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICBjYXNl
IERhdGFWaWV3R2V0SW50OgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICBjYXNlIERh
dGFWaWV3U2V0OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCkBA
IC00NDUsNiArNDQ4LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoR3JhcGgmIGdyYXBo
KQogICAgICAgICAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNh
c2UgV2Vha01hcE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFdlYWtTZXRPYmplY3RV
c2U6CisgICAgICAgICAgICAgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToKICAgICAgICAgICAg
ICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgUmVnRXhwT2Jq
ZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgUHJveHlPYmplY3RVc2U6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAy
MzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMDcsNiArMTMwNywxMyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgICAgIGNvbXBpbGVGaWx0ZXJJQ1N0YXR1
cygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6Cisg
ICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICAgICAgICAgIGNvbXBpbGVEYXRhVmll
d0dldCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZpZXdTZXQ6Cisg
ICAgICAgICAgICBjb21waWxlRGF0YVZpZXdTZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtMTIy
MzgsNiArMTIyNDUsMzU1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2ludGVycHJldGVy
LmZpbHRlcklDU3RhdHVzKG1fbm9kZSk7CiAgICAgfQorCisgICAgTFZhbHVlIGJ5dGVTd2FwMzIo
TFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUtPnR5cGUo
KSA9PSBJbnQzMik7CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0
LnBhdGNocG9pbnQoSW50MzIpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0
ZXIodmFsdWUpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAg
ICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAg
ICAgICAgICAgIGppdC5ieXRlU3dhcDMyKHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOwor
ICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICBy
ZXR1cm4gcGF0Y2hwb2ludDsKKyAgICB9CisKKyAgICBMVmFsdWUgYnl0ZVN3YXA2NChMVmFsdWUg
dmFsdWUpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS0+dHlwZSgpID09IElu
dDY0KTsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hw
b2ludChJbnQ2NCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih2YWx1
ZSk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAg
ICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAg
ICAgaml0LmJ5dGVTd2FwNjQocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgIHJldHVybiBw
YXRjaHBvaW50OworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGMSwgdHlwZW5hbWUg
RjI+CisgICAgTFZhbHVlIGVtaXRDb2RlQmFzZWRPbkVuZGlhbm5lc3NCcmFuY2goTFZhbHVlIGlz
TGl0dGxlRW5kaWFuLCBjb25zdCBGMSYgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGNvbnN0IEYyJiBl
bWl0QmlnRW5kaWFuQ29kZSkKKyAgICB7CisgICAgICAgIExUeXBlIHR5cGU7CisKKyAgICAgICAg
TEJhc2ljQmxvY2sgYmlnRW5kaWFuQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExC
YXNpY0Jsb2NrIGxpdHRsZUVuZGlhbkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1f
b3V0LmJyYW5jaChtX291dC50ZXN0SXNaZXJvMzIoaXNMaXR0bGVFbmRpYW4sIG1fb3V0LmNvbnN0
SW50MzIoMSkpLAorICAgICAgICAgICAgdW5zdXJlKGJpZ0VuZGlhbkNhc2UpLCB1bnN1cmUobGl0
dGxlRW5kaWFuQ2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8oYmlnRW5kaWFuQ2FzZSwgbGl0dGxlRW5kaWFuQ2FzZSk7CisgICAgICAgIExWYWx1
ZSBiaWdFbmRpYW5WYWx1ZSA9IGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgIHR5cGUgPSBi
aWdFbmRpYW5WYWx1ZSA/IGJpZ0VuZGlhblZhbHVlLT50eXBlKCkgOiBWb2lkOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBiaWdFbmRpYW5SZXN1bHQgPSBiaWdFbmRpYW5WYWx1ZSA/IG1fb3V0LmFu
Y2hvcihiaWdFbmRpYW5WYWx1ZSkgOiBWYWx1ZUZyb21CbG9jaygpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obGl0dGxlRW5kaWFu
Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgTFZhbHVlIGxpdHRsZUVuZGlhblZhbHVlID0g
ZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbGl0dGxlRW5k
aWFuUmVzdWx0ID0gbGl0dGxlRW5kaWFuVmFsdWUgPyBtX291dC5hbmNob3IobGl0dGxlRW5kaWFu
VmFsdWUpIDogVmFsdWVGcm9tQmxvY2soKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoKCFsaXR0
bGVFbmRpYW5WYWx1ZSAmJiAhYmlnRW5kaWFuVmFsdWUpIHx8IHR5cGUgPT0gbGl0dGxlRW5kaWFu
VmFsdWUtPnR5cGUoKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoISFiaWdFbmRpYW5SZXN1bHQgPT0gISFsaXR0bGVFbmRpYW5SZXN1bHQpOwor
ICAgICAgICBpZiAoYmlnRW5kaWFuUmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIG1fb3V0LnBo
aSh0eXBlLCBiaWdFbmRpYW5SZXN1bHQsIGxpdHRsZUVuZGlhblJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZURhdGFWaWV3R2V0KCkKKyAg
ICB7CisgICAgICAgIExWYWx1ZSBkYXRhVmlldyA9IGxvd0RhdGFWaWV3T2JqZWN0KG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgaW5kZXggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgTFZhbHVlIGlzTGl0dGxlRW5kaWFuID0gbnVsbHB0cjsKKyAgICAgICAg
aWYgKG1fbm9kZS0+Y2hpbGQzKCkpCisgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IGxvd0Jv
b2xlYW4obV9ub2RlLT5jaGlsZDMoKSk7CisKKyAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBt
X25vZGUtPmRhdGFWaWV3RGF0YSgpOworCisgICAgICAgIExWYWx1ZSBsZW5ndGggPSBtX291dC56
ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBMVmFsdWUgaW5kZXhUb0NoZWNrID0gbV9v
dXQuemVyb0V4dFB0cihpbmRleCk7CisgICAgICAgIGlmIChkYXRhLmJ5dGVTaXplID4gMSkKKyAg
ICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNv
bnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKKyAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91
bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleFRvQ2hlY2ss
IGxlbmd0aCkpOworCisgICAgICAgIExWYWx1ZSB2ZWN0b3IgPSBjYWdlZChHaWdhY2FnZTo6UHJp
bWl0aXZlLCBtX291dC5sb2FkUHRyKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3
X3ZlY3RvcikpOworCisgICAgICAgIC8vIE9PUFM6IGFkZCBuZXV0ZXJpbmcgdGVzdHMgZm9yIEpT
RGF0YVZpZXcuIFdlIGRvbid0IGV4cGxpY2l0bHkgbmVlZCB0byBjaGVjayBmb3IgbnVsbHB0ciBz
aW5jZSBvdXIgYm91bmRzIGNoZWNrIHdpbGwgZmFpbC4KKworICAgICAgICBUeXBlZFBvaW50ZXIg
cG9pbnRlcihtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzLCBtX291dC5hZGQodmVjdG9yLCBt
X291dC56ZXJvRXh0UHRyKGluZGV4KSkpOworCisgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0g
RGF0YVZpZXdHZXRJbnQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgewor
ICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVkKQor
ICAgICAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkOFNpZ25FeHQzMihwb2ludGVy
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZXRJbnQzMiht
X291dC5sb2FkOFplcm9FeHQzMihwb2ludGVyKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDI6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRp
YW5Mb2FkID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQubG9hZDE2U2lnbkV4dDMyKHBvaW50
ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQubG9hZDE2WmVyb0V4dDMyKHBv
aW50ZXIpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRC
aWdFbmRpYW5Mb2FkID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVlIHZhbCA9IG1f
b3V0LmxvYWQxNlplcm9FeHQzMihwb2ludGVyKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBP
T1BTOiB0ZWFjaCBiMyBieXRlIHN3YXAhCisgICAgICAgICAgICAgICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50MzIpOworICAgICAgICAgICAg
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuYnl0ZVN3YXAxNihwYXJhbXNbMF0uZ3ByKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LnNpZ25FeHRlbmQxNlRvMzIocGFyYW1zWzBdLmdwcigpLCBwYXJh
bXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAg
ICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAg
ICAgICAgICAgICAgICAgc2V0SW50MzIoZW1pdEJpZ0VuZGlhbkxvYWQoKSk7CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAg
ICAgICAgICAgICAgICAgIHNldEludDMyKGVtaXRMaXR0bGVFbmRpYW5Mb2FkKCkpOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIoZW1pdENvZGVCYXNl
ZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkxvYWQs
IGVtaXRCaWdFbmRpYW5Mb2FkKSk7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNhc2UgNDogeworICAgICAgICAgICAgICAgIExWYWx1ZSBsb2Fk
ZWRWYWx1ZSA9IG1fb3V0LmxvYWQzMihwb2ludGVyKTsKKworICAgICAgICAgICAgICAgIGlmIChk
YXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAg
IGxvYWRlZFZhbHVlID0gYnl0ZVN3YXAzMihsb2FkZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBNaXhlZFRyaVN0YXRlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlZFZhbHVlOworICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBieXRlU3dhcDMyKGxvYWRlZFZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICBsb2FkZWRWYWx1ZSA9
IGVtaXRDb2RlQmFzZWRPbkVuZGlhbm5lc3NCcmFuY2goaXNMaXR0bGVFbmRpYW4sIGVtaXRMaXR0
bGVFbmRpYW5Db2RlLCBlbWl0QmlnRW5kaWFuQ29kZSk7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisgICAgICAgICAgICAgICAgICAgIHNl
dEludDMyKGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0Lnplcm9FeHQobG9hZGVkVmFsdWUsIEludDY0KSk7
CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5i
eXRlU2l6ZSkgeworICAgICAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAgICAgICAgYXV0byBl
bWl0TGl0dGxlRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
X291dC5mbG9hdFRvRG91YmxlKG1fb3V0LmxvYWRGbG9hdChwb2ludGVyKSk7CisgICAgICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUgPSBbJl0g
eworICAgICAgICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBtX291dC5sb2FkMzIo
cG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCA9IG1fb3V0LnBhdGNocG9pbnQoRG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGxvYWRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAgICAgICAgICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmJ5dGVTd2FwMzIocGFyYW1zLmdwU2NyYXRjaCgw
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZTMyVG9GbG9hdChwYXJhbXMuZ3BT
Y3JhdGNoKDApLCBwYXJhbXNbMF0uZnByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvbnZlcnRGbG9hdFRvRG91YmxlKHBhcmFtc1swXS5mcHIoKSwgcGFyYW1zWzBdLmZwcigpKTsK
KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQt
PmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBw
YXRjaHBvaW50OworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0
YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIHNl
dERvdWJsZShlbWl0TGl0dGxlRW5kaWFuQ29kZSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlm
IChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAg
ICAgIHNldERvdWJsZShlbWl0QmlnRW5kaWFuQ29kZSgpKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNz
QnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlh
bkNvZGUpKTsKKworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgY2FzZSA4OiB7CisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29k
ZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5sb2FkRG91YmxlKHBv
aW50ZXIpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRC
aWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGxvYWRlZFZh
bHVlID0gbV9vdXQubG9hZDY0KHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICBsb2FkZWRW
YWx1ZSA9IGJ5dGVTd2FwNjQobG9hZGVkVmFsdWUpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbV9vdXQuYml0Q2FzdChsb2FkZWRWYWx1ZSwgRG91YmxlKTsKKyAgICAgICAgICAgICAgICB9
OworCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0
YXRlKQorICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdExpdHRsZUVuZGlhbkNvZGUo
KSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxz
ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdEJpZ0VuZGlhbkNv
ZGUoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZXREb3Vi
bGUoZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1pdExp
dHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKSk7CisKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIHZvaWQgY29tcGlsZURhdGFWaWV3U2V0KCkKKyAgICB7CisgICAgICAg
IExWYWx1ZSBkYXRhVmlldyA9IGxvd0RhdGFWaWV3T2JqZWN0KG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCAwKSk7CisgICAgICAgIExWYWx1ZSBpbmRleCA9IGxvd0ludDMyKG1fZ3JhcGgudmFy
QXJnQ2hpbGQobV9ub2RlLCAxKSk7CisgICAgICAgIExWYWx1ZSBpc0xpdHRsZUVuZGlhbiA9IG51
bGxwdHI7CisgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpCisgICAg
ICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IGxvd0Jvb2xlYW4obV9ncmFwaC52YXJBcmdDaGlsZCht
X25vZGUsIDMpKTsKKworICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG1fbm9kZS0+ZGF0YVZp
ZXdEYXRhKCk7CisKKyAgICAgICAgTFZhbHVlIGxlbmd0aCA9IG1fb3V0Lnplcm9FeHRQdHIobV9v
dXQubG9hZDMyTm9uTmVnYXRpdmUoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdf
bGVuZ3RoKSk7CisgICAgICAgIExWYWx1ZSBpbmRleFRvQ2hlY2sgPSBtX291dC56ZXJvRXh0UHRy
KGluZGV4KTsKKyAgICAgICAgaWYgKGRhdGEuYnl0ZVNpemUgPiAxKQorICAgICAgICAgICAgaW5k
ZXhUb0NoZWNrID0gbV9vdXQuYWRkKGluZGV4VG9DaGVjaywgbV9vdXQuY29uc3RJbnQ2NChkYXRh
LmJ5dGVTaXplIC0gMSkpOworICAgICAgICAvLyBPT1BTOiBhZGQgbmV1dGVyaW5nIHRlc3RzIGZv
ciBKU0RhdGFWaWV3LiBXZSBkb24ndCBleHBsaWNpdGx5IG5lZWQgdG8gY2hlY2sgZm9yIG51bGxw
dHIgc2luY2Ugb3VyIGJvdW5kcyBjaGVjayB3aWxsIGZhaWwuCisgICAgICAgIHNwZWN1bGF0ZShP
dXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXhU
b0NoZWNrLCBsZW5ndGgpKTsKKworICAgICAgICBFZGdlJiB2YWx1ZUVkZ2UgPSBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMik7CisgICAgICAgIExWYWx1ZSB2YWx1ZVRvU3RvcmU7CisgICAg
ICAgIHN3aXRjaCAodmFsdWVFZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEludDMyVXNl
OgorICAgICAgICAgICAgdmFsdWVUb1N0b3JlID0gbG93SW50MzIodmFsdWVFZGdlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgICAgIHZh
bHVlVG9TdG9yZSA9IGxvd0RvdWJsZSh2YWx1ZUVkZ2UpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgICAgICB2YWx1ZVRvU3RvcmUgPSBsb3dT
dHJpY3RJbnQ1Mih2YWx1ZUVkZ2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9
CisKKyAgICAgICAgTFZhbHVlIHZlY3RvciA9IGNhZ2VkKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1f
b3V0LmxvYWRQdHIoZGF0YVZpZXcsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKSk7
CisgICAgICAgIFR5cGVkUG9pbnRlciBwb2ludGVyKG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRp
ZXMsIG1fb3V0LmFkZCh2ZWN0b3IsIG1fb3V0Lnplcm9FeHRQdHIoaW5kZXgpKSk7CisKKyAgICAg
ICAgaWYgKGRhdGEuaXNGbG9hdGluZ1BvaW50KSB7CisgICAgICAgICAgICBpZiAoZGF0YS5ieXRl
U2l6ZSA9PSA0KSB7CisgICAgICAgICAgICAgICAgdmFsdWVUb1N0b3JlID0gbV9vdXQuZG91Ymxl
VG9GbG9hdCh2YWx1ZVRvU3RvcmUpOworCisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxl
RW5kaWFuQ29kZSA9IFsmXSAoKSAtPiBMVmFsdWUgeworICAgICAgICAgICAgICAgICAgICBtX291
dC5zdG9yZUZsb2F0KHZhbHVlVG9TdG9yZSwgcG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBh
dXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdICgpIC0+IExWYWx1ZSB7CisgICAgICAgICAgICAg
ICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50
MzIpOworICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIo
dmFsdWVUb1N0b3JlKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJh
dG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZUZsb2F0VG8zMihw
YXJhbXNbMV0uZnByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuYnl0ZVN3YXAzMihwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5v
bmUoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihwYXRjaHBvaW50LCBwb2lu
dGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAg
ICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNl
VHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUp
CisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNz
QnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlh
bkNvZGUpOworCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGRhdGEuYnl0ZVNpemUgPT0gOCk7CisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0
dGxlRW5kaWFuQ29kZSA9IFsmXSAoKSAtPiBMVmFsdWUgeworICAgICAgICAgICAgICAgICAgICBt
X291dC5zdG9yZURvdWJsZSh2YWx1ZVRvU3RvcmUsIHBvaW50ZXIpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
IGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUgPSBbJl0gKCkgLT4gTFZhbHVlIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuc3RvcmU2NChieXRlU3dhcDY0KG1fb3V0LmJpdENhc3QodmFsdWVUb1N0
b3JlLCBJbnQ2NCkpLCBwb2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdF
bmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlh
biA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5D
b2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBlbWl0Q29k
ZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFu
Q29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgc3dpdGNoIChkYXRhLmJ5dGVTaXplKSB7CisgICAgICAgICAgICBjYXNl
IDE6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVFZGdlLnVzZUtpbmQoKSA9
PSBJbnQzMlVzZSk7CisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMkFzOCh2YWx1ZVRvU3Rv
cmUsIHBvaW50ZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAy
OiB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVFZGdlLnVzZUtpbmQoKSA9
PSBJbnQzMlVzZSk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2Rl
ID0gWyZdICgpIC0+IExWYWx1ZSB7CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzJB
czE2KHZhbHVlVG9TdG9yZSwgcG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgYXV0byBlbWl0Qmln
RW5kaWFuQ29kZSA9IFsmXSAoKSAtPiBMVmFsdWUgeworICAgICAgICAgICAgICAgICAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDMyKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHZhbHVlVG9TdG9y
ZSk7CisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
eworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJh
bXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmJ5dGVTd2FwMTYocGFy
YW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
ICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuc3RvcmUzMkFzMTYocGF0Y2hwb2ludCwgcG9pbnRlcik7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAg
ICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAg
ICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRs
ZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgNDogewor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlRWRnZS51c2VLaW5kKCkgPT0gSW50
MzJVc2UgfHwgdmFsdWVFZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAodmFsdWVFZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSkKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWVUb1N0b3JlID0gbV9vdXQuY2FzdFRvSW50MzIodmFsdWVUb1N0b3Jl
KTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0gKCkg
LT4gTFZhbHVlIHsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2YWx1ZVRvU3Rv
cmUsIHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUgPSBb
Jl0gKCkgLT4gTFZhbHVlIHsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihieXRl
U3dhcDMyKHZhbHVlVG9TdG9yZSksIHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgaWYgKGRh
dGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRs
ZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGVtaXRDb2RlQmFzZWRPbkVuZGlhbm5lc3NCcmFuY2goaXNMaXR0bGVFbmRpYW4sIGVtaXRMaXR0
bGVFbmRpYW5Db2RlLCBlbWl0QmlnRW5kaWFuQ29kZSk7CisKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KICAgICAKICAgICB2b2lkIGVtaXRTd2l0Y2hGb3JNdWx0aUJ5T2Zmc2V0KExWYWx1ZSBi
YXNlLCBib29sIHN0cnVjdHVyZXNDaGVja2VkLCBWZWN0b3I8U3dpdGNoQ2FzZSwgMj4mIGNhc2Vz
LCBMQmFzaWNCbG9jayBleGl0KQogICAgIHsKQEAgLTE0NDY4LDYgKzE0ODI0LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSwgcmVzdWx0KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICBMVmFsdWUgbG93RGF0YVZpZXdPYmplY3Qo
RWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSk7
CisgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UsIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBsb3dTdHJpbmcoRWRnZSBl
ZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3Vs
YXRpb24pCiAgICAgewpAQCAtMTQ5NDMsNiArMTUzMDYsOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFdlYWtTZXRPYmplY3RVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0
KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZpZXdPYmplY3RV
c2U6CisgICAgICAgICAgICBzcGVjdWxhdGVEYXRhVmlld09iamVjdChlZGdlKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgICAgIHNwZWN1bGF0
ZVN0cmluZyhlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU0MzcsNiArMTU4MDMsMTcg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSwg
bG93Q2VsbChlZGdlKSk7CiAgICAgfQorCisgICAgdm9pZCBzcGVjdWxhdGVEYXRhVmlld09iamVj
dChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQorICAgIHsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0so
CisgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNEYXRhVmlld09iamVj
dCwgaXNOb3RUeXBlKGNlbGwsIERhdGFWaWV3VHlwZSkpOworICAgIH0KKworICAgIHZvaWQgc3Bl
Y3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgc3BlY3VsYXRl
RGF0YVZpZXdPYmplY3QoZWRnZSwgbG93Q2VsbChlZGdlKSk7CisgICAgfQogICAgIAogICAgIHZv
aWQgc3BlY3VsYXRlU3RyaW5nKEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAgICAgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCShyZXZpc2lvbiAy
MzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzksNiArMjM5LDM4IEBAIGNvbnN0IGNoYXIqIGludHJpbnNpY05h
bWUoSW50cmluc2ljIGludHIKICAgICAgICAgcmV0dXJuICJDUFVDcHVpZEludHJpbnNpYyI7CiAg
ICAgY2FzZSBDUFVQYXVzZUludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJDUFVQYXVzZUludHJp
bnNpYyI7CisgICAgY2FzZSBEYXRhVmlld0dldEludDg6CisgICAgICAgIHJldHVybiAiRGF0YVZp
ZXdHZXRJbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3R2V0VWludDg6CisgICAgICAgIHJldHVybiAi
RGF0YVZpZXdHZXRVaW50OCI7CisgICAgY2FzZSBEYXRhVmlld0dldEludDE2OgorICAgICAgICBy
ZXR1cm4gIkRhdGFWaWV3R2V0SW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MTY6Cisg
ICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRVaW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdHZXRJ
bnQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldEludDMyIjsKKyAgICBjYXNlIERhdGFW
aWV3R2V0VWludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0VWludDMyIjsKKyAgICBj
YXNlIERhdGFWaWV3R2V0RmxvYXQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldEZsb2F0
MzIiOworICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDY0OgorICAgICAgICByZXR1cm4gIkRhdGFW
aWV3R2V0RmxvYXQ2NCI7CisgICAgY2FzZSBEYXRhVmlld1NldEludDg6CisgICAgICAgIHJldHVy
biAiRGF0YVZpZXdTZXRJbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0VWludDg6CisgICAgICAg
IHJldHVybiAiRGF0YVZpZXdTZXRVaW50OCI7CisgICAgY2FzZSBEYXRhVmlld1NldEludDE2Ogor
ICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0SW50MTYiOworICAgIGNhc2UgRGF0YVZpZXdTZXRV
aW50MTY6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRVaW50MTYiOworICAgIGNhc2UgRGF0
YVZpZXdTZXRJbnQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldEludDMyIjsKKyAgICBj
YXNlIERhdGFWaWV3U2V0VWludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0VWludDMy
IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0RmxvYXQzMjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmll
d1NldEZsb2F0MzIiOworICAgIGNhc2UgRGF0YVZpZXdTZXRGbG9hdDY0OgorICAgICAgICByZXR1
cm4gIkRhdGFWaWV3U2V0RmxvYXQ2NCI7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRyaW5zaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRyaW5zaWMuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsx
MzksMjMgQEAgZW51bSBJbnRyaW5zaWMgewogICAgIENQVVJkdHNjSW50cmluc2ljLAogICAgIENQ
VUNwdWlkSW50cmluc2ljLAogICAgIENQVVBhdXNlSW50cmluc2ljLAorCisgICAgRGF0YVZpZXdH
ZXRJbnQ4LAorICAgIERhdGFWaWV3R2V0VWludDgsCisgICAgRGF0YVZpZXdHZXRJbnQxNiwKKyAg
ICBEYXRhVmlld0dldFVpbnQxNiwKKyAgICBEYXRhVmlld0dldEludDMyLAorICAgIERhdGFWaWV3
R2V0VWludDMyLAorICAgIERhdGFWaWV3R2V0RmxvYXQzMiwKKyAgICBEYXRhVmlld0dldEZsb2F0
NjQsCisgICAgRGF0YVZpZXdTZXRJbnQ4LAorICAgIERhdGFWaWV3U2V0VWludDgsCisgICAgRGF0
YVZpZXdTZXRJbnQxNiwKKyAgICBEYXRhVmlld1NldFVpbnQxNiwKKyAgICBEYXRhVmlld1NldElu
dDMyLAorICAgIERhdGFWaWV3U2V0VWludDMyLAorICAgIERhdGFWaWV3U2V0RmxvYXQzMiwKKyAg
ICBEYXRhVmlld1NldEZsb2F0NjQsCiB9OwogCiBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKElu
dHJpbnNpYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDIyICszOSwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogLyogU291cmNlIGZvciBK
U0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gZGF0YVZpZXdUYWJsZQotICBnZXRJbnQ4
ICAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4ICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0VWludDggICAgICAgICAgICAgIGRhdGFWaWV3UHJv
dG9GdW5jR2V0VWludDggICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdl
dEludDE2ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDE2ICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRVaW50MTYgICAgICAgICAgICAgZGF0YVZp
ZXdQcm90b0Z1bmNHZXRVaW50MTYgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEK
LSAgZ2V0SW50MzIgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MzIgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldFVpbnQzMiAgICAgICAgICAgICBk
YXRhVmlld1Byb3RvRnVuY0dldFVpbnQzMiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAg
ICAgMQotICBnZXRGbG9hdDMyICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDMy
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0RmxvYXQ2NCAgICAgICAg
ICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NCAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAgICAgICAxCi0gIHNldEludDggICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldElu
dDggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgotICBzZXRVaW50OCAgICAg
ICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50OCAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uICAgICAgIDIKLSAgc2V0SW50MTYgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5j
U2V0SW50MTYgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldFVpbnQx
NiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQxNiAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gICAgICAgMgotICBzZXRJbnQzMiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90
b0Z1bmNTZXRJbnQzMiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0
VWludDMyICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldEZsb2F0MzIgICAgICAgICAgICBkYXRhVmll
d1Byb3RvRnVuY1NldEZsb2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgot
ICBzZXRGbG9hdDY0ICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0ICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKKyAgZ2V0SW50OCAgICAgICAgICAgICAgIGRh
dGFWaWV3UHJvdG9GdW5jR2V0SW50OCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAg
ICAxICBEYXRhVmlld0dldEludDgKKyAgZ2V0VWludDggICAgICAgICAgICAgIGRhdGFWaWV3UHJv
dG9GdW5jR2V0VWludDggICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRh
Vmlld0dldFVpbnQ4CisgIGdldEludDE2ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dl
dEludDE2ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRJ
bnQxNgorICBnZXRVaW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0VWludDE2Cisg
IGdldEludDMyICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDMyICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRJbnQzMgorICBnZXRVaW50
MzIgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uICAgICAgIDEgIERhdGFWaWV3R2V0VWludDMyCisgIGdldEZsb2F0MzIgICAg
ICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0MzIgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRGbG9hdDMyCisgIGdldEZsb2F0NjQgICAgICAgICAg
ICBkYXRhVmlld1Byb3RvRnVuY0dldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
ICAgICAgMSAgRGF0YVZpZXdHZXRGbG9hdDY0CisgIHNldEludDggICAgICAgICAgICAgICBkYXRh
Vmlld1Byb3RvRnVuY1NldEludDggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAg
MiAgRGF0YVZpZXdTZXRJbnQ4CisgIHNldFVpbnQ4ICAgICAgICAgICAgICBkYXRhVmlld1Byb3Rv
RnVuY1NldFVpbnQ4ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZp
ZXdTZXRVaW50OAorICBzZXRJbnQxNiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJ
bnQxNiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0SW50
MTYKKyAgc2V0VWludDE2ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2ICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldFVpbnQxNgorICBz
ZXRJbnQzMiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQzMiAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0SW50MzIKKyAgc2V0VWludDMy
ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDMyICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAgICAgICAyICBEYXRhVmlld1NldFVpbnQzMgorICBzZXRGbG9hdDMyICAgICAg
ICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMyICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uICAgICAgIDIgIERhdGFWaWV3U2V0RmxvYXQzMgorICBzZXRGbG9hdDY0ICAgICAgICAgICAg
ZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAg
ICAgIDIgIERhdGFWaWV3U2V0RmxvYXQ2NAogICBidWZmZXIgICAgICAgICAgICAgICAgZGF0YVZp
ZXdQcm90b0dldHRlckJ1ZmZlciAgICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yICAgICAgIDAK
ICAgYnl0ZUxlbmd0aCAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoICAg
ICAgICBEb250RW51bXxBY2Nlc3NvciAgICAgICAwCiAgIGJ5dGVPZmZzZXQgICAgICAgICAgICBk
YXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCAgICAgICAgRG9udEVudW18QWNjZXNzb3IgICAg
ICAgMApJbmRleDogU291cmNlL1dURi93dGYvVHJpU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9UcmlTdGF0ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvV1RGL3d0
Zi9UcmlTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFj
ZSBXVEYgewogCi1lbnVtIFRyaVN0YXRlIHsKK2VudW0gVHJpU3RhdGUgOiBpbnQ4X3QgewogICAg
IEZhbHNlVHJpU3RhdGUsCiAgICAgVHJ1ZVRyaVN0YXRlLAogICAgIE1peGVkVHJpU3RhdGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347579</attachid>
            <date>2018-08-20 17:27:34 -0700</date>
            <delta_ts>2018-08-20 23:05:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>109742</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzUxMDApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDk4IEBACisyMDE4LTA4LTIwICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIElubGluZSBEYXRhVmlldyBhY2Nlc3NlcyBpbnRvIERGRy9GVEwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU3MworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDMyODY3NDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGF0YS12aWV3LWFjY2Vz
c2VzLTIuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGxldC5wLm9mLk9i
amVjdC5rZXlzLmxldC5zdHIpOgorICAgICAgICAobGV0LnAub2YuT2JqZWN0LmtleXMpOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RhdGEtdmlldy1hY2Nlc3Nl
cy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAobGV0LnAub2YuT2JqZWN0
LmtleXMubGV0LnN0cik6CisgICAgICAgIChsZXQucC5vZi5PYmplY3Qua2V5cyk6CisgICAgICAg
ICogc3RyZXNzL2RhdGF2aWV3LWppdC1ib3VuZHMtY2hlY2tzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGFzc2VydCk6CisgICAgICAgIChsZXQucC5vZi5PYmplY3Qua2V5cy5sZXQuc3RyKToKKyAgICAg
ICAgKGxldC5wLm9mLk9iamVjdC5rZXlzKToKKyAgICAgICAgKiBzdHJlc3MvZGF0YXZpZXctaml0
LWdldC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAodGVzdDEuYmlnRW5k
aWFuKToKKyAgICAgICAgKHRlc3QxLmxpdHRsZUVuZGlhbik6CisgICAgICAgICh0ZXN0MS5iaUVu
ZGlhbik6CisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICh0ZXN0Mi5iaWdFbmRpYW4pOgorICAg
ICAgICAodGVzdDIubGl0dGxlRW5kaWFuKToKKyAgICAgICAgKHRlc3QyLmJpRW5kaWFuKToKKyAg
ICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzLmJpZ0VuZGlhbik6CisgICAgICAgICh0ZXN0
My5saXR0bGVFbmRpYW4pOgorICAgICAgICAodGVzdDMuYmlFbmRpYW4pOgorICAgICAgICAodGVz
dDMpOgorICAgICAgICAodGVzdDQuYmlnRW5kaWFuKToKKyAgICAgICAgKHRlc3Q0LmxpdHRsZUVu
ZGlhbik6CisgICAgICAgICh0ZXN0NC5iaUVuZGlhbik6CisgICAgICAgICh0ZXN0NCk6CisgICAg
ICAgICh0ZXN0NS5iaWdFbmRpYW4pOgorICAgICAgICAodGVzdDUubGl0dGxlRW5kaWFuKToKKyAg
ICAgICAgKHRlc3Q1LmJpRW5kaWFuKToKKyAgICAgICAgKHRlc3Q1KToKKyAgICAgICAgKHRlc3Q2
LmJpZ0VuZGlhbik6CisgICAgICAgICh0ZXN0Ni5saXR0bGVFbmRpYW4pOgorICAgICAgICAodGVz
dDYuYmlFbmRpYW4pOgorICAgICAgICAodGVzdDYpOgorICAgICAgICAodGVzdDcubG9hZCk6Cisg
ICAgICAgICh0ZXN0Nyk6CisgICAgICAgICh0ZXN0OC5sb2FkKToKKyAgICAgICAgKHRlc3Q4KToK
KyAgICAgICAgKiBzdHJlc3MvZGF0YXZpZXctaml0LW5ldXRlci5qczogQWRkZWQuCisgICAgICAg
IChhc3NlcnQpOgorICAgICAgICAodGVzdC5sb2FkKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAodGVzdDIubG9hZCk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICogc3RyZXNzL2RhdGF2
aWV3LWppdC1zZXQuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGlzTGl0
dGxlRW5kaWFuKToKKyAgICAgICAgKHJlYWRCeXRlKToKKyAgICAgICAgKHJlYWRIZXgpOgorICAg
ICAgICAodGVzdC5zdG9yZUxpdHRsZUVuZGlhbik6CisgICAgICAgICh0ZXN0LnN0b3JlQmlnRW5k
aWFuKToKKyAgICAgICAgKHRlc3Quc3RvcmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0
ZXN0Mi5zdG9yZUxpdHRsZUVuZGlhbik6CisgICAgICAgICh0ZXN0Mi5zdG9yZUJpZ0VuZGlhbik6
CisgICAgICAgICh0ZXN0Mi5zdG9yZSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0
My5zdG9yZUxpdHRsZUVuZGlhbik6CisgICAgICAgICh0ZXN0My5zdG9yZUJpZ0VuZGlhbik6Cisg
ICAgICAgICh0ZXN0My5zdG9yZSk6CisgICAgICAgICh0ZXN0Myk6CisgICAgICAgICh0ZXN0NC5z
dG9yZUxpdHRsZUVuZGlhbik6CisgICAgICAgICh0ZXN0NC5zdG9yZUJpZ0VuZGlhbik6CisgICAg
ICAgICh0ZXN0NC5zdG9yZSk6CisgICAgICAgICh0ZXN0NCk6CisgICAgICAgICh0ZXN0NS5zdG9y
ZUxpdHRsZUVuZGlhbik6CisgICAgICAgICh0ZXN0NS5zdG9yZUJpZ0VuZGlhbik6CisgICAgICAg
ICh0ZXN0NS5zdG9yZSk6CisgICAgICAgICh0ZXN0NSk6CisgICAgICAgICh0ZXN0Ni5zdG9yZUxp
dHRsZUVuZGlhbik6CisgICAgICAgICh0ZXN0Ni5zdG9yZUJpZ0VuZGlhbik6CisgICAgICAgICh0
ZXN0Ni5zdG9yZSk6CisgICAgICAgICh0ZXN0Nik6CisgICAgICAgICh0ZXN0Ny5zdG9yZSk6Cisg
ICAgICAgICh0ZXN0Nyk6CisgICAgICAgICh0ZXN0OC5zdG9yZSk6CisgICAgICAgICh0ZXN0OCk6
CisgICAgICAgICogc3RyZXNzL2RhdGF2aWV3LWppdC11bmFsaWduZWQtYWNjZXNzZXMuanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGxldC5wLm9mLk9iamVjdC5rZXlzLmxl
dC5zdHIpOgorICAgICAgICAobGV0LnAub2YuT2JqZWN0LmtleXMpOgorCiAyMDE4LTA4LTE3ICBT
YWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIGludGVyc2VjdGlvbk9m
UGFzdFZhbHVlc0F0SGVhZCBtdXN0IGZpbHRlciB2YWx1ZXMgYWZ0ZXIgdGhleSd2ZSBvYnNlcnZl
ZCBhbiBpbnZhbGlkYXRpb24gcG9pbnQKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Rh
dGEtdmlldy1hY2Nlc3Nlcy0yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2RhdGEtdmlldy1hY2Nlc3Nlcy0yLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2RhdGEtdmlldy1hY2Nlc3Nlcy0yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzggQEAKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gYXNzZXJ0KGIsIG0gPSAiIikg
eworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQ6ICIgKyBtKTsKK30K
KworbGV0IGdldE9wcyA9IHsKKyAgICBnZXRVaW50ODogMSwKKyAgICBnZXRVaW50MTY6IDIsCisg
ICAgZ2V0VWludDMyOiA0LAorICAgIGdldEludDg6IDEsCisgICAgZ2V0SW50MTY6IDIsCisgICAg
Z2V0SW50MzI6IDQsCisgICAgZ2V0RmxvYXQzMjogNCwKKyAgICBnZXRGbG9hdDY0OiA4LAorfTsK
KworbGV0IHNldE9wcyA9IHsKKyAgICBzZXRVaW50ODogMSwKKyAgICBzZXRVaW50MTY6IDIsCisg
ICAgc2V0VWludDMyOiA0LAorICAgIHNldEludDg6IDEsCisgICAgc2V0SW50MTY6IDIsCisgICAg
c2V0SW50MzI6IDQsCisgICAgc2V0RmxvYXQzMjogNCwKKyAgICBzZXRGbG9hdDY0OiA4LAorfTsK
KworbGV0IGdldEZ1bmNzID0gW107Citmb3IgKGxldCBwIG9mIE9iamVjdC5rZXlzKGdldE9wcykp
IHsKKyAgICBsZXQgYnl0ZVNpemUgPSBnZXRPcHNbcF07CisgICAgbGV0IHN0ciA9IGAKKyAgICAg
ICAgKGZ1bmN0aW9uIChkdiwgYnl0ZUxlbmd0aCkgeworICAgICAgICAgICAgbGV0IHN1bSA9IDA7
CisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVMZW5ndGg7IGkgKz0gJHtieXRl
U2l6ZX0pIHsKKyAgICAgICAgICAgICAgICBzdW0gKz0gZHYuJHtwfShpLCBmYWxzZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc3VtOworICAgICAgICB9KTsKKyAgICAgICAg
YDsKKyAgICAgICAKKyAgICBsZXQgZnVuYyA9IGV2YWwoc3RyKTsKKyAgICBub0lubGluZShmdW5j
KTsKKyAgICBnZXRGdW5jcy5wdXNoKGZ1bmMpOworfQorCitsZXQgc2V0RnVuY3MgPSBbXTsKK2Zv
ciAobGV0IHAgb2YgT2JqZWN0LmtleXMoc2V0T3BzKSkgeworICAgIGxldCBieXRlU2l6ZSA9IHNl
dE9wc1twXTsKKyAgICBsZXQgdmFsdWUgPSAxMDsKKyAgICBpZiAocC5pbmRleE9mKCJmbG9hdCIp
ICE9PSAtMSkKKyAgICAgICAgdmFsdWUgPSAxMC41OworICAgIGxldCBzdHIgPSBgCisgICAgICAg
IChmdW5jdGlvbiAoZHYsIGJ5dGVMZW5ndGgpIHsKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgYnl0ZUxlbmd0aDsgaSArPSAke2J5dGVTaXplfSkgeworICAgICAgICAgICAgICAgIGR2
LiR7cH0oaSwgJHt2YWx1ZX0sIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7Cisg
ICAgICAgIGA7CisgICAgICAgCisgICAgbGV0IGZ1bmMgPSBldmFsKHN0cik7CisgICAgbm9Jbmxp
bmUoZnVuYyk7CisgICAgc2V0RnVuY3MucHVzaChmdW5jKTsKK30KKworZnVuY3Rpb24gdGVzdCgp
IHsKKyAgICBjb25zdCBzaXplID0gMTYqMTAyNDsKKyAgICBsZXQgYWIgPSBuZXcgQXJyYXlCdWZm
ZXIoc2l6ZSk7CisgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGFiKTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBmb3IgKGxldCBmIG9mIGdldEZ1bmNzKQor
ICAgICAgICAgICAgZihkdiwgc2l6ZSk7CisgICAgICAgIGZvciAobGV0IGYgb2Ygc2V0RnVuY3Mp
CisgICAgICAgICAgICBmKGR2LCBzaXplKTsKKyAgICB9Cit9Cit0ZXN0KCk7CkluZGV4OiBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9kYXRhLXZpZXctYWNjZXNzZXMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGF0YS12aWV3LWFjY2Vzc2VzLmpzCShub25leGlzdGVu
dCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RhdGEtdmlldy1hY2Nlc3Nlcy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIGFz
c2VydChiLCBtID0gIiIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QmFkOiAiICsgbSk7Cit9CisKK2xldCBnZXRPcHMgPSB7CisgICAgZ2V0VWludDg6IDEsCisgICAg
Z2V0VWludDE2OiAyLAorICAgIGdldFVpbnQzMjogNCwKKyAgICBnZXRJbnQ4OiAxLAorICAgIGdl
dEludDE2OiAyLAorICAgIGdldEludDMyOiA0LAorICAgIGdldEZsb2F0MzI6IDQsCisgICAgZ2V0
RmxvYXQ2NDogOCwKK307CisKK2xldCBzZXRPcHMgPSB7CisgICAgc2V0VWludDg6IDEsCisgICAg
c2V0VWludDE2OiAyLAorICAgIHNldFVpbnQzMjogNCwKKyAgICBzZXRJbnQ4OiAxLAorICAgIHNl
dEludDE2OiAyLAorICAgIHNldEludDMyOiA0LAorICAgIHNldEZsb2F0MzI6IDQsCisgICAgc2V0
RmxvYXQ2NDogOCwKK307CisKK2xldCBnZXRGdW5jcyA9IFtdOworZm9yIChsZXQgcCBvZiBPYmpl
Y3Qua2V5cyhnZXRPcHMpKSB7CisgICAgbGV0IGVuZE9mQ2FsbCA9IGdldE9wc1twXSA9PT0gMSA/
ICIpOyIgOiAiLCB0cnVlKTsiOworICAgIGxldCBzdHIgPSBgCisgICAgICAgIChmdW5jdGlvbiAk
e3B9KGR2LCBpbmRleCkgeworICAgICAgICAgICAgcmV0dXJuIGR2LiR7cH0oaW5kZXgke2VuZE9m
Q2FsbH0KKyAgICAgICAgfSkKKyAgICBgOworICAgICAgIAorICAgIGxldCBmdW5jID0gZXZhbChz
dHIpOworICAgIG5vSW5saW5lKGZ1bmMpOworICAgIGdldEZ1bmNzLnB1c2goZnVuYyk7Cit9CisK
K2xldCBzZXRGdW5jcyA9IFtdOworZm9yIChsZXQgcCBvZiBPYmplY3Qua2V5cyhzZXRPcHMpKSB7
CisgICAgbGV0IGVuZE9mQ2FsbCA9IHNldE9wc1twXSA9PT0gMSA/ICIpOyIgOiAiLCB0cnVlKTsi
OworICAgIGxldCBzdHIgPSBgCisgICAgICAgIChmdW5jdGlvbiAke3B9KGR2LCBpbmRleCwgdmFs
dWUpIHsKKyAgICAgICAgICAgIGR2LiR7cH0oaW5kZXgsIHZhbHVlJHtlbmRPZkNhbGx9CisgICAg
ICAgIH0pCisgICAgYDsKKworICAgIGxldCBmdW5jID0gZXZhbChzdHIpOworICAgIG5vSW5saW5l
KGZ1bmMpOworICAgIHNldEZ1bmNzLnB1c2goZnVuYyk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7
CisgICAgY29uc3Qgc2l6ZSA9IDE2KjEwMjQ7CisgICAgbGV0IGFiID0gbmV3IEFycmF5QnVmZmVy
KHNpemUpOworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IGluZGV4ID0gKE1hdGgucmFuZG9t
KCkgKiBzaXplKSA+Pj4gMDsKKyAgICAgICAgaW5kZXggPSBNYXRoLm1heChpbmRleCAtIDgsIDAp
OworICAgICAgICBmb3IgKGxldCBmIG9mIGdldEZ1bmNzKSB7CisgICAgICAgICAgICBmKGR2LCBp
bmRleCk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBmIG9mIHNldEZ1bmNzKSB7Cisg
ICAgICAgICAgICBmKGR2LCBpbmRleCwgMTApOworICAgICAgICB9CisgICAgfQorCit9Cit0ZXN0
KCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9kYXRhdmlldy1qaXQtYm91bmRzLWNoZWNrcy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9kYXRhdmlldy1qaXQtYm91bmRzLWNoZWNrcy5q
cwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9kYXRhdmlldy1qaXQtYm91bmRzLWNo
ZWNrcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAorInVzZSBzdHJpY3QiOwor
CitmdW5jdGlvbiBhc3NlcnQoYiwgbSA9ICIiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkJhZDogIiArIG0pOworfQorCitsZXQgZ2V0T3BzID0geworICAgIGdldFVp
bnQ4OiAxLAorICAgIGdldFVpbnQxNjogMiwKKyAgICBnZXRVaW50MzI6IDQsCisgICAgZ2V0SW50
ODogMSwKKyAgICBnZXRJbnQxNjogMiwKKyAgICBnZXRJbnQzMjogNCwKKyAgICBnZXRGbG9hdDMy
OiA0LAorICAgIGdldEZsb2F0NjQ6IDgsCit9OworCitsZXQgc2V0T3BzID0geworICAgIHNldFVp
bnQ4OiAxLAorICAgIHNldFVpbnQxNjogMiwKKyAgICBzZXRVaW50MzI6IDQsCisgICAgc2V0SW50
ODogMSwKKyAgICBzZXRJbnQxNjogMiwKKyAgICBzZXRJbnQzMjogNCwKKyAgICBzZXRGbG9hdDMy
OiA0LAorICAgIHNldEZsb2F0NjQ6IDgsCit9OworCitsZXQgZ2V0RnVuY3MgPSBbXTsKK2ZvciAo
bGV0IHAgb2YgT2JqZWN0LmtleXMoZ2V0T3BzKSkgeworICAgIGxldCBlbmRPZkNhbGwgPSBnZXRP
cHNbcF0gPT09IDEgPyAiKTsiIDogIiwgdHJ1ZSk7IjsKKyAgICBsZXQgc3RyID0gYAorICAgICAg
ICAoZnVuY3Rpb24gJHtwfShkdiwgaW5kZXgpIHsKKyAgICAgICAgICAgIHJldHVybiBkdi4ke3B9
KGluZGV4JHtlbmRPZkNhbGx9CisgICAgICAgIH0pCisgICAgYDsKKyAgICAgICAKKyAgICBsZXQg
ZnVuYyA9IGV2YWwoc3RyKTsKKyAgICBub0lubGluZShmdW5jKTsKKyAgICBnZXRGdW5jcy5wdXNo
KGZ1bmMpOworfQorCitsZXQgc2V0RnVuY3MgPSBbXTsKK2ZvciAobGV0IHAgb2YgT2JqZWN0Lmtl
eXMoc2V0T3BzKSkgeworICAgIGxldCBlbmRPZkNhbGwgPSBzZXRPcHNbcF0gPT09IDEgPyAiKTsi
IDogIiwgdHJ1ZSk7IjsKKyAgICBsZXQgc3RyID0gYAorICAgICAgICAoZnVuY3Rpb24gJHtwfShk
diwgaW5kZXgsIHZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gZHYuJHtwfShpbmRleCwgdmFs
dWUke2VuZE9mQ2FsbH0KKyAgICAgICAgfSkKKyAgICBgOworCisgICAgbGV0IGZ1bmMgPSBldmFs
KHN0cik7CisgICAgbm9JbmxpbmUoZnVuYyk7CisgICAgc2V0RnVuY3MucHVzaChmdW5jKTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0VGhyb3dzUmFuZ2VFcnJvcihmKSB7CisgICAgbGV0IGUgPSBudWxs
OworICAgIHRyeSB7CisgICAgICAgIGYoKTsKKyAgICB9IGNhdGNoKGVycikgeworICAgICAgICBl
ID0gZXJyOworICAgIH0KKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFJhbmdlRXJyb3IsIGUpOwor
fQorCitmdW5jdGlvbiB0ZXN0KHdhcm11cCkgeworICAgIGNvbnN0IHNpemUgPSAxNioxMDI0Owor
ICAgIGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcihzaXplKTsKKyAgICBsZXQgZHYgPSBuZXcgRGF0
YVZpZXcoYWIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd2FybXVwOyArK2kpIHsKKyAgICAg
ICAgZm9yIChsZXQgZiBvZiBnZXRGdW5jcykgeworICAgICAgICAgICAgZihkdiwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmb3IgKGxldCBmIG9mIHNldEZ1bmNzKSB7CisgICAgICAgICAgICBm
KGR2LCAwLCAxMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGxldCBmIG9mIGdldEZ1
bmNzKSB7CisgICAgICAgIGFzc2VydFRocm93c1JhbmdlRXJyb3IoKCkgPT4geworICAgICAgICAg
ICAgbGV0IGluZGV4ID0gc2l6ZSAtIGdldE9wc1tmLm5hbWVdICsgMTsKKyAgICAgICAgICAgIGYo
ZHYsIGluZGV4KTsKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydFRocm93c1JhbmdlRXJyb3Io
KCkgPT4geworICAgICAgICAgICAgbGV0IGluZGV4ID0gLTE7CisgICAgICAgICAgICBmKGR2LCBp
bmRleCk7CisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRUaHJvd3NSYW5nZUVycm9yKCgpID0+
IHsKKyAgICAgICAgICAgIGxldCBpbmRleCA9IC0yMTQ3NDgzNjQ4OworICAgICAgICAgICAgZihk
diwgaW5kZXgpOworICAgICAgICB9KTsKKyAgICB9IAorCisgICAgZm9yIChsZXQgZiBvZiBzZXRG
dW5jcykgeworICAgICAgICBhc3NlcnRUaHJvd3NSYW5nZUVycm9yKCgpID0+IHsKKyAgICAgICAg
ICAgIGxldCBpbmRleCA9IHNpemUgLSBzZXRPcHNbZi5uYW1lXSArIDE7CisgICAgICAgICAgICBm
KGR2LCBpbmRleCwgMTApOworICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0VGhyb3dzUmFuZ2VF
cnJvcigoKSA9PiB7CisgICAgICAgICAgICBsZXQgaW5kZXggPSAtMTsKKyAgICAgICAgICAgIGYo
ZHYsIGluZGV4LCAxMCk7CisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRUaHJvd3NSYW5nZUVy
cm9yKCgpID0+IHsKKyAgICAgICAgICAgIGxldCBpbmRleCA9IC0yMTQ3NDgzNjQ4OworICAgICAg
ICAgICAgZihkdiwgaW5kZXgsIDEwKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit0ZXN0KDIw
MDApOwordGVzdCgxMDAwMCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9kYXRhdmlldy1qaXQtZ2V0
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3LWppdC1nZXQuanMJKG5v
bmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvZGF0YXZpZXctaml0LWdldC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMwNSBAQAorInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBhc3Nl
cnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQhIik7Cit9
CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGZ1bmN0aW9uIGJpZ0VuZGlhbihvLCBpKSB7Cisg
ICAgICAgIHJldHVybiBvLmdldEludDMyKGksIGZhbHNlKTsKKyAgICB9CisgICAgbm9JbmxpbmUo
YmlnRW5kaWFuKTsKKyAgICBmdW5jdGlvbiBsaXR0bGVFbmRpYW4obywgaSkgeworICAgICAgICBy
ZXR1cm4gby5nZXRJbnQzMihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUobGl0dGxlRW5k
aWFuKTsKKyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAgICAgIHJldHVybiBv
LmdldEludDMyKGksIGIpOworICAgIH0KKyAgICBub0lubGluZShiaUVuZGlhbik7CisKKyAgICBs
ZXQgYWIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7CisgICAgbGV0IHRhID0gbmV3IEludDMyQXJyYXko
YWIpOworICAgIHRhWzBdID0gMHgwMTAyMDMwNDsKKyAgICBsZXQgZHYgPSBuZXcgRGF0YVZpZXco
YWIpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFz
c2VydChiaWdFbmRpYW4oZHYsIDApID09PSAweDA0MDMwMjAxKTsKKyAgICAgICAgYXNzZXJ0KGxp
dHRsZUVuZGlhbihkdiwgMCkgPT09IDB4MDEwMjAzMDQpOworICAgICAgICBpZiAoaSAlIDIpCisg
ICAgICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAxMDIwMzA0KTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkg
PT09IDB4MDQwMzAyMDEpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkgeworICAgICAgICBhc3NlcnQoYmlnRW5kaWFuKGR2LCAwKSA9PT0gMHgwNDAzMDIwMSk7
CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYsIDApID09PSAweDAxMDIwMzA0KTsKKyAg
ICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVl
KSA9PT0gMHgwMTAyMDMwNCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChiaUVu
ZGlhbihkdiwgMCwgZmFsc2UpID09PSAweDA0MDMwMjAxKTsKKyAgICB9CisKKyAgICAvLyBNYWtl
IHN1cmUgd2UgZ2V0IHRoZSByaWdodCBzaWduLgorICAgIHRhWzBdID0gLTMyMzYxMzg2OyAvLyAw
eGZlMTIzNDU2CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAweDU2MzQxMmZlKTsKKyAgICAgICAgYXNzZXJ0
KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09IC0zMjM2MTM4Nik7CisgICAgICAgIGlmIChpICUgMikK
KyAgICAgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IC0zMjM2MTM4Nik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgZmFsc2Up
ID09PSAweDU2MzQxMmZlKTsKKyAgICB9CisKKyAgICAvLyAtMjE0NjI5MDYwMiA9PSAoaW50KTB4
ODAxMjM0NTYKKyAgICB0YVswXSA9IDB4NTYzNDEyODA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4oZHYsIDApID09PSAtMjE0
NjI5MDYwMik7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYsIDApID09PSAweDU2MzQx
MjgwKTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2
LCAwLCB0cnVlKSA9PT0gMHg1NjM0MTI4MCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFz
c2VydChiaUVuZGlhbihkdiwgMCwgZmFsc2UpID09PSAtMjE0NjI5MDYwMik7CisgICAgfQorfQor
dGVzdDEoKTsKKworZnVuY3Rpb24gdGVzdDIoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8s
IGkpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0SW50MTYoaSwgZmFsc2UpOworICAgIH0KKyAgICBu
b0lubGluZShiaWdFbmRpYW4pOworICAgIGZ1bmN0aW9uIGxpdHRsZUVuZGlhbihvLCBpKSB7Cisg
ICAgICAgIHJldHVybiBvLmdldEludDE2KGksIHRydWUpOworICAgIH0KKyAgICBub0lubGluZShs
aXR0bGVFbmRpYW4pOworICAgIGZ1bmN0aW9uIGJpRW5kaWFuKG8sIGksIGIpIHsKKyAgICAgICAg
cmV0dXJuIG8uZ2V0SW50MTYoaSwgYik7CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsK
KworICAgIGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcigyKTsKKyAgICBsZXQgdGEgPSBuZXcgSW50
MTZBcnJheShhYik7CisgICAgdGFbMF0gPSAweDAxMDI7CisgICAgbGV0IGR2ID0gbmV3IERhdGFW
aWV3KGFiKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAg
ICBhc3NlcnQoYmlnRW5kaWFuKGR2LCAwKSA9PT0gMHgwMjAxKTsKKyAgICAgICAgYXNzZXJ0KGxp
dHRsZUVuZGlhbihkdiwgMCkgPT09IDB4MDEwMik7CisgICAgICAgIGlmIChpICUgMikKKyAgICAg
ICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IDB4MDEwMik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgZmFsc2UpID09PSAweDAy
MDEpOworICAgIH0KKworICAgIC8vIENoZWNrIHNpZ24uCisgICAgdGFbMF0gPSAtNTEyOyAvLyAw
eGZlMDAKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNz
ZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT09IDB4MDBmZSk7CisgICAgICAgIGFzc2VydChsaXR0bGVF
bmRpYW4oZHYsIDApID09PSAtNTEyKTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAg
YXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVlKSA9PT0gLTUxMik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMCwgZmFsc2UpID09PSAweDAwZmUpOworICAg
IH0KKworICAgIC8vIENoZWNrIHNpZ24gZXh0ZW5zaW9uLgorICAgIHRhWzBdID0gMHgwMGZlOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoYmln
RW5kaWFuKGR2LCAwKSA9PT0gLTUxMik7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYs
IDApID09PSAweDAwZmUpOworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICBhc3NlcnQo
YmlFbmRpYW4oZHYsIDAsIHRydWUpID09PSAweDAwZmUpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PT0gLTUxMik7CisgICAgfQorfQor
dGVzdDIoKTsKKworZnVuY3Rpb24gdGVzdDMoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8s
IGkpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0RmxvYXQzMihpLCBmYWxzZSk7CisgICAgfQorICAg
IG5vSW5saW5lKGJpZ0VuZGlhbik7CisgICAgZnVuY3Rpb24gbGl0dGxlRW5kaWFuKG8sIGkpIHsK
KyAgICAgICAgcmV0dXJuIG8uZ2V0RmxvYXQzMihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9Jbmxp
bmUobGl0dGxlRW5kaWFuKTsKKyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAg
ICAgIHJldHVybiBvLmdldEZsb2F0MzIoaSwgYik7CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5k
aWFuKTsKKworICAgIGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICBsZXQgdGEgPSBu
ZXcgRmxvYXQzMkFycmF5KGFiKTsKKyAgICBjb25zdCBub3JtYWwgPSAxMjkxMi40MDM7IC8vIDB4
NDY0OWMxOWQKKyAgICBjb25zdCBub3JtYWxBc0RvdWJsZSA9IDEyOTEyLjQwMzMyMDMxMjUwMDsK
KworICAgIGNvbnN0IGZsaXBwZWQgPSAtNS4xMTYyNDM3NTg5OTE4ODg0ZS0yMTsKKyAgICB0YVsw
XSA9IG5vcm1hbDsKKworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4oZHYs
IDApID09PSBmbGlwcGVkKTsKKyAgICAgICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkgPT09
IDEyOTEyLjQwMzMyMDMxMjUwMCk7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIGFz
c2VydChiaUVuZGlhbihkdiwgMCwgdHJ1ZSkgPT09IG5vcm1hbEFzRG91YmxlKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxzZSkgPT09IGZsaXBw
ZWQpOworICAgIH0KK30KK3Rlc3QzKCk7CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAgIGZ1bmN0
aW9uIGJpZ0VuZGlhbihvLCBpKSB7CisgICAgICAgIHJldHVybiBvLmdldFVpbnQzMihpLCBmYWxz
ZSk7CisgICAgfQorICAgIG5vSW5saW5lKGJpZ0VuZGlhbik7CisgICAgZnVuY3Rpb24gbGl0dGxl
RW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0VWludDMyKGksIHRydWUpOworICAg
IH0KKyAgICBub0lubGluZShsaXR0bGVFbmRpYW4pOworICAgIGZ1bmN0aW9uIGJpRW5kaWFuKG8s
IGksIGIpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0VWludDMyKGksIGIpOworICAgIH0KKyAgICBu
b0lubGluZShiaUVuZGlhbik7CisKKyAgICBsZXQgYWIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7Cisg
ICAgbGV0IHRhID0gbmV3IFVpbnQzMkFycmF5KGFiKTsKKyAgICB0YVswXSA9IDB4YTBiMGQwZjA7
CisKKyAgICBsZXQgZHYgPSBuZXcgRGF0YVZpZXcoYWIpOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoYmlnRW5kaWFuKGR2LCAwKSA9PT0gMHhm
MGQwYjBhMCk7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYsIDApID09PSAweGEwYjBk
MGYwKTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2
LCAwLCB0cnVlKSA9PT0gMHhhMGIwZDBmMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFz
c2VydChiaUVuZGlhbihkdiwgMCwgZmFsc2UpID09PSAweGYwZDBiMGEwKTsKKyAgICB9Cit9Cit0
ZXN0NCgpOworCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAgICBmdW5jdGlvbiBiaWdFbmRpYW4obywg
aSkgeworICAgICAgICByZXR1cm4gby5nZXRVaW50MTYoaSwgZmFsc2UpOworICAgIH0KKyAgICBu
b0lubGluZShiaWdFbmRpYW4pOworICAgIGZ1bmN0aW9uIGxpdHRsZUVuZGlhbihvLCBpKSB7Cisg
ICAgICAgIHJldHVybiBvLmdldFVpbnQxNihpLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUo
bGl0dGxlRW5kaWFuKTsKKyAgICBmdW5jdGlvbiBiaUVuZGlhbihvLCBpLCBiKSB7CisgICAgICAg
IHJldHVybiBvLmdldFVpbnQxNihpLCBiKTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmlFbmRpYW4p
OworCisgICAgbGV0IGFiID0gbmV3IEFycmF5QnVmZmVyKDQpOworICAgIGxldCB0YSA9IG5ldyBV
aW50MzJBcnJheShhYik7CisgICAgdGFbMF0gPSAweGEwYjBkMGYwOworCisgICAgbGV0IGR2ID0g
bmV3IERhdGFWaWV3KGFiKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsK
KyAgICAgICAgYXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMCkgPT0gMHhkMGYwKTsKKyAgICAgICAg
YXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT0gMHhmMGQwKTsKKworICAgICAgICBhc3NlcnQobGl0
dGxlRW5kaWFuKGR2LCAxKSA9PSAweGIwZDApOworICAgICAgICBhc3NlcnQoYmlnRW5kaWFuKGR2
LCAxKSA9PSAweGQwYjApOworCisgICAgICAgIGFzc2VydChsaXR0bGVFbmRpYW4oZHYsIDIpID09
IDB4YTBiMCk7CisgICAgICAgIGFzc2VydChiaWdFbmRpYW4oZHYsIDIpID09IDB4YjBhMCk7CisK
KyAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCB0cnVlKSA9PSAweGQwZjApOworICAgICAg
ICBhc3NlcnQoYmlFbmRpYW4oZHYsIDAsIGZhbHNlKSA9PSAweGYwZDApOworCisgICAgICAgIGFz
c2VydChiaUVuZGlhbihkdiwgMSwgdHJ1ZSkgPT0gMHhiMGQwKTsKKyAgICAgICAgYXNzZXJ0KGJp
RW5kaWFuKGR2LCAxLCBmYWxzZSkgPT0gMHhkMGIwKTsKKworICAgICAgICBhc3NlcnQoYmlFbmRp
YW4oZHYsIDIsIHRydWUpID09IDB4YTBiMCk7CisgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwg
MiwgZmFsc2UpID09IDB4YjBhMCk7CisgICAgfQorfQordGVzdDUoKTsKKworZnVuY3Rpb24gdGVz
dDYoKSB7CisgICAgZnVuY3Rpb24gYmlnRW5kaWFuKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8u
Z2V0SW50MTYoaSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShiaWdFbmRpYW4pOworICAg
IGZ1bmN0aW9uIGxpdHRsZUVuZGlhbihvLCBpKSB7CisgICAgICAgIHJldHVybiBvLmdldEludDE2
KGksIHRydWUpOworICAgIH0KKyAgICBub0lubGluZShsaXR0bGVFbmRpYW4pOworICAgIGZ1bmN0
aW9uIGJpRW5kaWFuKG8sIGksIGIpIHsKKyAgICAgICAgcmV0dXJuIG8uZ2V0SW50MTYoaSwgYik7
CisgICAgfQorICAgIG5vSW5saW5lKGJpRW5kaWFuKTsKKworICAgIGxldCBhYiA9IG5ldyBBcnJh
eUJ1ZmZlcig0KTsKKyAgICBsZXQgdGEgPSBuZXcgVWludDMyQXJyYXkoYWIpOworICAgIHRhWzBd
ID0gMHhhMDcwZmEwMTsKKworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChsaXR0bGVFbmRp
YW4oZHYsIDApID09IC0xNTM1KTsKKyAgICAgICAgYXNzZXJ0KGJpZ0VuZGlhbihkdiwgMCkgPT0g
MHgwMWZhKTsKKworICAgICAgICBhc3NlcnQobGl0dGxlRW5kaWFuKGR2LCAxKSA9PSAweDcwZmEp
OworICAgICAgICBhc3NlcnQoYmlnRW5kaWFuKGR2LCAxKSA9PSAtMTQyNCk7CisKKyAgICAgICAg
YXNzZXJ0KGxpdHRsZUVuZGlhbihkdiwgMikgPT0gLTI0NDY0KTsKKyAgICAgICAgYXNzZXJ0KGJp
Z0VuZGlhbihkdiwgMikgPT0gMHg3MGEwKTsKKworICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYs
IDAsIHRydWUpID09IC0xNTM1KTsKKyAgICAgICAgYXNzZXJ0KGJpRW5kaWFuKGR2LCAwLCBmYWxz
ZSkgPT0gMHgwMWZhKTsKKworICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDEsIHRydWUpID09
IDB4NzBmYSk7CisgICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMSwgZmFsc2UpID09IC0xNDI0
KTsKKworICAgICAgICBhc3NlcnQoYmlFbmRpYW4oZHYsIDIsIHRydWUpID09IC0yNDQ2NCk7Cisg
ICAgICAgIGFzc2VydChiaUVuZGlhbihkdiwgMiwgZmFsc2UpID09IDB4NzBhMCk7CisgICAgfQor
fQordGVzdDYoKTsKKworZnVuY3Rpb24gdGVzdDcoKSB7CisgICAgZnVuY3Rpb24gbG9hZChvLCBp
KSB7CisgICAgICAgIHJldHVybiBvLmdldEludDgoaSk7CisgICAgfQorICAgIG5vSW5saW5lKGxv
YWQpOworCisgICAgbGV0IGFiID0gbmV3IEFycmF5QnVmZmVyKDQpOworICAgIGxldCB0YSA9IG5l
dyBVaW50MzJBcnJheShhYik7CisgICAgdGFbMF0gPSAweGEwNzBmYTAxOworCisgICAgbGV0IGR2
ID0gbmV3IERhdGFWaWV3KGFiKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kp
IHsKKyAgICAgICAgYXNzZXJ0KGxvYWQoZHYsIDApID09PSAweDAxKTsKKyAgICAgICAgYXNzZXJ0
KGxvYWQoZHYsIDEpID09PSAtNik7CisgICAgICAgIGFzc2VydChsb2FkKGR2LCAyKSA9PT0gMHg3
MCk7CisgICAgICAgIGFzc2VydChsb2FkKGR2LCAzKSA9PT0gLTk2KTsKKyAgICB9Cit9Cit0ZXN0
NygpOworCitmdW5jdGlvbiB0ZXN0OCgpIHsKKyAgICBmdW5jdGlvbiBsb2FkKG8sIGkpIHsKKyAg
ICAgICAgcmV0dXJuIG8uZ2V0VWludDgoaSk7CisgICAgfQorICAgIG5vSW5saW5lKGxvYWQpOwor
CisgICAgbGV0IGFiID0gbmV3IEFycmF5QnVmZmVyKDQpOworICAgIGxldCB0YSA9IG5ldyBVaW50
MzJBcnJheShhYik7CisgICAgdGFbMF0gPSAweGEwNzBmYTAxOworCisgICAgbGV0IGR2ID0gbmV3
IERhdGFWaWV3KGFiKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAg
ICAgICAgYXNzZXJ0KGxvYWQoZHYsIDApID09PSAweDAxKTsKKyAgICAgICAgYXNzZXJ0KGxvYWQo
ZHYsIDEpID09PSAweGZhKTsKKyAgICAgICAgYXNzZXJ0KGxvYWQoZHYsIDIpID09PSAweDcwKTsK
KyAgICAgICAgYXNzZXJ0KGxvYWQoZHYsIDMpID09PSAweGEwKQorICAgIH0KK30KK3Rlc3Q4KCk7
CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9kYXRhdmlldy1qaXQtbmV1dGVyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3LWppdC1uZXV0ZXIuanMJKG5vbmV4aXN0ZW50KQor
KysgSlNUZXN0cy9zdHJlc3MvZGF0YXZpZXctaml0LW5ldXRlci5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU5IEBACisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIGFzc2VydChiKSB7Cisg
ICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCEiKTsKK30KKworZnVuY3Rp
b24gdGVzdCgpIHsKKyAgICBmdW5jdGlvbiBsb2FkKG8sIGkpIHsKKyAgICAgICAgcmV0dXJuIG8u
Z2V0VWludDgoaSk7CisgICAgfQorICAgIG5vSW5saW5lKGxvYWQpOworCisgICAgbGV0IGFiID0g
bmV3IEFycmF5QnVmZmVyKDQpOworICAgIGxldCB0YSA9IG5ldyBVaW50MzJBcnJheShhYik7Cisg
ICAgdGFbMF0gPSAweGEwNzBmYTAxOworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQobG9h
ZChkdiwgMCkgPT09IDB4MDEpOworICAgIH0KKworICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoYWIp
OworICAgIGxldCBlID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBsb2FkKGR2LCAwKTsKKyAg
ICB9IGNhdGNoKGVycikgeworICAgICAgICBlID0gZXJyOworICAgIH0KKyAgICBhc3NlcnQoZSBp
bnN0YW5jZW9mIFJhbmdlRXJyb3IpOworfQordGVzdCgpOworCisKK2Z1bmN0aW9uIHRlc3QyKCkg
eworICAgIGZ1bmN0aW9uIGxvYWQobywgaSkgeworICAgICAgICByZXR1cm4gby5nZXRVaW50OChp
KTsKKyAgICB9CisgICAgbm9JbmxpbmUobG9hZCk7CisKKyAgICBsZXQgYWIgPSBuZXcgQXJyYXlC
dWZmZXIoNCk7CisgICAgbGV0IHRhID0gbmV3IFVpbnQzMkFycmF5KGFiKTsKKyAgICB0YVswXSA9
IDB4YTA3MGZhMDE7CisgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGFiKTsKKworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQobG9hZChkdiwgMCkg
PT09IDB4MDEpOworICAgIH0KKworICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoYWIpOworICAgIGxl
dCBlID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBsb2FkKGR2LCAwKTsKKyAgICB9IGNhdGNo
KGVycikgeworICAgICAgICBlID0gZXJyOworICAgIH0KKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9m
IFJhbmdlRXJyb3IpOworfQordGVzdDIoKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3
LWppdC1zZXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZGF0YXZpZXctaml0LXNl
dC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9kYXRhdmlldy1qaXQtc2V0Lmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQwIEBACisidXNlIHN0cmljdCI7CisKK2Z1bmN0
aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3I7Cit9
CisKK2Z1bmN0aW9uIHJlYWRIZXgoZHYsIGJ5dGVzKSB7CisgICAgZnVuY3Rpb24gaXNMaXR0bGVF
bmRpYW4oKSB7IAorICAgICAgICBsZXQgYiA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICAgICAg
bGV0IGR2ID0gbmV3IERhdGFWaWV3KGIpOworICAgICAgICBkdi5zZXRJbnQzMigwLCAweDAwMTEy
MjMzLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIGR2LmdldFVpbnQ4KDApID09PSAweDMzOworICAg
IH0KKyAgICBsZXQgc3RyID0gIiI7CisgICAgZnVuY3Rpb24gcmVhZEJ5dGUoaSkgeworICAgICAg
ICBsZXQgYiA9IGR2LmdldFVpbnQ4KGkpLnRvU3RyaW5nKDE2KTsKKyAgICAgICAgaWYgKGIubGVu
Z3RoID09PSAxKQorICAgICAgICAgICAgYiA9ICIwIiArIGI7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGFzc2VydChiLmxlbmd0aCA9PT0gMikKKyAgICAgICAgcmV0dXJuIGI7CisgICAgfQor
ICAgIGlmIChpc0xpdHRsZUVuZGlhbigpKSB7CisgICAgICAgIGZvciAobGV0IGkgPSBieXRlczsg
aS0tOykKKyAgICAgICAgICAgIHN0ciA9IHN0ciArIHJlYWRCeXRlKGkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZXM7ICsraSkKKyAgICAgICAgICAgIHN0
ciA9IHN0ciArIHJlYWRCeXRlKGkpOworICAgIH0KKworICAgIHJldHVybiAiMHgiICsgc3RyOwor
fQorCit7CisgICAgbGV0IGIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7CisgICAgbGV0IGR2ID0gbmV3
IERhdGFWaWV3KGIpOworICAgIGR2LnNldEludDMyKDAsIDB4MDAxMTIyMzMsIHRydWUpOworICAg
IGFzc2VydChyZWFkSGV4KGR2LCA0KSA9PT0gIjB4MDAxMTIyMzMiKTsKK30KKworZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICBmdW5jdGlvbiBzdG9yZUxpdHRsZUVuZGlhbihkdiwgaW5kZXgsIHZhbHVl
KSB7CisgICAgICAgIGR2LnNldEludDE2KGluZGV4LCB2YWx1ZSwgdHJ1ZSk7CisgICAgfQorICAg
IG5vSW5saW5lKHN0b3JlTGl0dGxlRW5kaWFuKTsKKworICAgIGZ1bmN0aW9uIHN0b3JlQmlnRW5k
aWFuKGR2LCBpbmRleCwgdmFsdWUpIHsKKyAgICAgICAgZHYuc2V0SW50MTYoaW5kZXgsIHZhbHVl
LCBmYWxzZSk7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3JlQmlnRW5kaWFuKTsKKworICAgIGZ1
bmN0aW9uIHN0b3JlKGR2LCBpbmRleCwgdmFsdWUsIGxpdHRsZUVuZGlhbikgeworICAgICAgICBk
di5zZXRJbnQxNihpbmRleCwgdmFsdWUsIGxpdHRsZUVuZGlhbik7CisgICAgfQorICAgIG5vSW5s
aW5lKHN0b3JlKTsKKworICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoMik7CisgICAg
bGV0IGFyciA9IG5ldyBVaW50MTZBcnJheShidWZmZXIpOworICAgIGxldCBkdiA9IG5ldyBEYXRh
VmlldyhidWZmZXIpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Cisg
ICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCAweGZhYmEpOworICAgICAgICBhc3NlcnQo
YXJyWzBdID09PSAweGZhYmEpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAweGFiY2QsIHRydWUp
OworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGFiY2QpOworCisgICAgICAgIHN0b3JlKGR2
LCAwLCAweGJhZGJlZWYsIHRydWUpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGJlZWYp
OworCisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCAweGJiNGRiMzNmLCB0cnVlKTsK
KyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhiMzNmKTsKKworICAgICAgICBzdG9yZUJpZ0Vu
ZGlhbihkdiwgMCwgMHhmYWRhKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhkYWZhKTsK
KworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgMHgxMmFiKTsKKyAgICAgICAgYXNzZXJ0
KGFyclswXSA9PT0gMHhhYjEyKTsKKworICAgICAgICBzdG9yZShkdiwgMCwgMHgxMjM0LCBmYWxz
ZSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4MzQxMik7CisKKyAgICAgICAgc3RvcmUo
ZHYsIDAsIDB4MDEwMiwgZmFsc2UpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweDAyMDEp
OworCisgICAgICAgIHN0b3JlKGR2LCAwLCAtMSwgZmFsc2UpOworICAgICAgICBhc3NlcnQoYXJy
WzBdID09PSAweGZmZmYpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAtMiwgZmFsc2UpOworICAg
ICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZlZmYpOworCisgICAgICAgIHN0b3JlQmlnRW5kaWFu
KGR2LCAwLCAtMSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4ZmZmZik7CisKKyAgICAg
ICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIC0yKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0g
MHhmZWZmKTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgLTIxNDc0ODM2NDgpOyAK
KyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHgwMDAwKTsKKworICAgICAgICBzdG9yZUxpdHRs
ZUVuZGlhbihkdiwgMCwgLTIxNDc0ODM2NDgpOyAKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0g
MHgwMDAwKTsKKworICAgICAgICBzdG9yZUxpdHRsZUVuZGlhbihkdiwgMCwgLTIxNDc0Nzg5ODgp
OyAKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHgxMjM0KTsKKworICAgICAgICBzdG9yZUJp
Z0VuZGlhbihkdiwgMCwgLTIxNDc0Nzg5ODgpOyAKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0g
MHgzNDEyKTsKKyAgICB9Cit9Cit0ZXN0KCk7CisKK2Z1bmN0aW9uIHRlc3QyKCkgeworICAgIGZ1
bmN0aW9uIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCBpbmRleCwgdmFsdWUpIHsKKyAgICAgICAgZHYu
c2V0VWludDE2KGluZGV4LCB2YWx1ZSwgdHJ1ZSk7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3Jl
TGl0dGxlRW5kaWFuKTsKKworICAgIGZ1bmN0aW9uIHN0b3JlQmlnRW5kaWFuKGR2LCBpbmRleCwg
dmFsdWUpIHsKKyAgICAgICAgZHYuc2V0VWludDE2KGluZGV4LCB2YWx1ZSwgZmFsc2UpOworICAg
IH0KKyAgICBub0lubGluZShzdG9yZUJpZ0VuZGlhbik7CisKKyAgICBmdW5jdGlvbiBzdG9yZShk
diwgaW5kZXgsIHZhbHVlLCBsaXR0bGVFbmRpYW4pIHsKKyAgICAgICAgZHYuc2V0VWludDE2KGlu
ZGV4LCB2YWx1ZSwgbGl0dGxlRW5kaWFuKTsKKyAgICB9CisgICAgbm9JbmxpbmUoc3RvcmUpOwor
CisgICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigyKTsKKyAgICBsZXQgYXJyID0gbmV3
IFVpbnQxNkFycmF5KGJ1ZmZlcik7CisgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgc3RvcmVM
aXR0bGVFbmRpYW4oZHYsIDAsIDB4ZmFiYSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4
ZmFiYSk7CisKKyAgICAgICAgc3RvcmUoZHYsIDAsIDB4YWJjZCwgdHJ1ZSk7CisgICAgICAgIGFz
c2VydChhcnJbMF0gPT09IDB4YWJjZCk7CisKKyAgICAgICAgc3RvcmUoZHYsIDAsIDB4YmFkYmVl
ZiwgdHJ1ZSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4YmVlZik7CisKKyAgICAgICAg
c3RvcmVMaXR0bGVFbmRpYW4oZHYsIDAsIDB4YmI0ZGIzM2YsIHRydWUpOworICAgICAgICBhc3Nl
cnQoYXJyWzBdID09PSAweGIzM2YpOworCisgICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAw
eGZhZGEpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGRhZmEpOworCisgICAgICAgIHN0
b3JlQmlnRW5kaWFuKGR2LCAwLCAweDEyYWIpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAw
eGFiMTIpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAweDEyMzQsIGZhbHNlKTsKKyAgICAgICAg
YXNzZXJ0KGFyclswXSA9PT0gMHgzNDEyKTsKKworICAgICAgICBzdG9yZShkdiwgMCwgMHgwMTAy
LCBmYWxzZSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4MDIwMSk7CisKKyAgICAgICAg
c3RvcmUoZHYsIDAsIC0xLCBmYWxzZSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4ZmZm
Zik7CisKKyAgICAgICAgc3RvcmUoZHYsIDAsIC0yLCBmYWxzZSk7CisgICAgICAgIGFzc2VydChh
cnJbMF0gPT09IDB4ZmVmZik7CisKKyAgICAgICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIC0xKTsK
KyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhmZmZmKTsKKworICAgICAgICBzdG9yZUJpZ0Vu
ZGlhbihkdiwgMCwgLTIpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZlZmYpOworCisg
ICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAtMjE0NzQ4MzY0OCk7IAorICAgICAgICBhc3Nl
cnQoYXJyWzBdID09PSAweDAwMDApOworCisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAw
LCAtMjE0NzQ4MzY0OCk7IAorICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweDAwMDApOworCisg
ICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCAtMjE0NzQ3ODk4OCk7IAorICAgICAgICBh
c3NlcnQoYXJyWzBdID09PSAweDEyMzQpOworCisgICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAw
LCAtMjE0NzQ3ODk4OCk7IAorICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweDM0MTIpOworICAg
IH0KK30KK3Rlc3QyKCk7CisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIGZ1bmN0aW9uIHN0b3Jl
TGl0dGxlRW5kaWFuKGR2LCBpbmRleCwgdmFsdWUpIHsKKyAgICAgICAgZHYuc2V0VWludDMyKGlu
ZGV4LCB2YWx1ZSwgdHJ1ZSk7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3JlTGl0dGxlRW5kaWFu
KTsKKworICAgIGZ1bmN0aW9uIHN0b3JlQmlnRW5kaWFuKGR2LCBpbmRleCwgdmFsdWUpIHsKKyAg
ICAgICAgZHYuc2V0VWludDMyKGluZGV4LCB2YWx1ZSwgZmFsc2UpOworICAgIH0KKyAgICBub0lu
bGluZShzdG9yZUJpZ0VuZGlhbik7CisKKyAgICBmdW5jdGlvbiBzdG9yZShkdiwgaW5kZXgsIHZh
bHVlLCBsaXR0bGVFbmRpYW4pIHsKKyAgICAgICAgZHYuc2V0VWludDMyKGluZGV4LCB2YWx1ZSwg
bGl0dGxlRW5kaWFuKTsKKyAgICB9CisgICAgbm9JbmxpbmUoc3RvcmUpOworCisgICAgbGV0IGJ1
ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig0KTsKKyAgICBsZXQgYXJyID0gbmV3IFVpbnQzMkFycmF5
KGJ1ZmZlcik7CisgICAgbGV0IGFycjIgPSBuZXcgSW50MzJBcnJheShidWZmZXIpOworICAgIGxl
dCBkdiA9IG5ldyBEYXRhVmlldyhidWZmZXIpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKSB7CisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCAweGZmZmZmZmZm
KTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhmZmZmZmZmZik7CisgICAgICAgIGFzc2Vy
dChhcnIyWzBdID09PSAtMSk7CisKKyAgICAgICAgc3RvcmVMaXR0bGVFbmRpYW4oZHYsIDAsIDB4
ZmZhYWJiY2MpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZmYWFiYmNjKTsKKworICAg
ICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgMHgxMjM0NTY3OCk7CisgICAgICAgIGFzc2VydChh
cnJbMF0gPT09IDB4Nzg1NjM0MTIpOworCisgICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAw
eGZmYWFiYmNjKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhjY2JiYWFmZik7CisKKyAg
ICAgICAgc3RvcmUoZHYsIDAsIDB4ZmFlYWRhY2EsIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KGFy
clswXSA9PT0gMHhjYWRhZWFmYSk7CisKKyAgICAgICAgc3RvcmUoZHYsIDAsIDB4Y2FkYWVhZmEs
IGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KGFycjJbMF0gPT09IC04NTI3MTg2Mik7CisKKyAgICAg
ICAgc3RvcmUoZHYsIDAsIDB4MTIzNDU2NzgsIGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0KGFyclsw
XSA9PT0gMHg3ODU2MzQxMik7CisKKyAgICAgICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIDB4YmVl
ZmZlZWIpOworICAgICAgICBhc3NlcnQoYXJyMlswXSA9PT0gLTMzNTYxNDAxOCk7CisgICAgfQor
fQordGVzdDMoKTsKKworZnVuY3Rpb24gdGVzdDQoKSB7CisgICAgZnVuY3Rpb24gc3RvcmVMaXR0
bGVFbmRpYW4oZHYsIGluZGV4LCB2YWx1ZSkgeworICAgICAgICBkdi5zZXRJbnQzMihpbmRleCwg
dmFsdWUsIHRydWUpOworICAgIH0KKyAgICBub0lubGluZShzdG9yZUxpdHRsZUVuZGlhbik7CisK
KyAgICBmdW5jdGlvbiBzdG9yZUJpZ0VuZGlhbihkdiwgaW5kZXgsIHZhbHVlKSB7CisgICAgICAg
IGR2LnNldEludDMyKGluZGV4LCB2YWx1ZSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShz
dG9yZUJpZ0VuZGlhbik7CisKKyAgICBmdW5jdGlvbiBzdG9yZShkdiwgaW5kZXgsIHZhbHVlLCBs
aXR0bGVFbmRpYW4pIHsKKyAgICAgICAgZHYuc2V0SW50MzIoaW5kZXgsIHZhbHVlLCBsaXR0bGVF
bmRpYW4pOworICAgIH0KKyAgICBub0lubGluZShzdG9yZSk7CisKKyAgICBsZXQgYnVmZmVyID0g
bmV3IEFycmF5QnVmZmVyKDQpOworICAgIGxldCBhcnIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVy
KTsKKyAgICBsZXQgYXJyMiA9IG5ldyBJbnQzMkFycmF5KGJ1ZmZlcik7CisgICAgbGV0IGR2ID0g
bmV3IERhdGFWaWV3KGJ1ZmZlcik7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpIHsKKyAgICAgICAgc3RvcmVMaXR0bGVFbmRpYW4oZHYsIDAsIDB4ZmZmZmZmZmYpOworICAg
ICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZmZmZmZmZmKTsKKyAgICAgICAgYXNzZXJ0KGFycjJb
MF0gPT09IC0xKTsKKworICAgICAgICBzdG9yZUxpdHRsZUVuZGlhbihkdiwgMCwgMHhmZmFhYmJj
Yyk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4ZmZhYWJiY2MpOworCisgICAgICAgIHN0
b3JlQmlnRW5kaWFuKGR2LCAwLCAweDEyMzQ1Njc4KTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9
PT0gMHg3ODU2MzQxMik7CisKKyAgICAgICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIDB4ZmZhYWJi
Y2MpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGNjYmJhYWZmKTsKKworICAgICAgICBz
dG9yZShkdiwgMCwgMHhmYWVhZGFjYSwgZmFsc2UpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09
PSAweGNhZGFlYWZhKTsKKworICAgICAgICBzdG9yZShkdiwgMCwgMHhjYWRhZWFmYSwgZmFsc2Up
OworICAgICAgICBhc3NlcnQoYXJyMlswXSA9PT0gLTg1MjcxODYyKTsKKworICAgICAgICBzdG9y
ZShkdiwgMCwgMHgxMjM0NTY3OCwgZmFsc2UpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAw
eDc4NTYzNDEyKTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwgMCwgMHhiZWVmZmVlYik7
CisgICAgICAgIGFzc2VydChhcnIyWzBdID09PSAtMzM1NjE0MDE4KTsKKyAgICB9Cit9Cit0ZXN0
NCgpOworCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAgICBmdW5jdGlvbiBzdG9yZUxpdHRsZUVuZGlh
bihkdiwgaW5kZXgsIHZhbHVlKSB7CisgICAgICAgIGR2LnNldEZsb2F0MzIoaW5kZXgsIHZhbHVl
LCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoc3RvcmVMaXR0bGVFbmRpYW4pOworCisgICAg
ZnVuY3Rpb24gc3RvcmVCaWdFbmRpYW4oZHYsIGluZGV4LCB2YWx1ZSkgeworICAgICAgICBkdi5z
ZXRGbG9hdDMyKGluZGV4LCB2YWx1ZSwgZmFsc2UpOworICAgIH0KKyAgICBub0lubGluZShzdG9y
ZUJpZ0VuZGlhbik7CisKKyAgICBmdW5jdGlvbiBzdG9yZShkdiwgaW5kZXgsIHZhbHVlLCBsaXR0
bGVFbmRpYW4pIHsKKyAgICAgICAgZHYuc2V0RmxvYXQzMihpbmRleCwgdmFsdWUsIGxpdHRsZUVu
ZGlhbik7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3JlKTsKKworICAgIGxldCBidWZmZXIgPSBu
ZXcgQXJyYXlCdWZmZXIoNCk7CisgICAgbGV0IGFyciA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVy
KTsKKyAgICBsZXQgYml0cyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpOworICAgIGxldCBkdiA9
IG5ldyBEYXRhVmlldyhidWZmZXIpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsg
KytpKSB7CisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCAxLjUpOworICAgICAgICBh
c3NlcnQoYXJyWzBdID09PSAxLjUpOworCisgICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAw
LCAxMjkxMi4xMjQxMjMyMTUxMjIpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAxMjkxMi4x
MjQwMjM0Mzc1KTsKKyAgICAgICAgYXNzZXJ0KGJpdHNbMF0gPT09IDB4NDY0OWMwN2YpOworCisg
ICAgICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCBOYU4pOworICAgICAgICBhc3NlcnQoaXNO
YU4oYXJyWzBdKSk7CisgICAgICAgIGFzc2VydChiaXRzWzBdID09PSAweDdGQzAwMDAwKTsKKwor
ICAgICAgICBzdG9yZUxpdHRsZUVuZGlhbihkdiwgMCwgMi4zODc5MzkzZS0zOCk7CisgICAgICAg
IGFzc2VydChhcnJbMF0gPT09IDIuMzg3OTM5MjYwNTkwNjYzZS0zOCk7CisgICAgICAgIGFzc2Vy
dChiaXRzWzBdID09PSAweDAxMDIwMzA0KTsKKworICAgICAgICBzdG9yZUJpZ0VuZGlhbihkdiwg
MCwgMi4zODc5MzkzZS0zOCk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDEuNTM5OTg5NjE0
NDM5NTU4ZS0zNik7CisgICAgICAgIGFzc2VydChiaXRzWzBdID09PSAweDA0MDMwMjAxKTsKKyAg
ICB9Cit9Cit0ZXN0NSgpOworCitmdW5jdGlvbiB0ZXN0NigpIHsKKyAgICBmdW5jdGlvbiBzdG9y
ZUxpdHRsZUVuZGlhbihkdiwgaW5kZXgsIHZhbHVlKSB7CisgICAgICAgIGR2LnNldEZsb2F0NjQo
aW5kZXgsIHZhbHVlLCB0cnVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUoc3RvcmVMaXR0bGVFbmRp
YW4pOworCisgICAgZnVuY3Rpb24gc3RvcmVCaWdFbmRpYW4oZHYsIGluZGV4LCB2YWx1ZSkgewor
ICAgICAgICBkdi5zZXRGbG9hdDY0KGluZGV4LCB2YWx1ZSwgZmFsc2UpOworICAgIH0KKyAgICBu
b0lubGluZShzdG9yZUJpZ0VuZGlhbik7CisKKyAgICBmdW5jdGlvbiBzdG9yZShkdiwgaW5kZXgs
IHZhbHVlLCBsaXR0bGVFbmRpYW4pIHsKKyAgICAgICAgZHYuc2V0RmxvYXQ2NChpbmRleCwgdmFs
dWUsIGxpdHRsZUVuZGlhbik7CisgICAgfQorICAgIG5vSW5saW5lKHN0b3JlKTsKKworICAgIGxl
dCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoOCk7CisgICAgbGV0IGFyciA9IG5ldyBGbG9hdDY0
QXJyYXkoYnVmZmVyKTsKKyAgICBsZXQgZHYgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBzdG9yZUxpdHRsZUVu
ZGlhbihkdiwgMCwgTmFOKTsKKyAgICAgICAgYXNzZXJ0KGlzTmFOKGFyclswXSkpOworCisgICAg
ICAgIHN0b3JlTGl0dGxlRW5kaWFuKGR2LCAwLCAtMi41MDc1MTg3MDg0MTM1MTYyZSsyODQpOwor
ICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAtMi41MDc1MTg3MDg0MTM1MTYyZSsyODQpOworICAg
ICAgICBhc3NlcnQocmVhZEhleChkdiwgOCkgPT09ICIweGZhZmFmYWZhZmFmYWZhZmEiKTsKKwor
ICAgICAgICBzdG9yZShkdiwgMCwgMTI0LjU1MywgdHJ1ZSk7CisgICAgICAgIGFzc2VydChyZWFk
SGV4KGR2LCA4KSA9PT0gIjB4NDA1ZjIzNjQ1YTFjYWMwOCIpOworCisgICAgICAgIHN0b3JlKGR2
LCAwLCBJbmZpbml0eSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydChyZWFkSGV4KGR2LCA4KSA9PT0g
IjB4N2ZmMDAwMDAwMDAwMDAwMCIpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCBJbmZpbml0eSwg
ZmFsc2UpOworICAgICAgICBhc3NlcnQocmVhZEhleChkdiwgOCkgPT09ICIweDAwMDAwMDAwMDAw
MGYwN2YiKTsKKworICAgICAgICBzdG9yZShkdiwgMCwgLUluZmluaXR5LCB0cnVlKTsKKyAgICAg
ICAgYXNzZXJ0KHJlYWRIZXgoZHYsIDgpID09PSAiMHhmZmYwMDAwMDAwMDAwMDAwIik7CisKKyAg
ICAgICAgc3RvcmVCaWdFbmRpYW4oZHYsIDAsIC0yLjUwNzUxODcwODQxMzUxNjJlKzI4NCk7Cisg
ICAgICAgIGFzc2VydChhcnJbMF0gPT09IC0yLjUwNzUxODcwODQxMzUxNjJlKzI4NCk7CisgICAg
ICAgIGFzc2VydChyZWFkSGV4KGR2LCA4KSA9PT0gIjB4ZmFmYWZhZmFmYWZhZmFmYSIpOworCisg
ICAgICAgIHN0b3JlQmlnRW5kaWFuKGR2LCAwLCAxMjQuNTUzKTsKKyAgICAgICAgYXNzZXJ0KHJl
YWRIZXgoZHYsIDgpID09PSAiMHgwOGFjMWM1YTY0MjM1ZjQwIik7CisgICAgfQorfQordGVzdDYo
KTsKKworZnVuY3Rpb24gdGVzdDcoKSB7CisgICAgZnVuY3Rpb24gc3RvcmUoZHYsIGluZGV4LCB2
YWx1ZSkgeworICAgICAgICBkdi5zZXRJbnQ4KGluZGV4LCB2YWx1ZSk7CisgICAgfQorICAgIG5v
SW5saW5lKHN0b3JlKTsKKworICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoMSk7Cisg
ICAgbGV0IGFyciA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgICAgbGV0IGFycjIgPSBuZXcg
SW50OEFycmF5KGJ1ZmZlcik7CisgICAgbGV0IGR2ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgc3RvcmUoZHYs
IDAsIDB4ZmYpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09PSAweGZmKTsKKyAgICAgICAgYXNz
ZXJ0KGFycjJbMF0gPT09IC0xKTsKKworICAgICAgICBzdG9yZShkdiwgMCwgMHhmZjAwKTsKKyAg
ICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMCk7CisgICAgICAgIGFzc2VydChhcnIyWzBdID09PSAw
KTsKKworICAgICAgICBzdG9yZShkdiwgMCwgLTEpOworICAgICAgICBhc3NlcnQoYXJyWzBdID09
PSAweGZmKTsKKyAgICAgICAgYXNzZXJ0KGFycjJbMF0gPT09IC0xKTsKKworICAgICAgICBzdG9y
ZShkdiwgMCwgMHgwYmFkYmVlZik7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4ZWYpOwor
ICAgICAgICBhc3NlcnQoYXJyMlswXSA9PT0gLTE3KTsKKyAgICB9Cit9Cit0ZXN0NygpOworCitm
dW5jdGlvbiB0ZXN0OCgpIHsKKyAgICBmdW5jdGlvbiBzdG9yZShkdiwgaW5kZXgsIHZhbHVlKSB7
CisgICAgICAgIGR2LnNldEludDgoaW5kZXgsIHZhbHVlKTsKKyAgICB9CisgICAgbm9JbmxpbmUo
c3RvcmUpOworCisgICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigxKTsKKyAgICBsZXQg
YXJyID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgICBsZXQgYXJyMiA9IG5ldyBJbnQ4QXJy
YXkoYnVmZmVyKTsKKyAgICBsZXQgZHYgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBzdG9yZShkdiwgMCwgMHhm
Zik7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4ZmYpOworICAgICAgICBhc3NlcnQoYXJy
MlswXSA9PT0gLTEpOworCisgICAgICAgIHN0b3JlKGR2LCAwLCAweGZmMDApOworICAgICAgICBh
c3NlcnQoYXJyWzBdID09PSAwKTsKKyAgICAgICAgYXNzZXJ0KGFycjJbMF0gPT09IDApOworCisg
ICAgICAgIHN0b3JlKGR2LCAwLCAtMSk7CisgICAgICAgIGFzc2VydChhcnJbMF0gPT09IDB4ZmYp
OworICAgICAgICBhc3NlcnQoYXJyMlswXSA9PT0gLTEpOworCisgICAgICAgIHN0b3JlKGR2LCAw
LCAweDBiYWRiZWVmKTsKKyAgICAgICAgYXNzZXJ0KGFyclswXSA9PT0gMHhlZik7CisgICAgICAg
IGFzc2VydChhcnIyWzBdID09PSAtMTcpOworICAgIH0KK30KK3Rlc3Q4KCk7CkluZGV4OiBKU1Rl
c3RzL3N0cmVzcy9kYXRhdmlldy1qaXQtdW5hbGlnbmVkLWFjY2Vzc2VzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvc3RyZXNzL2RhdGF2aWV3LWppdC11bmFsaWduZWQtYWNjZXNzZXMuanMJKG5v
bmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvZGF0YXZpZXctaml0LXVuYWxpZ25lZC1hY2Nl
c3Nlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACisidXNlIHN0cmljdCI7CisK
K2Z1bmN0aW9uIGFzc2VydChiLCBtID0gIiIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmFkOiAiICsgbSk7Cit9CisKK2xldCBnZXRPcHMgPSB7CisgICAgZ2V0VWlu
dDg6IDEsCisgICAgZ2V0VWludDE2OiAyLAorICAgIGdldFVpbnQzMjogNCwKKyAgICBnZXRJbnQ4
OiAxLAorICAgIGdldEludDE2OiAyLAorICAgIGdldEludDMyOiA0LAorICAgIGdldEZsb2F0MzI6
IDQsCisgICAgZ2V0RmxvYXQ2NDogOCwKK307CisKK2xldCBzZXRPcHMgPSB7CisgICAgc2V0VWlu
dDg6IDEsCisgICAgc2V0VWludDE2OiAyLAorICAgIHNldFVpbnQzMjogNCwKKyAgICBzZXRJbnQ4
OiAxLAorICAgIHNldEludDE2OiAyLAorICAgIHNldEludDMyOiA0LAorICAgIHNldEZsb2F0MzI6
IDQsCisgICAgc2V0RmxvYXQ2NDogOCwKK307CisKK2xldCBnZXRGdW5jcyA9IFtdOworZm9yIChs
ZXQgcCBvZiBPYmplY3Qua2V5cyhnZXRPcHMpKSB7CisgICAgbGV0IGVuZE9mQ2FsbCA9IGdldE9w
c1twXSA9PT0gMSA/ICIpOyIgOiAiLCB0cnVlKTsiOworICAgIGxldCBzdHIgPSBgCisgICAgICAg
IChmdW5jdGlvbiAke3B9KGR2LCBpbmRleCkgeworICAgICAgICAgICAgcmV0dXJuIGR2LiR7cH0o
aW5kZXgke2VuZE9mQ2FsbH0KKyAgICAgICAgfSkKKyAgICBgOworICAgICAgIAorICAgIGxldCBm
dW5jID0gZXZhbChzdHIpOworICAgIG5vSW5saW5lKGZ1bmMpOworICAgIGdldEZ1bmNzLnB1c2go
ZnVuYyk7Cit9CisKK2xldCBzZXRGdW5jcyA9IFtdOworZm9yIChsZXQgcCBvZiBPYmplY3Qua2V5
cyhzZXRPcHMpKSB7CisgICAgbGV0IGVuZE9mQ2FsbCA9IHNldE9wc1twXSA9PT0gMSA/ICIpOyIg
OiAiLCB0cnVlKTsiOworICAgIGxldCBzdHIgPSBgCisgICAgICAgIChmdW5jdGlvbiAke3B9KGR2
LCBpbmRleCwgdmFsdWUpIHsKKyAgICAgICAgICAgIGR2LiR7cH0oaW5kZXgsIHZhbHVlJHtlbmRP
ZkNhbGx9CisgICAgICAgIH0pCisgICAgYDsKKworICAgIGxldCBmdW5jID0gZXZhbChzdHIpOwor
ICAgIG5vSW5saW5lKGZ1bmMpOworICAgIHNldEZ1bmNzLnB1c2goZnVuYyk7Cit9CisKK2Z1bmN0
aW9uIHRlc3QoKSB7CisgICAgY29uc3Qgc2l6ZSA9IDE2KjEwMjQ7CisgICAgbGV0IGFiID0gbmV3
IEFycmF5QnVmZmVyKHNpemUpOworICAgIGxldCBkdiA9IG5ldyBEYXRhVmlldyhhYik7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICBsZXQgaW5kZXggPSAo
TWF0aC5yYW5kb20oKSAqIHNpemUpID4+PiAwOworICAgICAgICBpbmRleCA9IE1hdGgubWF4KGlu
ZGV4IC0gOCwgMCk7CisgICAgICAgIGZvciAobGV0IGYgb2YgZ2V0RnVuY3MpIHsKKyAgICAgICAg
ICAgIGYoZHYsIGluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0IGYgb2Ygc2V0
RnVuY3MpIHsKKyAgICAgICAgICAgIGYoZHYsIGluZGV4LCAxMCk7CisgICAgICAgIH0KKyAgICB9
CisKK30KK3Rlc3QoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM0
ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEwMyBAQAorMjAxOC0wOC0yMCAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KKworICAgICAgICBJbmxpbmUgRGF0YVZpZXcgYWNjZXNzZXMgaW50byBERkcvRlRMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg1NzMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMjg2NzQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdGVhY2hlcyB0aGUgREZHL0ZUTCB0
byBpbmxpbmUgRGF0YVZpZXcgYWNjZXNzZXMuIFRoZSBhcHByb2FjaCBpcworICAgICAgICBzdHJh
aWdodCBmb3J3YXJkLiBXZSBpbmxpbmUgdGhlIHZhcmlvdXMgZ2V0Ki9zZXQqIG9wZXJhdGlvbnMg
YXMgaW50cmluc2ljcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggdGFrZXMgdGhlIG1v
c3Qgb2J2aW91cyBhcHByb2FjaCBmb3Igbm93LiBXZSBPU1IgZXhpdCB3aGVuOgorICAgICAgICAt
IEFuIGlzTGl0dGxlRW5kaWFuIGFyZ3VtZW50IGlzIHByb3ZpZGVkLCBhbmQgaXMgbm90IGEgYm9v
bGVhbi4KKyAgICAgICAgLSBUaGUgaW5kZXggaXNuJ3QgYW4gaW50ZWdlci4KKyAgICAgICAgLSBU
aGUgfHRoaXN8IGlzbid0IGEgRGF0YVZpZXcuCisgICAgICAgIC0gV2UgZG8gYW4gT09CIGFjY2Vz
cyAob3Igc2VlIGEgbmV1dGVyZWQgYXJyYXkpCisgICAgICAgIAorICAgICAgICBUbyBpbXBsZW1l
bnQgdGhpcyBjaGFuZ2UgaW4gYSBwZXJmb3JtYW50IHdheSwgdGhpcyBwYXRjaCB0ZWFjaGVzIHRo
ZSBtYWNybworICAgICAgICBhc3NlbWJsZXIgaG93IHRvIGVtaXQgYnl0ZSBzd2FwIG9wZXJhdGlv
bnMuIFRoZSBzZW1hbnRpY3Mgb2YgdGhlIGFkZGVkIGZ1bmN0aW9ucworICAgICAgICBhcmUgYnl0
ZVN3YXAgKyB6ZXJvIGV4dGVuZC4gVGhpcyBtZWFucyBmb3IgdGhlIDE2Yml0IGJ5dGUgc3dhcHMs
IHdlIG5lZWQKKyAgICAgICAgdG8gYWN0dWFsbHkgZW1pdCB6ZXJvIGV4dGVuZCBpbnN0cnVjdGlv
bnMuIEZvciB0aGUgMzIvNjRiaXQgYnl0ZSBzd2FwcywKKyAgICAgICAgdGhlIGluc3RydWN0aW9u
cyBhbHJlYWR5IGhhdmUgdGhlc2Ugc2VtYW50aWNzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBw
YXRjaCBpcyBqdXN0IGEgbGlnaHR3ZWlnaHQgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbi4gVGhlcmUg
YXJlIHNvbWUgZWFzeQorICAgICAgICBleHRlbnNpb25zIHdlIGNhbiBkbyBpbiBmdXR1cmUgY2hh
bmdlczoKKyAgICAgICAgLSBUZWFjaCBCMyBob3cgdG8gYnl0ZSBzd2FwOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NzU5CisgICAgICAgIC0gQ1NFIERhdGFWaWV3
R2V0KiBub2RlczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODc2
OAorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Ynl0ZVN3YXAxNik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OmJ5dGVTd2FwMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpieXRlU3dhcDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJ5
dGVTd2FwMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Ynl0ZVN3
YXAxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpieXRlU3dhcDY0
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6YnN3YXBsX3IpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmJzd2Fw
cV9yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzaGlmdEluc3RydWN0aW9uMTYpOgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJvbHdfaThyKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6U2luZ2xlSW5zdHJ1Y3Rpb25CdWZm
ZXJXcml0ZXI6Om1lbW9yeU1vZFJNKToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3Bw
OgorICAgICAgICAoSlNDOjp0ZXN0Qnl0ZVN3YXApOgorICAgICAgICAoSlNDOjpydW4pOgorICAg
ICAgICAqIGJ5dGVjb2RlL0RhdGFGb3JtYXQuaDoKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OmR1bXBTcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OnNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9u
RnJvbUpTVHlwZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbVN0cmluZyk6CisgICAg
ICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNH
Qy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4
dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hl
YXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpkYXRhVmlld0RhdGEpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
RGF0YVZpZXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAg
ICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZv
cik6CisgICAgICAgIChKU0M6OkRGRzo6aXNDZWxsKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjpieXRlU3dhcDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Ynl0
ZVN3YXA2NCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRDb2Rl
QmFzZWRPbkVuZGlhbm5lc3NCcmFuY2gpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlRGF0YVZpZXdHZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlRGF0YVZpZXdTZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpsb3dEYXRhVmlld09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OnNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0lu
dHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6OmludHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcDoKKwogMjAxOC0wOC0xNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgbWlzc2luZyBhdmFpbGFiaWxpdHkgbWFjcm8uCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSw2ICs0NTEsMjIg
QEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5jbHo8NjQ+KGRlc3QsIGRlc3QpOwogICAg
IH0KIAorICAgIHZvaWQgYnl0ZVN3YXAxNihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnJldjE2PDMyPihkc3QsIGRzdCk7CisgICAgICAgIHplcm9FeHRlbmQxNlRv
MzIoZHN0LCBkc3QpOworICAgIH0KKworICAgIHZvaWQgYnl0ZVN3YXAzMihSZWdpc3RlcklEIGRz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJldjwzMj4oZHN0LCBkc3QpOworICAgIH0K
KworICAgIHZvaWQgYnl0ZVN3YXA2NChSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnJldjw2ND4oZHN0LCBkc3QpOworICAgIH0KKwogICAgIC8vIE9ubHkgdXNlZCBm
b3IgdGVzdGluZyBwdXJwb3Nlcy4KICAgICB2b2lkIGlsbGVnYWxJbnN0cnVjdGlvbigpCiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MDgsNiArNDA4LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
cG9wY250X3JyKHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lkIGJ5dGVTd2FwMzIoUmVnaXN0
ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ic3dhcGxfcihkc3QpOworICAg
IH0KKworICAgIHZvaWQgYnl0ZVN3YXAxNihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnJvbHdfaThyKDgsIGRzdCk7CisgICAgICAgIHplcm9FeHRlbmQxNlRvMzIo
ZHN0LCBkc3QpOworICAgIH0KKworI2lmIENQVShYODZfNjQpCisgICAgdm9pZCBieXRlU3dhcDY0
KFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYnN3YXBxX3IoZHN0
KTsKKyAgICB9CisjZW5kaWYKKwogICAgIC8vIE9ubHkgdXNlZCBmb3IgdGVzdGluZyBwdXJwb3Nl
cy4KICAgICB2b2lkIGlsbGVnYWxJbnN0cnVjdGlvbigpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAyMzQ4
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzcsNiArMzM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX1hB
RERiICAgICAgICAgICA9IDB4QzAsCiAgICAgICAgIE9QMl9YQUREICAgICAgICAgICAgPSAweEMx
LAogICAgICAgICBPUDJfUEVYVFJXX0dkVWRJYiAgID0gMHhDNSwKKyAgICAgICAgT1AyX0JTV0FQ
ICAgICAgICAgICA9IDB4QzgsCiAgICAgICAgIE9QMl9QU0xMUV9VZHFJYiAgICAgPSAweDczLAog
ICAgICAgICBPUDJfUFNSTFFfVWRxSWIgICAgID0gMHg3MywKICAgICAgICAgT1AyX1BPUl9WZHFX
ZHEgICAgICA9IDBYRUIsCkBAIC0xNjM4LDYgKzE2MzksMTggQEAgcHVibGljOgogICAgIH0KICNl
bmRpZgogCisgICAgdm9pZCBic3dhcGxfcihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQlNXQVAsIGRzdCk7CisgICAgfQorCisjaWYgQ1BV
KFg4Nl82NCkKKyAgICB2b2lkIGJzd2FwcV9yKFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0JTV0FQLCBkc3QpOworICAgIH0KKyNlbmRp
ZgorCiAgICAgdm9pZCB0emNudF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7CkBAIC0xNzAxLDYg
KzE3MTQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHRlbXBsYXRlPEdyb3VwT3Bjb2RlSUQgb3A+
CisgICAgdm9pZCBzaGlmdEluc3RydWN0aW9uMTYoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAg
ICAgIGlmIChpbW0gPT0gMSkKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDJfRXYxLCBvcCwgZHN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2SWIsIG9wLCBkc3QpOworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9CisgICAgfQogcHVibGljOgogCiAg
ICAgdm9pZCBzYXJsX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKQEAgLTE3NTMsNiArMTc3
OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDJf
RXZDTCwgR1JPVVAyX09QX1JPTCwgZHN0KTsKICAgICB9CiAKKyAgICB2b2lkIHJvbHdfaThyKGlu
dCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgc2hpZnRJbnN0cnVjdGlvbjE2
PEdST1VQMl9PUF9ST0w+KGltbSwgZHN0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTxHcm91cE9wY29kZUlEIG9wPgpAQCAtNDMzMyw2ICs0MzYzLDE0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUp
OwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB0d29CeXRlT3AoVHdvQnl0ZU9wY29kZUlEIG9w
Y29kZSwgaW50IHJlZykKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25C
dWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4
SWZOZWVkZWQoMCwgMCwgcmVnKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2Vk
KE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChv
cGNvZGUgKyAocmVnICYgNykpOworICAgICAgICB9CisKICAgICAgICAgdm9pZCB0d29CeXRlT3Ao
VHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAg
ewogICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVm
ZmVyKTsKQEAgLTQ1MDYsNiArNDU0NCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgd3JpdGVy
Lm1lbW9yeU1vZFJNQWRkcihyZWcsIGFkZHJlc3MpOwogICAgICAgICB9CiAKKyAgICAgICAgdm9p
ZCB0d29CeXRlT3A2NChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnKQorICAgICAgICB7
CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZm
ZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhXKDAsIDAsIHJlZyk7CisgICAgICAgICAg
ICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAg
d3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlICsgKHJlZyAmIDcpKTsKKyAgICAgICAgfQor
CiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wNjQoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJl
ZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewogICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rp
b25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODYzLDYgKzg2Myw0MSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tWYWx1ZXMoKQog
fQogI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQogCit2b2lkIHRlc3RCeXRlU3dhcCgpCit7
CisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorICAgIGF1dG8gYnl0ZVN3YXAxNiA9IGNv
bXBpbGUoW10gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOworICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgaml0LmJ5dGVTd2FwMTYoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOworICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAg
ICAgaml0LnJldCgpOworICAgIH0pOworICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oYnl0
ZVN3YXAxNiwgMHhhYWJiY2NkZGVlMDAxMTIyKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4MjIx
MSkpOworICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oYnl0ZVN3YXAxNiwgMHhhYWJiY2Nk
ZGVlMDBmZmFhKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4YWFmZikpOworCisgICAgYXV0byBi
eXRlU3dhcDMyID0gY29tcGlsZShbXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgaml0
LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICBqaXQuYnl0ZVN3YXAz
MihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisgICAgQ0hFQ0tfRVEoaW52b2tl
PHVpbnQ2NF90PihieXRlU3dhcDMyLCAweGFhYmJjY2RkZWUwMDExMjIpLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oMHgyMjExMDBlZSkpOworICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oYnl0
ZVN3YXAzMiwgMHhhYWJiY2NkZGVlMDBmZmFhKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4YWFm
ZjAwZWUpKTsKKworICAgIGF1dG8gYnl0ZVN3YXA2NCA9IGNvbXBpbGUoW10gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworICAgICAgICBq
aXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KyAgICAgICAgaml0LmJ5dGVTd2FwNjQoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAg
ICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0p
OworICAgIENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oYnl0ZVN3YXA2NCwgMHhhYWJiY2NkZGVl
MDAxMTIyKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4MjIxMTAwZWVkZGNjYmJhYSkpOworICAg
IENIRUNLX0VRKGludm9rZTx1aW50NjRfdD4oYnl0ZVN3YXA2NCwgMHhhYWJiY2NkZGVlMDBmZmFh
KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4YWFmZjAwZWVkZGNjYmJhYSkpOworI2VuZGlmCit9
CisKICNkZWZpbmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKICAgICAgICAg
ICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTk0Nyw2ICs5ODIs
OCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RQcm9iZU1vZGlm
aWVzU3RhY2tWYWx1ZXMoKSk7CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAKKyAgICBS
VU4odGVzdEJ5dGVTd2FwKCkpOworCiAgICAgaWYgKHRhc2tzLmlzRW1wdHkoKSkKICAgICAgICAg
dXNhZ2UoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3Jt
YXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZv
cm1hdC5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRGF0YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0Tm9uZSA9IDAsCiAgICAg
RGF0YUZvcm1hdEludDMyID0gMSwKLSAgICBEYXRhRm9ybWF0SW50NTIgPSAyLCAvLyBJbnQ1Midz
IGFyZSBsZWZ0LXNoaWZ0ZWQgYnkgMTYgYnkgZGVmYXVsdC4KKyAgICBEYXRhRm9ybWF0SW50NTIg
PSAyLCAvLyBJbnQ1MidzIGFyZSBsZWZ0LXNoaWZ0ZWQgYnkgMTIgYnkgZGVmYXVsdC4KICAgICBE
YXRhRm9ybWF0U3RyaWN0SW50NTIgPSAzLCAvLyAiU3RyaWN0IiBJbnQ1MiBtZWFucyBpdCdzIG5v
dCBzaGlmdGVkLgogICAgIERhdGFGb3JtYXREb3VibGUgPSA0LAogICAgIERhdGFGb3JtYXRCb29s
ZWFuID0gNSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYg
KzIwMywxMSBAQCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyCiAgICAg
ICAgICAgICAgICAgc3RyT3V0LnByaW50KCJEZXJpdmVkQXJyYXkiKTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAodmFs
dWUgJiBTcGVjRGF0YVZpZXdPYmplY3QpCisgICAgICAgICAgICAgICAgc3RyT3V0LnByaW50KCJE
YXRhVmlldyIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlzVG9wID0gZmFs
c2U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKHZhbHVlICYgU3BlY1N0cmluZykgPT0gU3Bl
Y1N0cmluZykKQEAgLTQzMiw2ICs0MzcsOSBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZy
b21DbGFzc0luZm8oCiAKICAgICBpZiAoY2xhc3NJbmZvID09IFByb3h5T2JqZWN0OjppbmZvKCkp
CiAgICAgICAgIHJldHVybiBTcGVjUHJveHlPYmplY3Q7CisKKyAgICBpZiAoY2xhc3NJbmZvID09
IEpTRGF0YVZpZXc6OmluZm8oKSkKKyAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsK
ICAgICAKICAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoSlNGdW5jdGlvbjo6aW5mbygp
KSkgewogICAgICAgICBpZiAoY2xhc3NJbmZvID09IEpTQm91bmRGdW5jdGlvbjo6aW5mbygpKQpA
QCAtNTU5LDYgKzU2Nyw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShK
U1QKICAgICAgICAgcmV0dXJuIFNwZWNXZWFrTWFwT2JqZWN0OwogICAgIGNhc2UgSlNXZWFrU2V0
VHlwZToKICAgICAgICAgcmV0dXJuIFNwZWNXZWFrU2V0T2JqZWN0OworICAgIGNhc2UgRGF0YVZp
ZXdUeXBlOgorICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTc1MCw2ICs3NjAsOCBA
QCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21TdHJpbmcoY29uCiAgICAgICAgIHJldHVy
biBTcGVjUHJveHlPYmplY3Q7CiAgICAgaWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAiU3BlY0Rl
cml2ZWRBcnJheSIsIHN0cmxlbigiU3BlY0Rlcml2ZWRBcnJheSIpKSkKICAgICAgICAgcmV0dXJu
IFNwZWNEZXJpdmVkQXJyYXk7CisgICAgaWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAiU3BlY0Rh
dGFWaWV3T2JqZWN0Iiwgc3RybGVuKCJTcGVjRGF0YVZpZXdPYmplY3QiKSkpCisgICAgICAgIHJl
dHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7CiAgICAgaWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAi
U3BlY09iamVjdE90aGVyIiwgc3RybGVuKCJTcGVjT2JqZWN0T3RoZXIiKSkpCiAgICAgICAgIHJl
dHVybiBTcGVjT2JqZWN0T3RoZXI7CiAgICAgaWYgKCFzdHJuY21wKHNwZWN1bGF0aW9uLCAiU3Bl
Y09iamVjdCIsIHN0cmxlbigiU3BlY09iamVjdCIpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUsNyArNjUsNiBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y1dlYWtTZXRPCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1Byb3h5T2JqZWN0ICAg
ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIFBy
b3h5IG9iamVjdCBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCiBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Rlcml2ZWRBcnJheSAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwg
MjI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIERlcml2ZWRBcnJheSBvYmplY3QuCiBzdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgICAgICAgICAgICAgICAgICA9
IDF1bGwgPDwgMjM7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFs
T2JqZWN0LCBKU0FycmF5LCBvciBKU0Z1bmN0aW9uLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmpl
Y3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVj
RGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3Qg
fCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVj
V2Vha01hcE9iamVjdCB8IFNwZWNXZWFrU2V0T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwgU3Bl
Y0Rlcml2ZWRBcnJheSB8IFNwZWNPYmplY3RPdGhlcjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0
aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KIHN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8
PCAyNDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcsIGFuZCBpdCdzIGFuIGlkZW50aWZp
ZXIuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ1ZhciAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDF1bGwgPDwgMjU7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5n
LCBhbmQgaXQncyBub3QgYW4gaWRlbnRpZmllci4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0cmluZ0lkZW50
IHwgU3BlY1N0cmluZ1ZhcjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCkBAIC05Myw3
ICs5Miw5IEBAIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAKIHN0YXRp
YyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTWlzYyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gU3BlY0Jvb2xlYW4gfCBTcGVjT3RoZXI7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIg
YSBib29sZWFuLCBOdWxsLCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0VtcHR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzc7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCiBzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgMzg7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJpZ0ludC4KK3N0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAz
OTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KIHN0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjUHJpbWl0aXZlICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0cmlu
ZyB8IFNwZWNTeW1ib2wgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYyB8IFNwZWNCaWdJ
bnQ7IC8vIEl0J3MgYW55IG5vbi1PYmplY3QgSlNWYWx1ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFs
T2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwg
U3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2Jq
ZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwg
U3BlY1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8
IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3Q7
IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRp
Y3Rpb24uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8
IFNwZWNDZWxsT3RoZXIgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwu
CiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8v
IEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5k
IFNwZWNEb3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5
dGVjb2RlVG9wICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNIZWFwVG9wIHwgU3BlY0VtcHR5
OyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5
IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLiBDb3JyZXNwb25kcyB0byB3aGF0IGNvdWxkIGJlIGZv
dW5kIGluIGEgYnl0ZWNvZGUgbG9jYWwuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lv
biAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3NzAsOSArMzc3MCwzMCBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZpbHRlcihub2Rl
LT5jaGlsZDEoKSwgU3BlY0NlbGwpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAor
CisgICAgY2FzZSBEYXRhVmlld0dldEludDogeworICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9
IG5vZGUtPmRhdGFWaWV3RGF0YSgpOworICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA8IDQpCisg
ICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGRhdGEuYnl0ZVNpemUgPT0gNCk7Cisg
ICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICBzZXROb25DZWxs
VHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNBbnlJbnQpOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9h
dDogeworICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Z1bGxEb3VibGUp
OwogICAgICAgICBicmVhazsKKyAgICB9CiAKKyAgICBjYXNlIERhdGFWaWV3U2V0OiB7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAg
ICAgLy8gSXQgbWF5IGJlIHRoYXQgZHVyaW5nIGEgcHJldmlvdXMgcnVuIG9mIEFJIHdlIHByb3Zl
ZCB0aGF0IHNvbWV0aGluZyB3YXMgdW5yZWFjaGFibGUsIGJ1dAogICAgICAgICAvLyBkdXJpbmcg
dGhpcyBydW4gb2YgQUkgd2UgZm9yZ2V0IHRoYXQgaXQncyB1bnJlYWNoYWJsZS4gQUkncyBwcm9v
ZnMgZG9uJ3QgaGF2ZSB0byBnZXQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzA3OSw2ICszMDc5LDE4MCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWND
YWxsCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgRGF0YVZpZXdHZXRJ
bnQ4OgorICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50ODoKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50
MTY6CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQxNjoKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50
MzI6CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQzMjoKKyAgICBjYXNlIERhdGFWaWV3R2V0Rmxv
YXQzMjoKKyAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ2NDogeworICAgICAgICBpZiAoIWlzNjRC
aXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBUbyBpbmxpbmUg
ZGF0YSB2aWV3IGFjY2Vzc2VzLCB3ZSBhc3N1bWUgdGhlIGFyY2hpdGVjdHVyZSB3ZSdyZSBydW5u
aW5nIG9uOgorICAgICAgICAvLyAtIElzIGxpdHRsZSBlbmRpYW4uCisgICAgICAgIC8vIC0gQWxs
b3dzIHVuYWxpZ25lZCBsb2Fkcy9zdG9yZXMgd2l0aG91dCBjcmFzaGluZy4gCisKKyAgICAgICAg
aWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgMikKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGluc2VydENoZWNrcygpOworCisgICAgICAgIHVpbnQ4X3QgYnl0ZVNpemU7
CisgICAgICAgIE5vZGVUeXBlIG9wID0gRGF0YVZpZXdHZXRJbnQ7CisgICAgICAgIGJvb2wgaXNT
aWduZWQgPSBmYWxzZTsKKyAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICAgICAgY2Fz
ZSBEYXRhVmlld0dldEludDg6CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAg
ICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldFVpbnQ4OgorICAgICAg
ICAgICAgYnl0ZVNpemUgPSAxOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBE
YXRhVmlld0dldEludDE2OgorICAgICAgICAgICAgaXNTaWduZWQgPSB0cnVlOworICAgICAgICAg
ICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50MTY6CisgICAgICAg
ICAgICBieXRlU2l6ZSA9IDI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERh
dGFWaWV3R2V0SW50MzI6CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAg
ICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRhVmlld0dldFVpbnQzMjoKKyAgICAgICAg
ICAgIGJ5dGVTaXplID0gNDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0
YVZpZXdHZXRGbG9hdDMyOgorICAgICAgICAgICAgYnl0ZVNpemUgPSA0OworICAgICAgICAgICAg
b3AgPSBEYXRhVmlld0dldEZsb2F0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RGF0YVZpZXdHZXRGbG9hdDY0OgorICAgICAgICAgICAgYnl0ZVNpemUgPSA4OworICAgICAgICAg
ICAgb3AgPSBEYXRhVmlld0dldEZsb2F0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisKKyAgICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRpYW4gPSBNaXhlZFRyaVN0YXRlOwor
ICAgICAgICBOb2RlKiBsaXR0bGVFbmRpYW5DaGlsZCA9IG51bGxwdHI7CisgICAgICAgIGlmIChi
eXRlU2l6ZSA+IDEpIHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyA8IDMpCisgICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBGYWxzZVRyaVN0YXRlOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbGl0dGxlRW5kaWFuQ2hpbGQgPSBn
ZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMiwgcmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICBpZiAobGl0dGxlRW5kaWFuQ2hpbGQtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgSlNWYWx1ZSBjb25zdGFudCA9IGxpdHRsZUVuZGlhbkNoaWxkLT5jb25z
dGFudCgpLT52YWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IGNv
bnN0YW50LnB1cmVUb0Jvb2xlYW4oKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGl0dGxl
RW5kaWFuICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICBsaXR0bGVF
bmRpYW5DaGlsZCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhIHsgfTsKKyAgICAgICAgZGF0
YS5pc0xpdHRsZUVuZGlhbiA9IGlzTGl0dGxlRW5kaWFuOworICAgICAgICBkYXRhLmlzU2lnbmVk
ID0gaXNTaWduZWQ7CisgICAgICAgIGRhdGEuYnl0ZVNpemUgPSBieXRlU2l6ZTsKKworICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLAorICAgICAgICAgICAgYWRkVG9H
cmFwaChvcCwgT3BJbmZvKGRhdGEuYXNRdWFkV29yZCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0
KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpLCBsaXR0bGVFbmRpYW5D
aGlsZCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBjYXNlIERhdGFWaWV3
U2V0SW50ODoKKyAgICBjYXNlIERhdGFWaWV3U2V0VWludDg6CisgICAgY2FzZSBEYXRhVmlld1Nl
dEludDE2OgorICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MTY6CisgICAgY2FzZSBEYXRhVmlld1Nl
dEludDMyOgorICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MzI6CisgICAgY2FzZSBEYXRhVmlld1Nl
dEZsb2F0MzI6CisgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0NjQ6IHsKKyAgICAgICAgaWYgKCFp
czY0Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgMykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisKKyAgICAgICAgdWludDhfdCBieXRlU2l6ZTsKKyAgICAg
ICAgYm9vbCBpc0Zsb2F0aW5nUG9pbnQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBpc1NpZ25lZCA9
IGZhbHNlOworICAgICAgICBzd2l0Y2ggKGludHJpbnNpYykgeworICAgICAgICBjYXNlIERhdGFW
aWV3U2V0SW50ODoKKyAgICAgICAgICAgIGlzU2lnbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIEZB
TExUSFJPVUdIOworICAgICAgICBjYXNlIERhdGFWaWV3U2V0VWludDg6CisgICAgICAgICAgICBi
eXRlU2l6ZSA9IDE7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERhdGFWaWV3
U2V0SW50MTY6CisgICAgICAgICAgICBpc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICBGQUxM
VEhST1VHSDsKKyAgICAgICAgY2FzZSBEYXRhVmlld1NldFVpbnQxNjoKKyAgICAgICAgICAgIGJ5
dGVTaXplID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRGF0YVZpZXdT
ZXRJbnQzMjoKKyAgICAgICAgICAgIGlzU2lnbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIEZBTExU
SFJPVUdIOworICAgICAgICBjYXNlIERhdGFWaWV3U2V0VWludDMyOgorICAgICAgICAgICAgYnl0
ZVNpemUgPSA0OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEYXRhVmlld1Nl
dEZsb2F0MzI6CisgICAgICAgICAgICBpc0Zsb2F0aW5nUG9pbnQgPSB0cnVlOworICAgICAgICAg
ICAgYnl0ZVNpemUgPSA0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVZp
ZXdTZXRGbG9hdDY0OgorICAgICAgICAgICAgaXNGbG9hdGluZ1BvaW50ID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJ5dGVTaXplID0gODsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQor
CisgICAgICAgIFRyaVN0YXRlIGlzTGl0dGxlRW5kaWFuID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICAg
ICAgTm9kZSogbGl0dGxlRW5kaWFuQ2hpbGQgPSBudWxscHRyOworICAgICAgICBpZiAoYnl0ZVNp
emUgPiAxKSB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCA0
KQorICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gZ2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDMsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAg
ICAgICAgaWYgKGxpdHRsZUVuZGlhbkNoaWxkLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBsaXR0bGVFbmRpYW5DaGlsZC0+Y29uc3RhbnQo
KS0+dmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBjb25zdGFu
dC5wdXJlVG9Cb29sZWFuKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0xpdHRsZUVuZGlh
biAhPSBNaXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgbGl0dGxlRW5kaWFu
Q2hpbGQgPSBudWxscHRyOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICBpc0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSB7IH07CisgICAgICAgIGRhdGEuaXNM
aXR0bGVFbmRpYW4gPSBpc0xpdHRsZUVuZGlhbjsKKyAgICAgICAgZGF0YS5pc1NpZ25lZCA9IGlz
U2lnbmVkOworICAgICAgICBkYXRhLmJ5dGVTaXplID0gYnl0ZVNpemU7CisgICAgICAgIGRhdGEu
aXNGbG9hdGluZ1BvaW50ID0gaXNGbG9hdGluZ1BvaW50OworCisgICAgICAgIGFkZFZhckFyZ0No
aWxkKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkpKTsK
KyAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEs
IHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoMiwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgIGFkZFZhckFy
Z0NoaWxkKGxpdHRsZUVuZGlhbkNoaWxkKTsKKworICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZh
ckFyZywgRGF0YVZpZXdTZXQsIE9wSW5mbyhkYXRhLmFzUXVhZFdvcmQpLCBPcEluZm8oKSk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGNhc2UgSGFzT3duUHJvcGVydHlJbnRy
aW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NTgsNyArMTc1OCwy
MSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBO
dW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6CiAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSwgbm9kZS0+dmFsaWRSYWRpeENvbnN0YW50KCkpKTsKICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKKworICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICBjYXNlIERhdGFWaWV3
R2V0SW50OiB7CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisgICAgICAgIHJlYWQoVHlwZWRB
cnJheVByb3BlcnRpZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEYXRh
Vmlld1NldDogeworICAgICAgICByZWFkKE1pc2NGaWVsZHMpOworICAgICAgICByZWFkKFR5cGVk
QXJyYXlQcm9wZXJ0aWVzKTsKKyAgICAgICAgd3JpdGUoVHlwZWRBcnJheVByb3BlcnRpZXMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzE4LDYgKzMxOCw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRGF0YVZpZXdHZXRJ
bnQ6CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgorICAgIGNhc2UgRGF0YVZpZXdTZXQ6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgUHVzaFdpdGhTY29wZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjM0
ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjEwNCw2ICsyMTA0LDYwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBm
aXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisg
ICAgICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9h
dDogeworICAgICAgICAgICAgZml4RWRnZTxEYXRhVmlld09iamVjdFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9v
bGVhblVzZT4obm9kZS0+Y2hpbGQzKCkpOworCisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBEYXRhVmlld0dldEludCkgeworICAgICAgICAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0g
bm9kZS0+ZGF0YVZpZXdEYXRhKCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLmJ5dGVT
aXplKSB7CisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIGNhc2UgMjoK
KyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQzMik7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpIAorICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQzMik7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0
SW50NTIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgY2FzZSBEYXRhVmlld1NldDogeworICAgICAgICAgICAgZml4RWRn
ZTxEYXRhVmlld09iamVjdFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAg
ICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsK
KyAgICAgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbm9kZS0+ZGF0
YVZpZXdEYXRhKCk7CisgICAgICAgICAgICBFZGdlJiB2YWx1ZVRvU3RvcmUgPSBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDIpOworICAgICAgICAgICAgaWYgKGRhdGEuaXNGbG9hdGluZ1BvaW50
KQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPih2YWx1ZVRvU3RvcmUpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLmJ5dGVTaXpl
KSB7CisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4odmFsdWVUb1N0b3JlKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAg
ICAgICAgICAgICBpZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KHZhbHVlVG9TdG9yZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KHZhbHVlVG9TdG9y
ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUg
dGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAg
ICAgICBjYXNlIFNldEFyZ3VtZW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDE5IEBAIHN0cnVjdCBOZXdBcnJheUJ1
ZmZlckRhdGEgewogc3RhdGljX2Fzc2VydChzaXplb2YoSW5kZXhpbmdUeXBlKSA8PSBzaXplb2Yo
dW5zaWduZWQpLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihOZXdBcnJheUJ1ZmZlckRhdGEp
ID09IHNpemVvZih1aW50NjRfdCksICIiKTsKIAorc3RydWN0IERhdGFWaWV3RGF0YSB7CisgICAg
dW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDhfdCBieXRlU2l6ZTsK
KyAgICAgICAgICAgIGJvb2wgaXNTaWduZWQ7CisgICAgICAgICAgICBib29sIGlzRmxvYXRpbmdQ
b2ludDsgLy8gVXNlZCBmb3IgdGhlIERhdGFWaWV3U2V0IG5vZGUuCisgICAgICAgICAgICBUcmlT
dGF0ZSBpc0xpdHRsZUVuZGlhbjsKKyAgICAgICAgfTsKKyAgICAgICAgdWludDY0X3QgYXNRdWFk
V29yZDsKKyAgICB9OworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKERhdGFWaWV3RGF0YSkgPT0g
c2l6ZW9mKHVpbnQ2NF90KSwgIiIpOworCiBzdHJ1Y3QgQnJhbmNoVGFyZ2V0IHsKICAgICBCcmFu
Y2hUYXJnZXQoKQogICAgICAgICA6IGJsb2NrKDApCkBAIC0xNjU5LDYgKzE2NzIsOCBAQCBwdWJs
aWM6CiAgICAgICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICAgICAgY2FzZSBFeHRyYWN0VmFs
dWVGcm9tV2Vha01hcEdldDoKICAgICAgICAgY2FzZSBUb1RoaXM6CisgICAgICAgIGNhc2UgRGF0
YVZpZXdHZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjE0Myw2ICsyMTU4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZv
LmFzPHVuc2lnbmVkPigpOwogICAgIH0KIAorICAgIERhdGFWaWV3RGF0YSBkYXRhVmlld0RhdGEo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRGF0YVZpZXdHZXRJbnQgfHwgb3AoKSA9
PSBEYXRhVmlld0dldEZsb2F0IHx8IG9wKCkgPT0gRGF0YVZpZXdTZXQpOworICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PERhdGFWaWV3RGF0YT4obV9vcEluZm8uYXM8dWludDY0X3Q+KCkpOwor
ICAgIH0KKwogICAgIGJvb2wgc2hvdWxkR2VuZXJhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fcmVmQ291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2ICs0ODMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEZpbHRlckdldEJ5SWRTdGF0dXMsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJJbkJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhGaWx0ZXJQdXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgLyogRGF0YSB2aWV3IGFjY2VzcyAqLyBcCisgICAgbWFjcm8oRGF0YVZpZXdHZXRJbnQs
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIC8qIFRoZSBnZXRzIGFyZSBtdXN0IGdl
bmVyYXRlIGZvciBub3cgYmVjYXVzZSB0aGV5IGRvIGJvdW5kcyBjaGVja3MgKi8gXAorICAgIG1h
Y3JvKERhdGFWaWV3R2V0RmxvYXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0RG91Ymxl
KSBcCisgICAgbWFjcm8oRGF0YVZpZXdTZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKIAogCiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEg
bW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBlcywKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjIxLDcgKzYyMSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBEYXRhVmlld1NldDogeworICAgICAgICAgICAgRGF0YVZpZXdEYXRhIGRhdGEgPSBub2RlLT5k
YXRhVmlld0RhdGEoKTsKKyAgICAgICAgICAgIGlmIChkYXRhLmlzRmxvYXRpbmdQb2ludCkKKyAg
ICAgICAgICAgICAgICBtX2dyYXBoLnZvdGVOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MiksIFZvdGVWYWx1ZSwgd2VpZ2h0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAgICAgLy8gSWdub3JlIHRoZXNlIHNpbmNl
IHRoZXkgaGF2ZSBubyBlZmZlY3Qgb24gaW4tREZHIGV4ZWN1dGlvbi4KICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNzUwLDcgKzc1Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdl
dHRlcjoKICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgICAgICBjYXNlIEdldFByb3Rv
dHlwZU9mOgotICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OiB7CisgICAg
ICAgIGNhc2UgRXh0cmFjdFZhbHVlRnJvbVdlYWtNYXBHZXQ6IAorICAgICAgICBjYXNlIERhdGFW
aWV3R2V0SW50OgorICAgICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6IHsKICAgICAgICAgICAg
IHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTIyMCw2ICsxMjI5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlcklu
QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgorICAgICAgICBjYXNl
IERhdGFWaWV3U2V0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAg
Ly8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2Ug
YSB2YWx1ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAgICAgICBjYXNlIFdlYWtNYXBPYmplY3RV
c2U6CiAgICAgICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKKyAgICAgICAgY2FzZSBEYXRhVmll
d09iamVjdFVzZToKICAgICAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBjYXNl
IFN0cmluZ0lkZW50VXNlOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKQEAgLTQ2Miw2ICs0NjMs
OCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBB
dG9taWNzSXNMb2NrRnJlZToKICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRz
OgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CisgICAgY2FzZSBEYXRhVmlld0dldEludDoKKyAg
ICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2Fz
ZSBBcnJheVNsaWNlOgpAQCAtNjAyLDYgKzYwNSw5IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0
cmFjdFN0YXRlVHlwZSYgc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgY2Fz
ZSBEYXRhVmlld1NldDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgY2FzZSBTZXRBZGQ6
CiAgICAgY2FzZSBNYXBTZXQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
cmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEwNyw2ICs0MTA3LDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRW50cnlTd2l0
Y2g6CiAgICAgY2FzZSBDUFVJbnRyaW5zaWM6CiAgICAgY2FzZSBBc3NlcnROb3RFbXB0eToKKyAg
ICBjYXNlIERhdGFWaWV3R2V0SW50OgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICBj
YXNlIERhdGFWaWV3U2V0OgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
InVuZXhwZWN0ZWQgbm9kZSBpbiBERkcgYmFja2VuZCIpOwogICAgICAgICBicmVhazsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHJldmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NTMsNiArNDU1Mywz
NjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
b21waWxlQ2xlYXJDYXRjaExvY2Fscyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNl
IERhdGFWaWV3R2V0RmxvYXQ6CisgICAgY2FzZSBEYXRhVmlld0dldEludDogeworICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBkYXRhVmlldyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIEdQUlJlZyBkYXRhVmlld0dQUiA9IGRhdGFWaWV3LmdwcigpOworICAgICAgICBzcGVjdWxh
dGVEYXRhVmlld09iamVjdChub2RlLT5jaGlsZDEoKSwgZGF0YVZpZXdHUFIpOworCisgICAgICAg
IFNwZWN1bGF0ZUludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgIEdQUlJlZyBpbmRleEdQUiA9IGluZGV4LmdwcigpOworCisgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wMSh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHQxID0gdGVtcDEuZ3ByKCk7CisgICAgICAg
IEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKyAgICAgICAgR1BSUmVnIHQyID0gdGVtcDIuZ3By
KCk7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVCb29sZWFuT3BlcmFuZD4gaXNM
aXR0bGVFbmRpYW5PcGVyYW5kOworICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCisgICAgICAg
ICAgICBpc0xpdHRsZUVuZGlhbk9wZXJhbmQuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7
CisgICAgICAgIEdQUlJlZyBpc0xpdHRsZUVuZGlhbkdQUiA9IGlzTGl0dGxlRW5kaWFuT3BlcmFu
ZCA/IGlzTGl0dGxlRW5kaWFuT3BlcmFuZC0+Z3ByKCkgOiBJbnZhbGlkR1BSUmVnOworCisgICAg
ICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbm9kZS0+ZGF0YVZpZXdEYXRhKCk7CisKKyAgICAgICAg
bV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHQyKTsKKyAgICAgICAgaWYgKGRhdGEu
Ynl0ZVNpemUgPiAxKQorICAgICAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGRhdGEu
Ynl0ZVNpemUgLSAxKSwgdDIpOworICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZGF0YVZpZXdHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgdDEpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVn
cygpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwgdDIsIHQxKSk7CisKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9y
KCkpLCB0Mik7CisgICAgICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZSh0Mik7CisKKyAgICAgICAg
bV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHQxKTsKKyAgICAgICAgYXV0byBiYXNl
SW5kZXggPSBKSVRDb21waWxlcjo6QmFzZUluZGV4KHQyLCB0MSwgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzT25lKTsKKworICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBEYXRhVmlld0dldEludCkgewor
ICAgICAgICAgICAgc3dpdGNoIChkYXRhLmJ5dGVTaXplKSB7CisgICAgICAgICAgICBjYXNlIDE6
CisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQpCisgICAgICAgICAgICAgICAgICAg
IG1faml0LmxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4KGJhc2VJbmRleCwgdDIp
OworICAgICAgICAgICAgICAgIGludDMyUmVzdWx0KHQyLCBub2RlKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjogeworICAgICAgICAgICAgICAgIGF1dG8gZW1p
dExpdHRsZUVuZGlhbkxvYWQgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5p
c1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQxNlNpZ25lZEV4dGVu
ZFRvMzIoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQxNihiYXNlSW5kZXgsIHQyKTsKKyAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgIGF1dG8gZW1pdEJpZ0VuZGlhbkxvYWQgPSBbJl0gewor
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMTYoYmFzZUluZGV4LCB0Mik7CisgICAgICAg
ICAgICAgICAgICAgIG1faml0LmJ5dGVTd2FwMTYodDIpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5pc1NpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LnNpZ25FeHRl
bmQxNlRvMzIodDIsIHQyKTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAg
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEJpZ0VuZGlhbkxvYWQoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRh
LmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1p
dExpdHRsZUVuZGlhbkxvYWQoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJl
Zyk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNCaWdFbmRpYW4gPSBtX2ppdC5icmFuY2hU
ZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGlzTGl0dGxlRW5kaWFuR1BSLCBUcnVzdGVkSW1t
MzIoMSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuTG9hZCgpOworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICAg
ICAgICAgIGlzQmlnRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEJpZ0VuZGlhbkxvYWQoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludDMyUmVzdWx0KHQyLCBub2Rl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNh
c2UgNDogeworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihiYXNlSW5kZXgsIHQyKTsKKwor
ICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUp
CisgICAgICAgICAgICAgICAgICAgIG1faml0LmJ5dGVTd2FwMzIodDIpOworICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gTWl4ZWRUcmlTdGF0ZSkgeworICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZh
bGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpc0xpdHRsZUVuZGlhbiA9IG1f
aml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgaXNMaXR0bGVFbmRpYW5H
UFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmJ5dGVTd2Fw
MzIodDIpOworICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbi5saW5rKCZtX2ppdCk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNTaWduZWQp
CisgICAgICAgICAgICAgICAgICAgIGludDMyUmVzdWx0KHQyLCBub2RlKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0cmljdEludDUyUmVzdWx0KHQyLCBub2Rl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisgICAgICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigp
OworCisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEuYnl0ZVNpemUpIHsKKyAgICAgICAgICAgIGNh
c2UgNDogeworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0g
eworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRmxvYXQoYmFzZUluZGV4LCByZXN1bHRG
UFIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5jb252ZXJ0RmxvYXRUb0RvdWJsZShyZXN1
bHRGUFIsIHJlc3VsdEZQUik7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAg
IGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoYmFzZUluZGV4LCB0Mik7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmJ5dGVT
d2FwMzIodDIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlMzJUb0Zsb2F0KHQyLCBy
ZXN1bHRGUFIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5jb252ZXJ0RmxvYXRUb0RvdWJs
ZShyZXN1bHRGUFIsIHJlc3VsdEZQUik7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAg
ICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAg
ICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFs
aWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGlzQmlnRW5kaWFuID0gbV9qaXQu
YnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1
c3RlZEltbTMyKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUo
KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAg
ICAgICAgICAgICAgICBpc0JpZ0VuZGlhbi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygm
bV9qaXQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSA4OiB7CisgICAgICAgICAgICAgICAgYXV0byBl
bWl0TGl0dGxlRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0Lmxv
YWREb3VibGUoYmFzZUluZGV4LCByZXN1bHRGUFIpOworICAgICAgICAgICAgICAgIH07CisKKyAg
ICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZDY0KGJhc2VJbmRleCwgdDIpOworICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5ieXRlU3dhcDY0KHQyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZTY0
VG9Eb3VibGUodDIsIHJlc3VsdEZQUik7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAg
ICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAg
ICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFs
aWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGlzQmlnRW5kaWFuID0gbV9qaXQu
YnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1
c3RlZEltbTMyKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUo
KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAg
ICAgICAgICAgICAgICBpc0JpZ0VuZGlhbi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygm
bV9qaXQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkb3Vi
bGVSZXN1bHQocmVzdWx0RlBSLCBub2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGNhc2UgRGF0YVZpZXdTZXQ6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgZGF0YVZpZXcodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAg
ICAgIEdQUlJlZyBkYXRhVmlld0dQUiA9IGRhdGFWaWV3LmdwcigpOworICAgICAgICBzcGVjdWxh
dGVEYXRhVmlld09iamVjdChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLCBkYXRhVmlld0dQ
Uik7CisKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5n
cHIoKTsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFu
ZD4gaW50NTJWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVEb3VibGVPcGVy
YW5kPiBkb3VibGVWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVJbnQzMk9w
ZXJhbmQ+IGludDMyVmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBm
cHJUZW1wb3Jhcnk7CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7Cisg
ICAgICAgIEZQUlJlZyB2YWx1ZUZQUiA9IEludmFsaWRGUFJSZWc7CisgICAgICAgIEZQUlJlZyB0
ZW1wRlBSID0gSW52YWxpZEZQUlJlZzsKKworICAgICAgICBEYXRhVmlld0RhdGEgZGF0YSA9IG5v
ZGUtPmRhdGFWaWV3RGF0YSgpOworCisgICAgICAgIEVkZ2UmIHZhbHVlRWRnZSA9IG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMik7CisgICAgICAgIHN3aXRjaCAodmFsdWVFZGdlLnVzZUtpbmQo
KSkgeworICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICAgICAgaW50MzJWYWx1ZS5lbXBs
YWNlKHRoaXMsIHZhbHVlRWRnZSk7CisgICAgICAgICAgICB2YWx1ZUdQUiA9IGludDMyVmFsdWUt
PmdwcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgor
ICAgICAgICAgICAgZG91YmxlVmFsdWUuZW1wbGFjZSh0aGlzLCB2YWx1ZUVkZ2UpOworICAgICAg
ICAgICAgdmFsdWVGUFIgPSBkb3VibGVWYWx1ZS0+ZnByKCk7CisgICAgICAgICAgICBpZiAoZGF0
YS5ieXRlU2l6ZSA9PSA0KSB7CisgICAgICAgICAgICAgICAgZnByVGVtcG9yYXJ5LmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgICAgICAgICAgdGVtcEZQUiA9IGZwclRlbXBvcmFyeS0+ZnByKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVz
ZToKKyAgICAgICAgICAgIGludDUyVmFsdWUuZW1wbGFjZSh0aGlzLCB2YWx1ZUVkZ2UpOworICAg
ICAgICAgICAgdmFsdWVHUFIgPSBpbnQ1MlZhbHVlLT5ncHIoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMSh0aGlzKTsKKyAg
ICAgICAgR1BSUmVnIHQxID0gdGVtcDEuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
Mih0aGlzKTsKKyAgICAgICAgR1BSUmVnIHQyID0gdGVtcDIuZ3ByKCk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wMyh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHQzID0gdGVtcDMuZ3ByKCk7CisK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVCb29sZWFuT3BlcmFuZD4gaXNMaXR0bGVF
bmRpYW5PcGVyYW5kOworICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSkK
KyAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuT3BlcmFuZC5lbXBsYWNlKHRoaXMsIG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICBHUFJSZWcgaXNMaXR0bGVFbmRpYW5HUFIg
PSBpc0xpdHRsZUVuZGlhbk9wZXJhbmQgPyBpc0xpdHRsZUVuZGlhbk9wZXJhbmQtPmdwcigpIDog
SW52YWxpZEdQUlJlZzsKKworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihpbmRleEdQ
UiwgdDIpOworICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCisgICAgICAgICAgICBtX2pp
dC5hZGQ2NChUcnVzdGVkSW1tMzIoZGF0YS5ieXRlU2l6ZSAtIDEpLCB0Mik7CisgICAgICAgIG1f
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCB0MSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5i
cmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKKworICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHQyKTsKKyAgICAgICAgY2FnZVR5cGVkQXJy
YXlTdG9yYWdlKHQyKTsKKworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihpbmRleEdQ
UiwgdDEpOworICAgICAgICBhdXRvIGJhc2VJbmRleCA9IEpJVENvbXBpbGVyOjpCYXNlSW5kZXgo
dDIsIHQxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNPbmUpOworCisgICAgICAgIGlmIChkYXRhLmlz
RmxvYXRpbmdQb2ludCkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVGUFIgIT0g
SW52YWxpZEZQUlJlZyk7CisgICAgICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA9PSA0KSB7Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGVtcEZQUiAhPSBJbnZhbGlkRlBSUmVnKTsK
KyAgICAgICAgICAgICAgICBtX2ppdC5jb252ZXJ0RG91YmxlVG9GbG9hdCh2YWx1ZUZQUiwgdGVt
cEZQUik7CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRpYW5Db2RlID0gWyZd
IHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVGbG9hdCh0ZW1wRlBSLCBiYXNlSW5k
ZXgpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdF
bmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZUZsb2F0VG8z
Mih0ZW1wRlBSLCB0Myk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmJ5dGVTd2FwMzIodDMp
OworICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHQzLCBiYXNlSW5kZXgpOworICAg
ICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlh
biA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29k
ZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1
ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwor
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBpc0JpZ0VuZGlhbiA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgaXNMaXR0bGVFbmRpYW5HUFIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8g
ZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgaXNCaWdFbmRpYW4ubGlu
aygmbV9qaXQpOworICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAg
ICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEu
Ynl0ZVNpemUgPT0gOCk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVGUFIg
IT0gSW52YWxpZEZQUlJlZyk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRp
YW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFs
dWVGUFIsIGJhc2VJbmRleCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBh
dXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQu
bW92ZURvdWJsZVRvNjQodmFsdWVGUFIsIHQzKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQu
Ynl0ZVN3YXA2NCh0Myk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlNjQodDMsIGJh
c2VJbmRleCk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRh
LmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVt
aXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVF
bmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGlzQmlnRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZEltbTMyKDEpKTsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAgICAgICAgICBp
c0JpZ0VuZGlhbi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRp
YW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHN3aXRjaCAoZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlRWRnZS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOwor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlR1BSICE9IEludmFsaWRHUFJSZWcp
OworICAgICAgICAgICAgICAgIG1faml0LnN0b3JlOCh2YWx1ZUdQUiwgYmFzZUluZGV4KTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjogeworICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlRWRnZS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlR1BSICE9IEludmFsaWRHUFJSZWcpOwor
CisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29kZSA9IFsmXSB7CisgICAg
ICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMTYodmFsdWVHUFIsIGJhc2VJbmRleCk7CisgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2RlID0g
WyZdIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZSh2YWx1ZUdQUiwgdDMpOworICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5ieXRlU3dhcDE2KHQzKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuc3RvcmUxNih0MywgYmFzZUluZGV4KTsKKyAgICAgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIg
IT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNCaWdFbmRpYW4g
PSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGlzTGl0dGxlRW5kaWFu
R1BSLCBUcnVzdGVkSW1tMzIoMSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5k
aWFuQ29kZSgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7
CisgICAgICAgICAgICAgICAgICAgIGlzQmlnRW5kaWFuLmxpbmsoJm1faml0KTsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQodmFsdWVFZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSB8fCB2YWx1ZUVk
Z2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1p
dExpdHRsZUVuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9y
ZTMyKHZhbHVlR1BSLCBiYXNlSW5kZXgpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIodmFsdWVHUFIsIHQzKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuYnl0ZVN3YXAzMih0Myk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0
b3JlMzIodDMsIGJhc2VJbmRleCk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
ICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAg
ICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAo
ZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAg
IGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRH
UFJSZWcpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGlzQmlnRW5kaWFuID0gbV9qaXQuYnJh
bmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3Rl
ZEltbTMyKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAg
ICAgICAgICAgICBpc0JpZ0VuZGlhbi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9q
aXQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
bm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogI2lmIEVOQUJMRShGVExf
SklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBjYWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRkMzIoCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2
aXNpb24gMjM0ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5MDMsNiArOTkwMywyMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVXZWFrU2V0T2JqCiAgICAgc3BlY3VsYXRlV2Vha1NldE9iamVj
dChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlRGF0YVZpZXdPYmplY3QoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3sKKyAgICBzcGVjdWxh
dGVDZWxsVHlwZShlZGdlLCBjZWxsLCBTcGVjRGF0YVZpZXdPYmplY3QsIERhdGFWaWV3VHlwZSk7
Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2Ug
ZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNEYXRhVmlld09iamVj
dCkpCisgICAgICAgIHJldHVybjsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQo
dGhpcywgZWRnZSk7CisgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRnZSwgb3BlcmFuZC5n
cHIoKSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3RoZXIo
RWRnZSBlZGdlKQogewogICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY09iamVjdCB8
IFNwZWNPdGhlcikpCkBAIC0xMDI3MSw2ICsxMDI4NSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZShOb2RlKiwgRWQKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CiAgICAgICAg
IHNwZWN1bGF0ZVdlYWtTZXRPYmplY3QoZWRnZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RGF0YVZpZXdPYmplY3RVc2U6CisgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2Up
OworICAgICAgICBicmVhazsKICAgICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6CiAgICAgICAgIHNw
ZWN1bGF0ZU9iamVjdE9yT3RoZXIoZWRnZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjM0
ODczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjEwLDYgKzE2MTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVj
dWxhdGVXZWFrTWFwT2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0
ZVdlYWtTZXRPYmplY3QoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVXZWFrU2V0T2JqZWN0KEVk
Z2UsIEdQUlJlZyBjZWxsKTsKKyAgICB2b2lkIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KEVkZ2Up
OworICAgIHZvaWQgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoRWRnZSwgR1BSUmVnIGNlbGwpOwog
ICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0T3JPdGhlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0
ZVN0cmluZyhFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmlu
Z0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBHUFJSZWcgc3Rv
cmFnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJl
dmlzaW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCwxNiArMTA0LDE5IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICAgICAgb3V0LnByaW50KCJEZXJpdmVkQXJyYXki
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTWFwT2JqZWN0VXNlOgotICAgICAgICBvdXQu
cHJpbnQoIk1hcE9iamVjdFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIk1hcE9iamVjdCIpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTZXRPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmlu
dCgiU2V0T2JqZWN0VXNlIik7CisgICAgICAgIG91dC5wcmludCgiU2V0T2JqZWN0Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIFdlYWtNYXBPYmplY3RVc2U6Ci0gICAgICAgIG91dC5wcmlu
dCgiV2Vha01hcE9iamVjdFVzZSIpOworICAgICAgICBvdXQucHJpbnQoIldlYWtNYXBPYmplY3Qi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKLSAgICAgICAg
b3V0LnByaW50KCJXZWFrU2V0T2JqZWN0VXNlIik7CisgICAgICAgIG91dC5wcmludCgiV2Vha1Nl
dE9iamVjdCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEYXRhVmlld09iamVjdFVzZToK
KyAgICAgICAgb3V0LnByaW50KCJEYXRhVmlld09iamVjdCIpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBvdXQucHJpbnQoIk9iamVjdE9yT3Ro
ZXIiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lv
biAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIFNldE9iamVj
dFVzZSwKICAgICBXZWFrTWFwT2JqZWN0VXNlLAogICAgIFdlYWtTZXRPYmplY3RVc2UsCisgICAg
RGF0YVZpZXdPYmplY3RVc2UsCiAgICAgU3RyaW5nT2JqZWN0VXNlLAogICAgIFN0cmluZ09yU3Ry
aW5nT2JqZWN0VXNlLAogICAgIE5vdFN0cmluZ1ZhclVzZSwKQEAgLTE2MCw2ICsxNjEsOCBAQCBp
bmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLCiAgICAgICAgIHJldHVybiBT
cGVjV2Vha01hcE9iamVjdDsKICAgICBjYXNlIFdlYWtTZXRPYmplY3RVc2U6CiAgICAgICAgIHJl
dHVybiBTcGVjV2Vha1NldE9iamVjdDsKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0VXNlOgorICAg
ICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNl
OgogICAgICAgICByZXR1cm4gU3BlY1N0cmluZ09iamVjdDsKICAgICBjYXNlIFN0cmluZ09yU3Ry
aW5nT2JqZWN0VXNlOgpAQCAtMjU5LDYgKzI2Miw3IEBAIGlubGluZSBib29sIGlzQ2VsbChVc2VL
aW5kIGtpbmQpCiAgICAgY2FzZSBTZXRPYmplY3RVc2U6CiAgICAgY2FzZSBXZWFrTWFwT2JqZWN0
VXNlOgogICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKKyAgICBjYXNlIERhdGFWaWV3T2JqZWN0
VXNlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw2ICszNTksOSBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgQ3JlYXRl
VGhpczoKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50OgorICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9h
dDoKKyAgICBjYXNlIERhdGFWaWV3U2V0OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAg
ICAgIGJyZWFrOwogCkBAIC00NDUsNiArNDQ4LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgogICAg
ICAgICAgICAgICAgIGNhc2UgV2Vha01hcE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNl
IFdlYWtTZXRPYmplY3RVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBEYXRhVmlld09iamVjdFVz
ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgogICAgICAgICAgICAgICAg
IGNhc2UgUmVnRXhwT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgUHJveHlPYmplY3RV
c2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDcsNiArMTMwNywxMyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgICAgIGNvbXBp
bGVGaWx0ZXJJQ1N0YXR1cygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0
YVZpZXdHZXRJbnQ6CisgICAgICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKKyAgICAgICAgICAg
IGNvbXBpbGVEYXRhVmlld0dldCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RGF0YVZpZXdTZXQ6CisgICAgICAgICAgICBjb21waWxlRGF0YVZpZXdTZXQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExv
b3BIaW50OgpAQCAtMTIyMzgsNiArMTIyNDUsMzU3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICBtX2ludGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG1fbm9kZSk7CiAgICAgfQorCisgICAgTFZh
bHVlIGJ5dGVTd2FwMzIoTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IHRl
YWNoIEIzIGJ5dGVzd2FwCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODg3NTkKKworICAgICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS0+dHlwZSgp
ID09IEludDMyKTsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQu
cGF0Y2hwb2ludChJbnQzMik7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rl
cih2YWx1ZSk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAg
ICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICAgICAgaml0LmJ5dGVTd2FwMzIocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAgIHJl
dHVybiBwYXRjaHBvaW50OworICAgIH0KKworICAgIExWYWx1ZSBieXRlU3dhcDY0KExWYWx1ZSB2
YWx1ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiB0ZWFjaCBCMyBieXRlc3dhcAorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NzU5CisKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBJbnQ2NCk7CisgICAgICAgIFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsdWUpOworICAgICAgICBwYXRj
aHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFt
c1sxXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIGppdC5ieXRlU3dhcDY0
KHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOworICAgICAgICBwYXRjaHBvaW50LT5lZmZl
Y3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRjEsIHR5cGVuYW1lIEYyPgorICAgIExWYWx1ZSBl
bWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKExWYWx1ZSBpc0xpdHRsZUVuZGlhbiwgY29u
c3QgRjEmIGVtaXRMaXR0bGVFbmRpYW5Db2RlLCBjb25zdCBGMiYgZW1pdEJpZ0VuZGlhbkNvZGUp
CisgICAgeworICAgICAgICBMVHlwZSB0eXBlOworCisgICAgICAgIExCYXNpY0Jsb2NrIGJpZ0Vu
ZGlhbkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBsaXR0bGVF
bmRpYW5DYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGlu
dWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2gobV9vdXQu
dGVzdElzWmVybzMyKGlzTGl0dGxlRW5kaWFuLCBtX291dC5jb25zdEludDMyKDEpKSwKKyAgICAg
ICAgICAgIHVuc3VyZShiaWdFbmRpYW5DYXNlKSwgdW5zdXJlKGxpdHRsZUVuZGlhbkNhc2UpKTsK
KworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGJpZ0VuZGlh
bkNhc2UsIGxpdHRsZUVuZGlhbkNhc2UpOworICAgICAgICBMVmFsdWUgYmlnRW5kaWFuVmFsdWUg
PSBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICB0eXBlID0gYmlnRW5kaWFuVmFsdWUgPyBi
aWdFbmRpYW5WYWx1ZS0+dHlwZSgpIDogVm9pZDsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgYmln
RW5kaWFuUmVzdWx0ID0gYmlnRW5kaWFuVmFsdWUgPyBtX291dC5hbmNob3IoYmlnRW5kaWFuVmFs
dWUpIDogVmFsdWVGcm9tQmxvY2soKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxpdHRsZUVuZGlhbkNhc2UsIGNvbnRpbnVhdGlv
bik7CisgICAgICAgIExWYWx1ZSBsaXR0bGVFbmRpYW5WYWx1ZSA9IGVtaXRMaXR0bGVFbmRpYW5D
b2RlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGxpdHRsZUVuZGlhblJlc3VsdCA9IGxpdHRs
ZUVuZGlhblZhbHVlID8gbV9vdXQuYW5jaG9yKGxpdHRsZUVuZGlhblZhbHVlKSA6IFZhbHVlRnJv
bUJsb2NrKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCghbGl0dGxlRW5kaWFuVmFsdWUgJiYg
IWJpZ0VuZGlhblZhbHVlKSB8fCB0eXBlID09IGxpdHRsZUVuZGlhblZhbHVlLT50eXBlKCkpOwor
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEhYmln
RW5kaWFuUmVzdWx0ID09ICEhbGl0dGxlRW5kaWFuUmVzdWx0KTsKKyAgICAgICAgaWYgKGJpZ0Vu
ZGlhblJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBtX291dC5waGkodHlwZSwgYmlnRW5kaWFu
UmVzdWx0LCBsaXR0bGVFbmRpYW5SZXN1bHQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICB2b2lkIGNvbXBpbGVEYXRhVmlld0dldCgpCisgICAgeworICAgICAgICBMVmFs
dWUgZGF0YVZpZXcgPSBsb3dEYXRhVmlld09iamVjdChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExW
YWx1ZSBpc0xpdHRsZUVuZGlhbiA9IG51bGxwdHI7CisgICAgICAgIGlmIChtX25vZGUtPmNoaWxk
MygpKQorICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBsb3dCb29sZWFuKG1fbm9kZS0+Y2hp
bGQzKCkpOworCisgICAgICAgIERhdGFWaWV3RGF0YSBkYXRhID0gbV9ub2RlLT5kYXRhVmlld0Rh
dGEoKTsKKworICAgICAgICBMVmFsdWUgbGVuZ3RoID0gbV9vdXQuemVyb0V4dFB0cihtX291dC5s
b2FkMzJOb25OZWdhdGl2ZShkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5n
dGgpKTsKKyAgICAgICAgTFZhbHVlIGluZGV4VG9DaGVjayA9IG1fb3V0Lnplcm9FeHRQdHIoaW5k
ZXgpOworICAgICAgICBpZiAoZGF0YS5ieXRlU2l6ZSA+IDEpCisgICAgICAgICAgICBpbmRleFRv
Q2hlY2sgPSBtX291dC5hZGQoaW5kZXhUb0NoZWNrLCBtX291dC5jb25zdEludDY0KGRhdGEuYnl0
ZVNpemUgLSAxKSk7CisgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBu
dWxscHRyLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXhUb0NoZWNrLCBsZW5ndGgpKTsKKworICAg
ICAgICBMVmFsdWUgdmVjdG9yID0gY2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgbV9vdXQubG9h
ZFB0cihkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpKTsKKworICAg
ICAgICBUeXBlZFBvaW50ZXIgcG9pbnRlcihtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzLCBt
X291dC5hZGQodmVjdG9yLCBtX291dC56ZXJvRXh0UHRyKGluZGV4KSkpOworCisgICAgICAgIGlm
IChtX25vZGUtPm9wKCkgPT0gRGF0YVZpZXdHZXRJbnQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAo
ZGF0YS5ieXRlU2l6ZSkgeworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIGlm
IChkYXRhLmlzU2lnbmVkKQorICAgICAgICAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5sb2Fk
OFNpZ25FeHQzMihwb2ludGVyKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkOFplcm9FeHQzMihwb2ludGVyKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IHsKKyAgICAgICAgICAgICAgICBh
dXRvIGVtaXRMaXR0bGVFbmRpYW5Mb2FkID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGRhdGEuaXNTaWduZWQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQubG9h
ZDE2U2lnbkV4dDMyKHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQu
bG9hZDE2WmVyb0V4dDMyKHBvaW50ZXIpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgICAgICBhdXRvIGVtaXRCaWdFbmRpYW5Mb2FkID0gWyZdIHsKKyAgICAgICAgICAgICAgICAg
ICAgTFZhbHVlIHZhbCA9IG1fb3V0LmxvYWQxNlplcm9FeHQzMihwb2ludGVyKTsKKworICAgICAg
ICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBv
aW50KEludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJl
Z2lzdGVyKHZhbCk7CisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdw
cigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmJ5dGVT
d2FwMTYocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRh
LmlzU2lnbmVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zaWduRXh0ZW5kMTZU
bzMyKHBhcmFtc1swXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3Rz
Ojpub25lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CisgICAg
ICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFu
ID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgIHNldEludDMyKGVtaXRCaWdF
bmRpYW5Mb2FkKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRp
YW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBzZXRJbnQzMihlbWl0TGl0
dGxlRW5kaWFuTG9hZCgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHNldEludDMyKGVtaXRDb2RlQmFzZWRPbkVuZGlhbm5lc3NCcmFuY2goaXNMaXR0bGVFbmRp
YW4sIGVtaXRMaXR0bGVFbmRpYW5Mb2FkLCBlbWl0QmlnRW5kaWFuTG9hZCkpOworCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIDQ6IHsKKyAg
ICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBtX291dC5sb2FkMzIocG9pbnRlcik7
CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0
YXRlKQorICAgICAgICAgICAgICAgICAgICBsb2FkZWRWYWx1ZSA9IGJ5dGVTd2FwMzIobG9hZGVk
VmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0g
TWl4ZWRUcmlTdGF0ZSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGVtaXRMaXR0bGVFbmRp
YW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZWRWYWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBlbWl0
QmlnRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnl0
ZVN3YXAzMihsb2FkZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgICAgICAgICAgbG9hZGVkVmFsdWUgPSBlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNo
KGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzU2lnbmVk
KQorICAgICAgICAgICAgICAgICAgICBzZXRJbnQzMihsb2FkZWRWYWx1ZSk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC56ZXJv
RXh0KGxvYWRlZFZhbHVlLCBJbnQ2NCkpOworCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGRhdGEuYnl0ZVNpemUpIHsKKyAgICAgICAgICAgIGNhc2UgNDog
eworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0geworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuZmxvYXRUb0RvdWJsZShtX291dC5sb2FkRmxv
YXQocG9pbnRlcikpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhdXRv
IGVtaXRCaWdFbmRpYW5Db2RlID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGxv
YWRlZFZhbHVlID0gbV9vdXQubG9hZDMyKHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICBQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KERvdWJsZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihsb2FkZWRW
YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lz
dGVycyA9IDE7CisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgeworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzFdLmdwcigp
LCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5ieXRl
U3dhcDMyKHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUzMlRvRmxvYXQocGFyYW1zLmdwU2NyYXRjaCgwKSwgcGFyYW1zWzBdLmZwcigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb252ZXJ0RmxvYXRUb0RvdWJsZShwYXJhbXNbMF0u
ZnByKCksIHBhcmFtc1swXS5mcHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICAgICAgICAgICAgICB9Owor
CisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRl
KQorICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdExpdHRsZUVuZGlhbkNvZGUoKSk7
CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRy
aVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdEJpZ0VuZGlhbkNvZGUo
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUo
ZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRs
ZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKSk7CisKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgODogeworICAgICAgICAgICAgICAg
IGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9vdXQubG9hZERvdWJsZShwb2ludGVyKTsKKyAgICAgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICAgICAgYXV0byBlbWl0QmlnRW5kaWFuQ29kZSA9IFsmXSB7CisgICAgICAgICAg
ICAgICAgICAgIExWYWx1ZSBsb2FkZWRWYWx1ZSA9IG1fb3V0LmxvYWQ2NChwb2ludGVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWUgPSBieXRlU3dhcDY0KGxvYWRlZFZhbHVlKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmJpdENhc3QobG9hZGVkVmFsdWUsIERv
dWJsZSk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChkYXRhLmlz
TGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2V0RG91
YmxlKGVtaXRMaXR0bGVFbmRpYW5Db2RlKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRh
dGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAg
c2V0RG91YmxlKGVtaXRCaWdFbmRpYW5Db2RlKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgc2V0RG91YmxlKGVtaXRDb2RlQmFzZWRPbkVuZGlhbm5lc3NCcmFu
Y2goaXNMaXR0bGVFbmRpYW4sIGVtaXRMaXR0bGVFbmRpYW5Db2RlLCBlbWl0QmlnRW5kaWFuQ29k
ZSkpOworCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVEYXRh
Vmlld1NldCgpCisgICAgeworICAgICAgICBMVmFsdWUgZGF0YVZpZXcgPSBsb3dEYXRhVmlld09i
amVjdChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgaW5k
ZXggPSBsb3dJbnQzMihtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpOworICAgICAgICBM
VmFsdWUgaXNMaXR0bGVFbmRpYW4gPSBudWxscHRyOworICAgICAgICBpZiAobV9ncmFwaC52YXJB
cmdDaGlsZChtX25vZGUsIDMpKQorICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBsb3dCb29s
ZWFuKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CisKKyAgICAgICAgRGF0YVZpZXdE
YXRhIGRhdGEgPSBtX25vZGUtPmRhdGFWaWV3RGF0YSgpOworCisgICAgICAgIExWYWx1ZSBsZW5n
dGggPSBtX291dC56ZXJvRXh0UHRyKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKGRhdGFWaWV3LCBt
X2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpOworICAgICAgICBMVmFsdWUgaW5kZXhU
b0NoZWNrID0gbV9vdXQuemVyb0V4dFB0cihpbmRleCk7CisgICAgICAgIGlmIChkYXRhLmJ5dGVT
aXplID4gMSkKKyAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1fb3V0LmFkZChpbmRleFRvQ2hl
Y2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEpKTsKKyAgICAgICAgc3BlY3Vs
YXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmFib3ZlT3JFcXVhbChp
bmRleFRvQ2hlY2ssIGxlbmd0aCkpOworCisgICAgICAgIEVkZ2UmIHZhbHVlRWRnZSA9IG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCAyKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlVG9TdG9yZTsK
KyAgICAgICAgc3dpdGNoICh2YWx1ZUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgSW50
MzJVc2U6CisgICAgICAgICAgICB2YWx1ZVRvU3RvcmUgPSBsb3dJbnQzMih2YWx1ZUVkZ2UpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICAg
ICAgdmFsdWVUb1N0b3JlID0gbG93RG91YmxlKHZhbHVlRWRnZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgICAgIHZhbHVlVG9TdG9yZSA9
IGxvd1N0cmljdEludDUyKHZhbHVlRWRnZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKworICAgICAgICBMVmFsdWUgdmVjdG9yID0gY2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2
ZSwgbV9vdXQubG9hZFB0cihkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0
b3IpKTsKKyAgICAgICAgVHlwZWRQb2ludGVyIHBvaW50ZXIobV9oZWFwcy50eXBlZEFycmF5UHJv
cGVydGllcywgbV9vdXQuYWRkKHZlY3RvciwgbV9vdXQuemVyb0V4dFB0cihpbmRleCkpKTsKKwor
ICAgICAgICBpZiAoZGF0YS5pc0Zsb2F0aW5nUG9pbnQpIHsKKyAgICAgICAgICAgIGlmIChkYXRh
LmJ5dGVTaXplID09IDQpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVRvU3RvcmUgPSBtX291dC5k
b3VibGVUb0Zsb2F0KHZhbHVlVG9TdG9yZSk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGVtaXRM
aXR0bGVFbmRpYW5Db2RlID0gWyZdICgpIC0+IExWYWx1ZSB7CisgICAgICAgICAgICAgICAgICAg
IG1fb3V0LnN0b3JlRmxvYXQodmFsdWVUb1N0b3JlLCBwb2ludGVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
ICAgIGF1dG8gZW1pdEJpZ0VuZGlhbkNvZGUgPSBbJl0gKCkgLT4gTFZhbHVlIHsKKyAgICAgICAg
ICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2lu
dChJbnQzMik7CisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdp
c3Rlcih2YWx1ZVRvU3RvcmUpOworICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlRmxvYXRU
bzMyKHBhcmFtc1sxXS5mcHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5ieXRlU3dhcDMyKHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0
czo6bm9uZSgpOworICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHBhdGNocG9pbnQs
IHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICB9OworCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0g
RmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlT
dGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVtaXRDb2RlQmFzZWRPbkVuZGlh
bm5lc3NCcmFuY2goaXNMaXR0bGVFbmRpYW4sIGVtaXRMaXR0bGVFbmRpYW5Db2RlLCBlbWl0Qmln
RW5kaWFuQ29kZSk7CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZGF0YS5ieXRlU2l6ZSA9PSA4KTsKKyAgICAgICAgICAgICAgICBhdXRvIGVt
aXRMaXR0bGVFbmRpYW5Db2RlID0gWyZdICgpIC0+IExWYWx1ZSB7CisgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LnN0b3JlRG91YmxlKHZhbHVlVG9TdG9yZSwgcG9pbnRlcik7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgYXV0byBlbWl0QmlnRW5kaWFuQ29kZSA9IFsmXSAoKSAtPiBMVmFsdWUgeworICAgICAg
ICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KGJ5dGVTd2FwNjQobV9vdXQuYml0Q2FzdCh2YWx1
ZVRvU3RvcmUsIEludDY0KSksIHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgaWYgKGRhdGEu
aXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEJpZ0VuZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxl
RW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVu
ZGlhbkNvZGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVt
aXRDb2RlQmFzZWRPbkVuZGlhbm5lc3NCcmFuY2goaXNMaXR0bGVFbmRpYW4sIGVtaXRMaXR0bGVF
bmRpYW5Db2RlLCBlbWl0QmlnRW5kaWFuQ29kZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEuYnl0ZVNpemUpIHsKKyAgICAgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZUVkZ2UudXNlS2lu
ZCgpID09IEludDMyVXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyQXM4KHZhbHVl
VG9TdG9yZSwgcG9pbnRlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDI6IHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZUVkZ2UudXNlS2lu
ZCgpID09IEludDMyVXNlKTsKKworICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlh
bkNvZGUgPSBbJl0gKCkgLT4gTFZhbHVlIHsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3Rv
cmUzMkFzMTYodmFsdWVUb1N0b3JlLCBwb2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBhdXRvIGVt
aXRCaWdFbmRpYW5Db2RlID0gWyZdICgpIC0+IExWYWx1ZSB7CisgICAgICAgICAgICAgICAgICAg
IFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50MzIpOwor
ICAgICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodmFsdWVU
b1N0b3JlKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCks
IHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuYnl0ZVN3YXAx
NihwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKworICAgICAg
ICAgICAgICAgICAgICBtX291dC5zdG9yZTMyQXMxNihwYXRjaHBvaW50LCBwb2ludGVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUp
CisgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAg
ICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlz
TGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSA0
OiB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVFZGdlLnVzZUtpbmQoKSA9
PSBJbnQzMlVzZSB8fCB2YWx1ZUVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKTsKKworICAg
ICAgICAgICAgICAgIGlmICh2YWx1ZUVkZ2UudXNlS2luZCgpID09IEludDUyUmVwVXNlKQorICAg
ICAgICAgICAgICAgICAgICB2YWx1ZVRvU3RvcmUgPSBtX291dC5jYXN0VG9JbnQzMih2YWx1ZVRv
U3RvcmUpOworCisgICAgICAgICAgICAgICAgYXV0byBlbWl0TGl0dGxlRW5kaWFuQ29kZSA9IFsm
XSAoKSAtPiBMVmFsdWUgeworICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHZhbHVl
VG9TdG9yZSwgcG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgYXV0byBlbWl0QmlnRW5kaWFuQ29k
ZSA9IFsmXSAoKSAtPiBMVmFsdWUgeworICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMy
KGJ5dGVTd2FwMzIodmFsdWVUb1N0b3JlKSwgcG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAg
ICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEu
aXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICBlbWl0
TGl0dGxlRW5kaWFuQ29kZSgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1p
dExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKTsKKworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQogICAgIAogICAgIHZvaWQgZW1pdFN3aXRjaEZvck11bHRpQnlPZmZzZXQoTFZh
bHVlIGJhc2UsIGJvb2wgc3RydWN0dXJlc0NoZWNrZWQsIFZlY3RvcjxTd2l0Y2hDYXNlLCAyPiYg
Y2FzZXMsIExCYXNpY0Jsb2NrIGV4aXQpCiAgICAgewpAQCAtMTQ0NjgsNiArMTQ4MjYsMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgc3BlY3VsYXRlV2Vha1NldE9iamVjdChlZGdlLCByZXN1bHQpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKworICAgIExWYWx1ZSBsb3dEYXRhVmlld09i
amVjdChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbG93Q2VsbChl
ZGdlKTsKKyAgICAgICAgc3BlY3VsYXRlRGF0YVZpZXdPYmplY3QoZWRnZSwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgCiAgICAgTFZhbHVlIGxvd1N0cmluZyhF
ZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRT
cGVjdWxhdGlvbikKICAgICB7CkBAIC0xNDk0Myw2ICsxNTMwOCw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgV2Vha1NldE9iamVjdFVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZVdlYWtTZXRP
YmplY3QoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEYXRhVmlld09i
amVjdFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZURhdGFWaWV3T2JqZWN0KGVkZ2UpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICAgICAgc3Bl
Y3VsYXRlU3RyaW5nKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTQzNyw2ICsxNTgw
NSwxNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc3BlY3VsYXRlV2Vha1NldE9iamVjdChl
ZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZURhdGFWaWV3
T2JqZWN0KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCisgICAgeworICAgICAgICBGVExfVFlQRV9D
SEVDSygKKyAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY0RhdGFWaWV3
T2JqZWN0LCBpc05vdFR5cGUoY2VsbCwgRGF0YVZpZXdUeXBlKSk7CisgICAgfQorCisgICAgdm9p
ZCBzcGVjdWxhdGVEYXRhVmlld09iamVjdChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBzcGVj
dWxhdGVEYXRhVmlld09iamVjdChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKKyAgICB9CiAgICAgCiAg
ICAgdm9pZCBzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKICAgICB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAJKHJldmlz
aW9uIDIzNDg3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw2ICsyMzksMzggQEAgY29uc3QgY2hhciogaW50cmlu
c2ljTmFtZShJbnRyaW5zaWMgaW50cgogICAgICAgICByZXR1cm4gIkNQVUNwdWlkSW50cmluc2lj
IjsKICAgICBjYXNlIENQVVBhdXNlSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIkNQVVBhdXNl
SW50cmluc2ljIjsKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50ODoKKyAgICAgICAgcmV0dXJuICJE
YXRhVmlld0dldEludDgiOworICAgIGNhc2UgRGF0YVZpZXdHZXRVaW50ODoKKyAgICAgICAgcmV0
dXJuICJEYXRhVmlld0dldFVpbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3R2V0SW50MTY6CisgICAg
ICAgIHJldHVybiAiRGF0YVZpZXdHZXRJbnQxNiI7CisgICAgY2FzZSBEYXRhVmlld0dldFVpbnQx
NjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld0dldFVpbnQxNiI7CisgICAgY2FzZSBEYXRhVmll
d0dldEludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0SW50MzIiOworICAgIGNhc2Ug
RGF0YVZpZXdHZXRVaW50MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdHZXRVaW50MzIiOwor
ICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3R2V0
RmxvYXQzMiI7CisgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0NjQ6CisgICAgICAgIHJldHVybiAi
RGF0YVZpZXdHZXRGbG9hdDY0IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50ODoKKyAgICAgICAg
cmV0dXJuICJEYXRhVmlld1NldEludDgiOworICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50ODoKKyAg
ICAgICAgcmV0dXJuICJEYXRhVmlld1NldFVpbnQ4IjsKKyAgICBjYXNlIERhdGFWaWV3U2V0SW50
MTY6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRJbnQxNiI7CisgICAgY2FzZSBEYXRhVmll
d1NldFVpbnQxNjoKKyAgICAgICAgcmV0dXJuICJEYXRhVmlld1NldFVpbnQxNiI7CisgICAgY2Fz
ZSBEYXRhVmlld1NldEludDMyOgorICAgICAgICByZXR1cm4gIkRhdGFWaWV3U2V0SW50MzIiOwor
ICAgIGNhc2UgRGF0YVZpZXdTZXRVaW50MzI6CisgICAgICAgIHJldHVybiAiRGF0YVZpZXdTZXRV
aW50MzIiOworICAgIGNhc2UgRGF0YVZpZXdTZXRGbG9hdDMyOgorICAgICAgICByZXR1cm4gIkRh
dGFWaWV3U2V0RmxvYXQzMiI7CisgICAgY2FzZSBEYXRhVmlld1NldEZsb2F0NjQ6CisgICAgICAg
IHJldHVybiAiRGF0YVZpZXdTZXRGbG9hdDY0IjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDYgKzEzOSwyMyBAQCBlbnVtIEludHJpbnNpYyB7CiAgICAgQ1BVUmR0c2NJbnRyaW5zaWMsCiAg
ICAgQ1BVQ3B1aWRJbnRyaW5zaWMsCiAgICAgQ1BVUGF1c2VJbnRyaW5zaWMsCisKKyAgICBEYXRh
Vmlld0dldEludDgsCisgICAgRGF0YVZpZXdHZXRVaW50OCwKKyAgICBEYXRhVmlld0dldEludDE2
LAorICAgIERhdGFWaWV3R2V0VWludDE2LAorICAgIERhdGFWaWV3R2V0SW50MzIsCisgICAgRGF0
YVZpZXdHZXRVaW50MzIsCisgICAgRGF0YVZpZXdHZXRGbG9hdDMyLAorICAgIERhdGFWaWV3R2V0
RmxvYXQ2NCwKKyAgICBEYXRhVmlld1NldEludDgsCisgICAgRGF0YVZpZXdTZXRVaW50OCwKKyAg
ICBEYXRhVmlld1NldEludDE2LAorICAgIERhdGFWaWV3U2V0VWludDE2LAorICAgIERhdGFWaWV3
U2V0SW50MzIsCisgICAgRGF0YVZpZXdTZXRVaW50MzIsCisgICAgRGF0YVZpZXdTZXRGbG9hdDMy
LAorICAgIERhdGFWaWV3U2V0RmxvYXQ2NCwKIH07CiAKIGNvbnN0IGNoYXIqIGludHJpbnNpY05h
bWUoSW50cmluc2ljKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMzQ4NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMjIgKzM5LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAvKiBTb3VyY2Ug
Zm9yIEpTRGF0YVZpZXdQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBkYXRhVmlld1RhYmxlCi0gIGdl
dEludDggICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEludDggICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRVaW50OCAgICAgICAgICAgICAgZGF0YVZp
ZXdQcm90b0Z1bmNHZXRVaW50OCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEK
LSAgZ2V0SW50MTYgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MTYgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxCi0gIGdldFVpbnQxNiAgICAgICAgICAgICBk
YXRhVmlld1Byb3RvRnVuY0dldFVpbnQxNiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAg
ICAgMQotICBnZXRJbnQzMiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQzMiAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEKLSAgZ2V0VWludDMyICAgICAgICAg
ICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDMyICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAgICAgICAxCi0gIGdldEZsb2F0MzIgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldEZs
b2F0MzIgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMQotICBnZXRGbG9hdDY0ICAg
ICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDY0ICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uICAgICAgIDEKLSAgc2V0SW50OCAgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5j
U2V0SW50OCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldFVpbnQ4
ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4ICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gICAgICAgMgotICBzZXRJbnQxNiAgICAgICAgICAgICAgZGF0YVZpZXdQcm90
b0Z1bmNTZXRJbnQxNiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0
VWludDE2ICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWludDE2ICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAgICAgICAyCi0gIHNldEludDMyICAgICAgICAgICAgICBkYXRhVmll
d1Byb3RvRnVuY1NldEludDMyICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgot
ICBzZXRVaW50MzIgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIKLSAgc2V0RmxvYXQzMiAgICAgICAgICAgIGRh
dGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQzMiAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAg
ICAyCi0gIHNldEZsb2F0NjQgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMgorICBnZXRJbnQ4ICAgICAgICAgICAg
ICAgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQ4ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
ICAgICAgIDEgIERhdGFWaWV3R2V0SW50OAorICBnZXRVaW50OCAgICAgICAgICAgICAgZGF0YVZp
ZXdQcm90b0Z1bmNHZXRVaW50OCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDEg
IERhdGFWaWV3R2V0VWludDgKKyAgZ2V0SW50MTYgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9G
dW5jR2V0SW50MTYgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmll
d0dldEludDE2CisgIGdldFVpbnQxNiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVp
bnQxNiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRVaW50
MTYKKyAgZ2V0SW50MzIgICAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50MzIgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldEludDMyCisgIGdl
dFVpbnQzMiAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY0dldFVpbnQzMiAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gICAgICAgMSAgRGF0YVZpZXdHZXRVaW50MzIKKyAgZ2V0RmxvYXQz
MiAgICAgICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQzMiAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAgICAgICAxICBEYXRhVmlld0dldEZsb2F0MzIKKyAgZ2V0RmxvYXQ2NCAgICAg
ICAgICAgIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NCAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAgICAgICAxICBEYXRhVmlld0dldEZsb2F0NjQKKyAgc2V0SW50OCAgICAgICAgICAgICAg
IGRhdGFWaWV3UHJvdG9GdW5jU2V0SW50OCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAg
ICAgICAyICBEYXRhVmlld1NldEludDgKKyAgc2V0VWludDggICAgICAgICAgICAgIGRhdGFWaWV3
UHJvdG9GdW5jU2V0VWludDggICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAgICAgICAyICBE
YXRhVmlld1NldFVpbnQ4CisgIHNldEludDE2ICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVu
Y1NldEludDE2ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdT
ZXRJbnQxNgorICBzZXRVaW50MTYgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50
MTYgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0VWludDE2
CisgIHNldEludDMyICAgICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEludDMyICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRJbnQzMgorICBzZXRV
aW50MzIgICAgICAgICAgICAgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uICAgICAgIDIgIERhdGFWaWV3U2V0VWludDMyCisgIHNldEZsb2F0MzIg
ICAgICAgICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0MzIgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gICAgICAgMiAgRGF0YVZpZXdTZXRGbG9hdDMyCisgIHNldEZsb2F0NjQgICAgICAg
ICAgICBkYXRhVmlld1Byb3RvRnVuY1NldEZsb2F0NjQgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gICAgICAgMiAgRGF0YVZpZXdTZXRGbG9hdDY0CiAgIGJ1ZmZlciAgICAgICAgICAgICAgICBk
YXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyICAgICAgICAgICAgRG9udEVudW18QWNjZXNzb3IgICAg
ICAgMAogICBieXRlTGVuZ3RoICAgICAgICAgICAgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5n
dGggICAgICAgIERvbnRFbnVtfEFjY2Vzc29yICAgICAgIDAKICAgYnl0ZU9mZnNldCAgICAgICAg
ICAgIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0ICAgICAgICBEb250RW51bXxBY2Nlc3Nv
ciAgICAgICAwCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjM0ODczKQorKysgU291cmNlL1dURi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wOC0yMCAgU2FhbSBiYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgRGF0YVZpZXcgYWNjZXNz
ZXMgaW50byBERkcvRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODg1NzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMjg2NzQ2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1RyaVN0YXRl
Lmg6CisKIDIwMTgtMDgtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBpc1ZhbGlkQ1NTU2VsZWN0b3IgaXMgdW5zYWZlIHRvIGJlIGNhbGxl
ZCBmcm9tIGEgbm9uLW1haW4gdGhyZWFkCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmgJKHJldmlzaW9uIDIzNDg3
MykKKysrIFNvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcg
KzI4LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLWVudW0gVHJpU3RhdGUgeworZW51bSBUcmlT
dGF0ZSA6IGludDhfdCB7CiAgICAgRmFsc2VUcmlTdGF0ZSwKICAgICBUcnVlVHJpU3RhdGUsCiAg
ICAgTWl4ZWRUcmlTdGF0ZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>