<?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>168945</bug_id>
          
          <creation_ts>2017-02-27 16:22:57 -0800</creation_ts>
          <short_desc>Use ImageDiff built by host SDK and remove ImageDiff from DumpRenderTree</short_desc>
          <delta_ts>2017-05-08 22:11:31 -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>Tools / Tests</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>
          <dependson>168939</dependson>
          <blocked>171847</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dean_johnson</cc>
    
    <cc>fujii</cc>
    
    <cc>lforschler</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1281591</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-02-27 16:22:57 -0800</bug_when>
    <thetext>Webkitpy should use the ImageDiff that is built by the host SDK rather than on built with the SDK being tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281593</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-02-27 16:23:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/30745695&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304813</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-05-04 13:45:16 -0700</bug_when>
    <thetext>*** Bug 168946 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304836</commentid>
    <comment_count>3</comment_count>
      <attachid>309105</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-05-04 14:22:38 -0700</bug_when>
    <thetext>Created attachment 309105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304837</commentid>
    <comment_count>4</comment_count>
      <attachid>309105</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-05-04 14:25:28 -0700</bug_when>
    <thetext>Comment on attachment 309105
Patch

CQ-ing since some archiving code needed to ensure this patch works internally has not yet been landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305113</commentid>
    <comment_count>5</comment_count>
      <attachid>309169</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-05-05 08:22:22 -0700</bug_when>
    <thetext>Created attachment 309169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305114</commentid>
    <comment_count>6</comment_count>
      <attachid>309105</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-05 08:23:56 -0700</bug_when>
    <thetext>Comment on attachment 309105
Patch

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

&gt; Tools/Scripts/build-webkit:307
&gt; +if (!-e $command[0]) {
&gt; +    die &quot;build-imagediff script not found&quot;;
&gt; +}

This should be done only for ports that use this script to build image diff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305118</commentid>
    <comment_count>7</comment_count>
      <attachid>309169</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-05-05 08:34:25 -0700</bug_when>
    <thetext>Comment on attachment 309169
Patch

CQ-ing this again, see Comment 4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305163</commentid>
    <comment_count>8</comment_count>
      <attachid>309169</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-05-05 10:05:46 -0700</bug_when>
    <thetext>Comment on attachment 309169
Patch

Internal infrastructure has been updated.  This patch should be ready to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305248</commentid>
    <comment_count>9</comment_count>
      <attachid>309169</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-05-05 12:15:40 -0700</bug_when>
    <thetext>Comment on attachment 309169
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305255</commentid>
    <comment_count>10</comment_count>
      <attachid>309169</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-05 12:26:40 -0700</bug_when>
    <thetext>Comment on attachment 309169
Patch

Clearing flags on attachment: 309169

Committed r216260: &lt;http://trac.webkit.org/changeset/216260&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305257</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-05 12:26:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305295</commentid>
    <comment_count>12</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-05-05 13:52:39 -0700</bug_when>
    <thetext>Reverted r216260 for reason:

Breaks internal iOS testers

Committed r216271: &lt;http://trac.webkit.org/changeset/216271&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305343</commentid>
    <comment_count>13</comment_count>
      <attachid>309217</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-05-05 15:06:42 -0700</bug_when>
    <thetext>Created attachment 309217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305344</commentid>
    <comment_count>14</comment_count>
      <attachid>309217</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-05-05 15:07:45 -0700</bug_when>
    <thetext>Comment on attachment 309217
Patch

No change to patch.  Just added David Kilzer as the reviewer.  Will be landing again shortly now that Internal bots have been fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305369</commentid>
    <comment_count>15</comment_count>
      <attachid>309217</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-05-05 15:36:33 -0700</bug_when>
    <thetext>Comment on attachment 309217
Patch

Confirmed that the Internal bots fix worked.  Sending to commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305381</commentid>
    <comment_count>16</comment_count>
      <attachid>309217</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-05 15:56:32 -0700</bug_when>
    <thetext>Comment on attachment 309217
Patch

Clearing flags on attachment: 309217

Committed r216288: &lt;http://trac.webkit.org/changeset/216288&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305382</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-05 15:56:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309105</attachid>
            <date>2017-05-04 14:22:38 -0700</date>
            <delta_ts>2017-05-05 08:24:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168945-20170504142244.patch</filename>
            <type>text/plain</type>
            <size>34949</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNjIwNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI5IEBACisyMDE3LTA1LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgSW1hZ2VEaWZmIGJ1aWx0IGJ5IGhvc3QgU0RLIGFuZCByZW1vdmUg
