<?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>157835</bug_id>
          
          <creation_ts>2016-05-18 06:21:29 -0700</creation_ts>
          <short_desc>Refactor toJS functions to use toJSNewlyCreated</short_desc>
          <delta_ts>2016-05-19 00:31:53 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=157842</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>157886</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1194231</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-18 06:21:29 -0700</bug_when>
    <thetext>If toJS functions use toJSNewlyCreated, this will allow some code refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194232</commentid>
    <comment_count>1</comment_count>
      <attachid>279240</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-18 06:31:01 -0700</bug_when>
    <thetext>Created attachment 279240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194238</commentid>
    <comment_count>2</comment_count>
      <attachid>279243</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-18 06:43:43 -0700</bug_when>
    <thetext>Created attachment 279243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194516</commentid>
    <comment_count>3</comment_count>
      <attachid>279243</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 16:51:51 -0700</bug_when>
    <thetext>Comment on attachment 279243
Patch

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

r=me with a couple of comments.

&gt; Source/WebCore/bindings/js/JSMediaStreamCapabilitiesCustom.cpp:43
&gt; +        return CREATE_DOM_WRAPPER(globalObject, AllVideoCapabilities, object);

bah, what about the WTFMove() ?

&gt; Source/WebCore/bindings/js/JSMediaStreamCapabilitiesCustom.cpp:44
&gt; +    return CREATE_DOM_WRAPPER(globalObject, AllAudioCapabilities, object);

bah, what about the WTFMove() ?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3449
&gt; +            push(@implContent, &quot;    return createNewWrapper&lt;$className, $implType&gt;(globalObject, WTFMove(impl));\n&quot;);

It does not hurt to call this one all the time. Let&apos;s just call this one all the time and get rid of the if ($svgPropertyType) check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194672</commentid>
    <comment_count>4</comment_count>
      <attachid>279364</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-18 23:56:17 -0700</bug_when>
    <thetext>Created attachment 279364
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194680</commentid>
    <comment_count>5</comment_count>
      <attachid>279364</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-19 00:31:49 -0700</bug_when>
    <thetext>Comment on attachment 279364
Patch for landing

Clearing flags on attachment: 279364

Committed r201129: &lt;http://trac.webkit.org/changeset/201129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194681</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-19 00:31:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279240</attachid>
            <date>2016-05-18 06:31:01 -0700</date>
            <delta_ts>2016-05-18 06:43:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157835-20160518153158.patch</filename>
            <type>text/plain</type>
            <size>87837</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdkMjYzYWZjYzA0YWE0
ZjVmYWQ0MmMyNDg5MGQ3ZTcxMTM2NDUyNy4uMzZmM2NiZGZlZWMxYzAyMjkxMGZlMTRjYjY0ODNj
OGIxMTNlMTA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxNi0wNS0xOCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlZmFj
dG9yIHRvSlMgZnVuY3Rpb25zIHRvIHVzZSB0b0pTTmV3bHlDcmVhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc4MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZpbmcgY2hlY2tzIGdlbmVyYXRl
ZCBieSBiaW5kaW5nIGdlbmVyYXRvciBmcm9tIHRvSlMgdG8gdG9KU05ld2x5Q3JlYXRlZC4KKyAg
ICAgICAgQ2hhbmdpbmcgd3JhcCB0ZW1wbGF0ZSBmdW5jdGlvbiB0byB1c2UgdG9KU05ld2x5Q3Jl
YXRlZCBmdW5jdGlvbi4KKyAgICAgICAgVGhpcyBhbGxvd3MgRE9NQ2xhc3MgdG9KUygpIHRvIGJl
IGVxdWl2YWxlbnQgdG8gd3JhcCB0ZW1wbGF0ZSBmdW5jdGlvbi4KKworICAgICAgICBSZWZhY3Rv
cmVkIGN1c3RvbSBiaW5kaW5nIGNvZGUgdG8gdGFrZSBiZW5lZml0IG9mIHRoaXMuCisKKyAgICAg
ICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
QW5pbWF0aW9uVGltZWxpbmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5
Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1
bGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp3cmFwKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWREb2N1bWVudFdyYXBwZXIp
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MVGVtcGxhdGVFbGVtZW50Ojpjb250ZW50KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQkN1cnNvckN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uaDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHUGF0aFNlZ0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTERvY3VtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0
ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3Bw
OgorCiAyMDE2LTA1LTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgdG8gaGl0dGVzdGluZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQW5pbWF0aW9uVGltZWxpbmVDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBbmltYXRpb25UaW1lbGluZUN1c3Rv
bS5jcHAKaW5kZXggMGFmMTBiYzZjZjM2OTQyNjkyOGYwNjI3ZTc3MThiMWU5NWRkYTUzZC4uYzY1
OTNlNDc2MjYwYWMzNGQyMThkMmYwZGRmZjQ1Nzc3YTBiNzg5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAK
QEAgLTM5LDE0ICszOSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBBbmltYXRpb25UaW1lbGluZSYgdmFsdWUpCitKU1ZhbHVlIHRvSlNOZXdseUNy
ZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPEFu
aW1hdGlvblRpbWVsaW5lPiYmIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0gZ2V0
Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CisgICAgaWYgKHZhbHVlLT5pc0RvY3VtZW50VGltZWxpbmUoKSkKKyAgICAg
ICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIERvY3VtZW50VGltZWxp
bmUsIFdURk1vdmUodmFsdWUpKTsKKyAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgQW5pbWF0aW9uVGltZWxpbmUsIFdURk1vdmUodmFsdWUpKTsKK30KIAotICAgIGlm
ICh2YWx1ZS5pc0RvY3VtZW50VGltZWxpbmUoKSkKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01f
V1JBUFBFUihnbG9iYWxPYmplY3QsIERvY3VtZW50VGltZWxpbmUsIHZhbHVlKTsKLSAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQW5pbWF0aW9uVGltZWxpbmUsIHZh
bHVlKTsKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBBbmltYXRpb25UaW1lbGluZSYgdmFsdWUpCit7CisgICAgcmV0dXJuIHdy
YXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAppbmRleCBi
ZGY0YmU1YmEwY2VlNmI3OWZiM2Y3NzEzNDE3ZmQwNDg0ZWE4NjE3Li5hOTMzNTg3MmEyYmU5MDEy
YWFlZGIyYjA5NDc0NTE0NzAwNGYxN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmxvYkN1c3RvbS5jcHAKQEAgLTQ4LDEyICs0OCwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBCbG9iJiBibG9iKQorSlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPEJsb2I+JiYgYmxvYikKIHsKICAgICBpZiAoaXM8RmlsZT4oYmxvYikpCi0gICAgICAg
IHJldHVybiB3cmFwPEpTRmlsZT4oZ2xvYmFsT2JqZWN0LCBkb3duY2FzdDxGaWxlPihibG9iKSk7
CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBGaWxlLCBX
VEZNb3ZlKGJsb2IpKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxKU0Jsb2I+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZShibG9iKSk7Cit9CiAKLSAgICByZXR1cm4gd3JhcDxKU0Jsb2I+KGdsb2Jh
bE9iamVjdCwgYmxvYik7CitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQmxvYiYgYmxvYikKK3sKKyAgICByZXR1cm4gd3JhcChz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCBibG9iKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU0Jsb2IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKaW5kZXggNjhkODcxMWUzMjkwNWY4M2Ey
NGMxYmZmYWZmMjJmY2ZhY2NhZjQ5Ny4uOGRjMTliNWZlMDgxMmIzZWY2N2M1ZGU5NjdkYjY2NzJi
OWNkMjhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxl
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0
b20uY3BwCkBAIC02MCw1NSArNjAsNDMgQEAgdm9pZCBKU0NTU1J1bGU6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChyb290KCZ3cmFwcGVkKCkpKTsKIH0KIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENTU1J1bGUmIHJ1bGUpCitKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPENTU1J1bGU+JiYgcnVsZSkKIHsKLSAgICBKU09iamVjdCogd3JhcHBlciA9IGdldENhY2hl
ZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBydWxlKTsKLSAgICBpZiAod3JhcHBlcikK
LSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0KLSAgICBzd2l0Y2ggKHJ1bGUudHlwZSgpKSB7Ci0g
ICAgICAgIGNhc2UgQ1NTUnVsZTo6U1RZTEVfUlVMRToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBD
UkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NTdHlsZVJ1bGUsIHJ1bGUpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUnVsZTo6TUVESUFfUlVMRToKLSAgICAg
ICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NNZWRp
YVJ1bGUsIHJ1bGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUnVsZTo6
Rk9OVF9GQUNFX1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVS
KGdsb2JhbE9iamVjdCwgQ1NTRm9udEZhY2VSdWxlLCBydWxlKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENTU1J1bGU6OlBBR0VfUlVMRToKLSAgICAgICAgICAgIHdyYXBwZXIg
PSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NQYWdlUnVsZSwgcnVsZSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NSdWxlOjpJTVBPUlRfUlVMRToKLSAg
ICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NJ
bXBvcnRSdWxlLCBydWxlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1J1
bGU6OkNIQVJTRVRfUlVMRToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQ
RVIoZ2xvYmFsT2JqZWN0LCBDU1NDaGFyc2V0UnVsZSwgcnVsZSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDU1NSdWxlOjpLRVlGUkFNRV9SVUxFOgotICAgICAgICAgICAgd3Jh
cHBlciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU0tleWZyYW1lUnVsZSwg
cnVsZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NSdWxlOjpLRVlGUkFN
RVNfUlVMRToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFs
T2JqZWN0LCBDU1NLZXlmcmFtZXNSdWxlLCBydWxlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENTU1J1bGU6OlNVUFBPUlRTX1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyID0g
Q1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTU3VwcG9ydHNSdWxlLCBydWxlKTsK
LSAgICAgICAgICAgIGJyZWFrOworICAgIHN3aXRjaCAocnVsZS0+dHlwZSgpKSB7CisgICAgY2Fz
ZSBDU1NSdWxlOjpTVFlMRV9SVUxFOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVS
KGdsb2JhbE9iamVjdCwgQ1NTU3R5bGVSdWxlLCBXVEZNb3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENT
U1J1bGU6Ok1FRElBX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBDU1NNZWRpYVJ1bGUsIFdURk1vdmUocnVsZSkpOworICAgIGNhc2UgQ1NTUnVs
ZTo6Rk9OVF9GQUNFX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBDU1NGb250RmFjZVJ1bGUsIFdURk1vdmUocnVsZSkpOworICAgIGNhc2UgQ1NT
UnVsZTo6UEFHRV9SVUxFOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgQ1NTUGFnZVJ1bGUsIFdURk1vdmUocnVsZSkpOworICAgIGNhc2UgQ1NTUnVsZTo6
SU1QT1JUX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2Jq
ZWN0LCBDU1NJbXBvcnRSdWxlLCBXVEZNb3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENTU1J1bGU6OkNI
QVJTRVRfUlVMRToKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmpl
Y3QsIENTU0NoYXJzZXRSdWxlLCBXVEZNb3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENTU1J1bGU6OktF
WUZSQU1FX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2Jq
ZWN0LCBDU1NLZXlmcmFtZVJ1bGUsIFdURk1vdmUocnVsZSkpOworICAgIGNhc2UgQ1NTUnVsZTo6
S0VZRlJBTUVTX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFs
T2JqZWN0LCBDU1NLZXlmcmFtZXNSdWxlLCBXVEZNb3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENTU1J1
bGU6OlNVUFBPUlRTX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBDU1NTdXBwb3J0c1J1bGUsIFdURk1vdmUocnVsZSkpOwogI2lmIEVOQUJMRShD
U1NfREVWSUNFX0FEQVBUQVRJT04pCi0gICAgICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1ZJRVdQ
T1JUX1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgV2ViS2l0Q1NTVmlld3BvcnRSdWxlLCBydWxlKTsKLSAgICAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1ZJRVdQT1JUX1JVTEU6CisgICAgICAgIHJldHVy
biBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUs
IFdURk1vdmUocnVsZSkpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAg
ICBjYXNlIENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRToKLSAgICAgICAgICAgIHdyYXBwZXIg
PSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBXZWJLaXRDU1NSZWdpb25SdWxlLCBy
dWxlKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1JFR0lP
Tl9SVUxFOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwg
V2ViS2l0Q1NTUmVnaW9uUnVsZSwgV1RGTW92ZShydWxlKSk7CiAjZW5kaWYKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2Jq
ZWN0LCBDU1NSdWxlLCBydWxlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gQ1JFQVRF
X0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTUnVsZSwgV1RGTW92ZShydWxlKSk7CiAgICAg
fQorfQogCi0gICAgcmV0dXJuIHdyYXBwZXI7CitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTUnVsZSYgb2JqZWN0KQorewor
ICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTVmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NW
YWx1ZUN1c3RvbS5jcHAKaW5kZXggOTM0NTU0NjJjODA2MzdmYTkyNDg0MzYyZDY3ODY3OTgzZWVj
M2I2OC4uNmU0ZTEyNDU1MTcyNjIwODZkOGMwMGQwZjRkYjMxMDgwOTc4NGU1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKQEAgLTY0LDcg
KzY0LDI0IEBAIHZvaWQgSlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKICAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzQ1NTVmFsdWUtPndyYXBwZWQoKSwganNDU1NWYWx1ZSk7CiB9CiAKLUpTVmFsdWUgdG9K
UyhFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDU1NWYWx1ZSYg
dmFsdWUpCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPENTU1ZhbHVlPiYmIHZhbHVlKQoreworICAgIGlmICh2
YWx1ZS0+aXNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSgpKQorICAgICAgICByZXR1cm4gQ1JFQVRF
X0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUsIFdURk1v
dmUodmFsdWUpKTsKKyAgICBpZiAodmFsdWUtPmlzV2ViS2l0Q1NTRmlsdGVyVmFsdWUoKSkKKyAg
ICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFdlYktpdENTU0Zp
bHRlclZhbHVlLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgp
KQorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTVmFs
dWVMaXN0LCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgaWYgKHZhbHVlLT5pc1NWR1BhaW50KCkpCisg
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYWludCwg
V1RGTW92ZSh2YWx1ZSkpOworICAgIGlmICh2YWx1ZS0+aXNTVkdDb2xvcigpKQorICAgICAgICBy
ZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHQ29sb3IsIFdURk1vdmUo
dmFsdWUpKTsKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU1ByaW1pdGl2ZVZhbHVlLCBX
VEZNb3ZlKHZhbHVlKSk7CisgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmpl
Y3QsIENTU1ZhbHVlLCBXVEZNb3ZlKHZhbHVlKSk7Cit9CisKK0pTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgLy8gU2NyaXB0cyBzaG91bGQgb25seSBldmVyIHNlZSBjbG9uZWQgQ1NTVmFs
dWVzLCBuZXZlciB0aGUgaW50ZXJuYWwgb25lcy4KICAgICBBU1NFUlQodmFsdWUuaXNDU1NPTVNh
ZmUoKSk7CkBAIC03MywyNyArOTAsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTVmFsdWUmIHZhbHVlKQogICAgIGlmICghdmFs
dWUuaXNDU1NPTVNhZmUoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCi0gICAgSlNPYmpl
Y3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgdmFs
dWUpOwotCi0gICAgaWYgKHdyYXBwZXIpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwotCi0gICAg
aWYgKHZhbHVlLmlzV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUoKSkKLSAgICAgICAgd3JhcHBlciA9
IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
LCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAodmFsdWUuaXNXZWJLaXRDU1NGaWx0ZXJWYWx1ZSgpKQot
ICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgV2ViS2l0
Q1NTRmlsdGVyVmFsdWUsIHZhbHVlKTsKLSAgICBlbHNlIGlmICh2YWx1ZS5pc1ZhbHVlTGlzdCgp
KQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NT
VmFsdWVMaXN0LCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAodmFsdWUuaXNTVkdQYWludCgpKQotICAg
ICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGFpbnQs
IHZhbHVlKTsKLSAgICBlbHNlIGlmICh2YWx1ZS5pc1NWR0NvbG9yKCkpCi0gICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdDb2xvciwgdmFsdWUpOwot
ICAgIGVsc2UgaWYgKHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgd3JhcHBlciA9
IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU1ByaW1pdGl2ZVZhbHVlLCB2YWx1
ZSk7Ci0gICAgZWxzZQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgQ1NTVmFsdWUsIHZhbHVlKTsKLQotICAgIHJldHVybiB3cmFwcGVyOworICAgIHJl
dHVybiB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIFJlZjxDU1NWYWx1ZT4o
dmFsdWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAKaW5kZXggMjBlMjhhNTUyZGJlNDk5OTJiNDViYjQ2NjFlMzMzOGY2ZDFjNTdkYi4uZmU4
ZTE1NGI5NDI4ZjRhNThmNmUxYWVjOGM5OGQwMmJmN2E5NGE1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwCkBAIC00NywxNyArNDcsMjIgQEAgdm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZp
c2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdyYXBwZWQoKS5jYW52YXMoKSkpOwogfQogCi1KU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIG9iamVjdCkKK0pTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+JiYgb2JqZWN0KQogewogI2lmIEVOQUJM
RShXRUJHTCkKICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihvYmplY3QpKQotICAg
ICAgICByZXR1cm4gd3JhcDxKU1dlYkdMUmVuZGVyaW5nQ29udGV4dD4oZ2xvYmFsT2JqZWN0LCBk
b3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KG9iamVjdCkpOworICAgICAgICByZXR1cm4g
Q1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgV2ViR0xSZW5kZXJpbmdDb250ZXh0LCBX
VEZNb3ZlKG9iamVjdCkpOwogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgaWYgKGlzPFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ+KG9iamVjdCkpCi0gICAgICAgIHJldHVybiB3cmFwPEpTV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dD4oZ2xvYmFsT2JqZWN0LCBkb3duY2FzdDxXZWJHTDJSZW5kZXJpbmdDb250
ZXh0PihvYmplY3QpKTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxP
YmplY3QsIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQsIFdURk1vdmUob2JqZWN0KSk7CiAjZW5kaWYK
ICNlbmRpZgotICAgIHJldHVybiB3cmFwPEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihnbG9i
YWxPYmplY3QsIGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4ob2JqZWN0KSk7Cisg
ICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRCwgV1RGTW92ZShvYmplY3QpKTsKK30KKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQmIG9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0
LCBvYmplY3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGRlOGViZTZhZTJiZDU3M2ViN2ZkMjAyZDQ2
MTllMjNjZTViN2E4YjguLmYyOTU0OGI5YTQ3MWEzN2JkOTI2OGVhYWU1NjQwMGNjYjE3NGJjOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0xNjUsOCAr
MTY1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFz
cz4gdm9pZCBjYWNoZVdyYXBwZXIoRE9NV3JhcHBlclcKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNs
YXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBl
cldvcmxkJiwgRE9NQ2xhc3MqLCBXcmFwcGVyQ2xhc3MqKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFdy
YXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IFdyYXBwZXJDbGFzcyogY3JlYXRlV3JhcHBl
cihKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxET01DbGFzcz4mJik7CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IEpTQzo6SlNWYWx1ZSB3cmFwKEpT
RE9NR2xvYmFsT2JqZWN0KiwgRE9NQ2xhc3MmKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJD
bGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IEpTQzo6SlNWYWx1ZSBnZXRFeGlzdGluZ1dyYXBwZXIo
SlNET01HbG9iYWxPYmplY3QqLCBET01DbGFzcyYpOwordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xh
c3M+IEpTQzo6SlNWYWx1ZSB3cmFwKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
LCBET01DbGFzcyYpOwogdGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNzLCB0eXBlbmFtZSBE
T01DbGFzcz4gSlNDOjpKU1ZhbHVlIGNyZWF0ZU5ld1dyYXBwZXIoSlNET01HbG9iYWxPYmplY3Qq
LCBSZWY8RE9NQ2xhc3M+JiYpOwogCiB2b2lkIGFkZEltcHVyZVByb3BlcnR5KGNvbnN0IEF0b21p
Y1N0cmluZyYpOwpAQCAtNDY2LDE2ICs0NjUsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBl
ckNsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIFdyYXBwZXJDbGFzcyogY3JlYXRlV3IK
ICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNz
LCB0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1ZSB3cmFwKEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzJiBkb21PYmplY3QpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1ZSB3cmFwKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9NQ2xhc3MmIGRvbU9iamVj
dCkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2Jq
ZWN0LT53b3JsZCgpLCBkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICBy
ZXR1cm4gY3JlYXRlV3JhcHBlcjxXcmFwcGVyQ2xhc3MsIERPTUNsYXNzPihnbG9iYWxPYmplY3Qs
IGRvbU9iamVjdCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5h
bWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUgZ2V0RXhpc3RpbmdXcmFwcGVyKEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzJiBkb21PYmplY3QpCi17Ci0gICAg
cmV0dXJuIGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBkb21PYmplY3Qp
OworICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIFJlZjxE
T01DbGFzcz4oZG9tT2JqZWN0KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFz
cywgdHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUgY3JlYXRlTmV3V3JhcHBl
cihKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RE9NQ2xhc3M+JiYgZG9tT2Jq
ZWN0KQpAQCAtNTIwLDcgKzUxNCw3IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBp
ZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7Ci0gICAgaWYgKEpTQzo6
SlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNDOjpKU0FycmF5QnVmZmVyPihn
bG9iYWxPYmplY3QsICpidWZmZXIpKQorICAgIGlmIChKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZ2V0
Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksICpidWZmZXIpKQogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogCiAgICAgLy8gVGhlIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSBmdW5jdGlv
biB3aWxsIHJlZ2lzdGVyIHRoZSB3cmFwcGVyIGluIGZpbmlzaENyZWF0aW9uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBmMTIxNDg4
YjZlOTcxMzY3MGU0MjMyOTFjYWRhMmUyODA1NTFiZDExLi4xYzk0ZGVkOTE1OTNlNmFmMTdiZTY0
YzQzNTRhOGU3MWZlNWE3ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtNzAsMTMgKzcwLDYgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGNyZWF0ZU5ld0RvY3VtZW50V3JhcHBlcihFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamUKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERvY3VtZW50JiBkb2N1bWVu
dCkKLXsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGNhY2hlZERvY3VtZW50V3JhcHBlcigqc3Rh
dGUsICpnbG9iYWxPYmplY3QsIGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0g
ICAgcmV0dXJuIGNyZWF0ZU5ld0RvY3VtZW50V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmplY3Qs
IGRvY3VtZW50KTsKLX0KLQogSlNPYmplY3QqIGNhY2hlZERvY3VtZW50V3JhcHBlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBEb2N1bWVudCYgZG9j
dW1lbnQpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2Jh
bE9iamVjdC53b3JsZCgpLCBkb2N1bWVudCkpCkBAIC0xMTAsNiArMTAzLDEzIEBAIEpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8CiAgICAgcmV0dXJuIGNyZWF0ZU5ld0RvY3VtZW50V3JhcHBlcigqc3Rh
dGUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoZG9jdW1lbnQpKTsKIH0KIAorSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERvY3Vt
ZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGNhY2hlZERvY3VtZW50
V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmplY3QsIGRvY3VtZW50KSkKKyAgICAgICAgcmV0dXJu
IHdyYXBwZXI7CisgICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVj
dCwgUmVmPERvY3VtZW50Pihkb2N1bWVudCkpOworfQorCiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OnBy
ZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRD
dXN0b20uY3BwCmluZGV4IGMyMzE3ZmMyYjlmMjBiMjlkN2ZmMzNjYjdiOWEwZGFmYzllNjk2NmQu
LjMxZTc5NWRmYjViZjlkNDhlY2JjZmExZGQzMGQ3OTA3ZTE5ZDJiMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNw
cApAQCAtNTIsMjYgKzUyLDE4IEBAIEpTVmFsdWUgSlNEb2N1bWVudEZyYWdtZW50OjphcHBlbmQo
RXhlY1N0YXRlJiBzdGF0ZSkKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGNyZWF0ZU5ld0RvY3VtZW50RnJhZ21lbnRXcmFwcGVyKEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGltcGwpCitK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgaW1wbCkKIHsKICNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKICAgICBpZiAoaW1wbC0+aXNTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVy
biBDUkVBVEVfRE9NX1dSQVBQRVIoJmdsb2JhbE9iamVjdCwgU2hhZG93Um9vdCwgV1RGTW92ZShp
bXBsKSk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBT
aGFkb3dSb290LCBXVEZNb3ZlKGltcGwpKTsKICNlbmRpZgotICAgIHJldHVybiBjcmVhdGVOZXdX
cmFwcGVyPEpTRG9jdW1lbnRGcmFnbWVudD4oJmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
Ci19Ci0KLUpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBpbXBsKQotewotICAg
IHJldHVybiBjcmVhdGVOZXdEb2N1bWVudEZyYWdtZW50V3JhcHBlcigqZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU0RvY3VtZW50RnJh
Z21lbnQ+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiB9CiAKLUpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBEb2N1bWVudEZyYWdt
ZW50JiBpbXBsKQorSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIERvY3VtZW50RnJhZ21lbnQmIGltcGwpCiB7Ci0gICAgaWYgKEpT
VmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTRG9jdW1lbnRGcmFnbWVudD4oZ2xv
YmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIHJldHVybiBj
cmVhdGVOZXdEb2N1bWVudEZyYWdtZW50V3JhcHBlcigqZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAg
ICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9t
LmNwcAppbmRleCBkODI4NWQ3YzdlNDIzZjZkNzY5NTBjMjI3MjEyYTI4ZDg3YjcyNzVjLi44NDEx
OWVlOGNmNzU4Zjk2NTY4ZjVmN2FmYTJhOTI4MWM1MTI5NDE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcApAQCAtNTEsMzEgKzUxLDIwIEBAIEpTVmFs
dWUgSlNFdmVudDo6Y2xpcGJvYXJkRGF0YShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiAjZGVm
aW5lIFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFKGludGVyZmFjZU5hbWUpIFwKICAgICBjYXNl
IGludGVyZmFjZU5hbWUjI0ludGVyZmFjZVR5cGU6IFwKLSAgICAgICAgcmV0dXJuIENSRUFURV9E
T01fV1JBUFBFUigmZ2xvYmFsT2JqZWN0LCBpbnRlcmZhY2VOYW1lLCBXVEZNb3ZlKGV2ZW50KSk7
CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBpbnRlcmZh
Y2VOYW1lLCBXVEZNb3ZlKGV2ZW50KSk7CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjcmVhdGVO
ZXdFdmVudFdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEV2ZW50
PiYmIGV2ZW50KQorSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxFdmVudD4mJiBldmVudCkKIHsKICAgICBzd2l0
Y2ggKGV2ZW50LT5ldmVudEludGVyZmFjZSgpKSB7CiAgICAgICAgIERPTV9FVkVOVF9JTlRFUkZB
Q0VTX0ZPUl9FQUNIKFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFKQogICAgIH0KIAotICAgIHJl
dHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoJmdsb2JhbE9iamVjdCwgRXZlbnQsIFdURk1vdmUoZXZl
bnQpKTsKLX0KLQotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEV2ZW50JiBldmVudCkKLXsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhnbG9i
YWxPYmplY3QtPnZtKCkpOwotCi0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFw
cGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgZXZlbnQpKQotICAgICAgICByZXR1cm4gd3JhcHBl
cjsKLQotICAgIHJldHVybiBjcmVhdGVOZXdFdmVudFdyYXBwZXIoKmdsb2JhbE9iamVjdCwgZXZl
bnQpOworICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBFdmVudCwg
V1RGTW92ZShldmVudCkpOwogfQogCi0KLUpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RXZlbnQ+JiYgZXZlbnQp
CitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRXZlbnQmIGV2ZW50KQogewotICAgIHJldHVybiBjcmVhdGVOZXdFdmVudFdyYXBw
ZXIoKmdsb2JhbE9iamVjdCwgV1RGTW92ZShldmVudCkpOworICAgIHJldHVybiB3cmFwKHN0YXRl
LCBnbG9iYWxPYmplY3QsIGV2ZW50KTsKIH0KIAogI3VuZGVmIFRSWV9UT19XUkFQX1dJVEhfSU5U
RVJGQUNFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxl
Y3Rpb25DdXN0b20uY3BwCmluZGV4IGI4NDRlMzNiMTQ3NDAwZjY0YjgyMzExMzgzNmIyZjNjMjNj
NWY3MWEuLmFjZWY2ZDhiYmVlMWVhYWNmMDRkNzY4ZmRjOGJiMGQ0MDFmYTZlYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20u
Y3BwCkBAIC01MywyMyArNTMsMjUgQEAgYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlMKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKQorSlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjxIVE1MQ29sbGVjdGlvbj4mJiBjb2xsZWN0aW9uKQogewotICAgIGlmIChhdXRvKiB3cmFw
cGVyID0gZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGNvbGxlY3Rpb24p
KQotICAgICAgICByZXR1cm4gd3JhcHBlcjsKLQotICAgIHN3aXRjaCAoY29sbGVjdGlvbi50eXBl
KCkpIHsKKyAgICBzd2l0Y2ggKGNvbGxlY3Rpb24tPnR5cGUoKSkgewogICAgIGNhc2UgRm9ybUNv
bnRyb2xzOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwg
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgICAgICByZXR1cm4g
Q1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24sIFdURk1vdmUoY29sbGVjdGlvbikpOwogICAgIGNhc2UgU2VsZWN0T3B0aW9uczoKLSAgICAg
ICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEhUTUxPcHRpb25zQ29s
bGVjdGlvbiwgY29sbGVjdGlvbik7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIo
Z2xvYmFsT2JqZWN0LCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIFdURk1vdmUoY29sbGVjdGlvbikp
OwogICAgIGNhc2UgRG9jQWxsOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGds
b2JhbE9iamVjdCwgSFRNTEFsbENvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgICAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgSFRNTEFsbENvbGxlY3Rpb24sIFdU
Rk1vdmUoY29sbGVjdGlvbikpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAotICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVj
dGlvbiwgY29sbGVjdGlvbik7CisgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxP
YmplY3QsIEhUTUxDb2xsZWN0aW9uLCBXVEZNb3ZlKGNvbGxlY3Rpb24pKTsKK30KKworSlNWYWx1
ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBn
bG9iYWxPYmplY3QsIGNvbGxlY3Rpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5j
cHAKaW5kZXggNWNhMGRkZWQ3Zjg5MTFmNjU0YWEzODcwMTA1OTdhNDUxN2MxNWRmZi4uMjYzOTEz
Yzg1ZDQyMTg4MzljZGY1MjUwNDUwZjYwNDBkYmU2MmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNTMsMTIgKzUz
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGNyZWF0ZU5ld0hUTUxEb2N1bWVudFdyYXBwZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEhUTUxE
b2N1bWVudD4mJiBwYXNzZWREb2N1bWVudCkKK0pTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVj
U3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8SFRNTERv
Y3VtZW50PiYmIHBhc3NlZERvY3VtZW50KQogewogICAgIGF1dG8mIGRvY3VtZW50ID0gcGFzc2Vk
RG9jdW1lbnQuZ2V0KCk7Ci0gICAgSlNPYmplY3QqIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQ
RVIoJmdsb2JhbE9iamVjdCwgSFRNTERvY3VtZW50LCBXVEZNb3ZlKHBhc3NlZERvY3VtZW50KSk7
CisgICAgSlNPYmplY3QqIHdyYXBwZXIgPSBjcmVhdGVXcmFwcGVyPEpTSFRNTERvY3VtZW50Pihn
bG9iYWxPYmplY3QsIFdURk1vdmUocGFzc2VkRG9jdW1lbnQpKTsKIAotICAgIHJlcG9ydE1lbW9y
eUZvckRvY3VtZW50SWZGcmFtZWxlc3Moc3RhdGUsIGRvY3VtZW50KTsKKyAgICByZXBvcnRNZW1v
cnlGb3JEb2N1bWVudElmRnJhbWVsZXNzKCpzdGF0ZSwgZG9jdW1lbnQpOwogCiAgICAgcmV0dXJu
IHdyYXBwZXI7CiB9CkBAIC02NywxMiArNjcsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSFRNTERvY3VtZW50JiBkbwog
ewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0gY2FjaGVkRG9jdW1lbnRXcmFwcGVyKCpzdGF0ZSwg
Kmdsb2JhbE9iamVjdCwgZG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICBy
ZXR1cm4gY3JlYXRlTmV3SFRNTERvY3VtZW50V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmplY3Qs
IGRvY3VtZW50KTsKLX0KLQotSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxIVE1MRG9jdW1lbnQ+JiYg
ZG9jdW1lbnQpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld0hUTUxEb2N1bWVudFdyYXBwZXIoKnN0
YXRlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRvY3VtZW50KSk7CisgICAgcmV0dXJuIHRvSlNO
ZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgUmVmPEhUTUxEb2N1bWVudD4oZG9jdW1l
bnQpKTsKIH0KIAogYm9vbCBKU0hUTUxEb2N1bWVudDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggZGMzNDJjZDRlNzg2
NjMyMTVjNWU4MzYzYTgzM2Q3YWEyNTAzZWU0YS4uMTA0ZGFjNDhmM2NkNWYzNGNkOGQ1MGM3MmQ3
YWMzZWRkZjhjYTA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwCkBAIC00NSwxMiArNDUsOCBAQCBK
U1ZhbHVlIEpTSFRNTFRlbXBsYXRlRWxlbWVudDo6Y29udGVudChFeGVjU3RhdGUmIHN0YXRlKSBj
b25zdAogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKCZzdGF0ZSk7CiAKLSAgICBhdXRvJiBjb250
ZW50ID0gd3JhcHBlZCgpLmNvbnRlbnQoKTsKKyAgICBhdXRvIHdyYXBwZXIgPSB3cmFwKCZzdGF0
ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5jb250ZW50KCkpOwogCi0gICAgaWYgKGF1dG8q
IHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBjb250
ZW50KSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0KLSAgICBhdXRvKiB3cmFwcGVyID0gQ1JF
QVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCgpLCBEb2N1bWVudEZyYWdtZW50LCBjb250ZW50
KTsKICAgICBQcml2YXRlTmFtZSBwcm9wZXJ0eU5hbWU7CiAgICAgY29uc3RfY2FzdDxKU0hUTUxU
ZW1wbGF0ZUVsZW1lbnQqPih0aGlzKS0+cHV0RGlyZWN0KGdsb2JhbE9iamVjdCgpLT52bSgpLCBw
cm9wZXJ0eU5hbWUsIHdyYXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJDdXJzb3JDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJDdXJzb3JDdXN0b20uY3BwCmluZGV4IDQ5YTg1N2Iy
OGY5NWE0ODE3NmI4YmU2ZmRhMjRiYWE1ZTA0ZDUzYTEuLmJmYzE4ZjEzN2NhNjBjNjk5MGEwMTkx
NjRkMTExYWMxOTI1OGVhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCQ3Vyc29yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQkN1cnNvckN1c3RvbS5jcHAKQEAgLTUyLDEyICs1MiwxNiBAQCBKU1ZhbHVlIEpTSURCQ3Vy
c29yOjpzb3VyY2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKICAgICByZXR1cm4gdG9KUygmc3Rh
dGUsIGdsb2JhbE9iamVjdCgpLCBjdXJzb3Iub2JqZWN0U3RvcmUoKSk7CiB9CiAKLUpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElE
QkN1cnNvciYgY3Vyc29yKQorSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPElEQkN1cnNvcj4mJiBjdXJz
b3IpCiB7CiAgICAgaWYgKGlzPElEQkN1cnNvcldpdGhWYWx1ZT4oY3Vyc29yKSkKLSAgICAgICAg
cmV0dXJuIHdyYXA8SlNJREJDdXJzb3JXaXRoVmFsdWU+KGdsb2JhbE9iamVjdCwgZG93bmNhc3Q8
SURCQ3Vyc29yV2l0aFZhbHVlPihjdXJzb3IpKTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01f
V1JBUFBFUihnbG9iYWxPYmplY3QsIElEQkN1cnNvcldpdGhWYWx1ZSwgV1RGTW92ZShjdXJzb3Ip
KTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxKU0lEQkN1cnNvcj4oZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGN1cnNvcikpOworfQogCi0gICAgcmV0dXJuIHdyYXA8SlNJREJDdXJzb3I+KGdsb2Jh
bE9iamVjdCwgY3Vyc29yKTsKK0pTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElEQkN1cnNvciYgY3Vyc29yKQoreworICAg
IHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGN1cnNvcik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VE
YXRhQ3VzdG9tLmNwcAppbmRleCA3ZDU3MjVkNWM5MmQ3NTU0MjdhYjQyMjM2NDkzYWQ2MzZhYjY5
YmRjLi5kZDc1MzBiNGEzYWIyYzk1NzViYmE4OTdjYWU3OTk0OWQzYWUyOGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCkBAIC0zNSwx
OSArMzUsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBJbWFnZURhdGEmIGltYWdlRGF0YSkKK0pTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8SW1h
Z2VEYXRhPiYmIGltYWdlRGF0YSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hl
ZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBpbWFnZURhdGEpKQotICAgICAgICByZXR1
cm4gd3JhcHBlcjsKLSAgICAKLSAgICBhdXRvKiB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVS
KGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhLCBpbWFnZURhdGEpOwotICAgIElkZW50aWZpZXIgZGF0
YU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJkYXRhIik7Ci0gICAgd3JhcHBl
ci0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGRhdGFOYW1lLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCwgaW1hZ2VEYXRhLmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7Ci0gICAgLy8gRklY
TUU6IEFkb3B0IHJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCwgYW5kIHN3aXRjaCB0byByZXBvcnRF
eHRyYU1lbW9yeUFsbG9jYXRlZC4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQyNTk1Ci0gICAgZXhlYy0+aGVhcCgpLT5kZXByZWNhdGVkUmVwb3J0RXh0
cmFNZW1vcnkoaW1hZ2VEYXRhLmRhdGEoKS0+bGVuZ3RoKCkpOwotICAgIAorICAgIGF1dG8qIGRh
dGEgPSBpbWFnZURhdGEtPmRhdGEoKTsKKyAgICBhdXRvKiB3cmFwcGVyID0gQ1JFQVRFX0RPTV9X
UkFQUEVSKGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhLCBXVEZNb3ZlKGltYWdlRGF0YSkpOworICAg
IElkZW50aWZpZXIgZGF0YU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiZGF0
YSIpOworICAgIHdyYXBwZXItPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgZGF0YU5hbWUsIHRvSlMo
c3RhdGUsIGdsb2JhbE9iamVjdCwgZGF0YSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAg
c3RhdGUtPmhlYXAoKS0+ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KGRhdGEtPmxlbmd0aCgp
KTsKKwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhJiBpbWFnZURh
dGEpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1hZ2VEYXRhKTsK
K30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0
cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcAppbmRleCBkZTQ3MWRiOTE2YTM5MzM0
OGFmOGNiOTUzZGZjNTNmMmFkMTUyODBhLi5jYWE2Y2JmMDAzMWM2MjFmZjYyNDAxMDYxNmMxOWJj
YjdkOWFiYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcApAQCAtMzcsMTIgKzM3LDE2
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyYgb2JqZWN0KQorSlNDOjpKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWY8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+JiYgb2JqZWN0KQogewogICAgIGlmIChv
YmplY3QuaGFzVmlkZW9Tb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIHdyYXA8SlNBbGxWaWRlb0Nh
cGFiaWxpdGllcz4oZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxBbGxWaWRlb0NhcGFiaWxpdGll
cyY+KG9iamVjdCkpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgQWxsVmlkZW9DYXBhYmlsaXRpZXMsIG9iamVjdCk7CisgICAgcmV0dXJuIENSRUFURV9E
T01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLCBvYmplY3QpOwor
fQogCi0gICAgcmV0dXJuIHdyYXA8SlNBbGxBdWRpb0NhcGFiaWxpdGllcz4oZ2xvYmFsT2JqZWN0
LCBzdGF0aWNfY2FzdDxBbGxBdWRpb0NhcGFiaWxpdGllcyY+KG9iamVjdCkpOworSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzJiBvYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUs
IGdsb2JhbE9iamVjdCwgb2JqZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5oCmluZGV4IGJmM2Nj
ZDJlMzM5NDE3NGY1MWY0MDY1ZjgyMGNlNWRhNWNiMjJhNWEuLjZjZTNlN2I5NWJjMzMxY2IzODU1
M2YwOTNkODYwNzE0N2QwZDlhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUxpc3RDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVMaXN0Q3VzdG9tLmgKQEAgLTM1LDggKzM1LDggQEAgV0VCQ09SRV9FWFBPUlQgSlNDOjpK
U1ZhbHVlIGNyZWF0ZVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QmLCBSZWY8Tm9kZUxpc3Q+JiYp
OwogCiBBTFdBWVNfSU5MSU5FIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9kZUxpc3QmIG5vZGVMaXN0KQogewotICAg
IGlmIChKU0M6OkpTVmFsdWUgZXhpc3RpbmdXcmFwcGVyID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpT
Tm9kZUxpc3Q+KGdsb2JhbE9iamVjdCwgbm9kZUxpc3QpKQotICAgICAgICByZXR1cm4gZXhpc3Rp
bmdXcmFwcGVyOworICAgIGlmIChhdXRvIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2Jh
bE9iamVjdC0+d29ybGQoKSwgbm9kZUxpc3QpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAg
ICByZXR1cm4gY3JlYXRlV3JhcHBlcigqZ2xvYmFsT2JqZWN0LCBub2RlTGlzdCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BlcmZvcm1hbmNlRW50cnlD
dXN0b20uY3BwCmluZGV4IGQxODUyZTBiNWYxYzQ1MTBiODEyNzRiMTBkMGM3NTA3ZDFlZWE4Nzgu
LjJkNjY1YTlmZWEzZjhjNGY5NDRkODExMDkxMDkzZTAyYjZkNGM3MTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNw
cApAQCAtNDcsMjAgKzQ3LDI1IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFBlcmZvcm1hbmNlRW50cnkmIGVudHJ5KQorSlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxQ
ZXJmb3JtYW5jZUVudHJ5PiYmIGVudHJ5KQogewogICAgIGlmIChpczxQZXJmb3JtYW5jZVJlc291
cmNlVGltaW5nPihlbnRyeSkpCi0gICAgICAgIHJldHVybiB3cmFwPEpTUGVyZm9ybWFuY2VSZXNv
dXJjZVRpbWluZz4oZ2xvYmFsT2JqZWN0LCBkb3duY2FzdDxQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nPihlbnRyeSkpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZywgV1RGTW92ZShlbnRyeSkpOwogCiAjaWYg
RU5BQkxFKFVTRVJfVElNSU5HKQogICAgIGlmIChpczxQZXJmb3JtYW5jZU1hcms+KGVudHJ5KSkK
LSAgICAgICAgcmV0dXJuIHdyYXA8SlNQZXJmb3JtYW5jZU1hcms+KGdsb2JhbE9iamVjdCwgZG93
bmNhc3Q8UGVyZm9ybWFuY2VNYXJrPihlbnRyeSkpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RP
TV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgUGVyZm9ybWFuY2VNYXJrLCBXVEZNb3ZlKGVudHJ5KSk7
CiAKICAgICBpZiAoaXM8UGVyZm9ybWFuY2VNZWFzdXJlPihlbnRyeSkpCi0gICAgICAgIHJldHVy
biB3cmFwPEpTUGVyZm9ybWFuY2VNZWFzdXJlPihnbG9iYWxPYmplY3QsIGRvd25jYXN0PFBlcmZv
cm1hbmNlTWVhc3VyZT4oZW50cnkpKTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBF
UihnbG9iYWxPYmplY3QsIFBlcmZvcm1hbmNlTWVhc3VyZSwgV1RGTW92ZShlbnRyeSkpOwogI2Vu
ZGlmCiAKLSAgICByZXR1cm4gd3JhcDxKU1BlcmZvcm1hbmNlRW50cnk+KGdsb2JhbE9iamVjdCwg
ZW50cnkpOworICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPEpTUGVyZm9ybWFuY2VFbnRyeT4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGVudHJ5KSk7Cit9CisKK0pTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBlcmZvcm1hbmNl
RW50cnkmIGVudHJ5KQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGVu
dHJ5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTVkdQYXRoU2VnQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1ZHUGF0aFNlZ0N1c3RvbS5jcHAKaW5kZXggMGNlYWMyNTMwNGY5N2Ix
YzllNGEwNWJjNjBiYjY2ZThhMWUxNTczZS4uNzYxNmMzMmU0MzE3YjkwNjM2MzMxODhlYzU2OWQ2
NGUzNjdlY2IyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQ
YXRoU2VnQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1Bh
dGhTZWdDdXN0b20uY3BwCkBAIC01OSw1NCArNTksNTYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZyYgb2JqZWN0KQorSlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjxTVkdQYXRoU2VnPiYmIG9iamVjdCkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9
IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBvYmplY3QpKQotICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKLQotICAgIHN3aXRjaCAob2JqZWN0LnBhdGhTZWdUeXBlKCkpIHsK
KyAgICBzd2l0Y2ggKG9iamVjdC0+cGF0aFNlZ1R5cGUoKSkgewogICAgIGNhc2UgU1ZHUGF0aFNl
Zzo6UEFUSFNFR19DTE9TRVBBVEg6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIo
Z2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ2xvc2VQYXRoLCBvYmplY3QpOworICAgICAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0Nsb3NlUGF0aCwg
V1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTU9WRVRPX0FC
UzoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1Bh
dGhTZWdNb3ZldG9BYnMsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTW92ZXRvQWJzLCBXVEZNb3ZlKG9iamVjdCkpOwog
ICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19NT1ZFVE9fUkVMOgotICAgICAgICByZXR1cm4g
Q1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ01vdmV0b1JlbCwgb2Jq
ZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNW
R1BhdGhTZWdNb3ZldG9SZWwsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRoU2Vn
OjpQQVRIU0VHX0xJTkVUT19BQlM6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIo
Z2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTGluZXRvQWJzLCBvYmplY3QpOworICAgICAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0xpbmV0b0Ficywg
V1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX1JF
TDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1Bh
dGhTZWdMaW5ldG9SZWwsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTGluZXRvUmVsLCBXVEZNb3ZlKG9iamVjdCkpOwog
ICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX0NVQklDX0FCUzoKLSAgICAgICAg
cmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWNBYnMsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzLCBXVEZNb3ZlKG9iamVjdCkpOwog
ICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTDoKLSAgICAgICAg
cmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWNSZWwsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsLCBXVEZNb3ZlKG9iamVjdCkpOwog
ICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlM6Ci0gICAg
ICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY0Ficywgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JB
UFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzLCBXVEZNb3Zl
KG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJ
Q19SRUw6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBT
VkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCwgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIENS
RUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
UmVsLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19BUkNf
QUJTOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZH
UGF0aFNlZ0FyY0Ficywgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBF
UihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdBcmNBYnMsIFdURk1vdmUob2JqZWN0KSk7CiAgICAg
Y2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0FSQ19SRUw6Ci0gICAgICAgIHJldHVybiBDUkVBVEVf
RE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQXJjUmVsLCBvYmplY3QpOworICAg
ICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0Fy
Y1JlbCwgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElO
RVRPX0hPUklaT05UQUxfQUJTOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGds
b2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMsIG9iamVjdCk7CisgICAg
ICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTGlu
ZXRvSG9yaXpvbnRhbEFicywgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6
OlBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RP
TV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwsIG9i
amVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBT
VkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCwgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNl
IFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX0FCUzoKLSAgICAgICAgcmV0dXJu
IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNh
bEFicywgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxP
YmplY3QsIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicywgV1RGTW92ZShvYmplY3QpKTsKICAg
ICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTDoKLSAgICAgICAg
cmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdMaW5ldG9W
ZXJ0aWNhbFJlbCwgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihn
bG9iYWxPYmplY3QsIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCwgV1RGTW92ZShvYmplY3Qp
KTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJT
OgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicywgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFU
RV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhB
YnMsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZF
VE9fQ1VCSUNfU01PT1RIX1JFTDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihn
bG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwsIG9iamVjdCk7Cisg
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoUmVsLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0
aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTOgotICAgICAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0N1cnZldG9RdWFk
cmF0aWNTbW9vdGhBYnMsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicywgV1RG
TW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19RVUFE
UkFUSUNfU01PT1RIX1JFTDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9i
YWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsLCBvYmplY3QpOwor
ICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2FzZSBT
VkdQYXRoU2VnOjpQQVRIU0VHX1VOS05PV046CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWcsIG9iamVjdCk7Cisg
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2Vn
LCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIH0KIH0KIAorSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWcmIG9iamVj
dCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOworfQor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9t
LmNwcAppbmRleCBhNzNiZjQ5ZjM0YjI1YjA3MGJiYzMxMThkNjkwZTI1ZjE0ZDczYWFhLi5mNTEz
MzFiOWE1YWNiNjYxMDk2MDVlODhkNzMwOWRmOGFjODRiODZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKQEAgLTM1LDEzICszNSwx
NiBAQCB2b2lkIEpTU3R5bGVTaGVldDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBl
ZCgpKSk7CiB9CiAKLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGVTaGVldCYgc3R5bGVTaGVldCkKK0pTQzo6SlNW
YWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFN0eWxlU2hlZXQ+JiYgc3R5bGVTaGVldCkKIHsKLSAgICBpZiAo
YXV0byogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBz
dHlsZVNoZWV0KSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgaWYgKHN0eWxlU2hlZXQu
aXNDU1NTdHlsZVNoZWV0KCkpCi0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBDU1NTdHlsZVNoZWV0LCBzdHlsZVNoZWV0KTsKLSAgICByZXR1cm4gQ1JFQVRF
X0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU3R5bGVTaGVldCwgc3R5bGVTaGVldCk7CisgICAg
aWYgKHN0eWxlU2hlZXQtPmlzQ1NTU3R5bGVTaGVldCgpKQorICAgICAgICByZXR1cm4gQ1JFQVRF
X0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTU3R5bGVTaGVldCwgV1RGTW92ZShzdHlsZVNo
ZWV0KSk7CisgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFN0eWxl
U2hlZXQsIFdURk1vdmUoc3R5bGVTaGVldCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxl
U2hlZXQmIHN0eWxlc2hlZXQpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVj
dCwgc3R5bGVzaGVldCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1RleHRDdXN0b20uY3BwCmluZGV4IDM2NDJkYWE3MWJkYzNkNTFk
M2ZjYjgwZTY3Y2YwZGE3Y2Y1MDgxNjMuLjIzMzIwZjg0OGMyM2M4MzVmY2VhYjViYjFmMjZhNWZm
NjNlN2JlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0Q3VzdG9tLmNw
cApAQCAtMzIsMjMgKzMyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGNyZWF0ZU5ld1RleHRXcmFwcGVyKEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXh0PiYmIHRleHQpCitKU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPFRleHQ+JiYgdGV4dCkKIHsKICAgICBpZiAoaXM8Q0RBVEFTZWN0aW9uPih0ZXh0
LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUigmZ2xvYmFsT2JqZWN0
LCBDREFUQVNlY3Rpb24sIFdURk1vdmUodGV4dCkpOwotICAgIHJldHVybiBDUkVBVEVfRE9NX1dS
QVBQRVIoJmdsb2JhbE9iamVjdCwgVGV4dCwgV1RGTW92ZSh0ZXh0KSk7CisgICAgICAgIHJldHVy
biBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDREFUQVNlY3Rpb24sIFdURk1vdmUo
dGV4dCkpOworICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBUZXh0
LCBXVEZNb3ZlKHRleHQpKTsKIH0KIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRleHQmIHRleHQpCi17Ci0gICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgdGV4dCkpCi0g
ICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIHJldHVybiBjcmVhdGVOZXdUZXh0V3JhcHBlcigq
Z2xvYmFsT2JqZWN0LCB0ZXh0KTsKLX0KLQotSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXh0PiYmIHRleHQp
CitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGV4dCYgdGV4dCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3VGV4dFdyYXBwZXIo
Kmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0ZXh0KSk7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGds
b2JhbE9iamVjdCwgdGV4dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAppbmRl
eCBlNjE0M2FhMDFjNjQyMmQxNWQ3NjUxYTkxYWE0YTI4Mzk0YTc1YTkwLi5lMzQ5YjRhMmYzODU2
NWY0MWE0MWU3ZDY3ZTM0ZGU3MjA1YWZiZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCkBAIC01OSwyNCArNTksMjYgQEAg
Ym9vbCBKU1RleHRUcmFja0N1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGgKICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1
ZVJvb3Qocm9vdCh0ZXh0VHJhY2tDdWUudHJhY2soKSkpOwogfQogCi1KU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGV4dFRyYWNrQ3VlJiBj
dWUpCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRleHRUcmFja0N1ZT4mJiBjdWUpCiB7Ci0gICAgaWYgKGF1
dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgY3Vl
KSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0KICAgICAvLyBUaGlzIHN3aXRjaCB3aWxsIG1h
a2UgbW9yZSBzZW5zZSBvbmNlIHdlIHN1cHBvcnQgRGF0YUN1ZQotICAgIHN3aXRjaCAoY3VlLmN1
ZVR5cGUoKSkgeworICAgIHN3aXRjaCAoY3VlLT5jdWVUeXBlKCkpIHsKICAgICBjYXNlIFRleHRU
cmFja0N1ZTo6RGF0YToKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxP
YmplY3QsIERhdGFDdWUsIGN1ZSk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIo
Z2xvYmFsT2JqZWN0LCBEYXRhQ3VlLCBXVEZNb3ZlKGN1ZSkpOwogICAgIGNhc2UgVGV4dFRyYWNr
Q3VlOjpXZWJWVFQ6CiAgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkdlbmVyaWM6Ci0gICAgICAgIHJl
dHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBWVFRDdWUsIGN1ZSk7CisgICAg
ICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBWVFRDdWUsIFdURk1v
dmUoY3VlKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICB9CiB9CiAKK0pTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXh0VHJhY2tDdWUm
IGN1ZSkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBjdWUpOworfQor
CiB2b2lkIEpTVGV4dFRyYWNrQ3VlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKICAgICBpZiAoVGV4dFRyYWNrKiB0ZXh0VHJhY2sgPSB3cmFwcGVkKCku
dHJhY2soKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAK
aW5kZXggODY1ZTIwZDA2Mzg0NDY5MzczYzNhZGJhOTBhNzFmNjdlNDRmMmQzNy4uOTIxYmNiNzdk
NzJjZDc2OGM4YzI2MDA1Y2YwYzgxZTQyYWE1NWQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKQEAgLTUzLDMwICs1MywyMiBAQCBUcmFja0Jhc2Uq
IHRvVHJhY2soSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUcmFja0Jhc2UmIHRyYWNrKQorSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUcmFja0Jhc2UmIHRyYWNr
KQogewogICAgIHN3aXRjaCAodHJhY2sudHlwZSgpKSB7CiAgICAgY2FzZSBUcmFja0Jhc2U6OkJh
c2VUcmFjazoKICAgICAgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgIGNhc2Ug
VHJhY2tCYXNlOjpBdWRpb1RyYWNrOgotICAgICAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENh
Y2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBkb3duY2FzdDxBdWRpb1RyYWNrPih0
cmFjaykpKQotICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgICAgIHJldHVybiBDUkVB
VEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBBdWRpb1RyYWNrLCB0cmFjayk7CiAKKyAgICBj
YXNlIFRyYWNrQmFzZTo6QXVkaW9UcmFjazoKKyAgICAgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGds
b2JhbE9iamVjdCwgZG93bmNhc3Q8QXVkaW9UcmFjaz4odHJhY2spKTsKICAgICBjYXNlIFRyYWNr
QmFzZTo6VmlkZW9UcmFjazoKLSAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRX
cmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgZG93bmNhc3Q8VmlkZW9UcmFjaz4odHJhY2sp
KSkKLSAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgICAgICByZXR1cm4gQ1JFQVRFX0RP
TV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgVmlkZW9UcmFjaywgdHJhY2spOwotCisgICAgICAgIHJl
dHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGRvd25jYXN0PFZpZGVvVHJhY2s+KHRyYWNr
KSk7CiAgICAgY2FzZSBUcmFja0Jhc2U6OlRleHRUcmFjazoKLSAgICAgICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgZG93bmNhc3Q8
VGV4dFRyYWNrPih0cmFjaykpKQotICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgICAg
IHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBUZXh0VHJhY2ssIHRyYWNr
KTsKKyAgICAgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgZG93bmNhc3Q8VGV4
dFRyYWNrPih0cmFjaykpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBqc051bGwoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxEb2N1bWVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTERvY3VtZW50Q3VzdG9t
LmNwcAppbmRleCBiOGU4ZDVjOGU4ZjdmM2MwYmEwZDZiYWIwZjRiMzk4OTVkNDY5YjJjLi4wMGU3
MGMwYzQ5MGExNDZlMTJmN2I0ZjAyNjU1ZTA5ZmRhM2NiNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtMzUsMTYgKzM1
LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGNyZWF0ZU5ld1hNTERvY3VtZW50V3JhcHBlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8WE1MRG9jdW1lbnQ+
JiYgcGFzc2VkRG9jdW1lbnQpCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFhNTERvY3VtZW50PiYm
IHBhc3NlZERvY3VtZW50KQogewogICAgIGF1dG8mIGRvY3VtZW50ID0gcGFzc2VkRG9jdW1lbnQu
Z2V0KCk7CiAgICAgSlNPYmplY3QqIHdyYXBwZXI7CiAgICAgaWYgKGRvY3VtZW50LmlzU1ZHRG9j
dW1lbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUigmZ2xvYmFsT2Jq
ZWN0LCBTVkdEb2N1bWVudCwgV1RGTW92ZShwYXNzZWREb2N1bWVudCkpOworICAgICAgICB3cmFw
cGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHRG9jdW1lbnQsIFdURk1v
dmUocGFzc2VkRG9jdW1lbnQpKTsKICAgICBlbHNlCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVf
RE9NX1dSQVBQRVIoJmdsb2JhbE9iamVjdCwgWE1MRG9jdW1lbnQsIFdURk1vdmUocGFzc2VkRG9j
dW1lbnQpKTsKKyAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmpl
Y3QsIFhNTERvY3VtZW50LCBXVEZNb3ZlKHBhc3NlZERvY3VtZW50KSk7CiAKLSAgICByZXBvcnRN
ZW1vcnlGb3JEb2N1bWVudElmRnJhbWVsZXNzKHN0YXRlLCBkb2N1bWVudCk7CisgICAgcmVwb3J0
TWVtb3J5Rm9yRG9jdW1lbnRJZkZyYW1lbGVzcygqc3RhdGUsIGRvY3VtZW50KTsKIAogICAgIHJl
dHVybiB3cmFwcGVyOwogfQpAQCAtNTMsMTIgKzUzLDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFhNTERvY3VtZW50JiBk
b2MKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGNhY2hlZERvY3VtZW50V3JhcHBlcigqc3Rh
dGUsICpnbG9iYWxPYmplY3QsIGRvY3VtZW50KSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0g
ICAgcmV0dXJuIGNyZWF0ZU5ld1hNTERvY3VtZW50V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmpl
Y3QsIGRvY3VtZW50KTsKLX0KLQotSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxYTUxEb2N1bWVudD4m
JiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4gY3JlYXRlTmV3WE1MRG9jdW1lbnRXcmFwcGVyKCpz
dGF0ZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShkb2N1bWVudCkpOworICAgIHJldHVybiB0b0pT
TmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIFJlZjxYTUxEb2N1bWVudD4oZG9jdW1l
bnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBmNzE3OGQxNTAxNDE2
M2IwMTVkMWZmYWViZGYzYjA0YWM2Y2FkODMyLi40OTgzMzI5Mjg5MzU4YTc0ODg3ZjYwNDBhNDU3
OWNkZTgwY2I0MzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzQxMSwyNiArMzQxMSwxMCBAQCBFTkQKIAogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPCRpbXBsVHlw
ZT4mJiBpbXBsKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAg
ICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjwkY2xhc3NOYW1lLCAkaW1wbFR5cGU+KGds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7XG4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPCRj
bGFzc05hbWU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7XG4iKTsKLSAgICAgICAgfQot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0KLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsICRpbXBsVHlwZSYgaW1wbClcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
Z2V0RXhpc3RpbmdXcmFwcGVyPCRjbGFzc05hbWUsICRpbXBsVHlwZT4oZ2xvYmFsT2JqZWN0LCBp
bXBsKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biByZXN1bHQ7XG4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjwkY2xh
c3NOYW1lPihnbG9iYWxPYmplY3QsIGltcGwpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwotICAgICAgICB9CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCkgaWYgJHZ0YWJsZU5hbWVHbnU7CiAKICNpZiBFTkFC
TEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZpbXBsKSk7CisgICAgdm9pZCogYWN0dWFsVlRhYmxl
UG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGltcGwucHRyKCkpKTsKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oJHt2dGFibGVSZWZXaW59KTsKICNlbHNlCkBAIC0zNDU4LDExICszNDQy
LDE5IEBAIEVORAogI2VuZGlmCiBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5E
KSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwb3J0RXh0cmFNZW1vcnlD
b3N0In07Ci0gICAgZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxv
Y2F0ZWQoaW1wbC5tZW1vcnlDb3N0KCkpOworICAgIGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwLnJl
cG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKGltcGwtPm1lbW9yeUNvc3QoKSk7CiBFTkQKIAotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjwkY2xh
c3NOYW1lLCAkaW1wbFR5cGU+KGdsb2JhbE9iamVjdCwgaW1wbCk7XG4iKTsKKyAgICAgICAgaWYg
KCRzdmdQcm9wZXJ0eVR5cGUpIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPCRjbGFzc05hbWUsICRpbXBsVHlwZT4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTtcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8JGNsYXNzTmFt
ZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTtcbiIpOworICAgICAgICB9CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAorICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgJGltcGxUeXBlJiBpbXBsKVxuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpO1xuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAKaW5kZXggNmMxOWExYWZhMzFjMjgwZmFiZDVkN2Q5YTkwYzhhZjBmZmE3YmVlZi4u
YjM3MDA4MTA3ZDIyNjM2N2Q5ZmZkMWEzNTcxY2VjNWNhMWQ0OGRkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTI1MiwxNiArMjUyLDkgQEAgZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMTlUZXN0QWN0aXZlRE9NT2JqZWN0RVtdOyB9CiAKIEpT
Qzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RBY3RpdmVET01PYmplY3Q+JiYgaW1wbCkKIHsK
LSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+KGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEFjdGl2ZURPTU9i
amVjdCYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBw
ZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0PihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQq
IGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkp
OworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVk
VlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9f
N1Rlc3RBY3RpdmVET01PYmplY3RAV2ViQ29yZUBANkJAIikpOwogI2Vsc2UKQEAgLTI3OCw3ICsy
NzEsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0QWN0aXZlRE8KICAgICAvLyBieSBhZGRpbmcgdGhlIFNr
aXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0
aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZU
YWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0
QWN0aXZlRE9NT2JqZWN0LCBUZXN0QWN0aXZlRE9NT2JqZWN0PihnbG9iYWxPYmplY3QsIGltcGwp
OworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdEFjdGl2ZURPTU9iamVjdD4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0QWN0
aXZlRE9NT2JqZWN0JiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIGltcGwpOwogfQogCiBUZXN0QWN0aXZlRE9NT2JqZWN0KiBKU1Rlc3RBY3RpdmVET01PYmpl
Y3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCA0ODgxNWZmZGU5NWQy
MGRmYTIwNjI5ZGU2NjM2NDhiMzA0OGRmZjE0Li4xYThhZmNjYjBiZmZiNmViNGQyZDc4MmZmMzg3
Y2U5OWZlNzVkNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTE3OCwxNiArMTc4LDkgQEAgZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMzNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JFW107IH0KIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yJiBpbXBsKQotewotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBl
cjxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBpbXBs
KSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklU
WSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZv
aWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2
b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lk
ZW50aWZpZXIoIj8/XzdUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JAV2ViQ29yZUBA
NkJAIikpOwogI2Vsc2UKQEAgLTIwNCw3ICsxOTcsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q2xhc3NX
aXQKICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0
byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFs
VlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0
dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Is
IFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsK
KyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3ImIGltcGwpCit7CisgICAgcmV0
dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKIFRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvciogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6
OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAppbmRl
eCBkZGFiYTRjMjUyZmIwNmFiNjFkODkzZjg3MTZmNzY2MjViZThkN2ZhLi5lMjExZTBmYzk1Y2I0
OTY2ZmViZDI4M2FlYjQ3NDE1MjNkODk5ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKQEAg
LTE2OCwxNiArMTY4LDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3Jl
NDJUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmoKIAogSlNDOjpKU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
PiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0JiBpbXBsKQotewotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3Jh
cHBlcjxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4oZ2xvYmFs
T2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5E
SU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVy
ID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JN
KFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0
PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3RAV2ViQ29yZUBANkJAIikpOwogI2Vsc2UKQEAgLTE5NCw3ICsxODcsMTIgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0Q3VzdG9tQ28KICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVW
YWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAg
UkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50
ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QsIFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdD4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRl
TmV3V3JhcHBlcjxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4o
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QmIGltcGwpCit7CisgICAgcmV0
dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKIFRlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCogSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCAxYzZjYjRlNjYwNjZlYWEzMDQyZmI0
OThiZDAwMjljZTFhMmYxYjAxLi4wZTU4Nzg5MzJjNTM0NTBkYjIxMzI0YjVhN2IxOTRmMGY4ZjBl
Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTIyNSwxNiAr
MjI1LDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjFUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJFW107IH0KIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEN1
c3RvbU5hbWVkR2V0dGVyPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19
Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyJiBpbXBsKQotewotICAgIGlmIChK
U1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3RDdXN0b21OYW1lZEdldHRl
cj4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVO
QUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0g
KihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFi
bGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lm
IFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVy
cHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJA
V2ViQ29yZUBANkJAIikpOwogI2Vsc2UKQEAgLTI1MSw3ICsyNDQsMTIgQEAgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
ZXN0Q3VzdG9tTmEKICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0
dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NF
UlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlm
Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIsIFRl
c3RDdXN0b21OYW1lZEdldHRlcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3Jl
YXRlTmV3V3JhcHBlcjxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcj4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIm
IGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9
CiAKIFRlc3RDdXN0b21OYW1lZEdldHRlciogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnRvV3Jh
cHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggYTFkOGZmMzFiZGQ0N2RhYjUzNTU4MDFiMzA3OWI3MTQxZWU5ZTRhNS4uNmYwZjVh
MzZkNGY2ODRhMjAwMGIxZTdkYjBmNTY1NTcyZWIwMjE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcApAQCAtMjczLDE2ICsyNzMsOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJu
IHZvaWQqIF9aVFZON1dlYkNvcmUyMFRlc3RFdmVudENvbnN0cnVjdG9yRVtdOyB9CiAKIEpTQzo6
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudENvbnN0cnVjdG9yPiYmIGltcGwpCiB7Ci0g
ICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4oZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXZlbnRDb25zdHJ1
Y3RvciYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBw
ZXI8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lk
KiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwp
KTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZv
aWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/
XzdUZXN0RXZlbnRDb25zdHJ1Y3RvckBXZWJDb3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMjk5LDcg
KzI5MiwxMiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudENvbgogICAgIC8vIGJ5IGFkZGluZyB0aGUg
U2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmlu
aXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVk
VlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rl
c3RFdmVudENvbnN0cnVjdG9yLCBUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBp
bXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9y
PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3RFdmVudENvbnN0cnVjdG9yJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9i
YWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0RXZlbnRDb25zdHJ1Y3RvciogSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuY3BwCmluZGV4IDRiNjQ1ZGYzMTY5YjMxZDQxMmU5OTFhYzk0OGZkYjYwNzNiNGM4NWIu
LmJjZDAyZDA2NjI2NjY0ZTk0YWIzYzc4N2FmMTA3ZmMxMThlNGRkYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcApAQCAtMjMyLDE2ICsyMzIsOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZv
aWQqIF9aVFZON1dlYkNvcmUxNVRlc3RFdmVudFRhcmdldEVbXTsgfQogCiBKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0RXZlbnRUYXJnZXQ+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3Jl
YXRlTmV3V3JhcHBlcjxKU1Rlc3RFdmVudFRhcmdldD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXZlbnRUYXJnZXQmIGltcGwpCi17Ci0gICAgaWYg
KEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTVGVzdEV2ZW50VGFyZ2V0Pihn
bG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxF
KEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBv
aW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExB
VEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RFdmVudFRhcmdldEBXZWJDb3JlQEA2
QkAiKSk7CiAjZWxzZQpAQCAtMjU4LDcgKzI1MSwxMiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudFRh
cgogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxW
VGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICByZXR1
cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RFdmVudFRhcmdldCwgVGVzdEV2ZW50VGFyZ2V0Pihn
bG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdEV2
ZW50VGFyZ2V0PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3RFdmVudFRhcmdldCYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwg
Z2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIAogVGVzdEV2ZW50VGFyZ2V0KiBKU1Rlc3RFdmVudFRh
cmdldDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAK
aW5kZXggZjMwMWI1ZjcxYmI2MWY5N2YzNWE0ODE4NzlhMGMxYzY5YTBmNTkwYy4uNDJkZDQ3MWJl
MmEyZGI4NDU1YzE3M2E3ZWM4NzZkNWE3MjRjZGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAK
QEAgLTIwNiwxNiArMjA2LDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJD
b3JlMTNUZXN0RXhjZXB0aW9uRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RFeGNlcHRpb24+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rl
c3RFeGNlcHRpb24+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdEV4Y2VwdGlvbiYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRF
eGlzdGluZ1dyYXBwZXI8SlNUZXN0RXhjZXB0aW9uPihnbG9iYWxPYmplY3QsIGltcGwpKQotICAg
ICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAg
IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigm
aW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4
cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmll
cigiPz9fN1Rlc3RFeGNlcHRpb25AV2ViQ29yZUBANkJAIikpOwogI2Vsc2UKQEAgLTIzMiw3ICsy
MjUsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXhjZXB0aW8KICAgICAvLyBieSBhZGRpbmcgdGhlIFNr
aXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0
aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZU
YWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0
RXhjZXB0aW9uLCBUZXN0RXhjZXB0aW9uPihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVy
biBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdEV4Y2VwdGlvbj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXhjZXB0aW9uJiBpbXBsKQorewor
ICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0RXhj
ZXB0aW9uKiBKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggZWM2OTEwYmIyMmVj
ZDJmNGM4MjZlYmJjODgyMDI2N2FhNDk2ZTgwMC4uZTliNmFhMWMzM2M2ODFlMjljYmUzMGQzNjgz
NDlmNWUzYzUyZWVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNw
cApAQCAtMTY1LDE2ICsxNjUsOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dl
YkNvcmUyM1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4oZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZSYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lk
KiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwp
KTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZv
aWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/
XzdUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUBXZWJDb3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMTkx
LDcgKzE4NCwxMiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RHZW5lcmF0ZQogICAgIC8vIGJ5IGFkZGluZyB0
aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRl
ZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVj
dGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLCBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4oZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlJiBpbXBsKQoreworICAgIHJldHVybiB3
cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZSogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDUxMjU5ZjM0NGNiMDczODVk
M2NkNmM4MzQzNjZkOTU2ZDdjNDUxMi4uY2Y0ODZlMDZmNDAxMGNlZTlkNDMzYzNkY2M2ZGY4ZjBh
ZDlkNzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKQEAgLTM0NywxNiArMzQ3LDkg
QEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMTZUZXN0R2xvYmFsT2Jq
ZWN0RVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RHbG9iYWxPYmplY3Q+
JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RHbG9iYWxPYmpl
Y3Q+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEds
b2JhbE9iamVjdCYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGlu
Z1dyYXBwZXI8SlNUZXN0R2xvYmFsT2JqZWN0PihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAg
ICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZv
aWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1w
bCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVj
dGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigi
Pz9fN1Rlc3RHbG9iYWxPYmplY3RAV2ViQ29yZUBANkJAIikpOwogI2Vsc2UKQEAgLTM3Myw3ICsz
NjYsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0R2xvYmFsT2IKICAgICAvLyBieSBhZGRpbmcgdGhlIFNr
aXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0
aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZU
YWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0
R2xvYmFsT2JqZWN0LCBUZXN0R2xvYmFsT2JqZWN0PihnbG9iYWxPYmplY3QsIGltcGwpOworICAg
IHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdEdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0R2xvYmFsT2JqZWN0
JiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwog
fQogCiBUZXN0R2xvYmFsT2JqZWN0KiBKU1Rlc3RHbG9iYWxPYmplY3Q6OnRvV3JhcHBlZChKU0M6
OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDAzZjlmMzk5ZWQ2YjY3
ZDljMDUxZDExOTY2ZjU1YzY4MmE3MjA5OWEuLmQyNzI5Y2FiM2RiZmUzNDg1MTEzOGUzNmNjODIx
ZDAxZTFmNDg1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC05MTcsMTMgKzkxNyw2IEBA
IHZvaWQgSlNUZXN0SW50ZXJmYWNlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiBjb250CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RJbnRlcmZhY2U+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rl
c3RJbnRlcmZhY2U+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdEludGVyZmFjZSYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRF
eGlzdGluZ1dyYXBwZXI8SlNUZXN0SW50ZXJmYWNlPihnbG9iYWxPYmplY3QsIGltcGwpKQotICAg
ICAgICByZXR1cm4gcmVzdWx0OwogI2lmIENPTVBJTEVSKENMQU5HKQogICAgIC8vIElmIHlvdSBo
aXQgdGhpcyBmYWlsdXJlIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbiBoYXMgdGhlIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUKICAgICAvLyBhdHRyaWJ1dGUuIFlvdSBzaG91bGQgcmVtb3ZlIHRo
YXQgYXR0cmlidXRlLiBJZiB0aGUgY2xhc3MgaGFzIHN1YmNsYXNzZXMKQEAgLTkzMSw3ICs5MjQs
MTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0SW50ZXJmYWMKICAgICAvLyBhdHRyaWJ1dGUgdG8gVGVzdElu
dGVyZmFjZS4KICAgICBzdGF0aWNfYXNzZXJ0KCFfX2lzX3BvbHltb3JwaGljKFRlc3RJbnRlcmZh
Y2UpLCAiVGVzdEludGVyZmFjZSBpcyBwb2x5bW9ycGhpYyBidXQgdGhlIElETCBjbGFpbXMgaXQg
aXMgbm90Iik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RJbnRl
cmZhY2UsIFRlc3RJbnRlcmZhY2U+KGdsb2JhbE9iamVjdCwgaW1wbCk7CisgICAgcmV0dXJuIGNy
ZWF0ZU5ld1dyYXBwZXI8SlNUZXN0SW50ZXJmYWNlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbnRlcmZhY2UmIGltcGwpCit7CisgICAg
cmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKIFRlc3RJbnRlcmZh
Y2UqIEpTVGVzdEludGVyZmFjZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCBkYWQ2NDMyZTk2
NjM1YjEwZDhjN2ZmZTZlMzQ4MjcwOWI2ZmVkYTYwLi5hMTJjZGRiYzA4OTNiY2VlMzUwZDUwMjNj
ZGJkYTIzYmNmMDRjMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwCkBAIC0xOTAsMTYgKzE5MCw5IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCog
X1pUVk43V2ViQ29yZTI2VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJFW107IH0KIAogSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+JiYgaW1wbCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyJiBpbXBsKQotewotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9
IGdldEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihnbG9iYWxP
YmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJ
TkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIg
PSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0o
V0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQFdlYkNv
cmVAQDZCQCIpKTsKICNlbHNlCkBAIC0yMTYsNyArMjA5LDEyIEBAIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE1l
ZGlhUXVlCiAgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1
dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgogICAgIFJFTEVBU0VfQVNTRVJUKGFj
dHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKICNlbmRpZgotICAg
IHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIsIFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVy
biBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXImIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9i
amVjdCwgaW1wbCk7CiB9CiAKIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDg5OGVmMjkyYTE3ZTk5OGM2MTFjMDRh
ZmU3NTYzMzQ1NzhjM2MzZGYuLjFkODMxMjViNzY0NTY2NWIyNmJjNWRmYTZjN2QxYWEyNzk1ZmIy
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTIxMywxNiArMjEz
LDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjBUZXN0TmFtZWRD
b25zdHJ1Y3RvckVbXTsgfQogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRD
b25zdHJ1Y3Rvcj4mJiBpbXBsKQogewotICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVz
dE5hbWVkQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGVzdE5hbWVkQ29uc3RydWN0b3ImIGltcGwpCi17Ci0gICAgaWYgKEpTVmFsdWUg
cmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KGdsb2Jh
bE9iamVjdCwgaW1wbCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7CiAKICNpZiBFTkFCTEUoQklO
RElOR19JTlRFR1JJVFkpCi0gICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KCZpbXBsKSk7CisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRl
ciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGltcGwucHRyKCkpKTsKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oX19pZGVudGlmaWVyKCI/P183VGVzdE5hbWVkQ29uc3RydWN0b3JAV2ViQ29yZUBA
NkJAIikpOwogI2Vsc2UKQEAgLTIzOSw3ICsyMzIsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRD
b24KICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0
byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFs
VlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0
dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvciwgVGVzdE5hbWVkQ29u
c3RydWN0b3I+KGdsb2JhbE9iamVjdCwgaW1wbCk7CisgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBw
ZXI8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
K30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRDb25zdHJ1Y3RvciYgaW1wbCkKK3sKKyAg
ICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIAogVGVzdE5hbWVk
Q29uc3RydWN0b3IqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvV3JhcHBlZChKU0M6OkpTVmFs
dWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKaW5kZXggMmQ0YWU5
NDQ2MDY0NTgyZWY3OWMwNWQwMjE3MDEzMWQ5NWMzN2QzMi4uMzg2YzdiODk0ZWIwNWNiN2Y4Yjg3
MzJkNDE4NDBkODA2ZjMyYWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNw
cApAQCAtNDc0LDE2ICs0NzQsOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dl
YkNvcmUyMFRlc3ROb25kZXRlcm1pbmlzdGljRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3ROb25kZXRlcm1pbmlzdGljPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZU5ld1dyYXBwZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Tm9uZGV0ZXJtaW5pc3RpYyYgaW1wbCkKLXsK
LSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpYz4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQ
b2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBh
Y3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIo
KSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIg
PSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0Tm9uZGV0ZXJt
aW5pc3RpY0BXZWJDb3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtNTAwLDcgKzQ5MywxMiBAQCBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3ROb25kZXRlcgogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlk
YXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxF
QVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7
CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3ROb25kZXRlcm1pbmlz
dGljLCBUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1
cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPihnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROb25kZXRlcm1pbmlz
dGljJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwp
OwogfQogCiBUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6dG9X
cmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMjYxZmE3MGE1NWRjYzBj
NjU2Y2RkMjM3ZmNjNzBjMjQzMzRhMzFiMi4uNTIyMWQ4MjViZmFjMzc4MDFkN2E3ZjliMGRkZjVi
NTk3MTAzZDRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTYyNjksMTYgKzYyNjksOSBAQCBleHRlcm4gIkMi
IHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU3VGVzdE9iakVbXTsgfQogCiBKU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0T2JqPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5l
d1dyYXBwZXI8SlNUZXN0T2JqPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1K
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RPYmomIGltcGwpCi17Ci0gICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0
RXhpc3RpbmdXcmFwcGVyPEpTVGVzdE9iaj4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lk
KiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwp
KTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZv
aWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/
XzdUZXN0T2JqQFdlYkNvcmVAQDZCQCIpKTsKICNlbHNlCkBAIC02Mjk1LDcgKzYyODgsMTIgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0T2JqJiBpbXAKICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVW
YWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAg
UkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50
ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0T2JqLCBUZXN0
T2JqPihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpT
VGVzdE9iaj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUZXN0T2JqJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIGltcGwpOwogfQogCiBUZXN0T2JqKiBKU1Rlc3RPYmo6OnRvV3JhcHBlZChKU0M6OkpTVmFs
dWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAK
aW5kZXggNDgzY2ExMjEwZTc5NGViOTE5YzVkZWY5M2U3NjM3MzAwNTQxOTYzMS4uMmYwNmI0M2Zl
ZGViZDBkMDE2NGY2MWQ3MmVlNzYyNmM0ODgxYzk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMjQ5LDE2ICsyNDksOSBAQCBleHRlcm4gIkMi
IHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyNlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
RVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQot
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYgaW1wbCkKLXsKLSAgICBpZiAo
SlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycz4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAog
I2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2lu
dGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1
YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkp
OwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc0BXZWJDb3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMjc1LDcgKzI2OCwxMiBAQCBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RPdmVybG9hZAogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZh
bGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBS
RUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRl
cik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xvYmFsT2JqZWN0LCBp
bXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJiBpbXBsKQoreworICAgIHJldHVybiB3cmFw
KHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCBjMmY0ZTll
NTliODhkMjFlYmJiMWRlNmI3MTZkMjYyNDMzMTNmN2I3Li5mNGYzN2M1M2U3ZWEzYTA2Y2U5Njkx
NmY1NzdlYTc1YWUzM2Q0ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3Bw
CkBAIC0yMzIsMTYgKzIzMiw5IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2Vi
Q29yZTIwVGVzdE92ZXJyaWRlQnVpbHRpbnNFW107IH0KIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXds
eUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRl
TmV3V3JhcHBlcjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPihnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVycmlkZUJ1aWx0aW5zJiBpbXBsKQotewot
ICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zPihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0Owog
CiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBv
aW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFj
dHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigp
KSk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RPdmVycmlkZUJ1
aWx0aW5zQFdlYkNvcmVAQDZCQCIpKTsKICNlbHNlCkBAIC0yNTgsNyArMjUxLDEyIEBAIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGVzdE92ZXJyaWRlCiAgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRh
dGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgogICAgIFJFTEVB
U0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsK
ICNlbmRpZgotICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnMsIFRlc3RPdmVycmlkZUJ1aWx0aW5zPihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVy
biBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92ZXJyaWRlQnVpbHRp
bnMmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7
CiB9CiAKIFRlc3RPdmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp0b1dy
YXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA1ODhiNDMyZWI4NWUyMjk3ZDEw
YWFmMTIzMjBkMzg2MDVkYWRkNDVhLi4zNzQ0ZDI0OWIyZGFjZjZmMWFkY2Q2MDA3ODk2M2VhOTRk
NWE3NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcApAQCAtMzA3LDE2ICszMDcsOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJu
IHZvaWQqIF9aVFZON1dlYkNvcmUzNFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VF
W107CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPihnbG9iYWxPYmplY3QsIGltcGwp
KQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZ
KQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZv
aWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRl
bnRpZmllcigiPz9fN1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VAV2ViQ29yZUBA
NkJAIikpOwogI2Vsc2UKQEAgLTMzMyw3ICszMjYsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2VyaWFs
aXoKICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0
byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFs
VlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0
dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPihnbG9iYWxPYmplY3QsIGltcGwp
OworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiBpbXBsKQoreworICAg
IHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApp
bmRleCAzYmYxMzQxZDFjZmQ2MTM2MTYxZTQ5YWRkNWVjNTI2MDU0NmJlZDZkLi40NDkxOTY4MWVj
MjVkMjY4YTViMmQ3OGViY2ZjYWU1OTg2ZTQ5ZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAg
LTY2MiwxNiArNjYyLDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3Jl
MTJUZXN0VHlwZWRlZnNFW107IH0KIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFR5
cGVkZWZzPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0VHlw
ZWRlZnM+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVz
dFR5cGVkZWZzJiBpbXBsKQotewotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5n
V3JhcHBlcjxKU1Rlc3RUeXBlZGVmcz4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBh
Y3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsK
KyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQq
Kj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZU
YWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdU
ZXN0VHlwZWRlZnNAV2ViQ29yZUBANkJAIikpOwogI2Vsc2UKQEAgLTY4OCw3ICs2ODEsMTIgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0VHlwZWRlZnMKICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVW
YWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAg
UkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50
ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0VHlwZWRlZnMs
IFRlc3RUeXBlZGVmcz4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3
V3JhcHBlcjxKU1Rlc3RUeXBlZGVmcz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30K
KworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0VHlwZWRlZnMmIGltcGwpCit7CisgICAgcmV0dXJuIHdy
YXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKIFRlc3RUeXBlZGVmcyogSlNUZXN0
VHlwZWRlZnM6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAppbmRl
eCA5NmQyZWMyOTM3ZDA0ZGQxZjI2MGZmOGFiZmE1ZTBhYTdjZDBkYWNlLi40ZjRhMjJlOGEwNTc4
N2ZhMjYzMjJjNjA0MDhkZDIxOTY2Y2JkZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKQEAgLTIwNiwxNiAr
MjA2LDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlOWF0dHJpYnV0
ZUVbXTsgfQogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxhdHRyaWJ1dGU+JiYgaW1wbCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU2F0dHJpYnV0ZT4oZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBhdHRyaWJ1dGUmIGltcGwpCi17Ci0g
ICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTYXR0cmlidXRlPihn
bG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxF
KEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBv
aW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExB
VEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN2F0dHJpYnV0ZUBXZWJDb3JlQEA2QkAiKSk7
CiAjZWxzZQpAQCAtMjMyLDcgKzIyNSwxMiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGF0dHJpYnV0ZSYgaQogICAg
IC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBp
bnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQ
b2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3Jl
YXRlTmV3V3JhcHBlcjxKU2F0dHJpYnV0ZSwgYXR0cmlidXRlPihnbG9iYWxPYmplY3QsIGltcGwp
OworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTYXR0cmlidXRlPihnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGF0dHJpYnV0ZSYgaW1wbCkK
K3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIAogYXR0
cmlidXRlKiBKU2F0dHJpYnV0ZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5
LmNwcAppbmRleCA2OTU2ZGQ0MDI5MTczNzVjZDAxMTU2MmY0MzA0MjhjODE5NWU4NDM4Li5hMmQ3
ZjU0ZTMxN2FjYThhZWJhNjkzZmI1NWYzMWQxMDg4NDQ5MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCkBAIC0x
NTYsMTMgKzE1Niw2IEBAIHZvaWQgSlNyZWFkb25seU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIAogSlNDOjpKU1ZhbHVlIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8cmVhZG9ubHk+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3Jh
cHBlcjxKU3JlYWRvbmx5PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIHJlYWRvbmx5JiBpbXBsKQotewotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4
aXN0aW5nV3JhcHBlcjxKU3JlYWRvbmx5PihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogI2lmIENPTVBJTEVSKENMQU5HKQogICAgIC8vIElmIHlvdSBoaXQgdGhp
cyBmYWlsdXJlIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbiBoYXMgdGhlIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUKICAgICAvLyBhdHRyaWJ1dGUuIFlvdSBzaG91bGQgcmVtb3ZlIHRoYXQgYXR0
cmlidXRlLiBJZiB0aGUgY2xhc3MgaGFzIHN1YmNsYXNzZXMKQEAgLTE3MCw3ICsxNjMsMTIgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCByZWFkb25seSYgaW0KICAgICAvLyBhdHRyaWJ1dGUgdG8gcmVhZG9ubHkuCiAg
ICAgc3RhdGljX2Fzc2VydCghX19pc19wb2x5bW9ycGhpYyhyZWFkb25seSksICJyZWFkb25seSBp
cyBwb2x5bW9ycGhpYyBidXQgdGhlIElETCBjbGFpbXMgaXQgaXMgbm90Iik7CiAjZW5kaWYKLSAg
ICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU3JlYWRvbmx5LCByZWFkb25seT4oZ2xvYmFsT2Jq
ZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU3JlYWRvbmx5PihnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHJlYWRvbmx5
JiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwog
fQogCiByZWFkb25seSogSlNyZWFkb25seTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279243</attachid>
            <date>2016-05-18 06:43:43 -0700</date>
            <delta_ts>2016-05-18 23:56:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157835-20160518154440.patch</filename>
            <type>text/plain</type>
            <size>87810</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdkMjYzYWZjYzA0YWE0
ZjVmYWQ0MmMyNDg5MGQ3ZTcxMTM2NDUyNy4uMzZmM2NiZGZlZWMxYzAyMjkxMGZlMTRjYjY0ODNj
OGIxMTNlMTA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxNi0wNS0xOCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlZmFj
dG9yIHRvSlMgZnVuY3Rpb25zIHRvIHVzZSB0b0pTTmV3bHlDcmVhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc4MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZpbmcgY2hlY2tzIGdlbmVyYXRl
ZCBieSBiaW5kaW5nIGdlbmVyYXRvciBmcm9tIHRvSlMgdG8gdG9KU05ld2x5Q3JlYXRlZC4KKyAg
ICAgICAgQ2hhbmdpbmcgd3JhcCB0ZW1wbGF0ZSBmdW5jdGlvbiB0byB1c2UgdG9KU05ld2x5Q3Jl
YXRlZCBmdW5jdGlvbi4KKyAgICAgICAgVGhpcyBhbGxvd3MgRE9NQ2xhc3MgdG9KUygpIHRvIGJl
IGVxdWl2YWxlbnQgdG8gd3JhcCB0ZW1wbGF0ZSBmdW5jdGlvbi4KKworICAgICAgICBSZWZhY3Rv
cmVkIGN1c3RvbSBiaW5kaW5nIGNvZGUgdG8gdGFrZSBiZW5lZml0IG9mIHRoaXMuCisKKyAgICAg
ICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
QW5pbWF0aW9uVGltZWxpbmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5
Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1
bGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp3cmFwKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWREb2N1bWVudFdyYXBwZXIp
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MVGVtcGxhdGVFbGVtZW50Ojpjb250ZW50KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQkN1cnNvckN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uaDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHUGF0aFNlZ0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTERvY3VtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0
ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3Bw
OgorCiAyMDE2LTA1LTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgdG8gaGl0dGVzdGluZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQW5pbWF0aW9uVGltZWxpbmVDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBbmltYXRpb25UaW1lbGluZUN1c3Rv
bS5jcHAKaW5kZXggMGFmMTBiYzZjZjM2OTQyNjkyOGYwNjI3ZTc3MThiMWU5NWRkYTUzZC4uYzY1
OTNlNDc2MjYwYWMzNGQyMThkMmYwZGRmZjQ1Nzc3YTBiNzg5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAK
QEAgLTM5LDE0ICszOSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBBbmltYXRpb25UaW1lbGluZSYgdmFsdWUpCitKU1ZhbHVlIHRvSlNOZXdseUNy
ZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPEFu
aW1hdGlvblRpbWVsaW5lPiYmIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0gZ2V0
Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CisgICAgaWYgKHZhbHVlLT5pc0RvY3VtZW50VGltZWxpbmUoKSkKKyAgICAg
ICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIERvY3VtZW50VGltZWxp
bmUsIFdURk1vdmUodmFsdWUpKTsKKyAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgQW5pbWF0aW9uVGltZWxpbmUsIFdURk1vdmUodmFsdWUpKTsKK30KIAotICAgIGlm
ICh2YWx1ZS5pc0RvY3VtZW50VGltZWxpbmUoKSkKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01f
V1JBUFBFUihnbG9iYWxPYmplY3QsIERvY3VtZW50VGltZWxpbmUsIHZhbHVlKTsKLSAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQW5pbWF0aW9uVGltZWxpbmUsIHZh
bHVlKTsKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBBbmltYXRpb25UaW1lbGluZSYgdmFsdWUpCit7CisgICAgcmV0dXJuIHdy
YXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAppbmRleCBi
ZGY0YmU1YmEwY2VlNmI3OWZiM2Y3NzEzNDE3ZmQwNDg0ZWE4NjE3Li5hOTMzNTg3MmEyYmU5MDEy
YWFlZGIyYjA5NDc0NTE0NzAwNGYxN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmxvYkN1c3RvbS5jcHAKQEAgLTQ4LDEyICs0OCwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBCbG9iJiBibG9iKQorSlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPEJsb2I+JiYgYmxvYikKIHsKICAgICBpZiAoaXM8RmlsZT4oYmxvYikpCi0gICAgICAg
IHJldHVybiB3cmFwPEpTRmlsZT4oZ2xvYmFsT2JqZWN0LCBkb3duY2FzdDxGaWxlPihibG9iKSk7
CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBGaWxlLCBX
VEZNb3ZlKGJsb2IpKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxKU0Jsb2I+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZShibG9iKSk7Cit9CiAKLSAgICByZXR1cm4gd3JhcDxKU0Jsb2I+KGdsb2Jh
bE9iamVjdCwgYmxvYik7CitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQmxvYiYgYmxvYikKK3sKKyAgICByZXR1cm4gd3JhcChz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCBibG9iKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU0Jsb2IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKaW5kZXggNjhkODcxMWUzMjkwNWY4M2Ey
NGMxYmZmYWZmMjJmY2ZhY2NhZjQ5Ny4uOGRjMTliNWZlMDgxMmIzZWY2N2M1ZGU5NjdkYjY2NzJi
OWNkMjhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxl
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0
b20uY3BwCkBAIC02MCw1NSArNjAsNDMgQEAgdm9pZCBKU0NTU1J1bGU6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9v
dChyb290KCZ3cmFwcGVkKCkpKTsKIH0KIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENTU1J1bGUmIHJ1bGUpCitKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPENTU1J1bGU+JiYgcnVsZSkKIHsKLSAgICBKU09iamVjdCogd3JhcHBlciA9IGdldENhY2hl
ZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBydWxlKTsKLSAgICBpZiAod3JhcHBlcikK
LSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0KLSAgICBzd2l0Y2ggKHJ1bGUudHlwZSgpKSB7Ci0g
ICAgICAgIGNhc2UgQ1NTUnVsZTo6U1RZTEVfUlVMRToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBD
UkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NTdHlsZVJ1bGUsIHJ1bGUpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUnVsZTo6TUVESUFfUlVMRToKLSAgICAg
ICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NNZWRp
YVJ1bGUsIHJ1bGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUnVsZTo6
Rk9OVF9GQUNFX1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVS
KGdsb2JhbE9iamVjdCwgQ1NTRm9udEZhY2VSdWxlLCBydWxlKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENTU1J1bGU6OlBBR0VfUlVMRToKLSAgICAgICAgICAgIHdyYXBwZXIg
PSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NQYWdlUnVsZSwgcnVsZSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NSdWxlOjpJTVBPUlRfUlVMRToKLSAg
ICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NJ
bXBvcnRSdWxlLCBydWxlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1J1
bGU6OkNIQVJTRVRfUlVMRToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQ
RVIoZ2xvYmFsT2JqZWN0LCBDU1NDaGFyc2V0UnVsZSwgcnVsZSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDU1NSdWxlOjpLRVlGUkFNRV9SVUxFOgotICAgICAgICAgICAgd3Jh
cHBlciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU0tleWZyYW1lUnVsZSwg
cnVsZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NSdWxlOjpLRVlGUkFN
RVNfUlVMRToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFs
T2JqZWN0LCBDU1NLZXlmcmFtZXNSdWxlLCBydWxlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENTU1J1bGU6OlNVUFBPUlRTX1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyID0g
Q1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTU3VwcG9ydHNSdWxlLCBydWxlKTsK
LSAgICAgICAgICAgIGJyZWFrOworICAgIHN3aXRjaCAocnVsZS0+dHlwZSgpKSB7CisgICAgY2Fz
ZSBDU1NSdWxlOjpTVFlMRV9SVUxFOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVS
KGdsb2JhbE9iamVjdCwgQ1NTU3R5bGVSdWxlLCBXVEZNb3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENT
U1J1bGU6Ok1FRElBX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBDU1NNZWRpYVJ1bGUsIFdURk1vdmUocnVsZSkpOworICAgIGNhc2UgQ1NTUnVs
ZTo6Rk9OVF9GQUNFX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBDU1NGb250RmFjZVJ1bGUsIFdURk1vdmUocnVsZSkpOworICAgIGNhc2UgQ1NT
UnVsZTo6UEFHRV9SVUxFOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgQ1NTUGFnZVJ1bGUsIFdURk1vdmUocnVsZSkpOworICAgIGNhc2UgQ1NTUnVsZTo6
SU1QT1JUX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2Jq
ZWN0LCBDU1NJbXBvcnRSdWxlLCBXVEZNb3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENTU1J1bGU6OkNI
QVJTRVRfUlVMRToKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmpl
Y3QsIENTU0NoYXJzZXRSdWxlLCBXVEZNb3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENTU1J1bGU6OktF
WUZSQU1FX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2Jq
ZWN0LCBDU1NLZXlmcmFtZVJ1bGUsIFdURk1vdmUocnVsZSkpOworICAgIGNhc2UgQ1NTUnVsZTo6
S0VZRlJBTUVTX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFs
T2JqZWN0LCBDU1NLZXlmcmFtZXNSdWxlLCBXVEZNb3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENTU1J1
bGU6OlNVUFBPUlRTX1JVTEU6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBDU1NTdXBwb3J0c1J1bGUsIFdURk1vdmUocnVsZSkpOwogI2lmIEVOQUJMRShD
U1NfREVWSUNFX0FEQVBUQVRJT04pCi0gICAgICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1ZJRVdQ
T1JUX1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgV2ViS2l0Q1NTVmlld3BvcnRSdWxlLCBydWxlKTsKLSAgICAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1ZJRVdQT1JUX1JVTEU6CisgICAgICAgIHJldHVy
biBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUs
IFdURk1vdmUocnVsZSkpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAg
ICBjYXNlIENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRToKLSAgICAgICAgICAgIHdyYXBwZXIg
PSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBXZWJLaXRDU1NSZWdpb25SdWxlLCBy
dWxlKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1JFR0lP
Tl9SVUxFOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwg
V2ViS2l0Q1NTUmVnaW9uUnVsZSwgV1RGTW92ZShydWxlKSk7CiAjZW5kaWYKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2Jq
ZWN0LCBDU1NSdWxlLCBydWxlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gQ1JFQVRF
X0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTUnVsZSwgV1RGTW92ZShydWxlKSk7CiAgICAg
fQorfQogCi0gICAgcmV0dXJuIHdyYXBwZXI7CitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTUnVsZSYgb2JqZWN0KQorewor
ICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTVmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NW
YWx1ZUN1c3RvbS5jcHAKaW5kZXggOTM0NTU0NjJjODA2MzdmYTkyNDg0MzYyZDY3ODY3OTgzZWVj
M2I2OC4uNDNiMTM2ZjBhNmZkMjY1NmVhYjhhOTFiOGNlZjg3MmYwN2IyM2MxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKQEAgLTY0LDcg
KzY0LDI0IEBAIHZvaWQgSlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKICAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzQ1NTVmFsdWUtPndyYXBwZWQoKSwganNDU1NWYWx1ZSk7CiB9CiAKLUpTVmFsdWUgdG9K
UyhFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDU1NWYWx1ZSYg
dmFsdWUpCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPENTU1ZhbHVlPiYmIHZhbHVlKQoreworICAgIGlmICh2
YWx1ZS0+aXNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSgpKQorICAgICAgICByZXR1cm4gQ1JFQVRF
X0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUsIFdURk1v
dmUodmFsdWUpKTsKKyAgICBpZiAodmFsdWUtPmlzV2ViS2l0Q1NTRmlsdGVyVmFsdWUoKSkKKyAg
ICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFdlYktpdENTU0Zp
bHRlclZhbHVlLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgp
KQorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTVmFs
dWVMaXN0LCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgaWYgKHZhbHVlLT5pc1NWR1BhaW50KCkpCisg
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYWludCwg
V1RGTW92ZSh2YWx1ZSkpOworICAgIGlmICh2YWx1ZS0+aXNTVkdDb2xvcigpKQorICAgICAgICBy
ZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHQ29sb3IsIFdURk1vdmUo
dmFsdWUpKTsKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU1ByaW1pdGl2ZVZhbHVlLCBX
VEZNb3ZlKHZhbHVlKSk7CisgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmpl
Y3QsIENTU1ZhbHVlLCBXVEZNb3ZlKHZhbHVlKSk7Cit9CisKK0pTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgLy8gU2NyaXB0cyBzaG91bGQgb25seSBldmVyIHNlZSBjbG9uZWQgQ1NTVmFs
dWVzLCBuZXZlciB0aGUgaW50ZXJuYWwgb25lcy4KICAgICBBU1NFUlQodmFsdWUuaXNDU1NPTVNh
ZmUoKSk7CkBAIC03MywyNyArOTAsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTVmFsdWUmIHZhbHVlKQogICAgIGlmICghdmFs
dWUuaXNDU1NPTVNhZmUoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCi0gICAgSlNPYmpl
Y3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgdmFs
dWUpOwotCi0gICAgaWYgKHdyYXBwZXIpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwotCi0gICAg
aWYgKHZhbHVlLmlzV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUoKSkKLSAgICAgICAgd3JhcHBlciA9
IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
LCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAodmFsdWUuaXNXZWJLaXRDU1NGaWx0ZXJWYWx1ZSgpKQot
ICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgV2ViS2l0
Q1NTRmlsdGVyVmFsdWUsIHZhbHVlKTsKLSAgICBlbHNlIGlmICh2YWx1ZS5pc1ZhbHVlTGlzdCgp
KQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NT
VmFsdWVMaXN0LCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAodmFsdWUuaXNTVkdQYWludCgpKQotICAg
ICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGFpbnQs
IHZhbHVlKTsKLSAgICBlbHNlIGlmICh2YWx1ZS5pc1NWR0NvbG9yKCkpCi0gICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdDb2xvciwgdmFsdWUpOwot
ICAgIGVsc2UgaWYgKHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgd3JhcHBlciA9
IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU1ByaW1pdGl2ZVZhbHVlLCB2YWx1
ZSk7Ci0gICAgZWxzZQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgQ1NTVmFsdWUsIHZhbHVlKTsKLQotICAgIHJldHVybiB3cmFwcGVyOworICAgIHJl
dHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMjBlMjhhNTUyZGJlNDk5
OTJiNDViYjQ2NjFlMzMzOGY2ZDFjNTdkYi4uZmU4ZTE1NGI5NDI4ZjRhNThmNmUxYWVjOGM5OGQw
MmJmN2E5NGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC00NywxNyArNDcsMjIg
QEAgdm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KHdy
YXBwZWQoKS5jYW52YXMoKSkpOwogfQogCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQmIG9iamVjdCkKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ+JiYgb2JqZWN0KQogewogI2lmIEVOQUJMRShXRUJHTCkKICAgICBpZiAoaXM8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0PihvYmplY3QpKQotICAgICAgICByZXR1cm4gd3JhcDxKU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dD4oZ2xvYmFsT2JqZWN0LCBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ+KG9iamVjdCkpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgV2ViR0xSZW5kZXJpbmdDb250ZXh0LCBXVEZNb3ZlKG9iamVjdCkpOwogI2lmIEVOQUJM
RShXRUJHTDIpCiAgICAgaWYgKGlzPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KG9iamVjdCkpCi0g
ICAgICAgIHJldHVybiB3cmFwPEpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oZ2xvYmFsT2JqZWN0
LCBkb3duY2FzdDxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PihvYmplY3QpKTsKKyAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQsIFdURk1vdmUob2JqZWN0KSk7CiAjZW5kaWYKICNlbmRpZgotICAgIHJldHVybiB3cmFwPEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihnbG9iYWxPYmplY3QsIGRvd25jYXN0PENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRD4ob2JqZWN0KSk7CisgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBF
UihnbG9iYWxPYmplY3QsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgV1RGTW92ZShvYmplY3Qp
KTsKK30KKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIG9iamVjdCkKK3sKKyAgICBy
ZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmlu
ZGV4IGRlOGViZTZhZTJiZDU3M2ViN2ZkMjAyZDQ2MTllMjNjZTViN2E4YjguLmYyOTU0OGI5YTQ3
MWEzN2JkOTI2OGVhYWU1NjQwMGNjYjE3NGJjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCkBAIC0xNjUsOCArMTY1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
RE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gdm9pZCBjYWNoZVdyYXBwZXIoRE9NV3Jh
cHBlclcKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+
IHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiwgRE9NQ2xhc3MqLCBXcmFwcGVy
Q2xhc3MqKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xh
c3M+IFdyYXBwZXJDbGFzcyogY3JlYXRlV3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxE
T01DbGFzcz4mJik7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUg
RE9NQ2xhc3M+IEpTQzo6SlNWYWx1ZSB3cmFwKEpTRE9NR2xvYmFsT2JqZWN0KiwgRE9NQ2xhc3Mm
KTsKLXRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IEpT
Qzo6SlNWYWx1ZSBnZXRFeGlzdGluZ1dyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqLCBET01DbGFz
cyYpOwordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+IEpTQzo6SlNWYWx1ZSB3cmFwKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBET01DbGFzcyYpOwogdGVtcGxhdGU8dHlw
ZW5hbWUgV3JhcHBlckNsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4gSlNDOjpKU1ZhbHVlIGNyZWF0
ZU5ld1dyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqLCBSZWY8RE9NQ2xhc3M+JiYpOwogCiB2b2lk
IGFkZEltcHVyZVByb3BlcnR5KGNvbnN0IEF0b21pY1N0cmluZyYpOwpAQCAtNDY2LDE2ICs0NjUs
MTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4g
aW5saW5lIFdyYXBwZXJDbGFzcyogY3JlYXRlV3IKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4gaW5saW5l
IEpTQzo6SlNWYWx1ZSB3cmFwKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNs
YXNzJiBkb21PYmplY3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6
SlNWYWx1ZSB3cmFwKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRE9NQ2xhc3MmIGRvbU9iamVjdCkKIHsKICAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBkb21PYmplY3QpKQog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXcmFwcGVy
Q2xhc3MsIERPTUNsYXNzPihnbG9iYWxPYmplY3QsIGRvbU9iamVjdCk7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpT
VmFsdWUgZ2V0RXhpc3RpbmdXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IERPTUNsYXNzJiBkb21PYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldENhY2hlZFdyYXBwZXIoZ2xv
YmFsT2JqZWN0LT53b3JsZCgpLCBkb21PYmplY3QpOworICAgIHJldHVybiB0b0pTTmV3bHlDcmVh
dGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIFJlZjxET01DbGFzcz4oZG9tT2JqZWN0KSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IGlubGlu
ZSBKU0M6OkpTVmFsdWUgY3JlYXRlTmV3V3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8RE9NQ2xhc3M+JiYgZG9tT2JqZWN0KQpAQCAtNTIwLDcgKzUxNCw3IEBAIGlu
bGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IEpTQzo6anNOdWxsKCk7Ci0gICAgaWYgKEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGlu
Z1dyYXBwZXI8SlNDOjpKU0FycmF5QnVmZmVyPihnbG9iYWxPYmplY3QsICpidWZmZXIpKQorICAg
IGlmIChKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3Qt
PndvcmxkKCksICpidWZmZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgLy8gVGhl
IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSBmdW5jdGlvbiB3aWxsIHJlZ2lzdGVyIHRoZSB3cmFwcGVy
IGluIGZpbmlzaENyZWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcAppbmRleCBmMTIxNDg4YjZlOTcxMzY3MGU0MjMyOTFjYWRhMmUyODA1
NTFiZDExLi4xYzk0ZGVkOTE1OTNlNmFmMTdiZTY0YzQzNTRhOGU3MWZlNWE3ZGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtNzAs
MTMgKzcwLDYgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGNyZWF0ZU5ld0RvY3VtZW50V3JhcHBl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamUKICAgICByZXR1cm4gd3JhcHBlcjsK
IH0KIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIERvY3VtZW50JiBkb2N1bWVudCkKLXsKLSAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGNhY2hlZERvY3VtZW50V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmplY3QsIGRvY3VtZW50
KSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld0RvY3VtZW50
V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmplY3QsIGRvY3VtZW50KTsKLX0KLQogSlNPYmplY3Qq
IGNhY2hlZERvY3VtZW50V3JhcHBlcihFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC53b3JsZCgpLCBkb2N1bWVudCkp
CkBAIC0xMTAsNiArMTAzLDEzIEBAIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8CiAgICAgcmV0dXJu
IGNyZWF0ZU5ld0RvY3VtZW50V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUo
ZG9jdW1lbnQpKTsKIH0KIAorSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAo
YXV0byogd3JhcHBlciA9IGNhY2hlZERvY3VtZW50V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmpl
Y3QsIGRvY3VtZW50KSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHRvSlNO
ZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgUmVmPERvY3VtZW50Pihkb2N1bWVudCkp
OworfQorCiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OnByZXBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwCmluZGV4IGMyMzE3ZmMyYjlm
MjBiMjlkN2ZmMzNjYjdiOWEwZGFmYzllNjk2NmQuLjMxZTc5NWRmYjViZjlkNDhlY2JjZmExZGQz
MGQ3OTA3ZTE5ZDJiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcApAQCAtNTIsMjYgKzUyLDE4IEBAIEpTVmFs
dWUgSlNEb2N1bWVudEZyYWdtZW50OjphcHBlbmQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGNyZWF0ZU5ld0Rv
Y3VtZW50RnJhZ21lbnRXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJl
ZjxEb2N1bWVudEZyYWdtZW50PiYmIGltcGwpCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPERvY3VtZW50RnJh
Z21lbnQ+JiYgaW1wbCkKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoaW1wbC0+
aXNTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoJmdsb2Jh
bE9iamVjdCwgU2hhZG93Um9vdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIHJldHVybiBDUkVB
VEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTaGFkb3dSb290LCBXVEZNb3ZlKGltcGwpKTsK
ICNlbmRpZgotICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTRG9jdW1lbnRGcmFnbWVudD4o
Jmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTVmFsdWUgdG9KU05ld2x5Q3Jl
YXRlZChFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RG9j
dW1lbnRGcmFnbWVudD4mJiBpbXBsKQotewotICAgIHJldHVybiBjcmVhdGVOZXdEb2N1bWVudEZy
YWdtZW50V3JhcHBlcigqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICByZXR1cm4g
Y3JlYXRlTmV3V3JhcHBlcjxKU0RvY3VtZW50RnJhZ21lbnQ+KGdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7CiB9CiAKLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBEb2N1bWVudEZyYWdtZW50JiBpbXBsKQorSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERvY3VtZW50
RnJhZ21lbnQmIGltcGwpCiB7Ci0gICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdX
cmFwcGVyPEpTRG9jdW1lbnRGcmFnbWVudD4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLQotICAgIHJldHVybiBjcmVhdGVOZXdEb2N1bWVudEZyYWdtZW50V3Jh
cHBlcigqZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAppbmRleCBkODI4NWQ3YzdlNDIzZjZk
NzY5NTBjMjI3MjEyYTI4ZDg3YjcyNzVjLi44NDExOWVlOGNmNzU4Zjk2NTY4ZjVmN2FmYTJhOTI4
MWM1MTI5NDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9t
LmNwcApAQCAtNTEsMzEgKzUxLDIwIEBAIEpTVmFsdWUgSlNFdmVudDo6Y2xpcGJvYXJkRGF0YShF
eGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiAjZGVmaW5lIFRSWV9UT19XUkFQX1dJVEhfSU5URVJG
QUNFKGludGVyZmFjZU5hbWUpIFwKICAgICBjYXNlIGludGVyZmFjZU5hbWUjI0ludGVyZmFjZVR5
cGU6IFwKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUigmZ2xvYmFsT2JqZWN0LCBp
bnRlcmZhY2VOYW1lLCBXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9N
X1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBpbnRlcmZhY2VOYW1lLCBXVEZNb3ZlKGV2ZW50KSk7CiAK
LXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjcmVhdGVOZXdFdmVudFdyYXBwZXIoSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEV2ZW50PiYmIGV2ZW50KQorSlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZjxFdmVudD4mJiBldmVudCkKIHsKICAgICBzd2l0Y2ggKGV2ZW50LT5ldmVudEludGVyZmFjZSgp
KSB7CiAgICAgICAgIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKFRSWV9UT19XUkFQX1dJ
VEhfSU5URVJGQUNFKQogICAgIH0KIAotICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoJmds
b2JhbE9iamVjdCwgRXZlbnQsIFdURk1vdmUoZXZlbnQpKTsKLX0KLQotSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2ZW50JiBldmVudCkK
LXsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QtPnZtKCkpOwotCi0gICAgaWYg
KGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwg
ZXZlbnQpKQotICAgICAgICByZXR1cm4gd3JhcHBlcjsKLQotICAgIHJldHVybiBjcmVhdGVOZXdF
dmVudFdyYXBwZXIoKmdsb2JhbE9iamVjdCwgZXZlbnQpOworICAgIHJldHVybiBDUkVBVEVfRE9N
X1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBFdmVudCwgV1RGTW92ZShldmVudCkpOwogfQogCi0KLUpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8RXZlbnQ+JiYgZXZlbnQpCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZlbnQmIGV2ZW50KQogewot
ICAgIHJldHVybiBjcmVhdGVOZXdFdmVudFdyYXBwZXIoKmdsb2JhbE9iamVjdCwgV1RGTW92ZShl
dmVudCkpOworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGV2ZW50KTsKIH0K
IAogI3VuZGVmIFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IGI4NDRl
MzNiMTQ3NDAwZjY0YjgyMzExMzgzNmIyZjNjMjNjNWY3MWEuLmFjZWY2ZDhiYmVlMWVhYWNmMDRk
NzY4ZmRjOGJiMGQ0MDFmYTZlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC01MywyMyArNTMsMjUgQEAgYm9v
bCBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEhUTUxDb2xsZWN0
aW9uJiBjb2xsZWN0aW9uKQorSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxIVE1MQ29sbGVjdGlvbj4mJiBjb2xs
ZWN0aW9uKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0gZ2V0Q2FjaGVkV3JhcHBlcihnbG9i
YWxPYmplY3QtPndvcmxkKCksIGNvbGxlY3Rpb24pKQotICAgICAgICByZXR1cm4gd3JhcHBlcjsK
LQotICAgIHN3aXRjaCAoY29sbGVjdGlvbi50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGNvbGxlY3Rp
b24tPnR5cGUoKSkgewogICAgIGNhc2UgRm9ybUNvbnRyb2xzOgotICAgICAgICByZXR1cm4gQ1JF
QVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24s
IGNvbGxlY3Rpb24pOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIFdURk1vdmUoY29sbGVjdGlvbikpOwog
ICAgIGNhc2UgU2VsZWN0T3B0aW9uczoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBF
UihnbG9iYWxPYmplY3QsIEhUTUxPcHRpb25zQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7CisgICAg
ICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24sIFdURk1vdmUoY29sbGVjdGlvbikpOwogICAgIGNhc2UgRG9jQWxsOgotICAgICAg
ICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgSFRNTEFsbENvbGxlY3Rp
b24sIGNvbGxlY3Rpb24pOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgSFRNTEFsbENvbGxlY3Rpb24sIFdURk1vdmUoY29sbGVjdGlvbikpOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiBDUkVBVEVfRE9NX1dS
QVBQRVIoZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7CisgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEhUTUxDb2xsZWN0aW9uLCBXVEZN
b3ZlKGNvbGxlY3Rpb24pKTsKK30KKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9u
KQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGNvbGxlY3Rpb24pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNWNhMGRkZWQ3Zjg5MTFmNjU0
YWEzODcwMTA1OTdhNDUxN2MxNWRmZi4uMjYzOTEzYzg1ZDQyMTg4MzljZGY1MjUwNDUwZjYwNDBk
YmU2MmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9j
dW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERv
Y3VtZW50Q3VzdG9tLmNwcApAQCAtNTMsMTIgKzUzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGNy
ZWF0ZU5ld0hUTUxEb2N1bWVudFdyYXBwZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEhUTUxEb2N1bWVudD4mJiBwYXNzZWREb2N1bWVudCkK
K0pTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8SFRNTERvY3VtZW50PiYmIHBhc3NlZERvY3VtZW50KQog
ewogICAgIGF1dG8mIGRvY3VtZW50ID0gcGFzc2VkRG9jdW1lbnQuZ2V0KCk7Ci0gICAgSlNPYmpl
Y3QqIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoJmdsb2JhbE9iamVjdCwgSFRNTERvY3Vt
ZW50LCBXVEZNb3ZlKHBhc3NlZERvY3VtZW50KSk7CisgICAgSlNPYmplY3QqIHdyYXBwZXIgPSBj
cmVhdGVXcmFwcGVyPEpTSFRNTERvY3VtZW50PihnbG9iYWxPYmplY3QsIFdURk1vdmUocGFzc2Vk
RG9jdW1lbnQpKTsKIAotICAgIHJlcG9ydE1lbW9yeUZvckRvY3VtZW50SWZGcmFtZWxlc3Moc3Rh
dGUsIGRvY3VtZW50KTsKKyAgICByZXBvcnRNZW1vcnlGb3JEb2N1bWVudElmRnJhbWVsZXNzKCpz
dGF0ZSwgZG9jdW1lbnQpOwogCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CkBAIC02NywxMiArNjcs
NyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSFRNTERvY3VtZW50JiBkbwogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0g
Y2FjaGVkRG9jdW1lbnRXcmFwcGVyKCpzdGF0ZSwgKmdsb2JhbE9iamVjdCwgZG9jdW1lbnQpKQog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gY3JlYXRlTmV3SFRNTERvY3VtZW50
V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmplY3QsIGRvY3VtZW50KTsKLX0KLQotSlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxIVE1MRG9jdW1lbnQ+JiYgZG9jdW1lbnQpCi17Ci0gICAgcmV0dXJuIGNy
ZWF0ZU5ld0hUTUxEb2N1bWVudFdyYXBwZXIoKnN0YXRlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9i
amVjdCwgUmVmPEhUTUxEb2N1bWVudD4oZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBKU0hUTUxEb2N1
bWVudDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVu
dEN1c3RvbS5jcHAKaW5kZXggZGMzNDJjZDRlNzg2NjMyMTVjNWU4MzYzYTgzM2Q3YWEyNTAzZWU0
YS4uMTA0ZGFjNDhmM2NkNWYzNGNkOGQ1MGM3MmQ3YWMzZWRkZjhjYTA5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRD
dXN0b20uY3BwCkBAIC00NSwxMiArNDUsOCBAQCBKU1ZhbHVlIEpTSFRNTFRlbXBsYXRlRWxlbWVu
dDo6Y29udGVudChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewogICAgIEpTTG9ja0hvbGRlciBs
b2NrKCZzdGF0ZSk7CiAKLSAgICBhdXRvJiBjb250ZW50ID0gd3JhcHBlZCgpLmNvbnRlbnQoKTsK
KyAgICBhdXRvIHdyYXBwZXIgPSB3cmFwKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQo
KS5jb250ZW50KCkpOwogCi0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVy
KGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCBjb250ZW50KSkKLSAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7Ci0KLSAgICBhdXRvKiB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVj
dCgpLCBEb2N1bWVudEZyYWdtZW50LCBjb250ZW50KTsKICAgICBQcml2YXRlTmFtZSBwcm9wZXJ0
eU5hbWU7CiAgICAgY29uc3RfY2FzdDxKU0hUTUxUZW1wbGF0ZUVsZW1lbnQqPih0aGlzKS0+cHV0
RGlyZWN0KGdsb2JhbE9iamVjdCgpLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHdyYXBwZXIpOwogICAg
IHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJREJDdXJzb3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJD
dXJzb3JDdXN0b20uY3BwCmluZGV4IDQ5YTg1N2IyOGY5NWE0ODE3NmI4YmU2ZmRhMjRiYWE1ZTA0
ZDUzYTEuLmJmYzE4ZjEzN2NhNjBjNjk5MGEwMTkxNjRkMTExYWMxOTI1OGVhYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQ3Vyc29yQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkN1cnNvckN1c3RvbS5jcHAKQEAgLTUy
LDEyICs1MiwxNiBAQCBKU1ZhbHVlIEpTSURCQ3Vyc29yOjpzb3VyY2UoRXhlY1N0YXRlJiBzdGF0
ZSkgY29uc3QKICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBjdXJzb3Iu
b2JqZWN0U3RvcmUoKSk7CiB9CiAKLUpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElEQkN1cnNvciYgY3Vyc29yKQorSlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPElEQkN1cnNvcj4mJiBjdXJzb3IpCiB7CiAgICAgaWYgKGlzPElEQkN1cnNv
cldpdGhWYWx1ZT4oY3Vyc29yKSkKLSAgICAgICAgcmV0dXJuIHdyYXA8SlNJREJDdXJzb3JXaXRo
VmFsdWU+KGdsb2JhbE9iamVjdCwgZG93bmNhc3Q8SURCQ3Vyc29yV2l0aFZhbHVlPihjdXJzb3Ip
KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIElEQkN1
cnNvcldpdGhWYWx1ZSwgV1RGTW92ZShjdXJzb3IpKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cjxKU0lEQkN1cnNvcj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGN1cnNvcikpOworfQogCi0gICAg
cmV0dXJuIHdyYXA8SlNJREJDdXJzb3I+KGdsb2JhbE9iamVjdCwgY3Vyc29yKTsKK0pTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIElEQkN1cnNvciYgY3Vyc29yKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxP
YmplY3QsIGN1cnNvcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAppbmRleCA3ZDU3MjVk
NWM5MmQ3NTU0MjdhYjQyMjM2NDkzYWQ2MzZhYjY5YmRjLi5kZDc1MzBiNGEzYWIyYzk1NzViYmE4
OTdjYWU3OTk0OWQzYWUyOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbWFnZURhdGFDdXN0b20uY3BwCkBAIC0zNSwxOSArMzUsMjAgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEmIGltYWdlRGF0
YSkKK0pTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8SW1hZ2VEYXRhPiYmIGltYWdlRGF0YSkKIHsKLSAg
ICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3Js
ZCgpLCBpbWFnZURhdGEpKQotICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICAKLSAgICBhdXRv
KiB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhLCBp
bWFnZURhdGEpOwotICAgIElkZW50aWZpZXIgZGF0YU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJkYXRhIik7Ci0gICAgd3JhcHBlci0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGRh
dGFOYW1lLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1hZ2VEYXRhLmRhdGEoKSksIERvbnRE
ZWxldGUgfCBSZWFkT25seSk7Ci0gICAgLy8gRklYTUU6IEFkb3B0IHJlcG9ydEV4dHJhTWVtb3J5
VmlzaXRlZCwgYW5kIHN3aXRjaCB0byByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC4KLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTk1Ci0gICAgZXhl
Yy0+aGVhcCgpLT5kZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkoaW1hZ2VEYXRhLmRhdGEoKS0+
bGVuZ3RoKCkpOwotICAgIAorICAgIGF1dG8qIGRhdGEgPSBpbWFnZURhdGEtPmRhdGEoKTsKKyAg
ICBhdXRvKiB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgSW1hZ2VE
YXRhLCBXVEZNb3ZlKGltYWdlRGF0YSkpOworICAgIElkZW50aWZpZXIgZGF0YU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiZGF0YSIpOworICAgIHdyYXBwZXItPnB1dERpcmVj
dChzdGF0ZS0+dm0oKSwgZGF0YU5hbWUsIHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgZGF0YSks
IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgc3RhdGUtPmhlYXAoKS0+ZGVwcmVjYXRlZFJl
cG9ydEV4dHJhTWVtb3J5KGRhdGEtPmxlbmd0aCgpKTsKKwogICAgIHJldHVybiB3cmFwcGVyOwog
fQogCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSW1hZ2VEYXRhJiBpbWFnZURhdGEpCit7CisgICAgcmV0dXJuIHdyYXAoc3Rh
dGUsIGdsb2JhbE9iamVjdCwgaW1hZ2VEYXRhKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3Vz
dG9tLmNwcAppbmRleCBkZTQ3MWRiOTE2YTM5MzM0OGFmOGNiOTUzZGZjNTNmMmFkMTUyODBhLi5j
YWE2Y2JmMDAzMWM2MjFmZjYyNDAxMDYxNmMxOWJjYjdkOWFiYTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0
aWVzQ3VzdG9tLmNwcApAQCAtMzcsMTIgKzM3LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZWRpYVN0cmVhbUNhcGFiaWxpdGll
cyYgb2JqZWN0KQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8TWVkaWFTdHJlYW1DYXBhYmls
aXRpZXM+JiYgb2JqZWN0KQogewogICAgIGlmIChvYmplY3QuaGFzVmlkZW9Tb3VyY2UoKSkKLSAg
ICAgICAgcmV0dXJuIHdyYXA8SlNBbGxWaWRlb0NhcGFiaWxpdGllcz4oZ2xvYmFsT2JqZWN0LCBz
dGF0aWNfY2FzdDxBbGxWaWRlb0NhcGFiaWxpdGllcyY+KG9iamVjdCkpOworICAgICAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQWxsVmlkZW9DYXBhYmlsaXRpZXMs
IG9iamVjdCk7CisgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEFs
bEF1ZGlvQ2FwYWJpbGl0aWVzLCBvYmplY3QpOworfQogCi0gICAgcmV0dXJuIHdyYXA8SlNBbGxB
dWRpb0NhcGFiaWxpdGllcz4oZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxBbGxBdWRpb0NhcGFi
aWxpdGllcyY+KG9iamVjdCkpOworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzJiBvYmpl
Y3QpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlTGlzdEN1c3RvbS5oCmluZGV4IGJmM2NjZDJlMzM5NDE3NGY1MWY0MDY1ZjgyMGNlNWRh
NWNiMjJhNWEuLjZjZTNlN2I5NWJjMzMxY2IzODU1M2YwOTNkODYwNzE0N2QwZDlhZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmgKQEAgLTM1LDgg
KzM1LDggQEAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGNyZWF0ZVdyYXBwZXIoSlNET01H
bG9iYWxPYmplY3QmLCBSZWY8Tm9kZUxpc3Q+JiYpOwogCiBBTFdBWVNfSU5MSU5FIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm9kZUxpc3QmIG5vZGVMaXN0KQogewotICAgIGlmIChKU0M6OkpTVmFsdWUgZXhpc3RpbmdX
cmFwcGVyID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTTm9kZUxpc3Q+KGdsb2JhbE9iamVjdCwgbm9k
ZUxpc3QpKQotICAgICAgICByZXR1cm4gZXhpc3RpbmdXcmFwcGVyOworICAgIGlmIChhdXRvIHdy
YXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgbm9kZUxpc3Qp
KQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcigqZ2xv
YmFsT2JqZWN0LCBub2RlTGlzdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BlcmZvcm1hbmNlRW50cnlDdXN0b20uY3BwCmluZGV4IGQxODUyZTBiNWYx
YzQ1MTBiODEyNzRiMTBkMGM3NTA3ZDFlZWE4NzguLjJkNjY1YTlmZWEzZjhjNGY5NDRkODExMDkx
MDkzZTAyYjZkNGM3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcApAQCAtNDcsMjAgKzQ3LDI1IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBlcmZvcm1hbmNlRW50
cnkmIGVudHJ5KQorSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxQZXJmb3JtYW5jZUVudHJ5PiYmIGVudHJ5KQog
ewogICAgIGlmIChpczxQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nPihlbnRyeSkpCi0gICAgICAg
IHJldHVybiB3cmFwPEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZz4oZ2xvYmFsT2JqZWN0LCBk
b3duY2FzdDxQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nPihlbnRyeSkpOworICAgICAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgUGVyZm9ybWFuY2VSZXNvdXJjZVRp
bWluZywgV1RGTW92ZShlbnRyeSkpOwogCiAjaWYgRU5BQkxFKFVTRVJfVElNSU5HKQogICAgIGlm
IChpczxQZXJmb3JtYW5jZU1hcms+KGVudHJ5KSkKLSAgICAgICAgcmV0dXJuIHdyYXA8SlNQZXJm
b3JtYW5jZU1hcms+KGdsb2JhbE9iamVjdCwgZG93bmNhc3Q8UGVyZm9ybWFuY2VNYXJrPihlbnRy
eSkpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgUGVy
Zm9ybWFuY2VNYXJrLCBXVEZNb3ZlKGVudHJ5KSk7CiAKICAgICBpZiAoaXM8UGVyZm9ybWFuY2VN
ZWFzdXJlPihlbnRyeSkpCi0gICAgICAgIHJldHVybiB3cmFwPEpTUGVyZm9ybWFuY2VNZWFzdXJl
PihnbG9iYWxPYmplY3QsIGRvd25jYXN0PFBlcmZvcm1hbmNlTWVhc3VyZT4oZW50cnkpKTsKKyAg
ICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFBlcmZvcm1hbmNl
TWVhc3VyZSwgV1RGTW92ZShlbnRyeSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gd3JhcDxKU1Bl
cmZvcm1hbmNlRW50cnk+KGdsb2JhbE9iamVjdCwgZW50cnkpOworICAgIHJldHVybiBjcmVhdGVX
cmFwcGVyPEpTUGVyZm9ybWFuY2VFbnRyeT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVudHJ5KSk7
Cit9CisKK0pTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBlcmZvcm1hbmNlRW50cnkmIGVudHJ5KQoreworICAgIHJldHVy
biB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGVudHJ5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQYXRo
U2VnQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHUGF0aFNlZ0N1
c3RvbS5jcHAKaW5kZXggMGNlYWMyNTMwNGY5N2IxYzllNGEwNWJjNjBiYjY2ZThhMWUxNTczZS4u
NzYxNmMzMmU0MzE3YjkwNjM2MzMxODhlYzU2OWQ2NGUzNjdlY2IyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQYXRoU2VnQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BhdGhTZWdDdXN0b20uY3BwCkBAIC01OSw1NCAr
NTksNTYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1K
U1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U1ZHUGF0aFNlZyYgb2JqZWN0KQorSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxTVkdQYXRoU2VnPiYmIG9iamVj
dCkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2Jq
ZWN0LT53b3JsZCgpLCBvYmplY3QpKQotICAgICAgICByZXR1cm4gd3JhcHBlcjsKLQotICAgIHN3
aXRjaCAob2JqZWN0LnBhdGhTZWdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKG9iamVjdC0+cGF0aFNl
Z1R5cGUoKSkgewogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DTE9TRVBBVEg6Ci0gICAg
ICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ2xv
c2VQYXRoLCBvYmplY3QpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgU1ZHUGF0aFNlZ0Nsb3NlUGF0aCwgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNl
IFNWR1BhdGhTZWc6OlBBVEhTRUdfTU9WRVRPX0FCUzoKLSAgICAgICAgcmV0dXJuIENSRUFURV9E
T01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdNb3ZldG9BYnMsIG9iamVjdCk7Cisg
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2Vn
TW92ZXRvQWJzLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNF
R19NT1ZFVE9fUkVMOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgU1ZHUGF0aFNlZ01vdmV0b1JlbCwgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFU
RV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdNb3ZldG9SZWwsIFdURk1vdmUo
b2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19BQlM6Ci0gICAg
ICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTGlu
ZXRvQWJzLCBvYmplY3QpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgU1ZHUGF0aFNlZ0xpbmV0b0FicywgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNl
IFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX1JFTDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9E
T01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdMaW5ldG9SZWwsIG9iamVjdCk7Cisg
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2Vn
TGluZXRvUmVsLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNF
R19DVVJWRVRPX0NVQklDX0FCUzoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihn
bG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMsIG9iamVjdCk7CisgICAgICAg
IHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0
b0N1YmljQWJzLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNF
R19DVVJWRVRPX0NVQklDX1JFTDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihn
bG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwsIG9iamVjdCk7CisgICAgICAg
IHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0
b0N1YmljUmVsLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNF
R19DVVJWRVRPX1FVQURSQVRJQ19BQlM6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficywgb2JqZWN0KTsK
KyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljQWJzLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0
aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUw6Ci0gICAgICAgIHJldHVybiBDUkVB
VEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Jl
bCwgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmpl
Y3QsIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsLCBXVEZNb3ZlKG9iamVjdCkpOwogICAg
IGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19BUkNfQUJTOgotICAgICAgICByZXR1cm4gQ1JFQVRF
X0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0FyY0Ficywgb2JqZWN0KTsKKyAg
ICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdB
cmNBYnMsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0FS
Q19SRUw6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBT
VkdQYXRoU2VnQXJjUmVsLCBvYmplY3QpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQ
UEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0FyY1JlbCwgV1RGTW92ZShvYmplY3QpKTsKICAg
ICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTOgotICAgICAg
ICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0xpbmV0
b0hvcml6b250YWxBYnMsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicywgV1RGTW92ZShv
YmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX0hPUklaT05UQUxf
UkVMOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZH
UGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVB
VEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJl
bCwgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRP
X1ZFUlRJQ0FMX0FCUzoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxP
YmplY3QsIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicywgb2JqZWN0KTsKKyAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdMaW5ldG9WZXJ0
aWNhbEFicywgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdf
TElORVRPX1ZFUlRJQ0FMX1JFTDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihn
bG9iYWxPYmplY3QsIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCwgb2JqZWN0KTsKKyAgICAg
ICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdMaW5l
dG9WZXJ0aWNhbFJlbCwgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBB
VEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RP
TV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicywg
b2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3Qs
IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMsIFdURk1vdmUob2JqZWN0KSk7CiAgICAg
Y2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX1JFTDoKLSAgICAg
ICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNTbW9vdGhSZWwsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dS
QVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsLCBXVEZN
b3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURS
QVRJQ19TTU9PVEhfQUJTOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMsIG9iamVjdCk7Cisg
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpY1Ntb290aEFicywgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNW
R1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTDoKLSAgICAgICAg
cmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljU21vb3RoUmVsLCBvYmplY3QpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9X
UkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWws
IFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX1VOS05PV046
CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxP
YmplY3QsIFNWR1BhdGhTZWcsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dS
QVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIH0K
IH0KIAorSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFNWR1BhdGhTZWcmIG9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0
ZSwgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAppbmRleCBhNzNiZjQ5ZjM0YjI1YjA3
MGJiYzMxMThkNjkwZTI1ZjE0ZDczYWFhLi5mNTEzMzFiOWE1YWNiNjYxMDk2MDVlODhkNzMwOWRm
OGFjODRiODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxl
U2hlZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVT
aGVldEN1c3RvbS5jcHAKQEAgLTM1LDEzICszNSwxNiBAQCB2b2lkIEpTU3R5bGVTaGVldDo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKLUpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5
bGVTaGVldCYgc3R5bGVTaGVldCkKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFN0eWxlU2hl
ZXQ+JiYgc3R5bGVTaGVldCkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hlZFdy
YXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBzdHlsZVNoZWV0KSkKLSAgICAgICAgcmV0dXJu
IHdyYXBwZXI7Ci0gICAgaWYgKHN0eWxlU2hlZXQuaXNDU1NTdHlsZVNoZWV0KCkpCi0gICAgICAg
IHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NTdHlsZVNoZWV0LCBz
dHlsZVNoZWV0KTsKLSAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwg
U3R5bGVTaGVldCwgc3R5bGVTaGVldCk7CisgICAgaWYgKHN0eWxlU2hlZXQtPmlzQ1NTU3R5bGVT
aGVldCgpKQorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwg
Q1NTU3R5bGVTaGVldCwgV1RGTW92ZShzdHlsZVNoZWV0KSk7CisgICAgcmV0dXJuIENSRUFURV9E
T01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQsIFdURk1vdmUoc3R5bGVTaGVldCkp
OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQmIHN0eWxlc2hlZXQpCit7CisgICAg
cmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgc3R5bGVzaGVldCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRDdXN0
b20uY3BwCmluZGV4IDM2NDJkYWE3MWJkYzNkNTFkM2ZjYjgwZTY3Y2YwZGE3Y2Y1MDgxNjMuLjIz
MzIwZjg0OGMyM2M4MzVmY2VhYjViYjFmMjZhNWZmNjNlN2JlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUZXh0Q3VzdG9tLmNwcApAQCAtMzIsMjMgKzMyLDE2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotc3RhdGljIGlubGluZSBK
U1ZhbHVlIGNyZWF0ZU5ld1RleHRXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXh0PiYmIHRleHQpCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRleHQ+JiYgdGV4dCkKIHsK
ICAgICBpZiAoaXM8Q0RBVEFTZWN0aW9uPih0ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIENS
RUFURV9ET01fV1JBUFBFUigmZ2xvYmFsT2JqZWN0LCBDREFUQVNlY3Rpb24sIFdURk1vdmUodGV4
dCkpOwotICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoJmdsb2JhbE9iamVjdCwgVGV4dCwg
V1RGTW92ZSh0ZXh0KSk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFs
T2JqZWN0LCBDREFUQVNlY3Rpb24sIFdURk1vdmUodGV4dCkpOworICAgIHJldHVybiBDUkVBVEVf
RE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBUZXh0LCBXVEZNb3ZlKHRleHQpKTsKIH0KIAotSlNW
YWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
eHQmIHRleHQpCi17Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGds
b2JhbE9iamVjdC0+d29ybGQoKSwgdGV4dCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwotICAg
IHJldHVybiBjcmVhdGVOZXdUZXh0V3JhcHBlcigqZ2xvYmFsT2JqZWN0LCB0ZXh0KTsKLX0KLQot
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXh0PiYmIHRleHQpCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGV4dCYgdGV4dCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlTmV3VGV4dFdyYXBwZXIoKmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0ZXh0
KSk7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgdGV4dCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAppbmRleCBlNjE0M2FhMDFjNjQyMmQxNWQ3NjUxYTkx
YWE0YTI4Mzk0YTc1YTkwLi5lMzQ5YjRhMmYzODU2NWY0MWE0MWU3ZDY3ZTM0ZGU3MjA1YWZiZmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVD
dXN0b20uY3BwCkBAIC01OSwyNCArNTksMjYgQEAgYm9vbCBKU1RleHRUcmFja0N1ZU93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGgKICAg
ICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCh0ZXh0VHJhY2tDdWUudHJh
Y2soKSkpOwogfQogCi1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGV4dFRyYWNrQ3VlJiBjdWUpCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRleHRU
cmFja0N1ZT4mJiBjdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFw
cGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgY3VlKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7
Ci0KICAgICAvLyBUaGlzIHN3aXRjaCB3aWxsIG1ha2UgbW9yZSBzZW5zZSBvbmNlIHdlIHN1cHBv
cnQgRGF0YUN1ZQotICAgIHN3aXRjaCAoY3VlLmN1ZVR5cGUoKSkgeworICAgIHN3aXRjaCAoY3Vl
LT5jdWVUeXBlKCkpIHsKICAgICBjYXNlIFRleHRUcmFja0N1ZTo6RGF0YToKLSAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIERhdGFDdWUsIGN1ZSk7CisgICAg
ICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBEYXRhQ3VlLCBXVEZN
b3ZlKGN1ZSkpOwogICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpXZWJWVFQ6CiAgICAgY2FzZSBUZXh0
VHJhY2tDdWU6OkdlbmVyaWM6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBWVFRDdWUsIGN1ZSk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZ2xvYmFsT2JqZWN0LCBWVFRDdWUsIFdURk1vdmUoY3VlKSk7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAg
ICB9CiB9CiAKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXh0VHJhY2tDdWUmIGN1ZSkKK3sKKyAgICByZXR1cm4gd3JhcChz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCBjdWUpOworfQorCiB2b2lkIEpTVGV4dFRyYWNrQ3VlOjp2aXNp
dEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBpZiAoVGV4
dFRyYWNrKiB0ZXh0VHJhY2sgPSB3cmFwcGVkKCkudHJhY2soKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKaW5kZXggODY1ZTIwZDA2Mzg0NDY5MzczYzNh
ZGJhOTBhNzFmNjdlNDRmMmQzNy4uOTIxYmNiNzdkNzJjZDc2OGM4YzI2MDA1Y2YwYzgxZTQyYWE1
NWQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAK
QEAgLTUzLDMwICs1MywyMiBAQCBUcmFja0Jhc2UqIHRvVHJhY2soSlNWYWx1ZSB2YWx1ZSkKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUcmFja0Jhc2UmIHRyYWNrKQorSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUcmFja0Jhc2UmIHRyYWNrKQogewogICAgIHN3aXRjaCAodHJhY2sudHlw
ZSgpKSB7CiAgICAgY2FzZSBUcmFja0Jhc2U6OkJhc2VUcmFjazoKICAgICAgICAgLy8gVGhpcyBz
aG91bGQgbmV2ZXIgaGFwcGVuLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIAotICAgIGNhc2UgVHJhY2tCYXNlOjpBdWRpb1RyYWNrOgotICAg
ICAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53
b3JsZCgpLCBkb3duY2FzdDxBdWRpb1RyYWNrPih0cmFjaykpKQotICAgICAgICAgICAgcmV0dXJu
IHdyYXBwZXI7Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0
LCBBdWRpb1RyYWNrLCB0cmFjayk7CiAKKyAgICBjYXNlIFRyYWNrQmFzZTo6QXVkaW9UcmFjazoK
KyAgICAgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgZG93bmNhc3Q8QXVkaW9U
cmFjaz4odHJhY2spKTsKICAgICBjYXNlIFRyYWNrQmFzZTo6VmlkZW9UcmFjazoKLSAgICAgICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQo
KSwgZG93bmNhc3Q8VmlkZW9UcmFjaz4odHJhY2spKSkKLSAgICAgICAgICAgIHJldHVybiB3cmFw
cGVyOwotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgVmlk
ZW9UcmFjaywgdHJhY2spOwotCisgICAgICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIGRvd25jYXN0PFZpZGVvVHJhY2s+KHRyYWNrKSk7CiAgICAgY2FzZSBUcmFja0Jhc2U6OlRl
eHRUcmFjazoKLSAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGds
b2JhbE9iamVjdC0+d29ybGQoKSwgZG93bmNhc3Q8VGV4dFRyYWNrPih0cmFjaykpKQotICAgICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIo
Z2xvYmFsT2JqZWN0LCBUZXh0VHJhY2ssIHRyYWNrKTsKKyAgICAgICAgcmV0dXJuIHdyYXAoc3Rh
dGUsIGdsb2JhbE9iamVjdCwgZG93bmNhc3Q8VGV4dFRyYWNrPih0cmFjaykpOwogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiBqc051bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBiOGU4ZDVjOGU4ZjdmM2Mw
YmEwZDZiYWIwZjRiMzk4OTVkNDY5YjJjLi4wMGU3MGMwYzQ5MGExNDZlMTJmN2I0ZjAyNjU1ZTA5
ZmRhM2NiNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTERv
Y3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTERv
Y3VtZW50Q3VzdG9tLmNwcApAQCAtMzUsMTYgKzM1LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGNyZWF0ZU5l
d1hNTERvY3VtZW50V3JhcHBlcihFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0LCBSZWY8WE1MRG9jdW1lbnQ+JiYgcGFzc2VkRG9jdW1lbnQpCitKU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFhNTERvY3VtZW50PiYmIHBhc3NlZERvY3VtZW50KQogewogICAgIGF1
dG8mIGRvY3VtZW50ID0gcGFzc2VkRG9jdW1lbnQuZ2V0KCk7CiAgICAgSlNPYmplY3QqIHdyYXBw
ZXI7CiAgICAgaWYgKGRvY3VtZW50LmlzU1ZHRG9jdW1lbnQoKSkKLSAgICAgICAgd3JhcHBlciA9
IENSRUFURV9ET01fV1JBUFBFUigmZ2xvYmFsT2JqZWN0LCBTVkdEb2N1bWVudCwgV1RGTW92ZShw
YXNzZWREb2N1bWVudCkpOworICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGds
b2JhbE9iamVjdCwgU1ZHRG9jdW1lbnQsIFdURk1vdmUocGFzc2VkRG9jdW1lbnQpKTsKICAgICBl
bHNlCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoJmdsb2JhbE9iamVjdCwg
WE1MRG9jdW1lbnQsIFdURk1vdmUocGFzc2VkRG9jdW1lbnQpKTsKKyAgICAgICAgd3JhcHBlciA9
IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFhNTERvY3VtZW50LCBXVEZNb3ZlKHBh
c3NlZERvY3VtZW50KSk7CiAKLSAgICByZXBvcnRNZW1vcnlGb3JEb2N1bWVudElmRnJhbWVsZXNz
KHN0YXRlLCBkb2N1bWVudCk7CisgICAgcmVwb3J0TWVtb3J5Rm9yRG9jdW1lbnRJZkZyYW1lbGVz
cygqc3RhdGUsIGRvY3VtZW50KTsKIAogICAgIHJldHVybiB3cmFwcGVyOwogfQpAQCAtNTMsMTIg
KzUzLDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFhNTERvY3VtZW50JiBkb2MKIHsKICAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGNhY2hlZERvY3VtZW50V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmplY3QsIGRvY3VtZW50
KSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1hNTERvY3Vt
ZW50V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmplY3QsIGRvY3VtZW50KTsKLX0KLQotSlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxYTUxEb2N1bWVudD4mJiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4g
Y3JlYXRlTmV3WE1MRG9jdW1lbnRXcmFwcGVyKCpzdGF0ZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShkb2N1bWVudCkpOworICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxP
YmplY3QsIFJlZjxYTUxEb2N1bWVudD4oZG9jdW1lbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCBmNzE3OGQxNTAxNDE2M2IwMTVkMWZmYWViZGYzYjA0YWM2Y2FkODMy
Li40OTgzMzI5Mjg5MzU4YTc0ODg3ZjYwNDBhNDU3OWNkZTgwY2I0MzVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzQx
MSwyNiArMzQxMSwxMCBAQCBFTkQKIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPCRpbXBsVHlwZT4mJiBpbXBsKVxuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY3JlYXRlTmV3V3Jh
cHBlcjwkY2xhc3NOYW1lLCAkaW1wbFR5cGU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
XG4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7XG4iKTsKLSAgICAgICAgfQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
In1cblxuIik7Ci0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsICRpbXBs
VHlwZSYgaW1wbClcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAg
ICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPCRjbGFzc05h
bWUsICRpbXBsVHlwZT4oZ2xvYmFsT2JqZWN0LCBpbXBsKSlcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChKU1ZhbHVlIHJl
c3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QsIGltcGwp
KVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHJl
c3VsdDtcbiIpOwotICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCkg
aWYgJHZ0YWJsZU5hbWVHbnU7CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAg
dm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZp
bXBsKSk7CisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KGltcGwucHRyKCkpKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCogZXhw
ZWN0ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJHt2dGFibGVSZWZX
aW59KTsKICNlbHNlCkBAIC0zNDU4LDExICszNDQyLDE5IEBAIEVORAogI2VuZGlmCiBFTkQKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiUmVwb3J0RXh0cmFNZW1vcnlDb3N0In07Ci0gICAgZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoaW1wbC5tZW1vcnlDb3N0KCkpOwor
ICAgIGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKGlt
cGwtPm1lbW9yeUNvc3QoKSk7CiBFTkQKIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjwkY2xhc3NOYW1lLCAkaW1wbFR5cGU+KGdsb2JhbE9i
amVjdCwgaW1wbCk7XG4iKTsKKyAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPCRj
bGFzc05hbWUsICRpbXBsVHlwZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTtcbiIpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIGNyZWF0ZU5ld1dyYXBwZXI8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKTtcbiIpOworICAgICAgICB9CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4i
KTsKIAorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgJGltcGxU
eXBlJiBpbXBsKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIGltcGwpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggNmMxOWExYWZhMzFj
MjgwZmFiZDVkN2Q5YTkwYzhhZjBmZmE3YmVlZi4uYjM3MDA4MTA3ZDIyNjM2N2Q5ZmZkMWEzNTcx
Y2VjNWNhMWQ0OGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTI1
MiwxNiArMjUyLDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMTlU
ZXN0QWN0aXZlRE9NT2JqZWN0RVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RBY3RpdmVET01PYmplY3Q+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBl
cjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19
Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdEFjdGl2ZURPTU9iamVjdCYgaW1wbCkKLXsKLSAgICBpZiAoSlNW
YWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pihn
bG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxF
KEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBv
aW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExB
VEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RBY3RpdmVET01PYmplY3RAV2ViQ29y
ZUBANkJAIikpOwogI2Vsc2UKQEAgLTI3OCw3ICsyNzEsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0QWN0
aXZlRE8KICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0
ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0
dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAg
cmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0LCBUZXN0QWN0aXZl
RE9NT2JqZWN0PihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFw
cGVyPEpTVGVzdEFjdGl2ZURPTU9iamVjdD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
K30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0QWN0aXZlRE9NT2JqZWN0JiBpbXBsKQoreworICAg
IHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0QWN0aXZl
RE9NT2JqZWN0KiBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUg
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmNwcAppbmRleCA0ODgxNWZmZGU5NWQyMGRmYTIwNjI5ZGU2NjM2NDhiMzA0OGRmZjE0
Li4xYThhZmNjYjBiZmZiNmViNGQyZDc4MmZmMzg3Y2U5OWZlNzVkNjlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTE3
OCwxNiArMTc4LDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMzNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JFW107IH0KIAogSlNDOjpKU1ZhbHVlIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPiYmIGltcGwpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yJiBpbXBsKQotewotICAgIGlmIChKU1Zh
bHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQ
b2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBh
Y3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIo
KSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIg
PSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JAV2ViQ29yZUBANkJAIikpOwogI2Vsc2UKQEAgLTIwNCw3ICsx
OTcsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q2xhc3NXaXQKICAgICAvLyBieSBhZGRpbmcgdGhlIFNr
aXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0
aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZU
YWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IsIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBl
cjxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3ImIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVj
dCwgaW1wbCk7CiB9CiAKIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciogSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAppbmRleCBkZGFiYTRjMjUyZmIwNmFiNjFkODkzZjg3
MTZmNzY2MjViZThkN2ZhLi5lMjExZTBmYzk1Y2I0OTY2ZmViZDI4M2FlYjQ3NDE1MjNkODk5ZDhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKQEAgLTE2OCwxNiArMTY4LDkgQEAgZXh0ZXJuICJD
IiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlNDJUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmoKIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0PiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZU5ld1dyYXBwZXI8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3Q+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0JiBpbXBsKQotewotICAgIGlmIChK
U1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdD4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBh
Y3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsK
KyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQq
Kj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZU
YWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RAV2ViQ29yZUBANkJAIikp
OwogI2Vsc2UKQEAgLTE5NCw3ICsxODcsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3VzdG9tQ28KICAg
ICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUg
aW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxl
UG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNy
ZWF0ZU5ld1dyYXBwZXI8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3QsIFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4oZ2xvYmFsT2Jq
ZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3QmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVj
dCwgaW1wbCk7CiB9CiAKIFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dCogSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBl
ZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cAppbmRleCAxYzZjYjRlNjYwNjZlYWEzMDQyZmI0OThiZDAwMjljZTFhMmYxYjAxLi4wZTU4Nzg5
MzJjNTM0NTBkYjIxMzI0YjVhN2IxOTRmMGY4ZjBlNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21OYW1lZEdldHRlci5jcHAKQEAgLTIyNSwxNiArMjI1LDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVy
biB2b2lkKiBfWlRWTjdXZWJDb3JlMjFUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJFW107IH0KIAogSlND
OjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiYmIGltcGwpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+KGds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEN1c3RvbU5h
bWVkR2V0dGVyJiBpbXBsKQotewotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5n
V3JhcHBlcjxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAg
ICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4o
JmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9j
YXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBl
eHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZp
ZXIoIj8/XzdUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJAV2ViQ29yZUBANkJAIikpOwogI2Vsc2UKQEAg
LTI1MSw3ICsyNDQsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3VzdG9tTmEKICAgICAvLyBieSBhZGRp
bmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElE
TCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBl
eHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBw
ZXI8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIsIFRlc3RDdXN0b21OYW1lZEdldHRlcj4oZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RDdXN0b21O
YW1lZEdldHRlcj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXImIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAo
c3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKIFRlc3RDdXN0b21OYW1lZEdldHRlciog
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTFkOGZmMzFiZGQ0N2RhYjUz
NTU4MDFiMzA3OWI3MTQxZWU5ZTRhNS4uNmYwZjVhMzZkNGY2ODRhMjAwMGIxZTdkYjBmNTY1NTcy
ZWIwMjE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMjczLDE2
ICsyNzMsOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyMFRlc3RF
dmVudENvbnN0cnVjdG9yRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RF
dmVudENvbnN0cnVjdG9yPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0K
LQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0RXZlbnRDb25zdHJ1Y3RvciYgaW1wbCkKLXsKLSAgICBpZiAoSlNW
YWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4o
Z2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQ
b2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBM
QVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJl
dF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0RXZlbnRDb25zdHJ1Y3RvckBXZWJD
b3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMjk5LDcgKzI5MiwxMiBAQCBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RF
dmVudENvbgogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmli
dXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChh
Y3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAg
ICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yLCBUZXN0RXZl
bnRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3
V3JhcHBlcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudENvbnN0cnVjdG9yJiBpbXBsKQor
eworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0
RXZlbnRDb25zdHJ1Y3RvciogSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDRiNjQ1ZGYzMTY5
YjMxZDQxMmU5OTFhYzk0OGZkYjYwNzNiNGM4NWIuLmJjZDAyZDA2NjI2NjY0ZTk0YWIzYzc4N2Fm
MTA3ZmMxMThlNGRkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMjMyLDE2ICsy
MzIsOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUxNVRlc3RFdmVu
dFRhcmdldEVbXTsgfQogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RXZlbnRUYXJn
ZXQ+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RFdmVudFRh
cmdldD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0
RXZlbnRUYXJnZXQmIGltcGwpCi17Ci0gICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3Rp
bmdXcmFwcGVyPEpTVGVzdEV2ZW50VGFyZ2V0PihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAg
ICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZv
aWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1w
bCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVj
dGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigi
Pz9fN1Rlc3RFdmVudFRhcmdldEBXZWJDb3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMjU4LDcgKzI1
MSwxMiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudFRhcgogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tp
cFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRp
b24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRh
YmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RF
dmVudFRhcmdldCwgVGVzdEV2ZW50VGFyZ2V0PihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJl
dHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdEV2ZW50VGFyZ2V0PihnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudFRhcmdldCYgaW1w
bCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIAog
VGVzdEV2ZW50VGFyZ2V0KiBKU1Rlc3RFdmVudFRhcmdldDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggZjMwMWI1ZjcxYmI2MWY5N2YzNWE0
ODE4NzlhMGMxYzY5YTBmNTkwYy4uNDJkZDQ3MWJlMmEyZGI4NDU1YzE3M2E3ZWM4NzZkNWE3MjRj
ZGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTIwNiwxNiArMjA2LDkgQEAgZXh0ZXJu
ICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMTNUZXN0RXhjZXB0aW9uRVtdOyB9CiAK
IEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFeGNlcHRpb24+JiYgaW1wbCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RFeGNlcHRpb24+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV4Y2VwdGlvbiYgaW1wbCkKLXsK
LSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0RXhjZXB0
aW9uPihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYg
RU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIg
PSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZU
YWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAj
aWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RFeGNlcHRpb25AV2ViQ29y
ZUBANkJAIikpOwogI2Vsc2UKQEAgLTIzMiw3ICsyMjUsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXhj
ZXB0aW8KICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0
ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0
dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAg
cmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0RXhjZXB0aW9uLCBUZXN0RXhjZXB0aW9uPihn
bG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdEV4
Y2VwdGlvbj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUZXN0RXhjZXB0aW9uJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9i
YWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0RXhjZXB0aW9uKiBKU1Rlc3RFeGNlcHRpb246OnRv
V3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZS5jcHAKaW5kZXggZWM2OTEwYmIyMmVjZDJmNGM4MjZlYmJjODgyMDI2N2FhNDk2ZTgw
MC4uZTliNmFhMWMzM2M2ODFlMjljYmUzMGQzNjgzNDlmNWUzYzUyZWVjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtMTY1LDE2ICsxNjUsOSBAQCBleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyM1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1
ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4o
Z2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQ
b2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBM
QVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJl
dF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUBX
ZWJDb3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMTkxLDcgKzE4NCwxMiBAQCBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3RHZW5lcmF0ZQogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0
cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VS
VChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYK
LSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLCBU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4g
Y3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPihnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGlt
cGwpOwogfQogCiBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVj
dC5jcHAKaW5kZXggZDUxMjU5ZjM0NGNiMDczODVkM2NkNmM4MzQzNjZkOTU2ZDdjNDUxMi4uY2Y0
ODZlMDZmNDAxMGNlZTlkNDMzYzNkY2M2ZGY4ZjBhZDlkNzY1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHAKQEAgLTM0NywxNiArMzQ3LDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lk
KiBfWlRWTjdXZWJDb3JlMTZUZXN0R2xvYmFsT2JqZWN0RVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3RHbG9iYWxPYmplY3Q+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3Jl
YXRlTmV3V3JhcHBlcjxKU1Rlc3RHbG9iYWxPYmplY3Q+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEdsb2JhbE9iamVjdCYgaW1wbCkKLXsKLSAgICBp
ZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0R2xvYmFsT2JqZWN0
PihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5B
QkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAq
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJs
ZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYg
UExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RHbG9iYWxPYmplY3RAV2ViQ29y
ZUBANkJAIikpOwogI2Vsc2UKQEAgLTM3Myw3ICszNjYsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0R2xv
YmFsT2IKICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0
ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0
dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAg
cmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0R2xvYmFsT2JqZWN0LCBUZXN0R2xvYmFsT2Jq
ZWN0PihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpT
VGVzdEdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0R2xvYmFsT2JqZWN0JiBpbXBsKQoreworICAgIHJldHVybiB3cmFw
KHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0R2xvYmFsT2JqZWN0KiBKU1Rl
c3RHbG9iYWxPYmplY3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCmluZGV4IDAzZjlmMzk5ZWQ2YjY3ZDljMDUxZDExOTY2ZjU1YzY4MmE3MjA5OWEu
LmQyNzI5Y2FiM2RiZmUzNDg1MTEzOGUzNmNjODIxZDAxZTFmNDg1MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCkBAIC05MTcsMTMgKzkxNyw2IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlT3duZXI6
OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250CiAK
IEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RJbnRlcmZhY2U+JiYgaW1wbCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RJbnRlcmZhY2U+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEludGVyZmFjZSYgaW1wbCkKLXsK
LSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0SW50ZXJm
YWNlPihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogI2lmIENP
TVBJTEVSKENMQU5HKQogICAgIC8vIElmIHlvdSBoaXQgdGhpcyBmYWlsdXJlIHRoZSBpbnRlcmZh
Y2UgZGVmaW5pdGlvbiBoYXMgdGhlIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKICAgICAvLyBh
dHRyaWJ1dGUuIFlvdSBzaG91bGQgcmVtb3ZlIHRoYXQgYXR0cmlidXRlLiBJZiB0aGUgY2xhc3Mg
aGFzIHN1YmNsYXNzZXMKQEAgLTkzMSw3ICs5MjQsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0SW50ZXJm
YWMKICAgICAvLyBhdHRyaWJ1dGUgdG8gVGVzdEludGVyZmFjZS4KICAgICBzdGF0aWNfYXNzZXJ0
KCFfX2lzX3BvbHltb3JwaGljKFRlc3RJbnRlcmZhY2UpLCAiVGVzdEludGVyZmFjZSBpcyBwb2x5
bW9ycGhpYyBidXQgdGhlIElETCBjbGFpbXMgaXQgaXMgbm90Iik7CiAjZW5kaWYKLSAgICByZXR1
cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RJbnRlcmZhY2UsIFRlc3RJbnRlcmZhY2U+KGdsb2Jh
bE9iamVjdCwgaW1wbCk7CisgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0SW50ZXJm
YWNlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRlc3RJbnRlcmZhY2UmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9i
amVjdCwgaW1wbCk7CiB9CiAKIFRlc3RJbnRlcmZhY2UqIEpTVGVzdEludGVyZmFjZTo6dG9XcmFw
cGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcAppbmRleCBkYWQ2NDMyZTk2NjM1YjEwZDhjN2ZmZTZlMzQ4MjcwOWI2ZmVk
YTYwLi5hMTJjZGRiYzA4OTNiY2VlMzUwZDUwMjNjZGJkYTIzYmNmMDRjMmEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0xOTAsMTYgKzE5MCw5
IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTI2VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJFW107IH0KIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3Jh
cHBlcjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyJiBpbXBs
KQotewotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1
cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFj
dHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOwor
ICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRh
YmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQFdlYkNvcmVAQDZCQCIpKTsKICNlbHNlCkBAIC0yMTYs
NyArMjA5LDEyIEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE1lZGlhUXVlCiAgICAgLy8gYnkgYWRkaW5nIHRo
ZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVm
aW5pdGlvbgogICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0
ZWRWVGFibGVQb2ludGVyKTsKICNlbmRpZgotICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIsIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihn
bG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisK
K0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXImIGltcGwpCit7Cisg
ICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKIFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyKiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp0b1dyYXBw
ZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDg5OGVmMjkyYTE3ZTk5OGM2MTFjMDRhZmU3NTYzMzQ1NzhjM2MzZGYuLjFkODMxMjVi
NzY0NTY2NWIyNmJjNWRmYTZjN2QxYWEyNzk1ZmIyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTIxMywxNiArMjEzLDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2
b2lkKiBfWlRWTjdXZWJDb3JlMjBUZXN0TmFtZWRDb25zdHJ1Y3RvckVbXTsgfQogCiBKU0M6OkpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJiBpbXBsKQogewotICAg
IHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkQ29uc3RydWN0
b3ImIGltcGwpCi17Ci0gICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVy
PEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdCwgaW1wbCkpCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgdm9pZCog
YWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZpbXBsKSk7
CisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kio+KGltcGwucHRyKCkpKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCogZXhwZWN0ZWRW
VGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVyKCI/P183
VGVzdE5hbWVkQ29uc3RydWN0b3JAV2ViQ29yZUBANkJAIikpOwogI2Vsc2UKQEAgLTIzOSw3ICsy
MzIsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRDb24KICAgICAvLyBieSBhZGRpbmcgdGhlIFNr
aXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0
aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZU
YWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0
TmFtZWRDb25zdHJ1Y3RvciwgVGVzdE5hbWVkQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdCwgaW1w
bCk7CisgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4o
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0
TmFtZWRDb25zdHJ1Y3RvciYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKIH0KIAogVGVzdE5hbWVkQ29uc3RydWN0b3IqIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3I6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYy5jcHAKaW5kZXggMmQ0YWU5NDQ2MDY0NTgyZWY3OWMwNWQwMjE3MDEzMWQ5
NWMzN2QzMi4uMzg2YzdiODk0ZWIwNWNiN2Y4Yjg3MzJkNDE4NDBkODA2ZjMyYWI5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRl
dGVybWluaXN0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcApAQCAtNDc0LDE2ICs0NzQsOSBAQCBleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyMFRlc3ROb25kZXRlcm1pbmlzdGlj
RVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROb25kZXRlcm1pbmlzdGlj
PiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBn
ZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4oZ2xvYmFsT2JqZWN0LCBp
bXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0
PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihf
X2lkZW50aWZpZXIoIj8/XzdUZXN0Tm9uZGV0ZXJtaW5pc3RpY0BXZWJDb3JlQEA2QkAiKSk7CiAj
ZWxzZQpAQCAtNTAwLDcgKzQ5MywxMiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROb25kZXRlcgogICAgIC8v
IGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRl
cmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2lu
dGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRl
TmV3V3JhcHBlcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGljLCBUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4o
Z2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RO
b25kZXRlcm1pbmlzdGljPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3ROb25kZXRlcm1pbmlzdGljJiBpbXBsKQoreworICAgIHJldHVybiB3
cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0Tm9uZGV0ZXJtaW5pc3Rp
YyogSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKaW5kZXggMjYxZmE3MGE1NWRjYzBjNjU2Y2RkMjM3ZmNjNzBjMjQzMzRhMzFiMi4u
NTIyMWQ4MjViZmFjMzc4MDFkN2E3ZjliMGRkZjViNTk3MTAzZDRhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAg
LTYyNjksMTYgKzYyNjksOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNv
cmU3VGVzdE9iakVbXTsgfQogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T2JqPiYm
IGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0T2JqPihnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPYmomIGltcGwpCi17
Ci0gICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTVGVzdE9iaj4o
Z2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQ
b2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBM
QVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJl
dF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0T2JqQFdlYkNvcmVAQDZCQCIpKTsK
ICNlbHNlCkBAIC02Mjk1LDcgKzYyODgsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T2JqJiBpbXAKICAg
ICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUg
aW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxl
UG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNy
ZWF0ZU5ld1dyYXBwZXI8SlNUZXN0T2JqLCBUZXN0T2JqPihnbG9iYWxPYmplY3QsIGltcGwpOwor
ICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdE9iaj4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T2JqJiBpbXBsKQoreworICAg
IHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0T2JqKiBK
U1Rlc3RPYmo6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNDgzY2ExMjEwZTc5NGViOTE5YzVk
ZWY5M2U3NjM3MzAwNTQxOTYzMS4uMmYwNmI0M2ZlZGViZDBkMDE2NGY2MWQ3MmVlNzYyNmM0ODgx
Yzk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApA
QCAtMjQ5LDE2ICsyNDksOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNv
cmUyNlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiYmIGltcGwpCiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGlu
Z1dyYXBwZXI8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xvYmFsT2JqZWN0LCBpbXBs
KSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklU
WSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZv
aWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2
b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lk
ZW50aWZpZXIoIj8/XzdUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0BXZWJDb3JlQEA2QkAiKSk7
CiAjZWxzZQpAQCAtMjc1LDcgKzI2OCwxMiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVybG9hZAogICAg
IC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBp
bnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQ
b2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3Jl
YXRlTmV3V3JhcHBlcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLCBUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycz4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3
V3JhcHBlcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwp
OwogfQogCiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmNwcAppbmRleCBjMmY0ZTllNTliODhkMjFlYmJiMWRlNmI3MTZkMjYyNDMz
MTNmN2I3Li5mNGYzN2M1M2U3ZWEzYTA2Y2U5NjkxNmY1NzdlYTc1YWUzM2Q0ODkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJp
ZGVCdWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0yMzIsMTYgKzIzMiw5IEBAIGV4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTIwVGVzdE92ZXJyaWRlQnVpbHRpbnNF
W107IH0KIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+
JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3RPdmVycmlkZUJ1aWx0aW5zJiBpbXBsKQotewotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdl
dEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPihnbG9iYWxPYmplY3QsIGlt
cGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdS
SVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAg
IHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9f
aWRlbnRpZmllcigiPz9fN1Rlc3RPdmVycmlkZUJ1aWx0aW5zQFdlYkNvcmVAQDZCQCIpKTsKICNl
bHNlCkBAIC0yNTgsNyArMjUxLDEyIEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92ZXJyaWRlCiAgICAgLy8g
YnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVy
ZmFjZSBJREwgZGVmaW5pdGlvbgogICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50
ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKICNlbmRpZgotICAgIHJldHVybiBjcmVhdGVO
ZXdXcmFwcGVyPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMsIFRlc3RPdmVycmlkZUJ1aWx0aW5zPihn
bG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdE92ZXJyaWRlQnVpbHRpbnMmIGltcGwpCit7CisgICAgcmV0dXJuIHdy
YXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKIFRlc3RPdmVycmlkZUJ1aWx0aW5z
KiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAppbmRleCA1ODhiNDMyZWI4NWUyMjk3ZDEwYWFmMTIzMjBkMzg2MDVkYWRkNDVhLi4zNzQ0
ZDI0OWIyZGFjZjZmMWFkY2Q2MDA3ODk2M2VhOTRkNWE3NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzA3LDE2
ICszMDcsOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUzNFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VFW107CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+JiYgaW1wbCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1
ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlPihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0Owog
CiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBv
aW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFj
dHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigp
KSk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VAV2ViQ29yZUBANkJAIikpOwogI2Vsc2UKQEAgLTMzMyw3ICsz
MjYsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2VyaWFsaXoKICAgICAvLyBieSBhZGRpbmcgdGhlIFNr
aXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0
aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZU
YWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlPihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFw
cGVyPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxP
YmplY3QsIGltcGwpOwogfQogCiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvV3JhcHBlZChKU0M6OkpTVmFs
dWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCAzYmYxMzQxZDFjZmQ2MTM2MTYxZTQ5
YWRkNWVjNTI2MDU0NmJlZDZkLi40NDkxOTY4MWVjMjVkMjY4YTViMmQ3OGViY2ZjYWU1OTg2ZTQ5
ZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTY2MiwxNiArNjYyLDkgQEAgZXh0ZXJuICJD
IiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMTJUZXN0VHlwZWRlZnNFW107IH0KIAogSlND
OjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFR5cGVkZWZzPiYmIGltcGwpCiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0VHlwZWRlZnM+KGdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFR5cGVkZWZzJiBpbXBsKQotewotICAgIGlm
IChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3RUeXBlZGVmcz4oZ2xv
YmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShC
SU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2lu
dGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRG
T1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9j
YXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0VHlwZWRlZnNAV2ViQ29yZUBANkJAIikp
OwogI2Vsc2UKQEAgLTY4OCw3ICs2ODEsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0VHlwZWRlZnMKICAg
ICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUg
aW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxl
UG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNy
ZWF0ZU5ld1dyYXBwZXI8SlNUZXN0VHlwZWRlZnMsIFRlc3RUeXBlZGVmcz4oZ2xvYmFsT2JqZWN0
LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RUeXBlZGVmcz4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0VHlw
ZWRlZnMmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1w
bCk7CiB9CiAKIFRlc3RUeXBlZGVmcyogSlNUZXN0VHlwZWRlZnM6OnRvV3JhcHBlZChKU0M6OkpT
VmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAppbmRleCA5NmQyZWMyOTM3ZDA0ZGQxZjI2MGZmOGFi
ZmE1ZTBhYTdjZDBkYWNlLi40ZjRhMjJlOGEwNTc4N2ZhMjYzMjJjNjA0MDhkZDIxOTY2Y2JkZjZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNh
dHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU2F0dHJpYnV0ZS5jcHAKQEAgLTIwNiwxNiArMjA2LDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVy
biB2b2lkKiBfWlRWTjdXZWJDb3JlOWF0dHJpYnV0ZUVbXTsgfQogCiBKU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZjxhdHRyaWJ1dGU+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3Jh
cHBlcjxKU2F0dHJpYnV0ZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBhdHRyaWJ1dGUmIGltcGwpCi17Ci0gICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0
RXhpc3RpbmdXcmFwcGVyPEpTYXR0cmlidXRlPihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAg
ICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZv
aWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1w
bCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVj
dGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigi
Pz9fN2F0dHJpYnV0ZUBXZWJDb3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMjMyLDcgKzIyNSwxMiBA
QCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGF0dHJpYnV0ZSYgaQogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJs
ZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAg
ICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9p
bnRlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU2F0dHJpYnV0ZSwg
YXR0cmlidXRlPihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFw
cGVyPEpTYXR0cmlidXRlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGF0dHJpYnV0ZSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwg
Z2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIAogYXR0cmlidXRlKiBKU2F0dHJpYnV0ZTo6dG9XcmFw
cGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAppbmRleCA2OTU2ZGQ0MDI5MTczNzVj
ZDAxMTU2MmY0MzA0MjhjODE5NWU4NDM4Li5hMmQ3ZjU0ZTMxN2FjYThhZWJhNjkzZmI1NWYzMWQx
MDg4NDQ5MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNyZWFkb25seS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCkBAIC0xNTYsMTMgKzE1Niw2IEBAIHZvaWQgSlNyZWFk
b25seU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
ZCogY29udGV4dCkKIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8cmVhZG9ubHk+JiYgaW1w
bCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU3JlYWRvbmx5PihnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHJlYWRvbmx5JiBpbXBsKQotewot
ICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU3JlYWRvbmx5Pihn
bG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogI2lmIENPTVBJTEVS
KENMQU5HKQogICAgIC8vIElmIHlvdSBoaXQgdGhpcyBmYWlsdXJlIHRoZSBpbnRlcmZhY2UgZGVm
aW5pdGlvbiBoYXMgdGhlIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKICAgICAvLyBhdHRyaWJ1
dGUuIFlvdSBzaG91bGQgcmVtb3ZlIHRoYXQgYXR0cmlidXRlLiBJZiB0aGUgY2xhc3MgaGFzIHN1
YmNsYXNzZXMKQEAgLTE3MCw3ICsxNjMsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCByZWFkb25seSYgaW0KICAg
ICAvLyBhdHRyaWJ1dGUgdG8gcmVhZG9ubHkuCiAgICAgc3RhdGljX2Fzc2VydCghX19pc19wb2x5
bW9ycGhpYyhyZWFkb25seSksICJyZWFkb25seSBpcyBwb2x5bW9ycGhpYyBidXQgdGhlIElETCBj
bGFpbXMgaXQgaXMgbm90Iik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxK
U3JlYWRvbmx5LCByZWFkb25seT4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3Jl
YXRlTmV3V3JhcHBlcjxKU3JlYWRvbmx5PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwor
fQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIHJlYWRvbmx5JiBpbXBsKQoreworICAgIHJldHVybiB3cmFw
KHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiByZWFkb25seSogSlNyZWFkb25seTo6
dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279364</attachid>
            <date>2016-05-18 23:56:17 -0700</date>
            <delta_ts>2016-05-19 00:31:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157835-20160519085715.patch</filename>
            <type>text/plain</type>
            <size>88084</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWUwZWJmZGY4MTllMzky
