<?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>102182</bug_id>
          
          <creation_ts>2012-11-13 23:15:53 -0800</creation_ts>
          <short_desc>Support loading of blob URLs in AVFoundation.</short_desc>
          <delta_ts>2012-11-15 11:09:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>766475</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-13 23:15:53 -0800</bug_when>
    <thetext>Support loading of blob URLs in AVFoundation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766970</commentid>
    <comment_count>1</comment_count>
      <attachid>174179</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-14 09:29:46 -0800</bug_when>
    <thetext>Created attachment 174179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766984</commentid>
    <comment_count>2</comment_count>
      <attachid>174181</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-14 09:50:26 -0800</bug_when>
    <thetext>Created attachment 174181
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767198</commentid>
    <comment_count>3</comment_count>
      <attachid>174232</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-14 12:52:10 -0800</bug_when>
    <thetext>Created attachment 174232
Patch

Addressed sideband change suggestions by ericc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768152</commentid>
    <comment_count>4</comment_count>
      <attachid>174232</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-15 09:08:47 -0800</bug_when>
    <thetext>Comment on attachment 174232
Patch

Rejecting attachment 174232 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
urned error: 1

Died at Tools/Scripts/update-webkit line 154.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 9
e position algorithm

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 154.

Full output: http://queues.webkit.org/results/14845526</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768322</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-15 11:09:27 -0800</bug_when>
    <thetext>Committed r134802: &lt;http://trac.webkit.org/changeset/134802&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174179</attachid>
            <date>2012-11-14 09:29:46 -0800</date>
            <delta_ts>2012-11-14 09:50:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102182-20121114092745.patch</filename>
            <type>text/plain</type>
            <size>33762</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRiNDhkNDIzOTRiZmFk
MjZkODEzMWM5OTJhYjZiMjYwNjE2MjFlZi4uYWI4NWRhZWVlM2Q4ZDQxNWE1N2MyYjlkN2UxNjE0
MmFhNzU2NzBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTExLTEzICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgbG9hZGluZyBv
ZiBibG9iIFVSTHMgaW4gQVZGb3VuZGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEJMT0IgKGFuZCBvdGhlciBub24t
bmF0aXZlbHkgc3VwcG9ydGVkIHNjaGVtZWQpIFVSTHMgdGhyb3VnaCB0aGUgQVZBc3NldFJlc291
cmNlTG9hZGVyIEFQSS4KKworICAgICAgICBUZXN0OiBtZWRpYS92aWRlby1zcmMtYmxvYi5odG1s
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6IE9ubHkgZ28gZG93biB0aGUgZW5jcnlw
dGVkCisgICAgICAgICAgICBtZWRpYSBwYXRoIGlmIHRoZSBrZXkgc2NoZW1lIGlzIHNrcDovLy4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRp
ZENhbmNlbExvYWRpbmdSZXF1ZXN0KTogQWRkZWQuICBDYW5jZWwgcmVzb3VyY2UgbG9hZGluZyBp
ZgorICAgICAgICAgICAgdGhlIG1lZGlhIGVuZ2luZSByZXF1ZXN0cyBpdC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmFkZEtleSk6IFVzZSB0
aGUgbmV3LCBub24tZGVwcmVjYXRlZCBBUEkuCisgICAgICAgIAorICAgICAgICBVc2UgdGhlIGRp
c3BhdGNoX21haW5fcXVldWUoKSBhcyB0aGUgQVZBc3NldFJlc291cmNlTG9hZERlbGVnYXRlIHF1
ZXVlIG5vdyB0aGF0IDxyZGFyOi8vcHJvYmxlbS8xMjM2MjQ2MT4gaXMgZml4ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoLVtXZWJD
b3JlQVZGTG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZvckxvYWRpbmdP
ZlJlcXVlc3RlZFJlc291cmNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTG9hZGVyRGVsZWdh
dGUgcmVzb3VyY2VMb2FkZXI6ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3Q6XSk6CisKKyAgICAgICAg
QWRkIGEgbmV3IGhlbHBlciBjbGFzcyB0byBtYW5hZ2UgbG9hZGluZyB0aGUgQ2FjaGVkUmF3UmVz
b3VyY2UgYW5kIGZlZWQgdGhlIGluY29taW5nCisgICAgICAgIGRhdGEgdG8gdGhlIEFWQXNzZXRS
ZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKTogU2ltcGxlIGZhY3RvcnkuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6fldlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcik6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcpOiBUZWxsIHRoZSBjYWNoZWRSZXNv
dXJjZUxvYWRlciB0byBzY2hlZHVsZSBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZyk6IFJlbW92ZSB0aGlzIGFzIGEgY2xpZW50
IG9mIHRoZSByZXNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6IEZpbGwgaW4gdGhlIGNvbnRlbnRJbmZvcm1hdGlvbiBm
aWVsZCBvZiB0aGUgCisgICAgICAgICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdC4K
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KTogQ2FsbCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOiBUZWxsIHRoZSBBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCB0aGF0IGxvYWRpbmcKKyAgICAgICAgICAgIGhhcyBjb21w
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmZ1bGZp
bGxSZXF1ZXN0V2l0aFJlc291cmNlKTogRmlsbCBpbiAoaWYgcG9zc2libGUpIHRoZSBkYXRhUmVx
dWVzdAorICAgICAgICAgICAgZmllbGQgb2YgdGhlIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0LgorCisgICAgICAgIEFkZCBhIE1lZGlhUGxheWVyQ2xpZW50IG1ldGhvZCBhbGxvd2luZyBN
ZWRpYVBsYXllclByaXZhdGUgc3ViY2xhc3NlcyB0byBhY2Nlc3MgdGhlIEhUTUxNZWRpYUVsZW1l
bnQncworICAgICAgICBkb2N1bWVudCdzIGNhY2hlZFJlc291cmNlTG9hZGVyLgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2FjaGVkUmVzb3VyY2VM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJj
ZUxvYWRlcik6CisKKyAgICAgICAgQWRkIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNvbnZlcnQg
ZnJvbSBNSU1FIHR5cGUgLT4gVVRJLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VU
SVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZSk6CisKKyAgICAgICAgQWRk
IG5ldyBmaWxlcyB0byBwcm9qZWN0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxMi0xMS0wOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtWOF0gUmVtb3ZlIGEgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gaW4gRE9NRGF0
YVN0b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMWJjZGQxOGM2NzdkYzY5ZWFjZTVjNDVlNGU4Mzc5OTViMTY1OGMyMy4uMzU4
ZTQwNDQwN2I2YmM2OGMxNDNmMDBkYzVjMzc2NDExZDdlOWQ0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg5Miw2ICs1ODky
LDcgQEAKIAkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0
NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0QzN0IzOTgx
NUMxQjk3MTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM3QjM3NDE1QzFBN0UxMDA2REM4
OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCAqLzsgfTsKIAkJQ0Q0QUM1MkExNDk2QUU5
QTAwODdDNEVGIC8qIENvbXBvc2l0ZS53YXYgaW4gQ29weSBBdWRpbyBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0QUM1MjgxNDk2QUUyRjAwODdDNEVGIC8q
IENvbXBvc2l0ZS53YXYgKi87IH07CisJCUNEN0UwNTIyMTY1MUMyODIwMEMxMjAxRiAvKiBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDdFMDUyMTE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tICovOyB9OwogCQlDRDgyMDMwQTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDRDgyMDMwQjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEODIwMzA3MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVuZGVmIC1Xbm8t
ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiOyB9OyB9OwogCQlDRDgyMDMwQzEzOTVBQjZBMDBGOTU2
QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDgxMzk1QUI2QTAwRjk1
NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMyNzIsNiArMTMyNzMs
OCBAQAogCQlDRDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdub3N0aWNMb2dnaW5nS2V5
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDRBQzUyODE0OTZBRTJGMDA4N0M0
RUYgLyogQ29tcG9zaXRlLndhdiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGF1ZGlvLndhdjsgbmFtZSA9IENvbXBvc2l0ZS53YXY7IHBhdGggPSBwbGF0
Zm9ybS9hdWRpby9yZXNvdXJjZXMvQ29tcG9zaXRlLndhdjsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRDdFMDUyMDE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOyBw
YXRoID0gb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0Q3RTA1MjExNjUxQTg0MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbTsgcGF0aCA9IG9iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEODIwMzA3MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4
MjAzMDgxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjEwMzEsNiArMjEwMzQsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJREY5QUZENzAxM0ZDMzFE
ODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCAqLywKIAkJ
CQlERjlBRkQ3MTEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbSAqLywKKwkJCQlDRDdFMDUyMDE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmggKi8sCisJCQkJQ0Q3RTA1MjExNjUxQTg0MTAwQzEyMDFGIC8qIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gb2JqYzsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yODc4Miw2ICsyODc4Nyw3IEBACiAJCQkJNEZD
ODUzNEMxNjQ0MjcyMzAwRDFDMjc1IC8qIENhY2hlZE1ldGFkYXRhLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUxNDI0QzkwMTY0QjQ2MEIwMEYzMkQ0MCAvKiBDb29raWVKYXJNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlFMTQyNEM5MzE2NEI1MkM4MDBGMzJENDAgLyogQ29va2llSmFyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUNEN0UwNTIyMTY1MUMyODIwMEMxMjAxRiAvKiBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCmluZGV4IDNkMjVmYjE4N2E0MjA1YmYyYzM3MDllYzA5ZTE5NzMwMzM3
NzEzMWQuLjQwOTU0NmFkZmE3YjM3NjQxNTlhNWNlNzFiOTYwMTM0OTg1ZWYyZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDU5OSw2ICs0NTk5LDExIEBA
IEludFJlY3QgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVjdCgpCiAg
ICAgcmV0dXJuIG1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQoKS0+dmlldygpLT53aW5kb3dDbGlw
UmVjdCgpOwogfQogCitDYWNoZWRSZXNvdXJjZUxvYWRlciogSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpCit7CisgICAgcmV0dXJuIG1lZGlhUGxheWVy
T3duaW5nRG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKK30KKwogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdl
c3R1cmUoKQogewogICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGM0ZjI0MjVjZjdmYWJlZGQ1NjgzYjRj
ZTBmMTRjNTcyMjA5NzA5YTguLmQxY2NlZDA5NjZiYTA3NDg5NzVjNjJkZWEzYjcwMGY0ZjE4MDc5
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00NDEsNiArNDQx
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEhvc3RXaW5kb3cqIG1lZGlhUGxheWVySG9zdFdp
bmRvdygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW50UmVjdCBtZWRpYVBsYXllcldpbmRvd0Ns
aXBSZWN0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVk
aWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpIE9WRVJSSURFOwogCiAjaWYgUExBVEZPUk0o
V0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFw
dGVyKiBtZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciop
IGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCmluZGV4IGRhOTM1NzBhMGI3YjE3OGNhZTkyM2E5NWVlZjI1NDc2ZTQz
YzFhMjMuLmE0NGMxMmQ0YzNiOTYyYThlOTc0ZTNmY2ZhN2NmZWYzMTdlYzQxOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTEx
MjAsNiArMTEyMCwxNCBAQCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIE1lZGlhUGxheWVyOjpncmFw
aGljc0RldmljZUFkYXB0ZXIoKSBjb25zdAogfQogI2VuZGlmCiAKK0NhY2hlZFJlc291cmNlTG9h
ZGVyKiBNZWRpYVBsYXllcjo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQoreworICAgIGlmICghbV9t
ZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV9tZWRp
YVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpOworfQorCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKaW5kZXggMmJkMGE4ZTg1NjYyZDhlNGYxYzA4YTEwMmY3MTUxY2QxNTg3NzZiNS4uZDEx
MmNmMmQ0OWZkMTYzNjMxZDhiMWMxN2E5NTdjYWQxOGY2NDk3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC05Myw2ICs5Myw3IEBAIHN0
cnVjdCBQbGF0Zm9ybU1lZGlhIHsKIAogZXh0ZXJuIGNvbnN0IFBsYXRmb3JtTWVkaWEgTm9QbGF0
Zm9ybU1lZGlhOwogCitjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRU
eXBlOwogY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtMjA2LDYg
KzIwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0xvb3Bpbmco
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogbWVkaWFQ
bGF5ZXJIb3N0V2luZG93KCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgSW50UmVjdCBtZWRp
YVBsYXllcldpbmRvd0NsaXBSZWN0KCkgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVh
bCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigp
IHsgcmV0dXJuIDA7IH0KIH07CiAKIGNsYXNzIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50
IHsKQEAgLTQyMyw2ICs0MjUsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZW5naW5lRGVzY3Jp
cHRpb24oKSBjb25zdDsKIAorICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJj
ZUxvYWRlcigpOworCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50
Kik7CiAgICAgdm9pZCBsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShNZWRpYVBsYXllckZhY3Rvcnkq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCBlNzBkYjFhOThhYjU2YjExMmIwZDk0NzNhODY5
YTg1NDllNmE4MjZhLi45Y2M0YjU4ZTA2ZDk2MzJiNDJlZTM2OWI0ZTdkMjZiZTU4OWIwNjg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVu
dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTM5LDcgKzQwLDcgQEAgT0JKQ19DTEFTUyBBVlBsYXll
ckxheWVyOwogT0JKQ19DTEFTUyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIFdl
YkNvcmVBVkZNb3ZpZU9ic2VydmVyOwogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisjaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiBPQkpDX0NMQVNTIFdlYkNvcmVBVkZMb2FkZXJE
ZWxlZ2F0ZTsKIE9CSkNfQ0xBU1MgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q7CiAjZW5k
aWYKQEAgLTUzLDYgKzU0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1
ZmZlclJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI7CisKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgOiBw
dWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIHsKIHB1YmxpYzoKICAgICB+TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQygpOwpAQCAtNjIsOCArNjUsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRBc3NldChpZCk7CiAgICAgdmlydHVhbCB2b2lkIHRyYWNrc0NoYW5n
ZWQoKTsKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA5MAogICAgIGJvb2wgc2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNz
ZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Kik7CisgICAgdm9pZCBkaWRDYW5jZWxMb2FkaW5nUmVx
dWVzdChBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCopOwogI2VuZGlmCiAKIHByaXZhdGU6
CkBAIC0xNjUsNiArMTY5LDExIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFp
blB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gPiBtX2tleVVSSVRvUmVxdWVzdE1h
cDsKICAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0PiA+IG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwOwogI2VuZGlmCisKKyNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBmcmllbmQgY2xhc3MgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOworICAgIE93blB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+
IG1fcmVzb3VyY2VMb2FkZXI7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IGMxNmU4ZDA2MmFlZjQ0ODliYTc0OWUyZjFhNjQ5NWFkZTk0MmZiOTkuLmQyMTk1NTZl
YWI2MGQyNzQ3NDk1NGNkOWQ5NjZkN2QwZmRkYmI3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtNDEsNiArNDEsNyBAQAogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNpbXBvcnQgIlRp
bWVSYW5nZXMuaCIKICNpbXBvcnQgIlVVSUQuaCIKKyNpbXBvcnQgIldlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8
b2JqYy9vYmpjLXJ1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTI0
LDE2ICsxMjUsNiBAQCBlbnVtIE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250
ZXh0IHsKIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMqKWNhbGxiYWNrOwogLSAoQk9PTClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291
cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3Rl
ZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKWxvYWRpbmdSZXF1ZXN0
OwogQGVuZAotCi1zdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxMb2FkZXJEZWxlZ2F0ZVF1
ZXVlKCkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxRdWV1ZTsKLSAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
VG9rZW4sIF57Ci0gICAgICAgIGdsb2JhbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJX
ZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwot
ICAgIH0pOwotICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKLX0KICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zMzYsNyArMzI3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAg
IG1fYXZBc3NldC5hZG9wdE5TKFtbQVZVUkxBc3NldCBhbGxvY10gaW5pdFdpdGhVUkw6Y29jb2FV
Ukwgb3B0aW9uczpvcHRpb25zLmdldCgpXSk7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQotICAgIFtbbV9hdkFzc2V0LmdldCgpIHJlc291cmNlTG9hZGVyXSBzZXREZWxlZ2F0ZTptX2xv
YWRlckRlbGVnYXRlLmdldCgpIHF1ZXVlOmdsb2JhbExvYWRlckRlbGVnYXRlUXVldWUoKV07Cisg
ICAgW1ttX2F2QXNzZXQuZ2V0KCkgcmVzb3VyY2VMb2FkZXJdIHNldERlbGVnYXRlOm1fbG9hZGVy
RGVsZWdhdGUuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07CiAjZW5kaWYK
IAogICAgIG1faGF2ZUNoZWNrZWRQbGF5YWJpbGl0eSA9IGZhbHNlOwpAQCAtNzkyLDI0ICs3ODMs
NDEgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpleHRlbmRlZFN1cHBvcnRzVHkKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3QqIGF2UmVxdWVzdCkKIHsKKyAgICBTdHJpbmcgc2NoZW1lID0g
W1tbYXZSZXF1ZXN0IHJlcXVlc3RdIFVSTF0gc2NoZW1lXTsKICAgICBTdHJpbmcga2V5VVJJID0g
W1tbYXZSZXF1ZXN0IHJlcXVlc3RdIFVSTF0gYWJzb2x1dGVTdHJpbmddOwogCi0gICAgLy8gQ3Jl
YXRlIGFuIGluaXREYXRhIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6Ci0gICAgLy8gWzQgYnl0
ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCi0gICAgdW5zaWdu
ZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7Ci0gICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCAr
IGtleVVSSVNpemUsIDEpOwotICAgIFJlZlB0cjxEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gRGF0
YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW5pdERhdGFWaWV3LT5zZXRV
aW50MzIoMCwga2V5VVJJU2l6ZSwgdHJ1ZSwgZWMpOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisgICAgaWYgKHNjaGVtZSA9PSAic2twIikgeworICAgICAgICAvLyBDcmVhdGUgYW4gaW5p
dERhdGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91dDoKKyAgICAgICAgLy8gWzQgYnl0ZXM6IGtl
eVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCisgICAgICAgIHVuc2lnbmVk
IGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOworICAgICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSg0
ICsga2V5VVJJU2l6ZSwgMSk7CisgICAgICAgIFJlZlB0cjxEYXRhVmlldz4gaW5pdERhdGFWaWV3
ID0gRGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5
dGVMZW5ndGgoKSk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBpbml0
RGF0YVZpZXctPnNldFVpbnQzMigwLCBrZXlVUklTaXplLCB0cnVlLCBlYyk7CisKKyAgICAgICAg
UmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5p
dERhdGFCdWZmZXIsIDQsIGtleVVSSS5sZW5ndGgoKSk7CisgICAgICAgIGtleVVSSUFycmF5LT5z
ZXRSYW5nZShrZXlVUkkuY2hhcmFjdGVycygpLCBrZXlVUkkubGVuZ3RoKCkgLyBzaXplb2YodW5z
aWduZWQgY2hhciksIDApOworCisgICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZCgiY29t
LmFwcGxlLmxza2QiLCBlbXB0eVN0cmluZygpLCBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oaW5pdERhdGFCdWZmZXItPmRhdGEoKSksIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG1fa2V5VVJJVG9SZXF1
ZXN0TWFwLnNldChrZXlVUkksIGF2UmVxdWVzdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyNlbmRpZgogCi0gICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQx
NkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDQsIGtleVVSSS5sZW5ndGgoKSk7Ci0gICAg
a2V5VVJJQXJyYXktPnNldFJhbmdlKGtleVVSSS5jaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgo
KSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7CisgICAgbV9yZXNvdXJjZUxvYWRlciA9IFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7CisgICAgbV9y
ZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAg
ICBpZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoImNvbS5hcHBsZS5sc2tkIiwgZW1wdHlTdHJpbmco
KSwgc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGluaXREYXRhQnVmZmVyLT5kYXRh
KCkpLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
Owordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkaWRDYW5jZWxMb2Fk
aW5nUmVxdWVzdChBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCogYXZSZXF1ZXN0KQorewor
ICAgIFN0cmluZyBzY2hlbWUgPSBbW1thdlJlcXVlc3QgcmVxdWVzdF0gVVJMXSBzY2hlbWVdOwog
Ci0gICAgbV9rZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleVVSSSwgYXZSZXF1ZXN0KTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAobV9yZXNvdXJjZUxvYWRlcikKKyAgICAgICAgbV9yZXNvdXJj
ZUxvYWRlci0+c3RvcExvYWRpbmcoKTsKIH0KICNlbmRpZgogCkBAIC0xMDg5LDEwICsxMDk3LDgg
QEAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmFkZEtleShjb25zdAogCiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0PiBhdlJlcXVlc3QgPSBtX3Nlc3Npb25JRFRvUmVxdWVzdE1hcC5nZXQo
c2Vzc2lvbklEKTsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBrZXlEYXRhID0gYWRvcHROUyhbW05T
RGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczprZXlQdHIgbGVuZ3RoOmtleUxlbmd0aF0pOwotI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgIFthdlJlcXVlc3QuZ2V0KCkgZmlu
aXNoTG9hZGluZ1dpdGhSZXNwb25zZTpuaWwgZGF0YTprZXlEYXRhLmdldCgpIHJlZGlyZWN0Om5p
bF07Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisgICAgW1thdlJlcXVlc3QuZ2V0KCkg
ZGF0YVJlcXVlc3RdIHJlc3BvbmRXaXRoRGF0YTprZXlEYXRhLmdldCgpXTsKKyAgICBbYXZSZXF1
ZXN0LmdldCgpIGZpbmlzaExvYWRpbmddOwogICAgIG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwLnJl
bW92ZShzZXNzaW9uSUQpOwogCiAgICAgcGxheWVyKCktPmtleUFkZGVkKGtleVN5c3RlbSwgc2Vz
c2lvbklEKTsKQEAgLTEyNTQsMTEgKzEyNjAsMTMgQEAgTlNBcnJheSogaXRlbUtWT1Byb3BlcnRp
ZXMoKQogLSAoQk9PTClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVz
b3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKWxvYWRpbmdSZXF1ZXN0CiB7CiAgICAgVU5VU0VE
X1BBUkFNKHJlc291cmNlTG9hZGVyKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeewotICAgICAgICBpZiAoIW1fY2FsbGJhY2stPnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZShsb2FkaW5nUmVxdWVzdCkpCi0gICAgICAgICAgICBbbG9hZGluZ1Jl
cXVlc3QgZmluaXNoTG9hZGluZ1dpdGhFcnJvcjpuaWxdOwotICAgIH0pOwotICAgIHJldHVybiBU
UlVFOworICAgIHJldHVybiBtX2NhbGxiYWNrLT5zaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UobG9hZGluZ1JlcXVlc3QpOworfQorCistICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0
UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdDoo
QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKilsb2FkaW5nUmVxdWVzdCBOU19BVkFJTEFC
TEUoMTBfOSwgTkEpCit7CisgICAgVU5VU0VEX1BBUkFNKHJlc291cmNlTG9hZGVyKTsKKyAgICBy
ZXR1cm4gbV9jYWxsYmFjay0+ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3QobG9hZGluZ1JlcXVlc3Qp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNjZhNzQ3YjcwNWUyMGUxMDNiYTJjZmJhMGUzZDcz
MmJkYzBjZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtMCww
ICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXJf
aAorI2RlZmluZSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXJfaAorCisjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzsKKworY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyIDogcHVibGljIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0Kik7CisgICAgdmlydHVhbCB+V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKCk7CisKKyAg
ICB2b2lkIHN0YXJ0TG9hZGluZygpOworICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKKworICAgIENh
Y2hlZFJhd1Jlc291cmNlKiByZXNvdXJjZSgpOworCitwcml2YXRlOgorICAgIC8vIENhY2hlZFJl
c291cmNlQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqLCBpbnQpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIE9W
RVJSSURFOworCisgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSopOworCisgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Qq
KTsKKyAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKKyAg
ICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0Owor
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwor
fTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKSAK
KworI2VuZGlmIC8vIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM1
YzM5MWFlZWJiNzZkYjczNGY3N2Y4ZmFiYWI0NjRiOGYzYmI0MAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgiCisK
KyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbXBvcnQgIkNhY2hl
ZFJhd1Jlc291cmNlLmgiCisjaW1wb3J0ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2ltcG9y
dCAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgiCisjaW1wb3J0ICJSZXNvdXJjZUJ1ZmZlci5oIgorI2ltcG9ydCAi
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKKyNpbXBv
cnQgIlNvZnRMaW5raW5nLmgiCisjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPEFW
Rm91bmRhdGlvbi9BVkFzc2V0UmVzb3VyY2VMb2FkZXIuaD4KKyNpbXBvcnQgPG9iamMvb2JqYy1y
dW50aW1lLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGFzc093blB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMq
IHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqIGF2UmVxdWVzdCkKK3sKKyAg
ICBBU1NFUlQoYXZSZXF1ZXN0KTsKKyAgICBBU1NFUlQocGFyZW50KTsKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOwor
fQorCitXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCisgICAgOiBtX3BhcmVudChwYXJlbnQpCisgICAg
LCBtX2F2UmVxdWVzdChhdlJlcXVlc3QpCit7Cit9CisKK1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjo6fldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcigpCit7CisgICAgaWYgKG1fcmVzb3VyY2UpIHsK
KyAgICAgICAgbV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICBtX3Jlc291
cmNlID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpzdGFy
dExvYWRpbmcoKQoreworICAgIGlmIChtX3Jlc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBLVVJMIHJlcXVlc3RVUkwgPSBbW21fYXZSZXF1ZXN0LmdldCgpIHJlcXVlc3RdIFVSTF07CisK
KyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dFVSTCksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29u
dGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBEb05vdEFza0Ns
aWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaykpOworCisgICAg
cmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2Fk
UHJpb3JpdHlMb3cpOworICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBtX3BhcmVu
dC0+cGxheWVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CisgICAgbV9yZXNvdXJjZSA9IGxv
YWRlciA/IGxvYWRlci0+cmVxdWVzdFJhd1Jlc291cmNlKHJlcXVlc3QpIDogMDsKKyAgICBpZiAo
bV9yZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KHRoaXMpOworICAgIGVs
c2UgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzdGFydCBsb2FkIGZvciBtZWRpYSBh
dCB1cmwgJXMiLCByZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAg
W21fYXZSZXF1ZXN0LmdldCgpIGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6MF07CisgICAgfQorfQor
Cit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmcoKQoreworICAgIGlm
IChtX3Jlc291cmNlKSB7CisgICAgICAgIG1fcmVzb3VyY2UtPnJlbW92ZUNsaWVudCh0aGlzKTsK
KyAgICAgICAgbV9yZXNvdXJjZSA9IDA7CisgICAgfQorfQorCit2b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIEFTU0VSVChyZXNvdXJjZSA9
PSBtX3Jlc291cmNlKTsKKworICAgIGludCBzdGF0dXMgPSByZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpOworICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBzdGF0dXMgPiAyOTkpKSB7
CisgICAgICAgIFttX2F2UmVxdWVzdC5nZXQoKSBmaW5pc2hMb2FkaW5nV2l0aEVycm9yOjBdOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdD
b250ZW50SW5mb3JtYXRpb25SZXF1ZXN0KiBjb250ZW50SW5mbyA9IFttX2F2UmVxdWVzdC5nZXQo
KSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0XSkgeworICAgICAgICBTdHJpbmcgdXRpID0gVVRJ
RnJvbU1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSku
Z2V0KCk7CisKKyAgICAgICAgW2NvbnRlbnRJbmZvIHNldENvbnRlbnRUeXBlOnV0aV07CisgICAg
ICAgIFtjb250ZW50SW5mbyBzZXRDb250ZW50TGVuZ3RoOnJlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpXTsKKyAgICAgICAgW2NvbnRlbnRJbmZvIHNldEJ5dGVSYW5nZUFjY2Vzc1N1cHBv
cnRlZDpZRVNdOworCisgICAgICAgIGlmICghW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XSkgewor
ICAgICAgICAgICAgW21fYXZSZXF1ZXN0LmdldCgpIGZpbmlzaExvYWRpbmddOworICAgICAgICAg
ICAgc3RvcExvYWRpbmcoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNv
bnN0IGNoYXIqLCBpbnQpCit7CisgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3Vy
Y2UpOworfQorCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291
cmNlKHJlc291cmNlKTsKKyAgICBbbV9hdlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGluZ107Cisg
ICAgc3RvcExvYWRpbmcoKTsKK30KKwordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmZ1
bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAg
ICBBU1NFUlQocmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgQVZBc3NldFJlc291cmNlTG9h
ZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07
CisgICAgaWYgKCFkYXRhUmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2hhcmVkQnVm
ZmVyKiBkYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpOwor
CisgICAgdW5zaWduZWQgcmVtYWluaW5nTGVuZ3RoID0gW2RhdGFSZXF1ZXN0IHJlcXVlc3RlZExl
bmd0aF0gLSAoW2RhdGFSZXF1ZXN0IGN1cnJlbnRPZmZzZXRdIC0gW2RhdGFSZXF1ZXN0IHJlcXVl
c3RlZE9mZnNldF0pOworICAgIGRvIHsKKyAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJl
IGlzIGFueSBkYXRhIGF2YWlsYWJsZSBpbiB0aGUgYnVmZmVyIHRvIGZ1bGZpbGwgdGhlIGRhdGEg
cmVxdWVzdC4KKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSA8PSBbZGF0YVJlcXVlc3QgY3VycmVu
dE9mZnNldF0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgY2hhciogc29t
ZURhdGE7CisgICAgICAgIHVuc2lnbmVkIHJlY2VpdmVkTGVuZ3RoID0gZGF0YS0+Z2V0U29tZURh
dGEoc29tZURhdGEsIFtkYXRhUmVxdWVzdCBjdXJyZW50T2Zmc2V0XSk7CisKKyAgICAgICAgLy8g
Q3JlYXRlIGFuIE5TRGF0YSB3aXRoIG9ubHkgYXMgbXVjaCBvZiB0aGUgcmVjZWl2ZWQgZGF0YSBh
cyBuZWNlc3NhcnkgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4KKyAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gTUlOKHJlY2VpdmVkTGVuZ3RoLCByZW1haW5pbmdMZW5ndGgpOworICAgICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5
dGVzOnNvbWVEYXRhIGxlbmd0aDpsZW5ndGhdKTsKKworICAgICAgICBbZGF0YVJlcXVlc3QgcmVz
cG9uZFdpdGhEYXRhOm5zRGF0YS5nZXQoKV07CisgICAgICAgIHJlbWFpbmluZ0xlbmd0aCAtPSBs
ZW5ndGg7CisgICAgfSB3aGlsZSAocmVtYWluaW5nTGVuZ3RoKTsKKworICAgIGlmIChbZGF0YVJl
cXVlc3QgY3VycmVudE9mZnNldF0gKyBbZGF0YVJlcXVlc3QgcmVxdWVzdGVkTGVuZ3RoXSA+PSBb
ZGF0YVJlcXVlc3QgcmVxdWVzdGVkT2Zmc2V0XSkgeworICAgICAgICBbbV9hdlJlcXVlc3QuZ2V0
KCkgZmluaXNoTG9hZGluZ107CisgICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgfQorfQorCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCmluZGV4
IGIzNzg3ZWRkN2RkZmE2YWQ5ZWY3MzhkMGY5MWFkY2FhNjY0Njg2ZjguLjk0YzI0NzY1NjMxMzcw
N2IyYmMzZDJhYTE1MTM2ZDE5YTFmNTJlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJ
VHJlZShDRlN0cmluZ1JlZiB1dGkpOworUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVElGcm9tTUlN
RVR5cGUoQ0ZTdHJpbmdSZWYgbWltZSk7CiB9CiAKICNlbmRpZiAvLyBVVElVdGlsaXRpZXNfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0
aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVz
Lm1tCmluZGV4IDljZGMwZDYyOWVhM2Q3ZDBhNDc4MDYwNDg0ODIxMGRhNGYwOGFlMmQuLmE4MDEw
ZWQyZjlhNzlmMGU2N2ExMmY1ZDA1OGNlOGQ3NWE5N2JlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KQEAgLTc5LDQgKzc5
LDEwIEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmlu
Z1JlZiB1dGkpCiAgICAgcmV0dXJuIG5pbDsKIH0KIAorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBV
VElGcm9tTUlNRVR5cGUoQ0ZTdHJpbmdSZWYgbWltZSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRh
ZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lLCAwKSk7CisgICAgcmV0dXJuIHV0aTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDU0Yzg2MzdiYjEyYmU1ZmFkMGJlY2Y1YjY0NGU3ZGE1Y2U1Y2FmZWMuLmEzNmU0
NmM0YzhiNzBlNjVmYmRlYmRkOTZlMTE2ZjUxZWQ1ZTA4MDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxMi0xMS0xMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAg
ICBTdXBwb3J0IGxvYWRpbmcgb2YgYmxvYiBVUkxzIGluIEFWRm91bmRhdGlvbi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjE4MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHdo
aWNoIHZlcmlmaWVkIGJsb2IgdXJsIHN1cHBvcnQgaW4gdmlkZW8gZWxlbWVudHMuCisKKyAgICAg
ICAgKiBtZWRpYS92aWRlby1zcmMtYmxvYi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IG1lZGlhL3ZpZGVvLXNyYy1ibG9iLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zOiBBZGQgZXhwZWN0ZWQgZmFpbHVyZSByZXN1bHRzIGZvciBPU1gg
cmVsZWFzZXMgd2hlcmUgCisgICAgICAgICAgICBjdXN0b20gbWVkaWEgbG9hZGluZyBpcyBub3Qg
c3VwcG9ydGVkLgorCiAyMDEyLTExLTA5ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWJsb2ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tc3JjLWJsb2ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZTBjOGMx
Y2RkZmM5YmJmNGNkNzg0MmU4OTc4MmM0ZWM4MTQ4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1zcmMtYmxvYi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CitUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IG9mIHRoZSA8dmlkZW8+IGVsZW1lbnQgdG8gbG9hZCBi
bG9iIFVSTHMuIEluIHRoZSBicm93c2VyLCBzZWxlY3QgYSB2aWRlbyBmaWxlOiAKK0VWRU5UKGNo
YW5nZSkKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3JjLWJsb2IuaHRtbCBiL0xheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXNyYy1ibG9iLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYyY2UxY2NlMDM5MGQ1NDUzMDIyZGUz
ZmI3YmI4MTg3YzZiYjYxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLXNyYy1ibG9iLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9bWVkaWEtZmlsZS5qcz48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGlucHV0RmlsZUNoYW5nZWQoZSkgeworICAg
ICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICB2YXIgZmls
ZSA9IGUudGFyZ2V0LmZpbGVzWzBdOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudEFuZEVu
ZCgnbG9hZGVkbWV0YWRhdGEnKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnRBbmRGYWls
KCdlcnJvcicpOworICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IHdpbmRvdy5VUkwuY3JlYXRl
T2JqZWN0VVJMKGZpbGUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBy
dW5UZXN0KCkgeworICAgICAgICAgICAgICAgIHZhciBpbnB1dEZpbGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZmlsZScpOworICAgICAgICAgICAgICAgIHZhciBjZW50ZXJYID0gaW5wdXRG
aWxlLm9mZnNldExlZnQgKyBpbnB1dEZpbGUub2Zmc2V0V2lkdGggLyAyOworICAgICAgICAgICAg
ICAgIHZhciBjZW50ZXJZID0gaW5wdXRGaWxlLm9mZnNldFRvcCArIGlucHV0RmlsZS5vZmZzZXRI
ZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2hhbmdlJywgaW5wdXRG
aWxlQ2hhbmdlZCwgZmFsc2UsIGZhbHNlLCBpbnB1dEZpbGUpOworCisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5iZWdpbkRyYWdXaXRoRmlsZXMoW2ZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVz
dCIpXSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRl
clgsIGNlbnRlclkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgICAgICA8ZGl2Pgor
ICAgICAgICAgICAgVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSBvZiB0aGUgJmx0O3ZpZGVvJmd0OyBl
bGVtZW50IHRvIGxvYWQgYmxvYiBVUkxzLiBJbiB0aGUgYnJvd3Nlciwgc2VsZWN0IGEgdmlkZW8g
ZmlsZToKKyAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiBpZD0iZmls
ZSI+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8dmlkZW8+PC92aWRlbz4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDQ2NWI2ZjkyMzIyYTkzMTM4NGMyZGUyYjA0ZDkzY2RlYTgyMDEzMzMuLjg4N2FjZWU3OGU0MDAy
ZDM5MTJhMDIzMWVkZmM5ZjI1MzNhN2Y5ODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xMTcxLDMgKzExNzEsNiBAQCB3ZWJraXQub3JnL2IvMTAwODQ2
IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci10ZXJtaW5hdGUtZGVkaWNhdGVkLXdvcmtlci13
aGlsZQogd2Via2l0Lm9yZy9iLzEwMDE0MiBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1o
dy5odG1sIFsgRmFpbCBdCiB3ZWJraXQub3JnL2IvMTAwMTQyIGNzczMvZmlsdGVycy9lZmZlY3Qt
cmVmZXJlbmNlLW9yZGVyaW5nLWh3Lmh0bWwgWyBGYWlsIF0KIHdlYmtpdC5vcmcvYi8xMDAxNDIg
Y3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UuaHRtbCBbIEZhaWwgXQorCisjIE1vdW50YWlu
IExpb24gYW5kIHByaW9yIGRvIG5vdCBzdXBwb3J0IGN1c3RvbSBtZWRpYSBkYXRhIGxvYWRpbmcK
K0J1ZyhqZXJub2JsZSkgWyBNb3VudGFpbkxpb24gTGlvbiBTbm93TGVvcGFyZCBdIG1lZGlhL3Zp
ZGVvLXNyYy1ibG9iLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174181</attachid>
            <date>2012-11-14 09:50:26 -0800</date>
            <delta_ts>2012-11-14 12:52:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102182-20121114094825.patch</filename>
            <type>text/plain</type>
            <size>33812</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhjMTcyOTU5NThjMTU1