SW1hZ2VEaWZmIGZyb20gRHVtcFJlbmRlclRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODk0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA3
NDU2OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlIEltYWdlRGlmZiBidWlsdCB3aXRoIHRoZSBob3N0IG1hY2hpbmUncyBTREsgYW5kIHN0b3Ag
YnVpbGRpbmcgSW1hZ2VEaWZmIHdpdGggdGhlCisgICAgICAgIHRhcmdldCBTREsuIFRoZXNlIHR3
byBjaGFuZ2VzIG11c3QgaGFwcGVuIHNpbXVsdGFuZW91c2x5IGJlY2F1c2Ugc29tZSBhcmNoaXZl
cyB3aWxsCisgICAgICAgIGNsb2JiZXIgdGhlIEltYWdlRGlmZiBmcm9tIHRoZSBob3N0IFNESyB3
aXRoIHRoZSBJbWFnZURpZmYgZnJvbSB0aGUgdGFyZ2V0IFNESy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9Db25maWd1cmF0aW9ucy9JbWFnZURpZmYueGNjb25maWc6IFJlbW92ZSBJ
bWFnZURpZmYgZnJvbSBwcm9qZWN0LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1BsYXRmb3Jt
V2luLmNtYWtlOiBSZW1vdmUgSW1hZ2VEaWZmLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nn
L0ltYWdlRGlmZkNHLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
Q29uZmlndXJhdGlvbnMvRHVtcFJlbmRlclRyZWUueGNjb25maWc6IFJlbW92ZWQuCisgICAgICAg
ICogU2NyaXB0cy9idWlsZC13ZWJraXQ6IEFsbCBwbGF0Zm9ybXMgc2hvdWxkIGJ1aWxkIEltYWdl
RGlmZiBleHBsaWNpdGx5IHNpbmNlIGl0IGlzIG5vCisgICAgICAgIGxvbmdlciBwYXJ0IG9mIER1
bXBSZW5kZXJUcmVlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4ucHk6
IAorICAgICAgICAoRGFyd2luUG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKTogUmV0dXJuIHRoZSBj
b3JyZWN0IHBhdGggdG8gSW1hZ2VEaWZmIHdoZW4gYnVpbGRpbmcKKyAgICAgICAgbG9jYWxseSBv
ciB3aGVuIHJ1bm5pbmcgYXJjaGl2ZXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0
L2ltYWdlX2RpZmYucHk6CisgICAgICAgIChJT1NTaW11bGF0b3JJbWFnZURpZmZlcik6IERlbGV0
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3IucHk6Cisg
ICAgICAgIChJT1NTaW11bGF0b3JQb3J0LmRpZmZfaW1hZ2UpOiBEZWxldGVkLgorCiAyMDE3LTA1
LTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IEltYWdlRGlmZiBzdGFuZC1hbG9uZQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZv
cm1XaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1X
aW4uY21ha2UJKHJldmlzaW9uIDIxNjIwNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxNiArNTgsNiBAQCBsaXN0KEFQUEVO
RCBUZXN0TmV0c2NhcGVQbHVnSW5fTElCUkFSSUVTCiAgICAgV2ViS2l0CiApCiAKLXNldChJbWFn
ZURpZmZfU09VUkNFUwotICAgIHdpbi9JbWFnZURpZmZXaW4uY3BwCi0pCi0KLXNldChJbWFnZURp
ZmZfTElCUkFSSUVTCi0gICBKYXZhU2NyaXB0Q29yZQotICAgV1RGCi0gICBXZWJLaXQKLSkKLQog
bGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgIHdpbgog
ICAgIFRlc3ROZXRzY2FwZVBsdWdJbgpAQCAtMTAwLDEyICs5MCw2IEBAIGlmICgke1dURl9QTEFU
Rk9STV9XSU5fQ0FJUk99KQogICAgIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlTGliX1NPVVJD
RVMKICAgICAgICAgY2Fpcm8vUGl4ZWxEdW1wU3VwcG9ydENhaXJvLmNwcAogICAgICkKLSAgICBs
aXN0KEFQUEVORCBJbWFnZURpZmZfU09VUkNFUwotICAgICAgICB3aW4vSW1hZ2VEaWZmQ2Fpcm8u
Y3BwCi0gICAgKQotICAgIGxpc3QoQVBQRU5EIEltYWdlRGlmZl9MSUJSQVJJRVMKLSAgICAgICAg
JHtDQUlST19MSUJSQVJJRVN9Ci0gICAgKQogZWxzZSAoKQogICAgIGxpc3QoQVBQRU5EIER1bXBS
ZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAgICAgY2cKQEAgLTExOCwxNCArMTAy
LDYgQEAgZWxzZSAoKQogICAgICAgICBDb3JlR3JhcGhpY3MKICAgICAgICAgQ29yZVRleHQKICAg
ICApCi0gICAgbGlzdChBUFBFTkQgSW1hZ2VEaWZmX1NPVVJDRVMKLSAgICAgICAgY2cvSW1hZ2VE
aWZmQ0cuY3BwCi0gICAgKQotICAgIGxpc3QoQVBQRU5EIEltYWdlRGlmZl9MSUJSQVJJRVMKLSAg
ICAgICBDb3JlRm91bmRhdGlvbgotICAgICAgIENvcmVHcmFwaGljcwotICAgICAgIENvcmVUZXh0
Ci0gICAgKQogZW5kaWYgKCkKIAogQUREX1BSRUNPTVBJTEVEX0hFQURFUigiRHVtcFJlbmRlclRy
ZWVQcmVmaXguaCIgIndpbi9EdW1wUmVuZGVyVHJlZVByZWZpeC5jcHAiIER1bXBSZW5kZXJUcmVl
TGliX1NPVVJDRVMpCkBAIC0xMzUsMTMgKzExMSw0IEBAIGFkZF9kZWZpbml0aW9ucygtRFVTRV9D
T05TT0xFX0VOVFJZX1BPSU4KIGFkZF9saWJyYXJ5KER1bXBSZW5kZXJUcmVlTGliIFNIQVJFRCAk
e0R1bXBSZW5kZXJUcmVlTGliX1NPVVJDRVN9KQogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKER1bXBS
ZW5kZXJUcmVlTGliICR7RHVtcFJlbmRlclRyZWVMaWJfTElCUkFSSUVTfSkKIAotYWRkX2V4ZWN1
dGFibGUoSW1hZ2VEaWZmICR7VE9PTFNfRElSfS93aW4vRExMTGF1bmNoZXIvRExMTGF1bmNoZXJN
YWluLmNwcCkKLXRhcmdldF9saW5rX2xpYnJhcmllcyhJbWFnZURpZmYgc2hsd2FwaSkKLXNldF90
YXJnZXRfcHJvcGVydGllcyhJbWFnZURpZmYgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSAiSW1hZ2VE
aWZmIikKLQotYWRkX2xpYnJhcnkoSW1hZ2VEaWZmTGliIFNIQVJFRCAke0ltYWdlRGlmZl9TT1VS
Q0VTfSkKLXRhcmdldF9saW5rX2xpYnJhcmllcyhJbWFnZURpZmZMaWIgJHtJbWFnZURpZmZfTElC
UkFSSUVTfSkKLQotYWRkX2RlcGVuZGVuY2llcyhJbWFnZURpZmYgSW1hZ2VEaWZmTGliKQotCiBh
ZGRfZGVmaW5pdGlvbnMoLURfVU5JQ09ERSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjE2MjA3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogCQkJCUNFQjc1NEQ0MUJCREEyNkQwMDlGMDQwMSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAogCQkJCTJENDAzRjIxMTUwODczNkMwMDUzNThEMiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAogCQkJCUExMzRFNTJEMTg4RkMwOTIwMDkwMUQwNiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAotCQkJCUE4NEY2MDhGMDhCMTM3MEUwMEU5NzQ1RiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAogCQkJCTE0MUJGMjM4MDk2QTQ1MUUwMEUwNzUzQyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBBbGw7CkBAIC04MCw3ICs3OSw3IEBACiAJCTJENDAzRjFC
MTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyLm0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQwM0VBMjE1MDg3MTQyMDA1MzU4RDIgLyog
TGF5b3V0VGVzdEhlbHBlci5tICovOyB9OwogCQkyREEyRTNBNTFFMUJBNTQxMDBBM0JCRDAgLyog
RHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNBNDFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRl
clRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAv
KiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0IzQjE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovOyB9OwotCQkzMTI5NDNGOTFFNzFGMkI0MDAxRUUy
Q0MgLyogSU9PU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNDhBMDU1MUU2RjkwRjQwMEQzQjMxNiAvKiBJ
T1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgKi87IH07CisJCTMxMjk0M0Y5MUU3MUYyQjQw
MDFFRTJDQyAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTQ4QTA1NTFFNkY5MEY0MDBEM0IzMTYg
LyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3BwICovOyB9OwogCQk0NDY0Q0FCRTFDMjBB
MDhCMDBFNUJCNTUgLyogRHVtcFJlbmRlclRyZWVBcHBNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ2NENBQkQxQzIwQTA3MDAwRTVCQjU1IC8q
IER1bXBSZW5kZXJUcmVlQXBwTWFpbi5tbSAqLzsgfTsKIAkJNEFENkExMTQxM0M4MTI0MDAwRUE5
NzM3IC8qIEZvcm1WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QUQ2QTExMzEzQzgxMjQwMDBFQTk3MzcgLyogRm9ybVZhbHVlLmNwcCAqLzsg
fTsKIAkJNTEwNjgwM0UxNUNDN0IxMDAwMUE4QTIzIC8qIFNsb3dOUFBOZXcuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNjgwM0QxNUNDN0IxMDAw
MUE4QTIzIC8qIFNsb3dOUFBOZXcuY3BwICovOyB9OwpAQCAtMTM5LDcgKzEzOCw2IEBACiAJCUJD
QTE4QzQ3MEM5QjVCOTQwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTE4QzQ2MEM5QjVCOTQwMDExNDM2
OSAvKiBEdW1wUmVuZGVyVHJlZS5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAi
LVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyI7IH07IH07CiAJCUJDQjI4NENEMENGQTgzQzgw
MDdFNTMzRSAvKiBQaXhlbER1bXBTdXBwb3J0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMjg0ODgwQ0ZBODIwMjAwN0U1MzNFIC8qIFBpeGVs
RHVtcFN1cHBvcnRDRy5jcHAgKi87IH07CiAJCUJDQjI4NEQ2MENGQTgzRDEwMDdFNTMzRSAvKiBQ
aXhlbER1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNCMjg0OEMwQ0ZBODIyMTAwN0U1MzNFIC8qIFBpeGVsRHVtcFN1cHBvcnRN
YWMubW0gKi87IH07Ci0JCUJDQjI4NEY2MENGQTg0RjgwMDdFNTMzRSAvKiBJbWFnZURpZmZDRy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IyODRG
MzBDRkE4NEYyMDA3RTUzM0UgLyogSW1hZ2VEaWZmQ0cuY3BwICovOyB9OwogCQlCQ0QwOEIzQTBF
MTA1N0VGMDBBN0QwQzEgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMDhCMzkwRTEwNTdFRjAwQTdE
MEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQkNEMDhCNzEwRTEw
NTlEMjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMDhCNzAwRTEwNTlEMjAwQTdE
MEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tICovOyB9OwogCQlCQ0Y2QzY1MDBD
OThFOUMwMDBBQzA2M0UgLyogR0NDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjZDNjRGMEM5OEU5QzAwMEFDMDYzRSAvKiBHQ0Nv
bnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMTk2LDEzICsxOTQsNiBAQAogCQkJcmVtb3RlR2xvYmFs
SURTdHJpbmcgPSBBMTMyMUM5RDE4OEY5QTM2MDAxMjU0MzQ7CiAJCQlyZW1vdGVJbmZvID0gIkR1
bXBSZW5kZXJUcmVlIChMaWJyYXJ5KSI7CiAJCX07Ci0JCUE4NEY2MDhFMDhCMTM3MEUwMEU5NzQ1
RiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJ
dGVtUHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwOEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcg
LyogUHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFs
SURTdHJpbmcgPSBCNUE3NTI1QTA4QUY0QTRBMDAxMzhFNDU7Ci0JCQlyZW1vdGVJbmZvID0gSW1h
Z2VEaWZmOwotCQl9OwogCQlDRUI3NTREMzFCQkRBMjZEMDA5RjA0MDEgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29u
dGFpbmVyUG9ydGFsID0gMDhGQjc3OTNGRTg0MTU1REMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0
ICovOwpAQCAtMzU3LDcgKzM0OCw2IEBACiAJCUFBNUExNUVFMTZFMTVDRDAwMEY3QzU2MSAvKiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbTsgcGF0aCA9IGlvcy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
QTdGMTBDMjBDQjNDMTAzMDAwM0JEQzkgLyogQUhFTV9fX18uVFRGICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9ICJBSEVNX19fXy5U
VEYiOyBwYXRoID0gImZvbnRzL0FIRU1fX19fLlRURiI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUFFODI1N0VGMDhEMjIzODkwMDA1MDdBQiAvKiBDYXJib24uZnJhbWV3b3JrICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFt
ZXdvcms7IG5hbWUgPSBDYXJib24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsK
LQkJQjVBNzUyNjcwOEFGNEE0QTAwMTM4RTQ1IC8qIEltYWdlRGlmZiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRh
YmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSW1hZ2VEaWZmOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlCNUE3NTJBMTA4QUY1RDFGMDAxMzhFNDUgLyogUXVh
cnR6Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFF1YXJ0ekNvcmUuZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcms7
IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUJDMDEzMUQ4MEM5NzcyMDEwMDg3MzE3
RCAvKiBUZXN0UnVubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUZXN0UnVubmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMTMxRDkw
Qzk3NzIwMTAwODczMTdEIC8qIFRlc3RSdW5uZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRlc3RSdW5uZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQw
Miw3ICszOTIsNiBAQAogCQlCQ0IyODFFRTBDRkE3MTNEMDA3RTUzM0UgLyogQmFzZS54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gQmFzZS54Y2NvbmZpZzsgcGF0aCA9
IG1hYy9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0IyODFGMDBDRkE3MTNEMDA3RTUzM0UgLyogRHVtcFJlbmRlclRyZWUueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9IER1bXBSZW5kZXJUcmVlLnhjY29u
ZmlnOyBwYXRoID0gbWFjL0NvbmZpZ3VyYXRpb25zL0R1bXBSZW5kZXJUcmVlLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IyODJGNDBDRkE3NDUwMDA3RTUzM0UgLyog
RGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IG5hbWUgPSBE
ZWJ1Z1JlbGVhc2UueGNjb25maWc7IHBhdGggPSBtYWMvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxl
YXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0IyODNEODBDRkE3
QUZEMDA3RTUzM0UgLyogSW1hZ2VEaWZmLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IG5hbWUgPSBJbWFnZURpZmYueGNjb25maWc7IHBhdGggPSBtYWMvQ29uZmlndXJhdGlvbnMv
SW1hZ2VEaWZmLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IyODNE
RTBDRkE3QzIwMDA3RTUzM0UgLyogVGVzdE5ldHNjYXBlUGx1Z0luLnhjY29uZmlnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IG5hbWUgPSBUZXN0TmV0c2NhcGVQbHVnSW4ueGNjb25maWc7IHBh
dGggPSBtYWMvQ29uZmlndXJhdGlvbnMvVGVzdE5ldHNjYXBlUGx1Z0luLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IyODQ4ODBDRkE4MjAyMDA3RTUzM0UgLyogUGl4
ZWxEdW1wU3VwcG9ydENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBQaXhlbER1bXBTdXBwb3J0Q0cuY3BwOyBwYXRoID0gY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMjg0ODkwQ0ZBODIwMjAwN0U1MzNF
IC8qIFBpeGVsRHVtcFN1cHBvcnRDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gUGl4ZWxEdW1wU3VwcG9ydENHLmg7IHBhdGggPSBjZy9QaXhlbER1bXBTdXBwb3J0Q0cuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2MSwxMyArNDUwLDYgQEAKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKLQkJQjVBNzUy
NUYwOEFGNEE0QTAwMTM4RTQ1IC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFt
ZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlm
aWxlcyA9ICgKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKLQkJfTsKIC8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KQEAgLTcyMSw3ICs3MDMsNiBAQAogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5MzQwOTk1NDA4NTQwQ0FGMDA3RjNCQzgg
LyogRHVtcFJlbmRlclRyZWUgKi8sCi0JCQkJQjVBNzUyNjcwOEFGNEE0QTAwMTM4RTQ1IC8qIElt
YWdlRGlmZiAqLywKIAkJCQkyRDQwM0YxOTE1MDg3MUY5MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhl
bHBlciAqLywKIAkJCQlBMTE1OEQ3RjE4OTI3RTdBMDA4OEMxN0IgLyogRHVtcFJlbmRlclRyZWUu
YXBwICovLAogCQkJCUExMzIxQzlFMTg4RjlBMzYwMDEyNTQzNCAvKiBsaWJEdW1wUmVuZGVyVHJl
ZS5hICovLApAQCAtODEyLDcgKzc5Myw2IEBACiAJCQkJQkNCMjgxRjAwQ0ZBNzEzRDAwN0U1MzNF
IC8qIER1bXBSZW5kZXJUcmVlLnhjY29uZmlnICovLAogCQkJCUExOTMxN0ZEMTg5Mjg3MzgwMDFD
NTJCMSAvKiBEdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZyAqLywKIAkJCQlBMTM0RTUzOTE4OTA2
NzFDMDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVMaWJyYXJ5LnhjY29uZmlnICovLAotCQkJCUJD
QjI4M0Q4MENGQTdBRkQwMDdFNTMzRSAvKiBJbWFnZURpZmYueGNjb25maWcgKi8sCiAJCQkJQTEx
MDNCNUIxODkyNDk4RjAwNzM4Qzg3IC8qIExheW91dFRlc3RIZWxwZXIueGNjb25maWcgKi8sCiAJ
CQkJQkNCMjgzREUwQ0ZBN0MyMDAwN0U1MzNFIC8qIFRlc3ROZXRzY2FwZVBsdWdJbi54Y2NvbmZp
ZyAqLywKIAkJCSk7CkBAIC04NjQsMTMgKzg0NCw2IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Ci0JCUI1QTc1MjVCMDhBRjRBNEEwMDEz
OEU0NSAvKiBIZWFkZXJzICovID0gewotCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7Ci0J
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkpOwotCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAvKiBFbmQgUEJY
SGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQg
c2VjdGlvbiAqLwpAQCAtOTYyLDI0ICs5MzUsNiBAQAogCQkJcHJvZHVjdFJlZmVyZW5jZSA9IEEx
MzIxQzlFMTg4RjlBMzYwMDEyNTQzNCAvKiBsaWJEdW1wUmVuZGVyVHJlZS5hICovOwogCQkJcHJv
ZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CiAJCX07
Ci0JCUI1QTc1MjVBMDhBRjRBNEEwMDEzOEU0NSAvKiBJbWFnZURpZmYgKi8gPSB7Ci0JCQlpc2Eg
PSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gQjVBNzUyNjQw
OEFGNEE0QTAwMTM4RTQ1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZl
VGFyZ2V0ICJJbWFnZURpZmYiICovOwotCQkJYnVpbGRQaGFzZXMgPSAoCi0JCQkJQjVBNzUyNUIw
OEFGNEE0QTAwMTM4RTQ1IC8qIEhlYWRlcnMgKi8sCi0JCQkJQjVBNzUyNUQwOEFGNEE0QTAwMTM4
RTQ1IC8qIFNvdXJjZXMgKi8sCi0JCQkJQjVBNzUyNUYwOEFGNEE0QTAwMTM4RTQ1IC8qIEZyYW1l
d29ya3MgKi8sCi0JCQkpOwotCQkJYnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNp
ZXMgPSAoCi0JCQkpOwotCQkJbmFtZSA9IEltYWdlRGlmZjsKLQkJCXByb2R1Y3RJbnN0YWxsUGF0
aCA9ICIkKEhPTUUpL2JpbiI7Ci0JCQlwcm9kdWN0TmFtZSA9IER1bXBSZW5kZXJUcmVlOwotCQkJ
cHJvZHVjdFJlZmVyZW5jZSA9IEI1QTc1MjY3MDhBRjRBNEEwMDEzOEU0NSAvKiBJbWFnZURpZmYg
Ki87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOwotCQl9
OwogLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFByb2pl
Y3Qgc2VjdGlvbiAqLwpAQCAtMTAxMSw3ICs5NjYsNiBAQAogCQkJCUExMzIxQzlEMTg4RjlBMzYw
MDEyNTQzNCAvKiBEdW1wUmVuZGVyVHJlZSAoTGlicmFyeSkgKi8sCiAJCQkJOTM0MDk5NEEwODU0
MENBRTAwN0YzQkM4IC8qIER1bXBSZW5kZXJUcmVlICovLAogCQkJCUExMTU4RDdFMTg5MjdFN0Ew
MDg4QzE3QiAvKiBEdW1wUmVuZGVyVHJlZS5hcHAgKi8sCi0JCQkJQjVBNzUyNUEwOEFGNEE0QTAw
MTM4RTQ1IC8qIEltYWdlRGlmZiAqLywKIAkJCQkxNDFCRjIxRTA5NkE0NDFEMDBFMDc1M0MgLyog
VGVzdE5ldHNjYXBlUGx1Z0luICovLAogCQkJCTJENDAzRUIyMTUwODcxRjkwMDUzNThEMiAvKiBM
YXlvdXRUZXN0SGVscGVyICovLAogCQkJKTsKQEAgLTExODAsMTQgKzExMzQsNiBAQAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwotCQlCNUE3
NTI1RDA4QUY0QTRBMDAxMzhFNDUgLyogU291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNvdXJj
ZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVz
ID0gKAotCQkJCUJDQjI4NEY2MENGQTg0RjgwMDdFNTMzRSAvKiBJbWFnZURpZmZDRy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKLQkJfTsKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwpAQCAtMTIyMSwxMSArMTE2Nyw2
IEBACiAJCQl0YXJnZXQgPSBBMTMyMUM5RDE4OEY5QTM2MDAxMjU0MzQgLyogRHVtcFJlbmRlclRy
ZWUgKExpYnJhcnkpICovOwogCQkJdGFyZ2V0UHJveHkgPSBBMTkzMTgwMTE4OTI4QzEwMDAxQzUy
QjEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwogCQl9OwotCQlBODRGNjA4RjA4QjEzNzBF
MDBFOTc0NUYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQgPSBCNUE3NTI1QTA4QUY0QTRBMDAxMzhFNDUgLyogSW1h
Z2VEaWZmICovOwotCQkJdGFyZ2V0UHJveHkgPSBBODRGNjA4RTA4QjEzNzBFMDBFOTc0NUYgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovOwotCQl9OwogCQlDRUI3NTRENDFCQkRBMjZEMDA5RjA0
MDEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVu
ZGVuY3k7CiAJCQl0YXJnZXQgPSBBMTE1OEQ3RTE4OTI3RTdBMDA4OEMxN0IgLyogRHVtcFJlbmRl
clRyZWUuYXBwICovOwpAQCAtMTM1MiwxNSArMTI5Myw2IEBACiAJCQl9OwogCQkJbmFtZSA9IFBy
b2R1Y3Rpb247CiAJCX07Ci0JCTkwQ0JDMzUzMEY3NDhCMTMwMEE3MTJCNyAvKiBQcm9kdWN0aW9u
ICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IEJDQjI4M0Q4MENGQTdBRkQwMDdFNTMzRSAvKiBJbWFnZURpZmYueGNj
b25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUlOU1RBTExfUEFUSCA9ICIkKFNZ
U1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy8kKFdFQktJVF9GUkFNRVdPUktfUkVTT1VSQ0VT
X1BBVEgpIjsKLQkJCQlTS0lQX0lOU1RBTEwgPSBOTzsKLQkJCX07Ci0JCQluYW1lID0gUHJvZHVj
dGlvbjsKLQkJfTsKIAkJOTBDQkMzNTQwRjc0OEIxMzAwQTcxMkI3IC8qIFByb2R1Y3Rpb24gKi8g
PSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gQkNCMjgzREUwQ0ZBN0MyMDAwN0U1MzNFIC8qIFRlc3ROZXRzY2FwZVBsdWdJ
bi54Y2NvbmZpZyAqLzsKQEAgLTE0NTIsMjAgKzEzODQsNiBAQAogCQkJfTsKIAkJCW5hbWUgPSBS
ZWxlYXNlOwogCQl9OwotCQlCNUE3NTI2NTA4QUY0QTRBMDAxMzhFNDUgLyogRGVidWcgKi8gPSB7
Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVm
ZXJlbmNlID0gQkNCMjgzRDgwQ0ZBN0FGRDAwN0U1MzNFIC8qIEltYWdlRGlmZi54Y2NvbmZpZyAq
LzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9Owot
CQlCNUE3NTI2NjA4QUY0QTRBMDAxMzhFNDUgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQ0Iy
ODNEODBDRkE3QUZEMDA3RTUzM0UgLyogSW1hZ2VEaWZmLnhjY29uZmlnICovOwotCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKIC8qIEVuZCBYQ0J1
aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxp
c3Qgc2VjdGlvbiAqLwpAQCAtMTU0OSwxNiArMTQ2Nyw2IEBACiAJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0
aW9uOwogCQl9OwotCQlCNUE3NTI2NDA4QUY0QTRBMDAxMzhFNDUgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkltYWdlRGlmZiIgKi8gPSB7Ci0JCQlpc2Eg
PSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKLQkJCQlC
NUE3NTI2NTA4QUY0QTRBMDAxMzhFNDUgLyogRGVidWcgKi8sCi0JCQkJQjVBNzUyNjYwOEFGNEE0
QTAwMTM4RTQ1IC8qIFJlbGVhc2UgKi8sCi0JCQkJOTBDQkMzNTMwRjc0OEIxMzAwQTcxMkI3IC8q
IFByb2R1Y3Rpb24gKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUg
PSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKIC8q
IEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KIAl9OwogCXJvb3RPYmplY3QgPSAw
OEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCShyZXZpc2lvbiAyMTYyMDcpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSwyNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQmVuIExh
IE1vbmljYSA8YmVuLmxhbW9uaWNhQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBGSVhNRTogV2Ug
bmVlZCB0byBiZSBhYmxlIHRvIGluY2x1ZGUgdGhlc2UgZGVmaW5lcyBmcm9tIGEgY29uZmlnLmgg
c29tZXdoZXJlLgotI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQotCi0jaW5jbHVkZSA8c3RkaW8u
aD4KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
Ci0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSA8d2luc29jazIuaD4KLSNpbmNsdWRlIDx3
aW5kb3dzLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxpby5oPgotI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0Jp
dG1hcENvbnRleHQuaD4KLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dJbWFnZS5oPgotI2luY2x1
ZGUgPEltYWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+Ci0KLSNpZiBQTEFURk9STShJT1MpCi0j
aW5jbHVkZSA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+Ci0jZWxpZiBQTEFURk9S
TShNQUMpCi0jaW5jbHVkZSA8TGF1bmNoU2VydmljZXMvVVRDb3JlVHlwZXMuaD4KLSNlbmRpZgot
Ci0jaWZuZGVmIENHRkxPQVRfREVGSU5FRAotI2lmZGVmIF9fTFA2NF9fCi10eXBlZGVmIGRvdWJs
ZSBDR0Zsb2F0OwotI2Vsc2UKLXR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKLSNlbmRpZgotI2RlZmlu
ZSBDR0ZMT0FUX0RFRklORUQgMQotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLSNp
ZiBQTEFURk9STShXSU4pCi1zdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVBORyA9IENG
U1RSKCJwdWJsaWMucG5nIik7Ci0jZW5kaWYKLQotc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBjcmVhdGVJbWFnZUZyb21TdGRpbihpbnQgYnl0ZXNSZW1haW5pbmcpCi17Ci0gICAgdW5zaWdu
ZWQgY2hhciBidWZmZXJbMjA0OF07Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGRh
dGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgYnl0ZXNSZW1haW5pbmcpKTsKLQot
ICAgIHdoaWxlIChieXRlc1JlbWFpbmluZyA+IDApIHsKLSAgICAgICAgc2l6ZV90IGJ5dGVzVG9S
ZWFkID0gbWluKGJ5dGVzUmVtYWluaW5nLCAyMDQ4KTsKLSAgICAgICAgc2l6ZV90IGJ5dGVzUmVh
ZCA9IGZyZWFkKGJ1ZmZlciwgMSwgYnl0ZXNUb1JlYWQsIHN0ZGluKTsKLSAgICAgICAgQ0ZEYXRh
QXBwZW5kQnl0ZXMoZGF0YS5nZXQoKSwgYnVmZmVyLCBzdGF0aWNfY2FzdDxDRkluZGV4PihieXRl
c1JlYWQpKTsKLSAgICAgICAgYnl0ZXNSZW1haW5pbmcgLT0gc3RhdGljX2Nhc3Q8aW50PihieXRl
c1JlYWQpOwotICAgIH0KLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkp
KTsKLSAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aFBOR0RhdGFQcm92aWRlcihk
YXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHJlbGVhc2VNYWxsb2NCdWZmZXIodm9pZCogaW5mbywgY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCi17Ci0gICAgZnJlZSgodm9pZCopZGF0YSk7Ci19Ci0K
LXN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlRGlmZmVyZW5jZUltYWdlKENHSW1h
Z2VSZWYgYmFzZUltYWdlLCBDR0ltYWdlUmVmIHRlc3RJbWFnZSwgZmxvYXQmIGRpZmZlcmVuY2Up
Ci17Ci0gICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGJhc2VJbWFnZSk7Ci0gICAg
c2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoYmFzZUltYWdlKTsKLSAgICBzaXplX3Qg
cm93Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0KLSAgICAvLyBEcmF3IGJhc2UgaW1hZ2UgaW4gYml0bWFw
IGNvbnRleHQKLSAgICB2b2lkKiBiYXNlQnVmZmVyID0gY2FsbG9jKGhlaWdodCwgcm93Qnl0ZXMp
OwotICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJhc2VDb250ZXh0ID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGUoYmFzZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgcm93Qnl0ZXMs
IENHSW1hZ2VHZXRDb2xvclNwYWNlKGJhc2VJbWFnZSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKLSAgICBDR0NvbnRleHREcmF3
SW1hZ2UoYmFzZUNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCks
IGJhc2VJbWFnZSk7Ci0KLSAgICAvLyBEcmF3IHRlc3QgaW1hZ2UgaW4gYml0bWFwIGNvbnRleHQK
LSAgICB2b2lkKiBidWZmZXIgPSBjYWxsb2MoaGVpZ2h0LCByb3dCeXRlcyk7Ci0gICAgUmV0YWlu
UHRyPENHQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KGJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgcm93Qnl0ZXMsIENHSW1hZ2VHZXRDb2xvclNwYWNl
KHRlc3RJbWFnZSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBC
eXRlT3JkZXIzMkhvc3QpKTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwg
Q0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KSwgdGVzdEltYWdlKTsKLQotICAgIC8vIENv
bXBhcmUgdGhlIGNvbnRlbnQgb2YgdGhlIDIgYml0bWFwcwotICAgIHZvaWQqIGRpZmZCdWZmZXIg
PSBtYWxsb2Mod2lkdGggKiBoZWlnaHQpOwotICAgIGZsb2F0IGNvdW50ID0gMC4wZjsKLSAgICBm
bG9hdCBzdW0gPSAwLjBmOwotICAgIGZsb2F0IG1heERpc3RhbmNlID0gMC4wZjsKLSAgICB1bnNp
Z25lZCBjaGFyKiBiYXNlUGl4ZWwgPSAodW5zaWduZWQgY2hhciopYmFzZUJ1ZmZlcjsKLSAgICB1
bnNpZ25lZCBjaGFyKiBwaXhlbCA9ICh1bnNpZ25lZCBjaGFyKilidWZmZXI7Ci0gICAgdW5zaWdu
ZWQgY2hhciogZGlmZiA9ICh1bnNpZ25lZCBjaGFyKilkaWZmQnVmZmVyOwotICAgIGZvciAoc2l6
ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKLSAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7
IHggPCB3aWR0aDsgKyt4KSB7Ci0gICAgICAgICAgICBmbG9hdCByZWQgPSAocGl4ZWxbMF0gLSBi
YXNlUGl4ZWxbMF0pIC8gbWF4PGZsb2F0PigyNTUgLSBiYXNlUGl4ZWxbMF0sIGJhc2VQaXhlbFsw
XSk7Ci0gICAgICAgICAgICBmbG9hdCBncmVlbiA9IChwaXhlbFsxXSAtIGJhc2VQaXhlbFsxXSkg
LyBtYXg8ZmxvYXQ+KDI1NSAtIGJhc2VQaXhlbFsxXSwgYmFzZVBpeGVsWzFdKTsKLSAgICAgICAg
ICAgIGZsb2F0IGJsdWUgPSAocGl4ZWxbMl0gLSBiYXNlUGl4ZWxbMl0pIC8gbWF4PGZsb2F0Pigy
NTUgLSBiYXNlUGl4ZWxbMl0sIGJhc2VQaXhlbFsyXSk7Ci0gICAgICAgICAgICBmbG9hdCBhbHBo
YSA9IChwaXhlbFszXSAtIGJhc2VQaXhlbFszXSkgLyBtYXg8ZmxvYXQ+KDI1NSAtIGJhc2VQaXhl
bFszXSwgYmFzZVBpeGVsWzNdKTsKLSAgICAgICAgICAgIGZsb2F0IGRpc3RhbmNlID0gc3FydGYo
cmVkICogcmVkICsgZ3JlZW4gKiBncmVlbiArIGJsdWUgKiBibHVlICsgYWxwaGEgKiBhbHBoYSkg
LyAyLjBmOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAqZGlmZisrID0gKHVuc2lnbmVkIGNo
YXIpKGRpc3RhbmNlICogMjU1LjBmKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGRp
c3RhbmNlID49IDEuMGYgLyAyNTUuMGYpIHsKLSAgICAgICAgICAgICAgICBjb3VudCArPSAxLjBm
OwotICAgICAgICAgICAgICAgIHN1bSArPSBkaXN0YW5jZTsKLSAgICAgICAgICAgICAgICBpZiAo
ZGlzdGFuY2UgPiBtYXhEaXN0YW5jZSkKLSAgICAgICAgICAgICAgICAgICAgbWF4RGlzdGFuY2Ug
PSBkaXN0YW5jZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgYmFz
ZVBpeGVsICs9IDQ7Ci0gICAgICAgICAgICBwaXhlbCArPSA0OwotICAgICAgICB9Ci0gICAgfQot
ICAgIAotICAgIC8vIENvbXB1dGUgdGhlIGRpZmZlcmVuY2UgYXMgYSBwZXJjZW50YWdlIGNvbWJp
bmluZyBib3RoIHRoZSBudW1iZXIgb2YgZGlmZmVyZW50IHBpeGVscyBhbmQgdGhlaXIgZGlmZmVy
ZW5jZSBhbW91bnQgaS5lLiB0aGUgYXZlcmFnZSBkaXN0YW5jZSBvdmVyIHRoZSBlbnRpcmUgaW1h
Z2UKLSAgICBpZiAoY291bnQgPiAwLjBmKQotICAgICAgICBkaWZmZXJlbmNlID0gMTAwLjBmICog
c3VtIC8gKGhlaWdodCAqIHdpZHRoKTsKLSAgICBlbHNlCi0gICAgICAgIGRpZmZlcmVuY2UgPSAw
LjBmOwotCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGRpZmZJbWFnZTsKLSAgICAvLyBHZW5l
cmF0ZSBhIG5vcm1hbGl6ZWQgZGlmZiBpbWFnZSBpZiB0aGVyZSBpcyBhbnkgZGlmZmVyZW5jZQot
ICAgIGlmIChkaWZmZXJlbmNlID4gMC4wZikgewotICAgICAgICBpZiAobWF4RGlzdGFuY2UgPCAx
LjBmKSB7Ci0gICAgICAgICAgICBkaWZmID0gKHVuc2lnbmVkIGNoYXIqKWRpZmZCdWZmZXI7Ci0g
ICAgICAgICAgICBmb3Ioc2l6ZV90IHAgPSAwOyBwIDwgaGVpZ2h0ICogd2lkdGg7ICsrcCkKLSAg
ICAgICAgICAgICAgICBkaWZmW3BdID0gZGlmZltwXSAvIG1heERpc3RhbmNlOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRpZmZDb2xvcnNwYWNl
ID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3JheSgpOwotICAgICAgICBSZXRhaW5QdHI8Q0dE
YXRhUHJvdmlkZXJSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhEYXRhKDAsIGRpZmZCdWZmZXIsIHdpZHRoICogaGVpZ2h0LCByZWxlYXNlTWFsbG9jQnVmZmVy
KSk7Ci0gICAgICAgIGRpZmZJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSh3aWR0aCwgaGVp
Z2h0LCA4LCA4LCB3aWR0aCwgZGlmZkNvbG9yc3BhY2UsIDAsIHByb3ZpZGVyLmdldCgpLCAwLCBm
YWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAg
ICAgIGZyZWUoZGlmZkJ1ZmZlcik7Ci0gICAgCi0gICAgLy8gRGVzdHJveSBkcmF3aW5nIGJ1ZmZl
cnMKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBmcmVlKGJ1ZmZlcik7Ci0gICAgaWYgKGJhc2VC
dWZmZXIpCi0gICAgICAgIGZyZWUoYmFzZUJ1ZmZlcik7Ci0gICAgCi0gICAgcmV0dXJuIGRpZmZJ
bWFnZTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGltYWdlSGFzQWxwaGEoQ0dJbWFnZVJlZiBp
bWFnZSkKLXsKLSAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZv
KGltYWdlKTsKLSAgICAKLSAgICByZXR1cm4gKGluZm8gPj0ga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRMYXN0KSAmJiAoaW5mbyA8PSBrQ0dJbWFnZUFscGhhRmlyc3QpOwotfQotCi1pbnQgbWFp
bihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQotewotI2lmIFBMQVRGT1JNKFdJTikKLSAg
ICBfc2V0bW9kZSgwLCBfT19CSU5BUlkpOwotICAgIF9zZXRtb2RlKDEsIF9PX0JJTkFSWSk7Ci0j
ZW5kaWYKLQotICAgIGZsb2F0IHRvbGVyYW5jZSA9IDAuMGY7Ci0KLSAgICBmb3IgKGludCBpID0g
MTsgaSA8IGFyZ2M7ICsraSkgewotICAgICAgICBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXQiKSB8
fCAhc3RyY21wKGFyZ3ZbaV0sICItLXRvbGVyYW5jZSIpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+
PSBhcmdjIC0gMSkKLSAgICAgICAgICAgICAgICBleGl0KDEpOwotICAgICAgICAgICAgdG9sZXJh
bmNlID0gc3RydG9mKGFyZ3ZbaSArIDFdLCAwKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2hhciBidWZmZXJbMjA0OF07
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGFjdHVhbEltYWdlOwotICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBiYXNlbGluZUltYWdlOwotCi0gICAgd2hpbGUgKGZnZXRzKGJ1ZmZlciwgc2l6
ZW9mKGJ1ZmZlciksIHN0ZGluKSkgewotICAgICAgICAvLyByZW1vdmUgdGhlIENSCi0gICAgICAg
IGNoYXIqIG5ld0xpbmVDaGFyYWN0ZXIgPSBzdHJjaHIoYnVmZmVyLCAnXG4nKTsKLSAgICAgICAg
aWYgKG5ld0xpbmVDaGFyYWN0ZXIpCi0gICAgICAgICAgICAqbmV3TGluZUNoYXJhY3RlciA9ICdc
MCc7Ci0KLSAgICAgICAgaWYgKCFzdHJuY21wKCJDb250ZW50LUxlbmd0aDogIiwgYnVmZmVyLCAx
NikpIHsKLSAgICAgICAgICAgIHN0cnRvayhidWZmZXIsICIgIik7Ci0gICAgICAgICAgICBpbnQg
aW1hZ2VTaXplID0gc3RydG9sKHN0cnRvaygwLCAiICIpLCAwLCAxMCk7Ci0KLSAgICAgICAgICAg
IGlmIChpbWFnZVNpemUgPiAwICYmICFhY3R1YWxJbWFnZSkKLSAgICAgICAgICAgICAgICBhY3R1
YWxJbWFnZSA9IGNyZWF0ZUltYWdlRnJvbVN0ZGluKGltYWdlU2l6ZSk7Ci0gICAgICAgICAgICBl
bHNlIGlmIChpbWFnZVNpemUgPiAwICYmICFiYXNlbGluZUltYWdlKQotICAgICAgICAgICAgICAg
IGJhc2VsaW5lSW1hZ2UgPSBjcmVhdGVJbWFnZUZyb21TdGRpbihpbWFnZVNpemUpOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZwdXRzKCJFcnJvcjogaW1hZ2Ugc2l6ZSBtdXN0
IGJlIHNwZWNpZmllZC5cbiIsIHN0ZGVycik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYWN0
dWFsSW1hZ2UgJiYgYmFzZWxpbmVJbWFnZSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGRpZmZJbWFnZTsKLSAgICAgICAgICAgIGZsb2F0IGRpZmZlcmVuY2UgPSAxMDAuMGY7
Ci0KLSAgICAgICAgICAgIGlmICgoQ0dJbWFnZUdldFdpZHRoKGFjdHVhbEltYWdlLmdldCgpKSA9
PSBDR0ltYWdlR2V0V2lkdGgoYmFzZWxpbmVJbWFnZS5nZXQoKSkpICYmIChDR0ltYWdlR2V0SGVp
Z2h0KGFjdHVhbEltYWdlLmdldCgpKSA9PSBDR0ltYWdlR2V0SGVpZ2h0KGJhc2VsaW5lSW1hZ2Uu
Z2V0KCkpKSAmJiAoaW1hZ2VIYXNBbHBoYShhY3R1YWxJbWFnZS5nZXQoKSkgPT0gaW1hZ2VIYXNB
bHBoYShiYXNlbGluZUltYWdlLmdldCgpKSkpIHsKLSAgICAgICAgICAgICAgICBkaWZmSW1hZ2Ug
PSBjcmVhdGVEaWZmZXJlbmNlSW1hZ2UoYWN0dWFsSW1hZ2UuZ2V0KCksIGJhc2VsaW5lSW1hZ2Uu
Z2V0KCksIGRpZmZlcmVuY2UpOyAvLyBkaWZmZXJlbmNlIGlzIHBhc3NlZCBieSByZWZlcmVuY2UK
LSAgICAgICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8PSB0b2xlcmFuY2UpCi0gICAgICAgICAg
ICAgICAgICAgIGRpZmZlcmVuY2UgPSAwLjBmOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlID0gcm91bmRmKGRpZmZlcmVuY2UgKiAxMDAuMGYp
IC8gMTAwLjBmOwotICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlID0gbWF4KGRpZmZlcmVu
Y2UsIDAuMDFmKTsgLy8gcm91bmQgdG8gMiBkZWNpbWFsIHBsYWNlcwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKENHSW1hZ2VHZXRX
aWR0aChhY3R1YWxJbWFnZS5nZXQoKSkgIT0gQ0dJbWFnZUdldFdpZHRoKGJhc2VsaW5lSW1hZ2Uu
Z2V0KCkpIHx8IENHSW1hZ2VHZXRIZWlnaHQoYWN0dWFsSW1hZ2UuZ2V0KCkpICE9IENHSW1hZ2VH
ZXRIZWlnaHQoYmFzZWxpbmVJbWFnZS5nZXQoKSkpIHsKLSNpZiBPUyhXSU5ET1dTKQotICAgICAg
ICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiB0ZXN0IGFuZCByZWZlcmVuY2Ug
aW1hZ2VzIGhhdmUgZGlmZmVyZW50IHNpemVzLiBUZXN0IGltYWdlIGlzICVJdXglSXUsIHJlZmVy
ZW5jZSBpbWFnZSBpcyAlSXV4JUl1XG4iLAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJFcnJvcjogdGVzdCBhbmQgcmVmZXJlbmNlIGltYWdlcyBoYXZlIGRpZmZl
cmVudCBzaXplcy4gVGVzdCBpbWFnZSBpcyAlenV4JXp1LCByZWZlcmVuY2UgaW1hZ2UgaXMgJXp1
eCV6dVxuIiwKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgQ0dJbWFnZUdldFdpZHRo
KGFjdHVhbEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChhY3R1YWxJbWFnZS5nZXQoKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICBDR0ltYWdlR2V0V2lkdGgoYmFzZWxpbmVJbWFnZS5n
ZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoYmFzZWxpbmVJbWFnZS5nZXQoKSkpOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaW1hZ2VIYXNBbHBoYShhY3R1YWxJbWFnZS5nZXQoKSkgIT0gaW1h
Z2VIYXNBbHBoYShiYXNlbGluZUltYWdlLmdldCgpKSkKLSAgICAgICAgICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJFcnJvcjogdGVzdCBhbmQgcmVmZXJlbmNlIGltYWdlcyBkaWZmZXIgaW4g
YWxwaGEuIFRlc3QgaW1hZ2UgJXMgYWxwaGEsIHJlZmVyZW5jZSBpbWFnZSAlcyBhbHBoYS5cbiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUhhc0FscGhhKGFjdHVhbEltYWdlLmdldCgp
KSA/ICJoYXMiIDogImRvZXMgbm90IGhhdmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgaW1h
Z2VIYXNBbHBoYShiYXNlbGluZUltYWdlLmdldCgpKSA/ICJoYXMiIDogImRvZXMgbm90IGhhdmUi
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGRpZmZlcmVu
Y2UgPiAwLjBmKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRpZmZJbWFnZSkgewotICAgICAgICAg
ICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gaW1hZ2VEYXRhID0gYWRvcHRD
RihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKLSAgICAgICAgICAgICAgICAgICAgUmV0YWlu
UHRyPENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gaW1hZ2VEZXN0ID0gYWRvcHRDRihDR0ltYWdlRGVz
dGluYXRpb25DcmVhdGVXaXRoRGF0YShpbWFnZURhdGEuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIDAp
KTsKLSAgICAgICAgICAgICAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VE
ZXN0LmdldCgpLCBkaWZmSW1hZ2UuZ2V0KCksIDApOwotICAgICAgICAgICAgICAgICAgICBDR0lt
YWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3QuZ2V0KCkpOwotI2lmIE9TKFdJTkRPV1Mp
Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICVJdVxuIiwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoaW1hZ2VEYXRhLmdldCgpKSkpOwotI2Vs
c2UKLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDb250ZW50LUxlbmd0aDogJXp1XG4iLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChpbWFnZURhdGEuZ2V0KCkpKSk7Ci0j
ZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgZndyaXRlKENGRGF0YUdldEJ5dGVQdHIoaW1hZ2VE
YXRhLmdldCgpKSwgMSwgQ0ZEYXRhR2V0TGVuZ3RoKGltYWdlRGF0YS5nZXQoKSksIHN0ZG91dCk7
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJk
aWZmOiAlMDEuMmYlJSBmYWlsZWRcbiIsIGRpZmZlcmVuY2UpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJkaWZmOiAlMDEuMmYlJSBwYXNzZWRc
biIsIGRpZmZlcmVuY2UpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBhY3R1YWxJbWFnZSA9
IDA7Ci0gICAgICAgICAgICBiYXNlbGluZUltYWdlID0gMDsKLSAgICAgICAgfQotCi0gICAgICAg
IGZmbHVzaChzdGRvdXQpOwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Nv
bmZpZ3VyYXRpb25zL0ltYWdlRGlmZi54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvQ29uZmlndXJhdGlvbnMvSW1hZ2VEaWZmLnhjY29uZmlnCShyZXZpc2lv
biAyMTYyMDcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQ29uZmlndXJhdGlvbnMvSW1h
Z2VEaWZmLnhjY29uZmlnCShub25leGlzdGVudCkKQEAgLTEsMjggKzAsMCBAQAotLy8gQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLS8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0vLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLS8vIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0vLyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLS8v
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLS8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotLy8gT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotCi0jaW5jbHVkZSAiQmFzZVRhcmdldC54Y2NvbmZp
ZyIKLQotUFJPRFVDVF9OQU1FID0gSW1hZ2VEaWZmOwotT1RIRVJfTERGTEFHU1tzZGs9bWFjb3N4
Kl0gPSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBDYXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJh
bWV3b3JrIFF1YXJ0ekNvcmU7Ci1PVEhFUl9MREZMQUdTW3Nkaz1pcGhvbmUqXSA9ICQoaW5oZXJp
dGVkKSAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1m
cmFtZXdvcmsgTW9iaWxlQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgSW1hZ2VJTzsKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvYnVp
bGQtd2Via2l0CShyZXZpc2lvbiAyMTYyMDcpCisrKyBUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtp
dAkod29ya2luZyBjb3B5KQpAQCAtMjk2LDI1ICsyOTYsMjUgQEAgaWYgKGlzQXBwbGVXaW5XZWJL
aXQoKSB8fCBpc1dpbkNhaXJvKCkpIAogICAgICAgICBpZiAoZXhpdFN0YXR1cygkcmVzdWx0KSkg
ewogICAgICAgICAgICAgZXhpdCBleGl0U3RhdHVzKCRyZXN1bHQpOwogICAgICAgICB9CisgICAg
fQorfQogCi0gICAgICAgICMgQnVpbGQgSW1hZ2VEaWZmIGZvciBob3N0Ci0gICAgICAgIG15IEBj
b21tYW5kID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZShnZXRjd2QoKSwgIi9Ub29scy9TY3JpcHRzL2J1
aWxkLWltYWdlZGlmZiIpOwotICAgICAgICBjaGRpcldlYktpdCgpOwotICAgICAgICBpZiAoIS1l
ICRjb21tYW5kWzBdKSB7Ci0gICAgICAgICAgZGllICJidWlsZC1pbWFnZWRpZmYgc2NyaXB0IG5v
dCBmb3VuZCI7Ci0gICAgICAgIH0KKyMgQnVpbGQgSW1hZ2VEaWZmIGZvciBob3N0CitteSBAY29t
bWFuZCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoZ2V0Y3dkKCksICIvVG9vbHMvU2NyaXB0cy9idWls
ZC1pbWFnZWRpZmYiKTsKK2NoZGlyV2ViS2l0KCk7CitpZiAoIS1lICRjb21tYW5kWzBdKSB7Cisg
ICAgZGllICJidWlsZC1pbWFnZWRpZmYgc2NyaXB0IG5vdCBmb3VuZCI7Cit9CiAKLSAgICAgICAg
aWYgKCRjbGVhbikgewotICAgICAgICAgIHB1c2ggQGNvbW1hbmQsICIgLS1jbGVhbiI7Ci0gICAg
ICAgIH0KLSAgICAgICAgcHVzaCBAY29tbWFuZCwgYXJndW1lbnRzRm9yQ29uZmlndXJhdGlvbigp
OwotICAgICAgICBwdXNoIEBjb21tYW5kLCBAQVJHVjsKLSAgICAgICAgQGNvbW1hbmQgPSBleHRy
YWN0Tm9uTWFjT1NIb3N0Q29uZmlndXJhdGlvbihcQGNvbW1hbmQpOwotICAgICAgICAkcmVzdWx0
ID0gc3lzdGVtKEBjb21tYW5kKTsKLSAgICAgICAgaWYgKGV4aXRTdGF0dXMoJHJlc3VsdCkpIHsK
LSAgICAgICAgICAgIGV4aXQgZXhpdFN0YXR1cygkcmVzdWx0KTsKLSAgICAgICAgfQotICAgIH0K
K2lmICgkY2xlYW4pIHsKKyAgICBwdXNoIEBjb21tYW5kLCAiIC0tY2xlYW4iOworfQorcHVzaCBA
Y29tbWFuZCwgYXJndW1lbnRzRm9yQ29uZmlndXJhdGlvbigpOworcHVzaCBAY29tbWFuZCwgQEFS
R1Y7CitAY29tbWFuZCA9IGV4dHJhY3ROb25NYWNPU0hvc3RDb25maWd1cmF0aW9uKFxAY29tbWFu
ZCk7CiskcmVzdWx0ID0gc3lzdGVtKEBjb21tYW5kKTsKK2lmIChleGl0U3RhdHVzKCRyZXN1bHQp
KSB7CisgICAgZXhpdCBleGl0U3RhdHVzKCRyZXN1bHQpOwogfQogCiAjIERvbid0IHJlcG9ydCB0
aGUgIldlYktpdCBpcyBub3cgYnVpbHQiIG1lc3NhZ2UgYWZ0ZXIgYSBjbGVhbiBvcGVyYXRpb24u
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4ucHkJKHJldmlzaW9uIDIxNjIw
NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4ucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTE3NCw2ICsxNzQsMjYgQEAgY2xhc3MgRGFyd2luUG9ydChBcHBsZVBvcnQpOgogICAg
ICAgICAgICAgICAgICAgICBzYW1wbGVfZmlsZXNbdGVzdF9uYW1lXSA9IHNwaW5kdW1wX2ZpbGUK
ICAgICAgICAgcmV0dXJuIHNhbXBsZV9maWxlcwogCisgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2Rp
ZmYoc2VsZik6CisgICAgICAgICMgSW1hZ2VEaWZmIGZvciBEYXJ3aW5Qb3J0cyBpcyBhIGxpdHRs
ZSBjb21wbGljYXRlZC4gSXQgd2lsbCBlaXRoZXIgYmUgaW4KKyAgICAgICAgIyBhIGRpcmVjdG9y
eSBuYW1lZCAuLi9tYWMgcmVsYXRpdmUgdG8gdGhlIHBvcnQgYnVpbGQgZGlyZWN0b3J5LCBpbiBh
IGRpcmVjdG9yeQorICAgICAgICAjIG5hbWVkIC4uLzxidWlsZC10eXBlPiByZWxhdGl2ZSB0byB0
aGUgcG9ydCBidWlsZCBkaXJlY3Rvcnkgb3IgaW4gdGhlIHBvcnQgYnVpbGQgZGlyZWN0b3J5Cisg
ICAgICAgIF9pbWFnZV9kaWZmX2luX2J1aWxkX3BhdGggPSBzdXBlcihEYXJ3aW5Qb3J0LCBzZWxm
KS5fcGF0aF90b19pbWFnZV9kaWZmKCkKKyAgICAgICAgX3BvcnRfYnVpbGRfZGlyID0gc2VsZi5o
b3N0LmZpbGVzeXN0ZW0uZGlybmFtZShfaW1hZ2VfZGlmZl9pbl9idWlsZF9wYXRoKQorCisgICAg
ICAgICMgVGVzdCAuLi9tYWMKKyAgICAgICAgX3BhdGhfdG9fdGVzdCA9IHNlbGYuaG9zdC5maWxl
c3lzdGVtLmpvaW4oX3BvcnRfYnVpbGRfZGlyLCAnLi4nLCAnbWFjJywgJ0ltYWdlRGlmZicpCisg
ICAgICAgIGlmIHNlbGYuaG9zdC5maWxlc3lzdGVtLmV4aXN0cyhfcGF0aF90b190ZXN0KToKKyAg
ICAgICAgICAgIHJldHVybiBfcGF0aF90b190ZXN0CisKKyAgICAgICAgIyBUZXN0IC4uLzxidWls
ZC10eXBlPgorICAgICAgICBfYnVpbGRfdHlwZSA9IHNlbGYuaG9zdC5maWxlc3lzdGVtLmJhc2Vu
YW1lKF9wb3J0X2J1aWxkX2Rpcikuc3BsaXQoJy0nKVswXQorICAgICAgICBfcGF0aF90b190ZXN0
ID0gc2VsZi5ob3N0LmZpbGVzeXN0ZW0uam9pbihfcG9ydF9idWlsZF9kaXIsICcuLicsIF9idWls
ZF90eXBlLCAnSW1hZ2VEaWZmJykKKyAgICAgICAgaWYgc2VsZi5ob3N0LmZpbGVzeXN0ZW0uZXhp
c3RzKF9wYXRoX3RvX3Rlc3QpOgorICAgICAgICAgICAgcmV0dXJuIF9wYXRoX3RvX3Rlc3QKKwor
ICAgICAgICByZXR1cm4gX2ltYWdlX2RpZmZfaW5fYnVpbGRfcGF0aAorCiAgICAgZGVmIG1ha2Vf
Y29tbWFuZChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYueGNydW5fZmluZCgnbWFrZScsICcv
dXNyL2Jpbi9tYWtlJykKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ltYWdl
X2RpZmYucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ltYWdl
X2RpZmYucHkJKHJldmlzaW9uIDIxNjIwNykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9pbWFnZV9kaWZmLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTUgKzExNSwzIEBAIGNsYXNz
IEltYWdlRGlmZmVyKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3M6CiAgICAgICAg
ICAgICBzZWxmLl9wcm9jZXNzLnN0b3AoKQogICAgICAgICAgICAgc2VsZi5fcHJvY2VzcyA9IE5v
bmUKLQotCi1jbGFzcyBJT1NTaW11bGF0b3JJbWFnZURpZmZlcihJbWFnZURpZmZlcik6Ci0gICAg
ZGVmIF9zdGFydChzZWxmLCB0b2xlcmFuY2UpOgotICAgICAgICAjIEZJWE1FOiBVc2luZyAiYm9v
dGVkIiBpcyBub3QgMTAwJSBjb3JyZWN0LCB3ZSBzaG91bGQgdXNlIGEgZGV2aWNlIElEIHRoYXQg
d2UgY3JlYXRlZC4KLSAgICAgICAgIyBGSVhNRTogSXMgaXQgYSBwcm9ibGVtIHRoYXQgSW1hZ2VE
aWZmIGFuZCBzaW1jdGwgcmVtYWluIHNlcGFyYXRlIHByb2Nlc3Nlcz8gVGhpcyBjb2RlIHVzZWQg
dG8gcGFzcyAtLWFkb3B0LXBpZCB0byBzaW0gdG9vbC4KLSAgICAgICAgIyBXZSBzaG91bGQgcHJv
YmFibHkganVzdCBidWlsZCBhbmQgdXNlIGEgaG9zdCB2ZXJzaW9uIG9mIEltYWdlRGlmZiBpbnN0
ZWFkIG9mIGEgc2ltdWxhdG9yIG9uZSB0byBzb2x2ZSBib3RoLgotICAgICAgICBjb21tYW5kID0g
Wyd4Y3J1bicsICctc2RrJywgJ2lwaG9uZXNpbXVsYXRvcicsICdzaW1jdGwnLCAnc3Bhd24nLCAn
Ym9vdGVkJywgc2VsZi5fcG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCksICctLXRvbGVyYW5jZScs
IHN0cih0b2xlcmFuY2UpXQotICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYuX3BvcnQuc2V0dXBf
ZW52aXJvbl9mb3Jfc2VydmVyKCdJbWFnZURpZmYnKQotICAgICAgICBzZWxmLl9wcm9jZXNzID0g
c2VsZi5fcG9ydC5fc2VydmVyX3Byb2Nlc3NfY29uc3RydWN0b3Ioc2VsZi5fcG9ydCwgJ0ltYWdl
RGlmZicsIGNvbW1hbmQsIGVudmlyb25tZW50KQotICAgICAgICBzZWxmLl9wcm9jZXNzLnN0YXJ0
KCkKLSAgICAgICAgc2VsZi5fdG9sZXJhbmNlID0gdG9sZXJhbmNlCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weQkocmV2aXNpb24gMjE2MjA3KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3IucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDYgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0aW1lCiAK
IGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAotZnJvbSB3ZWJr
aXRweS5wb3J0IGltcG9ydCBpbWFnZV9kaWZmCiBmcm9tIHdlYmtpdHB5LnBvcnQuZGV2aWNlIGlt
cG9ydCBEZXZpY2UKIGZyb20gd2Via2l0cHkucG9ydC5pb3MgaW1wb3J0IElPU1BvcnQKIGZyb20g
d2Via2l0cHkueGNvZGUuc2ltdWxhdG9yIGltcG9ydCBTaW11bGF0b3IsIFJ1bnRpbWUsIERldmlj
ZVR5cGUKQEAgLTMyOCwxOCArMzI3LDYgQEAgY2xhc3MgSU9TU2ltdWxhdG9yUG9ydChJT1NQb3J0
KToKICAgICBkZWYgZ2V0X3NpbXVsYXRvcl9wYXRoKHNlbGYsIHN1ZmZpeD0iIik6CiAgICAgICAg
IHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5TSU1VTEFUT1JfRElSRUNUT1JZLCAiU2ltdWxhdG9y
IiArIHN0cihzdWZmaXgpICsgIi5hcHAiKQogCi0gICAgZGVmIGRpZmZfaW1hZ2Uoc2VsZiwgZXhw
ZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywgdG9sZXJhbmNlPU5vbmUpOgotICAgICAg
ICBpZiBub3QgYWN0dWFsX2NvbnRlbnRzIGFuZCBub3QgZXhwZWN0ZWRfY29udGVudHM6Ci0gICAg
ICAgICAgICByZXR1cm4gKE5vbmUsIDAsIE5vbmUpCi0gICAgICAgIGlmIG5vdCBhY3R1YWxfY29u
dGVudHMgb3Igbm90IGV4cGVjdGVkX2NvbnRlbnRzOgotICAgICAgICAgICAgcmV0dXJuIChUcnVl
LCAwLCBOb25lKQotICAgICAgICBpZiBub3Qgc2VsZi5faW1hZ2VfZGlmZmVyOgotICAgICAgICAg
ICAgc2VsZi5faW1hZ2VfZGlmZmVyID0gaW1hZ2VfZGlmZi5JT1NTaW11bGF0b3JJbWFnZURpZmZl
cihzZWxmKQotICAgICAgICBzZWxmLnNldF9vcHRpb25fZGVmYXVsdCgndG9sZXJhbmNlJywgMC4x
KQotICAgICAgICBpZiB0b2xlcmFuY2UgaXMgTm9uZToKLSAgICAgICAgICAgIHRvbGVyYW5jZSA9
IHNlbGYuZ2V0X29wdGlvbigndG9sZXJhbmNlJykKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ltYWdl
X2RpZmZlci5kaWZmX2ltYWdlKGV4cGVjdGVkX2NvbnRlbnRzLCBhY3R1YWxfY29udGVudHMsIHRv
bGVyYW5jZSkKLQogICAgIGRlZiByZXNldF9wcmVmZXJlbmNlcyhzZWxmKToKICAgICAgICAgX2xv
Zy5kZWJ1ZygicmVzZXRfcHJlZmVyZW5jZXMiKQogICAgICAgICBzZWxmLl9xdWl0X2lvc19zaW11
bGF0b3IoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309169</attachid>
            <date>2017-05-05 08:22:22 -0700</date>
            <delta_ts>2017-05-05 15:06:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168945-20170505082221.patch</filename>
            <type>text/plain</type>
            <size>33478</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNjIxNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4IEBACisyMDE3LTA1LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgSW1hZ2VEaWZmIGJ1aWx0IGJ5IGhvc3QgU0RLIGFuZCByZW1vdmUg