MDcxMThhOWU5OTAyMmM3YjFlNjgzNjdkMS4uMjViY2Y0YzVkYTM0NDg1NzYxN2Y2NWFjYzVhYjU3
Njc3ODQ4ZjE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwOSBAQAogMjAxNi0wNS0xOCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCisgICAgICAgIFJlZmFj
dG9yIHRvSlMgZnVuY3Rpb25zIHRvIHVzZSB0b0pTTmV3bHlDcmVhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc4MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBNb3ZpbmcgY2hlY2tzIGdlbmVyYXRlZCBi
eSBiaW5kaW5nIGdlbmVyYXRvciBmcm9tIHRvSlMgdG8gdG9KU05ld2x5Q3JlYXRlZC4KKyAgICAg
ICAgQ2hhbmdpbmcgd3JhcCB0ZW1wbGF0ZSBmdW5jdGlvbiB0byB1c2UgdG9KU05ld2x5Q3JlYXRl
ZCBmdW5jdGlvbi4KKyAgICAgICAgVGhpcyBhbGxvd3MgRE9NQ2xhc3MgdG9KUygpIHRvIGJlIGVx
dWl2YWxlbnQgdG8gd3JhcCB0ZW1wbGF0ZSBmdW5jdGlvbi4KKworICAgICAgICBSZWZhY3RvcmVk
IGN1c3RvbSBiaW5kaW5nIGNvZGUgdG8gdGFrZSBiZW5lZml0IG9mIHRoaXMuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQW5p
bWF0aW9uVGltZWxpbmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3Jl
YXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjp3cmFwKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWREb2N1bWVudFdyYXBwZXIpOiBE
ZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pT
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9K
Uyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pT
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MVGVtcGxhdGVFbGVtZW50Ojpjb250ZW50KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQkN1cnNvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uaDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHUGF0aFNlZ0N1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTERvY3VtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
dG9KUyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRl
ZnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwOgor
CisyMDE2LTA1LTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+
CisKICAgICAgICAgTWFrZSBiaW5kaW5nIERPTSBjb25zdHJ1Y3RvciB1c2UgdG9KU05ld2x5Q3Jl
YXRlZCBpbnN0ZWFkIG9mIHRvSlMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NzgzMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0FuaW1hdGlvblRpbWVsaW5lQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQW5pbWF0aW9uVGltZWxpbmVDdXN0b20uY3BwCmluZGV4IDBhZjEwYmM2Y2YzNjk0
MjY5MjhmMDYyN2U3NzE4YjFlOTVkZGE1M2QuLmM2NTkzZTQ3NjI2MGFjMzRkMjE4ZDJmMGRkZmY0
NTc3N2EwYjc4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQW5p
bWF0aW9uVGltZWxpbmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQW5pbWF0aW9uVGltZWxpbmVDdXN0b20uY3BwCkBAIC0zOSwxNCArMzksMTYgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQW5pbWF0aW9uVGltZWxp
bmUmIHZhbHVlKQorSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxBbmltYXRpb25UaW1lbGluZT4mJiB2YWx1ZSkK
IHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0
LT53b3JsZCgpLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIGlmICh2YWx1
ZS0+aXNEb2N1bWVudFRpbWVsaW5lKCkpCisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZ2xvYmFsT2JqZWN0LCBEb2N1bWVudFRpbWVsaW5lLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAg
cmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEFuaW1hdGlvblRpbWVsaW5l
LCBXVEZNb3ZlKHZhbHVlKSk7Cit9CiAKLSAgICBpZiAodmFsdWUuaXNEb2N1bWVudFRpbWVsaW5l
KCkpCi0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBEb2N1
bWVudFRpbWVsaW5lLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9i
YWxPYmplY3QsIEFuaW1hdGlvblRpbWVsaW5lLCB2YWx1ZSk7CitKU1ZhbHVlIHRvSlMoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQW5pbWF0aW9uVGlt
ZWxpbmUmIHZhbHVlKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIHZh
bHVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKaW5kZXggYmRmNGJlNWJhMGNlZTZiNzlmYjNmNzcxMzQx
N2ZkMDQ4NGVhODYxNy4uYTkzMzU4NzJhMmJlOTAxMmFhZWRiMmIwOTQ3NDUxNDcwMDRmMTdlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCkBAIC00OCwx
MiArNDgsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQmxvYiYgYmxvYikKK0pTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxCbG9iPiYmIGJsb2IpCiB7CiAg
ICAgaWYgKGlzPEZpbGU+KGJsb2IpKQotICAgICAgICByZXR1cm4gd3JhcDxKU0ZpbGU+KGdsb2Jh
bE9iamVjdCwgZG93bmNhc3Q8RmlsZT4oYmxvYikpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RP
TV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgRmlsZSwgV1RGTW92ZShibG9iKSk7CisgICAgcmV0dXJu
IGNyZWF0ZVdyYXBwZXI8SlNCbG9iPihnbG9iYWxPYmplY3QsIFdURk1vdmUoYmxvYikpOworfQog
Ci0gICAgcmV0dXJuIHdyYXA8SlNCbG9iPihnbG9iYWxPYmplY3QsIGJsb2IpOworSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEJs
b2ImIGJsb2IpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgYmxvYik7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNCbG9iKEV4ZWNT
dGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NT
UnVsZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0
b20uY3BwCmluZGV4IDY4ZDg3MTFlMzI5MDVmODNhMjRjMWJmZmFmZjIyZmNmYWNjYWY0OTcuLjhk
YzE5YjVmZTA4MTJiM2VmNjdjNWRlOTY3ZGI2NjcyYjljZDI4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcApAQCAtNjAsNTUgKzYwLDQzIEBA
IHZvaWQgSlNDU1NSdWxlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAK
LUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDU1NSdWxlJiBydWxlKQorSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxDU1NSdWxlPiYmIHJ1bGUpCiB7Ci0g
ICAgSlNPYmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29y
bGQoKSwgcnVsZSk7Ci0gICAgaWYgKHdyYXBwZXIpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwot
Ci0gICAgc3dpdGNoIChydWxlLnR5cGUoKSkgewotICAgICAgICBjYXNlIENTU1J1bGU6OlNUWUxF
X1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgQ1NTU3R5bGVSdWxlLCBydWxlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENTU1J1bGU6Ok1FRElBX1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RP
TV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTTWVkaWFSdWxlLCBydWxlKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENTU1J1bGU6OkZPTlRfRkFDRV9SVUxFOgotICAgICAgICAg
ICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU0ZvbnRGYWNl
UnVsZSwgcnVsZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NSdWxlOjpQ
QUdFX1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgQ1NTUGFnZVJ1bGUsIHJ1bGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ1NTUnVsZTo6SU1QT1JUX1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRF
X0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTSW1wb3J0UnVsZSwgcnVsZSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NSdWxlOjpDSEFSU0VUX1JVTEU6Ci0gICAgICAg
ICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTQ2hhcnNl
dFJ1bGUsIHJ1bGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUnVsZTo6
S0VZRlJBTUVfUlVMRToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIo
Z2xvYmFsT2JqZWN0LCBDU1NLZXlmcmFtZVJ1bGUsIHJ1bGUpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ1NTUnVsZTo6S0VZRlJBTUVTX1JVTEU6Ci0gICAgICAgICAgICB3cmFw
cGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTS2V5ZnJhbWVzUnVsZSwg
cnVsZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NSdWxlOjpTVVBQT1JU
U19SVUxFOgotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxP
YmplY3QsIENTU1N1cHBvcnRzUnVsZSwgcnVsZSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBz
d2l0Y2ggKHJ1bGUtPnR5cGUoKSkgeworICAgIGNhc2UgQ1NTUnVsZTo6U1RZTEVfUlVMRToKKyAg
ICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU1N0eWxlUnVs
ZSwgV1RGTW92ZShydWxlKSk7CisgICAgY2FzZSBDU1NSdWxlOjpNRURJQV9SVUxFOgorICAgICAg
ICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTTWVkaWFSdWxlLCBX
VEZNb3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENTU1J1bGU6OkZPTlRfRkFDRV9SVUxFOgorICAgICAg
ICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTRm9udEZhY2VSdWxl
LCBXVEZNb3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENTU1J1bGU6OlBBR0VfUlVMRToKKyAgICAgICAg
cmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU1BhZ2VSdWxlLCBXVEZN
b3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENTU1J1bGU6OklNUE9SVF9SVUxFOgorICAgICAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTSW1wb3J0UnVsZSwgV1RGTW92
ZShydWxlKSk7CisgICAgY2FzZSBDU1NSdWxlOjpDSEFSU0VUX1JVTEU6CisgICAgICAgIHJldHVy
biBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NDaGFyc2V0UnVsZSwgV1RGTW92
ZShydWxlKSk7CisgICAgY2FzZSBDU1NSdWxlOjpLRVlGUkFNRV9SVUxFOgorICAgICAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTS2V5ZnJhbWVSdWxlLCBXVEZN
b3ZlKHJ1bGUpKTsKKyAgICBjYXNlIENTU1J1bGU6OktFWUZSQU1FU19SVUxFOgorICAgICAgICBy
ZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTS2V5ZnJhbWVzUnVsZSwg
V1RGTW92ZShydWxlKSk7CisgICAgY2FzZSBDU1NSdWxlOjpTVVBQT1JUU19SVUxFOgorICAgICAg
ICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTU3VwcG9ydHNSdWxl
LCBXVEZNb3ZlKHJ1bGUpKTsKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQotICAg
ICAgICBjYXNlIENTU1J1bGU6OldFQktJVF9WSUVXUE9SVF9SVUxFOgotICAgICAgICAgICAgd3Jh
cHBlciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFdlYktpdENTU1ZpZXdwb3J0
UnVsZSwgcnVsZSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1J1bGU6OldFQktJ
VF9WSUVXUE9SVF9SVUxFOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgV2ViS2l0Q1NTVmlld3BvcnRSdWxlLCBXVEZNb3ZlKHJ1bGUpKTsKICNlbmRpZgog
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgY2FzZSBDU1NSdWxlOjpXRUJLSVRfUkVH
SU9OX1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgV2ViS2l0Q1NTUmVnaW9uUnVsZSwgcnVsZSk7Ci0gICAgICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRToKKyAgICAgICAgcmV0dXJuIENS
RUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFdlYktpdENTU1JlZ2lvblJ1bGUsIFdURk1v
dmUocnVsZSkpOwogI2VuZGlmCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB3cmFwcGVy
ID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQ1NTUnVsZSwgcnVsZSk7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3Qs
IENTU1J1bGUsIFdURk1vdmUocnVsZSkpOwogICAgIH0KK30KIAotICAgIHJldHVybiB3cmFwcGVy
OworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENTU1J1bGUmIG9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xv
YmFsT2JqZWN0LCBvYmplY3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCmluZGV4IDkzNDU1
NDYyYzgwNjM3ZmE5MjQ4NDM2MmQ2Nzg2Nzk4M2VlYzNiNjguLjQzYjEzNmYwYTZmZDI2NTZlYWI4
YTkxYjhjZWY4NzJmMDdiMjNjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTVmFsdWVDdXN0b20uY3BwCkBAIC02NCw3ICs2NCwyNCBAQCB2b2lkIEpTQ1NTVmFsdWVP
d25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNv
bnRleHQpCiAgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc0NTU1ZhbHVlLT53cmFwcGVkKCks
IGpzQ1NTVmFsdWUpOwogfQogCi1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTVmFsdWUmIHZhbHVlKQorSlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxD
U1NWYWx1ZT4mJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3Qs
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgaWYgKHZhbHVl
LT5pc1dlYktpdENTU0ZpbHRlclZhbHVlKCkpCisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dS
QVBQRVIoZ2xvYmFsT2JqZWN0LCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSwgV1RGTW92ZSh2YWx1ZSkp
OworICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgcmV0dXJuIENSRUFURV9E
T01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU1ZhbHVlTGlzdCwgV1RGTW92ZSh2YWx1ZSkpOwor
ICAgIGlmICh2YWx1ZS0+aXNTVkdQYWludCgpKQorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9X
UkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGFpbnQsIFdURk1vdmUodmFsdWUpKTsKKyAgICBpZiAo
dmFsdWUtPmlzU1ZHQ29sb3IoKSkKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihn
bG9iYWxPYmplY3QsIFNWR0NvbG9yLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBDU1NQcmltaXRpdmVWYWx1ZSwgV1RGTW92ZSh2YWx1ZSkpOworICAgIHJldHVy
biBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NWYWx1ZSwgV1RGTW92ZSh2YWx1
ZSkpOworfQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIC8vIFNjcmlwdHMgc2hv
dWxkIG9ubHkgZXZlciBzZWUgY2xvbmVkIENTU1ZhbHVlcywgbmV2ZXIgdGhlIGludGVybmFsIG9u
ZXMuCiAgICAgQVNTRVJUKHZhbHVlLmlzQ1NTT01TYWZlKCkpOwpAQCAtNzMsMjcgKzkwLDcgQEAg
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENTU1ZhbHVlJiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlLmlzQ1NTT01TYWZlKCkpCiAgICAgICAg
IHJldHVybiBqc051bGwoKTsKIAotICAgIEpTT2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkV3Jh
cHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIHZhbHVlKTsKLQotICAgIGlmICh3cmFwcGVyKQot
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKLQotICAgIGlmICh2YWx1ZS5pc1dlYktpdENTU1RyYW5z
Zm9ybVZhbHVlKCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFs
T2JqZWN0LCBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSwgdmFsdWUpOwotICAgIGVsc2UgaWYgKHZh
bHVlLmlzV2ViS2l0Q1NTRmlsdGVyVmFsdWUoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9E
T01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFdlYktpdENTU0ZpbHRlclZhbHVlLCB2YWx1ZSk7Ci0g
ICAgZWxzZSBpZiAodmFsdWUuaXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFU
RV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU1ZhbHVlTGlzdCwgdmFsdWUpOwotICAgIGVs
c2UgaWYgKHZhbHVlLmlzU1ZHUGFpbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01f
V1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhaW50LCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAodmFs
dWUuaXNTVkdDb2xvcigpKQotICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGds
b2JhbE9iamVjdCwgU1ZHQ29sb3IsIHZhbHVlKTsKLSAgICBlbHNlIGlmICh2YWx1ZS5pc1ByaW1p
dGl2ZVZhbHVlKCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFs
T2JqZWN0LCBDU1NQcmltaXRpdmVWYWx1ZSwgdmFsdWUpOwotICAgIGVsc2UKLSAgICAgICAgd3Jh
cHBlciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU1ZhbHVlLCB2YWx1ZSk7
Ci0KLSAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwCmluZGV4IDIwZTI4YTU1MmRiZTQ5OTkyYjQ1YmI0NjYxZTMzMzhmNmQxYzU3ZGIu
LmZlOGUxNTRiOTQyOGY0YTU4ZjZlMWFlYzhjOThkMDJiZjdhOTRhNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcApAQCAtNDcsMTcgKzQ3LDIyIEBAIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkuY2FudmFzKCkpKTsKIH0KIAot
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBvYmplY3QpCitKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxDYW52YXNSZW5kZXJpbmdDb250ZXh0PiYmIG9iamVjdCkKIHsKICNpZiBF
TkFCTEUoV0VCR0wpCiAgICAgaWYgKGlzPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4ob2JqZWN0KSkK
LSAgICAgICAgcmV0dXJuIHdyYXA8SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KGdsb2JhbE9iamVj
dCwgZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihvYmplY3QpKTsKKyAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCwgV1RGTW92ZShvYmplY3QpKTsKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgIGlmIChpczxXZWJH
TDJSZW5kZXJpbmdDb250ZXh0PihvYmplY3QpKQotICAgICAgICByZXR1cm4gd3JhcDxKU1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQ+KGdsb2JhbE9iamVjdCwgZG93bmNhc3Q8V2ViR0wyUmVuZGVyaW5n
Q29udGV4dD4ob2JqZWN0KSk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0LCBXVEZNb3ZlKG9iamVjdCkpOwogI2Vu
ZGlmCiAjZW5kaWYKLSAgICByZXR1cm4gd3JhcDxKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4o
Z2xvYmFsT2JqZWN0LCBkb3duY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KG9iamVjdCkp
OworICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQsIFdURk1vdmUob2JqZWN0KSk7Cit9CisKK0pTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0JiBvYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9i
amVjdCwgb2JqZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCBkZThlYmU2YWUyYmQ1NzNlYjdmZDIw
MmQ0NjE5ZTIzY2U1YjdhOGI4Li5mMjk1NDhiOWE0NzFhMzdiZDkyNjhlYWFlNTY0MDBjY2IxNzRi
YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMTY1
LDggKzE2NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVy
Q2xhc3M+IHZvaWQgY2FjaGVXcmFwcGVyKERPTVdyYXBwZXJXCiB0ZW1wbGF0ZTx0eXBlbmFtZSBE
T01DbGFzcywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiB2b2lkIHVuY2FjaGVXcmFwcGVyKERPTVdy
YXBwZXJXb3JsZCYsIERPTUNsYXNzKiwgV3JhcHBlckNsYXNzKik7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBXcmFwcGVyQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBXcmFwcGVyQ2xhc3MqIGNyZWF0ZVdy
YXBwZXIoSlNET01HbG9iYWxPYmplY3QqLCBSZWY8RE9NQ2xhc3M+JiYpOwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBXcmFwcGVyQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBKU0M6OkpTVmFsdWUgd3Jh
cChKU0RPTUdsb2JhbE9iamVjdCosIERPTUNsYXNzJik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBXcmFw
cGVyQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBKU0M6OkpTVmFsdWUgZ2V0RXhpc3RpbmdXcmFw
cGVyKEpTRE9NR2xvYmFsT2JqZWN0KiwgRE9NQ2xhc3MmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIERP
TUNsYXNzPiBKU0M6OkpTVmFsdWUgd3JhcChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgRE9NQ2xhc3MmKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5h
bWUgRE9NQ2xhc3M+IEpTQzo6SlNWYWx1ZSBjcmVhdGVOZXdXcmFwcGVyKEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgUmVmPERPTUNsYXNzPiYmKTsKIAogdm9pZCBhZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBB
dG9taWNTdHJpbmcmKTsKQEAgLTQ2NiwxNiArNDY1LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFdy
YXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBXcmFwcGVyQ2xhc3MqIGNyZWF0
ZVdyCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJD
bGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUgd3JhcChKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFzcyYgZG9tT2JqZWN0KQordGVtcGxhdGU8
dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUgd3JhcChKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzJiBkb21P
YmplY3QpCiB7CiAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2Jh
bE9iamVjdC0+d29ybGQoKSwgZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0g
ICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8V3JhcHBlckNsYXNzLCBET01DbGFzcz4oZ2xvYmFsT2Jq
ZWN0LCBkb21PYmplY3QpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3MsIHR5
cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGdldEV4aXN0aW5nV3JhcHBlcihK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFzcyYgZG9tT2JqZWN0KQotewot
ICAgIHJldHVybiBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgZG9tT2Jq
ZWN0KTsKKyAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBS
ZWY8RE9NQ2xhc3M+KGRvbU9iamVjdCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVy
Q2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNyZWF0ZU5ld1dy
YXBwZXIoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPERPTUNsYXNzPiYmIGRv
bU9iamVjdCkKQEAgLTUyMCw3ICs1MTQsNyBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwotICAgIGlmIChK
U0M6OkpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTQzo6SlNBcnJheUJ1ZmZl
cj4oZ2xvYmFsT2JqZWN0LCAqYnVmZmVyKSkKKyAgICBpZiAoSlNDOjpKU1ZhbHVlIHJlc3VsdCA9
IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCAqYnVmZmVyKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIC8vIFRoZSBKU0FycmF5QnVmZmVyOjpjcmVhdGUgZnVu
Y3Rpb24gd2lsbCByZWdpc3RlciB0aGUgd3JhcHBlciBpbiBmaW5pc2hDcmVhdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZjEy
MTQ4OGI2ZTk3MTM2NzBlNDIzMjkxY2FkYTJlMjgwNTUxYmQxMS4uMWM5NGRlZDkxNTkzZTZhZjE3
YmU2NGM0MzU0YThlNzFmZTVhN2RmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTcwLDEzICs3MCw2IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBjcmVhdGVOZXdEb2N1bWVudFdyYXBwZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNET01H
bG9iYWxPYmplCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKLUpTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBEb2N1bWVudCYgZG9j
dW1lbnQpCi17Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBjYWNoZWREb2N1bWVudFdyYXBwZXIo
KnN0YXRlLCAqZ2xvYmFsT2JqZWN0LCBkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVy
OwotICAgIHJldHVybiBjcmVhdGVOZXdEb2N1bWVudFdyYXBwZXIoKnN0YXRlLCAqZ2xvYmFsT2Jq
ZWN0LCBkb2N1bWVudCk7Ci19Ci0KIEpTT2JqZWN0KiBjYWNoZWREb2N1bWVudFdyYXBwZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgRG9jdW1lbnQm
IGRvY3VtZW50KQogewogICAgIGlmIChhdXRvKiB3cmFwcGVyID0gZ2V0Q2FjaGVkV3JhcHBlcihn
bG9iYWxPYmplY3Qud29ybGQoKSwgZG9jdW1lbnQpKQpAQCAtMTEwLDYgKzEwMywxMyBAQCBKU1Zh
bHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPAogICAgIHJldHVybiBjcmVhdGVOZXdEb2N1bWVudFdyYXBwZXIo
KnN0YXRlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRvY3VtZW50KSk7CiB9CiAKK0pTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBE
b2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBjYWNoZWREb2N1
bWVudFdyYXBwZXIoKnN0YXRlLCAqZ2xvYmFsT2JqZWN0LCBkb2N1bWVudCkpCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxP
YmplY3QsIFJlZjxEb2N1bWVudD4oZG9jdW1lbnQpKTsKK30KKwogSlNWYWx1ZSBKU0RvY3VtZW50
OjpwcmVwZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21l
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdt
ZW50Q3VzdG9tLmNwcAppbmRleCBjMjMxN2ZjMmI5ZjIwYjI5ZDdmZjMzY2I3YjlhMGRhZmM5ZTY5
NjZkLi4zMWU3OTVkZmI1YmY5ZDQ4ZWNiY2ZhMWRkMzBkNzkwN2UxOWQyYjFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3Rv
bS5jcHAKQEAgLTUyLDI2ICs1MiwxOCBAQCBKU1ZhbHVlIEpTRG9jdW1lbnRGcmFnbWVudDo6YXBw
ZW5kKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBjcmVhdGVOZXdEb2N1bWVudEZyYWdtZW50V3JhcHBlcihKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBpbXBs
KQorSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGltcGwpCiB7CiAjaWYgRU5B
QkxFKFNIQURPV19ET00pCiAgICAgaWYgKGltcGwtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICBy
ZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKCZnbG9iYWxPYmplY3QsIFNoYWRvd1Jvb3QsIFdURk1v
dmUoaW1wbCkpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVj
dCwgU2hhZG93Um9vdCwgV1RGTW92ZShpbXBsKSk7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRl
TmV3V3JhcHBlcjxKU0RvY3VtZW50RnJhZ21lbnQ+KCZnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOwotfQotCi1KU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgaW1wbCkKLXsK
LSAgICByZXR1cm4gY3JlYXRlTmV3RG9jdW1lbnRGcmFnbWVudFdyYXBwZXIoKmdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7CisgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNEb2N1bWVu
dEZyYWdtZW50PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogfQogCi1KU1ZhbHVlIHRv
SlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRG9jdW1lbnRG
cmFnbWVudCYgaW1wbCkKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBEb2N1bWVudEZyYWdtZW50JiBpbXBsKQogewotICAgIGlm
IChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU0RvY3VtZW50RnJhZ21lbnQ+
KGdsb2JhbE9iamVjdCwgaW1wbCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICByZXR1
cm4gY3JlYXRlTmV3RG9jdW1lbnRGcmFnbWVudFdyYXBwZXIoKmdsb2JhbE9iamVjdCwgaW1wbCk7
CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1
c3RvbS5jcHAKaW5kZXggZDgyODVkN2M3ZTQyM2Y2ZDc2OTUwYzIyNzIxMmEyOGQ4N2I3Mjc1Yy4u
ODQxMTllZThjZjc1OGY5NjU2OGY1ZjdhZmEyYTkyODFjNTEyOTQxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKQEAgLTUxLDMxICs1MSwyMCBAQCBK
U1ZhbHVlIEpTRXZlbnQ6OmNsaXBib2FyZERhdGEoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIAog
I2RlZmluZSBUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRShpbnRlcmZhY2VOYW1lKSBcCiAgICAg
Y2FzZSBpbnRlcmZhY2VOYW1lIyNJbnRlcmZhY2VUeXBlOiBcCi0gICAgICAgIHJldHVybiBDUkVB
VEVfRE9NX1dSQVBQRVIoJmdsb2JhbE9iamVjdCwgaW50ZXJmYWNlTmFtZSwgV1RGTW92ZShldmVu
dCkpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgaW50
ZXJmYWNlTmFtZSwgV1RGTW92ZShldmVudCkpOwogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUgY3Jl
YXRlTmV3RXZlbnRXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxF
dmVudD4mJiBldmVudCkKK0pTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RXZlbnQ+JiYgZXZlbnQpCiB7CiAgICAg
c3dpdGNoIChldmVudC0+ZXZlbnRJbnRlcmZhY2UoKSkgewogICAgICAgICBET01fRVZFTlRfSU5U
RVJGQUNFU19GT1JfRUFDSChUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRSkKICAgICB9CiAKLSAg
ICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKCZnbG9iYWxPYmplY3QsIEV2ZW50LCBXVEZNb3Zl
KGV2ZW50KSk7Ci19Ci0KLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFdmVudCYgZXZlbnQpCi17Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2so
Z2xvYmFsT2JqZWN0LT52bSgpKTsKLQotICAgIGlmIChhdXRvKiB3cmFwcGVyID0gZ2V0Q2FjaGVk
V3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGV2ZW50KSkKLSAgICAgICAgcmV0dXJuIHdy
YXBwZXI7Ci0KLSAgICByZXR1cm4gY3JlYXRlTmV3RXZlbnRXcmFwcGVyKCpnbG9iYWxPYmplY3Qs
IGV2ZW50KTsKKyAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgRXZl
bnQsIFdURk1vdmUoZXZlbnQpKTsKIH0KIAotCi1KU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPEV2ZW50PiYmIGV2
ZW50KQorSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEV2ZW50JiBldmVudCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3RXZlbnRX
cmFwcGVyKCpnbG9iYWxPYmplY3QsIFdURk1vdmUoZXZlbnQpKTsKKyAgICByZXR1cm4gd3JhcChz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCBldmVudCk7CiB9CiAKICN1bmRlZiBUUllfVE9fV1JBUF9XSVRI
X0lOVEVSRkFDRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
Q29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxD
b2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCBiODQ0ZTMzYjE0NzQwMGY2NGI4MjMxMTM4MzZiMmYz
YzIzYzVmNzFhLi5hY2VmNmQ4YmJlZTFlYWFjZjA0ZDc2OGZkYzhiYjBkNDAxZmE2ZWE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcApAQCAtNTMsMjMgKzUzLDI1IEBAIGJvb2wgSlNIVE1MQ29sbGVjdGlvbjo6bmFtZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVjdGlvbiYgY29sbGVjdGlvbikKK0pTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWY8SFRNTENvbGxlY3Rpb24+JiYgY29sbGVjdGlvbikKIHsKLSAgICBpZiAoYXV0byog
d3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBjb2xsZWN0
aW9uKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0KLSAgICBzd2l0Y2ggKGNvbGxlY3Rpb24u
dHlwZSgpKSB7CisgICAgc3dpdGNoIChjb2xsZWN0aW9uLT50eXBlKCkpIHsKICAgICBjYXNlIEZv
cm1Db250cm9sczoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmpl
Y3QsIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKKyAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLCBXVEZNb3ZlKGNvbGxlY3Rpb24pKTsKICAgICBjYXNlIFNlbGVjdE9wdGlvbnM6Ci0g
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBIVE1MT3B0aW9u
c0NvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQ
UEVSKGdsb2JhbE9iamVjdCwgSFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBXVEZNb3ZlKGNvbGxlY3Rp
b24pKTsKICAgICBjYXNlIERvY0FsbDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBF
UihnbG9iYWxPYmplY3QsIEhUTUxBbGxDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKKyAgICAgICAg
cmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEhUTUxBbGxDb2xsZWN0aW9u
LCBXVEZNb3ZlKGNvbGxlY3Rpb24pKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgSFRNTENv
bGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xv
YmFsT2JqZWN0LCBIVE1MQ29sbGVjdGlvbiwgV1RGTW92ZShjb2xsZWN0aW9uKSk7Cit9CisKK0pT
VmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBIVE1MQ29sbGVjdGlvbiYgY29sbGVjdGlvbikKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0
ZSwgZ2xvYmFsT2JqZWN0LCBjb2xsZWN0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0
b20uY3BwCmluZGV4IDVjYTBkZGVkN2Y4OTExZjY1NGFhMzg3MDEwNTk3YTQ1MTdjMTVkZmYuLjI2
MzkxM2M4NWQ0MjE4ODM5Y2RmNTI1MDQ1MGY2MDQwZGJlNjJmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTUzLDEy
ICs1MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjcmVhdGVOZXdIVE1MRG9jdW1lbnRXcmFwcGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxI
VE1MRG9jdW1lbnQ+JiYgcGFzc2VkRG9jdW1lbnQpCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPEhU
TUxEb2N1bWVudD4mJiBwYXNzZWREb2N1bWVudCkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9IHBh
c3NlZERvY3VtZW50LmdldCgpOwotICAgIEpTT2JqZWN0KiB3cmFwcGVyID0gQ1JFQVRFX0RPTV9X
UkFQUEVSKCZnbG9iYWxPYmplY3QsIEhUTUxEb2N1bWVudCwgV1RGTW92ZShwYXNzZWREb2N1bWVu
dCkpOworICAgIEpTT2JqZWN0KiB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcjxKU0hUTUxEb2N1bWVu
dD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHBhc3NlZERvY3VtZW50KSk7CiAKLSAgICByZXBvcnRN
ZW1vcnlGb3JEb2N1bWVudElmRnJhbWVsZXNzKHN0YXRlLCBkb2N1bWVudCk7CisgICAgcmVwb3J0
TWVtb3J5Rm9yRG9jdW1lbnRJZkZyYW1lbGVzcygqc3RhdGUsIGRvY3VtZW50KTsKIAogICAgIHJl
dHVybiB3cmFwcGVyOwogfQpAQCAtNjcsMTIgKzY3LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEhUTUxEb2N1bWVudCYg
ZG8KIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGNhY2hlZERvY3VtZW50V3JhcHBlcigqc3Rh
dGUsICpnbG9iYWxPYmplY3QsIGRvY3VtZW50KSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0g
ICAgcmV0dXJuIGNyZWF0ZU5ld0hUTUxEb2N1bWVudFdyYXBwZXIoKnN0YXRlLCAqZ2xvYmFsT2Jq
ZWN0LCBkb2N1bWVudCk7Ci19Ci0KLUpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8SFRNTERvY3VtZW50
PiYmIGRvY3VtZW50KQotewotICAgIHJldHVybiBjcmVhdGVOZXdIVE1MRG9jdW1lbnRXcmFwcGVy
KCpzdGF0ZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShkb2N1bWVudCkpOworICAgIHJldHVybiB0
b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIFJlZjxIVE1MRG9jdW1lbnQ+KGRv
Y3VtZW50KSk7CiB9CiAKIGJvb2wgSlNIVE1MRG9jdW1lbnQ6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTFRlbXBsYXRlRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGRjMzQyY2Q0
ZTc4NjYzMjE1YzVlODM2M2E4MzNkN2FhMjUwM2VlNGEuLjEwNGRhYzQ4ZjNjZDVmMzRjZDhkNTBj
NzJkN2FjM2VkZGY4Y2EwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTFRlbXBsYXRlRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDUsMTIgKzQ1LDgg
QEAgSlNWYWx1ZSBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNvbnRlbnQoRXhlY1N0YXRlJiBzdGF0
ZSkgY29uc3QKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jaygmc3RhdGUpOwogCi0gICAgYXV0byYg
Y29udGVudCA9IHdyYXBwZWQoKS5jb250ZW50KCk7CisgICAgYXV0byB3cmFwcGVyID0gd3JhcCgm
c3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkuY29udGVudCgpKTsKIAotICAgIGlmIChh
dXRvKiB3cmFwcGVyID0gZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwg
Y29udGVudCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwotCi0gICAgYXV0byogd3JhcHBlciA9
IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QoKSwgRG9jdW1lbnRGcmFnbWVudCwgY29u
dGVudCk7CiAgICAgUHJpdmF0ZU5hbWUgcHJvcGVydHlOYW1lOwogICAgIGNvbnN0X2Nhc3Q8SlNI
VE1MVGVtcGxhdGVFbGVtZW50Kj4odGhpcyktPnB1dERpcmVjdChnbG9iYWxPYmplY3QoKS0+dm0o
KSwgcHJvcGVydHlOYW1lLCB3cmFwcGVyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQ3Vyc29yQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQ3Vyc29yQ3VzdG9tLmNwcAppbmRleCA0OWE4
NTdiMjhmOTVhNDgxNzZiOGJlNmZkYTI0YmFhNWUwNGQ1M2ExLi5iZmMxOGYxMzdjYTYwYzY5OTBh
MDE5MTY0ZDExMWFjMTkyNThlYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0lEQkN1cnNvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJREJDdXJzb3JDdXN0b20uY3BwCkBAIC01MiwxMiArNTIsMTYgQEAgSlNWYWx1ZSBKU0lE
QkN1cnNvcjo6c291cmNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgcmV0dXJuIHRvSlMo
JnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgY3Vyc29yLm9iamVjdFN0b3JlKCkpOwogfQogCi1KU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBJREJDdXJzb3ImIGN1cnNvcikKK0pTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxJREJDdXJzb3I+JiYg
Y3Vyc29yKQogewogICAgIGlmIChpczxJREJDdXJzb3JXaXRoVmFsdWU+KGN1cnNvcikpCi0gICAg
ICAgIHJldHVybiB3cmFwPEpTSURCQ3Vyc29yV2l0aFZhbHVlPihnbG9iYWxPYmplY3QsIGRvd25j
YXN0PElEQkN1cnNvcldpdGhWYWx1ZT4oY3Vyc29yKSk7CisgICAgICAgIHJldHVybiBDUkVBVEVf
RE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBJREJDdXJzb3JXaXRoVmFsdWUsIFdURk1vdmUoY3Vy
c29yKSk7CisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8SlNJREJDdXJzb3I+KGdsb2JhbE9iamVj
dCwgV1RGTW92ZShjdXJzb3IpKTsKK30KIAotICAgIHJldHVybiB3cmFwPEpTSURCQ3Vyc29yPihn
bG9iYWxPYmplY3QsIGN1cnNvcik7CitKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJREJDdXJzb3ImIGN1cnNvcikKK3sK
KyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBjdXJzb3IpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lt
YWdlRGF0YUN1c3RvbS5jcHAKaW5kZXggYTllNzNiNzc1ZjUyZDE4Y2Y4NzJjY2Q1ZThlMzEzY2Vi
NjdhMzFjNy4uODcwODI2YzU1OGI3ZmI4M2NjMzk2MjkwODM2NTVhOTcyYTQ5NWRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcApAQCAt
NTAsOSArNTAsNyBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPAogCiBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRh
JiBpbWFnZURhdGEpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVy
KGdsb2JhbE9iamVjdC0+d29ybGQoKSwgaW1hZ2VEYXRhKSkKLSAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7Ci0gICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgUmVm
PEltYWdlRGF0YT4oaW1hZ2VEYXRhKSk7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9i
amVjdCwgaW1hZ2VEYXRhKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcAppbmRl
eCBkZTQ3MWRiOTE2YTM5MzM0OGFmOGNiOTUzZGZjNTNmMmFkMTUyODBhLi5iMmM2MjU3YjdiODVh
MzY5MTgxNTIzMWE3ZmI0NGQ1MzRhMGIxNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNw
cApAQCAtMzcsMTIgKzM3LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyYgb2JqZWN0KQor
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+JiYgb2Jq
ZWN0KQogewogICAgIGlmIChvYmplY3QuaGFzVmlkZW9Tb3VyY2UoKSkKLSAgICAgICAgcmV0dXJu
IHdyYXA8SlNBbGxWaWRlb0NhcGFiaWxpdGllcz4oZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxB
bGxWaWRlb0NhcGFiaWxpdGllcyY+KG9iamVjdCkpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RP
TV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgQWxsVmlkZW9DYXBhYmlsaXRpZXMsIFdURk1vdmUob2Jq
ZWN0KSk7CisgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEFsbEF1
ZGlvQ2FwYWJpbGl0aWVzLCBXVEZNb3ZlKG9iamVjdCkpOworfQogCi0gICAgcmV0dXJuIHdyYXA8
SlNBbGxBdWRpb0NhcGFiaWxpdGllcz4oZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxBbGxBdWRp
b0NhcGFiaWxpdGllcyY+KG9iamVjdCkpOworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
JiBvYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgb2JqZWN0
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlTGlzdEN1c3RvbS5oCmluZGV4IGJmM2NjZDJlMzM5NDE3NGY1MWY0MDY1Zjgy
MGNlNWRhNWNiMjJhNWEuLjZjZTNlN2I5NWJjMzMxY2IzODU1M2YwOTNkODYwNzE0N2QwZDlhZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmgKQEAg
LTM1LDggKzM1LDggQEAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIGNyZWF0ZVdyYXBwZXIo
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8Tm9kZUxpc3Q+JiYpOwogCiBBTFdBWVNfSU5MSU5FIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgTm9kZUxpc3QmIG5vZGVMaXN0KQogewotICAgIGlmIChKU0M6OkpTVmFsdWUgZXhp
c3RpbmdXcmFwcGVyID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTTm9kZUxpc3Q+KGdsb2JhbE9iamVj
dCwgbm9kZUxpc3QpKQotICAgICAgICByZXR1cm4gZXhpc3RpbmdXcmFwcGVyOworICAgIGlmIChh
dXRvIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgbm9k
ZUxpc3QpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cigqZ2xvYmFsT2JqZWN0LCBub2RlTGlzdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1BlcmZvcm1hbmNlRW50cnlDdXN0b20uY3BwCmluZGV4IGQxODUy
ZTBiNWYxYzQ1MTBiODEyNzRiMTBkMGM3NTA3ZDFlZWE4NzguLjJkNjY1YTlmZWEzZjhjNGY5NDRk
ODExMDkxMDkzZTAyYjZkNGM3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcApAQCAtNDcsMjAgKzQ3LDI1IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBlcmZvcm1h
bmNlRW50cnkmIGVudHJ5KQorSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxQZXJmb3JtYW5jZUVudHJ5PiYmIGVu
dHJ5KQogewogICAgIGlmIChpczxQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nPihlbnRyeSkpCi0g
ICAgICAgIHJldHVybiB3cmFwPEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZz4oZ2xvYmFsT2Jq
ZWN0LCBkb3duY2FzdDxQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nPihlbnRyeSkpOworICAgICAg
ICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgUGVyZm9ybWFuY2VSZXNv
dXJjZVRpbWluZywgV1RGTW92ZShlbnRyeSkpOwogCiAjaWYgRU5BQkxFKFVTRVJfVElNSU5HKQog
ICAgIGlmIChpczxQZXJmb3JtYW5jZU1hcms+KGVudHJ5KSkKLSAgICAgICAgcmV0dXJuIHdyYXA8
SlNQZXJmb3JtYW5jZU1hcms+KGdsb2JhbE9iamVjdCwgZG93bmNhc3Q8UGVyZm9ybWFuY2VNYXJr
PihlbnRyeSkpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVj
dCwgUGVyZm9ybWFuY2VNYXJrLCBXVEZNb3ZlKGVudHJ5KSk7CiAKICAgICBpZiAoaXM8UGVyZm9y
bWFuY2VNZWFzdXJlPihlbnRyeSkpCi0gICAgICAgIHJldHVybiB3cmFwPEpTUGVyZm9ybWFuY2VN
ZWFzdXJlPihnbG9iYWxPYmplY3QsIGRvd25jYXN0PFBlcmZvcm1hbmNlTWVhc3VyZT4oZW50cnkp
KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFBlcmZv
cm1hbmNlTWVhc3VyZSwgV1RGTW92ZShlbnRyeSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gd3Jh
cDxKU1BlcmZvcm1hbmNlRW50cnk+KGdsb2JhbE9iamVjdCwgZW50cnkpOworICAgIHJldHVybiBj
cmVhdGVXcmFwcGVyPEpTUGVyZm9ybWFuY2VFbnRyeT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVu
dHJ5KSk7Cit9CisKK0pTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBlcmZvcm1hbmNlRW50cnkmIGVudHJ5KQoreworICAg
IHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGVudHJ5KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
VkdQYXRoU2VnQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHUGF0
aFNlZ0N1c3RvbS5jcHAKaW5kZXggMGNlYWMyNTMwNGY5N2IxYzllNGEwNWJjNjBiYjY2ZThhMWUx
NTczZS4uNzYxNmMzMmU0MzE3YjkwNjM2MzMxODhlYzU2OWQ2NGUzNjdlY2IyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQYXRoU2VnQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BhdGhTZWdDdXN0b20uY3BwCkBAIC01
OSw1NCArNTksNTYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU1ZHUGF0aFNlZyYgb2JqZWN0KQorSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxTVkdQYXRoU2VnPiYm
IG9iamVjdCkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xv
YmFsT2JqZWN0LT53b3JsZCgpLCBvYmplY3QpKQotICAgICAgICByZXR1cm4gd3JhcHBlcjsKLQot
ICAgIHN3aXRjaCAob2JqZWN0LnBhdGhTZWdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKG9iamVjdC0+
cGF0aFNlZ1R5cGUoKSkgewogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DTE9TRVBBVEg6
Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRo
U2VnQ2xvc2VQYXRoLCBvYmplY3QpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVS
KGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0Nsb3NlUGF0aCwgV1RGTW92ZShvYmplY3QpKTsKICAg
ICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTU9WRVRPX0FCUzoKLSAgICAgICAgcmV0dXJuIENS
RUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdNb3ZldG9BYnMsIG9iamVj
dCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQ
YXRoU2VnTW92ZXRvQWJzLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6
UEFUSFNFR19NT1ZFVE9fUkVMOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGds
b2JhbE9iamVjdCwgU1ZHUGF0aFNlZ01vdmV0b1JlbCwgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJu
IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdNb3ZldG9SZWwsIFdU
Rk1vdmUob2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19BQlM6
Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRo
U2VnTGluZXRvQWJzLCBvYmplY3QpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVS
KGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0xpbmV0b0FicywgV1RGTW92ZShvYmplY3QpKTsKICAg
ICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX1JFTDoKLSAgICAgICAgcmV0dXJuIENS
RUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdMaW5ldG9SZWwsIG9iamVj
dCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQ
YXRoU2VnTGluZXRvUmVsLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6
UEFUSFNFR19DVVJWRVRPX0NVQklDX0FCUzoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JB
UFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMsIG9iamVjdCk7Cisg
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljQWJzLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6
UEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JB
UFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwsIG9iamVjdCk7Cisg
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljUmVsLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6
UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlM6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9N
X1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficywgb2Jq
ZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzLCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2Ug
U1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUw6Ci0gICAgICAgIHJldHVy
biBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRy
YXRpY1JlbCwgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9i
YWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsLCBXVEZNb3ZlKG9iamVjdCkp
OwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19BUkNfQUJTOgotICAgICAgICByZXR1cm4g
Q1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0FyY0Ficywgb2JqZWN0
KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1Bh
dGhTZWdBcmNBYnMsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRI
U0VHX0FSQ19SRUw6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2Jq
ZWN0LCBTVkdQYXRoU2VnQXJjUmVsLCBvYmplY3QpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RP
TV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0FyY1JlbCwgV1RGTW92ZShvYmplY3Qp
KTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTOgot
ICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNl
Z0xpbmV0b0hvcml6b250YWxBYnMsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9N
X1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicywgV1RG
TW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX0hPUkla
T05UQUxfUkVMOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVj
dCwgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwsIG9iamVjdCk7CisgICAgICAgIHJldHVy
biBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTGluZXRvSG9yaXpv
bnRhbFJlbCwgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdf
TElORVRPX1ZFUlRJQ0FMX0FCUzoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihn
bG9iYWxPYmplY3QsIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicywgb2JqZWN0KTsKKyAgICAg
ICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdMaW5l
dG9WZXJ0aWNhbEFicywgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBB
VEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JB
UFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCwgb2JqZWN0KTsK
KyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhT
ZWdMaW5ldG9WZXJ0aWNhbFJlbCwgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhT
ZWc6OlBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTOgotICAgICAgICByZXR1cm4gQ1JF
QVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290
aEFicywgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxP
YmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMsIFdURk1vdmUob2JqZWN0KSk7
CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX1JFTDoK
LSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhT
ZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVf
RE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVs
LCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRP
X1FVQURSQVRJQ19TTU9PVEhfQUJTOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVS
KGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMsIG9iamVj
dCk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicywgV1RGTW92ZShvYmplY3QpKTsKICAgICBj
YXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTDoKLSAg
ICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsLCBvYmplY3QpOworICAgICAgICByZXR1cm4gQ1JFQVRF
X0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9v
dGhSZWwsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX1VO
S05PV046CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihn
bG9iYWxPYmplY3QsIFNWR1BhdGhTZWcsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBDUkVBVEVf
RE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnLCBXVEZNb3ZlKG9iamVjdCkpOwog
ICAgIH0KIH0KIAorSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWcmIG9iamVjdCkKK3sKKyAgICByZXR1cm4gd3Jh
cChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAppbmRleCBhNzNiZjQ5ZjM0
YjI1YjA3MGJiYzMxMThkNjkwZTI1ZjE0ZDczYWFhLi5mNTEzMzFiOWE1YWNiNjYxMDk2MDVlODhk
NzMwOWRmOGFjODRiODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1N0eWxlU2hlZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3R5bGVTaGVldEN1c3RvbS5jcHAKQEAgLTM1LDEzICszNSwxNiBAQCB2b2lkIEpTU3R5bGVTaGVl
dDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKLUpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3R5bGVTaGVldCYgc3R5bGVTaGVldCkKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFN0
eWxlU2hlZXQ+JiYgc3R5bGVTaGVldCkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENh
Y2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBzdHlsZVNoZWV0KSkKLSAgICAgICAg
cmV0dXJuIHdyYXBwZXI7Ci0gICAgaWYgKHN0eWxlU2hlZXQuaXNDU1NTdHlsZVNoZWV0KCkpCi0g
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NTdHlsZVNo
ZWV0LCBzdHlsZVNoZWV0KTsKLSAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgU3R5bGVTaGVldCwgc3R5bGVTaGVldCk7CisgICAgaWYgKHN0eWxlU2hlZXQtPmlzQ1NT
U3R5bGVTaGVldCgpKQorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgQ1NTU3R5bGVTaGVldCwgV1RGTW92ZShzdHlsZVNoZWV0KSk7CisgICAgcmV0dXJuIENS
RUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQsIFdURk1vdmUoc3R5bGVT
aGVldCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQmIHN0eWxlc2hlZXQpCit7
CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgc3R5bGVzaGVldCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Rl
eHRDdXN0b20uY3BwCmluZGV4IDM2NDJkYWE3MWJkYzNkNTFkM2ZjYjgwZTY3Y2YwZGE3Y2Y1MDgx
NjMuLjIzMzIwZjg0OGMyM2M4MzVmY2VhYjViYjFmMjZhNWZmNjNlN2JlMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0Q3VzdG9tLmNwcApAQCAtMzIsMjMgKzMyLDE2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGNyZWF0ZU5ld1RleHRXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIFJlZjxUZXh0PiYmIHRleHQpCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRleHQ+JiYgdGV4
dCkKIHsKICAgICBpZiAoaXM8Q0RBVEFTZWN0aW9uPih0ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUigmZ2xvYmFsT2JqZWN0LCBDREFUQVNlY3Rpb24sIFdURk1v
dmUodGV4dCkpOwotICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoJmdsb2JhbE9iamVjdCwg
VGV4dCwgV1RGTW92ZSh0ZXh0KSk7CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIo
Z2xvYmFsT2JqZWN0LCBDREFUQVNlY3Rpb24sIFdURk1vdmUodGV4dCkpOworICAgIHJldHVybiBD
UkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBUZXh0LCBXVEZNb3ZlKHRleHQpKTsKIH0K
IAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFRleHQmIHRleHQpCi17Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFw
cGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgdGV4dCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVy
OwotICAgIHJldHVybiBjcmVhdGVOZXdUZXh0V3JhcHBlcigqZ2xvYmFsT2JqZWN0LCB0ZXh0KTsK
LX0KLQotSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXh0PiYmIHRleHQpCitKU1ZhbHVlIHRvSlMoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGV4dCYgdGV4dCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlTmV3VGV4dFdyYXBwZXIoKmdsb2JhbE9iamVjdCwgV1RGTW92
ZSh0ZXh0KSk7CisgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgdGV4dCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAppbmRleCBmMTM4ZGExMzRmZTkwZTFhZTU2
MWU5N2JmY2RlN2MxMGUyY2QxNWQ5Li5lMzQ5YjRhMmYzODU2NWY0MWE0MWU3ZDY3ZTM0ZGU3MjA1
YWZiZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFj
a0N1ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJh
Y2tDdWVDdXN0b20uY3BwCkBAIC03NiwxMCArNzYsNyBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRleHRU
cgogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGV4dFRyYWNrQ3VlJiBjdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIg
PSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgY3VlKSkKLSAgICAgICAg
cmV0dXJuIHdyYXBwZXI7Ci0KLSAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgZ2xv
YmFsT2JqZWN0LCBSZWY8VGV4dFRyYWNrQ3VlPihjdWUpKTsKKyAgICByZXR1cm4gd3JhcChzdGF0
ZSwgZ2xvYmFsT2JqZWN0LCBjdWUpOwogfQogCiB2b2lkIEpTVGV4dFRyYWNrQ3VlOjp2aXNpdEFk
ZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAKaW5kZXggODY1ZTIwZDA2Mzg0NDY5MzczYzNh
ZGJhOTBhNzFmNjdlNDRmMmQzNy4uOTIxYmNiNzdkNzJjZDc2OGM4YzI2MDA1Y2YwYzgxZTQyYWE1
NWQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAK
QEAgLTUzLDMwICs1MywyMiBAQCBUcmFja0Jhc2UqIHRvVHJhY2soSlNWYWx1ZSB2YWx1ZSkKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUcmFja0Jhc2UmIHRyYWNrKQorSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUcmFja0Jhc2UmIHRyYWNrKQogewogICAgIHN3aXRjaCAodHJhY2sudHlw
ZSgpKSB7CiAgICAgY2FzZSBUcmFja0Jhc2U6OkJhc2VUcmFjazoKICAgICAgICAgLy8gVGhpcyBz
aG91bGQgbmV2ZXIgaGFwcGVuLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIAotICAgIGNhc2UgVHJhY2tCYXNlOjpBdWRpb1RyYWNrOgotICAg
ICAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53
b3JsZCgpLCBkb3duY2FzdDxBdWRpb1RyYWNrPih0cmFjaykpKQotICAgICAgICAgICAgcmV0dXJu
IHdyYXBwZXI7Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0
LCBBdWRpb1RyYWNrLCB0cmFjayk7CiAKKyAgICBjYXNlIFRyYWNrQmFzZTo6QXVkaW9UcmFjazoK
KyAgICAgICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgZG93bmNhc3Q8QXVkaW9U
cmFjaz4odHJhY2spKTsKICAgICBjYXNlIFRyYWNrQmFzZTo6VmlkZW9UcmFjazoKLSAgICAgICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQo
KSwgZG93bmNhc3Q8VmlkZW9UcmFjaz4odHJhY2spKSkKLSAgICAgICAgICAgIHJldHVybiB3cmFw
cGVyOwotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgVmlk
ZW9UcmFjaywgdHJhY2spOwotCisgICAgICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIGRvd25jYXN0PFZpZGVvVHJhY2s+KHRyYWNrKSk7CiAgICAgY2FzZSBUcmFja0Jhc2U6OlRl
eHRUcmFjazoKLSAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGds
b2JhbE9iamVjdC0+d29ybGQoKSwgZG93bmNhc3Q8VGV4dFRyYWNrPih0cmFjaykpKQotICAgICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIo
Z2xvYmFsT2JqZWN0LCBUZXh0VHJhY2ssIHRyYWNrKTsKKyAgICAgICAgcmV0dXJuIHdyYXAoc3Rh
dGUsIGdsb2JhbE9iamVjdCwgZG93bmNhc3Q8VGV4dFRyYWNrPih0cmFjaykpOwogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiBqc051bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBiOGU4ZDVjOGU4ZjdmM2Mw
YmEwZDZiYWIwZjRiMzk4OTVkNDY5YjJjLi4wMGU3MGMwYzQ5MGExNDZlMTJmN2I0ZjAyNjU1ZTA5
ZmRhM2NiNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTERv
Y3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTERv
Y3VtZW50Q3VzdG9tLmNwcApAQCAtMzUsMTYgKzM1LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGNyZWF0ZU5l
d1hNTERvY3VtZW50V3JhcHBlcihFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0LCBSZWY8WE1MRG9jdW1lbnQ+JiYgcGFzc2VkRG9jdW1lbnQpCitKU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFhNTERvY3VtZW50PiYmIHBhc3NlZERvY3VtZW50KQogewogICAgIGF1
dG8mIGRvY3VtZW50ID0gcGFzc2VkRG9jdW1lbnQuZ2V0KCk7CiAgICAgSlNPYmplY3QqIHdyYXBw
ZXI7CiAgICAgaWYgKGRvY3VtZW50LmlzU1ZHRG9jdW1lbnQoKSkKLSAgICAgICAgd3JhcHBlciA9
IENSRUFURV9ET01fV1JBUFBFUigmZ2xvYmFsT2JqZWN0LCBTVkdEb2N1bWVudCwgV1RGTW92ZShw
YXNzZWREb2N1bWVudCkpOworICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGds
b2JhbE9iamVjdCwgU1ZHRG9jdW1lbnQsIFdURk1vdmUocGFzc2VkRG9jdW1lbnQpKTsKICAgICBl
bHNlCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoJmdsb2JhbE9iamVjdCwg
WE1MRG9jdW1lbnQsIFdURk1vdmUocGFzc2VkRG9jdW1lbnQpKTsKKyAgICAgICAgd3JhcHBlciA9
IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFhNTERvY3VtZW50LCBXVEZNb3ZlKHBh
c3NlZERvY3VtZW50KSk7CiAKLSAgICByZXBvcnRNZW1vcnlGb3JEb2N1bWVudElmRnJhbWVsZXNz
KHN0YXRlLCBkb2N1bWVudCk7CisgICAgcmVwb3J0TWVtb3J5Rm9yRG9jdW1lbnRJZkZyYW1lbGVz
cygqc3RhdGUsIGRvY3VtZW50KTsKIAogICAgIHJldHVybiB3cmFwcGVyOwogfQpAQCAtNTMsMTIg
KzUzLDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFhNTERvY3VtZW50JiBkb2MKIHsKICAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGNhY2hlZERvY3VtZW50V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmplY3QsIGRvY3VtZW50
KSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1hNTERvY3Vt
ZW50V3JhcHBlcigqc3RhdGUsICpnbG9iYWxPYmplY3QsIGRvY3VtZW50KTsKLX0KLQotSlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxYTUxEb2N1bWVudD4mJiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4g
Y3JlYXRlTmV3WE1MRG9jdW1lbnRXcmFwcGVyKCpzdGF0ZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShkb2N1bWVudCkpOworICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxP
YmplY3QsIFJlZjxYTUxEb2N1bWVudD4oZG9jdW1lbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCAxMmJmYmQzNzJhOTA1ZGNjZWRiNmU4NGVlMmY2MDBlZTQ3NzllZDg5
Li4wZTMwNDgyNzM3Y2UzOWVjYjEzZjRjYzM0NjAwZDUyMGQxZWExNzExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzQx
MiwyNiArMzQxMiwxMCBAQCBFTkQKIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPCRpbXBsVHlwZT4mJiBpbXBsKVxuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY3JlYXRlTmV3V3Jh
cHBlcjwkY2xhc3NOYW1lLCAkaW1wbFR5cGU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
XG4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdCwgV1RG
TW92ZShpbXBsKSk7XG4iKTsKLSAgICAgICAgfQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
In1cblxuIik7Ci0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsICRpbXBs
VHlwZSYgaW1wbClcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAg
ICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPCRjbGFzc05h
bWUsICRpbXBsVHlwZT4oZ2xvYmFsT2JqZWN0LCBpbXBsKSlcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChKU1ZhbHVlIHJl
c3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QsIGltcGwp
KVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHJl
c3VsdDtcbiIpOwotICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCkg
aWYgJHZ0YWJsZU5hbWVHbnU7CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAg
dm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZp
bXBsKSk7CisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KGltcGwucHRyKCkpKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCogZXhw
ZWN0ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJHt2dGFibGVSZWZX
aW59KTsKICNlbHNlCkBAIC0zNDU5LDExICszNDQzLDE1IEBAIEVORAogI2VuZGlmCiBFTkQKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiUmVwb3J0RXh0cmFNZW1vcnlDb3N0In07Ci0gICAgZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoaW1wbC5tZW1vcnlDb3N0KCkpOwor
ICAgIGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKGlt
cGwtPm1lbW9yeUNvc3QoKSk7CiBFTkQKIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjwkY2xhc3NOYW1lLCAkaW1wbFR5cGU+KGdsb2JhbE9i
amVjdCwgaW1wbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IGNyZWF0ZU5ld1dyYXBwZXI8JGNsYXNzTmFtZSwgJGltcGxUeXBlPihnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
IAorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgJGltcGxUeXBl
JiBpbXBsKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3Qs
IGltcGwpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggNmMxOWExYWZhMzFjMjgw
ZmFiZDVkN2Q5YTkwYzhhZjBmZmE3YmVlZi4uOWE2NGQzMjA0OTVhN2I2ZGFiMjdiMjUzYTdhMjI4
MjQzMmNhYjZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTI1Miwx
NiArMjUyLDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMTlUZXN0
QWN0aXZlRE9NT2JqZWN0RVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RB
Y3RpdmVET01PYmplY3Q+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxK
U1Rlc3RBY3RpdmVET01PYmplY3Q+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0K
LUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdEFjdGl2ZURPTU9iamVjdCYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1
ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0PihnbG9i
YWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJ
TkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50
ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RBY3RpdmVET01PYmplY3RAV2ViQ29yZUBA
NkJAIikpOwogI2Vsc2UKQEAgLTI3OCw3ICsyNzEsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0QWN0aXZl
RE8KICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0
byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFs
VlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0
dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0LCBUZXN0QWN0aXZlRE9N
T2JqZWN0PihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVy
PEpTVGVzdEFjdGl2ZURPTU9iamVjdCwgVGVzdEFjdGl2ZURPTU9iamVjdD4oZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0QWN0aXZlRE9NT2Jq
ZWN0JiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwp
OwogfQogCiBUZXN0QWN0aXZlRE9NT2JqZWN0KiBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OnRvV3Jh
cHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCA0ODgxNWZmZGU5NWQyMGRmYTIwNjI5
ZGU2NjM2NDhiMzA0OGRmZjE0Li5kNGZkMjI2ZjQzYTRlMGYzMGFmNTg4NzRhZTM2N2M1NjA0MzNl
ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKQEAgLTE3OCwxNiArMTc4LDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lk
KiBfWlRWTjdXZWJDb3JlMzNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JFW107IH0K
IAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yJiBpbXBs
KQotewotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2
b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmlt
cGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0
PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBl
Y3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIo
Ij8/XzdUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JAV2ViQ29yZUBANkJAIikpOwog
I2Vsc2UKQEAgLTIwNCw3ICsxOTcsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q2xhc3NXaXQKICAgICAv
LyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50
ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9p
bnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0
ZU5ld1dyYXBwZXI8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IsIFRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1
cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvciwg
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPihnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvciYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBp
bXBsKTsKIH0KIAogVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IGRkYWJhNGMyNTJmYjA2YWI2MWQ4OTNmODcxNmY3
NjYyNWJlOGQ3ZmEuLmU3Njg2MjM4NDY2NTFhNDg0NDNiNDJhMGQzYjdjZTkwM2Y5MWI0ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMTY4LDE2ICsxNjgsOSBAQCBleHRlcm4gIkMiIHsg
ZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU0MlRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iagogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRl
TmV3V3JhcHBlcjxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4o
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QmIGltcGwpCi17Ci0gICAgaWYgKEpTVmFs
dWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0PihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4g
cmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVh
bFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAg
IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihp
bXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxl
UG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdEBXZWJDb3JlQEA2QkAiKSk7CiAj
ZWxzZQpAQCAtMTk0LDcgKzE4NywxMiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDdXN0b21DbwogICAgIC8v
IGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRl
cmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2lu
dGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRl
TmV3V3JhcHBlcjxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCwg
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0PihnbG9iYWxPYmplY3Qs
IGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LCBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3Q+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0JiBpbXBs
KQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIEpTVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggMWM2Y2I0ZTY2
MDY2ZWFhMzA0MmZiNDk4YmQwMDI5Y2UxYTJmMWIwMS4uZjM4MTAyNzBlOGIzNmFlYWE2Zjc1YmVk
ZWM3NTBjYzQ1MzM1ZDFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3Bw
CkBAIC0yMjUsMTYgKzIyNSw5IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2Vi
Q29yZTIxVGVzdEN1c3RvbU5hbWVkR2V0dGVyRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RDdXN0b21OYW1lZEdldHRlcj4mJiBpbXBsKQogewotICAgIHJldHVybiBjcmVh
dGVOZXdXcmFwcGVyPEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyPihnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDdXN0b21OYW1lZEdldHRlciYgaW1wbCkK
LXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXI+KGdsb2JhbE9iamVjdCwgaW1wbCkpCi0gICAgICAgIHJldHVybiByZXN1
bHQ7CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgdm9pZCogYWN0dWFsVlRh
YmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZpbXBsKSk7CisgICAgdm9p
ZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGltcGwu
cHRyKCkpKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2lu
dGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVyKCI/P183VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyQFdlYkNvcmVAQDZCQCIpKTsKICNlbHNlCkBAIC0yNTEsNyArMjQ0LDEyIEBA
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdEN1c3RvbU5hCiAgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxl
VmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgogICAg
IFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2lu
dGVyKTsKICNlbmRpZgotICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLCBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+KGdsb2JhbE9iamVjdCwgaW1wbCk7Cisg
ICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIsIFRlc3RD
dXN0b21OYW1lZEdldHRlcj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXImIGltcGwpCit7CisgICAgcmV0dXJu
IHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKIFRlc3RDdXN0b21OYW1lZEdl
dHRlciogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTFkOGZmMzFiZGQ0
N2RhYjUzNTU4MDFiMzA3OWI3MTQxZWU5ZTRhNS4uZTg5OTUzY2ZkMmM3MzgwODRiZjUxZWRmYjFj
MWMwYWUyMmM0YzU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAt
MjczLDE2ICsyNzMsOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUy
MFRlc3RFdmVudENvbnN0cnVjdG9yRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVh
dGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
PFRlc3RFdmVudENvbnN0cnVjdG9yPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dy
YXBwZXI8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXZlbnRDb25zdHJ1Y3RvciYgaW1wbCkKLXsKLSAgICBp
ZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lm
IEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVy
ID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxW
VGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwog
I2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckBXZWJDb3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMjk5LDcgKzI5MiwxMiBAQCBKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRlc3RFdmVudENvbgogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24g
YXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FT
U0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5k
aWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yLCBU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3Jl
YXRlTmV3V3JhcHBlcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yLCBUZXN0RXZlbnRDb25zdHJ1Y3Rv
cj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
ZXN0RXZlbnRDb25zdHJ1Y3RvciYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xv
YmFsT2JqZWN0LCBpbXBsKTsKIH0KIAogVGVzdEV2ZW50Q29uc3RydWN0b3IqIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3I6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcAppbmRleCA0YjY0NWRmMzE2OWIzMWQ0MTJlOTkxYWM5NDhmZGI2MDczYjRjODVi
Li5mMDIwMmViNjcyNWM5MmNkM2FlM2Q3NWEwYzU3MjNmNWRmN2I5ZmFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAKQEAgLTIzMiwxNiArMjMyLDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2
b2lkKiBfWlRWTjdXZWJDb3JlMTVUZXN0RXZlbnRUYXJnZXRFW107IH0KIAogSlNDOjpKU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdEV2ZW50VGFyZ2V0PiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZU5ld1dyYXBwZXI8SlNUZXN0RXZlbnRUYXJnZXQ+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV2ZW50VGFyZ2V0JiBpbXBsKQotewotICAgIGlm
IChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3RFdmVudFRhcmdldD4o
Z2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQ
b2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBM
QVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJl
dF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0RXZlbnRUYXJnZXRAV2ViQ29yZUBA
NkJAIikpOwogI2Vsc2UKQEAgLTI1OCw3ICsyNTEsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXZlbnRU
YXIKICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0
byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFs
VlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0
dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0RXZlbnRUYXJnZXQsIFRlc3RFdmVudFRhcmdldD4o
Z2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RF
dmVudFRhcmdldCwgVGVzdEV2ZW50VGFyZ2V0PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudFRhcmdldCYgaW1wbCkKK3sKKyAgICBy
ZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIAogVGVzdEV2ZW50VGFy
Z2V0KiBKU1Rlc3RFdmVudFRhcmdldDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
eGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggZjMwMWI1ZjcxYmI2MWY5N2YzNWE0ODE4NzlhMGMxYzY5
YTBmNTkwYy4uNTEwMDRkNWYwMjIwN2NiZjRiN2Q5OTc2ZTk4YjEyYzRmNTU2N2EyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2Vw
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTIwNiwxNiArMjA2LDkgQEAgZXh0ZXJuICJDIiB7IGV4dGVy
biB2b2lkKiBfWlRWTjdXZWJDb3JlMTNUZXN0RXhjZXB0aW9uRVtdOyB9CiAKIEpTQzo6SlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RFeGNlcHRpb24+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3Jl
YXRlTmV3V3JhcHBlcjxKU1Rlc3RFeGNlcHRpb24+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV4Y2VwdGlvbiYgaW1wbCkKLXsKLSAgICBpZiAoSlNW
YWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0RXhjZXB0aW9uPihnbG9iYWxP
YmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJ
TkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIg
PSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0o
V0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RFeGNlcHRpb25AV2ViQ29yZUBANkJAIikpOwog
I2Vsc2UKQEAgLTIzMiw3ICsyMjUsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXhjZXB0aW8KICAgICAv
LyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50
ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9p
bnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0
ZU5ld1dyYXBwZXI8SlNUZXN0RXhjZXB0aW9uLCBUZXN0RXhjZXB0aW9uPihnbG9iYWxPYmplY3Qs
IGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdEV4Y2VwdGlvbiwgVGVz
dEV4Y2VwdGlvbj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0RXhjZXB0aW9uJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBn
bG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0RXhjZXB0aW9uKiBKU1Rlc3RFeGNlcHRpb246
OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5jcHAKaW5kZXggZWM2OTEwYmIyMmVjZDJmNGM4MjZlYmJjODgyMDI2N2FhNDk2
ZTgwMC4uMGIyYzAyZDgzNjc5ODgwYmI5Y2M5YTQ3ZGUxYjI1ZWY2MTJhMjVhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtMTY1LDE2ICsxNjUsOSBAQCBl
eHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyM1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQot
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSYgaW1wbCkKLXsKLSAgICBpZiAoSlNW
YWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZT4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVO
QUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0g
KihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFi
bGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lm
IFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVy
cHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZUBXZWJDb3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMTkxLDcgKzE4NCwxMiBAQCBKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRlc3RHZW5lcmF0ZQogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24g
YXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FT
U0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5k
aWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LCBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1
cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLCBUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSYgaW1wbCkKK3sKKyAgICByZXR1cm4g
d3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIAogVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUqIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUg
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IGQ1MTI1OWYzNDRjYjA3Mzg1
ZDNjZDZjODM0MzY2ZDk1NmQ3YzQ1MTIuLmRjYzQwMjFhMTJlNWQ2MGJjNmE2N2QzOTcyOTdhZDQy
OGYzN2NlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC0zNDcsMTYgKzM0Nyw5
IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE2VGVzdEdsb2JhbE9i
amVjdEVbXTsgfQogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0R2xvYmFsT2JqZWN0
PiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0R2xvYmFsT2Jq
ZWN0PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RH
bG9iYWxPYmplY3QmIGltcGwpCi17Ci0gICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3Rp
bmdXcmFwcGVyPEpTVGVzdEdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2
b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmlt
cGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0
PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBl
Y3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIo
Ij8/XzdUZXN0R2xvYmFsT2JqZWN0QFdlYkNvcmVAQDZCQCIpKTsKICNlbHNlCkBAIC0zNzMsNyAr
MzY2LDEyIEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEdsb2JhbE9iCiAgICAgLy8gYnkgYWRkaW5nIHRoZSBT
a2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5p
dGlvbgogICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRW
VGFibGVQb2ludGVyKTsKICNlbmRpZgotICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVz
dEdsb2JhbE9iamVjdCwgVGVzdEdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAg
ICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RHbG9iYWxPYmplY3QsIFRlc3RHbG9iYWxP
YmplY3Q+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdEdsb2JhbE9iamVjdCYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xv
YmFsT2JqZWN0LCBpbXBsKTsKIH0KIAogVGVzdEdsb2JhbE9iamVjdCogSlNUZXN0R2xvYmFsT2Jq
ZWN0Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApp
bmRleCAzM2E3NmNlMjViMjA4ZWZmNGNmNGEyNTVkOGQ3MDBjZTY5YjIyMzNhLi5hODExZGRhYjNi
MDBhMmIyMTY2M2NkZjNjOTUwMjQzOWU0ZTQ5ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApA
QCAtOTE3LDEzICs5MTcsNiBAQCB2b2lkIEpTVGVzdEludGVyZmFjZU93bmVyOjpmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udAogCiBKU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0SW50ZXJmYWNlPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZU5ld1dyYXBwZXI8SlNUZXN0SW50ZXJmYWNlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbnRlcmZhY2UmIGltcGwpCi17Ci0gICAgaWYgKEpT
VmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTVGVzdEludGVyZmFjZT4oZ2xvYmFs
T2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKICNpZiBDT01QSUxFUihDTEFO
RykKICAgICAvLyBJZiB5b3UgaGl0IHRoaXMgZmFpbHVyZSB0aGUgaW50ZXJmYWNlIGRlZmluaXRp
b24gaGFzIHRoZSBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiAgICAgLy8gYXR0cmlidXRlLiBZ
b3Ugc2hvdWxkIHJlbW92ZSB0aGF0IGF0dHJpYnV0ZS4gSWYgdGhlIGNsYXNzIGhhcyBzdWJjbGFz
c2VzCkBAIC05MzEsNyArOTI0LDEyIEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEludGVyZmFjCiAgICAgLy8g
YXR0cmlidXRlIHRvIFRlc3RJbnRlcmZhY2UuCiAgICAgc3RhdGljX2Fzc2VydCghX19pc19wb2x5
bW9ycGhpYyhUZXN0SW50ZXJmYWNlKSwgIlRlc3RJbnRlcmZhY2UgaXMgcG9seW1vcnBoaWMgYnV0
IHRoZSBJREwgY2xhaW1zIGl0IGlzIG5vdCIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5l
d1dyYXBwZXI8SlNUZXN0SW50ZXJmYWNlLCBUZXN0SW50ZXJmYWNlPihnbG9iYWxPYmplY3QsIGlt
cGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdEludGVyZmFjZSwgVGVzdElu
dGVyZmFjZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUZXN0SW50ZXJmYWNlJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9i
YWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0SW50ZXJmYWNlKiBKU1Rlc3RJbnRlcmZhY2U6OnRv
V3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggZGFkNjQzMmU5NjYzNWIxMGQ4YzdmZmU2ZTM0ODI3MDli
NmZlZGE2MC4uNzNlMWZiOTFkOTAwZWFkODVlNGY3Nzg5ZTA5MWVlMzA2YzkwMWFmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtMTkwLDE2ICsx
OTAsOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyNlRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5l
d1dyYXBwZXI8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciYg
aW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lk
KiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwp
KTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZv
aWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/
XzdUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckBXZWJDb3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAt
MjE2LDcgKzIwOSwxMiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RNZWRpYVF1ZQogICAgIC8vIGJ5IGFkZGlu
ZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURM
IGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4
cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBl
cjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cj4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lciYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xv
YmFsT2JqZWN0LCBpbXBsKTsKIH0KIAogVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjMwMDIzNmJkYTlhOGRkODNh
OWRhNTFlYjQ3ZmUxNDc5OWFjMzU2Yy4uMTdlMDUyNWFlZDI0YmUwOGNlMWM5NGYzOTY2YTAxNzMy
NGEzMDBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMjEzLDE2
ICsyMTMsOSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyMFRlc3RO
YW1lZENvbnN0cnVjdG9yRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RO
YW1lZENvbnN0cnVjdG9yPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0K
LQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRDb25zdHJ1Y3RvciYgaW1wbCkKLXsKLSAgICBpZiAoSlNW
YWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4o
Z2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQ
b2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBM
QVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJl
dF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0TmFtZWRDb25zdHJ1Y3RvckBXZWJD
b3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMjM5LDcgKzIzMiwxMiBAQCBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RO
YW1lZENvbgogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmli
dXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChh
Y3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAg
ICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yLCBUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3
V3JhcHBlcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yLCBUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFt
ZWRDb25zdHJ1Y3RvciYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2Jq
ZWN0LCBpbXBsKTsKIH0KIAogVGVzdE5hbWVkQ29uc3RydWN0b3IqIEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3I6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggY2M4
ZWJlNWFlZmE4YmUwZjI3MmU5YTdhOTRhMTVhOGJiODEyNWRiZi4uNzE4YzVmNTEwNzE2MTIyNGIx
MDQxMTMzN2I5YWNiYzUwMDIwNGMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMjQ1LDE2ICsyNDUsOSBA
QCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU4VGVzdE5vZGVFW107IH0K
IAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5vZGU+JiYgaW1wbCkKIHsKLSAgICBy
ZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3ROb2RlPihnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROb2RlJiBpbXBsKQotewotICAgIGlmIChKU1Zh
bHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3ROb2RlPihnbG9iYWxPYmplY3Qs
IGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5U
RUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KF9faWRlbnRpZmllcigiPz9fN1Rlc3ROb2RlQFdlYkNvcmVAQDZCQCIpKTsKICNlbHNlCkBAIC0y
NzEsNyArMjY0LDEyIEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5vZGUmIGltCiAgICAgLy8gYnkgYWRkaW5n
IHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwg
ZGVmaW5pdGlvbgogICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhw
ZWN0ZWRWVGFibGVQb2ludGVyKTsKICNlbmRpZgotICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVy
PEpTVGVzdE5vZGUsIFRlc3ROb2RlPihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBj
cmVhdGVOZXdXcmFwcGVyPEpTVGVzdE5vZGUsIFRlc3ROb2RlPihnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROb2RlJiBpbXBsKQoreworICAg
IHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAppbmRleCAyZDRhZTk0NDYwNjQ1ODJlZjc5YzA1ZDAy
MTcwMTMxZDk1YzM3ZDMyLi5jMTNkY2MyOGMzMGE0ZTBiNTFmOGYxNjNhMjRlOWJmMDUyZTAzMGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCkBAIC00NzQsMTYgKzQ3NCw5
IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTIwVGVzdE5vbmRldGVy
bWluaXN0aWNFW107IH0KIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5vbmRldGVy
bWluaXN0aWM+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RO
b25kZXRlcm1pbmlzdGljPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3ROb25kZXRlcm1pbmlzdGljJiBpbXBsKQotewotICAgIGlmIChKU1ZhbHVlIHJl
c3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPihnbG9iYWxP
YmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgRU5BQkxFKEJJTkRJ
TkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIg
PSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CiAjaWYgUExBVEZPUk0o
V0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3ROb25kZXRlcm1pbmlzdGljQFdlYkNvcmVAQDZC
QCIpKTsKICNlbHNlCkBAIC01MDAsNyArNDkzLDEyIEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5vbmRldGVy
CiAgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8g
dGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgogICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZU
YWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKICNlbmRpZgotICAgIHJldHVy
biBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdE5vbmRldGVybWluaXN0aWMsIFRlc3ROb25kZXRlcm1p
bmlzdGljPihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVy
PEpTVGVzdE5vbmRldGVybWluaXN0aWMsIFRlc3ROb25kZXRlcm1pbmlzdGljPihnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROb25kZXRlcm1p
bmlzdGljJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGlt
cGwpOwogfQogCiBUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6
dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMTU5YTBjMTE1MGVl
Njc5MTc0MTZhYTViY2EwYzI4OTY4ZGVlYTcwYS4uMThhNmQyNzJkYTRhOTg0OWI0ODE0MDdiN2Yw
NmYyZDMyYzg2NjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTYyNjksMTYgKzYyNjksOSBAQCBleHRlcm4g
IkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmU3VGVzdE9iakVbXTsgfQogCiBKU0M6OkpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T2JqPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZU5ld1dyYXBwZXI8SlNUZXN0T2JqPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQot
Ci1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3RPYmomIGltcGwpCi17Ci0gICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
Z2V0RXhpc3RpbmdXcmFwcGVyPEpTVGVzdE9iaj4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2
b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmlt
cGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0
PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBl
Y3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIo
Ij8/XzdUZXN0T2JqQFdlYkNvcmVAQDZCQCIpKTsKICNlbHNlCkBAIC02Mjk1LDcgKzYyODgsMTIg
QEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0T2JqJiBpbXAKICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFi
bGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAg
ICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBv
aW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0T2JqLCBU
ZXN0T2JqPihnbG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVy
PEpTVGVzdE9iaiwgVGVzdE9iaj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKwor
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0T2JqJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRl
LCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0T2JqKiBKU1Rlc3RPYmo6OnRvV3JhcHBl
ZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAKaW5kZXggZDQzZDc5MmRiZjU0ZGRmMWUxOTQzNTUwY2EwNjU1OWViNTE4MzVl
OC4uNmVkNjJjNWJkODIwNDE1MDhhNTUzNjEzMGYyYTZlZmQyYzEzN2M4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMjQ5LDE2ICsyNDksOSBA
QCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyNlRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBw
ZXI8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyYgaW1wbCkK
LXsKLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xvYmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1
YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAg
ICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4o
aW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0BXZWJDb3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMjc1LDcg
KzI2OCwxMiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVybG9hZAogICAgIC8vIGJ5IGFkZGluZyB0aGUg
U2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmlu
aXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVk
VlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xv
YmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2Jq
ZWN0LCBpbXBsKTsKIH0KIAogVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJp
ZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggYzJmNGU5ZTU5Yjg4ZDIxZWJiYjFkZTZi
NzE2ZDI2MjQzMzEzZjdiNy4uNmNiNWQ2NGE1ZDBlMDdhODE1OGYwNDg0ZWE1YjIzOWM2ODQ4OGVi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMjMyLDE2ICsyMzIs
OSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyMFRlc3RPdmVycmlk
ZUJ1aWx0aW5zRVtdOyB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVycmlk
ZUJ1aWx0aW5zPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0
T3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0T3ZlcnJpZGVCdWlsdGlucyYgaW1wbCkKLXsKLSAgICBpZiAoSlNWYWx1ZSBy
ZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFs
T2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShCSU5E
SU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVy
ID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRGT1JN
KFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0
PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdUZXN0T3ZlcnJpZGVCdWlsdGluc0BXZWJDb3JlQEA2
QkAiKSk7CiAjZWxzZQpAQCAtMjU4LDcgKzI1MSwxMiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmVycmlk
ZQogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxW
VGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICByZXR1
cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLCBUZXN0T3ZlcnJpZGVC
dWlsdGlucz4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBl
cjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLCBUZXN0T3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3ZlcnJpZGVC
dWlsdGlucyYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBp
bXBsKTsKIH0KIAogVGVzdE92ZXJyaWRlQnVpbHRpbnMqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6
OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDU4OGI0MzJlYjg1ZTIy
OTdkMTBhYWYxMjMyMGQzODYwNWRhZGQ0NWEuLmNlNGIwOTU4NzY5NTYxMzg5NzJhMTEzZGM4NGVi
ZTU1YjBiYWU2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0zMDcsMTYgKzMwNyw5IEBAIGV4dGVybiAiQyIgeyBl
eHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTM0VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUVbXTsKIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZT4mJiBpbXBsKQogewotICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVy
PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlJiBpbXBsKQotewotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3Jh
cHBlcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KGdsb2JhbE9iamVjdCwg
aW1wbCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRF
R1JJVFkpCi0gICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KCZpbXBsKSk7CisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KGltcGwucHRyKCkpKTsKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
X19pZGVudGlmaWVyKCI/P183VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUBXZWJD
b3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtMzMzLDcgKzMyNiwxMiBAQCBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RT
ZXJpYWxpegogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmli
dXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChh
Y3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAg
ICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KGdsb2JhbE9iamVjdCwg
aW1wbCk7CisgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPihnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UmIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAoc3Rh
dGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9XcmFwcGVk
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGZjMzVlNTFkOGRm
NzU0ZmIxOGMxYjIyNzk4ZjY4Y2ZiNDcyMjY1YTEuLmQ5NGMwM2FmNWZmNTMyZGYxMWZhN2I4ZGUy
MTE1OWEyMWIwZDNmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNjYyLDE2ICs2NjIsOSBA
QCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUxMlRlc3RUeXBlZGVmc0Vb
XTsgfQogCiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0VHlwZWRlZnM+JiYgaW1wbCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RUeXBlZGVmcz4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0VHlwZWRlZnMmIGltcGwp
Ci17Ci0gICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTVGVzdFR5
cGVkZWZzPihnbG9iYWxPYmplY3QsIGltcGwpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAj
aWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50
ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmaW1wbCkpOworICAgIHZvaWQqIGFjdHVh
bFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7
CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RUeXBlZGVmc0BXZWJD
b3JlQEA2QkAiKSk7CiAjZWxzZQpAQCAtNjg4LDcgKzY4MSwxMiBAQCBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RU
eXBlZGVmcwogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmli
dXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChh
Y3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAg
ICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RUeXBlZGVmcywgVGVzdFR5cGVkZWZzPihn
bG9iYWxPYmplY3QsIGltcGwpOworICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdFR5
cGVkZWZzLCBUZXN0VHlwZWRlZnM+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisK
K0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGVzdFR5cGVkZWZzJiBpbXBsKQoreworICAgIHJldHVybiB3cmFw
KHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCiBUZXN0VHlwZWRlZnMqIEpTVGVzdFR5
cGVkZWZzOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKaW5kZXgg
OTZkMmVjMjkzN2QwNGRkMWYyNjBmZjhhYmZhNWUwYWE3Y2QwZGFjZS4uMGIwNjJhY2QyNzIyZWJj
NTZiYzQ0YTVkZTM4ZDIwZTQxYWFmMTMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCkBAIC0yMDYsMTYgKzIw
Niw5IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTlhdHRyaWJ1dGVF
W107IH0KIAogSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8YXR0cmlidXRlPiYmIGltcGwpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNhdHRyaWJ1dGU+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYXR0cmlidXRlJiBpbXBsKQotewotICAg
IGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU2F0dHJpYnV0ZT4oZ2xv
YmFsT2JqZWN0LCBpbXBsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogI2lmIEVOQUJMRShC
SU5ESU5HX0lOVEVHUklUWSkKLSAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJmltcGwpKTsKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2lu
dGVyID0gKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOwogI2lmIFBMQVRG
T1JNKFdJTikKICAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9j
YXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/XzdhdHRyaWJ1dGVAV2ViQ29yZUBANkJAIikpOwog
I2Vsc2UKQEAgLTIzMiw3ICsyMjUsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBhdHRyaWJ1dGUmIGkKICAgICAv
LyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50
ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9p
bnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0
ZU5ld1dyYXBwZXI8SlNhdHRyaWJ1dGUsIGF0dHJpYnV0ZT4oZ2xvYmFsT2JqZWN0LCBpbXBsKTsK
KyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU2F0dHJpYnV0ZSwgYXR0cmlidXRlPihnbG9i
YWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGF0dHJpYnV0
ZSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsK
IH0KIAogYXR0cmlidXRlKiBKU2F0dHJpYnV0ZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U3JlYWRvbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U3JlYWRvbmx5LmNwcAppbmRleCA2OTU2ZGQ0MDI5MTczNzVjZDAxMTU2MmY0MzA0MjhjODE5NWU4
NDM4Li41MzIyNmQyM2I5NzEyYzNmNDE0Mjk3YzRkYmMxYzc2MmRhNWFmODliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHku
Y3BwCkBAIC0xNTYsMTMgKzE1Niw2IEBAIHZvaWQgSlNyZWFkb25seU93bmVyOjpmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIAogSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8cmVhZG9ubHk+JiYgaW1wbCkKIHsKLSAgICByZXR1cm4gY3Jl
YXRlTmV3V3JhcHBlcjxKU3JlYWRvbmx5PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwot
fQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIHJlYWRvbmx5JiBpbXBsKQotewotICAgIGlmIChKU1ZhbHVlIHJlc3Vs
dCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU3JlYWRvbmx5PihnbG9iYWxPYmplY3QsIGltcGwpKQot
ICAgICAgICByZXR1cm4gcmVzdWx0OwogI2lmIENPTVBJTEVSKENMQU5HKQogICAgIC8vIElmIHlv
dSBoaXQgdGhpcyBmYWlsdXJlIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbiBoYXMgdGhlIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUKICAgICAvLyBhdHRyaWJ1dGUuIFlvdSBzaG91bGQgcmVtb3Zl
IHRoYXQgYXR0cmlidXRlLiBJZiB0aGUgY2xhc3MgaGFzIHN1YmNsYXNzZXMKQEAgLTE3MCw3ICsx
NjMsMTIgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCByZWFkb25seSYgaW0KICAgICAvLyBhdHRyaWJ1dGUgdG8gcmVh
ZG9ubHkuCiAgICAgc3RhdGljX2Fzc2VydCghX19pc19wb2x5bW9ycGhpYyhyZWFkb25seSksICJy
ZWFkb25seSBpcyBwb2x5bW9ycGhpYyBidXQgdGhlIElETCBjbGFpbXMgaXQgaXMgbm90Iik7CiAj
ZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU3JlYWRvbmx5LCByZWFkb25seT4o
Z2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU3JlYWRv
bmx5LCByZWFkb25seT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCByZWFkb25seSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xv
YmFsT2JqZWN0LCBpbXBsKTsKIH0KIAogcmVhZG9ubHkqIEpTcmVhZG9ubHk6OnRvV3JhcHBlZChK
U0M6OkpTVmFsdWUgdmFsdWUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>