MjEwYjM5Y2MyMmJmOTJhYjY4Yzg0NjMxNC4uN2JjMTZiNDM3NWE1MTI2YzZlMDljZTYzODUxMjAw
NDk0MjA2ODEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTExLTEzICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgbG9hZGluZyBv
ZiBibG9iIFVSTHMgaW4gQVZGb3VuZGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEJMT0IgKGFuZCBvdGhlciBub24t
bmF0aXZlbHkgc3VwcG9ydGVkIHNjaGVtZWQpIFVSTHMgdGhyb3VnaCB0aGUgQVZBc3NldFJlc291
cmNlTG9hZGVyIEFQSS4KKworICAgICAgICBUZXN0OiBtZWRpYS92aWRlby1zcmMtYmxvYi5odG1s
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6IE9ubHkgZ28gZG93biB0aGUgZW5jcnlw
dGVkCisgICAgICAgICAgICBtZWRpYSBwYXRoIGlmIHRoZSBrZXkgc2NoZW1lIGlzIHNrcDovLy4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRp
ZENhbmNlbExvYWRpbmdSZXF1ZXN0KTogQWRkZWQuICBDYW5jZWwgcmVzb3VyY2UgbG9hZGluZyBp
ZgorICAgICAgICAgICAgdGhlIG1lZGlhIGVuZ2luZSByZXF1ZXN0cyBpdC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmFkZEtleSk6IFVzZSB0
aGUgbmV3LCBub24tZGVwcmVjYXRlZCBBUEkuCisgICAgICAgIAorICAgICAgICBVc2UgdGhlIGRp
c3BhdGNoX21haW5fcXVldWUoKSBhcyB0aGUgQVZBc3NldFJlc291cmNlTG9hZERlbGVnYXRlIHF1
ZXVlIG5vdyB0aGF0IDxyZGFyOi8vcHJvYmxlbS8xMjM2MjQ2MT4gaXMgZml4ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoLVtXZWJD
b3JlQVZGTG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZvckxvYWRpbmdP
ZlJlcXVlc3RlZFJlc291cmNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTG9hZGVyRGVsZWdh
dGUgcmVzb3VyY2VMb2FkZXI6ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3Q6XSk6CisKKyAgICAgICAg
QWRkIGEgbmV3IGhlbHBlciBjbGFzcyB0byBtYW5hZ2UgbG9hZGluZyB0aGUgQ2FjaGVkUmF3UmVz
b3VyY2UgYW5kIGZlZWQgdGhlIGluY29taW5nCisgICAgICAgIGRhdGEgdG8gdGhlIEFWQXNzZXRS
ZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKTogU2ltcGxlIGZhY3RvcnkuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6fldlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcik6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcpOiBUZWxsIHRoZSBjYWNoZWRSZXNv
dXJjZUxvYWRlciB0byBzY2hlZHVsZSBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZyk6IFJlbW92ZSB0aGlzIGFzIGEgY2xpZW50
IG9mIHRoZSByZXNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6IEZpbGwgaW4gdGhlIGNvbnRlbnRJbmZvcm1hdGlvbiBm
aWVsZCBvZiB0aGUgCisgICAgICAgICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdC4K
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KTogQ2FsbCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOiBUZWxsIHRoZSBBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCB0aGF0IGxvYWRpbmcKKyAgICAgICAgICAgIGhhcyBjb21w
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmZ1bGZp
bGxSZXF1ZXN0V2l0aFJlc291cmNlKTogRmlsbCBpbiAoaWYgcG9zc2libGUpIHRoZSBkYXRhUmVx
dWVzdAorICAgICAgICAgICAgZmllbGQgb2YgdGhlIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0LgorCisgICAgICAgIEFkZCBhIE1lZGlhUGxheWVyQ2xpZW50IG1ldGhvZCBhbGxvd2luZyBN
ZWRpYVBsYXllclByaXZhdGUgc3ViY2xhc3NlcyB0byBhY2Nlc3MgdGhlIEhUTUxNZWRpYUVsZW1l
bnQncworICAgICAgICBkb2N1bWVudCdzIGNhY2hlZFJlc291cmNlTG9hZGVyLgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2FjaGVkUmVzb3VyY2VM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJj
ZUxvYWRlcik6CisKKyAgICAgICAgQWRkIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNvbnZlcnQg
ZnJvbSBNSU1FIHR5cGUgLT4gVVRJLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VU
SVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZSk6CisKKyAgICAgICAgQWRk
IG5ldyBmaWxlcyB0byBwcm9qZWN0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxMi0xMS0xNCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbUXRdIFVzZSBhIG5vZGUgaW1hZ2UgaWYgdGhlcmUgaXMg
bm8gZHJhZyBpbWFnZSBzZXQgZm9yIERyYWcmRHJvcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjNGEyMjdlN2Y3OTA2MmM2MWZm
ZmI5NGU1ZDczN2QwZGIzZjVmMjkuLjc3NjA5Y2YxMGQyZjc2NGZlODY3MjhiMjVhNGMxYTVhYzFk
OGE5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU4OTQsNiArNTg5NCw3IEBACiAJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3
RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxl
ci5jcHAgKi87IH07CiAJCUNEMzdCMzk4MTVDMUI5NzEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9n
Z2luZ0tleXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QzN0IzNzQxNUMxQTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAg
Ki87IH07CiAJCUNENEFDNTJBMTQ5NkFFOUEwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2IGluIENv
cHkgQXVkaW8gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NEFDNTI4MTQ5NkFFMkYwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2ICovOyB9OworCQlDRDdFMDUy
MjE2NTFDMjgyMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3RTA1MjExNjUxQTg0MTAw
QzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSAqLzsgfTsKIAkJQ0Q4MjAzMEEx
Mzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEw
MEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1
NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJf
RkxBR1MgPSAiLVduby11bmRlZiAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIjsgfTsgfTsK
IAkJQ0Q4MjAzMEMxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRv
d0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEODIwMzA4MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEzMjc4LDYgKzEzMjc5LDggQEAKIAkJQ0QzN0IzNzUxNUMxQTdFMTAwNkRDODk4
IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0Q0QUM1MjgxNDk2QUUyRjAwODdDNEVGIC8qIENvbXBvc2l0ZS53YXYgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBD
b21wb3NpdGUud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzL0NvbXBvc2l0ZS53
YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQz
ODExIC8qIGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2Ny
ZWVuLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q3RTA1MjAxNjUxQTg0MTAw
QzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaDsgcGF0aCA9IG9iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEN0UwNTIxMTY1MUE4NDEwMEMx
MjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW07IHBhdGggPSBvYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMDYxMzk1
QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzA4MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDU0LDYgKzIxMDU3LDggQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCURGOUFGRDcwMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmggKi8sCiAJCQkJREY5QUZENzExM0ZDMzFEODAwMTVGRUI3IC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gKi8sCisJCQkJQ0Q3RTA1MjAxNjUx
QTg0MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oICovLAorCQkJCUNEN0Uw
NTIxMTY1MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gKi8sCiAJ
CQkpOwogCQkJbmFtZSA9IG9iamM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjg4
MDksNiArMjg4MTQsNyBAQAogCQkJCUUxNDI0QzkzMTY0QjUyQzgwMEYzMkQ0MCAvKiBDb29raWVK
YXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTcwQjc4QkYxNjUwQ0U4MTAwMURCRTFCIC8qIFNl
bGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFFNTAwODQ4MTY1MTZB
RDgwMEI3RTA5OCAvKiBSZW5kZXJUaGVtZU1hY1NoYXJlZC5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUNEN0UwNTIyMTY1MUMyODIwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDNkMjVmYjE4N2E0MjA1YmYyYzM3MDllYzA5ZTE5NzMwMzM3NzEzMWQuLjQwOTU0NmFkZmE3
YjM3NjQxNTlhNWNlNzFiOTYwMTM0OTg1ZWYyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNDU5OSw2ICs0NTk5LDExIEBAIEludFJlY3QgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVjdCgpCiAgICAgcmV0dXJuIG1lZGlhUGxh
eWVyT3duaW5nRG9jdW1lbnQoKS0+dmlldygpLT53aW5kb3dDbGlwUmVjdCgpOwogfQogCitDYWNo
ZWRSZXNvdXJjZUxvYWRlciogSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRSZXNv
dXJjZUxvYWRlcigpCit7CisgICAgcmV0dXJuIG1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQoKS0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1v
dmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1cmUoKQogewogICAgIG1f
cmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCmluZGV4IGM0ZjI0MjVjZjdmYWJlZGQ1NjgzYjRjZTBmMTRjNTcyMjA5NzA5YTgu
LmQxY2NlZDA5NjZiYTA3NDg5NzVjNjJkZWEzYjcwMGY0ZjE4MDc5ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00NDEsNiArNDQxLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIEhvc3RXaW5kb3cqIG1lZGlhUGxheWVySG9zdFdpbmRvdygpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgSW50UmVjdCBtZWRpYVBsYXllcldpbmRvd0NsaXBSZWN0KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQbGF5ZXJDYWNoZWRSZXNv
dXJjZUxvYWRlcigpIE9WRVJSSURFOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQogICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRpYVBsYXllckdy
YXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IE9WRVJSSURFOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IDlmODBmOWIwYWJhN2YxYWZiMzZmMTVmZmVlOWRhNzNiZmEyOTczYzguLmRjMTA2ZWE2ODZh
MGEyYjM5ZGZiMjFkNTM1N2VkYjMzZmRlOGFjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTExMDEsNiArMTEwMSwxNCBAQCBH
cmFwaGljc0RldmljZUFkYXB0ZXIqIE1lZGlhUGxheWVyOjpncmFwaGljc0RldmljZUFkYXB0ZXIo
KSBjb25zdAogfQogI2VuZGlmCiAKK0NhY2hlZFJlc291cmNlTG9hZGVyKiBNZWRpYVBsYXllcjo6
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQoreworICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV9tZWRpYVBsYXllckNsaWVudC0+bWVk
aWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMmJkMGE4
ZTg1NjYyZDhlNGYxYzA4YTEwMmY3MTUxY2QxNTg3NzZiNS4uZDExMmNmMmQ0OWZkMTYzNjMxZDhi
MWMxN2E5NTdjYWQxOGY2NDk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCkBAIC05Myw2ICs5Myw3IEBAIHN0cnVjdCBQbGF0Zm9ybU1lZGlh
IHsKIAogZXh0ZXJuIGNvbnN0IFBsYXRmb3JtTWVkaWEgTm9QbGF0Zm9ybU1lZGlhOwogCitjbGFz
cyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRUeXBlOwogY2xhc3MgRnJhbWVW
aWV3OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtMjA2LDYgKzIwNyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogbWVkaWFQbGF5ZXJIb3N0V2luZG93KCkg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgSW50UmVjdCBtZWRpYVBsYXllcldpbmRvd0NsaXBS
ZWN0KCkgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUxv
YWRlciogbWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIDA7IH0KIH07
CiAKIGNsYXNzIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50IHsKQEAgLTQyMyw2ICs0MjUs
OCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdDsKIAor
ICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpOworCiBwcml2
YXRlOgogICAgIE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50Kik7CiAgICAgdm9pZCBsb2Fk
V2l0aE5leHRNZWRpYUVuZ2luZShNZWRpYVBsYXllckZhY3RvcnkqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAppbmRleCBlNzBkYjFhOThhYjU2YjExMmIwZDk0NzNhODY5YTg1NDllNmE4MjZhLi45Y2M0
YjU4ZTA2ZDk2MzJiNDJlZTM2OWI0ZTdkMjZiZTU4OWIwNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5E
QVRJT04pCiAKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAKQEAgLTM5LDcgKzQwLDcgQEAgT0JKQ19DTEFTUyBBVlBsYXllckxheWVyOwogT0JKQ19DTEFT
UyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIFdlYkNvcmVBVkZNb3ZpZU9ic2Vy
dmVyOwogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDkwCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDkwCiBPQkpDX0NMQVNTIFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZTsKIE9CSkNfQ0xB
U1MgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q7CiAjZW5kaWYKQEAgLTUzLDYgKzU0LDgg
QEAgdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7CisKIGNsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uIHsKIHB1YmxpYzoKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQygpOwpAQCAtNjIsOCArNjUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRB
c3NldChpZCk7CiAgICAgdmlydHVhbCB2b2lkIHRyYWNrc0NoYW5nZWQoKTsKIAotI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA5MAorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgIGJv
b2wgc2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0Kik7CisgICAgdm9pZCBkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdChBVkFzc2V0UmVzb3Vy
Y2VMb2FkaW5nUmVxdWVzdCopOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNjUsNiArMTY5LDEx
IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxBVkFzc2V0UmVzb3Vy
Y2VMb2FkaW5nUmVxdWVzdD4gPiBtX2tleVVSSVRvUmVxdWVzdE1hcDsKICAgICBIYXNoTWFwPFN0
cmluZywgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiA+IG1fc2Vzc2lv
bklEVG9SZXF1ZXN0TWFwOwogI2VuZGlmCisKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwOTAKKyAgICBmcmllbmQgY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OworICAgIE93blB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7
CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGMxNmU4ZDA2MmFl
ZjQ0ODliYTc0OWUyZjFhNjQ5NWFkZTk0MmZiOTkuLmQyMTk1NTZlYWI2MGQyNzQ3NDk1NGNkOWQ5
NjZkN2QwZmRkYmI3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNDEsNiArNDEsNyBA
QAogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKICNpbXBv
cnQgIlVVSUQuaCIKKyNpbXBvcnQgIldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIgogI2ltcG9y
dCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUu
aD4KICNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTI0LDE2ICsxMjUsNiBAQCBlbnVt
IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0IHsKIC0gKGlkKWluaXRX
aXRoQ2FsbGJhY2s6KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqKWNhbGxiYWNr
OwogLSAoQk9PTClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3Vy
Y2VMb2FkZXIgc2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKWxvYWRpbmdSZXF1ZXN0OwogQGVuZAotCi1zdGF0aWMg
ZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxMb2FkZXJEZWxlZ2F0ZVF1ZXVlKCkKLXsKLSAgICBzdGF0
aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxRdWV1ZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAg
IGdsb2JhbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3JlQVZGTG9hZGVyRGVs
ZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwotICAgIH0pOwotICAgIHJldHVy
biBnbG9iYWxRdWV1ZTsKLX0KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMzYs
NyArMzI3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIG1fYXZBc3NldC5hZG9wdE5T
KFtbQVZVUkxBc3NldCBhbGxvY10gaW5pdFdpdGhVUkw6Y29jb2FVUkwgb3B0aW9uczpvcHRpb25z
LmdldCgpXSk7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotICAgIFtbbV9hdkFzc2V0
LmdldCgpIHJlc291cmNlTG9hZGVyXSBzZXREZWxlZ2F0ZTptX2xvYWRlckRlbGVnYXRlLmdldCgp
IHF1ZXVlOmdsb2JhbExvYWRlckRlbGVnYXRlUXVldWUoKV07CisgICAgW1ttX2F2QXNzZXQuZ2V0
KCkgcmVzb3VyY2VMb2FkZXJdIHNldERlbGVnYXRlOm1fbG9hZGVyRGVsZWdhdGUuZ2V0KCkgcXVl
dWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07CiAjZW5kaWYKIAogICAgIG1faGF2ZUNoZWNr
ZWRQbGF5YWJpbGl0eSA9IGZhbHNlOwpAQCAtNzkyLDI0ICs3ODMsNDEgQEAgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRl
ZFN1cHBvcnRzVHkKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVl
c3QqIGF2UmVxdWVzdCkKIHsKKyAgICBTdHJpbmcgc2NoZW1lID0gW1tbYXZSZXF1ZXN0IHJlcXVl
c3RdIFVSTF0gc2NoZW1lXTsKICAgICBTdHJpbmcga2V5VVJJID0gW1tbYXZSZXF1ZXN0IHJlcXVl
c3RdIFVSTF0gYWJzb2x1dGVTdHJpbmddOwogCi0gICAgLy8gQ3JlYXRlIGFuIGluaXREYXRhIHdp
dGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6Ci0gICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwg
W2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCi0gICAgdW5zaWduZWQga2V5VVJJU2l6ZSA9IGtl
eVVSSS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBp
bml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEpOwot
ICAgIFJlZlB0cjxEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gRGF0YVZpZXc6OmNyZWF0ZShpbml0
RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW5pdERhdGFWaWV3LT5zZXRVaW50MzIoMCwga2V5VVJJU2l6
ZSwgdHJ1ZSwgZWMpOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKHNjaGVt
ZSA9PSAic2twIikgeworICAgICAgICAvLyBDcmVhdGUgYW4gaW5pdERhdGEgd2l0aCB0aGUgZm9s
bG93aW5nIGxheW91dDoKKyAgICAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVS
SSBzaXplIGJ5dGVzOiBrZXlVUkldCisgICAgICAgIHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlV
UkkubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOworICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7
CisgICAgICAgIFJlZlB0cjxEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gRGF0YVZpZXc6OmNyZWF0
ZShpbml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBpbml0RGF0YVZpZXctPnNldFVpbnQz
MigwLCBrZXlVUklTaXplLCB0cnVlLCBlYyk7CisKKyAgICAgICAgUmVmUHRyPFVpbnQxNkFycmF5
PiBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDQsIGtl
eVVSSS5sZW5ndGgoKSk7CisgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShrZXlVUkkuY2hh
cmFjdGVycygpLCBrZXlVUkkubGVuZ3RoKCkgLyBzaXplb2YodW5zaWduZWQgY2hhciksIDApOwor
CisgICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZCgiY29tLmFwcGxlLmxza2QiLCBlbXB0
eVN0cmluZygpLCBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5pdERhdGFCdWZm
ZXItPmRhdGEoKSksIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChrZXlVUkks
IGF2UmVxdWVzdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogCi0gICAg
UmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5p
dERhdGFCdWZmZXIsIDQsIGtleVVSSS5sZW5ndGgoKSk7Ci0gICAga2V5VVJJQXJyYXktPnNldFJh
bmdlKGtleVVSSS5jaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25l
ZCBjaGFyKSwgMCk7CisgICAgbV9yZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7CisgICAgbV9yZXNvdXJjZUxvYWRlci0+c3Rh
cnRMb2FkaW5nKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBpZiAoIXBsYXllcigpLT5r
ZXlOZWVkZWQoImNvbS5hcHBsZS5sc2tkIiwgZW1wdHlTdHJpbmcoKSwgc3RhdGljX2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KGluaXREYXRhQnVmZmVyLT5kYXRhKCkpLCBpbml0RGF0YUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdChBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCogYXZSZXF1ZXN0KQoreworICAgIFN0cmluZyBzY2hlbWUg
PSBbW1thdlJlcXVlc3QgcmVxdWVzdF0gVVJMXSBzY2hlbWVdOwogCi0gICAgbV9rZXlVUklUb1Jl
cXVlc3RNYXAuc2V0KGtleVVSSSwgYXZSZXF1ZXN0KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAobV9yZXNvdXJjZUxvYWRlcikKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRlci0+c3RvcExvYWRp
bmcoKTsKIH0KICNlbmRpZgogCkBAIC0xMDg5LDEwICsxMDk3LDggQEAgTWVkaWFQbGF5ZXI6Ok1l
ZGlhS2V5RXhjZXB0aW9uIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmFkZEtl
eShjb25zdAogCiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBh
dlJlcXVlc3QgPSBtX3Nlc3Npb25JRFRvUmVxdWVzdE1hcC5nZXQoc2Vzc2lvbklEKTsKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBrZXlEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdp
dGhCeXRlczprZXlQdHIgbGVuZ3RoOmtleUxlbmd0aF0pOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQt
ZGVjbGFyYXRpb25zIgotICAgIFthdlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGluZ1dpdGhSZXNw
b25zZTpuaWwgZGF0YTprZXlEYXRhLmdldCgpIHJlZGlyZWN0Om5pbF07Ci0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCisgICAgW1thdlJlcXVlc3QuZ2V0KCkgZGF0YVJlcXVlc3RdIHJlc3Bv
bmRXaXRoRGF0YTprZXlEYXRhLmdldCgpXTsKKyAgICBbYXZSZXF1ZXN0LmdldCgpIGZpbmlzaExv
YWRpbmddOwogICAgIG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwLnJlbW92ZShzZXNzaW9uSUQpOwog
CiAgICAgcGxheWVyKCktPmtleUFkZGVkKGtleVN5c3RlbSwgc2Vzc2lvbklEKTsKQEAgLTEyNTQs
MTEgKzEyNjAsMTMgQEAgTlNBcnJheSogaXRlbUtWT1Byb3BlcnRpZXMoKQogLSAoQk9PTClyZXNv
dXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxk
V2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdCAqKWxvYWRpbmdSZXF1ZXN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHJlc291cmNlTG9h
ZGVyKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewot
ICAgICAgICBpZiAoIW1fY2FsbGJhY2stPnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShs
b2FkaW5nUmVxdWVzdCkpCi0gICAgICAgICAgICBbbG9hZGluZ1JlcXVlc3QgZmluaXNoTG9hZGlu
Z1dpdGhFcnJvcjpuaWxdOwotICAgIH0pOwotICAgIHJldHVybiBUUlVFOworICAgIHJldHVybiBt
X2NhbGxiYWNrLT5zaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UobG9hZGluZ1JlcXVlc3Qp
OworfQorCistICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKily
ZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdDooQVZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3QgKilsb2FkaW5nUmVxdWVzdCBOU19BVkFJTEFCTEUoMTBfOSwgTkEpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHJlc291cmNlTG9hZGVyKTsKKyAgICByZXR1cm4gbV9jYWxsYmFjay0+
ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3QobG9hZGluZ1JlcXVlc3QpOwogfQogCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkwNjZhNzQ3YjcwNWUyMGUxMDNiYTJjZmJhMGUzZDczMmJkYzBjZGMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtMCwwICsxLDcyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXJfaAorI2RlZmluZSBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQorCisjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKKyNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhY2hlZFJlc291cmNlTG9hZGVy
OworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKKworY2xhc3MgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyIDogcHVibGljIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Kik7CisgICAgdmly
dHVhbCB+V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKCk7CisKKyAgICB2b2lkIHN0YXJ0TG9hZGlu
ZygpOworICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKKworICAgIENhY2hlZFJhd1Jlc291cmNlKiBy
ZXNvdXJjZSgpOworCitwcml2YXRlOgorICAgIC8vIENhY2hlZFJlc291cmNlQ2xpZW50CisgICAg
dmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqLCBpbnQpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIE9WRVJSSURFOworCisgICAgdm9p
ZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOworCisgICAgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMq
IHBhcmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqKTsKKyAgICBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKKyAgICBSZXRhaW5QdHI8QVZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OworICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOworfTsKKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKSAKKworI2VuZGlmIC8vIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM1YzM5MWFlZWJiNzZkYjczNGY3
N2Y4ZmFiYWI0NjRiOGYzYmI0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQpAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgiCisKKyNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbXBvcnQgIkNhY2hlZFJhd1Jlc291cmNlLmgiCisj
aW1wb3J0ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmgiCisjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgi
CisjaW1wb3J0ICJSZXNvdXJjZUJ1ZmZlci5oIgorI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKKyNpbXBvcnQgIlNvZnRMaW5raW5nLmgi
CisjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0
UmVzb3VyY2VMb2FkZXIuaD4KKyNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CisjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0
cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgQVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3QqIGF2UmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoYXZSZXF1ZXN0
KTsKKyAgICBBU1NFUlQocGFyZW50KTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcihwYXJlbnQsIGF2UmVxdWVzdCkpOworfQorCitXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KiBh
dlJlcXVlc3QpCisgICAgOiBtX3BhcmVudChwYXJlbnQpCisgICAgLCBtX2F2UmVxdWVzdChhdlJl
cXVlc3QpCit7Cit9CisKK1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6fldlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcigpCit7CisgICAgaWYgKG1fcmVzb3VyY2UpIHsKKyAgICAgICAgbV9yZXNvdXJj
ZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICBtX3Jlc291cmNlID0gMDsKKyAgICB9Cit9
CisKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQoreworICAg
IGlmIChtX3Jlc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBLVVJMIHJlcXVlc3RVUkwg
PSBbW21fYXZSZXF1ZXN0LmdldCgpIHJlcXVlc3RdIFVSTF07CisKKyAgICBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVxdWVzdFVSTCksIFJlc291cmNlTG9h
ZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwg
RG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBEb05vdEFza0NsaWVudEZvckNyb3NzT3JpZ2lu
Q3JlZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaykpOworCisgICAgcmVxdWVzdC5tdXRhYmxlUmVz
b3VyY2VSZXF1ZXN0KCkuc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cpOworICAg
IENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBtX3BhcmVudC0+cGxheWVyKCktPmNhY2hl
ZFJlc291cmNlTG9hZGVyKCk7CisgICAgbV9yZXNvdXJjZSA9IGxvYWRlciA/IGxvYWRlci0+cmVx
dWVzdFJhd1Jlc291cmNlKHJlcXVlc3QpIDogMDsKKyAgICBpZiAobV9yZXNvdXJjZSkKKyAgICAg
ICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KHRoaXMpOworICAgIGVsc2UgeworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBzdGFydCBsb2FkIGZvciBtZWRpYSBhdCB1cmwgJXMiLCByZXF1ZXN0
VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgW21fYXZSZXF1ZXN0LmdldCgp
IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6MF07CisgICAgfQorfQorCit2b2lkIFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmcoKQoreworICAgIGlmIChtX3Jlc291cmNlKSB7Cisg
ICAgICAgIG1fcmVzb3VyY2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgbV9yZXNvdXJj
ZSA9IDA7CisgICAgfQorfQorCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6cmVzcG9u
c2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQoreworICAgIEFTU0VSVChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKwor
ICAgIGludCBzdGF0dXMgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOworICAgIGlmIChzdGF0
dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBzdGF0dXMgPiAyOTkpKSB7CisgICAgICAgIFttX2F2UmVx
dWVzdC5nZXQoKSBmaW5pc2hMb2FkaW5nV2l0aEVycm9yOjBdOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdDb250ZW50SW5mb3JtYXRpb25S
ZXF1ZXN0KiBjb250ZW50SW5mbyA9IFttX2F2UmVxdWVzdC5nZXQoKSBjb250ZW50SW5mb3JtYXRp
b25SZXF1ZXN0XSkgeworICAgICAgICBTdHJpbmcgdXRpID0gVVRJRnJvbU1JTUVUeXBlKHJlc3Bv
bnNlLm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkuZ2V0KCk7CisKKyAgICAgICAg
W2NvbnRlbnRJbmZvIHNldENvbnRlbnRUeXBlOnV0aV07CisgICAgICAgIFtjb250ZW50SW5mbyBz
ZXRDb250ZW50TGVuZ3RoOnJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpXTsKKyAgICAg
ICAgW2NvbnRlbnRJbmZvIHNldEJ5dGVSYW5nZUFjY2Vzc1N1cHBvcnRlZDpZRVNdOworCisgICAg
ICAgIGlmICghW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XSkgeworICAgICAgICAgICAgW21fYXZS
ZXF1ZXN0LmdldCgpIGZpbmlzaExvYWRpbmddOworICAgICAgICAgICAgc3RvcExvYWRpbmcoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqLCBpbnQpCit7
CisgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOworfQorCit2b2lkIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlKQoreworICAgIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKHJlc291cmNlKTsKKyAg
ICBbbV9hdlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGluZ107CisgICAgc3RvcExvYWRpbmcoKTsK
K30KKwordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmZ1bGZpbGxSZXF1ZXN0V2l0aFJl
c291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBBU1NFUlQocmVzb3VyY2Ug
PT0gbV9yZXNvdXJjZSk7CisgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBk
YXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CisgICAgaWYgKCFkYXRhUmVx
dWVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gcmVzb3Vy
Y2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpOworCisgICAgdW5zaWduZWQgcmVt
YWluaW5nTGVuZ3RoID0gW2RhdGFSZXF1ZXN0IHJlcXVlc3RlZExlbmd0aF0gLSAoW2RhdGFSZXF1
ZXN0IGN1cnJlbnRPZmZzZXRdIC0gW2RhdGFSZXF1ZXN0IHJlcXVlc3RlZE9mZnNldF0pOworICAg
IGRvIHsKKyAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBkYXRhIGF2YWls
YWJsZSBpbiB0aGUgYnVmZmVyIHRvIGZ1bGZpbGwgdGhlIGRhdGEgcmVxdWVzdC4KKyAgICAgICAg
aWYgKGRhdGEtPnNpemUoKSA8PSBbZGF0YVJlcXVlc3QgY3VycmVudE9mZnNldF0pCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgY2hhciogc29tZURhdGE7CisgICAgICAgIHVu
c2lnbmVkIHJlY2VpdmVkTGVuZ3RoID0gZGF0YS0+Z2V0U29tZURhdGEoc29tZURhdGEsIFtkYXRh
UmVxdWVzdCBjdXJyZW50T2Zmc2V0XSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGFuIE5TRGF0YSB3
aXRoIG9ubHkgYXMgbXVjaCBvZiB0aGUgcmVjZWl2ZWQgZGF0YSBhcyBuZWNlc3NhcnkgdG8gZnVs
ZmlsbCB0aGUgcmVxdWVzdC4KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gTUlOKHJlY2VpdmVk
TGVuZ3RoLCByZW1haW5pbmdMZW5ndGgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0Rh
dGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnNvbWVEYXRhIGxlbmd0
aDpsZW5ndGhdKTsKKworICAgICAgICBbZGF0YVJlcXVlc3QgcmVzcG9uZFdpdGhEYXRhOm5zRGF0
YS5nZXQoKV07CisgICAgICAgIHJlbWFpbmluZ0xlbmd0aCAtPSBsZW5ndGg7CisgICAgfSB3aGls
ZSAocmVtYWluaW5nTGVuZ3RoKTsKKworICAgIGlmIChbZGF0YVJlcXVlc3QgY3VycmVudE9mZnNl
dF0gKyBbZGF0YVJlcXVlc3QgcmVxdWVzdGVkTGVuZ3RoXSA+PSBbZGF0YVJlcXVlc3QgcmVxdWVz
dGVkT2Zmc2V0XSkgeworICAgICAgICBbbV9hdlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGluZ107
CisgICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgfQorfQorCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCmluZGV4IGIzNzg3ZWRkN2RkZmE2YWQ5
ZWY3MzhkMGY5MWFkY2FhNjY0Njg2ZjguLjk0YzI0NzY1NjMxMzcwN2IyYmMzZDJhYTE1MTM2ZDE5
YTFmNTJlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1VUSVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1VUSVV0aWxpdGllcy5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1
dGkpOworUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVElGcm9tTUlNRVR5cGUoQ0ZTdHJpbmdSZWYg
bWltZSk7CiB9CiAKICNlbmRpZiAvLyBVVElVdGlsaXRpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCmluZGV4IDljZGMwZDYy
OWVhM2Q3ZDBhNDc4MDYwNDg0ODIxMGRhNGYwOGFlMmQuLmE4MDEwZWQyZjlhNzlmMGU2N2ExMmY1
ZDA1OGNlOGQ3NWE5N2JlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KQEAgLTc5LDQgKzc5LDEwIEBAIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1dGkpCiAgICAgcmV0
dXJuIG5pbDsKIH0KIAorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBVVElGcm9tTUlNRVR5cGUoQ0ZT
dHJpbmdSZWYgbWltZSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aSA9IGFkb3B0
Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVU
eXBlLCBtaW1lLCAwKSk7CisgICAgcmV0dXJuIHV0aTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc0ZDhmNmIx
ZjNhMjAzYTM5OWMzNmQ0MDFjNjA0Nzg5NDE2MGM4NTIuLmU5ODFjMDcyODJlODQ0Y2Y1MjFiOTY5
ZWZkNjhkNDk5MTMwMjM1ZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMS0xMyAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGxvYWRpbmcg
b2YgYmxvYiBVUkxzIGluIEFWRm91bmRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHdoaWNoIHZlcmlmaWVkIGJsb2Ig
dXJsIHN1cHBvcnQgaW4gdmlkZW8gZWxlbWVudHMuCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1z
cmMtYmxvYi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNyYy1i
bG9iLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
OiBBZGQgZXhwZWN0ZWQgZmFpbHVyZSByZXN1bHRzIGZvciBPU1ggcmVsZWFzZXMgd2hlcmUgCisg
ICAgICAgICAgICBjdXN0b20gbWVkaWEgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkLgorCiAyMDEy
LTExLTE0ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBk
YXRlIERPTUV4Y2VwdGlvbiBuYW1lOiBOb3RGb3VuZEVycm9yCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1zcmMtYmxvYi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1zcmMtYmxvYi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJlMGM4YzFjZGRmYzli
YmY0Y2Q3ODQyZTg5NzgyYzRlYzgxNDg3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXNyYy1ibG9iLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMg
dGVzdHMgdGhlIGFiaWxpdHkgb2YgdGhlIDx2aWRlbz4gZWxlbWVudCB0byBsb2FkIGJsb2IgVVJM
cy4gSW4gdGhlIGJyb3dzZXIsIHNlbGVjdCBhIHZpZGVvIGZpbGU6IAorRVZFTlQoY2hhbmdlKQor
RVZFTlQobG9hZGVkbWV0YWRhdGEpCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1zcmMtYmxvYi5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
c3JjLWJsb2IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjJjZTFjY2UwMzkwZDU0NTMwMjJkZTNmYjdiYjgx
ODdjNmJiNjFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc3Jj
LWJsb2IuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICAgICAgZnVuY3Rpb24gaW5wdXRGaWxlQ2hhbmdlZChlKSB7CisgICAgICAgICAg
ICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgICAgIHZhciBmaWxlID0gZS50
YXJnZXQuZmlsZXNbMF07CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50QW5kRW5kKCdsb2Fk
ZWRtZXRhZGF0YScpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudEFuZEZhaWwoJ2Vycm9y
Jyk7CisgICAgICAgICAgICAgICAgdmlkZW8uc3JjID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RV
UkwoZmlsZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgICAgICAgICAgICAgdmFyIGlucHV0RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdmaWxlJyk7CisgICAgICAgICAgICAgICAgdmFyIGNlbnRlclggPSBpbnB1dEZpbGUub2Zm
c2V0TGVmdCArIGlucHV0RmlsZS5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFy
IGNlbnRlclkgPSBpbnB1dEZpbGUub2Zmc2V0VG9wICsgaW5wdXRGaWxlLm9mZnNldEhlaWdodCAv
IDI7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjaGFuZ2UnLCBpbnB1dEZpbGVDaGFu
Z2VkLCBmYWxzZSwgZmFsc2UsIGlucHV0RmlsZSk7CisKKyAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmJlZ2lu
RHJhZ1dpdGhGaWxlcyhbZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IildKTsK
KyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2Vu
dGVyWSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAgIDxkaXY+CisgICAgICAg
ICAgICBUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IG9mIHRoZSAmbHQ7dmlkZW8mZ3Q7IGVsZW1lbnQg
dG8gbG9hZCBibG9iIFVSTHMuIEluIHRoZSBicm93c2VyLCBzZWxlY3QgYSB2aWRlbyBmaWxlOgor
ICAgICAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiIGlkPSJmaWxlIj4KKyAg
ICAgICAgPC9kaXY+CisgICAgICAgIDx2aWRlbz48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMDYzZGY5
OTNkOGViOWQxODg0N2UwYjNmYmZhNGVlMGJkZWM0MDI0Mi4uMWQzMTcyNzk3OThjMDY1ODczZDhk
MTk3NjVhYjYwZmFmNWE4MjFjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTExODEsMyArMTE4MSw2IEBAIHdlYmtpdC5vcmcvYi8xMDA4NDYgaW5zcGVj
dG9yLXByb3RvY29sL2RlYnVnZ2VyLXRlcm1pbmF0ZS1kZWRpY2F0ZWQtd29ya2VyLXdoaWxlCiB3
ZWJraXQub3JnL2IvMTAwMTQyIGNzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLWh3Lmh0bWwg
WyBGYWlsIF0KIHdlYmtpdC5vcmcvYi8xMDAxNDIgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVu
Y2Utb3JkZXJpbmctaHcuaHRtbCBbIEZhaWwgXQogd2Via2l0Lm9yZy9iLzEwMDE0MiBjc3MzL2Zp
bHRlcnMvZWZmZWN0LXJlZmVyZW5jZS5odG1sIFsgRmFpbCBdCisKKyMgTW91bnRhaW4gTGlvbiBh
bmQgcHJpb3IgZG8gbm90IHN1cHBvcnQgY3VzdG9tIG1lZGlhIGRhdGEgbG9hZGluZworQnVnKGpl
cm5vYmxlKSBbIE1vdW50YWluTGlvbiBMaW9uIFNub3dMZW9wYXJkIF0gbWVkaWEvdmlkZW8tc3Jj
LWJsb2IuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174232</attachid>
            <date>2012-11-14 12:52:10 -0800</date>
            <delta_ts>2012-11-15 09:08:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102182-20121114125008.patch</filename>
            <type>text/plain</type>
            <size>34777</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNmZDI3Yzg2YWFiMTcy