SW1hZ2VEaWZmIGZyb20gRHVtcFJlbmRlclRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODk0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA3
NDU2OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlIEltYWdlRGlmZiBidWlsdCB3aXRoIHRoZSBob3N0IG1hY2hpbmUncyBTREsgYW5kIHN0b3Ag
YnVpbGRpbmcgSW1hZ2VEaWZmIHdpdGggdGhlCisgICAgICAgIHRhcmdldCBTREsuIFRoZXNlIHR3
byBjaGFuZ2VzIG11c3QgaGFwcGVuIHNpbXVsdGFuZW91c2x5IGJlY2F1c2Ugc29tZSBhcmNoaXZl
cyB3aWxsCisgICAgICAgIGNsb2JiZXIgdGhlIEltYWdlRGlmZiBmcm9tIHRoZSBob3N0IFNESyB3
aXRoIHRoZSBJbWFnZURpZmYgZnJvbSB0aGUgdGFyZ2V0IFNESy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9Db25maWd1cmF0aW9ucy9JbWFnZURpZmYueGNjb25maWc6IFJlbW92ZSBJ
bWFnZURpZmYgZnJvbSBwcm9qZWN0LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1BsYXRmb3Jt
V2luLmNtYWtlOiBSZW1vdmUgSW1hZ2VEaWZmLiBOb3RlIHRoYXQgdGhlIENNYWtlTGlzdHMudHh0
IGluIHRoZQorICAgICAgICB0b29scyBkaXJlY3Rvcnkgc3RpbGwgaW5jbHVkZXMgSW1hZ2VEaWZm
LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQ29uZmlndXJhdGlvbnMvRHVtcFJlbmRlclRy
ZWUueGNjb25maWc6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rh
cndpbi5weTogCisgICAgICAgIChEYXJ3aW5Qb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYpOiBSZXR1
cm4gdGhlIGNvcnJlY3QgcGF0aCB0byBJbWFnZURpZmYgd2hlbiBidWlsZGluZworICAgICAgICBs
b2NhbGx5IG9yIHdoZW4gcnVubmluZyBhcmNoaXZlcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BvcnQvaW1hZ2VfZGlmZi5weToKKyAgICAgICAgKElPU1NpbXVsYXRvckltYWdlRGlmZmVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRv
ci5weToKKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQuZGlmZl9pbWFnZSk6IERlbGV0ZWQuCisK
IDIwMTctMDUtMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dLMl0gQWRkIHN1cHBvcnQgZm9yIGtlZXBpbmcgdGhlIHNlbGVjdGlvbiBpbiBhIGZv
Y3VzZWQgZWRpdGFibGUgZWxlbWVudCB3aGVuIGRyYWdnaW5nIGJlZ2lucwpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvUGxhdGZvcm1XaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDIxNjIxNSkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01OCwx
NiArNTgsNiBAQCBsaXN0KEFQUEVORCBUZXN0TmV0c2NhcGVQbHVnSW5fTElCUkFSSUVTCiAgICAg
V2ViS2l0CiApCiAKLXNldChJbWFnZURpZmZfU09VUkNFUwotICAgIHdpbi9JbWFnZURpZmZXaW4u
Y3BwCi0pCi0KLXNldChJbWFnZURpZmZfTElCUkFSSUVTCi0gICBKYXZhU2NyaXB0Q29yZQotICAg
V1RGCi0gICBXZWJLaXQKLSkKLQogbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgIHdpbgogICAgIFRlc3ROZXRzY2FwZVBsdWdJbgpAQCAtMTAwLDEyICs5
MCw2IEBAIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQogICAgIGxpc3QoQVBQRU5EIER1
bXBSZW5kZXJUcmVlTGliX1NPVVJDRVMKICAgICAgICAgY2Fpcm8vUGl4ZWxEdW1wU3VwcG9ydENh
aXJvLmNwcAogICAgICkKLSAgICBsaXN0KEFQUEVORCBJbWFnZURpZmZfU09VUkNFUwotICAgICAg
ICB3aW4vSW1hZ2VEaWZmQ2Fpcm8uY3BwCi0gICAgKQotICAgIGxpc3QoQVBQRU5EIEltYWdlRGlm
Zl9MSUJSQVJJRVMKLSAgICAgICAgJHtDQUlST19MSUJSQVJJRVN9Ci0gICAgKQogZWxzZSAoKQog
ICAgIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAg
ICAgY2cKQEAgLTExOCwxNCArMTAyLDYgQEAgZWxzZSAoKQogICAgICAgICBDb3JlR3JhcGhpY3MK
ICAgICAgICAgQ29yZVRleHQKICAgICApCi0gICAgbGlzdChBUFBFTkQgSW1hZ2VEaWZmX1NPVVJD
RVMKLSAgICAgICAgY2cvSW1hZ2VEaWZmQ0cuY3BwCi0gICAgKQotICAgIGxpc3QoQVBQRU5EIElt
YWdlRGlmZl9MSUJSQVJJRVMKLSAgICAgICBDb3JlRm91bmRhdGlvbgotICAgICAgIENvcmVHcmFw
aGljcwotICAgICAgIENvcmVUZXh0Ci0gICAgKQogZW5kaWYgKCkKIAogQUREX1BSRUNPTVBJTEVE
X0hFQURFUigiRHVtcFJlbmRlclRyZWVQcmVmaXguaCIgIndpbi9EdW1wUmVuZGVyVHJlZVByZWZp
eC5jcHAiIER1bXBSZW5kZXJUcmVlTGliX1NPVVJDRVMpCkBAIC0xMzUsMTMgKzExMSw0IEBAIGFk
ZF9kZWZpbml0aW9ucygtRFVTRV9DT05TT0xFX0VOVFJZX1BPSU4KIGFkZF9saWJyYXJ5KER1bXBS
ZW5kZXJUcmVlTGliIFNIQVJFRCAke0R1bXBSZW5kZXJUcmVlTGliX1NPVVJDRVN9KQogdGFyZ2V0
X2xpbmtfbGlicmFyaWVzKER1bXBSZW5kZXJUcmVlTGliICR7RHVtcFJlbmRlclRyZWVMaWJfTElC
UkFSSUVTfSkKIAotYWRkX2V4ZWN1dGFibGUoSW1hZ2VEaWZmICR7VE9PTFNfRElSfS93aW4vRExM
TGF1bmNoZXIvRExMTGF1bmNoZXJNYWluLmNwcCkKLXRhcmdldF9saW5rX2xpYnJhcmllcyhJbWFn
ZURpZmYgc2hsd2FwaSkKLXNldF90YXJnZXRfcHJvcGVydGllcyhJbWFnZURpZmYgUFJPUEVSVElF
UyBPVVRQVVRfTkFNRSAiSW1hZ2VEaWZmIikKLQotYWRkX2xpYnJhcnkoSW1hZ2VEaWZmTGliIFNI
QVJFRCAke0ltYWdlRGlmZl9TT1VSQ0VTfSkKLXRhcmdldF9saW5rX2xpYnJhcmllcyhJbWFnZURp
ZmZMaWIgJHtJbWFnZURpZmZfTElCUkFSSUVTfSkKLQotYWRkX2RlcGVuZGVuY2llcyhJbWFnZURp
ZmYgSW1hZ2VEaWZmTGliKQotCiBhZGRfZGVmaW5pdGlvbnMoLURfVU5JQ09ERSkKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE2MjE1KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogCQkJCUNFQjc1NEQ0MUJCREEyNkQwMDlGMDQwMSAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCTJENDAzRjIxMTUwODczNkMwMDUzNThEMiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCUExMzRFNTJEMTg4RkMwOTIwMDkwMUQwNiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJCUE4NEY2MDhGMDhCMTM3MEUwMEU5NzQ1RiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCTE0MUJGMjM4MDk2QTQ1MUUwMEUwNzUzQyAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJKTsKIAkJCW5hbWUgPSBBbGw7CkBAIC04MCw3
ICs3OSw3IEBACiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVy
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQwM0VB
MjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9OwogCQkyREEyRTNB
NTFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNBNDFFMUJBNTQx
MDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCTMxMTE3
QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0IzQjE1RDlB
NTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovOyB9OwotCQkz
MTI5NDNGOTFFNzFGMkI0MDAxRUUyQ0MgLyogSU9PU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNDhBMDU1
MUU2RjkwRjQwMEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgKi87IH07
CisJCTMxMjk0M0Y5MUU3MUYyQjQwMDFFRTJDQyAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTQ4
QTA1NTFFNkY5MEY0MDBEM0IzMTYgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3BwICov
OyB9OwogCQk0NDY0Q0FCRTFDMjBBMDhCMDBFNUJCNTUgLyogRHVtcFJlbmRlclRyZWVBcHBNYWlu
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ2NENB
QkQxQzIwQTA3MDAwRTVCQjU1IC8qIER1bXBSZW5kZXJUcmVlQXBwTWFpbi5tbSAqLzsgfTsKIAkJ
NEFENkExMTQxM0M4MTI0MDAwRUE5NzM3IC8qIEZvcm1WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQ2QTExMzEzQzgxMjQwMDBFQTk3Mzcg
LyogRm9ybVZhbHVlLmNwcCAqLzsgfTsKIAkJNTEwNjgwM0UxNUNDN0IxMDAwMUE4QTIzIC8qIFNs
b3dOUFBOZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwNjgwM0QxNUNDN0IxMDAwMUE4QTIzIC8qIFNsb3dOUFBOZXcuY3BwICovOyB9OwpAQCAt
MTM5LDcgKzEzOCw2IEBACiAJCUJDQTE4QzQ3MEM5QjVCOTQwMDExNDM2OSAvKiBEdW1wUmVuZGVy
VHJlZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QTE4QzQ2MEM5QjVCOTQwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZS5tbSAqLzsgc2V0dGluZ3Mg
PSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyI7IH07IH07
CiAJCUJDQjI4NENEMENGQTgzQzgwMDdFNTMzRSAvKiBQaXhlbER1bXBTdXBwb3J0Q0cuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMjg0ODgwQ0ZB
ODIwMjAwN0U1MzNFIC8qIFBpeGVsRHVtcFN1cHBvcnRDRy5jcHAgKi87IH07CiAJCUJDQjI4NEQ2
MENGQTgzRDEwMDdFNTMzRSAvKiBQaXhlbER1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMjg0OEMwQ0ZBODIyMTAwN0U1MzNF
IC8qIFBpeGVsRHVtcFN1cHBvcnRNYWMubW0gKi87IH07Ci0JCUJDQjI4NEY2MENGQTg0RjgwMDdF
NTMzRSAvKiBJbWFnZURpZmZDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0IyODRGMzBDRkE4NEYyMDA3RTUzM0UgLyogSW1hZ2VEaWZmQ0cuY3Bw
ICovOyB9OwogCQlCQ0QwOEIzQTBFMTA1N0VGMDBBN0QwQzEgLyogQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNEMDhCMzkwRTEwNTdFRjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAq
LzsgfTsKIAkJQkNEMDhCNzEwRTEwNTlEMjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNEMDhCNzAwRTEwNTlEMjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1t
ICovOyB9OwogCQlCQ0Y2QzY1MDBDOThFOUMwMDBBQzA2M0UgLyogR0NDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjZDNjRGMEM5
OEU5QzAwMEFDMDYzRSAvKiBHQ0NvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMTk2LDEzICsxOTQs
NiBAQAogCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBBMTMyMUM5RDE4OEY5QTM2MDAxMjU0MzQ7
CiAJCQlyZW1vdGVJbmZvID0gIkR1bXBSZW5kZXJUcmVlIChMaWJyYXJ5KSI7CiAJCX07Ci0JCUE4
NEY2MDhFMDhCMTM3MEUwMEU5NzQ1RiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0J
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwOEZC
Nzc5M0ZFODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUg
PSAxOwotCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBCNUE3NTI1QTA4QUY0QTRBMDAxMzhFNDU7
Ci0JCQlyZW1vdGVJbmZvID0gSW1hZ2VEaWZmOwotCQl9OwogCQlDRUI3NTREMzFCQkRBMjZEMDA5
RjA0MDEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFp
bmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDhGQjc3OTNGRTg0MTU1REMwMkFB
QzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtMzU3LDcgKzM0OCw2IEBACiAJCUFBNUExNUVF
MTZFMTVDRDAwMEY3QzU2MSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudElP
Uy5tbTsgcGF0aCA9IGlvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBQTdGMTBDMjBDQjNDMTAzMDAwM0JEQzkgLyogQUhFTV9fX18u
VFRGICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmls
ZTsgbmFtZSA9ICJBSEVNX19fXy5UVEYiOyBwYXRoID0gImZvbnRzL0FIRU1fX19fLlRURiI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFFODI1N0VGMDhEMjIzODkwMDA1MDdBQiAvKiBD
YXJib24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDYXJib24uZnJhbWV3b3JrOyBwYXRo
ID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yazsgc291cmNlVHJl
ZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJQjVBNzUyNjcwOEFGNEE0QTAwMTM4RTQ1IC8qIEltYWdl
RGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSW1h
Z2VEaWZmOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlCNUE3NTJBMTA4
QUY1RDFGMDAxMzhFNDUgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IFF1YXJ0ekNvcmUuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UXVhcnR6Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUJD
MDEzMUQ4MEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0UnVubmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMwMTMxRDkwQzk3NzIwMTAwODczMTdEIC8qIFRlc3RSdW5uZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RSdW5uZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMiw3ICszOTIsNiBAQAogCQlCQ0IyODFFRTBDRkE3MTNEMDA3
RTUzM0UgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0g
QmFzZS54Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IyODFGMDBDRkE3MTNEMDA3RTUzM0UgLyog
RHVtcFJlbmRlclRyZWUueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9
IER1bXBSZW5kZXJUcmVlLnhjY29uZmlnOyBwYXRoID0gbWFjL0NvbmZpZ3VyYXRpb25zL0R1bXBS
ZW5kZXJUcmVlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IyODJG
NDBDRkE3NDUwMDA3RTUzM0UgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IG5hbWUgPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHBhdGggPSBtYWMvQ29u
ZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCQ0IyODNEODBDRkE3QUZEMDA3RTUzM0UgLyogSW1hZ2VEaWZmLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IG5hbWUgPSBJbWFnZURpZmYueGNjb25maWc7IHBhdGgg
PSBtYWMvQ29uZmlndXJhdGlvbnMvSW1hZ2VEaWZmLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQ0IyODNERTBDRkE3QzIwMDA3RTUzM0UgLyogVGVzdE5ldHNjYXBlUGx1
Z0luLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IG5hbWUgPSBUZXN0TmV0c2Nh
cGVQbHVnSW4ueGNjb25maWc7IHBhdGggPSBtYWMvQ29uZmlndXJhdGlvbnMvVGVzdE5ldHNjYXBl
UGx1Z0luLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IyODQ4ODBD
RkE4MjAyMDA3RTUzM0UgLyogUGl4ZWxEdW1wU3VwcG9ydENHLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQaXhlbER1bXBTdXBwb3J0Q0cuY3BwOyBwYXRoID0gY2cv
UGl4ZWxEdW1wU3VwcG9ydENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNC
Mjg0ODkwQ0ZBODIwMjAwN0U1MzNFIC8qIFBpeGVsRHVtcFN1cHBvcnRDRy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGl4ZWxEdW1wU3VwcG9ydENHLmg7IHBhdGggPSBjZy9Q
aXhlbER1bXBTdXBwb3J0Q0cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2MSwx
MyArNDUwLDYgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKLQkJQjVBNzUyNUYwOEFGNEE0QTAwMTM4RTQ1IC8qIEZyYW1ld29ya3MgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKIC8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KQEAgLTcyMSw3
ICs3MDMsNiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5MzQw
OTk1NDA4NTQwQ0FGMDA3RjNCQzggLyogRHVtcFJlbmRlclRyZWUgKi8sCi0JCQkJQjVBNzUyNjcw
OEFGNEE0QTAwMTM4RTQ1IC8qIEltYWdlRGlmZiAqLywKIAkJCQkyRDQwM0YxOTE1MDg3MUY5MDA1
MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlciAqLywKIAkJCQlBMTE1OEQ3RjE4OTI3RTdBMDA4OEMx
N0IgLyogRHVtcFJlbmRlclRyZWUuYXBwICovLAogCQkJCUExMzIxQzlFMTg4RjlBMzYwMDEyNTQz
NCAvKiBsaWJEdW1wUmVuZGVyVHJlZS5hICovLApAQCAtODEyLDcgKzc5Myw2IEBACiAJCQkJQkNC
MjgxRjAwQ0ZBNzEzRDAwN0U1MzNFIC8qIER1bXBSZW5kZXJUcmVlLnhjY29uZmlnICovLAogCQkJ
CUExOTMxN0ZEMTg5Mjg3MzgwMDFDNTJCMSAvKiBEdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZyAq
LywKIAkJCQlBMTM0RTUzOTE4OTA2NzFDMDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVMaWJyYXJ5
LnhjY29uZmlnICovLAotCQkJCUJDQjI4M0Q4MENGQTdBRkQwMDdFNTMzRSAvKiBJbWFnZURpZmYu
eGNjb25maWcgKi8sCiAJCQkJQTExMDNCNUIxODkyNDk4RjAwNzM4Qzg3IC8qIExheW91dFRlc3RI
ZWxwZXIueGNjb25maWcgKi8sCiAJCQkJQkNCMjgzREUwQ0ZBN0MyMDAwN0U1MzNFIC8qIFRlc3RO
ZXRzY2FwZVBsdWdJbi54Y2NvbmZpZyAqLywKIAkJCSk7CkBAIC04NjQsMTMgKzg0NCw2IEBACiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Ci0J
CUI1QTc1MjVCMDhBRjRBNEEwMDEzOEU0NSAvKiBIZWFkZXJzICovID0gewotCQkJaXNhID0gUEJY
SGVhZGVyc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJ
ZmlsZXMgPSAoCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7Ci0JCX07CiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwpAQCAtOTYyLDI0ICs5MzUsNiBAQAogCQkJ
cHJvZHVjdFJlZmVyZW5jZSA9IEExMzIxQzlFMTg4RjlBMzYwMDEyNTQzNCAvKiBsaWJEdW1wUmVu
ZGVyVHJlZS5hICovOwogCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5s
aWJyYXJ5LnN0YXRpYyI7CiAJCX07Ci0JCUI1QTc1MjVBMDhBRjRBNEEwMDEzOEU0NSAvKiBJbWFn
ZURpZmYgKi8gPSB7Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gQjVBNzUyNjQwOEFGNEE0QTAwMTM4RTQ1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJJbWFnZURpZmYiICovOwotCQkJYnVpbGRQaGFz
ZXMgPSAoCi0JCQkJQjVBNzUyNUIwOEFGNEE0QTAwMTM4RTQ1IC8qIEhlYWRlcnMgKi8sCi0JCQkJ
QjVBNzUyNUQwOEFGNEE0QTAwMTM4RTQ1IC8qIFNvdXJjZXMgKi8sCi0JCQkJQjVBNzUyNUYwOEFG
NEE0QTAwMTM4RTQ1IC8qIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJYnVpbGRSdWxlcyA9ICgK
LQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkpOwotCQkJbmFtZSA9IEltYWdlRGlmZjsK
LQkJCXByb2R1Y3RJbnN0YWxsUGF0aCA9ICIkKEhPTUUpL2JpbiI7Ci0JCQlwcm9kdWN0TmFtZSA9
IER1bXBSZW5kZXJUcmVlOwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IEI1QTc1MjY3MDhBRjRBNEEw
MDEzOEU0NSAvKiBJbWFnZURpZmYgKi87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJv
ZHVjdC10eXBlLnRvb2wiOwotCQl9OwogLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLwpAQCAtMTAxMSw3ICs5NjYsNiBAQAog
CQkJCUExMzIxQzlEMTg4RjlBMzYwMDEyNTQzNCAvKiBEdW1wUmVuZGVyVHJlZSAoTGlicmFyeSkg
Ki8sCiAJCQkJOTM0MDk5NEEwODU0MENBRTAwN0YzQkM4IC8qIER1bXBSZW5kZXJUcmVlICovLAog
CQkJCUExMTU4RDdFMTg5MjdFN0EwMDg4QzE3QiAvKiBEdW1wUmVuZGVyVHJlZS5hcHAgKi8sCi0J
CQkJQjVBNzUyNUEwOEFGNEE0QTAwMTM4RTQ1IC8qIEltYWdlRGlmZiAqLywKIAkJCQkxNDFCRjIx
RTA5NkE0NDFEMDBFMDc1M0MgLyogVGVzdE5ldHNjYXBlUGx1Z0luICovLAogCQkJCTJENDAzRUIy
MTUwODcxRjkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyICovLAogCQkJKTsKQEAgLTExODAs
MTQgKzExMzQsNiBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwotCQlCNUE3NTI1RDA4QUY0QTRBMDAxMzhFNDUgLyogU291cmNlcyAqLyA9
IHsKLQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCUJDQjI4NEY2MENGQTg0RjgwMDdFNTMzRSAv
KiBJbWFnZURpZmZDRy5jcHAgaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAq
LwpAQCAtMTIyMSwxMSArMTE2Nyw2IEBACiAJCQl0YXJnZXQgPSBBMTMyMUM5RDE4OEY5QTM2MDAx
MjU0MzQgLyogRHVtcFJlbmRlclRyZWUgKExpYnJhcnkpICovOwogCQkJdGFyZ2V0UHJveHkgPSBB
MTkzMTgwMTE4OTI4QzEwMDAxQzUyQjEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwogCQl9
OwotCQlBODRGNjA4RjA4QjEzNzBFMDBFOTc0NUYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQgPSBCNUE3NTI1QTA4
QUY0QTRBMDAxMzhFNDUgLyogSW1hZ2VEaWZmICovOwotCQkJdGFyZ2V0UHJveHkgPSBBODRGNjA4
RTA4QjEzNzBFMDBFOTc0NUYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwotCQl9OwogCQlD
RUI3NTRENDFCQkRBMjZEMDA5RjA0MDEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSBBMTE1OEQ3RTE4OTI3RTdB
MDA4OEMxN0IgLyogRHVtcFJlbmRlclRyZWUuYXBwICovOwpAQCAtMTM1MiwxNSArMTI5Myw2IEBA
CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07Ci0JCTkwQ0JDMzUzMEY3NDhCMTMw
MEE3MTJCNyAvKiBQcm9kdWN0aW9uICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247Ci0JCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDQjI4M0Q4MENGQTdBRkQwMDdF
NTMzRSAvKiBJbWFnZURpZmYueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJ
CUlOU1RBTExfUEFUSCA9ICIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy8kKFdFQktJ
VF9GUkFNRVdPUktfUkVTT1VSQ0VTX1BBVEgpIjsKLQkJCQlTS0lQX0lOU1RBTEwgPSBOTzsKLQkJ
CX07Ci0JCQluYW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKIAkJOTBDQkMzNTQwRjc0OEIxMzAwQTcx
MkI3IC8qIFByb2R1Y3Rpb24gKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
IAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkNCMjgzREUwQ0ZBN0MyMDAwN0U1MzNF
IC8qIFRlc3ROZXRzY2FwZVBsdWdJbi54Y2NvbmZpZyAqLzsKQEAgLTE0NTIsMjAgKzEzODQsNiBA
QAogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwotCQlCNUE3NTI2NTA4QUY0QTRBMDAx
MzhFNDUgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkNCMjgzRDgwQ0ZBN0FGRDAwN0U1MzNFIC8q
IEltYWdlRGlmZi54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQl9OwotCQkJ
bmFtZSA9IERlYnVnOwotCQl9OwotCQlCNUE3NTI2NjA4QUY0QTRBMDAxMzhFNDUgLyogUmVsZWFz
ZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSBCQ0IyODNEODBDRkE3QUZEMDA3RTUzM0UgLyogSW1hZ2VEaWZmLnhj
Y29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFz
ZTsKLQkJfTsKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwpAQCAtMTU0OSwxNiArMTQ2Nyw2IEBA
CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwotCQlCNUE3NTI2NDA4QUY0QTRBMDAxMzhF
NDUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkltYWdl
RGlmZiIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25m
aWd1cmF0aW9ucyA9ICgKLQkJCQlCNUE3NTI2NTA4QUY0QTRBMDAxMzhFNDUgLyogRGVidWcgKi8s
Ci0JCQkJQjVBNzUyNjYwOEFGNEE0QTAwMTM4RTQ1IC8qIFJlbGVhc2UgKi8sCi0JCQkJOTBDQkMz
NTMwRjc0OEIxMzAwQTcxMkI3IC8qIFByb2R1Y3Rpb24gKi8sCi0JCQkpOwotCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UHJvZHVjdGlvbjsKLQkJfTsKIC8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8K
IAl9OwogCXJvb3RPYmplY3QgPSAwOEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBv
YmplY3QgKi87CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCShy
ZXZpc2lvbiAyMTYyMTUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5j
cHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDUgQmVuIExhIE1vbmljYSA8YmVuLmxhbW9uaWNhQGdtYWlsLmNvbT4uICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1IgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0vLyBGSVhNRTogV2UgbmVlZCB0byBiZSBhYmxlIHRvIGluY2x1ZGUgdGhlc2UgZGVm
aW5lcyBmcm9tIGEgY29uZmlnLmggc29tZXdoZXJlLgotI2RlZmluZSBKU19FWFBPUlRfUFJJVkFU
RQotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLSNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSA8d2lu
c29jazIuaD4KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNs
dWRlIDxpby5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jZW5kaWYKLQotI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9DR0JpdG1hcENvbnRleHQuaD4KLSNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ0dJbWFnZS5oPgotI2luY2x1ZGUgPEltYWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+Ci0K
LSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5
cGVzLmg+Ci0jZWxpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSA8TGF1bmNoU2VydmljZXMvVVRD
b3JlVHlwZXMuaD4KLSNlbmRpZgotCi0jaWZuZGVmIENHRkxPQVRfREVGSU5FRAotI2lmZGVmIF9f
TFA2NF9fCi10eXBlZGVmIGRvdWJsZSBDR0Zsb2F0OwotI2Vsc2UKLXR5cGVkZWYgZmxvYXQgQ0dG
bG9hdDsKLSNlbmRpZgotI2RlZmluZSBDR0ZMT0FUX0RFRklORUQgMQotI2VuZGlmCi0KLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7Ci0KLSNpZiBQTEFURk9STShXSU4pCi1zdGF0aWMgY29uc3QgQ0ZTdHJp
bmdSZWYga1VUVHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7Ci0jZW5kaWYKLQotc3RhdGlj
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZUZyb21TdGRpbihpbnQgYnl0ZXNSZW1h
aW5pbmcpCi17Ci0gICAgdW5zaWduZWQgY2hhciBidWZmZXJbMjA0OF07Ci0gICAgUmV0YWluUHRy
PENGTXV0YWJsZURhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwg
Ynl0ZXNSZW1haW5pbmcpKTsKLQotICAgIHdoaWxlIChieXRlc1JlbWFpbmluZyA+IDApIHsKLSAg
ICAgICAgc2l6ZV90IGJ5dGVzVG9SZWFkID0gbWluKGJ5dGVzUmVtYWluaW5nLCAyMDQ4KTsKLSAg
ICAgICAgc2l6ZV90IGJ5dGVzUmVhZCA9IGZyZWFkKGJ1ZmZlciwgMSwgYnl0ZXNUb1JlYWQsIHN0
ZGluKTsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoZGF0YS5nZXQoKSwgYnVmZmVyLCBzdGF0
aWNfY2FzdDxDRkluZGV4PihieXRlc1JlYWQpKTsKLSAgICAgICAgYnl0ZXNSZW1haW5pbmcgLT0g
c3RhdGljX2Nhc3Q8aW50PihieXRlc1JlYWQpOwotICAgIH0KLSAgICBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVX
aXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKLSAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRl
V2l0aFBOR0RhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5k
ZXJpbmdJbnRlbnREZWZhdWx0KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlbGVhc2VNYWxsb2NCdWZm
ZXIodm9pZCogaW5mbywgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCi17Ci0gICAgZnJl
ZSgodm9pZCopZGF0YSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRl
RGlmZmVyZW5jZUltYWdlKENHSW1hZ2VSZWYgYmFzZUltYWdlLCBDR0ltYWdlUmVmIHRlc3RJbWFn
ZSwgZmxvYXQmIGRpZmZlcmVuY2UpCi17Ci0gICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdp
ZHRoKGJhc2VJbWFnZSk7Ci0gICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoYmFz
ZUltYWdlKTsKLSAgICBzaXplX3Qgcm93Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0KLSAgICAvLyBEcmF3
IGJhc2UgaW1hZ2UgaW4gYml0bWFwIGNvbnRleHQKLSAgICB2b2lkKiBiYXNlQnVmZmVyID0gY2Fs
bG9jKGhlaWdodCwgcm93Qnl0ZXMpOwotICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJhc2VD
b250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoYmFzZUJ1ZmZlciwgd2lkdGgs
IGhlaWdodCwgOCwgcm93Qnl0ZXMsIENHSW1hZ2VHZXRDb2xvclNwYWNlKGJhc2VJbWFnZSksIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Qp
KTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoYmFzZUNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2Uo
MCwgMCwgd2lkdGgsIGhlaWdodCksIGJhc2VJbWFnZSk7Ci0KLSAgICAvLyBEcmF3IHRlc3QgaW1h
Z2UgaW4gYml0bWFwIGNvbnRleHQKLSAgICB2b2lkKiBidWZmZXIgPSBjYWxsb2MoaGVpZ2h0LCBy
b3dCeXRlcyk7Ci0gICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgcm93Qnl0ZXMs
IENHSW1hZ2VHZXRDb2xvclNwYWNlKHRlc3RJbWFnZSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKLSAgICBDR0NvbnRleHREcmF3
SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KSwgdGVz
dEltYWdlKTsKLQotICAgIC8vIENvbXBhcmUgdGhlIGNvbnRlbnQgb2YgdGhlIDIgYml0bWFwcwot
ICAgIHZvaWQqIGRpZmZCdWZmZXIgPSBtYWxsb2Mod2lkdGggKiBoZWlnaHQpOwotICAgIGZsb2F0
IGNvdW50ID0gMC4wZjsKLSAgICBmbG9hdCBzdW0gPSAwLjBmOwotICAgIGZsb2F0IG1heERpc3Rh
bmNlID0gMC4wZjsKLSAgICB1bnNpZ25lZCBjaGFyKiBiYXNlUGl4ZWwgPSAodW5zaWduZWQgY2hh
ciopYmFzZUJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbCA9ICh1bnNpZ25lZCBjaGFy
KilidWZmZXI7Ci0gICAgdW5zaWduZWQgY2hhciogZGlmZiA9ICh1bnNpZ25lZCBjaGFyKilkaWZm
QnVmZmVyOwotICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKLSAgICAg
ICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7Ci0gICAgICAgICAgICBmbG9h
dCByZWQgPSAocGl4ZWxbMF0gLSBiYXNlUGl4ZWxbMF0pIC8gbWF4PGZsb2F0PigyNTUgLSBiYXNl
UGl4ZWxbMF0sIGJhc2VQaXhlbFswXSk7Ci0gICAgICAgICAgICBmbG9hdCBncmVlbiA9IChwaXhl
bFsxXSAtIGJhc2VQaXhlbFsxXSkgLyBtYXg8ZmxvYXQ+KDI1NSAtIGJhc2VQaXhlbFsxXSwgYmFz
ZVBpeGVsWzFdKTsKLSAgICAgICAgICAgIGZsb2F0IGJsdWUgPSAocGl4ZWxbMl0gLSBiYXNlUGl4
ZWxbMl0pIC8gbWF4PGZsb2F0PigyNTUgLSBiYXNlUGl4ZWxbMl0sIGJhc2VQaXhlbFsyXSk7Ci0g
ICAgICAgICAgICBmbG9hdCBhbHBoYSA9IChwaXhlbFszXSAtIGJhc2VQaXhlbFszXSkgLyBtYXg8
ZmxvYXQ+KDI1NSAtIGJhc2VQaXhlbFszXSwgYmFzZVBpeGVsWzNdKTsKLSAgICAgICAgICAgIGZs
b2F0IGRpc3RhbmNlID0gc3FydGYocmVkICogcmVkICsgZ3JlZW4gKiBncmVlbiArIGJsdWUgKiBi
bHVlICsgYWxwaGEgKiBhbHBoYSkgLyAyLjBmOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAq
ZGlmZisrID0gKHVuc2lnbmVkIGNoYXIpKGRpc3RhbmNlICogMjU1LjBmKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKGRpc3RhbmNlID49IDEuMGYgLyAyNTUuMGYpIHsKLSAgICAgICAg
ICAgICAgICBjb3VudCArPSAxLjBmOwotICAgICAgICAgICAgICAgIHN1bSArPSBkaXN0YW5jZTsK
LSAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiBtYXhEaXN0YW5jZSkKLSAgICAgICAgICAg
ICAgICAgICAgbWF4RGlzdGFuY2UgPSBkaXN0YW5jZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgYmFzZVBpeGVsICs9IDQ7Ci0gICAgICAgICAgICBwaXhlbCArPSA0
OwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIENvbXB1dGUgdGhlIGRpZmZlcmVuY2Ug
YXMgYSBwZXJjZW50YWdlIGNvbWJpbmluZyBib3RoIHRoZSBudW1iZXIgb2YgZGlmZmVyZW50IHBp
eGVscyBhbmQgdGhlaXIgZGlmZmVyZW5jZSBhbW91bnQgaS5lLiB0aGUgYXZlcmFnZSBkaXN0YW5j
ZSBvdmVyIHRoZSBlbnRpcmUgaW1hZ2UKLSAgICBpZiAoY291bnQgPiAwLjBmKQotICAgICAgICBk
aWZmZXJlbmNlID0gMTAwLjBmICogc3VtIC8gKGhlaWdodCAqIHdpZHRoKTsKLSAgICBlbHNlCi0g
ICAgICAgIGRpZmZlcmVuY2UgPSAwLjBmOwotCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGRp
ZmZJbWFnZTsKLSAgICAvLyBHZW5lcmF0ZSBhIG5vcm1hbGl6ZWQgZGlmZiBpbWFnZSBpZiB0aGVy
ZSBpcyBhbnkgZGlmZmVyZW5jZQotICAgIGlmIChkaWZmZXJlbmNlID4gMC4wZikgewotICAgICAg
ICBpZiAobWF4RGlzdGFuY2UgPCAxLjBmKSB7Ci0gICAgICAgICAgICBkaWZmID0gKHVuc2lnbmVk
IGNoYXIqKWRpZmZCdWZmZXI7Ci0gICAgICAgICAgICBmb3Ioc2l6ZV90IHAgPSAwOyBwIDwgaGVp
Z2h0ICogd2lkdGg7ICsrcCkKLSAgICAgICAgICAgICAgICBkaWZmW3BdID0gZGlmZltwXSAvIG1h
eERpc3RhbmNlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgQ0dDb2xvclNw
YWNlUmVmIGRpZmZDb2xvcnNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3JheSgpOwot
ICAgICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGRpZmZCdWZmZXIsIHdpZHRoICogaGVpZ2h0
LCByZWxlYXNlTWFsbG9jQnVmZmVyKSk7Ci0gICAgICAgIGRpZmZJbWFnZSA9IGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCA4LCA4LCB3aWR0aCwgZGlmZkNvbG9yc3BhY2UsIDAs
IHByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwot
ICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGZyZWUoZGlmZkJ1ZmZlcik7Ci0gICAgCi0gICAgLy8g
RGVzdHJveSBkcmF3aW5nIGJ1ZmZlcnMKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBmcmVlKGJ1
ZmZlcik7Ci0gICAgaWYgKGJhc2VCdWZmZXIpCi0gICAgICAgIGZyZWUoYmFzZUJ1ZmZlcik7Ci0g
ICAgCi0gICAgcmV0dXJuIGRpZmZJbWFnZTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGltYWdl
SGFzQWxwaGEoQ0dJbWFnZVJlZiBpbWFnZSkKLXsKLSAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8g
PSBDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlKTsKLSAgICAKLSAgICByZXR1cm4gKGluZm8gPj0g
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSAmJiAoaW5mbyA8PSBrQ0dJbWFnZUFscGhh
Rmlyc3QpOwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQotewot
I2lmIFBMQVRGT1JNKFdJTikKLSAgICBfc2V0bW9kZSgwLCBfT19CSU5BUlkpOwotICAgIF9zZXRt
b2RlKDEsIF9PX0JJTkFSWSk7Ci0jZW5kaWYKLQotICAgIGZsb2F0IHRvbGVyYW5jZSA9IDAuMGY7
Ci0KLSAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7ICsraSkgewotICAgICAgICBpZiAoIXN0
cmNtcChhcmd2W2ldLCAiLXQiKSB8fCAhc3RyY21wKGFyZ3ZbaV0sICItLXRvbGVyYW5jZSIpKSB7
Ci0gICAgICAgICAgICBpZiAoaSA+PSBhcmdjIC0gMSkKLSAgICAgICAgICAgICAgICBleGl0KDEp
OwotICAgICAgICAgICAgdG9sZXJhbmNlID0gc3RydG9mKGFyZ3ZbaSArIDFdLCAwKTsKLSAgICAg
ICAgICAgICsraTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgY2hhciBidWZmZXJbMjA0OF07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGFjdHVhbElt
YWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBiYXNlbGluZUltYWdlOwotCi0gICAgd2hp
bGUgKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIHN0ZGluKSkgewotICAgICAgICAvLyBy
ZW1vdmUgdGhlIENSCi0gICAgICAgIGNoYXIqIG5ld0xpbmVDaGFyYWN0ZXIgPSBzdHJjaHIoYnVm
ZmVyLCAnXG4nKTsKLSAgICAgICAgaWYgKG5ld0xpbmVDaGFyYWN0ZXIpCi0gICAgICAgICAgICAq
bmV3TGluZUNoYXJhY3RlciA9ICdcMCc7Ci0KLSAgICAgICAgaWYgKCFzdHJuY21wKCJDb250ZW50
LUxlbmd0aDogIiwgYnVmZmVyLCAxNikpIHsKLSAgICAgICAgICAgIHN0cnRvayhidWZmZXIsICIg
Iik7Ci0gICAgICAgICAgICBpbnQgaW1hZ2VTaXplID0gc3RydG9sKHN0cnRvaygwLCAiICIpLCAw
LCAxMCk7Ci0KLSAgICAgICAgICAgIGlmIChpbWFnZVNpemUgPiAwICYmICFhY3R1YWxJbWFnZSkK
LSAgICAgICAgICAgICAgICBhY3R1YWxJbWFnZSA9IGNyZWF0ZUltYWdlRnJvbVN0ZGluKGltYWdl
U2l6ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpbWFnZVNpemUgPiAwICYmICFiYXNlbGluZUlt
YWdlKQotICAgICAgICAgICAgICAgIGJhc2VsaW5lSW1hZ2UgPSBjcmVhdGVJbWFnZUZyb21TdGRp
bihpbWFnZVNpemUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZwdXRzKCJF
cnJvcjogaW1hZ2Ugc2l6ZSBtdXN0IGJlIHNwZWNpZmllZC5cbiIsIHN0ZGVycik7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoYWN0dWFsSW1hZ2UgJiYgYmFzZWxpbmVJbWFnZSkgewotICAgICAg
ICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGRpZmZJbWFnZTsKLSAgICAgICAgICAgIGZsb2F0
IGRpZmZlcmVuY2UgPSAxMDAuMGY7Ci0KLSAgICAgICAgICAgIGlmICgoQ0dJbWFnZUdldFdpZHRo
KGFjdHVhbEltYWdlLmdldCgpKSA9PSBDR0ltYWdlR2V0V2lkdGgoYmFzZWxpbmVJbWFnZS5nZXQo
KSkpICYmIChDR0ltYWdlR2V0SGVpZ2h0KGFjdHVhbEltYWdlLmdldCgpKSA9PSBDR0ltYWdlR2V0
SGVpZ2h0KGJhc2VsaW5lSW1hZ2UuZ2V0KCkpKSAmJiAoaW1hZ2VIYXNBbHBoYShhY3R1YWxJbWFn
ZS5nZXQoKSkgPT0gaW1hZ2VIYXNBbHBoYShiYXNlbGluZUltYWdlLmdldCgpKSkpIHsKLSAgICAg
ICAgICAgICAgICBkaWZmSW1hZ2UgPSBjcmVhdGVEaWZmZXJlbmNlSW1hZ2UoYWN0dWFsSW1hZ2Uu
Z2V0KCksIGJhc2VsaW5lSW1hZ2UuZ2V0KCksIGRpZmZlcmVuY2UpOyAvLyBkaWZmZXJlbmNlIGlz
IHBhc3NlZCBieSByZWZlcmVuY2UKLSAgICAgICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8PSB0
b2xlcmFuY2UpCi0gICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UgPSAwLjBmOwotICAgICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlID0gcm91bmRm
KGRpZmZlcmVuY2UgKiAxMDAuMGYpIC8gMTAwLjBmOwotICAgICAgICAgICAgICAgICAgICBkaWZm
ZXJlbmNlID0gbWF4KGRpZmZlcmVuY2UsIDAuMDFmKTsgLy8gcm91bmQgdG8gMiBkZWNpbWFsIHBs
YWNlcwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKENHSW1hZ2VHZXRXaWR0aChhY3R1YWxJbWFnZS5nZXQoKSkgIT0gQ0dJbWFnZUdl
dFdpZHRoKGJhc2VsaW5lSW1hZ2UuZ2V0KCkpIHx8IENHSW1hZ2VHZXRIZWlnaHQoYWN0dWFsSW1h
Z2UuZ2V0KCkpICE9IENHSW1hZ2VHZXRIZWlnaHQoYmFzZWxpbmVJbWFnZS5nZXQoKSkpIHsKLSNp
ZiBPUyhXSU5ET1dTKQotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9y
OiB0ZXN0IGFuZCByZWZlcmVuY2UgaW1hZ2VzIGhhdmUgZGlmZmVyZW50IHNpemVzLiBUZXN0IGlt
YWdlIGlzICVJdXglSXUsIHJlZmVyZW5jZSBpbWFnZSBpcyAlSXV4JUl1XG4iLAotI2Vsc2UKLSAg
ICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvcjogdGVzdCBhbmQgcmVmZXJl
bmNlIGltYWdlcyBoYXZlIGRpZmZlcmVudCBzaXplcy4gVGVzdCBpbWFnZSBpcyAlenV4JXp1LCBy
ZWZlcmVuY2UgaW1hZ2UgaXMgJXp1eCV6dVxuIiwKLSNlbmRpZgotICAgICAgICAgICAgICAgICAg
ICAgICAgQ0dJbWFnZUdldFdpZHRoKGFjdHVhbEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdo
dChhY3R1YWxJbWFnZS5nZXQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICBDR0ltYWdlR2V0
V2lkdGgoYmFzZWxpbmVJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoYmFzZWxpbmVJbWFn
ZS5nZXQoKSkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW1hZ2VIYXNBbHBoYShhY3R1
YWxJbWFnZS5nZXQoKSkgIT0gaW1hZ2VIYXNBbHBoYShiYXNlbGluZUltYWdlLmdldCgpKSkKLSAg
ICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvcjogdGVzdCBhbmQgcmVmZXJl
bmNlIGltYWdlcyBkaWZmZXIgaW4gYWxwaGEuIFRlc3QgaW1hZ2UgJXMgYWxwaGEsIHJlZmVyZW5j
ZSBpbWFnZSAlcyBhbHBoYS5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUhhc0Fs
cGhhKGFjdHVhbEltYWdlLmdldCgpKSA/ICJoYXMiIDogImRvZXMgbm90IGhhdmUiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgaW1hZ2VIYXNBbHBoYShiYXNlbGluZUltYWdlLmdldCgpKSA/ICJo
YXMiIDogImRvZXMgbm90IGhhdmUiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPiAwLjBmKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRp
ZmZJbWFnZSkgewotICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJl
Zj4gaW1hZ2VEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKLSAgICAg
ICAgICAgICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gaW1hZ2VEZXN0
ID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YShpbWFnZURhdGEuZ2V0
KCksIGtVVFR5cGVQTkcsIDEsIDApKTsKLSAgICAgICAgICAgICAgICAgICAgQ0dJbWFnZURlc3Rp
bmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0LmdldCgpLCBkaWZmSW1hZ2UuZ2V0KCksIDApOwotICAg
ICAgICAgICAgICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3QuZ2V0
KCkpOwotI2lmIE9TKFdJTkRPV1MpCi0gICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ29udGVu
dC1MZW5ndGg6ICVJdVxuIiwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoaW1h
Z2VEYXRhLmdldCgpKSkpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDb250
ZW50LUxlbmd0aDogJXp1XG4iLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChp
bWFnZURhdGEuZ2V0KCkpKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgZndyaXRlKENG
RGF0YUdldEJ5dGVQdHIoaW1hZ2VEYXRhLmdldCgpKSwgMSwgQ0ZEYXRhR2V0TGVuZ3RoKGltYWdl
RGF0YS5nZXQoKSksIHN0ZG91dCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgZnByaW50ZihzdGRvdXQsICJkaWZmOiAlMDEuMmYlJSBmYWlsZWRcbiIsIGRpZmZlcmVuY2Up
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJk
aWZmOiAlMDEuMmYlJSBwYXNzZWRcbiIsIGRpZmZlcmVuY2UpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBhY3R1YWxJbWFnZSA9IDA7Ci0gICAgICAgICAgICBiYXNlbGluZUltYWdlID0gMDsK
LSAgICAgICAgfQotCi0gICAgICAgIGZmbHVzaChzdGRvdXQpOwotICAgIH0KLQotICAgIHJldHVy
biAwOwotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1h
Z2VEaWZmQ0cuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0NvbmZpZ3VyYXRpb25zL0ltYWdlRGlmZi54Y2NvbmZpZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQ29uZmlndXJhdGlvbnMvSW1hZ2VE
aWZmLnhjY29uZmlnCShyZXZpc2lvbiAyMTYyMTUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvQ29uZmlndXJhdGlvbnMvSW1hZ2VEaWZmLnhjY29uZmlnCShub25leGlzdGVudCkKQEAgLTEs
MjggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8v
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
Ly8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLS8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0vLyBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLS8v
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0vLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLS8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLS8vIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotLy8gUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotCi0jaW5jbHVk
ZSAiQmFzZVRhcmdldC54Y2NvbmZpZyIKLQotUFJPRFVDVF9OQU1FID0gSW1hZ2VEaWZmOwotT1RI
RVJfTERGTEFHU1tzZGs9bWFjb3N4Kl0gPSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBDYXJib24g
LWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmU7Ci1PVEhFUl9MREZMQUdTW3Nk
az1pcGhvbmUqXSA9ICQoaW5oZXJpdGVkKSAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFt
ZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgTW9iaWxlQ29yZVNlcnZpY2VzIC1mcmFtZXdv
cmsgSW1hZ2VJTzsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQkocmV2
aXNpb24gMjE2MjE1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQko
d29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCwyNiBAQCBjbGFzcyBEYXJ3aW5Qb3J0KEFwcGxl
UG9ydCk6CiAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9maWxlc1t0ZXN0X25hbWVdID0gc3Bp
bmR1bXBfZmlsZQogICAgICAgICByZXR1cm4gc2FtcGxlX2ZpbGVzCiAKKyAgICBkZWYgX3BhdGhf
dG9faW1hZ2VfZGlmZihzZWxmKToKKyAgICAgICAgIyBJbWFnZURpZmYgZm9yIERhcndpblBvcnRz
IGlzIGEgbGl0dGxlIGNvbXBsaWNhdGVkLiBJdCB3aWxsIGVpdGhlciBiZSBpbgorICAgICAgICAj
IGEgZGlyZWN0b3J5IG5hbWVkIC4uL21hYyByZWxhdGl2ZSB0byB0aGUgcG9ydCBidWlsZCBkaXJl
Y3RvcnksIGluIGEgZGlyZWN0b3J5CisgICAgICAgICMgbmFtZWQgLi4vPGJ1aWxkLXR5cGU+IHJl
bGF0aXZlIHRvIHRoZSBwb3J0IGJ1aWxkIGRpcmVjdG9yeSBvciBpbiB0aGUgcG9ydCBidWlsZCBk
aXJlY3RvcnkKKyAgICAgICAgX2ltYWdlX2RpZmZfaW5fYnVpbGRfcGF0aCA9IHN1cGVyKERhcndp
blBvcnQsIHNlbGYpLl9wYXRoX3RvX2ltYWdlX2RpZmYoKQorICAgICAgICBfcG9ydF9idWlsZF9k
aXIgPSBzZWxmLmhvc3QuZmlsZXN5c3RlbS5kaXJuYW1lKF9pbWFnZV9kaWZmX2luX2J1aWxkX3Bh
dGgpCisKKyAgICAgICAgIyBUZXN0IC4uL21hYworICAgICAgICBfcGF0aF90b190ZXN0ID0gc2Vs
Zi5ob3N0LmZpbGVzeXN0ZW0uam9pbihfcG9ydF9idWlsZF9kaXIsICcuLicsICdtYWMnLCAnSW1h
Z2VEaWZmJykKKyAgICAgICAgaWYgc2VsZi5ob3N0LmZpbGVzeXN0ZW0uZXhpc3RzKF9wYXRoX3Rv
X3Rlc3QpOgorICAgICAgICAgICAgcmV0dXJuIF9wYXRoX3RvX3Rlc3QKKworICAgICAgICAjIFRl
c3QgLi4vPGJ1aWxkLXR5cGU+CisgICAgICAgIF9idWlsZF90eXBlID0gc2VsZi5ob3N0LmZpbGVz
eXN0ZW0uYmFzZW5hbWUoX3BvcnRfYnVpbGRfZGlyKS5zcGxpdCgnLScpWzBdCisgICAgICAgIF9w
YXRoX3RvX3Rlc3QgPSBzZWxmLmhvc3QuZmlsZXN5c3RlbS5qb2luKF9wb3J0X2J1aWxkX2Rpciwg
Jy4uJywgX2J1aWxkX3R5cGUsICdJbWFnZURpZmYnKQorICAgICAgICBpZiBzZWxmLmhvc3QuZmls
ZXN5c3RlbS5leGlzdHMoX3BhdGhfdG9fdGVzdCk6CisgICAgICAgICAgICByZXR1cm4gX3BhdGhf
dG9fdGVzdAorCisgICAgICAgIHJldHVybiBfaW1hZ2VfZGlmZl9pbl9idWlsZF9wYXRoCisKICAg
ICBkZWYgbWFrZV9jb21tYW5kKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi54Y3J1bl9maW5k
KCdtYWtlJywgJy91c3IvYmluL21ha2UnKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvaW1hZ2VfZGlmZi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvaW1hZ2VfZGlmZi5weQkocmV2aXNpb24gMjE2MjE1KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2ltYWdlX2RpZmYucHkJKHdvcmtpbmcgY29weSkKQEAgLTExNSwxNSArMTE1
LDMgQEAgY2xhc3MgSW1hZ2VEaWZmZXIob2JqZWN0KToKICAgICAgICAgaWYgc2VsZi5fcHJvY2Vz
czoKICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Muc3RvcCgpCiAgICAgICAgICAgICBzZWxmLl9w
cm9jZXNzID0gTm9uZQotCi0KLWNsYXNzIElPU1NpbXVsYXRvckltYWdlRGlmZmVyKEltYWdlRGlm
ZmVyKToKLSAgICBkZWYgX3N0YXJ0KHNlbGYsIHRvbGVyYW5jZSk6Ci0gICAgICAgICMgRklYTUU6
IFVzaW5nICJib290ZWQiIGlzIG5vdCAxMDAlIGNvcnJlY3QsIHdlIHNob3VsZCB1c2UgYSBkZXZp
Y2UgSUQgdGhhdCB3ZSBjcmVhdGVkLgotICAgICAgICAjIEZJWE1FOiBJcyBpdCBhIHByb2JsZW0g
dGhhdCBJbWFnZURpZmYgYW5kIHNpbWN0bCByZW1haW4gc2VwYXJhdGUgcHJvY2Vzc2VzPyBUaGlz
IGNvZGUgdXNlZCB0byBwYXNzIC0tYWRvcHQtcGlkIHRvIHNpbSB0b29sLgotICAgICAgICAjIFdl
IHNob3VsZCBwcm9iYWJseSBqdXN0IGJ1aWxkIGFuZCB1c2UgYSBob3N0IHZlcnNpb24gb2YgSW1h
Z2VEaWZmIGluc3RlYWQgb2YgYSBzaW11bGF0b3Igb25lIHRvIHNvbHZlIGJvdGguCi0gICAgICAg
IGNvbW1hbmQgPSBbJ3hjcnVuJywgJy1zZGsnLCAnaXBob25lc2ltdWxhdG9yJywgJ3NpbWN0bCcs
ICdzcGF3bicsICdib290ZWQnLCBzZWxmLl9wb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYoKSwgJy0t
dG9sZXJhbmNlJywgc3RyKHRvbGVyYW5jZSldCi0gICAgICAgIGVudmlyb25tZW50ID0gc2VsZi5f
cG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoJ0ltYWdlRGlmZicpCi0gICAgICAgIHNlbGYu
X3Byb2Nlc3MgPSBzZWxmLl9wb3J0Ll9zZXJ2ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvcihzZWxmLl9w
b3J0LCAnSW1hZ2VEaWZmJywgY29tbWFuZCwgZW52aXJvbm1lbnQpCi0gICAgICAgIHNlbGYuX3By
b2Nlc3Muc3RhcnQoKQotICAgICAgICBzZWxmLl90b2xlcmFuY2UgPSB0b2xlcmFuY2UKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yLnB5CShyZXZpc2lv
biAyMTYyMTUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5w
eQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQCBpbXBvcnQgc3VicHJvY2VzcwogaW1w
b3J0IHRpbWUKIAogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVk
Ci1mcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGltYWdlX2RpZmYKIGZyb20gd2Via2l0cHkucG9y
dC5kZXZpY2UgaW1wb3J0IERldmljZQogZnJvbSB3ZWJraXRweS5wb3J0LmlvcyBpbXBvcnQgSU9T
UG9ydAogZnJvbSB3ZWJraXRweS54Y29kZS5zaW11bGF0b3IgaW1wb3J0IFNpbXVsYXRvciwgUnVu
dGltZSwgRGV2aWNlVHlwZQpAQCAtMzI4LDE4ICszMjcsNiBAQCBjbGFzcyBJT1NTaW11bGF0b3JQ
b3J0KElPU1BvcnQpOgogICAgIGRlZiBnZXRfc2ltdWxhdG9yX3BhdGgoc2VsZiwgc3VmZml4PSIi
KToKICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLlNJTVVMQVRPUl9ESVJFQ1RPUlks
ICJTaW11bGF0b3IiICsgc3RyKHN1ZmZpeCkgKyAiLmFwcCIpCiAKLSAgICBkZWYgZGlmZl9pbWFn
ZShzZWxmLCBleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzLCB0b2xlcmFuY2U9Tm9u
ZSk6Ci0gICAgICAgIGlmIG5vdCBhY3R1YWxfY29udGVudHMgYW5kIG5vdCBleHBlY3RlZF9jb250
ZW50czoKLSAgICAgICAgICAgIHJldHVybiAoTm9uZSwgMCwgTm9uZSkKLSAgICAgICAgaWYgbm90
IGFjdHVhbF9jb250ZW50cyBvciBub3QgZXhwZWN0ZWRfY29udGVudHM6Ci0gICAgICAgICAgICBy
ZXR1cm4gKFRydWUsIDAsIE5vbmUpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9pbWFnZV9kaWZmZXI6
Ci0gICAgICAgICAgICBzZWxmLl9pbWFnZV9kaWZmZXIgPSBpbWFnZV9kaWZmLklPU1NpbXVsYXRv
ckltYWdlRGlmZmVyKHNlbGYpCi0gICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCd0b2xl
cmFuY2UnLCAwLjEpCi0gICAgICAgIGlmIHRvbGVyYW5jZSBpcyBOb25lOgotICAgICAgICAgICAg
dG9sZXJhbmNlID0gc2VsZi5nZXRfb3B0aW9uKCd0b2xlcmFuY2UnKQotICAgICAgICByZXR1cm4g
c2VsZi5faW1hZ2VfZGlmZmVyLmRpZmZfaW1hZ2UoZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9j
b250ZW50cywgdG9sZXJhbmNlKQotCiAgICAgZGVmIHJlc2V0X3ByZWZlcmVuY2VzKHNlbGYpOgog
ICAgICAgICBfbG9nLmRlYnVnKCJyZXNldF9wcmVmZXJlbmNlcyIpCiAgICAgICAgIHNlbGYuX3F1
aXRfaW9zX3NpbXVsYXRvcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309217</attachid>
            <date>2017-05-05 15:06:42 -0700</date>
            <delta_ts>2017-05-05 15:56:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168945-20170505150642.patch</filename>
            <type>text/plain</type>
            <size>33469</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNjI3NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4IEBACisyMDE3LTA1LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgSW1hZ2VEaWZmIGJ1aWx0IGJ5IGhvc3QgU0RLIGFuZCByZW1vdmUg
SW1hZ2VEaWZmIGZyb20gRHVtcFJlbmRlclRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODk0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA3
NDU2OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgorCisgICAgICAgIFVz
ZSBJbWFnZURpZmYgYnVpbHQgd2l0aCB0aGUgaG9zdCBtYWNoaW5lJ3MgU0RLIGFuZCBzdG9wIGJ1
aWxkaW5nIEltYWdlRGlmZiB3aXRoIHRoZQorICAgICAgICB0YXJnZXQgU0RLLiBUaGVzZSB0d28g
Y2hhbmdlcyBtdXN0IGhhcHBlbiBzaW11bHRhbmVvdXNseSBiZWNhdXNlIHNvbWUgYXJjaGl2ZXMg
d2lsbAorICAgICAgICBjbG9iYmVyIHRoZSBJbWFnZURpZmYgZnJvbSB0aGUgaG9zdCBTREsgd2l0
aCB0aGUgSW1hZ2VEaWZmIGZyb20gdGhlIHRhcmdldCBTREsuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvQ29uZmlndXJhdGlvbnMvSW1hZ2VEaWZmLnhjY29uZmlnOiBSZW1vdmUgSW1h
Z2VEaWZmIGZyb20gcHJvamVjdC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9QbGF0Zm9ybVdp
bi5jbWFrZTogUmVtb3ZlIEltYWdlRGlmZi4gTm90ZSB0aGF0IHRoZSBDTWFrZUxpc3RzLnR4dCBp
biB0aGUKKyAgICAgICAgdG9vbHMgZGlyZWN0b3J5IHN0aWxsIGluY2x1ZGVzIEltYWdlRGlmZi4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0NvbmZpZ3VyYXRpb25zL0R1bXBSZW5kZXJUcmVl
LnhjY29uZmlnOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3
aW4ucHk6IAorICAgICAgICAoRGFyd2luUG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKTogUmV0dXJu
IHRoZSBjb3JyZWN0IHBhdGggdG8gSW1hZ2VEaWZmIHdoZW4gYnVpbGRpbmcKKyAgICAgICAgbG9j
YWxseSBvciB3aGVuIHJ1bm5pbmcgYXJjaGl2ZXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2ltYWdlX2RpZmYucHk6CisgICAgICAgIChJT1NTaW11bGF0b3JJbWFnZURpZmZlcik6
IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3Iu
cHk6CisgICAgICAgIChJT1NTaW11bGF0b3JQb3J0LmRpZmZfaW1hZ2UpOiBEZWxldGVkLgorCiAy
MDE3LTA1LTA1ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFQSSB0
ZXN0IFdlYktpdDIuV0tIVFRQQ29va2llU3RvcmUgZmFpbHMgZHVlIHRvIHBvc3NpYmxlIGlzc3Vl
IHdpdGggaGFuZGxpbmcgbm9uLXNlc3Npb24gY29va2llcwpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvUGxhdGZvcm1XaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDIxNjI3NikKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1BsYXRmb3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxNiArNTgsNiBA
QCBsaXN0KEFQUEVORCBUZXN0TmV0c2NhcGVQbHVnSW5fTElCUkFSSUVTCiAgICAgV2ViS2l0CiAp
CiAKLXNldChJbWFnZURpZmZfU09VUkNFUwotICAgIHdpbi9JbWFnZURpZmZXaW4uY3BwCi0pCi0K
LXNldChJbWFnZURpZmZfTElCUkFSSUVTCi0gICBKYXZhU2NyaXB0Q29yZQotICAgV1RGCi0gICBX
ZWJLaXQKLSkKLQogbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgIHdpbgogICAgIFRlc3ROZXRzY2FwZVBsdWdJbgpAQCAtMTAwLDEyICs5MCw2IEBAIGlm
ICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQogICAgIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJU
cmVlTGliX1NPVVJDRVMKICAgICAgICAgY2Fpcm8vUGl4ZWxEdW1wU3VwcG9ydENhaXJvLmNwcAog
ICAgICkKLSAgICBsaXN0KEFQUEVORCBJbWFnZURpZmZfU09VUkNFUwotICAgICAgICB3aW4vSW1h
Z2VEaWZmQ2Fpcm8uY3BwCi0gICAgKQotICAgIGxpc3QoQVBQRU5EIEltYWdlRGlmZl9MSUJSQVJJ
RVMKLSAgICAgICAgJHtDQUlST19MSUJSQVJJRVN9Ci0gICAgKQogZWxzZSAoKQogICAgIGxpc3Qo
QVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAgICAgY2cKQEAg
LTExOCwxNCArMTAyLDYgQEAgZWxzZSAoKQogICAgICAgICBDb3JlR3JhcGhpY3MKICAgICAgICAg
Q29yZVRleHQKICAgICApCi0gICAgbGlzdChBUFBFTkQgSW1hZ2VEaWZmX1NPVVJDRVMKLSAgICAg
ICAgY2cvSW1hZ2VEaWZmQ0cuY3BwCi0gICAgKQotICAgIGxpc3QoQVBQRU5EIEltYWdlRGlmZl9M
SUJSQVJJRVMKLSAgICAgICBDb3JlRm91bmRhdGlvbgotICAgICAgIENvcmVHcmFwaGljcwotICAg
ICAgIENvcmVUZXh0Ci0gICAgKQogZW5kaWYgKCkKIAogQUREX1BSRUNPTVBJTEVEX0hFQURFUigi
RHVtcFJlbmRlclRyZWVQcmVmaXguaCIgIndpbi9EdW1wUmVuZGVyVHJlZVByZWZpeC5jcHAiIER1
bXBSZW5kZXJUcmVlTGliX1NPVVJDRVMpCkBAIC0xMzUsMTMgKzExMSw0IEBAIGFkZF9kZWZpbml0
aW9ucygtRFVTRV9DT05TT0xFX0VOVFJZX1BPSU4KIGFkZF9saWJyYXJ5KER1bXBSZW5kZXJUcmVl
TGliIFNIQVJFRCAke0R1bXBSZW5kZXJUcmVlTGliX1NPVVJDRVN9KQogdGFyZ2V0X2xpbmtfbGli
cmFyaWVzKER1bXBSZW5kZXJUcmVlTGliICR7RHVtcFJlbmRlclRyZWVMaWJfTElCUkFSSUVTfSkK
IAotYWRkX2V4ZWN1dGFibGUoSW1hZ2VEaWZmICR7VE9PTFNfRElSfS93aW4vRExMTGF1bmNoZXIv
RExMTGF1bmNoZXJNYWluLmNwcCkKLXRhcmdldF9saW5rX2xpYnJhcmllcyhJbWFnZURpZmYgc2hs
d2FwaSkKLXNldF90YXJnZXRfcHJvcGVydGllcyhJbWFnZURpZmYgUFJPUEVSVElFUyBPVVRQVVRf
TkFNRSAiSW1hZ2VEaWZmIikKLQotYWRkX2xpYnJhcnkoSW1hZ2VEaWZmTGliIFNIQVJFRCAke0lt
YWdlRGlmZl9TT1VSQ0VTfSkKLXRhcmdldF9saW5rX2xpYnJhcmllcyhJbWFnZURpZmZMaWIgJHtJ
bWFnZURpZmZfTElCUkFSSUVTfSkKLQotYWRkX2RlcGVuZGVuY2llcyhJbWFnZURpZmYgSW1hZ2VE
aWZmTGliKQotCiBhZGRfZGVmaW5pdGlvbnMoLURfVU5JQ09ERSkKSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE2Mjc2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNiBAQAogCQkJCUNFQjc1NEQ0MUJCREEyNkQwMDlGMDQwMSAvKiBQQlhUYXJn
ZXREZXBlbmRlbmN5ICovLAogCQkJCTJENDAzRjIxMTUwODczNkMwMDUzNThEMiAvKiBQQlhUYXJn
ZXREZXBlbmRlbmN5ICovLAogCQkJCUExMzRFNTJEMTg4RkMwOTIwMDkwMUQwNiAvKiBQQlhUYXJn
ZXREZXBlbmRlbmN5ICovLAotCQkJCUE4NEY2MDhGMDhCMTM3MEUwMEU5NzQ1RiAvKiBQQlhUYXJn
ZXREZXBlbmRlbmN5ICovLAogCQkJCTE0MUJGMjM4MDk2QTQ1MUUwMEUwNzUzQyAvKiBQQlhUYXJn
ZXREZXBlbmRlbmN5ICovLAogCQkJKTsKIAkJCW5hbWUgPSBBbGw7CkBAIC04MCw3ICs3OSw3IEBA
CiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyLm0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQwM0VBMjE1MDg3MTQy
MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9OwogCQkyREEyRTNBNTFFMUJBNTQx
MDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNBNDFFMUJBNTQxMDBBM0JCRDAg
LyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCTMxMTE3QjNEMTVEOUE1
NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0IzQjE1RDlBNTZBMDAxNjNC
QzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovOyB9OwotCQkzMTI5NDNGOTFF
NzFGMkI0MDAxRUUyQ0MgLyogSU9PU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNDhBMDU1MUU2RjkwRjQw
MEQzQjMxNiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgKi87IH07CisJCTMxMjk0
M0Y5MUU3MUYyQjQwMDFFRTJDQyAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTQ4QTA1NTFFNkY5
MEY0MDBEM0IzMTYgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3BwICovOyB9OwogCQk0
NDY0Q0FCRTFDMjBBMDhCMDBFNUJCNTUgLyogRHVtcFJlbmRlclRyZWVBcHBNYWluLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ2NENBQkQxQzIwQTA3
MDAwRTVCQjU1IC8qIER1bXBSZW5kZXJUcmVlQXBwTWFpbi5tbSAqLzsgfTsKIAkJNEFENkExMTQx
M0M4MTI0MDAwRUE5NzM3IC8qIEZvcm1WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQ2QTExMzEzQzgxMjQwMDBFQTk3MzcgLyogRm9ybVZh
bHVlLmNwcCAqLzsgfTsKIAkJNTEwNjgwM0UxNUNDN0IxMDAwMUE4QTIzIC8qIFNsb3dOUFBOZXcu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNjgw
M0QxNUNDN0IxMDAwMUE4QTIzIC8qIFNsb3dOUFBOZXcuY3BwICovOyB9OwpAQCAtMTM5LDcgKzEz
OCw2IEBACiAJCUJDQTE4QzQ3MEM5QjVCOTQwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTE4QzQ2MEM5
QjVCOTQwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZS5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElM
RVJfRkxBR1MgPSAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyI7IH07IH07CiAJCUJDQjI4
NENEMENGQTgzQzgwMDdFNTMzRSAvKiBQaXhlbER1bXBTdXBwb3J0Q0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMjg0ODgwQ0ZBODIwMjAwN0U1
MzNFIC8qIFBpeGVsRHVtcFN1cHBvcnRDRy5jcHAgKi87IH07CiAJCUJDQjI4NEQ2MENGQTgzRDEw
MDdFNTMzRSAvKiBQaXhlbER1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMjg0OEMwQ0ZBODIyMTAwN0U1MzNFIC8qIFBpeGVs
RHVtcFN1cHBvcnRNYWMubW0gKi87IH07Ci0JCUJDQjI4NEY2MENGQTg0RjgwMDdFNTMzRSAvKiBJ
bWFnZURpZmZDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0IyODRGMzBDRkE4NEYyMDA3RTUzM0UgLyogSW1hZ2VEaWZmQ0cuY3BwICovOyB9Owog
CQlCQ0QwOEIzQTBFMTA1N0VGMDBBN0QwQzEgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMDhCMzkw
RTEwNTdFRjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJ
QkNEMDhCNzEwRTEwNTlEMjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMDhCNzAw
RTEwNTlEMjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tICovOyB9Owog
CQlCQ0Y2QzY1MDBDOThFOUMwMDBBQzA2M0UgLyogR0NDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjZDNjRGMEM5OEU5QzAwMEFD
MDYzRSAvKiBHQ0NvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMTk2LDEzICsxOTQsNiBAQAogCQkJ
cmVtb3RlR2xvYmFsSURTdHJpbmcgPSBBMTMyMUM5RDE4OEY5QTM2MDAxMjU0MzQ7CiAJCQlyZW1v
dGVJbmZvID0gIkR1bXBSZW5kZXJUcmVlIChMaWJyYXJ5KSI7CiAJCX07Ci0JCUE4NEY2MDhFMDhC
MTM3MEUwMEU5NzQ1RiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhDb250YWluZXJJdGVtUHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwOEZCNzc5M0ZFODQx
NTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJ
cmVtb3RlR2xvYmFsSURTdHJpbmcgPSBCNUE3NTI1QTA4QUY0QTRBMDAxMzhFNDU7Ci0JCQlyZW1v
dGVJbmZvID0gSW1hZ2VEaWZmOwotCQl9OwogCQlDRUI3NTREMzFCQkRBMjZEMDA5RjA0MDEgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDhGQjc3OTNGRTg0MTU1REMwMkFBQzA3IC8qIFBy
b2plY3Qgb2JqZWN0ICovOwpAQCAtMzU3LDcgKzM0OCw2IEBACiAJCUFBNUExNUVFMTZFMTVDRDAw
MEY3QzU2MSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbTsgcGF0
aCA9IGlvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBQTdGMTBDMjBDQjNDMTAzMDAwM0JEQzkgLyogQUhFTV9fX18uVFRGICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9
ICJBSEVNX19fXy5UVEYiOyBwYXRoID0gImZvbnRzL0FIRU1fX19fLlRURiI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUFFODI1N0VGMDhEMjIzODkwMDA1MDdBQiAvKiBDYXJib24uZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDYXJib24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJz
b2x1dGU+IjsgfTsKLQkJQjVBNzUyNjcwOEFGNEE0QTAwMTM4RTQ1IC8qIEltYWdlRGlmZiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSW1hZ2VEaWZmOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlCNUE3NTJBMTA4QUY1RDFGMDAx
MzhFNDUgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFF1YXJ0ekNv
cmUuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29y
ZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUJDMDEzMUQ4MEM5
NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZXN0UnVubmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMwMTMxRDkwQzk3NzIwMTAwODczMTdEIC8qIFRlc3RSdW5uZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RSdW5uZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQwMiw3ICszOTIsNiBAQAogCQlCQ0IyODFFRTBDRkE3MTNEMDA3RTUzM0UgLyog
QmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gQmFzZS54Y2Nv
bmZpZzsgcGF0aCA9IG1hYy9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0IyODFGMDBDRkE3MTNEMDA3RTUzM0UgLyogRHVtcFJlbmRl
clRyZWUueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9IER1bXBSZW5k
ZXJUcmVlLnhjY29uZmlnOyBwYXRoID0gbWFjL0NvbmZpZ3VyYXRpb25zL0R1bXBSZW5kZXJUcmVl
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IyODJGNDBDRkE3NDUw
MDA3RTUzM0UgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IG5hbWUgPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHBhdGggPSBtYWMvQ29uZmlndXJhdGlv
bnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
Q0IyODNEODBDRkE3QUZEMDA3RTUzM0UgLyogSW1hZ2VEaWZmLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IG5hbWUgPSBJbWFnZURpZmYueGNjb25maWc7IHBhdGggPSBtYWMvQ29u
ZmlndXJhdGlvbnMvSW1hZ2VEaWZmLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0IyODNERTBDRkE3QzIwMDA3RTUzM0UgLyogVGVzdE5ldHNjYXBlUGx1Z0luLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IG5hbWUgPSBUZXN0TmV0c2NhcGVQbHVnSW4u
eGNjb25maWc7IHBhdGggPSBtYWMvQ29uZmlndXJhdGlvbnMvVGVzdE5ldHNjYXBlUGx1Z0luLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IyODQ4ODBDRkE4MjAyMDA3
RTUzM0UgLyogUGl4ZWxEdW1wU3VwcG9ydENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBQaXhlbER1bXBTdXBwb3J0Q0cuY3BwOyBwYXRoID0gY2cvUGl4ZWxEdW1w
U3VwcG9ydENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMjg0ODkwQ0ZB
ODIwMjAwN0U1MzNFIC8qIFBpeGVsRHVtcFN1cHBvcnRDRy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUGl4ZWxEdW1wU3VwcG9ydENHLmg7IHBhdGggPSBjZy9QaXhlbER1bXBT
dXBwb3J0Q0cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2MSwxMyArNDUwLDYg
QEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKLQkJQjVBNzUyNUYwOEFGNEE0QTAwMTM4RTQ1IC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKLQkJfTsKIC8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KQEAgLTcyMSw3ICs3MDMsNiBA
QAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5MzQwOTk1NDA4NTQw
Q0FGMDA3RjNCQzggLyogRHVtcFJlbmRlclRyZWUgKi8sCi0JCQkJQjVBNzUyNjcwOEFGNEE0QTAw
MTM4RTQ1IC8qIEltYWdlRGlmZiAqLywKIAkJCQkyRDQwM0YxOTE1MDg3MUY5MDA1MzU4RDIgLyog
TGF5b3V0VGVzdEhlbHBlciAqLywKIAkJCQlBMTE1OEQ3RjE4OTI3RTdBMDA4OEMxN0IgLyogRHVt
cFJlbmRlclRyZWUuYXBwICovLAogCQkJCUExMzIxQzlFMTg4RjlBMzYwMDEyNTQzNCAvKiBsaWJE
dW1wUmVuZGVyVHJlZS5hICovLApAQCAtODEyLDcgKzc5Myw2IEBACiAJCQkJQkNCMjgxRjAwQ0ZB
NzEzRDAwN0U1MzNFIC8qIER1bXBSZW5kZXJUcmVlLnhjY29uZmlnICovLAogCQkJCUExOTMxN0ZE
MTg5Mjg3MzgwMDFDNTJCMSAvKiBEdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZyAqLywKIAkJCQlB
MTM0RTUzOTE4OTA2NzFDMDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVMaWJyYXJ5LnhjY29uZmln
ICovLAotCQkJCUJDQjI4M0Q4MENGQTdBRkQwMDdFNTMzRSAvKiBJbWFnZURpZmYueGNjb25maWcg
Ki8sCiAJCQkJQTExMDNCNUIxODkyNDk4RjAwNzM4Qzg3IC8qIExheW91dFRlc3RIZWxwZXIueGNj
b25maWcgKi8sCiAJCQkJQkNCMjgzREUwQ0ZBN0MyMDAwN0U1MzNFIC8qIFRlc3ROZXRzY2FwZVBs
dWdJbi54Y2NvbmZpZyAqLywKIAkJCSk7CkBAIC04NjQsMTMgKzg0NCw2IEBACiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Ci0JCUI1QTc1MjVC
MDhBRjRBNEEwMDEzOEU0NSAvKiBIZWFkZXJzICovID0gewotCQkJaXNhID0gUEJYSGVhZGVyc0J1
aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAo
Ci0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07
CiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhO
YXRpdmVUYXJnZXQgc2VjdGlvbiAqLwpAQCAtOTYyLDI0ICs5MzUsNiBAQAogCQkJcHJvZHVjdFJl
ZmVyZW5jZSA9IEExMzIxQzlFMTg4RjlBMzYwMDEyNTQzNCAvKiBsaWJEdW1wUmVuZGVyVHJlZS5h
ICovOwogCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0
YXRpYyI7CiAJCX07Ci0JCUI1QTc1MjVBMDhBRjRBNEEwMDEzOEU0NSAvKiBJbWFnZURpZmYgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gQjVBNzUyNjQwOEFGNEE0QTAwMTM4RTQ1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJJbWFnZURpZmYiICovOwotCQkJYnVpbGRQaGFzZXMgPSAoCi0J
CQkJQjVBNzUyNUIwOEFGNEE0QTAwMTM4RTQ1IC8qIEhlYWRlcnMgKi8sCi0JCQkJQjVBNzUyNUQw
OEFGNEE0QTAwMTM4RTQ1IC8qIFNvdXJjZXMgKi8sCi0JCQkJQjVBNzUyNUYwOEFGNEE0QTAwMTM4
RTQ1IC8qIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJYnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0J
CQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkpOwotCQkJbmFtZSA9IEltYWdlRGlmZjsKLQkJCXByb2R1
Y3RJbnN0YWxsUGF0aCA9ICIkKEhPTUUpL2JpbiI7Ci0JCQlwcm9kdWN0TmFtZSA9IER1bXBSZW5k
ZXJUcmVlOwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IEI1QTc1MjY3MDhBRjRBNEEwMDEzOEU0NSAv
KiBJbWFnZURpZmYgKi87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBl
LnRvb2wiOwotCQl9OwogLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLwpAQCAtMTAxMSw3ICs5NjYsNiBAQAogCQkJCUExMzIx
QzlEMTg4RjlBMzYwMDEyNTQzNCAvKiBEdW1wUmVuZGVyVHJlZSAoTGlicmFyeSkgKi8sCiAJCQkJ
OTM0MDk5NEEwODU0MENBRTAwN0YzQkM4IC8qIER1bXBSZW5kZXJUcmVlICovLAogCQkJCUExMTU4
RDdFMTg5MjdFN0EwMDg4QzE3QiAvKiBEdW1wUmVuZGVyVHJlZS5hcHAgKi8sCi0JCQkJQjVBNzUy
NUEwOEFGNEE0QTAwMTM4RTQ1IC8qIEltYWdlRGlmZiAqLywKIAkJCQkxNDFCRjIxRTA5NkE0NDFE
MDBFMDc1M0MgLyogVGVzdE5ldHNjYXBlUGx1Z0luICovLAogCQkJCTJENDAzRUIyMTUwODcxRjkw
MDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyICovLAogCQkJKTsKQEAgLTExODAsMTQgKzExMzQs
NiBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwotCQlCNUE3NTI1RDA4QUY0QTRBMDAxMzhFNDUgLyogU291cmNlcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKLQkJCWZpbGVzID0gKAotCQkJCUJDQjI4NEY2MENGQTg0RjgwMDdFNTMzRSAvKiBJbWFnZURp
ZmZDRy5jcHAgaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwpAQCAtMTIy
MSwxMSArMTE2Nyw2IEBACiAJCQl0YXJnZXQgPSBBMTMyMUM5RDE4OEY5QTM2MDAxMjU0MzQgLyog
RHVtcFJlbmRlclRyZWUgKExpYnJhcnkpICovOwogCQkJdGFyZ2V0UHJveHkgPSBBMTkzMTgwMTE4
OTI4QzEwMDAxQzUyQjEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwogCQl9OwotCQlBODRG
NjA4RjA4QjEzNzBFMDBFOTc0NUYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlz
YSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQgPSBCNUE3NTI1QTA4QUY0QTRBMDAx
MzhFNDUgLyogSW1hZ2VEaWZmICovOwotCQkJdGFyZ2V0UHJveHkgPSBBODRGNjA4RTA4QjEzNzBF
MDBFOTc0NUYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwotCQl9OwogCQlDRUI3NTRENDFC
QkRBMjZEMDA5RjA0MDEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBC
WFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSBBMTE1OEQ3RTE4OTI3RTdBMDA4OEMxN0Ig
LyogRHVtcFJlbmRlclRyZWUuYXBwICovOwpAQCAtMTM1MiwxNSArMTI5Myw2IEBACiAJCQl9Owog
CQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07Ci0JCTkwQ0JDMzUzMEY3NDhCMTMwMEE3MTJCNyAv
KiBQcm9kdWN0aW9uICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDQjI4M0Q4MENGQTdBRkQwMDdFNTMzRSAvKiBJ
bWFnZURpZmYueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUlOU1RBTExf
UEFUSCA9ICIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy8kKFdFQktJVF9GUkFNRVdP
UktfUkVTT1VSQ0VTX1BBVEgpIjsKLQkJCQlTS0lQX0lOU1RBTEwgPSBOTzsKLQkJCX07Ci0JCQlu
YW1lID0gUHJvZHVjdGlvbjsKLQkJfTsKIAkJOTBDQkMzNTQwRjc0OEIxMzAwQTcxMkI3IC8qIFBy
b2R1Y3Rpb24gKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkNCMjgzREUwQ0ZBN0MyMDAwN0U1MzNFIC8qIFRlc3RO
ZXRzY2FwZVBsdWdJbi54Y2NvbmZpZyAqLzsKQEAgLTE0NTIsMjAgKzEzODQsNiBAQAogCQkJfTsK
IAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwotCQlCNUE3NTI2NTA4QUY0QTRBMDAxMzhFNDUgLyog
RGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gQkNCMjgzRDgwQ0ZBN0FGRDAwN0U1MzNFIC8qIEltYWdlRGlm
Zi54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQl9OwotCQkJbmFtZSA9IERl
YnVnOwotCQl9OwotCQlCNUE3NTI2NjA4QUY0QTRBMDAxMzhFNDUgLyogUmVsZWFzZSAqLyA9IHsK
LQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSBCQ0IyODNEODBDRkE3QUZEMDA3RTUzM0UgLyogSW1hZ2VEaWZmLnhjY29uZmlnICov
OwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsK
IC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29u
ZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwpAQCAtMTU0OSwxNiArMTQ2Nyw2IEBACiAJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBQcm9kdWN0aW9uOwogCQl9OwotCQlCNUE3NTI2NDA4QUY0QTRBMDAxMzhFNDUgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkltYWdlRGlmZiIgKi8g
PSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9u
cyA9ICgKLQkJCQlCNUE3NTI2NTA4QUY0QTRBMDAxMzhFNDUgLyogRGVidWcgKi8sCi0JCQkJQjVB
NzUyNjYwOEFGNEE0QTAwMTM4RTQ1IC8qIFJlbGVhc2UgKi8sCi0JCQkJOTBDQkMzNTMwRjc0OEIx
MzAwQTcxMkI3IC8qIFByb2R1Y3Rpb24gKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlv
bjsKLQkJfTsKIC8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KIAl9OwogCXJv
b3RPYmplY3QgPSAwOEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCShyZXZpc2lvbiAy
MTYyNzYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSwyNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDUgQmVuIExhIE1vbmljYSA8YmVuLmxhbW9uaWNhQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0v
LyBGSVhNRTogV2UgbmVlZCB0byBiZSBhYmxlIHRvIGluY2x1ZGUgdGhlc2UgZGVmaW5lcyBmcm9t
IGEgY29uZmlnLmggc29tZXdoZXJlLgotI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQotCi0jaW5j
bHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Ci0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSA8d2luc29jazIuaD4K
LSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxpby5o
PgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPENvcmVH
cmFwaGljcy9DR0JpdG1hcENvbnRleHQuaD4KLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dJbWFn
ZS5oPgotI2luY2x1ZGUgPEltYWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+Ci0KLSNpZiBQTEFU
Rk9STShJT1MpCi0jaW5jbHVkZSA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+Ci0j
ZWxpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSA8TGF1bmNoU2VydmljZXMvVVRDb3JlVHlwZXMu
aD4KLSNlbmRpZgotCi0jaWZuZGVmIENHRkxPQVRfREVGSU5FRAotI2lmZGVmIF9fTFA2NF9fCi10
eXBlZGVmIGRvdWJsZSBDR0Zsb2F0OwotI2Vsc2UKLXR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKLSNl
bmRpZgotI2RlZmluZSBDR0ZMT0FUX0RFRklORUQgMQotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFj
ZSBzdGQ7Ci0KLSNpZiBQTEFURk9STShXSU4pCi1zdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VU
VHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7Ci0jZW5kaWYKLQotc3RhdGljIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZUZyb21TdGRpbihpbnQgYnl0ZXNSZW1haW5pbmcpCi17
Ci0gICAgdW5zaWduZWQgY2hhciBidWZmZXJbMjA0OF07Ci0gICAgUmV0YWluUHRyPENGTXV0YWJs
ZURhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgYnl0ZXNSZW1h
aW5pbmcpKTsKLQotICAgIHdoaWxlIChieXRlc1JlbWFpbmluZyA+IDApIHsKLSAgICAgICAgc2l6
ZV90IGJ5dGVzVG9SZWFkID0gbWluKGJ5dGVzUmVtYWluaW5nLCAyMDQ4KTsKLSAgICAgICAgc2l6
ZV90IGJ5dGVzUmVhZCA9IGZyZWFkKGJ1ZmZlciwgMSwgYnl0ZXNUb1JlYWQsIHN0ZGluKTsKLSAg
ICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoZGF0YS5nZXQoKSwgYnVmZmVyLCBzdGF0aWNfY2FzdDxD
RkluZGV4PihieXRlc1JlYWQpKTsKLSAgICAgICAgYnl0ZXNSZW1haW5pbmcgLT0gc3RhdGljX2Nh
c3Q8aW50PihieXRlc1JlYWQpOwotICAgIH0KLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJS
ZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRh
KGRhdGEuZ2V0KCkpKTsKLSAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aFBOR0Rh
dGFQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlbGVhc2VNYWxsb2NCdWZmZXIodm9pZCog
aW5mbywgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCi17Ci0gICAgZnJlZSgodm9pZCop
ZGF0YSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlRGlmZmVyZW5j
ZUltYWdlKENHSW1hZ2VSZWYgYmFzZUltYWdlLCBDR0ltYWdlUmVmIHRlc3RJbWFnZSwgZmxvYXQm
IGRpZmZlcmVuY2UpCi17Ci0gICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGJhc2VJ
bWFnZSk7Ci0gICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoYmFzZUltYWdlKTsK
LSAgICBzaXplX3Qgcm93Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0KLSAgICAvLyBEcmF3IGJhc2UgaW1h
Z2UgaW4gYml0bWFwIGNvbnRleHQKLSAgICB2b2lkKiBiYXNlQnVmZmVyID0gY2FsbG9jKGhlaWdo
dCwgcm93Qnl0ZXMpOwotICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJhc2VDb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoYmFzZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCwg
OCwgcm93Qnl0ZXMsIENHSW1hZ2VHZXRDb2xvclNwYWNlKGJhc2VJbWFnZSksIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKLSAgICBD
R0NvbnRleHREcmF3SW1hZ2UoYmFzZUNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgd2lk
dGgsIGhlaWdodCksIGJhc2VJbWFnZSk7Ci0KLSAgICAvLyBEcmF3IHRlc3QgaW1hZ2UgaW4gYml0
bWFwIGNvbnRleHQKLSAgICB2b2lkKiBidWZmZXIgPSBjYWxsb2MoaGVpZ2h0LCByb3dCeXRlcyk7
Ci0gICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKGJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgcm93Qnl0ZXMsIENHSW1hZ2VH
ZXRDb2xvclNwYWNlKHRlc3RJbWFnZSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Qg
fCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29u
dGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KSwgdGVzdEltYWdlKTsK
LQotICAgIC8vIENvbXBhcmUgdGhlIGNvbnRlbnQgb2YgdGhlIDIgYml0bWFwcwotICAgIHZvaWQq
IGRpZmZCdWZmZXIgPSBtYWxsb2Mod2lkdGggKiBoZWlnaHQpOwotICAgIGZsb2F0IGNvdW50ID0g
MC4wZjsKLSAgICBmbG9hdCBzdW0gPSAwLjBmOwotICAgIGZsb2F0IG1heERpc3RhbmNlID0gMC4w
ZjsKLSAgICB1bnNpZ25lZCBjaGFyKiBiYXNlUGl4ZWwgPSAodW5zaWduZWQgY2hhciopYmFzZUJ1
ZmZlcjsKLSAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbCA9ICh1bnNpZ25lZCBjaGFyKilidWZmZXI7
Ci0gICAgdW5zaWduZWQgY2hhciogZGlmZiA9ICh1bnNpZ25lZCBjaGFyKilkaWZmQnVmZmVyOwot
ICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKLSAgICAgICAgZm9yIChz
aXplX3QgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7Ci0gICAgICAgICAgICBmbG9hdCByZWQgPSAo
cGl4ZWxbMF0gLSBiYXNlUGl4ZWxbMF0pIC8gbWF4PGZsb2F0PigyNTUgLSBiYXNlUGl4ZWxbMF0s
IGJhc2VQaXhlbFswXSk7Ci0gICAgICAgICAgICBmbG9hdCBncmVlbiA9IChwaXhlbFsxXSAtIGJh
c2VQaXhlbFsxXSkgLyBtYXg8ZmxvYXQ+KDI1NSAtIGJhc2VQaXhlbFsxXSwgYmFzZVBpeGVsWzFd
KTsKLSAgICAgICAgICAgIGZsb2F0IGJsdWUgPSAocGl4ZWxbMl0gLSBiYXNlUGl4ZWxbMl0pIC8g
bWF4PGZsb2F0PigyNTUgLSBiYXNlUGl4ZWxbMl0sIGJhc2VQaXhlbFsyXSk7Ci0gICAgICAgICAg
ICBmbG9hdCBhbHBoYSA9IChwaXhlbFszXSAtIGJhc2VQaXhlbFszXSkgLyBtYXg8ZmxvYXQ+KDI1
NSAtIGJhc2VQaXhlbFszXSwgYmFzZVBpeGVsWzNdKTsKLSAgICAgICAgICAgIGZsb2F0IGRpc3Rh
bmNlID0gc3FydGYocmVkICogcmVkICsgZ3JlZW4gKiBncmVlbiArIGJsdWUgKiBibHVlICsgYWxw
aGEgKiBhbHBoYSkgLyAyLjBmOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAqZGlmZisrID0g
KHVuc2lnbmVkIGNoYXIpKGRpc3RhbmNlICogMjU1LjBmKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKGRpc3RhbmNlID49IDEuMGYgLyAyNTUuMGYpIHsKLSAgICAgICAgICAgICAgICBj
b3VudCArPSAxLjBmOwotICAgICAgICAgICAgICAgIHN1bSArPSBkaXN0YW5jZTsKLSAgICAgICAg
ICAgICAgICBpZiAoZGlzdGFuY2UgPiBtYXhEaXN0YW5jZSkKLSAgICAgICAgICAgICAgICAgICAg
bWF4RGlzdGFuY2UgPSBkaXN0YW5jZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgYmFzZVBpeGVsICs9IDQ7Ci0gICAgICAgICAgICBwaXhlbCArPSA0OwotICAgICAg
ICB9Ci0gICAgfQotICAgIAotICAgIC8vIENvbXB1dGUgdGhlIGRpZmZlcmVuY2UgYXMgYSBwZXJj
ZW50YWdlIGNvbWJpbmluZyBib3RoIHRoZSBudW1iZXIgb2YgZGlmZmVyZW50IHBpeGVscyBhbmQg
dGhlaXIgZGlmZmVyZW5jZSBhbW91bnQgaS5lLiB0aGUgYXZlcmFnZSBkaXN0YW5jZSBvdmVyIHRo
ZSBlbnRpcmUgaW1hZ2UKLSAgICBpZiAoY291bnQgPiAwLjBmKQotICAgICAgICBkaWZmZXJlbmNl
ID0gMTAwLjBmICogc3VtIC8gKGhlaWdodCAqIHdpZHRoKTsKLSAgICBlbHNlCi0gICAgICAgIGRp
ZmZlcmVuY2UgPSAwLjBmOwotCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGRpZmZJbWFnZTsK
LSAgICAvLyBHZW5lcmF0ZSBhIG5vcm1hbGl6ZWQgZGlmZiBpbWFnZSBpZiB0aGVyZSBpcyBhbnkg
ZGlmZmVyZW5jZQotICAgIGlmIChkaWZmZXJlbmNlID4gMC4wZikgewotICAgICAgICBpZiAobWF4
RGlzdGFuY2UgPCAxLjBmKSB7Ci0gICAgICAgICAgICBkaWZmID0gKHVuc2lnbmVkIGNoYXIqKWRp
ZmZCdWZmZXI7Ci0gICAgICAgICAgICBmb3Ioc2l6ZV90IHAgPSAwOyBwIDwgaGVpZ2h0ICogd2lk
dGg7ICsrcCkKLSAgICAgICAgICAgICAgICBkaWZmW3BdID0gZGlmZltwXSAvIG1heERpc3RhbmNl
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRp
ZmZDb2xvcnNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3JheSgpOwotICAgICAgICBS
ZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92
aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGRpZmZCdWZmZXIsIHdpZHRoICogaGVpZ2h0LCByZWxlYXNl
TWFsbG9jQnVmZmVyKSk7Ci0gICAgICAgIGRpZmZJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0
ZSh3aWR0aCwgaGVpZ2h0LCA4LCA4LCB3aWR0aCwgZGlmZkNvbG9yc3BhY2UsIDAsIHByb3ZpZGVy
LmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwotICAgIH0KLSAg
ICBlbHNlCi0gICAgICAgIGZyZWUoZGlmZkJ1ZmZlcik7Ci0gICAgCi0gICAgLy8gRGVzdHJveSBk
cmF3aW5nIGJ1ZmZlcnMKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBmcmVlKGJ1ZmZlcik7Ci0g
ICAgaWYgKGJhc2VCdWZmZXIpCi0gICAgICAgIGZyZWUoYmFzZUJ1ZmZlcik7Ci0gICAgCi0gICAg
cmV0dXJuIGRpZmZJbWFnZTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGltYWdlSGFzQWxwaGEo
Q0dJbWFnZVJlZiBpbWFnZSkKLXsKLSAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdl
R2V0QWxwaGFJbmZvKGltYWdlKTsKLSAgICAKLSAgICByZXR1cm4gKGluZm8gPj0ga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRMYXN0KSAmJiAoaW5mbyA8PSBrQ0dJbWFnZUFscGhhRmlyc3QpOwot
fQotCi1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQotewotI2lmIFBMQVRG
T1JNKFdJTikKLSAgICBfc2V0bW9kZSgwLCBfT19CSU5BUlkpOwotICAgIF9zZXRtb2RlKDEsIF9P
X0JJTkFSWSk7Ci0jZW5kaWYKLQotICAgIGZsb2F0IHRvbGVyYW5jZSA9IDAuMGY7Ci0KLSAgICBm
b3IgKGludCBpID0gMTsgaSA8IGFyZ2M7ICsraSkgewotICAgICAgICBpZiAoIXN0cmNtcChhcmd2
W2ldLCAiLXQiKSB8fCAhc3RyY21wKGFyZ3ZbaV0sICItLXRvbGVyYW5jZSIpKSB7Ci0gICAgICAg
ICAgICBpZiAoaSA+PSBhcmdjIC0gMSkKLSAgICAgICAgICAgICAgICBleGl0KDEpOwotICAgICAg
ICAgICAgdG9sZXJhbmNlID0gc3RydG9mKGFyZ3ZbaSArIDFdLCAwKTsKLSAgICAgICAgICAgICsr
aTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2hhciBi
dWZmZXJbMjA0OF07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGFjdHVhbEltYWdlOwotICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBiYXNlbGluZUltYWdlOwotCi0gICAgd2hpbGUgKGZnZXRz
KGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIHN0ZGluKSkgewotICAgICAgICAvLyByZW1vdmUgdGhl
IENSCi0gICAgICAgIGNoYXIqIG5ld0xpbmVDaGFyYWN0ZXIgPSBzdHJjaHIoYnVmZmVyLCAnXG4n
KTsKLSAgICAgICAgaWYgKG5ld0xpbmVDaGFyYWN0ZXIpCi0gICAgICAgICAgICAqbmV3TGluZUNo
YXJhY3RlciA9ICdcMCc7Ci0KLSAgICAgICAgaWYgKCFzdHJuY21wKCJDb250ZW50LUxlbmd0aDog
IiwgYnVmZmVyLCAxNikpIHsKLSAgICAgICAgICAgIHN0cnRvayhidWZmZXIsICIgIik7Ci0gICAg
ICAgICAgICBpbnQgaW1hZ2VTaXplID0gc3RydG9sKHN0cnRvaygwLCAiICIpLCAwLCAxMCk7Ci0K
LSAgICAgICAgICAgIGlmIChpbWFnZVNpemUgPiAwICYmICFhY3R1YWxJbWFnZSkKLSAgICAgICAg
ICAgICAgICBhY3R1YWxJbWFnZSA9IGNyZWF0ZUltYWdlRnJvbVN0ZGluKGltYWdlU2l6ZSk7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChpbWFnZVNpemUgPiAwICYmICFiYXNlbGluZUltYWdlKQotICAg
ICAgICAgICAgICAgIGJhc2VsaW5lSW1hZ2UgPSBjcmVhdGVJbWFnZUZyb21TdGRpbihpbWFnZVNp
emUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZwdXRzKCJFcnJvcjogaW1h
Z2Ugc2l6ZSBtdXN0IGJlIHNwZWNpZmllZC5cbiIsIHN0ZGVycik7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoYWN0dWFsSW1hZ2UgJiYgYmFzZWxpbmVJbWFnZSkgewotICAgICAgICAgICAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IGRpZmZJbWFnZTsKLSAgICAgICAgICAgIGZsb2F0IGRpZmZlcmVu
Y2UgPSAxMDAuMGY7Ci0KLSAgICAgICAgICAgIGlmICgoQ0dJbWFnZUdldFdpZHRoKGFjdHVhbElt
YWdlLmdldCgpKSA9PSBDR0ltYWdlR2V0V2lkdGgoYmFzZWxpbmVJbWFnZS5nZXQoKSkpICYmIChD
R0ltYWdlR2V0SGVpZ2h0KGFjdHVhbEltYWdlLmdldCgpKSA9PSBDR0ltYWdlR2V0SGVpZ2h0KGJh
c2VsaW5lSW1hZ2UuZ2V0KCkpKSAmJiAoaW1hZ2VIYXNBbHBoYShhY3R1YWxJbWFnZS5nZXQoKSkg
PT0gaW1hZ2VIYXNBbHBoYShiYXNlbGluZUltYWdlLmdldCgpKSkpIHsKLSAgICAgICAgICAgICAg
ICBkaWZmSW1hZ2UgPSBjcmVhdGVEaWZmZXJlbmNlSW1hZ2UoYWN0dWFsSW1hZ2UuZ2V0KCksIGJh
c2VsaW5lSW1hZ2UuZ2V0KCksIGRpZmZlcmVuY2UpOyAvLyBkaWZmZXJlbmNlIGlzIHBhc3NlZCBi
eSByZWZlcmVuY2UKLSAgICAgICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8PSB0b2xlcmFuY2Up
Ci0gICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UgPSAwLjBmOwotICAgICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlID0gcm91bmRmKGRpZmZlcmVu
Y2UgKiAxMDAuMGYpIC8gMTAwLjBmOwotICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlID0g
bWF4KGRpZmZlcmVuY2UsIDAuMDFmKTsgLy8gcm91bmQgdG8gMiBkZWNpbWFsIHBsYWNlcwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYg
KENHSW1hZ2VHZXRXaWR0aChhY3R1YWxJbWFnZS5nZXQoKSkgIT0gQ0dJbWFnZUdldFdpZHRoKGJh
c2VsaW5lSW1hZ2UuZ2V0KCkpIHx8IENHSW1hZ2VHZXRIZWlnaHQoYWN0dWFsSW1hZ2UuZ2V0KCkp
ICE9IENHSW1hZ2VHZXRIZWlnaHQoYmFzZWxpbmVJbWFnZS5nZXQoKSkpIHsKLSNpZiBPUyhXSU5E
T1dTKQotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiB0ZXN0IGFu
ZCByZWZlcmVuY2UgaW1hZ2VzIGhhdmUgZGlmZmVyZW50IHNpemVzLiBUZXN0IGltYWdlIGlzICVJ
dXglSXUsIHJlZmVyZW5jZSBpbWFnZSBpcyAlSXV4JUl1XG4iLAotI2Vsc2UKLSAgICAgICAgICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvcjogdGVzdCBhbmQgcmVmZXJlbmNlIGltYWdl
cyBoYXZlIGRpZmZlcmVudCBzaXplcy4gVGVzdCBpbWFnZSBpcyAlenV4JXp1LCByZWZlcmVuY2Ug
aW1hZ2UgaXMgJXp1eCV6dVxuIiwKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgQ0dJ
bWFnZUdldFdpZHRoKGFjdHVhbEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChhY3R1YWxJ
bWFnZS5nZXQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICBDR0ltYWdlR2V0V2lkdGgoYmFz
ZWxpbmVJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoYmFzZWxpbmVJbWFnZS5nZXQoKSkp
OwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW1hZ2VIYXNBbHBoYShhY3R1YWxJbWFnZS5n
ZXQoKSkgIT0gaW1hZ2VIYXNBbHBoYShiYXNlbGluZUltYWdlLmdldCgpKSkKLSAgICAgICAgICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvcjogdGVzdCBhbmQgcmVmZXJlbmNlIGltYWdl
cyBkaWZmZXIgaW4gYWxwaGEuIFRlc3QgaW1hZ2UgJXMgYWxwaGEsIHJlZmVyZW5jZSBpbWFnZSAl
cyBhbHBoYS5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUhhc0FscGhhKGFjdHVh
bEltYWdlLmdldCgpKSA/ICJoYXMiIDogImRvZXMgbm90IGhhdmUiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgaW1hZ2VIYXNBbHBoYShiYXNlbGluZUltYWdlLmdldCgpKSA/ICJoYXMiIDogImRv
ZXMgbm90IGhhdmUiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAg
aWYgKGRpZmZlcmVuY2UgPiAwLjBmKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRpZmZJbWFnZSkg
ewotICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gaW1hZ2VE
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKLSAgICAgICAgICAgICAg
ICAgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gaW1hZ2VEZXN0ID0gYWRvcHRD
RihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YShpbWFnZURhdGEuZ2V0KCksIGtVVFR5
cGVQTkcsIDEsIDApKTsKLSAgICAgICAgICAgICAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRk
SW1hZ2UoaW1hZ2VEZXN0LmdldCgpLCBkaWZmSW1hZ2UuZ2V0KCksIDApOwotICAgICAgICAgICAg
ICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3QuZ2V0KCkpOwotI2lm
IE9TKFdJTkRPV1MpCi0gICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6
ICVJdVxuIiwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoaW1hZ2VEYXRhLmdl
dCgpKSkpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDb250ZW50LUxlbmd0
aDogJXp1XG4iLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChpbWFnZURhdGEu
Z2V0KCkpKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgZndyaXRlKENGRGF0YUdldEJ5
dGVQdHIoaW1hZ2VEYXRhLmdldCgpKSwgMSwgQ0ZEYXRhR2V0TGVuZ3RoKGltYWdlRGF0YS5nZXQo
KSksIHN0ZG91dCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZnByaW50
ZihzdGRvdXQsICJkaWZmOiAlMDEuMmYlJSBmYWlsZWRcbiIsIGRpZmZlcmVuY2UpOwotICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJkaWZmOiAlMDEu
MmYlJSBwYXNzZWRcbiIsIGRpZmZlcmVuY2UpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBh
Y3R1YWxJbWFnZSA9IDA7Ci0gICAgICAgICAgICBiYXNlbGluZUltYWdlID0gMDsKLSAgICAgICAg
fQotCi0gICAgICAgIGZmbHVzaChzdGRvdXQpOwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cu
Y3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRp
dmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0NvbmZpZ3VyYXRpb25zL0ltYWdlRGlmZi54Y2NvbmZpZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQ29uZmlndXJhdGlvbnMvSW1hZ2VEaWZmLnhjY29u
ZmlnCShyZXZpc2lvbiAyMTYyNzYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQ29uZmln
dXJhdGlvbnMvSW1hZ2VEaWZmLnhjY29uZmlnCShub25leGlzdGVudCkKQEAgLTEsMjggKzAsMCBA
QAotLy8gQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLS8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0vLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLS8vIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0vLyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLS8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLS8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotLy8gUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotLy8g
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotCi0jaW5jbHVkZSAiQmFzZVRh
cmdldC54Y2NvbmZpZyIKLQotUFJPRFVDVF9OQU1FID0gSW1hZ2VEaWZmOwotT1RIRVJfTERGTEFH
U1tzZGs9bWFjb3N4Kl0gPSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBDYXJib24gLWZyYW1ld29y
ayBDb2NvYSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmU7Ci1PVEhFUl9MREZMQUdTW3Nkaz1pcGhvbmUq
XSA9ICQoaW5oZXJpdGVkKSAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29y
ZUdyYXBoaWNzIC1mcmFtZXdvcmsgTW9iaWxlQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgSW1hZ2VJ
TzsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4ucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQkocmV2aXNpb24gMjE2
Mjc2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQkod29ya2luZyBj
b3B5KQpAQCAtMTc0LDYgKzE3NCwyNiBAQCBjbGFzcyBEYXJ3aW5Qb3J0KEFwcGxlUG9ydCk6CiAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZV9maWxlc1t0ZXN0X25hbWVdID0gc3BpbmR1bXBfZmls
ZQogICAgICAgICByZXR1cm4gc2FtcGxlX2ZpbGVzCiAKKyAgICBkZWYgX3BhdGhfdG9faW1hZ2Vf
ZGlmZihzZWxmKToKKyAgICAgICAgIyBJbWFnZURpZmYgZm9yIERhcndpblBvcnRzIGlzIGEgbGl0
dGxlIGNvbXBsaWNhdGVkLiBJdCB3aWxsIGVpdGhlciBiZSBpbgorICAgICAgICAjIGEgZGlyZWN0
b3J5IG5hbWVkIC4uL21hYyByZWxhdGl2ZSB0byB0aGUgcG9ydCBidWlsZCBkaXJlY3RvcnksIGlu
IGEgZGlyZWN0b3J5CisgICAgICAgICMgbmFtZWQgLi4vPGJ1aWxkLXR5cGU+IHJlbGF0aXZlIHRv
IHRoZSBwb3J0IGJ1aWxkIGRpcmVjdG9yeSBvciBpbiB0aGUgcG9ydCBidWlsZCBkaXJlY3RvcnkK
KyAgICAgICAgX2ltYWdlX2RpZmZfaW5fYnVpbGRfcGF0aCA9IHN1cGVyKERhcndpblBvcnQsIHNl
bGYpLl9wYXRoX3RvX2ltYWdlX2RpZmYoKQorICAgICAgICBfcG9ydF9idWlsZF9kaXIgPSBzZWxm
Lmhvc3QuZmlsZXN5c3RlbS5kaXJuYW1lKF9pbWFnZV9kaWZmX2luX2J1aWxkX3BhdGgpCisKKyAg
ICAgICAgIyBUZXN0IC4uL21hYworICAgICAgICBfcGF0aF90b190ZXN0ID0gc2VsZi5ob3N0LmZp
bGVzeXN0ZW0uam9pbihfcG9ydF9idWlsZF9kaXIsICcuLicsICdtYWMnLCAnSW1hZ2VEaWZmJykK
KyAgICAgICAgaWYgc2VsZi5ob3N0LmZpbGVzeXN0ZW0uZXhpc3RzKF9wYXRoX3RvX3Rlc3QpOgor
ICAgICAgICAgICAgcmV0dXJuIF9wYXRoX3RvX3Rlc3QKKworICAgICAgICAjIFRlc3QgLi4vPGJ1
aWxkLXR5cGU+CisgICAgICAgIF9idWlsZF90eXBlID0gc2VsZi5ob3N0LmZpbGVzeXN0ZW0uYmFz
ZW5hbWUoX3BvcnRfYnVpbGRfZGlyKS5zcGxpdCgnLScpWzBdCisgICAgICAgIF9wYXRoX3RvX3Rl
c3QgPSBzZWxmLmhvc3QuZmlsZXN5c3RlbS5qb2luKF9wb3J0X2J1aWxkX2RpciwgJy4uJywgX2J1
aWxkX3R5cGUsICdJbWFnZURpZmYnKQorICAgICAgICBpZiBzZWxmLmhvc3QuZmlsZXN5c3RlbS5l
eGlzdHMoX3BhdGhfdG9fdGVzdCk6CisgICAgICAgICAgICByZXR1cm4gX3BhdGhfdG9fdGVzdAor
CisgICAgICAgIHJldHVybiBfaW1hZ2VfZGlmZl9pbl9idWlsZF9wYXRoCisKICAgICBkZWYgbWFr
ZV9jb21tYW5kKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi54Y3J1bl9maW5kKCdtYWtlJywg
Jy91c3IvYmluL21ha2UnKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1h
Z2VfZGlmZi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1h
Z2VfZGlmZi5weQkocmV2aXNpb24gMjE2Mjc2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2ltYWdlX2RpZmYucHkJKHdvcmtpbmcgY29weSkKQEAgLTExNSwxNSArMTE1LDMgQEAgY2xh
c3MgSW1hZ2VEaWZmZXIob2JqZWN0KToKICAgICAgICAgaWYgc2VsZi5fcHJvY2VzczoKICAgICAg
ICAgICAgIHNlbGYuX3Byb2Nlc3Muc3RvcCgpCiAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzID0g
Tm9uZQotCi0KLWNsYXNzIElPU1NpbXVsYXRvckltYWdlRGlmZmVyKEltYWdlRGlmZmVyKToKLSAg
ICBkZWYgX3N0YXJ0KHNlbGYsIHRvbGVyYW5jZSk6Ci0gICAgICAgICMgRklYTUU6IFVzaW5nICJi
b290ZWQiIGlzIG5vdCAxMDAlIGNvcnJlY3QsIHdlIHNob3VsZCB1c2UgYSBkZXZpY2UgSUQgdGhh
dCB3ZSBjcmVhdGVkLgotICAgICAgICAjIEZJWE1FOiBJcyBpdCBhIHByb2JsZW0gdGhhdCBJbWFn
ZURpZmYgYW5kIHNpbWN0bCByZW1haW4gc2VwYXJhdGUgcHJvY2Vzc2VzPyBUaGlzIGNvZGUgdXNl
ZCB0byBwYXNzIC0tYWRvcHQtcGlkIHRvIHNpbSB0b29sLgotICAgICAgICAjIFdlIHNob3VsZCBw
cm9iYWJseSBqdXN0IGJ1aWxkIGFuZCB1c2UgYSBob3N0IHZlcnNpb24gb2YgSW1hZ2VEaWZmIGlu
c3RlYWQgb2YgYSBzaW11bGF0b3Igb25lIHRvIHNvbHZlIGJvdGguCi0gICAgICAgIGNvbW1hbmQg
PSBbJ3hjcnVuJywgJy1zZGsnLCAnaXBob25lc2ltdWxhdG9yJywgJ3NpbWN0bCcsICdzcGF3bics
ICdib290ZWQnLCBzZWxmLl9wb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYoKSwgJy0tdG9sZXJhbmNl
Jywgc3RyKHRvbGVyYW5jZSldCi0gICAgICAgIGVudmlyb25tZW50ID0gc2VsZi5fcG9ydC5zZXR1
cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoJ0ltYWdlRGlmZicpCi0gICAgICAgIHNlbGYuX3Byb2Nlc3Mg
PSBzZWxmLl9wb3J0Ll9zZXJ2ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvcihzZWxmLl9wb3J0LCAnSW1h
Z2VEaWZmJywgY29tbWFuZCwgZW52aXJvbm1lbnQpCi0gICAgICAgIHNlbGYuX3Byb2Nlc3Muc3Rh
cnQoKQotICAgICAgICBzZWxmLl90b2xlcmFuY2UgPSB0b2xlcmFuY2UKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yLnB5CShyZXZpc2lvbiAyMTYyNzYp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQCBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRpbWUK
IAogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCi1mcm9tIHdl
YmtpdHB5LnBvcnQgaW1wb3J0IGltYWdlX2RpZmYKIGZyb20gd2Via2l0cHkucG9ydC5kZXZpY2Ug
aW1wb3J0IERldmljZQogZnJvbSB3ZWJraXRweS5wb3J0LmlvcyBpbXBvcnQgSU9TUG9ydAogZnJv
bSB3ZWJraXRweS54Y29kZS5zaW11bGF0b3IgaW1wb3J0IFNpbXVsYXRvciwgUnVudGltZSwgRGV2
aWNlVHlwZQpAQCAtMzI4LDE4ICszMjcsNiBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0KElPU1Bv
cnQpOgogICAgIGRlZiBnZXRfc2ltdWxhdG9yX3BhdGgoc2VsZiwgc3VmZml4PSIiKToKICAgICAg
ICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLlNJTVVMQVRPUl9ESVJFQ1RPUlksICJTaW11bGF0
b3IiICsgc3RyKHN1ZmZpeCkgKyAiLmFwcCIpCiAKLSAgICBkZWYgZGlmZl9pbWFnZShzZWxmLCBl
eHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzLCB0b2xlcmFuY2U9Tm9uZSk6Ci0gICAg
ICAgIGlmIG5vdCBhY3R1YWxfY29udGVudHMgYW5kIG5vdCBleHBlY3RlZF9jb250ZW50czoKLSAg
ICAgICAgICAgIHJldHVybiAoTm9uZSwgMCwgTm9uZSkKLSAgICAgICAgaWYgbm90IGFjdHVhbF9j
b250ZW50cyBvciBub3QgZXhwZWN0ZWRfY29udGVudHM6Ci0gICAgICAgICAgICByZXR1cm4gKFRy
dWUsIDAsIE5vbmUpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9pbWFnZV9kaWZmZXI6Ci0gICAgICAg
ICAgICBzZWxmLl9pbWFnZV9kaWZmZXIgPSBpbWFnZV9kaWZmLklPU1NpbXVsYXRvckltYWdlRGlm
ZmVyKHNlbGYpCi0gICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCd0b2xlcmFuY2UnLCAw
LjEpCi0gICAgICAgIGlmIHRvbGVyYW5jZSBpcyBOb25lOgotICAgICAgICAgICAgdG9sZXJhbmNl
ID0gc2VsZi5nZXRfb3B0aW9uKCd0b2xlcmFuY2UnKQotICAgICAgICByZXR1cm4gc2VsZi5faW1h
Z2VfZGlmZmVyLmRpZmZfaW1hZ2UoZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywg
dG9sZXJhbmNlKQotCiAgICAgZGVmIHJlc2V0X3ByZWZlcmVuY2VzKHNlbGYpOgogICAgICAgICBf
bG9nLmRlYnVnKCJyZXNldF9wcmVmZXJlbmNlcyIpCiAgICAgICAgIHNlbGYuX3F1aXRfaW9zX3Np
bXVsYXRvcigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>