NTljMGQ5ODBlZDY5ZDk0NmI4YTdkYTE0MS4uMTdiOWFjMTUzYzA0YTExY2RmZmNlZGZjZDM3ODk2
OWRhZDllMTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTExLTEzICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgbG9hZGluZyBv
ZiBibG9iIFVSTHMgaW4gQVZGb3VuZGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEJMT0IgKGFuZCBvdGhlciBub24t
bmF0aXZlbHkgc3VwcG9ydGVkIHNjaGVtZWQpIFVSTHMgdGhyb3VnaCB0aGUgQVZBc3NldFJlc291
cmNlTG9hZGVyIEFQSS4KKworICAgICAgICBUZXN0OiBtZWRpYS92aWRlby1zcmMtYmxvYi5odG1s
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6IE9ubHkgZ28gZG93biB0aGUgZW5jcnlw
dGVkCisgICAgICAgICAgICBtZWRpYSBwYXRoIGlmIHRoZSBrZXkgc2NoZW1lIGlzIHNrcDovLy4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRp
ZENhbmNlbExvYWRpbmdSZXF1ZXN0KTogQWRkZWQuICBDYW5jZWwgcmVzb3VyY2UgbG9hZGluZyBp
ZgorICAgICAgICAgICAgdGhlIG1lZGlhIGVuZ2luZSByZXF1ZXN0cyBpdC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmFkZEtleSk6IFVzZSB0
aGUgbmV3LCBub24tZGVwcmVjYXRlZCBBUEkuCisgICAgICAgIAorICAgICAgICBVc2UgdGhlIGRp
c3BhdGNoX21haW5fcXVldWUoKSBhcyB0aGUgQVZBc3NldFJlc291cmNlTG9hZERlbGVnYXRlIHF1
ZXVlIG5vdyB0aGF0IDxyZGFyOi8vcHJvYmxlbS8xMjM2MjQ2MT4gaXMgZml4ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoLVtXZWJD
b3JlQVZGTG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZvckxvYWRpbmdP
ZlJlcXVlc3RlZFJlc291cmNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTG9hZGVyRGVsZWdh
dGUgcmVzb3VyY2VMb2FkZXI6ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3Q6XSk6CisKKyAgICAgICAg
QWRkIGEgbmV3IGhlbHBlciBjbGFzcyB0byBtYW5hZ2UgbG9hZGluZyB0aGUgQ2FjaGVkUmF3UmVz
b3VyY2UgYW5kIGZlZWQgdGhlIGluY29taW5nCisgICAgICAgIGRhdGEgdG8gdGhlIEFWQXNzZXRS
ZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKTogU2ltcGxlIGZhY3RvcnkuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6fldlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcik6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcpOiBUZWxsIHRoZSBjYWNoZWRSZXNv
dXJjZUxvYWRlciB0byBzY2hlZHVsZSBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZyk6IFJlbW92ZSB0aGlzIGFzIGEgY2xpZW50
IG9mIHRoZSByZXNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6IEZpbGwgaW4gdGhlIGNvbnRlbnRJbmZvcm1hdGlvbiBm
aWVsZCBvZiB0aGUgCisgICAgICAgICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdC4K
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KTogQ2FsbCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOiBUZWxsIHRoZSBBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCB0aGF0IGxvYWRpbmcKKyAgICAgICAgICAgIGhhcyBjb21w
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmZ1bGZp
bGxSZXF1ZXN0V2l0aFJlc291cmNlKTogRmlsbCBpbiAoaWYgcG9zc2libGUpIHRoZSBkYXRhUmVx
dWVzdAorICAgICAgICAgICAgZmllbGQgb2YgdGhlIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0LgorCisgICAgICAgIEFkZCBhIE1lZGlhUGxheWVyQ2xpZW50IG1ldGhvZCBhbGxvd2luZyBN
ZWRpYVBsYXllclByaXZhdGUgc3ViY2xhc3NlcyB0byBhY2Nlc3MgdGhlIEhUTUxNZWRpYUVsZW1l
bnQncworICAgICAgICBkb2N1bWVudCdzIGNhY2hlZFJlc291cmNlTG9hZGVyLgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2FjaGVkUmVzb3VyY2VM
b2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJj
ZUxvYWRlcik6CisKKyAgICAgICAgQWRkIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNvbnZlcnQg
ZnJvbSBNSU1FIHR5cGUgLT4gVVRJLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VU
SVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZSk6CisKKyAgICAgICAgQWRk
IG5ldyBmaWxlcyB0byBwcm9qZWN0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxMi0xMS0xNCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIE1vdmUgZW1wdHkgbG9hZGluZyB0byBEb2N1bWVudExvYWRlciwgc2lt
cGxpZnkgRnJhbWVMb2FkZXI6OmluaXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjNGEyMjdlN2Y3OTA2MmM2MWZmZmI5NGU1
ZDczN2QwZGIzZjVmMjkuLjc3NjA5Y2YxMGQyZjc2NGZlODY3MjhiMjVhNGMxYTVhYzFkOGE5ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTU4OTQsNiArNTg5NCw3IEBACiAJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3RCAvKiBN
ZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAg
Ki87IH07CiAJCUNEMzdCMzk4MTVDMUI5NzEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tl
eXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qz
N0IzNzQxNUMxQTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgKi87IH07
CiAJCUNENEFDNTJBMTQ5NkFFOUEwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2IGluIENvcHkgQXVk
aW8gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENEFDNTI4
MTQ5NkFFMkYwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2ICovOyB9OworCQlDRDdFMDUyMjE2NTFD
MjgyMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3RTA1MjExNjUxQTg0MTAwQzEyMDFG
IC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2
QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZD
NiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1Mg
PSAiLVduby11bmRlZiAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIjsgfTsgfTsKIAkJQ0Q4
MjAzMEMxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
ODIwMzA4MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEzMjc4LDYgKzEzMjc5LDggQEAKIAkJQ0QzN0IzNzUxNUMxQTdFMTAwNkRDODk4IC8qIERp
YWdub3N0aWNMb2dnaW5nS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aWFnbm9zdGljTG9nZ2luZ0tleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q0
QUM1MjgxNDk2QUUyRjAwODdDNEVGIC8qIENvbXBvc2l0ZS53YXYgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBDb21wb3Np
dGUud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzL0NvbXBvc2l0ZS53YXY7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8q
IGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNz
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q3RTA1MjAxNjUxQTg0MTAwQzEyMDFG
IC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIuaDsgcGF0aCA9IG9iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEN0UwNTIxMTY1MUE4NDEwMEMxMjAxRiAv
KiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW07IHBhdGggPSBvYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMDYxMzk1QUI2QTAw
Rjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEODIwMzA4MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDU0LDYgKzIxMDU3LDggQEAKIAkJCWNoaWxkcmVuID0gKAog
CQkJCURGOUFGRDcwMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmggKi8sCiAJCQkJREY5QUZENzExM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gKi8sCisJCQkJQ0Q3RTA1MjAxNjUxQTg0MTAw
QzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oICovLAorCQkJCUNEN0UwNTIxMTY1
MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gKi8sCiAJCQkpOwog
CQkJbmFtZSA9IG9iamM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjg4MDksNiAr
Mjg4MTQsNyBAQAogCQkJCUUxNDI0QzkzMTY0QjUyQzgwMEYzMkQ0MCAvKiBDb29raWVKYXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTcwQjc4QkYxNjUwQ0U4MTAwMURCRTFCIC8qIFNlbGVjdFJ1
bGVGZWF0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFFNTAwODQ4MTY1MTZBRDgwMEI3
RTA5OCAvKiBSZW5kZXJUaGVtZU1hY1NoYXJlZC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEN0Uw
NTIyMTY1MUMyODIwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDNk
MjVmYjE4N2E0MjA1YmYyYzM3MDllYzA5ZTE5NzMwMzM3NzEzMWQuLjQwOTU0NmFkZmE3YjM3NjQx
NTlhNWNlNzFiOTYwMTM0OTg1ZWYyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtNDU5OSw2ICs0NTk5LDExIEBAIEludFJlY3QgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVjdCgpCiAgICAgcmV0dXJuIG1lZGlhUGxheWVyT3du
aW5nRG9jdW1lbnQoKS0+dmlldygpLT53aW5kb3dDbGlwUmVjdCgpOwogfQogCitDYWNoZWRSZXNv
dXJjZUxvYWRlciogSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxv
YWRlcigpCit7CisgICAgcmV0dXJuIG1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQoKS0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVCZWhh
dmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1cmUoKQogewogICAgIG1fcmVzdHJp
Y3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IGM0ZjI0MjVjZjdmYWJlZGQ1NjgzYjRjZTBmMTRjNTcyMjA5NzA5YTguLmQxY2Nl
ZDA5NjZiYTA3NDg5NzVjNjJkZWEzYjcwMGY0ZjE4MDc5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC00NDEsNiArNDQxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIEhvc3RXaW5kb3cqIG1lZGlhUGxheWVySG9zdFdpbmRvdygpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgSW50UmVjdCBtZWRpYVBsYXllcldpbmRvd0NsaXBSZWN0KCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxv
YWRlcigpIE9WRVJSSURFOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQogICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRpYVBsYXllckdyYXBoaWNz
RGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDlm
ODBmOWIwYWJhN2YxYWZiMzZmMTVmZmVlOWRhNzNiZmEyOTczYzguLmRjMTA2ZWE2ODZhMGEyYjM5
ZGZiMjFkNTM1N2VkYjMzZmRlOGFjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTExMDEsNiArMTEwMSwxNCBAQCBHcmFwaGlj
c0RldmljZUFkYXB0ZXIqIE1lZGlhUGxheWVyOjpncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25z
dAogfQogI2VuZGlmCiAKK0NhY2hlZFJlc291cmNlTG9hZGVyKiBNZWRpYVBsYXllcjo6Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKQoreworICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5
ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMmJkMGE4ZTg1NjYy
ZDhlNGYxYzA4YTEwMmY3MTUxY2QxNTg3NzZiNS4uZDExMmNmMmQ0OWZkMTYzNjMxZDhiMWMxN2E5
NTdjYWQxOGY2NDk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC05Myw2ICs5Myw3IEBAIHN0cnVjdCBQbGF0Zm9ybU1lZGlhIHsKIAog
ZXh0ZXJuIGNvbnN0IFBsYXRmb3JtTWVkaWEgTm9QbGF0Zm9ybU1lZGlhOwogCitjbGFzcyBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRUeXBlOwogY2xhc3MgRnJhbWVWaWV3Owog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtMjA2LDYgKzIwNyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogbWVkaWFQbGF5ZXJIb3N0V2luZG93KCkgeyByZXR1
cm4gMDsgfQogICAgIHZpcnR1YWwgSW50UmVjdCBtZWRpYVBsYXllcldpbmRvd0NsaXBSZWN0KCkg
eyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUxvYWRlciog
bWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIDA7IH0KIH07CiAKIGNs
YXNzIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50IHsKQEAgLTQyMyw2ICs0MjUsOCBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdDsKIAorICAgIENh
Y2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpOworCiBwcml2YXRlOgog
ICAgIE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50Kik7CiAgICAgdm9pZCBsb2FkV2l0aE5l
eHRNZWRpYUVuZ2luZShNZWRpYVBsYXllckZhY3RvcnkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApp
bmRleCBlNzBkYjFhOThhYjU2YjExMmIwZDk0NzNhODY5YTg1NDllNmE4MjZhLi45Y2M0YjU4ZTA2
ZDk2MzJiNDJlZTM2OWI0ZTdkMjZiZTU4OWIwNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04p
CiAKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAg
LTM5LDcgKzQwLDcgQEAgT0JKQ19DTEFTUyBBVlBsYXllckxheWVyOwogT0JKQ19DTEFTUyBBVkFz
c2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyOwog
Ci0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDkwCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDkwCiBPQkpDX0NMQVNTIFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZTsKIE9CSkNfQ0xBU1MgQVZB
c3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q7CiAjZW5kaWYKQEAgLTUzLDYgKzU0LDggQEAgdHlw
ZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7CisKIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uIHsKIHB1YmxpYzoKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQygpOwpAQCAtNjIsOCArNjUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBc3NldChp
ZCk7CiAgICAgdmlydHVhbCB2b2lkIHRyYWNrc0NoYW5nZWQoKTsKIAotI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAor
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgIGJvb2wgc2hv
dWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
Kik7CisgICAgdm9pZCBkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdChBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdCopOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNjUsNiArMTY5LDExIEBAIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdD4gPiBtX2tleVVSSVRvUmVxdWVzdE1hcDsKICAgICBIYXNoTWFwPFN0cmluZywg
UmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiA+IG1fc2Vzc2lvbklEVG9S
ZXF1ZXN0TWFwOwogI2VuZGlmCisKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTAKKyAgICBmcmllbmQgY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOworICAg
IE93blB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CisjZW5k
aWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGMxNmU4ZDA2MmFlZjQ0ODli
YTc0OWUyZjFhNjQ5NWFkZTk0MmZiOTkuLjk2NDQzZjQ1YzNmY2I0NTIwMDI3OWU5MGQwYjgwMWQy
ZjEzN2QyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNDEsNiArNDEsNyBAQAogI2lt
cG9ydCAiU29mdExpbmtpbmcuaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKICNpbXBvcnQgIlVV
SUQuaCIKKyNpbXBvcnQgIldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KICNp
bXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTE3LDIzICsxMTgsMTMgQEAgZW51bSBNZWRp
YVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dCB7CiAtKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rp
b25hcnkgKiljaGFuZ2UgY29udGV4dDooTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlv
bkNvbnRleHQpY29udGV4dDsKIEBlbmQKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiBAaW50ZXJmYWNlIFdl
YkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0PEFWQXNzZXRSZXNvdXJjZUxvYWRlckRl
bGVnYXRlPiB7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9jYWxs
YmFjazsKIH0KIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMqKWNhbGxiYWNrOwogLSAoQk9PTClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJl
c291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVl
c3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKWxvYWRpbmdSZXF1
ZXN0OwogQGVuZAotCi1zdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxMb2FkZXJEZWxlZ2F0
ZVF1ZXVlKCkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxRdWV1ZTsKLSAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlVG9rZW4sIF57Ci0gICAgICAgIGdsb2JhbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRl
KCJXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwp
OwotICAgIH0pOwotICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKLX0KICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zMzUsOCArMzI2LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQog
ICAgIE5TVVJMICpjb2NvYVVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogICAgIG1f
YXZBc3NldC5hZG9wdE5TKFtbQVZVUkxBc3NldCBhbGxvY10gaW5pdFdpdGhVUkw6Y29jb2FVUkwg
b3B0aW9uczpvcHRpb25zLmdldCgpXSk7CiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQot
ICAgIFtbbV9hdkFzc2V0LmdldCgpIHJlc291cmNlTG9hZGVyXSBzZXREZWxlZ2F0ZTptX2xvYWRl
ckRlbGVnYXRlLmdldCgpIHF1ZXVlOmdsb2JhbExvYWRlckRlbGVnYXRlUXVldWUoKV07CisjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisgICAgW1ttX2F2QXNzZXQu
Z2V0KCkgcmVzb3VyY2VMb2FkZXJdIHNldERlbGVnYXRlOm1fbG9hZGVyRGVsZWdhdGUuZ2V0KCkg
cXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07CiAjZW5kaWYKIAogICAgIG1faGF2ZUNo
ZWNrZWRQbGF5YWJpbGl0eSA9IGZhbHNlOwpAQCAtNzkyLDI0ICs3ODMsNDEgQEAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRl
bmRlZFN1cHBvcnRzVHkKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3QqIGF2UmVxdWVzdCkKIHsKKyAgICBTdHJpbmcgc2NoZW1lID0gW1tbYXZSZXF1ZXN0IHJl
cXVlc3RdIFVSTF0gc2NoZW1lXTsKICAgICBTdHJpbmcga2V5VVJJID0gW1tbYXZSZXF1ZXN0IHJl
cXVlc3RdIFVSTF0gYWJzb2x1dGVTdHJpbmddOwogCi0gICAgLy8gQ3JlYXRlIGFuIGluaXREYXRh
IHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6Ci0gICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXpl
XSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCi0gICAgdW5zaWduZWQga2V5VVJJU2l6ZSA9
IGtleVVSSS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEp
OwotICAgIFJlZlB0cjxEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gRGF0YVZpZXc6OmNyZWF0ZShp
bml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW5pdERhdGFWaWV3LT5zZXRVaW50MzIoMCwga2V5VVJJ
U2l6ZSwgdHJ1ZSwgZWMpOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgaWYgKHNj
aGVtZSA9PSAic2tkIikgeworICAgICAgICAvLyBDcmVhdGUgYW4gaW5pdERhdGEgd2l0aCB0aGUg
Zm9sbG93aW5nIGxheW91dDoKKyAgICAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwgW2tl
eVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCisgICAgICAgIHVuc2lnbmVkIGtleVVSSVNpemUgPSBr
ZXlVUkkubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOworICAgICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwg
MSk7CisgICAgICAgIFJlZlB0cjxEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gRGF0YVZpZXc6OmNy
ZWF0ZShpbml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Cisg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBpbml0RGF0YVZpZXctPnNldFVp
bnQzMigwLCBrZXlVUklTaXplLCB0cnVlLCBlYyk7CisKKyAgICAgICAgUmVmUHRyPFVpbnQxNkFy
cmF5PiBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDQs
IGtleVVSSS5sZW5ndGgoKSk7CisgICAgICAgIGtleVVSSUFycmF5LT5zZXRSYW5nZShrZXlVUkku
Y2hhcmFjdGVycygpLCBrZXlVUkkubGVuZ3RoKCkgLyBzaXplb2YodW5zaWduZWQgY2hhciksIDAp
OworCisgICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZCgiY29tLmFwcGxlLmxza2QiLCBl
bXB0eVN0cmluZygpLCBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5pdERhdGFC
dWZmZXItPmRhdGEoKSksIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChrZXlV
UkksIGF2UmVxdWVzdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogCi0g
ICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUo
aW5pdERhdGFCdWZmZXIsIDQsIGtleVVSSS5sZW5ndGgoKSk7Ci0gICAga2V5VVJJQXJyYXktPnNl
dFJhbmdlKGtleVVSSS5jaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNp
Z25lZCBjaGFyKSwgMCk7CisgICAgbV9yZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7CisgICAgbV9yZXNvdXJjZUxvYWRlci0+
c3RhcnRMb2FkaW5nKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBpZiAoIXBsYXllcigp
LT5rZXlOZWVkZWQoImNvbS5hcHBsZS5sc2tkIiwgZW1wdHlTdHJpbmcoKSwgc3RhdGljX2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KGluaXREYXRhQnVmZmVyLT5kYXRhKCkpLCBpbml0RGF0YUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdChBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCogYXZSZXF1ZXN0KQoreworICAgIFN0cmluZyBzY2hl
bWUgPSBbW1thdlJlcXVlc3QgcmVxdWVzdF0gVVJMXSBzY2hlbWVdOwogCi0gICAgbV9rZXlVUklU
b1JlcXVlc3RNYXAuc2V0KGtleVVSSSwgYXZSZXF1ZXN0KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAobV9yZXNvdXJjZUxvYWRlcikKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRlci0+c3RvcExv
YWRpbmcoKTsKIH0KICNlbmRpZgogCkBAIC0xMDg5LDEwICsxMDk3LDggQEAgTWVkaWFQbGF5ZXI6
Ok1lZGlhS2V5RXhjZXB0aW9uIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmFk
ZEtleShjb25zdAogCiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
PiBhdlJlcXVlc3QgPSBtX3Nlc3Npb25JRFRvUmVxdWVzdE1hcC5nZXQoc2Vzc2lvbklEKTsKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBrZXlEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5p
dFdpdGhCeXRlczprZXlQdHIgbGVuZ3RoOmtleUxlbmd0aF0pOwotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0
ZWQtZGVjbGFyYXRpb25zIgotICAgIFthdlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGluZ1dpdGhS
ZXNwb25zZTpuaWwgZGF0YTprZXlEYXRhLmdldCgpIHJlZGlyZWN0Om5pbF07Ci0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcG9wCisgICAgW1thdlJlcXVlc3QuZ2V0KCkgZGF0YVJlcXVlc3RdIHJl
c3BvbmRXaXRoRGF0YTprZXlEYXRhLmdldCgpXTsKKyAgICBbYXZSZXF1ZXN0LmdldCgpIGZpbmlz
aExvYWRpbmddOwogICAgIG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwLnJlbW92ZShzZXNzaW9uSUQp
OwogCiAgICAgcGxheWVyKCktPmtleUFkZGVkKGtleVN5c3RlbSwgc2Vzc2lvbklEKTsKQEAgLTEy
NDIsNyArMTI0OCw3IEBAIE5TQXJyYXkqIGl0ZW1LVk9Qcm9wZXJ0aWVzKCkKIAogQGVuZAogCi0j
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwOTAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUK
IAogLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyopY2FsbGJhY2sKQEAgLTEyNTQsMTMgKzEyNjAsMTQgQEAgTlNBcnJheSogaXRlbUtWT1By
b3BlcnRpZXMoKQogLSAoQk9PTClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVy
ICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNl
OihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKWxvYWRpbmdSZXF1ZXN0CiB7CiAgICAg
VU5VU0VEX1BBUkFNKHJlc291cmNlTG9hZGVyKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICBpZiAoIW1fY2FsbGJhY2stPnNob3VsZFdh
aXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShsb2FkaW5nUmVxdWVzdCkpCi0gICAgICAgICAgICBbbG9h
ZGluZ1JlcXVlc3QgZmluaXNoTG9hZGluZ1dpdGhFcnJvcjpuaWxdOwotICAgIH0pOwotICAgIHJl
dHVybiBUUlVFOworICAgIHJldHVybiBtX2NhbGxiYWNrLT5zaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UobG9hZGluZ1JlcXVlc3QpOwogfQogCistICh2b2lkKXJlc291cmNlTG9hZGVyOihB
VkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUmVx
dWVzdDooQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKilsb2FkaW5nUmVxdWVzdAorewor
ICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZUxvYWRlcik7CisgICAgcmV0dXJuIG1fY2FsbGJhY2st
PmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KGxvYWRpbmdSZXF1ZXN0KTsKK30KIEBlbmQKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM5ZWE2YmRiY2JhZjNmMzQ5NzE5MzVjMDI2NzYyY2ZhYzMzMWE4MWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtMCwwICsxLDcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXJfaAorI2RlZmlu
ZSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAK
KworI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdDsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKK2Ns
YXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CisKK2NsYXNzIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCopOworICAgIHZpcnR1YWwg
fldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcigpOworCisgICAgdm9pZCBzdGFydExvYWRpbmcoKTsK
KyAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CisKKyAgICBDYWNoZWRSYXdSZXNvdXJjZSogcmVzb3Vy
Y2UoKTsKKworcHJpdmF0ZToKKyAgICAvLyBDYWNoZWRSZXNvdXJjZUNsaWVudAorICAgIHZpcnR1
YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UqLCBjb25zdCBjaGFyKiwgaW50KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBPVkVSUklERTsKKworICAgIHZvaWQgZnVs
ZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKKworICAgIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJl
bnQsIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Kik7CisgICAgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CisgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKK307CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikgCisKKyNlbmRpZiAvLyBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMzk4YjRjNTA0M2IzZDhjMDJmNTg5YmI5
YjQ2YWEyZTVhZmE0NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
QEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoQVZGT1VOREFUSU9OKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
OTAKKworI2ltcG9ydCAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKKyNpbXBvcnQgIkNhY2hlZFJlc291
cmNlTG9hZGVyLmgiCisjaW1wb3J0ICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbXBvcnQg
Ik1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCIKKyNpbXBvcnQgIlJlc291cmNl
QnVmZmVyLmgiCisjaW1wb3J0ICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKKyNpbXBvcnQgIlNo
YXJlZEJ1ZmZlci5oIgorI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKKyNpbXBvcnQgIlVUSVV0aWxp
dGllcy5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRSZXNvdXJjZUxvYWRlci5oPgor
I2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcj4gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVz
dCogYXZSZXF1ZXN0KQoreworICAgIEFTU0VSVChhdlJlcXVlc3QpOworICAgIEFTU0VSVChwYXJl
bnQpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKHBh
cmVudCwgYXZSZXF1ZXN0KSk7Cit9CisKK1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6V2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBh
cmVudCwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqIGF2UmVxdWVzdCkKKyAgICA6IG1f
cGFyZW50KHBhcmVudCkKKyAgICAsIG1fYXZSZXF1ZXN0KGF2UmVxdWVzdCkKK3sKK30KKworV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjp+V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKCkKK3sKKyAg
ICBzdG9wTG9hZGluZygpOworfQorCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3Rh
cnRMb2FkaW5nKCkKK3sKKyAgICBpZiAobV9yZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgS1VSTCByZXF1ZXN0VVJMID0gW1ttX2F2UmVxdWVzdC5nZXQoKSByZXF1ZXN0XSBVUkxdOwor
CisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVl
c3RVUkwpLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNv
bnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgRG9Ob3RBc2tD
bGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2spKTsKKworICAg
IHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldFByaW9yaXR5KFJlc291cmNlTG9h
ZFByaW9yaXR5TG93KTsKKyAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gbV9wYXJl
bnQtPnBsYXllcigpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOworICAgIG1fcmVzb3VyY2UgPSBs
b2FkZXIgPyBsb2FkZXItPnJlcXVlc3RSYXdSZXNvdXJjZShyZXF1ZXN0KSA6IDA7CisgICAgaWYg
KG1fcmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlzKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3IgbWVkaWEg
YXQgdXJsICVzIiwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAg
IFttX2F2UmVxdWVzdC5nZXQoKSBmaW5pc2hMb2FkaW5nV2l0aEVycm9yOjBdOworICAgIH0KK30K
Kwordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nKCkKK3sKKyAgICBp
ZiAoIW1fcmVzb3VyY2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVzb3VyY2UtPnJlbW92
ZUNsaWVudCh0aGlzKTsKKyAgICBtX3Jlc291cmNlID0gMDsKK30KKwordm9pZCBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBBU1NFUlQocmVzb3Vy
Y2UgPT0gbV9yZXNvdXJjZSk7CisKKyAgICBpbnQgc3RhdHVzID0gcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKTsKKyAgICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5
KSkgeworICAgICAgICBbbV9hdlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGluZ1dpdGhFcnJvcjow
XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nQ29udGVudEluZm9ybWF0aW9uUmVxdWVzdCogY29udGVudEluZm8gPSBbbV9hdlJlcXVlc3Qu
Z2V0KCkgY29udGVudEluZm9ybWF0aW9uUmVxdWVzdF0pIHsKKyAgICAgICAgU3RyaW5nIHV0aSA9
IFVUSUZyb21NSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpLmdldCgpOworCisgICAgICAgIFtjb250ZW50SW5mbyBzZXRDb250ZW50VHlwZTp1dGldOwor
ICAgICAgICBbY29udGVudEluZm8gc2V0Q29udGVudExlbmd0aDpyZXNwb25zZS5leHBlY3RlZENv
bnRlbnRMZW5ndGgoKV07CisgICAgICAgIFtjb250ZW50SW5mbyBzZXRCeXRlUmFuZ2VBY2Nlc3NT
dXBwb3J0ZWQ6WUVTXTsKKworICAgICAgICBpZiAoIVttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF0p
IHsKKyAgICAgICAgICAgIFttX2F2UmVxdWVzdC5nZXQoKSBmaW5pc2hMb2FkaW5nXTsKKyAgICAg
ICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
LCBjb25zdCBjaGFyKiwgaW50KQoreworICAgIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKHJl
c291cmNlKTsKK30KKwordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBmdWxmaWxsUmVxdWVzdFdpdGhS
ZXNvdXJjZShyZXNvdXJjZSk7CisgICAgW21fYXZSZXF1ZXN0LmdldCgpIGZpbmlzaExvYWRpbmdd
OworICAgIHN0b3BMb2FkaW5nKCk7Cit9CisKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OjpmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7
CisgICAgQVNTRVJUKHJlc291cmNlID09IG1fcmVzb3VyY2UpOworICAgIEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdEYXRhUmVxdWVzdCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVl
c3RdOworICAgIGlmICghZGF0YVJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIFNoYXJl
ZEJ1ZmZlciogZGF0YSA9IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIo
KTsKKworICAgIC8vIENoZWNrIGZvciBwb3NzaWJsZSB1bnNpZ25lZCBvdmVyZmxvdy4KKyAgICBB
U1NFUlQoW2RhdGFSZXF1ZXN0IGN1cnJlbnRPZmZzZXRdID49IFtkYXRhUmVxdWVzdCByZXF1ZXN0
ZWRPZmZzZXRdKTsKKyAgICBBU1NFUlQoW2RhdGFSZXF1ZXN0IHJlcXVlc3RlZExlbmd0aF0gPj0g
KFtkYXRhUmVxdWVzdCBjdXJyZW50T2Zmc2V0XSAtIFtkYXRhUmVxdWVzdCByZXF1ZXN0ZWRPZmZz
ZXRdKSk7CisKKyAgICB1bnNpZ25lZCByZW1haW5pbmdMZW5ndGggPSBbZGF0YVJlcXVlc3QgcmVx
dWVzdGVkTGVuZ3RoXSAtIChbZGF0YVJlcXVlc3QgY3VycmVudE9mZnNldF0gLSBbZGF0YVJlcXVl
c3QgcmVxdWVzdGVkT2Zmc2V0XSk7CisgICAgZG8geworICAgICAgICAvLyBDaGVjayB0byBzZWUg
aWYgdGhlcmUgaXMgYW55IGRhdGEgYXZhaWxhYmxlIGluIHRoZSBidWZmZXIgdG8gZnVsZmlsbCB0
aGUgZGF0YSByZXF1ZXN0LgorICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpIDw9IFtkYXRhUmVxdWVz
dCBjdXJyZW50T2Zmc2V0XSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zdCBj
aGFyKiBzb21lRGF0YTsKKyAgICAgICAgdW5zaWduZWQgcmVjZWl2ZWRMZW5ndGggPSBkYXRhLT5n
ZXRTb21lRGF0YShzb21lRGF0YSwgW2RhdGFSZXF1ZXN0IGN1cnJlbnRPZmZzZXRdKTsKKworICAg
ICAgICAvLyBDcmVhdGUgYW4gTlNEYXRhIHdpdGggb25seSBhcyBtdWNoIG9mIHRoZSByZWNlaXZl
ZCBkYXRhIGFzIG5lY2Vzc2FyeSB0byBmdWxmaWxsIHRoZSByZXF1ZXN0LgorICAgICAgICB1bnNp
Z25lZCBsZW5ndGggPSBNSU4ocmVjZWl2ZWRMZW5ndGgsIHJlbWFpbmluZ0xlbmd0aCk7CisgICAg
ICAgIFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGlu
aXRXaXRoQnl0ZXM6c29tZURhdGEgbGVuZ3RoOmxlbmd0aF0pOworCisgICAgICAgIFtkYXRhUmVx
dWVzdCByZXNwb25kV2l0aERhdGE6bnNEYXRhLmdldCgpXTsKKyAgICAgICAgcmVtYWluaW5nTGVu
Z3RoIC09IGxlbmd0aDsKKyAgICB9IHdoaWxlIChyZW1haW5pbmdMZW5ndGgpOworCisgICAgaWYg
KFtkYXRhUmVxdWVzdCBjdXJyZW50T2Zmc2V0XSArIFtkYXRhUmVxdWVzdCByZXF1ZXN0ZWRMZW5n
dGhdID49IFtkYXRhUmVxdWVzdCByZXF1ZXN0ZWRPZmZzZXRdKSB7CisgICAgICAgIFttX2F2UmVx
dWVzdC5nZXQoKSBmaW5pc2hMb2FkaW5nXTsKKyAgICAgICAgc3RvcExvYWRpbmcoKTsKKyAgICB9
Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVz
LmgKaW5kZXggYjM3ODdlZGQ3ZGRmYTZhZDllZjczOGQwZjkxYWRjYWE2NjQ2ODZmOC4uOTRjMjQ3
NjU2MzEzNzA3YjJiYzNkMmFhMTUxMzZkMTlhMWY1MmVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgKQEAgLTMwLDYgKzMwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlw
ZUZyb21VVElUcmVlKENGU3RyaW5nUmVmIHV0aSk7CitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFVU
SUZyb21NSU1FVHlwZShDRlN0cmluZ1JlZiBtaW1lKTsKIH0KIAogI2VuZGlmIC8vIFVUSVV0aWxp
dGllc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9V
VElVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElV
dGlsaXRpZXMubW0KaW5kZXggOWNkYzBkNjI5ZWEzZDdkMGE0NzgwNjA0ODQ4MjEwZGE0ZjA4YWUy
ZC4uYTgwMTBlZDJmOWE3OWYwZTY3YTEyZjVkMDU4Y2U4ZDc1YTk3YmU3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQpAQCAt
NzksNCArNzksMTAgQEAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZUZyb21VVElUcmVl
KENGU3RyaW5nUmVmIHV0aSkKICAgICByZXR1cm4gbmlsOwogfQogCitSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IFVUSUZyb21NSU1FVHlwZShDRlN0cmluZ1JlZiBtaW1lKQoreworICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlm
aWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWUsIDApKTsKKyAgICByZXR1cm4gdXRp
OworfQorCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZjg1ZmJkYjdhNmU1YTFlNTI5ODA1OTVlOTAxZTQ1ZjcxYTY5NmE2
OC4uYjkyZjM1NmFjYjRiOTRlMTJiMTEzMzIzYjRiNDQ0YmE5MDFiMTMyYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDEyLTExLTEzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgbG9hZGluZyBvZiBibG9iIFVSTHMgaW4gQVZGb3VuZGF0aW9uLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMTgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3
IHRlc3Qgd2hpY2ggdmVyaWZpZXMgYmxvYiB1cmwgc3VwcG9ydCBpbiB2aWRlbyBlbGVtZW50cy4K
KworICAgICAgICAqIG1lZGlhL3ZpZGVvLXNyYy1ibG9iLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvdmlkZW8tc3JjLWJsb2IuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6IEFkZCBleHBlY3RlZCBmYWlsdXJlIHJlc3VsdHMg
Zm9yIE9TWCByZWxlYXNlcyB3aGVyZSAKKyAgICAgICAgICAgIGN1c3RvbSBtZWRpYSBsb2FkaW5n
IGlzIG5vdCBzdXBwb3J0ZWQuCisKIDIwMTItMTEtMTQgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBNb3ZlIGVtcHR5IGxvYWRpbmcgdG8gRG9jdW1lbnRMb2Fk
ZXIsIHNpbXBsaWZ5IEZyYW1lTG9hZGVyOjppbml0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXNyYy1ibG9iLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLXNyYy1ibG9iLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmUwYzhjMWNkZGZjOWJiZjRj
ZDc4NDJlODk3ODJjNGVjODE0ODcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tc3JjLWJsb2ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0
cyB0aGUgYWJpbGl0eSBvZiB0aGUgPHZpZGVvPiBlbGVtZW50IHRvIGxvYWQgYmxvYiBVUkxzLiBJ
biB0aGUgYnJvd3Nlciwgc2VsZWN0IGEgdmlkZW8gZmlsZTogCitFVkVOVChjaGFuZ2UpCitFVkVO
VChsb2FkZWRtZXRhZGF0YSkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXNyYy1ibG9iLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMt
YmxvYi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmMmNlMWNjZTAzOTBkNTQ1MzAyMmRlM2ZiN2JiODE4N2M2
YmI2MWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zcmMtYmxv
Yi5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgICAgICBmdW5jdGlvbiBpbnB1dEZpbGVDaGFuZ2VkKGUpIHsKKyAgICAgICAgICAgICAg
ICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgdmFyIGZpbGUgPSBlLnRhcmdl
dC5maWxlc1swXTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnRBbmRFbmQoJ2xvYWRlZG1l
dGFkYXRhJyk7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50QW5kRmFpbCgnZXJyb3InKTsK
KyAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChm
aWxlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICAgICAgICAgICAgICB2YXIgaW5wdXRGaWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2ZpbGUnKTsKKyAgICAgICAgICAgICAgICB2YXIgY2VudGVyWCA9IGlucHV0RmlsZS5vZmZzZXRM
ZWZ0ICsgaW5wdXRGaWxlLm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgY2Vu
dGVyWSA9IGlucHV0RmlsZS5vZmZzZXRUb3AgKyBpbnB1dEZpbGUub2Zmc2V0SGVpZ2h0IC8gMjsK
KyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NoYW5nZScsIGlucHV0RmlsZUNoYW5nZWQs
IGZhbHNlLCBmYWxzZSwgaW5wdXRGaWxlKTsKKworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFn
V2l0aEZpbGVzKFtmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKV0pOworICAg
ICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZ
KTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICAgICAgPGRpdj4KKyAgICAgICAgICAg
IFRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgb2YgdGhlICZsdDt2aWRlbyZndDsgZWxlbWVudCB0byBs
b2FkIGJsb2IgVVJMcy4gSW4gdGhlIGJyb3dzZXIsIHNlbGVjdCBhIHZpZGVvIGZpbGU6CisgICAg
ICAgICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZSIgaWQ9ImZpbGUiPgorICAgICAg
ICA8L2Rpdj4KKyAgICAgICAgPHZpZGVvPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhYTYwODExNTk1
MGM4NmM2ZTY5YzczN2Q0NzUyOTdjMGMyMzA3NzZiLi43NGIxODA3MTVjZTA1YzRmM2VlMGMyM2Rm
NWUxNmI3ODNiN2FkMDc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTE4MiwzICsxMTgyLDYgQEAgd2Via2l0Lm9yZy9iLzEwMDg0NiBpbnNwZWN0b3It
cHJvdG9jb2wvZGVidWdnZXItdGVybWluYXRlLWRlZGljYXRlZC13b3JrZXItd2hpbGUKIHdlYmtp
dC5vcmcvYi8xMDAxNDIgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UtaHcuaHRtbCBbIEZh
aWwgXQogd2Via2l0Lm9yZy9iLzEwMDE0MiBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1v
cmRlcmluZy1ody5odG1sIFsgRmFpbCBdCiB3ZWJraXQub3JnL2IvMTAwMTQyIGNzczMvZmlsdGVy
cy9lZmZlY3QtcmVmZXJlbmNlLmh0bWwgWyBGYWlsIF0KKworIyBNb3VudGFpbiBMaW9uIGFuZCBw
cmlvciBkbyBub3Qgc3VwcG9ydCBjdXN0b20gbWVkaWEgZGF0YSBsb2FkaW5nCitCdWcoamVybm9i
bGUpIFsgTW91bnRhaW5MaW9uIExpb24gU25vd0xlb3BhcmQgXSBtZWRpYS92aWRlby1zcmMtYmxv
Yi5odG1sCg==
</data>
<flag name="review"
          id="189206"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="189511"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>